From 1235c1e80c8b41161cc7d80bce52282465277ffc Mon Sep 17 00:00:00 2001 From: Neil Fraser Date: Mon, 24 Nov 2014 15:08:19 -0800 Subject: [PATCH] Fade out trashcan when closed. --- blockly_compressed.js | 30 +++++++++++++++--------------- blockly_uncompressed.js | 8 ++++---- core/bubble.js | 3 ++- core/field_angle.js | 5 +++-- core/trashcan.js | 19 ++++++++++++------- core/workspace.js | 3 ++- media/sprites.png | Bin 2431 -> 1044 bytes 7 files changed, 38 insertions(+), 30 deletions(-) diff --git a/blockly_compressed.js b/blockly_compressed.js index 0e90f377e..1859eb7f6 100644 --- a/blockly_compressed.js +++ b/blockly_compressed.js @@ -113,7 +113,12 @@ goog.userAgent.IPAD=goog.userAgent.PLATFORM_KNOWN_?goog.userAgent.ASSUME_IPAD:go goog.userAgent.determineVersion_=function(){var a="",b;if(goog.userAgent.OPERA&&goog.global.opera)return a=goog.global.opera.version,goog.isFunction(a)?a():a;goog.userAgent.GECKO?b=/rv\:([^\);]+)(\)|;)/:goog.userAgent.IE?b=/\b(?:MSIE|rv)[: ]([^\);]+)(\)|;)/:goog.userAgent.WEBKIT&&(b=/WebKit\/(\S+)/);b&&(a=(a=b.exec(goog.userAgent.getUserAgentString()))?a[1]:"");return goog.userAgent.IE&&(b=goog.userAgent.getDocumentMode_(),b>parseFloat(a))?String(b):a}; goog.userAgent.getDocumentMode_=function(){var a=goog.global.document;return a?a.documentMode:void 0};goog.userAgent.VERSION=goog.userAgent.determineVersion_();goog.userAgent.compare=function(a,b){return goog.string.compareVersions(a,b)};goog.userAgent.isVersionOrHigherCache_={}; goog.userAgent.isVersionOrHigher=function(a){return goog.userAgent.ASSUME_ANY_VERSION||goog.userAgent.isVersionOrHigherCache_[a]||(goog.userAgent.isVersionOrHigherCache_[a]=0<=goog.string.compareVersions(goog.userAgent.VERSION,a))};goog.userAgent.isVersion=goog.userAgent.isVersionOrHigher;goog.userAgent.isDocumentModeOrHigher=function(a){return goog.userAgent.IE&&goog.userAgent.DOCUMENT_MODE>=a};goog.userAgent.isDocumentMode=goog.userAgent.isDocumentModeOrHigher; -goog.userAgent.DOCUMENT_MODE=function(){var a=goog.global.document;return a&&goog.userAgent.IE?goog.userAgent.getDocumentMode_()||("CSS1Compat"==a.compatMode?parseInt(goog.userAgent.VERSION,10):5):void 0}();goog.Thenable=function(){};goog.Thenable.prototype.then=function(a,b,c){};goog.Thenable.IMPLEMENTED_BY_PROP="$goog_Thenable";goog.Thenable.addImplementation=function(a){goog.exportProperty(a.prototype,"then",a.prototype.then);COMPILED?a.prototype[goog.Thenable.IMPLEMENTED_BY_PROP]=!0:a.prototype.$goog_Thenable=!0};goog.Thenable.isImplementedBy=function(a){if(!a)return!1;try{return COMPILED?!!a[goog.Thenable.IMPLEMENTED_BY_PROP]:!!a.$goog_Thenable}catch(b){return!1}};goog.debug.entryPointRegistry={};goog.debug.EntryPointMonitor=function(){};goog.debug.entryPointRegistry.refList_=[];goog.debug.entryPointRegistry.monitors_=[];goog.debug.entryPointRegistry.monitorsMayExist_=!1;goog.debug.entryPointRegistry.register=function(a){goog.debug.entryPointRegistry.refList_[goog.debug.entryPointRegistry.refList_.length]=a;if(goog.debug.entryPointRegistry.monitorsMayExist_)for(var b=goog.debug.entryPointRegistry.monitors_,c=0;cc*b?c+b:c};goog.math.lerp=function(a,b,c){return a+c*(b-a)};goog.math.nearlyEquals=function(a,b,c){return Math.abs(a-b)<=(c||1E-6)};goog.math.standardAngle=function(a){return goog.math.modulo(a,360)}; +goog.math.standardAngleInRadians=function(a){return goog.math.modulo(a,2*Math.PI)};goog.math.toRadians=function(a){return a*Math.PI/180};goog.math.toDegrees=function(a){return 180*a/Math.PI};goog.math.angleDx=function(a,b){return b*Math.cos(goog.math.toRadians(a))};goog.math.angleDy=function(a,b){return b*Math.sin(goog.math.toRadians(a))};goog.math.angle=function(a,b,c,d){return goog.math.standardAngle(goog.math.toDegrees(Math.atan2(d-b,c-a)))}; +goog.math.angleDifference=function(a,b){var c=goog.math.standardAngle(b)-goog.math.standardAngle(a);180=c&&(c=360+c);return c};goog.math.sign=function(a){return 0==a?0:0>a?-1:1}; +goog.math.longestCommonSubsequence=function(a,b,c,d){c=c||function(a,b){return a==b};d=d||function(b,c){return a[b]};for(var e=a.length,f=b.length,g=[],h=0;hg[h][k-1]?h--:k--;return l}; +goog.math.sum=function(a){return goog.array.reduce(arguments,function(a,c){return a+c},0)};goog.math.average=function(a){return goog.math.sum.apply(null,arguments)/arguments.length};goog.math.sampleVariance=function(a){var b=arguments.length;if(2>b)return 0;var c=goog.math.average.apply(null,arguments);return goog.math.sum.apply(null,goog.array.map(arguments,function(a){return Math.pow(a-c,2)}))/(b-1)};goog.math.standardDeviation=function(a){return Math.sqrt(goog.math.sampleVariance.apply(null,arguments))}; +goog.math.isInt=function(a){return isFinite(a)&&0==a%1};goog.math.isFiniteNumber=function(a){return isFinite(a)&&!isNaN(a)};goog.math.log10Floor=function(a){if(0a)}return 0==a?-Infinity:NaN};goog.math.safeFloor=function(a,b){goog.asserts.assert(!goog.isDef(b)||0c*b?c+b:c};goog.math.lerp=function(a,b,c){return a+c*(b-a)};goog.math.nearlyEquals=function(a,b,c){return Math.abs(a-b)<=(c||1E-6)};goog.math.standardAngle=function(a){return goog.math.modulo(a,360)}; -goog.math.standardAngleInRadians=function(a){return goog.math.modulo(a,2*Math.PI)};goog.math.toRadians=function(a){return a*Math.PI/180};goog.math.toDegrees=function(a){return 180*a/Math.PI};goog.math.angleDx=function(a,b){return b*Math.cos(goog.math.toRadians(a))};goog.math.angleDy=function(a,b){return b*Math.sin(goog.math.toRadians(a))};goog.math.angle=function(a,b,c,d){return goog.math.standardAngle(goog.math.toDegrees(Math.atan2(d-b,c-a)))}; -goog.math.angleDifference=function(a,b){var c=goog.math.standardAngle(b)-goog.math.standardAngle(a);180=c&&(c=360+c);return c};goog.math.sign=function(a){return 0==a?0:0>a?-1:1}; -goog.math.longestCommonSubsequence=function(a,b,c,d){c=c||function(a,b){return a==b};d=d||function(b,c){return a[b]};for(var e=a.length,f=b.length,g=[],h=0;hg[h][k-1]?h--:k--;return l}; -goog.math.sum=function(a){return goog.array.reduce(arguments,function(a,c){return a+c},0)};goog.math.average=function(a){return goog.math.sum.apply(null,arguments)/arguments.length};goog.math.sampleVariance=function(a){var b=arguments.length;if(2>b)return 0;var c=goog.math.average.apply(null,arguments);return goog.math.sum.apply(null,goog.array.map(arguments,function(a){return Math.pow(a-c,2)}))/(b-1)};goog.math.standardDeviation=function(a){return Math.sqrt(goog.math.sampleVariance.apply(null,arguments))}; -goog.math.isInt=function(a){return isFinite(a)&&0==a%1};goog.math.isFiniteNumber=function(a){return isFinite(a)&&!isNaN(a)};goog.math.log10Floor=function(a){if(0a)}return 0==a?-Infinity:NaN};goog.math.safeFloor=function(a,b){goog.asserts.assert(!goog.isDef(b)||0b.x-this.MARGIN_HOTSPOT_&&a.xb.y-this.MARGIN_HOTSPOT_&&a.ythis.lidAngle_:0this.lidOpen_)this.lidTask_=goog.Timer.callOnce(this.animateLid_,20,this)};Blockly.Trashcan.prototype.close=function(){this.setOpen_(!1)}; // Copyright 2012 Google Inc. Apache License 2.0 Blockly.Xml={};Blockly.Xml.workspaceToDom=function(a){var b;Blockly.RTL&&(b=a.getMetrics().viewWidth);var c=goog.dom.createDom("xml");a=a.getTopBlocks(!0);for(var d=0,e;e=a[d];d++){var f=Blockly.Xml.blockToDom_(e);e=e.getRelativeToSurfaceXY();f.setAttribute("x",Blockly.RTL?b-e.x:e.x);f.setAttribute("y",e.y);c.appendChild(f)}return c}; Blockly.Xml.blockToDom_=function(a){var b=goog.dom.createDom("block");b.setAttribute("type",a.type);b.setAttribute("id",a.id);if(a.mutationToDom){var c=a.mutationToDom();c&&b.appendChild(c)}for(var d=0;c=a.inputList[d];d++)for(var e=0,f;f=c.fieldRow[e];e++)if(f.name&&f.EDITABLE){var g=goog.dom.createDom("field",null,f.getValue());g.setAttribute("name",f.name);b.appendChild(g)}a.comment&&(c=goog.dom.createDom("comment",null,a.comment.getText()),c.setAttribute("pinned",a.comment.isVisible()),d=a.comment.getBubbleSize(), @@ -880,7 +880,7 @@ Blockly.Workspace.prototype.createDom=function(){this.svgGroup_=Blockly.createSv Blockly.Workspace.prototype.dispose=function(){this.svgGroup_&&(goog.dom.removeNode(this.svgGroup_),this.svgGroup_=null);this.svgBubbleCanvas_=this.svgBlockCanvas_=null;this.trashcan&&(this.trashcan.dispose(),this.trashcan=null)};Blockly.Workspace.prototype.addTrashcan=function(){if(Blockly.hasTrashcan&&!Blockly.readOnly){this.trashcan=new Blockly.Trashcan(this);var a=this.trashcan.createDom();this.svgGroup_.insertBefore(a,this.svgBlockCanvas_);this.trashcan.init()}}; Blockly.Workspace.prototype.getCanvas=function(){return this.svgBlockCanvas_};Blockly.Workspace.prototype.getBubbleCanvas=function(){return this.svgBubbleCanvas_};Blockly.Workspace.prototype.addTopBlock=function(a){this.topBlocks_.push(a);Blockly.Realtime.isEnabled()&&this==Blockly.mainWorkspace&&Blockly.Realtime.addTopBlock(a);this.fireChangeEvent()}; Blockly.Workspace.prototype.removeTopBlock=function(a){for(var b=!1,c,d=0;c=this.topBlocks_[d];d++)if(c==a){this.topBlocks_.splice(d,1);b=!0;break}if(!b)throw"Block not present in workspace's list of top-most blocks.";Blockly.Realtime.isEnabled()&&this==Blockly.mainWorkspace&&Blockly.Realtime.removeTopBlock(a);this.fireChangeEvent()}; -Blockly.Workspace.prototype.getTopBlocks=function(a){var b=[].concat(this.topBlocks_);if(a&&1=this.remainingCapacity())){var b=Blockly.Xml.domToBlock(this,a),c=parseInt(a.getAttribute("x"),10);a=parseInt(a.getAttribute("y"),10);if(!isNaN(c)&&!isNaN(a)){Blockly.RTL&&(c=-c);do for(var d=!1,e=this.getAllBlocks(),f=0,g;g=e[f];f++)g=g.getRelativeToSurfaceXY(),1>=Math.abs(c-g.x)&&1>=Math.abs(a-g.y)&&(c=Blockly.RTL?c-Blockly.SNAP_RADIUS:c+Blockly.SNAP_RADIUS,a+=2*Blockly.SNAP_RADIUS,d=!0);while(d);b.moveBy(c, a)}b.select()}};Blockly.Workspace.prototype.remainingCapacity=function(){return Infinity==this.maxBlocks?Infinity:this.maxBlocks-this.getAllBlocks().length};Blockly.Workspace.prototype.clear=Blockly.Workspace.prototype.clear; // Copyright 2012 Google Inc. Apache License 2.0 -Blockly.Bubble=function(a,b,c,d,e,f,g){var h=Blockly.Bubble.ARROW_ANGLE;Blockly.RTL&&(h=-h);this.arrow_radians_=h/360*Math.PI*2;this.workspace_=a;this.content_=b;this.shape_=c;a.getBubbleCanvas().appendChild(this.createDom_(b,!(!f||!g)));this.setAnchorLocation(d,e);f&&g||(a=this.content_.getBBox(),f=a.width+2*Blockly.Bubble.BORDER_WIDTH,g=a.height+2*Blockly.Bubble.BORDER_WIDTH);this.setBubbleSize(f,g);this.positionBubble_();this.renderArrow_();this.rendered_=!0;Blockly.readOnly||(Blockly.bindEvent_(this.bubbleBack_, +Blockly.Bubble=function(a,b,c,d,e,f,g){var h=Blockly.Bubble.ARROW_ANGLE;Blockly.RTL&&(h=-h);this.arrow_radians_=goog.math.toRadians(h);this.workspace_=a;this.content_=b;this.shape_=c;a.getBubbleCanvas().appendChild(this.createDom_(b,!(!f||!g)));this.setAnchorLocation(d,e);f&&g||(a=this.content_.getBBox(),f=a.width+2*Blockly.Bubble.BORDER_WIDTH,g=a.height+2*Blockly.Bubble.BORDER_WIDTH);this.setBubbleSize(f,g);this.positionBubble_();this.renderArrow_();this.rendered_=!0;Blockly.readOnly||(Blockly.bindEvent_(this.bubbleBack_, "mousedown",this,this.bubbleMouseDown_),this.resizeGroup_&&Blockly.bindEvent_(this.resizeGroup_,"mousedown",this,this.resizeMouseDown_))};Blockly.Bubble.BORDER_WIDTH=6;Blockly.Bubble.ARROW_THICKNESS=10;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.prototype.rendered_=!1;Blockly.Bubble.prototype.anchorX_=0;Blockly.Bubble.prototype.anchorY_=0;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; @@ -1073,9 +1073,9 @@ Blockly.FieldAngle.prototype.clone=function(){return new Blockly.FieldAngle(this Blockly.FieldAngle.prototype.showEditor_=function(){Blockly.FieldAngle.superClass_.showEditor_.call(this,goog.userAgent.MOBILE||goog.userAgent.ANDROID||goog.userAgent.IPAD);var a=Blockly.WidgetDiv.DIV;if(a.firstChild){var a=Blockly.createSvgElement("svg",{xmlns:"http://www.w3.org/2000/svg","xmlns:html":"http://www.w3.org/1999/xhtml","xmlns:xlink":"http://www.w3.org/1999/xlink",version:"1.1",height:2*Blockly.FieldAngle.HALF+"px",width:2*Blockly.FieldAngle.HALF+"px"},a),b=Blockly.createSvgElement("circle", {cx:Blockly.FieldAngle.HALF,cy:Blockly.FieldAngle.HALF,r:Blockly.FieldAngle.RADIUS,"class":"blocklyAngleCircle"},a);this.gauge_=Blockly.createSvgElement("path",{"class":"blocklyAngleGauge"},a);this.line_=Blockly.createSvgElement("line",{x1:Blockly.FieldAngle.HALF,y1:Blockly.FieldAngle.HALF,"class":"blocklyAngleLine"},a);for(var c=0;360>c;c+=15)Blockly.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);a.style.marginLeft="-35px";this.clickWrapper_=Blockly.bindEvent_(a,"click",this,Blockly.WidgetDiv.hide);this.moveWrapper1_=Blockly.bindEvent_(b,"mousemove",this,this.onMouseMove);this.moveWrapper2_=Blockly.bindEvent_(this.gauge_,"mousemove",this,this.onMouseMove);this.updateGraph_()}}; -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=b/Math.PI*180,0>c?b+=180:0c?b+=180:0Math.PI?1:0)+" 0 "+b+","+c+" z");this.line_.setAttribute("x2",b);this.line_.setAttribute("y2",c)}}};Blockly.FieldAngle.angleValidator=function(a){a=Blockly.FieldTextInput.numberValidator(a);null!==a&&(a%=360,0>a&&(a+=360),a=String(a));return a}; // Copyright 2012 Google Inc. Apache License 2.0 Blockly.FieldCheckbox=function(a,b){Blockly.FieldCheckbox.superClass_.constructor.call(this,"");this.changeHandler_=b;this.checkElement_=Blockly.createSvgElement("text",{"class":"blocklyText",x:-3},this.fieldGroup_);var c=document.createTextNode("\u2713");this.checkElement_.appendChild(c);this.setValue(a)};goog.inherits(Blockly.FieldCheckbox,Blockly.Field);Blockly.FieldCheckbox.prototype.clone=function(){return new Blockly.FieldCheckbox(this.getValue(),this.changeHandler_)}; diff --git a/blockly_uncompressed.js b/blockly_uncompressed.js index 6466e5117..0fbff0cd8 100644 --- a/blockly_uncompressed.js +++ b/blockly_uncompressed.js @@ -28,13 +28,13 @@ goog.addDependency("../../../" + dir + "/core/block.js", ['Blockly.Block'], ['Bl goog.addDependency("../../../" + dir + "/core/block_svg.js", ['Blockly.BlockSvg'], ['goog.userAgent']); goog.addDependency("../../../" + dir + "/core/blockly.js", ['Blockly'], ['Blockly.Block', 'Blockly.Connection', 'Blockly.FieldAngle', 'Blockly.FieldCheckbox', 'Blockly.FieldColour', 'Blockly.FieldDropdown', 'Blockly.FieldImage', 'Blockly.FieldTextInput', 'Blockly.FieldVariable', 'Blockly.Generator', 'Blockly.Msg', 'Blockly.Procedures', 'Blockly.Realtime', 'Blockly.Toolbox', 'Blockly.WidgetDiv', 'Blockly.Workspace', 'Blockly.inject', 'Blockly.utils', 'goog.color', 'goog.dom', 'goog.events', 'goog.string', 'goog.ui.ColorPicker', 'goog.ui.tree.TreeControl', 'goog.userAgent']); goog.addDependency("../../../" + dir + "/core/blocks.js", ['Blockly.Blocks'], ['goog.asserts']); -goog.addDependency("../../../" + dir + "/core/bubble.js", ['Blockly.Bubble'], ['Blockly.Workspace']); +goog.addDependency("../../../" + dir + "/core/bubble.js", ['Blockly.Bubble'], ['Blockly.Workspace', 'goog.math']); goog.addDependency("../../../" + dir + "/core/comment.js", ['Blockly.Comment'], ['Blockly.Bubble', 'Blockly.Icon', 'goog.userAgent']); goog.addDependency("../../../" + dir + "/core/connection.js", ['Blockly.Connection', 'Blockly.ConnectionDB'], ['Blockly.Workspace']); goog.addDependency("../../../" + dir + "/core/contextmenu.js", ['Blockly.ContextMenu'], ['goog.dom', 'goog.style', 'goog.ui.Menu', 'goog.ui.MenuItem']); goog.addDependency("../../../" + dir + "/core/css.js", ['Blockly.Css'], ['goog.cssom']); goog.addDependency("../../../" + dir + "/core/field.js", ['Blockly.Field'], ['Blockly.BlockSvg', 'goog.asserts', 'goog.userAgent']); -goog.addDependency("../../../" + dir + "/core/field_angle.js", ['Blockly.FieldAngle'], ['Blockly.FieldTextInput']); +goog.addDependency("../../../" + dir + "/core/field_angle.js", ['Blockly.FieldAngle'], ['Blockly.FieldTextInput', 'goog.math']); goog.addDependency("../../../" + dir + "/core/field_checkbox.js", ['Blockly.FieldCheckbox'], ['Blockly.Field']); goog.addDependency("../../../" + dir + "/core/field_colour.js", ['Blockly.FieldColour'], ['Blockly.Field', 'goog.ui.ColorPicker']); goog.addDependency("../../../" + dir + "/core/field_dropdown.js", ['Blockly.FieldDropdown'], ['Blockly.Field', 'goog.dom', 'goog.style', 'goog.ui.Menu', 'goog.ui.MenuItem', 'goog.userAgent']); @@ -56,12 +56,12 @@ goog.addDependency("../../../" + dir + "/core/realtime.js", ['Blockly.Realtime'] goog.addDependency("../../../" + dir + "/core/scrollbar.js", ['Blockly.Scrollbar', 'Blockly.ScrollbarPair'], ['goog.userAgent']); goog.addDependency("../../../" + dir + "/core/toolbox.js", ['Blockly.Toolbox'], ['Blockly.Flyout', 'goog.events.BrowserFeature', 'goog.html.SafeHtml', 'goog.style', 'goog.ui.tree.TreeControl', 'goog.ui.tree.TreeNode']); goog.addDependency("../../../" + dir + "/core/tooltip.js", ['Blockly.Tooltip'], []); -goog.addDependency("../../../" + dir + "/core/trashcan.js", ['Blockly.Trashcan'], ['goog.Timer']); +goog.addDependency("../../../" + dir + "/core/trashcan.js", ['Blockly.Trashcan'], ['goog.math', 'goog.Timer']); goog.addDependency("../../../" + dir + "/core/utils.js", ['Blockly.utils'], []); goog.addDependency("../../../" + dir + "/core/variables.js", ['Blockly.Variables'], ['Blockly.Toolbox', 'Blockly.Workspace']); goog.addDependency("../../../" + dir + "/core/warning.js", ['Blockly.Warning'], ['Blockly.Bubble', 'Blockly.Icon']); goog.addDependency("../../../" + dir + "/core/widgetdiv.js", ['Blockly.WidgetDiv'], ['Blockly.Css', 'goog.dom']); -goog.addDependency("../../../" + dir + "/core/workspace.js", ['Blockly.Workspace'], ['Blockly.ScrollbarPair', 'Blockly.Trashcan', 'Blockly.Xml']); +goog.addDependency("../../../" + dir + "/core/workspace.js", ['Blockly.Workspace'], ['Blockly.ScrollbarPair', 'Blockly.Trashcan', 'Blockly.Xml', 'goog.math']); goog.addDependency("../../../" + dir + "/core/xml.js", ['Blockly.Xml'], []); goog.addDependency("../../alltests.js", [], []); goog.addDependency("base.js", [], []); diff --git a/core/bubble.js b/core/bubble.js index 7abd8a74c..c784e524b 100644 --- a/core/bubble.js +++ b/core/bubble.js @@ -27,6 +27,7 @@ goog.provide('Blockly.Bubble'); goog.require('Blockly.Workspace'); +goog.require('goog.math'); /** @@ -48,7 +49,7 @@ Blockly.Bubble = function(workspace, content, shape, if (Blockly.RTL) { angle = -angle; } - this.arrow_radians_ = angle / 360 * Math.PI * 2; + this.arrow_radians_ = goog.math.toRadians(angle); this.workspace_ = workspace; this.content_ = content; diff --git a/core/field_angle.js b/core/field_angle.js index cbd32e925..fb4830540 100644 --- a/core/field_angle.js +++ b/core/field_angle.js @@ -27,6 +27,7 @@ goog.provide('Blockly.FieldAngle'); goog.require('Blockly.FieldTextInput'); +goog.require('goog.math'); /** @@ -182,7 +183,7 @@ Blockly.FieldAngle.prototype.onMouseMove = function(e) { // This shouldn't happen, but let's not let this error propogate further. return; } - angle = angle / Math.PI * 180; + angle = goog.math.toDegrees(angle); // 0: East, 90: North, 180: West, 270: South. if (dx < 0) { angle += 180; @@ -227,7 +228,7 @@ Blockly.FieldAngle.prototype.updateGraph_ = function() { if (!this.gauge_) { return; } - var angleRadians = Number(this.getText()) / 180 * Math.PI; + var angleRadians = goog.math.toRadians(Number(this.getText())); if (isNaN(angleRadians)) { this.gauge_.setAttribute('d', 'M ' + Blockly.FieldAngle.HALF + ', ' + Blockly.FieldAngle.HALF); diff --git a/core/trashcan.js b/core/trashcan.js index 6d4a26485..7d21b0065 100644 --- a/core/trashcan.js +++ b/core/trashcan.js @@ -26,6 +26,7 @@ goog.provide('Blockly.Trashcan'); +goog.require('goog.math'); goog.require('goog.Timer'); @@ -122,11 +123,11 @@ Blockly.Trashcan.prototype.svgLid_ = null; Blockly.Trashcan.prototype.lidTask_ = 0; /** - * Current angle of the lid. + * Current state of lid opening (0.0 = closed, 1.0 = open). * @type {number} * @private */ -Blockly.Trashcan.prototype.lidAngle_ = 0; +Blockly.Trashcan.prototype.lidOpen_ = 0; /** * Left coordinate of the trash can. @@ -186,6 +187,7 @@ Blockly.Trashcan.prototype.createDom = function() { this.svgLid_.setAttributeNS('http://www.w3.org/1999/xlink', 'xlink:href', Blockly.pathToMedia + Blockly.SPRITE.url); + this.animateLid_(); return this.svgGroup_; }; @@ -283,14 +285,17 @@ Blockly.Trashcan.prototype.setOpen_ = function(state) { * @private */ Blockly.Trashcan.prototype.animateLid_ = function() { - this.lidAngle_ += this.isOpen ? 10 : -10; - this.lidAngle_ = Math.max(0, this.lidAngle_); + this.lidOpen_ += this.isOpen ? 0.2 : -0.2; + this.lidOpen_ = goog.math.clamp(this.lidOpen_, 0, 1); + var lidAngle = this.lidOpen_ * 45; this.svgLid_.setAttribute('transform', 'rotate(' + - (Blockly.RTL ? -this.lidAngle_ : this.lidAngle_) + ', ' + + (Blockly.RTL ? -lidAngle : lidAngle) + ', ' + (Blockly.RTL ? 4 : this.WIDTH_ - 4) + ', ' + (this.LID_HEIGHT_ - 2) + ')'); - if (this.isOpen ? (this.lidAngle_ < 45) : (this.lidAngle_ > 0)) { - this.lidTask_ = goog.Timer.callOnce(this.animateLid_, 5, this); + var opacity = goog.math.lerp(0.2, 0.4, this.lidOpen_); + this.svgGroup_.style.opacity = opacity; + if (this.lidOpen_ > 0 || this.lidOpen_ < 1) { + this.lidTask_ = goog.Timer.callOnce(this.animateLid_, 20, this); } }; diff --git a/core/workspace.js b/core/workspace.js index 2aec78c32..d1a123f01 100644 --- a/core/workspace.js +++ b/core/workspace.js @@ -31,6 +31,7 @@ goog.provide('Blockly.Workspace'); goog.require('Blockly.ScrollbarPair'); goog.require('Blockly.Trashcan'); goog.require('Blockly.Xml'); +goog.require('goog.math'); /** @@ -211,7 +212,7 @@ Blockly.Workspace.prototype.getTopBlocks = function(ordered) { // Copy the topBlocks_ list. var blocks = [].concat(this.topBlocks_); if (ordered && blocks.length > 1) { - var offset = Math.sin(Blockly.Workspace.SCAN_ANGLE / 180 * Math.PI); + var offset = Math.sin(goog.math.toRadians(Blockly.Workspace.SCAN_ANGLE)); if (Blockly.RTL) { offset *= -1; } diff --git a/media/sprites.png b/media/sprites.png index 12872eb88aed05b2451b84ab0d0cb53d4a95279f..6e1f4d2b96ddfb31d73f56bc8ed6a6354f6666f5 100644 GIT binary patch delta 1023 zcmew_G=*b=ay<>&kwQ zTa1~L#b~wu5(Wn5g`O^sAr-gY&OYBI`@o`p&eS4?e(qdZ~rP7q(*CueN&}(325VPQCJj1YMHOnIA1g->qwqw%_nIG@|;{4dN=lotC z29^!128besV zW^j`8zQyvm9GzXAf|u6LQJP`#Kvl@me7e>o)8t3;40V+uFT?xZ?`QtO@nE^ckBkbH z_x}~@H$Pe5o}AB`q!_zMF>zaQi;`{E^IJle+WkLcV;?KLyt&7%UiU@!!Q(v1HC-40{^iw=l)aU!p3Sp*$#KI&d)@S%@)@2_@3FZYNOr&39j7dC zAkNBbxmS9_wwwf~ZHJOq-cXEw*!o5@E7X?fE7NWtkF9bcUk#QlVrocnDGGS-yIN(j zmQ|ecP1T(WCz+lro|HUUmRj#H;mw3OlkRjkZcIJ%;G^~FWUr)}cc}~tCv{J9o(!AW zcir>eq&rLIbQlLEJMLDQ_Wx{-c8+AVdr?T+XXi=TlhnJF3)}pzcT76MnB=|btw-aQ ze-oc{Jqdo#{Ni!N z$8)MSZhWEU=CQq~E8$VYbPtxh7F{Z`({+yCV|NLhQY|mwdeQV9b4H`!&m|7dhjN~C zxK@dr->O;^Cii*wu49guHoug7x9_`nnDeioiaxVsn{H@OE_)0NN*m?pKdeaTB`o)q*Hsp_A)G9{Kj>?AV-3}>{6-kjGHcIo@Q%f ztV*6_&iGhUdX?VES9jStI^queh&nMZZrhbA`45x&Z->v{{O!_0Z3fl_i;C9mVgE3p z@W+QrxhJyvmwu-6J`6e+&g4|`@$%);+-rIZ7(^PF0vNQkw8Za+e3*G-rE37A22dkI z1z4QR0m37SQy|u0FS_Ytxg^6oZI%c7co^mbsbI;;`xrm)PX8TxV&{2rhV`eF?z4T^ gn)3X<=-VguzRSdz^_K3k17>3ePgg&ebxsLQ0PbGHBLDyZ delta 2421 zcmV-*35xcV2>%k0BYy+%X+uL$Nkc;*P;zf(X>4Tx062|}Ro!pfR1`mnZ(O7nKcKOW z4i$^9Ra0BJ8yc;~21%2p=|UR0&DbiW$#rfTQ`a`O(`{9s_5yDV_yd5l2Of}kLK+Oj z_Ok5(v`JGz71bo9J#^YYXp{DWs&KBaQ@dTpxRI}aIp=pi?|;!XK*v{_pO}_ARv`(`K_~P;r>1*Ox?C;-F2;pN*27;R!QM9q+Ux&wbylgT10KeMtdQo=mnqksdx=&F5&oys0TJd`E>GI|#kK((J)n0eU)DVBJ zYq?3pFC)I@_!%aD74f~sTqTWoFF^8{ntPr?L_-if$s_=TxZzG%&qCb(^K zdCoqnhMa4x{ z6hi)zV+ON`xsmg3L#>3I8=9NTb3f!hwJM>{)UK+QWxX9ld>D=;G@xL^4DLEuumLit zkcSMu9e;39Qv(A`lu*=Clo*MpVGd>OdF6n^am1Jntk;<}MrqIC5$=Q>n{*R}?8oOI zDUw5En2dl--Xw34!z7E+5pr%d2c?H4INKjdmEV*< zl@;X+<-BrtTbJ8*N%&OwR`^l)PWWE<8D!y-a9Q|CxFUQbT#TL7ym&1JoWQ-+)%LMCuYy_wP6ZWs zL5D3kvu*xEYtl=GNMYO54zpQqF~pph71JP#d&LoPNE~Olm7ll=btAavwoIM=mAd9q7A z>MqdgAh7QszoH+g!S^k(^Lixn-v&7J7v5PnBH45U;A;<{`?W~chj-$$p8;Grpf}uw z@Xk*pegW`m`}gsGT^YQaZZ(?^@V@H!1YqOiX7iurW^?09^uGph$@~{t0C9K{wSVD; z000F_NklYflvOP3&^d`PQ-@VNP%)mT=kD+fMp7h{?XTf_v z!s40iRWs8UHdOGAg@Zyl|n?pa@LFeP@uw zFy>og$Hvalo;=zY9tx)$^bXzkg@38AGl94%XYL7a1swceXcARnbIf}%Zusi%$##>B z@0BKwh3id*Z9ZR=u|r`Ym}6W+0U%pe9iEqazi68y%b^T6d0&X{K-fCXW%0T2Q81^? zxljPaw%j6CCB|#AJ`iMgia>yj-^;%j-!tKMfPeI%Ytr~gcqfFMVJsE^`hNsl#pL|e zFNo3(WnaT+ToFbmoIeuCpf~F8Z9%aB;1vC0A;9Zp?VghE+Sg6F<}-Sz zpu0jWh?+_#77k(PgYX{@9R%N{j`=s5dm{WR;2`{fd-OkEU3Cf47mfBU?5cPOVjo}7 zK;IzcMVV1<<~&ii4BD86qJKp5q<X`%r~%_T3)`ohgLInbFXxNEOh;DSo2}@2N}O8 z9107;Qz!szjb(Ls#(&klU$jk=g&biWWI$<7Mc*@JvWKO1E^nf&Q&4BiDpS!aKppJHuEk0Q3pAN{GA;O1qVP z9Bl|9Qvlnp#pY0ILPiFMk%_*@Ai~>FB-=$T8%7 z;GPP)D+Gf`9R12y&x|$4muz<2WHS4Ez+^J%{T?75?8IoS?*X=0yJ9aEu%Ests#gTc zjB+y~>OKoz=}+O+op@=U^p7U>eh-iUZxB!3F58mr$&aiq!oMcE_}g>PlV8d&N7CsnQ$)TkDWMQ0(qaa{r&CV0yO~HHB`8QS^<|{NpjJTP3CwoCRzP+L3s+Dppzs7{ zyI(6HJA{QRs1;Cn0<+z(6_6dm!WGmCC_I7L?rzr#$PQuQ3Tg!up1^GPV-@f@Tl07d zK8>fUttl3Of7-0)HnLG)VgdN`+?Lxm{Ior^`H{;q@waf6zW^Ci<}dm1$L5zCw!r`N n@=_RcK|^%0_#0u@#vA