@raruto/leaflet-elevation 2.0.1 → 2.0.4

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.
package/src/index.css CHANGED
@@ -11,56 +11,44 @@
11
11
  /* prevent overlapping the .elevation-detached chart */
12
12
  }
13
13
 
14
- .elevation-detached {
15
- font: 12px/1.5 "Helvetica Neue", Arial, Helvetica, sans-serif;
16
- height: auto;
17
- width: 100%;
18
- position: relative;
19
- z-index: 0;
20
- }
21
-
22
- .elevation-detached .elevation {
23
- width: 100%;
24
- }
25
-
26
- .elevation-detached .background {
27
- max-width: 100%;
28
- }
29
-
30
- .elevation-control.elevation .background {
14
+ .elevation-control .background {
31
15
  background-color: var(--ele-bg, rgba(70, 130, 180, 0.2));
32
16
  border-radius: 5px;
33
17
  overflow: visible;
34
18
  display: block;
35
19
  touch-action: none;
36
20
  user-select: none;
21
+ max-width: 100%;
37
22
  }
38
23
 
39
- .elevation-control.elevation .axis .tick,
40
- .elevation-control.elevation .axis .domain {
24
+ .elevation-control .grid,
25
+ .elevation-control .area > foreignObject,
26
+ .elevation-control .axis,
27
+ .elevation-control .tooltip,
28
+ .height-focus.line {
41
29
  pointer-events: none;
42
30
  }
43
31
 
44
- .elevation-control.elevation .axis line,
45
- .elevation-control.elevation .axis path {
32
+ .elevation-control .axis line,
33
+ .elevation-control .axis path {
46
34
  stroke: var(--ele-axis, #2D1130);
47
35
  stroke-width: 1;
48
36
  fill: none;
49
37
  }
50
38
 
51
- .elevation-control.elevation .grid .tick line {
39
+ .elevation-control .grid .tick line {
52
40
  stroke: var(--ele-grid, #EEE);
53
41
  stroke-width: 1px;
54
42
  shape-rendering: crispEdges;
55
43
  }
56
44
 
57
- .elevation-control.elevation .grid path {
45
+ .elevation-control .grid path {
58
46
  stroke-width: 0;
59
- pointer-events: none;
60
47
  }
61
48
 
62
- .elevation-control.elevation .axis text,
63
- .elevation-control.elevation .point text {
49
+ .elevation-control .axis text,
50
+ .elevation-control .legend text,
51
+ .elevation-control .point text {
64
52
  fill: #000;
65
53
  font-weight: 700;
66
54
  paint-order: stroke fill;
@@ -68,181 +56,120 @@
68
56
  stroke-width: 2px
69
57
  }
70
58
 
71
- .elevation-control.elevation .y.axis text {
59
+ .elevation-control .y.axis text {
72
60
  text-anchor: end;
73
61
  }
74
62
 
75
- .elevation-control.elevation .area {
63
+ .elevation-control .area {
76
64
  fill: var(--ele-area, #4682B4);
77
65
  stroke: var(--ele-stroke, #000);
78
66
  stroke-width: 1.2;
79
67
  paint-order: stroke fill;
80
68
  }
81
69
 
82
- .elevation-detached .elevation-control.elevation .area {
83
- fill-opacity: var(--ele-alpha, 0.8);
84
- }
85
-
86
- .elevation-control.elevation .horizontal-drag-line {
87
- stroke: transparent;
70
+ .elevation-control .horizontal-drag-line {
88
71
  cursor: row-resize;
89
- stroke-width: 1.1;
72
+ stroke: transparent;
90
73
  stroke-dasharray: 5;
74
+ stroke-width: 1.1;
91
75
  }
92
76
 
93
- .elevation-control.elevation .active .horizontal-drag-line {
77
+ .elevation-control .active .horizontal-drag-line {
94
78
  stroke: #000;
95
79
  }
96
80
 
97
- .elevation-control.elevation .horizontal-drag-label {
98
- font-weight: 700;
81
+ .elevation-control .horizontal-drag-label {
99
82
  fill: #000;
83
+ font-weight: 700;
100
84
  paint-order: stroke;
101
85
  stroke: #FFF;
102
86
  stroke-width: 2px;
103
- pointer-events: none;
104
87
  }
105
88
 
106
- .elevation-control.elevation .ruler {
107
- cursor: row-resize;
89
+ .elevation-control .ruler {
108
90
  color: #000;
91
+ cursor: row-resize;
109
92
  }
110
93
 
111
- .elevation-control.elevation .mouse-focus-line {
94
+ .elevation-control .mouse-focus-line {
112
95
  stroke: #000;
113
96
  stroke-width: 1;
114
- pointer-events: none;
115
97
  }
116
98
 
117
- .elevation-control.elevation .mouse-focus-label-rect {
99
+ .elevation-control .mouse-focus-label-rect {
118
100
  fill: #000;
119
101
  fill-opacity: 0.75;
120
- pointer-events: none;
121
102
  stroke-width: 1;
122
103
  stroke: #444;
123
104
  }
124
105
 
125
- .elevation-control.elevation .mouse-focus-label-text {
106
+ .elevation-control .mouse-focus-label-text {
126
107
  fill: #FFF;
127
- pointer-events: none;
128
108
  font-size: 10px;
129
109
  }
130
110
 
131
- .elevation-control.elevation .brush .overlay {
111
+ .elevation-control .brush .overlay {
132
112
  cursor: unset;
133
113
  }
134
114
 
135
- .elevation-control.elevation .brush .selection {
115
+ .elevation-control .brush .selection {
136
116
  fill: var(--ele-brush, rgba(23, 74, 117, 0.4));
137
117
  stroke: none;
138
118
  fill-opacity: unset;
139
119
  }
140
120
 
141
- .elevation-control.elevation .elevation-toggle {
142
- cursor: pointer;
143
- box-shadow: 0 1px 7px rgba(0, 0, 0, 0.4);
144
- border-radius: 5px;
145
- width: 36px;
146
- height: 36px;
147
- background-color: #F8F8F9;
148
- }
149
-
150
121
  .elevation-summary {
151
122
  font-family: "Lucida Grande", "Lucida Sans Unicode", Verdana, Arial, Helvetica, sans-serif;
152
123
  font-size: 12px;
153
- margin: 0 auto;
124
+ margin: var(--ele-sum-margin, 0 auto);
125
+ text-shadow: var(--ele-sum-shadow, 1px 0 0 #FFF, -1px 0 0 #FFF, 0 1px 0 #FFF, 0 -1px 0 #FFF, 1px 1px #FFF, -1px -1px 0 #FFF, 1px -1px 0 #FFF, -1px 1px 0 #FFF);
154
126
  }
155
127
 
156
- .leaflet-control-container .elevation-summary {
157
- text-shadow:
158
- 1.5px 0 0 #FFF,
159
- -1.5px 0 0 #FFF,
160
- 0 1.5px 0 #FFF,
161
- 0 -1.5px 0 #FFF,
162
- 1px 1px #FFF,
163
- -1px -1px 0 #FFF,
164
- 1px -1px 0 #FFF,
165
- -1px 1px 0 #FFF;
128
+ .elevation-summary>span:not(:last-child):after {
129
+ content: var(--ele-sum-sep, '');
166
130
  }
167
131
 
168
- .elevation-detached .elevation-summary {
169
- margin: 0 45px;
170
- }
171
-
172
- .elevation-summary.multiline-summary {
173
- margin-right: 30px;
174
- }
175
-
176
- .elevation-detached .elevation-summary.multiline-summary {
177
- margin-bottom: 12px;
178
- margin-top: 12px;
179
- line-height: 2;
180
- }
181
-
182
- .elevation-summary.inline-summary>span:not(:last-child):after {
183
- content: "\0020\2014\0020";
184
- }
185
-
186
- .elevation-summary.multiline-summary>span {
132
+ .multiline-summary>span {
187
133
  display: block;
188
134
  }
189
135
 
190
- .elevation-summary.multiline-summary .download {
136
+ .multiline-summary .download {
191
137
  float: right;
192
- margin-top: -2.5em;
138
+ margin-top: -3em;
139
+ margin-right: 2em;
193
140
  font-weight: bold;
194
141
  font-size: 1.2em;
195
142
  }
196
143
 
197
- .elevation-detached .elevation-summary.multiline-summary .download {
198
- margin-top: -3.5em;
199
- }
200
-
201
144
  .elevation-summary .summaryvalue {
202
145
  font-weight: bold;
203
146
  }
204
147
 
205
- .elevation-control.elevation-collapsed .background,
206
- .elevation-control.elevation-collapsed .elevation-summary {
207
- display: none;
208
- }
209
-
210
- .elevation-control.elevation-collapsed .elevation-toggle {
211
- display: block;
212
- }
213
-
214
- .elevation-control.elevation .elevation-toggle-icon {
215
- background: var(--ele-icon, url(../images/elevation-lime.svg)) no-repeat center center;
216
- }
217
-
218
- .elevation-control.elevation.elevation-expanded .elevation-toggle-icon.close-button {
219
- background: transparent;
220
- position: absolute;
148
+ .elevation-toggle-icon {
149
+ background: var(--ele-toggle-bg, var(--ele-icon, url(../images/elevation-lime.svg)) no-repeat center center);
150
+ background-color: #fff;
221
151
  right: 5px;
222
152
  top: 5px;
223
- height: 20px;
224
- width: 20px;
153
+ height: var(--ele-toggle-size, 36px);
154
+ width: var(--ele-toggle-size, 36px);
155
+ cursor: pointer;
156
+ box-shadow: 0 1px 7px rgba(0, 0, 0, 0.4);
157
+ border-radius: 5px;
158
+ display: inline-block;
159
+ position: var(--ele-toggle-pos, relative);
225
160
  }
226
161
 
227
- .elevation-control.elevation.elevation-expanded .elevation-toggle-icon.close-button:before {
162
+ .elevation-toggle-icon:before {
228
163
  content: '\2716';
229
- display: inline-block;
164
+ display: var(--ele-close-btn, none);
230
165
  color: #000;
231
- position: absolute;
232
- left: 0;
233
- right: 0;
234
- top: 0;
235
- bottom: 0;
166
+ width: 100%;
236
167
  line-height: 20px;
237
168
  text-align: center;
238
169
  font-weight: bold;
239
170
  font-size: 15px;
240
171
  }
241
172
 
242
- .elevation-control.elevation g.area > foreignObject {
243
- pointer-events: none;
244
- }
245
-
246
173
  .leaflet-elevation-pane .height-focus,
247
174
  .leaflet-overlay-pane .height-focus {
248
175
  stroke: #000;
@@ -251,7 +178,6 @@
251
178
 
252
179
  .leaflet-elevation-pane .height-focus.line,
253
180
  .leaflet-overlay-pane .height-focus.line {
254
- pointer-events: none;
255
181
  stroke-width: 2;
256
182
  }
257
183
 
@@ -271,22 +197,73 @@
271
197
  width: 100%;
272
198
  height: 100%;
273
199
  display: inline-block;
200
+ background: var(--ele-marker) no-repeat center center / contain;
274
201
  }
275
202
 
276
- .elevation-waypoint-icon:before {
277
- background: url(../images/elevation-pushpin.svg) no-repeat center center / contain;
203
+ .elevation-polyline {
204
+ stroke: var(--ele-poly, var(--ele-area, #000));
205
+ filter: drop-shadow(1px 1px 0 #FFF) drop-shadow(-1px -1px 0 #FFF) drop-shadow(1px -1px 0 #FFF) drop-shadow(-1px 1px 0 #FFF);
278
206
  }
279
207
 
280
- .elevation-position-icon:before {
281
- background: url(../images/elevation-position.svg) no-repeat center center / contain;
208
+ /* CHART STATES /////////////////////////////////////////////////// */
209
+
210
+ .elevation-detached {
211
+ font: 12px/1.5 "Helvetica Neue", Arial, Helvetica, sans-serif;
212
+ height: auto;
213
+ width: 100%;
214
+ position: relative;
215
+ z-index: 0;
282
216
  }
283
217
 
284
- .elevation-polyline {
285
- stroke: var(--ele-poly, var(--ele-area, #000));
286
- filter: drop-shadow(1px 1px 0 #FFF) drop-shadow(-1px -1px 0 #FFF) drop-shadow(1px -1px 0 #FFF) drop-shadow(-1px 1px 0 #FFF);
218
+ .elevation-detached .area {
219
+ fill-opacity: var(--ele-alpha, 0.8);
220
+ }
221
+
222
+ .elevation-detached.elevation-collapsed .elevation-summary {
223
+ display: block;
224
+ }
225
+
226
+ .elevation-detached.elevation-collapsed .elevation-toggle-icon {
227
+ top: 5px;
228
+ right: 9px;
229
+ bottom: 5px;
230
+ margin: auto;
231
+ }
232
+
233
+ .elevation-control.elevation-collapsed > * {
234
+ display: none;
235
+ }
236
+
237
+ .elevation-control.elevation-collapsed > .elevation-toggle-icon {
238
+ display: inline-block;
239
+ }
240
+
241
+ .elevation-detached {
242
+ --ele-sum-margin: 12px 35px;
243
+ --ele-sum-shadow: none;
244
+ --ele-toggle-pos: absolute;
245
+ }
246
+
247
+ .elevation-expanded {
248
+ --ele-close-btn: inline-block;
249
+ --ele-toggle-bg: transparent;
250
+ --ele-toggle-pos: absolute;
251
+ --ele-toggle-size: 20px;
252
+ }
253
+
254
+ .inline-summary {
255
+ --ele-sum-sep: "\0020\2014\0020";
256
+ }
257
+
258
+ .elevation-waypoint-icon {
259
+ --ele-marker: url(../images/elevation-pushpin.svg);
260
+ }
261
+
262
+ .elevation-position-icon {
263
+ --ele-marker: url(../images/elevation-position.svg);
287
264
  }
288
265
 
289
- /* LIME THEME //////////////////////////////////////////////// */
266
+ /* LIME THEME ///////////////////////////////////////////////////// */
290
267
  .lime-theme {
291
268
  --ele-bg: rgba(156, 194, 34, 0.2);
292
269
  --ele-axis: #566B13;
@@ -305,7 +282,7 @@
305
282
  --ele-icon: url(../images/elevation-steelblue.svg);
306
283
  }
307
284
 
308
- /* PURPLE THEME //////////////////////////////////////////////// */
285
+ /* PURPLE THEME /////////////////////////////////////////////////// */
309
286
  .purple-theme {
310
287
  --ele-bg: rgba(115, 44, 123, 0.2);
311
288
  --ele-area: #732C7B;
@@ -313,17 +290,17 @@
313
290
  --ele-icon: url(../images/elevation-purple.svg);
314
291
  }
315
292
 
316
- /* YELLOW THEME //////////////////////////////////////////////// */
293
+ /* YELLOW THEME /////////////////////////////////////////////////// */
317
294
  .yellow-theme {
318
295
  --ele-area: #FF0;
319
296
  }
320
297
 
321
- /* RED THEME //////////////////////////////////////////////// */
298
+ /* RED THEME ////////////////////////////////////////////////////// */
322
299
  .red-theme {
323
300
  --ele-area: #F00;
324
301
  }
325
302
 
326
- /* MAGENTA THEME //////////////////////////////////////////////// */
303
+ /* MAGENTA THEME ////////////////////////////////////////////////// */
327
304
  .magenta-theme {
328
305
  --ele-bg: rgba(255, 255, 255, 0.47);
329
306
  --ele-area: #FF005E;
@@ -337,7 +314,7 @@
337
314
  --ele-circle: #fff;
338
315
  }
339
316
 
340
- .elevation-detached .lightblue-theme.elevation-control.elevation .area {
317
+ .elevation-detached.lightblue-theme .area {
341
318
  stroke: #3366CC;
342
319
  }
343
320
 
package/src/options.js CHANGED
@@ -2,10 +2,11 @@ import * as _ from './utils';
2
2
 
3
3
  export var Options = {
4
4
  autofitBounds: true,
5
- autohide: !L.Browser.mobile,
5
+ autohide: false,
6
6
  autohideMarker: true,
7
7
  almostover: true,
8
8
  altitude: true,
9
+ closeBtn: true,
9
10
  collapsed: false,
10
11
  detached: true,
11
12
  distance: true,
@@ -66,7 +67,13 @@ export var Options = {
66
67
  zFollow: false,
67
68
  zooming: !L.Browser.Mobile,
68
69
 
69
- // Quite uncommon and undocumented options (quite useless)
70
+ // Quite uncommon and undocumented options
71
+ margins: { top: 30, right: 30, bottom: 30, left: 40 },
72
+ height: (screen.height * 0.3) || 200,
73
+ width: (screen.width * 0.6) || 600,
74
+ xTicks: undefined,
75
+ yTicks: undefined,
76
+
70
77
  decimalsX: 2,
71
78
  decimalsY: 0,
72
79
  forceAxisBounds: false,
@@ -74,11 +81,4 @@ export var Options = {
74
81
  skipNullZCoords: false,
75
82
  yAxisMax: undefined,
76
83
  yAxisMin: undefined,
77
-
78
- // Probably no longer functional as expected (internally overwritten)
79
- margins: { top: 30, right: 30, bottom: 30, left: 40 },
80
- height: 200,
81
- width: 600,
82
- xTicks: undefined,
83
- yTicks: undefined,
84
84
  };
package/src/utils.js CHANGED
@@ -88,11 +88,11 @@ export function formatTime(t) {
88
88
  * Loop and extract GPX Extensions handled by "@tmcw/toGeoJSON" (eg. "coordinateProperties" > "times")
89
89
  */
90
90
  export function coordPropsToMeta(coordProps, name, parser) {
91
- return coordProps && (({props, point, id}) => {
91
+ return coordProps && (({props, point, id, isMulti }) => {
92
92
  if (props) {
93
93
  for (const key of coordProps) {
94
94
  if (key in props) {
95
- point.meta[name] = (parser || parseInt).call(this, props[key], id);
95
+ point.meta[name] = (parser || parseInt).call(this, (isMulti ? props[key][isMulti] : props[key]), id);
96
96
  break;
97
97
  }
98
98
  }
@@ -139,9 +139,9 @@ export const iSum = (iVal, sum) => iVal + (sum || 0);
139
139
  /**
140
140
  * Alias for some leaflet core functions
141
141
  */
142
- export const { on, off } = L.DomEvent;
143
- export const { throttle } = L.Util;
144
- export const { hasClass } = L.DomUtil;
142
+ export const { on, off } = L.DomEvent;
143
+ export const { throttle, wrapNum } = L.Util;
144
+ export const { hasClass } = L.DomUtil;
145
145
 
146
146
  /**
147
147
  * Limit floating point precision