pxt-core 7.5.1 → 7.5.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/built/pxtblockly.js +78 -11
- package/built/pxtblocks.d.ts +6 -0
- package/built/pxtblocks.js +76 -8
- package/built/target.js +1 -1
- package/built/web/main.js +1 -1
- package/built/web/pxtblockly.js +2 -2
- package/built/web/pxtblocks.js +1 -1
- package/built/web/pxtembed.js +2 -2
- package/built/web/react-common-skillmap.css +1 -1
- package/built/web/rtlreact-common-skillmap.css +1 -1
- package/built/web/rtlsemantic.css +1 -1
- package/built/web/semantic.css +1 -1
- package/built/web/skillmap/css/{main.4939cd1e.chunk.css → main.e0620cee.chunk.css} +1 -1
- package/built/web/skillmap/js/main.f6866fc6.chunk.js +1 -0
- package/localtypings/pxtblockly.d.ts +1 -0
- package/package.json +2 -2
- package/react-common/components/controls/Modal.tsx +1 -1
- package/react-common/components/profile/UserPane.tsx +8 -4
- package/react-common/styles/controls/Button.less +28 -16
- package/react-common/styles/controls/MenuDropdown.less +1 -1
- package/react-common/styles/profile/profile.less +2 -2
- package/react-common/styles/react-common-variables.less +19 -2
- package/theme/common.less +5 -0
- package/theme/tutorial-sidebar.less +11 -4
- package/webapp/public/blockly/blockly_compressed.js +2 -3
- package/webapp/public/skillmap.html +2 -2
- package/built/web/skillmap/js/main.2a4cb15b.chunk.js +0 -1
package/built/pxtblockly.js
CHANGED
|
@@ -1656,7 +1656,7 @@ return Blockly.Functions.namesInUse(b,null,a)[c]?(Blockly.alert(Blockly.Msg.VARI
|
|
|
1656
1656
|
Blockly.Functions.mutateCallersAndDefinition=function(a,b,c){var d=Blockly.Functions.getDefinition(a,b);d?(a=Blockly.Functions.getCallers(a,d.workspace),a.push(d),Blockly.Events.setGroup(!0),a.forEach(function(a){var b=a.mutationToDom(),e=b&&Blockly.Xml.domToText(b);a.domToMutation(c);var h=a.mutationToDom(),k=h&&Blockly.Xml.domToText(h);if(e!=k)if(Blockly.Events.fire(new Blockly.Events.BlockChange(a,"mutation",null,e,k)),a.id==d.id){var l=Blockly.Functions.getArgMap(b),m=Blockly.Functions.getArgMap(h,
|
|
1657
1657
|
!0);d.getDescendants().forEach(function(a){if(Blockly.pxtBlocklyUtils.isFunctionArgumentReporter(a)){var b=a.getFieldValue("VALUE"),c=l[b];m[c]?m[c]!==b&&a.setFieldValue(m[c],"VALUE"):a.dispose()}})}else setTimeout(function(){a.bumpNeighbours()},Blockly.BUMP_DELAY)}),Blockly.Events.setGroup(!1)):console.warn("Attempted to change function "+a+", but no definition block was found on the workspace")};
|
|
1658
1658
|
Blockly.Functions.createFlyout=function(a,b){var c=new Blockly.Options({scrollbars:!0,disabledPatternId:a.options.disabledPatternId,parentWorkspace:a,rtl:a.RTL,oneBasedIndex:a.options.oneBasedIndex,horizontalLayout:a.horizontalLayout,toolboxPosition:a.options.toolboxPosition,zoomOptions:a.options.zoomOptions,renderer:a.options.renderer,rendererOverrides:a.options.rendererOverrides,newFunctions:a.options.newFunctions,move:{scrollbars:!0}});c=c.horizontalLayout?new Blockly.HorizontalFlyout(c):new Blockly.VerticalFlyout(c);
|
|
1659
|
-
var d=c.createDom("svg");goog.dom.insertSiblingAfter(d,b);c.init(a);return c};Blockly.VERSION="4.0.
|
|
1659
|
+
var d=c.createDom("svg");goog.dom.insertSiblingAfter(d,b);c.init(a);return c};Blockly.VERSION="4.0.8";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){Blockly.utils.deprecation.warn("Blockly.svgSize","March 2021","March 2022","workspace.getCachedParentSvgSize");return new Blockly.utils.Size(a.cachedWidth_,a.cachedHeight_)};Blockly.resizeSvgContents=function(a){a.resizeContents()};
|
|
1660
1660
|
Blockly.svgResize=function(a){for(;a.options.parentWorkspace;)a=a.options.parentWorkspace;var b=a.getParentSvg(),c=a.getCachedParentSvgSize(),d=b.parentNode;if(d){var e=d.offsetWidth;d=d.offsetHeight;c.width!=e&&(b.setAttribute("width",e+"px"),a.setCachedParentSvgSize(e,null));c.height!=d&&(b.setAttribute("height",d+"px"),a.setCachedParentSvgSize(null,d));a.resize()}};
|
|
1661
1661
|
Blockly.onKeyDown=function(a){var b=Blockly.mainWorkspace;if(b&&!(Blockly.utils.isTargetInput(a)||b.rendered&&!b.isVisible()))Blockly.ShortcutRegistry.registry.onKeyDown(b,a)};Blockly.deleteBlock=function(a){a.workspace.isFlyout||(Blockly.Events.setGroup(!0),Blockly.hideChaff(),a.outputConnection?a.dispose(!1,!0):a.dispose(!0,!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};
|
|
1662
1662
|
Blockly.paste=function(){if(!Blockly.clipboardXml_)return!1;var a=Blockly.clipboardSource_;a.isFlyout&&(a=a.targetWorkspace);return Blockly.clipboardTypeCounts_&&a.isCapacityAvailable(Blockly.clipboardTypeCounts_)?(Blockly.Events.setGroup(!0),a.paste(Blockly.clipboardXml_),Blockly.Events.setGroup(!1),!0):!1};
|
|
@@ -1986,8 +1986,7 @@ Blockly.ContextMenuItems.registerDisable=function(){Blockly.ContextMenuRegistry.
|
|
|
1986
1986
|
scopeType:Blockly.ContextMenuRegistry.ScopeType.BLOCK,id:"blockDisable",weight:5})};
|
|
1987
1987
|
Blockly.ContextMenuItems.registerDelete=function(){Blockly.ContextMenuRegistry.registry.register({displayText:function(a){var b=a.block;a=b.getDescendants(!1).length;(b=b.getNextBlock())&&(a-=b.getDescendants(!1).length);return 1==a?Blockly.Msg.DELETE_BLOCK:Blockly.Msg.DELETE_X_BLOCKS.replace("%1",String(a))},preconditionFn:function(a){return!a.block.isInFlyout&&a.block.isDeletable()?"enabled":"hidden"},callback:function(a){Blockly.Events.setGroup(!0);a.block&&Blockly.deleteBlock(a.block);Blockly.Events.setGroup(!1)},
|
|
1988
1988
|
scopeType:Blockly.ContextMenuRegistry.ScopeType.BLOCK,id:"blockDelete",weight:6})};Blockly.ContextMenuItems.registerHelp=function(){Blockly.ContextMenuRegistry.registry.register({displayText:function(){return Blockly.Msg.HELP},preconditionFn:function(a){a=a.block;return("function"==typeof a.helpUrl?a.helpUrl():a.helpUrl)?"enabled":"hidden"},callback:function(a){a.block.showHelp()},scopeType:Blockly.ContextMenuRegistry.ScopeType.BLOCK,id:"blockHelp",weight:7})};
|
|
1989
|
-
Blockly.ContextMenuItems.registerBlockOptions_=function(){Blockly.ContextMenuItems.registerDuplicate();Blockly.ContextMenuItems.registerComment();Blockly.ContextMenuItems.
|
|
1990
|
-
Blockly.ContextMenuItems.registerDefaultOptions();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.workspace_=null;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_};
|
|
1989
|
+
Blockly.ContextMenuItems.registerBlockOptions_=function(){Blockly.ContextMenuItems.registerDuplicate();Blockly.ContextMenuItems.registerComment();Blockly.ContextMenuItems.registerCollapseExpandBlock();Blockly.ContextMenuItems.registerDisable();Blockly.ContextMenuItems.registerDelete();Blockly.ContextMenuItems.registerHelp()};Blockly.ContextMenuItems.registerDefaultOptions=function(){Blockly.ContextMenuItems.registerWorkspaceOptions_();Blockly.ContextMenuItems.registerBlockOptions_()};Blockly.ContextMenuItems.registerDefaultOptions();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.workspace_=null;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_};
|
|
1991
1990
|
Blockly.Mutator.prototype.drawIcon_=function(a){Blockly.utils.dom.createSvgElement(Blockly.utils.Svg.RECT,{"class":"blocklyIconShape",rx:"10",ry:"10",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"},
|
|
1992
1991
|
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)};
|
|
1993
1992
|
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,
|
|
@@ -9948,8 +9947,71 @@ var pxt;
|
|
|
9948
9947
|
Blockly.utils.dom.removeClass(blockPath, 'blockly-ws-search-highlight-pxt');
|
|
9949
9948
|
});
|
|
9950
9949
|
}
|
|
9950
|
+
/**
|
|
9951
|
+
* https://github.com/google/blockly-samples/blob/master/plugins/workspace-search/src/WorkspaceSearch.js#L633
|
|
9952
|
+
*
|
|
9953
|
+
* Modified to center offscreen blocks.
|
|
9954
|
+
*/
|
|
9955
|
+
scrollToVisible_(block) {
|
|
9956
|
+
if (!this.workspace_.isMovable()) {
|
|
9957
|
+
// Cannot scroll to block in a non-movable workspace.
|
|
9958
|
+
return;
|
|
9959
|
+
}
|
|
9960
|
+
// XY is in workspace coordinates.
|
|
9961
|
+
const xy = block.getRelativeToSurfaceXY();
|
|
9962
|
+
const scale = this.workspace_.scale;
|
|
9963
|
+
// Block bounds in pixels relative to the workspace origin (0,0 is centre).
|
|
9964
|
+
const width = block.width * scale;
|
|
9965
|
+
const height = block.height * scale;
|
|
9966
|
+
const top = xy.y * scale;
|
|
9967
|
+
const bottom = (xy.y + block.height) * scale;
|
|
9968
|
+
// In RTL the block's position is the top right of the block, not top left.
|
|
9969
|
+
const left = this.workspace_.RTL ? xy.x * scale - width : xy.x * scale;
|
|
9970
|
+
const right = this.workspace_.RTL ? xy.x * scale : xy.x * scale + width;
|
|
9971
|
+
const metrics = this.workspace_.getMetrics();
|
|
9972
|
+
let targetLeft = metrics.viewLeft;
|
|
9973
|
+
const overflowLeft = left < metrics.viewLeft;
|
|
9974
|
+
const overflowRight = right > metrics.viewLeft + metrics.viewWidth;
|
|
9975
|
+
const wideBlock = width > metrics.viewWidth;
|
|
9976
|
+
if ((!wideBlock && overflowLeft) || (wideBlock && !this.workspace_.RTL)) {
|
|
9977
|
+
// Scroll to show left side of block
|
|
9978
|
+
targetLeft = left;
|
|
9979
|
+
}
|
|
9980
|
+
else if ((!wideBlock && overflowRight) ||
|
|
9981
|
+
(wideBlock && this.workspace_.RTL)) {
|
|
9982
|
+
// Scroll to show right side of block
|
|
9983
|
+
targetLeft = right - metrics.viewWidth;
|
|
9984
|
+
}
|
|
9985
|
+
let targetTop = metrics.viewTop;
|
|
9986
|
+
const overflowTop = top < metrics.viewTop;
|
|
9987
|
+
const overflowBottom = bottom > metrics.viewTop + metrics.viewHeight;
|
|
9988
|
+
const tallBlock = height > metrics.viewHeight;
|
|
9989
|
+
if (overflowTop || (tallBlock && overflowBottom)) {
|
|
9990
|
+
// Scroll to show top of block
|
|
9991
|
+
targetTop = top;
|
|
9992
|
+
}
|
|
9993
|
+
else if (overflowBottom) {
|
|
9994
|
+
// Scroll to show bottom of block
|
|
9995
|
+
targetTop = bottom - metrics.viewHeight;
|
|
9996
|
+
}
|
|
9997
|
+
if (targetLeft !== metrics.viewLeft || targetTop !== metrics.viewTop) {
|
|
9998
|
+
const activeEl = document.activeElement;
|
|
9999
|
+
if (wideBlock || tallBlock) {
|
|
10000
|
+
this.workspace_.scroll(-targetLeft, -targetTop);
|
|
10001
|
+
}
|
|
10002
|
+
else {
|
|
10003
|
+
this.workspace_.centerOnBlock(block.id);
|
|
10004
|
+
}
|
|
10005
|
+
if (activeEl) {
|
|
10006
|
+
// Blockly.WidgetDiv.hide called in scroll is taking away focus.
|
|
10007
|
+
// TODO: Review setFocused call in Blockly.WidgetDiv.hide.
|
|
10008
|
+
activeEl.focus();
|
|
10009
|
+
}
|
|
10010
|
+
}
|
|
10011
|
+
}
|
|
9951
10012
|
open() {
|
|
9952
10013
|
super.open();
|
|
10014
|
+
this.inputElement_.select();
|
|
9953
10015
|
Blockly.utils.dom.addClass(this.workspace_.getInjectionDiv(), 'blockly-ws-searching');
|
|
9954
10016
|
}
|
|
9955
10017
|
close() {
|
|
@@ -15752,15 +15814,20 @@ var pxtblockly;
|
|
|
15752
15814
|
let leftPadding = 0, rightPadding = 0;
|
|
15753
15815
|
switch (outputShape) {
|
|
15754
15816
|
case Blockly.OUTPUT_SHAPE_HEXAGONAL:
|
|
15755
|
-
width =
|
|
15817
|
+
width = size.width / 2;
|
|
15756
15818
|
halfWidth = width / 2;
|
|
15757
|
-
|
|
15758
|
-
|
|
15759
|
-
|
|
15760
|
-
|
|
15761
|
-
|
|
15762
|
-
|
|
15763
|
-
|
|
15819
|
+
leftPadding = -halfWidth; // total translation when toggle is left-aligned = 0
|
|
15820
|
+
rightPadding = halfWidth - innerWidth; // total translation when right-aligned = width
|
|
15821
|
+
/**
|
|
15822
|
+
* Toggle defined clockwise from bottom left:
|
|
15823
|
+
*
|
|
15824
|
+
* 0, 14 ----------- width, 14
|
|
15825
|
+
* / \
|
|
15826
|
+
* -14, 0 width + 14, 0
|
|
15827
|
+
* \ /
|
|
15828
|
+
* 0, -14 ----------- width, -14
|
|
15829
|
+
*/
|
|
15830
|
+
this.toggleThumb_.setAttribute('points', `${0},-14 -14,0 ${0},14 ${width},14 ${width + 14},0 ${width},-14`);
|
|
15764
15831
|
break;
|
|
15765
15832
|
case Blockly.OUTPUT_SHAPE_ROUND:
|
|
15766
15833
|
case Blockly.OUTPUT_SHAPE_SQUARE:
|
package/built/pxtblocks.d.ts
CHANGED
|
@@ -264,6 +264,12 @@ declare namespace pxt.blocks {
|
|
|
264
264
|
protected createDom_(): void;
|
|
265
265
|
protected highlightSearchGroup_(blocks: Blockly.BlockSvg[]): void;
|
|
266
266
|
protected unhighlightSearchGroup_(blocks: Blockly.BlockSvg[]): void;
|
|
267
|
+
/**
|
|
268
|
+
* https://github.com/google/blockly-samples/blob/master/plugins/workspace-search/src/WorkspaceSearch.js#L633
|
|
269
|
+
*
|
|
270
|
+
* Modified to center offscreen blocks.
|
|
271
|
+
*/
|
|
272
|
+
protected scrollToVisible_(block: Blockly.BlockSvg): void;
|
|
267
273
|
open(): void;
|
|
268
274
|
close(): void;
|
|
269
275
|
}
|
package/built/pxtblocks.js
CHANGED
|
@@ -6324,8 +6324,71 @@ var pxt;
|
|
|
6324
6324
|
Blockly.utils.dom.removeClass(blockPath, 'blockly-ws-search-highlight-pxt');
|
|
6325
6325
|
});
|
|
6326
6326
|
}
|
|
6327
|
+
/**
|
|
6328
|
+
* https://github.com/google/blockly-samples/blob/master/plugins/workspace-search/src/WorkspaceSearch.js#L633
|
|
6329
|
+
*
|
|
6330
|
+
* Modified to center offscreen blocks.
|
|
6331
|
+
*/
|
|
6332
|
+
scrollToVisible_(block) {
|
|
6333
|
+
if (!this.workspace_.isMovable()) {
|
|
6334
|
+
// Cannot scroll to block in a non-movable workspace.
|
|
6335
|
+
return;
|
|
6336
|
+
}
|
|
6337
|
+
// XY is in workspace coordinates.
|
|
6338
|
+
const xy = block.getRelativeToSurfaceXY();
|
|
6339
|
+
const scale = this.workspace_.scale;
|
|
6340
|
+
// Block bounds in pixels relative to the workspace origin (0,0 is centre).
|
|
6341
|
+
const width = block.width * scale;
|
|
6342
|
+
const height = block.height * scale;
|
|
6343
|
+
const top = xy.y * scale;
|
|
6344
|
+
const bottom = (xy.y + block.height) * scale;
|
|
6345
|
+
// In RTL the block's position is the top right of the block, not top left.
|
|
6346
|
+
const left = this.workspace_.RTL ? xy.x * scale - width : xy.x * scale;
|
|
6347
|
+
const right = this.workspace_.RTL ? xy.x * scale : xy.x * scale + width;
|
|
6348
|
+
const metrics = this.workspace_.getMetrics();
|
|
6349
|
+
let targetLeft = metrics.viewLeft;
|
|
6350
|
+
const overflowLeft = left < metrics.viewLeft;
|
|
6351
|
+
const overflowRight = right > metrics.viewLeft + metrics.viewWidth;
|
|
6352
|
+
const wideBlock = width > metrics.viewWidth;
|
|
6353
|
+
if ((!wideBlock && overflowLeft) || (wideBlock && !this.workspace_.RTL)) {
|
|
6354
|
+
// Scroll to show left side of block
|
|
6355
|
+
targetLeft = left;
|
|
6356
|
+
}
|
|
6357
|
+
else if ((!wideBlock && overflowRight) ||
|
|
6358
|
+
(wideBlock && this.workspace_.RTL)) {
|
|
6359
|
+
// Scroll to show right side of block
|
|
6360
|
+
targetLeft = right - metrics.viewWidth;
|
|
6361
|
+
}
|
|
6362
|
+
let targetTop = metrics.viewTop;
|
|
6363
|
+
const overflowTop = top < metrics.viewTop;
|
|
6364
|
+
const overflowBottom = bottom > metrics.viewTop + metrics.viewHeight;
|
|
6365
|
+
const tallBlock = height > metrics.viewHeight;
|
|
6366
|
+
if (overflowTop || (tallBlock && overflowBottom)) {
|
|
6367
|
+
// Scroll to show top of block
|
|
6368
|
+
targetTop = top;
|
|
6369
|
+
}
|
|
6370
|
+
else if (overflowBottom) {
|
|
6371
|
+
// Scroll to show bottom of block
|
|
6372
|
+
targetTop = bottom - metrics.viewHeight;
|
|
6373
|
+
}
|
|
6374
|
+
if (targetLeft !== metrics.viewLeft || targetTop !== metrics.viewTop) {
|
|
6375
|
+
const activeEl = document.activeElement;
|
|
6376
|
+
if (wideBlock || tallBlock) {
|
|
6377
|
+
this.workspace_.scroll(-targetLeft, -targetTop);
|
|
6378
|
+
}
|
|
6379
|
+
else {
|
|
6380
|
+
this.workspace_.centerOnBlock(block.id);
|
|
6381
|
+
}
|
|
6382
|
+
if (activeEl) {
|
|
6383
|
+
// Blockly.WidgetDiv.hide called in scroll is taking away focus.
|
|
6384
|
+
// TODO: Review setFocused call in Blockly.WidgetDiv.hide.
|
|
6385
|
+
activeEl.focus();
|
|
6386
|
+
}
|
|
6387
|
+
}
|
|
6388
|
+
}
|
|
6327
6389
|
open() {
|
|
6328
6390
|
super.open();
|
|
6391
|
+
this.inputElement_.select();
|
|
6329
6392
|
Blockly.utils.dom.addClass(this.workspace_.getInjectionDiv(), 'blockly-ws-searching');
|
|
6330
6393
|
}
|
|
6331
6394
|
close() {
|
|
@@ -12128,15 +12191,20 @@ var pxtblockly;
|
|
|
12128
12191
|
let leftPadding = 0, rightPadding = 0;
|
|
12129
12192
|
switch (outputShape) {
|
|
12130
12193
|
case Blockly.OUTPUT_SHAPE_HEXAGONAL:
|
|
12131
|
-
width =
|
|
12194
|
+
width = size.width / 2;
|
|
12132
12195
|
halfWidth = width / 2;
|
|
12133
|
-
|
|
12134
|
-
|
|
12135
|
-
|
|
12136
|
-
|
|
12137
|
-
|
|
12138
|
-
|
|
12139
|
-
|
|
12196
|
+
leftPadding = -halfWidth; // total translation when toggle is left-aligned = 0
|
|
12197
|
+
rightPadding = halfWidth - innerWidth; // total translation when right-aligned = width
|
|
12198
|
+
/**
|
|
12199
|
+
* Toggle defined clockwise from bottom left:
|
|
12200
|
+
*
|
|
12201
|
+
* 0, 14 ----------- width, 14
|
|
12202
|
+
* / \
|
|
12203
|
+
* -14, 0 width + 14, 0
|
|
12204
|
+
* \ /
|
|
12205
|
+
* 0, -14 ----------- width, -14
|
|
12206
|
+
*/
|
|
12207
|
+
this.toggleThumb_.setAttribute('points', `${0},-14 -14,0 ${0},14 ${width},14 ${width + 14},0 ${width},-14`);
|
|
12140
12208
|
break;
|
|
12141
12209
|
case Blockly.OUTPUT_SHAPE_ROUND:
|
|
12142
12210
|
case Blockly.OUTPUT_SHAPE_SQUARE:
|