mapshaper 0.6.103 → 0.6.105

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": "mapshaper",
3
- "version": "0.6.103",
3
+ "version": "0.6.105",
4
4
  "description": "A tool for editing vector datasets for mapping and GIS.",
5
5
  "keywords": [
6
6
  "shapefile",
@@ -64,12 +64,13 @@
64
64
  },
65
65
  "devDependencies": {
66
66
  "@rollup/plugin-commonjs": "^28.0.6",
67
- "@rollup/plugin-json": "^6.0.1",
68
- "@rollup/plugin-node-resolve": "^13.3.0",
67
+ "@rollup/plugin-json": "^6.1.0",
68
+ "@rollup/plugin-node-resolve": "^16.0.1",
69
69
  "csv-spectrum": "^1.0.0",
70
70
  "eslint": "^8.16.0",
71
71
  "mocha": "^10.2.0",
72
- "rollup": "^2.73.0",
72
+ "rollup": "^4.44.1",
73
+ "rollup-plugin-polyfill-node": "^0.13.0",
73
74
  "shell-quote": "^1.7.4",
74
75
  "underscore": "^1.13.1"
75
76
  },
package/www/basemap.js CHANGED
@@ -1,7 +1,8 @@
1
1
  window.mapboxParams = {
2
2
  js: 'https://api.mapbox.com/mapbox-gl-js/v2.11.1/mapbox-gl.js',
3
3
  css: 'https://api.mapbox.com/mapbox-gl-js/v2.11.1/mapbox-gl.css',
4
- key: 'pk.eyJ1IjoiZ3JhbW1hdGEiLCJhIjoiY2wxMzI4b3dqMDNhMjNpcDhzcmU0aGh5diJ9.m1lacx48pTYls-X3FVhG9g',
4
+ production_key: 'pk.eyJ1IjoiZ3JhbW1hdGEiLCJhIjoiY21jZ2RlbGk1MGhvNzJrcHV2dTYzZWE2byJ9.btkRnRrPW75c0AlQ5lH2cg',
5
+ localhost_key: 'pk.eyJ1IjoiZ3JhbW1hdGEiLCJhIjoiY21jZ2Rna2hrMGo2ZjJqcHFxMHAycDlyMSJ9.q8FchhB-NAN_FGBHN0AJeg',
5
6
  styles: [{
6
7
  name: 'Map',
7
8
  icon: 'images/thumb-map.jpg',
@@ -2,105 +2,105 @@
2
2
 
3
3
  var utils = /*#__PURE__*/Object.freeze({
4
4
  __proto__: null,
5
+ get addThousandsSep () { return addThousandsSep; },
6
+ get addslashes () { return addslashes; },
7
+ get arrayToIndex () { return arrayToIndex; },
8
+ get clamp () { return clamp; },
9
+ get cleanNumericString () { return cleanNumericString; },
10
+ get contains () { return contains; },
11
+ get copyElements () { return copyElements; },
12
+ get countValues () { return countValues; },
13
+ get createBuffer () { return createBuffer; },
5
14
  get default () { return utils; },
15
+ get defaults () { return defaults; },
16
+ get difference () { return difference; },
17
+ get endsWith () { return endsWith; },
18
+ get every () { return every; },
19
+ get expandoBuffer () { return expandoBuffer; },
20
+ get extend () { return extend; },
21
+ get extendBuffer () { return extendBuffer; },
22
+ get find () { return find; },
23
+ get findMedian () { return findMedian; },
24
+ get findQuantile () { return findQuantile; },
25
+ get findRankByValue () { return findRankByValue; },
26
+ get findStringPrefix () { return findStringPrefix; },
27
+ get findValueByPct () { return findValueByPct; },
28
+ get findValueByRank () { return findValueByRank; },
29
+ get forEach () { return forEach; },
30
+ get forEachProperty () { return forEachProperty; },
31
+ get format () { return format; },
32
+ get formatDateISO () { return formatDateISO; },
33
+ get formatIntlNumber () { return formatIntlNumber; },
34
+ get formatNumber () { return formatNumber; },
35
+ get formatNumberForDisplay () { return formatNumberForDisplay; },
36
+ get formatVersionedName () { return formatVersionedName; },
37
+ get formatter () { return formatter; },
38
+ get genericSort () { return genericSort; },
39
+ get getArrayBounds () { return getArrayBounds; },
40
+ get getGenericComparator () { return getGenericComparator; },
41
+ get getKeyComparator () { return getKeyComparator; },
42
+ get getSortedIds () { return getSortedIds; },
6
43
  get getUniqueName () { return getUniqueName; },
7
- get isFunction () { return isFunction; },
8
- get isPromise () { return isPromise; },
9
- get isObject () { return isObject; },
10
- get clamp () { return clamp; },
44
+ get groupBy () { return groupBy; },
45
+ get htmlEscape () { return htmlEscape; },
46
+ get indexOf () { return indexOf; },
47
+ get indexOn () { return indexOn; },
48
+ get inherit () { return inherit; },
49
+ get initializeArray () { return initializeArray; },
50
+ get intersection () { return intersection; },
11
51
  get isArray () { return isArray; },
12
- get isNumber () { return isNumber; },
13
- get isValidNumber () { return isValidNumber; },
52
+ get isArrayLike () { return isArrayLike; },
53
+ get isBoolean () { return isBoolean; },
54
+ get isDate () { return isDate; },
55
+ get isEven () { return isEven; },
14
56
  get isFiniteNumber () { return isFiniteNumber; },
15
- get isNonNegNumber () { return isNonNegNumber; },
57
+ get isFunction () { return isFunction; },
16
58
  get isInteger () { return isInteger; },
17
- get isEven () { return isEven; },
59
+ get isNonNegNumber () { return isNonNegNumber; },
60
+ get isNumber () { return isNumber; },
61
+ get isObject () { return isObject; },
18
62
  get isOdd () { return isOdd; },
63
+ get isPromise () { return isPromise; },
19
64
  get isString () { return isString; },
20
- get isDate () { return isDate; },
21
- get isBoolean () { return isBoolean; },
22
- get formatDateISO () { return formatDateISO; },
23
- get toArray () { return toArray; },
24
- get isArrayLike () { return isArrayLike; },
25
- get addslashes () { return addslashes; },
26
- get regexEscape () { return regexEscape; },
27
- get htmlEscape () { return htmlEscape; },
28
- get defaults () { return defaults; },
29
- get extend () { return extend; },
30
- get inherit () { return inherit; },
31
- get promisify () { return promisify; },
32
- get reduceAsync () { return reduceAsync; },
65
+ get isValidNumber () { return isValidNumber; },
66
+ get lpad () { return lpad; },
67
+ get ltrim () { return ltrim; },
68
+ get mean () { return mean; },
33
69
  get merge () { return merge; },
34
- get difference () { return difference; },
35
- get intersection () { return intersection; },
36
- get indexOf () { return indexOf; },
37
- get contains () { return contains; },
38
- get some () { return some; },
39
- get every () { return every; },
40
- get find () { return find; },
70
+ get mergeNames () { return mergeNames; },
71
+ get numToStr () { return numToStr; },
72
+ get parseIntlNumber () { return parseIntlNumber; },
73
+ get parseNumber () { return parseNumber; },
74
+ get parsePercent () { return parsePercent; },
75
+ get parseString () { return parseString; },
76
+ get pickOne () { return pickOne; },
77
+ get pluck () { return pluck; },
78
+ get pluralSuffix () { return pluralSuffix; },
79
+ get promisify () { return promisify; },
80
+ get quicksort () { return quicksort; },
81
+ get quicksortPartition () { return quicksortPartition; },
41
82
  get range () { return range; },
83
+ get reduceAsync () { return reduceAsync; },
84
+ get regexEscape () { return regexEscape; },
85
+ get reorderArray () { return reorderArray; },
42
86
  get repeat () { return repeat; },
43
- get sum () { return sum; },
44
- get getArrayBounds () { return getArrayBounds; },
45
- get uniq () { return uniq; },
46
- get pluck () { return pluck; },
47
- get countValues () { return countValues; },
48
- get indexOn () { return indexOn; },
49
- get groupBy () { return groupBy; },
50
- get arrayToIndex () { return arrayToIndex; },
51
- get forEach () { return forEach; },
52
- get forEachProperty () { return forEachProperty; },
53
- get initializeArray () { return initializeArray; },
54
- get replaceArray () { return replaceArray; },
55
87
  get repeatString () { return repeatString; },
56
- get splitLines () { return splitLines; },
57
- get pluralSuffix () { return pluralSuffix; },
58
- get endsWith () { return endsWith; },
59
- get lpad () { return lpad; },
88
+ get replaceArray () { return replaceArray; },
60
89
  get rpad () { return rpad; },
61
- get trim () { return trim; },
62
- get ltrim () { return ltrim; },
63
90
  get rtrim () { return rtrim; },
64
- get addThousandsSep () { return addThousandsSep; },
65
- get numToStr () { return numToStr; },
66
- get formatNumber () { return formatNumber; },
67
- get formatIntlNumber () { return formatIntlNumber; },
68
- get formatNumberForDisplay () { return formatNumberForDisplay; },
69
91
  get shuffle () { return shuffle; },
70
- get pickOne () { return pickOne; },
71
- get sortOn () { return sortOn; },
72
- get genericSort () { return genericSort; },
73
- get getSortedIds () { return getSortedIds; },
92
+ get some () { return some; },
74
93
  get sortArrayIndex () { return sortArrayIndex; },
75
- get reorderArray () { return reorderArray; },
76
- get getKeyComparator () { return getKeyComparator; },
77
- get getGenericComparator () { return getGenericComparator; },
78
- get quicksort () { return quicksort; },
79
- get quicksortPartition () { return quicksortPartition; },
80
- get findRankByValue () { return findRankByValue; },
81
- get findValueByPct () { return findValueByPct; },
82
- get findValueByRank () { return findValueByRank; },
83
- get findMedian () { return findMedian; },
84
- get findQuantile () { return findQuantile; },
85
- get mean () { return mean; },
86
- get format () { return format; },
87
- get formatter () { return formatter; },
88
- get wildcardToRegExp () { return wildcardToRegExp; },
89
- get createBuffer () { return createBuffer; },
94
+ get sortOn () { return sortOn; },
95
+ get splitLines () { return splitLines; },
96
+ get sum () { return sum; },
97
+ get toArray () { return toArray; },
90
98
  get toBuffer () { return toBuffer; },
91
- get expandoBuffer () { return expandoBuffer; },
92
- get copyElements () { return copyElements; },
93
- get extendBuffer () { return extendBuffer; },
94
- get mergeNames () { return mergeNames; },
95
- get findStringPrefix () { return findStringPrefix; },
96
- get parsePercent () { return parsePercent; },
97
- get formatVersionedName () { return formatVersionedName; },
99
+ get trim () { return trim; },
100
+ get trimQuotes () { return trimQuotes; },
101
+ get uniq () { return uniq; },
98
102
  get uniqifyNames () { return uniqifyNames; },
99
- get parseString () { return parseString; },
100
- get parseNumber () { return parseNumber; },
101
- get parseIntlNumber () { return parseIntlNumber; },
102
- get cleanNumericString () { return cleanNumericString; },
103
- get trimQuotes () { return trimQuotes; }
103
+ get wildcardToRegExp () { return wildcardToRegExp; }
104
104
  });
105
105
 
106
106
  var api = window.mapshaper; // assuming mapshaper is in global scope
@@ -2946,7 +2946,6 @@
2946
2946
  style.styler = getOverlayPointStyler(getCanvasDisplayStyle(baseLyr).styler, styler);
2947
2947
  }
2948
2948
  style.type = 'styled';
2949
-
2950
2949
  }
2951
2950
  return ids.length > 0 ? style : null;
2952
2951
  }
@@ -8228,7 +8227,7 @@
8228
8227
  }
8229
8228
  });
8230
8229
  return {
8231
- ids: hits
8230
+ ids: utils$1.uniq(hits)
8232
8231
  };
8233
8232
  };
8234
8233
  }
@@ -8414,7 +8413,7 @@
8414
8413
  mouse.on('contextmenu', function(e) {
8415
8414
  e.originalEvent.preventDefault();
8416
8415
  if (El('body').hasClass('map-view')) {
8417
- triggerHitEvent('contextmenu', e);
8416
+ triggerPointerEvent('contextmenu', e);
8418
8417
  }
8419
8418
  });
8420
8419
 
@@ -8510,7 +8509,7 @@
8510
8509
  if (storedData.id == id) return;
8511
8510
  storedData.id = id;
8512
8511
  storedData.ids = id == -1 ? [] : [id];
8513
- triggerHitEvent('change');
8512
+ triggerChangeEvent();
8514
8513
  };
8515
8514
 
8516
8515
  // Get a reference to the active layer, so listeners to hit events can interact
@@ -8529,7 +8528,7 @@
8529
8528
  self.setPinning = function(val) {
8530
8529
  if (pinnedOn != val) {
8531
8530
  pinnedOn = val;
8532
- triggerHitEvent('change');
8531
+ triggerChangeEvent();
8533
8532
  }
8534
8533
  };
8535
8534
 
@@ -8537,7 +8536,7 @@
8537
8536
  // turnOn('selection');
8538
8537
  transientIds = ids || [];
8539
8538
  if (active) {
8540
- triggerHitEvent('change');
8539
+ triggerChangeEvent();
8541
8540
  }
8542
8541
  };
8543
8542
 
@@ -8552,9 +8551,9 @@
8552
8551
  self.triggerChangeEvent();
8553
8552
  };
8554
8553
 
8555
- self.triggerChangeEvent = function() {
8556
- triggerHitEvent('change');
8557
- };
8554
+ self.triggerChangeEvent = triggerChangeEvent;
8555
+
8556
+ self.getHitState = getHitState;
8558
8557
 
8559
8558
  self.clearDrawingId = function() {
8560
8559
  self.setDrawingId(-1);
@@ -8566,14 +8565,14 @@
8566
8565
  if (p2 && p2[0] == p[0] && p2[1] == p[1]) return;
8567
8566
  storedData.hit_coordinates = p;
8568
8567
  storedData.hit_type = type || '';
8569
- triggerHitEvent('change');
8568
+ triggerChangeEvent();
8570
8569
  };
8571
8570
 
8572
8571
  self.clearHoverVertex = function() {
8573
8572
  if (!storedData.hit_coordinates) return;
8574
8573
  delete storedData.hit_coordinates;
8575
8574
  delete storedData.hit_type;
8576
- triggerHitEvent('change');
8575
+ triggerChangeEvent();
8577
8576
  };
8578
8577
 
8579
8578
  self.clearSelection = function() {
@@ -8607,7 +8606,7 @@
8607
8606
  if (n < 2 || pinnedId() == -1) return;
8608
8607
  storedData.id = (pinnedId() + n + diff) % n;
8609
8608
  storedData.ids = [storedData.id];
8610
- triggerHitEvent('change');
8609
+ triggerChangeEvent();
8611
8610
  }
8612
8611
 
8613
8612
  // diff: 1 or -1
@@ -8617,7 +8616,7 @@
8617
8616
  var n = storedData.ids.length;
8618
8617
  if (i < 0 || n < 2) return;
8619
8618
  storedData.id = storedData.ids[(i + diff + n) % n];
8620
- triggerHitEvent('change');
8619
+ triggerChangeEvent();
8621
8620
  }
8622
8621
 
8623
8622
  // make sure popup is unpinned and turned off when switching editing modes
@@ -8644,7 +8643,6 @@
8644
8643
  mouse.on('drag', handlePointerEvent, null, priority);
8645
8644
  mouse.on('dragend', handlePointerEvent, null, priority);
8646
8645
 
8647
-
8648
8646
  mouse.on('click', function(e) {
8649
8647
  var pinned = storedData.pinned;
8650
8648
  if (!hitTest || !active) return;
@@ -8661,7 +8659,7 @@
8661
8659
  // a new point doesn't get made
8662
8660
  return;
8663
8661
  }
8664
- triggerHitEvent('click', e);
8662
+ triggerPointerEvent('click', e);
8665
8663
  }, null, priority);
8666
8664
 
8667
8665
  // Hits are re-detected on 'hover' (if hit detection is active)
@@ -8775,7 +8773,7 @@
8775
8773
  storedData = newData;
8776
8774
  gui.container.findChild('.map-layers').classed('symbol-hit', nonEmpty);
8777
8775
  if (active) {
8778
- triggerHitEvent('change');
8776
+ triggerChangeEvent();
8779
8777
  }
8780
8778
  }
8781
8779
 
@@ -8827,40 +8825,50 @@
8827
8825
  function handlePointerEvent(e) {
8828
8826
  if (eventIsEnabled(e.type)) {
8829
8827
  possiblyStopPropagation(e);
8830
- triggerHitEvent(e.type, e);
8828
+ triggerPointerEvent(e.type, e);
8831
8829
  }
8832
8830
  }
8833
8831
 
8832
+ function triggerChangeEvent() {
8833
+ self.dispatchEvent('change', getHitState());
8834
+ }
8835
+
8834
8836
  // evt: event data (may be a pointer event object, an ordinary object or null)
8835
- function triggerHitEvent(type, evt) {
8836
- var eventData = {
8837
- mode: interactionMode()
8838
- };
8837
+ function triggerPointerEvent(type, evt) {
8838
+ var eventData = getHitState();
8839
8839
  if (evt) {
8840
8840
  // data coordinates
8841
8841
  eventData.projected_coordinates = gui.map.pixelCoordsToProjectedCoords(evt.x, evt.y);
8842
8842
  eventData.lonlat_coordinates = gui.map.pixelCoordsToLngLatCoords(evt.x, evt.y);
8843
8843
  eventData.originalEvent = evt;
8844
8844
  eventData.overMap = isOverMap(evt);
8845
+ utils$1.defaults(eventData, evt.data);
8845
8846
  }
8847
+ // utils.defaults(eventData, evt && evt.data || {}, storedData);
8848
+ self.dispatchEvent(type, eventData);
8849
+ }
8850
+
8851
+ function getHitState() {
8852
+ var data = {
8853
+ mode: interactionMode()
8854
+ };
8846
8855
  // Merge stored hit data into the event data
8847
- utils$1.defaults(eventData, evt && evt.data || {}, storedData);
8848
- // utils.extend(eventData, storedData);
8856
+ utils$1.defaults(data, storedData);
8849
8857
  if (transientIds.length) {
8850
8858
  // add transient ids to any other hit ids
8851
- eventData.ids = utils$1.uniq(transientIds.concat(eventData.ids || []));
8859
+ data.ids = utils$1.uniq(transientIds.concat(data.ids || []));
8852
8860
  }
8853
8861
  // when drawing, we want the overlay layer to show the path being currently
8854
8862
  // drawn.
8855
8863
  if (drawingId >= 0) {
8856
- // eventData.ids = [drawingId];
8857
- // eventData.id = drawingId;
8858
- eventData.ids = utils$1.uniq(eventData.ids.concat([drawingId]));
8864
+ // data.ids = [drawingId];
8865
+ // data.id = drawingId;
8866
+ data.ids = utils$1.uniq(data.ids.concat([drawingId]));
8859
8867
  }
8860
8868
  if (pinnedOn) {
8861
- eventData.pinned = true;
8869
+ data.pinned = true;
8862
8870
  }
8863
- self.dispatchEvent(type, eventData);
8871
+ return data;
8864
8872
  }
8865
8873
 
8866
8874
  // Test if two hit data objects are equivalent
@@ -13567,12 +13575,14 @@ GUI and setting the size and crop of SVG output.</p><div><input type="text" clas
13567
13575
  }
13568
13576
 
13569
13577
  function initMap() {
13578
+ var accessToken = (window.location.hostname == 'localhost' ?
13579
+ params.localhost_key : params.production_key) || params.key;
13570
13580
  if (!enabled() || map || loading) return;
13571
13581
  loading = true;
13572
13582
  loadStylesheet(params.css);
13573
13583
  loadScript(params.js, function() {
13574
13584
  map = new window.mapboxgl.Map({
13575
- accessToken: params.key,
13585
+ accessToken: accessToken,
13576
13586
  logoPosition: 'bottom-left',
13577
13587
  container: mapEl.node(),
13578
13588
  style: activeStyle.url,
@@ -13761,6 +13771,7 @@ GUI and setting the size and crop of SVG output.</p><div><input type="text" clas
13761
13771
 
13762
13772
  // This is the entry point for bundling mapshaper's web UI
13763
13773
 
13774
+
13764
13775
  onload(function() {
13765
13776
  if (!GUI.browserIsSupported()) {
13766
13777
  El("#mshp-not-supported").show();