diff --git a/.eslintrc.json b/.eslintrc.json index 63bfb43b750..2cfe544cd27 100644 --- a/.eslintrc.json +++ b/.eslintrc.json @@ -2,9 +2,9 @@ "rules": { "curly": ["error"], "eol-last": ["error"], - "_comment": "Blockly/Google use 2-space indents", - "_comment": "Blockly/Google uses +4 space indents for line continuations.", - "_comment": "Ignore default rules for ternary expressions.", + // Blockly/Google use 2-space indents. + // Blockly/Google uses +4 space indents for line continuations. + // Ignore default rules for ternary expressions. "indent": [ "error", 2, { @@ -42,26 +42,26 @@ "error", { "args": "after-used", - "_comment": "Ignore vars starting with an underscore.", + // Ignore vars starting with an underscore. "varsIgnorePattern": "^_", - "_comment": "Ignore arguments starting with an underscore.", + // Ignore arguments starting with an underscore. "argsIgnorePattern": "^_" } ], "no-use-before-define": ["error"], - "_comment":"Blockly uses for exporting symbols. no-self-assign added in eslint 5.", + // Blockly uses for exporting symbols. no-self-assign added in eslint 5. "no-self-assign": ["off"], - "_comment": "Blockly uses single quotes except for JSON blobs, which must use double quotes.", + // Blockly uses single quotes except for JSON blobs, which must use double quotes. "quotes": ["off"], "semi": ["error", "always"], - "_comment": "Blockly doesn't have space before function paren when defining functions", + // Blockly doesn't have space before function paren when defining functions. "space-before-function-paren": ["error", "never"], - "_comment": "Blocklydoesn't have space before function paren when calling functions", + // Blockly doesn't have space before function paren when calling functions. "func-call-spacing": ["error", "never"], "space-infix-ops": ["error"], - "_comment": "Blockly uses 'use strict' in files", + // Blockly uses 'use strict' in files. "strict": ["off"], - "_comment": "Closure style allows redeclarations", + // Closure style allows redeclarations. "no-redeclare": ["off"], "valid-jsdoc": ["error", {"requireReturn": false}], "no-console": ["off"], diff --git a/.gitignore b/.gitignore index 87aa424ceb8..1e7a1e198b1 100644 --- a/.gitignore +++ b/.gitignore @@ -10,6 +10,7 @@ build-debug.log /nbproject/private/ tests/compile/main_compressed.js +tests/compile/main_compressed.js.map tests/compile/*compiler*.jar tests/screenshot/outputs/* local_build/*compiler*.jar diff --git a/.jshintignore b/.jshintignore deleted file mode 100644 index 9cc962747a8..00000000000 --- a/.jshintignore +++ /dev/null @@ -1,6 +0,0 @@ -node_modules/ -tests/ -demos/ -**/*_compressed.js -**/*_uncompressed.js -**/*_test.js \ No newline at end of file diff --git a/.travis.yml b/.travis.yml index 287cf1f5a88..8384ecd53b1 100644 --- a/.travis.yml +++ b/.travis.yml @@ -2,9 +2,9 @@ language: node_js os: linux dist: xenial node_js: - - 8 - 10 - 12 + - 14 addons: chrome: stable firefox: latest diff --git a/appengine/.gcloudignore b/appengine/.gcloudignore index 8a3772baef5..8e8c010a308 100644 --- a/appengine/.gcloudignore +++ b/appengine/.gcloudignore @@ -8,14 +8,13 @@ /static/demos/plane/soy/*.jar /static/demos/plane/xlf/ /static/externs/ -/static/i18n/ /static/msg/json/ /static/node_modules/ -/static/package/ -/static/theme_scripts/ +/static/scripts/ /static/typings/ /static/build.py +/static/eslintrc.json /static/gulpfile.js /static/jsconfig.json /static/LICENSE diff --git a/appengine/add_timestamps.py b/appengine/add_timestamps.py new file mode 100644 index 00000000000..8cf90b522aa --- /dev/null +++ b/appengine/add_timestamps.py @@ -0,0 +1,69 @@ +"""Blockly Demo: Add timestamps + +Copyright 2020 Google LLC + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +""" + +"""A script to get all Xml entries in the datastore for Blockly demos +and reinsert any that do not have a last_accessed time. + +This script should only need to be run once, but may take a long time +to complete. + +NDB does not provide a way to query for all entities that are missing a +given property, so we have to get all of them and discard any that +already have a last_accessed time. + +Auth: `gcloud auth login` + +Set the correct project: `gcloud config set project blockly-demo` + +See the current project: `gcloud config get-value project` + +Start a venv: `python3 -m venv venv && source venv/bin/activate` +Inside your vm run `pip install google-cloud-ndb` +Run the script: `python add_timestamps.py` +""" + +__author__ = "fenichel@google.com (Rachel Fenichel)" + + +from google.cloud import ndb +from storage import Xml +import datetime + +PAGE_SIZE = 1000 + +def handle_results(results): + for x in results: + if (x.last_accessed is None): + x.put() + +def run_query(): + client = ndb.Client() + with client.context(): + query = Xml.query() + print(f'Total entries: {query.count()}') + cursor = None + more = True + page_count = 0 + result_count = 0 + while more: + results, cursor, more = query.fetch_page(PAGE_SIZE, start_cursor=cursor) + handle_results(results) + page_count = page_count + 1 + result_count = result_count + len(results) + print(f'{datetime.datetime.now().strftime("%I:%M:%S %p")} : page {page_count} : {result_count}') + +run_query() diff --git a/appengine/expiration.py b/appengine/expiration.py new file mode 100644 index 00000000000..19142c30ab4 --- /dev/null +++ b/appengine/expiration.py @@ -0,0 +1,51 @@ +""" +Copyright 2020 Google LLC + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +""" + +"""Delete expired XML. +""" + +__author__ = "fenichel@google.com (Rachel Fenichel)" + + +import storage +import datetime + +from google.cloud import ndb + + +EXPIRATION_DAYS = 365 +# Limit the query to avoid timeouts. +QUERY_LIMIT = 1000 + +def delete_expired(): + """Deletes entries that have not been accessed in more than a year.""" + bestBefore = datetime.datetime.utcnow() - datetime.timedelta(days=EXPIRATION_DAYS) + client = ndb.Client() + with client.context(): + query = storage.Xml.query(storage.Xml.last_accessed < bestBefore) + results = query.fetch(limit=QUERY_LIMIT, keys_only=True) + for x in results: + x.delete() + + +def app(environ, start_response): + out = "" + headers = [ + ("Content-Type", "text/plain") + ] + start_response("200 OK", headers) + delete_expired() + return [out.encode("utf-8")] diff --git a/appengine/main.py b/appengine/main.py index 349c4f0c18c..765087c612c 100644 --- a/appengine/main.py +++ b/appengine/main.py @@ -15,6 +15,7 @@ """ import storage +import expiration # Route to requested handler. @@ -23,6 +24,8 @@ def app(environ, start_response): return redirect(environ, start_response) if environ["PATH_INFO"] == "/storage": return storage.app(environ, start_response) + if environ["PATH_INFO"] == "/expiration": + return expiration.app(environ, start_response) start_response("404 Not Found", []) return [b"Page not found."] diff --git a/appengine/storage.py b/appengine/storage.py index a3d351c32a0..e90375bf1e7 100644 --- a/appengine/storage.py +++ b/appengine/storage.py @@ -30,7 +30,7 @@ class Xml(ndb.Model): # A row in the database. xml_hash = ndb.IntegerProperty() xml_content = ndb.TextProperty() - + last_accessed = ndb.DateTimeProperty(auto_now=True) def keyGen(): # Generate a random string of length KEY_LEN. @@ -75,6 +75,10 @@ def keyToXml(key_provided): if not result: xml = "" else: + # Put it back into the datastore immediately, which updates the last + # accessed time. + with client.context(): + result.put() xml = result.xml_content return xml diff --git a/blockly_compressed.js b/blockly_compressed.js index 9a7272d60f3..44cdda8d4b9 100644 --- a/blockly_compressed.js +++ b/blockly_compressed.js @@ -12,13 +12,19 @@ }(this, function() { 'use strict';var Blockly={constants:{},LINE_MODE_MULTIPLIER:40,PAGE_MODE_MULTIPLIER:125,DRAG_RADIUS:5,FLYOUT_DRAG_RADIUS:10,SNAP_RADIUS:28};Blockly.CONNECTING_SNAP_RADIUS=Blockly.SNAP_RADIUS;Blockly.CURRENT_CONNECTION_PREFERENCE=8;Blockly.BUMP_DELAY=250;Blockly.BUMP_RANDOMNESS=10;Blockly.COLLAPSE_CHARS=30;Blockly.LONGPRESS=750;Blockly.SOUND_LIMIT=100;Blockly.DRAG_STACK=!0;Blockly.HSV_SATURATION=.45;Blockly.HSV_VALUE=.65;Blockly.SPRITE={width:96,height:124,url:"sprites.png"};Blockly.INPUT_VALUE=1; Blockly.OUTPUT_VALUE=2;Blockly.NEXT_STATEMENT=3;Blockly.PREVIOUS_STATEMENT=4;Blockly.DUMMY_INPUT=5;Blockly.ALIGN_LEFT=-1;Blockly.ALIGN_CENTRE=0;Blockly.ALIGN_RIGHT=1;Blockly.DRAG_NONE=0;Blockly.DRAG_STICKY=1;Blockly.DRAG_BEGIN=1;Blockly.DRAG_FREE=2;Blockly.OPPOSITE_TYPE=[];Blockly.OPPOSITE_TYPE[Blockly.INPUT_VALUE]=Blockly.OUTPUT_VALUE;Blockly.OPPOSITE_TYPE[Blockly.OUTPUT_VALUE]=Blockly.INPUT_VALUE;Blockly.OPPOSITE_TYPE[Blockly.NEXT_STATEMENT]=Blockly.PREVIOUS_STATEMENT; -Blockly.OPPOSITE_TYPE[Blockly.PREVIOUS_STATEMENT]=Blockly.NEXT_STATEMENT;Blockly.TOOLBOX_AT_TOP=0;Blockly.TOOLBOX_AT_BOTTOM=1;Blockly.TOOLBOX_AT_LEFT=2;Blockly.TOOLBOX_AT_RIGHT=3;Blockly.DELETE_AREA_NONE=null;Blockly.DELETE_AREA_TRASH=1;Blockly.DELETE_AREA_TOOLBOX=2;Blockly.VARIABLE_CATEGORY_NAME="VARIABLE";Blockly.VARIABLE_DYNAMIC_CATEGORY_NAME="VARIABLE_DYNAMIC";Blockly.PROCEDURE_CATEGORY_NAME="PROCEDURE";Blockly.RENAME_VARIABLE_ID="RENAME_VARIABLE_ID";Blockly.DELETE_VARIABLE_ID="DELETE_VARIABLE_ID";Blockly.utils={};Blockly.utils.global=function(){return"object"===typeof self?self:"object"===typeof window?window:"object"===typeof global?global:this}();Blockly.Msg={};Blockly.utils.global.Blockly||(Blockly.utils.global.Blockly={});Blockly.utils.global.Blockly.Msg||(Blockly.utils.global.Blockly.Msg=Blockly.Msg);Blockly.utils.colour={}; +Blockly.OPPOSITE_TYPE[Blockly.PREVIOUS_STATEMENT]=Blockly.NEXT_STATEMENT;Blockly.TOOLBOX_AT_TOP=0;Blockly.TOOLBOX_AT_BOTTOM=1;Blockly.TOOLBOX_AT_LEFT=2;Blockly.TOOLBOX_AT_RIGHT=3;Blockly.DELETE_AREA_NONE=null;Blockly.DELETE_AREA_TRASH=1;Blockly.DELETE_AREA_TOOLBOX=2;Blockly.VARIABLE_CATEGORY_NAME="VARIABLE";Blockly.VARIABLE_DYNAMIC_CATEGORY_NAME="VARIABLE_DYNAMIC";Blockly.PROCEDURE_CATEGORY_NAME="PROCEDURE";Blockly.RENAME_VARIABLE_ID="RENAME_VARIABLE_ID";Blockly.DELETE_VARIABLE_ID="DELETE_VARIABLE_ID";Blockly.registry={};Blockly.registry.typeMap_={};Blockly.registry.DEFAULT="default";Blockly.registry.Type=function(a){this.name_=a};Blockly.registry.Type.prototype.toString=function(){return this.name_};Blockly.registry.Type.CONNECTION_CHECKER=new Blockly.registry.Type("connectionChecker");Blockly.registry.Type.EVENT=new Blockly.registry.Type("event");Blockly.registry.Type.FIELD=new Blockly.registry.Type("field");Blockly.registry.Type.RENDERER=new Blockly.registry.Type("renderer"); +Blockly.registry.Type.TOOLBOX=new Blockly.registry.Type("toolbox");Blockly.registry.Type.THEME=new Blockly.registry.Type("theme");Blockly.registry.Type.TOOLBOX_ITEM=new Blockly.registry.Type("toolboxItem");Blockly.registry.Type.FLYOUTS_VERTICAL_TOOLBOX=new Blockly.registry.Type("flyoutsVerticalToolbox");Blockly.registry.Type.FLYOUTS_HORIZONTAL_TOOLBOX=new Blockly.registry.Type("flyoutsHorizontalToolbox"); +Blockly.registry.register=function(a,b,c,d){if(!(a instanceof Blockly.registry.Type)&&"string"!=typeof a||""==String(a).trim())throw Error('Invalid type "'+a+'". The type must be a non-empty string or a Blockly.registry.Type.');a=String(a).toLowerCase();if("string"!=typeof b||""==b.trim())throw Error('Invalid name "'+b+'". The name must be a non-empty string.');b=b.toLowerCase();if(!c)throw Error("Can not register a null value");var e=Blockly.registry.typeMap_[a];e||(e=Blockly.registry.typeMap_[a]= +{});Blockly.registry.validate_(a,c);if(!d&&e[b])throw Error('Name "'+b+'" with type "'+a+'" already registered.');e[b]=c};Blockly.registry.validate_=function(a,b){switch(a){case String(Blockly.registry.Type.FIELD):if("function"!=typeof b.fromJson)throw Error('Type "'+a+'" must have a fromJson function');}}; +Blockly.registry.unregister=function(a,b){a=String(a).toLowerCase();b=b.toLowerCase();var c=Blockly.registry.typeMap_[a];c?c[b]?delete Blockly.registry.typeMap_[a][b]:console.warn('No name "'+b+'" with type "'+a+'" found'):console.warn('No type "'+a+'" found')}; +Blockly.registry.getItem_=function(a,b){a=String(a).toLowerCase();b=b.toLowerCase();var c=Blockly.registry.typeMap_[a];return c?c[b]?c[b]:(console.warn('No name "'+b+'" with type "'+a+'" found'),null):(console.warn('No type "'+a+'" found'),null)};Blockly.registry.hasItem=function(a,b){a=String(a).toLowerCase();b=b.toLowerCase();return(a=Blockly.registry.typeMap_[a])?!!a[b]:!1};Blockly.registry.getClass=function(a,b){return Blockly.registry.getItem_(a,b)}; +Blockly.registry.getObject=function(a,b){return Blockly.registry.getItem_(a,b)};Blockly.registry.getClassFromOptions=function(a,b){b=b.plugins[a.toString()]||Blockly.registry.DEFAULT;return"function"==typeof b?b:Blockly.registry.getClass(a,b)};Blockly.utils={};Blockly.utils.global=function(){return"object"===typeof self?self:"object"===typeof window?window:"object"===typeof global?global:this}();Blockly.Msg={};Blockly.utils.global.Blockly||(Blockly.utils.global.Blockly={});Blockly.utils.global.Blockly.Msg||(Blockly.utils.global.Blockly.Msg=Blockly.Msg);Blockly.utils.colour={}; Blockly.utils.colour.parse=function(a){a=String(a).toLowerCase().trim();var b=Blockly.utils.colour.names[a];if(b)return b;b="0x"==a.substring(0,2)?"#"+a.substring(2):a;b="#"==b[0]?b:"#"+b;if(/^#[0-9a-f]{6}$/.test(b))return b;if(/^#[0-9a-f]{3}$/.test(b))return["#",b[1],b[1],b[2],b[2],b[3],b[3]].join("");var c=a.match(/^(?:rgb)?\s*\(\s*(\d+)\s*,\s*(\d+)\s*,\s*(\d+)\s*\)$/);return c&&(a=Number(c[1]),b=Number(c[2]),c=Number(c[3]),0<=a&&256>a&&0<=b&&256>b&&0<=c&&256>c)?Blockly.utils.colour.rgbToHex(a,b, c):null};Blockly.utils.colour.rgbToHex=function(a,b,c){b=a<<16|b<<8|c;return 16>a?"#"+(16777216|b).toString(16).substr(1):"#"+b.toString(16)};Blockly.utils.colour.hexToRgb=function(a){a=Blockly.utils.colour.parse(a);if(!a)return[0,0,0];a=parseInt(a.substr(1),16);return[a>>16,a>>8&255,a&255]}; Blockly.utils.colour.hsvToHex=function(a,b,c){var d=0,e=0,f=0;if(0==b)f=e=d=c;else{var g=Math.floor(a/60),h=a/60-g;a=c*(1-b);var k=c*(1-b*h);b=c*(1-b*(1-h));switch(g){case 1:d=k;e=c;f=a;break;case 2:d=a;e=c;f=b;break;case 3:d=a;e=k;f=c;break;case 4:d=b;e=a;f=c;break;case 5:d=c;e=a;f=k;break;case 6:case 0:d=c,e=b,f=a}}return Blockly.utils.colour.rgbToHex(Math.floor(d),Math.floor(e),Math.floor(f))}; Blockly.utils.colour.blend=function(a,b,c){a=Blockly.utils.colour.parse(a);if(!a)return null;b=Blockly.utils.colour.parse(b);if(!b)return null;a=Blockly.utils.colour.hexToRgb(a);b=Blockly.utils.colour.hexToRgb(b);return Blockly.utils.colour.rgbToHex(Math.round(b[0]+c*(a[0]-b[0])),Math.round(b[1]+c*(a[1]-b[1])),Math.round(b[2]+c*(a[2]-b[2])))}; Blockly.utils.colour.names={aqua:"#00ffff",black:"#000000",blue:"#0000ff",fuchsia:"#ff00ff",gray:"#808080",green:"#008000",lime:"#00ff00",maroon:"#800000",navy:"#000080",olive:"#808000",purple:"#800080",red:"#ff0000",silver:"#c0c0c0",teal:"#008080",white:"#ffffff",yellow:"#ffff00"};Blockly.utils.Coordinate=function(a,b){this.x=a;this.y=b};Blockly.utils.Coordinate.equals=function(a,b){return a==b?!0:a&&b?a.x==b.x&&a.y==b.y:!1};Blockly.utils.Coordinate.distance=function(a,b){var c=a.x-b.x;a=a.y-b.y;return Math.sqrt(c*c+a*a)};Blockly.utils.Coordinate.magnitude=function(a){return Math.sqrt(a.x*a.x+a.y*a.y)};Blockly.utils.Coordinate.difference=function(a,b){return new Blockly.utils.Coordinate(a.x-b.x,a.y-b.y)}; -Blockly.utils.Coordinate.sum=function(a,b){return new Blockly.utils.Coordinate(a.x+b.x,a.y+b.y)};Blockly.utils.Coordinate.prototype.scale=function(a){this.x*=a;this.y*=a;return this};Blockly.utils.Coordinate.prototype.translate=function(a,b){this.x+=a;this.y+=b;return this};Blockly.utils.Rect=function(a,b,c,d){this.top=a;this.bottom=b;this.left=c;this.right=d};Blockly.utils.Rect.prototype.contains=function(a,b){return a>=this.left&&a<=this.right&&b>=this.top&&b<=this.bottom};Blockly.utils.string={};Blockly.utils.string.startsWith=function(a,b){return 0==a.lastIndexOf(b,0)};Blockly.utils.string.shortestStringLength=function(a){return a.length?a.reduce(function(a,c){return a.length=this.left&&a<=this.right&&b>=this.top&&b<=this.bottom};Blockly.utils.string={};Blockly.utils.string.startsWith=function(a,b){return 0==a.lastIndexOf(b,0)};Blockly.utils.string.shortestStringLength=function(a){return a.length?a.reduce(function(b,c){return b.lengthb&&(b=c[d].length);d=-Infinity;var e=1;do{var f=d;var g=a;a=[];var h=c.length/e,k=1;for(d=0;df);return g}; @@ -30,14 +36,14 @@ Blockly.utils.style.setElementShown=function(a,b){a.style.display=b?"":"none"};B Blockly.utils.style.getBorderBox=function(a){var b=Blockly.utils.style.getComputedStyle(a,"borderLeftWidth"),c=Blockly.utils.style.getComputedStyle(a,"borderRightWidth"),d=Blockly.utils.style.getComputedStyle(a,"borderTopWidth");a=Blockly.utils.style.getComputedStyle(a,"borderBottomWidth");return{top:parseFloat(d),right:parseFloat(c),bottom:parseFloat(a),left:parseFloat(b)}}; Blockly.utils.style.scrollIntoContainerView=function(a,b,c){a=Blockly.utils.style.getContainerOffsetToScrollInto(a,b,c);b.scrollLeft=a.x;b.scrollTop=a.y}; Blockly.utils.style.getContainerOffsetToScrollInto=function(a,b,c){var d=Blockly.utils.style.getPageOffset(a),e=Blockly.utils.style.getPageOffset(b),f=Blockly.utils.style.getBorderBox(b),g=d.x-e.x-f.left;d=d.y-e.y-f.top;e=Blockly.utils.style.getSizeWithDisplay_(a);a=b.clientWidth-e.width;e=b.clientHeight-e.height;f=b.scrollLeft;b=b.scrollTop;c?(f+=g-a/2,b+=d-e/2):(f+=Math.min(g,Math.max(g-a,0)),b+=Math.min(d,Math.max(d-e,0)));return new Blockly.utils.Coordinate(f,b)};Blockly.utils.userAgent={}; -(function(a){function b(a){return-1!=c.indexOf(a.toUpperCase())}Blockly.utils.userAgent.raw=a;var c=Blockly.utils.userAgent.raw.toUpperCase();Blockly.utils.userAgent.IE=b("Trident")||b("MSIE");Blockly.utils.userAgent.EDGE=b("Edge");Blockly.utils.userAgent.JAVA_FX=b("JavaFX");Blockly.utils.userAgent.CHROME=(b("Chrome")||b("CriOS"))&&!Blockly.utils.userAgent.EDGE;Blockly.utils.userAgent.WEBKIT=b("WebKit")&&!Blockly.utils.userAgent.EDGE;Blockly.utils.userAgent.GECKO=b("Gecko")&&!Blockly.utils.userAgent.WEBKIT&& +(function(a){function b(d){return-1!=c.indexOf(d.toUpperCase())}Blockly.utils.userAgent.raw=a;var c=Blockly.utils.userAgent.raw.toUpperCase();Blockly.utils.userAgent.IE=b("Trident")||b("MSIE");Blockly.utils.userAgent.EDGE=b("Edge");Blockly.utils.userAgent.JAVA_FX=b("JavaFX");Blockly.utils.userAgent.CHROME=(b("Chrome")||b("CriOS"))&&!Blockly.utils.userAgent.EDGE;Blockly.utils.userAgent.WEBKIT=b("WebKit")&&!Blockly.utils.userAgent.EDGE;Blockly.utils.userAgent.GECKO=b("Gecko")&&!Blockly.utils.userAgent.WEBKIT&& !Blockly.utils.userAgent.IE&&!Blockly.utils.userAgent.EDGE;Blockly.utils.userAgent.ANDROID=b("Android");Blockly.utils.userAgent.IPAD=b("iPad");Blockly.utils.userAgent.IPOD=b("iPod");Blockly.utils.userAgent.IPHONE=b("iPhone")&&!Blockly.utils.userAgent.IPAD&&!Blockly.utils.userAgent.IPOD;Blockly.utils.userAgent.MAC=b("Macintosh");Blockly.utils.userAgent.TABLET=Blockly.utils.userAgent.IPAD||Blockly.utils.userAgent.ANDROID&&!b("Mobile")||b("Silk");Blockly.utils.userAgent.MOBILE=!Blockly.utils.userAgent.TABLET&& -(Blockly.utils.userAgent.IPOD||Blockly.utils.userAgent.IPHONE||Blockly.utils.userAgent.ANDROID||b("IEMobile"))})(Blockly.utils.global.navigator&&Blockly.utils.global.navigator.userAgent||"");Blockly.utils.noEvent=function(a){a.preventDefault();a.stopPropagation()};Blockly.utils.isTargetInput=function(a){return"textarea"==a.target.type||"text"==a.target.type||"number"==a.target.type||"email"==a.target.type||"password"==a.target.type||"search"==a.target.type||"tel"==a.target.type||"url"==a.target.type||a.target.isContentEditable}; +(Blockly.utils.userAgent.IPOD||Blockly.utils.userAgent.IPHONE||Blockly.utils.userAgent.ANDROID||b("IEMobile"))})(Blockly.utils.global.navigator&&Blockly.utils.global.navigator.userAgent||"");Blockly.utils.noEvent=function(a){a.preventDefault();a.stopPropagation()};Blockly.utils.isTargetInput=function(a){return"textarea"==a.target.type||"text"==a.target.type||"number"==a.target.type||"email"==a.target.type||"password"==a.target.type||"search"==a.target.type||"tel"==a.target.type||"url"==a.target.type||a.target.isContentEditable||a.target.dataset&&"true"==a.target.dataset.isTextInput}; Blockly.utils.getRelativeXY=function(a){var b=new Blockly.utils.Coordinate(0,0),c=a.getAttribute("x");c&&(b.x=parseInt(c,10));if(c=a.getAttribute("y"))b.y=parseInt(c,10);if(c=(c=a.getAttribute("transform"))&&c.match(Blockly.utils.getRelativeXY.XY_REGEX_))b.x+=Number(c[1]),c[3]&&(b.y+=Number(c[3]));(a=a.getAttribute("style"))&&-1=h?(e=2,f=h,(h=a.join(""))&&c.push(h),a.length=0):"{"==h?e=3:(a.push("%",h),e=0):2==e?"0"<=h&&"9">=h?f+=h:(c.push(parseInt(f,10)),g--,e=0):3==e&&(""==h?(a.splice(0,0,"%{"),g--,e=0):"}"!=h?a.push(h):(e=a.join(""),/[A-Z]\w*/i.test(e)?(h=e.toUpperCase(), (h=Blockly.utils.string.startsWith(h,"BKY_")?h.substring(4):null)&&h in Blockly.Msg?(e=Blockly.Msg[h],"string"==typeof e?Array.prototype.push.apply(c,Blockly.utils.tokenizeInterpolation_(e,b)):b?c.push(String(e)):c.push(e)):c.push("%{"+e+"}")):c.push("%{"+e+"}"),e=a.length=0))}(h=a.join(""))&&c.push(h);b=[];for(g=a.length=0;gc;c++)b[c]=Blockly.utils.genUid.soup_.charAt(Math.random()*a);return b.join("")};Blockly.utils.genUid.soup_="!#$%()*+,-./:;=?@[]^_`{|}~ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789"; @@ -50,25 +56,25 @@ Blockly.utils.parseBlockColour=function(a){var b="string"==typeof a?Blockly.util Blockly.Events.VAR_RENAME="var_rename";Blockly.Events.UI="ui";Blockly.Events.COMMENT_CREATE="comment_create";Blockly.Events.COMMENT_DELETE="comment_delete";Blockly.Events.COMMENT_CHANGE="comment_change";Blockly.Events.COMMENT_MOVE="comment_move";Blockly.Events.FINISHED_LOADING="finished_loading";Blockly.Events.BUMP_EVENTS=[Blockly.Events.BLOCK_CREATE,Blockly.Events.BLOCK_MOVE,Blockly.Events.COMMENT_CREATE,Blockly.Events.COMMENT_MOVE];Blockly.Events.FIRE_QUEUE_=[]; Blockly.Events.fire=function(a){Blockly.Events.isEnabled()&&(Blockly.Events.FIRE_QUEUE_.length||setTimeout(Blockly.Events.fireNow_,0),Blockly.Events.FIRE_QUEUE_.push(a))};Blockly.Events.fireNow_=function(){for(var a=Blockly.Events.filter(Blockly.Events.FIRE_QUEUE_,!0),b=Blockly.Events.FIRE_QUEUE_.length=0,c;c=a[b];b++)if(c.workspaceId){var d=Blockly.Workspace.getById(c.workspaceId);d&&d.fireChangeListener(c)}}; Blockly.Events.filter=function(a,b){a=a.slice();b||a.reverse();for(var c=[],d=Object.create(null),e=0,f;f=a[e];e++)if(!f.isNull()){var g=[f.type,f.blockId,f.workspaceId].join(" "),h=d[g],k=h?h.event:null;if(!h)d[g]={event:f,index:e},c.push(f);else if(f.type==Blockly.Events.MOVE&&h.index==e-1)k.newParentId=f.newParentId,k.newInputName=f.newInputName,k.newCoordinate=f.newCoordinate,h.index=e;else if(f.type==Blockly.Events.CHANGE&&f.element==k.element&&f.name==k.name)k.newValue=f.newValue;else if(f.type!= -Blockly.Events.UI||"click"!=f.element||"commentOpen"!=k.element&&"mutatorOpen"!=k.element&&"warningOpen"!=k.element)d[g]={event:f,index:1},c.push(f)}a=c.filter(function(a){return!a.isNull()});b||a.reverse();for(e=1;f=a[e];e++)f.type==Blockly.Events.CHANGE&&"mutation"==f.element&&a.unshift(a.splice(e,1)[0]);return a};Blockly.Events.clearPendingUndo=function(){for(var a=0,b;b=Blockly.Events.FIRE_QUEUE_[a];a++)b.recordUndo=!1};Blockly.Events.disable=function(){Blockly.Events.disabled_++}; +Blockly.Events.UI||"click"!=f.element||"commentOpen"!=k.element&&"mutatorOpen"!=k.element&&"warningOpen"!=k.element)d[g]={event:f,index:1},c.push(f)}a=c.filter(function(l){return!l.isNull()});b||a.reverse();for(e=1;f=a[e];e++)f.type==Blockly.Events.CHANGE&&"mutation"==f.element&&a.unshift(a.splice(e,1)[0]);return a};Blockly.Events.clearPendingUndo=function(){for(var a=0,b;b=Blockly.Events.FIRE_QUEUE_[a];a++)b.recordUndo=!1};Blockly.Events.disable=function(){Blockly.Events.disabled_++}; Blockly.Events.enable=function(){Blockly.Events.disabled_--};Blockly.Events.isEnabled=function(){return 0==Blockly.Events.disabled_};Blockly.Events.getGroup=function(){return Blockly.Events.group_};Blockly.Events.setGroup=function(a){Blockly.Events.group_="boolean"==typeof a?a?Blockly.utils.genUid():"":a};Blockly.Events.getDescendantIds=function(a){var b=[];a=a.getDescendants(!1);for(var c=0,d;d=a[c];c++)b[c]=d.id;return b}; -Blockly.Events.fromJson=function(a,b){switch(a.type){case Blockly.Events.CREATE:var c=new Blockly.Events.Create(null);break;case Blockly.Events.DELETE:c=new Blockly.Events.Delete(null);break;case Blockly.Events.CHANGE:c=new Blockly.Events.Change(null,"","","","");break;case Blockly.Events.MOVE:c=new Blockly.Events.Move(null);break;case Blockly.Events.VAR_CREATE:c=new Blockly.Events.VarCreate(null);break;case Blockly.Events.VAR_DELETE:c=new Blockly.Events.VarDelete(null);break;case Blockly.Events.VAR_RENAME:c= -new Blockly.Events.VarRename(null,"");break;case Blockly.Events.UI:c=new Blockly.Events.Ui(null,"","","");break;case Blockly.Events.COMMENT_CREATE:c=new Blockly.Events.CommentCreate(null);break;case Blockly.Events.COMMENT_CHANGE:c=new Blockly.Events.CommentChange(null,"","");break;case Blockly.Events.COMMENT_MOVE:c=new Blockly.Events.CommentMove(null);break;case Blockly.Events.COMMENT_DELETE:c=new Blockly.Events.CommentDelete(null);break;case Blockly.Events.FINISHED_LOADING:c=new Blockly.Events.FinishedLoading(b); -break;default:throw Error("Unknown event type.");}c.fromJson(a);c.workspaceId=b.id;return c}; -Blockly.Events.disableOrphans=function(a){if((a.type==Blockly.Events.MOVE||a.type==Blockly.Events.CREATE)&&a.workspaceId){var b=Blockly.Workspace.getById(a.workspaceId);if(a=b.getBlockById(a.blockId)){var c=a.getParent();if(c&&c.isEnabled())for(b=a.getDescendants(!1),a=0;c=b[a];a++)c.setEnabled(!0);else if((a.outputConnection||a.previousConnection)&&!b.isDragging()){do a.setEnabled(!1),a=a.getNextBlock();while(a)}}}};Blockly.Events.Abstract=function(){this.workspaceId=void 0;this.group=Blockly.Events.getGroup();this.recordUndo=Blockly.Events.recordUndo};Blockly.Events.Abstract.prototype.toJson=function(){var a={type:this.type};this.group&&(a.group=this.group);return a};Blockly.Events.Abstract.prototype.fromJson=function(a){this.group=a.group};Blockly.Events.Abstract.prototype.isNull=function(){return!1};Blockly.Events.Abstract.prototype.run=function(a){}; -Blockly.Events.Abstract.prototype.getEventWorkspace_=function(){if(this.workspaceId)var a=Blockly.Workspace.getById(this.workspaceId);if(!a)throw Error("Workspace is null. Event must have been generated from real Blockly events.");return a};Blockly.utils.object={};Blockly.utils.object.inherits=function(a,b){a.superClass_=b.prototype;a.prototype=Object.create(b.prototype);a.prototype.constructor=a};Blockly.utils.object.mixin=function(a,b){for(var c in b)a[c]=b[c]};Blockly.utils.object.deepMerge=function(a,b){for(var c in b)a[c]=null!=b[c]&&"object"===typeof b[c]?Blockly.utils.object.deepMerge(a[c]||Object.create(null),b[c]):b[c];return a};Blockly.utils.object.values=function(a){return Object.values?Object.values(a):Object.keys(a).map(function(b){return a[b]})};Blockly.Events.Ui=function(a,b,c,d){Blockly.Events.Ui.superClass_.constructor.call(this);this.blockId=a?a.id:null;this.workspaceId=a?a.workspace.id:void 0;this.element=b;this.oldValue=c;this.newValue=d;this.recordUndo=!1};Blockly.utils.object.inherits(Blockly.Events.Ui,Blockly.Events.Abstract);Blockly.Events.Ui.prototype.type=Blockly.Events.UI; -Blockly.Events.Ui.prototype.toJson=function(){var a=Blockly.Events.Ui.superClass_.toJson.call(this);a.element=this.element;void 0!==this.newValue&&(a.newValue=this.newValue);this.blockId&&(a.blockId=this.blockId);return a};Blockly.Events.Ui.prototype.fromJson=function(a){Blockly.Events.Ui.superClass_.fromJson.call(this,a);this.element=a.element;this.newValue=a.newValue;this.blockId=a.blockId};Blockly.utils.dom={};Blockly.utils.dom.SVG_NS="http://www.w3.org/2000/svg";Blockly.utils.dom.HTML_NS="http://www.w3.org/1999/xhtml";Blockly.utils.dom.XLINK_NS="http://www.w3.org/1999/xlink";Blockly.utils.dom.NodeType={ELEMENT_NODE:1,TEXT_NODE:3,COMMENT_NODE:8,DOCUMENT_POSITION_CONTAINED_BY:16};Blockly.utils.dom.cacheWidths_=null;Blockly.utils.dom.cacheReference_=0;Blockly.utils.dom.canvasContext_=null; -Blockly.utils.dom.createSvgElement=function(a,b,c){a=document.createElementNS(Blockly.utils.dom.SVG_NS,a);for(var d in b)a.setAttribute(d,b[d]);document.body.runtimeStyle&&(a.runtimeStyle=a.currentStyle=a.style);c&&c.appendChild(a);return a};Blockly.utils.dom.addClass=function(a,b){var c=a.getAttribute("class")||"";if(-1!=(" "+c+" ").indexOf(" "+b+" "))return!1;c&&(c+=" ");a.setAttribute("class",c+b);return!0}; -Blockly.utils.dom.removeClass=function(a,b){var c=a.getAttribute("class");if(-1==(" "+c+" ").indexOf(" "+b+" "))return!1;c=c.split(/\s+/);for(var d=0;db||b>this.getChildCount())throw Error(Blockly.Component.Error.CHILD_INDEX_OUT_OF_BOUNDS);this.childIndex_[a.getId()]=a;if(a.getParent()==this){var d=this.children_.indexOf(a);-1>>/g,a),a=document.createElement("style"),a.id="blockly-common-style",c=document.createTextNode(c),a.appendChild(c),document.head.insertBefore(a,document.head.firstChild))}};Blockly.Css.setCursor=function(a){console.warn("Deprecated call to Blockly.Css.setCursor. See issue #981 for context")}; +Blockly.Css.inject=function(a,b){if(!Blockly.Css.injected_){Blockly.Css.injected_=!0;var c=Blockly.Css.CONTENT.join("\n");Blockly.Css.CONTENT.length=0;a&&(a=b.replace(/[\\/]$/,""),c=c.replace(/<<>>/g,a),a=document.createElement("style"),a.id="blockly-common-style",c=document.createTextNode(c),a.appendChild(c),document.head.insertBefore(a,document.head.firstChild))}}; Blockly.Css.CONTENT=[".blocklySvg {","background-color: #fff;","outline: none;","overflow: hidden;","position: absolute;","display: block;","}",".blocklyWidgetDiv {","display: none;","position: absolute;","z-index: 99999;","}",".injectionDiv {","height: 100%;","position: relative;","overflow: hidden;","touch-action: none;","}",".blocklyNonSelectable {","user-select: none;","-ms-user-select: none;","-webkit-user-select: none;","}",".blocklyWsDragSurface {","display: none;","position: absolute;","top: 0;", "left: 0;","}",".blocklyWsDragSurface.blocklyOverflowVisible {","overflow: visible;","}",".blocklyBlockDragSurface {","display: none;","position: absolute;","top: 0;","left: 0;","right: 0;","bottom: 0;","overflow: visible !important;","z-index: 50;","}",".blocklyBlockCanvas.blocklyCanvasTransitioning,",".blocklyBubbleCanvas.blocklyCanvasTransitioning {","transition: transform .5s;","}",".blocklyTooltipDiv {","background-color: #ffffc7;","border: 1px solid #ddc;","box-shadow: 4px 4px 20px 1px rgba(0,0,0,.15);", "color: #000;","display: none;","font: 9pt sans-serif;","opacity: .9;","padding: 2px;","position: absolute;","z-index: 100000;","}",".blocklyDropDownDiv {","position: absolute;","left: 0;","top: 0;","z-index: 1000;","display: none;","border: 1px solid;","border-color: #dadce0;","background-color: #fff;","border-radius: 2px;","padding: 4px;","box-shadow: 0 0 3px 1px rgba(0,0,0,.3);","}",".blocklyDropDownDiv.blocklyFocused {","box-shadow: 0 0 6px 1px rgba(0,0,0,.3);","}",".blocklyDropDownContent {", -"max-height: 300px;","overflow: auto;","overflow-x: hidden;","}",".blocklyDropDownArrow {","position: absolute;","left: 0;","top: 0;","width: 16px;","height: 16px;","z-index: -1;","background-color: inherit;","border-color: inherit;","}",".blocklyDropDownButton {","display: inline-block;","float: left;","padding: 0;","margin: 4px;","border-radius: 4px;","outline: none;","border: 1px solid;","transition: box-shadow .1s;","cursor: pointer;","}",".blocklyArrowTop {","border-top: 1px solid;","border-left: 1px solid;", -"border-top-left-radius: 4px;","border-color: inherit;","}",".blocklyArrowBottom {","border-bottom: 1px solid;","border-right: 1px solid;","border-bottom-right-radius: 4px;","border-color: inherit;","}",".blocklyResizeSE {","cursor: se-resize;","fill: #aaa;","}",".blocklyResizeSW {","cursor: sw-resize;","fill: #aaa;","}",".blocklyResizeLine {","stroke: #515A5A;","stroke-width: 1;","}",".blocklyHighlightedConnectionPath {","fill: none;","stroke: #fc3;","stroke-width: 4px;","}",".blocklyPathLight {", -"fill: none;","stroke-linecap: round;","stroke-width: 1;","}",".blocklySelected>.blocklyPathLight {","display: none;","}",".blocklyDraggable {",'cursor: url("<<>>/handopen.cur"), auto;',"cursor: grab;","cursor: -webkit-grab;","}",".blocklyDragging {",'cursor: url("<<>>/handclosed.cur"), auto;',"cursor: grabbing;","cursor: -webkit-grabbing;","}",".blocklyDraggable:active {",'cursor: url("<<>>/handclosed.cur"), auto;',"cursor: grabbing;","cursor: -webkit-grabbing;","}",".blocklyBlockDragSurface .blocklyDraggable {", -'cursor: url("<<>>/handclosed.cur"), auto;',"cursor: grabbing;","cursor: -webkit-grabbing;","}",".blocklyDragging.blocklyDraggingDelete {",'cursor: url("<<>>/handdelete.cur"), auto;',"}",".blocklyDragging>.blocklyPath,",".blocklyDragging>.blocklyPathLight {","fill-opacity: .8;","stroke-opacity: .8;","}",".blocklyDragging>.blocklyPathDark {","display: none;","}",".blocklyDisabled>.blocklyPath {","fill-opacity: .5;","stroke-opacity: .5;","}",".blocklyDisabled>.blocklyPathLight,",".blocklyDisabled>.blocklyPathDark {", -"display: none;","}",".blocklyInsertionMarker>.blocklyPath,",".blocklyInsertionMarker>.blocklyPathLight,",".blocklyInsertionMarker>.blocklyPathDark {","fill-opacity: .2;","stroke: none;","}",".blocklyMultilineText {","font-family: monospace;","}",".blocklyNonEditableText>text {","pointer-events: none;","}",".blocklyFlyout {","position: absolute;","z-index: 20;","}",".blocklyText text {","cursor: default;","}",".blocklySvg text,",".blocklyBlockDragSurface text {","user-select: none;","-ms-user-select: none;", -"-webkit-user-select: none;","cursor: inherit;","}",".blocklyHidden {","display: none;","}",".blocklyFieldDropdown:not(.blocklyHidden) {","display: block;","}",".blocklyIconGroup {","cursor: default;","}",".blocklyIconGroup:not(:hover),",".blocklyIconGroupReadonly {","opacity: .6;","}",".blocklyIconShape {","fill: #00f;","stroke: #fff;","stroke-width: 1px;","}",".blocklyIconSymbol {","fill: #fff;","}",".blocklyMinimalBody {","margin: 0;","padding: 0;","}",".blocklyHtmlInput {","border: none;","border-radius: 4px;", -"height: 100%;","margin: 0;","outline: none;","padding: 0;","width: 100%;","text-align: center;","display: block;","box-sizing: border-box;","}",".blocklyHtmlInput::-ms-clear {","display: none;","}",".blocklyMainBackground {","stroke-width: 1;","stroke: #c6c6c6;","}",".blocklyMutatorBackground {","fill: #fff;","stroke: #ddd;","stroke-width: 1;","}",".blocklyFlyoutBackground {","fill: #ddd;","fill-opacity: .8;","}",".blocklyMainWorkspaceScrollbar {","z-index: 20;","}",".blocklyFlyoutScrollbar {","z-index: 30;", -"}",".blocklyScrollbarHorizontal,",".blocklyScrollbarVertical {","position: absolute;","outline: none;","}",".blocklyScrollbarBackground {","opacity: 0;","}",".blocklyScrollbarHandle {","fill: #ccc;","}",".blocklyScrollbarBackground:hover+.blocklyScrollbarHandle,",".blocklyScrollbarHandle:hover {","fill: #bbb;","}",".blocklyFlyout .blocklyScrollbarHandle {","fill: #bbb;","}",".blocklyFlyout .blocklyScrollbarBackground:hover+.blocklyScrollbarHandle,",".blocklyFlyout .blocklyScrollbarHandle:hover {", -"fill: #aaa;","}",".blocklyInvalidInput {","background: #faa;","}",".blocklyVerticalMarker {","stroke-width: 3px;","fill: rgba(255,255,255,.5);","pointer-events: none;","}",".blocklyComputeCanvas {","position: absolute;","width: 0;","height: 0;","}",".blocklyNoPointerEvents {","pointer-events: none;","}",".blocklyContextMenu {","border-radius: 4px;","max-height: 100%;","}",".blocklyDropdownMenu {","border-radius: 2px;","padding: 0 !important;","}",".blocklyDropdownMenu .blocklyMenuItem {","padding-left: 28px;", -"}",".blocklyDropdownMenu .blocklyMenuItemRtl {","padding-left: 5px;","padding-right: 28px;","}",".blocklyWidgetDiv .blocklyMenu {","background: #fff;","border: 1px solid transparent;","box-shadow: 0 0 3px 1px rgba(0,0,0,.3);","font: normal 13px Arial, sans-serif;","margin: 0;","outline: none;","padding: 4px 0;","position: absolute;","overflow-y: auto;","overflow-x: hidden;","max-height: 100%;","z-index: 20000;","}",".blocklyWidgetDiv .blocklyMenu.blocklyFocused {","box-shadow: 0 0 6px 1px rgba(0,0,0,.3);", -"}",".blocklyDropDownDiv .blocklyMenu {",'font: normal 13px "Helvetica Neue", Helvetica, sans-serif;',"outline: none;","z-index: 20000;","}",".blocklyMenuItem {","border: none;","color: #000;","cursor: pointer;","list-style: none;","margin: 0;","min-width: 7em;","padding: 6px 15px;","white-space: nowrap;","}",".blocklyMenuItemDisabled {","color: #ccc;","cursor: inherit;","}",".blocklyMenuItemHighlight {","background-color: rgba(0,0,0,.1);","}",".blocklyMenuItemCheckbox {","height: 16px;","position: absolute;", -"width: 16px;","}",".blocklyMenuItemSelected .blocklyMenuItemCheckbox {","background: url(<<>>/sprites.png) no-repeat -48px -16px;","float: left;","margin-left: -24px;","position: static;","}",".blocklyMenuItemRtl .blocklyMenuItemCheckbox {","float: right;","margin-right: -24px;","}"];Blockly.utils.math={};Blockly.utils.math.toRadians=function(a){return a*Math.PI/180};Blockly.utils.math.toDegrees=function(a){return 180*a/Math.PI};Blockly.utils.math.clamp=function(a,b,c){if(c.blocklyPathLight {","display: none;","}",".blocklyDraggable {",'cursor: url("<<>>/handopen.cur"), auto;',"cursor: grab;","cursor: -webkit-grab;","}",".blocklyDragging {",'cursor: url("<<>>/handclosed.cur"), auto;',"cursor: grabbing;","cursor: -webkit-grabbing;","}",".blocklyDraggable:active {",'cursor: url("<<>>/handclosed.cur"), auto;',"cursor: grabbing;","cursor: -webkit-grabbing;", +"}",".blocklyBlockDragSurface .blocklyDraggable {",'cursor: url("<<>>/handclosed.cur"), auto;',"cursor: grabbing;","cursor: -webkit-grabbing;","}",".blocklyDragging.blocklyDraggingDelete {",'cursor: url("<<>>/handdelete.cur"), auto;',"}",".blocklyDragging>.blocklyPath,",".blocklyDragging>.blocklyPathLight {","fill-opacity: .8;","stroke-opacity: .8;","}",".blocklyDragging>.blocklyPathDark {","display: none;","}",".blocklyDisabled>.blocklyPath {","fill-opacity: .5;","stroke-opacity: .5;", +"}",".blocklyDisabled>.blocklyPathLight,",".blocklyDisabled>.blocklyPathDark {","display: none;","}",".blocklyInsertionMarker>.blocklyPath,",".blocklyInsertionMarker>.blocklyPathLight,",".blocklyInsertionMarker>.blocklyPathDark {","fill-opacity: .2;","stroke: none;","}",".blocklyMultilineText {","font-family: monospace;","}",".blocklyNonEditableText>text {","pointer-events: none;","}",".blocklyFlyout {","position: absolute;","z-index: 20;","}",".blocklyText text {","cursor: default;","}",".blocklySvg text,", +".blocklyBlockDragSurface text {","user-select: none;","-ms-user-select: none;","-webkit-user-select: none;","cursor: inherit;","}",".blocklyHidden {","display: none;","}",".blocklyFieldDropdown:not(.blocklyHidden) {","display: block;","}",".blocklyIconGroup {","cursor: default;","}",".blocklyIconGroup:not(:hover),",".blocklyIconGroupReadonly {","opacity: .6;","}",".blocklyIconShape {","fill: #00f;","stroke: #fff;","stroke-width: 1px;","}",".blocklyIconSymbol {","fill: #fff;","}",".blocklyMinimalBody {", +"margin: 0;","padding: 0;","}",".blocklyHtmlInput {","border: none;","border-radius: 4px;","height: 100%;","margin: 0;","outline: none;","padding: 0;","width: 100%;","text-align: center;","display: block;","box-sizing: border-box;","}",".blocklyHtmlInput::-ms-clear {","display: none;","}",".blocklyMainBackground {","stroke-width: 1;","stroke: #c6c6c6;","}",".blocklyMutatorBackground {","fill: #fff;","stroke: #ddd;","stroke-width: 1;","}",".blocklyFlyoutBackground {","fill: #ddd;","fill-opacity: .8;", +"}",".blocklyMainWorkspaceScrollbar {","z-index: 20;","}",".blocklyFlyoutScrollbar {","z-index: 30;","}",".blocklyScrollbarHorizontal,",".blocklyScrollbarVertical {","position: absolute;","outline: none;","}",".blocklyScrollbarBackground {","opacity: 0;","}",".blocklyScrollbarHandle {","fill: #ccc;","}",".blocklyScrollbarBackground:hover+.blocklyScrollbarHandle,",".blocklyScrollbarHandle:hover {","fill: #bbb;","}",".blocklyFlyout .blocklyScrollbarHandle {","fill: #bbb;","}",".blocklyFlyout .blocklyScrollbarBackground:hover+.blocklyScrollbarHandle,", +".blocklyFlyout .blocklyScrollbarHandle:hover {","fill: #aaa;","}",".blocklyInvalidInput {","background: #faa;","}",".blocklyVerticalMarker {","stroke-width: 3px;","fill: rgba(255,255,255,.5);","pointer-events: none;","}",".blocklyComputeCanvas {","position: absolute;","width: 0;","height: 0;","}",".blocklyNoPointerEvents {","pointer-events: none;","}",".blocklyContextMenu {","border-radius: 4px;","max-height: 100%;","}",".blocklyDropdownMenu {","border-radius: 2px;","padding: 0 !important;","}", +".blocklyDropdownMenu .blocklyMenuItem {","padding-left: 28px;","}",".blocklyDropdownMenu .blocklyMenuItemRtl {","padding-left: 5px;","padding-right: 28px;","}",".blocklyWidgetDiv .blocklyMenu {","background: #fff;","border: 1px solid transparent;","box-shadow: 0 0 3px 1px rgba(0,0,0,.3);","font: normal 13px Arial, sans-serif;","margin: 0;","outline: none;","padding: 4px 0;","position: absolute;","overflow-y: auto;","overflow-x: hidden;","max-height: 100%;","z-index: 20000;","}",".blocklyWidgetDiv .blocklyMenu.blocklyFocused {", +"box-shadow: 0 0 6px 1px rgba(0,0,0,.3);","}",".blocklyDropDownDiv .blocklyMenu {",'font: normal 13px "Helvetica Neue", Helvetica, sans-serif;',"outline: none;","z-index: 20000;","}",".blocklyMenuItem {","border: none;","color: #000;","cursor: pointer;","list-style: none;","margin: 0;","min-width: 7em;","padding: 6px 15px;","white-space: nowrap;","}",".blocklyMenuItemDisabled {","color: #ccc;","cursor: inherit;","}",".blocklyMenuItemHighlight {","background-color: rgba(0,0,0,.1);","}",".blocklyMenuItemCheckbox {", +"height: 16px;","position: absolute;","width: 16px;","}",".blocklyMenuItemSelected .blocklyMenuItemCheckbox {","background: url(<<>>/sprites.png) no-repeat -48px -16px;","float: left;","margin-left: -24px;","position: static;","}",".blocklyMenuItemRtl .blocklyMenuItemCheckbox {","float: right;","margin-right: -24px;","}"];Blockly.utils.math={};Blockly.utils.math.toRadians=function(a){return a*Math.PI/180};Blockly.utils.math.toDegrees=function(a){return 180*a/Math.PI};Blockly.utils.math.clamp=function(a,b,c){if(cb.indexOf(d))throw Error(d+" is not a valid modifier key.");};Blockly.user.keyMap.createSerializedKey=function(a,b){var c="",d=Blockly.utils.object.values(Blockly.user.keyMap.modifierKeys);Blockly.user.keyMap.checkModifiers_(b,d);for(var e=0,f;f=d[e];e++)-1 document.");}else a=null;return a};Blockly.utils.xml={};Blockly.utils.xml.NAME_SPACE="https://developers.google.com/blockly/xml";Blockly.utils.xml.document=function(){return document};Blockly.utils.xml.createElement=function(a){return Blockly.utils.xml.document().createElementNS(Blockly.utils.xml.NAME_SPACE,a)};Blockly.utils.xml.createTextNode=function(a){return Blockly.utils.xml.document().createTextNode(a)};Blockly.utils.xml.textToDomDocument=function(a){return(new DOMParser).parseFromString(a,"text/xml")}; +Blockly.utils.xml.domToText=function(a){return(new XMLSerializer).serializeToString(a)};Blockly.Events.BlockBase=function(a){Blockly.Events.BlockBase.superClass_.constructor.call(this);this.blockId=(this.isBlank="undefined"==typeof a)?"":a.id;this.workspaceId=this.isBlank?"":a.workspace.id};Blockly.utils.object.inherits(Blockly.Events.BlockBase,Blockly.Events.Abstract);Blockly.Events.BlockBase.prototype.toJson=function(){var a=Blockly.Events.BlockBase.superClass_.toJson.call(this);a.blockId=this.blockId;return a}; +Blockly.Events.BlockBase.prototype.fromJson=function(a){Blockly.Events.BlockBase.superClass_.fromJson.call(this,a);this.blockId=a.blockId};Blockly.Events.Change=function(a,b,c,d,e){Blockly.Events.Change.superClass_.constructor.call(this,a);a&&(this.element="undefined"==typeof b?"":b,this.name="undefined"==typeof c?"":c,this.oldValue="undefined"==typeof d?"":d,this.newValue="undefined"==typeof e?"":e)};Blockly.utils.object.inherits(Blockly.Events.Change,Blockly.Events.BlockBase); +Blockly.Events.BlockChange=Blockly.Events.Change;Blockly.Events.Change.prototype.type=Blockly.Events.CHANGE;Blockly.Events.Change.prototype.toJson=function(){var a=Blockly.Events.Change.superClass_.toJson.call(this);a.element=this.element;this.name&&(a.name=this.name);a.newValue=this.newValue;return a};Blockly.Events.Change.prototype.fromJson=function(a){Blockly.Events.Change.superClass_.fromJson.call(this,a);this.element=a.element;this.name=a.name;this.newValue=a.newValue}; +Blockly.Events.Change.prototype.isNull=function(){return this.oldValue==this.newValue}; Blockly.Events.Change.prototype.run=function(a){var b=this.getEventWorkspace_().getBlockById(this.blockId);if(b)switch(b.mutator&&b.mutator.setVisible(!1),a=a?this.newValue:this.oldValue,this.element){case "field":(b=b.getField(this.name))?b.setValue(a):console.warn("Can't set non-existent field: "+this.name);break;case "comment":b.setCommentText(a||null);break;case "collapsed":b.setCollapsed(!!a);break;case "disabled":b.setEnabled(!a);break;case "inline":b.setInputsInline(!!a);break;case "mutation":var c= "";b.mutationToDom&&(c=(c=b.mutationToDom())&&Blockly.Xml.domToText(c));if(b.domToMutation){var d=Blockly.Xml.textToDom(a||"");b.domToMutation(d)}Blockly.Events.fire(new Blockly.Events.Change(b,"mutation",null,c,a));break;default:console.warn("Unknown change type: "+this.element)}else console.warn("Can't change non-existent block: "+this.blockId)}; -Blockly.Events.Create=function(a){a&&(Blockly.Events.Create.superClass_.constructor.call(this,a),this.xml=a.workspace.rendered?Blockly.Xml.blockToDomWithXY(a):Blockly.Xml.blockToDom(a),this.ids=Blockly.Events.getDescendantIds(a))};Blockly.utils.object.inherits(Blockly.Events.Create,Blockly.Events.BlockBase);Blockly.Events.BlockCreate=Blockly.Events.Create;Blockly.Events.Create.prototype.type=Blockly.Events.CREATE; +Blockly.Events.Create=function(a){Blockly.Events.Create.superClass_.constructor.call(this,a);a&&(a.isShadow()&&(this.recordUndo=!1),this.xml=a.workspace.rendered?Blockly.Xml.blockToDomWithXY(a):Blockly.Xml.blockToDom(a),this.ids=Blockly.Events.getDescendantIds(a))};Blockly.utils.object.inherits(Blockly.Events.Create,Blockly.Events.BlockBase);Blockly.Events.BlockCreate=Blockly.Events.Create;Blockly.Events.Create.prototype.type=Blockly.Events.CREATE; Blockly.Events.Create.prototype.toJson=function(){var a=Blockly.Events.Create.superClass_.toJson.call(this);a.xml=Blockly.Xml.domToText(this.xml);a.ids=this.ids;return a};Blockly.Events.Create.prototype.fromJson=function(a){Blockly.Events.Create.superClass_.fromJson.call(this,a);this.xml=Blockly.Xml.textToDom(a.xml);this.ids=a.ids}; Blockly.Events.Create.prototype.run=function(a){var b=this.getEventWorkspace_();if(a)a=Blockly.utils.xml.createElement("xml"),a.appendChild(this.xml),Blockly.Xml.domToWorkspace(a,b);else{a=0;for(var c;c=this.ids[a];a++){var d=b.getBlockById(c);d?d.dispose(!1):c==this.blockId&&console.warn("Can't uncreate non-existent block: "+c)}}}; -Blockly.Events.Delete=function(a){if(a){if(a.getParent())throw Error("Connected blocks cannot be deleted.");Blockly.Events.Delete.superClass_.constructor.call(this,a);this.oldXml=a.workspace.rendered?Blockly.Xml.blockToDomWithXY(a):Blockly.Xml.blockToDom(a);this.ids=Blockly.Events.getDescendantIds(a)}};Blockly.utils.object.inherits(Blockly.Events.Delete,Blockly.Events.BlockBase);Blockly.Events.BlockDelete=Blockly.Events.Delete;Blockly.Events.Delete.prototype.type=Blockly.Events.DELETE; -Blockly.Events.Delete.prototype.toJson=function(){var a=Blockly.Events.Delete.superClass_.toJson.call(this);a.ids=this.ids;return a};Blockly.Events.Delete.prototype.fromJson=function(a){Blockly.Events.Delete.superClass_.fromJson.call(this,a);this.ids=a.ids}; +Blockly.Events.Delete=function(a){Blockly.Events.Delete.superClass_.constructor.call(this,a);if(a){if(a.getParent())throw Error("Connected blocks cannot be deleted.");a.isShadow()&&(this.recordUndo=!1);this.oldXml=a.workspace.rendered?Blockly.Xml.blockToDomWithXY(a):Blockly.Xml.blockToDom(a);this.ids=Blockly.Events.getDescendantIds(a)}};Blockly.utils.object.inherits(Blockly.Events.Delete,Blockly.Events.BlockBase);Blockly.Events.BlockDelete=Blockly.Events.Delete; +Blockly.Events.Delete.prototype.type=Blockly.Events.DELETE;Blockly.Events.Delete.prototype.toJson=function(){var a=Blockly.Events.Delete.superClass_.toJson.call(this);a.ids=this.ids;return a};Blockly.Events.Delete.prototype.fromJson=function(a){Blockly.Events.Delete.superClass_.fromJson.call(this,a);this.ids=a.ids}; Blockly.Events.Delete.prototype.run=function(a){var b=this.getEventWorkspace_();if(a){a=0;for(var c;c=this.ids[a];a++){var d=b.getBlockById(c);d?d.dispose(!1):c==this.blockId&&console.warn("Can't delete non-existent block: "+c)}}else a=Blockly.utils.xml.createElement("xml"),a.appendChild(this.oldXml),Blockly.Xml.domToWorkspace(a,b)}; -Blockly.Events.Move=function(a){a&&(Blockly.Events.Move.superClass_.constructor.call(this,a),a=this.currentLocation_(),this.oldParentId=a.parentId,this.oldInputName=a.inputName,this.oldCoordinate=a.coordinate)};Blockly.utils.object.inherits(Blockly.Events.Move,Blockly.Events.BlockBase);Blockly.Events.BlockMove=Blockly.Events.Move;Blockly.Events.Move.prototype.type=Blockly.Events.MOVE; +Blockly.Events.Move=function(a){Blockly.Events.Move.superClass_.constructor.call(this,a);a&&(a.isShadow()&&(this.recordUndo=!1),a=this.currentLocation_(),this.oldParentId=a.parentId,this.oldInputName=a.inputName,this.oldCoordinate=a.coordinate)};Blockly.utils.object.inherits(Blockly.Events.Move,Blockly.Events.BlockBase);Blockly.Events.BlockMove=Blockly.Events.Move;Blockly.Events.Move.prototype.type=Blockly.Events.MOVE; Blockly.Events.Move.prototype.toJson=function(){var a=Blockly.Events.Move.superClass_.toJson.call(this);this.newParentId&&(a.newParentId=this.newParentId);this.newInputName&&(a.newInputName=this.newInputName);this.newCoordinate&&(a.newCoordinate=Math.round(this.newCoordinate.x)+","+Math.round(this.newCoordinate.y));return a}; Blockly.Events.Move.prototype.fromJson=function(a){Blockly.Events.Move.superClass_.fromJson.call(this,a);this.newParentId=a.newParentId;this.newInputName=a.newInputName;a.newCoordinate&&(a=a.newCoordinate.split(","),this.newCoordinate=new Blockly.utils.Coordinate(Number(a[0]),Number(a[1])))};Blockly.Events.Move.prototype.recordNew=function(){var a=this.currentLocation_();this.newParentId=a.parentId;this.newInputName=a.inputName;this.newCoordinate=a.coordinate}; Blockly.Events.Move.prototype.currentLocation_=function(){var a=this.getEventWorkspace_().getBlockById(this.blockId),b={},c=a.getParent();if(c){if(b.parentId=c.id,a=c.getInputWithBlock(a))b.inputName=a.name}else b.coordinate=a.getRelativeToSurfaceXY();return b};Blockly.Events.Move.prototype.isNull=function(){return this.oldParentId==this.newParentId&&this.oldInputName==this.newInputName&&Blockly.utils.Coordinate.equals(this.oldCoordinate,this.newCoordinate)}; Blockly.Events.Move.prototype.run=function(a){var b=this.getEventWorkspace_(),c=b.getBlockById(this.blockId);if(c){var d=a?this.newParentId:this.oldParentId,e=a?this.newInputName:this.oldInputName;a=a?this.newCoordinate:this.oldCoordinate;var f=null;if(d&&(f=b.getBlockById(d),!f)){console.warn("Can't connect to non-existent block: "+d);return}c.getParent()&&c.unplug();if(a)e=c.getRelativeToSurfaceXY(),c.moveBy(a.x-e.x,a.y-e.y);else{c=c.outputConnection||c.previousConnection;if(e){if(b=f.getInput(e))var g= -b.connection}else c.type==Blockly.PREVIOUS_STATEMENT&&(g=f.nextConnection);g?c.connect(g):console.warn("Can't connect to non-existent input: "+e)}}else console.warn("Can't move non-existent block: "+this.blockId)};Blockly.Events.FinishedLoading=function(a){this.workspaceId=a.id;this.group=Blockly.Events.getGroup();this.recordUndo=!1};Blockly.utils.object.inherits(Blockly.Events.FinishedLoading,Blockly.Events.Ui);Blockly.Events.FinishedLoading.prototype.type=Blockly.Events.FINISHED_LOADING;Blockly.Events.FinishedLoading.prototype.toJson=function(){var a={type:this.type};this.group&&(a.group=this.group);this.workspaceId&&(a.workspaceId=this.workspaceId);return a}; -Blockly.Events.FinishedLoading.prototype.fromJson=function(a){this.workspaceId=a.workspaceId;this.group=a.group};Blockly.Events.VarBase=function(a){Blockly.Events.VarBase.superClass_.constructor.call(this);this.varId=a.getId();this.workspaceId=a.workspace.id};Blockly.utils.object.inherits(Blockly.Events.VarBase,Blockly.Events.Abstract);Blockly.Events.VarBase.prototype.toJson=function(){var a=Blockly.Events.VarBase.superClass_.toJson.call(this);a.varId=this.varId;return a};Blockly.Events.VarBase.prototype.fromJson=function(a){Blockly.Events.VarBase.superClass_.toJson.call(this);this.varId=a.varId}; -Blockly.Events.VarCreate=function(a){a&&(Blockly.Events.VarCreate.superClass_.constructor.call(this,a),this.varType=a.type,this.varName=a.name)};Blockly.utils.object.inherits(Blockly.Events.VarCreate,Blockly.Events.VarBase);Blockly.Events.VarCreate.prototype.type=Blockly.Events.VAR_CREATE;Blockly.Events.VarCreate.prototype.toJson=function(){var a=Blockly.Events.VarCreate.superClass_.toJson.call(this);a.varType=this.varType;a.varName=this.varName;return a}; -Blockly.Events.VarCreate.prototype.fromJson=function(a){Blockly.Events.VarCreate.superClass_.fromJson.call(this,a);this.varType=a.varType;this.varName=a.varName};Blockly.Events.VarCreate.prototype.run=function(a){var b=this.getEventWorkspace_();a?b.createVariable(this.varName,this.varType,this.varId):b.deleteVariableById(this.varId)};Blockly.Events.VarDelete=function(a){a&&(Blockly.Events.VarDelete.superClass_.constructor.call(this,a),this.varType=a.type,this.varName=a.name)}; -Blockly.utils.object.inherits(Blockly.Events.VarDelete,Blockly.Events.VarBase);Blockly.Events.VarDelete.prototype.type=Blockly.Events.VAR_DELETE;Blockly.Events.VarDelete.prototype.toJson=function(){var a=Blockly.Events.VarDelete.superClass_.toJson.call(this);a.varType=this.varType;a.varName=this.varName;return a};Blockly.Events.VarDelete.prototype.fromJson=function(a){Blockly.Events.VarDelete.superClass_.fromJson.call(this,a);this.varType=a.varType;this.varName=a.varName}; -Blockly.Events.VarDelete.prototype.run=function(a){var b=this.getEventWorkspace_();a?b.deleteVariableById(this.varId):b.createVariable(this.varName,this.varType,this.varId)};Blockly.Events.VarRename=function(a,b){a&&(Blockly.Events.VarRename.superClass_.constructor.call(this,a),this.oldName=a.name,this.newName=b)};Blockly.utils.object.inherits(Blockly.Events.VarRename,Blockly.Events.VarBase);Blockly.Events.VarRename.prototype.type=Blockly.Events.VAR_RENAME; -Blockly.Events.VarRename.prototype.toJson=function(){var a=Blockly.Events.VarRename.superClass_.toJson.call(this);a.oldName=this.oldName;a.newName=this.newName;return a};Blockly.Events.VarRename.prototype.fromJson=function(a){Blockly.Events.VarRename.superClass_.fromJson.call(this,a);this.oldName=a.oldName;this.newName=a.newName};Blockly.Events.VarRename.prototype.run=function(a){var b=this.getEventWorkspace_();a?b.renameVariableById(this.varId,this.newName):b.renameVariableById(this.varId,this.oldName)};Blockly.Xml={};Blockly.Xml.workspaceToDom=function(a,b){var c=Blockly.utils.xml.createElement("xml"),d=Blockly.Xml.variablesToDom(Blockly.Variables.allUsedVarModels(a));d.hasChildNodes()&&c.appendChild(d);var e=a.getTopComments(!0);d=0;for(var f;f=e[d];d++)c.appendChild(f.toXmlWithXY(b));a=a.getTopBlocks(!0);for(d=0;e=a[d];d++)c.appendChild(Blockly.Xml.blockToDomWithXY(e,b));return c}; +b.connection}else c.type==Blockly.PREVIOUS_STATEMENT&&(g=f.nextConnection);g?c.connect(g):console.warn("Can't connect to non-existent input: "+e)}}else console.warn("Can't move non-existent block: "+this.blockId)};Blockly.registry.register(Blockly.registry.Type.EVENT,Blockly.Events.CREATE,Blockly.Events.Create);Blockly.registry.register(Blockly.registry.Type.EVENT,Blockly.Events.DELETE,Blockly.Events.Delete);Blockly.registry.register(Blockly.registry.Type.EVENT,Blockly.Events.CHANGE,Blockly.Events.Change); +Blockly.registry.register(Blockly.registry.Type.EVENT,Blockly.Events.MOVE,Blockly.Events.Move);Blockly.Events.FinishedLoading=function(a){this.isBlank="undefined"==typeof a;this.workspaceId=a?a.id:"";this.group=Blockly.Events.getGroup();this.recordUndo=!1};Blockly.utils.object.inherits(Blockly.Events.FinishedLoading,Blockly.Events.Ui);Blockly.Events.FinishedLoading.prototype.type=Blockly.Events.FINISHED_LOADING;Blockly.Events.FinishedLoading.prototype.toJson=function(){var a={type:this.type};this.group&&(a.group=this.group);this.workspaceId&&(a.workspaceId=this.workspaceId);return a}; +Blockly.Events.FinishedLoading.prototype.fromJson=function(a){this.isBlank=!1;this.workspaceId=a.workspaceId;this.group=a.group};Blockly.registry.register(Blockly.registry.Type.EVENT,Blockly.Events.FINISHED_LOADING,Blockly.Events.FinishedLoading);Blockly.Events.VarBase=function(a){Blockly.Events.VarBase.superClass_.constructor.call(this);this.varId=(this.isBlank="undefined"==typeof a)?"":a.getId();this.workspaceId=this.isBlank?"":a.workspace.id};Blockly.utils.object.inherits(Blockly.Events.VarBase,Blockly.Events.Abstract);Blockly.Events.VarBase.prototype.toJson=function(){var a=Blockly.Events.VarBase.superClass_.toJson.call(this);a.varId=this.varId;return a}; +Blockly.Events.VarBase.prototype.fromJson=function(a){Blockly.Events.VarBase.superClass_.toJson.call(this);this.varId=a.varId};Blockly.Events.VarCreate=function(a){Blockly.Events.VarCreate.superClass_.constructor.call(this,a);a&&(this.varType=a.type,this.varName=a.name)};Blockly.utils.object.inherits(Blockly.Events.VarCreate,Blockly.Events.VarBase);Blockly.Events.VarCreate.prototype.type=Blockly.Events.VAR_CREATE; +Blockly.Events.VarCreate.prototype.toJson=function(){var a=Blockly.Events.VarCreate.superClass_.toJson.call(this);a.varType=this.varType;a.varName=this.varName;return a};Blockly.Events.VarCreate.prototype.fromJson=function(a){Blockly.Events.VarCreate.superClass_.fromJson.call(this,a);this.varType=a.varType;this.varName=a.varName};Blockly.Events.VarCreate.prototype.run=function(a){var b=this.getEventWorkspace_();a?b.createVariable(this.varName,this.varType,this.varId):b.deleteVariableById(this.varId)}; +Blockly.Events.VarDelete=function(a){Blockly.Events.VarDelete.superClass_.constructor.call(this,a);a&&(this.varType=a.type,this.varName=a.name)};Blockly.utils.object.inherits(Blockly.Events.VarDelete,Blockly.Events.VarBase);Blockly.Events.VarDelete.prototype.type=Blockly.Events.VAR_DELETE;Blockly.Events.VarDelete.prototype.toJson=function(){var a=Blockly.Events.VarDelete.superClass_.toJson.call(this);a.varType=this.varType;a.varName=this.varName;return a}; +Blockly.Events.VarDelete.prototype.fromJson=function(a){Blockly.Events.VarDelete.superClass_.fromJson.call(this,a);this.varType=a.varType;this.varName=a.varName};Blockly.Events.VarDelete.prototype.run=function(a){var b=this.getEventWorkspace_();a?b.deleteVariableById(this.varId):b.createVariable(this.varName,this.varType,this.varId)};Blockly.Events.VarRename=function(a,b){Blockly.Events.VarRename.superClass_.constructor.call(this,a);a&&(this.oldName=a.name,this.newName="undefined"==typeof b?"":b)}; +Blockly.utils.object.inherits(Blockly.Events.VarRename,Blockly.Events.VarBase);Blockly.Events.VarRename.prototype.type=Blockly.Events.VAR_RENAME;Blockly.Events.VarRename.prototype.toJson=function(){var a=Blockly.Events.VarRename.superClass_.toJson.call(this);a.oldName=this.oldName;a.newName=this.newName;return a};Blockly.Events.VarRename.prototype.fromJson=function(a){Blockly.Events.VarRename.superClass_.fromJson.call(this,a);this.oldName=a.oldName;this.newName=a.newName}; +Blockly.Events.VarRename.prototype.run=function(a){var b=this.getEventWorkspace_();a?b.renameVariableById(this.varId,this.newName):b.renameVariableById(this.varId,this.oldName)};Blockly.registry.register(Blockly.registry.Type.EVENT,Blockly.Events.VAR_CREATE,Blockly.Events.VarCreate);Blockly.registry.register(Blockly.registry.Type.EVENT,Blockly.Events.VAR_DELETE,Blockly.Events.VarDelete);Blockly.registry.register(Blockly.registry.Type.EVENT,Blockly.Events.VAR_RENAME,Blockly.Events.VarRename);Blockly.Xml={};Blockly.Xml.workspaceToDom=function(a,b){var c=Blockly.utils.xml.createElement("xml"),d=Blockly.Xml.variablesToDom(Blockly.Variables.allUsedVarModels(a));d.hasChildNodes()&&c.appendChild(d);var e=a.getTopComments(!0);d=0;for(var f;f=e[d];d++)c.appendChild(f.toXmlWithXY(b));a=a.getTopBlocks(!0);for(d=0;e=a[d];d++)c.appendChild(Blockly.Xml.blockToDomWithXY(e,b));return c}; Blockly.Xml.variablesToDom=function(a){for(var b=Blockly.utils.xml.createElement("variables"),c=0,d;d=a[c];c++){var e=Blockly.utils.xml.createElement("variable");e.appendChild(Blockly.utils.xml.createTextNode(d.name));d.type&&e.setAttribute("type",d.type);e.id=d.getId();b.appendChild(e)}return b}; Blockly.Xml.blockToDomWithXY=function(a,b){if(a.isInsertionMarker()&&(a=a.getChildren(!1)[0],!a))return new DocumentFragment;var c;a.workspace.RTL&&(c=a.workspace.getWidth());b=Blockly.Xml.blockToDom(a,b);var d=a.getRelativeToSurfaceXY();b.setAttribute("x",Math.round(a.workspace.RTL?c-d.x:d.x));b.setAttribute("y",Math.round(d.y));return b};Blockly.Xml.fieldToDom_=function(a){if(a.isSerializable()){var b=Blockly.utils.xml.createElement("field");b.setAttribute("name",a.name||"");return a.toXml(b)}return null}; Blockly.Xml.allFieldsToDom_=function(a,b){for(var c=0,d;d=a.inputList[c];c++)for(var e=0,f;f=d.fieldRow[e];e++)(f=Blockly.Xml.fieldToDom_(f))&&b.appendChild(f)}; @@ -167,38 +177,37 @@ g.appendChild(Blockly.utils.xml.createTextNode(d));g.setAttribute("pinned",f);g. g=e.connection.getShadowDom();!g||k&&k.isShadow()||h.appendChild(Blockly.Xml.cloneShadow_(g,b));k&&(g=Blockly.Xml.blockToDom(k,b),g.nodeType==Blockly.utils.dom.NodeType.ELEMENT_NODE&&(h.appendChild(g),f=!1));h.setAttribute("name",e.name);f||c.appendChild(h)}}void 0!=a.inputsInline&&a.inputsInline!=a.inputsInlineDefault&&c.setAttribute("inline",a.inputsInline);a.isCollapsed()&&c.setAttribute("collapsed",!0);a.isEnabled()||c.setAttribute("disabled",!0);a.isDeletable()||a.isShadow()||c.setAttribute("deletable", !1);a.isMovable()||a.isShadow()||c.setAttribute("movable",!1);a.isEditable()||c.setAttribute("editable",!1);if(d=a.getNextBlock())g=Blockly.Xml.blockToDom(d,b),g.nodeType==Blockly.utils.dom.NodeType.ELEMENT_NODE&&(h=Blockly.utils.xml.createElement("next"),h.appendChild(g),c.appendChild(h));g=a.nextConnection&&a.nextConnection.getShadowDom();!g||d&&d.isShadow()||h.appendChild(Blockly.Xml.cloneShadow_(g,b));return c}; Blockly.Xml.cloneShadow_=function(a,b){for(var c=a=a.cloneNode(!0),d;c;)if(b&&"shadow"==c.nodeName&&c.removeAttribute("id"),c.firstChild)c=c.firstChild;else{for(;c&&!c.nextSibling;)d=c,c=c.parentNode,d.nodeType==Blockly.utils.dom.NodeType.TEXT_NODE&&""==d.data.trim()&&c.firstChild!=d&&Blockly.utils.dom.removeNode(d);c&&(d=c,c=c.nextSibling,d.nodeType==Blockly.utils.dom.NodeType.TEXT_NODE&&""==d.data.trim()&&Blockly.utils.dom.removeNode(d))}return a}; -Blockly.Xml.domToText=function(a){a=Blockly.utils.xml.domToText(a);var b=/(<[^/](?:[^>]*[^/])?>[^<]*)\n([^<]*<\/)/;do{var c=a;a=a.replace(b,"$1 $2")}while(a!=c);return a.replace(/<(\w+)([^<]*)\/>/g,"<$1$2>")}; -Blockly.Xml.domToPrettyText=function(a){a=Blockly.Xml.domToText(a).split("<");for(var b="",c=1;c"!=d.slice(-2)&&(b+=" ")}a=a.join("\n");a=a.replace(/(<(\w+)\b[^>]*>[^\n]*)\n *<\/\2>/g,"$1");return a.replace(/^\n/,"")}; +Blockly.Xml.domToText=function(a){return Blockly.utils.xml.domToText(a).replace(/<(\w+)([^<]*)\/>/g,"<$1$2>")};Blockly.Xml.domToPrettyText=function(a){a=Blockly.Xml.domToText(a).split("<");for(var b="",c=1;c"!=d.slice(-2)&&(b+=" ")}a=a.join("\n");a=a.replace(/(<(\w+)\b[^>]*>[^\n]*)\n *<\/\2>/g,"$1");return a.replace(/^\n/,"")}; Blockly.Xml.textToDom=function(a){var b=Blockly.utils.xml.textToDomDocument(a);if(!b||!b.documentElement||b.getElementsByTagName("parsererror").length)throw Error("textToDom was unable to parse: "+a);return b.documentElement};Blockly.Xml.clearWorkspaceAndLoadFromXml=function(a,b){b.setResizesEnabled(!1);b.clear();a=Blockly.Xml.domToWorkspace(a,b);b.setResizesEnabled(!0);return a}; Blockly.Xml.domToWorkspace=function(a,b){if(a instanceof Blockly.Workspace){var c=a;a=b;b=c;console.warn("Deprecated call to Blockly.Xml.domToWorkspace, swap the arguments.")}var d;b.RTL&&(d=b.getWidth());c=[];Blockly.utils.dom.startTextWidthCache();var e=Blockly.Events.getGroup();e||Blockly.Events.setGroup(!0);b.setResizesEnabled&&b.setResizesEnabled(!1);var f=!0;try{for(var g=0,h;h=a.childNodes[g];g++){var k=h.nodeName.toLowerCase(),l=h;if("block"==k||"shadow"==k&&!Blockly.Events.recordUndo){var m= Blockly.Xml.domToBlock(l,b);c.push(m.id);var n=l.hasAttribute("x")?parseInt(l.getAttribute("x"),10):10,p=l.hasAttribute("y")?parseInt(l.getAttribute("y"),10):10;isNaN(n)||isNaN(p)||m.moveBy(b.RTL?d-n:n,p);f=!1}else{if("shadow"==k)throw TypeError("Shadow block cannot be a top-level block.");if("comment"==k)b.rendered?Blockly.WorkspaceCommentSvg?Blockly.WorkspaceCommentSvg.fromXml(l,b,d):console.warn("Missing require for Blockly.WorkspaceCommentSvg, ignoring workspace comment."):Blockly.WorkspaceComment? Blockly.WorkspaceComment.fromXml(l,b):console.warn("Missing require for Blockly.WorkspaceComment, ignoring workspace comment.");else if("variables"==k){if(f)Blockly.Xml.domToVariables(l,b);else throw Error("'variables' tag must exist once before block and shadow tag elements in the workspace XML, but it was found in another location.");f=!1}}}}finally{e||Blockly.Events.setGroup(!1),Blockly.utils.dom.stopTextWidthCache()}b.setResizesEnabled&&b.setResizesEnabled(!0);Blockly.Events.fire(new Blockly.Events.FinishedLoading(b)); -return c};Blockly.Xml.appendDomToWorkspace=function(a,b){var c;b.hasOwnProperty("scale")&&(c=b.getBlocksBoundingBox());a=Blockly.Xml.domToWorkspace(a,b);if(c&&c.top!=c.bottom){var d=c.bottom;var e=b.RTL?c.right:c.left;var f=Infinity,g=-Infinity,h=Infinity;for(c=0;cg&&(g=k.x)}d=d-h+10;e=b.RTL?e-g:e-f;for(c=0;cg&&(g=k.x)}d=d-h+10;e=b.RTL?e-g:e-f;for(c=0;c document.");}else a=null;return a};Blockly.Touch={};Blockly.Touch.TOUCH_ENABLED="ontouchstart"in Blockly.utils.global||!!(Blockly.utils.global.document&&document.documentElement&&"ontouchstart"in document.documentElement)||!(!Blockly.utils.global.navigator||!Blockly.utils.global.navigator.maxTouchPoints&&!Blockly.utils.global.navigator.msMaxTouchPoints);Blockly.Touch.touchIdentifier_=null;Blockly.Touch.TOUCH_MAP={}; +Blockly.Options.parseGridOptions_=function(a){a=a.grid||{};var b={};b.spacing=Number(a.spacing)||0;b.colour=a.colour||"#888";b.length=void 0===a.length?1:Number(a.length);b.snap=0=c+this.handleLength_&&(d+= @@ -222,17 +231,17 @@ a.stopPropagation(),a.preventDefault())};Blockly.Scrollbar.prototype.onMouseMove Blockly.Scrollbar.prototype.cleanUp_=function(){Blockly.hideChaff(!0);Blockly.Scrollbar.onMouseUpWrapper_&&(Blockly.unbindEvent_(Blockly.Scrollbar.onMouseUpWrapper_),Blockly.Scrollbar.onMouseUpWrapper_=null);Blockly.Scrollbar.onMouseMoveWrapper_&&(Blockly.unbindEvent_(Blockly.Scrollbar.onMouseMoveWrapper_),Blockly.Scrollbar.onMouseMoveWrapper_=null)}; Blockly.Scrollbar.prototype.constrainHandle_=function(a){return a=0>=a||isNaN(a)||this.scrollViewSize_Blockly.Tooltip.RADIUS_OK&&Blockly.Tooltip.hide()}else Blockly.Tooltip.poisonedElement_!=Blockly.Tooltip.element_&&(clearTimeout(Blockly.Tooltip.showPid_),Blockly.Tooltip.lastX_=a.pageX,Blockly.Tooltip.lastY_=a.pageY,Blockly.Tooltip.showPid_=setTimeout(Blockly.Tooltip.show_, Blockly.Tooltip.HOVER_MS))};Blockly.Tooltip.dispose=function(){Blockly.Tooltip.element_=null;Blockly.Tooltip.poisonedElement_=null;Blockly.Tooltip.hide()};Blockly.Tooltip.hide=function(){Blockly.Tooltip.visible&&(Blockly.Tooltip.visible=!1,Blockly.Tooltip.DIV&&(Blockly.Tooltip.DIV.style.display="none"));Blockly.Tooltip.showPid_&&clearTimeout(Blockly.Tooltip.showPid_)};Blockly.Tooltip.block=function(){Blockly.Tooltip.hide();Blockly.Tooltip.blocked_=!0}; Blockly.Tooltip.unblock=function(){Blockly.Tooltip.blocked_=!1}; -Blockly.Tooltip.show_=function(){if(!Blockly.Tooltip.blocked_&&(Blockly.Tooltip.poisonedElement_=Blockly.Tooltip.element_,Blockly.Tooltip.DIV)){Blockly.Tooltip.DIV.textContent="";for(var a=Blockly.Tooltip.element_.tooltip;"function"==typeof a;)a=a();a=Blockly.utils.string.wrap(a,Blockly.Tooltip.LIMIT);a=a.split("\n");for(var b=0;bc+window.scrollY&&(e-=Blockly.Tooltip.DIV.offsetHeight+2*Blockly.Tooltip.OFFSET_Y);a?d=Math.max(Blockly.Tooltip.MARGINS-window.scrollX, d):d+Blockly.Tooltip.DIV.offsetWidth>b+window.scrollX-2*Blockly.Tooltip.MARGINS&&(d=b-Blockly.Tooltip.DIV.offsetWidth-2*Blockly.Tooltip.MARGINS);Blockly.Tooltip.DIV.style.top=e+"px";Blockly.Tooltip.DIV.style.left=d+"px"}};Blockly.WorkspaceDragSurfaceSvg=function(a){this.container_=a;this.createDom()};Blockly.WorkspaceDragSurfaceSvg.prototype.SVG_=null;Blockly.WorkspaceDragSurfaceSvg.prototype.container_=null; -Blockly.WorkspaceDragSurfaceSvg.prototype.createDom=function(){this.SVG_||(this.SVG_=Blockly.utils.dom.createSvgElement("svg",{xmlns:Blockly.utils.dom.SVG_NS,"xmlns:html":Blockly.utils.dom.HTML_NS,"xmlns:xlink":Blockly.utils.dom.XLINK_NS,version:"1.1","class":"blocklyWsDragSurface blocklyOverflowVisible"},null),this.container_.appendChild(this.SVG_))}; +Blockly.WorkspaceDragSurfaceSvg.prototype.createDom=function(){this.SVG_||(this.SVG_=Blockly.utils.dom.createSvgElement(Blockly.utils.Svg.SVG,{xmlns:Blockly.utils.dom.SVG_NS,"xmlns:html":Blockly.utils.dom.HTML_NS,"xmlns:xlink":Blockly.utils.dom.XLINK_NS,version:"1.1","class":"blocklyWsDragSurface blocklyOverflowVisible"},null),this.container_.appendChild(this.SVG_))}; Blockly.WorkspaceDragSurfaceSvg.prototype.translateSurface=function(a,b){a=a.toFixed(0);b=b.toFixed(0);this.SVG_.style.display="block";Blockly.utils.dom.setCssTransform(this.SVG_,"translate3d("+a+"px, "+b+"px, 0px)")};Blockly.WorkspaceDragSurfaceSvg.prototype.getSurfaceTranslation=function(){return Blockly.utils.getRelativeXY(this.SVG_)}; Blockly.WorkspaceDragSurfaceSvg.prototype.clearAndHide=function(a){if(!a)throw Error("Couldn't clear and hide the drag surface: missing new surface.");var b=this.SVG_.childNodes[0],c=this.SVG_.childNodes[1];if(!(b&&c&&Blockly.utils.dom.hasClass(b,"blocklyBlockCanvas")&&Blockly.utils.dom.hasClass(c,"blocklyBubbleCanvas")))throw Error("Couldn't clear and hide the drag surface. A node was missing.");null!=this.previousSibling_?Blockly.utils.dom.insertAfter(b,this.previousSibling_):a.insertBefore(b,a.firstChild); Blockly.utils.dom.insertAfter(c,b);this.SVG_.style.display="none";if(this.SVG_.childNodes.length)throw Error("Drag surface was not cleared.");Blockly.utils.dom.setCssTransform(this.SVG_,"");this.previousSibling_=null}; @@ -255,27 +264,23 @@ Blockly.ASTNode.prototype.in=function(){switch(this.type_){case Blockly.ASTNode. Blockly.ASTNode.prototype.prev=function(){switch(this.type_){case Blockly.ASTNode.types.STACK:return this.navigateBetweenStacks_(!1);case Blockly.ASTNode.types.FIELD:return this.findPrevForField_();case Blockly.ASTNode.types.INPUT:return this.findPrevForInput_();case Blockly.ASTNode.types.BLOCK:var a=this.location_;return Blockly.ASTNode.createConnectionNode(a.previousConnection||a.outputConnection);case Blockly.ASTNode.types.PREVIOUS:a=this.location_;if((a=a.targetConnection)&&!a.getParentInput())return Blockly.ASTNode.createConnectionNode(a); break;case Blockly.ASTNode.types.NEXT:return a=this.location_,Blockly.ASTNode.createBlockNode(a.getSourceBlock())}return null}; Blockly.ASTNode.prototype.out=function(){switch(this.type_){case Blockly.ASTNode.types.STACK:var a=this.location_,b=a.getRelativeToSurfaceXY();b=new Blockly.utils.Coordinate(b.x,b.y+Blockly.ASTNode.DEFAULT_OFFSET_Y);return Blockly.ASTNode.createWorkspaceNode(a.workspace,b);case Blockly.ASTNode.types.OUTPUT:return a=this.location_,(b=a.targetConnection)?Blockly.ASTNode.createConnectionNode(b):Blockly.ASTNode.createStackNode(a.getSourceBlock());case Blockly.ASTNode.types.FIELD:return Blockly.ASTNode.createBlockNode(this.location_.getSourceBlock()); -case Blockly.ASTNode.types.INPUT:return a=this.location_,Blockly.ASTNode.createBlockNode(a.getSourceBlock());case Blockly.ASTNode.types.BLOCK:return a=this.location_,this.getOutAstNodeForBlock_(a);case Blockly.ASTNode.types.PREVIOUS:return a=this.location_,this.getOutAstNodeForBlock_(a.getSourceBlock());case Blockly.ASTNode.types.NEXT:return a=this.location_,this.getOutAstNodeForBlock_(a.getSourceBlock())}return null};Blockly.Blocks=Object.create(null);Blockly.Connection=function(a,b){this.sourceBlock_=a;this.type=b};Blockly.Connection.CAN_CONNECT=0;Blockly.Connection.REASON_SELF_CONNECTION=1;Blockly.Connection.REASON_WRONG_TYPE=2;Blockly.Connection.REASON_TARGET_NULL=3;Blockly.Connection.REASON_CHECKS_FAILED=4;Blockly.Connection.REASON_DIFFERENT_WORKSPACES=5;Blockly.Connection.REASON_SHADOW_PARENT=6;Blockly.Connection.prototype.targetConnection=null;Blockly.Connection.prototype.disposed=!1;Blockly.Connection.prototype.check_=null; -Blockly.Connection.prototype.shadowDom_=null;Blockly.Connection.prototype.x=0;Blockly.Connection.prototype.y=0; -Blockly.Connection.prototype.connect_=function(a){var b=this,c=b.getSourceBlock(),d=a.getSourceBlock();a.isConnected()&&a.disconnect();if(b.isConnected()){var e=b.targetBlock(),f=b.getShadowDom();b.setShadowDom(null);if(e.isShadow())f=Blockly.Xml.blockToDom(e),e.dispose(!1),e=null;else if(b.type==Blockly.INPUT_VALUE){if(!e.outputConnection)throw Error("Orphan block does not have an output connection.");var g=Blockly.Connection.lastConnectionInRow(d,e);g&&(e.outputConnection.connect(g),e=null)}else if(b.type== -Blockly.NEXT_STATEMENT){if(!e.previousConnection)throw Error("Orphan block does not have a previous connection.");for(g=d;g.nextConnection;){var h=g.getNextBlock();if(h&&!h.isShadow())g=h;else{e.previousConnection.checkType(g.nextConnection)&&(g.nextConnection.connect(e.previousConnection),e=null);break}}}if(e&&(b.disconnect(),Blockly.Events.recordUndo)){var k=Blockly.Events.getGroup();setTimeout(function(){if(e.workspace&&!e.getParent()){Blockly.Events.setGroup(k);if(e.outputConnection)e.outputConnection.onFailedConnect(b); -else if(e.previousConnection)e.previousConnection.onFailedConnect(b);Blockly.Events.setGroup(!1)}},Blockly.BUMP_DELAY)}b.setShadowDom(f)}var l;Blockly.Events.isEnabled()&&(l=new Blockly.Events.BlockMove(d));Blockly.Connection.connectReciprocally_(b,a);d.setParent(c);l&&(l.recordNew(),Blockly.Events.fire(l))};Blockly.Connection.prototype.dispose=function(){if(this.isConnected()){this.setShadowDom(null);var a=this.targetBlock();a.isShadow()?a.dispose(!1):a.unplug()}this.disposed=!0}; -Blockly.Connection.prototype.getSourceBlock=function(){return this.sourceBlock_};Blockly.Connection.prototype.isSuperior=function(){return this.type==Blockly.INPUT_VALUE||this.type==Blockly.NEXT_STATEMENT};Blockly.Connection.prototype.isConnected=function(){return!!this.targetConnection}; -Blockly.Connection.prototype.canConnectWithReason=function(a){if(!a)return Blockly.Connection.REASON_TARGET_NULL;if(this.isSuperior())var b=this.sourceBlock_,c=a.getSourceBlock();else c=this.sourceBlock_,b=a.getSourceBlock();return b&&b==c?Blockly.Connection.REASON_SELF_CONNECTION:a.type!=Blockly.OPPOSITE_TYPE[this.type]?Blockly.Connection.REASON_WRONG_TYPE:b&&c&&b.workspace!==c.workspace?Blockly.Connection.REASON_DIFFERENT_WORKSPACES:this.checkType(a)?b.isShadow()&&!c.isShadow()?Blockly.Connection.REASON_SHADOW_PARENT: -Blockly.Connection.CAN_CONNECT:Blockly.Connection.REASON_CHECKS_FAILED}; -Blockly.Connection.prototype.checkConnection=function(a){switch(this.canConnectWithReason(a)){case Blockly.Connection.CAN_CONNECT:break;case Blockly.Connection.REASON_SELF_CONNECTION:throw Error("Attempted to connect a block to itself.");case Blockly.Connection.REASON_DIFFERENT_WORKSPACES:throw Error("Blocks not on same workspace.");case Blockly.Connection.REASON_WRONG_TYPE:throw Error("Attempt to connect incompatible types.");case Blockly.Connection.REASON_TARGET_NULL:throw Error("Target connection is null."); -case Blockly.Connection.REASON_CHECKS_FAILED:throw Error("Connection checks failed. "+(this+" expected "+this.check_+", found "+a.check_));case Blockly.Connection.REASON_SHADOW_PARENT:throw Error("Connecting non-shadow to shadow block.");default:throw Error("Unknown connection failure: this should never happen!");}}; -Blockly.Connection.prototype.canConnectToPrevious_=function(a){if(this.targetConnection||-1!=Blockly.draggingConnections.indexOf(a))return!1;if(!a.targetConnection)return!0;a=a.targetBlock();return a.isInsertionMarker()?!a.getPreviousBlock():!1}; -Blockly.Connection.prototype.isConnectionAllowed=function(a){if(a.sourceBlock_.isInsertionMarker()||this.canConnectWithReason(a)!=Blockly.Connection.CAN_CONNECT)return!1;switch(a.type){case Blockly.PREVIOUS_STATEMENT:return this.canConnectToPrevious_(a);case Blockly.OUTPUT_VALUE:if(a.isConnected()&&!a.targetBlock().isInsertionMarker()||this.isConnected())return!1;break;case Blockly.INPUT_VALUE:if(a.isConnected()&&!a.targetBlock().isMovable()&&!a.targetBlock().isShadow())return!1;break;case Blockly.NEXT_STATEMENT:if(a.isConnected()&& -!this.sourceBlock_.nextConnection&&!a.targetBlock().isShadow()&&a.targetBlock().nextConnection)return!1;break;default:throw Error("Unknown connection type in isConnectionAllowed");}return-1!=Blockly.draggingConnections.indexOf(a)?!1:!0};Blockly.Connection.prototype.onFailedConnect=function(a){}; -Blockly.Connection.prototype.connect=function(a){if(this.targetConnection!=a){this.checkConnection(a);var b=Blockly.Events.getGroup();b||Blockly.Events.setGroup(!0);this.isSuperior()?this.connect_(a):a.connect_(this);b||Blockly.Events.setGroup(!1)}};Blockly.Connection.connectReciprocally_=function(a,b){if(!a||!b)throw Error("Cannot connect null connections.");a.targetConnection=b;b.targetConnection=a}; -Blockly.Connection.singleConnection_=function(a,b){for(var c=null,d=0;dc)){var d=b.getSvgXY(a.getSvgRoot());a.outputConnection?(d.x+=(a.RTL?3:-3)*c,d.y+=13*c):a.previousConnection&&(d.x+=(a.RTL?-23:23)*c,d.y+=3*c);a=Blockly.utils.dom.createSvgElement("circle",{cx:d.x,cy:d.y,r:0,fill:"none",stroke:"#888","stroke-width":10},b.getParentSvg());Blockly.blockAnimations.connectionUiStep_(a,new Date,c)}}; +Blockly.blockAnimations.connectionUiEffect=function(a){var b=a.workspace,c=b.scale;b.getAudioManager().play("click");if(!(1>c)){var d=b.getSvgXY(a.getSvgRoot());a.outputConnection?(d.x+=(a.RTL?3:-3)*c,d.y+=13*c):a.previousConnection&&(d.x+=(a.RTL?-23:23)*c,d.y+=3*c);a=Blockly.utils.dom.createSvgElement(Blockly.utils.Svg.CIRCLE,{cx:d.x,cy:d.y,r:0,fill:"none",stroke:"#888","stroke-width":10},b.getParentSvg());Blockly.blockAnimations.connectionUiStep_(a,new Date,c)}}; Blockly.blockAnimations.connectionUiStep_=function(a,b,c){var d=(new Date-b)/150;1a.workspace.scale)){var b=a.getHeightWidth().height;b=Math.atan(10/b)/Math.PI*180;a.RTL||(b*=-1);Blockly.blockAnimations.disconnectUiStep_(a.getSvgRoot(),b,new Date)}}; Blockly.blockAnimations.disconnectUiStep_=function(a,b,c){var d=(new Date-c)/200;1b-Blockly.CURRENT_CONNECTION_PREFERENCE)}if(this.localConnection_||this.closestConnection_)console.error("Only one of localConnection_ and closestConnection_ was set."); else return!0}else return!(!this.localConnection_||!this.closestConnection_);console.error("Returning true from shouldUpdatePreviews, but it's not clear why.");return!0};Blockly.InsertionMarkerManager.prototype.getCandidate_=function(a){for(var b=this.getStartRadius_(),c=null,d=null,e=0;ec||b.getSourceBlock().isInsertionMarker())return!1;switch(b.type){case Blockly.PREVIOUS_STATEMENT:return this.canConnectToPrevious_(a,b);case Blockly.OUTPUT_VALUE:if(b.isConnected()&&!b.targetBlock().isInsertionMarker()||a.isConnected())return!1;break;case Blockly.INPUT_VALUE:if(b.isConnected()&&!b.targetBlock().isMovable()&&!b.targetBlock().isShadow())return!1;break;case Blockly.NEXT_STATEMENT:if(b.isConnected()&& +!a.getSourceBlock().nextConnection&&!b.targetBlock().isShadow()&&b.targetBlock().nextConnection)return!1;break;default:return!1}return-1!=Blockly.draggingConnections.indexOf(b)?!1:!0};Blockly.ConnectionChecker.prototype.canConnectToPrevious_=function(a,b){if(a.targetConnection||-1!=Blockly.draggingConnections.indexOf(b))return!1;if(!b.targetConnection)return!0;a=b.targetBlock();return a.isInsertionMarker()?!a.getPreviousBlock():!1}; +Blockly.registry.register(Blockly.registry.Type.CONNECTION_CHECKER,Blockly.registry.DEFAULT,Blockly.ConnectionChecker);Blockly.VariableMap=function(a){this.variableMap_=Object.create(null);this.workspace=a};Blockly.VariableMap.prototype.clear=function(){this.variableMap_=Object.create(null)};Blockly.VariableMap.prototype.renameVariable=function(a,b){var c=this.getVariable(b,a.type),d=this.workspace.getAllBlocks(!1);Blockly.Events.setGroup(!0);try{c&&c.getId()!=a.getId()?this.renameVariableWithConflict_(a,b,c,d):this.renameVariableAndUses_(a,b,d)}finally{Blockly.Events.setGroup(!1)}}; Blockly.VariableMap.prototype.renameVariableById=function(a,b){var c=this.getVariableById(a);if(!c)throw Error("Tried to rename a variable that didn't exist. ID: "+a);this.renameVariable(c,b)};Blockly.VariableMap.prototype.renameVariableAndUses_=function(a,b,c){Blockly.Events.fire(new Blockly.Events.VarRename(a,b));a.name=b;for(b=0;bthis.remainingCapacityOfType(c))return!1;b+=a[c]}return b>this.remainingCapacity()?!1:!0}; -Blockly.Workspace.prototype.hasBlockLimits=function(){return Infinity!=this.options.maxBlocks||!!this.options.maxInstances};Blockly.Workspace.prototype.undo=function(a){var b=a?this.redoStack_:this.undoStack_,c=a?this.undoStack_:this.redoStack_,d=b.pop();if(d){for(var e=[d];b.length&&d.group&&d.group==b[b.length-1].group;)e.push(b.pop());for(b=0;d=e[b];b++)c.push(d);e=Blockly.Events.filter(e,a);Blockly.Events.recordUndo=!1;try{for(b=0;d=e[b];b++)d.run(a)}finally{Blockly.Events.recordUndo=!0}}}; -Blockly.Workspace.prototype.clearUndo=function(){this.undoStack_.length=0;this.redoStack_.length=0;Blockly.Events.clearPendingUndo()};Blockly.Workspace.prototype.addChangeListener=function(a){this.listeners_.push(a);return a};Blockly.Workspace.prototype.removeChangeListener=function(a){Blockly.utils.arrayRemove(this.listeners_,a)}; -Blockly.Workspace.prototype.fireChangeListener=function(a){if(a.recordUndo)for(this.undoStack_.push(a),this.redoStack_.length=0;this.undoStack_.length>this.MAX_UNDO&&0<=this.MAX_UNDO;)this.undoStack_.shift();for(var b=0,c;c=this.listeners_[b];b++)c(a)};Blockly.Workspace.prototype.getBlockById=function(a){return this.blockDB_[a]||null};Blockly.Workspace.prototype.setBlockById=function(a,b){this.blockDB_[a]=b};Blockly.Workspace.prototype.removeBlockById=function(a){delete this.blockDB_[a]}; -Blockly.Workspace.prototype.getCommentById=function(a){return this.commentDB_[a]||null};Blockly.Workspace.prototype.allInputsFilled=function(a){for(var b=this.getTopBlocks(!1),c=0,d;d=b[c];c++)if(!d.allInputsFilled(a))return!1;return!0};Blockly.Workspace.prototype.getPotentialVariableMap=function(){return this.potentialVariableMap_};Blockly.Workspace.prototype.createPotentialVariableMap=function(){this.potentialVariableMap_=new Blockly.VariableMap(this)}; -Blockly.Workspace.prototype.getVariableMap=function(){return this.variableMap_};Blockly.Workspace.prototype.setVariableMap=function(a){this.variableMap_=a};Blockly.Workspace.WorkspaceDB_=Object.create(null);Blockly.Workspace.getById=function(a){return Blockly.Workspace.WorkspaceDB_[a]||null};Blockly.Workspace.getAll=function(){var a=[],b;for(b in Blockly.Workspace.WorkspaceDB_)a.push(Blockly.Workspace.WorkspaceDB_[b]);return a};Blockly.Bubble=function(a,b,c,d,e,f){this.workspace_=a;this.content_=b;this.shape_=c;this.onMouseDownResizeWrapper_=this.onMouseDownBubbleWrapper_=this.moveCallback_=this.resizeCallback_=null;this.disposed=!1;c=Blockly.Bubble.ARROW_ANGLE;this.workspace_.RTL&&(c=-c);this.arrow_radians_=Blockly.utils.math.toRadians(c);a.getBubbleCanvas().appendChild(this.createDom_(b,!(!e||!f)));this.setAnchorLocation(d);e&&f||(a=this.content_.getBBox(),e=a.width+2*Blockly.Bubble.BORDER_WIDTH,f=a.height+2*Blockly.Bubble.BORDER_WIDTH); +Blockly.Workspace.prototype.hasBlockLimits=function(){return Infinity!=this.options.maxBlocks||!!this.options.maxInstances};Blockly.Workspace.prototype.getUndoStack=function(){return this.undoStack_};Blockly.Workspace.prototype.getRedoStack=function(){return this.redoStack_}; +Blockly.Workspace.prototype.undo=function(a){var b=a?this.redoStack_:this.undoStack_,c=a?this.undoStack_:this.redoStack_,d=b.pop();if(d){for(var e=[d];b.length&&d.group&&d.group==b[b.length-1].group;)e.push(b.pop());for(b=0;d=e[b];b++)c.push(d);e=Blockly.Events.filter(e,a);Blockly.Events.recordUndo=!1;try{for(b=0;d=e[b];b++)d.run(a)}finally{Blockly.Events.recordUndo=!0}}};Blockly.Workspace.prototype.clearUndo=function(){this.undoStack_.length=0;this.redoStack_.length=0;Blockly.Events.clearPendingUndo()}; +Blockly.Workspace.prototype.addChangeListener=function(a){this.listeners_.push(a);return a};Blockly.Workspace.prototype.removeChangeListener=function(a){Blockly.utils.arrayRemove(this.listeners_,a)};Blockly.Workspace.prototype.fireChangeListener=function(a){if(a.recordUndo)for(this.undoStack_.push(a),this.redoStack_.length=0;this.undoStack_.length>this.MAX_UNDO&&0<=this.MAX_UNDO;)this.undoStack_.shift();for(var b=0,c;c=this.listeners_[b];b++)c(a)}; +Blockly.Workspace.prototype.getBlockById=function(a){return this.blockDB_[a]||null};Blockly.Workspace.prototype.setBlockById=function(a,b){this.blockDB_[a]=b};Blockly.Workspace.prototype.removeBlockById=function(a){delete this.blockDB_[a]};Blockly.Workspace.prototype.getCommentById=function(a){return this.commentDB_[a]||null};Blockly.Workspace.prototype.allInputsFilled=function(a){for(var b=this.getTopBlocks(!1),c=0,d;d=b[c];c++)if(!d.allInputsFilled(a))return!1;return!0}; +Blockly.Workspace.prototype.getPotentialVariableMap=function(){return this.potentialVariableMap_};Blockly.Workspace.prototype.createPotentialVariableMap=function(){this.potentialVariableMap_=new Blockly.VariableMap(this)};Blockly.Workspace.prototype.getVariableMap=function(){return this.variableMap_};Blockly.Workspace.prototype.setVariableMap=function(a){this.variableMap_=a};Blockly.Workspace.WorkspaceDB_=Object.create(null); +Blockly.Workspace.getById=function(a){return Blockly.Workspace.WorkspaceDB_[a]||null};Blockly.Workspace.getAll=function(){var a=[],b;for(b in Blockly.Workspace.WorkspaceDB_)a.push(Blockly.Workspace.WorkspaceDB_[b]);return a};Blockly.Bubble=function(a,b,c,d,e,f){this.workspace_=a;this.content_=b;this.shape_=c;this.onMouseDownResizeWrapper_=this.onMouseDownBubbleWrapper_=this.moveCallback_=this.resizeCallback_=null;this.disposed=!1;c=Blockly.Bubble.ARROW_ANGLE;this.workspace_.RTL&&(c=-c);this.arrow_radians_=Blockly.utils.math.toRadians(c);a.getBubbleCanvas().appendChild(this.createDom_(b,!(!e||!f)));this.setAnchorLocation(d);e&&f||(a=this.content_.getBBox(),e=a.width+2*Blockly.Bubble.BORDER_WIDTH,f=a.height+2*Blockly.Bubble.BORDER_WIDTH); this.setBubbleSize(e,f);this.positionBubble_();this.renderArrow_();this.rendered_=!0};Blockly.Bubble.BORDER_WIDTH=6;Blockly.Bubble.ARROW_THICKNESS=5;Blockly.Bubble.ARROW_ANGLE=20;Blockly.Bubble.ARROW_BEND=4;Blockly.Bubble.ANCHOR_RADIUS=8;Blockly.Bubble.onMouseUpWrapper_=null;Blockly.Bubble.onMouseMoveWrapper_=null; Blockly.Bubble.unbindDragEvents_=function(){Blockly.Bubble.onMouseUpWrapper_&&(Blockly.unbindEvent_(Blockly.Bubble.onMouseUpWrapper_),Blockly.Bubble.onMouseUpWrapper_=null);Blockly.Bubble.onMouseMoveWrapper_&&(Blockly.unbindEvent_(Blockly.Bubble.onMouseMoveWrapper_),Blockly.Bubble.onMouseMoveWrapper_=null)};Blockly.Bubble.bubbleMouseUp_=function(a){Blockly.Touch.clearTouchIdentifier();Blockly.Bubble.unbindDragEvents_()};Blockly.Bubble.prototype.rendered_=!1;Blockly.Bubble.prototype.anchorXY_=null; Blockly.Bubble.prototype.relativeLeft_=0;Blockly.Bubble.prototype.relativeTop_=0;Blockly.Bubble.prototype.width_=0;Blockly.Bubble.prototype.height_=0;Blockly.Bubble.prototype.autoLayout_=!0; -Blockly.Bubble.prototype.createDom_=function(a,b){this.bubbleGroup_=Blockly.utils.dom.createSvgElement("g",{},null);var c={filter:"url(#"+this.workspace_.getRenderer().getConstants().embossFilterId+")"};Blockly.utils.userAgent.JAVA_FX&&(c={});c=Blockly.utils.dom.createSvgElement("g",c,this.bubbleGroup_);this.bubbleArrow_=Blockly.utils.dom.createSvgElement("path",{},c);this.bubbleBack_=Blockly.utils.dom.createSvgElement("rect",{"class":"blocklyDraggable",x:0,y:0,rx:Blockly.Bubble.BORDER_WIDTH,ry:Blockly.Bubble.BORDER_WIDTH}, -c);b?(this.resizeGroup_=Blockly.utils.dom.createSvgElement("g",{"class":this.workspace_.RTL?"blocklyResizeSW":"blocklyResizeSE"},this.bubbleGroup_),b=2*Blockly.Bubble.BORDER_WIDTH,Blockly.utils.dom.createSvgElement("polygon",{points:"0,x x,x x,0".replace(/x/g,b.toString())},this.resizeGroup_),Blockly.utils.dom.createSvgElement("line",{"class":"blocklyResizeLine",x1:b/3,y1:b-1,x2:b-1,y2:b/3},this.resizeGroup_),Blockly.utils.dom.createSvgElement("line",{"class":"blocklyResizeLine",x1:2*b/3,y1:b-1,x2:b- -1,y2:2*b/3},this.resizeGroup_)):this.resizeGroup_=null;this.workspace_.options.readOnly||(this.onMouseDownBubbleWrapper_=Blockly.bindEventWithChecks_(this.bubbleBack_,"mousedown",this,this.bubbleMouseDown_),this.resizeGroup_&&(this.onMouseDownResizeWrapper_=Blockly.bindEventWithChecks_(this.resizeGroup_,"mousedown",this,this.resizeMouseDown_)));this.bubbleGroup_.appendChild(a);return this.bubbleGroup_};Blockly.Bubble.prototype.getSvgRoot=function(){return this.bubbleGroup_}; -Blockly.Bubble.prototype.setSvgId=function(a){this.bubbleGroup_.dataset&&(this.bubbleGroup_.dataset.blockId=a)};Blockly.Bubble.prototype.bubbleMouseDown_=function(a){var b=this.workspace_.getGesture(a);b&&b.handleBubbleStart(a,this)};Blockly.Bubble.prototype.showContextMenu=function(a){};Blockly.Bubble.prototype.isDeletable=function(){return!1}; +Blockly.Bubble.prototype.createDom_=function(a,b){this.bubbleGroup_=Blockly.utils.dom.createSvgElement(Blockly.utils.Svg.G,{},null);var c={filter:"url(#"+this.workspace_.getRenderer().getConstants().embossFilterId+")"};Blockly.utils.userAgent.JAVA_FX&&(c={});c=Blockly.utils.dom.createSvgElement(Blockly.utils.Svg.G,c,this.bubbleGroup_);this.bubbleArrow_=Blockly.utils.dom.createSvgElement(Blockly.utils.Svg.PATH,{},c);this.bubbleBack_=Blockly.utils.dom.createSvgElement(Blockly.utils.Svg.RECT,{"class":"blocklyDraggable", +x:0,y:0,rx:Blockly.Bubble.BORDER_WIDTH,ry:Blockly.Bubble.BORDER_WIDTH},c);b?(this.resizeGroup_=Blockly.utils.dom.createSvgElement(Blockly.utils.Svg.G,{"class":this.workspace_.RTL?"blocklyResizeSW":"blocklyResizeSE"},this.bubbleGroup_),b=2*Blockly.Bubble.BORDER_WIDTH,Blockly.utils.dom.createSvgElement(Blockly.utils.Svg.POLYGON,{points:"0,x x,x x,0".replace(/x/g,b.toString())},this.resizeGroup_),Blockly.utils.dom.createSvgElement(Blockly.utils.Svg.LINE,{"class":"blocklyResizeLine",x1:b/3,y1:b-1,x2:b- +1,y2:b/3},this.resizeGroup_),Blockly.utils.dom.createSvgElement(Blockly.utils.Svg.LINE,{"class":"blocklyResizeLine",x1:2*b/3,y1:b-1,x2:b-1,y2:2*b/3},this.resizeGroup_)):this.resizeGroup_=null;this.workspace_.options.readOnly||(this.onMouseDownBubbleWrapper_=Blockly.bindEventWithChecks_(this.bubbleBack_,"mousedown",this,this.bubbleMouseDown_),this.resizeGroup_&&(this.onMouseDownResizeWrapper_=Blockly.bindEventWithChecks_(this.resizeGroup_,"mousedown",this,this.resizeMouseDown_)));this.bubbleGroup_.appendChild(a); +return this.bubbleGroup_};Blockly.Bubble.prototype.getSvgRoot=function(){return this.bubbleGroup_};Blockly.Bubble.prototype.setSvgId=function(a){this.bubbleGroup_.dataset&&(this.bubbleGroup_.dataset.blockId=a)};Blockly.Bubble.prototype.bubbleMouseDown_=function(a){var b=this.workspace_.getGesture(a);b&&b.handleBubbleStart(a,this)};Blockly.Bubble.prototype.showContextMenu=function(a){};Blockly.Bubble.prototype.isDeletable=function(){return!1};Blockly.Bubble.prototype.setDeleteStyle=function(a){}; Blockly.Bubble.prototype.resizeMouseDown_=function(a){this.promote();Blockly.Bubble.unbindDragEvents_();Blockly.utils.isRightButton(a)||(this.workspace_.startDrag(a,new Blockly.utils.Coordinate(this.workspace_.RTL?-this.width_:this.width_,this.height_)),Blockly.Bubble.onMouseUpWrapper_=Blockly.bindEventWithChecks_(document,"mouseup",this,Blockly.Bubble.bubbleMouseUp_),Blockly.Bubble.onMouseMoveWrapper_=Blockly.bindEventWithChecks_(document,"mousemove",this,this.resizeMouseMove_),Blockly.hideChaff()); a.stopPropagation()};Blockly.Bubble.prototype.resizeMouseMove_=function(a){this.autoLayout_=!1;a=this.workspace_.moveDrag(a);this.setBubbleSize(this.workspace_.RTL?-a.x:a.x,a.y);this.workspace_.RTL&&this.positionBubble_()};Blockly.Bubble.prototype.registerResizeEvent=function(a){this.resizeCallback_=a};Blockly.Bubble.prototype.registerMoveEvent=function(a){this.moveCallback_=a}; Blockly.Bubble.prototype.promote=function(){var a=this.bubbleGroup_.parentNode;return a.lastChild!==this.bubbleGroup_?(a.appendChild(this.bubbleGroup_),!0):!1};Blockly.Bubble.prototype.setAnchorLocation=function(a){this.anchorXY_=a;this.rendered_&&this.positionBubble_()}; @@ -377,27 +390,28 @@ Blockly.Bubble.prototype.renderArrow_=function(){var a=[],b=this.width_/2,c=this m*d;e=c+m*e;m=b+h*l;var n=c+h*k;b-=h*l;c-=h*k;k=g+this.arrow_radians_;k>2*Math.PI&&(k-=2*Math.PI);g=Math.sin(k)*f/Blockly.Bubble.ARROW_BEND;f=Math.cos(k)*f/Blockly.Bubble.ARROW_BEND;a.push("M"+m+","+n);a.push("C"+(m+f)+","+(n+g)+" "+d+","+e+" "+d+","+e);a.push("C"+d+","+e+" "+(b+f)+","+(c+g)+" "+b+","+c)}a.push("z");this.bubbleArrow_.setAttribute("d",a.join(" "))};Blockly.Bubble.prototype.setColour=function(a){this.bubbleBack_.setAttribute("fill",a);this.bubbleArrow_.setAttribute("fill",a)}; Blockly.Bubble.prototype.dispose=function(){this.onMouseDownBubbleWrapper_&&Blockly.unbindEvent_(this.onMouseDownBubbleWrapper_);this.onMouseDownResizeWrapper_&&Blockly.unbindEvent_(this.onMouseDownResizeWrapper_);Blockly.Bubble.unbindDragEvents_();Blockly.utils.dom.removeNode(this.bubbleGroup_);this.disposed=!0}; Blockly.Bubble.prototype.moveDuringDrag=function(a,b){a?a.translateSurface(b.x,b.y):this.moveTo(b.x,b.y);this.relativeLeft_=this.workspace_.RTL?this.anchorXY_.x-b.x-this.width_:b.x-this.anchorXY_.x;this.relativeTop_=b.y-this.anchorXY_.y;this.renderArrow_()};Blockly.Bubble.prototype.getRelativeToSurfaceXY=function(){return new Blockly.utils.Coordinate(this.workspace_.RTL?-this.relativeLeft_+this.anchorXY_.x-this.width_:this.anchorXY_.x+this.relativeLeft_,this.anchorXY_.y+this.relativeTop_)}; -Blockly.Bubble.prototype.setAutoLayout=function(a){this.autoLayout_=a};Blockly.Events.CommentBase=function(a){this.commentId=a.id;this.workspaceId=a.workspace.id;this.group=Blockly.Events.getGroup();this.recordUndo=Blockly.Events.recordUndo};Blockly.utils.object.inherits(Blockly.Events.CommentBase,Blockly.Events.Abstract);Blockly.Events.CommentBase.prototype.toJson=function(){var a=Blockly.Events.CommentBase.superClass_.toJson.call(this);this.commentId&&(a.commentId=this.commentId);return a}; -Blockly.Events.CommentBase.prototype.fromJson=function(a){Blockly.Events.CommentBase.superClass_.fromJson.call(this,a);this.commentId=a.commentId};Blockly.Events.CommentChange=function(a,b,c){a&&(Blockly.Events.CommentChange.superClass_.constructor.call(this,a),this.oldContents_=b,this.newContents_=c)};Blockly.utils.object.inherits(Blockly.Events.CommentChange,Blockly.Events.CommentBase);Blockly.Events.CommentChange.prototype.type=Blockly.Events.COMMENT_CHANGE; +Blockly.Bubble.prototype.setAutoLayout=function(a){this.autoLayout_=a};Blockly.Events.CommentBase=function(a){this.commentId=(this.isBlank="undefined"==typeof a)?"":a.id;this.workspaceId=this.isBlank?"":a.workspace.id;this.group=Blockly.Events.getGroup();this.recordUndo=Blockly.Events.recordUndo};Blockly.utils.object.inherits(Blockly.Events.CommentBase,Blockly.Events.Abstract);Blockly.Events.CommentBase.prototype.toJson=function(){var a=Blockly.Events.CommentBase.superClass_.toJson.call(this);this.commentId&&(a.commentId=this.commentId);return a}; +Blockly.Events.CommentBase.prototype.fromJson=function(a){Blockly.Events.CommentBase.superClass_.fromJson.call(this,a);this.commentId=a.commentId};Blockly.Events.CommentChange=function(a,b,c){Blockly.Events.CommentChange.superClass_.constructor.call(this,a);a&&(this.oldContents_="undefined"==typeof b?"":b,this.newContents_="undefined"==typeof c?"":c)};Blockly.utils.object.inherits(Blockly.Events.CommentChange,Blockly.Events.CommentBase);Blockly.Events.CommentChange.prototype.type=Blockly.Events.COMMENT_CHANGE; Blockly.Events.CommentChange.prototype.toJson=function(){var a=Blockly.Events.CommentChange.superClass_.toJson.call(this);a.newContents=this.newContents_;return a};Blockly.Events.CommentChange.prototype.fromJson=function(a){Blockly.Events.CommentChange.superClass_.fromJson.call(this,a);this.newContents_=a.newValue};Blockly.Events.CommentChange.prototype.isNull=function(){return this.oldContents_==this.newContents_}; -Blockly.Events.CommentChange.prototype.run=function(a){var b=this.getEventWorkspace_().getCommentById(this.commentId);b?b.setContent(a?this.newContents_:this.oldContents_):console.warn("Can't change non-existent comment: "+this.commentId)};Blockly.Events.CommentCreate=function(a){a&&(Blockly.Events.CommentCreate.superClass_.constructor.call(this,a),this.xml=a.toXmlWithXY())};Blockly.utils.object.inherits(Blockly.Events.CommentCreate,Blockly.Events.CommentBase); +Blockly.Events.CommentChange.prototype.run=function(a){var b=this.getEventWorkspace_().getCommentById(this.commentId);b?b.setContent(a?this.newContents_:this.oldContents_):console.warn("Can't change non-existent comment: "+this.commentId)};Blockly.Events.CommentCreate=function(a){Blockly.Events.CommentCreate.superClass_.constructor.call(this,a);a&&(this.xml=a.toXmlWithXY())};Blockly.utils.object.inherits(Blockly.Events.CommentCreate,Blockly.Events.CommentBase); Blockly.Events.CommentCreate.prototype.type=Blockly.Events.COMMENT_CREATE;Blockly.Events.CommentCreate.prototype.toJson=function(){var a=Blockly.Events.CommentCreate.superClass_.toJson.call(this);a.xml=Blockly.Xml.domToText(this.xml);return a};Blockly.Events.CommentCreate.prototype.fromJson=function(a){Blockly.Events.CommentCreate.superClass_.fromJson.call(this,a);this.xml=Blockly.Xml.textToDom(a.xml)}; Blockly.Events.CommentCreate.prototype.run=function(a){Blockly.Events.CommentCreateDeleteHelper(this,a)};Blockly.Events.CommentCreateDeleteHelper=function(a,b){var c=a.getEventWorkspace_();b?(b=Blockly.utils.xml.createElement("xml"),b.appendChild(a.xml),Blockly.Xml.domToWorkspace(b,c)):(c=c.getCommentById(a.commentId))?c.dispose(!1,!1):console.warn("Can't uncreate non-existent comment: "+a.commentId)}; -Blockly.Events.CommentDelete=function(a){a&&(Blockly.Events.CommentDelete.superClass_.constructor.call(this,a),this.xml=a.toXmlWithXY())};Blockly.utils.object.inherits(Blockly.Events.CommentDelete,Blockly.Events.CommentBase);Blockly.Events.CommentDelete.prototype.type=Blockly.Events.COMMENT_DELETE;Blockly.Events.CommentDelete.prototype.toJson=function(){return Blockly.Events.CommentDelete.superClass_.toJson.call(this)}; -Blockly.Events.CommentDelete.prototype.fromJson=function(a){Blockly.Events.CommentDelete.superClass_.fromJson.call(this,a)};Blockly.Events.CommentDelete.prototype.run=function(a){Blockly.Events.CommentCreateDeleteHelper(this,!a)};Blockly.Events.CommentMove=function(a){a&&(Blockly.Events.CommentMove.superClass_.constructor.call(this,a),this.comment_=a,this.oldCoordinate_=a.getXY(),this.newCoordinate_=null)};Blockly.utils.object.inherits(Blockly.Events.CommentMove,Blockly.Events.CommentBase); +Blockly.Events.CommentDelete=function(a){Blockly.Events.CommentDelete.superClass_.constructor.call(this,a);a&&(this.xml=a.toXmlWithXY())};Blockly.utils.object.inherits(Blockly.Events.CommentDelete,Blockly.Events.CommentBase);Blockly.Events.CommentDelete.prototype.type=Blockly.Events.COMMENT_DELETE;Blockly.Events.CommentDelete.prototype.toJson=function(){return Blockly.Events.CommentDelete.superClass_.toJson.call(this)}; +Blockly.Events.CommentDelete.prototype.fromJson=function(a){Blockly.Events.CommentDelete.superClass_.fromJson.call(this,a)};Blockly.Events.CommentDelete.prototype.run=function(a){Blockly.Events.CommentCreateDeleteHelper(this,!a)};Blockly.Events.CommentMove=function(a){Blockly.Events.CommentMove.superClass_.constructor.call(this,a);a&&(this.comment_=a,this.oldCoordinate_=a.getXY(),this.newCoordinate_=null)};Blockly.utils.object.inherits(Blockly.Events.CommentMove,Blockly.Events.CommentBase); Blockly.Events.CommentMove.prototype.recordNew=function(){if(!this.comment_)throw Error("Tried to record the new position of a comment on the same event twice.");this.newCoordinate_=this.comment_.getXY();this.comment_=null};Blockly.Events.CommentMove.prototype.type=Blockly.Events.COMMENT_MOVE;Blockly.Events.CommentMove.prototype.setOldCoordinate=function(a){this.oldCoordinate_=a}; Blockly.Events.CommentMove.prototype.toJson=function(){var a=Blockly.Events.CommentMove.superClass_.toJson.call(this);this.newCoordinate_&&(a.newCoordinate=Math.round(this.newCoordinate_.x)+","+Math.round(this.newCoordinate_.y));return a};Blockly.Events.CommentMove.prototype.fromJson=function(a){Blockly.Events.CommentMove.superClass_.fromJson.call(this,a);a.newCoordinate&&(a=a.newCoordinate.split(","),this.newCoordinate_=new Blockly.utils.Coordinate(Number(a[0]),Number(a[1])))}; -Blockly.Events.CommentMove.prototype.isNull=function(){return Blockly.utils.Coordinate.equals(this.oldCoordinate_,this.newCoordinate_)};Blockly.Events.CommentMove.prototype.run=function(a){var b=this.getEventWorkspace_().getCommentById(this.commentId);if(b){a=a?this.newCoordinate_:this.oldCoordinate_;var c=b.getXY();b.moveBy(a.x-c.x,a.y-c.y)}else console.warn("Can't move non-existent comment: "+this.commentId)};Blockly.BubbleDragger=function(a,b){this.draggingBubble_=a;this.workspace_=b;this.deleteArea_=null;this.wouldDeleteBubble_=!1;this.startXY_=this.draggingBubble_.getRelativeToSurfaceXY();this.dragSurface_=Blockly.utils.is3dSupported()&&b.getBlockDragSurface()?b.getBlockDragSurface():null};Blockly.BubbleDragger.prototype.dispose=function(){this.dragSurface_=this.workspace_=this.draggingBubble_=null}; +Blockly.Events.CommentMove.prototype.isNull=function(){return Blockly.utils.Coordinate.equals(this.oldCoordinate_,this.newCoordinate_)};Blockly.Events.CommentMove.prototype.run=function(a){var b=this.getEventWorkspace_().getCommentById(this.commentId);if(b){a=a?this.newCoordinate_:this.oldCoordinate_;var c=b.getXY();b.moveBy(a.x-c.x,a.y-c.y)}else console.warn("Can't move non-existent comment: "+this.commentId)};Blockly.registry.register(Blockly.registry.Type.EVENT,Blockly.Events.COMMENT_CREATE,Blockly.Events.CommentCreate); +Blockly.registry.register(Blockly.registry.Type.EVENT,Blockly.Events.COMMENT_CHANGE,Blockly.Events.CommentChange);Blockly.registry.register(Blockly.registry.Type.EVENT,Blockly.Events.COMMENT_MOVE,Blockly.Events.CommentMove);Blockly.registry.register(Blockly.registry.Type.EVENT,Blockly.Events.COMMENT_DELETE,Blockly.Events.CommentDelete);Blockly.BubbleDragger=function(a,b){this.draggingBubble_=a;this.workspace_=b;this.deleteArea_=null;this.wouldDeleteBubble_=!1;this.startXY_=this.draggingBubble_.getRelativeToSurfaceXY();this.dragSurface_=Blockly.utils.is3dSupported()&&b.getBlockDragSurface()?b.getBlockDragSurface():null};Blockly.BubbleDragger.prototype.dispose=function(){this.dragSurface_=this.workspace_=this.draggingBubble_=null}; Blockly.BubbleDragger.prototype.startBubbleDrag=function(){Blockly.Events.getGroup()||Blockly.Events.setGroup(!0);this.workspace_.setResizesEnabled(!1);this.draggingBubble_.setAutoLayout(!1);this.dragSurface_&&this.moveToDragSurface_();this.draggingBubble_.setDragging&&this.draggingBubble_.setDragging(!0);var a=this.workspace_.getToolbox();if(a&&"function"==typeof a.addStyle){var b=this.draggingBubble_.isDeletable()?"blocklyToolboxDelete":"blocklyToolboxGrab";a.addStyle(b)}}; Blockly.BubbleDragger.prototype.dragBubble=function(a,b){b=this.pixelsToWorkspaceUnits_(b);b=Blockly.utils.Coordinate.sum(this.startXY_,b);this.draggingBubble_.moveDuringDrag(this.dragSurface_,b);this.draggingBubble_.isDeletable()&&(this.deleteArea_=this.workspace_.isDeleteArea(a),this.updateCursorDuringBubbleDrag_())}; -Blockly.BubbleDragger.prototype.maybeDeleteBubble_=function(){var a=this.workspace_.trashcan;this.wouldDeleteBubble_?(a&&setTimeout(a.close.bind(a),100),this.fireMoveEvent_(),this.draggingBubble_.dispose(!1,!0)):a&&a.close();return this.wouldDeleteBubble_}; -Blockly.BubbleDragger.prototype.updateCursorDuringBubbleDrag_=function(){this.wouldDeleteBubble_=this.deleteArea_!=Blockly.DELETE_AREA_NONE;var a=this.workspace_.trashcan;this.wouldDeleteBubble_?(this.draggingBubble_.setDeleteStyle(!0),this.deleteArea_==Blockly.DELETE_AREA_TRASH&&a&&a.setOpen(!0)):(this.draggingBubble_.setDeleteStyle(!1),a&&a.setOpen(!1))}; +Blockly.BubbleDragger.prototype.maybeDeleteBubble_=function(){var a=this.workspace_.trashcan;this.wouldDeleteBubble_?(a&&setTimeout(a.closeLid.bind(a),100),this.fireMoveEvent_(),this.draggingBubble_.dispose(!1,!0)):a&&a.closeLid();return this.wouldDeleteBubble_}; +Blockly.BubbleDragger.prototype.updateCursorDuringBubbleDrag_=function(){this.wouldDeleteBubble_=this.deleteArea_!=Blockly.DELETE_AREA_NONE;var a=this.workspace_.trashcan;this.wouldDeleteBubble_?(this.draggingBubble_.setDeleteStyle(!0),this.deleteArea_==Blockly.DELETE_AREA_TRASH&&a&&a.setLidOpen(!0)):(this.draggingBubble_.setDeleteStyle(!1),a&&a.setLidOpen(!1))}; Blockly.BubbleDragger.prototype.endBubbleDrag=function(a,b){this.dragBubble(a,b);a=this.pixelsToWorkspaceUnits_(b);a=Blockly.utils.Coordinate.sum(this.startXY_,a);this.draggingBubble_.moveTo(a.x,a.y);this.maybeDeleteBubble_()||(this.dragSurface_&&this.dragSurface_.clearAndHide(this.workspace_.getBubbleCanvas()),this.draggingBubble_.setDragging&&this.draggingBubble_.setDragging(!1),this.fireMoveEvent_());this.workspace_.setResizesEnabled(!0);(a=this.workspace_.getToolbox())&&"function"==typeof a.removeStyle&& (b=this.draggingBubble_.isDeletable()?"blocklyToolboxDelete":"blocklyToolboxGrab",a.removeStyle(b));Blockly.Events.setGroup(!1)};Blockly.BubbleDragger.prototype.fireMoveEvent_=function(){if(this.draggingBubble_.isComment){var a=new Blockly.Events.CommentMove(this.draggingBubble_);a.setOldCoordinate(this.startXY_);a.recordNew();Blockly.Events.fire(a)}}; Blockly.BubbleDragger.prototype.pixelsToWorkspaceUnits_=function(a){a=new Blockly.utils.Coordinate(a.x/this.workspace_.scale,a.y/this.workspace_.scale);this.workspace_.isMutator&&a.scale(1/this.workspace_.options.parentWorkspace.scale);return a};Blockly.BubbleDragger.prototype.moveToDragSurface_=function(){this.draggingBubble_.moveTo(0,0);this.dragSurface_.translateSurface(this.startXY_.x,this.startXY_.y);this.dragSurface_.setBlocksAndShow(this.draggingBubble_.getSvgRoot())};Blockly.WorkspaceDragger=function(a){this.workspace_=a;this.startScrollXY_=new Blockly.utils.Coordinate(a.scrollX,a.scrollY)};Blockly.WorkspaceDragger.prototype.dispose=function(){this.workspace_=null};Blockly.WorkspaceDragger.prototype.startDrag=function(){Blockly.selected&&Blockly.selected.unselect();this.workspace_.setupDragSurface()};Blockly.WorkspaceDragger.prototype.endDrag=function(a){this.drag(a);this.workspace_.resetDragSurface()}; Blockly.WorkspaceDragger.prototype.drag=function(a){a=Blockly.utils.Coordinate.sum(this.startScrollXY_,a);this.workspace_.scroll(a.x,a.y)};Blockly.FlyoutDragger=function(a){Blockly.FlyoutDragger.superClass_.constructor.call(this,a.getWorkspace());this.scrollbar_=a.scrollbar;this.horizontalLayout_=a.horizontalLayout};Blockly.utils.object.inherits(Blockly.FlyoutDragger,Blockly.WorkspaceDragger);Blockly.FlyoutDragger.prototype.drag=function(a){a=Blockly.utils.Coordinate.sum(this.startScrollXY_,a);this.horizontalLayout_?this.scrollbar_.set(-a.x):this.scrollbar_.set(-a.y)};Blockly.Action=function(a,b){this.name=a;this.desc=b};Blockly.navigation={};Blockly.navigation.loggingCallback=null;Blockly.navigation.STATE_FLYOUT=1;Blockly.navigation.STATE_WS=2;Blockly.navigation.STATE_TOOLBOX=3;Blockly.navigation.WS_MOVE_DISTANCE=40;Blockly.navigation.currentState_=Blockly.navigation.STATE_WS; Blockly.navigation.actionNames={PREVIOUS:"previous",NEXT:"next",IN:"in",OUT:"out",INSERT:"insert",MARK:"mark",DISCONNECT:"disconnect",TOOLBOX:"toolbox",EXIT:"exit",TOGGLE_KEYBOARD_NAV:"toggle_keyboard_nav",MOVE_WS_CURSOR_UP:"move workspace cursor up",MOVE_WS_CURSOR_DOWN:"move workspace cursor down",MOVE_WS_CURSOR_LEFT:"move workspace cursor left",MOVE_WS_CURSOR_RIGHT:"move workspace cursor right"};Blockly.navigation.MARKER_NAME="local_marker_1";Blockly.navigation.getMarker=function(){return Blockly.navigation.getNavigationWorkspace().getMarker(Blockly.navigation.MARKER_NAME)}; -Blockly.navigation.getNavigationWorkspace=function(){return Blockly.getMainWorkspace()};Blockly.navigation.focusToolbox_=function(){var a=Blockly.navigation.getNavigationWorkspace().getToolbox();a&&(Blockly.navigation.currentState_=Blockly.navigation.STATE_TOOLBOX,Blockly.navigation.resetFlyout_(!1),Blockly.navigation.getMarker().getCurNode()||Blockly.navigation.markAtCursor_(),a.selectFirstCategory())}; +Blockly.navigation.getNavigationWorkspace=function(){return Blockly.getMainWorkspace()};Blockly.navigation.focusToolbox_=function(){var a=Blockly.navigation.getNavigationWorkspace().getToolbox();a&&(Blockly.navigation.currentState_=Blockly.navigation.STATE_TOOLBOX,Blockly.navigation.resetFlyout_(!1),Blockly.navigation.getMarker().getCurNode()||Blockly.navigation.markAtCursor_(),a.getSelectedItem()||a.selectItemByPosition(0))}; Blockly.navigation.focusFlyout_=function(){Blockly.navigation.currentState_=Blockly.navigation.STATE_FLYOUT;var a=Blockly.navigation.getNavigationWorkspace();var b=a.getToolbox();a=b?b.getFlyout():a.getFlyout();Blockly.navigation.getMarker().getCurNode()||Blockly.navigation.markAtCursor_();a&&a.getWorkspace()&&(a=a.getWorkspace().getTopBlocks(!0),0this.maxDisplayLength&&(a=a.substring(0,this.maxDisplayLength-2)+"\u2026");a=a.replace(/\s/g,Blockly.Field.NBSP);this.sourceBlock_&&this.sourceBlock_.RTL&&(a+="\u200f");return a};Blockly.Field.prototype.getText=function(){if(this.getText_){var a=this.getText_.call(this);if(null!==a)return String(a)}return String(this.getValue())}; -Blockly.Field.prototype.setText=function(a){throw Error("setText method is deprecated");};Blockly.Field.prototype.markDirty=function(){this.isDirty_=!0;this.constants_=null};Blockly.Field.prototype.forceRerender=function(){this.isDirty_=!0;this.sourceBlock_&&this.sourceBlock_.rendered&&(this.sourceBlock_.render(),this.sourceBlock_.bumpNeighbours(),this.updateMarkers_())}; +Blockly.Field.prototype.setText=function(a){Blockly.utils.deprecation.warn("Field.prototype.setText","May 2019","December 2020","Blockly.Field.prototype.setValue");throw Error("setText method is deprecated");};Blockly.Field.prototype.markDirty=function(){this.isDirty_=!0;this.constants_=null};Blockly.Field.prototype.forceRerender=function(){this.isDirty_=!0;this.sourceBlock_&&this.sourceBlock_.rendered&&(this.sourceBlock_.render(),this.sourceBlock_.bumpNeighbours(),this.updateMarkers_())}; Blockly.Field.prototype.setValue=function(a){if(null!==a){var b=this.doClassValidation_(a);a=this.processValidation_(a,b);if(!(a instanceof Error)){if(b=this.getValidator())if(b=b.call(this,a),a=this.processValidation_(a,b),a instanceof Error)return;b=this.sourceBlock_;if(!b||!b.disposed){var c=this.getValue();c!==a&&(b&&Blockly.Events.isEnabled()&&Blockly.Events.fire(new Blockly.Events.BlockChange(b,"field",this.name||null,c,a)),this.doValueUpdate_(a),this.isDirty_&&this.forceRerender())}}}}; Blockly.Field.prototype.processValidation_=function(a,b){if(null===b)return this.doValueInvalid_(a),this.isDirty_&&this.forceRerender(),Error();void 0!==b&&(a=b);return a};Blockly.Field.prototype.getValue=function(){return this.value_};Blockly.Field.prototype.doClassValidation_=function(a){return null===a||void 0===a?null:a=this.classValidator(a)};Blockly.Field.prototype.doValueUpdate_=function(a){this.value_=a;this.isDirty_=!0};Blockly.Field.prototype.doValueInvalid_=function(a){}; -Blockly.Field.prototype.onMouseDown_=function(a){this.sourceBlock_&&this.sourceBlock_.workspace&&(a=this.sourceBlock_.workspace.getGesture(a))&&a.setStartField(this)};Blockly.Field.prototype.setTooltip=function(a){var b=this.getClickTarget_();b?b.tooltip=a||""===a?a:this.sourceBlock_:this.tooltip_=a};Blockly.Field.prototype.getClickTarget_=function(){return this.clickTarget_||this.getSvgRoot()};Blockly.Field.prototype.getAbsoluteXY_=function(){return Blockly.utils.style.getPageOffset(this.getClickTarget_())}; -Blockly.Field.prototype.referencesVariables=function(){return!1};Blockly.Field.prototype.getParentInput=function(){for(var a=null,b=this.sourceBlock_,c=b.inputList,d=0;da||a>this.fieldRow.length)throw Error("index "+a+" out of bounds.");if(!(b||""==b&&c))return a;"string"==typeof b&&(b=new Blockly.FieldLabel(b));b.setSourceBlock(this.sourceBlock_);this.sourceBlock_.rendered&&b.init();b.name=c;b.setVisible(this.isVisible());c=b;c.prefixField&&(a=this.insertFieldAt(a,c.prefixField));this.fieldRow.splice(a,0,b);++a;c.suffixField&&(a=this.insertFieldAt(a,c.suffixField));this.sourceBlock_.rendered&&(this.sourceBlock_= -this.sourceBlock_,this.sourceBlock_.render(),this.sourceBlock_.bumpNeighbours());return a};Blockly.Input.prototype.removeField=function(a,b){for(var c=0,d;d=this.fieldRow[c];c++)if(d.name===a)return d.dispose(),this.fieldRow.splice(c,1),this.sourceBlock_.rendered&&(this.sourceBlock_=this.sourceBlock_,this.sourceBlock_.render(),this.sourceBlock_.bumpNeighbours()),!0;if(b)return!1;throw Error('Field "'+a+'" not found.');};Blockly.Input.prototype.isVisible=function(){return this.visible_}; +Blockly.Input.prototype.insertFieldAt=function(a,b,c){if(0>a||a>this.fieldRow.length)throw Error("index "+a+" out of bounds.");if(!(b||""==b&&c))return a;"string"==typeof b&&(b=new Blockly.FieldLabel(b));b.setSourceBlock(this.sourceBlock_);this.sourceBlock_.rendered&&(b.init(),b.applyColour());b.name=c;b.setVisible(this.isVisible());c=b;c.prefixField&&(a=this.insertFieldAt(a,c.prefixField));this.fieldRow.splice(a,0,b);++a;c.suffixField&&(a=this.insertFieldAt(a,c.suffixField));this.sourceBlock_.rendered&& +(this.sourceBlock_=this.sourceBlock_,this.sourceBlock_.render(),this.sourceBlock_.bumpNeighbours());return a};Blockly.Input.prototype.removeField=function(a,b){for(var c=0,d;d=this.fieldRow[c];c++)if(d.name===a)return d.dispose(),this.fieldRow.splice(c,1),this.sourceBlock_.rendered&&(this.sourceBlock_=this.sourceBlock_,this.sourceBlock_.render(),this.sourceBlock_.bumpNeighbours()),!0;if(b)return!1;throw Error('Field "'+a+'" not found.');};Blockly.Input.prototype.isVisible=function(){return this.visible_}; Blockly.Input.prototype.setVisible=function(a){var b=[];if(this.visible_==a)return b;this.visible_=a;for(var c=0,d;d=this.fieldRow[c];c++)d.setVisible(a);this.connection&&(this.connection=this.connection,a?b=this.connection.startTrackingAll():this.connection.stopTrackingAll(),c=this.connection.targetBlock())&&(c.getSvgRoot().style.display=a?"block":"none");return b};Blockly.Input.prototype.markDirty=function(){for(var a=0,b;b=this.fieldRow[a];a++)b.markDirty()}; -Blockly.Input.prototype.setCheck=function(a){if(!this.connection)throw Error("This input does not have a connection.");this.connection.setCheck(a);return this};Blockly.Input.prototype.setAlign=function(a){this.align=a;this.sourceBlock_.rendered&&(this.sourceBlock_=this.sourceBlock_,this.sourceBlock_.render());return this};Blockly.Input.prototype.init=function(){if(this.sourceBlock_.workspace.rendered)for(var a=0;aa&&(e=e.substring(0,a-3)+"...");return e};Blockly.Block.prototype.appendValueInput=function(a){return this.appendInput_(Blockly.INPUT_VALUE,a)};Blockly.Block.prototype.appendStatementInput=function(a){return this.appendInput_(Blockly.NEXT_STATEMENT,a)};Blockly.Block.prototype.appendDummyInput=function(a){return this.appendInput_(Blockly.DUMMY_INPUT,a||"")}; Blockly.Block.prototype.jsonInit=function(a){var b=a.type?'Block "'+a.type+'": ':"";if(a.output&&a.previousStatement)throw Error(b+"Must not have both an output and a previousStatement.");a.style&&a.style.hat&&(this.hat=a.style.hat,a.style=null);if(a.style&&a.colour)throw Error(b+"Must not have both a colour and a style.");a.style?this.jsonInitStyle_(a,b):this.jsonInitColour_(a,b);for(var c=0;void 0!==a["message"+c];)this.interpolate_(a["message"+c],a["args"+c]||[],a["lastDummyAlign"+c],b),c++;void 0!== @@ -556,15 +572,36 @@ b.className="blocklyMenuItemContent goog-menuitem-content";if(this.checkable_){v Blockly.utils.aria.State.DISABLED,!this.enabled_);return a};Blockly.MenuItem.prototype.dispose=function(){this.element_=null};Blockly.MenuItem.prototype.getElement=function(){return this.element_};Blockly.MenuItem.prototype.getId=function(){return this.element_.id};Blockly.MenuItem.prototype.getValue=function(){return this.value_};Blockly.MenuItem.prototype.setRightToLeft=function(a){this.rightToLeft_=a};Blockly.MenuItem.prototype.setRole=function(a){this.roleName_=a}; Blockly.MenuItem.prototype.setCheckable=function(a){this.checkable_=a};Blockly.MenuItem.prototype.setChecked=function(a){this.checked_=a};Blockly.MenuItem.prototype.setHighlighted=function(a){this.highlight_=a;var b=this.getElement();b&&this.isEnabled()&&(a?(Blockly.utils.dom.addClass(b,"blocklyMenuItemHighlight"),Blockly.utils.dom.addClass(b,"goog-menuitem-highlight")):(Blockly.utils.dom.removeClass(b,"blocklyMenuItemHighlight"),Blockly.utils.dom.removeClass(b,"goog-menuitem-highlight")))}; Blockly.MenuItem.prototype.isEnabled=function(){return this.enabled_};Blockly.MenuItem.prototype.setEnabled=function(a){this.enabled_=a};Blockly.MenuItem.prototype.performAction=function(){this.isEnabled()&&this.actionHandler_&&this.actionHandler_(this)};Blockly.MenuItem.prototype.onAction=function(a,b){this.actionHandler_=a.bind(b)};Blockly.ContextMenu={};Blockly.ContextMenu.currentBlock=null;Blockly.ContextMenu.menu_=null;Blockly.ContextMenu.show=function(a,b,c){Blockly.WidgetDiv.show(Blockly.ContextMenu,c,Blockly.ContextMenu.dispose);if(b.length){var d=Blockly.ContextMenu.populate_(b,c);Blockly.ContextMenu.menu_=d;Blockly.ContextMenu.position_(d,a,c);setTimeout(function(){d.focus()},1);Blockly.ContextMenu.currentBlock=null}else Blockly.ContextMenu.hide()}; -Blockly.ContextMenu.populate_=function(a,b){var c=new Blockly.Menu;c.setRole(Blockly.utils.aria.Role.MENU);for(var d=0,e;e=a[d];d++){var f=new Blockly.MenuItem(e.text);f.setRightToLeft(b);f.setRole(Blockly.utils.aria.Role.MENUITEM);c.addChild(f);f.setEnabled(e.enabled);if(e.enabled)f.onAction(function(a){Blockly.ContextMenu.hide();this.callback()},e)}return c}; +Blockly.ContextMenu.populate_=function(a,b){var c=new Blockly.Menu;c.setRole(Blockly.utils.aria.Role.MENU);for(var d=0,e;e=a[d];d++){var f=new Blockly.MenuItem(e.text);f.setRightToLeft(b);f.setRole(Blockly.utils.aria.Role.MENUITEM);c.addChild(f);f.setEnabled(e.enabled);if(e.enabled)f.onAction(function(g){Blockly.ContextMenu.hide();this.callback(this.scope)},e)}return c}; Blockly.ContextMenu.position_=function(a,b,c){var d=Blockly.utils.getViewportBBox();b=new Blockly.utils.Rect(b.clientY+d.top,b.clientY+d.top,b.clientX+d.left,b.clientX+d.left);Blockly.ContextMenu.createWidget_(a);var e=a.getSize();c&&(b.left+=e.width,b.right+=e.width,d.left+=e.width,d.right+=e.width);Blockly.WidgetDiv.positionWithAnchor(d,b,e,c);a.focus()}; Blockly.ContextMenu.createWidget_=function(a){a.render(Blockly.WidgetDiv.DIV);var b=a.getElement();Blockly.utils.dom.addClass(b,"blocklyContextMenu");Blockly.bindEventWithChecks_(b,"contextmenu",null,Blockly.utils.noEvent);a.focus()};Blockly.ContextMenu.hide=function(){Blockly.WidgetDiv.hideIfOwner(Blockly.ContextMenu);Blockly.ContextMenu.currentBlock=null};Blockly.ContextMenu.dispose=function(){Blockly.ContextMenu.menu_&&(Blockly.ContextMenu.menu_.dispose(),Blockly.ContextMenu.menu_=null)}; Blockly.ContextMenu.callbackFactory=function(a,b){return function(){Blockly.Events.disable();try{var c=Blockly.Xml.domToBlock(b,a.workspace),d=a.getRelativeToSurfaceXY();d.x=a.RTL?d.x-Blockly.SNAP_RADIUS:d.x+Blockly.SNAP_RADIUS;d.y+=2*Blockly.SNAP_RADIUS;c.moveBy(d.x,d.y)}finally{Blockly.Events.enable()}Blockly.Events.isEnabled()&&!c.isShadow()&&Blockly.Events.fire(new Blockly.Events.BlockCreate(c));c.select()}}; -Blockly.ContextMenu.blockDeleteOption=function(a){var b=a.getDescendants(!1).length,c=a.getNextBlock();c&&(b-=c.getDescendants(!1).length);return{text:1==b?Blockly.Msg.DELETE_BLOCK:Blockly.Msg.DELETE_X_BLOCKS.replace("%1",String(b)),enabled:!0,callback:function(){Blockly.Events.setGroup(!0);a.dispose(!0,!0);Blockly.Events.setGroup(!1)}}};Blockly.ContextMenu.blockHelpOption=function(a){return{enabled:!("function"==typeof a.helpUrl?!a.helpUrl():!a.helpUrl),text:Blockly.Msg.HELP,callback:function(){a.showHelp()}}}; -Blockly.ContextMenu.blockDuplicateOption=function(a){var b=a.isDuplicatable();return{text:Blockly.Msg.DUPLICATE_BLOCK,enabled:b,callback:function(){Blockly.duplicate(a)}}};Blockly.ContextMenu.blockCommentOption=function(a){var b={enabled:!Blockly.utils.userAgent.IE};a.getCommentIcon()?(b.text=Blockly.Msg.REMOVE_COMMENT,b.callback=function(){a.setCommentText(null)}):(b.text=Blockly.Msg.ADD_COMMENT,b.callback=function(){a.setCommentText("")});return b}; Blockly.ContextMenu.commentDeleteOption=function(a){return{text:Blockly.Msg.REMOVE_COMMENT,enabled:!0,callback:function(){Blockly.Events.setGroup(!0);a.dispose(!0,!0);Blockly.Events.setGroup(!1)}}};Blockly.ContextMenu.commentDuplicateOption=function(a){return{text:Blockly.Msg.DUPLICATE_COMMENT,enabled:!0,callback:function(){Blockly.duplicate(a)}}}; -Blockly.ContextMenu.workspaceCommentOption=function(a,b){if(!Blockly.WorkspaceCommentSvg)throw Error("Missing require for Blockly.WorkspaceCommentSvg");var c={enabled:!Blockly.utils.userAgent.IE};c.text=Blockly.Msg.ADD_COMMENT;c.callback=function(){var c=new Blockly.WorkspaceCommentSvg(a,Blockly.Msg.WORKSPACE_COMMENT_DEFAULT_TEXT,Blockly.WorkspaceCommentSvg.DEFAULT_SIZE,Blockly.WorkspaceCommentSvg.DEFAULT_SIZE),e=a.getInjectionDiv().getBoundingClientRect();e=new Blockly.utils.Coordinate(b.clientX- -e.left,b.clientY-e.top);var f=a.getOriginOffsetInPixels();e=Blockly.utils.Coordinate.difference(e,f);e.scale(1/a.scale);c.moveBy(e.x,e.y);a.rendered&&(c.initSvg(),c.render(),c.select())};return c};Blockly.RenderedConnection=function(a,b){Blockly.RenderedConnection.superClass_.constructor.call(this,a,b);this.db_=a.workspace.connectionDBList[b];this.dbOpposite_=a.workspace.connectionDBList[Blockly.OPPOSITE_TYPE[b]];this.offsetInBlock_=new Blockly.utils.Coordinate(0,0);this.trackedState_=Blockly.RenderedConnection.TrackedState.WILL_TRACK;this.targetConnection=null};Blockly.utils.object.inherits(Blockly.RenderedConnection,Blockly.Connection); +Blockly.ContextMenu.workspaceCommentOption=function(a,b){if(!Blockly.WorkspaceCommentSvg)throw Error("Missing require for Blockly.WorkspaceCommentSvg");var c={enabled:!Blockly.utils.userAgent.IE};c.text=Blockly.Msg.ADD_COMMENT;c.callback=function(){var d=new Blockly.WorkspaceCommentSvg(a,Blockly.Msg.WORKSPACE_COMMENT_DEFAULT_TEXT,Blockly.WorkspaceCommentSvg.DEFAULT_SIZE,Blockly.WorkspaceCommentSvg.DEFAULT_SIZE),e=a.getInjectionDiv().getBoundingClientRect();e=new Blockly.utils.Coordinate(b.clientX- +e.left,b.clientY-e.top);var f=a.getOriginOffsetInPixels();e=Blockly.utils.Coordinate.difference(e,f);e.scale(1/a.scale);d.moveBy(e.x,e.y);a.rendered&&(d.initSvg(),d.render(),d.select())};return c};Blockly.ContextMenuItems={};Blockly.ContextMenuItems.registerUndo=function(){Blockly.ContextMenuRegistry.registry.register({displayText:function(){return Blockly.Msg.UNDO},preconditionFn:function(a){return 0b.length?Blockly.ContextMenuItems.deleteNext_(b,c):Blockly.confirm(Blockly.Msg.DELETE_ALL_BLOCKS.replace("%1",b.length),function(d){d&&Blockly.ContextMenuItems.deleteNext_(b,c)})}},scopeType:Blockly.ContextMenuRegistry.ScopeType.WORKSPACE,id:"workspaceDelete",weight:0})}; +Blockly.ContextMenuItems.registerWorkspaceOptions_=function(){Blockly.ContextMenuItems.registerUndo();Blockly.ContextMenuItems.registerRedo();Blockly.ContextMenuItems.registerCleanup();Blockly.ContextMenuItems.registerCollapse();Blockly.ContextMenuItems.registerExpand();Blockly.ContextMenuItems.registerDeleteAll()}; +Blockly.ContextMenuItems.registerDuplicate=function(){Blockly.ContextMenuRegistry.registry.register({displayText:function(){return Blockly.Msg.DUPLICATE_BLOCK},preconditionFn:function(a){a=a.block;return!a.isInFlyout&&a.isDeletable()&&a.isMovable()?a.isDuplicatable()?"enabled":"disabled":"hidden"},callback:function(a){a.block&&Blockly.duplicate(a.block)},scopeType:Blockly.ContextMenuRegistry.ScopeType.BLOCK,id:"blockDuplicate",weight:0})}; +Blockly.ContextMenuItems.registerComment=function(){Blockly.ContextMenuRegistry.registry.register({displayText:function(a){return a.block.getCommentIcon()?Blockly.Msg.REMOVE_COMMENT:Blockly.Msg.ADD_COMMENT},preconditionFn:function(a){a=a.block;return Blockly.utils.userAgent.IE||a.isInFlyout||!a.workspace.options.comments||a.isCollapsed()||!a.isEditable()?"hidden":"enabled"},callback:function(a){a=a.block;a.getCommentIcon()?a.setCommentText(null):a.setCommentText("")},scopeType:Blockly.ContextMenuRegistry.ScopeType.BLOCK, +id:"blockComment",weight:0})}; +Blockly.ContextMenuItems.registerInline=function(){Blockly.ContextMenuRegistry.registry.register({displayText:function(a){return a.block.getInputsInline()?Blockly.Msg.EXTERNAL_INPUTS:Blockly.Msg.INLINE_INPUTS},preconditionFn:function(a){a=a.block;if(!a.isInFlyout&&a.isMovable()&&!a.isCollapsed())for(var b=1;bb?!1:Blockly.RenderedConnection.superClass_.isConnectionAllowed.call(this,a)};Blockly.RenderedConnection.prototype.onFailedConnect=function(a){this.bumpAwayFrom(a)}; -Blockly.RenderedConnection.prototype.disconnectInternal_=function(a,b){Blockly.RenderedConnection.superClass_.disconnectInternal_.call(this,a,b);a.rendered&&a.render();b.rendered&&(b.updateDisabled(),b.render(),b.getSvgRoot().style.display="block")}; -Blockly.RenderedConnection.prototype.respawnShadow_=function(){var a=this.getSourceBlock(),b=this.getShadowDom();if(a.workspace&&b&&Blockly.Events.recordUndo){Blockly.RenderedConnection.superClass_.respawnShadow_.call(this);b=this.targetBlock();if(!b)throw Error("Couldn't respawn the shadow block that should exist here.");b.initSvg();b.render(!1);a.rendered&&a.render()}};Blockly.RenderedConnection.prototype.neighbours=function(a){return this.dbOpposite_.getNeighbours(this,a)}; +Blockly.RenderedConnection.prototype.isConnectionAllowed=function(a,b){Blockly.utils.deprecation.warn("RenderedConnection.prototype.isConnectionAllowed","July 2020","July 2021","Blockly.Workspace.prototype.getConnectionChecker().canConnect");return this.distanceFrom(a)>b?!1:Blockly.RenderedConnection.superClass_.isConnectionAllowed.call(this,a)};Blockly.RenderedConnection.prototype.onFailedConnect=function(a){this.bumpAwayFrom(a)}; +Blockly.RenderedConnection.prototype.disconnectInternal_=function(a,b){Blockly.RenderedConnection.superClass_.disconnectInternal_.call(this,a,b);a.rendered&&a.render();b.rendered&&(b.updateDisabled(),b.render(),b.getSvgRoot().style.display="block")};Blockly.RenderedConnection.prototype.respawnShadow_=function(){Blockly.RenderedConnection.superClass_.respawnShadow_.call(this);var a=this.targetBlock();a&&(a.initSvg(),a.render(!1),a=this.getSourceBlock(),a.rendered&&a.render())}; +Blockly.RenderedConnection.prototype.neighbours=function(a){return this.dbOpposite_.getNeighbours(this,a)}; Blockly.RenderedConnection.prototype.connect_=function(a){Blockly.RenderedConnection.superClass_.connect_.call(this,a);var b=this.getSourceBlock();a=a.getSourceBlock();var c=b.rendered,d=a.rendered;c&&b.updateDisabled();d&&a.updateDisabled();c&&d&&(this.type==Blockly.NEXT_STATEMENT||this.type==Blockly.PREVIOUS_STATEMENT?a.render():b.render());if(b=b.getInputWithBlock(a))b=b.isVisible(),a.getSvgRoot().style.display=b?"block":"none"}; -Blockly.RenderedConnection.prototype.onCheckChanged_=function(){!this.isConnected()||this.targetConnection&&this.checkType(this.targetConnection)||((this.isSuperior()?this.targetBlock():this.sourceBlock_).unplug(),this.sourceBlock_.bumpNeighbours())};Blockly.Marker=function(){this.drawer_=this.curNode_=this.colour=null;this.type="marker"};Blockly.Marker.prototype.setDrawer=function(a){this.drawer_=a};Blockly.Marker.prototype.getDrawer=function(){return this.drawer_};Blockly.Marker.prototype.getCurNode=function(){return this.curNode_};Blockly.Marker.prototype.setCurNode=function(a){var b=this.curNode_;this.curNode_=a;this.drawer_&&this.drawer_.draw(b,this.curNode_)}; +Blockly.RenderedConnection.prototype.onCheckChanged_=function(){!this.isConnected()||this.targetConnection&&this.getConnectionChecker().canConnect(this,this.targetConnection,!1)||((this.isSuperior()?this.targetBlock():this.sourceBlock_).unplug(),this.sourceBlock_.bumpNeighbours())};Blockly.Marker=function(){this.drawer_=this.curNode_=this.colour=null;this.type="marker"};Blockly.Marker.prototype.setDrawer=function(a){this.drawer_=a};Blockly.Marker.prototype.getDrawer=function(){return this.drawer_};Blockly.Marker.prototype.getCurNode=function(){return this.curNode_};Blockly.Marker.prototype.setCurNode=function(a){var b=this.curNode_;this.curNode_=a;this.drawer_&&this.drawer_.draw(b,this.curNode_)}; Blockly.Marker.prototype.draw=function(){this.drawer_&&this.drawer_.draw(this.curNode_,this.curNode_)};Blockly.Marker.prototype.hide=function(){this.drawer_&&this.drawer_.hide()};Blockly.Marker.prototype.dispose=function(){this.getDrawer()&&this.getDrawer().dispose()};Blockly.Cursor=function(){Blockly.Cursor.superClass_.constructor.call(this);this.type="cursor"};Blockly.utils.object.inherits(Blockly.Cursor,Blockly.Marker);Blockly.Cursor.prototype.next=function(){var a=this.getCurNode();if(!a)return null;for(a=a.next();a&&a.next()&&(a.getType()==Blockly.ASTNode.types.NEXT||a.getType()==Blockly.ASTNode.types.BLOCK);)a=a.next();a&&this.setCurNode(a);return a}; Blockly.Cursor.prototype.in=function(){var a=this.getCurNode();if(!a)return null;if(a.getType()==Blockly.ASTNode.types.PREVIOUS||a.getType()==Blockly.ASTNode.types.OUTPUT)a=a.next();(a=a.in())&&this.setCurNode(a);return a};Blockly.Cursor.prototype.prev=function(){var a=this.getCurNode();if(!a)return null;for(a=a.prev();a&&a.prev()&&(a.getType()==Blockly.ASTNode.types.NEXT||a.getType()==Blockly.ASTNode.types.BLOCK);)a=a.prev();a&&this.setCurNode(a);return a}; Blockly.Cursor.prototype.out=function(){var a=this.getCurNode();if(!a)return null;(a=a.out())&&a.getType()==Blockly.ASTNode.types.BLOCK&&(a=a.prev()||a);a&&this.setCurNode(a);return a}; Blockly.Cursor.prototype.onBlocklyAction=function(a){if(this.getCurNode()&&this.getCurNode().getType()===Blockly.ASTNode.types.FIELD&&this.getCurNode().getLocation().onBlocklyAction(a))return!0;switch(a.name){case Blockly.navigation.actionNames.PREVIOUS:return this.prev(),!0;case Blockly.navigation.actionNames.OUT:return this.out(),!0;case Blockly.navigation.actionNames.NEXT:return this.next(),!0;case Blockly.navigation.actionNames.IN:return this.in(),!0;default:return!1}};Blockly.BasicCursor=function(){Blockly.BasicCursor.superClass_.constructor.call(this)};Blockly.utils.object.inherits(Blockly.BasicCursor,Blockly.Cursor);Blockly.BasicCursor.prototype.next=function(){var a=this.getCurNode();if(!a)return null;(a=this.getNextNode_(a,this.validNode_))&&this.setCurNode(a);return a};Blockly.BasicCursor.prototype.in=function(){return this.next()}; Blockly.BasicCursor.prototype.prev=function(){var a=this.getCurNode();if(!a)return null;(a=this.getPreviousNode_(a,this.validNode_))&&this.setCurNode(a);return a};Blockly.BasicCursor.prototype.out=function(){return this.prev()};Blockly.BasicCursor.prototype.getNextNode_=function(a,b){if(!a)return null;var c=a.in()||a.next();if(b(c))return c;if(c)return this.getNextNode_(c,b);a=this.findSiblingOrParent_(a.out());return b(a)?a:a?this.getNextNode_(a,b):null}; Blockly.BasicCursor.prototype.getPreviousNode_=function(a,b){if(!a)return null;var c=a.prev();c=c?this.getRightMostChild_(c):a.out();return b(c)?c:c?this.getPreviousNode_(c,b):null};Blockly.BasicCursor.prototype.validNode_=function(a){var b=!1;a=a&&a.getType();if(a==Blockly.ASTNode.types.OUTPUT||a==Blockly.ASTNode.types.INPUT||a==Blockly.ASTNode.types.FIELD||a==Blockly.ASTNode.types.NEXT||a==Blockly.ASTNode.types.PREVIOUS||a==Blockly.ASTNode.types.WORKSPACE)b=!0;return b}; -Blockly.BasicCursor.prototype.findSiblingOrParent_=function(a){if(!a)return null;var b=a.next();return b?b:this.findSiblingOrParent_(a.out())};Blockly.BasicCursor.prototype.getRightMostChild_=function(a){if(!a.in())return a;for(a=a.in();a.next();)a=a.next();return this.getRightMostChild_(a)};Blockly.TabNavigateCursor=function(){Blockly.TabNavigateCursor.superClass_.constructor.call(this)};Blockly.utils.object.inherits(Blockly.TabNavigateCursor,Blockly.BasicCursor);Blockly.TabNavigateCursor.prototype.validNode_=function(a){var b=!1,c=a&&a.getType();a&&(a=a.getLocation(),c==Blockly.ASTNode.types.FIELD&&a&&a.isTabNavigable()&&a.isClickable()&&(b=!0));return b};Blockly.BlockSvg=function(a,b,c){this.svgGroup_=Blockly.utils.dom.createSvgElement("g",{},null);this.svgGroup_.translate_="";this.style=a.getRenderer().getConstants().getBlockStyle(null);this.pathObject=a.getRenderer().makePathObject(this.svgGroup_,this.style);this.renderIsInProgress_=this.rendered=!1;this.workspace=a;this.previousConnection=this.nextConnection=this.outputConnection=null;this.useDragSurface_=Blockly.utils.is3dSupported()&&!!a.getBlockDragSurface();var d=this.pathObject.svgPath;d.tooltip= -this;Blockly.Tooltip.bindMouseEvents(d);Blockly.BlockSvg.superClass_.constructor.call(this,a,b,c);this.svgGroup_.dataset&&(this.svgGroup_.dataset.id=this.id)};Blockly.utils.object.inherits(Blockly.BlockSvg,Blockly.Block);Blockly.BlockSvg.prototype.height=0;Blockly.BlockSvg.prototype.width=0;Blockly.BlockSvg.prototype.warningTextDb_=null;Blockly.BlockSvg.INLINE=-1;Blockly.BlockSvg.COLLAPSED_WARNING_ID="TEMP_COLLAPSED_WARNING_"; +Blockly.BasicCursor.prototype.findSiblingOrParent_=function(a){if(!a)return null;var b=a.next();return b?b:this.findSiblingOrParent_(a.out())};Blockly.BasicCursor.prototype.getRightMostChild_=function(a){if(!a.in())return a;for(a=a.in();a.next();)a=a.next();return this.getRightMostChild_(a)};Blockly.TabNavigateCursor=function(){Blockly.TabNavigateCursor.superClass_.constructor.call(this)};Blockly.utils.object.inherits(Blockly.TabNavigateCursor,Blockly.BasicCursor);Blockly.TabNavigateCursor.prototype.validNode_=function(a){var b=!1,c=a&&a.getType();a&&(a=a.getLocation(),c==Blockly.ASTNode.types.FIELD&&a&&a.isTabNavigable()&&a.isClickable()&&(b=!0));return b};Blockly.BlockSvg=function(a,b,c){this.svgGroup_=Blockly.utils.dom.createSvgElement(Blockly.utils.Svg.G,{},null);this.svgGroup_.translate_="";this.style=a.getRenderer().getConstants().getBlockStyle(null);this.pathObject=a.getRenderer().makePathObject(this.svgGroup_,this.style);this.renderIsInProgress_=this.rendered=!1;this.workspace=a;this.previousConnection=this.nextConnection=this.outputConnection=null;this.useDragSurface_=Blockly.utils.is3dSupported()&&!!a.getBlockDragSurface();var d=this.pathObject.svgPath; +d.tooltip=this;Blockly.Tooltip.bindMouseEvents(d);Blockly.BlockSvg.superClass_.constructor.call(this,a,b,c);this.svgGroup_.dataset&&(this.svgGroup_.dataset.id=this.id)};Blockly.utils.object.inherits(Blockly.BlockSvg,Blockly.Block);Blockly.BlockSvg.prototype.height=0;Blockly.BlockSvg.prototype.width=0;Blockly.BlockSvg.prototype.warningTextDb_=null;Blockly.BlockSvg.INLINE=-1;Blockly.BlockSvg.COLLAPSED_WARNING_ID="TEMP_COLLAPSED_WARNING_"; Blockly.BlockSvg.prototype.initSvg=function(){if(!this.workspace.rendered)throw TypeError("Workspace is headless.");for(var a=0,b;b=this.inputList[a];a++)b.init();b=this.getIcons();for(a=0;a=this.connections_.length)return-1;b=a.y;for(var d=c;0<=d&&this.connections_[d].y==b;){if(this.connections_[d]==a)return d;d--}for(;ca)c=d;else{b=d;break}}return b};Blockly.ConnectionDB.prototype.removeConnection=function(a,b){a=this.findIndexOfConnection_(a,b);if(-1==a)throw Error("Unable to find connection in connectionDB.");this.connections_.splice(a,1)}; -Blockly.ConnectionDB.prototype.getNeighbours=function(a,b){function c(a){var c=e-d[a].x,g=f-d[a].y;Math.sqrt(c*c+g*g)<=b&&k.push(d[a]);return ga)throw Error("Cannot unsubscribe a workspace that hasn't been subscribed.");this.subscribedWorkspaces_.splice(a,1)}; Blockly.ThemeManager.prototype.subscribe=function(a,b,c){this.componentDB_[b]||(this.componentDB_[b]=[]);this.componentDB_[b].push({element:a,propertyName:c});b=this.theme_&&this.theme_.getComponentStyle(b);a.style[c]=b||""};Blockly.ThemeManager.prototype.unsubscribe=function(a){if(a)for(var b=Object.keys(this.componentDB_),c=0,d;d=b[c];c++){for(var e=this.componentDB_[d],f=e.length-1;0<=f;f--)e[f].element===a&&e.splice(f,1);this.componentDB_[d].length||delete this.componentDB_[d]}}; @@ -663,39 +699,40 @@ Blockly.TouchGesture.prototype.handlePinch_=function(a){var b=Object.keys(this.c b;a.preventDefault()};Blockly.TouchGesture.prototype.handleTouchEnd=function(a){a=Blockly.Touch.getTouchIdentifierFromEvent(a);this.cachedPoints_[a]&&delete this.cachedPoints_[a];2>Object.keys(this.cachedPoints_).length&&(this.cachedPoints_=Object.create(null),this.previousScale_=0)};Blockly.TouchGesture.prototype.getTouchPoint=function(a){return this.startWorkspace_?new Blockly.utils.Coordinate(a.pageX?a.pageX:a.changedTouches[0].pageX,a.pageY?a.pageY:a.changedTouches[0].pageY):null};Blockly.WorkspaceAudio=function(a){this.parentWorkspace_=a;this.SOUNDS_=Object.create(null)};Blockly.WorkspaceAudio.prototype.lastSound_=null;Blockly.WorkspaceAudio.prototype.dispose=function(){this.SOUNDS_=this.parentWorkspace_=null}; Blockly.WorkspaceAudio.prototype.load=function(a,b){if(a.length){try{var c=new Blockly.utils.global.Audio}catch(h){return}for(var d,e=0;e=this.remainingCapacity()||(this.currentGesture_&&this.currentGesture_.cancel(),"comment"==a.tagName.toLowerCase()?this.pasteWorkspaceComment_(a):this.pasteBlock_(a))}; +Blockly.WorkspaceSvg.prototype.paste=function(a){!this.rendered||!a.tagName||a.getElementsByTagName("block").length>=this.remainingCapacity()||(this.currentGesture_&&this.currentGesture_.cancel(),"comment"==a.tagName.toLowerCase()?this.pasteWorkspaceComment_(a):this.pasteBlock_(a))}; Blockly.WorkspaceSvg.prototype.pasteBlock_=function(a){Blockly.Events.disable();try{var b=Blockly.Xml.domToBlock(a,this),c=this.getMarker(Blockly.navigation.MARKER_NAME).getCurNode();if(this.keyboardAccessibilityMode&&c&&c.isConnection()){var d=c.getLocation();Blockly.navigation.insertBlock(b,d);return}var e=parseInt(a.getAttribute("x"),10),f=parseInt(a.getAttribute("y"),10);if(!isNaN(e)&&!isNaN(f)){this.RTL&&(e=-e);do{a=!1;var g=this.getAllBlocks(!1);c=0;for(var h;h=g[c];c++){var k=h.getRelativeToSurfaceXY(); if(1>=Math.abs(e-k.x)&&1>=Math.abs(f-k.y)){a=!0;break}}if(!a){var l=b.getConnections_(!1);c=0;for(var m;m=l[c];c++)if(m.closest(Blockly.SNAP_RADIUS,new Blockly.utils.Coordinate(e,f)).connection){a=!0;break}}a&&(e=this.RTL?e-Blockly.SNAP_RADIUS:e+Blockly.SNAP_RADIUS,f+=2*Blockly.SNAP_RADIUS)}while(a);b.moveBy(e,f)}}finally{Blockly.Events.enable()}Blockly.Events.isEnabled()&&!b.isShadow()&&Blockly.Events.fire(new Blockly.Events.BlockCreate(b));b.select()}; Blockly.WorkspaceSvg.prototype.pasteWorkspaceComment_=function(a){Blockly.Events.disable();try{var b=Blockly.WorkspaceCommentSvg.fromXml(a,this),c=parseInt(a.getAttribute("x"),10),d=parseInt(a.getAttribute("y"),10);isNaN(c)||isNaN(d)||(this.RTL&&(c=-c),b.moveBy(c+50,d+50))}finally{Blockly.Events.enable()}Blockly.Events.isEnabled();b.select()}; @@ -709,15 +746,12 @@ Blockly.WorkspaceSvg.prototype.isMovable=function(){return this.options.moveOpti Blockly.WorkspaceSvg.prototype.onMouseWheel_=function(a){if(Blockly.Gesture.inProgress())a.preventDefault(),a.stopPropagation();else{var b=this.options.zoomOptions&&this.options.zoomOptions.wheel,c=this.options.moveOptions&&this.options.moveOptions.wheel;if(b||c){var d=Blockly.utils.getScrollDeltaPixels(a);!b||!a.ctrlKey&&c?(b=this.scrollX-d.x,c=this.scrollY-d.y,a.shiftKey&&!d.x&&(b=this.scrollX-d.y,c=this.scrollY),this.scroll(b,c)):(d=-d.y/50,b=Blockly.utils.mouseToSvg(a,this.getParentSvg(),this.getInverseScreenCTM()), this.zoom(b.x,b.y,d));a.preventDefault()}}};Blockly.WorkspaceSvg.prototype.getBlocksBoundingBox=function(){var a=this.getTopBoundedElements();if(!a.length)return new Blockly.utils.Rect(0,0,0,0);for(var b=a[0].getBoundingRectangle(),c=1;cb.bottom&&(b.bottom=d.bottom);d.leftb.right&&(b.right=d.right)}return b}; Blockly.WorkspaceSvg.prototype.cleanUp=function(){this.setResizesEnabled(!1);Blockly.Events.setGroup(!0);for(var a=this.getTopBlocks(!0),b=0,c=0,d;d=a[c];c++)if(d.isMovable()){var e=d.getRelativeToSurfaceXY();d.moveBy(-e.x,b-e.y);d.snapToGrid();b=d.getRelativeToSurfaceXY().y+d.getHeightWidth().height+this.renderer_.getConstants().MIN_BLOCK_HEIGHT}Blockly.Events.setGroup(!1);this.setResizesEnabled(!0)}; -Blockly.WorkspaceSvg.prototype.showContextMenu=function(a){function b(a){if(a.isDeletable())p=p.concat(a.getDescendants(!1));else{a=a.getChildren(!1);for(var c=0;cp.length?c():Blockly.confirm(Blockly.Msg.DELETE_ALL_BLOCKS.replace("%1",p.length),function(a){a&& -c()})}};d.push(h);this.configureContextMenu&&this.configureContextMenu(d,a);Blockly.ContextMenu.show(a,d,this.RTL)}}; -Blockly.WorkspaceSvg.prototype.updateToolbox=function(a){Array.isArray(a)||(a=Blockly.Options.parseToolboxTree(a));if(a=Blockly.utils.toolbox.convertToolboxToJSON(a)){if(!this.options.languageTree)throw Error("Existing toolbox is null. Can't create new toolbox.");if(Blockly.utils.toolbox.hasCategories(a)){if(!this.toolbox_)throw Error("Existing toolbox has no categories. Can't change mode.");this.options.languageTree=a;this.toolbox_.render(a)}else{if(!this.flyout_)throw Error("Existing toolbox has categories. Can't change mode."); -this.options.languageTree=a;this.flyout_.show(a)}}else if(this.options.languageTree)throw Error("Can't nullify an existing toolbox.");};Blockly.WorkspaceSvg.prototype.markFocused=function(){this.options.parentWorkspace?this.options.parentWorkspace.markFocused():(Blockly.mainWorkspace=this,this.setBrowserFocus())};Blockly.WorkspaceSvg.prototype.setBrowserFocus=function(){document.activeElement&&document.activeElement.blur();try{this.getParentSvg().focus({preventScroll:!0})}catch(a){try{this.getParentSvg().parentNode.setActive()}catch(b){this.getParentSvg().parentNode.focus({preventScroll:!0})}}}; +Blockly.WorkspaceSvg.prototype.showContextMenu=function(a){if(!this.options.readOnly&&!this.isFlyout){var b=Blockly.ContextMenuRegistry.registry.getContextMenuOptions(Blockly.ContextMenuRegistry.ScopeType.WORKSPACE,{workspace:this});this.configureContextMenu&&this.configureContextMenu(b,a);Blockly.ContextMenu.show(a,b,this.RTL)}}; +Blockly.WorkspaceSvg.prototype.updateToolbox=function(a){if(a=Blockly.utils.toolbox.convertToolboxDefToJson(a)){if(!this.options.languageTree)throw Error("Existing toolbox is null. Can't create new toolbox.");if(Blockly.utils.toolbox.hasCategories(a)){if(!this.toolbox_)throw Error("Existing toolbox has no categories. Can't change mode.");this.options.languageTree=a;this.toolbox_.render(a)}else{if(!this.flyout_)throw Error("Existing toolbox has categories. Can't change mode.");this.options.languageTree= +a;this.flyout_.show(a)}}else if(this.options.languageTree)throw Error("Can't nullify an existing toolbox.");};Blockly.WorkspaceSvg.prototype.markFocused=function(){this.options.parentWorkspace?this.options.parentWorkspace.markFocused():(Blockly.mainWorkspace=this,this.setBrowserFocus())};Blockly.WorkspaceSvg.prototype.setBrowserFocus=function(){document.activeElement&&document.activeElement.blur();try{this.getParentSvg().focus({preventScroll:!0})}catch(a){try{this.getParentSvg().parentNode.setActive()}catch(b){this.getParentSvg().parentNode.focus({preventScroll:!0})}}}; Blockly.WorkspaceSvg.prototype.zoom=function(a,b,c){c=Math.pow(this.options.zoomOptions.scaleSpeed,c);var d=this.scale*c;if(this.scale!=d){d>this.options.zoomOptions.maxScale?c=this.options.zoomOptions.maxScale/this.scale:db.viewBottom||b.contentLeftb.viewRight){c=null;a&&(c=Blockly.Events.getGroup(),Blockly.Events.setGroup(a.group));switch(a.type){case Blockly.Events.BLOCK_CREATE:case Blockly.Events.BLOCK_MOVE:var f= -e.getBlockById(a.blockId);f&&(f=f.getRootBlock());break;case Blockly.Events.COMMENT_CREATE:case Blockly.Events.COMMENT_MOVE:f=e.getCommentById(a.commentId)}if(f){d=f.getBoundingRectangle();d.height=d.bottom-d.top;d.width=d.right-d.left;var m=b.viewTop,n=b.viewBottom-d.height;n=Math.max(m,n);m=Blockly.utils.math.clamp(m,d.top,n)-d.top;n=b.viewLeft;var p=b.viewRight-d.width;b.RTL?n=Math.min(p,n):p=Math.max(n,p);b=Blockly.utils.math.clamp(n,d.left,p)-d.left;f.moveBy(b,m)}a&&(!a.group&&f&&console.log("WARNING: Moved object in bounds but there was no event group. This may break undo."), -null!==c&&Blockly.Events.setGroup(c))}}});Blockly.svgResize(e);Blockly.WidgetDiv.createDom();Blockly.DropDownDiv.createDom();Blockly.Tooltip.createDom();return e}; -Blockly.init_=function(a){var b=a.options,c=a.getParentSvg();Blockly.bindEventWithChecks_(c.parentNode,"contextmenu",null,function(a){Blockly.utils.isTargetInput(a)||a.preventDefault()});c=Blockly.bindEventWithChecks_(window,"resize",null,function(){Blockly.hideChaff(!0);Blockly.svgResize(a)});a.setResizeHandlerWrapper(c);Blockly.inject.bindDocumentEvents_();if(b.languageTree){c=a.getToolbox();var d=a.getFlyout(!0);c?c.init():d&&(d.init(a),d.show(b.languageTree),d.scrollToStart())}c=Blockly.Scrollbar.scrollbarThickness; -b.hasTrashcan&&(c=a.trashcan.init(c));b.zoomOptions&&b.zoomOptions.controls&&a.zoomControls_.init(c);b.moveOptions&&b.moveOptions.scrollbars?(a.scrollbar=new Blockly.ScrollbarPair(a),a.scrollbar.resize()):a.setMetrics({x:.5,y:.5});b.hasSounds&&Blockly.inject.loadSounds_(b.pathToMedia,a)}; +Blockly.createDom_=function(a,b){a.setAttribute("dir","LTR");Blockly.Component.defaultRightToLeft=b.RTL;Blockly.Css.inject(b.hasCss,b.pathToMedia);a=Blockly.utils.dom.createSvgElement(Blockly.utils.Svg.SVG,{xmlns:Blockly.utils.dom.SVG_NS,"xmlns:html":Blockly.utils.dom.HTML_NS,"xmlns:xlink":Blockly.utils.dom.XLINK_NS,version:"1.1","class":"blocklySvg",tabindex:"0"},a);var c=Blockly.utils.dom.createSvgElement(Blockly.utils.Svg.DEFS,{},a),d=String(Math.random()).substring(2);b.gridPattern=Blockly.Grid.createDom(d, +b.gridOptions,c);return a}; +Blockly.createMainWorkspace_=function(a,b,c,d){b.parentWorkspace=null;var e=new Blockly.WorkspaceSvg(b,c,d);b=e.options;e.scale=b.zoomOptions.startScale;a.appendChild(e.createDom("blocklyMainBackground"));Blockly.utils.dom.addClass(e.getInjectionDiv(),e.getRenderer().getClassName());Blockly.utils.dom.addClass(e.getInjectionDiv(),e.getTheme().getClassName());!b.hasCategories&&b.languageTree&&(c=e.addFlyout(Blockly.utils.Svg.SVG),Blockly.utils.dom.insertAfter(c,a));b.hasTrashcan&&e.addTrashcan();b.zoomOptions&& +b.zoomOptions.controls&&e.addZoomControls();e.getThemeManager().subscribe(a,"workspaceBackgroundColour","background-color");e.translate(0,0);b.readOnly||e.isMovable()||e.addChangeListener(function(f){if(!e.isDragging()&&!e.isMovable()&&-1!=Blockly.Events.BUMP_EVENTS.indexOf(f.type)){var g=Object.create(null),h=e.getMetrics(),k=e.scale;g.RTL=e.RTL;g.viewLeft=h.viewLeft/k;g.viewTop=h.viewTop/k;g.viewRight=(h.viewLeft+h.viewWidth)/k;g.viewBottom=(h.viewTop+h.viewHeight)/k;e.isContentBounded()?(h=e.getBlocksBoundingBox(), +g.contentLeft=h.left,g.contentTop=h.top,g.contentRight=h.right,g.contentBottom=h.bottom):(g.contentLeft=h.contentLeft/k,g.contentTop=h.contentTop/k,g.contentRight=(h.contentLeft+h.contentWidth)/k,g.contentBottom=(h.contentTop+h.contentHeight)/k);if(g.contentTopg.viewBottom||g.contentLeftg.viewRight){h=null;f&&(h=Blockly.Events.getGroup(),Blockly.Events.setGroup(f.group));switch(f.type){case Blockly.Events.BLOCK_CREATE:case Blockly.Events.BLOCK_MOVE:var l= +e.getBlockById(f.blockId);l&&(l=l.getRootBlock());break;case Blockly.Events.COMMENT_CREATE:case Blockly.Events.COMMENT_MOVE:l=e.getCommentById(f.commentId)}if(l){k=l.getBoundingRectangle();k.height=k.bottom-k.top;k.width=k.right-k.left;var m=g.viewTop,n=g.viewBottom-k.height;n=Math.max(m,n);m=Blockly.utils.math.clamp(m,k.top,n)-k.top;n=g.viewLeft;var p=g.viewRight-k.width;g.RTL?n=Math.min(p,n):p=Math.max(n,p);g=Blockly.utils.math.clamp(n,k.left,p)-k.left;l.moveBy(g,m)}f&&(!f.group&&l&&console.warn("Moved object in bounds but there was no event group. This may break undo."), +null!==h&&Blockly.Events.setGroup(h))}}});Blockly.svgResize(e);Blockly.WidgetDiv.createDom();Blockly.DropDownDiv.createDom();Blockly.Tooltip.createDom();return e}; +Blockly.init_=function(a){var b=a.options,c=a.getParentSvg();Blockly.bindEventWithChecks_(c.parentNode,"contextmenu",null,function(e){Blockly.utils.isTargetInput(e)||e.preventDefault()});c=Blockly.bindEventWithChecks_(window,"resize",null,function(){Blockly.hideChaff(!0);Blockly.svgResize(a)});a.setResizeHandlerWrapper(c);Blockly.inject.bindDocumentEvents_();if(b.languageTree){c=a.getToolbox();var d=a.getFlyout(!0);c?c.init():d&&(d.init(a),d.show(b.languageTree),"function"==typeof d.scrollToStart&& +d.scrollToStart())}c=Blockly.Scrollbar.scrollbarThickness;b.hasTrashcan&&(c=a.trashcan.init(c));b.zoomOptions&&b.zoomOptions.controls&&a.zoomControls_.init(c);b.moveOptions&&b.moveOptions.scrollbars?(a.scrollbar=new Blockly.ScrollbarPair(a),a.scrollbar.resize()):a.setMetrics({x:.5,y:.5});b.hasSounds&&Blockly.inject.loadSounds_(b.pathToMedia,a)}; Blockly.inject.bindDocumentEvents_=function(){Blockly.documentEventsBound_||(Blockly.bindEventWithChecks_(document,"scroll",null,function(){for(var a=Blockly.Workspace.getAll(),b=0,c;c=a[b];b++)c.updateInverseScreenCTM&&c.updateInverseScreenCTM()}),Blockly.bindEventWithChecks_(document,"keydown",null,Blockly.onKeyDown),Blockly.bindEvent_(document,"touchend",null,Blockly.longStop_),Blockly.bindEvent_(document,"touchcancel",null,Blockly.longStop_),Blockly.utils.userAgent.IPAD&&Blockly.bindEventWithChecks_(window, "orientationchange",document,function(){Blockly.svgResize(Blockly.getMainWorkspace())}));Blockly.documentEventsBound_=!0}; Blockly.inject.loadSounds_=function(a,b){var c=b.getAudioManager();c.load([a+"click.mp3",a+"click.wav",a+"click.ogg"],"click");c.load([a+"disconnect.wav",a+"disconnect.mp3",a+"disconnect.ogg"],"disconnect");c.load([a+"delete.mp3",a+"delete.ogg",a+"delete.wav"],"delete");var d=[];a=function(){for(;d.length;)Blockly.unbindEvent_(d.pop());c.preload()};d.push(Blockly.bindEventWithChecks_(document,"mousemove",null,a,!0));d.push(Blockly.bindEventWithChecks_(document,"touchstart",null,a,!0))};Blockly.Names=function(a,b){this.variablePrefix_=b||"";this.reservedDict_=Object.create(null);if(a)for(a=a.split(","),b=0;b1'),d.appendChild(c),b.push(d));if(Blockly.Blocks.variables_get){a.sort(Blockly.VariableModel.compareByName);c=0;for(var e;e=a[c];c++)d=Blockly.utils.xml.createElement("block"),d.setAttribute("type","variables_get"),d.setAttribute("gap",8),d.appendChild(Blockly.Variables.generateVariableFieldDom(e)),b.push(d)}}return b}; Blockly.Variables.VAR_LETTER_OPTIONS="ijkmnopqrstuvwxyzabcdefgh";Blockly.Variables.generateUniqueName=function(a){return Blockly.Variables.generateUniqueNameFromOptions(Blockly.Variables.VAR_LETTER_OPTIONS.charAt(0),a.getAllVariableNames())}; Blockly.Variables.generateUniqueNameFromOptions=function(a,b){if(!b.length)return a;for(var c=Blockly.Variables.VAR_LETTER_OPTIONS,d="",e=c.indexOf(a);;){for(var f=!1,g=0;ge?Blockly.WidgetDiv.positionInternal_(a,0,c.height+e):Blockly.WidgetDiv.positionInternal_(a,e,c.height)};Blockly.WidgetDiv.calculateX_=function(a,b,c,d){if(d)return b=Math.max(b.right-c.width,a.left),Math.min(b,a.right-c.width);b=Math.min(b.left,a.right-c.width);return Math.max(b,a.left)}; -Blockly.WidgetDiv.calculateY_=function(a,b,c){return b.bottom+c.height>=a.bottom?b.top-c.height:b.bottom};Blockly.VERSION="3.20200625.2";Blockly.mainWorkspace=null;Blockly.selected=null;Blockly.draggingConnections=[];Blockly.clipboardXml_=null;Blockly.clipboardSource_=null;Blockly.clipboardTypeCounts_=null;Blockly.cache3dSupported_=null;Blockly.parentContainer=null;Blockly.svgSize=function(a){return new Blockly.utils.Size(a.cachedWidth_,a.cachedHeight_)};Blockly.resizeSvgContents=function(a){a.resizeContents()}; +Blockly.WidgetDiv.calculateY_=function(a,b,c){return b.bottom+c.height>=a.bottom?b.top-c.height:b.bottom};Blockly.VERSION="3.20200924.0";Blockly.mainWorkspace=null;Blockly.selected=null;Blockly.draggingConnections=[];Blockly.clipboardXml_=null;Blockly.clipboardSource_=null;Blockly.clipboardTypeCounts_=null;Blockly.cache3dSupported_=null;Blockly.parentContainer=null;Blockly.svgSize=function(a){return new Blockly.utils.Size(a.cachedWidth_,a.cachedHeight_)};Blockly.resizeSvgContents=function(a){a.resizeContents()}; Blockly.svgResize=function(a){for(;a.options.parentWorkspace;)a=a.options.parentWorkspace;var b=a.getParentSvg(),c=b.parentNode;if(c){var d=c.offsetWidth;c=c.offsetHeight;b.cachedWidth_!=d&&(b.setAttribute("width",d+"px"),b.cachedWidth_=d);b.cachedHeight_!=c&&(b.setAttribute("height",c+"px"),b.cachedHeight_=c);a.resize()}}; Blockly.onKeyDown=function(a){var b=Blockly.mainWorkspace;if(b&&!(Blockly.utils.isTargetInput(a)||b.rendered&&!b.isVisible()))if(b.options.readOnly)Blockly.navigation.onKeyPress(a);else{var c=!1;if(a.keyCode==Blockly.utils.KeyCodes.ESC)Blockly.hideChaff(),Blockly.navigation.onBlocklyAction(Blockly.navigation.ACTION_EXIT);else{if(!Blockly.Gesture.inProgress()&&Blockly.navigation.onKeyPress(a))return;if(a.keyCode==Blockly.utils.KeyCodes.BACKSPACE||a.keyCode==Blockly.utils.KeyCodes.DELETE){a.preventDefault(); if(Blockly.Gesture.inProgress())return;Blockly.selected&&Blockly.selected.isDeletable()&&(c=!0)}else if(a.altKey||a.ctrlKey||a.metaKey){if(Blockly.Gesture.inProgress())return;Blockly.selected&&Blockly.selected.isDeletable()&&Blockly.selected.isMovable()&&(a.keyCode==Blockly.utils.KeyCodes.C?(Blockly.hideChaff(),Blockly.copy_(Blockly.selected)):a.keyCode!=Blockly.utils.KeyCodes.X||Blockly.selected.workspace.isFlyout||(Blockly.copy_(Blockly.selected),c=!0));a.keyCode==Blockly.utils.KeyCodes.V?Blockly.clipboardXml_&& (a=Blockly.clipboardSource_,a.isFlyout&&(a=a.targetWorkspace),Blockly.clipboardTypeCounts_&&a.isCapacityAvailable(Blockly.clipboardTypeCounts_)&&(Blockly.Events.setGroup(!0),a.paste(Blockly.clipboardXml_),Blockly.Events.setGroup(!1))):a.keyCode==Blockly.utils.KeyCodes.Z?(Blockly.hideChaff(),b.undo(a.shiftKey)):a.ctrlKey&&a.keyCode==Blockly.utils.KeyCodes.Y&&(Blockly.hideChaff(),b.undo(!0))}}c&&!Blockly.selected.workspace.isFlyout&&(Blockly.Events.setGroup(!0),Blockly.hideChaff(),Blockly.selected.dispose(!0, -!0),Blockly.Events.setGroup(!1))}};Blockly.copy_=function(a){a=a.toCopyData();Blockly.clipboardXml_=a.xml;Blockly.clipboardSource_=a.source;Blockly.clipboardTypeCounts_=a.typeCounts};Blockly.duplicate=function(a){var b=Blockly.clipboardXml_,c=Blockly.clipboardSource_;Blockly.copy_(a);a.workspace.paste(Blockly.clipboardXml_);Blockly.clipboardXml_=b;Blockly.clipboardSource_=c};Blockly.onContextMenu_=function(a){Blockly.utils.isTargetInput(a)||a.preventDefault()}; -Blockly.hideChaff=function(a){Blockly.Tooltip.hide();Blockly.WidgetDiv.hide();Blockly.DropDownDiv.hideWithoutAnimation();a||(a=Blockly.getMainWorkspace(),a.trashcan&&a.trashcan.flyout&&a.trashcan.flyout.hide(),(a=a.getToolbox())&&a.getFlyout()&&a.getFlyout().autoClose&&a.clearSelection())};Blockly.getMainWorkspace=function(){return Blockly.mainWorkspace};Blockly.alert=function(a,b){alert(a);b&&b()};Blockly.confirm=function(a,b){b(confirm(a))};Blockly.prompt=function(a,b,c){c(prompt(a,b))}; +!0),Blockly.Events.setGroup(!1))}};Blockly.copy_=function(a){if(a=a.toCopyData())Blockly.clipboardXml_=a.xml,Blockly.clipboardSource_=a.source,Blockly.clipboardTypeCounts_=a.typeCounts};Blockly.duplicate=function(a){var b=Blockly.clipboardXml_,c=Blockly.clipboardSource_;Blockly.copy_(a);a.workspace.paste(Blockly.clipboardXml_);Blockly.clipboardXml_=b;Blockly.clipboardSource_=c};Blockly.onContextMenu_=function(a){Blockly.utils.isTargetInput(a)||a.preventDefault()}; +Blockly.hideChaff=function(a){Blockly.Tooltip.hide();Blockly.WidgetDiv.hide();Blockly.DropDownDiv.hideWithoutAnimation();a||(a=Blockly.getMainWorkspace(),a.trashcan&&a.trashcan.flyout&&a.trashcan.closeFlyout(),(a=a.getToolbox())&&a.getFlyout()&&a.getFlyout().autoClose&&a.clearSelection())};Blockly.getMainWorkspace=function(){return Blockly.mainWorkspace};Blockly.alert=function(a,b){alert(a);b&&b()};Blockly.confirm=function(a,b){b(confirm(a))};Blockly.prompt=function(a,b,c){c(prompt(a,b))}; Blockly.jsonInitFactory_=function(a){return function(){this.jsonInit(a)}}; Blockly.defineBlocksWithJsonArray=function(a){for(var b=0;b90-b||a>-90-b&&a<-90+b?!0:!1}; Blockly.HorizontalFlyout.prototype.getClientRect=function(){if(!this.svgGroup_)return null;var a=this.svgGroup_.getBoundingClientRect(),b=a.top;return this.toolboxPosition_==Blockly.TOOLBOX_AT_TOP?new Blockly.utils.Rect(-1E9,b+a.height,-1E9,1E9):new Blockly.utils.Rect(b,1E9,-1E9,1E9)}; -Blockly.HorizontalFlyout.prototype.reflowInternal_=function(){this.workspace_.scale=this.targetWorkspace.scale;for(var a=0,b=this.workspace_.getTopBlocks(!1),c=0,d;d=b[c];c++)a=Math.max(a,d.getHeightWidth().height);a+=1.5*this.MARGIN;a*=this.workspace_.scale;a+=Blockly.Scrollbar.scrollbarThickness;if(this.height_!=a){for(c=0;d=b[c];c++)d.flyoutRect_&&this.moveRectToBlock_(d.flyoutRect_,d);this.height_=a;this.position()}};Blockly.VerticalFlyout=function(a){Blockly.VerticalFlyout.superClass_.constructor.call(this,a)};Blockly.utils.object.inherits(Blockly.VerticalFlyout,Blockly.Flyout); +Blockly.HorizontalFlyout.prototype.reflowInternal_=function(){this.workspace_.scale=this.targetWorkspace.scale;for(var a=0,b=this.workspace_.getTopBlocks(!1),c=0,d;d=b[c];c++)a=Math.max(a,d.getHeightWidth().height);a+=1.5*this.MARGIN;a*=this.workspace_.scale;a+=Blockly.Scrollbar.scrollbarThickness;if(this.height_!=a){for(c=0;d=b[c];c++)d.flyoutRect_&&this.moveRectToBlock_(d.flyoutRect_,d);this.targetWorkspace.toolboxPosition!=this.toolboxPosition_||this.toolboxPosition_!=Blockly.TOOLBOX_AT_TOP||this.targetWorkspace.getToolbox()|| +this.targetWorkspace.translate(0,this.targetWorkspace.scrollY+a);this.height_=a;this.position()}};Blockly.registry.register(Blockly.registry.Type.FLYOUTS_HORIZONTAL_TOOLBOX,Blockly.registry.DEFAULT,Blockly.HorizontalFlyout);Blockly.VerticalFlyout=function(a){Blockly.VerticalFlyout.superClass_.constructor.call(this,a)};Blockly.utils.object.inherits(Blockly.VerticalFlyout,Blockly.Flyout);Blockly.VerticalFlyout.registryName="verticalFlyout"; Blockly.VerticalFlyout.prototype.getMetrics_=function(){if(!this.isVisible())return null;try{var a=this.workspace_.getCanvas().getBBox()}catch(e){a={height:0,y:0,width:0,x:0}}var b=this.SCROLLBAR_PADDING,c=this.height_-2*this.SCROLLBAR_PADDING,d=this.width_;this.RTL||(d-=this.SCROLLBAR_PADDING);return{contentHeight:a.height*this.workspace_.scale+2*this.MARGIN,contentWidth:a.width*this.workspace_.scale+2*this.MARGIN,contentTop:a.y,contentLeft:a.x,viewHeight:c,viewWidth:d,viewTop:-this.workspace_.scrollY+ a.y,viewLeft:-this.workspace_.scrollX,absoluteTop:b,absoluteLeft:0}};Blockly.VerticalFlyout.prototype.setMetrics_=function(a){var b=this.getMetrics_();b&&("number"==typeof a.y&&(this.workspace_.scrollY=-b.contentHeight*a.y),this.workspace_.translate(this.workspace_.scrollX+b.absoluteLeft,this.workspace_.scrollY+b.absoluteTop))}; Blockly.VerticalFlyout.prototype.position=function(){if(this.isVisible()){var a=this.targetWorkspace.getMetrics();a&&(this.height_=a.viewHeight,this.setBackgroundPath_(this.width_-this.CORNER_RADIUS,a.viewHeight-2*this.CORNER_RADIUS),this.positionAt_(this.width_,this.height_,this.targetWorkspace.toolboxPosition==this.toolboxPosition_?a.toolboxWidth?this.toolboxPosition_==Blockly.TOOLBOX_AT_LEFT?a.toolboxWidth:a.viewWidth-this.width_:this.toolboxPosition_==Blockly.TOOLBOX_AT_LEFT?0:a.viewWidth:this.toolboxPosition_== @@ -868,12 +906,14 @@ d.join(" "))};Blockly.VerticalFlyout.prototype.scrollToStart=function(){this.scr Blockly.VerticalFlyout.prototype.layout_=function(a,b){this.workspace_.scale=this.targetWorkspace.scale;for(var c=this.MARGIN,d=this.RTL?c:c+this.tabWidth_,e=0,f;f=a[e];e++)if("block"==f.type){f=f.block;for(var g=f.getDescendants(!1),h=0,k;k=g[h];h++)k.isInFlyout=!0;f.render();g=f.getSvgRoot();h=f.getHeightWidth();k=f.outputConnection?d-this.tabWidth_:d;f.moveBy(k,c);k=this.createRect_(f,this.RTL?k-h.width:k,c,h,e);this.addBlockListeners_(g,f,k);c+=h.height+b[e]}else"button"==f.type&&(this.initFlyoutButton_(f.button, d,c),c+=f.button.height+b[e])};Blockly.VerticalFlyout.prototype.isDragTowardWorkspace=function(a){a=Math.atan2(a.y,a.x)/Math.PI*180;var b=this.dragAngleRange_;return a-b||a<-180+b||a>180-b?!0:!1};Blockly.VerticalFlyout.prototype.getClientRect=function(){if(!this.svgGroup_)return null;var a=this.svgGroup_.getBoundingClientRect(),b=a.left;return this.toolboxPosition_==Blockly.TOOLBOX_AT_LEFT?new Blockly.utils.Rect(-1E9,1E9,-1E9,b+a.width):new Blockly.utils.Rect(-1E9,1E9,b,1E9)}; Blockly.VerticalFlyout.prototype.reflowInternal_=function(){this.workspace_.scale=this.targetWorkspace.scale;for(var a=0,b=this.workspace_.getTopBlocks(!1),c=0,d;d=b[c];c++){var e=d.getHeightWidth().width;d.outputConnection&&(e-=this.tabWidth_);a=Math.max(a,e)}for(c=0;d=this.buttons_[c];c++)a=Math.max(a,d.width);a+=1.5*this.MARGIN+this.tabWidth_;a*=this.workspace_.scale;a+=Blockly.Scrollbar.scrollbarThickness;if(this.width_!=a){for(c=0;d=b[c];c++){if(this.RTL){e=d.getRelativeToSurfaceXY().x;var f= -a/this.workspace_.scale-this.MARGIN;d.outputConnection||(f-=this.tabWidth_);d.moveBy(f-e,0)}d.flyoutRect_&&this.moveRectToBlock_(d.flyoutRect_,d)}if(this.RTL)for(c=0;d=this.buttons_[c];c++)b=d.getPosition().y,d.moveTo(a/this.workspace_.scale-d.width-this.MARGIN-this.tabWidth_,b);this.width_=a;this.position()}};Blockly.FlyoutButton=function(a,b,c,d){this.workspace_=a;this.targetWorkspace_=b;this.text_=c.text;this.position_=new Blockly.utils.Coordinate(0,0);this.isLabel_=d;this.callbackKey_=c.callbackKey||c.callbackkey;this.cssClass_=c["web-class"]||null;this.onMouseUpWrapper_=null};Blockly.FlyoutButton.MARGIN_X=5;Blockly.FlyoutButton.MARGIN_Y=2;Blockly.FlyoutButton.prototype.width=0;Blockly.FlyoutButton.prototype.height=0; -Blockly.FlyoutButton.prototype.createDom=function(){var a=this.isLabel_?"blocklyFlyoutLabel":"blocklyFlyoutButton";this.cssClass_&&(a+=" "+this.cssClass_);this.svgGroup_=Blockly.utils.dom.createSvgElement("g",{"class":a},this.workspace_.getCanvas());if(!this.isLabel_)var b=Blockly.utils.dom.createSvgElement("rect",{"class":"blocklyFlyoutButtonShadow",rx:4,ry:4,x:1,y:1},this.svgGroup_);a=Blockly.utils.dom.createSvgElement("rect",{"class":this.isLabel_?"blocklyFlyoutLabelBackground":"blocklyFlyoutButtonBackground", -rx:4,ry:4},this.svgGroup_);var c=Blockly.utils.dom.createSvgElement("text",{"class":this.isLabel_?"blocklyFlyoutLabelText":"blocklyText",x:0,y:0,"text-anchor":"middle"},this.svgGroup_),d=Blockly.utils.replaceMessageReferences(this.text_);this.workspace_.RTL&&(d+="\u200f");c.textContent=d;this.isLabel_&&(this.svgText_=c,this.workspace_.getThemeManager().subscribe(this.svgText_,"flyoutForegroundColour","fill"));var e=Blockly.utils.style.getComputedStyle(c,"fontSize"),f=Blockly.utils.style.getComputedStyle(c, -"fontWeight"),g=Blockly.utils.style.getComputedStyle(c,"fontFamily");this.width=Blockly.utils.dom.getFastTextWidthWithSizeString(c,e,f,g);d=Blockly.utils.dom.measureFontMetrics(d,e,f,g);this.height=d.height;this.isLabel_||(this.width+=2*Blockly.FlyoutButton.MARGIN_X,this.height+=2*Blockly.FlyoutButton.MARGIN_Y,b.setAttribute("width",this.width),b.setAttribute("height",this.height));a.setAttribute("width",this.width);a.setAttribute("height",this.height);c.setAttribute("x",this.width/2);c.setAttribute("y", -this.height/2-d.height/2+d.baseline);this.updateTransform_();this.onMouseUpWrapper_=Blockly.bindEventWithChecks_(this.svgGroup_,"mouseup",this,this.onMouseUp_);return this.svgGroup_};Blockly.FlyoutButton.prototype.show=function(){this.updateTransform_();this.svgGroup_.setAttribute("display","block")};Blockly.FlyoutButton.prototype.updateTransform_=function(){this.svgGroup_.setAttribute("transform","translate("+this.position_.x+","+this.position_.y+")")}; -Blockly.FlyoutButton.prototype.moveTo=function(a,b){this.position_.x=a;this.position_.y=b;this.updateTransform_()};Blockly.FlyoutButton.prototype.getPosition=function(){return this.position_};Blockly.FlyoutButton.prototype.getTargetWorkspace=function(){return this.targetWorkspace_};Blockly.FlyoutButton.prototype.dispose=function(){this.onMouseUpWrapper_&&Blockly.unbindEvent_(this.onMouseUpWrapper_);this.svgGroup_&&Blockly.utils.dom.removeNode(this.svgGroup_);this.svgText_&&this.workspace_.getThemeManager().unsubscribe(this.svgText_)}; +a/this.workspace_.scale-this.MARGIN;d.outputConnection||(f-=this.tabWidth_);d.moveBy(f-e,0)}d.flyoutRect_&&this.moveRectToBlock_(d.flyoutRect_,d)}if(this.RTL)for(c=0;d=this.buttons_[c];c++)b=d.getPosition().y,d.moveTo(a/this.workspace_.scale-d.width-this.MARGIN-this.tabWidth_,b);this.targetWorkspace.toolboxPosition!=this.toolboxPosition_||this.toolboxPosition_!=Blockly.TOOLBOX_AT_LEFT||this.targetWorkspace.getToolbox()||this.targetWorkspace.translate(this.targetWorkspace.scrollX+a,0);this.width_= +a;this.position()}};Blockly.registry.register(Blockly.registry.Type.FLYOUTS_VERTICAL_TOOLBOX,Blockly.registry.DEFAULT,Blockly.VerticalFlyout);Blockly.FlyoutButton=function(a,b,c,d){this.workspace_=a;this.targetWorkspace_=b;this.text_=c.text;this.position_=new Blockly.utils.Coordinate(0,0);this.isLabel_=d;this.callbackKey_=c.callbackKey||c.callbackkey;this.cssClass_=c["web-class"]||null;this.onMouseUpWrapper_=null;this.info=c};Blockly.FlyoutButton.MARGIN_X=5;Blockly.FlyoutButton.MARGIN_Y=2;Blockly.FlyoutButton.prototype.width=0;Blockly.FlyoutButton.prototype.height=0; +Blockly.FlyoutButton.prototype.createDom=function(){var a=this.isLabel_?"blocklyFlyoutLabel":"blocklyFlyoutButton";this.cssClass_&&(a+=" "+this.cssClass_);this.svgGroup_=Blockly.utils.dom.createSvgElement(Blockly.utils.Svg.G,{"class":a},this.workspace_.getCanvas());if(!this.isLabel_)var b=Blockly.utils.dom.createSvgElement(Blockly.utils.Svg.RECT,{"class":"blocklyFlyoutButtonShadow",rx:4,ry:4,x:1,y:1},this.svgGroup_);a=Blockly.utils.dom.createSvgElement(Blockly.utils.Svg.RECT,{"class":this.isLabel_? +"blocklyFlyoutLabelBackground":"blocklyFlyoutButtonBackground",rx:4,ry:4},this.svgGroup_);var c=Blockly.utils.dom.createSvgElement(Blockly.utils.Svg.TEXT,{"class":this.isLabel_?"blocklyFlyoutLabelText":"blocklyText",x:0,y:0,"text-anchor":"middle"},this.svgGroup_),d=Blockly.utils.replaceMessageReferences(this.text_);this.workspace_.RTL&&(d+="\u200f");c.textContent=d;this.isLabel_&&(this.svgText_=c,this.workspace_.getThemeManager().subscribe(this.svgText_,"flyoutForegroundColour","fill"));var e=Blockly.utils.style.getComputedStyle(c, +"fontSize"),f=Blockly.utils.style.getComputedStyle(c,"fontWeight"),g=Blockly.utils.style.getComputedStyle(c,"fontFamily");this.width=Blockly.utils.dom.getFastTextWidthWithSizeString(c,e,f,g);d=Blockly.utils.dom.measureFontMetrics(d,e,f,g);this.height=d.height;this.isLabel_||(this.width+=2*Blockly.FlyoutButton.MARGIN_X,this.height+=2*Blockly.FlyoutButton.MARGIN_Y,b.setAttribute("width",this.width),b.setAttribute("height",this.height));a.setAttribute("width",this.width);a.setAttribute("height",this.height); +c.setAttribute("x",this.width/2);c.setAttribute("y",this.height/2-d.height/2+d.baseline);this.updateTransform_();this.onMouseUpWrapper_=Blockly.bindEventWithChecks_(this.svgGroup_,"mouseup",this,this.onMouseUp_);return this.svgGroup_};Blockly.FlyoutButton.prototype.show=function(){this.updateTransform_();this.svgGroup_.setAttribute("display","block")}; +Blockly.FlyoutButton.prototype.updateTransform_=function(){this.svgGroup_.setAttribute("transform","translate("+this.position_.x+","+this.position_.y+")")};Blockly.FlyoutButton.prototype.moveTo=function(a,b){this.position_.x=a;this.position_.y=b;this.updateTransform_()};Blockly.FlyoutButton.prototype.isLabel=function(){return this.isLabel_};Blockly.FlyoutButton.prototype.getPosition=function(){return this.position_};Blockly.FlyoutButton.prototype.getButtonText=function(){return this.text_}; +Blockly.FlyoutButton.prototype.getTargetWorkspace=function(){return this.targetWorkspace_};Blockly.FlyoutButton.prototype.dispose=function(){this.onMouseUpWrapper_&&Blockly.unbindEvent_(this.onMouseUpWrapper_);this.svgGroup_&&Blockly.utils.dom.removeNode(this.svgGroup_);this.svgText_&&this.workspace_.getThemeManager().unsubscribe(this.svgText_)}; Blockly.FlyoutButton.prototype.onMouseUp_=function(a){(a=this.targetWorkspace_.getGesture(a))&&a.cancel();this.isLabel_&&this.callbackKey_?console.warn("Labels should not have callbacks. Label text: "+this.text_):this.isLabel_||this.callbackKey_&&this.targetWorkspace_.getButtonCallback(this.callbackKey_)?this.isLabel_||this.targetWorkspace_.getButtonCallback(this.callbackKey_)(this):console.warn("Buttons should have callbacks. Button text: "+this.text_)};Blockly.Css.register(".blocklyFlyoutButton {,fill: #888;,cursor: default;,},.blocklyFlyoutButtonShadow {,fill: #666;,},.blocklyFlyoutButton:hover {,fill: #aaa;,},.blocklyFlyoutLabel {,cursor: default;,},.blocklyFlyoutLabelBackground {,opacity: 0;,}".split(","));Blockly.Generator=function(a){this.name_=a;this.FUNCTION_NAME_PLACEHOLDER_REGEXP_=new RegExp(this.FUNCTION_NAME_PLACEHOLDER_,"g")};Blockly.Generator.NAME_TYPE="generated_function";Blockly.Generator.prototype.INFINITE_LOOP_TRAP=null;Blockly.Generator.prototype.STATEMENT_PREFIX=null;Blockly.Generator.prototype.STATEMENT_SUFFIX=null;Blockly.Generator.prototype.INDENT=" ";Blockly.Generator.prototype.COMMENT_WRAP=60;Blockly.Generator.prototype.ORDER_OVERRIDES=[]; Blockly.Generator.prototype.workspaceToCode=function(a){a||(console.warn("No workspace specified in workspaceToCode call. Guessing."),a=Blockly.getMainWorkspace());var b=[];this.init(a);a=a.getTopBlocks(!0);for(var c=0,d;d=a[c];c++){var e=this.blockToCode(d);Array.isArray(e)&&(e=e[0]);e&&(d.outputConnection&&(e=this.scrubNakedValue(e),this.STATEMENT_PREFIX&&!d.suppressPrefixSuffix&&(e=this.injectId(this.STATEMENT_PREFIX,d)+e),this.STATEMENT_SUFFIX&&!d.suppressPrefixSuffix&&(e+=this.injectId(this.STATEMENT_SUFFIX, d))),b.push(e))}b=b.join("\n");b=this.finish(b);b=b.replace(/^\s+\n/,"");b=b.replace(/\n\s+$/,"\n");return b=b.replace(/[ \t]+\n/g,"\n")};Blockly.Generator.prototype.prefixLines=function(a,b){return b+a.replace(/(?!\n$)\n/g,"\n"+b)};Blockly.Generator.prototype.allNestedComments=function(a){var b=[];a=a.getDescendants(!0);for(var c=0;ca&&(a=(a=this.getParent())?a.getDepth()+1:0,this.setDepth_(a));return a};Blockly.tree.BaseNode.prototype.setDepth_=function(a){if(a!=this.depth_){this.depth_=a;var b=this.getRowElement();if(b){var c=this.getPixelIndent_()+"px";this.rightToLeft_?b.style.paddingRight=c:b.style.paddingLeft=c}this.forEachChild(function(b){b.setDepth_(a+1)})}};Blockly.tree.BaseNode.prototype.contains=function(a){for(;a;){if(a==this)return!0;a=a.getParent()}return!1}; -Blockly.tree.BaseNode.prototype.getChildren=function(){var a=[];this.forEachChild(function(b){a.push(b)});return a};Blockly.tree.BaseNode.prototype.getParent=function(){return Blockly.tree.BaseNode.superClass_.getParent.call(this)};Blockly.tree.BaseNode.prototype.getPreviousSibling=function(){return this.previousSibling_};Blockly.tree.BaseNode.prototype.getNextSibling=function(){return this.nextSibling_};Blockly.tree.BaseNode.prototype.isLastSibling=function(){return!this.nextSibling_}; -Blockly.tree.BaseNode.prototype.isSelected=function(){return this.selected_};Blockly.tree.BaseNode.prototype.select=function(){var a=this.getTree();a&&a.setSelectedItem(this)};Blockly.tree.BaseNode.prototype.setSelected=function(a){if(this.selected_!=a){this.selected_=a;this.updateRow();var b=this.getElement();b&&(Blockly.utils.aria.setState(b,Blockly.utils.aria.State.SELECTED,a),a&&(a=this.getTree().getElement(),Blockly.utils.aria.setState(a,Blockly.utils.aria.State.ACTIVEDESCENDANT,this.getId())))}}; -Blockly.tree.BaseNode.prototype.setExpanded=function(a){var b=a!=this.expanded_,c;this.expanded_=a;var d=this.getTree(),e=this.getElement();if(this.hasChildren()){if(!a&&d&&this.contains(d.getSelectedItem())&&this.select(),e){if(c=this.getChildrenElement())Blockly.utils.style.setElementShown(c,a),Blockly.utils.aria.setState(e,Blockly.utils.aria.State.EXPANDED,a),a&&this.isInDocument()&&!c.hasChildNodes()&&(this.forEachChild(function(a){c.appendChild(a.toDom())}),this.forEachChild(function(a){a.enterDocument()})); -this.updateExpandIcon()}}else(c=this.getChildrenElement())&&Blockly.utils.style.setElementShown(c,!1);e&&this.updateIcon_();b&&(a?this.doNodeExpanded():this.doNodeCollapsed())};Blockly.tree.BaseNode.prototype.doNodeExpanded=function(){};Blockly.tree.BaseNode.prototype.doNodeCollapsed=function(){};Blockly.tree.BaseNode.prototype.toggle=function(){this.setExpanded(!this.expanded_)}; -Blockly.tree.BaseNode.prototype.toDom=function(){var a=this.expanded_&&this.hasChildren(),b=document.createElement("div");b.style.backgroundPosition=this.getBackgroundPosition();a||(b.style.display="none");a&&this.forEachChild(function(a){b.appendChild(a.toDom())});a=document.createElement("div");a.id=this.getId();a.appendChild(this.getRowDom());a.appendChild(b);return a};Blockly.tree.BaseNode.prototype.getPixelIndent_=function(){return Math.max(0,(this.getDepth()-1)*this.config_.indentWidth)}; -Blockly.tree.BaseNode.prototype.getRowDom=function(){var a=document.createElement("div");a.className=this.getRowClassName();a.style["padding-"+(this.rightToLeft_?"right":"left")]=this.getPixelIndent_()+"px";a.appendChild(this.getIconDom());a.appendChild(this.getLabelDom());return a};Blockly.tree.BaseNode.prototype.getRowClassName=function(){var a="";this.isSelected()&&(a=" "+(this.config_.cssSelectedRow||""));return this.config_.cssTreeRow+a}; -Blockly.tree.BaseNode.prototype.getLabelDom=function(){var a=document.createElement("span");a.className=this.config_.cssItemLabel||"";a.textContent=this.content;return a};Blockly.tree.BaseNode.prototype.getIconDom=function(){var a=document.createElement("span");a.style.display="inline-block";a.className=this.getCalculatedIconClass();return a};Blockly.tree.BaseNode.prototype.getCalculatedIconClass=function(){throw Error(Blockly.Component.Error.ABSTRACT_METHOD);}; -Blockly.tree.BaseNode.prototype.getBackgroundPosition=function(){return(this.isLastSibling()?"-100":(this.getDepth()-1)*this.config_.indentWidth)+"px 0"};Blockly.tree.BaseNode.prototype.getElement=function(){var a=Blockly.tree.BaseNode.superClass_.getElement.call(this);a||(a=document.getElementById(this.getId()),this.setElementInternal(a));return a};Blockly.tree.BaseNode.prototype.getRowElement=function(){var a=this.getElement();return a?a.firstChild:null}; -Blockly.tree.BaseNode.prototype.getIconElement=function(){var a=this.getRowElement();return a?a.firstChild:null};Blockly.tree.BaseNode.prototype.getLabelElement=function(){var a=this.getRowElement();return a&&a.lastChild?a.lastChild.previousSibling:null};Blockly.tree.BaseNode.prototype.getChildrenElement=function(){var a=this.getElement();return a?a.lastChild:null};Blockly.tree.BaseNode.prototype.updateRow=function(){var a=this.getRowElement();a&&(a.className=this.getRowClassName())}; -Blockly.tree.BaseNode.prototype.updateExpandIcon=function(){var a=this.getChildrenElement();a&&(a.style.backgroundPosition=this.getBackgroundPosition())};Blockly.tree.BaseNode.prototype.updateIcon_=function(){this.getIconElement().className=this.getCalculatedIconClass()};Blockly.tree.BaseNode.prototype.onClick_=function(a){a.preventDefault()}; -Blockly.tree.BaseNode.prototype.onKeyDown=function(a){switch(a.keyCode){case Blockly.utils.KeyCodes.RIGHT:var b=this.selectChild();break;case Blockly.utils.KeyCodes.LEFT:b=this.selectParent();break;case Blockly.utils.KeyCodes.DOWN:b=this.selectNext();break;case Blockly.utils.KeyCodes.UP:b=this.selectPrevious();break;case Blockly.utils.KeyCodes.ENTER:case Blockly.utils.KeyCodes.SPACE:this.toggle();b=!0;break;default:b=!1}b&&a.preventDefault();return b}; -Blockly.tree.BaseNode.prototype.selectNext=function(){var a=this.getNextShownNode();a&&a.select();return!0};Blockly.tree.BaseNode.prototype.selectPrevious=function(){var a=this.getPreviousShownNode();a&&a.select();return!0};Blockly.tree.BaseNode.prototype.selectParent=function(){if(this.hasChildren()&&this.expanded_)this.setExpanded(!1);else{var a=this.getParent(),b=this.getTree();a&&a!=b&&a.select()}return!0}; -Blockly.tree.BaseNode.prototype.selectChild=function(){return this.hasChildren()?(this.expanded_?this.getChildAt(0).select():this.setExpanded(!0),!0):!1};Blockly.tree.BaseNode.prototype.getLastShownDescendant=function(){return this.expanded_&&this.hasChildren()?this.getChildAt(this.getChildCount()-1).getLastShownDescendant():this}; -Blockly.tree.BaseNode.prototype.getNextShownNode=function(){if(this.hasChildren()&&this.expanded_)return this.getChildAt(0);for(var a=this,b;a!=this.getTree();){b=a.getNextSibling();if(null!=b)return b;a=a.getParent()}return null};Blockly.tree.BaseNode.prototype.getPreviousShownNode=function(){var a=this.getPreviousSibling();if(null!=a)return a.getLastShownDescendant();a=this.getParent();var b=this.getTree();return a==b||this==b?null:a}; -Blockly.tree.BaseNode.prototype.setTreeInternal=function(a){this.tree!=a&&(this.tree=a,this.forEachChild(function(b){b.setTreeInternal(a)}))};Blockly.tree.TreeNode=function(a,b,c){this.toolbox_=a;Blockly.tree.BaseNode.call(this,b,c);this.onSizeChanged_=null};Blockly.utils.object.inherits(Blockly.tree.TreeNode,Blockly.tree.BaseNode);Blockly.tree.TreeNode.prototype.getTree=function(){if(this.tree)return this.tree;var a=this.getParent();return a&&(a=a.getTree())?(this.setTreeInternal(a),a):null}; -Blockly.tree.TreeNode.prototype.getCalculatedIconClass=function(){var a=this.expanded_;if(a&&this.expandedIconClass)return this.expandedIconClass;var b=this.iconClass;if(!a&&b)return b;b=this.config_;if(this.hasChildren()){if(a&&b.cssExpandedFolderIcon)return b.cssTreeIcon+" "+b.cssExpandedFolderIcon;if(!a&&b.cssCollapsedFolderIcon)return b.cssTreeIcon+" "+b.cssCollapsedFolderIcon}else if(b.cssFileIcon)return b.cssTreeIcon+" "+b.cssFileIcon;return""}; -Blockly.tree.TreeNode.prototype.onClick_=function(a){this.hasChildren()?(this.toggle(),this.select()):this.isSelected()?this.getTree().setSelectedItem(null):this.select();this.updateRow()}; -Blockly.tree.TreeNode.prototype.onKeyDown=function(a){if(this.tree.toolbox_.horizontalLayout_){var b={},c=Blockly.utils.KeyCodes.DOWN,d=Blockly.utils.KeyCodes.UP;b[Blockly.utils.KeyCodes.RIGHT]=this.rightToLeft_?d:c;b[Blockly.utils.KeyCodes.LEFT]=this.rightToLeft_?c:d;b[Blockly.utils.KeyCodes.UP]=Blockly.utils.KeyCodes.LEFT;b[Blockly.utils.KeyCodes.DOWN]=Blockly.utils.KeyCodes.RIGHT;Object.defineProperties(a,{keyCode:{value:b[a.keyCode]||a.keyCode}})}return Blockly.tree.TreeNode.superClass_.onKeyDown.call(this, -a)};Blockly.tree.TreeNode.prototype.onSizeChanged=function(a){this.onSizeChanged_=a};Blockly.tree.TreeNode.prototype.resizeToolbox_=function(){this.onSizeChanged_&&this.onSizeChanged_.call(this.toolbox_)};Blockly.tree.TreeNode.prototype.doNodeExpanded=Blockly.tree.TreeNode.prototype.resizeToolbox_;Blockly.tree.TreeNode.prototype.doNodeCollapsed=Blockly.tree.TreeNode.prototype.resizeToolbox_;Blockly.tree.TreeControl=function(a,b){this.toolbox_=a;this.onKeydownWrapper_=this.onClickWrapper_=null;Blockly.tree.BaseNode.call(this,"",b);this.selected_=this.expanded_=!0;this.selectedItem_=this;this.onAfterSelected_=this.onBeforeSelected_=null};Blockly.utils.object.inherits(Blockly.tree.TreeControl,Blockly.tree.BaseNode);Blockly.tree.TreeControl.prototype.getTree=function(){return this};Blockly.tree.TreeControl.prototype.getToolbox=function(){return this.toolbox_}; -Blockly.tree.TreeControl.prototype.getDepth=function(){return 0};Blockly.tree.TreeControl.prototype.setExpanded=function(a){this.expanded_=a};Blockly.tree.TreeControl.prototype.getIconElement=function(){var a=this.getRowElement();return a?a.firstChild:null};Blockly.tree.TreeControl.prototype.updateExpandIcon=function(){};Blockly.tree.TreeControl.prototype.getRowClassName=function(){return Blockly.tree.TreeControl.superClass_.getRowClassName.call(this)+" "+this.config_.cssHideRoot}; -Blockly.tree.TreeControl.prototype.getCalculatedIconClass=function(){var a=this.expanded_;if(a&&this.expandedIconClass)return this.expandedIconClass;var b=this.iconClass;return!a&&b?b:""}; -Blockly.tree.TreeControl.prototype.setSelectedItem=function(a){if(a!=this.selectedItem_&&(!this.onBeforeSelected_||this.onBeforeSelected_.call(this.toolbox_,a))){var b=this.getSelectedItem();this.selectedItem_&&this.selectedItem_.setSelected(!1);(this.selectedItem_=a)&&a.setSelected(!0);this.onAfterSelected_&&this.onAfterSelected_.call(this.toolbox_,b,a)}};Blockly.tree.TreeControl.prototype.onBeforeSelected=function(a){this.onBeforeSelected_=a}; -Blockly.tree.TreeControl.prototype.onAfterSelected=function(a){this.onAfterSelected_=a};Blockly.tree.TreeControl.prototype.getSelectedItem=function(){return this.selectedItem_};Blockly.tree.TreeControl.prototype.initAccessibility=function(){Blockly.tree.TreeControl.superClass_.initAccessibility.call(this);var a=this.getElement();Blockly.utils.aria.setRole(a,Blockly.utils.aria.Role.TREE);Blockly.utils.aria.setState(a,Blockly.utils.aria.State.LABELLEDBY,this.getLabelElement().id)}; -Blockly.tree.TreeControl.prototype.enterDocument=function(){Blockly.tree.TreeControl.superClass_.enterDocument.call(this);var a=this.getElement();a.className=this.config_.cssRoot;a.setAttribute("hideFocus","true");this.attachEvents_();this.initAccessibility()};Blockly.tree.TreeControl.prototype.exitDocument=function(){Blockly.tree.TreeControl.superClass_.exitDocument.call(this);this.detachEvents_()}; -Blockly.tree.TreeControl.prototype.attachEvents_=function(){var a=this.getElement();a.tabIndex=0;this.onClickWrapper_=Blockly.bindEventWithChecks_(a,"click",this,this.handleMouseEvent_);this.onKeydownWrapper_=Blockly.bindEvent_(a,"keydown",this,this.handleKeyEvent_)}; -Blockly.tree.TreeControl.prototype.detachEvents_=function(){this.onClickWrapper_&&(Blockly.unbindEvent_(this.onClickWrapper_),this.onClickWrapper_=null);this.onKeydownWrapper_&&(Blockly.unbindEvent_(this.onKeydownWrapper_),this.onKeydownWrapper_=null)};Blockly.tree.TreeControl.prototype.handleMouseEvent_=function(a){var b=this.getNodeFromEvent_(a);if(b&&"click"==a.type)b.onClick_(a)}; -Blockly.tree.TreeControl.prototype.handleKeyEvent_=function(a){var b=!(!this.selectedItem_||!this.selectedItem_.onKeyDown(a));b&&(Blockly.utils.style.scrollIntoContainerView(this.selectedItem_.getElement(),this.getElement().parentNode),a.preventDefault());return b};Blockly.tree.TreeControl.prototype.getNodeFromEvent_=function(a){for(var b=a.target;b;){if(a=Blockly.tree.BaseNode.allNodes[b.id])return a;if(b==this.getElement())break;if(b.getAttribute("role")==Blockly.utils.aria.Role.GROUP)break;b=b.parentNode}return null}; -Blockly.tree.TreeControl.prototype.createNode=function(a){return new Blockly.tree.TreeNode(this.toolbox_,a||"",this.config_)};Blockly.Toolbox=function(a){this.workspace_=a;this.RTL=a.options.RTL;this.horizontalLayout_=a.options.horizontalLayout;this.toolboxPosition=a.options.toolboxPosition;this.config_={indentWidth:19,cssRoot:"blocklyTreeRoot",cssHideRoot:"blocklyHidden",cssTreeRow:"blocklyTreeRow",cssItemLabel:"blocklyTreeLabel",cssTreeIcon:"blocklyTreeIcon",cssExpandedFolderIcon:"blocklyTreeIconOpen",cssFileIcon:"blocklyTreeIconNone",cssSelectedRow:"blocklyTreeSelected"};this.treeSeparatorConfig_={cssTreeRow:"blocklyTreeSeparator"}; -this.horizontalLayout_&&(this.config_.cssTreeRow+=a.RTL?" blocklyHorizontalTreeRtl":" blocklyHorizontalTree",this.treeSeparatorConfig_.cssTreeRow="blocklyTreeSeparatorHorizontal "+(a.RTL?"blocklyHorizontalTreeRtl":"blocklyHorizontalTree"),this.config_.cssTreeIcon="");this.flyout_=null;this.height=this.width=0;this.lastCategory_=null}; -Blockly.Toolbox.prototype.init=function(){var a=this.workspace_,b=this.workspace_.getParentSvg();this.HtmlDiv=document.createElement("div");this.HtmlDiv.className="blocklyToolboxDiv blocklyNonSelectable";this.HtmlDiv.setAttribute("dir",a.RTL?"RTL":"LTR");b.parentNode.insertBefore(this.HtmlDiv,b);var c=a.getThemeManager();c.subscribe(this.HtmlDiv,"toolboxBackgroundColour","background-color");c.subscribe(this.HtmlDiv,"toolboxForegroundColour","color");Blockly.bindEventWithChecks_(this.HtmlDiv,"mousedown", -this,function(a){Blockly.utils.isRightButton(a)||a.target==this.HtmlDiv?Blockly.hideChaff(!1):Blockly.hideChaff(!0);Blockly.Touch.clearTouchIdentifier()},!1,!0);c=new Blockly.Options({parentWorkspace:a,rtl:a.RTL,oneBasedIndex:a.options.oneBasedIndex,horizontalLayout:a.horizontalLayout,renderer:a.options.renderer,rendererOverrides:a.options.rendererOverrides});c.toolboxPosition=a.options.toolboxPosition;if(a.horizontalLayout){if(!Blockly.HorizontalFlyout)throw Error("Missing require for Blockly.HorizontalFlyout"); -this.flyout_=new Blockly.HorizontalFlyout(c)}else{if(!Blockly.VerticalFlyout)throw Error("Missing require for Blockly.VerticalFlyout");this.flyout_=new Blockly.VerticalFlyout(c)}if(!this.flyout_)throw Error("One of Blockly.VerticalFlyout or Blockly.Horizontal must berequired.");Blockly.utils.dom.insertAfter(this.flyout_.createDom("svg"),b);this.flyout_.init(a);this.config_.cssCollapsedFolderIcon="blocklyTreeIconClosed"+(a.RTL?"Rtl":"Ltr");this.render(a.options.languageTree)}; -Blockly.Toolbox.prototype.render=function(a){this.tree_&&(this.tree_.dispose(),this.lastCategory_=null);var b=new Blockly.tree.TreeControl(this,this.config_);this.tree_=b;b.setSelectedItem(null);b.onBeforeSelected(this.handleBeforeTreeSelected_);b.onAfterSelected(this.handleAfterTreeSelected_);var c=null;if(a){this.tree_.contents=[];this.hasColours_=!1;c=this.createTree_(a,this.tree_);if(this.tree_.contents.length)throw Error("Toolbox cannot have both blocks and categories in the root level.");this.workspace_.resizeContents()}b.render(this.HtmlDiv); -c&&b.setSelectedItem(c);this.addColour_();this.position();this.horizontalLayout_&&Blockly.utils.aria.setState(this.tree_.getElement(),Blockly.utils.aria.State.ORIENTATION,"horizontal")}; -Blockly.Toolbox.prototype.createTree_=function(a,b){var c=null,d=null;if(!a)return null;for(var e=0,f;f=a[e];e++)switch(f.kind.toUpperCase()){case "CATEGORY":c=this.addCategory_(f,b)||c;d=f;break;case "SEP":d=this.addSeparator_(f,b,d)||d;break;case "BLOCK":case "SHADOW":case "LABEL":case "BUTTON":b.contents.push(f),d=f}return c}; -Blockly.Toolbox.prototype.addCategory_=function(a,b){var c=null,d=Blockly.utils.replaceMessageReferences(a.name),e=this.tree_.createNode(d);e.onSizeChanged(this.handleNodeSizeChanged_);e.contents=[];b.add(e);(b=a.custom)?e.contents=b:c=this.createTree_(a.contents,e)||c;this.setColourOrStyle_(a,e,d);return c=this.setExpanded_(a,e)||c}; -Blockly.Toolbox.prototype.setColourOrStyle_=function(a,b,c){var d=a.categorystyle;(a=a.colour)&&d?(b.hexColour="",console.warn('Toolbox category "'+c+'" must not have both a style and a colour')):d?this.setColourFromStyle_(d,b,c):this.setColour_(a,b,c)};Blockly.Toolbox.prototype.addSeparator_=function(a,b,c){if(c&&"CATEGORY"==c.kind.toUpperCase())b.add(new Blockly.Toolbox.TreeSeparator(this.treeSeparatorConfig_));else return b.contents.push(a),a;return null}; -Blockly.Toolbox.prototype.setExpanded_=function(a,b){var c=null;"true"==a.expanded?(b.contents.length&&(c=b),b.setExpanded(!0)):b.setExpanded(!1);return c};Blockly.Toolbox.prototype.handleBeforeTreeSelected_=function(a){if(a==this.tree_)return!1;this.lastCategory_&&(this.lastCategory_.getRowElement().style.backgroundColor="");if(a){var b=a.hexColour||"#57e";a.getRowElement().style.backgroundColor=b;this.addColour_(a)}return!0}; -Blockly.Toolbox.prototype.handleAfterTreeSelected_=function(a,b){b&&b.contents&&b.contents.length?(this.flyout_.show(b.contents),this.lastCategory_!=b&&this.flyout_.scrollToStart(),this.workspace_.keyboardAccessibilityMode&&Blockly.navigation.setState(Blockly.navigation.STATE_TOOLBOX)):(this.flyout_.hide(),!this.workspace_.keyboardAccessibilityMode||b instanceof Blockly.Toolbox.TreeSeparator||Blockly.navigation.setState(Blockly.navigation.STATE_WS));a!=b&&a!=this&&(a=new Blockly.Events.Ui(null,"category", -a&&a.content,b&&b.content),a.workspaceId=this.workspace_.id,Blockly.Events.fire(a));b&&(this.lastCategory_=b)};Blockly.Toolbox.prototype.handleNodeSizeChanged_=function(){Blockly.svgResize(this.workspace_)}; -Blockly.Toolbox.prototype.onBlocklyAction=function(a){var b=this.tree_.getSelectedItem();if(!b)return!1;switch(a.name){case Blockly.navigation.actionNames.PREVIOUS:return b.selectPrevious();case Blockly.navigation.actionNames.OUT:return b.selectParent();case Blockly.navigation.actionNames.NEXT:return b.selectNext();case Blockly.navigation.actionNames.IN:return b.selectChild();default:return!1}}; -Blockly.Toolbox.prototype.dispose=function(){this.flyout_.dispose();this.tree_.dispose();this.workspace_.getThemeManager().unsubscribe(this.HtmlDiv);Blockly.utils.dom.removeNode(this.HtmlDiv);this.lastCategory_=null};Blockly.Toolbox.prototype.setVisible=function(a){this.HtmlDiv.style.display=a?"block":"none"};Blockly.Toolbox.prototype.getWidth=function(){return this.width};Blockly.Toolbox.prototype.getHeight=function(){return this.height};Blockly.Toolbox.prototype.getFlyout=function(){return this.flyout_}; -Blockly.Toolbox.prototype.position=function(){var a=this.HtmlDiv;if(a){var b=Blockly.svgSize(this.workspace_.getParentSvg());this.horizontalLayout_?(a.style.left="0",a.style.height="auto",a.style.width=b.width+"px",this.height=a.offsetHeight,this.toolboxPosition==Blockly.TOOLBOX_AT_TOP?a.style.top="0":a.style.bottom="0"):(this.toolboxPosition==Blockly.TOOLBOX_AT_RIGHT?a.style.right="0":a.style.left="0",a.style.height=b.height+"px",this.width=a.offsetWidth);this.flyout_.position()}}; -Blockly.Toolbox.prototype.setColour_=function(a,b,c){a=Blockly.utils.replaceMessageReferences(a);if(null===a||""===a)b.hexColour="";else{var d=Number(a);isNaN(d)?(d=Blockly.utils.colour.parse(a))?(b.hexColour=d,this.hasColours_=!0):(b.hexColour="",console.warn('Toolbox category "'+c+'" has unrecognized colour attribute: '+a)):(b.hexColour=Blockly.hueToHex(d),this.hasColours_=!0)}}; -Blockly.Toolbox.prototype.setColourFromStyle_=function(a,b,c){b.styleName=a;var d=this.workspace_.getTheme();a&&d&&((d=d.categoryStyles[a])&&d.colour?this.setColour_(d.colour,b,c):console.warn('Style "'+a+'" must exist and contain a colour value'))};Blockly.Toolbox.prototype.updateColourFromTheme_=function(a){if(a=a||this.tree_){a=a.getChildren(!1);for(var b=0,c;c=a[b];b++)c.styleName&&(this.setColourFromStyle_(c.styleName,c,""),this.addColour_()),this.updateColourFromTheme_(c)}}; -Blockly.Toolbox.prototype.refreshTheme=function(){var a=this.tree_;a&&(this.updateColourFromTheme_(a),this.updateSelectedItemColour_(a))};Blockly.Toolbox.prototype.updateSelectedItemColour_=function(a){if(a=a.getSelectedItem()){var b=a.hexColour||"#57e";a.getRowElement().style.backgroundColor=b;this.addColour_(a)}}; -Blockly.Toolbox.prototype.addColour_=function(a){a=(a||this.tree_).getChildren(!1);for(var b=0,c;c=a[b];b++){var d=c.getRowElement();if(d){var e=this.hasColours_?"8px solid "+(c.hexColour||"#ddd"):"none";this.workspace_.RTL?d.style.borderRight=e:d.style.borderLeft=e}this.addColour_(c)}};Blockly.Toolbox.prototype.clearSelection=function(){this.tree_.setSelectedItem(null)};Blockly.Toolbox.prototype.addStyle=function(a){Blockly.utils.dom.addClass(this.HtmlDiv,a)}; -Blockly.Toolbox.prototype.removeStyle=function(a){Blockly.utils.dom.removeClass(this.HtmlDiv,a)}; -Blockly.Toolbox.prototype.getClientRect=function(){if(!this.HtmlDiv)return null;var a=this.HtmlDiv.getBoundingClientRect(),b=a.top,c=b+a.height,d=a.left;a=d+a.width;return this.toolboxPosition==Blockly.TOOLBOX_AT_TOP?new Blockly.utils.Rect(-1E7,c,-1E7,1E7):this.toolboxPosition==Blockly.TOOLBOX_AT_BOTTOM?new Blockly.utils.Rect(b,1E7,-1E7,1E7):this.toolboxPosition==Blockly.TOOLBOX_AT_LEFT?new Blockly.utils.Rect(-1E7,1E7,-1E7,a):new Blockly.utils.Rect(-1E7,1E7,d,1E7)}; -Blockly.Toolbox.prototype.refreshSelection=function(){var a=this.tree_.getSelectedItem();a&&a.contents&&this.flyout_.show(a.contents)};Blockly.Toolbox.prototype.selectFirstCategory=function(){this.tree_.getSelectedItem()||this.tree_.selectChild()};Blockly.Toolbox.TreeSeparator=function(a){Blockly.tree.TreeNode.call(this,null,"",a)};Blockly.utils.object.inherits(Blockly.Toolbox.TreeSeparator,Blockly.tree.TreeNode); -Blockly.Css.register([".blocklyToolboxDelete {",'cursor: url("<<>>/handdelete.cur"), auto;',"}",".blocklyToolboxGrab {",'cursor: url("<<>>/handclosed.cur"), auto;',"cursor: grabbing;","cursor: -webkit-grabbing;","}",".blocklyToolboxDiv {","background-color: #ddd;","overflow-x: visible;","overflow-y: auto;","position: absolute;","z-index: 70;","-webkit-tap-highlight-color: transparent;","}",".blocklyTreeRoot {","padding: 4px 0;","}",".blocklyTreeRoot:focus {","outline: none;","}",".blocklyTreeRow {", -"height: 22px;","line-height: 22px;","margin-bottom: 3px;","padding-right: 8px;","white-space: nowrap;","}",".blocklyHorizontalTree {","float: left;","margin: 1px 5px 8px 0;","}",".blocklyHorizontalTreeRtl {","float: right;","margin: 1px 0 8px 5px;","}",'.blocklyToolboxDiv[dir="RTL"] .blocklyTreeRow {',"margin-left: 8px;","}",".blocklyTreeRow:not(.blocklyTreeSelected):hover {","background-color: rgba(255, 255, 255, 0.2);","}",".blocklyTreeSeparator {","border-bottom: solid #e5e5e5 1px;","height: 0;", -"margin: 5px 0;","}",".blocklyTreeSeparatorHorizontal {","border-right: solid #e5e5e5 1px;","width: 0;","padding: 5px 0;","margin: 0 5px;","}",".blocklyTreeIcon {","background-image: url(<<>>/sprites.png);","height: 16px;","vertical-align: middle;","width: 16px;","}",".blocklyTreeIconClosedLtr {","background-position: -32px -1px;","}",".blocklyTreeIconClosedRtl {","background-position: 0 -1px;","}",".blocklyTreeIconOpen {","background-position: -16px -1px;","}",".blocklyTreeSelected>.blocklyTreeIconClosedLtr {", -"background-position: -32px -17px;","}",".blocklyTreeSelected>.blocklyTreeIconClosedRtl {","background-position: 0 -17px;","}",".blocklyTreeSelected>.blocklyTreeIconOpen {","background-position: -16px -17px;","}",".blocklyTreeIconNone,",".blocklyTreeSelected>.blocklyTreeIconNone {","background-position: -48px -1px;","}",".blocklyTreeLabel {","cursor: default;","font: 16px sans-serif;","padding: 0 3px;","vertical-align: middle;","}",".blocklyToolboxDelete .blocklyTreeLabel {",'cursor: url("<<>>/handdelete.cur"), auto;', -"}",".blocklyTreeSelected .blocklyTreeLabel {","color: #fff;","}"]);Blockly.registry.register(Blockly.registry.Type.TOOLBOX,Blockly.registry.DEFAULT,Blockly.Toolbox);Blockly.Trashcan=function(a){this.workspace_=a;this.contents_=[];this.flyout=null;if(!(0>=this.workspace_.options.maxTrashcanContents)){a=new Blockly.Options({scrollbars:!0,parentWorkspace:this.workspace_,rtl:this.workspace_.RTL,oneBasedIndex:this.workspace_.options.oneBasedIndex,renderer:this.workspace_.options.renderer,rendererOverrides:this.workspace_.options.rendererOverrides});if(this.workspace_.horizontalLayout){a.toolboxPosition=this.workspace_.toolboxPosition==Blockly.TOOLBOX_AT_TOP?Blockly.TOOLBOX_AT_BOTTOM: -Blockly.TOOLBOX_AT_TOP;if(!Blockly.HorizontalFlyout)throw Error("Missing require for Blockly.HorizontalFlyout");this.flyout=new Blockly.HorizontalFlyout(a)}else{a.toolboxPosition=this.workspace_.toolboxPosition==Blockly.TOOLBOX_AT_RIGHT?Blockly.TOOLBOX_AT_LEFT:Blockly.TOOLBOX_AT_RIGHT;if(!Blockly.VerticalFlyout)throw Error("Missing require for Blockly.VerticalFlyout");this.flyout=new Blockly.VerticalFlyout(a)}this.workspace_.addChangeListener(this.onDelete_.bind(this))}}; +Blockly.Generator.prototype.finish=function(a){return a};Blockly.Generator.prototype.scrubNakedValue=function(a){return a};Blockly.ToolboxItem=function(a,b,c){this.id_=a.id||Blockly.utils.IdGenerator.getNextUniqueId();this.level_=(this.parent_=c||null)?this.parent_.getLevel()+1:0;this.toolboxItemDef_=a;this.parentToolbox_=b;this.workspace_=this.parentToolbox_.getWorkspace()};Blockly.ToolboxItem.prototype.init=function(){};Blockly.ToolboxItem.prototype.getDiv=function(){return null};Blockly.ToolboxItem.prototype.getId=function(){return this.id_};Blockly.ToolboxItem.prototype.getParent=function(){return null}; +Blockly.ToolboxItem.prototype.getLevel=function(){return this.level_};Blockly.ToolboxItem.prototype.isSelectable=function(){return!1};Blockly.ToolboxItem.prototype.isCollapsible=function(){return!1};Blockly.ToolboxItem.prototype.dispose=function(){};Blockly.ToolboxCategory=function(a,b,c){Blockly.ToolboxCategory.superClass_.constructor.call(this,a,b,c);this.name_=Blockly.utils.replaceMessageReferences(a.name);this.colour_=this.getColour_(a);this.iconDom_=this.rowContents_=this.rowDiv_=this.htmlDiv_=null;this.cssConfig_=this.makeDefaultCssConfig_();Blockly.utils.object.mixin(this.cssConfig_,a.cssconfig||a.cssConfig);this.isDisabled_=this.isHidden_=!1;this.flyoutItems_=[];this.parseContents_(a)}; +Blockly.utils.object.inherits(Blockly.ToolboxCategory,Blockly.ToolboxItem);Blockly.ToolboxCategory.registrationName="category";Blockly.ToolboxCategory.nestedPadding=19;Blockly.ToolboxCategory.borderWidth=8;Blockly.ToolboxCategory.defaultBackgroundColour="#57e"; +Blockly.ToolboxCategory.prototype.makeDefaultCssConfig_=function(){return{container:"blocklyToolboxCategory",row:"blocklyTreeRow",rowContentContainer:"blocklyTreeRowContentContainer",icon:"blocklyTreeIcon",label:"blocklyTreeLabel",contents:"blocklyToolboxContents",selected:"blocklyTreeSelected",openIcon:"blocklyTreeIconOpen",closedIcon:"blocklyTreeIconClosed"}}; +Blockly.ToolboxCategory.prototype.parseContents_=function(a){var b=a.contents;if(a.custom)this.flyoutItems_=a.custom;else if(b){a=0;for(var c;c=b[a];a++)this.flyoutItems_.push(c)}};Blockly.ToolboxCategory.prototype.init=function(){this.createDom_();"true"==this.toolboxItemDef_.hidden&&this.hide()}; +Blockly.ToolboxCategory.prototype.createDom_=function(){this.htmlDiv_=this.createContainer_();Blockly.utils.aria.setRole(this.htmlDiv_,Blockly.utils.aria.Role.TREEITEM);Blockly.utils.aria.setState(this.htmlDiv_,Blockly.utils.aria.State.SELECTED,!1);Blockly.utils.aria.setState(this.htmlDiv_,Blockly.utils.aria.State.LEVEL,this.level_);this.rowDiv_=this.createRowContainer_();this.rowDiv_.setAttribute("id",this.id_);this.rowDiv_.style.pointerEvents="auto";this.htmlDiv_.appendChild(this.rowDiv_);this.rowContents_= +this.createRowContentsContainer_();this.rowContents_.style.pointerEvents="none";this.rowDiv_.appendChild(this.rowContents_);this.iconDom_=this.createIconDom_();Blockly.utils.aria.setRole(this.iconDom_,Blockly.utils.aria.Role.PRESENTATION);this.rowContents_.appendChild(this.iconDom_);var a=this.createLabelDom_(this.name_);this.rowContents_.appendChild(a);Blockly.utils.aria.setState(this.htmlDiv_,Blockly.utils.aria.State.LABELLEDBY,a.getAttribute("id"));this.addColourBorder_(this.colour_);return this.htmlDiv_}; +Blockly.ToolboxCategory.prototype.createContainer_=function(){var a=document.createElement("div");Blockly.utils.dom.addClass(a,this.cssConfig_.container);return a};Blockly.ToolboxCategory.prototype.createRowContainer_=function(){var a=document.createElement("div");Blockly.utils.dom.addClass(a,this.cssConfig_.row);var b=Blockly.ToolboxCategory.nestedPadding*this.getLevel();b=b.toString()+"px";this.workspace_.RTL?a.style.paddingRight=b:a.style.paddingLeft=b;return a}; +Blockly.ToolboxCategory.prototype.createRowContentsContainer_=function(){var a=document.createElement("div");Blockly.utils.dom.addClass(a,this.cssConfig_.rowContentContainer);return a};Blockly.ToolboxCategory.prototype.createIconDom_=function(){var a=document.createElement("span");this.parentToolbox_.isHorizontal()||Blockly.utils.dom.addClass(a,this.cssConfig_.icon);a.style.display="inline-block";return a}; +Blockly.ToolboxCategory.prototype.createLabelDom_=function(a){var b=document.createElement("span");b.setAttribute("id",this.getId()+".label");b.textContent=a;Blockly.utils.dom.addClass(b,this.cssConfig_.label);return b};Blockly.ToolboxCategory.prototype.refreshTheme=function(){this.colour_=this.getColour_(this.toolboxItemDef_);this.addColourBorder_(this.colour_)}; +Blockly.ToolboxCategory.prototype.addColourBorder_=function(a){a&&(a=Blockly.ToolboxCategory.borderWidth+"px solid "+(a||"#ddd"),this.workspace_.RTL?this.rowDiv_.style.borderRight=a:this.rowDiv_.style.borderLeft=a)};Blockly.ToolboxCategory.prototype.getColour_=function(a){var b=a.categorystyle||a.categoryStyle;if((a=a.colour)&&b)console.warn('Toolbox category "'+this.name_+'" must not have both a style and a colour');else return b?this.getColourfromStyle_(b):this.parseColour_(a);return""}; +Blockly.ToolboxCategory.prototype.getColourfromStyle_=function(a){var b=this.workspace_.getTheme();if(a&&b){if((b=b.categoryStyles[a])&&b.colour)return this.parseColour_(b.colour);console.warn('Style "'+a+'" must exist and contain a colour value')}return""}; +Blockly.ToolboxCategory.prototype.parseColour_=function(a){a=Blockly.utils.replaceMessageReferences(a);if(null==a||""===a)return"";var b=Number(a);if(isNaN(b)){if(b=Blockly.utils.colour.parse(a))return b;console.warn('Toolbox category "'+this.name_+'" has unrecognized colour attribute: '+a);return""}return Blockly.hueToHex(b)};Blockly.ToolboxCategory.prototype.openIcon_=function(a){a&&(Blockly.utils.dom.removeClasses(a,this.cssConfig_.closedIcon),Blockly.utils.dom.addClass(a,this.cssConfig_.openIcon))}; +Blockly.ToolboxCategory.prototype.closeIcon_=function(a){a&&(Blockly.utils.dom.removeClasses(a,this.cssConfig_.openIcon),Blockly.utils.dom.addClass(a,this.cssConfig_.closedIcon))};Blockly.ToolboxCategory.prototype.setVisible_=function(a){this.htmlDiv_.style.display=a?"block":"none";this.isHidden_=!a;this.parentToolbox_.getSelectedItem()==this&&this.parentToolbox_.clearSelection()};Blockly.ToolboxCategory.prototype.hide=function(){this.setVisible_(!1)};Blockly.ToolboxCategory.prototype.show=function(){this.setVisible_(!0)}; +Blockly.ToolboxCategory.prototype.isVisible=function(){return!this.isHidden_&&this.allAncestorsExpanded_()};Blockly.ToolboxCategory.prototype.allAncestorsExpanded_=function(){for(var a=this;a.getParent();)if(a=a.getParent(),!a.isExpanded())return!1;return!0};Blockly.ToolboxCategory.prototype.isSelectable=function(){return this.isVisible()&&!this.isDisabled_};Blockly.ToolboxCategory.prototype.onClick=function(a){}; +Blockly.ToolboxCategory.prototype.setSelected=function(a){if(a){var b=this.parseColour_(Blockly.ToolboxCategory.defaultBackgroundColour);this.rowDiv_.style.backgroundColor=this.colour_||b;Blockly.utils.dom.addClass(this.rowDiv_,this.cssConfig_.selected)}else this.rowDiv_.style.backgroundColor="",Blockly.utils.dom.removeClass(this.rowDiv_,this.cssConfig_.selected);Blockly.utils.aria.setState(this.htmlDiv_,Blockly.utils.aria.State.SELECTED,a)}; +Blockly.ToolboxCategory.prototype.setDisabled=function(a){this.isDisabled_=a;this.getDiv().setAttribute("disabled",a);a?this.getDiv().setAttribute("disabled","true"):this.getDiv().removeAttribute("disabled")};Blockly.ToolboxCategory.prototype.getName=function(){return this.name_};Blockly.ToolboxCategory.prototype.getParent=function(){return this.parent_};Blockly.ToolboxCategory.prototype.getDiv=function(){return this.htmlDiv_};Blockly.ToolboxCategory.prototype.getContents=function(){return this.flyoutItems_}; +Blockly.ToolboxCategory.prototype.updateFlyoutContents=function(a){this.flyoutItems_=[];"string"==typeof a?this.toolboxItemDef_.custom=a:(delete this.toolboxItemDef_.custom,this.toolboxItemDef_.contents=Blockly.utils.toolbox.convertFlyoutDefToJsonArray(a));this.parseContents_(this.toolboxItemDef_)};Blockly.ToolboxCategory.prototype.dispose=function(){Blockly.utils.dom.removeNode(this.htmlDiv_)}; +Blockly.Css.register([".blocklyTreeRow:not(.blocklyTreeSelected):hover {","background-color: rgba(255, 255, 255, 0.2);","}",'.blocklyToolboxDiv[layout="h"] .blocklyToolboxCategory {',"margin: 1px 5px 1px 0;","}",'.blocklyToolboxDiv[dir="RTL"][layout="h"] .blocklyToolboxCategory {',"margin: 1px 0 1px 5px;","}",".blocklyTreeRow {","height: 22px;","line-height: 22px;","margin-bottom: 3px;","padding-right: 8px;","white-space: nowrap;","}",'.blocklyToolboxDiv[dir="RTL"] .blocklyTreeRow {',"margin-left: 8px;", +"padding-right: 0px","}",".blocklyTreeIcon {","background-image: url(<<>>/sprites.png);","height: 16px;","vertical-align: middle;","visibility: hidden;","width: 16px;","}",".blocklyTreeIconClosed {","background-position: -32px -1px;","}",'.blocklyToolboxDiv[dir="RTL"] .blocklyTreeIconClosed {',"background-position: 0 -1px;","}",".blocklyTreeSelected>.blocklyTreeIconClosed {","background-position: -32px -17px;","}",'.blocklyToolboxDiv[dir="RTL"] .blocklyTreeSelected>.blocklyTreeIconClosed {', +"background-position: 0 -17px;","}",".blocklyTreeIconOpen {","background-position: -16px -1px;","}",".blocklyTreeSelected>.blocklyTreeIconOpen {","background-position: -16px -17px;","}",".blocklyTreeLabel {","cursor: default;","font: 16px sans-serif;","padding: 0 3px;","vertical-align: middle;","}",".blocklyToolboxDelete .blocklyTreeLabel {",'cursor: url("<<>>/handdelete.cur"), auto;',"}",".blocklyTreeSelected .blocklyTreeLabel {","color: #fff;","}"]); +Blockly.registry.register(Blockly.registry.Type.TOOLBOX_ITEM,Blockly.ToolboxCategory.registrationName,Blockly.ToolboxCategory);Blockly.ToolboxSeparator=function(a,b){Blockly.ToolboxSeparator.superClass_.constructor.call(this,a,b);this.cssConfig_={container:"blocklyTreeSeparator"};Blockly.utils.object.mixin(this.cssConfig_,a.cssconfig||a.cssConfig)};Blockly.utils.object.inherits(Blockly.ToolboxSeparator,Blockly.ToolboxItem);Blockly.ToolboxSeparator.registrationName="sep";Blockly.ToolboxSeparator.prototype.init=function(){this.createDom_()}; +Blockly.ToolboxSeparator.prototype.createDom_=function(){var a=document.createElement("div");Blockly.utils.dom.addClass(a,this.cssConfig_.container);return this.htmlDiv_=a};Blockly.ToolboxSeparator.prototype.getDiv=function(){return this.htmlDiv_};Blockly.ToolboxSeparator.prototype.dispose=function(){Blockly.utils.dom.removeNode(this.htmlDiv_)};Blockly.Css.register('.blocklyTreeSeparator {,border-bottom: solid #e5e5e5 1px;,height: 0;,margin: 5px 0;,},.blocklyToolboxDiv[layout="h"] .blocklyTreeSeparator {,border-right: solid #e5e5e5 1px;,border-bottom: none;,height: auto;,margin: 0 5px 0 5px;,padding: 5px 0;,width: 0;,}'.split(",")); +Blockly.registry.register(Blockly.registry.Type.TOOLBOX_ITEM,Blockly.ToolboxSeparator.registrationName,Blockly.ToolboxSeparator);Blockly.CollapsibleToolboxCategory=function(a,b,c){this.subcategoriesDiv_=null;this.expanded_=!1;this.toolboxItems_=[];Blockly.CollapsibleToolboxCategory.superClass_.constructor.call(this,a,b,c)};Blockly.utils.object.inherits(Blockly.CollapsibleToolboxCategory,Blockly.ToolboxCategory);Blockly.CollapsibleToolboxCategory.registrationName="collapsibleCategory"; +Blockly.CollapsibleToolboxCategory.prototype.makeDefaultCssConfig_=function(){var a=Blockly.CollapsibleToolboxCategory.superClass_.makeDefaultCssConfig_.call(this);a.contents="blocklyToolboxContents";return a}; +Blockly.CollapsibleToolboxCategory.prototype.parseContents_=function(a){var b=a.contents,c=!0;if(a.custom)this.flyoutItems_=a.custom;else if(b){a=0;for(var d;d=b[a];a++)!Blockly.registry.hasItem(Blockly.registry.Type.TOOLBOX_ITEM,d.kind)||d.kind.toLowerCase()==Blockly.ToolboxSeparator.registrationName&&c?(this.flyoutItems_.push(d),c=!0):(this.createToolboxItem_(d),c=!1)}}; +Blockly.CollapsibleToolboxCategory.prototype.createToolboxItem_=function(a){var b=a.kind;"CATEGORY"==b.toUpperCase()&&Blockly.utils.toolbox.isCategoryCollapsible(a)&&(b=Blockly.CollapsibleToolboxCategory.registrationName);a=new (Blockly.registry.getClass(Blockly.registry.Type.TOOLBOX_ITEM,b))(a,this.parentToolbox_,this);this.toolboxItems_.push(a)}; +Blockly.CollapsibleToolboxCategory.prototype.init=function(){Blockly.CollapsibleToolboxCategory.superClass_.init.call(this);this.setExpanded("true"==this.toolboxItemDef_.expanded||this.toolboxItemDef_.expanded)}; +Blockly.CollapsibleToolboxCategory.prototype.createDom_=function(){Blockly.CollapsibleToolboxCategory.superClass_.createDom_.call(this);var a=this.getChildToolboxItems();this.subcategoriesDiv_=this.createSubCategoriesDom_(a);Blockly.utils.aria.setRole(this.subcategoriesDiv_,Blockly.utils.aria.Role.GROUP);this.htmlDiv_.appendChild(this.subcategoriesDiv_);return this.htmlDiv_}; +Blockly.CollapsibleToolboxCategory.prototype.createIconDom_=function(){var a=document.createElement("span");this.parentToolbox_.isHorizontal()||(Blockly.utils.dom.addClass(a,this.cssConfig_.icon),a.style.visibility="visible");a.style.display="inline-block";return a};Blockly.CollapsibleToolboxCategory.prototype.createSubCategoriesDom_=function(a){var b=document.createElement("div");Blockly.utils.dom.addClass(b,this.cssConfig_.contents);for(var c=0;c>>/handdelete.cur"), auto;',"}",".blocklyToolboxGrab {",'cursor: url("<<>>/handclosed.cur"), auto;',"cursor: grabbing;","cursor: -webkit-grabbing;","}",".blocklyToolboxDiv {","background-color: #ddd;","overflow-x: visible;","overflow-y: auto;","padding: 4px 0 4px 0;","position: absolute;","z-index: 70;","-webkit-tap-highlight-color: transparent;","}",".blocklyToolboxContents {","display: flex;","flex-wrap: wrap;","flex-direction: column;", +"}",".blocklyToolboxContents:focus {","outline: none;","}"]);Blockly.registry.register(Blockly.registry.Type.TOOLBOX,Blockly.registry.DEFAULT,Blockly.Toolbox);Blockly.Trashcan=function(a){this.workspace_=a;this.contents_=[];this.flyout=null;if(!(0>=this.workspace_.options.maxTrashcanContents)){a=new Blockly.Options({scrollbars:!0,parentWorkspace:this.workspace_,rtl:this.workspace_.RTL,oneBasedIndex:this.workspace_.options.oneBasedIndex,renderer:this.workspace_.options.renderer,rendererOverrides:this.workspace_.options.rendererOverrides});if(this.workspace_.horizontalLayout){a.toolboxPosition=this.workspace_.toolboxPosition==Blockly.utils.toolbox.Position.TOP? +Blockly.utils.toolbox.Position.BOTTOM:Blockly.utils.toolbox.Position.TOP;if(!Blockly.HorizontalFlyout)throw Error("Missing require for Blockly.HorizontalFlyout");this.flyout=new Blockly.HorizontalFlyout(a)}else{a.toolboxPosition=this.workspace_.toolboxPosition==Blockly.utils.toolbox.Position.RIGHT?Blockly.utils.toolbox.Position.LEFT:Blockly.utils.toolbox.Position.RIGHT;if(!Blockly.VerticalFlyout)throw Error("Missing require for Blockly.VerticalFlyout");this.flyout=new Blockly.VerticalFlyout(a)}this.workspace_.addChangeListener(this.onDelete_.bind(this))}}; Blockly.Trashcan.prototype.WIDTH_=47;Blockly.Trashcan.prototype.BODY_HEIGHT_=44;Blockly.Trashcan.prototype.LID_HEIGHT_=16;Blockly.Trashcan.prototype.MARGIN_BOTTOM_=20;Blockly.Trashcan.prototype.MARGIN_SIDE_=20;Blockly.Trashcan.prototype.MARGIN_HOTSPOT_=10;Blockly.Trashcan.prototype.SPRITE_LEFT_=0;Blockly.Trashcan.prototype.SPRITE_TOP_=32;Blockly.Trashcan.prototype.HAS_BLOCKS_LID_ANGLE_=.1;Blockly.Trashcan.ANIMATION_LENGTH_=80;Blockly.Trashcan.ANIMATION_FRAMES_=4;Blockly.Trashcan.OPACITY_MIN_=.4; -Blockly.Trashcan.OPACITY_MAX_=.8;Blockly.Trashcan.MAX_LID_ANGLE_=45;Blockly.Trashcan.prototype.isOpen=!1;Blockly.Trashcan.prototype.minOpenness_=0;Blockly.Trashcan.prototype.svgGroup_=null;Blockly.Trashcan.prototype.svgLid_=null;Blockly.Trashcan.prototype.lidTask_=0;Blockly.Trashcan.prototype.lidOpen_=0;Blockly.Trashcan.prototype.left_=0;Blockly.Trashcan.prototype.top_=0; -Blockly.Trashcan.prototype.createDom=function(){this.svgGroup_=Blockly.utils.dom.createSvgElement("g",{"class":"blocklyTrash"},null);var a=String(Math.random()).substring(2);var b=Blockly.utils.dom.createSvgElement("clipPath",{id:"blocklyTrashBodyClipPath"+a},this.svgGroup_);Blockly.utils.dom.createSvgElement("rect",{width:this.WIDTH_,height:this.BODY_HEIGHT_,y:this.LID_HEIGHT_},b);var c=Blockly.utils.dom.createSvgElement("image",{width:Blockly.SPRITE.width,x:-this.SPRITE_LEFT_,height:Blockly.SPRITE.height, -y:-this.SPRITE_TOP_,"clip-path":"url(#blocklyTrashBodyClipPath"+a+")"},this.svgGroup_);c.setAttributeNS(Blockly.utils.dom.XLINK_NS,"xlink:href",this.workspace_.options.pathToMedia+Blockly.SPRITE.url);b=Blockly.utils.dom.createSvgElement("clipPath",{id:"blocklyTrashLidClipPath"+a},this.svgGroup_);Blockly.utils.dom.createSvgElement("rect",{width:this.WIDTH_,height:this.LID_HEIGHT_},b);this.svgLid_=Blockly.utils.dom.createSvgElement("image",{width:Blockly.SPRITE.width,x:-this.SPRITE_LEFT_,height:Blockly.SPRITE.height, -y:-this.SPRITE_TOP_,"clip-path":"url(#blocklyTrashLidClipPath"+a+")"},this.svgGroup_);this.svgLid_.setAttributeNS(Blockly.utils.dom.XLINK_NS,"xlink:href",this.workspace_.options.pathToMedia+Blockly.SPRITE.url);Blockly.bindEventWithChecks_(this.svgGroup_,"mouseup",this,this.click);Blockly.bindEvent_(c,"mouseover",this,this.mouseOver_);Blockly.bindEvent_(c,"mouseout",this,this.mouseOut_);this.animateLid_();return this.svgGroup_}; -Blockly.Trashcan.prototype.init=function(a){0this.minOpenness_&&1>this.lidOpen_&&(this.lidTask_=setTimeout(this.animateLid_.bind(this),Blockly.Trashcan.ANIMATION_LENGTH_/ -a))};Blockly.Trashcan.prototype.setLidAngle_=function(a){var b=this.workspace_.toolboxPosition==Blockly.TOOLBOX_AT_RIGHT||this.workspace_.horizontalLayout&&this.workspace_.RTL;this.svgLid_.setAttribute("transform","rotate("+(b?-a:a)+","+(b?4:this.WIDTH_-4)+","+(this.LID_HEIGHT_-2)+")")};Blockly.Trashcan.prototype.setMinOpenness_=function(a){this.minOpenness_=a;this.isOpen||this.setLidAngle_(a*Blockly.Trashcan.MAX_LID_ANGLE_)};Blockly.Trashcan.prototype.close=function(){this.setOpen(!1)}; -Blockly.Trashcan.prototype.click=function(){if(this.contents_.length){for(var a=[],b=0,c;c=this.contents_[b];b++)a[b]=Blockly.Xml.textToDom(c);this.flyout.show(a)}};Blockly.Trashcan.prototype.mouseOver_=function(){this.contents_.length&&this.setOpen(!0)};Blockly.Trashcan.prototype.mouseOut_=function(){this.setOpen(!1)}; -Blockly.Trashcan.prototype.onDelete_=function(a){if(!(0>=this.workspace_.options.maxTrashcanContents)&&a.type==Blockly.Events.BLOCK_DELETE&&"shadow"!=a.oldXml.tagName.toLowerCase()&&(a=this.cleanBlockXML_(a.oldXml),-1==this.contents_.indexOf(a))){for(this.contents_.unshift(a);this.contents_.length>this.workspace_.options.maxTrashcanContents;)this.contents_.pop();this.setMinOpenness_(this.HAS_BLOCKS_LID_ANGLE_)}}; +Blockly.Trashcan.prototype.setLidOpen=function(a){this.isLidOpen!=a&&(clearTimeout(this.lidTask_),this.isLidOpen=a,this.animateLid_())}; +Blockly.Trashcan.prototype.animateLid_=function(){var a=Blockly.Trashcan.ANIMATION_FRAMES_,b=1/(a+1);this.lidOpen_+=this.isLidOpen?b:-b;this.lidOpen_=Math.min(Math.max(this.lidOpen_,this.minOpenness_),1);this.setLidAngle_(this.lidOpen_*Blockly.Trashcan.MAX_LID_ANGLE_);b=Blockly.Trashcan.OPACITY_MIN_;this.svgGroup_.style.opacity=b+this.lidOpen_*(Blockly.Trashcan.OPACITY_MAX_-b);this.lidOpen_>this.minOpenness_&&1>this.lidOpen_&&(this.lidTask_=setTimeout(this.animateLid_.bind(this),Blockly.Trashcan.ANIMATION_LENGTH_/ +a))};Blockly.Trashcan.prototype.setLidAngle_=function(a){var b=this.workspace_.toolboxPosition==Blockly.TOOLBOX_AT_RIGHT||this.workspace_.horizontalLayout&&this.workspace_.RTL;this.svgLid_.setAttribute("transform","rotate("+(b?-a:a)+","+(b?4:this.WIDTH_-4)+","+(this.LID_HEIGHT_-2)+")")};Blockly.Trashcan.prototype.setMinOpenness_=function(a){this.minOpenness_=a;this.isLidOpen||this.setLidAngle_(a*Blockly.Trashcan.MAX_LID_ANGLE_)};Blockly.Trashcan.prototype.closeLid=function(){this.setLidOpen(!1)}; +Blockly.Trashcan.prototype.click=function(){this.hasContents_()&&this.openFlyout()};Blockly.Trashcan.prototype.fireUiEvent_=function(a){a=new Blockly.Events.Ui(null,"trashcanOpen",null,a);a.workspaceId=this.workspace_.id;Blockly.Events.fire(a)};Blockly.Trashcan.prototype.mouseOver_=function(){this.hasContents_()&&this.setLidOpen(!0)};Blockly.Trashcan.prototype.mouseOut_=function(){this.setLidOpen(!1)}; +Blockly.Trashcan.prototype.onDelete_=function(a){if(!(0>=this.workspace_.options.maxTrashcanContents)&&a.type==Blockly.Events.BLOCK_DELETE&&a.oldXml.tagName&&"shadow"!=a.oldXml.tagName.toLowerCase()&&(a=this.cleanBlockXML_(a.oldXml),-1==this.contents_.indexOf(a))){for(this.contents_.unshift(a);this.contents_.length>this.workspace_.options.maxTrashcanContents;)this.contents_.pop();this.setMinOpenness_(this.HAS_BLOCKS_LID_ANGLE_)}}; Blockly.Trashcan.prototype.cleanBlockXML_=function(a){for(var b=a=a.cloneNode(!0);b;){b.removeAttribute&&(b.removeAttribute("x"),b.removeAttribute("y"),b.removeAttribute("id"),b.removeAttribute("disabled"),"comment"==b.nodeName&&(b.removeAttribute("h"),b.removeAttribute("w"),b.removeAttribute("pinned")));var c=b.firstChild||b.nextSibling;if(!c)for(c=b.parentNode;c;){if(c.nextSibling){c=c.nextSibling;break}c=c.parentNode}b=c}return Blockly.Xml.domToText(a)};Blockly.VariablesDynamic={};Blockly.VariablesDynamic.onCreateVariableButtonClick_String=function(a){Blockly.Variables.createVariableButtonHandler(a.getTargetWorkspace(),void 0,"String")};Blockly.VariablesDynamic.onCreateVariableButtonClick_Number=function(a){Blockly.Variables.createVariableButtonHandler(a.getTargetWorkspace(),void 0,"Number")};Blockly.VariablesDynamic.onCreateVariableButtonClick_Colour=function(a){Blockly.Variables.createVariableButtonHandler(a.getTargetWorkspace(),void 0,"Colour")}; Blockly.VariablesDynamic.flyoutCategory=function(a){var b=[],c=document.createElement("button");c.setAttribute("text",Blockly.Msg.NEW_STRING_VARIABLE);c.setAttribute("callbackKey","CREATE_VARIABLE_STRING");b.push(c);c=document.createElement("button");c.setAttribute("text",Blockly.Msg.NEW_NUMBER_VARIABLE);c.setAttribute("callbackKey","CREATE_VARIABLE_NUMBER");b.push(c);c=document.createElement("button");c.setAttribute("text",Blockly.Msg.NEW_COLOUR_VARIABLE);c.setAttribute("callbackKey","CREATE_VARIABLE_COLOUR"); b.push(c);a.registerButtonCallback("CREATE_VARIABLE_STRING",Blockly.VariablesDynamic.onCreateVariableButtonClick_String);a.registerButtonCallback("CREATE_VARIABLE_NUMBER",Blockly.VariablesDynamic.onCreateVariableButtonClick_Number);a.registerButtonCallback("CREATE_VARIABLE_COLOUR",Blockly.VariablesDynamic.onCreateVariableButtonClick_Colour);a=Blockly.VariablesDynamic.flyoutCategoryBlocks(a);return b=b.concat(a)}; Blockly.VariablesDynamic.flyoutCategoryBlocks=function(a){a=a.getAllVariables();var b=[];if(0image, .blocklyZoom>svg>image {","opacity: .4;","}",".blocklyZoom>image:hover, .blocklyZoom>svg>image:hover {","opacity: .6;","}",".blocklyZoom>image:active, .blocklyZoom>svg>image:active {","opacity: .8;","}"]);Blockly.Mutator=function(a){Blockly.Mutator.superClass_.constructor.call(this,null);this.quarkNames_=a};Blockly.utils.object.inherits(Blockly.Mutator,Blockly.Icon);Blockly.Mutator.prototype.workspaceWidth_=0;Blockly.Mutator.prototype.workspaceHeight_=0;Blockly.Mutator.prototype.setBlock=function(a){this.block_=a};Blockly.Mutator.prototype.getWorkspace=function(){return this.workspace_}; -Blockly.Mutator.prototype.drawIcon_=function(a){Blockly.utils.dom.createSvgElement("rect",{"class":"blocklyIconShape",rx:"4",ry:"4",height:"16",width:"16"},a);Blockly.utils.dom.createSvgElement("path",{"class":"blocklyIconSymbol",d:"m4.203,7.296 0,1.368 -0.92,0.677 -0.11,0.41 0.9,1.559 0.41,0.11 1.043,-0.457 1.187,0.683 0.127,1.134 0.3,0.3 1.8,0 0.3,-0.299 0.127,-1.138 1.185,-0.682 1.046,0.458 0.409,-0.11 0.9,-1.559 -0.11,-0.41 -0.92,-0.677 0,-1.366 0.92,-0.677 0.11,-0.41 -0.9,-1.559 -0.409,-0.109 -1.046,0.458 -1.185,-0.682 -0.127,-1.138 -0.3,-0.299 -1.8,0 -0.3,0.3 -0.126,1.135 -1.187,0.682 -1.043,-0.457 -0.41,0.11 -0.899,1.559 0.108,0.409z"}, -a);Blockly.utils.dom.createSvgElement("circle",{"class":"blocklyIconShape",r:"2.7",cx:"8",cy:"8"},a)};Blockly.Mutator.prototype.iconClick_=function(a){this.block_.isEditable()&&Blockly.Icon.prototype.iconClick_.call(this,a)}; -Blockly.Mutator.prototype.createEditor_=function(){this.svgDialog_=Blockly.utils.dom.createSvgElement("svg",{x:Blockly.Bubble.BORDER_WIDTH,y:Blockly.Bubble.BORDER_WIDTH},null);if(this.quarkNames_.length)for(var a=Blockly.utils.xml.createElement("xml"),b=0,c;c=this.quarkNames_[b];b++){var d=Blockly.utils.xml.createElement("block");d.setAttribute("type",c);a.appendChild(d)}else a=null;b=new Blockly.Options({disable:!1,parentWorkspace:this.block_.workspace,media:this.block_.workspace.options.pathToMedia, -rtl:this.block_.RTL,horizontalLayout:!1,renderer:this.block_.workspace.options.renderer,rendererOverrides:this.block_.workspace.options.rendererOverrides});b.toolboxPosition=this.block_.RTL?Blockly.TOOLBOX_AT_RIGHT:Blockly.TOOLBOX_AT_LEFT;if(c=!!a)b.languageTree=Blockly.utils.toolbox.convertToolboxToJSON(a),b.getMetrics=this.getFlyoutMetrics_.bind(this);this.workspace_=new Blockly.WorkspaceSvg(b);this.workspace_.isMutator=!0;this.workspace_.addChangeListener(Blockly.Events.disableOrphans);a=c?this.workspace_.addFlyout("g"): -null;b=this.workspace_.createDom("blocklyMutatorBackground");a&&b.insertBefore(a,this.workspace_.svgBlockCanvas_);this.svgDialog_.appendChild(b);return this.svgDialog_};Blockly.Mutator.prototype.updateEditable=function(){Blockly.Mutator.superClass_.updateEditable.call(this);this.block_.isInFlyout||(this.block_.isEditable()?this.iconGroup_&&Blockly.utils.dom.removeClass(this.iconGroup_,"blocklyIconGroupReadonly"):(this.setVisible(!1),this.iconGroup_&&Blockly.utils.dom.addClass(this.iconGroup_,"blocklyIconGroupReadonly")))}; -Blockly.Mutator.prototype.resizeBubble_=function(){var a=2*Blockly.Bubble.BORDER_WIDTH,b=this.workspace_.getCanvas().getBBox();var c=this.block_.RTL?-b.x:b.width+b.x;b=b.height+3*a;var d=this.workspace_.getFlyout();d&&(d=d.getMetrics_(),b=Math.max(b,d.contentHeight+20));c+=3*a;if(Math.abs(this.workspaceWidth_-c)>a||Math.abs(this.workspaceHeight_-b)>a)this.workspaceWidth_=c,this.workspaceHeight_=b,this.bubble_.setBubbleSize(c+a,b+a),this.svgDialog_.setAttribute("width",this.workspaceWidth_),this.svgDialog_.setAttribute("height", -this.workspaceHeight_);this.block_.RTL&&(a="translate("+this.workspaceWidth_+",0)",this.workspace_.getCanvas().setAttribute("transform",a));this.workspace_.resize()};Blockly.Mutator.prototype.onBubbleMove_=function(){this.workspace_&&this.workspace_.recordDeleteAreas()}; +Blockly.ZoomControls.prototype.createZoomOutSvg_=function(a){this.zoomOutGroup_=Blockly.utils.dom.createSvgElement(Blockly.utils.Svg.G,{"class":"blocklyZoom"},this.svgGroup_);var b=Blockly.utils.dom.createSvgElement(Blockly.utils.Svg.CLIPPATH,{id:"blocklyZoomoutClipPath"+a},this.zoomOutGroup_);Blockly.utils.dom.createSvgElement(Blockly.utils.Svg.RECT,{width:32,height:32},b);Blockly.utils.dom.createSvgElement(Blockly.utils.Svg.IMAGE,{width:Blockly.SPRITE.width,height:Blockly.SPRITE.height,x:-64,y:-92, +"clip-path":"url(#blocklyZoomoutClipPath"+a+")"},this.zoomOutGroup_).setAttributeNS(Blockly.utils.dom.XLINK_NS,"xlink:href",this.workspace_.options.pathToMedia+Blockly.SPRITE.url);this.onZoomOutWrapper_=Blockly.bindEventWithChecks_(this.zoomOutGroup_,"mousedown",null,this.zoom_.bind(this,-1))}; +Blockly.ZoomControls.prototype.createZoomInSvg_=function(a){this.zoomInGroup_=Blockly.utils.dom.createSvgElement(Blockly.utils.Svg.G,{"class":"blocklyZoom"},this.svgGroup_);var b=Blockly.utils.dom.createSvgElement(Blockly.utils.Svg.CLIPPATH,{id:"blocklyZoominClipPath"+a},this.zoomInGroup_);Blockly.utils.dom.createSvgElement(Blockly.utils.Svg.RECT,{width:32,height:32},b);Blockly.utils.dom.createSvgElement(Blockly.utils.Svg.IMAGE,{width:Blockly.SPRITE.width,height:Blockly.SPRITE.height,x:-32,y:-92, +"clip-path":"url(#blocklyZoominClipPath"+a+")"},this.zoomInGroup_).setAttributeNS(Blockly.utils.dom.XLINK_NS,"xlink:href",this.workspace_.options.pathToMedia+Blockly.SPRITE.url);this.onZoomInWrapper_=Blockly.bindEventWithChecks_(this.zoomInGroup_,"mousedown",null,this.zoom_.bind(this,1))}; +Blockly.ZoomControls.prototype.zoom_=function(a,b){this.workspace_.markFocused();var c=this.workspace_.scale;this.workspace_.zoomCenter(a);this.fireZoomEvent_(c);Blockly.Touch.clearTouchIdentifier();b.stopPropagation();b.preventDefault()}; +Blockly.ZoomControls.prototype.createZoomResetSvg_=function(a){this.zoomResetGroup_=Blockly.utils.dom.createSvgElement(Blockly.utils.Svg.G,{"class":"blocklyZoom"},this.svgGroup_);var b=Blockly.utils.dom.createSvgElement(Blockly.utils.Svg.CLIPPATH,{id:"blocklyZoomresetClipPath"+a},this.zoomResetGroup_);Blockly.utils.dom.createSvgElement(Blockly.utils.Svg.RECT,{width:32,height:32},b);Blockly.utils.dom.createSvgElement(Blockly.utils.Svg.IMAGE,{width:Blockly.SPRITE.width,height:Blockly.SPRITE.height, +y:-92,"clip-path":"url(#blocklyZoomresetClipPath"+a+")"},this.zoomResetGroup_).setAttributeNS(Blockly.utils.dom.XLINK_NS,"xlink:href",this.workspace_.options.pathToMedia+Blockly.SPRITE.url);this.onZoomResetWrapper_=Blockly.bindEventWithChecks_(this.zoomResetGroup_,"mousedown",null,this.resetZoom_.bind(this))}; +Blockly.ZoomControls.prototype.resetZoom_=function(a){this.workspace_.markFocused();var b=this.workspace_.scale;this.workspace_.setScale(this.workspace_.options.zoomOptions.startScale);this.workspace_.beginCanvasTransition();this.workspace_.scrollCenter();setTimeout(this.workspace_.endCanvasTransition.bind(this.workspace_),500);this.fireZoomEvent_(b);Blockly.Touch.clearTouchIdentifier();a.stopPropagation();a.preventDefault()}; +Blockly.ZoomControls.prototype.fireZoomEvent_=function(a){a=new Blockly.Events.Ui(null,"zoom",a,this.workspace_.scale);a.workspaceId=this.workspace_.id;Blockly.Events.fire(a)};Blockly.Css.register([".blocklyZoom>image, .blocklyZoom>svg>image {","opacity: .4;","}",".blocklyZoom>image:hover, .blocklyZoom>svg>image:hover {","opacity: .6;","}",".blocklyZoom>image:active, .blocklyZoom>svg>image:active {","opacity: .8;","}"]);Blockly.Mutator=function(a){Blockly.Mutator.superClass_.constructor.call(this,null);this.quarkNames_=a};Blockly.utils.object.inherits(Blockly.Mutator,Blockly.Icon);Blockly.Mutator.prototype.workspaceWidth_=0;Blockly.Mutator.prototype.workspaceHeight_=0;Blockly.Mutator.prototype.setBlock=function(a){this.block_=a};Blockly.Mutator.prototype.getWorkspace=function(){return this.workspace_}; +Blockly.Mutator.prototype.drawIcon_=function(a){Blockly.utils.dom.createSvgElement(Blockly.utils.Svg.RECT,{"class":"blocklyIconShape",rx:"4",ry:"4",height:"16",width:"16"},a);Blockly.utils.dom.createSvgElement(Blockly.utils.Svg.PATH,{"class":"blocklyIconSymbol",d:"m4.203,7.296 0,1.368 -0.92,0.677 -0.11,0.41 0.9,1.559 0.41,0.11 1.043,-0.457 1.187,0.683 0.127,1.134 0.3,0.3 1.8,0 0.3,-0.299 0.127,-1.138 1.185,-0.682 1.046,0.458 0.409,-0.11 0.9,-1.559 -0.11,-0.41 -0.92,-0.677 0,-1.366 0.92,-0.677 0.11,-0.41 -0.9,-1.559 -0.409,-0.109 -1.046,0.458 -1.185,-0.682 -0.127,-1.138 -0.3,-0.299 -1.8,0 -0.3,0.3 -0.126,1.135 -1.187,0.682 -1.043,-0.457 -0.41,0.11 -0.899,1.559 0.108,0.409z"}, +a);Blockly.utils.dom.createSvgElement(Blockly.utils.Svg.CIRCLE,{"class":"blocklyIconShape",r:"2.7",cx:"8",cy:"8"},a)};Blockly.Mutator.prototype.iconClick_=function(a){this.block_.isEditable()&&Blockly.Icon.prototype.iconClick_.call(this,a)}; +Blockly.Mutator.prototype.createEditor_=function(){this.svgDialog_=Blockly.utils.dom.createSvgElement(Blockly.utils.Svg.SVG,{x:Blockly.Bubble.BORDER_WIDTH,y:Blockly.Bubble.BORDER_WIDTH},null);if(this.quarkNames_.length)for(var a=Blockly.utils.xml.createElement("xml"),b=0,c;c=this.quarkNames_[b];b++){var d=Blockly.utils.xml.createElement("block");d.setAttribute("type",c);a.appendChild(d)}else a=null;b=new Blockly.Options({disable:!1,parentWorkspace:this.block_.workspace,media:this.block_.workspace.options.pathToMedia, +rtl:this.block_.RTL,horizontalLayout:!1,renderer:this.block_.workspace.options.renderer,rendererOverrides:this.block_.workspace.options.rendererOverrides});b.toolboxPosition=this.block_.RTL?Blockly.utils.toolbox.Position.RIGHT:Blockly.utils.toolbox.Position.LEFT;if(c=!!a)b.languageTree=Blockly.utils.toolbox.convertToolboxDefToJson(a),b.getMetrics=this.getFlyoutMetrics_.bind(this);this.workspace_=new Blockly.WorkspaceSvg(b);this.workspace_.isMutator=!0;this.workspace_.addChangeListener(Blockly.Events.disableOrphans); +a=c?this.workspace_.addFlyout(Blockly.utils.Svg.G):null;b=this.workspace_.createDom("blocklyMutatorBackground");a&&b.insertBefore(a,this.workspace_.svgBlockCanvas_);this.svgDialog_.appendChild(b);return this.svgDialog_}; +Blockly.Mutator.prototype.updateEditable=function(){Blockly.Mutator.superClass_.updateEditable.call(this);this.block_.isInFlyout||(this.block_.isEditable()?this.iconGroup_&&Blockly.utils.dom.removeClass(this.iconGroup_,"blocklyIconGroupReadonly"):(this.setVisible(!1),this.iconGroup_&&Blockly.utils.dom.addClass(this.iconGroup_,"blocklyIconGroupReadonly")))}; +Blockly.Mutator.prototype.resizeBubble_=function(){var a=2*Blockly.Bubble.BORDER_WIDTH,b=this.workspace_.getCanvas().getBBox(),c=b.width+b.x,d=b.height+3*a,e=this.workspace_.getFlyout();if(e){var f=e.getMetrics_();d=Math.max(d,f.contentHeight+20);c+=e.getWidth()}this.block_.RTL&&(c=-b.x);c+=3*a;if(Math.abs(this.workspaceWidth_-c)>a||Math.abs(this.workspaceHeight_-d)>a)this.workspaceWidth_=c,this.workspaceHeight_=d,this.bubble_.setBubbleSize(c+a,d+a),this.svgDialog_.setAttribute("width",this.workspaceWidth_), +this.svgDialog_.setAttribute("height",this.workspaceHeight_);this.block_.RTL&&(a="translate("+this.workspaceWidth_+",0)",this.workspace_.getCanvas().setAttribute("transform",a));this.workspace_.resize()};Blockly.Mutator.prototype.onBubbleMove_=function(){this.workspace_&&this.workspace_.recordDeleteAreas()}; Blockly.Mutator.prototype.setVisible=function(a){if(a!=this.isVisible())if(Blockly.Events.fire(new Blockly.Events.Ui(this.block_,"mutatorOpen",!a,a)),a){this.bubble_=new Blockly.Bubble(this.block_.workspace,this.createEditor_(),this.block_.pathObject.svgPath,this.iconXY_,null,null);this.bubble_.setSvgId(this.block_.id);this.bubble_.registerMoveEvent(this.onBubbleMove_.bind(this));var b=this.workspace_.options.languageTree;a=this.workspace_.getFlyout();b&&(a.init(this.workspace_),a.show(b));this.rootBlock_= -this.block_.decompose(this.workspace_);b=this.rootBlock_.getDescendants(!1);for(var c=0,d;d=b[c];c++)d.render();this.rootBlock_.setMovable(!1);this.rootBlock_.setDeletable(!1);a?(b=2*a.CORNER_RADIUS,a=a.getWidth()+b):a=b=16;this.block_.RTL&&(a=-a);this.rootBlock_.moveBy(a,b);if(this.block_.saveConnections){var e=this,f=this.block_;f.saveConnections(this.rootBlock_);this.sourceListener_=function(){f.saveConnections(e.rootBlock_)};this.block_.workspace.addChangeListener(this.sourceListener_)}this.resizeBubble_(); +this.block_.decompose(this.workspace_);b=this.rootBlock_.getDescendants(!1);for(var c=0,d;d=b[c];c++)d.render();this.rootBlock_.setMovable(!1);this.rootBlock_.setDeletable(!1);a?(b=2*a.CORNER_RADIUS,a=this.rootBlock_.RTL?a.getWidth()+b:b):a=b=16;this.block_.RTL&&(a=-a);this.rootBlock_.moveBy(a,b);if(this.block_.saveConnections){var e=this,f=this.block_;f.saveConnections(this.rootBlock_);this.sourceListener_=function(){f.saveConnections(e.rootBlock_)};this.block_.workspace.addChangeListener(this.sourceListener_)}this.resizeBubble_(); this.workspace_.addChangeListener(this.workspaceChanged_.bind(this));this.applyColour()}else this.svgDialog_=null,this.workspace_.dispose(),this.rootBlock_=this.workspace_=null,this.bubble_.dispose(),this.bubble_=null,this.workspaceHeight_=this.workspaceWidth_=0,this.sourceListener_&&(this.block_.workspace.removeChangeListener(this.sourceListener_),this.sourceListener_=null)}; -Blockly.Mutator.prototype.workspaceChanged_=function(a){if(a.type!=Blockly.Events.UI&&(a.type!=Blockly.Events.CHANGE||"disabled"!=a.element)){if(!this.workspace_.isDragging())for(var b=this.workspace_.getTopBlocks(!1),c=0;a=b[c];c++){var d=a.getRelativeToSurfaceXY(),e=a.getHeightWidth();20>d.y+e.height&&a.moveBy(0,20-e.height-d.y)}this.rootBlock_.workspace==this.workspace_&&(Blockly.Events.setGroup(!0),a=this.block_,b=(b=a.mutationToDom())&&Blockly.Xml.domToText(b),a.compose(this.rootBlock_),a.initSvg(), -a.render(),Blockly.getMainWorkspace().keyboardAccessibilityMode&&Blockly.navigation.moveCursorOnBlockMutation(a),c=(c=a.mutationToDom())&&Blockly.Xml.domToText(c),b!=c&&Blockly.Events.fire(new Blockly.Events.BlockChange(a,"mutation",null,b,c)),this.workspace_.isDragging()||this.resizeBubble_(),Blockly.Events.setGroup(!1))}}; -Blockly.Mutator.prototype.getFlyoutMetrics_=function(){return{contentHeight:0,contentWidth:0,contentTop:0,contentLeft:0,viewHeight:this.workspaceHeight_,viewWidth:this.workspaceWidth_-this.workspace_.getFlyout().getWidth(),viewTop:0,viewLeft:0,absoluteTop:0,absoluteLeft:this.workspace_.RTL?0:this.workspace_.getFlyout().getWidth()}};Blockly.Mutator.prototype.dispose=function(){this.block_.mutator=null;Blockly.Icon.prototype.dispose.call(this)}; -Blockly.Mutator.prototype.updateBlockStyle=function(){var a=this.workspace_;if(a&&a.getAllBlocks(!1)){for(var b=a.getAllBlocks(!1),c=0;cd.y&&a.moveBy(0,20-d.y);if(a.RTL){var e=-20,f=this.workspace_.getFlyout();f&&(e-=f.getWidth());d.x>e&&a.moveBy(e-d.x,0)}else 20>d.x&&a.moveBy(20-d.x,0)}this.rootBlock_.workspace==this.workspace_&&(Blockly.Events.setGroup(!0),a=this.block_, +b=(b=a.mutationToDom())&&Blockly.Xml.domToText(b),c=a.rendered,a.rendered=!1,a.compose(this.rootBlock_),a.rendered=c,a.initSvg(),Blockly.getMainWorkspace().keyboardAccessibilityMode&&Blockly.navigation.moveCursorOnBlockMutation(a),a.rendered&&a.render(),c=(c=a.mutationToDom())&&Blockly.Xml.domToText(c),b!=c&&Blockly.Events.fire(new Blockly.Events.BlockChange(a,"mutation",null,b,c)),this.workspace_.isDragging()||this.resizeBubble_(),Blockly.Events.setGroup(!1))}}; +Blockly.Mutator.prototype.getFlyoutMetrics_=function(){var a=this.workspace_.getFlyout();a=a?a.getWidth():0;return{contentHeight:0,contentWidth:0,contentTop:0,contentLeft:0,viewHeight:this.workspaceHeight_,viewWidth:this.workspaceWidth_-a,viewTop:0,viewLeft:0,absoluteTop:0,absoluteLeft:this.workspace_.RTL?0:a}};Blockly.Mutator.prototype.dispose=function(){this.block_.mutator=null;Blockly.Icon.prototype.dispose.call(this)}; +Blockly.Mutator.prototype.updateBlockStyle=function(){var a=this.workspace_;if(a&&a.getAllBlocks(!1)){for(var b=a.getAllBlocks(!1),c=0;c=a&&this.sourceBlock_.outputConnection&&!b}else this.fullBlockClickTarget_=!1;this.fullBlockClickTarget_?this.clickTarget_=this.sourceBlock_.getSvgRoot():this.createBorderRect_();this.createTextElement_()}; @@ -1010,11 +1054,11 @@ Blockly.FieldTextInput.numberValidator=function(a){console.warn("Blockly.FieldTe Blockly.FieldTextInput.prototype.getText_=function(){return this.isBeingEdited_&&this.htmlInput_?this.htmlInput_.value:null};Blockly.FieldTextInput.prototype.getEditorText_=function(a){return String(a)};Blockly.FieldTextInput.prototype.getValueFromEditorText_=function(a){return a};Blockly.fieldRegistry.register("field_input",Blockly.FieldTextInput);Blockly.FieldAngle=function(a,b,c){this.clockwise_=Blockly.FieldAngle.CLOCKWISE;this.offset_=Blockly.FieldAngle.OFFSET;this.wrap_=Blockly.FieldAngle.WRAP;this.round_=Blockly.FieldAngle.ROUND;Blockly.FieldAngle.superClass_.constructor.call(this,a,b,c);this.moveSurfaceWrapper_=this.clickSurfaceWrapper_=this.clickWrapper_=this.line_=this.gauge_=null};Blockly.utils.object.inherits(Blockly.FieldAngle,Blockly.FieldTextInput);Blockly.FieldAngle.prototype.DEFAULT_VALUE=0; Blockly.FieldAngle.fromJson=function(a){return new Blockly.FieldAngle(a.angle,void 0,a)};Blockly.FieldAngle.prototype.SERIALIZABLE=!0;Blockly.FieldAngle.ROUND=15;Blockly.FieldAngle.HALF=50;Blockly.FieldAngle.CLOCKWISE=!1;Blockly.FieldAngle.OFFSET=0;Blockly.FieldAngle.WRAP=360;Blockly.FieldAngle.RADIUS=Blockly.FieldAngle.HALF-1; Blockly.FieldAngle.prototype.configure_=function(a){Blockly.FieldAngle.superClass_.configure_.call(this,a);switch(a.mode){case "compass":this.clockwise_=!0;this.offset_=90;break;case "protractor":this.clockwise_=!1,this.offset_=0}var b=a.clockwise;"boolean"==typeof b&&(this.clockwise_=b);b=a.offset;null!=b&&(b=Number(b),isNaN(b)||(this.offset_=b));b=a.wrap;null!=b&&(b=Number(b),isNaN(b)||(this.wrap_=b));a=a.round;null!=a&&(a=Number(a),isNaN(a)||(this.round_=a))}; -Blockly.FieldAngle.prototype.initView=function(){Blockly.FieldAngle.superClass_.initView.call(this);this.symbol_=Blockly.utils.dom.createSvgElement("tspan",{},null);this.symbol_.appendChild(document.createTextNode("\u00b0"));this.textElement_.appendChild(this.symbol_)};Blockly.FieldAngle.prototype.render_=function(){Blockly.FieldAngle.superClass_.render_.call(this);this.updateGraph_()}; +Blockly.FieldAngle.prototype.initView=function(){Blockly.FieldAngle.superClass_.initView.call(this);this.symbol_=Blockly.utils.dom.createSvgElement(Blockly.utils.Svg.TSPAN,{},null);this.symbol_.appendChild(document.createTextNode("\u00b0"));this.textElement_.appendChild(this.symbol_)};Blockly.FieldAngle.prototype.render_=function(){Blockly.FieldAngle.superClass_.render_.call(this);this.updateGraph_()}; Blockly.FieldAngle.prototype.showEditor_=function(a){Blockly.FieldAngle.superClass_.showEditor_.call(this,a,Blockly.utils.userAgent.MOBILE||Blockly.utils.userAgent.ANDROID||Blockly.utils.userAgent.IPAD);a=this.dropdownCreate_();Blockly.DropDownDiv.getContentDiv().appendChild(a);Blockly.DropDownDiv.setColour(this.sourceBlock_.style.colourPrimary,this.sourceBlock_.style.colourTertiary);Blockly.DropDownDiv.showPositionedByField(this,this.dropdownDispose_.bind(this));this.updateGraph_()}; -Blockly.FieldAngle.prototype.dropdownCreate_=function(){var a=Blockly.utils.dom.createSvgElement("svg",{xmlns:Blockly.utils.dom.SVG_NS,"xmlns:html":Blockly.utils.dom.HTML_NS,"xmlns:xlink":Blockly.utils.dom.XLINK_NS,version:"1.1",height:2*Blockly.FieldAngle.HALF+"px",width:2*Blockly.FieldAngle.HALF+"px",style:"touch-action: none"},null),b=Blockly.utils.dom.createSvgElement("circle",{cx:Blockly.FieldAngle.HALF,cy:Blockly.FieldAngle.HALF,r:Blockly.FieldAngle.RADIUS,"class":"blocklyAngleCircle"},a);this.gauge_= -Blockly.utils.dom.createSvgElement("path",{"class":"blocklyAngleGauge"},a);this.line_=Blockly.utils.dom.createSvgElement("line",{x1:Blockly.FieldAngle.HALF,y1:Blockly.FieldAngle.HALF,"class":"blocklyAngleLine"},a);for(var c=0;360>c;c+=15)Blockly.utils.dom.createSvgElement("line",{x1:Blockly.FieldAngle.HALF+Blockly.FieldAngle.RADIUS,y1:Blockly.FieldAngle.HALF,x2:Blockly.FieldAngle.HALF+Blockly.FieldAngle.RADIUS-(0==c%45?10:5),y2:Blockly.FieldAngle.HALF,"class":"blocklyAngleMarks",transform:"rotate("+ -c+","+Blockly.FieldAngle.HALF+","+Blockly.FieldAngle.HALF+")"},a);this.clickWrapper_=Blockly.bindEventWithChecks_(a,"click",this,this.hide_);this.clickSurfaceWrapper_=Blockly.bindEventWithChecks_(b,"click",this,this.onMouseMove_,!0,!0);this.moveSurfaceWrapper_=Blockly.bindEventWithChecks_(b,"mousemove",this,this.onMouseMove_,!0,!0);return a}; +Blockly.FieldAngle.prototype.dropdownCreate_=function(){var a=Blockly.utils.dom.createSvgElement(Blockly.utils.Svg.SVG,{xmlns:Blockly.utils.dom.SVG_NS,"xmlns:html":Blockly.utils.dom.HTML_NS,"xmlns:xlink":Blockly.utils.dom.XLINK_NS,version:"1.1",height:2*Blockly.FieldAngle.HALF+"px",width:2*Blockly.FieldAngle.HALF+"px",style:"touch-action: none"},null),b=Blockly.utils.dom.createSvgElement(Blockly.utils.Svg.CIRCLE,{cx:Blockly.FieldAngle.HALF,cy:Blockly.FieldAngle.HALF,r:Blockly.FieldAngle.RADIUS,"class":"blocklyAngleCircle"}, +a);this.gauge_=Blockly.utils.dom.createSvgElement(Blockly.utils.Svg.PATH,{"class":"blocklyAngleGauge"},a);this.line_=Blockly.utils.dom.createSvgElement(Blockly.utils.Svg.LINE,{x1:Blockly.FieldAngle.HALF,y1:Blockly.FieldAngle.HALF,"class":"blocklyAngleLine"},a);for(var c=0;360>c;c+=15)Blockly.utils.dom.createSvgElement(Blockly.utils.Svg.LINE,{x1:Blockly.FieldAngle.HALF+Blockly.FieldAngle.RADIUS,y1:Blockly.FieldAngle.HALF,x2:Blockly.FieldAngle.HALF+Blockly.FieldAngle.RADIUS-(0==c%45?10:5),y2:Blockly.FieldAngle.HALF, +"class":"blocklyAngleMarks",transform:"rotate("+c+","+Blockly.FieldAngle.HALF+","+Blockly.FieldAngle.HALF+")"},a);this.clickWrapper_=Blockly.bindEventWithChecks_(a,"click",this,this.hide_);this.clickSurfaceWrapper_=Blockly.bindEventWithChecks_(b,"click",this,this.onMouseMove_,!0,!0);this.moveSurfaceWrapper_=Blockly.bindEventWithChecks_(b,"mousemove",this,this.onMouseMove_,!0,!0);return a}; Blockly.FieldAngle.prototype.dropdownDispose_=function(){this.clickWrapper_&&(Blockly.unbindEvent_(this.clickWrapper_),this.clickWrapper_=null);this.clickSurfaceWrapper_&&(Blockly.unbindEvent_(this.clickSurfaceWrapper_),this.clickSurfaceWrapper_=null);this.moveSurfaceWrapper_&&(Blockly.unbindEvent_(this.moveSurfaceWrapper_),this.moveSurfaceWrapper_=null);this.line_=this.gauge_=null};Blockly.FieldAngle.prototype.hide_=function(){Blockly.DropDownDiv.hideIfOwner(this);Blockly.WidgetDiv.hide()}; Blockly.FieldAngle.prototype.onMouseMove_=function(a){var b=this.gauge_.ownerSVGElement.getBoundingClientRect(),c=a.clientX-b.left-Blockly.FieldAngle.HALF;a=a.clientY-b.top-Blockly.FieldAngle.HALF;b=Math.atan(-a/c);isNaN(b)||(b=Blockly.utils.math.toDegrees(b),0>c?b+=180:0tr>td {","border: .5px solid #888;","box-sizing: border-box;","cursor: pointer;","display: inline-block;","height: 20px;","padding: 0;","width: 20px;","}",".blocklyColourTable>tr>td.blocklyColourHighlighted {","border-color: #eee;","box-shadow: 2px 2px 7px 2px rgba(0,0,0,.3);","position: relative;","}",".blocklyColourSelected, .blocklyColourSelected:hover {", "border-color: #eee !important;","outline: 1px solid #333;","position: relative;","}"]);Blockly.fieldRegistry.register("field_colour",Blockly.FieldColour);Blockly.FieldDropdown=function(a,b,c){"function"!=typeof a&&Blockly.FieldDropdown.validateOptions_(a);this.menuGenerator_=a;this.suffixField=this.prefixField=this.generatedOptions_=null;this.trimOptions_();this.selectedOption_=this.getOptions(!1)[0];Blockly.FieldDropdown.superClass_.constructor.call(this,this.selectedOption_[1],b,c);this.svgArrow_=this.arrow_=this.imageElement_=this.menu_=this.selectedMenuItem_=null};Blockly.utils.object.inherits(Blockly.FieldDropdown,Blockly.Field); Blockly.FieldDropdown.fromJson=function(a){return new Blockly.FieldDropdown(a.options,void 0,a)};Blockly.FieldDropdown.prototype.SERIALIZABLE=!0;Blockly.FieldDropdown.CHECKMARK_OVERHANG=25;Blockly.FieldDropdown.MAX_MENU_HEIGHT_VH=.45;Blockly.FieldDropdown.IMAGE_Y_OFFSET=5;Blockly.FieldDropdown.IMAGE_Y_PADDING=2*Blockly.FieldDropdown.IMAGE_Y_OFFSET;Blockly.FieldDropdown.ARROW_CHAR=Blockly.utils.userAgent.ANDROID?"\u25bc":"\u25be";Blockly.FieldDropdown.prototype.CURSOR="default"; -Blockly.FieldDropdown.prototype.initView=function(){this.shouldAddBorderRect_()?this.createBorderRect_():this.clickTarget_=this.sourceBlock_.getSvgRoot();this.createTextElement_();this.imageElement_=Blockly.utils.dom.createSvgElement("image",{},this.fieldGroup_);this.getConstants().FIELD_DROPDOWN_SVG_ARROW?this.createSVGArrow_():this.createTextArrow_();this.borderRect_&&Blockly.utils.dom.addClass(this.borderRect_,"blocklyDropdownRect")}; +Blockly.FieldDropdown.prototype.initView=function(){this.shouldAddBorderRect_()?this.createBorderRect_():this.clickTarget_=this.sourceBlock_.getSvgRoot();this.createTextElement_();this.imageElement_=Blockly.utils.dom.createSvgElement(Blockly.utils.Svg.IMAGE,{},this.fieldGroup_);this.getConstants().FIELD_DROPDOWN_SVG_ARROW?this.createSVGArrow_():this.createTextArrow_();this.borderRect_&&Blockly.utils.dom.addClass(this.borderRect_,"blocklyDropdownRect")}; Blockly.FieldDropdown.prototype.shouldAddBorderRect_=function(){return!this.getConstants().FIELD_DROPDOWN_NO_BORDER_RECT_SHADOW||this.getConstants().FIELD_DROPDOWN_NO_BORDER_RECT_SHADOW&&!this.sourceBlock_.isShadow()}; -Blockly.FieldDropdown.prototype.createTextArrow_=function(){this.arrow_=Blockly.utils.dom.createSvgElement("tspan",{},this.textElement_);this.arrow_.appendChild(document.createTextNode(this.sourceBlock_.RTL?Blockly.FieldDropdown.ARROW_CHAR+" ":" "+Blockly.FieldDropdown.ARROW_CHAR));this.sourceBlock_.RTL?this.textElement_.insertBefore(this.arrow_,this.textContent_):this.textElement_.appendChild(this.arrow_)}; -Blockly.FieldDropdown.prototype.createSVGArrow_=function(){this.svgArrow_=Blockly.utils.dom.createSvgElement("image",{height:this.getConstants().FIELD_DROPDOWN_SVG_ARROW_SIZE+"px",width:this.getConstants().FIELD_DROPDOWN_SVG_ARROW_SIZE+"px"},this.fieldGroup_);this.svgArrow_.setAttributeNS(Blockly.utils.dom.XLINK_NS,"xlink:href",this.getConstants().FIELD_DROPDOWN_SVG_ARROW_DATAURI)}; +Blockly.FieldDropdown.prototype.createTextArrow_=function(){this.arrow_=Blockly.utils.dom.createSvgElement(Blockly.utils.Svg.TSPAN,{},this.textElement_);this.arrow_.appendChild(document.createTextNode(this.sourceBlock_.RTL?Blockly.FieldDropdown.ARROW_CHAR+" ":" "+Blockly.FieldDropdown.ARROW_CHAR));this.sourceBlock_.RTL?this.textElement_.insertBefore(this.arrow_,this.textContent_):this.textElement_.appendChild(this.arrow_)}; +Blockly.FieldDropdown.prototype.createSVGArrow_=function(){this.svgArrow_=Blockly.utils.dom.createSvgElement(Blockly.utils.Svg.IMAGE,{height:this.getConstants().FIELD_DROPDOWN_SVG_ARROW_SIZE+"px",width:this.getConstants().FIELD_DROPDOWN_SVG_ARROW_SIZE+"px"},this.fieldGroup_);this.svgArrow_.setAttributeNS(Blockly.utils.dom.XLINK_NS,"xlink:href",this.getConstants().FIELD_DROPDOWN_SVG_ARROW_DATAURI)}; Blockly.FieldDropdown.prototype.showEditor_=function(a){this.menu_=this.dropdownCreate_();this.menu_.openingCoords=a&&"number"===typeof a.clientX?new Blockly.utils.Coordinate(a.clientX,a.clientY):null;this.menu_.render(Blockly.DropDownDiv.getContentDiv());a=this.menu_.getElement();Blockly.utils.dom.addClass(a,"blocklyDropdownMenu");if(this.getConstants().FIELD_DROPDOWN_COLOURED_DIV){a=this.sourceBlock_.isShadow()?this.sourceBlock_.getParent().getColour():this.sourceBlock_.getColour();var b=this.sourceBlock_.isShadow()? this.sourceBlock_.getParent().style.colourTertiary:this.sourceBlock_.style.colourTertiary;Blockly.DropDownDiv.setColour(a,b)}Blockly.DropDownDiv.showPositionedByField(this,this.dropdownDispose_.bind(this));this.menu_.focus();this.selectedMenuItem_&&this.menu_.setHighlighted(this.selectedMenuItem_);this.applyColour()}; Blockly.FieldDropdown.prototype.dropdownCreate_=function(){var a=new Blockly.Menu;a.setRole(Blockly.utils.aria.Role.LISTBOX);var b=this.getOptions(!1);this.selectedMenuItem_=null;for(var c=0;c=c||0>=b)throw Error("Height and width values of an image field must be greater than 0.");this.flipRtl_=!1;this.altText_="";Blockly.FieldImage.superClass_.constructor.call(this, a,null,g);g||(this.flipRtl_=!!f,this.altText_=Blockly.utils.replaceMessageReferences(d)||"");this.size_=new Blockly.utils.Size(b,c+Blockly.FieldImage.Y_PADDING);this.imageHeight_=c;this.clickHandler_=null;"function"==typeof e&&(this.clickHandler_=e);this.imageElement_=null};Blockly.utils.object.inherits(Blockly.FieldImage,Blockly.Field);Blockly.FieldImage.prototype.DEFAULT_VALUE="";Blockly.FieldImage.fromJson=function(a){return new Blockly.FieldImage(a.src,a.width,a.height,void 0,void 0,void 0,a)}; Blockly.FieldImage.Y_PADDING=1;Blockly.FieldImage.prototype.EDITABLE=!1;Blockly.FieldImage.prototype.isDirty_=!1;Blockly.FieldImage.prototype.configure_=function(a){Blockly.FieldImage.superClass_.configure_.call(this,a);this.flipRtl_=!!a.flipRtl;this.altText_=Blockly.utils.replaceMessageReferences(a.alt)||""}; -Blockly.FieldImage.prototype.initView=function(){this.imageElement_=Blockly.utils.dom.createSvgElement("image",{height:this.imageHeight_+"px",width:this.size_.width+"px",alt:this.altText_},this.fieldGroup_);this.imageElement_.setAttributeNS(Blockly.utils.dom.XLINK_NS,"xlink:href",this.value_);this.clickHandler_&&(this.imageElement_.style.cursor="pointer")};Blockly.FieldImage.prototype.updateSize_=function(){}; +Blockly.FieldImage.prototype.initView=function(){this.imageElement_=Blockly.utils.dom.createSvgElement(Blockly.utils.Svg.IMAGE,{height:this.imageHeight_+"px",width:this.size_.width+"px",alt:this.altText_},this.fieldGroup_);this.imageElement_.setAttributeNS(Blockly.utils.dom.XLINK_NS,"xlink:href",this.value_);this.clickHandler_&&(this.imageElement_.style.cursor="pointer")};Blockly.FieldImage.prototype.updateSize_=function(){}; Blockly.FieldImage.prototype.doClassValidation_=function(a){return"string"!=typeof a?null:a};Blockly.FieldImage.prototype.doValueUpdate_=function(a){this.value_=a;this.imageElement_&&this.imageElement_.setAttributeNS(Blockly.utils.dom.XLINK_NS,"xlink:href",String(this.value_))};Blockly.FieldImage.prototype.getFlipRtl=function(){return this.flipRtl_};Blockly.FieldImage.prototype.setAlt=function(a){a!=this.altText_&&(this.altText_=a||"",this.imageElement_&&this.imageElement_.setAttribute("alt",this.altText_))}; -Blockly.FieldImage.prototype.showEditor_=function(){this.clickHandler_&&this.clickHandler_(this)};Blockly.FieldImage.prototype.setOnClickHandler=function(a){this.clickHandler_=a};Blockly.FieldImage.prototype.getText_=function(){return this.altText_};Blockly.fieldRegistry.register("field_image",Blockly.FieldImage);Blockly.FieldMultilineInput=function(a,b,c){Blockly.FieldMultilineInput.superClass_.constructor.call(this,a,b,c);this.textGroup_=null};Blockly.utils.object.inherits(Blockly.FieldMultilineInput,Blockly.FieldTextInput);Blockly.FieldMultilineInput.fromJson=function(a){var b=Blockly.utils.replaceMessageReferences(a.text);return new Blockly.FieldMultilineInput(b,void 0,a)}; -Blockly.FieldMultilineInput.prototype.initView=function(){this.createBorderRect_();this.textGroup_=Blockly.utils.dom.createSvgElement("g",{"class":"blocklyEditableText"},this.fieldGroup_)}; +Blockly.FieldImage.prototype.showEditor_=function(){this.clickHandler_&&this.clickHandler_(this)};Blockly.FieldImage.prototype.setOnClickHandler=function(a){this.clickHandler_=a};Blockly.FieldImage.prototype.getText_=function(){return this.altText_};Blockly.fieldRegistry.register("field_image",Blockly.FieldImage);Blockly.FieldMultilineInput=function(a,b,c){Blockly.FieldMultilineInput.superClass_.constructor.call(this,a,b,c);this.textGroup_=null};Blockly.utils.object.inherits(Blockly.FieldMultilineInput,Blockly.FieldTextInput);Blockly.FieldMultilineInput.fromJson=function(a){var b=Blockly.utils.replaceMessageReferences(a.text);return new Blockly.FieldMultilineInput(b,void 0,a)};Blockly.FieldMultilineInput.prototype.toXml=function(a){a.textContent=this.getValue().replace(/\n/g," ");return a}; +Blockly.FieldMultilineInput.prototype.fromXml=function(a){this.setValue(a.textContent.replace(/ /g,"\n"))};Blockly.FieldMultilineInput.prototype.initView=function(){this.createBorderRect_();this.textGroup_=Blockly.utils.dom.createSvgElement(Blockly.utils.Svg.G,{"class":"blocklyEditableText"},this.fieldGroup_)}; Blockly.FieldMultilineInput.prototype.getDisplayText_=function(){var a=this.value_;if(!a)return Blockly.Field.NBSP;var b=a.split("\n");a="";for(var c=0;cthis.maxDisplayLength&&(d=d.substring(0,this.maxDisplayLength-4)+"...");d=d.replace(/\s/g,Blockly.Field.NBSP);a+=d;c!==b.length-1&&(a+="\n")}this.sourceBlock_.RTL&&(a+="\u200f");return a}; -Blockly.FieldMultilineInput.prototype.render_=function(){for(var a;a=this.textGroup_.firstChild;)this.textGroup_.removeChild(a);a=this.getDisplayText_().split("\n");for(var b=0,c=0;cb&&(b=e);c+=this.getConstants().FIELD_TEXT_HEIGHT+(0this.max_&&Blockly.utils.aria.setState(a,Blockly.utils.aria.State.VALUEMAX,this.max_);return a};Blockly.fieldRegistry.register("field_number",Blockly.FieldNumber);Blockly.FieldVariable=function(a,b,c,d,e){this.menuGenerator_=Blockly.FieldVariable.dropdownCreate;this.defaultVariableName=a||"";this.size_=new Blockly.utils.Size(0,0);e&&this.configure_(e);b&&this.setValidator(b);e||this.setTypes_(c,d)};Blockly.utils.object.inherits(Blockly.FieldVariable,Blockly.FieldDropdown);Blockly.FieldVariable.fromJson=function(a){var b=Blockly.utils.replaceMessageReferences(a.variable);return new Blockly.FieldVariable(b,void 0,void 0,void 0,a)}; Blockly.FieldVariable.prototype.SERIALIZABLE=!0;Blockly.FieldVariable.prototype.configure_=function(a){Blockly.FieldVariable.superClass_.configure_.call(this,a);this.setTypes_(a.variableTypes,a.defaultType)};Blockly.FieldVariable.prototype.initModel=function(){if(!this.variable_){var a=Blockly.Variables.getOrCreateVariablePackage(this.sourceBlock_.workspace,null,this.defaultVariableName,this.defaultType_);this.doValueUpdate_(a.getId())}}; @@ -1123,20 +1167,20 @@ Blockly.blockRendering.ConstantProvider.prototype.generateSecondaryColour_=funct Blockly.blockRendering.ConstantProvider.prototype.dispose=function(){this.embossFilter_&&Blockly.utils.dom.removeNode(this.embossFilter_);this.disabledPattern_&&Blockly.utils.dom.removeNode(this.disabledPattern_);this.debugFilter_&&Blockly.utils.dom.removeNode(this.debugFilter_);this.cssNode_=null}; Blockly.blockRendering.ConstantProvider.prototype.makeJaggedTeeth=function(){var a=this.JAGGED_TEETH_HEIGHT,b=this.JAGGED_TEETH_WIDTH,c=Blockly.utils.svgPaths.line([Blockly.utils.svgPaths.point(b,a/4),Blockly.utils.svgPaths.point(2*-b,a/2),Blockly.utils.svgPaths.point(b,a/4)]);return{height:a,width:b,path:c}}; Blockly.blockRendering.ConstantProvider.prototype.makeStartHat=function(){var a=this.START_HAT_HEIGHT,b=this.START_HAT_WIDTH,c=Blockly.utils.svgPaths.curve("c",[Blockly.utils.svgPaths.point(30,-a),Blockly.utils.svgPaths.point(70,-a),Blockly.utils.svgPaths.point(b,0)]);return{height:a,width:b,path:c}}; -Blockly.blockRendering.ConstantProvider.prototype.makePuzzleTab=function(){function a(a){a=a?-1:1;var d=-a,e=c/2,f=e+2.5,l=e+.5,m=Blockly.utils.svgPaths.point(-b,a*e);e=Blockly.utils.svgPaths.point(b,a*e);return Blockly.utils.svgPaths.curve("c",[Blockly.utils.svgPaths.point(0,a*f),Blockly.utils.svgPaths.point(-b,d*l),m])+Blockly.utils.svgPaths.curve("s",[Blockly.utils.svgPaths.point(b,2.5*d),e])}var b=this.TAB_WIDTH,c=this.TAB_HEIGHT,d=a(!0),e=a(!1);return{type:this.SHAPES.PUZZLE,width:b,height:c, -pathDown:e,pathUp:d}};Blockly.blockRendering.ConstantProvider.prototype.makeNotch=function(){function a(a){return Blockly.utils.svgPaths.line([Blockly.utils.svgPaths.point(a*d,c),Blockly.utils.svgPaths.point(3*a,0),Blockly.utils.svgPaths.point(a*d,-c)])}var b=this.NOTCH_WIDTH,c=this.NOTCH_HEIGHT,d=(b-3)/2,e=a(1),f=a(-1);return{type:this.SHAPES.NOTCH,width:b,height:c,pathLeft:e,pathRight:f}}; +Blockly.blockRendering.ConstantProvider.prototype.makePuzzleTab=function(){function a(f){f=f?-1:1;var g=-f,h=c/2,k=h+2.5,l=h+.5,m=Blockly.utils.svgPaths.point(-b,f*h);h=Blockly.utils.svgPaths.point(b,f*h);return Blockly.utils.svgPaths.curve("c",[Blockly.utils.svgPaths.point(0,f*k),Blockly.utils.svgPaths.point(-b,g*l),m])+Blockly.utils.svgPaths.curve("s",[Blockly.utils.svgPaths.point(b,2.5*g),h])}var b=this.TAB_WIDTH,c=this.TAB_HEIGHT,d=a(!0),e=a(!1);return{type:this.SHAPES.PUZZLE,width:b,height:c, +pathDown:e,pathUp:d}};Blockly.blockRendering.ConstantProvider.prototype.makeNotch=function(){function a(g){return Blockly.utils.svgPaths.line([Blockly.utils.svgPaths.point(g*d,c),Blockly.utils.svgPaths.point(3*g,0),Blockly.utils.svgPaths.point(g*d,-c)])}var b=this.NOTCH_WIDTH,c=this.NOTCH_HEIGHT,d=(b-3)/2,e=a(1),f=a(-1);return{type:this.SHAPES.NOTCH,width:b,height:c,pathLeft:e,pathRight:f}}; Blockly.blockRendering.ConstantProvider.prototype.makeInsideCorners=function(){var a=this.CORNER_RADIUS,b=Blockly.utils.svgPaths.arc("a","0 0,0",a,Blockly.utils.svgPaths.point(-a,a)),c=Blockly.utils.svgPaths.arc("a","0 0,0",a,Blockly.utils.svgPaths.point(a,a));return{width:a,height:a,pathTop:b,pathBottom:c}}; Blockly.blockRendering.ConstantProvider.prototype.makeOutsideCorners=function(){var a=this.CORNER_RADIUS,b=Blockly.utils.svgPaths.moveBy(0,a)+Blockly.utils.svgPaths.arc("a","0 0,1",a,Blockly.utils.svgPaths.point(a,-a)),c=Blockly.utils.svgPaths.arc("a","0 0,1",a,Blockly.utils.svgPaths.point(a,a)),d=Blockly.utils.svgPaths.arc("a","0 0,1",a,Blockly.utils.svgPaths.point(-a,-a)),e=Blockly.utils.svgPaths.arc("a","0 0,1",a,Blockly.utils.svgPaths.point(-a,a));return{topLeft:b,topRight:c,bottomRight:e,bottomLeft:d, rightHeight:a}};Blockly.blockRendering.ConstantProvider.prototype.shapeFor=function(a){switch(a.type){case Blockly.INPUT_VALUE:case Blockly.OUTPUT_VALUE:return this.PUZZLE_TAB;case Blockly.PREVIOUS_STATEMENT:case Blockly.NEXT_STATEMENT:return this.NOTCH;default:throw Error("Unknown connection type");}}; -Blockly.blockRendering.ConstantProvider.prototype.createDom=function(a,b,c){this.injectCSS_(b,c);a=Blockly.utils.dom.createSvgElement("defs",{},a);b=Blockly.utils.dom.createSvgElement("filter",{id:"blocklyEmbossFilter"+this.randomIdentifier},a);Blockly.utils.dom.createSvgElement("feGaussianBlur",{"in":"SourceAlpha",stdDeviation:1,result:"blur"},b);c=Blockly.utils.dom.createSvgElement("feSpecularLighting",{"in":"blur",surfaceScale:1,specularConstant:.5,specularExponent:10,"lighting-color":"white", -result:"specOut"},b);Blockly.utils.dom.createSvgElement("fePointLight",{x:-5E3,y:-1E4,z:2E4},c);Blockly.utils.dom.createSvgElement("feComposite",{"in":"specOut",in2:"SourceAlpha",operator:"in",result:"specOut"},b);Blockly.utils.dom.createSvgElement("feComposite",{"in":"SourceGraphic",in2:"specOut",operator:"arithmetic",k1:0,k2:1,k3:1,k4:0},b);this.embossFilterId=b.id;this.embossFilter_=b;b=Blockly.utils.dom.createSvgElement("pattern",{id:"blocklyDisabledPattern"+this.randomIdentifier,patternUnits:"userSpaceOnUse", -width:10,height:10},a);Blockly.utils.dom.createSvgElement("rect",{width:10,height:10,fill:"#aaa"},b);Blockly.utils.dom.createSvgElement("path",{d:"M 0 0 L 10 10 M 10 0 L 0 10",stroke:"#cc0"},b);this.disabledPatternId=b.id;this.disabledPattern_=b;Blockly.blockRendering.Debug&&(a=Blockly.utils.dom.createSvgElement("filter",{id:"blocklyDebugFilter"+this.randomIdentifier,height:"160%",width:"180%",y:"-30%",x:"-40%"},a),b=Blockly.utils.dom.createSvgElement("feComponentTransfer",{result:"outBlur"},a),Blockly.utils.dom.createSvgElement("feFuncA", -{type:"table",tableValues:"0 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1"},b),Blockly.utils.dom.createSvgElement("feFlood",{"flood-color":"#ff0000","flood-opacity":.5,result:"outColor"},a),Blockly.utils.dom.createSvgElement("feComposite",{"in":"outColor",in2:"outBlur",operator:"in",result:"outGlow"},a),this.debugFilterId=a.id,this.debugFilter_=a)}; -Blockly.blockRendering.ConstantProvider.prototype.injectCSS_=function(a,b){b=this.getCSS_(b);a="blockly-renderer-style-"+a;this.cssNode_=document.getElementById(a);var c=b.join("\n");this.cssNode_?this.cssNode_.firstChild.textContent=c:(b=document.createElement("style"),b.id=a,a=document.createTextNode(c),b.appendChild(a),document.head.insertBefore(b,document.head.firstChild),this.cssNode_=b)}; +Blockly.blockRendering.ConstantProvider.prototype.createDom=function(a,b,c){this.injectCSS_(b,c);a=Blockly.utils.dom.createSvgElement(Blockly.utils.Svg.DEFS,{},a);b=Blockly.utils.dom.createSvgElement(Blockly.utils.Svg.FILTER,{id:"blocklyEmbossFilter"+this.randomIdentifier},a);Blockly.utils.dom.createSvgElement(Blockly.utils.Svg.FEGAUSSIANBLUR,{"in":"SourceAlpha",stdDeviation:1,result:"blur"},b);c=Blockly.utils.dom.createSvgElement(Blockly.utils.Svg.FESPECULARLIGHTING,{"in":"blur",surfaceScale:1,specularConstant:.5, +specularExponent:10,"lighting-color":"white",result:"specOut"},b);Blockly.utils.dom.createSvgElement(Blockly.utils.Svg.FEPOINTLIGHT,{x:-5E3,y:-1E4,z:2E4},c);Blockly.utils.dom.createSvgElement(Blockly.utils.Svg.FECOMPOSITE,{"in":"specOut",in2:"SourceAlpha",operator:"in",result:"specOut"},b);Blockly.utils.dom.createSvgElement(Blockly.utils.Svg.FECOMPOSITE,{"in":"SourceGraphic",in2:"specOut",operator:"arithmetic",k1:0,k2:1,k3:1,k4:0},b);this.embossFilterId=b.id;this.embossFilter_=b;b=Blockly.utils.dom.createSvgElement(Blockly.utils.Svg.PATTERN, +{id:"blocklyDisabledPattern"+this.randomIdentifier,patternUnits:"userSpaceOnUse",width:10,height:10},a);Blockly.utils.dom.createSvgElement(Blockly.utils.Svg.RECT,{width:10,height:10,fill:"#aaa"},b);Blockly.utils.dom.createSvgElement(Blockly.utils.Svg.PATH,{d:"M 0 0 L 10 10 M 10 0 L 0 10",stroke:"#cc0"},b);this.disabledPatternId=b.id;this.disabledPattern_=b;Blockly.blockRendering.Debug&&(a=Blockly.utils.dom.createSvgElement(Blockly.utils.Svg.FILTER,{id:"blocklyDebugFilter"+this.randomIdentifier,height:"160%", +width:"180%",y:"-30%",x:"-40%"},a),b=Blockly.utils.dom.createSvgElement(Blockly.utils.Svg.FECOMPONENTTRANSFER,{result:"outBlur"},a),Blockly.utils.dom.createSvgElement(Blockly.utils.Svg.FEFUNCA,{type:"table",tableValues:"0 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1"},b),Blockly.utils.dom.createSvgElement(Blockly.utils.Svg.FEFLOOD,{"flood-color":"#ff0000","flood-opacity":.5,result:"outColor"},a),Blockly.utils.dom.createSvgElement(Blockly.utils.Svg.FECOMPOSITE,{"in":"outColor",in2:"outBlur",operator:"in",result:"outGlow"}, +a),this.debugFilterId=a.id,this.debugFilter_=a)};Blockly.blockRendering.ConstantProvider.prototype.injectCSS_=function(a,b){b=this.getCSS_(b);a="blockly-renderer-style-"+a;this.cssNode_=document.getElementById(a);var c=b.join("\n");this.cssNode_?this.cssNode_.firstChild.textContent=c:(b=document.createElement("style"),b.id=a,a=document.createTextNode(c),b.appendChild(a),document.head.insertBefore(b,document.head.firstChild),this.cssNode_=b)}; Blockly.blockRendering.ConstantProvider.prototype.getCSS_=function(a){return[a+" .blocklyText, ",a+" .blocklyFlyoutLabelText {","font: "+this.FIELD_TEXT_FONTWEIGHT+" "+this.FIELD_TEXT_FONTSIZE+"pt "+this.FIELD_TEXT_FONTFAMILY+";","}",a+" .blocklyText {","fill: #fff;","}",a+" .blocklyNonEditableText>rect,",a+" .blocklyEditableText>rect {","fill: "+this.FIELD_BORDER_RECT_COLOUR+";","fill-opacity: .6;","stroke: none;","}",a+" .blocklyNonEditableText>text,",a+" .blocklyEditableText>text {","fill: #000;", "}",a+" .blocklyFlyoutLabelText {","fill: #000;","}",a+" .blocklyText.blocklyBubbleText {","fill: #000;","}",a+" .blocklyEditableText:not(.editing):hover>rect {","stroke: #fff;","stroke-width: 2;","}",a+" .blocklyHtmlInput {","font-family: "+this.FIELD_TEXT_FONTFAMILY+";","font-weight: "+this.FIELD_TEXT_FONTWEIGHT+";","}",a+" .blocklySelected>.blocklyPath {","stroke: #fc3;","stroke-width: 3px;","}",a+" .blocklyHighlightedConnectionPath {","stroke: #fc3;","}",a+" .blocklyReplaceable .blocklyPath {", "fill-opacity: .5;","}",a+" .blocklyReplaceable .blocklyPathLight,",a+" .blocklyReplaceable .blocklyPathDark {","display: none;","}",a+" .blocklyInsertionMarker>.blocklyPath {","fill-opacity: "+this.INSERTION_MARKER_OPACITY+";","stroke: none;","}"]};Blockly.blockRendering.MarkerSvg=function(a,b,c){this.workspace_=a;this.marker_=c;this.parent_=null;this.constants_=b;this.currentMarkerSvg=null;a=this.isCursor()?this.constants_.CURSOR_COLOUR:this.constants_.MARKER_COLOUR;this.colour_=c.colour||a};Blockly.blockRendering.MarkerSvg.CURSOR_CLASS="blocklyCursor";Blockly.blockRendering.MarkerSvg.MARKER_CLASS="blocklyMarker";Blockly.blockRendering.MarkerSvg.HEIGHT_MULTIPLIER=.75;Blockly.blockRendering.MarkerSvg.prototype.getSvgRoot=function(){return this.svgGroup_}; -Blockly.blockRendering.MarkerSvg.prototype.getMarker=function(){return this.marker_};Blockly.blockRendering.MarkerSvg.prototype.isCursor=function(){return"cursor"==this.marker_.type};Blockly.blockRendering.MarkerSvg.prototype.createDom=function(){var a=this.isCursor()?Blockly.blockRendering.MarkerSvg.CURSOR_CLASS:Blockly.blockRendering.MarkerSvg.MARKER_CLASS;this.svgGroup_=Blockly.utils.dom.createSvgElement("g",{"class":a},null);this.createDomInternal_();return this.svgGroup_}; +Blockly.blockRendering.MarkerSvg.prototype.getMarker=function(){return this.marker_};Blockly.blockRendering.MarkerSvg.prototype.isCursor=function(){return"cursor"==this.marker_.type};Blockly.blockRendering.MarkerSvg.prototype.createDom=function(){var a=this.isCursor()?Blockly.blockRendering.MarkerSvg.CURSOR_CLASS:Blockly.blockRendering.MarkerSvg.MARKER_CLASS;this.svgGroup_=Blockly.utils.dom.createSvgElement(Blockly.utils.Svg.G,{"class":a},null);this.createDomInternal_();return this.svgGroup_}; Blockly.blockRendering.MarkerSvg.prototype.setParent_=function(a){this.isCursor()?(this.parent_&&this.parent_.setCursorSvg(null),a.setCursorSvg(this.getSvgRoot())):(this.parent_&&this.parent_.setMarkerSvg(null),a.setMarkerSvg(this.getSvgRoot()));this.parent_=a}; Blockly.blockRendering.MarkerSvg.prototype.draw=function(a,b){if(b){this.constants_=this.workspace_.getRenderer().getConstants();var c=this.isCursor()?this.constants_.CURSOR_COLOUR:this.constants_.MARKER_COLOUR;this.colour_=this.marker_.colour||c;this.applyColour_(b);this.showAtLocation_(b);this.fireMarkerEvent_(a,b);a=this.currentMarkerSvg.childNodes[0];void 0!==a&&a.beginElement&&a.beginElement()}else this.hide()}; Blockly.blockRendering.MarkerSvg.prototype.showAtLocation_=function(a){var b=a.getLocation();a.getType()==Blockly.ASTNode.types.BLOCK?this.showWithBlock_(a):a.getType()==Blockly.ASTNode.types.OUTPUT?this.showWithOutput_(a):b.type==Blockly.INPUT_VALUE?this.showWithInput_(a):b.type==Blockly.NEXT_STATEMENT?this.showWithNext_(a):a.getType()==Blockly.ASTNode.types.PREVIOUS?this.showWithPrevious_(a):a.getType()==Blockly.ASTNode.types.FIELD?this.showWithField_(a):a.getType()==Blockly.ASTNode.types.WORKSPACE? @@ -1154,13 +1198,13 @@ Blockly.blockRendering.MarkerSvg.prototype.positionPrevious_=function(a,b,c,d){a Blockly.blockRendering.MarkerSvg.prototype.positionRect_=function(a,b,c,d){this.markerSvgRect_.setAttribute("x",a);this.markerSvgRect_.setAttribute("y",b);this.markerSvgRect_.setAttribute("width",c);this.markerSvgRect_.setAttribute("height",d);this.currentMarkerSvg=this.markerSvgRect_};Blockly.blockRendering.MarkerSvg.prototype.flipRtl_=function(a){a.setAttribute("transform","scale(-1 1)")}; Blockly.blockRendering.MarkerSvg.prototype.hide=function(){this.markerSvgLine_.style.display="none";this.markerSvgRect_.style.display="none";this.markerInput_.style.display="none";this.markerBlock_.style.display="none"};Blockly.blockRendering.MarkerSvg.prototype.fireMarkerEvent_=function(a,b){var c=b.getSourceBlock(),d=this.isCursor()?"cursorMove":"markerMove";a=new Blockly.Events.Ui(c,d,a,b);b.getType()==Blockly.ASTNode.types.WORKSPACE&&(a.workspaceId=b.getLocation().id);Blockly.Events.fire(a)}; Blockly.blockRendering.MarkerSvg.prototype.getBlinkProperties_=function(){return{attributeType:"XML",attributeName:"fill",dur:"1s",values:this.colour_+";transparent;transparent;",repeatCount:"indefinite"}}; -Blockly.blockRendering.MarkerSvg.prototype.createDomInternal_=function(){this.markerSvg_=Blockly.utils.dom.createSvgElement("g",{width:this.constants_.CURSOR_WS_WIDTH,height:this.constants_.WS_CURSOR_HEIGHT},this.svgGroup_);this.markerSvgLine_=Blockly.utils.dom.createSvgElement("rect",{width:this.constants_.CURSOR_WS_WIDTH,height:this.constants_.WS_CURSOR_HEIGHT,style:"display: none"},this.markerSvg_);this.markerSvgRect_=Blockly.utils.dom.createSvgElement("rect",{"class":"blocklyVerticalMarker",rx:10, -ry:10,style:"display: none"},this.markerSvg_);this.markerInput_=Blockly.utils.dom.createSvgElement("path",{transform:"",style:"display: none"},this.markerSvg_);this.markerBlock_=Blockly.utils.dom.createSvgElement("path",{transform:"",style:"display: none",fill:"none","stroke-width":this.constants_.CURSOR_STROKE_WIDTH},this.markerSvg_);if(this.isCursor()){var a=this.getBlinkProperties_();Blockly.utils.dom.createSvgElement("animate",a,this.markerSvgLine_);Blockly.utils.dom.createSvgElement("animate", -a,this.markerInput_);a.attributeName="stroke";Blockly.utils.dom.createSvgElement("animate",a,this.markerBlock_)}return this.markerSvg_}; +Blockly.blockRendering.MarkerSvg.prototype.createDomInternal_=function(){this.markerSvg_=Blockly.utils.dom.createSvgElement(Blockly.utils.Svg.G,{width:this.constants_.CURSOR_WS_WIDTH,height:this.constants_.WS_CURSOR_HEIGHT},this.svgGroup_);this.markerSvgLine_=Blockly.utils.dom.createSvgElement(Blockly.utils.Svg.RECT,{width:this.constants_.CURSOR_WS_WIDTH,height:this.constants_.WS_CURSOR_HEIGHT,style:"display: none"},this.markerSvg_);this.markerSvgRect_=Blockly.utils.dom.createSvgElement(Blockly.utils.Svg.RECT, +{"class":"blocklyVerticalMarker",rx:10,ry:10,style:"display: none"},this.markerSvg_);this.markerInput_=Blockly.utils.dom.createSvgElement(Blockly.utils.Svg.PATH,{transform:"",style:"display: none"},this.markerSvg_);this.markerBlock_=Blockly.utils.dom.createSvgElement(Blockly.utils.Svg.PATH,{transform:"",style:"display: none",fill:"none","stroke-width":this.constants_.CURSOR_STROKE_WIDTH},this.markerSvg_);if(this.isCursor()){var a=this.getBlinkProperties_();Blockly.utils.dom.createSvgElement(Blockly.utils.Svg.ANIMATE, +a,this.markerSvgLine_);Blockly.utils.dom.createSvgElement(Blockly.utils.Svg.ANIMATE,a,this.markerInput_);a.attributeName="stroke";Blockly.utils.dom.createSvgElement(Blockly.utils.Svg.ANIMATE,a,this.markerBlock_)}return this.markerSvg_}; Blockly.blockRendering.MarkerSvg.prototype.applyColour_=function(a){this.markerSvgLine_.setAttribute("fill",this.colour_);this.markerSvgRect_.setAttribute("stroke",this.colour_);this.markerInput_.setAttribute("fill",this.colour_);this.markerBlock_.setAttribute("stroke",this.colour_);this.isCursor()&&(a=this.colour_+";transparent;transparent;",this.markerSvgLine_.firstChild.setAttribute("values",a),this.markerInput_.firstChild.setAttribute("values",a),this.markerBlock_.firstChild.setAttribute("values", a))};Blockly.blockRendering.MarkerSvg.prototype.dispose=function(){this.svgGroup_&&Blockly.utils.dom.removeNode(this.svgGroup_)};Blockly.blockRendering.Types={NONE:0,FIELD:1,HAT:2,ICON:4,SPACER:8,BETWEEN_ROW_SPACER:16,IN_ROW_SPACER:32,EXTERNAL_VALUE_INPUT:64,INPUT:128,INLINE_INPUT:256,STATEMENT_INPUT:512,CONNECTION:1024,PREVIOUS_CONNECTION:2048,NEXT_CONNECTION:4096,OUTPUT_CONNECTION:8192,CORNER:16384,LEFT_SQUARE_CORNER:32768,LEFT_ROUND_CORNER:65536,RIGHT_SQUARE_CORNER:131072,RIGHT_ROUND_CORNER:262144,JAGGED_EDGE:524288,ROW:1048576,TOP_ROW:2097152,BOTTOM_ROW:4194304,INPUT_ROW:8388608}; Blockly.blockRendering.Types.LEFT_CORNER=Blockly.blockRendering.Types.LEFT_SQUARE_CORNER|Blockly.blockRendering.Types.LEFT_ROUND_CORNER;Blockly.blockRendering.Types.RIGHT_CORNER=Blockly.blockRendering.Types.RIGHT_SQUARE_CORNER|Blockly.blockRendering.Types.RIGHT_ROUND_CORNER;Blockly.blockRendering.Types.nextTypeValue_=16777216; -Blockly.blockRendering.Types.getType=function(a){Blockly.blockRendering.Types.hasOwnProperty(a)||(Blockly.blockRendering.Types[a]=Blockly.blockRendering.Types.nextTypeValue_,Blockly.blockRendering.Types.nextTypeValue_<<=1);return Blockly.blockRendering.Types[a]};Blockly.blockRendering.Types.isField=function(a){return a.type&Blockly.blockRendering.Types.FIELD};Blockly.blockRendering.Types.isHat=function(a){return a.type&Blockly.blockRendering.Types.HAT}; +Blockly.blockRendering.Types.getType=function(a){Object.prototype.hasOwnProperty.call(Blockly.blockRendering.Types,a)||(Blockly.blockRendering.Types[a]=Blockly.blockRendering.Types.nextTypeValue_,Blockly.blockRendering.Types.nextTypeValue_<<=1);return Blockly.blockRendering.Types[a]};Blockly.blockRendering.Types.isField=function(a){return a.type&Blockly.blockRendering.Types.FIELD};Blockly.blockRendering.Types.isHat=function(a){return a.type&Blockly.blockRendering.Types.HAT}; Blockly.blockRendering.Types.isIcon=function(a){return a.type&Blockly.blockRendering.Types.ICON};Blockly.blockRendering.Types.isSpacer=function(a){return a.type&Blockly.blockRendering.Types.SPACER};Blockly.blockRendering.Types.isInRowSpacer=function(a){return a.type&Blockly.blockRendering.Types.IN_ROW_SPACER};Blockly.blockRendering.Types.isInput=function(a){return a.type&Blockly.blockRendering.Types.INPUT};Blockly.blockRendering.Types.isExternalInput=function(a){return a.type&Blockly.blockRendering.Types.EXTERNAL_VALUE_INPUT}; Blockly.blockRendering.Types.isInlineInput=function(a){return a.type&Blockly.blockRendering.Types.INLINE_INPUT};Blockly.blockRendering.Types.isStatementInput=function(a){return a.type&Blockly.blockRendering.Types.STATEMENT_INPUT};Blockly.blockRendering.Types.isPreviousConnection=function(a){return a.type&Blockly.blockRendering.Types.PREVIOUS_CONNECTION};Blockly.blockRendering.Types.isNextConnection=function(a){return a.type&Blockly.blockRendering.Types.NEXT_CONNECTION}; Blockly.blockRendering.Types.isPreviousOrNextConnection=function(a){return a.type&(Blockly.blockRendering.Types.PREVIOUS_CONNECTION|Blockly.blockRendering.Types.NEXT_CONNECTION)};Blockly.blockRendering.Types.isLeftRoundedCorner=function(a){return a.type&Blockly.blockRendering.Types.LEFT_ROUND_CORNER};Blockly.blockRendering.Types.isRightRoundedCorner=function(a){return a.type&Blockly.blockRendering.Types.RIGHT_ROUND_CORNER}; @@ -1235,7 +1279,7 @@ Blockly.blockRendering.Drawer.prototype.drawInlineInput_=function(a){var b=a.wid Blockly.blockRendering.Drawer.prototype.positionInlineInputConnection_=function(a){var b=a.centerline-a.height/2;if(a.connectionModel){var c=a.xPos+a.connectionWidth+a.connectionOffsetX;this.info_.RTL&&(c*=-1);a.connectionModel.setOffsetInBlock(c,b+a.connectionOffsetY)}}; Blockly.blockRendering.Drawer.prototype.positionStatementInputConnection_=function(a){var b=a.getLastInput();if(b.connectionModel){var c=a.xPos+a.statementEdge+b.notchOffset;this.info_.RTL&&(c*=-1);b.connectionModel.setOffsetInBlock(c,a.yPos)}};Blockly.blockRendering.Drawer.prototype.positionExternalValueConnection_=function(a){var b=a.getLastInput();if(b.connectionModel){var c=a.xPos+a.width;this.info_.RTL&&(c*=-1);b.connectionModel.setOffsetInBlock(c,a.yPos)}}; Blockly.blockRendering.Drawer.prototype.positionPreviousConnection_=function(){var a=this.info_.topRow;if(a.connection){var b=a.xPos+a.notchOffset;a.connection.connectionModel.setOffsetInBlock(this.info_.RTL?-b:b,0)}};Blockly.blockRendering.Drawer.prototype.positionNextConnection_=function(){var a=this.info_.bottomRow;if(a.connection){var b=a.connection,c=b.xPos;b.connectionModel.setOffsetInBlock(this.info_.RTL?-c:c,a.baseline)}}; -Blockly.blockRendering.Drawer.prototype.positionOutputConnection_=function(){if(this.info_.outputConnection){var a=this.info_.startX+this.info_.outputConnection.connectionOffsetX;this.block_.outputConnection.setOffsetInBlock(this.info_.RTL?-a:a,this.info_.outputConnection.connectionOffsetY)}};Blockly.blockRendering.PathObject=function(a,b,c){this.constants=c;this.svgRoot=a;this.svgPath=Blockly.utils.dom.createSvgElement("path",{"class":"blocklyPath"},this.svgRoot);this.style=b;this.markerSvg=this.cursorSvg=null};Blockly.blockRendering.PathObject.prototype.setPath=function(a){this.svgPath.setAttribute("d",a)};Blockly.blockRendering.PathObject.prototype.flipRTL=function(){this.svgPath.setAttribute("transform","scale(-1 1)")}; +Blockly.blockRendering.Drawer.prototype.positionOutputConnection_=function(){if(this.info_.outputConnection){var a=this.info_.startX+this.info_.outputConnection.connectionOffsetX;this.block_.outputConnection.setOffsetInBlock(this.info_.RTL?-a:a,this.info_.outputConnection.connectionOffsetY)}};Blockly.blockRendering.PathObject=function(a,b,c){this.constants=c;this.svgRoot=a;this.svgPath=Blockly.utils.dom.createSvgElement(Blockly.utils.Svg.PATH,{"class":"blocklyPath"},this.svgRoot);this.style=b;this.markerSvg=this.cursorSvg=null};Blockly.blockRendering.PathObject.prototype.setPath=function(a){this.svgPath.setAttribute("d",a)};Blockly.blockRendering.PathObject.prototype.flipRTL=function(){this.svgPath.setAttribute("transform","scale(-1 1)")}; Blockly.blockRendering.PathObject.prototype.setCursorSvg=function(a){a?(this.svgRoot.appendChild(a),this.cursorSvg=a):this.cursorSvg=null};Blockly.blockRendering.PathObject.prototype.setMarkerSvg=function(a){a?(this.cursorSvg?this.svgRoot.insertBefore(a,this.cursorSvg):this.svgRoot.appendChild(a),this.markerSvg=a):this.markerSvg=null}; Blockly.blockRendering.PathObject.prototype.applyColour=function(a){this.svgPath.setAttribute("stroke",this.style.colourTertiary);this.svgPath.setAttribute("fill",this.style.colourPrimary);this.updateShadow_(a.isShadow());this.updateDisabled_(!a.isEnabled()||a.getInheritedDisabled())};Blockly.blockRendering.PathObject.prototype.setStyle=function(a){this.style=a}; Blockly.blockRendering.PathObject.prototype.setClass_=function(a,b){b?Blockly.utils.dom.addClass(this.svgRoot,a):Blockly.utils.dom.removeClass(this.svgRoot,a)};Blockly.blockRendering.PathObject.prototype.updateHighlighted=function(a){a?this.svgPath.setAttribute("filter","url(#"+this.constants.embossFilterId+")"):this.svgPath.setAttribute("filter","none")}; @@ -1245,7 +1289,7 @@ Blockly.blockRendering.PathObject.prototype.updateShapeForInputHighlight=functio Blockly.blockRendering.Renderer.prototype.createDom=function(a,b){this.constants_.createDom(a,this.name+"-"+b.name,"."+this.getClassName()+"."+b.getClassName())};Blockly.blockRendering.Renderer.prototype.refreshDom=function(a,b){var c=this.getConstants();c.dispose();this.constants_=this.makeConstants_();this.overrides&&Blockly.utils.object.mixin(this.constants_,this.overrides);this.constants_.randomIdentifier=c.randomIdentifier;this.constants_.setTheme(b);this.constants_.init();this.createDom(a,b)}; Blockly.blockRendering.Renderer.prototype.dispose=function(){this.constants_&&this.constants_.dispose()};Blockly.blockRendering.Renderer.prototype.makeConstants_=function(){return new Blockly.blockRendering.ConstantProvider};Blockly.blockRendering.Renderer.prototype.makeRenderInfo_=function(a){return new Blockly.blockRendering.RenderInfo(this,a)};Blockly.blockRendering.Renderer.prototype.makeDrawer_=function(a,b){return new Blockly.blockRendering.Drawer(a,b)}; Blockly.blockRendering.Renderer.prototype.makeDebugger_=function(){if(!Blockly.blockRendering.Debug)throw Error("Missing require for Blockly.blockRendering.Debug");return new Blockly.blockRendering.Debug(this.getConstants())};Blockly.blockRendering.Renderer.prototype.makeMarkerDrawer=function(a,b){return new Blockly.blockRendering.MarkerSvg(a,this.getConstants(),b)};Blockly.blockRendering.Renderer.prototype.makePathObject=function(a,b){return new Blockly.blockRendering.PathObject(a,b,this.constants_)}; -Blockly.blockRendering.Renderer.prototype.getConstants=function(){return this.constants_};Blockly.blockRendering.Renderer.prototype.shouldHighlightConnection=function(a){return!0};Blockly.blockRendering.Renderer.prototype.orphanCanConnectAtEnd=function(a,b,c){c==Blockly.OUTPUT_VALUE?(c=b.outputConnection,a=Blockly.Connection.lastConnectionInRow(a,b)):(c=b.previousConnection,a=a.lastConnectionInStack());return a?c.checkType(a):!1}; +Blockly.blockRendering.Renderer.prototype.getConstants=function(){return this.constants_};Blockly.blockRendering.Renderer.prototype.shouldHighlightConnection=function(a){return!0};Blockly.blockRendering.Renderer.prototype.orphanCanConnectAtEnd=function(a,b,c){c==Blockly.OUTPUT_VALUE?(c=b.outputConnection,a=Blockly.Connection.lastConnectionInRow(a,b)):(c=b.previousConnection,a=a.lastConnectionInStack());return a?c.getConnectionChecker().canConnect(a,c,!1):!1}; Blockly.blockRendering.Renderer.prototype.getConnectionPreviewMethod=function(a,b,c){return b.type==Blockly.OUTPUT_VALUE||b.type==Blockly.PREVIOUS_STATEMENT?!a.isConnected()||this.orphanCanConnectAtEnd(c,a.targetBlock(),b.type)?Blockly.InsertionMarkerManager.PREVIEW_TYPE.INSERTION_MARKER:Blockly.InsertionMarkerManager.PREVIEW_TYPE.REPLACEMENT_FADE:Blockly.InsertionMarkerManager.PREVIEW_TYPE.INSERTION_MARKER}; Blockly.blockRendering.Renderer.prototype.render=function(a){Blockly.blockRendering.useDebugger&&!a.renderingDebugger&&(a.renderingDebugger=this.makeDebugger_());var b=this.makeRenderInfo_(a);b.measure();this.makeDrawer_(a,b).draw()};Blockly.geras={};Blockly.geras.ConstantProvider=function(){Blockly.geras.ConstantProvider.superClass_.constructor.call(this);this.FIELD_TEXT_BASELINE_CENTER=!1;this.DARK_PATH_OFFSET=1;this.MAX_BOTTOM_WIDTH=30};Blockly.utils.object.inherits(Blockly.geras.ConstantProvider,Blockly.blockRendering.ConstantProvider); Blockly.geras.ConstantProvider.prototype.getCSS_=function(a){return Blockly.geras.ConstantProvider.superClass_.getCSS_.call(this,a).concat([a+" .blocklyInsertionMarker>.blocklyPathLight,",a+" .blocklyInsertionMarker>.blocklyPathDark {","fill-opacity: "+this.INSERTION_MARKER_OPACITY+";","stroke: none;","}"])};Blockly.geras.Highlighter=function(a){this.info_=a;this.inlineSteps_=this.steps_="";this.RTL_=this.info_.RTL;a=a.getRenderer();this.constants_=a.getConstants();this.highlightConstants_=a.getHighlightConstants();this.highlightOffset_=this.highlightConstants_.OFFSET;this.outsideCornerPaths_=this.highlightConstants_.OUTSIDE_CORNER;this.insideCornerPaths_=this.highlightConstants_.INSIDE_CORNER;this.puzzleTabPaths_=this.highlightConstants_.PUZZLE_TAB;this.notchPaths_=this.highlightConstants_.NOTCH;this.startPaths_= @@ -1288,15 +1332,16 @@ Blockly.geras.Drawer.prototype.drawInlineInput_=function(a){this.highlighter_.dr Blockly.geras.Drawer.prototype.positionStatementInputConnection_=function(a){var b=a.getLastInput();if(b.connectionModel){var c=a.xPos+a.statementEdge+b.notchOffset;c=this.info_.RTL?-1*c:c+this.constants_.DARK_PATH_OFFSET;b.connectionModel.setOffsetInBlock(c,a.yPos+this.constants_.DARK_PATH_OFFSET)}}; Blockly.geras.Drawer.prototype.positionExternalValueConnection_=function(a){var b=a.getLastInput();if(b.connectionModel){var c=a.xPos+a.width+this.constants_.DARK_PATH_OFFSET;this.info_.RTL&&(c*=-1);b.connectionModel.setOffsetInBlock(c,a.yPos)}};Blockly.geras.Drawer.prototype.positionNextConnection_=function(){var a=this.info_.bottomRow;if(a.connection){var b=a.connection,c=b.xPos;b.connectionModel.setOffsetInBlock((this.info_.RTL?-c:c)+this.constants_.DARK_PATH_OFFSET/2,a.baseline+this.constants_.DARK_PATH_OFFSET)}};Blockly.geras.HighlightConstantProvider=function(a){this.constantProvider=a;this.OFFSET=.5;this.START_POINT=Blockly.utils.svgPaths.moveBy(this.OFFSET,this.OFFSET)};Blockly.geras.HighlightConstantProvider.prototype.init=function(){this.INSIDE_CORNER=this.makeInsideCorner();this.OUTSIDE_CORNER=this.makeOutsideCorner();this.PUZZLE_TAB=this.makePuzzleTab();this.NOTCH=this.makeNotch();this.JAGGED_TEETH=this.makeJaggedTeeth();this.START_HAT=this.makeStartHat()}; Blockly.geras.HighlightConstantProvider.prototype.makeInsideCorner=function(){var a=this.constantProvider.CORNER_RADIUS,b=this.OFFSET,c=(1-Math.SQRT1_2)*(a+b)-b,d=Blockly.utils.svgPaths.moveBy(c,c)+Blockly.utils.svgPaths.arc("a","0 0,0",a,Blockly.utils.svgPaths.point(-c-b,a-c)),e=Blockly.utils.svgPaths.arc("a","0 0,0",a+b,Blockly.utils.svgPaths.point(a+b,a+b)),f=Blockly.utils.svgPaths.moveBy(c,-c)+Blockly.utils.svgPaths.arc("a","0 0,0",a+b,Blockly.utils.svgPaths.point(a-c,c+b));return{width:a+b,height:a, -pathTop:function(a){return a?d:""},pathBottom:function(a){return a?e:f}}}; +pathTop:function(g){return g?d:""},pathBottom:function(g){return g?e:f}}}; Blockly.geras.HighlightConstantProvider.prototype.makeOutsideCorner=function(){var a=this.constantProvider.CORNER_RADIUS,b=this.OFFSET,c=(1-Math.SQRT1_2)*(a-b)+b,d=Blockly.utils.svgPaths.moveBy(c,c)+Blockly.utils.svgPaths.arc("a","0 0,1",a-b,Blockly.utils.svgPaths.point(a-c,-c+b)),e=Blockly.utils.svgPaths.moveBy(b,a)+Blockly.utils.svgPaths.arc("a","0 0,1",a-b,Blockly.utils.svgPaths.point(a,-a+b)),f=-c,g=Blockly.utils.svgPaths.moveBy(c,f)+Blockly.utils.svgPaths.arc("a","0 0,1",a-b,Blockly.utils.svgPaths.point(-c+ -b,-f-a));return{height:a,topLeft:function(a){return a?d:e},bottomLeft:function(){return g}}}; +b,-f-a));return{height:a,topLeft:function(h){return h?d:e},bottomLeft:function(){return g}}}; Blockly.geras.HighlightConstantProvider.prototype.makePuzzleTab=function(){var a=this.constantProvider.TAB_WIDTH,b=this.constantProvider.TAB_HEIGHT,c=Blockly.utils.svgPaths.moveBy(-2,-b+3.4)+Blockly.utils.svgPaths.lineTo(-.45*a,-2.1),d=Blockly.utils.svgPaths.lineOnAxis("v",2.5)+Blockly.utils.svgPaths.moveBy(.97*-a,2.5)+Blockly.utils.svgPaths.curve("q",[Blockly.utils.svgPaths.point(.05*-a,10),Blockly.utils.svgPaths.point(.3*a,9.5)])+Blockly.utils.svgPaths.moveBy(.67*a,-1.9)+Blockly.utils.svgPaths.lineOnAxis("v", -2.5),e=Blockly.utils.svgPaths.lineOnAxis("v",-1.5)+Blockly.utils.svgPaths.moveBy(-.92*a,-.5)+Blockly.utils.svgPaths.curve("q",[Blockly.utils.svgPaths.point(-.19*a,-5.5),Blockly.utils.svgPaths.point(0,-11)])+Blockly.utils.svgPaths.moveBy(.92*a,1),f=Blockly.utils.svgPaths.moveBy(-5,b-.7)+Blockly.utils.svgPaths.lineTo(.46*a,-2.1);return{width:a,height:b,pathUp:function(a){return a?c:e},pathDown:function(a){return a?d:f}}}; +2.5),e=Blockly.utils.svgPaths.lineOnAxis("v",-1.5)+Blockly.utils.svgPaths.moveBy(-.92*a,-.5)+Blockly.utils.svgPaths.curve("q",[Blockly.utils.svgPaths.point(-.19*a,-5.5),Blockly.utils.svgPaths.point(0,-11)])+Blockly.utils.svgPaths.moveBy(.92*a,1),f=Blockly.utils.svgPaths.moveBy(-5,b-.7)+Blockly.utils.svgPaths.lineTo(.46*a,-2.1);return{width:a,height:b,pathUp:function(g){return g?c:e},pathDown:function(g){return g?d:f}}}; Blockly.geras.HighlightConstantProvider.prototype.makeNotch=function(){return{pathLeft:Blockly.utils.svgPaths.lineOnAxis("h",this.OFFSET)+this.constantProvider.NOTCH.pathLeft}};Blockly.geras.HighlightConstantProvider.prototype.makeJaggedTeeth=function(){return{pathLeft:Blockly.utils.svgPaths.lineTo(5.1,2.6)+Blockly.utils.svgPaths.moveBy(-10.2,6.8)+Blockly.utils.svgPaths.lineTo(5.1,2.6),height:12,width:10.2}}; Blockly.geras.HighlightConstantProvider.prototype.makeStartHat=function(){var a=this.constantProvider.START_HAT.height,b=Blockly.utils.svgPaths.moveBy(25,-8.7)+Blockly.utils.svgPaths.curve("c",[Blockly.utils.svgPaths.point(29.7,-6.2),Blockly.utils.svgPaths.point(57.2,-.5),Blockly.utils.svgPaths.point(75,8.7)]),c=Blockly.utils.svgPaths.curve("c",[Blockly.utils.svgPaths.point(17.8,-9.2),Blockly.utils.svgPaths.point(45.3,-14.9),Blockly.utils.svgPaths.point(75,-8.7)])+Blockly.utils.svgPaths.moveTo(100.5, -a+.5);return{path:function(a){return a?b:c}}};Blockly.geras.PathObject=function(a,b,c){this.constants=c;this.svgRoot=a;this.svgPathDark=Blockly.utils.dom.createSvgElement("path",{"class":"blocklyPathDark",transform:"translate(1,1)"},this.svgRoot);this.svgPath=Blockly.utils.dom.createSvgElement("path",{"class":"blocklyPath"},this.svgRoot);this.svgPathLight=Blockly.utils.dom.createSvgElement("path",{"class":"blocklyPathLight"},this.svgRoot);this.colourDark="#000000";this.style=b};Blockly.utils.object.inherits(Blockly.geras.PathObject,Blockly.blockRendering.PathObject); -Blockly.geras.PathObject.prototype.setPath=function(a){this.svgPath.setAttribute("d",a);this.svgPathDark.setAttribute("d",a)};Blockly.geras.PathObject.prototype.setHighlightPath=function(a){this.svgPathLight.setAttribute("d",a)};Blockly.geras.PathObject.prototype.flipRTL=function(){this.svgPath.setAttribute("transform","scale(-1 1)");this.svgPathLight.setAttribute("transform","scale(-1 1)");this.svgPathDark.setAttribute("transform","translate(1,1) scale(-1 1)")}; +a+.5);return{path:function(d){return d?b:c}}};Blockly.geras.PathObject=function(a,b,c){this.constants=c;this.svgRoot=a;this.svgPathDark=Blockly.utils.dom.createSvgElement(Blockly.utils.Svg.PATH,{"class":"blocklyPathDark",transform:"translate(1,1)"},this.svgRoot);this.svgPath=Blockly.utils.dom.createSvgElement(Blockly.utils.Svg.PATH,{"class":"blocklyPath"},this.svgRoot);this.svgPathLight=Blockly.utils.dom.createSvgElement(Blockly.utils.Svg.PATH,{"class":"blocklyPathLight"},this.svgRoot);this.colourDark="#000000";this.style=b}; +Blockly.utils.object.inherits(Blockly.geras.PathObject,Blockly.blockRendering.PathObject);Blockly.geras.PathObject.prototype.setPath=function(a){this.svgPath.setAttribute("d",a);this.svgPathDark.setAttribute("d",a)};Blockly.geras.PathObject.prototype.setHighlightPath=function(a){this.svgPathLight.setAttribute("d",a)}; +Blockly.geras.PathObject.prototype.flipRTL=function(){this.svgPath.setAttribute("transform","scale(-1 1)");this.svgPathLight.setAttribute("transform","scale(-1 1)");this.svgPathDark.setAttribute("transform","translate(1,1) scale(-1 1)")}; Blockly.geras.PathObject.prototype.applyColour=function(a){this.svgPathLight.style.display="";this.svgPathDark.style.display="";this.svgPathLight.setAttribute("stroke",this.style.colourTertiary);this.svgPathDark.setAttribute("fill",this.colourDark);Blockly.geras.PathObject.superClass_.applyColour.call(this,a);this.svgPath.setAttribute("stroke","none")}; Blockly.geras.PathObject.prototype.setStyle=function(a){this.style=a;this.colourDark=Blockly.utils.colour.blend("#000",this.style.colourPrimary,.2)||this.colourDark};Blockly.geras.PathObject.prototype.updateHighlighted=function(a){a?(this.svgPath.setAttribute("filter","url(#"+this.constants.embossFilterId+")"),this.svgPathLight.style.display="none"):(this.svgPath.setAttribute("filter","none"),this.svgPathLight.style.display="inline")}; Blockly.geras.PathObject.prototype.updateShadow_=function(a){a&&(this.svgPathLight.style.display="none",this.svgPathDark.setAttribute("fill",this.style.colourSecondary),this.svgPath.setAttribute("stroke","none"),this.svgPath.setAttribute("fill",this.style.colourSecondary))};Blockly.geras.PathObject.prototype.updateDisabled_=function(a){Blockly.geras.PathObject.superClass_.updateDisabled_.call(this,a);a&&this.svgPath.setAttribute("stroke","none")};Blockly.geras.Renderer=function(a){Blockly.geras.Renderer.superClass_.constructor.call(this,a);this.highlightConstants_=null};Blockly.utils.object.inherits(Blockly.geras.Renderer,Blockly.blockRendering.Renderer);Blockly.geras.Renderer.prototype.init=function(a,b){Blockly.geras.Renderer.superClass_.init.call(this,a,b);this.highlightConstants_=this.makeHighlightConstants_();this.highlightConstants_.init()}; @@ -1327,22 +1372,23 @@ Blockly.zelos.ConstantProvider.prototype.init=function(){Blockly.zelos.ConstantP Blockly.zelos.ConstantProvider.prototype.setDynamicProperties_=function(a){Blockly.zelos.ConstantProvider.superClass_.setDynamicProperties_.call(this,a);this.SELECTED_GLOW_COLOUR=a.getComponentStyle("selectedGlowColour")||this.SELECTED_GLOW_COLOUR;var b=Number(a.getComponentStyle("selectedGlowSize"));this.SELECTED_GLOW_SIZE=b&&!isNaN(b)?b:this.SELECTED_GLOW_SIZE;this.REPLACEMENT_GLOW_COLOUR=a.getComponentStyle("replacementGlowColour")||this.REPLACEMENT_GLOW_COLOUR;this.REPLACEMENT_GLOW_SIZE=(a=Number(a.getComponentStyle("replacementGlowSize")))&& !isNaN(a)?a:this.REPLACEMENT_GLOW_SIZE};Blockly.zelos.ConstantProvider.prototype.dispose=function(){Blockly.zelos.ConstantProvider.superClass_.dispose.call(this);this.selectedGlowFilter_&&Blockly.utils.dom.removeNode(this.selectedGlowFilter_);this.replacementGlowFilter_&&Blockly.utils.dom.removeNode(this.replacementGlowFilter_)}; Blockly.zelos.ConstantProvider.prototype.makeStartHat=function(){var a=this.START_HAT_HEIGHT,b=this.START_HAT_WIDTH,c=Blockly.utils.svgPaths.curve("c",[Blockly.utils.svgPaths.point(25,-a),Blockly.utils.svgPaths.point(71,-a),Blockly.utils.svgPaths.point(b,0)]);return{height:a,width:b,path:c}}; -Blockly.zelos.ConstantProvider.prototype.makeHexagonal=function(){function a(a,d,e){var c=a/2;c=c>b?b:c;e=e?-1:1;a=(d?-1:1)*a/2;return Blockly.utils.svgPaths.lineTo(-e*c,a)+Blockly.utils.svgPaths.lineTo(e*c,a)}var b=this.MAX_DYNAMIC_CONNECTION_SHAPE_WIDTH;return{type:this.SHAPES.HEXAGONAL,isDynamic:!0,width:function(a){a/=2;return a>b?b:a},height:function(a){return a},connectionOffsetY:function(a){return a/2},connectionOffsetX:function(a){return-a},pathDown:function(b){return a(b,!1,!1)},pathUp:function(b){return a(b, -!0,!1)},pathRightDown:function(b){return a(b,!1,!0)},pathRightUp:function(b){return a(b,!1,!0)}}}; -Blockly.zelos.ConstantProvider.prototype.makeRounded=function(){function a(a,b,f){var d=a>c?a-c:0;a=(a>c?c:a)/2;return Blockly.utils.svgPaths.arc("a","0 0,1",a,Blockly.utils.svgPaths.point((b?-1:1)*a,(b?-1:1)*a))+Blockly.utils.svgPaths.lineOnAxis("v",(f?1:-1)*d)+Blockly.utils.svgPaths.arc("a","0 0,1",a,Blockly.utils.svgPaths.point((b?1:-1)*a,(b?-1:1)*a))}var b=this.MAX_DYNAMIC_CONNECTION_SHAPE_WIDTH,c=2*b;return{type:this.SHAPES.ROUND,isDynamic:!0,width:function(a){a/=2;return a>b?b:a},height:function(a){return a}, -connectionOffsetY:function(a){return a/2},connectionOffsetX:function(a){return-a},pathDown:function(b){return a(b,!1,!1)},pathUp:function(b){return a(b,!0,!1)},pathRightDown:function(b){return a(b,!1,!0)},pathRightUp:function(b){return a(b,!1,!0)}}}; -Blockly.zelos.ConstantProvider.prototype.makeSquared=function(){function a(a,d,e){a-=2*b;return Blockly.utils.svgPaths.arc("a","0 0,1",b,Blockly.utils.svgPaths.point((d?-1:1)*b,(d?-1:1)*b))+Blockly.utils.svgPaths.lineOnAxis("v",(e?1:-1)*a)+Blockly.utils.svgPaths.arc("a","0 0,1",b,Blockly.utils.svgPaths.point((d?1:-1)*b,(d?-1:1)*b))}var b=this.CORNER_RADIUS;return{type:this.SHAPES.SQUARE,isDynamic:!0,width:function(a){return b},height:function(a){return a},connectionOffsetY:function(a){return a/2}, -connectionOffsetX:function(a){return-a},pathDown:function(b){return a(b,!1,!1)},pathUp:function(b){return a(b,!0,!1)},pathRightDown:function(b){return a(b,!1,!0)},pathRightUp:function(b){return a(b,!1,!0)}}}; +Blockly.zelos.ConstantProvider.prototype.makeHexagonal=function(){function a(c,d,e){var f=c/2;f=f>b?b:f;e=e?-1:1;c=(d?-1:1)*c/2;return Blockly.utils.svgPaths.lineTo(-e*f,c)+Blockly.utils.svgPaths.lineTo(e*f,c)}var b=this.MAX_DYNAMIC_CONNECTION_SHAPE_WIDTH;return{type:this.SHAPES.HEXAGONAL,isDynamic:!0,width:function(c){c/=2;return c>b?b:c},height:function(c){return c},connectionOffsetY:function(c){return c/2},connectionOffsetX:function(c){return-c},pathDown:function(c){return a(c,!1,!1)},pathUp:function(c){return a(c, +!0,!1)},pathRightDown:function(c){return a(c,!1,!0)},pathRightUp:function(c){return a(c,!1,!0)}}}; +Blockly.zelos.ConstantProvider.prototype.makeRounded=function(){function a(d,e,f){var g=d>c?d-c:0;d=(d>c?c:d)/2;return Blockly.utils.svgPaths.arc("a","0 0,1",d,Blockly.utils.svgPaths.point((e?-1:1)*d,(e?-1:1)*d))+Blockly.utils.svgPaths.lineOnAxis("v",(f?1:-1)*g)+Blockly.utils.svgPaths.arc("a","0 0,1",d,Blockly.utils.svgPaths.point((e?1:-1)*d,(e?-1:1)*d))}var b=this.MAX_DYNAMIC_CONNECTION_SHAPE_WIDTH,c=2*b;return{type:this.SHAPES.ROUND,isDynamic:!0,width:function(d){d/=2;return d>b?b:d},height:function(d){return d}, +connectionOffsetY:function(d){return d/2},connectionOffsetX:function(d){return-d},pathDown:function(d){return a(d,!1,!1)},pathUp:function(d){return a(d,!0,!1)},pathRightDown:function(d){return a(d,!1,!0)},pathRightUp:function(d){return a(d,!1,!0)}}}; +Blockly.zelos.ConstantProvider.prototype.makeSquared=function(){function a(c,d,e){c-=2*b;return Blockly.utils.svgPaths.arc("a","0 0,1",b,Blockly.utils.svgPaths.point((d?-1:1)*b,(d?-1:1)*b))+Blockly.utils.svgPaths.lineOnAxis("v",(e?1:-1)*c)+Blockly.utils.svgPaths.arc("a","0 0,1",b,Blockly.utils.svgPaths.point((d?1:-1)*b,(d?-1:1)*b))}var b=this.CORNER_RADIUS;return{type:this.SHAPES.SQUARE,isDynamic:!0,width:function(c){return b},height:function(c){return c},connectionOffsetY:function(c){return c/2}, +connectionOffsetX:function(c){return-c},pathDown:function(c){return a(c,!1,!1)},pathUp:function(c){return a(c,!0,!1)},pathRightDown:function(c){return a(c,!1,!0)},pathRightUp:function(c){return a(c,!1,!0)}}}; Blockly.zelos.ConstantProvider.prototype.shapeFor=function(a){var b=a.getCheck();!b&&a.targetConnection&&(b=a.targetConnection.getCheck());switch(a.type){case Blockly.INPUT_VALUE:case Blockly.OUTPUT_VALUE:a=a.getSourceBlock().getOutputShape();if(null!=a)switch(a){case this.SHAPES.HEXAGONAL:return this.HEXAGONAL;case this.SHAPES.ROUND:return this.ROUNDED;case this.SHAPES.SQUARE:return this.SQUARED}if(b&&-1!=b.indexOf("Boolean"))return this.HEXAGONAL;if(b&&-1!=b.indexOf("Number"))return this.ROUNDED; b&&b.indexOf("String");return this.ROUNDED;case Blockly.PREVIOUS_STATEMENT:case Blockly.NEXT_STATEMENT:return this.NOTCH;default:throw Error("Unknown type");}}; -Blockly.zelos.ConstantProvider.prototype.makeNotch=function(){function a(a){return Blockly.utils.svgPaths.curve("c",[Blockly.utils.svgPaths.point(a*e/2,0),Blockly.utils.svgPaths.point(a*e*3/4,g/2),Blockly.utils.svgPaths.point(a*e,g)])+Blockly.utils.svgPaths.line([Blockly.utils.svgPaths.point(a*e,f)])+Blockly.utils.svgPaths.curve("c",[Blockly.utils.svgPaths.point(a*e/4,g/2),Blockly.utils.svgPaths.point(a*e/2,g),Blockly.utils.svgPaths.point(a*e,g)])+Blockly.utils.svgPaths.lineOnAxis("h",a*d)+Blockly.utils.svgPaths.curve("c", -[Blockly.utils.svgPaths.point(a*e/2,0),Blockly.utils.svgPaths.point(a*e*3/4,-(g/2)),Blockly.utils.svgPaths.point(a*e,-g)])+Blockly.utils.svgPaths.line([Blockly.utils.svgPaths.point(a*e,-f)])+Blockly.utils.svgPaths.curve("c",[Blockly.utils.svgPaths.point(a*e/4,-(g/2)),Blockly.utils.svgPaths.point(a*e/2,-g),Blockly.utils.svgPaths.point(a*e,-g)])}var b=this.NOTCH_WIDTH,c=this.NOTCH_HEIGHT,d=b/3,e=d/3,f=c/2,g=f/2,h=a(1),k=a(-1);return{type:this.SHAPES.NOTCH,width:b,height:c,pathLeft:h,pathRight:k}}; +Blockly.zelos.ConstantProvider.prototype.makeNotch=function(){function a(l){return Blockly.utils.svgPaths.curve("c",[Blockly.utils.svgPaths.point(l*e/2,0),Blockly.utils.svgPaths.point(l*e*3/4,g/2),Blockly.utils.svgPaths.point(l*e,g)])+Blockly.utils.svgPaths.line([Blockly.utils.svgPaths.point(l*e,f)])+Blockly.utils.svgPaths.curve("c",[Blockly.utils.svgPaths.point(l*e/4,g/2),Blockly.utils.svgPaths.point(l*e/2,g),Blockly.utils.svgPaths.point(l*e,g)])+Blockly.utils.svgPaths.lineOnAxis("h",l*d)+Blockly.utils.svgPaths.curve("c", +[Blockly.utils.svgPaths.point(l*e/2,0),Blockly.utils.svgPaths.point(l*e*3/4,-(g/2)),Blockly.utils.svgPaths.point(l*e,-g)])+Blockly.utils.svgPaths.line([Blockly.utils.svgPaths.point(l*e,-f)])+Blockly.utils.svgPaths.curve("c",[Blockly.utils.svgPaths.point(l*e/4,-(g/2)),Blockly.utils.svgPaths.point(l*e/2,-g),Blockly.utils.svgPaths.point(l*e,-g)])}var b=this.NOTCH_WIDTH,c=this.NOTCH_HEIGHT,d=b/3,e=d/3,f=c/2,g=f/2,h=a(1),k=a(-1);return{type:this.SHAPES.NOTCH,width:b,height:c,pathLeft:h,pathRight:k}}; Blockly.zelos.ConstantProvider.prototype.makeInsideCorners=function(){var a=this.CORNER_RADIUS,b=Blockly.utils.svgPaths.arc("a","0 0,0",a,Blockly.utils.svgPaths.point(-a,a)),c=Blockly.utils.svgPaths.arc("a","0 0,1",a,Blockly.utils.svgPaths.point(-a,a)),d=Blockly.utils.svgPaths.arc("a","0 0,0",a,Blockly.utils.svgPaths.point(a,a)),e=Blockly.utils.svgPaths.arc("a","0 0,1",a,Blockly.utils.svgPaths.point(a,a));return{width:a,height:a,pathTop:b,pathBottom:d,rightWidth:a,rightHeight:a,pathTopRight:c,pathBottomRight:e}}; Blockly.zelos.ConstantProvider.prototype.generateSecondaryColour_=function(a){return Blockly.utils.colour.blend("#000",a,.15)||a};Blockly.zelos.ConstantProvider.prototype.generateTertiaryColour_=function(a){return Blockly.utils.colour.blend("#000",a,.25)||a}; -Blockly.zelos.ConstantProvider.prototype.createDom=function(a,b,c){Blockly.zelos.ConstantProvider.superClass_.createDom.call(this,a,b,c);a=Blockly.utils.dom.createSvgElement("defs",{},a);b=Blockly.utils.dom.createSvgElement("filter",{id:"blocklySelectedGlowFilter"+this.randomIdentifier,height:"160%",width:"180%",y:"-30%",x:"-40%"},a);Blockly.utils.dom.createSvgElement("feGaussianBlur",{"in":"SourceGraphic",stdDeviation:this.SELECTED_GLOW_SIZE},b);c=Blockly.utils.dom.createSvgElement("feComponentTransfer", -{result:"outBlur"},b);Blockly.utils.dom.createSvgElement("feFuncA",{type:"table",tableValues:"0 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1"},c);Blockly.utils.dom.createSvgElement("feFlood",{"flood-color":this.SELECTED_GLOW_COLOUR,"flood-opacity":1,result:"outColor"},b);Blockly.utils.dom.createSvgElement("feComposite",{"in":"outColor",in2:"outBlur",operator:"in",result:"outGlow"},b);this.selectedGlowFilterId=b.id;this.selectedGlowFilter_=b;a=Blockly.utils.dom.createSvgElement("filter",{id:"blocklyReplacementGlowFilter"+ -this.randomIdentifier,height:"160%",width:"180%",y:"-30%",x:"-40%"},a);Blockly.utils.dom.createSvgElement("feGaussianBlur",{"in":"SourceGraphic",stdDeviation:this.REPLACEMENT_GLOW_SIZE},a);b=Blockly.utils.dom.createSvgElement("feComponentTransfer",{result:"outBlur"},a);Blockly.utils.dom.createSvgElement("feFuncA",{type:"table",tableValues:"0 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1"},b);Blockly.utils.dom.createSvgElement("feFlood",{"flood-color":this.REPLACEMENT_GLOW_COLOUR,"flood-opacity":1,result:"outColor"}, -a);Blockly.utils.dom.createSvgElement("feComposite",{"in":"outColor",in2:"outBlur",operator:"in",result:"outGlow"},a);Blockly.utils.dom.createSvgElement("feComposite",{"in":"SourceGraphic",in2:"outGlow",operator:"over"},a);this.replacementGlowFilterId=a.id;this.replacementGlowFilter_=a}; +Blockly.zelos.ConstantProvider.prototype.createDom=function(a,b,c){Blockly.zelos.ConstantProvider.superClass_.createDom.call(this,a,b,c);a=Blockly.utils.dom.createSvgElement(Blockly.utils.Svg.DEFS,{},a);b=Blockly.utils.dom.createSvgElement(Blockly.utils.Svg.FILTER,{id:"blocklySelectedGlowFilter"+this.randomIdentifier,height:"160%",width:"180%",y:"-30%",x:"-40%"},a);Blockly.utils.dom.createSvgElement(Blockly.utils.Svg.FEGAUSSIANBLUR,{"in":"SourceGraphic",stdDeviation:this.SELECTED_GLOW_SIZE},b);c= +Blockly.utils.dom.createSvgElement(Blockly.utils.Svg.FECOMPONENTTRANSFER,{result:"outBlur"},b);Blockly.utils.dom.createSvgElement(Blockly.utils.Svg.FEFUNCA,{type:"table",tableValues:"0 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1"},c);Blockly.utils.dom.createSvgElement(Blockly.utils.Svg.FEFLOOD,{"flood-color":this.SELECTED_GLOW_COLOUR,"flood-opacity":1,result:"outColor"},b);Blockly.utils.dom.createSvgElement(Blockly.utils.Svg.FECOMPOSITE,{"in":"outColor",in2:"outBlur",operator:"in",result:"outGlow"},b);this.selectedGlowFilterId= +b.id;this.selectedGlowFilter_=b;a=Blockly.utils.dom.createSvgElement(Blockly.utils.Svg.FILTER,{id:"blocklyReplacementGlowFilter"+this.randomIdentifier,height:"160%",width:"180%",y:"-30%",x:"-40%"},a);Blockly.utils.dom.createSvgElement(Blockly.utils.Svg.FEGAUSSIANBLUR,{"in":"SourceGraphic",stdDeviation:this.REPLACEMENT_GLOW_SIZE},a);b=Blockly.utils.dom.createSvgElement(Blockly.utils.Svg.FECOMPONENTTRANSFER,{result:"outBlur"},a);Blockly.utils.dom.createSvgElement(Blockly.utils.Svg.FEFUNCA,{type:"table", +tableValues:"0 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1"},b);Blockly.utils.dom.createSvgElement(Blockly.utils.Svg.FEFLOOD,{"flood-color":this.REPLACEMENT_GLOW_COLOUR,"flood-opacity":1,result:"outColor"},a);Blockly.utils.dom.createSvgElement(Blockly.utils.Svg.FECOMPOSITE,{"in":"outColor",in2:"outBlur",operator:"in",result:"outGlow"},a);Blockly.utils.dom.createSvgElement(Blockly.utils.Svg.FECOMPOSITE,{"in":"SourceGraphic",in2:"outGlow",operator:"over"},a);this.replacementGlowFilterId=a.id;this.replacementGlowFilter_= +a}; Blockly.zelos.ConstantProvider.prototype.getCSS_=function(a){return[a+" .blocklyText,",a+" .blocklyFlyoutLabelText {","font: "+this.FIELD_TEXT_FONTWEIGHT+" "+this.FIELD_TEXT_FONTSIZE+"pt "+this.FIELD_TEXT_FONTFAMILY+";","}",a+" .blocklyText {","fill: #fff;","}",a+" .blocklyNonEditableText>rect:not(.blocklyDropdownRect),",a+" .blocklyEditableText>rect:not(.blocklyDropdownRect) {","fill: "+this.FIELD_BORDER_RECT_COLOUR+";","}",a+" .blocklyNonEditableText>text,",a+" .blocklyEditableText>text,",a+" .blocklyNonEditableText>g>text,", a+" .blocklyEditableText>g>text {","fill: #575E75;","}",a+" .blocklyFlyoutLabelText {","fill: #575E75;","}",a+" .blocklyText.blocklyBubbleText {","fill: #575E75;","}",a+" .blocklyDraggable:not(.blocklyDisabled)"," .blocklyEditableText:not(.editing):hover>rect,",a+" .blocklyDraggable:not(.blocklyDisabled)"," .blocklyEditableText:not(.editing):hover>.blocklyPath {","stroke: #fff;","stroke-width: 2;","}",a+" .blocklyHtmlInput {","font-family: "+this.FIELD_TEXT_FONTFAMILY+";","font-weight: "+this.FIELD_TEXT_FONTWEIGHT+ ";","color: #575E75;","}",a+" .blocklyDropdownText {","fill: #fff !important;","}",a+".blocklyWidgetDiv .goog-menuitem,",a+".blocklyDropDownDiv .goog-menuitem {","font-family: "+this.FIELD_TEXT_FONTFAMILY+";","}",a+".blocklyDropDownDiv .goog-menuitem-content {","color: #fff;","}",a+" .blocklyHighlightedConnectionPath {","stroke: "+this.SELECTED_GLOW_COLOUR+";","}",a+" .blocklyDisabled > .blocklyOutlinePath {","fill: url(#blocklyDisabledPattern"+this.randomIdentifier+")","}",a+" .blocklyInsertionMarker>.blocklyPath {", @@ -1384,14 +1430,14 @@ Blockly.zelos.PathObject.prototype.flipRTL=function(){Blockly.zelos.PathObject.s Blockly.zelos.PathObject.prototype.updateSelected=function(a){this.setClass_("blocklySelected",a);a?this.svgPathSelected_||(this.svgPathSelected_=this.svgPath.cloneNode(!0),this.svgPathSelected_.setAttribute("fill","none"),this.svgPathSelected_.setAttribute("filter","url(#"+this.constants.selectedGlowFilterId+")"),this.svgRoot.appendChild(this.svgPathSelected_)):this.svgPathSelected_&&(this.svgRoot.removeChild(this.svgPathSelected_),this.svgPathSelected_=null)}; Blockly.zelos.PathObject.prototype.updateReplacementFade=function(a){this.setClass_("blocklyReplaceable",a);a?this.svgPath.setAttribute("filter","url(#"+this.constants.replacementGlowFilterId+")"):this.svgPath.removeAttribute("filter")};Blockly.zelos.PathObject.prototype.updateShapeForInputHighlight=function(a,b){a=a.getParentInput().name;(a=this.getOutlinePath_(a))&&(b?a.setAttribute("filter","url(#"+this.constants.replacementGlowFilterId+")"):a.removeAttribute("filter"))}; Blockly.zelos.PathObject.prototype.beginDrawing=function(){this.remainingOutlines_={};for(var a=0,b=Object.keys(this.outlines_),c;c=b[a];a++)this.remainingOutlines_[c]=1};Blockly.zelos.PathObject.prototype.endDrawing=function(){if(this.remainingOutlines_)for(var a=0,b=Object.keys(this.remainingOutlines_),c;c=b[a];a++)this.removeOutlinePath_(c);this.remainingOutlines_=null}; -Blockly.zelos.PathObject.prototype.setOutlinePath=function(a,b){a=this.getOutlinePath_(a);a.setAttribute("d",b);a.setAttribute("fill",this.style.colourTertiary)};Blockly.zelos.PathObject.prototype.getOutlinePath_=function(a){this.outlines_[a]||(this.outlines_[a]=Blockly.utils.dom.createSvgElement("path",{"class":"blocklyOutlinePath",d:""},this.svgRoot));this.remainingOutlines_&&delete this.remainingOutlines_[a];return this.outlines_[a]}; +Blockly.zelos.PathObject.prototype.setOutlinePath=function(a,b){a=this.getOutlinePath_(a);a.setAttribute("d",b);a.setAttribute("fill",this.style.colourTertiary)};Blockly.zelos.PathObject.prototype.getOutlinePath_=function(a){this.outlines_[a]||(this.outlines_[a]=Blockly.utils.dom.createSvgElement(Blockly.utils.Svg.PATH,{"class":"blocklyOutlinePath",d:""},this.svgRoot));this.remainingOutlines_&&delete this.remainingOutlines_[a];return this.outlines_[a]}; Blockly.zelos.PathObject.prototype.removeOutlinePath_=function(a){this.outlines_[a].parentNode.removeChild(this.outlines_[a]);delete this.outlines_[a]};Blockly.zelos.MarkerSvg=function(a,b,c){Blockly.zelos.MarkerSvg.superClass_.constructor.call(this,a,b,c)};Blockly.utils.object.inherits(Blockly.zelos.MarkerSvg,Blockly.blockRendering.MarkerSvg);Blockly.zelos.MarkerSvg.prototype.showWithInputOutput_=function(a){var b=a.getSourceBlock();a=a.getLocation().getOffsetInBlock();this.positionCircle_(a.x,a.y);this.setParent_(b);this.showCurrent_()};Blockly.zelos.MarkerSvg.prototype.showWithOutput_=function(a){this.showWithInputOutput_(a)}; Blockly.zelos.MarkerSvg.prototype.showWithInput_=function(a){this.showWithInputOutput_(a)};Blockly.zelos.MarkerSvg.prototype.showWithBlock_=function(a){a=a.getLocation();var b=a.getHeightWidth();this.positionRect_(0,0,b.width,b.height);this.setParent_(a);this.showCurrent_()};Blockly.zelos.MarkerSvg.prototype.positionCircle_=function(a,b){this.markerCircle_.setAttribute("cx",a);this.markerCircle_.setAttribute("cy",b);this.currentMarkerSvg=this.markerCircle_}; Blockly.zelos.MarkerSvg.prototype.hide=function(){Blockly.zelos.MarkerSvg.superClass_.hide.call(this);this.markerCircle_.style.display="none"}; -Blockly.zelos.MarkerSvg.prototype.createDomInternal_=function(){Blockly.zelos.MarkerSvg.superClass_.createDomInternal_.call(this);this.markerCircle_=Blockly.utils.dom.createSvgElement("circle",{r:this.constants_.CURSOR_RADIUS,style:"display: none","stroke-width":this.constants_.CURSOR_STROKE_WIDTH},this.markerSvg_);if(this.isCursor()){var a=this.getBlinkProperties_();Blockly.utils.dom.createSvgElement("animate",a,this.markerCircle_)}return this.markerSvg_}; +Blockly.zelos.MarkerSvg.prototype.createDomInternal_=function(){Blockly.zelos.MarkerSvg.superClass_.createDomInternal_.call(this);this.markerCircle_=Blockly.utils.dom.createSvgElement(Blockly.utils.Svg.CIRCLE,{r:this.constants_.CURSOR_RADIUS,style:"display: none","stroke-width":this.constants_.CURSOR_STROKE_WIDTH},this.markerSvg_);if(this.isCursor()){var a=this.getBlinkProperties_();Blockly.utils.dom.createSvgElement(Blockly.utils.Svg.ANIMATE,a,this.markerCircle_)}return this.markerSvg_}; Blockly.zelos.MarkerSvg.prototype.applyColour_=function(a){Blockly.zelos.MarkerSvg.superClass_.applyColour_.call(this,a);this.markerCircle_.setAttribute("fill",this.colour_);this.markerCircle_.setAttribute("stroke",this.colour_);this.isCursor()&&this.markerCircle_.firstChild.setAttribute("values",this.colour_+";transparent;transparent;")};Blockly.zelos.Renderer=function(a){Blockly.zelos.Renderer.superClass_.constructor.call(this,a)};Blockly.utils.object.inherits(Blockly.zelos.Renderer,Blockly.blockRendering.Renderer);Blockly.zelos.Renderer.prototype.makeConstants_=function(){return new Blockly.zelos.ConstantProvider};Blockly.zelos.Renderer.prototype.makeRenderInfo_=function(a){return new Blockly.zelos.RenderInfo(this,a)};Blockly.zelos.Renderer.prototype.makeDrawer_=function(a,b){return new Blockly.zelos.Drawer(a,b)}; Blockly.zelos.Renderer.prototype.makeMarkerDrawer=function(a,b){return new Blockly.zelos.MarkerSvg(a,this.getConstants(),b)};Blockly.zelos.Renderer.prototype.makePathObject=function(a,b){return new Blockly.zelos.PathObject(a,b,this.getConstants())};Blockly.zelos.Renderer.prototype.shouldHighlightConnection=function(a){return a.type!=Blockly.INPUT_VALUE&&a.type!==Blockly.OUTPUT_VALUE}; -Blockly.zelos.Renderer.prototype.getConnectionPreviewMethod=function(a,b,c){return b.type==Blockly.OUTPUT_VALUE?a.isConnected()?Blockly.InsertionMarkerManager.PREVIEW_TYPE.REPLACEMENT_FADE:Blockly.InsertionMarkerManager.PREVIEW_TYPE.INPUT_OUTLINE:Blockly.zelos.Renderer.superClass_.getConnectionPreviewMethod(a,b,c)};Blockly.blockRendering.register("zelos",Blockly.zelos.Renderer);Blockly.Themes.Dark=Blockly.Theme.defineTheme("dark",{base:Blockly.Themes.Classic,componentStyles:{workspaceBackgroundColour:"#1e1e1e",toolboxBackgroundColour:"#333",toolboxForegroundColour:"#fff",flyoutBackgroundColour:"#252526",flyoutForegroundColour:"#ccc",flyoutOpacity:1,scrollbarColour:"#797979",insertionMarkerColour:"#fff",insertionMarkerOpacity:.3,scrollbarOpacity:.4,cursorColour:"#d0d0d0"}});Blockly.Themes.Deuteranopia={}; +Blockly.zelos.Renderer.prototype.getConnectionPreviewMethod=function(a,b,c){return b.type==Blockly.OUTPUT_VALUE?a.isConnected()?Blockly.InsertionMarkerManager.PREVIEW_TYPE.REPLACEMENT_FADE:Blockly.InsertionMarkerManager.PREVIEW_TYPE.INPUT_OUTLINE:Blockly.zelos.Renderer.superClass_.getConnectionPreviewMethod(a,b,c)};Blockly.blockRendering.register("zelos",Blockly.zelos.Renderer);Blockly.Themes.Dark=Blockly.Theme.defineTheme("dark",{base:Blockly.Themes.Classic,componentStyles:{workspaceBackgroundColour:"#1e1e1e",toolboxBackgroundColour:"blackBackground",toolboxForegroundColour:"#fff",flyoutBackgroundColour:"#252526",flyoutForegroundColour:"#ccc",flyoutOpacity:1,scrollbarColour:"#797979",insertionMarkerColour:"#fff",insertionMarkerOpacity:.3,scrollbarOpacity:.4,cursorColour:"#d0d0d0",blackBackground:"#333"}});Blockly.Themes.Deuteranopia={}; Blockly.Themes.Deuteranopia.defaultBlockStyles={colour_blocks:{colourPrimary:"#f2a72c",colourSecondary:"#f1c172",colourTertiary:"#da921c"},list_blocks:{colourPrimary:"#7d65ab",colourSecondary:"#a88be0",colourTertiary:"#66518e"},logic_blocks:{colourPrimary:"#9fd2f1",colourSecondary:"#c0e0f4",colourTertiary:"#74bae5"},loop_blocks:{colourPrimary:"#795a07",colourSecondary:"#ac8726",colourTertiary:"#c4a03f"},math_blocks:{colourPrimary:"#e6da39",colourSecondary:"#f3ec8e",colourTertiary:"#f2eeb7"},procedure_blocks:{colourPrimary:"#590721", colourSecondary:"#8c475d",colourTertiary:"#885464"},text_blocks:{colourPrimary:"#058863",colourSecondary:"#5ecfaf",colourTertiary:"#04684c"},variable_blocks:{colourPrimary:"#47025a",colourSecondary:"#820fa1",colourTertiary:"#8e579d"},variable_dynamic_blocks:{colourPrimary:"#47025a",colourSecondary:"#820fa1",colourTertiary:"#8e579d"}}; Blockly.Themes.Deuteranopia.categoryStyles={colour_category:{colour:"#f2a72c"},list_category:{colour:"#7d65ab"},logic_category:{colour:"#9fd2f1"},loop_category:{colour:"#795a07"},math_category:{colour:"#e6da39"},procedure_category:{colour:"#590721"},text_category:{colour:"#058863"},variable_category:{colour:"#47025a"},variable_dynamic_category:{colour:"#47025a"}};Blockly.Themes.Deuteranopia=new Blockly.Theme("deuteranopia",Blockly.Themes.Deuteranopia.defaultBlockStyles,Blockly.Themes.Deuteranopia.categoryStyles);Blockly.Themes.HighContrast={}; diff --git a/blockly_compressed.js.map b/blockly_compressed.js.map index 197c66ccc79..3955b742c57 100644 --- a/blockly_compressed.js.map +++ b/blockly_compressed.js.map @@ -1 +1 @@ -{"version":3,"sources":["core/constants.js","core/utils/global.js","core/msg.js","core/utils/colour.js","core/utils/coordinate.js","core/utils/rect.js","core/utils/string.js","core/utils/size.js","core/utils/style.js","core/utils/useragent.js","core/utils.js","core/events.js","core/events_abstract.js","core/utils/object.js","core/ui_events.js","core/utils/dom.js","core/block_drag_surface.js","core/utils/idgenerator.js","core/components/component.js","core/css.js","core/utils/math.js","core/dropdowndiv.js","core/grid.js","core/registry.js","core/theme.js","core/theme/classic.js","core/utils/keycodes.js","core/keyboard_nav/key_map.js","core/utils/metrics.js","core/utils/toolbox.js","core/utils/xml.js","core/block_events.js","core/workspace_events.js","core/variable_events.js","core/xml.js","core/options.js","core/touch.js","core/scrollbar.js","core/tooltip.js","core/workspace_drag_surface_svg.js","core/keyboard_nav/ast_node.js","core/blocks.js","core/connection.js","core/extensions.js","core/field_registry.js","core/block_animations.js","core/insertion_marker_manager.js","core/block_dragger.js","core/variable_map.js","core/workspace.js","core/bubble.js","core/ws_comment_events.js","core/bubble_dragger.js","core/workspace_dragger.js","core/flyout_dragger.js","core/keyboard_nav/action.js","core/keyboard_nav/navigation.js","core/gesture.js","core/field.js","core/field_label.js","core/input.js","core/block.js","core/renderers/common/i_path_object.js","core/utils/aria.js","core/menu.js","core/menuitem.js","core/contextmenu.js","core/rendered_connection.js","core/keyboard_nav/marker.js","core/keyboard_nav/cursor.js","core/keyboard_nav/basic_cursor.js","core/keyboard_nav/tab_navigate_cursor.js","core/block_svg.js","core/renderers/common/block_rendering.js","core/connection_db.js","core/marker_manager.js","core/theme_manager.js","core/touch_gesture.js","core/workspace_audio.js","core/workspace_svg.js","core/inject.js","core/names.js","core/procedures.js","core/variable_model.js","core/variables.js","core/widgetdiv.js","core/blockly.js","core/icon.js","core/warning.js","core/comment.js","core/keyboard_nav/flyout_cursor.js","core/flyout_base.js","core/flyout_horizontal.js","core/flyout_vertical.js","core/flyout_button.js","core/generator.js","core/components/tree/basenode.js","core/components/tree/treenode.js","core/components/tree/treecontrol.js","core/toolbox.js","core/trashcan.js","core/variables_dynamic.js","core/zoom_controls.js","core/mutator.js","core/field_textinput.js","core/field_angle.js","core/field_checkbox.js","core/field_colour.js","core/field_dropdown.js","core/field_label_serializable.js","core/field_image.js","core/field_multilineinput.js","core/field_number.js","core/field_variable.js","core/utils/svg_paths.js","core/renderers/common/constants.js","core/renderers/common/marker_svg.js","core/renderers/measurables/types.js","core/renderers/measurables/base.js","core/renderers/measurables/connections.js","core/renderers/measurables/inputs.js","core/renderers/measurables/row_elements.js","core/renderers/measurables/rows.js","core/renderers/common/info.js","core/renderers/common/drawer.js","core/renderers/common/path_object.js","core/renderers/common/renderer.js","core/renderers/geras/constants.js","core/renderers/geras/highlighter.js","core/renderers/geras/measurables/inputs.js","core/renderers/geras/info.js","core/renderers/geras/drawer.js","core/renderers/geras/highlight_constants.js","core/renderers/geras/path_object.js","core/renderers/geras/renderer.js","core/renderers/thrasos/info.js","core/renderers/thrasos/renderer.js","core/renderers/zelos/constants.js","core/renderers/zelos/measurables/rows.js","core/renderers/zelos/measurables/row_elements.js","core/renderers/zelos/measurables/inputs.js","core/renderers/zelos/info.js","core/renderers/zelos/drawer.js","core/renderers/zelos/path_object.js","core/renderers/zelos/marker_svg.js","core/renderers/zelos/renderer.js","core/theme/dark.js","core/theme/deuteranopia.js","core/theme/highcontrast.js","core/theme/tritanopia.js","core/requires.js"],"names":["Blockly","CONNECTING_SNAP_RADIUS","SNAP_RADIUS","CURRENT_CONNECTION_PREFERENCE","BUMP_DELAY","BUMP_RANDOMNESS","COLLAPSE_CHARS","LONGPRESS","SOUND_LIMIT","DRAG_STACK","HSV_SATURATION","HSV_VALUE","SPRITE","width","height","url","INPUT_VALUE","OUTPUT_VALUE","NEXT_STATEMENT","PREVIOUS_STATEMENT","DUMMY_INPUT","ALIGN_LEFT","ALIGN_CENTRE","ALIGN_RIGHT","DRAG_NONE","DRAG_STICKY","DRAG_BEGIN","DRAG_FREE","OPPOSITE_TYPE","TOOLBOX_AT_TOP","TOOLBOX_AT_BOTTOM","TOOLBOX_AT_LEFT","TOOLBOX_AT_RIGHT","DELETE_AREA_NONE","DELETE_AREA_TRASH","DELETE_AREA_TOOLBOX","VARIABLE_CATEGORY_NAME","VARIABLE_DYNAMIC_CATEGORY_NAME","PROCEDURE_CATEGORY_NAME","RENAME_VARIABLE_ID","DELETE_VARIABLE_ID","Blockly.utils","utils","global","self","window","Blockly.Msg","Msg","Blockly.utils.colour","colour","parse","Blockly.utils.colour.parse","str","String","toLowerCase","trim","hex","names","substring","test","join","rgb","match","r","Number","g","b","rgbToHex","Blockly.utils.colour.rgbToHex","toString","substr","hexToRgb","Blockly.utils.colour.hexToRgb","parseInt","hsvToHex","Blockly.utils.colour.hsvToHex","h","s","v","red","green","blue","sextant","Math","floor","remainder","val1","val2","val3","blend","Blockly.utils.colour.blend","colour1","colour2","factor","hex1","hex2","rgb1","rgb2","round","Coordinate","Blockly.utils.Coordinate","x","y","equals","Blockly.utils.Coordinate.equals","a","distance","Blockly.utils.Coordinate.distance","dx","dy","sqrt","magnitude","Blockly.utils.Coordinate.magnitude","difference","Blockly.utils.Coordinate.difference","sum","Blockly.utils.Coordinate.sum","prototype","scale","Blockly.utils.Coordinate.prototype.scale","translate","Blockly.utils.Coordinate.prototype.translate","tx","ty","Rect","Blockly.utils.Rect","top","bottom","left","right","contains","Blockly.utils.Rect.prototype.contains","Blockly.utils.string","string","startsWith","Blockly.utils.string.startsWith","prefix","lastIndexOf","shortestStringLength","Blockly.utils.string.shortestStringLength","array","length","reduce","commonWordPrefix","Blockly.utils.string.commonWordPrefix","opt_shortest","wordPrefix","max","len","letter","i","commonWordSuffix","Blockly.utils.string.commonWordSuffix","charAt","wrap","Blockly.utils.string.wrap","text","limit","lines","split","wrapLine_","Blockly.utils.string.wrapLine_","words","score","Infinity","lineCount","lastScore","lastText","wordBreaks","steps","insertedBreaks","wrapMutate_","wrapScore_","wrapToText_","Blockly.utils.string.wrapScore_","lineLengths","linePunctuation","push","maxLength","apply","pow","abs","indexOf","Blockly.utils.string.wrapMutate_","bestScore","bestBreaks","mutatedWordBreaks","concat","mutatedScore","Blockly.utils.string.wrapToText_","undefined","Size","Blockly.utils.Size","Blockly.utils.Size.equals","Blockly.utils.style","style","getSize","Blockly.utils.style.getSize","element","getStyle_","getSizeWithDisplay_","originalDisplay","display","originalVisibility","visibility","originalPosition","position","offsetWidth","offsetHeight","Blockly.utils.style.getSizeWithDisplay_","Blockly.utils.style.getStyle_","getComputedStyle","getCascadedStyle","Blockly.utils.style.getComputedStyle","property","document","defaultView","styles","getPropertyValue","Blockly.utils.style.getCascadedStyle","currentStyle","getPageOffset","Blockly.utils.style.getPageOffset","el","pos","box","getBoundingClientRect","documentElement","scrollCoord","pageXOffset","scrollLeft","pageYOffset","scrollTop","getViewportPageOffset","Blockly.utils.style.getViewportPageOffset","body","setElementShown","Blockly.utils.style.setElementShown","isShown","isRightToLeft","Blockly.utils.style.isRightToLeft","getBorderBox","Blockly.utils.style.getBorderBox","parseFloat","scrollIntoContainerView","Blockly.utils.style.scrollIntoContainerView","container","opt_center","offset","getContainerOffsetToScrollInto","Blockly.utils.style.getContainerOffsetToScrollInto","elementPos","containerPos","containerBorder","relX","relY","elementSize","spaceX","clientWidth","spaceY","clientHeight","min","Blockly.utils.userAgent","raw","has","name","rawUpper","toUpperCase","userAgent","IE","EDGE","JAVA_FX","CHROME","WEBKIT","GECKO","ANDROID","IPAD","IPOD","IPHONE","MAC","TABLET","MOBILE","navigator","noEvent","Blockly.utils.noEvent","e","preventDefault","stopPropagation","isTargetInput","Blockly.utils.isTargetInput","target","type","isContentEditable","getRelativeXY","Blockly.utils.getRelativeXY","xy","getAttribute","transform","XY_REGEX_","styleComponents","XY_STYLE_REGEX_","getInjectionDivXY_","Blockly.utils.getInjectionDivXY_","parentNode","isRightButton","Blockly.utils.isRightButton","ctrlKey","button","mouseToSvg","Blockly.utils.mouseToSvg","svg","matrix","svgPoint","createSVGPoint","clientX","clientY","getScreenCTM","inverse","matrixTransform","getScrollDeltaPixels","Blockly.utils.getScrollDeltaPixels","deltaMode","deltaX","deltaY","LINE_MODE_MULTIPLIER","PAGE_MODE_MULTIPLIER","tokenizeInterpolation","Blockly.utils.tokenizeInterpolation","message","tokenizeInterpolation_","replaceMessageReferences","Blockly.utils.replaceMessageReferences","interpolatedResult","checkMessageReferences","Blockly.utils.checkMessageReferences","validSoFar","msgTable","m","msgKey","slice","console","log","Blockly.utils.tokenizeInterpolation_","parseInterpolationTokens","tokens","chars","state","buffer","number","c","splice","rawKey","keyUpper","bklyKey","rawValue","Array","mergedTokens","genUid","Blockly.utils.genUid","soupLength","soup_","id","random","is3dSupported","Blockly.utils.is3dSupported","cached_","createElement","has3d","transforms","insertBefore","t","computedStyle","removeChild","runAfterPageLoad","Blockly.utils.runAfterPageLoad","fn","Error","readyState","readyStateCheckInterval","setInterval","clearInterval","getViewportBBox","Blockly.utils.getViewportBBox","scrollOffset","arrayRemove","Blockly.utils.arrayRemove","arr","obj","getDocumentScroll","Blockly.utils.getDocumentScroll","win","getBlockTypeCounts","Blockly.utils.getBlockTypeCounts","block","opt_stripFollowing","typeCountsMap","Object","create","descendants","getDescendants","nextBlock","getNextBlock","index","checkBlock","screenToWsCoordinates","Blockly.utils.screenToWsCoordinates","ws","screenCoordinates","screenX","screenY","boundingRect","getInjectionDiv","injectionDiv","clientOffsetPixels","mainOffsetPixels","getOriginOffsetInPixels","finalOffsetPixels","finalOffsetMainWs","parseBlockColour","Blockly.utils.parseBlockColour","dereferenced","hue","isNaN","errorMsg","Blockly.Events","Events","group_","recordUndo","disabled_","CREATE","BLOCK_CREATE","DELETE","BLOCK_DELETE","CHANGE","BLOCK_CHANGE","MOVE","BLOCK_MOVE","VAR_CREATE","VAR_DELETE","VAR_RENAME","UI","COMMENT_CREATE","COMMENT_DELETE","COMMENT_CHANGE","COMMENT_MOVE","FINISHED_LOADING","BUMP_EVENTS","FIRE_QUEUE_","fire","Blockly.Events.fire","event","isEnabled","setTimeout","fireNow_","Blockly.Events.fireNow_","queue","filter","workspaceId","workspace","Workspace","getById","fireChangeListener","Blockly.Events.filter","queueIn","forward","reverse","mergedQueue","hash","isNull","key","blockId","lastEntry","lastEvent","newParentId","newInputName","newCoordinate","newValue","unshift","clearPendingUndo","Blockly.Events.clearPendingUndo","disable","Blockly.Events.disable","enable","Blockly.Events.enable","Blockly.Events.isEnabled","getGroup","Blockly.Events.getGroup","setGroup","Blockly.Events.setGroup","getDescendantIds","Blockly.Events.getDescendantIds","ids","descendant","fromJson","Blockly.Events.fromJson","json","Create","Delete","Change","Move","VarCreate","VarDelete","VarRename","Ui","CommentCreate","CommentChange","CommentMove","CommentDelete","FinishedLoading","disableOrphans","Blockly.Events.disableOrphans","getBlockById","parent","getParent","children","child","setEnabled","outputConnection","previousConnection","isDragging","Abstract","Blockly.Events.Abstract","group","toJson","Blockly.Events.Abstract.prototype.toJson","Blockly.Events.Abstract.prototype.fromJson","Blockly.Events.Abstract.prototype.isNull","run","Blockly.Events.Abstract.prototype.run","_forward","getEventWorkspace_","Blockly.Events.Abstract.prototype.getEventWorkspace_","Blockly.utils.object","object","inherits","Blockly.utils.object.inherits","childCtor","parentCtor","superClass_","constructor","mixin","Blockly.utils.object.mixin","source","deepMerge","Blockly.utils.object.deepMerge","values","Blockly.utils.object.values","keys","map","Blockly.Events.Ui","oldValue","call","Blockly.Events.Ui.prototype.toJson","Blockly.Events.Ui.prototype.fromJson","Blockly.utils.dom","dom","SVG_NS","HTML_NS","XLINK_NS","NodeType","ELEMENT_NODE","TEXT_NODE","COMMENT_NODE","DOCUMENT_POSITION_CONTAINED_BY","cacheWidths_","cacheReference_","canvasContext_","createSvgElement","Blockly.utils.dom.createSvgElement","attrs","opt_parent","createElementNS","setAttribute","runtimeStyle","appendChild","addClass","Blockly.utils.dom.addClass","className","classes","removeClass","Blockly.utils.dom.removeClass","classList","removeAttribute","hasClass","Blockly.utils.dom.hasClass","removeNode","Blockly.utils.dom.removeNode","node","insertAfter","Blockly.utils.dom.insertAfter","newNode","refNode","siblingNode","nextSibling","containsNode","Blockly.utils.dom.containsNode","compareDocumentPosition","setCssTransform","Blockly.utils.dom.setCssTransform","startTextWidthCache","Blockly.utils.dom.startTextWidthCache","stopTextWidthCache","Blockly.utils.dom.stopTextWidthCache","getTextWidth","Blockly.utils.dom.getTextWidth","textElement","textContent","baseVal","getBBox","getComputedTextLength","getFastTextWidth","Blockly.utils.dom.getFastTextWidth","fontSize","fontWeight","fontFamily","getFastTextWidthWithSizeString","Blockly.utils.dom.getFastTextWidthWithSizeString","computeCanvas","getContext","font","measureText","measureFontMetrics","Blockly.utils.dom.measureFontMetrics","span","div","result","alignItems","baseline","offsetTop","BlockDragSurfaceSvg","Blockly.BlockDragSurfaceSvg","container_","createDom","SVG_","dragGroup_","scale_","surfaceXY_","Blockly.BlockDragSurfaceSvg.prototype.createDom","setBlocksAndShow","Blockly.BlockDragSurfaceSvg.prototype.setBlocksAndShow","blocks","childNodes","translateAndScaleGroup","Blockly.BlockDragSurfaceSvg.prototype.translateAndScaleGroup","fixedX","toFixed","fixedY","translateSurfaceInternal_","Blockly.BlockDragSurfaceSvg.prototype.translateSurfaceInternal_","translateSurface","Blockly.BlockDragSurfaceSvg.prototype.translateSurface","getSurfaceTranslation","Blockly.BlockDragSurfaceSvg.prototype.getSurfaceTranslation","Blockly.BlockDragSurfaceSvg.prototype.getGroup","getCurrentBlock","Blockly.BlockDragSurfaceSvg.prototype.getCurrentBlock","firstChild","clearAndHide","Blockly.BlockDragSurfaceSvg.prototype.clearAndHide","opt_newSurface","Blockly.utils.IdGenerator","IdGenerator","nextId_","getNextUniqueId","Blockly.utils.IdGenerator.getNextUniqueId","Component","Blockly.Component","rightToLeft_","defaultRightToLeft","id_","inDocument_","parent_","element_","children_","childIndex_","disposed_","ALREADY_RENDERED","PARENT_UNABLE_TO_BE_SET","CHILD_INDEX_OUT_OF_BOUNDS","ABSTRACT_METHOD","getId","Blockly.Component.prototype.getId","getElement","Blockly.Component.prototype.getElement","setElementInternal","Blockly.Component.prototype.setElementInternal","setParent","Blockly.Component.prototype.setParent","getChild","Blockly.Component.prototype.getParent","isInDocument","Blockly.Component.prototype.isInDocument","Blockly.Component.prototype.createDom","render","Blockly.Component.prototype.render","opt_parentElement","render_","Blockly.Component.prototype.render_","opt_beforeNode","enterDocument","Blockly.Component.prototype.enterDocument","forEachChild","exitDocument","Blockly.Component.prototype.exitDocument","dispose","Blockly.Component.prototype.dispose","disposeInternal","Blockly.Component.prototype.disposeInternal","addChild","Blockly.Component.prototype.addChild","opt_render","addChildAt","getChildCount","Blockly.Component.prototype.addChildAt","contentElement","getContentElement","insertBeforeElement","sibling","getChildAt","nodeType","Blockly.Component.prototype.getContentElement","hasChildren","Blockly.Component.prototype.hasChildren","Blockly.Component.prototype.getChildCount","Blockly.Component.prototype.getChild","Blockly.Component.prototype.getChildAt","Blockly.Component.prototype.forEachChild","f","opt_obj","Blockly.Css","Css","injected_","register","Blockly.Css.register","cssArray","CONTENT","inject","Blockly.Css.inject","hasCss","pathToMedia","mediaPath","replace","cssNode","cssTextNode","createTextNode","head","setCursor","Blockly.Css.setCursor","_cursor","warn","Blockly.utils.math","math","toRadians","Blockly.utils.math.toRadians","angleDegrees","PI","toDegrees","Blockly.utils.math.toDegrees","angleRadians","clamp","Blockly.utils.math.clamp","lowerBound","upperBound","temp","DropDownDiv","Blockly.DropDownDiv","boundsElement_","owner_","positionToField_","ARROW_SIZE","BORDER_SIZE","ARROW_HORIZONTAL_PADDING","PADDING_Y","ANIMATION_TIME","animateOutTimer_","onHide_","rendererClassName_","themeClassName_","Blockly.DropDownDiv.createDom","DIV_","parentContainer","content","content_","arrow","arrow_","opacity","transition","addEventListener","setBoundsElement","Blockly.DropDownDiv.setBoundsElement","boundsElement","getContentDiv","Blockly.DropDownDiv.getContentDiv","clearContent","Blockly.DropDownDiv.clearContent","setColour","Blockly.DropDownDiv.setColour","backgroundColour","borderColour","backgroundColor","borderColor","showPositionedByBlock","Blockly.DropDownDiv.showPositionedByBlock","field","opt_onHide","opt_secondaryYOffset","showPositionedByRect_","getScaledBboxOfBlock_","showPositionedByField","Blockly.DropDownDiv.showPositionedByField","getScaledBboxOfField_","Blockly.DropDownDiv.getScaledBboxOfBlock_","blockSvg","getSvgRoot","bBox","scaledHeight","scaledWidth","Blockly.DropDownDiv.getScaledBboxOfField_","getScaledBBox","Blockly.DropDownDiv.showPositionedByRect_","primaryX","primaryY","secondaryY","sourceBlock","getSourceBlock","options","parentWorkspace","getParentSvg","show","RTL","Blockly.DropDownDiv.show","owner","rtl","secondaryX","direction","mainWorkspace","getMainWorkspace","getRenderer","getClassName","getTheme","positionInternal_","getBoundsInfo_","Blockly.DropDownDiv.getBoundsInfo_","boundPosition","boundSize","getPositionMetrics_","Blockly.DropDownDiv.getPositionMetrics_","boundsInfo","divSize","getPositionBelowMetrics_","getPositionAboveMetrics_","clientTop","getPositionTopOfPageMetrics_","Blockly.DropDownDiv.getPositionBelowMetrics_","xCoords","getPositionX","initialX","divX","initialY","finalX","finalY","arrowX","arrowY","arrowAtTop","arrowVisible","Blockly.DropDownDiv.getPositionAboveMetrics_","Blockly.DropDownDiv.getPositionTopOfPageMetrics_","sourceX","Blockly.DropDownDiv.getPositionX","boundsLeft","boundsRight","divWidth","horizPadding","relativeArrowX","isVisible","Blockly.DropDownDiv.isVisible","hideIfOwner","Blockly.DropDownDiv.hideIfOwner","opt_withoutAnimation","hideWithoutAnimation","hide","Blockly.DropDownDiv.hide","Blockly.DropDownDiv.hideWithoutAnimation","clearTimeout","markFocused","Blockly.DropDownDiv.positionInternal_","metrics","repositionForWindowResize","Blockly.DropDownDiv.repositionForWindowResize","Grid","Blockly.Grid","pattern","gridPattern_","spacing_","length_","line2_","line1_","snapToGrid_","Blockly.Grid.prototype.dispose","shouldSnap","Blockly.Grid.prototype.shouldSnap","getSpacing","Blockly.Grid.prototype.getSpacing","getPatternId","Blockly.Grid.prototype.getPatternId","update","Blockly.Grid.prototype.update","safeSpacing","half","start","end","setLineAttributes_","Blockly.Grid.prototype.setLineAttributes_","line","x1","x2","y1","y2","moveTo","Blockly.Grid.prototype.moveTo","Blockly.Grid.createDom","rnd","gridOptions","defs","gridPattern","Blockly.registry","registry","typeMap_","DEFAULT","Type","Blockly.registry.Type","name_","Blockly.registry.Type.prototype.toString","RENDERER","FIELD","TOOLBOX","THEME","Blockly.registry.register","registryItem","typeRegistry","validate_","Blockly.registry.validate_","unregister","Blockly.registry.unregister","getItem_","Blockly.registry.getItem_","getClass","Blockly.registry.getClass","getObject","Blockly.registry.getObject","getClassFromOptions","Blockly.registry.getClassFromOptions","plugin","plugins","typeName","Theme","Blockly.Theme","opt_blockStyles","opt_categoryStyles","opt_componentStyles","blockStyles","categoryStyles","componentStyles","fontStyle","startHats","Blockly.Theme.prototype.getClassName","setBlockStyle","Blockly.Theme.prototype.setBlockStyle","blockStyleName","blockStyle","setCategoryStyle","Blockly.Theme.prototype.setCategoryStyle","categoryStyleName","categoryStyle","getComponentStyle","Blockly.Theme.prototype.getComponentStyle","componentName","propertyValue","setComponentStyle","Blockly.Theme.prototype.setComponentStyle","styleValue","setFontStyle","Blockly.Theme.prototype.setFontStyle","setStartHats","Blockly.Theme.prototype.setStartHats","defineTheme","Blockly.Theme.defineTheme","themeObj","theme","base","Blockly.Themes","Themes","Classic","defaultBlockStyles","KeyCodes","WIN_KEY_FF_LINUX","MAC_ENTER","BACKSPACE","TAB","NUM_CENTER","ENTER","SHIFT","CTRL","ALT","PAUSE","CAPS_LOCK","ESC","SPACE","PAGE_UP","PAGE_DOWN","END","HOME","LEFT","UP","RIGHT","DOWN","PLUS_SIGN","PRINT_SCREEN","INSERT","ZERO","ONE","TWO","THREE","FOUR","FIVE","SIX","SEVEN","EIGHT","NINE","FF_SEMICOLON","FF_EQUALS","FF_DASH","FF_HASH","QUESTION_MARK","AT_SIGN","A","B","C","D","E","F","G","H","I","J","K","L","M","N","O","P","Q","R","S","T","U","V","W","X","Y","Z","META","WIN_KEY_RIGHT","CONTEXT_MENU","NUM_ZERO","NUM_ONE","NUM_TWO","NUM_THREE","NUM_FOUR","NUM_FIVE","NUM_SIX","NUM_SEVEN","NUM_EIGHT","NUM_NINE","NUM_MULTIPLY","NUM_PLUS","NUM_MINUS","NUM_PERIOD","NUM_DIVISION","F1","F2","F3","F4","F5","F6","F7","F8","F9","F10","F11","F12","NUMLOCK","SCROLL_LOCK","FIRST_MEDIA_KEY","LAST_MEDIA_KEY","SEMICOLON","DASH","EQUALS","COMMA","PERIOD","SLASH","APOSTROPHE","TILDE","SINGLE_QUOTE","OPEN_SQUARE_BRACKET","BACKSLASH","CLOSE_SQUARE_BRACKET","WIN_KEY","MAC_FF_META","MAC_WK_CMD_LEFT","MAC_WK_CMD_RIGHT","WIN_IME","VK_NONAME","PHANTOM","Blockly.user","Blockly.user.keyMap","user","keyMap","map_","modifierKeys","CONTROL","setActionForKey","Blockly.user.keyMap.setActionForKey","keyCode","action","oldKey","getKeyByAction","setKeyMap","Blockly.user.keyMap.setKeyMap","getKeyMap","Blockly.user.keyMap.getKeyMap","getActionByKeyCode","Blockly.user.keyMap.getActionByKeyCode","Blockly.user.keyMap.getKeyByAction","serializeKeyEvent","Blockly.user.keyMap.serializeKeyEvent","modifiers","keyName","getModifierState","checkModifiers_","Blockly.user.keyMap.checkModifiers_","validModifiers","modifier","createSerializedKey","Blockly.user.keyMap.createSerializedKey","validModifier","createDefaultKeyMap","Blockly.user.keyMap.createDefaultKeyMap","controlK","shiftW","shiftA","shiftS","shiftD","navigation","ACTION_PREVIOUS","ACTION_OUT","ACTION_NEXT","ACTION_IN","ACTION_INSERT","ACTION_MARK","ACTION_DISCONNECT","ACTION_TOOLBOX","ACTION_EXIT","ACTION_TOGGLE_KEYBOARD_NAV","ACTION_MOVE_WS_CURSOR_UP","ACTION_MOVE_WS_CURSOR_LEFT","ACTION_MOVE_WS_CURSOR_DOWN","ACTION_MOVE_WS_CURSOR_RIGHT","Metrics","Blockly.utils.Metrics","Blockly.utils.toolbox","toolbox","convertToolboxToJSON","Blockly.utils.toolbox.convertToolboxToJSON","toolboxDef","isArray","hasCategories","toolboxXmlToJson_","Blockly.utils.toolbox.toolboxXmlToJson_","tagName","j","attributes","attr","nodeName","value","Blockly.utils.toolbox.hasCategories","getElementsByTagName","Blockly.utils.xml","xml","NAME_SPACE","Blockly.utils.xml.document","Blockly.utils.xml.createElement","Blockly.utils.xml.createTextNode","textToDomDocument","Blockly.utils.xml.textToDomDocument","parseFromString","oParser","DOMParser","domToText","Blockly.utils.xml.domToText","serializeToString","oSerializer","XMLSerializer","BlockBase","Blockly.Events.BlockBase","Blockly.Events.BlockBase.prototype.toJson","Blockly.Events.BlockBase.prototype.fromJson","Blockly.Events.Change","BlockChange","Blockly.Events.Change.prototype.toJson","Blockly.Events.Change.prototype.fromJson","Blockly.Events.Change.prototype.isNull","Blockly.Events.Change.prototype.run","mutator","setVisible","getField","setValue","setCommentText","setCollapsed","setInputsInline","oldMutation","mutationToDom","oldMutationDom","Xml","domToMutation","textToDom","Blockly.Events.Create","rendered","blockToDomWithXY","blockToDom","BlockCreate","Blockly.Events.Create.prototype.toJson","Blockly.Events.Create.prototype.fromJson","Blockly.Events.Create.prototype.run","domToWorkspace","Blockly.Events.Delete","oldXml","BlockDelete","Blockly.Events.Delete.prototype.toJson","Blockly.Events.Delete.prototype.fromJson","Blockly.Events.Delete.prototype.run","Blockly.Events.Move","location","currentLocation_","oldParentId","parentId","oldInputName","inputName","oldCoordinate","coordinate","BlockMove","Blockly.Events.Move.prototype.toJson","Blockly.Events.Move.prototype.fromJson","recordNew","Blockly.Events.Move.prototype.recordNew","Blockly.Events.Move.prototype.currentLocation_","input","getInputWithBlock","getRelativeToSurfaceXY","Blockly.Events.Move.prototype.isNull","Blockly.Events.Move.prototype.run","parentBlock","unplug","moveBy","blockConnection","getInput","parentConnection","connection","nextConnection","connect","Blockly.Events.FinishedLoading","Blockly.Events.FinishedLoading.prototype.toJson","Blockly.Events.FinishedLoading.prototype.fromJson","VarBase","Blockly.Events.VarBase","variable","varId","Blockly.Events.VarBase.prototype.toJson","Blockly.Events.VarBase.prototype.fromJson","Blockly.Events.VarCreate","varType","varName","Blockly.Events.VarCreate.prototype.toJson","Blockly.Events.VarCreate.prototype.fromJson","Blockly.Events.VarCreate.prototype.run","createVariable","deleteVariableById","Blockly.Events.VarDelete","Blockly.Events.VarDelete.prototype.toJson","Blockly.Events.VarDelete.prototype.fromJson","Blockly.Events.VarDelete.prototype.run","Blockly.Events.VarRename","newName","oldName","Blockly.Events.VarRename.prototype.toJson","Blockly.Events.VarRename.prototype.fromJson","Blockly.Events.VarRename.prototype.run","renameVariableById","Blockly.Xml","workspaceToDom","Blockly.Xml.workspaceToDom","opt_noId","variablesElement","variablesToDom","Variables","allUsedVarModels","hasChildNodes","comments","getTopComments","comment","toXmlWithXY","getTopBlocks","Blockly.Xml.variablesToDom","variableList","variables","Blockly.Xml.blockToDomWithXY","isInsertionMarker","getChildren","DocumentFragment","getWidth","fieldToDom_","Blockly.Xml.fieldToDom_","isSerializable","toXml","allFieldsToDom_","Blockly.Xml.allFieldsToDom_","inputList","fieldRow","fieldDom","Blockly.Xml.blockToDom","isShadow","mutation","hasAttributes","commentText","getCommentText","size","commentModel","pinned","commentElement","data","dataElement","empty","childBlock","targetBlock","shadow","getShadowDom","cloneShadow_","elem","inputsInline","inputsInlineDefault","isCollapsed","isDeletable","isMovable","isEditable","Blockly.Xml.cloneShadow_","cloneNode","textNode","Blockly.Xml.domToText","regexp","oldText","domToPrettyText","Blockly.Xml.domToPrettyText","blob","indent","Blockly.Xml.textToDom","doc","clearWorkspaceAndLoadFromXml","Blockly.Xml.clearWorkspaceAndLoadFromXml","setResizesEnabled","clear","blockIds","Blockly.Xml.domToWorkspace","swap","newBlockIds","existingGroup","variablesFirst","xmlChild","xmlChildElement","domToBlock","blockX","hasAttribute","blockY","TypeError","WorkspaceCommentSvg","fromXml","WorkspaceComment","domToVariables","appendDomToWorkspace","Blockly.Xml.appendDomToWorkspace","bbox","hasOwnProperty","getBlocksBoundingBox","farY","topX","newLeftX","newRightX","newY","blockXY","offsetY","ySeparation","offsetX","Blockly.Xml.domToBlock","xmlBlock","variablesBeforeCreation","getAllVariables","topBlock","domToBlockHeadless_","setConnectionTracking","initSvg","disposed","updateDisabled","resizeContents","initModel","newVariables","getAddedVariables","thisVariable","Blockly.Xml.domToVariables","xmlVariables","Blockly.Xml.domToBlockHeadless_","prototypeName","outerHTML","newBlock","blockChild","childShadowElement","childBlockElement","grandchild","Comment","getCommentIcon","isInFlyout","domToField_","setShadowDom","isConnected","inline","disabled","deletable","setDeletable","movable","setMovable","editable","setEditable","collapsed","getVarModels","setShadow","Blockly.Xml.domToField_","fieldName","deleteNext","Blockly.Xml.deleteNext","Options","Blockly.Options","readOnly","toolboxContents","hasTrashcan","hasCollapse","hasComments","hasDisable","hasSounds","parseToolboxTree","maxTrashcanContents","horizontalLayout","toolboxAtStart","toolboxPosition","oneBasedIndex","renderer","collapse","maxBlocks","maxInstances","moveOptions","parseMoveOptions","hasScrollbars","scrollbars","languageTree","parseGridOptions_","zoomOptions","parseZoomOptions_","parseThemeOptions_","rendererOverrides","BlocklyOptions","Blockly.BlocklyOptions","Blockly.Options.parseMoveOptions","move","wheel","drag","Blockly.Options.parseZoomOptions_","zoom","controls","startScale","maxScale","minScale","scaleSpeed","pinch","Blockly.Options.parseGridOptions_","grid","spacing","snap","Blockly.Options.parseThemeOptions_","Blockly.Options.parseToolboxTree","tree","Element","Blockly.Touch","Touch","TOUCH_ENABLED","touchIdentifier_","TOUCH_MAP","longPid_","longStart","Blockly.longStart","gesture","longStop_","changedTouches","handleRightClick","Blockly.longStop_","clearTouchIdentifier","Blockly.Touch.clearTouchIdentifier","shouldHandleEvent","Blockly.Touch.shouldHandleEvent","isMouseOrTouchEvent","checkTouchIdentifier","getTouchIdentifierFromEvent","Blockly.Touch.getTouchIdentifierFromEvent","pointerId","identifier","Blockly.Touch.checkTouchIdentifier","setClientFromTouch","Blockly.Touch.setClientFromTouch","touchPoint","Blockly.Touch.isMouseOrTouchEvent","isTouchEvent","Blockly.Touch.isTouchEvent","splitEventByTouches","Blockly.Touch.splitEventByTouches","events","newEvent","ScrollbarPair","Blockly.ScrollbarPair","workspace_","hScroll","Scrollbar","vScroll","corner_","scrollbarThickness","getBubbleCanvas","oldHostMetrics_","Blockly.ScrollbarPair.prototype.dispose","resize","Blockly.ScrollbarPair.prototype.resize","hostMetrics","getMetrics","resizeH","resizeV","viewWidth","viewHeight","absoluteTop","absoluteLeft","contentWidth","viewLeft","contentLeft","contentHeight","viewTop","contentTop","set","Blockly.ScrollbarPair.prototype.set","xyRatio","hHandlePosition","ratio","vHandlePosition","vBarLength","scrollViewSize_","getRatio_","setMetrics","setHandlePosition","Blockly.ScrollbarPair.prototype.getRatio_","handlePosition","viewSize","Blockly.Scrollbar","horizontal","opt_pair","opt_class","pair_","horizontal_","createDom_","svgBackground_","outerSvg_","svgHandle_","lengthAttribute_","positionAttribute_","onMouseDownBarWrapper_","bindEventWithChecks_","scrollbar","onMouseDownBar_","onMouseDownHandleWrapper_","onMouseDownHandle_","origin_","startDragMouse_","handleLength_","handlePosition_","isVisible_","containerVisible_","metricsAreEquivalent_","Blockly.Scrollbar.metricsAreEquivalent_","first","second","Blockly.Scrollbar.prototype.dispose","cleanUp_","unbindEvent_","svgGroup_","getThemeManager","unsubscribe","setHandleLength_","Blockly.Scrollbar.prototype.setHandleLength_","newLength","Blockly.Scrollbar.prototype.setHandlePosition","newPosition","setScrollViewSize_","Blockly.Scrollbar.prototype.setScrollViewSize_","newSize","setContainerVisible","Blockly.ScrollbarPair.prototype.setContainerVisible","visible","setPosition","Blockly.Scrollbar.prototype.setPosition","Blockly.Scrollbar.prototype.resize","opt_metrics","resizeHorizontal_","resizeVertical_","onScroll_","Blockly.Scrollbar.prototype.resizeHorizontal_","resizeViewHorizontal","Blockly.Scrollbar.prototype.resizeViewHorizontal","xCoordinate","resizeContentHorizontal","Blockly.Scrollbar.prototype.resizeContentHorizontal","constrainHandle_","Blockly.Scrollbar.prototype.resizeVertical_","resizeViewVertical","Blockly.Scrollbar.prototype.resizeViewVertical","resizeContentVertical","Blockly.Scrollbar.prototype.resizeContentVertical","Blockly.Scrollbar.prototype.createDom_","radius","subscribe","Blockly.Scrollbar.prototype.isVisible","Blockly.Scrollbar.prototype.setContainerVisible","visibilityChanged","updateDisplay_","Blockly.Scrollbar.prototype.setVisible","Blockly.Scrollbar.prototype.updateDisplay_","Blockly.Scrollbar.prototype.onMouseDownBar_","mouseXY","getInverseScreenCTM","mouseLocation","handleXY","handleStart","pageLength","Blockly.Scrollbar.prototype.onMouseDownHandle_","startDragHandle","setupDragSurface","onMouseUpWrapper_","onMouseUpHandle_","onMouseMoveWrapper_","onMouseMoveHandle_","Blockly.Scrollbar.prototype.onMouseMoveHandle_","currentMouse","Blockly.Scrollbar.prototype.onMouseUpHandle_","resetDragSurface","Blockly.Scrollbar.prototype.cleanUp_","hideChaff","Blockly.Scrollbar.prototype.constrainHandle_","Blockly.Scrollbar.prototype.onScroll_","Blockly.Scrollbar.prototype.set","setOrigin","Blockly.Scrollbar.prototype.setOrigin","Blockly.Tooltip","Tooltip","blocked_","LIMIT","mouseOutPid_","showPid_","lastX_","lastY_","poisonedElement_","OFFSET_X","OFFSET_Y","RADIUS_OK","HOVER_MS","MARGINS","DIV","Blockly.Tooltip.createDom","bindMouseEvents","Blockly.Tooltip.bindMouseEvents","mouseOverWrapper_","bindEvent_","onMouseOver_","mouseOutWrapper_","onMouseOut_","onMouseMove_","unbindMouseEvents","Blockly.Tooltip.unbindMouseEvents","removeEventListener","Blockly.Tooltip.onMouseOver_","currentTarget","tooltip","Blockly.Tooltip.onMouseOut_","_e","Blockly.Tooltip.onMouseMove_","pageX","pageY","show_","Blockly.Tooltip.dispose","Blockly.Tooltip.hide","Blockly.Tooltip.block","unblock","Blockly.Tooltip.unblock","Blockly.Tooltip.show_","tip","windowWidth","windowHeight","anchorX","anchorY","scrollY","scrollX","WorkspaceDragSurfaceSvg","Blockly.WorkspaceDragSurfaceSvg","Blockly.WorkspaceDragSurfaceSvg.prototype.createDom","Blockly.WorkspaceDragSurfaceSvg.prototype.translateSurface","Blockly.WorkspaceDragSurfaceSvg.prototype.getSurfaceTranslation","Blockly.WorkspaceDragSurfaceSvg.prototype.clearAndHide","newSurface","blockCanvas","bubbleCanvas","previousSibling_","setContentsAndShow","Blockly.WorkspaceDragSurfaceSvg.prototype.setContentsAndShow","previousSibling","ASTNode","Blockly.ASTNode","opt_params","type_","isConnection_","isConnectionType_","location_","wsCoordinate_","processParams_","types","BLOCK","INPUT","OUTPUT","NEXT","PREVIOUS","STACK","WORKSPACE","NAVIGATE_ALL_FIELDS","DEFAULT_OFFSET_Y","Blockly.ASTNode.isConnectionType_","createFieldNode","Blockly.ASTNode.createFieldNode","createConnectionNode","Blockly.ASTNode.createConnectionNode","getParentInput","createInputNode","Blockly.ASTNode.createInputNode","createBlockNode","Blockly.ASTNode.createBlockNode","createStackNode","Blockly.ASTNode.createStackNode","createWorkspaceNode","Blockly.ASTNode.createWorkspaceNode","wsCoordinate","params","createTopNode","Blockly.ASTNode.createTopNode","topConnection","astNode","Blockly.ASTNode.prototype.processParams_","getLocation","Blockly.ASTNode.prototype.getLocation","getType","Blockly.ASTNode.prototype.getType","getWsCoordinate","Blockly.ASTNode.prototype.getWsCoordinate","isConnection","Blockly.ASTNode.prototype.isConnection","findNextForInput_","Blockly.ASTNode.prototype.findNextForInput_","parentInput","curIdx","isClickable","findNextForField_","Blockly.ASTNode.prototype.findNextForField_","fieldIdx","newInput","findPrevForInput_","Blockly.ASTNode.prototype.findPrevForInput_","findPrevForField_","Blockly.ASTNode.prototype.findPrevForField_","navigateBetweenStacks_","Blockly.ASTNode.prototype.navigateBetweenStacks_","curLocation","Block","curRoot","getRootBlock","topBlocks","resultIndex","findTopASTNodeForBlock_","Blockly.ASTNode.prototype.findTopASTNodeForBlock_","getOutAstNodeForBlock_","Blockly.ASTNode.prototype.getOutAstNodeForBlock_","getTopStackBlock","targetConnection","findFirstFieldOrInput_","Blockly.ASTNode.prototype.findFirstFieldOrInput_","inputs","Blockly.ASTNode.prototype.getSourceBlock","next","Blockly.ASTNode.prototype.next","in","Blockly.ASTNode.prototype.in","prev","Blockly.ASTNode.prototype.prev","out","Blockly.ASTNode.prototype.out","blockPos","Blocks","Connection","Blockly.Connection","sourceBlock_","CAN_CONNECT","REASON_SELF_CONNECTION","REASON_WRONG_TYPE","REASON_TARGET_NULL","REASON_CHECKS_FAILED","REASON_DIFFERENT_WORKSPACES","REASON_SHADOW_PARENT","check_","shadowDom_","connect_","Blockly.Connection.prototype.connect_","childConnection","disconnect","orphanBlock","shadowDom","lastConnectionInRow","checkType","onFailedConnect","connectReciprocally_","Blockly.Connection.prototype.dispose","Blockly.Connection.prototype.getSourceBlock","isSuperior","Blockly.Connection.prototype.isSuperior","Blockly.Connection.prototype.isConnected","canConnectWithReason","Blockly.Connection.prototype.canConnectWithReason","blockA","blockB","checkConnection","Blockly.Connection.prototype.checkConnection","msg","canConnectToPrevious_","Blockly.Connection.prototype.canConnectToPrevious_","candidate","draggingConnections","getPreviousBlock","isConnectionAllowed","Blockly.Connection.prototype.isConnectionAllowed","canConnect","Blockly.Connection.prototype.onFailedConnect","_otherConnection","Blockly.Connection.prototype.connect","otherConnection","eventGroup","Blockly.Connection.connectReciprocally_","singleConnection_","Blockly.Connection.singleConnection_","thisConnection","Blockly.Connection.lastConnectionInRow","startBlock","Blockly.Connection.prototype.disconnect","disconnectInternal_","respawnShadow_","Blockly.Connection.prototype.disconnectInternal_","Blockly.Connection.prototype.respawnShadow_","blockShadow","Blockly.Connection.prototype.targetBlock","Blockly.Connection.prototype.checkType","checkType_","Blockly.Connection.prototype.checkType_","onCheckChanged_","Blockly.Connection.prototype.onCheckChanged_","setCheck","Blockly.Connection.prototype.setCheck","check","getCheck","Blockly.Connection.prototype.getCheck","Blockly.Connection.prototype.setShadowDom","Blockly.Connection.prototype.getShadowDom","neighbours","Blockly.Connection.prototype.neighbours","_maxLimit","Blockly.Connection.prototype.getParentInput","idx","Blockly.Connection.prototype.toString","toDevString","Blockly.Extensions","Extensions","ALL_","Blockly.Extensions.register","initFn","registerMixin","Blockly.Extensions.registerMixin","mixinObj","registerMutator","Blockly.Extensions.registerMutator","opt_helperFn","opt_blockList","errorPrefix","checkHasFunction_","hasMutatorDialog","checkMutatorDialog_","Mutator","setMutator","Blockly.Extensions.unregister","Blockly.Extensions.apply","isMutator","extensionFn","checkNoMutatorProperties_","mutatorProperties","getMutatorProperties_","checkBlockHasMutatorProperties_","mutatorPropertiesMatch_","Blockly.Extensions.checkHasFunction_","func","propertyName","Blockly.Extensions.checkNoMutatorProperties_","mutationName","properties","Blockly.Extensions.checkMutatorDialog_","hasCompose","compose","hasDecompose","decompose","Blockly.Extensions.checkBlockHasMutatorProperties_","Blockly.Extensions.getMutatorProperties_","Blockly.Extensions.mutatorPropertiesMatch_","oldProperties","newProperties","buildTooltipForDropdown","Blockly.Extensions.buildTooltipForDropdown","dropdownName","lookupTable","blockTypesChecked","checkDropdownOptionsInTable_","setTooltip","getFieldValue","warning","bind","Blockly.Extensions.checkDropdownOptionsInTable_","dropdown","isOptionListDynamic","getOptions","optionKey","buildTooltipWithFieldText","Blockly.Extensions.buildTooltipWithFieldText","msgTemplate","getText","extensionParentTooltip_","Blockly.Extensions.extensionParentTooltip_","tooltipWhenNotConnected_","getInputsInline","Blockly.fieldRegistry","fieldRegistry","Blockly.fieldRegistry.register","fieldClass","Blockly.fieldRegistry.unregister","Blockly.fieldRegistry.fromJson","Blockly.blockAnimations","blockAnimations","disconnectPid_","disconnectGroup_","disposeUiEffect","Blockly.blockAnimations.disposeUiEffect","svgGroup","getAudioManager","play","getSvgXY","clone","translateX_","translateY_","bBox_","disposeUiStep_","Date","Blockly.blockAnimations.disposeUiStep_","workspaceScale","percent","connectionUiEffect","Blockly.blockAnimations.connectionUiEffect","ripple","connectionUiStep_","Blockly.blockAnimations.connectionUiStep_","disconnectUiEffect","Blockly.blockAnimations.disconnectUiEffect","getHeightWidth","atan","DISPLACEMENT","disconnectUiStep_","Blockly.blockAnimations.disconnectUiStep_","DURATION","skew_","skew","sin","WIGGLES","translate_","disconnectUiStop","Blockly.blockAnimations.disconnectUiStop","InsertionMarkerManager","Blockly.InsertionMarkerManager","topBlock_","selected","lastMarker_","lastOnStack_","firstMarker_","createMarkerBlock_","localConnection_","closestConnection_","wouldDeleteBlock_","fadedBlock_","highlightedBlock_","markerConnection_","availableConnections_","initAvailableConnections_","PREVIEW_TYPE","INSERTION_MARKER","INPUT_OUTLINE","REPLACEMENT_FADE","Blockly.InsertionMarkerManager.prototype.dispose","updateAvailableConnections","Blockly.InsertionMarkerManager.prototype.updateAvailableConnections","wouldDeleteBlock","Blockly.InsertionMarkerManager.prototype.wouldDeleteBlock","wouldConnectBlock","Blockly.InsertionMarkerManager.prototype.wouldConnectBlock","applyConnections","Blockly.InsertionMarkerManager.prototype.applyConnections","hidePreview_","inferiorConnection","rootBlock","bringToFront","Blockly.InsertionMarkerManager.prototype.update","dxy","deleteArea","getCandidate_","shouldDelete_","shouldUpdatePreviews_","maybeHidePreview_","maybeShowPreview_","Blockly.InsertionMarkerManager.prototype.createMarkerBlock_","imType","setInsertionMarker","sourceInput","COLLAPSED_INPUT_NAME","resultInput","resultField","sourceField","getValue","Blockly.InsertionMarkerManager.prototype.initAvailableConnections_","available","getConnections_","lastOnStack","lastConnectionInStack","Blockly.InsertionMarkerManager.prototype.shouldUpdatePreviews_","candidateLocal","local","candidateClosest","closest","xDiff","yDiff","curDistance","error","Blockly.InsertionMarkerManager.prototype.getCandidate_","getStartRadius_","myConnection","neighbour","Blockly.InsertionMarkerManager.prototype.getStartRadius_","Blockly.InsertionMarkerManager.prototype.shouldDelete_","wouldConnect","Blockly.InsertionMarkerManager.prototype.maybeShowPreview_","showPreview_","Blockly.InsertionMarkerManager.prototype.showPreview_","getConnectionPreviewMethod","method","showInsertionInputOutline_","showInsertionMarker_","showReplacementFade_","shouldHighlightConnection","highlight","Blockly.InsertionMarkerManager.prototype.maybeHidePreview_","closestChanged","localChanged","Blockly.InsertionMarkerManager.prototype.hidePreview_","unhighlight","hideReplacementFade_","hideInsertionInputOutline_","hideInsertionMarker_","Blockly.InsertionMarkerManager.prototype.showInsertionMarker_","imBlock","imConn","getMatchingConnection","positionNearConnection","Blockly.InsertionMarkerManager.prototype.hideInsertionMarker_","markerNext","markerPrev","markerOutput","isFirstInOutputStack","isFirstInStatementStack","innerConnection","previousBlockNextConnection","Blockly.InsertionMarkerManager.prototype.showInsertionInputOutline_","highlightShapeForInput","Blockly.InsertionMarkerManager.prototype.hideInsertionInputOutline_","Blockly.InsertionMarkerManager.prototype.showReplacementFade_","fadeForReplacement","Blockly.InsertionMarkerManager.prototype.hideReplacementFade_","getInsertionMarkers","Blockly.InsertionMarkerManager.prototype.getInsertionMarkers","BlockDragger","Blockly.BlockDragger","draggingBlock_","draggedConnectionManager_","deleteArea_","startXY_","dragIconData_","initIconData_","Blockly.BlockDragger.prototype.dispose","Blockly.BlockDragger.initIconData_","dragIconData","icons","getIcons","getIconLocation","icon","startBlockDrag","Blockly.BlockDragger.prototype.startBlockDrag","currentDragDeltaXY","healStack","fireDragStartEvent_","delta","pixelsToWorkspaceUnits_","newLoc","setDragging","moveToDragSurface","getToolbox","addStyle","Blockly.BlockDragger.prototype.fireDragStartEvent_","dragBlock","Blockly.BlockDragger.prototype.dragBlock","moveDuringDrag","dragIcons_","isDeleteArea","updateCursorDuringBlockDrag_","endBlockDrag","Blockly.BlockDragger.prototype.endBlockDrag","fireDragEndEvent_","moveOffDragSurface","maybeDeleteBlock_","deleted","moveConnections","fireMoveEvent_","scheduleSnapAndBump","removeStyle","Blockly.BlockDragger.prototype.fireDragEndEvent_","Blockly.BlockDragger.prototype.fireMoveEvent_","Blockly.BlockDragger.prototype.maybeDeleteBlock_","trashcan","close","Blockly.BlockDragger.prototype.updateCursorDuringBlockDrag_","setDeleteStyle","setOpen","Blockly.BlockDragger.prototype.pixelsToWorkspaceUnits_","pixelCoord","Blockly.BlockDragger.prototype.dragIcons_","setIconLocation","Blockly.BlockDragger.prototype.getInsertionMarkers","VariableMap","Blockly.VariableMap","variableMap_","Blockly.VariableMap.prototype.clear","renameVariable","Blockly.VariableMap.prototype.renameVariable","conflictVar","getVariable","getAllBlocks","renameVariableWithConflict_","renameVariableAndUses_","Blockly.VariableMap.prototype.renameVariableById","getVariableById","Blockly.VariableMap.prototype.renameVariableAndUses_","updateVarName","Blockly.VariableMap.prototype.renameVariableWithConflict_","renameVarById","variableIndex","getVariablesOfType","Blockly.VariableMap.prototype.createVariable","opt_type","opt_id","VariableModel","deleteVariable","Blockly.VariableMap.prototype.deleteVariable","tempVar","Blockly.VariableMap.prototype.deleteVariableById","variableName","uses","getVariableUsesById","procedureName","deleteText","alert","confirmText","confirm","ok","deleteVariableInternal","Blockly.VariableMap.prototype.deleteVariableInternal","Blockly.VariableMap.prototype.getVariable","list","Names","Blockly.VariableMap.prototype.getVariableById","Blockly.VariableMap.prototype.getVariablesOfType","variable_list","getVariableTypes","Blockly.VariableMap.prototype.getVariableTypes","variableMap","getPotentialVariableMap","hasEmpty","Blockly.VariableMap.prototype.getAllVariables","all_variables","getAllVariableNames","Blockly.VariableMap.prototype.getAllVariableNames","allNames","Blockly.VariableMap.prototype.getVariableUsesById","blockVariables","Blockly.Workspace","opt_options","WorkspaceDB_","topBlocks_","topComments_","commentDB_","listeners_","undoStack_","redoStack_","blockDB_","typedBlocksDB_","potentialVariableMap_","isClearing","MAX_UNDO","connectionDBList","Blockly.Workspace.prototype.dispose","SCAN_ANGLE","sortObjects_","Blockly.Workspace.prototype.sortObjects_","aXY","bXY","addTopBlock","Blockly.Workspace.prototype.addTopBlock","removeTopBlock","Blockly.Workspace.prototype.removeTopBlock","Blockly.Workspace.prototype.getTopBlocks","ordered","sort","addTypedBlock","Blockly.Workspace.prototype.addTypedBlock","removeTypedBlock","Blockly.Workspace.prototype.removeTypedBlock","getBlocksByType","Blockly.Workspace.prototype.getBlocksByType","addTopComment","Blockly.Workspace.prototype.addTopComment","removeTopComment","Blockly.Workspace.prototype.removeTopComment","Blockly.Workspace.prototype.getTopComments","Blockly.Workspace.prototype.getAllBlocks","filtered","Blockly.Workspace.prototype.clear","Blockly.Workspace.prototype.renameVariableById","Blockly.Workspace.prototype.createVariable","Blockly.Workspace.prototype.getVariableUsesById","Blockly.Workspace.prototype.deleteVariableById","variableIndexOf","Blockly.Workspace.prototype.variableIndexOf","_name","Blockly.Workspace.prototype.getVariable","Blockly.Workspace.prototype.getVariableById","Blockly.Workspace.prototype.getVariablesOfType","Blockly.Workspace.prototype.getVariableTypes","Blockly.Workspace.prototype.getAllVariables","Blockly.Workspace.prototype.getAllVariableNames","Blockly.Workspace.prototype.getWidth","Blockly.Workspace.prototype.newBlock","remainingCapacity","Blockly.Workspace.prototype.remainingCapacity","remainingCapacityOfType","Blockly.Workspace.prototype.remainingCapacityOfType","maxInstanceOfType","isCapacityAvailable","Blockly.Workspace.prototype.isCapacityAvailable","hasBlockLimits","copyableBlocksCount","Blockly.Workspace.prototype.hasBlockLimits","undo","Blockly.Workspace.prototype.undo","redo","inputStack","outputStack","inputEvent","pop","clearUndo","Blockly.Workspace.prototype.clearUndo","addChangeListener","Blockly.Workspace.prototype.addChangeListener","removeChangeListener","Blockly.Workspace.prototype.removeChangeListener","Blockly.Workspace.prototype.fireChangeListener","shift","Blockly.Workspace.prototype.getBlockById","setBlockById","Blockly.Workspace.prototype.setBlockById","removeBlockById","Blockly.Workspace.prototype.removeBlockById","getCommentById","Blockly.Workspace.prototype.getCommentById","allInputsFilled","Blockly.Workspace.prototype.allInputsFilled","opt_shadowBlocksAreFilled","Blockly.Workspace.prototype.getPotentialVariableMap","createPotentialVariableMap","Blockly.Workspace.prototype.createPotentialVariableMap","getVariableMap","Blockly.Workspace.prototype.getVariableMap","setVariableMap","Blockly.Workspace.prototype.setVariableMap","Blockly.Workspace.getById","getAll","Blockly.Workspace.getAll","workspaces","Bubble","Blockly.Bubble","shape","anchorXY","bubbleWidth","bubbleHeight","shape_","onMouseDownResizeWrapper_","onMouseDownBubbleWrapper_","moveCallback_","resizeCallback_","angle","ARROW_ANGLE","arrow_radians_","canvas","setAnchorLocation","BORDER_WIDTH","setBubbleSize","positionBubble_","renderArrow_","rendered_","ARROW_THICKNESS","ARROW_BEND","ANCHOR_RADIUS","unbindDragEvents_","Blockly.Bubble.unbindDragEvents_","bubbleMouseUp_","Blockly.Bubble.bubbleMouseUp_","anchorXY_","relativeLeft_","relativeTop_","width_","height_","autoLayout_","Blockly.Bubble.prototype.createDom_","hasResize","bubbleGroup_","getConstants","embossFilterId","bubbleEmboss","bubbleArrow_","bubbleBack_","resizeGroup_","resizeSize","bubbleMouseDown_","resizeMouseDown_","Blockly.Bubble.prototype.getSvgRoot","setSvgId","Blockly.Bubble.prototype.setSvgId","dataset","Blockly.Bubble.prototype.bubbleMouseDown_","getGesture","handleBubbleStart","showContextMenu","Blockly.Bubble.prototype.showContextMenu","Blockly.Bubble.prototype.isDeletable","Blockly.Bubble.prototype.resizeMouseDown_","promote","startDrag","resizeMouseMove_","Blockly.Bubble.prototype.resizeMouseMove_","newXY","moveDrag","registerResizeEvent","Blockly.Bubble.prototype.registerResizeEvent","callback","registerMoveEvent","Blockly.Bubble.prototype.registerMoveEvent","Blockly.Bubble.prototype.promote","lastChild","Blockly.Bubble.prototype.setAnchorLocation","layoutBubble_","Blockly.Bubble.prototype.layoutBubble_","optimalLeft","getOptimalRelativeLeft_","optimalTop","getOptimalRelativeTop_","topPosition","MIN_BLOCK_HEIGHT","startPosition","endPosition","bottomPosition","closerPosition","fartherPosition","topPositionOverlap","getOverlap_","startPositionOverlap","closerPositionOverlap","fartherPositionOverlap","mostOverlap","Blockly.Bubble.prototype.getOverlap_","relativeMin","Blockly.Bubble.prototype.getOptimalRelativeLeft_","relativeLeft","bubbleRight","bubbleLeft","workspaceRight","workspaceLeft","Blockly.Bubble.prototype.getOptimalRelativeTop_","relativeTop","bubbleTop","bubbleBottom","workspaceTop","workspaceBottom","Blockly.Bubble.prototype.positionBubble_","Blockly.Bubble.prototype.moveTo","Blockly.Bubble.prototype.setDragging","adding","getBubbleSize","Blockly.Bubble.prototype.getBubbleSize","Blockly.Bubble.prototype.setBubbleSize","doubleBorderWidth","Blockly.Bubble.prototype.renderArrow_","relBubbleX","relBubbleY","relAnchorX","relAnchorY","rise","hypotenuse","acos","rightAngle","rightRise","rightRun","cos","bubbleSize","thickness","backoffRatio","baseX1","baseY1","baseX2","baseY2","swirlAngle","swirlRise","swirlRun","Blockly.Bubble.prototype.setColour","hexColour","Blockly.Bubble.prototype.dispose","Blockly.Bubble.prototype.moveDuringDrag","dragSurface","Blockly.Bubble.prototype.getRelativeToSurfaceXY","setAutoLayout","Blockly.Bubble.prototype.setAutoLayout","CommentBase","Blockly.Events.CommentBase","commentId","Blockly.Events.CommentBase.prototype.toJson","Blockly.Events.CommentBase.prototype.fromJson","Blockly.Events.CommentChange","oldContents","newContents","oldContents_","newContents_","Blockly.Events.CommentChange.prototype.toJson","Blockly.Events.CommentChange.prototype.fromJson","Blockly.Events.CommentChange.prototype.isNull","Blockly.Events.CommentChange.prototype.run","setContent","contents","Blockly.Events.CommentCreate","Blockly.Events.CommentCreate.prototype.toJson","Blockly.Events.CommentCreate.prototype.fromJson","Blockly.Events.CommentCreate.prototype.run","CommentCreateDeleteHelper","Blockly.Events.CommentCreateDeleteHelper","Blockly.Events.CommentDelete","Blockly.Events.CommentDelete.prototype.toJson","Blockly.Events.CommentDelete.prototype.fromJson","Blockly.Events.CommentDelete.prototype.run","Blockly.Events.CommentMove","comment_","oldCoordinate_","getXY","newCoordinate_","Blockly.Events.CommentMove.prototype.recordNew","setOldCoordinate","Blockly.Events.CommentMove.prototype.setOldCoordinate","Blockly.Events.CommentMove.prototype.toJson","Blockly.Events.CommentMove.prototype.fromJson","Blockly.Events.CommentMove.prototype.isNull","Blockly.Events.CommentMove.prototype.run","current","BubbleDragger","Blockly.BubbleDragger","bubble","draggingBubble_","wouldDeleteBubble_","dragSurface_","getBlockDragSurface","Blockly.BubbleDragger.prototype.dispose","startBubbleDrag","Blockly.BubbleDragger.prototype.startBubbleDrag","moveToDragSurface_","dragBubble","Blockly.BubbleDragger.prototype.dragBubble","updateCursorDuringBubbleDrag_","maybeDeleteBubble_","Blockly.BubbleDragger.prototype.maybeDeleteBubble_","Blockly.BubbleDragger.prototype.updateCursorDuringBubbleDrag_","endBubbleDrag","Blockly.BubbleDragger.prototype.endBubbleDrag","Blockly.BubbleDragger.prototype.fireMoveEvent_","isComment","Blockly.BubbleDragger.prototype.pixelsToWorkspaceUnits_","Blockly.BubbleDragger.prototype.moveToDragSurface_","WorkspaceDragger","Blockly.WorkspaceDragger","startScrollXY_","Blockly.WorkspaceDragger.prototype.dispose","Blockly.WorkspaceDragger.prototype.startDrag","unselect","endDrag","Blockly.WorkspaceDragger.prototype.endDrag","Blockly.WorkspaceDragger.prototype.drag","scroll","FlyoutDragger","Blockly.FlyoutDragger","flyout","getWorkspace","scrollbar_","horizontalLayout_","Blockly.FlyoutDragger.prototype.drag","Action","Blockly.Action","desc","Blockly.navigation","loggingCallback","STATE_FLYOUT","STATE_WS","STATE_TOOLBOX","WS_MOVE_DISTANCE","currentState_","actionNames","IN","OUT","MARK","DISCONNECT","EXIT","TOGGLE_KEYBOARD_NAV","MOVE_WS_CURSOR_UP","MOVE_WS_CURSOR_DOWN","MOVE_WS_CURSOR_LEFT","MOVE_WS_CURSOR_RIGHT","MARKER_NAME","getMarker","Blockly.navigation.getMarker","getNavigationWorkspace","Blockly.navigation.getNavigationWorkspace","focusToolbox_","Blockly.navigation.focusToolbox_","resetFlyout_","getCurNode","markAtCursor_","selectFirstCategory","focusFlyout_","Blockly.navigation.focusFlyout_","getFlyout","getFlyoutCursor_","setCurNode","focusWorkspace_","Blockly.navigation.focusWorkspace_","cursor","getCursor","reset","wsCoord","wsNode","Blockly.navigation.getFlyoutCursor_","insertFromFlyout","Blockly.navigation.insertFromFlyout","curBlock","createBlock","modify_","warn_","removeMark_","Blockly.navigation.resetFlyout_","shouldHide","modifyWarn_","Blockly.navigation.modifyWarn_","markerNode","cursorNode","markerType","cursorType","moveBlockToWorkspace_","Blockly.navigation.moveBlockToWorkspace_","Blockly.navigation.modify_","cursorLoc","markerLoc","insertBlock","disconnectChild_","Blockly.navigation.disconnectChild_","movingConnection","destConnection","movingBlock","destBlock","getInferiorConnection_","moveAndConnect_","Blockly.navigation.moveAndConnect_","Blockly.navigation.getInferiorConnection_","getSuperiorConnection_","Blockly.navigation.getSuperiorConnection_","Blockly.navigation.connect_","movingInferior","destSuperior","movingSuperior","destInferior","Blockly.navigation.insertBlock","inputConnection","disconnectBlocks_","Blockly.navigation.disconnectBlocks_","curNode","curConnection","superiorConnection","log_","bumpAwayFrom","connectionNode","Blockly.navigation.markAtCursor_","Blockly.navigation.removeMark_","marker","setState","Blockly.navigation.setState","newState","moveCursorOnBlockDelete","Blockly.navigation.moveCursorOnBlockDelete","deletedBlock","moveCursorOnBlockMutation","Blockly.navigation.moveCursorOnBlockMutation","mutatedBlock","enableKeyboardAccessibility","Blockly.navigation.enableKeyboardAccessibility","keyboardAccessibilityMode","disableKeyboardAccessibility","Blockly.navigation.disableKeyboardAccessibility","Blockly.navigation.log_","Blockly.navigation.warn_","error_","Blockly.navigation.error_","onKeyPress","Blockly.navigation.onKeyPress","onBlocklyAction","Blockly.navigation.onBlocklyAction","actionHandled","READONLY_ACTION_LIST","handleActions_","Blockly.navigation.handleActions_","toolboxOnAction_","workspaceOnAction_","flyoutOnAction_","Blockly.navigation.flyoutOnAction_","Blockly.navigation.toolboxOnAction_","moveWSCursor_","Blockly.navigation.moveWSCursor_","xDirection","yDirection","Blockly.navigation.workspaceOnAction_","handleEnterForWS_","Blockly.navigation.handleEnterForWS_","showEditor","Gesture","Blockly.Gesture","creatorWorkspace","mouseDownXY_","currentDragDeltaXY_","startWorkspace_","targetBlock_","startBlock_","startField_","startBubble_","creatorWorkspace_","isDraggingBubble_","isDraggingBlock_","isDraggingWorkspace_","hasExceededDragRadius_","mostRecentEvent_","flyout_","workspaceDragger_","blockDragger_","bubbleDragger_","onUpWrapper_","onMoveWrapper_","isEnding_","hasStarted_","calledUpdateIsDragging_","healStack_","Blockly.Gesture.prototype.dispose","clearGesture","updateFromEvent_","Blockly.Gesture.prototype.updateFromEvent_","currentXY","updateDragDelta_","changed","updateIsDragging_","Blockly.Gesture.prototype.updateDragDelta_","currentDragDelta","limitRadius","FLYOUT_DRAG_RADIUS","DRAG_RADIUS","updateIsDraggingFromFlyout_","Blockly.Gesture.prototype.updateIsDraggingFromFlyout_","isBlockCreatable_","isScrollable","isDragTowardWorkspace","targetWorkspace","updateScreenCalculationsIfScrolled","select","updateIsDraggingBubble_","Blockly.Gesture.prototype.updateIsDraggingBubble_","startDraggingBubble_","updateIsDraggingBlock_","Blockly.Gesture.prototype.updateIsDraggingBlock_","startDraggingBlock_","updateIsDraggingWorkspace_","Blockly.Gesture.prototype.updateIsDraggingWorkspace_","wsMovable","isDraggable","Blockly.Gesture.prototype.updateIsDragging_","Blockly.Gesture.prototype.startDraggingBlock_","Blockly.Gesture.prototype.startDraggingBubble_","doStart","Blockly.Gesture.prototype.doStart","cancel","shiftKey","pointerType","altKey","metaKey","Blockly.Gesture.prototype.bindMouseEvents","handleMove","handleUp","Blockly.Gesture.prototype.handleMove","Blockly.Gesture.prototype.handleUp","isBubbleClick_","doBubbleClick_","isFieldClick_","doFieldClick_","isBlockClick_","doBlockClick_","isWorkspaceClick_","doWorkspaceClick_","Blockly.Gesture.prototype.cancel","Blockly.Gesture.prototype.handleRightClick","bringBlockToFront_","handleWsStart","Blockly.Gesture.prototype.handleWsStart","setStartWorkspace_","fireWorkspaceClick_","Blockly.Gesture.prototype.fireWorkspaceClick_","clickEvent","handleFlyoutStart","Blockly.Gesture.prototype.handleFlyoutStart","setStartFlyout_","handleBlockStart","Blockly.Gesture.prototype.handleBlockStart","setStartBlock","Blockly.Gesture.prototype.handleBubbleStart","setStartBubble","Blockly.Gesture.prototype.doBubbleClick_","setFocus","Blockly.Gesture.prototype.doFieldClick_","Blockly.Gesture.prototype.doBlockClick_","autoClose","Blockly.Gesture.prototype.doWorkspaceClick_","screenCoord","Blockly.Gesture.prototype.bringBlockToFront_","setStartField","Blockly.Gesture.prototype.setStartField","Blockly.Gesture.prototype.setStartBubble","Blockly.Gesture.prototype.setStartBlock","setTargetBlock_","Blockly.Gesture.prototype.setTargetBlock_","Blockly.Gesture.prototype.setStartWorkspace_","Blockly.Gesture.prototype.setStartFlyout_","Blockly.Gesture.prototype.isBubbleClick_","hasStartBubble","Blockly.Gesture.prototype.isBlockClick_","hasStartBlock","Blockly.Gesture.prototype.isFieldClick_","fieldClickable","Blockly.Gesture.prototype.isWorkspaceClick_","Blockly.Gesture.prototype.isDragging","hasStarted","Blockly.Gesture.prototype.hasStarted","Blockly.Gesture.prototype.getInsertionMarkers","inProgress","Blockly.Gesture.inProgress","currentGesture_","Field","Blockly.Field","opt_validator","opt_config","value_","DEFAULT_VALUE","tooltip_","validator_","size_","constants_","mouseDownWrapper_","textContent_","textElement_","borderRect_","fieldGroup_","markerSvg_","cursorSvg_","configure_","setValidator","maxDisplayLength","isDirty_","visible_","clickTarget_","NBSP","EDITABLE","SERIALIZABLE","Blockly.Field.prototype.configure_","config","setSourceBlock","Blockly.Field.prototype.setSourceBlock","Blockly.Field.prototype.getConstants","Blockly.Field.prototype.getSourceBlock","init","Blockly.Field.prototype.init","initView","updateEditable","bindEvents_","Blockly.Field.prototype.initView","createBorderRect_","createTextElement_","Blockly.Field.prototype.initModel","Blockly.Field.prototype.createBorderRect_","FIELD_BORDER_RECT_RADIUS","Blockly.Field.prototype.createTextElement_","FIELD_TEXT_BASELINE_CENTER","Blockly.Field.prototype.bindEvents_","getClickTarget_","onMouseDown_","Blockly.Field.prototype.fromXml","fieldElement","Blockly.Field.prototype.toXml","Blockly.Field.prototype.dispose","WidgetDiv","Blockly.Field.prototype.updateEditable","CURSOR","Blockly.Field.prototype.isClickable","showEditor_","isCurrentlyEditable","Blockly.Field.prototype.isCurrentlyEditable","Blockly.Field.prototype.isSerializable","Blockly.Field.prototype.isVisible","Blockly.Field.prototype.setVisible","root","Blockly.Field.prototype.setValidator","handler","getValidator","Blockly.Field.prototype.getValidator","classValidator","Blockly.Field.prototype.classValidator","callValidator","Blockly.Field.prototype.callValidator","classResult","userValidator","userResult","Blockly.Field.prototype.getSvgRoot","applyColour","Blockly.Field.prototype.applyColour","Blockly.Field.prototype.render_","nodeValue","getDisplayText_","updateSize_","Blockly.Field.prototype.showEditor","opt_e","updateWidth","Blockly.Field.prototype.updateWidth","Blockly.Field.prototype.updateSize_","opt_margin","constants","xOffset","FIELD_BORDER_RECT_X_PADDING","totalWidth","totalHeight","FIELD_TEXT_HEIGHT","FIELD_TEXT_FONTSIZE","FIELD_TEXT_FONTWEIGHT","FIELD_TEXT_FONTFAMILY","FIELD_BORDER_RECT_HEIGHT","positionTextElement_","positionBorderRect_","Blockly.Field.prototype.positionTextElement_","halfHeight","FIELD_TEXT_BASELINE","Blockly.Field.prototype.positionBorderRect_","Blockly.Field.prototype.getSize","Blockly.Field.prototype.getScaledBBox","getAbsoluteXY_","Blockly.Field.prototype.getDisplayText_","Blockly.Field.prototype.getText","getText_","setText","Blockly.Field.prototype.setText","_newText","markDirty","Blockly.Field.prototype.markDirty","forceRerender","Blockly.Field.prototype.forceRerender","bumpNeighbours","updateMarkers_","Blockly.Field.prototype.setValue","validatedValue","doClassValidation_","processValidation_","localValidator","doValueUpdate_","Blockly.Field.prototype.processValidation_","doValueInvalid_","Blockly.Field.prototype.getValue","Blockly.Field.prototype.doClassValidation_","opt_newValue","Blockly.Field.prototype.doValueUpdate_","Blockly.Field.prototype.doValueInvalid_","_invalidValue","Blockly.Field.prototype.onMouseDown_","Blockly.Field.prototype.setTooltip","newTip","clickTarget","Blockly.Field.prototype.getClickTarget_","Blockly.Field.prototype.getAbsoluteXY_","referencesVariables","Blockly.Field.prototype.referencesVariables","Blockly.Field.prototype.getParentInput","fieldRows","getFlipRtl","Blockly.Field.prototype.getFlipRtl","isTabNavigable","Blockly.Field.prototype.isTabNavigable","Blockly.Field.prototype.onBlocklyAction","_action","setCursorSvg","Blockly.Field.prototype.setCursorSvg","cursorSvg","setMarkerSvg","Blockly.Field.prototype.setMarkerSvg","markerSvg","Blockly.Field.prototype.updateMarkers_","draw","FieldLabel","Blockly.FieldLabel","opt_value","class_","Blockly.FieldLabel.fromJson","Blockly.FieldLabel.prototype.configure_","Blockly.FieldLabel.prototype.initView","Blockly.FieldLabel.prototype.doClassValidation_","setClass","Blockly.FieldLabel.prototype.setClass","cssClass","Input","Blockly.Input","align","Blockly.Input.prototype.getSourceBlock","appendField","Blockly.Input.prototype.appendField","opt_name","insertFieldAt","Blockly.Input.prototype.insertFieldAt","fieldDropdown","prefixField","suffixField","removeField","Blockly.Input.prototype.removeField","opt_quiet","Blockly.Input.prototype.isVisible","Blockly.Input.prototype.setVisible","renderList","startTrackingAll","stopTrackingAll","Blockly.Input.prototype.markDirty","Blockly.Input.prototype.setCheck","setAlign","Blockly.Input.prototype.setAlign","Blockly.Input.prototype.init","Blockly.Input.prototype.dispose","Blockly.Block","Generator","contextMenu","parentBlock_","childBlocks_","editable_","movable_","deletable_","collapsed_","isShadow_","outputShape_","xy_","isFlyout","isInMutator","isInsertionMarker_","hat","statementInputCount","onchange","setOnChange","COLLAPSED_FIELD_NAME","hue_","colour_","styleName_","Blockly.Block.prototype.dispose","onchangeWrapper_","connections","Blockly.Block.prototype.initModel","Blockly.Block.prototype.unplug","opt_healStack","unplugFromRow_","unplugFromStack_","Blockly.Block.prototype.unplugFromRow_","getOnlyValueConnection_","Blockly.Block.prototype.getOnlyValueConnection_","Blockly.Block.prototype.unplugFromStack_","previousTarget","nextTarget","Blockly.Block.prototype.getConnections_","_all","myConnections","Blockly.Block.prototype.lastConnectionInStack","Blockly.Block.prototype.bumpNeighbours","Blockly.Block.prototype.getParent","Blockly.Block.prototype.getInputWithBlock","getSurroundParent","Blockly.Block.prototype.getSurroundParent","prevBlock","Blockly.Block.prototype.getNextBlock","Blockly.Block.prototype.getPreviousBlock","getFirstStatementConnection","Blockly.Block.prototype.getFirstStatementConnection","Blockly.Block.prototype.getRootBlock","Blockly.Block.prototype.getTopStackBlock","previous","Blockly.Block.prototype.getChildren","Blockly.Block.prototype.setParent","newParent","Blockly.Block.prototype.getDescendants","childBlocks","Blockly.Block.prototype.isDeletable","Blockly.Block.prototype.setDeletable","Blockly.Block.prototype.isMovable","Blockly.Block.prototype.setMovable","isDuplicatable","Blockly.Block.prototype.isDuplicatable","Blockly.Block.prototype.isShadow","Blockly.Block.prototype.setShadow","Blockly.Block.prototype.isInsertionMarker","Blockly.Block.prototype.setInsertionMarker","insertionMarker","Blockly.Block.prototype.isEditable","Blockly.Block.prototype.setEditable","isDisposed","Blockly.Block.prototype.isDisposed","Blockly.Block.prototype.getMatchingConnection","otherBlock","conn","otherConnections","setHelpUrl","Blockly.Block.prototype.setHelpUrl","helpUrl","Blockly.Block.prototype.setTooltip","getColour","Blockly.Block.prototype.getColour","getStyleName","Blockly.Block.prototype.getStyleName","getHue","Blockly.Block.prototype.getHue","Blockly.Block.prototype.setColour","parsed","setStyle","Blockly.Block.prototype.setStyle","Blockly.Block.prototype.setOnChange","onchangeFn","Blockly.Block.prototype.getField","getVars","Blockly.Block.prototype.getVars","vars","Blockly.Block.prototype.getVarModels","model","Blockly.Block.prototype.updateVarName","refreshVariableName","Blockly.Block.prototype.renameVarById","oldId","newId","Blockly.Block.prototype.getFieldValue","setFieldValue","Blockly.Block.prototype.setFieldValue","setPreviousStatement","Blockly.Block.prototype.setPreviousStatement","newBoolean","opt_check","makeConnection_","setNextStatement","Blockly.Block.prototype.setNextStatement","setOutput","Blockly.Block.prototype.setOutput","Blockly.Block.prototype.setInputsInline","Blockly.Block.prototype.getInputsInline","setOutputShape","Blockly.Block.prototype.setOutputShape","outputShape","getOutputShape","Blockly.Block.prototype.getOutputShape","setDisabled","Blockly.Block.prototype.setDisabled","Blockly.Block.prototype.isEnabled","Blockly.Block.prototype.setEnabled","enabled","getInheritedDisabled","Blockly.Block.prototype.getInheritedDisabled","ancestor","Blockly.Block.prototype.isCollapsed","Blockly.Block.prototype.setCollapsed","Blockly.Block.prototype.toString","opt_maxLength","opt_emptyToken","shouldAddParentheses","checks","checkRoot","rootNode","emptyFieldPlaceholder","prevNavigateFields","l","appendValueInput","Blockly.Block.prototype.appendValueInput","appendInput_","appendStatementInput","Blockly.Block.prototype.appendStatementInput","appendDummyInput","Blockly.Block.prototype.appendDummyInput","jsonInit","Blockly.Block.prototype.jsonInit","warningPrefix","jsonInitStyle_","jsonInitColour_","interpolate_","localizedText","localizedValue","extensionNames","extensionName","Blockly.Block.prototype.jsonInitColour_","Blockly.Block.prototype.jsonInitStyle_","styleError","Blockly.Block.prototype.mixin","opt_disableCheck","overwrites","JSON","stringify","Blockly.Block.prototype.interpolate_","args","lastDummyAlign","indexDup","indexCount","elements","token","dummyInput","alignmentLookup","fieldStack","altRepeat","alignment","Blockly.Block.prototype.appendInput_","moveInputBefore","Blockly.Block.prototype.moveInputBefore","refName","inputIndex","refIndex","moveNumberedInputBefore","Blockly.Block.prototype.moveNumberedInputBefore","RangeError","removeInput","Blockly.Block.prototype.removeInput","Blockly.Block.prototype.getInput","getInputTargetBlock","Blockly.Block.prototype.getInputTargetBlock","Blockly.Block.prototype.getCommentText","Blockly.Block.prototype.setCommentText","setWarningText","Blockly.Block.prototype.setWarningText","_text","_opt_id","Blockly.Block.prototype.setMutator","_mutator","Blockly.Block.prototype.getRelativeToSurfaceXY","Blockly.Block.prototype.moveBy","Blockly.Block.prototype.makeConnection_","Blockly.Block.prototype.allInputsFilled","Blockly.Block.prototype.toDevString","Blockly.blockRendering","blockRendering","IPathObject","Blockly.blockRendering.IPathObject","_root","_constants","Blockly.utils.aria","aria","ARIA_PREFIX_","ROLE_ATTRIBUTE_","Role","GRID","GRIDCELL","GROUP","LISTBOX","MENU","MENUITEM","MENUITEMCHECKBOX","OPTION","PRESENTATION","ROW","TREE","TREEITEM","State","ACTIVEDESCENDANT","COLCOUNT","DISABLED","EXPANDED","INVALID","LABEL","LABELLEDBY","LEVEL","ORIENTATION","POSINSET","ROWCOUNT","SELECTED","SETSIZE","VALUEMAX","VALUEMIN","setRole","Blockly.utils.aria.setRole","roleName","Blockly.utils.aria.setState","stateName","Menu","Blockly.Menu","menuItems_","roleName_","onKeyDownHandler_","mouseLeaveHandler_","mouseEnterHandler_","clickHandler_","mouseOverHandler_","highlightedItem_","openingCoords","Blockly.Menu.prototype.addChild","menuItem","Blockly.Menu.prototype.render","tabIndex","handleMouseOver_","handleClick_","handleMouseEnter_","handleMouseLeave_","handleKeyEvent_","Blockly.Menu.prototype.getElement","focus","Blockly.Menu.prototype.focus","preventScroll","blur_","Blockly.Menu.prototype.blur_","blur","Blockly.Menu.prototype.setRole","Blockly.Menu.prototype.dispose","getMenuItem_","Blockly.Menu.prototype.getMenuItem_","menuElem","parentElement","setHighlighted","Blockly.Menu.prototype.setHighlighted","item","currentHighlighted","highlightNext","Blockly.Menu.prototype.highlightNext","highlightHelper_","highlightPrevious","Blockly.Menu.prototype.highlightPrevious","highlightFirst_","Blockly.Menu.prototype.highlightFirst_","highlightLast_","Blockly.Menu.prototype.highlightLast_","Blockly.Menu.prototype.highlightHelper_","startIndex","Blockly.Menu.prototype.handleMouseOver_","Blockly.Menu.prototype.handleClick_","oldCoords","newCoords","performAction","Blockly.Menu.prototype.handleMouseEnter_","Blockly.Menu.prototype.handleMouseLeave_","Blockly.Menu.prototype.handleKeyEvent_","highlighted","Blockly.Menu.prototype.getSize","menuDom","menuSize","scrollHeight","MenuItem","Blockly.MenuItem","enabled_","highlight_","checked_","checkable_","actionHandler_","Blockly.MenuItem.prototype.createDom","checkbox","contentDom","Blockly.MenuItem.prototype.dispose","Blockly.MenuItem.prototype.getElement","Blockly.MenuItem.prototype.getId","Blockly.MenuItem.prototype.getValue","setRightToLeft","Blockly.MenuItem.prototype.setRightToLeft","Blockly.MenuItem.prototype.setRole","setCheckable","Blockly.MenuItem.prototype.setCheckable","checkable","setChecked","Blockly.MenuItem.prototype.setChecked","checked","Blockly.MenuItem.prototype.setHighlighted","nameDep","Blockly.MenuItem.prototype.isEnabled","Blockly.MenuItem.prototype.setEnabled","Blockly.MenuItem.prototype.performAction","onAction","Blockly.MenuItem.prototype.onAction","Blockly.ContextMenu","ContextMenu","currentBlock","menu_","Blockly.ContextMenu.show","menu","populate_","position_","Blockly.ContextMenu.populate_","option","actionHandler","_menuItem","Blockly.ContextMenu.position_","viewportBBox","anchorBBox","createWidget_","positionWithAnchor","Blockly.ContextMenu.createWidget_","Blockly.ContextMenu.hide","Blockly.ContextMenu.dispose","callbackFactory","Blockly.ContextMenu.callbackFactory","blockDeleteOption","Blockly.ContextMenu.blockDeleteOption","descendantCount","deleteOption","blockHelpOption","Blockly.ContextMenu.blockHelpOption","helpOption","showHelp","blockDuplicateOption","Blockly.ContextMenu.blockDuplicateOption","duplicateOption","duplicate","blockCommentOption","Blockly.ContextMenu.blockCommentOption","commentOption","commentOption.callback","commentDeleteOption","Blockly.ContextMenu.commentDeleteOption","commentDuplicateOption","Blockly.ContextMenu.commentDuplicateOption","workspaceCommentOption","Blockly.ContextMenu.workspaceCommentOption","wsCommentOption","wsCommentOption.callback","DEFAULT_SIZE","finalOffset","RenderedConnection","Blockly.RenderedConnection","db_","dbOpposite_","offsetInBlock_","trackedState_","TrackedState","WILL_TRACK","UNTRACKED","TRACKED","Blockly.RenderedConnection.prototype.dispose","removeConnection","Blockly.RenderedConnection.prototype.getSourceBlock","Blockly.RenderedConnection.prototype.targetBlock","distanceFrom","Blockly.RenderedConnection.prototype.distanceFrom","Blockly.RenderedConnection.prototype.bumpAwayFrom","staticConnection","addSelect","removeSelect","Blockly.RenderedConnection.prototype.moveTo","addConnection","Blockly.RenderedConnection.prototype.moveBy","moveToOffset","Blockly.RenderedConnection.prototype.moveToOffset","blockTL","setOffsetInBlock","Blockly.RenderedConnection.prototype.setOffsetInBlock","getOffsetInBlock","Blockly.RenderedConnection.prototype.getOffsetInBlock","tighten","Blockly.RenderedConnection.prototype.tighten","svgRoot","Blockly.RenderedConnection.prototype.closest","maxLimit","searchForClosest","Blockly.RenderedConnection.prototype.highlight","renderConstants","shapeFor","yLen","TAB_OFFSET_FROM_TOP","svgPaths","lineOnAxis","pathDown","xLen","NOTCH_OFFSET_LEFT","CORNER_RADIUS","pathLeft","highlightedPath_","Blockly.RenderedConnection.prototype.unhighlight","setTracking","Blockly.RenderedConnection.prototype.setTracking","doTracking","Blockly.RenderedConnection.prototype.stopTrackingAll","Blockly.RenderedConnection.prototype.startTrackingAll","Blockly.RenderedConnection.prototype.isConnectionAllowed","maxRadius","Blockly.RenderedConnection.prototype.onFailedConnect","Blockly.RenderedConnection.prototype.disconnectInternal_","Blockly.RenderedConnection.prototype.respawnShadow_","Blockly.RenderedConnection.prototype.neighbours","getNeighbours","Blockly.RenderedConnection.prototype.connect_","parentRendered","childRendered","Blockly.RenderedConnection.prototype.onCheckChanged_","Marker","Blockly.Marker","drawer_","curNode_","setDrawer","Blockly.Marker.prototype.setDrawer","drawer","getDrawer","Blockly.Marker.prototype.getDrawer","Blockly.Marker.prototype.getCurNode","Blockly.Marker.prototype.setCurNode","oldNode","Blockly.Marker.prototype.draw","Blockly.Marker.prototype.hide","Blockly.Marker.prototype.dispose","Cursor","Blockly.Cursor","Blockly.Cursor.prototype.next","Blockly.Cursor.prototype.in","Blockly.Cursor.prototype.prev","Blockly.Cursor.prototype.out","Blockly.Cursor.prototype.onBlocklyAction","BasicCursor","Blockly.BasicCursor","Blockly.BasicCursor.prototype.next","getNextNode_","validNode_","Blockly.BasicCursor.prototype.in","Blockly.BasicCursor.prototype.prev","getPreviousNode_","Blockly.BasicCursor.prototype.out","Blockly.BasicCursor.prototype.getNextNode_","isValid","siblingOrParent","findSiblingOrParent_","Blockly.BasicCursor.prototype.getPreviousNode_","getRightMostChild_","Blockly.BasicCursor.prototype.validNode_","Blockly.BasicCursor.prototype.findSiblingOrParent_","nextNode","Blockly.BasicCursor.prototype.getRightMostChild_","TabNavigateCursor","Blockly.TabNavigateCursor","Blockly.TabNavigateCursor.prototype.validNode_","BlockSvg","Blockly.BlockSvg","getBlockStyle","pathObject","makePathObject","renderIsInProgress_","useDragSurface_","svgPath","warningTextDb_","INLINE","COLLAPSED_WARNING_ID","Blockly.BlockSvg.prototype.initSvg","createIcon","updateMovable","eventsInit_","getCanvas","getColourSecondary","Blockly.BlockSvg.prototype.getColourSecondary","colourSecondary","getColourTertiary","Blockly.BlockSvg.prototype.getColourTertiary","colourTertiary","getColourShadow","Blockly.BlockSvg.prototype.getColourShadow","getColourBorder","Blockly.BlockSvg.prototype.getColourBorder","colourBorder","colourLight","colourDark","Blockly.BlockSvg.prototype.select","Blockly.BlockSvg.prototype.unselect","commentIcon_","Blockly.BlockSvg.prototype.getIcons","Blockly.BlockSvg.prototype.setParent","oldParent","oldXY","Blockly.BlockSvg.prototype.getRelativeToSurfaceXY","dragSurfaceGroup","surfaceTranslation","Blockly.BlockSvg.prototype.moveBy","eventsEnabled","Blockly.BlockSvg.prototype.translate","Blockly.BlockSvg.prototype.moveToDragSurface","clearTransformAttributes_","Blockly.BlockSvg.prototype.moveTo","curXY","Blockly.BlockSvg.prototype.moveOffDragSurface","Blockly.BlockSvg.prototype.moveDuringDrag","Blockly.BlockSvg.prototype.clearTransformAttributes_","snapToGrid","Blockly.BlockSvg.prototype.snapToGrid","getGrid","getBoundingRectangle","Blockly.BlockSvg.prototype.getBoundingRectangle","blockBounds","Blockly.BlockSvg.prototype.markDirty","Blockly.BlockSvg.prototype.setCollapsed","updateCollapsed_","Blockly.BlockSvg.prototype.updateCollapsed_","collapsedInputName","collapsedFieldName","tab","Blockly.BlockSvg.prototype.tab","tabCursor","currentNode","nextField","Blockly.BlockSvg.prototype.onMouseDown_","Blockly.BlockSvg.prototype.showHelp","open","generateContextMenu","Blockly.BlockSvg.prototype.generateContextMenu","menuOptions","expandOption","expandOption.callback","inlineOption","isInline","inlineOption.callback","collapseOption","collapseOption.callback","disableOption","customContextMenu","Blockly.BlockSvg.prototype.showContextMenu","Blockly.BlockSvg.prototype.moveConnections","computeIconLocation","Blockly.BlockSvg.prototype.setDragging","Blockly.BlockSvg.prototype.setMovable","Blockly.BlockSvg.prototype.setEditable","Blockly.BlockSvg.prototype.setShadow","Blockly.BlockSvg.prototype.setInsertionMarker","INSERTION_MARKER_COLOUR","updateInsertionMarker","Blockly.BlockSvg.prototype.getSvgRoot","Blockly.BlockSvg.prototype.dispose","animate","blockWorkspace","cancelCurrentGesture","n","toCopyData","Blockly.BlockSvg.prototype.toCopyData","typeCounts","Blockly.BlockSvg.prototype.applyColour","Blockly.BlockSvg.prototype.updateDisabled","Blockly.BlockSvg.prototype.getCommentIcon","Blockly.BlockSvg.prototype.setCommentText","shouldHaveComment","updateText","Blockly.BlockSvg.prototype.setWarningText","Warning","thisBlock","changedState","collapsedParent","newText","Blockly.BlockSvg.prototype.setMutator","setBlock","Blockly.BlockSvg.prototype.setDisabled","Blockly.BlockSvg.prototype.setEnabled","Blockly.BlockSvg.prototype.setHighlighted","updateHighlighted","Blockly.BlockSvg.prototype.addSelect","updateSelected","Blockly.BlockSvg.prototype.removeSelect","Blockly.BlockSvg.prototype.setDeleteStyle","updateDraggingDelete","Blockly.BlockSvg.prototype.getColour","colourPrimary","Blockly.BlockSvg.prototype.setColour","styleObj","getBlockStyleForColour","Blockly.BlockSvg.prototype.setStyle","Blockly.BlockSvg.prototype.bringToFront","Blockly.BlockSvg.prototype.setPreviousStatement","Blockly.BlockSvg.prototype.setNextStatement","Blockly.BlockSvg.prototype.setOutput","Blockly.BlockSvg.prototype.setInputsInline","Blockly.BlockSvg.prototype.removeInput","removed","Blockly.BlockSvg.prototype.moveNumberedInputBefore","Blockly.BlockSvg.prototype.appendInput_","Blockly.BlockSvg.prototype.setConnectionTracking","track","Blockly.BlockSvg.prototype.getConnections_","all","Blockly.BlockSvg.prototype.lastConnectionInStack","Blockly.BlockSvg.prototype.getMatchingConnection","Blockly.BlockSvg.prototype.makeConnection_","Blockly.BlockSvg.prototype.bumpNeighbours","Blockly.BlockSvg.prototype.scheduleSnapAndBump","Blockly.BlockSvg.prototype.positionNearConnection","sourceConnection","Blockly.BlockSvg.prototype.getParent","Blockly.BlockSvg.prototype.getRootBlock","Blockly.BlockSvg.prototype.render","opt_bubble","updateConnectionLocations_","Blockly.BlockSvg.prototype.updateMarkers_","Blockly.BlockSvg.prototype.updateConnectionLocations_","Blockly.BlockSvg.prototype.setCursorSvg","Blockly.BlockSvg.prototype.setMarkerSvg","Blockly.BlockSvg.prototype.getHeightWidth","nextHeightWidth","tabHeight","NOTCH_HEIGHT","Blockly.BlockSvg.prototype.fadeForReplacement","add","updateReplacementFade","Blockly.BlockSvg.prototype.highlightShapeForInput","updateShapeForInputHighlight","useDebugger","Blockly.blockRendering.register","rendererClass","Blockly.blockRendering.unregister","startDebugger","Blockly.blockRendering.startDebugger","stopDebugger","Blockly.blockRendering.stopDebugger","Blockly.blockRendering.init","opt_rendererOverrides","ConnectionDB","Blockly.ConnectionDB","connections_","Blockly.ConnectionDB.prototype.addConnection","yPos","calculateIndexForYPos_","findIndexOfConnection_","Blockly.ConnectionDB.prototype.findIndexOfConnection_","bestGuess","pointerMin","pointerMax","Blockly.ConnectionDB.prototype.calculateIndexForYPos_","pointerMid","Blockly.ConnectionDB.prototype.removeConnection","Blockly.ConnectionDB.prototype.getNeighbours","checkConnection_","yIndex","currentX","db","currentY","isInYRange_","Blockly.ConnectionDB.prototype.isInYRange_","baseY","Blockly.ConnectionDB.prototype.searchForClosest","baseX","closestIndex","bestConnection","bestRadius","Blockly.ConnectionDB.init","dbList","MarkerManager","Blockly.MarkerManager","cursor_","markers_","registerMarker","Blockly.MarkerManager.prototype.registerMarker","unregisterMarker","makeMarkerDrawer","Blockly.MarkerManager.prototype.unregisterMarker","Blockly.MarkerManager.prototype.getCursor","Blockly.MarkerManager.prototype.getMarker","Blockly.MarkerManager.prototype.setCursor","Blockly.MarkerManager.prototype.setCursorSvg","getBlockCanvas","Blockly.MarkerManager.prototype.setMarkerSvg","updateMarkers","Blockly.MarkerManager.prototype.updateMarkers","Blockly.MarkerManager.prototype.dispose","markerIds","markerId","ThemeManager","Blockly.ThemeManager","theme_","subscribedWorkspaces_","componentDB_","Blockly.ThemeManager.prototype.getTheme","setTheme","Blockly.ThemeManager.prototype.setTheme","prevTheme","refreshTheme","component","subscribeWorkspace","Blockly.ThemeManager.prototype.subscribeWorkspace","unsubscribeWorkspace","Blockly.ThemeManager.prototype.unsubscribeWorkspace","Blockly.ThemeManager.prototype.subscribe","Blockly.ThemeManager.prototype.unsubscribe","componentNames","Blockly.ThemeManager.prototype.dispose","TouchGesture","Blockly.TouchGesture","isMultiTouch_","cachedPoints_","startDistance_","previousScale_","isPinchZoomEnabled_","onStartWrapper_","ZOOM_IN_MULTIPLIER","ZOOM_OUT_MULTIPLIER","Blockly.TouchGesture.prototype.doStart","handleTouchStart","Blockly.TouchGesture.prototype.bindMouseEvents","Blockly.TouchGesture.prototype.handleStart","isMultiTouch","Blockly.TouchGesture.prototype.handleMove","handleTouchMove","Blockly.TouchGesture.prototype.handleUp","handleTouchEnd","Blockly.TouchGesture.prototype.isMultiTouch","Blockly.TouchGesture.prototype.dispose","Blockly.TouchGesture.prototype.handleTouchStart","getTouchPoint","pointers","point0","point1","Blockly.TouchGesture.prototype.handleTouchMove","handlePinch_","Blockly.TouchGesture.prototype.handlePinch_","moveDistance","gestureScale","Blockly.TouchGesture.prototype.handleTouchEnd","Blockly.TouchGesture.prototype.getTouchPoint","WorkspaceAudio","Blockly.WorkspaceAudio","parentWorkspace_","SOUNDS_","lastSound_","Blockly.WorkspaceAudio.prototype.dispose","load","Blockly.WorkspaceAudio.prototype.load","filenames","audioTest","sound","filename","ext","canPlayType","preload","Blockly.WorkspaceAudio.prototype.preload","volume","playPromise","then","pause","catch","Blockly.WorkspaceAudio.prototype.play","opt_volume","now","mySound","WorkspaceSvg","Blockly.WorkspaceSvg","opt_blockDragSurface","opt_wsDragSurface","getTopLevelWorkspaceMetrics_","setTopLevelWorkspaceMetrics_","blockDragSurface_","workspaceDragSurface_","useWorkspaceDragSurface_","highlightedBlocks_","audioManager_","grid_","markerManager_","toolboxCategoryCallbacks_","flyoutButtonCallbacks_","flyoutCategory","registerToolboxCategoryCallback","VariablesDynamic","Procedures","mutatorOpenListener","themeManager_","renderer_","cachedParentSvg_","topBoundedElements_","resizeHandlerWrapper_","resizesEnabled_","startScrollX","startScrollY","dragDeltaXY_","toolbox_","isDragSurfaceActive_","injectionDiv_","lastRecordedPageScroll_","inverseScreenCTM_","inverseScreenCTMDirty_","getMarkerManager","Blockly.WorkspaceSvg.prototype.getMarkerManager","Blockly.WorkspaceSvg.prototype.setCursorSvg","Blockly.WorkspaceSvg.prototype.setMarkerSvg","Blockly.WorkspaceSvg.prototype.getMarker","Blockly.WorkspaceSvg.prototype.getCursor","Blockly.WorkspaceSvg.prototype.getRenderer","Blockly.WorkspaceSvg.prototype.getThemeManager","Blockly.WorkspaceSvg.prototype.getTheme","Blockly.WorkspaceSvg.prototype.setTheme","Blockly.WorkspaceSvg.prototype.refreshTheme","refreshDom","updateBlockStyles_","refreshToolboxSelection","Blockly.WorkspaceSvg.prototype.updateBlockStyles_","updateBlockStyle","Blockly.WorkspaceSvg.prototype.getInverseScreenCTM","ctm","updateInverseScreenCTM","Blockly.WorkspaceSvg.prototype.updateInverseScreenCTM","Blockly.WorkspaceSvg.prototype.isVisible","Blockly.WorkspaceSvg.prototype.getSvgXY","Blockly.WorkspaceSvg.prototype.getOriginOffsetInPixels","Blockly.WorkspaceSvg.prototype.getInjectionDiv","Blockly.WorkspaceSvg.prototype.getBlockCanvas","svgBlockCanvas_","setResizeHandlerWrapper","Blockly.WorkspaceSvg.prototype.setResizeHandlerWrapper","Blockly.WorkspaceSvg.prototype.createDom","opt_backgroundClass","fill","svgBubbleCanvas_","onMouseWheel_","Toolbox","ToolboxClass","recordDeleteAreas","Blockly.WorkspaceSvg.prototype.dispose","zoomControls_","Blockly.WorkspaceSvg.prototype.newBlock","addTrashcan","Blockly.WorkspaceSvg.prototype.addTrashcan","Trashcan","svgTrashcan","addZoomControls","Blockly.WorkspaceSvg.prototype.addZoomControls","ZoomControls","svgZoomControls","addFlyout","Blockly.WorkspaceSvg.prototype.addFlyout","workspaceOptions","HorizontalFlyout","VerticalFlyout","Blockly.WorkspaceSvg.prototype.getFlyout","opt_own","Blockly.WorkspaceSvg.prototype.getToolbox","updateScreenCalculations_","Blockly.WorkspaceSvg.prototype.updateScreenCalculations_","Blockly.WorkspaceSvg.prototype.resizeContents","Blockly.WorkspaceSvg.prototype.resize","Blockly.WorkspaceSvg.prototype.updateScreenCalculationsIfScrolled","currScroll","Blockly.WorkspaceSvg.prototype.getCanvas","Blockly.WorkspaceSvg.prototype.getBubbleCanvas","Blockly.WorkspaceSvg.prototype.getParentSvg","Blockly.WorkspaceSvg.prototype.translate","translation","Blockly.WorkspaceSvg.prototype.resetDragSurface","trans","Blockly.WorkspaceSvg.prototype.setupDragSurface","previousElement","coord","Blockly.WorkspaceSvg.prototype.getBlockDragSurface","Blockly.WorkspaceSvg.prototype.getWidth","Blockly.WorkspaceSvg.prototype.setVisible","Blockly.WorkspaceSvg.prototype.render","imList","traceOn","Blockly.WorkspaceSvg.prototype.traceOn","highlightBlock","Blockly.WorkspaceSvg.prototype.highlightBlock","opt_state","paste","Blockly.WorkspaceSvg.prototype.paste","pasteWorkspaceComment_","pasteBlock_","Blockly.WorkspaceSvg.prototype.pasteBlock_","markedNode","markedLocation","collide","allBlocks","otherXY","Blockly.WorkspaceSvg.prototype.pasteWorkspaceComment_","xmlComment","commentX","commentY","Blockly.WorkspaceSvg.prototype.refreshToolboxSelection","refreshSelection","Blockly.WorkspaceSvg.prototype.renameVariableById","Blockly.WorkspaceSvg.prototype.deleteVariableById","Blockly.WorkspaceSvg.prototype.createVariable","newVar","Blockly.WorkspaceSvg.prototype.recordDeleteAreas","deleteAreaTrash_","getClientRect","deleteAreaToolbox_","Blockly.WorkspaceSvg.prototype.isDeleteArea","Blockly.WorkspaceSvg.prototype.onMouseDown_","Blockly.WorkspaceSvg.prototype.startDrag","point","Blockly.WorkspaceSvg.prototype.moveDrag","Blockly.WorkspaceSvg.prototype.isDragging","Blockly.WorkspaceSvg.prototype.isDraggable","isContentBounded","Blockly.WorkspaceSvg.prototype.isContentBounded","Blockly.WorkspaceSvg.prototype.isMovable","Blockly.WorkspaceSvg.prototype.onMouseWheel_","canWheelZoom","canWheelMove","scrollDelta","PIXELS_PER_ZOOM_STEP","Blockly.WorkspaceSvg.prototype.getBlocksBoundingBox","topElements","getTopBoundedElements","boundary","blockBoundary","cleanUp","Blockly.WorkspaceSvg.prototype.cleanUp","cursorY","Blockly.WorkspaceSvg.prototype.showContextMenu","addDeletableBlocks","deleteList","DELAY","undoOption","redoOption","cleanOption","hasExpandedBlocks","hasCollapsedBlocks","toggleOption","shouldCollapse","ms","configureContextMenu","updateToolbox","Blockly.WorkspaceSvg.prototype.updateToolbox","Blockly.WorkspaceSvg.prototype.markFocused","setBrowserFocus","Blockly.WorkspaceSvg.prototype.setBrowserFocus","activeElement","setActive","Blockly.WorkspaceSvg.prototype.zoom","amount","scaleChange","newScale","getCTM","center","setScale","zoomCenter","Blockly.WorkspaceSvg.prototype.zoomCenter","svgWidth","svgHeight","zoomToFit","Blockly.WorkspaceSvg.prototype.zoomToFit","workspaceWidth","workspaceHeight","blocksBox","blocksWidth","blocksHeight","getHeight","scrollCenter","beginCanvasTransition","Blockly.WorkspaceSvg.prototype.beginCanvasTransition","endCanvasTransition","Blockly.WorkspaceSvg.prototype.endCanvasTransition","Blockly.WorkspaceSvg.prototype.scrollCenter","centerOnBlock","Blockly.WorkspaceSvg.prototype.centerOnBlock","heightWidth","pixelX","multiplier","pixelY","Blockly.WorkspaceSvg.prototype.setScale","reflow","getScale","Blockly.WorkspaceSvg.prototype.getScale","Blockly.WorkspaceSvg.prototype.scroll","maxOffsetOfViewFromOriginX","maxOffsetOfViewFromOriginY","getDimensionsPx_","Blockly.WorkspaceSvg.getDimensionsPx_","getContentDimensions_","Blockly.WorkspaceSvg.getContentDimensions_","svgSize","getContentDimensionsBounded_","getContentDimensionsExact_","Blockly.WorkspaceSvg.getContentDimensionsExact_","blockBox","Blockly.WorkspaceSvg.getContentDimensionsBounded_","halfWidth","dimensions","Blockly.WorkspaceSvg.getTopLevelWorkspaceMetrics_","toolboxDimensions","flyoutDimensions","contentDimensions","toolboxWidth","toolboxHeight","flyoutWidth","flyoutHeight","Blockly.WorkspaceSvg.setTopLevelWorkspaceMetrics_","Blockly.WorkspaceSvg.prototype.getBlockById","Blockly.WorkspaceSvg.prototype.getTopBlocks","Blockly.WorkspaceSvg.prototype.addTopBlock","addTopBoundedElement","Blockly.WorkspaceSvg.prototype.removeTopBlock","removeTopBoundedElement","Blockly.WorkspaceSvg.prototype.addTopComment","Blockly.WorkspaceSvg.prototype.removeTopComment","Blockly.WorkspaceSvg.prototype.addTopBoundedElement","Blockly.WorkspaceSvg.prototype.removeTopBoundedElement","Blockly.WorkspaceSvg.prototype.getTopBoundedElements","Blockly.WorkspaceSvg.prototype.setResizesEnabled","reenabled","Blockly.WorkspaceSvg.prototype.clear","registerButtonCallback","Blockly.WorkspaceSvg.prototype.registerButtonCallback","getButtonCallback","Blockly.WorkspaceSvg.prototype.getButtonCallback","removeButtonCallback","Blockly.WorkspaceSvg.prototype.removeButtonCallback","Blockly.WorkspaceSvg.prototype.registerToolboxCategoryCallback","getToolboxCategoryCallback","Blockly.WorkspaceSvg.prototype.getToolboxCategoryCallback","removeToolboxCategoryCallback","Blockly.WorkspaceSvg.prototype.removeToolboxCategoryCallback","Blockly.WorkspaceSvg.prototype.getGesture","isStart","Blockly.WorkspaceSvg.prototype.clearGesture","Blockly.WorkspaceSvg.prototype.cancelCurrentGesture","Blockly.WorkspaceSvg.prototype.getAudioManager","Blockly.WorkspaceSvg.prototype.getGrid","Blockly.inject","checkBlockColourConstants","getElementById","querySelector","subContainer","blockDragSurface","workspaceDragSurface","createMainWorkspace_","init_","svgResize","Blockly.createDom_","Blockly.createMainWorkspace_","wsOptions","bumpObjects","workspaceMetrics","defaultMetrics","viewRight","viewBottom","blocksBoundingBox","contentRight","contentBottom","oldGroup","objectMetrics","topClamp","bottomClamp","newYPosition","leftClamp","rightClamp","newXPosition","Blockly.init_","workspaceResizeHandler","bindDocumentEvents_","scrollToStart","verticalSpacing","loadSounds_","Blockly.inject.bindDocumentEvents_","documentEventsBound_","onKeyDown","Blockly.inject.loadSounds_","audioMgr","soundBinds","unbindSounds","Blockly.Names","reservedWords","opt_variablePrefix","variablePrefix_","reservedDict_","splitWords","DEVELOPER_VARIABLE_TYPE","Blockly.Names.prototype.reset","dbReverse_","Blockly.Names.prototype.setVariableMap","getNameForUserVariable_","Blockly.Names.prototype.getNameForUserVariable_","getName","Blockly.Names.prototype.getName","normalized","safeName","getDistinctName","Blockly.Names.prototype.getDistinctName","safeName_","Blockly.Names.prototype.safeName_","encodeURI","Blockly.Names.equals","name1","name2","Blockly.Procedures","NAME_TYPE","DEFAULT_ARG","allProcedures","Blockly.Procedures.allProcedures","proceduresNoReturn","getProcedureDef","proceduresReturn","procTupleComparator_","Blockly.Procedures.procTupleComparator_","ta","tb","localeCompare","findLegalName","Blockly.Procedures.findLegalName","isLegalName_","Blockly.Procedures.isLegalName_","opt_exclude","isNameUsed","Blockly.Procedures.isNameUsed","procName","procedureBlock","rename","Blockly.Procedures.rename","legalName","renameProcedure","Blockly.Procedures.flyoutCategory","populateProcedures","procedureList","templateName","arg","xmlList","nameField","tuple","updateMutatorFlyout_","Blockly.Procedures.updateMutatorFlyout_","usedNames","argBlock","argValue","generateUniqueNameFromOptions","fieldContent","Blockly.Procedures.mutatorOpenListener","mutatorChangeListener_","Blockly.Procedures.mutatorChangeListener_","getCallers","Blockly.Procedures.getCallers","callers","getProcedureCall","mutateCallers","Blockly.Procedures.mutateCallers","defBlock","oldRecordUndo","xmlElement","caller","newMutationDom","newMutation","getDefinition","Blockly.Procedures.getDefinition","Blockly.VariableModel","Blockly.VariableModel.prototype.getId","compareByName","Blockly.VariableModel.compareByName","var1","var2","Blockly.Variables","Blockly.Variables.allUsedVarModels","variableHash","allUsedVariables","Blockly.Variables.allUsedVariables","ALL_DEVELOPER_VARS_WARNINGS_BY_BLOCK_TYPE_","allDeveloperVariables","Blockly.Variables.allDeveloperVariables","getDeveloperVariables","getDeveloperVars","devVars","Blockly.Variables.flyoutCategory","createVariableButtonHandler","getTargetWorkspace","blockList","flyoutCategoryBlocks","Blockly.Variables.flyoutCategoryBlocks","variableModelList","mostRecentVariable","generateVariableFieldDom","VAR_LETTER_OPTIONS","generateUniqueName","Blockly.Variables.generateUniqueName","Blockly.Variables.generateUniqueNameFromOptions","startChar","letters","suffix","letterIndex","inUse","potName","Blockly.Variables.createVariableButtonHandler","opt_callback","promptAndCheckWithAlert","defaultName","promptName","existing","nameUsedWithAnyType","Blockly.Variables.renameVariable","promptText","nameUsedWithOtherType_","Blockly.Variables.promptName","defaultText","prompt","Blockly.Variables.nameUsedWithOtherType_","allVariables","Blockly.Variables.nameUsedWithAnyType","Blockly.Variables.generateVariableFieldDom","variableModel","getOrCreateVariablePackage","Blockly.Variables.getOrCreateVariablePackage","createVariable_","Blockly.Variables.getVariable","potentialVariableMap","Blockly.Variables.createVariable_","Blockly.Variables.getAddedVariables","originalVariables","allCurrentVariables","addedVariables","Blockly.WidgetDiv","dispose_","Blockly.WidgetDiv.createDom","Blockly.WidgetDiv.show","newOwner","Blockly.WidgetDiv.hide","Blockly.WidgetDiv.isVisible","Blockly.WidgetDiv.hideIfOwner","oldOwner","Blockly.WidgetDiv.positionInternal_","Blockly.WidgetDiv.positionWithAnchor","widgetSize","calculateY_","calculateX_","Blockly.WidgetDiv.calculateX_","Blockly.WidgetDiv.calculateY_","VERSION","clipboardXml_","clipboardSource_","clipboardTypeCounts_","cache3dSupported_","Blockly.svgSize","cachedWidth_","cachedHeight_","resizeSvgContents","Blockly.resizeSvgContents","Blockly.svgResize","Blockly.onKeyDown","deleteBlock","copy_","Blockly.copy_","toCopy","Blockly.duplicate","toDuplicate","clipboardXml","clipboardSource","onContextMenu_","Blockly.onContextMenu_","Blockly.hideChaff","opt_allowToolbox","clearSelection","Blockly.getMainWorkspace","Blockly.alert","Blockly.confirm","Blockly.prompt","defaultValue","jsonInitFactory_","Blockly.jsonInitFactory_","jsonDef","defineBlocksWithJsonArray","Blockly.defineBlocksWithJsonArray","jsonArray","typename","Blockly.bindEventWithChecks_","thisObject","opt_noCaptureIdentifier","opt_noPreventDefault","handled","wrapFunc","captureIdentifier","bindData","touchWrapFunc","preventDef","Blockly.bindEvent_","Blockly.unbindEvent_","bindDatum","isNumber","Blockly.isNumber","hueToHex","Blockly.hueToHex","Blockly.checkBlockColourConstants","checkBlockColourConstant_","Blockly.checkBlockColourConstant_","msgName","blocklyNamePath","expectedValue","namePath","warningPattern","setParentContainer","Blockly.setParentContainer","Icon","Blockly.Icon","block_","collapseHidden","SIZE","bubble_","iconXY_","Blockly.Icon.prototype.createIcon","iconGroup_","drawIcon_","iconClick_","Blockly.Icon.prototype.dispose","Blockly.Icon.prototype.updateEditable","Blockly.Icon.prototype.isVisible","Blockly.Icon.prototype.iconClick_","Blockly.Icon.prototype.applyColour","Blockly.Icon.prototype.setIconLocation","Blockly.Icon.prototype.computeIconLocation","iconXY","Blockly.Icon.prototype.getIconLocation","getCorrectedSize","Blockly.Icon.prototype.getCorrectedSize","Blockly.Warning","text_","Blockly.Warning.prototype.drawIcon_","textToDom_","Blockly.Warning.textToDom_","paragraph","tspanElement","Blockly.Warning.prototype.setVisible","createBubble","disposeBubble","Blockly.Warning.prototype.createBubble","paragraphElement_","maxWidth","Blockly.Warning.prototype.disposeBubble","body_","Blockly.Warning.prototype.setText","Blockly.Warning.prototype.getText","allWarnings","Blockly.Warning.prototype.dispose","Blockly.Comment","model_","cachedText_","onInputWrapper_","onChangeWrapper_","onWheelWrapper_","Blockly.Comment.prototype.drawIcon_","createEditor_","Blockly.Comment.prototype.createEditor_","foreignObject_","textarea","textarea_","resizeTextarea_","startEdit_","Blockly.Comment.prototype.updateEditable","disposeBubble_","createBubble_","onBubbleResize_","Blockly.Comment.prototype.onBubbleResize_","Blockly.Comment.prototype.resizeTextarea_","widthMinusBorder","heightMinusBorder","Blockly.Comment.prototype.setVisible","Blockly.Comment.prototype.createBubble_","createNonEditableBubble_","createEditableBubble_","Blockly.Comment.prototype.createEditableBubble_","Blockly.Comment.prototype.createNonEditableBubble_","Blockly.Comment.prototype.disposeBubble_","Blockly.Comment.prototype.startEdit_","Blockly.Comment.prototype.getBubbleSize","Blockly.Comment.prototype.setBubbleSize","Blockly.Comment.prototype.getText","Blockly.Comment.prototype.setText","Blockly.Comment.prototype.updateText","Blockly.Comment.prototype.dispose","FlyoutCursor","Blockly.FlyoutCursor","Blockly.FlyoutCursor.prototype.onBlocklyAction","Blockly.FlyoutCursor.prototype.next","Blockly.FlyoutCursor.prototype.in","Blockly.FlyoutCursor.prototype.prev","Blockly.FlyoutCursor.prototype.out","Flyout","Blockly.Flyout","getMetrics_","setMetrics_","toolboxPosition_","eventWrappers_","mats_","buttons_","permanentlyDisabled_","tabWidth_","TAB_WIDTH","MARGIN","GAP_X","GAP_Y","SCROLLBAR_PADDING","dragAngleRange_","Blockly.Flyout.prototype.createDom","Blockly.Flyout.prototype.init","wheel_","filterWrapper_","filterForCapacity_","Blockly.Flyout.prototype.dispose","Blockly.Flyout.prototype.getWidth","Blockly.Flyout.prototype.getHeight","Blockly.Flyout.prototype.getWorkspace","Blockly.Flyout.prototype.isVisible","Blockly.Flyout.prototype.setVisible","Blockly.Flyout.prototype.setContainerVisible","Blockly.Flyout.prototype.updateDisplay_","positionAt_","Blockly.Flyout.prototype.positionAt_","Blockly.Flyout.prototype.hide","listen","reflowWrapper_","Blockly.Flyout.prototype.show","flyoutDef","clearOldBlocks_","fnToApply","parsedContent","flyoutInfo","createFlyoutInfo_","layout_","gaps","deselectAll","Blockly.Flyout.prototype.createFlyoutInfo_","defaultGap","contentInfo","blockInfo","blockXml","getBlockXml_","createBlock_","gap","addSeparatorGap_","label","createButton_","Blockly.Flyout.prototype.createButton_","btnInfo","isLabel","FlyoutButton","curButton","Blockly.Flyout.prototype.createBlock_","Blockly.Flyout.prototype.getBlockXml_","blockElement","Blockly.Flyout.prototype.addSeparatorGap_","sepInfo","newGap","Blockly.Flyout.prototype.clearOldBlocks_","oldBlocks","rect","addBlockListeners_","Blockly.Flyout.prototype.addBlockListeners_","blockMouseDown_","Blockly.Flyout.prototype.blockMouseDown_","Blockly.Flyout.prototype.onMouseDown_","Blockly.Flyout.prototype.isBlockCreatable_","Blockly.Flyout.prototype.createBlock","originalBlock","placeNewBlock_","initFlyoutButton_","Blockly.Flyout.prototype.initFlyoutButton_","buttonSvg","createRect_","Blockly.Flyout.prototype.createRect_","blockHW","flyoutRect_","moveRectToBlock_","Blockly.Flyout.prototype.moveRectToBlock_","Blockly.Flyout.prototype.filterForCapacity_","Blockly.Flyout.prototype.reflow","reflowInternal_","Blockly.Flyout.prototype.isScrollable","Blockly.Flyout.prototype.placeNewBlock_","oldBlock","svgRootOld","svgRootNew","flyoutOffsetPixels","oldBlockPos","oldBlockOffsetPixels","Blockly.Flyout.prototype.onBlocklyAction","Blockly.HorizontalFlyout","Blockly.HorizontalFlyout.prototype.getMetrics_","optionBox","Blockly.HorizontalFlyout.prototype.setMetrics_","Blockly.HorizontalFlyout.prototype.position","targetWorkspaceMetrics","setBackgroundPath_","Blockly.HorizontalFlyout.prototype.setBackgroundPath_","atTop","path","Blockly.HorizontalFlyout.prototype.scrollToStart","Blockly.HorizontalFlyout.prototype.wheel_","Blockly.HorizontalFlyout.prototype.layout_","margin","cursorX","moveX","Blockly.HorizontalFlyout.prototype.isDragTowardWorkspace","dragDirection","atan2","range","Blockly.HorizontalFlyout.prototype.getClientRect","flyoutRect","BIG_NUM","Blockly.HorizontalFlyout.prototype.reflowInternal_","Blockly.VerticalFlyout","Blockly.VerticalFlyout.prototype.getMetrics_","Blockly.VerticalFlyout.prototype.setMetrics_","Blockly.VerticalFlyout.prototype.position","Blockly.VerticalFlyout.prototype.setBackgroundPath_","atRight","Blockly.VerticalFlyout.prototype.scrollToStart","Blockly.VerticalFlyout.prototype.wheel_","Blockly.VerticalFlyout.prototype.layout_","Blockly.VerticalFlyout.prototype.isDragTowardWorkspace","Blockly.VerticalFlyout.prototype.getClientRect","Blockly.VerticalFlyout.prototype.reflowInternal_","oldX","newX","getPosition","Blockly.FlyoutButton","targetWorkspace_","isLabel_","callbackKey_","cssClass_","MARGIN_X","MARGIN_Y","Blockly.FlyoutButton.prototype.createDom","svgText","svgText_","fontMetrics","updateTransform_","onMouseUp_","Blockly.FlyoutButton.prototype.show","Blockly.FlyoutButton.prototype.updateTransform_","Blockly.FlyoutButton.prototype.moveTo","Blockly.FlyoutButton.prototype.getPosition","Blockly.FlyoutButton.prototype.getTargetWorkspace","Blockly.FlyoutButton.prototype.dispose","Blockly.FlyoutButton.prototype.onMouseUp_","Blockly.Generator","FUNCTION_NAME_PLACEHOLDER_REGEXP_","RegExp","FUNCTION_NAME_PLACEHOLDER_","INFINITE_LOOP_TRAP","STATEMENT_PREFIX","STATEMENT_SUFFIX","INDENT","COMMENT_WRAP","ORDER_OVERRIDES","workspaceToCode","Blockly.Generator.prototype.workspaceToCode","code","blockToCode","scrubNakedValue","suppressPrefixSuffix","injectId","finish","prefixLines","Blockly.Generator.prototype.prefixLines","allNestedComments","Blockly.Generator.prototype.allNestedComments","Blockly.Generator.prototype.blockToCode","opt_thisOnly","scrub_","SyntaxError","valueToCode","Blockly.Generator.prototype.valueToCode","outerOrder","innerOrder","parensNeeded","outerOrderClass","innerOrderClass","statementToCode","Blockly.Generator.prototype.statementToCode","addLoopTrap","Blockly.Generator.prototype.addLoopTrap","branch","Blockly.Generator.prototype.injectId","RESERVED_WORDS_","addReservedWords","Blockly.Generator.prototype.addReservedWords","provideFunction_","Blockly.Generator.prototype.provideFunction_","desiredName","definitions_","functionName","variableDB_","functionNames_","codeText","oldCodeText","Blockly.Generator.prototype.init","_workspace","Blockly.Generator.prototype.scrub_","_block","_opt_thisOnly","Blockly.Generator.prototype.finish","Blockly.Generator.prototype.scrubNakedValue","Blockly.tree","BaseNode","Blockly.tree.BaseNode","config_","expanded_","selected_","depth_","allNodes","Blockly.tree.BaseNode.prototype.disposeInternal","initAccessibility","Blockly.tree.BaseNode.prototype.initAccessibility","getLabelElement","getDepth","img","getIconElement","ce","getChildrenElement","count","Blockly.tree.BaseNode.prototype.createDom","toDom","Blockly.tree.BaseNode.prototype.enterDocument","Blockly.tree.BaseNode.prototype.exitDocument","Blockly.tree.BaseNode.prototype.addChildAt","prevNode","nextSibling_","getTree","setTreeInternal","setDepth_","updateExpandIcon","childrenEl","childElement","nextElement","setExpanded","Blockly.tree.BaseNode.prototype.add","Blockly.tree.BaseNode.prototype.getTree","Blockly.tree.BaseNode.prototype.getDepth","depth","Blockly.tree.BaseNode.prototype.setDepth_","row","getRowElement","getPixelIndent_","paddingRight","paddingLeft","Blockly.tree.BaseNode.prototype.contains","Blockly.tree.BaseNode.prototype.getChildren","Blockly.tree.BaseNode.prototype.getParent","getPreviousSibling","Blockly.tree.BaseNode.prototype.getPreviousSibling","getNextSibling","Blockly.tree.BaseNode.prototype.getNextSibling","isLastSibling","Blockly.tree.BaseNode.prototype.isLastSibling","isSelected","Blockly.tree.BaseNode.prototype.isSelected","Blockly.tree.BaseNode.prototype.select","setSelectedItem","setSelected","Blockly.tree.BaseNode.prototype.setSelected","updateRow","treeElement","Blockly.tree.BaseNode.prototype.setExpanded","expanded","isStateChange","getSelectedItem","updateIcon_","doNodeExpanded","doNodeCollapsed","Blockly.tree.BaseNode.prototype.doNodeExpanded","Blockly.tree.BaseNode.prototype.doNodeCollapsed","toggle","Blockly.tree.BaseNode.prototype.toggle","Blockly.tree.BaseNode.prototype.toDom","nonEmptyAndExpanded","backgroundPosition","getBackgroundPosition","getRowDom","Blockly.tree.BaseNode.prototype.getPixelIndent_","indentWidth","Blockly.tree.BaseNode.prototype.getRowDom","getRowClassName","getIconDom","getLabelDom","Blockly.tree.BaseNode.prototype.getRowClassName","selectedClass","cssSelectedRow","cssTreeRow","Blockly.tree.BaseNode.prototype.getLabelDom","cssItemLabel","Blockly.tree.BaseNode.prototype.getIconDom","getCalculatedIconClass","Blockly.tree.BaseNode.prototype.getCalculatedIconClass","Blockly.tree.BaseNode.prototype.getBackgroundPosition","Blockly.tree.BaseNode.prototype.getElement","Blockly.tree.BaseNode.prototype.getRowElement","Blockly.tree.BaseNode.prototype.getIconElement","Blockly.tree.BaseNode.prototype.getLabelElement","Blockly.tree.BaseNode.prototype.getChildrenElement","Blockly.tree.BaseNode.prototype.updateRow","rowEl","Blockly.tree.BaseNode.prototype.updateExpandIcon","cel","Blockly.tree.BaseNode.prototype.updateIcon_","onClick_","Blockly.tree.BaseNode.prototype.onClick_","Blockly.tree.BaseNode.prototype.onKeyDown","selectChild","selectParent","selectNext","selectPrevious","Blockly.tree.BaseNode.prototype.selectNext","getNextShownNode","Blockly.tree.BaseNode.prototype.selectPrevious","previousNode","getPreviousShownNode","Blockly.tree.BaseNode.prototype.selectParent","Blockly.tree.BaseNode.prototype.selectChild","getLastShownDescendant","Blockly.tree.BaseNode.prototype.getLastShownDescendant","Blockly.tree.BaseNode.prototype.getNextShownNode","Blockly.tree.BaseNode.prototype.getPreviousShownNode","ps","Blockly.tree.BaseNode.prototype.setTreeInternal","TreeNode","Blockly.tree.TreeNode","onSizeChanged_","Blockly.tree.TreeNode.prototype.getTree","Blockly.tree.TreeNode.prototype.getCalculatedIconClass","expandedIconClass","iconClass","cssExpandedFolderIcon","cssTreeIcon","cssCollapsedFolderIcon","cssFileIcon","Blockly.tree.TreeNode.prototype.onClick_","Blockly.tree.TreeNode.prototype.onKeyDown","defineProperties","newKeyCode","onSizeChanged","Blockly.tree.TreeNode.prototype.onSizeChanged","resizeToolbox_","Blockly.tree.TreeNode.prototype.resizeToolbox_","TreeControl","Blockly.tree.TreeControl","onKeydownWrapper_","onClickWrapper_","selectedItem_","onAfterSelected_","onBeforeSelected_","Blockly.tree.TreeControl.prototype.getTree","Blockly.tree.TreeControl.prototype.getToolbox","Blockly.tree.TreeControl.prototype.getDepth","Blockly.tree.TreeControl.prototype.setExpanded","Blockly.tree.TreeControl.prototype.getIconElement","Blockly.tree.TreeControl.prototype.updateExpandIcon","Blockly.tree.TreeControl.prototype.getRowClassName","cssHideRoot","Blockly.tree.TreeControl.prototype.getCalculatedIconClass","Blockly.tree.TreeControl.prototype.setSelectedItem","onBeforeSelected","Blockly.tree.TreeControl.prototype.onBeforeSelected","onAfterSelected","Blockly.tree.TreeControl.prototype.onAfterSelected","Blockly.tree.TreeControl.prototype.getSelectedItem","Blockly.tree.TreeControl.prototype.initAccessibility","Blockly.tree.TreeControl.prototype.enterDocument","cssRoot","attachEvents_","Blockly.tree.TreeControl.prototype.exitDocument","detachEvents_","Blockly.tree.TreeControl.prototype.attachEvents_","handleMouseEvent_","Blockly.tree.TreeControl.prototype.detachEvents_","Blockly.tree.TreeControl.prototype.handleMouseEvent_","getNodeFromEvent_","Blockly.tree.TreeControl.prototype.handleKeyEvent_","Blockly.tree.TreeControl.prototype.getNodeFromEvent_","createNode","Blockly.tree.TreeControl.prototype.createNode","opt_content","Blockly.Toolbox","treeSeparatorConfig_","lastCategory_","Blockly.Toolbox.prototype.init","HtmlDiv","themeManager","Blockly.Toolbox.prototype.render","tree_","handleBeforeTreeSelected_","handleAfterTreeSelected_","openNode","hasColours_","createTree_","addColour_","Blockly.Toolbox.prototype.createTree_","treeOut","lastElement","childIn","addCategory_","addSeparator_","Blockly.Toolbox.prototype.addCategory_","categoryInfo","categoryName","childOut","handleNodeSizeChanged_","custom","setColourOrStyle_","setExpanded_","Blockly.Toolbox.prototype.setColourOrStyle_","styleName","setColourFromStyle_","setColour_","Blockly.Toolbox.prototype.addSeparator_","separatorInfo","TreeSeparator","Blockly.Toolbox.prototype.setExpanded_","Blockly.Toolbox.prototype.handleBeforeTreeSelected_","Blockly.Toolbox.prototype.handleAfterTreeSelected_","Blockly.Toolbox.prototype.handleNodeSizeChanged_","Blockly.Toolbox.prototype.onBlocklyAction","Blockly.Toolbox.prototype.dispose","Blockly.Toolbox.prototype.setVisible","Blockly.Toolbox.prototype.getWidth","Blockly.Toolbox.prototype.getHeight","Blockly.Toolbox.prototype.getFlyout","Blockly.Toolbox.prototype.position","treeDiv","Blockly.Toolbox.prototype.setColour_","colourValue","Blockly.Toolbox.prototype.setColourFromStyle_","updateColourFromTheme_","Blockly.Toolbox.prototype.updateColourFromTheme_","opt_tree","Blockly.Toolbox.prototype.refreshTheme","updateSelectedItemColour_","Blockly.Toolbox.prototype.updateSelectedItemColour_","selectedItem","Blockly.Toolbox.prototype.addColour_","border","borderRight","borderLeft","Blockly.Toolbox.prototype.clearSelection","Blockly.Toolbox.prototype.addStyle","Blockly.Toolbox.prototype.removeStyle","Blockly.Toolbox.prototype.getClientRect","toolboxRect","Blockly.Toolbox.prototype.refreshSelection","Blockly.Toolbox.prototype.selectFirstCategory","Blockly.Toolbox.TreeSeparator","Blockly.Trashcan","contents_","flyoutWorkspaceOptions","onDelete_","WIDTH_","BODY_HEIGHT_","LID_HEIGHT_","MARGIN_BOTTOM_","MARGIN_SIDE_","MARGIN_HOTSPOT_","SPRITE_LEFT_","SPRITE_TOP_","HAS_BLOCKS_LID_ANGLE_","ANIMATION_LENGTH_","ANIMATION_FRAMES_","OPACITY_MIN_","OPACITY_MAX_","MAX_LID_ANGLE_","isOpen","minOpenness_","svgLid_","lidTask_","lidOpen_","left_","top_","Blockly.Trashcan.prototype.createDom","clip","setAttributeNS","click","mouseOver_","mouseOut_","animateLid_","Blockly.Trashcan.prototype.init","verticalSpacing_","Blockly.Trashcan.prototype.dispose","contentsIsOpen","Blockly.Trashcan.prototype.contentsIsOpen","emptyContents","Blockly.Trashcan.prototype.emptyContents","setMinOpenness_","Blockly.Trashcan.prototype.position","Blockly.Trashcan.prototype.getClientRect","trashRect","Blockly.Trashcan.prototype.setOpen","Blockly.Trashcan.prototype.animateLid_","frames","setLidAngle_","minOpacity","Blockly.Trashcan.prototype.setLidAngle_","lidAngle","openAtRight","Blockly.Trashcan.prototype.setMinOpenness_","newMin","Blockly.Trashcan.prototype.close","Blockly.Trashcan.prototype.click","Blockly.Trashcan.prototype.mouseOver_","Blockly.Trashcan.prototype.mouseOut_","Blockly.Trashcan.prototype.onDelete_","cleanedXML","cleanBlockXML_","Blockly.Trashcan.prototype.cleanBlockXML_","Blockly.VariablesDynamic","onCreateVariableButtonClick_String","Blockly.VariablesDynamic.onCreateVariableButtonClick_String","onCreateVariableButtonClick_Number","Blockly.VariablesDynamic.onCreateVariableButtonClick_Number","onCreateVariableButtonClick_Colour","Blockly.VariablesDynamic.onCreateVariableButtonClick_Colour","Blockly.VariablesDynamic.flyoutCategory","Blockly.VariablesDynamic.flyoutCategoryBlocks","firstVariable","Blockly.ZoomControls","HEIGHT_","Blockly.ZoomControls.prototype.createDom","createZoomOutSvg_","createZoomInSvg_","createZoomResetSvg_","Blockly.ZoomControls.prototype.init","Blockly.ZoomControls.prototype.dispose","Blockly.ZoomControls.prototype.position","zoomInGroup_","zoomResetGroup_","zoomOutGroup_","Blockly.ZoomControls.prototype.createZoomOutSvg_","zoomoutSvg","Blockly.ZoomControls.prototype.createZoomInSvg_","zoominSvg","Blockly.ZoomControls.prototype.createZoomResetSvg_","zoomresetSvg","Blockly.Mutator","quarkNames","quarkNames_","workspaceWidth_","workspaceHeight_","Blockly.Mutator.prototype.setBlock","Blockly.Mutator.prototype.getWorkspace","Blockly.Mutator.prototype.drawIcon_","Blockly.Mutator.prototype.iconClick_","Blockly.Mutator.prototype.createEditor_","svgDialog_","quarkXml","quarkName","hasFlyout","getFlyoutMetrics_","flyoutSvg","background","Blockly.Mutator.prototype.updateEditable","resizeBubble_","Blockly.Mutator.prototype.resizeBubble_","workspaceSize","flyoutMetrics","onBubbleMove_","Blockly.Mutator.prototype.onBubbleMove_","Blockly.Mutator.prototype.setVisible","rootBlock_","saveConnections","thisMutator","mutatorBlock","sourceListener_","this.sourceListener_","workspaceChanged_","Blockly.Mutator.prototype.workspaceChanged_","Blockly.Mutator.prototype.getFlyoutMetrics_","unsupported","Blockly.Mutator.prototype.dispose","Blockly.Mutator.prototype.updateBlockStyle","workspaceBlocks","flyoutBlocks","reconnect","Blockly.Mutator.reconnect","connectionChild","connectionParent","currentParent","findParentWs","Blockly.Mutator.findParentWs","outerWs","FieldTextInput","Blockly.FieldTextInput","spellcheck_","onKeyInputWrapper_","onKeyDownWrapper_","htmlInput_","fullBlockClickTarget_","Blockly.FieldTextInput.fromJson","BORDERRADIUS","Blockly.FieldTextInput.prototype.configure_","Blockly.FieldTextInput.prototype.initView","FULL_BLOCK_FIELDS","nFields","nConnections","Blockly.FieldTextInput.prototype.doClassValidation_","Blockly.FieldTextInput.prototype.doValueInvalid_","isBeingEdited_","isTextValid_","untypedDefaultValue_","Blockly.FieldTextInput.prototype.doValueUpdate_","Blockly.FieldTextInput.prototype.applyColour","FIELD_BORDER_RECT_COLOUR","Blockly.FieldTextInput.prototype.render_","resizeEditor_","htmlInput","setSpellcheck","Blockly.FieldTextInput.prototype.setSpellcheck","Blockly.FieldTextInput.prototype.showEditor_","_opt_e","opt_quietInput","quietInput","showPromptEditor_","showInlineEditor_","Blockly.FieldTextInput.prototype.showPromptEditor_","fieldText","Blockly.FieldTextInput.prototype.showInlineEditor_","widgetDispose_","widgetCreate_","Blockly.FieldTextInput.prototype.widgetCreate_","borderRadius","strokeColour","FIELD_TEXTINPUT_BOX_SHADOW","boxShadow","getEditorText_","oldValue_","bindInputEvents_","Blockly.FieldTextInput.prototype.widgetDispose_","onFinishEditing_","unbindInputEvents_","Blockly.FieldTextInput.prototype.bindInputEvents_","onHtmlInputKeyDown_","onHtmlInputChange_","Blockly.FieldTextInput.prototype.unbindInputEvents_","Blockly.FieldTextInput.prototype.onHtmlInputKeyDown_","Blockly.FieldTextInput.prototype.onHtmlInputChange_","getValueFromEditorText_","setEditorValue_","Blockly.FieldTextInput.prototype.setEditorValue_","Blockly.FieldTextInput.prototype.resizeEditor_","numberValidator","Blockly.FieldTextInput.numberValidator","nonnegativeIntegerValidator","Blockly.FieldTextInput.nonnegativeIntegerValidator","Blockly.FieldTextInput.prototype.isTabNavigable","Blockly.FieldTextInput.prototype.getText_","Blockly.FieldTextInput.prototype.getEditorText_","Blockly.FieldTextInput.prototype.getValueFromEditorText_","FieldAngle","Blockly.FieldAngle","clockwise_","CLOCKWISE","offset_","OFFSET","wrap_","WRAP","round_","ROUND","moveSurfaceWrapper_","clickSurfaceWrapper_","clickWrapper_","line_","gauge_","Blockly.FieldAngle.fromJson","HALF","RADIUS","Blockly.FieldAngle.prototype.configure_","clockwise","Blockly.FieldAngle.prototype.initView","symbol_","Blockly.FieldAngle.prototype.render_","updateGraph_","Blockly.FieldAngle.prototype.showEditor_","editor","dropdownCreate_","dropdownDispose_","Blockly.FieldAngle.prototype.dropdownCreate_","circle","hide_","Blockly.FieldAngle.prototype.dropdownDispose_","Blockly.FieldAngle.prototype.hide_","Blockly.FieldAngle.prototype.onMouseMove_","ownerSVGElement","displayMouseOrKeyboardValue_","Blockly.FieldAngle.prototype.displayMouseOrKeyboardValue_","wrapValue_","Blockly.FieldAngle.prototype.updateGraph_","clockwiseFlag","angle1","largeFlag","Blockly.FieldAngle.prototype.onHtmlInputKeyDown_","Blockly.FieldAngle.prototype.doClassValidation_","isFinite","Blockly.FieldAngle.prototype.wrapValue_","FieldCheckbox","Blockly.FieldCheckbox","checkChar_","Blockly.FieldCheckbox.fromJson","CHECK_CHAR","Blockly.FieldCheckbox.prototype.configure_","Blockly.FieldCheckbox.prototype.initView","Blockly.FieldCheckbox.prototype.render_","FIELD_CHECKBOX_X_OFFSET","Blockly.FieldCheckbox.prototype.getDisplayText_","setCheckCharacter","Blockly.FieldCheckbox.prototype.setCheckCharacter","character","Blockly.FieldCheckbox.prototype.showEditor_","Blockly.FieldCheckbox.prototype.doClassValidation_","Blockly.FieldCheckbox.prototype.doValueUpdate_","convertValueToBool_","Blockly.FieldCheckbox.prototype.getValue","getValueBoolean","Blockly.FieldCheckbox.prototype.getValueBoolean","Blockly.FieldCheckbox.prototype.getText","Blockly.FieldCheckbox.prototype.convertValueToBool_","FieldColour","Blockly.FieldColour","onMouseLeaveWrapper_","onMouseEnterWrapper_","highlightedIndex_","picker_","Blockly.FieldColour.fromJson","colours_","titles_","columns_","Blockly.FieldColour.prototype.configure_","Blockly.FieldColour.prototype.initView","FIELD_COLOUR_DEFAULT_WIDTH","FIELD_COLOUR_DEFAULT_HEIGHT","FIELD_COLOUR_FULL_BLOCK","Blockly.FieldColour.prototype.applyColour","Blockly.FieldColour.prototype.doClassValidation_","Blockly.FieldColour.prototype.doValueUpdate_","Blockly.FieldColour.prototype.getText","COLOURS","TITLES","COLUMNS","setColours","Blockly.FieldColour.prototype.setColours","colours","opt_titles","setColumns","Blockly.FieldColour.prototype.setColumns","columns","Blockly.FieldColour.prototype.showEditor_","Blockly.FieldColour.prototype.onClick_","cell","onKeyDown_","Blockly.FieldColour.prototype.onKeyDown_","moveHighlightBy_","getHighlighted_","Blockly.FieldColour.prototype.onBlocklyAction","Blockly.FieldColour.prototype.moveHighlightBy_","setHighlightedCell_","Blockly.FieldColour.prototype.onMouseMove_","onMouseEnter_","Blockly.FieldColour.prototype.onMouseEnter_","onMouseLeave_","Blockly.FieldColour.prototype.onMouseLeave_","Blockly.FieldColour.prototype.getHighlighted_","col","Blockly.FieldColour.prototype.setHighlightedCell_","Blockly.FieldColour.prototype.dropdownCreate_","titles","selectedColour","table","dir","title","Blockly.FieldColour.prototype.dropdownDispose_","FieldDropdown","Blockly.FieldDropdown","menuGenerator","validateOptions_","menuGenerator_","generatedOptions_","trimOptions_","selectedOption_","svgArrow_","imageElement_","selectedMenuItem_","Blockly.FieldDropdown.fromJson","CHECKMARK_OVERHANG","MAX_MENU_HEIGHT_VH","IMAGE_Y_OFFSET","IMAGE_Y_PADDING","ARROW_CHAR","Blockly.FieldDropdown.prototype.initView","shouldAddBorderRect_","FIELD_DROPDOWN_SVG_ARROW","createSVGArrow_","createTextArrow_","Blockly.FieldDropdown.prototype.shouldAddBorderRect_","FIELD_DROPDOWN_NO_BORDER_RECT_SHADOW","Blockly.FieldDropdown.prototype.createTextArrow_","Blockly.FieldDropdown.prototype.createSVGArrow_","FIELD_DROPDOWN_SVG_ARROW_SIZE","FIELD_DROPDOWN_SVG_ARROW_DATAURI","Blockly.FieldDropdown.prototype.showEditor_","menuElement","FIELD_DROPDOWN_COLOURED_DIV","primaryColour","Blockly.FieldDropdown.prototype.dropdownCreate_","image","Image","src","alt","handleMenuActionEvent_","Blockly.FieldDropdown.prototype.dropdownDispose_","Blockly.FieldDropdown.prototype.handleMenuActionEvent_","onItemSelected_","Blockly.FieldDropdown.prototype.onItemSelected_","Blockly.FieldDropdown.prototype.trimOptions_","hasImages","strings","shortest","prefixLength","suffixLength","applyTrim_","Blockly.FieldDropdown.applyTrim_","newOptions","Blockly.FieldDropdown.prototype.isOptionListDynamic","Blockly.FieldDropdown.prototype.getOptions","opt_useCache","Blockly.FieldDropdown.prototype.doClassValidation_","isValueValid","Blockly.FieldDropdown.prototype.doValueUpdate_","Blockly.FieldDropdown.prototype.applyColour","Blockly.FieldDropdown.prototype.render_","renderSelectedImage_","renderSelectedText_","Blockly.FieldDropdown.prototype.renderSelectedImage_","imageJson","imageHeight","imageWidth","hasBorder","FIELD_DROPDOWN_BORDER_RECT_HEIGHT","xPadding","arrowWidth","positionSVGArrow_","Blockly.FieldDropdown.prototype.renderSelectedText_","textWidth","Blockly.FieldDropdown.prototype.positionSVGArrow_","textPadding","FIELD_DROPDOWN_SVG_ARROW_PADDING","svgArrowSize","Blockly.FieldDropdown.prototype.getText_","Blockly.FieldDropdown.validateOptions_","foundError","Blockly.FieldDropdown.prototype.onBlocklyAction","FieldLabelSerializable","Blockly.FieldLabelSerializable","Blockly.FieldLabelSerializable.fromJson","FieldImage","Blockly.FieldImage","opt_alt","opt_onClick","opt_flipRtl","flipRtl_","altText_","Y_PADDING","imageHeight_","Blockly.FieldImage.fromJson","Blockly.FieldImage.prototype.configure_","Blockly.FieldImage.prototype.initView","Blockly.FieldImage.prototype.updateSize_","Blockly.FieldImage.prototype.doClassValidation_","Blockly.FieldImage.prototype.doValueUpdate_","Blockly.FieldImage.prototype.getFlipRtl","setAlt","Blockly.FieldImage.prototype.setAlt","Blockly.FieldImage.prototype.showEditor_","setOnClickHandler","Blockly.FieldImage.prototype.setOnClickHandler","Blockly.FieldImage.prototype.getText_","FieldMultilineInput","Blockly.FieldMultilineInput","textGroup_","Blockly.FieldMultilineInput.fromJson","Blockly.FieldMultilineInput.prototype.initView","Blockly.FieldMultilineInput.prototype.getDisplayText_","Blockly.FieldMultilineInput.prototype.render_","currentChild","lineHeight","FIELD_BORDER_RECT_Y_PADDING","Blockly.FieldMultilineInput.prototype.updateSize_","nodes","tspan","Blockly.FieldMultilineInput.prototype.widgetCreate_","paddingX","paddingY","padding","Blockly.FieldMultilineInput.prototype.onHtmlInputKeyDown_","FieldNumber","Blockly.FieldNumber","opt_min","opt_max","opt_precision","min_","max_","precision_","decimalPlaces_","setConstraints","Blockly.FieldNumber.fromJson","Blockly.FieldNumber.prototype.configure_","setMinInternal_","setMaxInternal_","setPrecisionInternal_","Blockly.FieldNumber.prototype.setConstraints","precision","setMin","Blockly.FieldNumber.prototype.setMin","Blockly.FieldNumber.prototype.setMinInternal_","getMin","Blockly.FieldNumber.prototype.getMin","setMax","Blockly.FieldNumber.prototype.setMax","Blockly.FieldNumber.prototype.setMaxInternal_","getMax","Blockly.FieldNumber.prototype.getMax","setPrecision","Blockly.FieldNumber.prototype.setPrecision","Blockly.FieldNumber.prototype.setPrecisionInternal_","precisionString","decimalIndex","getPrecision","Blockly.FieldNumber.prototype.getPrecision","Blockly.FieldNumber.prototype.doClassValidation_","Blockly.FieldNumber.prototype.widgetCreate_","FieldVariable","Blockly.FieldVariable","opt_variableTypes","opt_defaultType","dropdownCreate","defaultVariableName","setTypes_","Blockly.FieldVariable.fromJson","Blockly.FieldVariable.prototype.configure_","Blockly.FieldVariable.prototype.initModel","variable_","defaultType_","Blockly.FieldVariable.prototype.shouldAddBorderRect_","Blockly.FieldVariable.prototype.fromXml","variableType","Blockly.FieldVariable.prototype.toXml","Blockly.FieldVariable.prototype.setSourceBlock","Blockly.FieldVariable.prototype.getValue","Blockly.FieldVariable.prototype.getText","Blockly.FieldVariable.prototype.getVariable","Blockly.FieldVariable.prototype.getValidator","Blockly.FieldVariable.prototype.doClassValidation_","typeIsAllowed_","Blockly.FieldVariable.prototype.doValueUpdate_","Blockly.FieldVariable.prototype.typeIsAllowed_","typeList","getVariableTypes_","Blockly.FieldVariable.prototype.getVariableTypes_","variableTypes","Blockly.FieldVariable.prototype.setTypes_","defaultType","isInArray","Blockly.FieldVariable.prototype.refreshVariableName","Blockly.FieldVariable.dropdownCreate","Blockly.FieldVariable.prototype.onItemSelected_","Blockly.FieldVariable.prototype.referencesVariables","Blockly.utils.svgPaths","Blockly.utils.svgPaths.point","curve","Blockly.utils.svgPaths.curve","command","points","Blockly.utils.svgPaths.moveTo","Blockly.utils.svgPaths.moveBy","lineTo","Blockly.utils.svgPaths.lineTo","Blockly.utils.svgPaths.line","Blockly.utils.svgPaths.lineOnAxis","val","arc","Blockly.utils.svgPaths.arc","flags","ConstantProvider","Blockly.blockRendering.ConstantProvider","NO_PADDING","SMALL_PADDING","MEDIUM_PADDING","MEDIUM_LARGE_PADDING","LARGE_PADDING","TALL_INPUT_FIELD_OFFSET_Y","TAB_HEIGHT","TAB_VERTICAL_OVERLAP","NOTCH_WIDTH","MIN_BLOCK_WIDTH","EMPTY_BLOCK_SPACER_HEIGHT","DUMMY_INPUT_SHADOW_MIN_HEIGHT","DUMMY_INPUT_MIN_HEIGHT","STATEMENT_INPUT_NOTCH_OFFSET","STATEMENT_BOTTOM_SPACER","STATEMENT_INPUT_PADDING_LEFT","BETWEEN_STATEMENT_PADDING_Y","TOP_ROW_MIN_HEIGHT","TOP_ROW_PRECEDES_STATEMENT_MIN_HEIGHT","BOTTOM_ROW_MIN_HEIGHT","BOTTOM_ROW_AFTER_STATEMENT_MIN_HEIGHT","ADD_START_HATS","START_HAT_HEIGHT","START_HAT_WIDTH","SPACER_DEFAULT_HEIGHT","EMPTY_INLINE_INPUT_PADDING","EMPTY_INLINE_INPUT_HEIGHT","EXTERNAL_VALUE_INPUT_PADDING","EMPTY_STATEMENT_INPUT_HEIGHT","START_POINT","JAGGED_TEETH_HEIGHT","JAGGED_TEETH_WIDTH","randomIdentifier","embossFilter_","disabledPatternId","disabledPattern_","debugFilterId","cssNode_","debugFilter_","CURSOR_COLOUR","MARKER_COLOUR","CURSOR_WS_WIDTH","WS_CURSOR_HEIGHT","CURSOR_STACK_PADDING","CURSOR_BLOCK_PADDING","CURSOR_STROKE_WIDTH","INSERTION_MARKER_OPACITY","SHAPES","PUZZLE","NOTCH","Blockly.blockRendering.ConstantProvider.prototype.init","JAGGED_TEETH","makeJaggedTeeth","makeNotch","START_HAT","makeStartHat","PUZZLE_TAB","makePuzzleTab","INSIDE_CORNERS","makeInsideCorners","OUTSIDE_CORNERS","makeOutsideCorners","Blockly.blockRendering.ConstantProvider.prototype.setTheme","validatedBlockStyle_","setDynamicProperties_","Blockly.blockRendering.ConstantProvider.prototype.setDynamicProperties_","setFontConstants_","setComponentConstants_","Blockly.blockRendering.ConstantProvider.prototype.setFontConstants_","Blockly.blockRendering.ConstantProvider.prototype.setComponentConstants_","Blockly.blockRendering.ConstantProvider.prototype.getBlockStyleForColour","createBlockStyle_","Blockly.blockRendering.ConstantProvider.prototype.getBlockStyle","Blockly.blockRendering.ConstantProvider.prototype.createBlockStyle_","Blockly.blockRendering.ConstantProvider.prototype.validatedBlockStyle_","valid","parsedColour","generateSecondaryColour_","generateTertiaryColour_","Blockly.blockRendering.ConstantProvider.prototype.generateSecondaryColour_","Blockly.blockRendering.ConstantProvider.prototype.generateTertiaryColour_","Blockly.blockRendering.ConstantProvider.prototype.dispose","Blockly.blockRendering.ConstantProvider.prototype.makeJaggedTeeth","mainPath","Blockly.blockRendering.ConstantProvider.prototype.makeStartHat","Blockly.blockRendering.ConstantProvider.prototype.makePuzzleTab","makeMainPath","up","back","control1Y","overlap","control2Y","endPoint1","endPoint2","pathUp","Blockly.blockRendering.ConstantProvider.prototype.makeNotch","outerWidth","innerWidth","pathRight","Blockly.blockRendering.ConstantProvider.prototype.makeInsideCorners","innerTopLeftCorner","innerBottomLeftCorner","pathTop","pathBottom","Blockly.blockRendering.ConstantProvider.prototype.makeOutsideCorners","topLeft","topRight","bottomLeft","bottomRight","rightHeight","Blockly.blockRendering.ConstantProvider.prototype.shapeFor","Blockly.blockRendering.ConstantProvider.prototype.createDom","selector","injectCSS_","embossFilter","feSpecularLighting","disabledPattern","Debug","debugFilter","debugComponentTransfer","Blockly.blockRendering.ConstantProvider.prototype.injectCSS_","getCSS_","cssNodeId","Blockly.blockRendering.ConstantProvider.prototype.getCSS_","MarkerSvg","Blockly.blockRendering.MarkerSvg","marker_","currentMarkerSvg","defaultColour","isCursor","CURSOR_CLASS","MARKER_CLASS","HEIGHT_MULTIPLIER","Blockly.blockRendering.MarkerSvg.prototype.getSvgRoot","Blockly.blockRendering.MarkerSvg.prototype.getMarker","Blockly.blockRendering.MarkerSvg.prototype.isCursor","Blockly.blockRendering.MarkerSvg.prototype.createDom","createDomInternal_","setParent_","Blockly.blockRendering.MarkerSvg.prototype.setParent_","Blockly.blockRendering.MarkerSvg.prototype.draw","applyColour_","showAtLocation_","fireMarkerEvent_","beginElement","Blockly.blockRendering.MarkerSvg.prototype.showAtLocation_","curNodeAsConnection","showWithBlock_","showWithOutput_","showWithInput_","showWithNext_","showWithPrevious_","showWithField_","showWithCoordinates_","showWithStack_","showWithBlockPrevOutput_","Blockly.blockRendering.MarkerSvg.prototype.showWithBlockPrevOutput_","markerHeight","markerOffset","connectionShape","positionPrevious_","positionOutput_","positionBlock_","showCurrent_","Blockly.blockRendering.MarkerSvg.prototype.showWithBlock_","Blockly.blockRendering.MarkerSvg.prototype.showWithPrevious_","Blockly.blockRendering.MarkerSvg.prototype.showWithOutput_","Blockly.blockRendering.MarkerSvg.prototype.showWithCoordinates_","positionLine_","Blockly.blockRendering.MarkerSvg.prototype.showWithField_","positionRect_","Blockly.blockRendering.MarkerSvg.prototype.showWithInput_","positionInput_","Blockly.blockRendering.MarkerSvg.prototype.showWithNext_","Blockly.blockRendering.MarkerSvg.prototype.showWithStack_","yPadding","Blockly.blockRendering.MarkerSvg.prototype.showCurrent_","Blockly.blockRendering.MarkerSvg.prototype.positionBlock_","markerPath","markerBlock_","Blockly.blockRendering.MarkerSvg.prototype.positionInput_","markerInput_","Blockly.blockRendering.MarkerSvg.prototype.positionLine_","markerSvgLine_","Blockly.blockRendering.MarkerSvg.prototype.positionOutput_","Blockly.blockRendering.MarkerSvg.prototype.positionPrevious_","Blockly.blockRendering.MarkerSvg.prototype.positionRect_","markerSvgRect_","Blockly.blockRendering.MarkerSvg.prototype.flipRtl_","Blockly.blockRendering.MarkerSvg.prototype.hide","Blockly.blockRendering.MarkerSvg.prototype.fireMarkerEvent_","eventType","getBlinkProperties_","Blockly.blockRendering.MarkerSvg.prototype.getBlinkProperties_","Blockly.blockRendering.MarkerSvg.prototype.createDomInternal_","blinkProperties","Blockly.blockRendering.MarkerSvg.prototype.applyColour_","_curNode","Blockly.blockRendering.MarkerSvg.prototype.dispose","Types","NONE","HAT","ICON","SPACER","BETWEEN_ROW_SPACER","IN_ROW_SPACER","EXTERNAL_VALUE_INPUT","INLINE_INPUT","STATEMENT_INPUT","CONNECTION","PREVIOUS_CONNECTION","NEXT_CONNECTION","OUTPUT_CONNECTION","CORNER","LEFT_SQUARE_CORNER","LEFT_ROUND_CORNER","RIGHT_SQUARE_CORNER","RIGHT_ROUND_CORNER","JAGGED_EDGE","TOP_ROW","BOTTOM_ROW","INPUT_ROW","LEFT_CORNER","RIGHT_CORNER","nextTypeValue_","Blockly.blockRendering.Types.getType","isField","Blockly.blockRendering.Types.isField","isHat","Blockly.blockRendering.Types.isHat","isIcon","Blockly.blockRendering.Types.isIcon","isSpacer","Blockly.blockRendering.Types.isSpacer","isInRowSpacer","Blockly.blockRendering.Types.isInRowSpacer","isInput","Blockly.blockRendering.Types.isInput","isExternalInput","Blockly.blockRendering.Types.isExternalInput","isInlineInput","Blockly.blockRendering.Types.isInlineInput","isStatementInput","Blockly.blockRendering.Types.isStatementInput","isPreviousConnection","Blockly.blockRendering.Types.isPreviousConnection","isNextConnection","Blockly.blockRendering.Types.isNextConnection","isPreviousOrNextConnection","Blockly.blockRendering.Types.isPreviousOrNextConnection","isLeftRoundedCorner","Blockly.blockRendering.Types.isLeftRoundedCorner","isRightRoundedCorner","Blockly.blockRendering.Types.isRightRoundedCorner","isLeftSquareCorner","Blockly.blockRendering.Types.isLeftSquareCorner","isRightSquareCorner","Blockly.blockRendering.Types.isRightSquareCorner","isCorner","Blockly.blockRendering.Types.isCorner","isJaggedEdge","Blockly.blockRendering.Types.isJaggedEdge","isRow","Blockly.blockRendering.Types.isRow","isBetweenRowSpacer","Blockly.blockRendering.Types.isBetweenRowSpacer","isTopRow","Blockly.blockRendering.Types.isTopRow","isBottomRow","Blockly.blockRendering.Types.isBottomRow","isTopOrBottomRow","Blockly.blockRendering.Types.isTopOrBottomRow","isInputRow","Blockly.blockRendering.Types.isInputRow","Measurable","Blockly.blockRendering.Measurable","centerline","xPos","notchOffset","Blockly.blockRendering.Connection","connectionModel","isDynamicShape","OutputConnection","Blockly.blockRendering.OutputConnection","startX","connectionOffsetY","connectionOffsetX","PreviousConnection","Blockly.blockRendering.PreviousConnection","NextConnection","Blockly.blockRendering.NextConnection","InputConnection","Blockly.blockRendering.InputConnection","connectedBlock","connectedBlockWidth","connectedBlockHeight","InlineInput","Blockly.blockRendering.InlineInput","connectionHeight","connectionWidth","StatementInput","Blockly.blockRendering.StatementInput","ExternalValueInput","Blockly.blockRendering.ExternalValueInput","Blockly.blockRendering.Icon","JaggedEdge","Blockly.blockRendering.JaggedEdge","Blockly.blockRendering.Field","flipRtl","Hat","Blockly.blockRendering.Hat","ascenderHeight","SquareCorner","Blockly.blockRendering.SquareCorner","opt_position","RoundCorner","Blockly.blockRendering.RoundCorner","InRowSpacer","Blockly.blockRendering.InRowSpacer","Row","Blockly.blockRendering.Row","widthWithConnectedBlocks","minWidth","minHeight","hasJaggedEdge","hasDummyInput","hasInlineInput","hasStatement","hasExternalInput","measure","Blockly.blockRendering.Row.prototype.measure","getLastInput","Blockly.blockRendering.Row.prototype.getLastInput","startsWithElemSpacer","Blockly.blockRendering.Row.prototype.startsWithElemSpacer","endsWithElemSpacer","Blockly.blockRendering.Row.prototype.endsWithElemSpacer","getFirstSpacer","Blockly.blockRendering.Row.prototype.getFirstSpacer","getLastSpacer","Blockly.blockRendering.Row.prototype.getLastSpacer","TopRow","Blockly.blockRendering.TopRow","capline","hasPreviousConnection","hasLeftSquareCorner","Blockly.blockRendering.TopRow.prototype.hasLeftSquareCorner","hasHat","hasRightSquareCorner","Blockly.blockRendering.TopRow.prototype.hasRightSquareCorner","Blockly.blockRendering.TopRow.prototype.measure","Blockly.blockRendering.TopRow.prototype.startsWithElemSpacer","Blockly.blockRendering.TopRow.prototype.endsWithElemSpacer","BottomRow","Blockly.blockRendering.BottomRow","hasNextConnection","descenderHeight","Blockly.blockRendering.BottomRow.prototype.hasLeftSquareCorner","Blockly.blockRendering.BottomRow.prototype.hasRightSquareCorner","Blockly.blockRendering.BottomRow.prototype.measure","Blockly.blockRendering.BottomRow.prototype.startsWithElemSpacer","Blockly.blockRendering.BottomRow.prototype.endsWithElemSpacer","SpacerRow","Blockly.blockRendering.SpacerRow","followsStatement","Blockly.blockRendering.SpacerRow.prototype.measure","InputRow","Blockly.blockRendering.InputRow","connectedBlockWidths","Blockly.blockRendering.InputRow.prototype.measure","Blockly.blockRendering.InputRow.prototype.endsWithElemSpacer","RenderInfo","Blockly.blockRendering.RenderInfo","statementEdge","widthWithChildren","rows","inputRows","hiddenIcons","topRow","bottomRow","startY","Blockly.blockRendering.RenderInfo.prototype.getRenderer","Blockly.blockRendering.RenderInfo.prototype.measure","createRows_","addElemSpacing_","addRowSpacing_","computeBounds_","alignRowElements_","finalize_","Blockly.blockRendering.RenderInfo.prototype.createRows_","populateTopRow_","activeRow","iconInfo","lastInput","shouldStartNewRow_","addInput_","populateBottomRow_","Blockly.blockRendering.RenderInfo.prototype.populateTopRow_","hasPrevious","leftSquareCorner","rightSquareCorner","Blockly.blockRendering.RenderInfo.prototype.populateBottomRow_","Blockly.blockRendering.RenderInfo.prototype.addInput_","Blockly.blockRendering.RenderInfo.prototype.shouldStartNewRow_","Blockly.blockRendering.RenderInfo.prototype.addElemSpacing_","oldElems","getInRowSpacing_","Blockly.blockRendering.RenderInfo.prototype.getInRowSpacing_","Blockly.blockRendering.RenderInfo.prototype.computeBounds_","widestStatementRowFields","blockWidth","widestRowWithConnectedBlocks","statementInput","Blockly.blockRendering.RenderInfo.prototype.alignRowElements_","alignStatementRow_","currentWidth","missingSpace","getDesiredRowWidth_","desiredWidth","addAlignmentPadding_","Blockly.blockRendering.RenderInfo.prototype.getDesiredRowWidth_","_row","Blockly.blockRendering.RenderInfo.prototype.addAlignmentPadding_","firstSpacer","lastSpacer","Blockly.blockRendering.RenderInfo.prototype.alignStatementRow_","Blockly.blockRendering.RenderInfo.prototype.addRowSpacing_","oldRows","makeSpacerRow_","Blockly.blockRendering.RenderInfo.prototype.makeSpacerRow_","getSpacerRowHeight_","getSpacerRowWidth_","spacer","precedesStatement","Blockly.blockRendering.RenderInfo.prototype.getSpacerRowWidth_","_prev","_next","Blockly.blockRendering.RenderInfo.prototype.getSpacerRowHeight_","getElemCenterline_","Blockly.blockRendering.RenderInfo.prototype.getElemCenterline_","recordElemPositions_","Blockly.blockRendering.RenderInfo.prototype.recordElemPositions_","xCursor","Blockly.blockRendering.RenderInfo.prototype.finalize_","yCursor","Drawer","Blockly.blockRendering.Drawer","info","info_","topLeft_","inlinePath_","outlinePath_","Blockly.blockRendering.Drawer.prototype.draw","hideHiddenIcons_","drawOutline_","drawInternals_","setPath","flipRTL","renderingDebugger","drawDebug","recordSizeOnBlock_","Blockly.blockRendering.Drawer.prototype.recordSizeOnBlock_","Blockly.blockRendering.Drawer.prototype.hideHiddenIcons_","Blockly.blockRendering.Drawer.prototype.drawOutline_","drawTop_","drawJaggedEdge_","drawStatementInput_","drawValueInput_","drawRightSideRow_","drawBottom_","drawLeft_","Blockly.blockRendering.Drawer.prototype.drawTop_","positionPreviousConnection_","Blockly.blockRendering.Drawer.prototype.drawJaggedEdge_","Blockly.blockRendering.Drawer.prototype.drawValueInput_","positionExternalValueConnection_","Blockly.blockRendering.Drawer.prototype.drawStatementInput_","innerHeight","positionStatementInputConnection_","Blockly.blockRendering.Drawer.prototype.drawRightSideRow_","Blockly.blockRendering.Drawer.prototype.drawBottom_","elems","positionNextConnection_","rightCornerYOffset","outlinePath","Blockly.blockRendering.Drawer.prototype.drawLeft_","positionOutputConnection_","tabBottom","Blockly.blockRendering.Drawer.prototype.drawInternals_","drawInlineInput_","layoutField_","Blockly.blockRendering.Drawer.prototype.layoutField_","fieldInfo","Blockly.blockRendering.Drawer.prototype.drawInlineInput_","connectionTop","connectionBottom","positionInlineInputConnection_","Blockly.blockRendering.Drawer.prototype.positionInlineInputConnection_","connX","Blockly.blockRendering.Drawer.prototype.positionStatementInputConnection_","Blockly.blockRendering.Drawer.prototype.positionExternalValueConnection_","Blockly.blockRendering.Drawer.prototype.positionPreviousConnection_","Blockly.blockRendering.Drawer.prototype.positionNextConnection_","connInfo","Blockly.blockRendering.Drawer.prototype.positionOutputConnection_","PathObject","Blockly.blockRendering.PathObject","Blockly.blockRendering.PathObject.prototype.setPath","pathString","Blockly.blockRendering.PathObject.prototype.flipRTL","Blockly.blockRendering.PathObject.prototype.setCursorSvg","Blockly.blockRendering.PathObject.prototype.setMarkerSvg","Blockly.blockRendering.PathObject.prototype.applyColour","updateShadow_","updateDisabled_","Blockly.blockRendering.PathObject.prototype.setStyle","setClass_","Blockly.blockRendering.PathObject.prototype.setClass_","Blockly.blockRendering.PathObject.prototype.updateHighlighted","Blockly.blockRendering.PathObject.prototype.updateShadow_","Blockly.blockRendering.PathObject.prototype.updateDisabled_","Blockly.blockRendering.PathObject.prototype.updateSelected","Blockly.blockRendering.PathObject.prototype.updateDraggingDelete","Blockly.blockRendering.PathObject.prototype.updateInsertionMarker","Blockly.blockRendering.PathObject.prototype.updateMovable","Blockly.blockRendering.PathObject.prototype.updateReplacementFade","Blockly.blockRendering.PathObject.prototype.updateShapeForInputHighlight","_conn","_enable","Renderer","Blockly.blockRendering.Renderer","overrides","Blockly.blockRendering.Renderer.prototype.getClassName","Blockly.blockRendering.Renderer.prototype.init","makeConstants_","Blockly.blockRendering.Renderer.prototype.createDom","Blockly.blockRendering.Renderer.prototype.refreshDom","previousConstants","Blockly.blockRendering.Renderer.prototype.dispose","Blockly.blockRendering.Renderer.prototype.makeConstants_","makeRenderInfo_","Blockly.blockRendering.Renderer.prototype.makeRenderInfo_","makeDrawer_","Blockly.blockRendering.Renderer.prototype.makeDrawer_","makeDebugger_","Blockly.blockRendering.Renderer.prototype.makeDebugger_","Blockly.blockRendering.Renderer.prototype.makeMarkerDrawer","Blockly.blockRendering.Renderer.prototype.makePathObject","Blockly.blockRendering.Renderer.prototype.getConstants","Blockly.blockRendering.Renderer.prototype.shouldHighlightConnection","orphanCanConnectAtEnd","Blockly.blockRendering.Renderer.prototype.orphanCanConnectAtEnd","localType","orphanConnection","lastConnection","Blockly.blockRendering.Renderer.prototype.getConnectionPreviewMethod","Blockly.blockRendering.Renderer.prototype.render","Blockly.geras","geras","Blockly.geras.ConstantProvider","DARK_PATH_OFFSET","MAX_BOTTOM_WIDTH","Blockly.geras.ConstantProvider.prototype.getCSS_","Highlighter","Blockly.geras.Highlighter","inlineSteps_","steps_","RTL_","highlightConstants_","getHighlightConstants","highlightOffset_","outsideCornerPaths_","OUTSIDE_CORNER","insideCornerPaths_","INSIDE_CORNER","puzzleTabPaths_","notchPaths_","startPaths_","jaggedTeethPaths_","getPath","Blockly.geras.Highlighter.prototype.getPath","drawTopCorner","Blockly.geras.Highlighter.prototype.drawTopCorner","Blockly.geras.Highlighter.prototype.drawJaggedEdge_","drawValueInput","Blockly.geras.Highlighter.prototype.drawValueInput","belowTabHeight","drawStatementInput","Blockly.geras.Highlighter.prototype.drawStatementInput","drawRightSideRow","Blockly.geras.Highlighter.prototype.drawRightSideRow","rightEdge","drawBottomRow","Blockly.geras.Highlighter.prototype.drawBottomRow","cornerElem","drawLeft","Blockly.geras.Highlighter.prototype.drawLeft","drawInlineInput","Blockly.geras.Highlighter.prototype.drawInlineInput","connectionRight","bottomHighlightWidth","aboveTabHeight","Blockly.geras.InlineInput","Blockly.geras.StatementInput","Blockly.geras.RenderInfo","Blockly.geras.RenderInfo.prototype.getRenderer","Blockly.geras.RenderInfo.prototype.populateBottomRow_","Blockly.geras.RenderInfo.prototype.addInput_","Blockly.geras.RenderInfo.prototype.addElemSpacing_","hasExternalInputs","Blockly.geras.RenderInfo.prototype.getInRowSpacing_","Blockly.geras.RenderInfo.prototype.getSpacerRowHeight_","Blockly.geras.RenderInfo.prototype.getElemCenterline_","Blockly.geras.RenderInfo.prototype.alignRowElements_","nextRightEdge","prevInput","prevRightEdge","Blockly.geras.RenderInfo.prototype.getDesiredRowWidth_","Blockly.geras.RenderInfo.prototype.finalize_","heightWithoutHat","diff","Blockly.geras.Drawer","highlighter_","Blockly.geras.Drawer.prototype.draw","setHighlightPath","Blockly.geras.Drawer.prototype.drawTop_","Blockly.geras.Drawer.prototype.drawJaggedEdge_","Blockly.geras.Drawer.prototype.drawValueInput_","Blockly.geras.Drawer.prototype.drawStatementInput_","Blockly.geras.Drawer.prototype.drawRightSideRow_","Blockly.geras.Drawer.prototype.drawBottom_","Blockly.geras.Drawer.prototype.drawLeft_","Blockly.geras.Drawer.prototype.drawInlineInput_","Blockly.geras.Drawer.prototype.positionInlineInputConnection_","Blockly.geras.Drawer.prototype.positionStatementInputConnection_","Blockly.geras.Drawer.prototype.positionExternalValueConnection_","Blockly.geras.Drawer.prototype.positionNextConnection_","HighlightConstantProvider","Blockly.geras.HighlightConstantProvider","constantProvider","Blockly.geras.HighlightConstantProvider.prototype.init","makeInsideCorner","makeOutsideCorner","Blockly.geras.HighlightConstantProvider.prototype.makeInsideCorner","distance45outside","SQRT1_2","pathTopRtl","pathBottomRtl","pathBottomLtr","Blockly.geras.HighlightConstantProvider.prototype.makeOutsideCorner","distance45inside","topLeftCornerHighlightRtl","topLeftCornerHighlightLtr","bottomLeftStartY","bottomLeftPath","Blockly.geras.HighlightConstantProvider.prototype.makePuzzleTab","highlightRtlUp","highlightRtlDown","verticalOverlap","highlightLtrUp","highlightLtrDown","Blockly.geras.HighlightConstantProvider.prototype.makeNotch","Blockly.geras.HighlightConstantProvider.prototype.makeJaggedTeeth","Blockly.geras.HighlightConstantProvider.prototype.makeStartHat","hatHeight","pathRtl","pathLtr","Blockly.geras.PathObject","svgPathDark","svgPathLight","Blockly.geras.PathObject.prototype.setPath","Blockly.geras.PathObject.prototype.setHighlightPath","highlightPath","Blockly.geras.PathObject.prototype.flipRTL","Blockly.geras.PathObject.prototype.applyColour","Blockly.geras.PathObject.prototype.setStyle","Blockly.geras.PathObject.prototype.updateHighlighted","Blockly.geras.PathObject.prototype.updateShadow_","Blockly.geras.PathObject.prototype.updateDisabled_","Blockly.geras.Renderer","Blockly.geras.Renderer.prototype.init","makeHighlightConstants_","Blockly.geras.Renderer.prototype.refreshDom","Blockly.geras.Renderer.prototype.makeConstants_","Blockly.geras.Renderer.prototype.makeRenderInfo_","Blockly.geras.Renderer.prototype.makeDrawer_","Blockly.geras.Renderer.prototype.makePathObject","Blockly.geras.Renderer.prototype.makeHighlightConstants_","Blockly.geras.Renderer.prototype.getHighlightConstants","Blockly.thrasos","thrasos","Blockly.thrasos.RenderInfo","Blockly.thrasos.RenderInfo.prototype.getRenderer","Blockly.thrasos.RenderInfo.prototype.addElemSpacing_","Blockly.thrasos.RenderInfo.prototype.getInRowSpacing_","Blockly.thrasos.RenderInfo.prototype.getSpacerRowHeight_","Blockly.thrasos.RenderInfo.prototype.getElemCenterline_","Blockly.thrasos.RenderInfo.prototype.finalize_","Blockly.thrasos.Renderer","Blockly.thrasos.Renderer.prototype.makeRenderInfo_","Blockly.zelos","zelos","Blockly.zelos.ConstantProvider","GRID_UNIT","STATEMENT_INPUT_SPACER_MIN_WIDTH","CURSOR_RADIUS","HEXAGONAL","SQUARE","SHAPE_IN_SHAPE_PADDING","MAX_DYNAMIC_CONNECTION_SHAPE_WIDTH","SELECTED_GLOW_COLOUR","SELECTED_GLOW_SIZE","REPLACEMENT_GLOW_COLOUR","REPLACEMENT_GLOW_SIZE","selectedGlowFilterId","selectedGlowFilter_","replacementGlowFilterId","replacementGlowFilter_","Blockly.zelos.ConstantProvider.prototype.setFontConstants_","Blockly.zelos.ConstantProvider.prototype.init","makeHexagonal","ROUNDED","makeRounded","SQUARED","makeSquared","rightWidth","Blockly.zelos.ConstantProvider.prototype.setDynamicProperties_","selectedGlowSize","replacementGlowSize","Blockly.zelos.ConstantProvider.prototype.dispose","Blockly.zelos.ConstantProvider.prototype.makeStartHat","Blockly.zelos.ConstantProvider.prototype.makeHexagonal","isDynamic","pathRightDown","pathRightUp","Blockly.zelos.ConstantProvider.prototype.makeRounded","blockHeight","remainingHeight","maxHeight","Blockly.zelos.ConstantProvider.prototype.makeSquared","_height","Blockly.zelos.ConstantProvider.prototype.shapeFor","Blockly.zelos.ConstantProvider.prototype.makeNotch","curveWidth","quarterHeight","Blockly.zelos.ConstantProvider.prototype.makeInsideCorners","innerTopRightCorner","innerBottomRightCorner","pathTopRight","pathBottomRight","Blockly.zelos.ConstantProvider.prototype.generateSecondaryColour_","Blockly.zelos.ConstantProvider.prototype.generateTertiaryColour_","Blockly.zelos.ConstantProvider.prototype.createDom","selectedGlowFilter","selectedComponentTransfer","replacementGlowFilter","replacementComponentTransfer","Blockly.zelos.ConstantProvider.prototype.getCSS_","Blockly.zelos.TopRow","Blockly.zelos.TopRow.prototype.endsWithElemSpacer","Blockly.zelos.TopRow.prototype.hasLeftSquareCorner","Blockly.zelos.TopRow.prototype.hasRightSquareCorner","Blockly.zelos.BottomRow","Blockly.zelos.BottomRow.prototype.endsWithElemSpacer","Blockly.zelos.BottomRow.prototype.hasLeftSquareCorner","Blockly.zelos.BottomRow.prototype.hasRightSquareCorner","RightConnectionShape","Blockly.zelos.RightConnectionShape","Blockly.zelos.StatementInput","connectedBottomNextConnection","Blockly.zelos.RenderInfo","isMultiRow","hasStatementInput","rightSide","Blockly.zelos.RenderInfo.prototype.getRenderer","Blockly.zelos.RenderInfo.prototype.measure","adjustXPosition_","Blockly.zelos.RenderInfo.prototype.shouldStartNewRow_","Blockly.zelos.RenderInfo.prototype.getDesiredRowWidth_","Blockly.zelos.RenderInfo.prototype.getInRowSpacing_","Blockly.zelos.RenderInfo.prototype.getSpacerRowHeight_","Blockly.zelos.RenderInfo.prototype.getSpacerRowWidth_","Blockly.zelos.RenderInfo.prototype.getElemCenterline_","Blockly.zelos.RenderInfo.prototype.addInput_","rightAlignedDummyInput","Blockly.zelos.RenderInfo.prototype.addAlignmentPadding_","alignmentDivider","Blockly.zelos.RenderInfo.prototype.adjustXPosition_","notchTotalWidth","minXPos","prevSpacer","nextSpacer","hasPrevNotch","hasNextNotch","prevInRowSpacer","finalizeOutputConnection_","Blockly.zelos.RenderInfo.prototype.finalizeOutputConnection_","rightConnectionWidth","finalizeHorizontalAlignment_","Blockly.zelos.RenderInfo.prototype.finalizeHorizontalAlignment_","totalNegativeSpacing","lastElem","leftNegPadding","getNegativeSpacing_","firstElem","rightNegPadding","minBlockWidth","Blockly.zelos.RenderInfo.prototype.getNegativeSpacing_","outerShape","innerShape","outputShapeType","finalizeVerticalAlignment_","Blockly.zelos.RenderInfo.prototype.finalizeVerticalAlignment_","firstRow","hasSingleTextOrImageField","hasNonShadowConnectedBlocks","MIN_VERTICAL_TIGHTNESTING_HEIGHT","Blockly.zelos.RenderInfo.prototype.finalize_","Blockly.zelos.Drawer","Blockly.zelos.Drawer.prototype.draw","beginDrawing","endDrawing","Blockly.zelos.Drawer.prototype.drawOutline_","drawFlatTop_","drawRightDynamicConnection_","drawFlatBottom_","drawLeftDynamicConnection_","Blockly.zelos.Drawer.prototype.drawLeft_","Blockly.zelos.Drawer.prototype.drawRightSideRow_","cornerHeight","Blockly.zelos.Drawer.prototype.drawRightDynamicConnection_","Blockly.zelos.Drawer.prototype.drawLeftDynamicConnection_","Blockly.zelos.Drawer.prototype.drawFlatTop_","Blockly.zelos.Drawer.prototype.drawFlatBottom_","Blockly.zelos.Drawer.prototype.drawInlineInput_","setOutlinePath","Blockly.zelos.Drawer.prototype.drawStatementInput_","Blockly.zelos.PathObject","svgPathSelected_","outlines_","remainingOutlines_","Blockly.zelos.PathObject.prototype.setPath","Blockly.zelos.PathObject.prototype.applyColour","Blockly.zelos.PathObject.prototype.flipRTL","Blockly.zelos.PathObject.prototype.updateSelected","Blockly.zelos.PathObject.prototype.updateReplacementFade","Blockly.zelos.PathObject.prototype.updateShapeForInputHighlight","getOutlinePath_","Blockly.zelos.PathObject.prototype.beginDrawing","Blockly.zelos.PathObject.prototype.endDrawing","removeOutlinePath_","Blockly.zelos.PathObject.prototype.setOutlinePath","outline","Blockly.zelos.PathObject.prototype.getOutlinePath_","Blockly.zelos.PathObject.prototype.removeOutlinePath_","Blockly.zelos.MarkerSvg","showWithInputOutput_","Blockly.zelos.MarkerSvg.prototype.showWithInputOutput_","offsetInBlock","positionCircle_","Blockly.zelos.MarkerSvg.prototype.showWithOutput_","Blockly.zelos.MarkerSvg.prototype.showWithInput_","Blockly.zelos.MarkerSvg.prototype.showWithBlock_","Blockly.zelos.MarkerSvg.prototype.positionCircle_","markerCircle_","Blockly.zelos.MarkerSvg.prototype.hide","Blockly.zelos.MarkerSvg.prototype.createDomInternal_","Blockly.zelos.MarkerSvg.prototype.applyColour_","Blockly.zelos.Renderer","Blockly.zelos.Renderer.prototype.makeConstants_","Blockly.zelos.Renderer.prototype.makeRenderInfo_","Blockly.zelos.Renderer.prototype.makeDrawer_","Blockly.zelos.Renderer.prototype.makeMarkerDrawer","Blockly.zelos.Renderer.prototype.makePathObject","Blockly.zelos.Renderer.prototype.shouldHighlightConnection","Blockly.zelos.Renderer.prototype.getConnectionPreviewMethod","Dark","Deuteranopia","HighContrast","Tritanopia","Blockly.requires"],"mappings":"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","file":"blockly_compressed.js","sourceRoot":"./"} \ No newline at end of file +{"version":3,"sources":["core/constants.js","core/registry.js","core/utils/global.js","core/msg.js","core/utils/colour.js","core/utils/coordinate.js","core/utils/rect.js","core/utils/string.js","core/utils/size.js","core/utils/style.js","core/utils/useragent.js","core/utils.js","core/events.js","core/events_abstract.js","core/utils/object.js","core/ui_events.js","core/utils/svg.js","core/utils/dom.js","core/block_drag_surface.js","core/utils/idgenerator.js","core/components/component.js","core/css.js","core/utils/math.js","core/dropdowndiv.js","core/grid.js","core/theme.js","core/theme/classic.js","core/utils/keycodes.js","core/keyboard_nav/key_map.js","core/utils/metrics.js","core/utils/toolbox.js","core/utils/xml.js","core/block_events.js","core/workspace_events.js","core/variable_events.js","core/xml.js","core/options.js","core/touch.js","core/scrollbar.js","core/tooltip.js","core/workspace_drag_surface_svg.js","core/keyboard_nav/ast_node.js","core/blocks.js","core/utils/deprecation.js","core/connection.js","core/extensions.js","core/field_registry.js","core/block_animations.js","core/insertion_marker_manager.js","core/block_dragger.js","core/connection_checker.js","core/variable_map.js","core/workspace.js","core/bubble.js","core/ws_comment_events.js","core/bubble_dragger.js","core/workspace_dragger.js","core/flyout_dragger.js","core/keyboard_nav/action.js","core/keyboard_nav/navigation.js","core/gesture.js","core/field.js","core/field_label.js","core/input.js","core/block.js","core/renderers/common/i_path_object.js","core/utils/aria.js","core/menu.js","core/menuitem.js","core/contextmenu.js","core/contextmenu_items.js","core/contextmenu_registry.js","core/rendered_connection.js","core/keyboard_nav/marker.js","core/keyboard_nav/cursor.js","core/keyboard_nav/basic_cursor.js","core/keyboard_nav/tab_navigate_cursor.js","core/block_svg.js","core/renderers/common/block_rendering.js","core/connection_db.js","core/marker_manager.js","core/theme_manager.js","core/touch_gesture.js","core/workspace_audio.js","core/workspace_svg.js","core/inject.js","core/names.js","core/procedures.js","core/variable_model.js","core/variables.js","core/widgetdiv.js","core/blockly.js","core/icon.js","core/warning.js","core/comment.js","core/keyboard_nav/flyout_cursor.js","core/flyout_base.js","core/flyout_horizontal.js","core/flyout_vertical.js","core/flyout_button.js","core/generator.js","core/toolbox/toolbox_item.js","core/toolbox/category.js","core/toolbox/separator.js","core/toolbox/collapsible_category.js","core/toolbox/toolbox.js","core/trashcan.js","core/variables_dynamic.js","core/zoom_controls.js","core/mutator.js","core/field_textinput.js","core/field_angle.js","core/field_checkbox.js","core/field_colour.js","core/field_dropdown.js","core/field_label_serializable.js","core/field_image.js","core/field_multilineinput.js","core/field_number.js","core/field_variable.js","core/utils/svg_paths.js","core/renderers/common/constants.js","core/renderers/common/marker_svg.js","core/renderers/measurables/types.js","core/renderers/measurables/base.js","core/renderers/measurables/connections.js","core/renderers/measurables/inputs.js","core/renderers/measurables/row_elements.js","core/renderers/measurables/rows.js","core/renderers/common/info.js","core/renderers/common/drawer.js","core/renderers/common/path_object.js","core/renderers/common/renderer.js","core/renderers/geras/constants.js","core/renderers/geras/highlighter.js","core/renderers/geras/measurables/inputs.js","core/renderers/geras/info.js","core/renderers/geras/drawer.js","core/renderers/geras/highlight_constants.js","core/renderers/geras/path_object.js","core/renderers/geras/renderer.js","core/renderers/thrasos/info.js","core/renderers/thrasos/renderer.js","core/renderers/zelos/constants.js","core/renderers/zelos/measurables/rows.js","core/renderers/zelos/measurables/row_elements.js","core/renderers/zelos/measurables/inputs.js","core/renderers/zelos/info.js","core/renderers/zelos/drawer.js","core/renderers/zelos/path_object.js","core/renderers/zelos/marker_svg.js","core/renderers/zelos/renderer.js","core/theme/dark.js","core/theme/deuteranopia.js","core/theme/highcontrast.js","core/theme/tritanopia.js","core/requires.js"],"names":["Blockly","CONNECTING_SNAP_RADIUS","SNAP_RADIUS","CURRENT_CONNECTION_PREFERENCE","BUMP_DELAY","BUMP_RANDOMNESS","COLLAPSE_CHARS","LONGPRESS","SOUND_LIMIT","DRAG_STACK","HSV_SATURATION","HSV_VALUE","SPRITE","width","height","url","INPUT_VALUE","OUTPUT_VALUE","NEXT_STATEMENT","PREVIOUS_STATEMENT","DUMMY_INPUT","ALIGN_LEFT","ALIGN_CENTRE","ALIGN_RIGHT","DRAG_NONE","DRAG_STICKY","DRAG_BEGIN","DRAG_FREE","OPPOSITE_TYPE","TOOLBOX_AT_TOP","TOOLBOX_AT_BOTTOM","TOOLBOX_AT_LEFT","TOOLBOX_AT_RIGHT","DELETE_AREA_NONE","DELETE_AREA_TRASH","DELETE_AREA_TOOLBOX","VARIABLE_CATEGORY_NAME","VARIABLE_DYNAMIC_CATEGORY_NAME","PROCEDURE_CATEGORY_NAME","RENAME_VARIABLE_ID","DELETE_VARIABLE_ID","registry","typeMap_","DEFAULT","Type","Blockly.registry.Type","name","name_","prototype","toString","Blockly.registry.Type.prototype.toString","CONNECTION_CHECKER","EVENT","FIELD","RENDERER","TOOLBOX","THEME","TOOLBOX_ITEM","FLYOUTS_VERTICAL_TOOLBOX","FLYOUTS_HORIZONTAL_TOOLBOX","register","Blockly.registry.register","type","registryItem","opt_quiet","String","trim","Error","toLowerCase","typeRegistry","validate_","Blockly.registry.validate_","fromJson","unregister","Blockly.registry.unregister","console","warn","getItem_","Blockly.registry.getItem_","hasItem","Blockly.registry.hasItem","getClass","Blockly.registry.getClass","getObject","Blockly.registry.getObject","getClassFromOptions","Blockly.registry.getClassFromOptions","options","plugin","plugins","typeName","utils","global","self","window","Msg","colour","parse","Blockly.utils.colour.parse","str","hex","names","substring","test","join","rgb","match","r","Number","g","b","rgbToHex","Blockly.utils.colour.rgbToHex","substr","hexToRgb","Blockly.utils.colour.hexToRgb","parseInt","hsvToHex","Blockly.utils.colour.hsvToHex","h","s","v","red","green","blue","sextant","Math","floor","remainder","val1","val2","val3","blend","Blockly.utils.colour.blend","colour1","colour2","factor","hex1","hex2","rgb1","rgb2","round","Coordinate","Blockly.utils.Coordinate","x","y","equals","Blockly.utils.Coordinate.equals","a","distance","Blockly.utils.Coordinate.distance","dx","dy","sqrt","magnitude","Blockly.utils.Coordinate.magnitude","difference","Blockly.utils.Coordinate.difference","sum","Blockly.utils.Coordinate.sum","scale","Blockly.utils.Coordinate.prototype.scale","translate","Blockly.utils.Coordinate.prototype.translate","tx","ty","Rect","Blockly.utils.Rect","top","bottom","left","right","contains","Blockly.utils.Rect.prototype.contains","string","startsWith","Blockly.utils.string.startsWith","prefix","lastIndexOf","shortestStringLength","Blockly.utils.string.shortestStringLength","array","length","reduce","commonWordPrefix","Blockly.utils.string.commonWordPrefix","opt_shortest","wordPrefix","max","len","letter","i","commonWordSuffix","Blockly.utils.string.commonWordSuffix","charAt","wrap","Blockly.utils.string.wrap","text","limit","lines","split","wrapLine_","Blockly.utils.string.wrapLine_","words","score","Infinity","lineCount","lastScore","lastText","wordBreaks","steps","insertedBreaks","wrapMutate_","wrapScore_","wrapToText_","Blockly.utils.string.wrapScore_","lineLengths","linePunctuation","push","maxLength","apply","pow","abs","indexOf","Blockly.utils.string.wrapMutate_","bestScore","bestBreaks","mutatedWordBreaks","concat","mutatedScore","Blockly.utils.string.wrapToText_","undefined","Size","Blockly.utils.Size","Blockly.utils.Size.equals","style","getSize","Blockly.utils.style.getSize","element","getStyle_","getSizeWithDisplay_","originalDisplay","display","originalVisibility","visibility","originalPosition","position","offsetWidth","offsetHeight","Blockly.utils.style.getSizeWithDisplay_","Blockly.utils.style.getStyle_","getComputedStyle","getCascadedStyle","Blockly.utils.style.getComputedStyle","property","document","defaultView","styles","getPropertyValue","Blockly.utils.style.getCascadedStyle","currentStyle","getPageOffset","Blockly.utils.style.getPageOffset","el","pos","box","getBoundingClientRect","documentElement","scrollCoord","pageXOffset","scrollLeft","pageYOffset","scrollTop","getViewportPageOffset","Blockly.utils.style.getViewportPageOffset","body","setElementShown","Blockly.utils.style.setElementShown","isShown","isRightToLeft","Blockly.utils.style.isRightToLeft","getBorderBox","Blockly.utils.style.getBorderBox","parseFloat","scrollIntoContainerView","Blockly.utils.style.scrollIntoContainerView","container","opt_center","offset","getContainerOffsetToScrollInto","Blockly.utils.style.getContainerOffsetToScrollInto","elementPos","containerPos","containerBorder","relX","relY","elementSize","spaceX","clientWidth","spaceY","clientHeight","min","raw","has","rawUpper","toUpperCase","userAgent","IE","EDGE","JAVA_FX","CHROME","WEBKIT","GECKO","ANDROID","IPAD","IPOD","IPHONE","MAC","TABLET","MOBILE","navigator","noEvent","Blockly.utils.noEvent","e","preventDefault","stopPropagation","isTargetInput","Blockly.utils.isTargetInput","target","isContentEditable","dataset","isTextInput","getRelativeXY","Blockly.utils.getRelativeXY","xy","getAttribute","transform","XY_REGEX_","styleComponents","XY_STYLE_REGEX_","getInjectionDivXY_","Blockly.utils.getInjectionDivXY_","parentNode","isRightButton","Blockly.utils.isRightButton","ctrlKey","button","mouseToSvg","Blockly.utils.mouseToSvg","svg","matrix","svgPoint","createSVGPoint","clientX","clientY","getScreenCTM","inverse","matrixTransform","getScrollDeltaPixels","Blockly.utils.getScrollDeltaPixels","deltaMode","deltaX","deltaY","LINE_MODE_MULTIPLIER","PAGE_MODE_MULTIPLIER","tokenizeInterpolation","Blockly.utils.tokenizeInterpolation","message","tokenizeInterpolation_","replaceMessageReferences","Blockly.utils.replaceMessageReferences","interpolatedResult","checkMessageReferences","Blockly.utils.checkMessageReferences","validSoFar","msgTable","m","msgKey","slice","Blockly.utils.tokenizeInterpolation_","parseInterpolationTokens","tokens","chars","state","buffer","number","c","splice","rawKey","keyUpper","bklyKey","rawValue","Array","mergedTokens","genUid","Blockly.utils.genUid","soupLength","soup_","id","random","is3dSupported","Blockly.utils.is3dSupported","cached_","createElement","has3d","transforms","insertBefore","t","computedStyle","removeChild","runAfterPageLoad","Blockly.utils.runAfterPageLoad","fn","readyState","readyStateCheckInterval","setInterval","clearInterval","getViewportBBox","Blockly.utils.getViewportBBox","scrollOffset","arrayRemove","Blockly.utils.arrayRemove","arr","obj","getDocumentScroll","Blockly.utils.getDocumentScroll","win","getBlockTypeCounts","Blockly.utils.getBlockTypeCounts","block","opt_stripFollowing","typeCountsMap","Object","create","descendants","getDescendants","nextBlock","getNextBlock","index","checkBlock","screenToWsCoordinates","Blockly.utils.screenToWsCoordinates","ws","screenCoordinates","screenX","screenY","boundingRect","injectionDiv","getInjectionDiv","clientOffsetPixels","mainOffsetPixels","getOriginOffsetInPixels","finalOffsetPixels","finalOffsetMainWs","parseBlockColour","Blockly.utils.parseBlockColour","dereferenced","hue","isNaN","errorMsg","Events","group_","recordUndo","disabled_","CREATE","BLOCK_CREATE","DELETE","BLOCK_DELETE","CHANGE","BLOCK_CHANGE","MOVE","BLOCK_MOVE","VAR_CREATE","VAR_DELETE","VAR_RENAME","UI","COMMENT_CREATE","COMMENT_DELETE","COMMENT_CHANGE","COMMENT_MOVE","FINISHED_LOADING","BUMP_EVENTS","FIRE_QUEUE_","fire","Blockly.Events.fire","event","isEnabled","setTimeout","fireNow_","Blockly.Events.fireNow_","queue","filter","workspaceId","workspace","Workspace","getById","fireChangeListener","Blockly.Events.filter","queueIn","forward","reverse","mergedQueue","hash","isNull","key","blockId","lastEntry","lastEvent","newParentId","newInputName","newCoordinate","newValue","unshift","clearPendingUndo","Blockly.Events.clearPendingUndo","disable","Blockly.Events.disable","enable","Blockly.Events.enable","Blockly.Events.isEnabled","getGroup","Blockly.Events.getGroup","setGroup","Blockly.Events.setGroup","getDescendantIds","Blockly.Events.getDescendantIds","ids","descendant","Blockly.Events.fromJson","json","eventClass","disableOrphans","Blockly.Events.disableOrphans","getBlockById","parent","getParent","children","child","setEnabled","outputConnection","previousConnection","isDragging","Abstract","Blockly.Events.Abstract","isBlank","group","toJson","Blockly.Events.Abstract.prototype.toJson","Blockly.Events.Abstract.prototype.fromJson","Blockly.Events.Abstract.prototype.isNull","run","Blockly.Events.Abstract.prototype.run","_forward","getEventWorkspace_","Blockly.Events.Abstract.prototype.getEventWorkspace_","object","inherits","Blockly.utils.object.inherits","childCtor","parentCtor","superClass_","constructor","mixin","Blockly.utils.object.mixin","source","deepMerge","Blockly.utils.object.deepMerge","values","Blockly.utils.object.values","keys","map","Ui","Blockly.Events.Ui","opt_block","opt_element","opt_oldValue","opt_newValue","call","oldValue","Blockly.Events.Ui.prototype.toJson","Blockly.Events.Ui.prototype.fromJson","Svg","Blockly.utils.Svg","tagName","tagName_","Blockly.utils.Svg.prototype.toString","ANIMATE","CIRCLE","CLIPPATH","DEFS","FECOMPOSITE","FECOMPONENTTRANSFER","FEFLOOD","FEFUNCA","FEGAUSSIANBLUR","FEPOINTLIGHT","FESPECULARLIGHTING","FILTER","FOREIGNOBJECT","G","IMAGE","LINE","PATH","PATTERN","POLYGON","RECT","SVG","TEXT","TSPAN","dom","SVG_NS","HTML_NS","XLINK_NS","NodeType","ELEMENT_NODE","TEXT_NODE","COMMENT_NODE","DOCUMENT_POSITION_CONTAINED_BY","cacheWidths_","cacheReference_","canvasContext_","createSvgElement","Blockly.utils.dom.createSvgElement","attrs","opt_parent","createElementNS","setAttribute","runtimeStyle","appendChild","addClass","Blockly.utils.dom.addClass","className","classes","removeClasses","Blockly.utils.dom.removeClasses","classNames","classList","removeClass","cssName","Blockly.utils.dom.removeClass","removeAttribute","hasClass","Blockly.utils.dom.hasClass","removeNode","Blockly.utils.dom.removeNode","node","insertAfter","Blockly.utils.dom.insertAfter","newNode","refNode","siblingNode","nextSibling","containsNode","Blockly.utils.dom.containsNode","compareDocumentPosition","setCssTransform","Blockly.utils.dom.setCssTransform","startTextWidthCache","Blockly.utils.dom.startTextWidthCache","stopTextWidthCache","Blockly.utils.dom.stopTextWidthCache","getTextWidth","Blockly.utils.dom.getTextWidth","textElement","textContent","baseVal","getBBox","getComputedTextLength","getFastTextWidth","Blockly.utils.dom.getFastTextWidth","fontSize","fontWeight","fontFamily","getFastTextWidthWithSizeString","Blockly.utils.dom.getFastTextWidthWithSizeString","computeCanvas","getContext","font","measureText","measureFontMetrics","Blockly.utils.dom.measureFontMetrics","span","div","result","alignItems","baseline","offsetTop","BlockDragSurfaceSvg","Blockly.BlockDragSurfaceSvg","container_","createDom","SVG_","dragGroup_","scale_","surfaceXY_","Blockly.BlockDragSurfaceSvg.prototype.createDom","setBlocksAndShow","Blockly.BlockDragSurfaceSvg.prototype.setBlocksAndShow","blocks","childNodes","translateAndScaleGroup","Blockly.BlockDragSurfaceSvg.prototype.translateAndScaleGroup","fixedX","toFixed","fixedY","translateSurfaceInternal_","Blockly.BlockDragSurfaceSvg.prototype.translateSurfaceInternal_","translateSurface","Blockly.BlockDragSurfaceSvg.prototype.translateSurface","getSurfaceTranslation","Blockly.BlockDragSurfaceSvg.prototype.getSurfaceTranslation","Blockly.BlockDragSurfaceSvg.prototype.getGroup","getCurrentBlock","Blockly.BlockDragSurfaceSvg.prototype.getCurrentBlock","firstChild","clearAndHide","Blockly.BlockDragSurfaceSvg.prototype.clearAndHide","opt_newSurface","IdGenerator","nextId_","getNextUniqueId","Blockly.utils.IdGenerator.getNextUniqueId","Component","Blockly.Component","rightToLeft_","defaultRightToLeft","id_","inDocument_","parent_","element_","children_","childIndex_","disposed_","ALREADY_RENDERED","PARENT_UNABLE_TO_BE_SET","CHILD_INDEX_OUT_OF_BOUNDS","ABSTRACT_METHOD","getId","Blockly.Component.prototype.getId","getElement","Blockly.Component.prototype.getElement","setElementInternal","Blockly.Component.prototype.setElementInternal","setParent","Blockly.Component.prototype.setParent","getChild","Blockly.Component.prototype.getParent","isInDocument","Blockly.Component.prototype.isInDocument","Blockly.Component.prototype.createDom","render","Blockly.Component.prototype.render","opt_parentElement","render_","Blockly.Component.prototype.render_","opt_beforeNode","enterDocument","Blockly.Component.prototype.enterDocument","forEachChild","exitDocument","Blockly.Component.prototype.exitDocument","dispose","Blockly.Component.prototype.dispose","disposeInternal","Blockly.Component.prototype.disposeInternal","addChild","Blockly.Component.prototype.addChild","opt_render","addChildAt","getChildCount","Blockly.Component.prototype.addChildAt","contentElement","getContentElement","insertBeforeElement","sibling","getChildAt","nodeType","Blockly.Component.prototype.getContentElement","hasChildren","Blockly.Component.prototype.hasChildren","Blockly.Component.prototype.getChildCount","Blockly.Component.prototype.getChild","Blockly.Component.prototype.getChildAt","Blockly.Component.prototype.forEachChild","f","opt_obj","Css","injected_","Blockly.Css.register","cssArray","CONTENT","inject","Blockly.Css.inject","hasCss","pathToMedia","mediaPath","replace","cssNode","cssTextNode","createTextNode","head","math","toRadians","Blockly.utils.math.toRadians","angleDegrees","PI","toDegrees","Blockly.utils.math.toDegrees","angleRadians","clamp","Blockly.utils.math.clamp","lowerBound","upperBound","temp","DropDownDiv","Blockly.DropDownDiv","boundsElement_","owner_","positionToField_","ARROW_SIZE","BORDER_SIZE","ARROW_HORIZONTAL_PADDING","PADDING_Y","ANIMATION_TIME","animateOutTimer_","onHide_","rendererClassName_","themeClassName_","Blockly.DropDownDiv.createDom","DIV_","parentContainer","content","content_","arrow","arrow_","opacity","transition","addEventListener","setBoundsElement","Blockly.DropDownDiv.setBoundsElement","boundsElement","getContentDiv","Blockly.DropDownDiv.getContentDiv","clearContent","Blockly.DropDownDiv.clearContent","setColour","Blockly.DropDownDiv.setColour","backgroundColour","borderColour","backgroundColor","borderColor","showPositionedByBlock","Blockly.DropDownDiv.showPositionedByBlock","field","opt_onHide","opt_secondaryYOffset","showPositionedByRect_","getScaledBboxOfBlock_","showPositionedByField","Blockly.DropDownDiv.showPositionedByField","getScaledBboxOfField_","Blockly.DropDownDiv.getScaledBboxOfBlock_","blockSvg","getSvgRoot","bBox","scaledHeight","scaledWidth","Blockly.DropDownDiv.getScaledBboxOfField_","getScaledBBox","Blockly.DropDownDiv.showPositionedByRect_","primaryX","primaryY","secondaryY","sourceBlock","getSourceBlock","parentWorkspace","getParentSvg","show","RTL","Blockly.DropDownDiv.show","owner","rtl","secondaryX","direction","mainWorkspace","getMainWorkspace","getRenderer","getClassName","getTheme","positionInternal_","getBoundsInfo_","Blockly.DropDownDiv.getBoundsInfo_","boundPosition","boundSize","getPositionMetrics_","Blockly.DropDownDiv.getPositionMetrics_","boundsInfo","divSize","getPositionBelowMetrics_","getPositionAboveMetrics_","clientTop","getPositionTopOfPageMetrics_","Blockly.DropDownDiv.getPositionBelowMetrics_","xCoords","getPositionX","initialX","divX","initialY","finalX","finalY","arrowX","arrowY","arrowAtTop","arrowVisible","Blockly.DropDownDiv.getPositionAboveMetrics_","Blockly.DropDownDiv.getPositionTopOfPageMetrics_","sourceX","Blockly.DropDownDiv.getPositionX","boundsLeft","boundsRight","divWidth","horizPadding","relativeArrowX","isVisible","Blockly.DropDownDiv.isVisible","hideIfOwner","Blockly.DropDownDiv.hideIfOwner","opt_withoutAnimation","hideWithoutAnimation","hide","Blockly.DropDownDiv.hide","Blockly.DropDownDiv.hideWithoutAnimation","clearTimeout","markFocused","Blockly.DropDownDiv.positionInternal_","metrics","repositionForWindowResize","Blockly.DropDownDiv.repositionForWindowResize","Grid","Blockly.Grid","pattern","gridPattern_","spacing_","length_","line2_","line1_","snapToGrid_","Blockly.Grid.prototype.dispose","shouldSnap","Blockly.Grid.prototype.shouldSnap","getSpacing","Blockly.Grid.prototype.getSpacing","getPatternId","Blockly.Grid.prototype.getPatternId","update","Blockly.Grid.prototype.update","safeSpacing","half","start","end","setLineAttributes_","Blockly.Grid.prototype.setLineAttributes_","line","x1","x2","y1","y2","moveTo","Blockly.Grid.prototype.moveTo","Blockly.Grid.createDom","rnd","gridOptions","defs","gridPattern","Theme","Blockly.Theme","opt_blockStyles","opt_categoryStyles","opt_componentStyles","blockStyles","categoryStyles","componentStyles","fontStyle","startHats","Blockly.Theme.prototype.getClassName","setBlockStyle","Blockly.Theme.prototype.setBlockStyle","blockStyleName","blockStyle","setCategoryStyle","Blockly.Theme.prototype.setCategoryStyle","categoryStyleName","categoryStyle","getComponentStyle","Blockly.Theme.prototype.getComponentStyle","componentName","setComponentStyle","Blockly.Theme.prototype.setComponentStyle","styleValue","setFontStyle","Blockly.Theme.prototype.setFontStyle","setStartHats","Blockly.Theme.prototype.setStartHats","defineTheme","Blockly.Theme.defineTheme","themeObj","theme","base","Themes","Classic","defaultBlockStyles","KeyCodes","WIN_KEY_FF_LINUX","MAC_ENTER","BACKSPACE","TAB","NUM_CENTER","ENTER","SHIFT","CTRL","ALT","PAUSE","CAPS_LOCK","ESC","SPACE","PAGE_UP","PAGE_DOWN","END","HOME","LEFT","UP","RIGHT","DOWN","PLUS_SIGN","PRINT_SCREEN","INSERT","ZERO","ONE","TWO","THREE","FOUR","FIVE","SIX","SEVEN","EIGHT","NINE","FF_SEMICOLON","FF_EQUALS","FF_DASH","FF_HASH","QUESTION_MARK","AT_SIGN","A","B","C","D","E","F","H","I","J","K","L","M","N","O","P","Q","R","S","T","U","V","W","X","Y","Z","META","WIN_KEY_RIGHT","CONTEXT_MENU","NUM_ZERO","NUM_ONE","NUM_TWO","NUM_THREE","NUM_FOUR","NUM_FIVE","NUM_SIX","NUM_SEVEN","NUM_EIGHT","NUM_NINE","NUM_MULTIPLY","NUM_PLUS","NUM_MINUS","NUM_PERIOD","NUM_DIVISION","F1","F2","F3","F4","F5","F6","F7","F8","F9","F10","F11","F12","NUMLOCK","SCROLL_LOCK","FIRST_MEDIA_KEY","LAST_MEDIA_KEY","SEMICOLON","DASH","EQUALS","COMMA","PERIOD","SLASH","APOSTROPHE","TILDE","SINGLE_QUOTE","OPEN_SQUARE_BRACKET","BACKSLASH","CLOSE_SQUARE_BRACKET","WIN_KEY","MAC_FF_META","MAC_WK_CMD_LEFT","MAC_WK_CMD_RIGHT","WIN_IME","VK_NONAME","PHANTOM","user","keyMap","map_","modifierKeys","CONTROL","setActionForKey","Blockly.user.keyMap.setActionForKey","keyCode","action","oldKey","getKeyByAction","setKeyMap","Blockly.user.keyMap.setKeyMap","getKeyMap","Blockly.user.keyMap.getKeyMap","getActionByKeyCode","Blockly.user.keyMap.getActionByKeyCode","Blockly.user.keyMap.getKeyByAction","serializeKeyEvent","Blockly.user.keyMap.serializeKeyEvent","modifiers","keyName","getModifierState","checkModifiers_","Blockly.user.keyMap.checkModifiers_","validModifiers","modifier","createSerializedKey","Blockly.user.keyMap.createSerializedKey","validModifier","createDefaultKeyMap","Blockly.user.keyMap.createDefaultKeyMap","controlK","shiftW","shiftA","shiftS","shiftD","navigation","ACTION_PREVIOUS","ACTION_OUT","ACTION_NEXT","ACTION_IN","ACTION_INSERT","ACTION_MARK","ACTION_DISCONNECT","ACTION_TOOLBOX","ACTION_EXIT","ACTION_TOGGLE_KEYBOARD_NAV","ACTION_MOVE_WS_CURSOR_UP","ACTION_MOVE_WS_CURSOR_LEFT","ACTION_MOVE_WS_CURSOR_DOWN","ACTION_MOVE_WS_CURSOR_RIGHT","Metrics","Blockly.utils.Metrics","toolbox","CATEGORY_TOOLBOX_KIND","FLYOUT_TOOLBOX_KIND","Position","TOP","BOTTOM","convertToolboxDefToJson","Blockly.utils.toolbox.convertToolboxDefToJson","toolboxDef","Element","parseToolboxTree","convertToToolboxJson_","validateToolbox_","toolboxJson","Blockly.utils.toolbox.validateToolbox_","toolboxKind","toolboxContents","convertFlyoutDefToJsonArray","Blockly.utils.toolbox.convertFlyoutDefToJsonArray","flyoutDef","isArray","xmlToJsonArray_","hasCategories","Blockly.utils.toolbox.hasCategories","categories","item","isCategoryCollapsible","Blockly.utils.toolbox.isCategoryCollapsible","categoryInfo","Blockly.utils.toolbox.convertToToolboxJson_","contents","Node","addAttributes_","Blockly.utils.toolbox.xmlToJsonArray_","Blockly.utils.toolbox.addAttributes_","j","attributes","attr","nodeName","value","Blockly.utils.toolbox.parseToolboxTree","outerHTML","Xml","textToDom","TypeError","xml","NAME_SPACE","Blockly.utils.xml.document","Blockly.utils.xml.createElement","Blockly.utils.xml.createTextNode","textToDomDocument","Blockly.utils.xml.textToDomDocument","oParser","DOMParser","parseFromString","domToText","Blockly.utils.xml.domToText","oSerializer","XMLSerializer","serializeToString","BlockBase","Blockly.Events.BlockBase","Blockly.Events.BlockBase.prototype.toJson","Blockly.Events.BlockBase.prototype.fromJson","Change","Blockly.Events.Change","opt_name","BlockChange","Blockly.Events.Change.prototype.toJson","Blockly.Events.Change.prototype.fromJson","Blockly.Events.Change.prototype.isNull","Blockly.Events.Change.prototype.run","mutator","setVisible","getField","setValue","setCommentText","setCollapsed","setInputsInline","oldMutation","mutationToDom","oldMutationDom","domToMutation","Create","Blockly.Events.Create","isShadow","rendered","blockToDomWithXY","blockToDom","BlockCreate","Blockly.Events.Create.prototype.toJson","Blockly.Events.Create.prototype.fromJson","Blockly.Events.Create.prototype.run","domToWorkspace","Delete","Blockly.Events.Delete","oldXml","BlockDelete","Blockly.Events.Delete.prototype.toJson","Blockly.Events.Delete.prototype.fromJson","Blockly.Events.Delete.prototype.run","Move","Blockly.Events.Move","location","currentLocation_","oldParentId","parentId","oldInputName","inputName","oldCoordinate","coordinate","BlockMove","Blockly.Events.Move.prototype.toJson","Blockly.Events.Move.prototype.fromJson","recordNew","Blockly.Events.Move.prototype.recordNew","Blockly.Events.Move.prototype.currentLocation_","input","getInputWithBlock","getRelativeToSurfaceXY","Blockly.Events.Move.prototype.isNull","Blockly.Events.Move.prototype.run","parentBlock","unplug","moveBy","blockConnection","getInput","parentConnection","connection","nextConnection","connect","FinishedLoading","Blockly.Events.FinishedLoading","opt_workspace","Blockly.Events.FinishedLoading.prototype.toJson","Blockly.Events.FinishedLoading.prototype.fromJson","VarBase","Blockly.Events.VarBase","opt_variable","varId","Blockly.Events.VarBase.prototype.toJson","Blockly.Events.VarBase.prototype.fromJson","VarCreate","Blockly.Events.VarCreate","varType","varName","Blockly.Events.VarCreate.prototype.toJson","Blockly.Events.VarCreate.prototype.fromJson","Blockly.Events.VarCreate.prototype.run","createVariable","deleteVariableById","VarDelete","Blockly.Events.VarDelete","Blockly.Events.VarDelete.prototype.toJson","Blockly.Events.VarDelete.prototype.fromJson","Blockly.Events.VarDelete.prototype.run","VarRename","Blockly.Events.VarRename","newName","oldName","Blockly.Events.VarRename.prototype.toJson","Blockly.Events.VarRename.prototype.fromJson","Blockly.Events.VarRename.prototype.run","renameVariableById","workspaceToDom","Blockly.Xml.workspaceToDom","opt_noId","variablesElement","variablesToDom","Variables","allUsedVarModels","hasChildNodes","comments","getTopComments","comment","toXmlWithXY","getTopBlocks","Blockly.Xml.variablesToDom","variableList","variables","variable","Blockly.Xml.blockToDomWithXY","isInsertionMarker","getChildren","DocumentFragment","getWidth","fieldToDom_","Blockly.Xml.fieldToDom_","isSerializable","toXml","allFieldsToDom_","Blockly.Xml.allFieldsToDom_","inputList","fieldRow","fieldDom","Blockly.Xml.blockToDom","mutation","hasAttributes","commentText","getCommentText","size","commentModel","pinned","commentElement","data","dataElement","empty","childBlock","targetBlock","shadow","getShadowDom","cloneShadow_","elem","inputsInline","inputsInlineDefault","isCollapsed","isDeletable","isMovable","isEditable","Blockly.Xml.cloneShadow_","cloneNode","textNode","Blockly.Xml.domToText","domToPrettyText","Blockly.Xml.domToPrettyText","blob","indent","Blockly.Xml.textToDom","doc","getElementsByTagName","clearWorkspaceAndLoadFromXml","Blockly.Xml.clearWorkspaceAndLoadFromXml","setResizesEnabled","clear","blockIds","Blockly.Xml.domToWorkspace","swap","newBlockIds","existingGroup","variablesFirst","xmlChild","xmlChildElement","domToBlock","blockX","hasAttribute","blockY","WorkspaceCommentSvg","fromXml","WorkspaceComment","domToVariables","appendDomToWorkspace","Blockly.Xml.appendDomToWorkspace","bbox","hasOwnProperty","getBlocksBoundingBox","farY","topX","newLeftX","newRightX","newY","blockXY","offsetY","ySeparation","offsetX","Blockly.Xml.domToBlock","xmlBlock","variablesBeforeCreation","getAllVariables","topBlock","domToBlockHeadless_","setConnectionTracking","initSvg","disposed","updateDisabled","resizeContents","initModel","newVariables","getAddedVariables","thisVariable","Blockly.Xml.domToVariables","xmlVariables","Blockly.Xml.domToBlockHeadless_","prototypeName","newBlock","blockChild","childShadowElement","childBlockElement","grandchild","callInitSvg","Comment","getCommentIcon","isInFlyout","domToField_","setShadowDom","isConnected","inline","disabled","deletable","setDeletable","movable","setMovable","editable","setEditable","collapsed","getVarModels","setShadow","Blockly.Xml.domToField_","fieldName","deleteNext","Blockly.Xml.deleteNext","Options","Blockly.Options","readOnly","toolboxJsonDef","hasTrashcan","hasCollapse","hasComments","hasDisable","hasSounds","maxTrashcanContents","horizontalLayout","toolboxAtStart","toolboxPosition","oneBasedIndex","renderer","collapse","maxBlocks","maxInstances","moveOptions","parseMoveOptions_","hasScrollbars","scrollbars","languageTree","parseGridOptions_","zoomOptions","parseZoomOptions_","parseThemeOptions_","rendererOverrides","BlocklyOptions","Blockly.BlocklyOptions","Blockly.Options.parseMoveOptions_","move","wheel","drag","Blockly.Options.parseZoomOptions_","zoom","controls","startScale","maxScale","minScale","scaleSpeed","pinch","Blockly.Options.parseGridOptions_","grid","spacing","snap","Blockly.Options.parseThemeOptions_","Touch","TOUCH_ENABLED","touchIdentifier_","TOUCH_MAP","longPid_","longStart","Blockly.longStart","gesture","longStop_","changedTouches","handleRightClick","Blockly.longStop_","clearTouchIdentifier","Blockly.Touch.clearTouchIdentifier","shouldHandleEvent","Blockly.Touch.shouldHandleEvent","isMouseOrTouchEvent","checkTouchIdentifier","getTouchIdentifierFromEvent","Blockly.Touch.getTouchIdentifierFromEvent","pointerId","identifier","Blockly.Touch.checkTouchIdentifier","setClientFromTouch","Blockly.Touch.setClientFromTouch","touchPoint","Blockly.Touch.isMouseOrTouchEvent","isTouchEvent","Blockly.Touch.isTouchEvent","splitEventByTouches","Blockly.Touch.splitEventByTouches","events","newEvent","ScrollbarPair","Blockly.ScrollbarPair","workspace_","hScroll","Scrollbar","vScroll","corner_","scrollbarThickness","getBubbleCanvas","oldHostMetrics_","Blockly.ScrollbarPair.prototype.dispose","resize","Blockly.ScrollbarPair.prototype.resize","hostMetrics","getMetrics","resizeH","resizeV","viewWidth","viewHeight","absoluteTop","absoluteLeft","contentWidth","viewLeft","contentLeft","contentHeight","viewTop","contentTop","maybeFireViewportChangeEvent","set","Blockly.ScrollbarPair.prototype.set","xyRatio","hHandlePosition","ratio","vHandlePosition","vBarLength","scrollViewSize_","getRatio_","setMetrics","setHandlePosition","Blockly.ScrollbarPair.prototype.getRatio_","handlePosition","viewSize","Blockly.Scrollbar","horizontal","opt_pair","opt_class","pair_","horizontal_","createDom_","svgBackground_","outerSvg_","svgHandle_","lengthAttribute_","positionAttribute_","onMouseDownBarWrapper_","bindEventWithChecks_","scrollbar","onMouseDownBar_","onMouseDownHandleWrapper_","onMouseDownHandle_","origin_","startDragMouse_","handleLength_","handlePosition_","isVisible_","containerVisible_","metricsAreEquivalent_","Blockly.Scrollbar.metricsAreEquivalent_","first","second","Blockly.Scrollbar.prototype.dispose","cleanUp_","unbindEvent_","svgGroup_","getThemeManager","unsubscribe","setHandleLength_","Blockly.Scrollbar.prototype.setHandleLength_","newLength","Blockly.Scrollbar.prototype.setHandlePosition","newPosition","setScrollViewSize_","Blockly.Scrollbar.prototype.setScrollViewSize_","newSize","setContainerVisible","Blockly.ScrollbarPair.prototype.setContainerVisible","visible","setPosition","Blockly.Scrollbar.prototype.setPosition","Blockly.Scrollbar.prototype.resize","opt_metrics","resizeHorizontal_","resizeVertical_","onScroll_","Blockly.Scrollbar.prototype.resizeHorizontal_","resizeViewHorizontal","Blockly.Scrollbar.prototype.resizeViewHorizontal","xCoordinate","resizeContentHorizontal","Blockly.Scrollbar.prototype.resizeContentHorizontal","constrainHandle_","Blockly.Scrollbar.prototype.resizeVertical_","resizeViewVertical","Blockly.Scrollbar.prototype.resizeViewVertical","resizeContentVertical","Blockly.Scrollbar.prototype.resizeContentVertical","Blockly.Scrollbar.prototype.createDom_","radius","subscribe","Blockly.Scrollbar.prototype.isVisible","Blockly.Scrollbar.prototype.setContainerVisible","visibilityChanged","updateDisplay_","Blockly.Scrollbar.prototype.setVisible","Blockly.Scrollbar.prototype.updateDisplay_","Blockly.Scrollbar.prototype.onMouseDownBar_","mouseXY","getInverseScreenCTM","mouseLocation","handleXY","handleStart","pageLength","Blockly.Scrollbar.prototype.onMouseDownHandle_","startDragHandle","setupDragSurface","onMouseUpWrapper_","onMouseUpHandle_","onMouseMoveWrapper_","onMouseMoveHandle_","Blockly.Scrollbar.prototype.onMouseMoveHandle_","currentMouse","Blockly.Scrollbar.prototype.onMouseUpHandle_","resetDragSurface","Blockly.Scrollbar.prototype.cleanUp_","hideChaff","Blockly.Scrollbar.prototype.constrainHandle_","Blockly.Scrollbar.prototype.onScroll_","Blockly.Scrollbar.prototype.set","setOrigin","Blockly.Scrollbar.prototype.setOrigin","Tooltip","blocked_","LIMIT","mouseOutPid_","showPid_","lastX_","lastY_","poisonedElement_","OFFSET_X","OFFSET_Y","RADIUS_OK","HOVER_MS","MARGINS","DIV","getTooltipOfObject","Blockly.Tooltip.getTooltipOfObject","getTargetObject_","tooltip","Blockly.Tooltip.getTargetObject_","Blockly.Tooltip.createDom","bindMouseEvents","Blockly.Tooltip.bindMouseEvents","mouseOverWrapper_","bindEvent_","onMouseOver_","mouseOutWrapper_","onMouseOut_","onMouseMove_","unbindMouseEvents","Blockly.Tooltip.unbindMouseEvents","removeEventListener","Blockly.Tooltip.onMouseOver_","currentTarget","Blockly.Tooltip.onMouseOut_","_e","Blockly.Tooltip.onMouseMove_","pageX","pageY","show_","Blockly.Tooltip.dispose","Blockly.Tooltip.hide","Blockly.Tooltip.block","unblock","Blockly.Tooltip.unblock","Blockly.Tooltip.show_","tip","windowWidth","windowHeight","anchorX","anchorY","scrollY","scrollX","WorkspaceDragSurfaceSvg","Blockly.WorkspaceDragSurfaceSvg","Blockly.WorkspaceDragSurfaceSvg.prototype.createDom","Blockly.WorkspaceDragSurfaceSvg.prototype.translateSurface","Blockly.WorkspaceDragSurfaceSvg.prototype.getSurfaceTranslation","Blockly.WorkspaceDragSurfaceSvg.prototype.clearAndHide","newSurface","blockCanvas","bubbleCanvas","previousSibling_","setContentsAndShow","Blockly.WorkspaceDragSurfaceSvg.prototype.setContentsAndShow","previousSibling","ASTNode","Blockly.ASTNode","opt_params","type_","isConnection_","isConnectionType_","location_","wsCoordinate_","processParams_","types","BLOCK","INPUT","OUTPUT","NEXT","PREVIOUS","STACK","WORKSPACE","NAVIGATE_ALL_FIELDS","DEFAULT_OFFSET_Y","Blockly.ASTNode.isConnectionType_","createFieldNode","Blockly.ASTNode.createFieldNode","createConnectionNode","Blockly.ASTNode.createConnectionNode","getParentInput","createInputNode","Blockly.ASTNode.createInputNode","createBlockNode","Blockly.ASTNode.createBlockNode","createStackNode","Blockly.ASTNode.createStackNode","createWorkspaceNode","Blockly.ASTNode.createWorkspaceNode","wsCoordinate","params","createTopNode","Blockly.ASTNode.createTopNode","topConnection","astNode","Blockly.ASTNode.prototype.processParams_","getLocation","Blockly.ASTNode.prototype.getLocation","getType","Blockly.ASTNode.prototype.getType","getWsCoordinate","Blockly.ASTNode.prototype.getWsCoordinate","isConnection","Blockly.ASTNode.prototype.isConnection","findNextForInput_","Blockly.ASTNode.prototype.findNextForInput_","parentInput","curIdx","isClickable","findNextForField_","Blockly.ASTNode.prototype.findNextForField_","fieldIdx","newInput","findPrevForInput_","Blockly.ASTNode.prototype.findPrevForInput_","findPrevForField_","Blockly.ASTNode.prototype.findPrevForField_","navigateBetweenStacks_","Blockly.ASTNode.prototype.navigateBetweenStacks_","curLocation","Block","curRoot","getRootBlock","topBlocks","resultIndex","findTopASTNodeForBlock_","Blockly.ASTNode.prototype.findTopASTNodeForBlock_","getOutAstNodeForBlock_","Blockly.ASTNode.prototype.getOutAstNodeForBlock_","getTopStackBlock","targetConnection","findFirstFieldOrInput_","Blockly.ASTNode.prototype.findFirstFieldOrInput_","inputs","Blockly.ASTNode.prototype.getSourceBlock","next","Blockly.ASTNode.prototype.next","in","Blockly.ASTNode.prototype.in","prev","Blockly.ASTNode.prototype.prev","out","Blockly.ASTNode.prototype.out","blockPos","Blocks","deprecation","Blockly.utils.deprecation.warn","functionName","deprecationDate","deletionDate","opt_use","msg","Connection","Blockly.Connection","sourceBlock_","CAN_CONNECT","REASON_SELF_CONNECTION","REASON_WRONG_TYPE","REASON_TARGET_NULL","REASON_CHECKS_FAILED","REASON_DIFFERENT_WORKSPACES","REASON_SHADOW_PARENT","REASON_DRAG_CHECKS_FAILED","check_","shadowDom_","connect_","Blockly.Connection.prototype.connect_","childConnection","disconnect","orphanBlock","shadowDom","lastConnectionInRow","connectionChecker","canConnect","onFailedConnect","connectReciprocally_","Blockly.Connection.prototype.dispose","Blockly.Connection.prototype.getSourceBlock","isSuperior","Blockly.Connection.prototype.isSuperior","Blockly.Connection.prototype.isConnected","canConnectWithReason","Blockly.Connection.prototype.canConnectWithReason","getConnectionChecker","checkConnection","Blockly.Connection.prototype.checkConnection","checker","reason","getErrorMessage","Blockly.Connection.prototype.getConnectionChecker","isConnectionAllowed","Blockly.Connection.prototype.isConnectionAllowed","candidate","Blockly.Connection.prototype.onFailedConnect","_otherConnection","Blockly.Connection.prototype.connect","otherConnection","eventGroup","Blockly.Connection.connectReciprocally_","singleConnection_","Blockly.Connection.singleConnection_","output","thisConnection","typeChecker","Blockly.Connection.lastConnectionInRow","startBlock","Blockly.Connection.prototype.disconnect","disconnectInternal_","respawnShadow_","Blockly.Connection.prototype.disconnectInternal_","Blockly.Connection.prototype.respawnShadow_","blockShadow","Blockly.Connection.prototype.targetBlock","checkType","Blockly.Connection.prototype.checkType","checkType_","Blockly.Connection.prototype.checkType_","onCheckChanged_","Blockly.Connection.prototype.onCheckChanged_","setCheck","Blockly.Connection.prototype.setCheck","check","getCheck","Blockly.Connection.prototype.getCheck","Blockly.Connection.prototype.setShadowDom","Blockly.Connection.prototype.getShadowDom","neighbours","Blockly.Connection.prototype.neighbours","_maxLimit","Blockly.Connection.prototype.getParentInput","idx","Blockly.Connection.prototype.toString","toDevString","Extensions","ALL_","Blockly.Extensions.register","initFn","registerMixin","Blockly.Extensions.registerMixin","mixinObj","registerMutator","Blockly.Extensions.registerMutator","opt_helperFn","opt_blockList","errorPrefix","checkHasFunction_","hasMutatorDialog","checkMutatorDialog_","Mutator","setMutator","Blockly.Extensions.unregister","Blockly.Extensions.apply","isMutator","extensionFn","checkNoMutatorProperties_","mutatorProperties","getMutatorProperties_","checkBlockHasMutatorProperties_","mutatorPropertiesMatch_","Blockly.Extensions.checkHasFunction_","func","propertyName","Blockly.Extensions.checkNoMutatorProperties_","mutationName","properties","Blockly.Extensions.checkMutatorDialog_","hasCompose","compose","hasDecompose","decompose","Blockly.Extensions.checkBlockHasMutatorProperties_","Blockly.Extensions.getMutatorProperties_","Blockly.Extensions.mutatorPropertiesMatch_","oldProperties","newProperties","buildTooltipForDropdown","Blockly.Extensions.buildTooltipForDropdown","dropdownName","lookupTable","blockTypesChecked","checkDropdownOptionsInTable_","setTooltip","getFieldValue","warning","bind","Blockly.Extensions.checkDropdownOptionsInTable_","dropdown","isOptionListDynamic","getOptions","optionKey","buildTooltipWithFieldText","Blockly.Extensions.buildTooltipWithFieldText","msgTemplate","getText","extensionParentTooltip_","Blockly.Extensions.extensionParentTooltip_","tooltipWhenNotConnected_","getInputsInline","fieldRegistry","Blockly.fieldRegistry.register","fieldClass","Blockly.fieldRegistry.unregister","Blockly.fieldRegistry.fromJson","fieldObject","blockAnimations","disconnectPid_","disconnectGroup_","disposeUiEffect","Blockly.blockAnimations.disposeUiEffect","svgGroup","getAudioManager","play","getSvgXY","clone","translateX_","translateY_","bBox_","disposeUiStep_","Date","Blockly.blockAnimations.disposeUiStep_","workspaceScale","percent","connectionUiEffect","Blockly.blockAnimations.connectionUiEffect","ripple","connectionUiStep_","Blockly.blockAnimations.connectionUiStep_","disconnectUiEffect","Blockly.blockAnimations.disconnectUiEffect","getHeightWidth","atan","DISPLACEMENT","disconnectUiStep_","Blockly.blockAnimations.disconnectUiStep_","DURATION","skew_","skew","sin","WIGGLES","translate_","disconnectUiStop","Blockly.blockAnimations.disconnectUiStop","InsertionMarkerManager","Blockly.InsertionMarkerManager","topBlock_","selected","lastMarker_","lastOnStack_","firstMarker_","createMarkerBlock_","localConnection_","closestConnection_","wouldDeleteBlock_","fadedBlock_","highlightedBlock_","markerConnection_","availableConnections_","initAvailableConnections_","PREVIEW_TYPE","INSERTION_MARKER","INPUT_OUTLINE","REPLACEMENT_FADE","Blockly.InsertionMarkerManager.prototype.dispose","updateAvailableConnections","Blockly.InsertionMarkerManager.prototype.updateAvailableConnections","wouldDeleteBlock","Blockly.InsertionMarkerManager.prototype.wouldDeleteBlock","wouldConnectBlock","Blockly.InsertionMarkerManager.prototype.wouldConnectBlock","applyConnections","Blockly.InsertionMarkerManager.prototype.applyConnections","hidePreview_","inferiorConnection","rootBlock","bringToFront","Blockly.InsertionMarkerManager.prototype.update","dxy","deleteArea","getCandidate_","shouldDelete_","shouldUpdatePreviews_","maybeHidePreview_","maybeShowPreview_","Blockly.InsertionMarkerManager.prototype.createMarkerBlock_","imType","setInsertionMarker","sourceInput","COLLAPSED_INPUT_NAME","resultInput","resultField","sourceField","getValue","Blockly.InsertionMarkerManager.prototype.initAvailableConnections_","available","getConnections_","lastOnStack","lastConnectionInStack","Blockly.InsertionMarkerManager.prototype.shouldUpdatePreviews_","candidateLocal","local","candidateClosest","closest","xDiff","yDiff","curDistance","error","Blockly.InsertionMarkerManager.prototype.getCandidate_","getStartRadius_","myConnection","neighbour","Blockly.InsertionMarkerManager.prototype.getStartRadius_","Blockly.InsertionMarkerManager.prototype.shouldDelete_","wouldConnect","Blockly.InsertionMarkerManager.prototype.maybeShowPreview_","log","showPreview_","Blockly.InsertionMarkerManager.prototype.showPreview_","method","getConnectionPreviewMethod","showInsertionInputOutline_","showInsertionMarker_","showReplacementFade_","shouldHighlightConnection","highlight","Blockly.InsertionMarkerManager.prototype.maybeHidePreview_","closestChanged","localChanged","Blockly.InsertionMarkerManager.prototype.hidePreview_","unhighlight","hideReplacementFade_","hideInsertionInputOutline_","hideInsertionMarker_","Blockly.InsertionMarkerManager.prototype.showInsertionMarker_","imBlock","imConn","getMatchingConnection","positionNearConnection","Blockly.InsertionMarkerManager.prototype.hideInsertionMarker_","markerNext","markerPrev","markerOutput","isFirstInOutputStack","isFirstInStatementStack","innerConnection","previousBlockNextConnection","Blockly.InsertionMarkerManager.prototype.showInsertionInputOutline_","highlightShapeForInput","Blockly.InsertionMarkerManager.prototype.hideInsertionInputOutline_","Blockly.InsertionMarkerManager.prototype.showReplacementFade_","fadeForReplacement","Blockly.InsertionMarkerManager.prototype.hideReplacementFade_","getInsertionMarkers","Blockly.InsertionMarkerManager.prototype.getInsertionMarkers","BlockDragger","Blockly.BlockDragger","draggingBlock_","draggedConnectionManager_","deleteArea_","startXY_","dragIconData_","initIconData_","Blockly.BlockDragger.prototype.dispose","Blockly.BlockDragger.initIconData_","dragIconData","icons","getIcons","getIconLocation","icon","startBlockDrag","Blockly.BlockDragger.prototype.startBlockDrag","currentDragDeltaXY","healStack","fireDragStartEvent_","delta","pixelsToWorkspaceUnits_","newLoc","setDragging","moveToDragSurface","getToolbox","addStyle","Blockly.BlockDragger.prototype.fireDragStartEvent_","dragBlock","Blockly.BlockDragger.prototype.dragBlock","moveDuringDrag","dragIcons_","isDeleteArea","updateCursorDuringBlockDrag_","endBlockDrag","Blockly.BlockDragger.prototype.endBlockDrag","fireDragEndEvent_","moveOffDragSurface","deleted","maybeDeleteBlock_","moveConnections","fireMoveEvent_","scheduleSnapAndBump","removeStyle","Blockly.BlockDragger.prototype.fireDragEndEvent_","Blockly.BlockDragger.prototype.fireMoveEvent_","Blockly.BlockDragger.prototype.maybeDeleteBlock_","trashcan","closeLid","draggingConnections","Blockly.BlockDragger.prototype.updateCursorDuringBlockDrag_","setDeleteStyle","setLidOpen","Blockly.BlockDragger.prototype.pixelsToWorkspaceUnits_","pixelCoord","Blockly.BlockDragger.prototype.dragIcons_","setIconLocation","Blockly.BlockDragger.prototype.getInsertionMarkers","ConnectionChecker","Blockly.ConnectionChecker","Blockly.ConnectionChecker.prototype.canConnect","opt_distance","Blockly.ConnectionChecker.prototype.canConnectWithReason","safety","doSafetyChecks","doTypeChecks","doDragChecks","Blockly.ConnectionChecker.prototype.getErrorMessage","errorCode","Blockly.ConnectionChecker.prototype.doSafetyChecks","blockA","blockB","Blockly.ConnectionChecker.prototype.doTypeChecks","checkArrayOne","checkArrayTwo","Blockly.ConnectionChecker.prototype.doDragChecks","distanceFrom","canConnectToPrevious_","Blockly.ConnectionChecker.prototype.canConnectToPrevious_","getPreviousBlock","VariableMap","Blockly.VariableMap","variableMap_","Blockly.VariableMap.prototype.clear","renameVariable","Blockly.VariableMap.prototype.renameVariable","conflictVar","getVariable","getAllBlocks","renameVariableWithConflict_","renameVariableAndUses_","Blockly.VariableMap.prototype.renameVariableById","getVariableById","Blockly.VariableMap.prototype.renameVariableAndUses_","updateVarName","Blockly.VariableMap.prototype.renameVariableWithConflict_","renameVarById","variableIndex","getVariablesOfType","Blockly.VariableMap.prototype.createVariable","opt_type","opt_id","VariableModel","deleteVariable","Blockly.VariableMap.prototype.deleteVariable","tempVar","Blockly.VariableMap.prototype.deleteVariableById","variableName","uses","getVariableUsesById","procedureName","deleteText","alert","confirmText","confirm","ok","deleteVariableInternal","Blockly.VariableMap.prototype.deleteVariableInternal","Blockly.VariableMap.prototype.getVariable","list","Names","Blockly.VariableMap.prototype.getVariableById","Blockly.VariableMap.prototype.getVariablesOfType","variable_list","getVariableTypes","Blockly.VariableMap.prototype.getVariableTypes","variableMap","getPotentialVariableMap","hasEmpty","Blockly.VariableMap.prototype.getAllVariables","all_variables","getAllVariableNames","Blockly.VariableMap.prototype.getAllVariableNames","allNames","Blockly.VariableMap.prototype.getVariableUsesById","blockVariables","Blockly.Workspace","opt_options","WorkspaceDB_","connectionCheckerClass","topBlocks_","topComments_","commentDB_","listeners_","undoStack_","redoStack_","blockDB_","typedBlocksDB_","potentialVariableMap_","isClearing","MAX_UNDO","connectionDBList","Blockly.Workspace.prototype.dispose","SCAN_ANGLE","sortObjects_","Blockly.Workspace.prototype.sortObjects_","aXY","bXY","addTopBlock","Blockly.Workspace.prototype.addTopBlock","removeTopBlock","Blockly.Workspace.prototype.removeTopBlock","Blockly.Workspace.prototype.getTopBlocks","ordered","sort","addTypedBlock","Blockly.Workspace.prototype.addTypedBlock","removeTypedBlock","Blockly.Workspace.prototype.removeTypedBlock","getBlocksByType","Blockly.Workspace.prototype.getBlocksByType","addTopComment","Blockly.Workspace.prototype.addTopComment","removeTopComment","Blockly.Workspace.prototype.removeTopComment","Blockly.Workspace.prototype.getTopComments","Blockly.Workspace.prototype.getAllBlocks","filtered","Blockly.Workspace.prototype.clear","Blockly.Workspace.prototype.renameVariableById","Blockly.Workspace.prototype.createVariable","Blockly.Workspace.prototype.getVariableUsesById","Blockly.Workspace.prototype.deleteVariableById","Blockly.Workspace.prototype.getVariable","Blockly.Workspace.prototype.getVariableById","Blockly.Workspace.prototype.getVariablesOfType","Blockly.Workspace.prototype.getVariableTypes","Blockly.Workspace.prototype.getAllVariables","Blockly.Workspace.prototype.getAllVariableNames","Blockly.Workspace.prototype.getWidth","Blockly.Workspace.prototype.newBlock","remainingCapacity","Blockly.Workspace.prototype.remainingCapacity","remainingCapacityOfType","Blockly.Workspace.prototype.remainingCapacityOfType","maxInstanceOfType","isCapacityAvailable","Blockly.Workspace.prototype.isCapacityAvailable","hasBlockLimits","copyableBlocksCount","Blockly.Workspace.prototype.hasBlockLimits","getUndoStack","Blockly.Workspace.prototype.getUndoStack","getRedoStack","Blockly.Workspace.prototype.getRedoStack","undo","Blockly.Workspace.prototype.undo","redo","inputStack","outputStack","inputEvent","pop","clearUndo","Blockly.Workspace.prototype.clearUndo","addChangeListener","Blockly.Workspace.prototype.addChangeListener","removeChangeListener","Blockly.Workspace.prototype.removeChangeListener","Blockly.Workspace.prototype.fireChangeListener","shift","Blockly.Workspace.prototype.getBlockById","setBlockById","Blockly.Workspace.prototype.setBlockById","removeBlockById","Blockly.Workspace.prototype.removeBlockById","getCommentById","Blockly.Workspace.prototype.getCommentById","allInputsFilled","Blockly.Workspace.prototype.allInputsFilled","opt_shadowBlocksAreFilled","Blockly.Workspace.prototype.getPotentialVariableMap","createPotentialVariableMap","Blockly.Workspace.prototype.createPotentialVariableMap","getVariableMap","Blockly.Workspace.prototype.getVariableMap","setVariableMap","Blockly.Workspace.prototype.setVariableMap","Blockly.Workspace.getById","getAll","Blockly.Workspace.getAll","workspaces","Bubble","Blockly.Bubble","shape","anchorXY","bubbleWidth","bubbleHeight","shape_","onMouseDownResizeWrapper_","onMouseDownBubbleWrapper_","moveCallback_","resizeCallback_","angle","ARROW_ANGLE","arrow_radians_","canvas","setAnchorLocation","BORDER_WIDTH","setBubbleSize","positionBubble_","renderArrow_","rendered_","ARROW_THICKNESS","ARROW_BEND","ANCHOR_RADIUS","unbindDragEvents_","Blockly.Bubble.unbindDragEvents_","bubbleMouseUp_","Blockly.Bubble.bubbleMouseUp_","anchorXY_","relativeLeft_","relativeTop_","width_","height_","autoLayout_","Blockly.Bubble.prototype.createDom_","hasResize","bubbleGroup_","getConstants","embossFilterId","bubbleEmboss","bubbleArrow_","bubbleBack_","resizeGroup_","resizeSize","bubbleMouseDown_","resizeMouseDown_","Blockly.Bubble.prototype.getSvgRoot","setSvgId","Blockly.Bubble.prototype.setSvgId","Blockly.Bubble.prototype.bubbleMouseDown_","getGesture","handleBubbleStart","showContextMenu","Blockly.Bubble.prototype.showContextMenu","Blockly.Bubble.prototype.isDeletable","Blockly.Bubble.prototype.setDeleteStyle","_enable","Blockly.Bubble.prototype.resizeMouseDown_","promote","startDrag","resizeMouseMove_","Blockly.Bubble.prototype.resizeMouseMove_","newXY","moveDrag","registerResizeEvent","Blockly.Bubble.prototype.registerResizeEvent","callback","registerMoveEvent","Blockly.Bubble.prototype.registerMoveEvent","Blockly.Bubble.prototype.promote","lastChild","Blockly.Bubble.prototype.setAnchorLocation","layoutBubble_","Blockly.Bubble.prototype.layoutBubble_","optimalLeft","getOptimalRelativeLeft_","optimalTop","getOptimalRelativeTop_","topPosition","MIN_BLOCK_HEIGHT","startPosition","endPosition","bottomPosition","closerPosition","fartherPosition","topPositionOverlap","getOverlap_","startPositionOverlap","closerPositionOverlap","fartherPositionOverlap","mostOverlap","Blockly.Bubble.prototype.getOverlap_","relativeMin","Blockly.Bubble.prototype.getOptimalRelativeLeft_","relativeLeft","bubbleRight","bubbleLeft","workspaceRight","workspaceLeft","Blockly.Bubble.prototype.getOptimalRelativeTop_","relativeTop","bubbleTop","bubbleBottom","workspaceTop","workspaceBottom","Blockly.Bubble.prototype.positionBubble_","Blockly.Bubble.prototype.moveTo","Blockly.Bubble.prototype.setDragging","adding","getBubbleSize","Blockly.Bubble.prototype.getBubbleSize","Blockly.Bubble.prototype.setBubbleSize","doubleBorderWidth","Blockly.Bubble.prototype.renderArrow_","relBubbleX","relBubbleY","relAnchorX","relAnchorY","rise","hypotenuse","acos","rightAngle","rightRise","rightRun","cos","bubbleSize","thickness","backoffRatio","baseX1","baseY1","baseX2","baseY2","swirlAngle","swirlRise","swirlRun","Blockly.Bubble.prototype.setColour","hexColour","Blockly.Bubble.prototype.dispose","Blockly.Bubble.prototype.moveDuringDrag","dragSurface","Blockly.Bubble.prototype.getRelativeToSurfaceXY","setAutoLayout","Blockly.Bubble.prototype.setAutoLayout","CommentBase","Blockly.Events.CommentBase","opt_comment","commentId","Blockly.Events.CommentBase.prototype.toJson","Blockly.Events.CommentBase.prototype.fromJson","CommentChange","Blockly.Events.CommentChange","opt_oldContents","opt_newContents","oldContents_","newContents_","Blockly.Events.CommentChange.prototype.toJson","Blockly.Events.CommentChange.prototype.fromJson","Blockly.Events.CommentChange.prototype.isNull","Blockly.Events.CommentChange.prototype.run","setContent","CommentCreate","Blockly.Events.CommentCreate","Blockly.Events.CommentCreate.prototype.toJson","Blockly.Events.CommentCreate.prototype.fromJson","Blockly.Events.CommentCreate.prototype.run","CommentCreateDeleteHelper","Blockly.Events.CommentCreateDeleteHelper","CommentDelete","Blockly.Events.CommentDelete","Blockly.Events.CommentDelete.prototype.toJson","Blockly.Events.CommentDelete.prototype.fromJson","Blockly.Events.CommentDelete.prototype.run","CommentMove","Blockly.Events.CommentMove","comment_","oldCoordinate_","getXY","newCoordinate_","Blockly.Events.CommentMove.prototype.recordNew","setOldCoordinate","Blockly.Events.CommentMove.prototype.setOldCoordinate","Blockly.Events.CommentMove.prototype.toJson","Blockly.Events.CommentMove.prototype.fromJson","Blockly.Events.CommentMove.prototype.isNull","Blockly.Events.CommentMove.prototype.run","current","BubbleDragger","Blockly.BubbleDragger","bubble","draggingBubble_","wouldDeleteBubble_","dragSurface_","getBlockDragSurface","Blockly.BubbleDragger.prototype.dispose","startBubbleDrag","Blockly.BubbleDragger.prototype.startBubbleDrag","moveToDragSurface_","dragBubble","Blockly.BubbleDragger.prototype.dragBubble","updateCursorDuringBubbleDrag_","maybeDeleteBubble_","Blockly.BubbleDragger.prototype.maybeDeleteBubble_","Blockly.BubbleDragger.prototype.updateCursorDuringBubbleDrag_","endBubbleDrag","Blockly.BubbleDragger.prototype.endBubbleDrag","Blockly.BubbleDragger.prototype.fireMoveEvent_","isComment","Blockly.BubbleDragger.prototype.pixelsToWorkspaceUnits_","Blockly.BubbleDragger.prototype.moveToDragSurface_","WorkspaceDragger","Blockly.WorkspaceDragger","startScrollXY_","Blockly.WorkspaceDragger.prototype.dispose","Blockly.WorkspaceDragger.prototype.startDrag","unselect","endDrag","Blockly.WorkspaceDragger.prototype.endDrag","Blockly.WorkspaceDragger.prototype.drag","scroll","FlyoutDragger","Blockly.FlyoutDragger","flyout","getWorkspace","scrollbar_","horizontalLayout_","Blockly.FlyoutDragger.prototype.drag","Action","Blockly.Action","desc","loggingCallback","STATE_FLYOUT","STATE_WS","STATE_TOOLBOX","WS_MOVE_DISTANCE","currentState_","actionNames","IN","OUT","MARK","DISCONNECT","EXIT","TOGGLE_KEYBOARD_NAV","MOVE_WS_CURSOR_UP","MOVE_WS_CURSOR_DOWN","MOVE_WS_CURSOR_LEFT","MOVE_WS_CURSOR_RIGHT","MARKER_NAME","getMarker","Blockly.navigation.getMarker","getNavigationWorkspace","Blockly.navigation.getNavigationWorkspace","focusToolbox_","Blockly.navigation.focusToolbox_","resetFlyout_","getCurNode","markAtCursor_","getSelectedItem","selectItemByPosition","focusFlyout_","Blockly.navigation.focusFlyout_","getFlyout","getFlyoutCursor_","setCurNode","focusWorkspace_","Blockly.navigation.focusWorkspace_","cursor","getCursor","reset","wsCoord","wsNode","Blockly.navigation.getFlyoutCursor_","insertFromFlyout","Blockly.navigation.insertFromFlyout","curBlock","createBlock","modify_","warn_","removeMark_","Blockly.navigation.resetFlyout_","shouldHide","modifyWarn_","Blockly.navigation.modifyWarn_","markerNode","cursorNode","markerType","cursorType","moveBlockToWorkspace_","Blockly.navigation.moveBlockToWorkspace_","Blockly.navigation.modify_","cursorLoc","markerLoc","insertBlock","disconnectChild_","Blockly.navigation.disconnectChild_","movingConnection","destConnection","movingBlock","destBlock","getInferiorConnection_","moveAndConnect_","Blockly.navigation.moveAndConnect_","Blockly.navigation.getInferiorConnection_","getSuperiorConnection_","Blockly.navigation.getSuperiorConnection_","Blockly.navigation.connect_","movingInferior","destSuperior","movingSuperior","destInferior","Blockly.navigation.insertBlock","inputConnection","disconnectBlocks_","Blockly.navigation.disconnectBlocks_","curNode","curConnection","superiorConnection","log_","bumpAwayFrom","connectionNode","Blockly.navigation.markAtCursor_","Blockly.navigation.removeMark_","marker","setState","Blockly.navigation.setState","newState","moveCursorOnBlockDelete","Blockly.navigation.moveCursorOnBlockDelete","deletedBlock","moveCursorOnBlockMutation","Blockly.navigation.moveCursorOnBlockMutation","mutatedBlock","enableKeyboardAccessibility","Blockly.navigation.enableKeyboardAccessibility","keyboardAccessibilityMode","disableKeyboardAccessibility","Blockly.navigation.disableKeyboardAccessibility","Blockly.navigation.log_","Blockly.navigation.warn_","error_","Blockly.navigation.error_","onKeyPress","Blockly.navigation.onKeyPress","onBlocklyAction","Blockly.navigation.onBlocklyAction","actionHandled","READONLY_ACTION_LIST","handleActions_","Blockly.navigation.handleActions_","toolboxOnAction_","workspaceOnAction_","flyoutOnAction_","Blockly.navigation.flyoutOnAction_","Blockly.navigation.toolboxOnAction_","moveWSCursor_","Blockly.navigation.moveWSCursor_","xDirection","yDirection","Blockly.navigation.workspaceOnAction_","handleEnterForWS_","Blockly.navigation.handleEnterForWS_","showEditor","Gesture","Blockly.Gesture","creatorWorkspace","mouseDownXY_","currentDragDeltaXY_","startWorkspace_","targetBlock_","startBlock_","startField_","startBubble_","creatorWorkspace_","isDraggingBubble_","isDraggingBlock_","isDraggingWorkspace_","hasExceededDragRadius_","mostRecentEvent_","flyout_","workspaceDragger_","blockDragger_","bubbleDragger_","onUpWrapper_","onMoveWrapper_","isEnding_","hasStarted_","calledUpdateIsDragging_","healStack_","Blockly.Gesture.prototype.dispose","clearGesture","updateFromEvent_","Blockly.Gesture.prototype.updateFromEvent_","currentXY","changed","updateDragDelta_","updateIsDragging_","Blockly.Gesture.prototype.updateDragDelta_","currentDragDelta","limitRadius","FLYOUT_DRAG_RADIUS","DRAG_RADIUS","updateIsDraggingFromFlyout_","Blockly.Gesture.prototype.updateIsDraggingFromFlyout_","isBlockCreatable_","isScrollable","isDragTowardWorkspace","targetWorkspace","updateScreenCalculationsIfScrolled","select","updateIsDraggingBubble_","Blockly.Gesture.prototype.updateIsDraggingBubble_","startDraggingBubble_","updateIsDraggingBlock_","Blockly.Gesture.prototype.updateIsDraggingBlock_","startDraggingBlock_","updateIsDraggingWorkspace_","Blockly.Gesture.prototype.updateIsDraggingWorkspace_","wsMovable","isDraggable","Blockly.Gesture.prototype.updateIsDragging_","Blockly.Gesture.prototype.startDraggingBlock_","Blockly.Gesture.prototype.startDraggingBubble_","doStart","Blockly.Gesture.prototype.doStart","cancel","shiftKey","pointerType","altKey","metaKey","Blockly.Gesture.prototype.bindMouseEvents","handleMove","handleUp","Blockly.Gesture.prototype.handleMove","Blockly.Gesture.prototype.handleUp","isBubbleClick_","doBubbleClick_","isFieldClick_","doFieldClick_","isBlockClick_","doBlockClick_","isWorkspaceClick_","doWorkspaceClick_","Blockly.Gesture.prototype.cancel","Blockly.Gesture.prototype.handleRightClick","bringBlockToFront_","handleWsStart","Blockly.Gesture.prototype.handleWsStart","setStartWorkspace_","fireWorkspaceClick_","Blockly.Gesture.prototype.fireWorkspaceClick_","clickEvent","handleFlyoutStart","Blockly.Gesture.prototype.handleFlyoutStart","setStartFlyout_","handleBlockStart","Blockly.Gesture.prototype.handleBlockStart","setStartBlock","Blockly.Gesture.prototype.handleBubbleStart","setStartBubble","Blockly.Gesture.prototype.doBubbleClick_","setFocus","Blockly.Gesture.prototype.doFieldClick_","Blockly.Gesture.prototype.doBlockClick_","autoClose","Blockly.Gesture.prototype.doWorkspaceClick_","screenCoord","Blockly.Gesture.prototype.bringBlockToFront_","setStartField","Blockly.Gesture.prototype.setStartField","Blockly.Gesture.prototype.setStartBubble","Blockly.Gesture.prototype.setStartBlock","setTargetBlock_","Blockly.Gesture.prototype.setTargetBlock_","Blockly.Gesture.prototype.setStartWorkspace_","Blockly.Gesture.prototype.setStartFlyout_","Blockly.Gesture.prototype.isBubbleClick_","hasStartBubble","Blockly.Gesture.prototype.isBlockClick_","hasStartBlock","Blockly.Gesture.prototype.isFieldClick_","fieldClickable","Blockly.Gesture.prototype.isWorkspaceClick_","Blockly.Gesture.prototype.isDragging","hasStarted","Blockly.Gesture.prototype.hasStarted","Blockly.Gesture.prototype.getInsertionMarkers","inProgress","Blockly.Gesture.inProgress","currentGesture_","Field","Blockly.Field","opt_validator","opt_config","value_","DEFAULT_VALUE","tooltip_","validator_","size_","constants_","mouseDownWrapper_","textContent_","textElement_","borderRect_","fieldGroup_","markerSvg_","cursorSvg_","configure_","setValidator","maxDisplayLength","isDirty_","visible_","clickTarget_","NBSP","EDITABLE","SERIALIZABLE","Blockly.Field.prototype.configure_","config","setSourceBlock","Blockly.Field.prototype.setSourceBlock","Blockly.Field.prototype.getConstants","Blockly.Field.prototype.getSourceBlock","init","Blockly.Field.prototype.init","initView","updateEditable","bindEvents_","Blockly.Field.prototype.initView","createBorderRect_","createTextElement_","Blockly.Field.prototype.initModel","Blockly.Field.prototype.createBorderRect_","FIELD_BORDER_RECT_RADIUS","Blockly.Field.prototype.createTextElement_","FIELD_TEXT_BASELINE_CENTER","Blockly.Field.prototype.bindEvents_","getClickTarget_","onMouseDown_","Blockly.Field.prototype.fromXml","fieldElement","Blockly.Field.prototype.toXml","Blockly.Field.prototype.dispose","WidgetDiv","Blockly.Field.prototype.updateEditable","CURSOR","Blockly.Field.prototype.isClickable","showEditor_","isCurrentlyEditable","Blockly.Field.prototype.isCurrentlyEditable","Blockly.Field.prototype.isSerializable","Blockly.Field.prototype.isVisible","Blockly.Field.prototype.setVisible","root","Blockly.Field.prototype.setValidator","handler","getValidator","Blockly.Field.prototype.getValidator","classValidator","Blockly.Field.prototype.classValidator","callValidator","Blockly.Field.prototype.callValidator","classResult","userValidator","userResult","Blockly.Field.prototype.getSvgRoot","applyColour","Blockly.Field.prototype.applyColour","Blockly.Field.prototype.render_","nodeValue","getDisplayText_","updateSize_","Blockly.Field.prototype.showEditor","opt_e","updateWidth","Blockly.Field.prototype.updateWidth","Blockly.Field.prototype.updateSize_","opt_margin","constants","xOffset","FIELD_BORDER_RECT_X_PADDING","totalWidth","totalHeight","FIELD_TEXT_HEIGHT","FIELD_TEXT_FONTSIZE","FIELD_TEXT_FONTWEIGHT","FIELD_TEXT_FONTFAMILY","FIELD_BORDER_RECT_HEIGHT","positionTextElement_","positionBorderRect_","Blockly.Field.prototype.positionTextElement_","halfHeight","FIELD_TEXT_BASELINE","Blockly.Field.prototype.positionBorderRect_","Blockly.Field.prototype.getSize","Blockly.Field.prototype.getScaledBBox","getAbsoluteXY_","Blockly.Field.prototype.getDisplayText_","Blockly.Field.prototype.getText","getText_","setText","Blockly.Field.prototype.setText","_newText","markDirty","Blockly.Field.prototype.markDirty","forceRerender","Blockly.Field.prototype.forceRerender","bumpNeighbours","updateMarkers_","Blockly.Field.prototype.setValue","validatedValue","doClassValidation_","processValidation_","localValidator","doValueUpdate_","Blockly.Field.prototype.processValidation_","doValueInvalid_","Blockly.Field.prototype.getValue","Blockly.Field.prototype.doClassValidation_","Blockly.Field.prototype.doValueUpdate_","Blockly.Field.prototype.doValueInvalid_","_invalidValue","Blockly.Field.prototype.onMouseDown_","Blockly.Field.prototype.setTooltip","newTip","clickTarget","getTooltip","Blockly.Field.prototype.getTooltip","Blockly.Field.prototype.getClickTarget_","Blockly.Field.prototype.getAbsoluteXY_","referencesVariables","Blockly.Field.prototype.referencesVariables","Blockly.Field.prototype.getParentInput","fieldRows","getFlipRtl","Blockly.Field.prototype.getFlipRtl","isTabNavigable","Blockly.Field.prototype.isTabNavigable","Blockly.Field.prototype.onBlocklyAction","_action","setCursorSvg","Blockly.Field.prototype.setCursorSvg","cursorSvg","setMarkerSvg","Blockly.Field.prototype.setMarkerSvg","markerSvg","Blockly.Field.prototype.updateMarkers_","draw","FieldLabel","Blockly.FieldLabel","opt_value","class_","Blockly.FieldLabel.fromJson","Blockly.FieldLabel.prototype.configure_","Blockly.FieldLabel.prototype.initView","Blockly.FieldLabel.prototype.doClassValidation_","setClass","Blockly.FieldLabel.prototype.setClass","cssClass","Input","Blockly.Input","align","Blockly.Input.prototype.getSourceBlock","appendField","Blockly.Input.prototype.appendField","insertFieldAt","Blockly.Input.prototype.insertFieldAt","fieldDropdown","prefixField","suffixField","removeField","Blockly.Input.prototype.removeField","Blockly.Input.prototype.isVisible","Blockly.Input.prototype.setVisible","renderList","startTrackingAll","stopTrackingAll","Blockly.Input.prototype.markDirty","Blockly.Input.prototype.setCheck","setAlign","Blockly.Input.prototype.setAlign","Blockly.Input.prototype.setShadowDom","Blockly.Input.prototype.getShadowDom","Blockly.Input.prototype.init","Blockly.Input.prototype.dispose","Blockly.Block","Generator","contextMenu","parentBlock_","childBlocks_","editable_","movable_","deletable_","collapsed_","isShadow_","outputShape_","xy_","isFlyout","isInMutator","isInsertionMarker_","hat","statementInputCount","initialUndoFlag","onchange","setOnChange","COLLAPSED_FIELD_NAME","hue_","colour_","styleName_","Blockly.Block.prototype.dispose","onchangeWrapper_","connections","Blockly.Block.prototype.initModel","Blockly.Block.prototype.unplug","opt_healStack","unplugFromRow_","unplugFromStack_","Blockly.Block.prototype.unplugFromRow_","getOnlyValueConnection_","Blockly.Block.prototype.getOnlyValueConnection_","Blockly.Block.prototype.unplugFromStack_","previousTarget","nextTarget","Blockly.Block.prototype.getConnections_","_all","myConnections","Blockly.Block.prototype.lastConnectionInStack","Blockly.Block.prototype.bumpNeighbours","Blockly.Block.prototype.getParent","Blockly.Block.prototype.getInputWithBlock","getSurroundParent","Blockly.Block.prototype.getSurroundParent","prevBlock","Blockly.Block.prototype.getNextBlock","Blockly.Block.prototype.getPreviousBlock","getFirstStatementConnection","Blockly.Block.prototype.getFirstStatementConnection","Blockly.Block.prototype.getRootBlock","Blockly.Block.prototype.getTopStackBlock","previous","Blockly.Block.prototype.getChildren","Blockly.Block.prototype.setParent","newParent","Blockly.Block.prototype.getDescendants","childBlocks","Blockly.Block.prototype.isDeletable","Blockly.Block.prototype.setDeletable","Blockly.Block.prototype.isMovable","Blockly.Block.prototype.setMovable","isDuplicatable","Blockly.Block.prototype.isDuplicatable","Blockly.Block.prototype.isShadow","Blockly.Block.prototype.setShadow","Blockly.Block.prototype.isInsertionMarker","Blockly.Block.prototype.setInsertionMarker","insertionMarker","Blockly.Block.prototype.isEditable","Blockly.Block.prototype.setEditable","isDisposed","Blockly.Block.prototype.isDisposed","Blockly.Block.prototype.getMatchingConnection","otherBlock","conn","otherConnections","setHelpUrl","Blockly.Block.prototype.setHelpUrl","helpUrl","Blockly.Block.prototype.setTooltip","Blockly.Block.prototype.getTooltip","getColour","Blockly.Block.prototype.getColour","getStyleName","Blockly.Block.prototype.getStyleName","getHue","Blockly.Block.prototype.getHue","Blockly.Block.prototype.setColour","parsed","setStyle","Blockly.Block.prototype.setStyle","Blockly.Block.prototype.setOnChange","onchangeFn","Blockly.Block.prototype.getField","getVars","Blockly.Block.prototype.getVars","vars","Blockly.Block.prototype.getVarModels","model","Blockly.Block.prototype.updateVarName","refreshVariableName","Blockly.Block.prototype.renameVarById","oldId","newId","Blockly.Block.prototype.getFieldValue","setFieldValue","Blockly.Block.prototype.setFieldValue","setPreviousStatement","Blockly.Block.prototype.setPreviousStatement","newBoolean","opt_check","makeConnection_","setNextStatement","Blockly.Block.prototype.setNextStatement","setOutput","Blockly.Block.prototype.setOutput","Blockly.Block.prototype.setInputsInline","Blockly.Block.prototype.getInputsInline","setOutputShape","Blockly.Block.prototype.setOutputShape","outputShape","getOutputShape","Blockly.Block.prototype.getOutputShape","setDisabled","Blockly.Block.prototype.setDisabled","Blockly.Block.prototype.isEnabled","Blockly.Block.prototype.setEnabled","enabled","getInheritedDisabled","Blockly.Block.prototype.getInheritedDisabled","ancestor","Blockly.Block.prototype.isCollapsed","Blockly.Block.prototype.setCollapsed","Blockly.Block.prototype.toString","opt_maxLength","opt_emptyToken","shouldAddParentheses","checks","checkRoot","rootNode","emptyFieldPlaceholder","prevNavigateFields","l","appendValueInput","Blockly.Block.prototype.appendValueInput","appendInput_","appendStatementInput","Blockly.Block.prototype.appendStatementInput","appendDummyInput","Blockly.Block.prototype.appendDummyInput","jsonInit","Blockly.Block.prototype.jsonInit","warningPrefix","jsonInitStyle_","jsonInitColour_","interpolate_","localizedText","localizedValue","extensionNames","extensionName","Blockly.Block.prototype.jsonInitColour_","Blockly.Block.prototype.jsonInitStyle_","styleError","Blockly.Block.prototype.mixin","opt_disableCheck","overwrites","JSON","stringify","Blockly.Block.prototype.interpolate_","args","lastDummyAlign","indexDup","indexCount","elements","token","dummyInput","alignmentLookup","fieldStack","altRepeat","alignment","Blockly.Block.prototype.appendInput_","moveInputBefore","Blockly.Block.prototype.moveInputBefore","refName","inputIndex","refIndex","moveNumberedInputBefore","Blockly.Block.prototype.moveNumberedInputBefore","RangeError","removeInput","Blockly.Block.prototype.removeInput","Blockly.Block.prototype.getInput","getInputTargetBlock","Blockly.Block.prototype.getInputTargetBlock","Blockly.Block.prototype.getCommentText","Blockly.Block.prototype.setCommentText","setWarningText","Blockly.Block.prototype.setWarningText","_text","_opt_id","Blockly.Block.prototype.setMutator","_mutator","Blockly.Block.prototype.getRelativeToSurfaceXY","Blockly.Block.prototype.moveBy","Blockly.Block.prototype.makeConnection_","Blockly.Block.prototype.allInputsFilled","Blockly.Block.prototype.toDevString","blockRendering","IPathObject","Blockly.blockRendering.IPathObject","_root","_constants","aria","ARIA_PREFIX_","ROLE_ATTRIBUTE_","Role","GRID","GRIDCELL","GROUP","LISTBOX","MENU","MENUITEM","MENUITEMCHECKBOX","OPTION","PRESENTATION","ROW","TREE","TREEITEM","State","ACTIVEDESCENDANT","COLCOUNT","DISABLED","EXPANDED","INVALID","LABEL","LABELLEDBY","LEVEL","ORIENTATION","POSINSET","ROWCOUNT","SELECTED","SETSIZE","VALUEMAX","VALUEMIN","setRole","Blockly.utils.aria.setRole","roleName","Blockly.utils.aria.setState","stateName","Menu","Blockly.Menu","menuItems_","roleName_","onKeyDownHandler_","mouseLeaveHandler_","mouseEnterHandler_","clickHandler_","mouseOverHandler_","highlightedItem_","openingCoords","Blockly.Menu.prototype.addChild","menuItem","Blockly.Menu.prototype.render","tabIndex","handleMouseOver_","handleClick_","handleMouseEnter_","handleMouseLeave_","handleKeyEvent_","Blockly.Menu.prototype.getElement","focus","Blockly.Menu.prototype.focus","preventScroll","blur_","Blockly.Menu.prototype.blur_","blur","Blockly.Menu.prototype.setRole","Blockly.Menu.prototype.dispose","getMenuItem_","Blockly.Menu.prototype.getMenuItem_","menuElem","parentElement","setHighlighted","Blockly.Menu.prototype.setHighlighted","currentHighlighted","highlightNext","Blockly.Menu.prototype.highlightNext","highlightHelper_","highlightPrevious","Blockly.Menu.prototype.highlightPrevious","highlightFirst_","Blockly.Menu.prototype.highlightFirst_","highlightLast_","Blockly.Menu.prototype.highlightLast_","Blockly.Menu.prototype.highlightHelper_","startIndex","Blockly.Menu.prototype.handleMouseOver_","Blockly.Menu.prototype.handleClick_","oldCoords","newCoords","performAction","Blockly.Menu.prototype.handleMouseEnter_","Blockly.Menu.prototype.handleMouseLeave_","Blockly.Menu.prototype.handleKeyEvent_","highlighted","Blockly.Menu.prototype.getSize","menuDom","menuSize","scrollHeight","MenuItem","Blockly.MenuItem","enabled_","highlight_","checked_","checkable_","actionHandler_","Blockly.MenuItem.prototype.createDom","checkbox","contentDom","Blockly.MenuItem.prototype.dispose","Blockly.MenuItem.prototype.getElement","Blockly.MenuItem.prototype.getId","Blockly.MenuItem.prototype.getValue","setRightToLeft","Blockly.MenuItem.prototype.setRightToLeft","Blockly.MenuItem.prototype.setRole","setCheckable","Blockly.MenuItem.prototype.setCheckable","checkable","setChecked","Blockly.MenuItem.prototype.setChecked","checked","Blockly.MenuItem.prototype.setHighlighted","nameDep","Blockly.MenuItem.prototype.isEnabled","Blockly.MenuItem.prototype.setEnabled","Blockly.MenuItem.prototype.performAction","onAction","Blockly.MenuItem.prototype.onAction","ContextMenu","currentBlock","menu_","Blockly.ContextMenu.show","menu","populate_","position_","Blockly.ContextMenu.populate_","option","actionHandler","_menuItem","scope","Blockly.ContextMenu.position_","viewportBBox","anchorBBox","createWidget_","positionWithAnchor","Blockly.ContextMenu.createWidget_","Blockly.ContextMenu.hide","Blockly.ContextMenu.dispose","callbackFactory","Blockly.ContextMenu.callbackFactory","commentDeleteOption","Blockly.ContextMenu.commentDeleteOption","deleteOption","commentDuplicateOption","Blockly.ContextMenu.commentDuplicateOption","duplicateOption","duplicate","workspaceCommentOption","Blockly.ContextMenu.workspaceCommentOption","wsCommentOption","wsCommentOption.callback","DEFAULT_SIZE","finalOffset","ContextMenuItems","registerUndo","Blockly.ContextMenuItems.registerUndo","ContextMenuRegistry","undoOption","displayText","preconditionFn","scopeType","ScopeType","weight","registerRedo","Blockly.ContextMenuItems.registerRedo","redoOption","registerCleanup","Blockly.ContextMenuItems.registerCleanup","cleanOption","cleanUp","toggleOption_","Blockly.ContextMenuItems.toggleOption_","shouldCollapse","ms","DELAY","registerCollapse","Blockly.ContextMenuItems.registerCollapse","collapseOption","registerExpand","Blockly.ContextMenuItems.registerExpand","expandOption","addDeletableBlocks_","Blockly.ContextMenuItems.addDeletableBlocks_","deleteList","getDeletableBlocks_","Blockly.ContextMenuItems.getDeletableBlocks_","deleteNext_","Blockly.ContextMenuItems.deleteNext_","registerDeleteAll","Blockly.ContextMenuItems.registerDeleteAll","deletableBlocksLength","cancelCurrentGesture","deletableBlocks","registerWorkspaceOptions_","Blockly.ContextMenuItems.registerWorkspaceOptions_","registerDuplicate","Blockly.ContextMenuItems.registerDuplicate","registerComment","Blockly.ContextMenuItems.registerComment","commentOption","registerInline","Blockly.ContextMenuItems.registerInline","inlineOption","registerCollapseExpandBlock","Blockly.ContextMenuItems.registerCollapseExpandBlock","collapseExpandOption","registerDisable","Blockly.ContextMenuItems.registerDisable","disableOption","registerDelete","Blockly.ContextMenuItems.registerDelete","descendantCount","registerHelp","Blockly.ContextMenuItems.registerHelp","helpOption","showHelp","registerBlockOptions_","Blockly.ContextMenuItems.registerBlockOptions_","registerDefaultOptions","Blockly.ContextMenuItems.registerDefaultOptions","Blockly.ContextMenuRegistry","registry_","Blockly.ContextMenuRegistry.prototype.register","Blockly.ContextMenuRegistry.prototype.unregister","getItem","Blockly.ContextMenuRegistry.prototype.getItem","getContextMenuOptions","Blockly.ContextMenuRegistry.prototype.getContextMenuOptions","menuOptions","forEach","precondition","menuOption","RenderedConnection","Blockly.RenderedConnection","db_","dbOpposite_","offsetInBlock_","trackedState_","TrackedState","WILL_TRACK","UNTRACKED","TRACKED","Blockly.RenderedConnection.prototype.dispose","removeConnection","Blockly.RenderedConnection.prototype.getSourceBlock","Blockly.RenderedConnection.prototype.targetBlock","Blockly.RenderedConnection.prototype.distanceFrom","Blockly.RenderedConnection.prototype.bumpAwayFrom","staticConnection","addSelect","removeSelect","Blockly.RenderedConnection.prototype.moveTo","addConnection","Blockly.RenderedConnection.prototype.moveBy","moveToOffset","Blockly.RenderedConnection.prototype.moveToOffset","blockTL","setOffsetInBlock","Blockly.RenderedConnection.prototype.setOffsetInBlock","getOffsetInBlock","Blockly.RenderedConnection.prototype.getOffsetInBlock","tighten","Blockly.RenderedConnection.prototype.tighten","svgRoot","Blockly.RenderedConnection.prototype.closest","maxLimit","searchForClosest","Blockly.RenderedConnection.prototype.highlight","renderConstants","shapeFor","yLen","TAB_OFFSET_FROM_TOP","svgPaths","lineOnAxis","pathDown","xLen","NOTCH_OFFSET_LEFT","CORNER_RADIUS","pathLeft","highlightedPath_","Blockly.RenderedConnection.prototype.unhighlight","setTracking","Blockly.RenderedConnection.prototype.setTracking","doTracking","Blockly.RenderedConnection.prototype.stopTrackingAll","Blockly.RenderedConnection.prototype.startTrackingAll","Blockly.RenderedConnection.prototype.isConnectionAllowed","maxRadius","Blockly.RenderedConnection.prototype.onFailedConnect","Blockly.RenderedConnection.prototype.disconnectInternal_","Blockly.RenderedConnection.prototype.respawnShadow_","Blockly.RenderedConnection.prototype.neighbours","getNeighbours","Blockly.RenderedConnection.prototype.connect_","parentRendered","childRendered","Blockly.RenderedConnection.prototype.onCheckChanged_","Marker","Blockly.Marker","drawer_","curNode_","setDrawer","Blockly.Marker.prototype.setDrawer","drawer","getDrawer","Blockly.Marker.prototype.getDrawer","Blockly.Marker.prototype.getCurNode","Blockly.Marker.prototype.setCurNode","oldNode","Blockly.Marker.prototype.draw","Blockly.Marker.prototype.hide","Blockly.Marker.prototype.dispose","Cursor","Blockly.Cursor","Blockly.Cursor.prototype.next","Blockly.Cursor.prototype.in","Blockly.Cursor.prototype.prev","Blockly.Cursor.prototype.out","Blockly.Cursor.prototype.onBlocklyAction","BasicCursor","Blockly.BasicCursor","Blockly.BasicCursor.prototype.next","getNextNode_","validNode_","Blockly.BasicCursor.prototype.in","Blockly.BasicCursor.prototype.prev","getPreviousNode_","Blockly.BasicCursor.prototype.out","Blockly.BasicCursor.prototype.getNextNode_","isValid","siblingOrParent","findSiblingOrParent_","Blockly.BasicCursor.prototype.getPreviousNode_","getRightMostChild_","Blockly.BasicCursor.prototype.validNode_","Blockly.BasicCursor.prototype.findSiblingOrParent_","nextNode","Blockly.BasicCursor.prototype.getRightMostChild_","TabNavigateCursor","Blockly.TabNavigateCursor","Blockly.TabNavigateCursor.prototype.validNode_","BlockSvg","Blockly.BlockSvg","getBlockStyle","pathObject","makePathObject","renderIsInProgress_","useDragSurface_","svgPath","warningTextDb_","INLINE","COLLAPSED_WARNING_ID","Blockly.BlockSvg.prototype.initSvg","createIcon","updateMovable","eventsInit_","getCanvas","getColourSecondary","Blockly.BlockSvg.prototype.getColourSecondary","colourSecondary","getColourTertiary","Blockly.BlockSvg.prototype.getColourTertiary","colourTertiary","getColourShadow","Blockly.BlockSvg.prototype.getColourShadow","getColourBorder","Blockly.BlockSvg.prototype.getColourBorder","colourBorder","colourLight","colourDark","Blockly.BlockSvg.prototype.select","Blockly.BlockSvg.prototype.unselect","commentIcon_","Blockly.BlockSvg.prototype.getIcons","Blockly.BlockSvg.prototype.setParent","oldParent","oldXY","Blockly.BlockSvg.prototype.getRelativeToSurfaceXY","dragSurfaceGroup","surfaceTranslation","Blockly.BlockSvg.prototype.moveBy","eventsEnabled","Blockly.BlockSvg.prototype.translate","Blockly.BlockSvg.prototype.moveToDragSurface","clearTransformAttributes_","Blockly.BlockSvg.prototype.moveTo","curXY","Blockly.BlockSvg.prototype.moveOffDragSurface","Blockly.BlockSvg.prototype.moveDuringDrag","Blockly.BlockSvg.prototype.clearTransformAttributes_","snapToGrid","Blockly.BlockSvg.prototype.snapToGrid","getGrid","getBoundingRectangle","Blockly.BlockSvg.prototype.getBoundingRectangle","blockBounds","Blockly.BlockSvg.prototype.markDirty","Blockly.BlockSvg.prototype.setCollapsed","updateCollapsed_","Blockly.BlockSvg.prototype.updateCollapsed_","collapsedInputName","collapsedFieldName","tab","Blockly.BlockSvg.prototype.tab","tabCursor","currentNode","nextField","Blockly.BlockSvg.prototype.onMouseDown_","Blockly.BlockSvg.prototype.showHelp","open","generateContextMenu","Blockly.BlockSvg.prototype.generateContextMenu","customContextMenu","Blockly.BlockSvg.prototype.showContextMenu","Blockly.BlockSvg.prototype.moveConnections","computeIconLocation","Blockly.BlockSvg.prototype.setDragging","Blockly.BlockSvg.prototype.setMovable","Blockly.BlockSvg.prototype.setEditable","Blockly.BlockSvg.prototype.setShadow","Blockly.BlockSvg.prototype.setInsertionMarker","INSERTION_MARKER_COLOUR","updateInsertionMarker","Blockly.BlockSvg.prototype.getSvgRoot","Blockly.BlockSvg.prototype.dispose","animate","blockWorkspace","n","toCopyData","Blockly.BlockSvg.prototype.toCopyData","typeCounts","Blockly.BlockSvg.prototype.applyColour","Blockly.BlockSvg.prototype.updateDisabled","Blockly.BlockSvg.prototype.getCommentIcon","Blockly.BlockSvg.prototype.setCommentText","shouldHaveComment","updateText","Blockly.BlockSvg.prototype.setWarningText","Warning","thisBlock","changedState","collapsedParent","oldText","newText","Blockly.BlockSvg.prototype.setMutator","setBlock","Blockly.BlockSvg.prototype.setDisabled","Blockly.BlockSvg.prototype.setEnabled","Blockly.BlockSvg.prototype.setHighlighted","updateHighlighted","Blockly.BlockSvg.prototype.addSelect","updateSelected","Blockly.BlockSvg.prototype.removeSelect","Blockly.BlockSvg.prototype.setDeleteStyle","updateDraggingDelete","Blockly.BlockSvg.prototype.getColour","colourPrimary","Blockly.BlockSvg.prototype.setColour","styleObj","getBlockStyleForColour","Blockly.BlockSvg.prototype.setStyle","Blockly.BlockSvg.prototype.bringToFront","Blockly.BlockSvg.prototype.setPreviousStatement","Blockly.BlockSvg.prototype.setNextStatement","Blockly.BlockSvg.prototype.setOutput","Blockly.BlockSvg.prototype.setInputsInline","Blockly.BlockSvg.prototype.removeInput","removed","Blockly.BlockSvg.prototype.moveNumberedInputBefore","Blockly.BlockSvg.prototype.appendInput_","Blockly.BlockSvg.prototype.setConnectionTracking","track","Blockly.BlockSvg.prototype.getConnections_","all","Blockly.BlockSvg.prototype.lastConnectionInStack","Blockly.BlockSvg.prototype.getMatchingConnection","Blockly.BlockSvg.prototype.makeConnection_","Blockly.BlockSvg.prototype.bumpNeighbours","Blockly.BlockSvg.prototype.scheduleSnapAndBump","Blockly.BlockSvg.prototype.positionNearConnection","sourceConnection","Blockly.BlockSvg.prototype.getParent","Blockly.BlockSvg.prototype.getRootBlock","Blockly.BlockSvg.prototype.render","opt_bubble","updateConnectionLocations_","Blockly.BlockSvg.prototype.updateMarkers_","Blockly.BlockSvg.prototype.updateConnectionLocations_","Blockly.BlockSvg.prototype.setCursorSvg","Blockly.BlockSvg.prototype.setMarkerSvg","Blockly.BlockSvg.prototype.getHeightWidth","nextHeightWidth","tabHeight","NOTCH_HEIGHT","Blockly.BlockSvg.prototype.fadeForReplacement","add","updateReplacementFade","Blockly.BlockSvg.prototype.highlightShapeForInput","updateShapeForInputHighlight","useDebugger","Blockly.blockRendering.register","rendererClass","Blockly.blockRendering.unregister","startDebugger","Blockly.blockRendering.startDebugger","stopDebugger","Blockly.blockRendering.stopDebugger","Blockly.blockRendering.init","opt_rendererOverrides","ConnectionDB","Blockly.ConnectionDB","connections_","connectionChecker_","Blockly.ConnectionDB.prototype.addConnection","yPos","calculateIndexForYPos_","findIndexOfConnection_","Blockly.ConnectionDB.prototype.findIndexOfConnection_","bestGuess","pointerMin","pointerMax","Blockly.ConnectionDB.prototype.calculateIndexForYPos_","pointerMid","Blockly.ConnectionDB.prototype.removeConnection","Blockly.ConnectionDB.prototype.getNeighbours","checkConnection_","yIndex","currentX","db","currentY","isInYRange_","Blockly.ConnectionDB.prototype.isInYRange_","baseY","Blockly.ConnectionDB.prototype.searchForClosest","baseX","closestIndex","bestConnection","bestRadius","Blockly.ConnectionDB.init","dbList","MarkerManager","Blockly.MarkerManager","cursor_","markers_","registerMarker","Blockly.MarkerManager.prototype.registerMarker","unregisterMarker","makeMarkerDrawer","Blockly.MarkerManager.prototype.unregisterMarker","Blockly.MarkerManager.prototype.getCursor","Blockly.MarkerManager.prototype.getMarker","setCursor","Blockly.MarkerManager.prototype.setCursor","Blockly.MarkerManager.prototype.setCursorSvg","getBlockCanvas","Blockly.MarkerManager.prototype.setMarkerSvg","updateMarkers","Blockly.MarkerManager.prototype.updateMarkers","Blockly.MarkerManager.prototype.dispose","markerIds","markerId","ThemeManager","Blockly.ThemeManager","theme_","subscribedWorkspaces_","componentDB_","Blockly.ThemeManager.prototype.getTheme","setTheme","Blockly.ThemeManager.prototype.setTheme","prevTheme","refreshTheme","component","subscribeWorkspace","Blockly.ThemeManager.prototype.subscribeWorkspace","unsubscribeWorkspace","Blockly.ThemeManager.prototype.unsubscribeWorkspace","Blockly.ThemeManager.prototype.subscribe","Blockly.ThemeManager.prototype.unsubscribe","componentNames","Blockly.ThemeManager.prototype.dispose","TouchGesture","Blockly.TouchGesture","isMultiTouch_","cachedPoints_","startDistance_","previousScale_","isPinchZoomEnabled_","onStartWrapper_","ZOOM_IN_MULTIPLIER","ZOOM_OUT_MULTIPLIER","Blockly.TouchGesture.prototype.doStart","handleTouchStart","Blockly.TouchGesture.prototype.bindMouseEvents","Blockly.TouchGesture.prototype.handleStart","isMultiTouch","Blockly.TouchGesture.prototype.handleMove","handleTouchMove","Blockly.TouchGesture.prototype.handleUp","handleTouchEnd","Blockly.TouchGesture.prototype.isMultiTouch","Blockly.TouchGesture.prototype.dispose","Blockly.TouchGesture.prototype.handleTouchStart","getTouchPoint","pointers","point0","point1","Blockly.TouchGesture.prototype.handleTouchMove","handlePinch_","Blockly.TouchGesture.prototype.handlePinch_","moveDistance","gestureScale","Blockly.TouchGesture.prototype.handleTouchEnd","Blockly.TouchGesture.prototype.getTouchPoint","WorkspaceAudio","Blockly.WorkspaceAudio","parentWorkspace_","SOUNDS_","lastSound_","Blockly.WorkspaceAudio.prototype.dispose","load","Blockly.WorkspaceAudio.prototype.load","filenames","audioTest","sound","filename","ext","canPlayType","preload","Blockly.WorkspaceAudio.prototype.preload","volume","playPromise","then","pause","catch","Blockly.WorkspaceAudio.prototype.play","opt_volume","now","mySound","WorkspaceSvg","Blockly.WorkspaceSvg","opt_blockDragSurface","opt_wsDragSurface","getTopLevelWorkspaceMetrics_","setTopLevelWorkspaceMetrics_","blockDragSurface_","workspaceDragSurface_","useWorkspaceDragSurface_","highlightedBlocks_","audioManager_","grid_","markerManager_","toolboxCategoryCallbacks_","flyoutButtonCallbacks_","flyoutCategory","registerToolboxCategoryCallback","VariablesDynamic","Procedures","mutatorOpenListener","themeManager_","renderer_","cachedParentSvg_","topBoundedElements_","resizeHandlerWrapper_","resizesEnabled_","startScrollX","startScrollY","dragDeltaXY_","toolbox_","isDragSurfaceActive_","injectionDiv_","lastRecordedPageScroll_","inverseScreenCTM_","inverseScreenCTMDirty_","getMarkerManager","Blockly.WorkspaceSvg.prototype.getMarkerManager","Blockly.WorkspaceSvg.prototype.setCursorSvg","Blockly.WorkspaceSvg.prototype.setMarkerSvg","Blockly.WorkspaceSvg.prototype.getMarker","Blockly.WorkspaceSvg.prototype.getCursor","Blockly.WorkspaceSvg.prototype.getRenderer","Blockly.WorkspaceSvg.prototype.getThemeManager","Blockly.WorkspaceSvg.prototype.getTheme","Blockly.WorkspaceSvg.prototype.setTheme","Blockly.WorkspaceSvg.prototype.refreshTheme","refreshDom","updateBlockStyles_","refreshToolboxSelection","Blockly.WorkspaceSvg.prototype.updateBlockStyles_","updateBlockStyle","Blockly.WorkspaceSvg.prototype.getInverseScreenCTM","ctm","updateInverseScreenCTM","Blockly.WorkspaceSvg.prototype.updateInverseScreenCTM","Blockly.WorkspaceSvg.prototype.isVisible","Blockly.WorkspaceSvg.prototype.getSvgXY","Blockly.WorkspaceSvg.prototype.getOriginOffsetInPixels","Blockly.WorkspaceSvg.prototype.getInjectionDiv","Blockly.WorkspaceSvg.prototype.getBlockCanvas","svgBlockCanvas_","setResizeHandlerWrapper","Blockly.WorkspaceSvg.prototype.setResizeHandlerWrapper","Blockly.WorkspaceSvg.prototype.createDom","opt_backgroundClass","fill","svgBubbleCanvas_","onMouseWheel_","Toolbox","ToolboxClass","recordDeleteAreas","Blockly.WorkspaceSvg.prototype.dispose","zoomControls_","parentSvg","Blockly.WorkspaceSvg.prototype.newBlock","addTrashcan","Blockly.WorkspaceSvg.prototype.addTrashcan","Trashcan","svgTrashcan","addZoomControls","Blockly.WorkspaceSvg.prototype.addZoomControls","ZoomControls","svgZoomControls","addFlyout","Blockly.WorkspaceSvg.prototype.addFlyout","workspaceOptions","HorizontalFlyout","VerticalFlyout","Blockly.WorkspaceSvg.prototype.getFlyout","opt_own","Blockly.WorkspaceSvg.prototype.getToolbox","updateScreenCalculations_","Blockly.WorkspaceSvg.prototype.updateScreenCalculations_","Blockly.WorkspaceSvg.prototype.resizeContents","Blockly.WorkspaceSvg.prototype.resize","Blockly.WorkspaceSvg.prototype.updateScreenCalculationsIfScrolled","currScroll","Blockly.WorkspaceSvg.prototype.getCanvas","Blockly.WorkspaceSvg.prototype.getBubbleCanvas","Blockly.WorkspaceSvg.prototype.getParentSvg","Blockly.WorkspaceSvg.prototype.maybeFireViewportChangeEvent","Blockly.WorkspaceSvg.prototype.translate","translation","Blockly.WorkspaceSvg.prototype.resetDragSurface","trans","Blockly.WorkspaceSvg.prototype.setupDragSurface","previousElement","coord","Blockly.WorkspaceSvg.prototype.getBlockDragSurface","Blockly.WorkspaceSvg.prototype.getWidth","Blockly.WorkspaceSvg.prototype.setVisible","Blockly.WorkspaceSvg.prototype.render","imList","highlightBlock","Blockly.WorkspaceSvg.prototype.highlightBlock","opt_state","paste","Blockly.WorkspaceSvg.prototype.paste","pasteWorkspaceComment_","pasteBlock_","Blockly.WorkspaceSvg.prototype.pasteBlock_","markedNode","markedLocation","collide","allBlocks","otherXY","Blockly.WorkspaceSvg.prototype.pasteWorkspaceComment_","xmlComment","commentX","commentY","Blockly.WorkspaceSvg.prototype.refreshToolboxSelection","refreshSelection","Blockly.WorkspaceSvg.prototype.renameVariableById","Blockly.WorkspaceSvg.prototype.deleteVariableById","Blockly.WorkspaceSvg.prototype.createVariable","newVar","Blockly.WorkspaceSvg.prototype.recordDeleteAreas","deleteAreaTrash_","getClientRect","deleteAreaToolbox_","Blockly.WorkspaceSvg.prototype.isDeleteArea","Blockly.WorkspaceSvg.prototype.onMouseDown_","Blockly.WorkspaceSvg.prototype.startDrag","point","Blockly.WorkspaceSvg.prototype.moveDrag","Blockly.WorkspaceSvg.prototype.isDragging","Blockly.WorkspaceSvg.prototype.isDraggable","isContentBounded","Blockly.WorkspaceSvg.prototype.isContentBounded","Blockly.WorkspaceSvg.prototype.isMovable","Blockly.WorkspaceSvg.prototype.onMouseWheel_","canWheelZoom","canWheelMove","scrollDelta","PIXELS_PER_ZOOM_STEP","Blockly.WorkspaceSvg.prototype.getBlocksBoundingBox","topElements","getTopBoundedElements","boundary","blockBoundary","Blockly.WorkspaceSvg.prototype.cleanUp","cursorY","Blockly.WorkspaceSvg.prototype.showContextMenu","configureContextMenu","updateToolbox","Blockly.WorkspaceSvg.prototype.updateToolbox","parsedToolboxDef","Blockly.WorkspaceSvg.prototype.markFocused","setBrowserFocus","Blockly.WorkspaceSvg.prototype.setBrowserFocus","activeElement","setActive","Blockly.WorkspaceSvg.prototype.zoom","amount","scaleChange","newScale","getCTM","center","setScale","zoomCenter","Blockly.WorkspaceSvg.prototype.zoomCenter","svgWidth","svgHeight","zoomToFit","Blockly.WorkspaceSvg.prototype.zoomToFit","workspaceWidth","workspaceHeight","blocksBox","blocksWidth","blocksHeight","getHeight","ratioX","ratioY","scrollCenter","beginCanvasTransition","Blockly.WorkspaceSvg.prototype.beginCanvasTransition","endCanvasTransition","Blockly.WorkspaceSvg.prototype.endCanvasTransition","Blockly.WorkspaceSvg.prototype.scrollCenter","centerOnBlock","Blockly.WorkspaceSvg.prototype.centerOnBlock","heightWidth","pixelX","multiplier","pixelY","Blockly.WorkspaceSvg.prototype.setScale","reflow","getScale","Blockly.WorkspaceSvg.prototype.getScale","Blockly.WorkspaceSvg.prototype.scroll","maxOffsetOfViewFromOriginX","maxOffsetOfViewFromOriginY","getDimensionsPx_","Blockly.WorkspaceSvg.getDimensionsPx_","getContentDimensions_","Blockly.WorkspaceSvg.getContentDimensions_","svgSize","getContentDimensionsBounded_","getContentDimensionsExact_","Blockly.WorkspaceSvg.getContentDimensionsExact_","blockBox","Blockly.WorkspaceSvg.getContentDimensionsBounded_","halfWidth","dimensions","Blockly.WorkspaceSvg.getTopLevelWorkspaceMetrics_","toolboxDimensions","flyoutDimensions","contentDimensions","toolboxWidth","toolboxHeight","flyoutWidth","flyoutHeight","Blockly.WorkspaceSvg.setTopLevelWorkspaceMetrics_","Blockly.WorkspaceSvg.prototype.getBlockById","Blockly.WorkspaceSvg.prototype.getTopBlocks","Blockly.WorkspaceSvg.prototype.addTopBlock","addTopBoundedElement","Blockly.WorkspaceSvg.prototype.removeTopBlock","removeTopBoundedElement","Blockly.WorkspaceSvg.prototype.addTopComment","Blockly.WorkspaceSvg.prototype.removeTopComment","Blockly.WorkspaceSvg.prototype.addTopBoundedElement","Blockly.WorkspaceSvg.prototype.removeTopBoundedElement","Blockly.WorkspaceSvg.prototype.getTopBoundedElements","Blockly.WorkspaceSvg.prototype.setResizesEnabled","reenabled","Blockly.WorkspaceSvg.prototype.clear","registerButtonCallback","Blockly.WorkspaceSvg.prototype.registerButtonCallback","getButtonCallback","Blockly.WorkspaceSvg.prototype.getButtonCallback","removeButtonCallback","Blockly.WorkspaceSvg.prototype.removeButtonCallback","Blockly.WorkspaceSvg.prototype.registerToolboxCategoryCallback","getToolboxCategoryCallback","Blockly.WorkspaceSvg.prototype.getToolboxCategoryCallback","removeToolboxCategoryCallback","Blockly.WorkspaceSvg.prototype.removeToolboxCategoryCallback","Blockly.WorkspaceSvg.prototype.getGesture","isStart","Blockly.WorkspaceSvg.prototype.clearGesture","Blockly.WorkspaceSvg.prototype.cancelCurrentGesture","Blockly.WorkspaceSvg.prototype.getAudioManager","Blockly.WorkspaceSvg.prototype.getGrid","Blockly.inject","checkBlockColourConstants","getElementById","querySelector","subContainer","blockDragSurface","workspaceDragSurface","createMainWorkspace_","init_","svgResize","Blockly.createDom_","Blockly.createMainWorkspace_","wsOptions","bumpObjects","workspaceMetrics","defaultMetrics","viewRight","viewBottom","blocksBoundingBox","contentRight","contentBottom","oldGroup","objectMetrics","topClamp","bottomClamp","newYPosition","leftClamp","rightClamp","newXPosition","Blockly.init_","workspaceResizeHandler","bindDocumentEvents_","scrollToStart","verticalSpacing","loadSounds_","Blockly.inject.bindDocumentEvents_","documentEventsBound_","onKeyDown","Blockly.inject.loadSounds_","audioMgr","soundBinds","unbindSounds","Blockly.Names","reservedWords","opt_variablePrefix","variablePrefix_","reservedDict_","splitWords","DEVELOPER_VARIABLE_TYPE","Blockly.Names.prototype.reset","dbReverse_","Blockly.Names.prototype.setVariableMap","getNameForUserVariable_","Blockly.Names.prototype.getNameForUserVariable_","getName","Blockly.Names.prototype.getName","normalized","safeName","getDistinctName","Blockly.Names.prototype.getDistinctName","safeName_","Blockly.Names.prototype.safeName_","encodeURI","Blockly.Names.equals","name1","name2","NAME_TYPE","DEFAULT_ARG","allProcedures","Blockly.Procedures.allProcedures","proceduresNoReturn","getProcedureDef","proceduresReturn","procTupleComparator_","Blockly.Procedures.procTupleComparator_","ta","tb","localeCompare","findLegalName","Blockly.Procedures.findLegalName","isLegalName_","Blockly.Procedures.isLegalName_","opt_exclude","isNameUsed","Blockly.Procedures.isNameUsed","procName","procedureBlock","rename","Blockly.Procedures.rename","legalName","renameProcedure","Blockly.Procedures.flyoutCategory","populateProcedures","procedureList","templateName","arg","xmlList","nameField","tuple","updateMutatorFlyout_","Blockly.Procedures.updateMutatorFlyout_","usedNames","argBlock","argValue","generateUniqueNameFromOptions","fieldContent","Blockly.Procedures.mutatorOpenListener","mutatorChangeListener_","Blockly.Procedures.mutatorChangeListener_","getCallers","Blockly.Procedures.getCallers","callers","getProcedureCall","mutateCallers","Blockly.Procedures.mutateCallers","defBlock","oldRecordUndo","xmlElement","caller","newMutationDom","newMutation","getDefinition","Blockly.Procedures.getDefinition","Blockly.VariableModel","Blockly.VariableModel.prototype.getId","compareByName","Blockly.VariableModel.compareByName","var1","var2","Blockly.Variables.allUsedVarModels","variableHash","ALL_DEVELOPER_VARS_WARNINGS_BY_BLOCK_TYPE_","allDeveloperVariables","Blockly.Variables.allDeveloperVariables","getDeveloperVariables","getDeveloperVars","devVars","Blockly.Variables.flyoutCategory","createVariableButtonHandler","getTargetWorkspace","blockList","flyoutCategoryBlocks","Blockly.Variables.flyoutCategoryBlocks","variableModelList","mostRecentVariable","generateVariableFieldDom","VAR_LETTER_OPTIONS","generateUniqueName","Blockly.Variables.generateUniqueName","Blockly.Variables.generateUniqueNameFromOptions","startChar","letters","suffix","letterIndex","inUse","potName","Blockly.Variables.createVariableButtonHandler","opt_callback","promptAndCheckWithAlert","defaultName","promptName","existing","nameUsedWithAnyType","Blockly.Variables.renameVariable","promptText","nameUsedWithOtherType_","Blockly.Variables.promptName","defaultText","prompt","Blockly.Variables.nameUsedWithOtherType_","allVariables","Blockly.Variables.nameUsedWithAnyType","Blockly.Variables.generateVariableFieldDom","variableModel","getOrCreateVariablePackage","Blockly.Variables.getOrCreateVariablePackage","createVariable_","Blockly.Variables.getVariable","potentialVariableMap","Blockly.Variables.createVariable_","Blockly.Variables.getAddedVariables","originalVariables","allCurrentVariables","addedVariables","dispose_","Blockly.WidgetDiv.createDom","Blockly.WidgetDiv.show","newOwner","Blockly.WidgetDiv.hide","Blockly.WidgetDiv.isVisible","Blockly.WidgetDiv.hideIfOwner","oldOwner","Blockly.WidgetDiv.positionInternal_","Blockly.WidgetDiv.positionWithAnchor","widgetSize","calculateY_","calculateX_","Blockly.WidgetDiv.calculateX_","Blockly.WidgetDiv.calculateY_","VERSION","clipboardXml_","clipboardSource_","clipboardTypeCounts_","cache3dSupported_","Blockly.svgSize","cachedWidth_","cachedHeight_","resizeSvgContents","Blockly.resizeSvgContents","Blockly.svgResize","Blockly.onKeyDown","deleteBlock","copy_","Blockly.copy_","toCopy","Blockly.duplicate","toDuplicate","clipboardXml","clipboardSource","onContextMenu_","Blockly.onContextMenu_","Blockly.hideChaff","opt_allowToolbox","closeFlyout","clearSelection","Blockly.getMainWorkspace","Blockly.alert","Blockly.confirm","Blockly.prompt","defaultValue","jsonInitFactory_","Blockly.jsonInitFactory_","jsonDef","defineBlocksWithJsonArray","Blockly.defineBlocksWithJsonArray","jsonArray","typename","Blockly.bindEventWithChecks_","thisObject","opt_noCaptureIdentifier","opt_noPreventDefault","handled","wrapFunc","captureIdentifier","bindData","touchWrapFunc","preventDef","Blockly.bindEvent_","Blockly.unbindEvent_","bindDatum","isNumber","Blockly.isNumber","hueToHex","Blockly.hueToHex","Blockly.checkBlockColourConstants","checkBlockColourConstant_","Blockly.checkBlockColourConstant_","msgName","blocklyNamePath","expectedValue","namePath","warningPattern","setParentContainer","Blockly.setParentContainer","Icon","Blockly.Icon","block_","iconGroup_","collapseHidden","SIZE","bubble_","iconXY_","Blockly.Icon.prototype.createIcon","drawIcon_","iconClick_","Blockly.Icon.prototype.dispose","Blockly.Icon.prototype.updateEditable","Blockly.Icon.prototype.isVisible","Blockly.Icon.prototype.iconClick_","Blockly.Icon.prototype.applyColour","Blockly.Icon.prototype.setIconLocation","Blockly.Icon.prototype.computeIconLocation","iconXY","Blockly.Icon.prototype.getIconLocation","getCorrectedSize","Blockly.Icon.prototype.getCorrectedSize","Blockly.Warning","text_","Blockly.Warning.prototype.drawIcon_","textToDom_","Blockly.Warning.textToDom_","paragraph","tspanElement","Blockly.Warning.prototype.setVisible","createBubble","disposeBubble","Blockly.Warning.prototype.createBubble","paragraphElement_","maxWidth","Blockly.Warning.prototype.disposeBubble","body_","Blockly.Warning.prototype.setText","Blockly.Warning.prototype.getText","allWarnings","Blockly.Warning.prototype.dispose","Blockly.Comment","model_","cachedText_","onInputWrapper_","onChangeWrapper_","onWheelWrapper_","Blockly.Comment.prototype.drawIcon_","createEditor_","Blockly.Comment.prototype.createEditor_","foreignObject_","textarea","textarea_","resizeTextarea_","startEdit_","Blockly.Comment.prototype.updateEditable","disposeBubble_","createBubble_","onBubbleResize_","Blockly.Comment.prototype.onBubbleResize_","Blockly.Comment.prototype.resizeTextarea_","widthMinusBorder","heightMinusBorder","Blockly.Comment.prototype.setVisible","Blockly.Comment.prototype.createBubble_","createNonEditableBubble_","createEditableBubble_","Blockly.Comment.prototype.createEditableBubble_","Blockly.Comment.prototype.createNonEditableBubble_","Blockly.Comment.prototype.disposeBubble_","Blockly.Comment.prototype.startEdit_","Blockly.Comment.prototype.getBubbleSize","Blockly.Comment.prototype.setBubbleSize","Blockly.Comment.prototype.getText","Blockly.Comment.prototype.setText","Blockly.Comment.prototype.updateText","Blockly.Comment.prototype.dispose","FlyoutCursor","Blockly.FlyoutCursor","Blockly.FlyoutCursor.prototype.onBlocklyAction","Blockly.FlyoutCursor.prototype.next","Blockly.FlyoutCursor.prototype.in","Blockly.FlyoutCursor.prototype.prev","Blockly.FlyoutCursor.prototype.out","Flyout","Blockly.Flyout","getMetrics_","setMetrics_","toolboxPosition_","eventWrappers_","mats_","buttons_","permanentlyDisabled_","tabWidth_","TAB_WIDTH","MARGIN","GAP_X","GAP_Y","SCROLLBAR_PADDING","dragAngleRange_","Blockly.Flyout.prototype.createDom","Blockly.Flyout.prototype.init","wheel_","filterWrapper_","filterForCapacity_","Blockly.Flyout.prototype.dispose","Blockly.Flyout.prototype.getWidth","Blockly.Flyout.prototype.getHeight","Blockly.Flyout.prototype.getWorkspace","Blockly.Flyout.prototype.isVisible","Blockly.Flyout.prototype.setVisible","Blockly.Flyout.prototype.setContainerVisible","Blockly.Flyout.prototype.updateDisplay_","positionAt_","Blockly.Flyout.prototype.positionAt_","Blockly.Flyout.prototype.hide","listen","reflowWrapper_","Blockly.Flyout.prototype.show","clearOldBlocks_","getDynamicCategoryContents_","parsedContent","flyoutInfo","createFlyoutInfo_","layout_","gaps","deselectAll","Blockly.Flyout.prototype.createFlyoutInfo_","defaultGap","contentInfo","categoryName","parsedDynamicContent","blockInfo","blockXml","getBlockXml_","createBlock_","gap","addSeparatorGap_","label","createButton_","Blockly.Flyout.prototype.getDynamicCategoryContents_","fnToApply","Blockly.Flyout.prototype.createButton_","btnInfo","isLabel","FlyoutButton","curButton","Blockly.Flyout.prototype.createBlock_","Blockly.Flyout.prototype.getBlockXml_","blockElement","Blockly.Flyout.prototype.addSeparatorGap_","sepInfo","newGap","Blockly.Flyout.prototype.clearOldBlocks_","oldBlocks","rect","addBlockListeners_","Blockly.Flyout.prototype.addBlockListeners_","blockMouseDown_","Blockly.Flyout.prototype.blockMouseDown_","Blockly.Flyout.prototype.onMouseDown_","Blockly.Flyout.prototype.isBlockCreatable_","Blockly.Flyout.prototype.createBlock","originalBlock","placeNewBlock_","initFlyoutButton_","Blockly.Flyout.prototype.initFlyoutButton_","buttonSvg","createRect_","Blockly.Flyout.prototype.createRect_","blockHW","flyoutRect_","moveRectToBlock_","Blockly.Flyout.prototype.moveRectToBlock_","Blockly.Flyout.prototype.filterForCapacity_","Blockly.Flyout.prototype.reflow","reflowInternal_","Blockly.Flyout.prototype.isScrollable","Blockly.Flyout.prototype.placeNewBlock_","oldBlock","svgRootOld","svgRootNew","flyoutOffsetPixels","oldBlockPos","oldBlockOffsetPixels","Blockly.Flyout.prototype.onBlocklyAction","Blockly.HorizontalFlyout","Blockly.HorizontalFlyout.prototype.getMetrics_","optionBox","Blockly.HorizontalFlyout.prototype.setMetrics_","Blockly.HorizontalFlyout.prototype.position","targetWorkspaceMetrics","setBackgroundPath_","Blockly.HorizontalFlyout.prototype.setBackgroundPath_","atTop","path","Blockly.HorizontalFlyout.prototype.scrollToStart","Blockly.HorizontalFlyout.prototype.wheel_","Blockly.HorizontalFlyout.prototype.layout_","margin","cursorX","moveX","Blockly.HorizontalFlyout.prototype.isDragTowardWorkspace","dragDirection","atan2","range","Blockly.HorizontalFlyout.prototype.getClientRect","flyoutRect","BIG_NUM","Blockly.HorizontalFlyout.prototype.reflowInternal_","Blockly.VerticalFlyout","registryName","Blockly.VerticalFlyout.prototype.getMetrics_","Blockly.VerticalFlyout.prototype.setMetrics_","Blockly.VerticalFlyout.prototype.position","Blockly.VerticalFlyout.prototype.setBackgroundPath_","atRight","Blockly.VerticalFlyout.prototype.scrollToStart","Blockly.VerticalFlyout.prototype.wheel_","Blockly.VerticalFlyout.prototype.layout_","Blockly.VerticalFlyout.prototype.isDragTowardWorkspace","Blockly.VerticalFlyout.prototype.getClientRect","Blockly.VerticalFlyout.prototype.reflowInternal_","oldX","newX","getPosition","Blockly.FlyoutButton","targetWorkspace_","isLabel_","callbackKey_","cssClass_","info","MARGIN_X","MARGIN_Y","Blockly.FlyoutButton.prototype.createDom","svgText","svgText_","fontMetrics","updateTransform_","onMouseUp_","Blockly.FlyoutButton.prototype.show","Blockly.FlyoutButton.prototype.updateTransform_","Blockly.FlyoutButton.prototype.moveTo","Blockly.FlyoutButton.prototype.isLabel","Blockly.FlyoutButton.prototype.getPosition","getButtonText","Blockly.FlyoutButton.prototype.getButtonText","Blockly.FlyoutButton.prototype.getTargetWorkspace","Blockly.FlyoutButton.prototype.dispose","Blockly.FlyoutButton.prototype.onMouseUp_","Blockly.Generator","FUNCTION_NAME_PLACEHOLDER_REGEXP_","RegExp","FUNCTION_NAME_PLACEHOLDER_","INFINITE_LOOP_TRAP","STATEMENT_PREFIX","STATEMENT_SUFFIX","INDENT","COMMENT_WRAP","ORDER_OVERRIDES","workspaceToCode","Blockly.Generator.prototype.workspaceToCode","code","blockToCode","scrubNakedValue","suppressPrefixSuffix","injectId","finish","prefixLines","Blockly.Generator.prototype.prefixLines","allNestedComments","Blockly.Generator.prototype.allNestedComments","Blockly.Generator.prototype.blockToCode","opt_thisOnly","scrub_","SyntaxError","valueToCode","Blockly.Generator.prototype.valueToCode","outerOrder","innerOrder","parensNeeded","outerOrderClass","innerOrderClass","statementToCode","Blockly.Generator.prototype.statementToCode","addLoopTrap","Blockly.Generator.prototype.addLoopTrap","branch","Blockly.Generator.prototype.injectId","RESERVED_WORDS_","addReservedWords","Blockly.Generator.prototype.addReservedWords","provideFunction_","Blockly.Generator.prototype.provideFunction_","desiredName","definitions_","variableDB_","functionNames_","codeText","oldCodeText","Blockly.Generator.prototype.init","_workspace","Blockly.Generator.prototype.scrub_","_block","_opt_thisOnly","Blockly.Generator.prototype.finish","Blockly.Generator.prototype.scrubNakedValue","ToolboxItem","Blockly.ToolboxItem","toolboxItemDef","level_","getLevel","toolboxItemDef_","parentToolbox_","Blockly.ToolboxItem.prototype.init","getDiv","Blockly.ToolboxItem.prototype.getDiv","Blockly.ToolboxItem.prototype.getId","Blockly.ToolboxItem.prototype.getParent","Blockly.ToolboxItem.prototype.getLevel","isSelectable","Blockly.ToolboxItem.prototype.isSelectable","isCollapsible","Blockly.ToolboxItem.prototype.isCollapsible","Blockly.ToolboxItem.prototype.dispose","ToolboxCategory","Blockly.ToolboxCategory","categoryDef","getColour_","iconDom_","rowContents_","rowDiv_","htmlDiv_","cssConfig_","makeDefaultCssConfig_","isDisabled_","isHidden_","flyoutItems_","parseContents_","registrationName","nestedPadding","borderWidth","defaultBackgroundColour","Blockly.ToolboxCategory.prototype.makeDefaultCssConfig_","Blockly.ToolboxCategory.prototype.parseContents_","itemDef","Blockly.ToolboxCategory.prototype.init","Blockly.ToolboxCategory.prototype.createDom_","createContainer_","createRowContainer_","pointerEvents","createRowContentsContainer_","createIconDom_","labelDom","createLabelDom_","addColourBorder_","Blockly.ToolboxCategory.prototype.createContainer_","Blockly.ToolboxCategory.prototype.createRowContainer_","rowDiv","paddingRight","paddingLeft","Blockly.ToolboxCategory.prototype.createRowContentsContainer_","contentsContainer","Blockly.ToolboxCategory.prototype.createIconDom_","toolboxIcon","isHorizontal","Blockly.ToolboxCategory.prototype.createLabelDom_","toolboxLabel","Blockly.ToolboxCategory.prototype.refreshTheme","Blockly.ToolboxCategory.prototype.addColourBorder_","border","borderRight","borderLeft","Blockly.ToolboxCategory.prototype.getColour_","styleName","getColourfromStyle_","parseColour_","Blockly.ToolboxCategory.prototype.getColourfromStyle_","Blockly.ToolboxCategory.prototype.parseColour_","colourValue","openIcon_","Blockly.ToolboxCategory.prototype.openIcon_","iconDiv","closeIcon_","Blockly.ToolboxCategory.prototype.closeIcon_","setVisible_","Blockly.ToolboxCategory.prototype.setVisible_","Blockly.ToolboxCategory.prototype.hide","Blockly.ToolboxCategory.prototype.show","Blockly.ToolboxCategory.prototype.isVisible","allAncestorsExpanded_","Blockly.ToolboxCategory.prototype.allAncestorsExpanded_","category","isExpanded","Blockly.ToolboxCategory.prototype.isSelectable","onClick","Blockly.ToolboxCategory.prototype.onClick","setSelected","Blockly.ToolboxCategory.prototype.setSelected","isSelected","defaultColour","Blockly.ToolboxCategory.prototype.setDisabled","isDisabled","Blockly.ToolboxCategory.prototype.getName","Blockly.ToolboxCategory.prototype.getParent","Blockly.ToolboxCategory.prototype.getDiv","getContents","Blockly.ToolboxCategory.prototype.getContents","updateFlyoutContents","Blockly.ToolboxCategory.prototype.updateFlyoutContents","Blockly.ToolboxCategory.prototype.dispose","ToolboxSeparator","Blockly.ToolboxSeparator","separatorDef","Blockly.ToolboxSeparator.prototype.init","Blockly.ToolboxSeparator.prototype.createDom_","Blockly.ToolboxSeparator.prototype.getDiv","Blockly.ToolboxSeparator.prototype.dispose","CollapsibleToolboxCategory","Blockly.CollapsibleToolboxCategory","subcategoriesDiv_","expanded_","toolboxItems_","Blockly.CollapsibleToolboxCategory.prototype.makeDefaultCssConfig_","cssConfig","Blockly.CollapsibleToolboxCategory.prototype.parseContents_","prevIsFlyoutItem","createToolboxItem_","Blockly.CollapsibleToolboxCategory.prototype.createToolboxItem_","toolboxItem","ToolboxItemClass","Blockly.CollapsibleToolboxCategory.prototype.init","setExpanded","Blockly.CollapsibleToolboxCategory.prototype.createDom_","subCategories","getChildToolboxItems","createSubCategoriesDom_","Blockly.CollapsibleToolboxCategory.prototype.createIconDom_","Blockly.CollapsibleToolboxCategory.prototype.createSubCategoriesDom_","subcategories","newCategory","newCategoryDiv","Blockly.CollapsibleToolboxCategory.prototype.setExpanded","handleToolboxItemResize","Blockly.CollapsibleToolboxCategory.prototype.setVisible_","Blockly.CollapsibleToolboxCategory.prototype.isExpanded","Blockly.CollapsibleToolboxCategory.prototype.isCollapsible","Blockly.CollapsibleToolboxCategory.prototype.onClick","toggleExpanded","Blockly.CollapsibleToolboxCategory.prototype.toggleExpanded","Blockly.CollapsibleToolboxCategory.prototype.getDiv","Blockly.CollapsibleToolboxCategory.prototype.getChildToolboxItems","Blockly.Toolbox","toolboxDef_","contentsDiv_","HtmlDiv","contents_","contentMap_","previouslySelectedItem_","selectedItem_","boundEvents_","Blockly.Toolbox.prototype.init","createFlyout_","themeManager","Blockly.Toolbox.prototype.createDom_","createContentsContainer_","attachEvents_","Blockly.Toolbox.prototype.createContainer_","toolboxContainer","Blockly.Toolbox.prototype.createContentsContainer_","flexDirection","Blockly.Toolbox.prototype.attachEvents_","onClick_","keyDownEvent","onKeyDown_","Blockly.Toolbox.prototype.onClick_","itemId","srcElement","getToolboxItemById","setSelectedItem","Blockly.Toolbox.prototype.onKeyDown_","selectNext_","selectPrevious_","selectParent_","selectChild_","Blockly.Toolbox.prototype.createFlyout_","FlyoutClass","Blockly.Toolbox.prototype.render","renderContents_","Blockly.Toolbox.prototype.renderContents_","fragment","createDocumentFragment","Blockly.Toolbox.prototype.createToolboxItem_","addToolboxItem_","toolboxItemDom","Blockly.Toolbox.prototype.addToolboxItem_","getToolboxItems","Blockly.Toolbox.prototype.getToolboxItems","Blockly.Toolbox.prototype.addStyle","Blockly.Toolbox.prototype.removeStyle","Blockly.Toolbox.prototype.getClientRect","toolboxRect","Blockly.Toolbox.prototype.getToolboxItemById","Blockly.Toolbox.prototype.getWidth","Blockly.Toolbox.prototype.getHeight","Blockly.Toolbox.prototype.getFlyout","Blockly.Toolbox.prototype.getWorkspace","Blockly.Toolbox.prototype.getSelectedItem","getPreviouslySelectedItem","Blockly.Toolbox.prototype.getPreviouslySelectedItem","Blockly.Toolbox.prototype.isHorizontal","Blockly.Toolbox.prototype.position","toolboxDiv","Blockly.Toolbox.prototype.handleToolboxItemResize","Blockly.Toolbox.prototype.clearSelection","Blockly.Toolbox.prototype.refreshTheme","Blockly.Toolbox.prototype.refreshSelection","Blockly.Toolbox.prototype.setVisible","Blockly.Toolbox.prototype.setSelectedItem","newItem","oldItem","shouldDeselectItem_","deselectItem_","shouldSelectItem_","selectItem_","updateFlyout_","fireSelectEvent_","Blockly.Toolbox.prototype.shouldDeselectItem_","Blockly.Toolbox.prototype.shouldSelectItem_","Blockly.Toolbox.prototype.deselectItem_","Blockly.Toolbox.prototype.selectItem_","Blockly.Toolbox.prototype.selectItemByPosition","Blockly.Toolbox.prototype.updateFlyout_","Blockly.Toolbox.prototype.fireSelectEvent_","oldElement","newElement","Blockly.Toolbox.prototype.onBlocklyAction","Blockly.Toolbox.prototype.selectParent_","Blockly.Toolbox.prototype.selectChild_","collapsibleItem","Blockly.Toolbox.prototype.selectNext_","nextItemIdx","nextItem","Blockly.Toolbox.prototype.selectPrevious_","prevItemIdx","prevItem","Blockly.Toolbox.prototype.dispose","Blockly.Trashcan","flyoutWorkspaceOptions","onDelete_","WIDTH_","BODY_HEIGHT_","LID_HEIGHT_","MARGIN_BOTTOM_","MARGIN_SIDE_","MARGIN_HOTSPOT_","SPRITE_LEFT_","SPRITE_TOP_","HAS_BLOCKS_LID_ANGLE_","ANIMATION_LENGTH_","ANIMATION_FRAMES_","OPACITY_MIN_","OPACITY_MAX_","MAX_LID_ANGLE_","isLidOpen","minOpenness_","svgLid_","lidTask_","lidOpen_","left_","top_","Blockly.Trashcan.prototype.createDom","clip","setAttributeNS","click","mouseOver_","mouseOut_","animateLid_","Blockly.Trashcan.prototype.init","verticalSpacing_","Blockly.Trashcan.prototype.dispose","hasContents_","Blockly.Trashcan.prototype.hasContents_","contentsIsOpen","Blockly.Trashcan.prototype.contentsIsOpen","openFlyout","Blockly.Trashcan.prototype.openFlyout","fireUiEvent_","Blockly.Trashcan.prototype.closeFlyout","emptyContents","Blockly.Trashcan.prototype.emptyContents","setMinOpenness_","Blockly.Trashcan.prototype.position","Blockly.Trashcan.prototype.getClientRect","trashRect","Blockly.Trashcan.prototype.setLidOpen","Blockly.Trashcan.prototype.animateLid_","frames","setLidAngle_","minOpacity","Blockly.Trashcan.prototype.setLidAngle_","lidAngle","openAtRight","Blockly.Trashcan.prototype.setMinOpenness_","newMin","Blockly.Trashcan.prototype.closeLid","Blockly.Trashcan.prototype.click","Blockly.Trashcan.prototype.fireUiEvent_","trashcanOpen","uiEvent","Blockly.Trashcan.prototype.mouseOver_","Blockly.Trashcan.prototype.mouseOut_","Blockly.Trashcan.prototype.onDelete_","cleanedXML","cleanBlockXML_","Blockly.Trashcan.prototype.cleanBlockXML_","onCreateVariableButtonClick_String","Blockly.VariablesDynamic.onCreateVariableButtonClick_String","onCreateVariableButtonClick_Number","Blockly.VariablesDynamic.onCreateVariableButtonClick_Number","onCreateVariableButtonClick_Colour","Blockly.VariablesDynamic.onCreateVariableButtonClick_Colour","Blockly.VariablesDynamic.flyoutCategory","Blockly.VariablesDynamic.flyoutCategoryBlocks","firstVariable","Blockly.ZoomControls","zoomResetGroup_","zoomOutGroup_","zoomInGroup_","onZoomOutWrapper_","onZoomInWrapper_","onZoomResetWrapper_","HEIGHT_","Blockly.ZoomControls.prototype.createDom","createZoomOutSvg_","createZoomInSvg_","createZoomResetSvg_","Blockly.ZoomControls.prototype.init","Blockly.ZoomControls.prototype.dispose","Blockly.ZoomControls.prototype.position","Blockly.ZoomControls.prototype.createZoomOutSvg_","zoomoutSvg","zoom_","Blockly.ZoomControls.prototype.createZoomInSvg_","zoominSvg","Blockly.ZoomControls.prototype.zoom_","oldZoom","fireZoomEvent_","Blockly.ZoomControls.prototype.createZoomResetSvg_","zoomresetSvg","resetZoom_","Blockly.ZoomControls.prototype.resetZoom_","Blockly.ZoomControls.prototype.fireZoomEvent_","Blockly.Mutator","quarkNames","quarkNames_","workspaceWidth_","workspaceHeight_","Blockly.Mutator.prototype.setBlock","Blockly.Mutator.prototype.getWorkspace","Blockly.Mutator.prototype.drawIcon_","Blockly.Mutator.prototype.iconClick_","Blockly.Mutator.prototype.createEditor_","svgDialog_","quarkXml","quarkName","hasFlyout","getFlyoutMetrics_","flyoutSvg","background","Blockly.Mutator.prototype.updateEditable","resizeBubble_","Blockly.Mutator.prototype.resizeBubble_","workspaceSize","flyoutMetrics","onBubbleMove_","Blockly.Mutator.prototype.onBubbleMove_","Blockly.Mutator.prototype.setVisible","tree","rootBlock_","saveConnections","thisMutator","mutatorBlock","sourceListener_","this.sourceListener_","workspaceChanged_","Blockly.Mutator.prototype.workspaceChanged_","savedRendered","Blockly.Mutator.prototype.getFlyoutMetrics_","unsupported","Blockly.Mutator.prototype.dispose","Blockly.Mutator.prototype.updateBlockStyle","workspaceBlocks","flyoutBlocks","reconnect","Blockly.Mutator.reconnect","connectionChild","connectionParent","currentParent","findParentWs","Blockly.Mutator.findParentWs","outerWs","FieldTextInput","Blockly.FieldTextInput","spellcheck_","onKeyInputWrapper_","onKeyDownWrapper_","htmlInput_","fullBlockClickTarget_","Blockly.FieldTextInput.fromJson","BORDERRADIUS","Blockly.FieldTextInput.prototype.configure_","Blockly.FieldTextInput.prototype.initView","FULL_BLOCK_FIELDS","nFields","nConnections","Blockly.FieldTextInput.prototype.doClassValidation_","Blockly.FieldTextInput.prototype.doValueInvalid_","isBeingEdited_","isTextValid_","untypedDefaultValue_","Blockly.FieldTextInput.prototype.doValueUpdate_","Blockly.FieldTextInput.prototype.applyColour","FIELD_BORDER_RECT_COLOUR","Blockly.FieldTextInput.prototype.render_","resizeEditor_","htmlInput","setSpellcheck","Blockly.FieldTextInput.prototype.setSpellcheck","Blockly.FieldTextInput.prototype.showEditor_","_opt_e","opt_quietInput","quietInput","showPromptEditor_","showInlineEditor_","Blockly.FieldTextInput.prototype.showPromptEditor_","fieldText","Blockly.FieldTextInput.prototype.showInlineEditor_","widgetDispose_","widgetCreate_","Blockly.FieldTextInput.prototype.widgetCreate_","borderRadius","strokeColour","FIELD_TEXTINPUT_BOX_SHADOW","boxShadow","getEditorText_","oldValue_","bindInputEvents_","Blockly.FieldTextInput.prototype.widgetDispose_","onFinishEditing_","unbindInputEvents_","Blockly.FieldTextInput.prototype.bindInputEvents_","onHtmlInputKeyDown_","onHtmlInputChange_","Blockly.FieldTextInput.prototype.unbindInputEvents_","Blockly.FieldTextInput.prototype.onHtmlInputKeyDown_","Blockly.FieldTextInput.prototype.onHtmlInputChange_","getValueFromEditorText_","setEditorValue_","Blockly.FieldTextInput.prototype.setEditorValue_","Blockly.FieldTextInput.prototype.resizeEditor_","numberValidator","Blockly.FieldTextInput.numberValidator","nonnegativeIntegerValidator","Blockly.FieldTextInput.nonnegativeIntegerValidator","Blockly.FieldTextInput.prototype.isTabNavigable","Blockly.FieldTextInput.prototype.getText_","Blockly.FieldTextInput.prototype.getEditorText_","Blockly.FieldTextInput.prototype.getValueFromEditorText_","FieldAngle","Blockly.FieldAngle","clockwise_","CLOCKWISE","offset_","OFFSET","wrap_","WRAP","round_","ROUND","moveSurfaceWrapper_","clickSurfaceWrapper_","clickWrapper_","line_","gauge_","Blockly.FieldAngle.fromJson","HALF","RADIUS","Blockly.FieldAngle.prototype.configure_","clockwise","Blockly.FieldAngle.prototype.initView","symbol_","Blockly.FieldAngle.prototype.render_","updateGraph_","Blockly.FieldAngle.prototype.showEditor_","editor","dropdownCreate_","dropdownDispose_","Blockly.FieldAngle.prototype.dropdownCreate_","circle","hide_","Blockly.FieldAngle.prototype.dropdownDispose_","Blockly.FieldAngle.prototype.hide_","Blockly.FieldAngle.prototype.onMouseMove_","ownerSVGElement","displayMouseOrKeyboardValue_","Blockly.FieldAngle.prototype.displayMouseOrKeyboardValue_","wrapValue_","Blockly.FieldAngle.prototype.updateGraph_","clockwiseFlag","angle1","largeFlag","Blockly.FieldAngle.prototype.onHtmlInputKeyDown_","Blockly.FieldAngle.prototype.doClassValidation_","isFinite","Blockly.FieldAngle.prototype.wrapValue_","FieldCheckbox","Blockly.FieldCheckbox","checkChar_","Blockly.FieldCheckbox.fromJson","CHECK_CHAR","Blockly.FieldCheckbox.prototype.configure_","Blockly.FieldCheckbox.prototype.initView","Blockly.FieldCheckbox.prototype.render_","FIELD_CHECKBOX_X_OFFSET","Blockly.FieldCheckbox.prototype.getDisplayText_","setCheckCharacter","Blockly.FieldCheckbox.prototype.setCheckCharacter","character","Blockly.FieldCheckbox.prototype.showEditor_","Blockly.FieldCheckbox.prototype.doClassValidation_","Blockly.FieldCheckbox.prototype.doValueUpdate_","convertValueToBool_","Blockly.FieldCheckbox.prototype.getValue","getValueBoolean","Blockly.FieldCheckbox.prototype.getValueBoolean","Blockly.FieldCheckbox.prototype.getText","Blockly.FieldCheckbox.prototype.convertValueToBool_","FieldColour","Blockly.FieldColour","onMouseLeaveWrapper_","onMouseEnterWrapper_","onClickWrapper_","highlightedIndex_","picker_","Blockly.FieldColour.fromJson","colours_","titles_","columns_","Blockly.FieldColour.prototype.configure_","Blockly.FieldColour.prototype.initView","FIELD_COLOUR_DEFAULT_WIDTH","FIELD_COLOUR_DEFAULT_HEIGHT","FIELD_COLOUR_FULL_BLOCK","Blockly.FieldColour.prototype.applyColour","Blockly.FieldColour.prototype.doClassValidation_","Blockly.FieldColour.prototype.doValueUpdate_","Blockly.FieldColour.prototype.getText","COLOURS","TITLES","COLUMNS","setColours","Blockly.FieldColour.prototype.setColours","colours","opt_titles","setColumns","Blockly.FieldColour.prototype.setColumns","columns","Blockly.FieldColour.prototype.showEditor_","Blockly.FieldColour.prototype.onClick_","cell","Blockly.FieldColour.prototype.onKeyDown_","moveHighlightBy_","getHighlighted_","Blockly.FieldColour.prototype.onBlocklyAction","Blockly.FieldColour.prototype.moveHighlightBy_","setHighlightedCell_","Blockly.FieldColour.prototype.onMouseMove_","onMouseEnter_","Blockly.FieldColour.prototype.onMouseEnter_","onMouseLeave_","Blockly.FieldColour.prototype.onMouseLeave_","Blockly.FieldColour.prototype.getHighlighted_","row","col","Blockly.FieldColour.prototype.setHighlightedCell_","Blockly.FieldColour.prototype.dropdownCreate_","titles","selectedColour","table","dir","title","Blockly.FieldColour.prototype.dropdownDispose_","FieldDropdown","Blockly.FieldDropdown","menuGenerator","validateOptions_","menuGenerator_","generatedOptions_","trimOptions_","selectedOption_","svgArrow_","imageElement_","selectedMenuItem_","Blockly.FieldDropdown.fromJson","CHECKMARK_OVERHANG","MAX_MENU_HEIGHT_VH","IMAGE_Y_OFFSET","IMAGE_Y_PADDING","ARROW_CHAR","Blockly.FieldDropdown.prototype.initView","shouldAddBorderRect_","FIELD_DROPDOWN_SVG_ARROW","createSVGArrow_","createTextArrow_","Blockly.FieldDropdown.prototype.shouldAddBorderRect_","FIELD_DROPDOWN_NO_BORDER_RECT_SHADOW","Blockly.FieldDropdown.prototype.createTextArrow_","Blockly.FieldDropdown.prototype.createSVGArrow_","FIELD_DROPDOWN_SVG_ARROW_SIZE","FIELD_DROPDOWN_SVG_ARROW_DATAURI","Blockly.FieldDropdown.prototype.showEditor_","menuElement","FIELD_DROPDOWN_COLOURED_DIV","primaryColour","Blockly.FieldDropdown.prototype.dropdownCreate_","image","Image","src","alt","handleMenuActionEvent_","Blockly.FieldDropdown.prototype.dropdownDispose_","Blockly.FieldDropdown.prototype.handleMenuActionEvent_","onItemSelected_","Blockly.FieldDropdown.prototype.onItemSelected_","Blockly.FieldDropdown.prototype.trimOptions_","hasImages","strings","shortest","prefixLength","suffixLength","applyTrim_","Blockly.FieldDropdown.applyTrim_","newOptions","Blockly.FieldDropdown.prototype.isOptionListDynamic","Blockly.FieldDropdown.prototype.getOptions","opt_useCache","Blockly.FieldDropdown.prototype.doClassValidation_","isValueValid","Blockly.FieldDropdown.prototype.doValueUpdate_","Blockly.FieldDropdown.prototype.applyColour","Blockly.FieldDropdown.prototype.render_","renderSelectedImage_","renderSelectedText_","Blockly.FieldDropdown.prototype.renderSelectedImage_","imageJson","imageHeight","imageWidth","hasBorder","FIELD_DROPDOWN_BORDER_RECT_HEIGHT","xPadding","arrowWidth","positionSVGArrow_","Blockly.FieldDropdown.prototype.renderSelectedText_","textWidth","Blockly.FieldDropdown.prototype.positionSVGArrow_","textPadding","FIELD_DROPDOWN_SVG_ARROW_PADDING","svgArrowSize","Blockly.FieldDropdown.prototype.getText_","Blockly.FieldDropdown.validateOptions_","foundError","Blockly.FieldDropdown.prototype.onBlocklyAction","FieldLabelSerializable","Blockly.FieldLabelSerializable","Blockly.FieldLabelSerializable.fromJson","FieldImage","Blockly.FieldImage","opt_alt","opt_onClick","opt_flipRtl","flipRtl_","altText_","Y_PADDING","imageHeight_","Blockly.FieldImage.fromJson","Blockly.FieldImage.prototype.configure_","Blockly.FieldImage.prototype.initView","Blockly.FieldImage.prototype.updateSize_","Blockly.FieldImage.prototype.doClassValidation_","Blockly.FieldImage.prototype.doValueUpdate_","Blockly.FieldImage.prototype.getFlipRtl","setAlt","Blockly.FieldImage.prototype.setAlt","Blockly.FieldImage.prototype.showEditor_","setOnClickHandler","Blockly.FieldImage.prototype.setOnClickHandler","Blockly.FieldImage.prototype.getText_","FieldMultilineInput","Blockly.FieldMultilineInput","textGroup_","Blockly.FieldMultilineInput.fromJson","Blockly.FieldMultilineInput.prototype.toXml","Blockly.FieldMultilineInput.prototype.fromXml","Blockly.FieldMultilineInput.prototype.initView","Blockly.FieldMultilineInput.prototype.getDisplayText_","Blockly.FieldMultilineInput.prototype.render_","currentChild","lineHeight","FIELD_BORDER_RECT_Y_PADDING","Blockly.FieldMultilineInput.prototype.updateSize_","nodes","tspan","Blockly.FieldMultilineInput.prototype.widgetCreate_","paddingX","paddingY","padding","Blockly.FieldMultilineInput.prototype.onHtmlInputKeyDown_","FieldNumber","Blockly.FieldNumber","opt_min","opt_max","opt_precision","min_","max_","precision_","decimalPlaces_","setConstraints","Blockly.FieldNumber.fromJson","Blockly.FieldNumber.prototype.configure_","setMinInternal_","setMaxInternal_","setPrecisionInternal_","Blockly.FieldNumber.prototype.setConstraints","precision","setMin","Blockly.FieldNumber.prototype.setMin","Blockly.FieldNumber.prototype.setMinInternal_","getMin","Blockly.FieldNumber.prototype.getMin","setMax","Blockly.FieldNumber.prototype.setMax","Blockly.FieldNumber.prototype.setMaxInternal_","getMax","Blockly.FieldNumber.prototype.getMax","setPrecision","Blockly.FieldNumber.prototype.setPrecision","Blockly.FieldNumber.prototype.setPrecisionInternal_","precisionString","toLocaleString","maximumFractionDigits","decimalIndex","getPrecision","Blockly.FieldNumber.prototype.getPrecision","Blockly.FieldNumber.prototype.doClassValidation_","Blockly.FieldNumber.prototype.widgetCreate_","FieldVariable","Blockly.FieldVariable","opt_variableTypes","opt_defaultType","dropdownCreate","defaultVariableName","setTypes_","Blockly.FieldVariable.fromJson","Blockly.FieldVariable.prototype.configure_","Blockly.FieldVariable.prototype.initModel","variable_","defaultType_","Blockly.FieldVariable.prototype.shouldAddBorderRect_","Blockly.FieldVariable.prototype.fromXml","variableType","Blockly.FieldVariable.prototype.toXml","Blockly.FieldVariable.prototype.setSourceBlock","Blockly.FieldVariable.prototype.getValue","Blockly.FieldVariable.prototype.getText","Blockly.FieldVariable.prototype.getVariable","Blockly.FieldVariable.prototype.getValidator","Blockly.FieldVariable.prototype.doClassValidation_","typeIsAllowed_","Blockly.FieldVariable.prototype.doValueUpdate_","Blockly.FieldVariable.prototype.typeIsAllowed_","typeList","getVariableTypes_","Blockly.FieldVariable.prototype.getVariableTypes_","variableTypes","Blockly.FieldVariable.prototype.setTypes_","defaultType","isInArray","Blockly.FieldVariable.prototype.refreshVariableName","Blockly.FieldVariable.dropdownCreate","Blockly.FieldVariable.prototype.onItemSelected_","Blockly.FieldVariable.prototype.referencesVariables","Blockly.utils.svgPaths.point","curve","Blockly.utils.svgPaths.curve","command","points","Blockly.utils.svgPaths.moveTo","Blockly.utils.svgPaths.moveBy","lineTo","Blockly.utils.svgPaths.lineTo","Blockly.utils.svgPaths.line","Blockly.utils.svgPaths.lineOnAxis","val","arc","Blockly.utils.svgPaths.arc","flags","ConstantProvider","Blockly.blockRendering.ConstantProvider","NO_PADDING","SMALL_PADDING","MEDIUM_PADDING","MEDIUM_LARGE_PADDING","LARGE_PADDING","TALL_INPUT_FIELD_OFFSET_Y","TAB_HEIGHT","TAB_VERTICAL_OVERLAP","NOTCH_WIDTH","MIN_BLOCK_WIDTH","EMPTY_BLOCK_SPACER_HEIGHT","DUMMY_INPUT_SHADOW_MIN_HEIGHT","DUMMY_INPUT_MIN_HEIGHT","STATEMENT_INPUT_NOTCH_OFFSET","STATEMENT_BOTTOM_SPACER","STATEMENT_INPUT_PADDING_LEFT","BETWEEN_STATEMENT_PADDING_Y","TOP_ROW_MIN_HEIGHT","TOP_ROW_PRECEDES_STATEMENT_MIN_HEIGHT","BOTTOM_ROW_MIN_HEIGHT","BOTTOM_ROW_AFTER_STATEMENT_MIN_HEIGHT","ADD_START_HATS","START_HAT_HEIGHT","START_HAT_WIDTH","SPACER_DEFAULT_HEIGHT","EMPTY_INLINE_INPUT_PADDING","EMPTY_INLINE_INPUT_HEIGHT","EXTERNAL_VALUE_INPUT_PADDING","EMPTY_STATEMENT_INPUT_HEIGHT","START_POINT","JAGGED_TEETH_HEIGHT","JAGGED_TEETH_WIDTH","randomIdentifier","embossFilter_","disabledPatternId","disabledPattern_","debugFilterId","cssNode_","debugFilter_","CURSOR_COLOUR","MARKER_COLOUR","CURSOR_WS_WIDTH","WS_CURSOR_HEIGHT","CURSOR_STACK_PADDING","CURSOR_BLOCK_PADDING","CURSOR_STROKE_WIDTH","INSERTION_MARKER_OPACITY","SHAPES","PUZZLE","NOTCH","Blockly.blockRendering.ConstantProvider.prototype.init","JAGGED_TEETH","makeJaggedTeeth","makeNotch","START_HAT","makeStartHat","PUZZLE_TAB","makePuzzleTab","INSIDE_CORNERS","makeInsideCorners","OUTSIDE_CORNERS","makeOutsideCorners","Blockly.blockRendering.ConstantProvider.prototype.setTheme","validatedBlockStyle_","setDynamicProperties_","Blockly.blockRendering.ConstantProvider.prototype.setDynamicProperties_","setFontConstants_","setComponentConstants_","Blockly.blockRendering.ConstantProvider.prototype.setFontConstants_","Blockly.blockRendering.ConstantProvider.prototype.setComponentConstants_","Blockly.blockRendering.ConstantProvider.prototype.getBlockStyleForColour","createBlockStyle_","Blockly.blockRendering.ConstantProvider.prototype.getBlockStyle","Blockly.blockRendering.ConstantProvider.prototype.createBlockStyle_","Blockly.blockRendering.ConstantProvider.prototype.validatedBlockStyle_","valid","parsedColour","generateSecondaryColour_","generateTertiaryColour_","Blockly.blockRendering.ConstantProvider.prototype.generateSecondaryColour_","Blockly.blockRendering.ConstantProvider.prototype.generateTertiaryColour_","Blockly.blockRendering.ConstantProvider.prototype.dispose","Blockly.blockRendering.ConstantProvider.prototype.makeJaggedTeeth","mainPath","Blockly.blockRendering.ConstantProvider.prototype.makeStartHat","Blockly.blockRendering.ConstantProvider.prototype.makePuzzleTab","makeMainPath","up","back","control1Y","overlap","control2Y","endPoint1","endPoint2","pathUp","Blockly.blockRendering.ConstantProvider.prototype.makeNotch","outerWidth","innerWidth","pathRight","Blockly.blockRendering.ConstantProvider.prototype.makeInsideCorners","innerTopLeftCorner","innerBottomLeftCorner","pathTop","pathBottom","Blockly.blockRendering.ConstantProvider.prototype.makeOutsideCorners","topLeft","topRight","bottomLeft","bottomRight","rightHeight","Blockly.blockRendering.ConstantProvider.prototype.shapeFor","Blockly.blockRendering.ConstantProvider.prototype.createDom","selector","injectCSS_","embossFilter","feSpecularLighting","disabledPattern","Debug","debugFilter","debugComponentTransfer","Blockly.blockRendering.ConstantProvider.prototype.injectCSS_","getCSS_","cssNodeId","Blockly.blockRendering.ConstantProvider.prototype.getCSS_","MarkerSvg","Blockly.blockRendering.MarkerSvg","marker_","currentMarkerSvg","isCursor","CURSOR_CLASS","MARKER_CLASS","HEIGHT_MULTIPLIER","Blockly.blockRendering.MarkerSvg.prototype.getSvgRoot","Blockly.blockRendering.MarkerSvg.prototype.getMarker","Blockly.blockRendering.MarkerSvg.prototype.isCursor","Blockly.blockRendering.MarkerSvg.prototype.createDom","createDomInternal_","setParent_","Blockly.blockRendering.MarkerSvg.prototype.setParent_","Blockly.blockRendering.MarkerSvg.prototype.draw","applyColour_","showAtLocation_","fireMarkerEvent_","beginElement","Blockly.blockRendering.MarkerSvg.prototype.showAtLocation_","curNodeAsConnection","showWithBlock_","showWithOutput_","showWithInput_","showWithNext_","showWithPrevious_","showWithField_","showWithCoordinates_","showWithStack_","showWithBlockPrevOutput_","Blockly.blockRendering.MarkerSvg.prototype.showWithBlockPrevOutput_","markerHeight","markerOffset","connectionShape","positionPrevious_","positionOutput_","positionBlock_","showCurrent_","Blockly.blockRendering.MarkerSvg.prototype.showWithBlock_","Blockly.blockRendering.MarkerSvg.prototype.showWithPrevious_","Blockly.blockRendering.MarkerSvg.prototype.showWithOutput_","Blockly.blockRendering.MarkerSvg.prototype.showWithCoordinates_","positionLine_","Blockly.blockRendering.MarkerSvg.prototype.showWithField_","positionRect_","Blockly.blockRendering.MarkerSvg.prototype.showWithInput_","positionInput_","Blockly.blockRendering.MarkerSvg.prototype.showWithNext_","Blockly.blockRendering.MarkerSvg.prototype.showWithStack_","yPadding","Blockly.blockRendering.MarkerSvg.prototype.showCurrent_","Blockly.blockRendering.MarkerSvg.prototype.positionBlock_","markerPath","markerBlock_","Blockly.blockRendering.MarkerSvg.prototype.positionInput_","markerInput_","Blockly.blockRendering.MarkerSvg.prototype.positionLine_","markerSvgLine_","Blockly.blockRendering.MarkerSvg.prototype.positionOutput_","Blockly.blockRendering.MarkerSvg.prototype.positionPrevious_","Blockly.blockRendering.MarkerSvg.prototype.positionRect_","markerSvgRect_","Blockly.blockRendering.MarkerSvg.prototype.flipRtl_","Blockly.blockRendering.MarkerSvg.prototype.hide","Blockly.blockRendering.MarkerSvg.prototype.fireMarkerEvent_","eventType","getBlinkProperties_","Blockly.blockRendering.MarkerSvg.prototype.getBlinkProperties_","Blockly.blockRendering.MarkerSvg.prototype.createDomInternal_","blinkProperties","Blockly.blockRendering.MarkerSvg.prototype.applyColour_","_curNode","Blockly.blockRendering.MarkerSvg.prototype.dispose","Types","NONE","HAT","ICON","SPACER","BETWEEN_ROW_SPACER","IN_ROW_SPACER","EXTERNAL_VALUE_INPUT","INLINE_INPUT","STATEMENT_INPUT","CONNECTION","PREVIOUS_CONNECTION","NEXT_CONNECTION","OUTPUT_CONNECTION","CORNER","LEFT_SQUARE_CORNER","LEFT_ROUND_CORNER","RIGHT_SQUARE_CORNER","RIGHT_ROUND_CORNER","JAGGED_EDGE","TOP_ROW","BOTTOM_ROW","INPUT_ROW","LEFT_CORNER","RIGHT_CORNER","nextTypeValue_","Blockly.blockRendering.Types.getType","isField","Blockly.blockRendering.Types.isField","isHat","Blockly.blockRendering.Types.isHat","isIcon","Blockly.blockRendering.Types.isIcon","isSpacer","Blockly.blockRendering.Types.isSpacer","isInRowSpacer","Blockly.blockRendering.Types.isInRowSpacer","isInput","Blockly.blockRendering.Types.isInput","isExternalInput","Blockly.blockRendering.Types.isExternalInput","isInlineInput","Blockly.blockRendering.Types.isInlineInput","isStatementInput","Blockly.blockRendering.Types.isStatementInput","isPreviousConnection","Blockly.blockRendering.Types.isPreviousConnection","isNextConnection","Blockly.blockRendering.Types.isNextConnection","isPreviousOrNextConnection","Blockly.blockRendering.Types.isPreviousOrNextConnection","isLeftRoundedCorner","Blockly.blockRendering.Types.isLeftRoundedCorner","isRightRoundedCorner","Blockly.blockRendering.Types.isRightRoundedCorner","isLeftSquareCorner","Blockly.blockRendering.Types.isLeftSquareCorner","isRightSquareCorner","Blockly.blockRendering.Types.isRightSquareCorner","isCorner","Blockly.blockRendering.Types.isCorner","isJaggedEdge","Blockly.blockRendering.Types.isJaggedEdge","isRow","Blockly.blockRendering.Types.isRow","isBetweenRowSpacer","Blockly.blockRendering.Types.isBetweenRowSpacer","isTopRow","Blockly.blockRendering.Types.isTopRow","isBottomRow","Blockly.blockRendering.Types.isBottomRow","isTopOrBottomRow","Blockly.blockRendering.Types.isTopOrBottomRow","isInputRow","Blockly.blockRendering.Types.isInputRow","Measurable","Blockly.blockRendering.Measurable","centerline","xPos","notchOffset","Blockly.blockRendering.Connection","connectionModel","isDynamicShape","OutputConnection","Blockly.blockRendering.OutputConnection","startX","connectionOffsetY","connectionOffsetX","PreviousConnection","Blockly.blockRendering.PreviousConnection","NextConnection","Blockly.blockRendering.NextConnection","InputConnection","Blockly.blockRendering.InputConnection","connectedBlock","connectedBlockWidth","connectedBlockHeight","InlineInput","Blockly.blockRendering.InlineInput","connectionHeight","connectionWidth","StatementInput","Blockly.blockRendering.StatementInput","ExternalValueInput","Blockly.blockRendering.ExternalValueInput","Blockly.blockRendering.Icon","JaggedEdge","Blockly.blockRendering.JaggedEdge","Blockly.blockRendering.Field","flipRtl","Hat","Blockly.blockRendering.Hat","ascenderHeight","SquareCorner","Blockly.blockRendering.SquareCorner","opt_position","RoundCorner","Blockly.blockRendering.RoundCorner","InRowSpacer","Blockly.blockRendering.InRowSpacer","Row","Blockly.blockRendering.Row","widthWithConnectedBlocks","minWidth","minHeight","hasJaggedEdge","hasDummyInput","hasInlineInput","hasStatement","hasExternalInput","measure","Blockly.blockRendering.Row.prototype.measure","getLastInput","Blockly.blockRendering.Row.prototype.getLastInput","startsWithElemSpacer","Blockly.blockRendering.Row.prototype.startsWithElemSpacer","endsWithElemSpacer","Blockly.blockRendering.Row.prototype.endsWithElemSpacer","getFirstSpacer","Blockly.blockRendering.Row.prototype.getFirstSpacer","getLastSpacer","Blockly.blockRendering.Row.prototype.getLastSpacer","TopRow","Blockly.blockRendering.TopRow","capline","hasPreviousConnection","hasLeftSquareCorner","Blockly.blockRendering.TopRow.prototype.hasLeftSquareCorner","hasHat","hasRightSquareCorner","Blockly.blockRendering.TopRow.prototype.hasRightSquareCorner","Blockly.blockRendering.TopRow.prototype.measure","Blockly.blockRendering.TopRow.prototype.startsWithElemSpacer","Blockly.blockRendering.TopRow.prototype.endsWithElemSpacer","BottomRow","Blockly.blockRendering.BottomRow","hasNextConnection","descenderHeight","Blockly.blockRendering.BottomRow.prototype.hasLeftSquareCorner","Blockly.blockRendering.BottomRow.prototype.hasRightSquareCorner","Blockly.blockRendering.BottomRow.prototype.measure","Blockly.blockRendering.BottomRow.prototype.startsWithElemSpacer","Blockly.blockRendering.BottomRow.prototype.endsWithElemSpacer","SpacerRow","Blockly.blockRendering.SpacerRow","followsStatement","Blockly.blockRendering.SpacerRow.prototype.measure","InputRow","Blockly.blockRendering.InputRow","connectedBlockWidths","Blockly.blockRendering.InputRow.prototype.measure","Blockly.blockRendering.InputRow.prototype.endsWithElemSpacer","RenderInfo","Blockly.blockRendering.RenderInfo","isInline","statementEdge","widthWithChildren","rows","inputRows","hiddenIcons","topRow","bottomRow","startY","Blockly.blockRendering.RenderInfo.prototype.getRenderer","Blockly.blockRendering.RenderInfo.prototype.measure","createRows_","addElemSpacing_","addRowSpacing_","computeBounds_","alignRowElements_","finalize_","Blockly.blockRendering.RenderInfo.prototype.createRows_","populateTopRow_","activeRow","iconInfo","lastInput","shouldStartNewRow_","addInput_","populateBottomRow_","Blockly.blockRendering.RenderInfo.prototype.populateTopRow_","hasPrevious","leftSquareCorner","rightSquareCorner","Blockly.blockRendering.RenderInfo.prototype.populateBottomRow_","Blockly.blockRendering.RenderInfo.prototype.addInput_","Blockly.blockRendering.RenderInfo.prototype.shouldStartNewRow_","Blockly.blockRendering.RenderInfo.prototype.addElemSpacing_","oldElems","getInRowSpacing_","Blockly.blockRendering.RenderInfo.prototype.getInRowSpacing_","Blockly.blockRendering.RenderInfo.prototype.computeBounds_","widestStatementRowFields","blockWidth","widestRowWithConnectedBlocks","statementInput","Blockly.blockRendering.RenderInfo.prototype.alignRowElements_","alignStatementRow_","currentWidth","missingSpace","desiredWidth","getDesiredRowWidth_","addAlignmentPadding_","Blockly.blockRendering.RenderInfo.prototype.getDesiredRowWidth_","_row","Blockly.blockRendering.RenderInfo.prototype.addAlignmentPadding_","firstSpacer","lastSpacer","Blockly.blockRendering.RenderInfo.prototype.alignStatementRow_","Blockly.blockRendering.RenderInfo.prototype.addRowSpacing_","oldRows","makeSpacerRow_","Blockly.blockRendering.RenderInfo.prototype.makeSpacerRow_","getSpacerRowHeight_","getSpacerRowWidth_","spacer","precedesStatement","Blockly.blockRendering.RenderInfo.prototype.getSpacerRowWidth_","_prev","_next","Blockly.blockRendering.RenderInfo.prototype.getSpacerRowHeight_","getElemCenterline_","Blockly.blockRendering.RenderInfo.prototype.getElemCenterline_","recordElemPositions_","Blockly.blockRendering.RenderInfo.prototype.recordElemPositions_","xCursor","Blockly.blockRendering.RenderInfo.prototype.finalize_","yCursor","Drawer","Blockly.blockRendering.Drawer","info_","topLeft_","inlinePath_","outlinePath_","Blockly.blockRendering.Drawer.prototype.draw","hideHiddenIcons_","drawOutline_","drawInternals_","setPath","flipRTL","renderingDebugger","drawDebug","recordSizeOnBlock_","Blockly.blockRendering.Drawer.prototype.recordSizeOnBlock_","Blockly.blockRendering.Drawer.prototype.hideHiddenIcons_","Blockly.blockRendering.Drawer.prototype.drawOutline_","drawTop_","drawJaggedEdge_","drawStatementInput_","drawValueInput_","drawRightSideRow_","drawBottom_","drawLeft_","Blockly.blockRendering.Drawer.prototype.drawTop_","positionPreviousConnection_","Blockly.blockRendering.Drawer.prototype.drawJaggedEdge_","Blockly.blockRendering.Drawer.prototype.drawValueInput_","positionExternalValueConnection_","Blockly.blockRendering.Drawer.prototype.drawStatementInput_","innerHeight","positionStatementInputConnection_","Blockly.blockRendering.Drawer.prototype.drawRightSideRow_","Blockly.blockRendering.Drawer.prototype.drawBottom_","elems","positionNextConnection_","rightCornerYOffset","outlinePath","Blockly.blockRendering.Drawer.prototype.drawLeft_","positionOutputConnection_","tabBottom","Blockly.blockRendering.Drawer.prototype.drawInternals_","drawInlineInput_","layoutField_","Blockly.blockRendering.Drawer.prototype.layoutField_","fieldInfo","Blockly.blockRendering.Drawer.prototype.drawInlineInput_","connectionTop","connectionBottom","positionInlineInputConnection_","Blockly.blockRendering.Drawer.prototype.positionInlineInputConnection_","connX","Blockly.blockRendering.Drawer.prototype.positionStatementInputConnection_","Blockly.blockRendering.Drawer.prototype.positionExternalValueConnection_","Blockly.blockRendering.Drawer.prototype.positionPreviousConnection_","Blockly.blockRendering.Drawer.prototype.positionNextConnection_","connInfo","Blockly.blockRendering.Drawer.prototype.positionOutputConnection_","PathObject","Blockly.blockRendering.PathObject","Blockly.blockRendering.PathObject.prototype.setPath","pathString","Blockly.blockRendering.PathObject.prototype.flipRTL","Blockly.blockRendering.PathObject.prototype.setCursorSvg","Blockly.blockRendering.PathObject.prototype.setMarkerSvg","Blockly.blockRendering.PathObject.prototype.applyColour","updateShadow_","updateDisabled_","Blockly.blockRendering.PathObject.prototype.setStyle","setClass_","Blockly.blockRendering.PathObject.prototype.setClass_","Blockly.blockRendering.PathObject.prototype.updateHighlighted","Blockly.blockRendering.PathObject.prototype.updateShadow_","Blockly.blockRendering.PathObject.prototype.updateDisabled_","Blockly.blockRendering.PathObject.prototype.updateSelected","Blockly.blockRendering.PathObject.prototype.updateDraggingDelete","Blockly.blockRendering.PathObject.prototype.updateInsertionMarker","Blockly.blockRendering.PathObject.prototype.updateMovable","Blockly.blockRendering.PathObject.prototype.updateReplacementFade","Blockly.blockRendering.PathObject.prototype.updateShapeForInputHighlight","_conn","Renderer","Blockly.blockRendering.Renderer","overrides","Blockly.blockRendering.Renderer.prototype.getClassName","Blockly.blockRendering.Renderer.prototype.init","makeConstants_","Blockly.blockRendering.Renderer.prototype.createDom","Blockly.blockRendering.Renderer.prototype.refreshDom","previousConstants","Blockly.blockRendering.Renderer.prototype.dispose","Blockly.blockRendering.Renderer.prototype.makeConstants_","makeRenderInfo_","Blockly.blockRendering.Renderer.prototype.makeRenderInfo_","makeDrawer_","Blockly.blockRendering.Renderer.prototype.makeDrawer_","makeDebugger_","Blockly.blockRendering.Renderer.prototype.makeDebugger_","Blockly.blockRendering.Renderer.prototype.makeMarkerDrawer","Blockly.blockRendering.Renderer.prototype.makePathObject","Blockly.blockRendering.Renderer.prototype.getConstants","Blockly.blockRendering.Renderer.prototype.shouldHighlightConnection","orphanCanConnectAtEnd","Blockly.blockRendering.Renderer.prototype.orphanCanConnectAtEnd","localType","orphanConnection","lastConnection","Blockly.blockRendering.Renderer.prototype.getConnectionPreviewMethod","Blockly.blockRendering.Renderer.prototype.render","geras","Blockly.geras.ConstantProvider","DARK_PATH_OFFSET","MAX_BOTTOM_WIDTH","Blockly.geras.ConstantProvider.prototype.getCSS_","Highlighter","Blockly.geras.Highlighter","inlineSteps_","steps_","RTL_","highlightConstants_","getHighlightConstants","highlightOffset_","outsideCornerPaths_","OUTSIDE_CORNER","insideCornerPaths_","INSIDE_CORNER","puzzleTabPaths_","notchPaths_","startPaths_","jaggedTeethPaths_","getPath","Blockly.geras.Highlighter.prototype.getPath","drawTopCorner","Blockly.geras.Highlighter.prototype.drawTopCorner","Blockly.geras.Highlighter.prototype.drawJaggedEdge_","drawValueInput","Blockly.geras.Highlighter.prototype.drawValueInput","belowTabHeight","drawStatementInput","Blockly.geras.Highlighter.prototype.drawStatementInput","drawRightSideRow","Blockly.geras.Highlighter.prototype.drawRightSideRow","rightEdge","drawBottomRow","Blockly.geras.Highlighter.prototype.drawBottomRow","cornerElem","drawLeft","Blockly.geras.Highlighter.prototype.drawLeft","drawInlineInput","Blockly.geras.Highlighter.prototype.drawInlineInput","connectionRight","bottomHighlightWidth","aboveTabHeight","Blockly.geras.InlineInput","Blockly.geras.StatementInput","Blockly.geras.RenderInfo","Blockly.geras.RenderInfo.prototype.getRenderer","Blockly.geras.RenderInfo.prototype.populateBottomRow_","Blockly.geras.RenderInfo.prototype.addInput_","Blockly.geras.RenderInfo.prototype.addElemSpacing_","hasExternalInputs","Blockly.geras.RenderInfo.prototype.getInRowSpacing_","Blockly.geras.RenderInfo.prototype.getSpacerRowHeight_","Blockly.geras.RenderInfo.prototype.getElemCenterline_","Blockly.geras.RenderInfo.prototype.alignRowElements_","nextRightEdge","prevInput","prevRightEdge","Blockly.geras.RenderInfo.prototype.getDesiredRowWidth_","Blockly.geras.RenderInfo.prototype.finalize_","heightWithoutHat","diff","Blockly.geras.Drawer","highlighter_","Blockly.geras.Drawer.prototype.draw","setHighlightPath","Blockly.geras.Drawer.prototype.drawTop_","Blockly.geras.Drawer.prototype.drawJaggedEdge_","Blockly.geras.Drawer.prototype.drawValueInput_","Blockly.geras.Drawer.prototype.drawStatementInput_","Blockly.geras.Drawer.prototype.drawRightSideRow_","Blockly.geras.Drawer.prototype.drawBottom_","Blockly.geras.Drawer.prototype.drawLeft_","Blockly.geras.Drawer.prototype.drawInlineInput_","Blockly.geras.Drawer.prototype.positionInlineInputConnection_","Blockly.geras.Drawer.prototype.positionStatementInputConnection_","Blockly.geras.Drawer.prototype.positionExternalValueConnection_","Blockly.geras.Drawer.prototype.positionNextConnection_","HighlightConstantProvider","Blockly.geras.HighlightConstantProvider","constantProvider","Blockly.geras.HighlightConstantProvider.prototype.init","makeInsideCorner","makeOutsideCorner","Blockly.geras.HighlightConstantProvider.prototype.makeInsideCorner","distance45outside","SQRT1_2","pathTopRtl","pathBottomRtl","pathBottomLtr","Blockly.geras.HighlightConstantProvider.prototype.makeOutsideCorner","distance45inside","topLeftCornerHighlightRtl","topLeftCornerHighlightLtr","bottomLeftStartY","bottomLeftPath","Blockly.geras.HighlightConstantProvider.prototype.makePuzzleTab","highlightRtlUp","highlightRtlDown","verticalOverlap","highlightLtrUp","highlightLtrDown","Blockly.geras.HighlightConstantProvider.prototype.makeNotch","Blockly.geras.HighlightConstantProvider.prototype.makeJaggedTeeth","Blockly.geras.HighlightConstantProvider.prototype.makeStartHat","hatHeight","pathRtl","pathLtr","Blockly.geras.PathObject","svgPathDark","svgPathLight","Blockly.geras.PathObject.prototype.setPath","Blockly.geras.PathObject.prototype.setHighlightPath","highlightPath","Blockly.geras.PathObject.prototype.flipRTL","Blockly.geras.PathObject.prototype.applyColour","Blockly.geras.PathObject.prototype.setStyle","Blockly.geras.PathObject.prototype.updateHighlighted","Blockly.geras.PathObject.prototype.updateShadow_","Blockly.geras.PathObject.prototype.updateDisabled_","Blockly.geras.Renderer","Blockly.geras.Renderer.prototype.init","makeHighlightConstants_","Blockly.geras.Renderer.prototype.refreshDom","Blockly.geras.Renderer.prototype.makeConstants_","Blockly.geras.Renderer.prototype.makeRenderInfo_","Blockly.geras.Renderer.prototype.makeDrawer_","Blockly.geras.Renderer.prototype.makePathObject","Blockly.geras.Renderer.prototype.makeHighlightConstants_","Blockly.geras.Renderer.prototype.getHighlightConstants","thrasos","Blockly.thrasos.RenderInfo","Blockly.thrasos.RenderInfo.prototype.getRenderer","Blockly.thrasos.RenderInfo.prototype.addElemSpacing_","Blockly.thrasos.RenderInfo.prototype.getInRowSpacing_","Blockly.thrasos.RenderInfo.prototype.getSpacerRowHeight_","Blockly.thrasos.RenderInfo.prototype.getElemCenterline_","Blockly.thrasos.RenderInfo.prototype.finalize_","Blockly.thrasos.Renderer","Blockly.thrasos.Renderer.prototype.makeRenderInfo_","zelos","Blockly.zelos.ConstantProvider","GRID_UNIT","STATEMENT_INPUT_SPACER_MIN_WIDTH","CURSOR_RADIUS","HEXAGONAL","SQUARE","SHAPE_IN_SHAPE_PADDING","MAX_DYNAMIC_CONNECTION_SHAPE_WIDTH","SELECTED_GLOW_COLOUR","SELECTED_GLOW_SIZE","REPLACEMENT_GLOW_COLOUR","REPLACEMENT_GLOW_SIZE","selectedGlowFilterId","selectedGlowFilter_","replacementGlowFilterId","replacementGlowFilter_","Blockly.zelos.ConstantProvider.prototype.setFontConstants_","Blockly.zelos.ConstantProvider.prototype.init","makeHexagonal","ROUNDED","makeRounded","SQUARED","makeSquared","rightWidth","Blockly.zelos.ConstantProvider.prototype.setDynamicProperties_","selectedGlowSize","replacementGlowSize","Blockly.zelos.ConstantProvider.prototype.dispose","Blockly.zelos.ConstantProvider.prototype.makeStartHat","Blockly.zelos.ConstantProvider.prototype.makeHexagonal","isDynamic","pathRightDown","pathRightUp","Blockly.zelos.ConstantProvider.prototype.makeRounded","blockHeight","remainingHeight","maxHeight","Blockly.zelos.ConstantProvider.prototype.makeSquared","_height","Blockly.zelos.ConstantProvider.prototype.shapeFor","Blockly.zelos.ConstantProvider.prototype.makeNotch","curveWidth","quarterHeight","Blockly.zelos.ConstantProvider.prototype.makeInsideCorners","innerTopRightCorner","innerBottomRightCorner","pathTopRight","pathBottomRight","Blockly.zelos.ConstantProvider.prototype.generateSecondaryColour_","Blockly.zelos.ConstantProvider.prototype.generateTertiaryColour_","Blockly.zelos.ConstantProvider.prototype.createDom","selectedGlowFilter","selectedComponentTransfer","replacementGlowFilter","replacementComponentTransfer","Blockly.zelos.ConstantProvider.prototype.getCSS_","Blockly.zelos.TopRow","Blockly.zelos.TopRow.prototype.endsWithElemSpacer","Blockly.zelos.TopRow.prototype.hasLeftSquareCorner","Blockly.zelos.TopRow.prototype.hasRightSquareCorner","Blockly.zelos.BottomRow","Blockly.zelos.BottomRow.prototype.endsWithElemSpacer","Blockly.zelos.BottomRow.prototype.hasLeftSquareCorner","Blockly.zelos.BottomRow.prototype.hasRightSquareCorner","RightConnectionShape","Blockly.zelos.RightConnectionShape","Blockly.zelos.StatementInput","connectedBottomNextConnection","Blockly.zelos.RenderInfo","isMultiRow","hasStatementInput","rightSide","Blockly.zelos.RenderInfo.prototype.getRenderer","Blockly.zelos.RenderInfo.prototype.measure","adjustXPosition_","Blockly.zelos.RenderInfo.prototype.shouldStartNewRow_","Blockly.zelos.RenderInfo.prototype.getDesiredRowWidth_","Blockly.zelos.RenderInfo.prototype.getInRowSpacing_","Blockly.zelos.RenderInfo.prototype.getSpacerRowHeight_","Blockly.zelos.RenderInfo.prototype.getSpacerRowWidth_","Blockly.zelos.RenderInfo.prototype.getElemCenterline_","Blockly.zelos.RenderInfo.prototype.addInput_","rightAlignedDummyInput","Blockly.zelos.RenderInfo.prototype.addAlignmentPadding_","alignmentDivider","Blockly.zelos.RenderInfo.prototype.adjustXPosition_","notchTotalWidth","minXPos","prevSpacer","nextSpacer","hasPrevNotch","hasNextNotch","prevInRowSpacer","finalizeOutputConnection_","Blockly.zelos.RenderInfo.prototype.finalizeOutputConnection_","rightConnectionWidth","finalizeHorizontalAlignment_","Blockly.zelos.RenderInfo.prototype.finalizeHorizontalAlignment_","totalNegativeSpacing","lastElem","leftNegPadding","getNegativeSpacing_","firstElem","rightNegPadding","minBlockWidth","Blockly.zelos.RenderInfo.prototype.getNegativeSpacing_","outerShape","innerShape","outputShapeType","finalizeVerticalAlignment_","Blockly.zelos.RenderInfo.prototype.finalizeVerticalAlignment_","firstRow","hasSingleTextOrImageField","hasNonShadowConnectedBlocks","MIN_VERTICAL_TIGHTNESTING_HEIGHT","Blockly.zelos.RenderInfo.prototype.finalize_","Blockly.zelos.Drawer","Blockly.zelos.Drawer.prototype.draw","beginDrawing","endDrawing","Blockly.zelos.Drawer.prototype.drawOutline_","drawFlatTop_","drawRightDynamicConnection_","drawFlatBottom_","drawLeftDynamicConnection_","Blockly.zelos.Drawer.prototype.drawLeft_","Blockly.zelos.Drawer.prototype.drawRightSideRow_","cornerHeight","Blockly.zelos.Drawer.prototype.drawRightDynamicConnection_","Blockly.zelos.Drawer.prototype.drawLeftDynamicConnection_","Blockly.zelos.Drawer.prototype.drawFlatTop_","Blockly.zelos.Drawer.prototype.drawFlatBottom_","Blockly.zelos.Drawer.prototype.drawInlineInput_","setOutlinePath","Blockly.zelos.Drawer.prototype.drawStatementInput_","Blockly.zelos.PathObject","svgPathSelected_","outlines_","remainingOutlines_","Blockly.zelos.PathObject.prototype.setPath","Blockly.zelos.PathObject.prototype.applyColour","Blockly.zelos.PathObject.prototype.flipRTL","Blockly.zelos.PathObject.prototype.updateSelected","Blockly.zelos.PathObject.prototype.updateReplacementFade","Blockly.zelos.PathObject.prototype.updateShapeForInputHighlight","getOutlinePath_","Blockly.zelos.PathObject.prototype.beginDrawing","Blockly.zelos.PathObject.prototype.endDrawing","removeOutlinePath_","Blockly.zelos.PathObject.prototype.setOutlinePath","outline","Blockly.zelos.PathObject.prototype.getOutlinePath_","Blockly.zelos.PathObject.prototype.removeOutlinePath_","Blockly.zelos.MarkerSvg","showWithInputOutput_","Blockly.zelos.MarkerSvg.prototype.showWithInputOutput_","offsetInBlock","positionCircle_","Blockly.zelos.MarkerSvg.prototype.showWithOutput_","Blockly.zelos.MarkerSvg.prototype.showWithInput_","Blockly.zelos.MarkerSvg.prototype.showWithBlock_","Blockly.zelos.MarkerSvg.prototype.positionCircle_","markerCircle_","Blockly.zelos.MarkerSvg.prototype.hide","Blockly.zelos.MarkerSvg.prototype.createDomInternal_","Blockly.zelos.MarkerSvg.prototype.applyColour_","Blockly.zelos.Renderer","Blockly.zelos.Renderer.prototype.makeConstants_","Blockly.zelos.Renderer.prototype.makeRenderInfo_","Blockly.zelos.Renderer.prototype.makeDrawer_","Blockly.zelos.Renderer.prototype.makeMarkerDrawer","Blockly.zelos.Renderer.prototype.makePathObject","Blockly.zelos.Renderer.prototype.shouldHighlightConnection","Blockly.zelos.Renderer.prototype.getConnectionPreviewMethod","Dark","Deuteranopia","HighContrast","Tritanopia"],"mappings":"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","file":"blockly_compressed.js","sourceRoot":"./"} \ No newline at end of file diff --git a/blockly_uncompressed.js b/blockly_uncompressed.js index 30302b2d094..cdb9c4057f9 100644 --- a/blockly_uncompressed.js +++ b/blockly_uncompressed.js @@ -21,65 +21,71 @@ this.BLOCKLY_DIR = (function(root) { this.BLOCKLY_BOOT = function(root) { // Execute after Closure has loaded. -goog.addDependency('../../core/block.js', ['Blockly.Block'], ['Blockly.ASTNode', 'Blockly.Blocks', 'Blockly.Connection', 'Blockly.Events', 'Blockly.Events.BlockChange', 'Blockly.Events.BlockCreate', 'Blockly.Events.BlockDelete', 'Blockly.Events.BlockMove', 'Blockly.Extensions', 'Blockly.Input', 'Blockly.Workspace', 'Blockly.fieldRegistry', 'Blockly.navigation', 'Blockly.utils', 'Blockly.utils.Coordinate', 'Blockly.utils.object', 'Blockly.utils.string'], {'lang': 'es5'}); -goog.addDependency('../../core/block_animations.js', ['Blockly.blockAnimations'], ['Blockly.utils.dom'], {}); -goog.addDependency('../../core/block_drag_surface.js', ['Blockly.BlockDragSurfaceSvg'], ['Blockly.utils', 'Blockly.utils.Coordinate', 'Blockly.utils.dom'], {}); +goog.addDependency('../../core/block.js', ['Blockly.Block'], ['Blockly.ASTNode', 'Blockly.Blocks', 'Blockly.Connection', 'Blockly.Events', 'Blockly.Events.BlockChange', 'Blockly.Events.BlockCreate', 'Blockly.Events.BlockDelete', 'Blockly.Events.BlockMove', 'Blockly.Extensions', 'Blockly.Input', 'Blockly.Tooltip', 'Blockly.Workspace', 'Blockly.fieldRegistry', 'Blockly.navigation', 'Blockly.utils', 'Blockly.utils.Coordinate', 'Blockly.utils.deprecation', 'Blockly.utils.object', 'Blockly.utils.string'], {'lang': 'es5'}); +goog.addDependency('../../core/block_animations.js', ['Blockly.blockAnimations'], ['Blockly.utils.Svg', 'Blockly.utils.dom'], {}); +goog.addDependency('../../core/block_drag_surface.js', ['Blockly.BlockDragSurfaceSvg'], ['Blockly.utils', 'Blockly.utils.Coordinate', 'Blockly.utils.Svg', 'Blockly.utils.dom'], {}); goog.addDependency('../../core/block_dragger.js', ['Blockly.BlockDragger'], ['Blockly.Events', 'Blockly.Events.BlockMove', 'Blockly.Events.Ui', 'Blockly.InsertionMarkerManager', 'Blockly.blockAnimations', 'Blockly.utils.Coordinate', 'Blockly.utils.dom'], {}); -goog.addDependency('../../core/block_events.js', ['Blockly.Events.BlockBase', 'Blockly.Events.BlockChange', 'Blockly.Events.BlockCreate', 'Blockly.Events.BlockDelete', 'Blockly.Events.BlockMove', 'Blockly.Events.Change', 'Blockly.Events.Create', 'Blockly.Events.Delete', 'Blockly.Events.Move'], ['Blockly.Events', 'Blockly.Events.Abstract', 'Blockly.utils.Coordinate', 'Blockly.utils.object', 'Blockly.utils.xml'], {}); -goog.addDependency('../../core/block_svg.js', ['Blockly.BlockSvg'], ['Blockly.ASTNode', 'Blockly.Block', 'Blockly.ContextMenu', 'Blockly.Events', 'Blockly.Events.BlockMove', 'Blockly.Events.Ui', 'Blockly.Msg', 'Blockly.RenderedConnection', 'Blockly.TabNavigateCursor', 'Blockly.Tooltip', 'Blockly.Touch', 'Blockly.blockAnimations', 'Blockly.blockRendering.IPathObject', 'Blockly.navigation', 'Blockly.utils', 'Blockly.utils.Coordinate', 'Blockly.utils.Rect', 'Blockly.utils.dom', 'Blockly.utils.object'], {}); +goog.addDependency('../../core/block_events.js', ['Blockly.Events.BlockBase', 'Blockly.Events.BlockChange', 'Blockly.Events.BlockCreate', 'Blockly.Events.BlockDelete', 'Blockly.Events.BlockMove', 'Blockly.Events.Change', 'Blockly.Events.Create', 'Blockly.Events.Delete', 'Blockly.Events.Move'], ['Blockly.Events', 'Blockly.Events.Abstract', 'Blockly.registry', 'Blockly.utils.Coordinate', 'Blockly.utils.object', 'Blockly.utils.xml'], {}); +goog.addDependency('../../core/block_svg.js', ['Blockly.BlockSvg'], ['Blockly.ASTNode', 'Blockly.Block', 'Blockly.ContextMenu', 'Blockly.ContextMenuRegistry', 'Blockly.Events', 'Blockly.Events.BlockMove', 'Blockly.Events.Ui', 'Blockly.Msg', 'Blockly.RenderedConnection', 'Blockly.TabNavigateCursor', 'Blockly.Tooltip', 'Blockly.Touch', 'Blockly.blockAnimations', 'Blockly.blockRendering.IPathObject', 'Blockly.navigation', 'Blockly.utils', 'Blockly.utils.Coordinate', 'Blockly.utils.Rect', 'Blockly.utils.deprecation', 'Blockly.utils.dom', 'Blockly.utils.object'], {}); goog.addDependency('../../core/blockly.js', ['Blockly'], ['Blockly.Events', 'Blockly.Events.Ui', 'Blockly.Procedures', 'Blockly.Tooltip', 'Blockly.Touch', 'Blockly.Variables', 'Blockly.WidgetDiv', 'Blockly.WorkspaceSvg', 'Blockly.Xml', 'Blockly.constants', 'Blockly.inject', 'Blockly.navigation', 'Blockly.utils', 'Blockly.utils.Size', 'Blockly.utils.colour'], {}); goog.addDependency('../../core/blocks.js', ['Blockly.Blocks'], [], {}); -goog.addDependency('../../core/bubble.js', ['Blockly.Bubble'], ['Blockly.Scrollbar', 'Blockly.Touch', 'Blockly.Workspace', 'Blockly.utils', 'Blockly.utils.Coordinate', 'Blockly.utils.dom', 'Blockly.utils.math', 'Blockly.utils.userAgent'], {}); +goog.addDependency('../../core/bubble.js', ['Blockly.Bubble'], ['Blockly.Scrollbar', 'Blockly.Touch', 'Blockly.Workspace', 'Blockly.utils', 'Blockly.utils.Coordinate', 'Blockly.utils.Svg', 'Blockly.utils.dom', 'Blockly.utils.math', 'Blockly.utils.userAgent'], {}); goog.addDependency('../../core/bubble_dragger.js', ['Blockly.BubbleDragger'], ['Blockly.Bubble', 'Blockly.Events', 'Blockly.Events.CommentMove', 'Blockly.utils', 'Blockly.utils.Coordinate'], {}); -goog.addDependency('../../core/comment.js', ['Blockly.Comment'], ['Blockly.Bubble', 'Blockly.Css', 'Blockly.Events', 'Blockly.Events.BlockChange', 'Blockly.Events.Ui', 'Blockly.Icon', 'Blockly.Warning', 'Blockly.utils.dom', 'Blockly.utils.object', 'Blockly.utils.userAgent'], {}); +goog.addDependency('../../core/comment.js', ['Blockly.Comment'], ['Blockly.Bubble', 'Blockly.Css', 'Blockly.Events', 'Blockly.Events.BlockChange', 'Blockly.Events.Ui', 'Blockly.Icon', 'Blockly.Warning', 'Blockly.utils.Svg', 'Blockly.utils.deprecation', 'Blockly.utils.dom', 'Blockly.utils.object', 'Blockly.utils.userAgent'], {}); goog.addDependency('../../core/components/component.js', ['Blockly.Component', 'Blockly.Component.Error'], ['Blockly.utils.IdGenerator', 'Blockly.utils.dom', 'Blockly.utils.style'], {}); -goog.addDependency('../../core/components/tree/basenode.js', ['Blockly.tree.BaseNode'], ['Blockly.Component', 'Blockly.utils.KeyCodes', 'Blockly.utils.aria', 'Blockly.utils.object', 'Blockly.utils.style'], {}); -goog.addDependency('../../core/components/tree/treecontrol.js', ['Blockly.tree.TreeControl'], ['Blockly.tree.BaseNode', 'Blockly.tree.TreeNode', 'Blockly.utils.aria', 'Blockly.utils.object', 'Blockly.utils.style'], {}); -goog.addDependency('../../core/components/tree/treenode.js', ['Blockly.tree.TreeNode'], ['Blockly.tree.BaseNode', 'Blockly.utils.KeyCodes', 'Blockly.utils.object'], {}); -goog.addDependency('../../core/connection.js', ['Blockly.Connection'], ['Blockly.Events', 'Blockly.Events.BlockMove', 'Blockly.Xml'], {}); +goog.addDependency('../../core/connection.js', ['Blockly.Connection'], ['Blockly.Events', 'Blockly.Events.BlockMove', 'Blockly.Xml', 'Blockly.utils.deprecation'], {}); +goog.addDependency('../../core/connection_checker.js', ['Blockly.ConnectionChecker'], ['Blockly.registry'], {}); goog.addDependency('../../core/connection_db.js', ['Blockly.ConnectionDB'], ['Blockly.RenderedConnection'], {}); goog.addDependency('../../core/constants.js', ['Blockly.constants'], [], {}); goog.addDependency('../../core/contextmenu.js', ['Blockly.ContextMenu'], ['Blockly.Events', 'Blockly.Events.BlockCreate', 'Blockly.Menu', 'Blockly.MenuItem', 'Blockly.Msg', 'Blockly.Xml', 'Blockly.utils', 'Blockly.utils.Coordinate', 'Blockly.utils.Rect', 'Blockly.utils.dom', 'Blockly.utils.userAgent'], {}); +goog.addDependency('../../core/contextmenu_items.js', ['Blockly.ContextMenuItems'], [], {'lang': 'es5'}); +goog.addDependency('../../core/contextmenu_registry.js', ['Blockly.ContextMenuRegistry'], ['Blockly.ContextMenuItems'], {'lang': 'es5'}); goog.addDependency('../../core/css.js', ['Blockly.Css'], [], {'lang': 'es5'}); goog.addDependency('../../core/dropdowndiv.js', ['Blockly.DropDownDiv'], ['Blockly.utils.dom', 'Blockly.utils.math', 'Blockly.utils.style'], {}); -goog.addDependency('../../core/events.js', ['Blockly.Events'], ['Blockly.utils'], {}); +goog.addDependency('../../core/events.js', ['Blockly.Events'], ['Blockly.registry', 'Blockly.utils'], {}); goog.addDependency('../../core/events_abstract.js', ['Blockly.Events.Abstract'], ['Blockly.Events'], {}); goog.addDependency('../../core/extensions.js', ['Blockly.Extensions'], ['Blockly.utils'], {}); -goog.addDependency('../../core/field.js', ['Blockly.Field'], ['Blockly.Events', 'Blockly.Events.BlockChange', 'Blockly.Gesture', 'Blockly.utils', 'Blockly.utils.Rect', 'Blockly.utils.Size', 'Blockly.utils.dom', 'Blockly.utils.style', 'Blockly.utils.userAgent'], {'lang': 'es5'}); -goog.addDependency('../../core/field_angle.js', ['Blockly.FieldAngle'], ['Blockly.Css', 'Blockly.DropDownDiv', 'Blockly.FieldTextInput', 'Blockly.fieldRegistry', 'Blockly.utils.dom', 'Blockly.utils.math', 'Blockly.utils.object', 'Blockly.utils.userAgent'], {}); +goog.addDependency('../../core/field.js', ['Blockly.Field'], ['Blockly.Events', 'Blockly.Events.BlockChange', 'Blockly.Gesture', 'Blockly.Tooltip', 'Blockly.utils', 'Blockly.utils.Rect', 'Blockly.utils.Size', 'Blockly.utils.Svg', 'Blockly.utils.deprecation', 'Blockly.utils.dom', 'Blockly.utils.style', 'Blockly.utils.userAgent'], {'lang': 'es5'}); +goog.addDependency('../../core/field_angle.js', ['Blockly.FieldAngle'], ['Blockly.Css', 'Blockly.DropDownDiv', 'Blockly.FieldTextInput', 'Blockly.fieldRegistry', 'Blockly.utils.Svg', 'Blockly.utils.dom', 'Blockly.utils.math', 'Blockly.utils.object', 'Blockly.utils.userAgent'], {}); goog.addDependency('../../core/field_checkbox.js', ['Blockly.FieldCheckbox'], ['Blockly.Events', 'Blockly.Events.BlockChange', 'Blockly.Field', 'Blockly.fieldRegistry', 'Blockly.utils.Size', 'Blockly.utils.dom', 'Blockly.utils.object'], {}); goog.addDependency('../../core/field_colour.js', ['Blockly.FieldColour'], ['Blockly.Css', 'Blockly.DropDownDiv', 'Blockly.Events', 'Blockly.Events.BlockChange', 'Blockly.Field', 'Blockly.fieldRegistry', 'Blockly.navigation', 'Blockly.utils.IdGenerator', 'Blockly.utils.KeyCodes', 'Blockly.utils.Size', 'Blockly.utils.aria', 'Blockly.utils.colour', 'Blockly.utils.dom', 'Blockly.utils.object'], {}); -goog.addDependency('../../core/field_dropdown.js', ['Blockly.FieldDropdown'], ['Blockly.Events', 'Blockly.Events.BlockChange', 'Blockly.Field', 'Blockly.Menu', 'Blockly.MenuItem', 'Blockly.fieldRegistry', 'Blockly.navigation', 'Blockly.utils', 'Blockly.utils.Coordinate', 'Blockly.utils.Size', 'Blockly.utils.aria', 'Blockly.utils.dom', 'Blockly.utils.object', 'Blockly.utils.string', 'Blockly.utils.userAgent'], {}); -goog.addDependency('../../core/field_image.js', ['Blockly.FieldImage'], ['Blockly.Field', 'Blockly.fieldRegistry', 'Blockly.utils', 'Blockly.utils.Size', 'Blockly.utils.dom', 'Blockly.utils.object'], {}); +goog.addDependency('../../core/field_dropdown.js', ['Blockly.FieldDropdown'], ['Blockly.Events', 'Blockly.Events.BlockChange', 'Blockly.Field', 'Blockly.Menu', 'Blockly.MenuItem', 'Blockly.fieldRegistry', 'Blockly.navigation', 'Blockly.utils', 'Blockly.utils.Coordinate', 'Blockly.utils.Size', 'Blockly.utils.Svg', 'Blockly.utils.aria', 'Blockly.utils.dom', 'Blockly.utils.object', 'Blockly.utils.string', 'Blockly.utils.userAgent'], {}); +goog.addDependency('../../core/field_image.js', ['Blockly.FieldImage'], ['Blockly.Field', 'Blockly.fieldRegistry', 'Blockly.utils', 'Blockly.utils.Size', 'Blockly.utils.Svg', 'Blockly.utils.dom', 'Blockly.utils.object'], {}); goog.addDependency('../../core/field_label.js', ['Blockly.FieldLabel'], ['Blockly.Field', 'Blockly.fieldRegistry', 'Blockly.utils', 'Blockly.utils.Size', 'Blockly.utils.dom', 'Blockly.utils.object'], {}); goog.addDependency('../../core/field_label_serializable.js', ['Blockly.FieldLabelSerializable'], ['Blockly.FieldLabel', 'Blockly.fieldRegistry', 'Blockly.utils', 'Blockly.utils.object'], {}); -goog.addDependency('../../core/field_multilineinput.js', ['Blockly.FieldMultilineInput'], ['Blockly.Css', 'Blockly.DropDownDiv', 'Blockly.FieldTextInput', 'Blockly.utils', 'Blockly.utils.Coordinate', 'Blockly.utils.KeyCodes', 'Blockly.utils.aria', 'Blockly.utils.dom', 'Blockly.utils.object', 'Blockly.utils.userAgent'], {'lang': 'es5'}); +goog.addDependency('../../core/field_multilineinput.js', ['Blockly.FieldMultilineInput'], ['Blockly.Css', 'Blockly.DropDownDiv', 'Blockly.FieldTextInput', 'Blockly.utils', 'Blockly.utils.Coordinate', 'Blockly.utils.KeyCodes', 'Blockly.utils.Svg', 'Blockly.utils.aria', 'Blockly.utils.dom', 'Blockly.utils.object', 'Blockly.utils.userAgent'], {'lang': 'es5'}); goog.addDependency('../../core/field_number.js', ['Blockly.FieldNumber'], ['Blockly.FieldTextInput', 'Blockly.fieldRegistry', 'Blockly.utils.aria', 'Blockly.utils.object'], {}); goog.addDependency('../../core/field_registry.js', ['Blockly.fieldRegistry'], ['Blockly.registry'], {}); goog.addDependency('../../core/field_textinput.js', ['Blockly.FieldTextInput'], ['Blockly.Events', 'Blockly.Events.BlockChange', 'Blockly.Field', 'Blockly.Msg', 'Blockly.fieldRegistry', 'Blockly.utils', 'Blockly.utils.Coordinate', 'Blockly.utils.KeyCodes', 'Blockly.utils.Size', 'Blockly.utils.aria', 'Blockly.utils.dom', 'Blockly.utils.object', 'Blockly.utils.userAgent'], {}); goog.addDependency('../../core/field_variable.js', ['Blockly.FieldVariable'], ['Blockly.Events', 'Blockly.Events.BlockChange', 'Blockly.FieldDropdown', 'Blockly.Msg', 'Blockly.VariableModel', 'Blockly.Variables', 'Blockly.Xml', 'Blockly.fieldRegistry', 'Blockly.utils', 'Blockly.utils.Size', 'Blockly.utils.object'], {}); -goog.addDependency('../../core/flyout_base.js', ['Blockly.Flyout'], ['Blockly.Block', 'Blockly.Events', 'Blockly.Events.BlockCreate', 'Blockly.Events.VarCreate', 'Blockly.FlyoutCursor', 'Blockly.Gesture', 'Blockly.Marker', 'Blockly.Scrollbar', 'Blockly.Tooltip', 'Blockly.Touch', 'Blockly.WorkspaceSvg', 'Blockly.Xml', 'Blockly.blockRendering', 'Blockly.utils', 'Blockly.utils.Coordinate', 'Blockly.utils.dom'], {}); -goog.addDependency('../../core/flyout_button.js', ['Blockly.FlyoutButton'], ['Blockly.Css', 'Blockly.utils', 'Blockly.utils.Coordinate', 'Blockly.utils.dom'], {'lang': 'es5'}); +goog.addDependency('../../core/flyout_base.js', ['Blockly.Flyout'], ['Blockly.Block', 'Blockly.Events', 'Blockly.Events.BlockCreate', 'Blockly.Events.VarCreate', 'Blockly.FlyoutCursor', 'Blockly.Gesture', 'Blockly.Marker', 'Blockly.Scrollbar', 'Blockly.Tooltip', 'Blockly.Touch', 'Blockly.WorkspaceSvg', 'Blockly.Xml', 'Blockly.blockRendering', 'Blockly.utils', 'Blockly.utils.Coordinate', 'Blockly.utils.Svg', 'Blockly.utils.dom', 'Blockly.utils.toolbox'], {}); +goog.addDependency('../../core/flyout_button.js', ['Blockly.FlyoutButton'], ['Blockly.Css', 'Blockly.utils', 'Blockly.utils.Coordinate', 'Blockly.utils.Svg', 'Blockly.utils.dom'], {'lang': 'es5'}); goog.addDependency('../../core/flyout_dragger.js', ['Blockly.FlyoutDragger'], ['Blockly.WorkspaceDragger', 'Blockly.utils.object'], {}); -goog.addDependency('../../core/flyout_horizontal.js', ['Blockly.HorizontalFlyout'], ['Blockly.Block', 'Blockly.Flyout', 'Blockly.Scrollbar', 'Blockly.WidgetDiv', 'Blockly.utils', 'Blockly.utils.Rect', 'Blockly.utils.object'], {}); -goog.addDependency('../../core/flyout_vertical.js', ['Blockly.VerticalFlyout'], ['Blockly.Block', 'Blockly.Flyout', 'Blockly.Scrollbar', 'Blockly.WidgetDiv', 'Blockly.utils', 'Blockly.utils.Rect', 'Blockly.utils.object', 'Blockly.utils.userAgent'], {}); +goog.addDependency('../../core/flyout_horizontal.js', ['Blockly.HorizontalFlyout'], ['Blockly.Block', 'Blockly.Flyout', 'Blockly.Scrollbar', 'Blockly.WidgetDiv', 'Blockly.registry', 'Blockly.utils', 'Blockly.utils.Rect', 'Blockly.utils.object'], {}); +goog.addDependency('../../core/flyout_vertical.js', ['Blockly.VerticalFlyout'], ['Blockly.Block', 'Blockly.Flyout', 'Blockly.Scrollbar', 'Blockly.WidgetDiv', 'Blockly.registry', 'Blockly.utils', 'Blockly.utils.Rect', 'Blockly.utils.object', 'Blockly.utils.userAgent'], {}); goog.addDependency('../../core/generator.js', ['Blockly.Generator'], ['Blockly.Block'], {}); goog.addDependency('../../core/gesture.js', ['Blockly.Gesture'], ['Blockly.ASTNode', 'Blockly.BlockDragger', 'Blockly.BubbleDragger', 'Blockly.Events', 'Blockly.Events.Ui', 'Blockly.FlyoutDragger', 'Blockly.Tooltip', 'Blockly.Touch', 'Blockly.WorkspaceDragger', 'Blockly.blockAnimations', 'Blockly.constants', 'Blockly.navigation', 'Blockly.utils', 'Blockly.utils.Coordinate'], {}); -goog.addDependency('../../core/grid.js', ['Blockly.Grid'], ['Blockly.utils.dom', 'Blockly.utils.userAgent'], {}); -goog.addDependency('../../core/icon.js', ['Blockly.Icon'], ['Blockly.utils', 'Blockly.utils.Coordinate', 'Blockly.utils.Size', 'Blockly.utils.dom'], {}); -goog.addDependency('../../core/inject.js', ['Blockly.inject'], ['Blockly.BlockDragSurfaceSvg', 'Blockly.Component', 'Blockly.Css', 'Blockly.DropDownDiv', 'Blockly.Events', 'Blockly.Grid', 'Blockly.Msg', 'Blockly.Options', 'Blockly.ScrollbarPair', 'Blockly.Tooltip', 'Blockly.WorkspaceDragSurfaceSvg', 'Blockly.WorkspaceSvg', 'Blockly.user.keyMap', 'Blockly.utils', 'Blockly.utils.dom', 'Blockly.utils.userAgent'], {}); +goog.addDependency('../../core/grid.js', ['Blockly.Grid'], ['Blockly.utils.Svg', 'Blockly.utils.dom', 'Blockly.utils.userAgent'], {}); +goog.addDependency('../../core/icon.js', ['Blockly.Icon'], ['Blockly.utils', 'Blockly.utils.Coordinate', 'Blockly.utils.Size', 'Blockly.utils.Svg', 'Blockly.utils.dom'], {}); +goog.addDependency('../../core/inject.js', ['Blockly.inject'], ['Blockly.BlockDragSurfaceSvg', 'Blockly.Component', 'Blockly.Css', 'Blockly.DropDownDiv', 'Blockly.Events', 'Blockly.Grid', 'Blockly.Msg', 'Blockly.Options', 'Blockly.ScrollbarPair', 'Blockly.Tooltip', 'Blockly.WorkspaceDragSurfaceSvg', 'Blockly.WorkspaceSvg', 'Blockly.user.keyMap', 'Blockly.utils', 'Blockly.utils.Svg', 'Blockly.utils.dom', 'Blockly.utils.userAgent'], {}); goog.addDependency('../../core/input.js', ['Blockly.Input'], ['Blockly.Connection', 'Blockly.FieldLabel'], {}); goog.addDependency('../../core/insertion_marker_manager.js', ['Blockly.InsertionMarkerManager'], ['Blockly.Events', 'Blockly.blockAnimations'], {'lang': 'es5'}); goog.addDependency('../../core/interfaces/i_accessibility.js', ['Blockly.IASTNodeLocation', 'Blockly.IASTNodeLocationSvg', 'Blockly.IASTNodeLocationWithBlock', 'Blockly.IBlocklyActionable'], [], {}); goog.addDependency('../../core/interfaces/i_bounded_element.js', ['Blockly.IBoundedElement'], [], {}); +goog.addDependency('../../core/interfaces/i_bubble.js', ['Blockly.IBubble'], [], {}); +goog.addDependency('../../core/interfaces/i_connection_checker.js', ['Blockly.IConnectionChecker'], [], {}); +goog.addDependency('../../core/interfaces/i_contextmenu.js', ['Blockly.IContextMenu'], [], {}); goog.addDependency('../../core/interfaces/i_copyable.js', ['Blockly.ICopyable'], [], {}); goog.addDependency('../../core/interfaces/i_deletable.js', ['Blockly.IDeletable'], [], {}); goog.addDependency('../../core/interfaces/i_deletearea.js', ['Blockly.IDeleteArea'], [], {}); +goog.addDependency('../../core/interfaces/i_flyout.js', ['Blockly.IFlyout'], [], {}); goog.addDependency('../../core/interfaces/i_movable.js', ['Blockly.IMovable'], [], {}); goog.addDependency('../../core/interfaces/i_registrable.js', ['Blockly.IRegistrable'], [], {}); +goog.addDependency('../../core/interfaces/i_registrable_field.js', ['Blockly.IRegistrableField'], [], {}); goog.addDependency('../../core/interfaces/i_selectable.js', ['Blockly.ISelectable'], [], {}); goog.addDependency('../../core/interfaces/i_styleable.js', ['Blockly.IStyleable'], [], {}); goog.addDependency('../../core/interfaces/i_toolbox.js', ['Blockly.IToolbox'], [], {}); +goog.addDependency('../../core/interfaces/i_toolbox_item.js', ['Blockly.ICollapsibleToolboxItem', 'Blockly.ISelectableToolboxItem', 'Blockly.IToolboxItem'], [], {}); goog.addDependency('../../core/keyboard_nav/action.js', ['Blockly.Action'], [], {}); goog.addDependency('../../core/keyboard_nav/ast_node.js', ['Blockly.ASTNode'], ['Blockly.utils.Coordinate'], {'lang': 'es5'}); goog.addDependency('../../core/keyboard_nav/basic_cursor.js', ['Blockly.BasicCursor'], ['Blockly.ASTNode', 'Blockly.Cursor'], {'lang': 'es5'}); @@ -93,20 +99,20 @@ goog.addDependency('../../core/marker_manager.js', ['Blockly.MarkerManager'], [' goog.addDependency('../../core/menu.js', ['Blockly.Menu'], ['Blockly.utils.Coordinate', 'Blockly.utils.KeyCodes', 'Blockly.utils.aria', 'Blockly.utils.dom', 'Blockly.utils.style'], {}); goog.addDependency('../../core/menuitem.js', ['Blockly.MenuItem'], ['Blockly.utils.IdGenerator', 'Blockly.utils.aria', 'Blockly.utils.dom'], {}); goog.addDependency('../../core/msg.js', ['Blockly.Msg'], ['Blockly.utils.global'], {}); -goog.addDependency('../../core/mutator.js', ['Blockly.Mutator'], ['Blockly.Bubble', 'Blockly.Events', 'Blockly.Events.BlockChange', 'Blockly.Events.Ui', 'Blockly.Icon', 'Blockly.WorkspaceSvg', 'Blockly.Xml', 'Blockly.navigation', 'Blockly.utils', 'Blockly.utils.dom', 'Blockly.utils.global', 'Blockly.utils.object', 'Blockly.utils.xml'], {}); +goog.addDependency('../../core/mutator.js', ['Blockly.Mutator'], ['Blockly.Bubble', 'Blockly.Events', 'Blockly.Events.BlockChange', 'Blockly.Events.Ui', 'Blockly.Icon', 'Blockly.WorkspaceSvg', 'Blockly.Xml', 'Blockly.navigation', 'Blockly.utils', 'Blockly.utils.Svg', 'Blockly.utils.dom', 'Blockly.utils.global', 'Blockly.utils.object', 'Blockly.utils.toolbox', 'Blockly.utils.xml'], {}); goog.addDependency('../../core/names.js', ['Blockly.Names'], ['Blockly.Msg'], {}); goog.addDependency('../../core/options.js', ['Blockly.Options'], ['Blockly.Theme', 'Blockly.Themes.Classic', 'Blockly.Xml', 'Blockly.registry', 'Blockly.user.keyMap', 'Blockly.utils.IdGenerator', 'Blockly.utils.Metrics', 'Blockly.utils.toolbox', 'Blockly.utils.userAgent'], {}); goog.addDependency('../../core/procedures.js', ['Blockly.Procedures'], ['Blockly.Blocks', 'Blockly.Events', 'Blockly.Events.BlockChange', 'Blockly.Field', 'Blockly.Msg', 'Blockly.Names', 'Blockly.Workspace', 'Blockly.Xml', 'Blockly.constants', 'Blockly.utils.xml'], {}); goog.addDependency('../../core/registry.js', ['Blockly.registry'], [], {}); -goog.addDependency('../../core/rendered_connection.js', ['Blockly.RenderedConnection'], ['Blockly.Connection', 'Blockly.Events', 'Blockly.utils', 'Blockly.utils.Coordinate', 'Blockly.utils.dom', 'Blockly.utils.object'], {}); +goog.addDependency('../../core/rendered_connection.js', ['Blockly.RenderedConnection'], ['Blockly.Connection', 'Blockly.Events', 'Blockly.utils', 'Blockly.utils.Coordinate', 'Blockly.utils.Svg', 'Blockly.utils.deprecation', 'Blockly.utils.dom', 'Blockly.utils.object'], {}); goog.addDependency('../../core/renderers/common/block_rendering.js', ['Blockly.blockRendering'], ['Blockly.registry', 'Blockly.utils.object'], {}); -goog.addDependency('../../core/renderers/common/constants.js', ['Blockly.blockRendering.ConstantProvider'], ['Blockly.utils', 'Blockly.utils.colour', 'Blockly.utils.dom', 'Blockly.utils.svgPaths', 'Blockly.utils.userAgent'], {'lang': 'es5'}); -goog.addDependency('../../core/renderers/common/debugger.js', ['Blockly.blockRendering.Debug'], ['Blockly.blockRendering.BottomRow', 'Blockly.blockRendering.InputRow', 'Blockly.blockRendering.Measurable', 'Blockly.blockRendering.RenderInfo', 'Blockly.blockRendering.Row', 'Blockly.blockRendering.SpacerRow', 'Blockly.blockRendering.TopRow', 'Blockly.blockRendering.Types'], {'lang': 'es5'}); +goog.addDependency('../../core/renderers/common/constants.js', ['Blockly.blockRendering.ConstantProvider'], ['Blockly.utils', 'Blockly.utils.Svg', 'Blockly.utils.colour', 'Blockly.utils.dom', 'Blockly.utils.svgPaths', 'Blockly.utils.userAgent'], {'lang': 'es5'}); +goog.addDependency('../../core/renderers/common/debugger.js', ['Blockly.blockRendering.Debug'], ['Blockly.blockRendering.BottomRow', 'Blockly.blockRendering.InputRow', 'Blockly.blockRendering.Measurable', 'Blockly.blockRendering.RenderInfo', 'Blockly.blockRendering.Row', 'Blockly.blockRendering.SpacerRow', 'Blockly.blockRendering.TopRow', 'Blockly.blockRendering.Types', 'Blockly.utils.Svg', 'Blockly.utils.dom'], {'lang': 'es5'}); goog.addDependency('../../core/renderers/common/drawer.js', ['Blockly.blockRendering.Drawer'], ['Blockly.blockRendering.BottomRow', 'Blockly.blockRendering.InputRow', 'Blockly.blockRendering.Measurable', 'Blockly.blockRendering.RenderInfo', 'Blockly.blockRendering.Row', 'Blockly.blockRendering.SpacerRow', 'Blockly.blockRendering.TopRow', 'Blockly.blockRendering.Types', 'Blockly.utils.svgPaths'], {}); goog.addDependency('../../core/renderers/common/i_path_object.js', ['Blockly.blockRendering.IPathObject'], [], {}); goog.addDependency('../../core/renderers/common/info.js', ['Blockly.blockRendering.RenderInfo'], ['Blockly.blockRendering.BottomRow', 'Blockly.blockRendering.ExternalValueInput', 'Blockly.blockRendering.Hat', 'Blockly.blockRendering.InRowSpacer', 'Blockly.blockRendering.InlineInput', 'Blockly.blockRendering.InputRow', 'Blockly.blockRendering.Measurable', 'Blockly.blockRendering.NextConnection', 'Blockly.blockRendering.OutputConnection', 'Blockly.blockRendering.PreviousConnection', 'Blockly.blockRendering.RoundCorner', 'Blockly.blockRendering.Row', 'Blockly.blockRendering.SpacerRow', 'Blockly.blockRendering.SquareCorner', 'Blockly.blockRendering.StatementInput', 'Blockly.blockRendering.TopRow', 'Blockly.blockRendering.Types'], {}); -goog.addDependency('../../core/renderers/common/marker_svg.js', ['Blockly.blockRendering.MarkerSvg'], ['Blockly.ASTNode'], {}); -goog.addDependency('../../core/renderers/common/path_object.js', ['Blockly.blockRendering.PathObject'], ['Blockly.Theme', 'Blockly.blockRendering.ConstantProvider', 'Blockly.blockRendering.IPathObject', 'Blockly.utils.dom'], {}); +goog.addDependency('../../core/renderers/common/marker_svg.js', ['Blockly.blockRendering.MarkerSvg'], ['Blockly.ASTNode', 'Blockly.utils.Svg', 'Blockly.utils.dom'], {}); +goog.addDependency('../../core/renderers/common/path_object.js', ['Blockly.blockRendering.PathObject'], ['Blockly.Theme', 'Blockly.blockRendering.ConstantProvider', 'Blockly.blockRendering.IPathObject', 'Blockly.utils.Svg', 'Blockly.utils.dom'], {}); goog.addDependency('../../core/renderers/common/renderer.js', ['Blockly.blockRendering.Renderer'], ['Blockly.InsertionMarkerManager', 'Blockly.blockRendering.ConstantProvider', 'Blockly.blockRendering.Drawer', 'Blockly.blockRendering.IPathObject', 'Blockly.blockRendering.MarkerSvg', 'Blockly.blockRendering.PathObject', 'Blockly.blockRendering.RenderInfo'], {}); goog.addDependency('../../core/renderers/geras/constants.js', ['Blockly.geras.ConstantProvider'], ['Blockly.blockRendering.ConstantProvider', 'Blockly.utils.object'], {'lang': 'es5'}); goog.addDependency('../../core/renderers/geras/drawer.js', ['Blockly.geras.Drawer'], ['Blockly.blockRendering.ConstantProvider', 'Blockly.blockRendering.Drawer', 'Blockly.geras.Highlighter', 'Blockly.geras.RenderInfo', 'Blockly.utils.object', 'Blockly.utils.svgPaths'], {}); @@ -114,7 +120,7 @@ goog.addDependency('../../core/renderers/geras/highlight_constants.js', ['Blockl goog.addDependency('../../core/renderers/geras/highlighter.js', ['Blockly.geras.Highlighter'], ['Blockly.blockRendering.BottomRow', 'Blockly.blockRendering.InputRow', 'Blockly.blockRendering.Measurable', 'Blockly.blockRendering.RenderInfo', 'Blockly.blockRendering.Row', 'Blockly.blockRendering.SpacerRow', 'Blockly.blockRendering.TopRow', 'Blockly.blockRendering.Types', 'Blockly.utils.svgPaths'], {}); goog.addDependency('../../core/renderers/geras/info.js', ['Blockly.geras', 'Blockly.geras.RenderInfo'], ['Blockly.blockRendering.BottomRow', 'Blockly.blockRendering.BottomRow', 'Blockly.blockRendering.ExternalValueInput', 'Blockly.blockRendering.InputRow', 'Blockly.blockRendering.InputRow', 'Blockly.blockRendering.Measurable', 'Blockly.blockRendering.Measurable', 'Blockly.blockRendering.NextConnection', 'Blockly.blockRendering.NextConnection', 'Blockly.blockRendering.OutputConnection', 'Blockly.blockRendering.OutputConnection', 'Blockly.blockRendering.PreviousConnection', 'Blockly.blockRendering.PreviousConnection', 'Blockly.blockRendering.RenderInfo', 'Blockly.blockRendering.Types', 'Blockly.geras.InlineInput', 'Blockly.geras.StatementInput', 'Blockly.utils.object'], {}); goog.addDependency('../../core/renderers/geras/measurables/inputs.js', ['Blockly.geras.InlineInput', 'Blockly.geras.StatementInput'], ['Blockly.utils.object'], {}); -goog.addDependency('../../core/renderers/geras/path_object.js', ['Blockly.geras.PathObject'], ['Blockly.Theme', 'Blockly.blockRendering.PathObject', 'Blockly.geras.ConstantProvider', 'Blockly.utils.dom', 'Blockly.utils.object'], {}); +goog.addDependency('../../core/renderers/geras/path_object.js', ['Blockly.geras.PathObject'], ['Blockly.Theme', 'Blockly.blockRendering.PathObject', 'Blockly.geras.ConstantProvider', 'Blockly.utils.Svg', 'Blockly.utils.dom', 'Blockly.utils.object'], {}); goog.addDependency('../../core/renderers/geras/renderer.js', ['Blockly.geras.Renderer'], ['Blockly.blockRendering', 'Blockly.blockRendering.Renderer', 'Blockly.geras.ConstantProvider', 'Blockly.geras.Drawer', 'Blockly.geras.HighlightConstantProvider', 'Blockly.geras.PathObject', 'Blockly.geras.RenderInfo', 'Blockly.utils.object'], {}); goog.addDependency('../../core/renderers/measurables/base.js', ['Blockly.blockRendering.Measurable'], ['Blockly.blockRendering.Types'], {}); goog.addDependency('../../core/renderers/measurables/connections.js', ['Blockly.blockRendering.Connection', 'Blockly.blockRendering.NextConnection', 'Blockly.blockRendering.OutputConnection', 'Blockly.blockRendering.PreviousConnection'], ['Blockly.blockRendering.Measurable', 'Blockly.blockRendering.Types', 'Blockly.utils.object'], {}); @@ -128,17 +134,17 @@ goog.addDependency('../../core/renderers/minimalist/info.js', ['Blockly.minimali goog.addDependency('../../core/renderers/minimalist/renderer.js', ['Blockly.minimalist.Renderer'], ['Blockly.blockRendering', 'Blockly.blockRendering.Renderer', 'Blockly.minimalist.ConstantProvider', 'Blockly.minimalist.Drawer', 'Blockly.minimalist.RenderInfo', 'Blockly.utils.object'], {}); goog.addDependency('../../core/renderers/thrasos/info.js', ['Blockly.thrasos', 'Blockly.thrasos.RenderInfo'], ['Blockly.blockRendering.BottomRow', 'Blockly.blockRendering.ExternalValueInput', 'Blockly.blockRendering.InlineInput', 'Blockly.blockRendering.InputRow', 'Blockly.blockRendering.Measurable', 'Blockly.blockRendering.NextConnection', 'Blockly.blockRendering.OutputConnection', 'Blockly.blockRendering.PreviousConnection', 'Blockly.blockRendering.RenderInfo', 'Blockly.blockRendering.Row', 'Blockly.blockRendering.SpacerRow', 'Blockly.blockRendering.StatementInput', 'Blockly.blockRendering.TopRow', 'Blockly.blockRendering.Types', 'Blockly.utils.object'], {}); goog.addDependency('../../core/renderers/thrasos/renderer.js', ['Blockly.thrasos.Renderer'], ['Blockly.blockRendering', 'Blockly.blockRendering.Renderer', 'Blockly.thrasos.RenderInfo', 'Blockly.utils.object'], {}); -goog.addDependency('../../core/renderers/zelos/constants.js', ['Blockly.zelos.ConstantProvider'], ['Blockly.blockRendering.ConstantProvider', 'Blockly.utils.dom', 'Blockly.utils.object', 'Blockly.utils.svgPaths'], {'lang': 'es5'}); +goog.addDependency('../../core/renderers/zelos/constants.js', ['Blockly.zelos.ConstantProvider'], ['Blockly.blockRendering.ConstantProvider', 'Blockly.utils.Svg', 'Blockly.utils.dom', 'Blockly.utils.object', 'Blockly.utils.svgPaths'], {'lang': 'es5'}); goog.addDependency('../../core/renderers/zelos/drawer.js', ['Blockly.zelos.Drawer'], ['Blockly.blockRendering.ConstantProvider', 'Blockly.blockRendering.Drawer', 'Blockly.blockRendering.Types', 'Blockly.utils.object', 'Blockly.zelos.RenderInfo'], {}); goog.addDependency('../../core/renderers/zelos/info.js', ['Blockly.zelos', 'Blockly.zelos.RenderInfo'], ['Blockly.blockRendering.BottomRow', 'Blockly.blockRendering.ExternalValueInput', 'Blockly.blockRendering.InlineInput', 'Blockly.blockRendering.InputRow', 'Blockly.blockRendering.Measurable', 'Blockly.blockRendering.NextConnection', 'Blockly.blockRendering.OutputConnection', 'Blockly.blockRendering.PreviousConnection', 'Blockly.blockRendering.RenderInfo', 'Blockly.blockRendering.RoundCorner', 'Blockly.blockRendering.Row', 'Blockly.blockRendering.SpacerRow', 'Blockly.blockRendering.SquareCorner', 'Blockly.blockRendering.TopRow', 'Blockly.blockRendering.Types', 'Blockly.utils.object', 'Blockly.zelos.BottomRow', 'Blockly.zelos.RightConnectionShape', 'Blockly.zelos.StatementInput', 'Blockly.zelos.TopRow'], {}); -goog.addDependency('../../core/renderers/zelos/marker_svg.js', ['Blockly.zelos.MarkerSvg'], ['Blockly.blockRendering.MarkerSvg'], {}); +goog.addDependency('../../core/renderers/zelos/marker_svg.js', ['Blockly.zelos.MarkerSvg'], ['Blockly.blockRendering.MarkerSvg', 'Blockly.utils.Svg', 'Blockly.utils.dom'], {}); goog.addDependency('../../core/renderers/zelos/measurables/inputs.js', ['Blockly.zelos.StatementInput'], ['Blockly.blockRendering.StatementInput', 'Blockly.utils.object'], {}); goog.addDependency('../../core/renderers/zelos/measurables/row_elements.js', ['Blockly.zelos.RightConnectionShape'], ['Blockly.blockRendering.Measurable', 'Blockly.blockRendering.Types', 'Blockly.utils.object'], {}); goog.addDependency('../../core/renderers/zelos/measurables/rows.js', ['Blockly.zelos.BottomRow', 'Blockly.zelos.TopRow'], ['Blockly.blockRendering.BottomRow', 'Blockly.blockRendering.SpacerRow', 'Blockly.blockRendering.TopRow', 'Blockly.utils.object'], {}); -goog.addDependency('../../core/renderers/zelos/path_object.js', ['Blockly.zelos.PathObject'], ['Blockly.blockRendering.PathObject', 'Blockly.utils.dom', 'Blockly.utils.object', 'Blockly.zelos.ConstantProvider'], {}); +goog.addDependency('../../core/renderers/zelos/path_object.js', ['Blockly.zelos.PathObject'], ['Blockly.blockRendering.PathObject', 'Blockly.utils.Svg', 'Blockly.utils.dom', 'Blockly.utils.object', 'Blockly.zelos.ConstantProvider'], {}); goog.addDependency('../../core/renderers/zelos/renderer.js', ['Blockly.zelos.Renderer'], ['Blockly.InsertionMarkerManager', 'Blockly.blockRendering', 'Blockly.blockRendering.Renderer', 'Blockly.utils.object', 'Blockly.zelos.ConstantProvider', 'Blockly.zelos.Drawer', 'Blockly.zelos.MarkerSvg', 'Blockly.zelos.PathObject', 'Blockly.zelos.RenderInfo'], {}); goog.addDependency('../../core/requires.js', ['Blockly.requires'], ['Blockly', 'Blockly.Comment', 'Blockly.FieldAngle', 'Blockly.FieldCheckbox', 'Blockly.FieldColour', 'Blockly.FieldDropdown', 'Blockly.FieldImage', 'Blockly.FieldLabelSerializable', 'Blockly.FieldMultilineInput', 'Blockly.FieldNumber', 'Blockly.FieldTextInput', 'Blockly.FieldVariable', 'Blockly.FlyoutButton', 'Blockly.Generator', 'Blockly.HorizontalFlyout', 'Blockly.Mutator', 'Blockly.Themes.Classic', 'Blockly.Themes.Dark', 'Blockly.Themes.Deuteranopia', 'Blockly.Themes.HighContrast', 'Blockly.Themes.Tritanopia', 'Blockly.Toolbox', 'Blockly.Trashcan', 'Blockly.VariablesDynamic', 'Blockly.VerticalFlyout', 'Blockly.Warning', 'Blockly.ZoomControls', 'Blockly.geras.Renderer', 'Blockly.thrasos.Renderer', 'Blockly.zelos.Renderer'], {}); -goog.addDependency('../../core/scrollbar.js', ['Blockly.Scrollbar', 'Blockly.ScrollbarPair'], ['Blockly.Touch', 'Blockly.utils', 'Blockly.utils.Coordinate', 'Blockly.utils.Metrics', 'Blockly.utils.dom'], {}); +goog.addDependency('../../core/scrollbar.js', ['Blockly.Scrollbar', 'Blockly.ScrollbarPair'], ['Blockly.Touch', 'Blockly.utils', 'Blockly.utils.Coordinate', 'Blockly.utils.Metrics', 'Blockly.utils.Svg', 'Blockly.utils.dom'], {}); goog.addDependency('../../core/theme.js', ['Blockly.Theme'], ['Blockly.registry', 'Blockly.utils', 'Blockly.utils.colour', 'Blockly.utils.object'], {}); goog.addDependency('../../core/theme/classic.js', ['Blockly.Themes.Classic'], ['Blockly.Theme'], {}); goog.addDependency('../../core/theme/dark.js', ['Blockly.Themes.Dark'], ['Blockly.Theme'], {}); @@ -148,17 +154,22 @@ goog.addDependency('../../core/theme/modern.js', ['Blockly.Themes.Modern'], ['Bl goog.addDependency('../../core/theme/tritanopia.js', ['Blockly.Themes.Tritanopia'], ['Blockly.Theme'], {}); goog.addDependency('../../core/theme/zelos.js', ['Blockly.Themes.Zelos'], ['Blockly.Theme'], {}); goog.addDependency('../../core/theme_manager.js', ['Blockly.ThemeManager'], ['Blockly.Theme'], {}); -goog.addDependency('../../core/toolbox.js', ['Blockly.Toolbox'], ['Blockly.Css', 'Blockly.Events', 'Blockly.Events.Ui', 'Blockly.Touch', 'Blockly.navigation', 'Blockly.registry', 'Blockly.tree.TreeControl', 'Blockly.tree.TreeNode', 'Blockly.utils', 'Blockly.utils.Rect', 'Blockly.utils.aria', 'Blockly.utils.colour', 'Blockly.utils.dom', 'Blockly.utils.object', 'Blockly.utils.toolbox'], {}); +goog.addDependency('../../core/toolbox/category.js', ['Blockly.ToolboxCategory'], ['Blockly.ToolboxItem', 'Blockly.registry', 'Blockly.utils', 'Blockly.utils.aria', 'Blockly.utils.dom', 'Blockly.utils.object', 'Blockly.utils.toolbox'], {'lang': 'es5'}); +goog.addDependency('../../core/toolbox/collapsible_category.js', ['Blockly.CollapsibleToolboxCategory'], ['Blockly.ToolboxCategory', 'Blockly.ToolboxItem', 'Blockly.ToolboxSeparator', 'Blockly.registry', 'Blockly.utils.aria', 'Blockly.utils.dom', 'Blockly.utils.object', 'Blockly.utils.toolbox'], {}); +goog.addDependency('../../core/toolbox/separator.js', ['Blockly.ToolboxSeparator'], ['Blockly.ToolboxItem', 'Blockly.registry', 'Blockly.utils.dom'], {'lang': 'es5'}); +goog.addDependency('../../core/toolbox/toolbox.js', ['Blockly.Toolbox'], ['Blockly.CollapsibleToolboxCategory', 'Blockly.Css', 'Blockly.Events', 'Blockly.Events.Ui', 'Blockly.Touch', 'Blockly.navigation', 'Blockly.registry', 'Blockly.utils', 'Blockly.utils.Rect', 'Blockly.utils.aria', 'Blockly.utils.dom', 'Blockly.utils.toolbox'], {'lang': 'es5'}); +goog.addDependency('../../core/toolbox/toolbox_item.js', ['Blockly.ToolboxItem'], [], {}); goog.addDependency('../../core/tooltip.js', ['Blockly.Tooltip'], ['Blockly.utils.string'], {}); goog.addDependency('../../core/touch.js', ['Blockly.Touch'], ['Blockly.utils', 'Blockly.utils.global', 'Blockly.utils.string'], {}); goog.addDependency('../../core/touch_gesture.js', ['Blockly.TouchGesture'], ['Blockly.Gesture', 'Blockly.utils', 'Blockly.utils.Coordinate', 'Blockly.utils.object'], {}); -goog.addDependency('../../core/trashcan.js', ['Blockly.Trashcan'], ['Blockly.Scrollbar', 'Blockly.Xml', 'Blockly.utils.Rect', 'Blockly.utils.dom'], {}); -goog.addDependency('../../core/ui_events.js', ['Blockly.Events.Ui'], ['Blockly.Events', 'Blockly.Events.Abstract', 'Blockly.utils.object'], {}); +goog.addDependency('../../core/trashcan.js', ['Blockly.Trashcan'], ['Blockly.Scrollbar', 'Blockly.Xml', 'Blockly.utils.Rect', 'Blockly.utils.Svg', 'Blockly.utils.dom', 'Blockly.utils.toolbox'], {}); +goog.addDependency('../../core/ui_events.js', ['Blockly.Events.Ui'], ['Blockly.Events', 'Blockly.Events.Abstract', 'Blockly.registry', 'Blockly.utils.object'], {}); goog.addDependency('../../core/utils.js', ['Blockly.utils'], ['Blockly.Msg', 'Blockly.constants', 'Blockly.utils.Coordinate', 'Blockly.utils.Rect', 'Blockly.utils.colour', 'Blockly.utils.global', 'Blockly.utils.string', 'Blockly.utils.style', 'Blockly.utils.userAgent'], {}); goog.addDependency('../../core/utils/aria.js', ['Blockly.utils.aria'], [], {}); goog.addDependency('../../core/utils/colour.js', ['Blockly.utils.colour'], [], {}); goog.addDependency('../../core/utils/coordinate.js', ['Blockly.utils.Coordinate'], [], {}); -goog.addDependency('../../core/utils/dom.js', ['Blockly.utils.dom'], ['Blockly.utils.userAgent'], {}); +goog.addDependency('../../core/utils/deprecation.js', ['Blockly.utils.deprecation'], [], {}); +goog.addDependency('../../core/utils/dom.js', ['Blockly.utils.dom'], ['Blockly.utils.Svg', 'Blockly.utils.userAgent'], {}); goog.addDependency('../../core/utils/global.js', ['Blockly.utils.global'], [], {}); goog.addDependency('../../core/utils/idgenerator.js', ['Blockly.utils.IdGenerator'], [], {}); goog.addDependency('../../core/utils/keycodes.js', ['Blockly.utils.KeyCodes'], [], {}); @@ -169,29 +180,30 @@ goog.addDependency('../../core/utils/rect.js', ['Blockly.utils.Rect'], [], {}); goog.addDependency('../../core/utils/size.js', ['Blockly.utils.Size'], [], {}); goog.addDependency('../../core/utils/string.js', ['Blockly.utils.string'], [], {}); goog.addDependency('../../core/utils/style.js', ['Blockly.utils.style'], ['Blockly.utils.Coordinate', 'Blockly.utils.Size'], {}); +goog.addDependency('../../core/utils/svg.js', ['Blockly.utils.Svg'], [], {}); goog.addDependency('../../core/utils/svg_paths.js', ['Blockly.utils.svgPaths'], [], {}); goog.addDependency('../../core/utils/toolbox.js', ['Blockly.utils.toolbox'], [], {}); goog.addDependency('../../core/utils/useragent.js', ['Blockly.utils.userAgent'], ['Blockly.utils.global'], {}); goog.addDependency('../../core/utils/xml.js', ['Blockly.utils.xml'], [], {}); -goog.addDependency('../../core/variable_events.js', ['Blockly.Events.VarBase', 'Blockly.Events.VarCreate', 'Blockly.Events.VarDelete', 'Blockly.Events.VarRename'], ['Blockly.Events', 'Blockly.Events.Abstract', 'Blockly.utils.object'], {}); +goog.addDependency('../../core/variable_events.js', ['Blockly.Events.VarBase', 'Blockly.Events.VarCreate', 'Blockly.Events.VarDelete', 'Blockly.Events.VarRename'], ['Blockly.Events', 'Blockly.Events.Abstract', 'Blockly.registry', 'Blockly.utils.object'], {}); goog.addDependency('../../core/variable_map.js', ['Blockly.VariableMap'], ['Blockly.Events', 'Blockly.Events.VarDelete', 'Blockly.Events.VarRename', 'Blockly.Msg', 'Blockly.utils', 'Blockly.utils.object'], {}); goog.addDependency('../../core/variable_model.js', ['Blockly.VariableModel'], ['Blockly.Events', 'Blockly.Events.VarCreate', 'Blockly.utils'], {}); goog.addDependency('../../core/variables.js', ['Blockly.Variables'], ['Blockly.Blocks', 'Blockly.Msg', 'Blockly.VariableModel', 'Blockly.Xml', 'Blockly.utils', 'Blockly.utils.xml'], {}); goog.addDependency('../../core/variables_dynamic.js', ['Blockly.VariablesDynamic'], ['Blockly.Blocks', 'Blockly.Msg', 'Blockly.VariableModel', 'Blockly.Variables', 'Blockly.utils.xml'], {}); -goog.addDependency('../../core/warning.js', ['Blockly.Warning'], ['Blockly.Bubble', 'Blockly.Events', 'Blockly.Events.Ui', 'Blockly.Icon', 'Blockly.utils.dom', 'Blockly.utils.object'], {}); +goog.addDependency('../../core/warning.js', ['Blockly.Warning'], ['Blockly.Bubble', 'Blockly.Events', 'Blockly.Events.Ui', 'Blockly.Icon', 'Blockly.utils.Svg', 'Blockly.utils.dom', 'Blockly.utils.object'], {}); goog.addDependency('../../core/widgetdiv.js', ['Blockly.WidgetDiv'], ['Blockly.utils.style'], {}); -goog.addDependency('../../core/workspace.js', ['Blockly.Workspace'], ['Blockly.Events', 'Blockly.Options', 'Blockly.VariableMap', 'Blockly.utils', 'Blockly.utils.math'], {}); +goog.addDependency('../../core/workspace.js', ['Blockly.Workspace'], ['Blockly.ConnectionChecker', 'Blockly.Events', 'Blockly.Options', 'Blockly.VariableMap', 'Blockly.utils', 'Blockly.utils.math'], {}); goog.addDependency('../../core/workspace_audio.js', ['Blockly.WorkspaceAudio'], ['Blockly.utils', 'Blockly.utils.global', 'Blockly.utils.userAgent'], {'lang': 'es5'}); goog.addDependency('../../core/workspace_comment.js', ['Blockly.WorkspaceComment'], ['Blockly.Events', 'Blockly.Events.CommentChange', 'Blockly.Events.CommentCreate', 'Blockly.Events.CommentDelete', 'Blockly.Events.CommentMove', 'Blockly.utils', 'Blockly.utils.Coordinate', 'Blockly.utils.xml'], {}); -goog.addDependency('../../core/workspace_comment_render_svg.js', ['Blockly.WorkspaceCommentSvg.render'], ['Blockly.utils', 'Blockly.utils.Coordinate', 'Blockly.utils.dom'], {}); -goog.addDependency('../../core/workspace_comment_svg.js', ['Blockly.WorkspaceCommentSvg'], ['Blockly.Css', 'Blockly.Events', 'Blockly.Events.CommentCreate', 'Blockly.Events.CommentDelete', 'Blockly.Events.CommentMove', 'Blockly.Events.Ui', 'Blockly.WorkspaceComment', 'Blockly.utils', 'Blockly.utils.Coordinate', 'Blockly.utils.Rect', 'Blockly.utils.dom', 'Blockly.utils.object'], {}); -goog.addDependency('../../core/workspace_drag_surface_svg.js', ['Blockly.WorkspaceDragSurfaceSvg'], ['Blockly.utils', 'Blockly.utils.dom'], {}); +goog.addDependency('../../core/workspace_comment_render_svg.js', ['Blockly.WorkspaceCommentSvg.render'], ['Blockly.utils', 'Blockly.utils.Coordinate', 'Blockly.utils.Svg', 'Blockly.utils.dom'], {}); +goog.addDependency('../../core/workspace_comment_svg.js', ['Blockly.WorkspaceCommentSvg'], ['Blockly.Css', 'Blockly.Events', 'Blockly.Events.CommentCreate', 'Blockly.Events.CommentDelete', 'Blockly.Events.CommentMove', 'Blockly.Events.Ui', 'Blockly.WorkspaceComment', 'Blockly.utils', 'Blockly.utils.Coordinate', 'Blockly.utils.Rect', 'Blockly.utils.Svg', 'Blockly.utils.dom', 'Blockly.utils.object'], {}); +goog.addDependency('../../core/workspace_drag_surface_svg.js', ['Blockly.WorkspaceDragSurfaceSvg'], ['Blockly.utils', 'Blockly.utils.Svg', 'Blockly.utils.dom'], {}); goog.addDependency('../../core/workspace_dragger.js', ['Blockly.WorkspaceDragger'], ['Blockly.utils.Coordinate'], {}); -goog.addDependency('../../core/workspace_events.js', ['Blockly.Events.FinishedLoading'], ['Blockly.Events', 'Blockly.Events.Ui', 'Blockly.utils.object'], {'lang': 'es5'}); -goog.addDependency('../../core/workspace_svg.js', ['Blockly.WorkspaceSvg'], ['Blockly.BlockSvg', 'Blockly.ConnectionDB', 'Blockly.Events', 'Blockly.Events.BlockCreate', 'Blockly.Gesture', 'Blockly.Grid', 'Blockly.MarkerManager', 'Blockly.Msg', 'Blockly.Options', 'Blockly.ThemeManager', 'Blockly.Themes.Classic', 'Blockly.TouchGesture', 'Blockly.Workspace', 'Blockly.WorkspaceAudio', 'Blockly.WorkspaceDragSurfaceSvg', 'Blockly.Xml', 'Blockly.blockRendering', 'Blockly.constants', 'Blockly.navigation', 'Blockly.registry', 'Blockly.utils', 'Blockly.utils.Coordinate', 'Blockly.utils.Metrics', 'Blockly.utils.Rect', 'Blockly.utils.dom', 'Blockly.utils.object', 'Blockly.utils.toolbox'], {}); -goog.addDependency('../../core/ws_comment_events.js', ['Blockly.Events.CommentBase', 'Blockly.Events.CommentChange', 'Blockly.Events.CommentCreate', 'Blockly.Events.CommentDelete', 'Blockly.Events.CommentMove'], ['Blockly.Events', 'Blockly.Events.Abstract', 'Blockly.utils.Coordinate', 'Blockly.utils.object', 'Blockly.utils.xml'], {}); +goog.addDependency('../../core/workspace_events.js', ['Blockly.Events.FinishedLoading'], ['Blockly.Events', 'Blockly.Events.Ui', 'Blockly.registry', 'Blockly.utils.object'], {'lang': 'es5'}); +goog.addDependency('../../core/workspace_svg.js', ['Blockly.WorkspaceSvg'], ['Blockly.BlockSvg', 'Blockly.ConnectionDB', 'Blockly.ContextMenuRegistry', 'Blockly.Events', 'Blockly.Events.BlockCreate', 'Blockly.Gesture', 'Blockly.Grid', 'Blockly.MarkerManager', 'Blockly.Msg', 'Blockly.Options', 'Blockly.ThemeManager', 'Blockly.Themes.Classic', 'Blockly.TouchGesture', 'Blockly.Workspace', 'Blockly.WorkspaceAudio', 'Blockly.WorkspaceDragSurfaceSvg', 'Blockly.Xml', 'Blockly.blockRendering', 'Blockly.constants', 'Blockly.navigation', 'Blockly.registry', 'Blockly.utils', 'Blockly.utils.Coordinate', 'Blockly.utils.Metrics', 'Blockly.utils.Rect', 'Blockly.utils.Svg', 'Blockly.utils.dom', 'Blockly.utils.object', 'Blockly.utils.toolbox'], {}); +goog.addDependency('../../core/ws_comment_events.js', ['Blockly.Events.CommentBase', 'Blockly.Events.CommentChange', 'Blockly.Events.CommentCreate', 'Blockly.Events.CommentDelete', 'Blockly.Events.CommentMove'], ['Blockly.Events', 'Blockly.Events.Abstract', 'Blockly.registry', 'Blockly.utils.Coordinate', 'Blockly.utils.object', 'Blockly.utils.xml'], {}); goog.addDependency('../../core/xml.js', ['Blockly.Xml'], ['Blockly.Events', 'Blockly.Events.BlockCreate', 'Blockly.Events.FinishedLoading', 'Blockly.Events.VarCreate', 'Blockly.utils', 'Blockly.utils.dom', 'Blockly.utils.global', 'Blockly.utils.xml'], {}); -goog.addDependency('../../core/zoom_controls.js', ['Blockly.ZoomControls'], ['Blockly.Css', 'Blockly.Scrollbar', 'Blockly.Touch', 'Blockly.utils.dom'], {'lang': 'es5'}); +goog.addDependency('../../core/zoom_controls.js', ['Blockly.ZoomControls'], ['Blockly.Css', 'Blockly.Scrollbar', 'Blockly.Touch', 'Blockly.utils.Svg', 'Blockly.utils.dom'], {'lang': 'es5'}); goog.addDependency("base.js", [], []); // Load Blockly. diff --git a/blocks/logic.js b/blocks/logic.js index f473c040b32..afec94d3fa6 100644 --- a/blocks/logic.js +++ b/blocks/logic.js @@ -543,7 +543,8 @@ Blockly.Constants.Logic.LOGIC_COMPARE_ONCHANGE_MIXIN = { var blockB = this.getInputTargetBlock('B'); // Disconnect blocks that existed prior to this change if they don't match. if (blockA && blockB && - !blockA.outputConnection.checkType(blockB.outputConnection)) { + !this.workspace.connectionChecker.doTypeChecks( + blockA.outputConnection, blockB.outputConnection)) { // Mismatch between two inputs. Revert the block connections, // bumping away the newly connected block(s). Blockly.Events.setGroup(e.group); @@ -610,7 +611,9 @@ Blockly.Constants.Logic.LOGIC_TERNARY_ONCHANGE_MIXIN = { if ((blockA || blockB) && parentConnection) { for (var i = 0; i < 2; i++) { var block = (i == 1) ? blockA : blockB; - if (block && !block.outputConnection.checkType(parentConnection)) { + if (block && + !block.workspace.connectionChecker.doTypeChecks( + block.outputConnection, parentConnection)) { // Ensure that any disconnections are grouped with the causing event. Blockly.Events.setGroup(e.group); if (parentConnection === this.prevParentConnection_) { diff --git a/blocks_compressed.js b/blocks_compressed.js index 9f674959669..f8a8457ee11 100644 --- a/blocks_compressed.js +++ b/blocks_compressed.js @@ -26,26 +26,26 @@ Blockly.Blocks.lists_create_with_item={init:function(){this.setStyle("list_block 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.setStyle("list_blocks");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);var b=this;this.setTooltip(function(){return Blockly.Msg.LISTS_INDEX_OF_TOOLTIP.replace("%1", b.workspace.options.oneBasedIndex?"0":"-1")})}}; 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.setStyle("list_blocks"); -a=new Blockly.FieldDropdown(a,function(a){a="REMOVE"==a;this.getSourceBlock().updateStatement_(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= +a=new Blockly.FieldDropdown(a,function(c){c="REMOVE"==c;this.getSourceBlock().updateStatement_(c)});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 c= +b.getFieldValue("MODE"),d=b.getFieldValue("WHERE"),e="";switch(c+" "+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+=" "+("FROM_START"==d?Blockly.Msg.LISTS_INDEX_FROM_START_TOOLTIP:Blockly.Msg.LISTS_INDEX_FROM_END_TOOLTIP).replace("%1",b.workspace.options.oneBasedIndex?"#1":"#0");return e})},mutationToDom:function(){var a=Blockly.utils.xml.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.getSourceBlock();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)}}; +this.appendDummyInput("ORDINAL").appendField(Blockly.Msg.ORDINAL_NUMBER_SUFFIX)):this.appendDummyInput("AT");var b=new Blockly.FieldDropdown(this.WHERE_OPTIONS,function(c){var d="FROM_START"==c||"FROM_END"==c;if(d!=a){var e=this.getSourceBlock();e.updateAt_(d);e.setFieldValue(c,"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.setStyle("list_blocks");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= +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 c=b.getFieldValue("MODE"),d=b.getFieldValue("WHERE"),e="";switch(c+" "+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",b.workspace.options.oneBasedIndex?"#1":"#0");return e})},mutationToDom:function(){var a=Blockly.utils.xml.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.getSourceBlock();e.updateAt_(c);e.setFieldValue(b,"WHERE");return null}});this.moveInputBefore("AT","TO");this.getInput("ORDINAL")&&this.moveInputBefore("ORDINAL", +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(c){var d="FROM_START"==c||"FROM_END"==c;if(d!=a){var e=this.getSourceBlock();e.updateAt_(d);e.setFieldValue(c,"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.setStyle("list_blocks"); 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=Blockly.utils.xml.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 e="FROM_START"==c||"FROM_END"==c;if(e!=b){var d=this.getSourceBlock();d.updateAt_(a,e);d.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)}}; +this.appendDummyInput("AT"+a);var c=new Blockly.FieldDropdown(this["WHERE_OPTIONS_"+a],function(d){var e="FROM_START"==d||"FROM_END"==d;if(e!=b){var f=this.getSourceBlock();f.updateAt_(a,e);f.setFieldValue(d,"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",style:"list_blocks", 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.setStyle("list_blocks");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 Error("Unknown mode: "+b);})},updateType_:function(a){if(this.getFieldValue("MODE")!=a){var b=this.getInput("INPUT").connection;b.setShadowDom(null);var c=b.targetBlock();c&&(b.disconnect(),c.isShadow()?c.dispose():this.bumpNeighbours())}"SPLIT"==a?(this.outputConnection.setCheck("Array"),this.getInput("INPUT").setCheck("String")): +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(c){a.updateType_(c)});this.setHelpUrl(Blockly.Msg.LISTS_SPLIT_HELPURL);this.setStyle("list_blocks");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 c=a.getFieldValue("MODE");if("SPLIT"==c)return Blockly.Msg.LISTS_SPLIT_TOOLTIP_SPLIT;if("JOIN"==c)return Blockly.Msg.LISTS_SPLIT_TOOLTIP_JOIN;throw Error("Unknown mode: "+c);})},updateType_:function(a){if(this.getFieldValue("MODE")!=a){var b=this.getInput("INPUT").connection;b.setShadowDom(null);var c=b.targetBlock();c&&(b.disconnect(),c.isShadow()?c.dispose():this.bumpNeighbours())}"SPLIT"==a?(this.outputConnection.setCheck("Array"),this.getInput("INPUT").setCheck("String")): (this.outputConnection.setCheck("String"),this.getInput("INPUT").setCheck("Array"))},mutationToDom:function(){var a=Blockly.utils.xml.createElement("mutation");a.setAttribute("mode",this.getFieldValue("MODE"));return a},domToMutation:function(a){this.updateType_(a.getAttribute("mode"))}};Blockly.Blocks.logic={};Blockly.Constants.Logic={};Blockly.Constants.Logic.HUE=210; Blockly.defineBlocksWithJsonArray([{type:"logic_boolean",message0:"%1",args0:[{type:"field_dropdown",name:"BOOL",options:[["%{BKY_LOGIC_BOOLEAN_TRUE}","TRUE"],["%{BKY_LOGIC_BOOLEAN_FALSE}","FALSE"]]}],output:"Boolean",style:"logic_blocks",tooltip:"%{BKY_LOGIC_BOOLEAN_TOOLTIP}",helpUrl:"%{BKY_LOGIC_BOOLEAN_HELPURL}"},{type:"controls_if",message0:"%{BKY_CONTROLS_IF_MSG_IF} %1",args0:[{type:"input_value",name:"IF0",check:"Boolean"}],message1:"%{BKY_CONTROLS_IF_MSG_THEN} %1",args1:[{type:"input_statement", name:"DO0"}],previousStatement:null,nextStatement:null,style:"logic_blocks",helpUrl:"%{BKY_CONTROLS_IF_HELPURL}",mutator:"controls_if_mutator",extensions:["controls_if_tooltip"]},{type:"controls_ifelse",message0:"%{BKY_CONTROLS_IF_MSG_IF} %1",args0:[{type:"input_value",name:"IF0",check:"Boolean"}],message1:"%{BKY_CONTROLS_IF_MSG_THEN} %1",args1:[{type:"input_statement",name:"DO0"}],message2:"%{BKY_CONTROLS_IF_MSG_ELSE} %1",args2:[{type:"input_statement",name:"ELSE"}],previousStatement:null,nextStatement:null, @@ -63,9 +63,9 @@ a.statementConnection_=d&&d.connection.targetConnection;b++;break;case "controls d);a.push(e.connection.targetConnection);b.push(f.connection.targetConnection);d++}this.updateShape_();this.reconnectChildBlocks_(a,b,c)},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)},reconnectChildBlocks_:function(a,b,c){for(var d=1;d<=this.elseifCount_;d++)Blockly.Mutator.reconnect(a[d],this,"IF"+d),Blockly.Mutator.reconnect(b[d],this,"DO"+d);Blockly.Mutator.reconnect(c,this,"ELSE")}};Blockly.Extensions.registerMutator("controls_if_mutator",Blockly.Constants.Logic.CONTROLS_IF_MUTATOR_MIXIN,null,["controls_if_elseif","controls_if_else"]); Blockly.Constants.Logic.CONTROLS_IF_TOOLTIP_EXTENSION=function(){this.setTooltip(function(){if(this.elseifCount_||this.elseCount_){if(!this.elseifCount_&&this.elseCount_)return Blockly.Msg.CONTROLS_IF_TOOLTIP_2;if(this.elseifCount_&&!this.elseCount_)return Blockly.Msg.CONTROLS_IF_TOOLTIP_3;if(this.elseifCount_&&this.elseCount_)return Blockly.Msg.CONTROLS_IF_TOOLTIP_4}else return Blockly.Msg.CONTROLS_IF_TOOLTIP_1;return""}.bind(this))};Blockly.Extensions.register("controls_if_tooltip",Blockly.Constants.Logic.CONTROLS_IF_TOOLTIP_EXTENSION); -Blockly.Constants.Logic.LOGIC_COMPARE_ONCHANGE_MIXIN={onchange:function(a){this.prevBlocks_||(this.prevBlocks_=[null,null]);var b=this.getInputTargetBlock("A"),c=this.getInputTargetBlock("B");b&&c&&!b.outputConnection.checkType(c.outputConnection)&&(Blockly.Events.setGroup(a.group),a=this.prevBlocks_[0],a!==b&&(b.unplug(),!a||a.isDisposed()||a.isShadow()||this.getInput("A").connection.connect(a.outputConnection)),b=this.prevBlocks_[1],b!==c&&(c.unplug(),!b||b.isDisposed()||b.isShadow()||this.getInput("B").connection.connect(b.outputConnection)), -this.bumpNeighbours(),Blockly.Events.setGroup(!1));this.prevBlocks_[0]=this.getInputTargetBlock("A");this.prevBlocks_[1]=this.getInputTargetBlock("B")}};Blockly.Constants.Logic.LOGIC_COMPARE_EXTENSION=function(){this.mixin(Blockly.Constants.Logic.LOGIC_COMPARE_ONCHANGE_MIXIN)};Blockly.Extensions.register("logic_compare",Blockly.Constants.Logic.LOGIC_COMPARE_EXTENSION); -Blockly.Constants.Logic.LOGIC_TERNARY_ONCHANGE_MIXIN={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_= +Blockly.Constants.Logic.LOGIC_COMPARE_ONCHANGE_MIXIN={onchange:function(a){this.prevBlocks_||(this.prevBlocks_=[null,null]);var b=this.getInputTargetBlock("A"),c=this.getInputTargetBlock("B");b&&c&&!this.workspace.connectionChecker.doTypeChecks(b.outputConnection,c.outputConnection)&&(Blockly.Events.setGroup(a.group),a=this.prevBlocks_[0],a!==b&&(b.unplug(),!a||a.isDisposed()||a.isShadow()||this.getInput("A").connection.connect(a.outputConnection)),b=this.prevBlocks_[1],b!==c&&(c.unplug(),!b||b.isDisposed()|| +b.isShadow()||this.getInput("B").connection.connect(b.outputConnection)),this.bumpNeighbours(),Blockly.Events.setGroup(!1));this.prevBlocks_[0]=this.getInputTargetBlock("A");this.prevBlocks_[1]=this.getInputTargetBlock("B")}};Blockly.Constants.Logic.LOGIC_COMPARE_EXTENSION=function(){this.mixin(Blockly.Constants.Logic.LOGIC_COMPARE_ONCHANGE_MIXIN)};Blockly.Extensions.register("logic_compare",Blockly.Constants.Logic.LOGIC_COMPARE_EXTENSION); +Blockly.Constants.Logic.LOGIC_TERNARY_ONCHANGE_MIXIN={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.workspace.connectionChecker.doTypeChecks(f.outputConnection,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.Extensions.registerMixin("logic_ternary",Blockly.Constants.Logic.LOGIC_TERNARY_ONCHANGE_MIXIN);Blockly.Blocks.loops={};Blockly.Constants.Loops={};Blockly.Constants.Loops.HUE=120; Blockly.defineBlocksWithJsonArray([{type:"controls_repeat_ext",message0:"%{BKY_CONTROLS_REPEAT_TITLE}",args0:[{type:"input_value",name:"TIMES",check:"Number"}],message1:"%{BKY_CONTROLS_REPEAT_INPUT_DO} %1",args1:[{type:"input_statement",name:"DO"}],previousStatement:null,nextStatement:null,style:"loop_blocks",tooltip:"%{BKY_CONTROLS_REPEAT_TOOLTIP}",helpUrl:"%{BKY_CONTROLS_REPEAT_HELPURL}"},{type:"controls_repeat",message0:"%{BKY_CONTROLS_REPEAT_TITLE}",args0:[{type:"field_number",name:"TIMES",value:10, min:0,precision:1}],message1:"%{BKY_CONTROLS_REPEAT_INPUT_DO} %1",args1:[{type:"input_statement",name:"DO"}],previousStatement:null,nextStatement:null,style:"loop_blocks",tooltip:"%{BKY_CONTROLS_REPEAT_TOOLTIP}",helpUrl:"%{BKY_CONTROLS_REPEAT_HELPURL}"},{type:"controls_whileUntil",message0:"%1 %2",args0:[{type:"field_dropdown",name:"MODE",options:[["%{BKY_CONTROLS_WHILEUNTIL_OPERATOR_WHILE}","WHILE"],["%{BKY_CONTROLS_WHILEUNTIL_OPERATOR_UNTIL}","UNTIL"]]},{type:"input_value",name:"BOOL",check:"Boolean"}], @@ -125,7 +125,7 @@ for(var b=0;b */ - this.bubbleGroup_ = Blockly.utils.dom.createSvgElement('g', {}, null); - var filter = - {'filter': 'url(#' + - this.workspace_.getRenderer().getConstants().embossFilterId + ')'}; + this.bubbleGroup_ = Blockly.utils.dom.createSvgElement( + Blockly.utils.Svg.G, {}, null); + var filter = { + 'filter': 'url(#' + + this.workspace_.getRenderer().getConstants().embossFilterId + ')' + }; if (Blockly.utils.userAgent.JAVA_FX) { // Multiple reports that JavaFX can't handle filters. // https://github.com/google/blockly/issues/99 filter = {}; } - var bubbleEmboss = Blockly.utils.dom.createSvgElement('g', - filter, this.bubbleGroup_); - this.bubbleArrow_ = Blockly.utils.dom.createSvgElement('path', {}, - bubbleEmboss); - this.bubbleBack_ = Blockly.utils.dom.createSvgElement('rect', - { + var bubbleEmboss = Blockly.utils.dom.createSvgElement( + Blockly.utils.Svg.G, filter, this.bubbleGroup_); + this.bubbleArrow_ = Blockly.utils.dom.createSvgElement( + Blockly.utils.Svg.PATH, {}, bubbleEmboss); + this.bubbleBack_ = Blockly.utils.dom.createSvgElement( + Blockly.utils.Svg.RECT, { 'class': 'blocklyDraggable', 'x': 0, 'y': 0, @@ -257,28 +262,33 @@ Blockly.Bubble.prototype.createDom_ = function(content, hasResize) { }, bubbleEmboss); if (hasResize) { - this.resizeGroup_ = Blockly.utils.dom.createSvgElement('g', - {'class': this.workspace_.RTL ? - 'blocklyResizeSW' : 'blocklyResizeSE'}, + this.resizeGroup_ = Blockly.utils.dom.createSvgElement( + Blockly.utils.Svg.G, + {'class': this.workspace_.RTL ? 'blocklyResizeSW' : 'blocklyResizeSE'}, this.bubbleGroup_); var resizeSize = 2 * Blockly.Bubble.BORDER_WIDTH; - Blockly.utils.dom.createSvgElement('polygon', + Blockly.utils.dom.createSvgElement( + Blockly.utils.Svg.POLYGON, {'points': '0,x x,x x,0'.replace(/x/g, resizeSize.toString())}, this.resizeGroup_); - Blockly.utils.dom.createSvgElement('line', - { + Blockly.utils.dom.createSvgElement( + Blockly.utils.Svg.LINE, { 'class': 'blocklyResizeLine', - 'x1': resizeSize / 3, 'y1': resizeSize - 1, - 'x2': resizeSize - 1, 'y2': resizeSize / 3 - }, this.resizeGroup_); - Blockly.utils.dom.createSvgElement('line', - { + 'x1': resizeSize / 3, + 'y1': resizeSize - 1, + 'x2': resizeSize - 1, + 'y2': resizeSize / 3 + }, + this.resizeGroup_); + Blockly.utils.dom.createSvgElement( + Blockly.utils.Svg.LINE, { 'class': 'blocklyResizeLine', 'x1': resizeSize * 2 / 3, 'y1': resizeSize - 1, 'x2': resizeSize - 1, 'y2': resizeSize * 2 / 3 - }, this.resizeGroup_); + }, + this.resizeGroup_); } else { this.resizeGroup_ = null; } @@ -297,7 +307,7 @@ Blockly.Bubble.prototype.createDom_ = function(content, hasResize) { /** * Return the root node of the bubble's SVG group. - * @return {SVGElement} The root SVG node of the bubble's group. + * @return {!SVGElement} The root SVG node of the bubble's group. */ Blockly.Bubble.prototype.getSvgRoot = function() { return this.bubbleGroup_; @@ -344,6 +354,15 @@ Blockly.Bubble.prototype.isDeletable = function() { return false; }; +/** + * Update the style of this bubble when it is dragged over a delete area. + * @param {boolean} _enable True if the bubble is about to be deleted, false + * otherwise. + */ +Blockly.Bubble.prototype.setDeleteStyle = function(_enable) { + // NOP if bubble is not deletable. +}; + /** * Handle a mouse-down on bubble's resize corner. * @param {!Event} e Mouse down event. @@ -358,13 +377,15 @@ Blockly.Bubble.prototype.resizeMouseDown_ = function(e) { return; } // Left-click (or middle click) - this.workspace_.startDrag(e, new Blockly.utils.Coordinate( - this.workspace_.RTL ? -this.width_ : this.width_, this.height_)); - - Blockly.Bubble.onMouseUpWrapper_ = Blockly.bindEventWithChecks_(document, - 'mouseup', this, Blockly.Bubble.bubbleMouseUp_); - Blockly.Bubble.onMouseMoveWrapper_ = Blockly.bindEventWithChecks_(document, - 'mousemove', this, this.resizeMouseMove_); + this.workspace_.startDrag( + e, + new Blockly.utils.Coordinate( + this.workspace_.RTL ? -this.width_ : this.width_, this.height_)); + + Blockly.Bubble.onMouseUpWrapper_ = Blockly.bindEventWithChecks_( + document, 'mouseup', this, Blockly.Bubble.bubbleMouseUp_); + Blockly.Bubble.onMouseMoveWrapper_ = Blockly.bindEventWithChecks_( + document, 'mousemove', this, this.resizeMouseMove_); Blockly.hideChaff(); // This event has been handled. No need to bubble up to the document. e.stopPropagation(); @@ -462,8 +483,9 @@ Blockly.Bubble.prototype.layoutBubble_ = function() { // Set the position to whichever position shows the most of the bubble, // with tiebreaks going in the order: top > start > close > far. - var mostOverlap = Math.max(topPositionOverlap, startPositionOverlap, - closerPositionOverlap, fartherPositionOverlap); + var mostOverlap = Math.max( + topPositionOverlap, startPositionOverlap, closerPositionOverlap, + fartherPositionOverlap); if (topPositionOverlap == mostOverlap) { this.relativeLeft_ = topPosition.x; this.relativeTop_ = topPosition.y; @@ -500,14 +522,11 @@ Blockly.Bubble.prototype.getOverlap_ = function(relativeMin, metrics) { // The position of the top-left corner of the bubble in workspace units. var bubbleMin = { x: this.workspace_.RTL ? (this.anchorXY_.x - relativeMin.x - this.width_) : - (relativeMin.x + this.anchorXY_.x), + (relativeMin.x + this.anchorXY_.x), y: relativeMin.y + this.anchorXY_.y }; // The position of the bottom-right corner of the bubble in workspace units. - var bubbleMax = { - x: bubbleMin.x + this.width_, - y: bubbleMin.y + this.height_ - }; + var bubbleMax = {x: bubbleMin.x + this.width_, y: bubbleMin.y + this.height_}; // We could adjust these values to account for the scrollbars, but the // bubbles should have been adjusted to not collide with them anyway, so @@ -515,10 +534,7 @@ Blockly.Bubble.prototype.getOverlap_ = function(relativeMin, metrics) { // calculation. // The position of the top-left corner of the workspace. - var workspaceMin = { - x: metrics.viewLeft, - y: metrics.viewTop - }; + var workspaceMin = {x: metrics.viewLeft, y: metrics.viewTop}; // The position of the bottom-right corner of the workspace. var workspaceMax = { x: metrics.viewLeft + metrics.viewWidth, @@ -529,8 +545,10 @@ Blockly.Bubble.prototype.getOverlap_ = function(relativeMin, metrics) { Math.max(bubbleMin.x, workspaceMin.x); var overlapHeight = Math.min(bubbleMax.y, workspaceMax.y) - Math.max(bubbleMin.y, workspaceMin.y); - return Math.max(0, Math.min(1, - (overlapWidth * overlapHeight) / (this.width_ * this.height_))); + return Math.max( + 0, + Math.min( + 1, (overlapWidth * overlapHeight) / (this.width_ * this.height_))); }; /** @@ -566,8 +584,8 @@ Blockly.Bubble.prototype.getOptimalRelativeLeft_ = function(metrics) { var workspaceLeft = metrics.viewLeft; var workspaceRight = metrics.viewLeft + metrics.viewWidth - - // Thickness in workspace units. - (Blockly.Scrollbar.scrollbarThickness / this.workspace_.scale); + // Thickness in workspace units. + (Blockly.Scrollbar.scrollbarThickness / this.workspace_.scale); } if (this.workspace_.RTL) { @@ -690,12 +708,15 @@ Blockly.Bubble.prototype.setBubbleSize = function(width, height) { if (this.workspace_.RTL) { // Mirror the resize group. var resizeSize = 2 * Blockly.Bubble.BORDER_WIDTH; - this.resizeGroup_.setAttribute('transform', 'translate(' + - resizeSize + ',' + (height - doubleBorderWidth) + ') scale(-1 1)'); + this.resizeGroup_.setAttribute( + 'transform', + 'translate(' + resizeSize + ',' + (height - doubleBorderWidth) + + ') scale(-1 1)'); } else { - this.resizeGroup_.setAttribute('transform', 'translate(' + - (width - doubleBorderWidth) + ',' + - (height - doubleBorderWidth) + ')'); + this.resizeGroup_.setAttribute( + 'transform', + 'translate(' + (width - doubleBorderWidth) + ',' + + (height - doubleBorderWidth) + ')'); } } if (this.autoLayout_) { @@ -748,8 +769,8 @@ Blockly.Bubble.prototype.renderArrow_ = function() { // Calculate the thickness of the base of the arrow. var bubbleSize = this.getBubbleSize(); - var thickness = (bubbleSize.width + bubbleSize.height) / - Blockly.Bubble.ARROW_THICKNESS; + var thickness = + (bubbleSize.width + bubbleSize.height) / Blockly.Bubble.ARROW_THICKNESS; thickness = Math.min(thickness, bubbleSize.width, bubbleSize.height) / 4; // Back the tip of the arrow off of the anchor. @@ -768,18 +789,18 @@ Blockly.Bubble.prototype.renderArrow_ = function() { if (swirlAngle > Math.PI * 2) { swirlAngle -= Math.PI * 2; } - var swirlRise = Math.sin(swirlAngle) * - hypotenuse / Blockly.Bubble.ARROW_BEND; - var swirlRun = Math.cos(swirlAngle) * - hypotenuse / Blockly.Bubble.ARROW_BEND; + var swirlRise = + Math.sin(swirlAngle) * hypotenuse / Blockly.Bubble.ARROW_BEND; + var swirlRun = + Math.cos(swirlAngle) * hypotenuse / Blockly.Bubble.ARROW_BEND; steps.push('M' + baseX1 + ',' + baseY1); - steps.push('C' + (baseX1 + swirlRun) + ',' + (baseY1 + swirlRise) + - ' ' + relAnchorX + ',' + relAnchorY + - ' ' + relAnchorX + ',' + relAnchorY); - steps.push('C' + relAnchorX + ',' + relAnchorY + - ' ' + (baseX2 + swirlRun) + ',' + (baseY2 + swirlRise) + - ' ' + baseX2 + ',' + baseY2); + steps.push( + 'C' + (baseX1 + swirlRun) + ',' + (baseY1 + swirlRise) + ' ' + + relAnchorX + ',' + relAnchorY + ' ' + relAnchorX + ',' + relAnchorY); + steps.push( + 'C' + relAnchorX + ',' + relAnchorY + ' ' + (baseX2 + swirlRun) + ',' + + (baseY2 + swirlRise) + ' ' + baseX2 + ',' + baseY2); } steps.push('z'); this.bubbleArrow_.setAttribute('d', steps.join(' ')); @@ -841,8 +862,8 @@ Blockly.Bubble.prototype.moveDuringDrag = function(dragSurface, newLoc) { Blockly.Bubble.prototype.getRelativeToSurfaceXY = function() { return new Blockly.utils.Coordinate( this.workspace_.RTL ? - -this.relativeLeft_ + this.anchorXY_.x - this.width_ : - this.anchorXY_.x + this.relativeLeft_, + -this.relativeLeft_ + this.anchorXY_.x - this.width_ : + this.anchorXY_.x + this.relativeLeft_, this.anchorXY_.y + this.relativeTop_); }; diff --git a/core/bubble_dragger.js b/core/bubble_dragger.js index 66c16459ee5..ee4bd9942be 100644 --- a/core/bubble_dragger.js +++ b/core/bubble_dragger.js @@ -18,20 +18,21 @@ goog.require('Blockly.Events.CommentMove'); goog.require('Blockly.utils'); goog.require('Blockly.utils.Coordinate'); +goog.requireType('Blockly.IBubble'); + /** * Class for a bubble dragger. It moves things on the bubble canvas around the * workspace when they are being dragged by a mouse or touch. These can be * block comments, mutators, warnings, or workspace comments. - * @param {!Blockly.Bubble|!Blockly.WorkspaceCommentSvg} bubble The item on the - * bubble canvas to drag. + * @param {!Blockly.IBubble} bubble The item on the bubble canvas to drag. * @param {!Blockly.WorkspaceSvg} workspace The workspace to drag on. * @constructor */ Blockly.BubbleDragger = function(bubble, workspace) { /** * The item on the bubble canvas that is being dragged. - * @type {!Blockly.Bubble|!Blockly.WorkspaceCommentSvg} + * @type {!Blockly.IBubble} * @private */ this.draggingBubble_ = bubble; @@ -75,7 +76,8 @@ Blockly.BubbleDragger = function(bubble, workspace) { */ this.dragSurface_ = Blockly.utils.is3dSupported() && !!workspace.getBlockDragSurface() ? - workspace.getBlockDragSurface() : null; + workspace.getBlockDragSurface() : + null; }; /** @@ -109,7 +111,7 @@ Blockly.BubbleDragger.prototype.startBubbleDrag = function() { var toolbox = this.workspace_.getToolbox(); if (toolbox && typeof toolbox.addStyle == 'function') { var style = this.draggingBubble_.isDeletable() ? 'blocklyToolboxDelete' : - 'blocklyToolboxGrab'; + 'blocklyToolboxGrab'; toolbox.addStyle(style); } }; @@ -145,14 +147,14 @@ Blockly.BubbleDragger.prototype.maybeDeleteBubble_ = function() { if (this.wouldDeleteBubble_) { if (trashcan) { - setTimeout(trashcan.close.bind(trashcan), 100); + setTimeout(trashcan.closeLid.bind(trashcan), 100); } // Fire a move event, so we know where to go back to for an undo. this.fireMoveEvent_(); this.draggingBubble_.dispose(false, true); } else if (trashcan) { - // Make sure the trash can is closed. - trashcan.close(); + // Make sure the trash can lid is closed. + trashcan.closeLid(); } return this.wouldDeleteBubble_; }; @@ -168,12 +170,12 @@ Blockly.BubbleDragger.prototype.updateCursorDuringBubbleDrag_ = function() { if (this.wouldDeleteBubble_) { this.draggingBubble_.setDeleteStyle(true); if (this.deleteArea_ == Blockly.DELETE_AREA_TRASH && trashcan) { - trashcan.setOpen(true); + trashcan.setLidOpen(true); } } else { this.draggingBubble_.setDeleteStyle(false); if (trashcan) { - trashcan.setOpen(false); + trashcan.setLidOpen(false); } } }; @@ -211,7 +213,7 @@ Blockly.BubbleDragger.prototype.endBubbleDrag = function( var toolbox = this.workspace_.getToolbox(); if (toolbox && typeof toolbox.removeStyle == 'function') { var style = this.draggingBubble_.isDeletable() ? 'blocklyToolboxDelete' : - 'blocklyToolboxGrab'; + 'blocklyToolboxGrab'; toolbox.removeStyle(style); } Blockly.Events.setGroup(false); @@ -238,14 +240,15 @@ Blockly.BubbleDragger.prototype.fireMoveEvent_ = function() { * correction for mutator workspaces. * This function does not consider differing origins. It simply scales the * input's x and y values. - * @param {!Blockly.utils.Coordinate} pixelCoord A coordinate with x and y values - * in CSS pixel units. - * @return {!Blockly.utils.Coordinate} The input coordinate divided by the workspace - * scale. + * @param {!Blockly.utils.Coordinate} pixelCoord A coordinate with x and y + * values in CSS pixel units. + * @return {!Blockly.utils.Coordinate} The input coordinate divided by the + * workspace scale. * @private */ Blockly.BubbleDragger.prototype.pixelsToWorkspaceUnits_ = function(pixelCoord) { - var result = new Blockly.utils.Coordinate(pixelCoord.x / this.workspace_.scale, + var result = new Blockly.utils.Coordinate( + pixelCoord.x / this.workspace_.scale, pixelCoord.y / this.workspace_.scale); if (this.workspace_.isMutator) { // If we're in a mutator, its scale is always 1, purely because of some diff --git a/core/comment.js b/core/comment.js index 54c102b0831..cc8b5a6812a 100644 --- a/core/comment.js +++ b/core/comment.js @@ -18,8 +18,10 @@ goog.require('Blockly.Events'); goog.require('Blockly.Events.BlockChange'); goog.require('Blockly.Events.Ui'); goog.require('Blockly.Icon'); +goog.require('Blockly.utils.deprecation'); goog.require('Blockly.utils.dom'); goog.require('Blockly.utils.object'); +goog.require('Blockly.utils.Svg'); goog.require('Blockly.utils.userAgent'); goog.require('Blockly.Warning'); @@ -90,13 +92,15 @@ Blockly.utils.object.inherits(Blockly.Comment, Blockly.Icon); */ Blockly.Comment.prototype.drawIcon_ = function(group) { // Circle. - Blockly.utils.dom.createSvgElement('circle', + Blockly.utils.dom.createSvgElement( + Blockly.utils.Svg.CIRCLE, {'class': 'blocklyIconShape', 'r': '8', 'cx': '8', 'cy': '8'}, group); // Can't use a real '?' text character since different browsers and operating // systems render it differently. // Body of question mark. - Blockly.utils.dom.createSvgElement('path', + Blockly.utils.dom.createSvgElement( + Blockly.utils.Svg.PATH, { 'class': 'blocklyIconSymbol', 'd': 'm6.8,10h2c0.003,-0.617 0.271,-0.962 0.633,-1.266 2.875,-2.405' + @@ -104,7 +108,8 @@ Blockly.Comment.prototype.drawIcon_ = function(group) { '-1.201,0.998 -1.201,1.528 -1.204,2.19z'}, group); // Dot of question mark. - Blockly.utils.dom.createSvgElement('rect', + Blockly.utils.dom.createSvgElement( + Blockly.utils.Svg.RECT, { 'class': 'blocklyIconSymbol', 'x': '6.8', @@ -133,7 +138,8 @@ Blockly.Comment.prototype.createEditor_ = function() { * For non-editable mode see Warning.textToDom_. */ - this.foreignObject_ = Blockly.utils.dom.createSvgElement('foreignObject', + this.foreignObject_ = Blockly.utils.dom.createSvgElement( + Blockly.utils.Svg.FOREIGNOBJECT, {'x': Blockly.Bubble.BORDER_WIDTH, 'y': Blockly.Bubble.BORDER_WIDTH}, null); @@ -360,6 +366,11 @@ Blockly.Comment.prototype.setBubbleSize = function(width, height) { * @deprecated August 2019 Use block.getCommentText() instead. */ Blockly.Comment.prototype.getText = function() { + Blockly.utils.deprecation.warn( + 'Comment.prototype.getText', + 'August 2019', + 'December 2020', + 'block.getCommentText'); return this.model_.text || ''; }; @@ -372,6 +383,11 @@ Blockly.Comment.prototype.getText = function() { * @deprecated August 2019 Use block.setCommentText() instead. */ Blockly.Comment.prototype.setText = function(text) { + Blockly.utils.deprecation.warn( + 'Comment.prototype.setText', + 'August 2019', + 'December 2020', + 'block.setCommentText'); if (this.model_.text == text) { return; } diff --git a/core/components/tree/basenode.js b/core/components/tree/basenode.js deleted file mode 100644 index bd84859123f..00000000000 --- a/core/components/tree/basenode.js +++ /dev/null @@ -1,895 +0,0 @@ -/** - * @license - * Copyright 2019 Google LLC - * SPDX-License-Identifier: Apache-2.0 - */ - -/** - * @fileoverview Definition of the Blockly.tree.BaseNode class. - * This class is similar to Closure's goog.ui.tree.BaseNode class. - * @author samelh@google.com (Sam El-Husseini) - */ -'use strict'; - -goog.provide('Blockly.tree.BaseNode'); - -goog.require('Blockly.Component'); -goog.require('Blockly.utils.aria'); -goog.require('Blockly.utils.object'); -goog.require('Blockly.utils.KeyCodes'); -goog.require('Blockly.utils.style'); - - -/** - * An abstract base class for a node in the tree. - * Similar to goog.ui.tree.BaseNode - * - * @param {string} content The content of the node label treated as - * plain-text and will be HTML escaped. - * @param {!Blockly.tree.BaseNode.Config} config The configuration for the tree. - * @constructor - * @extends {Blockly.Component} - */ -Blockly.tree.BaseNode = function(content, config) { - Blockly.Component.call(this); - - /** - * Text content of the node label. - * @type {string} - * @package - */ - this.content = content; - - /** - * @type {string} - * @package - */ - this.iconClass; - - /** - * @type {string} - * @package - */ - this.expandedIconClass; - - /** - * The configuration for the tree. - * @type {!Blockly.tree.BaseNode.Config} - * @protected - */ - this.config_ = config; - - /** - * @type {Blockly.tree.TreeControl} - * @protected - */ - this.tree; - - /** - * @type {Blockly.tree.BaseNode} - * @private - */ - this.previousSibling_; - - /** - * @type {Blockly.tree.BaseNode} - * @private - */ - this.nextSibling_; - - /** - * Whether the tree item is selected. - * @type {boolean} - * @protected - */ - this.selected_ = false; - - /** - * Whether the tree node is expanded. - * @type {boolean} - * @protected - */ - this.expanded_ = false; - - /** - * Nesting depth of this node; cached result of getDepth. - * -1 if value has not been cached. - * @type {number} - * @private - */ - this.depth_ = -1; -}; -Blockly.utils.object.inherits(Blockly.tree.BaseNode, Blockly.Component); - - -/** - * The config type for the tree. - * @typedef {{ - * indentWidth:number, - * cssRoot:string, - * cssHideRoot:string, - * cssTreeRow:string, - * cssItemLabel:string, - * cssTreeIcon:string, - * cssExpandedFolderIcon:string, - * cssCollapsedFolderIcon:string, - * cssFileIcon:string, - * cssSelectedRow:string - * }} - */ -Blockly.tree.BaseNode.Config; - -/** - * Map of nodes in existence. Needed to route events to the appropriate nodes. - * Nodes are added to the map at {@link #enterDocument} time and removed at - * {@link #exitDocument} time. - * @type {Object} - * @protected - */ -Blockly.tree.BaseNode.allNodes = {}; - -/** @override */ -Blockly.tree.BaseNode.prototype.disposeInternal = function() { - Blockly.tree.BaseNode.superClass_.disposeInternal.call(this); - if (this.tree) { - this.tree = null; - } - this.setElementInternal(null); -}; - - -/** - * Adds roles and states. - * @protected - */ -Blockly.tree.BaseNode.prototype.initAccessibility = function() { - var el = this.getElement(); - if (el) { - // Set an id for the label - var label = this.getLabelElement(); - if (label && !label.id) { - label.id = this.getId() + '.label'; - } - - Blockly.utils.aria.setRole(el, Blockly.utils.aria.Role.TREEITEM); - Blockly.utils.aria.setState(el, Blockly.utils.aria.State.SELECTED, false); - Blockly.utils.aria.setState(el, - Blockly.utils.aria.State.LEVEL, this.getDepth()); - if (label) { - Blockly.utils.aria.setState(el, - Blockly.utils.aria.State.LABELLEDBY, label.id); - } - - var img = this.getIconElement(); - if (img) { - Blockly.utils.aria.setRole(img, Blockly.utils.aria.Role.PRESENTATION); - } - - var ce = this.getChildrenElement(); - if (ce) { - Blockly.utils.aria.setRole(ce, Blockly.utils.aria.Role.GROUP); - - // In case the children will be created lazily. - if (ce.hasChildNodes()) { - // Only set aria-expanded if the node has children (can be expanded). - Blockly.utils.aria.setState(el, Blockly.utils.aria.State.EXPANDED, false); - - // do setsize for each child - var count = this.getChildCount(); - for (var i = 1; i <= count; i++) { - var child = /** @type {!Element} */ (this.getChildAt(i - 1).getElement()); - Blockly.utils.aria.setState(child, - Blockly.utils.aria.State.SETSIZE, count); - Blockly.utils.aria.setState(child, - Blockly.utils.aria.State.POSINSET, i); - } - } - } - } -}; - - -/** @override */ -Blockly.tree.BaseNode.prototype.createDom = function() { - var element = document.createElement('div'); - element.appendChild(this.toDom()); - this.setElementInternal(/** @type {!HTMLElement} */ (element)); -}; - - -/** @override */ -Blockly.tree.BaseNode.prototype.enterDocument = function() { - Blockly.tree.BaseNode.superClass_.enterDocument.call(this); - Blockly.tree.BaseNode.allNodes[this.getId()] = this; - this.initAccessibility(); -}; - - -/** @override */ -Blockly.tree.BaseNode.prototype.exitDocument = function() { - Blockly.tree.BaseNode.superClass_.exitDocument.call(this); - delete Blockly.tree.BaseNode.allNodes[this.getId()]; -}; - - -/** - * The method assumes that the child doesn't have parent node yet. - * @override - */ -Blockly.tree.BaseNode.prototype.addChildAt = function(child, index) { - child = /** @type {Blockly.tree.BaseNode} */ (child); - var prevNode = this.getChildAt(index - 1); - var nextNode = this.getChildAt(index); - - Blockly.tree.BaseNode.superClass_.addChildAt.call(this, child, index); - - child.previousSibling_ = prevNode; - child.nextSibling_ = nextNode; - - if (prevNode) { - prevNode.nextSibling_ = child; - } - if (nextNode) { - nextNode.previousSibling_ = child; - } - - var tree = this.getTree(); - if (tree) { - child.setTreeInternal(tree); - } - - child.setDepth_(this.getDepth() + 1); - - var el = this.getElement(); - if (el) { - this.updateExpandIcon(); - Blockly.utils.aria.setState( - el, Blockly.utils.aria.State.EXPANDED, this.expanded_); - if (this.expanded_) { - var childrenEl = this.getChildrenElement(); - if (!child.getElement()) { - child.createDom(); - } - var childElement = child.getElement(); - var nextElement = nextNode && nextNode.getElement(); - childrenEl.insertBefore(childElement, nextElement); - - if (this.isInDocument()) { - child.enterDocument(); - } - - if (!nextNode) { - if (prevNode) { - prevNode.updateExpandIcon(); - } else { - Blockly.utils.style.setElementShown(childrenEl, true); - this.setExpanded(this.expanded_); - } - } - } - } -}; - -/** - * Appends a node as a child to the current node. - * @param {Blockly.tree.BaseNode} child The child to add. - * @package - */ -Blockly.tree.BaseNode.prototype.add = function(child) { - if (child.getParent()) { - throw Error(Blockly.Component.Error.PARENT_UNABLE_TO_BE_SET); - } - this.addChildAt(child, this.getChildCount()); -}; - -/** - * Returns the tree. - * @return {?Blockly.tree.TreeControl} tree - * @protected - */ -Blockly.tree.BaseNode.prototype.getTree = function() { - return null; -}; - -/** - * Returns the depth of the node in the tree. Should not be overridden. - * @return {number} The non-negative depth of this node (the root is zero). - * @protected - */ -Blockly.tree.BaseNode.prototype.getDepth = function() { - var depth = this.depth_; - if (depth < 0) { - var parent = this.getParent(); - if (parent) { - depth = parent.getDepth() + 1; - } else { - depth = 0; - } - this.setDepth_(depth); - } - return depth; -}; - -/** - * Changes the depth of a node (and all its descendants). - * @param {number} depth The new nesting depth; must be non-negative. - * @private - */ -Blockly.tree.BaseNode.prototype.setDepth_ = function(depth) { - if (depth != this.depth_) { - this.depth_ = depth; - var row = this.getRowElement(); - if (row) { - var indent = this.getPixelIndent_() + 'px'; - if (this.rightToLeft_) { - row.style.paddingRight = indent; - } else { - row.style.paddingLeft = indent; - } - } - this.forEachChild(function(child) { child.setDepth_(depth + 1); }); - } -}; - -/** - * Returns true if the node is a descendant of this node. - * @param {Blockly.Component} node The node to check. - * @return {boolean} True if the node is a descendant of this node, false - * otherwise. - * @protected - */ -Blockly.tree.BaseNode.prototype.contains = function(node) { - while (node) { - if (node == this) { - return true; - } - node = node.getParent(); - } - return false; -}; - -/** - * This is re-defined here to indicate to the Closure Compiler the correct - * child return type. - * @param {number} index 0-based index. - * @return {Blockly.tree.BaseNode} The child at the given index; null if none. - * @protected - */ -Blockly.tree.BaseNode.prototype.getChildAt; - -/** - * Returns the children of this node. - * @return {!Array.} The children. - * @package - */ -Blockly.tree.BaseNode.prototype.getChildren = function() { - var children = []; - this.forEachChild(function(child) { children.push(child); }); - return children; -}; - -/** - * Returns the node's parent, if any. - * @return {?Blockly.tree.BaseNode} The parent node. - * @protected - */ -Blockly.tree.BaseNode.prototype.getParent = function() { - return /** @type {Blockly.tree.BaseNode} */ ( - Blockly.tree.BaseNode.superClass_.getParent.call(this)); -}; - -/** - * @return {Blockly.tree.BaseNode} The previous sibling of this node. - * @protected - */ -Blockly.tree.BaseNode.prototype.getPreviousSibling = function() { - return this.previousSibling_; -}; - -/** - * @return {Blockly.tree.BaseNode} The next sibling of this node. - * @protected - */ -Blockly.tree.BaseNode.prototype.getNextSibling = function() { - return this.nextSibling_; -}; - -/** - * @return {boolean} Whether the node is the last sibling. - * @protected - */ -Blockly.tree.BaseNode.prototype.isLastSibling = function() { - return !this.nextSibling_; -}; - -/** - * @return {boolean} Whether the node is selected. - * @protected - */ -Blockly.tree.BaseNode.prototype.isSelected = function() { - return this.selected_; -}; - -/** - * Selects the node. - * @protected - */ -Blockly.tree.BaseNode.prototype.select = function() { - var tree = this.getTree(); - if (tree) { - tree.setSelectedItem(this); - } -}; - -/** - * Called from the tree to instruct the node change its selection state. - * @param {boolean} selected The new selection state. - * @protected - */ -Blockly.tree.BaseNode.prototype.setSelected = function(selected) { - if (this.selected_ == selected) { - return; - } - this.selected_ = selected; - - this.updateRow(); - - var el = this.getElement(); - if (el) { - Blockly.utils.aria.setState(el, Blockly.utils.aria.State.SELECTED, selected); - if (selected) { - var treeElement = /** @type {!Element} */ (this.getTree().getElement()); - Blockly.utils.aria.setState(treeElement, - Blockly.utils.aria.State.ACTIVEDESCENDANT, this.getId()); - } - } -}; - -/** - * Sets the node to be expanded. - * @param {boolean} expanded Whether to expand or close the node. - * @package - */ -Blockly.tree.BaseNode.prototype.setExpanded = function(expanded) { - var isStateChange = expanded != this.expanded_; - var ce; - this.expanded_ = expanded; - var tree = this.getTree(); - var el = this.getElement(); - - if (this.hasChildren()) { - if (!expanded && tree && this.contains(tree.getSelectedItem())) { - this.select(); - } - - if (el) { - ce = this.getChildrenElement(); - if (ce) { - Blockly.utils.style.setElementShown(ce, expanded); - Blockly.utils.aria.setState(el, Blockly.utils.aria.State.EXPANDED, expanded); - - // Make sure we have the HTML for the children here. - if (expanded && this.isInDocument() && !ce.hasChildNodes()) { - this.forEachChild(function(child) { - ce.appendChild(child.toDom()); - }); - this.forEachChild(function(child) { child.enterDocument(); }); - } - } - this.updateExpandIcon(); - } - } else { - ce = this.getChildrenElement(); - if (ce) { - Blockly.utils.style.setElementShown(ce, false); - } - } - if (el) { - this.updateIcon_(); - } - - if (isStateChange) { - if (expanded) { - this.doNodeExpanded(); - } else { - this.doNodeCollapsed(); - } - } -}; - -/** - * Used to notify a node of that we have expanded it. - * Can be overridden by subclasses, see Blockly.tree.TreeNode. - * @protected - */ -Blockly.tree.BaseNode.prototype.doNodeExpanded = function() { - // NOP -}; - -/** - * Used to notify a node that we have collapsed it. - * Can be overridden by subclasses, see Blockly.tree.TreeNode. - * @protected - */ -Blockly.tree.BaseNode.prototype.doNodeCollapsed = function() { - // NOP -}; - -/** - * Toggles the expanded state of the node. - * @protected - */ -Blockly.tree.BaseNode.prototype.toggle = function() { - this.setExpanded(!this.expanded_); -}; - -/** - * Creates HTML Element for the node. - * @return {!Element} HTML element - * @protected - */ -Blockly.tree.BaseNode.prototype.toDom = function() { - var nonEmptyAndExpanded = this.expanded_ && this.hasChildren(); - - var children = document.createElement('div'); - children.style.backgroundPosition = this.getBackgroundPosition(); - if (!nonEmptyAndExpanded) { - children.style.display = 'none'; - } - - if (nonEmptyAndExpanded) { - // children - this.forEachChild(function(child) { children.appendChild(child.toDom()); }); - } - - var node = document.createElement('div'); - node.id = this.getId(); - - node.appendChild(this.getRowDom()); - node.appendChild(children); - - return node; -}; - -/** - * Calculates correct padding for each row. Nested categories are indented more. - * @return {number} The pixel indent of the row. - * @private - */ -Blockly.tree.BaseNode.prototype.getPixelIndent_ = function() { - return Math.max(0, (this.getDepth() - 1) * this.config_.indentWidth); -}; - -/** - * Creates row with icon and label dom. - * @return {!Element} The HTML element for the row. - * @protected - */ -Blockly.tree.BaseNode.prototype.getRowDom = function() { - var row = document.createElement('div'); - row.className = this.getRowClassName(); - row.style['padding-' + (this.rightToLeft_ ? 'right' : 'left')] = - this.getPixelIndent_() + 'px'; - - row.appendChild(this.getIconDom()); - row.appendChild(this.getLabelDom()); - - return row; -}; - -/** - * Adds the selected class name to the default row class name if node is - * selected. - * @return {string} The class name for the row. - * @protected - */ -Blockly.tree.BaseNode.prototype.getRowClassName = function() { - var selectedClass = ''; - if (this.isSelected()) { - selectedClass = ' ' + (this.config_.cssSelectedRow || ''); - } - return this.config_.cssTreeRow + selectedClass; -}; - -/** - * @return {!Element} The HTML element for the label. - * @protected - */ -Blockly.tree.BaseNode.prototype.getLabelDom = function() { - var label = document.createElement('span'); - label.className = this.config_.cssItemLabel || ''; - label.textContent = this.content; - return label; -}; - -/** - * @return {!Element} The HTML for the icon. - * @protected - */ -Blockly.tree.BaseNode.prototype.getIconDom = function() { - var icon = document.createElement('span'); - icon.style.display = 'inline-block'; - icon.className = this.getCalculatedIconClass(); - return icon; -}; - -/** - * Gets the calculated icon class. - * @protected - */ -Blockly.tree.BaseNode.prototype.getCalculatedIconClass = function() { - throw Error(Blockly.Component.Error.ABSTRACT_METHOD); -}; - -/** - * Gets a string containing the x and y position of the node's background. - * @return {string} The background position style value. - * @protected - */ -Blockly.tree.BaseNode.prototype.getBackgroundPosition = function() { - return (this.isLastSibling() ? '-100' : (this.getDepth() - 1) * - this.config_.indentWidth) + 'px 0'; -}; - -/** - * @return {HTMLElement} The element for the tree node. - * @override - */ -Blockly.tree.BaseNode.prototype.getElement = function() { - var el = Blockly.tree.BaseNode.superClass_.getElement.call(this); - if (!el) { - el = document.getElementById(this.getId()); - this.setElementInternal(el); - } - return /** @type {!HTMLElement} */ (el); -}; - -/** - * @return {Element} The row is the div that is used to draw the node without - * the children. - * @package - */ -Blockly.tree.BaseNode.prototype.getRowElement = function() { - var el = this.getElement(); - return el ? /** @type {Element} */ (el.firstChild) : null; -}; - -/** - * @return {Element} The icon element. - * @protected - */ -Blockly.tree.BaseNode.prototype.getIconElement = function() { - var el = this.getRowElement(); - return el ? /** @type {Element} */ (el.firstChild) : null; -}; - -/** - * @return {Element} The label element. - * @protected - */ -Blockly.tree.BaseNode.prototype.getLabelElement = function() { - var el = this.getRowElement(); - return el && el.lastChild ? - /** @type {Element} */ (el.lastChild.previousSibling) : - null; -}; - -/** - * @return {Element} The div containing the children. - * @protected - */ -Blockly.tree.BaseNode.prototype.getChildrenElement = function() { - var el = this.getElement(); - return el ? /** @type {Element} */ (el.lastChild) : null; -}; - -/** - * Updates the row styles. - * @protected - */ -Blockly.tree.BaseNode.prototype.updateRow = function() { - var rowEl = this.getRowElement(); - if (rowEl) { - rowEl.className = this.getRowClassName(); - } -}; - -/** - * Updates the expand icon of the node. - * @protected - */ -Blockly.tree.BaseNode.prototype.updateExpandIcon = function() { - var cel = this.getChildrenElement(); - if (cel) { - cel.style.backgroundPosition = this.getBackgroundPosition(); - } -}; - -/** - * Updates the icon of the node. Assumes that this.getElement() is created. - * @private - */ -Blockly.tree.BaseNode.prototype.updateIcon_ = function() { - this.getIconElement().className = this.getCalculatedIconClass(); -}; - -/** - * Handles a click event. - * @param {!Event} e The browser event. - * @protected - */ -Blockly.tree.BaseNode.prototype.onClick_ = function(e) { - e.preventDefault(); -}; - -/** - * Handles a key down event. - * @param {!Event} e The browser event. - * @return {boolean} The handled value. - * @protected - */ -Blockly.tree.BaseNode.prototype.onKeyDown = function(e) { - var handled = true; - switch (e.keyCode) { - case Blockly.utils.KeyCodes.RIGHT: - handled = this.selectChild(); - break; - - case Blockly.utils.KeyCodes.LEFT: - handled = this.selectParent(); - break; - - case Blockly.utils.KeyCodes.DOWN: - handled = this.selectNext(); - break; - - case Blockly.utils.KeyCodes.UP: - handled = this.selectPrevious(); - break; - - case Blockly.utils.KeyCodes.ENTER: - case Blockly.utils.KeyCodes.SPACE: - this.toggle(); - handled = true; - break; - - default: - handled = false; - } - - if (handled) { - e.preventDefault(); - } - - return handled; -}; - - -/** - * Select the next node. - * @return {boolean} True if the action has been handled, false otherwise. - * @package - */ -Blockly.tree.BaseNode.prototype.selectNext = function() { - var nextNode = this.getNextShownNode(); - if (nextNode) { - nextNode.select(); - } - return true; -}; - -/** - * Select the previous node. - * @return {boolean} True if the action has been handled, false otherwise. - * @package - */ -Blockly.tree.BaseNode.prototype.selectPrevious = function() { - var previousNode = this.getPreviousShownNode(); - if (previousNode) { - previousNode.select(); - } - return true; -}; - -/** - * Select the parent node or collapse the current node. - * @return {boolean} True if the action has been handled, false otherwise. - * @package - */ -Blockly.tree.BaseNode.prototype.selectParent = function() { - if (this.hasChildren() && this.expanded_) { - this.setExpanded(false); - } else { - var parent = this.getParent(); - var tree = this.getTree(); - // don't go to root if hidden - if (parent && (parent != tree)) { - parent.select(); - } - } - return true; -}; - -/** - * Expand the current node if it's not already expanded, or select the - * child node. - * @return {boolean} True if the action has been handled, false otherwise. - * @package - */ -Blockly.tree.BaseNode.prototype.selectChild = function() { - if (this.hasChildren()) { - if (!this.expanded_) { - this.setExpanded(true); - } else { - this.getChildAt(0).select(); - } - return true; - } - return false; -}; - -/** - * @return {Blockly.tree.BaseNode} The last shown descendant. - * @protected - */ -Blockly.tree.BaseNode.prototype.getLastShownDescendant = function() { - if (!this.expanded_ || !this.hasChildren()) { - return this; - } - // we know there is at least 1 child - return this.getChildAt(this.getChildCount() - 1).getLastShownDescendant(); -}; - -/** - * @return {Blockly.tree.BaseNode} The next node to show or null if there isn't - * a next node to show. - * @protected - */ -Blockly.tree.BaseNode.prototype.getNextShownNode = function() { - if (this.hasChildren() && this.expanded_) { - return this.getChildAt(0); - } - var parent = this; - var next; - while (parent != this.getTree()) { - next = parent.getNextSibling(); - if (next != null) { - return next; - } - parent = parent.getParent(); - } - return null; -}; - -/** - * @return {Blockly.tree.BaseNode} The previous node to show. - * @protected - */ -Blockly.tree.BaseNode.prototype.getPreviousShownNode = function() { - var ps = this.getPreviousSibling(); - if (ps != null) { - return ps.getLastShownDescendant(); - } - var parent = this.getParent(); - var tree = this.getTree(); - if (parent == tree) { - return null; - } - // The root is the first node. - if (this == tree) { - return null; - } - return /** @type {Blockly.tree.BaseNode} */ (parent); -}; - -/** - * Internal method that is used to set the tree control on the node. - * @param {Blockly.tree.TreeControl} tree The tree control. - * @protected - */ -Blockly.tree.BaseNode.prototype.setTreeInternal = function(tree) { - if (this.tree != tree) { - this.tree = tree; - this.forEachChild(function(child) { child.setTreeInternal(tree); }); - } -}; diff --git a/core/components/tree/treecontrol.js b/core/components/tree/treecontrol.js deleted file mode 100644 index 97ea3e39d49..00000000000 --- a/core/components/tree/treecontrol.js +++ /dev/null @@ -1,332 +0,0 @@ -/** - * @license - * Copyright 2019 Google LLC - * SPDX-License-Identifier: Apache-2.0 - */ - -/** - * @fileoverview Definition of the Blockly.tree.TreeControl class. - * This class is similar to Closure's goog.ui.tree.TreeControl class. - * @author samelh@google.com (Sam El-Husseini) - */ -'use strict'; - -goog.provide('Blockly.tree.TreeControl'); - -goog.require('Blockly.tree.TreeNode'); -goog.require('Blockly.tree.BaseNode'); -goog.require('Blockly.utils.aria'); -goog.require('Blockly.utils.object'); -goog.require('Blockly.utils.style'); - - -/** - * An extension of the TreeControl object in closure that provides - * a way to view a hierarchical set of data. - * Similar to Closure's goog.ui.tree.TreeControl - * - * @param {Blockly.Toolbox} toolbox The parent toolbox for this tree. - * @param {!Blockly.tree.BaseNode.Config} config The configuration for the tree. - * @constructor - * @extends {Blockly.tree.BaseNode} - */ -Blockly.tree.TreeControl = function(toolbox, config) { - this.toolbox_ = toolbox; - - /** - * Click event data. - * @type {?Blockly.EventData} - * @private - */ - this.onClickWrapper_ = null; - - /** - * Key down event data. - * @type {?Blockly.EventData} - * @private - */ - this.onKeydownWrapper_ = null; - - Blockly.tree.BaseNode.call(this, '', config); - - // The root is open and selected by default. - this.expanded_ = true; - this.selected_ = true; - - /** - * Currently selected item. - * @type {Blockly.tree.BaseNode} - * @private - */ - this.selectedItem_ = this; - - /** - * A handler that's triggered before a node is selected. - * @type {?function(Blockly.tree.BaseNode):boolean} - * @private - */ - this.onBeforeSelected_ = null; - - /** - * A handler that's triggered before a node is selected. - * @type {?function(Blockly.tree.BaseNode, Blockly.tree.BaseNode):?} - * @private - */ - this.onAfterSelected_ = null; -}; -Blockly.utils.object.inherits(Blockly.tree.TreeControl, Blockly.tree.BaseNode); - -/** - * Returns the tree. - * @override - */ -Blockly.tree.TreeControl.prototype.getTree = function() { - return this; -}; - -/** - * Returns the associated toolbox. - * @return {Blockly.Toolbox} The toolbox. - * @package - */ -Blockly.tree.TreeControl.prototype.getToolbox = function() { - return this.toolbox_; -}; - -/** - * Return node depth. - * @override - */ -Blockly.tree.TreeControl.prototype.getDepth = function() { - return 0; -}; - -/** @override */ -Blockly.tree.TreeControl.prototype.setExpanded = function(expanded) { - this.expanded_ = expanded; -}; - -/** @override */ -Blockly.tree.TreeControl.prototype.getIconElement = function() { - var el = this.getRowElement(); - return el ? /** @type {Element} */ (el.firstChild) : null; -}; - -/** @override */ -Blockly.tree.TreeControl.prototype.updateExpandIcon = function() { - // no expand icon -}; - -/** @override */ -Blockly.tree.TreeControl.prototype.getRowClassName = function() { - return Blockly.tree.TreeControl.superClass_.getRowClassName.call(this) + - ' ' + this.config_.cssHideRoot; -}; - -/** - * Returns the source for the icon. - * @return {string} Src for the icon. - * @override - */ -Blockly.tree.TreeControl.prototype.getCalculatedIconClass = function() { - var expanded = this.expanded_; - if (expanded && this.expandedIconClass) { - return this.expandedIconClass; - } - var iconClass = this.iconClass; - if (!expanded && iconClass) { - return iconClass; - } - return ''; -}; - -/** - * Sets the selected item. - * @param {Blockly.tree.BaseNode} node The item to select. - * @package - */ -Blockly.tree.TreeControl.prototype.setSelectedItem = function(node) { - if (node == this.selectedItem_) { - return; - } - - if (this.onBeforeSelected_ && - !this.onBeforeSelected_.call(this.toolbox_, node)) { - return; - } - - var oldNode = this.getSelectedItem(); - - if (this.selectedItem_) { - this.selectedItem_.setSelected(false); - } - - this.selectedItem_ = node; - - if (node) { - node.setSelected(true); - } - - if (this.onAfterSelected_) { - this.onAfterSelected_.call(this.toolbox_, oldNode, node); - } -}; - -/** - * Set the handler that's triggered before a node is selected. - * @param {function(Blockly.tree.BaseNode):boolean} fn The handler - * @package - */ -Blockly.tree.TreeControl.prototype.onBeforeSelected = function(fn) { - this.onBeforeSelected_ = fn; -}; - -/** - * Set the handler that's triggered after a node is selected. - * @param {function( - * Blockly.tree.BaseNode, Blockly.tree.BaseNode):?} fn The handler - * @package - */ -Blockly.tree.TreeControl.prototype.onAfterSelected = function(fn) { - this.onAfterSelected_ = fn; -}; - -/** - * Returns the selected item. - * @return {Blockly.tree.BaseNode} The currently selected item. - * @package - */ -Blockly.tree.TreeControl.prototype.getSelectedItem = function() { - return this.selectedItem_; -}; - -/** - * Add roles and states. - * @protected - * @override - */ -Blockly.tree.TreeControl.prototype.initAccessibility = function() { - Blockly.tree.TreeControl.superClass_.initAccessibility.call(this); - - var el = /** @type {!Element} */ (this.getElement()); - Blockly.utils.aria.setRole(el, Blockly.utils.aria.Role.TREE); - Blockly.utils.aria.setState(el, - Blockly.utils.aria.State.LABELLEDBY, this.getLabelElement().id); -}; - -/** @override */ -Blockly.tree.TreeControl.prototype.enterDocument = function() { - Blockly.tree.TreeControl.superClass_.enterDocument.call(this); - var el = this.getElement(); - el.className = this.config_.cssRoot; - el.setAttribute('hideFocus', 'true'); - this.attachEvents_(); - this.initAccessibility(); -}; - -/** @override */ -Blockly.tree.TreeControl.prototype.exitDocument = function() { - Blockly.tree.TreeControl.superClass_.exitDocument.call(this); - this.detachEvents_(); -}; - -/** - * Adds the event listeners to the tree. - * @private - */ -Blockly.tree.TreeControl.prototype.attachEvents_ = function() { - var el = this.getElement(); - el.tabIndex = 0; - - this.onClickWrapper_ = Blockly.bindEventWithChecks_(el, - 'click', this, this.handleMouseEvent_); - this.onKeydownWrapper_ = Blockly.bindEvent_(el, - 'keydown', this, this.handleKeyEvent_); -}; - -/** - * Removes the event listeners from the tree. - * @private - */ -Blockly.tree.TreeControl.prototype.detachEvents_ = function() { - if (this.onClickWrapper_) { - Blockly.unbindEvent_(this.onClickWrapper_); - this.onClickWrapper_ = null; - } - if (this.onKeydownWrapper_) { - Blockly.unbindEvent_(this.onKeydownWrapper_); - this.onKeydownWrapper_ = null; - } -}; - -/** - * Handles mouse events. - * @param {!Event} e The browser event. - * @private - */ -Blockly.tree.TreeControl.prototype.handleMouseEvent_ = function(e) { - var node = this.getNodeFromEvent_(e); - if (node && e.type == 'click') { - node.onClick_(e); - } -}; - -/** - * Handles key down on the tree. - * @param {!Event} e The browser event. - * @return {boolean} The handled value. - * @private - */ -Blockly.tree.TreeControl.prototype.handleKeyEvent_ = function(e) { - // Handle navigation keystrokes. - var handled = !!(this.selectedItem_ && this.selectedItem_.onKeyDown(e)); - - if (handled) { - Blockly.utils.style.scrollIntoContainerView( - /** @type {!Element} */ (this.selectedItem_.getElement()), - /** @type {!Element} */ (this.getElement().parentNode)); - e.preventDefault(); - } - - return handled; -}; - -/** - * Finds the containing node given an event. - * @param {!Event} e The browser event. - * @return {Blockly.tree.BaseNode} The containing node or null if no node is - * found. - * @private - */ -Blockly.tree.TreeControl.prototype.getNodeFromEvent_ = function(e) { - // find the right node - var node = null; - var target = e.target; - while (target) { - var id = target.id; - node = Blockly.tree.BaseNode.allNodes[id]; - if (node) { - return node; - } - if (target == this.getElement()) { - break; - } - // Don't bubble if we hit a group. See issue #714. - if (target.getAttribute('role') == Blockly.utils.aria.Role.GROUP) { - return null; - } - target = target.parentNode; - } - return null; -}; - -/** - * Creates a new tree node using the same config as the root. - * @param {string=} opt_content The content of the node label. - * @return {!Blockly.tree.TreeNode} The new item. - * @package - */ -Blockly.tree.TreeControl.prototype.createNode = function(opt_content) { - return new Blockly.tree.TreeNode( - this.toolbox_, opt_content || '', this.config_); -}; diff --git a/core/components/tree/treenode.js b/core/components/tree/treenode.js deleted file mode 100644 index c6aa3f2d213..00000000000 --- a/core/components/tree/treenode.js +++ /dev/null @@ -1,172 +0,0 @@ -/** - * @license - * Copyright 2019 Google LLC - * SPDX-License-Identifier: Apache-2.0 - */ - -/** - * @fileoverview Definition of the Blockly.tree.TreeNode class. - * This class is similar to Closure's goog.ui.tree.TreeNode class. - * @author samelh@google.com (Sam El-Husseini) - */ -'use strict'; - -goog.provide('Blockly.tree.TreeNode'); - -goog.require('Blockly.tree.BaseNode'); -goog.require('Blockly.utils.object'); -goog.require('Blockly.utils.KeyCodes'); - - -/** - * A single node in the tree, customized for Blockly's UI. - * Similar to Closure's goog.ui.tree.TreeNode - * - * @param {Blockly.Toolbox} toolbox The parent toolbox for this tree. - * @param {string} content The content of the node label treated as - * plain-text and will be HTML escaped. - * @param {!Blockly.tree.BaseNode.Config} config The configuration for the tree. - * @constructor - * @extends {Blockly.tree.BaseNode} - */ -Blockly.tree.TreeNode = function(toolbox, content, config) { - this.toolbox_ = toolbox; - Blockly.tree.BaseNode.call(this, content, config); - - /** - * A handler that's triggered when the size of node has changed. - * @type {?function():?} - * @private - */ - this.onSizeChanged_ = null; -}; -Blockly.utils.object.inherits(Blockly.tree.TreeNode, Blockly.tree.BaseNode); - -/** - * Returns the tree. - * @return {?Blockly.tree.TreeControl} The tree. - * @override - */ -Blockly.tree.TreeNode.prototype.getTree = function() { - if (this.tree) { - return this.tree; - } - var parent = this.getParent(); - if (parent) { - var tree = parent.getTree(); - if (tree) { - this.setTreeInternal(tree); - return tree; - } - } - return null; -}; - -/** - * Returns the source for the icon. - * @return {string} Src for the icon. - * @override - */ -Blockly.tree.TreeNode.prototype.getCalculatedIconClass = function() { - var expanded = this.expanded_; - if (expanded && this.expandedIconClass) { - return this.expandedIconClass; - } - var iconClass = this.iconClass; - if (!expanded && iconClass) { - return iconClass; - } - - // fall back on default icons - var config = this.config_; - if (this.hasChildren()) { - if (expanded && config.cssExpandedFolderIcon) { - return config.cssTreeIcon + ' ' + config.cssExpandedFolderIcon; - } else if (!expanded && config.cssCollapsedFolderIcon) { - return config.cssTreeIcon + ' ' + config.cssCollapsedFolderIcon; - } - } else { - if (config.cssFileIcon) { - return config.cssTreeIcon + ' ' + config.cssFileIcon; - } - } - return ''; -}; - -/** - * Expand or collapse the node on mouse click. - * @param {!Event} _e The browser event. - * @override - */ -Blockly.tree.TreeNode.prototype.onClick_ = function(_e) { - // Expand icon. - if (this.hasChildren()) { - this.toggle(); - this.select(); - } else if (this.isSelected()) { - this.getTree().setSelectedItem(null); - } else { - this.select(); - } - this.updateRow(); -}; - - -/** - * Remap event.keyCode in horizontalLayout so that arrow - * keys work properly and call original onKeyDown handler. - * @param {!Event} e The browser event. - * @return {boolean} The handled value. - * @override - * @private - */ -Blockly.tree.TreeNode.prototype.onKeyDown = function(e) { - if (this.tree.toolbox_.horizontalLayout_) { - var map = {}; - var next = Blockly.utils.KeyCodes.DOWN; - var prev = Blockly.utils.KeyCodes.UP; - map[Blockly.utils.KeyCodes.RIGHT] = this.rightToLeft_ ? prev : next; - map[Blockly.utils.KeyCodes.LEFT] = this.rightToLeft_ ? next : prev; - map[Blockly.utils.KeyCodes.UP] = Blockly.utils.KeyCodes.LEFT; - map[Blockly.utils.KeyCodes.DOWN] = Blockly.utils.KeyCodes.RIGHT; - - var newKeyCode = map[e.keyCode]; - Object.defineProperties(e, { - keyCode: {value: newKeyCode || e.keyCode} - }); - } - return Blockly.tree.TreeNode.superClass_.onKeyDown.call(this, e); -}; - -/** - * Set the handler that's triggered when the size of node has changed. - * @param {function():?} fn The handler - * @package - */ -Blockly.tree.TreeNode.prototype.onSizeChanged = function(fn) { - this.onSizeChanged_ = fn; -}; - -/** - * Trigger a size changed event if a handler exists. - * @private - */ -Blockly.tree.TreeNode.prototype.resizeToolbox_ = function() { - if (this.onSizeChanged_) { - this.onSizeChanged_.call(this.toolbox_); - } -}; - -/** - * Resize the toolbox when a node is expanded. - * @override - */ -Blockly.tree.TreeNode.prototype.doNodeExpanded = - Blockly.tree.TreeNode.prototype.resizeToolbox_; - -/** - * Resize the toolbox when a node is collapsed. - * @override - */ -Blockly.tree.TreeNode.prototype.doNodeCollapsed = - Blockly.tree.TreeNode.prototype.resizeToolbox_; diff --git a/core/connection.js b/core/connection.js index 1fe595ad7ed..6077d0cb2a2 100644 --- a/core/connection.js +++ b/core/connection.js @@ -14,9 +14,11 @@ goog.provide('Blockly.Connection'); goog.require('Blockly.Events'); goog.require('Blockly.Events.BlockMove'); +goog.require('Blockly.utils.deprecation'); goog.require('Blockly.Xml'); goog.requireType('Blockly.IASTNodeLocationWithBlock'); +goog.requireType('Blockly.IConnectionChecker'); /** @@ -46,6 +48,7 @@ Blockly.Connection.REASON_TARGET_NULL = 3; Blockly.Connection.REASON_CHECKS_FAILED = 4; Blockly.Connection.REASON_DIFFERENT_WORKSPACES = 5; Blockly.Connection.REASON_SHADOW_PARENT = 6; +Blockly.Connection.REASON_DRAG_CHECKS_FAILED = 7; /** * Connection this connection connects to. Null if not connected. @@ -108,11 +111,12 @@ Blockly.Connection.prototype.connect_ = function(childConnection) { var orphanBlock = parentConnection.targetBlock(); var shadowDom = parentConnection.getShadowDom(); // Temporarily set the shadow DOM to null so it does not respawn. - parentConnection.setShadowDom(null); + parentConnection.shadowDom_ = null; // Displaced shadow blocks dissolve rather than reattaching or bumping. if (orphanBlock.isShadow()) { // Save the shadow block so that field values are preserved. - shadowDom = Blockly.Xml.blockToDom(orphanBlock); + // This cast assumes that a block can not be both a shadow block and an insertion marker. + shadowDom = /** @type {!Element} */ (Blockly.Xml.blockToDom(orphanBlock)); orphanBlock.dispose(false); orphanBlock = null; } else if (parentConnection.type == Blockly.INPUT_VALUE) { @@ -145,8 +149,9 @@ Blockly.Connection.prototype.connect_ = function(childConnection) { if (nextBlock && !nextBlock.isShadow()) { newBlock = nextBlock; } else { - if (orphanBlock.previousConnection.checkType( - newBlock.nextConnection)) { + var checker = orphanBlock.workspace.connectionChecker; + if (checker.canConnect( + orphanBlock.previousConnection, newBlock.nextConnection, false)) { newBlock.nextConnection.connect(orphanBlock.previousConnection); orphanBlock = null; } @@ -175,7 +180,7 @@ Blockly.Connection.prototype.connect_ = function(childConnection) { } } // Restore the shadow DOM. - parentConnection.setShadowDom(shadowDom); + parentConnection.shadowDom_ = shadowDom; } var event; @@ -200,12 +205,11 @@ Blockly.Connection.prototype.dispose = function() { // isConnected returns true for shadows and non-shadows. if (this.isConnected()) { + // Destroy the attached shadow block & its children (if it exists). this.setShadowDom(null); + var targetBlock = this.targetBlock(); - if (targetBlock.isShadow()) { - // Destroy the attached shadow block & its children. - targetBlock.dispose(false); - } else { + if (targetBlock) { // Disconnect the attached normal block. targetBlock.unplug(); } @@ -245,30 +249,17 @@ Blockly.Connection.prototype.isConnected = function() { * @param {Blockly.Connection} target Connection to check compatibility with. * @return {number} Blockly.Connection.CAN_CONNECT if the connection is legal, * an error code otherwise. + * @deprecated July 2020. Will be deleted July 2021. Use the workspace's + * connectionChecker instead. */ Blockly.Connection.prototype.canConnectWithReason = function(target) { - if (!target) { - return Blockly.Connection.REASON_TARGET_NULL; - } - if (this.isSuperior()) { - var blockA = this.sourceBlock_; - var blockB = target.getSourceBlock(); - } else { - var blockB = this.sourceBlock_; - var blockA = target.getSourceBlock(); - } - if (blockA && blockA == blockB) { - return Blockly.Connection.REASON_SELF_CONNECTION; - } else if (target.type != Blockly.OPPOSITE_TYPE[this.type]) { - return Blockly.Connection.REASON_WRONG_TYPE; - } else if (blockA && blockB && blockA.workspace !== blockB.workspace) { - return Blockly.Connection.REASON_DIFFERENT_WORKSPACES; - } else if (!this.checkType(target)) { - return Blockly.Connection.REASON_CHECKS_FAILED; - } else if (blockA.isShadow() && !blockB.isShadow()) { - return Blockly.Connection.REASON_SHADOW_PARENT; - } - return Blockly.Connection.CAN_CONNECT; + Blockly.utils.deprecation.warn( + 'Connection.prototype.canConnectWithReason', + 'July 2020', + 'July 2021', + 'the workspace\'s connection checker'); + return this.getConnectionChecker().canConnectWithReason( + this, target, false); }; /** @@ -277,130 +268,46 @@ Blockly.Connection.prototype.canConnectWithReason = function(target) { * @param {Blockly.Connection} target The connection to check compatibility * with. * @package + * @deprecated July 2020. Will be deleted July 2021. Use the workspace's + * connectionChecker instead. */ Blockly.Connection.prototype.checkConnection = function(target) { - switch (this.canConnectWithReason(target)) { - case Blockly.Connection.CAN_CONNECT: - break; - case Blockly.Connection.REASON_SELF_CONNECTION: - throw Error('Attempted to connect a block to itself.'); - case Blockly.Connection.REASON_DIFFERENT_WORKSPACES: - // Usually this means one block has been deleted. - throw Error('Blocks not on same workspace.'); - case Blockly.Connection.REASON_WRONG_TYPE: - throw Error('Attempt to connect incompatible types.'); - case Blockly.Connection.REASON_TARGET_NULL: - throw Error('Target connection is null.'); - case Blockly.Connection.REASON_CHECKS_FAILED: - var msg = 'Connection checks failed. '; - msg += this + ' expected ' + this.check_ + ', found ' + target.check_; - throw Error(msg); - case Blockly.Connection.REASON_SHADOW_PARENT: - throw Error('Connecting non-shadow to shadow block.'); - default: - throw Error('Unknown connection failure: this should never happen!'); + Blockly.utils.deprecation.warn( + 'Connection.prototype.checkConnection', + 'July 2020', + 'July 2021', + 'the workspace\'s connection checker'); + var checker = this.getConnectionChecker(); + var reason = checker.canConnectWithReason(this, target, false); + if (reason != Blockly.Connection.CAN_CONNECT) { + throw new Error(checker.getErrorMessage(reason, this, target)); } }; /** - * Check if the two connections can be dragged to connect to each other. - * This is used by the connection database when searching for the closest - * connection. - * @param {!Blockly.Connection} candidate A nearby connection to check, which - * must be a previous connection. - * @return {boolean} True if the connection is allowed, false otherwise. - * @private + * Get the workspace's connection type checker object. + * @return {!Blockly.IConnectionChecker} The connection type checker for the + * source block's workspace. + * @package */ -Blockly.Connection.prototype.canConnectToPrevious_ = function(candidate) { - if (this.targetConnection) { - // This connection is already occupied. - // A next connection will never disconnect itself mid-drag. - return false; - } - - // Don't let blocks try to connect to themselves or ones they nest. - if (Blockly.draggingConnections.indexOf(candidate) != -1) { - return false; - } - - if (!candidate.targetConnection) { - return true; - } - - var targetBlock = candidate.targetBlock(); - // If it is connected to a real block, game over. - if (!targetBlock.isInsertionMarker()) { - return false; - } - // If it's connected to an insertion marker but that insertion marker - // is the first block in a stack, it's still fine. If that insertion - // marker is in the middle of a stack, it won't work. - return !targetBlock.getPreviousBlock(); +Blockly.Connection.prototype.getConnectionChecker = function() { + return this.sourceBlock_.workspace.connectionChecker; }; /** * Check if the two connections can be dragged to connect to each other. * @param {!Blockly.Connection} candidate A nearby connection to check. * @return {boolean} True if the connection is allowed, false otherwise. + * @deprecated July 2020. Will be deleted July 2021. Use the workspace's + * connectionChecker instead. */ Blockly.Connection.prototype.isConnectionAllowed = function(candidate) { - // Don't consider insertion markers. - if (candidate.sourceBlock_.isInsertionMarker()) { - return false; - } - // Type checking. - var canConnect = this.canConnectWithReason(candidate); - if (canConnect != Blockly.Connection.CAN_CONNECT) { - return false; - } - - switch (candidate.type) { - case Blockly.PREVIOUS_STATEMENT: - return this.canConnectToPrevious_(candidate); - case Blockly.OUTPUT_VALUE: { - // Don't offer to connect an already connected left (male) value plug to - // an available right (female) value plug. - if ((candidate.isConnected() && - !candidate.targetBlock().isInsertionMarker()) || - this.isConnected()) { - return false; - } - break; - } - case Blockly.INPUT_VALUE: { - // Offering to connect the left (male) of a value block to an already - // connected value pair is ok, we'll splice it in. - // However, don't offer to splice into an immovable block. - if (candidate.isConnected() && - !candidate.targetBlock().isMovable() && - !candidate.targetBlock().isShadow()) { - return false; - } - break; - } - case Blockly.NEXT_STATEMENT: { - // Don't let a block with no next connection bump other blocks out of the - // stack. But covering up a shadow block or stack of shadow blocks is - // fine. Similarly, replacing a terminal statement with another terminal - // statement is allowed. - if (candidate.isConnected() && - !this.sourceBlock_.nextConnection && - !candidate.targetBlock().isShadow() && - candidate.targetBlock().nextConnection) { - return false; - } - break; - } - default: - throw Error('Unknown connection type in isConnectionAllowed'); - } - - // Don't let blocks try to connect to themselves or ones they nest. - if (Blockly.draggingConnections.indexOf(candidate) != -1) { - return false; - } - - return true; + Blockly.utils.deprecation.warn( + 'Connection.prototype.isConnectionAllowed', + 'July 2020', + 'July 2021', + 'the workspace\'s connection checker'); + return this.getConnectionChecker().canConnect(this, candidate, true); }; /** @@ -422,21 +329,24 @@ Blockly.Connection.prototype.connect = function(otherConnection) { // Already connected together. NOP. return; } - this.checkConnection(otherConnection); - var eventGroup = Blockly.Events.getGroup(); - if (!eventGroup) { - Blockly.Events.setGroup(true); - } - // Determine which block is superior (higher in the source stack). - if (this.isSuperior()) { - // Superior block. - this.connect_(otherConnection); - } else { - // Inferior block. - otherConnection.connect_(this); - } - if (!eventGroup) { - Blockly.Events.setGroup(false); + + var checker = this.getConnectionChecker(); + if (checker.canConnect(this, otherConnection, false)) { + var eventGroup = Blockly.Events.getGroup(); + if (!eventGroup) { + Blockly.Events.setGroup(true); + } + // Determine which block is superior (higher in the source stack). + if (this.isSuperior()) { + // Superior block. + this.connect_(otherConnection); + } else { + // Inferior block. + otherConnection.connect_(this); + } + if (!eventGroup) { + Blockly.Events.setGroup(false); + } } }; @@ -465,10 +375,12 @@ Blockly.Connection.connectReciprocally_ = function(first, second) { */ Blockly.Connection.singleConnection_ = function(block, orphanBlock) { var connection = null; + var output = orphanBlock.outputConnection; for (var i = 0; i < block.inputList.length; i++) { var thisConnection = block.inputList[i].connection; + var typeChecker = output.getConnectionChecker(); if (thisConnection && thisConnection.type == Blockly.INPUT_VALUE && - orphanBlock.outputConnection.checkType(thisConnection)) { + typeChecker.canConnect(output, thisConnection, false)) { if (connection) { return null; // More than one connection. } @@ -532,7 +444,10 @@ Blockly.Connection.prototype.disconnect = function() { Blockly.Events.setGroup(true); } this.disconnectInternal_(parentBlock, childBlock); - parentConnection.respawnShadow_(); + if (!childBlock.isShadow()) { + // If we were disconnecting a shadow, no need to spawn a new one. + parentConnection.respawnShadow_(); + } if (!eventGroup) { Blockly.Events.setGroup(false); } @@ -567,7 +482,7 @@ Blockly.Connection.prototype.disconnectInternal_ = function(parentBlock, Blockly.Connection.prototype.respawnShadow_ = function() { var parentBlock = this.getSourceBlock(); var shadow = this.getShadowDom(); - if (parentBlock.workspace && shadow && Blockly.Events.recordUndo) { + if (parentBlock.workspace && shadow) { var blockShadow = Blockly.Xml.domToBlock(shadow, parentBlock.workspace); if (blockShadow.outputConnection) { @@ -596,20 +511,17 @@ Blockly.Connection.prototype.targetBlock = function() { * value type system. E.g. square_root("Hello") is not compatible. * @param {!Blockly.Connection} otherConnection Connection to compare against. * @return {boolean} True if the connections share a type. + * @deprecated July 2020. Will be deleted July 2021. Use the workspace's + * connectionChecker instead. */ Blockly.Connection.prototype.checkType = function(otherConnection) { - if (!this.check_ || !otherConnection.check_) { - // One or both sides are promiscuous enough that anything will fit. - return true; - } - // Find any intersection in the check lists. - for (var i = 0; i < this.check_.length; i++) { - if (otherConnection.check_.indexOf(this.check_[i]) != -1) { - return true; - } - } - // No intersection. - return false; + Blockly.utils.deprecation.warn( + 'Connection.prototype.checkType', + 'October 2019', + 'January 2021', + 'the workspace\'s connection checker'); + return this.getConnectionChecker().canConnect(this, otherConnection, + false); }; /** @@ -618,12 +530,16 @@ Blockly.Connection.prototype.checkType = function(otherConnection) { * @param {!Blockly.Connection} otherConnection Connection to compare against. * @return {boolean} True if the connections share a type. * @private - * @deprecated October 2019, use connection.checkType instead. + * @deprecated October 2019. Will be deleted January 2021. Use the workspace's + * connectionChecker instead. * @suppress {unusedPrivateMembers} */ Blockly.Connection.prototype.checkType_ = function(otherConnection) { - console.warn('Deprecated call to Blockly.Connection.prototype.checkType_, ' + - 'use Blockly.Connection.prototype.checkType instead.'); + Blockly.utils.deprecation.warn( + 'Connection.prototype.checkType_', + 'October 2019', + 'January 2021', + 'the workspace\'s connection checker'); return this.checkType(otherConnection); }; @@ -634,7 +550,8 @@ Blockly.Connection.prototype.checkType_ = function(otherConnection) { Blockly.Connection.prototype.onCheckChanged_ = function() { // The new value type may not be compatible with the existing connection. if (this.isConnected() && (!this.targetConnection || - !this.checkType(this.targetConnection))) { + !this.getConnectionChecker().canConnect( + this, this.targetConnection, false))) { var child = this.isSuperior() ? this.targetBlock() : this.sourceBlock_; child.unplug(); } @@ -672,15 +589,23 @@ Blockly.Connection.prototype.getCheck = function() { }; /** - * Change a connection's shadow block. + * Changes the connection's shadow block. * @param {Element} shadow DOM representation of a block or null. */ Blockly.Connection.prototype.setShadowDom = function(shadow) { this.shadowDom_ = shadow; + var target = this.targetBlock(); + if (!target) { + this.respawnShadow_(); + } else if (target.isShadow()) { + // The disconnect from dispose will automatically generate the new shadow. + target.dispose(false); + this.respawnShadow_(); + } }; /** - * Return a connection's shadow block. + * Returns the xml representation of the connection's shadow block. * @return {Element} Shadow DOM representation of a block or null. */ Blockly.Connection.prototype.getShadowDom = function() { diff --git a/core/connection_checker.js b/core/connection_checker.js new file mode 100644 index 00000000000..d4056064c86 --- /dev/null +++ b/core/connection_checker.js @@ -0,0 +1,285 @@ +/** + * @license + * Copyright 2020 Google LLC + * SPDX-License-Identifier: Apache-2.0 + */ + +/** + * @fileoverview An object that encapsulates logic for checking whether a potential + * connection is safe and valid. + * @author fenichel@google.com (Rachel Fenichel) + */ +'use strict'; + +goog.provide('Blockly.ConnectionChecker'); + +goog.require('Blockly.registry'); + +goog.requireType('Blockly.Connection'); +goog.requireType('Blockly.IConnectionChecker'); + + +/** + * Class for connection type checking logic. + * @implements {Blockly.IConnectionChecker} + * @constructor + */ +Blockly.ConnectionChecker = function() { +}; + +/** + * Check whether the current connection can connect with the target + * connection. + * @param {Blockly.Connection} a Connection to check compatibility with. + * @param {Blockly.Connection} b Connection to check compatibility with. + * @param {boolean} isDragging True if the connection is being made by dragging + * a block. + * @param {number=} opt_distance The max allowable distance between the + * connections for drag checks. + * @return {boolean} Whether the connection is legal. + * @public + */ +Blockly.ConnectionChecker.prototype.canConnect = function(a, b, + isDragging, opt_distance) { + return this.canConnectWithReason(a, b, isDragging, opt_distance) == + Blockly.Connection.CAN_CONNECT; +}; + +/** + * Checks whether the current connection can connect with the target + * connection, and return an error code if there are problems. + * @param {Blockly.Connection} a Connection to check compatibility with. + * @param {Blockly.Connection} b Connection to check compatibility with. + * @param {boolean} isDragging True if the connection is being made by dragging + * a block. + * @param {number=} opt_distance The max allowable distance between the + * connections for drag checks. + * @return {number} Blockly.Connection.CAN_CONNECT if the connection is legal, + * an error code otherwise. + * @public + */ +Blockly.ConnectionChecker.prototype.canConnectWithReason = function( + a, b, isDragging, opt_distance) { + var safety = this.doSafetyChecks(a, b); + if (safety != Blockly.Connection.CAN_CONNECT) { + return safety; + } + + // If the safety checks passed, both connections are non-null. + var connOne = /** @type {!Blockly.Connection} **/ (a); + var connTwo = /** @type {!Blockly.Connection} **/ (b); + if (!this.doTypeChecks(connOne, connTwo)) { + return Blockly.Connection.REASON_CHECKS_FAILED; + } + + if (isDragging && + !this.doDragChecks( + /** @type {!Blockly.RenderedConnection} **/ (a), + /** @type {!Blockly.RenderedConnection} **/ (b), + opt_distance || 0)) { + return Blockly.Connection.REASON_DRAG_CHECKS_FAILED; + } + + return Blockly.Connection.CAN_CONNECT; +}; + +/** + * Helper method that translates a connection error code into a string. + * @param {number} errorCode The error code. + * @param {Blockly.Connection} a One of the two connections being checked. + * @param {Blockly.Connection} b The second of the two connections being + * checked. + * @return {string} A developer-readable error string. + * @public + */ +Blockly.ConnectionChecker.prototype.getErrorMessage = function(errorCode, + a, b) { + switch (errorCode) { + case Blockly.Connection.REASON_SELF_CONNECTION: + return 'Attempted to connect a block to itself.'; + case Blockly.Connection.REASON_DIFFERENT_WORKSPACES: + // Usually this means one block has been deleted. + return 'Blocks not on same workspace.'; + case Blockly.Connection.REASON_WRONG_TYPE: + return 'Attempt to connect incompatible types.'; + case Blockly.Connection.REASON_TARGET_NULL: + return 'Target connection is null.'; + case Blockly.Connection.REASON_CHECKS_FAILED: + var connOne = /** @type {!Blockly.Connection} **/ (a); + var connTwo = /** @type {!Blockly.Connection} **/ (b); + var msg = 'Connection checks failed. '; + msg += connOne + ' expected ' + connOne.getCheck() + ', found ' + connTwo.getCheck(); + return msg; + case Blockly.Connection.REASON_SHADOW_PARENT: + return 'Connecting non-shadow to shadow block.'; + case Blockly.Connection.REASON_DRAG_CHECKS_FAILED: + return 'Drag checks failed.'; + default: + return 'Unknown connection failure: this should never happen!'; + } +}; + +/** + * Check that connecting the given connections is safe, meaning that it would + * not break any of Blockly's basic assumptions (e.g. no self connections). + * @param {Blockly.Connection} a The first of the connections to check. + * @param {Blockly.Connection} b The second of the connections to check. + * @return {number} An enum with the reason this connection is safe or unsafe. + * @public + */ +Blockly.ConnectionChecker.prototype.doSafetyChecks = function(a, b) { + if (!a || !b) { + return Blockly.Connection.REASON_TARGET_NULL; + } + if (a.isSuperior()) { + var blockA = a.getSourceBlock(); + var blockB = b.getSourceBlock(); + } else { + var blockB = a.getSourceBlock(); + var blockA = b.getSourceBlock(); + } + if (blockA == blockB) { + return Blockly.Connection.REASON_SELF_CONNECTION; + } else if (b.type != Blockly.OPPOSITE_TYPE[a.type]) { + return Blockly.Connection.REASON_WRONG_TYPE; + } else if (blockA.workspace !== blockB.workspace) { + return Blockly.Connection.REASON_DIFFERENT_WORKSPACES; + } else if (blockA.isShadow() && !blockB.isShadow()) { + return Blockly.Connection.REASON_SHADOW_PARENT; + } + return Blockly.Connection.CAN_CONNECT; +}; + +/** + * Check whether this connection is compatible with another connection with + * respect to the value type system. E.g. square_root("Hello") is not + * compatible. + * @param {!Blockly.Connection} a Connection to compare. + * @param {!Blockly.Connection} b Connection to compare against. + * @return {boolean} True if the connections share a type. + * @public + */ +Blockly.ConnectionChecker.prototype.doTypeChecks = function(a, b) { + var checkArrayOne = a.getCheck(); + var checkArrayTwo = b.getCheck(); + + if (!checkArrayOne || !checkArrayTwo) { + // One or both sides are promiscuous enough that anything will fit. + return true; + } + // Find any intersection in the check lists. + for (var i = 0; i < checkArrayOne.length; i++) { + if (checkArrayTwo.indexOf(checkArrayOne[i]) != -1) { + return true; + } + } + // No intersection. + return false; +}; + +/** + * Check whether this connection can be made by dragging. + * @param {!Blockly.RenderedConnection} a Connection to compare. + * @param {!Blockly.RenderedConnection} b Connection to compare against. + * @param {number} distance The maximum allowable distance between connections. + * @return {boolean} True if the connection is allowed during a drag. + * @public + */ +Blockly.ConnectionChecker.prototype.doDragChecks = function(a, b, distance) { + if (a.distanceFrom(b) > distance) { + return false; + } + + // Don't consider insertion markers. + if (b.getSourceBlock().isInsertionMarker()) { + return false; + } + + switch (b.type) { + case Blockly.PREVIOUS_STATEMENT: + return this.canConnectToPrevious_(a, b); + case Blockly.OUTPUT_VALUE: { + // Don't offer to connect an already connected left (male) value plug to + // an available right (female) value plug. + if ((b.isConnected() && + !b.targetBlock().isInsertionMarker()) || + a.isConnected()) { + return false; + } + break; + } + case Blockly.INPUT_VALUE: { + // Offering to connect the left (male) of a value block to an already + // connected value pair is ok, we'll splice it in. + // However, don't offer to splice into an immovable block. + if (b.isConnected() && + !b.targetBlock().isMovable() && + !b.targetBlock().isShadow()) { + return false; + } + break; + } + case Blockly.NEXT_STATEMENT: { + // Don't let a block with no next connection bump other blocks out of the + // stack. But covering up a shadow block or stack of shadow blocks is + // fine. Similarly, replacing a terminal statement with another terminal + // statement is allowed. + if (b.isConnected() && + !a.getSourceBlock().nextConnection && + !b.targetBlock().isShadow() && + b.targetBlock().nextConnection) { + return false; + } + break; + } + default: + // Unexpected connection type. + return false; + } + + // Don't let blocks try to connect to themselves or ones they nest. + if (Blockly.draggingConnections.indexOf(b) != -1) { + return false; + } + + return true; +}; + +/** + * Helper function for drag checking. + * @param {!Blockly.Connection} a The connection to check, which must be a + * statement input or next connection. + * @param {!Blockly.Connection} b A nearby connection to check, which + * must be a previous connection. + * @return {boolean} True if the connection is allowed, false otherwise. + * @protected + */ +Blockly.ConnectionChecker.prototype.canConnectToPrevious_ = function(a, b) { + if (a.targetConnection) { + // This connection is already occupied. + // A next connection will never disconnect itself mid-drag. + return false; + } + + // Don't let blocks try to connect to themselves or ones they nest. + if (Blockly.draggingConnections.indexOf(b) != -1) { + return false; + } + + if (!b.targetConnection) { + return true; + } + + var targetBlock = b.targetBlock(); + // If it is connected to a real block, game over. + if (!targetBlock.isInsertionMarker()) { + return false; + } + // If it's connected to an insertion marker but that insertion marker + // is the first block in a stack, it's still fine. If that insertion + // marker is in the middle of a stack, it won't work. + return !targetBlock.getPreviousBlock(); +}; + +Blockly.registry.register(Blockly.registry.Type.CONNECTION_CHECKER, + Blockly.registry.DEFAULT, Blockly.ConnectionChecker); diff --git a/core/connection_db.js b/core/connection_db.js index 5d71e39c047..d347ddbe0f8 100644 --- a/core/connection_db.js +++ b/core/connection_db.js @@ -16,20 +16,32 @@ goog.provide('Blockly.ConnectionDB'); goog.require('Blockly.RenderedConnection'); +goog.requireType('Blockly.IConnectionChecker'); + /** * Database of connections. * Connections are stored in order of their vertical component. This way * connections in an area may be looked up quickly using a binary search. + * @param {!Blockly.IConnectionChecker} checker The workspace's + * connection type checker, used to decide if connections are valid during a + * drag. * @constructor */ -Blockly.ConnectionDB = function() { +Blockly.ConnectionDB = function(checker) { /** * Array of connections sorted by y position in workspace units. * @type {!Array.} * @private */ this.connections_ = []; + /** + * The workspace's connection type checker, used to decide if connections are + * valid during a drag. + * @type {!Blockly.IConnectionChecker} + * @private + */ + this.connectionChecker_ = checker; }; /** @@ -240,7 +252,7 @@ Blockly.ConnectionDB.prototype.searchForClosest = function(conn, maxRadius, var pointerMin = closestIndex - 1; while (pointerMin >= 0 && this.isInYRange_(pointerMin, conn.y, maxRadius)) { temp = this.connections_[pointerMin]; - if (conn.isConnectionAllowed(temp, bestRadius)) { + if (this.connectionChecker_.canConnect(conn, temp, true, bestRadius)) { bestConnection = temp; bestRadius = temp.distanceFrom(conn); } @@ -251,7 +263,7 @@ Blockly.ConnectionDB.prototype.searchForClosest = function(conn, maxRadius, while (pointerMax < this.connections_.length && this.isInYRange_(pointerMax, conn.y, maxRadius)) { temp = this.connections_[pointerMax]; - if (conn.isConnectionAllowed(temp, bestRadius)) { + if (this.connectionChecker_.canConnect(conn, temp, true, bestRadius)) { bestConnection = temp; bestRadius = temp.distanceFrom(conn); } @@ -268,14 +280,16 @@ Blockly.ConnectionDB.prototype.searchForClosest = function(conn, maxRadius, /** * Initialize a set of connection DBs for a workspace. + * @param {!Blockly.IConnectionChecker} checker The workspace's + * connection checker, used to decide if connections are valid during a drag. * @return {!Array.} Array of databases. */ -Blockly.ConnectionDB.init = function() { +Blockly.ConnectionDB.init = function(checker) { // Create four databases, one for each connection type. var dbList = []; - dbList[Blockly.INPUT_VALUE] = new Blockly.ConnectionDB(); - dbList[Blockly.OUTPUT_VALUE] = new Blockly.ConnectionDB(); - dbList[Blockly.NEXT_STATEMENT] = new Blockly.ConnectionDB(); - dbList[Blockly.PREVIOUS_STATEMENT] = new Blockly.ConnectionDB(); + dbList[Blockly.INPUT_VALUE] = new Blockly.ConnectionDB(checker); + dbList[Blockly.OUTPUT_VALUE] = new Blockly.ConnectionDB(checker); + dbList[Blockly.NEXT_STATEMENT] = new Blockly.ConnectionDB(checker); + dbList[Blockly.PREVIOUS_STATEMENT] = new Blockly.ConnectionDB(checker); return dbList; }; diff --git a/core/contextmenu.js b/core/contextmenu.js index f4b10dbfc73..8cd4541008a 100644 --- a/core/contextmenu.js +++ b/core/contextmenu.js @@ -89,7 +89,7 @@ Blockly.ContextMenu.populate_ = function(options, rtl) { var actionHandler = function(_menuItem) { var option = this; Blockly.ContextMenu.hide(); - option.callback(); + option.callback(option.scope); }; menuItem.onAction(actionHandler, option); } @@ -203,98 +203,6 @@ Blockly.ContextMenu.callbackFactory = function(block, xml) { // Helper functions for creating context menu options. -/** - * Make a context menu option for deleting the current block. - * @param {!Blockly.BlockSvg} block The block where the right-click originated. - * @return {!Object} A menu option, containing text, enabled, and a callback. - * @package - */ -Blockly.ContextMenu.blockDeleteOption = function(block) { - // Option to delete this block but not blocks lower in the stack. - // Count the number of blocks that are nested in this block. - var descendantCount = block.getDescendants(false).length; - var nextBlock = block.getNextBlock(); - if (nextBlock) { - // Blocks in the current stack would survive this block's deletion. - descendantCount -= nextBlock.getDescendants(false).length; - } - var deleteOption = { - text: descendantCount == 1 ? Blockly.Msg['DELETE_BLOCK'] : - Blockly.Msg['DELETE_X_BLOCKS'].replace('%1', String(descendantCount)), - enabled: true, - callback: function() { - Blockly.Events.setGroup(true); - block.dispose(true, true); - Blockly.Events.setGroup(false); - } - }; - return deleteOption; -}; - -/** - * Make a context menu option for showing help for the current block. - * @param {!Blockly.BlockSvg} block The block where the right-click originated. - * @return {!Object} A menu option, containing text, enabled, and a callback. - * @package - */ -Blockly.ContextMenu.blockHelpOption = function(block) { - var url = (typeof block.helpUrl == 'function') ? - block.helpUrl() : block.helpUrl; - var helpOption = { - enabled: !!url, - text: Blockly.Msg['HELP'], - callback: function() { - block.showHelp(); - } - }; - return helpOption; -}; - -/** - * Make a context menu option for duplicating the current block. - * @param {!Blockly.BlockSvg} block The block where the right-click originated. - * @return {!Object} A menu option, containing text, enabled, and a callback. - * @package - */ -Blockly.ContextMenu.blockDuplicateOption = function(block) { - var enabled = block.isDuplicatable(); - var duplicateOption = { - text: Blockly.Msg['DUPLICATE_BLOCK'], - enabled: enabled, - callback: function() { - Blockly.duplicate(block); - } - }; - return duplicateOption; -}; - -/** - * Make a context menu option for adding or removing comments on the current - * block. - * @param {!Blockly.BlockSvg} block The block where the right-click originated. - * @return {!Object} A menu option, containing text, enabled, and a callback. - * @package - */ -Blockly.ContextMenu.blockCommentOption = function(block) { - var commentOption = { - enabled: !Blockly.utils.userAgent.IE - }; - // If there's already a comment, add an option to delete it. - if (block.getCommentIcon()) { - commentOption.text = Blockly.Msg['REMOVE_COMMENT']; - commentOption.callback = function() { - block.setCommentText(null); - }; - } else { - // If there's no comment, add an option to create a comment. - commentOption.text = Blockly.Msg['ADD_COMMENT']; - commentOption.callback = function() { - block.setCommentText(''); - }; - } - return commentOption; -}; - /** * Make a context menu option for deleting the current workspace comment. * @param {!Blockly.WorkspaceCommentSvg} comment The workspace comment where the diff --git a/core/contextmenu_items.js b/core/contextmenu_items.js new file mode 100644 index 00000000000..560c6405e1d --- /dev/null +++ b/core/contextmenu_items.js @@ -0,0 +1,534 @@ +/** + * @license + * Copyright 2020 Google LLC + * SPDX-License-Identifier: Apache-2.0 + */ + +/** + * @fileoverview Registers default context menu items. + * @author maribethb@google.com (Maribeth Bottorff) + */ +'use strict'; + +/** + * @name Blockly.ContextMenuItems + * @namespace + */ +goog.provide('Blockly.ContextMenuItems'); + +goog.requireType('Blockly.BlockSvg'); + +/** Option to undo previous action. */ +Blockly.ContextMenuItems.registerUndo = function() { + /** @type {!Blockly.ContextMenuRegistry.RegistryItem} */ + var undoOption = { + displayText: function() { + return Blockly.Msg['UNDO']; + }, + preconditionFn: function(/** @type {!Blockly.ContextMenuRegistry.Scope} */ scope) { + if (scope.workspace.getUndoStack().length > 0) { + return 'enabled'; + } + return 'disabled'; + }, + callback: function(/** @type {!Blockly.ContextMenuRegistry.Scope} */ scope) { + scope.workspace.undo(false); + }, + scopeType: Blockly.ContextMenuRegistry.ScopeType.WORKSPACE, + id: 'undoWorkspace', + weight: 0, + }; + Blockly.ContextMenuRegistry.registry.register(undoOption); +}; + +/** Option to redo previous action. */ +Blockly.ContextMenuItems.registerRedo = function() { + /** @type {!Blockly.ContextMenuRegistry.RegistryItem} */ + var redoOption = { + displayText: function() { return Blockly.Msg['REDO']; }, + preconditionFn: function(/** @type {!Blockly.ContextMenuRegistry.Scope} */ scope) { + if (scope.workspace.getRedoStack().length > 0) { + return 'enabled'; + } + return 'disabled'; + }, + callback: function(/** @type {!Blockly.ContextMenuRegistry.Scope} */ scope) { + scope.workspace.undo(true); + }, + scopeType: Blockly.ContextMenuRegistry.ScopeType.WORKSPACE, + id: 'redoWorkspace', + weight: 0, + }; + Blockly.ContextMenuRegistry.registry.register(redoOption); +}; + +/** Option to clean up blocks. */ +Blockly.ContextMenuItems.registerCleanup = function() { + /** @type {!Blockly.ContextMenuRegistry.RegistryItem} */ + var cleanOption = { + displayText: function() { + return Blockly.Msg['CLEAN_UP']; + }, + preconditionFn: function(/** @type {!Blockly.ContextMenuRegistry.Scope} */ scope) { + if (scope.workspace.isMovable()) { + if (scope.workspace.getTopBlocks(false).length > 1) { + return 'enabled'; + } + return 'disabled'; + } + return 'hidden'; + }, + callback: function(/** @type {!Blockly.ContextMenuRegistry.Scope} */ scope) { + scope.workspace.cleanUp(); + }, + scopeType: Blockly.ContextMenuRegistry.ScopeType.WORKSPACE, + id: 'cleanWorkspace', + weight: 0, + }; + Blockly.ContextMenuRegistry.registry.register(cleanOption); +}; + +/** + * Creates a callback to collapse or expand top blocks. + * @param {boolean} shouldCollapse Whether a block should collapse. + * @param {!Array} topBlocks Top blocks in the workspace. + * @private + */ +Blockly.ContextMenuItems.toggleOption_ = function(shouldCollapse, topBlocks) { + var DELAY = 10; + var ms = 0; + for (var i = 0; i < topBlocks.length; i++) { + var block = topBlocks[i]; + while (block) { + setTimeout(block.setCollapsed.bind(block, shouldCollapse), ms); + block = block.getNextBlock(); + ms += DELAY; + } + } +}; + +/** Option to collapse all blocks. */ +Blockly.ContextMenuItems.registerCollapse = function() { + /** @type {!Blockly.ContextMenuRegistry.RegistryItem} */ + var collapseOption = { + displayText: function() { + return Blockly.Msg['COLLAPSE_ALL']; + }, + preconditionFn: function(/** @type {!Blockly.ContextMenuRegistry.Scope} */ scope) { + if (scope.workspace.options.collapse) { + var topBlocks = scope.workspace.getTopBlocks(false); + for (var i = 0; i < topBlocks.length; i++) { + var block = topBlocks[i]; + while (block) { + if (!block.isCollapsed()) { + return 'enabled'; + } + block = block.getNextBlock(); + } + } + return 'disabled'; + } + return 'hidden'; + }, + callback: function(/** @type {!Blockly.ContextMenuRegistry.Scope} */ scope) { + Blockly.ContextMenuItems.toggleOption_(true, scope.workspace.getTopBlocks(true)); + }, + scopeType: Blockly.ContextMenuRegistry.ScopeType.WORKSPACE, + id: 'collapseWorkspace', + weight: 0, + }; + Blockly.ContextMenuRegistry.registry.register(collapseOption); +}; + +/** Option to expand all blocks. */ +Blockly.ContextMenuItems.registerExpand = function() { + /** @type {!Blockly.ContextMenuRegistry.RegistryItem} */ + var expandOption = { + displayText: function() { + return Blockly.Msg['EXPAND_ALL']; + }, + preconditionFn: function(/** @type {!Blockly.ContextMenuRegistry.Scope} */ scope) { + if (scope.workspace.options.collapse) { + var topBlocks = scope.workspace.getTopBlocks(false); + for (var i = 0; i < topBlocks.length; i++) { + var block = topBlocks[i]; + while (block) { + if (block.isCollapsed()) { + return 'enabled'; + } + block = block.getNextBlock(); + } + } + return 'disabled'; + } + return 'hidden'; + }, + callback: function(/** @type {!Blockly.ContextMenuRegistry.Scope} */ scope) { + Blockly.ContextMenuItems.toggleOption_(false, scope.workspace.getTopBlocks(true)); + }, + scopeType: Blockly.ContextMenuRegistry.ScopeType.WORKSPACE, + id: 'expandWorkspace', + weight: 0, + }; + Blockly.ContextMenuRegistry.registry.register(expandOption); +}; + +/** + * Adds a block and its children to a list of deletable blocks. + * @param {!Blockly.BlockSvg} block to delete. + * @param {!Array.} deleteList list of blocks that can be deleted. This will be + * modifed in place with the given block and its descendants. + * @private + */ +Blockly.ContextMenuItems.addDeletableBlocks_ = function(block, deleteList) { + if (block.isDeletable()) { + Array.prototype.push.apply(deleteList, block.getDescendants(false)); + } else { + var children = /** @type !Array. */ (block.getChildren(false)); + for (var i = 0; i < children.length; i++) { + Blockly.ContextMenuItems.addDeletableBlocks_(children[i], deleteList); + } + } +}; + +/** + * Constructs a list of blocks that can be deleted in the given workspace. + * @param {!Blockly.WorkspaceSvg} workspace to delete all blocks from. + * @return {!Array.} list of blocks to delete. + * @private + */ +Blockly.ContextMenuItems.getDeletableBlocks_ = function(workspace) { + var deleteList = []; + var topBlocks = workspace.getTopBlocks(true); + for (var i = 0; i < topBlocks.length; i++) { + Blockly.ContextMenuItems.addDeletableBlocks_(topBlocks[i], deleteList); + } + return deleteList; +}; + +/** Deletes the given blocks. Used to delete all blocks in the workspace. + * @param {!Array.} deleteList list of blocks to delete. + * @param {string} eventGroup event group id with which all delete events should be associated. + * @private + */ +Blockly.ContextMenuItems.deleteNext_ = function(deleteList, eventGroup) { + var DELAY = 10; + Blockly.Events.setGroup(eventGroup); + var block = deleteList.shift(); + if (block) { + if (block.workspace) { + block.dispose(false, true); + setTimeout(Blockly.ContextMenuItems.deleteNext_, DELAY, deleteList, eventGroup); + } else { + Blockly.ContextMenuItems.deleteNext_(deleteList, eventGroup); + } + } + Blockly.Events.setGroup(false); +}; + +/** Option to delete all blocks. */ +Blockly.ContextMenuItems.registerDeleteAll = function() { + /** @type {!Blockly.ContextMenuRegistry.RegistryItem} */ + var deleteOption = { + displayText: function(/** @type {!Blockly.ContextMenuRegistry.Scope} */ scope) { + if (!scope.workspace) { + return; + } + var deletableBlocksLength = + Blockly.ContextMenuItems.getDeletableBlocks_(scope.workspace).length; + if (deletableBlocksLength == 1) { + return Blockly.Msg['DELETE_BLOCK']; + } else { + return Blockly.Msg['DELETE_X_BLOCKS'].replace('%1', String(deletableBlocksLength)); + } + }, + preconditionFn: function(/** @type {!Blockly.ContextMenuRegistry.Scope} */ scope) { + if (!scope.workspace) { + return; + } + var deletableBlocksLength = + Blockly.ContextMenuItems.getDeletableBlocks_(scope.workspace).length; + return deletableBlocksLength > 0 ? 'enabled' : 'disabled'; + }, + callback: function(/** @type {!Blockly.ContextMenuRegistry.Scope} */ scope) { + if (!scope.workspace) { + return; + } + scope.workspace.cancelCurrentGesture(); + var deletableBlocks = Blockly.ContextMenuItems.getDeletableBlocks_(scope.workspace); + var eventGroup = Blockly.utils.genUid(); + if (deletableBlocks.length < 2) { + Blockly.ContextMenuItems.deleteNext_(deletableBlocks, eventGroup); + } else { + Blockly.confirm( + Blockly.Msg['DELETE_ALL_BLOCKS'].replace('%1', deletableBlocks.length), + function(ok) { + if (ok) { + Blockly.ContextMenuItems.deleteNext_(deletableBlocks, eventGroup); + } + }); + } + }, + scopeType: Blockly.ContextMenuRegistry.ScopeType.WORKSPACE, + id: 'workspaceDelete', + weight: 0, + }; + Blockly.ContextMenuRegistry.registry.register(deleteOption); +}; + +/** + * Registers all workspace-scoped context menu items. + * @private + */ +Blockly.ContextMenuItems.registerWorkspaceOptions_ = function() { + Blockly.ContextMenuItems.registerUndo(); + Blockly.ContextMenuItems.registerRedo(); + Blockly.ContextMenuItems.registerCleanup(); + Blockly.ContextMenuItems.registerCollapse(); + Blockly.ContextMenuItems.registerExpand(); + Blockly.ContextMenuItems.registerDeleteAll(); +}; + +/** Option to duplicate a block. */ +Blockly.ContextMenuItems.registerDuplicate = function() { + /** @type {!Blockly.ContextMenuRegistry.RegistryItem} */ + var duplicateOption = { + displayText: function() { + return Blockly.Msg['DUPLICATE_BLOCK']; + }, + preconditionFn: function(/** @type {!Blockly.ContextMenuRegistry.Scope} */ scope) { + var block = scope.block; + if (!block.isInFlyout && block.isDeletable() && block.isMovable()) { + if (block.isDuplicatable()) { + return 'enabled'; + } + return 'disabled'; + } + return 'hidden'; + }, + callback: function(/** @type {!Blockly.ContextMenuRegistry.Scope} */ scope) { + if (scope.block) { + Blockly.duplicate(scope.block); + } + }, + scopeType: Blockly.ContextMenuRegistry.ScopeType.BLOCK, + id: 'blockDuplicate', + weight: 0, + }; + Blockly.ContextMenuRegistry.registry.register(duplicateOption); +}; + +/** Option to add or remove block-level comment. */ +Blockly.ContextMenuItems.registerComment = function() { + /** @type {!Blockly.ContextMenuRegistry.RegistryItem} */ + var commentOption = { + displayText: function(/** @type {!Blockly.ContextMenuRegistry.Scope} */ scope) { + if (scope.block.getCommentIcon()) { + // If there's already a comment, option is to remove. + return Blockly.Msg['REMOVE_COMMENT']; + } + // If there's no comment yet, option is to add. + return Blockly.Msg['ADD_COMMENT']; + }, + preconditionFn: function(/** @type {!Blockly.ContextMenuRegistry.Scope} */ scope) { + var block = scope.block; + // IE doesn't support necessary features for comment editing. + if (!Blockly.utils.userAgent.IE && !block.isInFlyout && block.workspace.options.comments && + !block.isCollapsed() && block.isEditable()) { + return 'enabled'; + } + return 'hidden'; + }, + callback: function(/** @type {!Blockly.ContextMenuRegistry.Scope} */ scope) { + var block = scope.block; + if (block.getCommentIcon()) { + block.setCommentText(null); + } else { + block.setCommentText(''); + } + }, + scopeType: Blockly.ContextMenuRegistry.ScopeType.BLOCK, + id: 'blockComment', + weight: 0, + }; + Blockly.ContextMenuRegistry.registry.register(commentOption); +}; + +/** Option to inline variables. */ +Blockly.ContextMenuItems.registerInline = function() { + /** @type {!Blockly.ContextMenuRegistry.RegistryItem} */ + var inlineOption = { + displayText: function(/** @type {!Blockly.ContextMenuRegistry.Scope} */ scope) { + return (scope.block.getInputsInline()) ? + Blockly.Msg['EXTERNAL_INPUTS'] : Blockly.Msg['INLINE_INPUTS']; + }, + preconditionFn: function(/** @type {!Blockly.ContextMenuRegistry.Scope} */ scope) { + var block = scope.block; + if (!block.isInFlyout && block.isMovable() && !block.isCollapsed()) { + for (var i = 1; i < block.inputList.length; i++) { + // Only display this option if there are two value or dummy inputs next to each other. + if (block.inputList[i - 1].type != Blockly.NEXT_STATEMENT && + block.inputList[i].type != Blockly.NEXT_STATEMENT) { + return 'enabled'; + } + } + } + return 'hidden'; + }, + callback: function(/** @type {!Blockly.ContextMenuRegistry.Scope} */ scope) { + scope.block.setInputsInline(!scope.block.getInputsInline()); + }, + scopeType: Blockly.ContextMenuRegistry.ScopeType.BLOCK, + id: 'blockInline', + weight: 0, + }; + Blockly.ContextMenuRegistry.registry.register(inlineOption); +}; + +/** Option to collapse or expand a block. */ +Blockly.ContextMenuItems.registerCollapseExpandBlock = function() { + /** @type {!Blockly.ContextMenuRegistry.RegistryItem} */ + var collapseExpandOption = { + displayText: function(/** @type {!Blockly.ContextMenuRegistry.Scope} */ scope) { + if (scope.block.isCollapsed()) { + return Blockly.Msg['EXPAND_BLOCK']; + } + return Blockly.Msg['COLLAPSE_BLOCK']; + }, + preconditionFn: function(/** @type {!Blockly.ContextMenuRegistry.Scope} */ scope) { + var block = scope.block; + if (!block.isInFlyout && block.isMovable()) { + return 'enabled'; + } + return 'hidden'; + }, + callback: function(/** @type {!Blockly.ContextMenuRegistry.Scope} */ scope) { + scope.block.setCollapsed(!scope.block.isCollapsed()); + }, + scopeType: Blockly.ContextMenuRegistry.ScopeType.BLOCK, + id: 'blockCollapseExpand', + weight: 0, + }; + Blockly.ContextMenuRegistry.registry.register(collapseExpandOption); +}; + +/** Option to disable or enable a block. */ +Blockly.ContextMenuItems.registerDisable = function() { + /** @type {!Blockly.ContextMenuRegistry.RegistryItem} */ + var disableOption = { + displayText: function(/** @type {!Blockly.ContextMenuRegistry.Scope} */ scope) { + return (scope.block.isEnabled()) ? + Blockly.Msg['DISABLE_BLOCK'] : Blockly.Msg['ENABLE_BLOCK']; + }, + preconditionFn: function(/** @type {!Blockly.ContextMenuRegistry.Scope} */ scope) { + var block = scope.block; + if (!block.isInFlyout && block.workspace.options.disable && block.isEditable()) { + if (block.getInheritedDisabled()) { + return 'disabled'; + } + return 'enabled'; + } + return 'hidden'; + }, + callback: function(/** @type {!Blockly.ContextMenuRegistry.Scope} */ scope) { + var block = scope.block; + var group = Blockly.Events.getGroup(); + if (!group) { + Blockly.Events.setGroup(true); + } + block.setEnabled(!block.isEnabled()); + if (!group) { + Blockly.Events.setGroup(false); + } + }, + scopeType: Blockly.ContextMenuRegistry.ScopeType.BLOCK, + id: 'blockDisable', + weight: 0, + }; + Blockly.ContextMenuRegistry.registry.register(disableOption); +}; + +/** Option to delete a block. */ +Blockly.ContextMenuItems.registerDelete = function() { + /** @type {!Blockly.ContextMenuRegistry.RegistryItem} */ + var deleteOption = { + displayText: function(/** @type {!Blockly.ContextMenuRegistry.Scope} */ scope) { + var block = scope.block; + // Count the number of blocks that are nested in this block. + var descendantCount = block.getDescendants(false).length; + var nextBlock = block.getNextBlock(); + if (nextBlock) { + // Blocks in the current stack would survive this block's deletion. + descendantCount -= nextBlock.getDescendants(false).length; + } + return (descendantCount == 1) ? Blockly.Msg['DELETE_BLOCK'] : + Blockly.Msg['DELETE_X_BLOCKS'].replace('%1', String(descendantCount)); + }, + preconditionFn: function(/** @type {!Blockly.ContextMenuRegistry.Scope} */ scope) { + if (!scope.block.isInFlyout && scope.block.isDeletable()) { + return 'enabled'; + } + return 'hidden'; + }, + callback: function(/** @type {!Blockly.ContextMenuRegistry.Scope} */ scope) { + Blockly.Events.setGroup(true); + scope.block.dispose(true, true); + Blockly.Events.setGroup(false); + }, + scopeType: Blockly.ContextMenuRegistry.ScopeType.BLOCK, + id: 'blockDelete', + weight: 0, + }; + Blockly.ContextMenuRegistry.registry.register(deleteOption); +}; + +/** Option to open help for a block. */ +Blockly.ContextMenuItems.registerHelp = function() { + /** @type {!Blockly.ContextMenuRegistry.RegistryItem} */ + var helpOption = { + displayText: function() { + return Blockly.Msg['HELP']; + }, + preconditionFn: function(/** @type {!Blockly.ContextMenuRegistry.Scope} */ scope) { + var block = scope.block; + var url = (typeof block.helpUrl == 'function') ? + block.helpUrl() : block.helpUrl; + if (url) { + return 'enabled'; + } + return 'hidden'; + }, + callback: function(/** @type {!Blockly.ContextMenuRegistry.Scope} */ scope) { + scope.block.showHelp(); + }, + scopeType: Blockly.ContextMenuRegistry.ScopeType.BLOCK, + id: 'blockHelp', + weight: 0, + }; + Blockly.ContextMenuRegistry.registry.register(helpOption); +}; + +/** + * Registers all block-scoped context menu items. + * @private + */ +Blockly.ContextMenuItems.registerBlockOptions_ = function() { + Blockly.ContextMenuItems.registerDuplicate(); + Blockly.ContextMenuItems.registerComment(); + Blockly.ContextMenuItems.registerInline(); + Blockly.ContextMenuItems.registerCollapseExpandBlock(); + Blockly.ContextMenuItems.registerDisable(); + Blockly.ContextMenuItems.registerDelete(); + Blockly.ContextMenuItems.registerHelp(); +}; + +/** + * Registers all default context menu items. This should be called once per instance of + * ContextMenuRegistry. + * @package + */ +Blockly.ContextMenuItems.registerDefaultOptions = function() { + Blockly.ContextMenuItems.registerWorkspaceOptions_(); + Blockly.ContextMenuItems.registerBlockOptions_(); +}; + diff --git a/core/contextmenu_registry.js b/core/contextmenu_registry.js new file mode 100644 index 00000000000..13a3164051f --- /dev/null +++ b/core/contextmenu_registry.js @@ -0,0 +1,165 @@ +/** + * @license + * Copyright 2020 Google LLC + * SPDX-License-Identifier: Apache-2.0 + */ + +/** + * @fileoverview Registry for context menu option items. + * @author maribethb@google.com (Maribeth Bottorff) + */ +'use strict'; + +/** + * @name Blockly.ContextMenuRegistry + * @namespace + */ +goog.provide('Blockly.ContextMenuRegistry'); + +goog.require('Blockly.ContextMenuItems'); + +/** + * Class for the registry of context menu items. This is intended to be a singleton. You should + * not create a new instance, and only access this class from Blockly.ContextMenuRegistry.registry. + * @constructor + */ +Blockly.ContextMenuRegistry = function() { + + // Singleton instance should be registered once. + Blockly.ContextMenuRegistry.registry = this; + + /** + * Registry of all registered RegistryItems, keyed by id. + * @type {!Object} + * @private + */ + this.registry_ = {}; + Blockly.ContextMenuItems.registerDefaultOptions(); +}; + +/** + * Where this menu item should be rendered. If the menu item should be rendered in multiple + * scopes, e.g. on both a block and a workspace, it should be registered for each scope. + * @enum {string} + */ +Blockly.ContextMenuRegistry.ScopeType = { + BLOCK: 'block', + WORKSPACE: 'workspace', +}; + +/** + * The actual workspace/block where the menu is being rendered. This is passed to callback and + * displayText functions that depend on this information. + * @typedef {{ + * block: (Blockly.BlockSvg|undefined), + * workspace: (Blockly.WorkspaceSvg|undefined) + * }} + */ +Blockly.ContextMenuRegistry.Scope; + +/** + * A menu item as entered in the registry. + * @typedef {{ + * callback: function(!Blockly.ContextMenuRegistry.Scope), + * scopeType: !Blockly.ContextMenuRegistry.ScopeType, + * displayText: ((function(!Blockly.ContextMenuRegistry.Scope):string)|string), + * preconditionFn: function(!Blockly.ContextMenuRegistry.Scope):string, + * weight: number, + * id: string + * }} +*/ +Blockly.ContextMenuRegistry.RegistryItem; + +/** + * A menu item as presented to contextmenu.js. + * @typedef {{ + * text: string, + * enabled: boolean, + * callback: function(!Blockly.ContextMenuRegistry.Scope), + * scope: !Blockly.ContextMenuRegistry.Scope, + * weight: number + * }} + */ +Blockly.ContextMenuRegistry.ContextMenuOption; + +/** + * Singleton instance of this class. All interactions with this class should be done on this object. + * @type {?Blockly.ContextMenuRegistry} + */ +Blockly.ContextMenuRegistry.registry = null; + +/** + * Registers a RegistryItem. + * @param {!Blockly.ContextMenuRegistry.RegistryItem} item Context menu item to register. + * @throws {Error} if an item with the given id already exists. + */ +Blockly.ContextMenuRegistry.prototype.register = function(item) { + if (this.registry_[item.id]) { + throw Error('Menu item with id "' + item.id + '" is already registered.'); + } + this.registry_[item.id] = item; +}; + +/** + * Unregisters a RegistryItem with the given id. + * @param {string} id The id of the RegistryItem to remove. + * @throws {Error} if an item with the given id does not exist. + */ +Blockly.ContextMenuRegistry.prototype.unregister = function(id) { + if (this.registry_[id]) { + delete this.registry_[id]; + } else { + throw new Error('Menu item with id "' + id + '" not found.'); + } +}; + +/** + * @param {string} id The id of the RegistryItem to get. + * @returns {?Blockly.ContextMenuRegistry.RegistryItem} RegistryItem or null if not found + */ +Blockly.ContextMenuRegistry.prototype.getItem = function(id) { + if (this.registry_[id]) { + return this.registry_[id]; + } + return null; +}; + +/** + * Gets the valid context menu options for the given scope type (e.g. block or workspace) and scope. + * Blocks are only shown if the preconditionFn shows they should not be hidden. + * @param {!Blockly.ContextMenuRegistry.ScopeType} scopeType Type of scope where menu should be + * shown (e.g. on a block or on a workspace) + * @param {!Blockly.ContextMenuRegistry.Scope} scope Current scope of context menu + * (i.e., the exact workspace or block being clicked on) + * @returns {!Array.} the list of ContextMenuOptions + */ +Blockly.ContextMenuRegistry.prototype.getContextMenuOptions = function(scopeType, scope) { + var menuOptions = []; + var registry = this.registry_; + Object.keys(registry).forEach(function(id) { + var item = registry[id]; + if (scopeType == item.scopeType) { + var precondition = item.preconditionFn(scope); + if (precondition != 'hidden') { + var displayText = typeof item.displayText == 'function' ? + item.displayText(scope) : item.displayText; + /** @type {!Blockly.ContextMenuRegistry.ContextMenuOption} */ + var menuOption = { + text: displayText, + enabled: (precondition == 'enabled'), + callback: item.callback, + scope: scope, + weight: item.weight, + }; + menuOptions.push(menuOption); + } + } + }); + menuOptions.sort(function(a, b) { + return a.weight - b.weight; + }); + return menuOptions; +}; + +// Creates and assigns the singleton instance. +new Blockly.ContextMenuRegistry(); diff --git a/core/css.js b/core/css.js index d03769f38ca..fb2124684bd 100644 --- a/core/css.js +++ b/core/css.js @@ -72,17 +72,6 @@ Blockly.Css.inject = function(hasCss, pathToMedia) { document.head.insertBefore(cssNode, document.head.firstChild); }; -/** - * Set the cursor to be displayed when over something draggable. - * See https://github.com/google/blockly/issues/981 for context. - * @param {*} _cursor Enum. - * @deprecated April 2017. - */ -Blockly.Css.setCursor = function(_cursor) { - console.warn('Deprecated call to Blockly.Css.setCursor. ' + - 'See issue #981 for context'); -}; - /** * Array making up the CSS content for Blockly. */ @@ -179,6 +168,7 @@ Blockly.Css.CONTENT = [ 'max-height: 300px;', // @todo: spec for maximum height. 'overflow: auto;', 'overflow-x: hidden;', + 'position: relative;', '}', '.blocklyDropDownArrow {', diff --git a/core/events.js b/core/events.js index 3f567b132a8..e803af0ab35 100644 --- a/core/events.js +++ b/core/events.js @@ -16,6 +16,7 @@ */ goog.provide('Blockly.Events'); +goog.require('Blockly.registry'); goog.require('Blockly.utils'); @@ -338,53 +339,15 @@ Blockly.Events.getDescendantIds = function(block) { * @param {!Object} json JSON representation. * @param {!Blockly.Workspace} workspace Target workspace for event. * @return {!Blockly.Events.Abstract} The event represented by the JSON. + * @throws {Error} if an event type is not found in the registry. */ Blockly.Events.fromJson = function(json, workspace) { - // TODO: Should I have a way to register a new event into here? - var event; - switch (json.type) { - case Blockly.Events.CREATE: - event = new Blockly.Events.Create(null); - break; - case Blockly.Events.DELETE: - event = new Blockly.Events.Delete(null); - break; - case Blockly.Events.CHANGE: - event = new Blockly.Events.Change(null, '', '', '', ''); - break; - case Blockly.Events.MOVE: - event = new Blockly.Events.Move(null); - break; - case Blockly.Events.VAR_CREATE: - event = new Blockly.Events.VarCreate(null); - break; - case Blockly.Events.VAR_DELETE: - event = new Blockly.Events.VarDelete(null); - break; - case Blockly.Events.VAR_RENAME: - event = new Blockly.Events.VarRename(null, ''); - break; - case Blockly.Events.UI: - event = new Blockly.Events.Ui(null, '', '', ''); - break; - case Blockly.Events.COMMENT_CREATE: - event = new Blockly.Events.CommentCreate(null); - break; - case Blockly.Events.COMMENT_CHANGE: - event = new Blockly.Events.CommentChange(null, '', ''); - break; - case Blockly.Events.COMMENT_MOVE: - event = new Blockly.Events.CommentMove(null); - break; - case Blockly.Events.COMMENT_DELETE: - event = new Blockly.Events.CommentDelete(null); - break; - case Blockly.Events.FINISHED_LOADING: - event = new Blockly.Events.FinishedLoading(workspace); - break; - default: - throw Error('Unknown event type.'); + var eventClass = Blockly.registry.getClass(Blockly.registry.Type.EVENT, + json.type); + if (!eventClass) { + throw Error('Unknown event type.'); } + var event = new eventClass(); event.fromJson(json); event.workspaceId = workspace.id; return event; diff --git a/core/events_abstract.js b/core/events_abstract.js index cbe048b9d39..948649f9a31 100644 --- a/core/events_abstract.js +++ b/core/events_abstract.js @@ -21,6 +21,13 @@ goog.require('Blockly.Events'); * @constructor */ Blockly.Events.Abstract = function() { + + /** + * Whether or not the event is blank (to be populated by fromJson). + * @type {?boolean} + */ + this.isBlank = null; + /** * The workspace identifier for this event. * @type {string|undefined} @@ -61,6 +68,7 @@ Blockly.Events.Abstract.prototype.toJson = function() { * @param {!Object} json JSON representation. */ Blockly.Events.Abstract.prototype.fromJson = function(json) { + this.isBlank = false; this.group = json['group']; }; diff --git a/core/field.js b/core/field.js index d1e501cc327..897cd47183a 100644 --- a/core/field.js +++ b/core/field.js @@ -17,11 +17,14 @@ goog.provide('Blockly.Field'); goog.require('Blockly.Events'); goog.require('Blockly.Events.BlockChange'); goog.require('Blockly.Gesture'); +goog.require('Blockly.Tooltip'); goog.require('Blockly.utils'); +goog.require('Blockly.utils.deprecation'); goog.require('Blockly.utils.dom'); goog.require('Blockly.utils.Rect'); goog.require('Blockly.utils.Size'); goog.require('Blockly.utils.style'); +goog.require('Blockly.utils.Svg'); goog.require('Blockly.utils.userAgent'); goog.requireType('Blockly.blockRendering.ConstantProvider'); @@ -65,7 +68,7 @@ Blockly.Field = function(value, opt_validator, opt_config) { /** * Used to cache the field's tooltip value if setTooltip is called when the * field is not yet initialized. Is *not* guaranteed to be accurate. - * @type {string|Function|!SVGElement} + * @type {?Blockly.Tooltip.TipInfo} * @private */ this.tooltip_ = null; @@ -298,8 +301,8 @@ Blockly.Field.prototype.init = function() { // Field has already been initialized once. return; } - this.fieldGroup_ = /** @type {!SVGGElement} **/ - (Blockly.utils.dom.createSvgElement('g', {}, null)); + this.fieldGroup_ = Blockly.utils.dom.createSvgElement( + Blockly.utils.Svg.G, {}, null); if (!this.isVisible()) { this.fieldGroup_.style.display = 'none'; } @@ -336,17 +339,16 @@ Blockly.Field.prototype.initModel = function() { * @protected */ Blockly.Field.prototype.createBorderRect_ = function() { - this.borderRect_ = /** @type {!SVGRectElement} **/ - (Blockly.utils.dom.createSvgElement('rect', - { - 'rx': this.getConstants().FIELD_BORDER_RECT_RADIUS, - 'ry': this.getConstants().FIELD_BORDER_RECT_RADIUS, - 'x': 0, - 'y': 0, - 'height': this.size_.height, - 'width': this.size_.width, - 'class': 'blocklyFieldRect' - }, this.fieldGroup_)); + this.borderRect_ = Blockly.utils.dom.createSvgElement( + Blockly.utils.Svg.RECT, { + 'rx': this.getConstants().FIELD_BORDER_RECT_RADIUS, + 'ry': this.getConstants().FIELD_BORDER_RECT_RADIUS, + 'x': 0, + 'y': 0, + 'height': this.size_.height, + 'width': this.size_.width, + 'class': 'blocklyFieldRect' + }, this.fieldGroup_); }; /** @@ -356,11 +358,10 @@ Blockly.Field.prototype.createBorderRect_ = function() { * @protected */ Blockly.Field.prototype.createTextElement_ = function() { - this.textElement_ = /** @type {!SVGTextElement} **/ - (Blockly.utils.dom.createSvgElement('text', - { - 'class': 'blocklyText', - }, this.fieldGroup_)); + this.textElement_ = Blockly.utils.dom.createSvgElement( + Blockly.utils.Svg.TEXT, { + 'class': 'blocklyText', + }, this.fieldGroup_); if (this.getConstants().FIELD_TEXT_BASELINE_CENTER) { this.textElement_.setAttribute('dominant-baseline', 'central'); } @@ -539,6 +540,11 @@ Blockly.Field.prototype.getValidator = function() { * functions instead. */ Blockly.Field.prototype.classValidator = function(text) { + Blockly.utils.deprecation.warn( + 'Field.prototype.classValidator', + 'May 2019', + 'December 2020', + 'Blockly.Field.prototype.doClassValidation_'); return text; }; @@ -550,6 +556,10 @@ Blockly.Field.prototype.classValidator = function(text) { * @deprecated May 2019. setValue now contains all relevant logic. */ Blockly.Field.prototype.callValidator = function(text) { + Blockly.utils.deprecation.warn( + 'Field.prototype.callValidator', + 'May 2019', + 'December 2020'); var classResult = this.classValidator(text); if (classResult === null) { // Class validator rejects value. Game over. @@ -621,10 +631,12 @@ Blockly.Field.prototype.showEditor = function(opt_e) { * check the size of the field. */ Blockly.Field.prototype.updateWidth = function() { - console.warn('Deprecated call to updateWidth, call' + - ' Blockly.Field.updateSize_ to force an update to the size of the' + - ' field, or Blockly.utils.dom.getTextWidth() to check the size' + - ' of the field.'); + + Blockly.utils.deprecation.warn( + 'Field.prototype.updateWidth', + 'May 2019', + 'December 2020', + 'Blockly.Field.prototype.updateSize_ or Blockly.utils.dom.getTextWidth'); this.updateSize_(); }; @@ -811,6 +823,11 @@ Blockly.Field.prototype.getText = function() { * @deprecated 2019 setText should not be used directly. Use setValue instead. */ Blockly.Field.prototype.setText = function(_newText) { + Blockly.utils.deprecation.warn( + 'Field.prototype.setText', + 'May 2019', + 'December 2020', + 'Blockly.Field.prototype.setValue'); throw Error('setText method is deprecated'); }; @@ -981,23 +998,36 @@ Blockly.Field.prototype.onMouseDown_ = function(e) { }; /** - * Change the tooltip text for this field. - * @param {string|Function|!SVGElement} newTip Text for tooltip or a parent - * element to link to for its tooltip. + * Sets the tooltip for this field. + * @param {?Blockly.Tooltip.TipInfo} newTip The + * text for the tooltip, a function that returns the text for the tooltip, a + * parent object whose tooltip will be used, or null to display the tooltip + * of the parent block. To not display a tooltip pass the empty string. */ Blockly.Field.prototype.setTooltip = function(newTip) { + if (!newTip && newTip !== '') { // If null or undefined. + newTip = this.sourceBlock_; + } var clickTarget = this.getClickTarget_(); - if (!clickTarget) { + if (clickTarget) { + clickTarget.tooltip = newTip; + } else { // Field has not been initialized yet. this.tooltip_ = newTip; - return; } +}; - if (!newTip && newTip !== '') { // If null or undefined. - clickTarget.tooltip = this.sourceBlock_; - } else { - clickTarget.tooltip = newTip; +/** + * Returns the tooltip text for this field. + * @returns {string} The tooltip text for this field. + */ +Blockly.Field.prototype.getTooltip = function() { + var clickTarget = this.getClickTarget_(); + if (clickTarget) { + return Blockly.Tooltip.getTooltipOfObject(clickTarget); } + // Field has not been initialized yet. Return stashed this.tooltip_ value. + return Blockly.Tooltip.getTooltipOfObject({tooltip: this.tooltip_}); }; /** diff --git a/core/field_angle.js b/core/field_angle.js index 04133dbf494..cbafe10c64c 100644 --- a/core/field_angle.js +++ b/core/field_angle.js @@ -19,6 +19,7 @@ goog.require('Blockly.FieldTextInput'); goog.require('Blockly.utils.dom'); goog.require('Blockly.utils.math'); goog.require('Blockly.utils.object'); +goog.require('Blockly.utils.Svg'); goog.require('Blockly.utils.userAgent'); @@ -236,7 +237,8 @@ Blockly.FieldAngle.prototype.configure_ = function(config) { Blockly.FieldAngle.prototype.initView = function() { Blockly.FieldAngle.superClass_.initView.call(this); // Add the degree symbol to the left of the number, even in RTL (issue #2380) - this.symbol_ = Blockly.utils.dom.createSvgElement('tspan', {}, null); + this.symbol_ = Blockly.utils.dom.createSvgElement( + Blockly.utils.Svg.TSPAN, {}, null); this.symbol_.appendChild(document.createTextNode('\u00B0')); this.textElement_.appendChild(this.symbol_); }; @@ -283,41 +285,46 @@ Blockly.FieldAngle.prototype.showEditor_ = function(opt_e) { * @private */ Blockly.FieldAngle.prototype.dropdownCreate_ = function() { - var svg = Blockly.utils.dom.createSvgElement('svg', { - 'xmlns': Blockly.utils.dom.SVG_NS, - 'xmlns:html': Blockly.utils.dom.HTML_NS, - 'xmlns:xlink': Blockly.utils.dom.XLINK_NS, - 'version': '1.1', - 'height': (Blockly.FieldAngle.HALF * 2) + 'px', - 'width': (Blockly.FieldAngle.HALF * 2) + 'px', - 'style': 'touch-action: none' - }, null); - var circle = Blockly.utils.dom.createSvgElement('circle', { - 'cx': Blockly.FieldAngle.HALF, - 'cy': Blockly.FieldAngle.HALF, - 'r': Blockly.FieldAngle.RADIUS, - 'class': 'blocklyAngleCircle' - }, svg); - this.gauge_ = Blockly.utils.dom.createSvgElement('path', { - 'class': 'blocklyAngleGauge' - }, svg); - this.line_ = Blockly.utils.dom.createSvgElement('line', { - 'x1': Blockly.FieldAngle.HALF, - 'y1': Blockly.FieldAngle.HALF, - 'class': 'blocklyAngleLine' - }, svg); + var svg = Blockly.utils.dom.createSvgElement( + Blockly.utils.Svg.SVG, { + 'xmlns': Blockly.utils.dom.SVG_NS, + 'xmlns:html': Blockly.utils.dom.HTML_NS, + 'xmlns:xlink': Blockly.utils.dom.XLINK_NS, + 'version': '1.1', + 'height': (Blockly.FieldAngle.HALF * 2) + 'px', + 'width': (Blockly.FieldAngle.HALF * 2) + 'px', + 'style': 'touch-action: none' + }, null); + var circle = Blockly.utils.dom.createSvgElement( + Blockly.utils.Svg.CIRCLE, { + 'cx': Blockly.FieldAngle.HALF, + 'cy': Blockly.FieldAngle.HALF, + 'r': Blockly.FieldAngle.RADIUS, + 'class': 'blocklyAngleCircle' + }, svg); + this.gauge_ = Blockly.utils.dom.createSvgElement( + Blockly.utils.Svg.PATH, { + 'class': 'blocklyAngleGauge' + }, svg); + this.line_ = Blockly.utils.dom.createSvgElement( + Blockly.utils.Svg.LINE, { + 'x1': Blockly.FieldAngle.HALF, + 'y1': Blockly.FieldAngle.HALF, + 'class': 'blocklyAngleLine' + }, svg); // Draw markers around the edge. for (var angle = 0; angle < 360; angle += 15) { - Blockly.utils.dom.createSvgElement('line', { - 'x1': Blockly.FieldAngle.HALF + Blockly.FieldAngle.RADIUS, - 'y1': Blockly.FieldAngle.HALF, - 'x2': Blockly.FieldAngle.HALF + Blockly.FieldAngle.RADIUS - - (angle % 45 == 0 ? 10 : 5), - 'y2': Blockly.FieldAngle.HALF, - 'class': 'blocklyAngleMarks', - 'transform': 'rotate(' + angle + ',' + - Blockly.FieldAngle.HALF + ',' + Blockly.FieldAngle.HALF + ')' - }, svg); + Blockly.utils.dom.createSvgElement( + Blockly.utils.Svg.LINE, { + 'x1': Blockly.FieldAngle.HALF + Blockly.FieldAngle.RADIUS, + 'y1': Blockly.FieldAngle.HALF, + 'x2': Blockly.FieldAngle.HALF + Blockly.FieldAngle.RADIUS - + (angle % 45 == 0 ? 10 : 5), + 'y2': Blockly.FieldAngle.HALF, + 'class': 'blocklyAngleMarks', + 'transform': 'rotate(' + angle + ',' + + Blockly.FieldAngle.HALF + ',' + Blockly.FieldAngle.HALF + ')' + }, svg); } // The angle picker is different from other fields in that it updates on diff --git a/core/field_dropdown.js b/core/field_dropdown.js index bdbe27f9e62..474b152814f 100644 --- a/core/field_dropdown.js +++ b/core/field_dropdown.js @@ -28,6 +28,7 @@ goog.require('Blockly.utils.dom'); goog.require('Blockly.utils.object'); goog.require('Blockly.utils.Size'); goog.require('Blockly.utils.string'); +goog.require('Blockly.utils.Svg'); goog.require('Blockly.utils.userAgent'); @@ -212,8 +213,8 @@ Blockly.FieldDropdown.prototype.initView = function() { } this.createTextElement_(); - this.imageElement_ = /** @type {!SVGImageElement} */ - (Blockly.utils.dom.createSvgElement('image', {}, this.fieldGroup_)); + this.imageElement_ = Blockly.utils.dom.createSvgElement( + Blockly.utils.Svg.IMAGE, {}, this.fieldGroup_); if (this.getConstants().FIELD_DROPDOWN_SVG_ARROW) { this.createSVGArrow_(); @@ -242,8 +243,8 @@ Blockly.FieldDropdown.prototype.shouldAddBorderRect_ = function() { * @protected */ Blockly.FieldDropdown.prototype.createTextArrow_ = function() { - this.arrow_ = /** @type {!SVGTSpanElement} */ - (Blockly.utils.dom.createSvgElement('tspan', {}, this.textElement_)); + this.arrow_ = Blockly.utils.dom.createSvgElement( + Blockly.utils.Svg.TSPAN, {}, this.textElement_); this.arrow_.appendChild(document.createTextNode( this.sourceBlock_.RTL ? Blockly.FieldDropdown.ARROW_CHAR + ' ' : @@ -260,10 +261,11 @@ Blockly.FieldDropdown.prototype.createTextArrow_ = function() { * @protected */ Blockly.FieldDropdown.prototype.createSVGArrow_ = function() { - this.svgArrow_ = Blockly.utils.dom.createSvgElement('image', { - 'height': this.getConstants().FIELD_DROPDOWN_SVG_ARROW_SIZE + 'px', - 'width': this.getConstants().FIELD_DROPDOWN_SVG_ARROW_SIZE + 'px' - }, this.fieldGroup_); + this.svgArrow_ = Blockly.utils.dom.createSvgElement( + Blockly.utils.Svg.IMAGE, { + 'height': this.getConstants().FIELD_DROPDOWN_SVG_ARROW_SIZE + 'px', + 'width': this.getConstants().FIELD_DROPDOWN_SVG_ARROW_SIZE + 'px' + }, this.fieldGroup_); this.svgArrow_.setAttributeNS(Blockly.utils.dom.XLINK_NS, 'xlink:href', this.getConstants().FIELD_DROPDOWN_SVG_ARROW_DATAURI); }; diff --git a/core/field_image.js b/core/field_image.js index d6474ea3b7e..60400de98db 100644 --- a/core/field_image.js +++ b/core/field_image.js @@ -18,6 +18,7 @@ goog.require('Blockly.utils'); goog.require('Blockly.utils.dom'); goog.require('Blockly.utils.object'); goog.require('Blockly.utils.Size'); +goog.require('Blockly.utils.Svg'); /** @@ -176,15 +177,14 @@ Blockly.FieldImage.prototype.configure_ = function(config) { * @package */ Blockly.FieldImage.prototype.initView = function() { - this.imageElement_ = /** @type {!SVGImageElement} */ - (Blockly.utils.dom.createSvgElement( - 'image', - { - 'height': this.imageHeight_ + 'px', - 'width': this.size_.width + 'px', - 'alt': this.altText_ - }, - this.fieldGroup_)); + this.imageElement_ = Blockly.utils.dom.createSvgElement( + Blockly.utils.Svg.IMAGE, + { + 'height': this.imageHeight_ + 'px', + 'width': this.size_.width + 'px', + 'alt': this.altText_ + }, + this.fieldGroup_); this.imageElement_.setAttributeNS(Blockly.utils.dom.XLINK_NS, 'xlink:href', /** @type {string} */ (this.value_)); diff --git a/core/field_multilineinput.js b/core/field_multilineinput.js index 0660aa5719a..2205cb03fba 100644 --- a/core/field_multilineinput.js +++ b/core/field_multilineinput.js @@ -23,6 +23,7 @@ goog.require('Blockly.utils.Coordinate'); goog.require('Blockly.utils.dom'); goog.require('Blockly.utils.KeyCodes'); goog.require('Blockly.utils.object'); +goog.require('Blockly.utils.Svg'); goog.require('Blockly.utils.userAgent'); @@ -69,17 +70,43 @@ Blockly.FieldMultilineInput.fromJson = function(options) { return new Blockly.FieldMultilineInput(text, undefined, options); }; +/** + * Serializes this field's value to XML. Should only be called by Blockly.Xml. + * @param {!Element} fieldElement The element to populate with info about the + * field's state. + * @return {!Element} The element containing info about the field's state. + * @package + */ +Blockly.FieldMultilineInput.prototype.toXml = function(fieldElement) { + // Replace '\n' characters with html-escaped equivalent ' '. This is + // needed so the plain-text representation of the xml produced by + // `Blockly.Xml.domToText` will appear on a single line (this is a limitation + // of the plain-text format). + fieldElement.textContent = this.getValue().replace(/\n/g, ' '); + return fieldElement; +}; + +/** + * Sets the field's value based on the given XML element. Should only be + * called by Blockly.Xml. + * @param {!Element} fieldElement The element containing info about the + * field's state. + * @package + */ +Blockly.FieldMultilineInput.prototype.fromXml = function(fieldElement) { + this.setValue(fieldElement.textContent.replace(/ /g, '\n')); +}; + /** * Create the block UI for this field. * @package */ Blockly.FieldMultilineInput.prototype.initView = function() { this.createBorderRect_(); - this.textGroup_ = /** @type {!SVGGElement} **/ - (Blockly.utils.dom.createSvgElement('g', - { - 'class': 'blocklyEditableText', - }, this.fieldGroup_)); + this.textGroup_ = Blockly.utils.dom.createSvgElement( + Blockly.utils.Svg.G, { + 'class': 'blocklyEditableText', + }, this.fieldGroup_); }; /** @@ -134,12 +161,13 @@ Blockly.FieldMultilineInput.prototype.render_ = function() { for (var i = 0; i < lines.length; i++) { var lineHeight = this.getConstants().FIELD_TEXT_HEIGHT + this.getConstants().FIELD_BORDER_RECT_Y_PADDING; - var span = Blockly.utils.dom.createSvgElement('text', { - 'class': 'blocklyText blocklyMultilineText', - x: this.getConstants().FIELD_BORDER_RECT_X_PADDING, - y: y + this.getConstants().FIELD_BORDER_RECT_Y_PADDING, - dy: this.getConstants().FIELD_TEXT_BASELINE - }, this.textGroup_); + var span = Blockly.utils.dom.createSvgElement( + Blockly.utils.Svg.TEXT, { + 'class': 'blocklyText blocklyMultilineText', + x: this.getConstants().FIELD_BORDER_RECT_X_PADDING, + y: y + this.getConstants().FIELD_BORDER_RECT_Y_PADDING, + dy: this.getConstants().FIELD_TEXT_BASELINE + }, this.textGroup_); span.appendChild(document.createTextNode(lines[i])); y += lineHeight; } diff --git a/core/field_number.js b/core/field_number.js index 0619953488f..e052ff36f49 100644 --- a/core/field_number.js +++ b/core/field_number.js @@ -231,7 +231,7 @@ Blockly.FieldNumber.prototype.setPrecisionInternal_ = function(precision) { } } - var precisionString = this.precision_.toString(); + var precisionString = this.precision_.toLocaleString("en-US", {maximumFractionDigits: 20}); var decimalIndex = precisionString.indexOf('.'); if (decimalIndex == -1) { // If the precision is 0 (float) allow any number of decimals, diff --git a/core/field_registry.js b/core/field_registry.js index b7f8441b36f..1a032731d42 100644 --- a/core/field_registry.js +++ b/core/field_registry.js @@ -16,15 +16,16 @@ goog.provide('Blockly.fieldRegistry'); goog.require('Blockly.registry'); +goog.requireType('Blockly.IRegistrableField'); + /** * Registers a field type. * Blockly.fieldRegistry.fromJson uses this registry to * find the appropriate field type. * @param {string} type The field type name as used in the JSON definition. - * @param {?function(new:Blockly.Field, ...?)} fieldClass The field class - * containing a fromJson function that can construct an instance of the - * field. + * @param {!Blockly.IRegistrableField} fieldClass The field class containing a + * fromJson function that can construct an instance of the field. * @throws {Error} if the type name is empty, the field is already * registered, or the fieldClass is not an object containing a fromJson * function. @@ -52,14 +53,14 @@ Blockly.fieldRegistry.unregister = function(type) { * @package */ Blockly.fieldRegistry.fromJson = function(options) { - var fieldClass = /** @type {{fromJson:function(!Object):!Blockly.Field}} */ ( - Blockly.registry.getClass(Blockly.registry.Type.FIELD, options['type'])); - if (!fieldClass) { + var fieldObject = /** @type {?Blockly.IRegistrableField} */ ( + Blockly.registry.getObject(Blockly.registry.Type.FIELD, options['type'])); + if (!fieldObject) { console.warn('Blockly could not create a field of type ' + options['type'] + '. The field is probably not being registered. This could be because' + ' the file is not loaded, the field does not register itself (Issue' + ' #1584), or the registration is not being reached.'); return null; } - return fieldClass.fromJson(options); + return fieldObject.fromJson(options); }; diff --git a/core/flyout_base.js b/core/flyout_base.js index 547035ad364..e1361460d5f 100644 --- a/core/flyout_base.js +++ b/core/flyout_base.js @@ -26,11 +26,14 @@ goog.require('Blockly.Touch'); goog.require('Blockly.utils'); goog.require('Blockly.utils.Coordinate'); goog.require('Blockly.utils.dom'); +goog.require('Blockly.utils.Svg'); +goog.require('Blockly.utils.toolbox'); goog.require('Blockly.WorkspaceSvg'); goog.require('Blockly.Xml'); goog.requireType('Blockly.IBlocklyActionable'); goog.requireType('Blockly.IDeleteArea'); +goog.requireType('Blockly.IFlyout'); goog.requireType('Blockly.utils.Metrics'); @@ -42,6 +45,7 @@ goog.requireType('Blockly.utils.Metrics'); * @abstract * @implements {Blockly.IBlocklyActionable} * @implements {Blockly.IDeleteArea} + * @implements {Blockly.IFlyout} */ Blockly.Flyout = function(workspaceOptions) { workspaceOptions.getMetrics = @@ -223,8 +227,10 @@ Blockly.Flyout.prototype.dragAngleRange_ = 70; * Creates the flyout's DOM. Only needs to be called once. The flyout can * either exist as its own svg element or be a g element nested inside a * separate svg element. - * @param {string} tagName The type of tag to put the flyout in. This - * should be or . + * @param {string| + * !Blockly.utils.Svg| + * !Blockly.utils.Svg} tagName The type of tag to + * put the flyout in. This should be or . * @return {!SVGElement} The flyout's SVG group. */ Blockly.Flyout.prototype.createDom = function(tagName) { @@ -238,7 +244,8 @@ Blockly.Flyout.prototype.createDom = function(tagName) { // hide/show code will set up proper visibility and size later. this.svgGroup_ = Blockly.utils.dom.createSvgElement(tagName, {'class': 'blocklyFlyout', 'style': 'display: none'}, null); - this.svgBackground_ = Blockly.utils.dom.createSvgElement('path', + this.svgBackground_ = Blockly.utils.dom.createSvgElement( + Blockly.utils.Svg.PATH, {'class': 'blocklyFlyoutBackground'}, this.svgGroup_); this.svgGroup_.appendChild(this.workspace_.createDom()); this.workspace_.getThemeManager().subscribe( @@ -452,10 +459,9 @@ Blockly.Flyout.prototype.hide = function() { /** * Show and populate the flyout. - * @param {!Blockly.utils.toolbox.ToolboxDefinition|string} flyoutDef - * List of contents to display in the flyout as an array of xml an - * array of Nodes, a NodeList or a string with the name of the dynamic category. - * Variables and procedures have a custom set of blocks. + * @param {!Blockly.utils.toolbox.FlyoutDefinition|string} flyoutDef Contents to display + * in the flyout. This is either an array of Nodes, a NodeList, a + * toolbox definition, or a string with the name of the dynamic category. */ Blockly.Flyout.prototype.show = function(flyoutDef) { this.workspace_.setResizesEnabled(false); @@ -463,25 +469,13 @@ Blockly.Flyout.prototype.show = function(flyoutDef) { this.clearOldBlocks_(); // Handle dynamic categories, represented by a name instead of a list. - // Look up the correct category generation function and call that to get a - // valid XML list. if (typeof flyoutDef == 'string') { - var fnToApply = this.workspace_.targetWorkspace.getToolboxCategoryCallback( - flyoutDef); - if (typeof fnToApply != 'function') { - throw TypeError('Couldn\'t find a callback function when opening' + - ' a toolbox category.'); - } - flyoutDef = fnToApply(this.workspace_.targetWorkspace); - if (!Array.isArray(flyoutDef)) { - throw TypeError('Result of toolbox category callback must be an array.'); - } + flyoutDef = this.getDynamicCategoryContents_(flyoutDef); } this.setVisible(true); - - // Parse the Array or NodeList passed in into an Array of - // Blockly.utils.toolbox.Toolbox. - var parsedContent = Blockly.utils.toolbox.convertToolboxToJSON(flyoutDef); + + // Parse the Array, Node or NodeList into a a list of flyout items. + var parsedContent = Blockly.utils.toolbox.convertFlyoutDefToJsonArray(flyoutDef); var flyoutInfo = /** @type {{contents:!Array., gaps:!Array.}} */ ( this.createFlyoutInfo_(parsedContent)); @@ -520,10 +514,10 @@ Blockly.Flyout.prototype.show = function(flyoutDef) { /** * Create the contents array and gaps array necessary to create the layout for * the flyout. - * @param {Array.} parsedContent The array - * of objects to show in the flyout. + * @param {!Blockly.utils.toolbox.FlyoutItemInfoArray} parsedContent The array + * of objects to show in the flyout. * @return {{contents:Array., gaps:Array.}} The list of contents - * and gaps needed to lay out the flyout. + * and gaps needed to lay out the flyout. * @private */ Blockly.Flyout.prototype.createFlyoutInfo_ = function(parsedContent) { @@ -532,9 +526,20 @@ Blockly.Flyout.prototype.createFlyoutInfo_ = function(parsedContent) { this.permanentlyDisabled_.length = 0; var defaultGap = this.horizontalLayout ? this.GAP_X : this.GAP_Y; for (var i = 0, contentInfo; (contentInfo = parsedContent[i]); i++) { + + if (contentInfo['custom']) { + var customInfo = /** @type {!Blockly.utils.toolbox.DynamicCategoryInfo} */ (contentInfo); + var categoryName = customInfo['custom']; + var flyoutDef = this.getDynamicCategoryContents_(categoryName); + var parsedDynamicContent = /** @type {!Blockly.utils.toolbox.FlyoutItemInfoArray} */ + (Blockly.utils.toolbox.convertFlyoutDefToJsonArray(flyoutDef)); + parsedContent.splice.apply(parsedContent, [i, 1].concat(parsedDynamicContent)); + contentInfo = parsedContent[i]; + } + switch (contentInfo['kind'].toUpperCase()) { case 'BLOCK': - var blockInfo = /** @type {Blockly.utils.toolbox.Block} */ (contentInfo); + var blockInfo = /** @type {!Blockly.utils.toolbox.BlockInfo} */ (contentInfo); var blockXml = this.getBlockXml_(blockInfo); var block = this.createBlock_(blockXml); // This is a deprecated method for adding gap to a block. @@ -544,19 +549,18 @@ Blockly.Flyout.prototype.createFlyoutInfo_ = function(parsedContent) { contents.push({type: 'block', block: block}); break; case 'SEP': - var sepInfo = /** @type {Blockly.utils.toolbox.Separator} */ (contentInfo); + var sepInfo = /** @type {!Blockly.utils.toolbox.SeparatorInfo} */ (contentInfo); this.addSeparatorGap_(sepInfo, gaps, defaultGap); break; case 'LABEL': - var labelInfo = /** @type {Blockly.utils.toolbox.Label} */ (contentInfo); + var labelInfo = /** @type {!Blockly.utils.toolbox.LabelInfo} */ (contentInfo); // A label is a button with different styling. - // Rename this function. var label = this.createButton_(labelInfo, /** isLabel */ true); contents.push({type: 'button', button: label}); gaps.push(defaultGap); break; case 'BUTTON': - var buttonInfo = /** @type {Blockly.utils.toolbox.Button} */ (contentInfo); + var buttonInfo = /** @type {!Blockly.utils.toolbox.ButtonInfo} */ (contentInfo); var button = this.createButton_(buttonInfo, /** isLabel */ false); contents.push({type: 'button', button: button}); gaps.push(defaultGap); @@ -566,9 +570,31 @@ Blockly.Flyout.prototype.createFlyoutInfo_ = function(parsedContent) { return {contents: contents, gaps: gaps}; }; +/** + * Gets the flyout definition for the dynamic category. + * @param {string} categoryName The name of the dynamic category. + * @return {!Array.} The array of flyout items. + * @private + */ +Blockly.Flyout.prototype.getDynamicCategoryContents_ = function(categoryName) { + // Look up the correct category generation function and call that to get a + // valid XML list. + var fnToApply = this.workspace_.targetWorkspace.getToolboxCategoryCallback( + categoryName); + if (typeof fnToApply != 'function') { + throw TypeError('Couldn\'t find a callback function when opening' + + ' a toolbox category.'); + } + var flyoutDef = fnToApply(this.workspace_.targetWorkspace); + if (!Array.isArray(flyoutDef)) { + throw new TypeError('Result of toolbox category callback must be an array.'); + } + return flyoutDef; +}; + /** * Creates a flyout button or a flyout label. - * @param {!Blockly.utils.toolbox.Button|!Blockly.utils.toolbox.Label} btnInfo + * @param {!Blockly.utils.toolbox.ButtonOrLabelInfo} btnInfo * The object holding information about a button or a label. * @param {boolean} isLabel True if the button is a label, false otherwise. * @return {!Blockly.FlyoutButton} The object used to display the button in the @@ -605,7 +631,7 @@ Blockly.Flyout.prototype.createBlock_ = function(blockXml) { /** * Get the xml from the block info object. - * @param {!Blockly.utils.toolbox.Block} blockInfo The object holding + * @param {!Blockly.utils.toolbox.BlockInfo} blockInfo The object holding * information about a block. * @return {!Element} The xml for the block. * @throws {Error} if the xml is not a valid block definition. @@ -619,10 +645,12 @@ Blockly.Flyout.prototype.getBlockXml_ = function(blockInfo) { blockElement = blockXml; } else if (blockXml && typeof blockXml == 'string') { blockElement = Blockly.Xml.textToDom(blockXml); + blockInfo['blockxml'] = blockElement; } else if (blockInfo['type']) { blockElement = Blockly.utils.xml.createElement('xml'); blockElement.setAttribute('type', blockInfo['type']); blockElement.setAttribute('disabled', blockInfo['disabled']); + blockInfo['blockxml'] = blockElement; } if (!blockElement) { @@ -633,7 +661,7 @@ Blockly.Flyout.prototype.getBlockXml_ = function(blockInfo) { /** * Add the necessary gap in the flyout for a separator. - * @param {!Blockly.utils.toolbox.Separator} sepInfo The object holding + * @param {!Blockly.utils.toolbox.SeparatorInfo} sepInfo The object holding * information about a separator. * @param {!Array.} gaps The list gaps between items in the flyout. * @param {number} defaultGap The default gap between the button and next element. @@ -762,23 +790,27 @@ Blockly.Flyout.prototype.createBlock = function(originalBlock) { this.targetWorkspace.setResizesEnabled(false); try { newBlock = this.placeNewBlock_(originalBlock); - // Close the flyout. - Blockly.hideChaff(); } finally { Blockly.Events.enable(); } + // Close the flyout. + Blockly.hideChaff(); + var newVariables = Blockly.Variables.getAddedVariables(this.targetWorkspace, variablesBeforeCreation); if (Blockly.Events.isEnabled()) { Blockly.Events.setGroup(true); - Blockly.Events.fire(new Blockly.Events.Create(newBlock)); // Fire a VarCreate event for each (if any) new variable created. for (var i = 0; i < newVariables.length; i++) { var thisVariable = newVariables[i]; Blockly.Events.fire(new Blockly.Events.VarCreate(thisVariable)); } + + // Block events come after var events, in case they refer to newly created + // variables. + Blockly.Events.fire(new Blockly.Events.Create(newBlock)); } if (this.autoClose) { this.hide(); @@ -825,7 +857,8 @@ Blockly.Flyout.prototype.initFlyoutButton_ = function(button, x, y) { Blockly.Flyout.prototype.createRect_ = function(block, x, y, blockHW, index) { // Create an invisible rectangle under the block to act as a button. Just // using the block as a button is poor, since blocks have holes in them. - var rect = Blockly.utils.dom.createSvgElement('rect', + var rect = Blockly.utils.dom.createSvgElement( + Blockly.utils.Svg.RECT, { 'fill-opacity': 0, 'x': x, @@ -916,7 +949,8 @@ Blockly.Flyout.prototype.placeNewBlock_ = function(oldBlock) { } // Create the new block by cloning the block in the flyout (via XML). - var xml = Blockly.Xml.blockToDom(oldBlock, true); + // This cast assumes that the oldBlock can not be an insertion marker. + var xml = /** @type {!Element} */ (Blockly.Xml.blockToDom(oldBlock, true)); // The target workspace would normally resize during domToBlock, which will // lead to weird jumps. Save it for terminateDrag. targetWorkspace.setResizesEnabled(false); diff --git a/core/flyout_button.js b/core/flyout_button.js index 8585c718745..f0a1542913a 100644 --- a/core/flyout_button.js +++ b/core/flyout_button.js @@ -16,6 +16,7 @@ goog.require('Blockly.Css'); goog.require('Blockly.utils'); goog.require('Blockly.utils.Coordinate'); goog.require('Blockly.utils.dom'); +goog.require('Blockly.utils.Svg'); /** @@ -23,7 +24,7 @@ goog.require('Blockly.utils.dom'); * @param {!Blockly.WorkspaceSvg} workspace The workspace in which to place this * button. * @param {!Blockly.WorkspaceSvg} targetWorkspace The flyout's target workspace. - * @param {!Blockly.utils.toolbox.Button|!Blockly.utils.toolbox.Label} json + * @param {!Blockly.utils.toolbox.ButtonOrLabelInfo} json * The JSON specifying the label/button. * @param {boolean} isLabel Whether this button should be styled as a label. * @constructor @@ -85,6 +86,12 @@ Blockly.FlyoutButton = function(workspace, targetWorkspace, json, isLabel) { * @private */ this.onMouseUpWrapper_ = null; + + /** + * The JSON specifying the label / button. + * @type {!Blockly.utils.toolbox.ButtonOrLabelInfo} + */ + this.info = json; }; /** @@ -119,12 +126,14 @@ Blockly.FlyoutButton.prototype.createDom = function() { cssClass += ' ' + this.cssClass_; } - this.svgGroup_ = Blockly.utils.dom.createSvgElement('g', {'class': cssClass}, + this.svgGroup_ = Blockly.utils.dom.createSvgElement( + Blockly.utils.Svg.G, {'class': cssClass}, this.workspace_.getCanvas()); if (!this.isLabel_) { // Shadow rectangle (light source does not mirror in RTL). - var shadow = Blockly.utils.dom.createSvgElement('rect', + var shadow = Blockly.utils.dom.createSvgElement( + Blockly.utils.Svg.RECT, { 'class': 'blocklyFlyoutButtonShadow', 'rx': 4, 'ry': 4, 'x': 1, 'y': 1 @@ -132,7 +141,8 @@ Blockly.FlyoutButton.prototype.createDom = function() { this.svgGroup_); } // Background rectangle. - var rect = Blockly.utils.dom.createSvgElement('rect', + var rect = Blockly.utils.dom.createSvgElement( + Blockly.utils.Svg.RECT, { 'class': this.isLabel_ ? 'blocklyFlyoutLabelBackground' : 'blocklyFlyoutButtonBackground', @@ -140,7 +150,8 @@ Blockly.FlyoutButton.prototype.createDom = function() { }, this.svgGroup_); - var svgText = Blockly.utils.dom.createSvgElement('text', + var svgText = Blockly.utils.dom.createSvgElement( + Blockly.utils.Svg.TEXT, { 'class': this.isLabel_ ? 'blocklyFlyoutLabelText' : 'blocklyText', 'x': 0, @@ -217,6 +228,13 @@ Blockly.FlyoutButton.prototype.moveTo = function(x, y) { this.updateTransform_(); }; +/** + * @return {boolean} Whether or not the button is a label. + */ +Blockly.FlyoutButton.prototype.isLabel = function() { + return this.isLabel_; +}; + /** * Location of the button. * @return {!Blockly.utils.Coordinate} x, y coordinates. @@ -226,6 +244,13 @@ Blockly.FlyoutButton.prototype.getPosition = function() { return this.position_; }; +/** + * @return {string} Text of the button. + */ +Blockly.FlyoutButton.prototype.getButtonText = function() { + return this.text_; +}; + /** * Get the button's target workspace. * @return {!Blockly.WorkspaceSvg} The target workspace of the flyout where this diff --git a/core/flyout_dragger.js b/core/flyout_dragger.js index f49243b7f93..0a9bafe6736 100644 --- a/core/flyout_dragger.js +++ b/core/flyout_dragger.js @@ -15,6 +15,8 @@ goog.provide('Blockly.FlyoutDragger'); goog.require('Blockly.utils.object'); goog.require('Blockly.WorkspaceDragger'); +goog.requireType('Blockly.IFlyout'); + /** * Class for a flyout dragger. It moves a flyout workspace around when it is @@ -22,7 +24,7 @@ goog.require('Blockly.WorkspaceDragger'); * Note that the workspace itself manages whether or not it has a drag surface * and how to do translations based on that. This simply passes the right * commands based on events. - * @param {!Blockly.Flyout} flyout The flyout to drag. + * @param {!Blockly.IFlyout} flyout The flyout to drag. * @extends {Blockly.WorkspaceDragger} * @constructor */ diff --git a/core/flyout_horizontal.js b/core/flyout_horizontal.js index 7f648ec6582..bcd0c905e41 100644 --- a/core/flyout_horizontal.js +++ b/core/flyout_horizontal.js @@ -14,6 +14,7 @@ goog.provide('Blockly.HorizontalFlyout'); goog.require('Blockly.Block'); goog.require('Blockly.Flyout'); +goog.require('Blockly.registry'); goog.require('Blockly.Scrollbar'); goog.require('Blockly.utils'); goog.require('Blockly.utils.object'); @@ -32,7 +33,6 @@ goog.requireType('Blockly.utils.Metrics'); */ Blockly.HorizontalFlyout = function(workspaceOptions) { Blockly.HorizontalFlyout.superClass_.constructor.call(this, workspaceOptions); - this.horizontalLayout = true; }; Blockly.utils.object.inherits(Blockly.HorizontalFlyout, Blockly.Flyout); @@ -83,12 +83,12 @@ Blockly.HorizontalFlyout.prototype.getMetrics_ = function() { contentWidth: (optionBox.width + 2 * this.MARGIN) * this.workspace_.scale, contentTop: 0, contentLeft: 0, - + viewHeight: viewHeight, viewWidth: viewWidth, viewTop: -this.workspace_.scrollY, viewLeft: -this.workspace_.scrollX, - + absoluteTop: absoluteTop, absoluteLeft: absoluteLeft }; @@ -367,8 +367,22 @@ Blockly.HorizontalFlyout.prototype.reflowInternal_ = function() { this.moveRectToBlock_(block.flyoutRect_, block); } } + + if (this.targetWorkspace.toolboxPosition == this.toolboxPosition_ && + this.toolboxPosition_ == Blockly.TOOLBOX_AT_TOP && + !this.targetWorkspace.getToolbox()) { + // This flyout is a simple toolbox. Reposition the workspace so that (0,0) + // is in the correct position relative to the new absolute edge (ie + // toolbox edge). + this.targetWorkspace.translate( + 0, this.targetWorkspace.scrollY + flyoutHeight); + } + // Record the height for .getMetrics_ and .position. this.height_ = flyoutHeight; this.position(); } }; + +Blockly.registry.register(Blockly.registry.Type.FLYOUTS_HORIZONTAL_TOOLBOX, + Blockly.registry.DEFAULT, Blockly.HorizontalFlyout); diff --git a/core/flyout_vertical.js b/core/flyout_vertical.js index 139277cc2b5..83ab45fcd89 100644 --- a/core/flyout_vertical.js +++ b/core/flyout_vertical.js @@ -14,6 +14,7 @@ goog.provide('Blockly.VerticalFlyout'); goog.require('Blockly.Block'); goog.require('Blockly.Flyout'); +goog.require('Blockly.registry'); goog.require('Blockly.Scrollbar'); goog.require('Blockly.utils'); goog.require('Blockly.utils.object'); @@ -36,6 +37,12 @@ Blockly.VerticalFlyout = function(workspaceOptions) { }; Blockly.utils.object.inherits(Blockly.VerticalFlyout, Blockly.Flyout); +/** + * The name of the vertical flyout in the registry. + * @type {string} + */ +Blockly.VerticalFlyout.registryName = 'verticalFlyout'; + /** * Return an object with all the metrics required to size scrollbars for the * flyout. The following properties are computed: @@ -369,8 +376,22 @@ Blockly.VerticalFlyout.prototype.reflowInternal_ = function() { button.moveTo(x, y); } } + + if (this.targetWorkspace.toolboxPosition == this.toolboxPosition_ && + this.toolboxPosition_ == Blockly.TOOLBOX_AT_LEFT && + !this.targetWorkspace.getToolbox()) { + // This flyout is a simple toolbox. Reposition the workspace so that (0,0) + // is in the correct position relative to the new absolute edge (ie + // toolbox edge). + this.targetWorkspace.translate( + this.targetWorkspace.scrollX + flyoutWidth, 0); + } + // Record the width for .getMetrics_ and .position. this.width_ = flyoutWidth; this.position(); } }; + +Blockly.registry.register(Blockly.registry.Type.FLYOUTS_VERTICAL_TOOLBOX, + Blockly.registry.DEFAULT, Blockly.VerticalFlyout); diff --git a/core/gesture.js b/core/gesture.js index c100f95f57d..160724f91c0 100644 --- a/core/gesture.js +++ b/core/gesture.js @@ -28,6 +28,9 @@ goog.require('Blockly.utils'); goog.require('Blockly.utils.Coordinate'); goog.require('Blockly.WorkspaceDragger'); +goog.requireType('Blockly.IBubble'); +goog.requireType('Blockly.IFlyout'); + /** * Note: In this file "start" refers to touchstart, mousedown, and pointerstart @@ -43,7 +46,6 @@ goog.require('Blockly.WorkspaceDragger'); * @constructor */ Blockly.Gesture = function(e, creatorWorkspace) { - /** * The position of the mouse when the gesture started. Units are CSS pixels, * with (0, 0) at the top left of the browser window (mouseEvent clientX/Y). @@ -63,7 +65,7 @@ Blockly.Gesture = function(e, creatorWorkspace) { /** * The bubble that the gesture started on, or null if it did not start on a * bubble. - * @type {Blockly.Bubble} + * @type {Blockly.IBubble} * @private */ this.startBubble_ = null; @@ -190,7 +192,7 @@ Blockly.Gesture = function(e, creatorWorkspace) { /** * The flyout a gesture started in, if any. - * @type {Blockly.Flyout} + * @type {Blockly.IFlyout} * @private */ this.flyout_ = null; @@ -278,16 +280,17 @@ Blockly.Gesture.prototype.updateFromEvent_ = function(e) { * @private */ Blockly.Gesture.prototype.updateDragDelta_ = function(currentXY) { - this.currentDragDeltaXY_ = Blockly.utils.Coordinate.difference(currentXY, + this.currentDragDeltaXY_ = Blockly.utils.Coordinate.difference( + currentXY, /** @type {!Blockly.utils.Coordinate} */ (this.mouseDownXY_)); if (!this.hasExceededDragRadius_) { - var currentDragDelta = Blockly.utils.Coordinate.magnitude( - this.currentDragDeltaXY_); + var currentDragDelta = + Blockly.utils.Coordinate.magnitude(this.currentDragDeltaXY_); // The flyout has a different drag radius from the rest of Blockly. - var limitRadius = this.flyout_ ? Blockly.FLYOUT_DRAG_RADIUS : - Blockly.DRAG_RADIUS; + var limitRadius = + this.flyout_ ? Blockly.FLYOUT_DRAG_RADIUS : Blockly.DRAG_RADIUS; this.hasExceededDragRadius_ = currentDragDelta > limitRadius; return this.hasExceededDragRadius_; @@ -385,7 +388,8 @@ Blockly.Gesture.prototype.updateIsDraggingBlock_ = function() { * @private */ Blockly.Gesture.prototype.updateIsDraggingWorkspace_ = function() { - var wsMovable = this.flyout_ ? this.flyout_.isScrollable() : + var wsMovable = this.flyout_ ? + this.flyout_.isScrollable() : this.startWorkspace_ && this.startWorkspace_.isDraggable(); if (!wsMovable) { @@ -437,8 +441,7 @@ Blockly.Gesture.prototype.startDraggingBlock_ = function() { /** @type {!Blockly.BlockSvg} */ (this.targetBlock_), /** @type {!Blockly.WorkspaceSvg} */ (this.startWorkspace_)); this.blockDragger_.startBlockDrag(this.currentDragDeltaXY_, this.healStack_); - this.blockDragger_.dragBlock(this.mostRecentEvent_, - this.currentDragDeltaXY_); + this.blockDragger_.dragBlock(this.mostRecentEvent_, this.currentDragDeltaXY_); }; /** @@ -448,11 +451,11 @@ Blockly.Gesture.prototype.startDraggingBlock_ = function() { // TODO (fenichel): Possibly combine this and startDraggingBlock_. Blockly.Gesture.prototype.startDraggingBubble_ = function() { this.bubbleDragger_ = new Blockly.BubbleDragger( - /** @type {!Blockly.Bubble} */ (this.startBubble_), + /** @type {!Blockly.IBubble} */ (this.startBubble_), /** @type {!Blockly.WorkspaceSvg} */ (this.startWorkspace_)); this.bubbleDragger_.startBubbleDrag(); - this.bubbleDragger_.dragBubble(this.mostRecentEvent_, - this.currentDragDeltaXY_); + this.bubbleDragger_.dragBubble( + this.mostRecentEvent_, this.currentDragDeltaXY_); }; /** * Start a gesture: update the workspace to indicate that a gesture is in @@ -485,8 +488,7 @@ Blockly.Gesture.prototype.doStart = function(e) { Blockly.Tooltip.block(); if (this.targetBlock_) { - if (!this.targetBlock_.isInFlyout && - e.shiftKey && + if (!this.targetBlock_.isInFlyout && e.shiftKey && this.targetBlock_.workspace.keyboardAccessibilityMode) { this.creatorWorkspace_.getCursor().setCurNode( Blockly.ASTNode.createTopNode(this.targetBlock_)); @@ -501,8 +503,8 @@ Blockly.Gesture.prototype.doStart = function(e) { } if ((e.type.toLowerCase() == 'touchstart' || - e.type.toLowerCase() == 'pointerdown') && - e.pointerType != 'mouse') { + e.type.toLowerCase() == 'pointerdown') && + e.pointerType != 'mouse') { Blockly.longStart(e, this); } @@ -537,11 +539,11 @@ Blockly.Gesture.prototype.handleMove = function(e) { if (this.isDraggingWorkspace_) { this.workspaceDragger_.drag(this.currentDragDeltaXY_); } else if (this.isDraggingBlock_) { - this.blockDragger_.dragBlock(this.mostRecentEvent_, - this.currentDragDeltaXY_); + this.blockDragger_.dragBlock( + this.mostRecentEvent_, this.currentDragDeltaXY_); } else if (this.isDraggingBubble_) { - this.bubbleDragger_.dragBubble(this.mostRecentEvent_, - this.currentDragDeltaXY_); + this.bubbleDragger_.dragBubble( + this.mostRecentEvent_, this.currentDragDeltaXY_); } e.preventDefault(); e.stopPropagation(); @@ -602,11 +604,11 @@ Blockly.Gesture.prototype.cancel = function() { } Blockly.longStop_(); if (this.isDraggingBubble_) { - this.bubbleDragger_.endBubbleDrag(this.mostRecentEvent_, - this.currentDragDeltaXY_); + this.bubbleDragger_.endBubbleDrag( + this.mostRecentEvent_, this.currentDragDeltaXY_); } else if (this.isDraggingBlock_) { - this.blockDragger_.endBlockDrag(this.mostRecentEvent_, - this.currentDragDeltaXY_); + this.blockDragger_.endBlockDrag( + this.mostRecentEvent_, this.currentDragDeltaXY_); } else if (this.isDraggingWorkspace_) { this.workspaceDragger_.endDrag(this.currentDragDeltaXY_); } @@ -645,7 +647,8 @@ Blockly.Gesture.prototype.handleRightClick = function(e) { */ Blockly.Gesture.prototype.handleWsStart = function(e, ws) { if (this.hasStarted_) { - throw Error('Tried to call gesture.handleWsStart, ' + + throw Error( + 'Tried to call gesture.handleWsStart, ' + 'but the gesture had already been started.'); } this.setStartWorkspace_(ws); @@ -662,7 +665,7 @@ Blockly.Gesture.prototype.handleWsStart = function(e, ws) { * @private */ Blockly.Gesture.prototype.fireWorkspaceClick_ = function(ws) { - var clickEvent = new Blockly.Events.Ui(null, 'workspaceClick', null, null); + var clickEvent = new Blockly.Events.Ui(null, 'click', null, 'workspace'); clickEvent.workspaceId = ws.id; Blockly.Events.fire(clickEvent); }; @@ -670,12 +673,13 @@ Blockly.Gesture.prototype.fireWorkspaceClick_ = function(ws) { /** * Handle a mousedown/touchstart event on a flyout. * @param {!Event} e A mouse down or touch start event. - * @param {!Blockly.Flyout} flyout The flyout the event hit. + * @param {!Blockly.IFlyout} flyout The flyout the event hit. * @package */ Blockly.Gesture.prototype.handleFlyoutStart = function(e, flyout) { if (this.hasStarted_) { - throw Error('Tried to call gesture.handleFlyoutStart, ' + + throw Error( + 'Tried to call gesture.handleFlyoutStart, ' + 'but the gesture had already been started.'); } this.setStartFlyout_(flyout); @@ -690,7 +694,8 @@ Blockly.Gesture.prototype.handleFlyoutStart = function(e, flyout) { */ Blockly.Gesture.prototype.handleBlockStart = function(e, block) { if (this.hasStarted_) { - throw Error('Tried to call gesture.handleBlockStart, ' + + throw Error( + 'Tried to call gesture.handleBlockStart, ' + 'but the gesture had already been started.'); } this.setStartBlock(block); @@ -700,12 +705,13 @@ Blockly.Gesture.prototype.handleBlockStart = function(e, block) { /** * Handle a mousedown/touchstart event on a bubble. * @param {!Event} e A mouse down or touch start event. - * @param {!Blockly.Bubble} bubble The bubble the event hit. + * @param {!Blockly.IBubble} bubble The bubble the event hit. * @package */ Blockly.Gesture.prototype.handleBubbleStart = function(e, bubble) { if (this.hasStarted_) { - throw Error('Tried to call gesture.handleBubbleStart, ' + + throw Error( + 'Tried to call gesture.handleBubbleStart, ' + 'but the gesture had already been started.'); } this.setStartBubble(bubble); @@ -752,15 +758,15 @@ Blockly.Gesture.prototype.doBlockClick_ = function() { } else { // Clicks events are on the start block, even if it was a shadow. Blockly.Events.fire( - new Blockly.Events.Ui(this.startBlock_, 'click', undefined, undefined)); + new Blockly.Events.Ui(this.startBlock_, 'click', undefined, 'block')); } this.bringBlockToFront_(); Blockly.Events.setGroup(false); }; /** - * Execute a workspace click. Shift clicking puts the workspace in accessibility - * mode. + * Execute a workspace click. When in accessibility mode shift clicking will + * move the cursor. * @param {!Event} e A mouse up or touch end event. * @private */ @@ -774,7 +780,7 @@ Blockly.Gesture.prototype.doWorkspaceClick_ = function(e) { } else if (Blockly.selected) { Blockly.selected.unselect(); } - this.fireWorkspaceClick_(ws); + this.fireWorkspaceClick_(this.startWorkspace_ || ws); }; /* End functions defining what actions to take to execute clicks on each type @@ -802,7 +808,8 @@ Blockly.Gesture.prototype.bringBlockToFront_ = function() { */ Blockly.Gesture.prototype.setStartField = function(field) { if (this.hasStarted_) { - throw Error('Tried to call gesture.setStartField, ' + + throw Error( + 'Tried to call gesture.setStartField, ' + 'but the gesture had already been started.'); } if (!this.startField_) { @@ -812,7 +819,7 @@ Blockly.Gesture.prototype.setStartField = function(field) { /** * Record the bubble that a gesture started on - * @param {Blockly.Bubble} bubble The bubble the gesture started on. + * @param {Blockly.IBubble} bubble The bubble the gesture started on. * @package */ Blockly.Gesture.prototype.setStartBubble = function(bubble) { @@ -867,7 +874,7 @@ Blockly.Gesture.prototype.setStartWorkspace_ = function(ws) { /** * Record the flyout that a gesture started on. - * @param {Blockly.Flyout} flyout The flyout the gesture started on. + * @param {Blockly.IFlyout} flyout The flyout the gesture started on. * @private */ Blockly.Gesture.prototype.setStartFlyout_ = function(flyout) { @@ -914,8 +921,8 @@ Blockly.Gesture.prototype.isBlockClick_ = function() { * @private */ Blockly.Gesture.prototype.isFieldClick_ = function() { - var fieldClickable = this.startField_ ? - this.startField_.isClickable() : false; + var fieldClickable = + this.startField_ ? this.startField_.isClickable() : false; return fieldClickable && !this.hasExceededDragRadius_ && (!this.flyout_ || !this.flyout_.autoClose); }; @@ -927,8 +934,8 @@ Blockly.Gesture.prototype.isFieldClick_ = function() { * @private */ Blockly.Gesture.prototype.isWorkspaceClick_ = function() { - var onlyTouchedWorkspace = !this.startBlock_ && !this.startBubble_ && - !this.startField_; + var onlyTouchedWorkspace = + !this.startBlock_ && !this.startBubble_ && !this.startField_; return onlyTouchedWorkspace && !this.hasExceededDragRadius_; }; diff --git a/core/grid.js b/core/grid.js index 89b1a4ca889..e1b9c5d88a5 100644 --- a/core/grid.js +++ b/core/grid.js @@ -14,6 +14,7 @@ goog.provide('Blockly.Grid'); goog.require('Blockly.utils.dom'); +goog.require('Blockly.utils.Svg'); goog.require('Blockly.utils.userAgent'); @@ -196,22 +197,26 @@ Blockly.Grid.createDom = function(rnd, gridOptions, defs) { */ - var gridPattern = Blockly.utils.dom.createSvgElement('pattern', + var gridPattern = Blockly.utils.dom.createSvgElement( + Blockly.utils.Svg.PATTERN, { 'id': 'blocklyGridPattern' + rnd, 'patternUnits': 'userSpaceOnUse' }, defs); if (gridOptions['length'] > 0 && gridOptions['spacing'] > 0) { - Blockly.utils.dom.createSvgElement('line', + Blockly.utils.dom.createSvgElement( + Blockly.utils.Svg.LINE, {'stroke': gridOptions['colour']}, gridPattern); if (gridOptions['length'] > 1) { - Blockly.utils.dom.createSvgElement('line', + Blockly.utils.dom.createSvgElement( + Blockly.utils.Svg.LINE, {'stroke': gridOptions['colour']}, gridPattern); } // x1, y1, x1, x2 properties will be set later in update. } else { // Edge 16 doesn't handle empty patterns - Blockly.utils.dom.createSvgElement('line', {}, gridPattern); + Blockly.utils.dom.createSvgElement( + Blockly.utils.Svg.LINE, {}, gridPattern); } return gridPattern; }; diff --git a/core/icon.js b/core/icon.js index 0a180ce6904..506915fcdf5 100644 --- a/core/icon.js +++ b/core/icon.js @@ -16,6 +16,7 @@ goog.require('Blockly.utils'); goog.require('Blockly.utils.Coordinate'); goog.require('Blockly.utils.dom'); goog.require('Blockly.utils.Size'); +goog.require('Blockly.utils.Svg'); /** @@ -31,6 +32,12 @@ Blockly.Icon = function(block) { * @protected */ this.block_ = block; + + /** + * The icon SVG group. + * @type {?SVGGElement} + */ + this.iconGroup_ = null; }; /** @@ -70,7 +77,8 @@ Blockly.Icon.prototype.createIcon = function() { ... */ - this.iconGroup_ = Blockly.utils.dom.createSvgElement('g', + this.iconGroup_ = Blockly.utils.dom.createSvgElement( + Blockly.utils.Svg.G, {'class': 'blocklyIconGroup'}, null); if (this.block_.isInFlyout) { Blockly.utils.dom.addClass( @@ -153,7 +161,8 @@ Blockly.Icon.prototype.setIconLocation = function(xy) { Blockly.Icon.prototype.computeIconLocation = function() { // Find coordinates for the centre of the icon and update the arrow. var blockXY = this.block_.getRelativeToSurfaceXY(); - var iconXY = Blockly.utils.getRelativeXY(this.iconGroup_); + var iconXY = Blockly.utils.getRelativeXY( + /** @type {!SVGElement} */ (this.iconGroup_)); var newXY = new Blockly.utils.Coordinate( blockXY.x + iconXY.x + this.SIZE / 2, blockXY.y + iconXY.y + this.SIZE / 2); @@ -189,3 +198,9 @@ Blockly.Icon.prototype.getCorrectedSize = function() { * @protected */ Blockly.Icon.prototype.drawIcon_; + +/** + * Show or hide the icon. + * @param {boolean} visible True if the icon should be visible. + */ +Blockly.Icon.prototype.setVisible; diff --git a/core/inject.js b/core/inject.js index 93651f83426..0278f924ead 100644 --- a/core/inject.js +++ b/core/inject.js @@ -25,6 +25,7 @@ goog.require('Blockly.Tooltip'); goog.require('Blockly.user.keyMap'); goog.require('Blockly.utils'); goog.require('Blockly.utils.dom'); +goog.require('Blockly.utils.Svg'); goog.require('Blockly.utils.userAgent'); goog.require('Blockly.WorkspaceDragSurfaceSvg'); goog.require('Blockly.WorkspaceSvg'); @@ -113,20 +114,22 @@ Blockly.createDom_ = function(container, options) { ... */ - var svg = Blockly.utils.dom.createSvgElement('svg', { - 'xmlns': Blockly.utils.dom.SVG_NS, - 'xmlns:html': Blockly.utils.dom.HTML_NS, - 'xmlns:xlink': Blockly.utils.dom.XLINK_NS, - 'version': '1.1', - 'class': 'blocklySvg', - 'tabindex': '0' - }, container); + var svg = Blockly.utils.dom.createSvgElement( + Blockly.utils.Svg.SVG, { + 'xmlns': Blockly.utils.dom.SVG_NS, + 'xmlns:html': Blockly.utils.dom.HTML_NS, + 'xmlns:xlink': Blockly.utils.dom.XLINK_NS, + 'version': '1.1', + 'class': 'blocklySvg', + 'tabindex': '0' + }, container); /* ... filters go here ... */ - var defs = Blockly.utils.dom.createSvgElement('defs', {}, svg); + var defs = Blockly.utils.dom.createSvgElement( + Blockly.utils.Svg.DEFS, {}, svg); // Each filter/pattern needs a unique ID for the case of multiple Blockly // instances on a page. Browser behaviour becomes undefined otherwise. // https://neil.fraser.name/news/2015/11/01/ @@ -164,7 +167,7 @@ Blockly.createMainWorkspace_ = function(svg, options, blockDragSurface, if (!wsOptions.hasCategories && wsOptions.languageTree) { // Add flyout as an that is a sibling of the workspace svg. - var flyout = mainWorkspace.addFlyout('svg'); + var flyout = mainWorkspace.addFlyout(Blockly.utils.Svg.SVG); Blockly.utils.dom.insertAfter(flyout, svg); } if (wsOptions.hasTrashcan) { @@ -309,7 +312,7 @@ Blockly.createMainWorkspace_ = function(svg, options, blockDragSurface, } if (e) { if (!e.group && object) { - console.log('WARNING: Moved object in bounds but there was no' + + console.warn('Moved object in bounds but there was no' + ' event group. This may break undo.'); } if (oldGroup !== null) { @@ -367,7 +370,9 @@ Blockly.init_ = function(mainWorkspace) { // Build a fixed flyout with the root blocks. flyout.init(mainWorkspace); flyout.show(options.languageTree); - flyout.scrollToStart(); + if (typeof flyout.scrollToStart == 'function') { + flyout.scrollToStart(); + } } } diff --git a/core/input.js b/core/input.js index ab6db530313..40a454e3153 100644 --- a/core/input.js +++ b/core/input.js @@ -105,6 +105,7 @@ Blockly.Input.prototype.insertFieldAt = function(index, field, opt_name) { field.setSourceBlock(this.sourceBlock_); if (this.sourceBlock_.rendered) { field.init(); + field.applyColour(); } field.name = opt_name; field.setVisible(this.isVisible()); @@ -244,6 +245,30 @@ Blockly.Input.prototype.setAlign = function(align) { return this; }; +/** + * Changes the connection's shadow block. + * @param {Element} shadow DOM representation of a block or null. + * @return {Blockly.Input} The input being modified (to allow chaining). + */ +Blockly.Input.prototype.setShadowDom = function(shadow) { + if (!this.connection) { + throw Error('This input does not have a connection.'); + } + this.connection.setShadowDom(shadow); + return this; +}; + +/** + * Returns the xml representation of the connection's shadow block. + * @return {Element} Shadow DOM representation of a block or null. + */ +Blockly.Input.prototype.getShadowDom = function() { + if (!this.connection) { + throw Error('This input does not have a connection.'); + } + return this.connection.getShadowDom(); +}; + /** * Initialize the fields on this input. */ diff --git a/core/insertion_marker_manager.js b/core/insertion_marker_manager.js index 2d47dd29606..bf7c8ae3e92 100644 --- a/core/insertion_marker_manager.js +++ b/core/insertion_marker_manager.js @@ -306,6 +306,14 @@ Blockly.InsertionMarkerManager.prototype.initAvailableConnections_ = function() if (lastOnStack && lastOnStack != this.topBlock_.nextConnection) { available.push(lastOnStack); this.lastOnStack_ = lastOnStack; + if (this.lastMarker_) { + Blockly.Events.disable(); + try { + this.lastMarker_.dispose(); + } finally { + Blockly.Events.enable(); + } + } this.lastMarker_ = this.createMarkerBlock_(lastOnStack.getSourceBlock()); } return available; diff --git a/core/interfaces/i_bubble.js b/core/interfaces/i_bubble.js new file mode 100644 index 00000000000..bbf9fdae31a --- /dev/null +++ b/core/interfaces/i_bubble.js @@ -0,0 +1,83 @@ +/** + * @license + * Copyright 2020 Google LLC + * SPDX-License-Identifier: Apache-2.0 + */ + +/** + * @fileoverview The interface for a bubble. + * @author samelh@google.com (Sam El-Husseini) + */ + +'use strict'; + +goog.provide('Blockly.IBubble'); + +goog.requireType('Blockly.IContextMenu'); +goog.requireType('Blockly.IDeletable'); + + +/** + * A bubble interface. + * @interface + * @extends {Blockly.IDeletable} + * @extends {Blockly.IContextMenu} + */ +Blockly.IBubble = function() {}; + +/** + * Return the coordinates of the top-left corner of this bubble's body relative + * to the drawing surface's origin (0,0), in workspace units. + * @return {!Blockly.utils.Coordinate} Object with .x and .y properties. + */ +Blockly.IBubble.prototype.getRelativeToSurfaceXY; + +/** + * Return the root node of the bubble's SVG group. + * @return {!SVGElement} The root SVG node of the bubble's group. + */ +Blockly.IBubble.prototype.getSvgRoot; + +/** + * Set whether auto-layout of this bubble is enabled. The first time a bubble + * is shown it positions itself to not cover any blocks. Once a user has + * dragged it to reposition, it renders where the user put it. + * @param {boolean} enable True if auto-layout should be enabled, false + * otherwise. + */ +Blockly.IBubble.prototype.setAutoLayout; + +/** + * Triggers a move callback if one exists at the end of a drag. + * @param {boolean} adding True if adding, false if removing. + */ +Blockly.IBubble.prototype.setDragging; + +/** + * Move this bubble during a drag, taking into account whether or not there is + * a drag surface. + * @param {Blockly.BlockDragSurfaceSvg} dragSurface The surface that carries + * rendered items during a drag, or null if no drag surface is in use. + * @param {!Blockly.utils.Coordinate} newLoc The location to translate to, in + * workspace coordinates. + */ +Blockly.IBubble.prototype.moveDuringDrag; + +/** + * Move the bubble to the specified location in workspace coordinates. + * @param {number} x The x position to move to. + * @param {number} y The y position to move to. + */ +Blockly.IBubble.prototype.moveTo; + +/** + * Update the style of this bubble when it is dragged over a delete area. + * @param {boolean} enable True if the bubble is about to be deleted, false + * otherwise. + */ +Blockly.IBubble.prototype.setDeleteStyle; + +/** + * Dispose of this bubble. + */ +Blockly.IBubble.prototype.dispose; diff --git a/core/interfaces/i_connection_checker.js b/core/interfaces/i_connection_checker.js new file mode 100644 index 00000000000..505401666d2 --- /dev/null +++ b/core/interfaces/i_connection_checker.js @@ -0,0 +1,94 @@ +/** + * @license + * Copyright 2020 Google LLC + * SPDX-License-Identifier: Apache-2.0 + */ + +/** + * @fileoverview The interface for an object that encapsulates logic for + * checking whether a potential connection is safe and valid. + * @author fenichel@google.com (Rachel Fenichel) + */ +'use strict'; + +goog.provide('Blockly.IConnectionChecker'); + +goog.requireType('Blockly.Connection'); + + +/** + * Class for connection type checking logic. + * @interface + */ +Blockly.IConnectionChecker = function() {}; + +/** + * Check whether the current connection can connect with the target + * connection. + * @param {Blockly.Connection} a Connection to check compatibility with. + * @param {Blockly.Connection} b Connection to check compatibility with. + * @param {boolean} isDragging True if the connection is being made by dragging + * a block. + * @param {number=} opt_distance The max allowable distance between the + * connections for drag checks. + * @return {boolean} Whether the connection is legal. + * @public + */ +Blockly.IConnectionChecker.prototype.canConnect; + +/** + * Checks whether the current connection can connect with the target + * connection, and return an error code if there are problems. + * @param {Blockly.Connection} a Connection to check compatibility with. + * @param {Blockly.Connection} b Connection to check compatibility with. + * @param {boolean} isDragging True if the connection is being made by dragging + * a block. + * @param {number=} opt_distance The max allowable distance between the + * connections for drag checks. + * @return {number} Blockly.Connection.CAN_CONNECT if the connection is legal, + * an error code otherwise. + * @public + */ +Blockly.IConnectionChecker.prototype.canConnectWithReason; + +/** + * Helper method that translates a connection error code into a string. + * @param {number} errorCode The error code. + * @param {Blockly.Connection} a One of the two connections being checked. + * @param {Blockly.Connection} b The second of the two connections being + * checked. + * @return {string} A developer-readable error string. + * @public + */ +Blockly.IConnectionChecker.prototype.getErrorMessage; + +/** + * Check that connecting the given connections is safe, meaning that it would + * not break any of Blockly's basic assumptions (e.g. no self connections). + * @param {Blockly.Connection} a The first of the connections to check. + * @param {Blockly.Connection} b The second of the connections to check. + * @return {number} An enum with the reason this connection is safe or unsafe. + * @public + */ +Blockly.IConnectionChecker.prototype.doSafetyChecks; + +/** + * Check whether this connection is compatible with another connection with + * respect to the value type system. E.g. square_root("Hello") is not + * compatible. + * @param {!Blockly.Connection} a Connection to compare. + * @param {!Blockly.Connection} b Connection to compare against. + * @return {boolean} True if the connections share a type. + * @public + */ +Blockly.IConnectionChecker.prototype.doTypeChecks; + +/** + * Check whether this connection can be made by dragging. + * @param {!Blockly.RenderedConnection} a Connection to compare. + * @param {!Blockly.RenderedConnection} b Connection to compare against. + * @param {number} distance The maximum allowable distance between connections. + * @return {boolean} True if the connection is allowed during a drag. + * @public + */ +Blockly.IConnectionChecker.prototype.doDragChecks; diff --git a/core/interfaces/i_contextmenu.js b/core/interfaces/i_contextmenu.js new file mode 100644 index 00000000000..fcc406b05e8 --- /dev/null +++ b/core/interfaces/i_contextmenu.js @@ -0,0 +1,26 @@ +/** + * @license + * Copyright 2020 Google LLC + * SPDX-License-Identifier: Apache-2.0 + */ + +/** + * @fileoverview The interface for an object that supports a right-click. + * @author samelh@google.com (Sam El-Husseini) + */ + +'use strict'; + +goog.provide('Blockly.IContextMenu'); + + +/** + * @interface + */ +Blockly.IContextMenu = function() {}; + +/** + * Show the context menu for this object. + * @param {!Event} e Mouse event. + */ +Blockly.IContextMenu.prototype.showContextMenu; diff --git a/core/interfaces/i_copyable.js b/core/interfaces/i_copyable.js index a20565dc5d9..4aeac977649 100644 --- a/core/interfaces/i_copyable.js +++ b/core/interfaces/i_copyable.js @@ -25,7 +25,7 @@ Blockly.ICopyable = function() {}; /** * Encode for copying. - * @return {!Blockly.ICopyable.CopyData} Copy metadata. + * @return {?Blockly.ICopyable.CopyData} Copy metadata. */ Blockly.ICopyable.prototype.toCopyData; diff --git a/core/interfaces/i_flyout.js b/core/interfaces/i_flyout.js new file mode 100644 index 00000000000..37ffeaba354 --- /dev/null +++ b/core/interfaces/i_flyout.js @@ -0,0 +1,178 @@ +/** + * @license + * Copyright 2020 Google LLC + * SPDX-License-Identifier: Apache-2.0 + */ + +/** + * @fileoverview The interface for a flyout. + * @author aschmiedt@google.com (Abby Schmiedt) + */ + +'use strict'; + +goog.provide('Blockly.IFlyout'); + +goog.requireType('Blockly.BlockSvg'); +goog.requireType('Blockly.IRegistrable'); +goog.requireType('Blockly.utils.dom'); +goog.requireType('Blockly.utils.Coordinate'); +goog.requireType('Blockly.utils.Svg'); +goog.requireType('Blockly.utils.toolbox'); +goog.requireType('Blockly.WorkspaceSvg'); + + +/** + * Interface for a flyout. + * @extends {Blockly.IRegistrable} + * @interface + */ +Blockly.IFlyout = function() {}; + +/** + * Whether the flyout is laid out horizontally or not. + * @type {boolean} + */ +Blockly.IFlyout.prototype.horizontalLayout; + +/** + * Is RTL vs LTR. + * @type {boolean} + */ +Blockly.IFlyout.prototype.RTL; + +/** + * The target workspace + * @type {?Blockly.WorkspaceSvg} + */ +Blockly.IFlyout.prototype.targetWorkspace; + +/** + * Margin around the edges of the blocks in the flyout. + * @type {number} + * @const + */ +Blockly.IFlyout.prototype.MARGIN; + +/** + * Does the flyout automatically close when a block is created? + * @type {boolean} + */ +Blockly.IFlyout.prototype.autoClose; + +/** + * Corner radius of the flyout background. + * @type {number} + * @const + */ +Blockly.IFlyout.prototype.CORNER_RADIUS; + +/** + * Creates the flyout's DOM. Only needs to be called once. The flyout can + * either exist as its own svg element or be a g element nested inside a + * separate svg element. + * @param {string| + * !Blockly.utils.Svg| + * !Blockly.utils.Svg} tagName The type of tag to + * put the flyout in. This should be or . + * @return {!SVGElement} The flyout's SVG group. + */ +Blockly.IFlyout.prototype.createDom; + +/** + * Initializes the flyout. + * @param {!Blockly.WorkspaceSvg} targetWorkspace The workspace in which to + * create new blocks. + */ +Blockly.IFlyout.prototype.init; + +/** + * Dispose of this flyout. + * Unlink from all DOM elements to prevent memory leaks. + */ +Blockly.IFlyout.prototype.dispose; + +/** + * Get the width of the flyout. + * @return {number} The width of the flyout. + */ +Blockly.IFlyout.prototype.getWidth; + +/** + * Get the height of the flyout. + * @return {number} The width of the flyout. + */ +Blockly.IFlyout.prototype.getHeight; + +/** + * Get the workspace inside the flyout. + * @return {!Blockly.WorkspaceSvg} The workspace inside the flyout. + */ +Blockly.IFlyout.prototype.getWorkspace; + +/** + * Is the flyout visible? + * @return {boolean} True if visible. + */ +Blockly.IFlyout.prototype.isVisible; + +/** + * Set whether the flyout is visible. A value of true does not necessarily mean + * that the flyout is shown. It could be hidden because its container is hidden. + * @param {boolean} visible True if visible. + */ +Blockly.IFlyout.prototype.setVisible; + +/** + * Set whether this flyout's container is visible. + * @param {boolean} visible Whether the container is visible. + */ +Blockly.IFlyout.prototype.setContainerVisible; + +/** + * Hide and empty the flyout. + */ +Blockly.IFlyout.prototype.hide; + +/** + * Show and populate the flyout. + * @param {!Blockly.utils.toolbox.FlyoutDefinition|string} flyoutDef Contents to + * display in the flyout. This is either an array of Nodes, a NodeList, a + * toolbox definition, or a string with the name of the dynamic category. + */ +Blockly.IFlyout.prototype.show; + +/** + * Create a copy of this block on the workspace. + * @param {!Blockly.BlockSvg} originalBlock The block to copy from the flyout. + * @return {!Blockly.BlockSvg} The newly created block. + * @throws {Error} if something went wrong with deserialization. + */ +Blockly.IFlyout.prototype.createBlock; + +/** + * Reflow blocks and their mats. + */ +Blockly.IFlyout.prototype.reflow; + +/** + * @return {boolean} True if this flyout may be scrolled with a scrollbar or by + * dragging. + */ +Blockly.IFlyout.prototype.isScrollable; + +/** + * Position the flyout. + * @return {void} + */ +Blockly.IFlyout.prototype.position; + +/** + * Determine if a drag delta is toward the workspace, based on the position + * and orientation of the flyout. This is used in determineDragIntention_ to + * determine if a new block should be created or if the flyout should scroll. + * @param {!Blockly.utils.Coordinate} currentDragDeltaXY How far the pointer has + * moved from the position at mouse down, in pixel units. + * @return {boolean} True if the drag is toward the workspace. + */ +Blockly.IFlyout.prototype.isDragTowardWorkspace; diff --git a/core/interfaces/i_registrable.js b/core/interfaces/i_registrable.js index ed989671b8b..f7b8ca71914 100644 --- a/core/interfaces/i_registrable.js +++ b/core/interfaces/i_registrable.js @@ -18,5 +18,5 @@ goog.provide('Blockly.IRegistrable'); /** * The interface for a Blockly component that can be registered. * @interface - * */ + */ Blockly.IRegistrable = function() {}; diff --git a/core/interfaces/i_registrable_field.js b/core/interfaces/i_registrable_field.js new file mode 100644 index 00000000000..1d49edad2ff --- /dev/null +++ b/core/interfaces/i_registrable_field.js @@ -0,0 +1,31 @@ +/** + * @license + * Copyright 2020 Google LLC + * SPDX-License-Identifier: Apache-2.0 + */ + +/** + * @fileoverview The interface for a Blockly field that can be registered. + * @author samelh@google.com (Sam El-Husseini) + */ + +'use strict'; + +goog.provide('Blockly.IRegistrableField'); + +goog.requireType('Blockly.Field'); + +/** + * A registrable field. + * Note: We are not using an interface here as we are interested in defining the + * static methods of a field rather than the instance methods. + * @typedef {{ + * fromJson:Blockly.IRegistrableField.fromJson + * }} + */ +Blockly.IRegistrableField; + +/** + * @typedef {function(!Object): Blockly.Field} + */ +Blockly.IRegistrableField.fromJson; diff --git a/core/interfaces/i_toolbox.js b/core/interfaces/i_toolbox.js index 456829fc5c6..208be48cc4c 100644 --- a/core/interfaces/i_toolbox.js +++ b/core/interfaces/i_toolbox.js @@ -13,7 +13,11 @@ goog.provide('Blockly.IToolbox'); +goog.requireType('Blockly.IFlyout'); goog.requireType('Blockly.IRegistrable'); +goog.requireType('Blockly.IToolboxItem'); +goog.requireType('Blockly.utils.toolbox'); +goog.requireType('Blockly.WorkspaceSvg'); /** @@ -30,44 +34,58 @@ Blockly.IToolbox = function() {}; Blockly.IToolbox.prototype.init; /** - * Fill the toolbox with categories and blocks. - * @param {Array.} toolboxDef Array holding objects - * containing information on the contents of the toolbox. + * Fills the toolbox with new toolbox items and removes any old contents. + * @param {!Blockly.utils.toolbox.ToolboxInfo} toolboxDef Object holding information + * for creating a toolbox. */ Blockly.IToolbox.prototype.render; /** - * Dispose of this toolbox. - * @return {void} - */ -Blockly.IToolbox.prototype.dispose; - -/** - * Get the width of the toolbox. + * Gets the width of the toolbox. * @return {number} The width of the toolbox. */ Blockly.IToolbox.prototype.getWidth; /** - * Get the height of the toolbox. + * Gets the height of the toolbox. * @return {number} The width of the toolbox. */ Blockly.IToolbox.prototype.getHeight; /** - * Get the toolbox flyout. - * @return {Blockly.Flyout} The toolbox flyout. + * Gets the toolbox flyout. + * @return {?Blockly.IFlyout} The toolbox flyout. */ Blockly.IToolbox.prototype.getFlyout; /** - * Move the toolbox to the edge. + * Gets the workspace for the toolbox. + * @return {!Blockly.WorkspaceSvg} The parent workspace for the toolbox. + */ +Blockly.IToolbox.prototype.getWorkspace; + +/** + * Gets whether or not the toolbox is horizontal. + * @return {boolean} True if the toolbox is horizontal, false if the toolbox is + * vertical. + */ +Blockly.IToolbox.prototype.isHorizontal; + +/** + * Positions the toolbox based on whether it is a horizontal toolbox and whether + * the workspace is in rtl. * @return {void} */ Blockly.IToolbox.prototype.position; /** - * Unhighlight any previously specified option. + * Handles resizing the toolbox when a toolbox item resizes. + * @return {void} + */ +Blockly.IToolbox.prototype.handleToolboxItemResize; + +/** + * Unhighlights any previously selected item. * @return {void} */ Blockly.IToolbox.prototype.clearSelection; @@ -79,7 +97,7 @@ Blockly.IToolbox.prototype.clearSelection; Blockly.IToolbox.prototype.refreshTheme; /** - * Update the flyout's contents without closing it. Should be used in response + * Updates the flyout's content without closing it. Should be used in response * to a change in one of the dynamic categories, such as variables or * procedures. * @return {void} @@ -87,13 +105,27 @@ Blockly.IToolbox.prototype.refreshTheme; Blockly.IToolbox.prototype.refreshSelection; /** - * Toggles the visibility of the toolbox. - * @param {boolean} isVisible True if the toolbox should be visible. + * Sets the visibility of the toolbox. + * @param {boolean} isVisible True if toolbox should be visible. */ Blockly.IToolbox.prototype.setVisible; /** - * Select the first toolbox category if no category is selected. + * Selects the toolbox item by it's position in the list of toolbox items. + * @param {number} position The position of the item to select. * @return {void} */ -Blockly.IToolbox.prototype.selectFirstCategory; +Blockly.IToolbox.prototype.selectItemByPosition; + +/** + * Gets the selected item. + * @return {?Blockly.IToolboxItem} The selected item, or null if no item is + * currently selected. + */ +Blockly.IToolbox.prototype.getSelectedItem; + +/** + * Disposes of this toolbox. + * @return {void} + */ +Blockly.IToolbox.prototype.dispose; diff --git a/core/interfaces/i_toolbox_item.js b/core/interfaces/i_toolbox_item.js new file mode 100644 index 00000000000..87bc0d8ddae --- /dev/null +++ b/core/interfaces/i_toolbox_item.js @@ -0,0 +1,148 @@ +/** + * @license + * Copyright 2020 Google LLC + * SPDX-License-Identifier: Apache-2.0 + */ + +/** + * @fileoverview The interface for a toolbox item. + * @author aschmiedt@google.com (Abby Schmiedt) + */ + +'use strict'; + +goog.provide('Blockly.ICollapsibleToolboxItem'); +goog.provide('Blockly.ISelectableToolboxItem'); +goog.provide('Blockly.IToolboxItem'); + +goog.requireType('Blockly.utils.toolbox'); + + +/** + * Interface for an item in the toolbox. + * @interface + */ +Blockly.IToolboxItem = function() {}; + +/** + * Initializes the toolbox item. + * This includes creating the dom and updating the state of any items based + * on the info object. + * @return {void} + * @public + */ +Blockly.IToolboxItem.prototype.init; + +/** + * Gets the div for the toolbox item. + * @return {?Element} The div for the toolbox item. + * @public + */ +Blockly.IToolboxItem.prototype.getDiv; + +/** + * Gets a unique identifier for this toolbox item. + * @return {string} The id for the toolbox item. + * @public + */ +Blockly.IToolboxItem.prototype.getId; + +/** + * Gets the parent if the toolbox item is nested. + * @return {?Blockly.IToolboxItem} The parent toolbox item, or null if + * this toolbox item is not nested. + * @public + */ +Blockly.IToolboxItem.prototype.getParent; + +/** + * Gets the nested level of the category. + * @return {number} The nested level of the category. + * @package + */ +Blockly.IToolboxItem.prototype.getLevel; + +/** + * Whether the toolbox item is selectable. + * @return {boolean} True if the toolbox item can be selected. + * @public + */ +Blockly.IToolboxItem.prototype.isSelectable; + +/** + * Whether the toolbox item is collapsible. + * @return {boolean} True if the toolbox item is collapsible. + * @public + */ +Blockly.IToolboxItem.prototype.isCollapsible; + +/** + * Dispose of this toolbox item. No-op by default. + * @public + */ +Blockly.IToolboxItem.prototype.dispose; + +/** + * Interface for an item in the toolbox that can be selected. + * @extends {Blockly.IToolboxItem} + * @interface + */ +Blockly.ISelectableToolboxItem = function() {}; + +/** + * Gets the name of the toolbox item. Used for emitting events. + * @return {string} The name of the toolbox item. + * @public + */ +Blockly.ISelectableToolboxItem.prototype.getName; + +/** + * Gets the contents of the toolbox item. These are items that are meant to be + * displayed in the flyout. + * @return {!Blockly.utils.toolbox.FlyoutItemInfoArray|string} The definition + * of items to be displayed in the flyout. + * @public + */ +Blockly.ISelectableToolboxItem.prototype.getContents; + +/** + * Sets the current toolbox item as selected. + * @param {boolean} _isSelected True if this category is selected, false + * otherwise. + * @public + */ +Blockly.ISelectableToolboxItem.prototype.setSelected; + +/** + * Handles when the toolbox item is clicked. + * @param {!Event} _e Click event to handle. + * @public + */ +Blockly.ISelectableToolboxItem.prototype.onClick; + +/** + * Interface for an item in the toolbox that can be collapsed. + * @extends {Blockly.ISelectableToolboxItem} + * @interface + */ +Blockly.ICollapsibleToolboxItem = function() {}; + +/** + * Gets any children toolbox items. (ex. Gets the subcategories) + * @return {!Array} The child toolbox items. + */ +Blockly.ICollapsibleToolboxItem.prototype.getChildToolboxItems; + +/** + * Whether the toolbox item is expanded to show its child subcategories. + * @return {boolean} True if the toolbox item shows its children, false if it + * is collapsed. + * @public + */ +Blockly.ICollapsibleToolboxItem.prototype.isExpanded; + +/** + * Toggles whether or not the toolbox item is expanded. + * @public + */ +Blockly.ICollapsibleToolboxItem.prototype.toggleExpanded; diff --git a/core/keyboard_nav/navigation.js b/core/keyboard_nav/navigation.js index 914882592e1..2040894fc69 100644 --- a/core/keyboard_nav/navigation.js +++ b/core/keyboard_nav/navigation.js @@ -18,6 +18,7 @@ goog.require('Blockly.ASTNode'); goog.require('Blockly.utils.Coordinate'); goog.require('Blockly.user.keyMap'); + /** * A function to call to give feedback to the user about logs, warnings, and * errors. You can override this to customize feedback (e.g. warning sounds, @@ -130,7 +131,9 @@ Blockly.navigation.focusToolbox_ = function() { if (!Blockly.navigation.getMarker().getCurNode()) { Blockly.navigation.markAtCursor_(); } - toolbox.selectFirstCategory(); + if (!toolbox.getSelectedItem()) { + toolbox.selectItemByPosition(0); + } } }; @@ -409,9 +412,9 @@ Blockly.navigation.moveAndConnect_ = function(movingConnection, destConnection) } var movingBlock = movingConnection.getSourceBlock(); - if (destConnection.canConnectWithReason(movingConnection) == - Blockly.Connection.CAN_CONNECT) { + var checker = movingConnection.getConnectionChecker(); + if (checker.canConnect(movingConnection, destConnection, false)) { Blockly.navigation.disconnectChild_(movingConnection, destConnection); if (!destConnection.isSuperior()) { @@ -499,13 +502,11 @@ Blockly.navigation.connect_ = function(movingConnection, destConnection) { } else if (Blockly.navigation.moveAndConnect_(movingConnection, destConnection)){ return true; } else { - try { - destConnection.checkConnection(movingConnection); - } - catch (e) { - // If nothing worked report the error from the original connections. - Blockly.navigation.warn_('Connection failed with error: ' + e); - } + var checker = movingConnection.getConnectionChecker(); + var reason = checker.canConnectWithReason( + movingConnection, destConnection, false); + Blockly.navigation.warn_('Connection failed with error: ' + + checker.getErrorMessage(reason, movingConnection, destConnection)); return false; } }; diff --git a/core/marker_manager.js b/core/marker_manager.js index 22090e81e31..d8081714fec 100644 --- a/core/marker_manager.js +++ b/core/marker_manager.js @@ -176,6 +176,8 @@ Blockly.MarkerManager.prototype.dispose = function() { this.unregisterMarker(markerId); } this.markers_ = null; - this.cursor_.dispose(); - this.cursor_ = null; + if (this.cursor_) { + this.cursor_.dispose(); + this.cursor_ = null; + } }; diff --git a/core/mutator.js b/core/mutator.js index 884f1ca4672..3e4ba64cc94 100644 --- a/core/mutator.js +++ b/core/mutator.js @@ -23,6 +23,8 @@ goog.require('Blockly.utils'); goog.require('Blockly.utils.dom'); goog.require('Blockly.utils.global'); goog.require('Blockly.utils.object'); +goog.require('Blockly.utils.Svg'); +goog.require('Blockly.utils.toolbox'); goog.require('Blockly.utils.xml'); goog.require('Blockly.WorkspaceSvg'); goog.require('Blockly.Xml'); @@ -80,7 +82,8 @@ Blockly.Mutator.prototype.getWorkspace = function() { */ Blockly.Mutator.prototype.drawIcon_ = function(group) { // Square with rounded corners. - Blockly.utils.dom.createSvgElement('rect', + Blockly.utils.dom.createSvgElement( + Blockly.utils.Svg.RECT, { 'class': 'blocklyIconShape', 'rx': '4', @@ -90,7 +93,8 @@ Blockly.Mutator.prototype.drawIcon_ = function(group) { }, group); // Gear teeth. - Blockly.utils.dom.createSvgElement('path', + Blockly.utils.dom.createSvgElement( + Blockly.utils.Svg.PATH, { 'class': 'blocklyIconSymbol', 'd': 'm4.203,7.296 0,1.368 -0.92,0.677 -0.11,0.41 0.9,1.559 0.41,' + @@ -104,7 +108,7 @@ Blockly.Mutator.prototype.drawIcon_ = function(group) { group); // Axle hole. Blockly.utils.dom.createSvgElement( - 'circle', + Blockly.utils.Svg.CIRCLE, { 'class': 'blocklyIconShape', 'r': '2.7', @@ -138,7 +142,8 @@ Blockly.Mutator.prototype.createEditor_ = function() { [Workspace] */ - this.svgDialog_ = Blockly.utils.dom.createSvgElement('svg', + this.svgDialog_ = Blockly.utils.dom.createSvgElement( + Blockly.utils.Svg.SVG, {'x': Blockly.Bubble.BORDER_WIDTH, 'y': Blockly.Bubble.BORDER_WIDTH}, null); // Convert the list of names into a list of XML objects for the flyout. @@ -165,12 +170,13 @@ Blockly.Mutator.prototype.createEditor_ = function() { 'renderer': this.block_.workspace.options.renderer, 'rendererOverrides': this.block_.workspace.options.rendererOverrides })); - workspaceOptions.toolboxPosition = this.block_.RTL ? Blockly.TOOLBOX_AT_RIGHT : - Blockly.TOOLBOX_AT_LEFT; + workspaceOptions.toolboxPosition = this.block_.RTL ? + Blockly.utils.toolbox.Position.RIGHT : + Blockly.utils.toolbox.Position.LEFT; var hasFlyout = !!quarkXml; if (hasFlyout) { workspaceOptions.languageTree = - Blockly.utils.toolbox.convertToolboxToJSON(quarkXml); + Blockly.utils.toolbox.convertToolboxDefToJson(quarkXml); workspaceOptions.getMetrics = this.getFlyoutMetrics_.bind(this); } this.workspace_ = new Blockly.WorkspaceSvg(workspaceOptions); @@ -181,7 +187,8 @@ Blockly.Mutator.prototype.createEditor_ = function() { // a top level svg. Instead of handling scale themselves, mutators // inherit scale from the parent workspace. // To fix this, scale needs to be applied at a different level in the dom. - var flyoutSvg = hasFlyout ? this.workspace_.addFlyout('g') : null; + var flyoutSvg = hasFlyout ? + this.workspace_.addFlyout(Blockly.utils.Svg.G) : null; var background = this.workspace_.createDom('blocklyMutatorBackground'); if (flyoutSvg) { @@ -226,17 +233,16 @@ Blockly.Mutator.prototype.updateEditable = function() { Blockly.Mutator.prototype.resizeBubble_ = function() { var doubleBorderWidth = 2 * Blockly.Bubble.BORDER_WIDTH; var workspaceSize = this.workspace_.getCanvas().getBBox(); - var width; - if (this.block_.RTL) { - width = -workspaceSize.x; - } else { - width = workspaceSize.width + workspaceSize.x; - } + var width = workspaceSize.width + workspaceSize.x; var height = workspaceSize.height + doubleBorderWidth * 3; var flyout = this.workspace_.getFlyout(); if (flyout) { var flyoutMetrics = flyout.getMetrics_(); height = Math.max(height, flyoutMetrics.contentHeight + 20); + width += flyout.getWidth(); + } + if (this.block_.RTL) { + width = -workspaceSize.x; } width += doubleBorderWidth * 3; // Only resize if the size difference is significant. Eliminates shuddering. @@ -307,7 +313,7 @@ Blockly.Mutator.prototype.setVisible = function(visible) { this.rootBlock_.setDeletable(false); if (flyout) { var margin = flyout.CORNER_RADIUS * 2; - var x = flyout.getWidth() + margin; + var x = this.rootBlock_.RTL ? flyout.getWidth() + margin : margin; } else { var margin = 16; var x = margin; @@ -365,12 +371,26 @@ Blockly.Mutator.prototype.workspaceChanged_ = function(e) { if (!this.workspace_.isDragging()) { var blocks = this.workspace_.getTopBlocks(false); var MARGIN = 20; + for (var b = 0, block; (block = blocks[b]); b++) { var blockXY = block.getRelativeToSurfaceXY(); - var blockHW = block.getHeightWidth(); - if (blockXY.y + blockHW.height < MARGIN) { - // Bump any block that's above the top back inside. - block.moveBy(0, MARGIN - blockHW.height - blockXY.y); + + // Bump any block that's above the top back inside. + if (blockXY.y < MARGIN) { + block.moveBy(0, MARGIN - blockXY.y); + } + // Bump any block overlapping the flyout back inside. + if (block.RTL) { + var right = -MARGIN; + var flyout = this.workspace_.getFlyout(); + if (flyout) { + right -= flyout.getWidth(); + } + if (blockXY.x > right) { + block.moveBy(right - blockXY.x, 0); + } + } else if (blockXY.x < MARGIN) { + block.moveBy(MARGIN - blockXY.x, 0); } } } @@ -381,15 +401,28 @@ Blockly.Mutator.prototype.workspaceChanged_ = function(e) { var block = this.block_; var oldMutationDom = block.mutationToDom(); var oldMutation = oldMutationDom && Blockly.Xml.domToText(oldMutationDom); + + // Switch off rendering while the source block is rebuilt. + var savedRendered = block.rendered; + // TODO(#4288): We should not be setting the rendered property to false. + block.rendered = false; + // Allow the source block to rebuild itself. block.compose(this.rootBlock_); + // Restore rendering and show the changes. + block.rendered = savedRendered; + // Mutation may have added some elements that need initializing. block.initSvg(); - block.render(); if ((/** @type {!Blockly.WorkspaceSvg} */ (Blockly.getMainWorkspace())) .keyboardAccessibilityMode) { Blockly.navigation.moveCursorOnBlockMutation(block); } + + if (block.rendered) { + block.render(); + } + var newMutationDom = block.mutationToDom(); var newMutation = newMutationDom && Blockly.Xml.domToText(newMutationDom); if (oldMutation != newMutation) { @@ -421,6 +454,8 @@ Blockly.Mutator.prototype.getFlyoutMetrics_ = function() { // The mutator workspace only uses a subset of Blockly.utils.Metrics // properties as features such as scroll and zoom are unsupported. var unsupported = 0; + var flyout = this.workspace_.getFlyout(); + var flyoutWidth = flyout ? flyout.getWidth() : 0; return { contentHeight: unsupported, contentWidth: unsupported, @@ -428,13 +463,12 @@ Blockly.Mutator.prototype.getFlyoutMetrics_ = function() { contentLeft: unsupported, viewHeight: this.workspaceHeight_, - viewWidth: this.workspaceWidth_ - this.workspace_.getFlyout().getWidth(), + viewWidth: this.workspaceWidth_ - flyoutWidth, viewTop: unsupported, viewLeft: unsupported, absoluteTop: unsupported, - absoluteLeft: this.workspace_.RTL ? 0 : - this.workspace_.getFlyout().getWidth() + absoluteLeft: this.workspace_.RTL ? 0 : flyoutWidth }; }; @@ -460,10 +494,13 @@ Blockly.Mutator.prototype.updateBlockStyle = function() { block.setStyle(block.getStyleName()); } - var flyoutBlocks = ws.getFlyout().workspace_.getAllBlocks(false); - for (var i = 0; i < flyoutBlocks.length; i++) { - var block = flyoutBlocks[i]; - block.setStyle(block.getStyleName()); + var flyout = ws.getFlyout(); + if (flyout) { + var flyoutBlocks = flyout.workspace_.getAllBlocks(false); + for (var i = 0; i < flyoutBlocks.length; i++) { + var block = flyoutBlocks[i]; + block.setStyle(block.getStyleName()); + } } } }; diff --git a/core/options.js b/core/options.js index 57e69c5e7c3..489a0dfb306 100644 --- a/core/options.js +++ b/core/options.js @@ -22,6 +22,8 @@ goog.require('Blockly.utils.toolbox'); goog.require('Blockly.utils.userAgent'); goog.require('Blockly.Xml'); +goog.requireType('Blockly.WorkspaceSvg'); + /** * Parse the user-specified options, using reasonable defaults where behaviour @@ -33,7 +35,7 @@ goog.require('Blockly.Xml'); Blockly.Options = function(options) { var readOnly = !!options['readOnly']; if (readOnly) { - var toolboxContents = null; + var toolboxJsonDef = null; var hasCategories = false; var hasTrashcan = false; var hasCollapse = false; @@ -41,12 +43,8 @@ Blockly.Options = function(options) { var hasDisable = false; var hasSounds = false; } else { - var toolboxDef = options['toolbox']; - if (!Array.isArray(toolboxDef)) { - toolboxDef = Blockly.Options.parseToolboxTree(toolboxDef || null); - } - var toolboxContents = Blockly.utils.toolbox.convertToolboxToJSON(toolboxDef); - var hasCategories = Blockly.utils.toolbox.hasCategories(toolboxContents); + var toolboxJsonDef = Blockly.utils.toolbox.convertToolboxDefToJson(options['toolbox']); + var hasCategories = Blockly.utils.toolbox.hasCategories(toolboxJsonDef); var hasTrashcan = options['trashcan']; if (hasTrashcan === undefined) { hasTrashcan = hasCategories; @@ -84,12 +82,14 @@ Blockly.Options = function(options) { var toolboxAtStart = options['toolboxPosition']; toolboxAtStart = toolboxAtStart !== 'end'; + /** @type {!Blockly.utils.toolbox.Position} */ + var toolboxPosition; if (horizontalLayout) { - var toolboxPosition = toolboxAtStart ? - Blockly.TOOLBOX_AT_TOP : Blockly.TOOLBOX_AT_BOTTOM; + toolboxPosition = toolboxAtStart ? + Blockly.utils.toolbox.Position.TOP : Blockly.utils.toolbox.Position.BOTTOM; } else { - var toolboxPosition = (toolboxAtStart == rtl) ? - Blockly.TOOLBOX_AT_RIGHT : Blockly.TOOLBOX_AT_LEFT; + toolboxPosition = (toolboxAtStart == rtl) ? + Blockly.utils.toolbox.Position.RIGHT : Blockly.utils.toolbox.Position.LEFT; } var hasCss = options['css']; @@ -134,8 +134,8 @@ Blockly.Options = function(options) { this.pathToMedia = pathToMedia; /** @type {boolean} */ this.hasCategories = hasCategories; - /** @type {!Object} */ - this.moveOptions = Blockly.Options.parseMoveOptions(options, hasCategories); + /** @type {!Blockly.Options.MoveOptions} */ + this.moveOptions = Blockly.Options.parseMoveOptions_(options, hasCategories); /** @deprecated January 2019 */ this.hasScrollbars = this.moveOptions.scrollbars; /** @type {boolean} */ @@ -148,13 +148,13 @@ Blockly.Options = function(options) { this.hasCss = hasCss; /** @type {boolean} */ this.horizontalLayout = horizontalLayout; - /** @type {Array.} */ - this.languageTree = toolboxContents; - /** @type {!Object} */ + /** @type {?Blockly.utils.toolbox.ToolboxInfo} */ + this.languageTree = toolboxJsonDef; + /** @type {!Blockly.Options.GridOptions} */ this.gridOptions = Blockly.Options.parseGridOptions_(options); - /** @type {!Object} */ + /** @type {!Blockly.Options.ZoomOptions} */ this.zoomOptions = Blockly.Options.parseZoomOptions_(options); - /** @type {number} */ + /** @type {!Blockly.utils.toolbox.Position} */ this.toolboxPosition = toolboxPosition; /** @type {!Blockly.Theme} */ this.theme = Blockly.Options.parseThemeOptions_(options); @@ -168,14 +168,15 @@ Blockly.Options = function(options) { /** * The SVG element for the grid pattern. * Created during injection. - * @type {SVGElement} + * @type {?SVGElement} */ this.gridPattern = null; /** * The parent of the current workspace, or null if there is no parent - * workspace. - * @type {Blockly.Workspace} + * workspace. We can assert that this is of type WorkspaceSvg as opposed to + * Workspace as this is only used in a rendered workspace. + * @type {Blockly.WorkspaceSvg} */ this.parentWorkspace = options['parentWorkspace']; @@ -194,6 +195,41 @@ Blockly.Options = function(options) { */ Blockly.BlocklyOptions = function() {}; +/** + * Grid Options. + * @typedef {{ + * colour: string, + * length: number, + * snap: boolean, + * spacing: number + * }} + */ +Blockly.Options.GridOptions; + +/** + * Move Options. + * @typedef {{ + * drag: boolean, + * scrollbars: boolean, + * wheel: boolean + * }} + */ +Blockly.Options.MoveOptions; + +/** + * Zoom Options. + * @typedef {{ + * controls: boolean, + * maxScale: number, + * minScale: number, + * pinch: boolean, + * scaleSpeed: number, + * startScale: number, + * wheel: boolean + * }} + */ +Blockly.Options.ZoomOptions; + /** * If set, sets the translation of the workspace to match the scrollbars. * @param {!{x:number,y:number}} xyRatio Contains an x and/or y property which @@ -213,10 +249,10 @@ Blockly.Options.prototype.getMetrics; * behaviour is unspecified. * @param {!Object} options Dictionary of options. * @param {boolean} hasCategories Whether the workspace has categories or not. - * @return {!Object} A dictionary of normalized options. + * @return {!Blockly.Options.MoveOptions} Normalized move options. * @private */ -Blockly.Options.parseMoveOptions = function(options, hasCategories) { +Blockly.Options.parseMoveOptions_ = function(options, hasCategories) { var move = options['move'] || {}; var moveOptions = {}; if (move['scrollbars'] === undefined && options['scrollbars'] === undefined) { @@ -246,7 +282,7 @@ Blockly.Options.parseMoveOptions = function(options, hasCategories) { * behaviour is unspecified. See zoom documentation: * https://developers.google.com/blockly/guides/configure/web/zoom * @param {!Object} options Dictionary of options. - * @return {!Object} A dictionary of normalized options. + * @return {!Blockly.Options.ZoomOptions} Normalized zoom options. * @private */ Blockly.Options.parseZoomOptions_ = function(options) { @@ -295,7 +331,7 @@ Blockly.Options.parseZoomOptions_ = function(options) { * behaviour is unspecified. See grid documentation: * https://developers.google.com/blockly/guides/configure/web/grid * @param {!Object} options Dictionary of options. - * @return {!Object} A dictionary of normalized options. + * @return {!Blockly.Options.GridOptions} Normalized grid options. * @private */ Blockly.Options.parseGridOptions_ = function(options) { @@ -327,34 +363,3 @@ Blockly.Options.parseThemeOptions_ = function(options) { return Blockly.Theme.defineTheme(theme.name || ('builtin' + Blockly.utils.IdGenerator.getNextUniqueId()), theme); }; - -/** - * Parse the provided toolbox tree into a consistent DOM format. - * @param {Node|NodeList|?string} tree DOM tree of blocks, or text representation - * of same. - * @return {Node} DOM tree of blocks, or null. - */ -Blockly.Options.parseToolboxTree = function(tree) { - if (tree) { - if (typeof tree != 'string') { - if (Blockly.utils.userAgent.IE && tree.outerHTML) { - // In this case the tree will not have been properly built by the - // browser. The HTML will be contained in the element, but it will - // not have the proper DOM structure since the browser doesn't support - // XSLTProcessor (XML -> HTML). - tree = tree.outerHTML; - } else if (!(tree instanceof Element)) { - tree = null; - } - } - if (typeof tree == 'string') { - tree = Blockly.Xml.textToDom(tree); - if (tree.nodeName.toLowerCase() != 'xml') { - throw TypeError('Toolbox should be an document.'); - } - } - } else { - tree = null; - } - return tree; -}; diff --git a/core/registry.js b/core/registry.js index 08f9dc0372f..19b619efbf6 100644 --- a/core/registry.js +++ b/core/registry.js @@ -14,10 +14,12 @@ goog.provide('Blockly.registry'); goog.requireType('Blockly.blockRendering.Renderer'); +goog.requireType('Blockly.Events.Abstract'); goog.requireType('Blockly.Field'); +goog.requireType('Blockly.IConnectionChecker'); +goog.requireType('Blockly.IFlyout'); goog.requireType('Blockly.IToolbox'); goog.requireType('Blockly.Theme'); -goog.requireType('Blockly.utils.toolbox'); /** @@ -58,30 +60,50 @@ Blockly.registry.Type.prototype.toString = function() { return this.name_; }; -/** @type {!Blockly.registry.Type} */ -Blockly.registry.Type.RENDERER = new Blockly.registry.Type('renderer'); +/** @type {!Blockly.registry.Type} */ +Blockly.registry.Type.CONNECTION_CHECKER = + new Blockly.registry.Type('connectionChecker'); + +/** @type {!Blockly.registry.Type} */ +Blockly.registry.Type.EVENT = new Blockly.registry.Type('event'); /** @type {!Blockly.registry.Type} */ Blockly.registry.Type.FIELD = new Blockly.registry.Type('field'); +/** @type {!Blockly.registry.Type} */ +Blockly.registry.Type.RENDERER = new Blockly.registry.Type('renderer'); + /** @type {!Blockly.registry.Type} */ Blockly.registry.Type.TOOLBOX = new Blockly.registry.Type('toolbox'); /** @type {!Blockly.registry.Type} */ Blockly.registry.Type.THEME = new Blockly.registry.Type('theme'); +/** @type {!Blockly.registry.Type} */ +Blockly.registry.Type.TOOLBOX_ITEM = new Blockly.registry.Type('toolboxItem'); + +/** @type {!Blockly.registry.Type} */ +Blockly.registry.Type.FLYOUTS_VERTICAL_TOOLBOX = + new Blockly.registry.Type('flyoutsVerticalToolbox'); + +/** @type {!Blockly.registry.Type} */ +Blockly.registry.Type.FLYOUTS_HORIZONTAL_TOOLBOX = + new Blockly.registry.Type('flyoutsHorizontalToolbox'); + /** * Registers a class based on a type and name. - * @param {string|Blockly.registry.Type} type The type of the plugin. + * @param {string|!Blockly.registry.Type} type The type of the plugin. * (e.g. Field, Renderer) * @param {string} name The plugin's name. (Ex. field_angle, geras) * @param {?function(new:T, ...?)|Object} registryItem The class or object to * register. + * @param {boolean=} opt_quiet True to prevent an error when overriding an + * already registered item. * @throws {Error} if the type or name is empty, a name with the given type has * already been registered, or if the given class or object is not valid for it's type. * @template T */ -Blockly.registry.register = function(type, name, registryItem) { +Blockly.registry.register = function(type, name, registryItem, opt_quiet) { if ((!(type instanceof Blockly.registry.Type) && typeof type != 'string') || String(type).trim() == '') { throw Error('Invalid type "' + type + '". The type must be a' + ' non-empty string or a Blockly.registry.Type.'); @@ -105,8 +127,8 @@ Blockly.registry.register = function(type, name, registryItem) { // Validate that the given class has all the required properties. Blockly.registry.validate_(type, registryItem); - // If the name already exists throw an error. - if (typeRegistry[name]) { + // Don't throw an error if opt_quiet is true. + if (!opt_quiet && typeRegistry[name]) { throw Error('Name "' + name + '" with type "' + type + '" already registered.'); } typeRegistry[name] = registryItem; @@ -132,7 +154,7 @@ Blockly.registry.validate_ = function(type, registryItem) { /** * Unregisters the registry item with the given type and name. - * @param {string|Blockly.registry.Type} type The type of the plugin. + * @param {string|!Blockly.registry.Type} type The type of the plugin. * (e.g. Field, Renderer) * @param {string} name The plugin's name. (Ex. field_angle, geras) * @template T @@ -154,8 +176,8 @@ Blockly.registry.unregister = function(type, name) { /** * Gets the registry item for the given name and type. This can be either a - * class or an object.l - * @param {string|Blockly.registry.Type} type The type of the plugin. + * class or an object. + * @param {string|!Blockly.registry.Type} type The type of the plugin. * (e.g. Field, Renderer) * @param {string} name The plugin's name. (Ex. field_angle, geras) * @return {?function(new:T, ...?)|Object} The class or object with the given @@ -177,9 +199,29 @@ Blockly.registry.getItem_ = function(type, name) { return typeRegistry[name]; }; +/** + * Returns whether or not the registry contains an item with the given type and + * name. + * @param {string|!Blockly.registry.Type} type The type of the plugin. + * (e.g. Field, Renderer) + * @param {string} name The plugin's name. (Ex. field_angle, geras) + * @return {boolean} True if the registry has an item with the given type and + * name, false otherwise. + * @template T + */ +Blockly.registry.hasItem = function(type, name) { + type = String(type).toLowerCase(); + name = name.toLowerCase(); + var typeRegistry = Blockly.registry.typeMap_[type]; + if (!typeRegistry) { + return false; + } + return !!(typeRegistry[name]); +}; + /** * Gets the class for the given name and type. - * @param {string|Blockly.registry.Type} type The type of the plugin. + * @param {string|!Blockly.registry.Type} type The type of the plugin. * (e.g. Field, Renderer) * @param {string} name The plugin's name. (Ex. field_angle, geras) * @return {?function(new:T, ...?)} The class with the given name and type or @@ -192,7 +234,7 @@ Blockly.registry.getClass = function(type, name) { /** * Gets the object for the given name and type. - * @param {string|Blockly.registry.Type} type The type of the plugin. + * @param {string|!Blockly.registry.Type} type The type of the plugin. * (e.g. Category) * @param {string} name The plugin's name. (Ex. logic_category) * @returns {T} The object with the given name and type or null if none exists. @@ -205,7 +247,7 @@ Blockly.registry.getObject = function(type, name) { /** * Gets the class from Blockly options for the given type. * This is used for plugins that override a built in feature. (e.g. Toolbox) - * @param {Blockly.registry.Type} type The type of the plugin. + * @param {!Blockly.registry.Type} type The type of the plugin. * @param {!Blockly.Options} options The option object to check for the given * plugin. * @return {?function(new:T, ...?)} The class for the plugin. diff --git a/core/rendered_connection.js b/core/rendered_connection.js index 811a0fe6b4c..5188d55040a 100644 --- a/core/rendered_connection.js +++ b/core/rendered_connection.js @@ -16,8 +16,10 @@ goog.require('Blockly.Connection'); goog.require('Blockly.Events'); goog.require('Blockly.utils'); goog.require('Blockly.utils.Coordinate'); +goog.require('Blockly.utils.deprecation'); goog.require('Blockly.utils.dom'); goog.require('Blockly.utils.object'); +goog.require('Blockly.utils.Svg'); /** @@ -301,7 +303,7 @@ Blockly.RenderedConnection.prototype.highlight = function() { var x = this.x - xy.x; var y = this.y - xy.y; Blockly.Connection.highlightedPath_ = Blockly.utils.dom.createSvgElement( - 'path', + Blockly.utils.Svg.PATH, { 'class': 'blocklyHighlightedConnectionPath', 'd': steps, @@ -420,9 +422,15 @@ Blockly.RenderedConnection.prototype.startTrackingAll = function() { * @param {number=} maxRadius The maximum radius allowed for connections, in * workspace units. * @return {boolean} True if the connection is allowed, false otherwise. + * @deprecated July 2020 */ Blockly.RenderedConnection.prototype.isConnectionAllowed = function(candidate, maxRadius) { + Blockly.utils.deprecation.warn( + 'RenderedConnection.prototype.isConnectionAllowed', + 'July 2020', + 'July 2021', + 'Blockly.Workspace.prototype.getConnectionChecker().canConnect'); if (this.distanceFrom(candidate) > maxRadius) { return false; } @@ -471,20 +479,18 @@ Blockly.RenderedConnection.prototype.disconnectInternal_ = function(parentBlock, * @private */ Blockly.RenderedConnection.prototype.respawnShadow_ = function() { + Blockly.RenderedConnection.superClass_.respawnShadow_.call(this); + var blockShadow = this.targetBlock(); + if (!blockShadow) { + // This connection must not have a shadowDom_. + return; + } + blockShadow.initSvg(); + blockShadow.render(false); + var parentBlock = this.getSourceBlock(); - // Respawn the shadow block if there is one. - var shadow = this.getShadowDom(); - if (parentBlock.workspace && shadow && Blockly.Events.recordUndo) { - Blockly.RenderedConnection.superClass_.respawnShadow_.call(this); - var blockShadow = this.targetBlock(); - if (!blockShadow) { - throw Error('Couldn\'t respawn the shadow block that should exist here.'); - } - blockShadow.initSvg(); - blockShadow.render(false); - if (parentBlock.rendered) { - parentBlock.render(); - } + if (parentBlock.rendered) { + parentBlock.render(); } }; @@ -549,7 +555,8 @@ Blockly.RenderedConnection.prototype.connect_ = function(childConnection) { Blockly.RenderedConnection.prototype.onCheckChanged_ = function() { // The new value type may not be compatible with the existing connection. if (this.isConnected() && (!this.targetConnection || - !this.checkType(this.targetConnection))) { + !this.getConnectionChecker().canConnect( + this, this.targetConnection, false))) { var child = this.isSuperior() ? this.targetBlock() : this.sourceBlock_; child.unplug(); // Bump away. diff --git a/core/renderers/common/constants.js b/core/renderers/common/constants.js index 434e5e3cdfe..791499abcc6 100644 --- a/core/renderers/common/constants.js +++ b/core/renderers/common/constants.js @@ -15,6 +15,7 @@ goog.provide('Blockly.blockRendering.ConstantProvider'); goog.require('Blockly.utils'); goog.require('Blockly.utils.colour'); goog.require('Blockly.utils.dom'); +goog.require('Blockly.utils.Svg'); goog.require('Blockly.utils.svgPaths'); goog.require('Blockly.utils.userAgent'); @@ -1019,7 +1020,8 @@ Blockly.blockRendering.ConstantProvider.prototype.createDom = function(svg, ... filters go here ... */ - var defs = Blockly.utils.dom.createSvgElement('defs', {}, svg); + var defs = Blockly.utils.dom.createSvgElement( + Blockly.utils.Svg.DEFS, {}, svg); /* @@ -1034,11 +1036,14 @@ Blockly.blockRendering.ConstantProvider.prototype.createDom = function(svg, k1="0" k2="1" k3="1" k4="0" /> */ - var embossFilter = Blockly.utils.dom.createSvgElement('filter', + var embossFilter = Blockly.utils.dom.createSvgElement( + Blockly.utils.Svg.FILTER, {'id': 'blocklyEmbossFilter' + this.randomIdentifier}, defs); - Blockly.utils.dom.createSvgElement('feGaussianBlur', + Blockly.utils.dom.createSvgElement( + Blockly.utils.Svg.FEGAUSSIANBLUR, {'in': 'SourceAlpha', 'stdDeviation': 1, 'result': 'blur'}, embossFilter); - var feSpecularLighting = Blockly.utils.dom.createSvgElement('feSpecularLighting', + var feSpecularLighting = Blockly.utils.dom.createSvgElement( + Blockly.utils.Svg.FESPECULARLIGHTING, { 'in': 'blur', 'surfaceScale': 1, @@ -1048,16 +1053,19 @@ Blockly.blockRendering.ConstantProvider.prototype.createDom = function(svg, 'result': 'specOut' }, embossFilter); - Blockly.utils.dom.createSvgElement('fePointLight', + Blockly.utils.dom.createSvgElement( + Blockly.utils.Svg.FEPOINTLIGHT, {'x': -5000, 'y': -10000, 'z': 20000}, feSpecularLighting); - Blockly.utils.dom.createSvgElement('feComposite', + Blockly.utils.dom.createSvgElement( + Blockly.utils.Svg.FECOMPOSITE, { 'in': 'specOut', 'in2': 'SourceAlpha', 'operator': 'in', 'result': 'specOut' }, embossFilter); - Blockly.utils.dom.createSvgElement('feComposite', + Blockly.utils.dom.createSvgElement( + Blockly.utils.Svg.FECOMPOSITE, { 'in': 'SourceGraphic', 'in2': 'specOut', @@ -1077,22 +1085,26 @@ Blockly.blockRendering.ConstantProvider.prototype.createDom = function(svg, */ - var disabledPattern = Blockly.utils.dom.createSvgElement('pattern', + var disabledPattern = Blockly.utils.dom.createSvgElement( + Blockly.utils.Svg.PATTERN, { 'id': 'blocklyDisabledPattern' + this.randomIdentifier, 'patternUnits': 'userSpaceOnUse', 'width': 10, 'height': 10 }, defs); - Blockly.utils.dom.createSvgElement('rect', + Blockly.utils.dom.createSvgElement( + Blockly.utils.Svg.RECT, {'width': 10, 'height': 10, 'fill': '#aaa'}, disabledPattern); - Blockly.utils.dom.createSvgElement('path', + Blockly.utils.dom.createSvgElement( + Blockly.utils.Svg.PATH, {'d': 'M 0 0 L 10 10 M 10 0 L 0 10', 'stroke': '#cc0'}, disabledPattern); this.disabledPatternId = disabledPattern.id; this.disabledPattern_ = disabledPattern; if (Blockly.blockRendering.Debug) { - var debugFilter = Blockly.utils.dom.createSvgElement('filter', + var debugFilter = Blockly.utils.dom.createSvgElement( + Blockly.utils.Svg.FILTER, { 'id': 'blocklyDebugFilter' + this.randomIdentifier, 'height': '160%', @@ -1103,21 +1115,26 @@ Blockly.blockRendering.ConstantProvider.prototype.createDom = function(svg, defs); // Set all gaussian blur pixels to 1 opacity before applying flood var debugComponentTransfer = Blockly.utils.dom.createSvgElement( - 'feComponentTransfer', {'result': 'outBlur'}, debugFilter); - Blockly.utils.dom.createSvgElement('feFuncA', + Blockly.utils.Svg.FECOMPONENTTRANSFER, { + 'result': 'outBlur' + }, debugFilter); + Blockly.utils.dom.createSvgElement( + Blockly.utils.Svg.FEFUNCA, { 'type': 'table', 'tableValues': '0 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1' }, debugComponentTransfer); // Color the highlight - Blockly.utils.dom.createSvgElement('feFlood', + Blockly.utils.dom.createSvgElement( + Blockly.utils.Svg.FEFLOOD, { 'flood-color': '#ff0000', 'flood-opacity': 0.5, 'result': 'outColor' }, debugFilter); - Blockly.utils.dom.createSvgElement('feComposite', + Blockly.utils.dom.createSvgElement( + Blockly.utils.Svg.FECOMPOSITE, { 'in': 'outColor', 'in2': 'outBlur', 'operator': 'in', 'result': 'outGlow' diff --git a/core/renderers/common/debugger.js b/core/renderers/common/debugger.js index 0e5588b4bf2..adaa3b0d751 100644 --- a/core/renderers/common/debugger.js +++ b/core/renderers/common/debugger.js @@ -20,6 +20,8 @@ goog.require('Blockly.blockRendering.Row'); goog.require('Blockly.blockRendering.SpacerRow'); goog.require('Blockly.blockRendering.TopRow'); goog.require('Blockly.blockRendering.Types'); +goog.require('Blockly.utils.dom'); +goog.require('Blockly.utils.Svg'); /** @@ -99,7 +101,8 @@ Blockly.blockRendering.Debug.prototype.drawSpacerRow = function(row, cursorY, is cursorY -= height; } - this.debugElements_.push(Blockly.utils.dom.createSvgElement('rect', + this.debugElements_.push(Blockly.utils.dom.createSvgElement( + Blockly.utils.Svg.RECT, { 'class': 'rowSpacerRect blockRenderDebug', 'x': isRtl ? -(row.xPos + row.width) : row.xPos, @@ -133,7 +136,8 @@ Blockly.blockRendering.Debug.prototype.drawSpacerElem = function(elem, rowHeight xPos = -(xPos + width); } var yPos = elem.centerline - elem.height / 2; - this.debugElements_.push(Blockly.utils.dom.createSvgElement('rect', + this.debugElements_.push(Blockly.utils.dom.createSvgElement( + Blockly.utils.Svg.RECT, { 'class': 'elemSpacerRect blockRenderDebug', 'x': xPos, @@ -161,7 +165,8 @@ Blockly.blockRendering.Debug.prototype.drawRenderedElem = function(elem, isRtl) xPos = -(xPos + elem.width); } var yPos = elem.centerline - elem.height / 2; - this.debugElements_.push(Blockly.utils.dom.createSvgElement('rect', + this.debugElements_.push(Blockly.utils.dom.createSvgElement( + Blockly.utils.Svg.RECT, { 'class': 'rowRenderingRect blockRenderDebug', 'x': xPos, @@ -177,7 +182,8 @@ Blockly.blockRendering.Debug.prototype.drawRenderedElem = function(elem, isRtl) if (Blockly.blockRendering.Types.isField(elem) && elem.field instanceof Blockly.FieldLabel) { var baseline = this.constants_.FIELD_TEXT_BASELINE; - this.debugElements_.push(Blockly.utils.dom.createSvgElement('rect', + this.debugElements_.push(Blockly.utils.dom.createSvgElement( + Blockly.utils.Svg.RECT, { 'class': 'rowRenderingRect blockRenderDebug', 'x': xPos, @@ -233,7 +239,8 @@ Blockly.blockRendering.Debug.prototype.drawConnection = function(conn) { colour = 'goldenrod'; fill = colour; } - this.debugElements_.push(Blockly.utils.dom.createSvgElement('circle', + this.debugElements_.push(Blockly.utils.dom.createSvgElement( + Blockly.utils.Svg.CIRCLE, { 'class': 'blockRenderDebug', 'cx': conn.offsetInBlock_.x, @@ -256,7 +263,8 @@ Blockly.blockRendering.Debug.prototype.drawRenderedRow = function(row, cursorY, if (!Blockly.blockRendering.Debug.config.rows) { return; } - this.debugElements_.push(Blockly.utils.dom.createSvgElement('rect', + this.debugElements_.push(Blockly.utils.dom.createSvgElement( + Blockly.utils.Svg.RECT, { 'class': 'elemRenderingRect blockRenderDebug', 'x': isRtl ? -(row.xPos + row.width) : row.xPos, @@ -274,7 +282,8 @@ Blockly.blockRendering.Debug.prototype.drawRenderedRow = function(row, cursorY, } if (Blockly.blockRendering.Debug.config.connectedBlockBounds) { - this.debugElements_.push(Blockly.utils.dom.createSvgElement('rect', + this.debugElements_.push(Blockly.utils.dom.createSvgElement( + Blockly.utils.Svg.RECT, { 'class': 'connectedBlockWidth blockRenderDebug', 'x': isRtl ? -(row.xPos + row.widthWithConnectedBlocks) : row.xPos, @@ -328,7 +337,8 @@ Blockly.blockRendering.Debug.prototype.drawBoundingBox = function(info) { // Bounding box without children. var xPos = info.RTL ? -info.width : 0; var yPos = 0; - this.debugElements_.push(Blockly.utils.dom.createSvgElement('rect', + this.debugElements_.push(Blockly.utils.dom.createSvgElement( + Blockly.utils.Svg.RECT, { 'class': 'blockBoundingBox blockRenderDebug', 'x': xPos, @@ -345,7 +355,8 @@ Blockly.blockRendering.Debug.prototype.drawBoundingBox = function(info) { if (Blockly.blockRendering.Debug.config.connectedBlockBounds) { // Bounding box with children. xPos = info.RTL ? -info.widthWithChildren : 0; - this.debugElements_.push(Blockly.utils.dom.createSvgElement('rect', + this.debugElements_.push(Blockly.utils.dom.createSvgElement( + Blockly.utils.Svg.RECT, { 'class': 'blockRenderDebug', 'x': xPos, diff --git a/core/renderers/common/marker_svg.js b/core/renderers/common/marker_svg.js index 2fda38c6698..079dcecbfdb 100644 --- a/core/renderers/common/marker_svg.js +++ b/core/renderers/common/marker_svg.js @@ -14,6 +14,8 @@ goog.provide('Blockly.blockRendering.MarkerSvg'); goog.require('Blockly.ASTNode'); +goog.require('Blockly.utils.dom'); +goog.require('Blockly.utils.Svg'); /** @@ -124,8 +126,8 @@ Blockly.blockRendering.MarkerSvg.prototype.createDom = function() { Blockly.blockRendering.MarkerSvg.CURSOR_CLASS : Blockly.blockRendering.MarkerSvg.MARKER_CLASS; - this.svgGroup_ = - Blockly.utils.dom.createSvgElement('g', { + this.svgGroup_ = Blockly.utils.dom.createSvgElement( + Blockly.utils.Svg.G, { 'class': className }, null); @@ -588,7 +590,8 @@ Blockly.blockRendering.MarkerSvg.prototype.createDomInternal_ = function() { */ - this.markerSvg_ = Blockly.utils.dom.createSvgElement('g', + this.markerSvg_ = Blockly.utils.dom.createSvgElement( + Blockly.utils.Svg.G, { 'width': this.constants_.CURSOR_WS_WIDTH, 'height': this.constants_.WS_CURSOR_HEIGHT @@ -596,7 +599,8 @@ Blockly.blockRendering.MarkerSvg.prototype.createDomInternal_ = function() { // A horizontal line used to represent a workspace coordinate or next // connection. - this.markerSvgLine_ = Blockly.utils.dom.createSvgElement('rect', + this.markerSvgLine_ = Blockly.utils.dom.createSvgElement( + Blockly.utils.Svg.RECT, { 'width': this.constants_.CURSOR_WS_WIDTH, 'height': this.constants_.WS_CURSOR_HEIGHT, @@ -605,7 +609,8 @@ Blockly.blockRendering.MarkerSvg.prototype.createDomInternal_ = function() { this.markerSvg_); // A filled in rectangle used to represent a stack. - this.markerSvgRect_ = Blockly.utils.dom.createSvgElement('rect', + this.markerSvgRect_ = Blockly.utils.dom.createSvgElement( + Blockly.utils.Svg.RECT, { 'class': 'blocklyVerticalMarker', 'rx': 10, 'ry': 10, @@ -614,7 +619,8 @@ Blockly.blockRendering.MarkerSvg.prototype.createDomInternal_ = function() { this.markerSvg_); // A filled in puzzle piece used to represent an input value. - this.markerInput_ = Blockly.utils.dom.createSvgElement('path', + this.markerInput_ = Blockly.utils.dom.createSvgElement( + Blockly.utils.Svg.PATH, { 'transform': '', 'style': 'display: none' @@ -623,7 +629,8 @@ Blockly.blockRendering.MarkerSvg.prototype.createDomInternal_ = function() { // A path used to represent a previous connection and a block, an output // connection and a block, or a block. - this.markerBlock_ = Blockly.utils.dom.createSvgElement('path', + this.markerBlock_ = Blockly.utils.dom.createSvgElement( + Blockly.utils.Svg.PATH, { 'transform': '', 'style': 'display: none', @@ -635,12 +642,15 @@ Blockly.blockRendering.MarkerSvg.prototype.createDomInternal_ = function() { // Markers and stack markers don't blink. if (this.isCursor()) { var blinkProperties = this.getBlinkProperties_(); - Blockly.utils.dom.createSvgElement('animate', blinkProperties, + Blockly.utils.dom.createSvgElement( + Blockly.utils.Svg.ANIMATE, blinkProperties, this.markerSvgLine_); - Blockly.utils.dom.createSvgElement('animate', blinkProperties, + Blockly.utils.dom.createSvgElement( + Blockly.utils.Svg.ANIMATE, blinkProperties, this.markerInput_); blinkProperties['attributeName'] = 'stroke'; - Blockly.utils.dom.createSvgElement('animate', blinkProperties, + Blockly.utils.dom.createSvgElement( + Blockly.utils.Svg.ANIMATE, blinkProperties, this.markerBlock_); } diff --git a/core/renderers/common/path_object.js b/core/renderers/common/path_object.js index 602f27448c7..c3a283329b5 100644 --- a/core/renderers/common/path_object.js +++ b/core/renderers/common/path_object.js @@ -17,6 +17,7 @@ goog.require('Blockly.blockRendering.ConstantProvider'); goog.require('Blockly.blockRendering.IPathObject'); goog.require('Blockly.Theme'); goog.require('Blockly.utils.dom'); +goog.require('Blockly.utils.Svg'); /** @@ -46,7 +47,8 @@ Blockly.blockRendering.PathObject = function(root, style, constants) { * @type {!SVGElement} * @package */ - this.svgPath = Blockly.utils.dom.createSvgElement('path', + this.svgPath = Blockly.utils.dom.createSvgElement( + Blockly.utils.Svg.PATH, {'class': 'blocklyPath'}, this.svgRoot); /** diff --git a/core/renderers/common/renderer.js b/core/renderers/common/renderer.js index 05885d18c59..d0d8c16916f 100644 --- a/core/renderers/common/renderer.js +++ b/core/renderers/common/renderer.js @@ -254,7 +254,8 @@ Blockly.blockRendering.Renderer.prototype.orphanCanConnectAtEnd = if (!lastConnection) { return false; } - return orphanConnection.checkType(lastConnection); + return orphanConnection.getConnectionChecker().canConnect( + lastConnection, orphanConnection, false); }; /** diff --git a/core/renderers/geras/path_object.js b/core/renderers/geras/path_object.js index dd572aab7c8..fd39c9ffdce 100644 --- a/core/renderers/geras/path_object.js +++ b/core/renderers/geras/path_object.js @@ -18,6 +18,7 @@ goog.require('Blockly.geras.ConstantProvider'); goog.require('Blockly.Theme'); goog.require('Blockly.utils.dom'); goog.require('Blockly.utils.object'); +goog.require('Blockly.utils.Svg'); /** @@ -48,7 +49,8 @@ Blockly.geras.PathObject = function(root, style, constants) { * @type {SVGElement} * @package */ - this.svgPathDark = Blockly.utils.dom.createSvgElement('path', + this.svgPathDark = Blockly.utils.dom.createSvgElement( + Blockly.utils.Svg.PATH, {'class': 'blocklyPathDark', 'transform': 'translate(1,1)'}, this.svgRoot); @@ -57,7 +59,8 @@ Blockly.geras.PathObject = function(root, style, constants) { * @type {!SVGElement} * @package */ - this.svgPath = Blockly.utils.dom.createSvgElement('path', + this.svgPath = Blockly.utils.dom.createSvgElement( + Blockly.utils.Svg.PATH, {'class': 'blocklyPath'}, this.svgRoot); /** @@ -65,7 +68,8 @@ Blockly.geras.PathObject = function(root, style, constants) { * @type {SVGElement} * @package */ - this.svgPathLight = Blockly.utils.dom.createSvgElement('path', + this.svgPathLight = Blockly.utils.dom.createSvgElement( + Blockly.utils.Svg.PATH, {'class': 'blocklyPathLight'}, this.svgRoot); /** diff --git a/core/renderers/measurables/types.js b/core/renderers/measurables/types.js index 02e5b9a9a02..cbb7fa6ef61 100644 --- a/core/renderers/measurables/types.js +++ b/core/renderers/measurables/types.js @@ -83,7 +83,7 @@ Blockly.blockRendering.Types.nextTypeValue_ = 1 << 24; * @package */ Blockly.blockRendering.Types.getType = function(type) { - if (!Blockly.blockRendering.Types.hasOwnProperty(type)) { + if (!Object.prototype.hasOwnProperty.call(Blockly.blockRendering.Types, type)) { Blockly.blockRendering.Types[type] = Blockly.blockRendering.Types.nextTypeValue_; Blockly.blockRendering.Types.nextTypeValue_ <<= 1; diff --git a/core/renderers/zelos/constants.js b/core/renderers/zelos/constants.js index acfe8c36e08..151a7b1b5b4 100644 --- a/core/renderers/zelos/constants.js +++ b/core/renderers/zelos/constants.js @@ -16,6 +16,7 @@ goog.provide('Blockly.zelos.ConstantProvider'); goog.require('Blockly.blockRendering.ConstantProvider'); goog.require('Blockly.utils.dom'); goog.require('Blockly.utils.object'); +goog.require('Blockly.utils.Svg'); goog.require('Blockly.utils.svgPaths'); @@ -806,10 +807,12 @@ Blockly.zelos.ConstantProvider.prototype.createDom = function(svg, ... filters go here ... */ - var defs = Blockly.utils.dom.createSvgElement('defs', {}, svg); + var defs = Blockly.utils.dom.createSvgElement( + Blockly.utils.Svg.DEFS, {}, svg); // Using a dilate distorts the block shape. // Instead use a gaussian blur, and then set all alpha to 1 with a transfer. - var selectedGlowFilter = Blockly.utils.dom.createSvgElement('filter', + var selectedGlowFilter = Blockly.utils.dom.createSvgElement( + Blockly.utils.Svg.FILTER, { 'id': 'blocklySelectedGlowFilter' + this.randomIdentifier, 'height': '160%', @@ -818,7 +821,8 @@ Blockly.zelos.ConstantProvider.prototype.createDom = function(svg, x: '-40%' }, defs); - Blockly.utils.dom.createSvgElement('feGaussianBlur', + Blockly.utils.dom.createSvgElement( + Blockly.utils.Svg.FEGAUSSIANBLUR, { 'in': 'SourceGraphic', 'stdDeviation': this.SELECTED_GLOW_SIZE @@ -826,21 +830,26 @@ Blockly.zelos.ConstantProvider.prototype.createDom = function(svg, selectedGlowFilter); // Set all gaussian blur pixels to 1 opacity before applying flood var selectedComponentTransfer = Blockly.utils.dom.createSvgElement( - 'feComponentTransfer', {'result': 'outBlur'}, selectedGlowFilter); - Blockly.utils.dom.createSvgElement('feFuncA', + Blockly.utils.Svg.FECOMPONENTTRANSFER, { + 'result': 'outBlur' + }, selectedGlowFilter); + Blockly.utils.dom.createSvgElement( + Blockly.utils.Svg.FEFUNCA, { 'type': 'table', 'tableValues': '0 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1' }, selectedComponentTransfer); // Color the highlight - Blockly.utils.dom.createSvgElement('feFlood', + Blockly.utils.dom.createSvgElement( + Blockly.utils.Svg.FEFLOOD, { 'flood-color': this.SELECTED_GLOW_COLOUR, 'flood-opacity': 1, 'result': 'outColor' }, selectedGlowFilter); - Blockly.utils.dom.createSvgElement('feComposite', + Blockly.utils.dom.createSvgElement( + Blockly.utils.Svg.FECOMPOSITE, { 'in': 'outColor', 'in2': 'outBlur', 'operator': 'in', 'result': 'outGlow' @@ -851,7 +860,8 @@ Blockly.zelos.ConstantProvider.prototype.createDom = function(svg, // Using a dilate distorts the block shape. // Instead use a gaussian blur, and then set all alpha to 1 with a transfer. - var replacementGlowFilter = Blockly.utils.dom.createSvgElement('filter', + var replacementGlowFilter = Blockly.utils.dom.createSvgElement( + Blockly.utils.Svg.FILTER, { 'id': 'blocklyReplacementGlowFilter' + this.randomIdentifier, 'height': '160%', @@ -860,7 +870,8 @@ Blockly.zelos.ConstantProvider.prototype.createDom = function(svg, x: '-40%' }, defs); - Blockly.utils.dom.createSvgElement('feGaussianBlur', + Blockly.utils.dom.createSvgElement( + Blockly.utils.Svg.FEGAUSSIANBLUR, { 'in': 'SourceGraphic', 'stdDeviation': this.REPLACEMENT_GLOW_SIZE @@ -868,27 +879,33 @@ Blockly.zelos.ConstantProvider.prototype.createDom = function(svg, replacementGlowFilter); // Set all gaussian blur pixels to 1 opacity before applying flood var replacementComponentTransfer = Blockly.utils.dom.createSvgElement( - 'feComponentTransfer', {'result': 'outBlur'}, replacementGlowFilter); - Blockly.utils.dom.createSvgElement('feFuncA', + Blockly.utils.Svg.FECOMPONENTTRANSFER, { + 'result': 'outBlur' + }, replacementGlowFilter); + Blockly.utils.dom.createSvgElement( + Blockly.utils.Svg.FEFUNCA, { 'type': 'table', 'tableValues': '0 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1' }, replacementComponentTransfer); // Color the highlight - Blockly.utils.dom.createSvgElement('feFlood', + Blockly.utils.dom.createSvgElement( + Blockly.utils.Svg.FEFLOOD, { 'flood-color': this.REPLACEMENT_GLOW_COLOUR, 'flood-opacity': 1, 'result': 'outColor' }, replacementGlowFilter); - Blockly.utils.dom.createSvgElement('feComposite', + Blockly.utils.dom.createSvgElement( + Blockly.utils.Svg.FECOMPOSITE, { 'in': 'outColor', 'in2': 'outBlur', 'operator': 'in', 'result': 'outGlow' }, replacementGlowFilter); - Blockly.utils.dom.createSvgElement('feComposite', + Blockly.utils.dom.createSvgElement( + Blockly.utils.Svg.FECOMPOSITE, { 'in': 'SourceGraphic', 'in2': 'outGlow', 'operator': 'over', diff --git a/core/renderers/zelos/marker_svg.js b/core/renderers/zelos/marker_svg.js index 0b5d31f129a..ddb6472a779 100644 --- a/core/renderers/zelos/marker_svg.js +++ b/core/renderers/zelos/marker_svg.js @@ -13,6 +13,8 @@ goog.provide('Blockly.zelos.MarkerSvg'); goog.require('Blockly.blockRendering.MarkerSvg'); +goog.require('Blockly.utils.dom'); +goog.require('Blockly.utils.Svg'); /** @@ -111,17 +113,19 @@ Blockly.zelos.MarkerSvg.prototype.createDomInternal_ = function() { Blockly.zelos.MarkerSvg.superClass_.createDomInternal_.call(this); - this.markerCircle_ = Blockly.utils.dom.createSvgElement('circle', { - 'r': this.constants_.CURSOR_RADIUS, - 'style': 'display: none', - 'stroke-width': this.constants_.CURSOR_STROKE_WIDTH - }, - this.markerSvg_); + this.markerCircle_ = Blockly.utils.dom.createSvgElement( + Blockly.utils.Svg.CIRCLE, { + 'r': this.constants_.CURSOR_RADIUS, + 'style': 'display: none', + 'stroke-width': this.constants_.CURSOR_STROKE_WIDTH + }, + this.markerSvg_); // Markers and stack cursors don't blink. if (this.isCursor()) { var blinkProperties = this.getBlinkProperties_(); - Blockly.utils.dom.createSvgElement('animate', blinkProperties, + Blockly.utils.dom.createSvgElement( + Blockly.utils.Svg.ANIMATE, blinkProperties, this.markerCircle_); } diff --git a/core/renderers/zelos/path_object.js b/core/renderers/zelos/path_object.js index 360f329af5c..89e62920810 100644 --- a/core/renderers/zelos/path_object.js +++ b/core/renderers/zelos/path_object.js @@ -17,6 +17,7 @@ goog.require('Blockly.blockRendering.PathObject'); goog.require('Blockly.zelos.ConstantProvider'); goog.require('Blockly.utils.dom'); goog.require('Blockly.utils.object'); +goog.require('Blockly.utils.Svg'); /** @@ -218,12 +219,13 @@ Blockly.zelos.PathObject.prototype.setOutlinePath = function(name, pathString) { */ Blockly.zelos.PathObject.prototype.getOutlinePath_ = function(name) { if (!this.outlines_[name]) { - this.outlines_[name] = Blockly.utils.dom.createSvgElement('path', { - 'class': 'blocklyOutlinePath', - // IE doesn't like paths without the data definition, set empty default - 'd': '' - }, - this.svgRoot); + this.outlines_[name] = Blockly.utils.dom.createSvgElement( + Blockly.utils.Svg.PATH, { + 'class': 'blocklyOutlinePath', + // IE doesn't like paths without the data definition, set empty default + 'd': '' + }, + this.svgRoot); } if (this.remainingOutlines_) { delete this.remainingOutlines_[name]; diff --git a/core/scrollbar.js b/core/scrollbar.js index 753e219de72..2f0fc22ba15 100644 --- a/core/scrollbar.js +++ b/core/scrollbar.js @@ -18,6 +18,7 @@ goog.require('Blockly.utils'); goog.require('Blockly.utils.Coordinate'); goog.require('Blockly.utils.dom'); goog.require('Blockly.utils.Metrics'); +goog.require('Blockly.utils.Svg'); /** @@ -37,7 +38,7 @@ Blockly.ScrollbarPair = function(workspace) { this.vScroll = new Blockly.Scrollbar( workspace, false, true, 'blocklyMainWorkspaceScrollbar'); this.corner_ = Blockly.utils.dom.createSvgElement( - 'rect', + Blockly.utils.Svg.RECT, { 'height': Blockly.Scrollbar.scrollbarThickness, 'width': Blockly.Scrollbar.scrollbarThickness, @@ -107,11 +108,19 @@ Blockly.ScrollbarPair.prototype.resize = function() { resizeV = true; } } - if (resizeH) { - this.hScroll.resize(hostMetrics); - } - if (resizeV) { - this.vScroll.resize(hostMetrics); + if (resizeH || resizeV) { + try { + Blockly.Events.disable(); + if (resizeH) { + this.hScroll.resize(hostMetrics); + } + if (resizeV) { + this.vScroll.resize(hostMetrics); + } + } finally { + Blockly.Events.enable(); + } + this.workspace_.maybeFireViewportChangeEvent(); } // Reposition the corner square. @@ -610,13 +619,16 @@ Blockly.Scrollbar.prototype.createDom_ = function(opt_class) { className += ' ' + opt_class; } this.outerSvg_ = Blockly.utils.dom.createSvgElement( - 'svg', {'class': className}, null); - this.svgGroup_ = Blockly.utils.dom.createSvgElement('g', {}, this.outerSvg_); + Blockly.utils.Svg.SVG, {'class': className}, null); + this.svgGroup_ = Blockly.utils.dom.createSvgElement( + Blockly.utils.Svg.G, {}, this.outerSvg_); this.svgBackground_ = Blockly.utils.dom.createSvgElement( - 'rect', {'class': 'blocklyScrollbarBackground'}, this.svgGroup_); + Blockly.utils.Svg.RECT, { + 'class': 'blocklyScrollbarBackground' + }, this.svgGroup_); var radius = Math.floor((Blockly.Scrollbar.scrollbarThickness - 5) / 2); this.svgHandle_ = Blockly.utils.dom.createSvgElement( - 'rect', + Blockly.utils.Svg.RECT, { 'class': 'blocklyScrollbarHandle', 'rx': radius, diff --git a/core/theme.js b/core/theme.js index f66021f4daa..1304e03fad4 100644 --- a/core/theme.js +++ b/core/theme.js @@ -167,7 +167,7 @@ Blockly.Theme.prototype.setCategoryStyle = function(categoryStyleName, */ Blockly.Theme.prototype.getComponentStyle = function(componentName) { var style = this.componentStyles[componentName]; - if (style && typeof propertyValue == 'string' && + if (style && typeof style == 'string' && this.getComponentStyle(/** @type {string} */ (style))) { return this.getComponentStyle(/** @type {string} */ (style)); } diff --git a/core/theme/dark.js b/core/theme/dark.js index c8cc976a41f..398497660da 100644 --- a/core/theme/dark.js +++ b/core/theme/dark.js @@ -18,7 +18,7 @@ Blockly.Themes.Dark = Blockly.Theme.defineTheme('dark', { 'base': Blockly.Themes.Classic, 'componentStyles': { 'workspaceBackgroundColour': '#1e1e1e', - 'toolboxBackgroundColour': '#333', + 'toolboxBackgroundColour': 'blackBackground', 'toolboxForegroundColour': '#fff', 'flyoutBackgroundColour': '#252526', 'flyoutForegroundColour': '#ccc', @@ -27,6 +27,7 @@ Blockly.Themes.Dark = Blockly.Theme.defineTheme('dark', { 'insertionMarkerColour': '#fff', 'insertionMarkerOpacity': 0.3, 'scrollbarOpacity': 0.4, - 'cursorColour': '#d0d0d0' + 'cursorColour': '#d0d0d0', + 'blackBackground': '#333' } }); diff --git a/core/toolbox.js b/core/toolbox.js deleted file mode 100644 index 2499fa52603..00000000000 --- a/core/toolbox.js +++ /dev/null @@ -1,930 +0,0 @@ -/** - * @license - * Copyright 2011 Google LLC - * SPDX-License-Identifier: Apache-2.0 - */ - -/** - * @fileoverview Toolbox from whence to create blocks. - * @author fraser@google.com (Neil Fraser) - */ -'use strict'; - -goog.provide('Blockly.Toolbox'); - -goog.require('Blockly.Css'); -goog.require('Blockly.Events'); -goog.require('Blockly.Events.Ui'); -goog.require('Blockly.navigation'); -goog.require('Blockly.registry'); -goog.require('Blockly.Touch'); -goog.require('Blockly.tree.TreeControl'); -goog.require('Blockly.tree.TreeNode'); -goog.require('Blockly.utils'); -goog.require('Blockly.utils.aria'); -goog.require('Blockly.utils.colour'); -goog.require('Blockly.utils.dom'); -goog.require('Blockly.utils.object'); -goog.require('Blockly.utils.Rect'); -goog.require('Blockly.utils.toolbox'); - -goog.requireType('Blockly.IBlocklyActionable'); -goog.requireType('Blockly.IDeleteArea'); -goog.requireType('Blockly.IStyleable'); -goog.requireType('Blockly.IToolbox'); - - -/** - * Class for a Toolbox. - * Creates the toolbox's DOM. - * @param {!Blockly.WorkspaceSvg} workspace The workspace in which to create new - * blocks. - * @constructor - * @implements {Blockly.IBlocklyActionable} - * @implements {Blockly.IDeleteArea} - * @implements {Blockly.IStyleable} - * @implements {Blockly.IToolbox} - */ -Blockly.Toolbox = function(workspace) { - /** - * @type {!Blockly.WorkspaceSvg} - * @private - */ - this.workspace_ = workspace; - - /** - * Is RTL vs LTR. - * @type {boolean} - */ - this.RTL = workspace.options.RTL; - - /** - * Whether the toolbox should be laid out horizontally. - * @type {boolean} - * @private - */ - this.horizontalLayout_ = workspace.options.horizontalLayout; - - /** - * Position of the toolbox and flyout relative to the workspace. - * @type {number} - */ - this.toolboxPosition = workspace.options.toolboxPosition; - - /** - * Configuration constants for Closure's tree UI. - * @type {!Object.} - * @private - */ - this.config_ = { - indentWidth: 19, - cssRoot: 'blocklyTreeRoot', - cssHideRoot: 'blocklyHidden', - cssTreeRow: 'blocklyTreeRow', - cssItemLabel: 'blocklyTreeLabel', - cssTreeIcon: 'blocklyTreeIcon', - cssExpandedFolderIcon: 'blocklyTreeIconOpen', - cssFileIcon: 'blocklyTreeIconNone', - cssSelectedRow: 'blocklyTreeSelected' - }; - - - /** - * Configuration constants for tree separator. - * @type {!Object.} - * @private - */ - this.treeSeparatorConfig_ = { - cssTreeRow: 'blocklyTreeSeparator' - }; - - if (this.horizontalLayout_) { - this.config_['cssTreeRow'] = - this.config_['cssTreeRow'] + - (workspace.RTL ? - ' blocklyHorizontalTreeRtl' : ' blocklyHorizontalTree'); - - this.treeSeparatorConfig_['cssTreeRow'] = - 'blocklyTreeSeparatorHorizontal ' + - (workspace.RTL ? - 'blocklyHorizontalTreeRtl' : 'blocklyHorizontalTree'); - this.config_['cssTreeIcon'] = ''; - } - - /** - * The toolbox flyout. - * @type {Blockly.Flyout} - * @private - */ - this.flyout_ = null; - - /** - * Width of the toolbox, which changes only in vertical layout. - * @type {number} - */ - this.width = 0; - - /** - * Height of the toolbox, which changes only in horizontal layout. - * @type {number} - */ - this.height = 0; - - /** - * The TreeNode most recently selected. - * @type {Blockly.tree.BaseNode} - * @private - */ - this.lastCategory_ = null; -}; - -/** - * Initializes the toolbox. - * @throws {Error} If missing a require for both `Blockly.HorizontalFlyout` and - * `Blockly.VerticalFlyout`. - */ -Blockly.Toolbox.prototype.init = function() { - var workspace = this.workspace_; - var svg = this.workspace_.getParentSvg(); - - /** - * HTML container for the Toolbox menu. - * @type {Element} - */ - this.HtmlDiv = document.createElement('div'); - this.HtmlDiv.className = 'blocklyToolboxDiv blocklyNonSelectable'; - this.HtmlDiv.setAttribute('dir', workspace.RTL ? 'RTL' : 'LTR'); - svg.parentNode.insertBefore(this.HtmlDiv, svg); - var themeManager = workspace.getThemeManager(); - themeManager.subscribe(this.HtmlDiv, 'toolboxBackgroundColour', - 'background-color'); - themeManager.subscribe(this.HtmlDiv, 'toolboxForegroundColour', 'color'); - - // Clicking on toolbox closes popups. - Blockly.bindEventWithChecks_(this.HtmlDiv, 'mousedown', this, - function(e) { - if (Blockly.utils.isRightButton(e) || e.target == this.HtmlDiv) { - // Close flyout. - Blockly.hideChaff(false); - } else { - // Just close popups. - Blockly.hideChaff(true); - } - Blockly.Touch.clearTouchIdentifier(); // Don't block future drags. - }, /* opt_noCaptureIdentifier */ false, /* opt_noPreventDefault */ true); - var workspaceOptions = new Blockly.Options( - /** @type {!Blockly.BlocklyOptions} */ - ({ - 'parentWorkspace': workspace, - 'rtl': workspace.RTL, - 'oneBasedIndex': workspace.options.oneBasedIndex, - 'horizontalLayout': workspace.horizontalLayout, - 'renderer': workspace.options.renderer, - 'rendererOverrides': workspace.options.rendererOverrides - })); - workspaceOptions.toolboxPosition = workspace.options.toolboxPosition; - - if (workspace.horizontalLayout) { - if (!Blockly.HorizontalFlyout) { - throw Error('Missing require for Blockly.HorizontalFlyout'); - } - this.flyout_ = new Blockly.HorizontalFlyout(workspaceOptions); - } else { - if (!Blockly.VerticalFlyout) { - throw Error('Missing require for Blockly.VerticalFlyout'); - } - this.flyout_ = new Blockly.VerticalFlyout(workspaceOptions); - } - if (!this.flyout_) { - throw Error('One of Blockly.VerticalFlyout or Blockly.Horizontal must be' + - 'required.'); - } - - // Insert the flyout after the workspace. - Blockly.utils.dom.insertAfter(this.flyout_.createDom('svg'), svg); - this.flyout_.init(workspace); - - this.config_['cssCollapsedFolderIcon'] = - 'blocklyTreeIconClosed' + (workspace.RTL ? 'Rtl' : 'Ltr'); - this.render(workspace.options.languageTree); -}; - -/** - * Fill the toolbox with categories and blocks. - * @param {Array.} toolboxDef Array holding objects - * containing information on the contents of the toolbox. - * @package - */ -Blockly.Toolbox.prototype.render = function(toolboxDef) { - if (this.tree_) { - this.tree_.dispose(); // Delete any existing content. - this.lastCategory_ = null; - } - var tree = new Blockly.tree.TreeControl(this, - /** @type {!Blockly.tree.BaseNode.Config} */ (this.config_)); - this.tree_ = tree; - tree.setSelectedItem(null); - tree.onBeforeSelected(this.handleBeforeTreeSelected_); - tree.onAfterSelected(this.handleAfterTreeSelected_); - var openNode = null; - if (toolboxDef) { - this.tree_.contents = []; - this.hasColours_ = false; - openNode = this.createTree_(toolboxDef, this.tree_); - - if (this.tree_.contents.length) { - throw Error('Toolbox cannot have both blocks and categories ' + - 'in the root level.'); - } - // Fire a resize event since the toolbox may have changed width and height. - this.workspace_.resizeContents(); - } - tree.render(this.HtmlDiv); - if (openNode) { - tree.setSelectedItem(openNode); - } - this.addColour_(); - this.position(); - - // Trees have an implicit orientation of vertical, so we only need to set this - // when the toolbox is in horizontal mode. - if (this.horizontalLayout_) { - Blockly.utils.aria.setState( - /** @type {!Element} */ (this.tree_.getElement()), - Blockly.utils.aria.State.ORIENTATION, 'horizontal'); - } -}; - -/** - * Create the toolbox tree. - * @param {Array.} toolboxDef List of objects - * holding information on toolbox contents. - * @param {!Blockly.tree.BaseNode} treeOut The output tree for the toolbox. Due - * to the recursive nature of this function, treeOut can be either the root of - * the tree (Blockly.tree.TreeControl) or a child node of the tree - * (Blockly.tree.TreeNode). These nodes are built from the toolboxDef. - * @return {Blockly.tree.BaseNode} The TreeNode to expand when the toolbox is - * first loaded (or null). - * @private - */ -Blockly.Toolbox.prototype.createTree_ = function(toolboxDef, treeOut) { - var openNode = null; - var lastElement = null; - if (!toolboxDef) { - return null; - } - - for (var i = 0, childIn; (childIn = toolboxDef[i]); i++) { - switch (childIn['kind'].toUpperCase()) { - case 'CATEGORY': - var categoryInfo = /** @type {Blockly.utils.toolbox.Category} */ (childIn); - openNode = this.addCategory_(categoryInfo, treeOut) || openNode; - lastElement = childIn; - break; - case 'SEP': - var separatorInfo = /** @type {Blockly.utils.toolbox.Separator} */ (childIn); - lastElement = this.addSeparator_(separatorInfo, treeOut, lastElement) || lastElement; - break; - case 'BLOCK': - case 'SHADOW': - case 'LABEL': - case 'BUTTON': - treeOut.contents.push(childIn); - lastElement = childIn; - break; - } - } - return openNode; -}; - -/** - * Add a category to the toolbox tree. - * @param {!Blockly.utils.toolbox.Category} categoryInfo The object holding - * information on the category. - * @param {!Blockly.tree.BaseNode} treeOut The TreeControl or TreeNode - * object built from the childNodes. - * @return {Blockly.tree.BaseNode} TreeNode to open at startup (or null). - * @private - */ -Blockly.Toolbox.prototype.addCategory_ = function(categoryInfo, treeOut) { - var openNode = null; - // Decode the category name for any potential message references - // (eg. `%{BKY_CATEGORY_NAME_LOGIC}`). - var categoryName = Blockly.utils.replaceMessageReferences(categoryInfo['name']); - - // Create and add the tree node for the category. - var childOut = this.tree_.createNode(categoryName); - childOut.onSizeChanged(this.handleNodeSizeChanged_); - childOut.contents = []; - treeOut.add(childOut); - - var custom = categoryInfo['custom']; - - if (custom) { - // Variables and procedures are special dynamic categories. - childOut.contents = custom; - } else { - openNode = this.createTree_(categoryInfo['contents'], childOut) || openNode; - } - this.setColourOrStyle_(categoryInfo, childOut, categoryName); - openNode = this.setExpanded_(categoryInfo, childOut) || openNode; - return openNode; -}; - -/** - * Add either the colour or the style for a category. - * @param {!Blockly.utils.toolbox.Category} categoryInfo The object holding - * information on the category. - * @param {!Blockly.tree.TreeNode} childOut The TreeNode for a category. - * @param {string} categoryName The name of the category. - * @private - */ -Blockly.Toolbox.prototype.setColourOrStyle_ = function( - categoryInfo, childOut, categoryName) { - var styleName = categoryInfo['categorystyle']; - var colour = categoryInfo['colour']; - - if (colour && styleName) { - childOut.hexColour = ''; - console.warn('Toolbox category "' + categoryName + - '" must not have both a style and a colour'); - } else if (styleName) { - this.setColourFromStyle_(styleName, childOut, categoryName); - } else { - this.setColour_(colour, childOut, categoryName); - } -}; - -/** - * Add a separator to the toolbox tree if it is between categories. Otherwise, - * add the separator to the list of contents. - * @param {!Blockly.utils.toolbox.Separator} separatorInfo The object holding - * information on the separator. - * @param {!Blockly.tree.BaseNode} treeOut The TreeControl or TreeNode - * object built from the childNodes. - * @param {Object} lastElement The last element to be added to the tree. - * @return {Object} The last element to be added to the tree, or - * null. - * @private - */ -Blockly.Toolbox.prototype.addSeparator_ = function( - separatorInfo, treeOut, lastElement) { - if (lastElement && lastElement['kind'].toUpperCase() == 'CATEGORY') { - // Separator between two categories. - // - treeOut.add(new Blockly.Toolbox.TreeSeparator( - /** @type {!Blockly.tree.BaseNode.Config} */ - (this.treeSeparatorConfig_))); - } else { - // Otherwise add to contents array. - treeOut.contents.push(separatorInfo); - return separatorInfo; - } - return null; -}; - -/** - * Checks whether a node should be expanded, and expands if necessary. - * @param {!Blockly.utils.toolbox.Category} categoryInfo The child to expand. - * @param {!Blockly.tree.TreeNode} childOut The TreeNode created from childIn. - * @return {Blockly.tree.BaseNode} TreeNode to open at startup (or null). - * @private - */ -Blockly.Toolbox.prototype.setExpanded_ = function(categoryInfo, childOut) { - var openNode = null; - if (categoryInfo['expanded'] == 'true') { - if (childOut.contents.length) { - // This is a category that directly contains blocks. - // After the tree is rendered, open this category and show flyout. - openNode = childOut; - } - childOut.setExpanded(true); - } else { - childOut.setExpanded(false); - } - return openNode; -}; - -/** - * Handle the before tree item selected action. - * @param {Blockly.tree.BaseNode} node The newly selected node. - * @return {boolean} Whether or not to cancel selecting the node. - * @private - */ -Blockly.Toolbox.prototype.handleBeforeTreeSelected_ = function(node) { - if (node == this.tree_) { - return false; - } - if (this.lastCategory_) { - this.lastCategory_.getRowElement().style.backgroundColor = ''; - } - if (node) { - var hexColour = node.hexColour || '#57e'; - node.getRowElement().style.backgroundColor = hexColour; - // Add colours to child nodes which may have been collapsed and thus - // not rendered. - this.addColour_(node); - } - return true; -}; - -/** - * Handle the after tree item selected action. - * @param {Blockly.tree.BaseNode} oldNode The previously selected node. - * @param {Blockly.tree.BaseNode} newNode The newly selected node. - * @private - */ -Blockly.Toolbox.prototype.handleAfterTreeSelected_ = function( - oldNode, newNode) { - if (newNode && newNode.contents && newNode.contents.length) { - this.flyout_.show(newNode.contents); - // Scroll the flyout to the top if the category has changed. - if (this.lastCategory_ != newNode) { - this.flyout_.scrollToStart(); - } - if (this.workspace_.keyboardAccessibilityMode) { - Blockly.navigation.setState(Blockly.navigation.STATE_TOOLBOX); - } - } else { - // Hide the flyout. - this.flyout_.hide(); - if (this.workspace_.keyboardAccessibilityMode && - !(newNode instanceof Blockly.Toolbox.TreeSeparator)) { - Blockly.navigation.setState(Blockly.navigation.STATE_WS); - } - } - if (oldNode != newNode && oldNode != this) { - var event = new Blockly.Events.Ui(null, 'category', - oldNode && oldNode.content, newNode && newNode.content); - event.workspaceId = this.workspace_.id; - Blockly.Events.fire(event); - } - if (newNode) { - this.lastCategory_ = newNode; - } -}; - -/** - * Handle a node sized changed event. - * @private - */ -Blockly.Toolbox.prototype.handleNodeSizeChanged_ = function() { - // Even though the div hasn't changed size, the visible workspace - // surface of the workspace has, so we may need to reposition everything. - Blockly.svgResize(this.workspace_); -}; - -/** - * Handles the given Blockly action on a toolbox. - * This is only triggered when keyboard accessibility mode is enabled. - * @param {!Blockly.Action} action The action to be handled. - * @return {boolean} True if the field handled the action, false otherwise. - * @package - */ -Blockly.Toolbox.prototype.onBlocklyAction = function(action) { - var selected = this.tree_.getSelectedItem(); - if (!selected) { - return false; - } - switch (action.name) { - case Blockly.navigation.actionNames.PREVIOUS: - return selected.selectPrevious(); - case Blockly.navigation.actionNames.OUT: - return selected.selectParent(); - case Blockly.navigation.actionNames.NEXT: - return selected.selectNext(); - case Blockly.navigation.actionNames.IN: - return selected.selectChild(); - default: - return false; - } -}; - -/** - * Dispose of this toolbox. - */ -Blockly.Toolbox.prototype.dispose = function() { - this.flyout_.dispose(); - this.tree_.dispose(); - this.workspace_.getThemeManager().unsubscribe(this.HtmlDiv); - Blockly.utils.dom.removeNode(this.HtmlDiv); - this.lastCategory_ = null; -}; - -/** - * Toggles the visibility of the toolbox. - * @param {boolean} isVisible True if toolbox should be visible. - */ -Blockly.Toolbox.prototype.setVisible = function(isVisible) { - this.HtmlDiv.style.display = isVisible ? 'block' : 'none'; -}; - -/** - * Get the width of the toolbox. - * @return {number} The width of the toolbox. - */ -Blockly.Toolbox.prototype.getWidth = function() { - return this.width; -}; - -/** - * Get the height of the toolbox. - * @return {number} The width of the toolbox. - */ -Blockly.Toolbox.prototype.getHeight = function() { - return this.height; -}; - -/** - * Get the toolbox flyout. - * @return {Blockly.Flyout} The toolbox flyout. - */ -Blockly.Toolbox.prototype.getFlyout = function() { - return this.flyout_; -}; - -/** - * Move the toolbox to the edge. - */ -Blockly.Toolbox.prototype.position = function() { - var treeDiv = this.HtmlDiv; - if (!treeDiv) { - // Not initialized yet. - return; - } - var svgSize = Blockly.svgSize(this.workspace_.getParentSvg()); - if (this.horizontalLayout_) { - treeDiv.style.left = '0'; - treeDiv.style.height = 'auto'; - treeDiv.style.width = svgSize.width + 'px'; - this.height = treeDiv.offsetHeight; - if (this.toolboxPosition == Blockly.TOOLBOX_AT_TOP) { // Top - treeDiv.style.top = '0'; - } else { // Bottom - treeDiv.style.bottom = '0'; - } - } else { - if (this.toolboxPosition == Blockly.TOOLBOX_AT_RIGHT) { // Right - treeDiv.style.right = '0'; - } else { // Left - treeDiv.style.left = '0'; - } - treeDiv.style.height = svgSize.height + 'px'; - this.width = treeDiv.offsetWidth; - } - this.flyout_.position(); -}; - -/** - * Sets the colour on the category. - * @param {number|string} colourValue HSV hue value (0 to 360), #RRGGBB string, - * or a message reference string pointing to one of those two values. - * @param {Blockly.tree.TreeNode} childOut The child to set the hexColour on. - * @param {string} categoryName Name of the toolbox category. - * @private - */ -Blockly.Toolbox.prototype.setColour_ = function(colourValue, childOut, - categoryName) { - // Decode the colour for any potential message references - // (eg. `%{BKY_MATH_HUE}`). - var colour = Blockly.utils.replaceMessageReferences(colourValue); - if (colour === null || colour === '') { - // No attribute. No colour. - childOut.hexColour = ''; - } else { - var hue = Number(colour); - if (!isNaN(hue)) { - childOut.hexColour = Blockly.hueToHex(hue); - this.hasColours_ = true; - } else { - var hex = Blockly.utils.colour.parse(colour); - if (hex) { - childOut.hexColour = hex; - this.hasColours_ = true; - } else { - childOut.hexColour = ''; - console.warn('Toolbox category "' + categoryName + - '" has unrecognized colour attribute: ' + colour); - } - } - } -}; - -/** - * Retrieves and sets the colour for the category using the style name. - * The category colour is set from the colour style attribute. - * @param {string} styleName Name of the style. - * @param {!Blockly.tree.TreeNode} childOut The child to set the hexColour on. - * @param {string} categoryName Name of the toolbox category. - * @private - */ -Blockly.Toolbox.prototype.setColourFromStyle_ = function( - styleName, childOut, categoryName) { - childOut.styleName = styleName; - var theme = this.workspace_.getTheme(); - if (styleName && theme) { - var style = theme.categoryStyles[styleName]; - if (style && style.colour) { - this.setColour_(style.colour, childOut, categoryName); - } else { - console.warn('Style "' + styleName + - '" must exist and contain a colour value'); - } - } -}; - -/** - * Recursively updates all the category colours using the category style name. - * @param {Blockly.tree.BaseNode=} opt_tree Starting point of tree. - * Defaults to the root node. - * @private - */ -Blockly.Toolbox.prototype.updateColourFromTheme_ = function(opt_tree) { - var tree = opt_tree || this.tree_; - if (tree) { - var children = tree.getChildren(false); - for (var i = 0, child; (child = children[i]); i++) { - if (child.styleName) { - this.setColourFromStyle_(child.styleName, child, ''); - this.addColour_(); - } - this.updateColourFromTheme_(child); - } - } -}; - -/** - * Updates the category colours and background colour of selected categories. - * @package - */ -Blockly.Toolbox.prototype.refreshTheme = function() { - var tree = this.tree_; - if (tree) { - this.updateColourFromTheme_(tree); - this.updateSelectedItemColour_(tree); - } -}; - -/** - * Updates the background colour of the selected category. - * @param {!Blockly.tree.BaseNode} tree Starting point of tree. - * Defaults to the root node. - * @private - */ -Blockly.Toolbox.prototype.updateSelectedItemColour_ = function(tree) { - var selectedItem = tree.getSelectedItem(); - if (selectedItem) { - var hexColour = selectedItem.hexColour || '#57e'; - selectedItem.getRowElement().style.backgroundColor = hexColour; - this.addColour_(selectedItem); - } -}; - - -/** - * Recursively add colours to this toolbox. - * @param {Blockly.tree.BaseNode=} opt_tree Starting point of tree. - * Defaults to the root node. - * @private - */ -Blockly.Toolbox.prototype.addColour_ = function(opt_tree) { - var tree = opt_tree || this.tree_; - var children = tree.getChildren(false); - for (var i = 0, child; (child = children[i]); i++) { - var element = child.getRowElement(); - if (element) { - if (this.hasColours_) { - var border = '8px solid ' + (child.hexColour || '#ddd'); - } else { - var border = 'none'; - } - if (this.workspace_.RTL) { - element.style.borderRight = border; - } else { - element.style.borderLeft = border; - } - } - this.addColour_(child); - } -}; - -/** - * Unhighlight any previously specified option. - */ -Blockly.Toolbox.prototype.clearSelection = function() { - this.tree_.setSelectedItem(null); -}; - -/** - * Adds a style on the toolbox. Usually used to change the cursor. - * @param {string} style The name of the class to add. - * @package - */ -Blockly.Toolbox.prototype.addStyle = function(style) { - Blockly.utils.dom.addClass(/** @type {!Element} */ (this.HtmlDiv), style); -}; - -/** - * Removes a style from the toolbox. Usually used to change the cursor. - * @param {string} style The name of the class to remove. - * @package - */ -Blockly.Toolbox.prototype.removeStyle = function(style) { - Blockly.utils.dom.removeClass(/** @type {!Element} */ (this.HtmlDiv), style); -}; - -/** - * Return the deletion rectangle for this toolbox. - * @return {Blockly.utils.Rect} Rectangle in which to delete. - */ -Blockly.Toolbox.prototype.getClientRect = function() { - if (!this.HtmlDiv) { - return null; - } - - // BIG_NUM is offscreen padding so that blocks dragged beyond the toolbox - // area are still deleted. Must be smaller than Infinity, but larger than - // the largest screen size. - var BIG_NUM = 10000000; - var toolboxRect = this.HtmlDiv.getBoundingClientRect(); - - var top = toolboxRect.top; - var bottom = top + toolboxRect.height; - var left = toolboxRect.left; - var right = left + toolboxRect.width; - - // Assumes that the toolbox is on the SVG edge. If this changes - // (e.g. toolboxes in mutators) then this code will need to be more complex. - if (this.toolboxPosition == Blockly.TOOLBOX_AT_TOP) { - return new Blockly.utils.Rect(-BIG_NUM, bottom, -BIG_NUM, BIG_NUM); - } else if (this.toolboxPosition == Blockly.TOOLBOX_AT_BOTTOM) { - return new Blockly.utils.Rect(top, BIG_NUM, -BIG_NUM, BIG_NUM); - } else if (this.toolboxPosition == Blockly.TOOLBOX_AT_LEFT) { - return new Blockly.utils.Rect(-BIG_NUM, BIG_NUM, -BIG_NUM, right); - } else { // Right - return new Blockly.utils.Rect(-BIG_NUM, BIG_NUM, left, BIG_NUM); - } -}; - -/** - * Update the flyout's contents without closing it. Should be used in response - * to a change in one of the dynamic categories, such as variables or - * procedures. - */ -Blockly.Toolbox.prototype.refreshSelection = function() { - var selectedItem = this.tree_.getSelectedItem(); - if (selectedItem && selectedItem.contents) { - this.flyout_.show(selectedItem.contents); - } -}; - -/** - * Select the first toolbox category if no category is selected. - * @package - */ -Blockly.Toolbox.prototype.selectFirstCategory = function() { - var selectedItem = this.tree_.getSelectedItem(); - if (!selectedItem) { - this.tree_.selectChild(); - } -}; - -/** - * A blank separator node in the tree. - * @param {!Blockly.tree.BaseNode.Config} config The configuration for the tree. - * @constructor - * @extends {Blockly.tree.TreeNode} - */ -Blockly.Toolbox.TreeSeparator = function(config) { - Blockly.tree.TreeNode.call(this, null, '', config); -}; -Blockly.utils.object.inherits(Blockly.Toolbox.TreeSeparator, - Blockly.tree.TreeNode); - -/** - * CSS for Toolbox. See css.js for use. - */ -Blockly.Css.register([ - /* eslint-disable indent */ - '.blocklyToolboxDelete {', - 'cursor: url("<<>>/handdelete.cur"), auto;', - '}', - - '.blocklyToolboxGrab {', - 'cursor: url("<<>>/handclosed.cur"), auto;', - 'cursor: grabbing;', - 'cursor: -webkit-grabbing;', - '}', - - /* Category tree in Toolbox. */ - '.blocklyToolboxDiv {', - 'background-color: #ddd;', - 'overflow-x: visible;', - 'overflow-y: auto;', - 'position: absolute;', - 'z-index: 70;', /* so blocks go under toolbox when dragging */ - '-webkit-tap-highlight-color: transparent;', /* issue #1345 */ - '}', - - '.blocklyTreeRoot {', - 'padding: 4px 0;', - '}', - - '.blocklyTreeRoot:focus {', - 'outline: none;', - '}', - - '.blocklyTreeRow {', - 'height: 22px;', - 'line-height: 22px;', - 'margin-bottom: 3px;', - 'padding-right: 8px;', - 'white-space: nowrap;', - '}', - - '.blocklyHorizontalTree {', - 'float: left;', - 'margin: 1px 5px 8px 0;', - '}', - - '.blocklyHorizontalTreeRtl {', - 'float: right;', - 'margin: 1px 0 8px 5px;', - '}', - - '.blocklyToolboxDiv[dir="RTL"] .blocklyTreeRow {', - 'margin-left: 8px;', - '}', - - '.blocklyTreeRow:not(.blocklyTreeSelected):hover {', - 'background-color: rgba(255, 255, 255, 0.2);', - '}', - - '.blocklyTreeSeparator {', - 'border-bottom: solid #e5e5e5 1px;', - 'height: 0;', - 'margin: 5px 0;', - '}', - - '.blocklyTreeSeparatorHorizontal {', - 'border-right: solid #e5e5e5 1px;', - 'width: 0;', - 'padding: 5px 0;', - 'margin: 0 5px;', - '}', - - '.blocklyTreeIcon {', - 'background-image: url(<<>>/sprites.png);', - 'height: 16px;', - 'vertical-align: middle;', - 'width: 16px;', - '}', - - '.blocklyTreeIconClosedLtr {', - 'background-position: -32px -1px;', - '}', - - '.blocklyTreeIconClosedRtl {', - 'background-position: 0 -1px;', - '}', - - '.blocklyTreeIconOpen {', - 'background-position: -16px -1px;', - '}', - - '.blocklyTreeSelected>.blocklyTreeIconClosedLtr {', - 'background-position: -32px -17px;', - '}', - - '.blocklyTreeSelected>.blocklyTreeIconClosedRtl {', - 'background-position: 0 -17px;', - '}', - - '.blocklyTreeSelected>.blocklyTreeIconOpen {', - 'background-position: -16px -17px;', - '}', - - '.blocklyTreeIconNone,', - '.blocklyTreeSelected>.blocklyTreeIconNone {', - 'background-position: -48px -1px;', - '}', - - '.blocklyTreeLabel {', - 'cursor: default;', - 'font: 16px sans-serif;', - 'padding: 0 3px;', - 'vertical-align: middle;', - '}', - - '.blocklyToolboxDelete .blocklyTreeLabel {', - 'cursor: url("<<>>/handdelete.cur"), auto;', - '}', - - '.blocklyTreeSelected .blocklyTreeLabel {', - 'color: #fff;', - '}' - /* eslint-enable indent */ -]); - -Blockly.registry.register(Blockly.registry.Type.TOOLBOX, - Blockly.registry.DEFAULT, Blockly.Toolbox); diff --git a/core/toolbox/category.js b/core/toolbox/category.js new file mode 100644 index 00000000000..03691db73cf --- /dev/null +++ b/core/toolbox/category.js @@ -0,0 +1,690 @@ +/** + * @license + * Copyright 2020 Google LLC + * SPDX-License-Identifier: Apache-2.0 + */ + +/** + * @fileoverview A toolbox category used to organize blocks in the toolbox. + * @author aschmiedt@google.com (Abby Schmiedt) + */ +'use strict'; + +goog.provide('Blockly.ToolboxCategory'); + +goog.require('Blockly.registry'); +goog.require('Blockly.utils'); +goog.require('Blockly.utils.aria'); +goog.require('Blockly.utils.dom'); +goog.require('Blockly.utils.object'); +goog.require('Blockly.utils.toolbox'); +goog.require('Blockly.ToolboxItem'); + +goog.requireType('Blockly.ICollapsibleToolboxItem'); +goog.requireType('Blockly.IToolbox'); +goog.requireType('Blockly.IToolboxItem'); + + +/** + * Class for a category in a toolbox. + * @param {!Blockly.utils.toolbox.CategoryInfo} categoryDef The information needed + * to create a category in the toolbox. + * @param {!Blockly.IToolbox} toolbox The parent toolbox for the category. + * @param {Blockly.ICollapsibleToolboxItem=} opt_parent The parent category or null if + * the category does not have a parent. + * @constructor + * @extends {Blockly.ToolboxItem} + * @implements {Blockly.ISelectableToolboxItem} + */ +Blockly.ToolboxCategory = function(categoryDef, toolbox, opt_parent) { + Blockly.ToolboxCategory.superClass_.constructor.call( + this, categoryDef, toolbox, opt_parent); + + /** + * The name that will be displayed on the category. + * @type {string} + * @protected + */ + this.name_ = Blockly.utils.replaceMessageReferences(categoryDef['name']); + + /** + * The colour of the category. + * @type {string} + * @protected + */ + this.colour_ = this.getColour_(categoryDef); + + /** + * The html container for the category. + * @type {?Element} + * @protected + */ + this.htmlDiv_ = null; + + /** + * The html element for the category row. + * @type {?Element} + * @protected + */ + this.rowDiv_ = null; + + /** + * The html element that holds children elements of the category row. + * @type {?Element} + * @protected + */ + this.rowContents_ = null; + + /** + * The html element for the toolbox icon. + * @type {?Element} + * @protected + */ + this.iconDom_ = null; + + /** + * All the css class names that are used to create a category. + * @type {!Blockly.ToolboxCategory.CssConfig} + * @protected + */ + this.cssConfig_ = this.makeDefaultCssConfig_(); + + var cssConfig = categoryDef['cssconfig'] || categoryDef['cssConfig']; + Blockly.utils.object.mixin(this.cssConfig_, cssConfig); + + /** + * True if the category is meant to be hidden, false otherwise. + * @type {boolean} + * @protected + */ + this.isHidden_ = false; + + /** + * True if this category is disabled, false otherwise. + * @type {boolean} + * @protected + */ + this.isDisabled_ = false; + + /** + * The flyout items for this category. + * @type {string|!Blockly.utils.toolbox.FlyoutItemInfoArray} + * @protected + */ + this.flyoutItems_ = []; + + this.parseContents_(categoryDef); +}; + +Blockly.utils.object.inherits(Blockly.ToolboxCategory, Blockly.ToolboxItem); + +/** + * All the css class names that are used to create a category. + * @typedef {{ + * container:?string, + * row:?string, + * icon:?string, + * label:?string, + * selected:?string, + * openIcon:?string, + * closedIcon:?string + * }} + */ +Blockly.ToolboxCategory.CssConfig; + +/** + * Name used for registering a toolbox category. + * @const {string} + */ +Blockly.ToolboxCategory.registrationName = 'category'; + +/** + * The number of pixels to move the category over at each nested level. + * @type {number} + */ +Blockly.ToolboxCategory.nestedPadding = 19; + +/** + * The width in pixels of the strip of colour next to each category. + * @type {number} + */ +Blockly.ToolboxCategory.borderWidth = 8; + +/** + * The default colour of the category. This is used as the background colour of + * the category when it is selected. + * @type {string} + */ +Blockly.ToolboxCategory.defaultBackgroundColour = '#57e'; + +/** + * Creates an object holding the default classes for a category. + * @return {!Blockly.ToolboxCategory.CssConfig} The configuration object holding + * all the CSS classes for a category. + * @protected + */ +Blockly.ToolboxCategory.prototype.makeDefaultCssConfig_ = function() { + return { + 'container': 'blocklyToolboxCategory', + 'row': 'blocklyTreeRow', + 'rowContentContainer': 'blocklyTreeRowContentContainer', + 'icon': 'blocklyTreeIcon', + 'label': 'blocklyTreeLabel', + 'contents': 'blocklyToolboxContents', + 'selected': 'blocklyTreeSelected', + 'openIcon': 'blocklyTreeIconOpen', + 'closedIcon': 'blocklyTreeIconClosed', + }; +}; + +/** + * Parses the contents array depending on if the category is a dynamic category, + * or if its contents are meant to be shown in the flyout. + * @param {!Blockly.utils.toolbox.CategoryInfo} categoryDef The information needed + * to create a category. + * @protected + */ +Blockly.ToolboxCategory.prototype.parseContents_ = function(categoryDef) { + var contents = categoryDef['contents']; + + if (categoryDef['custom']) { + this.flyoutItems_ = categoryDef['custom']; + } else if (contents) { + for (var i = 0, itemDef; (itemDef = contents[i]); i++) { + var flyoutItem = /** @type {Blockly.utils.toolbox.FlyoutItemInfo} */ (itemDef); + this.flyoutItems_.push(flyoutItem); + } + } +}; + +/** + * @override + */ +Blockly.ToolboxCategory.prototype.init = function() { + this.createDom_(); + if (this.toolboxItemDef_['hidden'] == 'true') { + this.hide(); + } +}; + +/** + * Creates the dom for the category. + * @return {!Element} The parent element for the category. + * @protected + */ +Blockly.ToolboxCategory.prototype.createDom_ = function() { + this.htmlDiv_ = this.createContainer_(); + Blockly.utils.aria.setRole(this.htmlDiv_, Blockly.utils.aria.Role.TREEITEM); + Blockly.utils.aria.setState(/** @type {!Element} */ (this.htmlDiv_), + Blockly.utils.aria.State.SELECTED,false); + Blockly.utils.aria.setState(/** @type {!Element} */ (this.htmlDiv_), + Blockly.utils.aria.State.LEVEL, this.level_); + + this.rowDiv_ = this.createRowContainer_(); + this.rowDiv_.setAttribute('id', this.id_); + this.rowDiv_.style.pointerEvents = 'auto'; + this.htmlDiv_.appendChild(this.rowDiv_); + + this.rowContents_ = this.createRowContentsContainer_(); + this.rowContents_.style.pointerEvents = 'none'; + this.rowDiv_.appendChild(this.rowContents_); + + this.iconDom_ = this.createIconDom_(); + Blockly.utils.aria.setRole(this.iconDom_, Blockly.utils.aria.Role.PRESENTATION); + this.rowContents_.appendChild(this.iconDom_); + + var labelDom = this.createLabelDom_(this.name_); + this.rowContents_.appendChild(labelDom); + Blockly.utils.aria.setState(/** @type {!Element} */ (this.htmlDiv_), + Blockly.utils.aria.State.LABELLEDBY, labelDom.getAttribute('id')); + + this.addColourBorder_(this.colour_); + + return this.htmlDiv_; +}; + +/** + * Creates the container that holds the row and any subcategories. + * @return {!Element} The div that holds the icon and the label. + * @protected + */ +Blockly.ToolboxCategory.prototype.createContainer_ = function() { + var container = document.createElement('div'); + Blockly.utils.dom.addClass(container, this.cssConfig_['container']); + return container; +}; + +/** + * Creates the parent of the contents container. All clicks will happen on this + * div. + * @return {!Element} The div that holds the contents container. + * @protected + */ +Blockly.ToolboxCategory.prototype.createRowContainer_ = function() { + var rowDiv = document.createElement('div'); + Blockly.utils.dom.addClass(rowDiv, this.cssConfig_['row']); + var nestedPadding = Blockly.ToolboxCategory.nestedPadding * this.getLevel(); + nestedPadding = nestedPadding.toString() + 'px'; + this.workspace_.RTL ? rowDiv.style.paddingRight = nestedPadding : + rowDiv.style.paddingLeft = nestedPadding; + return rowDiv; +}; + +/** + * Creates the container for the label and icon. + * This is necessary so we can set all subcategory pointer events to none. + * @return {!Element} The div that holds the icon and the label. + * @protected + */ +Blockly.ToolboxCategory.prototype.createRowContentsContainer_ = function() { + var contentsContainer = document.createElement('div'); + Blockly.utils.dom.addClass(contentsContainer, this.cssConfig_['rowContentContainer']); + return contentsContainer; +}; + +/** + * Creates the span that holds the category icon. + * @return {!Element} The span that holds the category icon. + * @protected + */ +Blockly.ToolboxCategory.prototype.createIconDom_ = function() { + var toolboxIcon = document.createElement('span'); + if (!this.parentToolbox_.isHorizontal()) { + Blockly.utils.dom.addClass(toolboxIcon, this.cssConfig_['icon']); + } + + toolboxIcon.style.display = 'inline-block'; + return toolboxIcon; +}; + +/** + * Creates the span that holds the category label. + * This should have an id for accessibility purposes. + * @param {string} name The name of the category. + * @return {!Element} The span that holds the category label. + * @protected + */ +Blockly.ToolboxCategory.prototype.createLabelDom_ = function(name) { + var toolboxLabel = document.createElement('span'); + toolboxLabel.setAttribute('id', this.getId() + '.label'); + toolboxLabel.textContent = name; + Blockly.utils.dom.addClass(toolboxLabel, this.cssConfig_['label']); + return toolboxLabel; +}; + +/** + * Updates the colour for this category. + * @public + */ +Blockly.ToolboxCategory.prototype.refreshTheme = function() { + this.colour_ = this.getColour_(/** @type {Blockly.utils.toolbox.CategoryInfo} **/ + (this.toolboxItemDef_)); + this.addColourBorder_(this.colour_); +}; + +/** + * Add the strip of colour to the toolbox category. + * @param {string} colour The category colour. + * @protected + */ +Blockly.ToolboxCategory.prototype.addColourBorder_ = function(colour) { + if (colour) { + var border = Blockly.ToolboxCategory.borderWidth + 'px solid ' + + (colour || '#ddd'); + if (this.workspace_.RTL) { + this.rowDiv_.style.borderRight = border; + } else { + this.rowDiv_.style.borderLeft = border; + } + } +}; + +/** + * Gets either the colour or the style for a category. + * @param {!Blockly.utils.toolbox.CategoryInfo} categoryDef The object holding + * information on the category. + * @return {string} The hex colour for the category. + * @protected + */ +Blockly.ToolboxCategory.prototype.getColour_ = function(categoryDef) { + var styleName = categoryDef['categorystyle'] || categoryDef['categoryStyle']; + var colour = categoryDef['colour']; + + if (colour && styleName) { + console.warn('Toolbox category "' + this.name_ + + '" must not have both a style and a colour'); + } else if (styleName) { + return this.getColourfromStyle_(styleName); + } else { + return this.parseColour_(colour); + } + return ''; +}; + +/** + * Sets the colour for the category using the style name and returns the new + * colour as a hex string. + * @param {string} styleName Name of the style. + * @return {string} The hex colour for the category. + * @private + */ +Blockly.ToolboxCategory.prototype.getColourfromStyle_ = function(styleName) { + var theme = this.workspace_.getTheme(); + if (styleName && theme) { + var style = theme.categoryStyles[styleName]; + if (style && style.colour) { + return this.parseColour_(style.colour); + } else { + console.warn('Style "' + styleName + + '" must exist and contain a colour value'); + } + } + return ''; +}; + +/** + * Parses the colour on the category. + * @param {number|string} colourValue HSV hue value (0 to 360), #RRGGBB string, + * or a message reference string pointing to one of those two values. + * @return {string} The hex colour for the category. + * @private + */ +Blockly.ToolboxCategory.prototype.parseColour_ = function(colourValue) { + // Decode the colour for any potential message references + // (eg. `%{BKY_MATH_HUE}`). + var colour = Blockly.utils.replaceMessageReferences(colourValue); + if (colour == null || colour === '') { + // No attribute. No colour. + return ''; + } else { + var hue = Number(colour); + if (!isNaN(hue)) { + return Blockly.hueToHex(hue); + } else { + var hex = Blockly.utils.colour.parse(colour); + if (hex) { + return hex; + } else { + console.warn('Toolbox category "' + this.name_ + + '" has unrecognized colour attribute: ' + colour); + return ''; + } + } + } +}; + +/** + * Adds appropriate classes to display an open icon. + * @param {?Element} iconDiv The div that holds the icon. + * @protected + */ +Blockly.ToolboxCategory.prototype.openIcon_ = function(iconDiv) { + if (!iconDiv) { + return; + } + Blockly.utils.dom.removeClasses(iconDiv, this.cssConfig_['closedIcon']); + Blockly.utils.dom.addClass(iconDiv, this.cssConfig_['openIcon']); +}; + +/** + * Adds appropriate classes to display a closed icon. + * @param {?Element} iconDiv The div that holds the icon. + * @protected + */ +Blockly.ToolboxCategory.prototype.closeIcon_ = function(iconDiv) { + if (!iconDiv) { + return; + } + Blockly.utils.dom.removeClasses(iconDiv, this.cssConfig_['openIcon']); + Blockly.utils.dom.addClass(iconDiv, this.cssConfig_['closedIcon']); +}; + +/** + * Sets whether the category is visible or not. + * For a category to be visible its parent category must also be expanded. + * @param {boolean} isVisible True if category should be visible. + * @protected + */ +Blockly.ToolboxCategory.prototype.setVisible_ = function(isVisible) { + this.htmlDiv_.style.display = isVisible ? 'block' : 'none'; + this.isHidden_ = !isVisible; + + if (this.parentToolbox_.getSelectedItem() == this) { + this.parentToolbox_.clearSelection(); + } +}; + +/** + * Hide the category. + */ +Blockly.ToolboxCategory.prototype.hide = function() { + this.setVisible_(false); +}; + +/** + * Show the category. Category will only appear if its parent category is also + * expanded. + */ +Blockly.ToolboxCategory.prototype.show = function() { + this.setVisible_(true); +}; + +/** + * Whether the category is visible. + * A category is only visible if all of its ancestors are expanded and isHidden_ is false. + * @return {boolean} True if the category is visible, false otherwise. + * @public + */ +Blockly.ToolboxCategory.prototype.isVisible = function() { + return !this.isHidden_ && this.allAncestorsExpanded_(); +}; + +/** + * Whether all ancestors of a category (parent and parent's parent, etc.) are expanded. + * @return {boolean} True only if every ancestor is expanded + * @protected + */ +Blockly.ToolboxCategory.prototype.allAncestorsExpanded_ = function() { + var category = this; + while (category.getParent()) { + category = category.getParent(); + if (!category.isExpanded()) { + return false; + } + } + return true; +}; + +/** + * @override + */ +Blockly.ToolboxCategory.prototype.isSelectable = function() { + return this.isVisible() && !this.isDisabled_; +}; + +/** + * Handles when the toolbox item is clicked. + * @param {!Event} _e Click event to handle. + * @public + */ +Blockly.ToolboxCategory.prototype.onClick = function(_e) { + // No-op +}; + +/** + * Sets the current category as selected. + * @param {boolean} isSelected True if this category is selected, false + * otherwise. + * @public + */ +Blockly.ToolboxCategory.prototype.setSelected = function(isSelected) { + if (isSelected) { + var defaultColour = this.parseColour_( + Blockly.ToolboxCategory.defaultBackgroundColour); + this.rowDiv_.style.backgroundColor = this.colour_ || defaultColour; + Blockly.utils.dom.addClass(this.rowDiv_, this.cssConfig_['selected']); + } else { + this.rowDiv_.style.backgroundColor = ''; + Blockly.utils.dom.removeClass(this.rowDiv_, this.cssConfig_['selected']); + } + Blockly.utils.aria.setState(/** @type {!Element} */ (this.htmlDiv_), + Blockly.utils.aria.State.SELECTED, isSelected); +}; + +/** + * Sets whether the category is disabled. + * @param {boolean} isDisabled True to disable the category, false otherwise. + */ +Blockly.ToolboxCategory.prototype.setDisabled = function(isDisabled) { + this.isDisabled_ = isDisabled; + this.getDiv().setAttribute('disabled', isDisabled); + isDisabled ? this.getDiv().setAttribute('disabled', 'true') : + this.getDiv().removeAttribute('disabled'); +}; + +/** + * Gets the name of the category. Used for emitting events. + * @return {string} The name of the toolbox item. + * @public + */ +Blockly.ToolboxCategory.prototype.getName = function() { + return this.name_; +}; + +/** + * @override + */ +Blockly.ToolboxCategory.prototype.getParent = function() { + return this.parent_; +}; + +/** + * @override + */ +Blockly.ToolboxCategory.prototype.getDiv = function() { + return this.htmlDiv_; +}; + +/** + * Gets the contents of the category. These are items that are meant to be + * displayed in the flyout. + * @return {!Blockly.utils.toolbox.FlyoutItemInfoArray|string} The definition + * of items to be displayed in the flyout. + * @public + */ +Blockly.ToolboxCategory.prototype.getContents = function() { + return this.flyoutItems_; +}; + +/** + * Updates the contents to be displayed in the flyout. + * If the flyout is open when the contents are updated, refreshSelection on the + * toolbox must also be called. + * @param {!Blockly.utils.toolbox.FlyoutDefinition|string} contents The contents + * to be displayed in the flyout. A string can be supplied to create a + * dynamic category. + * @public + */ +Blockly.ToolboxCategory.prototype.updateFlyoutContents = function(contents) { + this.flyoutItems_ = []; + + if (typeof contents == 'string') { + this.toolboxItemDef_['custom'] = contents; + } else { + // Removes old custom field when contents is updated. + delete this.toolboxItemDef_['custom']; + this.toolboxItemDef_['contents'] = + Blockly.utils.toolbox.convertFlyoutDefToJsonArray(contents); + } + this.parseContents_( + /** @type {Blockly.utils.toolbox.CategoryInfo} */ (this.toolboxItemDef_)); +}; + +/** + * @override + */ +Blockly.ToolboxCategory.prototype.dispose = function() { + Blockly.utils.dom.removeNode(this.htmlDiv_); +}; + +/** + * CSS for Toolbox. See css.js for use. + */ +Blockly.Css.register([ + /* eslint-disable indent */ + '.blocklyTreeRow:not(.blocklyTreeSelected):hover {', + 'background-color: rgba(255, 255, 255, 0.2);', + '}', + + '.blocklyToolboxDiv[layout="h"] .blocklyToolboxCategory {', + 'margin: 1px 5px 1px 0;', + '}', + + '.blocklyToolboxDiv[dir="RTL"][layout="h"] .blocklyToolboxCategory {', + 'margin: 1px 0 1px 5px;', + '}', + + '.blocklyTreeRow {', + 'height: 22px;', + 'line-height: 22px;', + 'margin-bottom: 3px;', + 'padding-right: 8px;', + 'white-space: nowrap;', + '}', + + '.blocklyToolboxDiv[dir="RTL"] .blocklyTreeRow {', + 'margin-left: 8px;', + 'padding-right: 0px', + '}', + + '.blocklyTreeIcon {', + 'background-image: url(<<>>/sprites.png);', + 'height: 16px;', + 'vertical-align: middle;', + 'visibility: hidden;', + 'width: 16px;', + '}', + + '.blocklyTreeIconClosed {', + 'background-position: -32px -1px;', + '}', + + '.blocklyToolboxDiv[dir="RTL"] .blocklyTreeIconClosed {', + 'background-position: 0 -1px;', + '}', + + '.blocklyTreeSelected>.blocklyTreeIconClosed {', + 'background-position: -32px -17px;', + '}', + + '.blocklyToolboxDiv[dir="RTL"] .blocklyTreeSelected>.blocklyTreeIconClosed {', + 'background-position: 0 -17px;', + '}', + + '.blocklyTreeIconOpen {', + 'background-position: -16px -1px;', + '}', + + '.blocklyTreeSelected>.blocklyTreeIconOpen {', + 'background-position: -16px -17px;', + '}', + + '.blocklyTreeLabel {', + 'cursor: default;', + 'font: 16px sans-serif;', + 'padding: 0 3px;', + 'vertical-align: middle;', + '}', + + '.blocklyToolboxDelete .blocklyTreeLabel {', + 'cursor: url("<<>>/handdelete.cur"), auto;', + '}', + + '.blocklyTreeSelected .blocklyTreeLabel {', + 'color: #fff;', + '}' + /* eslint-enable indent */ +]); + +Blockly.registry.register(Blockly.registry.Type.TOOLBOX_ITEM, + Blockly.ToolboxCategory.registrationName, Blockly.ToolboxCategory); diff --git a/core/toolbox/collapsible_category.js b/core/toolbox/collapsible_category.js new file mode 100644 index 00000000000..b4e2af3c103 --- /dev/null +++ b/core/toolbox/collapsible_category.js @@ -0,0 +1,294 @@ +/** + * @license + * Copyright 2020 Google LLC + * SPDX-License-Identifier: Apache-2.0 + */ + +/** + * @fileoverview A toolbox category used to organize blocks in the toolbox. + * @author aschmiedt@google.com (Abby Schmiedt) + */ +'use strict'; + +goog.provide('Blockly.CollapsibleToolboxCategory'); + +goog.require('Blockly.registry'); +goog.require('Blockly.ToolboxCategory'); +goog.require('Blockly.ToolboxSeparator'); +goog.require('Blockly.utils.aria'); +goog.require('Blockly.utils.dom'); +goog.require('Blockly.utils.object'); +goog.require('Blockly.utils.toolbox'); +goog.require('Blockly.ToolboxItem'); + +goog.requireType('Blockly.ICollapsibleToolboxItem'); +goog.requireType('Blockly.IToolbox'); +goog.requireType('Blockly.IToolboxItem'); + + +/** + * Class for a category in a toolbox that can be collapsed. + * @param {!Blockly.utils.toolbox.CategoryInfo} categoryDef The information needed + * to create a category in the toolbox. + * @param {!Blockly.IToolbox} toolbox The parent toolbox for the category. + * @param {Blockly.ICollapsibleToolboxItem=} opt_parent The parent category or null if + * the category does not have a parent. + * @constructor + * @extends {Blockly.ToolboxCategory} + * @implements {Blockly.ICollapsibleToolboxItem} + */ +Blockly.CollapsibleToolboxCategory = function(categoryDef, toolbox, opt_parent) { + /** + * Container for any child categories. + * @type {?Element} + * @protected + */ + this.subcategoriesDiv_ = null; + + /** + * Whether or not the category should display its subcategories. + * @type {boolean} + * @protected + */ + this.expanded_ = false; + + /** + * The child toolbox items for this category. + * @type {!Array} + * @protected + */ + this.toolboxItems_ = []; + + Blockly.CollapsibleToolboxCategory.superClass_.constructor.call( + this, categoryDef, toolbox, opt_parent); +}; + +Blockly.utils.object.inherits(Blockly.CollapsibleToolboxCategory, Blockly.ToolboxCategory); + +/** + * All the css class names that are used to create a collapsible + * category. This is all the properties from the regular category plus contents. + * @typedef {{ + * container:?string, + * row:?string, + * icon:?string, + * label:?string, + * selected:?string, + * openIcon:?string, + * closedIcon:?string, + * contents:?string + * }} + */ +Blockly.CollapsibleToolboxCategory.CssConfig; + +/** + * Name used for registering a collapsible toolbox category. + * @const {string} + */ +Blockly.CollapsibleToolboxCategory.registrationName = 'collapsibleCategory'; + +/** + * @override + */ +Blockly.CollapsibleToolboxCategory.prototype.makeDefaultCssConfig_ = function() { + var cssConfig = Blockly.CollapsibleToolboxCategory.superClass_.makeDefaultCssConfig_.call(this); + cssConfig['contents'] = 'blocklyToolboxContents'; + return cssConfig; +}; + +/** + * @override + */ +Blockly.CollapsibleToolboxCategory.prototype.parseContents_ = function(categoryDef) { + var contents = categoryDef['contents']; + var prevIsFlyoutItem = true; + + if (categoryDef['custom']) { + this.flyoutItems_ = categoryDef['custom']; + } else if (contents) { + for (var i = 0, itemDef; (itemDef = contents[i]); i++) { + // Separators can exist as either a flyout item or a toolbox item so + // decide where it goes based on the type of the previous item. + if (!Blockly.registry.hasItem(Blockly.registry.Type.TOOLBOX_ITEM, itemDef['kind']) || + (itemDef['kind'].toLowerCase() == Blockly.ToolboxSeparator.registrationName && + prevIsFlyoutItem)) { + var flyoutItem = /** @type {Blockly.utils.toolbox.FlyoutItemInfo} */ (itemDef); + this.flyoutItems_.push(flyoutItem); + prevIsFlyoutItem = true; + } else { + this.createToolboxItem_(itemDef); + prevIsFlyoutItem = false; + } + } + } +}; + +/** + * Creates a toolbox item and adds it to the list of toolbox items. + * @param {!Blockly.utils.toolbox.ToolboxItemInfo} itemDef The information needed + * to create a toolbox item. + * @private + */ +Blockly.CollapsibleToolboxCategory.prototype.createToolboxItem_ = function(itemDef) { + var registryName = itemDef['kind']; + var categoryDef = /** @type {!Blockly.utils.toolbox.CategoryInfo} */ (itemDef); + + // Categories that are collapsible are created using a class registered under + // a diffferent name. + if (registryName.toUpperCase() == 'CATEGORY' && + Blockly.utils.toolbox.isCategoryCollapsible(categoryDef)) { + registryName = Blockly.CollapsibleToolboxCategory.registrationName; + } + var ToolboxItemClass = Blockly.registry.getClass( + Blockly.registry.Type.TOOLBOX_ITEM, registryName); + var toolboxItem = new ToolboxItemClass(itemDef, this.parentToolbox_, this); + this.toolboxItems_.push(toolboxItem); +}; + +/** + * @override + */ +Blockly.CollapsibleToolboxCategory.prototype.init = function() { + Blockly.CollapsibleToolboxCategory.superClass_.init.call(this); + + this.setExpanded(this.toolboxItemDef_['expanded'] == 'true' || + this.toolboxItemDef_['expanded']); +}; + +/** + * @override + */ +Blockly.CollapsibleToolboxCategory.prototype.createDom_ = function() { + Blockly.CollapsibleToolboxCategory.superClass_.createDom_.call(this); + + var subCategories = this.getChildToolboxItems(); + this.subcategoriesDiv_ = this.createSubCategoriesDom_(subCategories); + Blockly.utils.aria.setRole(this.subcategoriesDiv_, + Blockly.utils.aria.Role.GROUP); + this.htmlDiv_.appendChild(this.subcategoriesDiv_); + + return this.htmlDiv_; +}; + +/** + * @override + */ +Blockly.CollapsibleToolboxCategory.prototype.createIconDom_ = function() { + var toolboxIcon = document.createElement('span'); + if (!this.parentToolbox_.isHorizontal()) { + Blockly.utils.dom.addClass(toolboxIcon, this.cssConfig_['icon']); + toolboxIcon.style.visibility = 'visible'; + } + + toolboxIcon.style.display = 'inline-block'; + return toolboxIcon; +}; + +/** + * Create the dom for all subcategories. + * @param {!Array} subcategories The subcategories. + * @return {!Element} The div holding all the subcategories. + * @protected + */ +Blockly.CollapsibleToolboxCategory.prototype.createSubCategoriesDom_ = function(subcategories) { + var contentsContainer = document.createElement('div'); + Blockly.utils.dom.addClass(contentsContainer, this.cssConfig_['contents']); + + for (var i = 0; i < subcategories.length; i++) { + var newCategory = subcategories[i]; + newCategory.init(); + var newCategoryDiv = newCategory.getDiv(); + contentsContainer.appendChild(newCategoryDiv); + } + return contentsContainer; +}; + + +/** + * Opens or closes the current category. + * @param {boolean} isExpanded True to expand the category, false to close. + * @public + */ +Blockly.CollapsibleToolboxCategory.prototype.setExpanded = function(isExpanded) { + if (this.expanded_ == isExpanded) { + return; + } + this.expanded_ = isExpanded; + if (isExpanded) { + this.subcategoriesDiv_.style.display = 'block'; + this.openIcon_(this.iconDom_); + } else { + this.subcategoriesDiv_.style.display = 'none'; + this.closeIcon_(this.iconDom_); + } + Blockly.utils.aria.setState(/** @type {!Element} */ (this.htmlDiv_), + Blockly.utils.aria.State.EXPANDED, isExpanded); + + this.parentToolbox_.handleToolboxItemResize(); +}; + +/** + * @override + */ +Blockly.CollapsibleToolboxCategory.prototype.setVisible_ = function(isVisible) { + this.htmlDiv_.style.display = isVisible ? 'block' : 'none'; + for (var i = 0, child; (child = this.getChildToolboxItems()[i]); i++) { + child.setVisible_(isVisible); + } + this.isHidden_ = !isVisible; + + if (this.parentToolbox_.getSelectedItem() == this) { + this.parentToolbox_.clearSelection(); + } +}; + +/** + * Whether the category is expanded to show its child subcategories. + * @return {boolean} True if the toolbox item shows its children, false if it + * is collapsed. + * @public + */ +Blockly.CollapsibleToolboxCategory.prototype.isExpanded = function() { + return this.expanded_; +}; + +/** + * @override + */ +Blockly.CollapsibleToolboxCategory.prototype.isCollapsible = function() { + return true; +}; + +/** + * @override + */ +Blockly.CollapsibleToolboxCategory.prototype.onClick = function(_e) { + this.toggleExpanded(); +}; + +/** + * Toggles whether or not the category is expanded. + * @public + */ +Blockly.CollapsibleToolboxCategory.prototype.toggleExpanded = function() { + this.setExpanded(!this.expanded_); +}; + +/** + * @override + */ +Blockly.CollapsibleToolboxCategory.prototype.getDiv = function() { + return this.htmlDiv_; +}; + +/** + * Gets any children toolbox items. (ex. Gets the subcategories) + * @return {!Array} The child toolbox items. + */ +Blockly.CollapsibleToolboxCategory.prototype.getChildToolboxItems = function() { + return this.toolboxItems_; +}; + + +Blockly.registry.register(Blockly.registry.Type.TOOLBOX_ITEM, + Blockly.CollapsibleToolboxCategory.registrationName, Blockly.CollapsibleToolboxCategory); diff --git a/core/toolbox/separator.js b/core/toolbox/separator.js new file mode 100644 index 00000000000..bac8a5e27a9 --- /dev/null +++ b/core/toolbox/separator.js @@ -0,0 +1,123 @@ +/** + * @license + * Copyright 2020 Google LLC + * SPDX-License-Identifier: Apache-2.0 + */ + +/** + * @fileoverview A separator used for separating toolbox categories. + * @author aschmiedt@google.com (Abby Schmiedt) + * @author maribethb@google.com (Maribeth Bottorff) + */ +'use strict'; + +goog.provide('Blockly.ToolboxSeparator'); + +goog.require('Blockly.registry'); +goog.require('Blockly.ToolboxItem'); +goog.require('Blockly.utils.dom'); + +goog.requireType('Blockly.IToolbox'); +goog.requireType('Blockly.IToolboxItem'); +goog.requireType('Blockly.utils.toolbox'); + + +/** + * Class for a toolbox separator. This is the thin visual line that appears on + * the toolbox. This item is not interactable. + * @param {!Blockly.utils.toolbox.SeparatorInfo} separatorDef The information + * needed to create a separator. + * @param {!Blockly.IToolbox} toolbox The parent toolbox for the separator. + * @constructor + * @extends {Blockly.ToolboxItem} + * @implements {Blockly.IToolboxItem} + */ +Blockly.ToolboxSeparator = function(separatorDef, toolbox) { + + Blockly.ToolboxSeparator.superClass_.constructor.call( + this, separatorDef, toolbox); + /** + * All the css class names that are used to create a separator. + * @type {!Blockly.ToolboxSeparator.CssConfig} + * @protected + */ + this.cssConfig_ = { + 'container': 'blocklyTreeSeparator' + }; + + var cssConfig = separatorDef['cssconfig'] || separatorDef['cssConfig']; + Blockly.utils.object.mixin(this.cssConfig_, cssConfig); +}; +Blockly.utils.object.inherits(Blockly.ToolboxSeparator, Blockly.ToolboxItem); + +/** + * All the css class names that are used to create a separator. + * @typedef {{ + * container:?string + * }} + */ +Blockly.ToolboxSeparator.CssConfig; + +/** + * Name used for registering a toolbox separator. + * @const {string} + */ +Blockly.ToolboxSeparator.registrationName = 'sep'; + +/** + * @override + */ +Blockly.ToolboxSeparator.prototype.init = function() { + this.createDom_(); +}; + +/** + * Creates the dom for a separator. + * @return {!Element} The parent element for the separator. + * @protected + */ +Blockly.ToolboxSeparator.prototype.createDom_ = function() { + var container = document.createElement('div'); + Blockly.utils.dom.addClass(container, this.cssConfig_['container']); + this.htmlDiv_ = container; + return container; +}; + +/** + * @override + */ +Blockly.ToolboxSeparator.prototype.getDiv = function() { + return this.htmlDiv_; +}; + +/** + * @override + */ +Blockly.ToolboxSeparator.prototype.dispose = function() { + Blockly.utils.dom.removeNode(this.htmlDiv_); +}; + +/** + * CSS for Toolbox. See css.js for use. + */ +Blockly.Css.register([ + /* eslint-disable indent */ + '.blocklyTreeSeparator {', + 'border-bottom: solid #e5e5e5 1px;', + 'height: 0;', + 'margin: 5px 0;', + '}', + + '.blocklyToolboxDiv[layout="h"] .blocklyTreeSeparator {', + 'border-right: solid #e5e5e5 1px;', + 'border-bottom: none;', + 'height: auto;', + 'margin: 0 5px 0 5px;', + 'padding: 5px 0;', + 'width: 0;', + '}', + /* eslint-enable indent */ +]); + +Blockly.registry.register(Blockly.registry.Type.TOOLBOX_ITEM, + Blockly.ToolboxSeparator.registrationName, Blockly.ToolboxSeparator); diff --git a/core/toolbox/toolbox.js b/core/toolbox/toolbox.js new file mode 100644 index 00000000000..b190bccfad3 --- /dev/null +++ b/core/toolbox/toolbox.js @@ -0,0 +1,984 @@ +/** + * @license + * Copyright 2020 Google LLC + * SPDX-License-Identifier: Apache-2.0 + */ + +/** + * @fileoverview Toolbox from whence to create blocks. + * @author fraser@google.com (Neil Fraser) + */ +'use strict'; + +goog.provide('Blockly.Toolbox'); + +goog.require('Blockly.CollapsibleToolboxCategory'); +goog.require('Blockly.Css'); +goog.require('Blockly.Events'); +goog.require('Blockly.Events.Ui'); +goog.require('Blockly.navigation'); +goog.require('Blockly.registry'); +goog.require('Blockly.Touch'); +goog.require('Blockly.utils'); +goog.require('Blockly.utils.aria'); +goog.require('Blockly.utils.dom'); +goog.require('Blockly.utils.Rect'); +goog.require('Blockly.utils.toolbox'); + +goog.requireType('Blockly.Action'); +goog.requireType('Blockly.IBlocklyActionable'); +goog.requireType('Blockly.ICollapsibleToolboxItem'); +goog.requireType('Blockly.IDeleteArea'); +goog.requireType('Blockly.IFlyout'); +goog.requireType('Blockly.ISelectableToolboxItem'); +goog.requireType('Blockly.IStyleable'); +goog.requireType('Blockly.IToolbox'); +goog.requireType('Blockly.IToolboxItem'); +goog.requireType('Blockly.WorkspaceSvg'); + + +/** + * Class for a Toolbox. + * Creates the toolbox's DOM. + * @param {!Blockly.WorkspaceSvg} workspace The workspace in which to create new + * blocks. + * @constructor + * @implements {Blockly.IBlocklyActionable} + * @implements {Blockly.IDeleteArea} + * @implements {Blockly.IStyleable} + * @implements {Blockly.IToolbox} + */ +Blockly.Toolbox = function(workspace) { + /** + * The workspace this toolbox is on. + * @type {!Blockly.WorkspaceSvg} + * @protected + */ + this.workspace_ = workspace; + + /** + * The JSON describing the contents of this toolbox. + * @type {!Blockly.utils.toolbox.ToolboxInfo} + * @protected + */ + this.toolboxDef_ = workspace.options.languageTree || {'contents': []}; + + /** + * Whether the toolbox should be laid out horizontally. + * @type {boolean} + * @private + */ + this.horizontalLayout_ = workspace.options.horizontalLayout; + + /** + * The html container for the toolbox. + * @type {?Element} + */ + this.HtmlDiv = null; + + /** + * The html container for the contents of a toolbox. + * @type {?Element} + * @protected + */ + this.contentsDiv_ = null; + + /** + * The list of items in the toolbox. + * @type {!Array} + * @protected + */ + this.contents_ = []; + + /** + * The width of the toolbox. + * @type {number} + * @protected + */ + this.width_ = 0; + + /** + * The height of the toolbox. + * @type {number} + * @protected + */ + this.height_ = 0; + + /** + * Is RTL vs LTR. + * @type {boolean} + */ + this.RTL = workspace.options.RTL; + + /** + * The flyout for the toolbox. + * @type {?Blockly.IFlyout} + * @private + */ + this.flyout_ = null; + + /** + * A map from toolbox item IDs to toolbox items. + * @type {!Object} + * @protected + */ + this.contentMap_ = {}; + + /** + * Position of the toolbox and flyout relative to the workspace. + * @type {!Blockly.utils.toolbox.Position} + */ + this.toolboxPosition = workspace.options.toolboxPosition; + + /** + * The currently selected item. + * @type {?Blockly.ISelectableToolboxItem} + * @protected + */ + this.selectedItem_ = null; + + /** + * The previously selected item. + * @type {?Blockly.ISelectableToolboxItem} + * @protected + */ + this.previouslySelectedItem_ = null; + + /** + * Array holding info needed to unbind event handlers. + * Used for disposing. + * Ex: [[node, name, func], [node, name, func]]. + * @type {!Array} + * @protected + */ + this.boundEvents_ = []; +}; + +/** + * Initializes the toolbox + * @public + */ +Blockly.Toolbox.prototype.init = function() { + var workspace = this.workspace_; + var svg = workspace.getParentSvg(); + + this.flyout_ = this.createFlyout_(); + + this.HtmlDiv = this.createDom_(this.workspace_); + Blockly.utils.dom.insertAfter(this.flyout_.createDom('svg'), svg); + this.flyout_.init(workspace); + + this.render(this.toolboxDef_); + var themeManager = workspace.getThemeManager(); + themeManager.subscribe(this.HtmlDiv, 'toolboxBackgroundColour', + 'background-color'); + themeManager.subscribe(this.HtmlDiv, 'toolboxForegroundColour', 'color'); +}; + +/** + * Creates the dom for the toolbox. + * @param {!Blockly.WorkspaceSvg} workspace The workspace this toolbox is on. + * @return {!Element} The html container for the toolbox. + * @protected + */ +Blockly.Toolbox.prototype.createDom_ = function(workspace) { + var svg = workspace.getParentSvg(); + + var container = this.createContainer_(); + + this.contentsDiv_ = this.createContentsContainer_(); + this.contentsDiv_.tabIndex = 0; + Blockly.utils.aria.setRole(this.contentsDiv_, Blockly.utils.aria.Role.TREE); + container.appendChild(this.contentsDiv_); + + svg.parentNode.insertBefore(container, svg); + + this.attachEvents_(container, this.contentsDiv_); + return container; +}; + +/** + * Creates the container div for the toolbox. + * @return {!Element} The html container for the toolbox. + * @protected + */ +Blockly.Toolbox.prototype.createContainer_ = function() { + var toolboxContainer = document.createElement('div'); + toolboxContainer.setAttribute('layout', this.isHorizontal() ? 'h' : 'v'); + Blockly.utils.dom.addClass(toolboxContainer, 'blocklyToolboxDiv'); + Blockly.utils.dom.addClass(toolboxContainer, 'blocklyNonSelectable'); + toolboxContainer.setAttribute('dir', this.RTL ? 'RTL' : 'LTR'); + return toolboxContainer; +}; + +/** + * Creates the container for all the contents in the toolbox. + * @return {!Element} The html container for the toolbox contents. + * @protected + */ +Blockly.Toolbox.prototype.createContentsContainer_ = function() { + var contentsContainer = document.createElement('div'); + Blockly.utils.dom.addClass(contentsContainer, 'blocklyToolboxContents'); + if (this.isHorizontal()) { + contentsContainer.style.flexDirection = 'row'; + } + return contentsContainer; +}; + +/** + * Adds event listeners to the toolbox container div. + * @param {!Element} container The html container for the toolbox. + * @param {!Element} contentsContainer The html container for the contents + * of the toolbox. + * @protected + */ +Blockly.Toolbox.prototype.attachEvents_ = function(container, + contentsContainer) { + // Clicking on toolbox closes popups. + var clickEvent = Blockly.bindEventWithChecks_(container, 'mousedown', this, + this.onClick_, /* opt_noCaptureIdentifier */ false, + /* opt_noPreventDefault */ true); + this.boundEvents_.push(clickEvent); + + var keyDownEvent = Blockly.bindEventWithChecks_(contentsContainer, 'keydown', + this, this.onKeyDown_, /* opt_noCaptureIdentifier */ false, + /* opt_noPreventDefault */ true); + this.boundEvents_.push(keyDownEvent); +}; + +/** + * Handles on click events for when the toolbox or toolbox items are clicked. + * @param {!Event} e Click event to handle. + * @protected + */ +Blockly.Toolbox.prototype.onClick_ = function(e) { + if (Blockly.utils.isRightButton(e) || e.target == this.HtmlDiv) { + // Close flyout. + Blockly.hideChaff(false); + } else { + var srcElement = e.srcElement; + var itemId = srcElement.getAttribute('id'); + if (itemId) { + var item = this.getToolboxItemById(itemId); + if (item.isSelectable()) { + this.setSelectedItem(item); + item.onClick(e); + } + } + // Just close popups. + Blockly.hideChaff(true); + } + Blockly.Touch.clearTouchIdentifier(); // Don't block future drags. +}; + +/** + * Handles key down events for the toolbox. + * @param {!KeyboardEvent} e The key down event. + * @protected + */ +Blockly.Toolbox.prototype.onKeyDown_ = function(e) { + var handled = false; + switch (e.keyCode) { + case Blockly.utils.KeyCodes.DOWN: + handled = this.selectNext_(); + break; + case Blockly.utils.KeyCodes.UP: + handled = this.selectPrevious_(); + break; + case Blockly.utils.KeyCodes.LEFT: + handled = this.selectParent_(); + break; + case Blockly.utils.KeyCodes.RIGHT: + handled = this.selectChild_(); + break; + case Blockly.utils.KeyCodes.ENTER: + case Blockly.utils.KeyCodes.SPACE: + if (this.selectedItem_ && this.selectedItem_.isCollapsible()) { + var collapsibleItem = /** @type {!Blockly.ICollapsibleToolboxItem} */ (this.selectedItem_); + collapsibleItem.toggleExpanded(); + handled = true; + } + break; + default: + handled = false; + break; + } + + if (handled) { + e.preventDefault(); + } +}; + +/** + * Creates the flyout based on the toolbox layout. + * @return {!Blockly.IFlyout} The flyout for the toolbox. + * @throws {Error} If missing a require for `Blockly.HorizontalFlyout`, + * `Blockly.VerticalFlyout`, and no flyout plugin is specified. + * @protected + */ +Blockly.Toolbox.prototype.createFlyout_ = function() { + var workspace = this.workspace_; + // TODO (#4247): Look into adding a makeFlyout method to Blockly Options. + var workspaceOptions = new Blockly.Options( + /** @type {!Blockly.BlocklyOptions} */ + ({ + 'parentWorkspace': workspace, + 'rtl': workspace.RTL, + 'oneBasedIndex': workspace.options.oneBasedIndex, + 'horizontalLayout': workspace.horizontalLayout, + 'renderer': workspace.options.renderer, + 'rendererOverrides': workspace.options.rendererOverrides + })); + // Options takes in either 'end' or 'start'. This has already been parsed to + // be either 0 or 1, so set it after. + workspaceOptions.toolboxPosition = workspace.options.toolboxPosition; + var FlyoutClass = null; + if (workspace.horizontalLayout) { + FlyoutClass = Blockly.registry.getClassFromOptions( + Blockly.registry.Type.FLYOUTS_HORIZONTAL_TOOLBOX, workspace.options); + } else { + FlyoutClass = Blockly.registry.getClassFromOptions( + Blockly.registry.Type.FLYOUTS_VERTICAL_TOOLBOX, workspace.options); + } + + if (!FlyoutClass) { + throw new Error('Blockly.VerticalFlyout, Blockly.HorizontalFlyout or your own' + + ' custom flyout must be required.'); + } + return new FlyoutClass(workspaceOptions); +}; + +/** + * Fills the toolbox with new toolbox items and removes any old contents. + * @param {!Blockly.utils.toolbox.ToolboxInfo} toolboxDef Object holding information + * for creating a toolbox. + * @package + */ +Blockly.Toolbox.prototype.render = function(toolboxDef) { + this.toolboxDef_ = toolboxDef; + for (var i = 0; i < this.contents_.length; i++) { + var toolboxItem = this.contents_[i]; + if (toolboxItem) { + toolboxItem.dispose(); + } + } + this.contents_ = []; + this.contentMap_ = {}; + this.renderContents_(toolboxDef['contents']); + this.position(); +}; + +/** + * Adds all the toolbox items to the toolbox. + * @param {!Array} toolboxDef Array + * holding objects containing information on the contents of the toolbox. + * @protected + */ +Blockly.Toolbox.prototype.renderContents_ = function(toolboxDef) { + // This is for performance reasons. By using document fragment we only have to + // add to the dom once. + var fragment = document.createDocumentFragment(); + for (var i = 0, toolboxItemDef; (toolboxItemDef = toolboxDef[i]); i++) { + this.createToolboxItem_(toolboxItemDef, fragment); + } + this.contentsDiv_.appendChild(fragment); +}; + +/** + * Creates and renders the toolbox item. + * @param {Blockly.utils.toolbox.ToolboxItemInfo} toolboxItemDef Any information + * that can be used to create an item in the toolbox. + * @param {!DocumentFragment} fragment The document fragment to add the child + * toolbox elements to. + * @private + */ +Blockly.Toolbox.prototype.createToolboxItem_ = function(toolboxItemDef, fragment) { + var registryName = toolboxItemDef['kind']; + + // Categories that are collapsible are created using a class registered under + // a diffferent name. + if (registryName.toUpperCase() == 'CATEGORY' && + Blockly.utils.toolbox.isCategoryCollapsible( + /** @type {!Blockly.utils.toolbox.CategoryInfo} */(toolboxItemDef))) { + registryName = Blockly.CollapsibleToolboxCategory.registrationName; + } + + var ToolboxItemClass = Blockly.registry.getClass( + Blockly.registry.Type.TOOLBOX_ITEM, registryName.toLowerCase()); + if (ToolboxItemClass) { + var toolboxItem = new ToolboxItemClass(toolboxItemDef, this); + this.addToolboxItem_(toolboxItem); + toolboxItem.init(); + var toolboxItemDom = toolboxItem.getDiv(); + if (toolboxItemDom) { + fragment.appendChild(toolboxItemDom); + } + } +}; + +/** + * Adds an item to the toolbox. + * @param {!Blockly.IToolboxItem} toolboxItem The item in the toolbox. + * @protected + */ +Blockly.Toolbox.prototype.addToolboxItem_ = function(toolboxItem) { + this.contents_.push(toolboxItem); + this.contentMap_[toolboxItem.getId()] = toolboxItem; + if (toolboxItem.isCollapsible()) { + var collapsibleItem = /** @type {Blockly.ICollapsibleToolboxItem} */ + (toolboxItem); + for (var i = 0, child; (child = collapsibleItem.getChildToolboxItems()[i]); i++) { + this.addToolboxItem_(child); + } + } +}; + +/** + * Gets the items in the toolbox. + * @return {!Array} The list of items in the toolbox. + * @public + */ +Blockly.Toolbox.prototype.getToolboxItems = function() { + return this.contents_; +}; + +/** + * Adds a style on the toolbox. Usually used to change the cursor. + * @param {string} style The name of the class to add. + * @package + */ +Blockly.Toolbox.prototype.addStyle = function(style) { + Blockly.utils.dom.addClass(/** @type {!Element} */ (this.HtmlDiv), style); +}; + +/** + * Removes a style from the toolbox. Usually used to change the cursor. + * @param {string} style The name of the class to remove. + * @package + */ +Blockly.Toolbox.prototype.removeStyle = function(style) { + Blockly.utils.dom.removeClass(/** @type {!Element} */ (this.HtmlDiv), style); +}; + +/** + * Return the deletion rectangle for this toolbox. + * @return {?Blockly.utils.Rect} Rectangle in which to delete. + * @public + */ +Blockly.Toolbox.prototype.getClientRect = function() { + if (!this.HtmlDiv) { + return null; + } + + // BIG_NUM is offscreen padding so that blocks dragged beyond the toolbox + // area are still deleted. Must be smaller than Infinity, but larger than + // the largest screen size. + var BIG_NUM = 10000000; + var toolboxRect = this.HtmlDiv.getBoundingClientRect(); + + var top = toolboxRect.top; + var bottom = top + toolboxRect.height; + var left = toolboxRect.left; + var right = left + toolboxRect.width; + + // Assumes that the toolbox is on the SVG edge. If this changes + // (e.g. toolboxes in mutators) then this code will need to be more complex. + if (this.toolboxPosition == Blockly.utils.toolbox.Position.TOP) { + return new Blockly.utils.Rect(-BIG_NUM, bottom, -BIG_NUM, BIG_NUM); + } else if (this.toolboxPosition == Blockly.utils.toolbox.Position.BOTTOM) { + return new Blockly.utils.Rect(top, BIG_NUM, -BIG_NUM, BIG_NUM); + } else if (this.toolboxPosition == Blockly.utils.toolbox.Position.LEFT) { + return new Blockly.utils.Rect(-BIG_NUM, BIG_NUM, -BIG_NUM, right); + } else { // Right + return new Blockly.utils.Rect(-BIG_NUM, BIG_NUM, left, BIG_NUM); + } +}; + +/** + * Gets the toolbox item with the given id. + * @param {string} id The id of the toolbox item. + * @return {?Blockly.IToolboxItem} The toolbox item with the given id, or null if + * no item exists. + * @public + */ +Blockly.Toolbox.prototype.getToolboxItemById = function(id) { + return this.contentMap_[id]; +}; + +/** + * Gets the width of the toolbox. + * @return {number} The width of the toolbox. + * @public + */ +Blockly.Toolbox.prototype.getWidth = function() { + return this.width_; +}; + +/** + * Gets the height of the toolbox. + * @return {number} The width of the toolbox. + * @public + */ +Blockly.Toolbox.prototype.getHeight = function() { + return this.height_; +}; + +/** + * Gets the toolbox flyout. + * @return {?Blockly.IFlyout} The toolbox flyout. + * @public + */ +Blockly.Toolbox.prototype.getFlyout = function() { + return this.flyout_; +}; + +/** + * Gets the workspace for the toolbox. + * @return {!Blockly.WorkspaceSvg} The parent workspace for the toolbox. + * @public + */ +Blockly.Toolbox.prototype.getWorkspace = function() { + return this.workspace_; +}; + +/** + * Gets the selected item. + * @return {?Blockly.ISelectableToolboxItem} The selected item, or null if no item is + * currently selected. + * @public + */ +Blockly.Toolbox.prototype.getSelectedItem = function() { + return this.selectedItem_; +}; + +/** + * Gets the previously selected item. + * @return {?Blockly.ISelectableToolboxItem} The previously selected item, or null if no + * item was previously selected. + * @public + */ +Blockly.Toolbox.prototype.getPreviouslySelectedItem = function() { + return this.previouslySelectedItem_; +}; + +/** + * Gets whether or not the toolbox is horizontal. + * @return {boolean} True if the toolbox is horizontal, false if the toolbox is + * vertical. + * @public + */ +Blockly.Toolbox.prototype.isHorizontal = function() { + return this.horizontalLayout_; +}; + +/** + * Positions the toolbox based on whether it is a horizontal toolbox and whether + * the workspace is in rtl. + * @public + */ +Blockly.Toolbox.prototype.position = function() { + var toolboxDiv = this.HtmlDiv; + if (!toolboxDiv) { + // Not initialized yet. + return; + } + + if (this.horizontalLayout_) { + toolboxDiv.style.left = '0'; + toolboxDiv.style.height = 'auto'; + toolboxDiv.style.width = '100%'; + this.height_ = toolboxDiv.offsetHeight; + if (this.toolboxPosition == Blockly.TOOLBOX_AT_TOP) { // Top + toolboxDiv.style.top = '0'; + } else { // Bottom + toolboxDiv.style.bottom = '0'; + } + } else { + if (this.toolboxPosition == Blockly.TOOLBOX_AT_RIGHT) { // Right + toolboxDiv.style.right = '0'; + } else { // Left + toolboxDiv.style.left = '0'; + } + toolboxDiv.style.height = '100%'; + this.width_ = toolboxDiv.offsetWidth; + } + this.flyout_.position(); +}; +/** + * Handles resizing the toolbox when a toolbox item resizes. + * @package + */ +Blockly.Toolbox.prototype.handleToolboxItemResize = function() { + // Reposition the workspace so that (0,0) is in the correct position relative + // to the new absolute edge (ie toolbox edge). + var workspace = this.workspace_; + var rect = this.HtmlDiv.getBoundingClientRect(); + var newX = this.toolboxPosition == Blockly.TOOLBOX_AT_LEFT ? + workspace.scrollX + rect.width : 0; + var newY = this.toolboxPosition == Blockly.TOOLBOX_AT_TOP ? + workspace.scrollY + rect.height : 0; + workspace.translate(newX, newY); + + // Even though the div hasn't changed size, the visible workspace + // surface of the workspace has, so we may need to reposition everything. + Blockly.svgResize(workspace); +}; + +/** + * Unhighlights any previously selected item. + * @public + */ +Blockly.Toolbox.prototype.clearSelection = function() { + this.setSelectedItem(null); +}; + +/** + * Updates the category colours and background colour of selected categories. + * @package + */ +Blockly.Toolbox.prototype.refreshTheme = function() { + for (var i = 0; i < this.contents_.length; i++) { + var child = this.contents_[i]; + if (child.refreshTheme) { + child.refreshTheme(); + } + } +}; + +/** + * Updates the flyout's content without closing it. Should be used in response + * to a change in one of the dynamic categories, such as variables or + * procedures. + * @public + */ +Blockly.Toolbox.prototype.refreshSelection = function() { + if (this.selectedItem_ && this.selectedItem_.isSelectable() && + this.selectedItem_.getContents().length) { + this.flyout_.show(this.selectedItem_.getContents()); + } +}; + +/** + * Shows or hides the toolbox. + * @param {boolean} isVisible True if toolbox should be visible. + * @public + */ +Blockly.Toolbox.prototype.setVisible = function(isVisible) { + this.HtmlDiv.style.display = isVisible ? 'block' : 'none'; +}; + +/** + * Sets the given item as selected. + * No-op if the item is not selectable. + * @param {?Blockly.IToolboxItem} newItem The toolbox item to select. + * @public + */ +Blockly.Toolbox.prototype.setSelectedItem = function(newItem) { + var oldItem = this.selectedItem_; + + if ((!newItem && !oldItem) || (newItem && !newItem.isSelectable())) { + return; + } + newItem = /** @type {Blockly.ISelectableToolboxItem} */ (newItem); + + if (this.shouldDeselectItem_(oldItem, newItem) && oldItem != null) { + this.deselectItem_(oldItem); + } + + if (this.shouldSelectItem_(oldItem, newItem) && newItem != null) { + this.selectItem_(oldItem, newItem); + } + + this.updateFlyout_(oldItem, newItem); + this.fireSelectEvent_(oldItem, newItem); +}; + +/** + * Decides whether the old item should be deselected. + * @param {?Blockly.ISelectableToolboxItem} oldItem The previously selected + * toolbox item. + * @param {?Blockly.ISelectableToolboxItem} newItem The newly selected toolbox + * item. + * @return {boolean} True if the old item should be deselected, false otherwise. + * @protected + */ +Blockly.Toolbox.prototype.shouldDeselectItem_ = function(oldItem, newItem) { + // Deselect the old item unless the old item is collapsible and has been + // previously clicked on. + return oldItem != null && (!oldItem.isCollapsible() || oldItem != newItem); +}; + +/** + * Decides whether the new item should be selected. + * @param {?Blockly.ISelectableToolboxItem} oldItem The previously selected + * toolbox item. + * @param {?Blockly.ISelectableToolboxItem} newItem The newly selected toolbox + * item. + * @return {boolean} True if the new item should be selected, false otherwise. + * @protected + */ +Blockly.Toolbox.prototype.shouldSelectItem_ = function(oldItem, newItem) { + // Select the new item unless the old item equals the new item. + return newItem != null && newItem != oldItem; +}; + +/** + * Deselects the given item, marks it as unselected, and updates aria state. + * @param {!Blockly.ISelectableToolboxItem} item The previously selected + * toolbox item which should be deselected. + * @protected + */ +Blockly.Toolbox.prototype.deselectItem_ = function(item) { + this.selectedItem_ = null; + this.previouslySelectedItem_ = item; + item.setSelected(false); + Blockly.utils.aria.setState(/** @type {!Element} */ (this.contentsDiv_), + Blockly.utils.aria.State.ACTIVEDESCENDANT, ''); +}; + +/** + * Selects the given item, marks it selected, and updates aria state. + * @param {?Blockly.ISelectableToolboxItem} oldItem The previously selected + * toolbox item. + * @param {!Blockly.ISelectableToolboxItem} newItem The newly selected toolbox + * item. + * @protected + */ +Blockly.Toolbox.prototype.selectItem_ = function(oldItem, newItem) { + this.selectedItem_ = newItem; + this.previouslySelectedItem_ = oldItem; + newItem.setSelected(true); + Blockly.utils.aria.setState(/** @type {!Element} */ (this.contentsDiv_), + Blockly.utils.aria.State.ACTIVEDESCENDANT, newItem.getId()); +}; + +/** + * Selects the toolbox item by its position in the list of toolbox items. + * @param {number} position The position of the item to select. + * @public + */ +Blockly.Toolbox.prototype.selectItemByPosition = function(position) { + if (position > -1 && position < this.contents_.length) { + var item = this.contents_[position]; + if (item.isSelectable()) { + this.setSelectedItem(item); + } + } +}; + +/** + * Decides whether to hide or show the flyout depending on the selected item. + * @param {?Blockly.ISelectableToolboxItem} oldItem The previously selected toolbox item. + * @param {?Blockly.ISelectableToolboxItem} newItem The newly selected toolbox item. + * @protected + */ +Blockly.Toolbox.prototype.updateFlyout_ = function(oldItem, newItem) { + if ((oldItem == newItem && !newItem.isCollapsible()) || !newItem || + !newItem.getContents().length) { + this.flyout_.hide(); + } else { + this.flyout_.show(newItem.getContents()); + this.flyout_.scrollToStart(); + } +}; + +/** + * Emits an event when a new toolbox item is selected. + * @param {?Blockly.ISelectableToolboxItem} oldItem The previously selected + * toolbox item. + * @param {?Blockly.ISelectableToolboxItem} newItem The newly selected toolbox + * item. + * @private + */ +Blockly.Toolbox.prototype.fireSelectEvent_ = function(oldItem, newItem) { + var oldElement = oldItem && oldItem.getName(); + var newElement = newItem && newItem.getName(); + // In this case the toolbox closes, so the newElement should be null. + if (oldItem == newItem) { + newElement = null; + } + // TODO (#4187): Update Toolbox Events. + var event = new Blockly.Events.Ui(null, 'category', + oldElement, newElement); + event.workspaceId = this.workspace_.id; + Blockly.Events.fire(event); +}; + +/** + * Handles the given Blockly action on a toolbox. + * This is only triggered when keyboard accessibility mode is enabled. + * @param {!Blockly.Action} action The action to be handled. + * @return {boolean} True if the field handled the action, false otherwise. + * @package + */ +Blockly.Toolbox.prototype.onBlocklyAction = function(action) { + var selected = this.selectedItem_; + if (!selected) { + return false; + } + switch (action.name) { + case Blockly.navigation.actionNames.PREVIOUS: + return this.selectPrevious_(); + case Blockly.navigation.actionNames.OUT: + return this.selectParent_(); + case Blockly.navigation.actionNames.NEXT: + return this.selectNext_(); + case Blockly.navigation.actionNames.IN: + return this.selectChild_(); + default: + return false; + } +}; + +/** + * Closes the current item if it is expanded, or selects the parent. + * @return {boolean} True if a parent category was selected, false otherwise. + * @private + */ +Blockly.Toolbox.prototype.selectParent_ = function() { + if (!this.selectedItem_) { + return false; + } + + if (this.selectedItem_.isCollapsible() && this.selectedItem_.isExpanded()) { + var collapsibleItem = /** @type {!Blockly.ICollapsibleToolboxItem} */ (this.selectedItem_); + collapsibleItem.setExpanded(false); + return true; + } else if (this.selectedItem_.getParent() && + this.selectedItem_.getParent().isSelectable()) { + this.setSelectedItem(this.selectedItem_.getParent()); + return true; + } + return false; +}; + +/** + * Selects the first child of the currently selected item, or nothing if the + * toolbox item has no children. + * @return {boolean} True if a child category was selected, false otherwise. + * @private + */ +Blockly.Toolbox.prototype.selectChild_ = function() { + if (!this.selectedItem_ || !this.selectedItem_.isCollapsible()) { + return false; + } + var collapsibleItem = /** @type {Blockly.ICollapsibleToolboxItem} */ + (this.selectedItem_); + if (!collapsibleItem.isExpanded()) { + collapsibleItem.setExpanded(true); + return true; + } else { + this.selectNext_(); + return true; + } +}; + +/** + * Selects the next visible toolbox item. + * @return {boolean} True if a next category was selected, false otherwise. + * @private + */ +Blockly.Toolbox.prototype.selectNext_ = function() { + if (!this.selectedItem_) { + return false; + } + + var nextItemIdx = this.contents_.indexOf(this.selectedItem_) + 1; + if (nextItemIdx > -1 && nextItemIdx < this.contents_.length) { + var nextItem = this.contents_[nextItemIdx]; + while (nextItem && !nextItem.isSelectable()) { + nextItem = this.contents_[++nextItemIdx]; + } + if (nextItem && nextItem.isSelectable()) { + this.setSelectedItem(nextItem); + return true; + } + } + return false; +}; + +/** + * Selects the previous visible toolbox item. + * @return {boolean} True if a previous category was selected, false otherwise. + * @private + */ +Blockly.Toolbox.prototype.selectPrevious_ = function() { + if (!this.selectedItem_) { + return false; + } + + var prevItemIdx = this.contents_.indexOf(this.selectedItem_) - 1; + if (prevItemIdx > -1 && prevItemIdx < this.contents_.length) { + var prevItem = this.contents_[prevItemIdx]; + while (prevItem && !prevItem.isSelectable()) { + prevItem = this.contents_[--prevItemIdx]; + } + if (prevItem && prevItem.isSelectable()) { + this.setSelectedItem(prevItem); + return true; + } + } + return false; +}; + +/** + * Disposes of this toolbox. + * @public + */ +Blockly.Toolbox.prototype.dispose = function() { + this.flyout_.dispose(); + for (var i = 0; i < this.contents_.length; i++) { + var toolboxItem = this.contents_[i]; + toolboxItem.dispose(); + } + + for (var j = 0; j < this.boundEvents_.length; j++) { + Blockly.unbindEvent_(this.boundEvents_[j]); + } + this.boundEvents_ = []; + this.contents_ = []; + + this.workspace_.getThemeManager().unsubscribe(this.HtmlDiv); + Blockly.utils.dom.removeNode(this.HtmlDiv); +}; + +/** + * CSS for Toolbox. See css.js for use. + */ +Blockly.Css.register([ + /* eslint-disable indent */ + '.blocklyToolboxDelete {', + 'cursor: url("<<>>/handdelete.cur"), auto;', + '}', + + '.blocklyToolboxGrab {', + 'cursor: url("<<>>/handclosed.cur"), auto;', + 'cursor: grabbing;', + 'cursor: -webkit-grabbing;', + '}', + + /* Category tree in Toolbox. */ + '.blocklyToolboxDiv {', + 'background-color: #ddd;', + 'overflow-x: visible;', + 'overflow-y: auto;', + 'padding: 4px 0 4px 0;', + 'position: absolute;', + 'z-index: 70;', /* so blocks go under toolbox when dragging */ + '-webkit-tap-highlight-color: transparent;', /* issue #1345 */ + '}', + + '.blocklyToolboxContents {', + 'display: flex;', + 'flex-wrap: wrap;', + 'flex-direction: column;', + '}', + + '.blocklyToolboxContents:focus {', + 'outline: none;', + '}', + /* eslint-enable indent */ +]); + +Blockly.registry.register(Blockly.registry.Type.TOOLBOX, + Blockly.registry.DEFAULT, Blockly.Toolbox); diff --git a/core/toolbox/toolbox_item.js b/core/toolbox/toolbox_item.js new file mode 100644 index 00000000000..550b47aeac7 --- /dev/null +++ b/core/toolbox/toolbox_item.js @@ -0,0 +1,145 @@ +/** + * @license + * Copyright 2020 Google LLC + * SPDX-License-Identifier: Apache-2.0 + */ + +/** + * @fileoverview An item in the toolbox. + * @author aschmiedt@google.com (Abby Schmiedt) + */ +'use strict'; + +goog.provide('Blockly.ToolboxItem'); + +goog.requireType('Blockly.IToolbox'); +goog.requireType('Blockly.IToolboxItem'); +goog.requireType('Blockly.utils.toolbox'); +goog.requireType('Blockly.WorkspaceSvg'); + +/** + * Class for an item in the toolbox. + * @param {!Blockly.utils.toolbox.ToolboxItemInfo} toolboxItemDef The JSON defining the + * toolbox item. + * @param {!Blockly.IToolbox} toolbox The toolbox that holds the toolbox item. + * @param {Blockly.ICollapsibleToolboxItem=} opt_parent The parent toolbox item + * or null if the category does not have a parent. + * @constructor + * @implements {Blockly.IToolboxItem} + */ +Blockly.ToolboxItem = function(toolboxItemDef, toolbox, opt_parent) { + + /** + * The id for the category. + * @type {string} + * @protected + */ + this.id_ = toolboxItemDef['id'] || Blockly.utils.IdGenerator.getNextUniqueId(); + + /** + * The parent of the category. + * @type {?Blockly.ICollapsibleToolboxItem} + * @protected + */ + this.parent_ = opt_parent || null; + + /** + * The level that the category is nested at. + * @type {number} + * @protected + */ + this.level_ = this.parent_ ? this.parent_.getLevel() + 1 : 0; + + /** + * The JSON definition of the toolbox item. + * @type {!Blockly.utils.toolbox.ToolboxItemInfo} + * @protected + */ + this.toolboxItemDef_ = toolboxItemDef; + + /** + * The toolbox this category belongs to. + * @type {!Blockly.IToolbox} + * @protected + */ + this.parentToolbox_ = toolbox; + + /** + * The workspace of the parent toolbox. + * @type {!Blockly.WorkspaceSvg} + * @protected + */ + this.workspace_ = this.parentToolbox_.getWorkspace(); +}; + +/** + * Initializes the toolbox item. + * This includes creating the dom and updating the state of any items based + * on the info object. + * @public + */ +Blockly.ToolboxItem.prototype.init = function() { + // No-op by default. +}; + +/** + * Gets the div for the toolbox item. + * @return {?Element} The div for the toolbox item. + * @public + */ +Blockly.ToolboxItem.prototype.getDiv = function() { + return null; +}; + +/** + * Gets a unique identifier for this toolbox item. + * @return {string} The id for the toolbox item. + * @public + */ +Blockly.ToolboxItem.prototype.getId = function() { + return this.id_; +}; + +/** + * Gets the parent if the toolbox item is nested. + * @return {?Blockly.IToolboxItem} The parent toolbox item, or null if + * this toolbox item is not nested. + * @public + */ +Blockly.ToolboxItem.prototype.getParent = function() { + return null; +}; + +/** + * Gets the nested level of the category. + * @return {number} The nested level of the category. + * @package + */ +Blockly.ToolboxItem.prototype.getLevel = function() { + return this.level_; +}; + +/** + * Whether the toolbox item is selectable. + * @return {boolean} True if the toolbox item can be selected. + * @public + */ +Blockly.ToolboxItem.prototype.isSelectable = function() { + return false; +}; + +/** + * Whether the toolbox item is collapsible. + * @return {boolean} True if the toolbox item is collapsible. + * @public + */ +Blockly.ToolboxItem.prototype.isCollapsible = function() { + return false; +}; + +/** + * Dispose of this toolbox item. No-op by default. + * @public + */ +Blockly.ToolboxItem.prototype.dispose = function() { +}; diff --git a/core/tooltip.js b/core/tooltip.js index 966807dc7c3..70965c7aa02 100644 --- a/core/tooltip.js +++ b/core/tooltip.js @@ -23,6 +23,14 @@ goog.provide('Blockly.Tooltip'); goog.require('Blockly.utils.string'); +/** + * A type which can define a tooltip. + * Either a string, an object containing a tooltip property, or a function which + * returns either a string, or another arbitrarily nested function which + * eventually unwinds to a string. + * @typedef {string|{tooltip}|function(): (string|!Function)} + */ +Blockly.Tooltip.TipInfo; /** * Is a tooltip currently showing? @@ -111,6 +119,45 @@ Blockly.Tooltip.MARGINS = 5; */ Blockly.Tooltip.DIV = null; +/** + * Returns the tooltip text for the given element. + * @param {?Object} object The object to get the the tooltip text of. + * @returns {string} The tooltip text of the element. + */ +Blockly.Tooltip.getTooltipOfObject = function(object) { + var obj = Blockly.Tooltip.getTargetObject_(object); + if (obj) { + var tooltip = obj.tooltip; + while (typeof tooltip == 'function') { + tooltip = tooltip(); + } + if (typeof tooltip != 'string') { + throw Error('Tooltip function must return a string.'); + } + return tooltip; + } + return ''; +}; + +/** + * Returns the target object that the given object is targeting for its + * tooltip. Could be the object itself. + * @param {?Object} obj The object are trying to find the target tooltip + * object of. + * @returns {?{tooltip}} The target tooltip object. + * @private + */ +Blockly.Tooltip.getTargetObject_ = function(obj) { + while (obj && obj.tooltip) { + if ((typeof obj.tooltip == 'string') || + (typeof obj.tooltip == 'function')) { + return obj; + } + obj = obj.tooltip; + } + return null; +}; + /** * Create the tooltip div and inject it onto the page. */ @@ -167,11 +214,8 @@ Blockly.Tooltip.onMouseOver_ = function(e) { } // If the tooltip is an object, treat it as a pointer to the next object in // the chain to look at. Terminate when a string or function is found. - var element = e.currentTarget; - while ((typeof element.tooltip != 'string') && - (typeof element.tooltip != 'function')) { - element = element.tooltip; - } + var element = /** @type {Element} */ (Blockly.Tooltip.getTargetObject_( + e.currentTarget)); if (Blockly.Tooltip.element_ != element) { Blockly.Tooltip.hide(); Blockly.Tooltip.poisonedElement_ = null; @@ -296,11 +340,7 @@ Blockly.Tooltip.show_ = function() { } // Erase all existing text. Blockly.Tooltip.DIV.textContent = ''; - // Get the new text. - var tip = Blockly.Tooltip.element_.tooltip; - while (typeof tip == 'function') { - tip = tip(); - } + var tip = Blockly.Tooltip.getTooltipOfObject(Blockly.Tooltip.element_); tip = Blockly.utils.string.wrap(tip, Blockly.Tooltip.LIMIT); // Create new text, line by line. var lines = tip.split('\n'); diff --git a/core/trashcan.js b/core/trashcan.js index 107b9d602eb..b6a05d5e85a 100644 --- a/core/trashcan.js +++ b/core/trashcan.js @@ -15,9 +15,12 @@ goog.provide('Blockly.Trashcan'); goog.require('Blockly.Scrollbar'); goog.require('Blockly.utils.dom'); goog.require('Blockly.utils.Rect'); +goog.require('Blockly.utils.Svg'); +goog.require('Blockly.utils.toolbox'); goog.require('Blockly.Xml'); goog.requireType('Blockly.IDeleteArea'); +goog.requireType('Blockly.IFlyout'); /** @@ -43,7 +46,7 @@ Blockly.Trashcan = function(workspace) { /** * The trashcan flyout. - * @type {Blockly.Flyout} + * @type {Blockly.IFlyout} * @package */ this.flyout = null; @@ -65,16 +68,16 @@ Blockly.Trashcan = function(workspace) { // Create vertical or horizontal flyout. if (this.workspace_.horizontalLayout) { flyoutWorkspaceOptions.toolboxPosition = - this.workspace_.toolboxPosition == Blockly.TOOLBOX_AT_TOP ? - Blockly.TOOLBOX_AT_BOTTOM : Blockly.TOOLBOX_AT_TOP; + this.workspace_.toolboxPosition == Blockly.utils.toolbox.Position.TOP ? + Blockly.utils.toolbox.Position.BOTTOM : Blockly.utils.toolbox.Position.TOP; if (!Blockly.HorizontalFlyout) { throw Error('Missing require for Blockly.HorizontalFlyout'); } this.flyout = new Blockly.HorizontalFlyout(flyoutWorkspaceOptions); } else { flyoutWorkspaceOptions.toolboxPosition = - this.workspace_.toolboxPosition == Blockly.TOOLBOX_AT_RIGHT ? - Blockly.TOOLBOX_AT_LEFT : Blockly.TOOLBOX_AT_RIGHT; + this.workspace_.toolboxPosition == Blockly.utils.toolbox.Position.RIGHT ? + Blockly.utils.toolbox.Position.LEFT : Blockly.utils.toolbox.Position.RIGHT; if (!Blockly.VerticalFlyout) { throw Error('Missing require for Blockly.VerticalFlyout'); } @@ -148,7 +151,7 @@ Blockly.Trashcan.prototype.SPRITE_TOP_ = 32; Blockly.Trashcan.prototype.HAS_BLOCKS_LID_ANGLE_ = 0.1; /** - * The length of the open/close animation in milliseconds. + * The length of the lid open/close animation in milliseconds. * @const {number} * @private */ @@ -187,7 +190,7 @@ Blockly.Trashcan.MAX_LID_ANGLE_ = 45; * Current open/close state of the lid. * @type {boolean} */ -Blockly.Trashcan.prototype.isOpen = false; +Blockly.Trashcan.prototype.isLidOpen = false; /** * The minimum openness of the lid. Used to indicate if the trashcan contains @@ -258,21 +261,25 @@ Blockly.Trashcan.prototype.createDom = function() { clip-path="url(#blocklyTrashLidClipPath837493)"> */ - this.svgGroup_ = Blockly.utils.dom.createSvgElement('g', + this.svgGroup_ = Blockly.utils.dom.createSvgElement( + Blockly.utils.Svg.G, {'class': 'blocklyTrash'}, null); var clip; var rnd = String(Math.random()).substring(2); - clip = Blockly.utils.dom.createSvgElement('clipPath', + clip = Blockly.utils.dom.createSvgElement( + Blockly.utils.Svg.CLIPPATH, {'id': 'blocklyTrashBodyClipPath' + rnd}, this.svgGroup_); - Blockly.utils.dom.createSvgElement('rect', + Blockly.utils.dom.createSvgElement( + Blockly.utils.Svg.RECT, { 'width': this.WIDTH_, 'height': this.BODY_HEIGHT_, 'y': this.LID_HEIGHT_ }, clip); - var body = Blockly.utils.dom.createSvgElement('image', + var body = Blockly.utils.dom.createSvgElement( + Blockly.utils.Svg.IMAGE, { 'width': Blockly.SPRITE.width, 'x': -this.SPRITE_LEFT_, @@ -284,12 +291,15 @@ Blockly.Trashcan.prototype.createDom = function() { body.setAttributeNS(Blockly.utils.dom.XLINK_NS, 'xlink:href', this.workspace_.options.pathToMedia + Blockly.SPRITE.url); - clip = Blockly.utils.dom.createSvgElement('clipPath', + clip = Blockly.utils.dom.createSvgElement( + Blockly.utils.Svg.CLIPPATH, {'id': 'blocklyTrashLidClipPath' + rnd}, this.svgGroup_); - Blockly.utils.dom.createSvgElement('rect', + Blockly.utils.dom.createSvgElement( + Blockly.utils.Svg.RECT, {'width': this.WIDTH_, 'height': this.LID_HEIGHT_}, clip); - this.svgLid_ = Blockly.utils.dom.createSvgElement('image', + this.svgLid_ = Blockly.utils.dom.createSvgElement( + Blockly.utils.Svg.IMAGE, { 'width': Blockly.SPRITE.width, 'x': -this.SPRITE_LEFT_, @@ -320,13 +330,14 @@ Blockly.Trashcan.prototype.createDom = function() { */ Blockly.Trashcan.prototype.init = function(verticalSpacing) { if (this.workspace_.options.maxTrashcanContents > 0) { - Blockly.utils.dom.insertAfter(this.flyout.createDom('svg'), + Blockly.utils.dom.insertAfter( + this.flyout.createDom(Blockly.utils.Svg.SVG), this.workspace_.getParentSvg()); this.flyout.init(this.workspace_); } this.verticalSpacing_ = this.MARGIN_BOTTOM_ + verticalSpacing; - this.setOpen(false); + this.setLidOpen(false); return this.verticalSpacing_ + this.BODY_HEIGHT_ + this.LID_HEIGHT_; }; @@ -345,6 +356,15 @@ Blockly.Trashcan.prototype.dispose = function() { clearTimeout(this.lidTask_); }; +/** + * Whether the trashcan has contents. + * @return {boolean} True if the trashcan has contents. + * @private + */ +Blockly.Trashcan.prototype.hasContents_ = function() { + return !!this.contents_.length; +}; + /** * Returns true if the trashcan contents-flyout is currently open. * @return {boolean} True if the trashcan contents-flyout is currently open. @@ -353,19 +373,45 @@ Blockly.Trashcan.prototype.contentsIsOpen = function() { return this.flyout.isVisible(); }; +/** + * Opens the trashcan flyout. + */ +Blockly.Trashcan.prototype.openFlyout = function() { + if (this.contentsIsOpen()) { + return; + } + + var xml = []; + for (var i = 0, text; (text = this.contents_[i]); i++) { + xml[i] = Blockly.Xml.textToDom(text); + } + this.flyout.show(xml); + this.fireUiEvent_(true); +}; + +/** + * Closes the trashcan flyout. + */ +Blockly.Trashcan.prototype.closeFlyout = function() { + if (!this.contentsIsOpen()) { + return; + } + + this.flyout.hide(); + this.fireUiEvent_(false); +}; + /** * Empties the trashcan's contents. If the contents-flyout is currently open * it will be closed. */ Blockly.Trashcan.prototype.emptyContents = function() { - if (!this.contents_.length) { + if (!this.hasContents_()) { return; } this.contents_.length = 0; this.setMinOpenness_(0); - if (this.contentsIsOpen()) { - this.flyout.hide(); - } + this.closeFlyout(); }; /** @@ -427,12 +473,12 @@ Blockly.Trashcan.prototype.getClientRect = function() { * @param {boolean} state True if open. * @package */ -Blockly.Trashcan.prototype.setOpen = function(state) { - if (this.isOpen == state) { +Blockly.Trashcan.prototype.setLidOpen = function(state) { + if (this.isLidOpen == state) { return; } clearTimeout(this.lidTask_); - this.isOpen = state; + this.isLidOpen = state; this.animateLid_(); }; @@ -444,7 +490,7 @@ Blockly.Trashcan.prototype.animateLid_ = function() { var frames = Blockly.Trashcan.ANIMATION_FRAMES_; var delta = 1 / (frames + 1); - this.lidOpen_ += this.isOpen ? delta : -delta; + this.lidOpen_ += this.isLidOpen ? delta : -delta; this.lidOpen_ = Math.min(Math.max(this.lidOpen_, this.minOpenness_), 1); this.setLidAngle_(this.lidOpen_ * Blockly.Trashcan.MAX_LID_ANGLE_); @@ -484,7 +530,7 @@ Blockly.Trashcan.prototype.setLidAngle_ = function(lidAngle) { */ Blockly.Trashcan.prototype.setMinOpenness_ = function(newMin) { this.minOpenness_ = newMin; - if (!this.isOpen) { + if (!this.isLidOpen) { this.setLidAngle_(newMin * Blockly.Trashcan.MAX_LID_ANGLE_); } }; @@ -493,23 +539,29 @@ Blockly.Trashcan.prototype.setMinOpenness_ = function(newMin) { * Flip the lid shut. * Called externally after a drag. */ -Blockly.Trashcan.prototype.close = function() { - this.setOpen(false); +Blockly.Trashcan.prototype.closeLid = function() { + this.setLidOpen(false); }; /** * Inspect the contents of the trash. */ Blockly.Trashcan.prototype.click = function() { - if (!this.contents_.length) { + if (!this.hasContents_()) { return; } + this.openFlyout(); +}; - var xml = []; - for (var i = 0, text; (text = this.contents_[i]); i++) { - xml[i] = Blockly.Xml.textToDom(text); - } - this.flyout.show(xml); +/** + * Fires a ui event for trashcan flyout open or close. + * @param {boolean} trashcanOpen Whether the flyout is opening. + * @private + */ +Blockly.Trashcan.prototype.fireUiEvent_ = function(trashcanOpen) { + var uiEvent = new Blockly.Events.Ui(null, 'trashcanOpen', null, trashcanOpen); + uiEvent.workspaceId = this.workspace_.id; + Blockly.Events.fire(uiEvent); }; /** @@ -517,8 +569,8 @@ Blockly.Trashcan.prototype.click = function() { * @private */ Blockly.Trashcan.prototype.mouseOver_ = function() { - if (this.contents_.length) { - this.setOpen(true); + if (this.hasContents_()) { + this.setLidOpen(true); } }; @@ -530,7 +582,7 @@ Blockly.Trashcan.prototype.mouseOver_ = function() { Blockly.Trashcan.prototype.mouseOut_ = function() { // No need to do a .hasBlocks check here because if it doesn't the trashcan // won't be open in the first place, and setOpen won't run. - this.setOpen(false); + this.setLidOpen(false); }; /** @@ -542,7 +594,8 @@ Blockly.Trashcan.prototype.onDelete_ = function(event) { if (this.workspace_.options.maxTrashcanContents <= 0) { return; } - if (event.type == Blockly.Events.BLOCK_DELETE && + // Must check that the tagName exists since oldXml can be a DocumentFragment. + if (event.type == Blockly.Events.BLOCK_DELETE && event.oldXml.tagName && event.oldXml.tagName.toLowerCase() != 'shadow') { var cleanedXML = this.cleanBlockXML_(event.oldXml); if (this.contents_.indexOf(cleanedXML) != -1) { diff --git a/core/ui_events.js b/core/ui_events.js index 693b7443ddb..7991f6b86b1 100644 --- a/core/ui_events.js +++ b/core/ui_events.js @@ -14,6 +14,7 @@ goog.provide('Blockly.Events.Ui'); goog.require('Blockly.Events'); goog.require('Blockly.Events.Abstract'); +goog.require('Blockly.registry'); goog.require('Blockly.utils.object'); @@ -23,20 +24,25 @@ goog.require('Blockly.utils.object'); * editing to work (e.g. scrolling the workspace, zooming, opening toolbox * categories). * UI events do not undo or redo. - * @param {Blockly.Block} block The affected block. - * @param {string} element One of 'selected', 'comment', 'mutatorOpen', etc. - * @param {*} oldValue Previous value of element. - * @param {*} newValue New value of element. + * @param {?Blockly.Block=} opt_block The affected block. Null for UI events + * that do not have an associated block. Undefined for a blank event. + * @param {string=} opt_element One of 'selected', 'comment', 'mutatorOpen', + * etc. + * @param {*=} opt_oldValue Previous value of element. + * @param {*=} opt_newValue New value of element. * @extends {Blockly.Events.Abstract} * @constructor */ -Blockly.Events.Ui = function(block, element, oldValue, newValue) { +Blockly.Events.Ui = function(opt_block, opt_element, opt_oldValue, + opt_newValue) { Blockly.Events.Ui.superClass_.constructor.call(this); - this.blockId = block ? block.id : null; - this.workspaceId = block ? block.workspace.id : undefined; - this.element = element; - this.oldValue = oldValue; - this.newValue = newValue; + this.isBlank = typeof opt_block == 'undefined'; + + this.blockId = opt_block ? opt_block.id : null; + this.workspaceId = opt_block ? opt_block.workspace.id : undefined; + this.element = typeof opt_element == 'undefined' ? '' : opt_element; + this.oldValue = typeof opt_oldValue == 'undefined' ? '' : opt_oldValue; + this.newValue = typeof opt_newValue == 'undefined' ? '' : opt_newValue; // UI events do not undo or redo. this.recordUndo = false; }; @@ -74,3 +80,6 @@ Blockly.Events.Ui.prototype.fromJson = function(json) { this.newValue = json['newValue']; this.blockId = json['blockId']; }; + +Blockly.registry.register(Blockly.registry.Type.EVENT, Blockly.Events.UI, + Blockly.Events.Ui); diff --git a/core/utils.js b/core/utils.js index 4bbffdca5e3..25d4a58ab03 100644 --- a/core/utils.js +++ b/core/utils.js @@ -49,7 +49,8 @@ Blockly.utils.isTargetInput = function(e) { e.target.type == 'number' || e.target.type == 'email' || e.target.type == 'password' || e.target.type == 'search' || e.target.type == 'tel' || e.target.type == 'url' || - e.target.isContentEditable; + e.target.isContentEditable || + (e.target.dataset && e.target.dataset.isTextInput == 'true'); }; /** @@ -250,7 +251,7 @@ Blockly.utils.checkMessageReferences = function(message) { for (var i = 0; i < m.length; i++) { var msgKey = m[i].toUpperCase(); if (msgTable[msgKey.slice(6, -1)] == undefined) { - console.log('WARNING: No message string for ' + m[i] + ' in ' + message); + console.warn('No message string for ' + m[i] + ' in ' + message); validSoFar = false; // Continue to report other errors. } } diff --git a/core/utils/deprecation.js b/core/utils/deprecation.js new file mode 100644 index 00000000000..ca9c19ab466 --- /dev/null +++ b/core/utils/deprecation.js @@ -0,0 +1,34 @@ +/** + * @license + * Copyright 2020 Google LLC + * SPDX-License-Identifier: Apache-2.0 + */ + +/** + * @fileoverview Helper function for warning developers about deprecations. + * This method is not specific to Blockly. + * @author fenichel@google.com (Rachel Fenichel); + */ +'use strict'; + +goog.provide('Blockly.utils.deprecation'); + +/** + * Warn developers that a function is deprecated. + * @param {string} functionName The name of the function. + * @param {string} deprecationDate The date when the function was deprecated. + * Prefer 'month yyyy' or 'quarter yyyy' format. + * @param {string} deletionDate The date when the function will be deleted, in + * the same format as the deprecation date. + * @param {string=} opt_use The name of a function to use instead, if any. + * @package + */ +Blockly.utils.deprecation.warn = function( + functionName, deprecationDate, deletionDate, opt_use) { + var msg = functionName + ' was deprecated on ' + deprecationDate + + ' and will be deleted on ' + deletionDate + '.'; + if (opt_use) { + msg += '\nUse ' + opt_use + ' instead.'; + } + console.warn(msg); +}; diff --git a/core/utils/dom.js b/core/utils/dom.js index 202889c05dd..3762297fae9 100644 --- a/core/utils/dom.js +++ b/core/utils/dom.js @@ -18,6 +18,7 @@ */ goog.provide('Blockly.utils.dom'); +goog.require('Blockly.utils.Svg'); goog.require('Blockly.utils.userAgent'); @@ -74,14 +75,17 @@ Blockly.utils.dom.canvasContext_ = null; /** * Helper method for creating SVG elements. - * @param {string} name Element's tag name. + * @param {string|Blockly.utils.Svg} name Element's tag name. * @param {!Object} attrs Dictionary of attribute names and values. * @param {Element=} opt_parent Optional parent on which to append the element. - * @return {!SVGElement} Newly created SVG element. + * @return {T} Newly created SVG element. The return type is {!SVGElement} if + * name is a string or a more specific type if it a member of + * Blockly.utils.Svg + * @template T */ Blockly.utils.dom.createSvgElement = function(name, attrs, opt_parent) { - var e = /** @type {!SVGElement} */ - (document.createElementNS(Blockly.utils.dom.SVG_NS, name)); + var e = /** @type {T} */ + (document.createElementNS(Blockly.utils.dom.SVG_NS, String(name))); for (var key in attrs) { e.setAttribute(key, attrs[key]); } @@ -116,6 +120,20 @@ Blockly.utils.dom.addClass = function(element, className) { return true; }; +/** + * Removes multiple calsses from an element. + * @param {!Element} element DOM element to remove classes from. + * @param {string} classNames A string of one or multiple class names for an + * element. + */ +Blockly.utils.dom.removeClasses = function(element, classNames) { + var classList = classNames.split(' '); + for (var i = 0; i < classList.length; i++) { + var cssName = classList[i]; + Blockly.utils.dom.removeClass(element, cssName); + } +}; + /** * Remove a CSS class from a element. * Similar to Closure's goog.dom.classes.remove, except it handles SVG elements. diff --git a/core/utils/svg.js b/core/utils/svg.js new file mode 100644 index 00000000000..dde7f7b3cba --- /dev/null +++ b/core/utils/svg.js @@ -0,0 +1,181 @@ +/** + * @license + * Copyright 2020 Google LLC + * SPDX-License-Identifier: Apache-2.0 + */ + +/** + * @fileoverview Defines the Blockly.utils.Svg class. Its constants enumerate + * all SVG tag names used by Blockly. + * @author samelh@google.com (Sam El-Husseini) + */ +'use strict'; + +/** + * @name Blockly.utils.Svg + * @namespace + */ +goog.provide('Blockly.utils.Svg'); + + +/** + * A name with the type of the SVG element stored in the generic. + * @param {string} tagName The SVG element tag name. + * @constructor + * @template T + * @private + */ +Blockly.utils.Svg = function(tagName) { + /** + * @type {string} + * @private + */ + this.tagName_ = tagName; +}; + +/** + * Returns the SVG element tag name. + * @return {string} The name. + * @override + */ +Blockly.utils.Svg.prototype.toString = function() { + return this.tagName_; +}; + +/** @type {!Blockly.utils.Svg} + * @package + */ +Blockly.utils.Svg.ANIMATE = + new Blockly.utils.Svg('animate'); + +/** @type {!Blockly.utils.Svg} +* @package + */ +Blockly.utils.Svg.CIRCLE = + new Blockly.utils.Svg('circle'); + +/** @type {!Blockly.utils.Svg} + * @package + */ +Blockly.utils.Svg.CLIPPATH = + new Blockly.utils.Svg('clipPath'); + +/** @type {!Blockly.utils.Svg} + * @package + */ +Blockly.utils.Svg.DEFS = + new Blockly.utils.Svg('defs'); + +/** @type {!Blockly.utils.Svg} + * @package + */ +Blockly.utils.Svg.FECOMPOSITE = + new Blockly.utils.Svg('feComposite'); + +/** @type {!Blockly.utils.Svg} + * @package + */ +Blockly.utils.Svg.FECOMPONENTTRANSFER = + new Blockly.utils.Svg('feComponentTransfer'); + +/** @type {!Blockly.utils.Svg} + * @package + */ +Blockly.utils.Svg.FEFLOOD = + new Blockly.utils.Svg('feFlood'); + +/** @type {!Blockly.utils.Svg} + * @package + */ +Blockly.utils.Svg.FEFUNCA = + new Blockly.utils.Svg('feFuncA'); + +/** @type {!Blockly.utils.Svg} + * @package + */ +Blockly.utils.Svg.FEGAUSSIANBLUR = + new Blockly.utils.Svg('feGaussianBlur'); + +/** @type {!Blockly.utils.Svg} + * @package + */ +Blockly.utils.Svg.FEPOINTLIGHT = + new Blockly.utils.Svg('fePointLight'); + +/** @type {!Blockly.utils.Svg} + * @package + */ +Blockly.utils.Svg.FESPECULARLIGHTING = + new Blockly.utils.Svg('feSpecularLighting'); + +/** @type {!Blockly.utils.Svg} + * @package + */ +Blockly.utils.Svg.FILTER = + new Blockly.utils.Svg('filter'); + +/** @type {!Blockly.utils.Svg} + * @package + */ +Blockly.utils.Svg.FOREIGNOBJECT = + new Blockly.utils.Svg('foreignObject'); + +/** @type {!Blockly.utils.Svg} + * @package + */ +Blockly.utils.Svg.G = + new Blockly.utils.Svg('g'); + +/** @type {!Blockly.utils.Svg} + * @package + */ +Blockly.utils.Svg.IMAGE = + new Blockly.utils.Svg('image'); + +/** @type {!Blockly.utils.Svg} + * @package + */ +Blockly.utils.Svg.LINE = + new Blockly.utils.Svg('line'); + +/** @type {!Blockly.utils.Svg} + * @package + */ +Blockly.utils.Svg.PATH = + new Blockly.utils.Svg('path'); + +/** @type {!Blockly.utils.Svg} + * @package + */ +Blockly.utils.Svg.PATTERN = + new Blockly.utils.Svg('pattern'); + +/** @type {!Blockly.utils.Svg} + * @package + */ +Blockly.utils.Svg.POLYGON = + new Blockly.utils.Svg('polygon'); + +/** @type {!Blockly.utils.Svg} + * @package + */ +Blockly.utils.Svg.RECT = + new Blockly.utils.Svg('rect'); + +/** @type {!Blockly.utils.Svg} + * @package + */ +Blockly.utils.Svg.SVG = + new Blockly.utils.Svg('svg'); + +/** @type {!Blockly.utils.Svg} + * @package + */ +Blockly.utils.Svg.TEXT = + new Blockly.utils.Svg('text'); + +/** @type {!Blockly.utils.Svg} + * @package + */ +Blockly.utils.Svg.TSPAN = + new Blockly.utils.Svg('tspan'); diff --git a/core/utils/toolbox.js b/core/utils/toolbox.js index a7b6a62b828..27b76b26211 100644 --- a/core/utils/toolbox.js +++ b/core/utils/toolbox.js @@ -13,6 +13,9 @@ goog.provide('Blockly.utils.toolbox'); +goog.requireType('Blockly.ToolboxCategory'); +goog.requireType('Blockly.ToolboxSeparator'); + /** * The information needed to create a block in the toolbox. * @typedef {{ @@ -23,16 +26,18 @@ goog.provide('Blockly.utils.toolbox'); * disabled: (?string|?boolean) * }} */ -Blockly.utils.toolbox.Block; +Blockly.utils.toolbox.BlockInfo; /** * The information needed to create a separator in the toolbox. * @typedef {{ * kind:string, - * gap:?number + * id:?string, + * gap:?number, + * cssconfig:?Blockly.ToolboxSeparator.CssConfig * }} */ -Blockly.utils.toolbox.Separator; +Blockly.utils.toolbox.SeparatorInfo; /** * The information needed to create a button in the toolbox. @@ -42,83 +47,280 @@ Blockly.utils.toolbox.Separator; * callbackkey:string * }} */ -Blockly.utils.toolbox.Button; +Blockly.utils.toolbox.ButtonInfo; /** * The information needed to create a label in the toolbox. * @typedef {{ * kind:string, + * id:?string, * text:string * }} */ -Blockly.utils.toolbox.Label; +Blockly.utils.toolbox.LabelInfo; + +/** + * The information needed to create either a button or a label in the flyout. + * @typedef {Blockly.utils.toolbox.ButtonInfo| + * Blockly.utils.toolbox.LabelInfo} + */ +Blockly.utils.toolbox.ButtonOrLabelInfo; /** * The information needed to create a category in the toolbox. * @typedef {{ * kind:string, * name:string, + * id:?string, * categorystyle:?string, * colour:?string, - * contents:Array. + * cssconfig:?Blockly.ToolboxCategory.CssConfig, + * contents:!Array, + * hidden:?string * }} */ -Blockly.utils.toolbox.Category; +Blockly.utils.toolbox.StaticCategoryInfo; + +/** + * The information needed to create a custom category. + * @typedef {{ + * kind:string, + * custom:string, + * id:?string, + * categorystyle:?string, + * colour:?string, + * cssconfig:?Blockly.ToolboxCategory.CssConfig, + * hidden:?string + * }} + */ +Blockly.utils.toolbox.DynamicCategoryInfo; + +/** + * The information needed to create either a dynamic or static category. + * @typedef {Blockly.utils.toolbox.StaticCategoryInfo| + * Blockly.utils.toolbox.DynamicCategoryInfo} + */ +Blockly.utils.toolbox.CategoryInfo; /** * Any information that can be used to create an item in the toolbox. - * @typedef {Blockly.utils.toolbox.Block| - * Blockly.utils.toolbox.Separator| - * Blockly.utils.toolbox.Button| - * Blockly.utils.toolbox.Label| - * Blockly.utils.toolbox.Category} + * @typedef {Blockly.utils.toolbox.FlyoutItemInfo| + * Blockly.utils.toolbox.StaticCategoryInfo} + */ +Blockly.utils.toolbox.ToolboxItemInfo; + +/** + * All the different types that can be displayed in a flyout. + * @typedef {Blockly.utils.toolbox.BlockInfo| + * Blockly.utils.toolbox.SeparatorInfo| + * Blockly.utils.toolbox.ButtonInfo| + * Blockly.utils.toolbox.LabelInfo| + * Blockly.utils.toolbox.DynamicCategoryInfo} + */ +Blockly.utils.toolbox.FlyoutItemInfo; + +/** + * The JSON definition of a toolbox. + * @typedef {{ + * contents:!Array + * }} */ -Blockly.utils.toolbox.Toolbox; +Blockly.utils.toolbox.ToolboxInfo; + +/** + * An array holding flyout items. + * @typedef { + * Array + * } + */ +Blockly.utils.toolbox.FlyoutItemInfoArray; /** * All of the different types that can create a toolbox. * @typedef {Node| - * NodeList| - * Array.| - * Array.} + * Blockly.utils.toolbox.ToolboxInfo| + * string} */ Blockly.utils.toolbox.ToolboxDefinition; +/** + * All of the different types that can be used to show items in a flyout. + * @typedef {Blockly.utils.toolbox.FlyoutItemInfoArray| + * NodeList| + * Blockly.utils.toolbox.ToolboxInfo| + * Array} + */ +Blockly.utils.toolbox.FlyoutDefinition; + +/** + * The name used to identify a toolbox that has category like items. + * This only needs to be used if a toolbox wants to be treated like a category + * toolbox but does not actually contain any toolbox items with the kind + * 'category'. + * @const {string} + */ +Blockly.utils.toolbox.CATEGORY_TOOLBOX_KIND = 'categoryToolbox'; + +/** + * The name used to identify a toolbox that has no categories and is displayed + * as a simple flyout displaying blocks, buttons, or labels. + * @const {string} + */ +Blockly.utils.toolbox.FLYOUT_TOOLBOX_KIND = 'flyoutToolbox'; + +/** + * Position of the the toolbox relative to the flyout. + * @enum {number} + */ +Blockly.utils.toolbox.Position = { + TOP: Blockly.TOOLBOX_AT_TOP, + BOTTOM: Blockly.TOOLBOX_AT_BOTTOM, + LEFT: Blockly.TOOLBOX_AT_LEFT, + RIGHT: Blockly.TOOLBOX_AT_RIGHT +}; /** - * Parse the provided toolbox definition into a consistent format. - * @param {Blockly.utils.toolbox.ToolboxDefinition} toolboxDef The definition of the - * toolbox in one of its many forms. - * @return {Array.} Array of JSON holding - * information on toolbox contents. + * Converts the toolbox definition into toolbox JSON. + * @param {?Blockly.utils.toolbox.ToolboxDefinition} toolboxDef The definition + * of the toolbox in one of its many forms. + * @return {?Blockly.utils.toolbox.ToolboxInfo} Object holding information + * for creating a toolbox. * @package */ -Blockly.utils.toolbox.convertToolboxToJSON = function(toolboxDef) { +Blockly.utils.toolbox.convertToolboxDefToJson = function(toolboxDef) { if (!toolboxDef) { return null; } - // If it is an array of JSON, then it is already in the correct format. - if (Array.isArray(toolboxDef) && toolboxDef.length && !(toolboxDef[0].nodeType)) { - if (Blockly.utils.toolbox.hasCategories(toolboxDef)) { - // TODO: Remove after #3985 has been looked into. - console.warn('Due to some performance issues, defining a toolbox using' + - 'JSON is not ready yet. Please define your toolbox using xml.'); + + if (toolboxDef instanceof Element || typeof toolboxDef == 'string') { + toolboxDef = Blockly.utils.toolbox.parseToolboxTree(toolboxDef); + toolboxDef = Blockly.utils.toolbox.convertToToolboxJson_(toolboxDef); + } + + var toolboxJson = /** @type {Blockly.utils.toolbox.ToolboxInfo} */ (toolboxDef); + Blockly.utils.toolbox.validateToolbox_(toolboxJson); + return toolboxJson; +}; + +/** + * Validates the toolbox JSON fields have been set correctly. + * @param {Blockly.utils.toolbox.ToolboxInfo} toolboxJson Object holding + * information for creating a toolbox. + * @throws {Error} if the toolbox is not the correct format. + * @private + */ +Blockly.utils.toolbox.validateToolbox_ = function(toolboxJson) { + var toolboxKind = toolboxJson['kind']; + var toolboxContents = toolboxJson['contents']; + + if (toolboxKind) { + if (toolboxKind != Blockly.utils.toolbox.FLYOUT_TOOLBOX_KIND && + toolboxKind != Blockly.utils.toolbox.CATEGORY_TOOLBOX_KIND) { + throw Error('Invalid toolbox kind ' + toolboxKind + '.' + + ' Please supply either ' + + Blockly.utils.toolbox.FLYOUT_TOOLBOX_KIND + ' or ' + + Blockly.utils.toolbox.CATEGORY_TOOLBOX_KIND); } - return /** @type {!Array.} */ (toolboxDef); } + if (!toolboxContents) { + throw Error('Toolbox must have a contents attribute.'); + } +}; + +/** + * Converts the flyout definition into a list of flyout items. + * @param {?Blockly.utils.toolbox.FlyoutDefinition} flyoutDef The definition of + * the flyout in one of its many forms. + * @return {!Blockly.utils.toolbox.FlyoutItemInfoArray} A list of flyout items. + * @package + */ +Blockly.utils.toolbox.convertFlyoutDefToJsonArray = function(flyoutDef) { + if (!flyoutDef) { + return []; + } + + if (flyoutDef['contents']) { + return flyoutDef['contents']; + } + + // If it is already in the correct format return the flyoutDef. + if (Array.isArray(flyoutDef) && flyoutDef.length > 0 && + !flyoutDef[0].nodeType) { + return flyoutDef; + } + + return Blockly.utils.toolbox.xmlToJsonArray_( + /** @type {!Array|!NodeList} */ (flyoutDef)); +}; + +/** + * Whether or not the toolbox definition has categories. + * @param {?Blockly.utils.toolbox.ToolboxInfo} toolboxJson Object holding + * information for creating a toolbox. + * @return {boolean} True if the toolbox has categories. + * @package + */ +Blockly.utils.toolbox.hasCategories = function(toolboxJson) { + if (!toolboxJson) { + return false; + } + + var toolboxKind = toolboxJson['kind']; + if (toolboxKind) { + return toolboxKind == Blockly.utils.toolbox.CATEGORY_TOOLBOX_KIND; + } + + var categories = toolboxJson['contents'].filter(function(item) { + return item['kind'].toUpperCase() == 'CATEGORY'; + }); + return !!categories.length; +}; + +/** + * Whether or not the category is collapsible. + * @param {!Blockly.utils.toolbox.CategoryInfo} categoryInfo Object holing + * information for creating a category. + * @return {boolean} True if the category has subcategories. + * @package + */ +Blockly.utils.toolbox.isCategoryCollapsible = function(categoryInfo) { + if (!categoryInfo || !categoryInfo['contents']) { + return false; + } + + var categories = categoryInfo['contents'].filter(function(item) { + return item['kind'].toUpperCase() == 'CATEGORY'; + }); + return !!categories.length; +}; - return Blockly.utils.toolbox.toolboxXmlToJson_(toolboxDef); +/** + * Parses the provided toolbox definition into a consistent format. + * @param {Node} toolboxDef The definition of the toolbox in one of its many forms. + * @return {!Blockly.utils.toolbox.ToolboxInfo} Object holding information + * for creating a toolbox. + * @private + */ +Blockly.utils.toolbox.convertToToolboxJson_ = function(toolboxDef) { + var contents = Blockly.utils.toolbox.xmlToJsonArray_( + /** @type {!Node|!Array} */ (toolboxDef)); + var toolboxJson = {'contents': contents}; + if (toolboxDef instanceof Node) { + Blockly.utils.toolbox.addAttributes_(toolboxDef, toolboxJson); + } + return toolboxJson; }; /** - * Convert the xml for a toolbox to JSON. - * @param {!NodeList|!Node|!Array.} toolboxDef The + * Converts the xml for a toolbox to JSON. + * @param {!Node|!Array|!NodeList} toolboxDef The * definition of the toolbox in one of its many forms. - * @return {!Array.} A list of objects in the - * toolbox. + * @return {!Blockly.utils.toolbox.FlyoutItemInfoArray| + * !Array} A list of objects in + * the toolbox. * @private */ -Blockly.utils.toolbox.toolboxXmlToJson_ = function(toolboxDef) { +Blockly.utils.toolbox.xmlToJsonArray_ = function(toolboxDef) { var arr = []; // If it is a node it will have children. var childNodes = toolboxDef.childNodes; @@ -139,31 +341,61 @@ Blockly.utils.toolbox.toolboxXmlToJson_ = function(toolboxDef) { obj['blockxml'] = child; } else if (tagName == 'CATEGORY') { // Get the contents of a category - obj['contents'] = Blockly.utils.toolbox.toolboxXmlToJson_(child); + obj['contents'] = Blockly.utils.toolbox.xmlToJsonArray_(child); } // Add xml attributes to object - for (var j = 0; j < child.attributes.length; j++) { - var attr = child.attributes[j]; - obj[attr.nodeName] = attr.value; - } + Blockly.utils.toolbox.addAttributes_(child, obj); arr.push(obj); } return arr; }; /** - * Whether or not the toolbox definition has categories or not. - * @param {Node|Array.} toolboxDef The definition - * of the toolbox. Either in xml or JSON. - * @return {boolean} True if the toolbox has categories. - * @package + * Adds the attributes on the node to the given object. + * @param {!Node} node The node to copy the attributes from. + * @param {!Object} obj The object to copy the attributes to. + * @private + */ +Blockly.utils.toolbox.addAttributes_ = function(node, obj) { + for (var j = 0; j < node.attributes.length; j++) { + var attr = node.attributes[j]; + if (attr.nodeName.indexOf('css-') > -1) { + obj['cssconfig'] = obj['cssconfig'] || {}; + obj['cssconfig'][attr.nodeName.replace('css-', '')] = attr.value; + } else { + obj[attr.nodeName] = attr.value; + } + } +}; + +/** + * Parse the provided toolbox tree into a consistent DOM format. + * @param {?Node|?string} toolboxDef DOM tree of blocks, or text representation + * of same. + * @return {?Node} DOM tree of blocks, or null. */ -Blockly.utils.toolbox.hasCategories = function(toolboxDef) { - if (Array.isArray(toolboxDef)) { - // Search for categories - return !!(toolboxDef.length && toolboxDef[0]['kind'].toUpperCase() == 'CATEGORY'); +Blockly.utils.toolbox.parseToolboxTree = function(toolboxDef) { + if (toolboxDef) { + if (typeof toolboxDef != 'string') { + if (Blockly.utils.userAgent.IE && toolboxDef.outerHTML) { + // In this case the tree will not have been properly built by the + // browser. The HTML will be contained in the element, but it will + // not have the proper DOM structure since the browser doesn't support + // XSLTProcessor (XML -> HTML). + toolboxDef = toolboxDef.outerHTML; + } else if (!(toolboxDef instanceof Element)) { + toolboxDef = null; + } + } + if (typeof toolboxDef == 'string') { + toolboxDef = Blockly.Xml.textToDom(toolboxDef); + if (toolboxDef.nodeName.toLowerCase() != 'xml') { + throw TypeError('Toolbox should be an document.'); + } + } } else { - return !!(toolboxDef && toolboxDef.getElementsByTagName('category').length); + toolboxDef = null; } + return toolboxDef; }; diff --git a/core/variable_events.js b/core/variable_events.js index 78c6d65c4ac..c908ff26aeb 100644 --- a/core/variable_events.js +++ b/core/variable_events.js @@ -17,25 +17,32 @@ goog.provide('Blockly.Events.VarRename'); goog.require('Blockly.Events'); goog.require('Blockly.Events.Abstract'); +goog.require('Blockly.registry'); goog.require('Blockly.utils.object'); /** * Abstract class for a variable event. - * @param {Blockly.VariableModel} variable The variable this event corresponds - * to. + * @param {!Blockly.VariableModel=} opt_variable The variable this event + * corresponds to. Undefined for a blank event. * @extends {Blockly.Events.Abstract} * @constructor */ -Blockly.Events.VarBase = function(variable) { +Blockly.Events.VarBase = function(opt_variable) { Blockly.Events.VarBase.superClass_.constructor.call(this); + this.isBlank = typeof opt_variable == 'undefined'; /** * The variable id for the variable this event pertains to. * @type {string} */ - this.varId = variable.getId(); - this.workspaceId = variable.workspace.id; + this.varId = this.isBlank ? '' : opt_variable.getId(); + + /** + * The workspace identifier for this event. + * @type {string} + */ + this.workspaceId = this.isBlank ? '' : opt_variable.workspace.id; }; Blockly.utils.object.inherits(Blockly.Events.VarBase, Blockly.Events.Abstract); @@ -60,18 +67,19 @@ Blockly.Events.VarBase.prototype.fromJson = function(json) { /** * Class for a variable creation event. - * @param {Blockly.VariableModel} variable The created variable. - * Null for a blank event. + * @param {!Blockly.VariableModel=} opt_variable The created variable. Undefined + * for a blank event. * @extends {Blockly.Events.VarBase} * @constructor */ -Blockly.Events.VarCreate = function(variable) { - if (!variable) { +Blockly.Events.VarCreate = function(opt_variable) { + Blockly.Events.VarCreate.superClass_.constructor.call(this, opt_variable); + if (!opt_variable) { return; // Blank event to be populated by fromJson. } - Blockly.Events.VarCreate.superClass_.constructor.call(this, variable); - this.varType = variable.type; - this.varName = variable.name; + + this.varType = opt_variable.type; + this.varName = opt_variable.name; }; Blockly.utils.object.inherits(Blockly.Events.VarCreate, Blockly.Events.VarBase); @@ -117,18 +125,19 @@ Blockly.Events.VarCreate.prototype.run = function(forward) { /** * Class for a variable deletion event. - * @param {Blockly.VariableModel} variable The deleted variable. - * Null for a blank event. + * @param {!Blockly.VariableModel=} opt_variable The deleted variable. Undefined + * for a blank event. * @extends {Blockly.Events.VarBase} * @constructor */ -Blockly.Events.VarDelete = function(variable) { - if (!variable) { +Blockly.Events.VarDelete = function(opt_variable) { + Blockly.Events.VarDelete.superClass_.constructor.call(this, opt_variable); + if (!opt_variable) { return; // Blank event to be populated by fromJson. } - Blockly.Events.VarDelete.superClass_.constructor.call(this, variable); - this.varType = variable.type; - this.varName = variable.name; + + this.varType = opt_variable.type; + this.varName = opt_variable.name; }; Blockly.utils.object.inherits(Blockly.Events.VarDelete, Blockly.Events.VarBase); @@ -174,19 +183,20 @@ Blockly.Events.VarDelete.prototype.run = function(forward) { /** * Class for a variable rename event. - * @param {Blockly.VariableModel} variable The renamed variable. - * Null for a blank event. - * @param {string} newName The new name the variable will be changed to. + * @param {!Blockly.VariableModel=} opt_variable The renamed variable. Undefined + * for a blank event. + * @param {string=} newName The new name the variable will be changed to. * @extends {Blockly.Events.VarBase} * @constructor */ -Blockly.Events.VarRename = function(variable, newName) { - if (!variable) { +Blockly.Events.VarRename = function(opt_variable, newName) { + Blockly.Events.VarRename.superClass_.constructor.call(this, opt_variable); + if (!opt_variable) { return; // Blank event to be populated by fromJson. } - Blockly.Events.VarRename.superClass_.constructor.call(this, variable); - this.oldName = variable.name; - this.newName = newName; + + this.oldName = opt_variable.name; + this.newName = typeof newName == 'undefined' ? '' : newName; }; Blockly.utils.object.inherits(Blockly.Events.VarRename, Blockly.Events.VarBase); @@ -229,3 +239,10 @@ Blockly.Events.VarRename.prototype.run = function(forward) { workspace.renameVariableById(this.varId, this.oldName); } }; + +Blockly.registry.register(Blockly.registry.Type.EVENT, + Blockly.Events.VAR_CREATE, Blockly.Events.VarCreate); +Blockly.registry.register(Blockly.registry.Type.EVENT, + Blockly.Events.VAR_DELETE, Blockly.Events.VarDelete); +Blockly.registry.register(Blockly.registry.Type.EVENT, + Blockly.Events.VAR_RENAME, Blockly.Events.VarRename); diff --git a/core/variables.js b/core/variables.js index 6aa9374d546..fc2f5821f33 100644 --- a/core/variables.js +++ b/core/variables.js @@ -63,20 +63,6 @@ Blockly.Variables.allUsedVarModels = function(ws) { return variableList; }; -/** - * Find all user-created variables that are in use in the workspace and return - * only their names. - * For use by generators. - * To get a list of all variables on a workspace, including unused variables, - * call Workspace.getAllVariables. - * @deprecated January 2018 - */ -Blockly.Variables.allUsedVariables = function() { - console.warn('Deprecated call to Blockly.Variables.allUsedVariables. ' + - 'Use Blockly.Variables.allUsedVarModels instead.\nIf this is a major ' + - 'issue please file a bug on GitHub.'); -}; - /** * @private * @type {Object} diff --git a/core/warning.js b/core/warning.js index 915873706db..dc8f83666c2 100644 --- a/core/warning.js +++ b/core/warning.js @@ -18,6 +18,7 @@ goog.require('Blockly.Events.Ui'); goog.require('Blockly.Icon'); goog.require('Blockly.utils.dom'); goog.require('Blockly.utils.object'); +goog.require('Blockly.utils.Svg'); /** @@ -46,7 +47,8 @@ Blockly.Warning.prototype.collapseHidden = false; */ Blockly.Warning.prototype.drawIcon_ = function(group) { // Triangle with rounded corners. - Blockly.utils.dom.createSvgElement('path', + Blockly.utils.dom.createSvgElement( + Blockly.utils.Svg.PATH, { 'class': 'blocklyIconShape', 'd': 'M2,15Q-1,15 0.5,12L6.5,1.7Q8,-1 9.5,1.7L15.5,12Q17,15 14,15z' @@ -55,14 +57,16 @@ Blockly.Warning.prototype.drawIcon_ = function(group) { // Can't use a real '!' text character since different browsers and operating // systems render it differently. // Body of exclamation point. - Blockly.utils.dom.createSvgElement('path', + Blockly.utils.dom.createSvgElement( + Blockly.utils.Svg.PATH, { 'class': 'blocklyIconSymbol', 'd': 'm7,4.8v3.16l0.27,2.27h1.46l0.27,-2.27v-3.16z' }, group); // Dot of exclamation point. - Blockly.utils.dom.createSvgElement('rect', + Blockly.utils.dom.createSvgElement( + Blockly.utils.Svg.RECT, { 'class': 'blocklyIconSymbol', 'x': '7', 'y': '11', 'height': '2', 'width': '2' @@ -77,18 +81,17 @@ Blockly.Warning.prototype.drawIcon_ = function(group) { * @private */ Blockly.Warning.textToDom_ = function(text) { - var paragraph = /** @type {!SVGTextElement} */ - (Blockly.utils.dom.createSvgElement( - 'text', - { - 'class': 'blocklyText blocklyBubbleText blocklyNoPointerEvents', - 'y': Blockly.Bubble.BORDER_WIDTH - }, - null) - ); + var paragraph = Blockly.utils.dom.createSvgElement( + Blockly.utils.Svg.TEXT, + { + 'class': 'blocklyText blocklyBubbleText blocklyNoPointerEvents', + 'y': Blockly.Bubble.BORDER_WIDTH + }, + null); var lines = text.split('\n'); for (var i = 0; i < lines.length; i++) { - var tspanElement = Blockly.utils.dom.createSvgElement('tspan', + var tspanElement = Blockly.utils.dom.createSvgElement( + Blockly.utils.Svg.TSPAN, {'dy': '1em', 'x': Blockly.Bubble.BORDER_WIDTH}, paragraph); var textNode = document.createTextNode(lines[i]); tspanElement.appendChild(textNode); diff --git a/core/workspace.js b/core/workspace.js index 02287e10c61..e5e8b8c5284 100644 --- a/core/workspace.js +++ b/core/workspace.js @@ -12,6 +12,7 @@ goog.provide('Blockly.Workspace'); +goog.require('Blockly.ConnectionChecker'); goog.require('Blockly.Events'); goog.require('Blockly.Options'); goog.require('Blockly.utils'); @@ -19,6 +20,7 @@ goog.require('Blockly.utils.math'); goog.require('Blockly.VariableMap'); goog.requireType('Blockly.IASTNodeLocation'); +goog.requireType('Blockly.IConnectionChecker'); /** @@ -42,6 +44,14 @@ Blockly.Workspace = function(opt_options) { /** @type {number} */ this.toolboxPosition = this.options.toolboxPosition; + var connectionCheckerClass = Blockly.registry.getClassFromOptions( + Blockly.registry.Type.CONNECTION_CHECKER, this.options); + /** + * An object that encapsulates logic for safety, type, and dragging checks. + * @type {!Blockly.IConnectionChecker} + */ + this.connectionChecker = new connectionCheckerClass(this); + /** * @type {!Array.} * @private @@ -409,21 +419,6 @@ Blockly.Workspace.prototype.deleteVariableById = function(id) { this.variableMap_.deleteVariableById(id); }; -/** - * Check whether a variable exists with the given name. The check is - * case-insensitive. - * @param {string} _name The name to check for. - * @return {number} The index of the name in the variable list, or -1 if it is - * not present. - * @deprecated April 2017 - */ - -Blockly.Workspace.prototype.variableIndexOf = function(_name) { - console.warn( - 'Deprecated call to Blockly.Workspace.prototype.variableIndexOf'); - return -1; -}; - /** * Find the variable by the given name and return it. Return null if it is not * found. @@ -497,7 +492,7 @@ Blockly.Workspace.prototype.getWidth = function() { /** * Obtain a newly created block. - * @param {?string} prototypeName Name of the language object containing + * @param {!string} prototypeName Name of the language object containing * type-specific functions for this block. * @param {string=} opt_id Optional ID. Use this ID if provided, otherwise * create a new ID. @@ -573,6 +568,24 @@ Blockly.Workspace.prototype.hasBlockLimits = function() { return this.options.maxBlocks != Infinity || !!this.options.maxInstances; }; +/** + * Gets the undo stack for workplace. + * @return {!Array.} undo stack + * @package + */ +Blockly.Workspace.prototype.getUndoStack = function() { + return this.undoStack_; +}; + +/** + * Gets the redo stack for workplace. + * @return {!Array.} redo stack + * @package + */ +Blockly.Workspace.prototype.getRedoStack = function() { + return this.redoStack_; +}; + /** * Undo or redo the previous action. * @param {boolean} redo False if undo, true if redo. diff --git a/core/workspace_comment_render_svg.js b/core/workspace_comment_render_svg.js index ee997e161f2..9e6aea698a3 100644 --- a/core/workspace_comment_render_svg.js +++ b/core/workspace_comment_render_svg.js @@ -15,6 +15,7 @@ goog.provide('Blockly.WorkspaceCommentSvg.render'); goog.require('Blockly.utils'); goog.require('Blockly.utils.Coordinate'); goog.require('Blockly.utils.dom'); +goog.require('Blockly.utils.Svg'); /** @@ -74,14 +75,16 @@ Blockly.WorkspaceCommentSvg.prototype.render = function() { this.createEditor_(); this.svgGroup_.appendChild(this.foreignObject_); - this.svgHandleTarget_ = Blockly.utils.dom.createSvgElement('rect', + this.svgHandleTarget_ = Blockly.utils.dom.createSvgElement( + Blockly.utils.Svg.RECT, { 'class': 'blocklyCommentHandleTarget', 'x': 0, 'y': 0 }); this.svgGroup_.appendChild(this.svgHandleTarget_); - this.svgRectTarget_ = Blockly.utils.dom.createSvgElement('rect', + this.svgRectTarget_ = Blockly.utils.dom.createSvgElement( + Blockly.utils.Svg.RECT, { 'class': 'blocklyCommentTarget', 'x': 0, @@ -136,7 +139,7 @@ Blockly.WorkspaceCommentSvg.prototype.createEditor_ = function() { */ this.foreignObject_ = Blockly.utils.dom.createSvgElement( - 'foreignObject', + Blockly.utils.Svg.FOREIGNOBJECT, { 'x': 0, 'y': Blockly.WorkspaceCommentSvg.TOP_OFFSET, @@ -171,25 +174,25 @@ Blockly.WorkspaceCommentSvg.prototype.createEditor_ = function() { */ Blockly.WorkspaceCommentSvg.prototype.addResizeDom_ = function() { this.resizeGroup_ = Blockly.utils.dom.createSvgElement( - 'g', + Blockly.utils.Svg.G, { 'class': this.RTL ? 'blocklyResizeSW' : 'blocklyResizeSE' }, this.svgGroup_); var resizeSize = Blockly.WorkspaceCommentSvg.RESIZE_SIZE; Blockly.utils.dom.createSvgElement( - 'polygon', + Blockly.utils.Svg.POLYGON, {'points': '0,x x,x x,0'.replace(/x/g, resizeSize.toString())}, this.resizeGroup_); Blockly.utils.dom.createSvgElement( - 'line', + Blockly.utils.Svg.LINE, { 'class': 'blocklyResizeLine', 'x1': resizeSize / 3, 'y1': resizeSize - 1, 'x2': resizeSize - 1, 'y2': resizeSize / 3 }, this.resizeGroup_); Blockly.utils.dom.createSvgElement( - 'line', + Blockly.utils.Svg.LINE, { 'class': 'blocklyResizeLine', 'x1': resizeSize * 2 / 3, 'y1': resizeSize - 1, @@ -203,12 +206,13 @@ Blockly.WorkspaceCommentSvg.prototype.addResizeDom_ = function() { */ Blockly.WorkspaceCommentSvg.prototype.addDeleteDom_ = function() { this.deleteGroup_ = Blockly.utils.dom.createSvgElement( - 'g', + Blockly.utils.Svg.G, { 'class': 'blocklyCommentDeleteIcon' }, this.svgGroup_); - this.deleteIconBorder_ = Blockly.utils.dom.createSvgElement('circle', + this.deleteIconBorder_ = Blockly.utils.dom.createSvgElement( + Blockly.utils.Svg.CIRCLE, { 'class': 'blocklyDeleteIconShape', 'r': '7', @@ -218,7 +222,7 @@ Blockly.WorkspaceCommentSvg.prototype.addDeleteDom_ = function() { this.deleteGroup_); // x icon. Blockly.utils.dom.createSvgElement( - 'line', + Blockly.utils.Svg.LINE, { 'x1': '5', 'y1': '10', 'x2': '10', 'y2': '5', @@ -227,7 +231,7 @@ Blockly.WorkspaceCommentSvg.prototype.addDeleteDom_ = function() { }, this.deleteGroup_); Blockly.utils.dom.createSvgElement( - 'line', + Blockly.utils.Svg.LINE, { 'x1': '5', 'y1': '5', 'x2': '10', 'y2': '10', diff --git a/core/workspace_comment_svg.js b/core/workspace_comment_svg.js index 4190074ba5a..53604bfa9d5 100644 --- a/core/workspace_comment_svg.js +++ b/core/workspace_comment_svg.js @@ -23,9 +23,11 @@ goog.require('Blockly.utils.Coordinate'); goog.require('Blockly.utils.dom'); goog.require('Blockly.utils.object'); goog.require('Blockly.utils.Rect'); +goog.require('Blockly.utils.Svg'); goog.require('Blockly.WorkspaceComment'); goog.requireType('Blockly.IBoundedElement'); +goog.requireType('Blockly.IBubble'); goog.requireType('Blockly.ICopyable'); /** @@ -38,12 +40,12 @@ goog.requireType('Blockly.ICopyable'); * create a new ID. * @extends {Blockly.WorkspaceComment} * @implements {Blockly.IBoundedElement} + * @implements {Blockly.IBubble} * @implements {Blockly.ICopyable} * @constructor */ -Blockly.WorkspaceCommentSvg = function(workspace, content, height, width, - opt_id) { - +Blockly.WorkspaceCommentSvg = function( + workspace, content, height, width, opt_id) { /** * Mouse up event data. * @type {?Blockly.EventData} @@ -60,16 +62,15 @@ Blockly.WorkspaceCommentSvg = function(workspace, content, height, width, // Create core elements for the block. /** - * @type {SVGElement} + * @type {!SVGElement} * @private */ this.svgGroup_ = Blockly.utils.dom.createSvgElement( - 'g', {'class': 'blocklyComment'}, null); + Blockly.utils.Svg.G, {'class': 'blocklyComment'}, null); this.svgGroup_.translate_ = ''; this.svgRect_ = Blockly.utils.dom.createSvgElement( - 'rect', - { + Blockly.utils.Svg.RECT, { 'class': 'blocklyCommentRect', 'x': 0, 'y': 0, @@ -94,13 +95,13 @@ Blockly.WorkspaceCommentSvg = function(workspace, content, height, width, this.useDragSurface_ = Blockly.utils.is3dSupported() && !!workspace.blockDragSurface_; - Blockly.WorkspaceCommentSvg.superClass_.constructor.call(this, - workspace, content, height, width, opt_id); + Blockly.WorkspaceCommentSvg.superClass_.constructor.call( + this, workspace, content, height, width, opt_id); this.render(); }; -Blockly.utils.object.inherits(Blockly.WorkspaceCommentSvg, - Blockly.WorkspaceComment); +Blockly.utils.object.inherits( + Blockly.WorkspaceCommentSvg, Blockly.WorkspaceComment); /** * The width and height to use to size a workspace comment when it is first @@ -291,8 +292,8 @@ Blockly.WorkspaceCommentSvg.prototype.getRelativeToSurfaceXY = function() { var x = 0; var y = 0; - var dragSurfaceGroup = this.useDragSurface_ ? - this.workspace.blockDragSurface_.getGroup() : null; + var dragSurfaceGroup = + this.useDragSurface_ ? this.workspace.blockDragSurface_.getGroup() : null; var element = this.getSvgRoot(); if (element) { @@ -312,7 +313,7 @@ Blockly.WorkspaceCommentSvg.prototype.getRelativeToSurfaceXY = function() { } element = element.parentNode; } while (element && element != this.workspace.getBubbleCanvas() && - element != dragSurfaceGroup); + element != dragSurfaceGroup); } this.xy_ = new Blockly.utils.Coordinate(x, y); return this.xy_; @@ -344,8 +345,7 @@ Blockly.WorkspaceCommentSvg.prototype.moveBy = function(dx, dy) { */ Blockly.WorkspaceCommentSvg.prototype.translate = function(x, y) { this.xy_ = new Blockly.utils.Coordinate(x, y); - this.getSvgRoot().setAttribute('transform', - 'translate(' + x + ',' + y + ')'); + this.getSvgRoot().setAttribute('transform', 'translate(' + x + ',' + y + ')'); }; /** @@ -373,8 +373,8 @@ Blockly.WorkspaceCommentSvg.prototype.moveToDragSurface = function() { * Move this comment back to the workspace block canvas. * Generally should be called at the same time as setDragging(false). * Does nothing if useDragSurface_ is false. - * @param {!Blockly.utils.Coordinate} newXY The position the comment should take on - * on the workspace canvas, in workspace coordinates. + * @param {!Blockly.utils.Coordinate} newXY The position the comment should take + * on on the workspace canvas, in workspace coordinates. * @private */ Blockly.WorkspaceCommentSvg.prototype.moveOffDragSurface = function(newXY) { @@ -395,14 +395,14 @@ Blockly.WorkspaceCommentSvg.prototype.moveOffDragSurface = function(newXY) { * workspace coordinates. * @package */ -Blockly.WorkspaceCommentSvg.prototype.moveDuringDrag = function(dragSurface, - newLoc) { +Blockly.WorkspaceCommentSvg.prototype.moveDuringDrag = function( + dragSurface, newLoc) { if (dragSurface) { dragSurface.translateSurface(newLoc.x, newLoc.y); } else { this.svgGroup_.translate_ = 'translate(' + newLoc.x + ',' + newLoc.y + ')'; - this.svgGroup_.setAttribute('transform', - this.svgGroup_.translate_ + this.svgGroup_.skew_); + this.svgGroup_.setAttribute( + 'transform', this.svgGroup_.translate_ + this.svgGroup_.skew_); } }; @@ -507,7 +507,7 @@ Blockly.WorkspaceCommentSvg.prototype.setDragging = function(adding) { /** * Return the root node of the SVG or null if none exists. - * @return {SVGElement} The root SVG node (probably a group). + * @return {!SVGElement} The root SVG node (probably a group). * @package */ Blockly.WorkspaceCommentSvg.prototype.getSvgRoot = function() { @@ -551,7 +551,15 @@ Blockly.WorkspaceCommentSvg.prototype.setDeleteStyle = function(enable) { } }; -Blockly.WorkspaceCommentSvg.prototype.setAutoLayout = function() { +/** + * Set whether auto-layout of this bubble is enabled. The first time a bubble + * is shown it positions itself to not cover any blocks. Once a user has + * dragged it to reposition, it renders where the user put it. + * @param {boolean} _enable True if auto-layout should be enabled, false + * otherwise. + * @package + */ +Blockly.WorkspaceCommentSvg.prototype.setAutoLayout = function(_enable) { // NOP for compatibility with the bubble dragger. }; @@ -564,14 +572,14 @@ Blockly.WorkspaceCommentSvg.prototype.setAutoLayout = function() { * @return {!Blockly.WorkspaceCommentSvg} The created workspace comment. * @package */ -Blockly.WorkspaceCommentSvg.fromXml = function(xmlComment, workspace, - opt_wsWidth) { +Blockly.WorkspaceCommentSvg.fromXml = function( + xmlComment, workspace, opt_wsWidth) { Blockly.Events.disable(); try { var info = Blockly.WorkspaceComment.parseAttributes(xmlComment); - var comment = new Blockly.WorkspaceCommentSvg(workspace, - info.content, info.h, info.w, info.id); + var comment = new Blockly.WorkspaceCommentSvg( + workspace, info.content, info.h, info.w, info.id); if (workspace.rendered) { comment.initSvg(); comment.render(false); @@ -608,8 +616,8 @@ Blockly.WorkspaceCommentSvg.prototype.toXmlWithXY = function(opt_noId) { } var element = this.toXml(opt_noId); var xy = this.getRelativeToSurfaceXY(); - element.setAttribute('x', - Math.round(this.workspace.RTL ? width - xy.x : xy.x)); + element.setAttribute( + 'x', Math.round(this.workspace.RTL ? width - xy.x : xy.x)); element.setAttribute('y', Math.round(xy.y)); element.setAttribute('h', this.getHeight()); element.setAttribute('w', this.getWidth()); @@ -622,17 +630,14 @@ Blockly.WorkspaceCommentSvg.prototype.toXmlWithXY = function(opt_noId) { * @package */ Blockly.WorkspaceCommentSvg.prototype.toCopyData = function() { - return { - xml: this.toXmlWithXY(), - source: this.workspace, - typeCounts: null - }; + return {xml: this.toXmlWithXY(), source: this.workspace, typeCounts: null}; }; /** * CSS for workspace comment. See css.js for use. */ Blockly.Css.register([ + // clang-format off /* eslint-disable indent */ '.blocklyCommentForeignObject {', 'position: relative;', @@ -692,4 +697,5 @@ Blockly.Css.register([ 'stroke: #fc3;', '}' /* eslint-enable indent */ + // clang-format on ]); diff --git a/core/workspace_drag_surface_svg.js b/core/workspace_drag_surface_svg.js index 3ee7454be56..57e989be9ac 100644 --- a/core/workspace_drag_surface_svg.js +++ b/core/workspace_drag_surface_svg.js @@ -18,6 +18,7 @@ goog.provide('Blockly.WorkspaceDragSurfaceSvg'); goog.require('Blockly.utils'); goog.require('Blockly.utils.dom'); +goog.require('Blockly.utils.Svg'); /** @@ -62,7 +63,8 @@ Blockly.WorkspaceDragSurfaceSvg.prototype.createDom = function() { * /g> * */ - this.SVG_ = Blockly.utils.dom.createSvgElement('svg', + this.SVG_ = Blockly.utils.dom.createSvgElement( + Blockly.utils.Svg.SVG, { 'xmlns': Blockly.utils.dom.SVG_NS, 'xmlns:html': Blockly.utils.dom.HTML_NS, diff --git a/core/workspace_events.js b/core/workspace_events.js index de98c58963e..f150eb454bf 100644 --- a/core/workspace_events.js +++ b/core/workspace_events.js @@ -14,6 +14,7 @@ goog.provide('Blockly.Events.FinishedLoading'); goog.require('Blockly.Events'); goog.require('Blockly.Events.Ui'); +goog.require('Blockly.registry'); goog.require('Blockly.utils.object'); @@ -22,17 +23,24 @@ goog.require('Blockly.utils.object'); * Used to notify the developer when the workspace has finished loading (i.e * domToWorkspace). * Finished loading events do not record undo or redo. - * @param {!Blockly.Workspace} workspace The workspace that has finished - * loading. - * @extends {Blockly.Events.Abstract} + * @param {!Blockly.Workspace=} opt_workspace The workspace that has finished + * loading. Undefined for a blank event. + * @extends {Blockly.Events.Ui} * @constructor */ -Blockly.Events.FinishedLoading = function(workspace) { +Blockly.Events.FinishedLoading = function(opt_workspace) { + + /** + * Whether or not the event is blank (to be populated by fromJson). + * @type {boolean} + */ + this.isBlank = typeof opt_workspace == 'undefined'; + /** * The workspace identifier for this event. * @type {string} */ - this.workspaceId = workspace.id; + this.workspaceId = opt_workspace ? opt_workspace.id : ''; /** * The event group ID for the group this event belongs to. Groups define @@ -76,6 +84,10 @@ Blockly.Events.FinishedLoading.prototype.toJson = function() { * @param {!Object} json JSON representation. */ Blockly.Events.FinishedLoading.prototype.fromJson = function(json) { + this.isBlank = false; this.workspaceId = json['workspaceId']; this.group = json['group']; }; + +Blockly.registry.register(Blockly.registry.Type.EVENT, + Blockly.Events.FINISHED_LOADING, Blockly.Events.FinishedLoading); diff --git a/core/workspace_svg.js b/core/workspace_svg.js index d1cfff478ba..0b86282117c 100644 --- a/core/workspace_svg.js +++ b/core/workspace_svg.js @@ -16,6 +16,7 @@ goog.require('Blockly.BlockSvg'); goog.require('Blockly.blockRendering'); goog.require('Blockly.ConnectionDB'); goog.require('Blockly.constants'); +goog.require('Blockly.ContextMenuRegistry'); goog.require('Blockly.Events'); goog.require('Blockly.Events.BlockCreate'); goog.require('Blockly.Gesture'); @@ -34,6 +35,7 @@ goog.require('Blockly.utils.dom'); goog.require('Blockly.utils.Metrics'); goog.require('Blockly.utils.object'); goog.require('Blockly.utils.Rect'); +goog.require('Blockly.utils.Svg'); goog.require('Blockly.utils.toolbox'); goog.require('Blockly.Workspace'); goog.require('Blockly.WorkspaceAudio'); @@ -43,6 +45,7 @@ goog.require('Blockly.Xml'); goog.requireType('Blockly.blockRendering.Renderer'); goog.requireType('Blockly.IASTNodeLocationSvg'); goog.requireType('Blockly.IBoundedElement'); +goog.requireType('Blockly.IFlyout'); /** @@ -67,7 +70,8 @@ Blockly.WorkspaceSvg = function(options, this.setMetrics = options.setMetrics || Blockly.WorkspaceSvg.setTopLevelWorkspaceMetrics_; - this.connectionDBList = Blockly.ConnectionDB.init(); + + this.connectionDBList = Blockly.ConnectionDB.init(this.connectionChecker); if (opt_blockDragSurface) { this.blockDragSurface_ = opt_blockDragSurface; @@ -320,6 +324,28 @@ Blockly.WorkspaceSvg.prototype.dragDeltaXY_ = null; */ Blockly.WorkspaceSvg.prototype.scale = 1; +// TODO(#4203) Enable viewport events after ui events refactor. +// /** +// * Cached scale value. Used to detect changes in viewport. +// * @type {number} +// * @private +// */ +// Blockly.WorkspaceSvg.prototype.oldScale_ = 1; +// +// /** +// * Cached viewport top value. Used to detect changes in viewport. +// * @type {number} +// * @private +// */ +// Blockly.WorkspaceSvg.prototype.oldTop_ = 0; +// +// /** +// * Cached viewport left value. Used to detect changes in viewport. +// * @type {number} +// * @private +// */ +// Blockly.WorkspaceSvg.prototype.oldLeft_ = 0; + /** * The workspace's trashcan (if any). * @type {Blockly.Trashcan} @@ -334,7 +360,7 @@ Blockly.WorkspaceSvg.prototype.scrollbar = null; /** * Fixed flyout providing blocks which may be dragged into this workspace. - * @type {Blockly.Flyout} + * @type {Blockly.IFlyout} * @private */ Blockly.WorkspaceSvg.prototype.flyout_ = null; @@ -710,7 +736,8 @@ Blockly.WorkspaceSvg.prototype.createDom = function(opt_backgroundClass) { * * @type {SVGElement} */ - this.svgGroup_ = Blockly.utils.dom.createSvgElement('g', + this.svgGroup_ = Blockly.utils.dom.createSvgElement( + Blockly.utils.Svg.G, {'class': 'blocklyWorkspace'}, null); // Note that a alone does not receive mouse events--it must have a @@ -718,7 +745,8 @@ Blockly.WorkspaceSvg.prototype.createDom = function(opt_backgroundClass) { // flyout, the workspace will not receive mouse events. if (opt_backgroundClass) { /** @type {SVGElement} */ - this.svgBackground_ = Blockly.utils.dom.createSvgElement('rect', + this.svgBackground_ = Blockly.utils.dom.createSvgElement( + Blockly.utils.Svg.RECT, {'height': '100%', 'width': '100%', 'class': opt_backgroundClass}, this.svgGroup_); @@ -731,10 +759,12 @@ Blockly.WorkspaceSvg.prototype.createDom = function(opt_backgroundClass) { } } /** @type {SVGElement} */ - this.svgBlockCanvas_ = Blockly.utils.dom.createSvgElement('g', + this.svgBlockCanvas_ = Blockly.utils.dom.createSvgElement( + Blockly.utils.Svg.G, {'class': 'blocklyBlockCanvas'}, this.svgGroup_); /** @type {SVGElement} */ - this.svgBubbleCanvas_ = Blockly.utils.dom.createSvgElement('g', + this.svgBubbleCanvas_ = Blockly.utils.dom.createSvgElement( + Blockly.utils.Svg.G, {'class': 'blocklyBubbleCanvas'}, this.svgGroup_); if (!this.isFlyout) { @@ -842,9 +872,9 @@ Blockly.WorkspaceSvg.prototype.dispose = function() { if (!this.options.parentWorkspace) { // Top-most workspace. Dispose of the div that the // SVG is injected into (i.e. injectionDiv). - var div = this.getParentSvg().parentNode; - if (div) { - Blockly.utils.dom.removeNode(div); + var parentSvg = this.getParentSvg(); + if (parentSvg && parentSvg.parentNode) { + Blockly.utils.dom.removeNode(parentSvg.parentNode); } } if (this.resizeHandlerWrapper_) { @@ -855,7 +885,11 @@ Blockly.WorkspaceSvg.prototype.dispose = function() { /** * Obtain a newly created block. - * @param {?string} prototypeName Name of the language object containing + * + * This block's svg must still be initialized + * ([initSvg]{@link Blockly.BlockSvg#initSvg}) and it must be rendered + * ([render]{@link Blockly.BlockSvg#render}) before the block will be visible. + * @param {!string} prototypeName Name of the language object containing * type-specific functions for this block. * @param {string=} opt_id Optional ID. Use this ID if provided, otherwise * create a new ID. @@ -896,7 +930,10 @@ Blockly.WorkspaceSvg.prototype.addZoomControls = function() { /** * Add a flyout element in an element with the given tag name. - * @param {string} tagName What type of tag the flyout belongs in. + * @param {string| + * !Blockly.utils.Svg| + * !Blockly.utils.Svg} tagName What type of tag the + * flyout belongs in. * @return {!Element} The element containing the flyout DOM. * @package */ @@ -937,7 +974,7 @@ Blockly.WorkspaceSvg.prototype.addFlyout = function(tagName) { * owned by either the toolbox or the workspace, depending on toolbox * configuration. It will be null if there is no flyout. * @param {boolean=} opt_own Only return the workspace's own flyout if True. - * @return {Blockly.Flyout} The flyout on this workspace. + * @return {Blockly.IFlyout} The flyout on this workspace. * @package */ Blockly.WorkspaceSvg.prototype.getFlyout = function(opt_own) { @@ -1063,6 +1100,31 @@ Blockly.WorkspaceSvg.prototype.getParentSvg = function() { return /** @type {!SVGElement} */ (this.cachedParentSvg_); }; +/** + * Fires a viewport event if events are enabled and there is a change in + * viewport values. + * @package + */ +Blockly.WorkspaceSvg.prototype.maybeFireViewportChangeEvent = function() { + // TODO(#4203) Enable viewport events after ui events refactor. + // if (!Blockly.Events.isEnabled()) { + // return; + // } + // var scale = this.scale; + // var top = -this.scrollY; + // var left = -this.scrollX; + // if (scale == this.oldScale_ && top == this.oldTop_ && left == this.oldLeft_) { + // return; + // } + // this.oldScale_ = scale; + // this.oldTop_ = top; + // this.oldLeft_ = left; + // var event = new Blockly.Events.Ui(null, 'viewport', null, + // { scale: scale, top: top, left: left }); + // event.workspaceId = this.id; + // Blockly.Events.fire(event); +}; + /** * Translate this workspace to new coordinates. * @param {number} x Horizontal translation, in pixel units relative to the @@ -1087,6 +1149,8 @@ Blockly.WorkspaceSvg.prototype.translate = function(x, y) { if (this.grid_) { this.grid_.moveTo(x, y); } + + this.maybeFireViewportChangeEvent(); }; /** @@ -1230,16 +1294,6 @@ Blockly.WorkspaceSvg.prototype.render = function() { this.markerManager_.updateMarkers(); }; -/** - * Was used back when block highlighting (for execution) and block selection - * (for editing) were the same thing. - * Any calls of this function can be deleted. - * @deprecated October 2016 - */ -Blockly.WorkspaceSvg.prototype.traceOn = function() { - console.warn('Deprecated call to traceOn, delete this.'); -}; - /** * Highlight or unhighlight a block in the workspace. Block highlighting is * often used to visually mark blocks currently being executed. @@ -1273,13 +1327,16 @@ Blockly.WorkspaceSvg.prototype.highlightBlock = function(id, opt_state) { /** * Paste the provided block onto the workspace. - * @param {!Element} xmlBlock XML block element. + * @param {!Element|!DocumentFragment} xmlBlock XML block element or an empty + * DocumentFragment if the block was an insertion marker. */ Blockly.WorkspaceSvg.prototype.paste = function(xmlBlock) { - if (!this.rendered || xmlBlock.getElementsByTagName('block').length >= + if (!this.rendered || !xmlBlock.tagName || xmlBlock.getElementsByTagName('block').length >= this.remainingCapacity()) { return; } + // The check above for tagName rules out the possibility of this being a DocumentFragment. + xmlBlock = /** @type {!Element} */ (xmlBlock); if (this.currentGesture_) { this.currentGesture_.cancel(); // Dragging while pasting? No. } @@ -1689,136 +1746,8 @@ Blockly.WorkspaceSvg.prototype.showContextMenu = function(e) { if (this.options.readOnly || this.isFlyout) { return; } - var menuOptions = []; - var topBlocks = this.getTopBlocks(true); - var eventGroup = Blockly.utils.genUid(); - var ws = this; - - // Options to undo/redo previous action. - var undoOption = {}; - undoOption.text = Blockly.Msg['UNDO']; - undoOption.enabled = this.undoStack_.length > 0; - undoOption.callback = this.undo.bind(this, false); - menuOptions.push(undoOption); - var redoOption = {}; - redoOption.text = Blockly.Msg['REDO']; - redoOption.enabled = this.redoStack_.length > 0; - redoOption.callback = this.undo.bind(this, true); - menuOptions.push(redoOption); - - // Option to clean up blocks. - if (this.isMovable()) { - var cleanOption = {}; - cleanOption.text = Blockly.Msg['CLEAN_UP']; - cleanOption.enabled = topBlocks.length > 1; - cleanOption.callback = this.cleanUp.bind(this); - menuOptions.push(cleanOption); - } - - // Add a little animation to collapsing and expanding. - var DELAY = 10; - if (this.options.collapse) { - var hasCollapsedBlocks = false; - var hasExpandedBlocks = false; - for (var i = 0; i < topBlocks.length; i++) { - var block = topBlocks[i]; - while (block) { - if (block.isCollapsed()) { - hasCollapsedBlocks = true; - } else { - hasExpandedBlocks = true; - } - block = block.getNextBlock(); - } - } - - /** - * Option to collapse or expand top blocks. - * @param {boolean} shouldCollapse Whether a block should collapse. - * @private - */ - var toggleOption = function(shouldCollapse) { - var ms = 0; - for (var i = 0; i < topBlocks.length; i++) { - var block = topBlocks[i]; - while (block) { - setTimeout(block.setCollapsed.bind(block, shouldCollapse), ms); - block = block.getNextBlock(); - ms += DELAY; - } - } - }; - - // Option to collapse top blocks. - var collapseOption = {enabled: hasExpandedBlocks}; - collapseOption.text = Blockly.Msg['COLLAPSE_ALL']; - collapseOption.callback = function() { - toggleOption(true); - }; - menuOptions.push(collapseOption); - - // Option to expand top blocks. - var expandOption = {enabled: hasCollapsedBlocks}; - expandOption.text = Blockly.Msg['EXPAND_ALL']; - expandOption.callback = function() { - toggleOption(false); - }; - menuOptions.push(expandOption); - } - - // Option to delete all blocks. - // Count the number of blocks that are deletable. - var deleteList = []; - function addDeletableBlocks(block) { - if (block.isDeletable()) { - deleteList = deleteList.concat(block.getDescendants(false)); - } else { - var children = block.getChildren(false); - for (var i = 0; i < children.length; i++) { - addDeletableBlocks(children[i]); - } - } - } - for (var i = 0; i < topBlocks.length; i++) { - addDeletableBlocks(topBlocks[i]); - } - - function deleteNext() { - Blockly.Events.setGroup(eventGroup); - var block = deleteList.shift(); - if (block) { - if (block.workspace) { - block.dispose(false, true); - setTimeout(deleteNext, DELAY); - } else { - deleteNext(); - } - } - Blockly.Events.setGroup(false); - } - - var deleteOption = { - text: deleteList.length == 1 ? Blockly.Msg['DELETE_BLOCK'] : - Blockly.Msg['DELETE_X_BLOCKS'].replace('%1', String(deleteList.length)), - enabled: deleteList.length > 0, - callback: function() { - if (ws.currentGesture_) { - ws.currentGesture_.cancel(); - } - if (deleteList.length < 2 ) { - deleteNext(); - } else { - Blockly.confirm( - Blockly.Msg['DELETE_ALL_BLOCKS'].replace('%1', deleteList.length), - function(ok) { - if (ok) { - deleteNext(); - } - }); - } - } - }; - menuOptions.push(deleteOption); + var menuOptions = Blockly.ContextMenuRegistry.registry.getContextMenuOptions( + Blockly.ContextMenuRegistry.ScopeType.WORKSPACE, {workspace: this}); // Allow the developer to add or modify menuOptions. if (this.configureContextMenu) { @@ -1830,16 +1759,14 @@ Blockly.WorkspaceSvg.prototype.showContextMenu = function(e) { /** * Modify the block tree on the existing toolbox. - * @param {Blockly.utils.toolbox.ToolboxDefinition|string} toolboxDef - * DOM tree of toolbox contents, string of toolbox contents, or array of JSON - * representing toolbox contents. + * @param {?Blockly.utils.toolbox.ToolboxDefinition} toolboxDef + * DOM tree of toolbox contents, string of toolbox contents, or JSON + * representing toolbox definition. */ Blockly.WorkspaceSvg.prototype.updateToolbox = function(toolboxDef) { - if (!Array.isArray(toolboxDef)) { - toolboxDef = Blockly.Options.parseToolboxTree(toolboxDef); - } - toolboxDef = Blockly.utils.toolbox.convertToolboxToJSON(toolboxDef); - if (!toolboxDef) { + var parsedToolboxDef = Blockly.utils.toolbox.convertToolboxDefToJson(toolboxDef); + + if (!parsedToolboxDef) { if (this.options.languageTree) { throw Error('Can\'t nullify an existing toolbox.'); } @@ -1848,18 +1775,19 @@ Blockly.WorkspaceSvg.prototype.updateToolbox = function(toolboxDef) { if (!this.options.languageTree) { throw Error('Existing toolbox is null. Can\'t create new toolbox.'); } - if (Blockly.utils.toolbox.hasCategories(toolboxDef)) { + + if (Blockly.utils.toolbox.hasCategories(parsedToolboxDef)) { if (!this.toolbox_) { throw Error('Existing toolbox has no categories. Can\'t change mode.'); } - this.options.languageTree = toolboxDef; - this.toolbox_.render(toolboxDef); + this.options.languageTree = parsedToolboxDef; + this.toolbox_.render(parsedToolboxDef); } else { if (!this.flyout_) { throw Error('Existing toolbox has categories. Can\'t change mode.'); } - this.options.languageTree = toolboxDef; - this.flyout_.show(toolboxDef); + this.options.languageTree = parsedToolboxDef; + this.flyout_.show(parsedToolboxDef); } }; @@ -2019,8 +1947,14 @@ Blockly.WorkspaceSvg.prototype.zoomToFit = function() { // Scale Units: (pixels / workspaceUnit) var ratioX = workspaceWidth / blocksWidth; var ratioY = workspaceHeight / blocksHeight; - this.setScale(Math.min(ratioX, ratioY)); - this.scrollCenter(); + Blockly.Events.disable(); + try { + this.setScale(Math.min(ratioX, ratioY)); + this.scrollCenter(); + } finally { + Blockly.Events.enable(); + } + this.maybeFireViewportChangeEvent(); }; /** @@ -2236,7 +2170,7 @@ Blockly.WorkspaceSvg.prototype.scroll = function(x, y) { /** * Get the dimensions of the given workspace component, in pixels. - * @param {Blockly.IToolbox|Blockly.Flyout} elem The element to get the + * @param {Blockly.IToolbox|Blockly.IFlyout} elem The element to get the * dimensions of, or null. It should be a toolbox or flyout, and should * implement getWidth() and getHeight(). * @return {!Blockly.utils.Size} An object containing width and height diff --git a/core/ws_comment_events.js b/core/ws_comment_events.js index 6a88af29053..82369fd3715 100644 --- a/core/ws_comment_events.js +++ b/core/ws_comment_events.js @@ -18,6 +18,7 @@ goog.provide('Blockly.Events.CommentMove'); goog.require('Blockly.Events'); goog.require('Blockly.Events.Abstract'); +goog.require('Blockly.registry'); goog.require('Blockly.utils.Coordinate'); goog.require('Blockly.utils.object'); goog.require('Blockly.utils.xml'); @@ -27,23 +28,30 @@ goog.require('Blockly.utils.xml'); /** * Abstract class for a comment event. - * @param {Blockly.WorkspaceComment} comment The comment this event corresponds - * to. + * @param {!Blockly.WorkspaceComment=} opt_comment The comment this event + * corresponds to. Undefined for a blank event. * @extends {Blockly.Events.Abstract} * @constructor */ -Blockly.Events.CommentBase = function(comment) { +Blockly.Events.CommentBase = function(opt_comment) { + + /** + * Whether or not an event is blank. + * @type {boolean} + */ + this.isBlank = typeof opt_comment == 'undefined'; + /** * The ID of the comment this event pertains to. * @type {string} */ - this.commentId = comment.id; + this.commentId = this.isBlank ? '' : opt_comment.id; /** * The workspace identifier for this event. * @type {string} */ - this.workspaceId = comment.workspace.id; + this.workspaceId = this.isBlank ? '' : opt_comment.workspace.id; /** * The event group id for the group this event belongs to. Groups define @@ -85,20 +93,24 @@ Blockly.Events.CommentBase.prototype.fromJson = function(json) { /** * Class for a comment change event. - * @param {Blockly.WorkspaceComment} comment The comment that is being changed. - * Null for a blank event. - * @param {string} oldContents Previous contents of the comment. - * @param {string} newContents New contents of the comment. + * @param {!Blockly.WorkspaceComment=} opt_comment The comment that is being + * changed. Undefined for a blank event. + * @param {string=} opt_oldContents Previous contents of the comment. + * @param {string=} opt_newContents New contents of the comment. * @extends {Blockly.Events.CommentBase} * @constructor */ -Blockly.Events.CommentChange = function(comment, oldContents, newContents) { - if (!comment) { +Blockly.Events.CommentChange = function(opt_comment, opt_oldContents, + opt_newContents) { + Blockly.Events.CommentChange.superClass_.constructor.call(this, opt_comment); + if (!opt_comment) { return; // Blank event to be populated by fromJson. } - Blockly.Events.CommentChange.superClass_.constructor.call(this, comment); - this.oldContents_ = oldContents; - this.newContents_ = newContents; + + this.oldContents_ = typeof opt_oldContents == 'undefined' ? '' : + opt_oldContents; + this.newContents_ = typeof opt_newContents == 'undefined' ? '' : + opt_newContents; }; Blockly.utils.object.inherits(Blockly.Events.CommentChange, Blockly.Events.CommentBase); @@ -154,18 +166,18 @@ Blockly.Events.CommentChange.prototype.run = function(forward) { /** * Class for a comment creation event. - * @param {Blockly.WorkspaceComment} comment The created comment. - * Null for a blank event. + * @param {!Blockly.WorkspaceComment=} opt_comment The created comment. + * Undefined for a blank event. * @extends {Blockly.Events.CommentBase} * @constructor */ -Blockly.Events.CommentCreate = function(comment) { - if (!comment) { +Blockly.Events.CommentCreate = function(opt_comment) { + Blockly.Events.CommentCreate.superClass_.constructor.call(this, opt_comment); + if (!opt_comment) { return; // Blank event to be populated by fromJson. } - Blockly.Events.CommentCreate.superClass_.constructor.call(this, comment); - this.xml = comment.toXmlWithXY(); + this.xml = opt_comment.toXmlWithXY(); }; Blockly.utils.object.inherits(Blockly.Events.CommentCreate, Blockly.Events.CommentBase); @@ -228,18 +240,18 @@ Blockly.Events.CommentCreateDeleteHelper = function(event, create) { }; /** * Class for a comment deletion event. - * @param {Blockly.WorkspaceComment} comment The deleted comment. - * Null for a blank event. + * @param {!Blockly.WorkspaceComment=} opt_comment The deleted comment. + * Undefined for a blank event. * @extends {Blockly.Events.CommentBase} * @constructor */ -Blockly.Events.CommentDelete = function(comment) { - if (!comment) { +Blockly.Events.CommentDelete = function(opt_comment) { + Blockly.Events.CommentDelete.superClass_.constructor.call(this, opt_comment); + if (!opt_comment) { return; // Blank event to be populated by fromJson. } - Blockly.Events.CommentDelete.superClass_.constructor.call(this, comment); - this.xml = comment.toXmlWithXY(); + this.xml = opt_comment.toXmlWithXY(); }; Blockly.utils.object.inherits(Blockly.Events.CommentDelete, Blockly.Events.CommentBase); @@ -278,29 +290,29 @@ Blockly.Events.CommentDelete.prototype.run = function(forward) { /** * Class for a comment move event. Created before the move. - * @param {Blockly.WorkspaceComment} comment The comment that is being moved. - * Null for a blank event. + * @param {!Blockly.WorkspaceComment=} opt_comment The comment that is being + * moved. Undefined for a blank event. * @extends {Blockly.Events.CommentBase} * @constructor */ -Blockly.Events.CommentMove = function(comment) { - if (!comment) { +Blockly.Events.CommentMove = function(opt_comment) { + Blockly.Events.CommentMove.superClass_.constructor.call(this, opt_comment); + if (!opt_comment) { return; // Blank event to be populated by fromJson. } - Blockly.Events.CommentMove.superClass_.constructor.call(this, comment); /** * The comment that is being moved. Will be cleared after recording the new * location. * @type {Blockly.WorkspaceComment} */ - this.comment_ = comment; + this.comment_ = opt_comment; /** * The location before the move, in workspace coordinates. * @type {!Blockly.utils.Coordinate} */ - this.oldCoordinate_ = comment.getXY(); + this.oldCoordinate_ = opt_comment.getXY(); /** * The location after the move, in workspace coordinates. @@ -394,3 +406,12 @@ Blockly.Events.CommentMove.prototype.run = function(forward) { var current = comment.getXY(); comment.moveBy(target.x - current.x, target.y - current.y); }; + +Blockly.registry.register(Blockly.registry.Type.EVENT, + Blockly.Events.COMMENT_CREATE, Blockly.Events.CommentCreate); +Blockly.registry.register(Blockly.registry.Type.EVENT, + Blockly.Events.COMMENT_CHANGE, Blockly.Events.CommentChange); +Blockly.registry.register(Blockly.registry.Type.EVENT, + Blockly.Events.COMMENT_MOVE, Blockly.Events.CommentMove); +Blockly.registry.register(Blockly.registry.Type.EVENT, + Blockly.Events.COMMENT_DELETE, Blockly.Events.CommentDelete); diff --git a/core/xml.js b/core/xml.js index 45b3e0ca67e..6fa10c5a3e7 100644 --- a/core/xml.js +++ b/core/xml.js @@ -74,15 +74,15 @@ Blockly.Xml.variablesToDom = function(variableList) { * Encode a block subtree as XML with XY coordinates. * @param {!Blockly.Block} block The root block to encode. * @param {boolean=} opt_noId True if the encoder should skip the block ID. - * @return {!Element} Tree of XML elements. + * @return {!Element|!DocumentFragment} Tree of XML elements or an empty document + * fragment if the block was an insertion marker. */ Blockly.Xml.blockToDomWithXY = function(block, opt_noId) { if (block.isInsertionMarker()) { // Skip over insertion markers. block = block.getChildren(false)[0]; if (!block) { - // Disappears when appended. Cast to ANY b/c DocumentFragment -> Element - // is invalid. We have to cast to ANY in between. - return /** @type{?} */ (new DocumentFragment()); + // Disappears when appended. + return new DocumentFragment(); } } @@ -138,7 +138,8 @@ Blockly.Xml.allFieldsToDom_ = function(block, element) { * Encode a block subtree as XML. * @param {!Blockly.Block} block The root block to encode. * @param {boolean=} opt_noId True if the encoder should skip the block ID. - * @return {!Element} Tree of XML elements. + * @return {!Element|!DocumentFragment} Tree of XML elements or an empty document + * fragment if the block was an insertion marker. */ Blockly.Xml.blockToDom = function(block, opt_noId) { // Skip over insertion markers. @@ -147,9 +148,8 @@ Blockly.Xml.blockToDom = function(block, opt_noId) { if (child) { return Blockly.Xml.blockToDom(child); } else { - // Disappears when appended. Cast to ANY b/c DocumentFragment -> Element - // is invalid. We have to cast to ANY in between. - return /** @type{?} */ (new DocumentFragment()); + // Disappears when appended. + return new DocumentFragment(); } } @@ -311,17 +311,6 @@ Blockly.Xml.cloneShadow_ = function(shadow, opt_noId) { */ Blockly.Xml.domToText = function(dom) { var text = Blockly.utils.xml.domToText(dom); - // Replace line breaks in text content with ' ' to make them single line. - // E.g. hello\nworld -> hello world - // Do not replace line breaks between tags. - // E.g. ...\n is unchanged. - // Can't use global flag on regexp since backtracking is needed. - var regexp = /(<[^/](?:[^>]*[^/])?>[^<]*)\n([^<]*<\/)/; - var oldText; - do { - oldText = text; - text = text.replace(regexp, '$1 $2'); - } while (text != oldText); // Unpack self-closing tags. These tags fail when embedded in HTML. // -> return text.replace(/<(\w+)([^<]*)\/>/g, '<$1$2>'); @@ -498,7 +487,7 @@ Blockly.Xml.appendDomToWorkspace = function(xml, workspace) { var bbox; // Bounding box of the current blocks. // First check if we have a workspaceSvg, otherwise the blocks have no shape // and the position does not matter. - if (workspace.hasOwnProperty('scale')) { + if (Object.prototype.hasOwnProperty.call(workspace, 'scale')) { bbox = workspace.getBlocksBoundingBox(); } // Load the new blocks into the workspace and get the IDs of the new blocks. @@ -661,11 +650,8 @@ Blockly.Xml.domToBlockHeadless_ = function(xmlBlock, workspace) { } } } - // Use the shadow block if there is no child block. - if (!childBlockElement && childShadowElement) { - childBlockElement = childShadowElement; - } + var callInitSvg = false; var name = xmlChild.getAttribute('name'); var xmlChildElement = /** @type {!Element} */ (xmlChild); switch (xmlChild.nodeName.toLowerCase()) { @@ -675,7 +661,7 @@ Blockly.Xml.domToBlockHeadless_ = function(xmlBlock, workspace) { block.domToMutation(xmlChildElement); if (block.initSvg) { // Mutation may have added some elements that need initializing. - block.initSvg(); + callInitSvg = true; } } break; @@ -719,9 +705,6 @@ Blockly.Xml.domToBlockHeadless_ = function(xmlBlock, workspace) { prototypeName); break; } - if (childShadowElement) { - input.connection.setShadowDom(childShadowElement); - } if (childBlockElement) { blockChild = Blockly.Xml.domToBlockHeadless_(childBlockElement, workspace); @@ -734,11 +717,12 @@ Blockly.Xml.domToBlockHeadless_ = function(xmlBlock, workspace) { 'Child block does not have output or previous statement.'); } } + // Set shadow after so we don't create a shadow we delete immediately. + if (childShadowElement) { + input.connection.setShadowDom(childShadowElement); + } break; case 'next': - if (childShadowElement && block.nextConnection) { - block.nextConnection.setShadowDom(childShadowElement); - } if (childBlockElement) { if (!block.nextConnection) { throw TypeError('Next statement does not exist.'); @@ -754,6 +738,10 @@ Blockly.Xml.domToBlockHeadless_ = function(xmlBlock, workspace) { } block.nextConnection.connect(blockChild.previousConnection); } + // Set shadow after so we don't create a shadow we delete immediately. + if (childShadowElement && block.nextConnection) { + block.nextConnection.setShadowDom(childShadowElement); + } break; default: // Unknown tag; ignore. Same principle as HTML parsers. @@ -761,6 +749,11 @@ Blockly.Xml.domToBlockHeadless_ = function(xmlBlock, workspace) { } } + if (callInitSvg) { + // InitSvg needs to be called after variable fields are loaded. + block.initSvg(); + } + var inline = xmlBlock.getAttribute('inline'); if (inline) { block.setInputsInline(inline == 'true'); @@ -821,7 +814,8 @@ Blockly.Xml.domToField_ = function(block, fieldName, xml) { /** * Remove any 'next' block (statements in a stack). - * @param {!Element} xmlBlock XML block element. + * @param {!Element|!DocumentFragment} xmlBlock XML block element or an empty + * DocumentFragment if the block was an insertion marker. */ Blockly.Xml.deleteNext = function(xmlBlock) { for (var i = 0, child; (child = xmlBlock.childNodes[i]); i++) { diff --git a/core/zoom_controls.js b/core/zoom_controls.js index 802b8ce9191..867fead0d92 100644 --- a/core/zoom_controls.js +++ b/core/zoom_controls.js @@ -16,6 +16,7 @@ goog.require('Blockly.Css'); goog.require('Blockly.Scrollbar'); goog.require('Blockly.Touch'); goog.require('Blockly.utils.dom'); +goog.require('Blockly.utils.Svg'); /** @@ -29,6 +30,59 @@ Blockly.ZoomControls = function(workspace) { * @private */ this.workspace_ = workspace; + + /** + * A handle to use to unbind the mouse down event handler for zoom reset + * button. Opaque data returned from Blockly.bindEventWithChecks_. + * @type {?Blockly.EventData} + * @private + */ + this.onZoomResetWrapper_ = null; + + /** + * A handle to use to unbind the mouse down event handler for zoom in button. + * Opaque data returned from Blockly.bindEventWithChecks_. + * @type {?Blockly.EventData} + * @private + */ + this.onZoomInWrapper_ = null; + + /** + * A handle to use to unbind the mouse down event handler for zoom out button. + * Opaque data returned from Blockly.bindEventWithChecks_. + * @type {?Blockly.EventData} + * @private + */ + this.onZoomOutWrapper_ = null; + + /** + * The vertical distance between the workspace bottom edge and the control. + * The value is initialized during `init`. + * @type {?number} + * @private + */ + this.verticalSpacing_ = null; + + /** + * The zoom in svg element. + * @type {SVGGElement} + * @private + */ + this.zoomInGroup_ = null; + + /** + * The zoom out svg element. + * @type {SVGGElement} + * @private + */ + this.zoomOutGroup_ = null; + + /** + * The zoom reset svg element. + * @type {SVGGElement} + * @private + */ + this.zoomResetGroup_ = null; }; /** @@ -80,13 +134,14 @@ Blockly.ZoomControls.prototype.left_ = 0; */ Blockly.ZoomControls.prototype.top_ = 0; + /** * Create the zoom controls. * @return {!SVGElement} The zoom controls SVG group. */ Blockly.ZoomControls.prototype.createDom = function() { - this.svgGroup_ = - Blockly.utils.dom.createSvgElement('g', {}, null); + this.svgGroup_ = Blockly.utils.dom.createSvgElement( + Blockly.utils.Svg.G, {}, null); // Each filter/pattern needs a unique ID for the case of multiple Blockly // instances on a page. Browser behaviour becomes undefined otherwise. @@ -122,6 +177,15 @@ Blockly.ZoomControls.prototype.dispose = function() { if (this.svgGroup_) { Blockly.utils.dom.removeNode(this.svgGroup_); } + if (this.onZoomResetWrapper_) { + Blockly.unbindEvent_(this.onZoomResetWrapper_); + } + if (this.onZoomInWrapper_) { + Blockly.unbindEvent_(this.onZoomInWrapper_); + } + if (this.onZoomOutWrapper_) { + Blockly.unbindEvent_(this.onZoomOutWrapper_); + } }; /** @@ -183,21 +247,24 @@ Blockly.ZoomControls.prototype.createZoomOutSvg_ = function(rnd) { clip-path="url(#blocklyZoomoutClipPath837493)"> */ - var ws = this.workspace_; - this.zoomOutGroup_ = Blockly.utils.dom.createSvgElement('g', + this.zoomOutGroup_ = Blockly.utils.dom.createSvgElement( + Blockly.utils.Svg.G, {'class': 'blocklyZoom'}, this.svgGroup_); - var clip = Blockly.utils.dom.createSvgElement('clipPath', + var clip = Blockly.utils.dom.createSvgElement( + Blockly.utils.Svg.CLIPPATH, { 'id': 'blocklyZoomoutClipPath' + rnd }, this.zoomOutGroup_); - Blockly.utils.dom.createSvgElement('rect', + Blockly.utils.dom.createSvgElement( + Blockly.utils.Svg.RECT, { 'width': 32, 'height': 32, }, clip); - var zoomoutSvg = Blockly.utils.dom.createSvgElement('image', + var zoomoutSvg = Blockly.utils.dom.createSvgElement( + Blockly.utils.Svg.IMAGE, { 'width': Blockly.SPRITE.width, 'height': Blockly.SPRITE.height, @@ -207,16 +274,11 @@ Blockly.ZoomControls.prototype.createZoomOutSvg_ = function(rnd) { }, this.zoomOutGroup_); zoomoutSvg.setAttributeNS(Blockly.utils.dom.XLINK_NS, 'xlink:href', - ws.options.pathToMedia + Blockly.SPRITE.url); + this.workspace_.options.pathToMedia + Blockly.SPRITE.url); // Attach listener. - Blockly.bindEventWithChecks_(zoomoutSvg, 'mousedown', null, function(e) { - ws.markFocused(); - ws.zoomCenter(-1); - Blockly.Touch.clearTouchIdentifier(); // Don't block future drags. - e.stopPropagation(); // Don't start a workspace scroll. - e.preventDefault(); // Stop double-clicking from selecting text. - }); + this.onZoomOutWrapper_ = Blockly.bindEventWithChecks_( + this.zoomOutGroup_, 'mousedown', null, this.zoom_.bind(this, -1)); }; /** @@ -236,21 +298,24 @@ Blockly.ZoomControls.prototype.createZoomInSvg_ = function(rnd) { clip-path="url(#blocklyZoominClipPath837493)"> */ - var ws = this.workspace_; - this.zoomInGroup_ = Blockly.utils.dom.createSvgElement('g', + this.zoomInGroup_ = Blockly.utils.dom.createSvgElement( + Blockly.utils.Svg.G, {'class': 'blocklyZoom'}, this.svgGroup_); - var clip = Blockly.utils.dom.createSvgElement('clipPath', + var clip = Blockly.utils.dom.createSvgElement( + Blockly.utils.Svg.CLIPPATH, { 'id': 'blocklyZoominClipPath' + rnd }, this.zoomInGroup_); - Blockly.utils.dom.createSvgElement('rect', + Blockly.utils.dom.createSvgElement( + Blockly.utils.Svg.RECT, { 'width': 32, 'height': 32, }, clip); - var zoominSvg = Blockly.utils.dom.createSvgElement('image', + var zoominSvg = Blockly.utils.dom.createSvgElement( + Blockly.utils.Svg.IMAGE, { 'width': Blockly.SPRITE.width, 'height': Blockly.SPRITE.height, @@ -260,16 +325,29 @@ Blockly.ZoomControls.prototype.createZoomInSvg_ = function(rnd) { }, this.zoomInGroup_); zoominSvg.setAttributeNS(Blockly.utils.dom.XLINK_NS, 'xlink:href', - ws.options.pathToMedia + Blockly.SPRITE.url); + this.workspace_.options.pathToMedia + Blockly.SPRITE.url); // Attach listener. - Blockly.bindEventWithChecks_(zoominSvg, 'mousedown', null, function(e) { - ws.markFocused(); - ws.zoomCenter(1); - Blockly.Touch.clearTouchIdentifier(); // Don't block future drags. - e.stopPropagation(); // Don't start a workspace scroll. - e.preventDefault(); // Stop double-clicking from selecting text. - }); + this.onZoomInWrapper_ = Blockly.bindEventWithChecks_( + this.zoomInGroup_, 'mousedown', null, this.zoom_.bind(this, 1)); +}; + +/** + * Handles a mouse down event on the zoom in or zoom out buttons on the + * workspace. + * @param {number} amount Amount of zooming. Negative amount values zoom out, + * and positive amount values zoom in. + * @param {!Event} e A mouse down event. + * @private + */ +Blockly.ZoomControls.prototype.zoom_ = function(amount, e) { + this.workspace_.markFocused(); + var oldZoom = this.workspace_.scale; + this.workspace_.zoomCenter(amount); + this.fireZoomEvent_(oldZoom); + Blockly.Touch.clearTouchIdentifier(); // Don't block future drags. + e.stopPropagation(); // Don't start a workspace scroll. + e.preventDefault(); // Stop double-clicking from selecting text. }; /** @@ -289,21 +367,24 @@ Blockly.ZoomControls.prototype.createZoomResetSvg_ = function(rnd) { clip-path="url(#blocklyZoomresetClipPath837493)"> */ - var ws = this.workspace_; - this.zoomResetGroup_ = Blockly.utils.dom.createSvgElement('g', + this.zoomResetGroup_ = Blockly.utils.dom.createSvgElement( + Blockly.utils.Svg.G, {'class': 'blocklyZoom'}, this.svgGroup_); - var clip = Blockly.utils.dom.createSvgElement('clipPath', + var clip = Blockly.utils.dom.createSvgElement( + Blockly.utils.Svg.CLIPPATH, { 'id': 'blocklyZoomresetClipPath' + rnd }, this.zoomResetGroup_); - Blockly.utils.dom.createSvgElement('rect', + Blockly.utils.dom.createSvgElement( + Blockly.utils.Svg.RECT, { 'width': 32, 'height': 32 }, clip); - var zoomresetSvg = Blockly.utils.dom.createSvgElement('image', + var zoomresetSvg = Blockly.utils.dom.createSvgElement( + Blockly.utils.Svg.IMAGE, { 'width': Blockly.SPRITE.width, 'height': Blockly.SPRITE.height, @@ -312,19 +393,40 @@ Blockly.ZoomControls.prototype.createZoomResetSvg_ = function(rnd) { }, this.zoomResetGroup_); zoomresetSvg.setAttributeNS(Blockly.utils.dom.XLINK_NS, 'xlink:href', - ws.options.pathToMedia + Blockly.SPRITE.url); + this.workspace_.options.pathToMedia + Blockly.SPRITE.url); // Attach event listeners. - Blockly.bindEventWithChecks_(zoomresetSvg, 'mousedown', null, function(e) { - ws.markFocused(); - ws.setScale(ws.options.zoomOptions.startScale); - ws.beginCanvasTransition(); - ws.scrollCenter(); - setTimeout(ws.endCanvasTransition.bind(ws), 500); - Blockly.Touch.clearTouchIdentifier(); // Don't block future drags. - e.stopPropagation(); // Don't start a workspace scroll. - e.preventDefault(); // Stop double-clicking from selecting text. - }); + this.onZoomResetWrapper_ = Blockly.bindEventWithChecks_( + this.zoomResetGroup_, 'mousedown', null, this.resetZoom_.bind(this)); +}; + +/** + * Handles a mouse down event on the reset zoom button on the workspace. + * @param {!Event} e A mouse down event. + * @private + */ +Blockly.ZoomControls.prototype.resetZoom_ = function(e) { + this.workspace_.markFocused(); + var oldZoom = this.workspace_.scale; + this.workspace_.setScale(this.workspace_.options.zoomOptions.startScale); + this.workspace_.beginCanvasTransition(); + this.workspace_.scrollCenter(); + setTimeout(this.workspace_.endCanvasTransition.bind(this.workspace_), 500); + this.fireZoomEvent_(oldZoom); + Blockly.Touch.clearTouchIdentifier(); // Don't block future drags. + e.stopPropagation(); // Don't start a workspace scroll. + e.preventDefault(); // Stop double-clicking from selecting text. +}; + +/** + * Fires a zoom control ui event. + * @param {number} oldZoom The workspace scale before zoom happened. + * @private + */ +Blockly.ZoomControls.prototype.fireZoomEvent_ = function(oldZoom) { + var uiEvent = new Blockly.Events.Ui(null, 'zoom', oldZoom, this.workspace_.scale); + uiEvent.workspaceId = this.workspace_.id; + Blockly.Events.fire(uiEvent); }; /** diff --git a/dart_compressed.js b/dart_compressed.js index d13cfeb8d31..d02ea044fe6 100644 --- a/dart_compressed.js +++ b/dart_compressed.js @@ -16,7 +16,7 @@ Blockly.Dart.ORDER_CASCADE=15;Blockly.Dart.ORDER_ASSIGNMENT=16;Blockly.Dart.ORDE Blockly.Dart.init=function(a){Blockly.Dart.definitions_=Object.create(null);Blockly.Dart.functionNames_=Object.create(null);Blockly.Dart.variableDB_?Blockly.Dart.variableDB_.reset():Blockly.Dart.variableDB_=new Blockly.Names(Blockly.Dart.RESERVED_WORDS_);Blockly.Dart.variableDB_.setVariableMap(a.getVariableMap());for(var b=[],c=Blockly.Variables.allDeveloperVariables(a),d=0;dc&&(a=a+" - "+-c,g=Blockly.Dart.ORDER_ADDITIVE); @@ -30,14 +30,14 @@ Blockly.Dart.colour_blend=function(a){var b=Blockly.Dart.valueToCode(a,"COLOUR1" Blockly.Dart.lists_repeat=function(a){var b=Blockly.Dart.valueToCode(a,"ITEM",Blockly.Dart.ORDER_NONE)||"null";return["new List.filled("+(Blockly.Dart.valueToCode(a,"NUM",Blockly.Dart.ORDER_NONE)||"0")+", "+b+")",Blockly.Dart.ORDER_UNARY_POSTFIX]};Blockly.Dart.lists_length=function(a){return[(Blockly.Dart.valueToCode(a,"VALUE",Blockly.Dart.ORDER_UNARY_POSTFIX)||"[]")+".length",Blockly.Dart.ORDER_UNARY_POSTFIX]}; Blockly.Dart.lists_isEmpty=function(a){return[(Blockly.Dart.valueToCode(a,"VALUE",Blockly.Dart.ORDER_UNARY_POSTFIX)||"[]")+".isEmpty",Blockly.Dart.ORDER_UNARY_POSTFIX]}; Blockly.Dart.lists_indexOf=function(a){var b="FIRST"==a.getFieldValue("END")?"indexOf":"lastIndexOf",c=Blockly.Dart.valueToCode(a,"FIND",Blockly.Dart.ORDER_NONE)||"''";b=(Blockly.Dart.valueToCode(a,"VALUE",Blockly.Dart.ORDER_UNARY_POSTFIX)||"[]")+"."+b+"("+c+")";return a.workspace.options.oneBasedIndex?[b+" + 1",Blockly.Dart.ORDER_ADDITIVE]:[b,Blockly.Dart.ORDER_UNARY_POSTFIX]}; -Blockly.Dart.lists_getIndex=function(a){function b(){var a=Blockly.Dart.variableDB_.getDistinctName("tmp_list",Blockly.VARIABLE_CATEGORY_NAME),b="List "+a+" = "+e+";\n";e=a;return b}var c=a.getFieldValue("MODE")||"GET",d=a.getFieldValue("WHERE")||"FROM_START",e=Blockly.Dart.valueToCode(a,"VALUE","RANDOM"==d||"FROM_END"==d?Blockly.Dart.ORDER_NONE:Blockly.Dart.ORDER_UNARY_POSTFIX)||"[]";if(("RANDOM"!=d||"REMOVE"!=c)&&"FROM_END"!=d||e.match(/^\w+$/))switch(d){case "FIRST":if("GET"==c)return[e+".first", +Blockly.Dart.lists_getIndex=function(a){function b(){var f=Blockly.Dart.variableDB_.getDistinctName("tmp_list",Blockly.VARIABLE_CATEGORY_NAME),g="List "+f+" = "+e+";\n";e=f;return g}var c=a.getFieldValue("MODE")||"GET",d=a.getFieldValue("WHERE")||"FROM_START",e=Blockly.Dart.valueToCode(a,"VALUE","RANDOM"==d||"FROM_END"==d?Blockly.Dart.ORDER_NONE:Blockly.Dart.ORDER_UNARY_POSTFIX)||"[]";if(("RANDOM"!=d||"REMOVE"!=c)&&"FROM_END"!=d||e.match(/^\w+$/))switch(d){case "FIRST":if("GET"==c)return[e+".first", Blockly.Dart.ORDER_UNARY_POSTFIX];if("GET_REMOVE"==c)return[e+".removeAt(0)",Blockly.Dart.ORDER_UNARY_POSTFIX];if("REMOVE"==c)return e+".removeAt(0);\n";break;case "LAST":if("GET"==c)return[e+".last",Blockly.Dart.ORDER_UNARY_POSTFIX];if("GET_REMOVE"==c)return[e+".removeLast()",Blockly.Dart.ORDER_UNARY_POSTFIX];if("REMOVE"==c)return e+".removeLast();\n";break;case "FROM_START":d=Blockly.Dart.getAdjusted(a,"AT");if("GET"==c)return[e+"["+d+"]",Blockly.Dart.ORDER_UNARY_POSTFIX];if("GET_REMOVE"==c)return[e+ ".removeAt("+d+")",Blockly.Dart.ORDER_UNARY_POSTFIX];if("REMOVE"==c)return e+".removeAt("+d+");\n";break;case "FROM_END":d=Blockly.Dart.getAdjusted(a,"AT",1,!1,Blockly.Dart.ORDER_ADDITIVE);if("GET"==c)return[e+"["+e+".length - "+d+"]",Blockly.Dart.ORDER_UNARY_POSTFIX];if("GET_REMOVE"==c||"REMOVE"==c){a=e+".removeAt("+e+".length - "+d+")";if("GET_REMOVE"==c)return[a,Blockly.Dart.ORDER_UNARY_POSTFIX];if("REMOVE"==c)return a+";\n"}break;case "RANDOM":Blockly.Dart.definitions_.import_dart_math="import 'dart:math' as Math;"; if("REMOVE"==c)return c=Blockly.Dart.variableDB_.getDistinctName("tmp_x",Blockly.VARIABLE_CATEGORY_NAME),"int "+c+" = new Math.Random().nextInt("+e+".length);\n"+(e+".removeAt("+c+");\n");if("GET"==c)return c=Blockly.Dart.provideFunction_("lists_get_random_item",["dynamic "+Blockly.Dart.FUNCTION_NAME_PLACEHOLDER_+"(List my_list) {"," int x = new Math.Random().nextInt(my_list.length);"," return my_list[x];","}"]),[c+"("+e+")",Blockly.Dart.ORDER_UNARY_POSTFIX];if("GET_REMOVE"==c)return c=Blockly.Dart.provideFunction_("lists_remove_random_item", ["dynamic "+Blockly.Dart.FUNCTION_NAME_PLACEHOLDER_+"(List my_list) {"," int x = new Math.Random().nextInt(my_list.length);"," return my_list.removeAt(x);","}"]),[c+"("+e+")",Blockly.Dart.ORDER_UNARY_POSTFIX]}else{if("RANDOM"==d)return Blockly.Dart.definitions_.import_dart_math="import 'dart:math' as Math;",a=b(),c=Blockly.Dart.variableDB_.getDistinctName("tmp_x",Blockly.VARIABLE_CATEGORY_NAME),a+("int "+c+" = new Math.Random().nextInt("+e+".length);\n")+(e+".removeAt("+c+");\n");if("REMOVE"==c)return d= Blockly.Dart.getAdjusted(a,"AT",1,!1,Blockly.Dart.ORDER_ADDITIVE),a=b(),a+=e+".removeAt("+e+".length - "+d+");\n";if("GET"==c)return d=Blockly.Dart.getAdjusted(a,"AT",1),c=Blockly.Dart.provideFunction_("lists_get_from_end",["dynamic "+Blockly.Dart.FUNCTION_NAME_PLACEHOLDER_+"(List my_list, num x) {"," x = my_list.length - x;"," return my_list[x];","}"]),[c+"("+e+", "+d+")",Blockly.Dart.ORDER_UNARY_POSTFIX];if("GET_REMOVE"==c)return d=Blockly.Dart.getAdjusted(a,"AT",1),c=Blockly.Dart.provideFunction_("lists_remove_from_end", ["dynamic "+Blockly.Dart.FUNCTION_NAME_PLACEHOLDER_+"(List my_list, num x) {"," x = my_list.length - x;"," return my_list.removeAt(x);","}"]),[c+"("+e+", "+d+")",Blockly.Dart.ORDER_UNARY_POSTFIX]}throw Error("Unhandled combination (lists_getIndex).");}; -Blockly.Dart.lists_setIndex=function(a){function b(){if(e.match(/^\w+$/))return"";var a=Blockly.Dart.variableDB_.getDistinctName("tmp_list",Blockly.VARIABLE_CATEGORY_NAME),b="List "+a+" = "+e+";\n";e=a;return b}var c=a.getFieldValue("MODE")||"GET",d=a.getFieldValue("WHERE")||"FROM_START",e=Blockly.Dart.valueToCode(a,"LIST",Blockly.Dart.ORDER_UNARY_POSTFIX)||"[]",f=Blockly.Dart.valueToCode(a,"TO",Blockly.Dart.ORDER_ASSIGNMENT)||"null";switch(d){case "FIRST":if("SET"==c)return e+"[0] = "+f+";\n";if("INSERT"== +Blockly.Dart.lists_setIndex=function(a){function b(){if(e.match(/^\w+$/))return"";var g=Blockly.Dart.variableDB_.getDistinctName("tmp_list",Blockly.VARIABLE_CATEGORY_NAME),k="List "+g+" = "+e+";\n";e=g;return k}var c=a.getFieldValue("MODE")||"GET",d=a.getFieldValue("WHERE")||"FROM_START",e=Blockly.Dart.valueToCode(a,"LIST",Blockly.Dart.ORDER_UNARY_POSTFIX)||"[]",f=Blockly.Dart.valueToCode(a,"TO",Blockly.Dart.ORDER_ASSIGNMENT)||"null";switch(d){case "FIRST":if("SET"==c)return e+"[0] = "+f+";\n";if("INSERT"== c)return e+".insert(0, "+f+");\n";break;case "LAST":if("SET"==c)return a=b(),a+(e+"["+e+".length - 1] = "+f+";\n");if("INSERT"==c)return e+".add("+f+");\n";break;case "FROM_START":d=Blockly.Dart.getAdjusted(a,"AT");if("SET"==c)return e+"["+d+"] = "+f+";\n";if("INSERT"==c)return e+".insert("+d+", "+f+");\n";break;case "FROM_END":d=Blockly.Dart.getAdjusted(a,"AT",1,!1,Blockly.Dart.ORDER_ADDITIVE);a=b();if("SET"==c)return a+(e+"["+e+".length - "+d+"] = "+f+";\n");if("INSERT"==c)return a+(e+".insert("+ e+".length - "+d+", "+f+");\n");break;case "RANDOM":Blockly.Dart.definitions_.import_dart_math="import 'dart:math' as Math;";a=b();d=Blockly.Dart.variableDB_.getDistinctName("tmp_x",Blockly.VARIABLE_CATEGORY_NAME);a+="int "+d+" = new Math.Random().nextInt("+e+".length);\n";if("SET"==c)return a+(e+"["+d+"] = "+f+";\n");if("INSERT"==c)return a+(e+".insert("+d+", "+f+");\n")}throw Error("Unhandled combination (lists_setIndex).");}; Blockly.Dart.lists_getSublist=function(a){var b=Blockly.Dart.valueToCode(a,"LIST",Blockly.Dart.ORDER_UNARY_POSTFIX)||"[]",c=a.getFieldValue("WHERE1"),d=a.getFieldValue("WHERE2");if(b.match(/^\w+$/)||"FROM_END"!=c&&"FROM_START"==d){switch(c){case "FROM_START":var e=Blockly.Dart.getAdjusted(a,"AT1");break;case "FROM_END":e=Blockly.Dart.getAdjusted(a,"AT1",1,!1,Blockly.Dart.ORDER_ADDITIVE);e=b+".length - "+e;break;case "FIRST":e="0";break;default:throw Error("Unhandled option (lists_getSublist).");}switch(d){case "FROM_START":var f= @@ -86,7 +86,7 @@ Blockly.Dart.math_random_int=function(a){Blockly.Dart.definitions_.import_dart_m "}"])+"("+b+", "+a+")",Blockly.Dart.ORDER_UNARY_POSTFIX]};Blockly.Dart.math_random_float=function(a){Blockly.Dart.definitions_.import_dart_math="import 'dart:math' as Math;";return["new Math.Random().nextDouble()",Blockly.Dart.ORDER_UNARY_POSTFIX]}; Blockly.Dart.math_atan2=function(a){Blockly.Dart.definitions_.import_dart_math="import 'dart:math' as Math;";var b=Blockly.Dart.valueToCode(a,"X",Blockly.Dart.ORDER_NONE)||"0";return["Math.atan2("+(Blockly.Dart.valueToCode(a,"Y",Blockly.Dart.ORDER_NONE)||"0")+", "+b+") / Math.pi * 180",Blockly.Dart.ORDER_MULTIPLICATIVE]};Blockly.Dart.procedures={}; Blockly.Dart.procedures_defreturn=function(a){var b=Blockly.Dart.variableDB_.getName(a.getFieldValue("NAME"),Blockly.PROCEDURE_CATEGORY_NAME),c="";Blockly.Dart.STATEMENT_PREFIX&&(c+=Blockly.Dart.injectId(Blockly.Dart.STATEMENT_PREFIX,a));Blockly.Dart.STATEMENT_SUFFIX&&(c+=Blockly.Dart.injectId(Blockly.Dart.STATEMENT_SUFFIX,a));c&&(c=Blockly.Dart.prefixLines(c,Blockly.Dart.INDENT));var d="";Blockly.Dart.INFINITE_LOOP_TRAP&&(d=Blockly.Dart.prefixLines(Blockly.Dart.injectId(Blockly.Dart.INFINITE_LOOP_TRAP,a), -Blockly.Dart.INDENT));var e=Blockly.Dart.statementToCode(a,"STACK"),f=Blockly.Dart.valueToCode(a,"RETURN",Blockly.Dart.ORDER_NONE)||"",g="";e&&f&&(g=c);f&&(f=Blockly.Dart.INDENT+"return "+f+";\n");for(var m=f?"dynamic":"void",k=[],l=a.getVars(),h=0;h.blocklyPathDark { display: none; } + +/* Privacy link */ +.privacyLink { + font-family: Roboto, Arial, Helvetica, sans-serif; + font-size: small; + text-decoration: none; +} + +.privacyButton { + float: right; +} diff --git a/demos/blockfactory/index.html b/demos/blockfactory/index.html index 8241e129188..ec4d59402c4 100644 --- a/demos/blockfactory/index.html +++ b/demos/blockfactory/index.html @@ -50,6 +50,8 @@

Blockly > +

Block Factory
diff --git a/demos/code/index.html b/demos/code/index.html index 298613f5877..9fd858aeffa 100644 --- a/demos/code/index.html +++ b/demos/code/index.html @@ -27,6 +27,7 @@

Blockly‏ > + Privacy diff --git a/demos/code/msg/en.js b/demos/code/msg/en.js index 8d52cf33305..d853826f0ae 100644 --- a/demos/code/msg/en.js +++ b/demos/code/msg/en.js @@ -17,7 +17,7 @@ var MSG = { listVariable: "list", textVariable: "text", httpRequestError: "There was a problem with the request.", - linkAlert: "Share your blocks with this link:\n\n%1", + linkAlert: "Share your blocks with this public link. We\'ll delete them if not used for a year. They are not associated with your account and handled as per Google\'s Privacy Policy. Please be sure not to include any private information.:\n\n%1", hashError: "Sorry, '%1' doesn't correspond with any saved program.", xmlError: "Could not load your saved file. Perhaps it was created with a different version of Blockly?", badXml: "Error parsing XML:\n%1\n\nSelect 'OK' to abandon your changes or 'Cancel' to further edit the XML." diff --git a/demos/code/style.css b/demos/code/style.css index c24df882865..ef7d9b4d373 100644 --- a/demos/code/style.css +++ b/demos/code/style.css @@ -74,6 +74,7 @@ td.tabon { border-bottom-color: #ddd !important; background-color: #ddd; padding: 5px 19px; + white-space: nowrap; } td.taboff { cursor: pointer; @@ -174,3 +175,10 @@ button { display: table-cell; } } + +/* Privacy link */ +.privacyLink { + font-family: Roboto, Arial, Helvetica, sans-serif; + font-size: small; + text-decoration: none; +} diff --git a/demos/storage/index.html b/demos/storage/index.html index 38877a09201..3bd34f079d1 100644 --- a/demos/storage/index.html +++ b/demos/storage/index.html @@ -21,6 +21,11 @@ background-color: #f9edbe; border: solid 1px #f0c36d; } + .privacyLink { + font-family: Roboto, Arial, Helvetica, sans-serif; + font-size: small; + text-decoration: none; + } @@ -32,7 +37,7 @@

Blockly > + diff --git a/generators/dart.js b/generators/dart.js index da760b32af1..5e531016bf5 100644 --- a/generators/dart.js +++ b/generators/dart.js @@ -176,10 +176,11 @@ Blockly.Dart.quote_ = function(string) { * @return {string} Dart string. * @private */ -Blockly.Dart.multiline_quote_ = function(string) { - // Can't use goog.string.quote since $ must also be escaped. - string = string.replace(/'''/g, '\\\'\\\'\\\''); - return '\'\'\'' + string + '\'\'\''; +Blockly.Dart.multiline_quote_ = function (string) { + var lines = string.split(/\n/g).map(Blockly.Dart.quote_); + // Join with the following, plus a newline: + // + '\n' + + return lines.join(' + \'\\n\' + \n'); }; diff --git a/generators/lua.js b/generators/lua.js index e3b25a33399..047fcff0f8b 100644 --- a/generators/lua.js +++ b/generators/lua.js @@ -151,10 +151,10 @@ Blockly.Lua.quote_ = function(string) { * @private */ Blockly.Lua.multiline_quote_ = function(string) { - string = string.replace(/\\/g, '\\\\') - .replace(/\n/g, '\\\n') - .replace(/'/g, '\\\''); - return '[===' + string + '===]'; + var lines = string.split(/\n/g).map(Blockly.Lua.quote_); + // Join with the following, plus a newline: + // .. '\n' .. + return lines.join(' .. \'\\n\' ..\n'); }; /** diff --git a/generators/php.js b/generators/php.js index 01c50756902..91460dfe5c9 100644 --- a/generators/php.js +++ b/generators/php.js @@ -206,8 +206,12 @@ Blockly.PHP.quote_ = function(string) { * @return {string} PHP string. * @private */ -Blockly.PHP.multiline_quote_ = function(string) { - return '<< b) {"," // Swap a and b to ensure a is smaller."," var c = a;"," a = b;"," b = c;"," }"," return Math.floor(Math.random() * (b - a + 1) + a);", "}"])+"("+b+", "+a+")",Blockly.JavaScript.ORDER_FUNCTION_CALL]};Blockly.JavaScript.math_random_float=function(a){return["Math.random()",Blockly.JavaScript.ORDER_FUNCTION_CALL]};Blockly.JavaScript.math_atan2=function(a){var b=Blockly.JavaScript.valueToCode(a,"X",Blockly.JavaScript.ORDER_COMMA)||"0";return["Math.atan2("+(Blockly.JavaScript.valueToCode(a,"Y",Blockly.JavaScript.ORDER_COMMA)||"0")+", "+b+") / Math.PI * 180",Blockly.JavaScript.ORDER_DIVISION]};Blockly.JavaScript.procedures={}; Blockly.JavaScript.procedures_defreturn=function(a){var b=Blockly.JavaScript.variableDB_.getName(a.getFieldValue("NAME"),Blockly.PROCEDURE_CATEGORY_NAME),c="";Blockly.JavaScript.STATEMENT_PREFIX&&(c+=Blockly.JavaScript.injectId(Blockly.JavaScript.STATEMENT_PREFIX,a));Blockly.JavaScript.STATEMENT_SUFFIX&&(c+=Blockly.JavaScript.injectId(Blockly.JavaScript.STATEMENT_SUFFIX,a));c&&(c=Blockly.JavaScript.prefixLines(c,Blockly.JavaScript.INDENT));var d="";Blockly.JavaScript.INFINITE_LOOP_TRAP&&(d=Blockly.JavaScript.prefixLines(Blockly.JavaScript.injectId(Blockly.JavaScript.INFINITE_LOOP_TRAP, -a),Blockly.JavaScript.INDENT));var e=Blockly.JavaScript.statementToCode(a,"STACK"),f=Blockly.JavaScript.valueToCode(a,"RETURN",Blockly.JavaScript.ORDER_NONE)||"",g="";e&&f&&(g=c);f&&(f=Blockly.JavaScript.INDENT+"return "+f+";\n");for(var k=[],l=a.getVars(),h=0;h", - "lastupdated": "2020-06-25 16:02:02.440339", + "lastupdated": "2020-09-24 04:06:08.758361", "locale": "en", "messagedocumentation" : "qqq" }, diff --git a/msg/json/et.json b/msg/json/et.json index ee759fbe1f9..60f548d1a48 100644 --- a/msg/json/et.json +++ b/msg/json/et.json @@ -9,6 +9,7 @@ ] }, "VARIABLES_DEFAULT_NAME": "objekt", + "UNNAMED_KEY": "nimetu", "TODAY": "Täna", "DUPLICATE_BLOCK": "Tekita duplikaat", "ADD_COMMENT": "Lisa kommentaar", @@ -89,6 +90,7 @@ "IOS_ERROR": "Viga", "IOS_PROCEDURES_INPUTS": "SISEND", "IOS_PROCEDURES_ADD_INPUT": "+ Lisa sisend", + "IOS_PROCEDURES_DUPLICATE_INPUTS_ERROR": "Sellel funktsioonil on dubleerivad sisendid.", "IOS_VARIABLES_ADD_VARIABLE": "+ Lisa muutuja", "IOS_VARIABLES_ADD_BUTTON": "Lisa", "IOS_VARIABLES_RENAME_BUTTON": "Nimeta ümber", @@ -241,6 +243,7 @@ "TEXT_REPLACE_MESSAGE0": "asenda %1 %2-ga %3-s", "TEXT_REPLACE_TOOLTIP": "Asenda mõne teksti esinemine mõnes muus tekstis.", "TEXT_REVERSE_MESSAGE0": "ümberpöördud %1", + "TEXT_REVERSE_TOOLTIP": "Pöörab tekstis tähemärkide järjestuse ümber.", "LISTS_CREATE_EMPTY_TITLE": "tühi loend", "LISTS_CREATE_EMPTY_TOOLTIP": "Tagastab loendi, mille pikkus on 0 ja milles pole ühtegi elementi.", "LISTS_CREATE_WITH_TOOLTIP": "Tekitab mistahes arvust elementidest loendi.", @@ -311,6 +314,7 @@ "LISTS_SPLIT_WITH_DELIMITER": "eraldajaga", "LISTS_SPLIT_TOOLTIP_SPLIT": "Tükeldab teksti eraldajade kohalt ja asetab tükid tekstide loendisse.", "LISTS_SPLIT_TOOLTIP_JOIN": "Ühendab tekstide loendis olevad tükid üheks tekstiks, asetades tükkide vahele eraldaja.", + "LISTS_REVERSE_TOOLTIP": "Loendi koopia ümberpööramine.", "VARIABLES_GET_TOOLTIP": "Tagastab selle muutuja väärtuse.", "VARIABLES_GET_CREATE_SET": "Tekita 'määra „%1“ väärtuseks' plokk", "VARIABLES_SET": "määra %1 väärtuseks %2", @@ -337,5 +341,8 @@ "PROCEDURES_HIGHLIGHT_DEF": "Tõsta funktsiooni definitsioon esile", "PROCEDURES_CREATE_DO": "Tekita '%1' plokk", "PROCEDURES_IFRETURN_TOOLTIP": "Kui väärtus on tõene, tagastatakse teine väärtus.", - "PROCEDURES_IFRETURN_WARNING": "Hoiatus: Seda plokki saab kasutada ainult funktsiooni definitsioonis." + "PROCEDURES_IFRETURN_WARNING": "Hoiatus: Seda plokki saab kasutada ainult funktsiooni definitsioonis.", + "WORKSPACE_COMMENT_DEFAULT_TEXT": "Ütle midagi...", + "WORKSPACE_ARIA_LABEL": "Blockly tööruum", + "COLLAPSED_WARNINGS_WARNING": "Kokkuvajunud plokid sisaldavad hoiatusi." } diff --git a/msg/json/fi.json b/msg/json/fi.json index 1064ddba263..d7927cb6653 100644 --- a/msg/json/fi.json +++ b/msg/json/fi.json @@ -1,6 +1,7 @@ { "@metadata": { "authors": [ + "Actuallyisjoha", "Espeox", "Espertus", "Hopea", @@ -366,5 +367,6 @@ "PROCEDURES_IFRETURN_HELPURL": "http://c2.com/cgi/wiki?GuardClause", "PROCEDURES_IFRETURN_WARNING": "Varoitus: tätä lohkoa voi käyttää vain funktion määrityksessä.", "WORKSPACE_COMMENT_DEFAULT_TEXT": "Sano jotakin...", + "WORKSPACE_ARIA_LABEL": "Blocklyn työnäkymä", "COLLAPSED_WARNINGS_WARNING": "Supistetut lohkot sisältävät varoituksia." } diff --git a/msg/json/fr.json b/msg/json/fr.json index 6d9e85aed81..ee9241e91fb 100644 --- a/msg/json/fr.json +++ b/msg/json/fr.json @@ -31,7 +31,7 @@ "INLINE_INPUTS": "Entrées en ligne", "DELETE_BLOCK": "Supprimer le bloc", "DELETE_X_BLOCKS": "Supprimer %1 blocs", - "DELETE_ALL_BLOCKS": "Supprimer ces %1 blocs ?", + "DELETE_ALL_BLOCKS": "Supprimer ces %1 blocs ?", "CLEAN_UP": "Nettoyer les blocs", "COLLAPSE_BLOCK": "Réduire le bloc", "COLLAPSE_ALL": "Réduire les blocs", @@ -42,20 +42,20 @@ "HELP": "Aide", "UNDO": "Annuler", "REDO": "Refaire", - "CHANGE_VALUE_TITLE": "Modifier la valeur :", + "CHANGE_VALUE_TITLE": "Modifier la valeur :", "RENAME_VARIABLE": "Renommer la variable...", - "RENAME_VARIABLE_TITLE": "Renommer toutes les variables « %1 » en :", + "RENAME_VARIABLE_TITLE": "Renommer toutes les variables « %1 » en :", "NEW_VARIABLE": "Créer une variable...", "NEW_STRING_VARIABLE": "Créer une variable de chaîne...", "NEW_NUMBER_VARIABLE": "Créer une variable numérique...", "NEW_COLOUR_VARIABLE": "Créer une variable de couleur...", - "NEW_VARIABLE_TYPE_TITLE": "Nouveau type de variable :", - "NEW_VARIABLE_TITLE": "Nom de la nouvelle variable :", - "VARIABLE_ALREADY_EXISTS": "Une variable nommée « %1 » existe déjà.", - "VARIABLE_ALREADY_EXISTS_FOR_ANOTHER_TYPE": "Une variable nommée « %1 » existe déjà pour un autre type : « %2 ».", - "DELETE_VARIABLE_CONFIRMATION": "Supprimer %1 utilisations de la variable « %2 » ?", - "CANNOT_DELETE_VARIABLE_PROCEDURE": "Impossible de supprimer la variable « %1 » parce qu’elle fait partie de la définition de la fonction « %2 »", - "DELETE_VARIABLE": "Supprimer la variable « %1 »", + "NEW_VARIABLE_TYPE_TITLE": "Nouveau type de variable :", + "NEW_VARIABLE_TITLE": "Nom de la nouvelle variable :", + "VARIABLE_ALREADY_EXISTS": "Une variable nommée « %1 » existe déjà.", + "VARIABLE_ALREADY_EXISTS_FOR_ANOTHER_TYPE": "Une variable nommée « %1 » existe déjà pour un autre type : « %2 ».", + "DELETE_VARIABLE_CONFIRMATION": "Supprimer %1 utilisations de la variable « %2 » ?", + "CANNOT_DELETE_VARIABLE_PROCEDURE": "Impossible de supprimer la variable « %1 » parce qu’elle fait partie de la définition de la fonction « %2 »", + "DELETE_VARIABLE": "Supprimer la variable « %1 »", "COLOUR_PICKER_HELPURL": "https://fr.wikipedia.org/wiki/Couleur", "COLOUR_PICKER_TOOLTIP": "Choisir une couleur dans la palette.", "COLOUR_RANDOM_TITLE": "couleur aléatoire", @@ -80,15 +80,15 @@ "CONTROLS_WHILEUNTIL_OPERATOR_UNTIL": "répéter jusqu’à", "CONTROLS_WHILEUNTIL_TOOLTIP_WHILE": "Tant qu’une valeur est vraie, alors exécuter des instructions.", "CONTROLS_WHILEUNTIL_TOOLTIP_UNTIL": "Tant qu’une valeur est fausse, alors exécuter des instructions.", - "CONTROLS_FOR_TOOLTIP": "Faire prendre successivement à la variable « %1 » les valeurs entre deux nombres de début et de fin par incrément du pas spécifié et exécuter les instructions spécifiées.", + "CONTROLS_FOR_TOOLTIP": "Faire prendre successivement à la variable « %1 » les valeurs entre deux nombres de début et de fin par incrément du pas spécifié et exécuter les instructions spécifiées.", "CONTROLS_FOR_TITLE": "compter avec %1 de %2 à %3 par %4", "CONTROLS_FOREACH_TITLE": "pour chaque élément %1 dans la liste %2", - "CONTROLS_FOREACH_TOOLTIP": "Pour chaque élément d’une liste, assigner la valeur de l’élément à la variable « %1 », puis exécuter des instructions.", + "CONTROLS_FOREACH_TOOLTIP": "Pour chaque élément d’une liste, assigner la valeur de l’élément à la variable « %1 », puis exécuter des instructions.", "CONTROLS_FLOW_STATEMENTS_OPERATOR_BREAK": "quitter la boucle", "CONTROLS_FLOW_STATEMENTS_OPERATOR_CONTINUE": "passer à l’itération de boucle suivante", "CONTROLS_FLOW_STATEMENTS_TOOLTIP_BREAK": "Sortir de la boucle englobante.", "CONTROLS_FLOW_STATEMENTS_TOOLTIP_CONTINUE": "Sauter le reste de cette boucle, et poursuivre avec l’itération suivante.", - "CONTROLS_FLOW_STATEMENTS_WARNING": "Attention : ce bloc ne devrait être utilisé que dans une boucle.", + "CONTROLS_FLOW_STATEMENTS_WARNING": "Attention : ce bloc ne devrait être utilisé que dans une boucle.", "CONTROLS_IF_TOOLTIP_1": "Si une valeur est vraie, alors exécuter certaines instructions.", "CONTROLS_IF_TOOLTIP_2": "Si une valeur est vraie, alors exécuter le premier bloc d’instructions. Sinon, exécuter le second bloc d’instructions.", "CONTROLS_IF_TOOLTIP_3": "Si la première valeur est vraie, alors exécuter le premier bloc d’instructions. Sinon, si la seconde valeur est vraie, exécuter le second bloc d’instructions.", @@ -135,7 +135,7 @@ "LOGIC_TERNARY_CONDITION": "test", "LOGIC_TERNARY_IF_TRUE": "si vrai", "LOGIC_TERNARY_IF_FALSE": "si faux", - "LOGIC_TERNARY_TOOLTIP": "Vérifier la condition indiquée dans « test ». Si elle est vraie, renvoie la valeur « si vrai » ; sinon renvoie la valeur « si faux ».", + "LOGIC_TERNARY_TOOLTIP": "Vérifie la condition indiquée dans « test ». Si elle est vraie, renvoie la valeur « si vrai » ; sinon renvoie la valeur « si faux ».", "MATH_NUMBER_HELPURL": "https://fr.wikipedia.org/wiki/Nombre", "MATH_NUMBER_TOOLTIP": "Un nombre.", "MATH_ARITHMETIC_HELPURL": "https://fr.wikipedia.org/wiki/Arithm%C3%A9tique", @@ -173,7 +173,7 @@ "MATH_IS_TOOLTIP": "Vérifier si un nombre est pair, impair, premier, entier, positif, négatif ou s’il est divisible par un certain nombre. Renvoie vrai ou faux.", "MATH_CHANGE_HELPURL": "https://fr.wikipedia.org/wiki/Idiome_de_programmation", "MATH_CHANGE_TITLE": "incrémenter %1 de %2", - "MATH_CHANGE_TOOLTIP": "Ajouter un nombre à la variable « %1 ».", + "MATH_CHANGE_TOOLTIP": "Ajouter un nombre à la variable « %1 ».", "MATH_ROUND_HELPURL": "https://fr.wikipedia.org/wiki/Arrondi_(math%C3%A9matiques)", "MATH_ROUND_TOOLTIP": "Arrondir un nombre au-dessus ou au-dessous.", "MATH_ROUND_OPERATOR_ROUND": "arrondir", @@ -207,7 +207,7 @@ "MATH_RANDOM_FLOAT_TITLE_RANDOM": "fraction aléatoire", "MATH_RANDOM_FLOAT_TOOLTIP": "Renvoyer une fraction aléatoire entre 0,0 (inclus) et 1,0 (exclus).", "MATH_ATAN2_HELPURL": "https://fr.wikipedia.org/wiki/Atan2", - "MATH_ATAN2_TITLE": "atan2 de (X : %1 ; Y : %2)", + "MATH_ATAN2_TITLE": "atan2 de (X : %1 , Y : %2)", "MATH_ATAN2_TOOLTIP": "Renvoie l’arc-tangente du point (X, Y) en degrés entre -180 et 180.", "TEXT_TEXT_HELPURL": "https://fr.wikipedia.org/wiki/Cha%C3%AEne_de_caract%C3%A8res", "TEXT_TEXT_TOOLTIP": "Une lettre, un mot ou une ligne de texte.", @@ -217,7 +217,7 @@ "TEXT_CREATE_JOIN_TOOLTIP": "Ajouter, supprimer, ou réordonner des sections pour reconfigurer ce bloc de texte.", "TEXT_CREATE_JOIN_ITEM_TOOLTIP": "Ajouter un élément au texte.", "TEXT_APPEND_TITLE": "ajouter le texte %2 à %1", - "TEXT_APPEND_TOOLTIP": "Ajouter du texte à la variable « %1 ».", + "TEXT_APPEND_TOOLTIP": "Ajouter du texte à la variable « %1 ».", "TEXT_LENGTH_TITLE": "longueur de %1", "TEXT_LENGTH_TOOLTIP": "Renvoie le nombre de lettres (chiffres, ponctuations, symboles et espaces compris) dans le texte fourni.", "TEXT_ISEMPTY_TITLE": "%1 est vide", @@ -339,33 +339,33 @@ "LISTS_REVERSE_MESSAGE0": "inverser %1", "LISTS_REVERSE_TOOLTIP": "Inverser la copie d’une liste.", "VARIABLES_GET_TOOLTIP": "Renvoie la valeur de cette variable.", - "VARIABLES_GET_CREATE_SET": "Créer « définir %1 »", + "VARIABLES_GET_CREATE_SET": "Créer « set %1 »", "VARIABLES_SET": "définir %1 à %2", "VARIABLES_SET_TOOLTIP": "Définit cette variable pour qu’elle soit égale à la valeur de l’entrée.", - "VARIABLES_SET_CREATE_GET": "Créer « obtenir %1 »", + "VARIABLES_SET_CREATE_GET": "Créer « get %1 »", "PROCEDURES_DEFNORETURN_TITLE": "pour", "PROCEDURES_DEFNORETURN_PROCEDURE": "faire quelque chose", - "PROCEDURES_BEFORE_PARAMS": "avec :", - "PROCEDURES_CALL_BEFORE_PARAMS": "avec :", + "PROCEDURES_BEFORE_PARAMS": "avec :", + "PROCEDURES_CALL_BEFORE_PARAMS": "avec :", "PROCEDURES_DEFNORETURN_TOOLTIP": "Crée une fonction sans sortie.", "PROCEDURES_DEFNORETURN_COMMENT": "Décrivez cette fonction...", "PROCEDURES_DEFRETURN_RETURN": "retourner", "PROCEDURES_DEFRETURN_TOOLTIP": "Crée une fonction avec une sortie.", "PROCEDURES_ALLOW_STATEMENTS": "autoriser les ordres", - "PROCEDURES_DEF_DUPLICATE_WARNING": "Attention : cette fonction a des paramètres en double.", + "PROCEDURES_DEF_DUPLICATE_WARNING": "Attention : cette fonction a des paramètres en double.", "PROCEDURES_CALLNORETURN_HELPURL": "https://fr.wikipedia.org/wiki/Sous-programme", - "PROCEDURES_CALLNORETURN_TOOLTIP": "Exécuter la fonction « %1 » définie par l’utilisateur.", + "PROCEDURES_CALLNORETURN_TOOLTIP": "Exécuter la fonction « %1 » définie par l’utilisateur.", "PROCEDURES_CALLRETURN_HELPURL": "https://fr.wikipedia.org/wiki/Sous-programme", - "PROCEDURES_CALLRETURN_TOOLTIP": "Exécuter la fonction « %1 » définie par l’utilisateur et utiliser son résultat.", + "PROCEDURES_CALLRETURN_TOOLTIP": "Exécuter la fonction « %1 » définie par l’utilisateur et utiliser son résultat.", "PROCEDURES_MUTATORCONTAINER_TITLE": "entrées", "PROCEDURES_MUTATORCONTAINER_TOOLTIP": "Ajouter, supprimer, ou réarranger les entrées de cette fonction.", - "PROCEDURES_MUTATORARG_TITLE": "nom de l’entrée :", + "PROCEDURES_MUTATORARG_TITLE": "nom de l’entrée :", "PROCEDURES_MUTATORARG_TOOLTIP": "Ajouter une entrée à la fonction.", "PROCEDURES_HIGHLIGHT_DEF": "Surligner la définition de la fonction", - "PROCEDURES_CREATE_DO": "Créer « %1 »", + "PROCEDURES_CREATE_DO": "Créer « %1 »", "PROCEDURES_IFRETURN_TOOLTIP": "Si une valeur est vraie, alors renvoyer une seconde valeur.", "PROCEDURES_IFRETURN_HELPURL": "http://c2.com/cgi/wiki?GuardClause", - "PROCEDURES_IFRETURN_WARNING": "Attention : ce bloc pourrait n’être utilisé que dans une définition de fonction.", + "PROCEDURES_IFRETURN_WARNING": "Attention : ce bloc ne peut être utilisé que dans une définition de fonction.", "WORKSPACE_COMMENT_DEFAULT_TEXT": "Expliquez quelque chose...", "WORKSPACE_ARIA_LABEL": "Espace de travail de Blocky", "COLLAPSED_WARNINGS_WARNING": "Les blocs repliés contiennent des avertissements." diff --git a/msg/json/kab.json b/msg/json/kab.json index bd64420118f..1958e0c4c31 100644 --- a/msg/json/kab.json +++ b/msg/json/kab.json @@ -300,8 +300,8 @@ "LISTS_GET_SUBLIST_START_FIRST": "awi-d tabdart tasnawant si tazwara", "LISTS_GET_SUBLIST_END_FROM_START": "ar #", "LISTS_GET_SUBLIST_END_FROM_END": "ar # si tagara", - "LISTS_GET_SUBLIST_END_LAST": "ar tagara", - "LISTS_GET_SUBLIST_TOOLTIP": "Ad yernu anɣel n uḥric yettwammlen n tebdart.", + "LISTS_GET_SUBLIST_END_LAST": "ar taggara", + "LISTS_GET_SUBLIST_TOOLTIP": "Ad yernu anɣel n uḥric yettwamlen n tebdart.", "LISTS_SORT_HELPURL": "https://github.com/google/blockly/wiki/Lists#sorting-a-list", "LISTS_SORT_TITLE": "smizzwer %1 %2 %3", "LISTS_SORT_TOOLTIP": "Smizzwer anɣel n tebdart.", @@ -313,37 +313,37 @@ "LISTS_SPLIT_LIST_FROM_TEXT": "rnu tabdart seg uḍris", "LISTS_SPLIT_TEXT_FROM_LIST": "rnu aḍris si tebdart", "LISTS_SPLIT_WITH_DELIMITER": "s unabraz", - "LISTS_SPLIT_TOOLTIP_SPLIT": "Ad yegzem aḍris ɣef ddeqs n tebdarin n yoiḍrisen, s unegzum yal anabraz.", - "LISTS_SPLIT_TOOLTIP_JOIN": "ad yesdukel tabdart n yiḍrisen deg iwen s usnabraz.", + "LISTS_SPLIT_TOOLTIP_SPLIT": "Ad yegzem aḍris ɣef ddeqs n tebdarin n yiḍrisen, s unegzum yal anabraz.", + "LISTS_SPLIT_TOOLTIP_JOIN": "ad yesdukel tabdart n yiḍrisen deg yiwen s usnabraz.", "LISTS_REVERSE_MESSAGE0": "tti %1", "LISTS_REVERSE_TOOLTIP": "Tti anɣel n tebdart.", - "VARIABLES_GET_TOOLTIP": "Ad d-yerr azal n umutti-agi.", + "VARIABLES_GET_TOOLTIP": "Ad d-yerr azal n umutti-a.", "VARIABLES_GET_CREATE_SET": "Rnu 'sbadu %1'", "VARIABLES_SET": "sbadu %1 ar %2", - "VARIABLES_SET_TOOLTIP": "Ad yesbadu amutti-agi akken ad yegdu azal n unekcam.", + "VARIABLES_SET_TOOLTIP": "Ad yesbadu amutti-a akken ad yegdu azal n unekcam.", "VARIABLES_SET_CREATE_GET": "Rnu 'awi-d %1'", "PROCEDURES_DEFNORETURN_TITLE": "i", "PROCEDURES_DEFNORETURN_PROCEDURE": "eg kra", "PROCEDURES_BEFORE_PARAMS": "s:", "PROCEDURES_CALL_BEFORE_PARAMS": "s:", "PROCEDURES_DEFNORETURN_TOOLTIP": "Rnu tawuri s war anekcam.", - "PROCEDURES_DEFNORETURN_COMMENT": "Seglem tawuri-agi...", + "PROCEDURES_DEFNORETURN_COMMENT": "Seglem tawuri-a...", "PROCEDURES_DEFRETURN_RETURN": "tuɣalin", "PROCEDURES_DEFRETURN_TOOLTIP": "ad yernu tawuri s tuffɣa.", "PROCEDURES_ALLOW_STATEMENTS": "Sireg asmizzwer", - "PROCEDURES_DEF_DUPLICATE_WARNING": "Ɣur-k: Tawuri-agi ɣur-s iɣewwaṛen usligen.", + "PROCEDURES_DEF_DUPLICATE_WARNING": "Ɣur-k: Tawuri-a ɣur-s iɣewwaṛen usligen.", "PROCEDURES_CALLNORETURN_HELPURL": "https://en.wikipedia.org/wiki/Subroutine", - "PROCEDURES_CALLNORETURN_TOOLTIP": "Selkem tawuri '%1' yesbadu u seqdac.", + "PROCEDURES_CALLNORETURN_TOOLTIP": "Selkem tawuri '%1' i yesbadu useqdac.", "PROCEDURES_CALLRETURN_HELPURL": "https://en.wikipedia.org/wiki/Subroutine", - "PROCEDURES_CALLRETURN_TOOLTIP": "Selkem tawuri '%1' yesbadu useqdace sakin seqdec agmuḍ-is.", + "PROCEDURES_CALLRETURN_TOOLTIP": "Selkem tawuri '%1' i yesbadu useqdac sakin seqdec agmuḍ-is.", "PROCEDURES_MUTATORCONTAINER_TITLE": "inekcam", - "PROCEDURES_MUTATORCONTAINER_TOOLTIP": "Rnu, kkes neɣ ales asmizzwer n inekcam i twuri-agi.", + "PROCEDURES_MUTATORCONTAINER_TOOLTIP": "Rnu, kkes neɣ ales asmizzwer n yinekcam i twuri-a.", "PROCEDURES_MUTATORARG_TITLE": "isem n unekcum:", - "PROCEDURES_MUTATORARG_TOOLTIP": "rnu anekcam ar twuri-agi.", - "PROCEDURES_HIGHLIGHT_DEF": "Sebruṛeq tabadut n twuri", - "PROCEDURES_CREATE_DO": "rnu '%1'", + "PROCEDURES_MUTATORARG_TOOLTIP": "rnu anekcam ɣer twuri-a.", + "PROCEDURES_HIGHLIGHT_DEF": "Sebrureq tabadut n twuri", + "PROCEDURES_CREATE_DO": "Rnu '%1'", "PROCEDURES_IFRETURN_TOOLTIP": "ma yella azal d idetti, ad d-yerr azal-nniḍen wis sin.", - "PROCEDURES_IFRETURN_WARNING": "Ɣur-k: Iḥder-agi yezmer ur yettwaseqdac ara ala di tebadut n twuri-agi.", + "PROCEDURES_IFRETURN_WARNING": "Ɣur-k: Iḥder-a yezmer ur yettwaseqdac ara anagar deg tebadut n twuri-a.", "WORKSPACE_COMMENT_DEFAULT_TEXT": "Ini kra...", "WORKSPACE_ARIA_LABEL": "Tallunt n umahel Blockly", "COLLAPSED_WARNINGS_WARNING": "Iḥedran yettin gebren ilɣa." diff --git a/msg/json/ru.json b/msg/json/ru.json index 8d4bfa7caaa..df4d136aa42 100644 --- a/msg/json/ru.json +++ b/msg/json/ru.json @@ -9,10 +9,12 @@ "Mouse21", "Movses", "Okras", + "Phil Rigovanov", "RedFox", "Redredsonia", "Silovan", "SimondR", + "Teretalexev", "Vlad5250" ] }, @@ -22,7 +24,7 @@ "DUPLICATE_BLOCK": "Дублировать", "ADD_COMMENT": "Добавить комментарий", "REMOVE_COMMENT": "Удалить комментарий", - "DUPLICATE_COMMENT": "Клонировать комментарий", + "DUPLICATE_COMMENT": "Дублировать комментарий", "EXTERNAL_INPUTS": "Вставки снаружи", "INLINE_INPUTS": "Вставки внутри", "DELETE_BLOCK": "Удалить блок", @@ -93,7 +95,7 @@ "CONTROLS_IF_IF_TOOLTIP": "Добавьте, удалите, переставьте фрагменты для переделки блока \"если\".", "CONTROLS_IF_ELSEIF_TOOLTIP": "Добавляет условие к блоку \"если\"", "CONTROLS_IF_ELSE_TOOLTIP": "Добавить заключительный подблок для случая, когда все условия ложны.", - "IOS_OK": "ОК", + "IOS_OK": "OK", "IOS_CANCEL": "Отмена", "IOS_ERROR": "Ошибка", "IOS_PROCEDURES_INPUTS": "ВХОД", diff --git a/msg/json/sr-latn.json b/msg/json/sr-latn.json index af03f288a85..e06a531c654 100644 --- a/msg/json/sr-latn.json +++ b/msg/json/sr-latn.json @@ -1,6 +1,7 @@ { "@metadata": { "authors": [ + "Kizule", "Zoranzoki21" ] }, diff --git a/msg/json/sr.json b/msg/json/sr.json index f4ba7fe0bbe..437ec93f237 100644 --- a/msg/json/sr.json +++ b/msg/json/sr.json @@ -3,6 +3,7 @@ "authors": [ "Acamicamacaraca", "BadDog", + "Kizule", "Nikola Smolenski", "Obsuser", "Perevod16", diff --git a/msg/json/sv.json b/msg/json/sv.json index 427afc297b8..6b87be59a75 100644 --- a/msg/json/sv.json +++ b/msg/json/sv.json @@ -5,6 +5,7 @@ "Abbedabb", "Eldaria", "Jopparn", + "Sabelöga", "Smuda", "WikiPhoenix", "아라" @@ -41,7 +42,7 @@ "NEW_COLOUR_VARIABLE": "Skapa färgvariabel...", "NEW_VARIABLE_TYPE_TITLE": "Ny variabeltyp:", "NEW_VARIABLE_TITLE": "Nytt variabelnamn:", - "VARIABLE_ALREADY_EXISTS": "En variabel med namn \"%1\" finns redan.", + "VARIABLE_ALREADY_EXISTS": "En variabel med namnet \"%1\" finns redan.", "VARIABLE_ALREADY_EXISTS_FOR_ANOTHER_TYPE": "En variabel med namnet \"%1\" finns redan för en annan typ: \"%2\".", "DELETE_VARIABLE_CONFIRMATION": "Radera %1 användningar av variabeln \"%2\"?", "CANNOT_DELETE_VARIABLE_PROCEDURE": "Kan inte radera variabeln '%1' eftersom den är en del av definition för funktionen '%2'", @@ -196,7 +197,7 @@ "MATH_ONLIST_TOOLTIP_STD_DEV": "Ger tillbaka standardavvikelsen i listan.", "MATH_ONLIST_OPERATOR_RANDOM": "slumpmässigt objekt i listan", "MATH_ONLIST_TOOLTIP_RANDOM": "Returnerar ett slumpmässigt element från listan.", - "MATH_MODULO_HELPURL": "https://en.wikipedia.org/wiki/Modulo_operation", + "MATH_MODULO_HELPURL": "https://sv.wikipedia.org/wiki/Modulär_aritmetik", "MATH_MODULO_TITLE": "resten av %1 ÷ %2", "MATH_MODULO_TOOLTIP": "Returnerar kvoten från divisionen av de två talen.", "MATH_CONSTRAIN_TITLE": "begränsa %1 till mellan %2 och %3", diff --git a/msg/json/tr.json b/msg/json/tr.json index c21f14eb824..b00feac1c2f 100644 --- a/msg/json/tr.json +++ b/msg/json/tr.json @@ -16,6 +16,7 @@ "Mavrikant", "McAang", "Meelo", + "Uncitoyen", "Uğurkent", "Watermelon juice", "WikiBronze", @@ -90,7 +91,7 @@ "CONTROLS_FLOW_STATEMENTS_OPERATOR_CONTINUE": "döngünün sonraki adımından devam et", "CONTROLS_FLOW_STATEMENTS_TOOLTIP_BREAK": "İçeren döngüden çık.", "CONTROLS_FLOW_STATEMENTS_TOOLTIP_CONTINUE": "Bu döngünün geri kalanını atlayın ve sonraki adım ile devam edin.", - "CONTROLS_FLOW_STATEMENTS_WARNING": "Uyarı: Bu blok sadece bir döngü içinde kullanılabilir.", + "CONTROLS_FLOW_STATEMENTS_WARNING": "Uyarı: Bu blok yalnızca bir döngü içinde kullanılabilir.", "CONTROLS_IF_TOOLTIP_1": "Eğer değişken true, yani gerçekleşmiş ise ardından gelen işlemi yerine getir.", "CONTROLS_IF_TOOLTIP_2": "Eğer değişken true, yani gerçekleşiyor ise ilk bloktaki işlemleri yerine getir. Aksi halde ikinci bloktaki işlemleri yerine getir.", "CONTROLS_IF_TOOLTIP_3": "Eğer ilk değişken true, yani koşul gerçekleşmiş ise ilk blok içerisindeki işlemi gerçekleştir. Eğer ikinci değişken true ise, ikinci bloktaki işlemi gerçekleştir.", diff --git a/msg/json/vi.json b/msg/json/vi.json index 9d6996a2561..91faedf8ccb 100644 --- a/msg/json/vi.json +++ b/msg/json/vi.json @@ -6,12 +6,14 @@ "Espertus", "Leducthn", "Nguyenvanduocit", + "Nguyễn Mạnh An", "Qneutron", "SierraNguyen", "Withoutaname" ] }, "VARIABLES_DEFAULT_NAME": "vật", + "UNNAMED_KEY": "không tên", "TODAY": "Hôm nay", "DUPLICATE_BLOCK": "Tạo Bản Sao", "ADD_COMMENT": "Thêm Chú Giải", @@ -350,5 +352,6 @@ "PROCEDURES_IFRETURN_TOOLTIP": "Khi điều kiện đúng thì hoàn trả một giá trị.", "PROCEDURES_IFRETURN_WARNING": "Chú ý: Mảnh này chỉ có thể dùng trong một thủ tục.", "WORKSPACE_COMMENT_DEFAULT_TEXT": "Hãy nói gì đó...", + "WORKSPACE_ARIA_LABEL": "Không gian làm việc Blockly", "COLLAPSED_WARNINGS_WARNING": "Các khối bị sập có chứa cảnh báo." } diff --git a/msg/json/xmf.json b/msg/json/xmf.json index a34d8664e5a..f6dd8597d82 100644 --- a/msg/json/xmf.json +++ b/msg/json/xmf.json @@ -1,14 +1,17 @@ { "@metadata": { "authors": [ + "Narazeni", "Silovan" ] }, "VARIABLES_DEFAULT_NAME": "ელემენტი", + "UNNAMED_KEY": "ჯოხოშ უმუშო", "TODAY": "ამდღა", "DUPLICATE_BLOCK": "კოპირაფა", "ADD_COMMENT": "კომენტარიშ გეძინა", "REMOVE_COMMENT": "კომენტარიშ გოუქვაფა", + "DUPLICATE_COMMENT": "კომენტარიშ დუბლირაფა", "EXTERNAL_INPUTS": "გალეშე დინოხუნაფა", "INLINE_INPUTS": "დინოხოლე დინოხუნაფა", "DELETE_BLOCK": "ბლოკიშ ლასუა", diff --git a/msg/messages.js b/msg/messages.js index 59b018e5c44..884c9724565 100644 --- a/msg/messages.js +++ b/msg/messages.js @@ -10,11 +10,11 @@ * * After modifying this file, either run "build.py" from the parent directory, * or run (from this directory): - * ../i18n/js_to_json.py + * ../scripts/i18n/js_to_json.py * to regenerate json/{en,qqq,synonyms}.json. * * To convert all of the json files to .js files, run: - * ../i18n/create_messages.py json/*.json + * ../scripts/i18n/create_messages.py json/*.json */ 'use strict'; diff --git a/package-lock.json b/package-lock.json index ade1bde42b4..e9d40b7749c 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1,6 +1,6 @@ { "name": "blockly", - "version": "3.20200625.2", + "version": "3.20200924.0", "lockfileVersion": 1, "requires": true, "dependencies": { @@ -13,6 +13,60 @@ "@babel/highlight": "^7.0.0" } }, + "@babel/generator": { + "version": "7.10.5", + "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.10.5.tgz", + "integrity": "sha512-3vXxr3FEW7E7lJZiWQ3bM4+v/Vyr9C+hpolQ8BGFr9Y8Ri2tFLWTixmwKBafDujO1WVah4fhZBeU1bieKdghig==", + "dev": true, + "requires": { + "@babel/types": "^7.10.5", + "jsesc": "^2.5.1", + "source-map": "^0.5.0" + }, + "dependencies": { + "source-map": { + "version": "0.5.7", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz", + "integrity": "sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w=", + "dev": true + } + } + }, + "@babel/helper-function-name": { + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/helper-function-name/-/helper-function-name-7.10.4.tgz", + "integrity": "sha512-YdaSyz1n8gY44EmN7x44zBn9zQ1Ry2Y+3GTA+3vH6Mizke1Vw0aWDM66FOYEPw8//qKkmqOckrGgTYa+6sceqQ==", + "dev": true, + "requires": { + "@babel/helper-get-function-arity": "^7.10.4", + "@babel/template": "^7.10.4", + "@babel/types": "^7.10.4" + } + }, + "@babel/helper-get-function-arity": { + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/helper-get-function-arity/-/helper-get-function-arity-7.10.4.tgz", + "integrity": "sha512-EkN3YDB+SRDgiIUnNgcmiD361ti+AVbL3f3Henf6dqqUyr5dMsorno0lJWJuLhDhkI5sYEpgj6y9kB8AOU1I2A==", + "dev": true, + "requires": { + "@babel/types": "^7.10.4" + } + }, + "@babel/helper-split-export-declaration": { + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.10.4.tgz", + "integrity": "sha512-pySBTeoUff56fL5CBU2hWm9TesA4r/rOkI9DyJLvvgz09MB9YtfIYe3iBriVaYNaPe+Alua0vBIOVOLs2buWhg==", + "dev": true, + "requires": { + "@babel/types": "^7.10.4" + } + }, + "@babel/helper-validator-identifier": { + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.10.4.tgz", + "integrity": "sha512-3U9y+43hz7ZM+rzG24Qe2mufW5KhvFg/NhnNph+i9mgCtdTCtMJuI1TMkrIUiK7Ix4PYlRF9I5dhqaLYA/ADXw==", + "dev": true + }, "@babel/highlight": { "version": "7.5.0", "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.5.0.tgz", @@ -30,6 +84,168 @@ "integrity": "sha512-+o2q111WEx4srBs7L9eJmcwi655eD8sXniLqMB93TBK9GrNzGrxDWSjiqz2hLU0Ha8MTXFIP0yd9fNdP+m43ZQ==", "dev": true }, + "@babel/template": { + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.10.4.tgz", + "integrity": "sha512-ZCjD27cGJFUB6nmCB1Enki3r+L5kJveX9pq1SvAUKoICy6CZ9yD8xO086YXdYhvNjBdnekm4ZnaP5yC8Cs/1tA==", + "dev": true, + "requires": { + "@babel/code-frame": "^7.10.4", + "@babel/parser": "^7.10.4", + "@babel/types": "^7.10.4" + }, + "dependencies": { + "@babel/code-frame": { + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.10.4.tgz", + "integrity": "sha512-vG6SvB6oYEhvgisZNFRmRCUkLz11c7rp+tbNTynGqc6mS1d5ATd/sGyV6W0KZZnXRKMTzZDRgQT3Ou9jhpAfUg==", + "dev": true, + "requires": { + "@babel/highlight": "^7.10.4" + } + }, + "@babel/highlight": { + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.10.4.tgz", + "integrity": "sha512-i6rgnR/YgPEQzZZnbTHHuZdlE8qyoBNalD6F+q4vAFlcMEcqmkoG+mPqJYJCo63qPf74+Y1UZsl3l6f7/RIkmA==", + "dev": true, + "requires": { + "@babel/helper-validator-identifier": "^7.10.4", + "chalk": "^2.0.0", + "js-tokens": "^4.0.0" + } + }, + "@babel/parser": { + "version": "7.10.5", + "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.10.5.tgz", + "integrity": "sha512-wfryxy4bE1UivvQKSQDU4/X6dr+i8bctjUjj8Zyt3DQy7NtPizJXT8M52nqpNKL+nq2PW8lxk4ZqLj0fD4B4hQ==", + "dev": true + } + } + }, + "@babel/traverse": { + "version": "7.10.5", + "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.10.5.tgz", + "integrity": "sha512-yc/fyv2gUjPqzTz0WHeRJH2pv7jA9kA7mBX2tXl/x5iOE81uaVPuGPtaYk7wmkx4b67mQ7NqI8rmT2pF47KYKQ==", + "dev": true, + "requires": { + "@babel/code-frame": "^7.10.4", + "@babel/generator": "^7.10.5", + "@babel/helper-function-name": "^7.10.4", + "@babel/helper-split-export-declaration": "^7.10.4", + "@babel/parser": "^7.10.5", + "@babel/types": "^7.10.5", + "debug": "^4.1.0", + "globals": "^11.1.0", + "lodash": "^4.17.19" + }, + "dependencies": { + "@babel/code-frame": { + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.10.4.tgz", + "integrity": "sha512-vG6SvB6oYEhvgisZNFRmRCUkLz11c7rp+tbNTynGqc6mS1d5ATd/sGyV6W0KZZnXRKMTzZDRgQT3Ou9jhpAfUg==", + "dev": true, + "requires": { + "@babel/highlight": "^7.10.4" + } + }, + "@babel/highlight": { + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.10.4.tgz", + "integrity": "sha512-i6rgnR/YgPEQzZZnbTHHuZdlE8qyoBNalD6F+q4vAFlcMEcqmkoG+mPqJYJCo63qPf74+Y1UZsl3l6f7/RIkmA==", + "dev": true, + "requires": { + "@babel/helper-validator-identifier": "^7.10.4", + "chalk": "^2.0.0", + "js-tokens": "^4.0.0" + } + }, + "@babel/parser": { + "version": "7.10.5", + "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.10.5.tgz", + "integrity": "sha512-wfryxy4bE1UivvQKSQDU4/X6dr+i8bctjUjj8Zyt3DQy7NtPizJXT8M52nqpNKL+nq2PW8lxk4ZqLj0fD4B4hQ==", + "dev": true + }, + "lodash": { + "version": "4.17.19", + "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.19.tgz", + "integrity": "sha512-JNvd8XER9GQX0v2qJgsaN/mzFCNA5BRe/j8JN9d+tWyGLSodKQHKFicdwNYzWwI3wjRnaKPsGj1XkBjx/F96DQ==", + "dev": true + } + } + }, + "@babel/types": { + "version": "7.10.5", + "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.10.5.tgz", + "integrity": "sha512-ixV66KWfCI6GKoA/2H9v6bQdbfXEwwpOdQ8cRvb4F+eyvhlaHxWFMQB4+3d9QFJXZsiiiqVrewNV0DFEQpyT4Q==", + "dev": true, + "requires": { + "@babel/helper-validator-identifier": "^7.10.4", + "lodash": "^4.17.19", + "to-fast-properties": "^2.0.0" + }, + "dependencies": { + "lodash": { + "version": "4.17.19", + "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.19.tgz", + "integrity": "sha512-JNvd8XER9GQX0v2qJgsaN/mzFCNA5BRe/j8JN9d+tWyGLSodKQHKFicdwNYzWwI3wjRnaKPsGj1XkBjx/F96DQ==", + "dev": true + } + } + }, + "@eslint/eslintrc": { + "version": "0.1.3", + "resolved": "https://registry.npmjs.org/@eslint/eslintrc/-/eslintrc-0.1.3.tgz", + "integrity": "sha512-4YVwPkANLeNtRjMekzux1ci8hIaH5eGKktGqR0d3LWsKNn5B2X/1Z6Trxy7jQXl9EBGE6Yj02O+t09FMeRllaA==", + "dev": true, + "requires": { + "ajv": "^6.12.4", + "debug": "^4.1.1", + "espree": "^7.3.0", + "globals": "^12.1.0", + "ignore": "^4.0.6", + "import-fresh": "^3.2.1", + "js-yaml": "^3.13.1", + "lodash": "^4.17.19", + "minimatch": "^3.0.4", + "strip-json-comments": "^3.1.1" + }, + "dependencies": { + "ajv": { + "version": "6.12.5", + "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.5.tgz", + "integrity": "sha512-lRF8RORchjpKG50/WFf8xmg7sgCLFiYNNnqdKflk63whMQcWR5ngGjiSXkL9bjxy6B2npOK2HSMN49jEBMSkag==", + "dev": true, + "requires": { + "fast-deep-equal": "^3.1.1", + "fast-json-stable-stringify": "^2.0.0", + "json-schema-traverse": "^0.4.1", + "uri-js": "^4.2.2" + } + }, + "fast-deep-equal": { + "version": "3.1.3", + "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz", + "integrity": "sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==", + "dev": true + }, + "globals": { + "version": "12.4.0", + "resolved": "https://registry.npmjs.org/globals/-/globals-12.4.0.tgz", + "integrity": "sha512-BWICuzzDvDoH54NHKCseDanAhE3CeDorgDL5MT6LMXXj2WCnd9UC2szdk4AWLfjdgNBCXLUanXYcpBBKOSWGwg==", + "dev": true, + "requires": { + "type-fest": "^0.8.1" + } + }, + "strip-json-comments": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-3.1.1.tgz", + "integrity": "sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig==", + "dev": true + } + } + }, "@gulp-sourcemaps/identity-map": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/@gulp-sourcemaps/identity-map/-/identity-map-1.0.2.tgz", @@ -98,11 +314,17 @@ "defer-to-connect": "^1.0.1" } }, - "@types/caseless": { - "version": "0.12.2", - "resolved": "https://registry.npmjs.org/@types/caseless/-/caseless-0.12.2.tgz", - "integrity": "sha512-6ckxMjBBD8URvjB6J3NcnuAn5Pkl7t3TizAg+xdlzzQGSPSmBcXf8KoIH0ua/i+tio+ZRUHEXp0HEmvaR4kt0w==", - "dev": true + "@types/cacheable-request": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/@types/cacheable-request/-/cacheable-request-6.0.1.tgz", + "integrity": "sha512-ykFq2zmBGOCbpIXtoVbz4SKY5QriWPh3AjyU4G74RYbtt5yOc5OfaY75ftjg7mikMOla1CTGpX3lLbuJh8DTrQ==", + "dev": true, + "requires": { + "@types/http-cache-semantics": "*", + "@types/keyv": "*", + "@types/node": "*", + "@types/responselike": "*" + } }, "@types/color-name": { "version": "1.1.1", @@ -110,61 +332,73 @@ "integrity": "sha512-rr+OQyAjxze7GgWrSaJwydHStIhHq2lvY3BOC2Mj7KnzI7XK0Uw1TOOdI9lDoajEbSWLiYgoo4f1R51erQfhPQ==", "dev": true }, - "@types/node": { - "version": "13.9.5", - "resolved": "https://registry.npmjs.org/@types/node/-/node-13.9.5.tgz", - "integrity": "sha512-hkzMMD3xu6BrJpGVLeQ3htQQNAcOrJjX7WFmtK8zWQpz2UJf13LCFF2ALA7c9OVdvc2vQJeDdjfR35M0sBCxvw==", + "@types/http-cache-semantics": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/@types/http-cache-semantics/-/http-cache-semantics-4.0.0.tgz", + "integrity": "sha512-c3Xy026kOF7QOTn00hbIllV1dLR9hG9NkSrLQgCVs8NF6sBU+VGWjD3wLPhmh1TYAc7ugCFsvHYMN4VcBN1U1A==", "dev": true }, - "@types/request": { - "version": "2.48.4", - "resolved": "https://registry.npmjs.org/@types/request/-/request-2.48.4.tgz", - "integrity": "sha512-W1t1MTKYR8PxICH+A4HgEIPuAC3sbljoEVfyZbeFJJDbr30guDspJri2XOaM2E+Un7ZjrihaDi7cf6fPa2tbgw==", + "@types/keyv": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/@types/keyv/-/keyv-3.1.1.tgz", + "integrity": "sha512-MPtoySlAZQ37VoLaPcTHCu1RWJ4llDkULYZIzOYxlhxBqYPB0RsRlmMU0R6tahtFe27mIdkHV+551ZWV4PLmVw==", "dev": true, "requires": { - "@types/caseless": "*", - "@types/node": "*", - "@types/tough-cookie": "*", - "form-data": "^2.5.0" - }, - "dependencies": { - "form-data": { - "version": "2.5.1", - "resolved": "https://registry.npmjs.org/form-data/-/form-data-2.5.1.tgz", - "integrity": "sha512-m21N3WOmEEURgk6B9GLOE4RuWOFf28Lhh9qGYeNlGq4VDXUlJy2th2slBNU8Gp8EzloYZOibZJ7t5ecIrFSjVA==", - "dev": true, - "requires": { - "asynckit": "^0.4.0", - "combined-stream": "^1.0.6", - "mime-types": "^2.1.12" - } - } + "@types/node": "*" } }, - "@types/tough-cookie": { - "version": "2.3.6", - "resolved": "https://registry.npmjs.org/@types/tough-cookie/-/tough-cookie-2.3.6.tgz", - "integrity": "sha512-wHNBMnkoEBiRAd3s8KTKwIuO9biFtTf0LehITzBhSco+HQI0xkXZbLOD55SW3Aqw3oUkHstkm5SPv58yaAdFPQ==", + "@types/node": { + "version": "14.11.1", + "resolved": "https://registry.npmjs.org/@types/node/-/node-14.11.1.tgz", + "integrity": "sha512-oTQgnd0hblfLsJ6BvJzzSL+Inogp3lq9fGgqRkMB/ziKMgEUaFl801OncOzUmalfzt14N0oPHMK47ipl+wbTIw==", "dev": true }, + "@types/puppeteer": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/@types/puppeteer/-/puppeteer-3.0.2.tgz", + "integrity": "sha512-JRuHPSbHZBadOxxFwpyZPeRlpPTTeMbQneMdpFd8LXdyNfFSiX950CGewdm69g/ipzEAXAmMyFF1WOWJOL/nKw==", + "dev": true, + "requires": { + "@types/node": "*" + } + }, + "@types/responselike": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/@types/responselike/-/responselike-1.0.0.tgz", + "integrity": "sha512-85Y2BjiufFzaMIlvJDvTTB8Fxl2xfLo4HgmHzVBz08w4wDePCTjYw66PdrolO0kzli3yam/YCgRufyo1DdQVTA==", + "dev": true, + "requires": { + "@types/node": "*" + } + }, + "@types/yauzl": { + "version": "2.9.1", + "resolved": "https://registry.npmjs.org/@types/yauzl/-/yauzl-2.9.1.tgz", + "integrity": "sha512-A1b8SU4D10uoPjwb0lnHmmu8wZhR9d+9o2PKBQT2jU5YPTKsxac6M2qGAdY7VcL+dHHhARVUDmeg0rOrcd9EjA==", + "dev": true, + "optional": true, + "requires": { + "@types/node": "*" + } + }, "@wdio/config": { - "version": "5.22.4", - "resolved": "https://registry.npmjs.org/@wdio/config/-/config-5.22.4.tgz", - "integrity": "sha512-i5dJQWb80darcRA//tfG0guMeQCeRUXroZNnHjGNb1qzvTRZmcIIhdxaD+DbK/5dWEx6aoMfoi6wjVp/CXwdAg==", + "version": "6.4.7", + "resolved": "https://registry.npmjs.org/@wdio/config/-/config-6.4.7.tgz", + "integrity": "sha512-wtcj9yKm5+SivwhsgpusBrFR7a3rpDsN/WH6ekoqlZFs7oCpJeTLwawWnoX6MJQy2no5o00lGxDDJnqjaBdiiQ==", "dev": true, "requires": { - "@wdio/logger": "5.16.10", + "@wdio/logger": "6.4.7", "deepmerge": "^4.0.0", "glob": "^7.1.2" } }, "@wdio/logger": { - "version": "5.16.10", - "resolved": "https://registry.npmjs.org/@wdio/logger/-/logger-5.16.10.tgz", - "integrity": "sha512-hRKhxgd9uB48Dtj2xe2ckxU4KwI/RO8IwguySuaI2SLFj6EDbdonwzpVkq111/fjBuq7R1NauAaNcm3AMEbIFA==", + "version": "6.4.7", + "resolved": "https://registry.npmjs.org/@wdio/logger/-/logger-6.4.7.tgz", + "integrity": "sha512-Mm/rsRa/1u/l8/IrNKM2c9tkvLE90i83d3KZ0Ujh4cicYJv+lNi9whsCi+p3QNFCo64nJ6bfC+0Ho5VgD3MiKw==", "dev": true, "requires": { - "chalk": "^3.0.0", + "chalk": "^4.0.0", "loglevel": "^1.6.0", "loglevel-plugin-prefix": "^0.8.4", "strip-ansi": "^6.0.0" @@ -187,9 +421,9 @@ } }, "chalk": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-3.0.0.tgz", - "integrity": "sha512-4D3B6Wf41KOYRFdszmDqMCGq5VV/uMAB273JILmO+3jAlh8X4qDtdtgCR3fxtbLEMzSx22QdhnDcJvu2u1fVwg==", + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.0.tgz", + "integrity": "sha512-qwx12AxXe2Q5xQ43Ac//I6v5aXTipYrSESdOgzrN+9XjgEpyjpKuvSGaN4qE93f7TQTlerQQ8S+EQ0EyDoVL1A==", "dev": true, "requires": { "ansi-styles": "^4.1.0", @@ -227,9 +461,9 @@ } }, "supports-color": { - "version": "7.1.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.1.0.tgz", - "integrity": "sha512-oRSIpR8pxT1Wr2FquTNnGet79b3BWljqOuoW/h4oBhxJ/HUbX5nX6JSruTkvXDCFMwDPvsaTTbvMLKZWSy0R5g==", + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", "dev": true, "requires": { "has-flag": "^4.0.0" @@ -238,28 +472,27 @@ } }, "@wdio/protocols": { - "version": "5.22.1", - "resolved": "https://registry.npmjs.org/@wdio/protocols/-/protocols-5.22.1.tgz", - "integrity": "sha512-GdoWb/HTrb09Qb0S/7sLp1NU94LAhTsF1NnFj5sEFSUpecrl0S07pnhVg54pUImectN/woaqSl7uJGjlSGZcdQ==", + "version": "6.3.6", + "resolved": "https://registry.npmjs.org/@wdio/protocols/-/protocols-6.3.6.tgz", + "integrity": "sha512-cocBRkv5sYUBxXResuxskQhIkKgDgE/yAtgMGR5wXLrtG/sMpZ2HVy6LOcOeARidAaRwbav80M2ZHjTCjPn53w==", "dev": true }, "@wdio/repl": { - "version": "5.18.6", - "resolved": "https://registry.npmjs.org/@wdio/repl/-/repl-5.18.6.tgz", - "integrity": "sha512-z9UPBk/Uee0l9g0ijnOatU3WP7TcpIyNtRj9AGsJVbYZFwqMWBqPkO4nblldyNQIuqdgXAPsDo8lPGDno12/oA==", + "version": "6.5.0", + "resolved": "https://registry.npmjs.org/@wdio/repl/-/repl-6.5.0.tgz", + "integrity": "sha512-qKm2j0qY7mrZQipHv4PhKpAL7pkyxCzW1XDoEjp09OHLvmGvvCwY6aEBuLziD9BaiR30BXVNLIKPZfM4Xl2Zfg==", "dev": true, "requires": { - "@wdio/utils": "5.18.6" + "@wdio/utils": "6.5.0" } }, "@wdio/utils": { - "version": "5.18.6", - "resolved": "https://registry.npmjs.org/@wdio/utils/-/utils-5.18.6.tgz", - "integrity": "sha512-OVdK7P9Gne9tR6dl1GEKucwX4mtS47F26g4lH8r0HURvMegZLGtcchI1cqF6hjK7EpP737b+C3q4ooZSBdH9XQ==", + "version": "6.5.0", + "resolved": "https://registry.npmjs.org/@wdio/utils/-/utils-6.5.0.tgz", + "integrity": "sha512-k5RxRj/re/BbK76SjWSmyhJFHWnXD74vl/doCAQNuOaKFBd2dqMCs3GiFjYCyLcU37XGMAnRvI3tKHflyLGJYw==", "dev": true, "requires": { - "@wdio/logger": "5.16.10", - "deepmerge": "^4.0.0" + "@wdio/logger": "6.4.7" } }, "abab": { @@ -291,9 +524,9 @@ } }, "acorn-jsx": { - "version": "5.0.2", - "resolved": "https://registry.npmjs.org/acorn-jsx/-/acorn-jsx-5.0.2.tgz", - "integrity": "sha512-tiNTrP1MP0QrChmD2DdupCr6HWSFeKVw5d/dHTu4Y7rkAkRhU/Dt7dphAfIUyxtHpl/eBVip5uTNSpQJHylpAw==", + "version": "5.3.1", + "resolved": "https://registry.npmjs.org/acorn-jsx/-/acorn-jsx-5.3.1.tgz", + "integrity": "sha512-K0Ptm/47OKfQRpNQ2J/oIN/3QYiK6FwW+eJbILhsdxh2WTLdl+30o8aGdTbm5JbffpFFAg/g+zi1E+jvJha5ng==", "dev": true }, "acorn-walk": { @@ -302,9 +535,9 @@ "integrity": "sha512-7evsyfH1cLOCdAzZAd43Cic04yKydNx0cF+7tiA19p1XnLLPU4dpCQOqpjqwokFe//vS0QqfqqjCS2JkiIs0cA==" }, "agent-base": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/agent-base/-/agent-base-6.0.0.tgz", - "integrity": "sha512-j1Q7cSCqN+AwrmDd+pzgqc0/NpC655x2bUf5ZjRIO77DcNBFmh+OgRNzF6OKdCC9RSCb19fGd99+bhXFdkRNqw==", + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/agent-base/-/agent-base-6.0.1.tgz", + "integrity": "sha512-01q25QQDwLSsyfhrKbn8yuur+JNw0H+0Y4JiGIKd3z9aYk/w/2kxD/Upc+t2ZBBSUNff50VjPsSW2YxM8QYKVg==", "dev": true, "requires": { "debug": "4" @@ -330,12 +563,6 @@ "ansi-wrap": "^0.1.0" } }, - "ansi-escapes": { - "version": "3.2.0", - "resolved": "https://registry.npmjs.org/ansi-escapes/-/ansi-escapes-3.2.0.tgz", - "integrity": "sha512-cBhpre4ma+U0T1oM5fXg7Dy1Jw7zzwv7lt/GoCpr+hDQJoYnKVPLL4dCvSEFMmQurOQvSrwT7SL/DAlhBI97RQ==", - "dev": true - }, "ansi-gray": { "version": "0.1.1", "resolved": "https://registry.npmjs.org/ansi-gray/-/ansi-gray-0.1.1.tgz", @@ -386,30 +613,25 @@ } }, "archiver": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/archiver/-/archiver-3.1.1.tgz", - "integrity": "sha512-5Hxxcig7gw5Jod/8Gq0OneVgLYET+oNHcxgWItq4TbhOzRLKNAFUb9edAftiMKXvXfCB0vbGrJdZDNq0dWMsxg==", + "version": "5.0.2", + "resolved": "https://registry.npmjs.org/archiver/-/archiver-5.0.2.tgz", + "integrity": "sha512-Tq3yV/T4wxBsD2Wign8W9VQKhaUxzzRmjEiSoOK0SLqPgDP/N1TKdYyBeIEu56T4I9iO4fKTTR0mN9NWkBA0sg==", "dev": true, "requires": { "archiver-utils": "^2.1.0", - "async": "^2.6.3", + "async": "^3.2.0", "buffer-crc32": "^0.2.1", - "glob": "^7.1.4", - "readable-stream": "^3.4.0", - "tar-stream": "^2.1.0", - "zip-stream": "^2.1.2" + "readable-stream": "^3.6.0", + "readdir-glob": "^1.0.0", + "tar-stream": "^2.1.4", + "zip-stream": "^4.0.0" }, "dependencies": { - "bl": { - "version": "4.0.2", - "resolved": "https://registry.npmjs.org/bl/-/bl-4.0.2.tgz", - "integrity": "sha512-j4OH8f6Qg2bGuWfRiltT2HYGx0e1QcBTrK9KAHNMwMZdQnDZFk0ZSYIpADjYCB3U12nicC5tVJwSIhwOWjb4RQ==", - "dev": true, - "requires": { - "buffer": "^5.5.0", - "inherits": "^2.0.4", - "readable-stream": "^3.4.0" - } + "async": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/async/-/async-3.2.0.tgz", + "integrity": "sha512-TR2mEZFVOj2pLStYxLht7TyfuRzaydfpxr3k9RpHIzMgw7A64dzsdqCxH1WJyQdoe8T10nDXd9wnEigmiuHIZw==", + "dev": true }, "readable-stream": { "version": "3.6.0", @@ -423,12 +645,12 @@ } }, "tar-stream": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/tar-stream/-/tar-stream-2.1.2.tgz", - "integrity": "sha512-UaF6FoJ32WqALZGOIAApXx+OdxhekNMChu6axLJR85zMMjXKWFGjbIRe+J6P4UnRGg9rAwWvbTT0oI7hD/Un7Q==", + "version": "2.1.4", + "resolved": "https://registry.npmjs.org/tar-stream/-/tar-stream-2.1.4.tgz", + "integrity": "sha512-o3pS2zlG4gxr67GmFYBLlq+dM8gyRGUOvsrHclSkvtVtQbjV0s/+ZE8OpICbaj8clrX3tjeHngYGP7rweaBnuw==", "dev": true, "requires": { - "bl": "^4.0.1", + "bl": "^4.0.3", "end-of-stream": "^1.4.1", "fs-constants": "^1.0.0", "inherits": "^2.0.3", @@ -597,6 +819,18 @@ "integrity": "sha1-qJS3XUvE9s1nnvMkSp/Y9Gri1Cg=", "dev": true }, + "array.prototype.map": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/array.prototype.map/-/array.prototype.map-1.0.2.tgz", + "integrity": "sha512-Az3OYxgsa1g7xDYp86l0nnN4bcmuEITGe1rbdEBVkrqkzMgDcbdQ2R7r41pNzti+4NMces3H8gMmuioZUilLgw==", + "dev": true, + "requires": { + "define-properties": "^1.1.3", + "es-abstract": "^1.17.0-next.1", + "es-array-method-boxes-properly": "^1.0.0", + "is-string": "^1.0.4" + } + }, "asn1": { "version": "0.2.4", "resolved": "https://registry.npmjs.org/asn1/-/asn1-0.2.4.tgz", @@ -685,6 +919,28 @@ "resolved": "https://registry.npmjs.org/aws4/-/aws4-1.9.1.tgz", "integrity": "sha512-wMHVg2EOHaMRxbzgFJ9gtjOOCrI80OHLG14rxi28XwOW8ux6IiEbRCGGGqCtdAIg4FQCbW20k9RsT4y3gJlFug==" }, + "babel-eslint": { + "version": "10.1.0", + "resolved": "https://registry.npmjs.org/babel-eslint/-/babel-eslint-10.1.0.tgz", + "integrity": "sha512-ifWaTHQ0ce+448CYop8AdrQiBsGrnC+bMgfyKFdi6EsPLTAWG+QfyDeM6OH+FmWnKvEq5NnBMLvlBUPKQZoDSg==", + "dev": true, + "requires": { + "@babel/code-frame": "^7.0.0", + "@babel/parser": "^7.7.0", + "@babel/traverse": "^7.7.0", + "@babel/types": "^7.7.0", + "eslint-visitor-keys": "^1.0.0", + "resolve": "^1.12.0" + }, + "dependencies": { + "@babel/parser": { + "version": "7.10.5", + "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.10.5.tgz", + "integrity": "sha512-wfryxy4bE1UivvQKSQDU4/X6dr+i8bctjUjj8Zyt3DQy7NtPizJXT8M52nqpNKL+nq2PW8lxk4ZqLj0fD4B4hQ==", + "dev": true + } + } + }, "bach": { "version": "1.2.0", "resolved": "https://registry.npmjs.org/bach/-/bach-1.2.0.tgz", @@ -790,13 +1046,27 @@ "dev": true }, "bl": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/bl/-/bl-2.2.0.tgz", - "integrity": "sha512-wbgvOpqopSr7uq6fJrLH8EsvYMJf9gzfo2jCsL2eTy75qXPukA4pCgHamOQkZtY5vmfVtjB+P3LNlMHW5CEZXA==", + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/bl/-/bl-4.0.3.tgz", + "integrity": "sha512-fs4G6/Hu4/EE+F75J8DuN/0IpQqNjAdC7aEQv7Qt8MHGUH7Ckv2MwTEEeN9QehD0pfIDkMI1bkHYkKy7xHyKIg==", "dev": true, "requires": { - "readable-stream": "^2.3.5", - "safe-buffer": "^5.1.1" + "buffer": "^5.5.0", + "inherits": "^2.0.4", + "readable-stream": "^3.4.0" + }, + "dependencies": { + "readable-stream": { + "version": "3.6.0", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.0.tgz", + "integrity": "sha512-BViHy7LKeTz4oNnkcLJ+lVSL6vpiFeX6/d3oSH8zCW7UxP2onchk+vTGB143xuFjHS3deTgkKoXXymXqymiIdA==", + "dev": true, + "requires": { + "inherits": "^2.0.3", + "string_decoder": "^1.1.1", + "util-deprecate": "^1.0.1" + } + } } }, "bluebird": { @@ -906,6 +1176,12 @@ "unset-value": "^1.0.0" } }, + "cacheable-lookup": { + "version": "5.0.3", + "resolved": "https://registry.npmjs.org/cacheable-lookup/-/cacheable-lookup-5.0.3.tgz", + "integrity": "sha512-W+JBqF9SWe18A72XFzN/V/CULFzPm7sBXzzR6ekkE+3tLG72wFZrBiBZhrZuDoYexop4PHJVdFAKb/Nj9+tm9w==", + "dev": true + }, "cacheable-request": { "version": "6.1.0", "resolved": "https://registry.npmjs.org/cacheable-request/-/cacheable-request-6.1.0.tgz", @@ -922,9 +1198,9 @@ }, "dependencies": { "get-stream": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-5.1.0.tgz", - "integrity": "sha512-EXr1FOzrzTfGeL0gQdeFEvOMm2mzMOglyiOXSTpPC+iAjAKftbr3jpCMWynogwYnM+eSj9sHGc6wjIcDvYiygw==", + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-5.2.0.tgz", + "integrity": "sha512-nBF+F1rAZVCu/p7rjzgA+Yb4lfYXrpl7a6VmJrU8wF9I1CKvP/QwPNZHnOlwbTkY6dvtFIzFMSyQXbLoTQPRpA==", "dev": true, "requires": { "pump": "^3.0.0" @@ -1000,12 +1276,6 @@ } } }, - "chardet": { - "version": "0.7.0", - "resolved": "https://registry.npmjs.org/chardet/-/chardet-0.7.0.tgz", - "integrity": "sha512-mT8iDcrh03qDGRRmoA2hmBJnxpllMR+0/0qlzjqZES6NdiWDcZkCNAk4rPFZ9Q85r27unkiNNg8ZOiwZXBHwcA==", - "dev": true - }, "check-error": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/check-error/-/check-error-1.0.2.tgz", @@ -1040,6 +1310,37 @@ } } }, + "chownr": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/chownr/-/chownr-1.1.4.tgz", + "integrity": "sha512-jJ0bqzaylmJtVnNgzTeSOs8DPavpbYgEr/b0YL8/2GO3xJEhInFmhKMUnEJQjZumK7KXGFhUy89PrsJWlakBVg==", + "dev": true + }, + "chrome-launcher": { + "version": "0.13.4", + "resolved": "https://registry.npmjs.org/chrome-launcher/-/chrome-launcher-0.13.4.tgz", + "integrity": "sha512-nnzXiDbGKjDSK6t2I+35OAPBy5Pw/39bgkb/ZAFwMhwJbdYBp6aH+vW28ZgtjdU890Q7D+3wN/tB8N66q5Gi2A==", + "dev": true, + "requires": { + "@types/node": "*", + "escape-string-regexp": "^1.0.5", + "is-wsl": "^2.2.0", + "lighthouse-logger": "^1.0.0", + "mkdirp": "^0.5.3", + "rimraf": "^3.0.2" + }, + "dependencies": { + "mkdirp": { + "version": "0.5.5", + "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.5.tgz", + "integrity": "sha512-NKmAlESf6jMGym1++R0Ra7wvhV+wFW63FaSOFPwRahvea0gMUcGUhVeAg/0BC0wiv9ih5NYPB1Wn1UEI1/L+xQ==", + "dev": true, + "requires": { + "minimist": "^1.2.5" + } + } + } + }, "class-utils": { "version": "0.3.6", "resolved": "https://registry.npmjs.org/class-utils/-/class-utils-0.3.6.tgz", @@ -1063,31 +1364,6 @@ } } }, - "cli": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/cli/-/cli-1.0.1.tgz", - "integrity": "sha1-IoF1NPJL+klQw01TLUjsvGIbjBQ=", - "dev": true, - "requires": { - "exit": "0.1.2", - "glob": "^7.1.1" - } - }, - "cli-cursor": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/cli-cursor/-/cli-cursor-2.1.0.tgz", - "integrity": "sha1-s12sN2R5+sw+lHR9QdDQ9SOP/LU=", - "dev": true, - "requires": { - "restore-cursor": "^2.0.0" - } - }, - "cli-width": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/cli-width/-/cli-width-2.2.0.tgz", - "integrity": "sha1-/xnt6Kml5XkyQUewwR8PvLq+1jk=", - "dev": true - }, "cliui": { "version": "4.1.0", "resolved": "https://registry.npmjs.org/cliui/-/cliui-4.1.0.tgz", @@ -1212,15 +1488,15 @@ "dev": true }, "compress-commons": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/compress-commons/-/compress-commons-2.1.1.tgz", - "integrity": "sha512-eVw6n7CnEMFzc3duyFVrQEuY1BlHR3rYsSztyG32ibGMW722i3C6IizEGMFmfMU+A+fALvBIwxN3czffTcdA+Q==", + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/compress-commons/-/compress-commons-4.0.1.tgz", + "integrity": "sha512-xZm9o6iikekkI0GnXCmAl3LQGZj5TBDj0zLowsqi7tJtEa3FMGSEcHcqrSJIrOAk1UG/NBbDn/F1q+MG/p/EsA==", "dev": true, "requires": { "buffer-crc32": "^0.2.13", - "crc32-stream": "^3.0.1", + "crc32-stream": "^4.0.0", "normalize-path": "^3.0.0", - "readable-stream": "^2.3.6" + "readable-stream": "^3.6.0" }, "dependencies": { "normalize-path": { @@ -1228,6 +1504,17 @@ "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-3.0.0.tgz", "integrity": "sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==", "dev": true + }, + "readable-stream": { + "version": "3.6.0", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.0.tgz", + "integrity": "sha512-BViHy7LKeTz4oNnkcLJ+lVSL6vpiFeX6/d3oSH8zCW7UxP2onchk+vTGB143xuFjHS3deTgkKoXXymXqymiIdA==", + "dev": true, + "requires": { + "inherits": "^2.0.3", + "string_decoder": "^1.1.1", + "util-deprecate": "^1.0.1" + } } } }, @@ -1259,53 +1546,112 @@ } }, "concurrently": { - "version": "4.1.2", - "resolved": "https://registry.npmjs.org/concurrently/-/concurrently-4.1.2.tgz", - "integrity": "sha512-Kim9SFrNr2jd8/0yNYqDTFALzUX1tvimmwFWxmp/D4mRI+kbqIIwE2RkBDrxS2ic25O1UgQMI5AtBqdtX3ynYg==", + "version": "5.3.0", + "resolved": "https://registry.npmjs.org/concurrently/-/concurrently-5.3.0.tgz", + "integrity": "sha512-8MhqOB6PWlBfA2vJ8a0bSFKATOdWlHiQlk11IfmQBPaHVP8oP2gsh2MObE6UR3hqDHqvaIvLTyceNW6obVuFHQ==", "dev": true, "requires": { "chalk": "^2.4.2", - "date-fns": "^1.30.1", + "date-fns": "^2.0.1", "lodash": "^4.17.15", "read-pkg": "^4.0.1", "rxjs": "^6.5.2", "spawn-command": "^0.0.2-1", - "supports-color": "^4.5.0", - "tree-kill": "^1.2.1", - "yargs": "^12.0.5" + "supports-color": "^6.1.0", + "tree-kill": "^1.2.2", + "yargs": "^13.3.0" }, "dependencies": { - "yargs": { - "version": "12.0.5", - "resolved": "https://registry.npmjs.org/yargs/-/yargs-12.0.5.tgz", - "integrity": "sha512-Lhz8TLaYnxq/2ObqHDql8dX8CJi97oHxrjUcYtzKbbykPtVW9WB+poxI+NM2UIzsMgNCZTIf0AQwsjK5yMAqZw==", + "ansi-regex": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-4.1.0.tgz", + "integrity": "sha512-1apePfXM1UOSqw0o9IiFAovVz9M5S1Dg+4TrDwfMewQ6p/rmMueb7tWZjQ1rx4Loy1ArBggoqGpfqqdI4rondg==", + "dev": true + }, + "cliui": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/cliui/-/cliui-5.0.0.tgz", + "integrity": "sha512-PYeGSEmmHM6zvoef2w8TPzlrnNpXIjTipYK780YswmIP9vjxmd6Y2a3CB2Ks6/AU8NHjZugXvo8w3oWM2qnwXA==", "dev": true, "requires": { - "cliui": "^4.0.0", - "decamelize": "^1.2.0", - "find-up": "^3.0.0", - "get-caller-file": "^1.0.1", - "os-locale": "^3.0.0", - "require-directory": "^2.1.1", - "require-main-filename": "^1.0.1", - "set-blocking": "^2.0.0", - "string-width": "^2.0.0", - "which-module": "^2.0.0", - "y18n": "^3.2.1 || ^4.0.0", - "yargs-parser": "^11.1.1" + "string-width": "^3.1.0", + "strip-ansi": "^5.2.0", + "wrap-ansi": "^5.1.0" + } + }, + "get-caller-file": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/get-caller-file/-/get-caller-file-2.0.5.tgz", + "integrity": "sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg==", + "dev": true + }, + "require-main-filename": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/require-main-filename/-/require-main-filename-2.0.0.tgz", + "integrity": "sha512-NKN5kMDylKuldxYLSUfrbo5Tuzh4hd+2E8NPPX02mZtn1VuREQToYe/ZdlJy+J3uCpfaiGF05e7B8W0iXbQHmg==", + "dev": true + }, + "string-width": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-3.1.0.tgz", + "integrity": "sha512-vafcv6KjVZKSgz06oM/H6GDBrAtz8vdhQakGjFIvNrHA6y3HCF1CInLy+QLq8dTJPQ1b+KDUqDFctkdRW44e1w==", + "dev": true, + "requires": { + "emoji-regex": "^7.0.1", + "is-fullwidth-code-point": "^2.0.0", + "strip-ansi": "^5.1.0" + } + }, + "strip-ansi": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-5.2.0.tgz", + "integrity": "sha512-DuRs1gKbBqsMKIZlrffwlug8MHkcnpjs5VPmL1PAh+mA30U0DTotfDZ0d2UUsXpPmPmMMJ6W773MaA3J+lbiWA==", + "dev": true, + "requires": { + "ansi-regex": "^4.1.0" + } + }, + "wrap-ansi": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-5.1.0.tgz", + "integrity": "sha512-QC1/iN/2/RPVJ5jYK8BGttj5z83LmSKmvbvrXPNCLZSEb32KKVDJDl/MOt2N01qU2H/FkzEa9PKto1BqDjtd7Q==", + "dev": true, + "requires": { + "ansi-styles": "^3.2.0", + "string-width": "^3.0.0", + "strip-ansi": "^5.0.0" + } + }, + "yargs": { + "version": "13.3.2", + "resolved": "https://registry.npmjs.org/yargs/-/yargs-13.3.2.tgz", + "integrity": "sha512-AX3Zw5iPruN5ie6xGRIDgqkT+ZhnRlZMLMHAs8tg7nRruy2Nb+i5o9bwghAogtM08q1dpr2LVoS8KSTMYpWXUw==", + "dev": true, + "requires": { + "cliui": "^5.0.0", + "find-up": "^3.0.0", + "get-caller-file": "^2.0.1", + "require-directory": "^2.1.1", + "require-main-filename": "^2.0.0", + "set-blocking": "^2.0.0", + "string-width": "^3.0.0", + "which-module": "^2.0.0", + "y18n": "^4.0.0", + "yargs-parser": "^13.1.2" + } + }, + "yargs-parser": { + "version": "13.1.2", + "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-13.1.2.tgz", + "integrity": "sha512-3lbsNRf/j+A4QuSZfDRA7HRSfWrzO0YjqTJd5kjAq37Zep1CEgaYmrH9Q3GwPiB9cHyd1Y1UwggGhJGoxipbzg==", + "dev": true, + "requires": { + "camelcase": "^5.0.0", + "decamelize": "^1.2.0" } } } }, - "console-browserify": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/console-browserify/-/console-browserify-1.1.0.tgz", - "integrity": "sha1-8CQcRXMKn8YyOyBtvzjtx0HQuxA=", - "dev": true, - "requires": { - "date-now": "^0.1.4" - } - }, "convert-source-map": { "version": "1.6.0", "resolved": "https://registry.npmjs.org/convert-source-map/-/convert-source-map-1.6.0.tgz", @@ -1354,9 +1700,9 @@ } }, "crc32-stream": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/crc32-stream/-/crc32-stream-3.0.1.tgz", - "integrity": "sha512-mctvpXlbzsvK+6z8kJwSJ5crm7yBwrQMTybJzMw1O4lLGJqjlDCXY2Zw7KheiA6XBEcBmfLx1D88mjRGVJtY9w==", + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/crc32-stream/-/crc32-stream-4.0.0.tgz", + "integrity": "sha512-tyMw2IeUX6t9jhgXI6um0eKfWq4EIDpfv5m7GX4Jzp7eVelQ360xd8EPXJhp2mHwLQIkqlnMLjzqSZI3a+0wRw==", "dev": true, "requires": { "crc": "^3.4.4", @@ -1456,15 +1802,9 @@ } }, "date-fns": { - "version": "1.30.1", - "resolved": "https://registry.npmjs.org/date-fns/-/date-fns-1.30.1.tgz", - "integrity": "sha512-hBSVCvSmWC+QypYObzwGOd9wqdDpOt+0wl0KbU+R+uuZBS1jN8VsD1ss3irQDknRj5NvxiTF6oj/nDRnN/UQNw==", - "dev": true - }, - "date-now": { - "version": "0.1.4", - "resolved": "https://registry.npmjs.org/date-now/-/date-now-0.1.4.tgz", - "integrity": "sha1-6vQ5/U1ISK105cx9vvIAZyueNFs=", + "version": "2.15.0", + "resolved": "https://registry.npmjs.org/date-fns/-/date-fns-2.15.0.tgz", + "integrity": "sha512-ZCPzAMJZn3rNUvvQIMlXhDr4A+Ar07eLeGsGREoWU19a3Pqf5oYa+ccd+B3F6XVtQY6HANMFdOQ8A+ipFnvJdQ==", "dev": true }, "debug": { @@ -1641,10 +1981,40 @@ "integrity": "sha1-9B8cEL5LAOh7XxPaaAdZ8sW/0+I=", "dev": true }, + "devtools": { + "version": "6.5.0", + "resolved": "https://registry.npmjs.org/devtools/-/devtools-6.5.0.tgz", + "integrity": "sha512-P/9+jSK+Jq4gWO5a79OLtDsZPcrNZN9JDCqWdCmKcbCCikV3fYic+0wmRzAPff8iYLCdmNXf/no4XMLwXR5LXQ==", + "dev": true, + "requires": { + "@wdio/config": "6.4.7", + "@wdio/logger": "6.4.7", + "@wdio/protocols": "6.3.6", + "@wdio/utils": "6.5.0", + "chrome-launcher": "^0.13.1", + "puppeteer-core": "^5.1.0", + "ua-parser-js": "^0.7.21", + "uuid": "^8.0.0" + }, + "dependencies": { + "uuid": { + "version": "8.3.0", + "resolved": "https://registry.npmjs.org/uuid/-/uuid-8.3.0.tgz", + "integrity": "sha512-fX6Z5o4m6XsXBdli9g7DtWgAx+osMsRRZFKma1mIUsLCz6vRvv+pz5VNbyu9UEDzpMWulZfvpgb/cmDXVulYFQ==", + "dev": true + } + } + }, + "devtools-protocol": { + "version": "0.0.799653", + "resolved": "https://registry.npmjs.org/devtools-protocol/-/devtools-protocol-0.0.799653.tgz", + "integrity": "sha512-t1CcaZbvm8pOlikqrsIM9GOa7Ipp07+4h/q9u0JXBWjPCjHdBl9KkddX87Vv9vBHoBGtwV79sYQNGnQM6iS5gg==", + "dev": true + }, "diff": { - "version": "3.5.0", - "resolved": "https://registry.npmjs.org/diff/-/diff-3.5.0.tgz", - "integrity": "sha512-A46qtFgd+g7pDZinpnwiRJtxbC1hpgf0uzP3iG89scHk0AUC7A1TGxf5OiiOUv/JMZR8GOt8hL900hV0bOy5xA==", + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/diff/-/diff-4.0.2.tgz", + "integrity": "sha512-58lmxKSA4BNyLz+HHMUzlOEpg09FV+ev6ZMe3vJihgdxzgcwZ8VoEEPmALCZG9LmqfVoNMMKpttIYTVG6uDY7A==", "dev": true }, "doctrine": { @@ -1656,36 +2026,6 @@ "esutils": "^2.0.2" } }, - "dom-serializer": { - "version": "0.2.2", - "resolved": "https://registry.npmjs.org/dom-serializer/-/dom-serializer-0.2.2.tgz", - "integrity": "sha512-2/xPb3ORsQ42nHYiSunXkDjPLBaEj/xTwUO4B7XCZQTRk7EBtTOPaygh10YAAh2OI1Qrp6NWfpAhzswj0ydt9g==", - "dev": true, - "requires": { - "domelementtype": "^2.0.1", - "entities": "^2.0.0" - }, - "dependencies": { - "domelementtype": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/domelementtype/-/domelementtype-2.0.1.tgz", - "integrity": "sha512-5HOHUDsYZWV8FGWN0Njbr/Rn7f/eWSQi1v7+HsUVwXgn8nWWlL64zKDkS0n8ZmQ3mlWOMuXOnR+7Nx/5tMO5AQ==", - "dev": true - }, - "entities": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/entities/-/entities-2.0.0.tgz", - "integrity": "sha512-D9f7V0JSRwIxlRI2mjMqufDrRDnx8p+eEOz7aUM9SuvF8gsBzra0/6tbjl1m8eQHrZlYj6PxqE00hZ1SAIKPLw==", - "dev": true - } - } - }, - "domelementtype": { - "version": "1.3.1", - "resolved": "https://registry.npmjs.org/domelementtype/-/domelementtype-1.3.1.tgz", - "integrity": "sha512-BSKB+TSpMpFI/HOxCNr1O8aMOTZ8hT3pM3GQ0w/mWRmkhEDSFJkkyzz4XQsBV44BChwGkrDfMyjVD0eA2aFV3w==", - "dev": true - }, "domexception": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/domexception/-/domexception-1.0.1.tgz", @@ -1694,25 +2034,6 @@ "webidl-conversions": "^4.0.2" } }, - "domhandler": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/domhandler/-/domhandler-2.3.0.tgz", - "integrity": "sha1-LeWaCCLVAn+r/28DLCsloqir5zg=", - "dev": true, - "requires": { - "domelementtype": "1" - } - }, - "domutils": { - "version": "1.5.1", - "resolved": "https://registry.npmjs.org/domutils/-/domutils-1.5.1.tgz", - "integrity": "sha1-3NhIiib1Y9YQeeSMn3t+Mjc2gs8=", - "dev": true, - "requires": { - "dom-serializer": "0", - "domelementtype": "1" - } - }, "duplexer3": { "version": "0.1.4", "resolved": "https://registry.npmjs.org/duplexer3/-/duplexer3-0.1.4.tgz", @@ -1771,11 +2092,22 @@ "once": "^1.4.0" } }, - "entities": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/entities/-/entities-1.0.0.tgz", - "integrity": "sha1-sph6o4ITR/zeZCsk/fyeT7cSvyY=", - "dev": true + "enquirer": { + "version": "2.3.6", + "resolved": "https://registry.npmjs.org/enquirer/-/enquirer-2.3.6.tgz", + "integrity": "sha512-yjNnPr315/FjS4zIsUxYguYUPP2e1NK4d7E7ZOLiyYCcbFBiTMyID+2wvm2w6+pZ/odMA7cRkjhsPbltwBOrLg==", + "dev": true, + "requires": { + "ansi-colors": "^4.1.1" + }, + "dependencies": { + "ansi-colors": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/ansi-colors/-/ansi-colors-4.1.1.tgz", + "integrity": "sha512-JoX0apGbHaUJBNl6yF+p6JAFYZ666/hhCGKN5t9QFjbJQKUU/g8MNbFDbvfrgKXvI1QpZplPOnwIo99lX/AAmA==", + "dev": true + } + } }, "error-ex": { "version": "1.3.2", @@ -1787,22 +2119,51 @@ } }, "es-abstract": { - "version": "1.17.5", - "resolved": "https://registry.npmjs.org/es-abstract/-/es-abstract-1.17.5.tgz", - "integrity": "sha512-BR9auzDbySxOcfog0tLECW8l28eRGpDpU3Dm3Hp4q/N+VtLTmyj4EUN088XZWQDW/hzj6sYRDXeOFsaAODKvpg==", + "version": "1.17.6", + "resolved": "https://registry.npmjs.org/es-abstract/-/es-abstract-1.17.6.tgz", + "integrity": "sha512-Fr89bON3WFyUi5EvAeI48QTWX0AyekGgLA8H+c+7fbfCkJwRWRMLd8CQedNEyJuoYYhmtEqY92pgte1FAhBlhw==", "dev": true, "requires": { "es-to-primitive": "^1.2.1", "function-bind": "^1.1.1", "has": "^1.0.3", "has-symbols": "^1.0.1", - "is-callable": "^1.1.5", - "is-regex": "^1.0.5", + "is-callable": "^1.2.0", + "is-regex": "^1.1.0", "object-inspect": "^1.7.0", "object-keys": "^1.1.1", "object.assign": "^4.1.0", - "string.prototype.trimleft": "^2.1.1", - "string.prototype.trimright": "^2.1.1" + "string.prototype.trimend": "^1.0.1", + "string.prototype.trimstart": "^1.0.1" + }, + "dependencies": { + "has-symbols": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/has-symbols/-/has-symbols-1.0.1.tgz", + "integrity": "sha512-PLcsoqu++dmEIZB+6totNFKq/7Do+Z0u4oT0zKOJNl3lYK6vGwwu2hjHs+68OEZbTjiUE9bgOABXbP/GvrS0Kg==", + "dev": true + } + } + }, + "es-array-method-boxes-properly": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/es-array-method-boxes-properly/-/es-array-method-boxes-properly-1.0.0.tgz", + "integrity": "sha512-wd6JXUmyHmt8T5a2xreUwKcGPq6f1f+WwIJkijUqiGcJz1qqnZgP6XIK+QyIWU5lT7imeNxUll48bziG+TSYcA==", + "dev": true + }, + "es-get-iterator": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/es-get-iterator/-/es-get-iterator-1.1.0.tgz", + "integrity": "sha512-UfrmHuWQlNMTs35e1ypnvikg6jCz3SK8v8ImvmDsh36fCVUR1MqoFDiyn0/k52C8NqO3YsO8Oe0azeesNuqSsQ==", + "dev": true, + "requires": { + "es-abstract": "^1.17.4", + "has-symbols": "^1.0.1", + "is-arguments": "^1.0.4", + "is-map": "^2.0.1", + "is-set": "^2.0.1", + "is-string": "^1.0.5", + "isarray": "^2.0.5" }, "dependencies": { "has-symbols": { @@ -1810,6 +2171,12 @@ "resolved": "https://registry.npmjs.org/has-symbols/-/has-symbols-1.0.1.tgz", "integrity": "sha512-PLcsoqu++dmEIZB+6totNFKq/7Do+Z0u4oT0zKOJNl3lYK6vGwwu2hjHs+68OEZbTjiUE9bgOABXbP/GvrS0Kg==", "dev": true + }, + "isarray": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/isarray/-/isarray-2.0.5.tgz", + "integrity": "sha512-xHjhDr3cNBK0BzdUJSPXZntQUx/mwMS5Rw4A7lPJ90XGAO6ISP/ePDNuo0vhqOZU+UD5JoodwCAAoZQd3FeAKw==", + "dev": true } } }, @@ -1868,6 +2235,12 @@ "es6-symbol": "^3.1.1" } }, + "escalade": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/escalade/-/escalade-3.0.2.tgz", + "integrity": "sha512-gPYAU37hYCUhW5euPeR+Y74F7BL+IBsV93j5cvGriSaD1aG6MGsqsV1yamRdrWrb2j3aiZvb0X+UBOWpx3JWtQ==", + "dev": true + }, "escape-string-regexp": { "version": "1.0.5", "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz", @@ -1887,62 +2260,229 @@ } }, "eslint": { - "version": "5.16.0", - "resolved": "https://registry.npmjs.org/eslint/-/eslint-5.16.0.tgz", - "integrity": "sha512-S3Rz11i7c8AA5JPv7xAH+dOyq/Cu/VXHiHXBPOU1k/JAM5dXqQPt3qcrhpHSorXmrpu2g0gkIBVXAqCpzfoZIg==", + "version": "7.9.0", + "resolved": "https://registry.npmjs.org/eslint/-/eslint-7.9.0.tgz", + "integrity": "sha512-V6QyhX21+uXp4T+3nrNfI3hQNBDa/P8ga7LoQOenwrlEFXrEnUEE+ok1dMtaS3b6rmLXhT1TkTIsG75HMLbknA==", "dev": true, "requires": { "@babel/code-frame": "^7.0.0", - "ajv": "^6.9.1", - "chalk": "^2.1.0", - "cross-spawn": "^6.0.5", + "@eslint/eslintrc": "^0.1.3", + "ajv": "^6.10.0", + "chalk": "^4.0.0", + "cross-spawn": "^7.0.2", "debug": "^4.0.1", "doctrine": "^3.0.0", - "eslint-scope": "^4.0.3", - "eslint-utils": "^1.3.1", - "eslint-visitor-keys": "^1.0.0", - "espree": "^5.0.1", - "esquery": "^1.0.1", + "enquirer": "^2.3.5", + "eslint-scope": "^5.1.0", + "eslint-utils": "^2.1.0", + "eslint-visitor-keys": "^1.3.0", + "espree": "^7.3.0", + "esquery": "^1.2.0", "esutils": "^2.0.2", "file-entry-cache": "^5.0.1", "functional-red-black-tree": "^1.0.1", - "glob": "^7.1.2", - "globals": "^11.7.0", + "glob-parent": "^5.0.0", + "globals": "^12.1.0", "ignore": "^4.0.6", "import-fresh": "^3.0.0", "imurmurhash": "^0.1.4", - "inquirer": "^6.2.2", - "js-yaml": "^3.13.0", + "is-glob": "^4.0.0", + "js-yaml": "^3.13.1", "json-stable-stringify-without-jsonify": "^1.0.1", - "levn": "^0.3.0", - "lodash": "^4.17.11", + "levn": "^0.4.1", + "lodash": "^4.17.19", "minimatch": "^3.0.4", - "mkdirp": "^0.5.1", "natural-compare": "^1.4.0", - "optionator": "^0.8.2", - "path-is-inside": "^1.0.2", + "optionator": "^0.9.1", "progress": "^2.0.0", - "regexpp": "^2.0.1", - "semver": "^5.5.1", - "strip-ansi": "^4.0.0", - "strip-json-comments": "^2.0.1", + "regexpp": "^3.1.0", + "semver": "^7.2.1", + "strip-ansi": "^6.0.0", + "strip-json-comments": "^3.1.0", "table": "^5.2.3", - "text-table": "^0.2.0" + "text-table": "^0.2.0", + "v8-compile-cache": "^2.0.3" }, "dependencies": { - "minimist": { - "version": "1.2.5", - "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.5.tgz", - "integrity": "sha512-FM9nNUYrRBAELZQT3xeZQ7fmMOBg6nWNmJKTcgsJeaLstP/UODVpGsr5OhXhhXg6f+qtJ8uiZ+PUxkDWcgIXLw==", + "ansi-regex": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.0.tgz", + "integrity": "sha512-bY6fj56OUQ0hU1KjFNDQuJFezqKdrAyFdIevADiqrWHwSlbmBNMHp5ak2f40Pm8JTFyM2mqxkG6ngkHO11f/lg==", "dev": true }, - "mkdirp": { - "version": "0.5.4", - "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.4.tgz", - "integrity": "sha512-iG9AK/dJLtJ0XNgTuDbSyNS3zECqDlAhnQW4CsNxBG3LQJBbHmRX1egw39DmtOdCAqY+dKXV+sgPgilNWUKMVw==", + "ansi-styles": { + "version": "4.2.1", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.2.1.tgz", + "integrity": "sha512-9VGjrMsG1vePxcSweQsN20KY/c4zN0h9fLjqAbwbPfahM3t+NL+M9HC8xeXG2I8pX5NoamTGNuomEUFI7fcUjA==", "dev": true, "requires": { - "minimist": "^1.2.5" + "@types/color-name": "^1.1.1", + "color-convert": "^2.0.1" + } + }, + "chalk": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.0.tgz", + "integrity": "sha512-qwx12AxXe2Q5xQ43Ac//I6v5aXTipYrSESdOgzrN+9XjgEpyjpKuvSGaN4qE93f7TQTlerQQ8S+EQ0EyDoVL1A==", + "dev": true, + "requires": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + } + }, + "color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "dev": true, + "requires": { + "color-name": "~1.1.4" + } + }, + "color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "dev": true + }, + "cross-spawn": { + "version": "7.0.3", + "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.3.tgz", + "integrity": "sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w==", + "dev": true, + "requires": { + "path-key": "^3.1.0", + "shebang-command": "^2.0.0", + "which": "^2.0.1" + } + }, + "eslint-visitor-keys": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-1.3.0.tgz", + "integrity": "sha512-6J72N8UNa462wa/KFODt/PJ3IU60SDpC3QXC1Hjc1BXXpfL2C9R5+AU7jhe0F6GREqVMh4Juu+NY7xn+6dipUQ==", + "dev": true + }, + "glob-parent": { + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.1.tgz", + "integrity": "sha512-FnI+VGOpnlGHWZxthPGR+QhR78fuiK0sNLkHQv+bL9fQi57lNNdquIbna/WrfROrolq8GK5Ek6BiMwqL/voRYQ==", + "dev": true, + "requires": { + "is-glob": "^4.0.1" + } + }, + "globals": { + "version": "12.4.0", + "resolved": "https://registry.npmjs.org/globals/-/globals-12.4.0.tgz", + "integrity": "sha512-BWICuzzDvDoH54NHKCseDanAhE3CeDorgDL5MT6LMXXj2WCnd9UC2szdk4AWLfjdgNBCXLUanXYcpBBKOSWGwg==", + "dev": true, + "requires": { + "type-fest": "^0.8.1" + } + }, + "has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "dev": true + }, + "levn": { + "version": "0.4.1", + "resolved": "https://registry.npmjs.org/levn/-/levn-0.4.1.tgz", + "integrity": "sha512-+bT2uH4E5LGE7h/n3evcS/sQlJXCpIp6ym8OWJ5eV6+67Dsql/LaaT7qJBAt2rzfoa/5QBGBhxDix1dMt2kQKQ==", + "dev": true, + "requires": { + "prelude-ls": "^1.2.1", + "type-check": "~0.4.0" + } + }, + "optionator": { + "version": "0.9.1", + "resolved": "https://registry.npmjs.org/optionator/-/optionator-0.9.1.tgz", + "integrity": "sha512-74RlY5FCnhq4jRxVUPKDaRwrVNXMqsGsiW6AJw4XK8hmtm10wC0ypZBLw5IIp85NZMr91+qd1RvvENwg7jjRFw==", + "dev": true, + "requires": { + "deep-is": "^0.1.3", + "fast-levenshtein": "^2.0.6", + "levn": "^0.4.1", + "prelude-ls": "^1.2.1", + "type-check": "^0.4.0", + "word-wrap": "^1.2.3" + } + }, + "path-key": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/path-key/-/path-key-3.1.1.tgz", + "integrity": "sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==", + "dev": true + }, + "prelude-ls": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/prelude-ls/-/prelude-ls-1.2.1.tgz", + "integrity": "sha512-vkcDPrRZo1QZLbn5RLGPpg/WmIQ65qoWWhcGKf/b5eplkkarX0m9z8ppCat4mlOqUsWpyNuYgO3VRyrYHSzX5g==", + "dev": true + }, + "semver": { + "version": "7.3.2", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.2.tgz", + "integrity": "sha512-OrOb32TeeambH6UrhtShmF7CRDqhL6/5XpPNp2DuRH6+9QLw/orhp72j87v8Qa1ScDkvrrBNpZcDejAirJmfXQ==", + "dev": true + }, + "shebang-command": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-2.0.0.tgz", + "integrity": "sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==", + "dev": true, + "requires": { + "shebang-regex": "^3.0.0" + } + }, + "shebang-regex": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-3.0.0.tgz", + "integrity": "sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==", + "dev": true + }, + "strip-ansi": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.0.tgz", + "integrity": "sha512-AuvKTrTfQNYNIctbR1K/YGTR1756GycPsg7b9bdV9Duqur4gv6aKqHXah67Z8ImS7WEz5QVcOtlfW2rZEugt6w==", + "dev": true, + "requires": { + "ansi-regex": "^5.0.0" + } + }, + "strip-json-comments": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-3.1.1.tgz", + "integrity": "sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig==", + "dev": true + }, + "supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "dev": true, + "requires": { + "has-flag": "^4.0.0" + } + }, + "type-check": { + "version": "0.4.0", + "resolved": "https://registry.npmjs.org/type-check/-/type-check-0.4.0.tgz", + "integrity": "sha512-XleUoc9uwGXqjWwXaUTZAmzMcFZ5858QA2vvx1Ur5xIcixXIP+8LnFDgRplU30us6teqdlskFfu+ae4K79Ooew==", + "dev": true, + "requires": { + "prelude-ls": "^1.2.1" + } + }, + "which": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/which/-/which-2.0.2.tgz", + "integrity": "sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==", + "dev": true, + "requires": { + "isexe": "^2.0.0" } } } @@ -1954,22 +2494,22 @@ "dev": true }, "eslint-scope": { - "version": "4.0.3", - "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-4.0.3.tgz", - "integrity": "sha512-p7VutNr1O/QrxysMo3E45FjYDTeXBy0iTltPFNSqKAIfjDSXC+4dj+qfyuD8bfAXrW/y6lW3O76VaYNPKfpKrg==", + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-5.1.1.tgz", + "integrity": "sha512-2NxwbF/hZ0KpepYN0cNbo+FN6XoK7GaHlQhgx/hIZl6Va0bF45RQOOwhLIy8lQDbuCiadSLCBnH2CFYquit5bw==", "dev": true, "requires": { - "esrecurse": "^4.1.0", + "esrecurse": "^4.3.0", "estraverse": "^4.1.1" } }, "eslint-utils": { - "version": "1.4.2", - "resolved": "https://registry.npmjs.org/eslint-utils/-/eslint-utils-1.4.2.tgz", - "integrity": "sha512-eAZS2sEUMlIeCjBeubdj45dmBHQwPHWyBcT1VSYB7o9x9WRRqKxyUoiXlRjyAwzN7YEzHJlYg0NmzDRWx6GP4Q==", + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/eslint-utils/-/eslint-utils-2.1.0.tgz", + "integrity": "sha512-w94dQYoauyvlDc43XnGB8lU3Zt713vNChgt4EWwhXAP2XkBvndfxF0AgIqKOOasjPIPzj9JqgwkwbCYD0/V3Zg==", "dev": true, "requires": { - "eslint-visitor-keys": "^1.0.0" + "eslint-visitor-keys": "^1.1.0" } }, "eslint-visitor-keys": { @@ -1979,14 +2519,28 @@ "dev": true }, "espree": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/espree/-/espree-5.0.1.tgz", - "integrity": "sha512-qWAZcWh4XE/RwzLJejfcofscgMc9CamR6Tn1+XRXNzrvUSSbiAjGOI/fggztjIi7y9VLPqnICMIPiGyr8JaZ0A==", + "version": "7.3.0", + "resolved": "https://registry.npmjs.org/espree/-/espree-7.3.0.tgz", + "integrity": "sha512-dksIWsvKCixn1yrEXO8UosNSxaDoSYpq9reEjZSbHLpT5hpaCAKTLBwq0RHtLrIr+c0ByiYzWT8KTMRzoRCNlw==", "dev": true, "requires": { - "acorn": "^6.0.7", - "acorn-jsx": "^5.0.0", - "eslint-visitor-keys": "^1.0.0" + "acorn": "^7.4.0", + "acorn-jsx": "^5.2.0", + "eslint-visitor-keys": "^1.3.0" + }, + "dependencies": { + "acorn": { + "version": "7.4.0", + "resolved": "https://registry.npmjs.org/acorn/-/acorn-7.4.0.tgz", + "integrity": "sha512-+G7P8jJmCHr+S+cLfQxygbWhXy+8YTVGzAkpEbcLo2mLoL7tij/VG41QSHACSf5QgYRhMZYHuNc6drJaO0Da+w==", + "dev": true + }, + "eslint-visitor-keys": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-1.3.0.tgz", + "integrity": "sha512-6J72N8UNa462wa/KFODt/PJ3IU60SDpC3QXC1Hjc1BXXpfL2C9R5+AU7jhe0F6GREqVMh4Juu+NY7xn+6dipUQ==", + "dev": true + } } }, "esprima": { @@ -1995,21 +2549,37 @@ "integrity": "sha1-/cpRzuYTOJXjyI1TXOSdv/YqRjM=" }, "esquery": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/esquery/-/esquery-1.0.1.tgz", - "integrity": "sha512-SmiyZ5zIWH9VM+SRUReLS5Q8a7GxtRdxEBVZpm98rJM7Sb+A9DVCndXfkeFUd3byderg+EbDkfnevfCwynWaNA==", + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/esquery/-/esquery-1.3.1.tgz", + "integrity": "sha512-olpvt9QG0vniUBZspVRN6lwB7hOZoTRtT+jzR+tS4ffYx2mzbw+z0XCOk44aaLYKApNX5nMm+E+P6o25ip/DHQ==", "dev": true, "requires": { - "estraverse": "^4.0.0" + "estraverse": "^5.1.0" + }, + "dependencies": { + "estraverse": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-5.2.0.tgz", + "integrity": "sha512-BxbNGGNm0RyRYvUdHpIwv9IWzeM9XClbOxwoATuFdOE7ZE6wHL+HQ5T8hoPM+zHvmKzzsEqhgy0GrQ5X13afiQ==", + "dev": true + } } }, "esrecurse": { - "version": "4.2.1", - "resolved": "https://registry.npmjs.org/esrecurse/-/esrecurse-4.2.1.tgz", - "integrity": "sha512-64RBB++fIOAXPw3P9cy89qfMlvZEXZkqqJkjqqXIvzP5ezRZjW+lPWjw35UX/3EhUPFYbg5ER4JYgDw4007/DQ==", + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/esrecurse/-/esrecurse-4.3.0.tgz", + "integrity": "sha512-KmfKL3b6G+RXvP8N1vr3Tq1kL/oCFgn2NYXEtqP8/L3pKapUA4G8cFVaoF3SU323CD4XypR/ffioHmkti6/Tag==", "dev": true, "requires": { - "estraverse": "^4.1.0" + "estraverse": "^5.2.0" + }, + "dependencies": { + "estraverse": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-5.2.0.tgz", + "integrity": "sha512-BxbNGGNm0RyRYvUdHpIwv9IWzeM9XClbOxwoATuFdOE7ZE6wHL+HQ5T8hoPM+zHvmKzzsEqhgy0GrQ5X13afiQ==", + "dev": true + } } }, "estraverse": { @@ -2053,12 +2623,6 @@ "strip-eof": "^1.0.0" } }, - "exit": { - "version": "0.1.2", - "resolved": "https://registry.npmjs.org/exit/-/exit-0.1.2.tgz", - "integrity": "sha1-BjJjj42HfMghB9MKD/8aF8uhzQw=", - "dev": true - }, "expand-brackets": { "version": "2.1.4", "resolved": "https://registry.npmjs.org/expand-brackets/-/expand-brackets-2.1.4.tgz", @@ -2144,17 +2708,6 @@ } } }, - "external-editor": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/external-editor/-/external-editor-3.1.0.tgz", - "integrity": "sha512-hMQ4CX1p1izmuLYyZqLMO/qGNw10wSv9QDCPfzXfyFrOaCSSoRfqE1Kf1s5an66J5JZC62NewG+mK49jOCtQew==", - "dev": true, - "requires": { - "chardet": "^0.7.0", - "iconv-lite": "^0.4.24", - "tmp": "^0.0.33" - } - }, "extglob": { "version": "2.0.4", "resolved": "https://registry.npmjs.org/extglob/-/extglob-2.0.4.tgz", @@ -2220,6 +2773,29 @@ } } }, + "extract-zip": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/extract-zip/-/extract-zip-2.0.1.tgz", + "integrity": "sha512-GDhU9ntwuKyGXdZBUgTIe+vXnWj0fppUEtMDL0+idd5Sta8TGpHssn/eusA9mrPr9qNDym6SxAYZjNvCn/9RBg==", + "dev": true, + "requires": { + "@types/yauzl": "^2.9.1", + "debug": "^4.1.1", + "get-stream": "^5.1.0", + "yauzl": "^2.10.0" + }, + "dependencies": { + "get-stream": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-5.2.0.tgz", + "integrity": "sha512-nBF+F1rAZVCu/p7rjzgA+Yb4lfYXrpl7a6VmJrU8wF9I1CKvP/QwPNZHnOlwbTkY6dvtFIzFMSyQXbLoTQPRpA==", + "dev": true, + "requires": { + "pump": "^3.0.0" + } + } + } + }, "extsprintf": { "version": "1.3.0", "resolved": "https://registry.npmjs.org/extsprintf/-/extsprintf-1.3.0.tgz", @@ -2261,15 +2837,6 @@ "pend": "~1.2.0" } }, - "figures": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/figures/-/figures-2.0.0.tgz", - "integrity": "sha1-OrGi0qYsi/tDGgyUy3l6L84nyWI=", - "dev": true, - "requires": { - "escape-string-regexp": "^1.0.5" - } - }, "file-entry-cache": { "version": "5.0.1", "resolved": "https://registry.npmjs.org/file-entry-cache/-/file-entry-cache-5.0.1.tgz", @@ -2382,9 +2949,9 @@ } }, "flatted": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/flatted/-/flatted-2.0.1.tgz", - "integrity": "sha512-a1hQMktqW9Nmqr5aktAux3JMNqaucxGcjtjWnZLHX7yyPCmlSV3M54nGYbqT8K+0GhF3NBgmJCc3ma+WOgX8Jg==", + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/flatted/-/flatted-2.0.2.tgz", + "integrity": "sha512-r5wGx7YeOwNWNlCA0wQ86zKyDLMQr+/RB8xy74M4hTphfmjlijTSSXGuH8rnvKZnfT9i+75zmd8jcKdMR4O6jA==", "dev": true }, "flush-write-stream": { @@ -3031,9 +3598,9 @@ "dev": true }, "gaxios": { - "version": "2.3.2", - "resolved": "https://registry.npmjs.org/gaxios/-/gaxios-2.3.2.tgz", - "integrity": "sha512-K/+py7UvKRDaEwEKlLiRKrFr+wjGjsMz5qH7Vs549QJS7cpSCOT/BbWL7pzqECflc46FcNPipjSfB+V1m8PAhw==", + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/gaxios/-/gaxios-3.1.0.tgz", + "integrity": "sha512-DDTn3KXVJJigtz+g0J3vhcfbDbKtAroSTxauWsdnP57sM5KZ3d2c/3D9RKFJ86s43hfw6WULg6TXYw/AYiBlpA==", "dev": true, "requires": { "abort-controller": "^3.0.0", @@ -3063,6 +3630,12 @@ "integrity": "sha1-6td0q+5y4gQJQzoGY2YCPdaIekE=", "dev": true }, + "get-port": { + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/get-port/-/get-port-5.1.1.tgz", + "integrity": "sha512-g/Q1aTSDOxFpchXC4i8ZWvxA1lnPqx/JHqcpIw0/LX9T8x/GBbi6YnlN5nhaKIFkT8oFsscUKgDJYxfwfS6QsQ==", + "dev": true + }, "get-stream": { "version": "4.1.0", "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-4.1.0.tgz", @@ -3193,74 +3766,109 @@ } }, "google-closure-compiler": { - "version": "20200101.0.0", - "resolved": "https://registry.npmjs.org/google-closure-compiler/-/google-closure-compiler-20200101.0.0.tgz", - "integrity": "sha512-UVDxedg7jbi1F+R4KSWezIZcjB4+4EJSvd2Tf/+J8vw5+6BjBFaIv5E3vy9nTpSXorKIUheJPzE+lt9GRc3Fdg==", + "version": "20200830.0.0", + "resolved": "https://registry.npmjs.org/google-closure-compiler/-/google-closure-compiler-20200830.0.0.tgz", + "integrity": "sha512-Pri8kyHGmd2xqLM38QBarx+fdkm2HuLniGz7GimbdjQ1KUuPNIz7IJOYc8NGGwYPGAB45vg4IZRk/LepAqnoxg==", "dev": true, "requires": { "chalk": "2.x", - "google-closure-compiler-java": "^20200101.0.0", - "google-closure-compiler-js": "^20200101.0.0", - "google-closure-compiler-linux": "^20200101.0.0", - "google-closure-compiler-osx": "^20200101.0.0", - "google-closure-compiler-windows": "^20200101.0.0", + "google-closure-compiler-java": "^20200830.0.0", + "google-closure-compiler-linux": "^20200830.0.0", + "google-closure-compiler-osx": "^20200830.0.0", + "google-closure-compiler-windows": "^20200830.0.0", "minimist": "1.x", "vinyl": "2.x", "vinyl-sourcemaps-apply": "^0.2.0" - }, - "dependencies": { - "minimist": { - "version": "1.2.5", - "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.5.tgz", - "integrity": "sha512-FM9nNUYrRBAELZQT3xeZQ7fmMOBg6nWNmJKTcgsJeaLstP/UODVpGsr5OhXhhXg6f+qtJ8uiZ+PUxkDWcgIXLw==", - "dev": true - } } }, "google-closure-compiler-java": { - "version": "20200101.0.0", - "resolved": "https://registry.npmjs.org/google-closure-compiler-java/-/google-closure-compiler-java-20200101.0.0.tgz", - "integrity": "sha512-hW4FjcEO3wAu7p/Cz8zwQIggvVio0SmnVzImukK8A6suAyHLiLDX5vhFPC31a/jyZ8uxfUSEImWrt/SFdKt0eA==", + "version": "20200830.0.0", + "resolved": "https://registry.npmjs.org/google-closure-compiler-java/-/google-closure-compiler-java-20200830.0.0.tgz", + "integrity": "sha512-DLlcY875mQB7PA9wtfbPBVL9chJj+si/cmxyp3euw7x09MiFYynR4tmQJ9KjWUffPbhvCRDEO/jKcVyNWQVS1Q==", "dev": true }, "google-closure-compiler-js": { - "version": "20200101.0.0", - "resolved": "https://registry.npmjs.org/google-closure-compiler-js/-/google-closure-compiler-js-20200101.0.0.tgz", - "integrity": "sha512-0PdYhSU2FWkLU7eUg+0+BlnJHcGLMhWB69SzQ/0z7qBES/tuor7ruHi7HUopKaxQwhblC4DtDb8IDinieY+R1w==", + "version": "20200719.0.0", + "resolved": "https://registry.npmjs.org/google-closure-compiler-js/-/google-closure-compiler-js-20200719.0.0.tgz", + "integrity": "sha512-cuowL5A4VOx9yxxMc3sSiqcj/d9aYjnHgFDvDB/dpMMOhlUMN1MDsVubuEc32tut7k/FTYFZY114CLH4r2q9/A==", "dev": true }, "google-closure-compiler-linux": { - "version": "20200101.0.0", - "resolved": "https://registry.npmjs.org/google-closure-compiler-linux/-/google-closure-compiler-linux-20200101.0.0.tgz", - "integrity": "sha512-8S1WMbRPrBXV6SUi0DyzHa9EPmyNJ8FcBUG3tIrS6hoQIP71kZl+TrSOwwUAZYKf7KhXl41P3HPMFnI4LXbtrw==", + "version": "20200830.0.0", + "resolved": "https://registry.npmjs.org/google-closure-compiler-linux/-/google-closure-compiler-linux-20200830.0.0.tgz", + "integrity": "sha512-QfxFA3+fOrNe0RH2lcXmkdiaM97KvZQOtO3trobNvfkMNr2h9OUtpXkqWExwolo/jsJWNumsdaRnEAwEthMUOw==", "dev": true, "optional": true }, "google-closure-compiler-osx": { - "version": "20200101.0.0", - "resolved": "https://registry.npmjs.org/google-closure-compiler-osx/-/google-closure-compiler-osx-20200101.0.0.tgz", - "integrity": "sha512-rZh2+4/JwhKLVSwOWKBp+WJnLZCfOq6MQW06ayulhvq3WjJ0Ny9XZTpLUKiEbnMQf7+ARcFb8zIeiUp0Q2aFqg==", + "version": "20200830.0.0", + "resolved": "https://registry.npmjs.org/google-closure-compiler-osx/-/google-closure-compiler-osx-20200830.0.0.tgz", + "integrity": "sha512-qHKjRBJVq2+2mT25eoT6iOMVbUGT02sJUwkdLlsohWKV4sMEY8/nwnkZYsdm7KnPJnmQLlrfYJ1ZTh1VTlAJpQ==", "dev": true, "optional": true }, "google-closure-compiler-windows": { - "version": "20200101.0.0", - "resolved": "https://registry.npmjs.org/google-closure-compiler-windows/-/google-closure-compiler-windows-20200101.0.0.tgz", - "integrity": "sha512-WcH6BPPSiQq1NnOO7PxKfS0FZ+mQRz4pIoRkrItafTKXWtBCL5NZWd8BjPayBJKxsmoiVFsOpkjzLe8ryBXciQ==", + "version": "20200830.0.0", + "resolved": "https://registry.npmjs.org/google-closure-compiler-windows/-/google-closure-compiler-windows-20200830.0.0.tgz", + "integrity": "sha512-IpJAyxJo+GQ2DSVC4sslPydhIPyWRINkdNynIK/Bk+vbM/7i4LoEm/Y5rY/KJOLRCSds+s3Ov9LYdFkN8C//7g==", "dev": true, "optional": true }, "google-closure-deps": { - "version": "20200101.0.0", - "resolved": "https://registry.npmjs.org/google-closure-deps/-/google-closure-deps-20200101.0.0.tgz", - "integrity": "sha512-iumjDwrhL9XTcBbiHUmFL9IzskZxNShQM4kEk6/NTTAhXvxxov3/IxFLetA62dHCIO9xBhnjrzlhb4CfOszqag==", + "version": "20200719.0.0", + "resolved": "https://registry.npmjs.org/google-closure-deps/-/google-closure-deps-20200719.0.0.tgz", + "integrity": "sha512-BFWth9JZgaUwapaHMexxQbw4H9f/23rkD+GNKsyazVl8RSWma1s7i5fI/3AdEDcpgFMsyNbnEb3uOpaetSE6gA==", "dev": true, "requires": { "argparse": "^1.0.9", - "google-closure-compiler": "^v20200101.0.0", + "google-closure-compiler": "^20200719.0.0", "yargs": "^12.0.2" }, "dependencies": { + "google-closure-compiler": { + "version": "20200719.0.0", + "resolved": "https://registry.npmjs.org/google-closure-compiler/-/google-closure-compiler-20200719.0.0.tgz", + "integrity": "sha512-2fZl8M6U7KTXami1joNo9e5hW88iZX1MGBSHWlDaeBqSYkvLUH2Qn/VltAQuluSRBIjPXXhxZGKHyJamVoFFnA==", + "dev": true, + "requires": { + "chalk": "2.x", + "google-closure-compiler-java": "^20200719.0.0", + "google-closure-compiler-js": "^20200719.0.0", + "google-closure-compiler-linux": "^20200719.0.0", + "google-closure-compiler-osx": "^20200719.0.0", + "google-closure-compiler-windows": "^20200719.0.0", + "minimist": "1.x", + "vinyl": "2.x", + "vinyl-sourcemaps-apply": "^0.2.0" + } + }, + "google-closure-compiler-java": { + "version": "20200719.0.0", + "resolved": "https://registry.npmjs.org/google-closure-compiler-java/-/google-closure-compiler-java-20200719.0.0.tgz", + "integrity": "sha512-/alYc8OC9zAETZ2m10OhtqI+PAs2b8y6cLn2VlN/53dHrCC6gKqj7Ajun/GAVAUOW4HMRMnpBYdCJgMLpAniSA==", + "dev": true + }, + "google-closure-compiler-linux": { + "version": "20200719.0.0", + "resolved": "https://registry.npmjs.org/google-closure-compiler-linux/-/google-closure-compiler-linux-20200719.0.0.tgz", + "integrity": "sha512-hqPP8/7g7IMhcVle9xJ0aeiI4oRCucUGrWtQ12VwswKu2tyXTk2BDcXj5WqHae6TDPUONikQ8MCJSIENGLBC2Q==", + "dev": true, + "optional": true + }, + "google-closure-compiler-osx": { + "version": "20200719.0.0", + "resolved": "https://registry.npmjs.org/google-closure-compiler-osx/-/google-closure-compiler-osx-20200719.0.0.tgz", + "integrity": "sha512-Y0RDdOAJ7CLya0pMjmLahiqh7b9aJGybKBTxPywK2CiJj1+z+EtvXN+QsaM0aSE8yvuvIbAWHOX4FjEXMRiTmw==", + "dev": true, + "optional": true + }, + "google-closure-compiler-windows": { + "version": "20200719.0.0", + "resolved": "https://registry.npmjs.org/google-closure-compiler-windows/-/google-closure-compiler-windows-20200719.0.0.tgz", + "integrity": "sha512-U1onpG6RaTpRlR2nac+4GPU27LhJMr4kB4meNihwGvPRXcLh1qVcrKo+BjBuoX+Oq8KFwjc+mif3ldmv4AZzew==", + "dev": true, + "optional": true + }, "yargs": { "version": "12.0.5", "resolved": "https://registry.npmjs.org/yargs/-/yargs-12.0.5.tgz", @@ -3529,57 +4137,108 @@ "string_decoder": "~0.10.x" } }, - "string_decoder": { - "version": "0.10.31", - "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-0.10.31.tgz", - "integrity": "sha1-YuIDvEF2bGwoyfyEMB2rHFMQ+pQ=", - "dev": true - } - } - }, - "gulp-rename": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/gulp-rename/-/gulp-rename-1.4.0.tgz", - "integrity": "sha512-swzbIGb/arEoFK89tPY58vg3Ok1bw+d35PfUNwWqdo7KM4jkmuGA78JiDNqR+JeZFaeeHnRg9N7aihX3YPmsyg==", - "dev": true - }, - "gulp-replace": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/gulp-replace/-/gulp-replace-1.0.0.tgz", - "integrity": "sha512-lgdmrFSI1SdhNMXZQbrC75MOl1UjYWlOWNbNRnz+F/KHmgxt3l6XstBoAYIdadwETFyG/6i+vWUSCawdC3pqOw==", - "dev": true, - "requires": { - "istextorbinary": "2.2.1", - "readable-stream": "^2.0.1", - "replacestream": "^4.0.0" - } - }, - "gulp-series": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/gulp-series/-/gulp-series-1.0.2.tgz", - "integrity": "sha1-gWGZA1AXh13QDUiIklBP659jCgs=", - "dev": true - }, - "gulp-shell": { - "version": "0.7.1", - "resolved": "https://registry.npmjs.org/gulp-shell/-/gulp-shell-0.7.1.tgz", - "integrity": "sha512-5dKf1eJDdBiUS4LKCt4tm9IkDnWeXKGCKjQG5EJj/bVeVOisAPse5RLxccGh1OtfbzQdOWCywu936DTB8isZRw==", - "dev": true, - "requires": { - "chalk": "^2.4.2", - "fancy-log": "^1.3.3", - "lodash.template": "^4.4.0", - "plugin-error": "^1.0.1", - "through2": "^3.0.1", - "tslib": "^1.9.3" - }, - "dependencies": { + "string_decoder": { + "version": "0.10.31", + "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-0.10.31.tgz", + "integrity": "sha1-YuIDvEF2bGwoyfyEMB2rHFMQ+pQ=", + "dev": true + } + } + }, + "gulp-rename": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/gulp-rename/-/gulp-rename-2.0.0.tgz", + "integrity": "sha512-97Vba4KBzbYmR5VBs9mWmK+HwIf5mj+/zioxfZhOKeXtx5ZjBk57KFlePf5nxq9QsTtFl0ejnHE3zTC9MHXqyQ==", + "dev": true + }, + "gulp-replace": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/gulp-replace/-/gulp-replace-1.0.0.tgz", + "integrity": "sha512-lgdmrFSI1SdhNMXZQbrC75MOl1UjYWlOWNbNRnz+F/KHmgxt3l6XstBoAYIdadwETFyG/6i+vWUSCawdC3pqOw==", + "dev": true, + "requires": { + "istextorbinary": "2.2.1", + "readable-stream": "^2.0.1", + "replacestream": "^4.0.0" + } + }, + "gulp-series": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/gulp-series/-/gulp-series-1.0.2.tgz", + "integrity": "sha1-gWGZA1AXh13QDUiIklBP659jCgs=", + "dev": true + }, + "gulp-shell": { + "version": "0.8.0", + "resolved": "https://registry.npmjs.org/gulp-shell/-/gulp-shell-0.8.0.tgz", + "integrity": "sha512-wHNCgmqbWkk1c6Gc2dOL5SprcoeujQdeepICwfQRo91DIylTE7a794VEE+leq3cE2YDoiS5ulvRfKVIEMazcTQ==", + "dev": true, + "requires": { + "chalk": "^3.0.0", + "fancy-log": "^1.3.3", + "lodash.template": "^4.5.0", + "plugin-error": "^1.0.1", + "through2": "^3.0.1", + "tslib": "^1.10.0" + }, + "dependencies": { + "ansi-styles": { + "version": "4.2.1", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.2.1.tgz", + "integrity": "sha512-9VGjrMsG1vePxcSweQsN20KY/c4zN0h9fLjqAbwbPfahM3t+NL+M9HC8xeXG2I8pX5NoamTGNuomEUFI7fcUjA==", + "dev": true, + "requires": { + "@types/color-name": "^1.1.1", + "color-convert": "^2.0.1" + } + }, + "chalk": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-3.0.0.tgz", + "integrity": "sha512-4D3B6Wf41KOYRFdszmDqMCGq5VV/uMAB273JILmO+3jAlh8X4qDtdtgCR3fxtbLEMzSx22QdhnDcJvu2u1fVwg==", + "dev": true, + "requires": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + } + }, + "color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "dev": true, + "requires": { + "color-name": "~1.1.4" + } + }, + "color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "dev": true + }, + "has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "dev": true + }, + "supports-color": { + "version": "7.1.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.1.0.tgz", + "integrity": "sha512-oRSIpR8pxT1Wr2FquTNnGet79b3BWljqOuoW/h4oBhxJ/HUbX5nX6JSruTkvXDCFMwDPvsaTTbvMLKZWSy0R5g==", + "dev": true, + "requires": { + "has-flag": "^4.0.0" + } + }, "through2": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/through2/-/through2-3.0.1.tgz", - "integrity": "sha512-M96dvTalPT3YbYLaKaCuwu+j06D/8Jfib0o/PxbVt6Amhv3dUAtW6rTV1jPgJSBG83I/e04Y6xkVdVhSRhi0ww==", + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/through2/-/through2-3.0.2.tgz", + "integrity": "sha512-enaDQ4MUyP2W6ZyT6EsMzqBPZaM/avg8iuo+l2d3QCs0J+6RaqkHV/2/lOwDTueBHeJ/2LG9lrLW3d5rWPucuQ==", "dev": true, "requires": { + "inherits": "^2.0.4", "readable-stream": "2 || 3" } } @@ -3750,45 +4409,6 @@ "whatwg-encoding": "^1.0.1" } }, - "htmlparser2": { - "version": "3.8.3", - "resolved": "https://registry.npmjs.org/htmlparser2/-/htmlparser2-3.8.3.tgz", - "integrity": "sha1-mWwosZFRaovoZQGn15dX5ccMEGg=", - "dev": true, - "requires": { - "domelementtype": "1", - "domhandler": "2.3", - "domutils": "1.5", - "entities": "1.0", - "readable-stream": "1.1" - }, - "dependencies": { - "isarray": { - "version": "0.0.1", - "resolved": "https://registry.npmjs.org/isarray/-/isarray-0.0.1.tgz", - "integrity": "sha1-ihis/Kmo9Bd+Cav8YDiTmwXR7t8=", - "dev": true - }, - "readable-stream": { - "version": "1.1.14", - "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-1.1.14.tgz", - "integrity": "sha1-fPTFTvZI44EwhMY23SB54WbAgdk=", - "dev": true, - "requires": { - "core-util-is": "~1.0.0", - "inherits": "~2.0.1", - "isarray": "0.0.1", - "string_decoder": "~0.10.x" - } - }, - "string_decoder": { - "version": "0.10.31", - "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-0.10.31.tgz", - "integrity": "sha1-YuIDvEF2bGwoyfyEMB2rHFMQ+pQ=", - "dev": true - } - } - }, "http-cache-semantics": { "version": "4.1.0", "resolved": "https://registry.npmjs.org/http-cache-semantics/-/http-cache-semantics-4.1.0.tgz", @@ -3805,6 +4425,16 @@ "sshpk": "^1.7.0" } }, + "http2-wrapper": { + "version": "1.0.0-beta.5.2", + "resolved": "https://registry.npmjs.org/http2-wrapper/-/http2-wrapper-1.0.0-beta.5.2.tgz", + "integrity": "sha512-xYz9goEyBnC8XwXDTuC/MZ6t+MrKVQZOk4s7+PaDkwIsQd8IwqvM+0M6bA/2lvG8GHXcPdf+MejTUeO2LCPCeQ==", + "dev": true, + "requires": { + "quick-lru": "^5.1.1", + "resolve-alpn": "^1.0.0" + } + }, "https-proxy-agent": { "version": "5.0.0", "resolved": "https://registry.npmjs.org/https-proxy-agent/-/https-proxy-agent-5.0.0.tgz", @@ -3836,9 +4466,9 @@ "dev": true }, "import-fresh": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/import-fresh/-/import-fresh-3.1.0.tgz", - "integrity": "sha512-PpuksHKGt8rXfWEr9m9EHIpgyyaltBy8+eF6GJM0QCAxMgxCfucMF3mjecK2QsJr0amJW7gTqh5/wht0z2UhEQ==", + "version": "3.2.1", + "resolved": "https://registry.npmjs.org/import-fresh/-/import-fresh-3.2.1.tgz", + "integrity": "sha512-6e1q1cnWP2RXD9/keSkxHScg508CdXqXWgWBaETNhyuBFz+kUZlKboh+ISK+bU++DmbHimVBrOz/zzPe0sZ3sQ==", "dev": true, "requires": { "parent-module": "^1.0.0", @@ -3873,44 +4503,6 @@ "integrity": "sha512-RZY5huIKCMRWDUqZlEi72f/lmXKMvuszcMBduliQ3nnWbx9X/ZBQO7DijMEYS9EhHBb2qacRUMtC7svLwe0lcw==", "dev": true }, - "inquirer": { - "version": "6.5.2", - "resolved": "https://registry.npmjs.org/inquirer/-/inquirer-6.5.2.tgz", - "integrity": "sha512-cntlB5ghuB0iuO65Ovoi8ogLHiWGs/5yNrtUcKjFhSSiVeAIVpD7koaSU9RM8mpXw5YDi9RdYXGQMaOURB7ycQ==", - "dev": true, - "requires": { - "ansi-escapes": "^3.2.0", - "chalk": "^2.4.2", - "cli-cursor": "^2.1.0", - "cli-width": "^2.0.0", - "external-editor": "^3.0.3", - "figures": "^2.0.0", - "lodash": "^4.17.12", - "mute-stream": "0.0.7", - "run-async": "^2.2.0", - "rxjs": "^6.4.0", - "string-width": "^2.1.0", - "strip-ansi": "^5.1.0", - "through": "^2.3.6" - }, - "dependencies": { - "ansi-regex": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-4.1.0.tgz", - "integrity": "sha512-1apePfXM1UOSqw0o9IiFAovVz9M5S1Dg+4TrDwfMewQ6p/rmMueb7tWZjQ1rx4Loy1ArBggoqGpfqqdI4rondg==", - "dev": true - }, - "strip-ansi": { - "version": "5.2.0", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-5.2.0.tgz", - "integrity": "sha512-DuRs1gKbBqsMKIZlrffwlug8MHkcnpjs5VPmL1PAh+mA30U0DTotfDZ0d2UUsXpPmPmMMJ6W773MaA3J+lbiWA==", - "dev": true, - "requires": { - "ansi-regex": "^4.1.0" - } - } - } - }, "interpret": { "version": "1.2.0", "resolved": "https://registry.npmjs.org/interpret/-/interpret-1.2.0.tgz", @@ -3958,6 +4550,12 @@ } } }, + "is-arguments": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/is-arguments/-/is-arguments-1.0.4.tgz", + "integrity": "sha512-xPh0Rmt8NE65sNzvyUmWgI1tz3mKq74lGA0mL8LYZcoIzKOzDh6HmrYm3d18k60nHerC8A9Km8kYu87zfSFnLA==", + "dev": true + }, "is-arrayish": { "version": "0.2.1", "resolved": "https://registry.npmjs.org/is-arrayish/-/is-arrayish-0.2.1.tgz", @@ -3980,9 +4578,9 @@ "dev": true }, "is-callable": { - "version": "1.1.5", - "resolved": "https://registry.npmjs.org/is-callable/-/is-callable-1.1.5.tgz", - "integrity": "sha512-ESKv5sMCJB2jnHTWZ3O5itG+O128Hsus4K4Qh1h2/cgn2vbgnLSVqfV46AeJA9D5EeeLa9w81KUXMtn34zhX+Q==", + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/is-callable/-/is-callable-1.2.0.tgz", + "integrity": "sha512-pyVD9AaGLxtg6srb2Ng6ynWJqkHU9bEM087AKck0w8QwDarTfNcpIYoU8x8Hv2Icm8u6kFJM18Dag8lyqGkviw==", "dev": true }, "is-data-descriptor": { @@ -4030,6 +4628,12 @@ } } }, + "is-docker": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/is-docker/-/is-docker-2.1.1.tgz", + "integrity": "sha512-ZOoqiXfEwtGknTiuDEy8pN2CfE3TxMHprvNer1mXiqwkOT77Rw3YVrUQ52EqAOU3QAWDQ+bQdx7HJzrv7LS2Hw==", + "dev": true + }, "is-extendable": { "version": "0.1.1", "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-0.1.1.tgz", @@ -4057,6 +4661,12 @@ "is-extglob": "^2.1.1" } }, + "is-map": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/is-map/-/is-map-2.0.1.tgz", + "integrity": "sha512-T/S49scO8plUiAOA2DBTBG3JHpn1yiw0kRp6dgiZ0v2/6twi5eiB0rHtHFH9ZIrvlWc6+4O+m4zg5+Z833aXgw==", + "dev": true + }, "is-negated-glob": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/is-negated-glob/-/is-negated-glob-1.0.0.tgz", @@ -4083,6 +4693,12 @@ } } }, + "is-plain-obj": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/is-plain-obj/-/is-plain-obj-1.1.0.tgz", + "integrity": "sha1-caUMhCnfync8kqOQpKA7OfzVHT4=", + "dev": true + }, "is-plain-object": { "version": "2.0.4", "resolved": "https://registry.npmjs.org/is-plain-object/-/is-plain-object-2.0.4.tgz", @@ -4099,12 +4715,20 @@ "dev": true }, "is-regex": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/is-regex/-/is-regex-1.0.5.tgz", - "integrity": "sha512-vlKW17SNq44owv5AQR3Cq0bQPEb8+kF3UKZ2fiZNOWtztYE5i0CzCZxFDwO58qAOWtxdBRVO/V5Qin1wjCqFYQ==", + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/is-regex/-/is-regex-1.1.1.tgz", + "integrity": "sha512-1+QkEcxiLlB7VEyFtyBg94e08OAsvq7FUBgApTq/w2ymCLyKJgDPsybBENVtA7XCQEgEXxKPonG+mvYRxh/LIg==", "dev": true, "requires": { - "has": "^1.0.3" + "has-symbols": "^1.0.1" + }, + "dependencies": { + "has-symbols": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/has-symbols/-/has-symbols-1.0.1.tgz", + "integrity": "sha512-PLcsoqu++dmEIZB+6totNFKq/7Do+Z0u4oT0zKOJNl3lYK6vGwwu2hjHs+68OEZbTjiUE9bgOABXbP/GvrS0Kg==", + "dev": true + } } }, "is-relative": { @@ -4116,12 +4740,24 @@ "is-unc-path": "^1.0.0" } }, + "is-set": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/is-set/-/is-set-2.0.1.tgz", + "integrity": "sha512-eJEzOtVyenDs1TMzSQ3kU3K+E0GUS9sno+F0OBT97xsgcJsF9nXMBtkT9/kut5JEpM7oL7X/0qxR17K3mcwIAA==", + "dev": true + }, "is-stream": { "version": "1.1.0", "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-1.1.0.tgz", "integrity": "sha1-EtSj3U5o4Lec6428hBc66A2RykQ=", "dev": true }, + "is-string": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/is-string/-/is-string-1.0.5.tgz", + "integrity": "sha512-buY6VNRjhQMiF1qWDouloZlQbRhDPCebwxSjxMjxgemYT46YMd2NR0/H+fBhEfWX4A/w9TBJ+ol+okqJKFE6vQ==", + "dev": true + }, "is-symbol": { "version": "1.0.3", "resolved": "https://registry.npmjs.org/is-symbol/-/is-symbol-1.0.3.tgz", @@ -4171,6 +4807,15 @@ "integrity": "sha512-eXK1UInq2bPmjyX6e3VHIzMLobc4J94i4AWn+Hpq3OU5KkrRC96OAcR3PRJ/pGu6m8TRnBHP9dkXQVsT/COVIA==", "dev": true }, + "is-wsl": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/is-wsl/-/is-wsl-2.2.0.tgz", + "integrity": "sha512-fKzAra0rGJUUBwGBgNkHZuToZcn+TtXHpeCgmkMJMMYx1sQDYaCSyjJBSCa2nH1DGm7s3n1oBnohoVTBaN7Lww==", + "dev": true, + "requires": { + "is-docker": "^2.0.0" + } + }, "isarray": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", @@ -4205,15 +4850,31 @@ "textextensions": "2" } }, + "iterate-iterator": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/iterate-iterator/-/iterate-iterator-1.0.1.tgz", + "integrity": "sha512-3Q6tudGN05kbkDQDI4CqjaBf4qf85w6W6GnuZDtUVYwKgtC1q8yxYX7CZed7N+tLzQqS6roujWvszf13T+n9aw==", + "dev": true + }, + "iterate-value": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/iterate-value/-/iterate-value-1.0.2.tgz", + "integrity": "sha512-A6fMAio4D2ot2r/TYzr4yUWrmwNdsN5xL7+HUiyACE4DXm+q8HtPcnFTp+NnW3k4N05tZ7FVYFFb2CR13NxyHQ==", + "dev": true, + "requires": { + "es-get-iterator": "^1.0.2", + "iterate-iterator": "^1.0.1" + } + }, "js-green-licenses": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/js-green-licenses/-/js-green-licenses-1.1.0.tgz", - "integrity": "sha512-y2qezlUzR5p5BElSjJS3KqE+W91oEdCYDlRUm8WxlhGB9uxZatcLm7qy6zu1GJ0LNJItMyRTqjhHcfJrcvMIPw==", + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/js-green-licenses/-/js-green-licenses-2.0.1.tgz", + "integrity": "sha512-UHLjQ5nurYxMRkNzCg1/L9LxjykDR2uziD0h83rczxvLrx5Pdk6PaxuRsIvfhp5QhIcyblXHrP+lTdLhQ4rZxA==", "dev": true, "requires": { "argparse": "^1.0.10", - "gaxios": "^2.0.1", - "npm-package-arg": "^6.1.0", + "gaxios": "^3.0.0", + "npm-package-arg": "^8.0.0", "package-json": "^6.0.0", "spdx-correct": "^3.0.0", "spdx-satisfies": "^5.0.0", @@ -4221,9 +4882,9 @@ }, "dependencies": { "strip-json-comments": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-3.0.1.tgz", - "integrity": "sha512-VTyMAUfdm047mwKl+u79WIdrZxtFtn+nBxHeb844XBQ9uMNTuTHdx2hc5RiAJYqwTj3wc/xe5HLSdJSkJ+WfZw==", + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-3.1.1.tgz", + "integrity": "sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig==", "dev": true } } @@ -4235,9 +4896,9 @@ "dev": true }, "js-yaml": { - "version": "3.13.1", - "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-3.13.1.tgz", - "integrity": "sha512-YfbcO7jXDdyj0DGxYVSlSeQNHbD7XPWvrVWeVUujrQEoZzWJIRrCPoyk6kL6IAjAG2IolMK4T0hNUe0HOUs5Jw==", + "version": "3.14.0", + "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-3.14.0.tgz", + "integrity": "sha512-/4IbIeHcD9VMHFqDR/gQ7EdZdLimOvW2DdcxFjdyyZ9NsbS+ccrXqVWDtab/lRl5AlUqmpBx8EhPaWR+OtY17A==", "dev": true, "requires": { "argparse": "^1.0.7", @@ -4357,29 +5018,11 @@ } } }, - "jshint": { - "version": "2.11.0", - "resolved": "https://registry.npmjs.org/jshint/-/jshint-2.11.0.tgz", - "integrity": "sha512-ooaD/hrBPhu35xXW4gn+o3SOuzht73gdBuffgJzrZBJZPGgGiiTvJEgTyxFvBO2nz0+X1G6etF8SzUODTlLY6Q==", - "dev": true, - "requires": { - "cli": "~1.0.0", - "console-browserify": "1.1.x", - "exit": "0.1.x", - "htmlparser2": "3.8.x", - "lodash": "~4.17.11", - "minimatch": "~3.0.2", - "shelljs": "0.3.x", - "strip-json-comments": "1.0.x" - }, - "dependencies": { - "strip-json-comments": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-1.0.4.tgz", - "integrity": "sha1-HhX7ysl9Pumb8tc7TGVrCCu6+5E=", - "dev": true - } - } + "jsesc": { + "version": "2.5.2", + "resolved": "https://registry.npmjs.org/jsesc/-/jsesc-2.5.2.tgz", + "integrity": "sha512-OYu7XEzjkCQ3C5Ps3QIZsQfNpqoJyZZA99wd9aWd05NCtC5pWOkShK2mkL6HXQR6/Cy2lbNdPlZBpuQHXE63gA==", + "dev": true }, "json-buffer": { "version": "3.0.0", @@ -4517,6 +5160,33 @@ "resolve": "^1.1.7" } }, + "lighthouse-logger": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/lighthouse-logger/-/lighthouse-logger-1.2.0.tgz", + "integrity": "sha512-wzUvdIeJZhRsG6gpZfmSCfysaxNEr43i+QT+Hie94wvHDKFLi4n7C2GqZ4sTC+PH5b5iktmXJvU87rWvhP3lHw==", + "dev": true, + "requires": { + "debug": "^2.6.8", + "marky": "^1.2.0" + }, + "dependencies": { + "debug": { + "version": "2.6.9", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "dev": true, + "requires": { + "ms": "2.0.0" + } + }, + "ms": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=", + "dev": true + } + } + }, "linkify-it": { "version": "2.2.0", "resolved": "https://registry.npmjs.org/linkify-it/-/linkify-it-2.2.0.tgz", @@ -4656,18 +5326,70 @@ "dev": true }, "log-symbols": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/log-symbols/-/log-symbols-2.2.0.tgz", - "integrity": "sha512-VeIAFslyIerEJLXHziedo2basKbMKtTw3vfn5IzG0XTjhAVEJyNHnL2p7vc+wBDSdQuUpNw3M2u6xb9QsAY5Eg==", + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/log-symbols/-/log-symbols-4.0.0.tgz", + "integrity": "sha512-FN8JBzLx6CzeMrB0tg6pqlGU1wCrXW+ZXGH481kfsBqer0hToTIiHdjH4Mq8xJUbvATujKCvaREGWpGUionraA==", "dev": true, "requires": { - "chalk": "^2.0.1" + "chalk": "^4.0.0" + }, + "dependencies": { + "ansi-styles": { + "version": "4.2.1", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.2.1.tgz", + "integrity": "sha512-9VGjrMsG1vePxcSweQsN20KY/c4zN0h9fLjqAbwbPfahM3t+NL+M9HC8xeXG2I8pX5NoamTGNuomEUFI7fcUjA==", + "dev": true, + "requires": { + "@types/color-name": "^1.1.1", + "color-convert": "^2.0.1" + } + }, + "chalk": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.0.tgz", + "integrity": "sha512-qwx12AxXe2Q5xQ43Ac//I6v5aXTipYrSESdOgzrN+9XjgEpyjpKuvSGaN4qE93f7TQTlerQQ8S+EQ0EyDoVL1A==", + "dev": true, + "requires": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + } + }, + "color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "dev": true, + "requires": { + "color-name": "~1.1.4" + } + }, + "color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "dev": true + }, + "has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "dev": true + }, + "supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "dev": true, + "requires": { + "has-flag": "^4.0.0" + } + } } }, "loglevel": { - "version": "1.6.7", - "resolved": "https://registry.npmjs.org/loglevel/-/loglevel-1.6.7.tgz", - "integrity": "sha512-cY2eLFrQSAfVPhCgH1s7JI73tMbg9YC3v3+ZHVW67sBS7UxWzNEk/ZBbSfLykBWHp33dqqtOv82gjhKEi81T/A==", + "version": "1.7.0", + "resolved": "https://registry.npmjs.org/loglevel/-/loglevel-1.7.0.tgz", + "integrity": "sha512-i2sY04nal5jDcagM3FMfG++T69GEEM8CYuOfeOIvmXzOIcwE9a/CJPR0MFM97pYMj/u10lzz7/zd7+qwhrBTqQ==", "dev": true }, "loglevel-plugin-prefix": { @@ -4682,6 +5404,15 @@ "integrity": "sha512-G2Lj61tXDnVFFOi8VZds+SoQjtQC3dgokKdDG2mTm1tx4m50NUHBOZSBwQQHyy0V12A0JTG4icfZQH+xPyh8VA==", "dev": true }, + "lru-cache": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz", + "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==", + "dev": true, + "requires": { + "yallist": "^4.0.0" + } + }, "lru-queue": { "version": "0.1.0", "resolved": "https://registry.npmjs.org/lru-queue/-/lru-queue-0.1.0.tgz", @@ -4757,6 +5488,12 @@ "integrity": "sha512-c+yYdCZJQrsRjTPhUx7VKkApw9bwDkNbHUKo1ovgcfDjb2kc8rLuRbIFyXL5WOEUwzSSKo3IXpph2K6DqB/KZg==", "dev": true }, + "marky": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/marky/-/marky-1.2.1.tgz", + "integrity": "sha512-md9k+Gxa3qLH6sUKpeC2CNkJK/Ld+bEz5X96nYwloqphQE0CKCVEKco/6jxEZixinqNdz5RFi/KaCyfbMDMAXQ==", + "dev": true + }, "matchdep": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/matchdep/-/matchdep-2.0.0.tgz", @@ -4846,6 +5583,12 @@ "to-regex": "^3.0.2" } }, + "mime": { + "version": "2.4.6", + "resolved": "https://registry.npmjs.org/mime/-/mime-2.4.6.tgz", + "integrity": "sha512-RZKhC3EmpBchfTGBVb8fb+RL2cWyw/32lshnsETttkBAyAUXSGHxbEJWWRXc751DrIxG1q04b8QwMbAwkRPpUA==", + "dev": true + }, "mime-db": { "version": "1.43.0", "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.43.0.tgz", @@ -4913,41 +5656,49 @@ "integrity": "sha512-6uCP4Qc0sWsgMLy1EOqqS/3rjDHOEnsStVr/4vtAIK2Y5i2kA7lFFejYrpIyiN9w0pYf4ckeCYT9f1r1P9KX5g==", "dev": true }, + "mkdirp-classic": { + "version": "0.5.3", + "resolved": "https://registry.npmjs.org/mkdirp-classic/-/mkdirp-classic-0.5.3.tgz", + "integrity": "sha512-gKLcREMhtuZRwRAfqP3RFW+TK4JqApVBtOIftVgjuABpAtpxhPGaDcfvbhNvD0B8iD1oUr/txX35NjcaY6Ns/A==", + "dev": true + }, "mocha": { - "version": "6.2.3", - "resolved": "https://registry.npmjs.org/mocha/-/mocha-6.2.3.tgz", - "integrity": "sha512-0R/3FvjIGH3eEuG17ccFPk117XL2rWxatr81a57D+r/x2uTYZRbdZ4oVidEUMh2W2TJDa7MdAb12Lm2/qrKajg==", + "version": "8.1.3", + "resolved": "https://registry.npmjs.org/mocha/-/mocha-8.1.3.tgz", + "integrity": "sha512-ZbaYib4hT4PpF4bdSO2DohooKXIn4lDeiYqB+vTmCdr6l2woW0b6H3pf5x4sM5nwQMru9RvjjHYWVGltR50ZBw==", "dev": true, "requires": { - "ansi-colors": "3.2.3", + "ansi-colors": "4.1.1", "browser-stdout": "1.3.1", - "debug": "3.2.6", - "diff": "3.5.0", - "escape-string-regexp": "1.0.5", - "find-up": "3.0.0", - "glob": "7.1.3", + "chokidar": "3.4.2", + "debug": "4.1.1", + "diff": "4.0.2", + "escape-string-regexp": "4.0.0", + "find-up": "5.0.0", + "glob": "7.1.6", "growl": "1.10.5", "he": "1.2.0", - "js-yaml": "3.13.1", - "log-symbols": "2.2.0", + "js-yaml": "3.14.0", + "log-symbols": "4.0.0", "minimatch": "3.0.4", - "mkdirp": "0.5.4", - "ms": "2.1.1", - "node-environment-flags": "1.0.5", + "ms": "2.1.2", "object.assign": "4.1.0", - "strip-json-comments": "2.0.1", - "supports-color": "6.0.0", - "which": "1.3.1", + "promise.allsettled": "1.0.2", + "serialize-javascript": "4.0.0", + "strip-json-comments": "3.0.1", + "supports-color": "7.1.0", + "which": "2.0.2", "wide-align": "1.1.3", + "workerpool": "6.0.0", "yargs": "13.3.2", "yargs-parser": "13.1.2", - "yargs-unparser": "1.6.0" + "yargs-unparser": "1.6.1" }, "dependencies": { "ansi-colors": { - "version": "3.2.3", - "resolved": "https://registry.npmjs.org/ansi-colors/-/ansi-colors-3.2.3.tgz", - "integrity": "sha512-LEHHyuhlPY3TmuUYMh2oz89lTShfvgbmzaBcxve9t/9Wuy7Dwf4yoAKcND7KFT1HAQfqZ12qtc+DUrBMeKF9nw==", + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/ansi-colors/-/ansi-colors-4.1.1.tgz", + "integrity": "sha512-JoX0apGbHaUJBNl6yF+p6JAFYZ666/hhCGKN5t9QFjbJQKUU/g8MNbFDbvfrgKXvI1QpZplPOnwIo99lX/AAmA==", "dev": true }, "ansi-regex": { @@ -4956,6 +5707,47 @@ "integrity": "sha512-1apePfXM1UOSqw0o9IiFAovVz9M5S1Dg+4TrDwfMewQ6p/rmMueb7tWZjQ1rx4Loy1ArBggoqGpfqqdI4rondg==", "dev": true }, + "anymatch": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/anymatch/-/anymatch-3.1.1.tgz", + "integrity": "sha512-mM8522psRCqzV+6LhomX5wgp25YVibjh8Wj23I5RPkPppSVSjyKD2A2mBJmWGa+KN7f2D6LNh9jkBCeyLktzjg==", + "dev": true, + "requires": { + "normalize-path": "^3.0.0", + "picomatch": "^2.0.4" + } + }, + "binary-extensions": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/binary-extensions/-/binary-extensions-2.1.0.tgz", + "integrity": "sha512-1Yj8h9Q+QDF5FzhMs/c9+6UntbD5MkRfRwac8DoEm9ZfUBZ7tZ55YcGVAzEe4bXsdQHEk+s9S5wsOKVdZrw0tQ==", + "dev": true + }, + "braces": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/braces/-/braces-3.0.2.tgz", + "integrity": "sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A==", + "dev": true, + "requires": { + "fill-range": "^7.0.1" + } + }, + "chokidar": { + "version": "3.4.2", + "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-3.4.2.tgz", + "integrity": "sha512-IZHaDeBeI+sZJRX7lGcXsdzgvZqKv6sECqsbErJA4mHWfpRrD8B97kSFN4cQz6nGBGiuFia1MKR4d6c1o8Cv7A==", + "dev": true, + "requires": { + "anymatch": "~3.1.1", + "braces": "~3.0.2", + "fsevents": "~2.1.2", + "glob-parent": "~5.1.0", + "is-binary-path": "~2.1.0", + "is-glob": "~4.0.1", + "normalize-path": "~3.0.0", + "readdirp": "~3.4.0" + } + }, "cliui": { "version": "5.0.0", "resolved": "https://registry.npmjs.org/cliui/-/cliui-5.0.0.tgz", @@ -4967,15 +5759,44 @@ "wrap-ansi": "^5.1.0" } }, - "debug": { - "version": "3.2.6", - "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.6.tgz", - "integrity": "sha512-mel+jf7nrtEl5Pn1Qx46zARXKDpBbvzezse7p7LqINmdoIk8PYP5SySaxEmYv6TZ0JyEKA1hsCId6DIhgITtWQ==", + "escape-string-regexp": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-4.0.0.tgz", + "integrity": "sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA==", + "dev": true + }, + "esprima": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/esprima/-/esprima-4.0.1.tgz", + "integrity": "sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A==", + "dev": true + }, + "fill-range": { + "version": "7.0.1", + "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.0.1.tgz", + "integrity": "sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ==", "dev": true, "requires": { - "ms": "^2.1.1" + "to-regex-range": "^5.0.1" + } + }, + "find-up": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/find-up/-/find-up-5.0.0.tgz", + "integrity": "sha512-78/PXT1wlLLDgTzDs7sjq9hzz0vXD+zn+7wypEe4fXQxCmdmqfGsEPQxmiCSQI3ajFV91bVSsvNtrJRiW6nGng==", + "dev": true, + "requires": { + "locate-path": "^6.0.0", + "path-exists": "^4.0.0" } }, + "fsevents": { + "version": "2.1.3", + "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.1.3.tgz", + "integrity": "sha512-Auw9a4AxqWpa9GUfj370BMPzzyncfBABW8Mab7BGWBYDj4Isgq+cDKtx0i6u9jcX9pQDnswsaaOTgTmA5pEjuQ==", + "dev": true, + "optional": true + }, "get-caller-file": { "version": "2.0.5", "resolved": "https://registry.npmjs.org/get-caller-file/-/get-caller-file-2.0.5.tgz", @@ -4983,9 +5804,9 @@ "dev": true }, "glob": { - "version": "7.1.3", - "resolved": "https://registry.npmjs.org/glob/-/glob-7.1.3.tgz", - "integrity": "sha512-vcfuiIxogLV4DlGBHIUOwI0IbrJ8HWPc4MU7HzviGeNho/UJDfi6B5p3sHeWIQ0KGIU0Jpxi5ZHxemQfLkkAwQ==", + "version": "7.1.6", + "resolved": "https://registry.npmjs.org/glob/-/glob-7.1.6.tgz", + "integrity": "sha512-LwaxwyZ72Lk7vZINtNNrywX0ZuLyStrdDtabefZKAY5ZGJhVtgdznluResxNmPitE0SAO+O26sWTHeKSI2wMBA==", "dev": true, "requires": { "fs.realpath": "^1.0.0", @@ -4996,21 +5817,94 @@ "path-is-absolute": "^1.0.0" } }, - "mkdirp": { - "version": "0.5.4", - "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.4.tgz", - "integrity": "sha512-iG9AK/dJLtJ0XNgTuDbSyNS3zECqDlAhnQW4CsNxBG3LQJBbHmRX1egw39DmtOdCAqY+dKXV+sgPgilNWUKMVw==", + "glob-parent": { + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.1.tgz", + "integrity": "sha512-FnI+VGOpnlGHWZxthPGR+QhR78fuiK0sNLkHQv+bL9fQi57lNNdquIbna/WrfROrolq8GK5Ek6BiMwqL/voRYQ==", "dev": true, "requires": { - "minimist": "^1.2.5" + "is-glob": "^4.0.1" } }, - "ms": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.1.tgz", - "integrity": "sha512-tgp+dl5cGk28utYktBsrFqA7HKgrhgPsg6Z/EfhWI4gl1Hwq8B/GmY/0oXZ6nF8hDVesS/FpnYaD/kOWhYQvyg==", + "has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "dev": true + }, + "is-binary-path": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/is-binary-path/-/is-binary-path-2.1.0.tgz", + "integrity": "sha512-ZMERYes6pDydyuGidse7OsHxtbI7WVeUEozgR/g7rd0xUimYNlvZRE/K2MgZTjWy725IfelLeVcEM97mmtRGXw==", + "dev": true, + "requires": { + "binary-extensions": "^2.0.0" + } + }, + "is-number": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/is-number/-/is-number-7.0.0.tgz", + "integrity": "sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==", + "dev": true + }, + "js-yaml": { + "version": "3.14.0", + "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-3.14.0.tgz", + "integrity": "sha512-/4IbIeHcD9VMHFqDR/gQ7EdZdLimOvW2DdcxFjdyyZ9NsbS+ccrXqVWDtab/lRl5AlUqmpBx8EhPaWR+OtY17A==", + "dev": true, + "requires": { + "argparse": "^1.0.7", + "esprima": "^4.0.0" + } + }, + "locate-path": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-6.0.0.tgz", + "integrity": "sha512-iPZK6eYjbxRu3uB4/WZ3EsEIMJFMqAoopl3R+zuq0UjcAm/MO6KCweDgPfP3elTztoKP3KtnVHxTn2NHBSDVUw==", + "dev": true, + "requires": { + "p-locate": "^5.0.0" + } + }, + "normalize-path": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-3.0.0.tgz", + "integrity": "sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==", + "dev": true + }, + "p-limit": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-3.0.2.tgz", + "integrity": "sha512-iwqZSOoWIW+Ew4kAGUlN16J4M7OB3ysMLSZtnhmqx7njIHFPlxWBX8xo3lVTyFVq6mI/lL9qt2IsN1sHwaxJkg==", + "dev": true, + "requires": { + "p-try": "^2.0.0" + } + }, + "p-locate": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-5.0.0.tgz", + "integrity": "sha512-LaNjtRWUBY++zB5nE/NwcaoMylSPk+S+ZHNB1TzdbMJMny6dynpAGt7X/tl/QYq3TIeE6nxHppbo2LGymrG5Pw==", + "dev": true, + "requires": { + "p-limit": "^3.0.2" + } + }, + "path-exists": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-4.0.0.tgz", + "integrity": "sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==", "dev": true }, + "readdirp": { + "version": "3.4.0", + "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-3.4.0.tgz", + "integrity": "sha512-0xe001vZBnJEK+uKcj8qOhyAKPzIT+gStxWr3LCB0DwcXR5NZJ3IaC+yGnHCYzB/S7ov3m3EEbZI2zeNvX+hGQ==", + "dev": true, + "requires": { + "picomatch": "^2.2.1" + } + }, "require-main-filename": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/require-main-filename/-/require-main-filename-2.0.0.tgz", @@ -5037,13 +5931,37 @@ "ansi-regex": "^4.1.0" } }, + "strip-json-comments": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-3.0.1.tgz", + "integrity": "sha512-VTyMAUfdm047mwKl+u79WIdrZxtFtn+nBxHeb844XBQ9uMNTuTHdx2hc5RiAJYqwTj3wc/xe5HLSdJSkJ+WfZw==", + "dev": true + }, "supports-color": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-6.0.0.tgz", - "integrity": "sha512-on9Kwidc1IUQo+bQdhi8+Tijpo0e1SS6RoGo2guUwn5vdaxw8RXOF9Vb2ws+ihWOmh4JnCJOvaziZWP1VABaLg==", + "version": "7.1.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.1.0.tgz", + "integrity": "sha512-oRSIpR8pxT1Wr2FquTNnGet79b3BWljqOuoW/h4oBhxJ/HUbX5nX6JSruTkvXDCFMwDPvsaTTbvMLKZWSy0R5g==", "dev": true, "requires": { - "has-flag": "^3.0.0" + "has-flag": "^4.0.0" + } + }, + "to-regex-range": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-5.0.1.tgz", + "integrity": "sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==", + "dev": true, + "requires": { + "is-number": "^7.0.0" + } + }, + "which": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/which/-/which-2.0.2.tgz", + "integrity": "sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==", + "dev": true, + "requires": { + "isexe": "^2.0.0" } }, "wrap-ansi": { @@ -5073,6 +5991,51 @@ "which-module": "^2.0.0", "y18n": "^4.0.0", "yargs-parser": "^13.1.2" + }, + "dependencies": { + "find-up": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/find-up/-/find-up-3.0.0.tgz", + "integrity": "sha512-1yD6RmLI1XBfxugvORwlck6f75tYL+iR0jqwsOrOxMZyGYqUuDhJ0l4AXdO1iX/FTs9cBAMEk1gWSEx1kSbylg==", + "dev": true, + "requires": { + "locate-path": "^3.0.0" + } + }, + "locate-path": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-3.0.0.tgz", + "integrity": "sha512-7AO748wWnIhNqAuaty2ZWHkQHRSNfPVIsPIfwEOWO22AmaoVrWavlOcMR5nzTLNYvp36X220/maaRsrec1G65A==", + "dev": true, + "requires": { + "p-locate": "^3.0.0", + "path-exists": "^3.0.0" + } + }, + "p-limit": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-2.3.0.tgz", + "integrity": "sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w==", + "dev": true, + "requires": { + "p-try": "^2.0.0" + } + }, + "p-locate": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-3.0.0.tgz", + "integrity": "sha512-x+12w/To+4GFfgJhBEpiDcLozRJGegY+Ei7/z0tSLkMmxGZNybVMSfWj9aJn8Z5Fc7dBUNJOOVgPv2H7IwulSQ==", + "dev": true, + "requires": { + "p-limit": "^2.0.0" + } + }, + "path-exists": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-3.0.0.tgz", + "integrity": "sha1-zg6+ql94yxiSXqfYENe1mwEP1RU=", + "dev": true + } } }, "yargs-parser": { @@ -5099,12 +6062,6 @@ "integrity": "sha512-kDcwXR4PS7caBpuRYYBUz9iVixUk3anO3f5OYFiIPwK/20vCzKCHyKoulbiDY1S53zD2bxUpxN/IJ+TnXjfvxg==", "dev": true }, - "mute-stream": { - "version": "0.0.7", - "resolved": "https://registry.npmjs.org/mute-stream/-/mute-stream-0.0.7.tgz", - "integrity": "sha1-MHXOk7whuPq0PhvE2n6BFe0ee6s=", - "dev": true - }, "nan": { "version": "2.14.0", "resolved": "https://registry.npmjs.org/nan/-/nan-2.14.0.tgz", @@ -5149,20 +6106,10 @@ "integrity": "sha512-1nh45deeb5olNY7eX82BkPO7SSxR5SSYJiPTrTdFUVYwAl8CKMA5N9PjTYkHiRjisVcxcQ1HXdLhx2qxxJzLNQ==", "dev": true }, - "node-environment-flags": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/node-environment-flags/-/node-environment-flags-1.0.5.tgz", - "integrity": "sha512-VNYPRfGfmZLx0Ye20jWzHUjyTW/c+6Wq+iLhDzUI4XmhrDd9l/FozXV3F2xOaXjvp0co0+v1YSR3CMP6g+VvLQ==", - "dev": true, - "requires": { - "object.getownpropertydescriptors": "^2.0.3", - "semver": "^5.7.0" - } - }, "node-fetch": { - "version": "2.6.0", - "resolved": "https://registry.npmjs.org/node-fetch/-/node-fetch-2.6.0.tgz", - "integrity": "sha512-8dG4H5ujfvFiqDmVu9fQ5bOHUC15JMjMY/Zumv26oOvvVJjM67KF8koCWIabKQ1GJIa9r2mMZscBq/TbdOcmNA==", + "version": "2.6.1", + "resolved": "https://registry.npmjs.org/node-fetch/-/node-fetch-2.6.1.tgz", + "integrity": "sha512-V4aYg89jEoVRxRb2fJdAg8FHvI7cEyYdVAh94HH0UIK8oJxUfkjlDQN9RbMx+bEjP7+ggMiFRprSti032Oipxw==", "dev": true }, "normalize-package-data": { @@ -5202,15 +6149,31 @@ } }, "npm-package-arg": { - "version": "6.1.1", - "resolved": "https://registry.npmjs.org/npm-package-arg/-/npm-package-arg-6.1.1.tgz", - "integrity": "sha512-qBpssaL3IOZWi5vEKUKW0cO7kzLeT+EQO9W8RsLOZf76KF9E/K9+wH0C7t06HXPpaH8WH5xF1MExLuCwbTqRUg==", + "version": "8.0.1", + "resolved": "https://registry.npmjs.org/npm-package-arg/-/npm-package-arg-8.0.1.tgz", + "integrity": "sha512-/h5Fm6a/exByzFSTm7jAyHbgOqErl9qSNJDQF32Si/ZzgwT2TERVxRxn3Jurw1wflgyVVAxnFR4fRHPM7y1ClQ==", "dev": true, "requires": { - "hosted-git-info": "^2.7.1", - "osenv": "^0.1.5", - "semver": "^5.6.0", + "hosted-git-info": "^3.0.2", + "semver": "^7.0.0", "validate-npm-package-name": "^3.0.0" + }, + "dependencies": { + "hosted-git-info": { + "version": "3.0.5", + "resolved": "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-3.0.5.tgz", + "integrity": "sha512-i4dpK6xj9BIpVOTboXIlKG9+8HMKggcrMX7WA24xZtKwX0TPelq/rbaS5rCKeNX8sJXZJGdSxpnEGtta+wismQ==", + "dev": true, + "requires": { + "lru-cache": "^6.0.0" + } + }, + "semver": { + "version": "7.3.2", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.2.tgz", + "integrity": "sha512-OrOb32TeeambH6UrhtShmF7CRDqhL6/5XpPNp2DuRH6+9QLw/orhp72j87v8Qa1ScDkvrrBNpZcDejAirJmfXQ==", + "dev": true + } } }, "npm-run-path": { @@ -5276,9 +6239,9 @@ } }, "object-inspect": { - "version": "1.7.0", - "resolved": "https://registry.npmjs.org/object-inspect/-/object-inspect-1.7.0.tgz", - "integrity": "sha512-a7pEHdh1xKIAgTySUGgLMx/xwDZskN1Ud6egYYN3EdRW4ZMPNEDUTF+hwy2LUC+Bl+SyLXANnwz/jyh/qutKUw==", + "version": "1.8.0", + "resolved": "https://registry.npmjs.org/object-inspect/-/object-inspect-1.8.0.tgz", + "integrity": "sha512-jLdtEOB112fORuypAyl/50VRVIBIdVQOSUUGQHzJ4xBSbit81zRarz7GThkEFZy1RceYrWYcPcBFPQwHyAc1gA==", "dev": true }, "object-keys": { @@ -5320,16 +6283,6 @@ "isobject": "^3.0.0" } }, - "object.getownpropertydescriptors": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/object.getownpropertydescriptors/-/object.getownpropertydescriptors-2.1.0.tgz", - "integrity": "sha512-Z53Oah9A3TdLoblT7VKJaTDdXdT+lQO+cNpKVnya5JDe9uLvzu1YyY1yFDFrcxrlRgWrEFH0jJtD/IbuwjcEVg==", - "dev": true, - "requires": { - "define-properties": "^1.1.3", - "es-abstract": "^1.17.0-next.1" - } - }, "object.map": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/object.map/-/object.map-1.0.1.tgz", @@ -5368,23 +6321,6 @@ "wrappy": "1" } }, - "onetime": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/onetime/-/onetime-2.0.1.tgz", - "integrity": "sha1-BnQoIw/WdEOyeUsiu6UotoZ5YtQ=", - "dev": true, - "requires": { - "mimic-fn": "^1.0.0" - }, - "dependencies": { - "mimic-fn": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/mimic-fn/-/mimic-fn-1.2.0.tgz", - "integrity": "sha512-jf84uxzwiuiIVKiOLpfYk7N46TSy8ubTonmneY9vrpHNAnp0QBt2BxWV9dO3/j+BoVAb+a5G6YDPW3M5HOdMWQ==", - "dev": true - } - } - }, "optionator": { "version": "0.8.2", "resolved": "https://registry.npmjs.org/optionator/-/optionator-0.8.2.tgz", @@ -5407,12 +6343,6 @@ "readable-stream": "^2.0.1" } }, - "os-homedir": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/os-homedir/-/os-homedir-1.0.2.tgz", - "integrity": "sha1-/7xJiDNuDoM94MFox+8VISGqf7M=", - "dev": true - }, "os-locale": { "version": "3.1.0", "resolved": "https://registry.npmjs.org/os-locale/-/os-locale-3.1.0.tgz", @@ -5424,22 +6354,6 @@ "mem": "^4.0.0" } }, - "os-tmpdir": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/os-tmpdir/-/os-tmpdir-1.0.2.tgz", - "integrity": "sha1-u+Z0BseaqFxc/sdm/lc0VV36EnQ=", - "dev": true - }, - "osenv": { - "version": "0.1.5", - "resolved": "https://registry.npmjs.org/osenv/-/osenv-0.1.5.tgz", - "integrity": "sha512-0CWcCECdMVc2Rw3U5w9ZjqX6ga6ubk1xDVKxtBQPK7wis/0F2r9T6k4ydGYhecl7YUBxBVxhL5oisPsNxAPe2g==", - "dev": true, - "requires": { - "os-homedir": "^1.0.0", - "os-tmpdir": "^1.0.0" - } - }, "p-cancelable": { "version": "1.1.0", "resolved": "https://registry.npmjs.org/p-cancelable/-/p-cancelable-1.1.0.tgz", @@ -5579,12 +6493,6 @@ "integrity": "sha1-F0uSaHNVNP+8es5r9TpanhtcX18=", "dev": true }, - "path-is-inside": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/path-is-inside/-/path-is-inside-1.0.2.tgz", - "integrity": "sha1-NlQX3t5EQw0cEa9hAn+s8HS9/FM=", - "dev": true - }, "path-key": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/path-key/-/path-key-2.0.1.tgz", @@ -5648,6 +6556,12 @@ "resolved": "https://registry.npmjs.org/performance-now/-/performance-now-2.1.0.tgz", "integrity": "sha1-Ywn04OX6kT7BxpMHrjZLSzd8nns=" }, + "picomatch": { + "version": "2.2.2", + "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.2.2.tgz", + "integrity": "sha512-q0M/9eZHzmr0AulXyPwNfZjtwZ/RBZlbN3K3CErVrk50T2ASYI7Bye0EvekFY3IP1Nt2DHu0re+V2ZHIpMkuWg==", + "dev": true + }, "pify": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/pify/-/pify-3.0.0.tgz", @@ -5669,13 +6583,49 @@ "pinkie": "^2.0.0" } }, - "pixelmatch": { - "version": "4.0.2", - "resolved": "https://registry.npmjs.org/pixelmatch/-/pixelmatch-4.0.2.tgz", - "integrity": "sha1-j0fc7FARtHe2fbA8JDvB8wheiFQ=", + "pkg-dir": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/pkg-dir/-/pkg-dir-4.2.0.tgz", + "integrity": "sha512-HRDzbaKjC+AOWVXxAU/x54COGeIv9eb+6CkDSQoNTt4XyWoIJvuPsXizxu/Fr23EiekbtZwmh1IcIG/l/a10GQ==", "dev": true, "requires": { - "pngjs": "^3.0.0" + "find-up": "^4.0.0" + }, + "dependencies": { + "find-up": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/find-up/-/find-up-4.1.0.tgz", + "integrity": "sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw==", + "dev": true, + "requires": { + "locate-path": "^5.0.0", + "path-exists": "^4.0.0" + } + }, + "locate-path": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-5.0.0.tgz", + "integrity": "sha512-t7hw9pI+WvuwNJXwk5zVHpyhIqzg2qTlklJOf0mVxGSbe3Fp2VieZcduNYjaLDoy6p9uGpQEGWG87WpMKlNq8g==", + "dev": true, + "requires": { + "p-locate": "^4.1.0" + } + }, + "p-locate": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-4.1.0.tgz", + "integrity": "sha512-R79ZZ/0wAxKGu3oYMlz8jy/kbhsNrS7SKZ7PxEHBgJ5+F2mtFW2fK2cOtBh1cHYkQsbzFV7I+EoRKe6Yt0oK7A==", + "dev": true, + "requires": { + "p-limit": "^2.2.0" + } + }, + "path-exists": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-4.0.0.tgz", + "integrity": "sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==", + "dev": true + } } }, "plugin-error": { @@ -5695,12 +6645,6 @@ "resolved": "https://registry.npmjs.org/pn/-/pn-1.1.0.tgz", "integrity": "sha512-2qHaIQr2VLRFoxe2nASzsV6ef4yOOH+Fi9FBOVH6cqeSgUnoyySPZkxzLuzd+RYOQTRpROA0ztTMqxROKSb/nA==" }, - "pngjs": { - "version": "3.4.0", - "resolved": "https://registry.npmjs.org/pngjs/-/pngjs-3.4.0.tgz", - "integrity": "sha512-NCrCHhWmnQklfH4MtJMRjZ2a8c80qXeMlQMv2uVp9ISJMTt562SbGd6n2oq0PaPgKm7Z6pL9E2UlLIhC+SHL3w==", - "dev": true - }, "posix-character-classes": { "version": "0.1.1", "resolved": "https://registry.npmjs.org/posix-character-classes/-/posix-character-classes-0.1.1.tgz", @@ -5736,6 +6680,25 @@ "integrity": "sha512-7PiHtLll5LdnKIMw100I+8xJXR5gW2QwWYkT6iJva0bXitZKa/XMrSbdmg3r2Xnaidz9Qumd0VPaMrZlF9V9sA==", "dev": true }, + "promise.allsettled": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/promise.allsettled/-/promise.allsettled-1.0.2.tgz", + "integrity": "sha512-UpcYW5S1RaNKT6pd+s9jp9K9rlQge1UXKskec0j6Mmuq7UJCvlS2J2/s/yuPN8ehftf9HXMxWlKiPbGGUzpoRg==", + "dev": true, + "requires": { + "array.prototype.map": "^1.0.1", + "define-properties": "^1.1.3", + "es-abstract": "^1.17.0-next.1", + "function-bind": "^1.1.1", + "iterate-value": "^1.0.0" + } + }, + "proxy-from-env": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/proxy-from-env/-/proxy-from-env-1.1.0.tgz", + "integrity": "sha512-D+zkORCbA9f1tdWRK0RaCR3GPv50cMxcrz4X8k5LTSUD1Dkw47mKJEZQNunItRTkWwgtaUSo1RVFRIG9ZXiFYg==", + "dev": true + }, "psl": { "version": "1.8.0", "resolved": "https://registry.npmjs.org/psl/-/psl-1.8.0.tgz", @@ -5779,11 +6742,64 @@ "resolved": "https://registry.npmjs.org/punycode/-/punycode-2.1.1.tgz", "integrity": "sha512-XRsRjdf+j5ml+y/6GKHPZbrF/8p2Yga0JPtdqTIY2Xe5ohJPD9saDJJLPvp9+NSBprVvevdXZybnj2cv8OEd0A==" }, + "puppeteer-core": { + "version": "5.3.0", + "resolved": "https://registry.npmjs.org/puppeteer-core/-/puppeteer-core-5.3.0.tgz", + "integrity": "sha512-+4wk+0dcDNg7AQqN41Q9r41U6iltAtknuVBI0aj0O/Vp8/4orgbFV0wn55wV5xRae//CucLPUnaczxZx7dz0UA==", + "dev": true, + "requires": { + "debug": "^4.1.0", + "devtools-protocol": "0.0.799653", + "extract-zip": "^2.0.0", + "https-proxy-agent": "^4.0.0", + "mime": "^2.0.3", + "pkg-dir": "^4.2.0", + "progress": "^2.0.1", + "proxy-from-env": "^1.0.0", + "rimraf": "^3.0.2", + "tar-fs": "^2.0.0", + "unbzip2-stream": "^1.3.3", + "ws": "^7.2.3" + }, + "dependencies": { + "agent-base": { + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/agent-base/-/agent-base-5.1.1.tgz", + "integrity": "sha512-TMeqbNl2fMW0nMjTEPOwe3J/PRFP4vqeoNuQMG0HlMrtm5QxKqdvAkZ1pRBQ/ulIyDD5Yq0nJ7YbdD8ey0TO3g==", + "dev": true + }, + "https-proxy-agent": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/https-proxy-agent/-/https-proxy-agent-4.0.0.tgz", + "integrity": "sha512-zoDhWrkR3of1l9QAL8/scJZyLu8j/gBkcwcaQOZh7Gyh/+uJQzGVETdgT30akuwkpL8HTRfssqI3BZuV18teDg==", + "dev": true, + "requires": { + "agent-base": "5", + "debug": "4" + } + } + } + }, "qs": { "version": "6.5.2", "resolved": "https://registry.npmjs.org/qs/-/qs-6.5.2.tgz", "integrity": "sha512-N5ZAX4/LxJmF+7wN74pUD6qAh9/wnvdQcjq9TZjevvXzSUo7bfmw91saqMjzGS2xq91/odN2dW/WOl7qQHNDGA==" }, + "quick-lru": { + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/quick-lru/-/quick-lru-5.1.1.tgz", + "integrity": "sha512-WuyALRjWPDGtt/wzJiadO5AXY+8hZ80hVpe6MyivgraREW751X3SbhRvG3eLKOYN+8VEvqLcf3wdnt44Z4S4SA==", + "dev": true + }, + "randombytes": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/randombytes/-/randombytes-2.1.0.tgz", + "integrity": "sha512-vYl3iOX+4CKUWuxGi9Ukhie6fsqXqS9FE2Zaic4tNFD2N2QQaXOMFbuKK4QmDHC0JO6B1Zp41J0LpT0oR68amQ==", + "dev": true, + "requires": { + "safe-buffer": "^5.1.0" + } + }, "rc": { "version": "1.2.8", "resolved": "https://registry.npmjs.org/rc/-/rc-1.2.8.tgz", @@ -5794,14 +6810,6 @@ "ini": "~1.3.0", "minimist": "^1.2.0", "strip-json-comments": "~2.0.1" - }, - "dependencies": { - "minimist": { - "version": "1.2.5", - "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.5.tgz", - "integrity": "sha512-FM9nNUYrRBAELZQT3xeZQ7fmMOBg6nWNmJKTcgsJeaLstP/UODVpGsr5OhXhhXg6f+qtJ8uiZ+PUxkDWcgIXLw==", - "dev": true - } } }, "read-pkg": { @@ -5880,6 +6888,15 @@ } } }, + "readdir-glob": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/readdir-glob/-/readdir-glob-1.1.0.tgz", + "integrity": "sha512-KgT0oXPIDQRRRYFf+06AUaodICTep2Q5635BORLzTEzp7rEqcR14a47j3Vzm3ix7FeI1lp8mYyG7r8lTB06Pyg==", + "dev": true, + "requires": { + "minimatch": "^3.0.4" + } + }, "readdirp": { "version": "2.2.1", "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-2.2.1.tgz", @@ -5911,15 +6928,15 @@ } }, "regexpp": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/regexpp/-/regexpp-2.0.1.tgz", - "integrity": "sha512-lv0M6+TkDVniA3aD1Eg0DVpfU/booSu7Eev3TDO/mZKHBfVjgCGTV4t4buppESEYDtkArYFOxTJWv6S5C+iaNw==", + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/regexpp/-/regexpp-3.1.0.tgz", + "integrity": "sha512-ZOIzd8yVsQQA7j8GCSlPGXwg5PfmA1mrq0JP4nGhh54LaKN3xdai/vHUDu74pKwV8OxseMS65u2NImosQcSD0Q==", "dev": true }, "registry-auth-token": { - "version": "4.1.1", - "resolved": "https://registry.npmjs.org/registry-auth-token/-/registry-auth-token-4.1.1.tgz", - "integrity": "sha512-9bKS7nTl9+/A1s7tnPeGrUpRcVY+LUh7bfFgzpndALdPfXQBfQV77rQVtqgUV3ti4vc/Ik81Ex8UJDWDQ12zQA==", + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/registry-auth-token/-/registry-auth-token-4.2.0.tgz", + "integrity": "sha512-P+lWzPrsgfN+UEpDS3U8AQKg/UjZX6mQSJueZj3EK+vNESoqBSpBUD3gmu4sF9lOsjXWjF11dQKUqemf3veq1w==", "dev": true, "requires": { "rc": "^1.2.8" @@ -6110,6 +7127,12 @@ "path-parse": "^1.0.6" } }, + "resolve-alpn": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/resolve-alpn/-/resolve-alpn-1.0.0.tgz", + "integrity": "sha512-rTuiIEqFmGxne4IovivKSDzld2lWW9QCjqv80SYjPgf+gS35eaCAjaP54CCwGAwBtnCsvNLYtqxe1Nw+i6JEmA==", + "dev": true + }, "resolve-dir": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/resolve-dir/-/resolve-dir-1.0.1.tgz", @@ -6151,24 +7174,14 @@ } }, "resq": { - "version": "1.7.1", - "resolved": "https://registry.npmjs.org/resq/-/resq-1.7.1.tgz", - "integrity": "sha512-09u9Q5SAuJfAW5UoVAmvRtLvCOMaKP+djiixTXsZvPaojGKhuvc0Nfvp84U1rIfopJWEOXi5ywpCFwCk7mj8Xw==", + "version": "1.8.0", + "resolved": "https://registry.npmjs.org/resq/-/resq-1.8.0.tgz", + "integrity": "sha512-VObcnfPcE6/EKfHqsi5qoJ0+BF9qfl5181CytP1su3HgzilqF03DrQ+Y7kZQrd+5myfmantl9W3/5uUcpwvKeg==", "dev": true, "requires": { "fast-deep-equal": "^2.0.1" } }, - "restore-cursor": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/restore-cursor/-/restore-cursor-2.0.0.tgz", - "integrity": "sha1-n37ih/gv0ybU/RYpI9YhKe7g368=", - "dev": true, - "requires": { - "onetime": "^2.0.0", - "signal-exit": "^3.0.2" - } - }, "ret": { "version": "0.1.15", "resolved": "https://registry.npmjs.org/ret/-/ret-0.1.15.tgz", @@ -6176,33 +7189,24 @@ "dev": true }, "rgb2hex": { - "version": "0.1.10", - "resolved": "https://registry.npmjs.org/rgb2hex/-/rgb2hex-0.1.10.tgz", - "integrity": "sha512-vKz+kzolWbL3rke/xeTE2+6vHmZnNxGyDnaVW4OckntAIcc7DcZzWkQSfxMDwqHS8vhgySnIFyBUH7lIk6PxvQ==", + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/rgb2hex/-/rgb2hex-0.2.0.tgz", + "integrity": "sha512-cHdNTwmTMPu/TpP1bJfdApd6MbD+Kzi4GNnM6h35mdFChhQPSi9cAI8J7DMn5kQDKX8NuBaQXAyo360Oa7tOEA==", "dev": true }, - "rimraf": { - "version": "2.7.1", - "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-2.7.1.tgz", - "integrity": "sha512-uWjbaKIK3T1OSVptzX7Nl6PvQ3qAGtKEtVRjRuazjfL3Bx5eI409VZSqgND+4UNnmzLVdPj9FqFJNPqBZFve4w==", - "dev": true, - "requires": { - "glob": "^7.1.3" - } - }, - "run-async": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/run-async/-/run-async-2.3.0.tgz", - "integrity": "sha1-A3GrSuC91yDUFm19/aZP96RFpsA=", + "rimraf": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-3.0.2.tgz", + "integrity": "sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA==", "dev": true, "requires": { - "is-promise": "^2.1.0" + "glob": "^7.1.3" } }, "rxjs": { - "version": "6.5.3", - "resolved": "https://registry.npmjs.org/rxjs/-/rxjs-6.5.3.tgz", - "integrity": "sha512-wuYsAYYFdWTAnAaPoKGNhfpWwKZbJW+HgAJ+mImp+Epl7BG8oNWBCTyRM8gba9k4lk8BgWdoYm21Mo/RYhhbgA==", + "version": "6.6.2", + "resolved": "https://registry.npmjs.org/rxjs/-/rxjs-6.6.2.tgz", + "integrity": "sha512-BHdBMVoWC2sL26w//BCu3YzKT4s2jip/WhwsGEDmeKYBhKDZeYezVUnHatYB7L85v5xs0BAQmg6BEYJEKxBabg==", "dev": true, "requires": { "tslib": "^1.9.0" @@ -6236,9 +7240,9 @@ } }, "selenium-standalone": { - "version": "6.17.0", - "resolved": "https://registry.npmjs.org/selenium-standalone/-/selenium-standalone-6.17.0.tgz", - "integrity": "sha512-5PSnDHwMiq+OCiAGlhwQ8BM9xuwFfvBOZ7Tfbw+ifkTnOy0PWbZmI1B9gPGuyGHpbQ/3J3CzIK7BYwrQ7EjtWQ==", + "version": "6.20.0", + "resolved": "https://registry.npmjs.org/selenium-standalone/-/selenium-standalone-6.20.0.tgz", + "integrity": "sha512-yN7wuMVjPdfy1vA9N2J2CRv1HDh0CAMjq+nctGz8Hh0RVw12OiHTsZjHtXqBAF+qJNRYcHVycOWr3NPQ/E/ceg==", "dev": true, "requires": { "async": "^2.6.2", @@ -6249,65 +7253,21 @@ "minimist": "^1.2.0", "mkdirp": "^0.5.1", "progress": "2.0.3", - "request": "2.88.0", - "tar-stream": "2.0.0", + "request": "2.88.2", + "tar-stream": "2.1.3", "urijs": "^1.19.1", "which": "^1.3.1", "yauzl": "^2.10.0" }, "dependencies": { "mkdirp": { - "version": "0.5.4", - "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.4.tgz", - "integrity": "sha512-iG9AK/dJLtJ0XNgTuDbSyNS3zECqDlAhnQW4CsNxBG3LQJBbHmRX1egw39DmtOdCAqY+dKXV+sgPgilNWUKMVw==", + "version": "0.5.5", + "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.5.tgz", + "integrity": "sha512-NKmAlESf6jMGym1++R0Ra7wvhV+wFW63FaSOFPwRahvea0gMUcGUhVeAg/0BC0wiv9ih5NYPB1Wn1UEI1/L+xQ==", "dev": true, "requires": { "minimist": "^1.2.5" } - }, - "punycode": { - "version": "1.4.1", - "resolved": "https://registry.npmjs.org/punycode/-/punycode-1.4.1.tgz", - "integrity": "sha1-wNWmOycYgArY4esPpSachN1BhF4=", - "dev": true - }, - "request": { - "version": "2.88.0", - "resolved": "https://registry.npmjs.org/request/-/request-2.88.0.tgz", - "integrity": "sha512-NAqBSrijGLZdM0WZNsInLJpkJokL72XYjUpnB0iwsRgxh7dB6COrHnTBNwN0E+lHDAJzu7kLAkDeY08z2/A0hg==", - "dev": true, - "requires": { - "aws-sign2": "~0.7.0", - "aws4": "^1.8.0", - "caseless": "~0.12.0", - "combined-stream": "~1.0.6", - "extend": "~3.0.2", - "forever-agent": "~0.6.1", - "form-data": "~2.3.2", - "har-validator": "~5.1.0", - "http-signature": "~1.2.0", - "is-typedarray": "~1.0.0", - "isstream": "~0.1.2", - "json-stringify-safe": "~5.0.1", - "mime-types": "~2.1.19", - "oauth-sign": "~0.9.0", - "performance-now": "^2.1.0", - "qs": "~6.5.2", - "safe-buffer": "^5.1.2", - "tough-cookie": "~2.4.3", - "tunnel-agent": "^0.6.0", - "uuid": "^3.3.2" - } - }, - "tough-cookie": { - "version": "2.4.3", - "resolved": "https://registry.npmjs.org/tough-cookie/-/tough-cookie-2.4.3.tgz", - "integrity": "sha512-Q5srk/4vDM54WJsJio3XNn6K2sCG+CQ8G5Wz6bZhRZoAe/+TxjWB/GlFAnYEbkYVlON9FMk/fE3h2RLpPXo4lQ==", - "dev": true, - "requires": { - "psl": "^1.1.24", - "punycode": "^1.4.1" - } } } }, @@ -6327,12 +7287,29 @@ } }, "serialize-error": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/serialize-error/-/serialize-error-5.0.0.tgz", - "integrity": "sha512-/VtpuyzYf82mHYTtI4QKtwHa79vAdU5OQpNPAmE/0UDdlGT0ZxHwC+J6gXkw29wwoVI8fMPsfcVHOwXtUQYYQA==", + "version": "7.0.1", + "resolved": "https://registry.npmjs.org/serialize-error/-/serialize-error-7.0.1.tgz", + "integrity": "sha512-8I8TjW5KMOKsZQTvoxjuSIa7foAwPWGOts+6o7sgjz41/qMD9VQHEDxi6PBvK2l0MXUmqZyNpUK+T2tQaaElvw==", + "dev": true, + "requires": { + "type-fest": "^0.13.1" + }, + "dependencies": { + "type-fest": { + "version": "0.13.1", + "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.13.1.tgz", + "integrity": "sha512-34R7HTnG0XIJcBSn5XhDd7nNFPRcXYRZrBB2O2jdKqYODldSzBAqzsWoZYYvduky73toYS/ESqxPvkDf/F0XMg==", + "dev": true + } + } + }, + "serialize-javascript": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/serialize-javascript/-/serialize-javascript-4.0.0.tgz", + "integrity": "sha512-GaNA54380uFefWghODBWEGisLZFj00nS5ACs6yHa9nLqlLpVLO8ChDGeKRjZnV4Nh4n0Qi7nhYZD/9fCPzEqkw==", "dev": true, "requires": { - "type-fest": "^0.8.0" + "randombytes": "^2.1.0" } }, "set-blocking": { @@ -6379,16 +7356,10 @@ "integrity": "sha1-2kL0l0DAtC2yypcoVxyxkMmO/qM=", "dev": true }, - "shelljs": { - "version": "0.3.0", - "resolved": "https://registry.npmjs.org/shelljs/-/shelljs-0.3.0.tgz", - "integrity": "sha1-NZbmMHp4FUT1kfN9phg2DzHbV7E=", - "dev": true - }, "signal-exit": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.2.tgz", - "integrity": "sha1-tf3AjxKH6hF4Yo5BXiUTK3NkbG0=", + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.3.tgz", + "integrity": "sha512-VUJ49FC8U1OxwZLxIbTTrDvLnf/6TDgxZcK8wxR8zs13xpx7xbG60ndBlhNrFi2EMuFRoeDoJO7wthSLq42EjA==", "dev": true }, "slice-ansi": { @@ -6746,24 +7717,24 @@ "strip-ansi": "^4.0.0" } }, - "string.prototype.trimleft": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/string.prototype.trimleft/-/string.prototype.trimleft-2.1.1.tgz", - "integrity": "sha512-iu2AGd3PuP5Rp7x2kEZCrB2Nf41ehzh+goo8TV7z8/XDBbsvc6HQIlUl9RjkZ4oyrW1XM5UwlGl1oVEaDjg6Ag==", + "string.prototype.trimend": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/string.prototype.trimend/-/string.prototype.trimend-1.0.1.tgz", + "integrity": "sha512-LRPxFUaTtpqYsTeNKaFOw3R4bxIzWOnbQ837QfBylo8jIxtcbK/A/sMV7Q+OAV/vWo+7s25pOE10KYSjaSO06g==", "dev": true, "requires": { "define-properties": "^1.1.3", - "function-bind": "^1.1.1" + "es-abstract": "^1.17.5" } }, - "string.prototype.trimright": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/string.prototype.trimright/-/string.prototype.trimright-2.1.1.tgz", - "integrity": "sha512-qFvWL3/+QIgZXVmJBfpHmxLB7xsUXz6HsUmP8+5dRaC3Q7oKUv9Vo6aMCRZC1smrtyECFsIT30PqBJ1gTjAs+g==", + "string.prototype.trimstart": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/string.prototype.trimstart/-/string.prototype.trimstart-1.0.1.tgz", + "integrity": "sha512-XxZn+QpvrBI1FOcg6dIpxUPgWCPuNXvMD72aaRaUQv1eD4e/Qy8i/hFTe0BUmD60p/QA6bh1avmuPTfNjqVWRw==", "dev": true, "requires": { "define-properties": "^1.1.3", - "function-bind": "^1.1.1" + "es-abstract": "^1.17.5" } }, "string_decoder": { @@ -6820,20 +7791,12 @@ "dev": true }, "supports-color": { - "version": "4.5.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-4.5.0.tgz", - "integrity": "sha1-vnoN5ITexcXN34s9WRJQRJEvY1s=", + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-6.1.0.tgz", + "integrity": "sha512-qe1jfm1Mg7Nq/NSh6XE24gPXROEVsWHxC1LIx//XNlD9iw7YZQGjZNjYN7xGaEG6iKdA8EtNFW6R0gjnVXp+wQ==", "dev": true, "requires": { - "has-flag": "^2.0.0" - }, - "dependencies": { - "has-flag": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-2.0.0.tgz", - "integrity": "sha1-6CB68cx7MNRGzHC3NLXovhj4jVE=", - "dev": true - } + "has-flag": "^3.0.0" } }, "sver-compat": { @@ -6897,13 +7860,25 @@ "integrity": "sha1-fLy2S1oUG2ou/CxdLGe04VCyomg=", "dev": true }, + "tar-fs": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/tar-fs/-/tar-fs-2.1.0.tgz", + "integrity": "sha512-9uW5iDvrIMCVpvasdFHW0wJPez0K4JnMZtsuIeDI7HyMGJNxmDZDOCQROr7lXyS+iL/QMpj07qcjGYTSdRFXUg==", + "dev": true, + "requires": { + "chownr": "^1.1.1", + "mkdirp-classic": "^0.5.2", + "pump": "^3.0.0", + "tar-stream": "^2.0.0" + } + }, "tar-stream": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/tar-stream/-/tar-stream-2.0.0.tgz", - "integrity": "sha512-n2vtsWshZOVr/SY4KtslPoUlyNh06I2SGgAOCZmquCEjlbV/LjY2CY80rDtdQRHFOYXNlgBDo6Fr3ww2CWPOtA==", + "version": "2.1.3", + "resolved": "https://registry.npmjs.org/tar-stream/-/tar-stream-2.1.3.tgz", + "integrity": "sha512-Z9yri56Dih8IaK8gncVPx4Wqt86NDmQTSh49XLZgjWpGZL9GK9HKParS2scqHCC4w6X9Gh2jwaU45V47XTKwVA==", "dev": true, "requires": { - "bl": "^2.2.0", + "bl": "^4.0.1", "end-of-stream": "^1.4.1", "fs-constants": "^1.0.0", "inherits": "^2.0.3", @@ -6942,12 +7917,25 @@ "dev": true }, "through2": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/through2/-/through2-3.0.1.tgz", - "integrity": "sha512-M96dvTalPT3YbYLaKaCuwu+j06D/8Jfib0o/PxbVt6Amhv3dUAtW6rTV1jPgJSBG83I/e04Y6xkVdVhSRhi0ww==", + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/through2/-/through2-4.0.2.tgz", + "integrity": "sha512-iOqSav00cVxEEICeD7TjLB1sueEL+81Wpzp2bY17uZjZN0pWZPuo4suZ/61VujxmqSGFfgOcNuTZ85QJwNZQpw==", "dev": true, "requires": { - "readable-stream": "2 || 3" + "readable-stream": "3" + }, + "dependencies": { + "readable-stream": { + "version": "3.6.0", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.0.tgz", + "integrity": "sha512-BViHy7LKeTz4oNnkcLJ+lVSL6vpiFeX6/d3oSH8zCW7UxP2onchk+vTGB143xuFjHS3deTgkKoXXymXqymiIdA==", + "dev": true, + "requires": { + "inherits": "^2.0.3", + "string_decoder": "^1.1.1", + "util-deprecate": "^1.0.1" + } + } } }, "through2-filter": { @@ -6988,15 +7976,6 @@ "next-tick": "1" } }, - "tmp": { - "version": "0.0.33", - "resolved": "https://registry.npmjs.org/tmp/-/tmp-0.0.33.tgz", - "integrity": "sha512-jRCJlojKnZ3addtTOjdIqoRuPEKBvNXcGYqzO6zWZX8KfKEpnGY5jfggJQ3EjKuu8D4bJRr0y+cYJFmYbImXGw==", - "dev": true, - "requires": { - "os-tmpdir": "~1.0.2" - } - }, "to-absolute-glob": { "version": "2.0.2", "resolved": "https://registry.npmjs.org/to-absolute-glob/-/to-absolute-glob-2.0.2.tgz", @@ -7007,6 +7986,12 @@ "is-negated-glob": "^1.0.0" } }, + "to-fast-properties": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/to-fast-properties/-/to-fast-properties-2.0.0.tgz", + "integrity": "sha1-3F5pjL0HkmW8c+A3doGk5Og/YW4=", + "dev": true + }, "to-object-path": { "version": "0.3.0", "resolved": "https://registry.npmjs.org/to-object-path/-/to-object-path-0.3.0.tgz", @@ -7172,12 +8157,28 @@ } } }, + "ua-parser-js": { + "version": "0.7.22", + "resolved": "https://registry.npmjs.org/ua-parser-js/-/ua-parser-js-0.7.22.tgz", + "integrity": "sha512-YUxzMjJ5T71w6a8WWVcMGM6YWOTX27rCoIQgLXiWaxqXSx9D7DNjiGWn1aJIRSQ5qr0xuhra77bSIh6voR/46Q==", + "dev": true + }, "uc.micro": { "version": "1.0.6", "resolved": "https://registry.npmjs.org/uc.micro/-/uc.micro-1.0.6.tgz", "integrity": "sha512-8Y75pvTYkLJW2hWQHXxoqRgV7qb9B+9vFEtidML+7koHUFapnVJAZ6cKs+Qjz5Aw3aZWHMC6u0wJE3At+nSGwA==", "dev": true }, + "unbzip2-stream": { + "version": "1.4.3", + "resolved": "https://registry.npmjs.org/unbzip2-stream/-/unbzip2-stream-1.4.3.tgz", + "integrity": "sha512-mlExGW4w71ebDJviH16lQLtZS32VKqsSfk80GCfUlwT/4/hNRFsoscrF/c++9xinkMzECL1uL9DDwXqFWkruPg==", + "dev": true, + "requires": { + "buffer": "^5.2.1", + "through": "^2.3.8" + } + }, "unc-path-regex": { "version": "0.1.2", "resolved": "https://registry.npmjs.org/unc-path-regex/-/unc-path-regex-0.1.2.tgz", @@ -7327,6 +8328,12 @@ "resolved": "https://registry.npmjs.org/uuid/-/uuid-3.4.0.tgz", "integrity": "sha512-HjSDRw6gZE5JMggctHBcjVak08+KEVhSIiDzFnT9S9aegmp85S/bReBVTb4QTFaRNptJ9kuYaNhnbNEOkbKb/A==" }, + "v8-compile-cache": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/v8-compile-cache/-/v8-compile-cache-2.1.1.tgz", + "integrity": "sha512-8OQ9CL+VWyt3JStj7HX7/ciTL2V3Rl1Wf5OL+SNTm0yK1KvtReVulksyeRnCANHHuUxHlQig+JJDlUhBt1NQDQ==", + "dev": true + }, "v8flags": { "version": "3.1.3", "resolved": "https://registry.npmjs.org/v8flags/-/v8flags-3.1.3.tgz", @@ -7473,41 +8480,163 @@ } }, "webdriver": { - "version": "5.22.4", - "resolved": "https://registry.npmjs.org/webdriver/-/webdriver-5.22.4.tgz", - "integrity": "sha512-IrSb8UUt6MDgBIDaSWyh/kP4VJsHyqnubCTxKi2cEZjOQdxPwnxUfvbSQlMDCHXrcgsPaXwAPjRJVTEt6PzArQ==", + "version": "6.5.0", + "resolved": "https://registry.npmjs.org/webdriver/-/webdriver-6.5.0.tgz", + "integrity": "sha512-6iOll9TshD4+2J+em+bLshvM1uXtnotdZ+JaALqRLbkVswLRFU0pTVP1oug0e/IYwL7Me4Cafh9ugQ4PwPuOnA==", "dev": true, "requires": { - "@types/request": "^2.48.4", - "@wdio/config": "5.22.4", - "@wdio/logger": "5.16.10", - "@wdio/protocols": "5.22.1", - "@wdio/utils": "5.18.6", - "lodash.merge": "^4.6.1", - "request": "^2.83.0" + "@wdio/config": "6.4.7", + "@wdio/logger": "6.4.7", + "@wdio/protocols": "6.3.6", + "@wdio/utils": "6.5.0", + "got": "^11.0.2", + "lodash.merge": "^4.6.1" + }, + "dependencies": { + "@sindresorhus/is": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/@sindresorhus/is/-/is-3.1.2.tgz", + "integrity": "sha512-JiX9vxoKMmu8Y3Zr2RVathBL1Cdu4Nt4MuNWemt1Nc06A0RAin9c5FArkhGsyMBWfCu4zj+9b+GxtjAnE4qqLQ==", + "dev": true + }, + "@szmarczak/http-timer": { + "version": "4.0.5", + "resolved": "https://registry.npmjs.org/@szmarczak/http-timer/-/http-timer-4.0.5.tgz", + "integrity": "sha512-PyRA9sm1Yayuj5OIoJ1hGt2YISX45w9WcFbh6ddT0Z/0yaFxOtGLInr4jUfU1EAFVs0Yfyfev4RNwBlUaHdlDQ==", + "dev": true, + "requires": { + "defer-to-connect": "^2.0.0" + } + }, + "cacheable-request": { + "version": "7.0.1", + "resolved": "https://registry.npmjs.org/cacheable-request/-/cacheable-request-7.0.1.tgz", + "integrity": "sha512-lt0mJ6YAnsrBErpTMWeu5kl/tg9xMAWjavYTN6VQXM1A/teBITuNcccXsCxF0tDQQJf9DfAaX5O4e0zp0KlfZw==", + "dev": true, + "requires": { + "clone-response": "^1.0.2", + "get-stream": "^5.1.0", + "http-cache-semantics": "^4.0.0", + "keyv": "^4.0.0", + "lowercase-keys": "^2.0.0", + "normalize-url": "^4.1.0", + "responselike": "^2.0.0" + } + }, + "decompress-response": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/decompress-response/-/decompress-response-6.0.0.tgz", + "integrity": "sha512-aW35yZM6Bb/4oJlZncMH2LCoZtJXTRxES17vE3hoRiowU2kWHaJKFkSBDnDR+cm9J+9QhXmREyIfv0pji9ejCQ==", + "dev": true, + "requires": { + "mimic-response": "^3.1.0" + } + }, + "defer-to-connect": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/defer-to-connect/-/defer-to-connect-2.0.0.tgz", + "integrity": "sha512-bYL2d05vOSf1JEZNx5vSAtPuBMkX8K9EUutg7zlKvTqKXHt7RhWJFbmd7qakVuf13i+IkGmp6FwSsONOf6VYIg==", + "dev": true + }, + "get-stream": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-5.2.0.tgz", + "integrity": "sha512-nBF+F1rAZVCu/p7rjzgA+Yb4lfYXrpl7a6VmJrU8wF9I1CKvP/QwPNZHnOlwbTkY6dvtFIzFMSyQXbLoTQPRpA==", + "dev": true, + "requires": { + "pump": "^3.0.0" + } + }, + "got": { + "version": "11.7.0", + "resolved": "https://registry.npmjs.org/got/-/got-11.7.0.tgz", + "integrity": "sha512-7en2XwH2MEqOsrK0xaKhbWibBoZqy+f1RSUoIeF1BLcnf+pyQdDsljWMfmOh+QKJwuvDIiKx38GtPh5wFdGGjg==", + "dev": true, + "requires": { + "@sindresorhus/is": "^3.1.1", + "@szmarczak/http-timer": "^4.0.5", + "@types/cacheable-request": "^6.0.1", + "@types/responselike": "^1.0.0", + "cacheable-lookup": "^5.0.3", + "cacheable-request": "^7.0.1", + "decompress-response": "^6.0.0", + "http2-wrapper": "^1.0.0-beta.5.2", + "lowercase-keys": "^2.0.0", + "p-cancelable": "^2.0.0", + "responselike": "^2.0.0" + } + }, + "json-buffer": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/json-buffer/-/json-buffer-3.0.1.tgz", + "integrity": "sha512-4bV5BfR2mqfQTJm+V5tPPdf+ZpuhiIvTuAB5g8kcrXOZpTT/QwwVRWBywX1ozr6lEuPdbHxwaJlm9G6mI2sfSQ==", + "dev": true + }, + "keyv": { + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/keyv/-/keyv-4.0.3.tgz", + "integrity": "sha512-zdGa2TOpSZPq5mU6iowDARnMBZgtCqJ11dJROFi6tg6kTn4nuUdU09lFyLFSaHrWqpIJ+EBq4E8/Dc0Vx5vLdA==", + "dev": true, + "requires": { + "json-buffer": "3.0.1" + } + }, + "lowercase-keys": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/lowercase-keys/-/lowercase-keys-2.0.0.tgz", + "integrity": "sha512-tqNXrS78oMOE73NMxK4EMLQsQowWf8jKooH9g7xPavRT706R6bkQJ6DY2Te7QukaZsulxa30wQ7bk0pm4XiHmA==", + "dev": true + }, + "mimic-response": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/mimic-response/-/mimic-response-3.1.0.tgz", + "integrity": "sha512-z0yWI+4FDrrweS8Zmt4Ej5HdJmky15+L2e6Wgn3+iK5fWzb6T3fhNFq2+MeTRb064c6Wr4N/wv0DzQTjNzHNGQ==", + "dev": true + }, + "p-cancelable": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/p-cancelable/-/p-cancelable-2.0.0.tgz", + "integrity": "sha512-wvPXDmbMmu2ksjkB4Z3nZWTSkJEb9lqVdMaCKpZUGJG9TMiNp9XcbG3fn9fPKjem04fJMJnXoyFPk2FmgiaiNg==", + "dev": true + }, + "responselike": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/responselike/-/responselike-2.0.0.tgz", + "integrity": "sha512-xH48u3FTB9VsZw7R+vvgaKeLKzT6jOogbQhEe/jewwnZgzPcnyWui2Av6JpoYZF/91uueC+lqhWqeURw5/qhCw==", + "dev": true, + "requires": { + "lowercase-keys": "^2.0.0" + } + } } }, "webdriverio": { - "version": "5.22.4", - "resolved": "https://registry.npmjs.org/webdriverio/-/webdriverio-5.22.4.tgz", - "integrity": "sha512-6/Qi1/N8wK5r7Mp2aEwB+1FkDQiyiuwQn8lm+dfYhrfWs3kLOKKt3MPeM4I6j2Yv2/mGpYf7WKu2xTj/vkJzBA==", + "version": "6.5.2", + "resolved": "https://registry.npmjs.org/webdriverio/-/webdriverio-6.5.2.tgz", + "integrity": "sha512-ChAV6RmF10mlyWnAL2y+PdnzAjpxL/UuyAHJsYSuirEeEAAqFWWePxniz67bUEVQPVClVj8Jh7oeoK6rhu4RAA==", "dev": true, "requires": { - "@wdio/config": "5.22.4", - "@wdio/logger": "5.16.10", - "@wdio/repl": "5.18.6", - "@wdio/utils": "5.18.6", - "archiver": "^3.0.0", + "@types/puppeteer": "^3.0.1", + "@wdio/config": "6.4.7", + "@wdio/logger": "6.4.7", + "@wdio/repl": "6.5.0", + "@wdio/utils": "6.5.0", + "archiver": "^5.0.0", + "atob": "^2.1.2", "css-value": "^0.0.1", + "devtools": "6.5.0", + "get-port": "^5.1.1", "grapheme-splitter": "^1.0.2", "lodash.clonedeep": "^4.5.0", "lodash.isobject": "^3.0.2", "lodash.isplainobject": "^4.0.6", "lodash.zip": "^4.2.0", + "minimatch": "^3.0.4", + "puppeteer-core": "^5.1.0", "resq": "^1.6.0", - "rgb2hex": "^0.1.0", - "serialize-error": "^5.0.0", - "webdriver": "5.22.4" + "rgb2hex": "^0.2.0", + "serialize-error": "^7.0.0", + "webdriver": "6.5.0" } }, "webidl-conversions": { @@ -7562,11 +8691,23 @@ "string-width": "^1.0.2 || 2" } }, + "word-wrap": { + "version": "1.2.3", + "resolved": "https://registry.npmjs.org/word-wrap/-/word-wrap-1.2.3.tgz", + "integrity": "sha512-Hz/mrNwitNRh/HUAtM/VT/5VH+ygD6DV7mYKZAtHOrbs8U7lvPS6xf7EJKMF0uW1KJCl0H701g3ZGus+muE5vQ==", + "dev": true + }, "wordwrap": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/wordwrap/-/wordwrap-1.0.0.tgz", "integrity": "sha1-J1hIEIkUVqQXHI0CJkQa3pDLyus=" }, + "workerpool": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/workerpool/-/workerpool-6.0.0.tgz", + "integrity": "sha512-fU2OcNA/GVAJLLyKUoHkAgIhKb0JoCpSjLC/G2vYKxUjVmQwGbRVeoPJ1a8U4pnVofz4AQV5Y/NEw8oKqxEBtA==", + "dev": true + }, "wrap-ansi": { "version": "2.1.0", "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-2.1.0.tgz", @@ -7629,16 +8770,10 @@ "mkdirp": "^0.5.1" }, "dependencies": { - "minimist": { - "version": "1.2.5", - "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.5.tgz", - "integrity": "sha512-FM9nNUYrRBAELZQT3xeZQ7fmMOBg6nWNmJKTcgsJeaLstP/UODVpGsr5OhXhhXg6f+qtJ8uiZ+PUxkDWcgIXLw==", - "dev": true - }, "mkdirp": { - "version": "0.5.4", - "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.4.tgz", - "integrity": "sha512-iG9AK/dJLtJ0XNgTuDbSyNS3zECqDlAhnQW4CsNxBG3LQJBbHmRX1egw39DmtOdCAqY+dKXV+sgPgilNWUKMVw==", + "version": "0.5.5", + "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.5.tgz", + "integrity": "sha512-NKmAlESf6jMGym1++R0Ra7wvhV+wFW63FaSOFPwRahvea0gMUcGUhVeAg/0BC0wiv9ih5NYPB1Wn1UEI1/L+xQ==", "dev": true, "requires": { "minimist": "^1.2.5" @@ -7679,94 +8814,129 @@ "integrity": "sha512-r9S/ZyXu/Xu9q1tYlpsLIsa3EeLXXk0VwlxqTcFRfg9EhMW+17kbt9G0NrgCmhGb5vT2hyhJZLfDGx+7+5Uj/w==", "dev": true }, + "yallist": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", + "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==", + "dev": true + }, "yargs": { - "version": "14.2.3", - "resolved": "https://registry.npmjs.org/yargs/-/yargs-14.2.3.tgz", - "integrity": "sha512-ZbotRWhF+lkjijC/VhmOT9wSgyBQ7+zr13+YLkhfsSiTriYsMzkTUFP18pFhWwBeMa5gUc1MzbhrO6/VB7c9Xg==", + "version": "16.0.3", + "resolved": "https://registry.npmjs.org/yargs/-/yargs-16.0.3.tgz", + "integrity": "sha512-6+nLw8xa9uK1BOEOykaiYAJVh6/CjxWXK/q9b5FpRgNslt8s22F2xMBqVIKgCRjNgGvGPBy8Vog7WN7yh4amtA==", "dev": true, "requires": { - "cliui": "^5.0.0", - "decamelize": "^1.2.0", - "find-up": "^3.0.0", - "get-caller-file": "^2.0.1", + "cliui": "^7.0.0", + "escalade": "^3.0.2", + "get-caller-file": "^2.0.5", "require-directory": "^2.1.1", - "require-main-filename": "^2.0.0", - "set-blocking": "^2.0.0", - "string-width": "^3.0.0", - "which-module": "^2.0.0", - "y18n": "^4.0.0", - "yargs-parser": "^15.0.1" + "string-width": "^4.2.0", + "y18n": "^5.0.1", + "yargs-parser": "^20.0.0" }, "dependencies": { "ansi-regex": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-4.1.0.tgz", - "integrity": "sha512-1apePfXM1UOSqw0o9IiFAovVz9M5S1Dg+4TrDwfMewQ6p/rmMueb7tWZjQ1rx4Loy1ArBggoqGpfqqdI4rondg==", + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.0.tgz", + "integrity": "sha512-bY6fj56OUQ0hU1KjFNDQuJFezqKdrAyFdIevADiqrWHwSlbmBNMHp5ak2f40Pm8JTFyM2mqxkG6ngkHO11f/lg==", "dev": true }, + "ansi-styles": { + "version": "4.2.1", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.2.1.tgz", + "integrity": "sha512-9VGjrMsG1vePxcSweQsN20KY/c4zN0h9fLjqAbwbPfahM3t+NL+M9HC8xeXG2I8pX5NoamTGNuomEUFI7fcUjA==", + "dev": true, + "requires": { + "@types/color-name": "^1.1.1", + "color-convert": "^2.0.1" + } + }, "cliui": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/cliui/-/cliui-5.0.0.tgz", - "integrity": "sha512-PYeGSEmmHM6zvoef2w8TPzlrnNpXIjTipYK780YswmIP9vjxmd6Y2a3CB2Ks6/AU8NHjZugXvo8w3oWM2qnwXA==", + "version": "7.0.1", + "resolved": "https://registry.npmjs.org/cliui/-/cliui-7.0.1.tgz", + "integrity": "sha512-rcvHOWyGyid6I1WjT/3NatKj2kDt9OdSHSXpyLXaMWFbKpGACNW8pRhhdPUq9MWUOdwn8Rz9AVETjF4105rZZQ==", "dev": true, "requires": { - "string-width": "^3.1.0", - "strip-ansi": "^5.2.0", - "wrap-ansi": "^5.1.0" + "string-width": "^4.2.0", + "strip-ansi": "^6.0.0", + "wrap-ansi": "^7.0.0" + } + }, + "color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "dev": true, + "requires": { + "color-name": "~1.1.4" } }, + "color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "dev": true + }, + "emoji-regex": { + "version": "8.0.0", + "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz", + "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==", + "dev": true + }, "get-caller-file": { "version": "2.0.5", "resolved": "https://registry.npmjs.org/get-caller-file/-/get-caller-file-2.0.5.tgz", "integrity": "sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg==", "dev": true }, - "require-main-filename": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/require-main-filename/-/require-main-filename-2.0.0.tgz", - "integrity": "sha512-NKN5kMDylKuldxYLSUfrbo5Tuzh4hd+2E8NPPX02mZtn1VuREQToYe/ZdlJy+J3uCpfaiGF05e7B8W0iXbQHmg==", + "is-fullwidth-code-point": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz", + "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==", "dev": true }, "string-width": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/string-width/-/string-width-3.1.0.tgz", - "integrity": "sha512-vafcv6KjVZKSgz06oM/H6GDBrAtz8vdhQakGjFIvNrHA6y3HCF1CInLy+QLq8dTJPQ1b+KDUqDFctkdRW44e1w==", + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.0.tgz", + "integrity": "sha512-zUz5JD+tgqtuDjMhwIg5uFVV3dtqZ9yQJlZVfq4I01/K5Paj5UHj7VyrQOJvzawSVlKpObApbfD0Ed6yJc+1eg==", "dev": true, "requires": { - "emoji-regex": "^7.0.1", - "is-fullwidth-code-point": "^2.0.0", - "strip-ansi": "^5.1.0" + "emoji-regex": "^8.0.0", + "is-fullwidth-code-point": "^3.0.0", + "strip-ansi": "^6.0.0" } }, "strip-ansi": { - "version": "5.2.0", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-5.2.0.tgz", - "integrity": "sha512-DuRs1gKbBqsMKIZlrffwlug8MHkcnpjs5VPmL1PAh+mA30U0DTotfDZ0d2UUsXpPmPmMMJ6W773MaA3J+lbiWA==", + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.0.tgz", + "integrity": "sha512-AuvKTrTfQNYNIctbR1K/YGTR1756GycPsg7b9bdV9Duqur4gv6aKqHXah67Z8ImS7WEz5QVcOtlfW2rZEugt6w==", "dev": true, "requires": { - "ansi-regex": "^4.1.0" + "ansi-regex": "^5.0.0" } }, "wrap-ansi": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-5.1.0.tgz", - "integrity": "sha512-QC1/iN/2/RPVJ5jYK8BGttj5z83LmSKmvbvrXPNCLZSEb32KKVDJDl/MOt2N01qU2H/FkzEa9PKto1BqDjtd7Q==", + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-7.0.0.tgz", + "integrity": "sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==", "dev": true, "requires": { - "ansi-styles": "^3.2.0", - "string-width": "^3.0.0", - "strip-ansi": "^5.0.0" + "ansi-styles": "^4.0.0", + "string-width": "^4.1.0", + "strip-ansi": "^6.0.0" } }, + "y18n": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/y18n/-/y18n-5.0.1.tgz", + "integrity": "sha512-/jJ831jEs4vGDbYPQp4yGKDYPSCCEQ45uZWJHE1AoYBzqdZi8+LDWas0z4HrmJXmKdpFsTiowSHXdxyFhpmdMg==", + "dev": true + }, "yargs-parser": { - "version": "15.0.1", - "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-15.0.1.tgz", - "integrity": "sha512-0OAMV2mAZQrs3FkNpDQcBk1x5HXb8X4twADss4S0Iuk+2dGnLOE/fRHrsYm542GduMveyA77OF4wrNJuanRCWw==", - "dev": true, - "requires": { - "camelcase": "^5.0.0", - "decamelize": "^1.2.0" - } + "version": "20.0.0", + "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-20.0.0.tgz", + "integrity": "sha512-8eblPHTL7ZWRkyjIZJjnGf+TijiKJSwA24svzLRVvtgoi/RZiKa9fFQTrlx0OKLnyHSdt/enrdadji6WFfESVA==", + "dev": true } } }, @@ -7781,14 +8951,16 @@ } }, "yargs-unparser": { - "version": "1.6.0", - "resolved": "https://registry.npmjs.org/yargs-unparser/-/yargs-unparser-1.6.0.tgz", - "integrity": "sha512-W9tKgmSn0DpSatfri0nx52Joq5hVXgeLiqR/5G0sZNDoLZFOr/xjBUDcShCOGNsBnEMNo1KAMBkTej1Hm62HTw==", + "version": "1.6.1", + "resolved": "https://registry.npmjs.org/yargs-unparser/-/yargs-unparser-1.6.1.tgz", + "integrity": "sha512-qZV14lK9MWsGCmcr7u5oXGH0dbGqZAIxTDrWXZDo5zUr6b6iUmelNKO6x6R1dQT24AH3LgRxJpr8meWy2unolA==", "dev": true, "requires": { + "camelcase": "^5.3.1", + "decamelize": "^1.2.0", "flat": "^4.1.0", - "lodash": "^4.17.15", - "yargs": "^13.3.0" + "is-plain-obj": "^1.1.0", + "yargs": "^14.2.3" }, "dependencies": { "ansi-regex": { @@ -7852,12 +9024,13 @@ } }, "yargs": { - "version": "13.3.2", - "resolved": "https://registry.npmjs.org/yargs/-/yargs-13.3.2.tgz", - "integrity": "sha512-AX3Zw5iPruN5ie6xGRIDgqkT+ZhnRlZMLMHAs8tg7nRruy2Nb+i5o9bwghAogtM08q1dpr2LVoS8KSTMYpWXUw==", + "version": "14.2.3", + "resolved": "https://registry.npmjs.org/yargs/-/yargs-14.2.3.tgz", + "integrity": "sha512-ZbotRWhF+lkjijC/VhmOT9wSgyBQ7+zr13+YLkhfsSiTriYsMzkTUFP18pFhWwBeMa5gUc1MzbhrO6/VB7c9Xg==", "dev": true, "requires": { "cliui": "^5.0.0", + "decamelize": "^1.2.0", "find-up": "^3.0.0", "get-caller-file": "^2.0.1", "require-directory": "^2.1.1", @@ -7866,13 +9039,13 @@ "string-width": "^3.0.0", "which-module": "^2.0.0", "y18n": "^4.0.0", - "yargs-parser": "^13.1.2" + "yargs-parser": "^15.0.1" } }, "yargs-parser": { - "version": "13.1.2", - "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-13.1.2.tgz", - "integrity": "sha512-3lbsNRf/j+A4QuSZfDRA7HRSfWrzO0YjqTJd5kjAq37Zep1CEgaYmrH9Q3GwPiB9cHyd1Y1UwggGhJGoxipbzg==", + "version": "15.0.1", + "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-15.0.1.tgz", + "integrity": "sha512-0OAMV2mAZQrs3FkNpDQcBk1x5HXb8X4twADss4S0Iuk+2dGnLOE/fRHrsYm542GduMveyA77OF4wrNJuanRCWw==", "dev": true, "requires": { "camelcase": "^5.0.0", @@ -7892,14 +9065,14 @@ } }, "zip-stream": { - "version": "2.1.3", - "resolved": "https://registry.npmjs.org/zip-stream/-/zip-stream-2.1.3.tgz", - "integrity": "sha512-EkXc2JGcKhO5N5aZ7TmuNo45budRaFGHOmz24wtJR7znbNqDPmdZtUauKX6et8KAVseAMBOyWJqEpXcHTBsh7Q==", + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/zip-stream/-/zip-stream-4.0.2.tgz", + "integrity": "sha512-TGxB2g+1ur6MHkvM644DuZr8Uzyz0k0OYWtS3YlpfWBEmK4woaC2t3+pozEL3dBfIPmpgmClR5B2QRcMgGt22g==", "dev": true, "requires": { "archiver-utils": "^2.1.0", - "compress-commons": "^2.1.1", - "readable-stream": "^3.4.0" + "compress-commons": "^4.0.0", + "readable-stream": "^3.6.0" }, "dependencies": { "readable-stream": { diff --git a/package.json b/package.json index 8f4b63889db..80bd35da571 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "blockly", - "version": "3.20200625.2", + "version": "3.20200924.0", "description": "Blockly is a library for building visual programming editors.", "keywords": [ "blockly" @@ -21,8 +21,10 @@ "build:blocks": "gulp buildBlocks", "build:compressed": "gulp buildCompressed", "build:core": "gulp buildCore", - "build:debug": "gulp buildCompressed --verbose --strict", + "build:debug": "gulp buildCompressed --verbose --debug", "build:debug:log": "npm run build:debug > build-debug.log 2>&1 && tail -3 build-debug.log", + "build:strict": "gulp buildCompressed --verbose --strict", + "build:strict:log": "npm run build:strict > build-debug.log 2>&1 && tail -3 build-debug.log", "build:generators": "gulp buildGenerators", "build:langfiles": "gulp buildLangfiles", "build:uncompressed": "gulp buildUncompressed", @@ -38,6 +40,7 @@ "test:run": "tests/run_all_tests.sh", "test:setupselenium": "selenium-standalone install --config=./tests/scripts/selenium-config.js", "test:startselenium": "selenium-standalone start --config=./tests/scripts/selenium-config.js", + "test:compile:advanced": "gulp buildAdvancedCompilationTest", "typings": "gulp typings", "updateGithubPages": "gulp gitUpdateGithubPages" }, @@ -52,46 +55,30 @@ }, "license": "Apache-2.0", "devDependencies": { + "babel-eslint": "^10.1.0", "chai": "^4.2.0", - "concurrently": "^4.1.2", - "eslint": "^5.13.0", + "concurrently": "^5.3.0", + "eslint": "^7.6.0", "eslint-plugin-es5": "^1.5.0", - "google-closure-compiler": "^20200101.0.0", - "google-closure-deps": "^20200101.0.0", + "google-closure-compiler": "^20200830.0.0", + "google-closure-deps": "^20200719.0.0", "gulp": "^4.0.2", "gulp-concat": "^2.6.1", "gulp-insert": "^0.5.0", - "gulp-rename": "^1.4.0", + "gulp-rename": "^2.0.0", "gulp-replace": "^1.0.0", "gulp-series": "^1.0.2", - "gulp-shell": "^0.7.1", + "gulp-shell": "^0.8.0", "gulp-sourcemaps": "^2.6.5", "gulp-umd": "^2.0.0", - "js-green-licenses": "^1.1.0", - "jshint": "^2.11.0", - "mocha": "^6.2.3", - "pixelmatch": "^4.0.2", - "pngjs": "^3.4.0", - "rimraf": "^2.6.3", + "js-green-licenses": "^2.0.1", + "mocha": "^8.1.1", + "rimraf": "^3.0.2", "selenium-standalone": "^6.17.0", - "through2": "^3.0.1", + "through2": "^4.0.2", "typescript-closure-tools": "^0.0.7", - "webdriverio": "^5.22.4", - "yargs": "^14.2.3" - }, - "jshintConfig": { - "globalstrict": true, - "predef": [ - "Blockly", - "goog", - "window", - "document", - "soy", - "XMLHttpRequest" - ], - "sub": true, - "undef": true, - "unused": true + "webdriverio": "^6.5.2", + "yargs": "^16.0.3" }, "dependencies": { "jsdom": "^15.2.1" diff --git a/php_compressed.js b/php_compressed.js index ed40cc12507..de0e3501add 100644 --- a/php_compressed.js +++ b/php_compressed.js @@ -17,7 +17,7 @@ Blockly.PHP.ORDER_CONDITIONAL=19;Blockly.PHP.ORDER_ASSIGNMENT=20;Blockly.PHP.ORD Blockly.PHP.ORDER_OVERRIDES=[[Blockly.PHP.ORDER_MEMBER,Blockly.PHP.ORDER_FUNCTION_CALL],[Blockly.PHP.ORDER_MEMBER,Blockly.PHP.ORDER_MEMBER],[Blockly.PHP.ORDER_LOGICAL_NOT,Blockly.PHP.ORDER_LOGICAL_NOT],[Blockly.PHP.ORDER_MULTIPLICATION,Blockly.PHP.ORDER_MULTIPLICATION],[Blockly.PHP.ORDER_ADDITION,Blockly.PHP.ORDER_ADDITION],[Blockly.PHP.ORDER_LOGICAL_AND,Blockly.PHP.ORDER_LOGICAL_AND],[Blockly.PHP.ORDER_LOGICAL_OR,Blockly.PHP.ORDER_LOGICAL_OR]]; Blockly.PHP.init=function(a){Blockly.PHP.definitions_=Object.create(null);Blockly.PHP.functionNames_=Object.create(null);Blockly.PHP.variableDB_?Blockly.PHP.variableDB_.reset():Blockly.PHP.variableDB_=new Blockly.Names(Blockly.PHP.RESERVED_WORDS_,"$");Blockly.PHP.variableDB_.setVariableMap(a.getVariableMap());for(var b=[],c=Blockly.Variables.allDeveloperVariables(a),d=0;dc?Blockly.PHP.valueToCode(a,b,Blockly.PHP.ORDER_SUBTRACTION)||f:d?Blockly.PHP.valueToCode(a,b,Blockly.PHP.ORDER_UNARY_NEGATION)||f:Blockly.PHP.valueToCode(a,b,e)||f;if(Blockly.isNumber(a))a=Number(a)+c,d&&(a=-a);else{if(0c&& diff --git a/php_compressed.js.map b/php_compressed.js.map index 53206918560..987bffc76a5 100644 --- a/php_compressed.js.map +++ b/php_compressed.js.map @@ -1 +1 @@ -{"version":3,"sources":["generators/php.js","generators/php/colour.js","generators/php/lists.js","generators/php/logic.js","generators/php/loops.js","generators/php/math.js","generators/php/procedures.js","generators/php/text.js","generators/php/variables.js","generators/php/variables_dynamic.js"],"names":["Blockly","PHP","Generator","addReservedWords","ORDER_ATOMIC","ORDER_CLONE","ORDER_NEW","ORDER_MEMBER","ORDER_FUNCTION_CALL","ORDER_POWER","ORDER_INCREMENT","ORDER_DECREMENT","ORDER_BITWISE_NOT","ORDER_CAST","ORDER_SUPPRESS_ERROR","ORDER_INSTANCEOF","ORDER_LOGICAL_NOT","ORDER_UNARY_PLUS","ORDER_UNARY_NEGATION","ORDER_MULTIPLICATION","ORDER_DIVISION","ORDER_MODULUS","ORDER_ADDITION","ORDER_SUBTRACTION","ORDER_STRING_CONCAT","ORDER_BITWISE_SHIFT","ORDER_RELATIONAL","ORDER_EQUALITY","ORDER_REFERENCE","ORDER_BITWISE_AND","ORDER_BITWISE_XOR","ORDER_BITWISE_OR","ORDER_LOGICAL_AND","ORDER_LOGICAL_OR","ORDER_IF_NULL","ORDER_CONDITIONAL","ORDER_ASSIGNMENT","ORDER_LOGICAL_AND_WEAK","ORDER_LOGICAL_XOR","ORDER_LOGICAL_OR_WEAK","ORDER_COMMA","ORDER_NONE","ORDER_OVERRIDES","init","Blockly.PHP.init","workspace","definitions_","Object","create","functionNames_","variableDB_","reset","Names","RESERVED_WORDS_","setVariableMap","getVariableMap","defvars","devVarList","Variables","allDeveloperVariables","i","length","push","getName","DEVELOPER_VARIABLE_TYPE","variables","allUsedVarModels","variable","getId","VARIABLE_CATEGORY_NAME","join","finish","Blockly.PHP.finish","code","definitions","name","scrubNakedValue","Blockly.PHP.scrubNakedValue","line","quote_","Blockly.PHP.quote_","string","replace","multiline_quote_","Blockly.PHP.multiline_quote_","scrub_","Blockly.PHP.scrub_","block","opt_thisOnly","commentCode","outputConnection","targetConnection","comment","getCommentText","utils","wrap","COMMENT_WRAP","prefixLines","inputList","type","INPUT_VALUE","childBlock","connection","targetBlock","allNestedComments","nextBlock","nextConnection","nextCode","blockToCode","getAdjusted","Blockly.PHP.getAdjusted","atId","opt_delta","opt_negate","opt_order","delta","order","options","oneBasedIndex","defaultAtIndex","at","valueToCode","isNumber","Number","innerOrder","Math","floor","Blockly.PHP.colour","getFieldValue","provideFunction_","functionName","FUNCTION_NAME_PLACEHOLDER_","red","green","blue","c1","c2","ratio","Blockly.PHP.lists","Array","itemCount_","element","repeatCount","list","argument0","argument1","errorIndex","indexAdjustment","mode","Error","where","value","match","listVar","getDistinctName","xVar","where1","where2","at1","at2","String","listCode","direction","value_input","value_delim","Blockly.PHP.logic","n","STATEMENT_PREFIX","injectId","conditionCode","branchCode","statementToCode","STATEMENT_SUFFIX","INDENT","getInput","operator","OPERATORS","defaultArgument","value_if","value_then","value_else","Blockly.PHP.loops","repeats","getField","branch","addLoopTrap","loopVar","endVar","until","variable0","increment","up","step","abs","startVar","incVar","xfix","loop","Constants","Loops","CONTROL_FLOW_IN_LOOP_CHECK_MIXIN","getSurroundLoop","suppressPrefixSuffix","Blockly.PHP.math","Infinity","tuple","arg","CONSTANTS","number_to_check","dropdown_property","divisor","varName","func","argument2","Blockly.PHP.procedures","globals","getVars","indexOf","funcName","PROCEDURE_CATEGORY_NAME","xfix1","loopTrap","INFINITE_LOOP_TRAP","returnValue","xfix2","args","hasReturnValue_","Blockly.PHP.texts","element0","element1","elements","text","substring","textOrder","msg","sub","from","to","Blockly.PHP.variables","Blockly.PHP.variablesDynamic"],"mappings":"A;;;;;;;;;;;;eAsBAA,OAAAC,IAAA,CAAc,IAAID,OAAAE,UAAJ,CAAsB,KAAtB,CASdF,QAAAC,IAAAE,iBAAA,CAEI,mqCAFJ,CA2BAH;OAAAC,IAAAG,aAAA,CAA2B,CAC3BJ,QAAAC,IAAAI,YAAA,CAA0B,CAC1BL,QAAAC,IAAAK,UAAA,CAAwB,CACxBN,QAAAC,IAAAM,aAAA,CAA2B,GAC3BP,QAAAC,IAAAO,oBAAA,CAAkC,GAClCR,QAAAC,IAAAQ,YAAA,CAA0B,CAC1BT,QAAAC,IAAAS,gBAAA,CAA8B,CAC9BV,QAAAC,IAAAU,gBAAA,CAA8B,CAC9BX,QAAAC,IAAAW,kBAAA,CAAgC,CAChCZ,QAAAC,IAAAY,WAAA,CAAyB,CACzBb,QAAAC,IAAAa,qBAAA,CAAmC,CACnCd,QAAAC,IAAAc,iBAAA,CAA+B,CAC/Bf,QAAAC,IAAAe,kBAAA,CAAgC,CAChChB,QAAAC,IAAAgB,iBAAA,CAA+B,GAC/BjB,QAAAC,IAAAiB,qBAAA,CAAmC,GACnClB,QAAAC,IAAAkB,qBAAA,CAAmC,GACnCnB;OAAAC,IAAAmB,eAAA,CAA6B,GAC7BpB,QAAAC,IAAAoB,cAAA,CAA4B,GAC5BrB,QAAAC,IAAAqB,eAAA,CAA6B,GAC7BtB,QAAAC,IAAAsB,kBAAA,CAAgC,GAChCvB,QAAAC,IAAAuB,oBAAA,CAAkC,GAClCxB,QAAAC,IAAAwB,oBAAA,CAAkC,EAClCzB,QAAAC,IAAAyB,iBAAA,CAA+B,EAC/B1B,QAAAC,IAAA0B,eAAA,CAA6B,EAC7B3B,QAAAC,IAAA2B,gBAAA,CAA8B,EAC9B5B,QAAAC,IAAA4B,kBAAA,CAAgC,EAChC7B,QAAAC,IAAA6B,kBAAA,CAAgC,EAChC9B,QAAAC,IAAA8B,iBAAA,CAA+B,EAC/B/B,QAAAC,IAAA+B,kBAAA,CAAgC,EAChChC,QAAAC,IAAAgC,iBAAA,CAA+B,EAC/BjC,QAAAC,IAAAiC,cAAA,CAA4B,EAC5BlC;OAAAC,IAAAkC,kBAAA,CAAgC,EAChCnC,QAAAC,IAAAmC,iBAAA,CAA+B,EAC/BpC,QAAAC,IAAAoC,uBAAA,CAAqC,EACrCrC,QAAAC,IAAAqC,kBAAA,CAAgC,EAChCtC,QAAAC,IAAAsC,sBAAA,CAAoC,EACpCvC,QAAAC,IAAAuC,YAAA,CAA0B,EAC1BxC,QAAAC,IAAAwC,WAAA,CAAyB,EAMzBzC;OAAAC,IAAAyC,gBAAA,CAA8B,CAG5B,CAAC1C,OAAAC,IAAAM,aAAD,CAA2BP,OAAAC,IAAAO,oBAA3B,CAH4B,CAM5B,CAACR,OAAAC,IAAAM,aAAD,CAA2BP,OAAAC,IAAAM,aAA3B,CAN4B,CAQ5B,CAACP,OAAAC,IAAAe,kBAAD,CAAgChB,OAAAC,IAAAe,kBAAhC,CAR4B,CAU5B,CAAChB,OAAAC,IAAAkB,qBAAD,CAAmCnB,OAAAC,IAAAkB,qBAAnC,CAV4B,CAY5B,CAACnB,OAAAC,IAAAqB,eAAD,CAA6BtB,OAAAC,IAAAqB,eAA7B,CAZ4B,CAc5B,CAACtB,OAAAC,IAAA+B,kBAAD,CAAgChC,OAAAC,IAAA+B,kBAAhC,CAd4B,CAgB5B,CAAChC,OAAAC,IAAAgC,iBAAD,CAA+BjC,OAAAC,IAAAgC,iBAA/B,CAhB4B,CAuB9BjC;OAAAC,IAAA0C,KAAA,CAAmBC,QAAQ,CAACC,CAAD,CAAY,CAErC7C,OAAAC,IAAA6C,aAAA,CAA2BC,MAAAC,OAAA,CAAc,IAAd,CAG3BhD,QAAAC,IAAAgD,eAAA,CAA6BF,MAAAC,OAAA,CAAc,IAAd,CAExBhD,QAAAC,IAAAiD,YAAL,CAIElD,OAAAC,IAAAiD,YAAAC,MAAA,EAJF,CACEnD,OAAAC,IAAAiD,YADF,CAEM,IAAIlD,OAAAoD,MAAJ,CAAkBpD,OAAAC,IAAAoD,gBAAlB,CAA+C,GAA/C,CAKNrD,QAAAC,IAAAiD,YAAAI,eAAA,CAAuCT,CAAAU,eAAA,EAAvC,CAKA,KAHA,IAAIC,EAAU,EAAd,CAEIC,EAAazD,OAAA0D,UAAAC,sBAAA,CAAwCd,CAAxC,CAFjB,CAGSe,EAAI,CAAb,CAAgBA,CAAhB,CAAoBH,CAAAI,OAApB,CAAuCD,CAAA,EAAvC,CACEJ,CAAAM,KAAA,CAAa9D,OAAAC,IAAAiD,YAAAa,QAAA,CAAgCN,CAAA,CAAWG,CAAX,CAAhC,CACT5D,OAAAoD,MAAAY,wBADS,CAAb,CAC6C,GAD7C,CAKEC,EAAAA,CAAYjE,OAAA0D,UAAAQ,iBAAA,CAAmCrB,CAAnC,CAChB;IAASe,CAAT,CAAa,CAAb,CAA0BO,CAA1B,CAAqCF,CAAA,CAAUL,CAAV,CAArC,CAAmDA,CAAA,EAAnD,CACEJ,CAAAM,KAAA,CAAa9D,OAAAC,IAAAiD,YAAAa,QAAA,CAAgCI,CAAAC,MAAA,EAAhC,CACTpE,OAAAqE,uBADS,CAAb,CACsC,GADtC,CAKFrE,QAAAC,IAAA6C,aAAA,UAAA,CAAwCU,CAAAc,KAAA,CAAa,IAAb,CAhCH,CAwCvCtE,QAAAC,IAAAsE,OAAA,CAAqBC,QAAQ,CAACC,CAAD,CAAO,CAElC,IAAIC,EAAc,EAAlB,CACSC,CAAT,KAASA,CAAT,GAAiB3E,QAAAC,IAAA6C,aAAjB,CACE4B,CAAAZ,KAAA,CAAiB9D,OAAAC,IAAA6C,aAAA,CAAyB6B,CAAzB,CAAjB,CAGF,QAAO3E,OAAAC,IAAA6C,aACP,QAAO9C,OAAAC,IAAAgD,eACPjD,QAAAC,IAAAiD,YAAAC,MAAA,EACA,OAAOuB,EAAAJ,KAAA,CAAiB,MAAjB,CAAP,CAAkC,QAAlC,CAA6CG,CAVX,CAmBpCzE,QAAAC,IAAA2E,gBAAA,CAA8BC,QAAQ,CAACC,CAAD,CAAO,CAC3C,MAAOA,EAAP,CAAc,KAD6B,CAW7C9E;OAAAC,IAAA8E,OAAA,CAAqBC,QAAQ,CAACC,CAAD,CAAS,CACpCA,CAAA,CAASA,CAAAC,QAAA,CAAe,KAAf,CAAsB,MAAtB,CAAAA,QAAA,CACe,KADf,CACsB,MADtB,CAAAA,QAAA,CAEe,IAFf,CAEqB,KAFrB,CAGT,OAAO,GAAP,CAAcD,CAAd,CAAuB,GAJa,CActCjF,QAAAC,IAAAkF,iBAAA,CAA+BC,QAAQ,CAACH,CAAD,CAAS,CAC9C,MAAO,UAAP,CAAoBA,CAApB,CAA6B,OADiB,CAchDjF;OAAAC,IAAAoF,OAAA,CAAqBC,QAAQ,CAACC,CAAD,CAAQd,CAAR,CAAce,CAAd,CAA4B,CACvD,IAAIC,EAAc,EAElB,IAAI,CAACF,CAAAG,iBAAL,EAA+B,CAACH,CAAAG,iBAAAC,iBAAhC,CAAyE,CAEvE,IAAIC,EAAUL,CAAAM,eAAA,EACVD,EAAJ,GACEA,CAEA,CAFU5F,OAAA8F,MAAAb,OAAAc,KAAA,CAA0BH,CAA1B,CACN5F,OAAAC,IAAA+F,aADM,CACqB,CADrB,CAEV,CAAAP,CAAA,EAAezF,OAAAC,IAAAgG,YAAA,CAAwBL,CAAxB,CAAiC,KAAjC,CAAf,CAAyD,IAH3D,CAOA,KAAK,IAAIhC,EAAI,CAAb,CAAgBA,CAAhB,CAAoB2B,CAAAW,UAAArC,OAApB,CAA4CD,CAAA,EAA5C,CACM2B,CAAAW,UAAA,CAAgBtC,CAAhB,CAAAuC,KAAJ,EAA+BnG,OAAAoG,YAA/B,GACMC,CADN,CACmBd,CAAAW,UAAA,CAAgBtC,CAAhB,CAAA0C,WAAAC,YAAA,EADnB,IAGIX,CAHJ,CAGc5F,OAAAC,IAAAuG,kBAAA,CAA8BH,CAA9B,CAHd,IAKMZ,CALN,EAKqBzF,OAAAC,IAAAgG,YAAA,CAAwBL,CAAxB,CAAiC,KAAjC,CALrB,CAXqE,CAsBrEa,CAAAA,CAAYlB,CAAAmB,eAAZD,EAAoClB,CAAAmB,eAAAH,YAAA,EACpCI,EAAAA,CAAWnB,CAAA,CAAe,EAAf,CAAoBxF,OAAAC,IAAA2G,YAAA,CAAwBH,CAAxB,CACnC;MAAOhB,EAAP,CAAqBhB,CAArB,CAA4BkC,CA3B2B,CAuCzD3G;OAAAC,IAAA4G,YAAA,CAA0BC,QAAQ,CAACvB,CAAD,CAAQwB,CAAR,CAAcC,CAAd,CAAyBC,CAAzB,CAC9BC,CAD8B,CACnB,CACTC,CAAAA,CAAQH,CAARG,EAAqB,CACrBC,EAAAA,CAAQF,CAARE,EAAqBpH,OAAAC,IAAAwC,WACrB8C,EAAA1C,UAAAwE,QAAAC,cAAJ,EACEH,CAAA,EAEF,KAAII,EAAiBhC,CAAA1C,UAAAwE,QAAAC,cAAA,CAAwC,GAAxC,CAA8C,GAE7DE,EAAAA,CADM,CAAZ,CAAIL,CAAJ,CACWnH,OAAAC,IAAAwH,YAAA,CAAwBlC,CAAxB,CAA+BwB,CAA/B,CACD/G,OAAAC,IAAAqB,eADC,CADX,EAEyCiG,CAFzC,CAGmB,CAAZ,CAAIJ,CAAJ,CACInH,OAAAC,IAAAwH,YAAA,CAAwBlC,CAAxB,CAA+BwB,CAA/B,CACD/G,OAAAC,IAAAsB,kBADC,CADJ,EAEqCgG,CAFrC,CAGIN,CAAJ,CACIjH,OAAAC,IAAAwH,YAAA,CAAwBlC,CAAxB,CAA+BwB,CAA/B,CACD/G,OAAAC,IAAAiB,qBADC,CADJ,EAEwCqG,CAFxC,CAIIvH,OAAAC,IAAAwH,YAAA,CAAwBlC,CAAxB,CAA+BwB,CAA/B,CAAqCK,CAArC,CAJJ,EAKDG,CAGN,IAAIvH,OAAA0H,SAAA,CAAiBF,CAAjB,CAAJ,CAEEA,CACA,CADKG,MAAA,CAAOH,CAAP,CACL,CADkBL,CAClB,CAAIF,CAAJ,GACEO,CADF,CACO,CAACA,CADR,CAHF,KAMO,CAEL,GAAY,CAAZ,CAAIL,CAAJ,CAAe,CACbK,CAAA,CAAKA,CAAL,CAAU,KAAV,CAAkBL,CAClB,KAAIS,EAAa5H,OAAAC,IAAAqB,eAFJ,CAAf,IAGmB,EAAZ,CAAI6F,CAAJ;CACLK,CACA,CADKA,CACL,CADU,KACV,CADkB,CAACL,CACnB,CAAIS,CAAJ,CAAiB5H,OAAAC,IAAAsB,kBAFZ,CAIH0F,EAAJ,GAEIO,CAIF,CALIL,CAAJ,CACO,IADP,CACcK,CADd,CACmB,GADnB,CAGO,GAHP,CAGaA,CAEb,CAAII,CAAJ,CAAiB5H,OAAAC,IAAAiB,qBANnB,CAQA0G,EAAA,CAAaC,IAAAC,MAAA,CAAWF,CAAX,CACbR,EAAA,CAAQS,IAAAC,MAAA,CAAWV,CAAX,CACJQ,EAAJ,EAAkBR,CAAlB,EAA2BQ,CAA3B,GACEJ,CADF,CACO,GADP,CACaA,CADb,CACkB,GADlB,CAnBK,CAuBP,MAAOA,EAlDM,C,CC1PW,OAAA,IAAAO,OAAA,CAAA,EAK1B/H,QAAAC,IAAA,cAAA,CAA+B,QAAQ,CAACsF,CAAD,CAAQ,CAG7C,MAAO,CADIvF,OAAAC,IAAA8E,OAAAN,CAAmBc,CAAAyC,cAAA,CAAoB,QAApB,CAAnBvD,CACJ,CAAOzE,OAAAC,IAAAG,aAAP,CAHsC,CAM/CJ,QAAAC,IAAA,cAAA,CAA+B,QAAQ,CAACsF,CAAD,CAAQ,CAS7C,MAAO,CAPYvF,OAAAC,IAAAgI,iBAAAC,CACf,eADeA,CAEf,CAAC,WAAD,CAAelI,OAAAC,IAAAkI,2BAAf,CAAwD,MAAxD,CACC,6EADD,CAGC,GAHD,CAFeD,CAOZ,CADmB,IACnB,CAAOlI,OAAAC,IAAAO,oBAAP,CATsC,CAY/CR;OAAAC,IAAA,WAAA,CAA4B,QAAQ,CAACsF,CAAD,CAAQ,CAE1C,IAAI6C,EAAMpI,OAAAC,IAAAwH,YAAA,CAAwBlC,CAAxB,CAA+B,KAA/B,CACNvF,OAAAC,IAAAuC,YADM,CAAN4F,EAC4B,CADhC,CAEIC,EAAQrI,OAAAC,IAAAwH,YAAA,CAAwBlC,CAAxB,CAA+B,OAA/B,CACRvF,OAAAC,IAAAuC,YADQ,CAAR6F,EAC4B,CAC5BC,EAAAA,CAAOtI,OAAAC,IAAAwH,YAAA,CAAwBlC,CAAxB,CAA+B,MAA/B,CACPvF,OAAAC,IAAAuC,YADO,CAAP8F,EAC4B,CAehC,OAAO,CAdYtI,OAAAC,IAAAgI,iBAAAC,CACf,YADeA,CAEf,CAAC,WAAD,CAAelI,OAAAC,IAAAkI,2BAAf,CACI,gBADJ,CAEC,4CAFD,CAGC,4CAHD,CAIC,4CAJD,CAKC,eALD,CAMC,sDAND;AAOC,sDAPD,CAQC,sDARD,CASC,gBATD,CAUC,GAVD,CAFeD,CAcZ,CADmB,GACnB,CADyBE,CACzB,CAD+B,IAC/B,CADsCC,CACtC,CAD8C,IAC9C,CADqDC,CACrD,CAD4D,GAC5D,CAAOtI,OAAAC,IAAAO,oBAAP,CAtBmC,CAyB5CR;OAAAC,IAAA,aAAA,CAA8B,QAAQ,CAACsF,CAAD,CAAQ,CAE5C,IAAIgD,EAAKvI,OAAAC,IAAAwH,YAAA,CAAwBlC,CAAxB,CAA+B,SAA/B,CACLvF,OAAAC,IAAAuC,YADK,CAAL+F,EAC4B,WADhC,CAEIC,EAAKxI,OAAAC,IAAAwH,YAAA,CAAwBlC,CAAxB,CAA+B,SAA/B,CACLvF,OAAAC,IAAAuC,YADK,CAALgG,EAC4B,WAC5BC,EAAAA,CAAQzI,OAAAC,IAAAwH,YAAA,CAAwBlC,CAAxB,CAA+B,OAA/B,CACRvF,OAAAC,IAAAuC,YADQ,CAARiG,EAC4B,EAsBhC,OAAO,CArBYzI,OAAAC,IAAAgI,iBAAAC,CACf,cADeA,CAEf,CAAC,WAAD,CAAelI,OAAAC,IAAAkI,2BAAf,CACI,sBADJ,CAEC,oCAFD,CAGC,oCAHD,CAIC,oCAJD,CAKC,oCALD;AAMC,oCAND,CAOC,oCAPD,CAQC,oCARD,CASC,kDATD,CAUC,kDAVD,CAWC,kDAXD,CAYC,eAZD,CAaC,sDAbD,CAcC,sDAdD,CAeC,sDAfD,CAgBC,gBAhBD,CAiBC,GAjBD,CAFeD,CAqBZ,CADmB,GACnB,CADyBK,CACzB,CAD8B,IAC9B,CADqCC,CACrC,CAD0C,IAC1C,CADiDC,CACjD,CADyD,GACzD,CAAOzI,OAAAC,IAAAO,oBAAP,CA7BqC,C,CCrCpB,OAAA,IAAAkI,MAAA,CAAA,EAK1B1I,QAAAC,IAAA,mBAAA,CAAoC,QAAQ,CAACsF,CAAD,CAAQ,CAElD,MAAO,CAAC,SAAD,CAAYvF,OAAAC,IAAAO,oBAAZ,CAF2C,CAKpDR,QAAAC,IAAA,kBAAA,CAAmC,QAAQ,CAACsF,CAAD,CAAQ,CAGjD,IADA,IAAId,EAAWkE,KAAJ,CAAUpD,CAAAqD,WAAV,CAAX,CACShF,EAAI,CAAb,CAAgBA,CAAhB,CAAoB2B,CAAAqD,WAApB,CAAsChF,CAAA,EAAtC,CACEa,CAAA,CAAKb,CAAL,CAAA,CAAU5D,OAAAC,IAAAwH,YAAA,CAAwBlC,CAAxB,CAA+B,KAA/B,CAAuC3B,CAAvC,CACN5D,OAAAC,IAAAuC,YADM,CAAV,EACgC,MAElCiC,EAAA,CAAO,QAAP,CAAkBA,CAAAH,KAAA,CAAU,IAAV,CAAlB,CAAoC,GACpC,OAAO,CAACG,CAAD,CAAOzE,OAAAC,IAAAO,oBAAP,CAR0C,CAWnDR;OAAAC,IAAA,aAAA,CAA8B,QAAQ,CAACsF,CAAD,CAAQ,CAE5C,IAAI2C,EAAelI,OAAAC,IAAAgI,iBAAA,CACf,cADe,CAEf,CAAC,WAAD,CAAejI,OAAAC,IAAAkI,2BAAf,CACI,oBADJ,CAEC,qBAFD,CAGC,iDAHD,CAIC,wBAJD,CAKC,KALD,CAMC,kBAND,CAOC,GAPD,CAFe,CAAnB,CAUIU,EAAU7I,OAAAC,IAAAwH,YAAA,CAAwBlC,CAAxB,CAA+B,MAA/B,CACVvF,OAAAC,IAAAuC,YADU,CAAVqG,EAC4B,MAC5BC,EAAAA,CAAc9I,OAAAC,IAAAwH,YAAA,CAAwBlC,CAAxB,CAA+B,KAA/B,CACdvF,OAAAC,IAAAuC,YADc,CAAdsG,EAC4B,GAEhC,OAAO,CADIZ,CACJ,CADmB,GACnB,CADyBW,CACzB,CADmC,IACnC,CAD0CC,CAC1C,CADwD,GACxD,CAAO9I,OAAAC,IAAAO,oBAAP,CAjBqC,CAoB9CR;OAAAC,IAAA,aAAA,CAA8B,QAAQ,CAACsF,CAAD,CAAQ,CAE5C,IAAI2C,EAAelI,OAAAC,IAAAgI,iBAAA,CACf,QADe,CAEf,CAAC,WAAD,CAAejI,OAAAC,IAAAkI,2BAAf,CAAwD,YAAxD,CACC,4BADD,CAEC,4BAFD,CAGC,YAHD,CAIC,2BAJD,CAKC,KALD,CAMC,GAND,CAFe,CASfY,EAAAA,CAAO/I,OAAAC,IAAAwH,YAAA,CAAwBlC,CAAxB,CAA+B,OAA/B,CACPvF,OAAAC,IAAAwC,WADO,CAAPsG,EAC2B,IAC/B,OAAO,CAACb,CAAD,CAAgB,GAAhB,CAAsBa,CAAtB,CAA6B,GAA7B,CAAkC/I,OAAAC,IAAAO,oBAAlC,CAbqC,CAgB9CR;OAAAC,IAAA,cAAA,CAA+B,QAAQ,CAACsF,CAAD,CAAQ,CAI7C,MAAO,CAAC,QAAD,EAFSvF,OAAAC,IAAAwH,YAAA,CAAwBlC,CAAxB,CAA+B,OAA/B,CACZvF,OAAAC,IAAAO,oBADY,CAET,EADiC,SACjC,EAAwB,GAAxB,CAA6BR,OAAAC,IAAAO,oBAA7B,CAJsC,CAO/CR;OAAAC,IAAA,cAAA,CAA+B,QAAQ,CAACsF,CAAD,CAAQ,CAE7C,IAAIyD,EAAYhJ,OAAAC,IAAAwH,YAAA,CAAwBlC,CAAxB,CAA+B,MAA/B,CACZvF,OAAAC,IAAAwC,WADY,CAAZuG,EAC2B,IAD/B,CAEIC,EAAYjJ,OAAAC,IAAAwH,YAAA,CAAwBlC,CAAxB,CAA+B,OAA/B,CACZvF,OAAAC,IAAAM,aADY,CAAZ0I,EAC6B,IACjC,IAAI1D,CAAA1C,UAAAwE,QAAAC,cAAJ,CACE,IAAI4B,EAAa,IAAjB,CACIC,EAAkB,MAFxB,KAIMD,EACJ,CADiB,KACjB,CAAIC,CAAJ,CAAsB,EA8BxB,OAAO,EA5B2B,OAAlCjB,EAAI3C,CAAAyC,cAAA,CAAoB,KAApB,CAAJE,CAEqBlI,OAAAC,IAAAgI,iBAAA,CACf,SADe,CAEf,CAAC,WAAD,CAAejI,OAAAC,IAAAkI,2BAAf,CACI,wBADJ,CAEC,2DAFD,CAGC,qDAHD;AAIIgB,CAJJ,CAIsB,GAJtB,CAKC,KALD,CAMC,WAND,CAMeD,CANf,CAM4B,GAN5B,CAOC,GAPD,CAFe,CAFrBhB,CAcqBlI,OAAAC,IAAAgI,iBAAA,CACf,aADe,CAEf,CAAC,WAAD,CAAejI,OAAAC,IAAAkI,2BAAf,CACI,wBADJ,CAEC,YAFD,CAEgBe,CAFhB,CAE6B,GAF7B,CAGC,2DAHD,CAIC,sDAJD,CAKIC,CALJ,CAKsB,GALtB,CAMC,KAND,CAOC,iBAPD,CAQC,GARD,CAFe,CAcd,EADmB,GACnB,CADyBF,CACzB,CADqC,IACrC,CAD4CD,CAC5C,CADwD,GACxD,CAAOhJ,OAAAC,IAAAO,oBAAP,CAzCsC,CA4C/CR;OAAAC,IAAA,eAAA,CAAgC,QAAQ,CAACsF,CAAD,CAAQ,CAE9C,IAAI6D,EAAO7D,CAAAyC,cAAA,CAAoB,MAApB,CAAPoB,EAAsC,KAE1C,QADY7D,CAAAyC,cAAA,CAAoB,OAApB,CACZ,EAD4C,YAC5C,EACE,KAAK,OAAL,CACE,GAAY,KAAZ,EAAIoB,CAAJ,CAAmB,CACjB,IAAIL,EAAO/I,OAAAC,IAAAwH,YAAA,CAAwBlC,CAAxB,CAA+B,OAA/B,CACHvF,OAAAC,IAAAM,aADG,CAAPwI,EACiC,SAErC,OAAO,CADIA,CACJ,CADW,KACX,CAAO/I,OAAAC,IAAAM,aAAP,CAJU,CAKZ,GAAY,YAAZ,EAAI6I,CAAJ,CAIL,MAHIL,EAGG,CAHI/I,OAAAC,IAAAwH,YAAA,CAAwBlC,CAAxB,CAA+B,OAA/B,CACHvF,OAAAC,IAAAwC,WADG,CAGJ,EAF4B,SAE5B,CAAA,CADI,cACJ,CADqBsG,CACrB,CAD4B,GAC5B,CAAO/I,OAAAC,IAAAO,oBAAP,CACF,IAAY,QAAZ,EAAI4I,CAAJ,CAGL,MAFIL,EAEG,CAFI/I,OAAAC,IAAAwH,YAAA,CAAwBlC,CAAxB,CAA+B,OAA/B,CACHvF,OAAAC,IAAAwC,WADG,CAEJ;AAD4B,SAC5B,CAAA,cAAA,CAAiBsG,CAAjB,CAAwB,MAEjC,MACF,MAAK,MAAL,CACE,GAAY,KAAZ,EAAIK,CAAJ,CAIE,MAHIL,EAGG,CAHI/I,OAAAC,IAAAwH,YAAA,CAAwBlC,CAAxB,CAA+B,OAA/B,CACHvF,OAAAC,IAAAwC,WADG,CAGJ,EAF4B,SAE5B,CAAA,CADI,MACJ,CADasG,CACb,CADoB,GACpB,CAAO/I,OAAAC,IAAAO,oBAAP,CACF,IAAY,YAAZ,EAAI4I,CAAJ,CAIL,MAHIL,EAGG,CAHI/I,OAAAC,IAAAwH,YAAA,CAAwBlC,CAAxB,CAA+B,OAA/B,CACHvF,OAAAC,IAAAwC,WADG,CAGJ,EAF4B,SAE5B,CAAA,CADI,YACJ,CADmBsG,CACnB,CAD0B,GAC1B,CAAO/I,OAAAC,IAAAO,oBAAP,CACF,IAAY,QAAZ,EAAI4I,CAAJ,CAGL,MAFIL,EAEG,CAFI/I,OAAAC,IAAAwH,YAAA,CAAwBlC,CAAxB,CAA+B,OAA/B,CACHvF,OAAAC,IAAAwC,WADG,CAEJ,EAD4B,SAC5B,CAAA,YAAA,CAAesG,CAAf,CAAsB,MAE/B,MACF,MAAK,YAAL,CACE,IAAIvB,EAAKxH,OAAAC,IAAA4G,YAAA,CAAwBtB,CAAxB;AAA+B,IAA/B,CACT,IAAY,KAAZ,EAAI6D,CAAJ,CAIE,MAHIL,EAGG,CAHI/I,OAAAC,IAAAwH,YAAA,CAAwBlC,CAAxB,CAA+B,OAA/B,CACHvF,OAAAC,IAAAM,aADG,CAGJ,EAF8B,SAE9B,CAAA,CADIwI,CACJ,CADW,GACX,CADiBvB,CACjB,CADsB,GACtB,CAAOxH,OAAAC,IAAAM,aAAP,CACF,IAAY,YAAZ,EAAI6I,CAAJ,CAIL,MAHIL,EAGG,CAHI/I,OAAAC,IAAAwH,YAAA,CAAwBlC,CAAxB,CAA+B,OAA/B,CACHvF,OAAAC,IAAAuC,YADG,CAGJ,EAF6B,SAE7B,CAAA,CADI,eACJ,CADsBuG,CACtB,CAD6B,IAC7B,CADoCvB,CACpC,CADyC,SACzC,CAAOxH,OAAAC,IAAAO,oBAAP,CACF,IAAY,QAAZ,EAAI4I,CAAJ,CAGL,MAFIL,EAEG,CAFI/I,OAAAC,IAAAwH,YAAA,CAAwBlC,CAAxB,CAA+B,OAA/B,CACHvF,OAAAC,IAAAuC,YADG,CAEJ,EAD6B,SAC7B,CAAA,eAAA,CAAkBuG,CAAlB,CAAyB,IAAzB,CAAgCvB,CAAhC,CAAqC,SAE9C,MACF,MAAK,UAAL,CACE,GAAY,KAAZ,EAAI4B,CAAJ,CAKE,MAJIL,EAIG,CAJI/I,OAAAC,IAAAwH,YAAA,CAAwBlC,CAAxB;AAA+B,OAA/B,CACHvF,OAAAC,IAAAuC,YADG,CAIJ,EAH6B,SAG7B,CAFHgF,CAEG,CAFExH,OAAAC,IAAA4G,YAAA,CAAwBtB,CAAxB,CAA+B,IAA/B,CAAqC,CAArC,CAAwC,CAAA,CAAxC,CAEF,CAAA,CADI,cACJ,CADqBwD,CACrB,CAD4B,IAC5B,CADmCvB,CACnC,CADwC,SACxC,CAAOxH,OAAAC,IAAAO,oBAAP,CACF,IAAY,YAAZ,EAAI4I,CAAJ,EAAoC,QAApC,EAA4BA,CAA5B,CAA8C,CAC/CL,CAAJ,CAAW/I,OAAAC,IAAAwH,YAAA,CAAwBlC,CAAxB,CAA+B,OAA/B,CACHvF,OAAAC,IAAAwC,WADG,CAAX,EACmC,SAC/B+E,EAAJ,CAASxH,OAAAC,IAAA4G,YAAA,CAAwBtB,CAAxB,CAA+B,IAA/B,CAAqC,CAArC,CAAwC,CAAA,CAAxC,CACLvF,OAAAC,IAAAsB,kBADK,CAETkD,EAAA,CAAO,eAAP,CAAyBsE,CAAzB,CACI,UADJ,CACiBA,CADjB,CACwB,MADxB,CACiCvB,CADjC,CACsC,SACtC,IAAY,YAAZ,EAAI4B,CAAJ,CACE,MAAO,CAAC3E,CAAD,CAAOzE,OAAAC,IAAAO,oBAAP,CACF,IAAY,QAAZ,EAAI4I,CAAJ,CACL,MAAO3E,EAAP,CAAc,KAVmC,CAarD,KACF,MAAK,QAAL,CACMsE,CAAJ,CAAW/I,OAAAC,IAAAwH,YAAA,CAAwBlC,CAAxB;AAA+B,OAA/B,CACHvF,OAAAC,IAAAwC,WADG,CAAX,EACmC,SACnC,IAAY,KAAZ,EAAI2G,CAAJ,CAQE,MAPIlB,EAOG,CAPYlI,OAAAC,IAAAgI,iBAAA,CACf,uBADe,CAEf,CAAC,WAAD,CAAejI,OAAAC,IAAAkI,2BAAf,CACI,WADJ,CAEC,yCAFD,CAGC,GAHD,CAFe,CAOZ,CAAA,CADAD,CACA,CADe,GACf,CADqBa,CACrB,CAD4B,GAC5B,CAAO/I,OAAAC,IAAAO,oBAAP,CACF,IAAY,YAAZ,EAAI4I,CAAJ,CAUL,MATIlB,EASG,CATYlI,OAAAC,IAAAgI,iBAAA,CACf,8BADe,CAEf,CAAC,WAAD,CAAejI,OAAAC,IAAAkI,2BAAf,CACI,YADJ,CAEC,gCAFD,CAGC,qBAHD,CAIC,+BAJD;AAKC,GALD,CAFe,CASZ,CAAA,CADAD,CACA,CADe,GACf,CADqBa,CACrB,CAD4B,GAC5B,CAAO/I,OAAAC,IAAAO,oBAAP,CACF,IAAY,QAAZ,EAAI4I,CAAJ,CAOL,MANIlB,EAMG,CANYlI,OAAAC,IAAAgI,iBAAA,CACf,0BADe,CAEf,CAAC,WAAD,CAAejI,OAAAC,IAAAkI,2BAAf,CACI,YADJ,CAEC,yCAFD,CAGC,GAHD,CAFe,CAMZ,CAAAD,CAAA,CAAe,GAAf,CAAqBa,CAArB,CAA4B,MAxGzC,CA4GA,KAAMM,MAAA,CAAM,yCAAN,CAAN,CAhH8C,CAmHhDrJ;OAAAC,IAAA,eAAA,CAAgC,QAAQ,CAACsF,CAAD,CAAQ,CAG9C,IAAI6D,EAAO7D,CAAAyC,cAAA,CAAoB,MAApB,CAAPoB,EAAsC,KAA1C,CACIE,EAAQ/D,CAAAyC,cAAA,CAAoB,OAApB,CAARsB,EAAwC,YAD5C,CAEIC,EAAQvJ,OAAAC,IAAAwH,YAAA,CAAwBlC,CAAxB,CAA+B,IAA/B,CACRvF,OAAAC,IAAAmC,iBADQ,CAARmH,EACiC,MAarC,QAAQD,CAAR,EACE,KAAK,OAAL,CACE,GAAY,KAAZ,EAAIF,CAAJ,CAGE,MAFIL,EAEG,CAFI/I,OAAAC,IAAAwH,YAAA,CAAwBlC,CAAxB,CAA+B,MAA/B,CACHvF,OAAAC,IAAAM,aADG,CAEJ,EAD8B,SAC9B,CAAAwI,CAAA,CAAO,QAAP,CAAkBQ,CAAlB,CAA0B,KAC5B,IAAY,QAAZ,EAAIH,CAAJ,CAGL,MAFIL,EAEG,CAFI/I,OAAAC,IAAAwH,YAAA,CAAwBlC,CAAxB,CAA+B,MAA/B,CACHvF,OAAAC,IAAAuC,YADG,CAEJ,EAD6B,SAC7B,CAAA,gBAAA,CAAmBuG,CAAnB,CAA0B,IAA1B,CAAiCQ,CAAjC,CAAyC,MAElD,MACF,MAAK,MAAL,CACMR,CAAJ,CAAW/I,OAAAC,IAAAwH,YAAA,CAAwBlC,CAAxB,CAA+B,MAA/B,CACHvF,OAAAC,IAAAuC,YADG,CAAX;AACoC,SACpC,IAAY,KAAZ,EAAI4G,CAAJ,CAOE,MANIlB,EAMG,CANYlI,OAAAC,IAAAgI,iBAAA,CACf,qBADe,CAEf,CAAC,WAAD,CAAejI,OAAAC,IAAAkI,2BAAf,CACI,oBADJ,CAEC,qCAFD,CAGC,GAHD,CAFe,CAMZ,CAAAD,CAAA,CAAe,GAAf,CAAqBa,CAArB,CAA4B,IAA5B,CAAmCQ,CAAnC,CAA2C,MAC7C,IAAY,QAAZ,EAAIH,CAAJ,CACL,MAAO,aAAP,CAAuBL,CAAvB,CAA8B,IAA9B,CAAqCQ,CAArC,CAA6C,MAE/C,MACF,MAAK,YAAL,CACE,IAAI/B,EAAKxH,OAAAC,IAAA4G,YAAA,CAAwBtB,CAAxB,CAA+B,IAA/B,CACT,IAAY,KAAZ,EAAI6D,CAAJ,CAGE,MAFIL,EAEG,CAFI/I,OAAAC,IAAAwH,YAAA,CAAwBlC,CAAxB,CAA+B,MAA/B,CACHvF,OAAAC,IAAAM,aADG,CAEJ,EAD8B,SAC9B,CAAAwI,CAAA,CAAO,GAAP,CAAavB,CAAb,CAAkB,MAAlB,CAA2B+B,CAA3B,CAAmC,KACrC,IAAY,QAAZ,EAAIH,CAAJ,CAGL,MAFIL,EAEG,CAFI/I,OAAAC,IAAAwH,YAAA,CAAwBlC,CAAxB,CAA+B,MAA/B;AACHvF,OAAAC,IAAAuC,YADG,CAEJ,EAD6B,SAC7B,CAAA,eAAA,CAAkBuG,CAAlB,CAAyB,IAAzB,CAAgCvB,CAAhC,CAAqC,OAArC,CAA+C+B,CAA/C,CAAuD,MAEhE,MACF,MAAK,UAAL,CACMR,CAAJ,CAAW/I,OAAAC,IAAAwH,YAAA,CAAwBlC,CAAxB,CAA+B,MAA/B,CACHvF,OAAAC,IAAAuC,YADG,CAAX,EACoC,SAChCgF,EAAJ,CAASxH,OAAAC,IAAA4G,YAAA,CAAwBtB,CAAxB,CAA+B,IAA/B,CAAqC,CAArC,CACT,IAAY,KAAZ,EAAI6D,CAAJ,CAOE,MANIlB,EAMG,CANYlI,OAAAC,IAAAgI,iBAAA,CACf,oBADe,CAEf,CAAC,WAAD,CAAejI,OAAAC,IAAAkI,2BAAf,CACI,yBADJ,CAEC,uCAFD,CAGC,GAHD,CAFe,CAMZ,CAAAD,CAAA,CAAe,GAAf,CAAqBa,CAArB,CAA4B,IAA5B,CAAmCvB,CAAnC,CAAwC,IAAxC,CAA+C+B,CAA/C,CAAuD,MACzD,IAAY,QAAZ,EAAIH,CAAJ,CAOL,MANIlB,EAMG,CANYlI,OAAAC,IAAAgI,iBAAA,CACf,uBADe;AAEf,CAAC,WAAD,CAAejI,OAAAC,IAAAkI,2BAAf,CACI,yBADJ,CAEC,8DAFD,CAGC,GAHD,CAFe,CAMZ,CAAAD,CAAA,CAAe,GAAf,CAAqBa,CAArB,CAA4B,IAA5B,CAAmCvB,CAAnC,CAAwC,IAAxC,CAA+C+B,CAA/C,CAAuD,MAEhE,MACF,MAAK,QAAL,CACMR,CAAJ,CAAW/I,OAAAC,IAAAwH,YAAA,CAAwBlC,CAAxB,CAA+B,MAA/B,CACHvF,OAAAC,IAAA2B,gBADG,CAAX,EACwC,SAxEtCmH,EAAAS,MAAA,CAAW,SAAX,CAAJ,CACE,CADF,CACS,EADT,EAGIC,CAIJ,CAJczJ,OAAAC,IAAAiD,YAAAwG,gBAAA,CACV,UADU,CACE1J,OAAAqE,uBADF,CAId,CAFII,CAEJ,CAFWgF,CAEX,CAFqB,MAErB,CAF8BV,CAE9B,CAFqC,KAErC,CADAA,CACA,CADOU,CACP,CAAA,CAAA,CAAOhF,CAPP,CA0EMkF,EAAAA,CAAO3J,OAAAC,IAAAiD,YAAAwG,gBAAA,CACP,OADO,CACE1J,OAAAqE,uBADF,CAEXI,EAAA,EAAQkF,CAAR,CAAe,mBAAf;AAAqCZ,CAArC,CAA4C,SAC5C,IAAY,KAAZ,EAAIK,CAAJ,CAEE,MADA3E,EACA,EADQsE,CACR,CADe,GACf,CADqBY,CACrB,CAD4B,MAC5B,CADqCJ,CACrC,CAD6C,KAC7C,CACK,IAAY,QAAZ,EAAIH,CAAJ,CAGL,MAFA3E,EAEA,EAFQ,eAER,CAF0BsE,CAE1B,CAFiC,IAEjC,CAFwCY,CAExC,CAF+C,OAE/C,CAFyDJ,CAEzD,CADI,MACJ,CA1EN,CA8EA,KAAMF,MAAA,CAAM,yCAAN,CAAN,CAjG8C,CAoGhDrJ;OAAAC,IAAA,iBAAA,CAAkC,QAAQ,CAACsF,CAAD,CAAQ,CAEhD,IAAIwD,EAAO/I,OAAAC,IAAAwH,YAAA,CAAwBlC,CAAxB,CAA+B,MAA/B,CACPvF,OAAAC,IAAAuC,YADO,CAAPuG,EAC4B,SADhC,CAEIa,EAASrE,CAAAyC,cAAA,CAAoB,QAApB,CAFb,CAGI6B,EAAStE,CAAAyC,cAAA,CAAoB,QAApB,CACb,IAAc,OAAd,EAAI4B,CAAJ,EAAmC,MAAnC,EAAyBC,CAAzB,CAEO,GAAId,CAAAS,MAAA,CAAW,SAAX,CAAJ,EACQ,UADR,EACFI,CADE,EACgC,YADhC,EACsBC,CADtB,CAC+C,CAGpD,OAAQD,CAAR,EACE,KAAK,YAAL,CACE,IAAIE,EAAM9J,OAAAC,IAAA4G,YAAA,CAAwBtB,CAAxB,CAA+B,KAA/B,CACV,MACF,MAAK,UAAL,CACMuE,CAAJ,CAAU9J,OAAAC,IAAA4G,YAAA,CAAwBtB,CAAxB,CAA+B,KAA/B,CAAsC,CAAtC,CAAyC,CAAA,CAAzC,CACNvF,OAAAC,IAAAsB,kBADM,CAEVuI,EAAA,CAAM,QAAN,CAAiBf,CAAjB,CAAwB,MAAxB,CAAiCe,CACjC,MACF,MAAK,OAAL,CACMA,CAAJ,CAAU,GACV,MACF,SACE,KAAMT,MAAA,CAAM,sCAAN,CAAN;AAbJ,CAeA,OAAQQ,CAAR,EACE,KAAK,YAAL,CACME,CAAAA,CAAM/J,OAAAC,IAAA4G,YAAA,CAAwBtB,CAAxB,CAA+B,KAA/B,CAAsC,CAAtC,CAAyC,CAAA,CAAzC,CACNvF,OAAAC,IAAAsB,kBADM,CAENsC,EAAAA,CAASkG,CAATlG,CAAe,KAEjBA,EAAA,CADE7D,OAAA0H,SAAA,CAAiBsC,MAAA,CAAOF,CAAP,CAAjB,CAAJ,EAAqCE,MAAA,CAAOF,CAAP,CAAAN,MAAA,CAAkB,UAAlB,CAArC,CACE3F,CADF,CACYiG,CADZ,CAGEjG,CAHF,EAGY,GAHZ,CAGkBiG,CAHlB,CAGwB,GAHxB,CAKAjG,EAAA,EAAU,MACV,MACF,MAAK,UAAL,CACMkG,CAAJ,CAAU/J,OAAAC,IAAA4G,YAAA,CAAwBtB,CAAxB,CAA+B,KAA/B,CAAsC,CAAtC,CAAyC,CAAA,CAAzC,CACNvF,OAAAC,IAAAsB,kBADM,CAENsC,EAAJ,CAAa,QAAb,CAAwBkF,CAAxB,CAA+B,MAA/B,CAAwCgB,CAAxC,CAA8C,KAE5ClG,EAAA,CADE7D,OAAA0H,SAAA,CAAiBsC,MAAA,CAAOF,CAAP,CAAjB,CAAJ,EAAqCE,MAAA,CAAOF,CAAP,CAAAN,MAAA,CAAkB,UAAlB,CAArC,CACE3F,CADF,CACYiG,CADZ,CAGEjG,CAHF,EAGY,GAHZ,CAGkBiG,CAHlB,CAGwB,GAHxB,CAKA,MACF,MAAK,MAAL,CACMjG,CAAJ,CAAa,QAAb,CAAwBkF,CAAxB,CAA+B,MAE7BlF,EAAA,CADE7D,OAAA0H,SAAA,CAAiBsC,MAAA,CAAOF,CAAP,CAAjB,CAAJ,EAAqCE,MAAA,CAAOF,CAAP,CAAAN,MAAA,CAAkB,UAAlB,CAArC,CACE3F,CADF,CACYiG,CADZ,CAGEjG,CAHF,EAGY,GAHZ;AAGkBiG,CAHlB,CAGwB,GAHxB,CAKA,MACF,SACE,KAAMT,MAAA,CAAM,sCAAN,CAAN,CA/BJ,CAiCA5E,CAAA,CAAO,cAAP,CAAwBsE,CAAxB,CAA+B,IAA/B,CAAsCe,CAAtC,CAA4C,IAA5C,CAAmDjG,CAAnD,CAA4D,GAnDR,CAD/C,IAsDDiG,EAyBJ,CAzBU9J,OAAAC,IAAA4G,YAAA,CAAwBtB,CAAxB,CAA+B,KAA/B,CAyBV,CAxBIwE,CAwBJ,CAxBU/J,OAAAC,IAAA4G,YAAA,CAAwBtB,CAAxB,CAA+B,KAA/B,CAwBV,CAAId,CAAJ,CAvBmBzE,OAAAC,IAAAgI,iBAAAC,CACf,mBADeA,CAEf,CAAC,WAAD,CAAelI,OAAAC,IAAAkI,2BAAf,CACI,yCADJ,CAEC,gCAFD,CAGC,qCAHD,CAIC,oCAJD,CAKC,eALD,CAMC,yCAND,CAOC,mEAPD;AAQC,KARD,CASC,gBATD,CAUC,kCAVD,CAWC,gCAXD,CAYC,uCAZD,CAaC,2CAbD,CAcC,mCAdD,CAeC,oCAfD,CAgBC,YAhBD,CAiBC,mEAjBD,CAkBC,KAlBD,CAmBC,6CAnBD,CAoBC,GApBD,CAFeD,CAuBnB,CAA0B,GAA1B,CAAgCa,CAAhC,CAAuC,KAAvC,CACIa,CADJ,CACa,KADb,CACsBE,CADtB,CAC4B,KAD5B,CACqCD,CADrC,CAC8C,KAD9C,CACuDE,CADvD,CAC6D,GAE/D,OAAO,CAACtF,CAAD,CAAOzE,OAAAC,IAAAO,oBAAP,CA1FyC,CA6FlDR;OAAAC,IAAA,WAAA,CAA4B,QAAQ,CAACsF,CAAD,CAAQ,CAE1C,IAAI0E,EAAWjK,OAAAC,IAAAwH,YAAA,CAAwBlC,CAAxB,CAA+B,MAA/B,CACXvF,OAAAC,IAAAuC,YADW,CAAXyH,EAC4B,SADhC,CAEIC,EAAiD,GAArC,GAAA3E,CAAAyC,cAAA,CAAoB,WAApB,CAAA,CAA2C,CAA3C,CAA+C,EAC3D7B,EAAAA,CAAOZ,CAAAyC,cAAA,CAAoB,MAApB,CAoBX,OAAO,CAnBYhI,OAAAC,IAAAgI,iBAAAC,CACf,YADeA,CAEf,CAAC,WAAD,CAAelI,OAAAC,IAAAkI,2BAAf,CACI,8BADJ,CAEC,0BAFD,CAGC,mCAHD,CAIC,yBAJD,CAKC,mCALD,CAMC,MAND,CAOC,oCAPD,CAQC,mBARD,CASC,4BATD;AAUC,2BAVD,CAWC,qCAXD,CAYC,KAZD,CAaC,kBAbD,CAcC,GAdD,CAFeD,CAmBZ,CADH,GACG,CADG+B,CACH,CADc,KACd,CADsB9D,CACtB,CAD6B,KAC7B,CADqC+D,CACrC,CADiD,GACjD,CAAWlK,OAAAC,IAAAO,oBAAX,CAzBmC,CA4B5CR,QAAAC,IAAA,YAAA,CAA6B,QAAQ,CAACsF,CAAD,CAAQ,CAE3C,IAAI4E,EAAcnK,OAAAC,IAAAwH,YAAA,CAAwBlC,CAAxB,CAA+B,OAA/B,CACdvF,OAAAC,IAAAuC,YADc,CAAlB,CAEI4H,EAAcpK,OAAAC,IAAAwH,YAAA,CAAwBlC,CAAxB,CAA+B,OAA/B,CACdvF,OAAAC,IAAAuC,YADc,CAAd4H,EAC4B,IAC5BhB,EAAAA,CAAO7D,CAAAyC,cAAA,CAAoB,MAApB,CACX,IAAY,OAAZ,EAAIoB,CAAJ,CACOe,CAGDjC,GAFFiC,CAEEjC,CAFY,IAEZA,EAAAA,CAAAA,CAAe,SAJrB,KAKO,IAAY,MAAZ,EAAIkB,CAAJ,CACAe,CAGL,GAFEA,CAEF,CAFgB,SAEhB,EAAIjC,CAAJ,CAAmB,SAJd,KAML,MAAMmB,MAAA,CAAM,gBAAN,CAAyBD,CAAzB,CAAN,CAGF,MAAO,CADIlB,CACJ,CADmB,GACnB,CADyBkC,CACzB,CADuC,IACvC,CAD8CD,CAC9C,CAD4D,GAC5D,CAAOnK,OAAAC,IAAAO,oBAAP,CArBoC,CAwB7CR;OAAAC,IAAA,cAAA,CAA+B,QAAQ,CAACsF,CAAD,CAAQ,CAK7C,MAAO,CADI,gBACJ,EAHIvF,OAAAC,IAAAwH,YAAA,CAAwBlC,CAAxB,CAA+B,MAA/B,CACPvF,OAAAC,IAAAuC,YADO,CAGJ,EAFyB,IAEzB,EAD8B,GAC9B,CAAOxC,OAAAC,IAAAO,oBAAP,CALsC,C,CC/drB,OAAA,IAAA6J,MAAA,CAAA,EAK1BrK;OAAAC,IAAA,YAAA,CAA6B,QAAQ,CAACsF,CAAD,CAAQ,CAE3C,IAAI+E,EAAI,CAAR,CACI7F,EAAO,EACPzE,QAAAC,IAAAsK,iBAAJ,GAEE9F,CAFF,EAEUzE,OAAAC,IAAAuK,SAAA,CAAqBxK,OAAAC,IAAAsK,iBAArB,CAAmDhF,CAAnD,CAFV,CAIA,GAAG,CACD,IAAAkF,EAAgBzK,OAAAC,IAAAwH,YAAA,CAAwBlC,CAAxB,CAA+B,IAA/B,CAAsC+E,CAAtC,CACZtK,OAAAC,IAAAwC,WADY,CAAhBgI,EAC+B,OAC/B,KAAAC,EAAa1K,OAAAC,IAAA0K,gBAAA,CAA4BpF,CAA5B,CAAmC,IAAnC,CAA0C+E,CAA1C,CACTtK,QAAAC,IAAA2K,iBAAJ,GACEF,CADF,CACe1K,OAAAC,IAAAgG,YAAA,CACTjG,OAAAC,IAAAuK,SAAA,CAAqBxK,OAAAC,IAAA2K,iBAArB,CAAmDrF,CAAnD,CADS,CAETvF,OAAAC,IAAA4K,OAFS,CADf,CAG4BH,CAH5B,CAKAjG,EAAA,GAAa,CAAJ,CAAA6F,CAAA,CAAQ,QAAR,CAAmB,EAA5B,EACI,MADJ,CACaG,CADb,CAC6B,OAD7B,CACuCC,CADvC,CACoD,GACpD,GAAEJ,CAXD,CAAH,MAYS/E,CAAAuF,SAAA,CAAe,IAAf,CAAsBR,CAAtB,CAZT,CAcA,IAAI/E,CAAAuF,SAAA,CAAe,MAAf,CAAJ,EAA8B9K,OAAAC,IAAA2K,iBAA9B,CACEF,CAMA;AANa1K,OAAAC,IAAA0K,gBAAA,CAA4BpF,CAA5B,CAAmC,MAAnC,CAMb,CALIvF,OAAAC,IAAA2K,iBAKJ,GAJEF,CAIF,CAJe1K,OAAAC,IAAAgG,YAAA,CACTjG,OAAAC,IAAAuK,SAAA,CAAqBxK,OAAAC,IAAA2K,iBAArB,CAAmDrF,CAAnD,CADS,CAETvF,OAAAC,IAAA4K,OAFS,CAIf,CAF4BH,CAE5B,EAAAjG,CAAA,EAAQ,WAAR,CAAsBiG,CAAtB,CAAmC,GAErC,OAAOjG,EAAP,CAAc,IA/B6B,CAkC7CzE,QAAAC,IAAA,gBAAA,CAAiCD,OAAAC,IAAA,YAEjCD;OAAAC,IAAA,cAAA,CAA+B,QAAQ,CAACsF,CAAD,CAAQ,CAU7C,IAAIwF,EARYC,CACd,GAAM,IADQA,CAEd,IAAO,IAFOA,CAGd,GAAM,GAHQA,CAId,IAAO,IAJOA,CAKd,GAAM,GALQA,CAMd,IAAO,IANOA,CAQD,CAAUzF,CAAAyC,cAAA,CAAoB,IAApB,CAAV,CAAf,CACIZ,EAAqB,IAAb,EAAC2D,CAAD,EAAiC,IAAjC,EAAqBA,CAArB,CACR/K,OAAAC,IAAA0B,eADQ,CACqB3B,OAAAC,IAAAyB,iBAFjC,CAGIsH,EAAYhJ,OAAAC,IAAAwH,YAAA,CAAwBlC,CAAxB,CAA+B,GAA/B,CAAoC6B,CAApC,CAAZ4B,EAA0D,GAC1DC,EAAAA,CAAYjJ,OAAAC,IAAAwH,YAAA,CAAwBlC,CAAxB,CAA+B,GAA/B,CAAoC6B,CAApC,CAAZ6B,EAA0D,GAE9D,OAAO,CADID,CACJ,CADgB,GAChB,CADsB+B,CACtB,CADiC,GACjC,CADuC9B,CACvC,CAAO7B,CAAP,CAhBsC,CAmB/CpH;OAAAC,IAAA,gBAAA,CAAiC,QAAQ,CAACsF,CAAD,CAAQ,CAE/C,IAAIwF,EAAyC,KAA9B,EAACxF,CAAAyC,cAAA,CAAoB,IAApB,CAAD,CAAuC,IAAvC,CAA8C,IAA7D,CACIZ,EAAqB,IAAb,EAAC2D,CAAD,CAAqB/K,OAAAC,IAAA+B,kBAArB,CACRhC,OAAAC,IAAAgC,iBAFJ,CAGI+G,EAAYhJ,OAAAC,IAAAwH,YAAA,CAAwBlC,CAAxB,CAA+B,GAA/B,CAAoC6B,CAApC,CACZ6B,EAAAA,CAAYjJ,OAAAC,IAAAwH,YAAA,CAAwBlC,CAAxB,CAA+B,GAA/B,CAAoC6B,CAApC,CAChB,IAAK4B,CAAL,EAAmBC,CAAnB,CAIO,CAEL,IAAIgC,EAA+B,IAAb,EAACF,CAAD,CAAqB,MAArB,CAA8B,OAC/C/B,EAAL,GACEA,CADF,CACciC,CADd,CAGKhC,EAAL,GACEA,CADF,CACcgC,CADd,CANK,CAJP,IAGEhC,EAAA,CADAD,CACA,CADY,OAad,OAAO,CADIA,CACJ,CADgB,GAChB,CADsB+B,CACtB,CADiC,GACjC,CADuC9B,CACvC,CAAO7B,CAAP,CAtBwC,CAyBjDpH,QAAAC,IAAA,aAAA,CAA8B,QAAQ,CAACsF,CAAD,CAAQ,CAE5C,IAAI6B,EAAQpH,OAAAC,IAAAe,kBAIZ,OAAO,CADI,GACJ,EAHShB,OAAAC,IAAAwH,YAAA,CAAwBlC,CAAxB,CAA+B,MAA/B,CAAuC6B,CAAvC,CAGT,EAFH,MAEG,EAAOA,CAAP,CANqC,CAS9CpH;OAAAC,IAAA,cAAA,CAA+B,QAAQ,CAACsF,CAAD,CAAQ,CAG7C,MAAO,CADoC,MAAhCd,EAACc,CAAAyC,cAAA,CAAoB,MAApB,CAADvD,CAA0C,MAA1CA,CAAmD,OACvD,CAAOzE,OAAAC,IAAAG,aAAP,CAHsC,CAM/CJ,QAAAC,IAAA,WAAA,CAA4B,QAAQ,CAACsF,CAAD,CAAQ,CAE1C,MAAO,CAAC,MAAD,CAASvF,OAAAC,IAAAG,aAAT,CAFmC,CAK5CJ,QAAAC,IAAA,cAAA,CAA+B,QAAQ,CAACsF,CAAD,CAAQ,CAE7C,IAAI2F,EAAWlL,OAAAC,IAAAwH,YAAA,CAAwBlC,CAAxB,CAA+B,IAA/B,CACXvF,OAAAC,IAAAkC,kBADW,CAAX+I,EACkC,OADtC,CAEIC,EAAanL,OAAAC,IAAAwH,YAAA,CAAwBlC,CAAxB,CAA+B,MAA/B,CACbvF,OAAAC,IAAAkC,kBADa,CAAbgJ,EACkC,MAClCC,EAAAA,CAAapL,OAAAC,IAAAwH,YAAA,CAAwBlC,CAAxB,CAA+B,MAA/B,CACbvF,OAAAC,IAAAkC,kBADa,CAAbiJ,EACkC,MAEtC,OAAO,CADIF,CACJ,CADe,KACf,CADuBC,CACvB,CADoC,KACpC,CAD4CC,CAC5C,CAAOpL,OAAAC,IAAAkC,kBAAP,CATsC,C,CCzGrB,OAAA,IAAAkJ,MAAA,CAAA,EAK1BrL;OAAAC,IAAA,oBAAA,CAAqC,QAAQ,CAACsF,CAAD,CAAQ,CAIjD,IAAI+F,EAFF/F,CAAAgG,SAAA,CAAe,OAAf,CAAJ,CAEgBvB,MAAA,CAAOrC,MAAA,CAAOpC,CAAAyC,cAAA,CAAoB,OAApB,CAAP,CAAP,CAFhB,CAKgBhI,OAAAC,IAAAwH,YAAA,CAAwBlC,CAAxB,CAA+B,OAA/B,CACVvF,OAAAC,IAAAmC,iBADU,CALhB,EAMuC,GAJrC,CAMEoJ,EAASxL,OAAAC,IAAA0K,gBAAA,CAA4BpF,CAA5B,CAAmC,IAAnC,CACbiG,EAAA,CAASxL,OAAAC,IAAAwL,YAAA,CAAwBD,CAAxB,CAAgCjG,CAAhC,CACLd,EAAAA,CAAO,EACX,KAAIiH,EAAU1L,OAAAC,IAAAiD,YAAAwG,gBAAA,CACV,OADU,CACD1J,OAAAqE,uBADC,CAAd,CAEIsH,EAASL,CACRA,EAAA9B,MAAA,CAAc,OAAd,CAAL,EAAgCxJ,OAAA0H,SAAA,CAAiB4D,CAAjB,CAAhC,GACEK,CAEA,CAFS3L,OAAAC,IAAAiD,YAAAwG,gBAAA,CACL,YADK,CACS1J,OAAAqE,uBADT,CAET,CAAAI,CAAA,EAAQkH,CAAR,CAAiB,KAAjB,CAAyBL,CAAzB,CAAmC,KAHrC,CASA,OAJA7G,EAIA,EAJQ,OAIR;AAJkBiH,CAIlB,CAJ4B,QAI5B,CAHIA,CAGJ,CAHc,KAGd,CAHsBC,CAGtB,CAH+B,IAG/B,CAFID,CAEJ,CAFc,SAEd,CADIF,CACJ,CADa,KACb,CAzBmD,CA4BrDxL,QAAAC,IAAA,gBAAA,CAAiCD,OAAAC,IAAA,oBAEjCD,QAAAC,IAAA,oBAAA,CAAqC,QAAQ,CAACsF,CAAD,CAAQ,CAEnD,IAAIqG,EAAuC,OAAvCA,EAAQrG,CAAAyC,cAAA,CAAoB,MAApB,CAAZ,CACIgB,EAAYhJ,OAAAC,IAAAwH,YAAA,CAAwBlC,CAAxB,CAA+B,MAA/B,CACZqG,CAAA,CAAQ5L,OAAAC,IAAAe,kBAAR,CACAhB,OAAAC,IAAAwC,WAFY,CAAZuG,EAE2B,OAH/B,CAIIwC,EAASxL,OAAAC,IAAA0K,gBAAA,CAA4BpF,CAA5B,CAAmC,IAAnC,CACbiG,EAAA,CAASxL,OAAAC,IAAAwL,YAAA,CAAwBD,CAAxB,CAAgCjG,CAAhC,CACLqG,EAAJ,GACE5C,CADF,CACc,GADd,CACoBA,CADpB,CAGA,OAAO,SAAP,CAAmBA,CAAnB,CAA+B,OAA/B,CAAyCwC,CAAzC,CAAkD,KAXC,CAcrDxL;OAAAC,IAAA,aAAA,CAA8B,QAAQ,CAACsF,CAAD,CAAQ,CAE5C,IAAIsG,EAAY7L,OAAAC,IAAAiD,YAAAa,QAAA,CACZwB,CAAAyC,cAAA,CAAoB,KAApB,CADY,CACgBhI,OAAAqE,uBADhB,CAAhB,CAEI2E,EAAYhJ,OAAAC,IAAAwH,YAAA,CAAwBlC,CAAxB,CAA+B,MAA/B,CACZvF,OAAAC,IAAAmC,iBADY,CAAZ4G,EACiC,GAHrC,CAIIC,EAAYjJ,OAAAC,IAAAwH,YAAA,CAAwBlC,CAAxB,CAA+B,IAA/B,CACZvF,OAAAC,IAAAmC,iBADY,CAAZ6G,EACiC,GALrC,CAMI6C,EAAY9L,OAAAC,IAAAwH,YAAA,CAAwBlC,CAAxB,CAA+B,IAA/B,CACZvF,OAAAC,IAAAmC,iBADY,CAAZ0J,EACiC,GAPrC,CAQIN,EAASxL,OAAAC,IAAA0K,gBAAA,CAA4BpF,CAA5B,CAAmC,IAAnC,CACbiG,EAAA,CAASxL,OAAAC,IAAAwL,YAAA,CAAwBD,CAAxB,CAAgCjG,CAAhC,CAET,IAAIvF,OAAA0H,SAAA,CAAiBsB,CAAjB,CAAJ,EAAmChJ,OAAA0H,SAAA,CAAiBuB,CAAjB,CAAnC,EACIjJ,OAAA0H,SAAA,CAAiBoE,CAAjB,CADJ,CACiC,CAE/B,IAAIC,EAAKpE,MAAA,CAAOqB,CAAP,CAAL+C,EAA0BpE,MAAA,CAAOsB,CAAP,CAC9BxE,EAAA,CAAO,OAAP;AAAiBoH,CAAjB,CAA6B,KAA7B,CAAqC7C,CAArC,CAAiD,IAAjD,CACI6C,CADJ,EACiBE,CAAA,CAAK,MAAL,CAAc,MAD/B,EACyC9C,CADzC,CACqD,IADrD,CAEI4C,CACAG,EAAAA,CAAOnE,IAAAoE,IAAA,CAAStE,MAAA,CAAOmE,CAAP,CAAT,CAMXrH,EAAA,EALY,CAAZA,EAAIuH,CAAJvH,CACEA,CADFA,EACUsH,CAAA,CAAK,IAAL,CAAY,IADtBtH,EAGEA,CAHFA,GAGWsH,CAAA,CAAK,MAAL,CAAc,MAHzBtH,EAGmCuH,CAHnCvH,CAKA,GAAQ,OAAR,CAAkB+G,CAAlB,CAA2B,KAA3B,CAZ+B,CADjC,IAeE/G,EA2BA,CA3BO,EA2BP,CAzBIyH,CAyBJ,CAzBelD,CAyBf,CAxBKA,CAAAQ,MAAA,CAAgB,OAAhB,CAwBL,EAxBkCxJ,OAAA0H,SAAA,CAAiBsB,CAAjB,CAwBlC,GAvBEkD,CAEA,CAFWlM,OAAAC,IAAAiD,YAAAwG,gBAAA,CACPmC,CADO,CACK,QADL,CACe7L,OAAAqE,uBADf,CAEX,CAAAI,CAAA,EAAQyH,CAAR,CAAmB,KAAnB,CAA2BlD,CAA3B,CAAuC,KAqBzC,EAnBI2C,CAmBJ,CAnBa1C,CAmBb,CAlBKA,CAAAO,MAAA,CAAgB,OAAhB,CAkBL,EAlBkCxJ,OAAA0H,SAAA,CAAiBuB,CAAjB,CAkBlC,GAjBE0C,CAEA,CAFS3L,OAAAC,IAAAiD,YAAAwG,gBAAA,CACLmC,CADK,CACO,MADP,CACe7L,OAAAqE,uBADf,CAET,CAAAI,CAAA,EAAQkH,CAAR,CAAiB,KAAjB,CAAyB1C,CAAzB,CAAqC,KAevC,EAXIkD,CAWJ,CAXanM,OAAAC,IAAAiD,YAAAwG,gBAAA,CACTmC,CADS,CACG,MADH,CACW7L,OAAAqE,uBADX,CAWb;AATAI,CASA,EATQ0H,CASR,CATiB,KASjB,CAPE1H,CAOF,CARIzE,OAAA0H,SAAA,CAAiBoE,CAAjB,CAAJ,CACErH,CADF,EACUoD,IAAAoE,IAAA,CAASH,CAAT,CADV,CACgC,KADhC,EAGErH,CAHF,EAGU,MAHV,CAGmBqH,CAHnB,CAG+B,MAH/B,CAQA,CAFArH,CAEA,CAHAA,CAGA,EAHQ,MAGR,CAHiByH,CAGjB,CAH4B,KAG5B,CAHoCP,CAGpC,CAH6C,OAG7C,GAFQ3L,OAAAC,IAAA4K,OAER,CAF6BsB,CAE7B,CAFsC,MAEtC,CAF+CA,CAE/C,CAFwD,KAExD,EADA1H,CACA,EADQ,KACR,CAAAA,CAAA,EAAQ,OAAR,CAAkBoH,CAAlB,CAA8B,KAA9B,CAAsCK,CAAtC,CAAiD,IAAjD,CACIC,CADJ,CACa,UADb,CAEIN,CAFJ,CAEgB,MAFhB,CAEyBF,CAFzB,CAEkC,KAFlC,CAGIE,CAHJ,CAGgB,MAHhB,CAGyBF,CAHzB,CAGkC,IAHlC,CAIIE,CAJJ,CAIgB,MAJhB,CAIyBM,CAJzB,CAIkC,OAJlC,CAKIX,CALJ,CAKa,KAEf,OAAO/G,EA9DqC,CAiE9CzE;OAAAC,IAAA,iBAAA,CAAkC,QAAQ,CAACsF,CAAD,CAAQ,CAEhD,IAAIsG,EAAY7L,OAAAC,IAAAiD,YAAAa,QAAA,CACZwB,CAAAyC,cAAA,CAAoB,KAApB,CADY,CACgBhI,OAAAqE,uBADhB,CAAhB,CAEI2E,EAAYhJ,OAAAC,IAAAwH,YAAA,CAAwBlC,CAAxB,CAA+B,MAA/B,CACZvF,OAAAC,IAAAmC,iBADY,CAAZ4G,EACiC,IAHrC,CAIIwC,EAASxL,OAAAC,IAAA0K,gBAAA,CAA4BpF,CAA5B,CAAmC,IAAnC,CACbiG,EAAA,CAASxL,OAAAC,IAAAwL,YAAA,CAAwBD,CAAxB,CAAgCjG,CAAhC,CAIT,OAFQ,WAER,CAFsByD,CAEtB,CAFkC,MAElC,CAF2C6C,CAE3C,CADI,OACJ,CADcL,CACd,CADuB,KAVyB,CAclDxL;OAAAC,IAAA,yBAAA,CAA0C,QAAQ,CAACsF,CAAD,CAAQ,CAExD,IAAI6G,EAAO,EACPpM,QAAAC,IAAAsK,iBAAJ,GAEE6B,CAFF,EAEUpM,OAAAC,IAAAuK,SAAA,CAAqBxK,OAAAC,IAAAsK,iBAArB,CAAmDhF,CAAnD,CAFV,CAIIvF,QAAAC,IAAA2K,iBAAJ,GAGEwB,CAHF,EAGUpM,OAAAC,IAAAuK,SAAA,CAAqBxK,OAAAC,IAAA2K,iBAArB,CAAmDrF,CAAnD,CAHV,CAKA,IAAIvF,OAAAC,IAAAsK,iBAAJ,CAAkC,CAChC,IAAI8B,EAAOrM,OAAAsM,UAAAC,MAAAC,iCAAAC,gBAAA,CAC2ClH,CAD3C,CAEP8G,EAAJ,EAAY,CAACA,CAAAK,qBAAb,GAIEN,CAJF,EAIUpM,OAAAC,IAAAuK,SAAA,CAAqBxK,OAAAC,IAAAsK,iBAArB,CAAmD8B,CAAnD,CAJV,CAHgC,CAUlC,OAAQ9G,CAAAyC,cAAA,CAAoB,MAApB,CAAR,EACE,KAAK,OAAL,CACE,MAAOoE,EAAP,CAAc,UAChB,MAAK,UAAL,CACE,MAAOA,EAAP;AAAc,aAJlB,CAMA,KAAM/C,MAAA,CAAM,yBAAN,CAAN,CA5BwD,C,CChIhC,OAAA,IAAAsD,KAAA,CAAA,EAK1B3M,QAAAC,IAAA,YAAA,CAA6B,QAAQ,CAACsF,CAAD,CAAQ,CAEvCd,CAAAA,CAAOkD,MAAA,CAAOpC,CAAAyC,cAAA,CAAoB,KAApB,CAAP,CACX,KAAIZ,EAAgB,CAAR,EAAA3C,CAAA,CAAYzE,OAAAC,IAAAG,aAAZ,CACAJ,OAAAC,IAAAiB,qBACA0L,SAAZ,EAAInI,CAAJ,CACEA,CADF,CACS,KADT,CAEmB,CAACmI,QAFpB,EAEWnI,CAFX,GAGEA,CAHF,CAGS,MAHT,CAKA,OAAO,CAACA,CAAD,CAAO2C,CAAP,CAVoC,CAa7CpH;OAAAC,IAAA,gBAAA,CAAiC,QAAQ,CAACsF,CAAD,CAAQ,CAS/C,IAAIsH,EAPY7B,CACd,IAAO,CAAC,KAAD,CAAQhL,OAAAC,IAAAqB,eAAR,CADO0J,CAEd,MAAS,CAAC,KAAD,CAAQhL,OAAAC,IAAAsB,kBAAR,CAFKyJ,CAGd,SAAY,CAAC,KAAD,CAAQhL,OAAAC,IAAAkB,qBAAR,CAHE6J,CAId,OAAU,CAAC,KAAD,CAAQhL,OAAAC,IAAAmB,eAAR,CAJI4J,CAKd,MAAS,CAAC,MAAD,CAAShL,OAAAC,IAAAQ,YAAT,CALKuK,CAOJ,CAAUzF,CAAAyC,cAAA,CAAoB,IAApB,CAAV,CAAZ,CACI+C,EAAW8B,CAAA,CAAM,CAAN,CACXzF,EAAAA,CAAQyF,CAAA,CAAM,CAAN,CACZ,KAAI7D,EAAYhJ,OAAAC,IAAAwH,YAAA,CAAwBlC,CAAxB,CAA+B,GAA/B,CAAoC6B,CAApC,CAAZ4B,EAA0D,GAC1DC,EAAAA,CAAYjJ,OAAAC,IAAAwH,YAAA,CAAwBlC,CAAxB,CAA+B,GAA/B,CAAoC6B,CAApC,CAAZ6B,EAA0D,GAE9D,OAAO,CADID,CACJ,CADgB+B,CAChB,CAD2B9B,CAC3B,CAAO7B,CAAP,CAfwC,CAkBjDpH;OAAAC,IAAA,YAAA,CAA6B,QAAQ,CAACsF,CAAD,CAAQ,CAE3C,IAAIwF,EAAWxF,CAAAyC,cAAA,CAAoB,IAApB,CAGf,IAAgB,KAAhB,EAAI+C,CAAJ,CASE,MAPA+B,EAOO,CAPD9M,OAAAC,IAAAwH,YAAA,CAAwBlC,CAAxB,CAA+B,KAA/B,CACFvF,OAAAC,IAAAiB,qBADE,CAOC,EANkC,GAMlC,CALO,GAKP,EALH4L,CAAA,CAAI,CAAJ,CAKG,GAHLA,CAGK,CAHC,GAGD,CAHOA,CAGP,EAAA,CADA,GACA,CADMA,CACN,CAAO9M,OAAAC,IAAAiB,qBAAP,CAGP4L,EAAA,CADc,KAAhB,EAAI/B,CAAJ,EAAqC,KAArC,EAAyBA,CAAzB,EAA0D,KAA1D,EAA8CA,CAA9C,CACQ/K,OAAAC,IAAAwH,YAAA,CAAwBlC,CAAxB,CAA+B,KAA/B,CACFvF,OAAAC,IAAAmB,eADE,CADR,EAEqC,GAFrC,CAIQpB,OAAAC,IAAAwH,YAAA,CAAwBlC,CAAxB,CAA+B,KAA/B,CACFvF,OAAAC,IAAAwC,WADE,CAJR,EAKiC,GAIjC,QAAQsI,CAAR,EACE,KAAK,KAAL,CACE,IAAAtG,EAAO,MAAPA,CAAgBqI,CAAhBrI,CAAsB,GACtB,MACF,MAAK,MAAL,CACEA,CAAA,CAAO,OAAP,CAAiBqI,CAAjB,CAAuB,GACvB,MACF,MAAK,IAAL,CACErI,CAAA,CAAO,MAAP,CAAgBqI,CAAhB,CAAsB,GACtB,MACF,MAAK,KAAL,CACErI,CAAA,CAAO,MAAP;AAAgBqI,CAAhB,CAAsB,GACtB,MACF,MAAK,OAAL,CACErI,CAAA,CAAO,SAAP,CAAmBqI,CAAnB,CAAyB,GACzB,MACF,MAAK,OAAL,CACErI,CAAA,CAAO,QAAP,CAAkBqI,CAAlB,CAAwB,GACxB,MACF,MAAK,SAAL,CACErI,CAAA,CAAO,OAAP,CAAiBqI,CAAjB,CAAuB,GACvB,MACF,MAAK,WAAL,CACErI,CAAA,CAAO,QAAP,CAAkBqI,CAAlB,CAAwB,GACxB,MACF,MAAK,KAAL,CACErI,CAAA,CAAO,MAAP,CAAgBqI,CAAhB,CAAsB,gBACtB,MACF,MAAK,KAAL,CACErI,CAAA,CAAO,MAAP,CAAgBqI,CAAhB,CAAsB,gBACtB,MACF,MAAK,KAAL,CACErI,CAAA,CAAO,MAAP,CAAgBqI,CAAhB,CAAsB,gBAhC1B,CAmCA,GAAIrI,CAAJ,CACE,MAAO,CAACA,CAAD,CAAOzE,OAAAC,IAAAO,oBAAP,CAIT,QAAQuK,CAAR,EACE,KAAK,OAAL,CACEtG,CAAA,CAAO,MAAP,CAAgBqI,CAAhB,CAAsB,aACtB,MACF,MAAK,MAAL,CACErI,CAAA,CAAO,OAAP,CAAiBqI,CAAjB,CAAuB,gBACvB,MACF,MAAK,MAAL,CACErI,CAAA,CAAO,OAAP,CAAiBqI,CAAjB,CAAuB,gBACvB,MACF,MAAK,MAAL,CACErI,CAAA,CAAO,OAAP;AAAiBqI,CAAjB,CAAuB,gBACvB,MACF,SACE,KAAMzD,MAAA,CAAM,yBAAN,CAAkC0B,CAAlC,CAAN,CAdJ,CAgBA,MAAO,CAACtG,CAAD,CAAOzE,OAAAC,IAAAmB,eAAP,CAjFoC,CAoF7CpB,QAAAC,IAAA,cAAA,CAA+B,QAAQ,CAACsF,CAAD,CAAQ,CAU7C,MARgBwH,CACd,GAAM,CAAC,MAAD,CAAS/M,OAAAC,IAAAG,aAAT,CADQ2M,CAEd,EAAK,CAAC,KAAD,CAAQ/M,OAAAC,IAAAG,aAAR,CAFS2M,CAGd,aAAgB,CAAC,mBAAD,CAAsB/M,OAAAC,IAAAmB,eAAtB,CAHF2L,CAId,MAAS,CAAC,SAAD,CAAY/M,OAAAC,IAAAG,aAAZ,CAJK2M,CAKd,QAAW,CAAC,WAAD,CAAc/M,OAAAC,IAAAG,aAAd,CALG2M,CAMd,SAAY,CAAC,KAAD,CAAQ/M,OAAAC,IAAAG,aAAR,CANE2M,CAQT,CAAUxH,CAAAyC,cAAA,CAAoB,UAApB,CAAV,CAVsC,CAa/ChI;OAAAC,IAAA,qBAAA,CAAsC,QAAQ,CAACsF,CAAD,CAAQ,CAGpD,IAAIyH,EAAkBhN,OAAAC,IAAAwH,YAAA,CAAwBlC,CAAxB,CAA+B,iBAA/B,CAClBvF,OAAAC,IAAAoB,cADkB,CAAlB2L,EAC8B,GADlC,CAEIC,EAAoB1H,CAAAyC,cAAA,CAAoB,UAApB,CAExB,IAAyB,OAAzB,EAAIiF,CAAJ,CAwBE,MAAO,CAtBYjN,OAAAC,IAAAgI,iBAAAC,CACf,cADeA,CAEf,CAAC,WAAD,CAAelI,OAAAC,IAAAkI,2BAAf,CAAwD,QAAxD,CACC,iEADD,CAEC,6BAFD,CAGC,kBAHD,CAIC,KAJD,CAKC,uDALD,CAMC,6CAND;AAOC,kFAPD,CASC,mBATD,CAUC,KAVD,CAWC,6DAXD,CAYC,+CAZD,CAaC,qDAbD,CAcC,qBAdD,CAeC,OAfD,CAgBC,KAhBD,CAiBC,gBAjBD,CAkBC,GAlBD,CAFeD,CAsBZ,CADe,GACf,CADqB8E,CACrB,CADuC,GACvC,CAAOhN,OAAAC,IAAAO,oBAAP,CAET,QAAQyM,CAAR,EACE,KAAK,MAAL,CACE,IAAAxI,EAAOuI,CAAPvI,CAAyB,WACzB,MACF,MAAK,KAAL,CACEA,CAAA,CAAOuI,CAAP,CAAyB,WACzB,MACF,MAAK,OAAL,CACEvI,CAAA,CAAO,SAAP,CAAmBuI,CAAnB,CAAqC,GACrC,MACF,MAAK,UAAL,CACEvI,CAAA;AAAOuI,CAAP,CAAyB,MACzB,MACF,MAAK,UAAL,CACEvI,CAAA,CAAOuI,CAAP,CAAyB,MACzB,MACF,MAAK,cAAL,CACME,CAEJ,CAFclN,OAAAC,IAAAwH,YAAA,CAAwBlC,CAAxB,CAA+B,SAA/B,CACVvF,OAAAC,IAAAoB,cADU,CAEd,EADkC,GAClC,CAAAoD,CAAA,CAAOuI,CAAP,CAAyB,KAAzB,CAAiCE,CAAjC,CAA2C,OAnB/C,CAsBA,MAAO,CAACzI,CAAD,CAAOzE,OAAAC,IAAA0B,eAAP,CAvD6C,CA0DtD3B,QAAAC,IAAA,YAAA,CAA6B,QAAQ,CAACsF,CAAD,CAAQ,CAE3C,IAAIyD,EAAYhJ,OAAAC,IAAAwH,YAAA,CAAwBlC,CAAxB,CAA+B,OAA/B,CACZvF,OAAAC,IAAAqB,eADY,CAAZ0H,EAC+B,GAGnC,OAFchJ,QAAAC,IAAAiD,YAAAa,QAAAoJ,CACV5H,CAAAyC,cAAA,CAAoB,KAApB,CADUmF,CACkBnN,OAAAqE,uBADlB8I,CAEd,CAAiB,MAAjB,CAA0BnE,CAA1B,CAAsC,KANK,CAU7ChJ,QAAAC,IAAA,WAAA,CAA4BD,OAAAC,IAAA,YAE5BD,QAAAC,IAAA,UAAA,CAA2BD,OAAAC,IAAA,YAE3BD;OAAAC,IAAA,aAAA,CAA8B,QAAQ,CAACsF,CAAD,CAAQ,CAE5C,IAAI6H,EAAO7H,CAAAyC,cAAA,CAAoB,IAApB,CAEX,QAAQoF,CAAR,EACE,KAAK,KAAL,CACErE,CAAA,CAAO/I,OAAAC,IAAAwH,YAAA,CAAwBlC,CAAxB,CAA+B,MAA/B,CACHvF,OAAAC,IAAAO,oBADG,CAAP,EACwC,SACxCiE,EAAA,CAAO,YAAP,CAAsBsE,CAAtB,CAA6B,GAC7B,MACF,MAAK,KAAL,CACEA,CAAA,CAAO/I,OAAAC,IAAAwH,YAAA,CAAwBlC,CAAxB,CAA+B,MAA/B,CACHvF,OAAAC,IAAAO,oBADG,CAAP,EACwC,SACxCiE,EAAA,CAAO,MAAP,CAAgBsE,CAAhB,CAAuB,GACvB,MACF,MAAK,KAAL,CACEA,CAAA,CAAO/I,OAAAC,IAAAwH,YAAA,CAAwBlC,CAAxB,CAA+B,MAA/B,CACHvF,OAAAC,IAAAO,oBADG,CAAP,EACwC,SACxCiE,EAAA,CAAO,MAAP,CAAgBsE,CAAhB,CAAuB,GACvB,MACF,MAAK,SAAL,CACMb,CAAAA,CAAelI,OAAAC,IAAAgI,iBAAA,CACf,WADe,CAEf,CAAC,WAAD,CAAejI,OAAAC,IAAAkI,2BAAf;AACI,aADJ,CAEC,+CAFD,CAGC,GAHD,CAFe,CAMnBY,EAAA,CAAO/I,OAAAC,IAAAwH,YAAA,CAAwBlC,CAAxB,CAA+B,MAA/B,CACHvF,OAAAC,IAAAwC,WADG,CAAP,EAC+B,SAC/BgC,EAAA,CAAOyD,CAAP,CAAsB,GAAtB,CAA4Ba,CAA5B,CAAmC,GACnC,MACF,MAAK,QAAL,CACMb,CAAJ,CAAmBlI,OAAAC,IAAAgI,iBAAA,CACf,aADe,CAEf,CAAC,WAAD,CAAejI,OAAAC,IAAAkI,2BAAf,CACI,UADJ,CAEC,4BAFD,CAGC,4DAHD,CAIC,0EAJD,CAMC,GAND,CAFe,CASnBY,EAAA,CAAO/I,OAAAC,IAAAwH,YAAA,CAAwBlC,CAAxB,CAA+B,MAA/B,CACHvF,OAAAC,IAAAwC,WADG,CAAP;AAC+B,IAC/BgC,EAAA,CAAOyD,CAAP,CAAsB,GAAtB,CAA4Ba,CAA5B,CAAmC,GACnC,MACF,MAAK,MAAL,CAIMb,CAAJ,CAAmBlI,OAAAC,IAAAgI,iBAAA,CACf,YADe,CAEf,CAAC,WAAD,CAAejI,OAAAC,IAAAkI,2BAAf,CACI,aADJ,CAEC,uCAFD,CAGC,0CAHD,CAIC,uDAJD,CAKC,yDALD,CAMC,kBAND,CAOC,GAPD,CAFe,CAUnBY,EAAA,CAAO/I,OAAAC,IAAAwH,YAAA,CAAwBlC,CAAxB,CAA+B,MAA/B,CACHvF,OAAAC,IAAAwC,WADG,CAAP,EAC+B,IAC/BgC,EAAA,CAAOyD,CAAP,CAAsB,GAAtB,CAA4Ba,CAA5B,CAAmC,GACnC,MACF,MAAK,SAAL,CACMb,CAAJ,CAAmBlI,OAAAC,IAAAgI,iBAAA,CACf,yBADe;AAEf,CAAC,WAAD,CAAejI,OAAAC,IAAAkI,2BAAf,CACI,cADJ,CAEC,yBAFD,CAGC,yBAHD,CAIC,kDAJD,CAKC,yEALD,CAOC,uDAPD,CAQC,GARD,CAFe,CAWnBY,EAAA,CAAO/I,OAAAC,IAAAwH,YAAA,CAAwBlC,CAAxB,CAA+B,MAA/B,CACCvF,OAAAC,IAAAwC,WADD,CAAP,EACmC,IACnCgC,EAAA,CAAOyD,CAAP,CAAsB,GAAtB,CAA4Ba,CAA5B,CAAmC,GACnC,MACF,MAAK,QAAL,CACMb,CAAJ,CAAmBlI,OAAAC,IAAAgI,iBAAA,CACf,kBADe,CAEf,CAAC,WAAD,CAAejI,OAAAC,IAAAkI,2BAAf;AACI,WADJ,CAEC,iCAFD,CAGC,qBAHD,CAIC,GAJD,CAFe,CAOnBY,EAAA,CAAO/I,OAAAC,IAAAwH,YAAA,CAAwBlC,CAAxB,CAA+B,MAA/B,CACHvF,OAAAC,IAAAwC,WADG,CAAP,EAC+B,IAC/BgC,EAAA,CAAOyD,CAAP,CAAsB,GAAtB,CAA4Ba,CAA5B,CAAmC,GACnC,MACF,SACE,KAAMM,MAAA,CAAM,oBAAN,CAA6B+D,CAA7B,CAAN,CAxFJ,CA0FA,MAAO,CAAC3I,CAAD,CAAOzE,OAAAC,IAAAO,oBAAP,CA9FqC,CAiG9CR,QAAAC,IAAA,YAAA,CAA6B,QAAQ,CAACsF,CAAD,CAAQ,CAE3C,IAAIyD,EAAYhJ,OAAAC,IAAAwH,YAAA,CAAwBlC,CAAxB,CAA+B,UAA/B,CACZvF,OAAAC,IAAAoB,cADY,CAAZ2H,EAC8B,GAC9BC,EAAAA,CAAYjJ,OAAAC,IAAAwH,YAAA,CAAwBlC,CAAxB,CAA+B,SAA/B,CACZvF,OAAAC,IAAAoB,cADY,CAAZ4H,EAC8B,GAElC,OAAO,CADID,CACJ,CADgB,KAChB,CADwBC,CACxB,CAAOjJ,OAAAC,IAAAoB,cAAP,CAPoC,CAU7CrB;OAAAC,IAAA,eAAA,CAAgC,QAAQ,CAACsF,CAAD,CAAQ,CAE9C,IAAIyD,EAAYhJ,OAAAC,IAAAwH,YAAA,CAAwBlC,CAAxB,CAA+B,OAA/B,CACZvF,OAAAC,IAAAuC,YADY,CAAZwG,EAC4B,GADhC,CAEIC,EAAYjJ,OAAAC,IAAAwH,YAAA,CAAwBlC,CAAxB,CAA+B,KAA/B,CACZvF,OAAAC,IAAAuC,YADY,CAAZyG,EAC4B,GAC5BoE,EAAAA,CAAYrN,OAAAC,IAAAwH,YAAA,CAAwBlC,CAAxB,CAA+B,MAA/B,CACZvF,OAAAC,IAAAuC,YADY,CAAZ6K,EAC4B,UAGhC,OAAO,CAFI,UAEJ,CAFiBrE,CAEjB,CAF6B,IAE7B,CAFoCC,CAEpC,CAFgD,KAEhD,CADHoE,CACG,CADS,GACT,CAAOrN,OAAAC,IAAAO,oBAAP,CAVuC,CAahDR;OAAAC,IAAA,gBAAA,CAAiC,QAAQ,CAACsF,CAAD,CAAQ,CAE/C,IAAIyD,EAAYhJ,OAAAC,IAAAwH,YAAA,CAAwBlC,CAAxB,CAA+B,MAA/B,CACZvF,OAAAC,IAAAuC,YADY,CAAZwG,EAC4B,GAC5BC,EAAAA,CAAYjJ,OAAAC,IAAAwH,YAAA,CAAwBlC,CAAxB,CAA+B,IAA/B,CACZvF,OAAAC,IAAAuC,YADY,CAAZyG,EAC4B,GAWhC,OAAO,CAVYjJ,OAAAC,IAAAgI,iBAAAC,CACf,iBADeA,CAEf,CAAC,WAAD,CAAelI,OAAAC,IAAAkI,2BAAf,CACI,YADJ,CAEC,kBAFD,CAGC,0BAHD,CAIC,KAJD,CAKC,wBALD,CAMC,GAND,CAFeD,CAUZ,CADmB,GACnB,CADyBc,CACzB,CADqC,IACrC,CAD4CC,CAC5C,CADwD,GACxD,CAAOjJ,OAAAC,IAAAO,oBAAP,CAhBwC,CAmBjDR;OAAAC,IAAA,kBAAA,CAAmC,QAAQ,CAACsF,CAAD,CAAQ,CAEjD,MAAO,CAAC,mCAAD,CAAsCvF,OAAAC,IAAAO,oBAAtC,CAF0C,CAKnDR,QAAAC,IAAA,WAAA,CAA4B,QAAQ,CAACsF,CAAD,CAAQ,CAE1C,IAAIyD,EAAYhJ,OAAAC,IAAAwH,YAAA,CAAwBlC,CAAxB,CAA+B,GAA/B,CACZvF,OAAAC,IAAAuC,YADY,CAAZwG,EAC4B,GAGhC,OAAO,CAAC,QAAD,EAFShJ,OAAAC,IAAAwH,YAAA,CAAwBlC,CAAxB,CAA+B,GAA/B,CACZvF,OAAAC,IAAAuC,YADY,CAET,EADyB,GACzB,EAAwB,IAAxB,CAA+BwG,CAA/B,CAA2C,gBAA3C,CACHhJ,OAAAC,IAAAmB,eADG,CANmC,C,CC7VlB,OAAA,IAAAkM,WAAA,CAAA,EAI1BtN;OAAAC,IAAA,qBAAA,CAAsC,QAAQ,CAACsF,CAAD,CAAQ,CAQpD,IAJA,IAAIgI,EAAU,EAAd,CACIJ,CADJ,CAEItK,EAAY0C,CAAA1C,UAFhB,CAGIoB,EAAYjE,OAAA0D,UAAAQ,iBAAA,CAAmCrB,CAAnC,CAAZoB,EAA6D,EAHjE,CAISL,EAAI,CAAb,CAA0BO,CAA1B,CAAqCF,CAAA,CAAUL,CAAV,CAArC,CAAmDA,CAAA,EAAnD,CACEuJ,CACA,CADUhJ,CAAAQ,KACV,CAAwC,EAAxC,EAAIY,CAAAiI,QAAA,EAAAC,QAAA,CAAwBN,CAAxB,CAAJ,EACEI,CAAAzJ,KAAA,CAAa9D,OAAAC,IAAAiD,YAAAa,QAAA,CAAgCoJ,CAAhC,CACTnN,OAAAqE,uBADS,CAAb,CAKAZ,EAAAA,CAAazD,OAAA0D,UAAAC,sBAAA,CAAwCd,CAAxC,CACjB,KAASe,CAAT,CAAa,CAAb,CAAgBA,CAAhB,CAAoBH,CAAAI,OAApB,CAAuCD,CAAA,EAAvC,CACE2J,CAAAzJ,KAAA,CAAa9D,OAAAC,IAAAiD,YAAAa,QAAA,CAAgCN,CAAA,CAAWG,CAAX,CAAhC,CACT5D,OAAAoD,MAAAY,wBADS,CAAb,CAGFuJ,EAAA,CAAUA,CAAA1J,OAAA,CACN7D,OAAAC,IAAA4K,OADM,CACe,SADf,CAC2B0C,CAAAjJ,KAAA,CAAa,IAAb,CAD3B,CACgD,KADhD,CACwD,EAE9DoJ,EAAAA,CAAW1N,OAAAC,IAAAiD,YAAAa,QAAA,CACXwB,CAAAyC,cAAA,CAAoB,MAApB,CADW,CACkBhI,OAAA2N,wBADlB,CAEXC;CAAAA,CAAQ,EACR5N,QAAAC,IAAAsK,iBAAJ,GACEqD,CADF,EACW5N,OAAAC,IAAAuK,SAAA,CAAqBxK,OAAAC,IAAAsK,iBAArB,CAAmDhF,CAAnD,CADX,CAGIvF,QAAAC,IAAA2K,iBAAJ,GACEgD,CADF,EACW5N,OAAAC,IAAAuK,SAAA,CAAqBxK,OAAAC,IAAA2K,iBAArB,CAAmDrF,CAAnD,CADX,CAGIqI,EAAJ,GACEA,CADF,CACU5N,OAAAC,IAAAgG,YAAA,CAAwB2H,CAAxB,CAA+B5N,OAAAC,IAAA4K,OAA/B,CADV,CAGA,KAAIgD,EAAW,EACX7N,QAAAC,IAAA6N,mBAAJ,GACED,CADF,CACa7N,OAAAC,IAAAgG,YAAA,CACPjG,OAAAC,IAAAuK,SAAA,CAAqBxK,OAAAC,IAAA6N,mBAArB,CAAqDvI,CAArD,CADO,CAEPvF,OAAAC,IAAA4K,OAFO,CADb,CAKA,KAAIW,EAASxL,OAAAC,IAAA0K,gBAAA,CAA4BpF,CAA5B,CAAmC,OAAnC,CAAb,CACIwI,EAAc/N,OAAAC,IAAAwH,YAAA,CAAwBlC,CAAxB,CAA+B,QAA/B,CACdvF,OAAAC,IAAAwC,WADc,CAAdsL,EAC2B,EAF/B,CAGIC,EAAQ,EACRxC,EAAJ,EAAcuC,CAAd,GAEEC,CAFF;AAEUJ,CAFV,CAIIG,EAAJ,GACEA,CADF,CACgB/N,OAAAC,IAAA4K,OADhB,CACqC,SADrC,CACiDkD,CADjD,CAC+D,KAD/D,CAGA,KAAIE,EAAO,EACPhK,EAAJ,CAAgBsB,CAAAiI,QAAA,EAChB,KAAS5J,CAAT,CAAa,CAAb,CAAgBA,CAAhB,CAAoBK,CAAAJ,OAApB,CAAsCD,CAAA,EAAtC,CACEqK,CAAA,CAAKrK,CAAL,CAAA,CAAU5D,OAAAC,IAAAiD,YAAAa,QAAA,CAAgCE,CAAA,CAAUL,CAAV,CAAhC,CACN5D,OAAAqE,uBADM,CAGRI,EAAAA,CAAO,WAAPA,CAAqBiJ,CAArBjJ,CAAgC,GAAhCA,CAAsCwJ,CAAA3J,KAAA,CAAU,IAAV,CAAtCG,CAAwD,OAAxDA,CACA8I,CADA9I,CACUmJ,CADVnJ,CACkBoJ,CADlBpJ,CAC6B+G,CAD7B/G,CACsCuJ,CADtCvJ,CAC8CsJ,CAD9CtJ,CAC4D,GAChEA,EAAA,CAAOzE,OAAAC,IAAAoF,OAAA,CAAmBE,CAAnB,CAA0Bd,CAA1B,CAEPzE,QAAAC,IAAA6C,aAAA,CAAyB,GAAzB,CAA+B4K,CAA/B,CAAA,CAA2CjJ,CAC3C,OAAO,KAhE6C,CAqEtDzE,QAAAC,IAAA,uBAAA,CACID,OAAAC,IAAA,qBAEJD;OAAAC,IAAA,sBAAA,CAAuC,QAAQ,CAACsF,CAAD,CAAQ,CAMrD,IAJA,IAAImI,EAAW1N,OAAAC,IAAAiD,YAAAa,QAAA,CACXwB,CAAAyC,cAAA,CAAoB,MAApB,CADW,CACkBhI,OAAA2N,wBADlB,CAAf,CAEIM,EAAO,EAFX,CAGIhK,EAAYsB,CAAAiI,QAAA,EAHhB,CAIS5J,EAAI,CAAb,CAAgBA,CAAhB,CAAoBK,CAAAJ,OAApB,CAAsCD,CAAA,EAAtC,CACEqK,CAAA,CAAKrK,CAAL,CAAA,CAAU5D,OAAAC,IAAAwH,YAAA,CAAwBlC,CAAxB,CAA+B,KAA/B,CAAuC3B,CAAvC,CACN5D,OAAAC,IAAAuC,YADM,CAAV,EACgC,MAGlC,OAAO,CADIkL,CACJ,CADe,GACf,CADqBO,CAAA3J,KAAA,CAAU,IAAV,CACrB,CADuC,GACvC,CAAOtE,OAAAC,IAAAO,oBAAP,CAX8C,CAcvDR,QAAAC,IAAA,wBAAA,CAAyC,QAAQ,CAACsF,CAAD,CAAQ,CAKvD,MADYvF,QAAAC,IAAA,sBAAA4M,CAAqCtH,CAArCsH,CACL,CAAM,CAAN,CAAP,CAAkB,KALqC,CAQzD7M;OAAAC,IAAA,oBAAA,CAAqC,QAAQ,CAACsF,CAAD,CAAQ,CAInD,IAAId,EAAO,MAAPA,EAFYzE,OAAAC,IAAAwH,YAAA,CAAwBlC,CAAxB,CAA+B,WAA/B,CACZvF,OAAAC,IAAAwC,WADY,CAEZgC,EAD2B,OAC3BA,EAA4B,OAC5BzE,QAAAC,IAAA2K,iBAAJ,GAGEnG,CAHF,EAGUzE,OAAAC,IAAAgG,YAAA,CACJjG,OAAAC,IAAAuK,SAAA,CAAqBxK,OAAAC,IAAA2K,iBAArB,CAAmDrF,CAAnD,CADI,CAEJvF,OAAAC,IAAA4K,OAFI,CAHV,CAOItF,EAAA2I,gBAAJ,EACM3E,CAEJ,CAFYvJ,OAAAC,IAAAwH,YAAA,CAAwBlC,CAAxB,CAA+B,OAA/B,CACRvF,OAAAC,IAAAwC,WADQ,CAEZ,EAD+B,MAC/B,CAAAgC,CAAA,EAAQzE,OAAAC,IAAA4K,OAAR,CAA6B,SAA7B,CAAyCtB,CAAzC,CAAiD,KAHnD,EAKE9E,CALF,EAKUzE,OAAAC,IAAA4K,OALV,CAK+B,WAG/B,OADApG,EACA,CADQ,KAnB2C,C,CClG3B,OAAA,IAAA0J,MAAA,CAAA,EAK1BnO,QAAAC,IAAA,KAAA,CAAsB,QAAQ,CAACsF,CAAD,CAAQ,CAGpC,MAAO,CADIvF,OAAAC,IAAA8E,OAAAN,CAAmBc,CAAAyC,cAAA,CAAoB,MAApB,CAAnBvD,CACJ,CAAOzE,OAAAC,IAAAG,aAAP,CAH6B,CAMtCJ,QAAAC,IAAA,eAAA,CAAgC,QAAQ,CAACsF,CAAD,CAAQ,CAG9C,MAAO,CADIvF,OAAAC,IAAAkF,iBAAAV,CAA6Bc,CAAAyC,cAAA,CAAoB,MAApB,CAA7BvD,CACJ,CAAOzE,OAAAC,IAAAG,aAAP,CAHuC,CAMhDJ;OAAAC,IAAA,UAAA,CAA2B,QAAQ,CAACsF,CAAD,CAAQ,CAEzC,GAAwB,CAAxB,EAAIA,CAAAqD,WAAJ,CACE,MAAO,CAAC,IAAD,CAAS5I,OAAAC,IAAAG,aAAT,CACF,IAAwB,CAAxB,EAAImF,CAAAqD,WAAJ,CAIL,MAAO,CAHO5I,OAAAC,IAAAwH,YAAA,CAAwBlC,CAAxB,CAA+B,MAA/B,CACVvF,OAAAC,IAAAwC,WADU,CAGP,EAFwB,IAExB,CAAOzC,OAAAC,IAAAO,oBAAP,CACF,IAAwB,CAAxB,EAAI+E,CAAAqD,WAAJ,CAA2B,CAChC,IAAIwF,EAAWpO,OAAAC,IAAAwH,YAAA,CAAwBlC,CAAxB,CAA+B,MAA/B,CACXvF,OAAAC,IAAAG,aADW,CAAXgO,EAC6B,IAC7BC,EAAAA,CAAWrO,OAAAC,IAAAwH,YAAA,CAAwBlC,CAAxB,CAA+B,MAA/B,CACXvF,OAAAC,IAAAG,aADW,CAAXiO,EAC6B,IAEjC,OAAO,CADID,CACJ,CADe,KACf,CADuBC,CACvB,CAAOrO,OAAAC,IAAAuB,oBAAP,CANyB,CAQ5B8M,CAAAA,CAAe3F,KAAJ,CAAUpD,CAAAqD,WAAV,CACf,KAAK,IAAIhF,EAAI,CAAb,CAAgBA,CAAhB,CAAoB2B,CAAAqD,WAApB,CAAsChF,CAAA,EAAtC,CACE0K,CAAA,CAAS1K,CAAT,CAAA,CAAc5D,OAAAC,IAAAwH,YAAA,CAAwBlC,CAAxB;AAA+B,KAA/B,CAAuC3B,CAAvC,CACV5D,OAAAC,IAAAuC,YADU,CAAd,EACgC,IAE9BiC,EAAJ,CAAW,oBAAX,CAAoC6J,CAAAhK,KAAA,CAAc,GAAd,CAApC,CAAyD,IACzD,OAAO,CAACG,CAAD,CAAOzE,OAAAC,IAAAO,oBAAP,CAvBgC,CA2B3CR,QAAAC,IAAA,YAAA,CAA6B,QAAQ,CAACsF,CAAD,CAAQ,CAE3C,IAAI4H,EAAUnN,OAAAC,IAAAiD,YAAAa,QAAA,CACVwB,CAAAyC,cAAA,CAAoB,KAApB,CADU,CACkBhI,OAAAqE,uBADlB,CAEVkF,EAAAA,CAAQvJ,OAAAC,IAAAwH,YAAA,CAAwBlC,CAAxB,CAA+B,MAA/B,CACRvF,OAAAC,IAAAmC,iBADQ,CAARmH,EACiC,IACrC,OAAO4D,EAAP,CAAiB,MAAjB,CAA0B5D,CAA1B,CAAkC,KANS,CAS7CvJ;OAAAC,IAAA,YAAA,CAA6B,QAAQ,CAACsF,CAAD,CAAQ,CAE3C,IAAI2C,EAAelI,OAAAC,IAAAgI,iBAAA,CACf,QADe,CAEf,CAAC,WAAD,CAAejI,OAAAC,IAAAkI,2BAAf,CAAwD,YAAxD,CACC,4BADD,CAEC,4BAFD,CAGC,YAHD,CAIC,2BAJD,CAKC,KALD,CAMC,GAND,CAFe,CASfoG,EAAAA,CAAOvO,OAAAC,IAAAwH,YAAA,CAAwBlC,CAAxB,CAA+B,OAA/B,CACPvF,OAAAC,IAAAwC,WADO,CAAP8L,EAC2B,IAC/B,OAAO,CAACrG,CAAD,CAAgB,GAAhB,CAAsBqG,CAAtB,CAA6B,GAA7B,CAAkCvO,OAAAC,IAAAO,oBAAlC,CAboC,CAgB7CR,QAAAC,IAAA,aAAA,CAA8B,QAAQ,CAACsF,CAAD,CAAQ,CAI5C,MAAO,CAAC,QAAD,EAFIvF,OAAAC,IAAAwH,YAAA,CAAwBlC,CAAxB,CAA+B,OAA/B,CACPvF,OAAAC,IAAAwC,WADO,CAEJ,EADwB,IACxB,EAAmB,GAAnB,CAAwBzC,OAAAC,IAAAO,oBAAxB,CAJqC,CAO9CR;OAAAC,IAAA,aAAA,CAA8B,QAAQ,CAACsF,CAAD,CAAQ,CAE5C,IAAIwF,EAAyC,OAA9B,EAAAxF,CAAAyC,cAAA,CAAoB,KAApB,CAAA,CACX,QADW,CACA,SADf,CAEIwG,EAAYxO,OAAAC,IAAAwH,YAAA,CAAwBlC,CAAxB,CAA+B,MAA/B,CACZvF,OAAAC,IAAAwC,WADY,CAAZ+L,EAC2B,IAH/B,CAIID,EAAOvO,OAAAC,IAAAwH,YAAA,CAAwBlC,CAAxB,CAA+B,OAA/B,CACPvF,OAAAC,IAAAwC,WADO,CAAP8L,EAC2B,IAC/B,IAAIhJ,CAAA1C,UAAAwE,QAAAC,cAAJ,CACE,IAAI4B,EAAa,IAAjB,CACIC,EAAkB,MAFxB,KAIMD,EACJ,CADiB,KACjB,CAAIC,CAAJ,CAAsB,EAYxB,OAAO,CAVYnJ,OAAAC,IAAAgI,iBAAAC,CACe,OAA9B,EAAA3C,CAAAyC,cAAA,CAAoB,KAApB,CAAA,CACI,cADJ,CACqB,kBAFNE,CAGf,CAAC,WAAD,CAAelI,OAAAC,IAAAkI,2BAAf,CACI,oBADJ,CAEC,WAFD,CAEe4C,CAFf,CAE0B,mBAF1B;AAGC,4BAHD,CAGgC7B,CAHhC,CAG6C,SAH7C,CAIIC,CAJJ,CAIsB,GAJtB,CAKC,GALD,CAHejB,CAUZ,CADmB,GACnB,CADyBqG,CACzB,CADgC,IAChC,CADuCC,CACvC,CADmD,GACnD,CAAOxO,OAAAC,IAAAO,oBAAP,CAzBqC,CA4B9CR;OAAAC,IAAA,YAAA,CAA6B,QAAQ,CAACsF,CAAD,CAAQ,CAE3C,IAAI+D,EAAQ/D,CAAAyC,cAAA,CAAoB,OAApB,CAARsB,EAAwC,YAA5C,CAGIiF,EAAOvO,OAAAC,IAAAwH,YAAA,CAAwBlC,CAAxB,CAA+B,OAA/B,CAFe,QAAVkJ,EAACnF,CAADmF,CAAsBzO,OAAAC,IAAAwC,WAAtBgM,CACZzO,OAAAC,IAAAuC,YACO,CAAP+L,EAA6D,IACjE,QAAQjF,CAAR,EACE,KAAK,OAAL,CAEE,MAAO,CADI,SACJ,CADgBiF,CAChB,CADuB,SACvB,CAAOvO,OAAAC,IAAAO,oBAAP,CACT,MAAK,MAAL,CAEE,MAAO,CADI,SACJ,CADgB+N,CAChB,CADuB,OACvB,CAAOvO,OAAAC,IAAAO,oBAAP,CACT,MAAK,YAAL,CAGE,MAFIgH,EAEG,CAFExH,OAAAC,IAAA4G,YAAA,CAAwBtB,CAAxB,CAA+B,IAA/B,CAEF,CAAA,CADI,SACJ,CADgBgJ,CAChB,CADuB,IACvB,CAD8B/G,CAC9B,CADmC,MACnC,CAAOxH,OAAAC,IAAAO,oBAAP,CACT,MAAK,UAAL,CAGE,MAFIgH,EAEG,CAFExH,OAAAC,IAAA4G,YAAA,CAAwBtB,CAAxB;AAA+B,IAA/B,CAAqC,CAArC,CAAwC,CAAA,CAAxC,CAEF,CAAA,CADI,SACJ,CADgBgJ,CAChB,CADuB,IACvB,CAD8B/G,CAC9B,CADmC,MACnC,CAAOxH,OAAAC,IAAAO,oBAAP,CACT,MAAK,QAAL,CAOE,MAAO,CANYR,OAAAC,IAAAgI,iBAAAC,CACf,oBADeA,CAEf,CAAC,WAAD,CAAelI,OAAAC,IAAAkI,2BAAf,CAAwD,WAAxD,CACC,6CADD,CAEC,GAFD,CAFeD,CAMZ,CADe,GACf,CADqBqG,CACrB,CAD4B,GAC5B,CAAOvO,OAAAC,IAAAO,oBAAP,CAtBX,CAwBA,KAAM6I,MAAA,CAAM,iCAAN,CAAN,CA9B2C,CAiC7CrJ;OAAAC,IAAA,kBAAA,CAAmC,QAAQ,CAACsF,CAAD,CAAQ,CAEjD,IAAIgJ,EAAOvO,OAAAC,IAAAwH,YAAA,CAAwBlC,CAAxB,CAA+B,QAA/B,CACPvF,OAAAC,IAAAO,oBADO,CAAP+N,EACoC,IADxC,CAEI3E,EAASrE,CAAAyC,cAAA,CAAoB,QAApB,CAFb,CAGI6B,EAAStE,CAAAyC,cAAA,CAAoB,QAApB,CACb,IAAc,OAAd,EAAI4B,CAAJ,EAAmC,MAAnC,EAAyBC,CAAzB,CAEO,CACL,IAAIC,EAAM9J,OAAAC,IAAA4G,YAAA,CAAwBtB,CAAxB,CAA+B,KAA/B,CACNwE,EAAAA,CAAM/J,OAAAC,IAAA4G,YAAA,CAAwBtB,CAAxB,CAA+B,KAA/B,CAwBNd,EAAJ,CAvBmBzE,OAAAC,IAAAgI,iBAAAC,CACf,oBADeA,CAEf,CAAC,WAAD,CAAelI,OAAAC,IAAAkI,2BAAf,CACI,yCADJ,CAEC,gCAFD,CAGC,sCAHD,CAIC,oCAJD;AAKC,eALD,CAMC,yCAND,CAOC,oEAPD,CAQC,KARD,CASC,gBATD,CAUC,kCAVD,CAWC,gCAXD,CAYC,uCAZD,CAaC,4CAbD,CAcC,mCAdD,CAeC,qCAfD,CAgBC,YAhBD,CAiBC,oEAjBD,CAkBC,KAlBD,CAmBC,wCAnBD;AAoBC,GApBD,CAFeD,CAuBnB,CAA0B,GAA1B,CAAgCqG,CAAhC,CAAuC,KAAvC,CACI3E,CADJ,CACa,KADb,CACsBE,CADtB,CAC4B,KAD5B,CACqCD,CADrC,CAC8C,KAD9C,CACuDE,CADvD,CAC6D,GA3BxD,CA6BP,MAAO,CAACtF,CAAD,CAAOzE,OAAAC,IAAAO,oBAAP,CArC0C,CAwCnDR,QAAAC,IAAA,gBAAA,CAAiC,QAAQ,CAACsF,CAAD,CAAQ,CAE/C,IAAIgJ,EAAOvO,OAAAC,IAAAwH,YAAA,CAAwBlC,CAAxB,CAA+B,MAA/B,CACHvF,OAAAC,IAAAwC,WADG,CAAP8L,EAC+B,IACnC,IAAmC,WAAnC,EAAIhJ,CAAAyC,cAAA,CAAoB,MAApB,CAAJ,CACE,IAAIvD,EAAO,aAAPA,CAAuB8J,CAAvB9J,CAA8B,GADpC,KAE0C,WAAnC,EAAIc,CAAAyC,cAAA,CAAoB,MAApB,CAAJ,CACDvD,CADC,CACM,aADN,CACsB8J,CADtB,CAC6B,GAD7B,CAEmC,WAFnC,EAEIhJ,CAAAyC,cAAA,CAAoB,MAApB,CAFJ,GAGDvD,CAHC,CAGM,qBAHN,CAG8B8J,CAH9B,CAGqC,IAHrC,CAKP,OAAO,CAAC9J,CAAD,CAAOzE,OAAAC,IAAAO,oBAAP,CAXwC,CAcjDR;OAAAC,IAAA,UAAA,CAA2B,QAAQ,CAACsF,CAAD,CAAQ,CAOzC,IAAIwF,EALYC,CACd,KAAQ,OADMA,CAEd,MAAS,OAFKA,CAGd,KAAQ,MAHMA,CAKD,CAAUzF,CAAAyC,cAAA,CAAoB,MAApB,CAAV,CACXuG,EAAAA,CAAOvO,OAAAC,IAAAwH,YAAA,CAAwBlC,CAAxB,CAA+B,MAA/B,CACPvF,OAAAC,IAAAwC,WADO,CAAP8L,EAC2B,IAC/B,OAAO,CAACxD,CAAD,CAAY,GAAZ,CAAkBwD,CAAlB,CAAyB,GAAzB,CAA8BvO,OAAAC,IAAAO,oBAA9B,CAVkC,CAa3CR,QAAAC,IAAA,WAAA,CAA4B,QAAQ,CAACsF,CAAD,CAAQ,CAI1C,MAAO,QAAP,EAFUvF,OAAAC,IAAAwH,YAAA,CAAwBlC,CAAxB,CAA+B,MAA/B,CACNvF,OAAAC,IAAAwC,WADM,CAEV,EAD+B,IAC/B,EAAwB,MAJkB,CAO5CzC;OAAAC,IAAA,gBAAA,CAAiC,QAAQ,CAACsF,CAAD,CAAQ,CAU/C,IAAId,EAAO,WAAPA,EARAc,CAAAgG,SAAA,CAAe,MAAf,CAAJmD,CAEY1O,OAAAC,IAAA8E,OAAA,CAAmBQ,CAAAyC,cAAA,CAAoB,MAApB,CAAnB,CAFZ0G,CAKY1O,OAAAC,IAAAwH,YAAA,CAAwBlC,CAAxB,CAA+B,MAA/B,CACNvF,OAAAC,IAAAwC,WADM,CALZiM,EAMiC,IAE7BjK,EAA2B,GACe,SAC9C,EADec,CAAAyC,cAAA,CAAoB,MAApB,CACf,GACEvD,CADF,CACS,WADT,CACuBA,CADvB,CAC8B,GAD9B,CAGA,OAAO,CAACA,CAAD,CAAOzE,OAAAC,IAAAO,oBAAP,CAfwC,CAkBjDR,QAAAC,IAAA,YAAA,CAA6BD,OAAAC,IAAA,gBAE7BD;OAAAC,IAAA,WAAA,CAA4B,QAAQ,CAACsF,CAAD,CAAQ,CAC1C,IAAIgJ,EAAOvO,OAAAC,IAAAwH,YAAA,CAAwBlC,CAAxB,CAA+B,MAA/B,CACPvF,OAAAC,IAAAM,aADO,CAAPgO,EAC6B,IAC7BI,EAAAA,CAAM3O,OAAAC,IAAAwH,YAAA,CAAwBlC,CAAxB,CAA+B,KAA/B,CACNvF,OAAAC,IAAAwC,WADM,CAANkM,EAC2B,IAI/B,OAAO,CAHI,SAGJ,CAHgBA,CAGhB,CAHsB,mBAGtB,CAFYJ,CAEZ,CAFmB,uBAEnB,CADkBA,CAClB,CADyB,IACzB,CADgCI,CAChC,CADsC,GACtC,CAAO3O,OAAAC,IAAAkC,kBAAP,CARmC,CAW5CnC;OAAAC,IAAA,aAAA,CAA8B,QAAQ,CAACsF,CAAD,CAAQ,CAC5C,IAAIgJ,EAAOvO,OAAAC,IAAAwH,YAAA,CAAwBlC,CAAxB,CAA+B,MAA/B,CACPvF,OAAAC,IAAAM,aADO,CAAPgO,EAC6B,IADjC,CAEIK,EAAO5O,OAAAC,IAAAwH,YAAA,CAAwBlC,CAAxB,CAA+B,MAA/B,CACPvF,OAAAC,IAAAwC,WADO,CAAPmM,EAC2B,IAC3BC,EAAAA,CAAK7O,OAAAC,IAAAwH,YAAA,CAAwBlC,CAAxB,CAA+B,IAA/B,CACLvF,OAAAC,IAAAwC,WADK,CAALoM,EAC2B,IAE/B,OAAO,CADI,cACJ,CADqBD,CACrB,CAD4B,IAC5B,CADmCC,CACnC,CADwC,IACxC,CAD+CN,CAC/C,CADsD,GACtD,CAAOvO,OAAAC,IAAAO,oBAAP,CARqC,CAW9CR,QAAAC,IAAA,aAAA,CAA8B,QAAQ,CAACsF,CAAD,CAAQ,CAI5C,MAAO,CADI,SACJ,EAHIvF,OAAAC,IAAAwH,YAAA,CAAwBlC,CAAxB,CAA+B,MAA/B,CACPvF,OAAAC,IAAAM,aADO,CAGJ,EAF0B,IAE1B,EADuB,GACvB,CAAOP,OAAAC,IAAAO,oBAAP,CAJqC,C,CC7PpB,OAAA,IAAAsO,UAAA,CAAA,EAK1B9O,QAAAC,IAAA,cAAA,CAA+B,QAAQ,CAACsF,CAAD,CAAQ,CAI3C,MAAO,CAFIvF,OAAAC,IAAAiD,YAAAa,QAAAU,CAAgCc,CAAAyC,cAAA,CAAoB,KAApB,CAAhCvD,CACPzE,OAAAqE,uBADOI,CAEJ,CAAOzE,OAAAC,IAAAG,aAAP,CAJoC,CAO/CJ,QAAAC,IAAA,cAAA,CAA+B,QAAQ,CAACsF,CAAD,CAAQ,CAE3C,IAAIyD,EAAYhJ,OAAAC,IAAAwH,YAAA,CAAwBlC,CAAxB,CAA+B,OAA/B,CACRvF,OAAAC,IAAAmC,iBADQ,CAAZ4G,EACqC,GAGzC,OAFchJ,QAAAC,IAAAiD,YAAAa,QAAAoJ,CACV5H,CAAAyC,cAAA,CAAoB,KAApB,CADUmF,CACkBnN,OAAAqE,uBADlB8I,CAEd,CAAiB,KAAjB,CAAyBnE,CAAzB,CAAqC,KANM,C,CCZrB,OAAA,IAAA+F,iBAAA,CAAA,EAO1B/O,QAAAC,IAAA,sBAAA,CAAuCD,OAAAC,IAAA,cACvCD,QAAAC,IAAA,sBAAA,CAAuCD,OAAAC,IAAA","file":"php_compressed.js","sourceRoot":"./"} \ No newline at end of file +{"version":3,"sources":["generators/php.js","generators/php/colour.js","generators/php/lists.js","generators/php/logic.js","generators/php/loops.js","generators/php/math.js","generators/php/procedures.js","generators/php/text.js","generators/php/variables.js","generators/php/variables_dynamic.js"],"names":["Blockly","PHP","Generator","addReservedWords","ORDER_ATOMIC","ORDER_CLONE","ORDER_NEW","ORDER_MEMBER","ORDER_FUNCTION_CALL","ORDER_POWER","ORDER_INCREMENT","ORDER_DECREMENT","ORDER_BITWISE_NOT","ORDER_CAST","ORDER_SUPPRESS_ERROR","ORDER_INSTANCEOF","ORDER_LOGICAL_NOT","ORDER_UNARY_PLUS","ORDER_UNARY_NEGATION","ORDER_MULTIPLICATION","ORDER_DIVISION","ORDER_MODULUS","ORDER_ADDITION","ORDER_SUBTRACTION","ORDER_STRING_CONCAT","ORDER_BITWISE_SHIFT","ORDER_RELATIONAL","ORDER_EQUALITY","ORDER_REFERENCE","ORDER_BITWISE_AND","ORDER_BITWISE_XOR","ORDER_BITWISE_OR","ORDER_LOGICAL_AND","ORDER_LOGICAL_OR","ORDER_IF_NULL","ORDER_CONDITIONAL","ORDER_ASSIGNMENT","ORDER_LOGICAL_AND_WEAK","ORDER_LOGICAL_XOR","ORDER_LOGICAL_OR_WEAK","ORDER_COMMA","ORDER_NONE","ORDER_OVERRIDES","init","Blockly.PHP.init","workspace","definitions_","Object","create","functionNames_","variableDB_","reset","Names","RESERVED_WORDS_","setVariableMap","getVariableMap","defvars","devVarList","Variables","allDeveloperVariables","i","length","push","getName","DEVELOPER_VARIABLE_TYPE","variables","allUsedVarModels","variable","getId","VARIABLE_CATEGORY_NAME","join","finish","Blockly.PHP.finish","code","definitions","name","scrubNakedValue","Blockly.PHP.scrubNakedValue","line","quote_","Blockly.PHP.quote_","string","replace","multiline_quote_","Blockly.PHP.multiline_quote_","split","lines","map","scrub_","Blockly.PHP.scrub_","block","opt_thisOnly","commentCode","outputConnection","targetConnection","comment","getCommentText","utils","wrap","COMMENT_WRAP","prefixLines","inputList","type","INPUT_VALUE","childBlock","connection","targetBlock","allNestedComments","nextBlock","nextConnection","nextCode","blockToCode","getAdjusted","Blockly.PHP.getAdjusted","atId","opt_delta","opt_negate","opt_order","delta","order","options","oneBasedIndex","defaultAtIndex","at","valueToCode","isNumber","Number","innerOrder","Math","floor","getFieldValue","functionName","provideFunction_","FUNCTION_NAME_PLACEHOLDER_","red","green","blue","c1","c2","ratio","Array","itemCount_","element","repeatCount","list","argument0","argument1","errorIndex","indexAdjustment","mode","Error","where","value","match","listVar","getDistinctName","xVar","where1","where2","at1","at2","String","listCode","direction","value_input","value_delim","n","STATEMENT_PREFIX","injectId","conditionCode","branchCode","statementToCode","STATEMENT_SUFFIX","INDENT","getInput","operator","OPERATORS","defaultArgument","value_if","value_then","value_else","repeats","getField","branch","addLoopTrap","loopVar","endVar","until","variable0","increment","up","step","abs","startVar","incVar","xfix","loop","Constants","Loops","CONTROL_FLOW_IN_LOOP_CHECK_MIXIN","getSurroundLoop","suppressPrefixSuffix","Infinity","tuple","arg","CONSTANTS","number_to_check","dropdown_property","divisor","varName","func","argument2","globals","getVars","indexOf","funcName","PROCEDURE_CATEGORY_NAME","xfix1","loopTrap","INFINITE_LOOP_TRAP","returnValue","xfix2","args","hasReturnValue_","element0","element1","elements","text","substring","textOrder","msg","sub","from","to"],"mappings":"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","file":"php_compressed.js","sourceRoot":"./"} \ No newline at end of file diff --git a/python_compressed.js b/python_compressed.js index 98e61eebdcb..36485a8b179 100644 --- a/python_compressed.js +++ b/python_compressed.js @@ -17,7 +17,7 @@ Blockly.Python.ORDER_OVERRIDES=[[Blockly.Python.ORDER_FUNCTION_CALL,Blockly.Pyth Blockly.Python.init=function(a){Blockly.Python.PASS=this.INDENT+"pass\n";Blockly.Python.definitions_=Object.create(null);Blockly.Python.functionNames_=Object.create(null);Blockly.Python.variableDB_?Blockly.Python.variableDB_.reset():Blockly.Python.variableDB_=new Blockly.Names(Blockly.Python.RESERVED_WORDS_);Blockly.Python.variableDB_.setVariableMap(a.getVariableMap());for(var b=[],c=Blockly.Variables.allDeveloperVariables(a),d=0;dc?"int("+a+" - "+-c+")":"int("+a+")",d&&(a="-"+a));return a};Blockly.Python.colour={};Blockly.Python.colour_picker=function(a){return[Blockly.Python.quote_(a.getFieldValue("COLOUR")),Blockly.Python.ORDER_ATOMIC]};Blockly.Python.colour_random=function(a){Blockly.Python.definitions_.import_random="import random";return["'#%06x' % random.randint(0, 2**24 - 1)",Blockly.Python.ORDER_FUNCTION_CALL]}; Blockly.Python.colour_rgb=function(a){var b=Blockly.Python.provideFunction_("colour_rgb",["def "+Blockly.Python.FUNCTION_NAME_PLACEHOLDER_+"(r, g, b):"," r = round(min(100, max(0, r)) * 2.55)"," g = round(min(100, max(0, g)) * 2.55)"," b = round(min(100, max(0, b)) * 2.55)"," return '#%02x%02x%02x' % (r, g, b)"]),c=Blockly.Python.valueToCode(a,"RED",Blockly.Python.ORDER_NONE)||0,d=Blockly.Python.valueToCode(a,"GREEN",Blockly.Python.ORDER_NONE)||0;a=Blockly.Python.valueToCode(a,"BLUE",Blockly.Python.ORDER_NONE)|| @@ -48,10 +48,10 @@ Blockly.Python.logic_operation=function(a){var b="AND"==a.getFieldValue("OP")?"a Blockly.Python.logic_boolean=function(a){return["TRUE"==a.getFieldValue("BOOL")?"True":"False",Blockly.Python.ORDER_ATOMIC]};Blockly.Python.logic_null=function(a){return["None",Blockly.Python.ORDER_ATOMIC]}; Blockly.Python.logic_ternary=function(a){var b=Blockly.Python.valueToCode(a,"IF",Blockly.Python.ORDER_CONDITIONAL)||"False",c=Blockly.Python.valueToCode(a,"THEN",Blockly.Python.ORDER_CONDITIONAL)||"None";a=Blockly.Python.valueToCode(a,"ELSE",Blockly.Python.ORDER_CONDITIONAL)||"None";return[c+" if "+b+" else "+a,Blockly.Python.ORDER_CONDITIONAL]};Blockly.Python.loops={};Blockly.Python.controls_repeat_ext=function(a){var b=a.getField("TIMES")?String(parseInt(a.getFieldValue("TIMES"),10)):Blockly.Python.valueToCode(a,"TIMES",Blockly.Python.ORDER_NONE)||"0";b=Blockly.isNumber(b)?parseInt(b,10):"int("+b+")";var c=Blockly.Python.statementToCode(a,"DO");c=Blockly.Python.addLoopTrap(c,a)||Blockly.Python.PASS;return"for "+Blockly.Python.variableDB_.getDistinctName("count",Blockly.VARIABLE_CATEGORY_NAME)+" in range("+b+"):\n"+c}; Blockly.Python.controls_repeat=Blockly.Python.controls_repeat_ext;Blockly.Python.controls_whileUntil=function(a){var b="UNTIL"==a.getFieldValue("MODE"),c=Blockly.Python.valueToCode(a,"BOOL",b?Blockly.Python.ORDER_LOGICAL_NOT:Blockly.Python.ORDER_NONE)||"False",d=Blockly.Python.statementToCode(a,"DO");d=Blockly.Python.addLoopTrap(d,a)||Blockly.Python.PASS;b&&(c="not "+c);return"while "+c+":\n"+d}; -Blockly.Python.controls_for=function(a){var b=Blockly.Python.variableDB_.getName(a.getFieldValue("VAR"),Blockly.VARIABLE_CATEGORY_NAME),c=Blockly.Python.valueToCode(a,"FROM",Blockly.Python.ORDER_NONE)||"0",d=Blockly.Python.valueToCode(a,"TO",Blockly.Python.ORDER_NONE)||"0",e=Blockly.Python.valueToCode(a,"BY",Blockly.Python.ORDER_NONE)||"1",f=Blockly.Python.statementToCode(a,"DO");f=Blockly.Python.addLoopTrap(f,a)||Blockly.Python.PASS;var l="",h=function(){return Blockly.Python.provideFunction_("upRange", -["def "+Blockly.Python.FUNCTION_NAME_PLACEHOLDER_+"(start, stop, step):"," while start <= stop:"," yield start"," start += abs(step)"])},g=function(){return Blockly.Python.provideFunction_("downRange",["def "+Blockly.Python.FUNCTION_NAME_PLACEHOLDER_+"(start, stop, step):"," while start >= stop:"," yield start"," start -= abs(step)"])};a=function(a,b,c){return"("+a+" <= "+b+") and "+h()+"("+a+", "+b+", "+c+") or "+g()+"("+a+", "+b+", "+c+")"};if(Blockly.isNumber(c)&&Blockly.isNumber(d)&& -Blockly.isNumber(e))c=Number(c),d=Number(d),e=Math.abs(Number(e)),0===c%1&&0===d%1&&0===e%1?(c<=d?(d++,a=0==c&&1==e?d:c+", "+d,1!=e&&(a+=", "+e)):(d--,a=c+", "+d+", -"+e),a="range("+a+")"):(a=c= stop:"," yield start"," start -= abs(step)"])};a=function(g,l,p){return"("+g+" <= "+l+") and "+k()+"("+g+", "+l+", "+p+") or "+h()+"("+g+", "+l+", "+p+")"};if(Blockly.isNumber(c)&&Blockly.isNumber(d)&& +Blockly.isNumber(e))c=Number(c),d=Number(d),e=Math.abs(Number(e)),0===c%1&&0===d%1&&0===e%1?(c<=d?(d++,a=0==c&&1==e?d:c+", "+d,1!=e&&(a+=", "+e)):(d--,a=c+", "+d+", -"+e),a="range("+a+")"):(a=ca?Blockly.Python.ORDER_UNARY_SIGN:Blockly.Python.ORDER_ATOMIC;return[a,b]}; Blockly.Python.math_arithmetic=function(a){var b={ADD:[" + ",Blockly.Python.ORDER_ADDITIVE],MINUS:[" - ",Blockly.Python.ORDER_ADDITIVE],MULTIPLY:[" * ",Blockly.Python.ORDER_MULTIPLICATIVE],DIVIDE:[" / ",Blockly.Python.ORDER_MULTIPLICATIVE],POWER:[" ** ",Blockly.Python.ORDER_EXPONENTIATION]}[a.getFieldValue("OP")],c=b[0];b=b[1];var d=Blockly.Python.valueToCode(a,"A",b)||"0";a=Blockly.Python.valueToCode(a,"B",b)||"0";return[d+c+a,b]}; @@ -73,8 +73,8 @@ Blockly.Python.math_constrain=function(a){var b=Blockly.Python.valueToCode(a,"VA Blockly.Python.math_random_int=function(a){Blockly.Python.definitions_.import_random="import random";var b=Blockly.Python.valueToCode(a,"FROM",Blockly.Python.ORDER_NONE)||"0";a=Blockly.Python.valueToCode(a,"TO",Blockly.Python.ORDER_NONE)||"0";return["random.randint("+b+", "+a+")",Blockly.Python.ORDER_FUNCTION_CALL]};Blockly.Python.math_random_float=function(a){Blockly.Python.definitions_.import_random="import random";return["random.random()",Blockly.Python.ORDER_FUNCTION_CALL]}; Blockly.Python.math_atan2=function(a){Blockly.Python.definitions_.import_math="import math";var b=Blockly.Python.valueToCode(a,"X",Blockly.Python.ORDER_NONE)||"0";return["math.atan2("+(Blockly.Python.valueToCode(a,"Y",Blockly.Python.ORDER_NONE)||"0")+", "+b+") / math.pi * 180",Blockly.Python.ORDER_MULTIPLICATIVE]};Blockly.Python.procedures={}; Blockly.Python.procedures_defreturn=function(a){for(var b=[],c,d=a.workspace,e=Blockly.Variables.allUsedVarModels(d)||[],f=0;c=e[f];f++)c=c.name,-1==a.getVars().indexOf(c)&&b.push(Blockly.Python.variableDB_.getName(c,Blockly.VARIABLE_CATEGORY_NAME));e=Blockly.Variables.allDeveloperVariables(d);for(f=0;f file.endsWith('json') && !(new RegExp(/(keys|synonyms|qqq|constants)\.json$/).test(file))); json_files = json_files.map(file => path.join('msg', 'json', file)); - const createMessagesCmd = `python ./i18n/create_messages.py \ + const createMessagesCmd = `python ./scripts/i18n/create_messages.py \ --source_lang_file ${path.join('msg', 'json', 'en.json')} \ --source_synonym_file ${path.join('msg', 'json', 'synonyms.json')} \ --source_constants_file ${path.join('msg', 'json', 'constants.json')} \ @@ -431,6 +435,52 @@ function buildLangfiles(done) { done(); }; +/** + * This task builds Blockly core, blocks and generators together and uses + * closure compiler's ADVANCED_COMPILATION mode. + */ +function buildAdvancedCompilationTest() { + const srcs = [ + 'tests/compile/main.js', + 'core/**/**/*.js', + 'blocks/*.js', + 'generators/**/*.js']; + return gulp.src(maybeAddClosureLibrary(srcs), {base: './'}) + .pipe(stripApacheLicense()) + .pipe(gulp.sourcemaps.init()) + // Directories in Blockly are used to group similar files together + // but are not used to limit access with @package, instead the + // method means something is internal to Blockly and not a public + // API. + // Flatten all files so they're in the same directory, but ensure that + // files with the same name don't conflict. + .pipe(gulp.rename(function (p) { + if (p.dirname.indexOf('core') === 0) { + var dirname = p.dirname.replace( + new RegExp(path.sep.replace(/\\/, '\\\\'), "g"), "-"); + p.dirname = ""; + p.basename = dirname + "-" + p.basename; + } + })) + .pipe(compile({ + dependency_mode: 'PRUNE', + compilation_level: 'ADVANCED_OPTIMIZATIONS', + entry_point: './tests/compile/main.js', + js_output_file: 'main_compressed.js', + externs: ['./externs/svg-externs.js', './externs/goog-externs.js'], + language_in: + argv.closureLibrary ? 'ECMASCRIPT_2015' : 'ECMASCRIPT5_STRICT' + }, argv.verbose, argv.strict)) + .pipe(gulp.sourcemaps.mapSources(function (sourcePath, file) { + return sourcePath.replace(/-/g, '/'); + })) + .pipe(gulp.sourcemaps.write('.', { + includeContent: false, + sourceRoot: '../../' + })) + .pipe(gulp.dest('./tests/compile/')); +} + /** * This tasks builds Blockly's core files: * blockly_compressed.js @@ -469,4 +519,5 @@ module.exports = { uncompressed: buildUncompressed, compressed: buildCompressed, generators: buildGenerators, + advancedCompilationTest: buildAdvancedCompilationTest, } diff --git a/scripts/gulpfiles/package_tasks.js b/scripts/gulpfiles/package_tasks.js index bafa63d1ed1..24cb4000bfe 100644 --- a/scripts/gulpfiles/package_tasks.js +++ b/scripts/gulpfiles/package_tasks.js @@ -36,7 +36,7 @@ function packageUMD(namespace, dependencies) { dependencies: function () { return dependencies; }, namespace: function () { return namespace; }, exports: function () { return namespace; }, - template: path.join(__dirname, `${blocklyRoot}/package/templates/umd.template`) + template: path.join(__dirname, `${blocklyRoot}/scripts/package/templates/umd.template`) }); }; @@ -50,7 +50,7 @@ function packageCommonJS(namespace, dependencies) { dependencies: function () { return dependencies; }, namespace: function () { return namespace; }, exports: function () { return namespace; }, - template: path.join(__dirname, `${blocklyRoot}/package/templates/node.template`) + template: path.join(__dirname, `${blocklyRoot}/scripts/package/templates/node.template`) }); }; @@ -73,11 +73,11 @@ function packageCompressed() { }; /** - * This task wraps package/blockly.js into a UMD module. + * This task wraps scripts/package/blockly.js into a UMD module. * @example import 'blockly/blockly'; */ function packageBlockly() { - return gulp.src('package/blockly.js') + return gulp.src('scripts/package/blockly.js') .pipe(packageUMD('Blockly', [{ name: 'Blockly', amd: './blockly_compressed', @@ -88,11 +88,11 @@ function packageBlockly() { }; /** - * This task wraps package/blocks.js into a UMD module. + * This task wraps scripts/package/blocks.js into a UMD module. * @example import 'blockly/blocks'; */ function packageBlocks() { - return gulp.src('package/blocks.js') + return gulp.src('scripts/package/blocks.js') .pipe(packageUMD('Blockly.Blocks', [{ name: 'Blockly', amd: './blocks_compressed', @@ -103,13 +103,13 @@ function packageBlocks() { }; /** - * This task wraps package/index.js into a UMD module. + * This task wraps scripts/package/index.js into a UMD module. * We implicitly require the Node entry point in CommonJS environments, * and the Browser entry point for AMD environments. * @example import * as Blockly from 'blockly'; */ function packageIndex() { - return gulp.src('package/index.js') + return gulp.src('scripts/package/index.js') .pipe(packageUMD('Blockly', [{ name: 'Blockly', amd: './browser', @@ -120,7 +120,7 @@ function packageIndex() { }; /** - * This task wraps package/browser/index.js into a UMD module. + * This task wraps scripts/package/browser/index.js into a UMD module. * By default, the module includes Blockly core and built-in blocks, * as well as the JavaScript code generator and the English block * localization files. @@ -129,7 +129,7 @@ function packageIndex() { * @example import * as Blockly from 'blockly/browser'; */ function packageBrowser() { - return gulp.src('package/browser/index.js') + return gulp.src('scripts/package/browser/index.js') .pipe(packageUMD('Blockly', [{ name: 'Blockly', amd: './core-browser', @@ -152,7 +152,7 @@ function packageBrowser() { }; /** - * This task wraps package/browser/core.js into a UMD module. + * This task wraps scripts/package/browser/core.js into a UMD module. * By default, the module includes the Blockly core package and a * helper method to set the locale. * This module is configured (in package.json) to replaces the module @@ -160,7 +160,7 @@ function packageBrowser() { * @example import * as Blockly from 'blockly/core'; */ function packageCore() { - return gulp.src('package/browser/core.js') + return gulp.src('scripts/package/browser/core.js') .pipe(packageUMD('Blockly', [{ name: 'Blockly', amd: './blockly', @@ -171,7 +171,7 @@ function packageCore() { }; /** - * This task wraps package/node/index.js into a CommonJS module for Node.js. + * This task wraps scripts/package/node/index.js into a CommonJS module for Node.js. * By default, the module includes Blockly core and built-in blocks, * as well as all the code generators and the English block localization files. * This module is configured (in package.json) to be replaced by the module @@ -179,7 +179,7 @@ function packageCore() { * @example import * as Blockly from 'blockly/node'; */ function packageNode() { - return gulp.src('package/node/index.js') + return gulp.src('scripts/package/node/index.js') .pipe(packageCommonJS('Blockly', [{ name: 'Blockly', cjs: './core', @@ -210,7 +210,7 @@ function packageNode() { }; /** - * This task wraps package/node/core.js into a CommonJS module for Node.js. + * This task wraps scripts/package/node/core.js into a CommonJS module for Node.js. * By default, the module includes the Blockly core package for Node.js * and a helper method to set the locale. * This module is configured (in package.json) to be replaced by the module @@ -218,7 +218,7 @@ function packageNode() { * @example import * as Blockly from 'blockly/core'; */ function packageNodeCore() { - return gulp.src('package/node/core.js') + return gulp.src('scripts/package/node/core.js') .pipe(packageCommonJS('Blockly', [{ name: 'Blockly', amd: './blockly', @@ -235,7 +235,7 @@ function packageNodeCore() { * @param {string} namespace Export namespace. */ function packageGenerator(file, rename, namespace) { - return gulp.src(`package/${rename}`) + return gulp.src(`scripts/package/${rename}`) .pipe(packageUMD(`Blockly${namespace}`, [{ name: 'Blockly', amd: './core', @@ -348,11 +348,11 @@ function packageJSON(cb) { }; /** - * This task copies the package/README.md file into the distribution directory. + * This task copies the scripts/package/README.md file into the distribution directory. * This file is what developers will see at https://www.npmjs.com/package/blockly. */ function packageReadme() { - return gulp.src('./package/README.md') + return gulp.src('./scripts/package/README.md') .pipe(gulp.dest(`${packageDistribution}`)); }; diff --git a/scripts/gulpfiles/typings.js b/scripts/gulpfiles/typings.js index cdb16ad6652..e15d57474bf 100644 --- a/scripts/gulpfiles/typings.js +++ b/scripts/gulpfiles/typings.js @@ -27,11 +27,11 @@ function typings() { const blocklySrcs = [ "core/", "core/components", - "core/components/tree", "core/keyboard_nav", "core/renderers/common", "core/renderers/measurables", "core/theme", + "core/toolbox", "core/interfaces", "core/utils", "msg/" diff --git a/i18n/common.py b/scripts/i18n/common.py similarity index 100% rename from i18n/common.py rename to scripts/i18n/common.py diff --git a/i18n/create_messages.py b/scripts/i18n/create_messages.py similarity index 100% rename from i18n/create_messages.py rename to scripts/i18n/create_messages.py diff --git a/i18n/dedup_json.py b/scripts/i18n/dedup_json.py similarity index 100% rename from i18n/dedup_json.py rename to scripts/i18n/dedup_json.py diff --git a/i18n/js_to_json.py b/scripts/i18n/js_to_json.py similarity index 100% rename from i18n/js_to_json.py rename to scripts/i18n/js_to_json.py diff --git a/i18n/tests.py b/scripts/i18n/tests.py similarity index 100% rename from i18n/tests.py rename to scripts/i18n/tests.py diff --git a/package/README.md b/scripts/package/README.md similarity index 100% rename from package/README.md rename to scripts/package/README.md diff --git a/package/blockly.js b/scripts/package/blockly.js similarity index 100% rename from package/blockly.js rename to scripts/package/blockly.js diff --git a/package/blocks.js b/scripts/package/blocks.js similarity index 100% rename from package/blocks.js rename to scripts/package/blocks.js diff --git a/package/browser/core.js b/scripts/package/browser/core.js similarity index 100% rename from package/browser/core.js rename to scripts/package/browser/core.js diff --git a/package/browser/index.js b/scripts/package/browser/index.js similarity index 100% rename from package/browser/index.js rename to scripts/package/browser/index.js diff --git a/package/dart.js b/scripts/package/dart.js similarity index 100% rename from package/dart.js rename to scripts/package/dart.js diff --git a/package/index.js b/scripts/package/index.js similarity index 100% rename from package/index.js rename to scripts/package/index.js diff --git a/package/javascript.js b/scripts/package/javascript.js similarity index 100% rename from package/javascript.js rename to scripts/package/javascript.js diff --git a/package/lua.js b/scripts/package/lua.js similarity index 100% rename from package/lua.js rename to scripts/package/lua.js diff --git a/package/node/core.js b/scripts/package/node/core.js similarity index 100% rename from package/node/core.js rename to scripts/package/node/core.js diff --git a/package/node/index.js b/scripts/package/node/index.js similarity index 100% rename from package/node/index.js rename to scripts/package/node/index.js diff --git a/package/php.js b/scripts/package/php.js similarity index 100% rename from package/php.js rename to scripts/package/php.js diff --git a/package/python.js b/scripts/package/python.js similarity index 100% rename from package/python.js rename to scripts/package/python.js diff --git a/package/templates/node.template b/scripts/package/templates/node.template similarity index 100% rename from package/templates/node.template rename to scripts/package/templates/node.template diff --git a/package/templates/umd.template b/scripts/package/templates/umd.template similarity index 100% rename from package/templates/umd.template rename to scripts/package/templates/umd.template diff --git a/theme_scripts/blockStyles_example.json b/scripts/themes/blockStyles_example.json similarity index 100% rename from theme_scripts/blockStyles_example.json rename to scripts/themes/blockStyles_example.json diff --git a/theme_scripts/create_blockStyles.py b/scripts/themes/create_blockStyles.py similarity index 100% rename from theme_scripts/create_blockStyles.py rename to scripts/themes/create_blockStyles.py diff --git a/tests/blocks/test_blocks.js b/tests/blocks/test_blocks.js deleted file mode 100644 index 524a89f9056..00000000000 --- a/tests/blocks/test_blocks.js +++ /dev/null @@ -1,2040 +0,0 @@ -/** - * @license - * Copyright 2017 Google LLC - * SPDX-License-Identifier: Apache-2.0 - */ -'use strict'; - -goog.provide('Blockly.TestBlocks'); - -Blockly.defineBlocksWithJsonArray([ // BEGIN JSON EXTRACT - { - "type": "test_basic_empty", - "message0": "", - "args0": [] - }, - { - "type": "test_basic_stack", - "message0": "stack block", - "previousStatement": null, - "nextStatement": null, - "colour": "120" - }, - { - "type": "test_basic_dummy", - "message0": "dummy input %1", - "args0": [ - { - "type": "input_dummy" - } - ], - "style": "math_blocks" - }, - { - "type": "test_basic_multiple_dummy", - "message0": "first dummy %1 second dummy %2", - "args0": [ - { - "type": "input_dummy" - }, - { - "type": "input_dummy" - } - ], - "style": "math_blocks" - }, - { - "type": "test_basic_row", - "message0": "row block %1", - "args0": [ - { - "type": "input_value", - "name": "INPUT" - } - ], - "output": null, - "style": "math_blocks" - }, - { - "type": "test_basic_value_to_stack", - "message0": "value to stack", - "nextStatement": null, - "output": null, - "style": "math_blocks" - }, - { - "type": "test_basic_value_to_statement", - "message0": "value to statement %1", - "args0": [ - { - "type": "input_statement", - "name": "STATEMENT" - } - ], - "output": null, - "style": "math_blocks" - }, - { - "type": "test_basic_limit_instances", - "message0": "limit 3 instances %1 %2", - "args0": [ - { - "type": "input_dummy" - }, - { - "type": "input_statement", - "name": "STATEMENT" - } - ], - "previousStatement": null, - "nextStatement": null, - "style": "math_blocks", - }, - { - "type": "test_basic_tooltips", - "message0": "%1 %2 %3", - "args0": [ - { - "type": "field_label", - "name": "NAME", - "text": "field tooltip", - "tooltip": "This is a JSON tooltip for the *field*." - }, - { - "type": "input_dummy" - }, - { - "type": "field_label", - "name": "NAME", - "text": "block tooltip" - } - ], - "tooltip": "This is a JSON tooltip for the *block*.", - "style": "math_blocks" - }, - { - "type": "test_basic_javascript", - "message0": "function %1(%2) { %3 %4 return %5 }", - "args0": [ - "foo", - "args", - { - "type": "input_dummy" - }, - { - "type": "input_statement", - "name": "STACK" - }, - { - "type": "input_value", - "check": "number", - "align": "right", - "name": "RETURN" - } - ], - "inputsInline": true, - "colour": 200, - "tooltip": "Hello world." - }, - { - "type": "test_align_dummy_right", - "message0": "text right %1 long text right %2", - "args0": [ - { - "type": "input_dummy", - "align": "RIGHT", - }, - { - "type": "input_dummy", - "align": "RIGHT", - }, - ], - "style": "math_blocks" - }, - { - "type": "test_align_all", - "message0": "text %1 long text left %2 text centre %3 much longer text right %4", - "args0": [ - { - "type": "input_dummy", - }, - { - "type": "input_dummy", - "align": "LEFT", - }, - { - "type": "input_dummy", - "align": "CENTRE", - }, - { - "type": "input_dummy", - "align": "RIGHT", - }, - ], - "style": "math_blocks" - }, - { - "type": "test_align_with_external_input", - "message0": "text right %1 long text centre %2 text left %3 much longer text %4", - "args0": [ - { - "type": "input_dummy", - "align": "RIGHT", - }, - { - "type": "input_dummy", - "align": "CENTRE", - }, - { - "type": "input_dummy", - "align": "LEFT", - }, - { - "type": "input_value", - "name": "VALUE" - }, - ], - "inputsInline": false, - "style": "math_blocks" - }, - { - "type": "test_connections_row_input", - "message0": "%1", - "args0": [ - { - "type": "input_value", - "name": "NAME", - } - ], - "colour": '#aaaaaa', - "tooltip": "No Checks\n" + - "Can connect to any output connection." - }, - { - "type": "test_connections_row_blue", - "message0": "%1", - "args0": [ - { - "type": "input_value", - "name": "NAME", - "check": "greenRel" - } - ], - "output": "noneOut", - "colour": 230, - "tooltip": "Output: noneOut\n" + - "Input: greenRel\n" + - "Input connection can accept yellow blocks but not red blocks." - }, - { - "type": "test_connections_row_yellow", - "message0": "%1", - "args0": [ - { - "type": "input_value", - "name": "NAME", - "check": [ - "orangeRel", - "yellowRel" - ] - } - ], - "output": [ - "yellowRel", - "greenRel" - ], - "colour": 60, - "tooltip": "Output: yellowRel, greenRel\n" + - "Input: yellowRel, orangeRel\n" + - "Output can connect to yellow blocks and blue blocks, but not red blocks.\n" + - "Input can connect to yellow blocks and red blocks, but not blue blocks." - }, - { - "type": "test_connections_row_red", - "message0": "%1", - "args0": [ - { - "type": "input_value", - "name": "NAME", - "check": "noneIn" - } - ], - "output": "orangeRel", - "colour": 0, - "tooltip": "Output: orangeRel\n" + - "Input: noneIn\n" + - "Output can connect to yellow blocks, but not blue blocks." - }, - { - "type": "test_connections_row_output", - "message0": "", - "output": null, - "colour": '#aaaaaa', - "tooltip": "No Checks\n" + - "Can connect to any input connection." - }, - { - "type": "test_connections_multivalue_1valid", - "message0": "none %1 both %2", - "args0": [ - { - "type": "input_value", - "name": "NAME1", - "align": "RIGHT", - "check": "noneIn" - }, - { - "type": "input_value", - "name": "NAME2", - "align": "RIGHT", - "check": [ - "yellowRel", - "orangeRel" - ] - } - ], - "output": [ - "yellowRel", - "greenRel" - ], - "colour": 60, - "tooltip": "Output: yellowRel, greenRel\n" + - "Input Top: noneIn\n" + - "Input Bottom: yellowRel, orangeRel\n" + - "Output can connect to yellow blocks and blue blocks, but not red blocks.\n" + - "Top Input can connect to nothing, except grey blocks.\n" + - "Bottom Input can connect to yellow blocks and red blocks, but not blue" + - " blocks." - }, - { - "type": "test_connections_multivalue_2valid", - "message0": "both %1 both %2", - "args0": [ - { - "type": "input_value", - "name": "NAME1", - "align": "RIGHT", - "check": [ - "yellowRel", - "orangeRel" - ] - }, - { - "type": "input_value", - "name": "NAME2", - "align": "RIGHT", - "check": [ - "yellowRel", - "orangeRel" - ] - } - ], - "output": [ - "yellowRel", - "greenRel" - ], - "colour": 60, - "tooltip": "Output: yellowRel, greenRel\n" + - "Input Top: yellowRel, orangeRel\n" + - "Input Bottom: yellowRel, orangeRel\n" + - "Output can connect to yellow blocks and blue blocks, but not red blocks.\n" + - "Top Input can connect to yellow blocks and red blocks, but not blue" + - " blocks.\n" + - "Bottom Input can connect to yellow blocks and red blocks, but not blue" + - " blocks." - }, - { - "type": "test_connections_stack_next", - "message0": "", - "nextStatement": null, - "colour": '#aaaaaa', - "tooltip": "No Checks\n" + - "Can connect to any previous connection." - }, - { - "type": "test_connections_stack_blue", - "message0": "", - "previousStatement": "nonePrev", - "nextStatement": "greenRel", - "colour": 230, - "tooltip": "Prev: nonePrev\n" + - "Next: greenRel\n" + - "Next connection can accept yellow blocks but not red blocks." - }, - { - "type": "test_connections_stack_yellow", - "message0": "", - "previousStatement": [ - "greenRel", - "yellowRel" - ], - "nextStatement": [ - "yellowRel", - "orangeRel" - ], - "colour": 60, - "tooltip": "Prev: yellowRel, greenRel\n" + - "Next: yellowRel, orangeRel\n" + - "Prev can connect to yellow blocks and blue blocks, but not red blocks.\n" + - "Next can connect to yellow blocks and red blocks, but not blue blocks." - }, - { - "type": "test_connections_stack_red", - "message0": "", - "previousStatement": "orangeRel", - "nextStatement": "noneNext", - "colour": 0, - "tooltip": "Prev: orangeRel\n" + - "Next: noneNext\n" + - "Prev can connect to yellow blocks, but not blue blocks." - }, - { - "type": "test_connections_stack_prev", - "message0": "", - "previousStatement": null, - "colour": '#aaaaaa', - "tooltip": "No Checks\n" + - "Can connect to any input connection." - }, - { - "type": "test_connections_statement_blue", - "message0": "%1", - "args0": [ - { - "type": "input_statement", - "name": "NAME", - "check": "greenRel" - } - ], - "previousStatement": "nonePrev", - "nextStatement": "greenRel", - "colour": 230, - "tooltip": "Prev: nonePrev\n" + - "Next: greenRel\n" + - "Statement: greenRel\n" + - "Next connection can accept yellow blocks but not red blocks.\n" + - "Statement connection can accept yellow blocks but not red blocks." - }, - { - "type": "test_connections_statement_yellow", - "message0": "%1", - "args0": [ - { - "type": "input_statement", - "name": "NAME", - "check": [ - "yellowRel", - "orangeRel" - ] - } - ], - "previousStatement": [ - "greenRel", - "yellowRel" - ], - "nextStatement": [ - "yellowRel", - "orangeRel" - ], - "colour": 60, - "tooltip": "Prev: yellowRel, greenRel\n" + - "Next: yellowRel, orangeRel\n" + - "Statement: orangeRel\n" + - "Prev can connect to yellow blocks and blue blocks, but not red" + - " blocks.\n" + - "Next can connect to yellow blocks and red blocks, but not blue" + - " blocks.\n" + - "Statement connection can accept yellow blocks and red blocks but not" + - " blue blocks.\n" - }, - { - "type": "test_connections_statement_red", - "message0": "%1", - "args0": [ - { - "type": "input_statement", - "name": "NAME", - "check": "noneNext" - } - ], - "previousStatement": "orangeRel", - "nextStatement": "noneNext", - "colour": 0, - "tooltip": "Prev: orangeRel\n" + - "Next: noneNext\n" + - "Statement: noneNext\n" + - "Prev connection can accept yellow blocks but not blue blocks.\n" + - "Statement connection accepts none." - }, - { - "type": "test_connections_statement_nonext", - "message0": "%1", - "args0": [ - { - "type": "input_statement", - "name": "NAME", - "check": [ - "yellowRel", - "orangeRel" - ] - } - ], - "previousStatement": [ - "greenRel", - "yellowRel" - ], - "colour": 60, - "tooltip": "Prev: yellowRel, greenRel\n" + - "Next: yellowRel, orangeRel\n" + - "Statement: orangeRel\n" + - "Prev can connect to yellow blocks and blue blocks, but not red" + - " blocks.\n" + - "Statement connection can accept yellow blocks and red blocks but not" + - " blue blocks.\n" - }, - { - "type": "test_connections_multistatement_1valid", - "message0": "none %1 both %2", - "args0": [ - { - "type": "input_statement", - "name": "NAME", - "check": "noneNext" - }, - { - "type": "input_statement", - "name": "NAME", - "check": [ - "yellowRel", - "orangeRel" - ] - } - ], - "previousStatement": [ - "greenRel", - "yellowRel" - ], - "colour": 60, - "tooltip": "Prev: yellowRel, greenRel\n" + - "Next: yellowRel, orangeRel\n" + - "Statement: orangeRel\n" + - "Prev can connect to yellow blocks and blue blocks, but not red" + - " blocks.\n" + - "Top Statement cannot connect to anything, except grey blocks.\n" + - "Bottom Statement connection can accept yellow blocks and red blocks" + - " but not blue blocks.\n" - }, - { - "type": "test_connections_multistatement_2valid", - "message0": "both %1 both %2", - "args0": [ - { - "type": "input_statement", - "name": "NAME", - "check": [ - "yellowRel", - "orangeRel" - ] - }, - { - "type": "input_statement", - "name": "NAME", - "check": [ - "yellowRel", - "orangeRel" - ] - } - ], - "previousStatement": [ - "greenRel", - "yellowRel" - ], - "colour": 60, - "tooltip": "Prev: yellowRel, greenRel\n" + - "Next: yellowRel, orangeRel\n" + - "Statement: orangeRel\n" + - "Prev can connect to yellow blocks and blue blocks, but not red" + - " blocks.\n" + - "Top Statement connection can accept yellow blocks and red blocks but" + - " not blue blocks.\n" + - "Bottom Statement connection can accept yellow blocks and red blocks" + - " but not blue blocks.\n" - }, - { - "type": "test_dropdowns_long", - "message0": "long: %1", - "args0": [ - { - "type": "field_dropdown", - "name": "FIELDNAME", - "options": [ - [ "first item", "ITEM1" ], - [ "second item", "ITEM2" ], - [ "third item", "ITEM3" ], - [ "fourth item", "ITEM4" ], - [ "fifth item", "ITEM5" ], - [ "sixth item", "ITEM6" ], - [ "seventh item", "ITEM7" ], - [ "eighth item", "ITEM8" ], - [ "ninth item", "ITEM9" ], - [ "tenth item", "ITEM10" ], - [ "eleventh item", "ITEM11" ], - [ "twelfth item", "ITEM12" ], - [ "thirteenth item", "ITEM13" ], - [ "fourteenth item", "ITEM14" ], - [ "fifteenth item", "ITEM15" ], - [ "sixteenth item", "ITEM16" ], - [ "seventeenth item", "ITEM17" ], - [ "eighteenth item", "ITEM18" ], - [ "nineteenth item", "ITEM19" ], - [ "twentieth item", "ITEM20" ], - [ "twenty-first item", "ITEM21" ], - [ "twenty-second item", "ITEM22" ], - [ "twenty-third item", "ITEM23" ], - [ "twenty-fourth item", "ITEM24" ], - [ "twenty-fifth item", "ITEM25" ], - [ "twenty-sixth item", "ITEM26" ], - [ "twenty-seventh item", "ITEM27" ], - [ "twenty-eighth item", "ITEM28" ], - [ "twenty-ninth item", "ITEM29" ], - [ "thirtieth item", "ITEM30" ], - [ "thirty-first item", "ITEM31" ], - [ "thirty-second item", "ITEM32" ] - ] - } - ] - }, - { - "type": "test_dropdowns_images", - "message0": "%1", - "args0": [ - { - "NOTE": "The following paths are relative to playground.html", - "type": "field_dropdown", - "name": "FIELDNAME", - "options": [ - [{"src": "media/a.png", "width": 32, "height": 32, "alt": "A"}, "A"], - [{"src": "media/b.png", "width": 32, "height": 32, "alt": "B"}, "B"], - [{"src": "media/c.png", "width": 32, "height": 32, "alt": "C"}, "C"], - [{"src": "media/d.png", "width": 32, "height": 32, "alt": "D"}, "D"], - [{"src": "media/e.png", "width": 32, "height": 32, "alt": "E"}, "E"], - [{"src": "media/f.png", "width": 32, "height": 32, "alt": "F"}, "F"], - [{"src": "media/g.png", "width": 32, "height": 32, "alt": "G"}, "G"], - [{"src": "media/h.png", "width": 32, "height": 32, "alt": "H"}, "H"], - [{"src": "media/i.png", "width": 32, "height": 32, "alt": "I"}, "I"], - [{"src": "media/j.png", "width": 32, "height": 32, "alt": "J"}, "J"], - [{"src": "media/k.png", "width": 32, "height": 32, "alt": "K"}, "K"], - [{"src": "media/l.png", "width": 32, "height": 32, "alt": "L"}, "L"], - [{"src": "media/m.png", "width": 32, "height": 32, "alt": "M"}, "M"] - ] - } - ] - }, - { - "type": "test_dropdowns_images_and_text", - "message0": "%1", - "args0": [ - { - "type": "field_dropdown", - "name": "FIELDNAME", - "options": [ - ["images and text", "IMAGES AND TEXT"], - [{"src": "media/a.png", "width": 32, "height": 32, "alt": "A"}, "A"], - [{"src": "media/b.png", "width": 32, "height": 32, "alt": "B"}, "B"], - [{"src": "media/c.png", "width": 32, "height": 32, "alt": "C"}, "C"], - [{"src": "media/d.png", "width": 32, "height": 32, "alt": "D"}, "D"], - [{"src": "media/e.png", "width": 32, "height": 32, "alt": "E"}, "E"], - [{"src": "media/f.png", "width": 32, "height": 32, "alt": "F"}, "F"], - [{"src": "media/g.png", "width": 32, "height": 32, "alt": "G"}, "G"], - [{"src": "media/h.png", "width": 32, "height": 32, "alt": "H"}, "H"], - ["xyz", "LMNOP"], - [{"src": "media/i.png", "width": 32, "height": 32, "alt": "I"}, "I"], - [{"src": "media/j.png", "width": 32, "height": 32, "alt": "J"}, "J"], - [{"src": "media/k.png", "width": 32, "height": 32, "alt": "K"}, "K"], - [{"src": "media/l.png", "width": 32, "height": 32, "alt": "L"}, "L"], - [{"src": "media/m.png", "width": 32, "height": 32, "alt": "M"}, "M"] - ] - } - ] - }, - { - "type": "test_dropdowns_in_mutator", - "message0": "dropdown mutator", - "mutator": "test_dropdown_mutator" - }, - { - "type": "test_dropdowns_in_mutator_block", - "message0": "dropdown %1", - "args0": [ - { - "type": "field_dropdown", - "name": "DROPDOWN", - "options": [ - [ "option", "ONE" ], - [ "option", "TWO" ] - ] - }, - ] - }, - { - "type": "test_fields_angle", - "message0": "angle: %1", - "args0": [ - { - "type": "field_angle", - "name": "FIELDNAME", - "angle": "90", - "alt": - { - "type": "field_label", - "text": "NO ANGLE FIELD" - } - } - ], - "style": "math_blocks", - }, - { - "type": "test_fields_text_input", - "message0": "text input %1", - "args0": [ - { - "type": "field_input", - "name": "TEXT_INPUT", - "text": "default" - } - ], - "style": "math_blocks", - "tooltip": "", - "helpUrl": "" - }, - { - "type": "test_fields_only_text_input", - "message0": "%1", - "args0": [ - { - "type": "field_input", - "name": "TEXT_INPUT", - "text": "default" - } - ], - "style": "textInput", - "tooltip": "", - "helpUrl": "", - "output": "String" - }, - { - "type": "test_fields_multilinetext", - "message0": "code %1", - "args0": [ - { - "type": "field_multilinetext", - "name": "CODE", - "text": "default1\ndefault2" - } - ], - "style": "math_blocks", - "tooltip": "test tooltip" - }, - { - "type": "test_fields_checkbox", - "message0": "checkbox %1", - "args0": [ - { - "type": "field_checkbox", - "name": "CHECKBOX", - "checked": true - } - ], - "style": "math_blocks", - "tooltip": "", - "helpUrl": "" - }, - { - "type": "test_fields_colour", - "message0": "colour %1", - "args0": [ - { - "type": "field_colour", - "name": "COLOUR", - "colour": "#ff0000" - } - ], - "style": "math_blocks", - "tooltip": "", - "helpUrl": "" - }, - { - "type": "test_fields_colour_options", - "message0": "colour options %1", - "args0": [ - { - "type": "field_colour", - "name": "COLOUR", - "colour": "#ff4040", - "colourOptions": - ['#ff4040', '#ff8080', '#ffc0c0', - '#4040ff', '#8080ff', '#c0c0ff'], - "colourTitles": - ['dark pink', 'pink', 'light pink', - 'dark blue', 'blue', 'light blue'], - "columns": 3 - } - ], - "style": "math_blocks", - "tooltip": "test tooltip" - }, - { - "type": "test_fields_variable", - "message0": "variable %1", - "args0": [ - { - "type": "field_variable", - "name": "VARIABLE", - "variable": "item" - } - ], - "style": "math_blocks", - "tooltip": "", - "helpUrl": "" - }, - { - "type": "test_fields_label_serializable", - "message0": "label serializable %1", - "args0": [ - { - "type": "field_label_serializable", - "name": "LABEL", - "text": "default" - } - ], - "style": "math_blocks", - "tooltip": "", - "helpUrl": "" - }, - { - "type": "test_fields_image", - "message0": "image %1", - "args0": [ - { - "type": "field_image", - "name": "IMAGE", - "src": "https://blockly-demo.appspot.com/static/tests/media/a.png", - "width": 32, - "height": 32, - "alt": "A" - } - ], - "colour": 230 - }, - { - "type": "test_numbers_float", - "message0": "float %1", - "args0": [ - { - "type": "field_number", - "name": "NUM", - "text": "0" - } - ], - "style": "math_blocks", - "output": "Number", - "tooltip": "A number." - }, - { - "type": "test_numbers_whole", - "message0": "precision 1 %1", - "args0": [ - { - "type": "field_number", - "name": "NUM", - "precision": 1, - "text": "0" - } - ], - "style": "math_blocks", - "output": "Number", - "tooltip": "The number should be rounded to multiples of 1" - }, - { - "type": "test_numbers_hundredths", - "message0": "precision 0.01 %1", - "args0": [ - { - "type": "field_number", - "name": "NUM", - "precision": 0.01, - "text": "0" - } - ], - "style": "math_blocks", - "output": "Number", - "tooltip": "The number should be rounded to multiples of 0.01" - }, - { - "type": "test_numbers_halves", - "message0": "precision 0.5 %1", - "args0": [ - { - "type": "field_number", - "name": "NUM", - "precision": 0.5, - "text": "0" - } - ], - "style": "math_blocks", - "output": "Number", - "tooltip": "The number should be rounded to multiples of 0.5" - }, - { - "type": "test_numbers_three_halves", - "message0": "precision 1.5 %1", - "args0": [ - { - "type": "field_number", - "name": "NUM", - "precision": 1.5, - "text": "0" - } - ], - "style": "math_blocks", - "output": "Number", - "tooltip": "The number should be rounded to multiples of 1.5" - }, - { - "type": "test_numbers_whole_bounded", - "message0": "midi note %1", - "args0": [ - { - "type": "field_number", - "name": "NOTE", - "precision": 1, - "min": 1, - "max": 127, - "text": "0" - } - ], - "style": "math_blocks", - "output": "Note", - "tooltip": "A midi note." - }, - { - "type": "test_angles_protractor", - "message0": "protractor %1", - "args0": [ - { - "type": "field_angle", - "name": "FIELDNAME", - "angle": 0, - "mode": "protractor" - } - ], - "style": "math_blocks", - "tooltip": "test tooltip" - }, - { - "type": "test_angles_compass", - "message0": "compass %1", - "args0": [ - { - "type": "field_angle", - "name": "FIELDNAME", - "angle": 0, - "mode": "compass" - } - ], - "style": "math_blocks", - "tooltip": "test tooltip" - }, - { - "type": "test_angles_clockwise", - "message0": "clockwise %1", - "args0": [ - { - "type": "field_angle", - "name": "FIELDNAME", - "angle": 0, - "clockwise": true - } - ], - "style": "math_blocks", - "tooltip": "test tooltip" - }, - { - "type": "test_angles_offset", - "message0": "offset 90 %1", - "args0": [ - { - "type": "field_angle", - "name": "FIELDNAME", - "angle": 0, - "offset": 90 - } - ], - "style": "math_blocks", - "tooltip": "test tooltip" - }, - { - "type": "test_angles_wrap", - "message0": "wrap %1", - "args0": [ - { - "type": "field_angle", - "name": "FIELDNAME", - "angle": 0, - "wrap": 180 - } - ], - "style": "math_blocks", - "tooltip": "test tooltip" - }, - { - "type": "test_angles_round_30", - "message0": "round 30 %1", - "args0": [ - { - "type": "field_angle", - "name": "FIELDNAME", - "angle": 0, - "round": 30 - } - ], - "style": "math_blocks", - "tooltip": "test tooltip" - }, - { - "type": "test_angles_round_0", - "message0": "no round %1", - "args0": [ - { - "type": "field_angle", - "name": "FIELDNAME", - "angle": 0, - "round": 0 - } - ], - "style": "math_blocks", - "tooltip": "test tooltip" - }, - { - "type": "test_images_datauri", - "message0": "Image data: URI %1", - "args0": [ - { - "type": "field_image", - "src": "data:image/png;base64,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", - "width": 50, - "height": 50, - "alt": "*" - } - ], - "style": "text_blocks" - }, - { - "type": "test_images_small", - "message0": "Image too small %1", - "args0": [ - { - "type": "field_image", - "src": "media/30px.png", - "width": 50, - "height": 50, - "alt": "*" - } - ], - "style": "text_blocks" - }, - { - "type": "test_images_large", - "message0": "Image too large %1", - "args0": [ - { - "type": "field_image", - "src": "media/200px.png", - "width": 50, - "height": 50, - "alt": "*" - } - ], - "style": "text_blocks" - }, - { - "type": "test_images_fliprtl", - "message0": "Image flipped RTL %1", - "args0": [ - { - "type": "field_image", - "src": "media/arrow.png", - "width": 50, - "height": 50, - "alt": "*", - "flipRtl": true - } - ], - "colour": 160 - }, - { - "type": "test_images_missing", - "message0": "Image missing %1", - "args0": [ - { - "type": "field_image", - "src": "missing.png", - "width": 50, - "height": 50, - "alt": "*" - } - ], - "style": "text_blocks" - }, - { - "type": "test_images_many_icons", - "message0": "Lots of network icons: %1 %2 %3 %4 %5 %6 %7 %8 %9 %10 %11 %12 %13 %14 %15 %16 %17 %18", - "args0": [ - { - "type": "input_dummy" - }, - { - "type": "field_image", - "src": "https://blockly-demo.appspot.com/static/tests/media/a.png", - "width": 32, - "height": 32, - "alt": "A" - }, - { - "type": "field_image", - "src": "https://blockly-demo.appspot.com/static/tests/media/b.png", - "width": 32, - "height": 32, - "alt": "B" - }, - { - "type": "field_image", - "src": "https://blockly-demo.appspot.com/static/tests/media/c.png", - "width": 32, - "height": 32, - "alt": "C" - }, - { - "type": "field_image", - "src": "https://blockly-demo.appspot.com/static/tests/media/d.png", - "width": 32, - "height": 32, - "alt": "D" - }, - { - "type": "field_image", - "src": "https://blockly-demo.appspot.com/static/tests/media/e.png", - "width": 32, - "height": 32, - "alt": "E" - }, - { - "type": "field_image", - "src": "https://blockly-demo.appspot.com/static/tests/media/f.png", - "width": 32, - "height": 32, - "alt": "F" - }, - { - "type": "field_image", - "src": "https://blockly-demo.appspot.com/static/tests/media/g.png", - "width": 32, - "height": 32, - "alt": "G" - }, - { - "type": "field_image", - "src": "https://blockly-demo.appspot.com/static/tests/media/h.png", - "width": 32, - "height": 32, - "alt": "H" - }, - { - "type": "input_dummy" - }, - { - "type": "field_image", - "src": "https://blockly-demo.appspot.com/static/tests/media/a.png", - "width": 32, - "height": 32, - "alt": "A" - }, - { - "type": "field_image", - "src": "https://blockly-demo.appspot.com/static/tests/media/b.png", - "width": 32, - "height": 32, - "alt": "B" - }, - { - "type": "field_image", - "src": "https://blockly-demo.appspot.com/static/tests/media/c.png", - "width": 32, - "height": 32, - "alt": "C" - }, - { - "type": "field_image", - "src": "https://blockly-demo.appspot.com/static/tests/media/d.png", - "width": 32, - "height": 32, - "alt": "D" - }, - { - "type": "field_image", - "src": "https://blockly-demo.appspot.com/static/tests/media/e.png", - "width": 32, - "height": 32, - "alt": "E" - }, - { - "type": "field_image", - "src": "https://blockly-demo.appspot.com/static/tests/media/f.png", - "width": 32, - "height": 32, - "alt": "F" - }, - { - "type": "field_image", - "src": "https://blockly-demo.appspot.com/static/tests/media/g.png", - "width": 32, - "height": 32, - "alt": "G" - }, - { - "type": "field_image", - "src": "https://blockly-demo.appspot.com/static/tests/media/h.png", - "width": 32, - "height": 32, - "alt": "H" - } - ], - "style": "text_blocks" - }, - { - "type": "test_mutators_noflyout", - "message0": "noflyout mutator", - "mutator": "test_noflyout_mutator", - "colour": "#000000" - }, - { - "type": "test_mutators_noflyout_block", - "message0": "colour %1", - "args0": [ - { - "type": "field_colour", - "name": "COLOUR", - "colour": "#ff0000" - } - ], - "style": "colour_blocks" - }, - { - "type": "test_style_hat", - "message0": "Hat block (event)", - "nextStatement": null, - "style": "hat_blocks" - }, - { - "type": "test_style_hex1", - "message0": "Block color: Bright purple %1 %2 %3 %4", - "args0": [ - { - "type": "field_input", - "name": "TEXT", - "text": "#992aff" - }, - { - "type": "field_dropdown", - "name": "DROPDOWN", - "options": [ - [ "option", "ONE" ], - [ "option", "TWO" ] - ] - }, - { - "type": "field_checkbox", - "name": "NAME", - "checked": true - }, - { - "type": "input_value", - "name": "NAME" - } - ], - "previousStatement": null, - "nextStatement": null, - "colour": "#992aff" - }, - { - "type": "test_style_hex2", - "message0": "Block color: White %1 %2 %3 %4", - "args0": [ - { - "type": "field_input", - "name": "TEXT", - "text": "#fefefe" - }, - { - "type": "field_dropdown", - "name": "DROPDOWN", - "options": [ - [ "option", "ONE" ], - [ "option", "TWO" ] - ] - }, - { - "type": "field_checkbox", - "name": "NAME", - "checked": true - }, - { - "type": "input_value", - "name": "NAME" - } - ], - "previousStatement": null, - "nextStatement": null, - "colour": "#fefefe" - }, - { - "type": "test_style_hex3", - "message0": "Block color: Black %1 %2 %3 %4", - "args0": [ - { - "type": "field_input", - "name": "TEXT", - "text": "#010101" - }, - { - "type": "field_dropdown", - "name": "DROPDOWN", - "options": [ - [ "option", "ONE" ], - [ "option", "TWO" ] - ] - }, - { - "type": "field_checkbox", - "name": "NAME", - "checked": true - }, - { - "type": "input_value", - "name": "NAME" - } - ], - "previousStatement": null, - "nextStatement": null, - "colour": "#010101" - }, - { - "type": "test_style_no_colour", - "message0": "Block color: unset" - }, - { - "type": "test_style_hex4", - "message0": "Block color: #RRGGBBAA (invalid)", - "colour": "#992aff99" - }, - { - "type": "test_style_hex5", - "message0": "Block color: #RRGGBB (invalid)", - "colour": "#NotHex" - }, - { - "type": "test_style_emoji", - "message0": "Robot Face: \uD83E\uDD16", - "colour": "#AAAAAA" - } -]); // END JSON EXTRACT (Do not delete this comment.) - -Blockly.Blocks['test_images_clickhandler'] = { - init: function() { - this.appendDummyInput() - .appendField("Image click handler") - .appendField(new Blockly.FieldImage( - "https://blockly-demo.appspot.com/static/tests/media/a.png", 32, 32, - "image with click handler", this.onClick_), "IMAGE"); - this.setStyle('text_blocks'); - }, - onClick_: function() { - alert('Image clicked'); - } -}; - -Blockly.Blocks['test_validators_dispose_block'] = { - init: function() { - this.appendDummyInput() - .appendField("dispose block") - .appendField(new Blockly.FieldTextInput("default", this.validate), "INPUT"); - this.setColour(230); - this.setCommentText('Any changes to the text cause the block to be disposed'); - }, - - validate: function(newValue) { - if (newValue != "default") { - this.getSourceBlock().dispose(true); - } - } -}; - -Blockly.Blocks['test_validators_text_null'] = { - init: function() { - this.appendDummyInput() - .appendField("always null") - .appendField(new Blockly.FieldTextInput("default", this.validate), "INPUT"); - this.setColour(230); - this.setCommentText('All input validates to null (invalid). The display' + - ' text will remain the input text, but the value should be the default' + - ' text. The input should be red after the first keystroke.'); - }, - - validate: function(newValue) { - return null; - } -}; -Blockly.Blocks['test_validators_text_A'] = { - init: function() { - this.appendDummyInput() - .appendField("remove \'a\'") - .appendField(new Blockly.FieldTextInput("default", this.validate), "INPUT"); - this.setColour(230); - this.setCommentText('All \'a\' characters are removed from field value.' + - ' The display text will include invalid \'a\' characters while the' + - ' field is being edited, but the value will not.'); - }, - - validate: function(newValue) { - return newValue.replace(/\a/g, ''); - } -}; -Blockly.Blocks['test_validators_text_B'] = { - init: function() { - this.appendDummyInput() - .appendField("\'b\' -> null") - .appendField(new Blockly.FieldTextInput("default", this.validate), "INPUT"); - this.setColour(230); - this.setCommentText('Upon detecting a \'b\' character the input will' + - ' validated to null (invalid). Upon removal it should revert to being' + - ' valid. The display text will remain the input text, but if the input' + - ' text is invalid the value should be the default text.'); - }, - - validate: function(newValue) { - if (newValue.indexOf('b') != -1) { - return null; - } - return newValue; - } -}; - -Blockly.Blocks['test_validators_angle_null'] = { - init: function() { - this.appendDummyInput() - .appendField("always null") - .appendField(new Blockly.FieldAngle(90, this.validate), "INPUT"); - this.setColour(230); - this.setCommentText('All input validates to null (invalid). The field' + - ' will display the input while the field is being edited (this' + - ' includes the text and the graphic), but the value should be the' + - ' default value. The input should be red after the first' + - ' keystroke.'); - }, - - validate: function(newValue) { - return null; - } -}; -Blockly.Blocks['test_validators_angle_mult30_force'] = { - init: function() { - this.appendDummyInput() - .appendField("force mult of 30") - .appendField(new Blockly.FieldAngle(90, this.validate), "INPUT"); - this.setColour(230); - this.setCommentText('The input value will be rounded to the nearest' + - ' multiple of 30. The field will display the input while the field is' + - ' being edited (this includes the text and the graphic), but the value' + - ' will be the validated (rounded) value. Note: If you want to do' + - ' rounding this is not the proper way, use the ROUND property of the' + - ' field angle instead.'); - }, - - validate: function(newValue) { - return Math.round(newValue / 30) * 30; - } -}; -Blockly.Blocks['test_validators_angle_mult30_null'] = { - init: function() { - this.appendDummyInput() - .appendField("not mult of 30 -> null") - .appendField(new Blockly.FieldAngle(90, this.validate), "INPUT"); - this.setColour(230); - this.setCommentText('If the input value is not a multiple of 30, the' + - ' input will validated to null (invalid). The field will display the' + - ' input while the field is being edited (this includes the text and' + - ' the graphic), but if the input value is invalid the value should be' + - ' the default value.'); - }, - - validate: function(newValue) { - if (newValue % 30 != 0) { - return null; - } - return newValue; - } -}; - -Blockly.Blocks['test_validators_checkbox_null'] = { - init: function() { - this.appendDummyInput() - .appendField("always null") - .appendField(new Blockly.FieldCheckbox(true, this.validate), "INPUT"); - this.setColour(230); - this.setCommentText('The new input always validates to null (invalid).' + - ' This means that the field value should not change.'); - }, - - validate: function(newValue) { - return null; - } -}; -Blockly.Blocks['test_validators_checkbox_match'] = { - init: function() { - this.appendDummyInput() - .appendField("force match") - .appendField(new Blockly.FieldCheckbox(true), "MATCH") - .appendField(new Blockly.FieldCheckbox(true, this.validate), "INPUT"); - this.setColour(230); - this.setCommentText('The validator for this block only works on the' + - ' end-most checkbox. The validator will always return the value of the' + - ' start-most checkbox. Therefor they should always match.') - }, - - validate: function(newValue) { - return this.sourceBlock_.getFieldValue('MATCH'); - } -}; -Blockly.Blocks['test_validators_checkbox_not_match_null'] = { - init: function() { - this.appendDummyInput() - .appendField("not match -> null") - .appendField(new Blockly.FieldCheckbox(true), "MATCH") - .appendField(new Blockly.FieldCheckbox(true, this.validate), "INPUT"); - this.setColour(230); - this.setCommentText('The validator for this block only works on the' + - ' end-most checkbox. If the new value does not match the value of the' + - ' start-most checkbox, it will return null (invalid), which means the' + - ' field value should not change. Therefore they should always match.'); - }, - - validate: function(newValue) { - if (this.sourceBlock_.getFieldValue('MATCH') != newValue) { - return null; - } - return newValue; - } -}; - -Blockly.Blocks['test_validators_colour_null'] = { - init: function() { - var colourField = new Blockly.FieldColour('#ff0000', this.validate); - colourField.setColours([ - '#ffffff', '#ffdcdc', '#ffb4b4','#ff8c8c','#ff6464','#ff3c3c','#ff1414', - '#00ffff', '#00dcdc', '#00b4b4','#008c8c','#006464','#003c3c','#001414']); - - this.appendDummyInput() - .appendField("always null") - .appendField(colourField, "INPUT"); - this.setColour(230); - this.setCommentText('All input validates to null (invalid). This means' + - ' the field value should not change.'); - }, - - validate: function(newValue) { - return null; - } -}; -Blockly.Blocks['test_validators_colour_force_red'] = { - init: function() { - var colourField = new Blockly.FieldColour('#ff0000', this.validate); - colourField.setColours([ - '#ffffff', '#ffdcdc', '#ffb4b4','#ff8c8c','#ff6464','#ff3c3c','#ff1414', - '#00ffff', '#00dcdc', '#00b4b4','#008c8c','#006464','#003c3c','#001414']); - - this.appendDummyInput() - .appendField("force full red") - .appendField(colourField, "INPUT"); - this.setColour(230); - this.setCommentText('The input will have its red value replaced with' + - ' full red.'); - }, - - validate: function(newValue) { - return '#ff' + newValue.substr(3, 4); - } -}; -Blockly.Blocks['test_validators_colour_red_null'] = { - init: function() { - var colourField = new Blockly.FieldColour('#ff0000', this.validate); - colourField.setColours([ - '#ffffff', '#ffdcdc', '#ffb4b4','#ff8c8c','#ff6464','#ff3c3c','#ff1414', - '#00ffff', '#00dcdc', '#00b4b4','#008c8c','#006464','#003c3c','#001414']); - - this.appendDummyInput() - .appendField("not red -> null") - .appendField(colourField, "INPUT"); - this.setColour(230); - this.setCommentText('If the input does not have full red, the input will' + - ' validate to null (invalid). Otherwise it will return the input value'); - }, - - validate: function(newValue) { - if (newValue.substr(1, 2) != 'ff') { - return null; - } - return newValue; - } -}; - -Blockly.Blocks['test_validators_dropdown_null'] = { - init: function() { - this.appendDummyInput() - .appendField("always null") - .appendField(new Blockly.FieldDropdown([ - ["1a","1A"], ["1b","1B"], ["1c","1C"], - ["2a","2A"], ["2b","2B"], ["2c","2C"]], this.validate), "INPUT"); - this.setColour(230); - this.setCommentText('All input validates to null (invalid). This means' + - ' the field value should not change.'); - }, - - validate: function(newValue) { - return null; - } -}; -Blockly.Blocks['test_validators_dropdown_force_1s'] = { - init: function() { - this.appendDummyInput() - .appendField("force 1s") - .appendField(new Blockly.FieldDropdown([ - ["1a","1A"], ["1b","1B"], ["1c","1C"], - ["2a","2A"], ["2b","2B"], ["2c","2C"]], this.validate), "INPUT"); - this.setColour(230); - this.setCommentText('The input\'s value will always change to start with' + - ' 1.'); - }, - - validate: function(newValue) { - return '1' + newValue.charAt(1); - } -}; -Blockly.Blocks['test_validators_dropdown_1s_null'] = { - init: function() { - this.appendDummyInput() - .appendField("not 1s -> null") - .appendField(new Blockly.FieldDropdown([ - ["1a","1A"], ["1b","1B"], ["1c","1C"], - ["2a","2A"], ["2b","2B"], ["2c","2C"]], this.validate), "INPUT"); - this.setColour(230); - this.setCommentText('If the input does not start with 1, the input will' + - ' validate to null (invalid). Otherwise it will return the input value.'); - }, - - validate: function(newValue) { - if (newValue.charAt(0) != '1') { - return null; - } - return newValue; - } -}; - -Blockly.Blocks['test_validators_number_null'] = { - init: function() { - this.appendDummyInput() - .appendField("always null") - .appendField(new Blockly.FieldNumber(123, null, null, null, this.validate), "INPUT"); - this.setColour(230); - this.setCommentText('All input validates to null (invalid). The field' + - ' will display the input while the field is being edited, but the value' + - ' should be the default value. The input should be red after the first' + - ' keystroke.'); - }, - - validate: function(newValue) { - return null; - } -}; -Blockly.Blocks['test_validators_number_mult10_force'] = { - init: function() { - this.appendDummyInput() - .appendField("force mult of 10") - .appendField(new Blockly.FieldNumber(123, null, null, null, this.validate), "INPUT"); - this.setColour(230); - this.setCommentText('The input value will be rounded to the nearest' + - ' multiple of 10. The field will display the input while the field is' + - ' being edited, but the value should be the validated (rounded) value.' + - ' Note: If you want to do rounding this is not the proper way, use the' + - ' precision option of the number field constructor instead.'); - }, - - validate: function(newValue) { - return Math.round(newValue / 10) * 10; - } -}; -Blockly.Blocks['test_validators_number_mult10_null'] = { - init: function() { - this.appendDummyInput() - .appendField("not mult of 10 -> null") - .appendField(new Blockly.FieldNumber(123, null, null, null, this.validate), "INPUT"); - this.setColour(230); - this.setCommentText('If the input value is not a multiple of 10, the' + - ' input will validate to null (invalid). The field will display the' + - ' input while the field is being edited, but if the input value is' + - ' invalid the value should be the default value.'); - }, - - validate: function(newValue) { - if (newValue % 10 != 0) { - return null; - } - return newValue; - } -}; - -Blockly.Blocks['test_validators_variable_null'] = { - init: function() { - this.appendDummyInput() - .appendField("always null") - .appendField(new Blockly.FieldVariable('1a', this.validate), "INPUT"); - this.setColour(230); - this.setCommentText('All ids validate to null (invalid). This means' + - ' the variable should not change.'); - }, - - validate: function(newValue) { - return null; - } -}; -Blockly.Blocks['test_validators_variable_force_1s'] = { - init: function() { - this.appendDummyInput() - .appendField("force 1s") - .appendField(new Blockly.FieldVariable('1a', this.validate), "INPUT"); - this.setColour(230); - this.setCommentText('The id will always change to start with 1.'); - }, - - validate: function(newValue) { - return '1' + newValue.charAt(1); - } -}; -Blockly.Blocks['test_validators_variable_1s_null'] = { - init: function() { - this.appendDummyInput() - .appendField("not 1s -> null") - .appendField(new Blockly.FieldVariable('1a', this.validate), "INPUT"); - this.setColour(230); - this.setCommentText('If the id does not start with 1, the id will' + - ' validate to null (invalid). Otherwise it will return the id.'); - }, - - validate: function(newValue) { - if (newValue.charAt(0) != '1') { - return null; - } - return newValue; - } -}; - -Blockly.Blocks['test_basic_empty_with_mutator'] = { - init: function() { - this.setMutator(new Blockly.Mutator(['math_number'])); - } -}; - -/** - * Mutator methods added to the test_mutators_noflyout block. - * @mixin - * @augments Blockly.Block - * @package - * @readonly - */ -var NO_FLYOUT_MUTATOR = { - /** - * Create XML to represent the block mutation. - * @return {Element} XML storage element. - * @this {Blockly.Block} - */ - mutationToDom: function() { - var container = Blockly.utils.xml.createElement('mutation'); - container.setAttribute('colour', this.colour_); - this.setColour(this.colour_); - return container; - }, - /** - * Restore a block from XML. - * @param {!Element} xmlElement XML storage element. - * @this {Blockly.Block} - */ - domToMutation: function(xmlElement) { - this.colour_ = xmlElement.getAttribute('colour'); - }, - /** - * Populate the mutator's dialog with this block's components. - * @param {!Blockly.Workspace} workspace Mutator's workspace. - * @return {!Blockly.Block} Root block in mutator. - * @this {Blockly.Block} - */ - decompose: function(workspace) { - var containerBlock = workspace.newBlock('test_mutators_noflyout_block'); - containerBlock.getField('COLOUR').setValue(this.colour_); - containerBlock.initSvg(); - return containerBlock; - }, - /** - * Reconfigure this block based on the mutator dialog's components. - * @param {!Blockly.Block} containerBlock Root block in mutator. - * @this {Blockly.Block} - */ - compose: function(containerBlock) { - this.colour_ = containerBlock.getFieldValue('COLOUR'); - this.setColour(this.colour_); - }, -}; - -/** - * Register custom mutator used by the test_mutators_noflyout block. - */ -Blockly.Extensions.registerMutator('test_noflyout_mutator', - NO_FLYOUT_MUTATOR, null, []); - -Blockly.Blocks['test_dropdowns_dynamic'] = { - init: function() { - var dropdown = new Blockly.FieldDropdown(this.dynamicOptions); - this.appendDummyInput() - .appendField('dynamic') - .appendField(dropdown, 'OPTIONS'); - }, - - dynamicOptions: function() { - if (!Blockly.TestBlocks.dynamicDropdownOptions_.length) { - return [['', 'OPTION0']]; - } - return Blockly.TestBlocks.dynamicDropdownOptions_; - } -}; - -/** - * An array of options for the dynamic dropdown. - * @type {!Array.} - * @private - */ -Blockly.TestBlocks.dynamicDropdownOptions_ = []; - -/** - * Handles "add option" button in the field test category. This will prompt - * the user for an option to add. - * @package - */ -Blockly.TestBlocks.addDynamicDropdownOption = function() { - Blockly.prompt('Add an option?', - 'option ' + Blockly.TestBlocks.dynamicDropdownOptions_.length, - function(text) { - if (text) { - // Do not remove this log! Helps you know if it was added correctly. - console.log('Adding option: ' + text); - // The option is an array containing human-readable text and a - // language-neutral id. - Blockly.TestBlocks.dynamicDropdownOptions_.push( - [text, 'OPTION' + Blockly.TestBlocks.dynamicDropdownOptions_.length]); - } - }) -}; - -/** - * Handles "remove option" button in the field test category. This will prompt - * the user for an option to remove. May remove multiple options with the - * same name. - * @package - */ -Blockly.TestBlocks.removeDynamicDropdownOption = function() { - var defaultText = Blockly.TestBlocks.dynamicDropdownOptions_[0] ? - Blockly.TestBlocks.dynamicDropdownOptions_[0][0] : ''; - Blockly.prompt('Remove an option?', defaultText, function(text) { - for (var i = 0, option; - option = Blockly.TestBlocks.dynamicDropdownOptions_[i]; - i++) { - // The option is an array containing human-readable text and a - // language-neutral id, we'll compare against the human-readable text. - if (option[0] == text) { - // Do not remove this log! Helps you know if it was removed correctly. - console.log('Removing option: ' + text); - Blockly.TestBlocks.dynamicDropdownOptions_.splice(i, 1); - } - } - }) -}; - -Blockly.Blocks['test_dropdowns_dynamic_random'] = { - init: function() { - var dropdown = new Blockly.FieldDropdown(this.dynamicOptions); - this.appendDummyInput() - .appendField('dynamic random') - .appendField(dropdown, 'OPTIONS'); - }, - - dynamicOptions: function() { - var random = Math.floor(Math.random() * 10) + 1; - var options = []; - for (var i = 0; i < random; i++) { - options.push([String(i), String(i)]); - } - return options; - } -}; - -/** - * Mutator methods added to the test_dropdowns_in_mutator block. - * @mixin - * @augments Blockly.Block - * @package - * @readonly - */ -var DROPDOWN_MUTATOR = { - /** - * Create XML to represent the block mutation. - * @return {Element} XML storage element. - * @this {Blockly.Block} - */ - mutationToDom: function() { - var container = Blockly.utils.xml.createElement('mutation'); - return container; - }, - /** - * Restore a block from XML. - * @param {!Element} _xmlElement XML storage element. - * @this {Blockly.Block} - */ - domToMutation: function(_xmlElement) { - }, - /** - * Populate the mutator's dialog with this block's components. - * @param {!Blockly.Workspace} workspace Mutator's workspace. - * @return {!Blockly.Block} Root block in mutator. - * @this {Blockly.Block} - */ - decompose: function(workspace) { - var containerBlock = workspace.newBlock('test_dropdowns_in_mutator_block'); - containerBlock.initSvg(); - - return containerBlock; - }, - /** - * Reconfigure this block based on the mutator dialog's components. - * @param {!Blockly.Block} _containerBlock Root block in mutator. - * @this {Blockly.Block} - */ - compose: function(_containerBlock) { - }, -}; - -/** - * Register custom mutator used by the test_dropdowns_in_mutator block. - */ -Blockly.Extensions.registerMutator('test_dropdown_mutator', - DROPDOWN_MUTATOR, null, ['test_dropdowns_in_mutator_block']); - -/** - * Handles "insert" button in the connection row test category. This will insert - * a group of test blocks connected in a row. - * @package - */ -Blockly.TestBlocks.insertConnectionRows = function(button) { - var workspace = button.getTargetWorkspace(); - Blockly.Xml.domToWorkspace(Blockly.Xml.textToDom( - '\n' + - ' \n' + - ' \n' + - ' \n' + - ' \n' + - ' \n' + - ' \n' + - ' \n' + - ' \n' + - ' \n' + - ' \n' + - ' \n' + - ' \n' + - ' \n' + - ' \n' + - ' \n' + - ' \n' + - ' \n' + - ' \n' + - ' \n' + - ' \n' + - ' \n' + - '' - ), workspace) -}; - -/** - * Handles "insert" button in the connection stack test category. This will - * insert a group of test blocks connected in a stack. - * @package - */ -Blockly.TestBlocks.insertConnectionStacks = function(button) { - var workspace = button.getTargetWorkspace(); - Blockly.Xml.domToWorkspace(Blockly.Xml.textToDom( - '\n' + - ' \n' + - ' \n' + - ' \n' + - ' \n' + - ' \n' + - ' \n' + - ' \n' + - ' \n' + - ' \n' + - ' \n' + - ' \n' + - ' \n' + - ' \n' + - ' \n' + - ' \n' + - ' \n' + - ' \n' + - ' \n' + - ' \n' + - ' \n' + - ' \n' + - '' - ), workspace); -}; - -/** - * Handles "insert" button in the connection statement test category. This will - * insert a group of test blocks connected as statements. - * @package - */ -Blockly.TestBlocks.insertConnectionStatements = function(button) { - var workspace = button.getTargetWorkspace(); - Blockly.Xml.domToWorkspace(Blockly.Xml.textToDom( - '\n' + - ' \n' + - ' \n' + - ' \n' + - ' \n' + - ' \n' + - ' \n' + - ' \n' + - ' \n' + - ' \n' + - ' \n' + - ' \n' + - ' \n' + - ' \n' + - '' - ), workspace); -}; diff --git a/tests/compile/compile.sh b/tests/compile/compile.sh index 232ada8c71e..c916eba5aa7 100755 --- a/tests/compile/compile.sh +++ b/tests/compile/compile.sh @@ -1,4 +1,18 @@ #!/bin/bash +# +# Deprecation warning: (July 2020) +# This advanced compilation test script has been deprecated in favour of +# npm run test:compile:advanced +# +# The script will be removed from Blockly core in Q4 of 2020. +# +echo "Deprecation warning: (July 2020)" +echo "This advanced compilation test script has been deprecated in favour of" +echo " npm run test:compile:advanced" +echo "" +echo "The script will be removed from Blockly core in Q4 of 2020." +echo "" + echo "Executing compile.sh from $(pwd)" # Find the Blockly project root if pwd is the root @@ -57,7 +71,6 @@ tempPath="$BLOCKLY_ROOT/temp_core" corePath="$BLOCKLY_ROOT/core/*" mkdir $tempPath cp $corePath $tempPath -cp "$BLOCKLY_ROOT/tests/compile/test_blocks.js" "$tempPath/test_blocks.js" # Copy over all files in core and any subdirectories to the temp_core directory. for dir in "$corePath/" ; do # For all files in the directory and any subdirectories rename them to diff --git a/tests/compile/main.js b/tests/compile/main.js index d15932c44d7..e4e6445e797 100644 --- a/tests/compile/main.js +++ b/tests/compile/main.js @@ -20,7 +20,6 @@ goog.require('Blockly.Constants.Colour'); goog.require('Blockly.Constants.Variables'); goog.require('Blockly.Constants.VariablesDynamic'); goog.require('Blockly.Blocks.procedures'); -goog.require('Blockly.TestBlocks') Main.init = function() { Blockly.inject('blocklyDiv', { diff --git a/tests/generators/golden/generated.py b/tests/generators/golden/generated.py index 8120ae89900..7ec405a17b2 100644 --- a/tests/generators/golden/generated.py +++ b/tests/generators/golden/generated.py @@ -226,7 +226,7 @@ def test_count_by(): x_start = float(1 + 0) x_end = float(8 + 0) x_inc = float(1 - 2) - for x in (x_start <= x_end) and upRange(x_start, x_end, 1 - 2) or downRange(x_start, x_end, 1 - 2): + for x in (x_start <= x_end) and upRange(x_start, x_end, x_inc) or downRange(x_start, x_end, x_inc): loglist.append(x) assertEquals(loglist, [1, 2, 3, 4, 5, 6, 7, 8], 'count up non-trivial ints') loglist = [] @@ -239,7 +239,7 @@ def test_count_by(): x_start3 = float(5 + 0.5) x_end3 = float(1 + 0) x_inc2 = float(1 + 0) - for x in (x_start3 <= x_end3) and upRange(x_start3, x_end3, 1 + 0) or downRange(x_start3, x_end3, 1 + 0): + for x in (x_start3 <= x_end3) and upRange(x_start3, x_end3, x_inc2) or downRange(x_start3, x_end3, x_inc2): loglist.append(x) assertEquals(loglist, [5.5, 4.5, 3.5, 2.5, 1.5], 'count with floats') diff --git a/tests/generators/run_generators_in_browser.js b/tests/generators/run_generators_in_browser.js index eb150408201..0a1692a7cdd 100644 --- a/tests/generators/run_generators_in_browser.js +++ b/tests/generators/run_generators_in_browser.js @@ -39,9 +39,10 @@ async function runLangGeneratorInBrowser(browser, filename, codegenFn) { */ async function runGeneratorsInBrowser() { var options = { - capabilities: { - browserName: 'firefox' - } + capabilities: { + browserName: 'firefox' + }, + path: '/wd/hub' }; // Run in headless mode on Travis. if (process.env.TRAVIS_CI) { diff --git a/tests/generators/variables.xml b/tests/generators/variables.xml index 9d5303294ed..a95ec893203 100644 --- a/tests/generators/variables.xml +++ b/tests/generators/variables.xml @@ -63,6 +63,6 @@ naked - Intentionally non-connected variable. + Intentionally non-connected variable. diff --git a/tests/mocha/.eslintrc.json b/tests/mocha/.eslintrc.json index 705a79397d7..2b1d412ba2e 100644 --- a/tests/mocha/.eslintrc.json +++ b/tests/mocha/.eslintrc.json @@ -1,4 +1,5 @@ { + "parser": "babel-eslint", "env": { "browser": true, "mocha": true @@ -6,19 +7,68 @@ "globals": { "chai": false, "sinon": false, + "addBlockTypeToCleanup": true, + "addMessageToCleanup": true, "assertArrayEquals": true, + "assertDeprecationWarningCall": true, + "assertEventEquals": true, + "assertEventFired": true, + "assertEventNotFired": true, + "assertNthCallEventArgEquals": true, + "assertSingleDeprecationWarningCall": true, "assertVariableValues": true, + "assertNoWarnings": true, + "assertWarnings": true, "captureWarnings": true, + "createDeprecationWarningStub": true, + "createRenderedBlock": true, "createTestBlock": true, + "defineBasicBlockWithField": true, "defineRowBlock": true, "defineStackBlock": true, "defineStatementBlock": true, - "createEventsFireStub": true, - "testAWorkspace": true, - "testHelpers" : true, + "dispatchPointerEvent": true, + "createFireChangeListenerSpy": true, + "createGenUidStubWithReturns": true, + "getBasicToolbox": true, + "getCategoryJSON": true, + "getChildItem": true, + "getCollapsibleItem": true, + "getDeeplyNestedJSON": true, + "getInjectedToolbox": true, + "getNonCollapsibleItem": true, + "getSeparator": true, "getSimpleJSON": true, "getXmlArray": true, - "getCategoryJSON": true + "sharedTestSetup": true, + "sharedTestTeardown": true, + "simulateClick": true, + "testAWorkspace": true, + "testHelpers": true, + "workspaceTeardown": true + }, + "rules": { + "no-unused-vars": ["off"], + "es5/no-arrow-functions": ["off"], + "es5/no-binary-and-octal-literals": ["off"], + "es5/no-block-scoping": ["off"], + "es5/no-classes": ["off"], + "es5/no-computed-properties": ["off"], + "es5/no-default-parameters": ["off"], + "es5/no-destructuring": ["off"], + "es5/no-es6-methods": ["off"], + "es5/no-es6-static-methods": ["off"], + "es5/no-for-of": ["off"], + "es5/no-generators": ["off"], + "es5/no-modules": ["off"], + "es5/no-object-super": ["off"], + "es5/no-rest-parameters": ["off"], + "es5/no-shorthand-properties": ["off"], + "es5/no-spread": ["off"], + "es5/no-template-literals": ["off"], + "es5/no-typeof-symbol": ["off"], + "es5/no-unicode-code-point-escape": ["off"], + "es5/no-unicode-regex": ["off"] }, "extends": "../../.eslintrc.json" } diff --git a/tests/mocha/.mocharc.js b/tests/mocha/.mocharc.js new file mode 100644 index 00000000000..3c156db3e95 --- /dev/null +++ b/tests/mocha/.mocharc.js @@ -0,0 +1,7 @@ +'use strict'; + +module.exports = { + ui: 'tdd', + file: '../blockly_uncompressed.js', + reporter: 'landing' +}; diff --git a/tests/mocha/astnode_test.js b/tests/mocha/astnode_test.js index 793bdcf9ab5..c5169936ec4 100644 --- a/tests/mocha/astnode_test.js +++ b/tests/mocha/astnode_test.js @@ -6,6 +6,7 @@ suite('ASTNode', function() { setup(function() { + sharedTestSetup.call(this); Blockly.defineBlocksWithJsonArray([{ "type": "input_statement", "message0": "%1 %2 %3 %4", @@ -87,15 +88,9 @@ suite('ASTNode', function() { fieldWithOutput: fieldWithOutput, valueInput: valueInput }; - sinon.stub(Blockly, "getMainWorkspace").returns(new Blockly.Workspace()); }); teardown(function() { - delete Blockly.Blocks['input_statement']; - delete Blockly.Blocks['field_input']; - delete Blockly.Blocks['value_input']; - - this.workspace.dispose(); - sinon.restore(); + sharedTestTeardown.call(this); }); suite('HelperFunctions', function() { @@ -286,7 +281,6 @@ suite('ASTNode', function() { "helpUrl": "", "nextStatement": null }]); - var noNextConnection = this.workspace.newBlock('top_connection'); var fieldAndInputs = this.workspace.newBlock('fields_and_input'); var twoFields = this.workspace.newBlock('two_fields'); @@ -309,27 +303,6 @@ suite('ASTNode', function() { var outputNextBlock = this.workspace.newBlock('output_next'); this.blocks.secondBlock = secondBlock; this.blocks.outputNextBlock = outputNextBlock; - - - }); - teardown(function() { - delete this.blocks.noNextConnection; - delete this.blocks.fieldAndInputs; - delete this.blocks.twoFields; - delete this.blocks.fieldAndInputs2; - delete this.blocks.noPrevConnection; - delete this.blocks.dummyInput; - delete this.blocks.dummyInputValue; - delete this.blocks.fieldWithOutput2; - - delete Blockly.Blocks['output_next']; - delete Blockly.Blocks['fields_and_input2']; - delete Blockly.Blocks['two_fields']; - delete Blockly.Blocks['fields_and_input']; - delete Blockly.Blocks['top_connection']; - delete Blockly.Blocks['start_block']; - delete Blockly.Blocks['dummy_input']; - delete Blockly.Blocks['dummy_inputValue']; }); suite('Next', function() { setup(function() { @@ -338,7 +311,7 @@ suite('ASTNode', function() { this.blocks.singleBlock = singleBlock; }); teardown(function() { - delete this.blocks.singleBlock; + workspaceTeardown.call(this, this.singleBlockWorkspace); }); test('fromPreviousToBlock', function() { @@ -538,7 +511,7 @@ suite('ASTNode', function() { this.emptyWorkspace = new Blockly.Workspace(); }); teardown(function() { - delete this.emptyWorkspace; + workspaceTeardown.call(this, this.emptyWorkspace); }); test('fromInputToOutput', function() { diff --git a/tests/mocha/block_test.js b/tests/mocha/block_test.js index 3375c57bbc9..fc78017fcbf 100644 --- a/tests/mocha/block_test.js +++ b/tests/mocha/block_test.js @@ -6,6 +6,7 @@ suite('Blocks', function() { setup(function() { + sharedTestSetup.call(this, {fireEventsNow: false}); this.workspace = new Blockly.Workspace(); Blockly.defineBlocksWithJsonArray([ { @@ -43,11 +44,7 @@ suite('Blocks', function() { }]); }); teardown(function() { - this.workspace.dispose(); - delete Blockly.Blocks['empty_block']; - delete Blockly.Blocks['stack_block']; - delete Blockly.Blocks['row_block']; - delete Blockly.Blocks['statement_block']; + sharedTestTeardown.call(this); }); function createTestBlocks(workspace, isRow) { @@ -327,9 +324,6 @@ suite('Blocks', function() { }, ]); }); - teardown(function() { - delete Blockly.Blocks['value_block']; - }); suite('Value', function() { setup(function() { @@ -392,8 +386,6 @@ suite('Blocks', function() { }); suite('Connection Tracking', function() { setup(function() { - this.workspace.dispose(); - // The new rendered workspace will get disposed by the parent teardown. this.workspace = Blockly.inject('blocklyDiv'); this.getInputs = function() { @@ -419,26 +411,30 @@ suite('Blocks', function() { chai.assert.isEmpty(this.getNext()); chai.assert.isEmpty(this.getPrevious()); }; - - this.clock = sinon.useFakeTimers(); }); teardown(function() { - this.clock.restore(); + workspaceTeardown.call(this, this.workspace); }); + suite('Deserialization', function() { + setup(function() { + this.deserializationHelper = function(text) { + let dom = Blockly.Xml.textToDom(text); + Blockly.Xml.appendDomToWorkspace(dom, this.workspace); + this.assertConnectionsEmpty(); + this.clock.runAll(); + }; + }); test('Stack', function() { - Blockly.Xml.appendDomToWorkspace(Blockly.Xml.textToDom( + this.deserializationHelper( '' + ' ' + - '' - ), this.workspace); - this.assertConnectionsEmpty(); - this.clock.tick(1); + ''); chai.assert.equal(this.getPrevious().length, 1); chai.assert.equal(this.getNext().length, 1); }); test('Multi-Stack', function() { - Blockly.Xml.appendDomToWorkspace(Blockly.Xml.textToDom( + this.deserializationHelper( '' + ' ' + ' ' + @@ -450,25 +446,21 @@ suite('Blocks', function() { ' ' + ' ' + '' - ), this.workspace); - this.assertConnectionsEmpty(); - this.clock.tick(1); + ); chai.assert.equal(this.getPrevious().length, 3); chai.assert.equal(this.getNext().length, 3); }); test('Collapsed Stack', function() { - Blockly.Xml.appendDomToWorkspace(Blockly.Xml.textToDom( + this.deserializationHelper( '' + ' ' + '' - ), this.workspace); - this.assertConnectionsEmpty(); - this.clock.tick(1); + ); chai.assert.equal(this.getPrevious().length, 1); chai.assert.equal(this.getNext().length, 1); }); test('Collapsed Multi-Stack', function() { - Blockly.Xml.appendDomToWorkspace(Blockly.Xml.textToDom( + this.deserializationHelper( '' + ' ' + ' ' + @@ -480,25 +472,21 @@ suite('Blocks', function() { ' ' + ' ' + '' - ), this.workspace); - this.assertConnectionsEmpty(); - this.clock.tick(1); + ); chai.assert.equal(this.getPrevious().length, 3); chai.assert.equal(this.getNext().length, 3); }); test('Row', function() { - Blockly.Xml.appendDomToWorkspace(Blockly.Xml.textToDom( + this.deserializationHelper( '' + ' ' + '' - ), this.workspace); - this.assertConnectionsEmpty(); - this.clock.tick(1); + ); chai.assert.equal(this.getOutputs().length, 1); chai.assert.equal(this.getInputs().length, 1); }); test('Multi-Row', function() { - Blockly.Xml.appendDomToWorkspace(Blockly.Xml.textToDom( + this.deserializationHelper( '' + ' ' + ' ' + @@ -510,25 +498,21 @@ suite('Blocks', function() { ' ' + ' ' + '' - ), this.workspace); - this.assertConnectionsEmpty(); - this.clock.tick(1); + ); chai.assert.equal(this.getOutputs().length, 3); chai.assert.equal(this.getInputs().length, 3); }); test('Collapsed Row', function() { - Blockly.Xml.appendDomToWorkspace(Blockly.Xml.textToDom( + this.deserializationHelper( '' + ' ' + '' - ), this.workspace); - this.assertConnectionsEmpty(); - this.clock.tick(1); + ); chai.assert.equal(this.getOutputs().length, 1); chai.assert.equal(this.getInputs().length, 0); }); test('Collapsed Multi-Row', function() { - Blockly.Xml.appendDomToWorkspace(Blockly.Xml.textToDom( + this.deserializationHelper( '' + ' ' + ' ' + @@ -540,9 +524,7 @@ suite('Blocks', function() { ' ' + ' ' + '' - ), this.workspace); - this.assertConnectionsEmpty(); - this.clock.tick(1); + ); chai.assert.equal(this.getOutputs().length, 1); chai.assert.equal(this.getInputs().length, 0); }); @@ -561,23 +543,21 @@ suite('Blocks', function() { '' ), this.workspace); this.assertConnectionsEmpty(); - this.clock.tick(1); + this.clock.runAll(); chai.assert.equal(this.getOutputs().length, 2); chai.assert.equal(this.getInputs().length, 1); }); test('Statement', function() { - Blockly.Xml.appendDomToWorkspace(Blockly.Xml.textToDom( + this.deserializationHelper( '' + ' ' + '' - ), this.workspace); - this.assertConnectionsEmpty(); - this.clock.tick(1); + ); chai.assert.equal(this.getPrevious().length, 1); chai.assert.equal(this.getNext().length, 2); }); test('Multi-Statement', function() { - Blockly.Xml.appendDomToWorkspace(Blockly.Xml.textToDom( + this.deserializationHelper( '' + ' ' + ' ' + @@ -589,25 +569,21 @@ suite('Blocks', function() { ' ' + ' ' + '' - ), this.workspace); - this.assertConnectionsEmpty(); - this.clock.tick(1); + ); chai.assert.equal(this.getPrevious().length, 3); chai.assert.equal(this.getNext().length, 6); }); test('Collapsed Statement', function() { - Blockly.Xml.appendDomToWorkspace(Blockly.Xml.textToDom( + this.deserializationHelper( '' + ' ' + '' - ), this.workspace); - this.assertConnectionsEmpty(); - this.clock.tick(1); + ); chai.assert.equal(this.getPrevious().length, 1); chai.assert.equal(this.getNext().length, 1); }); test('Collapsed Multi-Statement', function() { - Blockly.Xml.appendDomToWorkspace(Blockly.Xml.textToDom( + this.deserializationHelper( '' + ' ' + ' ' + @@ -619,14 +595,12 @@ suite('Blocks', function() { ' ' + ' ' + '' - ), this.workspace); - this.assertConnectionsEmpty(); - this.clock.tick(1); + ); chai.assert.equal(this.getPrevious().length, 1); chai.assert.equal(this.getNext().length, 1); }); test('Collapsed Multi-Statement Middle', function() { - Blockly.Xml.appendDomToWorkspace(Blockly.Xml.textToDom( + this.deserializationHelper( '' + ' ' + ' ' + @@ -638,9 +612,7 @@ suite('Blocks', function() { ' ' + ' ' + '' - ), this.workspace); - this.assertConnectionsEmpty(); - this.clock.tick(1); + ); chai.assert.equal(this.getPrevious().length, 2); chai.assert.equal(this.getNext().length, 3); }); @@ -679,7 +651,7 @@ suite('Blocks', function() { var block = Blockly.Xml.domToBlock(Blockly.Xml.textToDom( '' ), this.workspace); - this.clock.tick(1); + this.clock.runAll(); chai.assert.equal(this.getPrevious().length, 1); chai.assert.equal(this.getNext().length, 1); @@ -704,7 +676,7 @@ suite('Blocks', function() { '' ), this.workspace); this.assertConnectionsEmpty(); - this.clock.tick(1); + this.clock.runAll(); chai.assert.equal(this.getPrevious().length, 3); chai.assert.equal(this.getNext().length, 3); @@ -720,7 +692,7 @@ suite('Blocks', function() { var block = Blockly.Xml.domToBlock(Blockly.Xml.textToDom( '' ), this.workspace); - this.clock.tick(1); + this.clock.runAll(); chai.assert.equal(this.getOutputs().length, 1); chai.assert.equal(this.getInputs().length, 1); @@ -744,7 +716,7 @@ suite('Blocks', function() { ' ' + '' ), this.workspace); - this.clock.tick(1); + this.clock.runAll(); chai.assert.equal(this.getOutputs().length, 3); chai.assert.equal(this.getInputs().length, 3); @@ -768,7 +740,7 @@ suite('Blocks', function() { ' ' + '' ), this.workspace); - this.clock.tick(1); + this.clock.runAll(); chai.assert.equal(this.getOutputs().length, 3); chai.assert.equal(this.getInputs().length, 3); @@ -795,7 +767,7 @@ suite('Blocks', function() { ' ' + '' ), this.workspace); - this.clock.tick(1); + this.clock.runAll(); chai.assert.equal(this.getOutputs().length, 3); chai.assert.equal(this.getInputs().length, 3); @@ -820,7 +792,7 @@ suite('Blocks', function() { var block = Blockly.Xml.domToBlock(Blockly.Xml.textToDom( '' ), this.workspace); - this.clock.tick(1); + this.clock.runAll(); chai.assert.equal(this.getPrevious().length, 1); chai.assert.equal(this.getNext().length, 2); @@ -845,7 +817,7 @@ suite('Blocks', function() { '' ), this.workspace); this.assertConnectionsEmpty(); - this.clock.tick(1); + this.clock.runAll(); chai.assert.equal(this.getPrevious().length, 3); chai.assert.equal(this.getNext().length, 6); @@ -870,7 +842,7 @@ suite('Blocks', function() { '' ), this.workspace); this.assertConnectionsEmpty(); - this.clock.tick(1); + this.clock.runAll(); chai.assert.equal(this.getPrevious().length, 3); chai.assert.equal(this.getNext().length, 6); @@ -896,7 +868,7 @@ suite('Blocks', function() { '' ), this.workspace); this.assertConnectionsEmpty(); - this.clock.tick(1); + this.clock.runAll(); chai.assert.equal(this.getPrevious().length, 3); chai.assert.equal(this.getNext().length, 6); @@ -920,9 +892,7 @@ suite('Blocks', function() { }); suite('Remove Connections Programmatically', function() { test('Output', function() { - var block = this.workspace.newBlock('row_block'); - block.initSvg(); - block.render(); + var block = createRenderedBlock(this.workspace, 'row_block'); block.setOutput(false); @@ -930,9 +900,7 @@ suite('Blocks', function() { chai.assert.equal(this.getInputs().length, 1); }); test('Value', function() { - var block = this.workspace.newBlock('row_block'); - block.initSvg(); - block.render(); + var block = createRenderedBlock(this.workspace, 'row_block'); block.removeInput('INPUT'); @@ -940,9 +908,7 @@ suite('Blocks', function() { chai.assert.equal(this.getInputs().length, 0); }); test('Previous', function() { - var block = this.workspace.newBlock('stack_block'); - block.initSvg(); - block.render(); + var block = createRenderedBlock(this.workspace, 'stack_block'); block.setPreviousStatement(false); @@ -950,9 +916,7 @@ suite('Blocks', function() { chai.assert.equal(this.getNext().length, 1); }); test('Next', function() { - var block = this.workspace.newBlock('stack_block'); - block.initSvg(); - block.render(); + var block = createRenderedBlock(this.workspace, 'stack_block'); block.setNextStatement(false); @@ -960,9 +924,7 @@ suite('Blocks', function() { chai.assert.equal(this.getNext().length, 0); }); test('Statement', function() { - var block = this.workspace.newBlock('statement_block'); - block.initSvg(); - block.render(); + var block = createRenderedBlock(this.workspace, 'statement_block'); block.removeInput('STATEMENT'); @@ -972,9 +934,10 @@ suite('Blocks', function() { }); suite('Add Connections Programmatically', function() { test('Output', function() { - var block = this.workspace.newBlock('empty_block'); - block.initSvg(); - block.render(); + var block = createRenderedBlock(this.workspace, 'empty_block'); + // this.workspace.newBlock('empty_block'); + // block.initSvg(); + // block.render(); block.setOutput(true); @@ -1019,12 +982,6 @@ suite('Blocks', function() { }); }); suite('Comments', function() { - setup(function() { - this.eventSpy = sinon.spy(Blockly.Events, 'fire'); - }); - teardown(function() { - this.eventSpy.restore(); - }); suite('Set/Get Text', function() { function assertCommentEvent(eventSpy, oldValue, newValue) { var calls = eventSpy.getCalls(); @@ -1039,6 +996,12 @@ suite('Blocks', function() { var event = calls[calls.length - 1].args[0]; chai.assert.notEqual(event.type, Blockly.Events.BLOCK_CHANGE); } + setup(function() { + this.eventsFireSpy = sinon.spy(Blockly.Events, 'fire'); + }); + teardown(function() { + this.eventsFireSpy.restore(); + }); suite('Headless', function() { setup(function() { this.block = Blockly.Xml.domToBlock(Blockly.Xml.textToDom( @@ -1048,24 +1011,24 @@ suite('Blocks', function() { test('Text', function() { this.block.setCommentText('test text'); chai.assert.equal(this.block.getCommentText(), 'test text'); - assertCommentEvent(this.eventSpy, null, 'test text'); + assertCommentEvent(this.eventsFireSpy, null, 'test text'); }); test('Text Empty', function() { this.block.setCommentText(''); chai.assert.equal(this.block.getCommentText(), ''); - assertCommentEvent(this.eventSpy, null, ''); + assertCommentEvent(this.eventsFireSpy, null, ''); }); test('Text Null', function() { this.block.setCommentText(null); chai.assert.isNull(this.block.getCommentText()); - assertNoCommentEvent(this.eventSpy); + assertNoCommentEvent(this.eventsFireSpy); }); test('Text -> Null', function() { this.block.setCommentText('first text'); this.block.setCommentText(null); chai.assert.isNull(this.block.getCommentText()); - assertCommentEvent(this.eventSpy, 'first text', null); + assertCommentEvent(this.eventsFireSpy, 'first text', null); }); }); suite('Rendered', function() { @@ -1079,29 +1042,29 @@ suite('Blocks', function() { ), this.workspace); }); teardown(function() { - this.workspace.dispose(); + workspaceTeardown.call(this, this.workspace); }); test('Text', function() { this.block.setCommentText('test text'); chai.assert.equal(this.block.getCommentText(), 'test text'); - assertCommentEvent(this.eventSpy, null, 'test text'); + assertCommentEvent(this.eventsFireSpy, null, 'test text'); }); test('Text Empty', function() { this.block.setCommentText(''); chai.assert.equal(this.block.getCommentText(), ''); - assertCommentEvent(this.eventSpy, null, ''); + assertCommentEvent(this.eventsFireSpy, null, ''); }); test('Text Null', function() { this.block.setCommentText(null); chai.assert.isNull(this.block.getCommentText()); - assertNoCommentEvent(this.eventSpy); + assertNoCommentEvent(this.eventsFireSpy); }); test('Text -> Null', function() { this.block.setCommentText('first text'); this.block.setCommentText(null); chai.assert.isNull(this.block.getCommentText()); - assertCommentEvent(this.eventSpy, 'first text', null); + assertCommentEvent(this.eventsFireSpy, 'first text', null); }); test('Set While Visible - Editable', function() { this.block.setCommentText('test1'); @@ -1110,22 +1073,21 @@ suite('Blocks', function() { this.block.setCommentText('test2'); chai.assert.equal(this.block.getCommentText(), 'test2'); - assertCommentEvent(this.eventSpy, 'test1', 'test2'); + assertCommentEvent(this.eventsFireSpy, 'test1', 'test2'); chai.assert.equal(icon.textarea_.value, 'test2'); }); test('Set While Visible - NonEditable', function() { this.block.setCommentText('test1'); - var editableStub = sinon.stub(this.block, 'isEditable').returns(false); + // Restored up by call to sinon.restore() in sharedTestTeardown() + sinon.stub(this.block, 'isEditable').returns(false); var icon = this.block.getCommentIcon(); icon.setVisible(true); this.block.setCommentText('test2'); chai.assert.equal(this.block.getCommentText(), 'test2'); - assertCommentEvent(this.eventSpy, 'test1', 'test2'); + assertCommentEvent(this.eventsFireSpy, 'test1', 'test2'); chai.assert.equal(icon.paragraphElement_.firstChild.textContent, 'test2'); - - editableStub.restore(); }); test('Get Text While Editing', function() { this.block.setCommentText('test1'); @@ -1142,11 +1104,11 @@ suite('Blocks', function() { suite('Icon Management', function() { suite('Bubbles and Collapsing', function() { setup(function() { - this.workspace.dispose(); + workspaceTeardown.call(this, this.workspace); this.workspace = Blockly.inject('blocklyDiv'); }); teardown(function() { - this.workspace.dispose(); + workspaceTeardown.call(this, this.workspace); }); test('Has Icon', function() { @@ -1262,21 +1224,15 @@ suite('Blocks', function() { ], } ]); - this.createBlock = function(type) { - var block = this.workspace.newBlock(type); - block.initSvg(); - block.render(); - return block; - }; }); teardown(function() { Blockly.Events.enable(); - delete Blockly.Blocks['variable_block']; + workspaceTeardown.call(this, this.workspace); }); suite('Connecting and Disconnecting', function() { test('Connect Block to Next', function() { - var blockA = this.createBlock('stack_block'); - var blockB = this.createBlock('stack_block'); + var blockA = createRenderedBlock(this.workspace,'stack_block'); + var blockB = createRenderedBlock(this.workspace,'stack_block'); blockA.setCollapsed(true); assertCollapsed(blockA); @@ -1284,8 +1240,8 @@ suite('Blocks', function() { assertNotCollapsed(blockB); }); test('Connect Block to Value Input', function() { - var blockA = this.createBlock('row_block'); - var blockB = this.createBlock('row_block'); + var blockA = createRenderedBlock(this.workspace,'row_block'); + var blockB = createRenderedBlock(this.workspace,'row_block'); blockA.setCollapsed(true); assertCollapsed(blockA); @@ -1296,8 +1252,8 @@ suite('Blocks', function() { chai.assert.isFalse(isBlockHidden(blockB)); }); test('Connect Block to Statement Input', function() { - var blockA = this.createBlock('statement_block'); - var blockB = this.createBlock('stack_block'); + var blockA = createRenderedBlock(this.workspace,'statement_block'); + var blockB = createRenderedBlock(this.workspace,'stack_block'); blockA.setCollapsed(true); assertCollapsed(blockA); @@ -1309,9 +1265,9 @@ suite('Blocks', function() { chai.assert.isFalse(isBlockHidden(blockB)); }); test('Connect Block to Child of Collapsed - Input', function() { - var blockA = this.createBlock('row_block'); - var blockB = this.createBlock('row_block'); - var blockC = this.createBlock('row_block'); + var blockA = createRenderedBlock(this.workspace,'row_block'); + var blockB = createRenderedBlock(this.workspace,'row_block'); + var blockC = createRenderedBlock(this.workspace,'row_block'); blockA.getInput('INPUT').connection.connect(blockB.outputConnection); blockA.setCollapsed(true); @@ -1326,9 +1282,9 @@ suite('Blocks', function() { chai.assert.isFalse(isBlockHidden(blockC)); }); test('Connect Block to Child of Collapsed - Next', function() { - var blockA = this.createBlock('statement_block'); - var blockB = this.createBlock('stack_block'); - var blockC = this.createBlock('stack_block'); + var blockA = createRenderedBlock(this.workspace,'statement_block'); + var blockB = createRenderedBlock(this.workspace,'stack_block'); + var blockC = createRenderedBlock(this.workspace,'stack_block'); blockA.getInput('STATEMENT').connection .connect(blockB.previousConnection); @@ -1344,9 +1300,9 @@ suite('Blocks', function() { chai.assert.isFalse(isBlockHidden(blockC)); }); test('Connect Block to Value Input Already Taken', function() { - var blockA = this.createBlock('row_block'); - var blockB = this.createBlock('row_block'); - var blockC = this.createBlock('row_block'); + var blockA = createRenderedBlock(this.workspace,'row_block'); + var blockB = createRenderedBlock(this.workspace,'row_block'); + var blockC = createRenderedBlock(this.workspace,'row_block'); blockA.getInput('INPUT').connection.connect(blockB.outputConnection); blockA.setCollapsed(true); @@ -1363,9 +1319,9 @@ suite('Blocks', function() { chai.assert.isFalse(isBlockHidden(blockC)); }); test('Connect Block to Statement Input Already Taken', function() { - var blockA = this.createBlock('statement_block'); - var blockB = this.createBlock('stack_block'); - var blockC = this.createBlock('stack_block'); + var blockA = createRenderedBlock(this.workspace,'statement_block'); + var blockB = createRenderedBlock(this.workspace,'stack_block'); + var blockC = createRenderedBlock(this.workspace,'stack_block'); blockA.getInput('STATEMENT').connection .connect(blockB.previousConnection); @@ -1384,9 +1340,9 @@ suite('Blocks', function() { chai.assert.isFalse(isBlockHidden(blockC)); }); test('Connect Block with Child - Input', function() { - var blockA = this.createBlock('row_block'); - var blockB = this.createBlock('row_block'); - var blockC = this.createBlock('row_block'); + var blockA = createRenderedBlock(this.workspace,'row_block'); + var blockB = createRenderedBlock(this.workspace,'row_block'); + var blockC = createRenderedBlock(this.workspace,'row_block'); blockB.getInput('INPUT').connection.connect(blockC.outputConnection); blockA.setCollapsed(true); @@ -1401,9 +1357,9 @@ suite('Blocks', function() { chai.assert.isFalse(isBlockHidden(blockC)); }); test('Connect Block with Child - Statement', function() { - var blockA = this.createBlock('statement_block'); - var blockB = this.createBlock('stack_block'); - var blockC = this.createBlock('stack_block'); + var blockA = createRenderedBlock(this.workspace,'statement_block'); + var blockB = createRenderedBlock(this.workspace,'stack_block'); + var blockC = createRenderedBlock(this.workspace,'stack_block'); blockB.nextConnection.connect(blockC.previousConnection); blockA.setCollapsed(true); @@ -1419,8 +1375,8 @@ suite('Blocks', function() { chai.assert.isFalse(isBlockHidden(blockC)); }); test('Disconnect Block from Value Input', function() { - var blockA = this.createBlock('row_block'); - var blockB = this.createBlock('row_block'); + var blockA = createRenderedBlock(this.workspace,'row_block'); + var blockB = createRenderedBlock(this.workspace,'row_block'); blockA.getInput('INPUT').connection.connect(blockB.outputConnection); blockA.setCollapsed(true); @@ -1430,8 +1386,8 @@ suite('Blocks', function() { chai.assert.isFalse(isBlockHidden(blockB)); }); test('Disconnect Block from Statement Input', function() { - var blockA = this.createBlock('statement_block'); - var blockB = this.createBlock('stack_block'); + var blockA = createRenderedBlock(this.workspace,'statement_block'); + var blockB = createRenderedBlock(this.workspace,'stack_block'); blockA.getInput('STATEMENT').connection .connect(blockB.previousConnection); @@ -1442,9 +1398,9 @@ suite('Blocks', function() { chai.assert.isFalse(isBlockHidden(blockB)); }); test('Disconnect Block from Child of Collapsed - Input', function() { - var blockA = this.createBlock('row_block'); - var blockB = this.createBlock('row_block'); - var blockC = this.createBlock('row_block'); + var blockA = createRenderedBlock(this.workspace,'row_block'); + var blockB = createRenderedBlock(this.workspace,'row_block'); + var blockC = createRenderedBlock(this.workspace,'row_block'); blockA.getInput('INPUT').connection.connect(blockB.outputConnection); blockB.getInput('INPUT').connection.connect(blockC.outputConnection); @@ -1457,9 +1413,9 @@ suite('Blocks', function() { chai.assert.isFalse(isBlockHidden(blockC)); }); test('Disconnect Block from Child of Collapsed - Next', function() { - var blockA = this.createBlock('statement_block'); - var blockB = this.createBlock('stack_block'); - var blockC = this.createBlock('stack_block'); + var blockA = createRenderedBlock(this.workspace,'statement_block'); + var blockB = createRenderedBlock(this.workspace,'stack_block'); + var blockC = createRenderedBlock(this.workspace,'stack_block'); blockA.getInput('STATEMENT').connection .connect(blockB.previousConnection); @@ -1473,9 +1429,9 @@ suite('Blocks', function() { chai.assert.isFalse(isBlockHidden(blockC)); }); test('Disconnect Block with Child - Input', function() { - var blockA = this.createBlock('row_block'); - var blockB = this.createBlock('row_block'); - var blockC = this.createBlock('row_block'); + var blockA = createRenderedBlock(this.workspace,'row_block'); + var blockB = createRenderedBlock(this.workspace,'row_block'); + var blockC = createRenderedBlock(this.workspace,'row_block'); blockB.getInput('INPUT').connection.connect(blockC.outputConnection); blockA.getInput('INPUT').connection.connect(blockB.outputConnection); @@ -1489,9 +1445,9 @@ suite('Blocks', function() { chai.assert.isFalse(isBlockHidden(blockC)); }); test('Disconnect Block with Child - Statement', function() { - var blockA = this.createBlock('statement_block'); - var blockB = this.createBlock('stack_block'); - var blockC = this.createBlock('stack_block'); + var blockA = createRenderedBlock(this.workspace,'statement_block'); + var blockB = createRenderedBlock(this.workspace,'stack_block'); + var blockC = createRenderedBlock(this.workspace,'stack_block'); blockB.nextConnection.connect(blockC.previousConnection); blockA.getInput('STATEMENT').connection @@ -1508,7 +1464,7 @@ suite('Blocks', function() { }); suite('Adding and Removing Block Parts', function() { test('Add Previous Connection', function() { - var blockA = this.createBlock('empty_block'); + var blockA = createRenderedBlock(this.workspace,'empty_block'); blockA.setCollapsed(true); assertCollapsed(blockA); blockA.setPreviousStatement(true); @@ -1516,7 +1472,7 @@ suite('Blocks', function() { chai.assert.isNotNull(blockA.previousConnection); }); test('Add Next Connection', function() { - var blockA = this.createBlock('empty_block'); + var blockA = createRenderedBlock(this.workspace,'empty_block'); blockA.setCollapsed(true); assertCollapsed(blockA); blockA.setNextStatement(true); @@ -1524,7 +1480,7 @@ suite('Blocks', function() { chai.assert.isNotNull(blockA.nextConnection); }); test('Add Input', function() { - var blockA = this.createBlock('empty_block'); + var blockA = createRenderedBlock(this.workspace,'empty_block'); blockA.setCollapsed(true); assertCollapsed(blockA); blockA.appendDummyInput('NAME'); @@ -1532,7 +1488,7 @@ suite('Blocks', function() { chai.assert.isNotNull(blockA.getInput('NAME')); }); test('Add Field', function() { - var blockA = this.createBlock('empty_block'); + var blockA = createRenderedBlock(this.workspace,'empty_block'); var input = blockA.appendDummyInput('NAME'); blockA.setCollapsed(true); assertCollapsed(blockA); @@ -1543,14 +1499,14 @@ suite('Blocks', function() { chai.assert.equal(field.getText(), 'test'); }); test('Add Icon', function() { - var blockA = this.createBlock('empty_block'); + var blockA = createRenderedBlock(this.workspace,'empty_block'); blockA.setCollapsed(true); assertCollapsed(blockA); blockA.setCommentText('test'); assertCollapsed(blockA); }); test('Remove Previous Connection', function() { - var blockA = this.createBlock('empty_block'); + var blockA = createRenderedBlock(this.workspace,'empty_block'); blockA.setPreviousStatement(true); blockA.setCollapsed(true); assertCollapsed(blockA); @@ -1559,7 +1515,7 @@ suite('Blocks', function() { chai.assert.isNull(blockA.previousConnection); }); test('Remove Next Connection', function() { - var blockA = this.createBlock('empty_block'); + var blockA = createRenderedBlock(this.workspace,'empty_block'); blockA.setNextStatement(true); blockA.setCollapsed(true); assertCollapsed(blockA); @@ -1568,7 +1524,7 @@ suite('Blocks', function() { chai.assert.isNull(blockA.nextConnection); }); test('Remove Input', function() { - var blockA = this.createBlock('empty_block'); + var blockA = createRenderedBlock(this.workspace,'empty_block'); blockA.appendDummyInput('NAME'); blockA.setCollapsed(true); assertCollapsed(blockA); @@ -1577,7 +1533,7 @@ suite('Blocks', function() { chai.assert.isNull(blockA.getInput('NAME')); }); test('Remove Field', function() { - var blockA = this.createBlock('empty_block'); + var blockA = createRenderedBlock(this.workspace,'empty_block'); var input = blockA.appendDummyInput('NAME'); input.appendField(new Blockly.FieldLabel('test'), 'FIELD'); blockA.setCollapsed(true); @@ -1588,7 +1544,7 @@ suite('Blocks', function() { chai.assert.isNull(field); }); test('Remove Icon', function() { - var blockA = this.createBlock('empty_block'); + var blockA = createRenderedBlock(this.workspace,'empty_block'); blockA.setCommentText('test'); blockA.setCollapsed(true); assertCollapsed(blockA); @@ -1598,7 +1554,7 @@ suite('Blocks', function() { }); suite('Renaming Vars', function() { test('Simple Rename', function() { - var blockA = this.createBlock('variable_block'); + var blockA = createRenderedBlock(this.workspace,'variable_block'); blockA.setCollapsed(true); assertCollapsed(blockA, 'x'); @@ -1608,7 +1564,7 @@ suite('Blocks', function() { assertCollapsed(blockA, 'y'); }); test('Coalesce, Different Case', function() { - var blockA = this.createBlock('variable_block'); + var blockA = createRenderedBlock(this.workspace,'variable_block'); blockA.setCollapsed(true); assertCollapsed(blockA, 'x'); @@ -1656,7 +1612,7 @@ suite('Blocks', function() { }), {}); }); teardown(function() { - this.workspace.dispose(); + workspaceTeardown.call(this, this.workspace); // Clear all registered themes. Blockly.registry.typeMap_['theme'] = {}; }); @@ -1794,4 +1750,34 @@ suite('Blocks', function() { }); }); }); + + suite('Initialization', function() { + setup(function() { + Blockly.defineBlocksWithJsonArray([ + { + "type": "init_test_block", + "message0": "" + }, + ]); + }); + test('recordUndo is reset even if init throws', function() { + // The test could pass if init is never called, + // so we assert init was called to be safe. + var initCalled = false; + var recordUndoDuringInit; + Blockly.Blocks['init_test_block'].init = function() { + initCalled = true; + recordUndoDuringInit = Blockly.Events.recordUndo; + throw new Error(); + }; + chai.assert.throws(function() { + this.workspace.newBlock('init_test_block'); + }.bind(this)); + chai.assert.isFalse(recordUndoDuringInit, + 'recordUndo should be false during block init function'); + chai.assert.isTrue(Blockly.Events.recordUndo, + 'recordUndo should be reset to true after init'); + chai.assert.isTrue(initCalled, 'expected init function to be called'); + }); + }); }); diff --git a/tests/mocha/comment_test.js b/tests/mocha/comment_test.js index a24f68c9552..55824823ba0 100644 --- a/tests/mocha/comment_test.js +++ b/tests/mocha/comment_test.js @@ -6,6 +6,7 @@ suite('Comments', function() { setup(function() { + sharedTestSetup.call(this); Blockly.defineBlocksWithJsonArray([ { "type": "empty_block", @@ -13,7 +14,6 @@ suite('Comments', function() { "args0": [] }, ]); - this.workspace = Blockly.inject('blocklyDiv', { comments: true, scrollbars: true @@ -25,25 +25,13 @@ suite('Comments', function() { this.comment.computeIconLocation(); }); teardown(function() { - delete Blockly.Blocks['empty_block']; - this.workspace.dispose(); + sharedTestTeardown.call(this); }); suite('Visibility and Editability', function() { setup(function() { - this.comment.setText('test text'); - this.eventSpy = sinon.stub(Blockly.Events, 'fire'); - }); - teardown(function() { - this.eventSpy.restore(); + this.block.setCommentText('test text'); }); - function assertEvent(eventSpy, type, element, oldValue, newValue) { - var calls = eventSpy.getCalls(); - var event = calls[calls.length - 1].args[0]; - chai.assert.equal(event.type, type); - chai.assert.equal(event.element, element); - chai.assert.equal(event.oldValue, oldValue); - chai.assert.equal(event.newValue, newValue); - } + function assertEditable(comment) { chai.assert.isNotOk(comment.paragraphElement_); chai.assert.isOk(comment.textarea_); @@ -59,28 +47,33 @@ suite('Comments', function() { this.comment.setVisible(true); chai.assert.isTrue(this.comment.isVisible()); assertEditable(this.comment); - assertEvent(this.eventSpy, Blockly.Events.UI, 'commentOpen', false, true); + assertEventFired( + this.eventsFireStub, Blockly.Events.Ui, + {element: 'commentOpen', oldValue: false, newValue: true}, + this.workspace.id, this.block.id); }); test('Not Editable', function() { - var editableStub = sinon.stub(this.block, 'isEditable').returns(false); + sinon.stub(this.block, 'isEditable').returns(false); this.comment.setVisible(true); chai.assert.isTrue(this.comment.isVisible()); assertNotEditable(this.comment); - assertEvent(this.eventSpy, Blockly.Events.UI, 'commentOpen', false, true); - - editableStub.restore(); + assertEventFired( + this.eventsFireStub, Blockly.Events.Ui, + {element: 'commentOpen', oldValue: false, newValue: true}, + this.workspace.id, this.block.id); }); test('Editable -> Not Editable', function() { this.comment.setVisible(true); - var editableStub = sinon.stub(this.block, 'isEditable').returns(false); + sinon.stub(this.block, 'isEditable').returns(false); this.comment.updateEditable(); chai.assert.isTrue(this.comment.isVisible()); assertNotEditable(this.comment); - assertEvent(this.eventSpy, Blockly.Events.UI, 'commentOpen', false, true); - - editableStub.restore(); + assertEventFired( + this.eventsFireStub, Blockly.Events.Ui, + {element: 'commentOpen', oldValue: false, newValue: true}, + this.workspace.id, this.block.id); }); test('Not Editable -> Editable', function() { var editableStub = sinon.stub(this.block, 'isEditable').returns(false); @@ -90,12 +83,16 @@ suite('Comments', function() { this.comment.updateEditable(); chai.assert.isTrue(this.comment.isVisible()); assertEditable(this.comment); - assertEvent(this.eventSpy, Blockly.Events.UI, 'commentOpen', false, true); - - editableStub.restore(); + assertEventFired( + this.eventsFireStub, Blockly.Events.Ui, + {element: 'commentOpen', oldValue: false, newValue: true}, + this.workspace.id, this.block.id); }); }); suite('Set/Get Bubble Size', function() { + teardown(function() { + sinon.restore(); + }); function assertBubbleSize(comment, height, width) { var size = comment.getBubbleSize(); chai.assert.equal(size.height, height); @@ -111,12 +108,10 @@ suite('Comments', function() { assertBubbleSizeDefault(this.comment); this.comment.setBubbleSize(100, 100); assertBubbleSize(this.comment, 100, 100); - chai.assert(bubbleSizeSpy.calledOnce); + sinon.assert.calledOnce(bubbleSizeSpy); this.comment.setVisible(false); assertBubbleSize(this.comment, 100, 100); - - bubbleSizeSpy.restore(); }); test('Set Size While Invisible', function() { assertBubbleSizeDefault(this.comment); diff --git a/tests/mocha/connection_checker_test.js b/tests/mocha/connection_checker_test.js new file mode 100644 index 00000000000..cb6b126db38 --- /dev/null +++ b/tests/mocha/connection_checker_test.js @@ -0,0 +1,270 @@ +/** + * @license + * Copyright 2020 Google LLC + * SPDX-License-Identifier: Apache-2.0 + */ + +suite('Connection checker', function() { + setup(function() { + sharedTestSetup.call(this); + }); + teardown(function() { + sharedTestTeardown.call(this); + }); + suiteSetup(function() { + this.checker = new Blockly.ConnectionChecker(); + }); + suite('Safety checks', function() { + function assertReasonHelper(checker, one, two, reason) { + chai.assert.equal(checker.canConnectWithReason(one, two), reason); + // Order should not matter. + chai.assert.equal(checker.canConnectWithReason(two, one), reason); + } + + test('Target Null', function() { + var connection = new Blockly.Connection({}, Blockly.INPUT_VALUE); + assertReasonHelper( + this.checker, + connection, + null, + Blockly.Connection.REASON_TARGET_NULL); + }); + test('Target Self', function() { + var block = {workspace: 1}; + var connection1 = new Blockly.Connection(block, Blockly.INPUT_VALUE); + var connection2 = new Blockly.Connection(block, Blockly.OUTPUT_VALUE); + + assertReasonHelper( + this.checker, + connection1, + connection2, + Blockly.Connection.REASON_SELF_CONNECTION); + }); + test('Different Workspaces', function() { + var connection1 = new Blockly.Connection( + {workspace: 1}, Blockly.INPUT_VALUE); + var connection2 = new Blockly.Connection( + {workspace: 2}, Blockly.OUTPUT_VALUE); + + assertReasonHelper( + this.checker, + connection1, + connection2, + Blockly.Connection.REASON_DIFFERENT_WORKSPACES); + }); + suite('Types', function() { + setup(function() { + // We have to declare each separately so that the connections belong + // on different blocks. + var prevBlock = { isShadow: function() {}}; + var nextBlock = { isShadow: function() {}}; + var outBlock = { isShadow: function() {}}; + var inBlock = { isShadow: function() {}}; + this.previous = new Blockly.Connection( + prevBlock, Blockly.PREVIOUS_STATEMENT); + this.next = new Blockly.Connection( + nextBlock, Blockly.NEXT_STATEMENT); + this.output = new Blockly.Connection( + outBlock, Blockly.OUTPUT_VALUE); + this.input = new Blockly.Connection( + inBlock, Blockly.INPUT_VALUE); + }); + test('Previous, Next', function() { + assertReasonHelper( + this.checker, + this.previous, + this.next, + Blockly.Connection.CAN_CONNECT); + }); + test('Previous, Output', function() { + assertReasonHelper( + this.checker, + this.previous, + this.output, + Blockly.Connection.REASON_WRONG_TYPE); + }); + test('Previous, Input', function() { + assertReasonHelper( + this.checker, + this.previous, + this.input, + Blockly.Connection.REASON_WRONG_TYPE); + }); + test('Next, Previous', function() { + assertReasonHelper( + this.checker, + this.next, + this.previous, + Blockly.Connection.CAN_CONNECT); + }); + test('Next, Output', function() { + assertReasonHelper( + this.checker, + this.next, + this.output, + Blockly.Connection.REASON_WRONG_TYPE); + }); + test('Next, Input', function() { + assertReasonHelper( + this.checker, + this.next, + this.input, + Blockly.Connection.REASON_WRONG_TYPE); + }); + test('Output, Previous', function() { + assertReasonHelper( + this.checker, + this.previous, + this.output, + Blockly.Connection.REASON_WRONG_TYPE); + }); + test('Output, Next', function() { + assertReasonHelper( + this.checker, + this.output, + this.next, + Blockly.Connection.REASON_WRONG_TYPE); + }); + test('Output, Input', function() { + assertReasonHelper( + this.checker, + this.output, + this.input, + Blockly.Connection.CAN_CONNECT); + }); + test('Input, Previous', function() { + assertReasonHelper( + this.checker, + this.previous, + this.input, + Blockly.Connection.REASON_WRONG_TYPE); + }); + test('Input, Next', function() { + assertReasonHelper( + this.checker, + this.input, + this.next, + Blockly.Connection.REASON_WRONG_TYPE); + }); + test('Input, Output', function() { + assertReasonHelper( + this.checker, + this.input, + this.output, + Blockly.Connection.CAN_CONNECT); + }); + }); + suite('Shadows', function() { + test('Previous Shadow', function() { + var prevBlock = { isShadow: function() { return true; }}; + var nextBlock = { isShadow: function() { return false; }}; + var prev = new Blockly.Connection(prevBlock, Blockly.PREVIOUS_STATEMENT); + var next = new Blockly.Connection(nextBlock, Blockly.NEXT_STATEMENT); + + assertReasonHelper( + this.checker, + prev, + next, + Blockly.Connection.CAN_CONNECT); + }); + test('Next Shadow', function() { + var prevBlock = { isShadow: function() { return false; }}; + var nextBlock = { isShadow: function() { return true; }}; + var prev = new Blockly.Connection(prevBlock, Blockly.PREVIOUS_STATEMENT); + var next = new Blockly.Connection(nextBlock, Blockly.NEXT_STATEMENT); + + assertReasonHelper( + this.checker, + prev, + next, + Blockly.Connection.REASON_SHADOW_PARENT); + }); + test('Prev and Next Shadow', function() { + var prevBlock = { isShadow: function() { return true; }}; + var nextBlock = { isShadow: function() { return true; }}; + var prev = new Blockly.Connection(prevBlock, Blockly.PREVIOUS_STATEMENT); + var next = new Blockly.Connection(nextBlock, Blockly.NEXT_STATEMENT); + + assertReasonHelper( + this.checker, + prev, + next, + Blockly.Connection.CAN_CONNECT); + }); + test('Output Shadow', function() { + var outBlock = { isShadow: function() { return true; }}; + var inBlock = { isShadow: function() { return false; }}; + var outCon = new Blockly.Connection(outBlock, Blockly.OUTPUT_VALUE); + var inCon = new Blockly.Connection(inBlock, Blockly.INPUT_VALUE); + + assertReasonHelper( + this.checker, + outCon, + inCon, + Blockly.Connection.CAN_CONNECT); + }); + test('Input Shadow', function() { + var outBlock = { isShadow: function() { return false; }}; + var inBlock = { isShadow: function() { return true; }}; + var outCon = new Blockly.Connection(outBlock, Blockly.OUTPUT_VALUE); + var inCon = new Blockly.Connection(inBlock, Blockly.INPUT_VALUE); + + assertReasonHelper( + this.checker, + outCon, + inCon, + Blockly.Connection.REASON_SHADOW_PARENT); + }); + test('Output and Input Shadow', function() { + var outBlock = { isShadow: function() { return true; }}; + var inBlock = { isShadow: function() { return true; }}; + var outCon = new Blockly.Connection(outBlock, Blockly.OUTPUT_VALUE); + var inCon = new Blockly.Connection(inBlock, Blockly.INPUT_VALUE); + + assertReasonHelper( + this.checker, + outCon, + inCon, + Blockly.Connection.CAN_CONNECT); + }); + }); + }); + suite('Check Types', function() { + setup(function() { + this.con1 = new Blockly.Connection({}, Blockly.PREVIOUS_STATEMENT); + this.con2 = new Blockly.Connection({}, Blockly.NEXT_STATEMENT); + }); + function assertCheckTypes(checker, one, two) { + chai.assert.isTrue(checker.doTypeChecks(one, two)); + // Order should not matter. + chai.assert.isTrue(checker.doTypeChecks(one, two)); + } + test('No Types', function() { + assertCheckTypes(this.checker, this.con1, this.con2); + }); + test('Same Type', function() { + this.con1.setCheck('type1'); + this.con2.setCheck('type1'); + assertCheckTypes(this.checker, this.con1, this.con2); + }); + test('Same Types', function() { + this.con1.setCheck(['type1', 'type2']); + this.con2.setCheck(['type1', 'type2']); + assertCheckTypes(this.checker, this.con1, this.con2); + }); + test('Single Same Type', function() { + this.con1.setCheck(['type1', 'type2']); + this.con2.setCheck(['type1', 'type3']); + assertCheckTypes(this.checker, this.con1, this.con2); + }); + test('One Typed, One Promiscuous', function() { + this.con1.setCheck('type1'); + assertCheckTypes(this.checker, this.con1, this.con2); + }); + test('No Compatible Types', function() { + this.con1.setCheck('type1'); + this.con2.setCheck('type2'); + chai.assert.isFalse(this.checker.doTypeChecks(this.con1, this.con2)); + }); + }); +}); diff --git a/tests/mocha/connection_db_test.js b/tests/mocha/connection_db_test.js index 99aabcda975..d05c7ba98bc 100644 --- a/tests/mocha/connection_db_test.js +++ b/tests/mocha/connection_db_test.js @@ -6,7 +6,8 @@ suite('Connection Database', function() { setup(function() { - this.database = new Blockly.ConnectionDB(); + sharedTestSetup.call(this); + this.database = new Blockly.ConnectionDB(new Blockly.ConnectionChecker()); this.assertOrder = function() { var length = this.database.connections_.length; @@ -33,6 +34,9 @@ suite('Connection Database', function() { } }; }); + teardown(function() { + sharedTestTeardown.call(this); + }); test('Add Connection', function() { var y2 = {y: 2}; var y4 = {y: 4}; @@ -190,30 +194,27 @@ suite('Connection Database', function() { this.assertOrder(); }); }); - // Does not cover logic for isConnectionAllowed + suite('Search For Closest', function() { setup(function() { - this.allowedStub = null; + // Ignore type checks. + sinon.stub(this.database.connectionChecker_, 'doTypeChecks') + .returns(true); + // Ignore safety checks. + sinon.stub(this.database.connectionChecker_, 'doSafetyChecks') + .returns(Blockly.Connection.CAN_CONNECT); + // Skip everything but the distance checks. + sinon.stub(this.database.connectionChecker_, 'doDragChecks') + .callsFake(function(a, b, distance) { + return a.distanceFrom(b) <= distance; + }); this.createCheckConnection = function(x, y) { var checkConnection = this.createConnection(x, y, Blockly.NEXT_STATEMENT, new Blockly.ConnectionDB()); - this.allowedStub = sinon.stub(checkConnection, 'isConnectionAllowed') - .callsFake(function(candidate, maxRadius) { - if (this.distanceFrom(candidate) > maxRadius) { - return false; - } - // Ignore non-distance parameters. - return true; - }); return checkConnection; }; }); - teardown(function() { - if (this.allowedStub) { - this.allowedStub.restore(); - } - }); test('Empty Database', function() { var checkConnection = this.createConnection(0, 0, Blockly.NEXT_STATEMENT, new Blockly.ConnectionDB()); diff --git a/tests/mocha/connection_test.js b/tests/mocha/connection_test.js index f78584cfac3..73882b90b80 100644 --- a/tests/mocha/connection_test.js +++ b/tests/mocha/connection_test.js @@ -4,184 +4,784 @@ * SPDX-License-Identifier: Apache-2.0 */ -suite('Connections', function() { - suite('Can Connect With Reason', function() { - test('Target Null', function() { - var connection = new Blockly.Connection({}, Blockly.INPUT_VALUE); - chai.assert.equal(connection.canConnectWithReason(null), - Blockly.Connection.REASON_TARGET_NULL); - }); - test('Target Self', function() { - var block = {workspace: 1}; - var connection1 = new Blockly.Connection(block, Blockly.INPUT_VALUE); - var connection2 = new Blockly.Connection(block, Blockly.OUTPUT_VALUE); +suite('Connection', function() { + setup(function() { + sharedTestSetup.call(this); + this.workspace = sinon.createStubInstance(Blockly.Workspace); + this.workspace.connectionChecker = new Blockly.ConnectionChecker(); + this.createConnection = function(type) { + var block = { + workspace: this.workspace, + isShadow: function() { return false; } + }; + var connection = new Blockly.Connection(block, type); + return connection; + }; + }); - chai.assert.equal(connection1.canConnectWithReason(connection2), - Blockly.Connection.REASON_SELF_CONNECTION); - }); - test('Different Workspaces', function() { - var connection1 = new Blockly.Connection( - {workspace: 1}, Blockly.INPUT_VALUE); - var connection2 = new Blockly.Connection( - {workspace: 2}, Blockly.OUTPUT_VALUE); - - chai.assert.equal(connection1.canConnectWithReason(connection2), - Blockly.Connection.REASON_DIFFERENT_WORKSPACES); - }); - suite('Types', function() { - setup(function() { - // We have to declare each separately so that the connections belong - // on different blocks. - var prevBlock = { isShadow: function() {}}; - var nextBlock = { isShadow: function() {}}; - var outBlock = { isShadow: function() {}}; - var inBlock = { isShadow: function() {}}; - this.previous = new Blockly.Connection( - prevBlock, Blockly.PREVIOUS_STATEMENT); - this.next = new Blockly.Connection( - nextBlock, Blockly.NEXT_STATEMENT); - this.output = new Blockly.Connection( - outBlock, Blockly.OUTPUT_VALUE); - this.input = new Blockly.Connection( - inBlock, Blockly.INPUT_VALUE); - }); - test('Previous, Next', function() { - chai.assert.equal(this.previous.canConnectWithReason(this.next), - Blockly.Connection.CAN_CONNECT); - }); - test('Previous, Output', function() { - chai.assert.equal(this.previous.canConnectWithReason(this.output), - Blockly.Connection.REASON_WRONG_TYPE); - }); - test('Previous, Input', function() { - chai.assert.equal(this.previous.canConnectWithReason(this.input), - Blockly.Connection.REASON_WRONG_TYPE); - }); - test('Next, Previous', function() { - chai.assert.equal(this.next.canConnectWithReason(this.previous), - Blockly.Connection.CAN_CONNECT); - }); - test('Next, Output', function() { - chai.assert.equal(this.next.canConnectWithReason(this.output), - Blockly.Connection.REASON_WRONG_TYPE); - }); - test('Next, Input', function() { - chai.assert.equal(this.next.canConnectWithReason(this.input), - Blockly.Connection.REASON_WRONG_TYPE); - }); - test('Output, Previous', function() { - chai.assert.equal(this.output.canConnectWithReason(this.previous), - Blockly.Connection.REASON_WRONG_TYPE); - }); - test('Output, Next', function() { - chai.assert.equal(this.output.canConnectWithReason(this.next), - Blockly.Connection.REASON_WRONG_TYPE); - }); - test('Output, Input', function() { - chai.assert.equal(this.output.canConnectWithReason(this.input), - Blockly.Connection.CAN_CONNECT); - }); - test('Input, Previous', function() { - chai.assert.equal(this.input.canConnectWithReason(this.previous), - Blockly.Connection.REASON_WRONG_TYPE); - }); - test('Input, Next', function() { - chai.assert.equal(this.input.canConnectWithReason(this.next), - Blockly.Connection.REASON_WRONG_TYPE); - }); - test('Input, Output', function() { - chai.assert.equal(this.input.canConnectWithReason(this.output), - Blockly.Connection.CAN_CONNECT); - }); - }); - suite('Shadows', function() { - test('Previous Shadow', function() { - var prevBlock = { isShadow: function() { return true; }}; - var nextBlock = { isShadow: function() { return false; }}; - var prev = new Blockly.Connection(prevBlock, Blockly.PREVIOUS_STATEMENT); - var next = new Blockly.Connection(nextBlock, Blockly.NEXT_STATEMENT); - - chai.assert.equal(prev.canConnectWithReason(next), - Blockly.Connection.CAN_CONNECT); - }); - test('Next Shadow', function() { - var prevBlock = { isShadow: function() { return false; }}; - var nextBlock = { isShadow: function() { return true; }}; - var prev = new Blockly.Connection(prevBlock, Blockly.PREVIOUS_STATEMENT); - var next = new Blockly.Connection(nextBlock, Blockly.NEXT_STATEMENT); - - chai.assert.equal(prev.canConnectWithReason(next), - Blockly.Connection.REASON_SHADOW_PARENT); - }); - test('Prev and Next Shadow', function() { - var prevBlock = { isShadow: function() { return true; }}; - var nextBlock = { isShadow: function() { return true; }}; - var prev = new Blockly.Connection(prevBlock, Blockly.PREVIOUS_STATEMENT); - var next = new Blockly.Connection(nextBlock, Blockly.NEXT_STATEMENT); - - chai.assert.equal(prev.canConnectWithReason(next), - Blockly.Connection.CAN_CONNECT); - }); - test('Output Shadow', function() { - var outBlock = { isShadow: function() { return true; }}; - var inBlock = { isShadow: function() { return false; }}; - var outCon = new Blockly.Connection(outBlock, Blockly.OUTPUT_VALUE); - var inCon = new Blockly.Connection(inBlock, Blockly.INPUT_VALUE); - - chai.assert.equal(outCon.canConnectWithReason(inCon), - Blockly.Connection.CAN_CONNECT); - }); - test('Input Shadow', function() { - var outBlock = { isShadow: function() { return false; }}; - var inBlock = { isShadow: function() { return true; }}; - var outCon = new Blockly.Connection(outBlock, Blockly.OUTPUT_VALUE); - var inCon = new Blockly.Connection(inBlock, Blockly.INPUT_VALUE); - - chai.assert.equal(outCon.canConnectWithReason(inCon), - Blockly.Connection.REASON_SHADOW_PARENT); - }); - test('Output and Input Shadow', function() { - var outBlock = { isShadow: function() { return true; }}; - var inBlock = { isShadow: function() { return true; }}; - var outCon = new Blockly.Connection(outBlock, Blockly.OUTPUT_VALUE); - var inCon = new Blockly.Connection(inBlock, Blockly.INPUT_VALUE); - - chai.assert.equal(outCon.canConnectWithReason(inCon), - Blockly.Connection.CAN_CONNECT); - }); - }); + teardown(function() { + sharedTestTeardown.call(this); }); - suite('Check Types', function() { - setup(function() { - this.con1 = new Blockly.Connection({}, Blockly.PREVIOUS_STATEMENT); - this.con2 = new Blockly.Connection({}, Blockly.NEXT_STATEMENT); - }); - test('No Types', function() { - chai.assert.isTrue(this.con1.checkType((this.con2))); - }); - test('Same Type', function() { - this.con1.setCheck('type1'); - this.con2.setCheck('type1'); - chai.assert.isTrue(this.con1.checkType((this.con2))); - }); - test('Same Types', function() { - this.con1.setCheck(['type1', 'type2']); - this.con2.setCheck(['type1', 'type2']); - chai.assert.isTrue(this.con1.checkType((this.con2))); - }); - test('Single Same Type', function() { - this.con1.setCheck(['type1', 'type2']); - this.con2.setCheck(['type1', 'type3']); - chai.assert.isTrue(this.con1.checkType((this.con2))); + + test('Deprecated - canConnectWithReason passes', function() { + var deprecateWarnSpy = createDeprecationWarningStub(); + var conn1 = this.createConnection(Blockly.PREVIOUS_STATEMENT); + var conn2 = this.createConnection(Blockly.NEXT_STATEMENT); + chai.assert.equal(conn1.canConnectWithReason(conn2), + Blockly.Connection.CAN_CONNECT); + assertSingleDeprecationWarningCall(deprecateWarnSpy, + 'Connection.prototype.canConnectWithReason'); + }); + + test('Deprecated - canConnectWithReason fails', function() { + var deprecateWarnSpy = createDeprecationWarningStub(); + var conn1 = this.createConnection(Blockly.PREVIOUS_STATEMENT); + var conn2 = this.createConnection(Blockly.OUTPUT_VALUE); + chai.assert.equal(conn1.canConnectWithReason(conn2), + Blockly.Connection.REASON_WRONG_TYPE); + assertSingleDeprecationWarningCall(deprecateWarnSpy, + 'Connection.prototype.canConnectWithReason'); + }); + + test('Deprecated - checkConnection passes', function() { + var deprecateWarnSpy = createDeprecationWarningStub(); + var conn1 = this.createConnection(Blockly.PREVIOUS_STATEMENT); + var conn2 = this.createConnection(Blockly.NEXT_STATEMENT); + chai.assert.doesNotThrow(function() { + conn1.checkConnection(conn2); }); - test('One Typed, One Promiscuous', function() { - this.con1.setCheck('type1'); - chai.assert.isTrue(this.con1.checkType((this.con2))); + assertSingleDeprecationWarningCall(deprecateWarnSpy, + 'Connection.prototype.checkConnection'); + }); + + test('Deprecated - checkConnection fails', function() { + var deprecateWarnSpy = createDeprecationWarningStub(); + var conn1 = this.createConnection(Blockly.PREVIOUS_STATEMENT); + var conn2 = this.createConnection(Blockly.OUTPUT_VALUE); + chai.assert.throws(function() { + conn1.checkConnection(conn2); }); - test('No Compatible Types', function() { - this.con1.setCheck('type1'); - this.con2.setCheck('type2'); - chai.assert.isFalse(this.con1.checkType((this.con2))); + assertSingleDeprecationWarningCall(deprecateWarnSpy, + 'Connection.prototype.checkConnection'); + }); + + suite('Set Shadow Dom', function() { + + function assertBlockMatches(block, isShadow, opt_id) { + chai.assert.equal(block.isShadow(), isShadow, + `expected block ${block.id} to ${isShadow ? '' : 'not'} be a shadow`); + if (opt_id) { + chai.assert.equal(block.id, opt_id); + } + } + + function assertInputHasBlock(parent, inputName, isShadow, opt_name) { + var block = parent.getInputTargetBlock(inputName); + chai.assert.exists(block, + `expected block ${opt_name || ''} to be attached to ${inputName}`); + assertBlockMatches(block, isShadow, opt_name); + } + + function assertNextHasBlock(parent, isShadow, opt_name) { + var block = parent.getNextBlock(); + chai.assert.exists(block, + `expected block ${opt_name || ''} to be attached to next connection`); + assertBlockMatches(block, isShadow, opt_name); + } + + function assertInputNotHasBlock(parent, inputName) { + var block = parent.getInputTargetBlock(inputName); + chai.assert.notExists(block, + `expected block ${block && block.id} to not be attached to ${inputName}`); + } + + function assertNextNotHasBlock(parent) { + var block = parent.getNextBlock(); + chai.assert.notExists(block, + `expected block ${block && block.id} to not be attached to next connection`); + } + + var testSuites = [ + { + title: 'Rendered', + createWorkspace: () => { + return Blockly.inject('blocklyDiv'); + }, + }, + { + title: 'Headless', + createWorkspace: () => { + return new Blockly.Workspace(); + }, + } + ]; + + testSuites.forEach((testSuite) => { + // Create a suite for each suite. + suite(testSuite.title, function() { + setup(function() { + this.workspace = testSuite.createWorkspace(); + + Blockly.defineBlocksWithJsonArray([ + { + "type": "stack_block", + "message0": "", + "previousStatement": null, + "nextStatement": null + }, + { + "type": "row_block", + "message0": "%1", + "args0": [ + { + "type": "input_value", + "name": "INPUT" + } + ], + "output": null + }, + { + "type": "statement_block", + "message0": "%1", + "args0": [ + { + "type": "input_statement", + "name": "STATEMENT" + } + ], + "previousStatement": null, + "nextStatement": null + }]); + }); + + teardown(function() { + workspaceTeardown.call(this, this.workspace); + delete Blockly.Blocks['stack_block']; + delete Blockly.Blocks['row_block']; + delete Blockly.Blocks['statement_block']; + }); + + suite('Add - No Block Connected', function() { + // These are defined separately in each suite. + function createRowBlock(workspace) { + var block = Blockly.Xml.domToBlock(Blockly.Xml.textToDom( + '' + ), workspace); + return block; + } + + function createStatementBlock(workspace) { + var block = Blockly.Xml.domToBlock(Blockly.Xml.textToDom( + '' + ), workspace); + return block; + } + + function createStackBlock(workspace) { + var block = Blockly.Xml.domToBlock(Blockly.Xml.textToDom( + '' + ), workspace); + return block; + } + + test('Value', function() { + var parent = createRowBlock(this.workspace); + var xml = Blockly.Xml.textToDom( + '' + ); + parent.getInput('INPUT').connection.setShadowDom(xml); + assertInputHasBlock(parent, 'INPUT', true); + }); + + test('Multiple Value', function() { + var parent = createRowBlock(this.workspace); + var xml = Blockly.Xml.textToDom( + '' + + ' ' + + ' ' + + ' ' + + '' + ); + parent.getInput('INPUT').connection.setShadowDom(xml); + assertInputHasBlock(parent, 'INPUT', true); + assertInputHasBlock( + parent.getInputTargetBlock('INPUT'), 'INPUT', true); + }); + + test('Statement', function() { + var parent = createStatementBlock(this.workspace); + var xml = Blockly.Xml.textToDom( + '' + ); + parent.getInput('STATEMENT').connection.setShadowDom(xml); + assertInputHasBlock(parent, 'STATEMENT', true); + }); + + test('Multiple Statement', function() { + var parent = createStatementBlock(this.workspace); + var xml = Blockly.Xml.textToDom( + '' + + ' ' + + ' ' + + ' ' + + '' + ); + parent.getInput('STATEMENT').connection.setShadowDom(xml); + assertInputHasBlock(parent, 'STATEMENT', true); + assertInputHasBlock( + parent.getInputTargetBlock('STATEMENT'), 'STATEMENT', true); + }); + + test('Next', function() { + var parent = createStackBlock(this.workspace); + var xml = Blockly.Xml.textToDom( + '' + ); + parent.nextConnection.setShadowDom(xml); + assertNextHasBlock(parent, true); + }); + + test('Multiple Next', function() { + var parent = createStackBlock(this.workspace); + var xml = Blockly.Xml.textToDom( + '' + + ' ' + + ' ' + + ' ' + + '' + ); + parent.nextConnection.setShadowDom(xml); + assertNextHasBlock(parent, true); + assertNextHasBlock(parent.getNextBlock(), true); + }); + }); + + suite('Add - With Block Connected', function() { + // These are defined separately in each suite. + function createRowBlocks(workspace) { + var block = Blockly.Xml.domToBlock(Blockly.Xml.textToDom( + '' + + ' ' + + ' ' + + ' ' + + '' + ), workspace); + return block; + } + + function createStatementBlocks(workspace) { + var block = Blockly.Xml.domToBlock(Blockly.Xml.textToDom( + '' + + ' ' + + ' ' + + ' ' + + '' + ), workspace); + return block; + } + + function createStackBlocks(workspace) { + var block = Blockly.Xml.domToBlock(Blockly.Xml.textToDom( + '' + + ' ' + + ' ' + + ' ' + + '' + ), workspace); + return block; + } + + test('Value', function() { + var parent = createRowBlocks(this.workspace); + var xml = Blockly.Xml.textToDom( + '' + ); + parent.getInput('INPUT').connection.setShadowDom(xml); + assertInputHasBlock(parent, 'INPUT', false); + parent.getInput('INPUT').connection.disconnect(); + assertInputHasBlock(parent, 'INPUT', true); + }); + + test('Multiple Value', function() { + var parent = createRowBlocks(this.workspace); + var xml = Blockly.Xml.textToDom( + '' + + ' ' + + ' ' + + ' ' + + '' + ); + parent.getInput('INPUT').connection.setShadowDom(xml); + assertInputHasBlock(parent, 'INPUT', false); + assertInputNotHasBlock(parent.getInputTargetBlock('INPUT'), 'INPUT'); + parent.getInput('INPUT').connection.disconnect(); + assertInputHasBlock(parent, 'INPUT', true); + assertInputHasBlock( + parent.getInputTargetBlock('INPUT'), 'INPUT', true); + }); + + test('Statement', function() { + var parent = createStatementBlocks(this.workspace); + var xml = Blockly.Xml.textToDom( + '' + ); + parent.getInput('STATEMENT').connection.setShadowDom(xml); + assertInputHasBlock(parent, 'STATEMENT', false); + parent.getInput('STATEMENT').connection.disconnect(); + assertInputHasBlock(parent, 'STATEMENT', true); + }); + + test('Multiple Statement', function() { + var parent = createStatementBlocks(this.workspace); + var xml = Blockly.Xml.textToDom( + '' + + ' ' + + ' ' + + ' ' + + '' + ); + parent.getInput('STATEMENT').connection.setShadowDom(xml); + assertInputHasBlock(parent, 'STATEMENT', false); + assertInputNotHasBlock( + parent.getInputTargetBlock('STATEMENT'), 'STATEMENT'); + parent.getInput('STATEMENT').connection.disconnect(); + assertInputHasBlock(parent, 'STATEMENT', true); + assertInputHasBlock( + parent.getInputTargetBlock('STATEMENT'), 'STATEMENT', true); + }); + + test('Next', function() { + var parent = createStackBlocks(this.workspace); + var xml = Blockly.Xml.textToDom( + '' + ); + parent.nextConnection.setShadowDom(xml); + assertNextHasBlock(parent, false); + parent.nextConnection.disconnect(); + assertNextHasBlock(parent, true); + }); + + test('Multiple Next', function() { + var parent = createStackBlocks(this.workspace); + var xml = Blockly.Xml.textToDom( + '' + + ' ' + + ' ' + + ' ' + + '' + ); + parent.nextConnection.setShadowDom(xml); + assertNextHasBlock(parent, false); + assertNextNotHasBlock(parent.getNextBlock()); + parent.nextConnection.disconnect(); + assertNextHasBlock(parent, true); + assertNextHasBlock(parent.getNextBlock(), true); + }); + }); + + suite('Add - With Shadow Connected', function() { + // These are defined separately in each suite. + function createRowBlock(workspace) { + var block = Blockly.Xml.domToBlock(Blockly.Xml.textToDom( + '' + ), workspace); + return block; + } + + function createStatementBlock(workspace) { + var block = Blockly.Xml.domToBlock(Blockly.Xml.textToDom( + '' + ), workspace); + return block; + } + + function createStackBlock(workspace) { + var block = Blockly.Xml.domToBlock(Blockly.Xml.textToDom( + '' + ), workspace); + return block; + } + + test('Value', function() { + var parent = createRowBlock(this.workspace); + var xml = Blockly.Xml.textToDom( + '' + ); + parent.getInput('INPUT').connection.setShadowDom(xml); + assertInputHasBlock(parent, 'INPUT', true, '1'); + var xml = Blockly.Xml.textToDom( + '' + ); + parent.getInput('INPUT').connection.setShadowDom(xml); + assertInputHasBlock(parent, 'INPUT', true, '2'); + }); + + test('Multiple Value', function() { + var parent = createRowBlock(this.workspace); + var xml = Blockly.Xml.textToDom( + '' + + ' ' + + ' ' + + ' ' + + '' + ); + parent.getInput('INPUT').connection.setShadowDom(xml); + assertInputHasBlock(parent, 'INPUT', true, '1'); + assertInputHasBlock( + parent.getInputTargetBlock('INPUT'), 'INPUT', true, 'a'); + var xml = Blockly.Xml.textToDom( + '' + + ' ' + + ' ' + + ' ' + + '' + ); + parent.getInput('INPUT').connection.setShadowDom(xml); + assertInputHasBlock(parent, 'INPUT', true, '2'); + assertInputHasBlock( + parent.getInputTargetBlock('INPUT'), 'INPUT', true, 'b'); + }); + + test('Statement', function() { + var parent = createStatementBlock(this.workspace); + var xml = Blockly.Xml.textToDom( + '' + ); + parent.getInput('STATEMENT').connection.setShadowDom(xml); + assertInputHasBlock(parent, 'STATEMENT', true, '1'); + var xml = Blockly.Xml.textToDom( + '' + ); + parent.getInput('STATEMENT').connection.setShadowDom(xml); + assertInputHasBlock(parent, 'STATEMENT', true, '2'); + }); + + test('Multiple Statement', function() { + var parent = createStatementBlock(this.workspace); + var xml = Blockly.Xml.textToDom( + '' + + ' ' + + ' ' + + ' ' + + '' + ); + parent.getInput('STATEMENT').connection.setShadowDom(xml); + assertInputHasBlock(parent, 'STATEMENT', true, '1'); + assertInputHasBlock( + parent.getInputTargetBlock('STATEMENT'), 'STATEMENT', true, 'a'); + var xml = Blockly.Xml.textToDom( + '' + + ' ' + + ' ' + + ' ' + + '' + ); + parent.getInput('STATEMENT').connection.setShadowDom(xml); + assertInputHasBlock(parent, 'STATEMENT', true, '2'); + assertInputHasBlock( + parent.getInputTargetBlock('STATEMENT'), 'STATEMENT', true, 'b'); + }); + + test('Next', function() { + var parent = createStackBlock(this.workspace); + var xml = Blockly.Xml.textToDom( + '' + ); + parent.nextConnection.setShadowDom(xml); + assertNextHasBlock(parent, true, '1'); + var xml = Blockly.Xml.textToDom( + '' + ); + parent.nextConnection.setShadowDom(xml); + assertNextHasBlock(parent, true, '2'); + }); + + test('Multiple Next', function() { + var parent = createStackBlock(this.workspace); + var xml = Blockly.Xml.textToDom( + '' + + ' ' + + ' ' + + ' ' + + '' + ); + parent.nextConnection.setShadowDom(xml); + assertNextHasBlock(parent, true, '1'); + assertNextHasBlock(parent.getNextBlock(), true, 'a'); + var xml = Blockly.Xml.textToDom( + '' + + ' ' + + ' ' + + ' ' + + '' + ); + parent.nextConnection.setShadowDom(xml); + assertNextHasBlock(parent, true, '2'); + assertNextHasBlock(parent.getNextBlock(), true, 'b'); + }); + }); + + suite('Remove - No Block Connected', function() { + // These are defined separately in each suite. + function createRowBlock(workspace) { + var block = Blockly.Xml.domToBlock(Blockly.Xml.textToDom( + '' + + ' ' + + ' ' + + ' ' + + '' + ), workspace); + return block; + } + + function createStatementBlock(workspace) { + var block = Blockly.Xml.domToBlock(Blockly.Xml.textToDom( + '' + + ' ' + + ' ' + + ' ' + + '' + ), workspace); + return block; + } + + function createStackBlock(workspace) { + var block = Blockly.Xml.domToBlock(Blockly.Xml.textToDom( + '' + + ' ' + + ' ' + + ' ' + + '' + ), workspace); + return block; + } + + test('Value', function() { + var parent = createRowBlock(this.workspace); + parent.getInput('INPUT').connection.setShadowDom(null); + assertInputNotHasBlock(parent, 'INPUT'); + }); + + test('Statement', function() { + var parent = createStatementBlock(this.workspace); + parent.getInput('STATEMENT').connection.setShadowDom(null); + assertInputNotHasBlock(parent, 'STATMENT'); + }); + + test('Next', function() { + var parent = createStackBlock(this.workspace); + parent.nextConnection.setShadowDom(null); + assertNextNotHasBlock(parent); + }); + }); + + suite('Remove - Block Connected', function() { + // These are defined separately in each suite. + function createRowBlock(workspace) { + var block = Blockly.Xml.domToBlock(Blockly.Xml.textToDom( + '' + + ' ' + + ' ' + + ' ' + + ' ' + + '' + ), workspace); + return block; + } + + function createStatementBlock(workspace) { + var block = Blockly.Xml.domToBlock(Blockly.Xml.textToDom( + '' + + ' ' + + ' ' + + ' ' + + ' ' + + '' + ), workspace); + return block; + } + + function createStackBlock(workspace) { + var block = Blockly.Xml.domToBlock(Blockly.Xml.textToDom( + '' + + ' ' + + ' ' + + ' ' + + ' ' + + '' + ), workspace); + return block; + } + + test('Value', function() { + var parent = createRowBlock(this.workspace); + parent.getInput('INPUT').connection.setShadowDom(null); + assertInputHasBlock(parent, 'INPUT', false); + parent.getInput('INPUT').connection.disconnect(); + assertInputNotHasBlock(parent, 'INPUT'); + }); + + test('Statement', function() { + var parent = createStatementBlock(this.workspace); + parent.getInput('STATEMENT').connection.setShadowDom(null); + assertInputHasBlock(parent, 'STATEMENT', false); + parent.getInput('STATEMENT').connection.disconnect(); + assertInputNotHasBlock(parent, 'STATEMENT'); + }); + + test('Next', function() { + var parent = createStackBlock(this.workspace); + parent.nextConnection.setShadowDom(null); + assertNextHasBlock(parent, false); + parent.nextConnection.disconnect(); + assertNextNotHasBlock(parent); + }); + }); + + suite('Add - Connect & Disconnect - Remove', function() { + // These are defined separately in each suite. + function createRowBlock(workspace) { + var block = Blockly.Xml.domToBlock(Blockly.Xml.textToDom( + '' + ), workspace); + return block; + } + + function createStatementBlock(workspace) { + var block = Blockly.Xml.domToBlock(Blockly.Xml.textToDom( + '' + ), workspace); + return block; + } + + function createStackBlock(workspace) { + var block = Blockly.Xml.domToBlock(Blockly.Xml.textToDom( + '' + ), workspace); + return block; + } + + test('Value', function() { + var parent = createRowBlock(this.workspace); + var xml = Blockly.Xml.textToDom( + '' + ); + parent.getInput('INPUT').connection.setShadowDom(xml); + assertInputHasBlock(parent, 'INPUT', true); + var child = createRowBlock(this.workspace); + parent.getInput('INPUT').connection.connect(child.outputConnection); + assertInputHasBlock(parent, 'INPUT', false); + parent.getInput('INPUT').connection.disconnect(); + assertInputHasBlock(parent, 'INPUT', true); + parent.getInput('INPUT').connection.setShadowDom(null); + assertInputNotHasBlock(parent, 'INPUT'); + }); + + test('Multiple Value', function() { + var parent = createRowBlock(this.workspace); + var xml = Blockly.Xml.textToDom( + '' + + ' ' + + ' ' + + ' ' + + '' + ); + parent.getInput('INPUT').connection.setShadowDom(xml); + assertInputHasBlock(parent, 'INPUT', true); + assertInputHasBlock( + parent.getInputTargetBlock('INPUT'), 'INPUT', true); + var child = createRowBlock(this.workspace); + parent.getInput('INPUT').connection.connect(child.outputConnection); + assertInputHasBlock(parent, 'INPUT', false); + parent.getInput('INPUT').connection.disconnect(); + assertInputHasBlock(parent, 'INPUT', true); + assertInputHasBlock( + parent.getInputTargetBlock('INPUT'), 'INPUT', true); + parent.getInput('INPUT').connection.setShadowDom(null); + assertInputNotHasBlock(parent, 'INPUT'); + }); + + test('Statement', function() { + var parent = createStatementBlock(this.workspace); + var xml = Blockly.Xml.textToDom( + '' + ); + parent.getInput('STATEMENT').connection.setShadowDom(xml); + assertInputHasBlock(parent, 'STATEMENT', true); + var child = createStatementBlock(this.workspace); + parent.getInput('STATEMENT').connection + .connect(child.previousConnection); + assertInputHasBlock(parent, 'STATEMENT', false); + parent.getInput('STATEMENT').connection.disconnect(); + assertInputHasBlock(parent, 'STATEMENT', true); + parent.getInput('STATEMENT').connection.setShadowDom(null); + assertInputNotHasBlock(parent, 'STATEMENT'); + }); + + test('Multiple Statement', function() { + var parent = createStatementBlock(this.workspace); + var xml = Blockly.Xml.textToDom( + '' + + ' ' + + ' ' + + ' ' + + '' + ); + parent.getInput('STATEMENT').connection.setShadowDom(xml); + assertInputHasBlock(parent, 'STATEMENT', true); + assertInputHasBlock( + parent.getInputTargetBlock('STATEMENT'), 'STATEMENT', true); + var child = createStatementBlock(this.workspace); + parent.getInput('STATEMENT').connection + .connect(child.previousConnection); + assertInputHasBlock(parent, 'STATEMENT', false); + parent.getInput('STATEMENT').connection.disconnect(); + assertInputHasBlock(parent, 'STATEMENT', true); + assertInputHasBlock( + parent.getInputTargetBlock('STATEMENT'), 'STATEMENT', true); + parent.getInput('STATEMENT').connection.setShadowDom(null); + assertInputNotHasBlock(parent, 'STATEMENT'); + }); + + test('Next', function() { + var parent = createStackBlock(this.workspace); + var xml = Blockly.Xml.textToDom( + '' + ); + parent.nextConnection.setShadowDom(xml); + assertNextHasBlock(parent, true); + var child = createStatementBlock(this.workspace); + parent.nextConnection.connect(child.previousConnection); + assertNextHasBlock(parent, false); + parent.nextConnection.disconnect(); + assertNextHasBlock(parent, true); + parent.nextConnection.setShadowDom(null); + assertNextNotHasBlock(parent); + }); + + test('Multiple Next', function() { + var parent = createStackBlock(this.workspace); + var xml = Blockly.Xml.textToDom( + '' + + ' ' + + ' ' + + ' ' + + '' + ); + parent.nextConnection.setShadowDom(xml); + assertNextHasBlock(parent, true); + assertNextHasBlock(parent.getNextBlock(), true); + var child = createStatementBlock(this.workspace); + parent.nextConnection.connect(child.previousConnection); + assertNextHasBlock(parent, false); + parent.nextConnection.disconnect(); + assertNextHasBlock(parent, true); + assertNextHasBlock(parent.getNextBlock(), true); + parent.nextConnection.setShadowDom(null); + assertNextNotHasBlock(parent); + }); + }); + }); }); }); }); diff --git a/tests/mocha/contextmenu_items_test.js b/tests/mocha/contextmenu_items_test.js new file mode 100644 index 00000000000..387e7083be3 --- /dev/null +++ b/tests/mocha/contextmenu_items_test.js @@ -0,0 +1,407 @@ +/** + * @license + * Copyright 2020 Google LLC + * SPDX-License-Identifier: Apache-2.0 + */ + +suite('Context Menu Items', function() { + setup(function() { + sharedTestSetup.call(this); + + // Creates a WorkspaceSVG + var toolbox = document.getElementById('toolbox-categories'); + this.workspace = Blockly.inject('blocklyDiv', {toolbox: toolbox}); + + // Declare a new registry to ensure default options are called. + new Blockly.ContextMenuRegistry(); + this.registry = Blockly.ContextMenuRegistry.registry; + }); + + teardown(function() { + sharedTestTeardown.call(this); + }); + + suite('Workspace Items', function() { + setup(function() { + this.scope = {workspace: this.workspace}; + }); + + suite('undo', function() { + setup(function() { + this.undoOption = this.registry.getItem('undoWorkspace'); + }); + + test('Disabled when nothing to undo', function() { + var precondition = this.undoOption.preconditionFn(this.scope); + chai.assert.equal(precondition, 'disabled', + 'Should be disabled when there is nothing to undo'); + }); + + test('Enabled when something to undo', function() { + // Create a new block, which should be undoable. + this.workspace.newBlock('text'); + var precondition = this.undoOption.preconditionFn(this.scope); + chai.assert.equal(precondition, 'enabled', + 'Should be enabled when there are actions to undo'); + }); + + test('Undoes adding a new block', function() { + this.workspace.newBlock('text'); + chai.assert.equal(this.workspace.getTopBlocks(false).length, 1); + this.undoOption.callback(this.scope); + chai.assert.equal(this.workspace.getTopBlocks(false).length, 0, + 'Should be no blocks after undo'); + }); + + test('Has correct label', function() { + chai.assert.equal(this.undoOption.displayText(), 'Undo'); + }); + }); + + suite('Redo', function() { + setup(function() { + this.redoOption = this.registry.getItem('redoWorkspace'); + }); + + test('Disabled when nothing to redo', function() { + // Create a new block. There should be something to undo, but not redo. + this.workspace.newBlock('text'); + var precondition = this.redoOption.preconditionFn(this.scope); + chai.assert.equal(precondition, 'disabled', + 'Should be disabled when there is nothing to redo'); + }); + + test('Enabled when something to redo', function() { + // Create a new block, then undo it, which means there is something to redo. + this.workspace.newBlock('text'); + this.workspace.undo(false); + var precondition = this.redoOption.preconditionFn(this.scope); + chai.assert.equal(precondition, 'enabled', + 'Should be enabled when there are actions to redo'); + }); + + test('Redoes adding new block', function() { + // Add a new block, then undo it, then redo it. + this.workspace.newBlock('text'); + this.workspace.undo(false); + chai.assert.equal(this.workspace.getTopBlocks(false).length, 0); + this.redoOption.callback(this.scope); + chai.assert.equal(this.workspace.getTopBlocks(false).length, 1, + 'Should be 1 block after redo'); + }); + + test('Has correct label', function() { + chai.assert.equal(this.redoOption.displayText(), 'Redo'); + }); + }); + + suite('Cleanup', function() { + setup(function() { + this.cleanupOption = this.registry.getItem('cleanWorkspace'); + this.cleanupStub = sinon.stub(this.workspace, 'cleanUp'); + }); + + test('Enabled when multiple blocks', function() { + this.workspace.newBlock('text'); + this.workspace.newBlock('text'); + chai.assert.equal(this.cleanupOption.preconditionFn(this.scope), 'enabled', + 'Should be enabled if there are multiple blocks'); + }); + + test('Disabled when no blocks', function() { + chai.assert.equal(this.cleanupOption.preconditionFn(this.scope), 'disabled', + 'Should be disabled if there are no blocks'); + }); + + test('Hidden when not movable', function() { + sinon.stub(this.workspace, 'isMovable').returns(false); + chai.assert.equal(this.cleanupOption.preconditionFn(this.scope), 'hidden', + 'Should be hidden if the workspace is not movable'); + }); + + test('Calls workspace cleanup', function() { + this.cleanupOption.callback(this.scope); + sinon.assert.calledOnce(this.cleanupStub); + }); + + test('Has correct label', function() { + chai.assert.equal(this.cleanupOption.displayText(), 'Clean up Blocks'); + }); + }); + + suite('Collapse', function() { + setup(function() { + this.collapseOption = this.registry.getItem('collapseWorkspace'); + }); + + test('Enabled when uncollapsed blocks', function() { + this.workspace.newBlock('text'); + var block2 = this.workspace.newBlock('text'); + block2.setCollapsed(true); + chai.assert.equal(this.collapseOption.preconditionFn(this.scope), 'enabled', + 'Should be enabled when any blocks are expanded'); + }); + + test('Disabled when all blocks collapsed', function() { + this.workspace.newBlock('text').setCollapsed(true); + chai.assert.equal(this.collapseOption.preconditionFn(this.scope), 'disabled', + 'Should be disabled when no blocks are expanded'); + }); + + test('Hidden when no collapse option', function() { + var workspaceWithOptions = new Blockly.Workspace(new Blockly.Options({collapse: false})); + this.scope.workspace = workspaceWithOptions; + + try { + chai.assert.equal(this.collapseOption.preconditionFn(this.scope), 'hidden', + 'Should be hidden if collapse is disabled in options'); + } finally { + workspaceTeardown.call(this, workspaceWithOptions); + } + }); + + test('Collapses all blocks', function() { + // All blocks should be collapsed, even if some already were. + var block1 = this.workspace.newBlock('text'); + var block2 = this.workspace.newBlock('text'); + // Need to render block to properly collapse it. + block1.initSvg(); + block1.render(); + block1.setCollapsed(true); + + this.collapseOption.callback(this.scope); + this.clock.runAll(); + + chai.assert.isTrue(block1.isCollapsed(), + 'Previously collapsed block should still be collapsed'); + chai.assert.isTrue(block2.isCollapsed(), + 'Previously expanded block should now be collapsed'); + }); + + test('Has correct label', function() { + chai.assert.equal(this.collapseOption.displayText(), 'Collapse Blocks'); + }); + }); + + suite('Expand', function() { + setup(function() { + this.expandOption = this.registry.getItem('expandWorkspace'); + }); + + test('Enabled when collapsed blocks', function() { + this.workspace.newBlock('text'); + var block2 = this.workspace.newBlock('text'); + block2.setCollapsed(true); + + chai.assert.equal(this.expandOption.preconditionFn(this.scope), 'enabled', + 'Should be enabled when any blocks are collapsed'); + }); + + test('Disabled when no collapsed blocks', function() { + this.workspace.newBlock('text'); + chai.assert.equal(this.expandOption.preconditionFn(this.scope), 'disabled', + 'Should be disabled when no blocks are collapsed'); + }); + + test('Hidden when no collapse option', function() { + var workspaceWithOptions = new Blockly.Workspace(new Blockly.Options({collapse: false})); + this.scope.workspace = workspaceWithOptions; + + try { + chai.assert.equal(this.expandOption.preconditionFn(this.scope), 'hidden', + 'Should be hidden if collapse is disabled in options'); + } finally { + workspaceTeardown.call(this, workspaceWithOptions); + } + }); + + test('Expands all blocks', function() { + // All blocks should be expanded, even if some already were. + var block1 = this.workspace.newBlock('text'); + var block2 = this.workspace.newBlock('text'); + // Need to render block to properly collapse it. + block2.initSvg(); + block2.render(); + block2.setCollapsed(true); + + this.expandOption.callback(this.scope); + this.clock.runAll(); + + chai.assert.isFalse(block1.isCollapsed(), + 'Previously expanded block should still be expanded'); + chai.assert.isFalse(block2.isCollapsed(), + 'Previously collapsed block should now be expanded'); + }); + + test('Has correct label', function() { + chai.assert.equal(this.expandOption.displayText(), 'Expand Blocks'); + }); + }); + + suite('Delete', function() { + setup(function() { + this.deleteOption = this.registry.getItem('workspaceDelete'); + }); + + test('Enabled when blocks to delete', function() { + this.workspace.newBlock('text'); + chai.assert.equal(this.deleteOption.preconditionFn(this.scope), 'enabled'); + }); + + test('Disabled when no blocks to delete', function() { + chai.assert.equal(this.deleteOption.preconditionFn(this.scope), 'disabled'); + }); + + test('Deletes all blocks after confirming', function() { + // Mocks the confirmation dialog and calls the callback with 'true' simulating ok. + var confirmStub = sinon.stub(Blockly, 'confirm').callsArgWith(1, true); + + this.workspace.newBlock('text'); + this.workspace.newBlock('text'); + this.deleteOption.callback(this.scope); + this.clock.runAll(); + sinon.assert.calledOnce(confirmStub); + chai.assert.equal(this.workspace.getTopBlocks(false).length, 0); + }); + + test('Does not delete blocks if not confirmed', function() { + // Mocks the confirmation dialog and calls the callback with 'false' simulating cancel. + var confirmStub = sinon.stub(Blockly, 'confirm').callsArgWith(1, false); + + this.workspace.newBlock('text'); + this.workspace.newBlock('text'); + this.deleteOption.callback(this.scope); + this.clock.runAll(); + sinon.assert.calledOnce(confirmStub); + chai.assert.equal(this.workspace.getTopBlocks(false).length, 2); + }); + + test('No dialog for single block', function() { + var confirmStub = sinon.stub(Blockly, 'confirm'); + this.workspace.newBlock('text'); + this.deleteOption.callback(this.scope); + this.clock.runAll(); + + sinon.assert.notCalled(confirmStub); + chai.assert.equal(this.workspace.getTopBlocks(false).length, 0); + }); + + test('Has correct label for multiple blocks', function() { + this.workspace.newBlock('text'); + this.workspace.newBlock('text'); + + chai.assert.equal(this.deleteOption.displayText(this.scope), 'Delete 2 Blocks'); + }); + + test('Has correct label for single block', function() { + this.workspace.newBlock('text'); + chai.assert.equal(this.deleteOption.displayText(this.scope), 'Delete Block'); + }); + }); + }); + + suite('Block Items', function() { + setup(function() { + this.block = this.workspace.newBlock('text'); + this.scope = {block: this.block}; + }); + + suite('Duplicate', function() { + setup(function() { + this.duplicateOption = this.registry.getItem('blockDuplicate'); + }); + + test('Enabled when block is duplicatable', function() { + // Block is duplicatable by default + chai.assert.equal(this.duplicateOption.preconditionFn(this.scope), 'enabled'); + }); + + test('Disabled when block is not dupicatable', function() { + sinon.stub(this.block, 'isDuplicatable').returns(false); + chai.assert.equal(this.duplicateOption.preconditionFn(this.scope), 'disabled'); + }); + + test('Hidden when in flyout', function() { + this.block.isInFlyout = true; + chai.assert.equal(this.duplicateOption.preconditionFn(this.scope), 'hidden'); + }); + + test('Calls duplicate', function() { + var stub = sinon.stub(Blockly, 'duplicate'); + + this.duplicateOption.callback(this.scope); + + sinon.assert.calledOnce(stub); + sinon.assert.calledWith(stub, this.block); + }); + + test('Has correct label', function() { + chai.assert.equal(this.duplicateOption.displayText(), 'Duplicate'); + }); + }); + + suite('Comment', function() { + setup(function() { + this.commentOption = this.registry.getItem('blockComment'); + }); + + test('Enabled for normal block', function() { + chai.assert.equal(this.commentOption.preconditionFn(this.scope), 'enabled'); + }); + + test('Hidden for IE', function() { + var oldState = Blockly.utils.userAgent.IE; + try { + Blockly.utils.userAgent.IE = true; + chai.assert.equal(this.commentOption.preconditionFn(this.scope), 'hidden'); + } finally { + Blockly.utils.userAgent.IE = oldState; + } + }); + + test('Hidden for collapsed block', function() { + // Must render block to collapse it properly. + this.block.initSvg(); + this.block.render(); + this.block.setCollapsed(true); + + chai.assert.equal(this.commentOption.preconditionFn(this.scope), 'hidden'); + }); + + test('Creates comment if one did not exist', function() { + chai.assert.isNull(this.block.getCommentIcon(), 'New block should not have a comment'); + this.commentOption.callback(this.scope); + chai.assert.exists(this.block.getCommentIcon()); + chai.assert.isEmpty(this.block.getCommentText(), 'Block should have empty comment text'); + }); + + test('Removes comment if block had one', function() { + this.block.setCommentText('Test comment'); + this.commentOption.callback(this.scope); + chai.assert.isNull(this.block.getCommentText(), + 'Block should not have comment after removal'); + }); + + test('Has correct label for add comment', function() { + chai.assert.equal(this.commentOption.displayText(this.scope), 'Add Comment'); + }); + + test('Has correct label for remove comment', function() { + this.block.setCommentText('Test comment'); + chai.assert.equal(this.commentOption.displayText(this.scope), 'Remove Comment'); + }); + }); + + suite('Inline Variables', function() { + setup(function() { + this.inlineOption = this.registry.getItem('blockInline'); + }); + + test('Enabled when inputs to inline', function() { + this.block.appendValueInput('test1'); + this.block.appendValueInput('test2'); + chai.assert.equal(this.inlineOption.preconditionFn(this.scope), 'enabled'); + }); + }); + }); +}); diff --git a/tests/mocha/cursor_test.js b/tests/mocha/cursor_test.js index 6286ff283f8..f689526f262 100644 --- a/tests/mocha/cursor_test.js +++ b/tests/mocha/cursor_test.js @@ -6,6 +6,7 @@ suite('Cursor', function() { setup(function() { + sharedTestSetup.call(this); Blockly.defineBlocksWithJsonArray([{ "type": "input_statement", "message0": "%1 %2 %3 %4", @@ -72,10 +73,7 @@ suite('Cursor', function() { }; }); teardown(function() { - delete Blockly.Blocks['input_statement']; - delete Blockly.Blocks['field_input']; - - this.workspace.dispose(); + sharedTestTeardown.call(this); }); test('Next - From a Previous skip over next connection and block', function() { diff --git a/tests/mocha/dropdowndiv_test.js b/tests/mocha/dropdowndiv_test.js index 13880a11c57..c51c83deac1 100644 --- a/tests/mocha/dropdowndiv_test.js +++ b/tests/mocha/dropdowndiv_test.js @@ -7,6 +7,7 @@ suite('DropDownDiv', function() { suite('Positioning', function() { setup(function() { + sharedTestSetup.call(this); this.boundsStub = sinon.stub(Blockly.DropDownDiv, 'getBoundsInfo_') .returns({ left: 0, @@ -27,10 +28,7 @@ suite('DropDownDiv', function() { .get(function() { return 0; }); }); teardown(function() { - this.boundsStub.restore(); - this.sizeStub.restore(); - this.clientHeightStub.restore(); - this.clientTopStub.restore(); + sharedTestTeardown.call(this); }); test('Below, in Bounds', function() { var metrics = Blockly.DropDownDiv.getPositionMetrics_(50, 0, 50, -10); diff --git a/tests/mocha/event_test.js b/tests/mocha/event_test.js index 6cf675875e3..77fd0c2918e 100644 --- a/tests/mocha/event_test.js +++ b/tests/mocha/event_test.js @@ -6,6 +6,8 @@ suite('Events', function() { setup(function() { + sharedTestSetup.call(this, {fireEventsNow: false}); + this.eventsFireSpy = sinon.spy(Blockly.Events, 'fire'); this.workspace = new Blockly.Workspace(); Blockly.defineBlocksWithJsonArray([{ 'type': 'field_variable_test_block', @@ -25,45 +27,21 @@ suite('Events', function() { }); teardown(function() { - delete Blockly.Blocks['field_variable_test_block']; - delete Blockly.Blocks['simple_test_block']; - this.workspace.dispose(); - - // Clear Blockly.Event state. - Blockly.Events.setGroup(false); - Blockly.Events.disabled_ = 0; + sharedTestTeardown.call(this); }); - function checkExactEventValues(event, values) { - var keys = Object.keys(values); - for (var i = 0; i < keys.length; i++) { - var field = keys[i]; - chai.assert.equal(values[field], event[field]); - } - } - - function checkCreateEventValues(event, block, ids, type) { - var expected_xml = Blockly.Xml.domToText(Blockly.Xml.blockToDom(block)); - var result_xml = Blockly.Xml.domToText(event.xml); - chai.assert.equal(expected_xml, result_xml); - chai.assert.deepEqual(ids, event.ids); - chai.assert.equal(type, event.type); - } - - function checkDeleteEventValues(event, block, ids, type) { - var expected_xml = Blockly.Xml.domToText(Blockly.Xml.blockToDom(block)); - var result_xml = Blockly.Xml.domToText(event.oldXml); - chai.assert.equal(expected_xml, result_xml); - chai.assert.deepEqual(ids, event.ids); - chai.assert.equal(type, event.type); - } - - function createSimpleTestBlock(workspace, opt_prototypeName) { + function createSimpleTestBlock(workspace) { // Disable events while constructing the block: this is a test of the - // Blockly.Event constructors, not the block constructor.s + // Blockly.Event constructors, not the block constructors. + // Set the group id to avoid an extra call to genUid. Blockly.Events.disable(); - var block = new Blockly.Block( - workspace, opt_prototypeName || 'simple_test_block'); + try { + Blockly.Events.setGroup('unused'); + var block = new Blockly.Block( + workspace, 'simple_test_block'); + } finally { + Blockly.Events.setGroup(false); + } Blockly.Events.enable(); return block; } @@ -71,84 +49,104 @@ suite('Events', function() { suite('Constructors', function() { test('Abstract', function() { var event = new Blockly.Events.Abstract(); - chai.assert.isUndefined(event.blockId); - chai.assert.isUndefined(event.workspaceId); - chai.assert.isUndefined(event.varId); - checkExactEventValues(event, {'group': '', 'recordUndo': true}); + assertEventEquals(event, undefined, undefined, undefined, { + 'recordUndo': true, + 'group': '' + }); }); test('UI event without block', function() { - Blockly.Events.setGroup('testGroup'); + var TEST_GROUP_ID = 'testGroup'; + Blockly.Events.setGroup(TEST_GROUP_ID); var event = new Blockly.Events.Ui(null, 'foo', 'bar', 'baz'); - checkExactEventValues(event, - { - 'blockId': null, - 'workspaceId': null, - 'type': 'ui', - 'oldValue': 'bar', - 'newValue': 'baz', - 'element': 'foo', - 'recordUndo': false, - 'group': 'testGroup' - }); + assertEventEquals(event, Blockly.Events.UI, null, null, { + 'element': 'foo', + 'oldValue': 'bar', + 'newValue': 'baz', + 'recordUndo': false, + 'group': TEST_GROUP_ID + }); }); suite('With simple blocks', function() { setup(function() { - this.FAKE_ID = 'hedgehog'; - sinon.stub(Blockly.utils, "genUid").returns(this.FAKE_ID); + this.TEST_BLOCK_ID = 'test_block_id'; + this.TEST_PARENT_ID = 'parent'; + // genUid is expected to be called either once or twice in this suite. + this.genUidStub = createGenUidStubWithReturns( + [this.TEST_BLOCK_ID, this.TEST_PARENT_ID]); this.block = createSimpleTestBlock(this.workspace); - sinon.restore(); - }); - - teardown(function() { }); test('Block base', function() { var event = new Blockly.Events.BlockBase(this.block); - chai.assert.isUndefined(event.varId); - checkExactEventValues(event, + sinon.assert.calledOnce(this.genUidStub); + assertEventEquals(event, undefined, + this.workspace.id, this.TEST_BLOCK_ID, { - 'blockId': this.FAKE_ID, - 'workspaceId': this.workspace.id, + 'varId': undefined, + 'recordUndo': true, 'group': '', - 'recordUndo': true }); }); test('Create', function() { var event = new Blockly.Events.Create(this.block); - checkCreateEventValues(event, this.block, [this.FAKE_ID], 'create'); + sinon.assert.calledOnce(this.genUidStub); + assertEventEquals(event, Blockly.Events.CREATE, + this.workspace.id, this.TEST_BLOCK_ID, + { + 'recordUndo': true, + 'group': '', + }); }); test('Block create', function() { var event = new Blockly.Events.BlockCreate(this.block); - checkCreateEventValues(event, this.block, [this.FAKE_ID], 'create'); + sinon.assert.calledOnce(this.genUidStub); + assertEventEquals(event, Blockly.Events.CREATE, + this.workspace.id, this.TEST_BLOCK_ID, + { + 'recordUndo': true, + 'group': '', + }); }); test('Delete', function() { var event = new Blockly.Events.Delete(this.block); - checkDeleteEventValues(event, this.block, [this.FAKE_ID], 'delete'); + sinon.assert.calledOnce(this.genUidStub); + assertEventEquals(event, Blockly.Events.DELETE, + this.workspace.id, this.TEST_BLOCK_ID, + { + 'recordUndo': true, + 'group': '', + }); }); test('Block delete', function() { var event = new Blockly.Events.BlockDelete(this.block); - checkDeleteEventValues(event, this.block, [this.FAKE_ID], 'delete'); + sinon.assert.calledOnce(this.genUidStub); + assertEventEquals(event, Blockly.Events.DELETE, + this.workspace.id, this.TEST_BLOCK_ID, + { + 'recordUndo': true, + 'group': '', + }); }); test('UI event with block', function() { - Blockly.Events.setGroup('testGroup'); + var TEST_GROUP_ID = 'testGroup'; + Blockly.Events.setGroup(TEST_GROUP_ID); var event = new Blockly.Events.Ui(this.block, 'foo', 'bar', 'baz'); - checkExactEventValues(event, + sinon.assert.calledOnce(this.genUidStub); + assertEventEquals(event, Blockly.Events.UI, this.workspace.id, + this.TEST_BLOCK_ID, { - 'blockId': this.FAKE_ID, - 'workspaceId': this.workspace.id, - 'type': 'ui', + 'element': 'foo', 'oldValue': 'bar', 'newValue': 'baz', - 'element': 'foo', 'recordUndo': false, - 'group': 'testGroup' + 'group': TEST_GROUP_ID }); }); @@ -158,8 +156,15 @@ suite('Events', function() { this.block.xy_ = coordinate; var event = new Blockly.Events.Move(this.block); - checkExactEventValues(event, - {'oldCoordinate': coordinate, 'type': 'move'}); + sinon.assert.calledOnce(this.genUidStub); + assertEventEquals(event, Blockly.Events.MOVE, this.workspace.id, + this.TEST_BLOCK_ID, { + 'oldParentId': undefined, + 'oldInputName': undefined, + 'oldCoordinate': coordinate, + 'recordUndo': true, + 'group': '' + }); }); test('Block move by coordinate', function() { @@ -167,58 +172,239 @@ suite('Events', function() { this.block.xy_ = coordinate; var event = new Blockly.Events.BlockMove(this.block); - checkExactEventValues(event, - {'oldCoordinate': coordinate, 'type': 'move'}); + sinon.assert.calledOnce(this.genUidStub); + assertEventEquals(event, Blockly.Events.MOVE, this.workspace.id, + this.TEST_BLOCK_ID, { + 'oldParentId': undefined, + 'oldInputName': undefined, + 'oldCoordinate': coordinate, + 'recordUndo': true, + 'group': '' + }); }); suite('Move by parent', function() { setup(function() { - sinon.stub(Blockly.utils, "genUid").returns("parent"); this.parentBlock = createSimpleTestBlock(this.workspace); - sinon.restore(); this.block.parentBlock_ = this.parentBlock; this.block.xy_ = new Blockly.utils.Coordinate(3, 4); }); - teardown(function() { + // This needs to be cleared, otherwise workspace.dispose will fail. this.block.parentBlock_ = null; }); test('Move by parent', function() { - // Expect the oldParentId to be set but not the oldCoordinate to be set. var event = new Blockly.Events.Move(this.block); - checkExactEventValues(event, {'oldCoordinate': undefined, - 'oldParentId': 'parent', 'type': 'move'}); + sinon.assert.calledTwice(this.genUidStub); + assertEventEquals(event, Blockly.Events.MOVE, this.workspace.id, + this.TEST_BLOCK_ID, { + 'oldParentId': this.TEST_PARENT_ID, + 'oldInputName': undefined, + 'oldCoordinate': undefined, + 'recordUndo': true, + 'group': '' + }); }); test('Block move by parent', function() { - // Expect the oldParentId to be set but not the oldCoordinate to be set. var event = new Blockly.Events.BlockMove(this.block); - checkExactEventValues(event, {'oldCoordinate': undefined, - 'oldParentId': 'parent', 'type': 'move'}); + sinon.assert.calledTwice(this.genUidStub); + assertEventEquals(event, Blockly.Events.MOVE, this.workspace.id, + this.TEST_BLOCK_ID, + { + 'oldParentId': this.TEST_PARENT_ID, + 'oldInputName': undefined, + 'oldCoordinate': undefined, + 'recordUndo': true, + 'group': '' + }); }); }); }); }); + suite('With shadow blocks', function() { + setup(function() { + this.TEST_BLOCK_ID = 'test_block_id'; + this.TEST_PARENT_ID = 'parent'; + // genUid is expected to be called either once or twice in this suite. + this.genUidStub = createGenUidStubWithReturns( + [this.TEST_BLOCK_ID, this.TEST_PARENT_ID]); + this.block = createSimpleTestBlock(this.workspace); + this.block.setShadow(true); + }); + + test('Block base', function() { + var event = new Blockly.Events.BlockBase(this.block); + sinon.assert.calledOnce(this.genUidStub); + assertEventEquals(event, undefined, + this.workspace.id, this.TEST_BLOCK_ID, + { + 'varId': undefined, + 'recordUndo': true, + 'group': '', + }); + }); + + test('Change', function() { + var event = new Blockly.Events.Change( + this.block, 'field', 'FIELD_NAME', 'old', 'new'); + sinon.assert.calledOnce(this.genUidStub); + assertEventEquals(event, Blockly.Events.CHANGE, + this.workspace.id, this.TEST_BLOCK_ID, + { + 'varId': undefined, + 'element': 'field', + 'name': 'FIELD_NAME', + 'oldValue': 'old', + 'newValue': 'new', + 'recordUndo': true, + 'group': '', + }); + }); + + test('Block change', function() { + var event = new Blockly.Events.BlockChange( + this.block, 'field', 'FIELD_NAME', 'old', 'new'); + sinon.assert.calledOnce(this.genUidStub); + assertEventEquals(event, Blockly.Events.CHANGE, + this.workspace.id, this.TEST_BLOCK_ID, + { + 'varId': undefined, + 'element': 'field', + 'name': 'FIELD_NAME', + 'oldValue': 'old', + 'newValue': 'new', + 'recordUndo': true, + 'group': '', + }); + }); + + test('Create', function() { + var event = new Blockly.Events.Create(this.block); + sinon.assert.calledOnce(this.genUidStub); + assertEventEquals(event, Blockly.Events.CREATE, + this.workspace.id, this.TEST_BLOCK_ID, + { + 'recordUndo': false, + 'group': '', + }); + }); + + test('Block create', function() { + var event = new Blockly.Events.BlockCreate(this.block); + sinon.assert.calledOnce(this.genUidStub); + assertEventEquals(event, Blockly.Events.CREATE, + this.workspace.id, this.TEST_BLOCK_ID, + { + 'recordUndo': false, + 'group': '', + }); + }); + + test('Delete', function() { + var event = new Blockly.Events.Delete(this.block); + sinon.assert.calledOnce(this.genUidStub); + assertEventEquals(event, Blockly.Events.DELETE, + this.workspace.id, this.TEST_BLOCK_ID, + { + 'recordUndo': false, + 'group': '', + }); + }); + + test('Block delete', function() { + var event = new Blockly.Events.BlockDelete(this.block); + sinon.assert.calledOnce(this.genUidStub); + assertEventEquals(event, Blockly.Events.DELETE, + this.workspace.id, this.TEST_BLOCK_ID, + { + 'recordUndo': false, + 'group': '', + }); + }); + + suite('Move', function() { + setup(function() { + this.parentBlock = createSimpleTestBlock(this.workspace); + this.block.parentBlock_ = this.parentBlock; + this.block.xy_ = new Blockly.utils.Coordinate(3, 4); + }); + + teardown(function() { + // This needs to be cleared, otherwise workspace.dispose will fail. + this.block.parentBlock_ = null; + }); + + test('Move', function() { + var event = new Blockly.Events.Move(this.block); + sinon.assert.calledTwice(this.genUidStub); + assertEventEquals(event, Blockly.Events.MOVE, this.workspace.id, + this.TEST_BLOCK_ID, { + 'oldParentId': this.TEST_PARENT_ID, + 'oldInputName': undefined, + 'oldCoordinate': undefined, + 'recordUndo': false, + 'group': '' + }); + }); + + test('Block move', function() { + var event = new Blockly.Events.BlockMove(this.block); + sinon.assert.calledTwice(this.genUidStub); + assertEventEquals(event, Blockly.Events.MOVE, this.workspace.id, + this.TEST_BLOCK_ID, + { + 'oldParentId': this.TEST_PARENT_ID, + 'oldInputName': undefined, + 'oldCoordinate': undefined, + 'recordUndo': false, + 'group': '' + }); + }); + }); + }); + suite('With variable getter blocks', function() { setup(function() { - this.block = createSimpleTestBlock(this.workspace, 'field_variable_test_block'); + this.genUidStub = createGenUidStubWithReturns( + [this.TEST_BLOCK_ID, 'test_var_id', 'test_group_id']); + // Disabling events when creating a block with variable can cause issues + // at workspace dispose. + this.block = new Blockly.Block( + this.workspace, 'field_variable_test_block'); }); test('Change', function() { - var event = - new Blockly.Events.Change(this.block, 'field', 'VAR', 'id1', 'id2'); - checkExactEventValues(event, {'element': 'field', 'name': 'VAR', - 'oldValue': 'id1', 'newValue': 'id2', 'type': 'change'}); + var event = new Blockly.Events.Change( + this.block, 'field', 'VAR', 'id1', 'id2'); + assertEventEquals(event, Blockly.Events.CHANGE, this.workspace.id, + this.TEST_BLOCK_ID, + { + 'element': 'field', + 'name': 'VAR', + 'oldValue': 'id1', + 'newValue': 'id2', + 'recordUndo': true, + 'group': '' + }); }); test('Block change', function() { var event = new Blockly.Events.BlockChange( this.block, 'field', 'VAR', 'id1', 'id2'); - checkExactEventValues(event, {'element': 'field', 'name': 'VAR', - 'oldValue': 'id1', 'newValue': 'id2', 'type': 'change'}); + assertEventEquals(event, Blockly.Events.CHANGE, this.workspace.id, + this.TEST_BLOCK_ID, + { + 'element': 'field', + 'name': 'VAR', + 'oldValue': 'id1', + 'newValue': 'id2', + 'recordUndo': true, + 'group': '' + }); }); }); }); @@ -247,34 +433,57 @@ suite('Events', function() { suite('Constructors', function() { test('Var base', function() { var event = new Blockly.Events.VarBase(this.variable); - chai.assert.isUndefined(event.blockId); - checkExactEventValues(event, {'varId': 'id1', - 'workspaceId': this.workspace.id, 'group': '', 'recordUndo': true}); + assertEventEquals(event, undefined, this.workspace.id, undefined, { + 'varId': 'id1', + 'recordUndo': true, + 'group': '' + }); }); test('Var create', function() { var event = new Blockly.Events.VarCreate(this.variable); - checkExactEventValues(event, {'varName': 'name1', 'varType': 'type1', - 'type': 'var_create'}); + assertEventEquals(event, Blockly.Events.VAR_CREATE, this.workspace.id, + undefined, + { + 'varId': 'id1', + 'varType': 'type1', + 'varName': 'name1', + 'recordUndo': true, + 'group': '' + }); }); test('Var delete', function() { var event = new Blockly.Events.VarDelete(this.variable); - checkExactEventValues(event, {'varName': 'name1', 'varType': 'type1', - 'varId':'id1', 'type': 'var_delete'}); + assertEventEquals(event, Blockly.Events.VAR_DELETE, this.workspace.id, + undefined, + { + 'varId': 'id1', + 'varType': 'type1', + 'varName': 'name1', + 'recordUndo': true, + 'group': '' + }); }); test('Var rename', function() { var event = new Blockly.Events.VarRename(this.variable, 'name2'); - checkExactEventValues(event, {'varId': 'id1', 'oldName': 'name1', - 'newName': 'name2', 'type': 'var_rename'}); + assertEventEquals(event, Blockly.Events.VAR_RENAME, this.workspace.id, + undefined, + { + 'varId': 'id1', + 'oldName': 'name1', + 'newName': 'name2', + 'recordUndo': true, + 'group': '' + }); }); }); suite('fromJson', function() { test('Var create', function() { var event = new Blockly.Events.VarCreate(this.variable); - var event2 = new Blockly.Events.VarCreate(null); + var event2 = new Blockly.Events.VarCreate(); var json = event.toJson(); event2.fromJson(json); @@ -282,7 +491,7 @@ suite('Events', function() { }); test('Var delete', function() { var event = new Blockly.Events.VarDelete(this.variable); - var event2 = new Blockly.Events.VarDelete(null); + var event2 = new Blockly.Events.VarDelete(); var json = event.toJson(); event2.fromJson(json); @@ -290,7 +499,7 @@ suite('Events', function() { }); test('Var rename', function() { var event = new Blockly.Events.VarRename(this.variable, ''); - var event2 = new Blockly.Events.VarRename(null); + var event2 = new Blockly.Events.VarRename(); var json = event.toJson(); event2.fromJson(json); @@ -378,7 +587,6 @@ suite('Events', function() { }); suite('Filters', function() { - function addMoveEvent(events, block, newX, newY) { events.push(new Blockly.Events.BlockMove(block)); block.xy_ = new Blockly.utils.Coordinate(newX, newY); @@ -400,7 +608,7 @@ suite('Events', function() { new Blockly.Events.Ui(block, 'click', undefined, undefined) ]; var filteredEvents = Blockly.Events.filter(events, true); - chai.assert.equal(4, filteredEvents.length); // no event should have been removed. + chai.assert.equal(filteredEvents.length, 4); // no event should have been removed. // test that the order hasn't changed chai.assert.isTrue(filteredEvents[0] instanceof Blockly.Events.BlockCreate); chai.assert.isTrue(filteredEvents[1] instanceof Blockly.Events.BlockMove); @@ -418,7 +626,7 @@ suite('Events', function() { new Blockly.Events.BlockMove(block2) ]; var filteredEvents = Blockly.Events.filter(events, true); - chai.assert.equal(4, filteredEvents.length); // no event should have been removed. + chai.assert.equal(filteredEvents.length, 4); // no event should have been removed. }); test('Forward', function() { @@ -428,12 +636,12 @@ suite('Events', function() { addMoveEvent(events, block, 2, 2); addMoveEvent(events, block, 3, 3); var filteredEvents = Blockly.Events.filter(events, true); - chai.assert.equal(2, filteredEvents.length); // duplicate moves should have been removed. + chai.assert.equal(filteredEvents.length, 2); // duplicate moves should have been removed. // test that the order hasn't changed chai.assert.isTrue(filteredEvents[0] instanceof Blockly.Events.BlockCreate); chai.assert.isTrue(filteredEvents[1] instanceof Blockly.Events.BlockMove); - chai.assert.equal(3, filteredEvents[1].newCoordinate.x); - chai.assert.equal(3, filteredEvents[1].newCoordinate.y); + chai.assert.equal(filteredEvents[1].newCoordinate.x, 3); + chai.assert.equal(filteredEvents[1].newCoordinate.y, 3); }); test('Backward', function() { @@ -443,12 +651,12 @@ suite('Events', function() { addMoveEvent(events, block, 2, 2); addMoveEvent(events, block, 3, 3); var filteredEvents = Blockly.Events.filter(events, false); - chai.assert.equal(2, filteredEvents.length); // duplicate event should have been removed. + chai.assert.equal(filteredEvents.length, 2); // duplicate event should have been removed. // test that the order hasn't changed chai.assert.isTrue(filteredEvents[0] instanceof Blockly.Events.BlockCreate); chai.assert.isTrue(filteredEvents[1] instanceof Blockly.Events.BlockMove); - chai.assert.equal(1, filteredEvents[1].newCoordinate.x); - chai.assert.equal(1, filteredEvents[1].newCoordinate.y); + chai.assert.equal(filteredEvents[1].newCoordinate.x, 1); + chai.assert.equal(filteredEvents[1].newCoordinate.y, 1); }); test('Merge move events', function() { @@ -457,9 +665,9 @@ suite('Events', function() { addMoveEvent(events, block, 0, 0); addMoveEvent(events, block, 1, 1); var filteredEvents = Blockly.Events.filter(events, true); - chai.assert.equal(1, filteredEvents.length); // second move event merged into first - chai.assert.equal(1, filteredEvents[0].newCoordinate.x); - chai.assert.equal(1, filteredEvents[0].newCoordinate.y); + chai.assert.equal(filteredEvents.length, 1); // second move event merged into first + chai.assert.equal(filteredEvents[0].newCoordinate.x, 1); + chai.assert.equal(filteredEvents[0].newCoordinate.y, 1); }); test('Merge change events', function() { @@ -469,7 +677,7 @@ suite('Events', function() { new Blockly.Events.Change(block1, 'field', 'VAR', 'item1', 'item2') ]; var filteredEvents = Blockly.Events.filter(events, true); - chai.assert.equal(1, filteredEvents.length); // second change event merged into first + chai.assert.equal(filteredEvents.length, 1); // second change event merged into first chai.assert.equal(filteredEvents[0].oldValue, 'item'); chai.assert.equal(filteredEvents[0].newValue, 'item2'); }); @@ -504,7 +712,7 @@ suite('Events', function() { ]; var filteredEvents = Blockly.Events.filter(events, true); // click and stackclick should both exist - chai.assert.equal(2, filteredEvents.length); + chai.assert.equal(filteredEvents.length, 2); chai.assert.equal(filteredEvents[0].element, 'click'); chai.assert.equal(filteredEvents[1].element, 'stackclick'); }); @@ -525,7 +733,7 @@ suite('Events', function() { var filteredEvents = Blockly.Events.filter(events, true); // The two events should be merged, but because nothing has changed // they will be filtered out. - chai.assert.equal(0, filteredEvents.length); + chai.assert.equal(filteredEvents.length, 0); }); test('Move events different blocks not merged', function() { @@ -545,7 +753,7 @@ suite('Events', function() { var filteredEvents = Blockly.Events.filter(events, true); // Nothing should have merged. - chai.assert.equal(4, filteredEvents.length); + chai.assert.equal(filteredEvents.length, 4); // test that the order hasn't changed chai.assert.isTrue(filteredEvents[0] instanceof Blockly.Events.BlockMove); chai.assert.isTrue(filteredEvents[1] instanceof Blockly.Events.BlockMove); @@ -556,93 +764,137 @@ suite('Events', function() { suite('Firing', function() { setup(function() { - createEventsFireStub(); - }); - - teardown(function() { - sinon.restore(); + this.changeListenerSpy = createFireChangeListenerSpy(this.workspace); }); - test('Block dispose triggers BlockDelete', function() { + test('Block dispose triggers Delete', function() { try { var toolbox = document.getElementById('toolbox-categories'); var workspaceSvg = Blockly.inject('blocklyDiv', {toolbox: toolbox}); - Blockly.Events.fire.firedEvents_ = []; + var TEST_BLOCK_ID = 'test_block_id'; + var genUidStub = createGenUidStubWithReturns( + [TEST_BLOCK_ID, 'test_group_id']); var block = workspaceSvg.newBlock(''); block.initSvg(); block.setCommentText('test comment'); + var expectedOldXml = Blockly.Xml.blockToDomWithXY(block); + var expectedId = block.id; - var event = new Blockly.Events.BlockDelete(block); + // Run all queued events. + this.clock.runAll(); - workspaceSvg.clearUndo(); + this.eventsFireSpy.resetHistory(); + var changeListenerSpy = createFireChangeListenerSpy(workspaceSvg); block.dispose(); - var firedEvents = workspaceSvg.undoStack_; - chai.assert.equal( - Blockly.Xml.domToText(firedEvents[0].oldXml), - Blockly.Xml.domToText(event.oldXml), - 'Delete event created by dispose'); + // Run all queued events. + this.clock.runAll(); + + // Expect two calls to genUid: one to set the block's ID, and one for + // the event group's ID for creating block. + sinon.assert.calledTwice(genUidStub); + + assertNthCallEventArgEquals( + this.eventsFireSpy, 0, Blockly.Events.Delete, + {oldXml: expectedOldXml, group: ''}, + workspaceSvg.id, expectedId); + assertNthCallEventArgEquals( + changeListenerSpy, 0, Blockly.Events.Delete, + {oldXml: expectedOldXml, group: ''}, + workspaceSvg.id, expectedId); + + // Expect the workspace to not have a variable with ID 'test_block_id'. + chai.assert.isNull(this.workspace.getVariableById(TEST_BLOCK_ID)); } finally { - workspaceSvg.dispose(); + workspaceTeardown.call(this, workspaceSvg); } }); test('New block new var', function() { - // Expect three calls to genUid: one to set the block's ID, one for the event - // group's id, and one for the variable's ID. - var stub = sinon.stub(Blockly.utils, "genUid"); - stub.onCall(0).returns('1'); - stub.onCall(1).returns('2'); - stub.onCall(2).returns('3'); + var TEST_BLOCK_ID = 'test_block_id'; + var TEST_GROUP_ID = 'test_group_id'; + var TEST_VAR_ID = 'test_var_id'; + var genUidStub = createGenUidStubWithReturns( + [TEST_BLOCK_ID, TEST_GROUP_ID, TEST_VAR_ID]); var _ = this.workspace.newBlock('field_variable_test_block'); + var TEST_VAR_NAME = 'item'; // As defined in block's json. - var firedEvents = this.workspace.undoStack_; - // Expect two events: varCreate and block create. - chai.assert.equal(2, firedEvents.length); - - var event0 = firedEvents[0]; - var event1 = firedEvents[1]; - chai.assert.equal(event0.type, 'var_create'); - chai.assert.equal(event1.type, 'create'); + // Run all queued events. + this.clock.runAll(); - // Expect the events to have the same group ID. - chai.assert.equal(event0.group, event1.group); - - // Expect the group ID to be the result of the second call to genUid. - chai.assert.equal(event0.group, '2'); - - // Expect the workspace to have a variable with ID '3'. - chai.assert.isNotNull(this.workspace.getVariableById('3')); - chai.assert.equal(event0.varId, '3'); + // Expect three calls to genUid: one to set the block's ID, one for the event + // group's ID, and one for the variable's ID. + sinon.assert.calledThrice(genUidStub); + + // Expect two events fired: varCreate and block create. + sinon.assert.calledTwice(this.eventsFireSpy); + // Expect both events to trigger change listener. + sinon.assert.calledTwice(this.changeListenerSpy); + // Both events should be on undo stack + chai.assert.equal(this.workspace.undoStack_.length, 2, + 'Undo stack length'); + + assertNthCallEventArgEquals( + this.changeListenerSpy, 0, Blockly.Events.VarCreate, + {group: TEST_GROUP_ID, varId: TEST_VAR_ID, varName: TEST_VAR_NAME}, + this.workspace.id, undefined); + assertNthCallEventArgEquals( + this.changeListenerSpy, 1, Blockly.Events.Create, + {group: TEST_GROUP_ID}, this.workspace.id, TEST_BLOCK_ID); + + // Expect the workspace to have a variable with ID 'test_var_id'. + chai.assert.isNotNull(this.workspace.getVariableById(TEST_VAR_ID)); }); test('New block new var xml', function() { - // The sequence of events should be the same whether the block was created from - // XML or directly. + var TEST_GROUP_ID = 'test_group_id'; + var genUidStub = createGenUidStubWithReturns(TEST_GROUP_ID); var dom = Blockly.Xml.textToDom( '' + - ' ' + - ' name1' + + ' ' + + ' name1' + ' ' + ''); Blockly.Xml.domToWorkspace(dom, this.workspace); - - var firedEvents = this.workspace.undoStack_; - // Expect two events: varCreate and block create. - chai.assert.equal(2, firedEvents.length); - - var event0 = firedEvents[0]; - var event1 = firedEvents[1]; - chai.assert.equal(event0.type, 'var_create'); - chai.assert.equal(event1.type, 'create'); - - // Expect the events to have the same group ID. - chai.assert.equal(event0.group, event1.group); - - // Expect the workspace to have a variable with ID 'id1'. - chai.assert.isNotNull(this.workspace.getVariableById('id1')); - chai.assert.equal(event0.varId, 'id1'); + var TEST_BLOCK_ID = 'test_block_id'; + var TEST_VAR_ID = 'test_var_id'; + var TEST_VAR_NAME = 'name1'; + + // Run all queued events. + this.clock.runAll(); + + // Expect one call to genUid: for the event group's id + sinon.assert.calledOnce(genUidStub); + + // When block is created using domToWorkspace, 5 events are fired: + // 1. varCreate (events disabled) + // 2. varCreate + // 3. block create + // 4. move (no-op, is filtered out) + // 5. finished loading + sinon.assert.callCount(this.eventsFireSpy, 5); + // The first varCreate and move event should have been ignored. + sinon.assert.callCount(this.changeListenerSpy, 3); + // Expect two events on undo stack: varCreate and block create. + chai.assert.equal(this.workspace.undoStack_.length, 2, + 'Undo stack length'); + + assertNthCallEventArgEquals( + this.changeListenerSpy, 0, Blockly.Events.VarCreate, + {group: TEST_GROUP_ID, varId: TEST_VAR_ID, varName: TEST_VAR_NAME}, + this.workspace.id, undefined); + assertNthCallEventArgEquals( + this.changeListenerSpy, 1, Blockly.Events.Create, + {group: TEST_GROUP_ID}, this.workspace.id, TEST_BLOCK_ID); + + // Finished loading event should not be part of event group. + assertNthCallEventArgEquals( + this.changeListenerSpy, 2, Blockly.Events.FinishedLoading, + {group: ''}, this.workspace.id, undefined); + + // Expect the workspace to have a variable with ID 'test_var_id'. + chai.assert.isNotNull(this.workspace.getVariableById(TEST_VAR_ID)); }); }); }); diff --git a/tests/mocha/extensions_test.js b/tests/mocha/extensions_test.js index ea9a81bb462..5c5cc23f5db 100644 --- a/tests/mocha/extensions_test.js +++ b/tests/mocha/extensions_test.js @@ -6,31 +6,21 @@ suite('Extensions', function() { setup(function() { + sharedTestSetup.call(this); this.workspace = new Blockly.Workspace(); - this.blockTypesCleanup_ = []; this.extensionsCleanup_ = []; }); teardown(function() { - var i; - for (i = 0; i < this.blockTypesCleanup_.length; i++) { - var blockType = this.blockTypesCleanup_[i]; - delete Blockly.Blocks[blockType]; - } - for (i = 0; i < this.extensionsCleanup_.length; i++) { + sharedTestTeardown.call(this); + for (let i = 0; i < this.extensionsCleanup_.length; i++) { var extension = this.extensionsCleanup_[i]; delete Blockly.Extensions.ALL_[extension]; } - this.workspace.dispose(); - // Clear Blockly.Event state. - Blockly.Events.setGroup(false); - Blockly.Events.disabled_ = 0; - sinon.restore(); }); test('Definition before and after block type', function() { this.extensionsCleanup_.push('extensions_test_before'); this.extensionsCleanup_.push('extensions_test_after'); - this.blockTypesCleanup_.push('extension_test_block'); chai.assert.isUndefined(Blockly.Extensions.ALL_['extensions_test_before']); var beforeCallback = sinon.spy(); @@ -62,9 +52,6 @@ suite('Extensions', function() { }); test('Parent tooltip when inline', function() { - this.blockTypesCleanup_.push('test_parent_tooltip_when_inline'); - this.blockTypesCleanup_.push('test_parent'); - var defaultTooltip = "defaultTooltip"; var parentTooltip = "parentTooltip"; Blockly.defineBlocksWithJsonArray([ @@ -98,7 +85,7 @@ suite('Extensions', function() { // Tooltip is normal before connected to parent. var parent = new Blockly.Block(this.workspace, 'test_parent'); chai.assert.equal(parent.tooltip, parentTooltip); - chai.assert.isFalse(!!parent.inputsInline); + chai.assert.notExists(parent.inputsInline); // Tooltip is normal when parent is not inline. parent.getInput('INPUT').connection.connect(block.outputConnection); @@ -118,7 +105,6 @@ suite('Extensions', function() { suite('Mixin', function() { test('Basic', function() { this.extensionsCleanup_.push('mixin_test'); - this.blockTypesCleanup_.push('test_block_mixin'); var testMixin = { field: 'FIELD', @@ -133,6 +119,7 @@ suite('Extensions', function() { chai.assert.typeOf(Blockly.Extensions.ALL_['mixin_test'], 'function'); + Blockly.defineBlocksWithJsonArray([{ "type": "test_block_mixin", "message0": "test_block_mixin", @@ -148,7 +135,6 @@ suite('Extensions', function() { suite('Mutator', function() { test('Basic', function() { this.extensionsCleanup_.push('mutator_test'); - this.blockTypesCleanup_.push('mutator_test_block'); Blockly.defineBlocksWithJsonArray([{ "type": "mutator_test_block", @@ -186,7 +172,6 @@ suite('Extensions', function() { test('With helper function', function() { this.extensionsCleanup_.push('extensions_test'); - this.blockTypesCleanup_.push('mutator_test_block'); Blockly.defineBlocksWithJsonArray([{ "type": "mutator_test_block", @@ -218,7 +203,6 @@ suite('Extensions', function() { test('No dialog', function() { this.extensionsCleanup_.push('mutator_test'); - this.blockTypesCleanup_.push('mutator_test_block'); Blockly.defineBlocksWithJsonArray([{ "type": "mutator_test_block", @@ -245,16 +229,14 @@ suite('Extensions', function() { // Make sure all of the functions were installed correctly. chai.assert.equal(block.domToMutation(), 'domToMutationFn'); chai.assert.equal(block.mutationToDom(), 'mutationToDomFn'); - chai.assert.isFalse(block.hasOwnProperty('compose')); - chai.assert.isFalse(block.hasOwnProperty('decompose')); + chai.assert.isFalse(Object.prototype.hasOwnProperty.call(block, 'compose')); + chai.assert.isFalse(Object.prototype.hasOwnProperty.call(block, 'decompose')); }); }); }); suite('Error cases', function() { test('Missing extension', function() { - this.blockTypesCleanup_.push('missing_extension_block'); - Blockly.defineBlocksWithJsonArray([{ "type": "missing_extension_block", "message0": "missing_extension_block", @@ -270,7 +252,6 @@ suite('Extensions', function() { test('Mixin overwrites local value', function() { this.extensionsCleanup_.push('mixin_bad_inputList'); - this.blockTypesCleanup_.push('test_block_bad_inputList'); var TEST_MIXIN_BAD_INPUTLIST = { inputList: 'bad inputList' // Defined in constructor @@ -295,7 +276,6 @@ suite('Extensions', function() { test('Mixin overwrites prototype', function() { this.extensionsCleanup_.push('mixin_bad_colour_'); - this.blockTypesCleanup_.push('test_block_bad_colour'); var TEST_MIXIN_BAD_COLOUR = { colour_: 'bad colour_' // Defined on prototype @@ -320,7 +300,6 @@ suite('Extensions', function() { test('Use mutator as extension', function() { this.extensionsCleanup_.push('mutator_test'); - this.blockTypesCleanup_.push('mutator_test_block'); Blockly.defineBlocksWithJsonArray([{ "type": "mutator_test_block", @@ -352,7 +331,6 @@ suite('Extensions', function() { test('Use mutator mixin as extension', function() { this.extensionsCleanup_.push('mutator_test'); - this.blockTypesCleanup_.push('mutator_test_block'); Blockly.defineBlocksWithJsonArray([{ "type": "mutator_test_block", @@ -384,7 +362,6 @@ suite('Extensions', function() { test('Use extension as mutator', function() { this.extensionsCleanup_.push('extensions_test'); - this.blockTypesCleanup_.push('mutator_test_block'); Blockly.defineBlocksWithJsonArray([{ "type": "mutator_test_block", diff --git a/tests/mocha/field_angle_test.js b/tests/mocha/field_angle_test.js index 74206c888f7..6058aa62a20 100644 --- a/tests/mocha/field_angle_test.js +++ b/tests/mocha/field_angle_test.js @@ -5,6 +5,12 @@ */ suite('Angle Fields', function() { + setup(function() { + sharedTestSetup.call(this); + }); + teardown(function() { + sharedTestTeardown.call(this); + }); /** * Configuration for field tests with invalid values. * @type {!Array} diff --git a/tests/mocha/field_checkbox_test.js b/tests/mocha/field_checkbox_test.js index 7eaac4d5a75..ba3760e2bde 100644 --- a/tests/mocha/field_checkbox_test.js +++ b/tests/mocha/field_checkbox_test.js @@ -5,6 +5,12 @@ */ suite('Checkbox Fields', function() { + setup(function() { + sharedTestSetup.call(this); + }); + teardown(function() { + sharedTestTeardown.call(this); + }); /** * Configuration for field tests with invalid values. * @type {!Array} @@ -159,7 +165,8 @@ suite('Checkbox Fields', function() { suite('Customizations', function() { suite('Check Character', function() { function assertCharacter(field, char) { - field.fieldGroup_ = Blockly.utils.dom.createSvgElement('g', {}, null); + field.fieldGroup_ = Blockly.utils.dom.createSvgElement( + Blockly.utils.Svg.G, {}, null); field.sourceBlock_ = { RTL: false, rendered: true, @@ -171,7 +178,12 @@ suite('Checkbox Fields', function() { }; field.constants_ = { FIELD_CHECKBOX_X_OFFSET: 2, - FIELD_CHECKBOX_Y_OFFSET: 2 + FIELD_CHECKBOX_Y_OFFSET: 2, + FIELD_BORDER_RECT_RADIUS: 4, + FIELD_BORDER_RECT_HEIGHT: 16, + FIELD_TEXT_BASELINE_CENTER: false, + FIELD_TEXT_HEIGHT: 16, + FIELD_TEXT_BASELINE: 13, }; field.initView(); field.render_(); diff --git a/tests/mocha/field_colour_test.js b/tests/mocha/field_colour_test.js index 71d1d352a71..90f566b1d75 100644 --- a/tests/mocha/field_colour_test.js +++ b/tests/mocha/field_colour_test.js @@ -5,6 +5,12 @@ */ suite('Colour Fields', function() { + setup(function() { + sharedTestSetup.call(this); + }); + teardown(function() { + sharedTestTeardown.call(this); + }); /** * Configuration for field tests with invalid values. * @type {!Array} diff --git a/tests/mocha/field_dropdown_test.js b/tests/mocha/field_dropdown_test.js index 9e126adc133..3bd37414135 100644 --- a/tests/mocha/field_dropdown_test.js +++ b/tests/mocha/field_dropdown_test.js @@ -5,6 +5,12 @@ */ suite('Dropdown Fields', function() { + setup(function() { + sharedTestSetup.call(this); + }); + teardown(function() { + sharedTestTeardown.call(this); + }); function assertValue(dropdownField, expectedValue, expectedText) { var actualValue = dropdownField.getValue(); var actualText = dropdownField.getText(); @@ -27,7 +33,7 @@ suite('Dropdown Fields', function() { chai.assert.throws(function() { new Blockly.FieldDropdown([1, 2, 3]); }); - chai.assert(stub.calledThrice); + sinon.assert.calledThrice(stub); stub.restore(); }); test('Array Items with Invalid IDs', function() { @@ -35,7 +41,7 @@ suite('Dropdown Fields', function() { chai.assert.throws(function() { new Blockly.FieldDropdown([['1', 1], ['2', 2], ['3', 3]]); }); - chai.assert(stub.calledThrice); + sinon.assert.calledThrice(stub); stub.restore(); }); test('Array Items with Invalid Content', function() { @@ -43,7 +49,7 @@ suite('Dropdown Fields', function() { chai.assert.throws(function() { new Blockly.FieldDropdown([[1, '1'], [2, '2'], [3, '3']]); }); - chai.assert(stub.calledThrice); + sinon.assert.calledThrice(stub); stub.restore(); }); test('Text Dropdown', function() { @@ -93,7 +99,7 @@ suite('Dropdown Fields', function() { chai.assert.throws(function() { Blockly.FieldDropdown.fromJson({ options: [1, 2, 3] }); }); - chai.assert(stub.calledThrice); + sinon.assert.calledThrice(stub); stub.restore(); }); test('Array Items with Invalid IDs', function() { @@ -102,7 +108,7 @@ suite('Dropdown Fields', function() { Blockly.FieldDropdown.fromJson( { options:[['1', 1], ['2', 2], ['3', 3]] }); }); - chai.assert(stub.calledThrice); + sinon.assert.calledThrice(stub); stub.restore(); }); test('Array Items with Invalid Content', function() { @@ -111,7 +117,7 @@ suite('Dropdown Fields', function() { Blockly.FieldDropdown.fromJson( { options:[[1, '1'], [2, '2'], [3, '3']] }); }); - chai.assert(stub.calledThrice); + sinon.assert.calledThrice(stub); stub.restore(); }); test('Text Dropdown', function() { diff --git a/tests/mocha/field_image_test.js b/tests/mocha/field_image_test.js index f2c415a841c..bcdae89999b 100644 --- a/tests/mocha/field_image_test.js +++ b/tests/mocha/field_image_test.js @@ -5,6 +5,12 @@ */ suite('Image Fields', function() { + setup(function() { + sharedTestSetup.call(this); + }); + teardown(function() { + sharedTestTeardown.call(this); + }); function assertValue(imageField, expectedValue, expectedText) { var actualValue = imageField.getValue(); var actualText = imageField.getText(); @@ -121,9 +127,6 @@ suite('Image Fields', function() { console.log('on click'); }; }); - teardown(function() { - delete this.onClick; - }); test('JS Constructor', function() { var field = new Blockly.FieldImage('src', 10, 10, null, this.onClick); chai.assert.equal(field.clickHandler_, this.onClick); @@ -154,10 +157,13 @@ suite('Image Fields', function() { chai.assert.equal(field.altText_, 'alt'); }); test('Deprecated - setText', function() { + var deprecateWarnSpy = createDeprecationWarningStub(); var field = new Blockly.FieldImage('src', 10, 10, 'alt'); chai.assert.throws(function() { field.setText('newAlt'); }); + assertSingleDeprecationWarningCall(deprecateWarnSpy, + 'Field.prototype.setText'); }); suite('SetAlt', function() { setup(function() { diff --git a/tests/mocha/field_label_serializable_test.js b/tests/mocha/field_label_serializable_test.js index 8b7954a680b..c32ae444def 100644 --- a/tests/mocha/field_label_serializable_test.js +++ b/tests/mocha/field_label_serializable_test.js @@ -5,6 +5,12 @@ */ suite('Label Serializable Fields', function() { + setup(function() { + sharedTestSetup.call(this); + }); + teardown(function() { + sharedTestTeardown.call(this); + }); /** * Configuration for field tests with invalid values. * @type {!Array} @@ -91,7 +97,8 @@ suite('Label Serializable Fields', function() { suite('Customizations', function() { function assertHasClass(labelField, cssClass) { - labelField.fieldGroup_ = Blockly.utils.dom.createSvgElement('g', {}, null); + labelField.fieldGroup_ = Blockly.utils.dom.createSvgElement( + Blockly.utils.Svg.G, {}, null); labelField.constants_ = { FIELD_TEXT_BASELINE_Y: 13 }; @@ -100,7 +107,8 @@ suite('Label Serializable Fields', function() { labelField.textElement_, cssClass)); } function assertDoesNotHaveClass(labelField, cssClass) { - labelField.fieldGroup_ = Blockly.utils.dom.createSvgElement('g', {}, null); + labelField.fieldGroup_ = Blockly.utils.dom.createSvgElement( + Blockly.utils.Svg.G, {}, null); labelField.constants_ = { FIELD_TEXT_BASELINE_Y: 13 }; @@ -146,7 +154,8 @@ suite('Label Serializable Fields', function() { suite('setClass', function() { test('setClass', function() { var field = new Blockly.FieldLabelSerializable(); - field.fieldGroup_ = Blockly.utils.dom.createSvgElement('g', {}, null); + field.fieldGroup_ = Blockly.utils.dom.createSvgElement( + Blockly.utils.Svg.G, {}, null); field.constants_ = { FIELD_TEXT_BASELINE_Y: 13 }; diff --git a/tests/mocha/field_label_test.js b/tests/mocha/field_label_test.js index 62a888aaef2..c9a0a480ed7 100644 --- a/tests/mocha/field_label_test.js +++ b/tests/mocha/field_label_test.js @@ -5,6 +5,12 @@ */ suite('Label Fields', function() { + setup(function() { + sharedTestSetup.call(this); + }); + teardown(function() { + sharedTestTeardown.call(this); + }); /** * Configuration for field tests with invalid values. * @type {!Array} @@ -91,8 +97,8 @@ suite('Label Fields', function() { suite('Customizations', function() { function assertHasClass(labelField, cssClass) { - labelField.fieldGroup_ = - Blockly.utils.dom.createSvgElement('g', {}, null); + labelField.fieldGroup_ = Blockly.utils.dom.createSvgElement( + Blockly.utils.Svg.G, {}, null); labelField.constants_ = { FIELD_TEXT_BASELINE_Y: 13 }; @@ -101,8 +107,8 @@ suite('Label Fields', function() { labelField.textElement_, cssClass)); } function assertDoesNotHaveClass(labelField, cssClass) { - labelField.fieldGroup_ = - Blockly.utils.dom.createSvgElement('g', {}, null); + labelField.fieldGroup_ = Blockly.utils.dom.createSvgElement( + Blockly.utils.Svg.G, {}, null); labelField.constants_ = { FIELD_TEXT_BASELINE_Y: 13 }; @@ -149,7 +155,8 @@ suite('Label Fields', function() { suite('setClass', function() { test('setClass', function() { var field = new Blockly.FieldLabel(); - field.fieldGroup_ = Blockly.utils.dom.createSvgElement('g', {}, null); + field.fieldGroup_ = Blockly.utils.dom.createSvgElement( + Blockly.utils.Svg.G, {}, null); field.constants_ = { FIELD_TEXT_BASELINE_Y: 13 }; diff --git a/tests/mocha/field_number_test.js b/tests/mocha/field_number_test.js index b18bb1c0ee5..b12cae656a0 100644 --- a/tests/mocha/field_number_test.js +++ b/tests/mocha/field_number_test.js @@ -5,6 +5,12 @@ */ suite('Number Fields', function() { + setup(function() { + sharedTestSetup.call(this); + }); + teardown(function() { + sharedTestTeardown.call(this); + }); /** * Configuration for field tests with invalid values. * @type {!Array} @@ -106,6 +112,8 @@ suite('Number Fields', function() { {title: 'Float', json: {}, value: 123.456, expectedValue: 123.456}, {title: '0.01', json: {precision: .01}, value: 123.456, expectedValue: 123.46}, + {title: '1e-7', json: {precision: .0000001}, value: 123.00000456, + expectedValue: 123.0000046}, {title: '0.5', json: {precision: .5}, value: 123.456, expectedValue: 123.5}, {title: '1', json: {precision: 1}, value: 123.456, diff --git a/tests/mocha/field_registry_test.js b/tests/mocha/field_registry_test.js index eb0d3491e2b..dffc47af61f 100644 --- a/tests/mocha/field_registry_test.js +++ b/tests/mocha/field_registry_test.js @@ -19,11 +19,16 @@ suite('Field Registry', function() { return new CustomFieldType(options['value']); }; + setup(function() { + sharedTestSetup.call(this); + }); teardown(function() { + sharedTestTeardown.call(this); if (Blockly.registry.typeMap_['field']['field_custom_test']) { delete Blockly.registry.typeMap_['field']['field_custom_test']; } }); + suite('Registration', function() { test('Simple', function() { Blockly.fieldRegistry.register('field_custom_test', CustomFieldType); diff --git a/tests/mocha/field_test.js b/tests/mocha/field_test.js index 1381fb51551..76f2ef0accd 100644 --- a/tests/mocha/field_test.js +++ b/tests/mocha/field_test.js @@ -5,6 +5,16 @@ */ suite('Abstract Fields', function() { + setup(function() { + sharedTestSetup.call(this); + // TODO(#4197): Remove stubbing of deprecation warning after fixing. + // field.setValue calls trigger a deprecation warning, capture to prevent + // console logs. + createDeprecationWarningStub(); + }); + teardown(function() { + sharedTestTeardown.call(this); + }); suite('Is Serializable', function() { // Both EDITABLE and SERIALIZABLE are default. function FieldDefault() { @@ -37,7 +47,7 @@ suite('Abstract Fields', function() { var field = new FieldDefault(); var stub = sinon.stub(console, 'warn'); chai.assert.isTrue(field.isSerializable()); - chai.assert(stub.calledOnce); + sinon.assert.calledOnce(stub); stub.restore(); }); test('Editable False, Serializable Default(false)', function() { @@ -59,246 +69,227 @@ suite('Abstract Fields', function() { }); }); suite('setValue', function() { - function addSpies(field) { - if (!this.isSpying) { + function addSpies(field, excludeSpies = []) { + if (!excludeSpies.includes('doValueInvalid_')) { sinon.spy(field, 'doValueInvalid_'); + } + if (!excludeSpies.includes('doValueUpdate_')) { sinon.spy(field, 'doValueUpdate_'); + } + if (!excludeSpies.includes('forceRerender')) { sinon.spy(field, 'forceRerender'); - this.isSpying = true; } } - function removeSpies(field) { - if (this.isSpying) { - field.doValueInvalid_.restore(); - field.doValueUpdate_.restore(); - field.forceRerender.restore(); - this.isSpying = false; + function stubDoValueInvalid(field, isDirty) { + sinon.stub(field, 'doValueInvalid_').callsFake(function(newValue) { + this.isDirty_ = isDirty; + }); + } + function stubDoValueUpdate(field, isDirty) { + sinon.stub(field, 'doValueUpdate_').callsFake(function(newValue) { + this.isDirty_ = isDirty; + }); + } + function setLocalValidatorWithReturn(field, value) { + field.setValidator(function() { + return value; + }); + } + function setLocalValidator(field, isValid) { + if (isValid) { + field.setValidator(function(newValue) { + return newValue; + }); + } else { + setLocalValidatorWithReturn(field, null); + } + } + function stubClassValidatorWithReturn(field, value) { + sinon.stub(field, 'doClassValidation_').returns(value); + } + function stubClassValidator(field, isValid) { + if (isValid) { + sinon.stub(field, 'doClassValidation_').callsFake(function(newValue) { + return newValue; + }); + } else { + stubClassValidatorWithReturn(field, null); } } setup(function() { this.field = new Blockly.Field(); this.field.isDirty_ = false; - this.cachedDoClassValidation = this.field.doClassValidation_; - this.cachedDoValueUpdate = this.field.doValueUpdate_; - this.cachedDoValueInvalid = this.field.doValueInvalid_; - }); - teardown(function() { - removeSpies(this.field); - this.field.doClassValidation_ = this.cachedDoClassValidation; - this.field.doValueUpdate_ = this.cachedDoValueUpdate; - this.field.doValueInvalid_ = this.cachedDoValueInvalid; - this.field.setValidator(null); }); test('Null', function() { addSpies(this.field); this.field.setValue(null); - chai.assert(this.field.doValueInvalid_.notCalled); - chai.assert(this.field.doValueUpdate_.notCalled); - chai.assert(this.field.forceRerender.notCalled); + sinon.assert.notCalled(this.field.doValueInvalid_); + sinon.assert.notCalled(this.field.doValueUpdate_); + sinon.assert.notCalled(this.field.forceRerender); }); test('No Validators, Dirty (Default)', function() { addSpies(this.field); this.field.setValue('value'); - chai.assert(this.field.doValueInvalid_.notCalled); - chai.assert(this.field.doValueUpdate_.calledOnce); - chai.assert(this.field.forceRerender.calledOnce); + sinon.assert.notCalled(this.field.doValueInvalid_); + sinon.assert.calledOnce(this.field.doValueUpdate_); + sinon.assert.calledOnce(this.field.forceRerender); }); test('No Validators, Not Dirty', function() { - this.field.doValueUpdate_ = function(newValue) { - this.value_ = newValue; - this.isDirty_ = false; - }; - addSpies(this.field); + stubDoValueUpdate(this.field, false); + addSpies(this.field, ['doValueUpdate_']); this.field.setValue('value'); - chai.assert(this.field.doValueInvalid_.notCalled); - chai.assert(this.field.doValueUpdate_.calledOnce); - chai.assert(this.field.forceRerender.notCalled); + sinon.assert.notCalled(this.field.doValueInvalid_); + sinon.assert.calledOnce(this.field.doValueUpdate_); + sinon.assert.notCalled(this.field.forceRerender); }); test('Class Validator Returns Invalid, Not Dirty (Default)', function() { - this.field.doClassValidation_ = function() { - return null; - }; + stubClassValidator(this.field, false); addSpies(this.field); this.field.setValue('value'); - chai.assert(this.field.doValueInvalid_.calledOnce); - chai.assert(this.field.doValueUpdate_.notCalled); - chai.assert(this.field.forceRerender.notCalled); + sinon.assert.calledOnce(this.field.doValueInvalid_); + sinon.assert.notCalled(this.field.doValueUpdate_); + sinon.assert.notCalled(this.field.forceRerender); }); test('Class Validator Returns Invalid, Dirty', function() { - this.field.doClassValidation_ = function() { - return null; - }; - this.field.doValueInvalid_ = function() { - this.isDirty_ = true; - }; - addSpies(this.field); + stubClassValidator(this.field, false); + stubDoValueInvalid(this.field, true); + addSpies(this.field, ['doValueInvalid_']); this.field.setValue('value'); - chai.assert(this.field.doValueInvalid_.calledOnce); - chai.assert(this.field.doValueUpdate_.notCalled); - chai.assert(this.field.forceRerender.calledOnce); + sinon.assert.calledOnce(this.field.doValueInvalid_); + sinon.assert.notCalled(this.field.doValueUpdate_); + sinon.assert.calledOnce(this.field.forceRerender); }); test('Class Validator Returns Valid, Not Dirty', function() { - this.field.doClassValidation_ = function(newValue) { - return newValue; - }; - this.field.doValueUpdate_ = function() { - this.isDirty_ = false; - }; - addSpies(this.field); + stubClassValidator(this.field, true); + stubDoValueUpdate(this.field, false); + addSpies(this.field, ['doValueUpdate_']); this.field.setValue('value'); - chai.assert(this.field.doValueInvalid_.notCalled); - chai.assert(this.field.doValueUpdate_.calledOnce); - chai.assert(this.field.forceRerender.notCalled); + sinon.assert.notCalled(this.field.doValueInvalid_); + sinon.assert.calledOnce(this.field.doValueUpdate_); + sinon.assert.notCalled(this.field.forceRerender); }); test('Class Validator Returns Valid, Dirty (Default)', function() { - this.field.doClassValidation_ = function(newValue) { - return newValue; - }; + stubClassValidator(this.field, true); addSpies(this.field); this.field.setValue('value'); - chai.assert(this.field.doValueInvalid_.notCalled); - chai.assert(this.field.doValueUpdate_.calledOnce); - chai.assert(this.field.forceRerender.calledOnce); + sinon.assert.notCalled(this.field.doValueInvalid_); + sinon.assert.calledOnce(this.field.doValueUpdate_); + sinon.assert.calledOnce(this.field.forceRerender); }); test('Local Validator Returns Invalid, Not Dirty (Default)', function() { - this.field.setValidator(function() { - return null; - }); + setLocalValidator(this.field, false); addSpies(this.field); this.field.setValue('value'); - chai.assert(this.field.doValueInvalid_.calledOnce); - chai.assert(this.field.doValueUpdate_.notCalled); - chai.assert(this.field.forceRerender.notCalled); + sinon.assert.calledOnce(this.field.doValueInvalid_); + sinon.assert.notCalled(this.field.doValueUpdate_); + sinon.assert.notCalled(this.field.forceRerender); }); test('Local Validator Returns Invalid, Dirty', function() { - this.field.setValidator(function() { - return null; - }); - this.field.doValueInvalid_ = function() { - this.isDirty_ = true; - }; - addSpies(this.field); + stubDoValueInvalid(this.field, true); + setLocalValidator(this.field, false); + addSpies(this.field, ['doValueInvalid_']); this.field.setValue('value'); - chai.assert(this.field.doValueInvalid_.calledOnce); - chai.assert(this.field.doValueUpdate_.notCalled); - chai.assert(this.field.forceRerender.calledOnce); + sinon.assert.calledOnce(this.field.doValueInvalid_); + sinon.assert.notCalled(this.field.doValueUpdate_); + sinon.assert.calledOnce(this.field.forceRerender); }); test('Local Validator Returns Valid, Not Dirty', function() { - this.field.setValidator(function(newValue) { - return newValue; - }); - this.field.doValueUpdate_ = function() { - this.isDirty_ = false; - }; - addSpies(this.field); + stubDoValueUpdate(this.field, false); + setLocalValidator(this.field, true); + addSpies(this.field, ['doValueUpdate_']); this.field.setValue('value'); - chai.assert(this.field.doValueInvalid_.notCalled); - chai.assert(this.field.doValueUpdate_.calledOnce); - chai.assert(this.field.forceRerender.notCalled); + sinon.assert.notCalled(this.field.doValueInvalid_); + sinon.assert.calledOnce(this.field.doValueUpdate_); + sinon.assert.notCalled(this.field.forceRerender); }); test('Local Validator Returns Valid, Dirty (Default)', function() { - this.field.setValidator(function(newValue) { - return newValue; - }); + setLocalValidator(this.field, true); addSpies(this.field); this.field.setValue('value'); - chai.assert(this.field.doValueInvalid_.notCalled); - chai.assert(this.field.doValueUpdate_.calledOnce); - chai.assert(this.field.forceRerender.calledOnce); + sinon.assert.notCalled(this.field.doValueInvalid_); + sinon.assert.calledOnce(this.field.doValueUpdate_); + sinon.assert.calledOnce(this.field.forceRerender); }); test('New Value Matches Old Value', function() { this.field.setValue('value'); addSpies(this.field); this.field.setValue('value'); - chai.assert(this.field.doValueInvalid_.notCalled); - chai.assert(this.field.doValueUpdate_.notCalled); - chai.assert(this.field.forceRerender.notCalled); + sinon.assert.notCalled(this.field.doValueInvalid_); + sinon.assert.notCalled(this.field.doValueUpdate_); + sinon.assert.notCalled(this.field.forceRerender); }); test('New Value (Class)Validates to Old Value', function() { this.field.setValue('value'); - this.field.doClassValidation_ = function() { - return 'value'; - }; + stubClassValidatorWithReturn(this.field, 'value'); addSpies(this.field); this.field.setValue('notValue'); - chai.assert(this.field.doValueInvalid_.notCalled); - chai.assert(this.field.doValueUpdate_.notCalled); - chai.assert(this.field.forceRerender.notCalled); + sinon.assert.notCalled(this.field.doValueInvalid_); + sinon.assert.notCalled(this.field.doValueUpdate_); + sinon.assert.notCalled(this.field.forceRerender); }); test('New Value (Local)Validates to Old Value', function() { this.field.setValue('value'); - this.field.setValidator(function() { - return 'value'; - }); + setLocalValidatorWithReturn(this.field, 'value'); addSpies(this.field); this.field.setValue('notValue'); - chai.assert(this.field.doValueInvalid_.notCalled); - chai.assert(this.field.doValueUpdate_.notCalled); - chai.assert(this.field.forceRerender.notCalled); + sinon.assert.notCalled(this.field.doValueInvalid_); + sinon.assert.notCalled(this.field.doValueUpdate_); + sinon.assert.notCalled(this.field.forceRerender); }); test('New Value (Class)Validates to not Old Value', function() { this.field.setValue('value'); - this.field.doClassValidation_ = function() { - return 'notValue'; - }; + stubClassValidatorWithReturn(this.field, 'notValue'); addSpies(this.field); this.field.setValue('value'); - chai.assert(this.field.doValueInvalid_.notCalled); - chai.assert(this.field.doValueUpdate_.calledOnce); + sinon.assert.notCalled(this.field.doValueInvalid_); + sinon.assert.calledOnce(this.field.doValueUpdate_); }); test('New Value (Local)Validates to not Old Value', function() { this.field.setValue('value'); - this.field.setValidator(function() { - return 'notValue'; - }); + setLocalValidatorWithReturn(this.field, 'notValue'); addSpies(this.field); this.field.setValue('value'); - chai.assert(this.field.doValueInvalid_.notCalled); - chai.assert(this.field.doValueUpdate_.calledOnce); + sinon.assert.notCalled(this.field.doValueInvalid_); + sinon.assert.calledOnce(this.field.doValueUpdate_); }); test('Class Validator Returns Null', function() { - this.field.doClassValidation_ = function() { - return null; - }; + stubClassValidatorWithReturn(this.field, null); addSpies(this.field); this.field.setValue('value'); - chai.assert(this.field.doValueInvalid_.calledOnce); - chai.assert(this.field.doValueUpdate_.notCalled); + sinon.assert.calledOnce(this.field.doValueInvalid_); + sinon.assert.notCalled(this.field.doValueUpdate_); }); test('Class Validator Returns Same', function() { - this.field.doClassValidation_ = function(newValue) { - return newValue; - }; + sinon.stub(this.field, 'doClassValidation_').callsFake( + function(newValue) { + return newValue; + }); addSpies(this.field); this.field.setValue('value'); - chai.assert(this.field.doValueInvalid_.notCalled); - chai.assert(this.field.doValueUpdate_.calledOnce); + sinon.assert.notCalled(this.field.doValueInvalid_); + sinon.assert.calledOnce(this.field.doValueUpdate_); }); test('Class Validator Returns Different', function() { - this.field.doClassValidation_ = function() { - return 'differentValue'; - }; + stubClassValidatorWithReturn(this.field, 'differentValue'); addSpies(this.field); this.field.setValue('value'); - chai.assert(this.field.doValueInvalid_.notCalled); - chai.assert(this.field.doValueUpdate_.calledOnce); + sinon.assert.notCalled(this.field.doValueInvalid_); + sinon.assert.calledOnce(this.field.doValueUpdate_); }); test('Class Validator Returns Undefined', function() { - this.field.doClassValidation_ = function() {}; + stubClassValidatorWithReturn(this.field, undefined); addSpies(this.field); this.field.setValue('value'); chai.assert.equal(this.field.getValue(), 'value'); - chai.assert(this.field.doValueInvalid_.notCalled); - chai.assert(this.field.doValueUpdate_.calledOnce); + sinon.assert.notCalled(this.field.doValueInvalid_); + sinon.assert.calledOnce(this.field.doValueUpdate_); }); test('Local Validator Returns Null', function() { - this.field.setValidator(function() { - return null; - }); + setLocalValidatorWithReturn(this.field, null); addSpies(this.field); this.field.setValue('value'); - chai.assert(this.field.doValueInvalid_.calledOnce); - chai.assert(this.field.doValueUpdate_.notCalled); + sinon.assert.calledOnce(this.field.doValueInvalid_); + sinon.assert.notCalled(this.field.doValueUpdate_); }); test('Local Validator Returns Same', function() { this.field.setValidator(function(newValue) { @@ -306,25 +297,23 @@ suite('Abstract Fields', function() { }); addSpies(this.field); this.field.setValue('value'); - chai.assert(this.field.doValueInvalid_.notCalled); - chai.assert(this.field.doValueUpdate_.calledOnce); + sinon.assert.notCalled(this.field.doValueInvalid_); + sinon.assert.calledOnce(this.field.doValueUpdate_); }); test('Local Validator Returns Different', function() { - this.field.setValidator(function() { - return 'differentValue'; - }); + setLocalValidatorWithReturn(this.field, 'differentValue'); addSpies(this.field); this.field.setValue('value'); - chai.assert(this.field.doValueInvalid_.notCalled); - chai.assert(this.field.doValueUpdate_.calledOnce); + sinon.assert.notCalled(this.field.doValueInvalid_); + sinon.assert.calledOnce(this.field.doValueUpdate_); }); test('Local Validator Returns Undefined', function() { - this.field.setValidator(function() {}); + setLocalValidatorWithReturn(this.field, undefined); addSpies(this.field); this.field.setValue('value'); chai.assert.equal(this.field.getValue(), 'value'); - chai.assert(this.field.doValueInvalid_.notCalled); - chai.assert(this.field.doValueUpdate_.calledOnce); + sinon.assert.notCalled(this.field.doValueInvalid_); + sinon.assert.calledOnce(this.field.doValueUpdate_); }); }); suite('Customization', function() { @@ -362,11 +351,9 @@ suite('Abstract Fields', function() { }); suite('W/ Msg References', function() { setup(function() { + addMessageToCleanup(this.sharedCleanup, 'TOOLTIP'); Blockly.Msg['TOOLTIP'] = 'test tooltip'; }); - teardown(function() { - delete Blockly.Msg['TOOLTIP']; - }); test('JS Constructor', function() { var field = new Blockly.Field('value', null, { tooltip: '%{BKY_TOOLTIP}', @@ -382,13 +369,14 @@ suite('Abstract Fields', function() { }); suite('setTooltip', function() { setup(function() { - this.workspace = new Blockly.WorkspaceSvg({}); + this.workspace = new Blockly.WorkspaceSvg(new Blockly.Options({})); this.workspace.createDom(); }); teardown(function() { - this.workspace = null; + workspaceTeardown.call(this, this.workspace); }); test('Before Append', function() { + addBlockTypeToCleanup(this.sharedCleanup, 'tooltip'); Blockly.Blocks['tooltip'] = { init: function() { var field = new Blockly.FieldTextInput('default'); @@ -404,9 +392,9 @@ suite('Abstract Fields', function() { ).children[0], this.workspace); var field = block.getField('TOOLTIP'); chai.assert.equal(field.getClickTarget_().tooltip, 'tooltip'); - delete Blockly.Blocks['tooltip']; }); test('After Append', function() { + addBlockTypeToCleanup(this.sharedCleanup, 'tooltip'); Blockly.Blocks['tooltip'] = { init: function() { var field = new Blockly.FieldTextInput('default'); @@ -422,9 +410,9 @@ suite('Abstract Fields', function() { ).children[0], this.workspace); var field = block.getField('TOOLTIP'); chai.assert.equal(field.getClickTarget_().tooltip, 'tooltip'); - delete Blockly.Blocks['tooltip']; }); test('After Block Creation', function() { + addBlockTypeToCleanup(this.sharedCleanup, 'tooltip'); Blockly.Blocks['tooltip'] = { init: function() { var field = new Blockly.FieldTextInput('default'); @@ -440,9 +428,9 @@ suite('Abstract Fields', function() { var field = block.getField('TOOLTIP'); field.setTooltip('tooltip'); chai.assert.equal(field.getClickTarget_().tooltip, 'tooltip'); - delete Blockly.Blocks['tooltip']; }); test('Dynamic Function', function() { + addBlockTypeToCleanup(this.sharedCleanup, 'tooltip'); Blockly.Blocks['tooltip'] = { init: function() { var field = new Blockly.FieldTextInput('default'); @@ -462,9 +450,9 @@ suite('Abstract Fields', function() { ).children[0], this.workspace); var field = block.getField('TOOLTIP'); chai.assert.equal(field.getClickTarget_().tooltip, block.tooltipFunc); - delete Blockly.Blocks['tooltip']; }); test('Element', function() { + addBlockTypeToCleanup(this.sharedCleanup, 'tooltip'); Blockly.Blocks['tooltip'] = { init: function() { var field = new Blockly.FieldTextInput('default'); @@ -483,9 +471,9 @@ suite('Abstract Fields', function() { ).children[0], this.workspace); var field = block.getField('TOOLTIP'); chai.assert.equal(field.getClickTarget_().tooltip, block.element); - delete Blockly.Blocks['tooltip']; }); test('Null', function() { + addBlockTypeToCleanup(this.sharedCleanup, 'tooltip'); Blockly.Blocks['tooltip'] = { init: function() { var field = new Blockly.FieldTextInput('default'); @@ -501,9 +489,9 @@ suite('Abstract Fields', function() { ).children[0], this.workspace); var field = block.getField('TOOLTIP'); chai.assert.equal(field.getClickTarget_().tooltip, block); - delete Blockly.Blocks['tooltip']; }); test('Undefined', function() { + addBlockTypeToCleanup(this.sharedCleanup, 'tooltip'); Blockly.Blocks['tooltip'] = { init: function() { var field = new Blockly.FieldTextInput('default'); @@ -518,7 +506,6 @@ suite('Abstract Fields', function() { ).children[0], this.workspace); var field = block.getField('TOOLTIP'); chai.assert.equal(field.getClickTarget_().tooltip, block); - delete Blockly.Blocks['tooltip']; }); }); }); diff --git a/tests/mocha/field_textinput_test.js b/tests/mocha/field_textinput_test.js index f51c1bf9244..10a2b013866 100644 --- a/tests/mocha/field_textinput_test.js +++ b/tests/mocha/field_textinput_test.js @@ -5,6 +5,12 @@ */ suite('Text Input Fields', function() { + setup(function() { + sharedTestSetup.call(this); + }); + teardown(function() { + sharedTestTeardown.call(this); + }); /** * Configuration for field tests with invalid values. * @type {!Array} diff --git a/tests/mocha/field_variable_test.js b/tests/mocha/field_variable_test.js index c1d3207a89d..f34488d8fab 100644 --- a/tests/mocha/field_variable_test.js +++ b/tests/mocha/field_variable_test.js @@ -44,16 +44,14 @@ suite('Variable Fields', function() { } setup(function() { + sharedTestSetup.call(this); this.workspace = new Blockly.Workspace(); - - sinon.stub(Blockly.utils, 'genUid') - .returns(FAKE_ID); + createGenUidStubWithReturns(FAKE_ID); sinon.stub(Blockly.Variables, 'generateUniqueName') .returns(FAKE_VARIABLE_NAME); }); teardown(function() { - this.workspace.dispose(); - sinon.restore(); + sharedTestTeardown.call(this); }); test('Dropdown contains variables', function() { @@ -127,7 +125,7 @@ suite('Variable Fields', function() { var stub = sinon.stub(console, 'warn'); variableField.setValue(undefined); assertValue(variableField, 'name1'); - chai.assert(stub.calledOnce); + sinon.assert.calledOnce(stub); stub.restore(); }); test('New Variable ID', function() { @@ -149,7 +147,7 @@ suite('Variable Fields', function() { var stub = sinon.stub(console, 'warn'); variableField.setValue('id1'); assertValue(variableField, 'name1'); - chai.assert(stub.calledOnce); + sinon.assert.calledOnce(stub); stub.restore(); }); }); @@ -323,12 +321,6 @@ suite('Variable Fields', function() { 'field_variable_test_block'); this.variableField = this.variableBlock.getField('VAR'); }); - teardown(function() { - this.variableBlock.dispose(); - this.variableBlock = null; - this.variableField = null; - delete Blockly.Blocks['field_variable_test_block']; - }); test('Rename & Keep Old ID', function() { this.workspace.renameVariableById('id1', 'name2'); chai.assert.equal(this.variableField.getText(), 'name2'); diff --git a/tests/mocha/flyout_test.js b/tests/mocha/flyout_test.js index 1a73f095b87..840e48379c3 100644 --- a/tests/mocha/flyout_test.js +++ b/tests/mocha/flyout_test.js @@ -6,6 +6,7 @@ suite('Flyout', function() { setup(function() { + sharedTestSetup.call(this); Blockly.defineBlocksWithJsonArray([{ "type": "basic_block", "message0": "%1", @@ -25,9 +26,7 @@ suite('Flyout', function() { }); teardown(function() { - this.workspace.dispose(); - delete Blockly.Blocks['basic_block']; - sinon.restore(); + sharedTestTeardown.call(this); }); suite('createFlyoutInfo_', function() { diff --git a/tests/mocha/generator_test.js b/tests/mocha/generator_test.js index cf91990eaa8..9250557abcb 100644 --- a/tests/mocha/generator_test.js +++ b/tests/mocha/generator_test.js @@ -12,11 +12,12 @@ goog.require('Blockly.Python'); suite('Generator', function() { setup(function() { + sharedTestSetup.call(this); this.workspace = new Blockly.Workspace(); }); teardown(function() { - this.workspace.dispose(); + sharedTestTeardown.call(this); }); suite('prefix', function() { @@ -77,11 +78,6 @@ suite('Generator', function() { }; }); - teardown(function() { - delete Blockly.Blocks['stack_block']; - delete Blockly.Blocks['row_block']; - }); - var testCase = [ [Blockly.Dart, 'Dart'], [Blockly.JavaScript, 'JavaScript'], @@ -114,7 +110,7 @@ suite('Generator', function() { suite('Nested block', function() { setup(function() { - Blockly.defineBlocksWithJsonArray([ { + Blockly.defineBlocksWithJsonArray([{ "type": "test_loop_block", "message0": "Repeat Loop", "message1": "%1", @@ -141,10 +137,6 @@ suite('Generator', function() { }; }); - teardown(function() { - delete Blockly.Blocks['test_loop_block']; - }); - testCase.forEach(function(testCase) { var generator = testCase[0]; var name = testCase[1]; diff --git a/tests/mocha/gesture_test.js b/tests/mocha/gesture_test.js index 89fab0323b8..89e159d10ca 100644 --- a/tests/mocha/gesture_test.js +++ b/tests/mocha/gesture_test.js @@ -11,77 +11,94 @@ 'use strict'; suite('Gesture', function() { + function testGestureIsFieldClick(block, isFieldClick, eventsFireStub){ + var field = block.getField('NAME'); + var eventTarget = field.getClickTarget_(); + chai.assert.exists(eventTarget, + 'Precondition: missing click target for field'); + + eventsFireStub.resetHistory(); + dispatchPointerEvent(eventTarget, 'pointerdown'); + + var fieldWorkspace = field.sourceBlock_.workspace; + // Gestures triggered on flyouts are stored on targetWorkspace. + var gestureWorkspace = fieldWorkspace.targetWorkspace || fieldWorkspace; + var gesture = gestureWorkspace.currentGesture_; + chai.assert.exists(gesture, 'Gesture exists after pointerdown.'); + var isFieldClickSpy = sinon.spy(gesture, 'isFieldClick_'); + + dispatchPointerEvent(eventTarget, 'pointerup'); + dispatchPointerEvent(eventTarget, 'click'); + + sinon.assert.called(isFieldClickSpy); + chai.assert.isTrue(isFieldClickSpy.alwaysReturned(isFieldClick)); + + + assertEventFired(eventsFireStub, Blockly.Events.Ui, + {element: 'selected', oldValue: null, newValue: block.id}, + fieldWorkspace.id, null); + assertEventNotFired(eventsFireStub, Blockly.Events.Ui, {element: 'click'}); + } + + function getTopFlyoutBlock(flyout) { + return flyout.workspace_.topBlocks_[0]; + } setup(function() { - this.workspace = new Blockly.Workspace(); - this.e = {}; + sharedTestSetup.call(this); + defineBasicBlockWithField(this.sharedCleanup); + var toolbox = document.getElementById('gesture-test-toolbox'); + this.workspace = Blockly.inject('blocklyDiv', {toolbox: toolbox}); }); teardown(function() { - this.e = null; - this.workspace.dispose(); + sharedTestTeardown.call(this); }); test('Constructor', function() { - var gesture = new Blockly.Gesture(this.e, this.workspace); - chai.assert.equal(gesture.mostRecentEvent_, this.e); + var e = { id: 'dummy_test_event'}; + var gesture = new Blockly.Gesture(e, this.workspace); + chai.assert.equal(gesture.mostRecentEvent_, e); chai.assert.equal(gesture.creatorWorkspace_, this.workspace); }); test('Field click - Click in workspace', function() { - var block = new Blockly.Block(this.workspace); - var field = new Blockly.Field(); - field.setSourceBlock(block); - field.showEditor_ = function() {}; - var gesture = new Blockly.Gesture(this.e, this.workspace); - gesture.setStartField(field); - - var isFieldClick = gesture.isFieldClick_(); - chai.assert.isTrue(isFieldClick); - }); + var block = this.workspace.newBlock('test_field_block'); + block.initSvg(); + block.render(); - function gestureIsFieldClick_InFlyoutHelper(flyout, expectedResult){ - // Assign workspace flyout - this.workspace.flyout_ = flyout; - // Create a Field inside of a Block - var block = new Blockly.Block(this.workspace); - var field = new Blockly.Field(); - field.setSourceBlock(block); - field.showEditor_ = function() {}; - // Create gesture from the flyout - var gesture = new Blockly.Gesture(this.e, this.workspace.flyout_); - // Populate gesture with click start information - gesture.setStartField(field); - gesture.setStartFlyout_(this.workspace.flyout_); - - var isFieldClick = gesture.isFieldClick_(); - chai.assert.equal(isFieldClick, expectedResult); - } + testGestureIsFieldClick(block, true, this.eventsFireStub); + }); test('Field click - Auto close flyout', function() { - var flyout = new Blockly.VerticalFlyout({}); - flyout.autoClose = false; - gestureIsFieldClick_InFlyoutHelper.call(this, flyout, true); + var flyout = this.workspace.flyout_; + chai.assert.exists(this.workspace.flyout_, + 'Precondition: missing flyout'); + flyout.autoClose = true; + + var block = getTopFlyoutBlock(flyout); + testGestureIsFieldClick(block, false, this.eventsFireStub); }); test('Field click - Always open flyout', function() { - var flyout = new Blockly.VerticalFlyout({}); + var flyout = this.workspace.flyout_; + chai.assert.exists(this.workspace.flyout_, + 'Precondition: missing flyout'); flyout.autoClose = false; - gestureIsFieldClick_InFlyoutHelper.call(this, flyout, true); + + var block = getTopFlyoutBlock(flyout); + testGestureIsFieldClick(block, true, this.eventsFireStub); }); - test('Workspace click - Shift click enters accessibility mode', function() { - var event = { - shiftKey : true, - clientX : 10, - clientY : 10, - - }; - var ws = Blockly.inject('blocklyDiv', {}); - ws.keyboardAccessibilityMode = true; - var gesture = new Blockly.Gesture(event, ws); - gesture.doWorkspaceClick_(event); - var cursor = ws.getCursor(); - chai.assert.equal(cursor.getCurNode().getType(), Blockly.ASTNode.types.WORKSPACE); + test('Shift click in accessibility mode - moves the cursor', function() { + this.workspace.keyboardAccessibilityMode = true; + + var eventTarget = this.workspace.svgGroup_; + simulateClick(eventTarget, {shiftKey: true}); + + var cursor = this.workspace.getCursor(); + var cursorNode = cursor.getCurNode(); + chai.assert.exists(cursorNode); + chai.assert.equal(cursorNode.getType(), Blockly.ASTNode.types.WORKSPACE); }); }); diff --git a/tests/mocha/index.html b/tests/mocha/index.html index bc236ad9396..08a7fb64261 100644 --- a/tests/mocha/index.html +++ b/tests/mocha/index.html @@ -19,6 +19,14 @@ +
@@ -40,8 +48,9 @@ + - + @@ -74,6 +83,7 @@ + @@ -85,6 +95,7 @@ +
+ + - - @@ -139,7 +127,6 @@ } }); workspace.configureContextMenu = configureContextMenu; - addToolboxButtonCallbacks(); // Restore previously displayed text. if (sessionStorage) { var text = sessionStorage.getItem('textarea'); @@ -147,8 +134,10 @@ document.getElementById('importExport').value = text; } // Restore event logging state. - var state = sessionStorage.getItem('logEvents'); - logEvents(Boolean(Number(state))); + var logMainEventsState = sessionStorage.getItem('logEvents'); + logEvents(Boolean(Number(logMainEventsState))); + var logToolboxFlyoutEventsState = sessionStorage.getItem('logFlyoutEvents'); + logFlyoutEvents(Boolean(Number(logToolboxFlyoutEventsState))); } else { // MSIE 11 does not support sessionStorage on file:// URLs. logEvents(false); @@ -159,116 +148,6 @@ } } -function addToolboxButtonCallbacks() { - var addAllBlocksToWorkspace = function(button) { - var workspace = button.getTargetWorkspace(); - var blocks = button.workspace_.getTopBlocks(); - for(var i = 0, block; block = blocks[i]; i++) { - var xml = Blockly.utils.xml.createElement('xml'); - xml.appendChild(Blockly.Xml.blockToDom(block)); - Blockly.Xml.appendDomToWorkspace(xml, workspace); - } - }; - var randomizeLabelText = function(button) { - var blocks = button.targetWorkspace_ - .getBlocksByType('test_fields_label_serializable'); - var possible = 'AB'; - for (var i = 0, block; block = blocks[i]; i++) { - var text = ''; - for (var j = 0; j < 4; j++) { - text += possible.charAt(Math.floor(Math.random() * possible.length)); - } - block.setFieldValue(text, 'LABEL'); - } - }; - var setRandomStyle = function(button) { - var blocks = button.workspace_.getAllBlocks(false); - var styles = - Object.keys(workspace.getRenderer().getConstants().blockStyles); - styles.splice(styles.indexOf(blocks[0].getStyleName()), 1); - var style = styles[Math.floor(Math.random() * styles.length)]; - for(var i = 0, block; block = blocks[i]; i++) { - block.setStyle(style); - } - }; - var toggleEnabled = function(button) { - var blocks = button.workspace_.getAllBlocks(false); - for(var i = 0, block; block = blocks[i]; i++) { - block.setEnabled(!block.isEnabled()); - } - }; - var toggleShadow = function(button) { - var blocks = button.workspace_.getAllBlocks(false); - for(var i = 0, block; block = blocks[i]; i++) { - block.setShadow(!block.isShadow()); - } - }; - var toggleCollapsed = function(button) { - var blocks = button.workspace_.getAllBlocks(false); - for(var i = 0, block; block = blocks[i]; i++) { - block.setCollapsed(!block.isCollapsed()); - } - }; - var setInput = function(button) { - Blockly.prompt('Input text to set.', 'ab', function(input) { - var blocks = button.getTargetWorkspace().getAllBlocks(false); - for(var i = 0, block; block = blocks[i]; i++) { - if (block.getField('INPUT')) { - block.setFieldValue(input, 'INPUT'); - } - } - }) - }; - var changeImage = function(button) { - var blocks = button.workspace_.getBlocksByType('test_fields_image'); - var possible = 'abcdefghijklm'; - var image = possible.charAt(Math.floor(Math.random() * possible.length)); - var src = 'https://blockly-demo.appspot.com/static/tests/media/' - + image + '.png'; - for (var i = 0, block; block = blocks[i]; i++) { - var imageField = block.getField('IMAGE'); - imageField.setValue(src); - } - }; - var addVariables = function(button) { - workspace.createVariable('1b', '', '1B'); - workspace.createVariable('1c', '', '1C'); - workspace.createVariable('2a', '', '2A'); - workspace.createVariable('2b', '', '2B'); - workspace.createVariable('2c', '', '2C'); - }; - - workspace.registerButtonCallback( - 'addVariables', addVariables); - workspace.registerButtonCallback( - 'changeImage', changeImage); - workspace.registerButtonCallback( - 'addAllBlocksToWorkspace', addAllBlocksToWorkspace); - workspace.registerButtonCallback( - 'setInput', setInput); - workspace.registerButtonCallback( - 'setRandomStyle', setRandomStyle); - workspace.registerButtonCallback( - 'toggleEnabled', toggleEnabled); - workspace.registerButtonCallback( - 'toggleShadow', toggleShadow); - workspace.registerButtonCallback( - 'toggleCollapsed', toggleCollapsed); - workspace.registerButtonCallback( - 'randomizeLabelText', randomizeLabelText); - workspace.registerButtonCallback( - 'addDynamicOption', Blockly.TestBlocks.addDynamicDropdownOption); - workspace.registerButtonCallback( - 'removeDynamicOption', Blockly.TestBlocks.removeDynamicDropdownOption); - workspace.registerButtonCallback( - 'insertConnectionRows', Blockly.TestBlocks.insertConnectionRows); - workspace.registerButtonCallback( - 'insertConnectionStacks', Blockly.TestBlocks.insertConnectionStacks); - workspace.registerButtonCallback( - 'insertConnectionStatements', - Blockly.TestBlocks.insertConnectionStatements); -} - function setBackgroundColour() { // Set background colour to differentiate server vs local copy. if (location.protocol == 'file:') { @@ -285,14 +164,9 @@ } function getToolboxElement() { - // The four possible values are: "simple", "categories", - // "categories-typed-variables", and "test-blocks". - var toolboxSuffix = getToolboxSuffix(); - // test-blocks are defined in JSON - if (toolboxSuffix == 'test-blocks') { - return testBlocksToolbox; - } - return document.getElementById('toolbox-' + toolboxSuffix); + // The three possible values are: "simple", "categories", + // "categories-typed-variables". + return document.getElementById('toolbox-' + getToolboxSuffix()); } function setToolboxDropdown() { @@ -300,7 +174,6 @@ 'toolbox-categories', 'toolbox-categories-typed-variables', 'toolbox-simple', - 'toolbox-test-blocks' ]; var toolboxSuffix = getToolboxSuffix(); document.forms.options.elements.toolbox.selectedIndex = @@ -361,6 +234,20 @@ } } +function logFlyoutEvents(state) { + var checkbox = document.getElementById('logFlyoutCheck'); + checkbox.checked = state; + if (sessionStorage) { + sessionStorage.setItem('logFlyoutEvents', Number(state)); + } + var flyoutWorkspace = workspace.getFlyout().getWorkspace(); + if (state) { + flyoutWorkspace.addChangeListener(logger); + } else { + flyoutWorkspace.removeChangeListener(logger); + } +} + function configureContextMenu(menuOptions, e) { var screenshotOption = { text: 'Download Screenshot', @@ -508,7 +395,6 @@

Blockly Playground

-

@@ -537,9 +423,13 @@

Blockly Playground

  • - +
  • +
  • + + +
diff --git a/tests/playgrounds/advanced_playground.html b/tests/playgrounds/advanced_playground.html index ce2d5e09cd3..c97158ba41f 100644 --- a/tests/playgrounds/advanced_playground.html +++ b/tests/playgrounds/advanced_playground.html @@ -64,11 +64,9 @@ - - - + - - -
- - - - - - - - - - diff --git a/tests/screenshot/gen_screenshots.js b/tests/screenshot/gen_screenshots.js deleted file mode 100644 index 48af66d1284..00000000000 --- a/tests/screenshot/gen_screenshots.js +++ /dev/null @@ -1,178 +0,0 @@ -/** - * @license - * Copyright 2019 Google LLC - * SPDX-License-Identifier: Apache-2.0 - */ - -/** - * @fileoverview Node.js script to generate screenshots in Chrome, via webdriver. - */ -var webdriverio = require('webdriverio'); -var fs = require('fs'); - -module.exports = genScreenshots; - -var isCollapsed = false; -var filterText = ''; -var isInsertionMarker = false; -var isRtl = false; -var inlineInputs = false; -var externalInputs = false; - -function processArgs() { - var args = process.argv; - for (var i = 0; i < args.length; i++) { - var arg = args[i]; - if (arg === '--collapsed') { - isCollapsed = true; - } else if (arg === '--name') { - filterText = args[i + 1]; - } else if (arg === '--insertionMarker') { - isInsertionMarker = true; - } else if (arg === '--rtl') { - isRtl = true; - } else if (arg === '--inlineInputs') { - inlineInputs = true - } else if (arg === '--externalInputs') { - externalInputs = true - } - } -} - -function checkAndCreateDir(dirname) { - if (!fs.existsSync(dirname)){ - fs.mkdirSync(dirname); - } -}; - -/** - * Opens two different webdriverio browsers. One uses the hosted version of - * blockly_compressed.js; the other uses the local blockly_uncompressed.js. - * - * Each playground is a minimal Blockly instance. This loads the same XML in - * both playgrounds and saves a screenshot of each. - */ -async function genScreenshots() { - var output_url = 'tests/screenshot/outputs' - processArgs(); - checkAndCreateDir(output_url) - checkAndCreateDir(output_url + '/old'); - checkAndCreateDir(output_url + '/new'); - - var url_prefix = 'file://' + __dirname + '/playground'; - var browser_new = await buildBrowser(url_prefix + '_new.html', isRtl); - var browser_old = await buildBrowser(url_prefix + '_old.html', isRtl); - var test_list = getTestList(); - for (var i = 0, testName; testName = test_list[i]; i++) { - await genSingleScreenshot(browser_new, 'new', testName, isCollapsed, isInsertionMarker, inlineInputs, externalInputs); - if (!fs.existsSync(output_url + '/old/' + testName)) { - await genSingleScreenshot(browser_old, 'old', testName, isCollapsed, isInsertionMarker, inlineInputs, externalInputs); - } - } - - await cleanUp(browser_new, browser_old); - return 0; -} - -function getTestList() { - var file = fs.readFileSync('tests/screenshot/test_cases/test_cases.json'); - var json = JSON.parse(file); - var testSpecArr = json.tests; - var testList = []; - for (var i = 0, testSpec; testSpec = testSpecArr[i]; i++) { - if (!testSpec.skip && testSpec.title.includes(filterText)) { - testList.push(testSpec.title); - } - } - return testList; -} - -async function cleanUp(browser_new, browser_old) { - await browser_new.deleteSession(); - await browser_old.deleteSession(); -} - -async function buildBrowser(url, isRtl) { - var options = { - capabilities: { - browserName: 'chrome' - }, - logLevel: 'warn' - }; - // Run in headless mode on Travis. - if (process.env.TRAVIS_CI) { - options.capabilities['goog:chromeOptions'] = { - args: ['--headless', '--no-sandbox', '--disable-dev-shm-usage'] - }; - } - console.log('Starting webdriverio...'); - const browser = await webdriverio.remote(options); - var injectBlockly = function(isRtl) { - workspace = Blockly.inject('blocklyDiv', - { - comments: true, - collapse: true, - disable: true, - - horizontalLayout: false, - maxBlocks: Infinity, - maxInstances: {'test_basic_limit_instances': 3}, - media: '../../media/', - oneBasedIndex: true, - readOnly: false, - rtl: isRtl, - move: { - scrollbars: false, - drag: true, - wheel: false, - }, - toolboxPosition: 'start', - zoom: - { - controls: false, - wheel: true, - startScale: 2.0, - maxScale: 4, - minScale: 0.25, - scaleSpeed: 1.1 - } - }); - } - - await browser.setWindowSize(500, 500); - console.log('Initialized.\nLoading url: ' + url); - await browser.url(url); - await browser.execute(injectBlockly, isRtl); - return browser; -} - -async function genSingleScreenshot(browser, dir, test_name, isCollapsed, isInsertionMarker, inlineInputs, externalInputs) { - var prefix = './tests/screenshot/'; - var xml_url = prefix + 'test_cases/' + test_name; - var xml = fs.readFileSync(xml_url, 'utf8'); - - var loadXmlFn = function(xml_text, isCollapsed, isInsertionMarker, inlineInputs, externalInputs) { - workspace.clear(); - var xml = Blockly.Xml.textToDom(xml_text); - Blockly.Xml.domToWorkspace(xml, workspace); - if (isCollapsed || isInsertionMarker || inlineInputs || externalInputs) { - var blocks = workspace.getAllBlocks(false); - for (var i = 0, block; block = blocks[i]; i++) { - block.setCollapsed(isCollapsed); - block.setInsertionMarker(isInsertionMarker); - if (inlineInputs) { - block.setInputsInline(true); - } else if (externalInputs) { - block.setInputsInline(false); - } - } - } - }; - await browser.execute(loadXmlFn, xml, isCollapsed, isInsertionMarker, inlineInputs, externalInputs); - await browser.saveScreenshot(prefix + '/outputs/' + dir + '/' + test_name + '.png'); -} - - -if (require.main === module) { - genScreenshots(); -} diff --git a/tests/screenshot/img_viewer.html b/tests/screenshot/img_viewer.html deleted file mode 100644 index 366fdb2ab08..00000000000 --- a/tests/screenshot/img_viewer.html +++ /dev/null @@ -1,76 +0,0 @@ - - - - - - Image comparison - - - - - - - - -

-
- - diff --git a/tests/screenshot/playground_new.html b/tests/screenshot/playground_new.html deleted file mode 100644 index f6a4bdc34fd..00000000000 --- a/tests/screenshot/playground_new.html +++ /dev/null @@ -1,105 +0,0 @@ - - - - - -Blockly Playground: New rendering - - - - - - - - - - - - - - - - - -
- - diff --git a/tests/screenshot/playground_old.html b/tests/screenshot/playground_old.html deleted file mode 100644 index 131cc1144bc..00000000000 --- a/tests/screenshot/playground_old.html +++ /dev/null @@ -1,66 +0,0 @@ - - - - - -Blockly Playground: Old rendering - - - - - - - - - - - - - - - - - -
- - diff --git a/tests/screenshot/run_differ.py b/tests/screenshot/run_differ.py deleted file mode 100644 index efc6999227a..00000000000 --- a/tests/screenshot/run_differ.py +++ /dev/null @@ -1,121 +0,0 @@ -#!/usr/bin/python2.7 -# -# Copyright 2019 Google LLC -# -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. - -# Usage: -# run_differ.py with no parameters runs all screenshot tests with blocks in rtl -# and not collapsed. -# --name runs all tests that contain the given name. If not given, -# runs all tests specified in test_cases.json. -# --collapsed runs all tests with the blocks collapsed. If not given, blocks are -# expanded. -# --insertionMarker runs all tests with the blocks set as insertion markers. If -# not given then will default to normal blocks. -# --inlineInputs runs all tests with the blocks set to have inline inputs. If -# not given then the blocks will be in their default state. -# --externalInputs runs all tests with the with all blocks set to have external -# inputs. If not given then the blocks will be in their default state. -# - -import os, errno, platform, shutil, sys - -NAME_ARG = "--name" -COLLAPSE_ARG = "--collapsed" -RTL_ARG = "--rtl" -INSERTION_ARG = "--insertionMarker" -INLINE_INPUTS_ARG = "--inlineInputs" -EXTERNAL_INPUTS_ARG = "--externalInputs" - -ARG_VALS = [COLLAPSE_ARG, RTL_ARG, INSERTION_ARG, INLINE_INPUTS_ARG, EXTERNAL_INPUTS_ARG] - -# Generates the screenshots according to the given parameters, diffs the -# screenshots and then displays them. -def main(): - cleanup() - check_arguments() - filter_text = find_argument_value(NAME_ARG) - argument_string = create_arg_string() - gen_screenshots(filter_text, argument_string) - diff_screenshots(filter_text) - display_screenshots() - -# Cleans up any files left over from running the script previously. -def cleanup(): - remove_dir("tests/screenshot/outputs/new") - remove_dir("tests/screenshot/outputs/diff") - remove_file("tests/screenshot/outputs/test_output.js") - remove_file("tests/screenshot/outputs/test_output.json") - -# If the --name is given find the name of the test case. -def find_argument_value(argument_name): - args = sys.argv - for i in range(len(args)): - if args[i] == argument_name: - if i + 1 < len(args): - return args[i+1] - else: - print ("Must supply a name after name arg") - sys.exit() - return "" - -# Prints an error and exits if the arguments given aren't allowed. -def check_arguments(): - if (INLINE_INPUTS_ARG in sys.argv) and (EXTERNAL_INPUTS_ARG in sys.argv): - print ("Can not have both --inlineInputs and --externalInputs") - sys.exit() - -# Create a string with all arguments. -def create_arg_string(): - arg_string = "" - for arg in sys.argv: - arg_string = arg_string + " " + arg - return arg_string - -# Generates a set of old and new screenshots according to the given parameters. -def gen_screenshots(filter_text, argument_string): - os.system("node tests/screenshot/gen_screenshots.js " + argument_string) - -# Diffs the old and new screenshots that were created in gen_screenshots. -def diff_screenshots(filter_text): - if filter_text != "": - os.system("./node_modules/.bin/mocha tests/screenshot/diff_screenshots.js --ui tdd --reporter ./tests/screenshot/diff-reporter.js" + " --fgrep " + filter_text) - else: - os.system("./node_modules/.bin/mocha tests/screenshot/diff_screenshots.js --ui tdd --reporter ./tests/screenshot/diff-reporter.js") - -# Displays the old screenshots, new screenshots, and the diff of them. -def display_screenshots(): - if (platform.system() == "Linux"): - os.system("xdg-open tests/screenshot/diff_viewer.html") - elif (platform.system() == 'Darwin'): - os.system("open tests/screenshot/diff_viewer.html") - -# Removes a file and catches the error if the file does not exist. -def remove_file(filename): - try: - os.remove(filename) - except (OSError) as e: - if e.errno != errno.ENOENT: - raise - -# Removes a directory and catches the error if the directory does not exist. -def remove_dir(dir_name): - try: - shutil.rmtree(dir_name) - except (OSError) as e: - if e.errno != errno.ENOENT: - raise - -if __name__ == "__main__": - main() diff --git a/tests/screenshot/test_cases/colour_blend b/tests/screenshot/test_cases/colour_blend deleted file mode 100644 index 872c8814b07..00000000000 --- a/tests/screenshot/test_cases/colour_blend +++ /dev/null @@ -1,3 +0,0 @@ - - - \ No newline at end of file diff --git a/tests/screenshot/test_cases/colour_picker b/tests/screenshot/test_cases/colour_picker deleted file mode 100644 index bd24b9aa837..00000000000 --- a/tests/screenshot/test_cases/colour_picker +++ /dev/null @@ -1,3 +0,0 @@ - - - \ No newline at end of file diff --git a/tests/screenshot/test_cases/colour_random b/tests/screenshot/test_cases/colour_random deleted file mode 100644 index ce294d93108..00000000000 --- a/tests/screenshot/test_cases/colour_random +++ /dev/null @@ -1,3 +0,0 @@ - - - \ No newline at end of file diff --git a/tests/screenshot/test_cases/colour_rgb b/tests/screenshot/test_cases/colour_rgb deleted file mode 100644 index 29b3dedccf4..00000000000 --- a/tests/screenshot/test_cases/colour_rgb +++ /dev/null @@ -1,3 +0,0 @@ - - - \ No newline at end of file diff --git a/tests/screenshot/test_cases/controls_flow_statements b/tests/screenshot/test_cases/controls_flow_statements deleted file mode 100644 index efe98837b8e..00000000000 --- a/tests/screenshot/test_cases/controls_flow_statements +++ /dev/null @@ -1,3 +0,0 @@ - - - \ No newline at end of file diff --git a/tests/screenshot/test_cases/controls_for b/tests/screenshot/test_cases/controls_for deleted file mode 100644 index 3604aebff42..00000000000 --- a/tests/screenshot/test_cases/controls_for +++ /dev/null @@ -1,3 +0,0 @@ - - - \ No newline at end of file diff --git a/tests/screenshot/test_cases/controls_forEach b/tests/screenshot/test_cases/controls_forEach deleted file mode 100644 index 24dc9176212..00000000000 --- a/tests/screenshot/test_cases/controls_forEach +++ /dev/null @@ -1,3 +0,0 @@ - - - \ No newline at end of file diff --git a/tests/screenshot/test_cases/controls_if b/tests/screenshot/test_cases/controls_if deleted file mode 100644 index 83e3747866a..00000000000 --- a/tests/screenshot/test_cases/controls_if +++ /dev/null @@ -1,3 +0,0 @@ - - - \ No newline at end of file diff --git a/tests/screenshot/test_cases/controls_if_else b/tests/screenshot/test_cases/controls_if_else deleted file mode 100644 index 90443386897..00000000000 --- a/tests/screenshot/test_cases/controls_if_else +++ /dev/null @@ -1,3 +0,0 @@ - - - \ No newline at end of file diff --git a/tests/screenshot/test_cases/controls_if_elseif b/tests/screenshot/test_cases/controls_if_elseif deleted file mode 100644 index d6988f20f89..00000000000 --- a/tests/screenshot/test_cases/controls_if_elseif +++ /dev/null @@ -1,3 +0,0 @@ - - - \ No newline at end of file diff --git a/tests/screenshot/test_cases/controls_if_if b/tests/screenshot/test_cases/controls_if_if deleted file mode 100644 index c2977749ec5..00000000000 --- a/tests/screenshot/test_cases/controls_if_if +++ /dev/null @@ -1,3 +0,0 @@ - - - \ No newline at end of file diff --git a/tests/screenshot/test_cases/controls_ifelse b/tests/screenshot/test_cases/controls_ifelse deleted file mode 100644 index a648344ecd3..00000000000 --- a/tests/screenshot/test_cases/controls_ifelse +++ /dev/null @@ -1,3 +0,0 @@ - - - \ No newline at end of file diff --git a/tests/screenshot/test_cases/controls_repeat b/tests/screenshot/test_cases/controls_repeat deleted file mode 100644 index c918fb74c04..00000000000 --- a/tests/screenshot/test_cases/controls_repeat +++ /dev/null @@ -1,3 +0,0 @@ - - - \ No newline at end of file diff --git a/tests/screenshot/test_cases/controls_repeat_ext b/tests/screenshot/test_cases/controls_repeat_ext deleted file mode 100644 index c0b57c8db1d..00000000000 --- a/tests/screenshot/test_cases/controls_repeat_ext +++ /dev/null @@ -1,3 +0,0 @@ - - - \ No newline at end of file diff --git a/tests/screenshot/test_cases/controls_whileUntil b/tests/screenshot/test_cases/controls_whileUntil deleted file mode 100644 index 0e34235471e..00000000000 --- a/tests/screenshot/test_cases/controls_whileUntil +++ /dev/null @@ -1,3 +0,0 @@ - - - \ No newline at end of file diff --git a/tests/screenshot/test_cases/lists_create_empty b/tests/screenshot/test_cases/lists_create_empty deleted file mode 100644 index fc6dcacded2..00000000000 --- a/tests/screenshot/test_cases/lists_create_empty +++ /dev/null @@ -1,3 +0,0 @@ - - - \ No newline at end of file diff --git a/tests/screenshot/test_cases/lists_create_with b/tests/screenshot/test_cases/lists_create_with deleted file mode 100644 index 7e3cb960370..00000000000 --- a/tests/screenshot/test_cases/lists_create_with +++ /dev/null @@ -1,3 +0,0 @@ - - - \ No newline at end of file diff --git a/tests/screenshot/test_cases/lists_create_with_container b/tests/screenshot/test_cases/lists_create_with_container deleted file mode 100644 index b886158c0ac..00000000000 --- a/tests/screenshot/test_cases/lists_create_with_container +++ /dev/null @@ -1,3 +0,0 @@ - - - \ No newline at end of file diff --git a/tests/screenshot/test_cases/lists_create_with_item b/tests/screenshot/test_cases/lists_create_with_item deleted file mode 100644 index c92762fd6a0..00000000000 --- a/tests/screenshot/test_cases/lists_create_with_item +++ /dev/null @@ -1,3 +0,0 @@ - - - \ No newline at end of file diff --git a/tests/screenshot/test_cases/lists_getIndex b/tests/screenshot/test_cases/lists_getIndex deleted file mode 100644 index d069e04aec5..00000000000 --- a/tests/screenshot/test_cases/lists_getIndex +++ /dev/null @@ -1,3 +0,0 @@ - - - \ No newline at end of file diff --git a/tests/screenshot/test_cases/lists_getSublist b/tests/screenshot/test_cases/lists_getSublist deleted file mode 100644 index f967bc911be..00000000000 --- a/tests/screenshot/test_cases/lists_getSublist +++ /dev/null @@ -1,3 +0,0 @@ - - - \ No newline at end of file diff --git a/tests/screenshot/test_cases/lists_indexOf b/tests/screenshot/test_cases/lists_indexOf deleted file mode 100644 index 1d3f16f7fcc..00000000000 --- a/tests/screenshot/test_cases/lists_indexOf +++ /dev/null @@ -1,3 +0,0 @@ - - - \ No newline at end of file diff --git a/tests/screenshot/test_cases/lists_isEmpty b/tests/screenshot/test_cases/lists_isEmpty deleted file mode 100644 index fabbd9607cc..00000000000 --- a/tests/screenshot/test_cases/lists_isEmpty +++ /dev/null @@ -1,3 +0,0 @@ - - - \ No newline at end of file diff --git a/tests/screenshot/test_cases/lists_length b/tests/screenshot/test_cases/lists_length deleted file mode 100644 index 4c6aa2bf8d0..00000000000 --- a/tests/screenshot/test_cases/lists_length +++ /dev/null @@ -1,3 +0,0 @@ - - - \ No newline at end of file diff --git a/tests/screenshot/test_cases/lists_repeat b/tests/screenshot/test_cases/lists_repeat deleted file mode 100644 index 20db6be7a0f..00000000000 --- a/tests/screenshot/test_cases/lists_repeat +++ /dev/null @@ -1,3 +0,0 @@ - - - \ No newline at end of file diff --git a/tests/screenshot/test_cases/lists_reverse b/tests/screenshot/test_cases/lists_reverse deleted file mode 100644 index 6269dc23bba..00000000000 --- a/tests/screenshot/test_cases/lists_reverse +++ /dev/null @@ -1,3 +0,0 @@ - - - \ No newline at end of file diff --git a/tests/screenshot/test_cases/lists_setIndex b/tests/screenshot/test_cases/lists_setIndex deleted file mode 100644 index e50b6879cf7..00000000000 --- a/tests/screenshot/test_cases/lists_setIndex +++ /dev/null @@ -1,3 +0,0 @@ - - - \ No newline at end of file diff --git a/tests/screenshot/test_cases/lists_sort b/tests/screenshot/test_cases/lists_sort deleted file mode 100644 index 98dd4bd55be..00000000000 --- a/tests/screenshot/test_cases/lists_sort +++ /dev/null @@ -1,3 +0,0 @@ - - - \ No newline at end of file diff --git a/tests/screenshot/test_cases/lists_split b/tests/screenshot/test_cases/lists_split deleted file mode 100644 index d1a5c9f4e6c..00000000000 --- a/tests/screenshot/test_cases/lists_split +++ /dev/null @@ -1,3 +0,0 @@ - - - \ No newline at end of file diff --git a/tests/screenshot/test_cases/logic_boolean b/tests/screenshot/test_cases/logic_boolean deleted file mode 100644 index d10c00f1626..00000000000 --- a/tests/screenshot/test_cases/logic_boolean +++ /dev/null @@ -1,3 +0,0 @@ - - - \ No newline at end of file diff --git a/tests/screenshot/test_cases/logic_compare b/tests/screenshot/test_cases/logic_compare deleted file mode 100644 index 014b9a91617..00000000000 --- a/tests/screenshot/test_cases/logic_compare +++ /dev/null @@ -1,3 +0,0 @@ - - - \ No newline at end of file diff --git a/tests/screenshot/test_cases/logic_negate b/tests/screenshot/test_cases/logic_negate deleted file mode 100644 index 648885cb099..00000000000 --- a/tests/screenshot/test_cases/logic_negate +++ /dev/null @@ -1,3 +0,0 @@ - - - \ No newline at end of file diff --git a/tests/screenshot/test_cases/logic_null b/tests/screenshot/test_cases/logic_null deleted file mode 100644 index ffc322af68f..00000000000 --- a/tests/screenshot/test_cases/logic_null +++ /dev/null @@ -1,3 +0,0 @@ - - - \ No newline at end of file diff --git a/tests/screenshot/test_cases/logic_operation b/tests/screenshot/test_cases/logic_operation deleted file mode 100644 index b02967d5d1a..00000000000 --- a/tests/screenshot/test_cases/logic_operation +++ /dev/null @@ -1,3 +0,0 @@ - - - \ No newline at end of file diff --git a/tests/screenshot/test_cases/logic_ternary b/tests/screenshot/test_cases/logic_ternary deleted file mode 100644 index 84f47e0b139..00000000000 --- a/tests/screenshot/test_cases/logic_ternary +++ /dev/null @@ -1,3 +0,0 @@ - - - \ No newline at end of file diff --git a/tests/screenshot/test_cases/math_addition b/tests/screenshot/test_cases/math_addition deleted file mode 100644 index 0637ea11d8e..00000000000 --- a/tests/screenshot/test_cases/math_addition +++ /dev/null @@ -1,15 +0,0 @@ - - - ADD - - - 1 - - - - - 1 - - - - diff --git a/tests/screenshot/test_cases/math_arithmetic b/tests/screenshot/test_cases/math_arithmetic deleted file mode 100644 index 831727763f2..00000000000 --- a/tests/screenshot/test_cases/math_arithmetic +++ /dev/null @@ -1,3 +0,0 @@ - - - \ No newline at end of file diff --git a/tests/screenshot/test_cases/math_atan2 b/tests/screenshot/test_cases/math_atan2 deleted file mode 100644 index 6d53e2ba0d9..00000000000 --- a/tests/screenshot/test_cases/math_atan2 +++ /dev/null @@ -1,3 +0,0 @@ - - - \ No newline at end of file diff --git a/tests/screenshot/test_cases/math_change b/tests/screenshot/test_cases/math_change deleted file mode 100644 index 90894f95ce3..00000000000 --- a/tests/screenshot/test_cases/math_change +++ /dev/null @@ -1,3 +0,0 @@ - - - \ No newline at end of file diff --git a/tests/screenshot/test_cases/math_constant b/tests/screenshot/test_cases/math_constant deleted file mode 100644 index 67a56875458..00000000000 --- a/tests/screenshot/test_cases/math_constant +++ /dev/null @@ -1,3 +0,0 @@ - - - \ No newline at end of file diff --git a/tests/screenshot/test_cases/math_constrain b/tests/screenshot/test_cases/math_constrain deleted file mode 100644 index f98273b0cd1..00000000000 --- a/tests/screenshot/test_cases/math_constrain +++ /dev/null @@ -1,3 +0,0 @@ - - - \ No newline at end of file diff --git a/tests/screenshot/test_cases/math_modulo b/tests/screenshot/test_cases/math_modulo deleted file mode 100644 index cbd1c5e2fe1..00000000000 --- a/tests/screenshot/test_cases/math_modulo +++ /dev/null @@ -1,3 +0,0 @@ - - - \ No newline at end of file diff --git a/tests/screenshot/test_cases/math_number b/tests/screenshot/test_cases/math_number deleted file mode 100644 index 6eb9a8671fe..00000000000 --- a/tests/screenshot/test_cases/math_number +++ /dev/null @@ -1,3 +0,0 @@ - - - \ No newline at end of file diff --git a/tests/screenshot/test_cases/math_number_property b/tests/screenshot/test_cases/math_number_property deleted file mode 100644 index dea4718fd7e..00000000000 --- a/tests/screenshot/test_cases/math_number_property +++ /dev/null @@ -1,3 +0,0 @@ - - - \ No newline at end of file diff --git a/tests/screenshot/test_cases/math_on_list b/tests/screenshot/test_cases/math_on_list deleted file mode 100644 index ecdb664a27e..00000000000 --- a/tests/screenshot/test_cases/math_on_list +++ /dev/null @@ -1,3 +0,0 @@ - - - \ No newline at end of file diff --git a/tests/screenshot/test_cases/math_random_float b/tests/screenshot/test_cases/math_random_float deleted file mode 100644 index f2ea40d93b7..00000000000 --- a/tests/screenshot/test_cases/math_random_float +++ /dev/null @@ -1,3 +0,0 @@ - - - \ No newline at end of file diff --git a/tests/screenshot/test_cases/math_random_int b/tests/screenshot/test_cases/math_random_int deleted file mode 100644 index d655f9b621a..00000000000 --- a/tests/screenshot/test_cases/math_random_int +++ /dev/null @@ -1,3 +0,0 @@ - - - \ No newline at end of file diff --git a/tests/screenshot/test_cases/math_round b/tests/screenshot/test_cases/math_round deleted file mode 100644 index 2811cc105f3..00000000000 --- a/tests/screenshot/test_cases/math_round +++ /dev/null @@ -1,3 +0,0 @@ - - - \ No newline at end of file diff --git a/tests/screenshot/test_cases/math_single b/tests/screenshot/test_cases/math_single deleted file mode 100644 index a9a4fba4275..00000000000 --- a/tests/screenshot/test_cases/math_single +++ /dev/null @@ -1,3 +0,0 @@ - - - \ No newline at end of file diff --git a/tests/screenshot/test_cases/math_subtraction b/tests/screenshot/test_cases/math_subtraction deleted file mode 100644 index 81d331d8c44..00000000000 --- a/tests/screenshot/test_cases/math_subtraction +++ /dev/null @@ -1,15 +0,0 @@ - - - MINUS - - - 3 - - - - - 4 - - - - diff --git a/tests/screenshot/test_cases/math_trig b/tests/screenshot/test_cases/math_trig deleted file mode 100644 index 4be7fd358be..00000000000 --- a/tests/screenshot/test_cases/math_trig +++ /dev/null @@ -1,3 +0,0 @@ - - - \ No newline at end of file diff --git a/tests/screenshot/test_cases/multi_block_1 b/tests/screenshot/test_cases/multi_block_1 deleted file mode 100644 index c094a75a050..00000000000 --- a/tests/screenshot/test_cases/multi_block_1 +++ /dev/null @@ -1,74 +0,0 @@ - - - item - - - - - - - EQ - - - - - TRUE - - - - - - - EQ - - - MULTIPLY - - - -1 - - - - - 42 - - - - - - - - - - - - - 900 - - - - - - - item - - - f00 - - - - - item - - - bar - - - - - - - - - - diff --git a/tests/screenshot/test_cases/multi_block_logic b/tests/screenshot/test_cases/multi_block_logic deleted file mode 100644 index 89579f6ab14..00000000000 --- a/tests/screenshot/test_cases/multi_block_logic +++ /dev/null @@ -1,34 +0,0 @@ - - - EQ - - - - - TRUE - - - - - - - EQ - - - MULTIPLY - - - -1 - - - - - 42 - - - - - - - - diff --git a/tests/screenshot/test_cases/multi_colour_with_external b/tests/screenshot/test_cases/multi_colour_with_external deleted file mode 100644 index 58e20248ffc..00000000000 --- a/tests/screenshot/test_cases/multi_colour_with_external +++ /dev/null @@ -1,44 +0,0 @@ - - - - - 100 - - - - - 64 - - - - - 10 - - - - - - - 50 - - - - - 0 - - - ADD - - - 1 - - - - - 1 - - - - - - diff --git a/tests/screenshot/test_cases/multi_colour_with_internal b/tests/screenshot/test_cases/multi_colour_with_internal deleted file mode 100644 index 040128d1d07..00000000000 --- a/tests/screenshot/test_cases/multi_colour_with_internal +++ /dev/null @@ -1,44 +0,0 @@ - - - - - 100 - - - - - 64 - - - - - 10 - - - - - - - 50 - - - - - 0 - - - ADD - - - 1 - - - - - 1 - - - - - - diff --git a/tests/screenshot/test_cases/multi_stack b/tests/screenshot/test_cases/multi_stack deleted file mode 100644 index a56d7860f8b..00000000000 --- a/tests/screenshot/test_cases/multi_stack +++ /dev/null @@ -1,53 +0,0 @@ - - - item - - - item - - - one - - - - - item - - - two - - - - - item - - - three - - - - - item - - - four - - - - - item - - - five - - - - - - - - - - - - diff --git a/tests/screenshot/test_cases/not_true b/tests/screenshot/test_cases/not_true deleted file mode 100644 index b8955956ec7..00000000000 --- a/tests/screenshot/test_cases/not_true +++ /dev/null @@ -1,9 +0,0 @@ - - - - - TRUE - - - - diff --git a/tests/screenshot/test_cases/procedures_callnoreturn b/tests/screenshot/test_cases/procedures_callnoreturn deleted file mode 100644 index 4e4939e5bee..00000000000 --- a/tests/screenshot/test_cases/procedures_callnoreturn +++ /dev/null @@ -1,3 +0,0 @@ - - - \ No newline at end of file diff --git a/tests/screenshot/test_cases/procedures_callreturn b/tests/screenshot/test_cases/procedures_callreturn deleted file mode 100644 index f0ae0a187e9..00000000000 --- a/tests/screenshot/test_cases/procedures_callreturn +++ /dev/null @@ -1,3 +0,0 @@ - - - \ No newline at end of file diff --git a/tests/screenshot/test_cases/procedures_defnoreturn b/tests/screenshot/test_cases/procedures_defnoreturn deleted file mode 100644 index 4bdfa70b9ed..00000000000 --- a/tests/screenshot/test_cases/procedures_defnoreturn +++ /dev/null @@ -1,3 +0,0 @@ - - - \ No newline at end of file diff --git a/tests/screenshot/test_cases/procedures_defreturn b/tests/screenshot/test_cases/procedures_defreturn deleted file mode 100644 index 7b73e32892f..00000000000 --- a/tests/screenshot/test_cases/procedures_defreturn +++ /dev/null @@ -1,3 +0,0 @@ - - - \ No newline at end of file diff --git a/tests/screenshot/test_cases/procedures_ifreturn b/tests/screenshot/test_cases/procedures_ifreturn deleted file mode 100644 index a2a66238f5e..00000000000 --- a/tests/screenshot/test_cases/procedures_ifreturn +++ /dev/null @@ -1,3 +0,0 @@ - - - \ No newline at end of file diff --git a/tests/screenshot/test_cases/procedures_mutatorarg b/tests/screenshot/test_cases/procedures_mutatorarg deleted file mode 100644 index 99252558f55..00000000000 --- a/tests/screenshot/test_cases/procedures_mutatorarg +++ /dev/null @@ -1,3 +0,0 @@ - - - \ No newline at end of file diff --git a/tests/screenshot/test_cases/procedures_mutatorcontainer b/tests/screenshot/test_cases/procedures_mutatorcontainer deleted file mode 100644 index 9600d2006c4..00000000000 --- a/tests/screenshot/test_cases/procedures_mutatorcontainer +++ /dev/null @@ -1,3 +0,0 @@ - - - \ No newline at end of file diff --git a/tests/screenshot/test_cases/test_basic_empty b/tests/screenshot/test_cases/test_basic_empty deleted file mode 100644 index 166f7990e82..00000000000 --- a/tests/screenshot/test_cases/test_basic_empty +++ /dev/null @@ -1,3 +0,0 @@ - - - \ No newline at end of file diff --git a/tests/screenshot/test_cases/test_basic_empty_with_mutator b/tests/screenshot/test_cases/test_basic_empty_with_mutator deleted file mode 100644 index 4b8293f8c1d..00000000000 --- a/tests/screenshot/test_cases/test_basic_empty_with_mutator +++ /dev/null @@ -1,3 +0,0 @@ - - - \ No newline at end of file diff --git a/tests/screenshot/test_cases/test_basic_limit_instances b/tests/screenshot/test_cases/test_basic_limit_instances deleted file mode 100644 index 498ae99674b..00000000000 --- a/tests/screenshot/test_cases/test_basic_limit_instances +++ /dev/null @@ -1,3 +0,0 @@ - - - \ No newline at end of file diff --git a/tests/screenshot/test_cases/test_basic_value_to_stack b/tests/screenshot/test_cases/test_basic_value_to_stack deleted file mode 100644 index 56dd4ff27e1..00000000000 --- a/tests/screenshot/test_cases/test_basic_value_to_stack +++ /dev/null @@ -1,3 +0,0 @@ - - - \ No newline at end of file diff --git a/tests/screenshot/test_cases/test_basic_value_to_statement b/tests/screenshot/test_cases/test_basic_value_to_statement deleted file mode 100644 index ac133d16f70..00000000000 --- a/tests/screenshot/test_cases/test_basic_value_to_statement +++ /dev/null @@ -1,3 +0,0 @@ - - - \ No newline at end of file diff --git a/tests/screenshot/test_cases/test_cases.json b/tests/screenshot/test_cases/test_cases.json deleted file mode 100644 index 904cca64a6c..00000000000 --- a/tests/screenshot/test_cases/test_cases.json +++ /dev/null @@ -1,480 +0,0 @@ -{ - "tests": [ - { - "title": "logic_boolean", - "skip": false - }, - { - "title": "controls_if", - "skip": false - }, - { - "title": "controls_ifelse", - "skip": false - }, - { - "title": "logic_compare", - "skip": false - }, - { - "title": "logic_operation", - "skip": false - }, - { - "title": "logic_negate", - "skip": false - }, - { - "title": "logic_null", - "skip": false - }, - { - "title": "logic_ternary", - "skip": false - }, - { - "title": "controls_if_if", - "skip": false - }, - { - "title": "controls_if_elseif", - "skip": false - }, - { - "title": "controls_if_else", - "skip": false - }, - { - "title": "controls_repeat_ext", - "skip": false - }, - { - "title": "controls_repeat", - "skip": false - }, - { - "title": "controls_whileUntil", - "skip": false - }, - { - "title": "controls_for", - "skip": false - }, - { - "title": "controls_forEach", - "skip": false - }, - { - "title": "controls_flow_statements", - "skip": false - }, - { - "title": "math_number", - "skip": false - }, - { - "title": "math_arithmetic", - "skip": false - }, - { - "title": "math_single", - "skip": false - }, - { - "title": "math_trig", - "skip": false - }, - { - "title": "math_constant", - "skip": false - }, - { - "title": "math_number_property", - "skip": false - }, - { - "title": "math_change", - "skip": false - }, - { - "title": "math_round", - "skip": false - }, - { - "title": "math_on_list", - "skip": false - }, - { - "title": "math_modulo", - "skip": false - }, - { - "title": "math_constrain", - "skip": false - }, - { - "title": "math_random_int", - "skip": false - }, - { - "title": "math_random_float", - "skip": false - }, - { - "title": "math_atan2", - "skip": false - }, - { - "title": "text_join", - "skip": false - }, - { - "title": "text_create_join_container", - "skip": false - }, - { - "title": "text_create_join_item", - "skip": false - }, - { - "title": "text_append", - "skip": false - }, - { - "title": "text_length", - "skip": false - }, - { - "title": "text_isEmpty", - "skip": false - }, - { - "title": "text_indexOf", - "skip": false - }, - { - "title": "text_charAt", - "skip": false - }, - { - "title": "text_getSubstring", - "skip": false - }, - { - "title": "text_changeCase", - "skip": false - }, - { - "title": "text_trim", - "skip": false - }, - { - "title": "text_print", - "skip": false - }, - { - "title": "text_prompt_ext", - "skip": false - }, - { - "title": "text_prompt", - "skip": false - }, - { - "title": "text_count", - "skip": false - }, - { - "title": "text_replace", - "skip": false - }, - { - "title": "text_reverse", - "skip": false - }, - { - "title": "lists_create_empty", - "skip": false - }, - { - "title": "lists_repeat", - "skip": false - }, - { - "title": "lists_reverse", - "skip": false - }, - { - "title": "lists_isEmpty", - "skip": false - }, - { - "title": "lists_length", - "skip": false - }, - { - "title": "lists_create_with", - "skip": false - }, - { - "title": "lists_create_with_container", - "skip": false - }, - { - "title": "lists_create_with_item", - "skip": false - }, - { - "title": "lists_indexOf", - "skip": false - }, - { - "title": "lists_getIndex", - "skip": false - }, - { - "title": "lists_setIndex", - "skip": false - }, - { - "title": "lists_getSublist", - "skip": false - }, - { - "title": "lists_sort", - "skip": false - }, - { - "title": "lists_split", - "skip": false - }, - { - "title": "colour_picker", - "skip": false - }, - { - "title": "colour_random", - "skip": false - }, - { - "title": "colour_rgb", - "skip": false - }, - { - "title": "colour_blend", - "skip": false - }, - { - "title": "variables_get", - "skip": false - }, - { - "title": "variables_set", - "skip": false - }, - { - "title": "variables_get_dynamic", - "skip": false - }, - { - "title": "variables_set_dynamic", - "skip": false - }, - { - "title": "procedures_defnoreturn", - "skip": true - }, - { - "title": "procedures_defreturn", - "skip": true - }, - { - "title": "procedures_mutatorcontainer", - "skip": true - }, - { - "title": "procedures_mutatorarg", - "skip": true - }, - { - "title": "procedures_callnoreturn", - "skip": true - }, - { - "title": "procedures_callreturn", - "skip": true - }, - { - "title": "procedures_ifreturn", - "skip": true - }, - { - "title": "test_basic_empty", - "skip": false - }, - { - "title": "test_basic_value_to_stack", - "skip": false - }, - { - "title": "test_basic_value_to_statement", - "skip": false - }, - { - "title": "test_basic_limit_instances", - "skip": false - }, - { - "title": "test_dropdowns_long", - "skip": false - }, - { - "title": "test_dropdowns_images", - "skip": false - }, - { - "title": "test_dropdowns_images_and_text", - "skip": false - }, - { - "title": "test_fields_angle", - "skip": false - }, - { - "title": "test_fields_date", - "skip": false - }, - { - "title": "test_fields_text_input", - "skip": false - }, - { - "title": "test_fields_checkbox", - "skip": false - }, - { - "title": "test_fields_colour", - "skip": false - }, - { - "title": "test_fields_variable", - "skip": false - }, - { - "title": "test_fields_label_serializable", - "skip": false - }, - { - "title": "test_numbers_float", - "skip": false - }, - { - "title": "test_numbers_whole", - "skip": false - }, - { - "title": "test_numbers_hundredths", - "skip": false - }, - { - "title": "test_numbers_halves", - "skip": false - }, - { - "title": "test_numbers_three_halves", - "skip": false - }, - { - "title": "test_numbers_whole_bounded", - "skip": false - }, - { - "title": "test_images_datauri", - "skip": false - }, - { - "title": "test_images_small", - "skip": false - }, - { - "title": "test_images_large", - "skip": false - }, - { - "title": "test_images_fliprtl", - "skip": false - }, - { - "title": "test_images_missing", - "skip": false - }, - { - "title": "test_images_many_icons", - "skip": false - }, - { - "title": "test_style_hat", - "skip": false - }, - { - "title": "test_style_hex1", - "skip": false - }, - { - "title": "test_style_hex2", - "skip": false - }, - { - "title": "test_style_hex3", - "skip": false - }, - { - "title": "test_style_no_colour", - "skip": false - }, - { - "title": "test_style_hex4", - "skip": false - }, - { - "title": "test_style_hex5", - "skip": false - }, - { - "title": "test_style_emoji", - "skip": false - }, - { - "title": "test_basic_empty_with_mutator", - "skip": false - }, - { - "title": "test_dropdowns_dynamic", - "skip": false - }, - { - "title": "multi_block_1", - "skip": false - }, - { - "title": "multi_block_logic", - "skip": false - }, - { - "title": "multi_colour_with_external", - "skip": false - }, - { - "title": "multi_colour_with_internal", - "skip": false - }, - { - "title": "not_true", - "skip": false - }, - { - "title": "multi_stack", - "skip": false - } - ] -} diff --git a/tests/screenshot/test_cases/test_dropdowns_dynamic b/tests/screenshot/test_cases/test_dropdowns_dynamic deleted file mode 100644 index 3c40077bdd2..00000000000 --- a/tests/screenshot/test_cases/test_dropdowns_dynamic +++ /dev/null @@ -1,3 +0,0 @@ - - - \ No newline at end of file diff --git a/tests/screenshot/test_cases/test_dropdowns_images b/tests/screenshot/test_cases/test_dropdowns_images deleted file mode 100644 index 496dcf96b5f..00000000000 --- a/tests/screenshot/test_cases/test_dropdowns_images +++ /dev/null @@ -1,3 +0,0 @@ - - - \ No newline at end of file diff --git a/tests/screenshot/test_cases/test_dropdowns_images_and_text b/tests/screenshot/test_cases/test_dropdowns_images_and_text deleted file mode 100644 index 1edeac8a484..00000000000 --- a/tests/screenshot/test_cases/test_dropdowns_images_and_text +++ /dev/null @@ -1,3 +0,0 @@ - - - \ No newline at end of file diff --git a/tests/screenshot/test_cases/test_dropdowns_long b/tests/screenshot/test_cases/test_dropdowns_long deleted file mode 100644 index 914c7620cfb..00000000000 --- a/tests/screenshot/test_cases/test_dropdowns_long +++ /dev/null @@ -1,3 +0,0 @@ - - - \ No newline at end of file diff --git a/tests/screenshot/test_cases/test_fields_angle b/tests/screenshot/test_cases/test_fields_angle deleted file mode 100644 index 772d6d97cf6..00000000000 --- a/tests/screenshot/test_cases/test_fields_angle +++ /dev/null @@ -1,3 +0,0 @@ - - - \ No newline at end of file diff --git a/tests/screenshot/test_cases/test_fields_checkbox b/tests/screenshot/test_cases/test_fields_checkbox deleted file mode 100644 index 5b440ecaf26..00000000000 --- a/tests/screenshot/test_cases/test_fields_checkbox +++ /dev/null @@ -1,3 +0,0 @@ - - - \ No newline at end of file diff --git a/tests/screenshot/test_cases/test_fields_colour b/tests/screenshot/test_cases/test_fields_colour deleted file mode 100644 index 72cb5c07809..00000000000 --- a/tests/screenshot/test_cases/test_fields_colour +++ /dev/null @@ -1,3 +0,0 @@ - - - \ No newline at end of file diff --git a/tests/screenshot/test_cases/test_fields_label_serializable b/tests/screenshot/test_cases/test_fields_label_serializable deleted file mode 100644 index 14e08f121e6..00000000000 --- a/tests/screenshot/test_cases/test_fields_label_serializable +++ /dev/null @@ -1,3 +0,0 @@ - - - \ No newline at end of file diff --git a/tests/screenshot/test_cases/test_fields_text_input b/tests/screenshot/test_cases/test_fields_text_input deleted file mode 100644 index 6aeb4439930..00000000000 --- a/tests/screenshot/test_cases/test_fields_text_input +++ /dev/null @@ -1,3 +0,0 @@ - - - \ No newline at end of file diff --git a/tests/screenshot/test_cases/test_fields_variable b/tests/screenshot/test_cases/test_fields_variable deleted file mode 100644 index 9a1bd43376f..00000000000 --- a/tests/screenshot/test_cases/test_fields_variable +++ /dev/null @@ -1,3 +0,0 @@ - - - \ No newline at end of file diff --git a/tests/screenshot/test_cases/test_images_datauri b/tests/screenshot/test_cases/test_images_datauri deleted file mode 100644 index 8dc9b00597a..00000000000 --- a/tests/screenshot/test_cases/test_images_datauri +++ /dev/null @@ -1,3 +0,0 @@ - - - \ No newline at end of file diff --git a/tests/screenshot/test_cases/test_images_fliprtl b/tests/screenshot/test_cases/test_images_fliprtl deleted file mode 100644 index e666629c889..00000000000 --- a/tests/screenshot/test_cases/test_images_fliprtl +++ /dev/null @@ -1,3 +0,0 @@ - - - \ No newline at end of file diff --git a/tests/screenshot/test_cases/test_images_large b/tests/screenshot/test_cases/test_images_large deleted file mode 100644 index 43da934139a..00000000000 --- a/tests/screenshot/test_cases/test_images_large +++ /dev/null @@ -1,3 +0,0 @@ - - - \ No newline at end of file diff --git a/tests/screenshot/test_cases/test_images_many_icons b/tests/screenshot/test_cases/test_images_many_icons deleted file mode 100644 index 9369bd14f4e..00000000000 --- a/tests/screenshot/test_cases/test_images_many_icons +++ /dev/null @@ -1,3 +0,0 @@ - - - \ No newline at end of file diff --git a/tests/screenshot/test_cases/test_images_missing b/tests/screenshot/test_cases/test_images_missing deleted file mode 100644 index c194b5dab4c..00000000000 --- a/tests/screenshot/test_cases/test_images_missing +++ /dev/null @@ -1,3 +0,0 @@ - - - \ No newline at end of file diff --git a/tests/screenshot/test_cases/test_images_small b/tests/screenshot/test_cases/test_images_small deleted file mode 100644 index e96d5bb3c45..00000000000 --- a/tests/screenshot/test_cases/test_images_small +++ /dev/null @@ -1,3 +0,0 @@ - - - \ No newline at end of file diff --git a/tests/screenshot/test_cases/test_numbers_float b/tests/screenshot/test_cases/test_numbers_float deleted file mode 100644 index 65bbb5933dd..00000000000 --- a/tests/screenshot/test_cases/test_numbers_float +++ /dev/null @@ -1,3 +0,0 @@ - - - \ No newline at end of file diff --git a/tests/screenshot/test_cases/test_numbers_halves b/tests/screenshot/test_cases/test_numbers_halves deleted file mode 100644 index f531b0fa502..00000000000 --- a/tests/screenshot/test_cases/test_numbers_halves +++ /dev/null @@ -1,3 +0,0 @@ - - - \ No newline at end of file diff --git a/tests/screenshot/test_cases/test_numbers_hundredths b/tests/screenshot/test_cases/test_numbers_hundredths deleted file mode 100644 index d00634857db..00000000000 --- a/tests/screenshot/test_cases/test_numbers_hundredths +++ /dev/null @@ -1,3 +0,0 @@ - - - \ No newline at end of file diff --git a/tests/screenshot/test_cases/test_numbers_three_halves b/tests/screenshot/test_cases/test_numbers_three_halves deleted file mode 100644 index e5bc698c89b..00000000000 --- a/tests/screenshot/test_cases/test_numbers_three_halves +++ /dev/null @@ -1,3 +0,0 @@ - - - \ No newline at end of file diff --git a/tests/screenshot/test_cases/test_numbers_whole b/tests/screenshot/test_cases/test_numbers_whole deleted file mode 100644 index 156d6a14e76..00000000000 --- a/tests/screenshot/test_cases/test_numbers_whole +++ /dev/null @@ -1,3 +0,0 @@ - - - \ No newline at end of file diff --git a/tests/screenshot/test_cases/test_numbers_whole_bounded b/tests/screenshot/test_cases/test_numbers_whole_bounded deleted file mode 100644 index bc59763d299..00000000000 --- a/tests/screenshot/test_cases/test_numbers_whole_bounded +++ /dev/null @@ -1,3 +0,0 @@ - - - \ No newline at end of file diff --git a/tests/screenshot/test_cases/test_style_emoji b/tests/screenshot/test_cases/test_style_emoji deleted file mode 100644 index 3e04b918eb1..00000000000 --- a/tests/screenshot/test_cases/test_style_emoji +++ /dev/null @@ -1,3 +0,0 @@ - - - \ No newline at end of file diff --git a/tests/screenshot/test_cases/test_style_hat b/tests/screenshot/test_cases/test_style_hat deleted file mode 100644 index f0014167431..00000000000 --- a/tests/screenshot/test_cases/test_style_hat +++ /dev/null @@ -1,3 +0,0 @@ - - - \ No newline at end of file diff --git a/tests/screenshot/test_cases/test_style_hex1 b/tests/screenshot/test_cases/test_style_hex1 deleted file mode 100644 index 02838254cfd..00000000000 --- a/tests/screenshot/test_cases/test_style_hex1 +++ /dev/null @@ -1,3 +0,0 @@ - - - \ No newline at end of file diff --git a/tests/screenshot/test_cases/test_style_hex2 b/tests/screenshot/test_cases/test_style_hex2 deleted file mode 100644 index 2a1e8e0e93e..00000000000 --- a/tests/screenshot/test_cases/test_style_hex2 +++ /dev/null @@ -1,3 +0,0 @@ - - - \ No newline at end of file diff --git a/tests/screenshot/test_cases/test_style_hex3 b/tests/screenshot/test_cases/test_style_hex3 deleted file mode 100644 index 71164a40421..00000000000 --- a/tests/screenshot/test_cases/test_style_hex3 +++ /dev/null @@ -1,3 +0,0 @@ - - - \ No newline at end of file diff --git a/tests/screenshot/test_cases/test_style_hex4 b/tests/screenshot/test_cases/test_style_hex4 deleted file mode 100644 index 3f5033fba34..00000000000 --- a/tests/screenshot/test_cases/test_style_hex4 +++ /dev/null @@ -1,3 +0,0 @@ - - - \ No newline at end of file diff --git a/tests/screenshot/test_cases/test_style_hex5 b/tests/screenshot/test_cases/test_style_hex5 deleted file mode 100644 index 707b7a9ddde..00000000000 --- a/tests/screenshot/test_cases/test_style_hex5 +++ /dev/null @@ -1,3 +0,0 @@ - - - \ No newline at end of file diff --git a/tests/screenshot/test_cases/test_style_no_colour b/tests/screenshot/test_cases/test_style_no_colour deleted file mode 100644 index 21d5500d39e..00000000000 --- a/tests/screenshot/test_cases/test_style_no_colour +++ /dev/null @@ -1,3 +0,0 @@ - - - \ No newline at end of file diff --git a/tests/screenshot/test_cases/text_append b/tests/screenshot/test_cases/text_append deleted file mode 100644 index 99644abb54c..00000000000 --- a/tests/screenshot/test_cases/text_append +++ /dev/null @@ -1,3 +0,0 @@ - - - \ No newline at end of file diff --git a/tests/screenshot/test_cases/text_changeCase b/tests/screenshot/test_cases/text_changeCase deleted file mode 100644 index 0f3f4577e44..00000000000 --- a/tests/screenshot/test_cases/text_changeCase +++ /dev/null @@ -1,3 +0,0 @@ - - - \ No newline at end of file diff --git a/tests/screenshot/test_cases/text_charAt b/tests/screenshot/test_cases/text_charAt deleted file mode 100644 index dbe1deed6f6..00000000000 --- a/tests/screenshot/test_cases/text_charAt +++ /dev/null @@ -1,3 +0,0 @@ - - - \ No newline at end of file diff --git a/tests/screenshot/test_cases/text_count b/tests/screenshot/test_cases/text_count deleted file mode 100644 index 854422037cd..00000000000 --- a/tests/screenshot/test_cases/text_count +++ /dev/null @@ -1,3 +0,0 @@ - - - \ No newline at end of file diff --git a/tests/screenshot/test_cases/text_create_join_container b/tests/screenshot/test_cases/text_create_join_container deleted file mode 100644 index 4758b190916..00000000000 --- a/tests/screenshot/test_cases/text_create_join_container +++ /dev/null @@ -1,3 +0,0 @@ - - - \ No newline at end of file diff --git a/tests/screenshot/test_cases/text_create_join_item b/tests/screenshot/test_cases/text_create_join_item deleted file mode 100644 index 23d853e5f81..00000000000 --- a/tests/screenshot/test_cases/text_create_join_item +++ /dev/null @@ -1,3 +0,0 @@ - - - \ No newline at end of file diff --git a/tests/screenshot/test_cases/text_getSubstring b/tests/screenshot/test_cases/text_getSubstring deleted file mode 100644 index 20f7cff60fb..00000000000 --- a/tests/screenshot/test_cases/text_getSubstring +++ /dev/null @@ -1,3 +0,0 @@ - - - \ No newline at end of file diff --git a/tests/screenshot/test_cases/text_indexOf b/tests/screenshot/test_cases/text_indexOf deleted file mode 100644 index d41f4c1c04d..00000000000 --- a/tests/screenshot/test_cases/text_indexOf +++ /dev/null @@ -1,3 +0,0 @@ - - - \ No newline at end of file diff --git a/tests/screenshot/test_cases/text_isEmpty b/tests/screenshot/test_cases/text_isEmpty deleted file mode 100644 index 7b23edb2dd5..00000000000 --- a/tests/screenshot/test_cases/text_isEmpty +++ /dev/null @@ -1,3 +0,0 @@ - - - \ No newline at end of file diff --git a/tests/screenshot/test_cases/text_join b/tests/screenshot/test_cases/text_join deleted file mode 100644 index 46e7b47efc7..00000000000 --- a/tests/screenshot/test_cases/text_join +++ /dev/null @@ -1,3 +0,0 @@ - - - \ No newline at end of file diff --git a/tests/screenshot/test_cases/text_length b/tests/screenshot/test_cases/text_length deleted file mode 100644 index d178d3b5ea8..00000000000 --- a/tests/screenshot/test_cases/text_length +++ /dev/null @@ -1,3 +0,0 @@ - - - \ No newline at end of file diff --git a/tests/screenshot/test_cases/text_print b/tests/screenshot/test_cases/text_print deleted file mode 100644 index 6d3923dcdc9..00000000000 --- a/tests/screenshot/test_cases/text_print +++ /dev/null @@ -1,3 +0,0 @@ - - - \ No newline at end of file diff --git a/tests/screenshot/test_cases/text_prompt b/tests/screenshot/test_cases/text_prompt deleted file mode 100644 index 0ec801ef91e..00000000000 --- a/tests/screenshot/test_cases/text_prompt +++ /dev/null @@ -1,3 +0,0 @@ - - - \ No newline at end of file diff --git a/tests/screenshot/test_cases/text_prompt_ext b/tests/screenshot/test_cases/text_prompt_ext deleted file mode 100644 index dabe58a6ac3..00000000000 --- a/tests/screenshot/test_cases/text_prompt_ext +++ /dev/null @@ -1,3 +0,0 @@ - - - \ No newline at end of file diff --git a/tests/screenshot/test_cases/text_replace b/tests/screenshot/test_cases/text_replace deleted file mode 100644 index a34419208c2..00000000000 --- a/tests/screenshot/test_cases/text_replace +++ /dev/null @@ -1,3 +0,0 @@ - - - \ No newline at end of file diff --git a/tests/screenshot/test_cases/text_reverse b/tests/screenshot/test_cases/text_reverse deleted file mode 100644 index 61f53eb0033..00000000000 --- a/tests/screenshot/test_cases/text_reverse +++ /dev/null @@ -1,3 +0,0 @@ - - - \ No newline at end of file diff --git a/tests/screenshot/test_cases/text_trim b/tests/screenshot/test_cases/text_trim deleted file mode 100644 index b37f367051f..00000000000 --- a/tests/screenshot/test_cases/text_trim +++ /dev/null @@ -1,3 +0,0 @@ - - - \ No newline at end of file diff --git a/tests/screenshot/test_cases/variables_get b/tests/screenshot/test_cases/variables_get deleted file mode 100644 index 2599d1e934e..00000000000 --- a/tests/screenshot/test_cases/variables_get +++ /dev/null @@ -1,3 +0,0 @@ - - - \ No newline at end of file diff --git a/tests/screenshot/test_cases/variables_get_dynamic b/tests/screenshot/test_cases/variables_get_dynamic deleted file mode 100644 index 5a9a3982e8b..00000000000 --- a/tests/screenshot/test_cases/variables_get_dynamic +++ /dev/null @@ -1,3 +0,0 @@ - - - \ No newline at end of file diff --git a/tests/screenshot/test_cases/variables_set b/tests/screenshot/test_cases/variables_set deleted file mode 100644 index 23bcf4097e1..00000000000 --- a/tests/screenshot/test_cases/variables_set +++ /dev/null @@ -1,3 +0,0 @@ - - - \ No newline at end of file diff --git a/tests/screenshot/test_cases/variables_set_dynamic b/tests/screenshot/test_cases/variables_set_dynamic deleted file mode 100644 index 9d68c5f7fd8..00000000000 --- a/tests/screenshot/test_cases/variables_set_dynamic +++ /dev/null @@ -1,3 +0,0 @@ - - - \ No newline at end of file diff --git a/tests/scripts/check_metadata.sh b/tests/scripts/check_metadata.sh index 243b1f17d13..9cbeab6d0c7 100755 --- a/tests/scripts/check_metadata.sh +++ b/tests/scripts/check_metadata.sh @@ -4,14 +4,38 @@ # unreasonably. # These values should be updated with each release + # Size of blockly_compressed.js -blockly_size_expected=573000 # 813K in July 2019 release +# Q2 2019 2.20190722.0 812688 +# Q3 2019 3.20191014.0 538781 +# Q4 2019 3.20200123.0 609855 +# Q1 2020 3.20200402.0 619341 +# Q2 2020 3.20200625.0 621811 +blockly_size_expected=621811 + # Size of blocks_compressed.js -blocks_size_expected=76500 # 75K in July 2019 release +# Q2 2019 2.20190722.0 75618 +# Q3 2019 3.20191014.0 76455 +# Q4 2019 3.20200123.0 75629 +# Q1 2020 3.20200402.0 75805 +# Q2 2020 3.20200625.0 76360 +blocks_size_expected=76360 + # Size of blockly_compressed.js.gz -blockly_gz_size_expected=123000 # 180K in July 2019 release +# Q2 2019 2.20190722.0 180925 +# Q3 2019 3.20191014.0 119064 +# Q4 2019 3.20200123.0 131897 +# Q1 2020 3.20200402.0 134133 +# Q2 2020 3.20200625.0 135181 +blockly_gz_size_expected=135181 + # Size of blocks_compressed.js.gz -blocks_gz_size_expected=15200 # 14.5K in July 2019 release +# Q2 2019 2.20190722.0 14552 +# Q3 2019 3.20191014.0 15064 +# Q4 2019 3.20200123.0 14897 +# Q1 2020 3.20200402.0 14966 +# Q2 2020 3.20200625.0 15195 +blocks_gz_size_expected=15195 # ANSI colors BOLD_GREEN='\033[1;32m' diff --git a/tests/scripts/selenium-config.js b/tests/scripts/selenium-config.js index daf1a964d3c..13a0583f6d0 100644 --- a/tests/scripts/selenium-config.js +++ b/tests/scripts/selenium-config.js @@ -9,7 +9,7 @@ module.exports = { chrome: { // check for more recent versions of chrome driver here: // https://chromedriver.storage.googleapis.com/index.html - version: '83.0.4103.39', + version: '85.0.4183.83', arch: process.arch, baseURL: 'https://chromedriver.storage.googleapis.com' }, diff --git a/typings/blockly.d.ts b/typings/blockly.d.ts index 05b4dc55780..0b37bdb6009 100644 --- a/typings/blockly.d.ts +++ b/typings/blockly.d.ts @@ -52,6 +52,7 @@ declare module Blockly { }; renderer?: string; keyMap?: {[type: string]: Blockly.Action;}; + parentWorkspace?: Blockly.WorkspaceSvg; } interface BlocklyThemeOptions { @@ -105,13 +106,13 @@ declare module Blockly { * Class for one block. * Not normally called directly, workspace.newBlock() is preferred. * @param {!Blockly.Workspace} workspace The block's workspace. - * @param {?string} prototypeName Name of the language object containing + * @param {!string} prototypeName Name of the language object containing * type-specific functions for this block. * @param {string=} opt_id Optional ID. Use this ID if provided, otherwise * create a new ID. * @constructor * @implements {Blockly.IASTNodeLocation} - * @throws When block is not valid or block name is not allowed. + * @throws When the prototypeName is not valid or not allowed. */ constructor(workspace: Blockly.Workspace, prototypeName: string, opt_id?: string); @@ -133,8 +134,8 @@ declare module Blockly { /** @type {boolean|undefined} */ inputsInline: boolean|any /*undefined*/; - /** @type {string|!Function} */ - tooltip: string|Function; + /** @type {!Blockly.Tooltip.TipInfo} */ + tooltip: Blockly.Tooltip.TipInfo; /** @type {boolean} */ contextMenu: boolean; @@ -521,11 +522,18 @@ declare module Blockly { setHelpUrl(url: string|Function): void; /** - * Change the tooltip text for a block. - * @param {string|!Function} newTip Text for tooltip or a parent element to - * link to for its tooltip. May be a function that returns a string. + * Sets the tooltip for this block. + * @param {!Blockly.Tooltip.TipInfo} newTip The text for the tooltip, a function + * that returns the text for the tooltip, or a parent object whose tooltip + * will be used. To not display a tooltip pass the empty string. + */ + setTooltip(newTip: Blockly.Tooltip.TipInfo): void; + + /** + * Returns the tooltip text for this block. + * @returns {!string} The tooltip text for this block. */ - setTooltip(newTip: string|Function): void; + getTooltip(): string; /** * Get the colour of a block. @@ -607,18 +615,18 @@ declare module Blockly { renameVarById(oldId: string, newId: string): void; /** - * Returns the language-neutral value from the field of a block. + * Returns the language-neutral value of the given field. * @param {string} name The name of the field. - * @return {*} Value from the field or null if field does not exist. + * @return {*} Value of the field or null if field does not exist. */ getFieldValue(name: string): any; /** - * Change the field value for a block (e.g. 'CHOOSE' or 'REMOVE'). - * @param {string} newValue Value to be the new field. - * @param {string} name The name of the field. + * Sets the value of the given field for this block. + * @param {*} newValue The value to set. + * @param {!string} name The name of the field to set the value of. */ - setFieldValue(newValue: string, name: string): void; + setFieldValue(newValue: any, name: string): void; /** * Set whether this block can chain onto the bottom of another block. @@ -1094,11 +1102,12 @@ declare module Blockly.Events { /** * Abstract class for a block event. - * @param {Blockly.Block} block The block this event corresponds to. + * @param {!Blockly.Block=} opt_block The block this event corresponds to. + * Undefined for a blank event. * @extends {Blockly.Events.Abstract} * @constructor */ - constructor(block: Blockly.Block); + constructor(opt_block?: Blockly.Block); /** * The block id for the block this event pertains to @@ -1106,6 +1115,12 @@ declare module Blockly.Events { */ blockId: string; + /** + * The workspace identifier for this event. + * @type {string} + */ + workspaceId: string; + /** * Encode the event as JSON. * @return {!Object} JSON representation. @@ -1126,15 +1141,16 @@ declare module Blockly.Events { /** * Class for a block change event. - * @param {Blockly.Block} block The changed block. Null for a blank event. - * @param {string} element One of 'field', 'comment', 'disabled', etc. - * @param {?string} name Name of input or field affected, or null. - * @param {*} oldValue Previous value of element. - * @param {*} newValue New value of element. + * @param {!Blockly.Block=} opt_block The changed block. Undefined for a blank + * event. + * @param {string=} opt_element One of 'field', 'comment', 'disabled', etc. + * @param {?string=} opt_name Name of input or field affected, or null. + * @param {*=} opt_oldValue Previous value of element. + * @param {*=} opt_newValue New value of element. * @extends {Blockly.Events.BlockBase} * @constructor */ - constructor(block: Blockly.Block, element: string, name: string, oldValue: any, newValue: any); + constructor(opt_block?: Blockly.Block, opt_element?: string, opt_name?: string, opt_oldValue?: any, opt_newValue?: any); /** * Type of this event. @@ -1174,15 +1190,16 @@ declare module Blockly.Events { /** * Class for a block change event. - * @param {Blockly.Block} block The changed block. Null for a blank event. - * @param {string} element One of 'field', 'comment', 'disabled', etc. - * @param {?string} name Name of input or field affected, or null. - * @param {*} oldValue Previous value of element. - * @param {*} newValue New value of element. + * @param {!Blockly.Block=} opt_block The changed block. Undefined for a blank + * event. + * @param {string=} opt_element One of 'field', 'comment', 'disabled', etc. + * @param {?string=} opt_name Name of input or field affected, or null. + * @param {*=} opt_oldValue Previous value of element. + * @param {*=} opt_newValue New value of element. * @extends {Blockly.Events.BlockBase} * @constructor */ - constructor(block: Blockly.Block, element: string, name: string, oldValue: any, newValue: any); + constructor(opt_block?: Blockly.Block, opt_element?: string, opt_name?: string, opt_oldValue?: any, opt_newValue?: any); } @@ -1192,11 +1209,12 @@ declare module Blockly.Events { /** * Class for a block creation event. - * @param {Blockly.Block} block The created block. Null for a blank event. + * @param {!Blockly.Block=} opt_block The created block. Undefined for a blank + * event. * @extends {Blockly.Events.BlockBase} * @constructor */ - constructor(block: Blockly.Block); + constructor(opt_block?: Blockly.Block); /** * Type of this event. @@ -1230,11 +1248,12 @@ declare module Blockly.Events { /** * Class for a block creation event. - * @param {Blockly.Block} block The created block. Null for a blank event. + * @param {!Blockly.Block=} block The created block. Undefined for a blank + * event. * @extends {Blockly.Events.BlockBase} * @constructor */ - constructor(block: Blockly.Block); + constructor(block?: Blockly.Block); } @@ -1244,11 +1263,12 @@ declare module Blockly.Events { /** * Class for a block deletion event. - * @param {Blockly.Block} block The deleted block. Null for a blank event. + * @param {!Blockly.Block=} opt_block The deleted block. Undefined for a blank + * event. * @extends {Blockly.Events.BlockBase} * @constructor */ - constructor(block: Blockly.Block); + constructor(opt_block?: Blockly.Block); /** * Type of this event. @@ -1296,11 +1316,12 @@ declare module Blockly.Events { /** * Class for a block move event. Created before the move. - * @param {Blockly.Block} block The moved block. Null for a blank event. + * @param {!Blockly.Block=} opt_block The moved block. Undefined for a blank + * event. * @extends {Blockly.Events.BlockBase} * @constructor */ - constructor(block: Blockly.Block); + constructor(opt_block?: Blockly.Block); /** * Type of this event. @@ -1695,7 +1716,8 @@ declare module Blockly { /** * Encode a block for copying. - * @return {!Blockly.ICopyable.CopyData} Copy metadata. + * @return {?Blockly.ICopyable.CopyData} Copy metadata, or null if the block is + * an insertion marker. * @package */ toCopyData(): Blockly.ICopyable.CopyData; @@ -2205,7 +2227,7 @@ declare module Blockly { class Bubble extends Bubble__Class { } /** Fake class which should be extended to avoid inheriting static properties */ - class Bubble__Class { + class Bubble__Class implements Blockly.IBubble { /** * Class for UI bubble. @@ -2217,6 +2239,7 @@ declare module Blockly { * anchor point. * @param {?number} bubbleWidth Width of bubble, or null if not resizable. * @param {?number} bubbleHeight Height of bubble, or null if not resizable. + * @implements {Blockly.IBubble} * @constructor */ constructor(workspace: Blockly.WorkspaceSvg, content: Element, shape: Element, anchorXY: Blockly.utils.Coordinate, bubbleWidth: number, bubbleHeight: number); @@ -2231,7 +2254,7 @@ declare module Blockly { /** * Return the root node of the bubble's SVG group. - * @return {SVGElement} The root SVG node of the bubble's group. + * @return {!SVGElement} The root SVG node of the bubble's group. */ getSvgRoot(): SVGElement; @@ -2255,6 +2278,13 @@ declare module Blockly { */ isDeletable(): boolean; + /** + * Update the style of this bubble when it is dragged over a delete area. + * @param {boolean} _enable True if the bubble is about to be deleted, false + * otherwise. + */ + setDeleteStyle(_enable: boolean): void; + /** * Register a function as a callback event for when the bubble is resized. * @param {!Function} callback The function to call on resize. @@ -2391,12 +2421,11 @@ declare module Blockly { * Class for a bubble dragger. It moves things on the bubble canvas around the * workspace when they are being dragged by a mouse or touch. These can be * block comments, mutators, warnings, or workspace comments. - * @param {!Blockly.Bubble|!Blockly.WorkspaceCommentSvg} bubble The item on the - * bubble canvas to drag. + * @param {!Blockly.IBubble} bubble The item on the bubble canvas to drag. * @param {!Blockly.WorkspaceSvg} workspace The workspace to drag on. * @constructor */ - constructor(bubble: Blockly.Bubble|Blockly.WorkspaceCommentSvg, workspace: Blockly.WorkspaceSvg); + constructor(bubble: Blockly.IBubble, workspace: Blockly.WorkspaceSvg); /** * Sever all links from this object. @@ -2598,6 +2627,8 @@ declare module Blockly { * @param {Blockly.Connection} target Connection to check compatibility with. * @return {number} Blockly.Connection.CAN_CONNECT if the connection is legal, * an error code otherwise. + * @deprecated July 2020. Will be deleted July 2021. Use the workspace's + * connectionChecker instead. */ canConnectWithReason(target: Blockly.Connection): number; @@ -2607,13 +2638,25 @@ declare module Blockly { * @param {Blockly.Connection} target The connection to check compatibility * with. * @package + * @deprecated July 2020. Will be deleted July 2021. Use the workspace's + * connectionChecker instead. */ checkConnection(target: Blockly.Connection): void; + /** + * Get the workspace's connection type checker object. + * @return {!Blockly.IConnectionChecker} The connection type checker for the + * source block's workspace. + * @package + */ + getConnectionChecker(): Blockly.IConnectionChecker; + /** * Check if the two connections can be dragged to connect to each other. * @param {!Blockly.Connection} candidate A nearby connection to check. * @return {boolean} True if the connection is allowed, false otherwise. + * @deprecated July 2020. Will be deleted July 2021. Use the workspace's + * connectionChecker instead. */ isConnectionAllowed(candidate: Blockly.Connection): boolean; @@ -2661,6 +2704,8 @@ declare module Blockly { * value type system. E.g. square_root("Hello") is not compatible. * @param {!Blockly.Connection} otherConnection Connection to compare against. * @return {boolean} True if the connections share a type. + * @deprecated July 2020. Will be deleted July 2021. Use the workspace's + * connectionChecker instead. */ checkType(otherConnection: Blockly.Connection): boolean; @@ -2688,13 +2733,13 @@ declare module Blockly { getCheck(): any[]; /** - * Change a connection's shadow block. + * Changes the connection's shadow block. * @param {Element} shadow DOM representation of a block or null. */ setShadowDom(shadow: Element): void; /** - * Return a connection's shadow block. + * Returns the xml representation of the connection's shadow block. * @return {Element} Shadow DOM representation of a block or null. */ getShadowDom(): Element; @@ -2754,6 +2799,105 @@ declare module Blockly.Connection { } +declare module Blockly { + + class ConnectionChecker extends ConnectionChecker__Class { } + /** Fake class which should be extended to avoid inheriting static properties */ + class ConnectionChecker__Class implements Blockly.IConnectionChecker { + + /** + * Class for connection type checking logic. + * @implements {Blockly.IConnectionChecker} + * @constructor + */ + constructor(); + + /** + * Check whether the current connection can connect with the target + * connection. + * @param {Blockly.Connection} a Connection to check compatibility with. + * @param {Blockly.Connection} b Connection to check compatibility with. + * @param {boolean} isDragging True if the connection is being made by dragging + * a block. + * @param {number=} opt_distance The max allowable distance between the + * connections for drag checks. + * @return {boolean} Whether the connection is legal. + * @public + */ + canConnect(a: Blockly.Connection, b: Blockly.Connection, isDragging: boolean, opt_distance?: number): boolean; + + /** + * Checks whether the current connection can connect with the target + * connection, and return an error code if there are problems. + * @param {Blockly.Connection} a Connection to check compatibility with. + * @param {Blockly.Connection} b Connection to check compatibility with. + * @param {boolean} isDragging True if the connection is being made by dragging + * a block. + * @param {number=} opt_distance The max allowable distance between the + * connections for drag checks. + * @return {number} Blockly.Connection.CAN_CONNECT if the connection is legal, + * an error code otherwise. + * @public + */ + canConnectWithReason(a: Blockly.Connection, b: Blockly.Connection, isDragging: boolean, opt_distance?: number): number; + + /** + * Helper method that translates a connection error code into a string. + * @param {number} errorCode The error code. + * @param {Blockly.Connection} a One of the two connections being checked. + * @param {Blockly.Connection} b The second of the two connections being + * checked. + * @return {string} A developer-readable error string. + * @public + */ + getErrorMessage(errorCode: number, a: Blockly.Connection, b: Blockly.Connection): string; + + /** + * Check that connecting the given connections is safe, meaning that it would + * not break any of Blockly's basic assumptions (e.g. no self connections). + * @param {Blockly.Connection} a The first of the connections to check. + * @param {Blockly.Connection} b The second of the connections to check. + * @return {number} An enum with the reason this connection is safe or unsafe. + * @public + */ + doSafetyChecks(a: Blockly.Connection, b: Blockly.Connection): number; + + /** + * Check whether this connection is compatible with another connection with + * respect to the value type system. E.g. square_root("Hello") is not + * compatible. + * @param {!Blockly.Connection} a Connection to compare. + * @param {!Blockly.Connection} b Connection to compare against. + * @return {boolean} True if the connections share a type. + * @public + */ + doTypeChecks(a: Blockly.Connection, b: Blockly.Connection): boolean; + + /** + * Check whether this connection can be made by dragging. + * @param {!Blockly.RenderedConnection} a Connection to compare. + * @param {!Blockly.RenderedConnection} b Connection to compare against. + * @param {number} distance The maximum allowable distance between connections. + * @return {boolean} True if the connection is allowed during a drag. + * @public + */ + doDragChecks(a: Blockly.RenderedConnection, b: Blockly.RenderedConnection, distance: number): boolean; + + /** + * Helper function for drag checking. + * @param {!Blockly.Connection} a The connection to check, which must be a + * statement input or next connection. + * @param {!Blockly.Connection} b A nearby connection to check, which + * must be a previous connection. + * @return {boolean} True if the connection is allowed, false otherwise. + * @protected + */ + canConnectToPrevious_(a: Blockly.Connection, b: Blockly.Connection): boolean; + } + +} + + declare module Blockly { class ConnectionDB extends ConnectionDB__Class { } @@ -2764,9 +2908,12 @@ declare module Blockly { * Database of connections. * Connections are stored in order of their vertical component. This way * connections in an area may be looked up quickly using a binary search. + * @param {!Blockly.IConnectionChecker} checker The workspace's + * connection type checker, used to decide if connections are valid during a + * drag. * @constructor */ - constructor(); + constructor(checker: Blockly.IConnectionChecker); /** * Add a connection to the database. Should not already exist in the database. @@ -2816,9 +2963,11 @@ declare module Blockly.ConnectionDB { /** * Initialize a set of connection DBs for a workspace. + * @param {!Blockly.IConnectionChecker} checker The workspace's + * connection checker, used to decide if connections are valid during a drag. * @return {!Array.} Array of databases. */ - function init(): Blockly.ConnectionDB[]; + function init(checker: Blockly.IConnectionChecker): Blockly.ConnectionDB[]; } @@ -3115,39 +3264,6 @@ declare module Blockly.ContextMenu { */ function callbackFactory(block: Blockly.Block, xml: Element): Function; - /** - * Make a context menu option for deleting the current block. - * @param {!Blockly.BlockSvg} block The block where the right-click originated. - * @return {!Object} A menu option, containing text, enabled, and a callback. - * @package - */ - function blockDeleteOption(block: Blockly.BlockSvg): Object; - - /** - * Make a context menu option for showing help for the current block. - * @param {!Blockly.BlockSvg} block The block where the right-click originated. - * @return {!Object} A menu option, containing text, enabled, and a callback. - * @package - */ - function blockHelpOption(block: Blockly.BlockSvg): Object; - - /** - * Make a context menu option for duplicating the current block. - * @param {!Blockly.BlockSvg} block The block where the right-click originated. - * @return {!Object} A menu option, containing text, enabled, and a callback. - * @package - */ - function blockDuplicateOption(block: Blockly.BlockSvg): Object; - - /** - * Make a context menu option for adding or removing comments on the current - * block. - * @param {!Blockly.BlockSvg} block The block where the right-click originated. - * @return {!Object} A menu option, containing text, enabled, and a callback. - * @package - */ - function blockCommentOption(block: Blockly.BlockSvg): Object; - /** * Make a context menu option for deleting the current workspace comment. * @param {!Blockly.WorkspaceCommentSvg} comment The workspace comment where the @@ -3180,6 +3296,171 @@ declare module Blockly.ContextMenu { } +declare module Blockly.ContextMenuItems { + + /** Option to undo previous action. */ + function registerUndo(): void; + + /** Option to redo previous action. */ + function registerRedo(): void; + + /** Option to clean up blocks. */ + function registerCleanup(): void; + + /** Option to collapse all blocks. */ + function registerCollapse(): void; + + /** Option to expand all blocks. */ + function registerExpand(): void; + + /** Option to delete all blocks. */ + function registerDeleteAll(): void; + + /** Option to duplicate a block. */ + function registerDuplicate(): void; + + /** Option to add or remove block-level comment. */ + function registerComment(): void; + + /** Option to inline variables. */ + function registerInline(): void; + + /** Option to collapse or expand a block. */ + function registerCollapseExpandBlock(): void; + + /** Option to disable or enable a block. */ + function registerDisable(): void; + + /** Option to delete a block. */ + function registerDelete(): void; + + /** Option to open help for a block. */ + function registerHelp(): void; + + /** + * Registers all default context menu items. This should be called once per instance of + * ContextMenuRegistry. + * @package + */ + function registerDefaultOptions(): void; +} + + +declare module Blockly { + + class ContextMenuRegistry extends ContextMenuRegistry__Class { } + /** Fake class which should be extended to avoid inheriting static properties */ + class ContextMenuRegistry__Class { + + /** + * Class for the registry of context menu items. This is intended to be a singleton. You should + * not create a new instance, and only access this class from Blockly.ContextMenuRegistry.registry. + * @constructor + */ + constructor(); + + /** + * Registers a RegistryItem. + * @param {!Blockly.ContextMenuRegistry.RegistryItem} item Context menu item to register. + * @throws {Error} if an item with the given id already exists. + */ + register(item: Blockly.ContextMenuRegistry.RegistryItem): void; + + /** + * Unregisters a RegistryItem with the given id. + * @param {string} id The id of the RegistryItem to remove. + * @throws {Error} if an item with the given id does not exist. + */ + unregister(id: string): void; + + /** + * @param {string} id The id of the RegistryItem to get. + * @returns {?Blockly.ContextMenuRegistry.RegistryItem} RegistryItem or null if not found + */ + getItem(id: string): Blockly.ContextMenuRegistry.RegistryItem; + + /** + * Gets the valid context menu options for the given scope type (e.g. block or workspace) and scope. + * Blocks are only shown if the preconditionFn shows they should not be hidden. + * @param {!Blockly.ContextMenuRegistry.ScopeType} scopeType Type of scope where menu should be + * shown (e.g. on a block or on a workspace) + * @param {!Blockly.ContextMenuRegistry.Scope} scope Current scope of context menu + * (i.e., the exact workspace or block being clicked on) + * @returns {!Array.} the list of ContextMenuOptions + */ + getContextMenuOptions(scopeType: Blockly.ContextMenuRegistry.ScopeType, scope: Blockly.ContextMenuRegistry.Scope): Blockly.ContextMenuRegistry.ContextMenuOption[]; + } + +} + +declare module Blockly.ContextMenuRegistry { + + /** + * Where this menu item should be rendered. If the menu item should be rendered in multiple + * scopes, e.g. on both a block and a workspace, it should be registered for each scope. + * @enum {string} + */ + enum ScopeType { BLOCK, WORKSPACE } + + /** + * The actual workspace/block where the menu is being rendered. This is passed to callback and + * displayText functions that depend on this information. + * @typedef {{ + * block: (Blockly.BlockSvg|undefined), + * workspace: (Blockly.WorkspaceSvg|undefined) + * }} + */ + interface Scope { + block: Blockly.BlockSvg|any /*undefined*/; + workspace: Blockly.WorkspaceSvg|any /*undefined*/ + } + + /** + * A menu item as entered in the registry. + * @typedef {{ + * callback: function(!Blockly.ContextMenuRegistry.Scope), + * scopeType: !Blockly.ContextMenuRegistry.ScopeType, + * displayText: ((function(!Blockly.ContextMenuRegistry.Scope):string)|string), + * preconditionFn: function(!Blockly.ContextMenuRegistry.Scope):string, + * weight: number, + * id: string + * }} + */ + interface RegistryItem { + callback: { (_0: Blockly.ContextMenuRegistry.Scope): any /*missing*/ }; + scopeType: Blockly.ContextMenuRegistry.ScopeType; + displayText: { (_0: Blockly.ContextMenuRegistry.Scope): string }|string; + preconditionFn: { (_0: Blockly.ContextMenuRegistry.Scope): string }; + weight: number; + id: string + } + + /** + * A menu item as presented to contextmenu.js. + * @typedef {{ + * text: string, + * enabled: boolean, + * callback: function(!Blockly.ContextMenuRegistry.Scope), + * scope: !Blockly.ContextMenuRegistry.Scope, + * weight: number + * }} + */ + interface ContextMenuOption { + text: string; + enabled: boolean; + callback: { (_0: Blockly.ContextMenuRegistry.Scope): any /*missing*/ }; + scope: Blockly.ContextMenuRegistry.Scope; + weight: number + } + + /** + * Singleton instance of this class. All interactions with this class should be done on this object. + * @type {?Blockly.ContextMenuRegistry} + */ + var registry: Blockly.ContextMenuRegistry; +} + + declare module Blockly.Css { /** @@ -3202,14 +3483,6 @@ declare module Blockly.Css { */ function inject(hasCss: boolean, pathToMedia: string): void; - /** - * Set the cursor to be displayed when over something draggable. - * See https://github.com/google/blockly/issues/981 for context. - * @param {*} _cursor Enum. - * @deprecated April 2017. - */ - function setCursor(_cursor: any): void; - /** * Array making up the CSS content for Blockly. */ @@ -3632,6 +3905,7 @@ declare module Blockly.Events { * @param {!Object} json JSON representation. * @param {!Blockly.Workspace} workspace Target workspace for event. * @return {!Blockly.Events.Abstract} The event represented by the JSON. + * @throws {Error} if an event type is not found in the registry. */ function fromJson(json: Object, workspace: Blockly.Workspace): Blockly.Events.Abstract; @@ -3658,6 +3932,12 @@ declare module Blockly.Events { */ constructor(); + /** + * Whether or not the event is blank (to be populated by fromJson). + * @type {?boolean} + */ + isBlank: boolean; + /** * The workspace identifier for this event. * @type {string|undefined} @@ -4315,11 +4595,19 @@ declare module Blockly { onMouseDown_(e: Event): void; /** - * Change the tooltip text for this field. - * @param {string|Function|!SVGElement} newTip Text for tooltip or a parent - * element to link to for its tooltip. + * Sets the tooltip for this field. + * @param {?Blockly.Tooltip.TipInfo} newTip The + * text for the tooltip, a function that returns the text for the tooltip, a + * parent object whose tooltip will be used, or null to display the tooltip + * of the parent block. To not display a tooltip pass the empty string. + */ + setTooltip(newTip: Blockly.Tooltip.TipInfo): void; + + /** + * Returns the tooltip text for this field. + * @returns {string} The tooltip text for this field. */ - setTooltip(newTip: string|Function|SVGElement): void; + getTooltip(): string; /** * The element to bind the click handler to. If not set explicitly, defaults @@ -5271,6 +5559,24 @@ declare module Blockly { */ textGroup_: SVGGElement; + /** + * Serializes this field's value to XML. Should only be called by Blockly.Xml. + * @param {!Element} fieldElement The element to populate with info about the + * field's state. + * @return {!Element} The element containing info about the field's state. + * @package + */ + toXml(fieldElement: Element): Element; + + /** + * Sets the field's value based on the given XML element. Should only be + * called by Blockly.Xml. + * @param {!Element} fieldElement The element containing info about the + * field's state. + * @package + */ + fromXml(fieldElement: Element): void; + /** * Create the block UI for this field. * @package @@ -5459,14 +5765,13 @@ declare module Blockly.fieldRegistry { * Blockly.fieldRegistry.fromJson uses this registry to * find the appropriate field type. * @param {string} type The field type name as used in the JSON definition. - * @param {?function(new:Blockly.Field, ...?)} fieldClass The field class - * containing a fromJson function that can construct an instance of the - * field. + * @param {!Blockly.IRegistrableField} fieldClass The field class containing a + * fromJson function that can construct an instance of the field. * @throws {Error} if the type name is empty, the field is already * registered, or the fieldClass is not an object containing a fromJson * function. */ - function register(type: string, fieldClass: { (_0: any[]): any /*missing*/ }): void; + function register(type: string, fieldClass: Blockly.IRegistrableField): void; /** * Unregisters the field registered with the given type. @@ -5895,7 +6200,7 @@ declare module Blockly { class Flyout extends Flyout__Class { } /** Fake class which should be extended to avoid inheriting static properties */ - class Flyout__Class implements Blockly.IBlocklyActionable, Blockly.IDeleteArea { + class Flyout__Class implements Blockly.IBlocklyActionable, Blockly.IDeleteArea, Blockly.IFlyout { /** * Class for a flyout. @@ -5905,6 +6210,7 @@ declare module Blockly { * @abstract * @implements {Blockly.IBlocklyActionable} * @implements {Blockly.IDeleteArea} + * @implements {Blockly.IFlyout} */ constructor(workspaceOptions: Blockly.Options); @@ -6033,11 +6339,13 @@ declare module Blockly { * Creates the flyout's DOM. Only needs to be called once. The flyout can * either exist as its own svg element or be a g element nested inside a * separate svg element. - * @param {string} tagName The type of tag to put the flyout in. This - * should be or . + * @param {string| + * !Blockly.utils.Svg| + * !Blockly.utils.Svg} tagName The type of tag to + * put the flyout in. This should be or . * @return {!SVGElement} The flyout's SVG group. */ - createDom(tagName: string): SVGElement; + createDom(tagName: string|Blockly.utils.Svg|Blockly.utils.Svg): SVGElement; /** * Initializes the flyout. @@ -6114,12 +6422,11 @@ declare module Blockly { /** * Show and populate the flyout. - * @param {!Blockly.utils.toolbox.ToolboxDefinition|string} flyoutDef - * List of contents to display in the flyout as an array of xml an - * array of Nodes, a NodeList or a string with the name of the dynamic category. - * Variables and procedures have a custom set of blocks. + * @param {!Blockly.utils.toolbox.FlyoutDefinition|string} flyoutDef Contents to display + * in the flyout. This is either an array of Nodes, a NodeList, a + * toolbox definition, or a string with the name of the dynamic category. */ - show(flyoutDef: Blockly.utils.toolbox.ToolboxDefinition|string): void; + show(flyoutDef: Blockly.utils.toolbox.FlyoutDefinition|string): void; /** * Add listeners to a block that has been added to the flyout. @@ -6284,13 +6591,19 @@ declare module Blockly { * @param {!Blockly.WorkspaceSvg} workspace The workspace in which to place this * button. * @param {!Blockly.WorkspaceSvg} targetWorkspace The flyout's target workspace. - * @param {!Blockly.utils.toolbox.Button|!Blockly.utils.toolbox.Label} json + * @param {!Blockly.utils.toolbox.ButtonOrLabelInfo} json * The JSON specifying the label/button. * @param {boolean} isLabel Whether this button should be styled as a label. * @constructor * @package */ - constructor(workspace: Blockly.WorkspaceSvg, targetWorkspace: Blockly.WorkspaceSvg, json: Blockly.utils.toolbox.Button|Blockly.utils.toolbox.Label, isLabel: boolean); + constructor(workspace: Blockly.WorkspaceSvg, targetWorkspace: Blockly.WorkspaceSvg, json: Blockly.utils.toolbox.ButtonOrLabelInfo, isLabel: boolean); + + /** + * The JSON specifying the label / button. + * @type {!Blockly.utils.toolbox.ButtonOrLabelInfo} + */ + info: Blockly.utils.toolbox.ButtonOrLabelInfo; /** * The width of the button's rect. @@ -6322,6 +6635,11 @@ declare module Blockly { */ moveTo(x: number, y: number): void; + /** + * @return {boolean} Whether or not the button is a label. + */ + isLabel(): boolean; + /** * Location of the button. * @return {!Blockly.utils.Coordinate} x, y coordinates. @@ -6329,6 +6647,11 @@ declare module Blockly { */ getPosition(): Blockly.utils.Coordinate; + /** + * @return {string} Text of the button. + */ + getButtonText(): string; + /** * Get the button's target workspace. * @return {!Blockly.WorkspaceSvg} The target workspace of the flyout where this @@ -6370,11 +6693,11 @@ declare module Blockly { * Note that the workspace itself manages whether or not it has a drag surface * and how to do translations based on that. This simply passes the right * commands based on events. - * @param {!Blockly.Flyout} flyout The flyout to drag. + * @param {!Blockly.IFlyout} flyout The flyout to drag. * @extends {Blockly.WorkspaceDragger} * @constructor */ - constructor(flyout: Blockly.Flyout); + constructor(flyout: Blockly.IFlyout); /** * Move the flyout based on the most recent mouse movements. @@ -6579,6 +6902,15 @@ declare module Blockly { } +declare module Blockly.VerticalFlyout { + + /** + * The name of the vertical flyout in the registry. + * @type {string} + */ + var registryName: string; +} + declare module Blockly { @@ -6938,10 +7270,10 @@ declare module Blockly { /** * Handle a mousedown/touchstart event on a flyout. * @param {!Event} e A mouse down or touch start event. - * @param {!Blockly.Flyout} flyout The flyout the event hit. + * @param {!Blockly.IFlyout} flyout The flyout the event hit. * @package */ - handleFlyoutStart(e: Event, flyout: Blockly.Flyout): void; + handleFlyoutStart(e: Event, flyout: Blockly.IFlyout): void; /** * Handle a mousedown/touchstart event on a block. @@ -6954,10 +7286,10 @@ declare module Blockly { /** * Handle a mousedown/touchstart event on a bubble. * @param {!Event} e A mouse down or touch start event. - * @param {!Blockly.Bubble} bubble The bubble the event hit. + * @param {!Blockly.IBubble} bubble The bubble the event hit. * @package */ - handleBubbleStart(e: Event, bubble: Blockly.Bubble): void; + handleBubbleStart(e: Event, bubble: Blockly.IBubble): void; /** * Record the field that a gesture started on. @@ -6968,10 +7300,10 @@ declare module Blockly { /** * Record the bubble that a gesture started on - * @param {Blockly.Bubble} bubble The bubble the gesture started on. + * @param {Blockly.IBubble} bubble The bubble the gesture started on. * @package */ - setStartBubble(bubble: Blockly.Bubble): void; + setStartBubble(bubble: Blockly.IBubble): void; /** * Record the block that a gesture started on, and set the target block @@ -7121,6 +7453,12 @@ declare module Blockly { */ block_: Blockly.BlockSvg; + /** + * The icon SVG group. + * @type {?SVGGElement} + */ + iconGroup_: SVGGElement; + /** * Does this icon get hidden when the block is collapsed. */ @@ -7211,6 +7549,12 @@ declare module Blockly { * @protected */ drawIcon_(group: Element): void; + + /** + * Show or hide the icon. + * @param {boolean} visible True if the icon should be visible. + */ + setVisible(visible: boolean): void; } } @@ -7338,6 +7682,19 @@ declare module Blockly { */ setAlign(align: number): Blockly.Input; + /** + * Changes the connection's shadow block. + * @param {Element} shadow DOM representation of a block or null. + * @return {Blockly.Input} The input being modified (to allow chaining). + */ + setShadowDom(shadow: Element): Blockly.Input; + + /** + * Returns the xml representation of the connection's shadow block. + * @return {Element} Shadow DOM representation of a block or null. + */ + getShadowDom(): Element; + /** * Initialize the fields on this input. */ @@ -7928,8 +8285,8 @@ declare module Blockly { /** @type {boolean} */ hasCategories: boolean; - /** @type {!Object} */ - moveOptions: Object; + /** @type {!Blockly.Options.MoveOptions} */ + moveOptions: Blockly.Options.MoveOptions; /** @deprecated January 2019 */ hasScrollbars: any /*missing*/; @@ -7949,17 +8306,17 @@ declare module Blockly { /** @type {boolean} */ horizontalLayout: boolean; - /** @type {Array.} */ - languageTree: Blockly.utils.toolbox.Toolbox[]; + /** @type {?Blockly.utils.toolbox.ToolboxInfo} */ + languageTree: Blockly.utils.toolbox.ToolboxInfo; - /** @type {!Object} */ - gridOptions: Object; + /** @type {!Blockly.Options.GridOptions} */ + gridOptions: Blockly.Options.GridOptions; - /** @type {!Object} */ - zoomOptions: Object; + /** @type {!Blockly.Options.ZoomOptions} */ + zoomOptions: Blockly.Options.ZoomOptions; - /** @type {number} */ - toolboxPosition: number; + /** @type {!Blockly.utils.toolbox.Position} */ + toolboxPosition: Blockly.utils.toolbox.Position; /** @type {!Blockly.Theme} */ theme: Blockly.Theme; @@ -7976,16 +8333,17 @@ declare module Blockly { /** * The SVG element for the grid pattern. * Created during injection. - * @type {SVGElement} + * @type {?SVGElement} */ gridPattern: SVGElement; /** * The parent of the current workspace, or null if there is no parent - * workspace. - * @type {Blockly.Workspace} + * workspace. We can assert that this is of type WorkspaceSvg as opposed to + * Workspace as this is only used in a rendered workspace. + * @type {Blockly.WorkspaceSvg} */ - parentWorkspace: Blockly.Workspace; + parentWorkspace: Blockly.WorkspaceSvg; /** * Map of plugin type to name of registered plugin or plugin class. @@ -8016,12 +8374,56 @@ declare module Blockly { declare module Blockly.Options { /** - * Parse the provided toolbox tree into a consistent DOM format. - * @param {Node|NodeList|?string} tree DOM tree of blocks, or text representation - * of same. - * @return {Node} DOM tree of blocks, or null. + * Grid Options. + * @typedef {{ + * colour: string, + * length: number, + * snap: boolean, + * spacing: number + * }} + */ + interface GridOptions { + colour: string; + length: number; + snap: boolean; + spacing: number + } + + /** + * Move Options. + * @typedef {{ + * drag: boolean, + * scrollbars: boolean, + * wheel: boolean + * }} + */ + interface MoveOptions { + drag: boolean; + scrollbars: boolean; + wheel: boolean + } + + /** + * Zoom Options. + * @typedef {{ + * controls: boolean, + * maxScale: number, + * minScale: number, + * pinch: boolean, + * scaleSpeed: number, + * startScale: number, + * wheel: boolean + * }} */ - function parseToolboxTree(tree: Node|NodeList|string): Node; + interface ZoomOptions { + controls: boolean; + maxScale: number; + minScale: number; + pinch: boolean; + scaleSpeed: number; + startScale: number; + wheel: boolean + } } @@ -8165,20 +8567,22 @@ declare module Blockly.registry { /** * Registers a class based on a type and name. - * @param {string|Blockly.registry.Type} type The type of the plugin. + * @param {string|!Blockly.registry.Type} type The type of the plugin. * (e.g. Field, Renderer) * @param {string} name The plugin's name. (Ex. field_angle, geras) * @param {?function(new:T, ...?)|Object} registryItem The class or object to * register. + * @param {boolean=} opt_quiet True to prevent an error when overriding an + * already registered item. * @throws {Error} if the type or name is empty, a name with the given type has * already been registered, or if the given class or object is not valid for it's type. * @template T */ - function register(type: string|Blockly.registry.Type, name: string, registryItem: { (_0: any[]): any /*missing*/ }|Object): void; + function register(type: string|Blockly.registry.Type, name: string, registryItem: { (_0: any[]): any /*missing*/ }|Object, opt_quiet?: boolean): void; /** * Unregisters the registry item with the given type and name. - * @param {string|Blockly.registry.Type} type The type of the plugin. + * @param {string|!Blockly.registry.Type} type The type of the plugin. * (e.g. Field, Renderer) * @param {string} name The plugin's name. (Ex. field_angle, geras) * @template T @@ -8187,8 +8591,8 @@ declare module Blockly.registry { /** * Gets the registry item for the given name and type. This can be either a - * class or an object.l - * @param {string|Blockly.registry.Type} type The type of the plugin. + * class or an object. + * @param {string|!Blockly.registry.Type} type The type of the plugin. * (e.g. Field, Renderer) * @param {string} name The plugin's name. (Ex. field_angle, geras) * @return {?function(new:T, ...?)|Object} The class or object with the given @@ -8197,9 +8601,21 @@ declare module Blockly.registry { */ function getItem_(type: string|Blockly.registry.Type, name: string): { (_0: any[]): any /*missing*/ }|Object; + /** + * Returns whether or not the registry contains an item with the given type and + * name. + * @param {string|!Blockly.registry.Type} type The type of the plugin. + * (e.g. Field, Renderer) + * @param {string} name The plugin's name. (Ex. field_angle, geras) + * @return {boolean} True if the registry has an item with the given type and + * name, false otherwise. + * @template T + */ + function hasItem(type: string|Blockly.registry.Type, name: string): boolean; + /** * Gets the class for the given name and type. - * @param {string|Blockly.registry.Type} type The type of the plugin. + * @param {string|!Blockly.registry.Type} type The type of the plugin. * (e.g. Field, Renderer) * @param {string} name The plugin's name. (Ex. field_angle, geras) * @return {?function(new:T, ...?)} The class with the given name and type or @@ -8210,7 +8626,7 @@ declare module Blockly.registry { /** * Gets the object for the given name and type. - * @param {string|Blockly.registry.Type} type The type of the plugin. + * @param {string|!Blockly.registry.Type} type The type of the plugin. * (e.g. Category) * @param {string} name The plugin's name. (Ex. logic_category) * @returns {T} The object with the given name and type or null if none exists. @@ -8221,7 +8637,7 @@ declare module Blockly.registry { /** * Gets the class from Blockly options for the given type. * This is used for plugins that override a built in feature. (e.g. Toolbox) - * @param {Blockly.registry.Type} type The type of the plugin. + * @param {!Blockly.registry.Type} type The type of the plugin. * @param {!Blockly.Options} options The option object to check for the given * plugin. * @return {?function(new:T, ...?)} The class for the plugin. @@ -8232,17 +8648,32 @@ declare module Blockly.registry { declare module Blockly.registry.Type { - /** @type {!Blockly.registry.Type} */ - var RENDERER: Blockly.registry.Type; + /** @type {!Blockly.registry.Type} */ + var CONNECTION_CHECKER: Blockly.registry.Type; + + /** @type {!Blockly.registry.Type} */ + var EVENT: Blockly.registry.Type; /** @type {!Blockly.registry.Type} */ var FIELD: Blockly.registry.Type; + /** @type {!Blockly.registry.Type} */ + var RENDERER: Blockly.registry.Type; + /** @type {!Blockly.registry.Type} */ var TOOLBOX: Blockly.registry.Type; /** @type {!Blockly.registry.Type} */ var THEME: Blockly.registry.Type; + + /** @type {!Blockly.registry.Type} */ + var TOOLBOX_ITEM: Blockly.registry.Type; + + /** @type {!Blockly.registry.Type} */ + var FLYOUTS_VERTICAL_TOOLBOX: Blockly.registry.Type; + + /** @type {!Blockly.registry.Type} */ + var FLYOUTS_HORIZONTAL_TOOLBOX: Blockly.registry.Type; } @@ -8379,6 +8810,7 @@ declare module Blockly { * @param {number=} maxRadius The maximum radius allowed for connections, in * workspace units. * @return {boolean} True if the connection is allowed, false otherwise. + * @deprecated July 2020 */ isConnectionAllowed(candidate: Blockly.Connection, maxRadius?: number): boolean; @@ -8924,180 +9356,17 @@ declare module Blockly.ThemeManager { } -declare module Blockly { - - class Toolbox extends Toolbox__Class { } - /** Fake class which should be extended to avoid inheriting static properties */ - class Toolbox__Class implements Blockly.IBlocklyActionable, Blockly.IDeleteArea, Blockly.IStyleable, Blockly.IToolbox { - - /** - * Class for a Toolbox. - * Creates the toolbox's DOM. - * @param {!Blockly.WorkspaceSvg} workspace The workspace in which to create new - * blocks. - * @constructor - * @implements {Blockly.IBlocklyActionable} - * @implements {Blockly.IDeleteArea} - * @implements {Blockly.IStyleable} - * @implements {Blockly.IToolbox} - */ - constructor(workspace: Blockly.WorkspaceSvg); - - /** - * Is RTL vs LTR. - * @type {boolean} - */ - RTL: boolean; - - /** - * Position of the toolbox and flyout relative to the workspace. - * @type {number} - */ - toolboxPosition: number; - - /** - * Width of the toolbox, which changes only in vertical layout. - * @type {number} - */ - width: number; - - /** - * Height of the toolbox, which changes only in horizontal layout. - * @type {number} - */ - height: number; - - /** - * Initializes the toolbox. - * @throws {Error} If missing a require for both `Blockly.HorizontalFlyout` and - * `Blockly.VerticalFlyout`. - */ - init(): void; - - /** - * HTML container for the Toolbox menu. - * @type {Element} - */ - HtmlDiv: Element; - - /** - * Fill the toolbox with categories and blocks. - * @param {Array.} toolboxDef Array holding objects - * containing information on the contents of the toolbox. - * @package - */ - render(toolboxDef: Blockly.utils.toolbox.Toolbox[]): void; - - /** - * Handles the given Blockly action on a toolbox. - * This is only triggered when keyboard accessibility mode is enabled. - * @param {!Blockly.Action} action The action to be handled. - * @return {boolean} True if the field handled the action, false otherwise. - * @package - */ - onBlocklyAction(action: Blockly.Action): boolean; - - /** - * Dispose of this toolbox. - */ - dispose(): void; - - /** - * Toggles the visibility of the toolbox. - * @param {boolean} isVisible True if toolbox should be visible. - */ - setVisible(isVisible: boolean): void; - - /** - * Get the width of the toolbox. - * @return {number} The width of the toolbox. - */ - getWidth(): number; - - /** - * Get the height of the toolbox. - * @return {number} The width of the toolbox. - */ - getHeight(): number; - - /** - * Get the toolbox flyout. - * @return {Blockly.Flyout} The toolbox flyout. - */ - getFlyout(): Blockly.Flyout; - - /** - * Move the toolbox to the edge. - */ - position(): void; - - /** - * Updates the category colours and background colour of selected categories. - * @package - */ - refreshTheme(): void; - - /** - * Unhighlight any previously specified option. - */ - clearSelection(): void; - - /** - * Adds a style on the toolbox. Usually used to change the cursor. - * @param {string} style The name of the class to add. - * @package - */ - addStyle(style: string): void; - - /** - * Removes a style from the toolbox. Usually used to change the cursor. - * @param {string} style The name of the class to remove. - * @package - */ - removeStyle(style: string): void; - - /** - * Return the deletion rectangle for this toolbox. - * @return {Blockly.utils.Rect} Rectangle in which to delete. - */ - getClientRect(): Blockly.utils.Rect; - - /** - * Update the flyout's contents without closing it. Should be used in response - * to a change in one of the dynamic categories, such as variables or - * procedures. - */ - refreshSelection(): void; - - /** - * Select the first toolbox category if no category is selected. - * @package - */ - selectFirstCategory(): void; - } - -} - -declare module Blockly.Toolbox { - - class TreeSeparator extends TreeSeparator__Class { } - /** Fake class which should be extended to avoid inheriting static properties */ - class TreeSeparator__Class extends Blockly.tree.TreeNode__Class { - - /** - * A blank separator node in the tree. - * @param {!Blockly.tree.BaseNode.Config} config The configuration for the tree. - * @constructor - * @extends {Blockly.tree.TreeNode} - */ - constructor(config: Blockly.tree.BaseNode.Config); - } - -} - - declare module Blockly.Tooltip { + /** + * A type which can define a tooltip. + * Either a string, an object containing a tooltip property, or a function which + * returns either a string, or another arbitrarily nested function which + * eventually unwinds to a string. + * @typedef {string|{tooltip}|function(): (string|!Function)} + */ + type TipInfo = string|{ tooltip: any /*missing*/ }|{ (): string|Function }; + /** * Is a tooltip currently showing? */ @@ -9139,6 +9408,13 @@ declare module Blockly.Tooltip { */ var DIV: Element; + /** + * Returns the tooltip text for the given element. + * @param {?Object} object The object to get the the tooltip text of. + * @returns {string} The tooltip text of the element. + */ + function getTooltipOfObject(object: Object): string; + /** * Create the tooltip div and inject it onto the page. */ @@ -9428,16 +9704,16 @@ declare module Blockly { /** * The trashcan flyout. - * @type {Blockly.Flyout} + * @type {Blockly.IFlyout} * @package */ - flyout: Blockly.Flyout; + flyout: Blockly.IFlyout; /** * Current open/close state of the lid. * @type {boolean} */ - isOpen: boolean; + isLidOpen: boolean; /** * Create the trash can elements. @@ -9467,6 +9743,16 @@ declare module Blockly { */ contentsIsOpen(): boolean; + /** + * Opens the trashcan flyout. + */ + openFlyout(): void; + + /** + * Closes the trashcan flyout. + */ + closeFlyout(): void; + /** * Empties the trashcan's contents. If the contents-flyout is currently open * it will be closed. @@ -9491,13 +9777,13 @@ declare module Blockly { * @param {boolean} state True if open. * @package */ - setOpen(state: boolean): void; + setLidOpen(state: boolean): void; /** * Flip the lid shut. * Called externally after a drag. */ - close(): void; + closeLid(): void; /** * Inspect the contents of the trash. @@ -9520,14 +9806,16 @@ declare module Blockly.Events { * editing to work (e.g. scrolling the workspace, zooming, opening toolbox * categories). * UI events do not undo or redo. - * @param {Blockly.Block} block The affected block. - * @param {string} element One of 'selected', 'comment', 'mutatorOpen', etc. - * @param {*} oldValue Previous value of element. - * @param {*} newValue New value of element. + * @param {?Blockly.Block=} opt_block The affected block. Null for UI events + * that do not have an associated block. Undefined for a blank event. + * @param {string=} opt_element One of 'selected', 'comment', 'mutatorOpen', + * etc. + * @param {*=} opt_oldValue Previous value of element. + * @param {*=} opt_newValue New value of element. * @extends {Blockly.Events.Abstract} * @constructor */ - constructor(block: Blockly.Block, element: string, oldValue: any, newValue: any); + constructor(opt_block?: Blockly.Block, opt_element?: string, opt_oldValue?: any, opt_newValue?: any); /** * Type of this event. @@ -9729,12 +10017,12 @@ declare module Blockly.Events { /** * Abstract class for a variable event. - * @param {Blockly.VariableModel} variable The variable this event corresponds - * to. + * @param {!Blockly.VariableModel=} opt_variable The variable this event + * corresponds to. Undefined for a blank event. * @extends {Blockly.Events.Abstract} * @constructor */ - constructor(variable: Blockly.VariableModel); + constructor(opt_variable?: Blockly.VariableModel); /** * The variable id for the variable this event pertains to. @@ -9742,6 +10030,12 @@ declare module Blockly.Events { */ varId: string; + /** + * The workspace identifier for this event. + * @type {string} + */ + workspaceId: string; + /** * Encode the event as JSON. * @return {!Object} JSON representation. @@ -9762,12 +10056,12 @@ declare module Blockly.Events { /** * Class for a variable creation event. - * @param {Blockly.VariableModel} variable The created variable. - * Null for a blank event. + * @param {!Blockly.VariableModel=} opt_variable The created variable. Undefined + * for a blank event. * @extends {Blockly.Events.VarBase} * @constructor */ - constructor(variable: Blockly.VariableModel); + constructor(opt_variable?: Blockly.VariableModel); /** * Type of this event. @@ -9801,12 +10095,12 @@ declare module Blockly.Events { /** * Class for a variable deletion event. - * @param {Blockly.VariableModel} variable The deleted variable. - * Null for a blank event. + * @param {!Blockly.VariableModel=} opt_variable The deleted variable. Undefined + * for a blank event. * @extends {Blockly.Events.VarBase} * @constructor */ - constructor(variable: Blockly.VariableModel); + constructor(opt_variable?: Blockly.VariableModel); /** * Type of this event. @@ -9840,13 +10134,13 @@ declare module Blockly.Events { /** * Class for a variable rename event. - * @param {Blockly.VariableModel} variable The renamed variable. - * Null for a blank event. - * @param {string} newName The new name the variable will be changed to. + * @param {!Blockly.VariableModel=} opt_variable The renamed variable. Undefined + * for a blank event. + * @param {string=} newName The new name the variable will be changed to. * @extends {Blockly.Events.VarBase} * @constructor */ - constructor(variable: Blockly.VariableModel, newName: string); + constructor(opt_variable?: Blockly.VariableModel, newName?: string); /** * Type of this event. @@ -10101,16 +10395,6 @@ declare module Blockly.Variables { */ function allUsedVarModels(ws: Blockly.Workspace): Blockly.VariableModel[]; - /** - * Find all user-created variables that are in use in the workspace and return - * only their names. - * For use by generators. - * To get a list of all variables on a workspace, including unused variables, - * call Workspace.getAllVariables. - * @deprecated January 2018 - */ - function allUsedVariables(): void; - /** * Find all developer variables used by blocks in the workspace. * Developer variables are never shown to the user, but are declared as global @@ -10455,6 +10739,12 @@ declare module Blockly { /** @type {number} */ toolboxPosition: number; + /** + * An object that encapsulates logic for safety, type, and dragging checks. + * @type {!Blockly.IConnectionChecker} + */ + connectionChecker: Blockly.IConnectionChecker; + /** * @type {!Array.} * @protected @@ -10612,16 +10902,6 @@ declare module Blockly { */ deleteVariableById(id: string): void; - /** - * Check whether a variable exists with the given name. The check is - * case-insensitive. - * @param {string} _name The name to check for. - * @return {number} The index of the name in the variable list, or -1 if it is - * not present. - * @deprecated April 2017 - */ - variableIndexOf(_name: string): number; - /** * Find the variable by the given name and return it. Return null if it is not * found. @@ -10678,7 +10958,7 @@ declare module Blockly { /** * Obtain a newly created block. - * @param {?string} prototypeName Name of the language object containing + * @param {!string} prototypeName Name of the language object containing * type-specific functions for this block. * @param {string=} opt_id Optional ID. Use this ID if provided, otherwise * create a new ID. @@ -10720,6 +11000,20 @@ declare module Blockly { */ hasBlockLimits(): boolean; + /** + * Gets the undo stack for workplace. + * @return {!Array.} undo stack + * @package + */ + getUndoStack(): Blockly.Events.Abstract[]; + + /** + * Gets the redo stack for workplace. + * @return {!Array.} redo stack + * @package + */ + getRedoStack(): Blockly.Events.Abstract[]; + /** * Undo or redo the previous action. * @param {boolean} redo False if undo, true if redo. @@ -11106,7 +11400,7 @@ declare module Blockly { class WorkspaceCommentSvg extends WorkspaceCommentSvg__Class { } /** Fake class which should be extended to avoid inheriting static properties */ - class WorkspaceCommentSvg__Class extends Blockly.WorkspaceComment__Class implements Blockly.IBoundedElement, Blockly.ICopyable { + class WorkspaceCommentSvg__Class extends Blockly.WorkspaceComment__Class implements Blockly.IBoundedElement, Blockly.IBubble, Blockly.ICopyable { /** * Class for a workspace comment's SVG representation. @@ -11118,6 +11412,7 @@ declare module Blockly { * create a new ID. * @extends {Blockly.WorkspaceComment} * @implements {Blockly.IBoundedElement} + * @implements {Blockly.IBubble} * @implements {Blockly.ICopyable} * @constructor */ @@ -11272,7 +11567,7 @@ declare module Blockly { /** * Return the root node of the SVG or null if none exists. - * @return {SVGElement} The root SVG node (probably a group). + * @return {!SVGElement} The root SVG node (probably a group). * @package */ getSvgRoot(): SVGElement; @@ -11299,6 +11594,16 @@ declare module Blockly { */ setDeleteStyle(enable: boolean): void; + /** + * Set whether auto-layout of this bubble is enabled. The first time a bubble + * is shown it positions itself to not cover any blocks. Once a user has + * dragged it to reposition, it renders where the user put it. + * @param {boolean} _enable True if auto-layout should be enabled, false + * otherwise. + * @package + */ + setAutoLayout(_enable: boolean): void; + /** * Encode a comment subtree as XML with XY coordinates. * @param {boolean=} opt_noId True if the encoder should skip the comment ID. @@ -11479,19 +11784,25 @@ declare module Blockly.Events { class FinishedLoading extends FinishedLoading__Class { } /** Fake class which should be extended to avoid inheriting static properties */ - class FinishedLoading__Class extends Blockly.Events.Abstract__Class { + class FinishedLoading__Class extends Blockly.Events.Ui__Class { /** * Class for a finished loading event. * Used to notify the developer when the workspace has finished loading (i.e * domToWorkspace). * Finished loading events do not record undo or redo. - * @param {!Blockly.Workspace} workspace The workspace that has finished - * loading. - * @extends {Blockly.Events.Abstract} + * @param {!Blockly.Workspace=} opt_workspace The workspace that has finished + * loading. Undefined for a blank event. + * @extends {Blockly.Events.Ui} * @constructor */ - constructor(workspace: Blockly.Workspace); + constructor(opt_workspace?: Blockly.Workspace); + + /** + * Whether or not the event is blank (to be populated by fromJson). + * @type {boolean} + */ + isBlank: boolean; /** * The workspace identifier for this event. @@ -11882,21 +12193,24 @@ declare module Blockly { /** * Add a flyout element in an element with the given tag name. - * @param {string} tagName What type of tag the flyout belongs in. + * @param {string| + * !Blockly.utils.Svg| + * !Blockly.utils.Svg} tagName What type of tag the + * flyout belongs in. * @return {!Element} The element containing the flyout DOM. * @package */ - addFlyout(tagName: string): Element; + addFlyout(tagName: string|Blockly.utils.Svg|Blockly.utils.Svg): Element; /** * Getter for the flyout associated with this workspace. This flyout may be * owned by either the toolbox or the workspace, depending on toolbox * configuration. It will be null if there is no flyout. * @param {boolean=} opt_own Only return the workspace's own flyout if True. - * @return {Blockly.Flyout} The flyout on this workspace. + * @return {Blockly.IFlyout} The flyout on this workspace. * @package */ - getFlyout(opt_own?: boolean): Blockly.Flyout; + getFlyout(opt_own?: boolean): Blockly.IFlyout; /** * Getter for the toolbox associated with this workspace, if one exists. @@ -11949,6 +12263,13 @@ declare module Blockly { */ getParentSvg(): SVGElement; + /** + * Fires a viewport event if events are enabled and there is a change in + * viewport values. + * @package + */ + maybeFireViewportChangeEvent(): void; + /** * Translate this workspace to new coordinates. * @param {number} x Horizontal translation, in pixel units relative to the @@ -12000,14 +12321,6 @@ declare module Blockly { */ render(): void; - /** - * Was used back when block highlighting (for execution) and block selection - * (for editing) were the same thing. - * Any calls of this function can be deleted. - * @deprecated October 2016 - */ - traceOn(): void; - /** * Highlight or unhighlight a block in the workspace. Block highlighting is * often used to visually mark blocks currently being executed. @@ -12021,9 +12334,10 @@ declare module Blockly { /** * Paste the provided block onto the workspace. - * @param {!Element} xmlBlock XML block element. + * @param {!Element|!DocumentFragment} xmlBlock XML block element or an empty + * DocumentFragment if the block was an insertion marker. */ - paste(xmlBlock: Element): void; + paste(xmlBlock: Element|DocumentFragment): void; /** * Refresh the toolbox unless there's a drag in progress. @@ -12142,11 +12456,11 @@ declare module Blockly { /** * Modify the block tree on the existing toolbox. - * @param {Blockly.utils.toolbox.ToolboxDefinition|string} toolboxDef - * DOM tree of toolbox contents, string of toolbox contents, or array of JSON - * representing toolbox contents. + * @param {?Blockly.utils.toolbox.ToolboxDefinition} toolboxDef + * DOM tree of toolbox contents, string of toolbox contents, or JSON + * representing toolbox definition. */ - updateToolbox(toolboxDef: Blockly.utils.toolbox.ToolboxDefinition|string): void; + updateToolbox(toolboxDef: Blockly.utils.toolbox.ToolboxDefinition): void; /** * Mark this workspace as the currently focused main workspace. @@ -12383,12 +12697,18 @@ declare module Blockly.Events { /** * Abstract class for a comment event. - * @param {Blockly.WorkspaceComment} comment The comment this event corresponds - * to. + * @param {!Blockly.WorkspaceComment=} opt_comment The comment this event + * corresponds to. Undefined for a blank event. * @extends {Blockly.Events.Abstract} * @constructor */ - constructor(comment: Blockly.WorkspaceComment); + constructor(opt_comment?: Blockly.WorkspaceComment); + + /** + * Whether or not an event is blank. + * @type {boolean} + */ + isBlank: boolean; /** * The ID of the comment this event pertains to. @@ -12436,14 +12756,14 @@ declare module Blockly.Events { /** * Class for a comment change event. - * @param {Blockly.WorkspaceComment} comment The comment that is being changed. - * Null for a blank event. - * @param {string} oldContents Previous contents of the comment. - * @param {string} newContents New contents of the comment. + * @param {!Blockly.WorkspaceComment=} opt_comment The comment that is being + * changed. Undefined for a blank event. + * @param {string=} opt_oldContents Previous contents of the comment. + * @param {string=} opt_newContents New contents of the comment. * @extends {Blockly.Events.CommentBase} * @constructor */ - constructor(comment: Blockly.WorkspaceComment, oldContents: string, newContents: string); + constructor(opt_comment?: Blockly.WorkspaceComment, opt_oldContents?: string, opt_newContents?: string); /** * Type of this event. @@ -12483,12 +12803,12 @@ declare module Blockly.Events { /** * Class for a comment creation event. - * @param {Blockly.WorkspaceComment} comment The created comment. - * Null for a blank event. + * @param {!Blockly.WorkspaceComment=} opt_comment The created comment. + * Undefined for a blank event. * @extends {Blockly.Events.CommentBase} * @constructor */ - constructor(comment: Blockly.WorkspaceComment); + constructor(opt_comment?: Blockly.WorkspaceComment); /** * Type of this event. @@ -12522,12 +12842,12 @@ declare module Blockly.Events { /** * Class for a comment deletion event. - * @param {Blockly.WorkspaceComment} comment The deleted comment. - * Null for a blank event. + * @param {!Blockly.WorkspaceComment=} opt_comment The deleted comment. + * Undefined for a blank event. * @extends {Blockly.Events.CommentBase} * @constructor */ - constructor(comment: Blockly.WorkspaceComment); + constructor(opt_comment?: Blockly.WorkspaceComment); /** * Type of this event. @@ -12561,12 +12881,12 @@ declare module Blockly.Events { /** * Class for a comment move event. Created before the move. - * @param {Blockly.WorkspaceComment} comment The comment that is being moved. - * Null for a blank event. + * @param {!Blockly.WorkspaceComment=} opt_comment The comment that is being + * moved. Undefined for a blank event. * @extends {Blockly.Events.CommentBase} * @constructor */ - constructor(comment: Blockly.WorkspaceComment); + constructor(opt_comment?: Blockly.WorkspaceComment); /** * The comment that is being moved. Will be cleared after recording the new @@ -12665,17 +12985,19 @@ declare module Blockly.Xml { * Encode a block subtree as XML with XY coordinates. * @param {!Blockly.Block} block The root block to encode. * @param {boolean=} opt_noId True if the encoder should skip the block ID. - * @return {!Element} Tree of XML elements. + * @return {!Element|!DocumentFragment} Tree of XML elements or an empty document + * fragment if the block was an insertion marker. */ - function blockToDomWithXY(block: Blockly.Block, opt_noId?: boolean): Element; + function blockToDomWithXY(block: Blockly.Block, opt_noId?: boolean): Element|DocumentFragment; /** * Encode a block subtree as XML. * @param {!Blockly.Block} block The root block to encode. * @param {boolean=} opt_noId True if the encoder should skip the block ID. - * @return {!Element} Tree of XML elements. + * @return {!Element|!DocumentFragment} Tree of XML elements or an empty document + * fragment if the block was an insertion marker. */ - function blockToDom(block: Blockly.Block, opt_noId?: boolean): Element; + function blockToDom(block: Blockly.Block, opt_noId?: boolean): Element|DocumentFragment; /** * Converts a DOM structure into plain text. @@ -12749,9 +13071,10 @@ declare module Blockly.Xml { /** * Remove any 'next' block (statements in a stack). - * @param {!Element} xmlBlock XML block element. + * @param {!Element|!DocumentFragment} xmlBlock XML block element or an empty + * DocumentFragment if the block was an insertion marker. */ - function deleteNext(xmlBlock: Element): void; + function deleteNext(xmlBlock: Element|DocumentFragment): void; } @@ -13071,280 +13394,21 @@ declare module Blockly.Component { declare module Blockly { - interface IASTNodeLocation { - } - - interface IASTNodeLocationSvg extends Blockly.IASTNodeLocation { + class Action extends Action__Class { } + /** Fake class which should be extended to avoid inheriting static properties */ + class Action__Class { - /** - * Add the marker svg to this node's svg group. - * @param {SVGElement} markerSvg The svg root of the marker to be added to the - * svg group. - */ - setMarkerSvg(markerSvg: SVGElement): void; + /** + * Class for a single action. + * An action describes user intent. (ex go to next or go to previous) + * @param {string} name The name of the action. + * @param {string} desc The description of the action. + * @constructor + */ + constructor(name: string, desc: string); + } - /** - * Add the cursor svg to this node's svg group. - * @param {SVGElement} cursorSvg The svg root of the cursor to be added to the - * svg group. - */ - setCursorSvg(cursorSvg: SVGElement): void; - } - - interface IASTNodeLocationWithBlock extends Blockly.IASTNodeLocation { - - /** - * Get the source block associated with this node. - * @return {Blockly.Block} The source block. - */ - getSourceBlock(): Blockly.Block; - } - - interface IBlocklyActionable { - - /** - * Handles the given action. - * @param {!Blockly.Action} action The action to be handled. - * @return {boolean} True if the action has been handled, false otherwise. - */ - onBlocklyAction(action: Blockly.Action): boolean; - } -} - - -declare module Blockly { - - interface IBoundedElement { - - /** - * Returns the coordinates of a bounded element describing the dimensions of the - * element. - * Coordinate system: workspace coordinates. - * @return {!Blockly.utils.Rect} Object with coordinates of the bounded element. - */ - getBoundingRectangle(): Blockly.utils.Rect; - } -} - - -declare module Blockly { - - interface ICopyable extends Blockly.ISelectable { - - /** - * Encode for copying. - * @return {!Blockly.ICopyable.CopyData} Copy metadata. - */ - toCopyData(): Blockly.ICopyable.CopyData; - } -} - -declare module Blockly.ICopyable { - - /** - * Copy Metadata. - * @typedef {{ - * xml:!Element, - * source:Blockly.WorkspaceSvg, - * typeCounts:?Object - * }} - */ - interface CopyData { - xml: Element; - source: Blockly.WorkspaceSvg; - typeCounts: Object - } -} - - -declare module Blockly { - - interface IDeletable { - - /** - * Get whether this object is deletable or not. - * @return {boolean} True if deletable. - */ - isDeletable(): boolean; - } -} - - -declare module Blockly { - - interface IDeleteArea { - - /** - * Return the deletion rectangle. - * @return {Blockly.utils.Rect} Rectangle in which to delete. - */ - getClientRect(): Blockly.utils.Rect; - } -} - - -declare module Blockly { - - interface IMovable { - - /** - * Get whether this is movable or not. - * @return {boolean} True if movable. - */ - isMovable(): boolean; - } -} - - -declare module Blockly { - - interface IRegistrable { - } -} - - -declare module Blockly { - - interface ISelectable extends Blockly.IDeletable, Blockly.IMovable { - - /** - * @type {string} - */ - id: string; - - /** - * Select this. Highlight it visually. - * @return {void} - */ - select(): void; - - /** - * Unselect this. Unhighlight it visually. - * @return {void} - */ - unselect(): void; - } -} - - -declare module Blockly { - - interface IStyleable { - - /** - * Adds a style on the toolbox. Usually used to change the cursor. - * @param {string} style The name of the class to add. - */ - addStyle(style: string): void; - - /** - * Removes a style from the toolbox. Usually used to change the cursor. - * @param {string} style The name of the class to remove. - */ - removeStyle(style: string): void; - } -} - - -declare module Blockly { - - interface IToolbox extends Blockly.IRegistrable { - - /** - * Initializes the toolbox. - * @return {void} - */ - init(): void; - - /** - * Fill the toolbox with categories and blocks. - * @param {Array.} toolboxDef Array holding objects - * containing information on the contents of the toolbox. - */ - render(toolboxDef: Blockly.utils.toolbox.Toolbox[]): void; - - /** - * Dispose of this toolbox. - * @return {void} - */ - dispose(): void; - - /** - * Get the width of the toolbox. - * @return {number} The width of the toolbox. - */ - getWidth(): number; - - /** - * Get the height of the toolbox. - * @return {number} The width of the toolbox. - */ - getHeight(): number; - - /** - * Get the toolbox flyout. - * @return {Blockly.Flyout} The toolbox flyout. - */ - getFlyout(): Blockly.Flyout; - - /** - * Move the toolbox to the edge. - * @return {void} - */ - position(): void; - - /** - * Unhighlight any previously specified option. - * @return {void} - */ - clearSelection(): void; - - /** - * Updates the category colours and background colour of selected categories. - * @return {void} - */ - refreshTheme(): void; - - /** - * Update the flyout's contents without closing it. Should be used in response - * to a change in one of the dynamic categories, such as variables or - * procedures. - * @return {void} - */ - refreshSelection(): void; - - /** - * Toggles the visibility of the toolbox. - * @param {boolean} isVisible True if the toolbox should be visible. - */ - setVisible(isVisible: boolean): void; - - /** - * Select the first toolbox category if no category is selected. - * @return {void} - */ - selectFirstCategory(): void; - } -} - - -declare module Blockly { - - class Action extends Action__Class { } - /** Fake class which should be extended to avoid inheriting static properties */ - class Action__Class { - - /** - * Class for a single action. - * An action describes user intent. (ex go to next or go to previous) - * @param {string} name The name of the action. - * @param {string} desc The description of the action. - * @constructor - */ - constructor(name: string, desc: string); - } - -} +} declare module Blockly { @@ -14037,4521 +14101,6094 @@ declare module Blockly { } +declare module Blockly { + interface IASTNodeLocation { + } + interface IASTNodeLocationSvg extends Blockly.IASTNodeLocation { + + /** + * Add the marker svg to this node's svg group. + * @param {SVGElement} markerSvg The svg root of the marker to be added to the + * svg group. + */ + setMarkerSvg(markerSvg: SVGElement): void; + + /** + * Add the cursor svg to this node's svg group. + * @param {SVGElement} cursorSvg The svg root of the cursor to be added to the + * svg group. + */ + setCursorSvg(cursorSvg: SVGElement): void; + } + interface IASTNodeLocationWithBlock extends Blockly.IASTNodeLocation { + + /** + * Get the source block associated with this node. + * @return {Blockly.Block} The source block. + */ + getSourceBlock(): Blockly.Block; + } - - - -declare module Blockly.utils.aria { - - /** - * ARIA role values. - * Copied from Closure's goog.a11y.aria.Role - * @enum {string} - */ - enum Role { GRID, GRIDCELL, GROUP, LISTBOX, MENU, MENUITEM, MENUITEMCHECKBOX, OPTION, PRESENTATION, ROW, TREE, TREEITEM } - - /** - * ARIA states and properties. - * Copied from Closure's goog.a11y.aria.State - * @enum {string} - */ - enum State { ACTIVEDESCENDANT, COLCOUNT, DISABLED, EXPANDED, INVALID, LABEL, LABELLEDBY, LEVEL, ORIENTATION, POSINSET, ROWCOUNT, SELECTED, SETSIZE, VALUEMAX, VALUEMIN } - - /** - * Sets the role of an element. - * - * Similar to Closure's goog.a11y.aria - * - * @param {!Element} element DOM node to set role of. - * @param {!Blockly.utils.aria.Role} roleName Role name. - */ - function setRole(element: Element, roleName: Blockly.utils.aria.Role): void; - - /** - * Sets the state or property of an element. - * Copied from Closure's goog.a11y.aria - * @param {!Element} element DOM node where we set state. - * @param {!Blockly.utils.aria.State} stateName State attribute being set. - * Automatically adds prefix 'aria-' to the state name if the attribute is - * not an extra attribute. - * @param {string|boolean|number|!Array.} value Value - * for the state attribute. - */ - function setState(element: Element, stateName: Blockly.utils.aria.State, value: string|boolean|number|string[]): void; + interface IBlocklyActionable { + + /** + * Handles the given action. + * @param {!Blockly.Action} action The action to be handled. + * @return {boolean} True if the action has been handled, false otherwise. + */ + onBlocklyAction(action: Blockly.Action): boolean; + } } -declare module Blockly.utils.colour { - - /** - * Parses a colour from a string. - * .parse('red') -> '#ff0000' - * .parse('#f00') -> '#ff0000' - * .parse('#ff0000') -> '#ff0000' - * .parse('0xff0000') -> '#ff0000' - * .parse('rgb(255, 0, 0)') -> '#ff0000' - * @param {string|number} str Colour in some CSS format. - * @return {?string} A string containing a hex representation of the colour, - * or null if can't be parsed. - */ - function parse(str: string|number): string; - - /** - * Converts a colour from RGB to hex representation. - * @param {number} r Amount of red, int between 0 and 255. - * @param {number} g Amount of green, int between 0 and 255. - * @param {number} b Amount of blue, int between 0 and 255. - * @return {string} Hex representation of the colour. - */ - function rgbToHex(r: number, g: number, b: number): string; +declare module Blockly { - /** - * Converts a colour to RGB. - * @param {string} colour String representing colour in any - * colour format ('#ff0000', 'red', '0xff000', etc). - * @return {!Array.} RGB representation of the colour. - */ - function hexToRgb(colour: string): number[]; + interface IBoundedElement { + + /** + * Returns the coordinates of a bounded element describing the dimensions of the + * element. + * Coordinate system: workspace coordinates. + * @return {!Blockly.utils.Rect} Object with coordinates of the bounded element. + */ + getBoundingRectangle(): Blockly.utils.Rect; + } +} - /** - * Converts an HSV triplet to hex representation. - * @param {number} h Hue value in [0, 360]. - * @param {number} s Saturation value in [0, 1]. - * @param {number} v Brightness in [0, 255]. - * @return {string} Hex representation of the colour. - */ - function hsvToHex(h: number, s: number, v: number): string; - /** - * Blend two colours together, using the specified factor to indicate the - * weight given to the first colour. - * @param {string} colour1 First colour. - * @param {string} colour2 Second colour. - * @param {number} factor The weight to be given to colour1 over colour2. - * Values should be in the range [0, 1]. - * @return {?string} Combined colour represented in hex. - */ - function blend(colour1: string, colour2: string, factor: number): string; +declare module Blockly { - /** - * A map that contains the 16 basic colour keywords as defined by W3C: - * https://www.w3.org/TR/2018/REC-css-color-3-20180619/#html4 - * The keys of this map are the lowercase "readable" names of the colours, - * while the values are the "hex" values. - * - * @type {!Object} - */ - var names: { [key: string]: string }; + interface IBubble extends Blockly.IDeletable, Blockly.IContextMenu { + + /** + * Return the coordinates of the top-left corner of this bubble's body relative + * to the drawing surface's origin (0,0), in workspace units. + * @return {!Blockly.utils.Coordinate} Object with .x and .y properties. + */ + getRelativeToSurfaceXY(): Blockly.utils.Coordinate; + + /** + * Return the root node of the bubble's SVG group. + * @return {!SVGElement} The root SVG node of the bubble's group. + */ + getSvgRoot(): SVGElement; + + /** + * Set whether auto-layout of this bubble is enabled. The first time a bubble + * is shown it positions itself to not cover any blocks. Once a user has + * dragged it to reposition, it renders where the user put it. + * @param {boolean} enable True if auto-layout should be enabled, false + * otherwise. + */ + setAutoLayout(enable: boolean): void; + + /** + * Triggers a move callback if one exists at the end of a drag. + * @param {boolean} adding True if adding, false if removing. + */ + setDragging(adding: boolean): void; + + /** + * Move this bubble during a drag, taking into account whether or not there is + * a drag surface. + * @param {Blockly.BlockDragSurfaceSvg} dragSurface The surface that carries + * rendered items during a drag, or null if no drag surface is in use. + * @param {!Blockly.utils.Coordinate} newLoc The location to translate to, in + * workspace coordinates. + */ + moveDuringDrag(dragSurface: Blockly.BlockDragSurfaceSvg, newLoc: Blockly.utils.Coordinate): void; + + /** + * Move the bubble to the specified location in workspace coordinates. + * @param {number} x The x position to move to. + * @param {number} y The y position to move to. + */ + moveTo(x: number, y: number): void; + + /** + * Update the style of this bubble when it is dragged over a delete area. + * @param {boolean} enable True if the bubble is about to be deleted, false + * otherwise. + */ + setDeleteStyle(enable: boolean): void; + + /** + * Dispose of this bubble. + */ + dispose: any /*missing*/; + } } -declare module Blockly.utils { +declare module Blockly { - class Coordinate extends Coordinate__Class { } - /** Fake class which should be extended to avoid inheriting static properties */ - class Coordinate__Class { + interface IConnectionChecker { - /** - * Class for representing coordinates and positions. - * @param {number} x Left. - * @param {number} y Top. - * @struct - * @constructor - */ - constructor(x: number, y: number); + /** + * Check whether the current connection can connect with the target + * connection. + * @param {Blockly.Connection} a Connection to check compatibility with. + * @param {Blockly.Connection} b Connection to check compatibility with. + * @param {boolean} isDragging True if the connection is being made by dragging + * a block. + * @param {number=} opt_distance The max allowable distance between the + * connections for drag checks. + * @return {boolean} Whether the connection is legal. + * @public + */ + canConnect(a: Blockly.Connection, b: Blockly.Connection, isDragging: boolean, opt_distance?: number): boolean; - /** - * X-value - * @type {number} - */ - x: number; + /** + * Checks whether the current connection can connect with the target + * connection, and return an error code if there are problems. + * @param {Blockly.Connection} a Connection to check compatibility with. + * @param {Blockly.Connection} b Connection to check compatibility with. + * @param {boolean} isDragging True if the connection is being made by dragging + * a block. + * @param {number=} opt_distance The max allowable distance between the + * connections for drag checks. + * @return {number} Blockly.Connection.CAN_CONNECT if the connection is legal, + * an error code otherwise. + * @public + */ + canConnectWithReason(a: Blockly.Connection, b: Blockly.Connection, isDragging: boolean, opt_distance?: number): number; - /** - * Y-value - * @type {number} - */ - y: number; + /** + * Helper method that translates a connection error code into a string. + * @param {number} errorCode The error code. + * @param {Blockly.Connection} a One of the two connections being checked. + * @param {Blockly.Connection} b The second of the two connections being + * checked. + * @return {string} A developer-readable error string. + * @public + */ + getErrorMessage(errorCode: number, a: Blockly.Connection, b: Blockly.Connection): string; - /** - * Scales this coordinate by the given scale factor. - * @param {number} s The scale factor to use for both x and y dimensions. - * @return {!Blockly.utils.Coordinate} This coordinate after scaling. - */ - scale(s: number): Blockly.utils.Coordinate; + /** + * Check that connecting the given connections is safe, meaning that it would + * not break any of Blockly's basic assumptions (e.g. no self connections). + * @param {Blockly.Connection} a The first of the connections to check. + * @param {Blockly.Connection} b The second of the connections to check. + * @return {number} An enum with the reason this connection is safe or unsafe. + * @public + */ + doSafetyChecks(a: Blockly.Connection, b: Blockly.Connection): number; - /** - * Translates this coordinate by the given offsets. - * respectively. - * @param {number} tx The value to translate x by. - * @param {number} ty The value to translate y by. - * @return {!Blockly.utils.Coordinate} This coordinate after translating. - */ - translate(tx: number, ty: number): Blockly.utils.Coordinate; - } + /** + * Check whether this connection is compatible with another connection with + * respect to the value type system. E.g. square_root("Hello") is not + * compatible. + * @param {!Blockly.Connection} a Connection to compare. + * @param {!Blockly.Connection} b Connection to compare against. + * @return {boolean} True if the connections share a type. + * @public + */ + doTypeChecks(a: Blockly.Connection, b: Blockly.Connection): boolean; + /** + * Check whether this connection can be made by dragging. + * @param {!Blockly.RenderedConnection} a Connection to compare. + * @param {!Blockly.RenderedConnection} b Connection to compare against. + * @param {number} distance The maximum allowable distance between connections. + * @return {boolean} True if the connection is allowed during a drag. + * @public + */ + doDragChecks(a: Blockly.RenderedConnection, b: Blockly.RenderedConnection, distance: number): boolean; + } } -declare module Blockly.utils.Coordinate { - /** - * Compares coordinates for equality. - * @param {Blockly.utils.Coordinate} a A Coordinate. - * @param {Blockly.utils.Coordinate} b A Coordinate. - * @return {boolean} True iff the coordinates are equal, or if both are null. - */ - function equals(a: Blockly.utils.Coordinate, b: Blockly.utils.Coordinate): boolean; +declare module Blockly { - /** - * Returns the distance between two coordinates. - * @param {!Blockly.utils.Coordinate} a A Coordinate. - * @param {!Blockly.utils.Coordinate} b A Coordinate. - * @return {number} The distance between `a` and `b`. - */ - function distance(a: Blockly.utils.Coordinate, b: Blockly.utils.Coordinate): number; + interface IContextMenu { + + /** + * Show the context menu for this object. + * @param {!Event} e Mouse event. + */ + showContextMenu(e: Event): void; + } +} - /** - * Returns the magnitude of a coordinate. - * @param {!Blockly.utils.Coordinate} a A Coordinate. - * @return {number} The distance between the origin and `a`. - */ - function magnitude(a: Blockly.utils.Coordinate): number; - /** - * Returns the difference between two coordinates as a new - * Blockly.utils.Coordinate. - * @param {!Blockly.utils.Coordinate|!SVGPoint} a An x/y coordinate. - * @param {!Blockly.utils.Coordinate|!SVGPoint} b An x/y coordinate. - * @return {!Blockly.utils.Coordinate} A Coordinate representing the difference - * between `a` and `b`. - */ - function difference(a: Blockly.utils.Coordinate|SVGPoint, b: Blockly.utils.Coordinate|SVGPoint): Blockly.utils.Coordinate; +declare module Blockly { - /** - * Returns the sum of two coordinates as a new Blockly.utils.Coordinate. - * @param {!Blockly.utils.Coordinate|!SVGPoint} a An x/y coordinate. - * @param {!Blockly.utils.Coordinate|!SVGPoint} b An x/y coordinate. - * @return {!Blockly.utils.Coordinate} A Coordinate representing the sum of - * the two coordinates. - */ - function sum(a: Blockly.utils.Coordinate|SVGPoint, b: Blockly.utils.Coordinate|SVGPoint): Blockly.utils.Coordinate; + interface ICopyable extends Blockly.ISelectable { + + /** + * Encode for copying. + * @return {?Blockly.ICopyable.CopyData} Copy metadata. + */ + toCopyData(): Blockly.ICopyable.CopyData; + } } - -declare module Blockly.utils.dom { +declare module Blockly.ICopyable { /** - * Required name space for SVG elements. - * @const - */ - var SVG_NS: any /*missing*/; - - /** - * Required name space for HTML elements. - * @const + * Copy Metadata. + * @typedef {{ + * xml:!Element, + * source:Blockly.WorkspaceSvg, + * typeCounts:?Object + * }} */ - var HTML_NS: any /*missing*/; + interface CopyData { + xml: Element; + source: Blockly.WorkspaceSvg; + typeCounts: Object + } +} - /** - * Required name space for XLINK elements. - * @const - */ - var XLINK_NS: any /*missing*/; - /** - * Node type constants. - * https://developer.mozilla.org/en-US/docs/Web/API/Node/nodeType - * @enum {number} - */ - enum NodeType { ELEMENT_NODE, TEXT_NODE, COMMENT_NODE, DOCUMENT_POSITION_CONTAINED_BY } +declare module Blockly { - /** - * Helper method for creating SVG elements. - * @param {string} name Element's tag name. - * @param {!Object} attrs Dictionary of attribute names and values. - * @param {Element=} opt_parent Optional parent on which to append the element. - * @return {!SVGElement} Newly created SVG element. - */ - function createSvgElement(name: string, attrs: Object, opt_parent?: Element): SVGElement; + interface IDeletable { + + /** + * Get whether this object is deletable or not. + * @return {boolean} True if deletable. + */ + isDeletable(): boolean; + } +} - /** - * Add a CSS class to a element. - * Similar to Closure's goog.dom.classes.add, except it handles SVG elements. - * @param {!Element} element DOM element to add class to. - * @param {string} className Name of class to add. - * @return {boolean} True if class was added, false if already present. - */ - function addClass(element: Element, className: string): boolean; - /** - * Remove a CSS class from a element. - * Similar to Closure's goog.dom.classes.remove, except it handles SVG elements. - * @param {!Element} element DOM element to remove class from. - * @param {string} className Name of class to remove. - * @return {boolean} True if class was removed, false if never present. - */ - function removeClass(element: Element, className: string): boolean; +declare module Blockly { - /** - * Checks if an element has the specified CSS class. - * Similar to Closure's goog.dom.classes.has, except it handles SVG elements. - * @param {!Element} element DOM element to check. - * @param {string} className Name of class to check. - * @return {boolean} True if class exists, false otherwise. - */ - function hasClass(element: Element, className: string): boolean; + interface IDeleteArea { + + /** + * Return the deletion rectangle. + * @return {Blockly.utils.Rect} Rectangle in which to delete. + */ + getClientRect(): Blockly.utils.Rect; + } +} - /** - * Removes a node from its parent. No-op if not attached to a parent. - * @param {Node} node The node to remove. - * @return {Node} The node removed if removed; else, null. - */ - function removeNode(node: Node): Node; - /** - * Insert a node after a reference node. - * Contrast with node.insertBefore function. - * @param {!Element} newNode New element to insert. - * @param {!Element} refNode Existing element to precede new node. - */ - function insertAfter(newNode: Element, refNode: Element): void; +declare module Blockly { - /** - * Whether a node contains another node. - * @param {!Node} parent The node that should contain the other node. - * @param {!Node} descendant The node to test presence of. - * @return {boolean} Whether the parent node contains the descendant node. - */ - function containsNode(parent: Node, descendant: Node): boolean; + interface IFlyout extends Blockly.IRegistrable { + + /** + * Whether the flyout is laid out horizontally or not. + * @type {boolean} + */ + horizontalLayout: boolean; + + /** + * Is RTL vs LTR. + * @type {boolean} + */ + RTL: boolean; + + /** + * The target workspace + * @type {?Blockly.WorkspaceSvg} + */ + targetWorkspace: Blockly.WorkspaceSvg; + + /** + * Margin around the edges of the blocks in the flyout. + * @type {number} + * @const + */ + MARGIN: number; + + /** + * Does the flyout automatically close when a block is created? + * @type {boolean} + */ + autoClose: boolean; + + /** + * Corner radius of the flyout background. + * @type {number} + * @const + */ + CORNER_RADIUS: number; + + /** + * Creates the flyout's DOM. Only needs to be called once. The flyout can + * either exist as its own svg element or be a g element nested inside a + * separate svg element. + * @param {string| + * !Blockly.utils.Svg| + * !Blockly.utils.Svg} tagName The type of tag to + * put the flyout in. This should be or . + * @return {!SVGElement} The flyout's SVG group. + */ + createDom(tagName: string|Blockly.utils.Svg|Blockly.utils.Svg): SVGElement; + + /** + * Initializes the flyout. + * @param {!Blockly.WorkspaceSvg} targetWorkspace The workspace in which to + * create new blocks. + */ + init(targetWorkspace: Blockly.WorkspaceSvg): void; + + /** + * Dispose of this flyout. + * Unlink from all DOM elements to prevent memory leaks. + */ + dispose: any /*missing*/; + + /** + * Get the width of the flyout. + * @return {number} The width of the flyout. + */ + getWidth(): number; + + /** + * Get the height of the flyout. + * @return {number} The width of the flyout. + */ + getHeight(): number; + + /** + * Get the workspace inside the flyout. + * @return {!Blockly.WorkspaceSvg} The workspace inside the flyout. + */ + getWorkspace(): Blockly.WorkspaceSvg; + + /** + * Is the flyout visible? + * @return {boolean} True if visible. + */ + isVisible(): boolean; + + /** + * Set whether the flyout is visible. A value of true does not necessarily mean + * that the flyout is shown. It could be hidden because its container is hidden. + * @param {boolean} visible True if visible. + */ + setVisible(visible: boolean): void; + + /** + * Set whether this flyout's container is visible. + * @param {boolean} visible Whether the container is visible. + */ + setContainerVisible(visible: boolean): void; + + /** + * Hide and empty the flyout. + */ + hide: any /*missing*/; + + /** + * Show and populate the flyout. + * @param {!Blockly.utils.toolbox.FlyoutDefinition|string} flyoutDef Contents to + * display in the flyout. This is either an array of Nodes, a NodeList, a + * toolbox definition, or a string with the name of the dynamic category. + */ + show(flyoutDef: Blockly.utils.toolbox.FlyoutDefinition|string): void; + + /** + * Create a copy of this block on the workspace. + * @param {!Blockly.BlockSvg} originalBlock The block to copy from the flyout. + * @return {!Blockly.BlockSvg} The newly created block. + * @throws {Error} if something went wrong with deserialization. + */ + createBlock(originalBlock: Blockly.BlockSvg): Blockly.BlockSvg; + + /** + * Reflow blocks and their mats. + */ + reflow: any /*missing*/; + + /** + * @return {boolean} True if this flyout may be scrolled with a scrollbar or by + * dragging. + */ + isScrollable(): boolean; + + /** + * Position the flyout. + * @return {void} + */ + position(): void; + + /** + * Determine if a drag delta is toward the workspace, based on the position + * and orientation of the flyout. This is used in determineDragIntention_ to + * determine if a new block should be created or if the flyout should scroll. + * @param {!Blockly.utils.Coordinate} currentDragDeltaXY How far the pointer has + * moved from the position at mouse down, in pixel units. + * @return {boolean} True if the drag is toward the workspace. + */ + isDragTowardWorkspace(currentDragDeltaXY: Blockly.utils.Coordinate): boolean; + } +} - /** - * Sets the CSS transform property on an element. This function sets the - * non-vendor-prefixed and vendor-prefixed versions for backwards compatibility - * with older browsers. See https://caniuse.com/#feat=transforms2d - * @param {!Element} element Element to which the CSS transform will be applied. - * @param {string} transform The value of the CSS `transform` property. - */ - function setCssTransform(element: Element, transform: string): void; - /** - * Start caching text widths. Every call to this function MUST also call - * stopTextWidthCache. Caches must not survive between execution threads. - */ - function startTextWidthCache(): void; +declare module Blockly { - /** - * Stop caching field widths. Unless caching was already on when the - * corresponding call to startTextWidthCache was made. - */ - function stopTextWidthCache(): void; + interface IMovable { + + /** + * Get whether this is movable or not. + * @return {boolean} True if movable. + */ + isMovable(): boolean; + } +} - /** - * Gets the width of a text element, caching it in the process. - * @param {!Element} textElement An SVG 'text' element. - * @return {number} Width of element. - */ - function getTextWidth(textElement: Element): number; - /** - * Gets the width of a text element using a faster method than `getTextWidth`. - * This method requires that we know the text element's font family and size in - * advance. Similar to `getTextWidth`, we cache the width we compute. - * @param {!Element} textElement An SVG 'text' element. - * @param {number} fontSize The font size to use. - * @param {string} fontWeight The font weight to use. - * @param {string} fontFamily The font family to use. - * @return {number} Width of element. - */ - function getFastTextWidth(textElement: Element, fontSize: number, fontWeight: string, fontFamily: string): number; +declare module Blockly { - /** - * Gets the width of a text element using a faster method than `getTextWidth`. - * This method requires that we know the text element's font family and size in - * advance. Similar to `getTextWidth`, we cache the width we compute. - * This method is similar to ``getFastTextWidth`` but expects the font size - * parameter to be a string. - * @param {!Element} textElement An SVG 'text' element. - * @param {string} fontSize The font size to use. - * @param {string} fontWeight The font weight to use. - * @param {string} fontFamily The font family to use. - * @return {number} Width of element. - */ - function getFastTextWidthWithSizeString(textElement: Element, fontSize: string, fontWeight: string, fontFamily: string): number; + interface IRegistrable { + } +} + + +declare module Blockly { /** - * Measure a font's metrics. The height and baseline values. - * @param {string} text Text to measure the font dimensions of. - * @param {string} fontSize The font size to use. - * @param {string} fontWeight The font weight to use. - * @param {string} fontFamily The font family to use. - * @return {{height: number, baseline: number}} Font measurements. + * A registrable field. + * Note: We are not using an interface here as we are interested in defining the + * static methods of a field rather than the instance methods. + * @typedef {{ + * fromJson:Blockly.IRegistrableField.fromJson + * }} */ - function measureFontMetrics(text: string, fontSize: string, fontWeight: string, fontFamily: string): { height: number; baseline: number }; + interface IRegistrableField { + fromJson: Blockly.IRegistrableField.fromJson + } } - -declare module Blockly.utils { +declare module Blockly.IRegistrableField { /** - * Reference to the global object. - * - * More info on this implementation here: - * https://docs.google.com/document/d/1NAeW4Wk7I7FV0Y2tcUFvQdGMc89k2vdgSXInw8_nvCI/edit + * @typedef {function(!Object): Blockly.Field} */ - var global: any /*missing*/; + interface fromJson { + (_0: Object): Blockly.Field + } } -declare module Blockly.utils.IdGenerator { +declare module Blockly { - /** - * Gets the next unique ID. - * IDs are compatible with the HTML4 id attribute restrictions: - * Use only ASCII letters, digits, '_', '-' and '.' - * @return {string} The next unique identifier. - */ - function getNextUniqueId(): string; + interface ISelectable extends Blockly.IDeletable, Blockly.IMovable { + + /** + * @type {string} + */ + id: string; + + /** + * Select this. Highlight it visually. + * @return {void} + */ + select(): void; + + /** + * Unselect this. Unhighlight it visually. + * @return {void} + */ + unselect(): void; + } } -declare module Blockly.utils { +declare module Blockly { - /** - * Key codes for common characters. - * - * Copied from Closure's goog.events.KeyCodes - * - * This list is not localized and therefore some of the key codes are not - * correct for non US keyboard layouts. See comments below. - * - * @enum {number} - */ - enum KeyCodes { WIN_KEY_FF_LINUX, MAC_ENTER, BACKSPACE, TAB, NUM_CENTER, ENTER, SHIFT, CTRL, ALT, PAUSE, CAPS_LOCK, ESC, SPACE, PAGE_UP, PAGE_DOWN, END, HOME, LEFT, UP, RIGHT, DOWN, PLUS_SIGN, PRINT_SCREEN, INSERT, DELETE, ZERO, ONE, TWO, THREE, FOUR, FIVE, SIX, SEVEN, EIGHT, NINE, FF_SEMICOLON, FF_EQUALS, FF_DASH, FF_HASH, QUESTION_MARK, AT_SIGN, A, B, C, D, E, F, G, H, I, J, K, L, M, N, O, P, Q, R, S, T, U, V, W, X, Y, Z, META, WIN_KEY_RIGHT, CONTEXT_MENU, NUM_ZERO, NUM_ONE, NUM_TWO, NUM_THREE, NUM_FOUR, NUM_FIVE, NUM_SIX, NUM_SEVEN, NUM_EIGHT, NUM_NINE, NUM_MULTIPLY, NUM_PLUS, NUM_MINUS, NUM_PERIOD, NUM_DIVISION, F1, F2, F3, F4, F5, F6, F7, F8, F9, F10, F11, F12, NUMLOCK, SCROLL_LOCK, FIRST_MEDIA_KEY, LAST_MEDIA_KEY, SEMICOLON, DASH, EQUALS, COMMA, PERIOD, SLASH, APOSTROPHE, TILDE, SINGLE_QUOTE, OPEN_SQUARE_BRACKET, BACKSLASH, CLOSE_SQUARE_BRACKET, WIN_KEY, MAC_FF_META, MAC_WK_CMD_LEFT, MAC_WK_CMD_RIGHT, WIN_IME, VK_NONAME, PHANTOM } + interface IStyleable { + + /** + * Adds a style on the toolbox. Usually used to change the cursor. + * @param {string} style The name of the class to add. + */ + addStyle(style: string): void; + + /** + * Removes a style from the toolbox. Usually used to change the cursor. + * @param {string} style The name of the class to remove. + */ + removeStyle(style: string): void; + } } -declare module Blockly.utils.math { +declare module Blockly { - /** - * Converts degrees to radians. - * Copied from Closure's goog.math.toRadians. - * @param {number} angleDegrees Angle in degrees. - * @return {number} Angle in radians. - */ - function toRadians(angleDegrees: number): number; + interface IToolbox extends Blockly.IRegistrable { + + /** + * Initializes the toolbox. + * @return {void} + */ + init(): void; + + /** + * Fills the toolbox with new toolbox items and removes any old contents. + * @param {!Blockly.utils.toolbox.ToolboxInfo} toolboxDef Object holding information + * for creating a toolbox. + */ + render(toolboxDef: Blockly.utils.toolbox.ToolboxInfo): void; + + /** + * Gets the width of the toolbox. + * @return {number} The width of the toolbox. + */ + getWidth(): number; + + /** + * Gets the height of the toolbox. + * @return {number} The width of the toolbox. + */ + getHeight(): number; + + /** + * Gets the toolbox flyout. + * @return {?Blockly.IFlyout} The toolbox flyout. + */ + getFlyout(): Blockly.IFlyout; + + /** + * Gets the workspace for the toolbox. + * @return {!Blockly.WorkspaceSvg} The parent workspace for the toolbox. + */ + getWorkspace(): Blockly.WorkspaceSvg; + + /** + * Gets whether or not the toolbox is horizontal. + * @return {boolean} True if the toolbox is horizontal, false if the toolbox is + * vertical. + */ + isHorizontal(): boolean; + + /** + * Positions the toolbox based on whether it is a horizontal toolbox and whether + * the workspace is in rtl. + * @return {void} + */ + position(): void; + + /** + * Handles resizing the toolbox when a toolbox item resizes. + * @return {void} + */ + handleToolboxItemResize(): void; + + /** + * Unhighlights any previously selected item. + * @return {void} + */ + clearSelection(): void; + + /** + * Updates the category colours and background colour of selected categories. + * @return {void} + */ + refreshTheme(): void; + + /** + * Updates the flyout's content without closing it. Should be used in response + * to a change in one of the dynamic categories, such as variables or + * procedures. + * @return {void} + */ + refreshSelection(): void; + + /** + * Sets the visibility of the toolbox. + * @param {boolean} isVisible True if toolbox should be visible. + */ + setVisible(isVisible: boolean): void; + + /** + * Selects the toolbox item by it's position in the list of toolbox items. + * @param {number} position The position of the item to select. + * @return {void} + */ + selectItemByPosition(position: number): void; + + /** + * Gets the selected item. + * @return {?Blockly.IToolboxItem} The selected item, or null if no item is + * currently selected. + */ + getSelectedItem(): Blockly.IToolboxItem; + + /** + * Disposes of this toolbox. + * @return {void} + */ + dispose(): void; + } +} - /** - * Converts radians to degrees. - * Copied from Closure's goog.math.toDegrees. - * @param {number} angleRadians Angle in radians. - * @return {number} Angle in degrees. - */ - function toDegrees(angleRadians: number): number; - /** - * Clamp the provided number between the lower bound and the upper bound. - * @param {number} lowerBound The desired lower bound. - * @param {number} number The number to clamp. - * @param {number} upperBound The desired upper bound. - * @return {number} The clamped number. - */ - function clamp(lowerBound: number, number: number, upperBound: number): number; -} +declare module Blockly { + interface IToolboxItem { + + /** + * Initializes the toolbox item. + * This includes creating the dom and updating the state of any items based + * on the info object. + * @return {void} + * @public + */ + init(): void; + + /** + * Gets the div for the toolbox item. + * @return {?Element} The div for the toolbox item. + * @public + */ + getDiv(): Element; + + /** + * Gets a unique identifier for this toolbox item. + * @return {string} The id for the toolbox item. + * @public + */ + getId(): string; + + /** + * Gets the parent if the toolbox item is nested. + * @return {?Blockly.IToolboxItem} The parent toolbox item, or null if + * this toolbox item is not nested. + * @public + */ + getParent(): Blockly.IToolboxItem; + + /** + * Gets the nested level of the category. + * @return {number} The nested level of the category. + * @package + */ + getLevel(): number; + + /** + * Whether the toolbox item is selectable. + * @return {boolean} True if the toolbox item can be selected. + * @public + */ + isSelectable(): boolean; + + /** + * Whether the toolbox item is collapsible. + * @return {boolean} True if the toolbox item is collapsible. + * @public + */ + isCollapsible(): boolean; + + /** + * Dispose of this toolbox item. No-op by default. + * @public + */ + dispose: any /*missing*/; + } -declare module Blockly.utils { + interface ISelectableToolboxItem extends Blockly.IToolboxItem { + + /** + * Gets the name of the toolbox item. Used for emitting events. + * @return {string} The name of the toolbox item. + * @public + */ + getName(): string; + + /** + * Gets the contents of the toolbox item. These are items that are meant to be + * displayed in the flyout. + * @return {!Blockly.utils.toolbox.FlyoutItemInfoArray|string} The definition + * of items to be displayed in the flyout. + * @public + */ + getContents(): Blockly.utils.toolbox.FlyoutItemInfoArray|string; + + /** + * Sets the current toolbox item as selected. + * @param {boolean} _isSelected True if this category is selected, false + * otherwise. + * @public + */ + setSelected(_isSelected: boolean): void; + + /** + * Handles when the toolbox item is clicked. + * @param {!Event} _e Click event to handle. + * @public + */ + onClick(_e: Event): void; + } - /** - * @record - */ - function Metrics(): void; + interface ICollapsibleToolboxItem extends Blockly.ISelectableToolboxItem { + + /** + * Gets any children toolbox items. (ex. Gets the subcategories) + * @return {!Array} The child toolbox items. + */ + getChildToolboxItems(): Blockly.IToolboxItem[]; + + /** + * Whether the toolbox item is expanded to show its child subcategories. + * @return {boolean} True if the toolbox item shows its children, false if it + * is collapsed. + * @public + */ + isExpanded(): boolean; + + /** + * Toggles whether or not the toolbox item is expanded. + * @public + */ + toggleExpanded: any /*missing*/; + } } -declare module Blockly.utils.object { - /** - * Inherit the prototype methods from one constructor into another. - * - * @param {!Function} childCtor Child class. - * @param {!Function} parentCtor Parent class. - * @suppress {strictMissingProperties} superClass_ is not defined on Function. - */ - function inherits(childCtor: Function, parentCtor: Function): void; - /** - * Copies all the members of a source object to a target object. - * @param {!Object} target Target. - * @param {!Object} source Source. - */ - function mixin(target: Object, source: Object): void; - /** - * Complete a deep merge of all members of a source object with a target object. - * @param {!Object} target Target. - * @param {!Object} source Source. - * @return {!Object} The resulting object. - */ - function deepMerge(target: Object, source: Object): Object; - /** - * Returns an array of a given object's own enumerable property values. - * @param {!Object} obj Object containing values. - * @return {!Array} Array of values. - */ - function values(obj: Object): any[]; -} -declare module Blockly.utils { - class Rect extends Rect__Class { } +declare module Blockly { + + class ToolboxCategory extends ToolboxCategory__Class { } /** Fake class which should be extended to avoid inheriting static properties */ - class Rect__Class { + class ToolboxCategory__Class extends Blockly.ToolboxItem__Class implements Blockly.ISelectableToolboxItem { /** - * Class for representing rectangular regions. - * @param {number} top Top. - * @param {number} bottom Bottom. - * @param {number} left Left. - * @param {number} right Right. - * @struct + * Class for a category in a toolbox. + * @param {!Blockly.utils.toolbox.CategoryInfo} categoryDef The information needed + * to create a category in the toolbox. + * @param {!Blockly.IToolbox} toolbox The parent toolbox for the category. + * @param {Blockly.ICollapsibleToolboxItem=} opt_parent The parent category or null if + * the category does not have a parent. * @constructor + * @extends {Blockly.ToolboxItem} + * @implements {Blockly.ISelectableToolboxItem} */ - constructor(top: number, bottom: number, left: number, right: number); + constructor(categoryDef: Blockly.utils.toolbox.CategoryInfo, toolbox: Blockly.IToolbox, opt_parent?: Blockly.ICollapsibleToolboxItem); - /** @type {number} */ - top: number; + /** + * The name that will be displayed on the category. + * @type {string} + * @protected + */ + name_: string; - /** @type {number} */ - bottom: number; + /** + * The colour of the category. + * @type {string} + * @protected + */ + colour_: string; - /** @type {number} */ - left: number; + /** + * The html container for the category. + * @type {?Element} + * @protected + */ + htmlDiv_: Element; - /** @type {number} */ - right: number; + /** + * The html element for the category row. + * @type {?Element} + * @protected + */ + rowDiv_: Element; /** - * Tests whether this rectangle contains a x/y coordinate. - * - * @param {number} x The x coordinate to test for containment. - * @param {number} y The y coordinate to test for containment. - * @return {boolean} Whether this rectangle contains given coordinate. + * The html element that holds children elements of the category row. + * @type {?Element} + * @protected */ - contains(x: number, y: number): boolean; - } + rowContents_: Element; -} - - -declare module Blockly.utils { - - class Size extends Size__Class { } - /** Fake class which should be extended to avoid inheriting static properties */ - class Size__Class { + /** + * The html element for the toolbox icon. + * @type {?Element} + * @protected + */ + iconDom_: Element; /** - * Class for representing sizes consisting of a width and height. - * @param {number} width Width. - * @param {number} height Height. - * @struct - * @constructor + * All the css class names that are used to create a category. + * @type {!Blockly.ToolboxCategory.CssConfig} + * @protected */ - constructor(width: number, height: number); + cssConfig_: Blockly.ToolboxCategory.CssConfig; /** - * Width - * @type {number} + * True if the category is meant to be hidden, false otherwise. + * @type {boolean} + * @protected */ - width: number; + isHidden_: boolean; /** - * Height - * @type {number} + * True if this category is disabled, false otherwise. + * @type {boolean} + * @protected */ - height: number; + isDisabled_: boolean; + + /** + * The flyout items for this category. + * @type {string|!Blockly.utils.toolbox.FlyoutItemInfoArray} + * @protected + */ + flyoutItems_: string|Blockly.utils.toolbox.FlyoutItemInfoArray; + + /** + * Creates an object holding the default classes for a category. + * @return {!Blockly.ToolboxCategory.CssConfig} The configuration object holding + * all the CSS classes for a category. + * @protected + */ + makeDefaultCssConfig_(): Blockly.ToolboxCategory.CssConfig; + + /** + * Parses the contents array depending on if the category is a dynamic category, + * or if its contents are meant to be shown in the flyout. + * @param {!Blockly.utils.toolbox.CategoryInfo} categoryDef The information needed + * to create a category. + * @protected + */ + parseContents_(categoryDef: Blockly.utils.toolbox.CategoryInfo): void; + + /** + * Creates the dom for the category. + * @return {!Element} The parent element for the category. + * @protected + */ + createDom_(): Element; + + /** + * Creates the container that holds the row and any subcategories. + * @return {!Element} The div that holds the icon and the label. + * @protected + */ + createContainer_(): Element; + + /** + * Creates the parent of the contents container. All clicks will happen on this + * div. + * @return {!Element} The div that holds the contents container. + * @protected + */ + createRowContainer_(): Element; + + /** + * Creates the container for the label and icon. + * This is necessary so we can set all subcategory pointer events to none. + * @return {!Element} The div that holds the icon and the label. + * @protected + */ + createRowContentsContainer_(): Element; + + /** + * Creates the span that holds the category icon. + * @return {!Element} The span that holds the category icon. + * @protected + */ + createIconDom_(): Element; + + /** + * Creates the span that holds the category label. + * This should have an id for accessibility purposes. + * @param {string} name The name of the category. + * @return {!Element} The span that holds the category label. + * @protected + */ + createLabelDom_(name: string): Element; + + /** + * Updates the colour for this category. + * @public + */ + refreshTheme(): void; + + /** + * Add the strip of colour to the toolbox category. + * @param {string} colour The category colour. + * @protected + */ + addColourBorder_(colour: string): void; + + /** + * Gets either the colour or the style for a category. + * @param {!Blockly.utils.toolbox.CategoryInfo} categoryDef The object holding + * information on the category. + * @return {string} The hex colour for the category. + * @protected + */ + getColour_(categoryDef: Blockly.utils.toolbox.CategoryInfo): string; + + /** + * Adds appropriate classes to display an open icon. + * @param {?Element} iconDiv The div that holds the icon. + * @protected + */ + openIcon_(iconDiv: Element): void; + + /** + * Adds appropriate classes to display a closed icon. + * @param {?Element} iconDiv The div that holds the icon. + * @protected + */ + closeIcon_(iconDiv: Element): void; + + /** + * Sets whether the category is visible or not. + * For a category to be visible its parent category must also be expanded. + * @param {boolean} isVisible True if category should be visible. + * @protected + */ + setVisible_(isVisible: boolean): void; + + /** + * Hide the category. + */ + hide(): void; + + /** + * Show the category. Category will only appear if its parent category is also + * expanded. + */ + show(): void; + + /** + * Whether the category is visible. + * A category is only visible if all of its ancestors are expanded and isHidden_ is false. + * @return {boolean} True if the category is visible, false otherwise. + * @public + */ + isVisible(): boolean; + + /** + * Whether all ancestors of a category (parent and parent's parent, etc.) are expanded. + * @return {boolean} True only if every ancestor is expanded + * @protected + */ + allAncestorsExpanded_(): boolean; + + /** + * Handles when the toolbox item is clicked. + * @param {!Event} _e Click event to handle. + * @public + */ + onClick(_e: Event): void; + + /** + * Sets the current category as selected. + * @param {boolean} isSelected True if this category is selected, false + * otherwise. + * @public + */ + setSelected(isSelected: boolean): void; + + /** + * Sets whether the category is disabled. + * @param {boolean} isDisabled True to disable the category, false otherwise. + */ + setDisabled(isDisabled: boolean): void; + + /** + * Gets the name of the category. Used for emitting events. + * @return {string} The name of the toolbox item. + * @public + */ + getName(): string; + + /** + * Gets the contents of the category. These are items that are meant to be + * displayed in the flyout. + * @return {!Blockly.utils.toolbox.FlyoutItemInfoArray|string} The definition + * of items to be displayed in the flyout. + * @public + */ + getContents(): Blockly.utils.toolbox.FlyoutItemInfoArray|string; + + /** + * Updates the contents to be displayed in the flyout. + * If the flyout is open when the contents are updated, refreshSelection on the + * toolbox must also be called. + * @param {!Blockly.utils.toolbox.FlyoutDefinition|string} contents The contents + * to be displayed in the flyout. A string can be supplied to create a + * dynamic category. + * @public + */ + updateFlyoutContents(contents: Blockly.utils.toolbox.FlyoutDefinition|string): void; } } -declare module Blockly.utils.Size { - - /** - * Compares sizes for equality. - * @param {Blockly.utils.Size} a A Size. - * @param {Blockly.utils.Size} b A Size. - * @return {boolean} True iff the sizes have equal widths and equal - * heights, or if both are null. - */ - function equals(a: Blockly.utils.Size, b: Blockly.utils.Size): boolean; -} - - -declare module Blockly.utils._string { +declare module Blockly.ToolboxCategory { /** - * Fast prefix-checker. - * Copied from Closure's goog.string.startsWith. - * @param {string} str The string to check. - * @param {string} prefix A string to look for at the start of `str`. - * @return {boolean} True if `str` begins with `prefix`. + * All the css class names that are used to create a category. + * @typedef {{ + * container:?string, + * row:?string, + * icon:?string, + * label:?string, + * selected:?string, + * openIcon:?string, + * closedIcon:?string + * }} */ - function startsWith(str: string, prefix: string): boolean; + interface CssConfig { + container: string; + row: string; + icon: string; + label: string; + selected: string; + openIcon: string; + closedIcon: string + } /** - * Given an array of strings, return the length of the shortest one. - * @param {!Array.} array Array of strings. - * @return {number} Length of shortest string. + * Name used for registering a toolbox category. + * @const {string} */ - function shortestStringLength(array: string[]): number; + var registrationName: any /*missing*/; /** - * Given an array of strings, return the length of the common prefix. - * Words may not be split. Any space after a word is included in the length. - * @param {!Array.} array Array of strings. - * @param {number=} opt_shortest Length of shortest string. - * @return {number} Length of common prefix. + * The number of pixels to move the category over at each nested level. + * @type {number} */ - function commonWordPrefix(array: string[], opt_shortest?: number): number; + var nestedPadding: number; /** - * Given an array of strings, return the length of the common suffix. - * Words may not be split. Any space after a word is included in the length. - * @param {!Array.} array Array of strings. - * @param {number=} opt_shortest Length of shortest string. - * @return {number} Length of common suffix. + * The width in pixels of the strip of colour next to each category. + * @type {number} */ - function commonWordSuffix(array: string[], opt_shortest?: number): number; + var borderWidth: number; /** - * Wrap text to the specified width. - * @param {string} text Text to wrap. - * @param {number} limit Width to wrap each line. - * @return {string} Wrapped text. + * The default colour of the category. This is used as the background colour of + * the category when it is selected. + * @type {string} */ - function wrap(text: string, limit: number): string; + var defaultBackgroundColour: string; } -declare module Blockly.utils.style { +declare module Blockly { + + class CollapsibleToolboxCategory extends CollapsibleToolboxCategory__Class { } + /** Fake class which should be extended to avoid inheriting static properties */ + class CollapsibleToolboxCategory__Class extends Blockly.ToolboxCategory__Class implements Blockly.ICollapsibleToolboxItem { + + /** + * Class for a category in a toolbox that can be collapsed. + * @param {!Blockly.utils.toolbox.CategoryInfo} categoryDef The information needed + * to create a category in the toolbox. + * @param {!Blockly.IToolbox} toolbox The parent toolbox for the category. + * @param {Blockly.ICollapsibleToolboxItem=} opt_parent The parent category or null if + * the category does not have a parent. + * @constructor + * @extends {Blockly.ToolboxCategory} + * @implements {Blockly.ICollapsibleToolboxItem} + */ + constructor(categoryDef: Blockly.utils.toolbox.CategoryInfo, toolbox: Blockly.IToolbox, opt_parent?: Blockly.ICollapsibleToolboxItem); + + /** + * Container for any child categories. + * @type {?Element} + * @protected + */ + subcategoriesDiv_: Element; + + /** + * Whether or not the category should display its subcategories. + * @type {boolean} + * @protected + */ + expanded_: boolean; + + /** + * The child toolbox items for this category. + * @type {!Array} + * @protected + */ + toolboxItems_: Blockly.ToolboxItem[]; + + /** + * Create the dom for all subcategories. + * @param {!Array} subcategories The subcategories. + * @return {!Element} The div holding all the subcategories. + * @protected + */ + createSubCategoriesDom_(subcategories: Blockly.ToolboxItem[]): Element; + + /** + * Opens or closes the current category. + * @param {boolean} isExpanded True to expand the category, false to close. + * @public + */ + setExpanded(isExpanded: boolean): void; + + /** + * Whether the category is expanded to show its child subcategories. + * @return {boolean} True if the toolbox item shows its children, false if it + * is collapsed. + * @public + */ + isExpanded(): boolean; + + /** + * Toggles whether or not the category is expanded. + * @public + */ + toggleExpanded(): void; + + /** + * Gets any children toolbox items. (ex. Gets the subcategories) + * @return {!Array} The child toolbox items. + */ + getChildToolboxItems(): Blockly.IToolboxItem[]; + } + +} + +declare module Blockly.CollapsibleToolboxCategory { /** - * Gets the height and width of an element. - * Similar to Closure's goog.style.getSize - * @param {!Element} element Element to get size of. - * @return {!Blockly.utils.Size} Object with width/height properties. + * All the css class names that are used to create a collapsible + * category. This is all the properties from the regular category plus contents. + * @typedef {{ + * container:?string, + * row:?string, + * icon:?string, + * label:?string, + * selected:?string, + * openIcon:?string, + * closedIcon:?string, + * contents:?string + * }} */ - function getSize(element: Element): Blockly.utils.Size; + interface CssConfig { + container: string; + row: string; + icon: string; + label: string; + selected: string; + openIcon: string; + closedIcon: string; + contents: string + } /** - * Retrieves a computed style value of a node. It returns empty string if the - * value cannot be computed (which will be the case in Internet Explorer) or - * "none" if the property requested is an SVG one and it has not been - * explicitly set (firefox and webkit). - * - * Copied from Closure's goog.style.getComputedStyle - * - * @param {!Element} element Element to get style of. - * @param {string} property Property to get (camel-case). - * @return {string} Style value. - */ - function getComputedStyle(element: Element, property: string): string; - - /** - * Gets the cascaded style value of a node, or null if the value cannot be - * computed (only Internet Explorer can do this). - * - * Copied from Closure's goog.style.getCascadedStyle - * - * @param {!Element} element Element to get style of. - * @param {string} style Property to get (camel-case). - * @return {string} Style value. - */ - function getCascadedStyle(element: Element, style: string): string; - - /** - * Returns a Coordinate object relative to the top-left of the HTML document. - * Similar to Closure's goog.style.getPageOffset - * @param {!Element} el Element to get the page offset for. - * @return {!Blockly.utils.Coordinate} The page offset. - */ - function getPageOffset(el: Element): Blockly.utils.Coordinate; - - /** - * Calculates the viewport coordinates relative to the document. - * Similar to Closure's goog.style.getViewportPageOffset - * @return {!Blockly.utils.Coordinate} The page offset of the viewport. - */ - function getViewportPageOffset(): Blockly.utils.Coordinate; - - /** - * Shows or hides an element from the page. Hiding the element is done by - * setting the display property to "none", removing the element from the - * rendering hierarchy so it takes up no space. To show the element, the default - * inherited display property is restored (defined either in stylesheets or by - * the browser's default style rules). - * Copied from Closure's goog.style.getViewportPageOffset - * - * @param {!Element} el Element to show or hide. - * @param {*} isShown True to render the element in its default style, - * false to disable rendering the element. - */ - function setElementShown(el: Element, isShown: any): void; - - /** - * Returns true if the element is using right to left (RTL) direction. - * Copied from Closure's goog.style.isRightToLeft - * - * @param {!Element} el The element to test. - * @return {boolean} True for right to left, false for left to right. - */ - function isRightToLeft(el: Element): boolean; - - /** - * Gets the computed border widths (on all sides) in pixels - * Copied from Closure's goog.style.getBorderBox - * @param {!Element} element The element to get the border widths for. - * @return {!Object} The computed border widths. - */ - function getBorderBox(element: Element): Object; - - /** - * Changes the scroll position of `container` with the minimum amount so - * that the content and the borders of the given `element` become visible. - * If the element is bigger than the container, its top left corner will be - * aligned as close to the container's top left corner as possible. - * Copied from Closure's goog.style.scrollIntoContainerView - * - * @param {!Element} element The element to make visible. - * @param {!Element} container The container to scroll. If not set, then the - * document scroll element will be used. - * @param {boolean=} opt_center Whether to center the element in the container. - * Defaults to false. - */ - function scrollIntoContainerView(element: Element, container: Element, opt_center?: boolean): void; - - /** - * Calculate the scroll position of `container` with the minimum amount so - * that the content and the borders of the given `element` become visible. - * If the element is bigger than the container, its top left corner will be - * aligned as close to the container's top left corner as possible. - * Copied from Closure's goog.style.getContainerOffsetToScrollInto - * - * @param {!Element} element The element to make visible. - * @param {!Element} container The container to scroll. If not set, then the - * document scroll element will be used. - * @param {boolean=} opt_center Whether to center the element in the container. - * Defaults to false. - * @return {!Blockly.utils.Coordinate} The new scroll position of the container, - * in form of goog.math.Coordinate(scrollLeft, scrollTop). + * Name used for registering a collapsible toolbox category. + * @const {string} */ - function getContainerOffsetToScrollInto(element: Element, container: Element, opt_center?: boolean): Blockly.utils.Coordinate; + var registrationName: any /*missing*/; } -declare module Blockly.utils.svgPaths { - - /** - * Create a string representing the given x, y pair. It does not matter whether - * the coordinate is relative or absolute. The result has leading - * and trailing spaces, and separates the x and y coordinates with a comma but - * no space. - * @param {number} x The x coordinate. - * @param {number} y The y coordinate. - * @return {string} A string of the format ' x,y ' - * @public - */ - function point(x: number, y: number): string; - - /** - * Draw a cubic or quadratic curve. See - * developer.mozilla.org/en-US/docs/Web/SVG/Attribute/d#Cubic_B%C3%A9zier_Curve - * These coordinates are unitless and hence in the user coordinate system. - * @param {string} command The command to use. - * Should be one of: c, C, s, S, q, Q. - * @param {!Array.} points An array containing all of the points to pass to the - * curve command, in order. The points are represented as strings of the - * format ' x, y '. - * @return {string} A string defining one or more Bezier curves. See the MDN - * documentation for exact format. - * @public - */ - function curve(command: string, points: string[]): string; - - /** - * Move the cursor to the given position without drawing a line. - * The coordinates are absolute. - * These coordinates are unitless and hence in the user coordinate system. - * See developer.mozilla.org/en-US/docs/Web/SVG/Tutorial/Paths#Line_commands - * @param {number} x The absolute x coordinate. - * @param {number} y The absolute y coordinate. - * @return {string} A string of the format ' M x,y ' - * @public - */ - function moveTo(x: number, y: number): string; - - /** - * Move the cursor to the given position without drawing a line. - * Coordinates are relative. - * These coordinates are unitless and hence in the user coordinate system. - * See developer.mozilla.org/en-US/docs/Web/SVG/Tutorial/Paths#Line_commands - * @param {number} dx The relative x coordinate. - * @param {number} dy The relative y coordinate. - * @return {string} A string of the format ' m dx,dy ' - * @public - */ - function moveBy(dx: number, dy: number): string; - - /** - * Draw a line from the current point to the end point, which is the current - * point shifted by dx along the x-axis and dy along the y-axis. - * These coordinates are unitless and hence in the user coordinate system. - * See developer.mozilla.org/en-US/docs/Web/SVG/Tutorial/Paths#Line_commands - * @param {number} dx The relative x coordinate. - * @param {number} dy The relative y coordinate. - * @return {string} A string of the format ' l dx,dy ' - * @public - */ - function lineTo(dx: number, dy: number): string; - - /** - * Draw multiple lines connecting all of the given points in order. This is - * equivalent to a series of 'l' commands. - * These coordinates are unitless and hence in the user coordinate system. - * See developer.mozilla.org/en-US/docs/Web/SVG/Tutorial/Paths#Line_commands - * @param {!Array.} points An array containing all of the points to - * draw lines to, in order. The points are represented as strings of the - * format ' dx,dy '. - * @return {string} A string of the format ' l (dx,dy)+ ' - * @public - */ - function line(points: string[]): string; - - /** - * Draw a horizontal or vertical line. - * The first argument specifies the direction and whether the given position is - * relative or absolute. - * These coordinates are unitless and hence in the user coordinate system. - * See developer.mozilla.org/en-US/docs/Web/SVG/Attribute/d#LineTo_path_commands - * @param {string} command The command to prepend to the coordinate. This - * should be one of: V, v, H, h. - * @param {number} val The coordinate to pass to the command. It may be - * absolute or relative. - * @return {string} A string of the format ' command val ' - * @public - */ - function lineOnAxis(command: string, val: number): string; +declare module Blockly { - /** - * Draw an elliptical arc curve. - * These coordinates are unitless and hence in the user coordinate system. - * See developer.mozilla.org/en-US/docs/Web/SVG/Attribute/d#Elliptical_Arc_Curve - * @param {string} command The command string. Either 'a' or 'A'. - * @param {string} flags The flag string. See the MDN documentation for a - * description and examples. - * @param {number} radius The radius of the arc to draw. - * @param {string} point The point to move the cursor to after drawing the arc, - * specified either in absolute or relative coordinates depending on the - * command. - * @return {string} A string of the format 'command radius radius flags point' - * @public - */ - function arc(command: string, flags: string, radius: number, point: string): string; + class ToolboxSeparator extends ToolboxSeparator__Class { } + /** Fake class which should be extended to avoid inheriting static properties */ + class ToolboxSeparator__Class extends Blockly.ToolboxItem__Class implements Blockly.IToolboxItem { + + /** + * Class for a toolbox separator. This is the thin visual line that appears on + * the toolbox. This item is not interactable. + * @param {!Blockly.utils.toolbox.SeparatorInfo} separatorDef The information + * needed to create a separator. + * @param {!Blockly.IToolbox} toolbox The parent toolbox for the separator. + * @constructor + * @extends {Blockly.ToolboxItem} + * @implements {Blockly.IToolboxItem} + */ + constructor(separatorDef: Blockly.utils.toolbox.SeparatorInfo, toolbox: Blockly.IToolbox); + + /** + * All the css class names that are used to create a separator. + * @type {!Blockly.ToolboxSeparator.CssConfig} + * @protected + */ + cssConfig_: Blockly.ToolboxSeparator.CssConfig; + + /** + * Creates the dom for a separator. + * @return {!Element} The parent element for the separator. + * @protected + */ + createDom_(): Element; + } + } - -declare module Blockly.utils.toolbox { +declare module Blockly.ToolboxSeparator { /** - * The information needed to create a block in the toolbox. + * All the css class names that are used to create a separator. * @typedef {{ - * kind:string, - * blockxml:(?string|Node), - * type: ?string, - * gap: (?string|?number), - * disabled: (?string|?boolean) + * container:?string * }} */ - interface Block { - kind: string; - blockxml: string|Node; - type: string; - gap: string|number; - disabled: string|boolean + interface CssConfig { + container: string } /** - * The information needed to create a separator in the toolbox. - * @typedef {{ - * kind:string, - * gap:?number - * }} + * Name used for registering a toolbox separator. + * @const {string} */ - interface Separator { - kind: string; - gap: number - } + var registrationName: any /*missing*/; +} - /** - * The information needed to create a button in the toolbox. - * @typedef {{ - * kind:string, - * text:string, - * callbackkey:string - * }} - */ - interface Button { - kind: string; - text: string; - callbackkey: string - } - - /** - * The information needed to create a label in the toolbox. - * @typedef {{ - * kind:string, - * text:string - * }} - */ - interface Label { - kind: string; - text: string - } - - /** - * The information needed to create a category in the toolbox. - * @typedef {{ - * kind:string, - * name:string, - * categorystyle:?string, - * colour:?string, - * contents:Array. - * }} - */ - interface Category { - kind: string; - name: string; - categorystyle: string; - colour: string; - contents: Blockly.utils.toolbox.Toolbox[] - } - - /** - * Any information that can be used to create an item in the toolbox. - * @typedef {Blockly.utils.toolbox.Block| - * Blockly.utils.toolbox.Separator| - * Blockly.utils.toolbox.Button| - * Blockly.utils.toolbox.Label| - * Blockly.utils.toolbox.Category} - */ - type Toolbox = Blockly.utils.toolbox.Block|Blockly.utils.toolbox.Separator|Blockly.utils.toolbox.Button|Blockly.utils.toolbox.Label|Blockly.utils.toolbox.Category; - - /** - * All of the different types that can create a toolbox. - * @typedef {Node| - * NodeList| - * Array.| - * Array.} - */ - type ToolboxDefinition = Node|NodeList|Blockly.utils.toolbox.Toolbox[]|Node[]; - - /** - * Parse the provided toolbox definition into a consistent format. - * @param {Blockly.utils.toolbox.ToolboxDefinition} toolboxDef The definition of the - * toolbox in one of its many forms. - * @return {Array.} Array of JSON holding - * information on toolbox contents. - * @package - */ - function convertToolboxToJSON(toolboxDef: Blockly.utils.toolbox.ToolboxDefinition): Blockly.utils.toolbox.Toolbox[]; - - /** - * Whether or not the toolbox definition has categories or not. - * @param {Node|Array.} toolboxDef The definition - * of the toolbox. Either in xml or JSON. - * @return {boolean} True if the toolbox has categories. - * @package - */ - function hasCategories(toolboxDef: Node|Blockly.utils.toolbox.Toolbox[]): boolean; -} - - -declare module Blockly.utils.userAgent { - - /** @const {boolean} */ - var IE: any /*missing*/; - - /** @const {boolean} */ - var EDGE: any /*missing*/; - - /** @const {boolean} */ - var JAVA_FX: any /*missing*/; - - /** @const {boolean} */ - var CHROME: any /*missing*/; - - /** @const {boolean} */ - var WEBKIT: any /*missing*/; - - /** @const {boolean} */ - var GECKO: any /*missing*/; - - /** @const {boolean} */ - var ANDROID: any /*missing*/; - - /** @const {boolean} */ - var IPAD: any /*missing*/; - - /** @const {boolean} */ - var IPOD: any /*missing*/; - - /** @const {boolean} */ - var IPHONE: any /*missing*/; - - /** @const {boolean} */ - var MAC: any /*missing*/; - - /** @const {boolean} */ - var TABLET: any /*missing*/; - - /** @const {boolean} */ - var MOBILE: any /*missing*/; -} - - -declare module Blockly.utils.xml { - - /** - * Namespace for Blockly's XML. - */ - var NAME_SPACE: any /*missing*/; - - /** - * Get the document object. This method is overridden in the Node.js build of - * Blockly. See gulpfile.js, package-blockly-node task. - * @return {!Document} The document object. - * @public - */ - function document(): Document; - - /** - * Create DOM element for XML. - * @param {string} tagName Name of DOM element. - * @return {!Element} New DOM element. - * @public - */ - function createElement(tagName: string): Element; - - /** - * Create text element for XML. - * @param {string} text Text content. - * @return {!Text} New DOM text node. - * @public - */ - function createTextNode(text: string): Text; - - /** - * Converts an XML string into a DOM tree. - * @param {string} text XML string. - * @return {Document} The DOM document. - * @throws if XML doesn't parse. - * @public - */ - function textToDomDocument(text: string): Document; - - /** - * Converts a DOM structure into plain text. - * Currently the text format is fairly ugly: all one line with no whitespace. - * @param {!Node} dom A tree of XML nodes. - * @return {string} Text representation. - * @public - */ - function domToText(dom: Node): string; -} +declare module Blockly { -declare module Blockly.tree { - - class BaseNode extends BaseNode__Class { } + class Toolbox extends Toolbox__Class { } /** Fake class which should be extended to avoid inheriting static properties */ - class BaseNode__Class extends Blockly.Component__Class { + class Toolbox__Class implements Blockly.IBlocklyActionable, Blockly.IDeleteArea, Blockly.IStyleable, Blockly.IToolbox { /** - * An abstract base class for a node in the tree. - * Similar to goog.ui.tree.BaseNode - * - * @param {string} content The content of the node label treated as - * plain-text and will be HTML escaped. - * @param {!Blockly.tree.BaseNode.Config} config The configuration for the tree. + * Class for a Toolbox. + * Creates the toolbox's DOM. + * @param {!Blockly.WorkspaceSvg} workspace The workspace in which to create new + * blocks. * @constructor - * @extends {Blockly.Component} + * @implements {Blockly.IBlocklyActionable} + * @implements {Blockly.IDeleteArea} + * @implements {Blockly.IStyleable} + * @implements {Blockly.IToolbox} */ - constructor(content: string, config: Blockly.tree.BaseNode.Config); + constructor(workspace: Blockly.WorkspaceSvg); /** - * Text content of the node label. - * @type {string} - * @package + * The workspace this toolbox is on. + * @type {!Blockly.WorkspaceSvg} + * @protected */ - content: string; + workspace_: Blockly.WorkspaceSvg; /** - * @type {string} - * @package + * The JSON describing the contents of this toolbox. + * @type {!Blockly.utils.toolbox.ToolboxInfo} + * @protected */ - iconClass: string; + toolboxDef_: Blockly.utils.toolbox.ToolboxInfo; /** - * @type {string} - * @package + * The html container for the toolbox. + * @type {?Element} */ - expandedIconClass: string; + HtmlDiv: Element; /** - * The configuration for the tree. - * @type {!Blockly.tree.BaseNode.Config} + * The html container for the contents of a toolbox. + * @type {?Element} * @protected */ - config_: Blockly.tree.BaseNode.Config; + contentsDiv_: Element; /** - * @type {Blockly.tree.TreeControl} + * The list of items in the toolbox. + * @type {!Array} * @protected */ - tree: Blockly.tree.TreeControl; + contents_: Blockly.IToolboxItem[]; /** - * Whether the tree item is selected. - * @type {boolean} + * The width of the toolbox. + * @type {number} * @protected */ - selected_: boolean; + width_: number; /** - * Whether the tree node is expanded. - * @type {boolean} + * The height of the toolbox. + * @type {number} * @protected */ - expanded_: boolean; + height_: number; /** - * Adds roles and states. - * @protected + * Is RTL vs LTR. + * @type {boolean} */ - initAccessibility(): void; + RTL: boolean; /** - * Appends a node as a child to the current node. - * @param {Blockly.tree.BaseNode} child The child to add. - * @package + * A map from toolbox item IDs to toolbox items. + * @type {!Object} + * @protected */ - add(child: Blockly.tree.BaseNode): void; + contentMap_: { [key: string]: Blockly.IToolboxItem }; /** - * Returns the tree. - * @return {?Blockly.tree.TreeControl} tree - * @protected + * Position of the toolbox and flyout relative to the workspace. + * @type {!Blockly.utils.toolbox.Position} */ - getTree(): Blockly.tree.TreeControl; + toolboxPosition: Blockly.utils.toolbox.Position; /** - * Returns the depth of the node in the tree. Should not be overridden. - * @return {number} The non-negative depth of this node (the root is zero). + * The currently selected item. + * @type {?Blockly.ISelectableToolboxItem} * @protected */ - getDepth(): number; + selectedItem_: Blockly.ISelectableToolboxItem; /** - * Returns true if the node is a descendant of this node. - * @param {Blockly.Component} node The node to check. - * @return {boolean} True if the node is a descendant of this node, false - * otherwise. + * The previously selected item. + * @type {?Blockly.ISelectableToolboxItem} * @protected */ - contains(node: Blockly.Component): boolean; + previouslySelectedItem_: Blockly.ISelectableToolboxItem; /** - * This is re-defined here to indicate to the Closure Compiler the correct - * child return type. - * @param {number} index 0-based index. - * @return {Blockly.tree.BaseNode} The child at the given index; null if none. + * Array holding info needed to unbind event handlers. + * Used for disposing. + * Ex: [[node, name, func], [node, name, func]]. + * @type {!Array} * @protected */ - getChildAt(index: number): Blockly.tree.BaseNode; + boundEvents_: Blockly.EventData[]; /** - * Returns the children of this node. - * @return {!Array.} The children. - * @package + * Initializes the toolbox + * @public */ - getChildren(): Blockly.tree.BaseNode[]; + init(): void; /** - * Returns the node's parent, if any. - * @return {?Blockly.tree.BaseNode} The parent node. + * Creates the dom for the toolbox. + * @param {!Blockly.WorkspaceSvg} workspace The workspace this toolbox is on. + * @return {!Element} The html container for the toolbox. * @protected */ - getParent(): Blockly.tree.BaseNode; + createDom_(workspace: Blockly.WorkspaceSvg): Element; /** - * @return {Blockly.tree.BaseNode} The previous sibling of this node. + * Creates the container div for the toolbox. + * @return {!Element} The html container for the toolbox. * @protected */ - getPreviousSibling(): Blockly.tree.BaseNode; + createContainer_(): Element; /** - * @return {Blockly.tree.BaseNode} The next sibling of this node. + * Creates the container for all the contents in the toolbox. + * @return {!Element} The html container for the toolbox contents. * @protected */ - getNextSibling(): Blockly.tree.BaseNode; + createContentsContainer_(): Element; /** - * @return {boolean} Whether the node is the last sibling. + * Adds event listeners to the toolbox container div. + * @param {!Element} container The html container for the toolbox. + * @param {!Element} contentsContainer The html container for the contents + * of the toolbox. * @protected */ - isLastSibling(): boolean; + attachEvents_(container: Element, contentsContainer: Element): void; /** - * @return {boolean} Whether the node is selected. + * Handles on click events for when the toolbox or toolbox items are clicked. + * @param {!Event} e Click event to handle. * @protected */ - isSelected(): boolean; + onClick_(e: Event): void; /** - * Selects the node. + * Handles key down events for the toolbox. + * @param {!KeyboardEvent} e The key down event. * @protected */ - select(): void; + onKeyDown_(e: KeyboardEvent): void; /** - * Called from the tree to instruct the node change its selection state. - * @param {boolean} selected The new selection state. + * Creates the flyout based on the toolbox layout. + * @return {!Blockly.IFlyout} The flyout for the toolbox. + * @throws {Error} If missing a require for `Blockly.HorizontalFlyout`, + * `Blockly.VerticalFlyout`, and no flyout plugin is specified. * @protected */ - setSelected(selected: boolean): void; + createFlyout_(): Blockly.IFlyout; /** - * Sets the node to be expanded. - * @param {boolean} expanded Whether to expand or close the node. + * Fills the toolbox with new toolbox items and removes any old contents. + * @param {!Blockly.utils.toolbox.ToolboxInfo} toolboxDef Object holding information + * for creating a toolbox. * @package */ - setExpanded(expanded: boolean): void; + render(toolboxDef: Blockly.utils.toolbox.ToolboxInfo): void; /** - * Used to notify a node of that we have expanded it. - * Can be overridden by subclasses, see Blockly.tree.TreeNode. + * Adds all the toolbox items to the toolbox. + * @param {!Array} toolboxDef Array + * holding objects containing information on the contents of the toolbox. * @protected */ - doNodeExpanded(): void; + renderContents_(toolboxDef: Blockly.utils.toolbox.ToolboxItemInfo[]): void; /** - * Used to notify a node that we have collapsed it. - * Can be overridden by subclasses, see Blockly.tree.TreeNode. + * Adds an item to the toolbox. + * @param {!Blockly.IToolboxItem} toolboxItem The item in the toolbox. * @protected */ - doNodeCollapsed(): void; + addToolboxItem_(toolboxItem: Blockly.IToolboxItem): void; /** - * Toggles the expanded state of the node. - * @protected + * Gets the items in the toolbox. + * @return {!Array} The list of items in the toolbox. + * @public */ - toggle(): void; + getToolboxItems(): Blockly.IToolboxItem[]; /** - * Creates HTML Element for the node. - * @return {!Element} HTML element - * @protected + * Adds a style on the toolbox. Usually used to change the cursor. + * @param {string} style The name of the class to add. + * @package */ - toDom(): Element; + addStyle(style: string): void; /** - * Creates row with icon and label dom. - * @return {!Element} The HTML element for the row. - * @protected + * Removes a style from the toolbox. Usually used to change the cursor. + * @param {string} style The name of the class to remove. + * @package */ - getRowDom(): Element; + removeStyle(style: string): void; /** - * Adds the selected class name to the default row class name if node is - * selected. - * @return {string} The class name for the row. - * @protected + * Return the deletion rectangle for this toolbox. + * @return {?Blockly.utils.Rect} Rectangle in which to delete. + * @public */ - getRowClassName(): string; + getClientRect(): Blockly.utils.Rect; /** - * @return {!Element} The HTML element for the label. - * @protected + * Gets the toolbox item with the given id. + * @param {string} id The id of the toolbox item. + * @return {?Blockly.IToolboxItem} The toolbox item with the given id, or null if + * no item exists. + * @public */ - getLabelDom(): Element; + getToolboxItemById(id: string): Blockly.IToolboxItem; /** - * @return {!Element} The HTML for the icon. - * @protected + * Gets the width of the toolbox. + * @return {number} The width of the toolbox. + * @public */ - getIconDom(): Element; + getWidth(): number; /** - * Gets the calculated icon class. - * @protected + * Gets the height of the toolbox. + * @return {number} The width of the toolbox. + * @public */ - getCalculatedIconClass(): void; + getHeight(): number; /** - * Gets a string containing the x and y position of the node's background. - * @return {string} The background position style value. - * @protected + * Gets the toolbox flyout. + * @return {?Blockly.IFlyout} The toolbox flyout. + * @public */ - getBackgroundPosition(): string; + getFlyout(): Blockly.IFlyout; /** - * @return {Element} The row is the div that is used to draw the node without - * the children. - * @package + * Gets the workspace for the toolbox. + * @return {!Blockly.WorkspaceSvg} The parent workspace for the toolbox. + * @public */ - getRowElement(): Element; + getWorkspace(): Blockly.WorkspaceSvg; /** - * @return {Element} The icon element. - * @protected + * Gets the selected item. + * @return {?Blockly.ISelectableToolboxItem} The selected item, or null if no item is + * currently selected. + * @public */ - getIconElement(): Element; + getSelectedItem(): Blockly.ISelectableToolboxItem; /** - * @return {Element} The label element. - * @protected + * Gets the previously selected item. + * @return {?Blockly.ISelectableToolboxItem} The previously selected item, or null if no + * item was previously selected. + * @public */ - getLabelElement(): Element; + getPreviouslySelectedItem(): Blockly.ISelectableToolboxItem; /** - * @return {Element} The div containing the children. - * @protected + * Gets whether or not the toolbox is horizontal. + * @return {boolean} True if the toolbox is horizontal, false if the toolbox is + * vertical. + * @public */ - getChildrenElement(): Element; + isHorizontal(): boolean; /** - * Updates the row styles. - * @protected + * Positions the toolbox based on whether it is a horizontal toolbox and whether + * the workspace is in rtl. + * @public */ - updateRow(): void; + position(): void; /** - * Updates the expand icon of the node. - * @protected + * Handles resizing the toolbox when a toolbox item resizes. + * @package */ - updateExpandIcon(): void; + handleToolboxItemResize(): void; /** - * Handles a click event. - * @param {!Event} e The browser event. - * @protected + * Unhighlights any previously selected item. + * @public */ - onClick_(e: Event): void; + clearSelection(): void; /** - * Handles a key down event. - * @param {!Event} e The browser event. - * @return {boolean} The handled value. - * @protected + * Updates the category colours and background colour of selected categories. + * @package */ - onKeyDown(e: Event): boolean; + refreshTheme(): void; /** - * Select the next node. - * @return {boolean} True if the action has been handled, false otherwise. - * @package + * Updates the flyout's content without closing it. Should be used in response + * to a change in one of the dynamic categories, such as variables or + * procedures. + * @public */ - selectNext(): boolean; + refreshSelection(): void; /** - * Select the previous node. - * @return {boolean} True if the action has been handled, false otherwise. - * @package + * Shows or hides the toolbox. + * @param {boolean} isVisible True if toolbox should be visible. + * @public */ - selectPrevious(): boolean; + setVisible(isVisible: boolean): void; /** - * Select the parent node or collapse the current node. - * @return {boolean} True if the action has been handled, false otherwise. - * @package + * Sets the given item as selected. + * No-op if the item is not selectable. + * @param {?Blockly.IToolboxItem} newItem The toolbox item to select. + * @public */ - selectParent(): boolean; + setSelectedItem(newItem: Blockly.IToolboxItem): void; /** - * Expand the current node if it's not already expanded, or select the - * child node. - * @return {boolean} True if the action has been handled, false otherwise. - * @package - */ - selectChild(): boolean; - - /** - * @return {Blockly.tree.BaseNode} The last shown descendant. + * Decides whether the old item should be deselected. + * @param {?Blockly.ISelectableToolboxItem} oldItem The previously selected + * toolbox item. + * @param {?Blockly.ISelectableToolboxItem} newItem The newly selected toolbox + * item. + * @return {boolean} True if the old item should be deselected, false otherwise. * @protected */ - getLastShownDescendant(): Blockly.tree.BaseNode; + shouldDeselectItem_(oldItem: Blockly.ISelectableToolboxItem, newItem: Blockly.ISelectableToolboxItem): boolean; /** - * @return {Blockly.tree.BaseNode} The next node to show or null if there isn't - * a next node to show. + * Decides whether the new item should be selected. + * @param {?Blockly.ISelectableToolboxItem} oldItem The previously selected + * toolbox item. + * @param {?Blockly.ISelectableToolboxItem} newItem The newly selected toolbox + * item. + * @return {boolean} True if the new item should be selected, false otherwise. * @protected */ - getNextShownNode(): Blockly.tree.BaseNode; + shouldSelectItem_(oldItem: Blockly.ISelectableToolboxItem, newItem: Blockly.ISelectableToolboxItem): boolean; /** - * @return {Blockly.tree.BaseNode} The previous node to show. + * Deselects the given item, marks it as unselected, and updates aria state. + * @param {!Blockly.ISelectableToolboxItem} item The previously selected + * toolbox item which should be deselected. * @protected */ - getPreviousShownNode(): Blockly.tree.BaseNode; + deselectItem_(item: Blockly.ISelectableToolboxItem): void; /** - * Internal method that is used to set the tree control on the node. - * @param {Blockly.tree.TreeControl} tree The tree control. + * Selects the given item, marks it selected, and updates aria state. + * @param {?Blockly.ISelectableToolboxItem} oldItem The previously selected + * toolbox item. + * @param {!Blockly.ISelectableToolboxItem} newItem The newly selected toolbox + * item. * @protected */ - setTreeInternal(tree: Blockly.tree.TreeControl): void; - } - -} - -declare module Blockly.tree.BaseNode { - - /** - * The config type for the tree. - * @typedef {{ - * indentWidth:number, - * cssRoot:string, - * cssHideRoot:string, - * cssTreeRow:string, - * cssItemLabel:string, - * cssTreeIcon:string, - * cssExpandedFolderIcon:string, - * cssCollapsedFolderIcon:string, - * cssFileIcon:string, - * cssSelectedRow:string - * }} - */ - interface Config { - indentWidth: number; - cssRoot: string; - cssHideRoot: string; - cssTreeRow: string; - cssItemLabel: string; - cssTreeIcon: string; - cssExpandedFolderIcon: string; - cssCollapsedFolderIcon: string; - cssFileIcon: string; - cssSelectedRow: string - } - - /** - * Map of nodes in existence. Needed to route events to the appropriate nodes. - * Nodes are added to the map at {@link #enterDocument} time and removed at - * {@link #exitDocument} time. - * @type {Object} - * @protected - */ - var allNodes: Object; -} - - -declare module Blockly.tree { - - class TreeControl extends TreeControl__Class { } - /** Fake class which should be extended to avoid inheriting static properties */ - class TreeControl__Class extends Blockly.tree.BaseNode__Class { - - /** - * An extension of the TreeControl object in closure that provides - * a way to view a hierarchical set of data. - * Similar to Closure's goog.ui.tree.TreeControl - * - * @param {Blockly.Toolbox} toolbox The parent toolbox for this tree. - * @param {!Blockly.tree.BaseNode.Config} config The configuration for the tree. - * @constructor - * @extends {Blockly.tree.BaseNode} - */ - constructor(toolbox: Blockly.Toolbox, config: Blockly.tree.BaseNode.Config); - - /** - * Returns the associated toolbox. - * @return {Blockly.Toolbox} The toolbox. - * @package - */ - getToolbox(): Blockly.Toolbox; - - /** - * Sets the selected item. - * @param {Blockly.tree.BaseNode} node The item to select. - * @package - */ - setSelectedItem(node: Blockly.tree.BaseNode): void; + selectItem_(oldItem: Blockly.ISelectableToolboxItem, newItem: Blockly.ISelectableToolboxItem): void; /** - * Set the handler that's triggered before a node is selected. - * @param {function(Blockly.tree.BaseNode):boolean} fn The handler - * @package + * Selects the toolbox item by its position in the list of toolbox items. + * @param {number} position The position of the item to select. + * @public */ - onBeforeSelected(fn: { (_0: Blockly.tree.BaseNode): boolean }): void; + selectItemByPosition(position: number): void; /** - * Set the handler that's triggered after a node is selected. - * @param {function( - * Blockly.tree.BaseNode, Blockly.tree.BaseNode):?} fn The handler - * @package + * Decides whether to hide or show the flyout depending on the selected item. + * @param {?Blockly.ISelectableToolboxItem} oldItem The previously selected toolbox item. + * @param {?Blockly.ISelectableToolboxItem} newItem The newly selected toolbox item. + * @protected */ - onAfterSelected(fn: { (_0: Blockly.tree.BaseNode, _1: Blockly.tree.BaseNode): any }): void; + updateFlyout_(oldItem: Blockly.ISelectableToolboxItem, newItem: Blockly.ISelectableToolboxItem): void; /** - * Returns the selected item. - * @return {Blockly.tree.BaseNode} The currently selected item. + * Handles the given Blockly action on a toolbox. + * This is only triggered when keyboard accessibility mode is enabled. + * @param {!Blockly.Action} action The action to be handled. + * @return {boolean} True if the field handled the action, false otherwise. * @package */ - getSelectedItem(): Blockly.tree.BaseNode; + onBlocklyAction(action: Blockly.Action): boolean; /** - * Creates a new tree node using the same config as the root. - * @param {string=} opt_content The content of the node label. - * @return {!Blockly.tree.TreeNode} The new item. - * @package + * Disposes of this toolbox. + * @public */ - createNode(opt_content?: string): Blockly.tree.TreeNode; + dispose(): void; } } -declare module Blockly.tree { +declare module Blockly { - class TreeNode extends TreeNode__Class { } + class ToolboxItem extends ToolboxItem__Class { } /** Fake class which should be extended to avoid inheriting static properties */ - class TreeNode__Class extends Blockly.tree.BaseNode__Class { + class ToolboxItem__Class implements Blockly.IToolboxItem { /** - * A single node in the tree, customized for Blockly's UI. - * Similar to Closure's goog.ui.tree.TreeNode - * - * @param {Blockly.Toolbox} toolbox The parent toolbox for this tree. - * @param {string} content The content of the node label treated as - * plain-text and will be HTML escaped. - * @param {!Blockly.tree.BaseNode.Config} config The configuration for the tree. + * Class for an item in the toolbox. + * @param {!Blockly.utils.toolbox.ToolboxItemInfo} toolboxItemDef The JSON defining the + * toolbox item. + * @param {!Blockly.IToolbox} toolbox The toolbox that holds the toolbox item. + * @param {Blockly.ICollapsibleToolboxItem=} opt_parent The parent toolbox item + * or null if the category does not have a parent. * @constructor - * @extends {Blockly.tree.BaseNode} + * @implements {Blockly.IToolboxItem} */ - constructor(toolbox: Blockly.Toolbox, content: string, config: Blockly.tree.BaseNode.Config); + constructor(toolboxItemDef: Blockly.utils.toolbox.ToolboxItemInfo, toolbox: Blockly.IToolbox, opt_parent?: Blockly.ICollapsibleToolboxItem); /** - * Set the handler that's triggered when the size of node has changed. - * @param {function():?} fn The handler - * @package + * The id for the category. + * @type {string} + * @protected */ - onSizeChanged(fn: { (): any }): void; - } - -} - - -declare module Blockly.blockRendering { - - class Measurable extends Measurable__Class { } - /** Fake class which should be extended to avoid inheriting static properties */ - class Measurable__Class { + id_: string; /** - * The base class to represent a part of a block that takes up space during - * rendering. The constructor for each non-spacer Measurable records the size - * of the block element (e.g. field, statement input). - * @param {!Blockly.blockRendering.ConstantProvider} constants The rendering - * constants provider. - * @package - * @constructor + * The parent of the category. + * @type {?Blockly.ICollapsibleToolboxItem} + * @protected */ - constructor(constants: Blockly.blockRendering.ConstantProvider); + parent_: Blockly.ICollapsibleToolboxItem; /** - * The renderer's constant provider. - * @type {!Blockly.blockRendering.ConstantProvider} + * The level that the category is nested at. + * @type {number} * @protected */ - constants_: Blockly.blockRendering.ConstantProvider; - } - -} - - -declare module Blockly.blockRendering { - - class Connection extends Connection__Class { } - /** Fake class which should be extended to avoid inheriting static properties */ - class Connection__Class extends Blockly.blockRendering.Measurable__Class { + level_: number; /** - * The base class to represent a connection and the space that it takes up on - * the block. - * @param {!Blockly.blockRendering.ConstantProvider} constants The rendering - * constants provider. - * @param {!Blockly.RenderedConnection} connectionModel The connection object on - * the block that this represents. - * @package - * @constructor - * @extends {Blockly.blockRendering.Measurable} + * The JSON definition of the toolbox item. + * @type {!Blockly.utils.toolbox.ToolboxItemInfo} + * @protected */ - constructor(constants: Blockly.blockRendering.ConstantProvider, connectionModel: Blockly.RenderedConnection); - } - - - class OutputConnection extends OutputConnection__Class { } - /** Fake class which should be extended to avoid inheriting static properties */ - class OutputConnection__Class extends Blockly.blockRendering.Connection__Class { + toolboxItemDef_: Blockly.utils.toolbox.ToolboxItemInfo; /** - * An object containing information about the space an output connection takes - * up during rendering. - * @param {!Blockly.blockRendering.ConstantProvider} constants The rendering - * constants provider. - * @param {Blockly.RenderedConnection} connectionModel The connection object on - * the block that this represents. - * @package - * @constructor - * @extends {Blockly.blockRendering.Connection} + * The toolbox this category belongs to. + * @type {!Blockly.IToolbox} + * @protected */ - constructor(constants: Blockly.blockRendering.ConstantProvider, connectionModel: Blockly.RenderedConnection); - } - - - class PreviousConnection extends PreviousConnection__Class { } - /** Fake class which should be extended to avoid inheriting static properties */ - class PreviousConnection__Class extends Blockly.blockRendering.Connection__Class { + parentToolbox_: Blockly.IToolbox; /** - * An object containing information about the space a previous connection takes - * up during rendering. - * @param {!Blockly.blockRendering.ConstantProvider} constants The rendering - * constants provider. - * @param {Blockly.RenderedConnection} connectionModel The connection object on - * the block that this represents. - * @package - * @constructor - * @extends {Blockly.blockRendering.Connection} + * The workspace of the parent toolbox. + * @type {!Blockly.WorkspaceSvg} + * @protected */ - constructor(constants: Blockly.blockRendering.ConstantProvider, connectionModel: Blockly.RenderedConnection); - } - - - class NextConnection extends NextConnection__Class { } - /** Fake class which should be extended to avoid inheriting static properties */ - class NextConnection__Class extends Blockly.blockRendering.Connection__Class { + workspace_: Blockly.WorkspaceSvg; /** - * An object containing information about the space a next connection takes - * up during rendering. - * @param {!Blockly.blockRendering.ConstantProvider} constants The rendering - * constants provider. - * @param {Blockly.RenderedConnection} connectionModel The connection object on - * the block that this represents. - * @package - * @constructor - * @extends {Blockly.blockRendering.Connection} + * Initializes the toolbox item. + * This includes creating the dom and updating the state of any items based + * on the info object. + * @public */ - constructor(constants: Blockly.blockRendering.ConstantProvider, connectionModel: Blockly.RenderedConnection); - } + init(): void; -} - - -declare module Blockly.blockRendering { - - class InputConnection extends InputConnection__Class { } - /** Fake class which should be extended to avoid inheriting static properties */ - class InputConnection__Class extends Blockly.blockRendering.Connection__Class { + /** + * Gets the div for the toolbox item. + * @return {?Element} The div for the toolbox item. + * @public + */ + getDiv(): Element; /** - * The base class to represent an input that takes up space on a block - * during rendering - * @param {!Blockly.blockRendering.ConstantProvider} constants The rendering - * constants provider. - * @param {!Blockly.Input} input The input to measure and store information for. - * @package - * @constructor - * @extends {Blockly.blockRendering.Connection} + * Gets a unique identifier for this toolbox item. + * @return {string} The id for the toolbox item. + * @public */ - constructor(constants: Blockly.blockRendering.ConstantProvider, input: Blockly.Input); - } + getId(): string; - - class InlineInput extends InlineInput__Class { } - /** Fake class which should be extended to avoid inheriting static properties */ - class InlineInput__Class extends Blockly.blockRendering.InputConnection__Class { + /** + * Gets the parent if the toolbox item is nested. + * @return {?Blockly.IToolboxItem} The parent toolbox item, or null if + * this toolbox item is not nested. + * @public + */ + getParent(): Blockly.IToolboxItem; /** - * An object containing information about the space an inline input takes up - * during rendering - * @param {!Blockly.blockRendering.ConstantProvider} constants The rendering - * constants provider. - * @param {!Blockly.Input} input The inline input to measure and store - * information for. + * Gets the nested level of the category. + * @return {number} The nested level of the category. * @package - * @constructor - * @extends {Blockly.blockRendering.InputConnection} */ - constructor(constants: Blockly.blockRendering.ConstantProvider, input: Blockly.Input); - } - - - class StatementInput extends StatementInput__Class { } - /** Fake class which should be extended to avoid inheriting static properties */ - class StatementInput__Class extends Blockly.blockRendering.InputConnection__Class { + getLevel(): number; /** - * An object containing information about the space a statement input takes up - * during rendering - * @param {!Blockly.blockRendering.ConstantProvider} constants The rendering - * constants provider. - * @param {!Blockly.Input} input The statement input to measure and store - * information for. - * @package - * @constructor - * @extends {Blockly.blockRendering.InputConnection} + * Whether the toolbox item is selectable. + * @return {boolean} True if the toolbox item can be selected. + * @public */ - constructor(constants: Blockly.blockRendering.ConstantProvider, input: Blockly.Input); - } + isSelectable(): boolean; - - class ExternalValueInput extends ExternalValueInput__Class { } - /** Fake class which should be extended to avoid inheriting static properties */ - class ExternalValueInput__Class extends Blockly.blockRendering.InputConnection__Class { + /** + * Whether the toolbox item is collapsible. + * @return {boolean} True if the toolbox item is collapsible. + * @public + */ + isCollapsible(): boolean; /** - * An object containing information about the space an external value input - * takes up during rendering - * @param {!Blockly.blockRendering.ConstantProvider} constants The rendering - * constants provider. - * @param {!Blockly.Input} input The external value input to measure and store - * information for. - * @package - * @constructor - * @extends {Blockly.blockRendering.InputConnection} + * Dispose of this toolbox item. No-op by default. + * @public */ - constructor(constants: Blockly.blockRendering.ConstantProvider, input: Blockly.Input); + dispose(): void; } } -declare module Blockly.blockRendering { +declare module Blockly.utils.aria { - class Icon extends Icon__Class { } - /** Fake class which should be extended to avoid inheriting static properties */ - class Icon__Class extends Blockly.blockRendering.Measurable__Class { - - /** - * An object containing information about the space an icon takes up during - * rendering - * @param {!Blockly.blockRendering.ConstantProvider} constants The rendering - * constants provider. - * @param {!Blockly.Icon} icon The icon to measure and store information for. - * @package - * @constructor - * @extends {Blockly.blockRendering.Measurable} - */ - constructor(constants: Blockly.blockRendering.ConstantProvider, icon: Blockly.Icon); - } - + /** + * ARIA role values. + * Copied from Closure's goog.a11y.aria.Role + * @enum {string} + */ + enum Role { GRID, GRIDCELL, GROUP, LISTBOX, MENU, MENUITEM, MENUITEMCHECKBOX, OPTION, PRESENTATION, ROW, TREE, TREEITEM } - class JaggedEdge extends JaggedEdge__Class { } - /** Fake class which should be extended to avoid inheriting static properties */ - class JaggedEdge__Class extends Blockly.blockRendering.Measurable__Class { - - /** - * An object containing information about the jagged edge of a collapsed block - * takes up during rendering - * @param {!Blockly.blockRendering.ConstantProvider} constants The rendering - * constants provider. - * @package - * @constructor - * @extends {Blockly.blockRendering.Measurable} - */ - constructor(constants: Blockly.blockRendering.ConstantProvider); - } - + /** + * ARIA states and properties. + * Copied from Closure's goog.a11y.aria.State + * @enum {string} + */ + enum State { ACTIVEDESCENDANT, COLCOUNT, DISABLED, EXPANDED, INVALID, LABEL, LABELLEDBY, LEVEL, ORIENTATION, POSINSET, ROWCOUNT, SELECTED, SETSIZE, VALUEMAX, VALUEMIN } - class Field extends Field__Class { } - /** Fake class which should be extended to avoid inheriting static properties */ - class Field__Class extends Blockly.blockRendering.Measurable__Class { - - /** - * An object containing information about the space a field takes up during - * rendering - * @param {!Blockly.blockRendering.ConstantProvider} constants The rendering - * constants provider. - * @param {!Blockly.Field} field The field to measure and store information for. - * @param {!Blockly.Input} parentInput The parent input for the field. - * @package - * @constructor - * @extends {Blockly.blockRendering.Measurable} - */ - constructor(constants: Blockly.blockRendering.ConstantProvider, field: Blockly.Field, parentInput: Blockly.Input); - } - + /** + * Sets the role of an element. + * + * Similar to Closure's goog.a11y.aria + * + * @param {!Element} element DOM node to set role of. + * @param {!Blockly.utils.aria.Role} roleName Role name. + */ + function setRole(element: Element, roleName: Blockly.utils.aria.Role): void; - class Hat extends Hat__Class { } - /** Fake class which should be extended to avoid inheriting static properties */ - class Hat__Class extends Blockly.blockRendering.Measurable__Class { - - /** - * An object containing information about the space a hat takes up during - * rendering. - * @param {!Blockly.blockRendering.ConstantProvider} constants The rendering - * constants provider. - * @package - * @constructor - * @extends {Blockly.blockRendering.Measurable} - */ - constructor(constants: Blockly.blockRendering.ConstantProvider); - } - + /** + * Sets the state or property of an element. + * Copied from Closure's goog.a11y.aria + * @param {!Element} element DOM node where we set state. + * @param {!Blockly.utils.aria.State} stateName State attribute being set. + * Automatically adds prefix 'aria-' to the state name if the attribute is + * not an extra attribute. + * @param {string|boolean|number|!Array.} value Value + * for the state attribute. + */ + function setState(element: Element, stateName: Blockly.utils.aria.State, value: string|boolean|number|string[]): void; +} - class SquareCorner extends SquareCorner__Class { } - /** Fake class which should be extended to avoid inheriting static properties */ - class SquareCorner__Class extends Blockly.blockRendering.Measurable__Class { - - /** - * An object containing information about the space a square corner takes up - * during rendering. - * @param {!Blockly.blockRendering.ConstantProvider} constants The rendering - * constants provider. - * @param {string=} opt_position The position of this corner. - * @package - * @constructor - * @extends {Blockly.blockRendering.Measurable} - */ - constructor(constants: Blockly.blockRendering.ConstantProvider, opt_position?: string); - } - - class RoundCorner extends RoundCorner__Class { } - /** Fake class which should be extended to avoid inheriting static properties */ - class RoundCorner__Class extends Blockly.blockRendering.Measurable__Class { - - /** - * An object containing information about the space a rounded corner takes up - * during rendering. - * @param {!Blockly.blockRendering.ConstantProvider} constants The rendering - * constants provider. - * @param {string=} opt_position The position of this corner. - * @package - * @constructor - * @extends {Blockly.blockRendering.Measurable} - */ - constructor(constants: Blockly.blockRendering.ConstantProvider, opt_position?: string); - } - +declare module Blockly.utils.colour { - class InRowSpacer extends InRowSpacer__Class { } - /** Fake class which should be extended to avoid inheriting static properties */ - class InRowSpacer__Class extends Blockly.blockRendering.Measurable__Class { - - /** - * An object containing information about a spacer between two elements on a - * row. - * @param {!Blockly.blockRendering.ConstantProvider} constants The rendering - * constants provider. - * @param {number} width The width of the spacer. - * @package - * @constructor - * @extends {Blockly.blockRendering.Measurable} - */ - constructor(constants: Blockly.blockRendering.ConstantProvider, width: number); - } - + /** + * Parses a colour from a string. + * .parse('red') -> '#ff0000' + * .parse('#f00') -> '#ff0000' + * .parse('#ff0000') -> '#ff0000' + * .parse('0xff0000') -> '#ff0000' + * .parse('rgb(255, 0, 0)') -> '#ff0000' + * @param {string|number} str Colour in some CSS format. + * @return {?string} A string containing a hex representation of the colour, + * or null if can't be parsed. + */ + function parse(str: string|number): string; + + /** + * Converts a colour from RGB to hex representation. + * @param {number} r Amount of red, int between 0 and 255. + * @param {number} g Amount of green, int between 0 and 255. + * @param {number} b Amount of blue, int between 0 and 255. + * @return {string} Hex representation of the colour. + */ + function rgbToHex(r: number, g: number, b: number): string; + + /** + * Converts a colour to RGB. + * @param {string} colour String representing colour in any + * colour format ('#ff0000', 'red', '0xff000', etc). + * @return {!Array.} RGB representation of the colour. + */ + function hexToRgb(colour: string): number[]; + + /** + * Converts an HSV triplet to hex representation. + * @param {number} h Hue value in [0, 360]. + * @param {number} s Saturation value in [0, 1]. + * @param {number} v Brightness in [0, 255]. + * @return {string} Hex representation of the colour. + */ + function hsvToHex(h: number, s: number, v: number): string; + + /** + * Blend two colours together, using the specified factor to indicate the + * weight given to the first colour. + * @param {string} colour1 First colour. + * @param {string} colour2 Second colour. + * @param {number} factor The weight to be given to colour1 over colour2. + * Values should be in the range [0, 1]. + * @return {?string} Combined colour represented in hex. + */ + function blend(colour1: string, colour2: string, factor: number): string; + + /** + * A map that contains the 16 basic colour keywords as defined by W3C: + * https://www.w3.org/TR/2018/REC-css-color-3-20180619/#html4 + * The keys of this map are the lowercase "readable" names of the colours, + * while the values are the "hex" values. + * + * @type {!Object} + */ + var names: { [key: string]: string }; } -declare module Blockly.blockRendering { +declare module Blockly.utils { - class Row extends Row__Class { } + class Coordinate extends Coordinate__Class { } /** Fake class which should be extended to avoid inheriting static properties */ - class Row__Class { + class Coordinate__Class { /** - * An object representing a single row on a rendered block and all of its - * subcomponents. - * @param {!Blockly.blockRendering.ConstantProvider} constants The rendering - * constants provider. - * @package + * Class for representing coordinates and positions. + * @param {number} x Left. + * @param {number} y Top. + * @struct * @constructor */ - constructor(constants: Blockly.blockRendering.ConstantProvider); - - /** - * The type of this rendering object. - * @package - * @type {number} - */ - type: number; - - /** - * An array of elements contained in this row. - * @package - * @type {!Array.} - */ - elements: Blockly.blockRendering.Measurable[]; - - /** - * The height of the row. - * @package - * @type {number} - */ - height: number; + constructor(x: number, y: number); /** - * The width of the row, from the left edge of the block to the right. - * Does not include child blocks unless they are inline. - * @package + * X-value * @type {number} */ - width: number; + x: number; /** - * The minimum height of the row. - * @package + * Y-value * @type {number} */ - minHeight: number; + y: number; /** - * The minimum width of the row, from the left edge of the block to the right. - * Does not include child blocks unless they are inline. - * @package - * @type {number} + * Scales this coordinate by the given scale factor. + * @param {number} s The scale factor to use for both x and y dimensions. + * @return {!Blockly.utils.Coordinate} This coordinate after scaling. */ - minWidth: number; + scale(s: number): Blockly.utils.Coordinate; /** - * The width of the row, from the left edge of the block to the edge of the - * block or any connected child blocks. - * @package - * @type {number} + * Translates this coordinate by the given offsets. + * respectively. + * @param {number} tx The value to translate x by. + * @param {number} ty The value to translate y by. + * @return {!Blockly.utils.Coordinate} This coordinate after translating. */ - widthWithConnectedBlocks: number; - - /** - * The Y position of the row relative to the origin of the block's svg group. - * @package - * @type {number} - */ - yPos: number; - - /** - * The X position of the row relative to the origin of the block's svg group. - * @package - * @type {number} - */ - xPos: number; - - /** - * Whether the row has any external inputs. - * @package - * @type {boolean} - */ - hasExternalInput: boolean; - - /** - * Whether the row has any statement inputs. - * @package - * @type {boolean} - */ - hasStatement: boolean; - - /** - * Whether the row has any inline inputs. - * @package - * @type {boolean} - */ - hasInlineInput: boolean; - - /** - * Whether the row has any dummy inputs. - * @package - * @type {boolean} - */ - hasDummyInput: boolean; - - /** - * Whether the row has a jagged edge. - * @package - * @type {boolean} - */ - hasJaggedEdge: boolean; - - /** - * The renderer's constant provider. - * @type {!Blockly.blockRendering.ConstantProvider} - * @protected - */ - constants_: Blockly.blockRendering.ConstantProvider; - - /** - * Alignment of the row. - * @package - * @type {?number} - */ - align: number; - - /** - * Inspect all subcomponents and populate all size properties on the row. - * @package - */ - measure(): void; - - /** - * Get the last input on this row, if it has one. - * @return {Blockly.blockRendering.InputConnection} The last input on the row, - * or null. - * @package - */ - getLastInput(): Blockly.blockRendering.InputConnection; - - /** - * Determines whether this row should start with an element spacer. - * @return {boolean} Whether the row should start with a spacer. - * @package - */ - startsWithElemSpacer(): boolean; - - /** - * Determines whether this row should end with an element spacer. - * @return {boolean} Whether the row should end with a spacer. - * @package - */ - endsWithElemSpacer(): boolean; - - /** - * Convenience method to get the first spacer element on this row. - * @return {Blockly.blockRendering.InRowSpacer} The first spacer element on - * this row. - * @package - */ - getFirstSpacer(): Blockly.blockRendering.InRowSpacer; - - /** - * Convenience method to get the last spacer element on this row. - * @return {Blockly.blockRendering.InRowSpacer} The last spacer element on - * this row. - * @package - */ - getLastSpacer(): Blockly.blockRendering.InRowSpacer; - } - - - class TopRow extends TopRow__Class { } - /** Fake class which should be extended to avoid inheriting static properties */ - class TopRow__Class extends Blockly.blockRendering.Row__Class { - - /** - * An object containing information about what elements are in the top row of a - * block as well as sizing information for the top row. - * Elements in a top row can consist of corners, hats, spacers, and previous - * connections. - * After this constructor is called, the row will contain all non-spacer - * elements it needs. - * @param {!Blockly.blockRendering.ConstantProvider} constants The rendering - * constants provider. - * @package - * @constructor - * @extends {Blockly.blockRendering.Row} - */ - constructor(constants: Blockly.blockRendering.ConstantProvider); - - /** - * The starting point for drawing the row, in the y direction. - * This allows us to draw hats and similar shapes that don't start at the - * origin. Must be non-negative (see #2820). - * @package - * @type {number} - */ - capline: number; - - /** - * How much the row extends up above its capline. - * @type {number} - */ - ascenderHeight: number; - - /** - * Whether the block has a previous connection. - * @package - * @type {boolean} - */ - hasPreviousConnection: boolean; - - /** - * The previous connection on the block, if any. - * @type {Blockly.blockRendering.PreviousConnection} - */ - connection: Blockly.blockRendering.PreviousConnection; - - /** - * Returns whether or not the top row has a left square corner. - * @param {!Blockly.BlockSvg} block The block whose top row this represents. - * @return {boolean} Whether or not the top row has a left square corner. - */ - hasLeftSquareCorner(block: Blockly.BlockSvg): boolean; - - /** - * Returns whether or not the top row has a right square corner. - * @param {!Blockly.BlockSvg} _block The block whose top row this represents. - * @return {boolean} Whether or not the top row has a right square corner. - */ - hasRightSquareCorner(_block: Blockly.BlockSvg): boolean; - } + translate(tx: number, ty: number): Blockly.utils.Coordinate; + } +} - class BottomRow extends BottomRow__Class { } - /** Fake class which should be extended to avoid inheriting static properties */ - class BottomRow__Class extends Blockly.blockRendering.Row__Class { - - /** - * An object containing information about what elements are in the bottom row of - * a block as well as spacing information for the top row. - * Elements in a bottom row can consist of corners, spacers and next - * connections. - * @param {!Blockly.blockRendering.ConstantProvider} constants The rendering - * constants provider. - * @package - * @constructor - * @extends {Blockly.blockRendering.Row} - */ - constructor(constants: Blockly.blockRendering.ConstantProvider); - - /** - * Whether this row has a next connection. - * @package - * @type {boolean} - */ - hasNextConnection: boolean; - - /** - * The next connection on the row, if any. - * @package - * @type {Blockly.blockRendering.NextConnection} - */ - connection: Blockly.blockRendering.NextConnection; - - /** - * The amount that the bottom of the block extends below the horizontal edge, - * e.g. because of a next connection. Must be non-negative (see #2820). - * @package - * @type {number} - */ - descenderHeight: number; - - /** - * The Y position of the bottom edge of the block, relative to the origin - * of the block rendering. - * @type {number} - */ - baseline: number; - - /** - * Returns whether or not the bottom row has a left square corner. - * @param {!Blockly.BlockSvg} block The block whose bottom row this represents. - * @return {boolean} Whether or not the bottom row has a left square corner. - */ - hasLeftSquareCorner(block: Blockly.BlockSvg): boolean; - - /** - * Returns whether or not the bottom row has a right square corner. - * @param {!Blockly.BlockSvg} _block The block whose bottom row this represents. - * @return {boolean} Whether or not the bottom row has a right square corner. - */ - hasRightSquareCorner(_block: Blockly.BlockSvg): boolean; - } - +declare module Blockly.utils.Coordinate { - class SpacerRow extends SpacerRow__Class { } - /** Fake class which should be extended to avoid inheriting static properties */ - class SpacerRow__Class extends Blockly.blockRendering.Row__Class { - - /** - * An object containing information about a spacer between two rows. - * @param {!Blockly.blockRendering.ConstantProvider} constants The rendering - * constants provider. - * @param {number} height The height of the spacer. - * @param {number} width The width of the spacer. - * @package - * @constructor - * @extends {Blockly.blockRendering.Row} - */ - constructor(constants: Blockly.blockRendering.ConstantProvider, height: number, width: number); - } - + /** + * Compares coordinates for equality. + * @param {Blockly.utils.Coordinate} a A Coordinate. + * @param {Blockly.utils.Coordinate} b A Coordinate. + * @return {boolean} True iff the coordinates are equal, or if both are null. + */ + function equals(a: Blockly.utils.Coordinate, b: Blockly.utils.Coordinate): boolean; - class InputRow extends InputRow__Class { } - /** Fake class which should be extended to avoid inheriting static properties */ - class InputRow__Class extends Blockly.blockRendering.Row__Class { - - /** - * An object containing information about a row that holds one or more inputs. - * @param {!Blockly.blockRendering.ConstantProvider} constants The rendering - * constants provider. - * @package - * @constructor - * @extends {Blockly.blockRendering.Row} - */ - constructor(constants: Blockly.blockRendering.ConstantProvider); - - /** - * The total width of all blocks connected to this row. - * @type {number} - * @package - */ - connectedBlockWidths: number; - - /** - * Inspect all subcomponents and populate all size properties on the row. - * @package - */ - measure(): void; - } - -} + /** + * Returns the distance between two coordinates. + * @param {!Blockly.utils.Coordinate} a A Coordinate. + * @param {!Blockly.utils.Coordinate} b A Coordinate. + * @return {number} The distance between `a` and `b`. + */ + function distance(a: Blockly.utils.Coordinate, b: Blockly.utils.Coordinate): number; + /** + * Returns the magnitude of a coordinate. + * @param {!Blockly.utils.Coordinate} a A Coordinate. + * @return {number} The distance between the origin and `a`. + */ + function magnitude(a: Blockly.utils.Coordinate): number; -declare module Blockly.blockRendering { + /** + * Returns the difference between two coordinates as a new + * Blockly.utils.Coordinate. + * @param {!Blockly.utils.Coordinate|!SVGPoint} a An x/y coordinate. + * @param {!Blockly.utils.Coordinate|!SVGPoint} b An x/y coordinate. + * @return {!Blockly.utils.Coordinate} A Coordinate representing the difference + * between `a` and `b`. + */ + function difference(a: Blockly.utils.Coordinate|SVGPoint, b: Blockly.utils.Coordinate|SVGPoint): Blockly.utils.Coordinate; /** - * Types of rendering elements. - * @enum {number} + * Returns the sum of two coordinates as a new Blockly.utils.Coordinate. + * @param {!Blockly.utils.Coordinate|!SVGPoint} a An x/y coordinate. + * @param {!Blockly.utils.Coordinate|!SVGPoint} b An x/y coordinate. + * @return {!Blockly.utils.Coordinate} A Coordinate representing the sum of + * the two coordinates. */ - enum Types { NONE, FIELD, HAT, ICON, SPACER, BETWEEN_ROW_SPACER, IN_ROW_SPACER, EXTERNAL_VALUE_INPUT, INPUT, INLINE_INPUT, STATEMENT_INPUT, CONNECTION, PREVIOUS_CONNECTION, NEXT_CONNECTION, OUTPUT_CONNECTION, CORNER, LEFT_SQUARE_CORNER, LEFT_ROUND_CORNER, RIGHT_SQUARE_CORNER, RIGHT_ROUND_CORNER, JAGGED_EDGE, ROW, TOP_ROW, BOTTOM_ROW, INPUT_ROW } + function sum(a: Blockly.utils.Coordinate|SVGPoint, b: Blockly.utils.Coordinate|SVGPoint): Blockly.utils.Coordinate; } -declare module Blockly.blockRendering.Types { + +declare module Blockly.utils.deprecation { /** - * A Left Corner Union Type. - * @type {number} - * @const + * Warn developers that a function is deprecated. + * @param {string} functionName The name of the function. + * @param {string} deprecationDate The date when the function was deprecated. + * Prefer 'month yyyy' or 'quarter yyyy' format. + * @param {string} deletionDate The date when the function will be deleted, in + * the same format as the deprecation date. + * @param {string=} opt_use The name of a function to use instead, if any. * @package */ - var LEFT_CORNER: number; + function warn(functionName: string, deprecationDate: string, deletionDate: string, opt_use?: string): void; +} + + +declare module Blockly.utils.dom { /** - * A Right Corner Union Type. - * @type {number} + * Required name space for SVG elements. * @const - * @package */ - var RIGHT_CORNER: number; + var SVG_NS: any /*missing*/; /** - * Get the enum flag value of an existing type or register a new type. - * @param {!string} type The name of the type. - * @return {!number} The enum flag value associated with that type. - * @package + * Required name space for HTML elements. + * @const */ - function getType(type: string): number; + var HTML_NS: any /*missing*/; /** - * Whether a measurable stores information about a field. - * @param {!Blockly.blockRendering.Measurable} elem The element to check. - * @return {number} 1 if the object stores information about a field. - * @package + * Required name space for XLINK elements. + * @const */ - function isField(elem: Blockly.blockRendering.Measurable): number; + var XLINK_NS: any /*missing*/; /** - * Whether a measurable stores information about a hat. - * @param {!Blockly.blockRendering.Measurable} elem The element to check. - * @return {number} 1 if the object stores information about a hat. - * @package + * Node type constants. + * https://developer.mozilla.org/en-US/docs/Web/API/Node/nodeType + * @enum {number} */ - function isHat(elem: Blockly.blockRendering.Measurable): number; + enum NodeType { ELEMENT_NODE, TEXT_NODE, COMMENT_NODE, DOCUMENT_POSITION_CONTAINED_BY } /** - * Whether a measurable stores information about an icon. - * @param {!Blockly.blockRendering.Measurable} elem The element to check. - * @return {number} 1 if the object stores information about an icon. - * @package + * Helper method for creating SVG elements. + * @param {string|Blockly.utils.Svg} name Element's tag name. + * @param {!Object} attrs Dictionary of attribute names and values. + * @param {Element=} opt_parent Optional parent on which to append the element. + * @return {T} Newly created SVG element. The return type is {!SVGElement} if + * name is a string or a more specific type if it a member of + * Blockly.utils.Svg + * @template T */ - function isIcon(elem: Blockly.blockRendering.Measurable): number; + function createSvgElement(name: string|Blockly.utils.Svg, attrs: Object, opt_parent?: Element): T; /** - * Whether a measurable stores information about a spacer. - * @param {!Blockly.blockRendering.Measurable|!Blockly.blockRendering.Row} elem - * The element to check. - * @return {number} 1 if the object stores information about a spacer. - * @package + * Add a CSS class to a element. + * Similar to Closure's goog.dom.classes.add, except it handles SVG elements. + * @param {!Element} element DOM element to add class to. + * @param {string} className Name of class to add. + * @return {boolean} True if class was added, false if already present. */ - function isSpacer(elem: Blockly.blockRendering.Measurable|Blockly.blockRendering.Row): number; + function addClass(element: Element, className: string): boolean; /** - * Whether a measurable stores information about an in-row spacer. - * @param {!Blockly.blockRendering.Measurable} elem The element to check. - * @return {number} 1 if the object stores information about an - * in-row spacer. - * @package + * Removes multiple calsses from an element. + * @param {!Element} element DOM element to remove classes from. + * @param {string} classNames A string of one or multiple class names for an + * element. */ - function isInRowSpacer(elem: Blockly.blockRendering.Measurable): number; + function removeClasses(element: Element, classNames: string): void; /** - * Whether a measurable stores information about an input. - * @param {!Blockly.blockRendering.Measurable} elem The element to check. - * @return {number} 1 if the object stores information about an input. - * @package + * Remove a CSS class from a element. + * Similar to Closure's goog.dom.classes.remove, except it handles SVG elements. + * @param {!Element} element DOM element to remove class from. + * @param {string} className Name of class to remove. + * @return {boolean} True if class was removed, false if never present. */ - function isInput(elem: Blockly.blockRendering.Measurable): number; + function removeClass(element: Element, className: string): boolean; /** - * Whether a measurable stores information about an external input. - * @param {!Blockly.blockRendering.Measurable} elem The element to check. - * @return {number} 1 if the object stores information about an - * external input. - * @package + * Checks if an element has the specified CSS class. + * Similar to Closure's goog.dom.classes.has, except it handles SVG elements. + * @param {!Element} element DOM element to check. + * @param {string} className Name of class to check. + * @return {boolean} True if class exists, false otherwise. */ - function isExternalInput(elem: Blockly.blockRendering.Measurable): number; + function hasClass(element: Element, className: string): boolean; /** - * Whether a measurable stores information about an inline input. - * @param {!Blockly.blockRendering.Measurable} elem The element to check. - * @return {number} 1 if the object stores information about an - * inline input. - * @package + * Removes a node from its parent. No-op if not attached to a parent. + * @param {Node} node The node to remove. + * @return {Node} The node removed if removed; else, null. */ - function isInlineInput(elem: Blockly.blockRendering.Measurable): number; + function removeNode(node: Node): Node; /** - * Whether a measurable stores information about a statement input. - * @param {!Blockly.blockRendering.Measurable} elem The element to check. - * @return {number} 1 if the object stores information about a - * statement input. - * @package + * Insert a node after a reference node. + * Contrast with node.insertBefore function. + * @param {!Element} newNode New element to insert. + * @param {!Element} refNode Existing element to precede new node. */ - function isStatementInput(elem: Blockly.blockRendering.Measurable): number; + function insertAfter(newNode: Element, refNode: Element): void; /** - * Whether a measurable stores information about a previous connection. - * @param {!Blockly.blockRendering.Measurable} elem The element to check. - * @return {number} 1 if the object stores information about a - * previous connection. - * @package + * Whether a node contains another node. + * @param {!Node} parent The node that should contain the other node. + * @param {!Node} descendant The node to test presence of. + * @return {boolean} Whether the parent node contains the descendant node. */ - function isPreviousConnection(elem: Blockly.blockRendering.Measurable): number; + function containsNode(parent: Node, descendant: Node): boolean; /** - * Whether a measurable stores information about a next connection. - * @param {!Blockly.blockRendering.Measurable} elem The element to check. - * @return {number} 1 if the object stores information about a - * next connection. - * @package + * Sets the CSS transform property on an element. This function sets the + * non-vendor-prefixed and vendor-prefixed versions for backwards compatibility + * with older browsers. See https://caniuse.com/#feat=transforms2d + * @param {!Element} element Element to which the CSS transform will be applied. + * @param {string} transform The value of the CSS `transform` property. */ - function isNextConnection(elem: Blockly.blockRendering.Measurable): number; + function setCssTransform(element: Element, transform: string): void; /** - * Whether a measurable stores information about a previous or next connection. - * @param {!Blockly.blockRendering.Measurable} elem The element to check. - * @return {number} 1 if the object stores information about a previous or - * next connection. - * @package + * Start caching text widths. Every call to this function MUST also call + * stopTextWidthCache. Caches must not survive between execution threads. */ - function isPreviousOrNextConnection(elem: Blockly.blockRendering.Measurable): number; + function startTextWidthCache(): void; /** - * Whether a measurable stores information about a left round corner. - * @param {!Blockly.blockRendering.Measurable} elem The element to check. - * @return {number} 1 if the object stores information about a - * left round corner. - * @package + * Stop caching field widths. Unless caching was already on when the + * corresponding call to startTextWidthCache was made. */ - function isLeftRoundedCorner(elem: Blockly.blockRendering.Measurable): number; + function stopTextWidthCache(): void; /** - * Whether a measurable stores information about a right round corner. - * @param {!Blockly.blockRendering.Measurable} elem The element to check. - * @return {number} 1 if the object stores information about a - * right round corner. - * @package + * Gets the width of a text element, caching it in the process. + * @param {!Element} textElement An SVG 'text' element. + * @return {number} Width of element. */ - function isRightRoundedCorner(elem: Blockly.blockRendering.Measurable): number; + function getTextWidth(textElement: Element): number; /** - * Whether a measurable stores information about a left square corner. - * @param {!Blockly.blockRendering.Measurable} elem The element to check. - * @return {number} 1 if the object stores information about a - * left square corner. - * @package + * Gets the width of a text element using a faster method than `getTextWidth`. + * This method requires that we know the text element's font family and size in + * advance. Similar to `getTextWidth`, we cache the width we compute. + * @param {!Element} textElement An SVG 'text' element. + * @param {number} fontSize The font size to use. + * @param {string} fontWeight The font weight to use. + * @param {string} fontFamily The font family to use. + * @return {number} Width of element. */ - function isLeftSquareCorner(elem: Blockly.blockRendering.Measurable): number; + function getFastTextWidth(textElement: Element, fontSize: number, fontWeight: string, fontFamily: string): number; /** - * Whether a measurable stores information about a right square corner. - * @param {!Blockly.blockRendering.Measurable} elem The element to check. - * @return {number} 1 if the object stores information about a - * right square corner. - * @package + * Gets the width of a text element using a faster method than `getTextWidth`. + * This method requires that we know the text element's font family and size in + * advance. Similar to `getTextWidth`, we cache the width we compute. + * This method is similar to ``getFastTextWidth`` but expects the font size + * parameter to be a string. + * @param {!Element} textElement An SVG 'text' element. + * @param {string} fontSize The font size to use. + * @param {string} fontWeight The font weight to use. + * @param {string} fontFamily The font family to use. + * @return {number} Width of element. */ - function isRightSquareCorner(elem: Blockly.blockRendering.Measurable): number; + function getFastTextWidthWithSizeString(textElement: Element, fontSize: string, fontWeight: string, fontFamily: string): number; /** - * Whether a measurable stores information about a corner. - * @param {!Blockly.blockRendering.Measurable} elem The element to check. - * @return {number} 1 if the object stores information about a - * corner. - * @package + * Measure a font's metrics. The height and baseline values. + * @param {string} text Text to measure the font dimensions of. + * @param {string} fontSize The font size to use. + * @param {string} fontWeight The font weight to use. + * @param {string} fontFamily The font family to use. + * @return {{height: number, baseline: number}} Font measurements. */ - function isCorner(elem: Blockly.blockRendering.Measurable): number; + function measureFontMetrics(text: string, fontSize: string, fontWeight: string, fontFamily: string): { height: number; baseline: number }; +} - /** - * Whether a measurable stores information about a jagged edge. - * @param {!Blockly.blockRendering.Measurable} elem The element to check. - * @return {number} 1 if the object stores information about a jagged edge. - * @package - */ - function isJaggedEdge(elem: Blockly.blockRendering.Measurable): number; + +declare module Blockly.utils { /** - * Whether a measurable stores information about a row. - * @param {!Blockly.blockRendering.Row} row The row to check. - * @return {number} 1 if the object stores information about a row. - * @package + * Reference to the global object. + * + * More info on this implementation here: + * https://docs.google.com/document/d/1NAeW4Wk7I7FV0Y2tcUFvQdGMc89k2vdgSXInw8_nvCI/edit */ - function isRow(row: Blockly.blockRendering.Row): number; + var global: any /*missing*/; +} + + +declare module Blockly.utils.IdGenerator { /** - * Whether a measurable stores information about a between-row spacer. - * @param {!Blockly.blockRendering.Row} row The row to check. - * @return {number} 1 if the object stores information about a - * between-row spacer. - * @package + * Gets the next unique ID. + * IDs are compatible with the HTML4 id attribute restrictions: + * Use only ASCII letters, digits, '_', '-' and '.' + * @return {string} The next unique identifier. */ - function isBetweenRowSpacer(row: Blockly.blockRendering.Row): number; + function getNextUniqueId(): string; +} + + +declare module Blockly.utils { /** - * Whether a measurable stores information about a top row. - * @param {!Blockly.blockRendering.Row} row The row to check. - * @return {number} 1 if the object stores information about a top row. - * @package + * Key codes for common characters. + * + * Copied from Closure's goog.events.KeyCodes + * + * This list is not localized and therefore some of the key codes are not + * correct for non US keyboard layouts. See comments below. + * + * @enum {number} */ - function isTopRow(row: Blockly.blockRendering.Row): number; + enum KeyCodes { WIN_KEY_FF_LINUX, MAC_ENTER, BACKSPACE, TAB, NUM_CENTER, ENTER, SHIFT, CTRL, ALT, PAUSE, CAPS_LOCK, ESC, SPACE, PAGE_UP, PAGE_DOWN, END, HOME, LEFT, UP, RIGHT, DOWN, PLUS_SIGN, PRINT_SCREEN, INSERT, DELETE, ZERO, ONE, TWO, THREE, FOUR, FIVE, SIX, SEVEN, EIGHT, NINE, FF_SEMICOLON, FF_EQUALS, FF_DASH, FF_HASH, QUESTION_MARK, AT_SIGN, A, B, C, D, E, F, G, H, I, J, K, L, M, N, O, P, Q, R, S, T, U, V, W, X, Y, Z, META, WIN_KEY_RIGHT, CONTEXT_MENU, NUM_ZERO, NUM_ONE, NUM_TWO, NUM_THREE, NUM_FOUR, NUM_FIVE, NUM_SIX, NUM_SEVEN, NUM_EIGHT, NUM_NINE, NUM_MULTIPLY, NUM_PLUS, NUM_MINUS, NUM_PERIOD, NUM_DIVISION, F1, F2, F3, F4, F5, F6, F7, F8, F9, F10, F11, F12, NUMLOCK, SCROLL_LOCK, FIRST_MEDIA_KEY, LAST_MEDIA_KEY, SEMICOLON, DASH, EQUALS, COMMA, PERIOD, SLASH, APOSTROPHE, TILDE, SINGLE_QUOTE, OPEN_SQUARE_BRACKET, BACKSLASH, CLOSE_SQUARE_BRACKET, WIN_KEY, MAC_FF_META, MAC_WK_CMD_LEFT, MAC_WK_CMD_RIGHT, WIN_IME, VK_NONAME, PHANTOM } +} + + +declare module Blockly.utils.math { /** - * Whether a measurable stores information about a bottom row. - * @param {!Blockly.blockRendering.Row} row The row to check. - * @return {number} 1 if the object stores information about a bottom row. - * @package + * Converts degrees to radians. + * Copied from Closure's goog.math.toRadians. + * @param {number} angleDegrees Angle in degrees. + * @return {number} Angle in radians. */ - function isBottomRow(row: Blockly.blockRendering.Row): number; + function toRadians(angleDegrees: number): number; /** - * Whether a measurable stores information about a top or bottom row. - * @param {!Blockly.blockRendering.Row} row The row to check. - * @return {number} 1 if the object stores information about a top or - * bottom row. - * @package + * Converts radians to degrees. + * Copied from Closure's goog.math.toDegrees. + * @param {number} angleRadians Angle in radians. + * @return {number} Angle in degrees. */ - function isTopOrBottomRow(row: Blockly.blockRendering.Row): number; + function toDegrees(angleRadians: number): number; /** - * Whether a measurable stores information about an input row. - * @param {!Blockly.blockRendering.Row} row The row to check. - * @return {number} 1 if the object stores information about an input row. - * @package + * Clamp the provided number between the lower bound and the upper bound. + * @param {number} lowerBound The desired lower bound. + * @param {number} number The number to clamp. + * @param {number} upperBound The desired upper bound. + * @return {number} The clamped number. */ - function isInputRow(row: Blockly.blockRendering.Row): number; + function clamp(lowerBound: number, number: number, upperBound: number): number; } -declare module Blockly.blockRendering { +declare module Blockly.utils { /** - * Whether or not the debugger is turned on. - * @type {boolean} - * @package + * @record */ - var useDebugger: boolean; + function Metrics(): void; +} + + +declare module Blockly.utils.object { /** - * Registers a new renderer. - * @param {string} name The name of the renderer. - * @param {!Function} rendererClass The new renderer class - * to register. - * @throws {Error} if a renderer with the same name has already been registered. + * Inherit the prototype methods from one constructor into another. + * + * @param {!Function} childCtor Child class. + * @param {!Function} parentCtor Parent class. + * @suppress {strictMissingProperties} superClass_ is not defined on Function. */ - function register(name: string, rendererClass: Function): void; + function inherits(childCtor: Function, parentCtor: Function): void; /** - * Unregisters the renderer registered with the given name. - * @param {string} name The name of the renderer. + * Copies all the members of a source object to a target object. + * @param {!Object} target Target. + * @param {!Object} source Source. */ - function unregister(name: string): void; + function mixin(target: Object, source: Object): void; /** - * Turn on the blocks debugger. - * @package + * Complete a deep merge of all members of a source object with a target object. + * @param {!Object} target Target. + * @param {!Object} source Source. + * @return {!Object} The resulting object. */ - function startDebugger(): void; + function deepMerge(target: Object, source: Object): Object; /** - * Turn off the blocks debugger. - * @package + * Returns an array of a given object's own enumerable property values. + * @param {!Object} obj Object containing values. + * @return {!Array} Array of values. */ - function stopDebugger(): void; + function values(obj: Object): any[]; +} + + +declare module Blockly.utils { + + class Rect extends Rect__Class { } + /** Fake class which should be extended to avoid inheriting static properties */ + class Rect__Class { + + /** + * Class for representing rectangular regions. + * @param {number} top Top. + * @param {number} bottom Bottom. + * @param {number} left Left. + * @param {number} right Right. + * @struct + * @constructor + */ + constructor(top: number, bottom: number, left: number, right: number); + + /** @type {number} */ + top: number; + + /** @type {number} */ + bottom: number; + + /** @type {number} */ + left: number; + + /** @type {number} */ + right: number; + + /** + * Tests whether this rectangle contains a x/y coordinate. + * + * @param {number} x The x coordinate to test for containment. + * @param {number} y The y coordinate to test for containment. + * @return {boolean} Whether this rectangle contains given coordinate. + */ + contains(x: number, y: number): boolean; + } + +} + + +declare module Blockly.utils { + + class Size extends Size__Class { } + /** Fake class which should be extended to avoid inheriting static properties */ + class Size__Class { + + /** + * Class for representing sizes consisting of a width and height. + * @param {number} width Width. + * @param {number} height Height. + * @struct + * @constructor + */ + constructor(width: number, height: number); + + /** + * Width + * @type {number} + */ + width: number; + + /** + * Height + * @type {number} + */ + height: number; + } + +} + +declare module Blockly.utils.Size { /** - * Initialize anything needed for rendering (constants, etc). - * @param {!string} name Name of the renderer to initialize. - * @param {!Blockly.Theme} theme The workspace theme object. - * @param {Object=} opt_rendererOverrides Rendering constant overrides. - * @return {!Blockly.blockRendering.Renderer} The new instance of a renderer. - * Already initialized. - * @package + * Compares sizes for equality. + * @param {Blockly.utils.Size} a A Size. + * @param {Blockly.utils.Size} b A Size. + * @return {boolean} True iff the sizes have equal widths and equal + * heights, or if both are null. */ - function init(name: string, theme: Blockly.Theme, opt_rendererOverrides?: Object): Blockly.blockRendering.Renderer; + function equals(a: Blockly.utils.Size, b: Blockly.utils.Size): boolean; } -declare module Blockly.blockRendering { +declare module Blockly.utils._string { - class ConstantProvider extends ConstantProvider__Class { } - /** Fake class which should be extended to avoid inheriting static properties */ - class ConstantProvider__Class { + /** + * Fast prefix-checker. + * Copied from Closure's goog.string.startsWith. + * @param {string} str The string to check. + * @param {string} prefix A string to look for at the start of `str`. + * @return {boolean} True if `str` begins with `prefix`. + */ + function startsWith(str: string, prefix: string): boolean; + + /** + * Given an array of strings, return the length of the shortest one. + * @param {!Array.} array Array of strings. + * @return {number} Length of shortest string. + */ + function shortestStringLength(array: string[]): number; + + /** + * Given an array of strings, return the length of the common prefix. + * Words may not be split. Any space after a word is included in the length. + * @param {!Array.} array Array of strings. + * @param {number=} opt_shortest Length of shortest string. + * @return {number} Length of common prefix. + */ + function commonWordPrefix(array: string[], opt_shortest?: number): number; + + /** + * Given an array of strings, return the length of the common suffix. + * Words may not be split. Any space after a word is included in the length. + * @param {!Array.} array Array of strings. + * @param {number=} opt_shortest Length of shortest string. + * @return {number} Length of common suffix. + */ + function commonWordSuffix(array: string[], opt_shortest?: number): number; + + /** + * Wrap text to the specified width. + * @param {string} text Text to wrap. + * @param {number} limit Width to wrap each line. + * @return {string} Wrapped text. + */ + function wrap(text: string, limit: number): string; +} + + +declare module Blockly.utils.style { + + /** + * Gets the height and width of an element. + * Similar to Closure's goog.style.getSize + * @param {!Element} element Element to get size of. + * @return {!Blockly.utils.Size} Object with width/height properties. + */ + function getSize(element: Element): Blockly.utils.Size; + + /** + * Retrieves a computed style value of a node. It returns empty string if the + * value cannot be computed (which will be the case in Internet Explorer) or + * "none" if the property requested is an SVG one and it has not been + * explicitly set (firefox and webkit). + * + * Copied from Closure's goog.style.getComputedStyle + * + * @param {!Element} element Element to get style of. + * @param {string} property Property to get (camel-case). + * @return {string} Style value. + */ + function getComputedStyle(element: Element, property: string): string; + + /** + * Gets the cascaded style value of a node, or null if the value cannot be + * computed (only Internet Explorer can do this). + * + * Copied from Closure's goog.style.getCascadedStyle + * + * @param {!Element} element Element to get style of. + * @param {string} style Property to get (camel-case). + * @return {string} Style value. + */ + function getCascadedStyle(element: Element, style: string): string; + + /** + * Returns a Coordinate object relative to the top-left of the HTML document. + * Similar to Closure's goog.style.getPageOffset + * @param {!Element} el Element to get the page offset for. + * @return {!Blockly.utils.Coordinate} The page offset. + */ + function getPageOffset(el: Element): Blockly.utils.Coordinate; + + /** + * Calculates the viewport coordinates relative to the document. + * Similar to Closure's goog.style.getViewportPageOffset + * @return {!Blockly.utils.Coordinate} The page offset of the viewport. + */ + function getViewportPageOffset(): Blockly.utils.Coordinate; + + /** + * Shows or hides an element from the page. Hiding the element is done by + * setting the display property to "none", removing the element from the + * rendering hierarchy so it takes up no space. To show the element, the default + * inherited display property is restored (defined either in stylesheets or by + * the browser's default style rules). + * Copied from Closure's goog.style.getViewportPageOffset + * + * @param {!Element} el Element to show or hide. + * @param {*} isShown True to render the element in its default style, + * false to disable rendering the element. + */ + function setElementShown(el: Element, isShown: any): void; + + /** + * Returns true if the element is using right to left (RTL) direction. + * Copied from Closure's goog.style.isRightToLeft + * + * @param {!Element} el The element to test. + * @return {boolean} True for right to left, false for left to right. + */ + function isRightToLeft(el: Element): boolean; + + /** + * Gets the computed border widths (on all sides) in pixels + * Copied from Closure's goog.style.getBorderBox + * @param {!Element} element The element to get the border widths for. + * @return {!Object} The computed border widths. + */ + function getBorderBox(element: Element): Object; + + /** + * Changes the scroll position of `container` with the minimum amount so + * that the content and the borders of the given `element` become visible. + * If the element is bigger than the container, its top left corner will be + * aligned as close to the container's top left corner as possible. + * Copied from Closure's goog.style.scrollIntoContainerView + * + * @param {!Element} element The element to make visible. + * @param {!Element} container The container to scroll. If not set, then the + * document scroll element will be used. + * @param {boolean=} opt_center Whether to center the element in the container. + * Defaults to false. + */ + function scrollIntoContainerView(element: Element, container: Element, opt_center?: boolean): void; + + /** + * Calculate the scroll position of `container` with the minimum amount so + * that the content and the borders of the given `element` become visible. + * If the element is bigger than the container, its top left corner will be + * aligned as close to the container's top left corner as possible. + * Copied from Closure's goog.style.getContainerOffsetToScrollInto + * + * @param {!Element} element The element to make visible. + * @param {!Element} container The container to scroll. If not set, then the + * document scroll element will be used. + * @param {boolean=} opt_center Whether to center the element in the container. + * Defaults to false. + * @return {!Blockly.utils.Coordinate} The new scroll position of the container, + * in form of goog.math.Coordinate(scrollLeft, scrollTop). + */ + function getContainerOffsetToScrollInto(element: Element, container: Element, opt_center?: boolean): Blockly.utils.Coordinate; +} + + +declare module Blockly.utils { + + class Svg extends Svg__Class { } + /** Fake class which should be extended to avoid inheriting static properties */ + class Svg__Class { + + /** + * A name with the type of the SVG element stored in the generic. + * @param {string} tagName The SVG element tag name. + * @constructor + * @template T + * @private + */ + constructor(tagName: string); + } + +} + +declare module Blockly.utils.Svg { + + /** @type {!Blockly.utils.Svg} + * @package + */ + var ANIMATE: Blockly.utils.Svg; + + /** @type {!Blockly.utils.Svg} + * @package + */ + var CIRCLE: Blockly.utils.Svg; + + /** @type {!Blockly.utils.Svg} + * @package + */ + var CLIPPATH: Blockly.utils.Svg; + + /** @type {!Blockly.utils.Svg} + * @package + */ + var DEFS: Blockly.utils.Svg; + + /** @type {!Blockly.utils.Svg} + * @package + */ + var FECOMPOSITE: Blockly.utils.Svg; + + /** @type {!Blockly.utils.Svg} + * @package + */ + var FECOMPONENTTRANSFER: Blockly.utils.Svg; + + /** @type {!Blockly.utils.Svg} + * @package + */ + var FEFLOOD: Blockly.utils.Svg; + + /** @type {!Blockly.utils.Svg} + * @package + */ + var FEFUNCA: Blockly.utils.Svg; + + /** @type {!Blockly.utils.Svg} + * @package + */ + var FEGAUSSIANBLUR: Blockly.utils.Svg; + + /** @type {!Blockly.utils.Svg} + * @package + */ + var FEPOINTLIGHT: Blockly.utils.Svg; + + /** @type {!Blockly.utils.Svg} + * @package + */ + var FESPECULARLIGHTING: Blockly.utils.Svg; + + /** @type {!Blockly.utils.Svg} + * @package + */ + var FILTER: Blockly.utils.Svg; + + /** @type {!Blockly.utils.Svg} + * @package + */ + var FOREIGNOBJECT: Blockly.utils.Svg; + + /** @type {!Blockly.utils.Svg} + * @package + */ + var G: Blockly.utils.Svg; + + /** @type {!Blockly.utils.Svg} + * @package + */ + var IMAGE: Blockly.utils.Svg; + + /** @type {!Blockly.utils.Svg} + * @package + */ + var LINE: Blockly.utils.Svg; + + /** @type {!Blockly.utils.Svg} + * @package + */ + var PATH: Blockly.utils.Svg; + + /** @type {!Blockly.utils.Svg} + * @package + */ + var PATTERN: Blockly.utils.Svg; + + /** @type {!Blockly.utils.Svg} + * @package + */ + var POLYGON: Blockly.utils.Svg; + + /** @type {!Blockly.utils.Svg} + * @package + */ + var RECT: Blockly.utils.Svg; + + /** @type {!Blockly.utils.Svg} + * @package + */ + var SVG: Blockly.utils.Svg; + + /** @type {!Blockly.utils.Svg} + * @package + */ + var TEXT: Blockly.utils.Svg; + + /** @type {!Blockly.utils.Svg} + * @package + */ + var TSPAN: Blockly.utils.Svg; +} + + +declare module Blockly.utils.svgPaths { + + /** + * Create a string representing the given x, y pair. It does not matter whether + * the coordinate is relative or absolute. The result has leading + * and trailing spaces, and separates the x and y coordinates with a comma but + * no space. + * @param {number} x The x coordinate. + * @param {number} y The y coordinate. + * @return {string} A string of the format ' x,y ' + * @public + */ + function point(x: number, y: number): string; + + /** + * Draw a cubic or quadratic curve. See + * developer.mozilla.org/en-US/docs/Web/SVG/Attribute/d#Cubic_B%C3%A9zier_Curve + * These coordinates are unitless and hence in the user coordinate system. + * @param {string} command The command to use. + * Should be one of: c, C, s, S, q, Q. + * @param {!Array.} points An array containing all of the points to pass to the + * curve command, in order. The points are represented as strings of the + * format ' x, y '. + * @return {string} A string defining one or more Bezier curves. See the MDN + * documentation for exact format. + * @public + */ + function curve(command: string, points: string[]): string; + + /** + * Move the cursor to the given position without drawing a line. + * The coordinates are absolute. + * These coordinates are unitless and hence in the user coordinate system. + * See developer.mozilla.org/en-US/docs/Web/SVG/Tutorial/Paths#Line_commands + * @param {number} x The absolute x coordinate. + * @param {number} y The absolute y coordinate. + * @return {string} A string of the format ' M x,y ' + * @public + */ + function moveTo(x: number, y: number): string; + + /** + * Move the cursor to the given position without drawing a line. + * Coordinates are relative. + * These coordinates are unitless and hence in the user coordinate system. + * See developer.mozilla.org/en-US/docs/Web/SVG/Tutorial/Paths#Line_commands + * @param {number} dx The relative x coordinate. + * @param {number} dy The relative y coordinate. + * @return {string} A string of the format ' m dx,dy ' + * @public + */ + function moveBy(dx: number, dy: number): string; + + /** + * Draw a line from the current point to the end point, which is the current + * point shifted by dx along the x-axis and dy along the y-axis. + * These coordinates are unitless and hence in the user coordinate system. + * See developer.mozilla.org/en-US/docs/Web/SVG/Tutorial/Paths#Line_commands + * @param {number} dx The relative x coordinate. + * @param {number} dy The relative y coordinate. + * @return {string} A string of the format ' l dx,dy ' + * @public + */ + function lineTo(dx: number, dy: number): string; + + /** + * Draw multiple lines connecting all of the given points in order. This is + * equivalent to a series of 'l' commands. + * These coordinates are unitless and hence in the user coordinate system. + * See developer.mozilla.org/en-US/docs/Web/SVG/Tutorial/Paths#Line_commands + * @param {!Array.} points An array containing all of the points to + * draw lines to, in order. The points are represented as strings of the + * format ' dx,dy '. + * @return {string} A string of the format ' l (dx,dy)+ ' + * @public + */ + function line(points: string[]): string; + + /** + * Draw a horizontal or vertical line. + * The first argument specifies the direction and whether the given position is + * relative or absolute. + * These coordinates are unitless and hence in the user coordinate system. + * See developer.mozilla.org/en-US/docs/Web/SVG/Attribute/d#LineTo_path_commands + * @param {string} command The command to prepend to the coordinate. This + * should be one of: V, v, H, h. + * @param {number} val The coordinate to pass to the command. It may be + * absolute or relative. + * @return {string} A string of the format ' command val ' + * @public + */ + function lineOnAxis(command: string, val: number): string; + + /** + * Draw an elliptical arc curve. + * These coordinates are unitless and hence in the user coordinate system. + * See developer.mozilla.org/en-US/docs/Web/SVG/Attribute/d#Elliptical_Arc_Curve + * @param {string} command The command string. Either 'a' or 'A'. + * @param {string} flags The flag string. See the MDN documentation for a + * description and examples. + * @param {number} radius The radius of the arc to draw. + * @param {string} point The point to move the cursor to after drawing the arc, + * specified either in absolute or relative coordinates depending on the + * command. + * @return {string} A string of the format 'command radius radius flags point' + * @public + */ + function arc(command: string, flags: string, radius: number, point: string): string; +} + + +declare module Blockly.utils.toolbox { + + /** + * The information needed to create a block in the toolbox. + * @typedef {{ + * kind:string, + * blockxml:(?string|Node), + * type: ?string, + * gap: (?string|?number), + * disabled: (?string|?boolean) + * }} + */ + interface BlockInfo { + kind: string; + blockxml: string|Node; + type: string; + gap: string|number; + disabled: string|boolean + } + + /** + * The information needed to create a separator in the toolbox. + * @typedef {{ + * kind:string, + * id:?string, + * gap:?number, + * cssconfig:?Blockly.ToolboxSeparator.CssConfig + * }} + */ + interface SeparatorInfo { + kind: string; + id: string; + gap: number; + cssconfig: Blockly.ToolboxSeparator.CssConfig + } + + /** + * The information needed to create a button in the toolbox. + * @typedef {{ + * kind:string, + * text:string, + * callbackkey:string + * }} + */ + interface ButtonInfo { + kind: string; + text: string; + callbackkey: string + } + + /** + * The information needed to create a label in the toolbox. + * @typedef {{ + * kind:string, + * id:?string, + * text:string + * }} + */ + interface LabelInfo { + kind: string; + id: string; + text: string + } + + /** + * The information needed to create either a button or a label in the flyout. + * @typedef {Blockly.utils.toolbox.ButtonInfo| + * Blockly.utils.toolbox.LabelInfo} + */ + type ButtonOrLabelInfo = Blockly.utils.toolbox.ButtonInfo|Blockly.utils.toolbox.LabelInfo; + + /** + * The information needed to create a category in the toolbox. + * @typedef {{ + * kind:string, + * name:string, + * id:?string, + * categorystyle:?string, + * colour:?string, + * cssconfig:?Blockly.ToolboxCategory.CssConfig, + * contents:!Array, + * hidden:?string + * }} + */ + interface StaticCategoryInfo { + kind: string; + name: string; + id: string; + categorystyle: string; + colour: string; + cssconfig: Blockly.ToolboxCategory.CssConfig; + contents: Blockly.utils.toolbox.ToolboxItemInfo[]; + hidden: string + } + + /** + * The information needed to create a custom category. + * @typedef {{ + * kind:string, + * custom:string, + * id:?string, + * categorystyle:?string, + * colour:?string, + * cssconfig:?Blockly.ToolboxCategory.CssConfig, + * hidden:?string + * }} + */ + interface DynamicCategoryInfo { + kind: string; + custom: string; + id: string; + categorystyle: string; + colour: string; + cssconfig: Blockly.ToolboxCategory.CssConfig; + hidden: string + } + + /** + * The information needed to create either a dynamic or static category. + * @typedef {Blockly.utils.toolbox.StaticCategoryInfo| + * Blockly.utils.toolbox.DynamicCategoryInfo} + */ + type CategoryInfo = Blockly.utils.toolbox.StaticCategoryInfo|Blockly.utils.toolbox.DynamicCategoryInfo; + + /** + * Any information that can be used to create an item in the toolbox. + * @typedef {Blockly.utils.toolbox.FlyoutItemInfo| + * Blockly.utils.toolbox.StaticCategoryInfo} + */ + type ToolboxItemInfo = Blockly.utils.toolbox.FlyoutItemInfo|Blockly.utils.toolbox.StaticCategoryInfo; + + /** + * All the different types that can be displayed in a flyout. + * @typedef {Blockly.utils.toolbox.BlockInfo| + * Blockly.utils.toolbox.SeparatorInfo| + * Blockly.utils.toolbox.ButtonInfo| + * Blockly.utils.toolbox.LabelInfo| + * Blockly.utils.toolbox.DynamicCategoryInfo} + */ + type FlyoutItemInfo = Blockly.utils.toolbox.BlockInfo|Blockly.utils.toolbox.SeparatorInfo|Blockly.utils.toolbox.ButtonInfo|Blockly.utils.toolbox.LabelInfo|Blockly.utils.toolbox.DynamicCategoryInfo; + + /** + * The JSON definition of a toolbox. + * @typedef {{ + * contents:!Array + * }} + */ + interface ToolboxInfo { + contents: Blockly.utils.toolbox.ToolboxItemInfo[] + } + + /** + * An array holding flyout items. + * @typedef { + * Array + * } + */ + interface FlyoutItemInfoArray extends Array { } + + /** + * All of the different types that can create a toolbox. + * @typedef {Node| + * Blockly.utils.toolbox.ToolboxInfo| + * string} + */ + type ToolboxDefinition = Node|Blockly.utils.toolbox.ToolboxInfo|string; + + /** + * All of the different types that can be used to show items in a flyout. + * @typedef {Blockly.utils.toolbox.FlyoutItemInfoArray| + * NodeList| + * Blockly.utils.toolbox.ToolboxInfo| + * Array} + */ + type FlyoutDefinition = Blockly.utils.toolbox.FlyoutItemInfoArray|NodeList|Blockly.utils.toolbox.ToolboxInfo|Node[]; + + /** + * The name used to identify a toolbox that has category like items. + * This only needs to be used if a toolbox wants to be treated like a category + * toolbox but does not actually contain any toolbox items with the kind + * 'category'. + * @const {string} + */ + var CATEGORY_TOOLBOX_KIND: any /*missing*/; + + /** + * The name used to identify a toolbox that has no categories and is displayed + * as a simple flyout displaying blocks, buttons, or labels. + * @const {string} + */ + var FLYOUT_TOOLBOX_KIND: any /*missing*/; + + /** + * Position of the the toolbox relative to the flyout. + * @enum {number} + */ + enum Position { TOP, BOTTOM, LEFT, RIGHT } + + /** + * Converts the toolbox definition into toolbox JSON. + * @param {?Blockly.utils.toolbox.ToolboxDefinition} toolboxDef The definition + * of the toolbox in one of its many forms. + * @return {?Blockly.utils.toolbox.ToolboxInfo} Object holding information + * for creating a toolbox. + * @package + */ + function convertToolboxDefToJson(toolboxDef: Blockly.utils.toolbox.ToolboxDefinition): Blockly.utils.toolbox.ToolboxInfo; + + /** + * Converts the flyout definition into a list of flyout items. + * @param {?Blockly.utils.toolbox.FlyoutDefinition} flyoutDef The definition of + * the flyout in one of its many forms. + * @return {!Blockly.utils.toolbox.FlyoutItemInfoArray} A list of flyout items. + * @package + */ + function convertFlyoutDefToJsonArray(flyoutDef: Blockly.utils.toolbox.FlyoutDefinition): Blockly.utils.toolbox.FlyoutItemInfoArray; + + /** + * Whether or not the toolbox definition has categories. + * @param {?Blockly.utils.toolbox.ToolboxInfo} toolboxJson Object holding + * information for creating a toolbox. + * @return {boolean} True if the toolbox has categories. + * @package + */ + function hasCategories(toolboxJson: Blockly.utils.toolbox.ToolboxInfo): boolean; + + /** + * Whether or not the category is collapsible. + * @param {!Blockly.utils.toolbox.CategoryInfo} categoryInfo Object holing + * information for creating a category. + * @return {boolean} True if the category has subcategories. + * @package + */ + function isCategoryCollapsible(categoryInfo: Blockly.utils.toolbox.CategoryInfo): boolean; + + /** + * Parse the provided toolbox tree into a consistent DOM format. + * @param {?Node|?string} toolboxDef DOM tree of blocks, or text representation + * of same. + * @return {?Node} DOM tree of blocks, or null. + */ + function parseToolboxTree(toolboxDef: Node|string): Node; +} + + +declare module Blockly.utils.userAgent { + + /** @const {boolean} */ + var IE: any /*missing*/; + + /** @const {boolean} */ + var EDGE: any /*missing*/; + + /** @const {boolean} */ + var JAVA_FX: any /*missing*/; + + /** @const {boolean} */ + var CHROME: any /*missing*/; + + /** @const {boolean} */ + var WEBKIT: any /*missing*/; + + /** @const {boolean} */ + var GECKO: any /*missing*/; + + /** @const {boolean} */ + var ANDROID: any /*missing*/; + + /** @const {boolean} */ + var IPAD: any /*missing*/; + + /** @const {boolean} */ + var IPOD: any /*missing*/; + + /** @const {boolean} */ + var IPHONE: any /*missing*/; + + /** @const {boolean} */ + var MAC: any /*missing*/; + + /** @const {boolean} */ + var TABLET: any /*missing*/; + + /** @const {boolean} */ + var MOBILE: any /*missing*/; +} + + +declare module Blockly.utils.xml { + + /** + * Namespace for Blockly's XML. + */ + var NAME_SPACE: any /*missing*/; + + /** + * Get the document object. This method is overridden in the Node.js build of + * Blockly. See gulpfile.js, package-blockly-node task. + * @return {!Document} The document object. + * @public + */ + function document(): Document; + + /** + * Create DOM element for XML. + * @param {string} tagName Name of DOM element. + * @return {!Element} New DOM element. + * @public + */ + function createElement(tagName: string): Element; + + /** + * Create text element for XML. + * @param {string} text Text content. + * @return {!Text} New DOM text node. + * @public + */ + function createTextNode(text: string): Text; + + /** + * Converts an XML string into a DOM tree. + * @param {string} text XML string. + * @return {Document} The DOM document. + * @throws if XML doesn't parse. + * @public + */ + function textToDomDocument(text: string): Document; + + /** + * Converts a DOM structure into plain text. + * Currently the text format is fairly ugly: all one line with no whitespace. + * @param {!Node} dom A tree of XML nodes. + * @return {string} Text representation. + * @public + */ + function domToText(dom: Node): string; +} + + +declare module Blockly.blockRendering { + + /** + * Whether or not the debugger is turned on. + * @type {boolean} + * @package + */ + var useDebugger: boolean; + + /** + * Registers a new renderer. + * @param {string} name The name of the renderer. + * @param {!Function} rendererClass The new renderer class + * to register. + * @throws {Error} if a renderer with the same name has already been registered. + */ + function register(name: string, rendererClass: Function): void; + + /** + * Unregisters the renderer registered with the given name. + * @param {string} name The name of the renderer. + */ + function unregister(name: string): void; + + /** + * Turn on the blocks debugger. + * @package + */ + function startDebugger(): void; + + /** + * Turn off the blocks debugger. + * @package + */ + function stopDebugger(): void; + + /** + * Initialize anything needed for rendering (constants, etc). + * @param {!string} name Name of the renderer to initialize. + * @param {!Blockly.Theme} theme The workspace theme object. + * @param {Object=} opt_rendererOverrides Rendering constant overrides. + * @return {!Blockly.blockRendering.Renderer} The new instance of a renderer. + * Already initialized. + * @package + */ + function init(name: string, theme: Blockly.Theme, opt_rendererOverrides?: Object): Blockly.blockRendering.Renderer; +} + + +declare module Blockly.blockRendering { + + class ConstantProvider extends ConstantProvider__Class { } + /** Fake class which should be extended to avoid inheriting static properties */ + class ConstantProvider__Class { + + /** + * An object that provides constants for rendering blocks. + * @constructor + * @package + */ + constructor(); + + /** + * The size of an empty spacer. + * @type {number} + */ + NO_PADDING: number; + + /** + * The size of small padding. + * @type {number} + */ + SMALL_PADDING: number; + + /** + * The size of medium padding. + * @type {number} + */ + MEDIUM_PADDING: number; + + /** + * The size of medium-large padding. + * @type {number} + */ + MEDIUM_LARGE_PADDING: number; + + /** + * The size of large padding. + * @type {number} + */ + LARGE_PADDING: number; + + /** + * Offset from the top of the row for placing fields on inline input rows + * and statement input rows. + * Matches existing rendering (in 2019). + * @type {number} + */ + TALL_INPUT_FIELD_OFFSET_Y: number; + + /** + * The height of the puzzle tab used for input and output connections. + * @type {number} + */ + TAB_HEIGHT: number; + + /** + * The offset from the top of the block at which a puzzle tab is positioned. + * @type {number} + */ + TAB_OFFSET_FROM_TOP: number; + + /** + * Vertical overlap of the puzzle tab, used to make it look more like a puzzle + * piece. + * @type {number} + */ + TAB_VERTICAL_OVERLAP: number; + + /** + * The width of the puzzle tab used for input and output connections. + * @type {number} + */ + TAB_WIDTH: number; + + /** + * The width of the notch used for previous and next connections. + * @type {number} + */ + NOTCH_WIDTH: number; + + /** + * The height of the notch used for previous and next connections. + * @type {number} + */ + NOTCH_HEIGHT: number; + + /** + * The minimum width of the block. + * @type {number} + */ + MIN_BLOCK_WIDTH: number; + + /** + * The minimum height of a dummy input row. + * @type {number} + */ + DUMMY_INPUT_MIN_HEIGHT: number; + + /** + * The minimum height of a dummy input row in a shadow block. + * @type {number} + */ + DUMMY_INPUT_SHADOW_MIN_HEIGHT: number; + + /** + * Rounded corner radius. + * @type {number} + */ + CORNER_RADIUS: number; + + /** + * Offset from the left side of a block or the inside of a statement input to + * the left side of the notch. + * @type {number} + */ + NOTCH_OFFSET_LEFT: number; + + /** + * Additional offset added to the statement input's width to account for the + * notch. + * @type {number} + */ + STATEMENT_INPUT_NOTCH_OFFSET: number; + + /** + * Vertical padding between consecutive statement inputs. + * @type {number} + */ + BETWEEN_STATEMENT_PADDING_Y: number; + + /** + * The top row's minimum height. + * @type {number} + */ + TOP_ROW_MIN_HEIGHT: number; + + /** + * The top row's minimum height if it precedes a statement. + * @type {number} + */ + TOP_ROW_PRECEDES_STATEMENT_MIN_HEIGHT: number; + + /** + * The bottom row's minimum height. + * @type {number} + */ + BOTTOM_ROW_MIN_HEIGHT: number; + + /** + * The bottom row's minimum height if it follows a statement input. + * @type {number} + */ + BOTTOM_ROW_AFTER_STATEMENT_MIN_HEIGHT: number; + + /** + * Whether to add a 'hat' on top of all blocks with no previous or output + * connections. Can be overridden by 'hat' property on Theme.BlockStyle. + * @type {boolean} + */ + ADD_START_HATS: boolean; + + /** + * Height of the top hat. + * @type {number} + */ + START_HAT_HEIGHT: number; + + /** + * Width of the top hat. + * @type {number} + */ + START_HAT_WIDTH: number; + + /** + * The height of an empty inline input. + * @type {number} + */ + EMPTY_INLINE_INPUT_HEIGHT: number; + + /** + * The height of an empty statement input. Note that in the old rendering this + * varies slightly depending on whether the block has external or inline inputs. + * In the new rendering this is consistent. It seems unlikely that the old + * behaviour was intentional. + * @type {number} + */ + EMPTY_STATEMENT_INPUT_HEIGHT: number; + + /** + * Height of SVG path for jagged teeth at the end of collapsed blocks. + * @type {number} + */ + JAGGED_TEETH_HEIGHT: number; + + /** + * Width of SVG path for jagged teeth at the end of collapsed blocks. + * @type {number} + */ + JAGGED_TEETH_WIDTH: number; + + /** + * Point size of text. + * @type {number} + */ + FIELD_TEXT_FONTSIZE: number; + + /** + * Text font weight. + * @type {string} + */ + FIELD_TEXT_FONTWEIGHT: string; + + /** + * Text font family. + * @type {string} + */ + FIELD_TEXT_FONTFAMILY: string; + + /** + * Height of text. This constant is dynamically set in ``setFontConstants_`` + * to be the height of the text based on the font used. + * @type {number} + */ + FIELD_TEXT_HEIGHT: number; + + /** + * Text baseline. This constant is dynamically set in ``setFontConstants_`` + * to be the baseline of the text based on the font used. + * @type {number} + */ + FIELD_TEXT_BASELINE: number; + + /** + * A field's border rect corner radius. + * @type {number} + */ + FIELD_BORDER_RECT_RADIUS: number; + + /** + * A field's border rect default height. + * @type {number} + */ + FIELD_BORDER_RECT_HEIGHT: number; + + /** + * A field's border rect X padding. + * @type {number} + */ + FIELD_BORDER_RECT_X_PADDING: number; + + /** + * A field's border rect Y padding. + * @type {number} + */ + FIELD_BORDER_RECT_Y_PADDING: number; + + /** + * The backing colour of a field's border rect. + * @type {string} + * @package + */ + FIELD_BORDER_RECT_COLOUR: string; + + /** + * A field's text element's dominant baseline. + * @type {boolean} + */ + FIELD_TEXT_BASELINE_CENTER: boolean; + + /** + * A dropdown field's border rect height. + * @type {number} + */ + FIELD_DROPDOWN_BORDER_RECT_HEIGHT: number; + + /** + * Whether or not a dropdown field should add a border rect when in a shadow + * block. + * @type {boolean} + */ + FIELD_DROPDOWN_NO_BORDER_RECT_SHADOW: boolean; + + /** + * Whether or not a dropdown field's div should be coloured to match the + * block colours. + * @type {boolean} + */ + FIELD_DROPDOWN_COLOURED_DIV: boolean; + + /** + * Whether or not a dropdown field uses a text or SVG arrow. + * @type {boolean} + */ + FIELD_DROPDOWN_SVG_ARROW: boolean; + + /** + * A dropdown field's SVG arrow padding. + * @type {number} + */ + FIELD_DROPDOWN_SVG_ARROW_PADDING: number; + + /** + * A dropdown field's SVG arrow size. + * @type {number} + */ + FIELD_DROPDOWN_SVG_ARROW_SIZE: number; /** - * An object that provides constants for rendering blocks. - * @constructor - * @package + * A dropdown field's SVG arrow datauri. + * @type {string} */ - constructor(); + FIELD_DROPDOWN_SVG_ARROW_DATAURI: string; /** - * The size of an empty spacer. - * @type {number} + * Whether or not to show a box shadow around the widget div. This is only a + * feature of full block fields. + * @type {boolean} */ - NO_PADDING: number; + FIELD_TEXTINPUT_BOX_SHADOW: boolean; /** - * The size of small padding. - * @type {number} + * Whether or not the colour field should display its colour value on the + * entire block. + * @type {boolean} */ - SMALL_PADDING: number; + FIELD_COLOUR_FULL_BLOCK: boolean; /** - * The size of medium padding. + * A colour field's default width. * @type {number} */ - MEDIUM_PADDING: number; + FIELD_COLOUR_DEFAULT_WIDTH: number; /** - * The size of medium-large padding. + * A colour field's default height. * @type {number} */ - MEDIUM_LARGE_PADDING: number; + FIELD_COLOUR_DEFAULT_HEIGHT: number; /** - * The size of large padding. + * A checkbox field's X offset. * @type {number} */ - LARGE_PADDING: number; + FIELD_CHECKBOX_X_OFFSET: number; /** - * Offset from the top of the row for placing fields on inline input rows - * and statement input rows. - * Matches existing rendering (in 2019). - * @type {number} + * A random identifier used to ensure a unique ID is used for each + * filter/pattern for the case of multiple Blockly instances on a page. + * @type {string} + * @package */ - TALL_INPUT_FIELD_OFFSET_Y: number; + randomIdentifier: string; /** - * The height of the puzzle tab used for input and output connections. - * @type {number} + * The ID of the emboss filter, or the empty string if no filter is set. + * @type {string} + * @package */ - TAB_HEIGHT: number; + embossFilterId: string; /** - * The offset from the top of the block at which a puzzle tab is positioned. - * @type {number} + * The ID of the disabled pattern, or the empty string if no pattern is set. + * @type {string} + * @package */ - TAB_OFFSET_FROM_TOP: number; + disabledPatternId: string; /** - * Vertical overlap of the puzzle tab, used to make it look more like a puzzle - * piece. - * @type {number} + * The ID of the debug filter, or the empty string if no pattern is set. + * @type {string} + * @package */ - TAB_VERTICAL_OVERLAP: number; + debugFilterId: string; /** - * The width of the puzzle tab used for input and output connections. - * @type {number} + * Cursor colour. + * @type {string} + * @package */ - TAB_WIDTH: number; + CURSOR_COLOUR: string; /** - * The width of the notch used for previous and next connections. - * @type {number} + * Immovable marker colour. + * @type {string} + * @package */ - NOTCH_WIDTH: number; + MARKER_COLOUR: string; /** - * The height of the notch used for previous and next connections. + * Width of the horizontal cursor. * @type {number} + * @package */ - NOTCH_HEIGHT: number; + CURSOR_WS_WIDTH: number; /** - * The minimum width of the block. + * Height of the horizontal cursor. * @type {number} + * @package */ - MIN_BLOCK_WIDTH: number; + WS_CURSOR_HEIGHT: number; /** - * The minimum height of a dummy input row. + * Padding around a stack. * @type {number} + * @package */ - DUMMY_INPUT_MIN_HEIGHT: number; + CURSOR_STACK_PADDING: number; /** - * The minimum height of a dummy input row in a shadow block. + * Padding around a block. * @type {number} + * @package */ - DUMMY_INPUT_SHADOW_MIN_HEIGHT: number; + CURSOR_BLOCK_PADDING: number; /** - * Rounded corner radius. + * Stroke of the cursor. * @type {number} + * @package */ - CORNER_RADIUS: number; + CURSOR_STROKE_WIDTH: number; /** - * Offset from the left side of a block or the inside of a statement input to - * the left side of the notch. - * @type {number} + * Whether text input and colour fields fill up the entire source block. + * @type {boolean} + * @package */ - NOTCH_OFFSET_LEFT: number; + FULL_BLOCK_FIELDS: boolean; /** - * Additional offset added to the statement input's width to account for the - * notch. - * @type {number} + * The main colour of insertion markers, in hex. The block is rendered a + * transparent grey by changing the fill opacity in CSS. + * @type {string} + * @package */ - STATEMENT_INPUT_NOTCH_OFFSET: number; + INSERTION_MARKER_COLOUR: string; /** - * Vertical padding between consecutive statement inputs. + * The insertion marker opacity. * @type {number} + * @package */ - BETWEEN_STATEMENT_PADDING_Y: number; + INSERTION_MARKER_OPACITY: number; /** - * The top row's minimum height. - * @type {number} + * Enum for connection shapes. + * @enum {number} */ - TOP_ROW_MIN_HEIGHT: number; + SHAPES: any /*missing*/; /** - * The top row's minimum height if it precedes a statement. - * @type {number} + * Initialize shape objects based on the constants set in the constructor. + * @package */ - TOP_ROW_PRECEDES_STATEMENT_MIN_HEIGHT: number; + init(): void; /** - * The bottom row's minimum height. - * @type {number} + * An object containing sizing and path information about collapsed block + * indicators. + * @type {!Object} + */ + JAGGED_TEETH: Object; + + /** + * An object containing sizing and path information about notches. + * @type {!Object} + */ + NOTCH: Object; + + /** + * An object containing sizing and path information about start hats + * @type {!Object} + */ + START_HAT: Object; + + /** + * An object containing sizing and path information about puzzle tabs. + * @type {!Object} + */ + PUZZLE_TAB: Object; + + /** + * An object containing sizing and path information about inside corners + * @type {!Object} + */ + INSIDE_CORNERS: Object; + + /** + * An object containing sizing and path information about outside corners. + * @type {!Object} + */ + OUTSIDE_CORNERS: Object; + + /** + * Refresh constants properties that depend on the theme. + * @param {!Blockly.Theme} theme The current workspace theme. + * @package + */ + setTheme(theme: Blockly.Theme): void; + + /** + * The block styles map. + * @type {Object.} + * @package + */ + blockStyles: { [key: string]: Blockly.Theme.BlockStyle }; + + /** + * Sets dynamic properties that depend on other values or theme properties. + * @param {!Blockly.Theme} theme The current workspace theme. + * @protected + */ + setDynamicProperties_(theme: Blockly.Theme): void; + + /** + * Set constants related to fonts. + * @param {!Blockly.Theme} theme The current workspace theme. + * @protected + */ + setFontConstants_(theme: Blockly.Theme): void; + + /** + * Set constants from a theme's component styles. + * @param {!Blockly.Theme} theme The current workspace theme. + * @protected + */ + setComponentConstants_(theme: Blockly.Theme): void; + + /** + * Get or create a block style based on a single colour value. Generate a name + * for the style based on the colour. + * @param {string} colour #RRGGBB colour string. + * @return {{style: !Blockly.Theme.BlockStyle, name: string}} An object + * containing the style and an autogenerated name for that style. + * @package + */ + getBlockStyleForColour(colour: string): { style: Blockly.Theme.BlockStyle; name: string }; + + /** + * Gets the BlockStyle for the given block style name. + * @param {?string} blockStyleName The name of the block style. + * @return {!Blockly.Theme.BlockStyle} The named block style, or a default style + * if no style with the given name was found. + */ + getBlockStyle(blockStyleName: string): Blockly.Theme.BlockStyle; + + /** + * Create a block style object based on the given colour. + * @param {string} colour #RRGGBB colour string. + * @return {!Blockly.Theme.BlockStyle} A populated block style based on the + * given colour. + * @protected + */ + createBlockStyle_(colour: string): Blockly.Theme.BlockStyle; + + /** + * Get a full block style object based on the input style object. Populate + * any missing values. + * @param {{ + * colourPrimary:string, + * colourSecondary:(string|undefined), + * colourTertiary:(string|undefined), + * hat:(string|undefined) + * }} blockStyle A full or partial block style object. + + * @return {!Blockly.Theme.BlockStyle} A full block style object, with all + * required properties populated. + * @protected + */ + validatedBlockStyle_(blockStyle: { colourPrimary: string; colourSecondary: string|any /*undefined*/; colourTertiary: string|any /*undefined*/; hat: string|any /*undefined*/ }): Blockly.Theme.BlockStyle; + + /** + * Generate a secondary colour from the passed in primary colour. + * @param {string} colour Primary colour. + * @return {string} The generated secondary colour. + * @protected */ - BOTTOM_ROW_MIN_HEIGHT: number; + generateSecondaryColour_(colour: string): string; /** - * The bottom row's minimum height if it follows a statement input. - * @type {number} + * Generate a tertiary colour from the passed in primary colour. + * @param {string} colour Primary colour. + * @return {string} The generated tertiary colour. + * @protected */ - BOTTOM_ROW_AFTER_STATEMENT_MIN_HEIGHT: number; + generateTertiaryColour_(colour: string): string; /** - * Whether to add a 'hat' on top of all blocks with no previous or output - * connections. Can be overridden by 'hat' property on Theme.BlockStyle. - * @type {boolean} + * Dispose of this constants provider. + * Delete all DOM elements that this provider created. + * @package */ - ADD_START_HATS: boolean; + dispose(): void; /** - * Height of the top hat. - * @type {number} + * @return {!Object} An object containing sizing and path information about + * collapsed block indicators. + * @package */ - START_HAT_HEIGHT: number; + makeJaggedTeeth(): Object; /** - * Width of the top hat. - * @type {number} + * @return {!Object} An object containing sizing and path information about + * start hats. + * @package */ - START_HAT_WIDTH: number; + makeStartHat(): Object; /** - * The height of an empty inline input. - * @type {number} + * @return {!Object} An object containing sizing and path information about + * puzzle tabs. + * @package */ - EMPTY_INLINE_INPUT_HEIGHT: number; + makePuzzleTab(): Object; /** - * The height of an empty statement input. Note that in the old rendering this - * varies slightly depending on whether the block has external or inline inputs. - * In the new rendering this is consistent. It seems unlikely that the old - * behaviour was intentional. - * @type {number} + * @return {!Object} An object containing sizing and path information about + * notches. + * @package */ - EMPTY_STATEMENT_INPUT_HEIGHT: number; + makeNotch(): Object; /** - * Height of SVG path for jagged teeth at the end of collapsed blocks. - * @type {number} + * @return {!Object} An object containing sizing and path information about + * inside corners. + * @package */ - JAGGED_TEETH_HEIGHT: number; + makeInsideCorners(): Object; /** - * Width of SVG path for jagged teeth at the end of collapsed blocks. - * @type {number} + * @return {!Object} An object containing sizing and path information about + * outside corners. + * @package */ - JAGGED_TEETH_WIDTH: number; + makeOutsideCorners(): Object; /** - * Point size of text. - * @type {number} + * Get an object with connection shape and sizing information based on the type + * of the connection. + * @param {!Blockly.RenderedConnection} connection The connection to find a + * shape object for + * @return {!Object} The shape object for the connection. + * @package */ - FIELD_TEXT_FONTSIZE: number; + shapeFor(connection: Blockly.RenderedConnection): Object; /** - * Text font weight. - * @type {string} + * Create any DOM elements that this renderer needs (filters, patterns, etc). + * @param {!SVGElement} svg The root of the workspace's SVG. + * @param {string} tagName The name to use for the CSS style tag. + * @param {string} selector The CSS selector to use. + * @suppress {strictModuleDepCheck} Debug renderer only included in playground. + * @package */ - FIELD_TEXT_FONTWEIGHT: string; + createDom(svg: SVGElement, tagName: string, selector: string): void; /** - * Text font family. - * @type {string} + * Inject renderer specific CSS into the page. + * @param {string} tagName The name of the style tag to use. + * @param {string} selector The CSS selector to use. + * @protected */ - FIELD_TEXT_FONTFAMILY: string; + injectCSS_(tagName: string, selector: string): void; /** - * Height of text. This constant is dynamically set in ``setFontConstants_`` - * to be the height of the text based on the font used. - * @type {number} + * Get any renderer specific CSS to inject when the renderer is initialized. + * @param {string} selector CSS selector to use. + * @return {!Array.} Array of CSS strings. + * @protected */ - FIELD_TEXT_HEIGHT: number; + getCSS_(selector: string): string[]; + } + +} + + +declare module Blockly.blockRendering { + + class Debug extends Debug__Class { } + /** Fake class which should be extended to avoid inheriting static properties */ + class Debug__Class { /** - * Text baseline. This constant is dynamically set in ``setFontConstants_`` - * to be the baseline of the text based on the font used. - * @type {number} + * An object that renders rectangles and dots for debugging rendering code. + * @param {!Blockly.blockRendering.ConstantProvider} constants The renderer's + * constants. + * @package + * @constructor */ - FIELD_TEXT_BASELINE: number; + constructor(constants: Blockly.blockRendering.ConstantProvider); /** - * A field's border rect corner radius. - * @type {number} + * Remove all elements the this object created on the last pass. + * @package */ - FIELD_BORDER_RECT_RADIUS: number; + clearElems(): void; /** - * A field's border rect default height. - * @type {number} + * Draw a debug rectangle for a spacer (empty) row. + * @param {!Blockly.blockRendering.Row} row The row to render. + * @param {number} cursorY The y position of the top of the row. + * @param {boolean} isRtl Whether the block is rendered RTL. + * @package */ - FIELD_BORDER_RECT_HEIGHT: number; + drawSpacerRow(row: Blockly.blockRendering.Row, cursorY: number, isRtl: boolean): void; /** - * A field's border rect X padding. - * @type {number} + * Draw a debug rectangle for a horizontal spacer. + * @param {!Blockly.blockRendering.InRowSpacer} elem The spacer to render. + * @param {number} rowHeight The height of the container row. + * @param {boolean} isRtl Whether the block is rendered RTL. + * @package */ - FIELD_BORDER_RECT_X_PADDING: number; + drawSpacerElem(elem: Blockly.blockRendering.InRowSpacer, rowHeight: number, isRtl: boolean): void; /** - * A field's border rect Y padding. - * @type {number} + * Draw a debug rectangle for an in-row element. + * @param {!Blockly.blockRendering.Measurable} elem The element to render. + * @param {boolean} isRtl Whether the block is rendered RTL. + * @package */ - FIELD_BORDER_RECT_Y_PADDING: number; + drawRenderedElem(elem: Blockly.blockRendering.Measurable, isRtl: boolean): void; /** - * The backing colour of a field's border rect. - * @type {string} + * Draw a circle at the location of the given connection. Inputs and outputs + * share the same colours, as do previous and next. When positioned correctly + * a connected pair will look like a bullseye. + * @param {Blockly.RenderedConnection} conn The connection to circle. + * @suppress {visibility} Suppress visibility of conn.offsetInBlock_ since this + * is a debug module. * @package */ - FIELD_BORDER_RECT_COLOUR: string; + drawConnection(conn: Blockly.RenderedConnection): void; /** - * A field's text element's dominant baseline. - * @type {boolean} + * Draw a debug rectangle for a non-empty row. + * @param {!Blockly.blockRendering.Row} row The non-empty row to render. + * @param {number} cursorY The y position of the top of the row. + * @param {boolean} isRtl Whether the block is rendered RTL. + * @package */ - FIELD_TEXT_BASELINE_CENTER: boolean; + drawRenderedRow(row: Blockly.blockRendering.Row, cursorY: number, isRtl: boolean): void; /** - * A dropdown field's border rect height. - * @type {number} + * Draw debug rectangles for a non-empty row and all of its subcomponents. + * @param {!Blockly.blockRendering.Row} row The non-empty row to render. + * @param {number} cursorY The y position of the top of the row. + * @param {boolean} isRtl Whether the block is rendered RTL. + * @package */ - FIELD_DROPDOWN_BORDER_RECT_HEIGHT: number; + drawRowWithElements(row: Blockly.blockRendering.Row, cursorY: number, isRtl: boolean): void; /** - * Whether or not a dropdown field should add a border rect when in a shadow - * block. - * @type {boolean} + * Draw a debug rectangle around the entire block. + * @param {!Blockly.blockRendering.RenderInfo} info Rendering information about + * the block to debug. + * @package */ - FIELD_DROPDOWN_NO_BORDER_RECT_SHADOW: boolean; + drawBoundingBox(info: Blockly.blockRendering.RenderInfo): void; /** - * Whether or not a dropdown field's div should be coloured to match the - * block colours. - * @type {boolean} + * Do all of the work to draw debug information for the whole block. + * @param {!Blockly.BlockSvg} block The block to draw debug information for. + * @param {!Blockly.blockRendering.RenderInfo} info Rendering information about + * the block to debug. + * @package */ - FIELD_DROPDOWN_COLOURED_DIV: boolean; + drawDebug(block: Blockly.BlockSvg, info: Blockly.blockRendering.RenderInfo): void; /** - * Whether or not a dropdown field uses a text or SVG arrow. - * @type {boolean} + * Show a debug filter to highlight that a block has been rendered. + * @param {!SVGElement} svgPath The block's svg path. + * @package */ - FIELD_DROPDOWN_SVG_ARROW: boolean; + drawRender(svgPath: SVGElement): void; + } + +} + +declare module Blockly.blockRendering.Debug { + + /** + * Configuration object containing booleans to enable and disable debug + * rendering of specific rendering components. + * @type {!Object.} + */ + var config: { [key: string]: boolean }; +} + + +declare module Blockly.blockRendering { + + class Drawer extends Drawer__Class { } + /** Fake class which should be extended to avoid inheriting static properties */ + class Drawer__Class { /** - * A dropdown field's SVG arrow padding. - * @type {number} + * An object that draws a block based on the given rendering information. + * @param {!Blockly.BlockSvg} block The block to render. + * @param {!Blockly.blockRendering.RenderInfo} info An object containing all + * information needed to render this block. + * @package + * @constructor */ - FIELD_DROPDOWN_SVG_ARROW_PADDING: number; + constructor(block: Blockly.BlockSvg, info: Blockly.blockRendering.RenderInfo); /** - * A dropdown field's SVG arrow size. - * @type {number} + * The renderer's constant provider. + * @type {!Blockly.blockRendering.ConstantProvider} + * @protected */ - FIELD_DROPDOWN_SVG_ARROW_SIZE: number; + constants_: Blockly.blockRendering.ConstantProvider; /** - * A dropdown field's SVG arrow datauri. - * @type {string} + * Draw the block to the workspace. Here "drawing" means setting SVG path + * elements and moving fields, icons, and connections on the screen. + * + * The pieces of the paths are pushed into arrays of "steps", which are then + * joined with spaces and set directly on the block. This guarantees that + * the steps are separated by spaces for improved readability, but isn't + * required. + * @package */ - FIELD_DROPDOWN_SVG_ARROW_DATAURI: string; + draw(): void; /** - * Whether or not to show a box shadow around the widget div. This is only a - * feature of full block fields. - * @type {boolean} + * Save sizing information back to the block + * Most of the rendering information can be thrown away at the end of the + * render. Anything that needs to be kept around should be set in this function. + * @protected */ - FIELD_TEXTINPUT_BOX_SHADOW: boolean; + recordSizeOnBlock_(): void; /** - * Whether or not the colour field should display its colour value on the - * entire block. - * @type {boolean} + * Hide icons that were marked as hidden. + * @protected */ - FIELD_COLOUR_FULL_BLOCK: boolean; + hideHiddenIcons_(): void; /** - * A colour field's default width. - * @type {number} + * Create the outline of the block. This is a single continuous path. + * @protected */ - FIELD_COLOUR_DEFAULT_WIDTH: number; + drawOutline_(): void; /** - * A colour field's default height. - * @type {number} + * Add steps for the top corner of the block, taking into account + * details such as hats and rounded corners. + * @protected */ - FIELD_COLOUR_DEFAULT_HEIGHT: number; + drawTop_(): void; /** - * A checkbox field's X offset. - * @type {number} + * Add steps for the jagged edge of a row on a collapsed block. + * @param {!Blockly.blockRendering.Row} row The row to draw the side of. + * @protected */ - FIELD_CHECKBOX_X_OFFSET: number; + drawJaggedEdge_(row: Blockly.blockRendering.Row): void; /** - * A random identifier used to ensure a unique ID is used for each - * filter/pattern for the case of multiple Blockly instances on a page. - * @type {string} - * @package + * Add steps for an external value input, rendered as a notch in the side + * of the block. + * @param {!Blockly.blockRendering.Row} row The row that this input + * belongs to. + * @protected */ - randomIdentifier: string; + drawValueInput_(row: Blockly.blockRendering.Row): void; /** - * The ID of the emboss filter, or the empty string if no filter is set. - * @type {string} - * @package + * Add steps for a statement input. + * @param {!Blockly.blockRendering.Row} row The row that this input + * belongs to. + * @protected */ - embossFilterId: string; + drawStatementInput_(row: Blockly.blockRendering.Row): void; /** - * The ID of the disabled pattern, or the empty string if no pattern is set. - * @type {string} - * @package + * Add steps for the right side of a row that does not have value or + * statement input connections. + * @param {!Blockly.blockRendering.Row} row The row to draw the + * side of. + * @protected */ - disabledPatternId: string; + drawRightSideRow_(row: Blockly.blockRendering.Row): void; /** - * The ID of the debug filter, or the empty string if no pattern is set. - * @type {string} - * @package + * Add steps for the bottom edge of a block, possibly including a notch + * for the next connection + * @protected */ - debugFilterId: string; + drawBottom_(): void; /** - * Cursor colour. - * @type {string} - * @package + * Add steps for the left side of the block, which may include an output + * connection + * @protected */ - CURSOR_COLOUR: string; + drawLeft_(): void; /** - * Immovable marker colour. - * @type {string} - * @package + * Draw the internals of the block: inline inputs, fields, and icons. These do + * not depend on the outer path for placement. + * @protected */ - MARKER_COLOUR: string; + drawInternals_(): void; /** - * Width of the horizontal cursor. - * @type {number} - * @package + * Push a field or icon's new position to its SVG root. + * @param {!Blockly.blockRendering.Icon|!Blockly.blockRendering.Field} fieldInfo + * The rendering information for the field or icon. + * @protected */ - CURSOR_WS_WIDTH: number; + layoutField_(fieldInfo: Blockly.blockRendering.Icon|Blockly.blockRendering.Field): void; /** - * Height of the horizontal cursor. - * @type {number} - * @package + * Add steps for an inline input. + * @param {!Blockly.blockRendering.InlineInput} input The information about the + * input to render. + * @protected */ - WS_CURSOR_HEIGHT: number; + drawInlineInput_(input: Blockly.blockRendering.InlineInput): void; /** - * Padding around a stack. - * @type {number} - * @package + * Position the connection on an inline value input, taking into account + * RTL and the small gap between the parent block and child block which lets the + * parent block's dark path show through. + * @param {Blockly.blockRendering.InlineInput} input The information about + * the input that the connection is on. + * @protected */ - CURSOR_STACK_PADDING: number; + positionInlineInputConnection_(input: Blockly.blockRendering.InlineInput): void; /** - * Padding around a block. - * @type {number} - * @package + * Position the connection on a statement input, taking into account + * RTL and the small gap between the parent block and child block which lets the + * parent block's dark path show through. + * @param {!Blockly.blockRendering.Row} row The row that the connection is on. + * @protected */ - CURSOR_BLOCK_PADDING: number; + positionStatementInputConnection_(row: Blockly.blockRendering.Row): void; /** - * Stroke of the cursor. - * @type {number} - * @package + * Position the connection on an external value input, taking into account + * RTL and the small gap between the parent block and child block which lets the + * parent block's dark path show through. + * @param {!Blockly.blockRendering.Row} row The row that the connection is on. + * @protected */ - CURSOR_STROKE_WIDTH: number; + positionExternalValueConnection_(row: Blockly.blockRendering.Row): void; /** - * Whether text input and colour fields fill up the entire source block. - * @type {boolean} - * @package + * Position the previous connection on a block. + * @protected */ - FULL_BLOCK_FIELDS: boolean; + positionPreviousConnection_(): void; /** - * The main colour of insertion markers, in hex. The block is rendered a - * transparent grey by changing the fill opacity in CSS. - * @type {string} - * @package + * Position the next connection on a block. + * @protected */ - INSERTION_MARKER_COLOUR: string; + positionNextConnection_(): void; /** - * The insertion marker opacity. - * @type {number} - * @package + * Position the output connection on a block. + * @protected */ - INSERTION_MARKER_OPACITY: number; + positionOutputConnection_(): void; + } + +} + + +declare module Blockly.blockRendering { + + interface IPathObject { + + /** + * The primary path of the block. + * @type {!SVGElement} + */ + svgPath: SVGElement; + + /** + * The renderer's constant provider. + * @type {!Blockly.blockRendering.ConstantProvider} + */ + constants: Blockly.blockRendering.ConstantProvider; + + /** + * The primary path of the block. + * @type {!Blockly.Theme.BlockStyle} + */ + style: Blockly.Theme.BlockStyle; + + /** + * Holds the cursors svg element when the cursor is attached to the block. + * This is null if there is no cursor on the block. + * @type {SVGElement} + */ + cursorSvg: SVGElement; + + /** + * Holds the markers svg element when the marker is attached to the block. + * This is null if there is no marker on the block. + * @type {SVGElement} + */ + markerSvg: SVGElement; + + /** + * Set the path generated by the renderer onto the respective SVG element. + * @param {string} pathString The path. + * @package + */ + setPath(pathString: string): void; + + /** + * Apply the stored colours to the block's path, taking into account whether + * the paths belong to a shadow block. + * @param {!Blockly.Block} block The source block. + * @package + */ + applyColour(block: Blockly.Block): void; + + /** + * Update the style. + * @param {!Blockly.Theme.BlockStyle} blockStyle The block style to use. + * @package + */ + setStyle(blockStyle: Blockly.Theme.BlockStyle): void; + + /** + * Flip the SVG paths in RTL. + * @package + */ + flipRTL: any /*missing*/; + + /** + * Add the cursor svg to this block's svg group. + * @param {SVGElement} cursorSvg The svg root of the cursor to be added to the + * block svg group. + * @package + */ + setCursorSvg(cursorSvg: SVGElement): void; + + /** + * Add the marker svg to this block's svg group. + * @param {SVGElement} markerSvg The svg root of the marker to be added to the + * block svg group. + * @package + */ + setMarkerSvg(markerSvg: SVGElement): void; + + /** + * Set whether the block shows a highlight or not. Block highlighting is + * often used to visually mark blocks currently being executed. + * @param {boolean} highlighted True if highlighted. + * @package + */ + updateHighlighted(highlighted: boolean): void; + + /** + * Add or remove styling showing that a block is selected. + * @param {boolean} enable True if selection is enabled, false otherwise. + * @package + */ + updateSelected(enable: boolean): void; - /** - * Enum for connection shapes. - * @enum {number} - */ - SHAPES: any /*missing*/; + /** + * Add or remove styling showing that a block is dragged over a delete area. + * @param {boolean} enable True if the block is being dragged over a delete + * area, false otherwise. + * @package + */ + updateDraggingDelete(enable: boolean): void; - /** - * Initialize shape objects based on the constants set in the constructor. - * @package - */ - init(): void; + /** + * Add or remove styling showing that a block is an insertion marker. + * @param {boolean} enable True if the block is an insertion marker, false + * otherwise. + * @package + */ + updateInsertionMarker(enable: boolean): void; - /** - * An object containing sizing and path information about collapsed block - * indicators. - * @type {!Object} - */ - JAGGED_TEETH: Object; + /** + * Add or remove styling showing that a block is movable. + * @param {boolean} enable True if the block is movable, false otherwise. + * @package + */ + updateMovable(enable: boolean): void; - /** - * An object containing sizing and path information about notches. - * @type {!Object} - */ - NOTCH: Object; + /** + * Add or remove styling that shows that if the dragging block is dropped, this + * block will be replaced. If a shadow block, it will disappear. Otherwise it + * will bump. + * @param {boolean} enable True if styling should be added. + * @package + */ + updateReplacementFade(enable: boolean): void; + } +} + + +declare module Blockly.blockRendering { + + class RenderInfo extends RenderInfo__Class { } + /** Fake class which should be extended to avoid inheriting static properties */ + class RenderInfo__Class { /** - * An object containing sizing and path information about start hats - * @type {!Object} + * An object containing all sizing information needed to draw this block. + * + * This measure pass does not propagate changes to the block (although fields + * may choose to rerender when getSize() is called). However, calling it + * repeatedly may be expensive. + * + * @param {!Blockly.blockRendering.Renderer} renderer The renderer in use. + * @param {!Blockly.BlockSvg} block The block to measure. + * @constructor + * @package */ - START_HAT: Object; + constructor(renderer: Blockly.blockRendering.Renderer, block: Blockly.BlockSvg); /** - * An object containing sizing and path information about puzzle tabs. - * @type {!Object} + * The block renderer in use. + * @type {!Blockly.blockRendering.Renderer} + * @protected */ - PUZZLE_TAB: Object; + renderer_: Blockly.blockRendering.Renderer; /** - * An object containing sizing and path information about inside corners - * @type {!Object} + * The renderer's constant provider. + * @type {!Blockly.blockRendering.ConstantProvider} + * @protected */ - INSIDE_CORNERS: Object; + constants_: Blockly.blockRendering.ConstantProvider; /** - * An object containing sizing and path information about outside corners. - * @type {!Object} + * A measurable representing the output connection if the block has one. + * Otherwise null. + * @type {Blockly.blockRendering.OutputConnection} */ - OUTSIDE_CORNERS: Object; + outputConnection: Blockly.blockRendering.OutputConnection; /** - * Refresh constants properties that depend on the theme. - * @param {!Blockly.Theme} theme The current workspace theme. - * @package + * Whether the block should be rendered as a single line, either because it's + * inline or because it has been collapsed. + * @type {boolean} */ - setTheme(theme: Blockly.Theme): void; + isInline: boolean; /** - * The block styles map. - * @type {Object.} - * @package + * Whether the block is collapsed. + * @type {boolean} */ - blockStyles: { [key: string]: Blockly.Theme.BlockStyle }; + isCollapsed: boolean; /** - * Sets dynamic properties that depend on other values or theme properties. - * @param {!Blockly.Theme} theme The current workspace theme. - * @protected + * Whether the block is an insertion marker. Insertion markers are the same + * shape as normal blocks, but don't show fields. + * @type {boolean} */ - setDynamicProperties_(theme: Blockly.Theme): void; + isInsertionMarker: boolean; /** - * Set constants related to fonts. - * @param {!Blockly.Theme} theme The current workspace theme. - * @protected + * True if the block should be rendered right-to-left. + * @type {boolean} */ - setFontConstants_(theme: Blockly.Theme): void; + RTL: boolean; /** - * Set constants from a theme's component styles. - * @param {!Blockly.Theme} theme The current workspace theme. - * @protected + * The height of the rendered block, including child blocks. + * @type {number} */ - setComponentConstants_(theme: Blockly.Theme): void; + height: number; /** - * Get or create a block style based on a single colour value. Generate a name - * for the style based on the colour. - * @param {string} colour #RRGGBB colour string. - * @return {{style: !Blockly.Theme.BlockStyle, name: string}} An object - * containing the style and an autogenerated name for that style. - * @package + * The width of the rendered block, including child blocks. + * @type {number} */ - getBlockStyleForColour(colour: string): { style: Blockly.Theme.BlockStyle; name: string }; + widthWithChildren: number; /** - * Gets the BlockStyle for the given block style name. - * @param {?string} blockStyleName The name of the block style. - * @return {!Blockly.Theme.BlockStyle} The named block style, or a default style - * if no style with the given name was found. + * The width of the rendered block, excluding child blocks. This is the right + * edge of the block when rendered LTR. + * @type {number} */ - getBlockStyle(blockStyleName: string): Blockly.Theme.BlockStyle; + width: number; /** - * Create a block style object based on the given colour. - * @param {string} colour #RRGGBB colour string. - * @return {!Blockly.Theme.BlockStyle} A populated block style based on the - * given colour. - * @protected + * + * @type {number} */ - createBlockStyle_(colour: string): Blockly.Theme.BlockStyle; + statementEdge: number; /** - * Get a full block style object based on the input style object. Populate - * any missing values. - * @param {{ - * colourPrimary:string, - * colourSecondary:(string|undefined), - * colourTertiary:(string|undefined), - * hat:(string|undefined) - * }} blockStyle A full or partial block style object. - - * @return {!Blockly.Theme.BlockStyle} A full block style object, with all - * required properties populated. - * @protected + * An array of Row objects containing sizing information. + * @type {!Array.} */ - validatedBlockStyle_(blockStyle: { colourPrimary: string; colourSecondary: string|any /*undefined*/; colourTertiary: string|any /*undefined*/; hat: string|any /*undefined*/ }): Blockly.Theme.BlockStyle; + rows: Blockly.blockRendering.Row[]; /** - * Generate a secondary colour from the passed in primary colour. - * @param {string} colour Primary colour. - * @return {string} The generated secondary colour. - * @protected + * An array of input rows on the block. + * @type {!Array.} */ - generateSecondaryColour_(colour: string): string; + inputRows: Blockly.blockRendering.InputRow[]; /** - * Generate a tertiary colour from the passed in primary colour. - * @param {string} colour Primary colour. - * @return {string} The generated tertiary colour. - * @protected + * An array of measurable objects containing hidden icons. + * @type {!Array.} */ - generateTertiaryColour_(colour: string): string; + hiddenIcons: Blockly.blockRendering.Icon[]; /** - * Dispose of this constants provider. - * Delete all DOM elements that this provider created. - * @package + * An object with rendering information about the top row of the block. + * @type {!Blockly.blockRendering.TopRow} */ - dispose(): void; + topRow: Blockly.blockRendering.TopRow; /** - * @return {!Object} An object containing sizing and path information about - * collapsed block indicators. - * @package + * An object with rendering information about the bottom row of the block. + * @type {!Blockly.blockRendering.BottomRow} */ - makeJaggedTeeth(): Object; + bottomRow: Blockly.blockRendering.BottomRow; /** - * @return {!Object} An object containing sizing and path information about - * start hats. + * Get the block renderer in use. + * @return {!Blockly.blockRendering.Renderer} The block renderer in use. * @package */ - makeStartHat(): Object; + getRenderer(): Blockly.blockRendering.Renderer; /** - * @return {!Object} An object containing sizing and path information about - * puzzle tabs. + * Populate and return an object containing all sizing information needed to + * draw this block. + * + * This measure pass does not propagate changes to the block (although fields + * may choose to rerender when getSize() is called). However, calling it + * repeatedly may be expensive. + * * @package */ - makePuzzleTab(): Object; + measure(): void; /** - * @return {!Object} An object containing sizing and path information about - * notches. - * @package + * Create rows of Measurable objects representing all renderable parts of the + * block. + * @protected */ - makeNotch(): Object; + createRows_(): void; /** - * @return {!Object} An object containing sizing and path information about - * inside corners. + * Create all non-spacer elements that belong on the top row. * @package */ - makeInsideCorners(): Object; + populateTopRow_(): void; /** - * @return {!Object} An object containing sizing and path information about - * outside corners. + * Create all non-spacer elements that belong on the bottom row. * @package */ - makeOutsideCorners(): Object; + populateBottomRow_(): void; /** - * Get an object with connection shape and sizing information based on the type - * of the connection. - * @param {!Blockly.RenderedConnection} connection The connection to find a - * shape object for - * @return {!Object} The shape object for the connection. - * @package + * Add an input element to the active row, if needed, and record the type of the + * input on the row. + * @param {!Blockly.Input} input The input to record information about. + * @param {!Blockly.blockRendering.Row} activeRow The row that is currently being + * populated. + * @protected */ - shapeFor(connection: Blockly.RenderedConnection): Object; + addInput_(input: Blockly.Input, activeRow: Blockly.blockRendering.Row): void; /** - * Create any DOM elements that this renderer needs (filters, patterns, etc). - * @param {!SVGElement} svg The root of the workspace's SVG. - * @param {string} tagName The name to use for the CSS style tag. - * @param {string} selector The CSS selector to use. - * @suppress {strictModuleDepCheck} Debug renderer only included in playground. - * @package + * Decide whether to start a new row between the two Blockly.Inputs. + * @param {!Blockly.Input} input The first input to consider + * @param {Blockly.Input} lastInput The input that follows. + * @return {boolean} True if the next input should be rendered on a new row. + * @protected */ - createDom(svg: SVGElement, tagName: string, selector: string): void; + shouldStartNewRow_(input: Blockly.Input, lastInput: Blockly.Input): boolean; /** - * Inject renderer specific CSS into the page. - * @param {string} tagName The name of the style tag to use. - * @param {string} selector The CSS selector to use. + * Add horizontal spacing between and around elements within each row. * @protected */ - injectCSS_(tagName: string, selector: string): void; + addElemSpacing_(): void; /** - * Get any renderer specific CSS to inject when the renderer is initialized. - * @param {string} selector CSS selector to use. - * @return {!Array.} Array of CSS strings. + * Calculate the width of a spacer element in a row based on the previous and + * next elements in that row. For instance, extra padding is added between two + * editable fields. + * @param {Blockly.blockRendering.Measurable} prev The element before the + * spacer. + * @param {Blockly.blockRendering.Measurable} next The element after the spacer. + * @return {number} The size of the spacing between the two elements. * @protected */ - getCSS_(selector: string): string[]; - } + getInRowSpacing_(prev: Blockly.blockRendering.Measurable, next: Blockly.blockRendering.Measurable): number; -} - - -declare module Blockly.blockRendering { - - class Debug extends Debug__Class { } - /** Fake class which should be extended to avoid inheriting static properties */ - class Debug__Class { + /** + * Figure out where the right edge of the block and right edge of statement inputs + * should be placed. + * @protected + */ + computeBounds_(): void; /** - * An object that renders rectangles and dots for debugging rendering code. - * @param {!Blockly.blockRendering.ConstantProvider} constants The renderer's - * constants. - * @package - * @constructor + * Extra spacing may be necessary to make sure that the right sides of all + * rows line up. This can only be calculated after a first pass to calculate + * the sizes of all rows. + * @protected */ - constructor(constants: Blockly.blockRendering.ConstantProvider); + alignRowElements_(): void; /** - * Remove all elements the this object created on the last pass. - * @package + * Calculate the desired width of an input row. + * @param {!Blockly.blockRendering.Row} _row The input row. + * @return {number} The desired width of the input row. + * @protected */ - clearElems(): void; + getDesiredRowWidth_(_row: Blockly.blockRendering.Row): number; /** - * Draw a debug rectangle for a spacer (empty) row. - * @param {!Blockly.blockRendering.Row} row The row to render. - * @param {number} cursorY The y position of the top of the row. - * @param {boolean} isRtl Whether the block is rendered RTL. - * @package + * Modify the given row to add the given amount of padding around its fields. + * The exact location of the padding is based on the alignment property of the + * last input in the field. + * @param {Blockly.blockRendering.Row} row The row to add padding to. + * @param {number} missingSpace How much padding to add. + * @protected */ - drawSpacerRow(row: Blockly.blockRendering.Row, cursorY: number, isRtl: boolean): void; + addAlignmentPadding_(row: Blockly.blockRendering.Row, missingSpace: number): void; /** - * Draw a debug rectangle for a horizontal spacer. - * @param {!Blockly.blockRendering.InRowSpacer} elem The spacer to render. - * @param {number} rowHeight The height of the container row. - * @param {boolean} isRtl Whether the block is rendered RTL. - * @package + * Align the elements of a statement row based on computed bounds. + * Unlike other types of rows, statement rows add space in multiple places. + * @param {!Blockly.blockRendering.InputRow} row The statement row to resize. + * @protected */ - drawSpacerElem(elem: Blockly.blockRendering.InRowSpacer, rowHeight: number, isRtl: boolean): void; + alignStatementRow_(row: Blockly.blockRendering.InputRow): void; /** - * Draw a debug rectangle for an in-row element. - * @param {!Blockly.blockRendering.Measurable} elem The element to render. - * @param {boolean} isRtl Whether the block is rendered RTL. - * @package + * Add spacers between rows and set their sizes. + * @protected */ - drawRenderedElem(elem: Blockly.blockRendering.Measurable, isRtl: boolean): void; + addRowSpacing_(): void; /** - * Draw a circle at the location of the given connection. Inputs and outputs - * share the same colours, as do previous and next. When positioned correctly - * a connected pair will look like a bullseye. - * @param {Blockly.RenderedConnection} conn The connection to circle. - * @suppress {visibility} Suppress visibility of conn.offsetInBlock_ since this - * is a debug module. - * @package + * Create a spacer row to go between prev and next, and set its size. + * @param {!Blockly.blockRendering.Row} prev The previous row. + * @param {!Blockly.blockRendering.Row} next The next row. + * @return {!Blockly.blockRendering.SpacerRow} The newly created spacer row. + * @protected */ - drawConnection(conn: Blockly.RenderedConnection): void; + makeSpacerRow_(prev: Blockly.blockRendering.Row, next: Blockly.blockRendering.Row): Blockly.blockRendering.SpacerRow; /** - * Draw a debug rectangle for a non-empty row. - * @param {!Blockly.blockRendering.Row} row The non-empty row to render. - * @param {number} cursorY The y position of the top of the row. - * @param {boolean} isRtl Whether the block is rendered RTL. - * @package + * Calculate the width of a spacer row. + * @param {!Blockly.blockRendering.Row} _prev The row before the spacer. + * @param {!Blockly.blockRendering.Row} _next The row after the spacer. + * @return {number} The desired width of the spacer row between these two rows. + * @protected */ - drawRenderedRow(row: Blockly.blockRendering.Row, cursorY: number, isRtl: boolean): void; + getSpacerRowWidth_(_prev: Blockly.blockRendering.Row, _next: Blockly.blockRendering.Row): number; /** - * Draw debug rectangles for a non-empty row and all of its subcomponents. - * @param {!Blockly.blockRendering.Row} row The non-empty row to render. - * @param {number} cursorY The y position of the top of the row. - * @param {boolean} isRtl Whether the block is rendered RTL. - * @package + * Calculate the height of a spacer row. + * @param {!Blockly.blockRendering.Row} _prev The row before the spacer. + * @param {!Blockly.blockRendering.Row} _next The row after the spacer. + * @return {number} The desired height of the spacer row between these two rows. + * @protected */ - drawRowWithElements(row: Blockly.blockRendering.Row, cursorY: number, isRtl: boolean): void; + getSpacerRowHeight_(_prev: Blockly.blockRendering.Row, _next: Blockly.blockRendering.Row): number; /** - * Draw a debug rectangle around the entire block. - * @param {!Blockly.blockRendering.RenderInfo} info Rendering information about - * the block to debug. - * @package + * Calculate the centerline of an element in a rendered row. + * This base implementation puts the centerline at the middle of the row + * vertically, with no special cases. You will likely need extra logic to + * handle (at minimum) top and bottom rows. + * @param {!Blockly.blockRendering.Row} row The row containing the element. + * @param {!Blockly.blockRendering.Measurable} elem The element to place. + * @return {number} The desired centerline of the given element, as an offset + * from the top left of the block. + * @protected */ - drawBoundingBox(info: Blockly.blockRendering.RenderInfo): void; + getElemCenterline_(row: Blockly.blockRendering.Row, elem: Blockly.blockRendering.Measurable): number; /** - * Do all of the work to draw debug information for the whole block. - * @param {!Blockly.BlockSvg} block The block to draw debug information for. - * @param {!Blockly.blockRendering.RenderInfo} info Rendering information about - * the block to debug. - * @package + * Record final position information on elements on the given row, for use in + * drawing. At minimum this records xPos and centerline on each element. + * @param {!Blockly.blockRendering.Row} row The row containing the elements. + * @protected */ - drawDebug(block: Blockly.BlockSvg, info: Blockly.blockRendering.RenderInfo): void; + recordElemPositions_(row: Blockly.blockRendering.Row): void; /** - * Show a debug filter to highlight that a block has been rendered. - * @param {!SVGElement} svgPath The block's svg path. - * @package + * Make any final changes to the rendering information object. In particular, + * store the y position of each row, and record the height of the full block. + * @protected */ - drawRender(svgPath: SVGElement): void; + finalize_(): void; } } -declare module Blockly.blockRendering.Debug { - - /** - * Configuration object containing booleans to enable and disable debug - * rendering of specific rendering components. - * @type {!Object.} - */ - var config: { [key: string]: boolean }; -} - declare module Blockly.blockRendering { - class Drawer extends Drawer__Class { } + class MarkerSvg extends MarkerSvg__Class { } /** Fake class which should be extended to avoid inheriting static properties */ - class Drawer__Class { + class MarkerSvg__Class { /** - * An object that draws a block based on the given rendering information. - * @param {!Blockly.BlockSvg} block The block to render. - * @param {!Blockly.blockRendering.RenderInfo} info An object containing all - * information needed to render this block. - * @package + * Class for a marker. + * @param {!Blockly.WorkspaceSvg} workspace The workspace the marker belongs to. + * @param {!Blockly.blockRendering.ConstantProvider} constants The constants for + * the renderer. + * @param {!Blockly.Marker} marker The marker to draw. * @constructor */ - constructor(block: Blockly.BlockSvg, info: Blockly.blockRendering.RenderInfo); + constructor(workspace: Blockly.WorkspaceSvg, constants: Blockly.blockRendering.ConstantProvider, marker: Blockly.Marker); /** - * The renderer's constant provider. - * @type {!Blockly.blockRendering.ConstantProvider} + * The constants necessary to draw the marker. + * @type {Blockly.blockRendering.ConstantProvider} * @protected */ constants_: Blockly.blockRendering.ConstantProvider; /** - * Draw the block to the workspace. Here "drawing" means setting SVG path - * elements and moving fields, icons, and connections on the screen. - * - * The pieces of the paths are pushed into arrays of "steps", which are then - * joined with spaces and set directly on the block. This guarantees that - * the steps are separated by spaces for improved readability, but isn't - * required. - * @package + * The current SVG element for the marker. + * @type {Element} */ - draw(): void; + currentMarkerSvg: Element; /** - * Save sizing information back to the block - * Most of the rendering information can be thrown away at the end of the - * render. Anything that needs to be kept around should be set in this function. - * @protected + * The colour of the marker. + * @type {string} */ - recordSizeOnBlock_(): void; + colour_: string; /** - * Hide icons that were marked as hidden. - * @protected + * Return the root node of the SVG or null if none exists. + * @return {SVGElement} The root SVG node. */ - hideHiddenIcons_(): void; + getSvgRoot(): SVGElement; /** - * Create the outline of the block. This is a single continuous path. - * @protected + * Get the marker. + * @return {!Blockly.Marker} The marker to draw for. */ - drawOutline_(): void; + getMarker(): Blockly.Marker; /** - * Add steps for the top corner of the block, taking into account - * details such as hats and rounded corners. - * @protected + * True if the marker should be drawn as a cursor, false otherwise. + * A cursor is drawn as a flashing line. A marker is drawn as a solid line. + * @return {boolean} True if the marker is a cursor, false otherwise. */ - drawTop_(): void; + isCursor(): boolean; /** - * Add steps for the jagged edge of a row on a collapsed block. - * @param {!Blockly.blockRendering.Row} row The row to draw the side of. + * Create the DOM element for the marker. + * @return {!SVGElement} The marker controls SVG group. + * @package + */ + createDom(): SVGElement; + + /** + * Attaches the SVG root of the marker to the SVG group of the parent. + * @param {!Blockly.IASTNodeLocationSvg} newParent The workspace, field, or + * block that the marker SVG element should be attached to. * @protected */ - drawJaggedEdge_(row: Blockly.blockRendering.Row): void; + setParent_(newParent: Blockly.IASTNodeLocationSvg): void; + + /** + * Update the marker. + * @param {Blockly.ASTNode} oldNode The previous node the marker was on or null. + * @param {Blockly.ASTNode} curNode The node that we want to draw the marker for. + */ + draw(oldNode: Blockly.ASTNode, curNode: Blockly.ASTNode): void; /** - * Add steps for an external value input, rendered as a notch in the side - * of the block. - * @param {!Blockly.blockRendering.Row} row The row that this input - * belongs to. + * Update the marker's visible state based on the type of curNode.. + * @param {!Blockly.ASTNode} curNode The node that we want to draw the marker for. * @protected */ - drawValueInput_(row: Blockly.blockRendering.Row): void; + showAtLocation_(curNode: Blockly.ASTNode): void; /** - * Add steps for a statement input. - * @param {!Blockly.blockRendering.Row} row The row that this input - * belongs to. + * Position and display the marker for a block. + * @param {!Blockly.ASTNode} curNode The node to draw the marker for. * @protected */ - drawStatementInput_(row: Blockly.blockRendering.Row): void; + showWithBlock_(curNode: Blockly.ASTNode): void; /** - * Add steps for the right side of a row that does not have value or - * statement input connections. - * @param {!Blockly.blockRendering.Row} row The row to draw the - * side of. + * Position and display the marker for a previous connection. + * @param {!Blockly.ASTNode} curNode The node to draw the marker for. * @protected */ - drawRightSideRow_(row: Blockly.blockRendering.Row): void; + showWithPrevious_(curNode: Blockly.ASTNode): void; /** - * Add steps for the bottom edge of a block, possibly including a notch - * for the next connection + * Position and display the marker for an output connection. + * @param {!Blockly.ASTNode} curNode The node to draw the marker for. * @protected */ - drawBottom_(): void; + showWithOutput_(curNode: Blockly.ASTNode): void; /** - * Add steps for the left side of the block, which may include an output - * connection + * Position and display the marker for a workspace coordinate. + * This is a horizontal line. + * @param {!Blockly.ASTNode} curNode The node to draw the marker for. * @protected */ - drawLeft_(): void; + showWithCoordinates_(curNode: Blockly.ASTNode): void; /** - * Draw the internals of the block: inline inputs, fields, and icons. These do - * not depend on the outer path for placement. + * Position and display the marker for a field. + * This is a box around the field. + * @param {!Blockly.ASTNode} curNode The node to draw the marker for. * @protected */ - drawInternals_(): void; + showWithField_(curNode: Blockly.ASTNode): void; /** - * Push a field or icon's new position to its SVG root. - * @param {!Blockly.blockRendering.Icon|!Blockly.blockRendering.Field} fieldInfo - * The rendering information for the field or icon. + * Position and display the marker for an input. + * This is a puzzle piece. + * @param {!Blockly.ASTNode} curNode The node to draw the marker for. * @protected */ - layoutField_(fieldInfo: Blockly.blockRendering.Icon|Blockly.blockRendering.Field): void; + showWithInput_(curNode: Blockly.ASTNode): void; /** - * Add steps for an inline input. - * @param {!Blockly.blockRendering.InlineInput} input The information about the - * input to render. + * Position and display the marker for a next connection. + * This is a horizontal line. + * @param {!Blockly.ASTNode} curNode The node to draw the marker for. * @protected */ - drawInlineInput_(input: Blockly.blockRendering.InlineInput): void; + showWithNext_(curNode: Blockly.ASTNode): void; /** - * Position the connection on an inline value input, taking into account - * RTL and the small gap between the parent block and child block which lets the - * parent block's dark path show through. - * @param {Blockly.blockRendering.InlineInput} input The information about - * the input that the connection is on. + * Position and display the marker for a stack. + * This is a box with extra padding around the entire stack of blocks. + * @param {!Blockly.ASTNode} curNode The node to draw the marker for. * @protected */ - positionInlineInputConnection_(input: Blockly.blockRendering.InlineInput): void; + showWithStack_(curNode: Blockly.ASTNode): void; /** - * Position the connection on a statement input, taking into account - * RTL and the small gap between the parent block and child block which lets the - * parent block's dark path show through. - * @param {!Blockly.blockRendering.Row} row The row that the connection is on. + * Show the current marker. * @protected */ - positionStatementInputConnection_(row: Blockly.blockRendering.Row): void; + showCurrent_(): void; /** - * Position the connection on an external value input, taking into account - * RTL and the small gap between the parent block and child block which lets the - * parent block's dark path show through. - * @param {!Blockly.blockRendering.Row} row The row that the connection is on. + * Position the marker for a block. + * Displays an outline of the top half of a rectangle around a block. + * @param {number} width The width of the block. + * @param {number} markerOffset The extra padding for around the block. + * @param {number} markerHeight The height of the marker. * @protected */ - positionExternalValueConnection_(row: Blockly.blockRendering.Row): void; + positionBlock_(width: number, markerOffset: number, markerHeight: number): void; /** - * Position the previous connection on a block. + * Position the marker for an input connection. + * Displays a filled in puzzle piece. + * @param {!Blockly.RenderedConnection} connection The connection to position + * marker around. * @protected */ - positionPreviousConnection_(): void; + positionInput_(connection: Blockly.RenderedConnection): void; /** - * Position the next connection on a block. + * Move and show the marker at the specified coordinate in workspace units. + * Displays a horizontal line. + * @param {number} x The new x, in workspace units. + * @param {number} y The new y, in workspace units. + * @param {number} width The new width, in workspace units. * @protected */ - positionNextConnection_(): void; + positionLine_(x: number, y: number, width: number): void; /** - * Position the output connection on a block. + * Position the marker for an output connection. + * Displays a puzzle outline and the top and bottom path. + * @param {number} width The width of the block. + * @param {number} height The height of the block. + * @param {!Object} connectionShape The shape object for the connection. * @protected */ - positionOutputConnection_(): void; - } - -} - - -declare module Blockly.blockRendering { - - interface IPathObject { - - /** - * The primary path of the block. - * @type {!SVGElement} - */ - svgPath: SVGElement; - - /** - * The renderer's constant provider. - * @type {!Blockly.blockRendering.ConstantProvider} - */ - constants: Blockly.blockRendering.ConstantProvider; - - /** - * The primary path of the block. - * @type {!Blockly.Theme.BlockStyle} - */ - style: Blockly.Theme.BlockStyle; - - /** - * Holds the cursors svg element when the cursor is attached to the block. - * This is null if there is no cursor on the block. - * @type {SVGElement} - */ - cursorSvg: SVGElement; - - /** - * Holds the markers svg element when the marker is attached to the block. - * This is null if there is no marker on the block. - * @type {SVGElement} - */ - markerSvg: SVGElement; - - /** - * Set the path generated by the renderer onto the respective SVG element. - * @param {string} pathString The path. - * @package - */ - setPath(pathString: string): void; - - /** - * Apply the stored colours to the block's path, taking into account whether - * the paths belong to a shadow block. - * @param {!Blockly.Block} block The source block. - * @package - */ - applyColour(block: Blockly.Block): void; - - /** - * Update the style. - * @param {!Blockly.Theme.BlockStyle} blockStyle The block style to use. - * @package - */ - setStyle(blockStyle: Blockly.Theme.BlockStyle): void; - - /** - * Flip the SVG paths in RTL. - * @package - */ - flipRTL: any /*missing*/; - - /** - * Add the cursor svg to this block's svg group. - * @param {SVGElement} cursorSvg The svg root of the cursor to be added to the - * block svg group. - * @package - */ - setCursorSvg(cursorSvg: SVGElement): void; - - /** - * Add the marker svg to this block's svg group. - * @param {SVGElement} markerSvg The svg root of the marker to be added to the - * block svg group. - * @package - */ - setMarkerSvg(markerSvg: SVGElement): void; - - /** - * Set whether the block shows a highlight or not. Block highlighting is - * often used to visually mark blocks currently being executed. - * @param {boolean} highlighted True if highlighted. - * @package - */ - updateHighlighted(highlighted: boolean): void; - - /** - * Add or remove styling showing that a block is selected. - * @param {boolean} enable True if selection is enabled, false otherwise. - * @package - */ - updateSelected(enable: boolean): void; - - /** - * Add or remove styling showing that a block is dragged over a delete area. - * @param {boolean} enable True if the block is being dragged over a delete - * area, false otherwise. - * @package - */ - updateDraggingDelete(enable: boolean): void; - - /** - * Add or remove styling showing that a block is an insertion marker. - * @param {boolean} enable True if the block is an insertion marker, false - * otherwise. - * @package - */ - updateInsertionMarker(enable: boolean): void; - - /** - * Add or remove styling showing that a block is movable. - * @param {boolean} enable True if the block is movable, false otherwise. - * @package - */ - updateMovable(enable: boolean): void; - - /** - * Add or remove styling that shows that if the dragging block is dropped, this - * block will be replaced. If a shadow block, it will disappear. Otherwise it - * will bump. - * @param {boolean} enable True if styling should be added. - * @package - */ - updateReplacementFade(enable: boolean): void; - } -} - - -declare module Blockly.blockRendering { - - class RenderInfo extends RenderInfo__Class { } - /** Fake class which should be extended to avoid inheriting static properties */ - class RenderInfo__Class { + positionOutput_(width: number, height: number, connectionShape: Object): void; /** - * An object containing all sizing information needed to draw this block. - * - * This measure pass does not propagate changes to the block (although fields - * may choose to rerender when getSize() is called). However, calling it - * repeatedly may be expensive. - * - * @param {!Blockly.blockRendering.Renderer} renderer The renderer in use. - * @param {!Blockly.BlockSvg} block The block to measure. - * @constructor - * @package + * Position the marker for a previous connection. + * Displays a half rectangle with a notch in the top to represent the previous + * connection. + * @param {number} width The width of the block. + * @param {number} markerOffset The offset of the marker from around the block. + * @param {number} markerHeight The height of the marker. + * @param {!Object} connectionShape The shape object for the connection. + * @protected */ - constructor(renderer: Blockly.blockRendering.Renderer, block: Blockly.BlockSvg); + positionPrevious_(width: number, markerOffset: number, markerHeight: number, connectionShape: Object): void; /** - * The block renderer in use. - * @type {!Blockly.blockRendering.Renderer} + * Move and show the marker at the specified coordinate in workspace units. + * Displays a filled in rectangle. + * @param {number} x The new x, in workspace units. + * @param {number} y The new y, in workspace units. + * @param {number} width The new width, in workspace units. + * @param {number} height The new height, in workspace units. * @protected */ - renderer_: Blockly.blockRendering.Renderer; + positionRect_(x: number, y: number, width: number, height: number): void; /** - * The renderer's constant provider. - * @type {!Blockly.blockRendering.ConstantProvider} + * Hide the marker. + */ + hide(): void; + + /** + * Get the properties to make a marker blink. + * @return {!Object} The object holding attributes to make the marker blink. * @protected */ - constants_: Blockly.blockRendering.ConstantProvider; + getBlinkProperties_(): Object; /** - * A measurable representing the output connection if the block has one. - * Otherwise null. - * @type {Blockly.blockRendering.OutputConnection} + * Create the marker SVG. + * @return {Element} The SVG node created. + * @protected */ - outputConnection: Blockly.blockRendering.OutputConnection; + createDomInternal_(): Element; /** - * Whether the block should be rendered as a single line, either because it's - * inline or because it has been collapsed. - * @type {boolean} + * Apply the marker's colour. + * @param {!Blockly.ASTNode} _curNode The node that we want to draw the marker + * for. + * @protected */ - isInline: boolean; + applyColour_(_curNode: Blockly.ASTNode): void; /** - * Whether the block is collapsed. - * @type {boolean} + * Dispose of this marker. */ - isCollapsed: boolean; + dispose(): void; + } + +} + +declare module Blockly.blockRendering.MarkerSvg { + + /** + * The name of the CSS class for a cursor. + * @const {string} + */ + var CURSOR_CLASS: any /*missing*/; + + /** + * The name of the CSS class for a marker. + * @const {string} + */ + var MARKER_CLASS: any /*missing*/; + + /** + * What we multiply the height by to get the height of the marker. + * Only used for the block and block connections. + * @const {number} + */ + var HEIGHT_MULTIPLIER: any /*missing*/; +} + + +declare module Blockly.blockRendering { + + class PathObject extends PathObject__Class { } + /** Fake class which should be extended to avoid inheriting static properties */ + class PathObject__Class implements Blockly.blockRendering.IPathObject { /** - * Whether the block is an insertion marker. Insertion markers are the same - * shape as normal blocks, but don't show fields. - * @type {boolean} + * An object that handles creating and setting each of the SVG elements + * used by the renderer. + * @param {!SVGElement} root The root SVG element. + * @param {!Blockly.Theme.BlockStyle} style The style object to use for + * colouring. + * @param {!Blockly.blockRendering.ConstantProvider} constants The renderer's + * constants. + * @constructor + * @implements {Blockly.blockRendering.IPathObject} + * @package */ - isInsertionMarker: boolean; + constructor(root: SVGElement, style: Blockly.Theme.BlockStyle, constants: Blockly.blockRendering.ConstantProvider); /** - * True if the block should be rendered right-to-left. - * @type {boolean} + * The renderer's constant provider. + * @type {!Blockly.blockRendering.ConstantProvider} + * @package */ - RTL: boolean; + constants: Blockly.blockRendering.ConstantProvider; /** - * The height of the rendered block, including child blocks. - * @type {number} + * The primary path of the block. + * @type {!SVGElement} + * @package */ - height: number; + svgPath: SVGElement; /** - * The width of the rendered block, including child blocks. - * @type {number} + * The style object to use when colouring block paths. + * @type {!Blockly.Theme.BlockStyle} + * @package */ - widthWithChildren: number; + style: Blockly.Theme.BlockStyle; /** - * The width of the rendered block, excluding child blocks. This is the right - * edge of the block when rendered LTR. - * @type {number} + * Holds the cursors svg element when the cursor is attached to the block. + * This is null if there is no cursor on the block. + * @type {SVGElement} + * @package */ - width: number; + cursorSvg: SVGElement; /** - * - * @type {number} + * Holds the markers svg element when the marker is attached to the block. + * This is null if there is no marker on the block. + * @type {SVGElement} + * @package */ - statementEdge: number; + markerSvg: SVGElement; /** - * An array of Row objects containing sizing information. - * @type {!Array.} + * Set the path generated by the renderer onto the respective SVG element. + * @param {string} pathString The path. + * @package */ - rows: Blockly.blockRendering.Row[]; + setPath(pathString: string): void; /** - * An array of input rows on the block. - * @type {!Array.} + * Flip the SVG paths in RTL. + * @package */ - inputRows: Blockly.blockRendering.InputRow[]; + flipRTL(): void; /** - * An array of measurable objects containing hidden icons. - * @type {!Array.} + * Add the cursor svg to this block's svg group. + * @param {SVGElement} cursorSvg The svg root of the cursor to be added to the + * block svg group. + * @package */ - hiddenIcons: Blockly.blockRendering.Icon[]; + setCursorSvg(cursorSvg: SVGElement): void; /** - * An object with rendering information about the top row of the block. - * @type {!Blockly.blockRendering.TopRow} + * Add the marker svg to this block's svg group. + * @param {SVGElement} markerSvg The svg root of the marker to be added to the + * block svg group. + * @package */ - topRow: Blockly.blockRendering.TopRow; + setMarkerSvg(markerSvg: SVGElement): void; /** - * An object with rendering information about the bottom row of the block. - * @type {!Blockly.blockRendering.BottomRow} + * Apply the stored colours to the block's path, taking into account whether + * the paths belong to a shadow block. + * @param {!Blockly.Block} block The source block. + * @package */ - bottomRow: Blockly.blockRendering.BottomRow; + applyColour(block: Blockly.Block): void; /** - * Get the block renderer in use. - * @return {!Blockly.blockRendering.Renderer} The block renderer in use. + * Set the style. + * @param {!Blockly.Theme.BlockStyle} blockStyle The block style to use. * @package */ - getRenderer(): Blockly.blockRendering.Renderer; + setStyle(blockStyle: Blockly.Theme.BlockStyle): void; /** - * Populate and return an object containing all sizing information needed to - * draw this block. - * - * This measure pass does not propagate changes to the block (although fields - * may choose to rerender when getSize() is called). However, calling it - * repeatedly may be expensive. - * + * Add or remove the given CSS class on the path object's root SVG element. + * @param {string} className The name of the class to add or remove + * @param {boolean} add True if the class should be added. False if it should + * be removed. + * @protected + */ + setClass_(className: string, add: boolean): void; + + /** + * Set whether the block shows a highlight or not. Block highlighting is + * often used to visually mark blocks currently being executed. + * @param {boolean} enable True if highlighted. * @package */ - measure(): void; + updateHighlighted(enable: boolean): void; /** - * Create rows of Measurable objects representing all renderable parts of the - * block. + * Updates the look of the block to reflect a shadow state. + * @param {boolean} shadow True if the block is a shadow block. * @protected */ - createRows_(): void; + updateShadow_(shadow: boolean): void; /** - * Create all non-spacer elements that belong on the top row. + * Updates the look of the block to reflect a disabled state. + * @param {boolean} disabled True if disabled. + * @protected + */ + updateDisabled_(disabled: boolean): void; + + /** + * Add or remove styling showing that a block is selected. + * @param {boolean} enable True if selection is enabled, false otherwise. * @package */ - populateTopRow_(): void; + updateSelected(enable: boolean): void; /** - * Create all non-spacer elements that belong on the bottom row. + * Add or remove styling showing that a block is dragged over a delete area. + * @param {boolean} enable True if the block is being dragged over a delete + * area, false otherwise. * @package */ - populateBottomRow_(): void; + updateDraggingDelete(enable: boolean): void; /** - * Add an input element to the active row, if needed, and record the type of the - * input on the row. - * @param {!Blockly.Input} input The input to record information about. - * @param {!Blockly.blockRendering.Row} activeRow The row that is currently being - * populated. - * @protected + * Add or remove styling showing that a block is an insertion marker. + * @param {boolean} enable True if the block is an insertion marker, false + * otherwise. + * @package */ - addInput_(input: Blockly.Input, activeRow: Blockly.blockRendering.Row): void; + updateInsertionMarker(enable: boolean): void; /** - * Decide whether to start a new row between the two Blockly.Inputs. - * @param {!Blockly.Input} input The first input to consider - * @param {Blockly.Input} lastInput The input that follows. - * @return {boolean} True if the next input should be rendered on a new row. - * @protected + * Add or remove styling showing that a block is movable. + * @param {boolean} enable True if the block is movable, false otherwise. + * @package */ - shouldStartNewRow_(input: Blockly.Input, lastInput: Blockly.Input): boolean; + updateMovable(enable: boolean): void; /** - * Add horizontal spacing between and around elements within each row. - * @protected + * Add or remove styling that shows that if the dragging block is dropped, this + * block will be replaced. If a shadow block, it will disappear. Otherwise it + * will bump. + * @param {boolean} enable True if styling should be added. + * @package */ - addElemSpacing_(): void; + updateReplacementFade(enable: boolean): void; /** - * Calculate the width of a spacer element in a row based on the previous and - * next elements in that row. For instance, extra padding is added between two - * editable fields. - * @param {Blockly.blockRendering.Measurable} prev The element before the - * spacer. - * @param {Blockly.blockRendering.Measurable} next The element after the spacer. - * @return {number} The size of the spacing between the two elements. - * @protected + * Add or remove styling that shows that if the dragging block is dropped, this + * block will be connected to the input. + * @param {Blockly.Connection} _conn The connection on the input to highlight. + * @param {boolean} _enable True if styling should be added. + * @package */ - getInRowSpacing_(prev: Blockly.blockRendering.Measurable, next: Blockly.blockRendering.Measurable): number; + updateShapeForInputHighlight(_conn: Blockly.Connection, _enable: boolean): void; + } + +} + + +declare module Blockly.blockRendering { + + class Renderer extends Renderer__Class { } + /** Fake class which should be extended to avoid inheriting static properties */ + class Renderer__Class implements Blockly.IRegistrable { /** - * Figure out where the right edge of the block and right edge of statement inputs - * should be placed. - * @protected + * The base class for a block renderer. + * @param {string} name The renderer name. + * @package + * @constructor + * @implements {Blockly.IRegistrable} */ - computeBounds_(): void; + constructor(name: string); /** - * Extra spacing may be necessary to make sure that the right sides of all - * rows line up. This can only be calculated after a first pass to calculate - * the sizes of all rows. - * @protected + * The renderer name. + * @type {string} + * @package */ - alignRowElements_(): void; + name: string; /** - * Calculate the desired width of an input row. - * @param {!Blockly.blockRendering.Row} _row The input row. - * @return {number} The desired width of the input row. - * @protected + * Rendering constant overrides, passed in through options. + * @type {?Object} + * @package */ - getDesiredRowWidth_(_row: Blockly.blockRendering.Row): number; + overrides: Object; /** - * Modify the given row to add the given amount of padding around its fields. - * The exact location of the padding is based on the alignment property of the - * last input in the field. - * @param {Blockly.blockRendering.Row} row The row to add padding to. - * @param {number} missingSpace How much padding to add. - * @protected + * Gets the class name that identifies this renderer. + * @return {string} The CSS class name. + * @package */ - addAlignmentPadding_(row: Blockly.blockRendering.Row, missingSpace: number): void; + getClassName(): string; /** - * Align the elements of a statement row based on computed bounds. - * Unlike other types of rows, statement rows add space in multiple places. - * @param {!Blockly.blockRendering.InputRow} row The statement row to resize. - * @protected + * Initialize the renderer. + * @param {!Blockly.Theme} theme The workspace theme object. + * @param {Object=} opt_rendererOverrides Rendering constant overrides. + * @package */ - alignStatementRow_(row: Blockly.blockRendering.InputRow): void; + init(theme: Blockly.Theme, opt_rendererOverrides?: Object): void; /** - * Add spacers between rows and set their sizes. - * @protected + * Create any DOM elements that this renderer needs. + * @param {!SVGElement} svg The root of the workspace's SVG. + * @param {!Blockly.Theme} theme The workspace theme object. + * @package */ - addRowSpacing_(): void; + createDom(svg: SVGElement, theme: Blockly.Theme): void; /** - * Create a spacer row to go between prev and next, and set its size. - * @param {!Blockly.blockRendering.Row} prev The previous row. - * @param {!Blockly.blockRendering.Row} next The next row. - * @return {!Blockly.blockRendering.SpacerRow} The newly created spacer row. - * @protected + * Refresh the renderer after a theme change. + * @param {!SVGElement} svg The root of the workspace's SVG. + * @param {!Blockly.Theme} theme The workspace theme object. + * @package */ - makeSpacerRow_(prev: Blockly.blockRendering.Row, next: Blockly.blockRendering.Row): Blockly.blockRendering.SpacerRow; + refreshDom(svg: SVGElement, theme: Blockly.Theme): void; /** - * Calculate the width of a spacer row. - * @param {!Blockly.blockRendering.Row} _prev The row before the spacer. - * @param {!Blockly.blockRendering.Row} _next The row after the spacer. - * @return {number} The desired width of the spacer row between these two rows. - * @protected + * Dispose of this renderer. + * Delete all DOM elements that this renderer and its constants created. + * @package */ - getSpacerRowWidth_(_prev: Blockly.blockRendering.Row, _next: Blockly.blockRendering.Row): number; + dispose(): void; /** - * Calculate the height of a spacer row. - * @param {!Blockly.blockRendering.Row} _prev The row before the spacer. - * @param {!Blockly.blockRendering.Row} _next The row after the spacer. - * @return {number} The desired height of the spacer row between these two rows. + * Create a new instance of the renderer's constant provider. + * @return {!Blockly.blockRendering.ConstantProvider} The constant provider. * @protected */ - getSpacerRowHeight_(_prev: Blockly.blockRendering.Row, _next: Blockly.blockRendering.Row): number; + makeConstants_(): Blockly.blockRendering.ConstantProvider; /** - * Calculate the centerline of an element in a rendered row. - * This base implementation puts the centerline at the middle of the row - * vertically, with no special cases. You will likely need extra logic to - * handle (at minimum) top and bottom rows. - * @param {!Blockly.blockRendering.Row} row The row containing the element. - * @param {!Blockly.blockRendering.Measurable} elem The element to place. - * @return {number} The desired centerline of the given element, as an offset - * from the top left of the block. + * Create a new instance of the renderer's render info object. + * @param {!Blockly.BlockSvg} block The block to measure. + * @return {!Blockly.blockRendering.RenderInfo} The render info object. * @protected */ - getElemCenterline_(row: Blockly.blockRendering.Row, elem: Blockly.blockRendering.Measurable): number; + makeRenderInfo_(block: Blockly.BlockSvg): Blockly.blockRendering.RenderInfo; /** - * Record final position information on elements on the given row, for use in - * drawing. At minimum this records xPos and centerline on each element. - * @param {!Blockly.blockRendering.Row} row The row containing the elements. + * Create a new instance of the renderer's drawer. + * @param {!Blockly.BlockSvg} block The block to render. + * @param {!Blockly.blockRendering.RenderInfo} info An object containing all + * information needed to render this block. + * @return {!Blockly.blockRendering.Drawer} The drawer. * @protected */ - recordElemPositions_(row: Blockly.blockRendering.Row): void; + makeDrawer_(block: Blockly.BlockSvg, info: Blockly.blockRendering.RenderInfo): Blockly.blockRendering.Drawer; /** - * Make any final changes to the rendering information object. In particular, - * store the y position of each row, and record the height of the full block. + * Create a new instance of the renderer's debugger. + * @return {!Blockly.blockRendering.Debug} The renderer debugger. + * @suppress {strictModuleDepCheck} Debug renderer only included in playground. * @protected */ - finalize_(): void; - } - -} - - -declare module Blockly.blockRendering { - - class MarkerSvg extends MarkerSvg__Class { } - /** Fake class which should be extended to avoid inheriting static properties */ - class MarkerSvg__Class { + makeDebugger_(): Blockly.blockRendering.Debug; /** - * Class for a marker. + * Create a new instance of the renderer's marker drawer. * @param {!Blockly.WorkspaceSvg} workspace The workspace the marker belongs to. - * @param {!Blockly.blockRendering.ConstantProvider} constants The constants for - * the renderer. - * @param {!Blockly.Marker} marker The marker to draw. - * @constructor + * @param {!Blockly.Marker} marker The marker. + * @return {!Blockly.blockRendering.MarkerSvg} The object in charge of drawing + * the marker. + * @package */ - constructor(workspace: Blockly.WorkspaceSvg, constants: Blockly.blockRendering.ConstantProvider, marker: Blockly.Marker); + makeMarkerDrawer(workspace: Blockly.WorkspaceSvg, marker: Blockly.Marker): Blockly.blockRendering.MarkerSvg; /** - * The constants necessary to draw the marker. - * @type {Blockly.blockRendering.ConstantProvider} - * @protected + * Create a new instance of a renderer path object. + * @param {!SVGElement} root The root SVG element. + * @param {!Blockly.Theme.BlockStyle} style The style object to use for + * colouring. + * @return {!Blockly.blockRendering.IPathObject} The renderer path object. + * @package */ - constants_: Blockly.blockRendering.ConstantProvider; + makePathObject(root: SVGElement, style: Blockly.Theme.BlockStyle): Blockly.blockRendering.IPathObject; /** - * The current SVG element for the marker. - * @type {Element} + * Get the current renderer's constant provider. We assume that when this is + * called, the renderer has already been initialized. + * @return {!Blockly.blockRendering.ConstantProvider} The constant provider. + * @package */ - currentMarkerSvg: Element; + getConstants(): Blockly.blockRendering.ConstantProvider; /** - * The colour of the marker. - * @type {string} + * Determine whether or not to highlight a connection. + * @param {Blockly.Connection} _conn The connection to determine whether or not + * to highlight. + * @return {boolean} True if we should highlight the connection. + * @package */ - colour_: string; + shouldHighlightConnection(_conn: Blockly.Connection): boolean; /** - * Return the root node of the SVG or null if none exists. - * @return {SVGElement} The root SVG node. + * Checks if an orphaned block can connect to the "end" of the topBlock's + * block-clump. If the clump is a row the end is the last input. If the clump + * is a stack, the end is the last next connection. If the clump is neither, + * then this returns false. + * @param {!Blockly.BlockSvg} topBlock The top block of the block clump we want to try and + * connect to. + * @param {!Blockly.BlockSvg} orphanBlock The orphan block that wants to find + * a home. + * @param {number} localType The type of the connection being dragged. + * @return {boolean} Whether there is a home for the orphan or not. + * @package */ - getSvgRoot(): SVGElement; + orphanCanConnectAtEnd(topBlock: Blockly.BlockSvg, orphanBlock: Blockly.BlockSvg, localType: number): boolean; /** - * Get the marker. - * @return {!Blockly.Marker} The marker to draw for. + * Chooses a connection preview method based on the available connection, the + * current dragged connection, and the block being dragged. + * @param {!Blockly.RenderedConnection} closest The available connection. + * @param {!Blockly.RenderedConnection} local The connection currently being + * dragged. + * @param {!Blockly.BlockSvg} topBlock The block currently being dragged. + * @return {!Blockly.InsertionMarkerManager.PREVIEW_TYPE} The preview type + * to display. + * @package */ - getMarker(): Blockly.Marker; + getConnectionPreviewMethod(closest: Blockly.RenderedConnection, local: Blockly.RenderedConnection, topBlock: Blockly.BlockSvg): Blockly.InsertionMarkerManager.PREVIEW_TYPE; /** - * True if the marker should be drawn as a cursor, false otherwise. - * A cursor is drawn as a flashing line. A marker is drawn as a solid line. - * @return {boolean} True if the marker is a cursor, false otherwise. + * Render the block. + * @param {!Blockly.BlockSvg} block The block to render. + * @package */ - isCursor(): boolean; + render(block: Blockly.BlockSvg): void; + } + +} + + +declare module Blockly.blockRendering { + + class Measurable extends Measurable__Class { } + /** Fake class which should be extended to avoid inheriting static properties */ + class Measurable__Class { /** - * Create the DOM element for the marker. - * @return {!SVGElement} The marker controls SVG group. + * The base class to represent a part of a block that takes up space during + * rendering. The constructor for each non-spacer Measurable records the size + * of the block element (e.g. field, statement input). + * @param {!Blockly.blockRendering.ConstantProvider} constants The rendering + * constants provider. * @package + * @constructor */ - createDom(): SVGElement; + constructor(constants: Blockly.blockRendering.ConstantProvider); /** - * Attaches the SVG root of the marker to the SVG group of the parent. - * @param {!Blockly.IASTNodeLocationSvg} newParent The workspace, field, or - * block that the marker SVG element should be attached to. + * The renderer's constant provider. + * @type {!Blockly.blockRendering.ConstantProvider} * @protected */ - setParent_(newParent: Blockly.IASTNodeLocationSvg): void; + constants_: Blockly.blockRendering.ConstantProvider; + } - /** - * Update the marker. - * @param {Blockly.ASTNode} oldNode The previous node the marker was on or null. - * @param {Blockly.ASTNode} curNode The node that we want to draw the marker for. - */ - draw(oldNode: Blockly.ASTNode, curNode: Blockly.ASTNode): void; +} + + +declare module Blockly.blockRendering { + + class Connection extends Connection__Class { } + /** Fake class which should be extended to avoid inheriting static properties */ + class Connection__Class extends Blockly.blockRendering.Measurable__Class { /** - * Update the marker's visible state based on the type of curNode.. - * @param {!Blockly.ASTNode} curNode The node that we want to draw the marker for. - * @protected + * The base class to represent a connection and the space that it takes up on + * the block. + * @param {!Blockly.blockRendering.ConstantProvider} constants The rendering + * constants provider. + * @param {!Blockly.RenderedConnection} connectionModel The connection object on + * the block that this represents. + * @package + * @constructor + * @extends {Blockly.blockRendering.Measurable} */ - showAtLocation_(curNode: Blockly.ASTNode): void; + constructor(constants: Blockly.blockRendering.ConstantProvider, connectionModel: Blockly.RenderedConnection); + } - /** - * Position and display the marker for a block. - * @param {!Blockly.ASTNode} curNode The node to draw the marker for. - * @protected - */ - showWithBlock_(curNode: Blockly.ASTNode): void; + + class OutputConnection extends OutputConnection__Class { } + /** Fake class which should be extended to avoid inheriting static properties */ + class OutputConnection__Class extends Blockly.blockRendering.Connection__Class { /** - * Position and display the marker for a previous connection. - * @param {!Blockly.ASTNode} curNode The node to draw the marker for. - * @protected + * An object containing information about the space an output connection takes + * up during rendering. + * @param {!Blockly.blockRendering.ConstantProvider} constants The rendering + * constants provider. + * @param {Blockly.RenderedConnection} connectionModel The connection object on + * the block that this represents. + * @package + * @constructor + * @extends {Blockly.blockRendering.Connection} */ - showWithPrevious_(curNode: Blockly.ASTNode): void; + constructor(constants: Blockly.blockRendering.ConstantProvider, connectionModel: Blockly.RenderedConnection); + } - /** - * Position and display the marker for an output connection. - * @param {!Blockly.ASTNode} curNode The node to draw the marker for. - * @protected - */ - showWithOutput_(curNode: Blockly.ASTNode): void; + + class PreviousConnection extends PreviousConnection__Class { } + /** Fake class which should be extended to avoid inheriting static properties */ + class PreviousConnection__Class extends Blockly.blockRendering.Connection__Class { /** - * Position and display the marker for a workspace coordinate. - * This is a horizontal line. - * @param {!Blockly.ASTNode} curNode The node to draw the marker for. - * @protected + * An object containing information about the space a previous connection takes + * up during rendering. + * @param {!Blockly.blockRendering.ConstantProvider} constants The rendering + * constants provider. + * @param {Blockly.RenderedConnection} connectionModel The connection object on + * the block that this represents. + * @package + * @constructor + * @extends {Blockly.blockRendering.Connection} */ - showWithCoordinates_(curNode: Blockly.ASTNode): void; + constructor(constants: Blockly.blockRendering.ConstantProvider, connectionModel: Blockly.RenderedConnection); + } - /** - * Position and display the marker for a field. - * This is a box around the field. - * @param {!Blockly.ASTNode} curNode The node to draw the marker for. - * @protected - */ - showWithField_(curNode: Blockly.ASTNode): void; + + class NextConnection extends NextConnection__Class { } + /** Fake class which should be extended to avoid inheriting static properties */ + class NextConnection__Class extends Blockly.blockRendering.Connection__Class { /** - * Position and display the marker for an input. - * This is a puzzle piece. - * @param {!Blockly.ASTNode} curNode The node to draw the marker for. - * @protected + * An object containing information about the space a next connection takes + * up during rendering. + * @param {!Blockly.blockRendering.ConstantProvider} constants The rendering + * constants provider. + * @param {Blockly.RenderedConnection} connectionModel The connection object on + * the block that this represents. + * @package + * @constructor + * @extends {Blockly.blockRendering.Connection} */ - showWithInput_(curNode: Blockly.ASTNode): void; + constructor(constants: Blockly.blockRendering.ConstantProvider, connectionModel: Blockly.RenderedConnection); + } - /** - * Position and display the marker for a next connection. - * This is a horizontal line. - * @param {!Blockly.ASTNode} curNode The node to draw the marker for. - * @protected - */ - showWithNext_(curNode: Blockly.ASTNode): void; +} + + +declare module Blockly.blockRendering { + + class InputConnection extends InputConnection__Class { } + /** Fake class which should be extended to avoid inheriting static properties */ + class InputConnection__Class extends Blockly.blockRendering.Connection__Class { /** - * Position and display the marker for a stack. - * This is a box with extra padding around the entire stack of blocks. - * @param {!Blockly.ASTNode} curNode The node to draw the marker for. - * @protected + * The base class to represent an input that takes up space on a block + * during rendering + * @param {!Blockly.blockRendering.ConstantProvider} constants The rendering + * constants provider. + * @param {!Blockly.Input} input The input to measure and store information for. + * @package + * @constructor + * @extends {Blockly.blockRendering.Connection} */ - showWithStack_(curNode: Blockly.ASTNode): void; + constructor(constants: Blockly.blockRendering.ConstantProvider, input: Blockly.Input); + } - /** - * Show the current marker. - * @protected - */ - showCurrent_(): void; + + class InlineInput extends InlineInput__Class { } + /** Fake class which should be extended to avoid inheriting static properties */ + class InlineInput__Class extends Blockly.blockRendering.InputConnection__Class { /** - * Position the marker for a block. - * Displays an outline of the top half of a rectangle around a block. - * @param {number} width The width of the block. - * @param {number} markerOffset The extra padding for around the block. - * @param {number} markerHeight The height of the marker. - * @protected + * An object containing information about the space an inline input takes up + * during rendering + * @param {!Blockly.blockRendering.ConstantProvider} constants The rendering + * constants provider. + * @param {!Blockly.Input} input The inline input to measure and store + * information for. + * @package + * @constructor + * @extends {Blockly.blockRendering.InputConnection} */ - positionBlock_(width: number, markerOffset: number, markerHeight: number): void; + constructor(constants: Blockly.blockRendering.ConstantProvider, input: Blockly.Input); + } - /** - * Position the marker for an input connection. - * Displays a filled in puzzle piece. - * @param {!Blockly.RenderedConnection} connection The connection to position - * marker around. - * @protected - */ - positionInput_(connection: Blockly.RenderedConnection): void; + + class StatementInput extends StatementInput__Class { } + /** Fake class which should be extended to avoid inheriting static properties */ + class StatementInput__Class extends Blockly.blockRendering.InputConnection__Class { /** - * Move and show the marker at the specified coordinate in workspace units. - * Displays a horizontal line. - * @param {number} x The new x, in workspace units. - * @param {number} y The new y, in workspace units. - * @param {number} width The new width, in workspace units. - * @protected + * An object containing information about the space a statement input takes up + * during rendering + * @param {!Blockly.blockRendering.ConstantProvider} constants The rendering + * constants provider. + * @param {!Blockly.Input} input The statement input to measure and store + * information for. + * @package + * @constructor + * @extends {Blockly.blockRendering.InputConnection} */ - positionLine_(x: number, y: number, width: number): void; + constructor(constants: Blockly.blockRendering.ConstantProvider, input: Blockly.Input); + } + + + class ExternalValueInput extends ExternalValueInput__Class { } + /** Fake class which should be extended to avoid inheriting static properties */ + class ExternalValueInput__Class extends Blockly.blockRendering.InputConnection__Class { /** - * Position the marker for an output connection. - * Displays a puzzle outline and the top and bottom path. - * @param {number} width The width of the block. - * @param {number} height The height of the block. - * @param {!Object} connectionShape The shape object for the connection. - * @protected + * An object containing information about the space an external value input + * takes up during rendering + * @param {!Blockly.blockRendering.ConstantProvider} constants The rendering + * constants provider. + * @param {!Blockly.Input} input The external value input to measure and store + * information for. + * @package + * @constructor + * @extends {Blockly.blockRendering.InputConnection} */ - positionOutput_(width: number, height: number, connectionShape: Object): void; + constructor(constants: Blockly.blockRendering.ConstantProvider, input: Blockly.Input); + } + +} + + +declare module Blockly.blockRendering { + + class Icon extends Icon__Class { } + /** Fake class which should be extended to avoid inheriting static properties */ + class Icon__Class extends Blockly.blockRendering.Measurable__Class { /** - * Position the marker for a previous connection. - * Displays a half rectangle with a notch in the top to represent the previous - * connection. - * @param {number} width The width of the block. - * @param {number} markerOffset The offset of the marker from around the block. - * @param {number} markerHeight The height of the marker. - * @param {!Object} connectionShape The shape object for the connection. - * @protected + * An object containing information about the space an icon takes up during + * rendering + * @param {!Blockly.blockRendering.ConstantProvider} constants The rendering + * constants provider. + * @param {!Blockly.Icon} icon The icon to measure and store information for. + * @package + * @constructor + * @extends {Blockly.blockRendering.Measurable} */ - positionPrevious_(width: number, markerOffset: number, markerHeight: number, connectionShape: Object): void; + constructor(constants: Blockly.blockRendering.ConstantProvider, icon: Blockly.Icon); + } + + + class JaggedEdge extends JaggedEdge__Class { } + /** Fake class which should be extended to avoid inheriting static properties */ + class JaggedEdge__Class extends Blockly.blockRendering.Measurable__Class { /** - * Move and show the marker at the specified coordinate in workspace units. - * Displays a filled in rectangle. - * @param {number} x The new x, in workspace units. - * @param {number} y The new y, in workspace units. - * @param {number} width The new width, in workspace units. - * @param {number} height The new height, in workspace units. - * @protected + * An object containing information about the jagged edge of a collapsed block + * takes up during rendering + * @param {!Blockly.blockRendering.ConstantProvider} constants The rendering + * constants provider. + * @package + * @constructor + * @extends {Blockly.blockRendering.Measurable} */ - positionRect_(x: number, y: number, width: number, height: number): void; + constructor(constants: Blockly.blockRendering.ConstantProvider); + } + + + class Field extends Field__Class { } + /** Fake class which should be extended to avoid inheriting static properties */ + class Field__Class extends Blockly.blockRendering.Measurable__Class { /** - * Hide the marker. + * An object containing information about the space a field takes up during + * rendering + * @param {!Blockly.blockRendering.ConstantProvider} constants The rendering + * constants provider. + * @param {!Blockly.Field} field The field to measure and store information for. + * @param {!Blockly.Input} parentInput The parent input for the field. + * @package + * @constructor + * @extends {Blockly.blockRendering.Measurable} */ - hide(): void; + constructor(constants: Blockly.blockRendering.ConstantProvider, field: Blockly.Field, parentInput: Blockly.Input); + } + + + class Hat extends Hat__Class { } + /** Fake class which should be extended to avoid inheriting static properties */ + class Hat__Class extends Blockly.blockRendering.Measurable__Class { /** - * Get the properties to make a marker blink. - * @return {!Object} The object holding attributes to make the marker blink. - * @protected + * An object containing information about the space a hat takes up during + * rendering. + * @param {!Blockly.blockRendering.ConstantProvider} constants The rendering + * constants provider. + * @package + * @constructor + * @extends {Blockly.blockRendering.Measurable} */ - getBlinkProperties_(): Object; + constructor(constants: Blockly.blockRendering.ConstantProvider); + } + + + class SquareCorner extends SquareCorner__Class { } + /** Fake class which should be extended to avoid inheriting static properties */ + class SquareCorner__Class extends Blockly.blockRendering.Measurable__Class { /** - * Create the marker SVG. - * @return {Element} The SVG node created. - * @protected + * An object containing information about the space a square corner takes up + * during rendering. + * @param {!Blockly.blockRendering.ConstantProvider} constants The rendering + * constants provider. + * @param {string=} opt_position The position of this corner. + * @package + * @constructor + * @extends {Blockly.blockRendering.Measurable} */ - createDomInternal_(): Element; + constructor(constants: Blockly.blockRendering.ConstantProvider, opt_position?: string); + } + + + class RoundCorner extends RoundCorner__Class { } + /** Fake class which should be extended to avoid inheriting static properties */ + class RoundCorner__Class extends Blockly.blockRendering.Measurable__Class { /** - * Apply the marker's colour. - * @param {!Blockly.ASTNode} _curNode The node that we want to draw the marker - * for. - * @protected + * An object containing information about the space a rounded corner takes up + * during rendering. + * @param {!Blockly.blockRendering.ConstantProvider} constants The rendering + * constants provider. + * @param {string=} opt_position The position of this corner. + * @package + * @constructor + * @extends {Blockly.blockRendering.Measurable} */ - applyColour_(_curNode: Blockly.ASTNode): void; + constructor(constants: Blockly.blockRendering.ConstantProvider, opt_position?: string); + } + + + class InRowSpacer extends InRowSpacer__Class { } + /** Fake class which should be extended to avoid inheriting static properties */ + class InRowSpacer__Class extends Blockly.blockRendering.Measurable__Class { /** - * Dispose of this marker. + * An object containing information about a spacer between two elements on a + * row. + * @param {!Blockly.blockRendering.ConstantProvider} constants The rendering + * constants provider. + * @param {number} width The width of the spacer. + * @package + * @constructor + * @extends {Blockly.blockRendering.Measurable} */ - dispose(): void; + constructor(constants: Blockly.blockRendering.ConstantProvider, width: number); } } -declare module Blockly.blockRendering.MarkerSvg { - - /** - * The name of the CSS class for a cursor. - * @const {string} - */ - var CURSOR_CLASS: any /*missing*/; - - /** - * The name of the CSS class for a marker. - * @const {string} - */ - var MARKER_CLASS: any /*missing*/; - - /** - * What we multiply the height by to get the height of the marker. - * Only used for the block and block connections. - * @const {number} - */ - var HEIGHT_MULTIPLIER: any /*missing*/; -} - declare module Blockly.blockRendering { - class PathObject extends PathObject__Class { } + class Row extends Row__Class { } /** Fake class which should be extended to avoid inheriting static properties */ - class PathObject__Class implements Blockly.blockRendering.IPathObject { + class Row__Class { /** - * An object that handles creating and setting each of the SVG elements - * used by the renderer. - * @param {!SVGElement} root The root SVG element. - * @param {!Blockly.Theme.BlockStyle} style The style object to use for - * colouring. - * @param {!Blockly.blockRendering.ConstantProvider} constants The renderer's - * constants. + * An object representing a single row on a rendered block and all of its + * subcomponents. + * @param {!Blockly.blockRendering.ConstantProvider} constants The rendering + * constants provider. + * @package * @constructor - * @implements {Blockly.blockRendering.IPathObject} + */ + constructor(constants: Blockly.blockRendering.ConstantProvider); + + /** + * The type of this rendering object. * @package + * @type {number} */ - constructor(root: SVGElement, style: Blockly.Theme.BlockStyle, constants: Blockly.blockRendering.ConstantProvider); + type: number; /** - * The renderer's constant provider. - * @type {!Blockly.blockRendering.ConstantProvider} + * An array of elements contained in this row. * @package + * @type {!Array.} */ - constants: Blockly.blockRendering.ConstantProvider; + elements: Blockly.blockRendering.Measurable[]; /** - * The primary path of the block. - * @type {!SVGElement} + * The height of the row. * @package + * @type {number} */ - svgPath: SVGElement; + height: number; /** - * The style object to use when colouring block paths. - * @type {!Blockly.Theme.BlockStyle} + * The width of the row, from the left edge of the block to the right. + * Does not include child blocks unless they are inline. * @package + * @type {number} */ - style: Blockly.Theme.BlockStyle; + width: number; /** - * Holds the cursors svg element when the cursor is attached to the block. - * This is null if there is no cursor on the block. - * @type {SVGElement} + * The minimum height of the row. * @package + * @type {number} */ - cursorSvg: SVGElement; + minHeight: number; /** - * Holds the markers svg element when the marker is attached to the block. - * This is null if there is no marker on the block. - * @type {SVGElement} + * The minimum width of the row, from the left edge of the block to the right. + * Does not include child blocks unless they are inline. * @package + * @type {number} */ - markerSvg: SVGElement; + minWidth: number; /** - * Set the path generated by the renderer onto the respective SVG element. - * @param {string} pathString The path. + * The width of the row, from the left edge of the block to the edge of the + * block or any connected child blocks. * @package + * @type {number} */ - setPath(pathString: string): void; + widthWithConnectedBlocks: number; /** - * Flip the SVG paths in RTL. + * The Y position of the row relative to the origin of the block's svg group. * @package + * @type {number} */ - flipRTL(): void; + yPos: number; /** - * Add the cursor svg to this block's svg group. - * @param {SVGElement} cursorSvg The svg root of the cursor to be added to the - * block svg group. + * The X position of the row relative to the origin of the block's svg group. * @package + * @type {number} */ - setCursorSvg(cursorSvg: SVGElement): void; + xPos: number; /** - * Add the marker svg to this block's svg group. - * @param {SVGElement} markerSvg The svg root of the marker to be added to the - * block svg group. + * Whether the row has any external inputs. * @package + * @type {boolean} */ - setMarkerSvg(markerSvg: SVGElement): void; + hasExternalInput: boolean; /** - * Apply the stored colours to the block's path, taking into account whether - * the paths belong to a shadow block. - * @param {!Blockly.Block} block The source block. + * Whether the row has any statement inputs. * @package + * @type {boolean} */ - applyColour(block: Blockly.Block): void; + hasStatement: boolean; /** - * Set the style. - * @param {!Blockly.Theme.BlockStyle} blockStyle The block style to use. + * Whether the row has any inline inputs. * @package + * @type {boolean} */ - setStyle(blockStyle: Blockly.Theme.BlockStyle): void; + hasInlineInput: boolean; /** - * Add or remove the given CSS class on the path object's root SVG element. - * @param {string} className The name of the class to add or remove - * @param {boolean} add True if the class should be added. False if it should - * be removed. - * @protected + * Whether the row has any dummy inputs. + * @package + * @type {boolean} */ - setClass_(className: string, add: boolean): void; + hasDummyInput: boolean; /** - * Set whether the block shows a highlight or not. Block highlighting is - * often used to visually mark blocks currently being executed. - * @param {boolean} enable True if highlighted. + * Whether the row has a jagged edge. * @package + * @type {boolean} */ - updateHighlighted(enable: boolean): void; + hasJaggedEdge: boolean; /** - * Updates the look of the block to reflect a shadow state. - * @param {boolean} shadow True if the block is a shadow block. + * The renderer's constant provider. + * @type {!Blockly.blockRendering.ConstantProvider} * @protected */ - updateShadow_(shadow: boolean): void; + constants_: Blockly.blockRendering.ConstantProvider; /** - * Updates the look of the block to reflect a disabled state. - * @param {boolean} disabled True if disabled. - * @protected + * Alignment of the row. + * @package + * @type {?number} */ - updateDisabled_(disabled: boolean): void; + align: number; /** - * Add or remove styling showing that a block is selected. - * @param {boolean} enable True if selection is enabled, false otherwise. + * Inspect all subcomponents and populate all size properties on the row. * @package */ - updateSelected(enable: boolean): void; + measure(): void; /** - * Add or remove styling showing that a block is dragged over a delete area. - * @param {boolean} enable True if the block is being dragged over a delete - * area, false otherwise. + * Get the last input on this row, if it has one. + * @return {Blockly.blockRendering.InputConnection} The last input on the row, + * or null. * @package */ - updateDraggingDelete(enable: boolean): void; + getLastInput(): Blockly.blockRendering.InputConnection; /** - * Add or remove styling showing that a block is an insertion marker. - * @param {boolean} enable True if the block is an insertion marker, false - * otherwise. + * Determines whether this row should start with an element spacer. + * @return {boolean} Whether the row should start with a spacer. * @package */ - updateInsertionMarker(enable: boolean): void; + startsWithElemSpacer(): boolean; /** - * Add or remove styling showing that a block is movable. - * @param {boolean} enable True if the block is movable, false otherwise. + * Determines whether this row should end with an element spacer. + * @return {boolean} Whether the row should end with a spacer. * @package */ - updateMovable(enable: boolean): void; + endsWithElemSpacer(): boolean; /** - * Add or remove styling that shows that if the dragging block is dropped, this - * block will be replaced. If a shadow block, it will disappear. Otherwise it - * will bump. - * @param {boolean} enable True if styling should be added. + * Convenience method to get the first spacer element on this row. + * @return {Blockly.blockRendering.InRowSpacer} The first spacer element on + * this row. * @package */ - updateReplacementFade(enable: boolean): void; + getFirstSpacer(): Blockly.blockRendering.InRowSpacer; /** - * Add or remove styling that shows that if the dragging block is dropped, this - * block will be connected to the input. - * @param {Blockly.Connection} _conn The connection on the input to highlight. - * @param {boolean} _enable True if styling should be added. + * Convenience method to get the last spacer element on this row. + * @return {Blockly.blockRendering.InRowSpacer} The last spacer element on + * this row. * @package */ - updateShapeForInputHighlight(_conn: Blockly.Connection, _enable: boolean): void; + getLastSpacer(): Blockly.blockRendering.InRowSpacer; } -} - - -declare module Blockly.blockRendering { - class Renderer extends Renderer__Class { } + class TopRow extends TopRow__Class { } /** Fake class which should be extended to avoid inheriting static properties */ - class Renderer__Class implements Blockly.IRegistrable { + class TopRow__Class extends Blockly.blockRendering.Row__Class { /** - * The base class for a block renderer. - * @param {string} name The renderer name. + * An object containing information about what elements are in the top row of a + * block as well as sizing information for the top row. + * Elements in a top row can consist of corners, hats, spacers, and previous + * connections. + * After this constructor is called, the row will contain all non-spacer + * elements it needs. + * @param {!Blockly.blockRendering.ConstantProvider} constants The rendering + * constants provider. * @package * @constructor - * @implements {Blockly.IRegistrable} + * @extends {Blockly.blockRendering.Row} */ - constructor(name: string); + constructor(constants: Blockly.blockRendering.ConstantProvider); /** - * The renderer name. - * @type {string} + * The starting point for drawing the row, in the y direction. + * This allows us to draw hats and similar shapes that don't start at the + * origin. Must be non-negative (see #2820). * @package + * @type {number} */ - name: string; + capline: number; /** - * Rendering constant overrides, passed in through options. - * @type {?Object} - * @package + * How much the row extends up above its capline. + * @type {number} */ - overrides: Object; + ascenderHeight: number; /** - * Gets the class name that identifies this renderer. - * @return {string} The CSS class name. + * Whether the block has a previous connection. * @package + * @type {boolean} */ - getClassName(): string; + hasPreviousConnection: boolean; /** - * Initialize the renderer. - * @param {!Blockly.Theme} theme The workspace theme object. - * @param {Object=} opt_rendererOverrides Rendering constant overrides. - * @package + * The previous connection on the block, if any. + * @type {Blockly.blockRendering.PreviousConnection} */ - init(theme: Blockly.Theme, opt_rendererOverrides?: Object): void; + connection: Blockly.blockRendering.PreviousConnection; /** - * Create any DOM elements that this renderer needs. - * @param {!SVGElement} svg The root of the workspace's SVG. - * @param {!Blockly.Theme} theme The workspace theme object. - * @package + * Returns whether or not the top row has a left square corner. + * @param {!Blockly.BlockSvg} block The block whose top row this represents. + * @return {boolean} Whether or not the top row has a left square corner. */ - createDom(svg: SVGElement, theme: Blockly.Theme): void; + hasLeftSquareCorner(block: Blockly.BlockSvg): boolean; /** - * Refresh the renderer after a theme change. - * @param {!SVGElement} svg The root of the workspace's SVG. - * @param {!Blockly.Theme} theme The workspace theme object. - * @package + * Returns whether or not the top row has a right square corner. + * @param {!Blockly.BlockSvg} _block The block whose top row this represents. + * @return {boolean} Whether or not the top row has a right square corner. */ - refreshDom(svg: SVGElement, theme: Blockly.Theme): void; + hasRightSquareCorner(_block: Blockly.BlockSvg): boolean; + } + + + class BottomRow extends BottomRow__Class { } + /** Fake class which should be extended to avoid inheriting static properties */ + class BottomRow__Class extends Blockly.blockRendering.Row__Class { /** - * Dispose of this renderer. - * Delete all DOM elements that this renderer and its constants created. + * An object containing information about what elements are in the bottom row of + * a block as well as spacing information for the top row. + * Elements in a bottom row can consist of corners, spacers and next + * connections. + * @param {!Blockly.blockRendering.ConstantProvider} constants The rendering + * constants provider. * @package + * @constructor + * @extends {Blockly.blockRendering.Row} */ - dispose(): void; + constructor(constants: Blockly.blockRendering.ConstantProvider); /** - * Create a new instance of the renderer's constant provider. - * @return {!Blockly.blockRendering.ConstantProvider} The constant provider. - * @protected + * Whether this row has a next connection. + * @package + * @type {boolean} */ - makeConstants_(): Blockly.blockRendering.ConstantProvider; + hasNextConnection: boolean; /** - * Create a new instance of the renderer's render info object. - * @param {!Blockly.BlockSvg} block The block to measure. - * @return {!Blockly.blockRendering.RenderInfo} The render info object. - * @protected + * The next connection on the row, if any. + * @package + * @type {Blockly.blockRendering.NextConnection} */ - makeRenderInfo_(block: Blockly.BlockSvg): Blockly.blockRendering.RenderInfo; + connection: Blockly.blockRendering.NextConnection; /** - * Create a new instance of the renderer's drawer. - * @param {!Blockly.BlockSvg} block The block to render. - * @param {!Blockly.blockRendering.RenderInfo} info An object containing all - * information needed to render this block. - * @return {!Blockly.blockRendering.Drawer} The drawer. - * @protected + * The amount that the bottom of the block extends below the horizontal edge, + * e.g. because of a next connection. Must be non-negative (see #2820). + * @package + * @type {number} */ - makeDrawer_(block: Blockly.BlockSvg, info: Blockly.blockRendering.RenderInfo): Blockly.blockRendering.Drawer; + descenderHeight: number; /** - * Create a new instance of the renderer's debugger. - * @return {!Blockly.blockRendering.Debug} The renderer debugger. - * @suppress {strictModuleDepCheck} Debug renderer only included in playground. - * @protected + * The Y position of the bottom edge of the block, relative to the origin + * of the block rendering. + * @type {number} */ - makeDebugger_(): Blockly.blockRendering.Debug; + baseline: number; /** - * Create a new instance of the renderer's marker drawer. - * @param {!Blockly.WorkspaceSvg} workspace The workspace the marker belongs to. - * @param {!Blockly.Marker} marker The marker. - * @return {!Blockly.blockRendering.MarkerSvg} The object in charge of drawing - * the marker. - * @package + * Returns whether or not the bottom row has a left square corner. + * @param {!Blockly.BlockSvg} block The block whose bottom row this represents. + * @return {boolean} Whether or not the bottom row has a left square corner. */ - makeMarkerDrawer(workspace: Blockly.WorkspaceSvg, marker: Blockly.Marker): Blockly.blockRendering.MarkerSvg; + hasLeftSquareCorner(block: Blockly.BlockSvg): boolean; /** - * Create a new instance of a renderer path object. - * @param {!SVGElement} root The root SVG element. - * @param {!Blockly.Theme.BlockStyle} style The style object to use for - * colouring. - * @return {!Blockly.blockRendering.IPathObject} The renderer path object. - * @package + * Returns whether or not the bottom row has a right square corner. + * @param {!Blockly.BlockSvg} _block The block whose bottom row this represents. + * @return {boolean} Whether or not the bottom row has a right square corner. */ - makePathObject(root: SVGElement, style: Blockly.Theme.BlockStyle): Blockly.blockRendering.IPathObject; + hasRightSquareCorner(_block: Blockly.BlockSvg): boolean; + } - /** - * Get the current renderer's constant provider. We assume that when this is - * called, the renderer has already been initialized. - * @return {!Blockly.blockRendering.ConstantProvider} The constant provider. - * @package - */ - getConstants(): Blockly.blockRendering.ConstantProvider; + + class SpacerRow extends SpacerRow__Class { } + /** Fake class which should be extended to avoid inheriting static properties */ + class SpacerRow__Class extends Blockly.blockRendering.Row__Class { /** - * Determine whether or not to highlight a connection. - * @param {Blockly.Connection} _conn The connection to determine whether or not - * to highlight. - * @return {boolean} True if we should highlight the connection. + * An object containing information about a spacer between two rows. + * @param {!Blockly.blockRendering.ConstantProvider} constants The rendering + * constants provider. + * @param {number} height The height of the spacer. + * @param {number} width The width of the spacer. * @package + * @constructor + * @extends {Blockly.blockRendering.Row} */ - shouldHighlightConnection(_conn: Blockly.Connection): boolean; + constructor(constants: Blockly.blockRendering.ConstantProvider, height: number, width: number); + } + + + class InputRow extends InputRow__Class { } + /** Fake class which should be extended to avoid inheriting static properties */ + class InputRow__Class extends Blockly.blockRendering.Row__Class { /** - * Checks if an orphaned block can connect to the "end" of the topBlock's - * block-clump. If the clump is a row the end is the last input. If the clump - * is a stack, the end is the last next connection. If the clump is neither, - * then this returns false. - * @param {!Blockly.BlockSvg} topBlock The top block of the block clump we want to try and - * connect to. - * @param {!Blockly.BlockSvg} orphanBlock The orphan block that wants to find - * a home. - * @param {number} localType The type of the connection being dragged. - * @return {boolean} Whether there is a home for the orphan or not. + * An object containing information about a row that holds one or more inputs. + * @param {!Blockly.blockRendering.ConstantProvider} constants The rendering + * constants provider. * @package + * @constructor + * @extends {Blockly.blockRendering.Row} */ - orphanCanConnectAtEnd(topBlock: Blockly.BlockSvg, orphanBlock: Blockly.BlockSvg, localType: number): boolean; - - /** - * Chooses a connection preview method based on the available connection, the - * current dragged connection, and the block being dragged. - * @param {!Blockly.RenderedConnection} closest The available connection. - * @param {!Blockly.RenderedConnection} local The connection currently being - * dragged. - * @param {!Blockly.BlockSvg} topBlock The block currently being dragged. - * @return {!Blockly.InsertionMarkerManager.PREVIEW_TYPE} The preview type - * to display. + constructor(constants: Blockly.blockRendering.ConstantProvider); + + /** + * The total width of all blocks connected to this row. + * @type {number} * @package */ - getConnectionPreviewMethod(closest: Blockly.RenderedConnection, local: Blockly.RenderedConnection, topBlock: Blockly.BlockSvg): Blockly.InsertionMarkerManager.PREVIEW_TYPE; + connectedBlockWidths: number; /** - * Render the block. - * @param {!Blockly.BlockSvg} block The block to render. + * Inspect all subcomponents and populate all size properties on the row. * @package */ - render(block: Blockly.BlockSvg): void; + measure(): void; } } +declare module Blockly.blockRendering { + + /** + * Types of rendering elements. + * @enum {number} + */ + enum Types { NONE, FIELD, HAT, ICON, SPACER, BETWEEN_ROW_SPACER, IN_ROW_SPACER, EXTERNAL_VALUE_INPUT, INPUT, INLINE_INPUT, STATEMENT_INPUT, CONNECTION, PREVIOUS_CONNECTION, NEXT_CONNECTION, OUTPUT_CONNECTION, CORNER, LEFT_SQUARE_CORNER, LEFT_ROUND_CORNER, RIGHT_SQUARE_CORNER, RIGHT_ROUND_CORNER, JAGGED_EDGE, ROW, TOP_ROW, BOTTOM_ROW, INPUT_ROW } +} + +declare module Blockly.blockRendering.Types { + + /** + * A Left Corner Union Type. + * @type {number} + * @const + * @package + */ + var LEFT_CORNER: number; + + /** + * A Right Corner Union Type. + * @type {number} + * @const + * @package + */ + var RIGHT_CORNER: number; + + /** + * Get the enum flag value of an existing type or register a new type. + * @param {!string} type The name of the type. + * @return {!number} The enum flag value associated with that type. + * @package + */ + function getType(type: string): number; + + /** + * Whether a measurable stores information about a field. + * @param {!Blockly.blockRendering.Measurable} elem The element to check. + * @return {number} 1 if the object stores information about a field. + * @package + */ + function isField(elem: Blockly.blockRendering.Measurable): number; + + /** + * Whether a measurable stores information about a hat. + * @param {!Blockly.blockRendering.Measurable} elem The element to check. + * @return {number} 1 if the object stores information about a hat. + * @package + */ + function isHat(elem: Blockly.blockRendering.Measurable): number; + + /** + * Whether a measurable stores information about an icon. + * @param {!Blockly.blockRendering.Measurable} elem The element to check. + * @return {number} 1 if the object stores information about an icon. + * @package + */ + function isIcon(elem: Blockly.blockRendering.Measurable): number; + + /** + * Whether a measurable stores information about a spacer. + * @param {!Blockly.blockRendering.Measurable|!Blockly.blockRendering.Row} elem + * The element to check. + * @return {number} 1 if the object stores information about a spacer. + * @package + */ + function isSpacer(elem: Blockly.blockRendering.Measurable|Blockly.blockRendering.Row): number; + + /** + * Whether a measurable stores information about an in-row spacer. + * @param {!Blockly.blockRendering.Measurable} elem The element to check. + * @return {number} 1 if the object stores information about an + * in-row spacer. + * @package + */ + function isInRowSpacer(elem: Blockly.blockRendering.Measurable): number; + + /** + * Whether a measurable stores information about an input. + * @param {!Blockly.blockRendering.Measurable} elem The element to check. + * @return {number} 1 if the object stores information about an input. + * @package + */ + function isInput(elem: Blockly.blockRendering.Measurable): number; + + /** + * Whether a measurable stores information about an external input. + * @param {!Blockly.blockRendering.Measurable} elem The element to check. + * @return {number} 1 if the object stores information about an + * external input. + * @package + */ + function isExternalInput(elem: Blockly.blockRendering.Measurable): number; + + /** + * Whether a measurable stores information about an inline input. + * @param {!Blockly.blockRendering.Measurable} elem The element to check. + * @return {number} 1 if the object stores information about an + * inline input. + * @package + */ + function isInlineInput(elem: Blockly.blockRendering.Measurable): number; + + /** + * Whether a measurable stores information about a statement input. + * @param {!Blockly.blockRendering.Measurable} elem The element to check. + * @return {number} 1 if the object stores information about a + * statement input. + * @package + */ + function isStatementInput(elem: Blockly.blockRendering.Measurable): number; + + /** + * Whether a measurable stores information about a previous connection. + * @param {!Blockly.blockRendering.Measurable} elem The element to check. + * @return {number} 1 if the object stores information about a + * previous connection. + * @package + */ + function isPreviousConnection(elem: Blockly.blockRendering.Measurable): number; + + /** + * Whether a measurable stores information about a next connection. + * @param {!Blockly.blockRendering.Measurable} elem The element to check. + * @return {number} 1 if the object stores information about a + * next connection. + * @package + */ + function isNextConnection(elem: Blockly.blockRendering.Measurable): number; + + /** + * Whether a measurable stores information about a previous or next connection. + * @param {!Blockly.blockRendering.Measurable} elem The element to check. + * @return {number} 1 if the object stores information about a previous or + * next connection. + * @package + */ + function isPreviousOrNextConnection(elem: Blockly.blockRendering.Measurable): number; + + /** + * Whether a measurable stores information about a left round corner. + * @param {!Blockly.blockRendering.Measurable} elem The element to check. + * @return {number} 1 if the object stores information about a + * left round corner. + * @package + */ + function isLeftRoundedCorner(elem: Blockly.blockRendering.Measurable): number; + + /** + * Whether a measurable stores information about a right round corner. + * @param {!Blockly.blockRendering.Measurable} elem The element to check. + * @return {number} 1 if the object stores information about a + * right round corner. + * @package + */ + function isRightRoundedCorner(elem: Blockly.blockRendering.Measurable): number; + + /** + * Whether a measurable stores information about a left square corner. + * @param {!Blockly.blockRendering.Measurable} elem The element to check. + * @return {number} 1 if the object stores information about a + * left square corner. + * @package + */ + function isLeftSquareCorner(elem: Blockly.blockRendering.Measurable): number; + + /** + * Whether a measurable stores information about a right square corner. + * @param {!Blockly.blockRendering.Measurable} elem The element to check. + * @return {number} 1 if the object stores information about a + * right square corner. + * @package + */ + function isRightSquareCorner(elem: Blockly.blockRendering.Measurable): number; + + /** + * Whether a measurable stores information about a corner. + * @param {!Blockly.blockRendering.Measurable} elem The element to check. + * @return {number} 1 if the object stores information about a + * corner. + * @package + */ + function isCorner(elem: Blockly.blockRendering.Measurable): number; + + /** + * Whether a measurable stores information about a jagged edge. + * @param {!Blockly.blockRendering.Measurable} elem The element to check. + * @return {number} 1 if the object stores information about a jagged edge. + * @package + */ + function isJaggedEdge(elem: Blockly.blockRendering.Measurable): number; + + /** + * Whether a measurable stores information about a row. + * @param {!Blockly.blockRendering.Row} row The row to check. + * @return {number} 1 if the object stores information about a row. + * @package + */ + function isRow(row: Blockly.blockRendering.Row): number; + + /** + * Whether a measurable stores information about a between-row spacer. + * @param {!Blockly.blockRendering.Row} row The row to check. + * @return {number} 1 if the object stores information about a + * between-row spacer. + * @package + */ + function isBetweenRowSpacer(row: Blockly.blockRendering.Row): number; + + /** + * Whether a measurable stores information about a top row. + * @param {!Blockly.blockRendering.Row} row The row to check. + * @return {number} 1 if the object stores information about a top row. + * @package + */ + function isTopRow(row: Blockly.blockRendering.Row): number; + + /** + * Whether a measurable stores information about a bottom row. + * @param {!Blockly.blockRendering.Row} row The row to check. + * @return {number} 1 if the object stores information about a bottom row. + * @package + */ + function isBottomRow(row: Blockly.blockRendering.Row): number; + + /** + * Whether a measurable stores information about a top or bottom row. + * @param {!Blockly.blockRendering.Row} row The row to check. + * @return {number} 1 if the object stores information about a top or + * bottom row. + * @package + */ + function isTopOrBottomRow(row: Blockly.blockRendering.Row): number; + + /** + * Whether a measurable stores information about an input row. + * @param {!Blockly.blockRendering.Row} row The row to check. + * @return {number} 1 if the object stores information about an input row. + * @package + */ + function isInputRow(row: Blockly.blockRendering.Row): number; +} + + declare module Blockly.Msg { /** @type {string} */ diff --git a/typings/templates/blockly-interfaces.template b/typings/templates/blockly-interfaces.template index a1639546f59..4f158d3edb7 100644 --- a/typings/templates/blockly-interfaces.template +++ b/typings/templates/blockly-interfaces.template @@ -40,6 +40,7 @@ declare module Blockly { }; renderer?: string; keyMap?: {[type: string]: Blockly.Action;}; + parentWorkspace?: Blockly.WorkspaceSvg; } interface BlocklyThemeOptions {
Test nameOldNewDiff