"use strict";Object.defineProperty(exports, "__esModule", {value: true}); function _interopRequireWildcard(obj) { if (obj && obj.__esModule) { return obj; } else { var newObj = {}; if (obj != null) { for (var key in obj) { if (Object.prototype.hasOwnProperty.call(obj, key)) { newObj[key] = obj[key]; } } } newObj.default = obj; return newObj; } }// index.ts
var _helpers = require('@turf/helpers');
var _polyclipts = require('polyclip-ts'); var polyclip = _interopRequireWildcard(_polyclipts);
var _clone = require('@turf/clone');
function mask(polygon, mask2, options) {
  var _a;
  const mutate = (_a = options == null ? void 0 : options.mutate) != null ? _a : false;
  let maskTemplate = mask2;
  if (mask2 && mutate === false) {
    maskTemplate = _clone.clone.call(void 0, mask2);
  }
  const maskPolygon = createMask(maskTemplate);
  let polygonOuters = null;
  if (polygon.type === "FeatureCollection") {
    polygonOuters = unionFc(polygon);
  } else if (polygon.type === "Feature") {
    polygonOuters = createGeomFromPolygonClippingOutput(
      polyclip.union(polygon.geometry.coordinates)
    );
  } else {
    polygonOuters = createGeomFromPolygonClippingOutput(
      polyclip.union(polygon.coordinates)
    );
  }
  polygonOuters.geometry.coordinates.forEach(function(contour) {
    maskPolygon.geometry.coordinates.push(contour[0]);
  });
  return maskPolygon;
}
function unionFc(fc) {
  const unioned = fc.features.length === 2 ? polyclip.union(
    fc.features[0].geometry.coordinates,
    fc.features[1].geometry.coordinates
  ) : polyclip.union.apply(
    polyclip,
    fc.features.map(function(f) {
      return f.geometry.coordinates;
    })
  );
  return createGeomFromPolygonClippingOutput(unioned);
}
function createGeomFromPolygonClippingOutput(unioned) {
  return _helpers.multiPolygon.call(void 0, unioned);
}
function createMask(mask2) {
  const world = [
    [
      [180, 90],
      [-180, 90],
      [-180, -90],
      [180, -90],
      [180, 90]
    ]
  ];
  let coordinates = world;
  if (mask2) {
    if (mask2.type === "Feature") {
      coordinates = mask2.geometry.coordinates;
    } else {
      coordinates = mask2.coordinates;
    }
  }
  return _helpers.polygon.call(void 0, coordinates);
}
var turf_mask_default = mask;



exports.default = turf_mask_default; exports.mask = mask;
//# sourceMappingURL=index.cjs.map