UNPKG

maplibre-gl-js-amplify

Version:

MapLibre Plugin to Support Amplify Geo Integration

113 lines (112 loc) 4.1 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.removeElement = exports.createElement = exports.validateCoordinates = exports.urlEncodePeriods = exports.getFeaturesFromData = exports.strHasLength = exports.isGeoJsonSource = exports.isPolygonArray = exports.isPolygon = exports.isGeofenceArray = exports.isGeofence = exports.isNamedLocationArray = exports.isNamedLocation = exports.isCoordinatesArray = exports.isCoordinates = void 0; function isCoordinates(array) { return (Array.isArray(array) && typeof array[0] === 'number' && typeof array[1] === 'number'); } exports.isCoordinates = isCoordinates; function isCoordinatesArray(array) { return isCoordinates(array[0]); } exports.isCoordinatesArray = isCoordinatesArray; function isNamedLocation(object) { return (object && Array.isArray(object.coordinates) && typeof object.coordinates[0] === 'number' && typeof object.coordinates[1] === 'number'); } exports.isNamedLocation = isNamedLocation; function isNamedLocationArray(array) { return isNamedLocation(array[0]); } exports.isNamedLocationArray = isNamedLocationArray; function isGeofence(object) { return (object && typeof object.geofenceId === 'string' && typeof object.geometry === 'object'); } exports.isGeofence = isGeofence; function isGeofenceArray(array) { return Array.isArray(array) && isGeofence(array[0]); } exports.isGeofenceArray = isGeofenceArray; function isPolygon(object) { return Array.isArray(object) && isCoordinatesArray(object[0]); } exports.isPolygon = isPolygon; function isPolygonArray(array) { return Array.isArray(array) && isPolygon(array[0]); } exports.isPolygonArray = isPolygonArray; function isGeoJsonSource(source) { return source.type === 'geojson'; } exports.isGeoJsonSource = isGeoJsonSource; const strHasLength = (str) => typeof str === 'string' && str.length > 0; exports.strHasLength = strHasLength; const getFeaturesFromData = (data) => { let features; if (isCoordinatesArray(data)) { features = data.map((point) => { return { type: 'Feature', geometry: { type: 'Point', coordinates: point }, properties: { place_name: `Coordinates,${point}` }, }; }); } else if (isNamedLocationArray(data)) { features = data.map((location) => { return { type: 'Feature', geometry: { type: 'Point', coordinates: location.coordinates }, properties: { title: location.title, address: location.address }, }; }); } else { features = data; } return features; }; exports.getFeaturesFromData = getFeaturesFromData; const urlEncodePeriods = (str) => { return str.replace(/\./g, '%2E'); }; exports.urlEncodePeriods = urlEncodePeriods; function validateCoordinates(coordinates) { const [lng, lat] = coordinates; if (!Number.isFinite(lng) || !Number.isFinite(lat)) { throw new Error(`Invalid coordinates: [${lng},${lat}]`); } if (lat < -90 || lat > 90) { const errorString = 'Latitude must be between -90 and 90 degrees inclusive.'; // eslint-disable-next-line no-console console.warn(errorString); throw new Error(errorString); } else if (lng < -180 || lng > 180) { const errorString = 'Longitude must be between -180 and 180 degrees inclusive.'; // eslint-disable-next-line no-console console.warn(errorString); throw new Error(errorString); } } exports.validateCoordinates = validateCoordinates; function createElement(tagName, className, container) { const el = window.document.createElement(tagName); if (className !== undefined) el.className = className; if (container) container.appendChild(el); return el; } exports.createElement = createElement; function removeElement(node) { if (node.parentNode) { node.parentNode.removeChild(node); } } exports.removeElement = removeElement;