├── .gitignore ├── .gitmodules ├── LICENSE ├── README.md ├── code ├── cordova │ ├── readme.md │ └── spotcontroller │ │ ├── .gitignore │ │ ├── config.xml │ │ ├── hooks │ │ └── README.md │ │ ├── icon.png │ │ ├── package-lock.json │ │ ├── package.json │ │ ├── res │ │ └── logo.png │ │ ├── splash.png │ │ └── www │ │ ├── css │ │ └── index.css │ │ ├── device.html │ │ ├── index copy.html │ │ ├── index.html │ │ ├── js │ │ ├── app.js │ │ ├── bluetooth.js │ │ ├── controller.js │ │ ├── debug.js │ │ ├── joy.js │ │ └── storage.js │ │ ├── lib │ │ ├── OnsenUI │ │ │ ├── CHANGELOG.md │ │ │ ├── LICENSE │ │ │ ├── README.md │ │ │ ├── bower.json │ │ │ ├── css-components-src │ │ │ │ ├── README.md │ │ │ │ ├── gulpfile.js │ │ │ │ ├── misc │ │ │ │ │ ├── screenshot-01.png │ │ │ │ │ └── screenshot-02.png │ │ │ │ ├── package.json │ │ │ │ ├── patterns.yaml │ │ │ │ ├── previewer-src │ │ │ │ │ ├── app.js │ │ │ │ │ ├── components │ │ │ │ │ │ ├── app-page.js │ │ │ │ │ │ ├── category-page.js │ │ │ │ │ │ ├── component-page.js │ │ │ │ │ │ ├── components-page.js │ │ │ │ │ │ ├── notfound-page.js │ │ │ │ │ │ ├── pattern-page.js │ │ │ │ │ │ ├── patterns-page.js │ │ │ │ │ │ ├── platform-select.js │ │ │ │ │ │ ├── preview-component.js │ │ │ │ │ │ └── theme-select.js │ │ │ │ │ ├── index.html.eco │ │ │ │ │ ├── select-icon.svg │ │ │ │ │ ├── style.css │ │ │ │ │ └── util.js │ │ │ │ ├── src │ │ │ │ │ ├── components │ │ │ │ │ │ ├── action-sheet.css │ │ │ │ │ │ ├── alert-dialog.css │ │ │ │ │ │ ├── button-bar.css │ │ │ │ │ │ ├── button.css │ │ │ │ │ │ ├── card.css │ │ │ │ │ │ ├── checkbox.css │ │ │ │ │ │ ├── combination.css │ │ │ │ │ │ ├── dialog.css │ │ │ │ │ │ ├── fab.css │ │ │ │ │ │ ├── global.css │ │ │ │ │ │ ├── index.css │ │ │ │ │ │ ├── list.css │ │ │ │ │ │ ├── modal.css │ │ │ │ │ │ ├── notification.css │ │ │ │ │ │ ├── page.css │ │ │ │ │ │ ├── popover.css │ │ │ │ │ │ ├── progress-bar.css │ │ │ │ │ │ ├── progress-circular.css │ │ │ │ │ │ ├── radio-button.css │ │ │ │ │ │ ├── range.css │ │ │ │ │ │ ├── search-input.css │ │ │ │ │ │ ├── segment.css │ │ │ │ │ │ ├── select.css │ │ │ │ │ │ ├── switch.css │ │ │ │ │ │ ├── tabbar.css │ │ │ │ │ │ ├── text-input.css │ │ │ │ │ │ ├── textarea.css │ │ │ │ │ │ ├── toast.css │ │ │ │ │ │ ├── toolbar-button.css │ │ │ │ │ │ ├── toolbar.css │ │ │ │ │ │ └── util.css │ │ │ │ │ ├── dark-onsen-css-components.css │ │ │ │ │ ├── dark-theme.css │ │ │ │ │ ├── img │ │ │ │ │ │ ├── android-search-input-icon.svg │ │ │ │ │ │ ├── ios-search-input-icon.svg │ │ │ │ │ │ └── select-arrow.svg │ │ │ │ │ ├── iphonex-support │ │ │ │ │ │ ├── action-sheet.css │ │ │ │ │ │ ├── combination.css │ │ │ │ │ │ ├── fab.css │ │ │ │ │ │ ├── global.css │ │ │ │ │ │ ├── index.css │ │ │ │ │ │ ├── page.css │ │ │ │ │ │ ├── tabbar.css │ │ │ │ │ │ ├── toast.css │ │ │ │ │ │ └── toolbar.css │ │ │ │ │ ├── license.css │ │ │ │ │ ├── old-onsen-css-components.css │ │ │ │ │ ├── old-theme.css │ │ │ │ │ ├── onsen-css-components.css │ │ │ │ │ └── theme.css │ │ │ │ ├── stylelint.config.js │ │ │ │ └── yarn.lock │ │ │ ├── css │ │ │ │ ├── dark-onsen-css-components.css │ │ │ │ ├── dark-onsen-css-components.min.css │ │ │ │ ├── font_awesome │ │ │ │ │ ├── css │ │ │ │ │ │ ├── font-awesome.css │ │ │ │ │ │ └── font-awesome.min.css │ │ │ │ │ └── fonts │ │ │ │ │ │ ├── FontAwesome.otf │ │ │ │ │ │ ├── fontawesome-webfont.eot │ │ │ │ │ │ ├── fontawesome-webfont.svg │ │ │ │ │ │ ├── fontawesome-webfont.ttf │ │ │ │ │ │ ├── fontawesome-webfont.woff │ │ │ │ │ │ └── fontawesome-webfont.woff2 │ │ │ │ ├── ionicons │ │ │ │ │ ├── css │ │ │ │ │ │ ├── ionicons.css │ │ │ │ │ │ └── ionicons.min.css │ │ │ │ │ └── fonts │ │ │ │ │ │ ├── ionicons.eot │ │ │ │ │ │ ├── ionicons.svg │ │ │ │ │ │ ├── ionicons.ttf │ │ │ │ │ │ └── ionicons.woff │ │ │ │ ├── material-design-iconic-font │ │ │ │ │ ├── css │ │ │ │ │ │ ├── material-design-iconic-font.css │ │ │ │ │ │ └── material-design-iconic-font.min.css │ │ │ │ │ └── fonts │ │ │ │ │ │ ├── Material-Design-Iconic-Font.eot │ │ │ │ │ │ ├── Material-Design-Iconic-Font.svg │ │ │ │ │ │ ├── Material-Design-Iconic-Font.ttf │ │ │ │ │ │ ├── Material-Design-Iconic-Font.woff │ │ │ │ │ │ └── Material-Design-Iconic-Font.woff2 │ │ │ │ ├── old-onsen-css-components.css │ │ │ │ ├── old-onsen-css-components.min.css │ │ │ │ ├── onsen-css-components.css │ │ │ │ ├── onsen-css-components.min.css │ │ │ │ ├── onsenui-core.css │ │ │ │ ├── onsenui-core.min.css │ │ │ │ ├── onsenui-fonts.css │ │ │ │ ├── onsenui.css │ │ │ │ └── onsenui.min.css │ │ │ ├── esm │ │ │ │ ├── elements │ │ │ │ │ ├── base │ │ │ │ │ │ ├── base-button.js │ │ │ │ │ │ ├── base-checkbox.js │ │ │ │ │ │ ├── base-dialog.js │ │ │ │ │ │ ├── base-element.js │ │ │ │ │ │ └── base-input.js │ │ │ │ │ ├── ons-action-sheet-button.js │ │ │ │ │ ├── ons-action-sheet │ │ │ │ │ │ ├── animator.js │ │ │ │ │ │ └── index.js │ │ │ │ │ ├── ons-alert-dialog-button.js │ │ │ │ │ ├── ons-alert-dialog │ │ │ │ │ │ ├── animator.js │ │ │ │ │ │ └── index.js │ │ │ │ │ ├── ons-back-button.js │ │ │ │ │ ├── ons-bottom-toolbar.js │ │ │ │ │ ├── ons-button.js │ │ │ │ │ ├── ons-card.js │ │ │ │ │ ├── ons-carousel-item.js │ │ │ │ │ ├── ons-carousel.js │ │ │ │ │ ├── ons-checkbox.js │ │ │ │ │ ├── ons-col.js │ │ │ │ │ ├── ons-dialog │ │ │ │ │ │ ├── animator.js │ │ │ │ │ │ └── index.js │ │ │ │ │ ├── ons-fab.js │ │ │ │ │ ├── ons-gesture-detector.js │ │ │ │ │ ├── ons-icon.js │ │ │ │ │ ├── ons-if.js │ │ │ │ │ ├── ons-input.js │ │ │ │ │ ├── ons-lazy-repeat.js │ │ │ │ │ ├── ons-list-header.js │ │ │ │ │ ├── ons-list-item │ │ │ │ │ │ ├── animator.js │ │ │ │ │ │ └── index.js │ │ │ │ │ ├── ons-list-title.js │ │ │ │ │ ├── ons-list.js │ │ │ │ │ ├── ons-modal │ │ │ │ │ │ ├── animator.js │ │ │ │ │ │ ├── fade-animator.js │ │ │ │ │ │ ├── index.js │ │ │ │ │ │ └── lift-animator.js │ │ │ │ │ ├── ons-navigator │ │ │ │ │ │ ├── animator.js │ │ │ │ │ │ ├── index.js │ │ │ │ │ │ ├── ios-fade-animator.js │ │ │ │ │ │ ├── ios-lift-animator.js │ │ │ │ │ │ ├── ios-slide-animator.js │ │ │ │ │ │ ├── ios-swipe-animator.js │ │ │ │ │ │ ├── md-fade-animator.js │ │ │ │ │ │ ├── md-lift-animator.js │ │ │ │ │ │ ├── md-slide-animator.js │ │ │ │ │ │ └── none-animator.js │ │ │ │ │ ├── ons-page.js │ │ │ │ │ ├── ons-popover │ │ │ │ │ │ ├── animator.js │ │ │ │ │ │ └── index.js │ │ │ │ │ ├── ons-progress-bar.js │ │ │ │ │ ├── ons-progress-circular.js │ │ │ │ │ ├── ons-pull-hook.js │ │ │ │ │ ├── ons-radio.js │ │ │ │ │ ├── ons-range.js │ │ │ │ │ ├── ons-ripple │ │ │ │ │ │ ├── animator-css.js │ │ │ │ │ │ ├── animator-js.js │ │ │ │ │ │ └── index.js │ │ │ │ │ ├── ons-row.js │ │ │ │ │ ├── ons-search-input.js │ │ │ │ │ ├── ons-segment.js │ │ │ │ │ ├── ons-select.js │ │ │ │ │ ├── ons-speed-dial-item.js │ │ │ │ │ ├── ons-speed-dial.js │ │ │ │ │ ├── ons-splitter-content.js │ │ │ │ │ ├── ons-splitter-mask.js │ │ │ │ │ ├── ons-splitter-side.js │ │ │ │ │ ├── ons-splitter │ │ │ │ │ │ ├── animator.js │ │ │ │ │ │ ├── index.js │ │ │ │ │ │ ├── overlay-animator.js │ │ │ │ │ │ ├── push-animator.js │ │ │ │ │ │ └── reveal-animator.js │ │ │ │ │ ├── ons-switch.js │ │ │ │ │ ├── ons-tab.js │ │ │ │ │ ├── ons-tabbar │ │ │ │ │ │ └── index.js │ │ │ │ │ ├── ons-template.js │ │ │ │ │ ├── ons-toast │ │ │ │ │ │ ├── animator.js │ │ │ │ │ │ ├── ascend-animator.js │ │ │ │ │ │ ├── fade-animator.js │ │ │ │ │ │ ├── fall-animator.js │ │ │ │ │ │ ├── index.js │ │ │ │ │ │ └── lift-animator.js │ │ │ │ │ ├── ons-toolbar-button.js │ │ │ │ │ └── ons-toolbar.js │ │ │ │ ├── index.js │ │ │ │ ├── ons │ │ │ │ │ ├── action-sheet.js │ │ │ │ │ ├── animation-options-parser.js │ │ │ │ │ ├── animit.js │ │ │ │ │ ├── autostyle.js │ │ │ │ │ ├── base-animator.js │ │ │ │ │ ├── content-ready.js │ │ │ │ │ ├── doorlock.js │ │ │ │ │ ├── elements.js │ │ │ │ │ ├── gesture-detector.js │ │ │ │ │ ├── index.js │ │ │ │ │ ├── internal │ │ │ │ │ │ ├── animator-factory.js │ │ │ │ │ │ ├── device-back-button-dispatcher.js │ │ │ │ │ │ ├── index.js │ │ │ │ │ │ ├── internal.js │ │ │ │ │ │ ├── lazy-repeat.js │ │ │ │ │ │ ├── modifier-util.js │ │ │ │ │ │ ├── swipe-reveal.js │ │ │ │ │ │ ├── swiper.js │ │ │ │ │ │ └── toast-queue.js │ │ │ │ │ ├── iphonex-patch.js │ │ │ │ │ ├── microevent.js │ │ │ │ │ ├── modifier.js │ │ │ │ │ ├── notification.js │ │ │ │ │ ├── orientation.js │ │ │ │ │ ├── page-attribute-expression.js │ │ │ │ │ ├── page-loader.js │ │ │ │ │ ├── platform.js │ │ │ │ │ ├── software-keyboard.js │ │ │ │ │ ├── styler.js │ │ │ │ │ └── util.js │ │ │ │ ├── polyfills │ │ │ │ │ ├── MutationObserver@0.7.22 │ │ │ │ │ │ └── MutationObserver.js │ │ │ │ │ ├── index.js │ │ │ │ │ ├── polyfill-switches.js │ │ │ │ │ └── setImmediate@1.0.2+mod │ │ │ │ │ │ └── setImmediate.js │ │ │ │ └── vendor │ │ │ │ │ ├── index.js │ │ │ │ │ └── viewport.js │ │ │ ├── js │ │ │ │ ├── angular-onsenui.js │ │ │ │ ├── angular-onsenui.min.js │ │ │ │ ├── onsenui.d.ts │ │ │ │ ├── onsenui.js │ │ │ │ └── onsenui.min.js │ │ │ └── package.json │ │ ├── jquery │ │ │ └── jquery-3.3.1.min.js │ │ └── moment.min.js │ │ ├── resources │ │ └── icon.png │ │ └── settings.html ├── esp-idf │ ├── README.MD │ ├── ik_test │ │ ├── CMakeLists.txt │ │ ├── components │ │ │ └── pca9685 │ │ │ │ ├── CMakeLists.txt │ │ │ │ ├── component.mk │ │ │ │ ├── pca9685.c │ │ │ │ └── pca9685.h │ │ ├── main │ │ │ ├── CMakeLists.txt │ │ │ ├── bt_spp.c │ │ │ ├── bt_spp.h │ │ │ ├── config.h │ │ │ ├── i2c_app.c │ │ │ ├── i2c_app.h │ │ │ ├── main.c │ │ │ ├── servo.c │ │ │ ├── servo.h │ │ │ ├── spot_ik.c │ │ │ └── spot_ik.h │ │ ├── sdkconfig │ │ └── sdkconfig.old │ └── pca9685_pwm_test │ │ ├── CMakeLists.txt │ │ ├── components │ │ └── pca9685 │ │ │ ├── CMakeLists.txt │ │ │ ├── component.mk │ │ │ ├── pca9685.c │ │ │ └── pca9685.h │ │ ├── main │ │ ├── CMakeLists.txt │ │ └── pca9685Test.c │ │ └── sdkconfig ├── esp32_arduino │ ├── servomotor_test │ │ └── servomotor_test.ino │ ├── test_lcd │ │ └── test_lcd.ino │ └── test_relay │ │ └── test_relay.ino └── python │ ├── README.MD │ ├── body_ik.py │ ├── full_ik.py │ ├── ik.py │ ├── leg_ik.py │ └── test_ik.py └── img └── youtube_iktest.jpg /.gitignore: -------------------------------------------------------------------------------- 1 | # Prerequisites 2 | *.d 3 | 4 | # Object files 5 | *.o 6 | *.ko 7 | *.obj 8 | *.elf 9 | 10 | # Linker output 11 | *.ilk 12 | *.map 13 | *.exp 14 | 15 | # Precompiled Headers 16 | *.gch 17 | *.pch 18 | 19 | # Libraries 20 | *.lib 21 | *.a 22 | *.la 23 | *.lo 24 | 25 | # Shared objects (inc. Windows DLLs) 26 | *.dll 27 | *.so 28 | *.so.* 29 | *.dylib 30 | 31 | # Executables 32 | *.exe 33 | *.out 34 | *.app 35 | *.i*86 36 | *.x86_64 37 | *.hex 38 | build 39 | 40 | # Debug files 41 | *.dSYM/ 42 | *.su 43 | *.idb 44 | *.pdb 45 | 46 | # Kernel Module Compile Results 47 | *.mod* 48 | *.cmd 49 | .tmp_versions/ 50 | modules.order 51 | Module.symvers 52 | Mkfile.old 53 | dkms.conf 54 | 55 | # Macos 56 | .DS_Store 57 | 58 | #Cordova 59 | # Generated by package manager 60 | node_modules/ 61 | 62 | # Generated by Cordova 63 | /plugins/ 64 | /platforms/ 65 | -------------------------------------------------------------------------------- /.gitmodules: -------------------------------------------------------------------------------- 1 | [submodule "code/esp-idf/ik_test/components/esp-dsp"] 2 | path = code/esp-idf/ik_test/components/esp-dsp 3 | url = https://github.com/espressif/esp-dsp.git 4 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | # SpotMicro ESP32 2 | 3 | This repository is a bunch of code which I use to develop the SpotMicro ESP32 which is designed by Michael Kubina. 4 | 5 | His repository with all the parts and a great assembly guide can be found on https://github.com/michaelkubina/SpotMicroESP32 6 | 7 | This SpotMicro is based on https://spotmicroai.readthedocs.io/en/latest/ 8 | 9 | Discussions about the project and the other SpotMicro Projects are on slack: https://spotmicroai-inviter.herokuapp.com/ 10 | 11 | ## Intermediate test 12 | 13 | 14 | [![IK Test](img/youtube_iktest.jpg)](https://youtu.be/9eIZ3Oao1og "IK Test") 15 | 16 | 17 | ## Code in this repo 18 | The code on this repo is mostly based on the esp-idf :https://docs.espressif.com/projects/esp-idf/en/latest/esp32/ and is fully in development 19 | 20 | There is also an early version of (Android / ios) app to control the Spot using BLE, developped using Cordova: https://cordova.apache.org/ 21 | 22 | 23 | 24 | -------------------------------------------------------------------------------- /code/cordova/readme.md: -------------------------------------------------------------------------------- 1 | Cordova 2 | 3 | https://cordova.apache.org/docs/en/latest/guide/overview/index.html 4 | 5 | 6 | 7 | ``` 8 | cordova platform add android 9 | cordova platform add ios 10 | 11 | brew install imagemagick 12 | sudo npm install -g cordova-splash cordova-icon 13 | cordova-icon 14 | cordova-platform 15 | 16 | cordova build ios 17 | cordova build android 18 | ``` 19 | 20 | 21 | debug 22 | 23 | ``` 24 | adb logcat -e CONSOLE 25 | ```` -------------------------------------------------------------------------------- /code/cordova/spotcontroller/.gitignore: -------------------------------------------------------------------------------- 1 | .DS_Store 2 | 3 | # Generated by package manager 4 | node_modules/ 5 | 6 | # Generated by Cordova 7 | /plugins/ 8 | /platforms/ 9 | -------------------------------------------------------------------------------- /code/cordova/spotcontroller/config.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | SpotController 4 | 5 | An communication app for a Spot Micro 6 | 7 | 8 | Maarten Weyn 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | 25 | 26 | 27 | 28 | 29 | 30 | 31 | 32 | 33 | 34 | 35 | -------------------------------------------------------------------------------- /code/cordova/spotcontroller/hooks/README.md: -------------------------------------------------------------------------------- 1 | 21 | # Cordova Hooks 22 | 23 | Cordova Hooks represent special scripts which could be added by application and plugin developers or even by your own build system to customize cordova commands. See Hooks Guide for more details: http://cordova.apache.org/docs/en/edge/guide_appdev_hooks_index.md.html#Hooks%20Guide. 24 | -------------------------------------------------------------------------------- /code/cordova/spotcontroller/icon.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/maartenweyn/SpotMicro_ESP32/d8bbf69276bf898c95bcf79fbbfe0ffbd39bdb13/code/cordova/spotcontroller/icon.png -------------------------------------------------------------------------------- /code/cordova/spotcontroller/package.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "spotcontroller", 3 | "displayName": "SpotControlle", 4 | "version": "1.0.0", 5 | "description": "Controller app for a SpotMicro", 6 | "main": "index.js", 7 | "scripts": { 8 | "test": "echo \"Error: no test specified\" && exit 1" 9 | }, 10 | "keywords": [ 11 | "ecosystem:cordova" 12 | ], 13 | "author": "Maarten Weyn", 14 | "license": "Apache-2.0", 15 | "dependencies": { 16 | "cordova-background-timer": "git+https://github.com/dukhanov/cordova-background-timer.git", 17 | "cordova-browser": "^6.0.0", 18 | "cordova-plugin-ble-central": "^1.2.4", 19 | "cordova-plugin-device": "^2.0.3", 20 | "onsenui": "^2.10.4" 21 | }, 22 | "devDependencies": { 23 | "cordova-android": "^9.0.0", 24 | "cordova-plugin-geolocation": "^4.0.2", 25 | "cordova-plugin-screen-orientation": "^3.0.2", 26 | "cordova-plugin-whitelist": "^1.3.4", 27 | "es6-promise-plugin": "^4.2.2", 28 | "macos": "0.0.1" 29 | }, 30 | "cordova": { 31 | "plugins": { 32 | "cordova-plugin-whitelist": {}, 33 | "cordova-plugin-ble-central": {}, 34 | "cordova-plugin-device": {}, 35 | "cordova-background-timer": {}, 36 | "cordova-plugin-geolocation": {}, 37 | "cordova-plugin-screen-orientation": {} 38 | }, 39 | "platforms": [ 40 | "browser", 41 | "android" 42 | ] 43 | } 44 | } 45 | -------------------------------------------------------------------------------- /code/cordova/spotcontroller/res/logo.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/maartenweyn/SpotMicro_ESP32/d8bbf69276bf898c95bcf79fbbfe0ffbd39bdb13/code/cordova/spotcontroller/res/logo.png -------------------------------------------------------------------------------- /code/cordova/spotcontroller/splash.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/maartenweyn/SpotMicro_ESP32/d8bbf69276bf898c95bcf79fbbfe0ffbd39bdb13/code/cordova/spotcontroller/splash.png -------------------------------------------------------------------------------- /code/cordova/spotcontroller/www/device.html: -------------------------------------------------------------------------------- 1 | 2 | 15 | 34 | 51 | -------------------------------------------------------------------------------- /code/cordova/spotcontroller/www/index.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | Spot Controller 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 |
19 |
20 |
status
21 |
Position Unknown
22 |
23 |
24 | 25 | 59 | 60 |
61 |
62 |
63 |
64 | 65 |
66 |
67 | 68 |
69 | 70 | 71 | 72 | 73 | 74 | 75 | 76 | 77 | 78 | 79 | 80 | 81 | 82 | 83 | 84 | 85 | -------------------------------------------------------------------------------- /code/cordova/spotcontroller/www/js/app.js: -------------------------------------------------------------------------------- 1 | var app = { 2 | user: {}, 3 | debug: false, 4 | currentView: 0, // 0: controls, 1: ble 5 | initialize: function () { 6 | console.log('app initialize'); 7 | document.addEventListener('deviceready', this.onDeviceReady.bind(this), false); 8 | }, 9 | 10 | onDeviceReady: function () { 11 | debug.log('device ready', 'success'); 12 | app.bindEvents(); 13 | bluetooth.initialize(); 14 | controller.initialize(); 15 | 16 | bluetooth.toggleConnectionButtons(); 17 | 18 | $('#headerbar').on('click', '#ble_button', function (e) { 19 | if (app.currentView == 0) { 20 | $('#device').show(); 21 | $('#controls').hide(); 22 | app.currentView = 1; 23 | } else { 24 | $('#device').hide(); 25 | $('#controls').show(); 26 | app.currentView = 0; 27 | } 28 | }); 29 | 30 | $('#device').on('click', '#refreshDeviceList', function (e) { 31 | bluetooth.refreshDeviceList(); 32 | }); 33 | $('#ble-found-devices').on('click', 'ons-list-item', function (e) { 34 | bluetooth.connectDevice($(this).attr("data-device-id"), $(this).attr("data-device-name")); 35 | }); 36 | $('#device').on('click', '#disconnectDevice', function (e) { 37 | bluetooth.disconnectDevice(e); 38 | }); 39 | }, 40 | 41 | bindEvents: function () { 42 | // setTimeout(function () { 43 | // mqttclient.addMessage('app,1'); 44 | // }, 3000); 45 | 46 | document.addEventListener("pause", app.onDevicePause, false); 47 | document.addEventListener("resume", app.onDeviceResume, false); 48 | document.addEventListener("menubutton", app.onMenuKeyDown, false); 49 | }, 50 | 51 | onDevicePause: function () { 52 | debug.log('in pause'); 53 | }, 54 | onDeviceResume: function () { 55 | debug.log('out of pause'); 56 | bluetooth.refreshDeviceList(); 57 | }, 58 | onMenuKeyDown: function () { 59 | debug.log('menubuttonpressed'); 60 | }, 61 | onError: function (error) { 62 | debug.log(JSON.stringify(error), 'error'); 63 | } 64 | }; 65 | 66 | app.initialize(); -------------------------------------------------------------------------------- /code/cordova/spotcontroller/www/js/debug.js: -------------------------------------------------------------------------------- 1 | var debug = { 2 | print: function (message, type) { 3 | message = (typeof (message) == 'object') ? JSON.stringify(message) : message; 4 | var messageColor = "black"; 5 | switch (type) { 6 | case "error": 7 | messageColor = "red"; 8 | break; 9 | case "success": 10 | messageColor = "green"; 11 | break; 12 | } 13 | var messageLine = '
' + 14 | '
' + moment().format() + '
' + 15 | '
' + message + '
' + 16 | '
'; 17 | $('#logs').prepend(messageLine); 18 | }, 19 | log: function (message, type) { 20 | console.log(message); 21 | this.print(message, type); 22 | }, 23 | clear: function () { 24 | $('#debugList').empty(); 25 | } 26 | } -------------------------------------------------------------------------------- /code/cordova/spotcontroller/www/js/storage.js: -------------------------------------------------------------------------------- 1 | var storage = { 2 | setItem: function (referenceName, object) { 3 | try { 4 | var objectAsString = JSON.stringify(object); 5 | window.localStorage.setItem(referenceName, objectAsString); 6 | debug.log('item stored: ' + referenceName + ': ' + objectAsString, 'success'); 7 | return true; 8 | } catch (error) { 9 | console.log(error); 10 | } 11 | }, 12 | getItem: function (referenceName, defaultValue) { 13 | try { 14 | var objectAsString = window.localStorage.getItem(referenceName); 15 | var object = JSON.parse(objectAsString); 16 | return (object) ? object : defaultValue; 17 | } catch (error) { 18 | console.log(error); 19 | } 20 | }, 21 | removeItem: function (referenceName) { 22 | try { 23 | window.localStorage.removeItem(referenceName); 24 | debug.log('stored item removed: ' + referenceName, 'success'); 25 | return true; 26 | } catch (error) { 27 | console.log(error); 28 | } 29 | } 30 | } -------------------------------------------------------------------------------- /code/cordova/spotcontroller/www/lib/OnsenUI/LICENSE: -------------------------------------------------------------------------------- 1 | Copyright 2013-2017 ASIAL CORPORATION 2 | 3 | Licensed under the Apache License, Version 2.0 (the "License"); 4 | you may not use this file except in compliance with the License. 5 | You may obtain a copy of the License at 6 | 7 | http://www.apache.org/licenses/LICENSE-2.0 8 | 9 | Unless required by applicable law or agreed to in writing, software 10 | distributed under the License is distributed on an "AS IS" BASIS, 11 | WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 12 | See the License for the specific language governing permissions and 13 | limitations under the License. 14 | -------------------------------------------------------------------------------- /code/cordova/spotcontroller/www/lib/OnsenUI/bower.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "onsenui", 3 | "homepage": "https://onsen.io", 4 | "authors": [ 5 | "Kruy Vanna ", 6 | "Mitsunori KUBOTA " 7 | ], 8 | "description": "Web Component inspired HTML5 UI framework for building modern mobile application", 9 | "main": [ 10 | "js/onsenui.js", 11 | "css/onsenui.css", 12 | "css/onsen-css-components.css" 13 | ], 14 | "keywords": [ 15 | "onsenui", 16 | "angular", 17 | "html5", 18 | "cordova", 19 | "phonegap", 20 | "web", 21 | "component", 22 | "monaca" 23 | ], 24 | "dependencies": {}, 25 | "license": "Apache License, Version 2.0" 26 | } 27 | -------------------------------------------------------------------------------- /code/cordova/spotcontroller/www/lib/OnsenUI/css-components-src/README.md: -------------------------------------------------------------------------------- 1 | # Onsen CSS Components 2 | 3 | Onsen CSS Components is CSS components for Cordova Apps. 4 | 5 | ![Screenshot](./misc/screenshot-01.png) 6 | ![Screenshot](./misc/screenshot-02.png) 7 | 8 | ## How to Build 9 | 10 | This CSS components is built by PostCSS + cssnext. You can build with following commands. 11 | 12 | ``` 13 | $ yarn install --pure-lockfile 14 | $ yarn run build 15 | ``` 16 | 17 | ## How to Customize CSS Components 18 | 19 | Execute the following command. 20 | 21 | ``` 22 | $ yarn install --pure-lockfile 23 | $ yarn run serve 24 | ``` 25 | 26 | When you open `http://localhost:4321/` in the browser, a preview of the CSS components is displayed. 27 | 28 | When you edit the cssnext files under the `src` directory, the cssnext files is automatically built into the CSS and the browser is reloaded. The built CSS file is located in `./build/onsen-css-components.css`. 29 | 30 | To customize theme colors, you can edit `./src/theme.css`. This file contains CSS variables for the theme colors. 31 | 32 | If you want to customize components' details, you can edit `./src/components/*.css`. These files contain actual rules for all CSS components. But these files may be changed significantly by minor version release. 33 | 34 | -------------------------------------------------------------------------------- /code/cordova/spotcontroller/www/lib/OnsenUI/css-components-src/misc/screenshot-01.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/maartenweyn/SpotMicro_ESP32/d8bbf69276bf898c95bcf79fbbfe0ffbd39bdb13/code/cordova/spotcontroller/www/lib/OnsenUI/css-components-src/misc/screenshot-01.png -------------------------------------------------------------------------------- /code/cordova/spotcontroller/www/lib/OnsenUI/css-components-src/misc/screenshot-02.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/maartenweyn/SpotMicro_ESP32/d8bbf69276bf898c95bcf79fbbfe0ffbd39bdb13/code/cordova/spotcontroller/www/lib/OnsenUI/css-components-src/misc/screenshot-02.png -------------------------------------------------------------------------------- /code/cordova/spotcontroller/www/lib/OnsenUI/css-components-src/package.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "", 3 | "version": "0.0.0", 4 | "private": true, 5 | "scripts": { 6 | "build": "gulp build", 7 | "serve": "gulp serve" 8 | }, 9 | "dependencies": { 10 | "ancss": "^0.1.5", 11 | "browser-sync": "^2.18.6", 12 | "eco": "^1.1.0-rc-3", 13 | "event-stream": "^3.1.2", 14 | "gulp": "^3.9.1", 15 | "gulp-cssmin": "^0.1.7", 16 | "gulp-less": "^1.2.3", 17 | "gulp-load-plugins": "^0.5.0", 18 | "gulp-order": "^1.0.6", 19 | "gulp-plumber": "^0.6.1", 20 | "gulp-postcss": "^7.0.0", 21 | "gulp-rename": "^1.2.2", 22 | "gulp-shell": "^0.2.4", 23 | "gulp-stylelint": "^3.9.0", 24 | "gulp-stylus": "^1.0.0", 25 | "gulp-util": "^2.2.14", 26 | "immutable-css": "^1.1.2", 27 | "postcss-base64": "^0.6.1", 28 | "postcss-cssnext": "^3.0.2", 29 | "postcss-import": "^9.1.0", 30 | "postcss-reporter": "^3.0.0", 31 | "rimraf": "^2.6.1", 32 | "run-sequence": "^0.3.6" 33 | }, 34 | "engines": { 35 | "node": ">=0.10.0" 36 | }, 37 | "devDependencies": { 38 | "babel-core": "^6.25.0", 39 | "babel-preset-env": "^1.6.1", 40 | "babel-preset-stage-3": "^6.24.1", 41 | "connect-history-api-fallback": "^1.3.0", 42 | "glob": "^7.1.2", 43 | "gulp-file": "^0.3.0", 44 | "js-yaml": "^3.13.1", 45 | "rollup": "^0.51.5", 46 | "rollup-plugin-babel": "^3.0.2", 47 | "rollup-plugin-commonjs": "^8.2.6" 48 | } 49 | } 50 | -------------------------------------------------------------------------------- /code/cordova/spotcontroller/www/lib/OnsenUI/css-components-src/previewer-src/app.js: -------------------------------------------------------------------------------- 1 | import {createAppPageComponent} from './components/app-page'; 2 | 3 | function init() { 4 | const components = loadComponents(); 5 | const categories = loadCategories(components); 6 | const themes = loadThemes(); 7 | const patterns = loadPatterns(); 8 | 9 | window.components = components; 10 | window.categories = categories; 11 | window.themes = themes; 12 | window.patterns = patterns; 13 | 14 | const app = new Vue(createAppPageComponent({ 15 | components, 16 | categories 17 | })); 18 | }; 19 | 20 | function loadCategories(components) { 21 | const set = new Set(); 22 | components.forEach(component => { 23 | set.add(component.category); 24 | }); 25 | 26 | return [...set.values()].map(value => { 27 | return { 28 | name: value, 29 | hash: value.toLowerCase().replace(/ /g, '_') 30 | }; 31 | }); 32 | } 33 | 34 | function loadComponents() { 35 | return JSON.parse(document.querySelector('#data').getAttribute('data-components')).map(component => { 36 | component = component.annotation; 37 | component.id = component.name.toLowerCase().replace(/ /g, '_'); 38 | return component; 39 | }); 40 | } 41 | 42 | function loadThemes() { 43 | const themes = JSON.parse(document.querySelector('#data').getAttribute('data-themes')).map(theme => { 44 | return theme; 45 | }).filter(theme => { 46 | return theme !== 'onsen-css-components'; 47 | }); 48 | 49 | // デフォルトのテーマを先頭に追加 50 | themes.unshift('onsen-css-components'); 51 | 52 | return themes; 53 | } 54 | 55 | function loadPatterns() { 56 | return JSON.parse(document.querySelector('#data').getAttribute('data-patterns')).map(pattern => { 57 | pattern.id = pattern.name.toLowerCase().replace(/ +/g, '_'); 58 | 59 | return pattern; 60 | }); 61 | } 62 | 63 | window.onload = init; 64 | 65 | -------------------------------------------------------------------------------- /code/cordova/spotcontroller/www/lib/OnsenUI/css-components-src/previewer-src/components/category-page.js: -------------------------------------------------------------------------------- 1 | import {PreviewComponent} from './preview-component'; 2 | import {ThemeSelect} from './theme-select'; 3 | 4 | export const CategoryPage = { 5 | props: ['components', 'categories', 'id', 'query'], 6 | template: ` 7 |
8 | 9 |

{{category.name}} Components

10 | 11 | 12 | 13 |
14 | 15 |
16 |
17 | `, 18 | components: { 19 | 'css-component': PreviewComponent, 20 | 'theme-select': ThemeSelect 21 | }, 22 | computed: { 23 | category() { 24 | return this.categories.filter(category => category.hash === this.id)[0]; 25 | } 26 | }, 27 | methods: { 28 | filterComponents() { 29 | const category = this.category; 30 | const components = this.components.filter(component => { 31 | return component.category === category.name; 32 | }); 33 | return components; 34 | }, 35 | } 36 | }; 37 | -------------------------------------------------------------------------------- /code/cordova/spotcontroller/www/lib/OnsenUI/css-components-src/previewer-src/components/component-page.js: -------------------------------------------------------------------------------- 1 | import {ComponentExample} from './preview-component.js'; 2 | import {ThemeSelect} from './theme-select'; 3 | 4 | export const ComponentPage = { 5 | props: ['components', 'id', 'query'], 6 | components: { 7 | 'component-example': ComponentExample, 8 | 'theme-select': ThemeSelect 9 | }, 10 | computed: { 11 | component() { 12 | return this.components.filter(component => component.id === this.id)[0]; 13 | } 14 | }, 15 | template: ` 16 |
17 |
18 |

{{component.name}}

19 | 20 | 21 | 22 |

Example

23 | 24 | 25 | 26 |

HTML

27 | 28 |
{{component.markup}}
29 |
30 |
31 | ` 32 | }; 33 | -------------------------------------------------------------------------------- /code/cordova/spotcontroller/www/lib/OnsenUI/css-components-src/previewer-src/components/components-page.js: -------------------------------------------------------------------------------- 1 | import {PreviewComponent} from './preview-component'; 2 | import {PlatformSelect} from './platform-select'; 3 | import {ThemeSelect} from './theme-select'; 4 | 5 | export const ComponentsPage = { 6 | props: ['components', 'categories', 'query'], 7 | template: ` 8 |
9 | 10 | 11 |

Components

12 | 13 | 14 | 15 |
16 | 17 |
18 |
19 | `, 20 | data: () => ({ 21 | themes: window.themes 22 | }), 23 | components: { 24 | 'css-component': PreviewComponent, 25 | 'platform-select': PlatformSelect, 26 | 'theme-select': ThemeSelect 27 | }, 28 | computed: { 29 | filterComponents() { 30 | const components = this.components; 31 | if (this.query.platform === 'android') { 32 | return components.filter(function(component) { 33 | return component.name.match(/Material/); 34 | }); 35 | } else if (this.query.platform === 'ios') { 36 | return components.filter(function(component) { 37 | return !component.name.match(/Material/); 38 | }); 39 | } 40 | return components; 41 | } 42 | }, 43 | methods: { 44 | download(event) { 45 | const theme = this.$refs.themeSelect.value; 46 | if (!theme) { 47 | window.open('/onsen-css-components.css'); 48 | } else { 49 | window.open(`${theme}.css`); 50 | } 51 | event.preventDefault(); 52 | }, 53 | changeTheme(event) { 54 | const theme = event.target.value; 55 | const suffix = this.query.platform ? `platform=${this.query.platform}` : ''; 56 | 57 | if (theme === 'onsen-css-components') { 58 | if (suffix === '') { 59 | page.show('/'); 60 | } else { 61 | page.show(`?${suffix}`); 62 | } 63 | } else { 64 | page.show(`?theme=${theme}${suffix === '' ? '' : `&${suffix}`}`); 65 | } 66 | } 67 | } 68 | }; 69 | -------------------------------------------------------------------------------- /code/cordova/spotcontroller/www/lib/OnsenUI/css-components-src/previewer-src/components/notfound-page.js: -------------------------------------------------------------------------------- 1 | 2 | export const NotFoundPage = { 3 | props: ['components', 'categories', 'id', 'query'], 4 | template: ` 5 |
6 |

Not Found

7 |
8 | `, 9 | }; 10 | -------------------------------------------------------------------------------- /code/cordova/spotcontroller/www/lib/OnsenUI/css-components-src/previewer-src/components/pattern-page.js: -------------------------------------------------------------------------------- 1 | import {ThemeSelect} from './theme-select'; 2 | 3 | export const PatternPage = { 4 | props: ['id', 'query'], 5 | data() { 6 | const pattern = window.patterns.filter(pattern => { 7 | return pattern.id == this.id; 8 | })[0]; 9 | 10 | return {pattern}; 11 | }, 12 | components: { 13 | 'theme-select': ThemeSelect 14 | }, 15 | template: ` 16 |
17 |
18 |

{{pattern.name}} Pattern

19 | 20 | 21 | 22 |

Example

23 |
24 |
25 |
26 | 27 |

HTML

28 | 29 |
{{pattern.markup}}
30 |
31 |
32 | `, 33 | }; 34 | -------------------------------------------------------------------------------- /code/cordova/spotcontroller/www/lib/OnsenUI/css-components-src/previewer-src/components/patterns-page.js: -------------------------------------------------------------------------------- 1 | import {PlatformSelect} from './platform-select'; 2 | import {ThemeSelect} from './theme-select'; 3 | 4 | export const PatternsPage = { 5 | props: ['query'], 6 | template: ` 7 |
8 | 9 | 10 |

Patterns

11 | 12 | 13 | 14 |
15 |
16 | {{pattern.name}} 17 |
18 |
19 |
20 |
21 | `, 22 | data: () => ({ 23 | patterns: [] 24 | }), 25 | components: { 26 | 'platform-select': PlatformSelect, 27 | 'theme-select': ThemeSelect 28 | }, 29 | created() { 30 | // Load patterns data. 31 | this.patterns = window.patterns; 32 | }, 33 | computed: { 34 | filterPatterns() { 35 | const patterns = this.patterns; 36 | 37 | if (this.query.platform === 'android') { 38 | return patterns.filter(function(pattern) { 39 | return pattern.name.match(/Material/); 40 | }); 41 | } else if (this.query.platform === 'ios') { 42 | return patterns.filter(function(pattern) { 43 | return !pattern.name.match(/Material/); 44 | }); 45 | } 46 | return patterns; 47 | } 48 | }, 49 | }; 50 | -------------------------------------------------------------------------------- /code/cordova/spotcontroller/www/lib/OnsenUI/css-components-src/previewer-src/components/platform-select.js: -------------------------------------------------------------------------------- 1 | 2 | export const PlatformSelect = { 3 | props: ['platform'], 4 | template: ` 5 |
6 | All 9 | 10 | iOS 13 | 14 | Android 17 | 18 |
19 | `, 20 | methods: { 21 | getLocation() { 22 | return location.pathname; 23 | } 24 | } 25 | }; 26 | -------------------------------------------------------------------------------- /code/cordova/spotcontroller/www/lib/OnsenUI/css-components-src/previewer-src/components/preview-component.js: -------------------------------------------------------------------------------- 1 | 2 | export const ComponentExample = { 3 | props: ['component'], 4 | template: ` 5 |
6 | 7 |
8 |
9 | `, 10 | methods: { 11 | isAndroid() { 12 | return this.component.name.match(/Material/); 13 | } 14 | } 15 | }; 16 | 17 | export const PreviewComponent = { 18 | props: ['component'], 19 | template: ` 20 |
21 | {{component.name}} 22 | 23 | 24 |
25 | `, 26 | components: { 27 | 'component-example': ComponentExample 28 | } 29 | }; 30 | 31 | -------------------------------------------------------------------------------- /code/cordova/spotcontroller/www/lib/OnsenUI/css-components-src/previewer-src/components/theme-select.js: -------------------------------------------------------------------------------- 1 | 2 | export const ThemeSelect = { 3 | props: ['query'], 4 | template: ` 5 |
6 | 9 | 10 |
11 | `, 12 | data() { 13 | return { 14 | themes: window.themes 15 | }; 16 | }, 17 | mounted() { 18 | if (this.query.theme) { 19 | this.$refs.themeSelect.value = this.query.theme; 20 | } 21 | }, 22 | methods: { 23 | download(event) { 24 | const theme = this.$refs.themeSelect.value; 25 | if (!theme) { 26 | window.open('/onsen-css-components.css'); 27 | } else { 28 | window.open(`${theme}.css`); 29 | } 30 | event.preventDefault(); 31 | }, 32 | 33 | changeTheme(event) { 34 | const theme = event.target.value; 35 | const suffix = this.query.platform ? `platform=${this.query.platform}` : ''; 36 | 37 | if (theme === 'onsen-css-components') { 38 | if (suffix === '') { 39 | page.show(location.pathname); 40 | } else { 41 | page.show(`${location.pathname}?${suffix}`); 42 | } 43 | } else { 44 | page.show(`${location.pathname}?theme=${theme}${suffix === '' ? '' : `&${suffix}`}`); 45 | } 46 | } 47 | } 48 | }; 49 | -------------------------------------------------------------------------------- /code/cordova/spotcontroller/www/lib/OnsenUI/css-components-src/previewer-src/index.html.eco: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | Onsen CSS Components 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 |
21 | 22 | 23 | 24 | 25 | 26 |
30 | 31 | 32 | 33 | -------------------------------------------------------------------------------- /code/cordova/spotcontroller/www/lib/OnsenUI/css-components-src/previewer-src/select-icon.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | select-icon 5 | Created with Sketch. 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | -------------------------------------------------------------------------------- /code/cordova/spotcontroller/www/lib/OnsenUI/css-components-src/previewer-src/util.js: -------------------------------------------------------------------------------- 1 | 2 | export function getQueryParams() { 3 | return parseQueryString(window.location.search); 4 | } 5 | 6 | export function parseQueryString(queryString) { 7 | if (queryString.length <= 1) { 8 | return {}; 9 | } 10 | 11 | const params = []; 12 | const pairs = queryString.slice(1).split('&'); 13 | let pair; 14 | for (var i = 0; i < pairs.length; i++) { 15 | pair = pairs[i].split('='); 16 | params[pair[0]] = pair[1]; 17 | } 18 | 19 | return params; 20 | } 21 | 22 | /** 23 | * @param {string} prefer 24 | * @param {string} base 25 | */ 26 | export function mergeQueryString(prefer, base) { 27 | const params = Object.assign({}, parseQueryString(base), parseQueryString(prefer)); 28 | const result = '?' + Object.keys(params).map(key => `${key}=${params[key]}`).join('&'); 29 | 30 | return result === '?' ? '' : result; 31 | } 32 | -------------------------------------------------------------------------------- /code/cordova/spotcontroller/www/lib/OnsenUI/css-components-src/src/components/button-bar.css: -------------------------------------------------------------------------------- 1 | :root { 2 | --button-bar-active-color: var(--button-bar-active-text-color); 3 | --button-bar-border-top: 1px solid var(--button-bar-color); 4 | --button-bar-border-bottom: 1px solid var(--button-bar-color); 5 | --button-bar-border: 0 solid var(--button-bar-color); 6 | --button-bar-border-radius: 4px; 7 | 8 | --button-bar: { 9 | @apply(--reset-font); 10 | display: inline-flex; 11 | align-items: stretch; 12 | align-content: stretch; 13 | flex-wrap: nowrap; 14 | margin: 0; 15 | padding: 0; 16 | border: none; 17 | } 18 | 19 | --button-bar__item: { 20 | @apply(--reset-font); 21 | border-radius: 0; 22 | width: 100%; 23 | padding: 0; 24 | margin: 0; 25 | } 26 | } 27 | 28 | /*~ 29 | name: Button Bar 30 | category: Segment 31 | markup: | 32 |
33 |
34 | 35 |
36 |
37 | 38 |
39 |
40 | 41 |
42 |
43 | */ 44 | 45 | .button-bar { 46 | @apply(--button-bar); 47 | } 48 | 49 | .button-bar__item { 50 | @apply(--button-bar__item); 51 | @apply(--hide-input-parent); 52 | overflow: hidden; 53 | box-sizing: border-box; 54 | } 55 | 56 | .button-bar__button { 57 | @apply(--reset-font); 58 | border-radius: 0; 59 | background-color: transparent; 60 | color: var(--button-bar-color); 61 | border: 1px solid var(--button-bar-color); 62 | border-top-width: 1px; 63 | border-bottom-width: 1px; 64 | border-right-width: 1px; 65 | border-left-width: 0; 66 | font-weight: var(--font-weight); 67 | padding: 0; 68 | font-size: 13px; 69 | height: 27px; 70 | line-height: 27px; 71 | width: 100%; 72 | transition: background-color 0.2s linear, color 0.2s linear; 73 | box-sizing: border-box; 74 | } 75 | 76 | .button-bar__button:disabled { 77 | @apply(--disabled); 78 | } 79 | 80 | .button-bar__button:hover { 81 | transition: none; 82 | } 83 | 84 | .button-bar__button:focus { 85 | outline: 0; 86 | } 87 | 88 | :checked + .button-bar__button { 89 | background-color: var(--button-bar-color); 90 | color: var(--button-bar-active-color); 91 | transition: none; 92 | } 93 | 94 | .button-bar__button:active, 95 | :active + .button-bar__button { 96 | background-color: var(--button-bar-active-background-color); 97 | border: var(--button-bar-border); 98 | border-top: var(--button-bar-border-top); 99 | border-bottom: var(--button-bar-border-bottom); 100 | border-right: 1px solid var(--button-bar-color); 101 | font-size: 13px; 102 | width: 100%; 103 | transition: none; 104 | } 105 | 106 | .button-bar__item:first-child > .button-bar__button { 107 | border-left-width: 1px; 108 | border-radius: var(--button-bar-border-radius) 0 0 var(--button-bar-border-radius); 109 | } 110 | 111 | .button-bar__item:last-child > .button-bar__button { 112 | border-right-width: 1px; 113 | border-radius: 0 var(--button-bar-border-radius) var(--button-bar-border-radius) 0; 114 | } 115 | 116 | -------------------------------------------------------------------------------- /code/cordova/spotcontroller/www/lib/OnsenUI/css-components-src/src/components/card.css: -------------------------------------------------------------------------------- 1 | 2 | :root { 3 | --card-text-line-height: 1.4; 4 | --card-text-font-size: 14px; 5 | --material-card-text-line-height: 1.4; 6 | --material-card-text-font-size: 14px; 7 | } 8 | 9 | /*~ 10 | name: Card 11 | category: Card 12 | markup: | 13 |
14 |
15 |
Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua.
16 |
17 |
18 | */ 19 | 20 | .card { 21 | @apply(--reset-font); 22 | box-shadow: 0 1px 2px rgba(0, 0, 0, 0.12); 23 | border-radius: 8px; 24 | background-color: var(--card-background-color); 25 | box-sizing: border-box; 26 | display: block; 27 | margin: 8px; 28 | padding: 16px; 29 | text-align: left; 30 | word-wrap: break-word; 31 | } 32 | 33 | .card__content { 34 | margin: 0; 35 | font-size: var(--card-text-font-size); 36 | line-height: var(--card-text-line-height); 37 | color: var(--card-text-color); 38 | } 39 | 40 | /*~ 41 | name: Card with Title 42 | category: Card 43 | markup: | 44 |
45 |
46 |

Card Title

47 |
Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua.
48 |
49 |
50 | */ 51 | 52 | .card__title { 53 | @apply(--reset-font); 54 | font-weight: 400; 55 | font-size: 20px; 56 | margin: 4px 0 8px 0; 57 | padding: 0; 58 | display: block; 59 | box-sizing: border-box; 60 | } 61 | 62 | /*~ 63 | name: Material Card 64 | category: Card 65 | markup: | 66 |
67 |
68 |
Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua.
69 |
70 |
71 | */ 72 | 73 | .card--material { 74 | background-color: var(--material-card-background-color); 75 | border-radius: 2px; 76 | @apply(--material-shadow-1); 77 | @apply(--material-font); 78 | } 79 | 80 | .card--material__content { 81 | font-size: var(--material-card-text-font-size); 82 | line-height: var(--material-card-text-line-height); 83 | color: var(--material-card-text-color); 84 | } 85 | 86 | /*~ 87 | name: Material Card with Title 88 | category: Card 89 | markup: | 90 |
91 |
92 |
Card Title
93 |
Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua.
94 |
95 |
96 | */ 97 | 98 | .card--material__title { 99 | @apply(--material-font); 100 | font-size: 24px; 101 | margin: 8px 0 12px 0; 102 | } 103 | -------------------------------------------------------------------------------- /code/cordova/spotcontroller/www/lib/OnsenUI/css-components-src/src/components/combination.css: -------------------------------------------------------------------------------- 1 | /* ------- */ 2 | /* Default */ 3 | /* ------- */ 4 | 5 | /* All toolbar */ 6 | .toolbar { 7 | top: 0; 8 | box-sizing: border-box; 9 | padding-top: 0; 10 | } 11 | .bottom-bar { 12 | bottom: 0; 13 | box-sizing: border-box; 14 | padding-bottom: 0; 15 | } 16 | 17 | /* All page__background with a ordinal toolbar */ 18 | .toolbar+.page__background { 19 | top: var(--toolbar-height); 20 | } 21 | 22 | /* All page__content without toolbars */ 23 | .page__content { 24 | top: 0; 25 | padding-top: 0; 26 | 27 | bottom: 0; 28 | } 29 | /* All page__content with a toolbar */ 30 | .toolbar+.page__background+.page__content { 31 | top: var(--toolbar-height); 32 | padding-top: 0; 33 | } 34 | /* All page__content with a bottom-bar */ 35 | .page-with-bottom-toolbar > .page__content { 36 | bottom: 44px; 37 | } 38 | 39 | /* -------- */ 40 | /* Material */ 41 | /* -------- */ 42 | 43 | /* All page__background with a material toolbar */ 44 | .toolbar.toolbar--material+.page__background { 45 | top: var(--toolbar-material-height); 46 | } 47 | /* All page__content with a material toolbar */ 48 | .toolbar.toolbar--material+.page__background+.page__content { 49 | top: var(--toolbar-material-height); 50 | padding-top: 0; 51 | } 52 | 53 | /* -------- */ 54 | /* Others */ 55 | /* -------- */ 56 | 57 | /* All page__background with a transparent toolbar */ 58 | .toolbar.toolbar--transparent+.page__background { 59 | top: 0; 60 | } 61 | /* All page__content with a transparent cover-content toolbar and its direct descendant page_content */ 62 | .toolbar.toolbar--transparent.toolbar--cover-content+.page__background+.page__content, 63 | .toolbar.toolbar--transparent.toolbar--cover-content+.page__background+.page__content .page_content { 64 | top: 0; 65 | padding-top: var(--toolbar-height); 66 | } 67 | /* All page__content with a material transparent cover-content toolbar and its direct descendant page_content */ 68 | .toolbar.toolbar--material.toolbar--transparent.toolbar--cover-content+.page__background+.page__content, 69 | .toolbar.toolbar--material.toolbar--transparent.toolbar--cover-content+.page__background+.page__content .page_content { 70 | top: 0; 71 | padding-top: var(--toolbar-material-height); 72 | } 73 | 74 | /* -------- */ 75 | /* Tabbar */ 76 | /* -------- */ 77 | 78 | /* All top tabbar */ 79 | .tabbar--top { 80 | padding-top: 0; 81 | } 82 | /* All bottom tabbar */ 83 | .tabbar:not(.tabbar--top) { 84 | padding-bottom: 0; 85 | } 86 | 87 | -------------------------------------------------------------------------------- /code/cordova/spotcontroller/www/lib/OnsenUI/css-components-src/src/components/dialog.css: -------------------------------------------------------------------------------- 1 | 2 | /*~ 3 | name: Dialog 4 | category: Dialog 5 | elements: ons-dialog 6 | markup: | 7 |
8 |
9 |
10 |

Content

11 |
12 |
13 | */ 14 | 15 | .dialog { 16 | @apply(--reset-box-model); 17 | @apply(--reset-base); 18 | @apply(--reset-cursor); 19 | @apply(--reset-font); 20 | position: absolute; 21 | top: 50%; 22 | left: 50%; 23 | transform: translate(-50%, -50%); 24 | margin: auto auto; 25 | overflow: hidden; 26 | min-width: 270px; 27 | min-height: 100px; 28 | text-align: left; 29 | } 30 | 31 | .dialog-container { 32 | height: inherit; 33 | min-height: inherit; 34 | overflow: hidden; 35 | border-radius: 4px; 36 | background-color: var(--dialog-background-color); 37 | -webkit-mask-image: url('data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAIAAACQd1PeAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAA5JREFUeNpiYGBgAAgwAAAEAAGbA+oJAAAAAElFTkSuQmCC'); 38 | color: var(--dialog-text-color); 39 | } 40 | 41 | .dialog-mask { 42 | @apply(--reset-base); 43 | @apply(--reset-cursor); 44 | position: absolute; 45 | top: 0; 46 | right: 0; 47 | left: 0; 48 | bottom: 0; 49 | background-color: rgba(0, 0, 0, 0.2); 50 | } 51 | 52 | /*~ 53 | name: Material Dialog 54 | category: Dialog 55 | elements: ons-dialog 56 | markup: | 57 |
58 |
59 |
60 |

The quick brown fox jumps over the lazy dog.

61 |
62 |
63 | */ 64 | 65 | .dialog--material { 66 | @apply(--material-font); 67 | text-align: left; 68 | @apply(--material-shadow-5); 69 | } 70 | 71 | .dialog-container--material { 72 | border-radius: 2px; 73 | background-color: var(--material-dialog-background-color); 74 | color: var(--material-dialog-text-color); 75 | } 76 | 77 | .dialog-mask--material { 78 | background-color: rgba(0, 0, 0, 0.3); 79 | } 80 | -------------------------------------------------------------------------------- /code/cordova/spotcontroller/www/lib/OnsenUI/css-components-src/src/components/global.css: -------------------------------------------------------------------------------- 1 | 2 | :root { 3 | --input-bg-color: var(--background-color); 4 | --input-border-color: var(--border-color); 5 | --input-text-color: var(--text-color); 6 | --input-placeholder-color: var(--sub-text-color); 7 | --input-invalid-border-color: var(--border-color); 8 | --input-invalid-text-color: var(--text-color); 9 | --input-border: 1px solid var(--input-border-color); 10 | --alpha-lighten: 70%; 11 | --font-size: 17px; 12 | --font-weight: 400; 13 | --material-font-size: 17px; 14 | --material-font-weight: 400; 15 | --font-size--mini: calc(var(--font-size) - 3px); 16 | --font-weight--large: 500; 17 | --background-color--input: transparent; 18 | } 19 | 20 | html { 21 | height: 100%; 22 | width: 100%; 23 | } 24 | 25 | body { 26 | position: absolute; 27 | overflow: hidden; 28 | top: 0; 29 | right: 0; 30 | left: 0; 31 | bottom: 0; 32 | padding: 0; 33 | margin: 0; 34 | -webkit-text-size-adjust: 100%; 35 | touch-action: manipulation; 36 | } 37 | 38 | html, body, div, span, applet, object, iframe, 39 | h1, h2, h3, h4, h5, h6, p, blockquote, pre, 40 | a, abbr, acronym, address, big, cite, code, 41 | del, dfn, em, img, ins, kbd, q, s, samp, 42 | small, strike, strong, sub, sup, tt, var, 43 | b, u, i, center, dl, dt, dd, ol, ul, li, 44 | fieldset, form, label, legend, 45 | table, caption, tbody, tfoot, thead, tr, th, td, 46 | article, aside, canvas, details, embed, 47 | figure, figcaption, footer, header, hgroup, 48 | menu, nav, output, ruby, section, summary, 49 | time, mark, audio, video { 50 | user-select: none; 51 | -webkit-tap-highlight-color: var(--tap-highlight-color); 52 | -webkit-touch-callout: none; 53 | } 54 | 55 | input, textarea, select { 56 | user-select: auto; 57 | -moz-user-select: text; 58 | -webkit-touch-callout: none; 59 | } 60 | 61 | a, button, input, textarea, select { 62 | touch-action: manipulation; 63 | } 64 | 65 | input:active, input:focus, textarea:active, textarea:focus, select:active, select:focus { 66 | outline: none; 67 | } 68 | 69 | h1 { 70 | font-size: 36px; 71 | } 72 | 73 | h2 { 74 | font-size: 30px; 75 | } 76 | 77 | h3 { 78 | font-size: 24px; 79 | } 80 | 81 | h4, h5, h6 { 82 | font-size: 18px; 83 | } 84 | -------------------------------------------------------------------------------- /code/cordova/spotcontroller/www/lib/OnsenUI/css-components-src/src/components/index.css: -------------------------------------------------------------------------------- 1 | 2 | @import './global.css'; 3 | @import './util.css'; 4 | @import './page.css'; 5 | @import './switch.css'; 6 | @import './range.css'; 7 | @import './notification.css'; 8 | @import './toolbar.css'; 9 | @import './button.css'; 10 | @import './button-bar.css'; 11 | @import './segment.css'; 12 | @import './tabbar.css'; 13 | @import './toolbar-button.css'; 14 | @import './checkbox.css'; 15 | @import './radio-button.css'; 16 | @import './list.css'; 17 | @import './search-input.css'; 18 | @import './text-input.css'; 19 | @import './textarea.css'; 20 | @import './dialog.css'; 21 | @import './alert-dialog.css'; 22 | @import './popover.css'; 23 | @import './progress-bar.css'; 24 | @import './progress-circular.css'; 25 | @import './fab.css'; 26 | @import './modal.css'; 27 | @import './select.css'; 28 | @import './action-sheet.css'; 29 | @import './card.css'; 30 | @import './toast.css'; 31 | @import './combination.css'; /* non BEM */ 32 | 33 | -------------------------------------------------------------------------------- /code/cordova/spotcontroller/www/lib/OnsenUI/css-components-src/src/components/modal.css: -------------------------------------------------------------------------------- 1 | /*~ 2 | name: Modal 3 | category: Modal 4 | elements: ons-modal 5 | markup: | 6 | 11 | */ 12 | 13 | .modal { 14 | @apply(--reset-container); 15 | @apply(--reset-base); 16 | @apply(--reset-box-model); 17 | @apply(--reset-font); 18 | overflow: hidden; 19 | background-color: var(--modal-background-color); 20 | position: absolute; 21 | left: 0; 22 | right: 0; 23 | top: 0; 24 | bottom: 0; 25 | width: 100%; 26 | height: 100%; 27 | display: table; 28 | z-index: 2147483647; 29 | } 30 | 31 | .modal__content { 32 | @apply(--reset-container); 33 | @apply(--reset-base); 34 | @apply(--reset-box-model); 35 | @apply(--reset-font); 36 | display: table-cell; 37 | vertical-align: middle; 38 | text-align: center; 39 | color: var(--modal-text-color); 40 | white-space: normal; 41 | } 42 | -------------------------------------------------------------------------------- /code/cordova/spotcontroller/www/lib/OnsenUI/css-components-src/src/components/notification.css: -------------------------------------------------------------------------------- 1 | :root { 2 | --notification-border-radius: 19px; 3 | --notification-width: auto; 4 | --notification-height: 19px; 5 | --notification-min-width: 19px; 6 | --notification-padding: 0 4px; 7 | --notification-font-weight: var(--font-weight); 8 | --notification-font-size: 16px; 9 | 10 | --material-notification-font-size: 16px; 11 | --material-notification-font-weight: 500; 12 | } 13 | 14 | /*~ 15 | name: Notification 16 | category: Notification 17 | markup: | 18 | 1 19 | 10 20 | 999 21 | */ 22 | 23 | .notification { 24 | position: relative; 25 | display: inline-block; 26 | vertical-align: top; 27 | font: inherit; 28 | border: none; 29 | @apply(--reset-box-model); 30 | @apply(--reset-base); 31 | @apply(--reset-font); 32 | @apply(--reset-cursor); 33 | @apply(--ellipsis); 34 | text-decoration: none; 35 | margin: 0; 36 | padding: var(--notification-padding); 37 | width: var(--notification-width); 38 | height: var(--notification-height); 39 | border-radius: var(--notification-border-radius); 40 | background-color: var(--notification-background-color); 41 | color: var(--notification-color); 42 | text-align: center; 43 | font-size: var(--notification-font-size); 44 | min-width: var(--notification-min-width); 45 | line-height: var(--notification-height); 46 | font-weight: var(--notification-font-weight); 47 | } 48 | 49 | .notification:empty { 50 | display: none; 51 | } 52 | 53 | /*~ 54 | name: Material Notification 55 | category: Notification 56 | markup: | 57 | 1 58 | 10 59 | 999 60 | */ 61 | 62 | .notification--material { 63 | @apply(--material-font); 64 | background-color: var(--material-notification-background-color); 65 | font-size: var(--material-notification-font-size); 66 | font-weight: var(--material-notification-font-weight); 67 | color: var(--material-notification-color); 68 | } 69 | -------------------------------------------------------------------------------- /code/cordova/spotcontroller/www/lib/OnsenUI/css-components-src/src/components/page.css: -------------------------------------------------------------------------------- 1 | 2 | :root { 3 | --page-background-color: var(--background-color); 4 | --page-material-background-color: var(--material-background-color); 5 | } 6 | 7 | .page { 8 | @apply(--reset-font); 9 | background-color: var(--page-background-color); 10 | position: absolute; 11 | top: 0; 12 | left: 0; 13 | right: 0; 14 | bottom: 0; 15 | overflow-x: visible; 16 | overflow-y: hidden; 17 | color: var(--text-color); 18 | -ms-overflow-style: none; 19 | -webkit-font-smoothing: antialiased; 20 | } 21 | 22 | .page::-webkit-scrollbar { 23 | display: none; 24 | } 25 | 26 | .page__content { 27 | background-color: var(--page-background-color); 28 | position: absolute; 29 | top: 0; 30 | left: 0; 31 | right: 0; 32 | bottom: 0; 33 | box-sizing: border-box; 34 | } 35 | 36 | .page__background { 37 | background-color: var(--page-background-color); 38 | position: absolute; 39 | top: 0; 40 | left: 0; 41 | right: 0; 42 | bottom: 0; 43 | box-sizing: border-box; 44 | } 45 | 46 | .page--material { 47 | @apply(--material-font); 48 | background-color: var(--page-material-background-color); 49 | } 50 | 51 | .page--material__content { 52 | @apply(--material-font); 53 | font-weight: var(--font-weight); 54 | } 55 | 56 | .page__content h1, 57 | .page__content h2, 58 | .page__content h3, 59 | .page__content h4, 60 | .page__content h5 { 61 | @apply(--material-font); 62 | font-weight: var(--font-weight--large); 63 | margin: 0.6em 0; 64 | padding: 0; 65 | } 66 | 67 | .page__content h1 { 68 | font-size: 28px; 69 | } 70 | 71 | .page__content h2 { 72 | font-size: 24px; 73 | } 74 | 75 | .page__content h3 { 76 | font-size: 20px; 77 | } 78 | 79 | .page--material__content h1, 80 | .page--material__content h2, 81 | .page--material__content h3, 82 | .page--material__content h4, 83 | .page--material__content h5 { 84 | @apply(--material-font); 85 | font-weight: var(--font-weight--large); 86 | margin: 0.6em 0; 87 | padding: 0; 88 | } 89 | 90 | .page--material__content h1 { 91 | font-size: 28px; 92 | } 93 | 94 | .page--material__content h2 { 95 | font-size: 24px; 96 | } 97 | 98 | .page--material__content h3 { 99 | font-size: 20px; 100 | } 101 | 102 | .page--material__background { 103 | background-color: var(--page-material-background-color); 104 | } 105 | 106 | -------------------------------------------------------------------------------- /code/cordova/spotcontroller/www/lib/OnsenUI/css-components-src/src/components/search-input.css: -------------------------------------------------------------------------------- 1 | :root { 2 | --search-icon: url('../img/ios-search-input-icon.svg'); 3 | --search-input-background-image: var(--search-icon); 4 | --search-input-color: var(--input-text-color); 5 | --search-decoration-margin-right: 0; 6 | --search-input-border-radius: 5.5px; 7 | --search-input-height: 28px; 8 | --search-input-font-size: 14px; 9 | --search-input-placeholder-color: #7a797b; 10 | 11 | --material-search-icon: url('../img/android-search-input-icon.svg'); 12 | 13 | --search-input: { 14 | @apply(--reset-input); 15 | @apply(--reset-font); 16 | appearance: textfield; 17 | } 18 | 19 | --search-input--disabled: { 20 | @apply(--disabled); 21 | } 22 | } 23 | 24 | /*~ 25 | name: Search Input 26 | category: Search Input 27 | markup: | 28 | 29 | */ 30 | 31 | .search-input { 32 | @apply(--search-input); 33 | box-sizing: border-box; 34 | height: var(--search-input-height); 35 | font-size: var(--search-input-font-size); 36 | background-color: var(--search-input-background-color); 37 | box-shadow: none; 38 | color: var(--search-input-color); 39 | line-height: 1.3; 40 | padding: 0 8px 0 28px; 41 | margin: 0; 42 | border-radius: var(--search-input-border-radius); 43 | background-image: var(--search-input-background-image); 44 | background-position: 8px center; 45 | background-repeat: no-repeat; 46 | background-size: 13px; 47 | font-weight: var(--font-weight); 48 | display: inline-block; 49 | text-indent: 0; 50 | } 51 | 52 | .search-input::-webkit-search-cancel-button { 53 | appearance: textfield; 54 | display: none; 55 | } 56 | 57 | .search-input::-webkit-search-decoration { 58 | display: none; 59 | } 60 | 61 | .search-input:focus { 62 | outline: none; 63 | } 64 | 65 | .search-input::placeholder { 66 | color: var(--search-input-placeholder-color); 67 | font-size: var(--search-input-font-size); 68 | text-indent: 0; 69 | } 70 | 71 | .search-input:placeholder-shown { 72 | } 73 | 74 | .search-input:disabled { 75 | @apply(--search-input--disabled); 76 | } 77 | 78 | /*~ 79 | name: Material Search Input 80 | category: Search Input 81 | markup: | 82 | 83 | */ 84 | 85 | .search-input--material { 86 | @apply(--material-font); 87 | border-radius: 2px; 88 | height: 48px; 89 | background-color: var(--material-search-background-color); 90 | background-image: var(--material-search-icon); 91 | background-size: 18px; 92 | background-position: 18px center; 93 | font-size: 14px; 94 | padding: 0 24px 0 64px; 95 | box-shadow: 0 0 2px 0 rgba(0, 0, 0, 0.12), 0 2px 2px 0 rgba(0, 0, 0, 0.24), 0 1px 0 0 rgba(255, 255, 255, 0.06) inset; 96 | } 97 | -------------------------------------------------------------------------------- /code/cordova/spotcontroller/www/lib/OnsenUI/css-components-src/src/components/textarea.css: -------------------------------------------------------------------------------- 1 | :root { 2 | --textarea-color: var(--input-text-color); 3 | --textarea-border: 1px solid var(--input-border-color); 4 | --textarea-padding: 5px 5px 5px 5px; 5 | --textarea-box-shadow: none; 6 | --textarea-border-radius: 4px; 7 | } 8 | 9 | /*~ 10 | name: Textarea 11 | category: Textarea 12 | markup: | 13 | 14 | */ 15 | 16 | .textarea { 17 | @apply(--reset-box-model); 18 | @apply(--reset-base); 19 | @apply(--reset-font); 20 | vertical-align: top; 21 | resize: none; 22 | outline: none; 23 | padding: var(--textarea-padding); 24 | font-size: var(--text-input-font-size); 25 | font-weight: var(--font-weight); 26 | border-radius: var(--textarea-border-radius); 27 | border: var(--textarea-border); 28 | background-color: var(--input-bg-color); 29 | color: var(--textarea-color); 30 | letter-spacing: 0; 31 | box-shadow: var(--textarea-box-shadow); 32 | appearance: none; 33 | width: auto; 34 | } 35 | 36 | .textarea:disabled { 37 | @apply(--disabled); 38 | } 39 | 40 | .textarea::placeholder { 41 | color: var(--input-placeholder-color); 42 | } 43 | 44 | /*~ 45 | name: Textarea Transparent 46 | category: Textarea 47 | markup: | 48 | 49 | */ 50 | 51 | .textarea--transparent { 52 | @apply(--reset-box-model); 53 | @apply(--reset-base); 54 | @apply(--reset-font); 55 | vertical-align: top; 56 | resize: none; 57 | outline: none; 58 | padding: var(--textarea-padding); 59 | padding-left: 0; 60 | padding-right: 0; 61 | font-size: var(--text-input-font-size); 62 | font-weight: var(--font-weight); 63 | border-radius: var(--textarea-border-radius); 64 | border: none; 65 | background-color: transparent; 66 | color: var(--textarea-color); 67 | letter-spacing: 0; 68 | box-shadow: var(--textarea-box-shadow); 69 | appearance: none; 70 | width: auto; 71 | } 72 | 73 | .textarea--transparent:disabled { 74 | @apply(--disabled); 75 | } 76 | 77 | .textarea--transparent::placeholder { 78 | color: var(--input-placeholder-color); 79 | } 80 | -------------------------------------------------------------------------------- /code/cordova/spotcontroller/www/lib/OnsenUI/css-components-src/src/components/toast.css: -------------------------------------------------------------------------------- 1 | 2 | :root { 3 | } 4 | 5 | /*~ 6 | name: Toast 7 | category: Toast 8 | markup: | 9 |
10 |
Message Message Message Message Message Message
11 | 12 |
13 | */ 14 | 15 | .toast { 16 | @apply(--reset-font); 17 | position: absolute; 18 | z-index: 2; 19 | left: 8px; 20 | right: 8px; 21 | bottom: 0; 22 | margin: 8px 0; 23 | border-radius: 8px; 24 | background-color: var(--toast-background-color); 25 | display: flex; 26 | min-height: 48px; 27 | line-height: 1.5; 28 | box-sizing: border-box; 29 | padding: 16px 16px; 30 | } 31 | 32 | .toast__message { 33 | font-size: 14px; 34 | color: var(--toast-text-color); 35 | flex-grow: 1; 36 | text-align: left; 37 | margin: 0 16px 0 0; 38 | white-space: normal; 39 | } 40 | 41 | .toast__button { 42 | font-size: 14px; 43 | color: var(--toast-button-text-color); 44 | flex-grow: 0; 45 | appearance: none; 46 | border: none; 47 | background-color: transparent; 48 | cursor: default; 49 | text-transform: uppercase; 50 | } 51 | 52 | .toast__button:focus { 53 | outline: none; 54 | } 55 | 56 | .toast__button:active { 57 | opacity: 0.4; 58 | } 59 | 60 | /*~ 61 | name: Material Toast 62 | category: Toast 63 | markup: | 64 |
65 |
Message Message Message Message Message Message
66 | 67 |
68 | */ 69 | 70 | .toast--material { 71 | left: 0; 72 | right: 0; 73 | bottom: 0; 74 | margin: 0; 75 | background-color: var(--material-toast-background-color); 76 | border-radius: 0; 77 | padding: 16px 24px; 78 | } 79 | 80 | .toast--material__message { 81 | @apply(--material-font); 82 | margin: 0 24px 0 0; 83 | } 84 | 85 | .toast--material__button { 86 | @apply(--material-font); 87 | color: var(--material-toast-button-text-color); 88 | } 89 | -------------------------------------------------------------------------------- /code/cordova/spotcontroller/www/lib/OnsenUI/css-components-src/src/components/util.css: -------------------------------------------------------------------------------- 1 | 2 | :root { 3 | --reset-font: { 4 | font-family: -apple-system, 'Helvetica Neue', 'Helvetica', 'Arial', 'Lucida Grande', sans-serif; 5 | -webkit-font-smoothing: antialiased; 6 | -moz-osx-font-smoothing: grayscale; 7 | font-weight: var(--font-weight); 8 | } 9 | 10 | --reset-box-model: { 11 | box-sizing: border-box; 12 | background-clip: padding-box; 13 | } 14 | 15 | --reset-base: { 16 | padding: 0; 17 | margin: 0; 18 | font: inherit; 19 | color: inherit; 20 | background: transparent; 21 | border: none; 22 | line-height: normal; 23 | } 24 | 25 | --reset-input: { 26 | @apply(--reset-box-model); 27 | padding: 0; 28 | margin: 0; 29 | font: inherit; 30 | color: inherit; 31 | background: transparent; 32 | border: none; 33 | vertical-align: top; 34 | outline: none; 35 | line-height: 1; 36 | } 37 | 38 | --hide-input: { 39 | position: absolute; 40 | right: 0; 41 | top: 0; 42 | left: 0; 43 | bottom: 0; 44 | padding: 0; 45 | border: 0; 46 | background-color: transparent; 47 | z-index: 1; 48 | vertical-align: top; 49 | outline: none; 50 | width: 100%; 51 | height: 100%; 52 | margin: 0; 53 | appearance: none; 54 | } 55 | 56 | --hide-input-parent: { 57 | position: relative; 58 | } 59 | 60 | --reset-cursor: { 61 | cursor: default; 62 | user-select: none; 63 | } 64 | 65 | --reset-overflow: { 66 | white-space: nowrap; 67 | overflow: hidden; 68 | } 69 | 70 | --reset-container: { 71 | @apply(--reset-box-model); 72 | @apply(--reset-overflow); 73 | word-spacing: 0; 74 | } 75 | 76 | --ellipsis: { 77 | text-overflow: ellipsis; 78 | white-space: nowrap; 79 | overflow: hidden; 80 | } 81 | 82 | --disabled: { 83 | opacity: 0.3; 84 | cursor: default; 85 | pointer-events: none; 86 | } 87 | 88 | --input: { 89 | @apply(--reset-input); 90 | @apply(--reset-font); 91 | } 92 | 93 | --transparent: { 94 | border: none; 95 | background-color: transparent; 96 | } 97 | 98 | @custom-media --retina-query (-webkit-min-device-pixel-ratio: 2), (min-resolution: 192dpi), (min-resolution: 2dppx); 99 | 100 | --material-font: { 101 | font-family: 'Roboto', 'Noto', sans-serif; 102 | -webkit-font-smoothing: antialiased; 103 | font-weight: var(--material-font-weight); 104 | } 105 | 106 | --material-shadow-0: { 107 | box-shadow: none; 108 | } 109 | 110 | --material-shadow-1: { 111 | box-shadow: 112 | 0 2px 2px 0 rgba(0, 0, 0, 0.14), 113 | 0 1px 5px 0 rgba(0, 0, 0, 0.12), 114 | 0 3px 1px -2px rgba(0, 0, 0, 0.2); 115 | } 116 | 117 | --material-shadow-2: { 118 | box-shadow: 119 | 0 4px 5px 0 rgba(0, 0, 0, 0.14), 120 | 0 1px 10px 0 rgba(0, 0, 0, 0.12), 121 | 0 2px 4px -1px rgba(0, 0, 0, 0.4); 122 | } 123 | 124 | --material-shadow-3: { 125 | box-shadow: 126 | 0 6px 10px 0 rgba(0, 0, 0, 0.14), 127 | 0 1px 18px 0 rgba(0, 0, 0, 0.12), 128 | 0 3px 5px -1px rgba(0, 0, 0, 0.4); 129 | } 130 | 131 | --material-shadow-4: { 132 | box-shadow: 133 | 0 8px 10px 1px rgba(0, 0, 0, 0.14), 134 | 0 3px 14px 2px rgba(0, 0, 0, 0.12), 135 | 0 5px 5px -3px rgba(0, 0, 0, 0.4); 136 | } 137 | 138 | --material-shadow-5: { 139 | box-shadow: 140 | 0 16px 24px 2px rgba(0, 0, 0, 0.14), 141 | 0 6px 30px 5px rgba(0, 0, 0, 0.12), 142 | 0 8px 10px -5px rgba(0, 0, 0, 0.4); 143 | } 144 | 145 | --checkmark: { 146 | content: ''; 147 | position: absolute; 148 | top: 7px; 149 | left: 4px; 150 | opacity: 0; 151 | width: 11px; 152 | height: 4px; 153 | background: transparent; 154 | border: 2px solid var(--highlight-color); 155 | border-top: none; 156 | border-right: none; 157 | border-radius: 0; 158 | transform: rotate(-45deg); 159 | } 160 | } 161 | -------------------------------------------------------------------------------- /code/cordova/spotcontroller/www/lib/OnsenUI/css-components-src/src/dark-onsen-css-components.css: -------------------------------------------------------------------------------- 1 | 2 | @import url('./license.css'); 3 | @import url('./dark-theme.css'); 4 | @import url('./components/index.css'); 5 | @import url('./iphonex-support/index.css'); 6 | -------------------------------------------------------------------------------- /code/cordova/spotcontroller/www/lib/OnsenUI/css-components-src/src/img/android-search-input-icon.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | Shape 5 | Created with Sketch. 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | -------------------------------------------------------------------------------- /code/cordova/spotcontroller/www/lib/OnsenUI/css-components-src/src/img/ios-search-input-icon.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | ios-search-input-icon 5 | Created with Sketch. 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | -------------------------------------------------------------------------------- /code/cordova/spotcontroller/www/lib/OnsenUI/css-components-src/src/img/select-arrow.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | select-allow 5 | Created with Sketch. 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | -------------------------------------------------------------------------------- /code/cordova/spotcontroller/www/lib/OnsenUI/css-components-src/src/iphonex-support/action-sheet.css: -------------------------------------------------------------------------------- 1 | @media (orientation: portrait) { 2 | html[onsflag-iphonex-portrait] .action-sheet { 3 | bottom: calc(var(--iphonex-safe-area-inset-bottom-portrait) + 14px); /* bottom safe area + 14 pt (extra bottom margin) */ 4 | } 5 | } 6 | 7 | @media (orientation: landscape) { 8 | html[onsflag-iphonex-landscape] .action-sheet { 9 | /* The width in landscape mode is the same as the width in portrait mode */ 10 | left: calc((100vw - (100vh + 20px)) / 2); 11 | right: calc((100vw - (100vh + 20px)) / 2); 12 | bottom: calc(var(--iphonex-safe-area-inset-bottom-landscape) + 12px); /* bottom safe area + 12 pt (extra bottom margin) */ 13 | } 14 | } 15 | -------------------------------------------------------------------------------- /code/cordova/spotcontroller/www/lib/OnsenUI/css-components-src/src/iphonex-support/fab.css: -------------------------------------------------------------------------------- 1 | @media (orientation: portrait) { 2 | /* For top safe area */ 3 | html[onsflag-iphonex-portrait] .fab--top__left, 4 | html[onsflag-iphonex-portrait] .fab--top__center, 5 | html[onsflag-iphonex-portrait] .fab--top__right { 6 | top: calc(var(--iphonex-safe-area-inset-top-portrait) + 20px); 7 | } 8 | 9 | /* For bottom safe area */ 10 | html[onsflag-iphonex-portrait] .fab--bottom__left, 11 | html[onsflag-iphonex-portrait] .fab--bottom__center, 12 | html[onsflag-iphonex-portrait] .fab--bottom__right { 13 | bottom: calc(var(--iphonex-safe-area-inset-bottom-portrait)); /* Omit 20px space */ 14 | } 15 | } 16 | 17 | @media (orientation: landscape) { 18 | /* For bottom safe area */ 19 | html[onsflag-iphonex-landscape] .fab--bottom__left, 20 | html[onsflag-iphonex-landscape] .fab--bottom__center, 21 | html[onsflag-iphonex-landscape] .fab--bottom__right { 22 | bottom: calc(var(--iphonex-safe-area-inset-bottom-landscape)); /* Omit 20px space */ 23 | } 24 | 25 | /* For left safe area */ 26 | html[onsflag-iphonex-landscape] .fab--top__left, 27 | html[onsflag-iphonex-landscape] .fab--bottom__left { 28 | left: calc(var(--iphonex-safe-area-inset-left-landscape)); /* Omit 20px space */ 29 | } 30 | 31 | /* For right safe area */ 32 | html[onsflag-iphonex-landscape] .fab--top__right, 33 | html[onsflag-iphonex-landscape] .fab--bottom__right { 34 | right: calc(var(--iphonex-safe-area-inset-right-landscape)); /* Omit 20px space */ 35 | } 36 | } 37 | -------------------------------------------------------------------------------- /code/cordova/spotcontroller/www/lib/OnsenUI/css-components-src/src/iphonex-support/global.css: -------------------------------------------------------------------------------- 1 | :root { 2 | --iphonex-safe-area-inset-top-portrait: 44px; 3 | --iphonex-safe-area-inset-right-portrait: 0; 4 | --iphonex-safe-area-inset-bottom-portrait: 34px; 5 | --iphonex-safe-area-inset-left-portrait: 0; 6 | 7 | --iphonex-safe-area-inset-top-landscape: 0; 8 | --iphonex-safe-area-inset-right-landscape: 44px; 9 | --iphonex-safe-area-inset-bottom-landscape: 21px; 10 | --iphonex-safe-area-inset-left-landscape: 44px; 11 | } 12 | -------------------------------------------------------------------------------- /code/cordova/spotcontroller/www/lib/OnsenUI/css-components-src/src/iphonex-support/index.css: -------------------------------------------------------------------------------- 1 | @import './global.css'; 2 | /* @import './util.css'; */ 3 | @import './page.css'; 4 | /* @import './switch.css'; */ 5 | /* @import './range.css'; */ 6 | /* @import './notification.css'; */ 7 | @import './toolbar.css'; 8 | /* @import './button.css'; */ 9 | /* @import './button-bar.css'; */ 10 | /* @import './segment.css'; */ 11 | @import './tabbar.css'; 12 | /* @import './toolbar-button.css'; */ 13 | /* @import './checkbox.css'; */ 14 | /* @import './radio-button.css'; */ 15 | /* @import './list.css'; */ 16 | /* @import './search-input.css'; */ 17 | /* @import './text-input.css'; */ 18 | /* @import './textarea.css'; */ 19 | /* @import './dialog.css'; */ 20 | /* @import './alert-dialog.css'; */ 21 | /* @import './popover.css'; */ 22 | /* @import './progress-bar.css'; */ 23 | /* @import './progress-circular.css'; */ 24 | @import './fab.css'; 25 | /* @import './modal.css'; */ 26 | /* @import './select.css'; */ 27 | @import './action-sheet.css'; 28 | /* @import './card.css'; */ 29 | @import './toast.css'; 30 | @import './combination.css'; /* non BEM */ 31 | -------------------------------------------------------------------------------- /code/cordova/spotcontroller/www/lib/OnsenUI/css-components-src/src/iphonex-support/page.css: -------------------------------------------------------------------------------- 1 | @media (orientation: landscape) { 2 | html[onsflag-iphonex-landscape] .page__content { 3 | padding-left: var(--iphonex-safe-area-inset-left-landscape); 4 | padding-right: var(--iphonex-safe-area-inset-right-landscape); 5 | } 6 | /* Ignore if the page is in dialogs or modals */ 7 | html[onsflag-iphonex-landscape] .dialog .page__content, 8 | html[onsflag-iphonex-landscape] .modal .page__content { 9 | padding-left: 0; 10 | padding-right: 0; 11 | } 12 | } 13 | -------------------------------------------------------------------------------- /code/cordova/spotcontroller/www/lib/OnsenUI/css-components-src/src/iphonex-support/tabbar.css: -------------------------------------------------------------------------------- 1 | @media (orientation: landscape) { 2 | html[onsflag-iphonex-landscape] .tabbar { 3 | padding-left: var(--iphonex-safe-area-inset-left-landscape); 4 | padding-right: var(--iphonex-safe-area-inset-right-landscape); 5 | width: calc(100% - var(--iphonex-safe-area-inset-left-landscape) - var(--iphonex-safe-area-inset-right-landscape)); 6 | } 7 | } 8 | -------------------------------------------------------------------------------- /code/cordova/spotcontroller/www/lib/OnsenUI/css-components-src/src/iphonex-support/toast.css: -------------------------------------------------------------------------------- 1 | @media (orientation: portrait) { 2 | html[onsflag-iphonex-portrait] .toast { 3 | bottom: var(--iphonex-safe-area-inset-bottom-portrait); 4 | } 5 | } 6 | 7 | @media (orientation: landscape) { 8 | html[onsflag-iphonex-landscape] .toast { 9 | left: calc(var(--iphonex-safe-area-inset-left-landscape) + 8px); 10 | right: calc(var(--iphonex-safe-area-inset-right-landscape) + 8px); 11 | bottom: var(--iphonex-safe-area-inset-bottom-landscape); 12 | } 13 | } 14 | -------------------------------------------------------------------------------- /code/cordova/spotcontroller/www/lib/OnsenUI/css-components-src/src/iphonex-support/toolbar.css: -------------------------------------------------------------------------------- 1 | @media (orientation: landscape) { 2 | html[onsflag-iphonex-landscape] .toolbar__left { 3 | padding-left: var(--iphonex-safe-area-inset-left-landscape); 4 | } 5 | 6 | html[onsflag-iphonex-landscape] .toolbar__right { 7 | padding-right: var(--iphonex-safe-area-inset-right-landscape); 8 | } 9 | 10 | html[onsflag-iphonex-landscape] .bottom-bar { 11 | padding-right: var(--iphonex-safe-area-inset-right-landscape); 12 | padding-left: var(--iphonex-safe-area-inset-left-landscape); 13 | } 14 | } 15 | -------------------------------------------------------------------------------- /code/cordova/spotcontroller/www/lib/OnsenUI/css-components-src/src/license.css: -------------------------------------------------------------------------------- 1 | /*! 2 | * Copyright 2013-2017 ASIAL CORPORATION 3 | * 4 | * Licensed under the Apache License, Version 2.0 (the "License"); 5 | * you may not use this file except in compliance with the License. 6 | * You may obtain a copy of the License at 7 | * 8 | * http://www.apache.org/licenses/LICENSE-2.0 9 | * 10 | * Unless required by applicable law or agreed to in writing, software 11 | * distributed under the License is distributed on an "AS IS" BASIS, 12 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13 | * See the License for the specific language governing permissions and 14 | * limitations under the License. 15 | * 16 | */ 17 | /*! 18 | * Copyright 2012 Adobe Systems Inc.; 19 | * 20 | * Licensed under the Apache License, Version 2.0 (the "License"); 21 | * you may not use this file except in compliance with the License. 22 | * You may obtain a copy of the License at 23 | * 24 | * http://www.apache.org/licenses/LICENSE-2.0 25 | * 26 | * Unless required by applicable law or agreed to in writing, software 27 | * distributed under the License is distributed on an "AS IS" BASIS, 28 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 29 | * See the License for the specific language governing permissions and 30 | * limitations under the License. 31 | * 32 | */ 33 | -------------------------------------------------------------------------------- /code/cordova/spotcontroller/www/lib/OnsenUI/css-components-src/src/old-onsen-css-components.css: -------------------------------------------------------------------------------- 1 | 2 | @import url('./license.css'); 3 | @import url('./old-theme.css'); 4 | @import url('./components/index.css'); 5 | @import url('./iphonex-support/index.css'); 6 | -------------------------------------------------------------------------------- /code/cordova/spotcontroller/www/lib/OnsenUI/css-components-src/src/onsen-css-components.css: -------------------------------------------------------------------------------- 1 | 2 | @import url('./license.css'); 3 | @import url('./theme.css'); 4 | @import url('./components/index.css'); 5 | @import url('./iphonex-support/index.css'); 6 | -------------------------------------------------------------------------------- /code/cordova/spotcontroller/www/lib/OnsenUI/css/font_awesome/fonts/FontAwesome.otf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/maartenweyn/SpotMicro_ESP32/d8bbf69276bf898c95bcf79fbbfe0ffbd39bdb13/code/cordova/spotcontroller/www/lib/OnsenUI/css/font_awesome/fonts/FontAwesome.otf -------------------------------------------------------------------------------- /code/cordova/spotcontroller/www/lib/OnsenUI/css/font_awesome/fonts/fontawesome-webfont.eot: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/maartenweyn/SpotMicro_ESP32/d8bbf69276bf898c95bcf79fbbfe0ffbd39bdb13/code/cordova/spotcontroller/www/lib/OnsenUI/css/font_awesome/fonts/fontawesome-webfont.eot -------------------------------------------------------------------------------- /code/cordova/spotcontroller/www/lib/OnsenUI/css/font_awesome/fonts/fontawesome-webfont.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/maartenweyn/SpotMicro_ESP32/d8bbf69276bf898c95bcf79fbbfe0ffbd39bdb13/code/cordova/spotcontroller/www/lib/OnsenUI/css/font_awesome/fonts/fontawesome-webfont.ttf -------------------------------------------------------------------------------- /code/cordova/spotcontroller/www/lib/OnsenUI/css/font_awesome/fonts/fontawesome-webfont.woff: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/maartenweyn/SpotMicro_ESP32/d8bbf69276bf898c95bcf79fbbfe0ffbd39bdb13/code/cordova/spotcontroller/www/lib/OnsenUI/css/font_awesome/fonts/fontawesome-webfont.woff -------------------------------------------------------------------------------- /code/cordova/spotcontroller/www/lib/OnsenUI/css/font_awesome/fonts/fontawesome-webfont.woff2: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/maartenweyn/SpotMicro_ESP32/d8bbf69276bf898c95bcf79fbbfe0ffbd39bdb13/code/cordova/spotcontroller/www/lib/OnsenUI/css/font_awesome/fonts/fontawesome-webfont.woff2 -------------------------------------------------------------------------------- /code/cordova/spotcontroller/www/lib/OnsenUI/css/ionicons/fonts/ionicons.eot: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/maartenweyn/SpotMicro_ESP32/d8bbf69276bf898c95bcf79fbbfe0ffbd39bdb13/code/cordova/spotcontroller/www/lib/OnsenUI/css/ionicons/fonts/ionicons.eot -------------------------------------------------------------------------------- /code/cordova/spotcontroller/www/lib/OnsenUI/css/ionicons/fonts/ionicons.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/maartenweyn/SpotMicro_ESP32/d8bbf69276bf898c95bcf79fbbfe0ffbd39bdb13/code/cordova/spotcontroller/www/lib/OnsenUI/css/ionicons/fonts/ionicons.ttf -------------------------------------------------------------------------------- /code/cordova/spotcontroller/www/lib/OnsenUI/css/ionicons/fonts/ionicons.woff: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/maartenweyn/SpotMicro_ESP32/d8bbf69276bf898c95bcf79fbbfe0ffbd39bdb13/code/cordova/spotcontroller/www/lib/OnsenUI/css/ionicons/fonts/ionicons.woff -------------------------------------------------------------------------------- /code/cordova/spotcontroller/www/lib/OnsenUI/css/material-design-iconic-font/fonts/Material-Design-Iconic-Font.eot: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/maartenweyn/SpotMicro_ESP32/d8bbf69276bf898c95bcf79fbbfe0ffbd39bdb13/code/cordova/spotcontroller/www/lib/OnsenUI/css/material-design-iconic-font/fonts/Material-Design-Iconic-Font.eot -------------------------------------------------------------------------------- /code/cordova/spotcontroller/www/lib/OnsenUI/css/material-design-iconic-font/fonts/Material-Design-Iconic-Font.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/maartenweyn/SpotMicro_ESP32/d8bbf69276bf898c95bcf79fbbfe0ffbd39bdb13/code/cordova/spotcontroller/www/lib/OnsenUI/css/material-design-iconic-font/fonts/Material-Design-Iconic-Font.ttf -------------------------------------------------------------------------------- /code/cordova/spotcontroller/www/lib/OnsenUI/css/material-design-iconic-font/fonts/Material-Design-Iconic-Font.woff: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/maartenweyn/SpotMicro_ESP32/d8bbf69276bf898c95bcf79fbbfe0ffbd39bdb13/code/cordova/spotcontroller/www/lib/OnsenUI/css/material-design-iconic-font/fonts/Material-Design-Iconic-Font.woff -------------------------------------------------------------------------------- /code/cordova/spotcontroller/www/lib/OnsenUI/css/material-design-iconic-font/fonts/Material-Design-Iconic-Font.woff2: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/maartenweyn/SpotMicro_ESP32/d8bbf69276bf898c95bcf79fbbfe0ffbd39bdb13/code/cordova/spotcontroller/www/lib/OnsenUI/css/material-design-iconic-font/fonts/Material-Design-Iconic-Font.woff2 -------------------------------------------------------------------------------- /code/cordova/spotcontroller/www/lib/OnsenUI/css/onsenui-fonts.css: -------------------------------------------------------------------------------- 1 | @import url("./ionicons/css/ionicons.min.css"); 2 | @import url("./material-design-iconic-font/css/material-design-iconic-font.min.css"); 3 | @import url("./font_awesome/css/font-awesome.min.css"); 4 | 5 | -------------------------------------------------------------------------------- /code/cordova/spotcontroller/www/lib/OnsenUI/esm/elements/base/base-checkbox.js: -------------------------------------------------------------------------------- 1 | import _toConsumableArray from 'babel-runtime/helpers/toConsumableArray'; 2 | import _Object$getPrototypeOf from 'babel-runtime/core-js/object/get-prototype-of'; 3 | import _classCallCheck from 'babel-runtime/helpers/classCallCheck'; 4 | import _createClass from 'babel-runtime/helpers/createClass'; 5 | import _possibleConstructorReturn from 'babel-runtime/helpers/possibleConstructorReturn'; 6 | import _get from 'babel-runtime/helpers/get'; 7 | import _inherits from 'babel-runtime/helpers/inherits'; 8 | /* 9 | Copyright 2013-2015 ASIAL CORPORATION 10 | Licensed under the Apache License, Version 2.0 (the "License"); 11 | you may not use this file except in compliance with the License. 12 | You may obtain a copy of the License at 13 | http://www.apache.org/licenses/LICENSE-2.0 14 | Unless required by applicable law or agreed to in writing, software 15 | distributed under the License is distributed on an "AS IS" BASIS, 16 | WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 17 | See the License for the specific language governing permissions and 18 | limitations under the License. 19 | */ 20 | 21 | import BaseInputElement from './base-input'; 22 | import contentReady from '../../ons/content-ready'; 23 | 24 | var BaseCheckboxElement = function (_BaseInputElement) { 25 | _inherits(BaseCheckboxElement, _BaseInputElement); 26 | 27 | function BaseCheckboxElement() { 28 | _classCallCheck(this, BaseCheckboxElement); 29 | 30 | var _this = _possibleConstructorReturn(this, (BaseCheckboxElement.__proto__ || _Object$getPrototypeOf(BaseCheckboxElement)).call(this)); 31 | 32 | if (_this.constructor === BaseCheckboxElement) { 33 | util.throwAbstract(); 34 | } 35 | 36 | contentReady(_this, function () { 37 | _this.attributeChangedCallback('checked', null, _this.getAttribute('checked')); 38 | }); 39 | return _this; 40 | } 41 | 42 | /* Inherited props */ 43 | 44 | _createClass(BaseCheckboxElement, [{ 45 | key: 'attributeChangedCallback', 46 | value: function attributeChangedCallback(name, last, current) { 47 | switch (name) { 48 | case 'checked': 49 | this.checked = current !== null; 50 | break; 51 | default: 52 | _get(BaseCheckboxElement.prototype.__proto__ || _Object$getPrototypeOf(BaseCheckboxElement.prototype), 'attributeChangedCallback', this).call(this, name, last, current); 53 | } 54 | } 55 | }, { 56 | key: '_template', 57 | get: function get() { 58 | return '\n \n \n '; 59 | } 60 | 61 | /* Own props */ 62 | 63 | }, { 64 | key: '_helper', 65 | get: function get() { 66 | return this.querySelector('span'); 67 | } 68 | }, { 69 | key: 'checked', 70 | get: function get() { 71 | return this._input.checked; 72 | }, 73 | set: function set(val) { 74 | var _this2 = this; 75 | 76 | contentReady(this, function () { 77 | _this2._input.checked = val; 78 | }); 79 | } 80 | }], [{ 81 | key: 'observedAttributes', 82 | get: function get() { 83 | return [].concat(_toConsumableArray(_get(BaseCheckboxElement.__proto__ || _Object$getPrototypeOf(BaseCheckboxElement), 'observedAttributes', this)), ['checked']); 84 | } 85 | }]); 86 | 87 | return BaseCheckboxElement; 88 | }(BaseInputElement); 89 | 90 | export default BaseCheckboxElement; -------------------------------------------------------------------------------- /code/cordova/spotcontroller/www/lib/OnsenUI/esm/elements/base/base-element.js: -------------------------------------------------------------------------------- 1 | import _Object$getPrototypeOf from 'babel-runtime/core-js/object/get-prototype-of'; 2 | import _classCallCheck from 'babel-runtime/helpers/classCallCheck'; 3 | import _possibleConstructorReturn from 'babel-runtime/helpers/possibleConstructorReturn'; 4 | import _inherits from 'babel-runtime/helpers/inherits'; 5 | /* 6 | Copyright 2013-2015 ASIAL CORPORATION 7 | 8 | Licensed under the Apache License, Version 2.0 (the "License"); 9 | you may not use this file except in compliance with the License. 10 | You may obtain a copy of the License at 11 | 12 | http://www.apache.org/licenses/LICENSE-2.0 13 | 14 | Unless required by applicable law or agreed to in writing, software 15 | distributed under the License is distributed on an "AS IS" BASIS, 16 | WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 17 | See the License for the specific language governing permissions and 18 | limitations under the License. 19 | 20 | */ 21 | 22 | function getElementClass() { 23 | if (typeof HTMLElement !== 'function') { 24 | // case of Safari 25 | var _BaseElement = function _BaseElement() {}; 26 | _BaseElement.prototype = document.createElement('div'); 27 | return _BaseElement; 28 | } else { 29 | return HTMLElement; 30 | } 31 | } 32 | 33 | var BaseElement = function (_getElementClass) { 34 | _inherits(BaseElement, _getElementClass); 35 | 36 | function BaseElement() { 37 | _classCallCheck(this, BaseElement); 38 | 39 | return _possibleConstructorReturn(this, (BaseElement.__proto__ || _Object$getPrototypeOf(BaseElement)).call(this)); 40 | } 41 | 42 | return BaseElement; 43 | }(getElementClass()); 44 | 45 | export default BaseElement; -------------------------------------------------------------------------------- /code/cordova/spotcontroller/www/lib/OnsenUI/esm/elements/ons-alert-dialog-button.js: -------------------------------------------------------------------------------- 1 | import _Object$getPrototypeOf from 'babel-runtime/core-js/object/get-prototype-of'; 2 | import _classCallCheck from 'babel-runtime/helpers/classCallCheck'; 3 | import _createClass from 'babel-runtime/helpers/createClass'; 4 | import _possibleConstructorReturn from 'babel-runtime/helpers/possibleConstructorReturn'; 5 | import _inherits from 'babel-runtime/helpers/inherits'; 6 | /* 7 | Copyright 2013-2015 ASIAL CORPORATION 8 | 9 | Licensed under the Apache License, Version 2.0 (the "License"); 10 | you may not use this file except in compliance with the License. 11 | You may obtain a copy of the License at 12 | 13 | http://www.apache.org/licenses/LICENSE-2.0 14 | 15 | Unless required by applicable law or agreed to in writing, software 16 | distributed under the License is distributed on an "AS IS" BASIS, 17 | WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 18 | See the License for the specific language governing permissions and 19 | limitations under the License. 20 | 21 | */ 22 | 23 | import onsElements from '../ons/elements'; 24 | import BaseButtonElement from './base/base-button'; 25 | 26 | /** 27 | * @element ons-alert-dialog-button 28 | * @modifier material 29 | * [en]Material Design alert-dialog button.[/en] 30 | * [ja]マテリアルデザインのボタンを表示します。[/ja] 31 | * @description 32 | * [en][/en] 33 | * [ja][/ja] 34 | * @seealso ons-alert-dialog 35 | * [en]The `` component displays a alert dialog.[/en] 36 | * [ja]ons-alert-dialogコンポーネント[/ja] 37 | * @example 38 | * 39 | *
Warning!
40 | *
41 | * An error has occurred! 42 | *
43 | * 47 | *
48 | */ 49 | 50 | var AlertDialogButtonElement = function (_BaseButtonElement) { 51 | _inherits(AlertDialogButtonElement, _BaseButtonElement); 52 | 53 | function AlertDialogButtonElement() { 54 | _classCallCheck(this, AlertDialogButtonElement); 55 | 56 | return _possibleConstructorReturn(this, (AlertDialogButtonElement.__proto__ || _Object$getPrototypeOf(AlertDialogButtonElement)).apply(this, arguments)); 57 | } 58 | 59 | _createClass(AlertDialogButtonElement, [{ 60 | key: '_scheme', 61 | 62 | 63 | /** 64 | * @attribute modifier 65 | * @type {String} 66 | * @description 67 | * [en]The appearance of the button.[/en] 68 | * [ja]ボタンの表現を指定します。[/ja] 69 | */ 70 | 71 | /** 72 | * @attribute disabled 73 | * @description 74 | * [en]Specify if button should be disabled.[/en] 75 | * [ja]ボタンを無効化する場合は指定してください。[/ja] 76 | */ 77 | 78 | /** 79 | * @property disabled 80 | * @type {Boolean} 81 | * @description 82 | * [en]Whether the element is disabled or not.[/en] 83 | * [ja]無効化されている場合に`true`。[/ja] 84 | */ 85 | 86 | get: function get() { 87 | return { '': 'alert-dialog-button--*' }; 88 | } 89 | }, { 90 | key: '_defaultClassName', 91 | get: function get() { 92 | return 'alert-dialog-button'; 93 | } 94 | }, { 95 | key: '_rippleOpt', 96 | get: function get() { 97 | return [this, undefined, { 'modifier': 'light-gray' }]; 98 | } 99 | }]); 100 | 101 | return AlertDialogButtonElement; 102 | }(BaseButtonElement); 103 | 104 | export default AlertDialogButtonElement; 105 | 106 | 107 | onsElements.AlertDialogButton = AlertDialogButtonElement; 108 | customElements.define('ons-alert-dialog-button', AlertDialogButtonElement); -------------------------------------------------------------------------------- /code/cordova/spotcontroller/www/lib/OnsenUI/esm/elements/ons-bottom-toolbar.js: -------------------------------------------------------------------------------- 1 | import _Object$getPrototypeOf from 'babel-runtime/core-js/object/get-prototype-of'; 2 | import _classCallCheck from 'babel-runtime/helpers/classCallCheck'; 3 | import _createClass from 'babel-runtime/helpers/createClass'; 4 | import _possibleConstructorReturn from 'babel-runtime/helpers/possibleConstructorReturn'; 5 | import _inherits from 'babel-runtime/helpers/inherits'; 6 | /* 7 | Copyright 2013-2015 ASIAL CORPORATION 8 | 9 | Licensed under the Apache License, Version 2.0 (the "License"); 10 | you may not use this file except in compliance with the License. 11 | You may obtain a copy of the License at 12 | 13 | http://www.apache.org/licenses/LICENSE-2.0 14 | 15 | Unless required by applicable law or agreed to in writing, software 16 | distributed under the License is distributed on an "AS IS" BASIS, 17 | WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 18 | See the License for the specific language governing permissions and 19 | limitations under the License. 20 | 21 | */ 22 | 23 | import onsElements from '../ons/elements'; 24 | import util from '../ons/util'; 25 | import autoStyle from '../ons/autostyle'; 26 | import ModifierUtil from '../ons/internal/modifier-util'; 27 | import BaseElement from './base/base-element'; 28 | 29 | var defaultClassName = 'bottom-bar'; 30 | var scheme = { '': 'bottom-bar--*' }; 31 | 32 | /** 33 | * @element ons-bottom-toolbar 34 | * @category page 35 | * @description 36 | * [en]Toolbar component that is positioned at the bottom of the page. Since bottom toolbars are very versatile elements, `ons-bottom-toolbar` does not provide any specific layout syntax for its children. Modifiers or custom CSS must be used.[/en] 37 | * [ja]ページ下部に配置されるツールバー用コンポーネントです。[/ja] 38 | * @modifier transparent 39 | * [en]Make the toolbar transparent.[/en] 40 | * [ja]ツールバーの背景を透明にして表示します。[/ja] 41 | * @modifier aligned 42 | * [en]Vertically aligns its children and applies flexbox for block elements. `justify-content` CSS rule can be used to change horizontal align.[/en] 43 | * [ja]ツールバーの背景を透明にして表示します。[/ja] 44 | * @seealso ons-toolbar [en]ons-toolbar component[/en][ja]ons-toolbarコンポーネント[/ja] 45 | * @example 46 | * 47 | * Content 48 | * 49 | */ 50 | 51 | var BottomToolbarElement = function (_BaseElement) { 52 | _inherits(BottomToolbarElement, _BaseElement); 53 | 54 | /** 55 | * @attribute modifier 56 | * @type {String} 57 | * @description 58 | * [en]The appearance of the toolbar.[/en] 59 | * [ja]ツールバーの見た目の表現を指定します。[/ja] 60 | */ 61 | 62 | function BottomToolbarElement() { 63 | _classCallCheck(this, BottomToolbarElement); 64 | 65 | var _this = _possibleConstructorReturn(this, (BottomToolbarElement.__proto__ || _Object$getPrototypeOf(BottomToolbarElement)).call(this)); 66 | 67 | _this.classList.add(defaultClassName); 68 | ModifierUtil.initModifier(_this, scheme); 69 | return _this; 70 | } 71 | 72 | _createClass(BottomToolbarElement, [{ 73 | key: 'attributeChangedCallback', 74 | value: function attributeChangedCallback(name, last, current) { 75 | switch (name) { 76 | case 'class': 77 | util.restoreClass(this, defaultClassName, scheme); 78 | break; 79 | case 'modifier': 80 | ModifierUtil.onModifierChanged(last, current, this, scheme); 81 | break; 82 | } 83 | } 84 | }], [{ 85 | key: 'observedAttributes', 86 | get: function get() { 87 | return ['modifier', 'class']; 88 | } 89 | }]); 90 | 91 | return BottomToolbarElement; 92 | }(BaseElement); 93 | 94 | export default BottomToolbarElement; 95 | 96 | 97 | onsElements.BottomToolbar = BottomToolbarElement; 98 | customElements.define('ons-bottom-toolbar', BottomToolbarElement); -------------------------------------------------------------------------------- /code/cordova/spotcontroller/www/lib/OnsenUI/esm/elements/ons-carousel-item.js: -------------------------------------------------------------------------------- 1 | import _Object$getPrototypeOf from 'babel-runtime/core-js/object/get-prototype-of'; 2 | import _classCallCheck from 'babel-runtime/helpers/classCallCheck'; 3 | import _createClass from 'babel-runtime/helpers/createClass'; 4 | import _possibleConstructorReturn from 'babel-runtime/helpers/possibleConstructorReturn'; 5 | import _inherits from 'babel-runtime/helpers/inherits'; 6 | /* 7 | Copyright 2013-2015 ASIAL CORPORATION 8 | 9 | Licensed under the Apache License, Version 2.0 (the "License"); 10 | you may not use this file except in compliance with the License. 11 | You may obtain a copy of the License at 12 | 13 | http://www.apache.org/licenses/LICENSE-2.0 14 | 15 | Unless required by applicable law or agreed to in writing, software 16 | distributed under the License is distributed on an "AS IS" BASIS, 17 | WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 18 | See the License for the specific language governing permissions and 19 | limitations under the License. 20 | 21 | */ 22 | 23 | import onsElements from '../ons/elements'; 24 | import util from '../ons/util'; 25 | import BaseElement from './base/base-element'; 26 | import ModifierUtil from '../ons/internal/modifier-util'; 27 | var scheme = { '': 'carousel-item--*' }; 28 | 29 | /** 30 | * @element ons-carousel-item 31 | * @category carousel 32 | * @description 33 | * [en] 34 | * Carousel item component. Used as a child of the `` element. 35 | * [/en] 36 | * [ja][/ja] 37 | * @codepen xbbzOQ 38 | * @tutorial vanilla/Reference/carousel 39 | * @seealso ons-carousel 40 | * [en]`` components[/en] 41 | * [ja]コンポーネント[/ja] 42 | * @example 43 | * 44 | * 45 | * ... 46 | * 47 | * 48 | * ... 49 | * 50 | * 51 | */ 52 | 53 | var CarouselItemElement = function (_BaseElement) { 54 | _inherits(CarouselItemElement, _BaseElement); 55 | 56 | function CarouselItemElement() { 57 | _classCallCheck(this, CarouselItemElement); 58 | 59 | var _this = _possibleConstructorReturn(this, (CarouselItemElement.__proto__ || _Object$getPrototypeOf(CarouselItemElement)).call(this)); 60 | 61 | _this.style.width = '100%'; 62 | ModifierUtil.initModifier(_this, scheme); 63 | return _this; 64 | } 65 | 66 | _createClass(CarouselItemElement, [{ 67 | key: 'attributeChangedCallback', 68 | value: function attributeChangedCallback(name, last, current) { 69 | if (name === 'modifier') { 70 | return ModifierUtil.onModifierChanged(last, current, this, scheme); 71 | } 72 | } 73 | }], [{ 74 | key: 'observedAttributes', 75 | get: function get() { 76 | return ['modifier']; 77 | } 78 | }]); 79 | 80 | return CarouselItemElement; 81 | }(BaseElement); 82 | 83 | export default CarouselItemElement; 84 | 85 | 86 | onsElements.CarouselItem = CarouselItemElement; 87 | customElements.define('ons-carousel-item', CarouselItemElement); -------------------------------------------------------------------------------- /code/cordova/spotcontroller/www/lib/OnsenUI/esm/elements/ons-gesture-detector.js: -------------------------------------------------------------------------------- 1 | import _Object$getPrototypeOf from 'babel-runtime/core-js/object/get-prototype-of'; 2 | import _classCallCheck from 'babel-runtime/helpers/classCallCheck'; 3 | import _possibleConstructorReturn from 'babel-runtime/helpers/possibleConstructorReturn'; 4 | import _inherits from 'babel-runtime/helpers/inherits'; 5 | /* 6 | Copyright 2013-2015 ASIAL CORPORATION 7 | 8 | Licensed under the Apache License, Version 2.0 (the "License"); 9 | you may not use this file except in compliance with the License. 10 | You may obtain a copy of the License at 11 | 12 | http://www.apache.org/licenses/LICENSE-2.0 13 | 14 | Unless required by applicable law or agreed to in writing, software 15 | distributed under the License is distributed on an "AS IS" BASIS, 16 | WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 17 | See the License for the specific language governing permissions and 18 | limitations under the License. 19 | 20 | */ 21 | 22 | import onsElements from '../ons/elements'; 23 | import BaseElement from './base/base-element'; 24 | import GestureDetector from '../ons/gesture-detector'; 25 | 26 | /** 27 | * @element ons-gesture-detector 28 | * @category gesture 29 | * @description 30 | * [en] 31 | * Component to detect finger gestures within the wrapped element. Following gestures are supported: 32 | * - Drag gestures: `drag`, `dragleft`, `dragright`, `dragup`, `dragdown` 33 | * - Hold gestures: `hold`, `release` 34 | * - Swipe gestures: `swipe`, `swipeleft`, `swiperight`, `swipeup`, `swipedown` 35 | * - Tap gestures: `tap`, `doubletap` 36 | * - Pinch gestures: `pinch`, `pinchin`, `pinchout` 37 | * - Other gestures: `touch`, `transform`, `rotate` 38 | * [/en] 39 | * [ja]要素内のジェスチャー操作を検知します。詳しくはガイドを参照してください。[/ja] 40 | * @guide features.html#gesture-detection 41 | * [en]Detecting finger gestures[/en] 42 | * [ja]ジェスチャー操作の検知[/ja] 43 | * @example 44 | * 45 | *
46 | * Swipe Here 47 | *
48 | *
49 | * 50 | * 57 | */ 58 | 59 | var GestureDetectorElement = function (_BaseElement) { 60 | _inherits(GestureDetectorElement, _BaseElement); 61 | 62 | function GestureDetectorElement() { 63 | _classCallCheck(this, GestureDetectorElement); 64 | 65 | var _this = _possibleConstructorReturn(this, (GestureDetectorElement.__proto__ || _Object$getPrototypeOf(GestureDetectorElement)).call(this)); 66 | 67 | _this._gestureDetector = new GestureDetector(_this, { passive: true }); 68 | return _this; 69 | } 70 | 71 | return GestureDetectorElement; 72 | }(BaseElement); 73 | 74 | export default GestureDetectorElement; 75 | 76 | 77 | onsElements.GestureDetector = GestureDetectorElement; 78 | customElements.define('ons-gesture-detector', GestureDetectorElement); -------------------------------------------------------------------------------- /code/cordova/spotcontroller/www/lib/OnsenUI/esm/elements/ons-list-header.js: -------------------------------------------------------------------------------- 1 | import _Object$getPrototypeOf from 'babel-runtime/core-js/object/get-prototype-of'; 2 | import _classCallCheck from 'babel-runtime/helpers/classCallCheck'; 3 | import _createClass from 'babel-runtime/helpers/createClass'; 4 | import _possibleConstructorReturn from 'babel-runtime/helpers/possibleConstructorReturn'; 5 | import _inherits from 'babel-runtime/helpers/inherits'; 6 | /* 7 | Copyright 2013-2015 ASIAL CORPORATION 8 | 9 | Licensed under the Apache License, Version 2.0 (the "License"); 10 | you may not use this file except in compliance with the License. 11 | You may obtain a copy of the License at 12 | 13 | http://www.apache.org/licenses/LICENSE-2.0 14 | 15 | Unless required by applicable law or agreed to in writing, software 16 | distributed under the License is distributed on an "AS IS" BASIS, 17 | WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 18 | See the License for the specific language governing permissions and 19 | limitations under the License. 20 | 21 | */ 22 | 23 | import onsElements from '../ons/elements'; 24 | import util from '../ons/util'; 25 | import autoStyle from '../ons/autostyle'; 26 | import ModifierUtil from '../ons/internal/modifier-util'; 27 | import BaseElement from './base/base-element'; 28 | 29 | var defaultClassName = 'list-header'; 30 | var scheme = { '': 'list-header--*' }; 31 | 32 | /** 33 | * @element ons-list-header 34 | * @category list 35 | * @description 36 | * [en]Header element for list items. Must be put inside the `` component.[/en] 37 | * [ja]リスト要素に使用するヘッダー用コンポーネント。ons-listと共に使用します。[/ja] 38 | * @seealso ons-list 39 | * [en]The `` component[/en] 40 | * [ja]ons-listコンポーネント[/ja] 41 | * @seealso ons-list-item 42 | * [en]The `` component[/en] 43 | * [ja]ons-list-itemコンポーネント[/ja] 44 | * @codepen yxcCt 45 | * @tutorial vanilla/Reference/list 46 | * @modifier material 47 | * [en]Display a Material Design list header.[/en] 48 | * [ja][/ja] 49 | * @example 50 | * 51 | * Header Text 52 | * Item 53 | * Item 54 | * 55 | */ 56 | 57 | var ListHeaderElement = function (_BaseElement) { 58 | _inherits(ListHeaderElement, _BaseElement); 59 | 60 | /** 61 | * @attribute modifier 62 | * @type {String} 63 | * @description 64 | * [en]The appearance of the list header.[/en] 65 | * [ja]ヘッダーの表現を指定します。[/ja] 66 | */ 67 | 68 | function ListHeaderElement() { 69 | _classCallCheck(this, ListHeaderElement); 70 | 71 | var _this = _possibleConstructorReturn(this, (ListHeaderElement.__proto__ || _Object$getPrototypeOf(ListHeaderElement)).call(this)); 72 | 73 | _this._compile(); 74 | return _this; 75 | } 76 | 77 | _createClass(ListHeaderElement, [{ 78 | key: '_compile', 79 | value: function _compile() { 80 | autoStyle.prepare(this); 81 | this.classList.add(defaultClassName); 82 | ModifierUtil.initModifier(this, scheme); 83 | } 84 | }, { 85 | key: 'attributeChangedCallback', 86 | value: function attributeChangedCallback(name, last, current) { 87 | switch (name) { 88 | case 'class': 89 | util.restoreClass(this, defaultClassName, scheme); 90 | break; 91 | case 'modifier': 92 | ModifierUtil.onModifierChanged(last, current, this, scheme); 93 | break; 94 | } 95 | } 96 | }], [{ 97 | key: 'observedAttributes', 98 | get: function get() { 99 | return ['modifier', 'class']; 100 | } 101 | }]); 102 | 103 | return ListHeaderElement; 104 | }(BaseElement); 105 | 106 | export default ListHeaderElement; 107 | 108 | 109 | onsElements.ListHeader = ListHeaderElement; 110 | customElements.define('ons-list-header', ListHeaderElement); -------------------------------------------------------------------------------- /code/cordova/spotcontroller/www/lib/OnsenUI/esm/elements/ons-list-title.js: -------------------------------------------------------------------------------- 1 | import _Object$getPrototypeOf from 'babel-runtime/core-js/object/get-prototype-of'; 2 | import _classCallCheck from 'babel-runtime/helpers/classCallCheck'; 3 | import _createClass from 'babel-runtime/helpers/createClass'; 4 | import _possibleConstructorReturn from 'babel-runtime/helpers/possibleConstructorReturn'; 5 | import _inherits from 'babel-runtime/helpers/inherits'; 6 | /* 7 | Copyright 2013-2015 ASIAL CORPORATION 8 | 9 | Licensed under the Apache License, Version 2.0 (the "License"); 10 | you may not use this file except in compliance with the License. 11 | You may obtain a copy of the License at 12 | 13 | http://www.apache.org/licenses/LICENSE-2.0 14 | 15 | Unless required by applicable law or agreed to in writing, software 16 | distributed under the License is distributed on an "AS IS" BASIS, 17 | WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 18 | See the License for the specific language governing permissions and 19 | limitations under the License. 20 | 21 | */ 22 | 23 | import onsElements from '../ons/elements'; 24 | import BaseElement from './base/base-element'; 25 | import autoStyle from '../ons/autostyle'; 26 | import ModifierUtil from '../ons/internal/modifier-util'; 27 | import util from '../ons/util'; 28 | 29 | var defaultClassName = 'list-title'; 30 | var scheme = { '': 'list-title--*' }; 31 | 32 | /** 33 | * @element ons-list-title 34 | * @category list 35 | * @description 36 | * [en]Represents a list title.[/en] 37 | * [ja]リストのタイトルを表現します。[/ja] 38 | * @example 39 | * List Title 40 | * 41 | * Item 42 | * 43 | * @modifier material 44 | * [en]Display a Material Design list title.[/en] 45 | * [ja][/ja] 46 | */ 47 | 48 | var ListTitleElement = function (_BaseElement) { 49 | _inherits(ListTitleElement, _BaseElement); 50 | 51 | function ListTitleElement() { 52 | _classCallCheck(this, ListTitleElement); 53 | 54 | var _this = _possibleConstructorReturn(this, (ListTitleElement.__proto__ || _Object$getPrototypeOf(ListTitleElement)).call(this)); 55 | 56 | _this._compile(); 57 | return _this; 58 | } 59 | 60 | _createClass(ListTitleElement, [{ 61 | key: '_compile', 62 | value: function _compile() { 63 | autoStyle.prepare(this); 64 | this.classList.add(defaultClassName); 65 | ModifierUtil.initModifier(this, scheme); 66 | } 67 | }, { 68 | key: 'attributeChangedCallback', 69 | value: function attributeChangedCallback(name, last, current) { 70 | switch (name) { 71 | case 'class': 72 | util.restoreClass(this, defaultClassName, scheme); 73 | break; 74 | case 'modifier': 75 | ModifierUtil.onModifierChanged(last, current, this, scheme); 76 | break; 77 | } 78 | } 79 | }], [{ 80 | key: 'observedAttributes', 81 | get: function get() { 82 | return ['modifier', 'class']; 83 | } 84 | }]); 85 | 86 | return ListTitleElement; 87 | }(BaseElement); 88 | 89 | export default ListTitleElement; 90 | 91 | 92 | onsElements.ListTitle = ListTitleElement; 93 | customElements.define('ons-list-title', ListTitleElement); -------------------------------------------------------------------------------- /code/cordova/spotcontroller/www/lib/OnsenUI/esm/elements/ons-modal/animator.js: -------------------------------------------------------------------------------- 1 | import _Object$getPrototypeOf from 'babel-runtime/core-js/object/get-prototype-of'; 2 | import _classCallCheck from 'babel-runtime/helpers/classCallCheck'; 3 | import _createClass from 'babel-runtime/helpers/createClass'; 4 | import _possibleConstructorReturn from 'babel-runtime/helpers/possibleConstructorReturn'; 5 | import _inherits from 'babel-runtime/helpers/inherits'; 6 | /* 7 | Copyright 2013-2015 ASIAL CORPORATION 8 | 9 | Licensed under the Apache License, Version 2.0 (the "License"); 10 | you may not use this file except in compliance with the License. 11 | You may obtain a copy of the License at 12 | 13 | http://www.apache.org/licenses/LICENSE-2.0 14 | 15 | Unless required by applicable law or agreed to in writing, software 16 | distributed under the License is distributed on an "AS IS" BASIS, 17 | WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 18 | See the License for the specific language governing permissions and 19 | limitations under the License. 20 | 21 | */ 22 | 23 | import BaseAnimator from '../../ons/base-animator'; 24 | 25 | var ModalAnimator = function (_BaseAnimator) { 26 | _inherits(ModalAnimator, _BaseAnimator); 27 | 28 | /** 29 | * @param {Object} options 30 | * @param {String} options.timing 31 | * @param {Number} options.duration 32 | * @param {Number} options.delay 33 | */ 34 | function ModalAnimator() { 35 | var _ref = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {}, 36 | _ref$timing = _ref.timing, 37 | timing = _ref$timing === undefined ? 'linear' : _ref$timing, 38 | _ref$delay = _ref.delay, 39 | delay = _ref$delay === undefined ? 0 : _ref$delay, 40 | _ref$duration = _ref.duration, 41 | duration = _ref$duration === undefined ? 0.2 : _ref$duration; 42 | 43 | _classCallCheck(this, ModalAnimator); 44 | 45 | return _possibleConstructorReturn(this, (ModalAnimator.__proto__ || _Object$getPrototypeOf(ModalAnimator)).call(this, { timing: timing, delay: delay, duration: duration })); 46 | } 47 | 48 | /** 49 | * @param {HTMLElement} modal 50 | * @param {Function} callback 51 | */ 52 | 53 | 54 | _createClass(ModalAnimator, [{ 55 | key: 'show', 56 | value: function show(modal, callback) { 57 | callback(); 58 | } 59 | 60 | /** 61 | * @param {HTMLElement} modal 62 | * @param {Function} callback 63 | */ 64 | 65 | }, { 66 | key: 'hide', 67 | value: function hide(modal, callback) { 68 | callback(); 69 | } 70 | }]); 71 | 72 | return ModalAnimator; 73 | }(BaseAnimator); 74 | 75 | export default ModalAnimator; -------------------------------------------------------------------------------- /code/cordova/spotcontroller/www/lib/OnsenUI/esm/elements/ons-modal/fade-animator.js: -------------------------------------------------------------------------------- 1 | import _Object$getPrototypeOf from 'babel-runtime/core-js/object/get-prototype-of'; 2 | import _classCallCheck from 'babel-runtime/helpers/classCallCheck'; 3 | import _createClass from 'babel-runtime/helpers/createClass'; 4 | import _possibleConstructorReturn from 'babel-runtime/helpers/possibleConstructorReturn'; 5 | import _inherits from 'babel-runtime/helpers/inherits'; 6 | 7 | /* 8 | Copyright 2013-2015 ASIAL CORPORATION 9 | 10 | Licensed under the Apache License, Version 2.0 (the "License"); 11 | you may not use this file except in compliance with the License. 12 | You may obtain a copy of the License at 13 | 14 | http://www.apache.org/licenses/LICENSE-2.0 15 | 16 | Unless required by applicable law or agreed to in writing, software 17 | distributed under the License is distributed on an "AS IS" BASIS, 18 | WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 19 | See the License for the specific language governing permissions and 20 | limitations under the License. 21 | 22 | */ 23 | 24 | import animit from '../../ons/animit'; 25 | import ModalAnimator from './animator'; 26 | 27 | /** 28 | * iOS style animator for dialog. 29 | */ 30 | 31 | var FadeModalAnimator = function (_ModalAnimator) { 32 | _inherits(FadeModalAnimator, _ModalAnimator); 33 | 34 | function FadeModalAnimator() { 35 | var _ref = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {}, 36 | _ref$timing = _ref.timing, 37 | timing = _ref$timing === undefined ? 'linear' : _ref$timing, 38 | _ref$delay = _ref.delay, 39 | delay = _ref$delay === undefined ? 0 : _ref$delay, 40 | _ref$duration = _ref.duration, 41 | duration = _ref$duration === undefined ? 0.3 : _ref$duration; 42 | 43 | _classCallCheck(this, FadeModalAnimator); 44 | 45 | return _possibleConstructorReturn(this, (FadeModalAnimator.__proto__ || _Object$getPrototypeOf(FadeModalAnimator)).call(this, { timing: timing, delay: delay, duration: duration })); 46 | } 47 | 48 | /** 49 | * @param {HTMLElement} modal 50 | * @param {Function} callback 51 | */ 52 | 53 | 54 | _createClass(FadeModalAnimator, [{ 55 | key: 'show', 56 | value: function show(modal, callback) { 57 | callback = callback ? callback : function () {}; 58 | 59 | animit(modal, this.def).default({ opacity: 0 }, { opacity: 1 }).queue(function (done) { 60 | callback(); 61 | done(); 62 | }).play(); 63 | } 64 | 65 | /** 66 | * @param {HTMLElement} modal 67 | * @param {Function} callback 68 | */ 69 | 70 | }, { 71 | key: 'hide', 72 | value: function hide(modal, callback) { 73 | callback = callback ? callback : function () {}; 74 | 75 | animit(modal, this.def).default({ opacity: 1 }, { opacity: 0 }).queue(function (done) { 76 | callback(); 77 | done(); 78 | }).play(); 79 | } 80 | }]); 81 | 82 | return FadeModalAnimator; 83 | }(ModalAnimator); 84 | 85 | export default FadeModalAnimator; -------------------------------------------------------------------------------- /code/cordova/spotcontroller/www/lib/OnsenUI/esm/elements/ons-modal/lift-animator.js: -------------------------------------------------------------------------------- 1 | import _Object$getPrototypeOf from 'babel-runtime/core-js/object/get-prototype-of'; 2 | import _classCallCheck from 'babel-runtime/helpers/classCallCheck'; 3 | import _createClass from 'babel-runtime/helpers/createClass'; 4 | import _possibleConstructorReturn from 'babel-runtime/helpers/possibleConstructorReturn'; 5 | import _inherits from 'babel-runtime/helpers/inherits'; 6 | /* 7 | Copyright 2013-2015 ASIAL CORPORATION 8 | 9 | Licensed under the Apache License, Version 2.0 (the "License"); 10 | you may not use this file except in compliance with the License. 11 | You may obtain a copy of the License at 12 | 13 | http://www.apache.org/licenses/LICENSE-2.0 14 | 15 | Unless required by applicable law or agreed to in writing, software 16 | distributed under the License is distributed on an "AS IS" BASIS, 17 | WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 18 | See the License for the specific language governing permissions and 19 | limitations under the License. 20 | 21 | */ 22 | 23 | import animit from '../../ons/animit'; 24 | import ModalAnimator from './animator'; 25 | 26 | /** 27 | * iOS style animator for modal. 28 | */ 29 | 30 | var LiftModalAnimator = function (_ModalAnimator) { 31 | _inherits(LiftModalAnimator, _ModalAnimator); 32 | 33 | function LiftModalAnimator() { 34 | var _ref = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {}, 35 | _ref$timing = _ref.timing, 36 | timing = _ref$timing === undefined ? 'cubic-bezier( .1, .7, .1, 1)' : _ref$timing, 37 | _ref$delay = _ref.delay, 38 | delay = _ref$delay === undefined ? 0 : _ref$delay, 39 | _ref$duration = _ref.duration, 40 | duration = _ref$duration === undefined ? 0.4 : _ref$duration; 41 | 42 | _classCallCheck(this, LiftModalAnimator); 43 | 44 | return _possibleConstructorReturn(this, (LiftModalAnimator.__proto__ || _Object$getPrototypeOf(LiftModalAnimator)).call(this, { timing: timing, delay: delay, duration: duration })); 45 | } 46 | 47 | /** 48 | * @param {HTMLElement} modal 49 | * @param {Function} callback 50 | */ 51 | 52 | 53 | _createClass(LiftModalAnimator, [{ 54 | key: 'show', 55 | value: function show(modal, callback) { 56 | callback = callback ? callback : function () {}; 57 | 58 | animit(modal, this.def).default({ transform: 'translate3d(0, 100%, 0)' }, { transform: 'translate3d(0, 0, 0)' }).queue(function (done) { 59 | callback(); 60 | done(); 61 | }).play(); 62 | } 63 | 64 | /** 65 | * @param {HTMLElement} modal 66 | * @param {Function} callback 67 | */ 68 | 69 | }, { 70 | key: 'hide', 71 | value: function hide(modal, callback) { 72 | callback = callback ? callback : function () {}; 73 | 74 | animit(modal, this.def).default({ transform: 'translate3d(0, 0, 0)' }, { transform: 'translate3d(0, 100%, 0)' }).queue(function (done) { 75 | callback(); 76 | done(); 77 | }).play(); 78 | } 79 | }]); 80 | 81 | return LiftModalAnimator; 82 | }(ModalAnimator); 83 | 84 | export default LiftModalAnimator; -------------------------------------------------------------------------------- /code/cordova/spotcontroller/www/lib/OnsenUI/esm/elements/ons-navigator/animator.js: -------------------------------------------------------------------------------- 1 | import _Object$getPrototypeOf from 'babel-runtime/core-js/object/get-prototype-of'; 2 | import _classCallCheck from 'babel-runtime/helpers/classCallCheck'; 3 | import _createClass from 'babel-runtime/helpers/createClass'; 4 | import _possibleConstructorReturn from 'babel-runtime/helpers/possibleConstructorReturn'; 5 | import _inherits from 'babel-runtime/helpers/inherits'; 6 | /* 7 | Copyright 2013-2015 ASIAL CORPORATION 8 | 9 | Licensed under the Apache License, Version 2.0 (the "License"); 10 | you may not use this file except in compliance with the License. 11 | You may obtain a copy of the License at 12 | 13 | http://www.apache.org/licenses/LICENSE-2.0 14 | 15 | Unless required by applicable law or agreed to in writing, software 16 | distributed under the License is distributed on an "AS IS" BASIS, 17 | WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 18 | See the License for the specific language governing permissions and 19 | limitations under the License. 20 | 21 | */ 22 | 23 | import util from '../../ons/util'; 24 | import BaseAnimator from '../../ons/base-animator'; 25 | 26 | var NavigatorAnimator = function (_BaseAnimator) { 27 | _inherits(NavigatorAnimator, _BaseAnimator); 28 | 29 | /** 30 | * @param {Object} options 31 | * @param {String} options.timing 32 | * @param {Number} options.duration 33 | * @param {Number} options.delay 34 | */ 35 | function NavigatorAnimator(options) { 36 | _classCallCheck(this, NavigatorAnimator); 37 | 38 | options = util.extend({ 39 | timing: 'linear', 40 | duration: '0.4', 41 | delay: '0' 42 | }, options || {}); 43 | 44 | return _possibleConstructorReturn(this, (NavigatorAnimator.__proto__ || _Object$getPrototypeOf(NavigatorAnimator)).call(this, options)); 45 | } 46 | 47 | _createClass(NavigatorAnimator, [{ 48 | key: 'push', 49 | value: function push(enterPage, leavePage, callback) { 50 | callback(); 51 | } 52 | }, { 53 | key: 'pop', 54 | value: function pop(enterPage, leavePage, callback) { 55 | callback(); 56 | } 57 | }, { 58 | key: 'block', 59 | value: function block(page) { 60 | var blocker = util.createElement('\n
\n '); 61 | page.parentNode.appendChild(blocker); 62 | return function () { 63 | return blocker.remove(); 64 | }; 65 | } 66 | }]); 67 | 68 | return NavigatorAnimator; 69 | }(BaseAnimator); 70 | 71 | export default NavigatorAnimator; -------------------------------------------------------------------------------- /code/cordova/spotcontroller/www/lib/OnsenUI/esm/elements/ons-navigator/ios-fade-animator.js: -------------------------------------------------------------------------------- 1 | import _Object$getPrototypeOf from 'babel-runtime/core-js/object/get-prototype-of'; 2 | import _classCallCheck from 'babel-runtime/helpers/classCallCheck'; 3 | import _createClass from 'babel-runtime/helpers/createClass'; 4 | import _possibleConstructorReturn from 'babel-runtime/helpers/possibleConstructorReturn'; 5 | import _get from 'babel-runtime/helpers/get'; 6 | import _inherits from 'babel-runtime/helpers/inherits'; 7 | /* 8 | Copyright 2013-2015 ASIAL CORPORATION 9 | 10 | Licensed under the Apache License, Version 2.0 (the "License"); 11 | you may not use this file except in compliance with the License. 12 | You may obtain a copy of the License at 13 | 14 | http://www.apache.org/licenses/LICENSE-2.0 15 | 16 | Unless required by applicable law or agreed to in writing, software 17 | distributed under the License is distributed on an "AS IS" BASIS, 18 | WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 19 | See the License for the specific language governing permissions and 20 | limitations under the License. 21 | 22 | */ 23 | 24 | import NavigatorAnimator from './animator'; 25 | import util from '../../ons/util'; 26 | import animit from '../../ons/animit'; 27 | 28 | var transform = 'translate3d(0, 0, 0)'; 29 | 30 | /** 31 | * Fade-in screen transition. 32 | */ 33 | 34 | var IOSFadeNavigatorAnimator = function (_NavigatorAnimator) { 35 | _inherits(IOSFadeNavigatorAnimator, _NavigatorAnimator); 36 | 37 | function IOSFadeNavigatorAnimator() { 38 | var _ref = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {}, 39 | _ref$timing = _ref.timing, 40 | timing = _ref$timing === undefined ? 'linear' : _ref$timing, 41 | _ref$delay = _ref.delay, 42 | delay = _ref$delay === undefined ? 0 : _ref$delay, 43 | _ref$duration = _ref.duration, 44 | duration = _ref$duration === undefined ? 0.4 : _ref$duration; 45 | 46 | _classCallCheck(this, IOSFadeNavigatorAnimator); 47 | 48 | return _possibleConstructorReturn(this, (IOSFadeNavigatorAnimator.__proto__ || _Object$getPrototypeOf(IOSFadeNavigatorAnimator)).call(this, { timing: timing, delay: delay, duration: duration })); 49 | } 50 | 51 | /** 52 | * @param {Object} enterPage 53 | * @param {Object} leavePage 54 | * @param {Function} callback 55 | */ 56 | 57 | 58 | _createClass(IOSFadeNavigatorAnimator, [{ 59 | key: 'push', 60 | value: function push(enterPage, leavePage, callback) { 61 | var unblock = _get(IOSFadeNavigatorAnimator.prototype.__proto__ || _Object$getPrototypeOf(IOSFadeNavigatorAnimator.prototype), 'block', this).call(this, enterPage); 62 | 63 | animit.runAll(animit(enterPage, this.def).default({ transform: transform, opacity: 0 }, { transform: transform, opacity: 1 }).queue(function (done) { 64 | unblock(); 65 | callback(); 66 | done(); 67 | })); 68 | } 69 | 70 | /** 71 | * @param {Object} enterPage 72 | * @param {Object} leavePage 73 | * @param {Function} done 74 | */ 75 | 76 | }, { 77 | key: 'pop', 78 | value: function pop(enterPage, leavePage, callback) { 79 | var unblock = _get(IOSFadeNavigatorAnimator.prototype.__proto__ || _Object$getPrototypeOf(IOSFadeNavigatorAnimator.prototype), 'block', this).call(this, enterPage); 80 | 81 | animit.runAll(animit(leavePage, this.def).default({ transform: transform, opacity: 1 }, { transform: transform, opacity: 0 }).queue(function (done) { 82 | unblock(); 83 | callback(); 84 | done(); 85 | })); 86 | } 87 | }]); 88 | 89 | return IOSFadeNavigatorAnimator; 90 | }(NavigatorAnimator); 91 | 92 | export default IOSFadeNavigatorAnimator; -------------------------------------------------------------------------------- /code/cordova/spotcontroller/www/lib/OnsenUI/esm/elements/ons-navigator/md-fade-animator.js: -------------------------------------------------------------------------------- 1 | import _Object$getPrototypeOf from 'babel-runtime/core-js/object/get-prototype-of'; 2 | import _classCallCheck from 'babel-runtime/helpers/classCallCheck'; 3 | import _createClass from 'babel-runtime/helpers/createClass'; 4 | import _possibleConstructorReturn from 'babel-runtime/helpers/possibleConstructorReturn'; 5 | import _get from 'babel-runtime/helpers/get'; 6 | import _inherits from 'babel-runtime/helpers/inherits'; 7 | /* 8 | Copyright 2013-2015 ASIAL CORPORATION 9 | 10 | Licensed under the Apache License, Version 2.0 (the "License"); 11 | you may not use this file except in compliance with the License. 12 | You may obtain a copy of the License at 13 | 14 | http://www.apache.org/licenses/LICENSE-2.0 15 | 16 | Unless required by applicable law or agreed to in writing, software 17 | distributed under the License is distributed on an "AS IS" BASIS, 18 | WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 19 | See the License for the specific language governing permissions and 20 | limitations under the License. 21 | 22 | */ 23 | 24 | import NavigatorAnimator from './animator'; 25 | import util from '../../ons/util'; 26 | import animit from '../../ons/animit'; 27 | 28 | /** 29 | * Fade-in + Lift screen transition. 30 | */ 31 | 32 | var MDFadeNavigatorAnimator = function (_NavigatorAnimator) { 33 | _inherits(MDFadeNavigatorAnimator, _NavigatorAnimator); 34 | 35 | function MDFadeNavigatorAnimator() { 36 | var _ref = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {}, 37 | _ref$timing = _ref.timing, 38 | timing = _ref$timing === undefined ? 'cubic-bezier(0.4, 0, 0.2, 1)' : _ref$timing, 39 | _ref$timingPop = _ref.timingPop, 40 | timingPop = _ref$timingPop === undefined ? 'cubic-bezier(0.4, 0, 1, 1)' : _ref$timingPop, 41 | _ref$delay = _ref.delay, 42 | delay = _ref$delay === undefined ? 0 : _ref$delay, 43 | _ref$duration = _ref.duration, 44 | duration = _ref$duration === undefined ? 0.2 : _ref$duration; 45 | 46 | _classCallCheck(this, MDFadeNavigatorAnimator); 47 | 48 | var _this = _possibleConstructorReturn(this, (MDFadeNavigatorAnimator.__proto__ || _Object$getPrototypeOf(MDFadeNavigatorAnimator)).call(this, { timing: timing, delay: delay, duration: duration })); 49 | 50 | _this.timingPop = timingPop; 51 | return _this; 52 | } 53 | 54 | /** 55 | * @param {Object} enterPage 56 | * @param {Object} leavePage 57 | * @param {Function} callback 58 | */ 59 | 60 | 61 | _createClass(MDFadeNavigatorAnimator, [{ 62 | key: 'push', 63 | value: function push(enterPage, leavePage, callback) { 64 | var unblock = _get(MDFadeNavigatorAnimator.prototype.__proto__ || _Object$getPrototypeOf(MDFadeNavigatorAnimator.prototype), 'block', this).call(this, enterPage); 65 | 66 | animit.runAll(animit(enterPage, this.def).default({ transform: 'translate3D(0, 42px, 0)', opacity: 0 }, { transform: 'translate3D(0, 0, 0)', opacity: 1 }).queue(function (done) { 67 | unblock(); 68 | callback(); 69 | done(); 70 | })); 71 | } 72 | 73 | /** 74 | * @param {Object} enterPage 75 | * @param {Object} leavePage 76 | * @param {Function} done 77 | */ 78 | 79 | }, { 80 | key: 'pop', 81 | value: function pop(enterPage, leavePage, callback) { 82 | var unblock = _get(MDFadeNavigatorAnimator.prototype.__proto__ || _Object$getPrototypeOf(MDFadeNavigatorAnimator.prototype), 'block', this).call(this, enterPage); 83 | 84 | animit.runAll(animit(leavePage, this.def).default({ transform: 'translate3D(0, 0, 0)', opacity: 1 }, { css: { transform: 'translate3D(0, 38px, 0)', opacity: 0 }, timing: this.timingPop }).queue(function (done) { 85 | unblock(); 86 | callback(); 87 | done(); 88 | })); 89 | } 90 | }]); 91 | 92 | return MDFadeNavigatorAnimator; 93 | }(NavigatorAnimator); 94 | 95 | export default MDFadeNavigatorAnimator; -------------------------------------------------------------------------------- /code/cordova/spotcontroller/www/lib/OnsenUI/esm/elements/ons-navigator/none-animator.js: -------------------------------------------------------------------------------- 1 | import _Object$getPrototypeOf from 'babel-runtime/core-js/object/get-prototype-of'; 2 | import _classCallCheck from 'babel-runtime/helpers/classCallCheck'; 3 | import _createClass from 'babel-runtime/helpers/createClass'; 4 | import _possibleConstructorReturn from 'babel-runtime/helpers/possibleConstructorReturn'; 5 | import _inherits from 'babel-runtime/helpers/inherits'; 6 | /* 7 | Copyright 2013-2015 ASIAL CORPORATION 8 | 9 | Licensed under the Apache License, Version 2.0 (the "License"); 10 | you may not use this file except in compliance with the License. 11 | You may obtain a copy of the License at 12 | 13 | http://www.apache.org/licenses/LICENSE-2.0 14 | 15 | Unless required by applicable law or agreed to in writing, software 16 | distributed under the License is distributed on an "AS IS" BASIS, 17 | WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 18 | See the License for the specific language governing permissions and 19 | limitations under the License. 20 | 21 | */ 22 | 23 | import NavigatorAnimator from './animator'; 24 | 25 | var NoneNavigatorAnimator = function (_NavigatorAnimator) { 26 | _inherits(NoneNavigatorAnimator, _NavigatorAnimator); 27 | 28 | function NoneNavigatorAnimator(options) { 29 | _classCallCheck(this, NoneNavigatorAnimator); 30 | 31 | return _possibleConstructorReturn(this, (NoneNavigatorAnimator.__proto__ || _Object$getPrototypeOf(NoneNavigatorAnimator)).call(this, options)); 32 | } 33 | 34 | _createClass(NoneNavigatorAnimator, [{ 35 | key: 'push', 36 | value: function push(enterPage, leavePage, callback) { 37 | callback(); 38 | } 39 | }, { 40 | key: 'pop', 41 | value: function pop(enterPage, leavePage, callback) { 42 | callback(); 43 | } 44 | }]); 45 | 46 | return NoneNavigatorAnimator; 47 | }(NavigatorAnimator); 48 | 49 | export default NoneNavigatorAnimator; -------------------------------------------------------------------------------- /code/cordova/spotcontroller/www/lib/OnsenUI/esm/elements/ons-row.js: -------------------------------------------------------------------------------- 1 | import _Object$getPrototypeOf from 'babel-runtime/core-js/object/get-prototype-of'; 2 | import _classCallCheck from 'babel-runtime/helpers/classCallCheck'; 3 | import _possibleConstructorReturn from 'babel-runtime/helpers/possibleConstructorReturn'; 4 | import _inherits from 'babel-runtime/helpers/inherits'; 5 | /* 6 | Copyright 2013-2015 ASIAL CORPORATION 7 | 8 | Licensed under the Apache License, Version 2.0 (the "License"); 9 | you may not use this file except in compliance with the License. 10 | You may obtain a copy of the License at 11 | 12 | http://www.apache.org/licenses/LICENSE-2.0 13 | 14 | Unless required by applicable law or agreed to in writing, software 15 | distributed under the License is distributed on an "AS IS" BASIS, 16 | WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 17 | See the License for the specific language governing permissions and 18 | limitations under the License. 19 | 20 | */ 21 | 22 | import onsElements from '../ons/elements'; 23 | import BaseElement from './base/base-element'; 24 | 25 | /** 26 | * @element ons-row 27 | * @category grid 28 | * @description 29 | * [en]Represents a row in the grid system. Use with `` to layout components.[/en] 30 | * [ja]グリッドシステムにて行を定義します。ons-colとともに使用し、コンポーネントの配置に使用します。[/ja] 31 | * @codepen GgujC {wide} 32 | * @guide theming.html 33 | * [en]Layouting guide[/en] 34 | * [ja]レイアウト調整[/ja] 35 | * @seealso ons-col 36 | * [en]The `` component is used as children of ``.[/en] 37 | * [ja]ons-colコンポーネント[/ja] 38 | * @note 39 | * [en]For Android 4.3 and earlier, and iOS6 and earlier, when using mixed alignment with ons-row and ons-col, they may not be displayed correctly. You can use only one vertical-align.[/en] 40 | * [ja]Android 4.3以前、もしくはiOS 6以前のOSの場合、ons-rowとons-colを組み合わせてそれぞれのons-col要素のvertical-align属性の値に別々の値を指定すると、描画が崩れる場合があります。vertical-align属性の値には一つの値だけを指定できます。[/ja] 41 | * @example 42 | * 43 | * 44 | * Text 45 | * 46 | */ 47 | 48 | /** 49 | * @attribute vertical-align 50 | * @type {String} 51 | * @description 52 | * [en]Short hand attribute for aligning vertically. Valid values are top, bottom, and center.[/en] 53 | * [ja]縦に整列するために指定します。top、bottom、centerのいずれかを指定できます。[/ja] 54 | */ 55 | 56 | var RowElement = function (_BaseElement) { 57 | _inherits(RowElement, _BaseElement); 58 | 59 | function RowElement() { 60 | _classCallCheck(this, RowElement); 61 | 62 | return _possibleConstructorReturn(this, (RowElement.__proto__ || _Object$getPrototypeOf(RowElement)).apply(this, arguments)); 63 | } 64 | 65 | return RowElement; 66 | }(BaseElement); 67 | 68 | export default RowElement; 69 | 70 | 71 | onsElements.Row = RowElement; 72 | customElements.define('ons-row', RowElement); -------------------------------------------------------------------------------- /code/cordova/spotcontroller/www/lib/OnsenUI/esm/elements/ons-splitter-mask.js: -------------------------------------------------------------------------------- 1 | import _Object$getPrototypeOf from 'babel-runtime/core-js/object/get-prototype-of'; 2 | import _classCallCheck from 'babel-runtime/helpers/classCallCheck'; 3 | import _createClass from 'babel-runtime/helpers/createClass'; 4 | import _possibleConstructorReturn from 'babel-runtime/helpers/possibleConstructorReturn'; 5 | import _inherits from 'babel-runtime/helpers/inherits'; 6 | /* 7 | Copyright 2013-2015 ASIAL CORPORATION 8 | 9 | Licensed under the Apache License, Version 2.0 (the "License"); 10 | you may not use this file except in compliance with the License. 11 | You may obtain a copy of the License at 12 | 13 | http://www.apache.org/licenses/LICENSE-2.0 14 | 15 | Unless required by applicable law or agreed to in writing, software 16 | distributed under the License is distributed on an "AS IS" BASIS, 17 | WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 18 | See the License for the specific language governing permissions and 19 | limitations under the License. 20 | 21 | */ 22 | 23 | import onsElements from '../ons/elements'; 24 | import BaseElement from './base/base-element'; 25 | import util from '../ons/util'; 26 | import contentReady from '../ons/content-ready'; 27 | 28 | var SplitterMaskElement = function (_BaseElement) { 29 | _inherits(SplitterMaskElement, _BaseElement); 30 | 31 | function SplitterMaskElement() { 32 | _classCallCheck(this, SplitterMaskElement); 33 | 34 | var _this = _possibleConstructorReturn(this, (SplitterMaskElement.__proto__ || _Object$getPrototypeOf(SplitterMaskElement)).call(this)); 35 | 36 | _this._boundOnClick = _this._onClick.bind(_this); 37 | contentReady(_this, function () { 38 | if (_this.parentNode._sides.every(function (side) { 39 | return side.mode === 'split'; 40 | })) { 41 | _this.setAttribute('style', 'display: none !important'); 42 | } 43 | }); 44 | return _this; 45 | } 46 | 47 | _createClass(SplitterMaskElement, [{ 48 | key: '_onClick', 49 | value: function _onClick(event) { 50 | if (this.onClick instanceof Function) { 51 | this.onClick(); 52 | } else if (util.match(this.parentNode, 'ons-splitter')) { 53 | this.parentNode._sides.forEach(function (side) { 54 | return side.close('left').catch(function () {}); 55 | }); 56 | } 57 | event.stopPropagation(); 58 | } 59 | }, { 60 | key: 'attributeChangedCallback', 61 | value: function attributeChangedCallback(name, last, current) {} 62 | }, { 63 | key: 'connectedCallback', 64 | value: function connectedCallback() { 65 | this.addEventListener('click', this._boundOnClick); 66 | util.iosMaskScrollFix(this, true); 67 | } 68 | }, { 69 | key: 'disconnectedCallback', 70 | value: function disconnectedCallback() { 71 | this.removeEventListener('click', this._boundOnClick); 72 | util.iosMaskScrollFix(this, false); 73 | } 74 | }], [{ 75 | key: 'observedAttributes', 76 | get: function get() { 77 | return []; 78 | } 79 | }]); 80 | 81 | return SplitterMaskElement; 82 | }(BaseElement); 83 | 84 | export default SplitterMaskElement; 85 | 86 | 87 | onsElements.SplitterMask = SplitterMaskElement; 88 | customElements.define('ons-splitter-mask', SplitterMaskElement); -------------------------------------------------------------------------------- /code/cordova/spotcontroller/www/lib/OnsenUI/esm/elements/ons-splitter/overlay-animator.js: -------------------------------------------------------------------------------- 1 | import _Object$getPrototypeOf from 'babel-runtime/core-js/object/get-prototype-of'; 2 | import _classCallCheck from 'babel-runtime/helpers/classCallCheck'; 3 | import _createClass from 'babel-runtime/helpers/createClass'; 4 | import _possibleConstructorReturn from 'babel-runtime/helpers/possibleConstructorReturn'; 5 | import _inherits from 'babel-runtime/helpers/inherits'; 6 | /* 7 | Copyright 2013-2015 ASIAL CORPORATION 8 | 9 | Licensed under the Apache License, Version 2.0 (the "License"); 10 | you may not use this file except in compliance with the License. 11 | You may obtain a copy of the License at 12 | 13 | http://www.apache.org/licenses/LICENSE-2.0 14 | 15 | Unless required by applicable law or agreed to in writing, software 16 | distributed under the License is distributed on an "AS IS" BASIS, 17 | WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 18 | See the License for the specific language governing permissions and 19 | limitations under the License. 20 | 21 | */ 22 | 23 | import animit from '../../ons/animit'; 24 | import SplitterAnimator from './animator.js'; 25 | 26 | var OverlaySplitterAnimator = function (_SplitterAnimator) { 27 | _inherits(OverlaySplitterAnimator, _SplitterAnimator); 28 | 29 | function OverlaySplitterAnimator() { 30 | _classCallCheck(this, OverlaySplitterAnimator); 31 | 32 | return _possibleConstructorReturn(this, (OverlaySplitterAnimator.__proto__ || _Object$getPrototypeOf(OverlaySplitterAnimator)).apply(this, arguments)); 33 | } 34 | 35 | _createClass(OverlaySplitterAnimator, [{ 36 | key: 'translate', 37 | value: function translate(distance) { 38 | this._mask.style.display = 'block'; // Avoid content clicks 39 | 40 | animit(this._side).queue({ 41 | transform: 'translate3d(' + (this.minus + distance) + 'px, 0, 0)' 42 | }).play(); 43 | } 44 | 45 | /** 46 | * @param {Function} done 47 | */ 48 | 49 | }, { 50 | key: 'open', 51 | value: function open(done) { 52 | animit.runAll(animit(this._side).wait(this.delay).queue({ 53 | transform: 'translate3d(' + this.minus + '100%, 0, 0)' 54 | }, this.def).queue(function (callback) { 55 | callback(); 56 | done && done(); 57 | }), animit(this._mask).wait(this.delay).queue({ 58 | display: 'block' 59 | }).queue({ 60 | opacity: '1' 61 | }, { 62 | duration: this.duration, 63 | timing: 'linear' 64 | })); 65 | } 66 | 67 | /** 68 | * @param {Function} done 69 | */ 70 | 71 | }, { 72 | key: 'close', 73 | value: function close(done) { 74 | 75 | animit.runAll(animit(this._side).wait(this.delay).queue({ 76 | transform: 'translate3d(0, 0, 0)' 77 | }, this.def).queue(function (callback) { 78 | done && done(); 79 | callback(); 80 | }), animit(this._mask).wait(this.delay).queue({ 81 | opacity: '0' 82 | }, { 83 | duration: this.duration, 84 | timing: 'linear' 85 | }).queue({ 86 | display: 'none' 87 | })); 88 | } 89 | }]); 90 | 91 | return OverlaySplitterAnimator; 92 | }(SplitterAnimator); 93 | 94 | export default OverlaySplitterAnimator; -------------------------------------------------------------------------------- /code/cordova/spotcontroller/www/lib/OnsenUI/esm/elements/ons-toast/animator.js: -------------------------------------------------------------------------------- 1 | import _Object$getPrototypeOf from 'babel-runtime/core-js/object/get-prototype-of'; 2 | import _classCallCheck from 'babel-runtime/helpers/classCallCheck'; 3 | import _createClass from 'babel-runtime/helpers/createClass'; 4 | import _possibleConstructorReturn from 'babel-runtime/helpers/possibleConstructorReturn'; 5 | import _inherits from 'babel-runtime/helpers/inherits'; 6 | /* 7 | Copyright 2013-2015 ASIAL CORPORATION 8 | 9 | Licensed under the Apache License, Version 2.0 (the "License"); 10 | you may not use this file except in compliance with the License. 11 | You may obtain a copy of the License at 12 | 13 | http://www.apache.org/licenses/LICENSE-2.0 14 | 15 | Unless required by applicable law or agreed to in writing, software 16 | distributed under the License is distributed on an "AS IS" BASIS, 17 | WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 18 | See the License for the specific language governing permissions and 19 | limitations under the License. 20 | 21 | */ 22 | 23 | import BaseAnimator from '../../ons/base-animator'; 24 | 25 | var ToastAnimator = function (_BaseAnimator) { 26 | _inherits(ToastAnimator, _BaseAnimator); 27 | 28 | /** 29 | * @param {Object} options 30 | * @param {String} options.timing 31 | * @param {Number} options.duration 32 | * @param {Number} options.delay 33 | */ 34 | function ToastAnimator() { 35 | var _ref = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {}, 36 | _ref$timing = _ref.timing, 37 | timing = _ref$timing === undefined ? 'linear' : _ref$timing, 38 | _ref$delay = _ref.delay, 39 | delay = _ref$delay === undefined ? 0 : _ref$delay, 40 | _ref$duration = _ref.duration, 41 | duration = _ref$duration === undefined ? 0.2 : _ref$duration; 42 | 43 | _classCallCheck(this, ToastAnimator); 44 | 45 | return _possibleConstructorReturn(this, (ToastAnimator.__proto__ || _Object$getPrototypeOf(ToastAnimator)).call(this, { timing: timing, delay: delay, duration: duration })); 46 | } 47 | 48 | /** 49 | * @param {HTMLElement} modal 50 | * @param {Function} callback 51 | */ 52 | 53 | 54 | _createClass(ToastAnimator, [{ 55 | key: 'show', 56 | value: function show(modal, callback) { 57 | callback(); 58 | } 59 | 60 | /** 61 | * @param {HTMLElement} modal 62 | * @param {Function} callback 63 | */ 64 | 65 | }, { 66 | key: 'hide', 67 | value: function hide(modal, callback) { 68 | callback(); 69 | } 70 | }]); 71 | 72 | return ToastAnimator; 73 | }(BaseAnimator); 74 | 75 | export default ToastAnimator; -------------------------------------------------------------------------------- /code/cordova/spotcontroller/www/lib/OnsenUI/esm/elements/ons-toast/fade-animator.js: -------------------------------------------------------------------------------- 1 | import _Object$getPrototypeOf from 'babel-runtime/core-js/object/get-prototype-of'; 2 | import _classCallCheck from 'babel-runtime/helpers/classCallCheck'; 3 | import _createClass from 'babel-runtime/helpers/createClass'; 4 | import _possibleConstructorReturn from 'babel-runtime/helpers/possibleConstructorReturn'; 5 | import _inherits from 'babel-runtime/helpers/inherits'; 6 | 7 | /* 8 | Copyright 2013-2015 ASIAL CORPORATION 9 | 10 | Licensed under the Apache License, Version 2.0 (the "License"); 11 | you may not use this file except in compliance with the License. 12 | You may obtain a copy of the License at 13 | 14 | http://www.apache.org/licenses/LICENSE-2.0 15 | 16 | Unless required by applicable law or agreed to in writing, software 17 | distributed under the License is distributed on an "AS IS" BASIS, 18 | WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 19 | See the License for the specific language governing permissions and 20 | limitations under the License. 21 | 22 | */ 23 | 24 | import animit from '../../ons/animit'; 25 | import ToastAnimator from './animator'; 26 | 27 | /** 28 | * iOS style animator for dialog. 29 | */ 30 | 31 | var FadeToastAnimator = function (_ToastAnimator) { 32 | _inherits(FadeToastAnimator, _ToastAnimator); 33 | 34 | function FadeToastAnimator() { 35 | var _ref = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {}, 36 | _ref$timing = _ref.timing, 37 | timing = _ref$timing === undefined ? 'linear' : _ref$timing, 38 | _ref$delay = _ref.delay, 39 | delay = _ref$delay === undefined ? 0 : _ref$delay, 40 | _ref$duration = _ref.duration, 41 | duration = _ref$duration === undefined ? 0.3 : _ref$duration; 42 | 43 | _classCallCheck(this, FadeToastAnimator); 44 | 45 | return _possibleConstructorReturn(this, (FadeToastAnimator.__proto__ || _Object$getPrototypeOf(FadeToastAnimator)).call(this, { timing: timing, delay: delay, duration: duration })); 46 | } 47 | 48 | /** 49 | * @param {HTMLElement} toast 50 | * @param {Function} callback 51 | */ 52 | 53 | 54 | _createClass(FadeToastAnimator, [{ 55 | key: 'show', 56 | value: function show(toast, callback) { 57 | callback = callback ? callback : function () {}; 58 | 59 | animit(toast, this.def).default({ opacity: 0 }, { opacity: 1 }).queue(function (done) { 60 | callback(); 61 | done(); 62 | }).play(); 63 | } 64 | 65 | /** 66 | * @param {HTMLElement} toast 67 | * @param {Function} callback 68 | */ 69 | 70 | }, { 71 | key: 'hide', 72 | value: function hide(toast, callback) { 73 | callback = callback ? callback : function () {}; 74 | 75 | animit(toast, this.def).default({ opacity: 1 }, { opacity: 0 }).queue(function (done) { 76 | callback(); 77 | done(); 78 | }).play(); 79 | } 80 | }]); 81 | 82 | return FadeToastAnimator; 83 | }(ToastAnimator); 84 | 85 | export default FadeToastAnimator; -------------------------------------------------------------------------------- /code/cordova/spotcontroller/www/lib/OnsenUI/esm/elements/ons-toast/lift-animator.js: -------------------------------------------------------------------------------- 1 | import _Object$getPrototypeOf from 'babel-runtime/core-js/object/get-prototype-of'; 2 | import _classCallCheck from 'babel-runtime/helpers/classCallCheck'; 3 | import _createClass from 'babel-runtime/helpers/createClass'; 4 | import _possibleConstructorReturn from 'babel-runtime/helpers/possibleConstructorReturn'; 5 | import _inherits from 'babel-runtime/helpers/inherits'; 6 | 7 | /* 8 | Copyright 2013-2015 ASIAL CORPORATION 9 | 10 | Licensed under the Apache License, Version 2.0 (the "License"); 11 | you may not use this file except in compliance with the License. 12 | You may obtain a copy of the License at 13 | 14 | http://www.apache.org/licenses/LICENSE-2.0 15 | 16 | Unless required by applicable law or agreed to in writing, software 17 | distributed under the License is distributed on an "AS IS" BASIS, 18 | WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 19 | See the License for the specific language governing permissions and 20 | limitations under the License. 21 | 22 | */ 23 | 24 | import util from '../../ons/util'; 25 | import animit from '../../ons/animit'; 26 | import iPhoneXPatch from '../../ons/iphonex-patch'; 27 | import ToastAnimator from './animator'; 28 | 29 | /** 30 | * Lift-fade Toast Animator 31 | */ 32 | 33 | var LiftToastAnimator = function (_ToastAnimator) { 34 | _inherits(LiftToastAnimator, _ToastAnimator); 35 | 36 | function LiftToastAnimator() { 37 | var _ref = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {}, 38 | _ref$timing = _ref.timing, 39 | timing = _ref$timing === undefined ? 'ease' : _ref$timing, 40 | _ref$delay = _ref.delay, 41 | delay = _ref$delay === undefined ? 0 : _ref$delay, 42 | _ref$duration = _ref.duration, 43 | duration = _ref$duration === undefined ? 0.35 : _ref$duration; 44 | 45 | _classCallCheck(this, LiftToastAnimator); 46 | 47 | var _this = _possibleConstructorReturn(this, (LiftToastAnimator.__proto__ || _Object$getPrototypeOf(LiftToastAnimator)).call(this, { timing: timing, delay: delay, duration: duration })); 48 | 49 | _this.bodyHeight = document.body.clientHeight; // avoid Forced Synchronous Layout 50 | if (iPhoneXPatch.isIPhoneXPortraitPatchActive()) { 51 | _this.liftAmount = 'calc(100% + 34px)'; 52 | } else if (iPhoneXPatch.isIPhoneXLandscapePatchActive()) { 53 | _this.liftAmount = 'calc(100% + 21px)'; 54 | } else { 55 | _this.liftAmount = '100%'; 56 | } 57 | return _this; 58 | } 59 | 60 | /** 61 | * @param {HTMLElement} toast 62 | * @param {Function} callback 63 | */ 64 | 65 | 66 | _createClass(LiftToastAnimator, [{ 67 | key: 'show', 68 | value: function show(toast, callback) { 69 | toast = toast._toast; 70 | 71 | animit.runAll(animit(toast, this.def).default({ transform: 'translate3d(0, ' + this.liftAmount + ', 0)', opacity: 0 }, { transform: 'translate3d(0, 0, 0)', opacity: 1 }).queue(function (done) { 72 | callback && callback(); 73 | done(); 74 | })); 75 | } 76 | 77 | /** 78 | * @param {HTMLElement} toast 79 | * @param {Function} callback 80 | */ 81 | 82 | }, { 83 | key: 'hide', 84 | value: function hide(toast, callback) { 85 | toast = toast._toast; 86 | 87 | animit.runAll(animit(toast, this.def).default({ transform: 'translate3d(0, 0, 0)', opacity: 1 }, { transform: 'translate3d(0, ' + this.liftAmount + ', 0)', opacity: 0 }).queue(function (done) { 88 | callback && callback(); 89 | done(); 90 | })); 91 | } 92 | }, { 93 | key: '_updatePosition', 94 | value: function _updatePosition(toast) { 95 | if (parseInt(toast.style.top, 10) === 0) { 96 | toast.style.top = toast.style.bottom = ''; 97 | } 98 | } 99 | }]); 100 | 101 | return LiftToastAnimator; 102 | }(ToastAnimator); 103 | 104 | export default LiftToastAnimator; -------------------------------------------------------------------------------- /code/cordova/spotcontroller/www/lib/OnsenUI/esm/ons/base-animator.js: -------------------------------------------------------------------------------- 1 | import _classCallCheck from 'babel-runtime/helpers/classCallCheck'; 2 | import _createClass from 'babel-runtime/helpers/createClass'; 3 | /* 4 | Copyright 2013-2015 ASIAL CORPORATION 5 | 6 | Licensed under the Apache License, Version 2.0 (the "License"); 7 | you may not use this file except in compliance with the License. 8 | You may obtain a copy of the License at 9 | 10 | http://www.apache.org/licenses/LICENSE-2.0 11 | 12 | Unless required by applicable law or agreed to in writing, software 13 | distributed under the License is distributed on an "AS IS" BASIS, 14 | WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 15 | See the License for the specific language governing permissions and 16 | limitations under the License. 17 | 18 | */ 19 | 20 | import util from './util'; 21 | 22 | var BaseAnimator = function () { 23 | 24 | /** 25 | * @param {Object} options 26 | * @param {String} options.timing 27 | * @param {Number} options.duration 28 | * @param {Number} options.delay 29 | */ 30 | function BaseAnimator() { 31 | var options = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {}; 32 | 33 | _classCallCheck(this, BaseAnimator); 34 | 35 | this.timing = options.timing || 'linear'; 36 | this.duration = options.duration || 0; 37 | this.delay = options.delay || 0; 38 | 39 | this.def = { 40 | timing: this.timing, 41 | duration: this.duration, 42 | delay: this.delay 43 | }; 44 | } 45 | 46 | _createClass(BaseAnimator, null, [{ 47 | key: 'extend', 48 | value: function extend() { 49 | var properties = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {}; 50 | 51 | var extendedAnimator = this; 52 | var newAnimator = function newAnimator() { 53 | extendedAnimator.apply(this, arguments); 54 | util.extend(this, properties); 55 | }; 56 | 57 | newAnimator.prototype = this.prototype; 58 | return newAnimator; 59 | } 60 | }]); 61 | 62 | return BaseAnimator; 63 | }(); 64 | 65 | export default BaseAnimator; -------------------------------------------------------------------------------- /code/cordova/spotcontroller/www/lib/OnsenUI/esm/ons/content-ready.js: -------------------------------------------------------------------------------- 1 | import _setImmediate from "babel-runtime/core-js/set-immediate"; 2 | import _WeakMap from "babel-runtime/core-js/weak-map"; 3 | /* 4 | Copyright 2013-2015 ASIAL CORPORATION 5 | 6 | Licensed under the Apache License, Version 2.0 (the "License"); 7 | you may not use this file except in compliance with the License. 8 | You may obtain a copy of the License at 9 | 10 | http://www.apache.org/licenses/LICENSE-2.0 11 | 12 | Unless required by applicable law or agreed to in writing, software 13 | distributed under the License is distributed on an "AS IS" BASIS, 14 | WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 15 | See the License for the specific language governing permissions and 16 | limitations under the License. 17 | 18 | */ 19 | 20 | var readyMap = void 0, 21 | queueMap = void 0; 22 | 23 | function isContentReady(element) { 24 | if (element.childNodes.length > 0) { 25 | setContentReady(element); 26 | } 27 | return readyMap.has(element); 28 | } 29 | 30 | function setContentReady(element) { 31 | readyMap.set(element, true); 32 | } 33 | 34 | function addCallback(element, fn) { 35 | if (!queueMap.has(element)) { 36 | queueMap.set(element, []); 37 | } 38 | queueMap.get(element).push(fn); 39 | } 40 | 41 | function consumeQueue(element) { 42 | var callbacks = queueMap.get(element, []) || []; 43 | queueMap.delete(element); 44 | callbacks.forEach(function (callback) { 45 | return callback(); 46 | }); 47 | } 48 | 49 | export default function contentReady(element) { 50 | var fn = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : function () {}; 51 | 52 | if (readyMap === undefined) { 53 | readyMap = new _WeakMap(); 54 | queueMap = new _WeakMap(); 55 | } 56 | 57 | addCallback(element, fn); 58 | 59 | if (isContentReady(element)) { 60 | consumeQueue(element); 61 | return; 62 | } 63 | 64 | var observer = new MutationObserver(function (changes) { 65 | setContentReady(element); 66 | consumeQueue(element); 67 | }); 68 | observer.observe(element, { childList: true, characterData: true }); 69 | 70 | // failback for elements has empty content. 71 | _setImmediate(function () { 72 | setContentReady(element); 73 | consumeQueue(element); 74 | }); 75 | } -------------------------------------------------------------------------------- /code/cordova/spotcontroller/www/lib/OnsenUI/esm/ons/doorlock.js: -------------------------------------------------------------------------------- 1 | import _classCallCheck from 'babel-runtime/helpers/classCallCheck'; 2 | import _createClass from 'babel-runtime/helpers/createClass'; 3 | /* 4 | Copyright 2013-2015 ASIAL CORPORATION 5 | 6 | Licensed under the Apache License, Version 2.0 (the "License"); 7 | you may not use this file except in compliance with the License. 8 | You may obtain a copy of the License at 9 | 10 | http://www.apache.org/licenses/LICENSE-2.0 11 | 12 | Unless required by applicable law or agreed to in writing, software 13 | distributed under the License is distributed on an "AS IS" BASIS, 14 | WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 15 | See the License for the specific language governing permissions and 16 | limitations under the License. 17 | 18 | */ 19 | 20 | var generateId = function () { 21 | var i = 0; 22 | return function () { 23 | return i++; 24 | }; 25 | }(); 26 | 27 | /** 28 | * Door locking system. 29 | * 30 | * @param {Object} [options] 31 | * @param {Function} [options.log] 32 | */ 33 | 34 | var DoorLock = function () { 35 | function DoorLock() { 36 | var options = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {}; 37 | 38 | _classCallCheck(this, DoorLock); 39 | 40 | this._lockList = []; 41 | this._waitList = []; 42 | this._log = options.log || function () {}; 43 | } 44 | 45 | /** 46 | * Register a lock. 47 | * 48 | * @return {Function} Callback for unlocking. 49 | */ 50 | 51 | 52 | _createClass(DoorLock, [{ 53 | key: 'lock', 54 | value: function lock() { 55 | var _this = this; 56 | 57 | var unlock = function unlock() { 58 | _this._unlock(unlock); 59 | }; 60 | unlock.id = generateId(); 61 | this._lockList.push(unlock); 62 | this._log('lock: ' + unlock.id); 63 | 64 | return unlock; 65 | } 66 | }, { 67 | key: '_unlock', 68 | value: function _unlock(fn) { 69 | var index = this._lockList.indexOf(fn); 70 | if (index === -1) { 71 | throw new Error('This function is not registered in the lock list.'); 72 | } 73 | 74 | this._lockList.splice(index, 1); 75 | this._log('unlock: ' + fn.id); 76 | 77 | this._tryToFreeWaitList(); 78 | } 79 | }, { 80 | key: '_tryToFreeWaitList', 81 | value: function _tryToFreeWaitList() { 82 | while (!this.isLocked() && this._waitList.length > 0) { 83 | this._waitList.shift()(); 84 | } 85 | } 86 | 87 | /** 88 | * Register a callback for waiting unlocked door. 89 | * 90 | * @params {Function} callback Callback on unlocking the door completely. 91 | */ 92 | 93 | }, { 94 | key: 'waitUnlock', 95 | value: function waitUnlock(callback) { 96 | if (!(callback instanceof Function)) { 97 | throw new Error('The callback param must be a function.'); 98 | } 99 | 100 | if (this.isLocked()) { 101 | this._waitList.push(callback); 102 | } else { 103 | callback(); 104 | } 105 | } 106 | 107 | /** 108 | * @return {Boolean} 109 | */ 110 | 111 | }, { 112 | key: 'isLocked', 113 | value: function isLocked() { 114 | return this._lockList.length > 0; 115 | } 116 | }]); 117 | 118 | return DoorLock; 119 | }(); 120 | 121 | export default DoorLock; -------------------------------------------------------------------------------- /code/cordova/spotcontroller/www/lib/OnsenUI/esm/ons/elements.js: -------------------------------------------------------------------------------- 1 | export default {}; -------------------------------------------------------------------------------- /code/cordova/spotcontroller/www/lib/OnsenUI/esm/ons/internal/index.js: -------------------------------------------------------------------------------- 1 | /* 2 | Copyright 2013-2015 ASIAL CORPORATION 3 | 4 | Licensed under the Apache License, Version 2.0 (the "License"); 5 | you may not use this file except in compliance with the License. 6 | You may obtain a copy of the License at 7 | 8 | http://www.apache.org/licenses/LICENSE-2.0 9 | 10 | Unless required by applicable law or agreed to in writing, software 11 | distributed under the License is distributed on an "AS IS" BASIS, 12 | WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13 | See the License for the specific language governing permissions and 14 | limitations under the License. 15 | 16 | */ 17 | import internal from './internal'; 18 | import AnimatorFactory from './animator-factory'; 19 | import ModifierUtil from './modifier-util'; 20 | import deviceBackButtonDispatcher from './device-back-button-dispatcher'; 21 | 22 | internal.AnimatorFactory = AnimatorFactory; 23 | internal.ModifierUtil = ModifierUtil; 24 | internal.dbbDispatcher = deviceBackButtonDispatcher; 25 | 26 | export default internal; -------------------------------------------------------------------------------- /code/cordova/spotcontroller/www/lib/OnsenUI/esm/ons/internal/toast-queue.js: -------------------------------------------------------------------------------- 1 | import _setImmediate from "babel-runtime/core-js/set-immediate"; 2 | import _classCallCheck from "babel-runtime/helpers/classCallCheck"; 3 | import _createClass from "babel-runtime/helpers/createClass"; 4 | 5 | /* 6 | Copyright 2013-2015 ASIAL CORPORATION 7 | 8 | Licensed under the Apache License, Version 2.0 (the "License"); 9 | you may not use this file except in compliance with the License. 10 | You may obtain a copy of the License at 11 | 12 | http://www.apache.org/licenses/LICENSE-2.0 13 | 14 | Unless required by applicable law or agreed to in writing, software 15 | distributed under the License is distributed on an "AS IS" BASIS, 16 | WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 17 | See the License for the specific language governing permissions and 18 | limitations under the License. 19 | 20 | */ 21 | 22 | var ToastQueue = function () { 23 | function ToastQueue() { 24 | _classCallCheck(this, ToastQueue); 25 | 26 | this.queue = []; 27 | } 28 | 29 | _createClass(ToastQueue, [{ 30 | key: "add", 31 | value: function add(fn, promise) { 32 | var _this = this; 33 | 34 | this.queue.push(fn); 35 | 36 | if (this.queue.length === 1) { 37 | _setImmediate(this.queue[0]); 38 | } 39 | 40 | promise.then(function () { 41 | _this.queue.shift(); 42 | 43 | if (_this.queue.length > 0) { 44 | setTimeout(_this.queue[0], 1000 / 30); // Apply some visual delay 45 | } 46 | }); 47 | } 48 | }]); 49 | 50 | return ToastQueue; 51 | }(); 52 | 53 | export default new ToastQueue(); -------------------------------------------------------------------------------- /code/cordova/spotcontroller/www/lib/OnsenUI/esm/ons/iphonex-patch.js: -------------------------------------------------------------------------------- 1 | import _extends from 'babel-runtime/helpers/extends'; 2 | /* 3 | Copyright 2013-2015 ASIAL CORPORATION 4 | 5 | Licensed under the Apache License, Version 2.0 (the "License"); 6 | you may not use this file except in compliance with the License. 7 | You may obtain a copy of the License at 8 | 9 | http://www.apache.org/licenses/LICENSE-2.0 10 | 11 | Unless required by applicable law or agreed to in writing, software 12 | distributed under the License is distributed on an "AS IS" BASIS, 13 | WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 14 | See the License for the specific language governing permissions and 15 | limitations under the License. 16 | 17 | */ 18 | 19 | // This object should not be exposed to users. Please keep this private. 20 | var iPhoneXPatch = {}; 21 | 22 | iPhoneXPatch.isIPhoneXPortraitPatchActive = function () { 23 | return document.documentElement.getAttribute('onsflag-iphonex-portrait') != null && window.innerWidth < window.innerHeight; 24 | }; 25 | 26 | iPhoneXPatch.isIPhoneXLandscapePatchActive = function () { 27 | // If width === height, treat it as landscape 28 | return document.documentElement.getAttribute('onsflag-iphonex-landscape') != null && window.innerWidth >= window.innerHeight; 29 | }; 30 | 31 | /** 32 | * Returns the safe area lengths based on the current state of the safe areas. 33 | */ 34 | iPhoneXPatch.getSafeAreaLengths = function () { 35 | var safeAreaLengths = void 0; 36 | if (iPhoneXPatch.isIPhoneXPortraitPatchActive()) { 37 | safeAreaLengths = { 38 | top: 44, 39 | right: 0, 40 | bottom: 34, 41 | left: 0 42 | }; 43 | } else if (iPhoneXPatch.isIPhoneXLandscapePatchActive()) { 44 | safeAreaLengths = { 45 | top: 0, 46 | right: 44, 47 | bottom: 21, 48 | left: 44 49 | }; 50 | } else { 51 | safeAreaLengths = { 52 | top: 0, 53 | right: 0, 54 | bottom: 0, 55 | left: 0 56 | }; 57 | } 58 | 59 | return safeAreaLengths; 60 | }; 61 | 62 | /** 63 | * Returns the safe area rect based on the current state of the safe areas. 64 | */ 65 | iPhoneXPatch.getSafeAreaDOMRect = function () { 66 | var safeAreaRect = void 0; 67 | if (iPhoneXPatch.isIPhoneXPortraitPatchActive()) { 68 | safeAreaRect = { 69 | x: 0, 70 | y: 44, /* 0 + 44 (top safe area) */ 71 | width: window.innerWidth, 72 | height: window.innerHeight - 78 /* height - 44 (top safe area) - 34 (bottom safe area) */ 73 | }; 74 | } else if (iPhoneXPatch.isIPhoneXLandscapePatchActive()) { 75 | safeAreaRect = { 76 | x: 44, /* 0 + 44 (left safe area) */ 77 | y: 0, 78 | width: window.innerWidth - 88, /* width - 44 (left safe area) - 34 (right safe area) */ 79 | height: window.innerHeight - 21 /* height - 21 (bottom safe area) */ 80 | }; 81 | } else { 82 | safeAreaRect = { 83 | x: 0, 84 | y: 0, 85 | width: window.innerWidth, 86 | height: window.innerHeight 87 | }; 88 | } 89 | 90 | return _extends({}, safeAreaRect, { 91 | left: safeAreaRect.x, 92 | top: safeAreaRect.y, 93 | right: safeAreaRect.x + safeAreaRect.width, 94 | bottom: safeAreaRect.y + safeAreaRect.height 95 | }); 96 | }; 97 | 98 | export default iPhoneXPatch; -------------------------------------------------------------------------------- /code/cordova/spotcontroller/www/lib/OnsenUI/esm/ons/microevent.js: -------------------------------------------------------------------------------- 1 | /** 2 | * MicroEvent - to make any js object an event emitter (server or browser) 3 | * 4 | * - pure javascript - server compatible, browser compatible 5 | * - dont rely on the browser doms 6 | * - super simple - you get it immediately, no mystery, no magic involved 7 | * 8 | * - create a MicroEventDebug with goodies to debug 9 | * - make it safer to use 10 | */ 11 | 12 | /** NOTE: This library is customized for Onsen UI. */ 13 | 14 | var MicroEvent = function MicroEvent() {}; 15 | MicroEvent.prototype = { 16 | on: function on(event, fct) { 17 | this._events = this._events || {}; 18 | this._events[event] = this._events[event] || []; 19 | this._events[event].push(fct); 20 | }, 21 | once: function once(event, fct) { 22 | var self = this; 23 | var wrapper = function wrapper() { 24 | self.off(event, wrapper); 25 | return fct.apply(null, arguments); 26 | }; 27 | this.on(event, wrapper); 28 | }, 29 | off: function off(event, fct) { 30 | this._events = this._events || {}; 31 | if (event in this._events === false) { 32 | return; 33 | } 34 | 35 | this._events[event] = this._events[event].filter(function (_fct) { 36 | if (fct) { 37 | return fct !== _fct; 38 | } else { 39 | return false; 40 | } 41 | }); 42 | }, 43 | emit: function emit(event /* , args... */) { 44 | this._events = this._events || {}; 45 | if (event in this._events === false) { 46 | return; 47 | } 48 | for (var i = 0; i < this._events[event].length; i++) { 49 | this._events[event][i].apply(this, Array.prototype.slice.call(arguments, 1)); 50 | } 51 | } 52 | }; 53 | 54 | /** 55 | * mixin will delegate all MicroEvent.js function in the destination object 56 | * 57 | * - require('MicroEvent').mixin(Foobar) will make Foobar able to use MicroEvent 58 | * 59 | * @param {Object} the object which will support MicroEvent 60 | */ 61 | MicroEvent.mixin = function (destObject) { 62 | var props = ['on', 'once', 'off', 'emit']; 63 | for (var i = 0; i < props.length; i++) { 64 | if (typeof destObject === 'function') { 65 | destObject.prototype[props[i]] = MicroEvent.prototype[props[i]]; 66 | } else { 67 | destObject[props[i]] = MicroEvent.prototype[props[i]]; 68 | } 69 | } 70 | }; 71 | 72 | window.MicroEvent = MicroEvent; 73 | export default MicroEvent; -------------------------------------------------------------------------------- /code/cordova/spotcontroller/www/lib/OnsenUI/esm/ons/modifier.js: -------------------------------------------------------------------------------- 1 | /* 2 | Copyright 2013-2015 ASIAL CORPORATION 3 | 4 | Licensed under the Apache License, Version 2.0 (the "License"); 5 | you may not use this file except in compliance with the License. 6 | You may obtain a copy of the License at 7 | 8 | http://www.apache.org/licenses/LICENSE-2.0 9 | 10 | Unless required by applicable law or agreed to in writing, software 11 | distributed under the License is distributed on an "AS IS" BASIS, 12 | WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13 | See the License for the specific language governing permissions and 14 | limitations under the License. 15 | 16 | */ 17 | 18 | import util from './util'; 19 | 20 | /** 21 | * @object ons.modifier 22 | * @category visual 23 | * @description 24 | * [en] 25 | * Utility methods to change modifier attributes of Onsen UI elements.. 26 | * [/en] 27 | * [ja][/ja] 28 | * @example 29 | * ons.modifier.add(myOnsInputElement, 'underbar'); 30 | * ons.modifier.toggle(myOnsToastElement, 'custom-modifier'); 31 | * 32 | */ 33 | export default { 34 | /** 35 | * @method add 36 | * @signature add(element, modifier [, modifier]) 37 | * @description 38 | * [en]Add the specified modifiers to the element if they are not already included.[/en] 39 | * [ja][/ja] 40 | * @param {HTMLElement} element 41 | * [en]Target element.[/en] 42 | * [ja][/ja] 43 | * @param {String} modifier 44 | * [en]Name of the modifier.[/en] 45 | * [ja][/ja] 46 | */ 47 | add: function add(element) { 48 | for (var _len = arguments.length, modifiers = Array(_len > 1 ? _len - 1 : 0), _key = 1; _key < _len; _key++) { 49 | modifiers[_key - 1] = arguments[_key]; 50 | } 51 | 52 | return modifiers.forEach(function (modifier) { 53 | return util.addModifier(element, modifier); 54 | }); 55 | }, 56 | /** 57 | * @method remove 58 | * @signature remove(element, modifier [, modifier]) 59 | * @description 60 | * [en]Remove the specified modifiers from the element if they are included.[/en] 61 | * [ja][/ja] 62 | * @param {HTMLElement} element 63 | * [en]Target element.[/en] 64 | * [ja][/ja] 65 | * @param {String} modifier 66 | * [en]Name of the modifier.[/en] 67 | * [ja][/ja] 68 | */ 69 | remove: function remove(element) { 70 | for (var _len2 = arguments.length, modifiers = Array(_len2 > 1 ? _len2 - 1 : 0), _key2 = 1; _key2 < _len2; _key2++) { 71 | modifiers[_key2 - 1] = arguments[_key2]; 72 | } 73 | 74 | return modifiers.forEach(function (modifier) { 75 | return util.removeModifier(element, modifier); 76 | }); 77 | }, 78 | /** 79 | * @method contains 80 | * @signature contains(element, modifier) 81 | * @description 82 | * [en]Check whether the specified modifier is included in the element.[/en] 83 | * [ja][/ja] 84 | * @param {HTMLElement} element 85 | * [en]Target element.[/en] 86 | * [ja][/ja] 87 | * @param {String} modifier 88 | * [en]Name of the modifier.[/en] 89 | * [ja][/ja] 90 | * @return {Boolean} 91 | * [en]`true` when the specified modifier is found in the element's `modifier` attribute. `false` otherwise.[/en] 92 | * [ja][/ja] 93 | */ 94 | contains: util.hasModifier, 95 | /** 96 | * @method toggle 97 | * @signature toggle(element, modifier [, force]) 98 | * @description 99 | * [en]Toggle the specified modifier.[/en] 100 | * [ja][/ja] 101 | * @param {HTMLElement} element 102 | * [en]Target element.[/en] 103 | * [ja][/ja] 104 | * @param {String} modifier 105 | * [en]Name of the modifier.[/en] 106 | * [ja][/ja] 107 | * @param {String} force 108 | * [en]If it evaluates to true, add specified modifier value, and if it evaluates to false, remove it.[/en] 109 | * [ja][/ja] 110 | */ 111 | toggle: util.toggleModifier 112 | }; -------------------------------------------------------------------------------- /code/cordova/spotcontroller/www/lib/OnsenUI/esm/ons/software-keyboard.js: -------------------------------------------------------------------------------- 1 | /* 2 | Copyright 2013-2015 ASIAL CORPORATION 3 | 4 | Licensed under the Apache License, Version 2.0 (the "License"); 5 | you may not use this file except in compliance with the License. 6 | You may obtain a copy of the License at 7 | 8 | http://www.apache.org/licenses/LICENSE-2.0 9 | 10 | Unless required by applicable law or agreed to in writing, software 11 | distributed under the License is distributed on an "AS IS" BASIS, 12 | WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13 | See the License for the specific language governing permissions and 14 | limitations under the License. 15 | 16 | */ 17 | 18 | import util from './util'; 19 | import MicroEvent from './microevent'; 20 | 21 | var softwareKeyboard = new MicroEvent(); 22 | softwareKeyboard._visible = false; 23 | 24 | var onShow = function onShow() { 25 | softwareKeyboard._visible = true; 26 | softwareKeyboard.emit('show'); 27 | }; 28 | 29 | var onHide = function onHide() { 30 | softwareKeyboard._visible = false; 31 | softwareKeyboard.emit('hide'); 32 | }; 33 | 34 | var bindEvents = function bindEvents() { 35 | if (typeof Keyboard !== 'undefined') { 36 | // https://github.com/martinmose/cordova-keyboard/blob/95f3da3a38d8f8e1fa41fbf40145352c13535a00/README.md 37 | Keyboard.onshow = onShow; 38 | Keyboard.onhide = onHide; 39 | softwareKeyboard.emit('init', { visible: Keyboard.isVisible }); 40 | 41 | return true; 42 | } else if (typeof cordova.plugins !== 'undefined' && typeof cordova.plugins.Keyboard !== 'undefined') { 43 | // https://github.com/driftyco/ionic-plugins-keyboard/blob/ca27ecf/README.md 44 | window.addEventListener('native.keyboardshow', onShow); 45 | window.addEventListener('native.keyboardhide', onHide); 46 | softwareKeyboard.emit('init', { visible: cordova.plugins.Keyboard.isVisible }); 47 | 48 | return true; 49 | } 50 | 51 | return false; 52 | }; 53 | 54 | var noPluginError = function noPluginError() { 55 | util.warn('ons-keyboard: Cordova Keyboard plugin is not present.'); 56 | }; 57 | 58 | document.addEventListener('deviceready', function () { 59 | if (!bindEvents()) { 60 | if (document.querySelector('[ons-keyboard-active]') || document.querySelector('[ons-keyboard-inactive]')) { 61 | noPluginError(); 62 | } 63 | 64 | softwareKeyboard.on = noPluginError; 65 | } 66 | }); 67 | 68 | export default softwareKeyboard; -------------------------------------------------------------------------------- /code/cordova/spotcontroller/www/lib/OnsenUI/esm/ons/styler.js: -------------------------------------------------------------------------------- 1 | import _Object$keys from 'babel-runtime/core-js/object/keys'; 2 | /* 3 | Copyright 2013-2015 ASIAL CORPORATION 4 | 5 | Licensed under the Apache License, Version 2.0 (the "License"); 6 | you may not use this file except in compliance with the License. 7 | You may obtain a copy of the License at 8 | 9 | http://www.apache.org/licenses/LICENSE-2.0 10 | 11 | Unless required by applicable law or agreed to in writing, software 12 | distributed under the License is distributed on an "AS IS" BASIS, 13 | WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 14 | See the License for the specific language governing permissions and 15 | limitations under the License. 16 | 17 | */ 18 | 19 | import util from '../ons/util'; 20 | 21 | /** 22 | * Add vendor prefix. 23 | * 24 | * @param {String} name 25 | * @return {String} 26 | */ 27 | var prefix = function () { 28 | var styles = window.getComputedStyle(document.documentElement, ''); 29 | var prefix = (Array.prototype.slice.call(styles).join('').match(/-(moz|webkit|ms)-/) || styles.OLink === '' && ['', 'o'])[1]; 30 | 31 | return function (name) { 32 | return '-' + prefix + '-' + util.hyphenate(name); 33 | }; 34 | }(); 35 | 36 | /** 37 | * Minimal utility library for manipulating element's style. 38 | * Set element's style. 39 | * 40 | * @param {Element} element 41 | * @param {Object} styles 42 | * @return {Element} 43 | */ 44 | var styler = function styler(element, style) { 45 | _Object$keys(style).forEach(function (key) { 46 | if (key in element.style) { 47 | element.style[key] = style[key]; 48 | } else if (prefix(key) in element.style) { 49 | element.style[prefix(key)] = style[key]; 50 | } else { 51 | util.warn('No such style property: ' + key); 52 | } 53 | }); 54 | return element; 55 | }; 56 | 57 | /** 58 | * @param {Element} element 59 | * @param {String} styles Space-separated CSS properties to remove 60 | */ 61 | styler.clear = function (element) { 62 | var styles = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : ''; 63 | 64 | var clearlist = styles.split(/\s+/).reduce(function (r, s) { 65 | return r.concat([util.hyphenate(s), prefix(s)]); 66 | }, []), 67 | keys = []; 68 | 69 | var _loop = function _loop(i) { 70 | var key = element.style[i]; 71 | if (clearlist.length === 0 || clearlist.some(function (s) { 72 | return key.indexOf(s) === 0; 73 | })) { 74 | keys.push(key); // Store the key to fix Safari style indexes 75 | } 76 | }; 77 | 78 | for (var i = element.style.length - 1; i >= 0; i--) { 79 | _loop(i); 80 | } 81 | 82 | keys.forEach(function (key) { 83 | return element.style[key] = ''; 84 | }); 85 | element.getAttribute('style') === '' && element.removeAttribute('style'); 86 | }; 87 | 88 | export default styler; -------------------------------------------------------------------------------- /code/cordova/spotcontroller/www/lib/OnsenUI/esm/polyfills/index.js: -------------------------------------------------------------------------------- 1 | // Caution: 2 | // Do not replace this import statement with codes. 3 | // 4 | // If you replace this import statement with codes, 5 | // the codes will be executed after the following polyfills are imported 6 | // because import statements are hoisted during compilation. 7 | import './polyfill-switches'; 8 | 9 | // Polyfill ECMAScript standard features with global namespace pollution 10 | import 'core-js/fn/object/set-prototype-of'; 11 | import 'core-js/fn/set'; 12 | import 'core-js/fn/map'; 13 | import 'core-js/fn/weak-map'; 14 | import 'core-js/fn/array/from'; 15 | 16 | // Polyfill Custom Elements v1 with global namespace pollution 17 | import '@onsenui/custom-elements/src/custom-elements'; 18 | 19 | // Polyfill MutationObserver with global namespace pollution 20 | import './MutationObserver@0.7.22/MutationObserver.js'; 21 | 22 | // Polyfill setImmediate with global namespace pollution 23 | import './setImmediate@1.0.2+mod/setImmediate.js'; -------------------------------------------------------------------------------- /code/cordova/spotcontroller/www/lib/OnsenUI/esm/polyfills/polyfill-switches.js: -------------------------------------------------------------------------------- 1 | // For @onsenui/custom-elements 2 | if (window.customElements) { 3 | // even if native CE1 impl exists, use polyfill 4 | window.customElements.forcePolyfill = true; 5 | } -------------------------------------------------------------------------------- /code/cordova/spotcontroller/www/lib/OnsenUI/esm/vendor/index.js: -------------------------------------------------------------------------------- 1 | import './viewport.js'; -------------------------------------------------------------------------------- /code/cordova/spotcontroller/www/lib/OnsenUI/esm/vendor/viewport.js: -------------------------------------------------------------------------------- 1 | (function () { 2 | var DEFAULT_VIEWPORT = 'width=device-width,initial-scale=1,maximum-scale=1,minimum-scale=1,user-scalable=no'; 3 | 4 | var Viewport = { 5 | ensureViewportElement: function ensureViewportElement() { 6 | var viewportElement = document.querySelector('meta[name=viewport]'); 7 | 8 | if (!viewportElement) { 9 | viewportElement = document.createElement('meta'); 10 | viewportElement.name = 'viewport'; 11 | document.head.appendChild(viewportElement); 12 | } 13 | 14 | return viewportElement; 15 | }, 16 | 17 | setup: function setup() { 18 | var viewportElement = Viewport.ensureViewportElement(); 19 | 20 | if (!viewportElement) { 21 | return; 22 | } 23 | 24 | if (!viewportElement.hasAttribute('content')) { 25 | viewportElement.setAttribute('content', DEFAULT_VIEWPORT); 26 | } 27 | } 28 | }; 29 | 30 | window.Viewport = Viewport; 31 | })(); -------------------------------------------------------------------------------- /code/cordova/spotcontroller/www/lib/OnsenUI/js/angular-onsenui.min.js: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/maartenweyn/SpotMicro_ESP32/d8bbf69276bf898c95bcf79fbbfe0ffbd39bdb13/code/cordova/spotcontroller/www/lib/OnsenUI/js/angular-onsenui.min.js -------------------------------------------------------------------------------- /code/cordova/spotcontroller/www/resources/icon.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/maartenweyn/SpotMicro_ESP32/d8bbf69276bf898c95bcf79fbbfe0ffbd39bdb13/code/cordova/spotcontroller/www/resources/icon.png -------------------------------------------------------------------------------- /code/cordova/spotcontroller/www/settings.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | MQTT settings 4 | 5 |
6 | host 7 |
8 | 11 |
12 | 13 |
14 | port 15 |
16 | 19 |
20 | 28 | 29 |
30 | protocol 31 |
32 | 35 |
36 | 37 | Save 38 | 39 | Debug commands 40 | 41 | erase saved mqtt settings 42 | erase saved user 43 | 44 |
45 | 86 |
-------------------------------------------------------------------------------- /code/esp-idf/README.MD: -------------------------------------------------------------------------------- 1 | # ESP-IDF 2 | 3 | ## Installation and tutorials: 4 | 5 | https://docs.espressif.com/projects/esp-idf/en/latest/esp32/get-started/index.html#step-5-start-a-project 6 | 7 | 8 | 9 | Initiate directory with 10 | 11 | ```get_idf``` 12 | 13 | then for the first time 14 | 15 | ``` 16 | idf.py set-target esp32 17 | idf.py menuconfig 18 | 19 | ``` 20 | 21 | then 22 | 23 | ``` 24 | idf.py build 25 | idf.py -p /dev/tty.SLAB_USBtoUART flash 26 | idf.py -p /dev/tty.SLAB_USBtoUART monitor 27 | idf.py -p /dev/tty.SLAB_USBtoUART flash monitor 28 | 29 | ``` 30 | 31 | 32 | tips 33 | 34 | * use ESP_LOGD and use menuconfig to define log level in component configuration of LOG 35 | * to get out of monitor: CTRL+] 36 | 37 | 38 | 39 | # Programs 40 | 41 | ## pca9685_pwm_test 42 | 43 | This can be used to test and determin the angles of the servos. it will create two array (servo min and factor which can be used in the main program) 44 | 45 | 46 | 47 | ## ik_test 48 | 49 | This is a program in development to test the current Inverse Kinetics. It will calculate and move the servos based on the omega, phi and psi angles and xm,ym and zm position of the body. No gait is introduced in this phase. 50 | The angles can be entered using a cordova program or in code. 51 | 52 | Make sure to init and update the git submodules to include ESP DSP: https://github.com/espressif/esp-dsp.git 53 | 54 | 55 | 56 | 57 | 58 | -------------------------------------------------------------------------------- /code/esp-idf/ik_test/CMakeLists.txt: -------------------------------------------------------------------------------- 1 | # The following lines of boilerplate have to be in your project's 2 | # CMakeLists in this exact order for cmake to work correctly 3 | cmake_minimum_required(VERSION 3.5) 4 | 5 | 6 | list(APPEND EXTRA_COMPONENT_DIRS "components/pca9685") 7 | include($ENV{IDF_PATH}/tools/cmake/project.cmake) 8 | project(ik_test) 9 | 10 | -------------------------------------------------------------------------------- /code/esp-idf/ik_test/components/pca9685/CMakeLists.txt: -------------------------------------------------------------------------------- 1 | idf_component_register(SRCS "pca9685.c" INCLUDE_DIRS ".") -------------------------------------------------------------------------------- /code/esp-idf/ik_test/components/pca9685/component.mk: -------------------------------------------------------------------------------- 1 | # 2 | # Main Makefile. This is basically the same as a component makefile. 3 | # 4 | # (Uses default behaviour of compiling all source files in directory, adding 'include' to include path.) 5 | 6 | COMPONENT_SRCDIRS := . 7 | COMPONENT_ADD_INCLUDEDIRS := . 8 | -------------------------------------------------------------------------------- /code/esp-idf/ik_test/components/pca9685/pca9685.h: -------------------------------------------------------------------------------- 1 | /*************************************************** 2 | This is a library for the PCA9685 LED PWM Driver 3 | 4 | This chip is connected via I2C, 2 pins are required to interface. The PWM frequency is set for all pins, the PWM for each individually. The set PWM is active as long as the chip is powered. 5 | 6 | Adopted from Jonas Scharpf 7 | BSD license, all text above must be included in any redistribution 8 | ****************************************************/ 9 | 10 | #ifndef PCA9685_DRIVER_H 11 | #define PCA9685_DRIVER_H 12 | 13 | #include 14 | #include 15 | #include 16 | #include "esp_err.h" 17 | #include 18 | #include "esp_log.h" 19 | #include "esp_system.h" 20 | #include 21 | #include 22 | #include 23 | #include 24 | 25 | #define ACK_CHECK_EN 0x1 /*!< I2C master will check ack from slave */ 26 | #define ACK_CHECK_DIS 0x0 /*!< I2C master will not check ack from slave */ 27 | #define ACK_VAL 0x0 /*!< I2C ack value */ 28 | #define NACK_VAL 0x1 /*!< I2C nack value */ 29 | 30 | #define MODE1 0x00 /*!< Mode register 1 */ 31 | #define MODE2 0x01 /*!< Mode register 2 */ 32 | #define SUBADR1 0x02 /*!< I2C-bus subaddress 1 */ 33 | #define SUBADR2 0x03 /*!< I2C-bus subaddress 2 */ 34 | #define SUBADR3 0x04 /*!< I2C-bus subaddress 3 */ 35 | #define ALLCALLADR 0x05 /*!< LED All Call I2C-bus address */ 36 | #define LED0 0x6 /*!< LED0 start register */ 37 | #define LED0_ON_L 0x6 /*!< LED0 output and brightness control byte 0 */ 38 | #define LED0_ON_H 0x7 /*!< LED0 output and brightness control byte 1 */ 39 | #define LED0_OFF_L 0x8 /*!< LED0 output and brightness control byte 2 */ 40 | #define LED0_OFF_H 0x9 /*!< LED0 output and brightness control byte 3 */ 41 | #define LED_MULTIPLYER 4 /*!< For the other 15 channels */ 42 | #define ALLLED_ON_L 0xFA /*!< load all the LEDn_ON registers, byte 0 (turn 0-7 channels on) */ 43 | #define ALLLED_ON_H 0xFB /*!< load all the LEDn_ON registers, byte 1 (turn 8-15 channels on) */ 44 | #define ALLLED_OFF_L 0xFC /*!< load all the LEDn_OFF registers, byte 0 (turn 0-7 channels off) */ 45 | #define ALLLED_OFF_H 0xFD /*!< load all the LEDn_OFF registers, byte 1 (turn 8-15 channels off) */ 46 | #define PRE_SCALE 0xFE /*!< prescaler for output frequency */ 47 | #define CLOCK_FREQ 25000000.0 /*!< 25MHz default osc clock */ 48 | 49 | extern void set_pca9685_adress(uint8_t addr); 50 | extern esp_err_t resetPCA9685(void); 51 | extern esp_err_t setFrequencyPCA9685(uint16_t freq); 52 | extern esp_err_t setPWM(uint8_t num, uint16_t start, uint16_t end); 53 | extern esp_err_t generic_write_i2c_register_two_words(uint8_t regaddr, uint16_t valueOn, uint16_t valueOff); 54 | extern esp_err_t generic_write_i2c_register_word(uint8_t regaddr, uint16_t value); 55 | extern esp_err_t generic_write_i2c_register(uint8_t regaddr, uint8_t value); 56 | extern esp_err_t generic_read_i2c_register_word(uint8_t regaddr, uint16_t* value); 57 | extern esp_err_t generic_read_two_i2c_register(uint8_t regaddr, uint8_t* valueA, uint8_t* valueB); 58 | extern void disp_buf(uint16_t* buf, uint8_t len); 59 | 60 | extern esp_err_t setAllOnTimeZero(); 61 | extern esp_err_t setPulse(uint8_t num, uint16_t pulse); 62 | 63 | #endif /* PCA9685_DRIVER_H */ 64 | -------------------------------------------------------------------------------- /code/esp-idf/ik_test/main/CMakeLists.txt: -------------------------------------------------------------------------------- 1 | idf_component_register(SRCS bt_spp.c i2c_app.c servo.c main.c spot_ik.c 2 | INCLUDE_DIRS "") -------------------------------------------------------------------------------- /code/esp-idf/ik_test/main/bt_spp.h: -------------------------------------------------------------------------------- 1 | #ifndef BT_SPP_H 2 | #define BT_SPP_H 3 | 4 | #include "esp_err.h" 5 | 6 | #define DEVICE_NAME "ESP_SPOT_MICRO" 7 | 8 | #define DATA_BUFFER_LENGTH 512 9 | 10 | /* Attributes State Machine */ 11 | 12 | enum 13 | { 14 | IDX_SVC, 15 | 16 | IDX_CHAR_A, 17 | IDX_CHAR_VAL_A, 18 | 19 | IDX_CHAR_B, 20 | IDX_CHAR_VAL_B, 21 | IDX_CHAR_CFG_B, 22 | 23 | // IDX_CHAR_C, 24 | // IDX_CHAR_VAL_C, 25 | // IDX_CHAR_CFG_C, 26 | 27 | IDX_NB, 28 | }; 29 | 30 | typedef void (*new_orientation_cb_t)(int16_t omega, int16_t phi, int16_t psi, int16_t xm, int16_t ym, int16_t zm); 31 | 32 | void start_bluetooth(); 33 | void set_new_orientation_cb(new_orientation_cb_t cb); 34 | esp_err_t set_new_orientation_act_value(int16_t omega, int16_t phi, int16_t psi, int16_t xm, int16_t ym, int16_t zm); 35 | 36 | #endif -------------------------------------------------------------------------------- /code/esp-idf/ik_test/main/config.h: -------------------------------------------------------------------------------- 1 | #ifndef CONFIG_H 2 | #define CONFIG_H 3 | 4 | #include "servo.h" 5 | 6 | // SERVOS 7 | #define Servo_Foot 0 8 | #define Servo_Leg 1 9 | #define Servo_Shoulder 2 10 | 11 | #define LEG_LF 0 // 0, 1, 2 12 | #define LEG_RF 1 // 3, 4, 5 13 | #define LEG_LB 2 // 6, 7, 8 14 | #define LEG_RB 3 // 9, 10, 11 15 | 16 | #define L1 60.5 // y Distance between Shoulder Servo and Leg 17 | #define L2 10 // z Distance between Shoulder Servo and Leg 18 | #define L3 100.7 // Length of upper leg 19 | #define L4 118.5 // Length of lower leg 20 | #define L 207.5 // Distance between front and back servos 21 | #define W 78 // Distance between left and right shoulder 22 | 23 | // predefined calculations 24 | #define L1L1 3660.25 //L1*L1 25 | // #define L1L2 3760.25 //L1*L1+L2*L2 26 | // #define LL12 1210 //2*L1*L2 27 | #define L3L3 10140.49 //L3*L3 28 | #define L4L4 14042.25 //L4*L4 29 | #define LL34 23865.9 //2*L3*L4 30 | 31 | #define SERVO_STEP_ANGLE 2 32 | #define MOTION_STEP_ANGLE 5 33 | #define MOTION_STEP_MOVEMENT 5 34 | #define MOTION_STEP_ALFA 0.20 35 | 36 | extern const int16_t servo_min[12] ; 37 | extern const float servo_conversion[12] ; 38 | extern const float theta_range[3][2]; 39 | extern const int8_t servo_invert[12]; 40 | extern int16_t servo_angles[4][3]; 41 | 42 | 43 | 44 | /// I2C 45 | #define I2C_MASTER_SCL_IO 22 /*!< gpio number for I2C master clock */ 46 | #define I2C_MASTER_SDA_IO 23 /*!< gpio number for I2C master data */ 47 | #define I2C_MASTER_FREQ_HZ 100000 /*!< I2C master clock frequency */ 48 | #define I2C_MASTER_NUM I2C_NUM_0 /*!< I2C port number for master dev */ 49 | #define I2C_MASTER_TX_BUF_DISABLE 0 /*!< I2C master do not need buffer */ 50 | #define I2C_MASTER_RX_BUF_DISABLE 0 /*!< I2C master do not need buffer */ 51 | 52 | 53 | #define I2C_ADDRESS 0x40 /*!< lave address for PCA9685 */ 54 | 55 | #define ACK_CHECK_EN 0x1 /*!< I2C master will check ack from slave */ 56 | #define ACK_CHECK_DIS 0x0 /*!< I2C master will not check ack from slave */ 57 | #define ACK_VAL 0x0 /*!< I2C ack value */ 58 | #define NACK_VAL 0x1 /*!< I2C nack value */ 59 | 60 | #endif -------------------------------------------------------------------------------- /code/esp-idf/ik_test/main/i2c_app.c: -------------------------------------------------------------------------------- 1 | #include "config.h" 2 | 3 | #include 4 | #include 5 | 6 | static char tag[] = "I2C"; 7 | 8 | /** 9 | * @brief i2c master initialization 10 | */ 11 | void i2c_example_master_init(void) 12 | { 13 | ESP_LOGD(tag, ">> I2C Init"); 14 | i2c_config_t conf; 15 | conf.mode = I2C_MODE_MASTER; 16 | conf.sda_io_num = I2C_MASTER_SDA_IO; 17 | conf.scl_io_num = I2C_MASTER_SCL_IO; 18 | conf.sda_pullup_en = GPIO_PULLUP_ENABLE; 19 | conf.scl_pullup_en = GPIO_PULLUP_ENABLE; 20 | conf.master.clk_speed = I2C_MASTER_FREQ_HZ; 21 | 22 | int i2c_master_port = I2C_MASTER_NUM; 23 | ESP_ERROR_CHECK(i2c_param_config(i2c_master_port, &conf)); 24 | ESP_ERROR_CHECK(i2c_driver_install(i2c_master_port, conf.mode, 25 | I2C_MASTER_RX_BUF_DISABLE, 26 | I2C_MASTER_TX_BUF_DISABLE, 0)); 27 | } -------------------------------------------------------------------------------- /code/esp-idf/ik_test/main/i2c_app.h: -------------------------------------------------------------------------------- 1 | #ifndef I2C_APP_H 2 | #define I2C_APP_H 3 | 4 | void i2c_example_master_init(void); 5 | 6 | #endif -------------------------------------------------------------------------------- /code/esp-idf/ik_test/main/servo.c: -------------------------------------------------------------------------------- 1 | #include "servo.h" 2 | #include "config.h" 3 | 4 | #include "pca9685.h" 5 | 6 | #include 7 | 8 | static char tag[] = "SERVO"; 9 | 10 | 11 | void init_servos() { 12 | 13 | } 14 | 15 | esp_err_t set_servo(uint8_t id, uint16_t angle) { 16 | esp_err_t ret; 17 | uint16_t pulse = (uint16_t) (0.5 + servo_min[id] + (angle * servo_conversion[id])); 18 | ESP_LOGD(tag, "setPWM of servo %d, %d degrees -> Pulse %d", id, angle, pulse); 19 | ret = setPWM(id, 0, pulse); 20 | 21 | if (ret == ESP_OK) return ESP_OK; 22 | else return ESP_FAIL; 23 | } 24 | 25 | -------------------------------------------------------------------------------- /code/esp-idf/ik_test/main/servo.h: -------------------------------------------------------------------------------- 1 | #ifndef SERVO_H 2 | #define SERVO_H 3 | 4 | 5 | #include 6 | 7 | typedef struct { 8 | uint16_t pulse_0; 9 | uint16_t pulse_180; 10 | int8_t invert; 11 | } servo_settings_t; 12 | 13 | 14 | void init_servos(); 15 | esp_err_t set_servo(uint8_t id, uint16_t angle); 16 | 17 | #endif -------------------------------------------------------------------------------- /code/esp-idf/ik_test/main/spot_ik.h: -------------------------------------------------------------------------------- 1 | #ifndef SPOT_IK_H 2 | #define SPOT_IK_H 3 | 4 | #include "esp_err.h" 5 | 6 | typedef struct { 7 | float x; 8 | float y; 9 | float z; 10 | } point; 11 | 12 | 13 | esp_err_t leg_IK(float* p, uint8_t leg_id, int16_t servo_angles[3]); 14 | esp_err_t body_IK(float omega, float phi, float psi, float xm, float ym, float zm); 15 | esp_err_t spot_IK(float omega, float phi, float psi, float xm, float ym, float zm, int16_t servoangles[4][3]); 16 | 17 | void print_matrix(float * matrix, int n, int m, char* name) ; 18 | void print_int_matrix(int16_t * matrix, int n, int m, char* name, uint8_t newlines); 19 | 20 | #endif -------------------------------------------------------------------------------- /code/esp-idf/pca9685_pwm_test/CMakeLists.txt: -------------------------------------------------------------------------------- 1 | # The following lines of boilerplate have to be in your project's 2 | # CMakeLists in this exact order for cmake to work correctly 3 | cmake_minimum_required(VERSION 3.5) 4 | 5 | 6 | list(APPEND EXTRA_COMPONENT_DIRS "components/pca9685") 7 | include($ENV{IDF_PATH}/tools/cmake/project.cmake) 8 | project(pca9685_pwm_test) 9 | 10 | -------------------------------------------------------------------------------- /code/esp-idf/pca9685_pwm_test/components/pca9685/CMakeLists.txt: -------------------------------------------------------------------------------- 1 | idf_component_register(SRCS "pca9685.c" INCLUDE_DIRS ".") -------------------------------------------------------------------------------- /code/esp-idf/pca9685_pwm_test/components/pca9685/component.mk: -------------------------------------------------------------------------------- 1 | # 2 | # Main Makefile. This is basically the same as a component makefile. 3 | # 4 | # (Uses default behaviour of compiling all source files in directory, adding 'include' to include path.) 5 | 6 | COMPONENT_SRCDIRS := . 7 | COMPONENT_ADD_INCLUDEDIRS := . 8 | -------------------------------------------------------------------------------- /code/esp-idf/pca9685_pwm_test/components/pca9685/pca9685.h: -------------------------------------------------------------------------------- 1 | /*************************************************** 2 | This is a library for the PCA9685 LED PWM Driver 3 | 4 | This chip is connected via I2C, 2 pins are required to interface. The PWM frequency is set for all pins, the PWM for each individually. The set PWM is active as long as the chip is powered. 5 | 6 | Written by Jonas Scharpf 7 | BSD license, all text above must be included in any redistribution 8 | ****************************************************/ 9 | 10 | #ifndef PCA9685_DRIVER_H 11 | #define PCA9685_DRIVER_H 12 | 13 | #include 14 | #include 15 | #include 16 | #include "esp_err.h" 17 | #include 18 | #include "esp_log.h" 19 | #include "esp_system.h" 20 | #include 21 | #include 22 | #include 23 | #include 24 | 25 | // #define PCA9685_ADDR 0x50 /*!< slave address for PCA9685 chip */ 26 | 27 | #define ACK_CHECK_EN 0x1 /*!< I2C master will check ack from slave */ 28 | #define ACK_CHECK_DIS 0x0 /*!< I2C master will not check ack from slave */ 29 | #define ACK_VAL 0x0 /*!< I2C ack value */ 30 | #define NACK_VAL 0x1 /*!< I2C nack value */ 31 | 32 | #define MODE1 0x00 /*!< Mode register 1 */ 33 | #define MODE2 0x01 /*!< Mode register 2 */ 34 | #define SUBADR1 0x02 /*!< I2C-bus subaddress 1 */ 35 | #define SUBADR2 0x03 /*!< I2C-bus subaddress 2 */ 36 | #define SUBADR3 0x04 /*!< I2C-bus subaddress 3 */ 37 | #define ALLCALLADR 0x05 /*!< LED All Call I2C-bus address */ 38 | #define LED0 0x6 /*!< LED0 start register */ 39 | #define LED0_ON_L 0x6 /*!< LED0 output and brightness control byte 0 */ 40 | #define LED0_ON_H 0x7 /*!< LED0 output and brightness control byte 1 */ 41 | #define LED0_OFF_L 0x8 /*!< LED0 output and brightness control byte 2 */ 42 | #define LED0_OFF_H 0x9 /*!< LED0 output and brightness control byte 3 */ 43 | #define LED_MULTIPLYER 4 /*!< For the other 15 channels */ 44 | #define ALLLED_ON_L 0xFA /*!< load all the LEDn_ON registers, byte 0 (turn 0-7 channels on) */ 45 | #define ALLLED_ON_H 0xFB /*!< load all the LEDn_ON registers, byte 1 (turn 8-15 channels on) */ 46 | #define ALLLED_OFF_L 0xFC /*!< load all the LEDn_OFF registers, byte 0 (turn 0-7 channels off) */ 47 | #define ALLLED_OFF_H 0xFD /*!< load all the LEDn_OFF registers, byte 1 (turn 8-15 channels off) */ 48 | #define PRE_SCALE 0xFE /*!< prescaler for output frequency */ 49 | #define CLOCK_FREQ 25000000.0 /*!< 25MHz default osc clock */ 50 | 51 | extern void set_pca9685_adress(uint8_t addr); 52 | extern esp_err_t resetPCA9685(void); 53 | extern esp_err_t setFrequencyPCA9685(uint16_t freq); 54 | extern esp_err_t turnAllOff(void); 55 | extern esp_err_t setPWM(uint8_t num, uint16_t on, uint16_t off); 56 | extern esp_err_t getPWMDetail(uint8_t num, uint8_t* dataReadOn0, uint8_t* dataReadOn1, uint8_t* dataReadOff0, uint8_t* dataReadOff1); 57 | // extern esp_err_t getPWM(uint8_t num, uint16_t* dataReadOn, uint16_t* dataReadOff); 58 | // extern esp_err_t getPWM(uint8_t num); 59 | extern esp_err_t getPWM(uint8_t num, uint16_t* dataOn, uint16_t* dataOff); 60 | extern esp_err_t fade_pin_up_down(uint8_t pin); 61 | extern esp_err_t fade_all_up_down(void); 62 | 63 | extern esp_err_t generic_write_i2c_register_two_words(uint8_t regaddr, uint16_t valueOn, uint16_t valueOff); 64 | extern esp_err_t generic_write_i2c_register_word(uint8_t regaddr, uint16_t value); 65 | extern esp_err_t generic_write_i2c_register(uint8_t regaddr, uint8_t value); 66 | extern esp_err_t generic_read_i2c_register_word(uint8_t regaddr, uint16_t* value); 67 | extern esp_err_t generic_read_two_i2c_register(uint8_t regaddr, uint8_t* valueA, uint8_t* valueB); 68 | extern void disp_buf(uint16_t* buf, uint8_t len); 69 | 70 | #endif /* PCA9685_DRIVER_H */ 71 | -------------------------------------------------------------------------------- /code/esp-idf/pca9685_pwm_test/main/CMakeLists.txt: -------------------------------------------------------------------------------- 1 | idf_component_register(SRCS "pca9685Test.c" 2 | INCLUDE_DIRS "") -------------------------------------------------------------------------------- /code/esp32_arduino/servomotor_test/servomotor_test.ino: -------------------------------------------------------------------------------- 1 | //*********** 2 | // Servo motor test 3 | // SDA - pin next to GND - 21 4 | // SCL - 22 5 | //************ 6 | 7 | #include 8 | #include 9 | #include 10 | #include 11 | 12 | #define PWM_SERVO_ADDR 0x40 13 | Adafruit_PWMServoDriver PWM = Adafruit_PWMServoDriver(PWM_SERVO_ADDR); 14 | 15 | 16 | typedef CommandParser<> MyCommandParser; 17 | MyCommandParser servoCommandParser; 18 | int pulse = 170; 19 | int servo_id = 0; 20 | 21 | 22 | 23 | // the setup function runs once when you press reset or power the board 24 | void setup() { 25 | // initialize digital pin LED_BUILTIN as an output. 26 | pinMode(LED_BUILTIN, OUTPUT); 27 | 28 | Serial.begin(115200); 29 | 30 | while (!Serial); 31 | 32 | // 12-Bit 16 Channel PWM Module 33 | PWM.begin(); 34 | PWM.setPWMFreq(50); 35 | 36 | servoCommandParser.registerCommand("s", "uu", &cmd_servo); 37 | Serial.println("registered command: s "); 38 | Serial.println("example: s 0 150"); 39 | servoCommandParser.registerCommand("sleep", "", &servosSleep); 40 | Serial.println("registered command: sleep "); 41 | servoCommandParser.registerCommand("wake", "", &servosWake); 42 | Serial.println("registered command: wake "); 43 | Serial.println(""); 44 | } 45 | 46 | // the loop function runs over and over again forever 47 | void loop() { 48 | digitalWrite(LED_BUILTIN, HIGH); // turn the LED on (HIGH is the voltage level) 49 | delay(100); // wait for a second 50 | digitalWrite(LED_BUILTIN, LOW); // turn the LED off by making the voltage LOW 51 | delay(100); // wait for a second 52 | 53 | if (checkSerialInput()) 54 | writePWM(); 55 | } 56 | 57 | void cmd_servo(MyCommandParser::Argument *args, char *response) { 58 | servo_id = args[0].asInt64; 59 | pulse = args[1].asInt64; 60 | strlcpy(response, "success", MyCommandParser::MAX_RESPONSE_SIZE); 61 | } 62 | 63 | bool checkSerialInput(){ 64 | if (Serial.available()) { 65 | char line[128]; 66 | size_t lineLength = Serial.readBytesUntil('\n', line, 127); 67 | line[lineLength] = '\0'; 68 | 69 | char response[MyCommandParser::MAX_RESPONSE_SIZE]; 70 | servoCommandParser.processCommand(line, response); 71 | Serial.println(response); 72 | 73 | if (strcmp(response, "success") == 0) 74 | return true; 75 | } 76 | 77 | return false; 78 | // if (Serial.available() > 0) { 79 | // char symbol = Serial.read(); 80 | // Serial.print(symbol); 81 | // switch (symbol) { 82 | // case '0': 83 | // pos = 0; 84 | // break; 85 | // case '3': 86 | // pos = 30; 87 | // break; 88 | // case '9': 89 | // pos = 90; 90 | // break; 91 | // case '5': 92 | // pos = 150; 93 | // break; 94 | // case '8': 95 | // pos = 180; 96 | // break; 97 | // case '+': 98 | // pos += 5; 99 | // break; 100 | // case '-': 101 | // pos -= 5; 102 | // break; 103 | // } 104 | // } 105 | } 106 | 107 | void servosSleep(MyCommandParser::Argument *args, char *response) { 108 | PWM.sleep(); 109 | } 110 | 111 | void servosWake(MyCommandParser::Argument *args, char *response) { 112 | PWM.wakeup(); 113 | } 114 | 115 | void writePWM(){ 116 | Serial.printf("Servo %d: Pulse %d\n", servo_id, pulse); 117 | PWM.setPWM(servo_id, 0, pulse); 118 | 119 | } 120 | -------------------------------------------------------------------------------- /code/esp32_arduino/test_relay/test_relay.ino: -------------------------------------------------------------------------------- 1 | #define LatchingRelay D2 2 | void setup() 3 | { 4 | pinMode(LatchingRelay,OUTPUT); 5 | 6 | 7 | } 8 | void loop() 9 | { 10 | digitalWrite(LatchingRelay,LOW); 11 | delay(1000); 12 | digitalWrite(LatchingRelay,HIGH); 13 | delay(1000); 14 | } 15 | -------------------------------------------------------------------------------- /code/python/README.MD: -------------------------------------------------------------------------------- 1 | # Python Inverse Kinetics tests 2 | 3 | 4 | These scripts are or are adopted from https://gitlab.com/custom_robots/spotmicroai/simulation/-/blob/master/Basic%20simulation%20by%20user%20Florian%20Wilk/Kinematics/Kinematic.ipynb 5 | -------------------------------------------------------------------------------- /code/python/body_ik.py: -------------------------------------------------------------------------------- 1 | #https://gitlab.com/custom_robots/spotmicroai/simulation/-/blob/master/Basic%20simulation%20by%20user%20Florian%20Wilk/Kinematics/Kinematic.ipynb 2 | 3 | 4 | from mpl_toolkits import mplot3d 5 | import numpy as np 6 | from math import * 7 | import matplotlib.pyplot as plt 8 | 9 | L = 207.5 10 | W = 78 11 | 12 | def setupView(limit): 13 | ax = plt.axes(projection="3d") 14 | ax.set_xlim(-limit, limit) 15 | ax.set_ylim(-limit, limit) 16 | ax.set_zlim(-limit, limit) 17 | ax.set_xlabel("X") 18 | ax.set_ylabel("Z") 19 | ax.set_zlabel("Y") 20 | return ax 21 | 22 | def bodyIK(omega,phi,psi,xm,ym,zm): 23 | 24 | """ 25 | Calculate the four Transformation-Matrices for our Legs 26 | Rx=X-Axis Rotation Matrix 27 | Ry=Y-Axis Rotation Matrix 28 | Rz=Z-Axis Rotation Matrix 29 | Rxyz=All Axis Rotation Matrix 30 | T=Translation Matrix 31 | Tm=Transformation Matrix 32 | Trb,Trf,Tlb,Tlf=final Matrix for RightBack,RightFront,LeftBack and LeftFront 33 | """ 34 | 35 | Rx = np.array([ 36 | [1, 0, 0, 0], 37 | [0, np.cos(omega), -np.sin(omega), 0], 38 | [0,np.sin(omega),np.cos(omega),0], 39 | [0,0,0,1]]) 40 | 41 | Ry = np.array([ 42 | [np.cos(phi),0, np.sin(phi), 0], 43 | [0, 1, 0, 0], 44 | [-np.sin(phi),0, np.cos(phi),0], 45 | [0,0,0,1]]) 46 | 47 | Rz = np.array([ 48 | [np.cos(psi),-np.sin(psi), 0,0], 49 | [np.sin(psi),np.cos(psi),0,0], 50 | [0,0,1,0], 51 | [0,0,0,1]]) 52 | 53 | Rxyz=Rx.dot(Ry).dot(Rz) 54 | 55 | T = np.array([[0,0,0,xm],[0,0,0,ym],[0,0,0,zm],[0,0,0,0]]) 56 | Tm = T+Rxyz 57 | 58 | Trb = Tm.dot(np.array([ 59 | [np.cos(pi/2),0,np.sin(pi/2),-L/2], 60 | [0,1,0,0], 61 | [-np.sin(pi/2),0,np.cos(pi/2),-W/2], 62 | [0,0,0,1]])) 63 | 64 | Trf = Tm.dot(np.array([ 65 | [np.cos(pi/2),0,np.sin(pi/2),L/2], 66 | [0,1,0,0], 67 | [-np.sin(pi/2),0,np.cos(pi/2),-W/2], 68 | [0,0,0,1]])) 69 | 70 | Tlf = Tm.dot(np.array([ 71 | [np.cos(pi/2),0,np.sin(pi/2),L/2], 72 | [0,1,0,0], 73 | [-np.sin(pi/2),0,np.cos(pi/2),W/2], 74 | [0,0,0,1]])) 75 | 76 | Tlb = Tm.dot(np.array([ 77 | [np.cos(pi/2),0,np.sin(pi/2),-L/2], 78 | [0,1,0,0], 79 | [-np.sin(pi/2),0,np.cos(pi/2),W/2], 80 | [0,0,0,1]])) 81 | 82 | return (Tlf,Trf,Tlb,Trb,Tm) 83 | 84 | omega = 0 #pi/4 # Body xrot 85 | phi =0#math.pi/4# Body YRot 86 | psi = 0 #math.pi/6 # Body ZRot 87 | 88 | xm = 0 89 | ym = 0 90 | zm = 0 91 | 92 | (Tlf,Trf,Tlb,Trb,Tm)=bodyIK(omega,phi,psi,xm,ym,zm) 93 | 94 | FP=[0,0,0,1] 95 | 96 | CP=[x.dot(FP) for x in [Tlf,Trf,Tlb,Trb]] 97 | 98 | setupView(200).view_init(elev=27., azim=20) 99 | plt.plot([CP[0][0],CP[1][0],CP[3][0], CP[2][0],CP[0][0]], 100 | [CP[0][2],CP[1][2],CP[3][2], CP[2][2],CP[0][2]], 101 | [CP[0][1],CP[1][1],CP[3][1], CP[2][1],CP[0][1]], 'bo-', lw=2) 102 | 103 | plt.show() 104 | 105 | print("OK") -------------------------------------------------------------------------------- /code/python/ik.py: -------------------------------------------------------------------------------- 1 | #https://gitlab.com/custom_robots/spotmicroai/simulation/-/blob/master/Basic%20simulation%20by%20user%20Florian%20Wilk/Kinematics/Kinematic.ipynb 2 | 3 | from mpl_toolkits import mplot3d 4 | import numpy as np 5 | from math import * 6 | import matplotlib.pyplot as plt 7 | 8 | 9 | def setupView(limit): 10 | ax = plt.axes(projection="3d") 11 | ax.set_xlim(-limit, limit) 12 | ax.set_ylim(-limit, limit) 13 | ax.set_zlim(-limit, limit) 14 | ax.set_xlabel("X") 15 | ax.set_ylabel("Z") 16 | ax.set_zlabel("Y") 17 | return ax 18 | 19 | setupView(200).view_init(elev=12., azim=28) 20 | 21 | omega = pi/4 22 | phi =0 23 | psi = 0 24 | 25 | xm = 0 26 | ym = 0 27 | zm = 0 28 | 29 | L = 207.5 30 | W = 78 31 | l1=60.5 32 | l2=10 33 | l3=100.7 34 | l4=118.5 35 | 36 | 37 | Lp=np.array([[100,-100,100,1],[100,-100,-100,1],[-100,-100,100,1],[-100,-100,-100,1]]) 38 | 39 | sHp=np.sin(pi/2) 40 | cHp=np.cos(pi/2) 41 | 42 | Lo=np.array([0,0,0,1]) 43 | 44 | def bodyIK(omega,phi,psi,xm,ym,zm): 45 | Rx = np.array([[1,0,0,0], 46 | [0,np.cos(omega),-np.sin(omega),0], 47 | [0,np.sin(omega),np.cos(omega),0],[0,0,0,1]]) 48 | Ry = np.array([[np.cos(phi),0,np.sin(phi),0], 49 | [0,1,0,0], 50 | [-np.sin(phi),0,np.cos(phi),0],[0,0,0,1]]) 51 | Rz = np.array([[np.cos(psi),-np.sin(psi),0,0], 52 | [np.sin(psi),np.cos(psi),0,0],[0,0,1,0],[0,0,0,1]]) 53 | Rxyz=Rx.dot(Ry).dot(Rz) 54 | 55 | T = np.array([[0,0,0,xm],[0,0,0,ym],[0,0,0,zm],[0,0,0,0]]) 56 | Tm = T+Rxyz 57 | 58 | return([Tm.dot( np.array([[cHp,0,sHp,L/2],[0,1,0,0],[-sHp,0,cHp,W/2],[0,0,0,1]])), 59 | Tm.dot(np.array([[cHp,0,sHp,L/2],[0,1,0,0],[-sHp,0,cHp,-W/2],[0,0,0,1]])), 60 | Tm.dot(np.array([[cHp,0,sHp,-L/2],[0,1,0,0],[-sHp,0,cHp,W/2],[0,0,0,1]])), 61 | Tm.dot(np.array([[cHp,0,sHp,-L/2],[0,1,0,0],[-sHp,0,cHp,-W/2],[0,0,0,1]])) 62 | ]) 63 | 64 | def legIK(point): 65 | (x,y,z)=(point[0],point[1],point[2]) 66 | F=sqrt(x**2+y**2-l1**2) 67 | G=F-l2 68 | H=sqrt(G**2+z**2) 69 | theta1=-atan2(y,x)-atan2(F,-l1) 70 | 71 | D=(H**2-l3**2-l4**2)/(2*l3*l4) 72 | theta3=acos(D) 73 | 74 | theta2=atan2(z,G)-atan2(l4*sin(theta3),l3+l4*cos(theta3)) 75 | 76 | return(theta1,theta2,theta3) 77 | 78 | def calcLegPoints(angles): 79 | (theta1,theta2,theta3)=angles 80 | theta23=theta2+theta3 81 | 82 | T0=Lo 83 | T1=T0+np.array([-l1*cos(theta1),l1*sin(theta1),0,0]) 84 | T2=T1+np.array([-l2*sin(theta1),-l2*cos(theta1),0,0]) 85 | T3=T2+np.array([-l3*sin(theta1)*cos(theta2),-l3*cos(theta1)*cos(theta2),l3*sin(theta2),0]) 86 | T4=T3+np.array([-l4*sin(theta1)*cos(theta23),-l4*cos(theta1)*cos(theta23),l4*sin(theta23),0]) 87 | 88 | return np.array([T0,T1,T2,T3,T4]) 89 | 90 | def drawLegPoints(p): 91 | plt.plot([x[0] for x in p],[x[2] for x in p],[x[1] for x in p], 'k-', lw=3) 92 | plt.plot([p[0][0]],[p[0][2]],[p[0][1]],'bo',lw=2) 93 | plt.plot([p[4][0]],[p[4][2]],[p[4][1]],'ro',lw=2) 94 | 95 | def drawLegPair(Tl,Tr,Ll,Lr): 96 | Ix=np.array([[-1,0,0,0],[0,1,0,0],[0,0,1,0],[0,0,0,1]]) 97 | drawLegPoints([Tl.dot(x) for x in calcLegPoints(legIK(np.linalg.inv(Tl).dot(Ll)))]) 98 | drawLegPoints([Tr.dot(Ix).dot(x) for x in calcLegPoints(legIK(Ix.dot(np.linalg.inv(Tr)).dot(Lr)))]) 99 | 100 | def drawRobot(Lp,angles,center): 101 | (omega,phi,psi)=angles 102 | (xm,ym,zm)=center 103 | 104 | FP=[0,0,0,1] 105 | (Tlf,Trf,Tlb,Trb)= bodyIK(omega,phi,psi,xm,ym,zm) 106 | CP=[x.dot(FP) for x in [Tlf,Trf,Tlb,Trb]] 107 | 108 | CPs=[CP[x] for x in [0,1,3,2,0]] 109 | plt.plot([x[0] for x in CPs],[x[2] for x in CPs],[x[1] for x in CPs], 'bo-', lw=2) 110 | 111 | drawLegPair(Tlf,Trf,Lp[0],Lp[1]) 112 | drawLegPair(Tlb,Trb,Lp[2],Lp[3]) 113 | 114 | drawRobot(Lp,(0.4,0,0),(0,0,0)) 115 | 116 | plt.show() -------------------------------------------------------------------------------- /code/python/leg_ik.py: -------------------------------------------------------------------------------- 1 | #https://gitlab.com/custom_robots/spotmicroai/simulation/-/blob/master/Basic%20simulation%20by%20user%20Florian%20Wilk/Kinematics/Kinematic.ipynb 2 | 3 | from mpl_toolkits import mplot3d 4 | import numpy as np 5 | from math import * 6 | import matplotlib.pyplot as plt 7 | 8 | def setupView(limit, y): 9 | ax = plt.axes(projection="3d") 10 | ax.set_xlim(-limit, limit) 11 | ax.set_ylim(-limit, limit) 12 | ax.set_zlim(y, limit) 13 | ax.set_xlabel("X") 14 | ax.set_ylabel("Z") 15 | ax.set_zlabel("Y") 16 | return ax 17 | 18 | 19 | l1=60.5 20 | l2=10 21 | l3=100.7 22 | l4=118.5 23 | 24 | 25 | 26 | x=-l1 27 | z=(l4-l3) 28 | y=-l2 29 | 30 | 31 | setupView(110, y).view_init(elev=20., azim=135) 32 | 33 | 34 | def legIK(x,y,z): 35 | 36 | """ 37 | x/y/z=Position of the Foot in Leg-Space 38 | 39 | F=Length of shoulder-point to target-point on x/y only 40 | G=length we need to reach to the point on x/y 41 | H=3-Dimensional length we need to reach 42 | """ 43 | 44 | F=sqrt(x**2+y**2-l1**2) 45 | G=F-l2 46 | H=sqrt(G**2+z**2) 47 | 48 | print("F {:.2f}, G {:.2f}, H {:.2f}".format(F, G, H)) 49 | 50 | theta1=-atan2(y,x)-atan2(F,-l1) 51 | 52 | D=(H**2-l3**2-l4**2)/(2*l3*l4) 53 | print("D {:.2f}".format(D)) 54 | theta3=acos(D) 55 | 56 | theta2=atan2(z,G)-atan2(l4*sin(theta3),l3+l4*cos(theta3)) 57 | print("theta2 {:.2f}-atan2({:.2f},{:.2f}) ({:.2f})".format(atan2(z,G), l4*sin(theta3), l3+l4*cos(theta3), atan2(l4*sin(theta3),l3+l4*cos(theta3)))) 58 | 59 | print (degrees(theta1), degrees(theta2), degrees(theta3)) 60 | 61 | return(theta1,theta2,theta3) 62 | 63 | def calcLegPoints(angles): 64 | 65 | (theta1,theta2,theta3)=angles 66 | theta23=theta2+theta3 67 | 68 | T0=np.array([0,0,0,1]) 69 | T1=T0+np.array([-l1*cos(theta1),l1*sin(theta1),0,0]) 70 | T2=T1+np.array([-l2*sin(theta1),-l2*cos(theta1),0,0]) 71 | T3=T2+np.array([-l3*sin(theta1)*cos(theta2),-l3*cos(theta1)*cos(theta2),l3*sin(theta2),0]) 72 | T4=T3+np.array([-l4*sin(theta1)*cos(theta23),-l4*cos(theta1)*cos(theta23),l4*sin(theta23),0]) 73 | 74 | return np.array([T0,T1,T2,T3,T4]) 75 | 76 | def drawLegPoints(p): 77 | 78 | plt.plot([p[0][0],p[1][0],p[2][0],p[3][0],p[4][0]], 79 | [p[0][2],p[1][2],p[2][2],p[3][2],p[4][2]], 80 | [p[0][1],p[1][1],p[2][1],p[3][1],p[4][1]], 'k-', lw=3) 81 | plt.plot([p[0][0]],[p[0][2]],[p[0][1]],'bo',lw=2) 82 | plt.plot([p[4][0]],[p[4][2]],[p[4][1]],'ro',lw=2) 83 | 84 | angles = legIK(x,y,z) 85 | drawLegPoints(calcLegPoints(angles)) 86 | 87 | 88 | # for z in range(-100,150,50): 89 | # drawLegPoints(calcLegPoints(legIK(x+25,y,z))) 90 | # drawLegPoints(calcLegPoints(legIK(x-50,y,z))) 91 | 92 | print("OK") 93 | 94 | plt.title("{:.0f} {:.0f} {:.0f}".format(degrees(angles[0]), degrees(angles[1]), degrees(angles[2]))) 95 | plt.savefig('leg_ik.png') 96 | 97 | plt.show() 98 | 99 | print("OK\n") -------------------------------------------------------------------------------- /code/python/test_ik.py: -------------------------------------------------------------------------------- 1 | from math import * 2 | 3 | 4 | L1=60.5 5 | L2=10 6 | L3=100.7 7 | L4=118.5 8 | 9 | x = L1 10 | y = -(L3+L4) 11 | z = 0 12 | 13 | L1L2 = L1**2+L2**2 14 | LL = 2*L1*L2 15 | 16 | Rxy = sqrt(x**2+y**2-L1**2) 17 | t1 = degrees(-atan2(y, x) - atan2(Rxy,-L1)) 18 | 19 | print ("Ryz", Rxy) 20 | print ("t1", t1) 21 | 22 | Dxy = Rxy - L2 23 | Dxyz = sqrt(Dxy*Dxy+x*x) 24 | print ("Dxy", Dxy) 25 | print ("Dxyz", Dxyz) 26 | 27 | 28 | D=(Dxyz**2-L2**2-L4**2)/(2*L3*L4) 29 | 30 | print ("D", D) 31 | t3=degrees(atan2(-sqrt(1-D*D),D)) 32 | 33 | print ("t3", t3) 34 | 35 | t2=degrees(atan2(z,Dxy)-atan2(L4*sin(t3),L3+L4*cos(t3))) 36 | 37 | print ("t2", t2) -------------------------------------------------------------------------------- /img/youtube_iktest.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/maartenweyn/SpotMicro_ESP32/d8bbf69276bf898c95bcf79fbbfe0ffbd39bdb13/img/youtube_iktest.jpg --------------------------------------------------------------------------------