pwaLUPMIS2/node_modules/.vite/deps/chunk-56VFHHUN.js
2026-03-04 12:59:40 +01:00

277 lines
7.8 KiB
JavaScript

import {
Feature_default as Feature_default2
} from "./chunk-W7BDJOQY.js";
import {
GeometryCollection_default,
LineString_default,
MultiLineString_default,
MultiPoint_default,
MultiPolygon_default
} from "./chunk-7JXPN73Q.js";
import {
Feature_default
} from "./chunk-E53S5GN6.js";
import {
Point_default,
Polygon_default,
linearRingsAreOriented,
linearRingssAreOriented,
orientLinearRings,
orientLinearRingsArray
} from "./chunk-AZGMK675.js";
import {
equivalent,
get,
getTransform
} from "./chunk-A3RXLHYB.js";
import {
abstract
} from "./chunk-Q5ZULJHM.js";
// node_modules/ol/format/Feature.js
var FeatureFormat = class {
constructor() {
this.dataProjection = void 0;
this.defaultFeatureProjection = void 0;
this.featureClass = /** @type {FeatureToFeatureClass<FeatureType>} */
Feature_default;
this.supportedMediaTypes = null;
}
/**
* Adds the data projection to the read options.
* @param {Document|Element|Object|string} source Source.
* @param {ReadOptions} [options] Options.
* @return {ReadOptions|undefined} Options.
* @protected
*/
getReadOptions(source, options) {
if (options) {
let dataProjection = options.dataProjection ? get(options.dataProjection) : this.readProjection(source);
if (options.extent && dataProjection && dataProjection.getUnits() === "tile-pixels") {
dataProjection = get(dataProjection);
dataProjection.setWorldExtent(options.extent);
}
options = {
dataProjection,
featureProjection: options.featureProjection
};
}
return this.adaptOptions(options);
}
/**
* Sets the `dataProjection` on the options, if no `dataProjection`
* is set.
* @param {WriteOptions|ReadOptions|undefined} options
* Options.
* @protected
* @return {WriteOptions|ReadOptions|undefined}
* Updated options.
*/
adaptOptions(options) {
return Object.assign(
{
dataProjection: this.dataProjection,
featureProjection: this.defaultFeatureProjection,
featureClass: this.featureClass
},
options
);
}
/**
* @abstract
* @return {Type} The format type.
*/
getType() {
return abstract();
}
/**
* Read a single feature from a source.
*
* @abstract
* @param {Document|Element|Object|string} source Source.
* @param {ReadOptions} [options] Read options.
* @return {FeatureType|Array<FeatureType>} Feature.
*/
readFeature(source, options) {
return abstract();
}
/**
* Read all features from a source.
*
* @abstract
* @param {Document|Element|ArrayBuffer|Object|string} source Source.
* @param {ReadOptions} [options] Read options.
* @return {Array<FeatureType>} Features.
*/
readFeatures(source, options) {
return abstract();
}
/**
* Read a single geometry from a source.
*
* @abstract
* @param {Document|Element|Object|string} source Source.
* @param {ReadOptions} [options] Read options.
* @return {import("../geom/Geometry.js").default} Geometry.
*/
readGeometry(source, options) {
return abstract();
}
/**
* Read the projection from a source.
*
* @abstract
* @param {Document|Element|Object|string} source Source.
* @return {import("../proj/Projection.js").default|undefined} Projection.
*/
readProjection(source) {
return abstract();
}
/**
* Encode a feature in this format.
*
* @abstract
* @param {Feature} feature Feature.
* @param {WriteOptions} [options] Write options.
* @return {string|ArrayBuffer} Result.
*/
writeFeature(feature, options) {
return abstract();
}
/**
* Encode an array of features in this format.
*
* @abstract
* @param {Array<Feature>} features Features.
* @param {WriteOptions} [options] Write options.
* @return {string|ArrayBuffer} Result.
*/
writeFeatures(features, options) {
return abstract();
}
/**
* Write a single geometry in this format.
*
* @abstract
* @param {import("../geom/Geometry.js").default} geometry Geometry.
* @param {WriteOptions} [options] Write options.
* @return {string|ArrayBuffer} Result.
*/
writeGeometry(geometry, options) {
return abstract();
}
};
var Feature_default3 = FeatureFormat;
function transformGeometryWithOptions(geometry, write, options) {
const featureProjection = options ? get(options.featureProjection) : null;
const dataProjection = options ? get(options.dataProjection) : null;
let transformed = geometry;
if (featureProjection && dataProjection && !equivalent(featureProjection, dataProjection)) {
if (write) {
transformed = /** @type {T} */
geometry.clone();
}
const fromProjection = write ? featureProjection : dataProjection;
const toProjection = write ? dataProjection : featureProjection;
if (fromProjection.getUnits() === "tile-pixels") {
transformed.transform(fromProjection, toProjection);
} else {
transformed.applyTransform(getTransform(fromProjection, toProjection));
}
}
if (write && options && /** @type {WriteOptions} */
options.decimals !== void 0) {
const power = Math.pow(
10,
/** @type {WriteOptions} */
options.decimals
);
const transform = function(coordinates) {
for (let i = 0, ii = coordinates.length; i < ii; ++i) {
coordinates[i] = Math.round(coordinates[i] * power) / power;
}
return coordinates;
};
if (transformed === geometry) {
transformed = /** @type {T} */
geometry.clone();
}
transformed.applyTransform(transform);
}
return transformed;
}
var GeometryConstructor = {
Point: Point_default,
LineString: LineString_default,
Polygon: Polygon_default,
MultiPoint: MultiPoint_default,
MultiLineString: MultiLineString_default,
MultiPolygon: MultiPolygon_default
};
function orientFlatCoordinates(flatCoordinates, ends, stride) {
if (Array.isArray(ends[0])) {
if (!linearRingssAreOriented(flatCoordinates, 0, ends, stride)) {
flatCoordinates = flatCoordinates.slice();
orientLinearRingsArray(flatCoordinates, 0, ends, stride);
}
return flatCoordinates;
}
if (!linearRingsAreOriented(flatCoordinates, 0, ends, stride)) {
flatCoordinates = flatCoordinates.slice();
orientLinearRings(flatCoordinates, 0, ends, stride);
}
return flatCoordinates;
}
function createRenderFeature(object, options) {
var _a;
const geometry = object.geometry;
if (!geometry) {
return [];
}
if (Array.isArray(geometry)) {
return geometry.map((geometry2) => createRenderFeature({ ...object, geometry: geometry2 })).flat();
}
const geometryType = geometry.type === "MultiPolygon" ? "Polygon" : geometry.type;
if (geometryType === "GeometryCollection" || geometryType === "Circle") {
throw new Error("Unsupported geometry type: " + geometryType);
}
const stride = geometry.layout.length;
return transformGeometryWithOptions(
new Feature_default2(
geometryType,
geometryType === "Polygon" ? orientFlatCoordinates(geometry.flatCoordinates, geometry.ends, stride) : geometry.flatCoordinates,
(_a = geometry.ends) == null ? void 0 : _a.flat(),
stride,
object.properties || {},
object.id
).enableSimplifyTransformed(),
false,
options
);
}
function createGeometry(object, options) {
if (!object) {
return null;
}
if (Array.isArray(object)) {
const geometries = object.map(
(geometry) => createGeometry(geometry, options)
);
return new GeometryCollection_default(geometries);
}
const Geometry = GeometryConstructor[object.type];
return transformGeometryWithOptions(
new Geometry(object.flatCoordinates, object.layout || "XY", object.ends),
false,
options
);
}
export {
Feature_default3 as Feature_default,
transformGeometryWithOptions,
createRenderFeature,
createGeometry
};
//# sourceMappingURL=chunk-56VFHHUN.js.map