| 1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586 | 
							- 'use strict';
 
- var helpers = require('@turf/helpers');
 
- var polygonClipping = require('polygon-clipping');
 
- function _interopDefaultLegacy (e) { return e && typeof e === 'object' && 'default' in e ? e : { 'default': e }; }
 
- var polygonClipping__default = /*#__PURE__*/_interopDefaultLegacy(polygonClipping);
 
- /**
 
-  * Takes any type of {@link Polygon|polygon} and an optional mask and returns a {@link Polygon|polygon} exterior ring with holes.
 
-  *
 
-  * @name mask
 
-  * @param {FeatureCollection|Feature<Polygon|MultiPolygon>} polygon GeoJSON Polygon used as interior rings or holes.
 
-  * @param {Feature<Polygon>} [mask] GeoJSON Polygon used as the exterior ring (if undefined, the world extent is used)
 
-  * @returns {Feature<Polygon>} Masked Polygon (exterior ring with holes).
 
-  * @example
 
-  * var polygon = turf.polygon([[[112, -21], [116, -36], [146, -39], [153, -24], [133, -10], [112, -21]]]);
 
-  * var mask = turf.polygon([[[90, -55], [170, -55], [170, 10], [90, 10], [90, -55]]]);
 
-  *
 
-  * var masked = turf.mask(polygon, mask);
 
-  *
 
-  * //addToMap
 
-  * var addToMap = [masked]
 
-  */
 
- function mask(polygon, mask) {
 
-   // Define mask
 
-   var maskPolygon = createMask(mask);
 
-   var polygonOuters = null;
 
-   if (polygon.type === "FeatureCollection") polygonOuters = unionFc(polygon);
 
-   else
 
-     polygonOuters = createGeomFromPolygonClippingOutput(
 
-       polygonClipping__default['default'].union(polygon.geometry.coordinates)
 
-     );
 
-   polygonOuters.geometry.coordinates.forEach(function (contour) {
 
-     maskPolygon.geometry.coordinates.push(contour[0]);
 
-   });
 
-   return maskPolygon;
 
- }
 
- function unionFc(fc) {
 
-   var unioned =
 
-     fc.features.length === 2
 
-       ? polygonClipping__default['default'].union(
 
-           fc.features[0].geometry.coordinates,
 
-           fc.features[1].geometry.coordinates
 
-         )
 
-       : polygonClipping__default['default'].union.apply(
 
-           polygonClipping__default['default'],
 
-           fc.features.map(function (f) {
 
-             return f.geometry.coordinates;
 
-           })
 
-         );
 
-   return createGeomFromPolygonClippingOutput(unioned);
 
- }
 
- function createGeomFromPolygonClippingOutput(unioned) {
 
-   return helpers.multiPolygon(unioned);
 
- }
 
- /**
 
-  * Create Mask Coordinates
 
-  *
 
-  * @private
 
-  * @param {Feature<Polygon>} [mask] default to world if undefined
 
-  * @returns {Feature<Polygon>} mask coordinate
 
-  */
 
- function createMask(mask) {
 
-   var world = [
 
-     [
 
-       [180, 90],
 
-       [-180, 90],
 
-       [-180, -90],
 
-       [180, -90],
 
-       [180, 90],
 
-     ],
 
-   ];
 
-   var coordinates = (mask && mask.geometry.coordinates) || world;
 
-   return helpers.polygon(coordinates);
 
- }
 
- module.exports = mask;
 
- module.exports.default = mask;
 
 
  |