@mxtommy/kip 2.4.0 → 2.4.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (59) hide show
  1. package/CHANGELOG.md +14 -6
  2. package/README.md +54 -40
  3. package/package.json +7 -7
  4. package/public/assets/apple-icon-180.png +0 -0
  5. package/public/assets/apple-splash-1125-2436.jpg +0 -0
  6. package/public/assets/apple-splash-1136-640.jpg +0 -0
  7. package/public/assets/apple-splash-1170-2532.jpg +0 -0
  8. package/public/assets/apple-splash-1179-2556.jpg +0 -0
  9. package/public/assets/apple-splash-1242-2208.jpg +0 -0
  10. package/public/assets/apple-splash-1242-2688.jpg +0 -0
  11. package/public/assets/apple-splash-1284-2778.jpg +0 -0
  12. package/public/assets/apple-splash-1290-2796.jpg +0 -0
  13. package/public/assets/apple-splash-1334-750.jpg +0 -0
  14. package/public/assets/apple-splash-1536-2048.jpg +0 -0
  15. package/public/assets/apple-splash-1620-2160.jpg +0 -0
  16. package/public/assets/apple-splash-1668-2224.jpg +0 -0
  17. package/public/assets/apple-splash-1668-2388.jpg +0 -0
  18. package/public/assets/apple-splash-1792-828.jpg +0 -0
  19. package/public/assets/apple-splash-2048-1536.jpg +0 -0
  20. package/public/assets/apple-splash-2048-2732.jpg +0 -0
  21. package/public/assets/apple-splash-2160-1620.jpg +0 -0
  22. package/public/assets/apple-splash-2208-1242.jpg +0 -0
  23. package/public/assets/apple-splash-2224-1668.jpg +0 -0
  24. package/public/assets/apple-splash-2388-1668.jpg +0 -0
  25. package/public/assets/apple-splash-2436-1125.jpg +0 -0
  26. package/public/assets/apple-splash-2532-1170.jpg +0 -0
  27. package/public/assets/apple-splash-2556-1179.jpg +0 -0
  28. package/public/assets/apple-splash-2688-1242.jpg +0 -0
  29. package/public/assets/apple-splash-2732-2048.jpg +0 -0
  30. package/public/assets/apple-splash-2778-1284.jpg +0 -0
  31. package/public/assets/apple-splash-2796-1290.jpg +0 -0
  32. package/public/assets/apple-splash-640-1136.jpg +0 -0
  33. package/public/assets/apple-splash-750-1334.jpg +0 -0
  34. package/public/assets/apple-splash-828-1792.jpg +0 -0
  35. package/public/assets/apple-touch-icon.png +0 -0
  36. package/public/assets/favicon-16x16.png +0 -0
  37. package/public/assets/favicon-32x32.png +0 -0
  38. package/public/assets/favicon.ico +0 -0
  39. package/public/assets/favicon.png +0 -0
  40. package/public/assets/favicon.svg +128 -0
  41. package/public/assets/icon-192x192.png +0 -0
  42. package/public/assets/icon-256x256.png +0 -0
  43. package/public/assets/icon-384x384.png +0 -0
  44. package/public/assets/icon-512x512.png +0 -0
  45. package/public/assets/icon-64x64.png +0 -0
  46. package/public/assets/icon-72x72.png +0 -0
  47. package/public/assets/manifest-icon-192.maskable.png +0 -0
  48. package/public/assets/manifest-icon-512.maskable.png +0 -0
  49. package/public/assets/screenshot-540x720.png +0 -0
  50. package/public/assets/screenshot-720x540.png +0 -0
  51. package/public/index.html +48 -14
  52. package/public/main.abf26f717737e775.js +1 -0
  53. package/public/manifest.json +66 -37
  54. package/public/styles.a5d5fc1506885765.css +1 -0
  55. package/public/favicon.ico +0 -0
  56. package/public/main.js +0 -1
  57. package/public/styles.css +0 -1
  58. /package/public/{polyfills.js → polyfills.64db6be9cdc8f808.js} +0 -0
  59. /package/public/{runtime.js → runtime.e75056c32c37f59d.js} +0 -0
package/CHANGELOG.md CHANGED
@@ -1,7 +1,15 @@
1
+
2
+ # V 2.4.1
3
+ ## Fixes
4
+ * Progressive Web Application feature for mobile devices
5
+ * Random conflicting double tab action on mobile devices causing screen zoom instead of Night Mode activation
6
+ * Removed widget data stream filtering of null values
7
+ * Help and data browser navigation actions skipping current widget active page
1
8
  # V 2.4.0
2
9
  ## New features
3
- * Added Numeric, Date and Text Widgets color support
4
- * Added Next Waypoint bearing indicator to Wind Widget
10
+ * Gesture Support: Added horizontal Swipe to cycle pages and Double Tab to toggle night mode
11
+ * Numeric, Date and Text Widgets: Added configurable color support
12
+ * Wind Widget: Added Next Waypoint bearing indicator
5
13
  * Added support for Widget data expiration (TTL). Previously Widget stayed still when a source stopped sending data or the server connection was lost.
6
14
  ## Improvements
7
15
  * Strengthen Widget configuration management when adding new KIP properties
@@ -28,10 +36,10 @@
28
36
  # V 2.2.0
29
37
  ## New features
30
38
  * Option to enable automatic day and night modes activation based on sun phases
31
- * Path data throttling feature added to Widget Options's Paths offering greater flexibilty in UI experience
39
+ * Path data throttling feature added to Widget Options Paths providing greater flexibilty and UI experience
32
40
  # V 2.1.3
33
41
  ## Improvements
34
- * Upgrade v6 configuration
42
+ * automatic upgrade of older KIP v6 configuration
35
43
  # V 2.1.2
36
44
  ## Fixes
37
45
  * Package description typo and changelog updates
@@ -50,9 +58,9 @@
50
58
  * Bump @babel/traverse from 7.23.0 to 7.23.2 by @dependabot in https://github.com/mxtommy/Kip/pull/194
51
59
  # V 2.0.1
52
60
  ## Improvements
53
- * Update: KIP Icon
61
+ * KIP icon update
54
62
  ## Fixes
55
- * Fix: Object reference error and polyfills by @godind in https://github.com/mxtommy/Kip/commit/73f47aec694ccfe6ea2f1b92ad23dcc53b41e09f
63
+ * Object reference error and polyfills by @godind in https://github.com/mxtommy/Kip/commit/73f47aec694ccfe6ea2f1b92ad23dcc53b41e09f
56
64
  # V 2.0.0
57
65
  ## New features
58
66
  * Breaking Change - KIP configuration sharing using Signal K user key data storage feature
package/README.md CHANGED
@@ -14,27 +14,44 @@ The idea is to replicate the functionality of MFDs such as the B&G Triton, Rayma
14
14
 
15
15
  # Features
16
16
  ## Access from Phones, Tablets, Raspberry Pi and Computers
17
- Simply navigate to `http://<Signal K Server URL>:<Signal K Server port>/@mxtommy/kip` to load KIP and enjoy it's features remotely on any device.
17
+ Simply navigate to `http://<Signal K Server URL>:<port>/@mxtommy/kip` to load KIP and enjoy it's features remotely on any device.
18
18
 
19
19
  ### Responsive Design
20
- KIP adjust to the device type and form factor for the best possible user experience.
20
+ KIP adjusts to the device type and form factor for the best possible user experience.
21
21
 
22
22
  ### Touch Devices
23
23
  - Swipe left and right to cycle trough your Widget layouts.
24
24
  - Double tap to toggle night mode.
25
25
 
26
+ ### Run KIP As a Web Application
27
+ Run KIP in full screen, with no browser controls visible, just like regular mobile apps. This feature is supported on most mobile OS. Each browser has it's own way of handling PWA deployments.
28
+
29
+ To install KIP as an App, first load KIP in the browser. Then follow the steps below:
30
+
31
+ **iOS**
32
+ 1. Press the "Share" button
33
+ 2. Select "Add to Home Screen" from the action popup list
34
+ 3. Tap "Add" in the top right corner to finish installing
35
+ KIP is now installed and available on your home screen
36
+
37
+ **Android**
38
+ 1. Press the "three dot" icon in the upper right to open the menu
39
+ 2. Select "Add to Home screen"
40
+ 3. Press the "Add" button in the popup
41
+ KIP is now installed and available on your home screen
42
+
26
43
  ## Multiple User Profiles
27
- If you have different roles on board; captain, skipper, tactician, navigator, engineers or simply different people with different needs, each can tailor as they wish. The use of profiles can also offers the ability to tie specific configuration arrangements to use case or form factors.
44
+ If you have different roles on board; captain, skipper, tactician, navigator, engineers or simply different people with different needs, each can tailor as they wish. The use of profiles can also offer the ability to tie specific configuration arrangements to use case or device form factors.
28
45
 
29
46
  ## User Experience
30
47
 
31
48
  ### Night Mode
32
- Keep your night vision with a simple tap, regardless of the selected theme. The below image looks very dark, but at night...it's perfect!
49
+ Keep your night vision with a simple double tap. The below image looks very dark, but at night...it's perfect!
33
50
 
34
51
  ![Night mode](./KipNightMode-1024x488.png)
35
52
 
36
53
  ### Built-in Themes
37
- Use your favorite style from the built-in themes gallery.
54
+ Apply your favorite style from the built-in themes gallery.
38
55
 
39
56
  Modern Dark Theme
40
57
  ![Modern Dark Theme](./KipSample-1-1024x488.png)
@@ -48,24 +65,24 @@ The idea is to replicate the functionality of MFDs such as the B&G Triton, Rayma
48
65
  NOTE: Request a new theme by sending us inspirational/reference material (web sites, picture, etc.).
49
66
  If we fall in love, we will do it. Even better, branch and contribute yourself. We will assist and guide!
50
67
 
51
- ## Gauge Layout and Configuration
68
+ ## Page Layouts and Configuration
52
69
  ### Flexible and Easy
53
- Meant to build purposeful screen(s) with however many gauges or widgets you want, where you want them.
70
+ Meant to build purposeful screen(s) with however many widgets you want, where you want them.
54
71
 
55
- Quickly divide the screen area into zones, resize and position, add the gauge of your choosing. Need more? Add as many additional pages as you whish to keep screens purposeful. Simply tap the navigation button keys to quickly rotate from page to page.
72
+ Quickly split pages into multiple areas, resize and aligne to your liking, add the widget of your choosing to each area. Need more? Add as many additional pages as you whish to keep your display purposeful. Simply swipe left and right or use the bottom page navigation button to quickly cycle from page to page.
56
73
  ![Layouts Configuration Image](./KipWidgetConfig-layout-1024x488.png)
57
74
 
58
- Easy basic gauge and widget configuration.
75
+ Easy basic widget configuration.
59
76
  ![Gauges Configuration Image](./KipConfig-display-1024x488.png)
60
77
 
61
- See what Signal K has to offer that you can leverage in a gauge. Select it and tweak the display options for your purpose.
78
+ See what Signal K has to offer that you can leverage with widgets. Select it and tweak the display options your your purpose.
62
79
  ![Paths Configuration Image](./KipWidgetConfig-paths-1024x488.png)
63
80
 
64
- Many units are supported. Choose your preferred App defaults, than tweak it gauge-by-gauge as necessary. KIP will convert the displayed units for you.
81
+ Many units are supported. Choose your preferred App defaults, than tweak it widget-by-widget as necessary. KIP will automatically convert the units for you.
65
82
  ![Units Configuration Image](./KipConfig-Units-1024x488.png)
66
83
 
67
- ### Reusable Gauge and Widget Library
68
- All KIP Gauges and Widgets are visual presentation controls that are very versatile with multiple advanced configuration options available to suit your needs:
84
+ ### Reusable Widget Library
85
+ All KIP Widgets are visual presentation controls that are very versatile with multiple advanced configuration options available to suit your needs:
69
86
  - Text display: Create gauges to display any textual data sent by your system - MPPT state, vessel details,Next Waypoint, Fusion radio song information, noon and sun phases, any system components configuration detail or statues available, etc.
70
87
  - Numeric display: Create gauges to display any numerical data sent by your system - SOG, Depth, Winds Speed, VMG, refrigerator temperature, weather data, etc.
71
88
  - Wind gauge: Your typical sailboat wind gauge
@@ -82,10 +99,10 @@ The idea is to replicate the functionality of MFDs such as the B&G Triton, Rayma
82
99
 
83
100
  Get the latest version of KIP to see what's new!
84
101
 
85
- Gauge types sample
102
+ Widget Types Sample
86
103
  ![Sample Gauges Image](./KipGaugeSample1-1024x545.png)
87
104
 
88
- Electrical and Tank monitoring sample
105
+ Electrical and Tank Monitoring Sample
89
106
  ![Electrical Concept Image](./KipGaugeSample2-1024x488.png)
90
107
 
91
108
  Grafana Embedded Webpage sample
@@ -93,59 +110,56 @@ The idea is to replicate the functionality of MFDs such as the B&G Triton, Rayma
93
110
 
94
111
  ### Harness The Power Of Data State Notifications
95
112
  Stay informed with notifications about the state of the data you are interested in.
96
- As an example, KIP can notify (inform, warn, alert) you when the water depth or a temperature sensor reaches certain levels. In addition to KIP's centralized basic visual and audio notification support, each type of Widget offers a tailored visual representation appropriate
97
- to their design objectives for an optimal user experience.
113
+ As an example, KIP will notify you (inform, warn, alert) when a water depth or temperature sensors reaches certain levels. In addition to KIP's centralized basic visual and audio notification feature, each Widget offers a tailored visual representation appropriate
114
+ to their design objectives providing an optimal user experience.
98
115
 
99
- # Developing
116
+ # How To Contribute to KIP
100
117
 
101
- KIP is built on Angular using various open-source assets. All free!
118
+ KIP is under MIT license and is built with Nodes and Angular using various open-source assets. All free!
102
119
 
103
120
  **Tools**
104
121
 
105
122
  Linux, Macs, Pi or Windows dev platform supported
106
- 1. Install the latest Node version (v16+)
123
+ 1. Install the latest Node version (v16+, v18 recommended)
107
124
  2. Download your favorite coding IDE (we use the free Visual Code)
108
125
  3. Create your own GitHub KIP fork.
109
- 4. Configure your IDE's source control to point to this fork (With Visual Code, GitHub support is built-in) and get the latest Master branch locally.
126
+ 4. Configure your IDE's source control to point to your forked KIP instance (With Visual Code, GitHub support is built-in) and get the latest Master branch locally.
110
127
 
111
128
  **Setup**
112
129
  1. From your fork's Master branch, create working branch with a name such as: New-Widget-abc or fix-issue-abc, etc.
113
130
  2. Checkout this new Branch to get the source code locally.
114
131
  3. In a command shell (or in the Visual Code Terminal window), go to the root of you local project folder.
115
- 4. Install project dependencies using NPM package and dependency manager: run `npm install`. NPM will read local Kip project dependencies (see Steps 2), download and install everything automatically for you.
116
- 5. Build the app locally using Angular-CLI: from that same project root folder, run `ng build`. CLI tool will read local Kip project configuration and set the base href(see Tools - steps 4) and build everything.
132
+ 4. Install project dependencies using NPM package and dependency manager: run `npm install`. NPM will read Kip project dependencies (see Steps 2), download and install everything automatically for you.
133
+ 5. Build the app locally using Angular-CLI: from that same project root folder, run `ng build`. CLI tool will build KIP.
117
134
 
118
135
  **Work**
119
- 1. Fire up your local dev instance with CLI using `ng serve --configuration=dev --serve-path=/` to enable the debugger map file loading.
120
- 2. Hit Run/Start Debugging in Visual Code or point your favorite browser to `http://localhost:4200/`
121
- 3. Voila! You can build, test and fix.
136
+ 1. Fire up your local dev instance with `npm run dev`.
137
+ 2. Hit Run/Start Debugging in Visual Code or point your favorite browser to `http://localhost:4200/@mxtommy/kip`
138
+ 3. Voila!
122
139
 
123
140
  *As you work on source code and save files, the app will automatically reload in the browser with your latest changes.*
141
+ *You also need a running Signal K server for KIP to connect to and receive data.*
124
142
 
125
- **Publish**
126
- 1. Once done with your work, from your fork's working branch, make a GitHub pull request to have your code reviewed, merged and part of the next release.
127
-
128
- Or
143
+ **Apple PWA Icon Generation**
144
+ Use the following tool and command line: npx pwa-asset-generator ./src/svg-templates/KIP-icon.svg ./src/assets/ -i ./src/index.html -m ./src/manifest.json -b "linear-gradient(to bottom, rgba(255,255,255,0.15) 0%, rgba(0,0,0,0.15) 100%), radial-gradient(at top center, rgba(255,255,255,0.40) 0%, rgba(0,0,0,0.40) 120%) #989898" -p 5%
129
145
 
130
- 2. Build your own production version:
131
- 1. Build: In a terminal from you project folder, use `ng build --configuration=production` to generate a production build.
132
- 2. Have fun!
146
+ **Share**
147
+ Once done with your work, from your fork's working branch, make a GitHub pull request to have your code reviewed, merged and part of the next release.
133
148
 
134
149
  **Communication and Collaboration**
135
- Join us on Slack -> Signalk-dev / Apps_and_client channel. We will hook up and assist as best we can.
150
+ Join us on Slack -> Signalk-dev / Kip channel. We will hook up and assist as best we can.
136
151
 
137
152
  # Feature Ideas
138
153
  * AIS Widget - Help Wanted
139
154
  * Light indicator Widget for Boolean paths
140
155
  * Fuel Consumption Widget
141
156
  * GPS information Widget - Help Wanted
142
- * Improved Metadata configuration
143
- * Improved Zones support
144
- * Add a KIP Widget CLI Schematic to automate new Widget creation and improve contribution
145
- * Improved error logging / performance gain
157
+ * Improve Metadate/Zones support
158
+ * Add a KIP Widget CLI Schematic to automate new Widget creation and facilitate app contributions
159
+ * Improved error logging
146
160
  * Retire outdated SteelGauges
147
- * Rebuild alerting to new Signal K Specifications
161
+ * Upgrade notifications and navigation API to new Signal K Specifications
148
162
  * Attitude Indicator Widget - Help Wanted
149
163
  * Sailing Polars Widget - Help Wanted
150
- * More Customization options for radial/linear Gauges
164
+ * More customization options for radial/linear Gauges
151
165
  * Pre-created Widgets for commonly used displays
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@mxtommy/kip",
3
- "version": "2.4.0",
3
+ "version": "2.4.1",
4
4
  "description": "An advanced and versatile marine instrumentation package to display Signal K data.",
5
5
  "license": "MIT",
6
6
  "author": {
@@ -30,14 +30,13 @@
30
30
  "nmea"
31
31
  ],
32
32
  "signalk": {
33
- "appIcon": "./assets/icon-72x72.png",
33
+ "appIcon": "assets/icon-72x72.png",
34
34
  "displayName": "KIP Instrument MFD"
35
35
  },
36
36
  "scripts": {
37
- "ng": "ng",
38
- "start": "ng serve --configuration=dev --serve-path=/",
39
- "build-dev": "ng build --configuration=dev --base-href=/@mxtommy/kip/",
40
- "build-prod": "ng build --configuration=production --base-href=/@mxtommy/kip/",
37
+ "dev": "ng serve --configuration=dev --serve-path=/@mxtommy/kip/",
38
+ "build-dev": "ng build --configuration=dev",
39
+ "build-prod": "ng build --configuration=production",
41
40
  "test": "ng test",
42
41
  "lint": "ng lint",
43
42
  "e2e": "ng e2e"
@@ -69,7 +68,8 @@
69
68
  "ts-node": "^8.10.2",
70
69
  "tslib": "^2.2.0",
71
70
  "tslint": "^6.1.3",
72
- "typescript": "^4.6.4"
71
+ "typescript": "^4.6.4",
72
+ "pwa-asset-generator": "^6.3.1"
73
73
  },
74
74
  "dependencies": {
75
75
  "@angular/animations": "14.3.0",
Binary file
Binary file
Binary file
Binary file
Binary file
@@ -0,0 +1,128 @@
1
+ <?xml version="1.0" encoding="UTF-8" standalone="no"?>
2
+ <svg
3
+ version="1.1"
4
+ width="1000"
5
+ height="1000"
6
+ id="svg3"
7
+ sodipodi:docname="favicon.svg"
8
+ inkscape:version="1.3.2 (091e20e, 2023-11-25)"
9
+ xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
10
+ xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
11
+ xmlns="http://www.w3.org/2000/svg"
12
+ xmlns:svg="http://www.w3.org/2000/svg"
13
+ xmlns:svgjs="http://svgjs.com/svgjs">
14
+ <defs
15
+ id="defs3" />
16
+ <g
17
+ transform="matrix(1.953125,0,0,1.953125,0,0)"
18
+ id="g2">
19
+ <svg
20
+ version="1.1"
21
+ width="512"
22
+ height="512"
23
+ id="svg2">
24
+ <svg
25
+ width="512"
26
+ height="512"
27
+ viewBox="0 0 135.46667 135.46667"
28
+ version="1.1"
29
+ id="svg1">
30
+ <sodipodi:namedview
31
+ id="namedview1"
32
+ pagecolor="#ffffff"
33
+ bordercolor="#000000"
34
+ borderopacity="0.25"
35
+ inkscape:showpageshadow="2"
36
+ inkscape:pageopacity="0.0"
37
+ inkscape:pagecheckerboard="true"
38
+ inkscape:deskcolor="#d1d1d1"
39
+ inkscape:document-units="px"
40
+ inkscape:lockguides="true"
41
+ inkscape:zoom="0.41030501"
42
+ inkscape:cx="481.34923"
43
+ inkscape:cy="498.40971"
44
+ inkscape:window-width="1224"
45
+ inkscape:window-height="732"
46
+ inkscape:window-x="217"
47
+ inkscape:window-y="25"
48
+ inkscape:window-maximized="0"
49
+ inkscape:current-layer="layer1">
50
+ <sodipodi:guide
51
+ position="0,135.46667"
52
+ orientation="0,512"
53
+ id="guide1"
54
+ inkscape:locked="true" />
55
+ <sodipodi:guide
56
+ position="135.46667,135.46667"
57
+ orientation="512,0"
58
+ id="guide2"
59
+ inkscape:locked="true" />
60
+ <sodipodi:guide
61
+ position="135.46667,0"
62
+ orientation="0,-512"
63
+ id="guide3"
64
+ inkscape:locked="true" />
65
+ <sodipodi:guide
66
+ position="0,0"
67
+ orientation="-512,0"
68
+ id="guide4"
69
+ inkscape:locked="true" />
70
+ </sodipodi:namedview>
71
+ <defs
72
+ id="defs1" />
73
+ <g
74
+ inkscape:label="Layer 1"
75
+ inkscape:groupmode="layer"
76
+ id="layer1">
77
+ <rect
78
+ style="fill:#4b4b4b;fill-opacity:1;stroke-width:2.117;stroke-linecap:square;stroke-dasharray:none"
79
+ id="rect4"
80
+ width="135.46667"
81
+ height="135.46667"
82
+ x="0"
83
+ y="0"
84
+ sodipodi:insensitive="true" />
85
+ <text
86
+ xml:space="preserve"
87
+ style="font-weight:bold;font-size:25.4px;font-family:Arial;-inkscape-font-specification:'Arial, Bold';fill:#c3c3c3;fill-opacity:0.415507;stroke-width:2.117;stroke-linecap:square;stroke-dasharray:none"
88
+ x="4.9013381"
89
+ y="24.292282"
90
+ id="text4"
91
+ svgjs:data="{&quot;leading&quot;:&quot;1.3&quot;}"><tspan
92
+ sodipodi:role="line"
93
+ id="tspan4"
94
+ style="fill:#c3c3c3;fill-opacity:0.415507;stroke-width:2.117"
95
+ x="4.9013381"
96
+ y="24.292282"
97
+ svgjs:data="{&quot;leading&quot;:&quot;1.3&quot;}">Speed</tspan></text>
98
+ <text
99
+ xml:space="preserve"
100
+ style="font-weight:bold;font-size:89.7086px;font-family:Arial;-inkscape-font-specification:'Arial, Bold';fill:#fffcfc;fill-opacity:1;stroke-width:7.4769;stroke-linecap:square;stroke-dasharray:none"
101
+ x="5.9710636"
102
+ y="103.15202"
103
+ id="text5"
104
+ svgjs:data="{&quot;leading&quot;:&quot;1.3&quot;}"><tspan
105
+ sodipodi:role="line"
106
+ id="tspan5"
107
+ style="fill:#fffcfc;fill-opacity:1;stroke-width:7.4769"
108
+ x="5.9710636"
109
+ y="103.15202"
110
+ svgjs:data="{&quot;leading&quot;:&quot;1.3&quot;}">9.8</tspan></text>
111
+ <text
112
+ xml:space="preserve"
113
+ style="font-weight:bold;font-size:21.2566px;font-family:Arial;-inkscape-font-specification:'Arial, Bold';fill:#fffcfc;fill-opacity:1;stroke-width:1.77166;stroke-linecap:square;stroke-dasharray:none"
114
+ x="74.298759"
115
+ y="128.38905"
116
+ id="text6"
117
+ svgjs:data="{&quot;leading&quot;:&quot;1.3&quot;}"><tspan
118
+ sodipodi:role="line"
119
+ id="tspan6"
120
+ style="stroke-width:1.77166"
121
+ x="74.298759"
122
+ y="128.38905"
123
+ svgjs:data="{&quot;leading&quot;:&quot;1.3&quot;}">knots</tspan></text>
124
+ </g>
125
+ </svg>
126
+ </svg>
127
+ </g>
128
+ </svg>
Binary file
Binary file
Binary file
Binary file
Binary file
Binary file
package/public/index.html CHANGED
@@ -1,15 +1,49 @@
1
- <!DOCTYPE html><html lang="en"><head><base href="./">
2
- <meta charset="utf-8" name="viewport" content="user-scalable=no, width=device-width, initial-scale=1, maximum-scale=1">
3
- <title>KIP</title>
4
- <link rel="icon" type="image/x-icon" href="favicon.ico">
5
- <style>@-webkit-keyframes fa-beat{0%,90%{-webkit-transform:scale(1);transform:scale(1)}45%{-webkit-transform:scale(var(--fa-beat-scale,1.25));transform:scale(var(--fa-beat-scale,1.25))}}@-webkit-keyframes fa-bounce{0%{-webkit-transform:scale(1) translateY(0);transform:scale(1) translateY(0)}10%{-webkit-transform:scale(var(--fa-bounce-start-scale-x,1.1),var(--fa-bounce-start-scale-y,.9)) translateY(0);transform:scale(var(--fa-bounce-start-scale-x,1.1),var(--fa-bounce-start-scale-y,.9)) translateY(0)}30%{-webkit-transform:scale(var(--fa-bounce-jump-scale-x,.9),var(--fa-bounce-jump-scale-y,1.1)) translateY(var(--fa-bounce-height,-.5em));transform:scale(var(--fa-bounce-jump-scale-x,.9),var(--fa-bounce-jump-scale-y,1.1)) translateY(var(--fa-bounce-height,-.5em))}50%{-webkit-transform:scale(var(--fa-bounce-land-scale-x,1.05),var(--fa-bounce-land-scale-y,.95)) translateY(0);transform:scale(var(--fa-bounce-land-scale-x,1.05),var(--fa-bounce-land-scale-y,.95)) translateY(0)}57%{-webkit-transform:scale(1) translateY(var(--fa-bounce-rebound,-.125em));transform:scale(1) translateY(var(--fa-bounce-rebound,-.125em))}64%{-webkit-transform:scale(1) translateY(0);transform:scale(1) translateY(0)}to{-webkit-transform:scale(1) translateY(0);transform:scale(1) translateY(0)}}@-webkit-keyframes fa-fade{50%{opacity:var(--fa-fade-opacity,.4)}}@-webkit-keyframes fa-beat-fade{0%,to{opacity:var(--fa-beat-fade-opacity,.4);-webkit-transform:scale(1);transform:scale(1)}50%{opacity:1;-webkit-transform:scale(var(--fa-beat-fade-scale,1.125));transform:scale(var(--fa-beat-fade-scale,1.125))}}@-webkit-keyframes fa-flip{50%{-webkit-transform:rotate3d(var(--fa-flip-x,0),var(--fa-flip-y,1),var(--fa-flip-z,0),var(--fa-flip-angle,-180deg));transform:rotate3d(var(--fa-flip-x,0),var(--fa-flip-y,1),var(--fa-flip-z,0),var(--fa-flip-angle,-180deg))}}@-webkit-keyframes fa-shake{0%{-webkit-transform:rotate(-15deg);transform:rotate(-15deg)}4%{-webkit-transform:rotate(15deg);transform:rotate(15deg)}8%,24%{-webkit-transform:rotate(-18deg);transform:rotate(-18deg)}12%,28%{-webkit-transform:rotate(18deg);transform:rotate(18deg)}16%{-webkit-transform:rotate(-22deg);transform:rotate(-22deg)}20%{-webkit-transform:rotate(22deg);transform:rotate(22deg)}32%{-webkit-transform:rotate(-12deg);transform:rotate(-12deg)}36%{-webkit-transform:rotate(12deg);transform:rotate(12deg)}40%,to{-webkit-transform:rotate(0deg);transform:rotate(0deg)}}@-webkit-keyframes fa-spin{0%{-webkit-transform:rotate(0deg);transform:rotate(0deg)}to{-webkit-transform:rotate(1turn);transform:rotate(1turn)}}:root{--fa-font-brands:normal 400 1em/1 "Font Awesome 6 Brands"}@font-face{font-family:"Font Awesome 6 Brands";font-style:normal;font-weight:400;font-display:block;src:url(../webfonts/fa-brands-400.woff2) format("woff2"),url(../webfonts/fa-brands-400.ttf) format("truetype")}:root{--fa-font-regular:normal 400 1em/1 "Font Awesome 6 Free"}@font-face{font-family:"Font Awesome 6 Free";font-style:normal;font-weight:400;font-display:block;src:url(../webfonts/fa-regular-400.woff2) format("woff2"),url(../webfonts/fa-regular-400.ttf) format("truetype")}:root{--fa-font-solid:normal 900 1em/1 "Font Awesome 6 Free"}@font-face{font-family:"Font Awesome 6 Free";font-style:normal;font-weight:900;font-display:block;src:url(../webfonts/fa-solid-900.woff2) format("woff2"),url(../webfonts/fa-solid-900.ttf) format("truetype")}</style><link rel="stylesheet" href="assets/fontawesome6/css/all.min.css" media="print" onload="this.media='all'"><noscript><link rel="stylesheet" href="assets/fontawesome6/css/all.min.css"></noscript>
6
- <script src="assets/tween-min.js"></script>
7
- <script src="assets/steelseries-min.js"></script>
8
- <script src="assets/NoSleep.min.js"></script>
9
- <style>html,body,app-root{height:100%}body{margin:0}</style><link rel="stylesheet" href="styles.css" media="print" onload="this.media='all'"><noscript><link rel="stylesheet" href="styles.css"></noscript><link rel="manifest" href="manifest.json" crossorigin="use-credentials"></head>
10
-
11
- <body>
12
- <app-root></app-root>
13
- <script src="runtime.js" type="module"></script><script src="polyfills.js" type="module"></script><script src="main.js" type="module"></script>
14
-
1
+ <!DOCTYPE html><html lang="en"><head><base href="/@mxtommy/kip/">
2
+ <meta charset="utf-8" name="viewport" content="user-scalable=no, width=device-width, initial-scale=1, maximum-scale=1">
3
+ <title>KIP</title>
4
+ <link rel="icon" type="image/svg+xml" href="assets/favicon.svg">
5
+ <link rel="icon" type="image/png" sizes="32x32" href="assets/favicon-32x32.png">
6
+ <link rel="icon" type="image/png" sizes="16x16" href="assets/favicon-16x16.png">
7
+ <link rel="icon" type="image/x-icon" size="any" href="assets/favicon.ico">
8
+ <style>@-webkit-keyframes fa-beat{0%,90%{-webkit-transform:scale(1);transform:scale(1)}45%{-webkit-transform:scale(var(--fa-beat-scale,1.25));transform:scale(var(--fa-beat-scale,1.25))}}@-webkit-keyframes fa-bounce{0%{-webkit-transform:scale(1) translateY(0);transform:scale(1) translateY(0)}10%{-webkit-transform:scale(var(--fa-bounce-start-scale-x,1.1),var(--fa-bounce-start-scale-y,.9)) translateY(0);transform:scale(var(--fa-bounce-start-scale-x,1.1),var(--fa-bounce-start-scale-y,.9)) translateY(0)}30%{-webkit-transform:scale(var(--fa-bounce-jump-scale-x,.9),var(--fa-bounce-jump-scale-y,1.1)) translateY(var(--fa-bounce-height,-.5em));transform:scale(var(--fa-bounce-jump-scale-x,.9),var(--fa-bounce-jump-scale-y,1.1)) translateY(var(--fa-bounce-height,-.5em))}50%{-webkit-transform:scale(var(--fa-bounce-land-scale-x,1.05),var(--fa-bounce-land-scale-y,.95)) translateY(0);transform:scale(var(--fa-bounce-land-scale-x,1.05),var(--fa-bounce-land-scale-y,.95)) translateY(0)}57%{-webkit-transform:scale(1) translateY(var(--fa-bounce-rebound,-.125em));transform:scale(1) translateY(var(--fa-bounce-rebound,-.125em))}64%{-webkit-transform:scale(1) translateY(0);transform:scale(1) translateY(0)}to{-webkit-transform:scale(1) translateY(0);transform:scale(1) translateY(0)}}@-webkit-keyframes fa-fade{50%{opacity:var(--fa-fade-opacity,.4)}}@-webkit-keyframes fa-beat-fade{0%,to{opacity:var(--fa-beat-fade-opacity,.4);-webkit-transform:scale(1);transform:scale(1)}50%{opacity:1;-webkit-transform:scale(var(--fa-beat-fade-scale,1.125));transform:scale(var(--fa-beat-fade-scale,1.125))}}@-webkit-keyframes fa-flip{50%{-webkit-transform:rotate3d(var(--fa-flip-x,0),var(--fa-flip-y,1),var(--fa-flip-z,0),var(--fa-flip-angle,-180deg));transform:rotate3d(var(--fa-flip-x,0),var(--fa-flip-y,1),var(--fa-flip-z,0),var(--fa-flip-angle,-180deg))}}@-webkit-keyframes fa-shake{0%{-webkit-transform:rotate(-15deg);transform:rotate(-15deg)}4%{-webkit-transform:rotate(15deg);transform:rotate(15deg)}8%,24%{-webkit-transform:rotate(-18deg);transform:rotate(-18deg)}12%,28%{-webkit-transform:rotate(18deg);transform:rotate(18deg)}16%{-webkit-transform:rotate(-22deg);transform:rotate(-22deg)}20%{-webkit-transform:rotate(22deg);transform:rotate(22deg)}32%{-webkit-transform:rotate(-12deg);transform:rotate(-12deg)}36%{-webkit-transform:rotate(12deg);transform:rotate(12deg)}40%,to{-webkit-transform:rotate(0deg);transform:rotate(0deg)}}@-webkit-keyframes fa-spin{0%{-webkit-transform:rotate(0deg);transform:rotate(0deg)}to{-webkit-transform:rotate(1turn);transform:rotate(1turn)}}:root{--fa-font-brands:normal 400 1em/1 "Font Awesome 6 Brands"}@font-face{font-family:"Font Awesome 6 Brands";font-style:normal;font-weight:400;font-display:block;src:url(../webfonts/fa-brands-400.woff2) format("woff2"),url(../webfonts/fa-brands-400.ttf) format("truetype")}:root{--fa-font-regular:normal 400 1em/1 "Font Awesome 6 Free"}@font-face{font-family:"Font Awesome 6 Free";font-style:normal;font-weight:400;font-display:block;src:url(../webfonts/fa-regular-400.woff2) format("woff2"),url(../webfonts/fa-regular-400.ttf) format("truetype")}:root{--fa-font-solid:normal 900 1em/1 "Font Awesome 6 Free"}@font-face{font-family:"Font Awesome 6 Free";font-style:normal;font-weight:900;font-display:block;src:url(../webfonts/fa-solid-900.woff2) format("woff2"),url(../webfonts/fa-solid-900.ttf) format("truetype")}</style><link rel="stylesheet" href="assets/fontawesome6/css/all.min.css" media="print" onload="this.media='all'"><noscript><link rel="stylesheet" href="assets/fontawesome6/css/all.min.css"></noscript>
9
+ <link rel="manifest" href="manifest.json" crossorigin="use-credentials">
10
+ <script src="assets/tween-min.js"></script>
11
+ <script src="assets/steelseries-min.js"></script>
12
+ <script src="assets/NoSleep.min.js"></script>
13
+ <link rel="apple-touch-icon" href="assets/apple-icon-180.png">
14
+ <meta name="apple-mobile-web-app-capable" content="yes">
15
+ <link rel="apple-touch-startup-image" href="assets/apple-splash-2048-2732.jpg" media="(device-width: 1024px) and (device-height: 1366px) and (-webkit-device-pixel-ratio: 2) and (orientation: portrait)">
16
+ <link rel="apple-touch-startup-image" href="assets/apple-splash-2732-2048.jpg" media="(device-width: 1024px) and (device-height: 1366px) and (-webkit-device-pixel-ratio: 2) and (orientation: landscape)">
17
+ <link rel="apple-touch-startup-image" href="assets/apple-splash-1668-2388.jpg" media="(device-width: 834px) and (device-height: 1194px) and (-webkit-device-pixel-ratio: 2) and (orientation: portrait)">
18
+ <link rel="apple-touch-startup-image" href="assets/apple-splash-2388-1668.jpg" media="(device-width: 834px) and (device-height: 1194px) and (-webkit-device-pixel-ratio: 2) and (orientation: landscape)">
19
+ <link rel="apple-touch-startup-image" href="assets/apple-splash-1536-2048.jpg" media="(device-width: 768px) and (device-height: 1024px) and (-webkit-device-pixel-ratio: 2) and (orientation: portrait)">
20
+ <link rel="apple-touch-startup-image" href="assets/apple-splash-2048-1536.jpg" media="(device-width: 768px) and (device-height: 1024px) and (-webkit-device-pixel-ratio: 2) and (orientation: landscape)">
21
+ <link rel="apple-touch-startup-image" href="assets/apple-splash-1668-2224.jpg" media="(device-width: 834px) and (device-height: 1112px) and (-webkit-device-pixel-ratio: 2) and (orientation: portrait)">
22
+ <link rel="apple-touch-startup-image" href="assets/apple-splash-2224-1668.jpg" media="(device-width: 834px) and (device-height: 1112px) and (-webkit-device-pixel-ratio: 2) and (orientation: landscape)">
23
+ <link rel="apple-touch-startup-image" href="assets/apple-splash-1620-2160.jpg" media="(device-width: 810px) and (device-height: 1080px) and (-webkit-device-pixel-ratio: 2) and (orientation: portrait)">
24
+ <link rel="apple-touch-startup-image" href="assets/apple-splash-2160-1620.jpg" media="(device-width: 810px) and (device-height: 1080px) and (-webkit-device-pixel-ratio: 2) and (orientation: landscape)">
25
+ <link rel="apple-touch-startup-image" href="assets/apple-splash-1290-2796.jpg" media="(device-width: 430px) and (device-height: 932px) and (-webkit-device-pixel-ratio: 3) and (orientation: portrait)">
26
+ <link rel="apple-touch-startup-image" href="assets/apple-splash-2796-1290.jpg" media="(device-width: 430px) and (device-height: 932px) and (-webkit-device-pixel-ratio: 3) and (orientation: landscape)">
27
+ <link rel="apple-touch-startup-image" href="assets/apple-splash-1179-2556.jpg" media="(device-width: 393px) and (device-height: 852px) and (-webkit-device-pixel-ratio: 3) and (orientation: portrait)">
28
+ <link rel="apple-touch-startup-image" href="assets/apple-splash-2556-1179.jpg" media="(device-width: 393px) and (device-height: 852px) and (-webkit-device-pixel-ratio: 3) and (orientation: landscape)">
29
+ <link rel="apple-touch-startup-image" href="assets/apple-splash-1284-2778.jpg" media="(device-width: 428px) and (device-height: 926px) and (-webkit-device-pixel-ratio: 3) and (orientation: portrait)">
30
+ <link rel="apple-touch-startup-image" href="assets/apple-splash-2778-1284.jpg" media="(device-width: 428px) and (device-height: 926px) and (-webkit-device-pixel-ratio: 3) and (orientation: landscape)">
31
+ <link rel="apple-touch-startup-image" href="assets/apple-splash-1170-2532.jpg" media="(device-width: 390px) and (device-height: 844px) and (-webkit-device-pixel-ratio: 3) and (orientation: portrait)">
32
+ <link rel="apple-touch-startup-image" href="assets/apple-splash-2532-1170.jpg" media="(device-width: 390px) and (device-height: 844px) and (-webkit-device-pixel-ratio: 3) and (orientation: landscape)">
33
+ <link rel="apple-touch-startup-image" href="assets/apple-splash-1125-2436.jpg" media="(device-width: 375px) and (device-height: 812px) and (-webkit-device-pixel-ratio: 3) and (orientation: portrait)">
34
+ <link rel="apple-touch-startup-image" href="assets/apple-splash-2436-1125.jpg" media="(device-width: 375px) and (device-height: 812px) and (-webkit-device-pixel-ratio: 3) and (orientation: landscape)">
35
+ <link rel="apple-touch-startup-image" href="assets/apple-splash-1242-2688.jpg" media="(device-width: 414px) and (device-height: 896px) and (-webkit-device-pixel-ratio: 3) and (orientation: portrait)">
36
+ <link rel="apple-touch-startup-image" href="assets/apple-splash-2688-1242.jpg" media="(device-width: 414px) and (device-height: 896px) and (-webkit-device-pixel-ratio: 3) and (orientation: landscape)">
37
+ <link rel="apple-touch-startup-image" href="assets/apple-splash-828-1792.jpg" media="(device-width: 414px) and (device-height: 896px) and (-webkit-device-pixel-ratio: 2) and (orientation: portrait)">
38
+ <link rel="apple-touch-startup-image" href="assets/apple-splash-1792-828.jpg" media="(device-width: 414px) and (device-height: 896px) and (-webkit-device-pixel-ratio: 2) and (orientation: landscape)">
39
+ <link rel="apple-touch-startup-image" href="assets/apple-splash-1242-2208.jpg" media="(device-width: 414px) and (device-height: 736px) and (-webkit-device-pixel-ratio: 3) and (orientation: portrait)">
40
+ <link rel="apple-touch-startup-image" href="assets/apple-splash-2208-1242.jpg" media="(device-width: 414px) and (device-height: 736px) and (-webkit-device-pixel-ratio: 3) and (orientation: landscape)">
41
+ <link rel="apple-touch-startup-image" href="assets/apple-splash-750-1334.jpg" media="(device-width: 375px) and (device-height: 667px) and (-webkit-device-pixel-ratio: 2) and (orientation: portrait)">
42
+ <link rel="apple-touch-startup-image" href="assets/apple-splash-1334-750.jpg" media="(device-width: 375px) and (device-height: 667px) and (-webkit-device-pixel-ratio: 2) and (orientation: landscape)">
43
+ <link rel="apple-touch-startup-image" href="assets/apple-splash-640-1136.jpg" media="(device-width: 320px) and (device-height: 568px) and (-webkit-device-pixel-ratio: 2) and (orientation: portrait)">
44
+ <link rel="apple-touch-startup-image" href="assets/apple-splash-1136-640.jpg" media="(device-width: 320px) and (device-height: 568px) and (-webkit-device-pixel-ratio: 2) and (orientation: landscape)">
45
+ <style>html,body,app-root{height:100%}body{margin:0;touch-action:none}</style><link rel="stylesheet" href="styles.a5d5fc1506885765.css" media="print" onload="this.media='all'"><noscript><link rel="stylesheet" href="styles.a5d5fc1506885765.css"></noscript></head>
46
+ <body>
47
+ <app-root></app-root>
48
+ <script src="runtime.e75056c32c37f59d.js" type="module"></script><script src="polyfills.64db6be9cdc8f808.js" type="module"></script><script src="main.abf26f717737e775.js" type="module"></script>
15
49
  </body></html>