"use strict";
Object.defineProperty(exports, "__esModule", { value: true });
var tslib_1 = require("tslib");
var point_at_length_1 = tslib_1.__importDefault(require("point-at-length"));
var util_1 = require("@antv/util");
var d3_geo_1 = require("d3-geo");
var data_set_1 = require("../data-set");
var geoPathGenerator = d3_geo_1.geoPath();
function GeoJSONConnector(data, _options, dataView) {
    dataView.dataType = data_set_1.DataSet.CONSTANTS.GEO;
    var features = util_1.deepMix([], data.features);
    // pre-process
    features.forEach(function (feature) {
        feature.name = feature.properties.name;
        feature.longitude = [];
        feature.latitude = [];
        var pathData = (feature.pathData = geoPathGenerator(feature));
        var points = point_at_length_1.default(pathData);
        points._path.forEach(function (point) {
            feature.longitude.push(point[1]);
            feature.latitude.push(point[2]);
        });
        var centroid = geoPathGenerator.centroid(feature);
        feature.centroidX = centroid[0];
        feature.centroidY = centroid[1];
    });
    // dataView.origin = features;
    return features;
}
data_set_1.DataSet.registerConnector('geo', GeoJSONConnector);
data_set_1.DataSet.registerConnector('geojson', GeoJSONConnector);
data_set_1.DataSet.registerConnector('GeoJSON', GeoJSONConnector);
exports.default = GeoJSONConnector;