devextreme
Version:
HTML5 JavaScript Component Suite for Responsive Web Development
182 lines (181 loc) • 5.86 kB
JavaScript
/**
* DevExtreme (esm/__internal/ui/map/provider.js)
* Version: 25.2.3
* Build date: Fri Dec 12 2025
*
* Copyright (c) 2012 - 2025 Developer Express Inc. ALL RIGHTS RESERVED
* Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/
*/
import {
addNamespace
} from "../../../common/core/events/utils/index";
import Class from "../../../core/class";
import {
isNumeric,
isPlainObject
} from "../../../core/utils/type";
import {
isDefined
} from "../../core/utils/m_type";
class Provider {
constructor(map, $container) {
this._mapWidget = map;
this._$container = $container
}
_defaultRouteWeight() {
return 5
}
_defaultRouteOpacity() {
return .5
}
_defaultRouteColor() {
return "#0000FF"
}
render(markerOptions, routeOptions) {
return this._renderImpl().then((() => Promise.all([this._applyFunctionIfNeeded("addMarkers", markerOptions), this._applyFunctionIfNeeded("addRoutes", routeOptions)]).then((() => true))))
}
_renderImpl() {
return Promise.resolve()
}
updateDimensions() {
Class.abstract()
}
updateMapType() {
Class.abstract()
}
updateDisabled() {
Class.abstract()
}
updateBounds() {
Class.abstract()
}
updateCenter() {
Class.abstract()
}
updateZoom() {
Class.abstract()
}
updateControls(markers, routes) {
return Promise.resolve()
}
updateMarkers(markerOptionsToRemove, markerOptionsToAdd) {
return new Promise((resolve => {
this._applyFunctionIfNeeded("removeMarkers", markerOptionsToRemove).then((removeValue => {
this._applyFunctionIfNeeded("addMarkers", markerOptionsToAdd).then((addValue => {
resolve(addValue || removeValue)
}))
}))
}))
}
addMarkers(options) {
return Promise.resolve()
}
removeMarkers(options) {
return Promise.resolve()
}
adjustViewport() {
Class.abstract()
}
updateRoutes(routeOptionsToRemove, routeOptionsToAdd) {
return new Promise((resolve => {
this._applyFunctionIfNeeded("removeRoutes", routeOptionsToRemove).then((removeValue => {
this._applyFunctionIfNeeded("addRoutes", routeOptionsToAdd).then((addValue => {
resolve(addValue || removeValue)
}))
}))
}))
}
addRoutes(options) {
return Promise.resolve()
}
removeRoutes(options) {
return Promise.resolve()
}
clean() {
Class.abstract()
}
map() {
return this._map
}
isEventsCanceled(e) {
return false
}
_option(name, value) {
if (void 0 === value) {
const mapOptions = this._mapWidget.option();
return mapOptions[name]
}
this._mapWidget.setOptionSilent(name, value);
return
}
_keyOption(providerName) {
const key = this._option("apiKey") ?? "";
if ("string" === typeof key) {
return key
}
if (isPlainObject(key)) {
return key[providerName] ?? ""
}
return ""
}
_parseTooltipOptions(option) {
const isStringOption = "string" === typeof option;
return {
text: isStringOption ? option : option.text ?? "",
visible: isStringOption ? false : option.isShown ?? false
}
}
_getLatLng(location) {
if ("string" === typeof location) {
const coords = location.split(",").map((item => item.trim()));
const numericRegex = /^[-+]?[0-9]*\.?[0-9]*$/;
if (2 === coords.length && numericRegex.exec(coords[0]) && numericRegex.exec(coords[1])) {
return {
lat: parseFloat(coords[0]),
lng: parseFloat(coords[1])
}
}
} else if (Array.isArray(location) && 2 === location.length) {
return {
lat: location[0],
lng: location[1]
}
} else if (isPlainObject(location) && isNumeric(location.lat) && isNumeric(location.lng)) {
return location
}
return null
}
_areBoundsSet() {
const bounds = this._option("bounds");
return isDefined(null === bounds || void 0 === bounds ? void 0 : bounds.northEast) && isDefined(null === bounds || void 0 === bounds ? void 0 : bounds.southWest)
}
_addEventNamespace(name) {
return addNamespace(name, this._mapWidget.NAME)
}
_applyFunctionIfNeeded(fnName, array) {
if (!array.length) {
return Promise.resolve()
}
const isMarkersUpdate = "addMarkers" === fnName || "removeMarkers" === fnName;
if (isMarkersUpdate) {
return this[fnName](array)
}
return this[fnName](array)
}
_fireClickAction(actionArguments) {
this._mapWidget._createActionByOption("onClick")(actionArguments)
}
_fireMarkerAddedAction(actionArguments) {
this._mapWidget._createActionByOption("onMarkerAdded")(actionArguments)
}
_fireMarkerRemovedAction(actionArguments) {
this._mapWidget._createActionByOption("onMarkerRemoved")(actionArguments)
}
_fireRouteAddedAction(actionArguments) {
this._mapWidget._createActionByOption("onRouteAdded")(actionArguments)
}
_fireRouteRemovedAction(actionArguments) {
this._mapWidget._createActionByOption("onRouteRemoved")(actionArguments)
}
}
export default Provider;