diff --git a/docs/about.md b/docs/about.md new file mode 100644 index 00000000..52461817 --- /dev/null +++ b/docs/about.md @@ -0,0 +1,96 @@ +![](/static/mb/device/calliope_website.jpg) + +# About + +## @description A Blocks / Javascript code editor for the Calliope mini, a pocket-size computer with 5x5 display, sensors and Bluetooth. + +The [Calliope mini](https://calliope.cc) is a [pocket-size computer]([/device](https://calliope.cc/en/calliope-mini/tech-facts)) with a 5x5 display of 25 LEDs, Bluetooth and sensors that can be programmed by anyone. + +The Calliope mini provides an easy and fun introduction to programming and making ??? switch on, program it to do something fun ??? wear it, customize it. +Just like Arduino, the Calliope mini can additionally be connected to and interact with sensors, displays, and other devices. + +* [Read the docs](/docs) + +## [Hardware: The Device](/device) + +The Calliope mini is packaged with sensors, radio and other goodies. Learn about the [hardware components]([/device](https://calliope.cc/en/calliope-mini/tech-facts)) of the Calliope mini to make the most of it! + +## ~ hint + +**Looking to buy a Calliope mini?** See the [list of resellers](https://calliope.cc/en/shops). + +## ~ + +## Programming: [Blocks](/blocks) or [JavaScript](/javascript) + +You can program the Calliope mini using [Blocks](/blocks) or [JavaScript](/javascript) in your web browser via the [Calliope mini APIs](/reference): + +```block +input.onButtonPressed(Button.A, () => { + basic.showString("Hi!"); +}) +``` +```typescript +input.onButtonPressed(Button.A, () => { + basic.showString("Hi!"); +}) +``` + +The editor work in [most modern browsers](/browsers), work [offline](/offline) once loaded and do not require any installation. + +## [Compile and Flash: Your Program!](/device/usb) + +When you have your code ready, you connect your Calliope mini to a computer via a USB cable, so it appears as a mounted drive (named MINI). If you are using the Calliope mini REV2 you also see another drive (FLASH) that handels up to 25 additional programs. + +Compilation to ARM thumb machine code from [Blocks](/blocks) or [JavaScript](/javascript) happens in the browser. You save the ARM binary +program to a file, which you then copy to the micro:bit drive, which flashes the micro:bit device with the new program. + +## Simulator: Test Your Code + +You can run your code using the micro:bit simulator, all within the confines of a web browser. +The simulator has support for the LED screen, buttons, as well as compass, accelerometer, and digital I/O pins. + +```sim +basic.forever(() => { + basic.showString("Hi!"); +}) +input.onButtonPressed(Button.A, () => { + led.stopAnimation(); + basic.showLeds(` +. . . . . +. # . # . +. . . . . +# . . . # +. # # # .`); +}); +input.onButtonPressed(Button.B, () => { + led.stopAnimation(); + basic.showLeds(` +. # . # . +# . # . # +# . . . # +. # . # . +. . # . .`); +}); +``` + +## Learn! + +We have tons of [projects](/projects), [examples](/examples) and [courses](/courses) to get your started! + + +## [Command Line Tools](/cli) + +Looking to use @homeurl@ in your favorite editor? Install the [command line tools](/cli) and get rolling! + +## [Extensions](/extensions) + +Create, edit and distribute your own blocks and JavaScript using [extensions](/extensions). Extensions are hosted on GitHub and may be written using C++, JavaScript and/or ARM thumb. + +## [Open Source](/open-source) + +The code for the Calliope mini is [open source](/open-source) on GitHub. Contributors are welcome! + +```package +radio +``` \ No newline at end of file diff --git a/docs/static/mb/device/calliope_website.jpg b/docs/static/mb/device/calliope_website.jpg new file mode 100644 index 00000000..413359ad Binary files /dev/null and b/docs/static/mb/device/calliope_website.jpg differ diff --git a/libs/core/_locales/core-jsdoc-strings.json b/libs/core/_locales/core-jsdoc-strings.json index d51a8d1b..2ef44769 100644 --- a/libs/core/_locales/core-jsdoc-strings.json +++ b/libs/core/_locales/core-jsdoc-strings.json @@ -257,6 +257,8 @@ "basic.showArrow": "Draws an arrow on the LED screen", "basic.showArrow|param|direction": "the direction of the arrow", "basic.showArrow|param|interval": "the amount of time (milliseconds) to show the icon. Default is 600.", + "basic.showCompass": "Draws needle on the screen which always points to north", + "basic.showCompass|param|interval": "the amount of time (milliseconds) to show the needle. Default is 600.", "basic.showIcon": "Draws the selected icon on the LED screen", "basic.showIcon|param|icon": "the predefined icon id", "basic.showIcon|param|interval": "the amount of time (milliseconds) to show the icon. Default is 600.", @@ -396,8 +398,6 @@ "images": "Creation, manipulation and display of LED images.", "images.createBigImage": "Creates an image with 2 frames.", "images.createImage": "Creates an image that fits on the LED screen.", - "images.showCompass": "Draws needle on the screen which always points to north", - "images.showCompass|param|interval": "the amount of time (milliseconds) to show the needle. Default is 600.", "input": "Events and data from sensors", "input.acceleration": "Get the acceleration value in milli-gravitys (when the board is laying flat with the screen up, x=0, y=0 and z=-1024)", "input.acceleration|param|dimension": "x, y, or z dimension, eg: Dimension.X", diff --git a/libs/core/_locales/core-strings.json b/libs/core/_locales/core-strings.json index a1c31820..fb0ea9f8 100644 --- a/libs/core/_locales/core-strings.json +++ b/libs/core/_locales/core-strings.json @@ -103,6 +103,14 @@ "Gesture.TiltRight": "Raised when the screen is pointing right", "Gesture.TiltRight|block": "tilt right", "IconNames.Angry|block": "angry", + "IconNames.ArrowEast|block": "arrow East", + "IconNames.ArrowNorthEast|block": "arrow north east", + "IconNames.ArrowNorthWest|block": "arrow north west", + "IconNames.ArrowNorth|block": "arrow north", + "IconNames.ArrowSouthEast|block": "arrow south east", + "IconNames.ArrowSouthWest|block": "arrow south west", + "IconNames.ArrowSouth|block": "arrow south", + "IconNames.ArrowWest|block": "arrow west", "IconNames.Asleep|block": "asleep", "IconNames.Butterfly|block": "butterfly", "IconNames.Chessboard|block": "chess board", @@ -258,6 +266,7 @@ "basic.rgbw|block": "red %red|green %green|blue %blue|white %white", "basic.setLedColor|block": "set led to %color=colorNumberPicker", "basic.showArrow|block": "show arrow %i=device_arrow", + "basic.showCompass|block": "show compass needle for $interval|ms", "basic.showIcon|block": "show icon %i", "basic.showLeds|block": "show leds", "basic.showNumber|block": "show|number %number", @@ -310,7 +319,6 @@ "images.createBigImage|block": "create big image", "images.createImage|block": "create image", "images.iconImage|block": "icon image %i", - "images.showCompass|block": "show compass needle for $interval|ms", "images|block": "images", "input.acceleration|block": "acceleration (mg)|%NAME", "input.buttonIsPressed|block": "button|%NAME|is pressed", diff --git a/libs/core/compass.ts b/libs/core/compass.ts index 255fc8d1..ee01e1aa 100644 --- a/libs/core/compass.ts +++ b/libs/core/compass.ts @@ -229,7 +229,7 @@ let compassImagesDownside = [ -namespace images { +namespace basic { /** * Draws needle on the screen which always points to north * @param interval the amount of time (milliseconds) to show the needle. Default is 600. diff --git a/libs/core/icons.jres b/libs/core/icons.jres index 3e4e037d..5dde2472 100644 --- a/libs/core/icons.jres +++ b/libs/core/icons.jres @@ -122,5 +122,29 @@ }, "scissors": { "icon": "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAMgAAADICAYAAACtWK6eAAAACXBIWXMAAAsTAAALEwEAmpwYAAAFUUlEQVR4nO3dMW6cRRgG4G+RaCL6AAfgAjkA4k5Jg9JCE+6EoM8FOEBC+ihNiqVYU0TZeT3rnd/6/vXztB57Ps3odWTFnrcKAAAAaOGQPng8Hn+uqldV9aKqvl+8979V9baq3hwOh78e8gW6z1dV31XV86p6VlXfrhrszueq+lRVH6rq4wO/Ruv5OtzvMCDH4/HXqvpt8VBnt6qq14fD4feLPqn5fHW60B83mOecd3W68Eu0nq/L/Z4NyF1y/xx9fAPHqvpl9jt19/nq9J35pw3nOeefmv9O3Xq+Tvf7zeATXtXjDVd3e728YH33+Z5vNciiPbvP1+Z+RwF5sd0sQ5fs2X2+Z5tNsWbP7vO1ud9RQFb/QDTjhwvWdp9v9Q+8q/fsPl+b+x0FBCgBgUhAIBAQCAQEAgGBQEAgEBAIBAQCAYFAQCAQEAgEBAIBgUBAIBAQCAQEAgGBQEAgGAXk0jeWVnh/wdru833ebIo1e3afr839jgLydsNBRi7Zs/t8nzabYs2e3edrc7+jgLyp02Naj+V4t+es7vN92GqQRXt2n6/N/Z4NyN0Lc6/rcYb8/+nHv2c/oft8dXpB8N1G85zzri57/7b1fJ3ud+bx6pd1elTrknehZryv0z9rf1z5eHXb+ar549DVfL4d3C8AAAAAAAAAPDF60sduvifd+d1/fnrSJ7aqG+xJd35fGJ6fnvQ5N9WT7vzOOnt+etLn3FpPuvOb3FNP+jZ76iG/bs8256cnfd4t9aQ7v8k9vWoCgYBAICAQCAgEAgKBgEAgIBAICAQCAoGAQCAgEAgIBAICgYBAICAQCAgEAgKBgEAgIBDoSZ93Sz3pzm9yTz3p2+yph/y6Pducn570ObfWk+78JvfUk36/m+tJd35fGZ6fnvSxm+9Jd35X98wDAAAAAAAAwBNzX5Fj9//qbz2fHvL9328KSIue6qD1fHrIv7Db+x0FpE1P9UDr+fSQn7XL+x39PUibnuoFa1fRQ36dXd7vKCBteqoXrF1FD/l1dnm/o4C06alesHYVPeTX2eX9etUEAgGBQEAgEBAIBAQCAYFAQCAQEAgEBAIBgUBAIBAQCAQEAgGBQEAgEBAIBAQCAYFAQCAYBaRNT/WCtavoIb/OLu93FJA2PdUL1q6ih/w6u7zfUUDa9FQvWLuKHvLr7PJ+RwFp01M90Ho+PeRf2e39erx6TA/5dW7+fgEAAAAAAADg6Ym/atK957v7fNX8VyWc3xU96d17vrvPV016vkec3xcu60nv3vPdfb5q1PN9jvM766Ke9O49393na9PzPeD8JvccBaR7z3f3+dr0fA84v8k9RwHp3vPdfb42Pd8Dzm9yT6+aQCAgEAgIBAICgYBAICAQCAgEAgKBgEAgIBAICAQCAoGAQCAgEAgIBAICgYBAICAQCAgEo4B07/nuPl+bnu8B5ze55ygg3Xu+u8/Xpud7wPlN7jkKSPee7+7zten5HnB+k3ueDUj3nu/u81Wjnu9znN9XHtaT3r3nu/t81eDx5cT56UkHAAAAAAAAgMvoSR+7iZ7ve7Ser8P96kmf2Kp23PMdtJ6vy/3qSZ+z257vgdbzdbpfPelzdtvzvWDtKrvscdeTvs2ebXq+F6xdZZc97nrS5+2y53vB2lV22ePuVRMIBAQCAYFAQCAQEAgEBAIBgUBAIBAQCAQEAgGBQEAgEBAIBAQCAYFAQCAQEAgEBAIBgUBP+rxd9nwvWLvKLnvc9aRvs2ebnu8Fa1fZZY+7nvQ5u+35XrB2lV32uOtJv9+ue74HWs/X6X71pI89hZ7v1vPt4H4BAACAx/IfV5v6DSxvZ+4AAAAASUVORK5CYII=" + }, + "arrownorth": { + "icon": "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAMgAAADICAYAAACtWK6eAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAyVpVFh0WE1MOmNvbS5hZG9iZS54bXAAAAAAADw/eHBhY2tldCBiZWdpbj0i77u/IiBpZD0iVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkIj8+IDx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iIHg6eG1wdGs9IkFkb2JlIFhNUCBDb3JlIDYuMC1jMDAyIDc5LjE2NDQ2MCwgMjAyMC8wNS8xMi0xNjowNDoxNyAgICAgICAgIj4gPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4gPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIgeG1sbnM6eG1wPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvIiB4bWxuczp4bXBNTT0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wL21tLyIgeG1sbnM6c3RSZWY9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9zVHlwZS9SZXNvdXJjZVJlZiMiIHhtcDpDcmVhdG9yVG9vbD0iQWRvYmUgUGhvdG9zaG9wIDIxLjIgKE1hY2ludG9zaCkiIHhtcE1NOkluc3RhbmNlSUQ9InhtcC5paWQ6QTg1QjQxRjlFQzNCMTFFQTkwMDREMjM3Rjg3MzY4NzkiIHhtcE1NOkRvY3VtZW50SUQ9InhtcC5kaWQ6QTg1QjQxRkFFQzNCMTFFQTkwMDREMjM3Rjg3MzY4NzkiPiA8eG1wTU06RGVyaXZlZEZyb20gc3RSZWY6aW5zdGFuY2VJRD0ieG1wLmlpZDpBODVCNDFGN0VDM0IxMUVBOTAwNEQyMzdGODczNjg3OSIgc3RSZWY6ZG9jdW1lbnRJRD0ieG1wLmRpZDpBODVCNDFGOEVDM0IxMUVBOTAwNEQyMzdGODczNjg3OSIvPiA8L3JkZjpEZXNjcmlwdGlvbj4gPC9yZGY6UkRGPiA8L3g6eG1wbWV0YT4gPD94cGFja2V0IGVuZD0iciI/PrDq62kAAAdCSURBVHja7N2x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" + }, + "arrownortheast": { + "icon": "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAMgAAADICAYAAACtWK6eAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAyVpVFh0WE1MOmNvbS5hZG9iZS54bXAAAAAAADw/eHBhY2tldCBiZWdpbj0i77u/IiBpZD0iVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkIj8+IDx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iIHg6eG1wdGs9IkFkb2JlIFhNUCBDb3JlIDYuMC1jMDAyIDc5LjE2NDQ2MCwgMjAyMC8wNS8xMi0xNjowNDoxNyAgICAgICAgIj4gPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4gPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIgeG1sbnM6eG1wPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvIiB4bWxuczp4bXBNTT0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wL21tLyIgeG1sbnM6c3RSZWY9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9zVHlwZS9SZXNvdXJjZVJlZiMiIHhtcDpDcmVhdG9yVG9vbD0iQWRvYmUgUGhvdG9zaG9wIDIxLjIgKE1hY2ludG9zaCkiIHhtcE1NOkluc3RhbmNlSUQ9InhtcC5paWQ6MTE3Njk4REZFQzNDMTFFQTkwMDREMjM3Rjg3MzY4NzkiIHhtcE1NOkRvY3VtZW50SUQ9InhtcC5kaWQ6MTE3Njk4RTBFQzNDMTFFQTkwMDREMjM3Rjg3MzY4NzkiPiA8eG1wTU06RGVyaXZlZEZyb20gc3RSZWY6aW5zdGFuY2VJRD0ieG1wLmlpZDpDNDM5M0RCMEVDM0IxMUVBOTAwNEQyMzdGODczNjg3OSIgc3RSZWY6ZG9jdW1lbnRJRD0ieG1wLmRpZDoxMTc2OThERUVDM0MxMUVBOTAwNEQyMzdGODczNjg3OSIvPiA8L3JkZjpEZXNjcmlwdGlvbj4gPC9yZGY6UkRGPiA8L3g6eG1wbWV0YT4gPD94cGFja2V0IGVuZD0iciI/Pts1YdYAAAXoSURBVHja7N3B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" + }, + "arroweast": { + "icon": "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAMgAAADICAYAAACtWK6eAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAyVpVFh0WE1MOmNvbS5hZG9iZS54bXAAAAAAADw/eHBhY2tldCBiZWdpbj0i77u/IiBpZD0iVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkIj8+IDx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iIHg6eG1wdGs9IkFkb2JlIFhNUCBDb3JlIDYuMC1jMDAyIDc5LjE2NDQ2MCwgMjAyMC8wNS8xMi0xNjowNDoxNyAgICAgICAgIj4gPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4gPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIgeG1sbnM6eG1wPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvIiB4bWxuczp4bXBNTT0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wL21tLyIgeG1sbnM6c3RSZWY9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9zVHlwZS9SZXNvdXJjZVJlZiMiIHhtcDpDcmVhdG9yVG9vbD0iQWRvYmUgUGhvdG9zaG9wIDIxLjIgKE1hY2ludG9zaCkiIHhtcE1NOkluc3RhbmNlSUQ9InhtcC5paWQ6QTg1QjQxRkRFQzNCMTFFQTkwMDREMjM3Rjg3MzY4NzkiIHhtcE1NOkRvY3VtZW50SUQ9InhtcC5kaWQ6QTg1QjQxRkVFQzNCMTFFQTkwMDREMjM3Rjg3MzY4NzkiPiA8eG1wTU06RGVyaXZlZEZyb20gc3RSZWY6aW5zdGFuY2VJRD0ieG1wLmlpZDpBODVCNDFGQkVDM0IxMUVBOTAwNEQyMzdGODczNjg3OSIgc3RSZWY6ZG9jdW1lbnRJRD0ieG1wLmRpZDpBODVCNDFGQ0VDM0IxMUVBOTAwNEQyMzdGODczNjg3OSIvPiA8L3JkZjpEZXNjcmlwdGlvbj4gPC9yZGY6UkRGPiA8L3g6eG1wbWV0YT4gPD94cGFja2V0IGVuZD0iciI/PkRp+VEAAAbPSURBVHja7N09bhtHGAZg0SALCepsQyY7HcBXiMvkQPFfLhA4ym2Swk1yA1c5gDtSsqNGMOSChJkdhQ4UYpfeITmzP3weYGFBWHM+zfjlz2o932C5XB4B5R6YAhAQEBAQEMhoWPbNwWDw9cvT4jgrjpPiGO157Hlx3BbHVXF82vIxWl3f+/fvf3j48OGL4+Pjp8Ph8NE+i1ssFn9//vz5r+vr61/Oz8/f9nH+ctdXdsFqUPrNfwPypDgmmYI6LY7LyL/T6vqm0+nP4/H4ZZjOxLUtZ7PZm8lk8rpP89dEfWVZeLAhubmKO1qNdRr5zNLa+sIrR6Zw3D2fFWO9CmP2Zf7aVF9VQM4aeLt3lujc7PUVb6ueZwrH/TFf9GX+2lRfVUBOGijwJNG52esLnzlyFxc5pvWtOWZVQEYNFDhKdG72+ooP5I+zX22JuwhgfWuO6TIvbCAgICAgICAgICAgICAgICAgICAggICAgICAgICAgICAgICAgMAhB2TeQC3zROdmr2+xWHzMXVzYSK4v89em+qoCcttAgbeJzs1eX9jxMHdxkWNa35pjVgXkqoECrxKdm72+6+vri+KPnI1XlmEL0r7MX5vqqwpI2Kt0mrG46VHc/q2tri/slRu2A80UkrutRyP357W+NevbtDdvYHPj3Tav/v7e5tV73SsrfM5ZbV59YfPq/dQXu3k1HJSYzasBAQEBAQEBAQEBAQGBThiagt2UXTtvE7/T8goCjb2CuBVhi/qaulUn9tVMH/dvr68+6TvW16b5i7ltSB/3evOnT/oB1qePe/350yf9AOvTx73+mPqkH2B9+rjXH1Of9AOsTx/3+mO6zAsbCAgICAgICAgICAgICAgICAgICAggICAgICAgICAgICAgICAgcMgB0Ue7x/Xp415/TH3SD7A+fdzrj6lP+gHWp497/TH1ST/A+vRxrz9/+qTvWF+b5i+2pbc+7vqkp3961B+k12vpMi9sICAgICAgICCQky63O3KVyCsICAggILC/gITOpDc3N3/O5/OPyz0LjxkeO7L76f8UD/OsOH4vjtly/2arx362bX3mrwfzF369vn4EoY928fWXZXpfwlhbLO5PueoLY8XWZ/66N3+lWSj7ZkhVpuL+E/NMuHrmy1pfzDOh+evm/JVlofQtVgf6aP+Yu77C84ifxfz1ZP5K7+ZdLBYfcrcKDv8lczQaPa75DBju3x9nXuDLwWBQa8zi/a356+D8lY05qLhdu5F7uAc1f+u2bOgec/X1u76yVy2XeWHby7wgIICAgICAgICAgICAgICAgICAgAACAgICAgICAgICAgICAn0OSAf6aM8amKvLiJ/F/PVk/koD0oE+2u8aWOB3iX4W89fi+SsNSAf6aP+au77iuKh7svnr0fzZetTWo+YvcuvRr0If7Zubmz/CRl4JNg/+EB57x82XvyuO38JGaAkmbrp67F02XzZ/HZq/sizokw73AlLrMwggICAgICAgICAg0CpDU7C95tpY1ONyvVcQEBBo61us0+I4K46T4hjteex5cdwWx1VxfNryMVpZ3723Nlnri33LF26zCM0rj4+Pnw6Hw0f7LC7cPh7ukA03AZ6fn7/t6vpuutXkSXFMMgU1NJW8jPw7jddX9Q+yqflbr2fTZ5Bwg954PH55lL6b7HI2m72ZTCav276+MbeanGYs7mg11mnkM4v6tqwvvHJkCsddTouxXkXeVNma+asKyFkDb/fOEp2rvjUd6OPemvmrCshJAwWeJDpXfWvCZ47cxUWO2Zr5qwrIqIECR4nOVd/6lZnh8HHu4iIvArRm/lzmhQ0EBAQEBAQEBAQEBAQEBAQEBAQEBBAQEBAQEBAQEBAQEBAQEBA45IDMG6hlnuhc9a3pQB/31sxfVUBuGyjwNtG56lvTgT7urZm/qoBcNVDgVaJz1bemA33cWzN/VQEJe5VOMxY3PYrb/1Z9O9QX9soN24FmCsnd1qOR+/O2Zv6+1Qba5tUb6vvG3rzZ64vZmzcIfcjvbV69172ywuec1ebVF13ZvLo0C/qk7/DUqIFO79fTZV7YQEBAQEBAYO90ufUhGK8gICAgICAg0JEP6W412aE+fci7v776pCeqTx/y7q2vPumZ6tOHvD/rq096gjH1Ie/P+uqTnmBMfcj7s776pCcYUx/y/qyvy7ywgYCAgICAgICAgICAgICAgICAgIAAAgICAgICAgICAgICAgICAoccEH3IdxhTH/L+rK8+6QnG1Ie8P+urT3qCMfUh78/66pOeoD59yPuzvvqkJ6xPH/JurW/tPunA5rdYgICAgICAQAr/CDAAdzClt1skhsMAAAAASUVORK5CYII=" + }, + "arrowsoutheast": { + "icon": "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAMgAAADICAYAAACtWK6eAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAyVpVFh0WE1MOmNvbS5hZG9iZS54bXAAAAAAADw/eHBhY2tldCBiZWdpbj0i77u/IiBpZD0iVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkIj8+IDx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iIHg6eG1wdGs9IkFkb2JlIFhNUCBDb3JlIDYuMC1jMDAyIDc5LjE2NDQ2MCwgMjAyMC8wNS8xMi0xNjowNDoxNyAgICAgICAgIj4gPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4gPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIgeG1sbnM6eG1wPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvIiB4bWxuczp4bXBNTT0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wL21tLyIgeG1sbnM6c3RSZWY9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9zVHlwZS9SZXNvdXJjZVJlZiMiIHhtcDpDcmVhdG9yVG9vbD0iQWRvYmUgUGhvdG9zaG9wIDIxLjIgKE1hY2ludG9zaCkiIHhtcE1NOkluc3RhbmNlSUQ9InhtcC5paWQ6MTE3Njk4RTNFQzNDMTFFQTkwMDREMjM3Rjg3MzY4NzkiIHhtcE1NOkRvY3VtZW50SUQ9InhtcC5kaWQ6MTE3Njk4RTRFQzNDMTFFQTkwMDREMjM3Rjg3MzY4NzkiPiA8eG1wTU06RGVyaXZlZEZyb20gc3RSZWY6aW5zdGFuY2VJRD0ieG1wLmlpZDoxMTc2OThFMUVDM0MxMUVBOTAwNEQyMzdGODczNjg3OSIgc3RSZWY6ZG9jdW1lbnRJRD0ieG1wLmRpZDoxMTc2OThFMkVDM0MxMUVBOTAwNEQyMzdGODczNjg3OSIvPiA8L3JkZjpEZXNjcmlwdGlvbj4gPC9yZGY6UkRGPiA8L3g6eG1wbWV0YT4gPD94cGFja2V0IGVuZD0iciI/Pu4vAMQAAAXfSURBVHja7N3B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" + }, + "arrowsouth": { + "icon": "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAMgAAADICAYAAACtWK6eAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAyVpVFh0WE1MOmNvbS5hZG9iZS54bXAAAAAAADw/eHBhY2tldCBiZWdpbj0i77u/IiBpZD0iVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkIj8+IDx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iIHg6eG1wdGs9IkFkb2JlIFhNUCBDb3JlIDYuMC1jMDAyIDc5LjE2NDQ2MCwgMjAyMC8wNS8xMi0xNjowNDoxNyAgICAgICAgIj4gPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4gPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIgeG1sbnM6eG1wPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvIiB4bWxuczp4bXBNTT0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wL21tLyIgeG1sbnM6c3RSZWY9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9zVHlwZS9SZXNvdXJjZVJlZiMiIHhtcDpDcmVhdG9yVG9vbD0iQWRvYmUgUGhvdG9zaG9wIDIxLjIgKE1hY2ludG9zaCkiIHhtcE1NOkluc3RhbmNlSUQ9InhtcC5paWQ6QzQzOTNEQTZFQzNCMTFFQTkwMDREMjM3Rjg3MzY4NzkiIHhtcE1NOkRvY3VtZW50SUQ9InhtcC5kaWQ6QzQzOTNEQTdFQzNCMTFFQTkwMDREMjM3Rjg3MzY4NzkiPiA8eG1wTU06RGVyaXZlZEZyb20gc3RSZWY6aW5zdGFuY2VJRD0ieG1wLmlpZDpBODVCNDFGRkVDM0IxMUVBOTAwNEQyMzdGODczNjg3OSIgc3RSZWY6ZG9jdW1lbnRJRD0ieG1wLmRpZDpBODVCNDIwMEVDM0IxMUVBOTAwNEQyMzdGODczNjg3OSIvPiA8L3JkZjpEZXNjcmlwdGlvbj4gPC9yZGY6UkRGPiA8L3g6eG1wbWV0YT4gPD94cGFja2V0IGVuZD0iciI/PrnT/wkAAAdjSURBVHja7N0/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" + }, + "arrowsouthwest": { + "icon": "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAMgAAADICAYAAACtWK6eAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAyVpVFh0WE1MOmNvbS5hZG9iZS54bXAAAAAAADw/eHBhY2tldCBiZWdpbj0i77u/IiBpZD0iVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkIj8+IDx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iIHg6eG1wdGs9IkFkb2JlIFhNUCBDb3JlIDYuMC1jMDAyIDc5LjE2NDQ2MCwgMjAyMC8wNS8xMi0xNjowNDoxNyAgICAgICAgIj4gPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4gPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIgeG1sbnM6eG1wPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvIiB4bWxuczp4bXBNTT0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wL21tLyIgeG1sbnM6c3RSZWY9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9zVHlwZS9SZXNvdXJjZVJlZiMiIHhtcDpDcmVhdG9yVG9vbD0iQWRvYmUgUGhvdG9zaG9wIDIxLjIgKE1hY2ludG9zaCkiIHhtcE1NOkluc3RhbmNlSUQ9InhtcC5paWQ6MTE3Njk4RTdFQzNDMTFFQTkwMDREMjM3Rjg3MzY4NzkiIHhtcE1NOkRvY3VtZW50SUQ9InhtcC5kaWQ6MTE3Njk4RThFQzNDMTFFQTkwMDREMjM3Rjg3MzY4NzkiPiA8eG1wTU06RGVyaXZlZEZyb20gc3RSZWY6aW5zdGFuY2VJRD0ieG1wLmlpZDoxMTc2OThFNUVDM0MxMUVBOTAwNEQyMzdGODczNjg3OSIgc3RSZWY6ZG9jdW1lbnRJRD0ieG1wLmRpZDoxMTc2OThFNkVDM0MxMUVBOTAwNEQyMzdGODczNjg3OSIvPiA8L3JkZjpEZXNjcmlwdGlvbj4gPC9yZGY6UkRGPiA8L3g6eG1wbWV0YT4gPD94cGFja2V0IGVuZD0iciI/PgEb5sEAAAXPSURBVHja7N3NbuNUGAZgd9QuWs2uoNKumg077mPE/TCIK+DvftBwHezYtKuECrobtYtGCja0Q8jEHjtOjr9jP48UCZWE83Ha13GsyO/RarUqgO1e2QIQEBAQEBBI6HjbD4+Ojl7+8XX5uCgfZ+XjZM9rP5WPh/JxVz7e7/jfMN/afOsXXNZ+h9nu383NzZvz8/NvTk9Pvzo+Pv58n8Mtl8s/Hx8ff7u/v/9pNpv9url/H/Zx6w//3dwvysdVoqDOy8cfHV9jvo35OgYk9P7N5/PvLy8vv63+Vw4822qxWPx4dXX13bYsvGo4sqTavOJ5rdcdj8zmG+l81TtHonD8cyyp1qrW7PIZ5GKA072LAz3XfJnNV55WvU0Ujg8hqU7lugTkbIANPDvQc82X2XzVZ47Uw9WtWReQkwE28ORAzzVfZvOVH8g/Sz1c3UUAl3mhgYCAgICAgICAgICAgICAgICAgIAAAgICAgICAgICAgICAgICAlMOyNMAszwd6Lnmy2y+5XL5V+rhqhvJdQnIwwAb+HCg55ovs/mqOx6mHq5uzbqA3A2wgXcHeq75Mpuvuh1o4tlW5Zo/dwlIdS/VecIB50W3+7eab8TzzWazd4vF4ofqDzdFOKpbj1ZrbvuXTffmrbg5tJtXD7Z/zzevfvt88+q93iur+pyzdvPqd5v71zYg7HJIClBr53e4n9+by7zQ4NgWOHpTzzsIjOkdJEpttXcJASGz0AqzUywQEBAQEBAY94f0kF9FGOqrMG0/jEef70XqHvIdDP73l11PejXvUPPVfddpcw8jzFcT2P9eMEAPecfXhdg/PekTnC9SD3n0/dOTPsH5IvWQR98/PekTnC9SD3n0/dOTPsH5IvWQR98/l3mhgYCAgICAgICAgICAgICAgICAgIAAAgICAgICAgICAgICAgICAlMOiJ7vEc8XqYc8+v7pSZ/gfJF6yKPvn570Cc4XqYc8+v7pSZ/gfJF6yKPvX3Y96Wv35k0+X8d78w46X808/5O6h3wHg+9fdj3pETsKVbCNg5506EhAoIGWW6cweAcBAQEBAZ9B2Lvol6K9g4CAwIROsaL2aOshH/f+RZqv9qsmUXu0I/akb31BsP3bMnuYHveagMTtSdej/RE95An3r4jek65Hu9+a9q/3mrF70vVo91vT/vVeM3ZPuh7tfmvav95r6kmHHAgICAgICAgICAgICAgICAgICAgIICAgICAgICAgICAgICAgIDDZgOjR7rem/eu9ZuyedD3a/da0f73XjN2Trke735r2r/easXvS9Wh/RA95wv0rculJj9ijHbEnvU6k/auZ3c2r9aQfRm7FnQp0duMyLwgICAjsnRLPkZ/b5/ZZSUAQlIwOdk6xYEzvII6E+JAOAgKZn2JF7fmOPl8uPe6p59vB4PNl15P+Isp8DV/VCdHz3fCZLfl8HV8TY/+2/fD29vbN9fX1L0W6KuNVuebXbb+0WL1zRJmv5o+yOvJ9mfhs4PdylvctAzLIfB3eScLsX5Y96XrIe69pvpZrZtmTroe895rma7lmlj3pesh7r2m+lmu6zAsNBAQEBAQEBAQEBAQEBAQEBAQEBAQQEBAQEBAQEBAQEBAQEBAQmGxAovd86yHvvab5Wq6ZZU+6HvLea5qv5ZpZ9qTrIe+9pvlarpllT7oe8o9k20Mefb7setLXRZjvE/fDHb7nu7lPxc2rx9aTHo2OwnH/Ll3mhQZKPB2haeAdBAQEBAQEBAQEBAQEBLKmJ33C8xW+aqIn3Xy19KRvzKcn3XzrR2Y96Rvz6Uk33ws96S3X1JM+wfkKPemt19STPsH5Cj3prdd0mRcaCAgICAgICAgICAgICAgICAgICAggICAgICAgICAgICAgICAgMNmA6Ekf93yFnvTWa+pJn+B8hZ701mvqSZ/gfIWe9NZr6kmf4HyFnvTW8+lJn/B8hZtX79aTDjScYgECAgICAgIH8rcAAwDOgyqtx7KFLQAAAABJRU5ErkJggg==" + }, + "arrowwest": { + "icon": "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAMgAAADICAYAAACtWK6eAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAyVpVFh0WE1MOmNvbS5hZG9iZS54bXAAAAAAADw/eHBhY2tldCBiZWdpbj0i77u/IiBpZD0iVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkIj8+IDx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iIHg6eG1wdGs9IkFkb2JlIFhNUCBDb3JlIDYuMC1jMDAyIDc5LjE2NDQ2MCwgMjAyMC8wNS8xMi0xNjowNDoxNyAgICAgICAgIj4gPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4gPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIgeG1sbnM6eG1wPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvIiB4bWxuczp4bXBNTT0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wL21tLyIgeG1sbnM6c3RSZWY9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9zVHlwZS9SZXNvdXJjZVJlZiMiIHhtcDpDcmVhdG9yVG9vbD0iQWRvYmUgUGhvdG9zaG9wIDIxLjIgKE1hY2ludG9zaCkiIHhtcE1NOkluc3RhbmNlSUQ9InhtcC5paWQ6QzQzOTNEQUFFQzNCMTFFQTkwMDREMjM3Rjg3MzY4NzkiIHhtcE1NOkRvY3VtZW50SUQ9InhtcC5kaWQ6QzQzOTNEQUJFQzNCMTFFQTkwMDREMjM3Rjg3MzY4NzkiPiA8eG1wTU06RGVyaXZlZEZyb20gc3RSZWY6aW5zdGFuY2VJRD0ieG1wLmlpZDpDNDM5M0RBOEVDM0IxMUVBOTAwNEQyMzdGODczNjg3OSIgc3RSZWY6ZG9jdW1lbnRJRD0ieG1wLmRpZDpDNDM5M0RBOUVDM0IxMUVBOTAwNEQyMzdGODczNjg3OSIvPiA8L3JkZjpEZXNjcmlwdGlvbj4gPC9yZGY6UkRGPiA8L3g6eG1wbWV0YT4gPD94cGFja2V0IGVuZD0iciI/PvkudBoAAAcJSURBVHja7N3B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" + }, + "arrownorthwest": { + "icon": "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAMgAAADICAYAAACtWK6eAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAyVpVFh0WE1MOmNvbS5hZG9iZS54bXAAAAAAADw/eHBhY2tldCBiZWdpbj0i77u/IiBpZD0iVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkIj8+IDx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iIHg6eG1wdGs9IkFkb2JlIFhNUCBDb3JlIDYuMC1jMDAyIDc5LjE2NDQ2MCwgMjAyMC8wNS8xMi0xNjowNDoxNyAgICAgICAgIj4gPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4gPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIgeG1sbnM6eG1wPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvIiB4bWxuczp4bXBNTT0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wL21tLyIgeG1sbnM6c3RSZWY9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9zVHlwZS9SZXNvdXJjZVJlZiMiIHhtcDpDcmVhdG9yVG9vbD0iQWRvYmUgUGhvdG9zaG9wIDIxLjIgKE1hY2ludG9zaCkiIHhtcE1NOkluc3RhbmNlSUQ9InhtcC5paWQ6QzQzOTNEQUVFQzNCMTFFQTkwMDREMjM3Rjg3MzY4NzkiIHhtcE1NOkRvY3VtZW50SUQ9InhtcC5kaWQ6QzQzOTNEQUZFQzNCMTFFQTkwMDREMjM3Rjg3MzY4NzkiPiA8eG1wTU06RGVyaXZlZEZyb20gc3RSZWY6aW5zdGFuY2VJRD0ieG1wLmlpZDpDNDM5M0RBQ0VDM0IxMUVBOTAwNEQyMzdGODczNjg3OSIgc3RSZWY6ZG9jdW1lbnRJRD0ieG1wLmRpZDpDNDM5M0RBREVDM0IxMUVBOTAwNEQyMzdGODczNjg3OSIvPiA8L3JkZjpEZXNjcmlwdGlvbj4gPC9yZGY6UkRGPiA8L3g6eG1wbWV0YT4gPD94cGFja2V0IGVuZD0iciI/Pncgm/sAAAXOSURBVHja7N3NThtXGAbgceQuQOxoRGEFm+xyH1HvJ/25gqrt/VTtdXTXDaxMo5ZdBIsguTPgShYaDzNz7PF3jp9HsiIlkPPpjF//gc47Wy6XFdDujS0AAQEBAQGBCc3b/nI2mz39eX19/eH09PS7o6Oj9/P5/OttLvz4+Pjvw8PDn3d3d79cXV39Pub/MF/afLWT+nZW347r21dbvm99qW/39e1Tffucw3xtH1jNWv+yDshisfjp/Pz8hwlCury9vf354uLixyHfZL60+Wrf1LeLiR6IF/Xt7+jz9Q7Izc3Nh8vLy9+af59owGW95rd9HwmbR2bzjZ9v9cj8buJXK38NeCbZy3x1Fj73eg/SvCyY8OI+BbVe82PfLzZf2nyrly1TO8txvtaANK+Zp55uyJrmS17zeA93wOMc52sNyLbfUPb6tGA+fzvga82XMN8O3vBue80w8/mYFzoICAgICAgICAgICAgICAgICAgICCAgICAgICAgICAgICAgICBwsAFpDiWbepB6zX8GfK35Euarng9Nm9qXHOdrDUhzYt/U0w1Z03zJa97v4Q54n+N8rQFpjrOs/5iyOGS5WrMX86XNVz0ftzm1TznO1xqQ5oS+5jjLiS7y09GZ9Zp/9P0G86XNVz2fcLiY8M63qIadzxtmvo1n8zZWhy9/XB2+/HabEzWvmVeHL/+aeDi0+RxevZX5Bh1eDYemLQs+5oUOAgICAgICAgICAgICAgJZm9uCcdp+qMQ4kX8w3RkQPeTj5lu74Hv/VYkc51uz91+F0ZM+cr6ui726A4bo+c5hvg3PIHrS1+9vufWQvxKQMD3fOczXEhA96S/3SA95sjPzbX8+Pem7WVMPeSHz6UnfwXyVHvJi5vNzEOggICAgICAgICAgICAgICAgICAgIICAgICAgICAgICAgICAgIDAwQZED3nafJUe8mLm05O+mzX1kBcyn570HcxX6SEvZj496TuYr9JDXsx8etJHztfjbN6Gw6t7zNdxurue9FypP9ieKPc3PekwkIBABw1Tmb8swDMIeAbJ+Y2xZxMBIXMeXLzEAgEBAYEc3oPoIU/r+bZ/w/bv/3/f13yte5VTT/qLDQzd8x1t/9Znj7R/63sX8fq+2fTIV1/c76f6IKNZq1lzwPecTLh51WqtkyHPHPZv/P5Fmi/LnvQqeM+3/UteU0964pqhe77tX/KaetJb1iymh9z+Ja+pJx1yICAgICAgICAgICAgICAgICAgICCAgICAgICAgICAgICAgICAwMEGRA952pr2L3lNPemJa4bu+bZ/yWvqSX+hqB5y+5e8pp709YtbWg+5/Uvbv0pP+rie9H0fbjy05zvS/rWczRti/zrO5o0xX0496VqSyt67iDP6mBcEBMZR4omXqh0v8TyDQCnPIPrIERA8uAhIOXz0XDbvQUBAYDcvsfbeU53jfHrc03rcI13frl81mbyneuD3hJgv0v5t+H2r9m8I1uMe4foO+TmIHu2C59Pj3n//NgVEj3bB8+lx77/mpoDo0S54Pj3u/dfcFBA92gXPp8e9/5o+5oUOAgICAgICAgICAgICAgICAgICAgIICAgICAgICAgICAgICAgIHHJA9GgXPJ8e9/5rbgqIHu2C59Pj3n/NTQHRo13wfHrc+6+5KSB6tAueT497//17rQba4dWvzBdp/4aczduI1OMe4fpm35MekQKdsq+lj3mhg4CAgICAgICAgICAgICAgECp9KTvYL5cetKjX98IPe560hPny7UnPfr13UePu55082UxX6Qedz3p5gs3X6Qedz3p5gs3X6Qedz3p5gs3X6Qedx/zQgcBAQEBAQEBAQEBAQEBAQEBAQEBAQQEBAQEBAQEBAQEBAQEBAQOOSB6yM23t/ki9bjrSTdfuPki9bjrSTdfuPki9bjrSTdfuPki9bjrSU+cL+ee9CqPw6sn63Hv3ZMOdL/EAgQEBAQEBHbhPwEGAINqOacrDo3YAAAAAElFTkSuQmCC" } } \ No newline at end of file diff --git a/libs/core/icons.ts b/libs/core/icons.ts index 00d82d33..686b900e 100644 --- a/libs/core/icons.ts +++ b/libs/core/icons.ts @@ -145,7 +145,31 @@ enum IconNames { SmallSquare, //% block="scissors" //% jres=icons.scissors - Scissors + Scissors, + //% block="arrow north" + //% jres=icons.arrownorth + ArrowNorth, + //% block="arrow north east" + //% jres=icons.arrownortheast + ArrowNorthEast, + //% block="arrow East" + //% jres=icons.arroweast + ArrowEast, + //% block="arrow south east" + //% jres=icons.arrowsoutheast + ArrowSouthEast, + //% block="arrow south" + //% jres=icons.arrowsouth + ArrowSouth, + //% block="arrow south west" + //% jres=icons.arrowsouthwest + ArrowSouthWest, + //% block="arrow west" + //% jres=icons.arrowwest + ArrowWest, + //% block="arrow north west" + //% jres=icons.arrownorthwest + ArrowNorthWest } enum ArrowNames { @@ -164,7 +188,7 @@ enum ArrowNames { //% blockIdentity=images.arrowNumber block="West" West, //% blockIdentity=images.arrowNumber block="North West" - NorthWest, + NorthWest } namespace basic { @@ -199,6 +223,7 @@ namespace basic { //% parts="ledmatrix" //% advanced=true //% help=basic/show-arrow + //% deprecated=true export function showArrow(direction: number, interval = 600) { let res = images.arrowImage(direction) res.showImage(0, interval) @@ -528,6 +553,55 @@ namespace images { # # . # # . # # # . . . # . .`); + // arrows + case IconNames.ArrowNorth: return images.createImage(` + . . # . . + . # # # . + # . # . # + . . # . . + . . # . .`); + case IconNames.ArrowNorthEast: return images.createImage(` + . . # # # + . . . # # + . . # . # + . # . . . + # . . . .`); + case IconNames.ArrowEast: return images.createImage(` + . . # . . + . . . # . + # # # # # + . . . # . + . . # . .`); + case IconNames.ArrowSouthEast: return images.createImage(` + # . . . . + . # . . . + . . # . # + . . . # # + . . # # #`); + case IconNames.ArrowSouth: return images.createImage(` + . . # . . + . . # . . + # . # . # + . # # # . + . . # . .`); + case IconNames.ArrowSouthWest: return images.createImage(` + . . . . # + . . . # . + # . # . . + # # . . . + # # # . .`); + case IconNames.ArrowWest: return images.createImage(` + . . # . . + . # . . . + # # # # # + . # . . . + . . # . .`); + case IconNames.ArrowNorthWest: return images.createImage(` + # # # . . + # # . . . + # . # . . + . . . # . + . . . . #`); default: return images.createImage(` . . . . . . . . . . diff --git a/libs/core/jres/gestures/backsideup-icon.png b/libs/core/jres/gestures/backsideup-icon.png deleted file mode 100644 index 225d5cb3..00000000 Binary files a/libs/core/jres/gestures/backsideup-icon.png and /dev/null differ diff --git a/libs/core/jres/gestures/freefall-icon.png b/libs/core/jres/gestures/freefall-icon.png deleted file mode 100644 index 5b2bb2ed..00000000 Binary files a/libs/core/jres/gestures/freefall-icon.png and /dev/null differ diff --git a/libs/core/jres/gestures/frontsideup-icon.png b/libs/core/jres/gestures/frontsideup-icon.png deleted file mode 100644 index 074e7d3d..00000000 Binary files a/libs/core/jres/gestures/frontsideup-icon.png and /dev/null differ diff --git a/libs/core/jres/gestures/impact3g-icon.png b/libs/core/jres/gestures/impact3g-icon.png deleted file mode 100644 index 759d23ed..00000000 Binary files a/libs/core/jres/gestures/impact3g-icon.png and /dev/null differ diff --git a/libs/core/jres/gestures/impact6g-icon.png b/libs/core/jres/gestures/impact6g-icon.png deleted file mode 100644 index ca128d96..00000000 Binary files a/libs/core/jres/gestures/impact6g-icon.png and /dev/null differ diff --git a/libs/core/jres/gestures/impact8g-icon.png b/libs/core/jres/gestures/impact8g-icon.png deleted file mode 100644 index 7c70a7cd..00000000 Binary files a/libs/core/jres/gestures/impact8g-icon.png and /dev/null differ diff --git a/libs/core/jres/gestures/shake-icon.png b/libs/core/jres/gestures/shake-icon.png deleted file mode 100644 index 59e1dc43..00000000 Binary files a/libs/core/jres/gestures/shake-icon.png and /dev/null differ diff --git a/libs/core/jres/gestures/tiltforward-icon.png b/libs/core/jres/gestures/tiltforward-icon.png deleted file mode 100644 index 41d49270..00000000 Binary files a/libs/core/jres/gestures/tiltforward-icon.png and /dev/null differ diff --git a/libs/core/jres/gestures/tiltleft-icon.png b/libs/core/jres/gestures/tiltleft-icon.png deleted file mode 100644 index d119a15f..00000000 Binary files a/libs/core/jres/gestures/tiltleft-icon.png and /dev/null differ diff --git a/libs/core/jres/gestures/tiltright-icon.png b/libs/core/jres/gestures/tiltright-icon.png deleted file mode 100644 index 9f8308f8..00000000 Binary files a/libs/core/jres/gestures/tiltright-icon.png and /dev/null differ diff --git a/libs/core/jres/icons/arroweast-icon.png b/libs/core/jres/icons/arroweast-icon.png new file mode 100644 index 00000000..12df48e1 Binary files /dev/null and b/libs/core/jres/icons/arroweast-icon.png differ diff --git a/libs/core/jres/icons/arrownorth-icon.png b/libs/core/jres/icons/arrownorth-icon.png new file mode 100644 index 00000000..746fb33c Binary files /dev/null and b/libs/core/jres/icons/arrownorth-icon.png differ diff --git a/libs/core/jres/icons/arrownortheast-icon.png b/libs/core/jres/icons/arrownortheast-icon.png new file mode 100644 index 00000000..461d9773 Binary files /dev/null and b/libs/core/jres/icons/arrownortheast-icon.png differ diff --git a/libs/core/jres/icons/arrownorthwest-icon.png b/libs/core/jres/icons/arrownorthwest-icon.png new file mode 100644 index 00000000..91328afb Binary files /dev/null and b/libs/core/jres/icons/arrownorthwest-icon.png differ diff --git a/libs/core/jres/icons/arrowsouth-icon..png b/libs/core/jres/icons/arrowsouth-icon..png new file mode 100644 index 00000000..8d096464 Binary files /dev/null and b/libs/core/jres/icons/arrowsouth-icon..png differ diff --git a/libs/core/jres/icons/arrowsoutheast-icon.png b/libs/core/jres/icons/arrowsoutheast-icon.png new file mode 100644 index 00000000..8f86108c Binary files /dev/null and b/libs/core/jres/icons/arrowsoutheast-icon.png differ diff --git a/libs/core/jres/icons/arrowsouthwest-icon.png b/libs/core/jres/icons/arrowsouthwest-icon.png new file mode 100644 index 00000000..28c822bc Binary files /dev/null and b/libs/core/jres/icons/arrowsouthwest-icon.png differ diff --git a/libs/core/jres/icons/arrowwest-icon.png b/libs/core/jres/icons/arrowwest-icon.png new file mode 100644 index 00000000..6c26b00e Binary files /dev/null and b/libs/core/jres/icons/arrowwest-icon.png differ diff --git a/pxtarget.json b/pxtarget.json index 4bc23bd8..e9f5c693 100644 --- a/pxtarget.json +++ b/pxtarget.json @@ -331,19 +331,23 @@ "docMenu": [ { "name": "Support", - "path": "https://calliope.cc/faq" + "path": "https://calliope.cc/en/impressum" }, { "name": "Reference", - "path": "/reference" + "path": "/about" }, { "name": "Hardware", - "path": "/device" + "path": "https://calliope.cc/en/calliope-mini/tech-facts/" }, { "name": "Buy", "path": "https://shop.calliope.cc/" + }, + { + "name": "Forum", + "path": "https://forum.calliope.cc/" } ], "hasReferenceDocs": false, @@ -355,7 +359,7 @@ "socialOptions": { "orgTwitterHandle": "calliopemini", "hashtags": "calliopemini", - "discourse": "https://forum.calliope.cc", + "discourse": "https://forum.calliope.cc/", "discourseCategory": "Probleme-Software" }, "blocklyOptions": { diff --git a/targetconfig.json b/targetconfig.json index e6381c5f..b1e00213 100644 --- a/targetconfig.json +++ b/targetconfig.json @@ -211,7 +211,6 @@ "tinysuperlab/motionkit", "tinysuperlab/touchkit", "calliope-edu/pxt-grove", - "Microsoft/pxt-neopixel", "Microsoft/pxt-microturtle", "MKleinSB/pxt-OLED-SSD1306", "MKleinSB/pxt-iot-lora-node", @@ -221,7 +220,7 @@ "MKleinSB/pxt-dht11", "MKleinSB/pxt-esp-thingspeak", "MKleinSB/pxt-neopixel-calliope", - "kittenbot/pxt-robotbit" + "Microsoft/pxt-neopixel" ] }, "galleries": {