{"version":3,"sources":["/home/runner/work/turf/turf/packages/turf-geojson-rbush/dist/cjs/index.cjs","../../index.ts"],"names":[],"mappings":"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","file":"/home/runner/work/turf/turf/packages/turf-geojson-rbush/dist/cjs/index.cjs","sourcesContent":[null,"import rbush from \"rbush\";\nimport { featureCollection } from \"@turf/helpers\";\nimport { featureEach } from \"@turf/meta\";\nimport { bbox as turfBBox } from \"@turf/bbox\";\nimport {\n  BBox,\n  Feature,\n  FeatureCollection,\n  GeoJsonProperties,\n  Geometry,\n} from \"geojson\";\n\n/**\n * @module rbush\n */\n\n/**\n * Converts GeoJSON to {minX, minY, maxX, maxY} schema\n *\n * @memberof rbush\n * @private\n * @param {BBox|FeatureCollection|Feature} geojson feature(s) to retrieve BBox from\n * @returns {Object} converted to {minX, minY, maxX, maxY}\n */\nfunction toBBox(geojson: BBox | FeatureCollection | Feature) {\n  var bbox;\n  if ((geojson as any).bbox) bbox = (geojson as any).bbox;\n  else if (Array.isArray(geojson) && geojson.length === 4) bbox = geojson;\n  else if (Array.isArray(geojson) && geojson.length === 6)\n    bbox = [geojson[0], geojson[1], geojson[3], geojson[4]];\n  else if (geojson.type === \"Feature\") bbox = turfBBox(geojson);\n  else if (geojson.type === \"FeatureCollection\") bbox = turfBBox(geojson);\n  else throw new Error(\"invalid geojson\");\n\n  return {\n    minX: bbox[0],\n    minY: bbox[1],\n    maxX: bbox[2],\n    maxY: bbox[3],\n  };\n}\n\nclass RBush<G extends Geometry, P extends GeoJsonProperties> {\n  private tree: rbush<Feature<G, P>>;\n\n  constructor(maxEntries = 9) {\n    this.tree = new rbush<Feature<G, P>>(maxEntries);\n    // When we load features into the underlying rbush instance, it has to be able to correctly\n    // handle GeoJSON bbox values while inserting into the data structure. The rest of the API\n    // can just be a passthrough wrapping class.\n    this.tree.toBBox = toBBox;\n  }\n\n  /**\n   * [insert](https://github.com/mourner/rbush#data-format)\n   *\n   * @memberof rbush\n   * @param {Feature} feature insert single GeoJSON Feature\n   * @returns {RBush} GeoJSON RBush\n   * @example\n   * var poly = turf.polygon([[[-78, 41], [-67, 41], [-67, 48], [-78, 48], [-78, 41]]]);\n   * tree.insert(poly)\n   */\n  insert(feature: Feature<G, P>): RBush<G, P> {\n    if (feature.type !== \"Feature\") throw new Error(\"invalid feature\");\n    feature.bbox = feature.bbox ? feature.bbox : turfBBox(feature);\n    this.tree.insert(feature);\n    return this;\n  }\n\n  /**\n   * [load](https://github.com/mourner/rbush#bulk-inserting-data)\n   *\n   * @memberof rbush\n   * @param {FeatureCollection|Array<Feature>} features load entire GeoJSON FeatureCollection\n   * @returns {RBush} GeoJSON RBush\n   * @example\n   * var polys = turf.polygons([\n   *     [[[-78, 41], [-67, 41], [-67, 48], [-78, 48], [-78, 41]]],\n   *     [[[-93, 32], [-83, 32], [-83, 39], [-93, 39], [-93, 32]]]\n   * ]);\n   * tree.load(polys);\n   */\n  load(features: FeatureCollection<G, P> | Feature<G, P>[]): RBush<G, P> {\n    var load: Feature<G, P>[] = [];\n    // Load an Array of Features\n    if (Array.isArray(features)) {\n      features.forEach(function (feature) {\n        if (feature.type !== \"Feature\") throw new Error(\"invalid features\");\n        feature.bbox = feature.bbox ? feature.bbox : turfBBox(feature);\n        load.push(feature);\n      });\n    } else {\n      // Load a FeatureCollection\n      featureEach(features, function (feature) {\n        if (feature.type !== \"Feature\") throw new Error(\"invalid features\");\n        feature.bbox = feature.bbox ? feature.bbox : turfBBox(feature);\n        load.push(feature);\n      });\n    }\n    this.tree.load(load);\n    return this;\n  }\n\n  /**\n   * [remove](https://github.com/mourner/rbush#removing-data)\n   *\n   * @memberof rbush\n   * @param {Feature} feature remove single GeoJSON Feature\n   * @param {Function} equals Pass a custom equals function to compare by value for removal.\n   * @returns {RBush} GeoJSON RBush\n   * @example\n   * var poly = turf.polygon([[[-78, 41], [-67, 41], [-67, 48], [-78, 48], [-78, 41]]]);\n   *\n   * tree.remove(poly);\n   */\n  remove(\n    feature: Feature<G, P>,\n    equals?: (a: Feature<G, P>, b: Feature<G, P>) => boolean\n  ) {\n    if (feature.type !== \"Feature\") throw new Error(\"invalid feature\");\n    feature.bbox = feature.bbox ? feature.bbox : turfBBox(feature);\n    this.tree.remove(feature, equals);\n    return this;\n  }\n\n  /**\n   * [clear](https://github.com/mourner/rbush#removing-data)\n   *\n   * @memberof rbush\n   * @returns {RBush} GeoJSON Rbush\n   * @example\n   * tree.clear()\n   */\n  clear() {\n    this.tree.clear();\n    return this;\n  }\n\n  /**\n   * [search](https://github.com/mourner/rbush#search)\n   *\n   * @memberof rbush\n   * @param {BBox|FeatureCollection|Feature} geojson search with GeoJSON\n   * @returns {FeatureCollection} all features that intersects with the given GeoJSON.\n   * @example\n   * var poly = turf.polygon([[[-78, 41], [-67, 41], [-67, 48], [-78, 48], [-78, 41]]]);\n   *\n   * tree.search(poly);\n   */\n  search(geojson: Feature | FeatureCollection | BBox): FeatureCollection<G, P> {\n    var features = this.tree.search(toBBox(geojson));\n    return featureCollection(features);\n  }\n\n  /**\n   * [collides](https://github.com/mourner/rbush#collisions)\n   *\n   * @memberof rbush\n   * @param {BBox|FeatureCollection|Feature} geojson collides with GeoJSON\n   * @returns {boolean} true if there are any items intersecting the given GeoJSON, otherwise false.\n   * @example\n   * var poly = turf.polygon([[[-78, 41], [-67, 41], [-67, 48], [-78, 48], [-78, 41]]]);\n   *\n   * tree.collides(poly);\n   */\n  collides(geojson: Feature | FeatureCollection | BBox): boolean {\n    return this.tree.collides(toBBox(geojson));\n  }\n\n  /**\n   * [all](https://github.com/mourner/rbush#search)\n   *\n   * @memberof rbush\n   * @returns {FeatureCollection} all the features in RBush\n   * @example\n   * tree.all()\n   */\n  all() {\n    const features = this.tree.all();\n    return featureCollection(features);\n  }\n\n  /**\n   * [toJSON](https://github.com/mourner/rbush#export-and-import)\n   *\n   * @memberof rbush\n   * @returns {any} export data as JSON object\n   * @example\n   * var exported = tree.toJSON()\n   */\n  toJSON() {\n    return this.tree.toJSON();\n  }\n\n  /**\n   * [fromJSON](https://github.com/mourner/rbush#export-and-import)\n   *\n   * @memberof rbush\n   * @param {any} json import previously exported data\n   * @returns {RBush} GeoJSON RBush\n   * @example\n   * var exported = {\n   *   \"children\": [\n   *     {\n   *       \"type\": \"Feature\",\n   *       \"geometry\": {\n   *         \"type\": \"Point\",\n   *         \"coordinates\": [110, 50]\n   *       },\n   *       \"properties\": {},\n   *       \"bbox\": [110, 50, 110, 50]\n   *     }\n   *   ],\n   *   \"height\": 1,\n   *   \"leaf\": true,\n   *   \"minX\": 110,\n   *   \"minY\": 50,\n   *   \"maxX\": 110,\n   *   \"maxY\": 50\n   * }\n   * tree.fromJSON(exported)\n   */\n  fromJSON(json: any): RBush<G, P> {\n    this.tree.fromJSON(json);\n    return this;\n  }\n}\n\n/**\n * GeoJSON implementation of [RBush](https://github.com/mourner/rbush#rbush) spatial index.\n *\n * @function rbush\n * @param {number} [maxEntries=9] defines the maximum number of entries in a tree node. 9 (used by default) is a\n * reasonable choice for most applications. Higher value means faster insertion and slower search, and vice versa.\n * @returns {RBush} GeoJSON RBush\n * @example\n * var geojsonRbush = require('geojson-rbush').default;\n * var tree = geojsonRbush();\n */\nfunction geojsonRbush<\n  G extends Geometry,\n  P extends GeoJsonProperties = GeoJsonProperties,\n>(maxEntries?: number) {\n  return new RBush<G, P>(maxEntries);\n}\n\nexport { geojsonRbush };\nexport default geojsonRbush;\n"]}