├── .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 | [](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 |
3 |
4 |
5 | Refresh device list
6 |
7 | Gevonden bluetooth devices
8 |
9 |
10 | Geen gevonden
11 |
12 |
13 |
14 |
15 |
16 |
17 | Verbonden met
18 |
19 | no device connected
20 |
21 |
22 | Disconnect
23 |
24 |
25 |
26 | Ontvangen berichten
27 |
28 |
29 | geen berichten
30 |
31 |
32 |
33 |
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 |
24 |
25 |
26 |
27 |
28 |
29 | Refresh device list
30 |
31 | Found bluetooth devices
32 |
33 |
34 | No Spots
35 |
36 |
37 |
38 |
39 |
40 |
41 | Connected to
42 |
43 | no device connected
44 |
45 |
46 | Disconnect
47 |
48 |
49 |
57 |
58 |
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 | 
6 | 
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 |
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 |
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 |
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 |
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 |
19 |
20 |
21 |
22 |
Example
23 |
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 |
11 |
12 |
13 |
14 |
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 |
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 |
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 |
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 |
--------------------------------------------------------------------------------
/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 |
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 |
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 |
7 |
8 | Message Text
9 |
10 |
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 |
--------------------------------------------------------------------------------
/code/cordova/spotcontroller/www/lib/OnsenUI/css-components-src/src/img/ios-search-input-icon.svg:
--------------------------------------------------------------------------------
1 |
2 |
--------------------------------------------------------------------------------
/code/cordova/spotcontroller/www/lib/OnsenUI/css-components-src/src/img/select-arrow.svg:
--------------------------------------------------------------------------------
1 |
2 |
--------------------------------------------------------------------------------
/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 |
21 |
22 | clientId
23 |
24 |
27 |
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
--------------------------------------------------------------------------------