Last active
May 11, 2024 02:08
-
-
Save acbart/5df7062cb4861f09ebd2 to your computer and use it in GitHub Desktop.
Blockly SVG -> Image
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| function render() { | |
| aleph = Blockly.svg.cloneNode(true); | |
| aleph.removeAttribute("width"); | |
| aleph.removeAttribute("height"); | |
| aleph.removeChild(aleph.children[0]); | |
| aleph.removeChild(aleph.children[1]); | |
| aleph.removeChild(aleph.children[1]); | |
| if (aleph.children[0].children[1].children[0] !== undefined) { | |
| aleph.children[0].removeChild(aleph.children[0].children[0]); | |
| aleph.children[0].children[0].removeAttribute("transform"); | |
| aleph.children[0].children[0].children[0].removeAttribute("transform"); | |
| var linkElm = document.createElementNS("http://www.w3.org/1999/xhtml", "style"); | |
| linkElm.textContent = '.blocklyDraggable {}\ | |
| .blocklySvg {\ | |
| background-color: #fff;\ | |
| border: 1px solid #ddd;\ | |
| overflow: hidden;\ | |
| }\ | |
| .blocklyWidgetDiv {\ | |
| display: none;\ | |
| position: absolute;\ | |
| z-index: 999;\ | |
| }\ | |
| .blocklyResizeSE {\ | |
| cursor: se-resize;\ | |
| fill: #aaa;\ | |
| }\ | |
| .blocklyResizeSW {\ | |
| cursor: sw-resize;\ | |
| fill: #aaa;\ | |
| }\ | |
| .blocklyResizeLine {\ | |
| stroke: #888;\ | |
| stroke-width: 1;\ | |
| }\ | |
| .blocklyHighlightedConnectionPath {\ | |
| fill: none;\ | |
| stroke: #fc3;\ | |
| stroke-width: 4px;\ | |
| }\ | |
| .blocklyPathLight {\ | |
| fill: none;\ | |
| stroke-linecap: round;\ | |
| stroke-width: 2;\ | |
| }\ | |
| .blocklySelected>.blocklyPath {\ | |
| stroke: #fc3;\ | |
| stroke-width: 3px;\ | |
| }\ | |
| .blocklySelected>.blocklyPathLight {\ | |
| display: none;\ | |
| }\ | |
| .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;\ | |
| }\ | |
| .blocklyText {\ | |
| cursor: default;\ | |
| fill: #fff;\ | |
| font-family: sans-serif;\ | |
| font-size: 11pt;\ | |
| }\ | |
| .blocklyNonEditableText>text {\ | |
| pointer-events: none;\ | |
| }\ | |
| .blocklyNonEditableText>rect,\ | |
| .blocklyEditableText>rect {\ | |
| fill: #fff;\ | |
| fill-opacity: .6;\ | |
| }\ | |
| .blocklyNonEditableText>text,\ | |
| .blocklyEditableText>text {\ | |
| fill: #000;\ | |
| }\ | |
| .blocklyEditableText:hover>rect {\ | |
| stroke: #fff;\ | |
| stroke-width: 2;\ | |
| }\ | |
| .blocklyBubbleText {\ | |
| fill: #000;\ | |
| }\ | |
| .blocklySvg text {\ | |
| user-select: none;\ | |
| -moz-user-select: none;\ | |
| -webkit-user-select: none;\ | |
| cursor: inherit;\ | |
| }\ | |
| .blocklyHidden {\ | |
| display: none;\ | |
| }\ | |
| .blocklyFieldDropdown:not(.blocklyHidden) {\ | |
| display: block;\ | |
| }\ | |
| .blocklyTooltipBackground {\ | |
| fill: #ffffc7;\ | |
| stroke: #d8d8d8;\ | |
| stroke-width: 1px;\ | |
| }\ | |
| .blocklyTooltipShadow,\ | |
| .blocklyDropdownMenuShadow {\ | |
| fill: #bbb;\ | |
| filter: url(#blocklyShadowFilter);\ | |
| }\ | |
| .blocklyTooltipText {\ | |
| fill: #000;\ | |
| font-family: sans-serif;\ | |
| font-size: 9pt;\ | |
| }\ | |
| .blocklyIconShield {\ | |
| cursor: default;\ | |
| fill: #00c;\ | |
| stroke: #ccc;\ | |
| stroke-width: 1px;\ | |
| }\ | |
| .blocklyIconGroup:hover>.blocklyIconShield {\ | |
| fill: #00f;\ | |
| stroke: #fff;\ | |
| }\ | |
| .blocklyIconGroup:hover>.blocklyIconMark {\ | |
| fill: #fff;\ | |
| }\ | |
| .blocklyIconMark {\ | |
| cursor: default !important;\ | |
| fill: #ccc;\ | |
| font-family: sans-serif;\ | |
| font-size: 9pt;\ | |
| font-weight: bold;\ | |
| text-anchor: middle;\ | |
| }\ | |
| .blocklyWarningBody {\ | |
| }\ | |
| .blocklyMinimalBody {\ | |
| margin: 0;\ | |
| padding: 0;\ | |
| }\ | |
| .blocklyCommentTextarea {\ | |
| background-color: #ffc;\ | |
| border: 0;\ | |
| margin: 0;\ | |
| padding: 2px;\ | |
| resize: none;\ | |
| }\ | |
| .blocklyHtmlInput {\ | |
| border: none;\ | |
| font-family: sans-serif;\ | |
| font-size: 11pt;\ | |
| outline: none;\ | |
| width: 100%\ | |
| }\ | |
| .blocklyMutatorBackground {\ | |
| fill: #fff;\ | |
| stroke: #ddd;\ | |
| stroke-width: 1;\ | |
| }\ | |
| .blocklyFlyoutBackground {\ | |
| fill: #ddd;\ | |
| fill-opacity: .8;\ | |
| }\ | |
| .blocklyColourBackground {\ | |
| fill: #666;\ | |
| }\ | |
| .blocklyScrollbarBackground {\ | |
| fill: #fff;\ | |
| stroke: #e4e4e4;\ | |
| stroke-width: 1;\ | |
| }\ | |
| .blocklyScrollbarKnob {\ | |
| fill: #ccc;\ | |
| }\ | |
| .blocklyScrollbarBackground:hover+.blocklyScrollbarKnob,\ | |
| .blocklyScrollbarKnob:hover {\ | |
| fill: #bbb;\ | |
| }\ | |
| .blocklyInvalidInput {\ | |
| background: #faa;\ | |
| }\ | |
| .blocklyAngleCircle {\ | |
| stroke: #444;\ | |
| stroke-width: 1;\ | |
| fill: #ddd;\ | |
| fill-opacity: .8;\ | |
| }\ | |
| .blocklyAngleMarks {\ | |
| stroke: #444;\ | |
| stroke-width: 1;\ | |
| }\ | |
| .blocklyAngleGauge {\ | |
| fill: #f88;\ | |
| fill-opacity: .8; \ | |
| }\ | |
| .blocklyAngleLine {\ | |
| stroke: #f00;\ | |
| stroke-width: 2;\ | |
| stroke-linecap: round;\ | |
| }\ | |
| .blocklyContextMenu {\ | |
| border-radius: 4px;\ | |
| }\ | |
| .blocklyDropdownMenu {\ | |
| padding: 0 !important;\ | |
| }\ | |
| .blocklyWidgetDiv .goog-option-selected .goog-menuitem-checkbox,\ | |
| .blocklyWidgetDiv .goog-option-selected .goog-menuitem-icon {\ | |
| background: url(blockly/media/sprites.png) no-repeat -48px -16px !important;\ | |
| }\ | |
| .blocklyToolboxDiv {\ | |
| background-color: #ddd;\ | |
| display: none;\ | |
| overflow-x: visible;\ | |
| overflow-y: auto;\ | |
| position: absolute;\ | |
| }\ | |
| .blocklyTreeRoot {\ | |
| padding: 4px 0;\ | |
| }\ | |
| .blocklyTreeRoot:focus {\ | |
| outline: none;\ | |
| }\ | |
| .blocklyTreeRow {\ | |
| line-height: 22px;\ | |
| height: 22px;\ | |
| padding-right: 1em;\ | |
| white-space: nowrap;\ | |
| }\ | |
| .blocklyToolboxDiv[dir="RTL"] .blocklyTreeRow {\ | |
| padding-right: 0;\ | |
| padding-left: 1em !important;\ | |
| }\ | |
| .blocklyTreeRow:hover {\ | |
| background-color: #e4e4e4;\ | |
| }\ | |
| .blocklyTreeSeparator {\ | |
| border-bottom: solid #e5e5e5 1px;\ | |
| height: 0px;\ | |
| margin: 5px 0;\ | |
| }\ | |
| .blocklyTreeIcon {\ | |
| background-image: url(blockly/media/sprites.png);\ | |
| height: 16px;\ | |
| vertical-align: middle;\ | |
| width: 16px;\ | |
| }\ | |
| .blocklyTreeIconClosedLtr {\ | |
| background-position: -32px -1px;\ | |
| }\ | |
| .blocklyTreeIconClosedRtl {\ | |
| background-position: 0px -1px;\ | |
| }\ | |
| .blocklyTreeIconOpen {\ | |
| background-position: -16px -1px;\ | |
| }\ | |
| .blocklyTreeSelected>.blocklyTreeIconClosedLtr {\ | |
| background-position: -32px -17px;\ | |
| }\ | |
| .blocklyTreeSelected>.blocklyTreeIconClosedRtl {\ | |
| background-position: 0px -17px;\ | |
| }\ | |
| .blocklyTreeSelected>.blocklyTreeIconOpen {\ | |
| background-position: -16px -17px;\ | |
| }\ | |
| .blocklyTreeIconNone,\ | |
| .blocklyTreeSelected>.blocklyTreeIconNone {\ | |
| background-position: -48px -1px;\ | |
| }\ | |
| .blocklyTreeLabel {\ | |
| cursor: default;\ | |
| font-family: sans-serif;\ | |
| font-size: 16px;\ | |
| padding: 0 3px;\ | |
| vertical-align: middle;\ | |
| }\ | |
| .blocklyTreeSelected {\ | |
| background-color: #57e !important;\ | |
| }\ | |
| .blocklyTreeSelected .blocklyTreeLabel {\ | |
| color: #fff;\ | |
| }\ | |
| .blocklyWidgetDiv .goog-palette {\ | |
| outline: none;\ | |
| cursor: default;\ | |
| }\ | |
| .blocklyWidgetDiv .goog-palette-table {\ | |
| border: 1px solid #666;\ | |
| border-collapse: collapse;\ | |
| }\ | |
| .blocklyWidgetDiv .goog-palette-cell {\ | |
| height: 13px;\ | |
| width: 15px;\ | |
| margin: 0;\ | |
| border: 0;\ | |
| text-align: center;\ | |
| vertical-align: middle;\ | |
| border-right: 1px solid #666;\ | |
| font-size: 1px;\ | |
| }\ | |
| .blocklyWidgetDiv .goog-palette-colorswatch {\ | |
| position: relative;\ | |
| height: 13px;\ | |
| width: 15px;\ | |
| border: 1px solid #666;\ | |
| }\ | |
| .blocklyWidgetDiv .goog-palette-cell-hover .goog-palette-colorswatch {\ | |
| border: 1px solid #FFF;\ | |
| }\ | |
| .blocklyWidgetDiv .goog-palette-cell-selected .goog-palette-colorswatch {\ | |
| border: 1px solid #000;\ | |
| color: #fff;\ | |
| }\ | |
| .blocklyWidgetDiv .goog-date-picker,\ | |
| .blocklyWidgetDiv .goog-date-picker th,\ | |
| .blocklyWidgetDiv .goog-date-picker td {\ | |
| font: 13px Arial, sans-serif;\ | |
| }\ | |
| .blocklyWidgetDiv .goog-date-picker {\ | |
| -moz-user-focus: normal;\ | |
| -moz-user-select: none;\ | |
| position: relative;\ | |
| border: 1px solid #000;\ | |
| float: left;\ | |
| padding: 2px;\ | |
| color: #000;\ | |
| background: #c3d9ff;\ | |
| cursor: default;\ | |
| }\ | |
| .blocklyWidgetDiv .goog-date-picker th {\ | |
| text-align: center;\ | |
| }\ | |
| .blocklyWidgetDiv .goog-date-picker td {\ | |
| text-align: center;\ | |
| vertical-align: middle;\ | |
| padding: 1px 3px;\ | |
| }\ | |
| .blocklyWidgetDiv .goog-date-picker-menu {\ | |
| position: absolute;\ | |
| background: threedface;\ | |
| border: 1px solid gray;\ | |
| -moz-user-focus: normal;\ | |
| z-index: 1;\ | |
| outline: none;\ | |
| }\ | |
| .blocklyWidgetDiv .goog-date-picker-menu ul {\ | |
| list-style: none;\ | |
| margin: 0px;\ | |
| padding: 0px;\ | |
| }\ | |
| .blocklyWidgetDiv .goog-date-picker-menu ul li {\ | |
| cursor: default;\ | |
| }\ | |
| .blocklyWidgetDiv .goog-date-picker-menu-selected {\ | |
| background: #ccf;\ | |
| }\ | |
| .blocklyWidgetDiv .goog-date-picker th {\ | |
| font-size: .9em;\ | |
| }\ | |
| .blocklyWidgetDiv .goog-date-picker td div {\ | |
| float: left;\ | |
| }\ | |
| .blocklyWidgetDiv .goog-date-picker button {\ | |
| padding: 0px;\ | |
| margin: 1px 0;\ | |
| border: 0;\ | |
| color: #20c;\ | |
| font-weight: bold;\ | |
| background: transparent;\ | |
| }\ | |
| .blocklyWidgetDiv .goog-date-picker-date {\ | |
| background: #fff;\ | |
| }\ | |
| .blocklyWidgetDiv .goog-date-picker-week,\ | |
| .blocklyWidgetDiv .goog-date-picker-wday {\ | |
| padding: 1px 3px;\ | |
| border: 0;\ | |
| border-color: #a2bbdd;\ | |
| border-style: solid;\ | |
| }\ | |
| .blocklyWidgetDiv .goog-date-picker-week {\ | |
| border-right-width: 1px;\ | |
| }\ | |
| .blocklyWidgetDiv .goog-date-picker-wday {\ | |
| border-bottom-width: 1px;\ | |
| }\ | |
| .blocklyWidgetDiv .goog-date-picker-head td {\ | |
| text-align: center;\ | |
| }\ | |
| .blocklyWidgetDiv td.goog-date-picker-today-cont {\ | |
| text-align: center;\ | |
| }\ | |
| .blocklyWidgetDiv td.goog-date-picker-none-cont {\ | |
| text-align: center;\ | |
| }\ | |
| .blocklyWidgetDiv .goog-date-picker-month {\ | |
| min-width: 11ex;\ | |
| white-space: nowrap;\ | |
| }\ | |
| .blocklyWidgetDiv .goog-date-picker-year {\ | |
| min-width: 6ex;\ | |
| white-space: nowrap;\ | |
| }\ | |
| .blocklyWidgetDiv .goog-date-picker-monthyear {\ | |
| white-space: nowrap;\ | |
| }\ | |
| .blocklyWidgetDiv .goog-date-picker table {\ | |
| border-collapse: collapse;\ | |
| }\ | |
| .blocklyWidgetDiv .goog-date-picker-other-month {\ | |
| color: #888;\ | |
| }\ | |
| .blocklyWidgetDiv .goog-date-picker-wkend-start,\ | |
| .blocklyWidgetDiv .goog-date-picker-wkend-end {\ | |
| background: #eee;\ | |
| }\ | |
| .blocklyWidgetDiv td.goog-date-picker-selected {\ | |
| background: #c3d9ff;\ | |
| }\ | |
| .blocklyWidgetDiv .goog-date-picker-today {\ | |
| background: #9ab;\ | |
| font-weight: bold !important;\ | |
| border-color: #246 #9bd #9bd #246;\ | |
| color: #fff;\ | |
| }\ | |
| .blocklyWidgetDiv .goog-menu {\ | |
| background: #fff;\ | |
| border-color: #ccc #666 #666 #ccc;\ | |
| border-style: solid;\ | |
| border-width: 1px;\ | |
| cursor: default;\ | |
| font: normal 13px Arial, sans-serif;\ | |
| margin: 0;\ | |
| outline: none;\ | |
| padding: 4px 0;\ | |
| position: absolute;\ | |
| z-index: 20000;\ | |
| }\ | |
| .blocklyWidgetDiv .goog-menuitem {\ | |
| color: #000;\ | |
| font: normal 13px Arial, sans-serif;\ | |
| list-style: none;\ | |
| margin: 0;\ | |
| padding: 4px 7em 4px 28px;\ | |
| white-space: nowrap;\ | |
| }\ | |
| .blocklyWidgetDiv .goog-menuitem.goog-menuitem-rtl {\ | |
| padding-left: 7em;\ | |
| padding-right: 28px;\ | |
| }\ | |
| .blocklyWidgetDiv .goog-menu-nocheckbox .goog-menuitem,\ | |
| .blocklyWidgetDiv .goog-menu-noicon .goog-menuitem {\ | |
| padding-left: 12px;\ | |
| }\ | |
| .blocklyWidgetDiv .goog-menu-noaccel .goog-menuitem {\ | |
| padding-right: 20px;\ | |
| }\ | |
| .blocklyWidgetDiv .goog-menuitem-content {\ | |
| color: #000;\ | |
| font: normal 13px Arial, sans-serif;\ | |
| }\ | |
| .blocklyWidgetDiv .goog-menuitem-disabled .goog-menuitem-accel,\ | |
| .blocklyWidgetDiv .goog-menuitem-disabled .goog-menuitem-content {\ | |
| color: #ccc !important;\ | |
| }\ | |
| .blocklyWidgetDiv .goog-menuitem-disabled .goog-menuitem-icon {\ | |
| opacity: 0.3;\ | |
| -moz-opacity: 0.3;\ | |
| filter: alpha(opacity=30);\ | |
| }\ | |
| .blocklyWidgetDiv .goog-menuitem-highlight,\ | |
| .blocklyWidgetDiv .goog-menuitem-hover {\ | |
| background-color: #d6e9f8;\ | |
| border-color: #d6e9f8;\ | |
| border-style: dotted;\ | |
| border-width: 1px 0;\ | |
| padding-bottom: 3px;\ | |
| padding-top: 3px;\ | |
| }\ | |
| .blocklyWidgetDiv .goog-menuitem-checkbox,\ | |
| .blocklyWidgetDiv .goog-menuitem-icon {\ | |
| background-repeat: no-repeat;\ | |
| height: 16px;\ | |
| left: 6px;\ | |
| position: absolute;\ | |
| right: auto;\ | |
| vertical-align: middle;\ | |
| width: 16px;\ | |
| }\ | |
| .blocklyWidgetDiv .goog-menuitem-rtl .goog-menuitem-checkbox,\ | |
| .blocklyWidgetDiv .goog-menuitem-rtl .goog-menuitem-icon {\ | |
| left: auto;\ | |
| right: 6px;\ | |
| }\ | |
| .blocklyWidgetDiv .goog-option-selected .goog-menuitem-checkbox,\ | |
| .blocklyWidgetDiv .goog-option-selected .goog-menuitem-icon {\ | |
| background: url(//ssl.gstatic.com/editor/editortoolbar.png) no-repeat -512px 0;\ | |
| }\ | |
| .blocklyWidgetDiv .goog-menuitem-accel {\ | |
| color: #999;\ | |
| direction: ltr;\ | |
| left: auto;\ | |
| padding: 0 6px;\ | |
| position: absolute;\ | |
| right: 0;\ | |
| text-align: right;\ | |
| }\ | |
| .blocklyWidgetDiv .goog-menuitem-rtl .goog-menuitem-accel {\ | |
| left: 0;\ | |
| right: auto;\ | |
| text-align: left;\ | |
| }\ | |
| .blocklyWidgetDiv .goog-menuitem-mnemonic-hint {\ | |
| text-decoration: underline;\ | |
| }\ | |
| .blocklyWidgetDiv .goog-menuitem-mnemonic-separator {\ | |
| color: #999;\ | |
| font-size: 12px;\ | |
| padding-left: 4px;\ | |
| }\ | |
| .blocklyWidgetDiv .goog-menuseparator {\ | |
| border-top: 1px solid #ccc;\ | |
| margin: 4px 0;\ | |
| padding: 0;\ | |
| }'; | |
| aleph.insertBefore(linkElm, aleph.firstChild); | |
| //$(aleph).find('.blocklyPathLight').remove(); | |
| //$(aleph).find('.blocklyPathDark').remove(); | |
| $(aleph).find('rect').remove(); | |
| //$(aleph).find('text').attr('fill', '#000').attr('font-family','sans-serif').attr('font-size','11pt'); | |
| console.log(aleph); | |
| var xml = new XMLSerializer().serializeToString(aleph) | |
| data = "data:image/svg+xml;base64," + btoa(unescape(encodeURIComponent(xml))), | |
| img = new Image() | |
| img.setAttribute('src', data) | |
| document.body.appendChild(img) | |
| } | |
| } |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment