@kizmann/pico-js 0.3.10 → 0.3.16

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/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@kizmann/pico-js",
3
- "version": "0.3.10",
3
+ "version": "0.3.16",
4
4
  "license": "MIT",
5
5
  "private": false,
6
6
  "author": "Eduard Kizmann <kizmann@protonmail.ch>",
@@ -16,6 +16,8 @@ export default class Map
16
16
 
17
17
  cluster = null;
18
18
 
19
+ clusterFilter = null;
20
+
19
21
  clusterOptions = {};
20
22
 
21
23
  static hideMarkers = true;
@@ -46,7 +48,7 @@ export default class Map
46
48
  return this;
47
49
  }
48
50
 
49
- static setMarkerStyle(key, style = {})
51
+ static setMarkerStyle(key, style = {}, extra = {})
50
52
  {
51
53
  if ( ! Obj.has(style, 'default') ) {
52
54
  return console.error('Marker style requires default property')
@@ -91,12 +93,16 @@ export default class Map
91
93
  final.active = final.default;
92
94
  }
93
95
 
96
+ Obj.each(extra, (value, prop) => {
97
+ final[prop] = Obj.assign({}, final.default, { url: value });
98
+ });
99
+
94
100
  Obj.set(Map.markerStyles, key, final);
95
101
 
96
102
  return this;
97
103
  }
98
104
 
99
- clusterMarkers(options = {}, allowCreate = true)
105
+ clusterMarkers(options = {}, filter = null, allowCreate = true)
100
106
  {
101
107
  if ( ! this.cluster && ! allowCreate ) {
102
108
  return;
@@ -111,11 +117,22 @@ export default class Map
111
117
  }
112
118
 
113
119
  if ( this.cluster ) {
114
- this.cluster.clearMarkers()
120
+ this.cluster.clearMarkers();
121
+ }
122
+
123
+ if ( Any.isFunction(filter) ) {
124
+ this.clusterFilter = filter;
115
125
  }
116
126
 
117
127
  let markers = Arr.filter(this.markers, (item) => {
118
- return this.getMarkerVisibility(item.key);
128
+
129
+ let visible = this.getMarkerVisibility(item.key);
130
+
131
+ if ( ! Any.isFunction(this.clusterFilter) ) {
132
+ return visible;
133
+ }
134
+
135
+ return visible && this.clusterFilter.call(this, item);
119
136
  });
120
137
 
121
138
  this.cluster = new global.MarkerClusterer(this.map, Arr.each(markers, (item) => item.marker),
@@ -361,7 +378,7 @@ export default class Map
361
378
 
362
379
  Obj.set(this.markers, key, item);
363
380
 
364
- this.clusterMarkers(this.clusterOptions, false);
381
+ this.clusterMarkers(this.clusterOptions, null, false);
365
382
 
366
383
  if ( ! Obj.has(options, 'html') ) {
367
384
  return Obj.get(this.markers, key);
@@ -449,7 +466,7 @@ export default class Map
449
466
 
450
467
  Obj.each(markers, (item) => this.showMarker(item.key));
451
468
 
452
- this.clusterMarkers(this.clusterOptions, false);
469
+ this.clusterMarkers(this.clusterOptions, null, false);
453
470
 
454
471
  return this;
455
472
  }
@@ -66,7 +66,7 @@ export class Arr
66
66
 
67
67
  if ( Any.isFunction(key) ) {
68
68
  keys = keys.sort((a, b) => {
69
- return Any.integer(Obj.get(obj[a], key)) - Any.integer(Obj.get(obj[b], key));
69
+ return key.call({}, obj[a], obj[b]);
70
70
  });
71
71
  }
72
72
 
@@ -90,16 +90,6 @@ export class Arr
90
90
  {
91
91
  let keys = Any.keys(obj);
92
92
 
93
- if ( Any.isFunction(key) ) {
94
- keys = keys.sort((a, b) => {
95
-
96
- let va = Any.string(Obj.get(obj[a], key)).toLowerCase();
97
- let vb = Any.string(Obj.get(obj[b], key)).toLowerCase();
98
-
99
- return(va < vb) ? -1 : (va > vb) ? 1 : 0;
100
- });
101
- }
102
-
103
93
  if ( ! Any.isFunction(key) ) {
104
94
  keys = keys.sort((a, b) => {
105
95
 
@@ -300,7 +300,7 @@ export class Dom
300
300
  return Dom.find(null);
301
301
  }
302
302
 
303
- return Dom.find(this.el.parentNode);
303
+ return Dom.find(el.parentNode);
304
304
  }
305
305
 
306
306
  child(selector)
@@ -1,16 +1,16 @@
1
- import { Any, Arr } from "../index"
1
+ import { Any, Arr, Obj } from "../index"
2
2
 
3
3
  export class Num
4
4
  {
5
5
  static int(num)
6
6
  {
7
- return ! Any.isString(num) ? parseInt(num) :
7
+ return !Any.isString(num) ? parseInt(num) :
8
8
  parseInt(num.replace('px', ''));
9
9
  }
10
10
 
11
11
  static float(num)
12
12
  {
13
- return ! Any.isString(num) ? parseFloat(num) :
13
+ return !Any.isString(num) ? parseFloat(num) :
14
14
  parseFloat(num.replace('px', ''));
15
15
  }
16
16
 
@@ -43,9 +43,10 @@ export class Num
43
43
  {
44
44
  let value = 0;
45
45
 
46
- for ( let i = 20; i >= 0; i-- ) {
46
+ for ( let i = 20; i >= 0; i -- ) {
47
47
  if ( num >= (value = Math.pow(2, i)) ) {
48
- base.push(value); num -= value;
48
+ base.push(value);
49
+ num -= value;
49
50
  }
50
51
  }
51
52
 
@@ -57,11 +58,42 @@ export class Num
57
58
  return Arr.reduce(arr, (acc, val) => acc + val, 0);
58
59
  }
59
60
 
61
+ static distance(cord1, cord2, miles = false)
62
+ {
63
+ let defaultCord = {
64
+ lat: 0, lng: 0
65
+ };
66
+
67
+ cord1 = Obj.assign({}, defaultCord, cord1);
68
+ cord2 = Obj.assign({}, defaultCord, cord2);
69
+
70
+ let radlat1 = (Math.PI * this.float(cord1.lat)) / 180;
71
+ let radlat2 = (Math.PI * this.float(cord2.lat)) / 180;
72
+
73
+ let theta = this.float(cord1.lng) - this.float(cord2.lng);
74
+ let radtheta = (Math.PI * theta) / 180;
75
+
76
+ let dist = Math.sin(radlat1) * Math.sin(radlat2) +
77
+ Math.cos(radlat1) * Math.cos(radlat2) * Math.cos(radtheta);
78
+
79
+ if ( dist > 1 ) {
80
+ dist = 1;
81
+ }
82
+
83
+ dist = (Math.acos(dist) * 180) / Math.PI * 60 * 1.1515;
84
+
85
+ if ( !miles ) {
86
+ dist = dist * 1.609344;
87
+ }
88
+
89
+ return dist;
90
+ }
91
+
60
92
  static format(num, decimal = '.', thousand = ',', fixed = null)
61
93
  {
62
94
  let value = num.toString();
63
95
 
64
- if ( fixed !== null && fixed !== -1 ) {
96
+ if ( fixed !== null && fixed !== - 1 ) {
65
97
  value = num.toFixed(fixed);
66
98
  }
67
99
 
@@ -80,7 +112,7 @@ export class Num
80
112
 
81
113
  let result = splits.reverse().join(thousand);
82
114
 
83
- if ( fixed !== -1 && fixed !== 0 && value.match(/\./) ) {
115
+ if ( fixed !== - 1 && fixed !== 0 && value.match(/\./) ) {
84
116
  result += decimal + minals;
85
117
  }
86
118
 
@@ -144,7 +144,7 @@ export class Obj
144
144
 
145
145
  if ( Any.isFunction(key) ) {
146
146
  keys = keys.sort((a, b) => {
147
- return Any.integer(Obj.get(obj[a], key)) - Any.integer(Obj.get(obj[b], key));
147
+ return key.call({}, obj[a], obj[b]);
148
148
  });
149
149
  }
150
150
 
@@ -168,16 +168,6 @@ export class Obj
168
168
  {
169
169
  let keys = Any.keys(obj);
170
170
 
171
- if ( Any.isFunction(key) ) {
172
- keys = keys.sort((a, b) => {
173
-
174
- let va = Any.string(Obj.get(obj[a], key)).toLowerCase();
175
- let vb = Any.string(Obj.get(obj[b], key)).toLowerCase();
176
-
177
- return(va < vb) ? -1 : (va > vb) ? 1 : 0;
178
- });
179
- }
180
-
181
171
  if ( ! Any.isFunction(key) ) {
182
172
  keys = keys.sort((a, b) => {
183
173