@nextgis/ngw-map 1.18.11 → 1.18.15

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -1 +1 @@
1
- {"version":3,"file":"ngw-map.esm-browser.js","sources":["../../../node_modules/events/events.js","../../cancelable-promise/src/CancelError.ts","../../cancelable-promise/src/PromiseControl.ts","../../cancelable-promise/src/TimeoutError.ts","../../cancelable-promise/src/CancelablePromise.ts","../../cancelable-promise/src/index.ts","../../utils/src/applyMixins.ts","../../utils/src/defined.ts","../../utils/src/deepmerge.ts","../../utils/src/debug/debugLog.ts","../../utils/src/deprecated/deprecatedMapClick.ts","../../utils/src/deprecated/deprecatedWarn.ts","../../utils/src/debounce.ts","../../utils/src/geom/constants.ts","../../utils/src/geom/getBoundsPolygon.ts","../../utils/src/geom/getCirclePolygon.ts","../../utils/src/geom/coordTransform.ts","../../utils/src/geom/isLngLatBoundsArray.ts","../../utils/src/geom/getIdentifyRadius.ts","../../utils/src/object/objectAssign.ts","../../utils/src/object/objectDeepEqual.ts","../../utils/src/object/objectRemoveEmpty.ts","../../utils/src/number/round.ts","../../utils/src/typeHelpers/index.ts","../../utils/src/url.ts","../../paint/src/typeHelpers.ts","../../expression/src/utils/tryConvert.ts","../../expression/src/utils/fallback.ts","../../expression/src/utils/evaluateArgs.ts","../../expression/src/expressions/typeExpressions.ts","../../expression/src/expressions/mathExpressions.ts","../../expression/src/expressions/lookupExpressions.ts","../../expression/src/expressions/stringExpressions.ts","../../expression/src/expressions/decisionExpressions.ts","../../expression/src/expressions/interpolationExpressions/step.ts","../../expression/src/constants/colors.ts","../../expression/src/utils/color.ts","../../expression/src/expressions/interpolationExpressions/interpolate.ts","../../expression/src/expressions/interpolationExpressions/index.ts","../../expression/src/expression.ts","../../paint/src/fromPaintExpression.ts","../../properties-filter/src/propertiesFilter.ts","../../paint/src/preparePaint.ts","../../webmap/src/utils/geometryTypes.ts","../../webmap/src/utils/updateGeoJsonAdapterOptions.ts","../../webmap/src/components/keys/KeysCodes.ts","../../webmap/src/components/keys/Keys.ts","../../webmap/src/components/mapStates/StateItem.ts","../../webmap/src/components/mapStates/CenterState.ts","../../webmap/src/components/mapStates/ZoomState.ts","../../webmap/src/utils/clearObject.ts","../../webmap/src/WebMapMain.ts","../../webmap/src/WebMapLayers.ts","../../webmap/src/components/controls/createToggleControl.ts","../../webmap/src/WebMapControls.ts","../../webmap/src/container.ts","../../webmap/src/WebMap.ts","../../webmap/src/utils/getDefaultControls.ts","../../webmap/src/index.ts","../../cache/src/Cache.ts","../../cache/src/index.ts","../../ngw-connector/src/errors/NetworkError.ts","../../ngw-connector/src/errors/NgwError.ts","../../ngw-connector/src/utils/isObject.ts","../../ngw-connector/src/utils/loadData.ts","../../ngw-connector/src/utils/template.ts","../../ngw-connector/src/utils/apiRequest.ts","../../ngw-connector/src/errors/ResourceNotFoundError.ts","../../ngw-connector/src/errors/InsufficientPermissionsError.ts","../../ngw-connector/src/activeConnectors.ts","../../ngw-connector/src/utils/resourceToQuery.ts","../../ngw-connector/src/utils/resourceCompare.ts","../../ngw-connector/src/ResourcesControl.ts","../../ngw-connector/src/NgwConnector.ts","../../ngw-connector/src/index.ts","../../ngw-kit/src/utils/fetchNgwExtent.ts","../../ngw-kit/src/NgwResource.ts","../../ngw-kit/src/utils/createPopupContent.ts","../../ngw-kit/src/utils/getLayerFilterOptions.ts","../../ngw-kit/src/utils/resourceIdFromLayerOptions.ts","../../ngw-kit/src/utils/featureLayerUtils.ts","../../ngw-kit/src/utils/prepareNgwFieldsToPropertiesFilter.ts","../../ngw-kit/src/utils/fetchNgwLayerItems.ts","../../ngw-kit/src/utils/fetchNgwLayerFeatures.ts","../../ngw-kit/src/utils/fetchNgwLayerFeatureCollection.ts","../../ngw-kit/src/utils/fetchNgwLayerCount.ts","../../ngw-kit/src/adapters/createGeoJsonAdapter.ts","../../ngw-kit/src/utils/ngwApiToAdapterOptions.ts","../../ngw-kit/src/adapters/createRasterAdapter.ts","../../tree/src/treeFilter.ts","../../item/src/TreeHelper.ts","../../item/src/properties/BaseProperty.ts","../../item/src/properties/CheckProperty.ts","../../item/src/properties/ItemProperties.ts","../../item/src/Item.ts","../../ngw-kit/src/utils/WebmapLayerOpacityPropertyHandler.ts","../../ngw-kit/src/NgwWebmapItem.ts","../../ngw-kit/src/adapters/createOnFirstShowAdapter.ts","../../ngw-kit/src/adapters/createOnFirstShowNgwAdapter.ts","../../ngw-kit/src/BookmarkItem.ts","../../ngw-kit/src/NgwWebmapLayerAdapter.ts","../../ngw-kit/src/adapters/createNgwWebmapAdapter.ts","../../qms-kit/src/utils/updateQmsOptions.ts","../../qms-kit/src/utils/loadJson.ts","../../qms-kit/src/utils/getSubmodulesFromOriginUrl.ts","../../qms-kit/src/utils/createQmsAdapter.ts","../../qms-kit/src/QmsKit.ts","../../ngw-kit/src/adapters/createBasemapLayerAdapter.ts","../../ngw-kit/src/adapters/createAsyncAdapter.ts","../../ngw-kit/src/utils/utils.ts","../../ngw-kit/src/NgwKit.ts","../../ngw-kit/src/IdentifyItem.ts","../../ngw-kit/src/constants.ts","../../ngw-kit/src/utils/fetchNgwLayerItem.ts","../../ngw-kit/src/utils/fetchNgwLayerFeature.ts","../../ngw-kit/src/utils/identifyUtils.ts","../../ngw-kit/src/utils/getCompanyLogo.ts","../../icons/src/index.ts","../src/utils/appendNgwResources.ts","../src/utils/prepareWebMapOptions.ts","../src/NgwMap.ts","../src/index.ts"],"sourcesContent":["// Copyright Joyent, Inc. and other Node contributors.\n//\n// Permission is hereby granted, free of charge, to any person obtaining a\n// copy of this software and associated documentation files (the\n// \"Software\"), to deal in the Software without restriction, including\n// without limitation the rights to use, copy, modify, merge, publish,\n// distribute, sublicense, and/or sell copies of the Software, and to permit\n// persons to whom the Software is furnished to do so, subject to the\n// following conditions:\n//\n// The above copyright notice and this permission notice shall be included\n// in all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS\n// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\n// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN\n// NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,\n// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR\n// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE\n// USE OR OTHER DEALINGS IN THE SOFTWARE.\n\n'use strict';\n\nvar R = typeof Reflect === 'object' ? Reflect : null\nvar ReflectApply = R && typeof R.apply === 'function'\n ? R.apply\n : function ReflectApply(target, receiver, args) {\n return Function.prototype.apply.call(target, receiver, args);\n }\n\nvar ReflectOwnKeys\nif (R && typeof R.ownKeys === 'function') {\n ReflectOwnKeys = R.ownKeys\n} else if (Object.getOwnPropertySymbols) {\n ReflectOwnKeys = function ReflectOwnKeys(target) {\n return Object.getOwnPropertyNames(target)\n .concat(Object.getOwnPropertySymbols(target));\n };\n} else {\n ReflectOwnKeys = function ReflectOwnKeys(target) {\n return Object.getOwnPropertyNames(target);\n };\n}\n\nfunction ProcessEmitWarning(warning) {\n if (console && console.warn) console.warn(warning);\n}\n\nvar NumberIsNaN = Number.isNaN || function NumberIsNaN(value) {\n return value !== value;\n}\n\nfunction EventEmitter() {\n EventEmitter.init.call(this);\n}\nmodule.exports = EventEmitter;\nmodule.exports.once = once;\n\n// Backwards-compat with node 0.10.x\nEventEmitter.EventEmitter = EventEmitter;\n\nEventEmitter.prototype._events = undefined;\nEventEmitter.prototype._eventsCount = 0;\nEventEmitter.prototype._maxListeners = undefined;\n\n// By default EventEmitters will print a warning if more than 10 listeners are\n// added to it. This is a useful default which helps finding memory leaks.\nvar defaultMaxListeners = 10;\n\nfunction checkListener(listener) {\n if (typeof listener !== 'function') {\n throw new TypeError('The \"listener\" argument must be of type Function. Received type ' + typeof listener);\n }\n}\n\nObject.defineProperty(EventEmitter, 'defaultMaxListeners', {\n enumerable: true,\n get: function() {\n return defaultMaxListeners;\n },\n set: function(arg) {\n if (typeof arg !== 'number' || arg < 0 || NumberIsNaN(arg)) {\n throw new RangeError('The value of \"defaultMaxListeners\" is out of range. It must be a non-negative number. Received ' + arg + '.');\n }\n defaultMaxListeners = arg;\n }\n});\n\nEventEmitter.init = function() {\n\n if (this._events === undefined ||\n this._events === Object.getPrototypeOf(this)._events) {\n this._events = Object.create(null);\n this._eventsCount = 0;\n }\n\n this._maxListeners = this._maxListeners || undefined;\n};\n\n// Obviously not all Emitters should be limited to 10. This function allows\n// that to be increased. Set to zero for unlimited.\nEventEmitter.prototype.setMaxListeners = function setMaxListeners(n) {\n if (typeof n !== 'number' || n < 0 || NumberIsNaN(n)) {\n throw new RangeError('The value of \"n\" is out of range. It must be a non-negative number. Received ' + n + '.');\n }\n this._maxListeners = n;\n return this;\n};\n\nfunction _getMaxListeners(that) {\n if (that._maxListeners === undefined)\n return EventEmitter.defaultMaxListeners;\n return that._maxListeners;\n}\n\nEventEmitter.prototype.getMaxListeners = function getMaxListeners() {\n return _getMaxListeners(this);\n};\n\nEventEmitter.prototype.emit = function emit(type) {\n var args = [];\n for (var i = 1; i < arguments.length; i++) args.push(arguments[i]);\n var doError = (type === 'error');\n\n var events = this._events;\n if (events !== undefined)\n doError = (doError && events.error === undefined);\n else if (!doError)\n return false;\n\n // If there is no 'error' event listener then throw.\n if (doError) {\n var er;\n if (args.length > 0)\n er = args[0];\n if (er instanceof Error) {\n // Note: The comments on the `throw` lines are intentional, they show\n // up in Node's output if this results in an unhandled exception.\n throw er; // Unhandled 'error' event\n }\n // At least give some kind of context to the user\n var err = new Error('Unhandled error.' + (er ? ' (' + er.message + ')' : ''));\n err.context = er;\n throw err; // Unhandled 'error' event\n }\n\n var handler = events[type];\n\n if (handler === undefined)\n return false;\n\n if (typeof handler === 'function') {\n ReflectApply(handler, this, args);\n } else {\n var len = handler.length;\n var listeners = arrayClone(handler, len);\n for (var i = 0; i < len; ++i)\n ReflectApply(listeners[i], this, args);\n }\n\n return true;\n};\n\nfunction _addListener(target, type, listener, prepend) {\n var m;\n var events;\n var existing;\n\n checkListener(listener);\n\n events = target._events;\n if (events === undefined) {\n events = target._events = Object.create(null);\n target._eventsCount = 0;\n } else {\n // To avoid recursion in the case that type === \"newListener\"! Before\n // adding it to the listeners, first emit \"newListener\".\n if (events.newListener !== undefined) {\n target.emit('newListener', type,\n listener.listener ? listener.listener : listener);\n\n // Re-assign `events` because a newListener handler could have caused the\n // this._events to be assigned to a new object\n events = target._events;\n }\n existing = events[type];\n }\n\n if (existing === undefined) {\n // Optimize the case of one listener. Don't need the extra array object.\n existing = events[type] = listener;\n ++target._eventsCount;\n } else {\n if (typeof existing === 'function') {\n // Adding the second element, need to change to array.\n existing = events[type] =\n prepend ? [listener, existing] : [existing, listener];\n // If we've already got an array, just append.\n } else if (prepend) {\n existing.unshift(listener);\n } else {\n existing.push(listener);\n }\n\n // Check for listener leak\n m = _getMaxListeners(target);\n if (m > 0 && existing.length > m && !existing.warned) {\n existing.warned = true;\n // No error code for this since it is a Warning\n // eslint-disable-next-line no-restricted-syntax\n var w = new Error('Possible EventEmitter memory leak detected. ' +\n existing.length + ' ' + String(type) + ' listeners ' +\n 'added. Use emitter.setMaxListeners() to ' +\n 'increase limit');\n w.name = 'MaxListenersExceededWarning';\n w.emitter = target;\n w.type = type;\n w.count = existing.length;\n ProcessEmitWarning(w);\n }\n }\n\n return target;\n}\n\nEventEmitter.prototype.addListener = function addListener(type, listener) {\n return _addListener(this, type, listener, false);\n};\n\nEventEmitter.prototype.on = EventEmitter.prototype.addListener;\n\nEventEmitter.prototype.prependListener =\n function prependListener(type, listener) {\n return _addListener(this, type, listener, true);\n };\n\nfunction onceWrapper() {\n if (!this.fired) {\n this.target.removeListener(this.type, this.wrapFn);\n this.fired = true;\n if (arguments.length === 0)\n return this.listener.call(this.target);\n return this.listener.apply(this.target, arguments);\n }\n}\n\nfunction _onceWrap(target, type, listener) {\n var state = { fired: false, wrapFn: undefined, target: target, type: type, listener: listener };\n var wrapped = onceWrapper.bind(state);\n wrapped.listener = listener;\n state.wrapFn = wrapped;\n return wrapped;\n}\n\nEventEmitter.prototype.once = function once(type, listener) {\n checkListener(listener);\n this.on(type, _onceWrap(this, type, listener));\n return this;\n};\n\nEventEmitter.prototype.prependOnceListener =\n function prependOnceListener(type, listener) {\n checkListener(listener);\n this.prependListener(type, _onceWrap(this, type, listener));\n return this;\n };\n\n// Emits a 'removeListener' event if and only if the listener was removed.\nEventEmitter.prototype.removeListener =\n function removeListener(type, listener) {\n var list, events, position, i, originalListener;\n\n checkListener(listener);\n\n events = this._events;\n if (events === undefined)\n return this;\n\n list = events[type];\n if (list === undefined)\n return this;\n\n if (list === listener || list.listener === listener) {\n if (--this._eventsCount === 0)\n this._events = Object.create(null);\n else {\n delete events[type];\n if (events.removeListener)\n this.emit('removeListener', type, list.listener || listener);\n }\n } else if (typeof list !== 'function') {\n position = -1;\n\n for (i = list.length - 1; i >= 0; i--) {\n if (list[i] === listener || list[i].listener === listener) {\n originalListener = list[i].listener;\n position = i;\n break;\n }\n }\n\n if (position < 0)\n return this;\n\n if (position === 0)\n list.shift();\n else {\n spliceOne(list, position);\n }\n\n if (list.length === 1)\n events[type] = list[0];\n\n if (events.removeListener !== undefined)\n this.emit('removeListener', type, originalListener || listener);\n }\n\n return this;\n };\n\nEventEmitter.prototype.off = EventEmitter.prototype.removeListener;\n\nEventEmitter.prototype.removeAllListeners =\n function removeAllListeners(type) {\n var listeners, events, i;\n\n events = this._events;\n if (events === undefined)\n return this;\n\n // not listening for removeListener, no need to emit\n if (events.removeListener === undefined) {\n if (arguments.length === 0) {\n this._events = Object.create(null);\n this._eventsCount = 0;\n } else if (events[type] !== undefined) {\n if (--this._eventsCount === 0)\n this._events = Object.create(null);\n else\n delete events[type];\n }\n return this;\n }\n\n // emit removeListener for all listeners on all events\n if (arguments.length === 0) {\n var keys = Object.keys(events);\n var key;\n for (i = 0; i < keys.length; ++i) {\n key = keys[i];\n if (key === 'removeListener') continue;\n this.removeAllListeners(key);\n }\n this.removeAllListeners('removeListener');\n this._events = Object.create(null);\n this._eventsCount = 0;\n return this;\n }\n\n listeners = events[type];\n\n if (typeof listeners === 'function') {\n this.removeListener(type, listeners);\n } else if (listeners !== undefined) {\n // LIFO order\n for (i = listeners.length - 1; i >= 0; i--) {\n this.removeListener(type, listeners[i]);\n }\n }\n\n return this;\n };\n\nfunction _listeners(target, type, unwrap) {\n var events = target._events;\n\n if (events === undefined)\n return [];\n\n var evlistener = events[type];\n if (evlistener === undefined)\n return [];\n\n if (typeof evlistener === 'function')\n return unwrap ? [evlistener.listener || evlistener] : [evlistener];\n\n return unwrap ?\n unwrapListeners(evlistener) : arrayClone(evlistener, evlistener.length);\n}\n\nEventEmitter.prototype.listeners = function listeners(type) {\n return _listeners(this, type, true);\n};\n\nEventEmitter.prototype.rawListeners = function rawListeners(type) {\n return _listeners(this, type, false);\n};\n\nEventEmitter.listenerCount = function(emitter, type) {\n if (typeof emitter.listenerCount === 'function') {\n return emitter.listenerCount(type);\n } else {\n return listenerCount.call(emitter, type);\n }\n};\n\nEventEmitter.prototype.listenerCount = listenerCount;\nfunction listenerCount(type) {\n var events = this._events;\n\n if (events !== undefined) {\n var evlistener = events[type];\n\n if (typeof evlistener === 'function') {\n return 1;\n } else if (evlistener !== undefined) {\n return evlistener.length;\n }\n }\n\n return 0;\n}\n\nEventEmitter.prototype.eventNames = function eventNames() {\n return this._eventsCount > 0 ? ReflectOwnKeys(this._events) : [];\n};\n\nfunction arrayClone(arr, n) {\n var copy = new Array(n);\n for (var i = 0; i < n; ++i)\n copy[i] = arr[i];\n return copy;\n}\n\nfunction spliceOne(list, index) {\n for (; index + 1 < list.length; index++)\n list[index] = list[index + 1];\n list.pop();\n}\n\nfunction unwrapListeners(arr) {\n var ret = new Array(arr.length);\n for (var i = 0; i < ret.length; ++i) {\n ret[i] = arr[i].listener || arr[i];\n }\n return ret;\n}\n\nfunction once(emitter, name) {\n return new Promise(function (resolve, reject) {\n function errorListener(err) {\n emitter.removeListener(name, resolver);\n reject(err);\n }\n\n function resolver() {\n if (typeof emitter.removeListener === 'function') {\n emitter.removeListener('error', errorListener);\n }\n resolve([].slice.call(arguments));\n };\n\n eventTargetAgnosticAddListener(emitter, name, resolver, { once: true });\n if (name !== 'error') {\n addErrorHandlerIfEventEmitter(emitter, errorListener, { once: true });\n }\n });\n}\n\nfunction addErrorHandlerIfEventEmitter(emitter, handler, flags) {\n if (typeof emitter.on === 'function') {\n eventTargetAgnosticAddListener(emitter, 'error', handler, flags);\n }\n}\n\nfunction eventTargetAgnosticAddListener(emitter, name, listener, flags) {\n if (typeof emitter.on === 'function') {\n if (flags.once) {\n emitter.once(name, listener);\n } else {\n emitter.on(name, listener);\n }\n } else if (typeof emitter.addEventListener === 'function') {\n // EventTarget does not have `error` event semantics like Node\n // EventEmitters, we do not listen for `error` events here.\n emitter.addEventListener(name, function wrapListener(arg) {\n // IE does not have builtin `{ once: true }` support so we\n // have to do it manually.\n if (flags.once) {\n emitter.removeEventListener(name, wrapListener);\n }\n listener(arg);\n });\n } else {\n throw new TypeError('The \"emitter\" argument must be of type EventEmitter. Received type ' + typeof emitter);\n }\n}\n","export class CancelError extends Error {\n name = 'CancelError';\n\n constructor() {\n super();\n Object.setPrototypeOf(this, CancelError.prototype);\n }\n}\n","import CancelablePromise from '.';\n\nexport interface PromiseControlOptions {\n onStart?: () => void;\n onStop?: () => void;\n}\n\ntype Key = CancelablePromise | string | number | symbol;\n\nexport class PromiseControl {\n private _promises: Map<Key, CancelablePromise> = new Map();\n\n constructor(private options: PromiseControlOptions = {}) {}\n\n get isLoaded(): boolean {\n return this._promises.size > 0;\n }\n\n remove(promise: Key): void {\n if (this._promises.has(promise)) {\n this._promises.delete(promise);\n this._onStop();\n }\n }\n\n get(promise: Key): CancelablePromise | undefined {\n return this._promises.get(promise);\n }\n\n add<T extends CancelablePromise = CancelablePromise>(\n promise: T,\n name?: string | number | symbol,\n ): CancelablePromise<T> {\n const key = name ? name : promise;\n const exist = this._promises.get(key);\n if (this.options.onStart && !this.isLoaded) {\n this.options.onStart();\n }\n if (exist) {\n return exist;\n }\n this._promises.set(key, promise);\n promise.finally(() => {\n this.remove(key);\n });\n return promise;\n }\n\n abort(): void {\n if (this.isLoaded) {\n this._promises.forEach((x) => {\n if (x.cancel) {\n x.cancel();\n }\n });\n this._promises.clear();\n this._onStop();\n }\n }\n\n waitFunc<T>(func: () => any, name = ''): CancelablePromise<T> {\n name = name || func.name;\n const exist = this.get(name);\n if (exist) {\n return exist;\n }\n return this.add(func(), name);\n }\n\n WaitForMe(name: string | symbol = ''): MethodDecorator {\n const get = this.get.bind(this);\n const add = this.add.bind(this);\n return function (\n target: unknown,\n key: string | symbol,\n descriptor: PropertyDescriptor,\n ): PropertyDescriptor {\n const originalMethod = descriptor.value;\n name = name || key;\n descriptor.value = function (...args: any[]) {\n const exist = get(name);\n if (exist) {\n return exist;\n }\n const result = add(originalMethod.apply(this, args), name);\n return result;\n };\n\n return descriptor;\n };\n }\n\n /** @deprecated use {@link PromiseControl.WaitForMe } instead */\n GetOrCreateDecorator(name: string | symbol = ''): MethodDecorator {\n return this.WaitForMe(name);\n }\n\n private _onStop(): void {\n if (this.options.onStop && !this.isLoaded) {\n this.options.onStop();\n }\n }\n}\n","export class TimeoutError extends Error {\n name = 'TimeoutError';\n\n constructor() {\n super();\n Object.setPrototypeOf(this, TimeoutError.prototype);\n }\n}\n","import { CancelError } from './CancelError';\nimport { PromiseControl, PromiseControlOptions } from './PromiseControl';\nimport { TimeoutError } from './TimeoutError';\n\ntype Reject = (reason?: any) => void;\ntype Resolve = (value?: any) => void;\nexport type OnCancelFunction = (cancelHandler: () => void) => void;\n\nconst handleCallback = <T = never>(\n resolve: Resolve,\n reject: Reject,\n callback: Resolve,\n r: T,\n) => {\n try {\n resolve(callback(r));\n } catch (e) {\n reject(e);\n }\n};\n\nlet ID = 0;\n\n/**\n * Promise that can be canceled\n *\n * @example\n * Catch `CancelError`\n * ```javascript\n * import CancelablePromise from \"@nextgis/cancelable-promise\";\n *\n * const promise = new CancelablePromise((resolve, reject) => {\n * setTimeout(() => resolve(), 100);\n * }).catch((er) => {\n * if (er.name === \"CancelError\") {\n * // handle cancel error\n * }\n * throw er;\n * });\n *\n * promise.cancel();\n * ```\n * @example\n * Handle `onCancel` callback\n * ```javascript\n * import CancelablePromise from \"@nextgis/cancelable-promise\";\n *\n * const promise = new CancelablePromise((resolve, reject, onCancel) => {\n * const xhr = new XMLHttpRequest();\n * xhr.open(\"GET\", url, true);\n * xhr.onload = () => {\n * resolve(xhr.responseText);\n * };\n * xhr.onerror = (er) => {\n * reject(er);\n * };\n *\n * onCancel(() => {\n * xhr.abort();\n * });\n *\n * xhr.send();\n * });\n *\n * promise.cancel();\n * ```\n */\nexport class CancelablePromise<T = any> implements Promise<T> {\n static CancelError = CancelError;\n static TimeoutError = TimeoutError;\n static PromiseControl = PromiseControl;\n\n // @ts-ignore\n readonly [Symbol.toStringTag]: string;\n readonly id = ID++;\n private _isCanceled = false;\n private _isPending = true;\n private _promise?: Promise<T>;\n private _cancelPromise?: Promise<T>;\n private _cancelHandlers: (() => void)[] = [];\n private _setCanceledCallback?: (er?: any) => void;\n private _parentPromise?: CancelablePromise;\n private _children: CancelablePromise[] = [];\n\n constructor(\n executor: (\n resolve: (value?: T | PromiseLike<T>) => void,\n reject: (reason?: any) => void,\n onCancel: OnCancelFunction,\n ) => void,\n timeout?: number,\n ) {\n this._cancelPromise = new Promise<any>((resolve_, reject_) => {\n this._setCanceledCallback = (er) => resolve_(er || new CancelError());\n });\n const promises = [\n this._cancelPromise,\n new Promise<T>((resolve, reject) => {\n const onResolve = (value?: T | PromiseLike<T>) => {\n if (value instanceof CancelablePromise) {\n this.attach(value);\n } else {\n this._isPending = false;\n }\n // TODO: fix types, `undefined` not allowed since 19.12.2020\n resolve(value as T | PromiseLike<T>);\n };\n\n const onReject = (error: any) => {\n this._isPending = false;\n reject(error);\n };\n\n const onCancel: OnCancelFunction = (handler) => {\n if (!this._isPending) {\n throw new Error(\n 'The `onCancel` handler was attached after the promise settled.',\n );\n }\n\n this._cancelHandlers.push(handler);\n };\n\n return executor(onResolve, onReject, onCancel);\n }),\n ];\n if (timeout) {\n promises.push(\n new Promise((resolve, reject) => {\n setTimeout(() => {\n if (this._isPending) {\n try {\n this.cancel();\n } finally {\n reject(new TimeoutError());\n }\n }\n }, timeout);\n }),\n );\n }\n this._promise = Promise.race(promises);\n }\n\n static createControl(opt?: PromiseControlOptions): PromiseControl {\n return new PromiseControl(opt);\n }\n\n static resolve<T>(value: T | PromiseLike<T>): CancelablePromise<T> {\n return new CancelablePromise((resolve) => resolve(value));\n }\n\n static reject<T>(value: T | PromiseLike<T>): CancelablePromise<T> {\n return new CancelablePromise((resolve, reject) => reject(value));\n }\n\n static all<T>(values: (T | PromiseLike<T>)[]): CancelablePromise<T[]> {\n return new CancelablePromise((resolve, reject) => {\n Promise.all(values).then(resolve).catch(reject);\n }).catch((er) => {\n if (er instanceof this.CancelError) {\n for (const v of values) {\n const v_ = v as CancelablePromise\n if ('cancel' in v_) {\n v_.cancel();\n }\n }\n }\n throw er;\n });\n }\n\n attach(p: CancelablePromise): void {\n if (this._isCanceled) {\n p.cancel();\n } else {\n this._children.push(p);\n }\n }\n\n then<TResult1 = T, TResult2 = never>(\n onfulfilled?:\n | ((value: T) => TResult1 | PromiseLike<TResult1>)\n | undefined\n | null,\n onrejected?:\n | ((reason: any) => TResult2 | PromiseLike<TResult2>)\n | undefined\n | null,\n ): CancelablePromise<TResult1 | TResult2> {\n const p = new CancelablePromise((resolve, reject) => {\n if (this._promise) {\n const reject_ = (r: any) => {\n if (onrejected) {\n handleCallback(resolve, reject, onrejected, r);\n } else {\n reject(r);\n }\n };\n this._promise.then((r) => {\n if (this._isCanceled) {\n reject_(r);\n } else {\n if (onfulfilled) {\n handleCallback(resolve, reject, onfulfilled, r);\n } else {\n resolve(r);\n }\n }\n }, reject_);\n }\n });\n p._parentPromise = this;\n this._children.push(p);\n return p as CancelablePromise<TResult1 | TResult2>;\n }\n\n catch<TResult = never>(\n onrejected?:\n | ((reason: Error) => TResult | PromiseLike<TResult>)\n | undefined\n | null,\n ): CancelablePromise<T | TResult> {\n if (this._isCanceled && onrejected) {\n onrejected(new CancelError());\n }\n return this.then(undefined, onrejected);\n }\n\n finally(onfinally?: (() => void) | undefined | null): Promise<T> {\n if (this._promise) {\n return this._promise.finally(onfinally);\n }\n if (this._isCanceled) {\n return Promise.reject(new CancelError());\n }\n return Promise.reject<T>(onfinally);\n }\n\n cancel(): this {\n // No reason to run cancel action if promise is already complete\n if (this._isCanceled || !this._isPending) {\n return this;\n }\n this._isCanceled = true;\n const parent = this._getTopParent();\n if (parent) {\n parent.cancel();\n }\n\n if (this._children) {\n this._children.forEach((x) => x.cancel());\n }\n\n if (this._isPending) {\n if (this._cancelHandlers.length) {\n try {\n for (const handler of this._cancelHandlers) {\n handler();\n }\n } catch (error) {\n // this._setCanceledCallback(error);\n }\n }\n if (this._setCanceledCallback) {\n this._setCanceledCallback();\n }\n }\n this._destroy();\n\n return this;\n }\n\n private _getTopParent() {\n let parent = this._parentPromise;\n let hasParent = !!parent;\n while (hasParent) {\n if (parent && parent._parentPromise) {\n parent = parent._parentPromise;\n hasParent = !!parent;\n } else {\n hasParent = false;\n }\n }\n return parent;\n }\n\n private _destroy() {\n this._setCanceledCallback = undefined;\n this._cancelPromise = undefined;\n this._promise = undefined;\n }\n}\n\nObject.setPrototypeOf(CancelablePromise.prototype, Promise.prototype);\n","/**\n * A promise you can stop\n *\n * @packageDocumentation\n * @module cancelable-promise\n */\nimport { CancelablePromise } from './CancelablePromise';\nimport { CancelError } from './CancelError';\n\nexport { CancelError };\n\nexport default CancelablePromise;\n","export interface ApplyMixinOptions {\n replace?: boolean;\n}\n\ntype Ctor = any;\n\nexport function applyMixins(\n derivedCtor: Ctor,\n baseCtors: Ctor[],\n opt: ApplyMixinOptions = {},\n): void {\n const derivedProperties = allProperties(derivedCtor.prototype);\n const replace = opt.replace !== undefined ? opt.replace : true;\n baseCtors.forEach((baseCtor) => {\n Object.getOwnPropertyNames(baseCtor.prototype).forEach((name) => {\n const isSomeProp = derivedProperties.indexOf(name) !== -1;\n if ((!replace && !isSomeProp) || replace) {\n const descriptor = Object.getOwnPropertyDescriptor(\n baseCtor.prototype,\n name,\n );\n if (descriptor) {\n Object.defineProperty(derivedCtor.prototype, name, descriptor);\n }\n }\n });\n });\n}\n\nexport function allProperties(obj: Record<string, unknown>): string[] {\n return _allProperties(obj);\n}\n\nfunction _allProperties(\n obj: Record<string, unknown>,\n _props: string[] = [],\n): string[] {\n for (; obj !== null; obj = Object.getPrototypeOf(obj)) {\n const op = Object.getOwnPropertyNames(obj);\n for (let i = 0; i < op.length; i++) {\n if (_props.indexOf(op[i]) == -1) {\n _props.push(op[i]);\n }\n }\n }\n return _props;\n}\n\nexport function mixinProperties(\n derivedCtor: Ctor,\n baseCtor: Ctor,\n properties: string[],\n): void {\n properties.forEach((name) => {\n const descriptor = Object.getOwnPropertyDescriptor(\n baseCtor.prototype,\n name,\n );\n if (descriptor) {\n Object.defineProperty(derivedCtor.prototype, name, descriptor);\n }\n });\n}\n","/**\n * from https://github.com/CesiumGS/cesium/blob/master/Source/Core/defined.js\n *\n * @param val - The object.\n * @returns Returns true if the object is defined, returns false otherwise.\n *\n * @example\n * ```javascript\n * if (defined(positions)) {\n * doSomething();\n * } else {\n * doSomethingElse();\n * }\n * ```\n */\nexport function defined<T>(val: T): val is Exclude<T, null | undefined> {\n return val !== undefined && val !== null;\n}\n\n/**\n * from https://github.com/CesiumGS/cesium/blob/master/Source/Core/defined.js\n *\n * @param val - The object.\n * @returns Returns true if the object is defined and not empty string, returns false otherwise.\n *\n * @example\n * ```javascript\n * full('foo') // true\n * full('') // false\n * full(undefined) // false\n * full(0) // true\n * ```\n */\nexport function full<T>(val: T): val is Exclude<T, null | undefined> {\n return typeof val === 'string' ? !!val : defined(val);\n}\n","export function deepmerge<T>(\n x: Partial<T>,\n y: Partial<T>,\n mergeArray?: boolean,\n): T;\nexport function deepmerge<T1, T2>(\n target: Partial<T1>,\n src: Partial<T2>,\n mergeArray = false,\n): T1 & T2 {\n let target_ = target as any;\n const src_ = src as any;\n const array = Array.isArray(src_);\n let dst: any = (array && []) || {};\n\n if (array && Array.isArray(src_)) {\n if (mergeArray) {\n target_ = target_ || [];\n dst = dst.concat(target_);\n src_.forEach((e: any, i: number) => {\n if (typeof dst[i] === 'undefined') {\n dst[i] = e;\n } else if (typeof e === 'object') {\n dst[i] = deepmerge(target_[i], e, mergeArray);\n } else {\n if (target_.indexOf(e) === -1) {\n dst.push(e);\n }\n }\n });\n } else {\n // Replace array. Do not merge by default\n dst = src_;\n }\n } else {\n if (target_ && typeof target_ === 'object') {\n Object.keys(target_).forEach(function (key) {\n dst[key] = target_[key];\n });\n }\n Object.keys(src_).forEach(function (key) {\n if (typeof src_[key] !== 'object' || !src_[key]) {\n dst[key] = src_[key];\n } else {\n if (typeof target_[key] === 'object' && typeof src_[key] === 'object') {\n dst[key] = deepmerge(target_[key], src_[key], mergeArray);\n } else {\n dst[key] = src_[key];\n }\n }\n });\n }\n return dst;\n}\n","export function debugLog(message?: string): boolean {\n // @ts-ignore\n if (__DEV__) {\n console.trace('DEBUG: ' + message);\n return true;\n }\n return false;\n}\n","import { debugLog } from '../debug/debugLog';\n\nimport type { LatLng } from '../geom/interfaces';\nimport type { LngLatArray } from '../geom/interfaces';\n\ninterface DeprecatedMapClickEvent {\n lngLat: LngLatArray;\n latLng?: LatLng;\n}\n\n/**\n * @internal\n */\nexport function deprecatedMapClick<\n T extends DeprecatedMapClickEvent = DeprecatedMapClickEvent,\n>(ev: T): T {\n if (!ev.lngLat && ev.latLng) {\n debugLog('deprecated use of latLng in MapClickEvent, use lngLat instead');\n const lat = ev.latLng.lat;\n const lng = ev.latLng.lng;\n ev.lngLat = [lng, lat];\n }\n return ev;\n}\n","/** @internal */\nexport function deprecatedWarn(message: string): void {\n console.warn(`DEPRECATED WARN: ${message}`);\n}\n","// based on https://github.com/bvaughn/debounce-decorator\n\nexport function debounce<T extends (...args: any[]) => void>(\n cb: T,\n wait = 10,\n): T & { clear: () => void } {\n let timeoutId: any;\n\n function wrapper(this: any, ...args: any[]) {\n wrapper.clear();\n\n timeoutId = setTimeout(() => {\n timeoutId = null;\n cb.apply(this, args);\n }, wait);\n }\n\n wrapper.clear = function () {\n if (timeoutId) {\n clearTimeout(timeoutId);\n timeoutId = null;\n }\n };\n\n return wrapper as T & { clear: () => void };\n}\n\nexport function DebounceDecorator(wait = 10) {\n return function (\n target: unknown,\n key: string,\n descriptor: PropertyDescriptor,\n ): PropertyDescriptor {\n return {\n configurable: true,\n enumerable: descriptor.enumerable,\n get: function getter() {\n // Attach this function to the instance (not the class)\n Object.defineProperty(this, key, {\n configurable: true,\n enumerable: descriptor.enumerable,\n value: debounce(descriptor.value, wait),\n });\n // @ts-ignore\n return this[key];\n },\n };\n };\n}\n","/**\n * Radius of the earth in kilometers\n */\nexport const EARTHS_RADIUS = 6371;\n","import type { Feature, Polygon } from 'geojson';\nimport type { LngLatBoundsArray } from './interfaces';\n\nexport function getBoundsPolygon(b: LngLatBoundsArray): Polygon {\n const polygon: Polygon = {\n type: 'Polygon',\n coordinates: [getBoundsCoordinates(b)],\n };\n return polygon;\n}\n\nexport function getBoundsCoordinates(b: LngLatBoundsArray): number[][] {\n const westNorth = [b[0], b[1]];\n const eastNorth = [b[2], b[1]];\n const eastSouth = [b[2], b[3]];\n const westSouth = [b[0], b[3]];\n\n return [westNorth, eastNorth, eastSouth, westSouth, westNorth];\n}\n\nexport function getBoundsFeature(b: LngLatBoundsArray): Feature<Polygon> {\n const feature: Feature<Polygon> = {\n type: 'Feature',\n properties: {},\n geometry: getBoundsPolygon(b),\n };\n return feature;\n}\n","import { EARTHS_RADIUS } from './constants';\nimport type { Feature, Polygon, Position } from 'geojson';\n\nconst d2r = Math.PI / 180; // degrees to radians\nconst r2d = 180 / Math.PI; // radians to degrees\n\nexport function getCirclePolygonCoordinates(\n lng: number,\n lat: number,\n /** In kilometers */\n radius = 10,\n points = 6,\n): Position[] {\n // find the radius in lat/lon\n const rlat = (radius / EARTHS_RADIUS) * r2d;\n const rlng = rlat / Math.cos(lat * d2r);\n\n const extp = [];\n for (let i = 0; i < points + 1; i++) {\n // one extra here makes sure we connect the\n\n const theta = Math.PI * (i / (points / 2));\n const ex = lng + rlng * Math.cos(theta); // center a + radius x * cos(theta)\n const ey = lat + rlat * Math.sin(theta); // center b + radius y * sin(theta)\n extp.push([ex, ey]);\n }\n\n return extp;\n}\n\nexport function getCircleFeature(\n lng: number,\n lat: number,\n radius = 10,\n points = 6,\n): Feature<Polygon> {\n const polygon = getCirclePolygonCoordinates(lng, lat, radius, points);\n const feature: Feature<Polygon> = {\n type: 'Feature',\n properties: {},\n geometry: {\n type: 'Polygon',\n coordinates: [polygon],\n },\n };\n return feature;\n}\n","import type { LngLatArray } from './interfaces';\n\nexport function degrees2meters(lng: number, lat: number): [number, number] {\n lat = lat > 85.06 ? 85.06 : lat < -85.06 ? -85.06 : lat;\n\n const x = (lng * 20037508.34) / 180;\n let y = Math.log(Math.tan(((90 + lat) * Math.PI) / 360)) / (Math.PI / 180);\n y = (y * 20037508.34) / 180;\n return [x, y];\n}\n\nexport function meters2degrees(x: number, y: number): LngLatArray {\n const lon = (x * 180) / 20037508.34;\n const lat =\n (Math.atan(Math.exp((y * Math.PI) / 20037508.34)) * 360) / Math.PI - 90;\n return [lon, lat];\n}\n\nexport function degrees2Radian(deg: number): number {\n return (deg * Math.PI) / 180;\n}\n\n// export function degrees2meters2(lon: number, lat: number): [number, number] {\n// const radius = 6378137.0;\n// const x = (radius * lon * Math.PI) / 180.0;\n// const y =\n// radius * Math.log(Math.tan(Math.PI / 4.0 + (lat * Math.PI) / 360.0));\n// return [x, y];\n// }\n\n// export function meters2degress2(x: number, y: number): LngLatArray {\n// const radius = 6378137.0;\n// const lon = (180 / Math.PI) * (x / radius);\n// const lat = (360 / Math.PI) * (Math.atan(Math.exp(y / radius)) - Math.PI / 4);\n// return [lon, lat];\n// }\n\n// const lon = -77.035974;\n// const lat = 38.898717;\n\n// console.log(degrees2meters(lon, lat), degrees2meters2(lon, lat));\n\n// const x = -8575605.398443861;\n// const y = 4707174.018280405;\n\n// console.log(meters2degress(x, y), meters2degress2(x, y));\n","import { LngLatBoundsArray } from '@nextgis/utils';\n\nexport function isLngLatBoundsArray(\n array: unknown,\n): array is LngLatBoundsArray {\n return (\n Array.isArray(array) &&\n array.length === 4 &&\n array.every((x) => typeof x === 'number')\n );\n}\n","import { LngLatArray } from '@nextgis/utils';\n\nexport function getIdentifyRadius(\n center: LngLatArray,\n zoom: number,\n pixelRadius: number,\n): number {\n pixelRadius = pixelRadius ?? 10;\n const metresPerPixel =\n (40075016.686 * Math.abs(Math.cos((center[1] * 180) / Math.PI))) /\n Math.pow(2, zoom + 8);\n const radius = pixelRadius * metresPerPixel * 0.0005;\n return radius;\n}\n","export function objectAssign<T, U>(target: T, source: U): T & U;\n\n/**\n * Copy the values of all of the enumerable own properties from one or more source objects to a\n * target object. Returns the target object.\n * @param target - The target object to copy to.\n * @param source1 - The first source object from which to copy properties.\n * @param source2 - The second source object from which to copy properties.\n */\nexport function objectAssign<T, U, V>(\n target: T,\n source1: U,\n source2: V,\n): T & U & V;\n\n/**\n * Copy the values of all of the enumerable own properties from one or more source objects to a\n * target object. Returns the target object.\n * @param target - The target object to copy to.\n * @param source1 - The first source object from which to copy properties.\n * @param source2 - The second source object from which to copy properties.\n * @param source3 - The third source object from which to copy properties.\n */\nexport function objectAssign<T, U, V, W>(\n target: T,\n source1: U,\n source2: V,\n source3: W,\n): T & U & V & W;\n\n/**\n * Copy the values of all of the enumerable own properties from one or more source objects to a\n * target object. Returns the target object.\n * @param target - The target object to copy to.\n * @param sources - One or more source objects from which to copy properties\n */\nexport function objectAssign(\n target: Record<string, unknown>,\n ...sources: any[]\n): any {\n for (const source of sources) {\n for (const prop of Object.getOwnPropertyNames(source)) {\n (target as any)[prop] = source[prop];\n }\n }\n}\n","function isEqual(a: unknown, b: unknown, o: unknown, p: unknown): boolean {\n if (a instanceof Array) {\n if (!(b instanceof Array)) return false;\n //if (compareObjects(oVal, pVal === false) return false\n //would work, too, and perhaps is a better fit, still, this is easy, too\n return b.sort().join('') === a.sort().join('');\n } else if (a instanceof Date) {\n if (!(b instanceof Date)) return false;\n return '' + a === '' + b;\n } else if (a instanceof Function) {\n if (!(b instanceof Function)) return false;\n //ignore functions, or check them regardless?\n } else if (a instanceof Object) {\n if (!(b instanceof Object)) return false;\n if (a === o) {\n return b === p;\n } else {\n return objectDeepEqual(a, b);\n }\n }\n return a === b;\n}\n\n// based on https://stackoverflow.com/a/13143059\nexport function objectDeepEqual<\n T extends Record<string, any> = Record<string, any>,\n>(o: T, p: T): boolean {\n const keysO = Object.keys(o).sort();\n const keysP = Object.keys(p).sort();\n if (keysO.length !== keysP.length) return false;\n if (keysO.join('') !== keysP.join('')) return false;\n for (let i = 0; i < keysO.length; i++) {\n const oVal = o[keysO[i]];\n const pVal = p[keysP[i]];\n if (!isEqual(oVal, pVal, o, p)) {\n return false;\n }\n }\n return true;\n}\n","export function objectRemoveEmpty<T extends Record<any, any>>(obj: T): T {\n const newObj: Record<any, any> = {} as T;\n Object.keys(obj).forEach((key) => {\n if (!(obj[key] instanceof Array) && obj[key] === Object(obj[key])) {\n newObj[key] = objectRemoveEmpty(obj[key]);\n } else if (obj[key] !== undefined) {\n newObj[key] = obj[key];\n }\n });\n return newObj;\n}\n","export function round(val: number, toFixed?: number): number {\n const n = toFixed ? Number('1e+' + toFixed) : 1;\n return Math.round((val + Number.EPSILON) * n) / n;\n}\n","export * from './DeepPartial';\nexport * from './Type';\nexport * from './Json';\nexport * from './isObjKey';\n\nexport function isObject(val: unknown): val is Record<string | number, any> {\n return Object.prototype.toString.call(val) === '[object Object]';\n}\n\nexport function isArray(val: unknown): val is [] {\n return Object.prototype.toString.call(val) === '[object Array]';\n}\n","export function fixUrlStr(url: string): string {\n // remove double slash\n return url.replace(/([^:]\\/)\\/+/g, '$1');\n}\n","import type {\n VectorAdapterLayerPaint,\n GetPaintCallback,\n PropertiesPaint,\n GeometryPaint,\n IconPaint,\n Paint,\n} from './interfaces';\n\nexport function isPropertiesPaint(paint: Paint): paint is PropertiesPaint {\n if (Array.isArray(paint)) {\n return true;\n }\n return false;\n}\n\nexport function isPaint(paint: Paint): paint is VectorAdapterLayerPaint {\n if (Object.prototype.toString.call(paint) === '[object Object]') {\n return true;\n }\n return false;\n}\n\nexport function isBasePaint(paint: Paint): paint is GeometryPaint {\n if (isPaint(paint)) {\n if (paint.type === 'get-paint' || paint.type === 'icon') {\n return false;\n }\n return true;\n }\n return false;\n}\n\nexport function isPaintCallback(paint: Paint): paint is GetPaintCallback {\n if (typeof paint === 'function') {\n return true;\n }\n return false;\n}\n\nexport function isIcon(paint: IconPaint): paint is IconPaint {\n return paint.type === 'icon' || 'html' in paint;\n}\n","export const tryConvert = (\n converter: (arg: any, data: any) => any,\n arg: any,\n data: any,\n): any => {\n try {\n const result = converter(arg, data);\n if (result !== undefined) {\n return result;\n }\n } catch {\n // ignore errors\n }\n return undefined;\n};\n","import { tryConvert } from './tryConvert';\n\nimport type { ExpressionFunc, SimpleType } from '../interfaces';\n\nexport default function fallback<\n T extends SimpleType[] = SimpleType[],\n R = T[0],\n>(cb: ExpressionFunc<T, R | undefined>): ExpressionFunc<T[], R> {\n return (args: T[], data) => {\n for (const arg of args) {\n const result = tryConvert(cb, arg, data);\n if (result !== undefined) {\n return result;\n }\n }\n throw new Error(`Received a mismatched type`);\n };\n}\n","import type {\n ExpressionCbFunc,\n ExpressionFunc,\n MapToCallback,\n SimpleType,\n} from '../interfaces';\n\nexport default function evaluateArgs<\n T extends SimpleType[] = SimpleType[],\n R = T[0],\n>(cb: ExpressionFunc<T, R>): ExpressionCbFunc<T, R> {\n return (args: MapToCallback<T>, data) => {\n const unwrap = args.map((a) => a()) as T;\n return cb(unwrap, data);\n };\n}\n","import f from '../utils/fallback';\nimport e from '../utils/evaluateArgs';\n\nimport type { ExpressionCbFunc, TypeExpressionName } from '../interfaces';\n\ntype ArrayType = 'string' | 'number' | 'boolean';\n\ntype ArrayArgs =\n | [value: any[]]\n | [type: ArrayType, value: any[]]\n | [type: ArrayType, n: number, value: any[]];\n\nconst array = (args: ArrayArgs): any[] => {\n const [firstArg, secondArg, thirdArg] = args;\n let requiredType: ArrayType | undefined = undefined;\n let requiredLength: number | undefined = undefined;\n let value: any[] | undefined;\n\n if (\n typeof firstArg === 'string' &&\n ['string', 'number', 'boolean'].includes(firstArg)\n ) {\n requiredType = firstArg;\n\n if (typeof secondArg === 'number') {\n requiredLength = secondArg;\n value = thirdArg;\n } else {\n value = secondArg;\n }\n } else if (Array.isArray(firstArg)) {\n value = firstArg;\n }\n if (!Array.isArray(value)) {\n throw new Error('Expected an array');\n }\n if (requiredType && !value.every((item) => typeof item === requiredType)) {\n throw new Error(\n `Expected all items in array to be of type ${requiredType}`,\n );\n }\n\n if (requiredLength && value.length !== requiredLength) {\n throw new Error(`Expected array of length ${requiredLength}`);\n }\n return value;\n};\n\nfunction typeOfValue(value: any): string {\n if (value === null) return 'null';\n switch (typeof value) {\n case 'string':\n return 'string';\n case 'number':\n return 'number';\n case 'boolean':\n return 'boolean';\n case 'object':\n if (Array.isArray(value)) {\n let arrayType = 'value';\n if (value.every((item) => typeof item === 'number')) {\n arrayType = 'number';\n } else if (value.every((item) => typeof item === 'string')) {\n arrayType = 'string';\n } else if (value.every((item) => typeof item === 'boolean')) {\n arrayType = 'boolean';\n }\n return `array<${arrayType}, ${value.length}>`;\n } else {\n return 'object';\n }\n default:\n return 'undefined';\n }\n}\n\nexport const typeExpressions: Record<TypeExpressionName, ExpressionCbFunc> = {\n array: e(array),\n boolean: e(\n f<boolean[]>((arg) => (typeof arg === 'boolean' ? arg : undefined)),\n ),\n literal: e(([arg]) => arg),\n number: e(f<number[]>((arg) => (typeof arg === 'number' ? arg : undefined))),\n object: e(\n f<Record<string, any>[]>((arg) =>\n arg !== null && typeof arg === 'object' && !Array.isArray(arg)\n ? arg\n : undefined,\n ),\n ),\n\n string: e(f((arg) => (typeof arg === 'string' ? arg : undefined))),\n 'to-boolean': e(f(Boolean)),\n 'to-number': e(f(Number)),\n 'to-string': e(f(String)),\n typeof: e(([arg]) => typeOfValue(arg)),\n};\n","import e from '../utils/evaluateArgs';\n\nimport type { ExpressionCbFunc, MathExpressionName } from '../interfaces';\n\nexport const mathExpressions: Record<\n MathExpressionName,\n ExpressionCbFunc<number[], number>\n> = {\n '+': e((args) => args.reduce((a, b) => a + b, 0)),\n '-': e((args) => args.reduce((a, b) => a - b)),\n '*': e((args) => args.reduce((a, b) => a * b, 1)),\n '/': e((args) => args.reduce((a, b) => a / b)),\n '%': e((args) => args[0] % args[1]),\n '^': e((args) => Math.pow(args[0], args[1])),\n abs: e((args) => Math.abs(args[0])),\n acos: e((args) => Math.acos(args[0])),\n asin: e((args) => Math.asin(args[0])),\n atan: e((args) => Math.atan(args[0])),\n ceil: e((args) => Math.ceil(args[0])),\n cos: e((args) => Math.cos(args[0])),\n e: () => Math.E,\n floor: e((args) => Math.floor(args[0])),\n ln: e((args) => Math.log(args[0])),\n ln2: () => Math.LN2,\n log10: e((args) => Math.log10(args[0])),\n log2: e((args) => Math.log2(args[0])),\n max: e((args) => Math.max(...args)),\n min: e((args) => Math.min(...args)),\n pi: () => Math.PI,\n round: e((args) => Math.round(args[0])),\n sin: e((args) => Math.sin(args[0])),\n sqrt: e((args) => Math.sqrt(args[0])),\n tan: e((args) => Math.tan(args[0])),\n};\n","import e from '../utils/evaluateArgs';\n\nimport type {\n Data,\n SimpleType,\n LookupExpressionName,\n ExpressionCbFunc,\n} from '../interfaces';\n\ntype GetArg = [key: string] | [key: string, obj: Record<string, any>];\n\nfunction get([key, objExp]: GetArg, data: Data): SimpleType | null {\n const target = objExp || data;\n if (target && typeof target === 'object' && key in target) {\n return target[key];\n }\n return null;\n}\n\nfunction has([key, objExp]: GetArg, data: Data): boolean {\n const target = objExp || data;\n return !!(target && typeof target === 'object' && key in target);\n}\n\nfunction at([index, array]: [index: number, array: any[]]): SimpleType {\n return array[index];\n}\n\ntype InArgs = [keyword: string | boolean | number, input: string | any[]];\nfunction inFunc([keyword, input]: InArgs): boolean {\n if (typeof input === 'string') {\n return input.includes(String(keyword));\n } else if (Array.isArray(input)) {\n return input.includes(keyword);\n }\n throw new Error(\n `Invalid input type for 'in'. Expected string or array, got ${typeof input}.`,\n );\n}\n\nconst length = ([item]: [string | any[]]) => {\n if (typeof item === 'string' || Array.isArray(item)) {\n return item.length;\n }\n return undefined;\n};\n\ntype IndexOfArgs =\n | [keyword: string | boolean | number, input: string | any[]]\n | [keyword: string | boolean | number, input: string | any[], index: number];\nfunction indexOf([keyword, input, startIndex]: IndexOfArgs): number {\n if (typeof input === 'string') {\n return input.indexOf(String(keyword), startIndex);\n } else if (Array.isArray(input)) {\n return input.indexOf(keyword, startIndex);\n }\n\n throw new Error(\n `Invalid input type for 'index-of'. Expected string or array, got ${typeof input}.`,\n );\n}\n\ntype SliceArgs =\n | [input: string | any[], startIndex: number]\n | [input: string | any[], startIndex: number, endIndex: number];\n\nfunction slice(args: SliceArgs): string | any[] {\n const [input, startIndex, endIndex] = args;\n\n if (typeof input === 'string') {\n return input.slice(startIndex, endIndex);\n } else if (Array.isArray(input)) {\n return input.slice(startIndex, endIndex);\n }\n\n throw new Error(\n `Invalid input type for 'slice'. Expected string or array, got ${typeof input}.`,\n );\n}\n\nexport const lookupExpressions: Record<LookupExpressionName, ExpressionCbFunc> =\n {\n get: e(get),\n length: e(length),\n at: e(at),\n has: e(has),\n in: e(inFunc),\n 'index-of': e(indexOf),\n slice: e(slice),\n };\n","import e from '../utils/evaluateArgs';\nimport type { ExpressionCbFunc, StringExpressionName } from '../interfaces';\n\nexport const stringExpressions: Record<\n StringExpressionName,\n ExpressionCbFunc<string[], string>\n> = {\n concat: e((args) => args.reduce((a, b) => String(a) + String(b), '')),\n downcase: e((args) => String(args[0]).toLowerCase()),\n upcase: e((args) => String(args[0]).toUpperCase()),\n};\n","import e from '../utils/evaluateArgs';\nimport type { DecisionExpressionName, ExpressionCbFunc } from '../interfaces';\n\nfunction not([expr]: [boolean]): boolean {\n return !expr;\n}\n\nfunction notEqual([a, b]: [value1: any, value2: any]): boolean {\n return a !== b;\n}\n\nfunction lessThan([left, right]: [value1: any, value2: any]): boolean {\n return left < right;\n}\n\nfunction lessThanOrEqual([left, right]: [value1: any, value2: any]): boolean {\n return left <= right;\n}\n\nfunction equal([left, right]: [value1: any, value2: any]): boolean {\n return left === right;\n}\n\nfunction greaterThan([left, right]: [value1: any, value2: any]): boolean {\n return left > right;\n}\n\nfunction greaterThanOrEqual([left, right]: [\n value1: any,\n value2: any,\n]): boolean {\n return left >= right;\n}\n\nconst coalesce: ExpressionCbFunc<any[], any> = (args) => {\n for (let i = 0; i < args.length; i++) {\n const arg = args[i]();\n if (arg !== null && arg !== undefined) {\n return arg;\n }\n }\n return null;\n};\n\nconst all: ExpressionCbFunc<any[], boolean> = (args) => {\n for (let i = 0; i < args.length; i++) {\n const arg = args[i]();\n if (!arg) {\n return false;\n }\n }\n return true;\n};\n\nconst any: ExpressionCbFunc<any[], boolean> = (args) => {\n for (let i = 0; i < args.length; i++) {\n const arg = args[i]();\n if (arg) {\n return true;\n }\n }\n return false;\n};\n\nconst match: ExpressionCbFunc<any[]> = (args) => {\n const [lookupFn, ...cases] = args;\n const lookup = lookupFn();\n // remove last odd item from cases array\n const defValue = cases.splice(-1, cases.length % 2)[0];\n for (let fry = 0; fry < cases.length - 1; fry += 2) {\n const key = cases[fry]();\n if (key === lookup) {\n return cases[fry + 1]();\n }\n }\n return defValue();\n};\n\ntype OutputType = any;\nconst caseFunc: ExpressionCbFunc<\n [boolean, OutputType, ...Array<boolean | OutputType>],\n OutputType\n> = (args) => {\n if (args.length < 2) {\n throw new Error(\n 'The \"case\" function requires at least a condition and a corresponding output.',\n );\n }\n\n if (args.length % 2 === 0) {\n throw new Error(\n 'Missing a fallback value or unmatched condition-output pair.',\n );\n }\n for (let i = 0; i < args.length - 1; i += 2) {\n const condition = args[i]() as boolean;\n const value = args[i + 1]() as OutputType;\n if (condition) {\n return value;\n }\n }\n const fallback = args[args.length - 1];\n return fallback();\n};\n\nexport const decisionExpressions: Record<\n DecisionExpressionName,\n ExpressionCbFunc\n> = {\n '!': e(not),\n '!=': e(notEqual),\n '<': e(lessThan),\n '<=': e(lessThanOrEqual),\n '==': e(equal),\n '>': e(greaterThan),\n '>=': e(greaterThanOrEqual),\n coalesce,\n all,\n any,\n case: caseFunc,\n match,\n};\n","import { ExpressionCbFunc } from '../../interfaces';\n\ntype OutputType = number | string | boolean | null;\n\nexport const step: ExpressionCbFunc<(number | OutputType)[], OutputType> = (\n args,\n) => {\n const [inputFn, defaultValue, ...stops] = args;\n const input = inputFn();\n\n if (typeof input !== 'number') {\n return defaultValue() as OutputType;\n }\n\n for (let i = 0; i < stops.length - 2; i += 2) {\n const stopInput = stops[i]() as number;\n const stopOutput = stops[i + 1]() as OutputType;\n const nextStopInput = stops[i + 2]() as number;\n\n if (input >= stopInput && input < nextStopInput) {\n return stopOutput;\n }\n }\n\n if (input >= (stops[stops.length - 2]() as number)) {\n return stops[stops.length - 1]();\n }\n\n return defaultValue();\n};\n","export const COLORS = {\n aliceblue: '#f0f8ff',\n antiquewhite: '#faebd7',\n aqua: '#00ffff',\n aquamarine: '#7fffd4',\n azure: '#f0ffff',\n beige: '#f5f5dc',\n bisque: '#ffe4c4',\n black: '#000000',\n blanchedalmond: '#ffebcd',\n blue: '#0000ff',\n blueviolet: '#8a2be2',\n brown: '#a52a2a',\n burlywood: '#deb887',\n cadetblue: '#5f9ea0',\n chartreuse: '#7fff00',\n chocolate: '#d2691e',\n coral: '#ff7f50',\n cornflowerblue: '#6495ed',\n cornsilk: '#fff8dc',\n crimson: '#dc143c',\n cyan: '#00ffff',\n darkblue: '#00008b',\n darkcyan: '#008b8b',\n darkgoldenrod: '#b8860b',\n darkgray: '#a9a9a9',\n darkgreen: '#006400',\n darkkhaki: '#bdb76b',\n darkmagenta: '#8b008b',\n darkolivegreen: '#556b2f',\n darkorange: '#ff8c00',\n darkorchid: '#9932cc',\n darkred: '#8b0000',\n darksalmon: '#e9967a',\n darkseagreen: '#8fbc8f',\n darkslateblue: '#483d8b',\n darkslategray: '#2f4f4f',\n darkturquoise: '#00ced1',\n darkviolet: '#9400d3',\n deeppink: '#ff1493',\n deepskyblue: '#00bfff',\n dimgray: '#696969',\n dodgerblue: '#1e90ff',\n firebrick: '#b22222',\n floralwhite: '#fffaf0',\n forestgreen: '#228b22',\n fuchsia: '#ff00ff',\n gainsboro: '#dcdcdc',\n ghostwhite: '#f8f8ff',\n gold: '#ffd700',\n goldenrod: '#daa520',\n gray: '#808080',\n green: '#008000',\n greenyellow: '#adff2f',\n honeydew: '#f0fff0',\n hotpink: '#ff69b4',\n 'indianred ': '#cd5c5c',\n indigo: '#4b0082',\n ivory: '#fffff0',\n khaki: '#f0e68c',\n lavender: '#e6e6fa',\n lavenderblush: '#fff0f5',\n lawngreen: '#7cfc00',\n lemonchiffon: '#fffacd',\n lightblue: '#add8e6',\n lightcoral: '#f08080',\n lightcyan: '#e0ffff',\n lightgoldenrodyellow: '#fafad2',\n lightgrey: '#d3d3d3',\n lightgreen: '#90ee90',\n lightpink: '#ffb6c1',\n lightsalmon: '#ffa07a',\n lightseagreen: '#20b2aa',\n lightskyblue: '#87cefa',\n lightslategray: '#778899',\n lightsteelblue: '#b0c4de',\n lightyellow: '#ffffe0',\n lime: '#00ff00',\n limegreen: '#32cd32',\n linen: '#faf0e6',\n magenta: '#ff00ff',\n maroon: '#800000',\n mediumaquamarine: '#66cdaa',\n mediumblue: '#0000cd',\n mediumorchid: '#ba55d3',\n mediumpurple: '#9370d8',\n mediumseagreen: '#3cb371',\n mediumslateblue: '#7b68ee',\n mediumspringgreen: '#00fa9a',\n mediumturquoise: '#48d1cc',\n mediumvioletred: '#c71585',\n midnightblue: '#191970',\n mintcream: '#f5fffa',\n mistyrose: '#ffe4e1',\n moccasin: '#ffe4b5',\n navajowhite: '#ffdead',\n navy: '#000080',\n oldlace: '#fdf5e6',\n olive: '#808000',\n olivedrab: '#6b8e23',\n orange: '#ffa500',\n orangered: '#ff4500',\n orchid: '#da70d6',\n palegoldenrod: '#eee8aa',\n palegreen: '#98fb98',\n paleturquoise: '#afeeee',\n palevioletred: '#d87093',\n papayawhip: '#ffefd5',\n peachpuff: '#ffdab9',\n peru: '#cd853f',\n pink: '#ffc0cb',\n plum: '#dda0dd',\n powderblue: '#b0e0e6',\n purple: '#800080',\n rebeccapurple: '#663399',\n red: '#ff0000',\n rosybrown: '#bc8f8f',\n royalblue: '#4169e1',\n saddlebrown: '#8b4513',\n salmon: '#fa8072',\n sandybrown: '#f4a460',\n seagreen: '#2e8b57',\n seashell: '#fff5ee',\n sienna: '#a0522d',\n silver: '#c0c0c0',\n skyblue: '#87ceeb',\n slateblue: '#6a5acd',\n slategray: '#708090',\n snow: '#fffafa',\n springgreen: '#00ff7f',\n steelblue: '#4682b4',\n tan: '#d2b48c',\n teal: '#008080',\n thistle: '#d8bfd8',\n tomato: '#ff6347',\n turquoise: '#40e0d0',\n violet: '#ee82ee',\n wheat: '#f5deb3',\n white: '#ffffff',\n whitesmoke: '#f5f5f5',\n yellow: '#ffff00',\n yellowgreen: '#9acd32',\n};\n","import { COLORS } from '../constants/colors';\n\nexport type ColorArray = [r: number, g: number, b: number, a?: number];\n\nexport type ColorObject = {\n r: number;\n g: number;\n b: number;\n a?: number;\n};\nexport type Color = string | ColorObject;\n\nfunction isHex(hex: any): hex is string {\n return typeof hex === 'string' && /^#([A-Fa-f0-9]{3}){1,2}$/.test(hex);\n}\n\nfunction isRgb(hex: any): hex is string {\n const r =\n // eslint-disable-next-line max-len\n /^rgb(a?)\\(\\s*([0-9]+)\\s*,\\s*([0-9]+)\\s*,\\s*([0-9]+)(?:\\s*,\\s*([01](?:\\.\\d+)?))?\\s*\\)$/;\n return typeof hex === 'string' && r.test(hex);\n}\n\nfunction isColorObj(obj: any): obj is ColorObject {\n if (typeof obj === 'object' && obj !== null) {\n const hasRgb = 'r' in obj && 'g' in obj && 'b' in obj;\n const hasValidAlpha =\n !('a' in obj) || (typeof obj.a === 'number' && obj.a >= 0 && obj.a <= 1);\n return hasRgb && hasValidAlpha;\n }\n return false;\n}\n\nfunction isColorName(name: any): name is keyof typeof COLORS {\n if (typeof name === 'string' && name in COLORS) {\n return true;\n }\n return false;\n}\n\nexport function isColor(value: any): value is Color {\n return [isColorName, isHex, isRgb, isColorObj].some((c) => c(value));\n}\n\nexport function toColor(value: Color): ColorArray {\n if (isHex(value)) {\n return hexToColor(value);\n } else if (isColorName(value)) {\n return colorNameToColor(value);\n } else if (isRgb(value)) {\n return rgbToColor(value);\n } else if (isColorObj(value)) {\n return colorObjectToColor(value);\n }\n throw new Error(`The '${value}' cannot be converted to color`);\n}\n\nfunction colorNameToColor(name: keyof typeof COLORS) {\n return hexToColor(COLORS[name]);\n}\n\nfunction hexToColor(hex: string): ColorArray {\n const shortRGB = /^#([0-9a-fA-F])([0-9a-fA-F])([0-9a-fA-F])$/;\n const shortRGBA = /^#([0-9a-fA-F])([0-9a-fA-F])([0-9a-fA-F])([0-9a-fA-F])$/;\n const longRGB = /^#([0-9a-fA-F]{2})([0-9a-fA-F]{2})([0-9a-fA-F]{2})$/;\n const longRGBA =\n /^#([0-9a-fA-F]{2})([0-9a-fA-F]{2})([0-9a-fA-F]{2})([0-9a-fA-F]{2})$/;\n\n let result;\n\n if ((result = shortRGB.exec(hex))) {\n return [\n parseInt(result[1] + result[1], 16),\n parseInt(result[2] + result[2], 16),\n parseInt(result[3] + result[3], 16),\n ];\n } else if ((result = shortRGBA.exec(hex))) {\n return [\n parseInt(result[1] + result[1], 16),\n parseInt(result[2] + result[2], 16),\n parseInt(result[3] + result[3], 16),\n parseInt(result[4] + result[4], 16) / 255,\n ];\n } else if ((result = longRGB.exec(hex))) {\n return [\n parseInt(result[1], 16),\n parseInt(result[2], 16),\n parseInt(result[3], 16),\n ];\n } else if ((result = longRGBA.exec(hex))) {\n return [\n parseInt(result[1], 16),\n parseInt(result[2], 16),\n parseInt(result[3], 16),\n parseInt(result[4], 16) / 255,\n ];\n }\n throw new Error(`The '${hex}' Is not valid hex`);\n}\n\nfunction rgbToColor(rgb: string): ColorArray {\n const rgbPattern = /^rgb\\((\\d+),\\s*(\\d+),\\s*(\\d+)\\)$/;\n const rgbaPattern = /^rgba\\((\\d+),\\s*(\\d+),\\s*(\\d+),\\s*([\\d.]+)\\)$/;\n\n let matches;\n\n if ((matches = rgb.match(rgbPattern))) {\n return [\n parseInt(matches[1], 10),\n parseInt(matches[2], 10),\n parseInt(matches[3], 10),\n ];\n } else if ((matches = rgb.match(rgbaPattern))) {\n return [\n parseInt(matches[1], 10),\n parseInt(matches[2], 10),\n parseInt(matches[3], 10),\n parseFloat(matches[4]),\n ];\n }\n\n throw new Error(`The '${rgb}' Is not valid rgb`);\n}\n\nexport function colorObjectToColor({ r, g, b, a }: ColorObject): ColorArray {\n return [r, g, b, ...(a !== undefined ? [a] : [])] as ColorArray;\n}\n\nexport function colorToRGB(array: ColorArray): string {\n return `rgb(${array.join(',')})`;\n}\n","import { type ColorArray, colorToRGB, toColor } from '../../utils/color';\nimport type { ExpressionCbFunc } from '../../interfaces';\n\ntype LinearInterpolation = ['linear'];\ntype ExponentialInterpolation = [name: 'exponential', base: number];\ntype CubicBezierInterpolation = [\n name: 'cubic-bezier',\n x1: number,\n y1: number,\n x2: number,\n y2: number,\n];\ntype Interpolation =\n | LinearInterpolation\n | ExponentialInterpolation\n | CubicBezierInterpolation;\n\ntype OutputType = any;\n\ntype InterpolateArgs = [\n interpolation: Interpolation,\n input: number,\n ...stops: (number | OutputType)[],\n];\n\nfunction linearInterpolation(\n input: number,\n input1: number,\n output1: OutputType,\n input2: number,\n output2: OutputType,\n): OutputType {\n if (typeof output1 === 'number' && typeof output2 === 'number') {\n return (\n output1 + ((input - input1) / (input2 - input1)) * (output2 - output1)\n );\n }\n\n try {\n const outputColor1 = toColor(output1);\n const outputColor2 = toColor(output2);\n return colorToRGB(\n outputColor1.map((val, index) => {\n return Math.ceil(\n linearInterpolation(input, input1, val, input2, outputColor2[index]),\n );\n }) as ColorArray,\n );\n } catch (er) {\n console.log(er);\n }\n\n throw new Error('Unsupported output type for linear interpolation.');\n}\n\nexport const interpolate: ExpressionCbFunc<InterpolateArgs, OutputType> = ([\n interpolationFn,\n inputFn,\n ...stops\n]) => {\n if (stops.length < 2) {\n throw new Error('At least two stops are required');\n }\n if (stops.length < 2 || stops.length % 2 !== 0) {\n throw new Error('Invalid stops provided.');\n }\n const input = inputFn();\n\n if (typeof input !== 'number') {\n throw new Error('Input must be a number.');\n }\n const interpolation = interpolationFn();\n for (let i = 0; i < stops.length - 2; i += 2) {\n const stopInput1 = stops[i]() as number;\n const stopOutput1 = stops[i + 1]() as OutputType;\n const stopInput2 = stops[i + 2]() as number;\n const stopOutput2 = stops[i + 3]() as OutputType;\n\n if (input >= stopInput1 && input <= stopInput2) {\n if (interpolation[0] === 'linear') {\n return linearInterpolation(\n input,\n stopInput1,\n stopOutput1,\n stopInput2,\n stopOutput2,\n );\n }\n // else if (interpolation[0] === 'exponential') {\n // const base = interpolation[1];\n // return exponentialInterpolation(\n // input,\n // base,\n // stopInput1,\n // stopOutput1,\n // stopInput2,\n // stopOutput2,\n // );\n // }\n }\n }\n\n throw new Error('Invalid interpolation type.');\n};\n","import { step } from './step';\nimport { interpolate } from './interpolate';\n\nimport type {\n ExpressionFunc,\n InterpolationExpressionName,\n} from '../../interfaces';\n\nexport const interpolationExpressions: Record<\n InterpolationExpressionName,\n ExpressionFunc\n> = {\n step,\n interpolate,\n};\n","import { typeExpressions } from './expressions/typeExpressions';\nimport { mathExpressions } from './expressions/mathExpressions';\nimport { lookupExpressions } from './expressions/lookupExpressions';\nimport { stringExpressions } from './expressions/stringExpressions';\nimport { decisionExpressions } from './expressions/decisionExpressions';\nimport { interpolationExpressions } from './expressions/interpolationExpressions';\n\nimport type {\n Data,\n SimpleType,\n Expression,\n ExpressionFunc,\n ExpressionName,\n} from './interfaces';\n\nexport function isExpression(value: any): value is Expression {\n if (Array.isArray(value)) {\n const [lookup, ...cases] = value;\n const l = lookup as ExpressionName;\n return (\n typeof l === 'string' &&\n l !== 'literal' &&\n l in expressions &&\n cases.length > 0\n );\n }\n return false;\n}\n\nconst expressions: { [key in ExpressionName]: ExpressionFunc } = {\n ...mathExpressions,\n ...typeExpressions,\n ...stringExpressions,\n ...lookupExpressions,\n ...decisionExpressions,\n ...interpolationExpressions,\n};\n\nexport function evaluate<T extends SimpleType[] = SimpleType[], R = T[0]>(\n expression: Expression,\n data: Data = {},\n): R {\n const [name, ...args] = expression;\n const expressionFun = expressions[name];\n if (expressionFun) {\n return expressionFun(\n args.map((arg) => () => isExpression(arg) ? evaluate(arg, data) : arg),\n data,\n );\n }\n throw new Error(`Expression \"${name}\" is not supported.`);\n}\n","import { evaluate, isExpression, type Expression } from '@nextgis/expression';\n\nimport type { Feature } from 'geojson';\nimport type { VectorAdapterLayerPaint, GetPaintCallback } from './interfaces';\n\ntype PropertyExpressionCb = (feature: Feature) => ReturnType<typeof evaluate>;\n\nfunction createPropertyExpressionCb(\n expression: Expression,\n): PropertyExpressionCb {\n return (feature: Feature) => {\n const properties = feature.properties;\n if (properties) {\n return evaluate(expression, properties);\n }\n return false;\n };\n}\n\nconst excludeExpressionList = ['iconSize', 'iconAnchor'];\n\nexport function createExpressionCallback(\n paint: Record<string, any>,\n): GetPaintCallback | undefined {\n let withExpression = false;\n const expressions: {\n [key: string]: PropertyExpressionCb;\n } = {};\n for (const p in paint) {\n if (excludeExpressionList.indexOf(p) === -1) {\n const p_ = p as keyof VectorAdapterLayerPaint;\n const val = paint[p_];\n if (isExpression(val)) {\n withExpression = true;\n expressions[p_] = createPropertyExpressionCb(val);\n }\n }\n }\n if (withExpression) {\n return (feature: Feature) => {\n const fromCb: any = {};\n for (const p in expressions) {\n fromCb[p] = expressions[p](feature);\n }\n return { ...paint, ...fromCb };\n };\n }\n return;\n}\n","import type { Feature } from 'geojson';\nimport type {\n Operation,\n Properties,\n PropertiesFilter,\n PropertyFilter,\n} from './interfaces';\n\nfunction reEscape(s: string): string {\n return s.replace(/[-/\\\\^$*+?.()|[\\]{}]/g, '\\\\$&');\n}\n\nfunction like(b: string, a: string, iLike?: boolean): boolean {\n a = String(a);\n b = String(b);\n if (a === b) return true;\n if (iLike && a.toUpperCase() === b.toUpperCase()) return true;\n const re = `^${reEscape(a)}$`.replace(/%/g, '.*').replace('_', '.');\n return new RegExp(re, iLike ? 'i' : '').exec(b) !== null;\n}\n\nexport const operationsAliases: {\n [key in Operation]: (a: any, b: any) => boolean;\n} = {\n // greater(>)\n gt: (a: any, b: any) => a > b,\n // lower(<)\n lt: (a: any, b: any) => a < b,\n // greater or equal(>=)\n ge: (a: any, b: any) => a >= b,\n // lower or equal(<=)\n le: (a: any, b: any) => a <= b,\n // equal(=)\n eq: (a: any, b: any) => a === b,\n // not equal(!=)\n ne: (a: any, b: any) => a !== b,\n\n in: (a: any, b: any[]) => b.indexOf(a) !== -1,\n notin: (a: any, b: any[]) => b.indexOf(a) === -1,\n // LIKE SQL statement(for strings compare)\n like: (a: string, b: string) => {\n return like(a, b);\n },\n // ILIKE SQL statement(for strings compare)\n ilike: (a: string, b: string) => {\n return like(a, b, true);\n },\n};\n\nexport function isPropertyFilter(\n filter: PropertyFilter | PropertiesFilter | string,\n): filter is PropertyFilter {\n const pf = filter as PropertyFilter;\n if (\n pf.length === 3 &&\n typeof pf[0] === 'string' &&\n typeof pf[1] === 'string'\n ) {\n return true;\n }\n return false;\n}\n\n/** @deprecated use {@link isPropertyFilter} instead */\nexport function checkIfPropertyFilter(\n filter: PropertyFilter | PropertiesFilter | string,\n): filter is PropertyFilter {\n return isPropertyFilter(filter);\n}\n\nexport function featureFilter(\n feature: Feature,\n filters: PropertiesFilter,\n): boolean {\n const properties: Properties = { ...feature.properties };\n if (properties) {\n // workaround to filter by feature id\n properties.$id = feature.id;\n return propertiesFilter(properties, filters);\n }\n return false;\n}\n\nexport function propertiesFilter<T extends Properties = Properties>(\n properties: T,\n filters: PropertiesFilter<T>,\n): boolean {\n const logic = typeof filters[0] === 'string' ? filters[0] : 'all';\n const filterFunction = (p: PropertyFilter | PropertiesFilter) => {\n if (isPropertyFilter(p)) {\n const [field, operation, value] = p;\n const operationExec = operationsAliases[operation];\n if (operationExec) {\n if (operation === 'like' || operation === 'ilike') {\n if (typeof field === 'string') {\n let prop = '';\n const value_ = field.replace(/^%?(\\w+)%?$/, (match, cleanField) => {\n prop = properties[cleanField];\n return field.replace(cleanField, value);\n });\n return operationExec(prop, value_);\n }\n }\n return operationExec(properties[field], value);\n }\n return false;\n } else {\n return propertiesFilter(properties, p);\n }\n };\n const filters_ = filters.filter((x) => Array.isArray(x)) as (\n | PropertyFilter\n | PropertiesFilter\n )[];\n return logic === 'any'\n ? filters_.some(filterFunction)\n : filters_.every(filterFunction);\n}\n","import { featureFilter } from '@nextgis/properties-filter';\n\nimport { createExpressionCallback } from './fromPaintExpression';\nimport { isPaintCallback, isPropertiesPaint } from './typeHelpers';\n\nimport type { Feature } from 'geojson';\nimport type {\n Paint,\n PropertyPaint,\n GeometryPaint,\n PropertiesPaint,\n GetPaintCallback,\n GetPaintFunction,\n GetCustomPaintOptions,\n VectorAdapterLayerPaint,\n} from './interfaces';\n\nfunction updatePaintOptionFromCallback(\n paint: GetCustomPaintOptions,\n getPaintFunctions?: { [name: string]: GetPaintFunction },\n): VectorAdapterLayerPaint | undefined {\n if (typeof paint.from === 'function') {\n return paint.from(paint.options);\n } else if (typeof paint.from === 'string' && getPaintFunctions) {\n const from = getPaintFunctions[paint.from];\n if (from) {\n return from(paint.options);\n }\n }\n}\n\nfunction createPropertiesPaint(\n propertiesPaint: PropertiesPaint,\n): GetPaintFunction {\n let mask: VectorAdapterLayerPaint = {};\n const paintsFilters: PropertyPaint[] = [];\n for (const p of propertiesPaint) {\n if (p) {\n if (Array.isArray(p)) {\n paintsFilters.push(p);\n } else {\n mask = p as VectorAdapterLayerPaint;\n }\n }\n }\n\n return (feature: Feature) => {\n const paint = paintsFilters.find((x) => featureFilter(feature, x[0]));\n if (paint) {\n return { ...mask, ...paint[1] };\n }\n return mask;\n };\n}\n\nfunction expressionCallback({\n paint,\n defaultPaint,\n}: PreparePaintOptions): Paint | VectorAdapterLayerPaint {\n const expressionCallback = createExpressionCallback(paint);\n if (expressionCallback) {\n const expressionPaintCb = (feature: Feature) => {\n return preparePaint({\n paint: expressionCallback(feature),\n defaultPaint,\n }) as VectorAdapterLayerPaint;\n };\n expressionPaintCb.paint = finalizePaint({ paint, defaultPaint });\n return expressionPaintCb as VectorAdapterLayerPaint;\n }\n return finalizePaint({ paint, defaultPaint });\n}\n\nfunction finalizePaint({ paint, defaultPaint }: PreparePaintOptions): Paint {\n let newPaint: Paint = { ...defaultPaint };\n newPaint = { ...newPaint, ...paint } as GeometryPaint;\n newPaint.fill = newPaint.fill ?? true;\n newPaint.stroke =\n newPaint.stroke !== undefined\n ? newPaint.stroke\n : !newPaint.fill || !!(newPaint.strokeColor || newPaint.strokeOpacity);\n return newPaint;\n}\n\nexport interface PreparePaintOptions {\n paint: Paint;\n defaultPaint?: GeometryPaint;\n getPaintFunctions?: { [name: string]: GetPaintFunction };\n}\n\nexport function preparePaint({\n paint,\n defaultPaint,\n getPaintFunctions,\n}: PreparePaintOptions): Paint {\n if (!paint) {\n throw new Error('paint is empty');\n }\n let newPaint: Paint = { ...defaultPaint };\n if (isPaintCallback(paint)) {\n const getPaintFunction: GetPaintCallback = (feature: Feature) => {\n const getPaint = preparePaint({\n paint: paint(feature),\n defaultPaint,\n getPaintFunctions,\n }) as VectorAdapterLayerPaint;\n getPaint.type = paint.type;\n return getPaint;\n };\n getPaintFunction.type = paint.type;\n return getPaintFunction;\n } else if (isPropertiesPaint(paint)) {\n return (feature: Feature) => {\n return preparePaint({\n paint: createPropertiesPaint(paint)(feature),\n defaultPaint,\n getPaintFunctions,\n }) as VectorAdapterLayerPaint;\n };\n } else if (paint.type === 'get-paint') {\n const getPaint = updatePaintOptionFromCallback(paint, getPaintFunctions);\n if (getPaint) {\n newPaint = preparePaint({\n paint: getPaint,\n defaultPaint,\n getPaintFunctions,\n });\n }\n } else if (paint.type === 'icon') {\n return paint;\n } else {\n newPaint = expressionCallback({ paint, defaultPaint });\n }\n\n if (isPaintCallback(newPaint)) {\n return newPaint;\n }\n\n if ('color' in newPaint) {\n if (!newPaint.strokeColor) {\n newPaint.strokeColor = newPaint.color;\n }\n if (!newPaint.fillColor) {\n newPaint.fillColor = newPaint.color;\n }\n }\n if ('opacity' in newPaint) {\n if (newPaint.strokeOpacity === undefined) {\n newPaint.strokeOpacity = newPaint.opacity;\n }\n if (newPaint.fillOpacity === undefined) {\n newPaint.fillOpacity = newPaint.opacity;\n }\n }\n\n return newPaint;\n}\n","import type {\n GeoJsonObject,\n GeoJsonGeometryTypes,\n FeatureCollection,\n GeometryCollection,\n Feature,\n} from 'geojson';\n\n/**\n * @internal\n */\nexport function findMostFrequentGeomType(\n arr: GeoJsonGeometryTypes[],\n): GeoJsonGeometryTypes {\n const counts: { [x: string]: number } = {};\n for (let fry = 0; fry < arr.length; fry++) {\n counts[arr[fry]] = 1 + (counts[arr[fry]] || 0);\n }\n let maxName;\n for (const c in counts) {\n const count = maxName !== undefined ? counts[maxName] : 0;\n if (counts[c] > (count || 0)) {\n maxName = c;\n }\n }\n return maxName as GeoJsonGeometryTypes;\n}\n\n/**\n * @internal\n */\nexport function detectGeometryType(\n geojson: GeoJsonObject,\n): GeoJsonGeometryTypes {\n let geometry: GeoJsonGeometryTypes;\n if (geojson.type === 'FeatureCollection') {\n const featuresTypes = (geojson as FeatureCollection).features.map(\n (f) => f.geometry.type,\n );\n geometry = findMostFrequentGeomType(featuresTypes);\n } else if (geojson.type === 'GeometryCollection') {\n const geometryTypes = (geojson as GeometryCollection).geometries.map(\n (g) => g.type,\n );\n geometry = findMostFrequentGeomType(geometryTypes);\n } else if (geojson.type === 'Feature') {\n geometry = (geojson as Feature).geometry.type;\n } else {\n geometry = geojson.type;\n }\n return geometry;\n}\n","import { isPaint } from '@nextgis/paint';\nimport { detectGeometryType } from './geometryTypes';\n\nimport type {\n GeoJsonAdapterOptions,\n VectorAdapterLayerType,\n} from '../interfaces/LayerAdapter';\n\n/**\n * @internal\n */\nexport const paintTypeAlias: Record<VectorAdapterLayerType, any> = {\n polygon: 'path',\n line: 'path',\n point: 'circle',\n};\n\nexport const typeAlias: { [x: string]: VectorAdapterLayerType } = {\n Point: 'point',\n LineString: 'line',\n MultiPoint: 'point',\n Polygon: 'polygon',\n MultiLineString: 'line',\n MultiPolygon: 'polygon',\n};\n\n/**\n * @internal\n */\nexport function updateGeoJsonAdapterOptions<\n O extends GeoJsonAdapterOptions = GeoJsonAdapterOptions,\n>(opt: O): O {\n if (opt.data) {\n const geomType = typeAlias[detectGeometryType(opt.data)];\n const p = opt.paint;\n if (p && isPaint(p)) {\n // define parameter if not specified\n p.type = p.type\n ? p.type\n : geomType === 'polygon' || geomType === 'line'\n ? 'path'\n : 'html' in p || 'className' in p\n ? 'icon'\n : paintTypeAlias[geomType];\n }\n opt.type = opt.type || geomType;\n }\n return opt;\n}\n","export class KeyCodes {\n 'backspace' = 8;\n 'tab' = 9;\n 'enter' = 13;\n 'shift' = 16;\n 'ctrl' = 17;\n 'alt' = 18;\n 'pause/break' = 19;\n 'caps_lock' = 20;\n 'escape' = 27;\n 'page_up' = 33;\n 'page_down' = 34;\n 'end' = 35;\n 'home' = 36;\n 'left_arrow' = 37;\n 'up_arrow' = 38;\n 'right_arrow' = 39;\n 'down_arrow' = 40;\n 'insert' = 45;\n 'delete' = 46;\n 'left_window_key' = 91;\n 'right_window_key' = 92;\n 'select_key' = 93;\n 'numpad_0' = 96;\n 'numpad_1' = 97;\n 'numpad_2' = 98;\n 'numpad_3' = 99;\n 'numpad_4' = 100;\n 'numpad_5' = 101;\n 'numpad_6' = 102;\n 'numpad_7' = 103;\n 'numpad_8' = 104;\n 'numpad_9' = 105;\n 'multiply' = 106;\n 'add' = 107;\n 'subtract' = 109;\n 'decimal_point' = 110;\n 'divide' = 111;\n 'f1' = 112;\n 'f2' = 113;\n 'f3' = 114;\n 'f4' = 115;\n 'f5' = 116;\n 'f6' = 117;\n 'f7' = 118;\n 'f8' = 119;\n 'f9' = 120;\n 'f10' = 121;\n 'f11' = 122;\n 'f12' = 123;\n 'num_lock' = 144;\n 'scroll_lock' = 145;\n 'semi-colon' = 186;\n 'equal_sign' = 187;\n ',' = 188; // \"comma\";\n '-' = 189; // \"dash\";\n '.' = 190; // \"period\";\n '/' = 191; // \"forward slash\";\n '`' = 192; // \"grave accent\";\n '[' = 219; // \"open bracket\";\n '\\\\' = 220; // \"back slash\";\n ']' = 221; // \"close braket\";\n \"'\" = 222; // \"single quote\"\n}\n","import { KeyCodes } from './KeysCodes';\n\n/**\n * @param {string} key - key symbol\n * @param {string} func - action on key press\n * @param {number} [keyCode] - key code for special button like tab\n *\n * @export\n * @interface KeyControl\n */\nexport interface KeyControl {\n key?: string;\n keyCode?: number;\n func: () => void;\n}\n\nexport class Keys {\n keyCodeAlias = new KeyCodes();\n\n keys: { [keyCode: number]: boolean } = {};\n\n private _windowOnFocus: () => void;\n private _keysPressed: (e: KeyboardEvent) => void;\n private _keysReleased: (e: KeyboardEvent) => void;\n\n constructor() {\n this._windowOnFocus = this.windowOnFocus.bind(this);\n this._keysPressed = this.keysPressed.bind(this);\n this._keysReleased = this.keysReleased.bind(this);\n this.addKeyboardEventsListener();\n }\n\n pressed(keyName: keyof KeyCodes): boolean {\n const code = this.keyCodeAlias[keyName];\n return !!code && this.keys[code];\n }\n\n addKeyboardEventsListener(): void {\n if (typeof window !== 'undefined') {\n window.addEventListener('focus', this._windowOnFocus, false);\n window.addEventListener('keydown', this._keysPressed, false);\n window.addEventListener('keyup', this._keysReleased, false);\n }\n }\n\n removeKeyboardEventsListener(): void {\n if (typeof window !== 'undefined') {\n window.removeEventListener('focus', this._windowOnFocus, false);\n window.removeEventListener('keydown', this._keysPressed, false);\n window.removeEventListener('keyup', this._keysReleased, false);\n }\n }\n\n private keysPressed(e: KeyboardEvent) {\n e.stopPropagation();\n if (!this.keys[e.keyCode]) {\n this.keys[e.keyCode] = true;\n }\n }\n\n private keysReleased(e: KeyboardEvent) {\n e.stopPropagation();\n this.keys[e.keyCode] = false;\n }\n\n private windowOnFocus() {\n this.keys = {};\n }\n}\n","import type { WebMap } from '../../WebMap';\nimport type { MapStateItem } from '../../interfaces/MapState';\nimport type { WebMapEvents } from '../../interfaces/Events';\nimport type { MapOptions } from '../../interfaces/MapOptions';\n\nexport abstract class StateItem<V extends any | undefined = any | undefined>\n implements MapStateItem<V | undefined>\n{\n name!: keyof MapOptions;\n event!: keyof WebMapEvents;\n protected value?: V;\n\n constructor(\n protected webMap: WebMap,\n opt?: { name?: keyof MapOptions; event?: keyof WebMapEvents; value?: V },\n ) {\n if (opt) {\n if (opt.value) {\n this.setValue(opt.value);\n }\n if (opt.name) {\n this.name = opt.name;\n }\n if (opt.event) {\n this.event = opt.event;\n }\n }\n }\n\n getValue(): V | undefined {\n return this.value;\n }\n\n setValue(val: V): void {\n this.value = val;\n }\n\n abstract toString(data: unknown): string;\n abstract parse(str: string): V;\n}\n","import { StateItem } from './StateItem';\n\nimport type { LngLatArray } from '@nextgis/utils';\nimport type { WebMapEvents } from '../../interfaces/Events';\nimport type { MapOptions } from '../../interfaces/MapOptions';\n\nexport class CenterState extends StateItem<LngLatArray> {\n name: keyof MapOptions = 'center';\n event: keyof WebMapEvents = 'moveend';\n\n getValue(): LngLatArray | undefined {\n return this.webMap.getCenter();\n }\n setValue(val: LngLatArray): void {\n this.webMap.setCenter(val);\n }\n toString(data: LngLatArray): string {\n const d = data.map((x) => x.toFixed(5));\n return d[0] + '_' + d[1];\n }\n parse(str: string): LngLatArray {\n const lngLat = str.split('_').map(Number) as LngLatArray;\n return lngLat;\n }\n}\n","import { StateItem } from './StateItem';\nimport type { WebMapEvents } from '../../interfaces/Events';\nimport type { MapOptions } from '../../interfaces/MapOptions';\n\nexport class ZoomState extends StateItem<number> {\n name: keyof MapOptions = 'zoom';\n event: keyof WebMapEvents = 'zoomend';\n getValue(): number | undefined {\n const zoom = this.webMap.getZoom();\n return zoom !== undefined ? Math.round(zoom) : undefined;\n }\n setValue(val: number): void {\n this.webMap.setZoom(val);\n }\n toString(val: number): string {\n return String(val);\n }\n parse(str: string): number {\n return Number(str);\n }\n}\n","/**\n * @internal\n */\nexport function clearObject(obj: Record<any, any>): void {\n for (const member in obj) {\n delete obj[member];\n }\n}\n","import { EventEmitter } from 'events';\n\nimport { deepmerge, defined, getBoundsFeature } from '@nextgis/utils';\nimport { GetPaintFunction } from '@nextgis/paint';\nimport CancelablePromise from '@nextgis/cancelable-promise';\nimport { deprecatedMapClick } from '@nextgis/utils';\n\nimport { Keys } from './components/keys/Keys';\nimport { CenterState } from './components/mapStates/CenterState';\nimport { StateItem } from './components/mapStates/StateItem';\nimport { ZoomState } from './components/mapStates/ZoomState';\nimport { clearObject } from './utils/clearObject';\n\nimport type StrictEventEmitter from 'strict-event-emitter-types';\nimport type { Feature, Polygon } from 'geojson';\nimport type {\n Type,\n TileJson,\n LngLatArray,\n LngLatBoundsArray,\n} from '@nextgis/utils';\nimport type { Cursor } from './interfaces/BaseTypes';\nimport type {\n LocationEvents,\n MapClickEvent,\n LocateOptions,\n FitOptions,\n MapAdapter,\n Locate,\n} from './interfaces/MapAdapter';\nimport type { StarterKit } from './interfaces/StarterKit';\nimport type { LayerAdapter } from './interfaces/LayerAdapter';\nimport type { RuntimeParams } from './interfaces/RuntimeParams';\nimport type { MapOptions, ViewOptions } from './interfaces/MapOptions';\nimport type { WebMapEvents, MainMapEvents } from './interfaces/Events';\n\ntype EmitStatusEventData = any;\n\nlet ID = 0;\n\nconst OPTIONS: MapOptions = {\n minZoom: 0,\n maxZoom: 22,\n paint: {\n color: '#0000ff', // blue\n opacity: 0.4,\n strokeOpacity: 1,\n stroke: true,\n radius: 8,\n weight: 1,\n },\n selectedPaint: {\n color: '#00008b', // darkblue\n opacity: 0.4,\n strokeOpacity: 1,\n stroke: true,\n radius: 12,\n weight: 1,\n },\n create: true,\n};\n\ninterface AddEventsListenersOptions {\n include: (keyof MainMapEvents)[];\n}\n\nexport class WebMapMain<\n M = any,\n E extends WebMapEvents = WebMapEvents,\n O extends MapOptions = MapOptions,\n> {\n static keys: Keys = new Keys();\n\n static getPaintFunctions: { [name: string]: GetPaintFunction };\n\n options: O = OPTIONS as O;\n // `WebMapEvents` must be `E` but its not work correct\n readonly emitter: StrictEventEmitter<EventEmitter, WebMapEvents> =\n new EventEmitter();\n readonly keys = WebMapMain.keys;\n\n readonly mapAdapter: MapAdapter<M>;\n readonly runtimeParams: RuntimeParams[] = [];\n\n getPaintFunctions = WebMapMain.getPaintFunctions;\n mapState: Type<StateItem>[] = [CenterState, ZoomState];\n id = ID++;\n\n /**\n * From runtime params\n */\n protected _initMapState: Record<string, any> = {};\n protected readonly _starterKits: StarterKit[];\n private _mapState: StateItem[] = [];\n private _extent?: LngLatBoundsArray;\n private readonly _eventsStatus: { [key in keyof E]?: boolean } = {};\n private _coordFromMapClickPromise?: CancelablePromise<LngLatArray>;\n\n private readonly _mapEvents: {\n [key in keyof MainMapEvents]?: (...args: any[]) => void;\n } = {};\n\n constructor(mapOptions: O) {\n this.mapAdapter = mapOptions.mapAdapter as MapAdapter<M>;\n this._starterKits = mapOptions.starterKits || [];\n if (mapOptions) {\n this.options = deepmerge((OPTIONS as O) || {}, mapOptions) as O;\n }\n if (this.options.runtimeParams) {\n this.runtimeParams = this.options.runtimeParams;\n }\n this._addEventsListeners();\n\n if (this.options.tileJson) {\n this._setTileJsonOptions(this.options.tileJson);\n }\n if (this.options.create) {\n this.create();\n }\n }\n\n getId(): number {\n return this.id;\n }\n\n /**\n * Manual way to create a map (If {@link MapOptions.create} is `false`).\n * @example\n * ```javascript\n * const webMap = new WebMap(options);\n * webMap.create().then(() => doSomething());\n * ```\n */\n async create(): Promise<this> {\n if (!this.getEventStatus('create')) {\n await this._setInitMapState(this.mapState);\n await this._setupMap();\n this._emitStatusEvent('create', this);\n }\n return this;\n }\n\n setRuntimeParams(params: RuntimeParams): void {\n this.runtimeParams.push(params);\n }\n\n /**\n * Destroys WebMap, MapAdapter, clears all layers and turn off all event listeners\n */\n destroy(): void {\n this._removeEventListeners();\n clearObject(this._emitStatusEvent);\n if (this.mapAdapter.destroy) {\n this.mapAdapter.destroy();\n }\n }\n\n getState(): Record<string, any> {\n const state: Record<string, any> = {};\n this._mapState.forEach((x) => {\n state[x.name] = x.getValue();\n });\n return state;\n }\n\n getRuntimeParams(): Record<string, any> {\n const state: Record<string, any> = {};\n this._mapState.forEach((x) => {\n for (const r of this.runtimeParams) {\n const val = r.get(x.name);\n if (val !== undefined) {\n state[x.name] = x.parse(val);\n break;\n }\n }\n });\n return state;\n }\n\n /**\n * Returns the HTML element that contains the map.\n * @returns The map's container\n */\n getContainer(): HTMLElement | undefined {\n if (this.mapAdapter.getContainer) {\n return this.mapAdapter.getContainer();\n } else if (this.options.target) {\n if (this.options.target instanceof HTMLElement) {\n return this.options.target;\n } else if (typeof this.options.target === 'string') {\n const element = document.getElementById(this.options.target);\n if (element) {\n return element;\n }\n }\n }\n }\n\n /**\n * Set the cursor icon to be displayed when hover icon on the map container.\n * @param cursor - Available cursor name from https://developer.mozilla.org/ru/docs/Web/CSS/cursor\n */\n setCursor(cursor: Cursor): void {\n if (this.mapAdapter.setCursor) {\n this.mapAdapter.setCursor(cursor);\n }\n }\n\n getCursor(): Cursor | undefined {\n if (this.mapAdapter.getCursor) {\n return this.mapAdapter.getCursor() as Cursor;\n }\n const container = this.getContainer();\n if (container) {\n return container.style.cursor as Cursor;\n }\n }\n\n /**\n * Set the center of the current view.\n * @param lngLat - Array of two numbers representing longitude and latitude of the center of the map view.\n *\n * @example\n * ```javascript\n * // Mount Everest 27° 59′ 17″ N, 86° 55′ 31″ E\n * webMap.setCenter([86.925278, 27.988056]);\n * ```\n */\n setCenter(lngLat: LngLatArray): this {\n this.mapAdapter.setCenter(lngLat);\n return this;\n }\n\n /**\n * Returns the map's geographical centerpoint.\n * @returns lngLat Array of two numbers representing longitude and latitude of the center of the map view.\n *\n * @example\n * ```javascript\n * // Mount Everest 27° 59′ 17″ N, 86° 55′ 31″ E\n * webMap.getCenter(); // [86.925278, 27.988056]\n * ```\n */\n getCenter(): LngLatArray | undefined {\n return this.mapAdapter.getCenter();\n }\n\n getBounds(): LngLatBoundsArray | undefined {\n if (this.mapAdapter.getBounds) {\n return this.mapAdapter.getBounds();\n }\n }\n\n getBoundsPolygon(): Feature<Polygon> | undefined {\n const bounds = this.getBounds();\n if (bounds) {\n const feature = getBoundsFeature(bounds);\n return feature;\n }\n }\n\n /**\n * Zoom to a specific zoom level.\n * @param zoom - The zoom level to set (0-24).\n */\n setZoom(zoom: number): this {\n this.mapAdapter.setZoom(zoom);\n return this;\n }\n\n /**\n * Returns the map's current zoom level.\n * @returns The map's current zoom level (0-24).\n */\n getZoom(): number | undefined {\n const zoom = this.mapAdapter.getZoom();\n if (typeof zoom === 'number') {\n return zoom;\n }\n // throw Error(\n // 'Unable to get zoom level. Perhaps the map is not have been initialized yet',\n // );\n }\n\n zoomIn(): void {\n if (this.mapAdapter.zoomIn) {\n this.mapAdapter.zoomIn();\n } else {\n const zoom = this.getZoom();\n if (zoom !== undefined) {\n const toZoom = zoom + 1;\n this.setZoom(toZoom);\n }\n }\n }\n\n zoomOut(): void {\n if (this.mapAdapter.zoomOut) {\n this.mapAdapter.zoomOut();\n } else {\n const zoom = this.getZoom();\n if (zoom !== undefined) {\n const toZoom = zoom - 1;\n this.setZoom(toZoom);\n }\n }\n }\n\n /**\n * Sets the view of the map geographical center and zoom\n * @param lngLat - Array of two numbers representing longitude and latitude of the center of the map view.\n * @param zoom - The zoom level to set (0-24).\n *\n * @example\n * ```javascript\n * // Mount Everest 27° 59′ 17″ N, 86° 55′ 31″ E\n * webMap.setView([86.925278, 27.988056], 12)\n * ```\n */\n setView(lngLatOr: LngLatArray, zoom?: number): void;\n\n setView(options: ViewOptions): void;\n\n setView(lngLatOrOpt: LngLatArray | ViewOptions, zoom?: number): void {\n if (Array.isArray(lngLatOrOpt)) {\n const lngLat = lngLatOrOpt;\n if (this.mapAdapter.setView && lngLat && defined(zoom)) {\n this.mapAdapter.setView(lngLat, zoom);\n } else {\n if (lngLat) {\n this.mapAdapter.setCenter(lngLat);\n }\n if (defined(zoom)) {\n this.mapAdapter.setZoom(zoom);\n }\n }\n } else {\n const viewOpt = lngLatOrOpt;\n if (this.mapAdapter.setView) {\n this.mapAdapter.setView(viewOpt);\n }\n }\n }\n\n /**\n * Sets a map view that contains the given geographical bounds.\n * @param bounds - Array of coordinates, measured in degrees, in [west, south, east, north] order.\n *\n * @example\n * ```javascript\n * // Whole world\n * webMap.fitBounds([0, -90, 180, 90]);\n * ```\n */\n fitBounds(bounds: LngLatBoundsArray, options?: FitOptions): this {\n if (bounds.every((x) => defined(x))) {\n if (bounds[1] < -85.06) {\n bounds[1] = -85.06;\n }\n if (bounds[3] > 85.06) {\n bounds[3] = 85.06;\n }\n this.mapAdapter.fitBounds(bounds, options);\n }\n return this;\n }\n\n /**\n * Checking the status of any asynchronous operation\n * @param event - The name of the event whose status is checked\n *\n * @example\n * ```javascript\n * var webMap = new WebMap(options);\n * webMap.getEventStatus('create'); // false\n * webMap.emitter.on('create', function () {\n * webMap.getEventStatus('create'); // true\n * })\n * ```\n */\n getEventStatus(event: keyof E): boolean {\n // ugly hack to disable type checking error\n const _eventName = event as keyof WebMapEvents;\n const status = this._eventsStatus[_eventName];\n return status ?? false;\n }\n\n /**\n * helper method to wait for events to load. By default, card creation is tracked\n * @param event - The name of the event whose status is checked\n *\n * @example\n * ```javascript\n * var webMap = new WebMap(options);\n * webMap.onLoad().then(function () {\n * webMap.getEventStatus('create'); // true\n * })\n *\n * // use async/await syntax\n * async function () {\n * await webMap.onLoad();\n * doSomething();\n * }\n *\n * ```\n */\n onLoad(event: keyof WebMapEvents = 'create'): Promise<this> {\n return new Promise((res) => {\n if (this.getEventStatus(event)) {\n res(this);\n } else {\n this.emitter.once(event, () => {\n res(this);\n });\n }\n });\n }\n\n onMapLoad(cb?: (mapAdapter: MapAdapter) => void): Promise<MapAdapter> {\n return new Promise((res) => {\n const _resolve = () => {\n const mapAdapter = this.mapAdapter;\n if (cb) {\n cb(mapAdapter);\n }\n if (mapAdapter) {\n res(mapAdapter);\n }\n };\n const isLoaded = this.mapAdapter.isLoaded ?? true;\n if (this.mapAdapter.map && isLoaded) {\n _resolve();\n } else {\n this.mapAdapter.emitter.once('create', () => {\n _resolve();\n });\n }\n });\n }\n\n getLayerAdapters(): { [name: string]: Type<LayerAdapter> } {\n return this.mapAdapter.layerAdapters;\n }\n\n getLayerAdapter(name: string): Type<LayerAdapter> {\n const adapter = this.mapAdapter.layerAdapters[name];\n return adapter;\n }\n\n locate(opt: LocateOptions, events?: LocationEvents): Locate {\n if (this.mapAdapter && this.mapAdapter.locate) {\n return this.mapAdapter.locate(opt, events);\n }\n const stop = () => ({});\n return { stop };\n }\n\n stopGetCoordFromMapClick(): void {\n if (this._coordFromMapClickPromise) {\n this._coordFromMapClickPromise.cancel();\n }\n }\n\n getCoordFromMapClick(): CancelablePromise<LngLatArray> {\n if (!this._coordFromMapClickPromise) {\n this._coordFromMapClickPromise = new CancelablePromise(\n (resolve, reject, onCancel) => {\n const cursor: Cursor = this.getCursor() || 'grab';\n this._removeEventListeners({ include: ['click'] });\n this.setCursor('crosshair');\n const onCancel_ = (): void => {\n this.setCursor(cursor);\n this._addEventsListeners({ include: ['click'] });\n this.mapAdapter.emitter.off('click', onMapClick);\n this._coordFromMapClickPromise = undefined;\n };\n const onMapClick = (e: MapClickEvent) => {\n onCancel_();\n deprecatedMapClick(e);\n resolve(e.lngLat);\n };\n this.mapAdapter.emitter.once('click', onMapClick);\n onCancel(onCancel_);\n },\n );\n } else {\n return this.getCoordFromMapClick();\n }\n return this._coordFromMapClickPromise;\n }\n\n protected _emitStatusEvent(\n eventName: keyof E,\n data?: EmitStatusEventData,\n ): void {\n // ugly hack to disable type checking error\n const _eventName = eventName as keyof WebMapEvents;\n this._eventsStatus[_eventName] = true;\n this.emitter.emit(_eventName, data);\n }\n\n protected async _addLayerProviders(): Promise<void> {\n //\n }\n\n protected async _onLoadSync(): Promise<void> {\n //\n }\n\n private async _setupMap(): Promise<this> {\n if (!this.mapAdapter) {\n throw new Error('WebMap `mapAdapter` option is not set');\n }\n await this.mapAdapter.create(this.options);\n this._zoomToInitialExtent();\n\n await this._addLayerProviders();\n await this._onLoadSync();\n\n this._emitStatusEvent('build-map', this.mapAdapter);\n return this;\n }\n\n private _setTileJsonOptions(tileJson: TileJson): void {\n if (tileJson.center) {\n this.options.center = tileJson.center;\n }\n if (tileJson.bounds) {\n this.options.bounds = tileJson.bounds;\n }\n if (defined(tileJson.maxzoom)) {\n // this.options.maxZoom = tileJson.maxzoom;\n this.options.zoom = tileJson.maxzoom;\n }\n if (defined(tileJson.minzoom)) {\n // this.options.minZoom = tileJson.minzoom;\n this.options.zoom = tileJson.minzoom;\n }\n if (defined(tileJson.maxzoom) && defined(tileJson.minzoom)) {\n this.options.zoom = (tileJson.maxzoom + tileJson.minzoom) / 2;\n }\n }\n\n private _zoomToInitialExtent(): void {\n const { center, zoom, bounds } = this.options;\n if (this._extent) {\n this.fitBounds(this._extent);\n } else if (center && zoom) {\n this.setView(center, zoom);\n } else if (bounds) {\n this.fitBounds(bounds);\n }\n }\n\n private _setInitMapState(states: Type<StateItem>[]): void {\n for (const X of states) {\n const state = new X(this);\n this._mapState.push(state);\n for (const r of this.runtimeParams) {\n const str = r.get(state.name);\n if (str !== undefined) {\n const val = state.parse(str);\n // state.setValue(val);\n this._initMapState[state.name] = val;\n Object.defineProperty(this.options, state.name, {\n value: val,\n configurable: true,\n enumerable: true,\n });\n break;\n }\n }\n }\n }\n\n private _addEventsListeners(opt?: AddEventsListenersOptions): void {\n let events: (keyof MainMapEvents)[] = [\n 'preclick',\n 'click',\n 'zoomstart',\n 'zoom',\n 'zoomend',\n 'movestart',\n 'move',\n 'moveend',\n 'mousemove',\n 'mouseout',\n 'mouseover',\n ];\n\n if (opt && opt.include) {\n events = events.filter((x) => opt.include.includes(x));\n }\n events.forEach((x) => {\n this._mapEvents[x] = (data): void => {\n if (this.runtimeParams.length) {\n const mapStatusEvent = this._mapState.find((y) => y.event === x);\n if (mapStatusEvent) {\n const value = mapStatusEvent.toString(mapStatusEvent.getValue());\n this.runtimeParams.forEach((r) => {\n r.set(mapStatusEvent.name, value);\n });\n }\n }\n if (this._eventsStatus) {\n this.emitter.emit(x, data);\n }\n };\n const mapEvent = this._mapEvents[x];\n if (mapEvent) {\n this.mapAdapter.emitter.on(x, mapEvent);\n }\n });\n }\n\n private _removeEventListeners(opt?: AddEventsListenersOptions): void {\n let events = Object.entries(this._mapEvents) as [\n keyof MainMapEvents,\n ((...args: any[]) => void) | undefined,\n ][];\n if (opt && opt.include) {\n events = events.filter((x) => opt.include.includes(x[0]));\n }\n events.forEach(([x, event]) => {\n if (event) {\n this.mapAdapter.emitter.removeListener(x as keyof MainMapEvents, event);\n }\n });\n }\n}\n","import { defined } from '@nextgis/utils';\nimport { Paint, preparePaint } from '@nextgis/paint';\nimport { propertiesFilter } from '@nextgis/properties-filter';\n\nimport { updateGeoJsonAdapterOptions } from './utils/updateGeoJsonAdapterOptions';\nimport { WebMapMain } from './WebMapMain';\n\nimport type { Feature, GeoJsonObject, Geometry } from 'geojson';\nimport type { FeatureProperties, TileJson, Type } from '@nextgis/utils';\nimport type { PropertiesFilter } from '@nextgis/properties-filter';\n\nimport type {\n LayerAdapter,\n LayerAdapters,\n FilterOptions,\n AdapterOptions,\n LayerDefinition,\n DataLayerFilter,\n MainLayerAdapter,\n AdapterConstructor,\n VectorLayerAdapter,\n TileAdapterOptions,\n FeatureLayerAdapter,\n ImageAdapterOptions,\n OnLayerMouseOptions,\n LayerAdaptersOptions,\n OnLayerSelectOptions,\n GeoJsonAdapterOptions,\n LayerAdapterDefinition,\n} from './interfaces/LayerAdapter';\nimport type { LayerDef } from './interfaces/BaseTypes';\nimport type {\n GetAttributionsOptions,\n ToggleLayerOptions,\n MapOptions,\n} from './interfaces/MapOptions';\nimport type { WebMapEvents } from './interfaces/Events';\nimport type { FitOptions } from './interfaces/MapAdapter';\n\ntype AddedLayers<M = any, L = any> = { [id: string]: LayerAdapter<M, L> };\n\nexport class WebMapLayers<\n M = any,\n L = any,\n E extends WebMapEvents = WebMapEvents,\n O extends MapOptions = MapOptions,\n> extends WebMapMain<M, E, O> {\n private _layersIdCounter = 1;\n private _layersOrderCounter = 1;\n private readonly _baselayers: string[] = [];\n private readonly _layers: AddedLayers<M, L> = {};\n private readonly _selectedLayers: string[] = [];\n\n constructor(mapOptions: O) {\n super(mapOptions);\n const tileJson = this.options.tileJson;\n if (tileJson) {\n this.emitter.once('build-map', () => this.addTileJsonLayer(tileJson));\n }\n }\n\n /**\n * Try to fit map view by given layer bounds.\n * But not all layers have borders\n */\n async fitLayer(layerDef: LayerDef, options?: FitOptions): Promise<void> {\n const layer = this.getLayer(layerDef);\n // TODO: remove backward compatibility for `getExtent`\n const getBounds = layer && (layer.getBounds || layer.getExtent);\n if (getBounds) {\n const extent = await getBounds.call(layer);\n if (extent) {\n this.fitBounds(extent, options);\n }\n }\n }\n\n /**\n * Check if given layer is baselayer\n */\n isBaseLayer(layerDef: LayerDef): boolean | undefined {\n const layer = this.getLayer(layerDef);\n if (layer && layer.id) {\n return this._baselayers.indexOf(layer.id) !== -1;\n }\n return undefined;\n }\n\n getBaseLayers(): LayerAdapter[] {\n const baselayers: LayerAdapter[] = [];\n this._baselayers.forEach((x) => {\n const baselayer = this._layers[x];\n if (baselayer) {\n baselayers.push(baselayer);\n }\n });\n return baselayers;\n }\n\n getBaseLayersIds(): string[] {\n return this._baselayers;\n }\n\n /**\n * Helper method to return added layer object by any definition type.\n */\n getLayer<LA extends LayerAdapter = LayerAdapter>(\n layerDef: LayerDef,\n ): LA | undefined {\n if (typeof layerDef === 'string') {\n return this._layers[layerDef] as LA;\n }\n return layerDef as LA;\n }\n\n /**\n * Helper method to return added layer identificator by any definition type.\n */\n getLayerId(layerDef: LayerDef): string | undefined {\n const layer = this.getLayer(layerDef);\n if (layer) {\n if (layer.id) {\n return layer?.id;\n }\n if (layer && layer.options) {\n return layer.options.id;\n }\n }\n throw new Error('No id for layer');\n }\n\n /**\n * Return array of all added layer identifications.\n */\n getLayers(): string[] {\n return Object.keys(this._layers);\n }\n\n // TODO: rename to getLayers, getLayers rename to getLayersIds\n allLayers(): AddedLayers<M, L> {\n return this._layers;\n }\n\n orderedLayers<LA extends LayerAdapter<M, L> = LayerAdapter<M, L>>(): LA[] {\n return Object.values(this._layers).sort((a, b) =>\n a.order && b.order ? a.order - b.order : 0,\n ) as LA[];\n }\n\n findLayer<T extends LayerAdapter = LayerAdapter>(\n filter: (adapter: T) => boolean,\n ): T | undefined {\n for (const l in this._layers) {\n const layerAdapter = this._layers[l] as T;\n const isFit = filter(layerAdapter);\n if (isFit) {\n return layerAdapter;\n }\n }\n }\n\n /**\n * Check if the given layer on the map\n */\n isLayerVisible(layerDef: LayerDef): boolean {\n const layer = this.getLayer(layerDef);\n return layer && layer.options.visibility !== undefined\n ? layer.options.visibility\n : false;\n }\n\n /**\n * Shortcut method to create base layer\n */\n async addBaseLayer<\n K extends keyof LayerAdapters,\n O extends AdapterOptions = AdapterOptions,\n >(\n adapter: K | Type<LayerAdapters[K]>,\n options?: O | LayerAdaptersOptions[K],\n ): Promise<LayerAdapter> {\n const layer = await this.addLayer(\n adapter,\n {\n ...options,\n baselayer: true,\n },\n undefined,\n );\n\n return layer;\n }\n\n /**\n * Registration of map layer.\n *\n * @param adapter - The name of layer adapter from [MapAdapter.layerAdapters](webmap#MapAdapter.layerAdapters).\n * May be custom object or class implemented by [MainLayerAdapter](webmap#MainLayerAdapter).\n * @param options - Specific options for given adapter\n *\n * @example\n * ```javascript\n * webMap.addLayer('TILE', options).then((layer) => webMap.showLayer(layer));\n *\n * webMap.addLayer(CustomLayerAdapter, options);\n * ```\n */\n async addLayer<\n K extends keyof LayerAdapters,\n LO extends AdapterOptions = AdapterOptions,\n >(\n adapter: LayerAdapterDefinition<K>,\n options: LO | LayerAdaptersOptions[K] = {},\n order?: number,\n ): Promise<LayerAdapter> {\n const id = this._layersIdCounter++;\n const _order = defined(order)\n ? order\n : options.order !== undefined\n ? options.order\n : this.reserveOrder();\n let adapterEngine: Type<LayerAdapter<M, L, LO>> | undefined;\n if (typeof adapter === 'string') {\n adapterEngine = this.getLayerAdapter(adapter) as Type<\n LayerAdapter<M, L, LO>\n >;\n } else if (typeof adapter === 'function') {\n adapterEngine = adapter as Type<LayerAdapter<M, L, LO>>;\n } else if (\n 'then' in (adapter as Promise<Type<LayerAdapters[K]> | undefined>)\n ) {\n adapterEngine = (await adapter) as Type<LayerAdapter<M, L, LO>>;\n }\n\n const geoJsonOptions = options as GeoJsonAdapterOptions;\n\n this._updateGeoJsonOptions(geoJsonOptions);\n\n options = {\n id: String(id),\n order: _order,\n ...options,\n };\n\n // options.visibility is a layer global state\n const visibility = options.visibility ?? true;\n options.visibility = false;\n\n if (options.baselayer) {\n options.order = 0;\n }\n if (this.options.onBeforeAddLayer) {\n const modified = this.options.onBeforeAddLayer({\n options,\n adapter: adapterEngine,\n });\n if (modified) {\n if (modified.options) {\n options = modified.options;\n }\n if (modified.adapter) {\n adapterEngine = modified.adapter as Type<LayerAdapter<M, L, LO>>;\n }\n }\n }\n if (adapterEngine !== undefined) {\n const _adapter = new adapterEngine(this.mapAdapter.map, options);\n _adapter.options = { ...options, ..._adapter.options };\n\n if (_adapter.options.baselayer) {\n options.baselayer = true;\n options.order = 0;\n _adapter.options.order = 0;\n }\n\n let layerId: string | undefined;\n if (_adapter.options.id) {\n layerId = String(_adapter.options.id);\n\n this._layers[layerId] = _adapter;\n }\n this._emitLayerEvent('layer:preadd', layerId || '', _adapter);\n await this.onMapLoad();\n _adapter.map = this.mapAdapter.map;\n const layer = await _adapter.addLayer(_adapter.options);\n // checking that the original layer was inserted into the adapter anyway\n _adapter.layer = layer;\n // think about how to move `id` to the adapter's constructor,\n // but that it is not required in the options\n _adapter.id = _adapter.options.id || String(id);\n _adapter.options.id = _adapter.id;\n if (options.baselayer) {\n _adapter.options.order = 0;\n }\n _adapter.order = _adapter.options.order ?? _order;\n if (layerId) {\n delete this._layers[layerId];\n }\n layerId = String(_adapter.id);\n if (this._layers[layerId]) {\n throw Error(`layer with id '${layerId}' already exist`);\n }\n if (layerId) {\n this._layers[layerId] = _adapter;\n\n if (geoJsonOptions.filter) {\n this.filterLayer(_adapter, geoJsonOptions.filter);\n }\n if (options.baselayer) {\n this._baselayers.push(layerId);\n }\n\n if (visibility) {\n await this.showLayer(layerId);\n }\n }\n const opacity = options.opacity;\n if (opacity !== undefined && opacity <= 1) {\n this.setLayerOpacity(_adapter, opacity);\n }\n // TODO: remove backward compatibility for `getExtent`\n const getBounds = layer && (_adapter.getBounds || _adapter.getExtent);\n if (options.fit && getBounds) {\n const extent = await getBounds.call(_adapter);\n if (extent) {\n await this.fitBounds(extent);\n }\n }\n if (options.onAdded) {\n options.onAdded(_adapter);\n }\n this._emitLayerEvent('layer:add', layerId, _adapter);\n return _adapter;\n }\n return Promise.reject('No adapter');\n }\n\n async addLayerFromAsyncAdapter<\n K extends keyof LayerAdapters,\n O extends AdapterOptions = AdapterOptions,\n >(\n adapter: AdapterConstructor,\n options: O | LayerAdaptersOptions[K],\n order?: number,\n ): Promise<LayerAdapter> {\n const _order =\n order || options.order !== undefined\n ? options.order\n : 0 || this.reserveOrder();\n const adapterConstructor = adapter as AdapterConstructor;\n const adapterConstructorPromise = adapterConstructor();\n const adapterEngine = await adapterConstructorPromise;\n if (adapterEngine) {\n return this.addLayer(adapterEngine, options, _order);\n }\n return Promise.reject('No adapter');\n }\n\n /**\n * Remove all layer from map and memory.\n */\n removeLayers(\n allowCb?: (layer: string, adapter: LayerAdapter) => boolean,\n ): void {\n for (const l in this._layers) {\n let allow = true;\n if (allowCb) {\n allow = allowCb(l, this._layers[l]);\n }\n if (allow) {\n this.removeLayer(l);\n delete this._layers[l];\n }\n }\n }\n\n reserveOrder(): number {\n return this._layersOrderCounter++;\n }\n\n /**\n * Remove all layers but not remove basemap.\n */\n removeOverlays(): void {\n this.removeLayers((layerId, layer) => {\n if (layer && layer.options && layer.options.baselayer) {\n return false;\n }\n return true;\n });\n }\n\n /**\n * Remove specific layer from map and memory by its definition.\n */\n removeLayer(layerDef: LayerDef): void {\n const layer = this.getLayer(layerDef);\n const layerId = layer && this.getLayerId(layer);\n if (layer && layerId) {\n this.emitter.emit('layer:preremove', layer);\n if (layer.beforeRemove) {\n layer.beforeRemove();\n }\n if (layer.removeLayer) {\n layer.removeLayer();\n } else {\n this.mapAdapter.removeLayer(layer.layer);\n }\n if (layer.options && layer.options.baselayer) {\n const index = this._baselayers.indexOf(layerId);\n if (index) {\n this._baselayers.splice(index, 1);\n }\n }\n delete this._layers[layerId];\n this.emitter.emit('layer:remove', layer);\n }\n }\n\n /**\n * Create layer from GeoJson data. Set style and behavior for selection.\n *\n * @example\n * ```javascript\n * // Add simple layer\n * webMap.addGeoJsonLayer({ data: geojson, paint: { color: 'red' } });\n *\n * // Add styled by feature property layer with selection behavior\n * webMap.addGeoJsonLayer({\n * data: geojson,\n * paint: function (feature) {\n * return { color: feature.properties.color, opacity: 0.5 }\n * },\n * selectedPaint: function (feature) {\n * return { color: feature.properties.selcolor, opacity: 1 }\n * },\n * selectable: true,\n * multiselect: true\n * });\n *\n * // Add marker layer styled with use [Icons](icons)\n * webMap.addGeoJsonLayer({ data: geojson, paint: webMap.getIcon({ color: 'orange' })});\n *\n * // work with added layer\n * const layer = webMap.addGeoJsonLayer({ data: geojson, id: 'my_layer_name'});\n * // access layer by id\n * webMap.showLayer('my_layer_name');\n * // or access layer by instance\n * webMap.showLayer(layer);\n * ```\n */\n addGeoJsonLayer<\n K extends keyof LayerAdapters = keyof LayerAdapters,\n O extends GeoJsonAdapterOptions<any, any> = GeoJsonAdapterOptions,\n >(\n opt: O = {} as O,\n adapter?: LayerAdapterDefinition<K>,\n ): Promise<VectorLayerAdapter<any, any, any>> {\n opt = opt || ({} as O);\n opt.multiselect = opt.multiselect !== undefined ? opt.multiselect : false;\n opt.unselectOnSecondClick =\n opt.unselectOnSecondClick !== undefined\n ? opt.unselectOnSecondClick\n : true;\n if (!adapter) {\n opt = updateGeoJsonAdapterOptions(opt);\n }\n opt.paint = opt.paint || {};\n return this.addLayer(adapter || 'GEOJSON', opt);\n }\n\n /** Shortcut for {@link WebMapLayers.addGeoJsonLayer} to create GeoJson adapter with generic types for working in typescript */\n addFeatureLayer<\n P extends FeatureProperties = FeatureProperties,\n G extends Geometry = Geometry,\n O extends GeoJsonAdapterOptions<Feature<G, P>> = GeoJsonAdapterOptions<\n Feature<G, P>\n >,\n >(options = {} as O): Promise<FeatureLayerAdapter<P, G>> {\n return this.addGeoJsonLayer<'GEOJSON', O>(options) as Promise<\n FeatureLayerAdapter<P, G>\n >;\n }\n\n /** Shortcut for {@link WebMapLayers.addLayer} to create TileLayer adapter */\n addTileLayer(\n url: string,\n options: Omit<TileAdapterOptions, 'url'> = {},\n ): Promise<MainLayerAdapter<M, L, TileAdapterOptions>> {\n return this.addLayer('TILE', { ...options, url }) as Promise<\n MainLayerAdapter<M, L, TileAdapterOptions>\n >;\n }\n\n /** Shortcut for {@link WebMapLayers.addLayer} to create TileLayer adapter */\n addImageLayer(\n url: string,\n options: Omit<ImageAdapterOptions, 'url'>,\n ): Promise<MainLayerAdapter<M, L, ImageAdapterOptions>>;\n addImageLayer(\n options: ImageAdapterOptions,\n ): Promise<MainLayerAdapter<M, L, ImageAdapterOptions>>;\n addImageLayer(\n urlOrOptions: string | ImageAdapterOptions,\n options?: Omit<ImageAdapterOptions, 'url'>,\n ): Promise<MainLayerAdapter<M, L, ImageAdapterOptions>> {\n let url;\n if (typeof urlOrOptions === 'string') {\n url = urlOrOptions;\n } else {\n url = urlOrOptions.url;\n options = urlOrOptions;\n }\n\n return this.addLayer('IMAGE', { ...options, url }) as Promise<\n MainLayerAdapter<M, L, ImageAdapterOptions>\n >;\n }\n\n /**\n * Show added layer on the map by it definition.\n */\n showLayer(\n layerDef: LayerDef,\n options: ToggleLayerOptions = {},\n ): Promise<void> {\n return this.toggleLayer(layerDef, true, options);\n }\n\n /**\n * Hide added layer on the map by it definition.\n */\n hideLayer(\n layerDef: LayerDef,\n options: ToggleLayerOptions = {},\n ): Promise<void> {\n return this.toggleLayer(layerDef, false, options);\n }\n\n /**\n * Change added layer visibility on the map by given status or inverse current status.\n *\n * @example\n * ```javascript\n * webMap.addLayer('TILE', {id: 'my_layer', url: ''}).then((layer) => {\n * webMap.toggleLayer(layer, true);\n * webMap.toggleLayer('my_layer', false);\n * webMap.toggleLayer('my_layer');\n * webMap.isLayerVisible(layer); // true\n * });\n * ```\n */\n toggleLayer(\n layerDef: LayerDef,\n status?: boolean,\n options: ToggleLayerOptions = {},\n ): Promise<void> {\n const layer = this.getLayer(layerDef);\n\n const onMap = layer && layer.options.visibility;\n const toStatus = status !== undefined ? status : !onMap;\n const silent = options.silent !== undefined ? options.silent : false;\n const action = async (l: LayerAdapter) => {\n const id = String(l.id);\n const preEventName = toStatus ? 'layer:preshow' : 'layer:prehide';\n const eventName = toStatus ? 'layer:show' : 'layer:hide';\n if (!silent) {\n this._emitLayerEvent(preEventName, id, l);\n this._emitLayerEvent('layer:pretoggle', id, l);\n }\n if (toStatus && this.mapAdapter) {\n const order = l.options.baselayer ? 0 : l.options.order;\n\n // do not show baselayer if another on the map\n if (l.options.baselayer && this._baselayers.length) {\n const anotherVisibleBaselayers = this._baselayers.filter((x) => {\n return x !== l.id && this.isLayerVisible(x);\n });\n for (const bl of anotherVisibleBaselayers) {\n await this.hideLayer(bl);\n }\n }\n if (l.showLayer) {\n await l.showLayer.call(l, l.layer);\n } else if (l.layer !== undefined) {\n await this.mapAdapter.showLayer(l.layer);\n }\n if (order !== undefined) {\n this.mapAdapter.setLayerOrder(l.layer, order, this._layers);\n }\n } else {\n if (l.hideLayer) {\n await l.hideLayer.call(l, l.layer);\n } else if (l.layer !== undefined) {\n await this.mapAdapter.hideLayer(l.layer);\n }\n }\n l.options.visibility = toStatus;\n if (!silent) {\n this._emitLayerEvent(eventName, id, l);\n this._emitLayerEvent('layer:toggle', id, l);\n }\n };\n if (layer) {\n return this.onMapLoad().then(() => action(layer));\n }\n return Promise.resolve();\n }\n\n updateLayer(layerDef: LayerDef): Promise<void> {\n const layer = this.getLayer(layerDef);\n if (layer) {\n if (layer.updateLayer) {\n return Promise.resolve(layer.updateLayer());\n } else if (this.isLayerVisible(layer)) {\n return this.hideLayer(layer, { silent: true }).then(() => {\n return this.showLayer(layer, { silent: true });\n });\n }\n }\n return Promise.resolve();\n }\n\n /**\n * Set transparency for a given layer by number from 0 to 1\n */\n setLayerOpacity(layerDef: LayerDef, value: number): void {\n const layer = this.getLayer(layerDef);\n if (layer) {\n if (layer.setOpacity) {\n layer.setOpacity(value);\n } else if (this.mapAdapter.setLayerOpacity) {\n this.mapAdapter.setLayerOpacity(layer.layer, value);\n }\n }\n }\n\n isLayerLabelVisible(layerDef: LayerDef): boolean | undefined {\n const layer = this.getLayer(layerDef) as VectorLayerAdapter;\n if (layer.isLabelVisible) {\n return layer.isLabelVisible();\n }\n return layer.options.labelVisibility ?? true;\n }\n\n showLayerLabel(layerDef: LayerDef): void {\n this.toggleLayerLabel(layerDef, true);\n }\n\n hideLayerLabel(layerDef: LayerDef): void {\n this.toggleLayerLabel(layerDef, false);\n }\n\n toggleLayerLabel(layerDef: LayerDef, status?: boolean): boolean {\n const layer = this.getLayer(layerDef) as VectorLayerAdapter;\n status = status ?? !this.isLayerLabelVisible(layerDef);\n if (layer) {\n if (status) {\n if (layer.showLabel) {\n layer.options.labelVisibility = true;\n layer.showLabel();\n }\n } else {\n if (layer.hideLabel) {\n layer.options.labelVisibility = false;\n layer.hideLabel();\n }\n }\n if (layer.id) {\n this._emitLayerEvent('layer:label:toggle', layer.id, layer);\n }\n }\n return status;\n }\n\n /**\n * Mark the layer as selected.\n * If the adapter is a vector layer and supports data selection,\n * you can pass a callback function to specify which data will be selected.\n *\n * @example\n * ```javascript\n * const layer = webMap.addLayer('GEOJSON', {data: geojson}).then((layer) => {\n * webMap.selectLayer(layer, ({feature}) => feature.id === '42');\n * });\n * ```\n\n */\n selectLayer(layerDef: LayerDef, findFeatureFun?: DataLayerFilter): void {\n const layer = this.getLayer(layerDef);\n if (layer) {\n const adapter = layer as VectorLayerAdapter;\n if (adapter && adapter.select) {\n adapter.select(findFeatureFun);\n }\n const layerId = this.getLayerId(layer);\n if (layerId) {\n this._selectedLayers.push(layerId);\n }\n }\n }\n\n /**\n * Unselect the given layer.\n * If the adapter is a vector layer and supports data selection,\n * you can pass a callback function to specify which data will be unselected.\n *\n * @example\n * ```javascript\n * const layer = webMap.addLayer('GEOJSON', {data: geojson}).then((layer) => {\n * webMap.unSelectLayer(layer, ({feature}) => feature.id === '42');\n * });\n * ```\n *\n */\n unSelectLayer(layerDef: LayerDef, findFeatureFun?: DataLayerFilter): void {\n const layer = this.getLayer(layerDef);\n if (layer) {\n const adapter = layer && (layer as VectorLayerAdapter);\n if (adapter.unselect) {\n adapter.unselect(findFeatureFun);\n }\n const layerId = this.getLayerId(layer);\n if (layerId) {\n const index = this._selectedLayers.indexOf(layerId);\n if (index !== -1) {\n this._selectedLayers.splice(index, 1);\n }\n }\n }\n }\n /** Remove selection from any selected selectable layer */\n unSelectLayers(): void {\n const layers = Object.values(this.allLayers());\n let l: VectorLayerAdapter;\n for (l of layers) {\n if (l.unselect) {\n l.unselect();\n }\n }\n }\n\n /**\n * Hide features from a vector layer using a callback function.\n *\n * @example\n * ```javascript\n * const layer = webMap.addLayer('GEOJSON', {data: geojson}).then((layer) => {\n * webMap.filterLayer(layer, ({feature}) => feature.id === '42');\n * });\n * ```\n *\n */\n filterLayer(\n layerDef: LayerDef,\n filter: DataLayerFilter<Feature, L>,\n ): LayerDefinition<Feature, L>[] {\n const layer = this.getLayer(layerDef);\n const adapter = layer as VectorLayerAdapter;\n if (adapter.filter) {\n return adapter.filter(filter);\n }\n return [];\n }\n\n propertiesFilter(\n layerDef: LayerDef,\n filters: PropertiesFilter,\n options?: FilterOptions,\n ): Promise<void> {\n const layer = this.getLayer(layerDef);\n if (layer) {\n const adapter = layer as VectorLayerAdapter;\n if (adapter.propertiesFilter) {\n return adapter.propertiesFilter(filters, options);\n } else if (adapter.filter) {\n this.filterLayer(adapter, (e) => {\n if (e.feature && e.feature.properties) {\n return propertiesFilter(e.feature.properties, filters);\n }\n return true;\n });\n }\n }\n return Promise.resolve();\n }\n\n removeLayerFilter(layerDef: LayerDef): void {\n const layer = this.getLayer(layerDef);\n const adapter = layer as VectorLayerAdapter;\n if (adapter.removeFilter) {\n adapter.removeFilter();\n } else if (adapter.filter) {\n adapter.filter(() => {\n return true;\n });\n }\n }\n\n /**\n * Sets the GeoJSON data for given vector layer.\n *\n * @example\n * ```javascript\n * const layer = webMap.addLayer('GEOJSON').then((layer) => {\n * webMap.setLayerData(layer, geojson);\n * });\n * ```\n */\n setLayerData(layerDef: LayerDef, data: GeoJsonObject): void | Promise<void> {\n const vectorAdapter = this.getLayer(layerDef);\n const adapter = vectorAdapter as VectorLayerAdapter;\n if (adapter) {\n if (adapter.setData) {\n return adapter.setData(data);\n } else if (adapter.clearLayer && adapter.addData) {\n adapter.clearLayer();\n return adapter.addData(data);\n }\n }\n return Promise.resolve();\n }\n\n /**\n * Push new the GeoJSON features into given vector layer.\n *\n * @example\n * ```javascript\n * const layer = webMap.addLayer('GEOJSON', {data: geojson_features_5}).then((layer) => {\n * console.log(layer.getLayers().length) // > 5;\n * webMap.addLayerData(layer, geojson_features_3);\n * console.log(layer.getLayers().length) // > 8;\n * });\n * ```\n */\n addLayerData(layerDef: LayerDef, data: GeoJsonObject): void {\n const layerMem = this.getLayer(layerDef);\n const adapter = layerMem as VectorLayerAdapter;\n if (adapter.addData) {\n adapter.addData(data);\n }\n }\n\n /**\n * Remove from vector layer all features.\n * it is possible to remove only some objects if you specify a callback function.\n *\n * @example\n * ```javascript\n * const layer = webMap.addLayer('GEOJSON', {data: geojson}).then((layer) => {\n * webMap.clearLayerData(layer, (feture) => feture.id === 42);\n * webMap.clearLayerData(layer);\n * });\n * ```\n */\n clearLayerData(layerDef: LayerDef, cb?: (feature: Feature) => boolean): void {\n const layerMem = this.getLayer(layerDef);\n const adapter = layerMem as VectorLayerAdapter;\n if (adapter && adapter.clearLayer) {\n adapter.clearLayer(cb);\n }\n }\n\n setLayerPaint(layerDef: LayerDef, paint?: Paint | null): void {\n const layer = this.getLayer(layerDef);\n if (paint && layer && layer.setPaint) {\n layer.setPaint(paint);\n }\n }\n setLayerSelectedPaint(layerDef: LayerDef, paint?: Paint | null): void {\n const layer = this.getLayer(layerDef);\n if (paint && layer && layer.setSelectedPaint) {\n layer.setSelectedPaint(paint);\n }\n }\n updateLayerPaint(layerDef: LayerDef, paint: Partial<Paint>): void {\n const layer = this.getLayer(layerDef);\n if (paint && layer && layer.updatePaint) {\n layer.updatePaint(paint);\n }\n }\n updateLayerSelectedPaint(layerDef: LayerDef, paint: Partial<Paint>): void {\n const layer = this.getLayer(layerDef);\n if (paint && layer && layer.updateSelectedPaint) {\n layer.updateSelectedPaint(paint);\n }\n }\n\n getAttributions(options: GetAttributionsOptions): string[] {\n const attributions: string[] = [];\n for (const l in this._layers) {\n const layerCache = this._layers[l];\n const onlyVisible =\n options.onlyVisible !== undefined ? options.onlyVisible : true;\n let useLayerAttr = onlyVisible ? layerCache.options.visibility : true;\n if (useLayerAttr && options.onlyBaselayer) {\n useLayerAttr = this._baselayers.includes(l);\n }\n if (useLayerAttr) {\n const attr = layerCache.options && layerCache.options.attribution;\n if (attr) {\n attributions.push(attr);\n }\n }\n }\n\n return attributions;\n }\n\n getActiveBaseLayer(): MainLayerAdapter<M, any, AdapterOptions> | undefined {\n const visibleLayerBaseLayer = this.getBaseLayers().find((x) => {\n return this.isLayerVisible(x);\n });\n if (visibleLayerBaseLayer) {\n return this.getLayer(visibleLayerBaseLayer);\n }\n }\n\n addTileJsonLayer(\n tileJson: TileJson,\n ): Promise<MainLayerAdapter<M, any, TileAdapterOptions>> {\n // if (this.mapAdapter.createTileJsonlayer) {\n // } else {\n\n const url = tileJson.tiles[0];\n return this.addLayer('TILE', {\n url,\n maxZoom: tileJson.maxzoom,\n minZoom: tileJson.minzoom,\n subdomains: tileJson.scheme,\n attribution: tileJson.attribution,\n }) as Promise<MainLayerAdapter<M, any, TileAdapterOptions>>;\n }\n\n /** @internal */\n _emitLayerEvent(name: keyof E, id: string, options?: unknown) {\n const name_ = String(name);\n if (defined(id) && name_.startsWith('layer:')) {\n const specificLayerName = name_.replace('layer:', 'layer-' + id + ':');\n // @ts-ignore can't paste template literal key for interface\n this.emitter.emit(specificLayerName, options);\n }\n // @ts-ignore\n this.emitter.emit(name, options);\n }\n\n private async _onLayerClick(options: OnLayerMouseOptions) {\n const id = options.layer.id;\n this._emitLayerEvent('layer:click', id || '', options);\n return Promise.resolve(options);\n }\n\n private async _onLayerSelect(options: OnLayerSelectOptions) {\n this._emitLayerEvent('layer:select', options.layer.id || '', options);\n return Promise.resolve(options);\n }\n\n private _updateGeoJsonOptions(options: GeoJsonAdapterOptions) {\n const {\n onSelect,\n onLayerSelect,\n onClick,\n onLayerClick,\n onMouseOut,\n onMouseOver,\n } = options;\n const onLayerClickFromOpt = onClick || onLayerClick;\n options.onClick = (e) => {\n if (onLayerClickFromOpt) {\n onLayerClickFromOpt(e);\n }\n return this._onLayerClick(e);\n };\n\n options.onMouseOut = (e) => {\n const id = e.layer.id;\n onMouseOut && onMouseOut(e);\n if (defined(id)) {\n this._emitLayerEvent(`layer:mouseout`, id, e);\n }\n };\n\n options.onMouseOver = (e) => {\n const id = e.layer.id;\n onMouseOver && onMouseOver(e);\n if (defined(id)) {\n this._emitLayerEvent(`layer:mouseover`, id, e);\n }\n };\n\n // TODO: remove backward compatibility for onLayerSelect\n const onLayerSelectFromOpt = onSelect || onLayerSelect;\n options.onSelect = (e) => {\n if (onLayerSelectFromOpt) {\n onLayerSelectFromOpt(e);\n }\n return this._onLayerSelect(e);\n };\n\n if (!options.nativePaint) {\n if (this.options.paint) {\n options.paint = preparePaint({\n paint: options.paint || {},\n defaultPaint: this.options.paint,\n getPaintFunctions: this.getPaintFunctions,\n });\n }\n if (options.selectedPaint && this.options.selectedPaint) {\n options.selectedPaint = preparePaint({\n paint: options.selectedPaint,\n defaultPaint: this.options.selectedPaint,\n getPaintFunctions: this.getPaintFunctions,\n });\n }\n }\n }\n}\n","import type {\n ToggleControlOptions,\n ToggleControl,\n ButtonControlOptions,\n} from '../../interfaces/MapControl';\n\n/**\n * The toggle is a button with status.\n * @internal\n */\nexport function createToggleControl<C = any>(\n createButtonControl: (options: ButtonControlOptions) => C,\n options: ToggleControlOptions,\n): C & ToggleControl {\n const link = document.createElement('div');\n\n let status = false;\n if (options.getStatus) {\n status = options.getStatus();\n } else if (options.status) {\n status = options.status;\n }\n\n const title = options.title || '';\n const html = options.html;\n\n function setTitle() {\n if (title) {\n if (typeof title === 'string') {\n link.title = title;\n } else {\n link.title = status ? title.on : title.off;\n }\n link.setAttribute('aria-label', link.title);\n }\n }\n setTitle();\n\n // DomEvent.disableClickPropagation(link);\n // DomEvent.on(link, 'click', DomEvent.stop);\n\n function _setHtml(htmlDef: string | HTMLElement) {\n if (htmlDef instanceof HTMLElement) {\n link.innerHTML = '';\n link.appendChild(htmlDef);\n } else if (typeof htmlDef === 'string') {\n link.innerHTML = htmlDef;\n }\n }\n function setHtml() {\n if (html) {\n if (typeof html === 'string' || html instanceof HTMLElement) {\n _setHtml(html);\n } else {\n _setHtml(status ? html.on : html.off);\n }\n link.setAttribute('aria-label', link.title);\n }\n }\n setHtml();\n\n function _setClass(addClass: string, impact: boolean) {\n addClass.split(' ').forEach((x) => {\n if (impact) {\n link.classList.add(x);\n } else {\n link.classList.remove(x);\n }\n });\n }\n\n function setClass() {\n if (options.addClassOn) {\n _setClass(options.addClassOn, status);\n }\n if (options.addClassOff) {\n _setClass(options.addClassOff, !status);\n }\n }\n\n if (options.addClass) {\n _setClass(options.addClass, true);\n }\n setClass();\n\n const changeStatus = (status_?: boolean) => {\n if (status_ !== undefined) {\n status = status_;\n }\n setHtml();\n setTitle();\n setClass();\n };\n\n const onClick = (status_?: boolean) => {\n status = status_ !== undefined ? status_ : !status;\n if (options.onClick) {\n const afterClick = options.onClick(status);\n Promise.resolve(afterClick)\n .then(() => changeStatus())\n .catch(() => (status = !status));\n } else {\n changeStatus();\n }\n };\n\n const buttonControl = createButtonControl({\n html: link,\n onClick,\n }) as C & ToggleControl;\n buttonControl.onClick = onClick;\n buttonControl.changeStatus = changeStatus;\n return buttonControl;\n}\n","import { WebMapLayers } from './WebMapLayers';\nimport { createToggleControl } from './components/controls/createToggleControl';\n\nimport type { WebMapMain } from './WebMapMain';\nimport type { MapOptions } from './interfaces/MapOptions';\nimport type { WebMapEvents } from './interfaces/Events';\nimport type {\n MapControl,\n CreateControlOptions,\n ButtonControlOptions,\n ToggleControlOptions,\n ToggleControl,\n MapControls,\n} from './interfaces/MapControl';\nimport type { ControlPosition } from './interfaces/MapAdapter';\n\n/**\n * Collection of methods for managing map controls\n */\nexport class WebMapControls<\n M = any,\n L = any,\n C extends object = any,\n E extends WebMapEvents = WebMapEvents,\n O extends MapOptions = MapOptions,\n >\n extends WebMapLayers<M, L, E, O>\n implements WebMapLayers, WebMapMain\n{\n static controls: {\n [name: string]: (webMap: WebMapControls, options?: any) => any;\n } = {\n CONTROL: (\n webMap: WebMapControls,\n options: {\n control: MapControl;\n options?: CreateControlOptions;\n },\n ) => {\n return webMap.createControl(options.control, options.options);\n },\n BUTTON: (webMap: WebMapControls, options: ButtonControlOptions) => {\n return webMap.createButtonControl(options);\n },\n TOGGLE: (webMap: WebMapControls, options: ToggleControlOptions) => {\n return webMap.createToggleControl(options);\n },\n };\n\n private _loadControlQueue: {\n [key in ControlPosition]: (() => Promise<any>)[];\n } = {\n 'top-right': [],\n 'bottom-right': [],\n 'top-left': [],\n 'bottom-left': [],\n };\n private _isControlLoading: { [key in ControlPosition]: boolean } = {\n 'top-right': false,\n 'bottom-right': false,\n 'top-left': false,\n 'bottom-left': false,\n };\n\n async addControl<K extends keyof MapControls>(\n controlDef: K | C,\n position: ControlPosition,\n options?: MapControls[K],\n ): Promise<any> {\n let control: C | undefined;\n position = position ?? 'top-left';\n if (typeof controlDef === 'string') {\n control = this.getControl(controlDef, options);\n } else {\n control = controlDef as C;\n }\n if (control) {\n return new Promise<() => Promise<any>>((resolve) => {\n const promise = async () => {\n const _control = await control;\n const c = this.mapAdapter.addControl(_control, position);\n resolve(c);\n };\n this._setControlQueue(position, promise);\n });\n }\n }\n\n /**\n * Creating a universal map layout control element. Can be used with any map adapter.\n *\n * @example\n * ```javascript\n * const control = webMap.createControl({\n * onAdd() {\n * return document.createElement('div');\n * }\n * });\n * ```\n */\n async createControl(\n control: MapControl,\n options?: CreateControlOptions,\n ): Promise<C | undefined> {\n await this.onLoad('build-map');\n if (this.mapAdapter.createControl) {\n return this.mapAdapter.createControl(control, options);\n }\n }\n\n async createButtonControl(\n options: ButtonControlOptions,\n ): Promise<C | undefined> {\n await this.onLoad('build-map');\n if (this.mapAdapter.createButtonControl) {\n return this.mapAdapter.createButtonControl(options);\n }\n }\n\n /**\n * Create any toggler control button\n * @param options - Options for control layout customization and assigning a callback function\n *\n * @example\n * ```javascript\n * const toggleControl = ngwMap.createToggleControl({\n * getStatus: () => webMap.isLayerVisible('any-layer-id'),\n * onClick: (status) => ngwMap.toggleLayer('webmap', status),\n * html: {\n * on: 'ON',\n * off: 'OFF'\n * },\n * title: 'Toggle layer visibility'\n * });\n * webMap.addControl(toggleControl, 'top-right');\n * ```\n * {@link http://code.nextgis.com/demo-examples-toggle-control | Toggle button control example}\n */\n async createToggleControl(\n options: ToggleControlOptions,\n ): Promise<(C & ToggleControl) | undefined> {\n await this.onLoad('build-map');\n if (this.mapAdapter.createToggleControl) {\n return this.mapAdapter.createToggleControl(options);\n } else {\n if (this.mapAdapter.createButtonControl) {\n return createToggleControl<C>(\n this.mapAdapter.createButtonControl,\n options,\n );\n }\n }\n }\n\n /**\n *\n * @param control - Instance of WEB-GIS framework control.\n * What is returned by the {@link createControl | create} method\n */\n removeControl(control: C): void {\n if ('remove' in control) {\n // @ts-ignore TODO: ugly code, rewrite\n control.remove();\n } else if (this.mapAdapter.removeControl) {\n Promise.resolve(control).then((c) => {\n this.mapAdapter.removeControl(c);\n });\n }\n }\n\n /**\n * Get instance of registered control\n * @param control - Any registered control string name\n * @param options - Custom control options\n */\n getControl<K extends keyof MapControls>(\n control: K,\n options?: MapControls[K],\n ): C | undefined {\n const engine = this.mapAdapter.controlAdapters[control];\n if (engine) {\n return new engine(options);\n } else {\n const createFun = WebMapControls.controls[control];\n if (createFun) {\n return createFun(this, options);\n }\n }\n }\n\n getControlContainer(): HTMLElement | undefined {\n if (this.mapAdapter.getControlContainer) {\n return this.mapAdapter.getControlContainer();\n }\n }\n\n private _setControlQueue(position: ControlPosition, cb: () => Promise<any>) {\n this._loadControlQueue[position].push(cb);\n if (!this._isControlLoading[position]) {\n this._applyControls(position);\n }\n }\n\n private async _applyControls(position: ControlPosition) {\n if (this._loadControlQueue[position].length) {\n this._isControlLoading[position] = true;\n const controlCb = this._loadControlQueue[position][0];\n await controlCb();\n this._loadControlQueue[position].splice(0, 1);\n this._applyControls(position);\n } else {\n this._isControlLoading[position] = false;\n }\n }\n}\n","import type { WebMap } from './WebMap';\n\nconst WEB_MAP_CONTAINER: Record<number, any> = {};\n\nexport function getWebMap<T extends WebMap = WebMap>(id: number): T {\n return WEB_MAP_CONTAINER[id];\n}\n\nexport function setWebMap(id: number, webMap: WebMap) {\n WEB_MAP_CONTAINER[id] = webMap;\n}\n","/**\n * @privateRemarks\n * Since it was not possible to split the code through mixins, inheritance was used.\n * The `ts-mixin` plugin worked fine, but led to errors in IE.\n *\n * Now inheritance is as follow:\n * BaseWebMap \\> WebMapLayers \\> WebMap\n *\n * Will need to be done this way:\n * ```javascript\n * class WebMap extend mixin(WebMapLayers, WebMapControls) {}\n * ```\n *\n * This approach can also be considered\n * ```javascript\n * class WebMap {\n * layers: WebMapLayers;\n * controls WebMapControls\n * }\n * ```\n * and then\n *\n * const webMap = new WebMap(...);\n * webMap.layers.addLayer(...)\n *\n * looks good, but will add difficulty in inheriting from WebMap\n *\n * old:\n * ```javascript\n * class NgwMap extends WebMap {\n * addLayer(...) {\n * super.addLayer(...)\n * }\n * }\n * ```\n * new:\n * ```javascript\n * class NgwLayers extends WebMapLayers {\n * addLayer(...) {\n * super.addLayer(...)\n * }\n * }\n *\n * class NgwMap extends WebMap {\n * layersClass = NgwLayers\n * }\n * ```\n * ...and there will be compatibility issues\n */\n\nimport { WebMapMain } from './WebMapMain';\nimport { WebMapControls } from './WebMapControls';\n\nimport type { MapOptions } from './interfaces/MapOptions';\nimport type { ControlOptions } from './interfaces/MapControl';\nimport type { WebMapEvents } from './interfaces/Events';\nimport type { WebMapLayers } from './WebMapLayers';\nimport { getWebMap, setWebMap } from './container';\n\n/**\n * The core component for managing map adapters.\n * It contains methods for adding and manipulation with\n * {@link WebMapMain | map}, {@link WebMapLayers | layers} and {@link WebMapControls | controls}.\n *\n * @example\n * ```javascript\n * import { WebMap } from '@nextgis/webmap';\n * import MapAdapter from '@nextgis/ol-map-adapter';\n *\n * const webMap = new WebMap({\n * mapAdapter: new MapAdapter(),\n * target: 'map',\n * });\n * ```\n *\n * @typeParam M - Interactive Map used in the adapter\n * @typeParam L - Layer\n * @typeParam C - Control\n * @typeParam E - Events\n *\n */\nexport class WebMap<\n M = any,\n L = any,\n C extends object = any,\n E extends WebMapEvents = WebMapEvents,\n O extends MapOptions = MapOptions,\n >\n extends WebMapControls<M, L, C, E, O>\n implements WebMapControls, WebMapLayers, WebMapMain\n{\n constructor(mapOptions: O) {\n super(mapOptions);\n this._addControls();\n setWebMap(this.id, this);\n }\n\n static get<T extends WebMap = WebMap>(id: number): T {\n return getWebMap<T>(id);\n }\n\n /**\n * @internal\n */\n protected async _addLayerProviders(): Promise<void> {\n for await (const kit of this._starterKits) {\n if (kit.getLayerAdapters) {\n const adapters = await kit.getLayerAdapters.call(kit);\n if (adapters) {\n for await (const adapter of adapters) {\n const newAdapter = await adapter.createAdapter(this);\n if (newAdapter) {\n this.mapAdapter.layerAdapters[adapter.name] = newAdapter;\n }\n }\n }\n }\n }\n }\n\n /**\n * @internal\n */\n protected async _onLoadSync(): Promise<void> {\n for await (const kit of this._starterKits) {\n if (kit.onLoadSync) {\n try {\n await kit.onLoadSync.call(kit, this);\n } catch (er) {\n console.error(er);\n }\n }\n }\n }\n\n private _addControls(): void {\n if (this.options.controls) {\n this.options.controls.forEach((x) => {\n let controlAdapterName = x;\n let controlOptions: ControlOptions = {};\n if (typeof x === 'string' && this.options.controlsOptions) {\n if (this.options.controlsOptions[x]) {\n controlOptions = this.options.controlsOptions[x];\n if (controlOptions.control !== undefined) {\n controlAdapterName = controlOptions.control;\n }\n }\n }\n const { position, ...options } = controlOptions;\n this.addControl(controlAdapterName, position || 'top-left', options);\n });\n }\n this._emitStatusEvent('controls:create');\n }\n}\n","export function getDefaultControls(): string[] {\n return ['ZOOM', 'ATTRIBUTION'];\n}\n","/**\n * The library that allows to use a single interface for managing various interactive map frameworks.\n *\n * @remarks\n * The following adapters are available:\n * {@link https://github.com/nextgis/nextgis_frontend/tree/master/packages/leaflet-map-adapter | @nextgis/leaflet-map-adapter},\n * {@link https://github.com/nextgis/nextgis_frontend/tree/master/packages/ol-map-adapter | @nextgis/ol-map-adapter},\n * {@link https://github.com/nextgis/nextgis_frontend/tree/master/packages/mapboxgl-map-adapter | @nextgis/mapbox-map-adapter}\n * and experimental {@link https://github.com/nextgis/nextgis_frontend/tree/master/packages/cesium-map-adapter | @nextgis/cesium-map-adapter}.\n *\n * @example\n * ```javascript\n * import { WebMap } from \"@nextgis/webmap\";\n *\n * import \"./leaflet-style-override.css\";\n * import MapAdapter from \"@nextgis/leaflet-map-adapter\";\n * // OR\n * // import 'ol/ol.css';\n * // import MapAdapter from '@nextgis/ol-map-adapter';\n * // OR\n * // import 'maplibre-gl/dist/maplibre-gl.css';\n * // import MapAdapter from '@nextgis/mapboxgl-map-adapter';\n *\n * const webMap = new WebMap({\n * mapAdapter: new MapAdapter(),\n * target: 'map',\n * });\n *\n * console.log(!!webMap.mapAdapter.map); // false\n * webMap.onLoad().then(() => {\n * console.log(webMap.mapAdapter.map); // true\n *\n * webMap.addLayer('GEOJSON').then((layer) => {\n * webMap.setLayerData(layer, geojson)\n * });\n * });\n * ```\n *\n * @packageDocumentation\n * @module webmap\n */\nimport { WebMap } from './WebMap';\nimport type { MapOptions } from './interfaces/MapOptions';\n\nexport { createToggleControl } from './components/controls/createToggleControl';\n\nexport {\n detectGeometryType,\n findMostFrequentGeomType,\n} from './utils/geometryTypes';\nexport { getDefaultControls } from './utils/getDefaultControls';\nexport { updateGeoJsonAdapterOptions } from './utils/updateGeoJsonAdapterOptions';\n\nexport { getWebMap } from './container';\n\nexport * from './WebMapLayers';\nexport * from './WebMapControls';\nexport * from './WebMapMain';\n\nexport * from './interfaces/Events';\nexport * from './interfaces/BaseTypes';\nexport * from './interfaces/MapOptions';\nexport * from './interfaces/MapAdapter';\nexport * from './interfaces/MapControl';\nexport * from './interfaces/StarterKit';\nexport * from './interfaces/LayerAdapter';\nexport * from './interfaces/RuntimeParams';\n\nexport { WebMap };\n\nexport async function createWebMap(options: MapOptions): Promise<WebMap> {\n const webMap = new WebMap(options);\n return webMap.onLoad();\n}\n","import { objectDeepEqual, objectRemoveEmpty, full } from '@nextgis/utils';\n\ntype CacheValue<T> = T;\ntype CacheMatchProps<T> = Record<keyof T, T[keyof T]>;\n\ninterface CacheItem<T = any, O = any> {\n key: string;\n value: CacheValue<T>;\n props?: CacheMatchProps<O>;\n /** @deprecated use {@link CacheItem.props} instead */\n options?: CacheMatchProps<O>;\n}\n\nexport interface CacheOptions {\n /**\n * Cache Scope Separator\n * @defaultValue 'default'\n */\n namespace?: string;\n}\n\n/**\n * @example\n * ```javascript\n * const cache1 = new Cache();\n * cache1.add('foo', 'value');\n *\n * const cache2 = new Cache();\n * cache2.match('foo'); // value\n *\n * const cache3 = new Cache({ namespace: 'foo' });\n * cache3.match('foo'); // undefined\n * ```\n *\n * @example\n * ```javascript\n * let COUNTER = 0;\n * const createPromise = () => new Promise((res) => {\n * COUNTER++\n * setTimeout(() => res('Ok'), 300)\n * });\n *\n * const cache = new Cache();\n * for (let i = 0; i < 10; i++) {\n * cache.add('foo', createPromise).then((data) => {\n * console.log(data); // 'Ok'\n * });\n * }\n * console.log(COUNTER); // 1\n * ```\n */\nexport class Cache<\n V = any,\n O extends Record<string, unknown> = Record<string, unknown>,\n> {\n private static instance: Record<\n string,\n Cache<unknown, Record<string, unknown>>\n > = {};\n private readonly cache: CacheItem<V, O>[] = [];\n\n constructor(options: CacheOptions = {}) {\n const namespace = options.namespace ?? 'default';\n if (Cache.instance[namespace]) {\n return Cache.instance[namespace] as Cache<V, O>;\n }\n Cache.instance[namespace] = this;\n return this;\n }\n\n clean(): void {\n this.cache.length = 0;\n }\n\n all(): CacheItem<V, O>[] {\n return this.cache;\n }\n\n /**\n * Caching only a non-empty value.\n *\n * Useful for get or create strategy\n * @example\n * ```javascript\n * const cache = new Cache();\n * const getItemFunc = () => fetch(url).then((data) => {\n * return data.json(); // undefined\n * });\n * const item = await cache.addFull('foo', getItemFunc);\n * if (!item) {\n * await createItem(); // 'New item'\n * }\n *\n * // somewhere else in the code\n * const item = await cache.addFull('foo', getItemFunc).then((resp) => {\n * console.log(resp); // 'New item'\n * })\n *\n * ```\n */\n addFull(\n key: string,\n valueToSet: CacheValue<V> | (() => CacheValue<V>),\n props?: CacheMatchProps<O>,\n ): CacheValue<V> {\n return this.add(key, valueToSet, props, true);\n }\n\n add(\n key: string,\n valueToSet: CacheValue<V> | (() => CacheValue<V>),\n props?: CacheMatchProps<O>,\n onlyFull?: boolean,\n ): CacheValue<V> {\n const exist = this._find(key, props);\n if (!exist) {\n let value: CacheValue<V>;\n if (valueToSet instanceof Function) {\n value = valueToSet();\n } else {\n value = valueToSet;\n }\n const props_ =\n props && JSON.parse(JSON.stringify(objectRemoveEmpty(props)));\n\n const cacheItem: CacheItem<V, O> = {\n key,\n value,\n props: props_,\n // TODO: remove backward compatibility use only props\n options: props_,\n };\n if (onlyFull && !full(value)) {\n return value;\n }\n this.cache.push(cacheItem);\n if (value instanceof Promise) {\n value.catch((er) => {\n this.delete(key, props);\n throw er;\n });\n if (onlyFull) {\n value.then((x) => {\n if (!full(x)) {\n this.delete(key, props);\n }\n return x;\n });\n }\n return value;\n }\n return value;\n } else {\n return exist.value;\n }\n }\n\n match(key: string, props?: CacheMatchProps<O>): CacheValue<V> | undefined {\n const cacheRecord = this._find(key, props);\n\n if (cacheRecord) {\n return cacheRecord.value;\n }\n }\n\n matchAll(key?: string, props?: CacheMatchProps<O>): CacheValue<V>[] {\n if (key) {\n return this.cache\n .filter((x) => this._filter(x, key, props))\n .map((x) => x.value);\n }\n return this.cache.map((x) => x.value);\n }\n\n delete(item: CacheItem): void;\n delete(key: string, props?: CacheMatchProps<O>): void;\n delete(keyOrItem: string | CacheItem, props?: CacheMatchProps<O>): void {\n let exist: CacheItem[] = [];\n if (typeof keyOrItem === 'string') {\n exist = this.cache.filter((x) => this._filter(x, keyOrItem, props));\n } else {\n exist.push(keyOrItem);\n }\n for (const e of exist) {\n const index = this.cache.indexOf(e);\n this.cache.splice(index, 1);\n }\n }\n\n private _find(\n key: string,\n props?: CacheMatchProps<O>,\n ): CacheItem<V> | undefined {\n return this.cache.find((x) => this._filter(x, key, props));\n }\n\n private _filter(\n item: CacheItem,\n key: string,\n props?: CacheMatchProps<O>,\n ): boolean {\n if (item.key === key) {\n if (props) {\n // TODO: remove backward compatibility\n const itemProps = item.props || item.options;\n return objectDeepEqual(itemProps || {}, objectRemoveEmpty(props));\n }\n return true;\n }\n return false;\n }\n}\n","/**\n * Caching for asynchronous functions\n *\n * @packageDocumentation\n * @module cache\n */\nimport { Cache } from './Cache';\n\nexport default Cache;\n","/**\n * Thrown when...\n */\nexport class NetworkError extends Error {\n name = 'NetworkError';\n\n constructor(url: string) {\n super();\n Object.setPrototypeOf(this, NetworkError.prototype);\n this.message = `Unable to request ${url}.\n Possibly invalid NGW URL entered or CORS not configured to get request from ${location.origin}`; // /control-panel/cors\n }\n}\n","import { NgwExceptions } from '../interfaces';\n\n/**\n * Thrown when...\n */\nexport class NgwError extends Error {\n name = 'NgwError';\n\n title!: string;\n message!: string;\n detail!: string;\n exception!: NgwExceptions;\n status_code!: number | 404 | 500;\n data?: Record<string, any>;\n guru_meditation!: string;\n\n constructor(er?: Partial<NgwError>) {\n super();\n Object.assign(this, er);\n Object.setPrototypeOf(this, NgwError.prototype);\n }\n}\n","export function isObject(val: unknown): val is Record<string | number, any> {\n return Object.prototype.toString.call(val) === '[object Object]';\n}\n","import {\n RequestOptions as NgwRequestOptions,\n RequestMethods,\n} from '../interfaces';\nimport { NetworkError } from '../errors/NetworkError';\nimport { NgwError } from '../errors/NgwError';\nimport { isError } from '../errors/isError';\nimport { isObject } from './isObject';\n\n// readyState\n// Holds the status of the XMLHttpRequest.\n// 0: request not initialized\n// 1: server connection established\n// 2: request received\n// 3: processing request\n// 4: request finished and response is ready\n\n// status\n// 200: \"OK\"\n// 201 \"Created\"\tThe request has been fulfilled, and a new resource is created\n// 403: \"Forbidden\"\n// 404: \"Page not found\"\n// 500: \"Internal Server Error\"\n// For a complete list go to the Http Messages Reference\n\ntype LoadData = (\n url: string,\n callback: (...args: any[]) => any,\n options: NgwRequestOptions<RequestMethods> | undefined,\n error: (reason?: any) => void,\n onCancel: (cancelHandler: () => void) => void,\n) => void;\n\nlet loadData: LoadData;\n// @ts-ignore\nif (__BROWSER__) {\n loadData = (\n url: string,\n callback: (...args: any[]) => any,\n options: NgwRequestOptions = {},\n error: (reason?: any) => void,\n onCancel: (cancelHandler: () => void) => void,\n ): void => {\n options.method = options.method || 'GET';\n\n const xhr = new XMLHttpRequest();\n xhr.open(options.method || 'GET', url, true); // true for asynchronous\n\n if (options.responseType === 'blob') {\n xhr.responseType = options.responseType;\n }\n const getResponseText = () => {\n try {\n return JSON.parse(xhr.responseText);\n } catch (er) {\n return xhr.responseText;\n }\n };\n const processingResponse = (forError = false) => {\n const cb = forError ? error : callback;\n if (options.responseType === 'blob') {\n cb(xhr.response);\n } else {\n if (xhr.responseText) {\n cb(getResponseText());\n } else {\n error({ message: '' });\n }\n }\n };\n xhr.onload = () => {\n if ([401, 403, 404, 422, 500].indexOf(xhr.status) !== -1) {\n error(new NgwError(getResponseText()));\n }\n processingResponse();\n };\n\n // xhr.onreadystatechange = () => {\n // if (\n // (xhr.readyState === 4 && xhr.status === 200) ||\n // (xhr.readyState === 3 && xhr.status === 201)\n // ) {\n // processingResponse();\n // } else if (xhr.readyState === 3 && xhr.status === 400) {\n // processingResponse();\n // } else if (xhr.readyState === 4 && xhr.status === 500) {\n // processingResponse();\n // } else if (xhr.readyState === 4 && xhr.status === 401) {\n // error(xhr.statusText);\n // } else if (xhr.readyState === 4) {\n // error('request error');\n // }\n // };\n\n xhr.onerror = (er) => {\n if (xhr.status === 0) {\n error(new NetworkError(url));\n } else {\n error(er);\n }\n };\n\n xhr.upload.onprogress = function (e) {\n if (e.lengthComputable) {\n const percentComplete = (e.loaded / e.total) * 100;\n if (options.onProgress) {\n options.onProgress(percentComplete, e);\n }\n // console.log(percentComplete + '% uploaded');\n }\n };\n\n const headers = options.headers;\n if (headers) {\n for (const h in headers) {\n const header = headers[h];\n if (typeof header === 'string') {\n xhr.setRequestHeader(h, header);\n }\n }\n }\n if (options.withCredentials !== undefined) {\n xhr.withCredentials = options.withCredentials;\n }\n\n let data: FormData | any;\n if (options.file) {\n data = new FormData();\n data.append('file', options.file);\n if (options.data) {\n for (const d in options.data) {\n data.append(d, data[d]);\n }\n }\n } else {\n data = options.data\n ? typeof options.data === 'string'\n ? options.data\n : JSON.stringify(options.data)\n : null;\n }\n if (onCancel) {\n onCancel(() => {\n xhr.abort();\n });\n }\n xhr.send(data);\n };\n} else {\n const url = require('url');\n const http = require('http');\n const https = require('https');\n const FormData = require('form-data');\n\n const adapterFor = (inputUrl: string) => {\n const adapters: Record<string, any> = {\n 'http:': http,\n 'https:': https,\n };\n const protocol = url.parse(inputUrl).protocol || 'https:';\n return adapters[protocol];\n };\n\n loadData = (\n url: string,\n callback: (...args: any[]) => any,\n options: NgwRequestOptions<RequestMethods> = {},\n error: (reason?: any) => void,\n onCancel: (cancelHandler: () => void) => void,\n ): Promise<unknown> => {\n const { file, headers, method, data, responseType } = options;\n\n const request = new Promise((resolve, reject) => {\n const adapter = adapterFor(url);\n if (adapter) {\n const requestOpt = {\n headers: headers || {},\n method,\n };\n const body = typeof data === 'string' ? data : JSON.stringify(data);\n // https://stackoverflow.com/questions/35589109/node-http-delete-request-no-longer-works-after-upgrading-from-0-10-40\n let form;\n let uploadedFile = file;\n if (file) {\n const fileMeta = {};\n if (\n isObject(file) &&\n 'file' in file &&\n ('filename' in file || 'name' in file)\n ) {\n const {\n file: file_,\n name,\n ...fileMeta_\n } = file as Record<string, any>;\n if (name && !fileMeta_.filename) {\n fileMeta_.filename = name;\n }\n Object.assign(fileMeta, fileMeta_);\n uploadedFile = file_ as File;\n }\n form = new FormData();\n form.append('file', uploadedFile, fileMeta);\n if (data) {\n for (const d in data) {\n form.append(d, data[d]);\n }\n }\n Object.assign(requestOpt.headers, {\n // 'content-length': form.getLengthSync(),\n ...form.getHeaders(),\n });\n }\n\n if (body !== undefined) {\n Object.assign(requestOpt.headers, {\n 'content-type': 'application/json',\n 'content-length': Buffer.byteLength(body),\n });\n }\n const req = adapter.request(url, requestOpt, (resp: any) => {\n let data = '';\n resp.on('data', (chunk: any) => {\n data += chunk;\n });\n resp.on('end', () => {\n if (data) {\n if (responseType === 'blob') {\n resolve(data);\n } else {\n let json: Record<string, any> | undefined;\n try {\n json = JSON.parse(data);\n if (json && json.status_code && json.status_code) {\n reject(json.message);\n }\n } catch (er) {\n reject(er);\n }\n if (json !== undefined) {\n if (isError(json)) {\n reject('extractError(json)');\n } else {\n resolve(json);\n }\n }\n }\n }\n reject('no data');\n });\n });\n if (form) {\n form.pipe(req);\n }\n req.on('error', (err: any) => {\n reject(err);\n });\n if (body) {\n req.write(body);\n }\n onCancel(() => {\n req.abort();\n });\n req.end();\n } else {\n throw new Error(`Given URL '${url}' is not correct`);\n }\n });\n return request\n .then((data) => {\n if (callback) {\n callback(data);\n }\n return data;\n })\n .catch((er) => {\n if (error) {\n error(er);\n } else {\n throw new Error(er);\n }\n });\n };\n}\n\nexport { loadData };\n","// https://github.com/Leaflet/Leaflet/blob/b507e21c510b53cd704fb8d3f89bb46ea925c8eb/src/core/Util.js#L165\nconst templateRe = /\\{ *([\\w_-]+) *\\}/g;\n\nexport function template(str: string, data: { [param: string]: any }): string {\n return str.replace(templateRe, (s, key) => {\n let value = data[key];\n\n if (value === undefined) {\n throw new Error('No value provided for letiable ' + s);\n } else if (typeof value === 'function') {\n value = value(data);\n }\n return value;\n });\n}\n","import CancelablePromise from '@nextgis/cancelable-promise';\nimport { template } from './template';\nimport type { NgwConnector } from '../NgwConnector';\nimport type {\n RequestItemKeys,\n RequestItemsParams,\n RequestOptions,\n} from '../interfaces';\nimport type { RequestItemsParamsMap } from '../types/RequestItemsParamsMap';\n\ninterface ApiRequestOptions<K extends keyof RequestItemsParamsMap> {\n name: string;\n connector: NgwConnector;\n params: RequestItemsParams<K>;\n requestOptions: RequestOptions;\n}\n\nexport function apiRequest<\n K extends keyof RequestItemsParamsMap,\n P extends RequestItemKeys = RequestItemKeys,\n>(opt: ApiRequestOptions<K>): CancelablePromise<P[K]> {\n const params = opt.params;\n return new CancelablePromise((resolve, reject) => {\n opt.connector\n .connect()\n .then((apiItems) => {\n let apiItem = apiItems && apiItems[opt.name];\n if (apiItem) {\n apiItem = [...apiItem];\n let url = apiItem.shift();\n if (apiItem.length) {\n const replaceParams: {\n [num: number]: string;\n } = {};\n for (let fry = 0; fry < apiItem.length; fry++) {\n const arg = apiItem[fry];\n replaceParams[fry] = '{' + arg + '}';\n if (params[arg] === undefined) {\n throw new Error(\n '`' + arg + '`' + ' url api argument is not specified',\n );\n }\n }\n if (url) {\n url = template(url, replaceParams);\n }\n }\n // Transfer part of the parameters from `params` to the URL string\n if (params) {\n const paramArray = [];\n const paramList = params.paramList;\n if (Array.isArray(paramList)) {\n delete params.paramList;\n paramList.forEach((x) => {\n paramArray.push(`${x[0]}=${x[1]}`);\n });\n }\n for (const p in params) {\n if (apiItem.indexOf(p) === -1) {\n paramArray.push(`${p}=${params[p]}`);\n }\n }\n if (paramArray.length) {\n url = url + '?' + paramArray.join('&');\n }\n }\n if (url) {\n resolve(opt.connector.makeQuery(url, params, opt.requestOptions));\n } else {\n reject(new Error('request url is not set'));\n }\n } else {\n resolve(undefined);\n }\n })\n .catch((er) => {\n reject(er);\n });\n });\n}\n","import { NgwError } from './NgwError';\nimport { NgwExceptions } from '../interfaces';\n\n/**\n * Thrown when ...\n */\nexport class ResourceNotFoundError extends NgwError {\n name = 'ResourceNotFoundError';\n exception: NgwExceptions = 'nextgisweb.resource.exception.ResourceNotFound';\n\n constructor(obj?: ResourceNotFoundError) {\n super(obj);\n Object.setPrototypeOf(this, ResourceNotFoundError.prototype);\n }\n}\n","import { NgwError } from './NgwError';\nimport { NgwExceptions } from '../interfaces';\n\n/**\n * Thrown when ...\n */\nexport class InsufficientPermissionsError extends NgwError {\n name = 'InsufficientPermissionsError';\n exception: NgwExceptions =\n 'nextgisweb.core.exception.InsufficientPermissions';\n\n constructor(obj: InsufficientPermissionsError) {\n super(obj);\n Object.setPrototypeOf(this, InsufficientPermissionsError.prototype);\n }\n}\n","import { NgwConnectorOptions } from './interfaces';\nimport { NgwConnector } from './NgwConnector';\nimport { objectDeepEqual } from '@nextgis/utils';\n\nexport const CONNECTORS: NgwConnector[] = [];\n\nexport function addConnector(connector: NgwConnector): void {\n CONNECTORS.push(connector);\n}\n\nexport function findConnector(\n options: NgwConnectorOptions,\n): NgwConnector | undefined {\n return CONNECTORS.find((x) => {\n if (x.options.baseUrl === options.baseUrl) {\n if (options.auth) {\n if (x.options.auth) {\n return objectDeepEqual(x.options.auth, options.auth);\n }\n } else {\n // if auth not in find options; use first connector with same url\n return true;\n }\n }\n });\n}\n\nexport function removeConnector(connector: NgwConnector): void {\n const index = CONNECTORS.indexOf(connector);\n if (index !== -1) {\n CONNECTORS.splice(index, 1);\n }\n}\n\nexport function findAndRemoveConnector(options: NgwConnectorOptions): void {\n const exist = findConnector(options);\n if (exist) {\n removeConnector(exist);\n }\n}\n","import { DeepPartial, defined } from '@nextgis/utils';\nimport { Resource } from '../types/ResourceItem';\nimport { isObject } from './isObject';\n\nconst exclude = ['description'];\n\n/**\n * @remarks\n * https://docs.nextgis.ru/docs_ngweb_dev/doc/developer/resource.html#search-resources\n *\n * ```\n * { keyname, owner_user: { id }} > { keyname, owner_user__id }\n * ```\n *\n * @param resource - Any property from NGW resource item\n */\nexport function resourceToQuery(\n resource: DeepPartial<Resource>,\n prefix = '',\n): Record<string, unknown> {\n prefix = prefix ? prefix + '__' : '';\n const query: Record<string, any> = {};\n for (const [key, value] of Object.entries(resource)) {\n if (exclude.indexOf(key) === -1) {\n if (isObject(value)) {\n if (key === 'owner_user') {\n const children = resourceToQuery(value as DeepPartial<Resource>, key);\n Object.assign(query, children);\n } else if (key === 'parent' && 'id' in value) {\n query.parent_id = value.id;\n }\n } else if (defined(value)) {\n query[prefix + key] = value;\n }\n }\n }\n return query;\n}\n","import { objectDeepEqual } from '@nextgis/utils';\nimport type { DeepPartial } from '@nextgis/utils';\nimport type { Resource } from '../types/ResourceItem';\n\nexport function resourceCompare(\n res1: DeepPartial<Resource>,\n res2: DeepPartial<Resource>,\n): boolean {\n return objectDeepEqual(res1, res2);\n}\n","import CancelablePromise from '@nextgis/cancelable-promise';\nimport { defined } from '@nextgis/utils';\nimport Cache from '@nextgis/cache';\n\nimport { resourceToQuery } from './utils/resourceToQuery';\nimport { resourceCompare } from './utils/resourceCompare';\nimport { ResourceNotFoundError } from './errors/ResourceNotFoundError';\n\nimport { isObject } from './utils/isObject';\n\nimport type { DeepPartial } from '@nextgis/utils';\nimport type { NgwConnector } from './NgwConnector';\nimport type { ResourceItem, Resource } from './types/ResourceItem';\nimport type {\n GetChildrenOfOptions,\n ResourceDefinition,\n RequestOptions,\n} from './interfaces';\n\nexport class ResourcesControl {\n cache = new Cache<\n CancelablePromise<ResourceItem | undefined>,\n { id?: number | string }\n >();\n\n constructor(private connector: NgwConnector) {}\n\n // -------------------------------------------------------------------------\n // Resource Methods\n // -------------------------------------------------------------------------\n\n /**\n * Receive resource from NGW by id, keyname or search-object parameter.\n * @param resource - Resource id, keyname or search-object\n *\n * @remarks\n * Fetching resource would be cached to speed up next call\n */\n getOne(\n resource: ResourceDefinition,\n requestOptions?: RequestOptions<'GET'>,\n ): CancelablePromise<ResourceItem | undefined> {\n const cache = new Cache();\n const forCache: { keyname?: string; id?: number } = {};\n const opt = { ...requestOptions, cache: false };\n if (typeof resource === 'string') {\n forCache.keyname = resource;\n } else if (typeof resource === 'number') {\n forCache.id = resource;\n } else if (isObject(resource)) {\n if (resource.id !== undefined) {\n forCache.id = resource.id;\n } else if (resource.keyname) {\n forCache.keyname = resource.keyname;\n }\n }\n const makeRequest = () => {\n if (typeof resource === 'string') {\n return this._fetchResourceBy({ keyname: resource }, opt);\n } else if (typeof resource === 'number') {\n return this._fetchResourceById(resource, opt);\n } else if (isObject(resource)) {\n return this._fetchResourceBy(resource, opt);\n }\n return CancelablePromise.resolve(undefined);\n };\n\n return cache.addFull('resource', makeRequest, forCache);\n }\n\n getOneOrFail(\n resource: ResourceDefinition,\n requestOptions?: RequestOptions<'GET'>,\n ): CancelablePromise<ResourceItem> {\n return this.getOne(resource, requestOptions).then((res) => {\n if (res) {\n return res;\n }\n throw new ResourceNotFoundError();\n });\n }\n\n /**\n * A fast way to retrieve resource ID for any resource definition.\n * @param resource - Any available resource definition\n *\n * @remarks\n * There are situations when exactly the resource id is needed\n * (for example, to compose the correct request to the api)\n * then this method will come in handy to facilitate the extraction of the identifier\n * if the resource is specified through a keyname or other parameters.\n */\n getId(\n resource: ResourceDefinition,\n requestOptions?: RequestOptions<'GET'>,\n ): CancelablePromise<number | undefined> {\n if (typeof resource === 'number') {\n return CancelablePromise.resolve(resource);\n } else if (typeof resource === 'string' || isObject(resource)) {\n return this.getOne(resource, requestOptions).then((res) => {\n if (res) {\n return res.resource.id;\n }\n });\n }\n return CancelablePromise.resolve(undefined);\n }\n\n /**\n * A fast way to retrieve resource ID for any resource definition.\n * @param resource - Any available resource definition\n *\n * @remarks\n * Similar with {@link NgwConnector.getResourceId | getResourceId} but rise error if resource is not exist.\n * To not make one more checks if the resource is definitely exists\n */\n getIdOrFail(\n resource: ResourceDefinition,\n requestOptions?: RequestOptions<'GET'>,\n ): CancelablePromise<number> {\n return this.getId(resource, requestOptions).then((resp) => {\n if (resp === undefined) {\n throw new Error();\n }\n return resp;\n });\n }\n\n getMany(\n resource: DeepPartial<Resource>,\n requestOptions?: RequestOptions<'GET'>,\n ): CancelablePromise<ResourceItem[]> {\n return this._resourceCacheFilter(resource).then((items) => {\n if (!items.length) {\n const query: Record<string, unknown> = {};\n if (resource.keyname) {\n query.keyname = resource.keyname;\n } else {\n Object.assign(query, resourceToQuery(resource));\n }\n return this.connector\n .get('resource.search', requestOptions, {\n serialization: 'full',\n ...query,\n })\n .then((resources) => {\n if (resources) {\n for (const x of resources) {\n this.cache.add('resource.item', CancelablePromise.resolve(x), {\n id: x.resource.id,\n });\n }\n }\n return resources;\n });\n }\n return items;\n });\n }\n\n getParent(\n resource: ResourceDefinition,\n requestOptions?: RequestOptions<'GET'>,\n ): CancelablePromise<ResourceItem | undefined> {\n return this.getOne(resource, requestOptions).then((child) => {\n if (child) {\n return this.getOne(child.resource.parent.id, requestOptions);\n }\n return CancelablePromise.resolve(undefined);\n });\n }\n\n getChildrenOf(\n resource: ResourceDefinition,\n requestOptions?: GetChildrenOfOptions,\n ): CancelablePromise<ResourceItem[]> {\n return this.getIdOrFail(resource).then((parent) =>\n this._getChildrenOf(parent, requestOptions),\n );\n }\n\n update(\n resource: ResourceDefinition,\n data: DeepPartial<ResourceItem>,\n ): CancelablePromise<ResourceItem | undefined> {\n return this.getId(resource).then((id) => {\n if (id !== undefined) {\n return this.connector.put('resource.item', { data }, { id });\n }\n });\n }\n\n /**\n * Fast way to delete resource from NGW and clean cache.\n * @param resource - Resource definition\n */\n delete(resource: ResourceDefinition): CancelablePromise<void> {\n return this.getId(resource).then((id) => {\n if (id !== undefined) {\n return this.connector.delete('resource.item', null, { id }).then(() => {\n this._cleanResourceItemCache(id);\n return undefined;\n });\n }\n });\n }\n\n private _getChildrenOf(\n parent: ResourceDefinition,\n requestOptions?: GetChildrenOfOptions,\n _items: ResourceItem[] = [],\n ): CancelablePromise<ResourceItem[]> {\n return this.connector\n .get(\n 'resource.collection',\n { cache: true, ...requestOptions },\n {\n parent,\n },\n )\n .then((items) => {\n const recursivePromises = [];\n for (const item of items) {\n this.cache.add('resource.item', CancelablePromise.resolve(item), {\n id: item.resource.id,\n });\n _items.push(item);\n if (requestOptions?.recursive && item.resource.children) {\n recursivePromises.push(\n this._getChildrenOf(item.resource.id, requestOptions, _items),\n );\n }\n }\n if (recursivePromises.length) {\n return CancelablePromise.all(recursivePromises).then(() => {\n return _items;\n });\n }\n return _items;\n });\n }\n\n private async _cleanResourceItemCache(id: number) {\n const all = this.cache.all();\n const toDelete: typeof all = [];\n for (const c of all) {\n const cid = c.options && c.options.id;\n if (['resource.item', 'resource'].includes(c.key) && cid !== undefined) {\n if (typeof cid === 'number') {\n if (cid === id) {\n toDelete.push(c);\n }\n } else {\n const rid = await this.getId(cid);\n if (rid === id) {\n toDelete.push(c);\n }\n }\n }\n }\n for (const d of toDelete) {\n this.cache.delete(d);\n }\n }\n\n private _fetchResourceById(\n id: number,\n requestOptions?: RequestOptions<'GET'>,\n ): CancelablePromise<ResourceItem | undefined> {\n const promise = () =>\n this.connector.get('resource.item', requestOptions, { id });\n\n return this.cache\n .add('resource.item', promise, {\n id,\n })\n .catch((er) => {\n if (!(er instanceof ResourceNotFoundError)) {\n throw er;\n }\n return undefined;\n });\n }\n\n private _fetchResourceBy(\n resource: DeepPartial<Resource>,\n requestOptions?: RequestOptions<'GET'>,\n ): CancelablePromise<ResourceItem | undefined> {\n return this.getMany(resource, requestOptions).then((resources) => {\n return resources[0];\n });\n }\n\n private _resourceCacheFilter(\n resource: DeepPartial<Resource>,\n ): CancelablePromise<ResourceItem[]> {\n return CancelablePromise.all(this.cache.matchAll('resource.item')).then(\n (resources) => {\n const items: ResourceItem[] = [];\n resources.filter((x) => {\n if (x) {\n // identical by uniq props\n if (resource.keyname && x.resource.keyname) {\n return resource.keyname === x.resource.keyname;\n }\n if (defined(resource.id) && defined(x.resource.id)) {\n return resource.id === x.resource.id;\n }\n return resourceCompare(resource, x.resource);\n }\n });\n return items;\n },\n );\n }\n}\n","import { EventEmitter } from 'events';\nimport CancelablePromise from '@nextgis/cancelable-promise';\nimport { objectRemoveEmpty } from '@nextgis/utils';\nimport { fixUrlStr } from '@nextgis/utils';\nimport Cache from '@nextgis/cache';\n\nimport { loadData } from './utils/loadData';\nimport { template } from './utils/template';\nimport { NgwError } from './errors/NgwError';\nimport { apiRequest } from './utils/apiRequest';\nimport { ResourceNotFoundError } from './errors/ResourceNotFoundError';\nimport { InsufficientPermissionsError } from './errors/InsufficientPermissionsError';\nimport {\n addConnector,\n findConnector,\n removeConnector,\n} from './activeConnectors';\nimport { ResourcesControl } from './ResourcesControl';\n\nimport type { DeepPartial } from '@nextgis/utils';\nimport type {\n DeleteRequestItemsResponseMap,\n PatchRequestItemsResponseMap,\n PostRequestItemsResponseMap,\n GetRequestItemsResponseMap,\n PutRequestItemsResponseMap,\n RequestTransformFunction,\n GetChildrenOfOptions,\n ResourceIdKeynameDef,\n NgwConnectorOptions,\n ResourceDefinition,\n RequestItemsParams,\n RequestItemKeys,\n RequestHeaders,\n RequestOptions,\n PyramidRoute,\n Credentials,\n UserInfo,\n Params,\n} from './interfaces';\nimport type { RequestItemsParamsMap } from './types/RequestItemsParamsMap';\nimport type { ResourceItem, Resource } from './types/ResourceItem';\n\nlet ID = 0;\n\nexport class NgwConnector {\n static errors = {\n NgwError,\n ResourceNotFoundError,\n };\n id = ID++;\n\n emitter = new EventEmitter();\n user?: UserInfo;\n\n resources!: ResourcesControl;\n\n private routeStr = '/api/component/pyramid/route';\n private activeRequests: CancelablePromise[] = [];\n private requestTransform?: RequestTransformFunction | null;\n\n constructor(public options: NgwConnectorOptions) {\n const exist = findConnector(options);\n if (exist) {\n return exist;\n } else {\n if (this.options.route) {\n this.routeStr = this.options.route;\n }\n if (this.options.requestTransform) {\n this.requestTransform = this.options.requestTransform;\n }\n this.resources = new ResourcesControl(this);\n addConnector(this);\n }\n }\n\n static create(options: NgwConnectorOptions): NgwConnector {\n return new this(options);\n }\n\n setRequestTransform(\n requestTransform: RequestTransformFunction | undefined | null,\n ) {\n this.requestTransform = requestTransform;\n }\n\n /**\n * Fast way to specify the connection address to NextGIS Web.\n * The current connection will be severed.\n * @param baseUrl - NGW url\n */\n setNgw(baseUrl: string): void {\n this.logout();\n this.options.baseUrl = baseUrl;\n addConnector(this);\n }\n\n /**\n * Establishing a connection with NextGIS Web to fulfill all other requests.\n * @remarks\n * This method need not be called manually as it is used when forming a request in {@link apiRequest | apiRequest}.\n * Can be used to check connection.\n * @example\n * ```javascript\n * const connector = new NgwConnector({baseUrl: 'https://demo.nextgis.com'});\n * connector.connect()\n * .then(() => console.log('Ok'))\n * .catch((er) => console.log('Connection problem', er));\n * ```\n */\n connect(): CancelablePromise<PyramidRoute> {\n const cache = new Cache();\n const auth = this.options.auth;\n const makeConnect = () =>\n new CancelablePromise((resolve, reject) => {\n const makeQuery = () => {\n return this.makeQuery<PyramidRoute>(this.routeStr, {}, {})\n .then((route) => {\n resolve(route);\n })\n .catch((er) => {\n reject(er);\n });\n };\n if (auth) {\n const { login, password } = auth;\n if (login && password) {\n return this._login({ login, password })\n .then(() => {\n return makeQuery();\n })\n .catch((er) => reject(er));\n }\n }\n return makeQuery();\n });\n return cache.add('route', makeConnect, {\n id: this.id,\n auth,\n baseUrl: this.options.baseUrl,\n });\n }\n\n /**\n * Quick way to change NextGIS Web user.\n * @param credentials - New user credentials\n */\n login(\n credentials: Credentials,\n options?: RequestOptions,\n ): CancelablePromise<UserInfo> {\n this.logout();\n addConnector(this);\n return this._login(credentials, options);\n }\n\n /**\n * Disconnecting a user. Aborting all current requests\n */\n logout(): void {\n this.abort();\n removeConnector(this);\n this.options.auth = undefined;\n this.user = undefined;\n this.emitter.emit('logout');\n this.resources.cache.clean();\n }\n\n getUserInfo(\n credentials?: Credentials,\n options?: RequestOptions,\n ): CancelablePromise<UserInfo> {\n if (this.user && this.user.id) {\n return CancelablePromise.resolve(this.user);\n }\n if (credentials) {\n this.options.auth = credentials;\n }\n const options_: RequestOptions = {\n headers: this.getAuthorizationHeaders(credentials),\n // withCredentials: true\n ...options,\n };\n\n // Do not use apiRequest('auth.current_user') to avoid circular-references\n return this.makeQuery<UserInfo>(\n '/api/component/auth/current_user',\n {},\n options_,\n );\n }\n\n /**\n * Obtaining the required Headers for authentication of requests in the NGW.\n */\n getAuthorizationHeaders(\n credentials?: Credentials,\n ): RequestHeaders | undefined {\n const client = this.makeClientId(credentials);\n if (client) {\n return {\n Authorization: 'Basic ' + client,\n };\n }\n }\n\n makeClientId(credentials?: Credentials): string | undefined {\n credentials = credentials || this.options.auth;\n if (credentials) {\n const { login, password } = credentials;\n const str = unescape(encodeURIComponent(`${login}:${password}`));\n // @ts-ignore\n if (__BROWSER__) {\n return window.btoa(str);\n } else {\n return Buffer.from(str).toString('base64');\n }\n }\n }\n\n /** Stop all api requests */\n abort() {\n for (const req of this.activeRequests) {\n req.cancel();\n }\n this.activeRequests = [];\n }\n\n getActiveApiRequests() {\n return [...this.activeRequests];\n }\n\n /**\n * Send request to NGW api router.\n * @param name - NGW route name from {@link https://docs.nextgis.com/docs_ngweb_dev/doc/developer/resource.html#routes | routes}\n * @param params - Request item params or query params\n * @param requestOptions - Request options\n *\n * @example\n * ```javascript\n *\n * // there is such an NGW route item\n * // \"feature_layer.feature.item\": [\n * // \"/api/resource/{0}/feature/{1}\",\n * // \"id\",\n * // \"fid\"\n * // ],\n *\n * const connector = new NgwConnector({ baseUrl: 'https://example.nextgis.com' });\n * connector.apiRequest('feature_layer.feature.item', {\n * // request params for {0} and {1}\n * 'id': 2011,\n * 'fid': 101,\n * // query params\n * 'srs': 4326,\n * 'geom_format': 'geojson',\n * }, { method: 'GET' });\n * // send get-request to 'https://example.nextgis.com/api/resource/2011/feature/101?srs=4326&geom_format=geojson'\n *\n * ```\n */\n apiRequest<\n K extends keyof RequestItemsParamsMap,\n P extends RequestItemKeys = RequestItemKeys,\n >(\n name: K,\n params_: RequestItemsParams<K> = {},\n requestOptions: RequestOptions = {},\n ): CancelablePromise<P[K]> {\n const { method, headers, withCredentials, responseType } = requestOptions;\n\n params_ = requestOptions.params ?? params_;\n const params = objectRemoveEmpty(params_);\n const makeApiRequest = () =>\n apiRequest({ name, params, requestOptions, connector: this });\n if (requestOptions.cache && method === 'GET') {\n const cache = new Cache<CancelablePromise<P[K]>>();\n return cache.add(name, makeApiRequest, {\n params,\n ...objectRemoveEmpty({\n headers,\n withCredentials,\n responseType,\n baseUrl: this.options.baseUrl,\n userId: this.user?.id,\n }),\n });\n }\n return makeApiRequest();\n }\n\n /**\n * Shortcut method for send POST request to NGW.\n * @param name - NGW route name from {@link https://docs.nextgis.com/docs_ngweb_dev/doc/developer/resource.html#routes | routes}\n * @param options - Request options\n * @param params - Request item params or query params\n *\n * @example\n * ```javascript\n * connector.post('resource.collection', { data: POST_PAYLOAD })\n * .then((newResource) => console.log(newResource))\n * .catch((error) => console.warn(error));\n * ```\n */\n post<K extends keyof RequestItemsParamsMap>(\n name: K,\n options?: RequestOptions<'POST', K>,\n params?: RequestItemsParams<K>,\n ): CancelablePromise<PostRequestItemsResponseMap[K]> {\n options = options || {};\n options.method = 'POST';\n return this.apiRequest<K, PostRequestItemsResponseMap>(\n name,\n params,\n options,\n );\n }\n\n /**\n * Shortcut method for send GET request to NGW.\n * @param name - NGW route name from {@link https://docs.nextgis.com/docs_ngweb_dev/doc/developer/resource.html#routes | routes}\n * @param options - Request options\n * @param params - Request item params or query params\n */\n get<K extends keyof RequestItemsParamsMap>(\n name: K,\n options?: RequestOptions<'GET', K> | undefined | null,\n params?: RequestItemsParams<K>,\n ): CancelablePromise<GetRequestItemsResponseMap[K]> {\n options = options || {};\n options.method = 'GET';\n return this.apiRequest<K, GetRequestItemsResponseMap>(\n name,\n params,\n options,\n );\n }\n\n /**\n * Shortcut method for send PATCH request to NGW.\n * @param name - NGW route name from {@link https://docs.nextgis.com/docs_ngweb_dev/doc/developer/resource.html#routes | routes}\n * @param options - Request options\n * @param params - Request item params or query params\n */\n patch<K extends keyof RequestItemsParamsMap>(\n name: K,\n options?: RequestOptions<'PATCH', K>,\n params?: RequestItemsParams<K>,\n ): CancelablePromise<PatchRequestItemsResponseMap[K]> {\n options = options || {};\n options.method = 'PATCH';\n return this.apiRequest<K, PatchRequestItemsResponseMap>(\n name,\n params,\n options,\n );\n }\n\n /**\n * Shortcut method for send PUT request to NGW.\n * @param name - NGW route name from {@link https://docs.nextgis.com/docs_ngweb_dev/doc/developer/resource.html#routes | routes}\n * @param options - Request options\n * @param params - Request item params or query params\n */\n put<K extends keyof RequestItemsParamsMap>(\n name: K,\n options?: RequestOptions<'PUT', K>,\n params?: RequestItemsParams<K>,\n ): CancelablePromise<PutRequestItemsResponseMap[K]> {\n options = options || {};\n options.method = 'PUT';\n return this.apiRequest<K, PutRequestItemsResponseMap>(\n name,\n params,\n options,\n );\n }\n\n /**\n * Shortcut method for send DELETE request to NGW.\n * @param name - NGW route name from {@link https://docs.nextgis.com/docs_ngweb_dev/doc/developer/resource.html#routes | routes}\n * @param options - Request options\n * @param params - Request item params or query params\n */\n delete<K extends keyof RequestItemsParamsMap>(\n name: K,\n options?: RequestOptions<'DELETE', K> | undefined | null,\n params?: RequestItemsParams<K>,\n ): CancelablePromise<DeleteRequestItemsResponseMap[K]> {\n options = options || {};\n options.method = 'DELETE';\n return this.apiRequest<K, DeleteRequestItemsResponseMap>(\n name,\n params,\n options,\n );\n }\n\n /**\n * Send request to NGW.\n * @param url - URL address to NGW\n * @param params - Query params\n * @param options - Request options\n */\n makeQuery<R = unknown>(\n url: string,\n params?: Params | null,\n options: RequestOptions = {},\n ): CancelablePromise<R> {\n url = (this.options.baseUrl ? this.options.baseUrl : '') + url;\n if (url) {\n if (params) {\n url = template(url, params);\n }\n url = encodeURI(fixUrlStr(url));\n return this._loadData(url, options);\n } else {\n throw new Error('Empty `url` not allowed');\n }\n }\n\n // -------------------------------------------------------------------------\n // Resource Methods\n // -------------------------------------------------------------------------\n\n /**\n * {@link ResourcesControl.getOne}\n */\n getResource(\n resource: ResourceDefinition,\n requestOptions?: RequestOptions<'GET'>,\n ): CancelablePromise<ResourceItem | undefined> {\n return this.resources.getOne(resource, requestOptions);\n }\n\n /**\n * {@link ResourcesControl.getOneOrFail}\n */\n getResourceOrFail(\n resource: ResourceDefinition,\n requestOptions?: RequestOptions<'GET'>,\n ): CancelablePromise<ResourceItem> {\n return this.resources.getOneOrFail(resource, requestOptions);\n }\n\n /**\n * @deprecated - use {@link getResource}\n */\n getResourceBy(\n resource: DeepPartial<Resource>,\n ): CancelablePromise<ResourceItem | undefined> {\n return this.resources.getOne(resource);\n }\n\n /**\n * @deprecated - use {@link getResource}\n */\n getResourceByKeyname(\n keyname: string,\n ): CancelablePromise<ResourceItem | undefined> {\n return this.resources.getOne(keyname);\n }\n\n /**\n * @deprecated - use {@link getResource}\n */\n getResourceById(id: number): CancelablePromise<ResourceItem | undefined> {\n return this.resources.getOne(id);\n }\n\n /**\n * {@link ResourcesControl.getId}\n */\n getResourceId(\n resource: ResourceDefinition,\n requestOptions?: RequestOptions<'GET'>,\n ): CancelablePromise<number | undefined> {\n return this.resources.getId(resource, requestOptions);\n }\n\n /**\n * {@link ResourcesControl.getIdOrFail}\n */\n getResourceIdOrFail(\n resource: ResourceDefinition,\n requestOptions?: RequestOptions<'GET'>,\n ): CancelablePromise<number> {\n return this.resources.getIdOrFail(resource, requestOptions);\n }\n\n /**\n * {@link ResourcesControl.getMany}\n */\n getResourcesBy(\n resource: DeepPartial<Resource>,\n requestOptions?: RequestOptions<'GET'>,\n ): CancelablePromise<ResourceItem[]> {\n return this.resources.getMany(resource, requestOptions);\n }\n\n /**\n * {@link ResourcesControl.getParent}\n */\n getResourceParent(\n resource: ResourceDefinition,\n requestOptions?: RequestOptions<'GET'>,\n ): CancelablePromise<ResourceItem | undefined> {\n return this.resources.getParent(resource, requestOptions);\n }\n\n /**\n * {@link ResourcesControl.getChildrenOf}\n */\n getResourceChildren(\n resource: ResourceDefinition,\n requestOptions?: GetChildrenOfOptions,\n ): CancelablePromise<ResourceItem[]> {\n return this.resources.getChildrenOf(resource, requestOptions);\n }\n\n /**\n * {@link ResourcesControl.update}\n */\n updateResource(\n resource: ResourceIdKeynameDef,\n data: DeepPartial<ResourceItem>,\n ): CancelablePromise<ResourceItem | undefined> {\n return this.resources.update(resource, data);\n }\n\n /**\n * {@link ResourcesControl.delete}\n */\n deleteResource(resource: ResourceIdKeynameDef): CancelablePromise<void> {\n return this.resources.delete(resource);\n }\n\n /**\n * @internal\n */\n protected _loadData(\n url: string,\n options: RequestOptions,\n ): CancelablePromise<any> {\n options.responseType = options.responseType || 'json';\n\n const request = new CancelablePromise((resolve, reject, onCancel) => {\n if (this.user) {\n options = options || {};\n // options.withCredentials = true;\n options.headers = {\n ...this.getAuthorizationHeaders(),\n ...options.headers,\n };\n }\n\n if (this.requestTransform) {\n const [transUrl, transOptions] = this.requestTransform(url, options);\n url = transUrl;\n options = transOptions;\n }\n loadData(url, resolve, options, reject, onCancel);\n })\n .then((resp) => {\n this._cleanActiveRequests(request);\n return resp;\n })\n .catch((httpError) => {\n this._cleanActiveRequests(request);\n if (httpError instanceof CancelablePromise.CancelError) {\n // not need to handle cancel error because onCancel method is used\n } else {\n // @ts-ignore\n if (__DEV__) {\n console.warn('DEV WARN', httpError);\n }\n const er = this._handleHttpError(httpError);\n if (er) {\n throw er;\n }\n }\n });\n if (\n options.signal &&\n typeof options.signal.addEventListener === 'function'\n ) {\n options.signal.addEventListener('abort', () => {\n request.cancel();\n this._cleanActiveRequests(request);\n });\n }\n this.activeRequests.push(request);\n return request;\n }\n\n private _login(\n credentials: Credentials,\n options?: RequestOptions,\n ): CancelablePromise<UserInfo> {\n return this.getUserInfo(credentials, options)\n .then((data) => {\n this.user = data;\n this.emitter.emit('login', data);\n return data;\n })\n .catch((er) => {\n this.emitter.emit('login:error', er);\n throw er;\n });\n }\n\n private _cleanActiveRequests(request: CancelablePromise) {\n const activeRequestIndex = this.activeRequests.indexOf(request);\n if (activeRequestIndex !== -1) {\n this.activeRequests.splice(activeRequestIndex, 1);\n }\n }\n\n private _handleHttpError(er: Error) {\n if (er) {\n if (er instanceof NgwError) {\n if (er.exception === 'nextgisweb.resource.exception.ResourceNotFound') {\n throw new ResourceNotFoundError(er);\n } else if (\n er.exception === 'nextgisweb.core.exception.InsufficientPermissions'\n ) {\n throw new InsufficientPermissionsError(er);\n }\n }\n }\n return er;\n }\n}\n","/**\n * A lightweight HTTP client optimized for use with {@link http://docs.nextgis.ru/docs_ngweb_dev/doc/developer/toc.html | NextGIS Web} API\n *\n * @remarks\n * Make sure CORS is registered in the {@link https://docs.nextgis.com/docs_ngcom/source/CORS.html | NextGIS Web settings } to be able to send requests.\n *\n * @packageDocumentation\n * @module ngw-connector\n */\nimport { NgwConnector } from './NgwConnector';\n\nexport * from './interfaces';\nexport * from './types/ResourceItem';\nexport * from './types/FeatureLayer';\nexport * from './types/RequestItemsParamsMap';\nexport * from './types/ResourceStore';\n\nexport default NgwConnector;\n","import CancelablePromise from '@nextgis/cancelable-promise';\n\nimport type { LngLatBoundsArray } from '@nextgis/utils';\nimport type NgwConnector from '@nextgis/ngw-connector';\nimport type { WebmapResource, ResourceItem } from '@nextgis/ngw-connector';\nimport type {\n FetchNgwLayerExtentOptions,\n FetchNgwLayerItemExtentOptions,\n} from '../interfaces';\n\nexport function getNgwWebmapExtent(\n webmap: WebmapResource,\n): LngLatBoundsArray | undefined {\n const bottom = webmap['extent_bottom'];\n const left = webmap['extent_left'];\n const top = webmap['extent_top'];\n const right = webmap['extent_right'];\n if (bottom && left && top && right) {\n const extent: LngLatBoundsArray = [left, bottom, right, top];\n if (extent[3] > 82) {\n extent[3] = 82;\n }\n if (extent[1] < -82) {\n extent[1] = -82;\n }\n return extent;\n }\n}\n\nexport function fetchNgwLayerExtent({\n resourceId,\n connector,\n cache = true,\n}: FetchNgwLayerExtentOptions): CancelablePromise<\n LngLatBoundsArray | undefined\n> {\n return connector\n .get('layer.extent', { cache }, { id: resourceId })\n .then((resp) => {\n if (resp) {\n const { maxLat, maxLon, minLat, minLon } = resp.extent;\n const extentArray: LngLatBoundsArray = [minLon, minLat, maxLon, maxLat];\n return extentArray;\n }\n });\n}\n\nexport function fetchNgwLayerItemExtent({\n resourceId,\n featureId,\n connector,\n cache = true,\n}: FetchNgwLayerItemExtentOptions): CancelablePromise<\n LngLatBoundsArray | undefined\n> {\n return connector\n .get(\n 'feature_layer.feature.item_extent',\n { cache },\n { id: resourceId, fid: featureId },\n )\n .then((resp) => {\n if (resp) {\n const { maxLat, maxLon, minLat, minLon } = resp.extent;\n const extentArray: LngLatBoundsArray = [minLon, minLat, maxLon, maxLat];\n return extentArray;\n }\n });\n}\n\nexport function fetchNgwExtent(\n options: FetchNgwLayerExtentOptions,\n): CancelablePromise<LngLatBoundsArray | undefined> {\n return options.connector.getResource(options.resourceId).then((resource) => {\n if (resource) {\n return fetchNgwResourceExtent(resource, options.connector, options);\n }\n });\n}\n\n/** @deprecated use {@link fetchNgwExtent} instead */\nexport function fetchNgwResourceExtent(\n item: ResourceItem,\n connector: NgwConnector,\n options?: FetchNgwLayerExtentOptions,\n): CancelablePromise<LngLatBoundsArray | undefined> {\n if (item.webmap) {\n return CancelablePromise.resolve(getNgwWebmapExtent(item.webmap));\n } else {\n const resource = item.resource;\n if (resource.cls && resource.cls.indexOf('style') !== -1) {\n return connector.getResource(resource.parent.id).then((res) => {\n if (res) {\n return fetchNgwLayerExtent({\n ...options,\n resourceId: res.resource.id,\n connector,\n });\n }\n });\n } else {\n return fetchNgwLayerExtent({\n ...options,\n resourceId: resource.id,\n connector,\n });\n }\n }\n}\n","import { fetchNgwResourceExtent } from './utils/fetchNgwExtent';\n\nimport type NgwConnector from '@nextgis/ngw-connector';\nimport type { ResourceItem } from '@nextgis/ngw-connector';\nimport type { LngLatBoundsArray } from '@nextgis/utils';\nimport { FetchNgwLayerExtentOptions } from './interfaces';\nexport class NgwResource {\n item!: ResourceItem;\n connector!: NgwConnector;\n\n protected _extent?: LngLatBoundsArray;\n\n /** @deprecated use {@link NgwResource.getBounds} instead */\n async getExtent(): Promise<LngLatBoundsArray | undefined> {\n return this.getBounds();\n }\n\n async getBounds(\n options?: FetchNgwLayerExtentOptions,\n ): Promise<LngLatBoundsArray | undefined> {\n if (this._extent) {\n return this._extent;\n }\n if (this.item) {\n this._extent = await fetchNgwResourceExtent(\n this.item,\n this.connector,\n options,\n );\n return this._extent;\n }\n }\n}\n","import { Feature } from 'geojson';\nimport { ResourceItem } from '@nextgis/ngw-connector';\n\nexport function createPopupContent(\n feature: Feature,\n item?: ResourceItem,\n): HTMLElement | string {\n // @ts-ignore\n if (__BROWSER__) {\n const element = document.createElement('div');\n if (item && item.feature_layer) {\n item.feature_layer.fields.forEach((x) => {\n if (x.grid_visibility) {\n const value = feature.properties && feature.properties[x.keyname];\n if (value) {\n const propElem = document.createElement('div');\n element.appendChild(propElem);\n propElem.innerHTML = `<span>${x.display_name}</span>: ${value}<span></span>`;\n }\n }\n });\n } else if (feature.properties) {\n for (const p in feature.properties) {\n const propElem = document.createElement('div');\n element.appendChild(propElem);\n propElem.innerHTML = `<span>${p}</span>: ${feature.properties[p]}<span></span>`;\n }\n }\n return element;\n } else {\n return '';\n }\n}\n","import { FilterOptions, GeoJsonAdapterOptions } from '@nextgis/webmap';\n\nconst filterOptionsKeys: (keyof FilterOptions)[] = [\n 'fields',\n 'intersects',\n 'limit',\n 'orderBy',\n 'strategy',\n];\n\nexport function getLayerFilterOptions(\n options: GeoJsonAdapterOptions,\n): FilterOptions {\n const filterOptions: Record<string, any> = {};\n filterOptionsKeys.forEach((x) => {\n const opt = options[x];\n if (opt !== undefined) {\n filterOptions[x] = opt;\n }\n });\n return filterOptions as FilterOptions;\n}\n","import NgwConnector, { ResourceItem } from '@nextgis/ngw-connector';\nimport type { NgwLayerOptions } from '../interfaces';\n\nexport async function resourceIdFromLayerOptions(\n options: NgwLayerOptions,\n connector: NgwConnector,\n): Promise<number> {\n const resource = options.resource;\n const item = resource as ResourceItem;\n\n // @ts-ignore @deprecated\n let { keyname, resourceId } = options;\n\n if (resource) {\n if (typeof resource === 'string') {\n keyname = resource;\n } else if (typeof resource === 'number') {\n resourceId = resource;\n } else if (\n item.resource &&\n item.resource !== undefined &&\n 'resource' in item\n ) {\n resourceId = (resource as ResourceItem).resource.id;\n } else {\n // TODO: safe remove this case\n resourceId = await resourceIdFromLayerOptions(resource as any, connector);\n }\n }\n if (!resourceId && keyname) {\n const resourceItem = await connector.getResource(keyname);\n if (resourceItem) {\n resourceId = resourceItem.resource.id;\n }\n }\n return resourceId;\n}\n","import CancelablePromise from '@nextgis/cancelable-promise';\nimport {\n isPropertyFilter,\n PropertiesFilter,\n PropertyFilter,\n} from '@nextgis/properties-filter';\nimport {\n round,\n defined,\n degrees2meters,\n isLngLatBoundsArray,\n getBoundsCoordinates,\n} from '@nextgis/utils';\n\nimport type { Geometry, Feature } from 'geojson';\nimport type {\n RequestItemAdditionalParams,\n FeatureItem,\n} from '@nextgis/ngw-connector';\nimport type { LngLatArray, FeatureProperties } from '@nextgis/utils';\nimport type {\n NgwFeatureRequestOptions,\n FeatureRequestParams,\n FetchNgwItemsOptions,\n} from '../interfaces';\n\nexport const FEATURE_REQUEST_PARAMS: FeatureRequestParams = {\n srs: 4326,\n geom_format: 'geojson',\n};\n\nexport function createGeoJsonFeature<\n G extends Geometry | null = Geometry,\n P extends FeatureProperties = FeatureProperties,\n>(item: Pick<FeatureItem, 'id' | 'geom' | 'fields'>): Feature<G, P> {\n const geometry = item.geom as G;\n const feature: Feature<G, P> = {\n geometry,\n id: item.id,\n type: 'Feature',\n properties: item.fields as P,\n };\n return feature;\n}\n\nexport function updateItemRequestParam<\n P extends FeatureProperties = FeatureProperties,\n>(params: FeatureRequestParams, options: NgwFeatureRequestOptions<P>): void {\n const { extensions, geom, fields, srs, ilike, like } = options;\n // Empty extesions by default\n let extensionsStr = extensions ? extensions.join(',') : '';\n // Use character * to set all extensions\n if (extensionsStr !== '*') {\n params.extensions = extensionsStr;\n }\n\n if (fields !== undefined) {\n params.fields = Array.isArray(fields) ? fields.join(',') : '';\n }\n if (geom !== undefined) {\n params.geom = geom ? 'yes' : 'no';\n if (!geom) {\n delete params.srs;\n delete params.geom_format;\n }\n }\n if (defined(ilike)) {\n params.ilike = ilike;\n } else if (defined(like)) {\n params.like = like;\n }\n if (defined(srs)) {\n params.srs = srs;\n }\n}\n\n// NGW REST API is not able to filtering by combined queries\n// therefore the filter is divided into several requests\nexport function createFeatureFieldFilterQueries<\n G extends Geometry = Geometry,\n P extends { [field: string]: any } = { [field: string]: any },\n>(\n opt: FetchNgwItemsOptions<P> &\n Required<Pick<FetchNgwItemsOptions, 'filters'>>,\n): CancelablePromise<FeatureItem<P, G>[]> {\n const queries: CancelablePromise<FeatureItem<P, G>[]>[] = getQueries<G, P>(\n opt,\n );\n\n return CancelablePromise.all(queries).then((itemsParts) => {\n // this list of ids used for optimization\n const ids: number[] = [];\n const items: FeatureItem<P, G>[] = [];\n for (const part of itemsParts) {\n for (const item of part) {\n if (!ids.includes(item.id)) {\n items.push(item);\n ids.push(item.id);\n }\n }\n }\n const offset = opt.offset !== undefined ? opt.offset : 0;\n const limit = opt.limit !== undefined ? opt.limit : items.length;\n if (opt.offset || opt.limit) {\n return items.splice(offset, limit);\n }\n return items;\n });\n}\n\nfunction createParam(pf: PropertyFilter): [string, any] {\n const [field, operation, value] = pf;\n const isFldStr = field !== 'id' ? 'fld_' : '';\n let vStart = '';\n let vEnd = '';\n const field_ = String(field)\n .trim()\n .replace(/^(%?)(.+?)(%?)$/, (m, a, b, c) => {\n vStart = a;\n vEnd = c;\n return b;\n });\n const v = vStart + value + vEnd;\n return [`${isFldStr}${field_}__${operation}`, v];\n}\n\nfunction getQueries<\n G extends Geometry = Geometry,\n P extends { [field: string]: any } = { [field: string]: any },\n>(\n opt: FetchNgwItemsOptions<P> &\n Required<Pick<FetchNgwItemsOptions, 'filters'>>,\n _queries: CancelablePromise<FeatureItem<P, G>[]>[] = [],\n _parentAllParams: [string, any][] = [],\n): CancelablePromise<FeatureItem<P, G>[]>[] {\n const { filters } = opt;\n\n const logic = typeof filters[0] === 'string' ? filters[0] : 'all';\n\n const filters_ = filters.filter((x) => Array.isArray(x)) as PropertyFilter[];\n\n if (logic === 'any') {\n for (const f of filters_) {\n if (isPropertyFilter(f)) {\n _queries.push(\n fetchNgwLayerItemsRequest<G, P>({\n ...opt,\n paramList: [..._parentAllParams, createParam(f)],\n }),\n );\n } else {\n getQueries(\n {\n ...opt,\n filters: f,\n },\n _queries,\n [..._parentAllParams],\n );\n }\n }\n } else if (logic === 'all') {\n const filters: [string, any][] = [];\n const propertiesFilterList: PropertiesFilter[] = [];\n for (const f of filters_) {\n if (isPropertyFilter(f)) {\n filters.push(createParam(f));\n } else {\n propertiesFilterList.push(f);\n }\n }\n\n if (propertiesFilterList.length) {\n for (const x of propertiesFilterList) {\n getQueries(\n {\n ...opt,\n filters: x,\n },\n _queries,\n [..._parentAllParams, ...filters],\n );\n }\n } else {\n _queries.push(\n fetchNgwLayerItemsRequest<G, P>({\n ...opt,\n paramList: [..._parentAllParams, ...filters],\n }),\n );\n }\n }\n return _queries;\n}\n\nfunction createWktFromCoordArray(coord: LngLatArray[]): string {\n const polygon = coord.map(([lng, lat]) => {\n const [x, y] = degrees2meters(lng, lat).map((c) => round(c));\n return x + ' ' + y;\n });\n return `POLYGON((${polygon.join(', ')}))`;\n}\n\nexport function fetchNgwLayerItemsRequest<\n G extends Geometry = Geometry,\n P extends { [field: string]: any } = { [field: string]: any },\n>(options: FetchNgwItemsOptions<P>): CancelablePromise<FeatureItem<P, G>[]> {\n const params: FeatureRequestParams & RequestItemAdditionalParams = {\n ...FEATURE_REQUEST_PARAMS,\n };\n const {\n limit,\n cache,\n signal,\n offset,\n orderBy,\n paramList,\n connector,\n geomFormat,\n intersects,\n resourceId,\n } = options;\n if (limit) {\n if (limit !== Number.POSITIVE_INFINITY) {\n params.limit = limit;\n }\n } else {\n // Strict restriction on loading data from large layers\n params.limit = 7000;\n }\n if (offset) {\n params.offset = offset;\n }\n if (geomFormat) {\n params.geom_format = geomFormat;\n }\n updateItemRequestParam(params, options);\n\n if (orderBy) {\n params.order_by = orderBy.join(',');\n }\n if (Array.isArray(intersects)) {\n const coordinates = isLngLatBoundsArray(intersects)\n ? getBoundsCoordinates(intersects)\n : intersects;\n\n params.intersects = createWktFromCoordArray(coordinates);\n } else if (typeof intersects === 'string') {\n params.intersects = intersects;\n }\n\n if (paramList) {\n params.paramList = paramList;\n }\n const reqParams = {\n id: resourceId,\n ...params,\n };\n\n return connector.get(\n 'feature_layer.feature.collection',\n { cache, signal },\n reqParams,\n ) as CancelablePromise<FeatureItem<P, G>[]>;\n}\n","import { isObject, defined } from '@nextgis/utils';\nimport type { NgwDateFormat, NgwDateTimeFormat } from '@nextgis/ngw-connector';\n\nexport function prepareNgwFieldsToPropertiesFilter(\n fields: Record<string, any>,\n): Record<string, any> {\n let f: keyof typeof fields;\n for (f in fields) {\n const field = fields[f];\n if (isObject(field)) {\n const date = field as NgwDateFormat | NgwDateTimeFormat;\n if (defined(date.year) && defined(date.month) && defined(date.day)) {\n const dt: [number, number, number, number?, number?, number?] = [\n date.year,\n date.month - 1,\n date.day,\n ];\n if ('hour' in date) {\n [date.hour, date.minute, date.second].forEach((x) => {\n dt.push(x);\n });\n }\n fields[f] = new Date(...dt).toISOString();\n }\n } else if (f === 'id' && typeof field === 'string') {\n fields[f] = field.split(',').map(Number);\n }\n }\n return fields;\n}\n","import { propertiesFilter } from '@nextgis/properties-filter';\nimport CancelablePromise from '@nextgis/cancelable-promise';\nimport {\n createFeatureFieldFilterQueries,\n fetchNgwLayerItemsRequest,\n} from './featureLayerUtils';\nimport { prepareNgwFieldsToPropertiesFilter } from './prepareNgwFieldsToPropertiesFilter';\n\nimport type { Geometry } from 'geojson';\nimport type { FeatureItem } from '@nextgis/ngw-connector';\nimport { FeatureProperties, isArray } from '@nextgis/utils';\nimport type { PropertiesFilter } from '@nextgis/properties-filter';\nimport type { FetchNgwItemsOptions } from '../interfaces';\n\nexport function fetchNgwLayerItems<\n G extends Geometry = Geometry,\n P extends FeatureProperties = FeatureProperties,\n>(options: FetchNgwItemsOptions<P>): CancelablePromise<FeatureItem<P, G>[]> {\n const filters = options.filters;\n if (filters) {\n return createFeatureFieldFilterQueries({\n ...options,\n filters,\n }).then((data) => {\n const clientFilterValidate =\n options.clientFilterValidate ?? isFilterWithAnyCase(filters);\n // Additional client-side filter check\n if (clientFilterValidate) {\n data = data.filter((y) => {\n const fields = prepareNgwFieldsToPropertiesFilter({\n ...y.fields,\n id: y.id,\n });\n const result = propertiesFilter(fields, filters);\n return result;\n });\n }\n return data;\n }) as CancelablePromise<FeatureItem<P, G>[]>;\n } else {\n return fetchNgwLayerItemsRequest<G, P>(options);\n }\n}\n\nfunction isFilterWithAnyCase(filters: PropertiesFilter): boolean {\n if (filters[0] === 'any') {\n return true;\n }\n for (let i = 1; i < filters.length; i++) {\n const p = filters[i];\n if (isArray(p)) {\n const deep = isFilterWithAnyCase(p);\n if (deep) {\n return true;\n }\n }\n }\n return false;\n}\n","import { fetchNgwLayerItems } from './fetchNgwLayerItems';\nimport { createGeoJsonFeature } from './featureLayerUtils';\n\nimport type { Geometry, Feature } from 'geojson';\nimport type CancelablePromise from '@nextgis/cancelable-promise';\nimport type { FeatureItem } from '@nextgis/ngw-connector';\nimport type { FetchNgwItemsOptions } from '../interfaces';\nimport type { FeatureProperties } from '@nextgis/utils';\n\nexport function fetchNgwLayerFeatures<\n G extends Geometry | null = Geometry,\n P extends FeatureProperties = FeatureProperties,\n>(options: FetchNgwItemsOptions<P>): CancelablePromise<Feature<G, P>[]> {\n return fetchNgwLayerItems(options).then((x: FeatureItem[]) => {\n const features: Array<Feature<G, P>> = [];\n x.forEach((y) => {\n features.push(createGeoJsonFeature(y));\n });\n\n return features;\n });\n}\n","import { fetchNgwLayerFeatures } from './fetchNgwLayerFeatures';\n\nimport type { Geometry, FeatureCollection } from 'geojson';\nimport type CancelablePromise from '@nextgis/cancelable-promise';\nimport type { FeatureProperties } from '@nextgis/utils';\nimport type { FetchNgwItemsOptions } from '../interfaces';\n\nexport function fetchNgwLayerFeatureCollection<\n G extends Geometry | null = Geometry,\n P extends FeatureProperties = FeatureProperties,\n>(\n options: FetchNgwItemsOptions<P>,\n): CancelablePromise<FeatureCollection<G, P>> {\n return fetchNgwLayerFeatures<G, P>(options).then((features) => {\n const featureCollection: FeatureCollection<G, P> = {\n type: 'FeatureCollection',\n features,\n };\n return featureCollection;\n });\n}\n","import CancelablePromise from '@nextgis/cancelable-promise';\n\nimport type { FetchNgwLayerCountOptions } from '../interfaces';\n\nexport function fetchNgwLayerCount({\n connector,\n resourceId,\n cache = true,\n}: FetchNgwLayerCountOptions): CancelablePromise<number> {\n return connector\n .get(\n 'feature_layer.feature.count',\n { cache },\n {\n id: resourceId,\n },\n )\n .then((resp) => {\n return resp.total_count;\n });\n}\n","import { EventEmitter } from 'events';\nimport { debounce, LngLatBoundsArray } from '@nextgis/utils';\nimport { propertiesFilter } from '@nextgis/properties-filter';\n\nimport { createPopupContent } from '../utils/createPopupContent';\nimport { getLayerFilterOptions } from '../utils/getLayerFilterOptions';\nimport { fetchNgwExtent } from '../utils/fetchNgwExtent';\nimport { resourceIdFromLayerOptions } from '../utils/resourceIdFromLayerOptions';\nimport { vectorLayerGeomToPaintTypeAlias } from '../utils/utils';\nimport { fetchNgwLayerFeatureCollection } from '../utils/fetchNgwLayerFeatureCollection';\nimport { prepareNgwFieldsToPropertiesFilter } from '../utils/prepareNgwFieldsToPropertiesFilter';\n\nimport type { FeatureCollection } from 'geojson';\nimport type { PropertiesFilter } from '@nextgis/properties-filter';\nimport type CancelablePromise from '@nextgis/cancelable-promise';\nimport type { Type } from '@nextgis/utils';\nimport type {\n GeoJsonAdapterOptions,\n VectorLayerAdapter,\n FilterOptions,\n LayerAdapter,\n} from '@nextgis/webmap';\nimport type {\n NgwLayerOptions,\n GetClassAdapterOptions,\n NgwFeatureRequestOptions,\n} from '../interfaces';\nimport { fetchNgwLayerCount } from '../utils/fetchNgwLayerCount';\n\ninterface FilterArgs {\n filters?: PropertiesFilter;\n options?: FilterOptions;\n}\n\nexport async function createGeoJsonAdapter(\n props: GetClassAdapterOptions,\n): Promise<Type<VectorLayerAdapter>> {\n const {\n item,\n webMap,\n Adapter,\n connector,\n layerOptions,\n addLayerOptionsPriority: alop,\n } = props;\n const addLayerOptionsPriority = alop ?? true;\n const options = layerOptions as NgwLayerOptions<'GEOJSON'>;\n const GeoJsonAdapter: Type<VectorLayerAdapter> =\n Adapter || webMap.mapAdapter.layerAdapters.GEOJSON;\n\n const _loadedIds: string[] = [];\n let _fullDataLoad = false;\n let _lastFilterArgs: FilterArgs | undefined;\n let _dataPromise: CancelablePromise<FeatureCollection> | undefined;\n\n const resourceId = await resourceIdFromLayerOptions(options, connector);\n\n if (options.adapterOptions?.popupOptions?.fromProperties) {\n options.adapterOptions.popupOptions.createPopupContent = ({ feature }) => {\n return feature && createPopupContent(feature, item);\n };\n }\n\n const getData = async (\n filters?: PropertiesFilter,\n filterOpt?: NgwFeatureRequestOptions,\n ) => {\n abort();\n _lastFilterArgs = { filters, options: filterOpt };\n _dataPromise = fetchNgwLayerFeatureCollection({\n resourceId,\n filters,\n connector,\n cache: true,\n ...filterOpt,\n });\n return await _dataPromise;\n };\n let removed = false;\n const abort = () => {\n if (_dataPromise) {\n _dataPromise.cancel();\n _dataPromise = undefined;\n }\n };\n\n class NgwGeoJsonAdapter extends GeoJsonAdapter {\n emitter = new EventEmitter();\n __onMapMove?: () => void;\n __onMapMoveStart?: () => void;\n __enableMapMoveListener?: (e: LayerAdapter) => void;\n __disableMapMoveListener?: (e: LayerAdapter) => void;\n\n async addLayer(opt: GeoJsonAdapterOptions) {\n let needUpdate = !opt.data;\n const waitFullLoad =\n opt.waitFullLoad !== undefined ? opt.waitFullLoad : true;\n if (options.id !== undefined) {\n opt.id = options.id;\n }\n if (item && item.vector_layer) {\n opt.type =\n vectorLayerGeomToPaintTypeAlias[item.vector_layer.geometry_type];\n }\n if (options.adapterOptions) {\n // TODO: remove addLayerOptionsPriority options/\n // in some cases, addLayer options must be used,\n // but in others factory method options needs first\n if (addLayerOptionsPriority) {\n opt = {\n ...options.adapterOptions,\n ...opt,\n };\n } else {\n opt = {\n ...opt,\n ...options.adapterOptions,\n };\n }\n }\n if (opt.data && Object.keys(opt.data).length === 0) {\n opt.data = undefined;\n needUpdate = false;\n }\n const strategy = opt.strategy || undefined;\n this.options.strategy = strategy;\n\n const layer = super.addLayer(opt);\n _lastFilterArgs = {\n filters: opt.propertiesFilter,\n options: getLayerFilterOptions(opt),\n };\n let updatePromise: Promise<any> | undefined;\n if (needUpdate) {\n updatePromise = this.updateLayer();\n }\n if (waitFullLoad && updatePromise) {\n await updatePromise;\n }\n if (strategy && strategy.startsWith('BBOX') && !_fullDataLoad) {\n this._addBboxEventListener();\n }\n return layer;\n }\n\n /** @deprecated use {@link NgwGeoJsonAdapter.getBounds} instead */\n getExtent(): Promise<LngLatBoundsArray | undefined> {\n return this.getBounds();\n }\n\n async getBounds(): Promise<LngLatBoundsArray | undefined> {\n const hasData = this.getLayers && this.getLayers().length;\n const strategy = this.options.strategy;\n if (strategy?.startsWith('BBOX') || hasData) {\n return fetchNgwExtent({ connector, resourceId: item.resource.id });\n } else {\n if (super.getBounds) {\n return super.getBounds();\n }\n }\n }\n\n beforeRemove() {\n removed = true;\n this._removeMoveEventListener();\n this._removeBboxEventListener();\n this.__disableMapMoveListener = undefined;\n this.__enableMapMoveListener = undefined;\n this.__onMapMove = undefined;\n this.__onMapMoveStart = undefined;\n abort();\n }\n\n getCount() {\n return fetchNgwLayerCount({ connector, resourceId, cache: true });\n }\n\n async updateLayer(filterArgs?: FilterArgs) {\n filterArgs = filterArgs || _lastFilterArgs || {};\n if (this.options.strategy?.startsWith('BBOX')) {\n await webMap.onLoad('create');\n filterArgs.options = filterArgs.options || {};\n filterArgs.options.intersects = webMap.getBounds();\n const { minZoom, maxZoom } = this.options;\n const zoom = webMap.getZoom();\n if (zoom !== undefined) {\n if (minZoom !== undefined && zoom < minZoom) {\n return;\n }\n if (maxZoom !== undefined && zoom > maxZoom) {\n return;\n }\n if (_fullDataLoad) {\n return;\n }\n }\n }\n if (removed) {\n return;\n }\n try {\n this.emitter.emit('preupdate', filterArgs);\n webMap._emitLayerEvent('layer:preupdate', options.id || '', filterArgs);\n\n const data = await getData(filterArgs.filters, {\n ...filterArgs.options,\n srs: this.options.srs,\n });\n let newData: FeatureCollection = data;\n const count = await this.getCount();\n\n if (this.options.strategy === 'BBOX+') {\n newData = {\n type: 'FeatureCollection',\n features: [],\n };\n for (const f of data.features) {\n if (_loadedIds.indexOf(String(f.id)) === -1) {\n _loadedIds.push(String(f.id));\n newData.features.push(f);\n }\n }\n _fullDataLoad = count !== undefined && _loadedIds.length >= count;\n await webMap.addLayerData(this, newData);\n } else {\n _fullDataLoad = count !== undefined && data.features.length >= count;\n await webMap.setLayerData(this, data);\n }\n this.emitter.emit('updated', data);\n webMap._emitLayerEvent('layer:updated', options.id || '', {\n data,\n newData,\n isFull: _fullDataLoad,\n });\n } catch (er) {\n if (er instanceof Error && er.name !== 'CancelError') {\n throw er;\n }\n }\n if (super.updateLayer) {\n super.updateLayer();\n }\n }\n\n async propertiesFilter(filters: PropertiesFilter, opt?: FilterOptions): Promise<void> {\n abort();\n if (this.filter && _fullDataLoad) {\n this.filter((e) => {\n const props_ =\n e.feature &&\n e.feature.properties &&\n prepareNgwFieldsToPropertiesFilter({ ...e.feature.properties });\n if (props_) {\n return propertiesFilter(props_, filters);\n }\n return true;\n });\n } else if (this.setData) {\n if (this.clearLayer) {\n this.clearLayer();\n }\n const data = await getData(filters, {\n ...opt,\n srs: this.options.srs,\n });\n this.setData(data);\n }\n }\n\n removeFilter() {\n _lastFilterArgs = undefined;\n this.propertiesFilter([]);\n if (this.filter) {\n this.filter(() => {\n return true;\n });\n }\n }\n\n private _addBboxEventListener() {\n this.__enableMapMoveListener = (e: LayerAdapter) => {\n if (e === this) {\n this._removeMoveEventListener();\n this.updateLayer();\n this._addMoveEventListener();\n }\n };\n this.__disableMapMoveListener = (e: LayerAdapter) => {\n if (e === this) {\n this._removeMoveEventListener();\n }\n };\n webMap.emitter.on('layer:show', this.__enableMapMoveListener);\n webMap.emitter.on('layer:hide', this.__disableMapMoveListener);\n this.__enableMapMoveListener(this);\n }\n\n private _removeBboxEventListener() {\n if (this.__enableMapMoveListener) {\n webMap.emitter.on('layer:show', this.__enableMapMoveListener);\n }\n if (this.__disableMapMoveListener) {\n webMap.emitter.on('layer:hide', this.__disableMapMoveListener);\n }\n }\n\n private _addMoveEventListener() {\n this.__onMapMove = debounce(() => this.updateLayer());\n this.__onMapMoveStart = abort;\n webMap.emitter.on('movestart', this.__onMapMoveStart);\n webMap.emitter.on('moveend', this.__onMapMove);\n }\n\n private _removeMoveEventListener() {\n if (this.__onMapMove) {\n webMap.emitter.removeListener('moveend', this.__onMapMove);\n }\n if (this.__onMapMoveStart) {\n webMap.emitter.removeListener('movestart', this.__onMapMoveStart);\n }\n }\n }\n\n return NgwGeoJsonAdapter;\n}\n","import { updateImageParams } from './utils';\n\nimport type {\n RasterAdapterOptions,\n ImageAdapterOptions,\n WmsAdapterOptions,\n MvtAdapterOptions,\n WebMap,\n} from '@nextgis/webmap';\nimport type { NgwLayerOptions, TileNoData } from '../interfaces';\n\nexport interface GetLayerAdapterOptions {\n options: NgwLayerOptions;\n webMap?: WebMap;\n baseUrl?: string;\n}\n\nexport interface GetImageAdapterOptionsParams {\n resourceId: number | number[];\n baseUrl?: string;\n nd?: TileNoData;\n headers: any;\n}\n\nexport function getImageAdapterOptions({\n resourceId,\n baseUrl,\n nd,\n headers,\n}: GetImageAdapterOptionsParams): ImageAdapterOptions {\n const url = baseUrl + '/api/component/render/image';\n const params: Record<string, any> = { resource: resourceId };\n if (nd) {\n params.nd = nd;\n }\n return {\n url,\n resourceId,\n headers,\n params,\n updateWmsParams: (params_: Record<string, any>) => {\n if (nd) {\n params_.nd = nd;\n }\n return updateImageParams(params_, resourceId);\n },\n } as ImageAdapterOptions;\n}\n\nexport function ngwApiToAdapterOptions({\n options,\n webMap,\n baseUrl,\n}: GetLayerAdapterOptions):\n | MvtAdapterOptions\n | RasterAdapterOptions\n | ImageAdapterOptions\n | undefined {\n let adapter = options.adapter || 'IMAGE';\n let url: string;\n const layerAdapters = webMap && webMap.getLayerAdapters();\n const isImageAllowed = layerAdapters ? layerAdapters.IMAGE : true;\n\n const resourceId = options.resource;\n const nd: TileNoData = options.tileNoData ? options.tileNoData : 200;\n\n if (typeof resourceId === 'number') {\n if (adapter === 'IMAGE') {\n if (isImageAllowed) {\n return getImageAdapterOptions({\n resourceId,\n headers: options.headers,\n nd,\n baseUrl,\n });\n } else {\n adapter = 'TILE';\n }\n }\n if (adapter === 'WMS') {\n url = `${baseUrl}/api/resource/${resourceId}/wms`;\n const adapterOptions = options.adapterOptions as WmsAdapterOptions;\n return {\n url,\n format: 'image/png',\n version: '1.1.1',\n layers: adapterOptions && adapterOptions.layers,\n headers: options.headers,\n };\n }\n if (adapter === 'MVT') {\n url =\n baseUrl +\n '/api/component/feature_layer/mvt?x={x}&y={y}&z={z}&' +\n 'resource=' +\n resourceId +\n '&simplification=' +\n (options.simplification ?? 6);\n // url = baseUrl + '/api/resource/' + options.resourceId + '/{z}/{x}/{y}.mvt';\n return {\n url,\n sourceLayer: 'ngw:' + resourceId,\n featureIdName: '$id',\n };\n }\n if (adapter === 'TERRAIN') {\n url = baseUrl + `/api/resource/${resourceId}/terrain_provider`;\n // `/api/resource/${resourceId}/terrain_provider/{z}/{x}/{y}.terrain`;\n return { url, adapter };\n }\n if (adapter === 'MODEL_3D') {\n url = baseUrl + `/api/component/model_3d/${resourceId}/data.glb`;\n return { url };\n }\n if (adapter === 'TILE') {\n url =\n baseUrl +\n '/api/component/render/tile?z={z}&x={x}&y={y}&resource=' +\n resourceId +\n '&nd=' +\n nd;\n return { url, adapter };\n }\n } else if (resourceId !== undefined) {\n throw new Error(\n 'Option `resource` must be number, not ' + typeof resourceId,\n );\n } else {\n console.log('Option `resource` not set');\n }\n}\n\n/** @deprecated use {@link ngwApiToAdapterOptions} instead */\nexport function getLayerAdapterOptions(\n options: NgwLayerOptions,\n webMap: WebMap,\n baseUrl: string,\n): RasterAdapterOptions | ImageAdapterOptions | undefined {\n return ngwApiToAdapterOptions({ options, webMap, baseUrl });\n}\n","import { defined } from '@nextgis/utils';\n\nimport { ngwApiToAdapterOptions } from '../utils/ngwApiToAdapterOptions';\nimport { resourceIdFromLayerOptions } from '../utils/resourceIdFromLayerOptions';\n\nimport type { Type } from '@nextgis/utils';\nimport type { ResourceItem, ResourceCls } from '@nextgis/ngw-connector';\nimport type { MainLayerAdapter, ImageAdapterOptions } from '@nextgis/webmap';\nimport type {\n ResourceAdapter,\n NgwLayerAdapterType,\n GetClassAdapterOptions,\n} from '../interfaces';\n\nexport async function createRasterAdapter({\n layerOptions,\n webMap,\n connector,\n item,\n}: GetClassAdapterOptions): Promise<Type<MainLayerAdapter> | undefined> {\n const resourceCls = item.resource.cls;\n const clsAdapterAlias: { [key in ResourceCls]?: NgwLayerAdapterType } = {\n wmsserver_service: 'WMS',\n tmsclient_layer: 'IMAGE',\n };\n let adapter =\n layerOptions.adapter ||\n (resourceCls && clsAdapterAlias[resourceCls]) ||\n 'IMAGE';\n if (adapter !== undefined) {\n layerOptions.adapter = adapter;\n }\n if (adapter === 'IMAGE') {\n const layerAdapters = webMap.getLayerAdapters();\n const isImageAllowed = layerAdapters ? layerAdapters.IMAGE : true;\n if (!isImageAllowed) {\n adapter = 'TILE';\n }\n }\n\n const AdapterClass = webMap.mapAdapter.layerAdapters[\n adapter\n ] as Type<MainLayerAdapter>;\n if (AdapterClass) {\n const resourceId = await resourceIdFromLayerOptions(\n layerOptions,\n connector,\n );\n return class RasterAdapter extends AdapterClass implements ResourceAdapter {\n // options = {};\n item?: ResourceItem = item;\n resourceId = resourceId;\n\n constructor(public map: any, _options: any) {\n super(map, _options);\n const opt = ngwApiToAdapterOptions({\n options: layerOptions,\n webMap,\n baseUrl: connector.options.baseUrl || '',\n });\n if (opt) {\n const layerAdapterOptions: ImageAdapterOptions = {\n ...opt,\n ...layerOptions.adapterOptions,\n params: { resource: resourceId },\n layers: opt.layers || String(resourceId),\n resourceId: resourceId,\n };\n if (\n layerOptions.adapterOptions &&\n defined(layerOptions.adapterOptions.setViewDelay)\n ) {\n layerAdapterOptions.setViewDelay =\n layerOptions.adapterOptions.setViewDelay;\n }\n this.options = { ...this.options, ...layerAdapterOptions };\n }\n }\n addLayer(addOptions: any) {\n return super.addLayer({ ...this.options, ...addOptions });\n }\n\n async getIdentificationIds(): Promise<number[]> {\n if (this.item) {\n if (adapter === 'MVT') {\n return [this.item.resource.id];\n }\n const id = this.item.resource.parent.id;\n if (defined(id)) {\n return [id];\n }\n }\n return [];\n }\n // beforeRemove() {\n\n // }\n };\n } else {\n throw new Error(adapter + ' not supported yet. Only TILE');\n }\n}\n","import { propertiesFilter } from '@nextgis/properties-filter';\n\nimport type { PropertyFilter } from '@nextgis/properties-filter';\nimport type {\n DefaultTreeItem,\n RelationFunction,\n SelfFilter,\n TreeRelation,\n} from './interfaces';\n\ntype D = DefaultTreeItem;\n\ntype TreeFunction<X extends D> = (\n item: X | X[],\n filter: SelfFilter<X>,\n relation: TreeRelation<X>,\n) => X | X[] | boolean | undefined;\n\ntype ItemPrepareFunction<F extends D> = (item: D) => F;\n\nexport function treeEvery<F extends D = D>(\n item: F | F[],\n filter?: PropertyFilter | SelfFilter<F>,\n relation?: TreeRelation<F>,\n itemPrepare?: ItemPrepareFunction<F>,\n): boolean {\n return !!treeWrapper<F>(item, filter, relation, treeEvery_, itemPrepare);\n}\n\nexport function treeSome<F extends D = D>(\n item: F | F[],\n filter?: PropertyFilter | SelfFilter<F>,\n relation?: TreeRelation<F>,\n itemPrepare?: ItemPrepareFunction<F>,\n): boolean {\n return !!treeWrapper<F>(item, filter, relation, treeFind_, itemPrepare);\n}\n\nexport function treeFind<F extends D = D>(\n item: F | F[],\n filter?: PropertyFilter | SelfFilter<F>,\n relation?: TreeRelation<F>,\n itemPrepare?: ItemPrepareFunction<F>,\n): F | undefined {\n return treeWrapper<F>(item, filter, relation, treeFind_, itemPrepare) as F;\n}\n\nexport function treeFilter<F extends D = D>(\n item: F | F[],\n filter?: PropertyFilter | SelfFilter<F>,\n relation?: TreeRelation<F>,\n itemPrepare?: ItemPrepareFunction<F>,\n): F[] {\n return treeWrapper<F>(\n item,\n filter,\n relation,\n treeFilter_,\n itemPrepare,\n ) as F[];\n}\n\nexport function getChildren<F extends D = D>(\n item: F,\n relation: TreeRelation<F> = 'children',\n): F[] | undefined {\n let children: F[] = [];\n const relationFunction: RelationFunction<F> =\n typeof relation === 'function' ? relation : (i): F[] => i[relation];\n const relChild = relationFunction(item);\n if (relChild) {\n if (Array.isArray(relChild)) {\n children = relChild;\n } else {\n children.push(relChild);\n }\n }\n return relChild ? children : undefined;\n}\n\nfunction treeWrapper<F extends D = D>(\n item: F | F[],\n filter: PropertyFilter | SelfFilter<F> = (x: F): boolean => !!x,\n relation: TreeRelation<F> = 'children',\n treeFunction: TreeFunction<F>,\n itemPrepare?: ItemPrepareFunction<F>,\n): F[] | F | boolean | undefined {\n const filterFunction: SelfFilter<F> =\n typeof filter === 'function'\n ? filter\n : (i: F): boolean => propertiesFilter(i, filter);\n if (itemPrepare) {\n return treeFunction(\n item,\n (i: F): boolean => filterFunction(itemPrepare(i)),\n relation,\n );\n }\n return treeFunction(item, filterFunction, relation);\n}\n\nfunction treeFind_<F extends D = D>(\n item: F | F[],\n filterFunc: SelfFilter<F> = (x: F): boolean => !!x,\n relation: TreeRelation<F>,\n _filtered: F[] = [],\n): F | undefined {\n let children: F[] = [];\n if (Array.isArray(item)) {\n children = item;\n } else {\n const filter = filterFunc(item);\n if (filter) {\n return item;\n }\n const relChildren = getChildren(item, relation);\n if (relChildren) {\n children = relChildren;\n }\n }\n\n for (let fry = 0; fry < children.length; fry++) {\n if (children[fry]) {\n const result = treeFind_(children[fry], filterFunc, relation, _filtered);\n if (result) {\n return result;\n }\n }\n }\n}\n\nfunction treeFilter_<F extends D = D>(\n item: F | F[],\n filterFunc: SelfFilter<F> = (x: F): boolean => !!x,\n relation: TreeRelation<F>,\n _filtered: F[] = [],\n): F[] {\n let children: F[] = [];\n if (Array.isArray(item)) {\n children = item;\n } else {\n const filter = filterFunc(item);\n if (filter) {\n _filtered.push(item);\n }\n const relChildren = getChildren(item, relation);\n if (relChildren) {\n children = relChildren;\n }\n }\n\n for (let fry = 0; fry < children.length; fry++) {\n if (children[fry]) {\n treeFilter_(children[fry], filterFunc, relation, _filtered);\n }\n }\n\n return _filtered;\n}\n\nfunction treeEvery_<F extends D = D>(\n item: F | F[],\n filterFunc: SelfFilter<F> = (x: F): boolean => !!x,\n relation: TreeRelation<F>,\n _filtered: F[] = [],\n): boolean {\n let children: F[] = [];\n if (Array.isArray(item)) {\n children = item;\n } else {\n const filter = filterFunc(item);\n if (!filter) {\n return false;\n }\n const relChildren = getChildren(item, relation);\n if (relChildren) {\n children = relChildren;\n }\n }\n\n for (let fry = 0; fry < children.length; fry++) {\n if (children[fry]) {\n const res = treeEvery_(children[fry], filterFunc, relation, _filtered);\n if (!res) {\n return false;\n }\n }\n }\n\n return true;\n}\n","import { treeFind, treeFilter, treeEvery, treeSome } from '@nextgis/tree';\nimport { Item } from './Item';\nimport { ItemOptions } from './interfaces';\n\nexport class TreeHelper {\n item: Item;\n\n private _children: Item[] = [];\n private _parent?: Item;\n\n constructor(item: Item) {\n this.item = item;\n }\n\n setParent(parent: Item): void {\n this._parent = parent;\n }\n\n addChild(child: Item): void {\n this._children.push(child);\n }\n\n getParent(): Item | undefined {\n return this._parent;\n }\n\n getParents<I extends Item = Item>(filterFunc?: (item: I) => boolean): I[] {\n const parent = this.getParent() as I;\n if (parent) {\n return treeFilter<I>(\n parent,\n filterFunc,\n (x: I) => x.tree.getParent() as I,\n );\n }\n return [];\n }\n\n getRoot<I extends Item = Item>(): I | undefined {\n let parent = this.getParent() as I;\n let toReturn = parent;\n while (parent) {\n parent = parent.tree.getParent() as I;\n if (parent) {\n toReturn = parent;\n }\n }\n return toReturn;\n }\n\n find(filterFunc?: (item: Item) => boolean): Item<ItemOptions> | undefined {\n return treeFind(this._children, filterFunc, (x) => {\n return x.tree.getChildren();\n });\n }\n\n every<I extends Item = Item>(filterFunc?: (item: I) => boolean): boolean {\n return treeEvery(this._children as I[], filterFunc, (x) => {\n return x.tree.getChildren();\n });\n }\n\n some<I extends Item = Item>(filterFunc?: (item: I) => boolean): boolean {\n return treeSome(this._children as I[], filterFunc, (x) => {\n return x.tree.getChildren();\n });\n }\n\n // getDescendants shortcut\n all(filterFunc?: (item: Item) => boolean): any[] {\n return this.getDescendants(filterFunc);\n }\n\n getDescendants(filterFunc?: (item: Item) => boolean): any[] {\n return treeFilter(this._children, filterFunc, (x) => {\n return x.tree.getChildren();\n });\n }\n\n getChildren<T extends Item = Item>(): T[] {\n return [...this._children] as T[];\n }\n}\n","import { EventEmitter } from 'events';\nimport type { Item } from '../Item';\nimport type { ItemBasePropertyOptions, ItemOptions } from '../interfaces';\n\nexport abstract class BaseProperty<\n V = any,\n O extends ItemBasePropertyOptions<V> = ItemBasePropertyOptions<V>,\n I extends Item = Item,\n> {\n options: O;\n\n emitter = new EventEmitter();\n name: string;\n\n item: I;\n protected _blocked = false;\n protected _container?: HTMLElement;\n protected _value?: V;\n\n private _removeEventsListener?: () => void;\n\n constructor(name: string, item: I, options: O) {\n this.item = item;\n this.options = Object.assign({}, options);\n this.name = name;\n this._value = this.getProperty();\n }\n\n getProperty(): V | undefined {\n if (typeof this.options.getProperty === 'function') {\n return this.options.getProperty.call(this, this.item);\n }\n return this.options.value;\n }\n\n getParents(): Item[] {\n return this.item.tree.getParents() || [];\n }\n\n getParent(): Item<ItemOptions> | undefined {\n return this.item.tree.getParent();\n }\n\n getChildren(): Item<ItemOptions>[] {\n return this.item.tree.getChildren();\n }\n\n isGroup(): number {\n const children = this.item.tree.getDescendants();\n return children.length;\n }\n\n isBlocked(): boolean {\n if (this._blocked !== undefined) {\n return this._blocked;\n }\n\n const parents = this.item.tree.getParents();\n this._blocked = this._calculateBlockedStatus(parents);\n return this._blocked;\n }\n\n set(value?: V, options?: O): void {\n this._value = this._prepareValue(value);\n\n this.update(this._value, options);\n this._fireChangeEvent(this._value, options);\n }\n\n // shortcut for getValue\n get(): V | undefined {\n return this.getValue();\n }\n\n update(value?: V, options?: O): void {\n this._callOnSet(value, options);\n }\n\n getContainer(): HTMLElement | undefined {\n return this._container;\n }\n\n destroy(): void {\n if (this._container) {\n const parentNode = this._container.parentNode;\n if (parentNode) {\n parentNode.removeChild(this._container);\n }\n }\n if (this._removeEventsListener) {\n this._removeEventsListener();\n }\n }\n\n getValue(): V | undefined {\n return this._value !== undefined ? this._value : this.getProperty();\n }\n\n protected _prepareValue(value?: V): V | undefined {\n return value;\n }\n\n protected _callOnSet<W extends V = V>(value?: W, options?: O): void {\n if (this.options.onSet) {\n this.options.onSet.call(this, value, options, this.item);\n }\n }\n\n protected _fireChangeEvent(value?: V, options?: O): void {\n if (this.emitter) {\n value = value !== undefined ? value : this.getValue();\n this.emitter.emit('change', { value, options });\n const parents = this.item.tree.getParents();\n parents.forEach((x) => {\n const prop = x.properties && x.properties.property(this.name);\n if (prop) {\n prop.emitter.emit('change-tree', {\n value,\n options,\n item: this.item,\n });\n }\n });\n }\n }\n\n private _calculateBlockedStatus(parents: Item[]): boolean {\n const isBlocked = parents.some((parent: Item) => {\n const parentProp = parent.properties?.property(this.name);\n return parentProp ? !parentProp.get() : false;\n });\n\n return isBlocked;\n }\n}\n","import { BaseProperty } from './BaseProperty';\n\nimport type { Item } from '../Item';\nimport type { CheckOptions } from '../interfaces';\n\ntype VAL = boolean;\n\ntype PreparedValue = any;\n\nexport class CheckProperty<\n V extends VAL = VAL,\n O extends CheckOptions<VAL> = CheckOptions<VAL>,\n> extends BaseProperty<VAL, CheckOptions<VAL>> {\n static options: CheckOptions = {\n hierarchy: true,\n bubble: false,\n propagation: false,\n label: 'Toggle',\n // PropertyContainer: IndicatorContainer\n };\n\n constructor(name: string, item: Item, options: O) {\n super(name, item, { ...CheckProperty.options, ...options });\n this.set(this.get());\n }\n\n update(value?: V, options?: O): void {\n if (value) {\n const bubble = (options && options.bubble) || this.options.bubble;\n if (bubble) {\n this.unBlock(options);\n const parent = this.getParent();\n const property =\n parent && parent.properties && parent.properties.property(this.name);\n if (property) {\n property.set(\n value,\n Object.assign({}, options, { bubble: true, propagation: false }),\n );\n }\n }\n if (!this.isBlocked()) {\n this._turnOn(options);\n }\n } else {\n this._turnOff(options);\n }\n const propagation =\n (options && options.propagation) || this.options.propagation;\n if (propagation) {\n this._propagation(value, options);\n }\n }\n\n getHierarchyValue(): boolean | undefined {\n return (\n this.get() &&\n this.getParents().every((x) => {\n const property = x.properties && x.properties.get(this.name);\n return property && property.get();\n })\n );\n }\n\n block(options?: O): void {\n this._blocked = true;\n this._block(options);\n }\n\n unBlock(options?: O): void {\n this._blocked = false;\n if (this.getValue()) {\n this._unBlock(options);\n }\n }\n\n blockChild(options?: O): void {\n this.item.tree\n .getDescendants()\n .forEach((x) => this._blockChild(x, options));\n }\n\n unblockChild(options?: O): void {\n this.item.tree.getChildren().forEach((x) => this._unBlockChild(x, options));\n }\n\n protected _prepareValue(value?: PreparedValue): V | undefined {\n return value;\n }\n\n private _turnOff(options?: O): void {\n if (this.options.turnOff) {\n this.options.turnOff.call(this, options);\n }\n this._callOnSet(false, options);\n if (this.options.hierarchy && this.isGroup()) {\n this.blockChild(options);\n }\n }\n\n private _turnOn(options?: O): void {\n if (this.options.turnOn) {\n this.options.turnOn.call(this, options);\n }\n this._callOnSet(true, options);\n if (this.options.hierarchy && this.isGroup()) {\n this.unblockChild(options);\n }\n }\n\n private _block(options?: O): void {\n this._turnOff(options);\n }\n\n private _unBlock(options?: O): void {\n this._turnOn(options);\n }\n\n private _blockChild(item: Item, options?: O): void {\n const prop =\n item.properties &&\n (item.properties.property(this.name) as CheckProperty<V, O>);\n if (prop && prop.block) {\n prop.block(options);\n }\n }\n\n private _unBlockChild(item: Item, options?: O): void {\n const prop =\n item.properties &&\n (item.properties.property(this.name) as CheckProperty<V, O>);\n if (prop && prop.unBlock) {\n prop.unBlock(options);\n }\n }\n\n private _propagation(value?: V, options?: O): void {\n if (this.isGroup()) {\n const children = this.item.tree.getChildren();\n for (let fry = 0; fry < children.length; fry++) {\n const child = children[fry];\n const property =\n child.properties &&\n (child.properties.property(this.name) as CheckProperty<V, O>);\n if (property) {\n property.set(value, {\n ...options,\n ...{\n propagation: true,\n bubble: false,\n },\n });\n }\n }\n }\n }\n}\n","import { BaseProperty } from './BaseProperty';\nimport { CheckProperty } from './CheckProperty';\nimport { Item } from '../Item';\n\nimport {\n ItemBasePropertyOptions,\n Type,\n ItemPropertyConfig,\n ItemPropertyTypes,\n} from '../interfaces';\n\n// Constants for property types\nconst BOOLEAN_TYPE = 'boolean';\nconst STRING_TYPE = 'string';\n\nexport class ItemProperties {\n static handlers: Record<string, Type<BaseProperty>> = {\n CheckProperty,\n };\n\n options: Record<string, any> = {};\n\n private _properties: Record<string, BaseProperty> = {};\n private _propertiesList: string[] = [];\n\n constructor(\n public item: Item,\n propertiesList?: ItemPropertyConfig<keyof ItemPropertyTypes>[],\n ) {\n if (propertiesList) {\n propertiesList.forEach(this._setPropertyHandler.bind(this));\n }\n }\n\n add(propOpt: ItemPropertyConfig<keyof ItemPropertyTypes>): void {\n this._setPropertyHandler(propOpt);\n }\n\n update(): void {\n this.list().forEach((x) => x.update());\n }\n\n get(name: string): any {\n const prop = this.property(name);\n return prop ? prop.get() : undefined;\n }\n\n set<K extends keyof ItemPropertyTypes>(\n name: string,\n value: ItemPropertyTypes[K],\n options?: ItemBasePropertyOptions<ItemPropertyTypes[K]>,\n ): void {\n const prop = this.property(name);\n if (prop && prop.getValue() !== value) {\n prop.set(value, options);\n }\n }\n\n property(name: string): BaseProperty<any, ItemBasePropertyOptions<any>> {\n return this._properties[name];\n }\n\n list(): BaseProperty<any, ItemBasePropertyOptions<any>>[] {\n return this._propertiesList.map((name) => this._properties[name]);\n }\n\n destroy(): void {\n for (const name in this._properties) {\n const prop = this.property(name);\n if (prop && prop.destroy) {\n prop.destroy();\n }\n }\n this._properties = {};\n this._propertiesList = [];\n }\n\n private _setPropertyHandler(\n propOpt: ItemPropertyConfig<keyof ItemPropertyTypes>,\n ): void {\n const Handler = this._getHandler(propOpt);\n if (Handler && propOpt.name) {\n const options = { ...propOpt };\n this._properties[propOpt.name] = new Handler(\n propOpt.name,\n this.item,\n options,\n );\n this._propertiesList.push(propOpt.name);\n }\n }\n\n private _getHandler(\n propOpt: ItemPropertyConfig<keyof ItemPropertyTypes>,\n ): Type<BaseProperty> | undefined {\n const Handler = propOpt.handler;\n if (!Handler && propOpt.type) {\n switch (propOpt.type) {\n case BOOLEAN_TYPE:\n return ItemProperties.handlers.CheckProperty;\n case STRING_TYPE:\n default:\n return ItemProperties.handlers.BaseProperty;\n }\n }\n return Handler;\n }\n}\n","import { TreeHelper } from './TreeHelper';\nimport { ItemProperties } from './properties/ItemProperties';\nimport { ItemOptions } from './interfaces';\n\nlet ID = 0;\nexport class Item<O extends ItemOptions = ItemOptions> {\n options: O = {} as O;\n\n properties!: ItemProperties;\n tree: TreeHelper;\n id = ID;\n\n constructor(options?: O) {\n ID += 1;\n this.options = { ...options } as O;\n this.tree = new TreeHelper(this);\n }\n\n initProperties(): void {\n this.properties = new ItemProperties(this, this.options.properties);\n }\n}\n","import { BaseProperty } from '@nextgis/item';\nimport type { ItemBasePropertyOptions } from '../../../item/src/interfaces';\nimport type { NgwWebmapItem } from '../NgwWebmapItem';\n\ntype VAL = number;\n\nexport class WebmapLayerOpacityPropertyHandler<\n V extends VAL = VAL,\n> extends BaseProperty<VAL, ItemBasePropertyOptions<VAL>, NgwWebmapItem> {\n getProperty(): number {\n const layer = this.item.layer;\n if (layer) {\n return layer && layer.options && layer.options.opacity !== undefined\n ? layer.options.opacity\n : 1;\n }\n return 1;\n }\n\n update(value: V, options?: ItemBasePropertyOptions<VAL>): void {\n options = options || {};\n\n if (this.isGroup()) {\n this._value = this._prepareValue(value, options);\n const children = this.getChildren();\n for (const child of children) {\n const property = child.properties.property(this.name);\n if (property) {\n if (options.propagation) {\n property.set(value, options);\n } else {\n property.update(property.get(), options);\n }\n }\n }\n }\n const layer = this.item.layer;\n if (layer) {\n const parents = this.getParents();\n const coef = parents.reduce((s, x) => {\n const prop = x.properties.property(this.name);\n const multiplier = prop ? prop.getValue() : 1;\n return s * multiplier;\n }, 1);\n const val = value * coef;\n this.item.webMap.setLayerOpacity(layer, this._prepareValue(val));\n }\n }\n\n protected _prepareValue(\n value: number,\n options?: ItemBasePropertyOptions<VAL>,\n ): number {\n if (options && options.propagation && this.isGroup()) {\n return 1;\n }\n // value = Number(value);\n // return value < 0.1 ? 0.1 : value;\n return Number(value);\n }\n}\n","import { EventEmitter } from 'events';\nimport { Item } from '@nextgis/item';\nimport { treeSome } from '@nextgis/tree';\nimport {\n WebMap,\n LayerAdapter,\n ImageAdapterOptions,\n LayerAdapterDefinition,\n VectorAdapterOptions,\n} from '@nextgis/webmap';\nimport { objectAssign } from '@nextgis/utils';\n\nimport { setScaleRatio } from './utils/utils';\nimport { WebmapLayerOpacityPropertyHandler } from './utils/WebmapLayerOpacityPropertyHandler';\n\nimport type { ItemOptions } from '@nextgis/item';\nimport type NgwConnector from '@nextgis/ngw-connector';\nimport type { TreeGroup, TreeLayer, TreeItem } from './interfaces';\n\nexport class NgwWebmapItem extends Item<ItemOptions> {\n static GetAdapterFromLayerType: {\n [layerType: string]: (\n item: TreeItem,\n options: any,\n webMap: WebMap,\n connector?: NgwConnector,\n ) => LayerAdapterDefinition;\n } = {};\n\n static options: ItemOptions = {\n properties: [\n {\n type: 'boolean',\n name: 'visibility',\n getProperty(item?: NgwWebmapItem): boolean {\n if (item) {\n if (\n item.item.item_type === 'group' ||\n item.item.item_type === 'root'\n ) {\n return treeSome<TreeGroup | TreeLayer>(\n item.item,\n (i) => ('layer_enabled' in i ? i.layer_enabled : false),\n (i) => (i as TreeGroup).children,\n );\n } else if (item.item.item_type === 'layer') {\n return item.item.layer_enabled;\n }\n // else if (item.item.item_type === 'root') {\n // return true;\n // }\n }\n return false;\n },\n onSet(\n value: boolean,\n options?: Record<string, any>,\n item?: NgwWebmapItem,\n ): void {\n if (item && item.item.item_type === 'layer') {\n if (item.layer) {\n if (value) {\n item.webMap.showLayer(item.layer);\n } else {\n item.webMap.hideLayer(item.layer);\n }\n }\n item.item['layer_enabled'] = value;\n }\n },\n },\n {\n name: 'opacity',\n handler: WebmapLayerOpacityPropertyHandler,\n },\n ],\n };\n\n item: TreeGroup | TreeLayer;\n connector?: NgwConnector;\n layer?: LayerAdapter;\n readonly emitter = new EventEmitter();\n\n protected _rootDescendantsCount = 0;\n\n constructor(\n public webMap: WebMap,\n item: TreeGroup | TreeLayer,\n options?: ItemOptions,\n connector?: NgwConnector,\n parent?: NgwWebmapItem,\n noInit?: boolean,\n ) {\n super({ ...NgwWebmapItem.options, ...options });\n if (connector) {\n this.connector = connector;\n }\n if (parent) {\n this.tree.setParent(parent);\n }\n this.item = item;\n if (this.item.item_type === 'root') {\n this._rootDescendantsCount = this._sumUp(this.item.children);\n } else {\n const root = this.tree.getRoot<this>();\n if (root) {\n this._rootDescendantsCount = root._rootDescendantsCount;\n }\n }\n this.initProperties();\n if (!noInit) {\n this._init(item);\n }\n }\n\n static async create(\n webMap: WebMap,\n item: TreeGroup | TreeLayer,\n options?: ItemOptions,\n connector?: NgwConnector,\n parent?: NgwWebmapItem,\n ): Promise<NgwWebmapItem> {\n const ngwWebmapItem = new NgwWebmapItem(\n webMap,\n item,\n options,\n connector,\n parent,\n true,\n );\n await ngwWebmapItem._init(item);\n return ngwWebmapItem;\n }\n\n initItem(item: TreeGroup | TreeLayer): Promise<void> {\n const i = item;\n const options: Partial<ImageAdapterOptions> = this.getItemOptions(item);\n const setNewLayer = (l: LayerAdapter) => {\n i._layer = l;\n this.layer = l;\n const enabled = this.properties.get('visibility');\n if (enabled) {\n this.properties.set('visibility', true);\n }\n\n if (options.opacity !== undefined) {\n this.webMap.setLayerOpacity(l, options.opacity);\n }\n };\n\n if (item.item_type === 'group' || item.item_type === 'root') {\n if (item.children && item.children.length) {\n const children = this.getChildren(item);\n for (const x of children) {\n const children = new (this.constructor as typeof NgwWebmapItem)(\n this.webMap,\n x,\n this.options,\n this.connector,\n this,\n );\n this.tree.addChild(children);\n }\n }\n return Promise.resolve();\n } else {\n let adapter: LayerAdapterDefinition | undefined;\n if (item.item_type === 'layer') {\n adapter = item.adapter || item.layer_adapter.toUpperCase();\n } else if (NgwWebmapItem.GetAdapterFromLayerType[item.item_type]) {\n const getAdapter =\n NgwWebmapItem.GetAdapterFromLayerType[item.item_type];\n adapter = getAdapter(item, options, this.webMap, this.connector);\n }\n if (adapter) {\n return this.webMap.addLayer(adapter, options).then((newLayer) => {\n setNewLayer(newLayer);\n });\n }\n }\n if (item._layer) {\n return Promise.resolve(setNewLayer(item._layer));\n }\n return Promise.reject('No layer added');\n }\n\n bringToFront(): void {\n //\n }\n\n fit(): void {\n if (this.item.item_type === 'layer') {\n // console.log(this.item);\n }\n }\n\n getLayer() {\n return this.layer;\n }\n\n protected getItemOptions(item: TreeGroup | TreeLayer): Record<string, any> {\n const transparency = item.item_type === 'layer' && item.layer_transparency;\n const opacity =\n typeof transparency === 'number' ? (100 - transparency) / 100 : undefined;\n const options: Partial<ImageAdapterOptions> &\n Pick<VectorAdapterOptions, 'popupOptions'> = {\n visibility: false,\n headers: this.options.headers,\n crossOrigin: this.options.crossOrigin,\n setViewDelay: this.options.setViewDelay,\n params: { resource: this.item.resourceId, item: this.item },\n };\n if (this.options.order) {\n const subOrder =\n this.options.drawOrderEnabled && 'draw_order_position' in item\n ? this._rootDescendantsCount - item.draw_order_position\n : this.id;\n\n // 9 > 0009, 11 > 0011\n // TODO: find better way to set order in sub level, not limit by 1000 layer in group\n const subLevel = String(subOrder).padStart(4, '0');\n options.order = Number((this.options.order | 0) + '.' + subLevel);\n }\n if (this.options.popupOptions) {\n options.popupOptions = this.options.popupOptions;\n }\n if (item.item_type === 'layer') {\n const { maxZoom, minZoom } = this._getZoomRange(item);\n\n objectAssign(options, {\n updateWmsParams: item.updateWmsParams,\n url: item.url,\n headers: this.options.headers,\n ratio: this.options.ratio,\n maxZoom,\n minZoom,\n minScale: item.layer_min_scale_denom,\n maxScale: item.layer_max_scale_denom,\n });\n }\n if (opacity !== undefined) {\n options.opacity = opacity;\n }\n return options;\n }\n\n protected getChildren(item: TreeGroup): (TreeGroup | TreeLayer)[] {\n return [...item.children].reverse();\n }\n\n private _mapScaleToZoomLevel(scale: number) {\n return setScaleRatio(scale);\n }\n\n private _getZoomRange(item: TreeLayer) {\n const minZoomWebmap = this.options.minZoom;\n const maxZoomWebmap = this.options.maxZoom;\n\n const minZoomLayer = item.layer_min_scale_denom\n ? this._mapScaleToZoomLevel(item.layer_min_scale_denom)\n : undefined;\n const maxZoomLayer = item.layer_max_scale_denom\n ? this._mapScaleToZoomLevel(item.layer_max_scale_denom)\n : undefined;\n\n const minZooms = [minZoomWebmap, minZoomLayer].filter(Boolean) as number[];\n const maxZooms = [maxZoomWebmap, maxZoomLayer].filter(Boolean) as number[];\n const minZoom = minZooms.length ? Math.max(...minZooms) : undefined;\n const maxZoom = maxZooms.length ? Math.min(...maxZooms) : undefined;\n return { minZoom, maxZoom };\n }\n\n private _init(item: TreeGroup | TreeLayer) {\n this.initItem(item).then(() => {\n this.emitter.emit('init');\n });\n }\n\n private _sumUp(children: Array<TreeGroup | TreeLayer>, totalValue = 0) {\n for (const child of children) {\n if (child.item_type === 'layer') {\n totalValue += 1;\n child.draw_order_position = child.draw_order_position || totalValue;\n } else if (child.item_type === 'group') {\n totalValue = this._sumUp(child.children, totalValue);\n }\n }\n return totalValue;\n }\n}\n","import type { WebMap, MainLayerAdapter, AdapterOptions } from '@nextgis/webmap';\nimport type { Type } from '@nextgis/utils';\n\ninterface CreateOnFirstShowAdapterOptions {\n webMap: WebMap;\n adapterOptions?: Record<string, any>;\n onLayerAdded?: <L extends MainLayerAdapter = MainLayerAdapter>(\n layer: L,\n ) => void;\n createAdapter: (\n firstShowAdapter: FirstShowAdapter,\n ) => Promise<Type<MainLayerAdapter> | undefined>;\n}\n\ninterface FirstShowAdapter extends MainLayerAdapter {\n loadLayer: () => Promise<MainLayerAdapter[]>;\n destroyed: () => boolean;\n}\n\nexport async function createOnFirstShowAdapter({\n webMap,\n adapterOptions = {},\n onLayerAdded,\n createAdapter,\n}: CreateOnFirstShowAdapterOptions): Promise<Type<FirstShowAdapter>> {\n class OnFirstShowAdapter implements MainLayerAdapter {\n options: AdapterOptions = {};\n layer: MainLayerAdapter[] = [];\n _removed = false;\n _creatingInProgress = false;\n\n addLayer() {\n return this.layer;\n }\n\n removeLayer() {\n this._removed = true;\n for (const l of this.layer) {\n webMap.removeLayer(l);\n }\n }\n\n destroyed() {\n return this._removed;\n }\n\n async showLayer() {\n this.options.visibility = true;\n if (this.layer.length) {\n for (const x of this.layer) {\n await webMap.showLayer(x);\n }\n } else {\n await this.loadLayer();\n }\n }\n\n async hideLayer() {\n this.options.visibility = false;\n if (this.layer) {\n for (const x of this.layer) {\n await webMap.hideLayer(x);\n }\n }\n }\n\n async loadLayer() {\n if (!this.layer.length && !this._creatingInProgress) {\n this._creatingInProgress = true;\n const Adapter = await createAdapter(this);\n if (Adapter) {\n const adapter = new Adapter(webMap.mapAdapter.map, {\n ...adapterOptions,\n });\n const realLayer: MainLayerAdapter = await adapter.addLayer({\n order: this.options.order,\n headers: this.options.headers,\n baselayer: this.options.baselayer,\n });\n if (onLayerAdded) {\n onLayerAdded(adapter);\n }\n Object.assign(adapter.options, adapterOptions);\n adapter.layer = realLayer;\n if (this._removed) {\n webMap.removeLayer(adapter);\n }\n this.layer.push(adapter);\n if (this.options.visibility) {\n await webMap.showLayer(adapter);\n }\n this._creatingInProgress = false;\n }\n }\n return this.layer;\n }\n }\n return OnFirstShowAdapter;\n}\n","import { Type } from '@nextgis/utils';\nimport { WebMap, MainLayerAdapter } from '@nextgis/webmap';\nimport NgwConnector, { BasemapWebmapItem } from '@nextgis/ngw-connector';\nimport { createAsyncAdapter } from './createAsyncAdapter';\nimport { createOnFirstShowAdapter } from './createOnFirstShowAdapter';\n\ninterface CreateOnFirstShowAdapterOptions {\n webMap: WebMap;\n connector: NgwConnector;\n item: BasemapWebmapItem;\n adapterOptions?: Record<string, any>;\n idPrefix?: string;\n}\n\nexport async function createOnFirstShowNgwAdapter({\n webMap,\n connector,\n item,\n adapterOptions = {},\n idPrefix = 'first-show-adapter',\n}: CreateOnFirstShowAdapterOptions): Promise<Type<MainLayerAdapter>> {\n const createAdapter = () => {\n return createAsyncAdapter(\n {\n resource: item.resource_id,\n adapterOptions: {\n name: item.display_name,\n opacity: item.opacity,\n },\n },\n webMap,\n connector,\n );\n };\n const onLayerAdded = (adapter: MainLayerAdapter) => {\n adapter.options.baselayer = false;\n adapter.id = idPrefix + '-' + item.resource_id;\n };\n\n const OnFirstNgwShowAdapter = createOnFirstShowAdapter({\n webMap,\n adapterOptions,\n onLayerAdded,\n createAdapter,\n });\n\n return OnFirstNgwShowAdapter;\n}\n","import { Feature, Point } from 'geojson';\nimport { createGeoJsonFeature, fetchNgwLayerItem } from '@nextgis/ngw-kit';\nimport CancelablePromise from '@nextgis/cancelable-promise';\n\nimport type NgwConnector from '@nextgis/ngw-connector';\nimport type { FeatureItem } from '@nextgis/ngw-connector';\nimport type { LngLatBoundsArray } from '@nextgis/utils';\n\ninterface BookmarkItemOptions {\n connector: NgwConnector;\n resourceId: number;\n item: FeatureItem;\n labelField?: string;\n}\n\nexport class BookmarkItem {\n readonly name: string;\n readonly resourceId: number;\n readonly item: FeatureItem;\n\n private _extent?: LngLatBoundsArray;\n\n constructor(private options: BookmarkItemOptions) {\n this.resourceId = options.resourceId;\n const item = options.item;\n this.item = item;\n if (options.labelField && item.fields) {\n this.name = item.fields[options.labelField];\n } else {\n this.name = String(item.id);\n }\n }\n\n extent(): CancelablePromise<LngLatBoundsArray> {\n if (this._extent) {\n return CancelablePromise.resolve(this._extent);\n }\n return this.options.connector\n .get('feature_layer.feature.item_extent', null, {\n id: this.resourceId,\n fid: this.item.id,\n })\n .then((resp) => {\n const { minLat, minLon, maxLat, maxLon } = resp.extent;\n const lonLat = [minLon, minLat, maxLon, maxLat];\n this._extent = lonLat;\n return lonLat;\n });\n }\n\n geoJson(): CancelablePromise<Feature<Point, any>> {\n if (this.item.geom) {\n return CancelablePromise.resolve(createGeoJsonFeature(this.item));\n } else {\n return fetchNgwLayerItem({\n resourceId: this.resourceId,\n featureId: this.item.id,\n connector: this.options.connector,\n geom: true,\n fields: null,\n extensions: null,\n }).then((onlyGeomItem) => {\n const geom = onlyGeomItem.geom;\n this.item.geom = geom;\n return createGeoJsonFeature(this.item);\n });\n }\n }\n}\n","import { EventEmitter } from 'events';\n\nimport CancelablePromise from '@nextgis/cancelable-promise';\nimport { fixUrlStr } from '@nextgis/utils';\nimport {\n fetchNgwLayerItems,\n WEBMAP_BASELAYER_ID_PREFIX,\n} from '@nextgis/ngw-kit';\n\nimport { NgwWebmapItem } from './NgwWebmapItem';\nimport { createOnFirstShowNgwAdapter } from './adapters/createOnFirstShowNgwAdapter';\nimport { ngwApiToAdapterOptions } from './utils/ngwApiToAdapterOptions';\nimport { getNgwWebmapExtent } from './utils/fetchNgwExtent';\nimport { updateImageParams } from './utils/utils';\nimport { BookmarkItem } from './BookmarkItem';\n\nimport type StrictEventEmitter from 'strict-event-emitter-types';\nimport type { Type, LngLatBoundsArray } from '@nextgis/utils';\nimport type { ItemOptions } from '@nextgis/item';\nimport type {\n WebmapResource,\n BasemapWebmap,\n ResourceItem,\n} from '@nextgis/ngw-connector';\nimport type { WebMap, RasterAdapterOptions } from '@nextgis/webmap';\nimport type {\n TreeGroup,\n TreeLayer,\n ResourceAdapter,\n NgwLayerAdapterType,\n NgwWebmapAdapterOptions,\n NgwWebmapLayerAdapterEvents,\n} from './interfaces';\n\nexport class NgwWebmapLayerAdapter<M = any> implements ResourceAdapter<M> {\n layer?: NgwWebmapItem;\n\n NgwWebmapItem: Type<NgwWebmapItem> = NgwWebmapItem;\n /**\n * Radius for searching objects in pixels\n */\n pixelRadius = 10; // webmapSettings.identify_radius,\n resourceId!: number;\n webmapClassName = 'webmap';\n readonly emitter: StrictEventEmitter<\n EventEmitter,\n NgwWebmapLayerAdapterEvents\n > = new EventEmitter();\n protected _extent?: LngLatBoundsArray;\n\n private response?: ResourceItem;\n private _webmapLayersIds?: number[];\n private _webmapBaselayersIds: string[] = [];\n private _lastActiveBaselayer?: string;\n\n constructor(public map: M, public options: NgwWebmapAdapterOptions) {\n const r = options.resourceId;\n\n if (Array.isArray(r)) {\n this.resourceId = r[0];\n this.options.id = r[1];\n } else {\n this.resourceId = r;\n }\n\n if (!this.resourceId) {\n throw new Error('NGW `resourceId` is not defined');\n }\n }\n\n async addLayer(options: NgwWebmapAdapterOptions): Promise<any> {\n this.options = { ...this.options, ...options };\n this.layer = await this._getWebMapLayerItem();\n const extentConstrained = this.response?.webmap?.extent_constrained;\n if (\n this.options.useExtentConstrained &&\n this._extent &&\n extentConstrained\n ) {\n this.options.webMap.setView({ maxBounds: this._extent });\n }\n return this.layer;\n }\n\n removeLayer(): void {\n const mapAdapter = this.options.webMap.mapAdapter;\n\n this.getDependLayers().forEach((x) => {\n if (!('layer' in x)) return;\n // @ts-ignore Update x interface\n mapAdapter.removeLayer(x.layer.layer);\n });\n\n if (this._webmapBaselayersIds.length) {\n for (const b of this._webmapBaselayersIds) {\n this.options.webMap.removeLayer(b);\n }\n if (this._lastActiveBaselayer) {\n this.options.webMap.showLayer(this._lastActiveBaselayer);\n }\n }\n\n if (this.options.useExtentConstrained && this._extent) {\n this.options.webMap.setView({ maxBounds: null });\n }\n\n delete this.layer;\n delete this.response;\n delete this._webmapLayersIds;\n }\n\n async showLayer(): Promise<void> {\n if (this.layer && this.layer.properties) {\n return this.layer.properties.property('visibility').set(true);\n }\n }\n\n async hideLayer(): Promise<void> {\n if (this.layer && this.layer.properties) {\n return this.layer.properties.property('visibility').set(false);\n }\n }\n\n async setOpacity(val: number): Promise<void> {\n if (this.layer && this.layer.properties) {\n return this.layer.properties.property('opacity').set(val);\n }\n }\n\n /** @deprecated use {@link NgwWebmapLayerAdapter.getBounds} instead */\n getExtent(): LngLatBoundsArray | undefined {\n return this.getBounds();\n }\n\n getBounds(): LngLatBoundsArray | undefined {\n const webmap = this.response && this.response.webmap;\n if (webmap) {\n return getNgwWebmapExtent(webmap);\n }\n }\n\n getDependLayers(): Array<NgwWebmapItem> {\n return (this.layer && this.layer.tree.getDescendants()) || [];\n }\n\n getBookmarksResourceId(): number | undefined {\n const webmap = this.response && this.response.webmap;\n if (webmap) {\n return webmap.bookmark_resource.id;\n }\n }\n\n fetchBookmarks(): CancelablePromise<BookmarkItem[]> {\n const bookmarkResId = this.getBookmarksResourceId();\n const connector = this.options.connector;\n if (bookmarkResId) {\n return connector.getResourceOrFail(bookmarkResId).then((item) => {\n const labelField = item.feature_layer?.fields.find(\n (x) => x.label_field,\n );\n const keyname = labelField && labelField.keyname;\n return fetchNgwLayerItems({\n connector,\n resourceId: bookmarkResId,\n geom: false,\n fields: keyname ? [keyname] : undefined,\n }).then((items) => {\n const bookmarks: BookmarkItem[] = [];\n for (const i of items) {\n const bookmark = new BookmarkItem({\n item: i,\n resourceId: bookmarkResId,\n labelField: keyname,\n connector,\n });\n bookmarks.push(bookmark);\n }\n return bookmarks;\n });\n });\n }\n throw new Error(\n 'Webmap was not loaded correctly, it is impossible to extract bookmarks',\n );\n }\n\n async getIdentificationIds(): Promise<number[]> {\n const visibleLayers: number[] = [];\n let ids = this._webmapLayersIds;\n if (!ids) {\n ids = await this._getWebMapIds();\n this._webmapLayersIds = ids;\n }\n if (ids && ids.length) {\n let deps = this.getDependLayers();\n deps = deps.sort((a, b) => b.id - a.id);\n deps.forEach((x) => {\n const item = x.item;\n const parentId = item.parentId;\n if (parentId !== undefined && item.item_type === 'layer') {\n const visible = x.properties.property('visibility');\n const isVisible = visible.get() && !visible.isBlocked();\n if (isVisible) {\n visibleLayers.push(parentId);\n }\n }\n });\n }\n return visibleLayers;\n }\n\n protected async _getWebMapLayerItem(): Promise<NgwWebmapItem | undefined> {\n if (this.resourceId) {\n const webmap = await this.getWebMapConfig(this.resourceId);\n if (webmap && webmap.root_item) {\n return new Promise<NgwWebmapItem>((resolve) => {\n const options: ItemOptions = {};\n if (this.options.connector && this.options.connector.options.auth) {\n const headers = this.options.connector.getAuthorizationHeaders();\n if (headers) {\n options.headers = headers;\n }\n }\n options.setViewDelay = this.options.setViewDelay;\n options.order = this.options.order;\n options.ratio = this.options.ratio;\n options.crossOrigin = this.options.crossOrigin;\n options.minZoom = this.options.minZoom;\n options.maxZoom = this.options.maxZoom;\n options.drawOrderEnabled = webmap.draw_order_enabled;\n options.popupOptions = this.options.popupOptions;\n const layer = new this.NgwWebmapItem(\n this.options.webMap,\n webmap.root_item,\n options,\n this.options.connector,\n );\n layer.emitter.on('init', () => resolve(layer));\n });\n }\n }\n }\n\n private async getWebMapConfig(id: number) {\n const data = await this.options.connector.getResource(id);\n if (data) {\n this.response = data;\n const webmap = data[\n this.webmapClassName as keyof ResourceItem\n ] as WebmapResource;\n this._setupBaselayers(data);\n if (webmap) {\n this._extent = [\n webmap.extent_left,\n webmap.extent_bottom,\n webmap.extent_right,\n webmap.extent_top,\n ];\n this._updateItemsParams(webmap.root_item, this.options.webMap, data);\n return webmap;\n } else {\n // TODO: resource is no webmap\n }\n }\n }\n\n private _setupBaselayers(data: ResourceItem) {\n const webMap = this.options.webMap;\n const basemap = this.options.useBasemap ?? true;\n if (basemap) {\n if (data.basemap_webmap && data.basemap_webmap.basemaps.length) {\n const activeBaselayer = webMap.getActiveBaseLayer();\n this._lastActiveBaselayer = activeBaselayer\n ? activeBaselayer.id\n : undefined;\n this._setBasemaps(data.basemap_webmap);\n } else if (this.options.defaultBasemap) {\n webMap.addBaseLayer('OSM', {\n id: 'webmap-default-baselayer',\n name: 'OpenStreetMap',\n });\n }\n }\n }\n\n private _setBasemaps(baseWebmap: BasemapWebmap) {\n const webMap = this.options.webMap;\n // to avoid set many basemaps on init\n let enabledAlreadySet = false;\n for (const x of baseWebmap.basemaps) {\n createOnFirstShowNgwAdapter({\n webMap,\n connector: this.options.connector,\n item: x,\n adapterOptions: { crossOrigin: this.options.crossOrigin },\n }).then((adapter) => {\n const visibility = enabledAlreadySet ? false : x.enabled;\n if (x.enabled) {\n enabledAlreadySet = true;\n }\n return webMap\n .addBaseLayer(adapter, {\n id: WEBMAP_BASELAYER_ID_PREFIX + x.resource_id,\n name: x.display_name,\n opacity: x.opacity,\n visibility,\n })\n .then((l) => {\n l.id && this._webmapBaselayersIds.push(l.id);\n });\n });\n }\n }\n\n private _updateItemsParams(\n item: TreeGroup | TreeLayer,\n webMap: WebMap,\n data: ResourceItem,\n ) {\n if (item) {\n if (item.item_type === 'group' || item.item_type === 'root') {\n if (item.children) {\n item.children = item.children.map((x) =>\n this._updateItemsParams(x, webMap, data),\n );\n }\n if (item.item_type === 'root') {\n item.display_name = data.resource.display_name;\n }\n } else if (item.item_type === 'layer') {\n const url = fixUrlStr(\n this.options.connector.options.baseUrl +\n '/api/component/render/image',\n );\n const resourceId = item.layer_style_id;\n item.url = url;\n item.resourceId = resourceId;\n item.updateWmsParams = (params) =>\n updateImageParams(params, resourceId);\n const adapter = item.layer_adapter.toUpperCase() as NgwLayerAdapterType;\n const layerAdapterOptions = ngwApiToAdapterOptions({\n options: {\n adapter,\n resource: resourceId,\n },\n webMap,\n baseUrl: this.options.connector.options.baseUrl || '',\n }) as RasterAdapterOptions;\n item = {\n ...item,\n ...layerAdapterOptions,\n };\n }\n }\n return item;\n }\n\n private async _getWebMapIds(): Promise<number[] | undefined> {\n const webMapItem = this.layer;\n if (webMapItem && webMapItem.item.item_type === 'root') {\n const layers = webMapItem.tree.getDescendants();\n const promises: Array<CancelablePromise<any>> = [];\n for (const x of layers) {\n const item = x.item;\n if (item.item_type === 'layer') {\n const id = item.layer_style_id;\n const promise = this.options.connector.getResource(id).then((y) => {\n if (y) {\n const parentId = Number(y.resource.parent.id);\n item.parentId = parentId;\n return parentId;\n }\n });\n promises.push(promise);\n }\n }\n const ids = await Promise.all(promises);\n return ids.filter((x) => x !== undefined);\n }\n }\n}\n","import { NgwWebmapLayerAdapter as NWLayerAdapter } from '../NgwWebmapLayerAdapter';\nimport { resourceIdFromLayerOptions } from '../utils/resourceIdFromLayerOptions';\n\nimport type { Type } from '@nextgis/utils';\nimport type { GetClassAdapterOptions } from '../interfaces';\n\nexport async function createWebMapAdapter({\n layerOptions: options,\n webMap,\n connector,\n}: GetClassAdapterOptions): Promise<Type<NWLayerAdapter>> {\n const resourceId = await resourceIdFromLayerOptions(options, connector);\n return class NgwWebmapLayerAdapter extends NWLayerAdapter {\n constructor(map: any) {\n super(map, {\n url: '',\n webMap,\n resourceId,\n connector,\n });\n }\n };\n}\n","import type { LayerAdaptersOptions, AdapterOptions } from '@nextgis/webmap';\n\nimport type { QmsBasemap, QmsLayerType } from '../interfaces';\n\nexport const alias: { [key in QmsLayerType]: keyof LayerAdaptersOptions } = {\n tms: 'TILE',\n};\n\nexport function updateQmsOptions(\n qms: QmsBasemap,\n): AdapterOptions & { url: string } {\n const protocol = (location.protocol === 'https:' ? 'https' : 'http') + '://';\n let serviceUrl = qms.url.replace(/^(https?|ftp):\\/\\//, protocol);\n if (!qms.y_origin_top) {\n serviceUrl = serviceUrl.replace('{y}', '{-y}');\n }\n return {\n url: serviceUrl,\n name: qms.name,\n attribution: qms.copyright_text,\n maxZoom: qms.z_max,\n minZoom: qms.z_min,\n };\n}\n","import { fixUrlStr } from '@nextgis/utils';\n\nexport function loadJson<T = any>(url: string): Promise<T> {\n return new Promise<T>((resolve, reject) => {\n const xmlHttp = new XMLHttpRequest();\n xmlHttp.onreadystatechange = () => {\n if (xmlHttp.readyState === 4 && xmlHttp.status === 200) {\n if (xmlHttp.responseText) {\n try {\n resolve(JSON.parse(xmlHttp.responseText));\n } catch (er) {\n reject(er);\n }\n }\n }\n };\n xmlHttp.open('GET', fixUrlStr(url), true); // true for asynchronous\n xmlHttp.send();\n });\n}\n","export function getSubdomainsOriginUrl(originUrl: string): [string, string[]] {\n const submodules: string[] = [];\n originUrl = originUrl.replace(/{switch:(.*?)}/, (m, group) => {\n if (typeof group === 'string') {\n group.split(',').forEach((s) => submodules.push(s));\n }\n return '{s}';\n });\n return [originUrl, submodules];\n}\n","import { mixinProperties } from '@nextgis/utils';\nimport { alias, updateQmsOptions } from './updateQmsOptions';\nimport { loadJson } from './loadJson';\nimport { getSubdomainsOriginUrl } from './getSubmodulesFromOriginUrl';\n\nimport type { Type } from '@nextgis/utils';\nimport type { WebMap, MainLayerAdapter } from '@nextgis/webmap';\nimport type {\n QmsAdapterOptions,\n QmsBasemap,\n QmsAdapter as QA,\n CreateQmsAdapterOptions,\n} from '../interfaces';\n\nconst URL = 'https://qms.nextgis.com';\n\nexport function createQmsAdapter(\n options: CreateQmsAdapterOptions,\n): Type<MainLayerAdapter>;\nexport function createQmsAdapter(\n webMap: WebMap,\n url?: string,\n createOpt?: Partial<QmsAdapterOptions>,\n): Type<MainLayerAdapter>;\nexport function createQmsAdapter(\n webMapOrOptions: WebMap | CreateQmsAdapterOptions,\n url = URL,\n createOpt: Partial<QmsAdapterOptions> = {},\n): Type<MainLayerAdapter> {\n let webMap: WebMap;\n if ('webMap' in webMapOrOptions) {\n const { webMap: webMap_, url: url_, ...adapterOptions } = webMapOrOptions;\n webMap = webMap_;\n if (url_) {\n url = url_;\n }\n if (adapterOptions) {\n createOpt = adapterOptions;\n }\n } else {\n webMap = webMapOrOptions;\n }\n\n if (!url) {\n url = URL;\n }\n class QmsAdapter<M = any> implements MainLayerAdapter<M>, QA {\n qms?: QmsBasemap;\n\n options: QmsAdapterOptions;\n map: M;\n\n constructor(map: M, options: QmsAdapterOptions) {\n this.map = map;\n const opt = { ...createOpt, ...options };\n this.options = opt;\n this.options.baselayer = true;\n if (opt.qms) {\n this.qms = opt.qms;\n }\n }\n\n async addLayer(options: QmsAdapterOptions): Promise<any> {\n // qmsId for request, id for store\n if (!this.qms && options.qmsId) {\n try {\n this.qms = await loadJson<QmsBasemap>(\n url + '/api/v1/geoservices/' + options.qmsId,\n );\n } catch (er) {\n console.error(er);\n }\n }\n const qms = this.qms;\n if (qms) {\n const type = alias[qms.type || 'tms'];\n const WebMapAdapter = webMap.mapAdapter.layerAdapters[type];\n if (WebMapAdapter) {\n mixinProperties(QmsAdapter, WebMapAdapter, [\n 'showLayer',\n 'hideLayer',\n ]);\n if (type === 'TILE') {\n options = {\n order: 0,\n maxZoom: webMap.options.maxZoom,\n minZoom: webMap.options.minZoom,\n ...this.options,\n ...updateQmsOptions(qms),\n };\n if (qms.origin_url) {\n const [url, subdomains] = getSubdomainsOriginUrl(qms.origin_url);\n if (subdomains.length) {\n options.subdomains = subdomains;\n options.url = url;\n }\n }\n this.options = options;\n const adapter = new WebMapAdapter(this.map, options);\n return adapter.addLayer(options);\n }\n }\n }\n }\n }\n return QmsAdapter;\n}\n","import { createQmsAdapter } from './utils/createQmsAdapter';\n\nimport type { Type } from '@nextgis/utils';\nimport type {\n WebMap,\n StarterKit,\n MainLayerAdapter,\n LayerAdapterCreators,\n} from '@nextgis/webmap';\nimport type { QmsOptions } from './interfaces';\n\nexport class QmsKit implements StarterKit {\n static utils = {\n createQmsAdapter,\n };\n\n options: QmsOptions = {\n url: 'https://qms.nextgis.com',\n };\n\n url: string;\n\n constructor(options?: QmsOptions) {\n this.options = { ...this.options, ...options };\n this.url = this.options.url;\n }\n\n getLayerAdapters(): Promise<LayerAdapterCreators[]> {\n return Promise.resolve([\n {\n name: 'QMS',\n createAdapter: (webmap: WebMap) =>\n Promise.resolve(this._createAdapter(webmap)),\n },\n ]);\n }\n\n private _createAdapter(webMap: WebMap): Type<MainLayerAdapter> {\n return createQmsAdapter({ webMap, url: this.url });\n }\n}\n","import { QmsKit } from '@nextgis/qms-kit';\n\nimport type { Type } from '@nextgis/utils';\nimport type { MainLayerAdapter, TileAdapterOptions } from '@nextgis/webmap';\nimport type { GetClassAdapterOptions } from '../interfaces';\n\nexport async function createBasemapLayerAdapter({\n webMap,\n item,\n}: GetClassAdapterOptions): Promise<Type<MainLayerAdapter> | undefined> {\n if (item.basemap_layer) {\n const qms = item.basemap_layer.qms;\n const url = item.basemap_layer.url;\n if (qms) {\n const qms_ = JSON.parse(qms);\n const adapter = Promise.resolve(\n QmsKit.utils.createQmsAdapter(webMap, undefined, {\n qms: qms_,\n baselayer: true,\n }),\n );\n return adapter;\n } else if (url) {\n const TileAdapter = webMap.mapAdapter.layerAdapters.TILE as Type<\n MainLayerAdapter<any, any, TileAdapterOptions>\n >;\n if (TileAdapter) {\n class BasemapTileAdapter extends TileAdapter {\n async addLayer(opt: TileAdapterOptions) {\n return super.addLayer({ ...opt, url });\n }\n }\n return BasemapTileAdapter;\n }\n }\n }\n}\n","import NgwConnector, {\n ResourceCls,\n ResourceItem,\n} from '@nextgis/ngw-connector';\nimport { WebMap } from '@nextgis/webmap';\nimport { Type, applyMixins } from '@nextgis/utils';\n\nimport { vectorLayerGeomToPaintTypeAlias } from '../utils/utils';\nimport { NgwResource } from '../NgwResource';\nimport { createGeoJsonAdapter } from './createGeoJsonAdapter';\nimport { createRasterAdapter } from './createRasterAdapter';\nimport { createWebMapAdapter } from './createNgwWebmapAdapter';\nimport { resourceIdFromLayerOptions } from '../utils/resourceIdFromLayerOptions';\nimport { createBasemapLayerAdapter } from './createBasemapLayerAdapter';\n\nimport type {\n GetClassAdapterCallback,\n GetClassAdapterOptions,\n GetClassAdapterByType,\n ResourceAdapter,\n NgwLayerOptions,\n GetClassAdapter,\n ClassAdapter,\n} from '../interfaces';\n\nexport const classAdapters: Record<string, GetClassAdapter> = {};\n\nconst supportCls: ResourceCls[] = [\n 'mapserver_style',\n 'qgis_vector_style',\n 'qgis_raster_style',\n 'wmsserver_service',\n 'raster_style',\n 'basemap_layer',\n 'vector_layer',\n 'raster_layer',\n 'postgis_layer',\n 'webmap',\n // in tms branch\n 'tmsclient_layer',\n];\n\nasync function createAdapterFromFirstStyle({\n layerOptions,\n webMap,\n connector,\n item,\n}: GetClassAdapterOptions) {\n const parent = item.resource.id;\n const childrenStyles = await connector.getResourceChildren(parent);\n const firstStyle = childrenStyles && childrenStyles[0];\n if (firstStyle) {\n return createAsyncAdapter(\n { ...layerOptions, resource: firstStyle.resource.id },\n webMap,\n connector,\n );\n }\n}\n\nexport async function createAsyncAdapter(\n options: NgwLayerOptions,\n webMap: WebMap,\n connector: NgwConnector,\n): Promise<Type<ResourceAdapter> | undefined> {\n let adapter: ClassAdapter | undefined;\n let item: ResourceItem | undefined;\n const adapterType = options.adapter;\n const resourceId = await resourceIdFromLayerOptions(options, connector);\n if (resourceId) {\n const resourceOptions = options as NgwLayerOptions;\n const itemFromResOpt = resourceOptions.resource as ResourceItem;\n if (\n itemFromResOpt &&\n itemFromResOpt.resource &&\n itemFromResOpt.resource.id !== undefined\n ) {\n item = itemFromResOpt;\n } else {\n item = await connector.getResource(resourceId);\n }\n if (item) {\n const cls = item.resource.cls;\n const layerOptions: NgwLayerOptions = {\n ...options,\n resource: resourceId,\n };\n\n const adapterOptions: GetClassAdapterOptions = {\n layerOptions,\n webMap,\n connector,\n item,\n };\n\n if (supportCls.indexOf(cls) !== -1) {\n if (cls === 'webmap') {\n adapter = createWebMapAdapter(adapterOptions);\n } else if (cls === 'vector_layer' || cls === 'postgis_layer') {\n const type =\n item.vector_layer &&\n vectorLayerGeomToPaintTypeAlias[item.vector_layer.geometry_type];\n const adapterOptions_ =\n adapterOptions.layerOptions.adapterOptions || {};\n adapterOptions_.type = adapterOptions_.type || type;\n adapterOptions.layerOptions.adapterOptions = adapterOptions_;\n options.adapterOptions = adapterOptions;\n if (adapterType !== undefined && adapterType !== 'GEOJSON') {\n if (adapterType === 'MVT') {\n adapter = createRasterAdapter(adapterOptions);\n } else {\n return createAdapterFromFirstStyle(adapterOptions);\n }\n } else {\n adapter = createGeoJsonAdapter(adapterOptions);\n }\n } else if (cls === 'raster_layer') {\n return createAdapterFromFirstStyle(adapterOptions);\n } else if (cls === 'basemap_layer') {\n adapter = createBasemapLayerAdapter(adapterOptions);\n } else {\n if (adapterType === 'GEOJSON') {\n const parentItem = await connector.getResource(\n item.resource.parent.id,\n );\n if (parentItem) {\n const parentOptions: NgwLayerOptions = {\n ...options,\n resource: item.resource.parent.id,\n };\n adapter = createGeoJsonAdapter({\n ...adapterOptions,\n item: parentItem,\n layerOptions: parentOptions,\n });\n }\n } else {\n adapter = createRasterAdapter(adapterOptions);\n }\n }\n } else if (classAdapters[cls]) {\n const getClassAdapter = classAdapters[cls];\n let classAdapter: GetClassAdapterCallback | undefined;\n if (adapterType && typeof classAdapter !== 'function') {\n classAdapter = (getClassAdapter as GetClassAdapterByType)[\n adapterType\n ];\n } else {\n classAdapter = getClassAdapter as GetClassAdapterCallback;\n }\n if (classAdapter) {\n adapter = classAdapter(adapterOptions);\n }\n } else {\n throw `Resource class '${cls}' not yet supported.`;\n }\n } else {\n throw 'Resource item is not found';\n }\n }\n\n if (adapter) {\n return adapter.then((x) => {\n if (x) {\n const resourceAdapter = x as Type<ResourceAdapter>;\n if (item) {\n resourceAdapter.prototype.item = item;\n resourceAdapter.prototype.resourceId = item.resource.id;\n resourceAdapter.prototype.connector = connector;\n }\n\n applyMixins(resourceAdapter, [NgwResource], { replace: false });\n return resourceAdapter;\n }\n });\n }\n}\n","import NgwConnector, { GeometryType } from '@nextgis/ngw-connector';\nimport { createAsyncAdapter } from '../adapters/createAsyncAdapter';\nimport { NgwWebmapLayerAdapter } from '../NgwWebmapLayerAdapter';\n\nimport type { Type } from '@nextgis/utils';\nimport type { WebMap, VectorAdapterLayerType } from '@nextgis/webmap';\nimport type {\n ResourceAdapter,\n NgwLayerOptions,\n NgwWebmapAdapterOptions,\n} from '../interfaces';\n\nexport function updateImageParams(\n params: Record<string, any>,\n resourceId: number | number[],\n): Record<string, any> {\n const { bbox, width, height, nd } = params;\n return {\n resource: Array.isArray(resourceId) ? resourceId.join(',') : resourceId,\n extent: bbox,\n size: width + ',' + height,\n timestamp: Date.now(),\n nd: nd ?? 200,\n };\n}\n\nexport const vectorLayerGeomToPaintTypeAlias: Record<\n GeometryType,\n VectorAdapterLayerType\n> = {\n POINT: 'point',\n LINESTRING: 'line',\n POLYGON: 'polygon',\n MULTIPOINT: 'point',\n MULTILINESTRING: 'line',\n MULTIPOLYGON: 'polygon',\n POINTZ: 'point',\n LINESTRINGZ: 'line',\n POLYGONZ: 'polygon',\n MULTIPOINTZ: 'point',\n MULTILINESTRINGZ: 'line',\n MULTIPOLYGONZ: 'polygon',\n};\n\nexport function createNgwLayerAdapter(\n options: NgwLayerOptions,\n webMap: WebMap,\n connector: NgwConnector,\n): Promise<Type<ResourceAdapter> | undefined> {\n const headers = connector.getAuthorizationHeaders();\n if (headers) {\n options.headers = headers;\n }\n\n return createAsyncAdapter(options, webMap, connector);\n}\n\n/** @deprecated use {@link createNgwLayerAdapter} instead */\nexport function addNgwLayer(\n options: NgwLayerOptions,\n webMap: WebMap,\n connector: NgwConnector,\n): Promise<Type<ResourceAdapter> | undefined> {\n return createNgwLayerAdapter(options, webMap, connector);\n}\n\nexport interface ExtendNgwWebmapLayerAdapterOptions {\n webMap: WebMap;\n connector: NgwConnector;\n baseUrl?: string;\n}\n\nexport function extendNgwWebmapLayerAdapter(\n opt: ExtendNgwWebmapLayerAdapterOptions,\n): Type<NgwWebmapLayerAdapter> {\n class A extends NgwWebmapLayerAdapter {\n constructor(map: any, options: NgwWebmapAdapterOptions) {\n options = { ...opt, ...options };\n super(map, options);\n }\n }\n return A;\n}\n\nlet _pixelsInMeter: number;\n\nexport function pixelsInMeterWidth(): number {\n if (_pixelsInMeter === undefined) {\n const div = document.createElement('div');\n div.style.cssText =\n 'position: absolute; left: -100%; top: -100%; width: 100cm;';\n document.body.appendChild(div);\n const px = div.offsetWidth;\n document.body.removeChild(div);\n _pixelsInMeter = px;\n }\n return _pixelsInMeter;\n}\n\n// Returns width of map in meters on specified latitude.\nexport function getMapWidthForLanInMeters(lat: number): number {\n return 6378137 * 2 * Math.PI * Math.cos((lat * Math.PI) / 180);\n}\n\nexport function getZoomFromScale(scale: number): number {\n return Math.log(scale / 256) / Math.LN2;\n}\n\nexport function setScaleRatio(scale: number, lat = 0): number {\n // TODO: get real center\n // webmap does not contain center yet\n // const center = [104, 45]; // this.webMap.getCenter();\n\n const centerLat = lat;\n const crsScale =\n (pixelsInMeterWidth() * getMapWidthForLanInMeters(centerLat)) / scale;\n const zoom = getZoomFromScale(crsScale);\n return zoom;\n\n // return Math.round(Math.log(591657550.5 / (scale / 2)) / Math.log(2));\n}\n","import NgwConnector from '@nextgis/ngw-connector';\n\nimport { extendNgwWebmapLayerAdapter } from './utils/utils';\nimport { NgwWebmapLayerAdapter } from './NgwWebmapLayerAdapter';\nimport { classAdapters } from './adapters/createAsyncAdapter';\n\nimport type { Type } from '@nextgis/utils';\nimport type { WebMap, StarterKit, LayerAdapterCreators } from '@nextgis/webmap';\nimport type {\n NgwKitOptions,\n GetClassAdapter,\n NgwWebmapAdapterOptions,\n} from './interfaces';\n\nexport class NgwKit implements StarterKit {\n url: string;\n connector: NgwConnector;\n webMap?: WebMap;\n\n constructor(public options: NgwKitOptions) {\n if (this.options.connector) {\n this.url = this.options.connector.options.baseUrl || '';\n this.connector = this.options.connector;\n } else {\n if (this.options.baseUrl) {\n this.url = this.options.baseUrl;\n } else {\n throw new Error('url is not defined');\n }\n this.connector = new NgwConnector({\n baseUrl: this.url,\n auth: this.options.auth,\n });\n }\n }\n\n static addClassAdapters(cls: string, adapter: GetClassAdapter): void {\n classAdapters[cls] = adapter;\n }\n\n async onLoadSync(webMap: WebMap): Promise<NgwWebmapLayerAdapter | undefined> {\n if (this.options.resourceId && this.url) {\n // TODO: resources from array\n const resourceIds = [this.options.resourceId];\n\n if (resourceIds.length) {\n for (const r of resourceIds) {\n const options: Partial<NgwWebmapAdapterOptions> = {\n resourceId: r,\n connector: this.connector,\n webMap,\n };\n const layer = (await webMap.addLayer(NgwWebmapLayerAdapter, {\n visibility: true,\n fit: true,\n pixelRadius: this.options.pixelRadius,\n ...options,\n })) as NgwWebmapLayerAdapter;\n return layer;\n }\n }\n }\n }\n\n getLayerAdapters(): Promise<LayerAdapterCreators[]> {\n return Promise.resolve([this._getLayerAdapter()]);\n }\n\n private _getLayerAdapter() {\n return {\n name: 'WEBMAP',\n createAdapter: (webmap: WebMap) =>\n Promise.resolve(this._createAdapter(webmap)),\n };\n }\n\n private _createAdapter(webMap: WebMap): Type<NgwWebmapLayerAdapter> {\n const connector = this.connector;\n const baseUrl = this.url;\n return extendNgwWebmapLayerAdapter({\n webMap,\n connector,\n baseUrl,\n });\n }\n}\n","import {\n fetchNgwLayerItem,\n IdentifyItemOptions,\n fetchNgwLayerItemExtent,\n} from '.';\nimport CancelablePromise from '@nextgis/cancelable-promise';\n\nimport type { NgwFeatureItemResponse } from '.';\nimport type { GeoJsonObject, Geometry, Feature } from 'geojson';\nimport type {\n VectorLayerResourceItem,\n FeatureItemExtensions,\n FeatureResource,\n LayerFeature,\n} from '@nextgis/ngw-connector';\nimport type NgwConnector from '@nextgis/ngw-connector';\nimport type { FeatureProperties, LngLatBoundsArray } from '@nextgis/utils';\nimport type { FetchNgwItemOptions } from './interfaces';\n\nexport class IdentifyItem<\n F extends FeatureProperties = FeatureProperties,\n G extends Geometry = Geometry,\n> implements LayerFeature\n{\n readonly id: number;\n readonly label: string;\n readonly layerId: number;\n readonly parent: string;\n readonly fields: FeatureProperties;\n geom?: GeoJsonObject;\n extensions?: FeatureItemExtensions;\n\n private connector: NgwConnector;\n private _item?: NgwFeatureItemResponse<F, G>;\n private _geojson?: Feature<G, F>;\n private _resource?: VectorLayerResourceItem;\n private _extent?: LngLatBoundsArray;\n\n constructor(options: IdentifyItemOptions) {\n const f = options.feature;\n this.id = f.id;\n this.geom = f.geom;\n this.label = f.label;\n this.parent = f.parent;\n this.fields = f.fields;\n this.layerId = f.layerId;\n this.connector = options.connector;\n }\n\n identify(\n options: Partial<FetchNgwItemOptions<F>> = {},\n ): CancelablePromise<NgwFeatureItemResponse<F, G>> {\n if (this._item) {\n return CancelablePromise.resolve(this._item);\n }\n return fetchNgwLayerItem<G, F>({\n connector: this.connector,\n featureId: this.id,\n resourceId: this.layerId,\n fields: null,\n extensions: ['attachment', 'description'],\n ...options,\n }).then((resp) => {\n this._item = resp;\n this.geom = resp.geom;\n this.extensions = resp.extensions;\n return resp;\n });\n }\n\n resource(): CancelablePromise<FeatureResource> {\n if (this._resource) {\n return CancelablePromise.resolve(this._resource.feature_layer);\n }\n return this.connector.getResource(this.layerId).then((resp) => {\n this._resource = resp as VectorLayerResourceItem;\n return this._resource.feature_layer;\n });\n }\n\n getBounds(): CancelablePromise<LngLatBoundsArray | undefined> {\n if (this._extent) {\n return CancelablePromise.resolve(this._extent);\n }\n return fetchNgwLayerItemExtent({\n connector: this.connector,\n featureId: this.id,\n resourceId: this.layerId,\n });\n }\n\n geojson(): CancelablePromise<Feature<G, F>> {\n if (this._geojson) {\n return CancelablePromise.resolve(this._geojson);\n }\n return this.identify().then((resp) => {\n return resp.toGeojson().then((geojson) => {\n this._geojson = geojson;\n return geojson;\n });\n });\n }\n}\n","export const WEBMAP_BASELAYER_ID_PREFIX = 'webmap-baselayer';\n","import { Geometry } from 'geojson';\n\nimport CancelablePromise from '@nextgis/cancelable-promise';\nimport {\n createGeoJsonFeature,\n FEATURE_REQUEST_PARAMS,\n updateItemRequestParam,\n} from './featureLayerUtils';\n\nimport type { FeatureProperties } from '@nextgis/utils';\nimport type {\n NgwFeatureItemResponse,\n FeatureRequestParams,\n FetchNgwItemOptions,\n} from '../interfaces';\n\nexport function fetchNgwLayerItem<\n G extends Geometry = Geometry,\n P extends FeatureProperties = FeatureProperties,\n>(\n options: FetchNgwItemOptions<P>,\n): CancelablePromise<NgwFeatureItemResponse<P, G>> {\n const params: FeatureRequestParams & { [name: string]: any } = {\n ...FEATURE_REQUEST_PARAMS,\n };\n updateItemRequestParam(params, options);\n const queryParams = {\n id: options.resourceId,\n fid: options.featureId,\n ...params,\n };\n const cache = options.cache || true;\n return options.connector\n .get('feature_layer.feature.item', { cache }, queryParams)\n .then((resp) => {\n return {\n ...resp,\n toGeojson: () => {\n if (resp.geom) {\n return CancelablePromise.resolve(createGeoJsonFeature<G, P>(resp));\n } else {\n return fetchNgwLayerItem({\n ...options,\n geom: true,\n fields: null,\n extensions: null,\n }).then((onlyGeomItem) => {\n const geom = onlyGeomItem.geom;\n return createGeoJsonFeature<G, P>({ ...resp, geom });\n });\n }\n },\n } as NgwFeatureItemResponse<P, G>;\n });\n}\n","import { fetchNgwLayerItem } from './fetchNgwLayerItem';\nimport { createGeoJsonFeature } from './featureLayerUtils';\n\nimport type { Geometry, Feature } from 'geojson';\nimport type CancelablePromise from '@nextgis/cancelable-promise';\nimport type { FetchNgwItemOptions } from '../interfaces';\n\nexport function fetchNgwLayerFeature<\n G extends Geometry = Geometry,\n P extends Record<string, any> = Record<string, any>,\n>(options: FetchNgwItemOptions<P>): CancelablePromise<Feature<G, P>> {\n return fetchNgwLayerItem<G, P>(options).then((item) => {\n return createGeoJsonFeature<G, P>(item);\n });\n}\n","import CancelablePromise from '@nextgis/cancelable-promise';\nimport {\n JsonMap,\n degrees2meters,\n deprecatedMapClick,\n getCirclePolygonCoordinates,\n} from '@nextgis/utils';\nimport { IdentifyItem } from '../IdentifyItem';\nimport { createGeoJsonFeature } from './featureLayerUtils';\nimport { fetchNgwLayerFeature } from './fetchNgwLayerFeature';\nimport { fetchNgwLayerItem } from './fetchNgwLayerItem';\n\nimport type { Geometry, Feature, Position } from 'geojson';\nimport type { MapClickEvent } from '@nextgis/webmap';\nimport type { FeatureProperties } from '@nextgis/utils';\nimport type {\n LayerFeature,\n FeatureLayersIdentify,\n} from '@nextgis/ngw-connector';\nimport type {\n FeatureIdentifyRequestOptions,\n FeatureLayerIdentifyOptions,\n GetIdentifyGeoJsonOptions,\n IdentifyRequestOptions,\n NgwFeatureItemResponse,\n IdentifyItemOptions,\n NgwIdentifyItem,\n} from '../interfaces';\n\nexport function getIdentifyItems(\n identify: FeatureLayersIdentify & { resources?: number[] },\n multiple = false,\n): NgwIdentifyItem[] {\n const resources = [];\n const paramsList = [];\n for (const l in identify) {\n const id = Number(l);\n if (!isNaN(id)) {\n resources.push(id);\n }\n }\n const sortingArr = identify.resources;\n if (sortingArr) {\n resources.sort((a, b) => {\n return sortingArr.indexOf(a) - sortingArr.indexOf(b);\n });\n }\n\n for (let fry = 0; fry < resources.length; fry++) {\n const l = resources[fry];\n const identifyItem = identify[l];\n if ('features' in identifyItem) {\n const layerFeatures = identifyItem.features;\n const resourceId = Number(l);\n const featureParams: NgwIdentifyItem[] = createParamsFromFeatures(\n layerFeatures,\n resourceId,\n multiple,\n );\n if (featureParams.length) {\n paramsList.push(...featureParams);\n if (!multiple) {\n break;\n }\n }\n }\n }\n return paramsList;\n}\n\nfunction createParamsFromFeatures(\n features: LayerFeature[],\n resourceId: number,\n multiple: boolean,\n): NgwIdentifyItem[] {\n const featureParams: NgwIdentifyItem[] = [];\n for (const feature of features) {\n const params = {\n featureId: feature.id,\n resourceId,\n feature,\n };\n featureParams.push(params);\n if (!multiple) {\n break;\n }\n }\n return featureParams;\n}\n\nexport function fetchIdentifyGeoJson<\n G extends Geometry = Geometry,\n P extends JsonMap = JsonMap,\n>(\n options: GetIdentifyGeoJsonOptions,\n): CancelablePromise<Feature<G, P> | undefined> {\n const { connector, identify, requestOptions } = options;\n for (const l in identify) {\n const id = Number(l);\n if (!isNaN(id)) {\n const item = identify[l];\n if ('features' in item) {\n const withGeom = item.features.find((x) => x.geom);\n\n if (withGeom && withGeom.geom) {\n const geom = withGeom.geom as Geometry;\n return CancelablePromise.resolve(\n createGeoJsonFeature({\n ...withGeom,\n geom,\n }),\n );\n }\n }\n }\n }\n\n const params = getIdentifyItems(identify);\n if (params && params.length) {\n return fetchNgwLayerFeature({ ...requestOptions, connector, ...params[0] });\n }\n return CancelablePromise.resolve(undefined);\n}\n\nexport function fetchIdentifyItem<\n G extends Geometry = Geometry,\n P extends FeatureProperties = FeatureProperties,\n>(\n options: GetIdentifyGeoJsonOptions<P>,\n): CancelablePromise<NgwFeatureItemResponse<P, G> | undefined> {\n const { connector, identify } = options;\n\n const params = getIdentifyItems(identify);\n if (params && params.length) {\n return fetchNgwLayerItem<G, P>({\n connector,\n ...options.requestOptions,\n ...params[0],\n });\n }\n return CancelablePromise.resolve(undefined);\n}\n\n/**\n * @deprecated use {@link fetchIdentifyGeoJson} instead\n */\nexport function getIdentifyGeoJson<\n G extends Geometry = Geometry,\n P extends JsonMap = JsonMap,\n>(\n options: GetIdentifyGeoJsonOptions,\n): CancelablePromise<Feature<G, P> | undefined> {\n return fetchIdentifyGeoJson(options);\n}\n\nexport function featureLayerIdentify(\n options: FeatureLayerIdentifyOptions,\n): CancelablePromise<FeatureLayersIdentify> {\n const { geom, signal, cache } = options;\n let geom_: Position[] = [];\n if (Array.isArray(geom)) {\n geom_ = geom;\n } else {\n const polygon =\n geom.type === 'Feature'\n ? geom.geometry\n : geom.type === 'Polygon'\n ? geom\n : false;\n if (polygon) {\n geom_ = polygon.coordinates[0];\n }\n }\n if (geom_) {\n // create wkt string\n const polygonStr: string[] = [];\n\n for (const [lng, lat] of geom_) {\n const [x, y] = degrees2meters(lng, lat);\n polygonStr.push(x + ' ' + y);\n }\n\n const wkt = `POLYGON((${polygonStr.join(', ')}))`;\n\n const layers: number[] = options.layers;\n\n const data: FeatureIdentifyRequestOptions = {\n geom: wkt,\n srs: 3857,\n layers,\n };\n\n return options.connector.post('feature_layer.identify', {\n data,\n signal,\n cache,\n });\n } else {\n throw new Error('Not valid geometry format to make intersection');\n }\n}\n\nexport function sendIdentifyRequest(\n ev: MapClickEvent,\n options: IdentifyRequestOptions,\n): CancelablePromise<FeatureLayersIdentify> {\n deprecatedMapClick(ev);\n const [lng, lat] = ev.lngLat;\n const { geom, radius, signal, cache } = options;\n const geom_ = geom ?? getCirclePolygonCoordinates(lng, lat, radius);\n\n return featureLayerIdentify({ ...options, geom: geom_, signal, cache });\n}\n\nexport function createIdentifyItem<\n F extends FeatureProperties = FeatureProperties,\n G extends Geometry = Geometry,\n>(opt: IdentifyItemOptions): IdentifyItem<F, G> {\n return new IdentifyItem<F, G>(opt);\n}\n","import NgwConnector from '@nextgis/ngw-connector';\nimport { CompanyLogoOptions } from '../interfaces';\n\nexport async function getCompanyLogo(\n connector: NgwConnector,\n options?: CompanyLogoOptions,\n): Promise<HTMLElement | undefined> {\n const settings = await connector.get('pyramid.settings', null, {\n component: 'pyramid',\n });\n if (settings && settings.company_logo && settings.company_logo.enabled) {\n const anchor = document.createElement('a');\n anchor.style.position = 'absolute';\n anchor.style.bottom = '0';\n anchor.style.right = '0';\n anchor.style.padding = options?.padding ?? '10px';\n anchor.className = 'ngw-map-logo';\n if (options && options.cssClass) {\n anchor.className += ' ' + options.cssClass;\n }\n const img = new Image();\n img.style.maxHeight = '100px';\n img.style.maxWidth = '100px';\n img.src = '';\n try {\n const src = await connector.get('pyramid.company_logo', {\n responseType: 'blob',\n });\n const urlCreator = window.URL || window.webkitURL;\n const imageUrl = urlCreator.createObjectURL(src as any);\n img.src = imageUrl;\n } catch (er) {\n console.warn(er);\n }\n\n if (\n settings.company_logo.link !== null &&\n settings.company_logo.link.trim() !== ''\n ) {\n anchor.href = settings.company_logo.link;\n anchor.target = '_blank';\n if (settings.company_logo.link.search(/:\\/\\/nextgis/) !== -1) {\n img.alt = 'Get your own Web GIS at nextgis.com';\n }\n }\n anchor.appendChild(img);\n return anchor;\n }\n}\n","/**\n * @module icons\n */\n\nimport { IconPaint } from '@nextgis/paint';\n\nconst svgPath: { [name: string]: string | GetPathCallback } = {\n brill: '<path d=\"m6 0-5 6 5 6 5-6z\"/>',\n circle: '<circle cx=\"6\" cy=\"6\" r=\"6\"/>',\n rect: '<rect width=\"12\" height=\"12\"/>',\n marker:\n '<path d=\"m6 0c-1.85 0-4 1.19-4 4.22 0 2.05 3.08 6.59 4 7.78 0.821-1.19 4-5.62 4-7.78 0-3.03-2.15-4.22-4-4.22z\"/>',\n cross:\n '<path d=\"M 2.4,12 6,8.4 9.6,12 12,9.6 8.4,6 12,2.4 9.6,0 6,3.6 2.4,0 0,2.4 3.6,6 0,9.6 Z\"/>',\n star: '<path d=\"m6 0.25 1.71 4.18 4.29-1.04e-4 -3.43 3.14 0.857 4.18-3.43-3.14-3.43 3.14 0.857-4.18-3.43-3.14 4.29-0.209z\"/>',\n triangle: '<path d=\"m12 11.7h-12l6-11.2z\"/>',\n plus: '<path d=\"m7.5 12v-4.5h4.5v-3h-4.5v-4.5h-3v4.5h-4.5v3h4.5v4.5z\"/>',\n minus: '<path d=\"m12 7.5v-3h-12v3z\"/>',\n asterisk:\n '<path d=\"m7.59 12v-3.27l2.83 1.64 1.58-2.74-2.85-1.64 2.83-1.64-1.56-2.74-2.83 1.64v-3.24h-3.17v3.24l-2.85-1.64-1.57 2.74 2.84 1.64-2.84 1.64 1.57 2.74 2.85-1.64v3.27z\"/>',\n};\n\nexport interface IconOptions {\n svg?: string;\n /** Svg path */\n p?: string;\n shape?:\n | 'rect'\n | 'star'\n | 'plus'\n | 'minus'\n | 'brill'\n | 'circle'\n | 'marker'\n | 'triangle'\n | 'asterisk';\n color?: string;\n size?: number;\n stroke?: number;\n strokeColor?: string;\n rotate?: number;\n anchor?: [number, number];\n}\n\ninterface GenerateSvgOptions {\n width: number;\n height: number;\n stroke?: number;\n content?: string;\n}\n\nconst VIEW_BOX = 12;\nconst STROKE = 0.8;\n\nfunction generateSvg({\n width,\n height,\n stroke = 0,\n content,\n}: GenerateSvgOptions) {\n const s = stroke / 2;\n const svg = `<svg\n version=\"1.1\"\n xmlns=\"http://www.w3.org/2000/svg\"\n width=\"${width}\"\n height=\"${height}\"\n viewBox=\"-${s} -${s} ${VIEW_BOX + stroke} ${VIEW_BOX + stroke}\"\n >${content}</svg>`;\n return svg;\n}\n\nfunction insertSvg(svg: string) {\n const oParser = new DOMParser();\n const oDOM = oParser.parseFromString(svg, 'image/svg+xml');\n return oDOM.documentElement;\n}\n\ntype GetPathCallback = (opt?: IconOptions) => string;\n\n/**\n * Retrieves an icon with the provided options.\n * @function\n * @param {IconOptions} [opt={}] - Options for the icon.\n * @returns {IconPaint} Icon paint object.\n */\nexport function getIcon(opt: IconOptions = {}): IconPaint {\n // Default values\n const shape = opt.shape ?? 'circle';\n const color = opt.color ?? 'blue';\n const strokeColor = opt.strokeColor ?? 'white';\n const size = opt.size ?? VIEW_BOX;\n\n const rotate = opt.rotate ?? 0;\n\n const anchor = opt.anchor ?? [size / 2, size / 2];\n\n const stroke = opt.stroke !== undefined ? Number(opt.stroke) : STROKE;\n\n const pathAlias = opt.p || svgPath[shape] || 'circle';\n\n const path = typeof pathAlias === 'string' ? pathAlias : pathAlias(opt);\n const svg = insertSvg(\n opt.svg ||\n generateSvg({\n width: size,\n height: size,\n stroke,\n content: path,\n }),\n );\n\n svg.setAttribute('width', String(size));\n svg.setAttribute('height', String(size));\n\n svg.setAttribute('fill', color);\n if (stroke) {\n svg.setAttribute('stroke', strokeColor);\n svg.setAttribute('stroke-width', String(stroke));\n }\n const s = new XMLSerializer();\n\n return {\n type: 'icon',\n iconSize: [size, size],\n iconAnchor: anchor,\n html: s.serializeToString(svg),\n rotate,\n svg,\n };\n}\n","import type { NgwLayerOptions } from '@nextgis/ngw-kit';\nimport type { NgwResourceDefinition } from '../interfaces';\n\nexport function appendNgwResources(\n options: NgwLayerOptions[],\n resource?: NgwResourceDefinition,\n defOptions?: Partial<NgwLayerOptions>,\n overwriteOptions?: Partial<NgwLayerOptions>,\n): void {\n if (typeof resource === 'number' || typeof resource === 'string') {\n resource = Number(resource);\n options.push({\n ...defOptions,\n resource,\n });\n } else if (Array.isArray(resource)) {\n const [resourceId, id] = resource;\n options.push({\n ...defOptions,\n resource: resourceId,\n id,\n ...overwriteOptions,\n });\n } else if (typeof resource === 'object') {\n options.push({ ...defOptions, ...resource, ...overwriteOptions });\n }\n}\n","import { getDefaultControls } from '@nextgis/webmap';\nimport { deepmerge } from '@nextgis/utils';\nimport { StarterKit, MapOptions } from '@nextgis/webmap';\nimport NgwConnector from '@nextgis/ngw-connector';\nimport { QmsKit } from '@nextgis/qms-kit';\nimport { NgwKit } from '@nextgis/ngw-kit';\n\nimport { NgwMapOptions } from '../interfaces';\n\nexport const OPTIONS: NgwMapOptions = {\n target: 'map',\n baseUrl: '',\n whitlabel: false,\n controls: getDefaultControls(),\n controlsOptions: {\n ZOOM: { position: 'top-left' },\n ATTRIBUTION: {\n position: 'bottom-right',\n customAttribution: [\n '<a href=\"https://nextgis.com\" target=\"_blank\">©NextGIS</a>',\n ],\n },\n },\n pixelRadius: 10,\n};\n\nexport function prepareWebMapOptions(options: NgwMapOptions): MapOptions {\n const kits: StarterKit[] = [new QmsKit()];\n if (options.starterKits) {\n options.starterKits.forEach((x) => {\n kits.push(x);\n });\n }\n\n if (!options.connector) {\n options.connector = new NgwConnector({\n baseUrl: options.baseUrl || '',\n auth: options.auth,\n });\n } else if (options.connector) {\n options.baseUrl = options.connector.options.baseUrl;\n }\n options = deepmerge(OPTIONS, options);\n\n if (!options.center && !options.bounds) {\n options.bounds = [-179, -90, 180, 90];\n // options.maxBounds = options.bounds;\n }\n\n if (options.connector) {\n kits.push(\n new NgwKit({\n connector: options.connector,\n auth: options.auth,\n }),\n );\n }\n options = {\n ...options,\n starterKits: kits,\n create: false,\n };\n return options;\n}\n","import StrictEventEmitter from 'strict-event-emitter-types';\nimport { EventEmitter } from 'events';\nimport CancelablePromise from '@nextgis/cancelable-promise';\nimport { defined, isObject, getIdentifyRadius } from '@nextgis/utils';\nimport { AdapterOptions, WebMap } from '@nextgis/webmap';\nimport NgwConnector from '@nextgis/ngw-connector';\n\nimport {\n fetchNgwLayerFeatureCollection,\n createNgwLayerAdapter,\n fetchNgwLayerFeature,\n fetchIdentifyGeoJson,\n sendIdentifyRequest,\n createIdentifyItem,\n fetchNgwLayerItems,\n fetchIdentifyItem,\n fetchNgwLayerItem,\n getIdentifyItems,\n getCompanyLogo,\n fetchNgwExtent,\n} from '@nextgis/ngw-kit';\nimport { deprecatedWarn } from '@nextgis/utils';\nimport { getIcon } from '@nextgis/icons';\n\nimport { appendNgwResources } from './utils/appendNgwResources';\nimport { prepareWebMapOptions } from './utils/prepareWebMapOptions';\n\nimport type { JsonMap, FeatureProperties } from '@nextgis/utils';\nimport type {\n FeatureItem,\n LayerFeature,\n ResourceItem,\n FeatureLayersIdentify,\n FeatureLayersIdentifyItems,\n} from '@nextgis/ngw-connector';\nimport type {\n OnLayerMouseOptions,\n ControlPosition,\n MapClickEvent,\n LayerAdapter,\n WebMapEvents,\n MapControls,\n FitOptions,\n LayerDef,\n} from '@nextgis/webmap';\nimport type {\n NgwIdentify,\n NgwWebmapItem,\n ResourceAdapter,\n FetchNgwItemsOptions,\n NgwFeatureItemResponse,\n NgwFeatureRequestOptions,\n} from '@nextgis/ngw-kit';\nimport type { Geometry, Feature, FeatureCollection } from 'geojson';\nimport type { QmsAdapterOptions } from '@nextgis/qms-kit';\nimport type { NgwLayerOptions } from '@nextgis/ngw-kit';\nimport type {\n NgwIdentifyEvent,\n NgwMapOptions,\n NgwMapEvents,\n NgwLayers,\n} from './interfaces';\nimport type { FetchNgwItemOptions } from '@nextgis/ngw-kit';\n\ntype PromiseGroup = 'select' | 'identify';\n\n/**\n * Base class containing the logic of interaction WebMap with NextGIS services.\n *\n * @example\n * ```javascript\n * import { NgwMap } from '@nextgis/ngw-map';\n * import MapAdapter from '@nextgis/leaflet-map-adapter';\n * // styles are not included in the leaflet-map-adapter\n * import 'leaflet/dist/leaflet.css';\n *\n * const ngwMap = new NgwMap({\n * mapAdapter: new MapAdapter(),\n * target: 'map',\n * qmsId: 448,\n * baseUrl: 'https://demo.nextgis.com',\n * webmapId: 3985\n * });\n * ```\n */\nexport class NgwMap<\n M = unknown,\n L = unknown,\n C extends object = any,\n O extends NgwMapOptions<M, C> = NgwMapOptions<M, C>,\n> extends WebMap<M, L, C, NgwMapEvents, O> {\n static getIcon = getIcon;\n\n readonly emitter: StrictEventEmitter<EventEmitter, NgwMapEvents> =\n new EventEmitter();\n connector!: NgwConnector;\n\n protected _ngwLayers: NgwLayers = {};\n private $$selectFromNgwRaster?: (ev: MapClickEvent) => void;\n private $$selectFromNgwVector?: (ev: OnLayerMouseOptions) => void;\n private _promises: Record<PromiseGroup, CancelablePromise[]> = {\n select: [],\n identify: [],\n };\n\n constructor(options: O) {\n super(prepareWebMapOptions(options) as O);\n if (options.connector) {\n this.connector = options.connector;\n }\n this._createWebMap().then(() => {\n const container = this.getContainer();\n if (container) {\n container.classList.add('ngw-map-container');\n }\n if (this.options.whitlabel) {\n this._whiteLabel();\n }\n });\n }\n\n /**\n * Organized addition to the map design and controls elements,\n * calling `control.onAdd(this.webMap.mapAdapter)`\n * @param control - object with onAdd and onRemove methods\n * or a string value indicating the name of the control installed in the map adapter\n * @param position - position relative to the map angles\n * @param options - initialization parameters if the control is set as a string value\n *\n * @example\n * ```javascript\n * ngwMap.addControl(new CustomControl(), 'bottom-left');\n * ngwMap.addControl('ZOOM', 'top-right')\n * ```\n */\n async addControl<K extends keyof MapControls>(\n controlDef: K | C,\n position: ControlPosition,\n options?: MapControls[K],\n ): Promise<any> {\n await this.onLoad('controls:create');\n return super.addControl(controlDef, position, options);\n }\n\n /**\n * Add any (style, vector, webmap) NGW layer by resource definition.\n * @param options - set layer identification parameters and render method.\n *\n * @example\n * ```javascript\n * // Add raster layer resourceId is the style of 4004 layer\n * ngwMap.addNgwLayer({ resource: 4005 });\n * // Add vector data from layer GEOJSON source\n * ngwMap.addNgwLayer({\n * resource: 4038,\n * adapter: 'GEOJSON',\n * adapterOptions: { paint: { color: 'red' } }\n * });\n * ```\n */\n async addNgwLayer(\n options: NgwLayerOptions,\n ): Promise<ResourceAdapter | undefined> {\n await this.onMapLoad();\n // @ts-ignore for backward compatibility\n const { keyname, resourceId } = options;\n\n if (keyname || resourceId !== undefined) {\n deprecatedWarn(\n 'set `resource` options instead of `keyname` or `resourceId`',\n );\n }\n\n const resource = options.resource;\n if (!keyname && !resourceId && !resource) {\n throw new Error(\n 'resource, resourceId or keyname is required parameter to add NGW layer',\n );\n }\n if (defined(this.options.baseUrl)) {\n try {\n if (defined(this.options.setViewDelay)) {\n options.adapterOptions = options.adapterOptions || {};\n if (!defined(options.adapterOptions.setViewDelay)) {\n options.adapterOptions.setViewDelay = this.options.setViewDelay;\n }\n }\n const adapter = createNgwLayerAdapter(options, this, this.connector);\n const adapterOpts = {\n visibility: true,\n // TODO: do not merge options, use only `adapterOptions`\n ...options,\n ...options.adapterOptions,\n } as AdapterOptions;\n const layer = (await this.addLayer(\n adapter,\n adapterOpts,\n )) as ResourceAdapter<M, L, AdapterOptions>;\n const id = layer && this.getLayerId(layer);\n if (layer && id) {\n this._ngwLayers[id] = { layer, resourceId: layer.resourceId };\n layer.options.name =\n layer.options.name ||\n (layer.item && layer.item.resource.display_name);\n if (layer.options.baselayer) {\n const visibleLayerBaseLayer = this.getActiveBaseLayer();\n if (visibleLayerBaseLayer) {\n return layer;\n }\n }\n }\n return layer;\n } catch (er) {\n const resId =\n isObject(resource) && 'id' in resource\n ? resource.id\n : keyname || resourceId || resource;\n console.error(`Can't add NGW layer ${resId}.`, er);\n }\n }\n }\n\n /**\n * Pans and zooms the map to the initial position specified in the options\n */\n fit(): void {\n const { center, zoom, bounds } = this.options;\n if (center) {\n this.setCenter(center);\n if (zoom) {\n this.setZoom(zoom);\n }\n } else if (bounds) {\n this.fitBounds(bounds);\n }\n }\n\n fetchNgwLayerItem<\n G extends Geometry = Geometry,\n P extends FeatureProperties = FeatureProperties,\n >(\n options: Omit<FetchNgwItemOptions<P>, 'connector'>,\n ): CancelablePromise<FeatureItem> {\n return fetchNgwLayerItem<G, P>({\n connector: this.connector,\n ...options,\n });\n }\n\n fetchNgwLayerItems<\n F extends FeatureProperties = FeatureProperties,\n G extends Geometry = Geometry,\n >(\n options: Omit<FetchNgwItemsOptions<F>, 'connector'>,\n ): CancelablePromise<FeatureItem<F, G>[]> {\n return fetchNgwLayerItems<G, F>({\n connector: this.connector,\n ...options,\n });\n }\n\n fetchNgwLayerFeature<\n G extends Geometry = Geometry,\n P extends FeatureProperties = FeatureProperties,\n >(\n options: Omit<FetchNgwItemOptions<P>, 'connector'>,\n ): CancelablePromise<Feature<G, P>> {\n return fetchNgwLayerFeature<G, P>({\n connector: this.connector,\n ...options,\n });\n }\n\n fetchNgwLayerFeatures<\n G extends Geometry | null = Geometry,\n P extends FeatureProperties = FeatureProperties,\n >(\n options: Omit<FetchNgwItemsOptions<P>, 'connector'>,\n ): CancelablePromise<FeatureCollection<G, P>> {\n return fetchNgwLayerFeatureCollection({\n connector: this.connector,\n ...options,\n });\n }\n\n fetchIdentifyItem<\n G extends Geometry = Geometry,\n P extends FeatureProperties = FeatureProperties,\n >(\n identify: NgwIdentify,\n requestOptions?: NgwFeatureRequestOptions,\n // multiple = false\n ): CancelablePromise<NgwFeatureItemResponse<P, G> | undefined> {\n const promise = fetchIdentifyItem<G, P>({\n identify,\n connector: this.connector,\n requestOptions,\n // multiple,\n });\n\n this._addPromise('identify', promise);\n return promise;\n }\n\n fetchIdentifyGeoJson(\n identify: NgwIdentify,\n multiple = false,\n ): CancelablePromise<Feature | undefined> {\n const promise = fetchIdentifyGeoJson({\n identify,\n connector: this.connector,\n multiple,\n });\n if (promise && 'then' in promise) {\n this._addPromise('identify', promise);\n return promise;\n } else {\n return CancelablePromise.resolve(promise);\n }\n }\n\n /**\n * @deprecated use {@link fetchIdentifyGeoJson} instead\n */\n getIdentifyGeoJson(\n identify: NgwIdentify,\n multiple = false,\n ): CancelablePromise<Feature | undefined> {\n return this.fetchIdentifyGeoJson(identify, multiple);\n }\n\n async getNgwLayers(): Promise<NgwLayers> {\n await this.onLoad();\n return this._ngwLayers;\n }\n\n async getNgwLayerByResourceId(id: number): Promise<LayerAdapter | undefined> {\n for (const n in this._ngwLayers) {\n const mem = this._ngwLayers[n];\n if (mem.resourceId === id) {\n return mem && mem.layer;\n } else if (mem.layer.getIdentificationIds) {\n const ids = await mem.layer.getIdentificationIds();\n if (ids && ids.some((x) => x === id)) {\n return mem.layer;\n }\n }\n if (mem.layer.getDependLayers) {\n const dependLayers = mem.layer.getDependLayers() as NgwWebmapItem[];\n const dependFit = dependLayers.find((x) => {\n return x.item && x.item.parentId === id;\n });\n if (dependFit) {\n return dependFit.layer;\n }\n }\n }\n }\n\n /**\n * Move map to layer. If the layer is NGW resource, extent will be received from the server\n *\n * @example\n * ```javascript\n * const ngwLayer = ngwMap.addNgwLayer({ id: 'ngw_layer_name', resource: 4005 });\n * ngwMap.fitLayer(ngwLayer);\n * ngwMap.fitLayer('ngw_layer_name');\n * ```\n */\n async fitLayer(\n layerDef: LayerDef | number,\n options?: FitOptions,\n ): Promise<void> {\n let id: string | undefined;\n if (typeof layerDef === 'string' || typeof layerDef === 'number') {\n id = String(id);\n } else {\n id = layerDef.id;\n }\n const ngwLayer = id && this._ngwLayers[id];\n if (ngwLayer) {\n if (ngwLayer.layer.getBounds) {\n const bounds = await ngwLayer.layer.getBounds();\n if (bounds) {\n this.fitBounds(bounds, options);\n }\n } else {\n let item: ResourceItem | undefined;\n if (ngwLayer.layer.item) {\n item = ngwLayer.layer.item;\n } else {\n const resourceId = ngwLayer.resourceId;\n item = await this.connector.getResource(resourceId);\n }\n if (item) {\n fetchNgwExtent({\n resourceId: item.resource.id,\n connector: this.connector,\n }).then((extent) => {\n if (extent) {\n this.fitBounds(extent, options);\n }\n });\n }\n }\n } else {\n super.fitLayer(\n typeof layerDef === 'number' ? String(layerDef) : layerDef,\n options,\n );\n }\n }\n\n /** @deprecated use {@link fitLayer} instead */\n async zoomToLayer(layerDef: string | ResourceAdapter): Promise<void> {\n return this.fitLayer(layerDef);\n }\n\n onLoad(event: keyof NgwMapEvents = 'ngw-map:create'): Promise<this> {\n return super.onLoad(event as keyof WebMapEvents);\n }\n\n removeLayer(layerDef: LayerDef): void {\n const layer = this.getLayer(layerDef);\n if (layer) {\n const layerId = this.getLayerId(layer);\n if (layerId) {\n delete this._ngwLayers[layerId];\n }\n super.removeLayer(layer);\n }\n }\n\n enableSelection(): void {\n if (!this.$$selectFromNgwRaster) {\n this.$$selectFromNgwRaster = (ev: MapClickEvent) => {\n const count = this._getSelectListenersCount();\n if (count) {\n this.selectFromNgwRaster(ev);\n }\n };\n this.$$selectFromNgwVector = (ev: OnLayerMouseOptions) => {\n const count = this._getSelectListenersCount();\n if (count) {\n this._selectFromNgwVector(ev);\n }\n };\n this.emitter.on('click', this.$$selectFromNgwRaster);\n this.emitter.on('layer:click', this.$$selectFromNgwVector);\n }\n }\n\n disableSelection(): void {\n if (this.$$selectFromNgwRaster) {\n this.emitter.removeListener('click', this.$$selectFromNgwRaster);\n this.$$selectFromNgwRaster = undefined;\n }\n if (this.$$selectFromNgwVector) {\n this.emitter.removeListener('layer:click', this.$$selectFromNgwVector);\n\n this.$$selectFromNgwVector = undefined;\n }\n }\n\n /**\n * @deprecated use {@link fetchNgwLayerItem} instead\n */\n getNgwLayerItem<\n G extends Geometry = Geometry,\n P extends FeatureProperties = FeatureProperties,\n >(\n options: Omit<FetchNgwItemOptions<P>, 'connector'>,\n ): CancelablePromise<FeatureItem> {\n return this.fetchNgwLayerItem<G, P>(options);\n }\n\n /**\n * @deprecated use {@link fetchNgwLayerItems} instead\n */\n getNgwLayerItems<\n F extends FeatureProperties = FeatureProperties,\n G extends Geometry = Geometry,\n >(\n options: Omit<FetchNgwItemsOptions<F>, 'connector'>,\n ): CancelablePromise<FeatureItem<F, G>[]> {\n return this.fetchNgwLayerItems<F, G>(options);\n }\n\n /**\n * @deprecated use {@link fetchNgwLayerFeature} instead\n */\n getNgwLayerFeature<\n G extends Geometry = Geometry,\n P extends FeatureProperties = FeatureProperties,\n >(\n options: Omit<FetchNgwItemOptions<P>, 'connector'>,\n ): CancelablePromise<Feature<G, P>> {\n return this.fetchNgwLayerFeature<G, P>(options);\n }\n\n /**\n * @deprecated use {@link fetchNgwLayerFeatures} instead\n */\n getNgwLayerFeatures<\n G extends Geometry | null = Geometry,\n P extends JsonMap = JsonMap,\n >(\n options: FetchNgwItemsOptions<P>,\n ): CancelablePromise<FeatureCollection<G, P>> {\n return this.fetchNgwLayerFeatures(options);\n }\n\n /** @deprecated use {@link cancelPromises} instead */\n cancelPromise(...args: PromiseGroup[]): void {\n this.cancelPromises(...args);\n }\n\n cancelPromises(...args: PromiseGroup[]): void {\n if (!args.length) {\n args = Object.keys(this._promises) as PromiseGroup[];\n }\n args.forEach((name) => {\n const group = this._promises[name];\n if (group) {\n group.forEach((x) => x.cancel());\n this._promises[name] = [];\n }\n });\n }\n\n async selectFromNgwRaster(\n ev: MapClickEvent,\n ): Promise<NgwIdentifyEvent | undefined> {\n this._emitStatusEvent('ngw:preselect');\n\n const promises: Promise<number[] | undefined>[] = [];\n const layers = Object.values(this._ngwLayers);\n layers.sort((a, b) => {\n if (a.layer.order && b.layer.order) {\n return b.layer.order - a.layer.order;\n }\n return 1;\n });\n for (const l of layers) {\n const layer = l.layer;\n const identFunc =\n typeof layer.getIdentificationIds === 'function'\n ? layer.getIdentificationIds\n : false;\n if (identFunc && layer.options.selectable && this.isLayerVisible(layer)) {\n promises.push(identFunc.call(layer));\n }\n }\n const getIdsPromise = Promise.all(promises);\n const getIds = await getIdsPromise;\n const ids: number[] = [];\n for (const x of getIds) {\n if (x) {\n ids.push(...x);\n }\n }\n\n if (!ids.length) {\n this._emitStatusEvent('ngw:select', null);\n return;\n }\n\n const pixelRadius = this.options.pixelRadius || 10;\n const center = this.getCenter();\n let zoom = this.getZoom();\n zoom = zoom !== undefined ? zoom : 20;\n if (!center || !zoom) {\n this._emitStatusEvent('ngw:select', null);\n return;\n }\n const radius = getIdentifyRadius(center, zoom, pixelRadius);\n\n const selectPromise = sendIdentifyRequest(ev, {\n layers: ids,\n connector: this.connector,\n radius,\n }).then((resp) => {\n const identify: NgwIdentify = {\n ...resp,\n resources: ids,\n sourceType: 'raster',\n event: ev,\n };\n const identifyEvent: NgwIdentifyEvent = this._prepareToIdentify(identify);\n this._emitStatusEvent('ngw:select', identifyEvent);\n return identifyEvent;\n });\n this._addPromise('select', selectPromise);\n return selectPromise;\n }\n\n private _addPromise(groupName: PromiseGroup, promise: CancelablePromise) {\n const group = this._promises[groupName];\n if (group && group.indexOf(promise) === -1) {\n const removeFromGroup = () => {\n const index = group.indexOf(promise);\n if (index !== -1) {\n group.splice(index, 1);\n }\n };\n promise.then(removeFromGroup);\n promise.catch(removeFromGroup);\n group.push(promise);\n }\n }\n\n private _isFitFromResource() {\n const params = this._initMapState;\n if (params.zoom && params.center) {\n return false;\n }\n return true;\n }\n\n private async _createWebMap() {\n await this.create();\n if (this.options.qmsId) {\n this._addQmsBaseLayer();\n }\n if (this.options.osm) {\n this._addOsmBaseLayer();\n }\n\n const resources: NgwLayerOptions[] = [];\n const layerFitAllowed = this._isFitFromResource();\n if (this.options.webmapId) {\n appendNgwResources(resources, this.options.webmapId, {\n fit: layerFitAllowed,\n });\n }\n if (this.options.resources && Array.isArray(this.options.resources)) {\n for (const x of this.options.resources) {\n const overwriteOptions: Partial<NgwLayerOptions> = {};\n if (!layerFitAllowed) {\n overwriteOptions.fit = false;\n }\n appendNgwResources(resources, x, {}, overwriteOptions);\n }\n }\n for (const r of resources) {\n try {\n await this.addNgwLayer(r);\n } catch (er) {\n console.warn(er);\n }\n }\n this._emitStatusEvent('ngw-map:create', this);\n this.enableSelection();\n }\n\n private _addOsmBaseLayer() {\n this.addBaseLayer('OSM');\n }\n\n private _addQmsBaseLayer() {\n let qmsId: number;\n let qmsLayerName: string | undefined;\n if (Array.isArray(this.options.qmsId)) {\n qmsId = this.options.qmsId[0];\n qmsLayerName = this.options.qmsId[1];\n } else {\n qmsId = Number(this.options.qmsId);\n }\n const qmsLayerOptions: Partial<QmsAdapterOptions> = {\n qmsId,\n };\n if (qmsLayerName) {\n qmsLayerOptions.id = qmsLayerName;\n }\n\n this.addBaseLayer('QMS', qmsLayerOptions);\n }\n\n private _selectFromNgwVector(\n ev: OnLayerMouseOptions,\n ): FeatureLayersIdentify | undefined {\n const layer: ResourceAdapter = ev.layer as ResourceAdapter;\n const selectable = layer.options.selectable && this.isLayerVisible(layer);\n if (!selectable) {\n return undefined;\n }\n // Item property means layer is NgwResource\n const id = layer.item && layer.item.resource.id;\n const feature = ev.feature;\n\n if (id !== undefined && feature) {\n const featureId = feature.id;\n if (featureId) {\n const identifyFeature: LayerFeature = {\n id: Number(featureId),\n fields: feature.properties || {},\n label: `#${id}`,\n layerId: Number(id),\n parent: '',\n geom: feature.geometry,\n };\n const items: FeatureLayersIdentifyItems = {\n featureCount: 1,\n features: [identifyFeature],\n };\n const identify: FeatureLayersIdentify = {\n featureCount: 1,\n [id]: items,\n };\n this._emitStatusEvent(\n 'ngw:select',\n this._prepareToIdentify({\n ...identify,\n resources: [id],\n sourceType: 'vector',\n } as NgwIdentify),\n );\n return identify;\n }\n }\n }\n\n private _prepareToIdentify<\n F extends FeatureProperties = FeatureProperties,\n G extends Geometry = Geometry,\n >(identify: NgwIdentify): NgwIdentifyEvent {\n const getIdentifyItems_ = () => {\n return getIdentifyItems(identify, true).map((x) => {\n return createIdentifyItem<F, G>({\n feature: x.feature,\n connector: this.connector,\n });\n });\n };\n return {\n ...identify,\n getIdentifyItems: getIdentifyItems_,\n };\n }\n\n private _getSelectListenersCount() {\n return this.emitter.listenerCount('ngw:select');\n }\n\n private async _whiteLabel() {\n const container = this.getContainer();\n if (container) {\n const logo = await getCompanyLogo(\n this.connector,\n this.options.companyLogoOptions,\n );\n if (logo) {\n container.appendChild(logo);\n }\n }\n }\n}\n","/**\n * @module ngw-map\n */\n\nimport { NgwMap } from './NgwMap';\nimport type { NgwMapOptions } from './interfaces';\n\nexport * from '@nextgis/webmap';\n\nexport * from './interfaces';\n\nexport { NgwMap };\n\nexport async function createNgwMap(options: NgwMapOptions): Promise<NgwMap> {\n const ngwMap = new NgwMap(options);\n return ngwMap.onLoad();\n}\n"],"names":["eventsModule","events","ID","CancelablePromise","isObject","e","f","OPTIONS","EventEmitter","Cache","NgwConnector","NgwWebmapLayerAdapter","NWLayerAdapter"],"mappings":"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"}
1
+ {"version":3,"file":"ngw-map.esm-browser.js","sources":["../../../node_modules/events/events.js","../../cancelable-promise/src/CancelError.ts","../../cancelable-promise/src/PromiseControl.ts","../../cancelable-promise/src/TimeoutError.ts","../../cancelable-promise/src/CancelablePromise.ts","../../cancelable-promise/src/index.ts","../../utils/src/applyMixins.ts","../../utils/src/defined.ts","../../utils/src/deepmerge.ts","../../utils/src/debug/debugLog.ts","../../utils/src/deprecated/deprecatedMapClick.ts","../../utils/src/deprecated/deprecatedWarn.ts","../../utils/src/debounce.ts","../../utils/src/geom/constants.ts","../../utils/src/geom/getBoundsPolygon.ts","../../utils/src/geom/getCirclePolygon.ts","../../utils/src/geom/coordTransform.ts","../../utils/src/geom/isLngLatBoundsArray.ts","../../utils/src/geom/getIdentifyRadius.ts","../../utils/src/object/objectAssign.ts","../../utils/src/object/objectDeepEqual.ts","../../utils/src/object/objectRemoveEmpty.ts","../../utils/src/number/round.ts","../../utils/src/typeHelpers/index.ts","../../utils/src/url.ts","../../paint/src/typeHelpers.ts","../../expression/src/utils/tryConvert.ts","../../expression/src/utils/fallback.ts","../../expression/src/utils/evaluateArgs.ts","../../expression/src/expressions/typeExpressions.ts","../../expression/src/expressions/mathExpressions.ts","../../expression/src/expressions/lookupExpressions.ts","../../expression/src/expressions/stringExpressions.ts","../../expression/src/expressions/decisionExpressions.ts","../../expression/src/expressions/interpolationExpressions/step.ts","../../expression/src/constants/colors.ts","../../expression/src/utils/color.ts","../../expression/src/expressions/interpolationExpressions/interpolate.ts","../../expression/src/expressions/interpolationExpressions/index.ts","../../expression/src/expression.ts","../../paint/src/fromPaintExpression.ts","../../properties-filter/src/propertiesFilter.ts","../../paint/src/preparePaint.ts","../../webmap/src/utils/geometryTypes.ts","../../webmap/src/utils/updateGeoJsonAdapterOptions.ts","../../webmap/src/components/keys/KeysCodes.ts","../../webmap/src/components/keys/Keys.ts","../../webmap/src/components/mapStates/StateItem.ts","../../webmap/src/components/mapStates/CenterState.ts","../../webmap/src/components/mapStates/ZoomState.ts","../../webmap/src/utils/clearObject.ts","../../webmap/src/WebMapMain.ts","../../webmap/src/WebMapLayers.ts","../../webmap/src/components/controls/createToggleControl.ts","../../webmap/src/WebMapControls.ts","../../webmap/src/container.ts","../../webmap/src/WebMap.ts","../../webmap/src/utils/getDefaultControls.ts","../../webmap/src/index.ts","../../cache/src/Cache.ts","../../cache/src/index.ts","../../ngw-connector/src/errors/NetworkError.ts","../../ngw-connector/src/errors/NgwError.ts","../../ngw-connector/src/utils/isObject.ts","../../ngw-connector/src/utils/loadData.ts","../../ngw-connector/src/utils/template.ts","../../ngw-connector/src/utils/apiRequest.ts","../../ngw-connector/src/errors/ResourceNotFoundError.ts","../../ngw-connector/src/errors/InsufficientPermissionsError.ts","../../ngw-connector/src/activeConnectors.ts","../../ngw-connector/src/utils/resourceToQuery.ts","../../ngw-connector/src/utils/resourceCompare.ts","../../ngw-connector/src/ResourcesControl.ts","../../ngw-connector/src/NgwConnector.ts","../../ngw-connector/src/index.ts","../../ngw-kit/src/utils/fetchNgwExtent.ts","../../ngw-kit/src/NgwResource.ts","../../ngw-kit/src/utils/createPopupContent.ts","../../ngw-kit/src/utils/getLayerFilterOptions.ts","../../ngw-kit/src/utils/resourceIdFromLayerOptions.ts","../../ngw-kit/src/utils/featureLayerUtils.ts","../../ngw-kit/src/utils/prepareNgwFieldsToPropertiesFilter.ts","../../ngw-kit/src/utils/fetchNgwLayerItems.ts","../../ngw-kit/src/utils/fetchNgwLayerFeatures.ts","../../ngw-kit/src/utils/fetchNgwLayerFeatureCollection.ts","../../ngw-kit/src/utils/fetchNgwLayerCount.ts","../../ngw-kit/src/adapters/createGeoJsonAdapter.ts","../../ngw-kit/src/utils/ngwApiToAdapterOptions.ts","../../ngw-kit/src/adapters/createRasterAdapter.ts","../../tree/src/treeFilter.ts","../../item/src/TreeHelper.ts","../../item/src/properties/BaseProperty.ts","../../item/src/properties/CheckProperty.ts","../../item/src/properties/ItemProperties.ts","../../item/src/Item.ts","../../ngw-kit/src/utils/WebmapLayerOpacityPropertyHandler.ts","../../ngw-kit/src/NgwWebmapItem.ts","../../ngw-kit/src/adapters/createOnFirstShowAdapter.ts","../../ngw-kit/src/adapters/createOnFirstShowNgwAdapter.ts","../../ngw-kit/src/BookmarkItem.ts","../../ngw-kit/src/NgwWebmapLayerAdapter.ts","../../ngw-kit/src/adapters/createNgwWebmapAdapter.ts","../../qms-kit/src/utils/updateQmsOptions.ts","../../qms-kit/src/utils/loadJson.ts","../../qms-kit/src/utils/getSubmodulesFromOriginUrl.ts","../../qms-kit/src/utils/createQmsAdapter.ts","../../qms-kit/src/QmsKit.ts","../../ngw-kit/src/adapters/createBasemapLayerAdapter.ts","../../ngw-kit/src/adapters/createAsyncAdapter.ts","../../ngw-kit/src/utils/utils.ts","../../ngw-kit/src/NgwKit.ts","../../ngw-kit/src/IdentifyItem.ts","../../ngw-kit/src/constants.ts","../../ngw-kit/src/utils/fetchNgwLayerItem.ts","../../ngw-kit/src/utils/fetchNgwLayerFeature.ts","../../ngw-kit/src/utils/identifyUtils.ts","../../ngw-kit/src/utils/getCompanyLogo.ts","../../icons/src/index.ts","../src/utils/appendNgwResources.ts","../src/utils/prepareWebMapOptions.ts","../src/NgwMap.ts","../src/index.ts"],"sourcesContent":["// Copyright Joyent, Inc. and other Node contributors.\n//\n// Permission is hereby granted, free of charge, to any person obtaining a\n// copy of this software and associated documentation files (the\n// \"Software\"), to deal in the Software without restriction, including\n// without limitation the rights to use, copy, modify, merge, publish,\n// distribute, sublicense, and/or sell copies of the Software, and to permit\n// persons to whom the Software is furnished to do so, subject to the\n// following conditions:\n//\n// The above copyright notice and this permission notice shall be included\n// in all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS\n// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\n// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN\n// NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,\n// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR\n// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE\n// USE OR OTHER DEALINGS IN THE SOFTWARE.\n\n'use strict';\n\nvar R = typeof Reflect === 'object' ? Reflect : null\nvar ReflectApply = R && typeof R.apply === 'function'\n ? R.apply\n : function ReflectApply(target, receiver, args) {\n return Function.prototype.apply.call(target, receiver, args);\n }\n\nvar ReflectOwnKeys\nif (R && typeof R.ownKeys === 'function') {\n ReflectOwnKeys = R.ownKeys\n} else if (Object.getOwnPropertySymbols) {\n ReflectOwnKeys = function ReflectOwnKeys(target) {\n return Object.getOwnPropertyNames(target)\n .concat(Object.getOwnPropertySymbols(target));\n };\n} else {\n ReflectOwnKeys = function ReflectOwnKeys(target) {\n return Object.getOwnPropertyNames(target);\n };\n}\n\nfunction ProcessEmitWarning(warning) {\n if (console && console.warn) console.warn(warning);\n}\n\nvar NumberIsNaN = Number.isNaN || function NumberIsNaN(value) {\n return value !== value;\n}\n\nfunction EventEmitter() {\n EventEmitter.init.call(this);\n}\nmodule.exports = EventEmitter;\nmodule.exports.once = once;\n\n// Backwards-compat with node 0.10.x\nEventEmitter.EventEmitter = EventEmitter;\n\nEventEmitter.prototype._events = undefined;\nEventEmitter.prototype._eventsCount = 0;\nEventEmitter.prototype._maxListeners = undefined;\n\n// By default EventEmitters will print a warning if more than 10 listeners are\n// added to it. This is a useful default which helps finding memory leaks.\nvar defaultMaxListeners = 10;\n\nfunction checkListener(listener) {\n if (typeof listener !== 'function') {\n throw new TypeError('The \"listener\" argument must be of type Function. Received type ' + typeof listener);\n }\n}\n\nObject.defineProperty(EventEmitter, 'defaultMaxListeners', {\n enumerable: true,\n get: function() {\n return defaultMaxListeners;\n },\n set: function(arg) {\n if (typeof arg !== 'number' || arg < 0 || NumberIsNaN(arg)) {\n throw new RangeError('The value of \"defaultMaxListeners\" is out of range. It must be a non-negative number. Received ' + arg + '.');\n }\n defaultMaxListeners = arg;\n }\n});\n\nEventEmitter.init = function() {\n\n if (this._events === undefined ||\n this._events === Object.getPrototypeOf(this)._events) {\n this._events = Object.create(null);\n this._eventsCount = 0;\n }\n\n this._maxListeners = this._maxListeners || undefined;\n};\n\n// Obviously not all Emitters should be limited to 10. This function allows\n// that to be increased. Set to zero for unlimited.\nEventEmitter.prototype.setMaxListeners = function setMaxListeners(n) {\n if (typeof n !== 'number' || n < 0 || NumberIsNaN(n)) {\n throw new RangeError('The value of \"n\" is out of range. It must be a non-negative number. Received ' + n + '.');\n }\n this._maxListeners = n;\n return this;\n};\n\nfunction _getMaxListeners(that) {\n if (that._maxListeners === undefined)\n return EventEmitter.defaultMaxListeners;\n return that._maxListeners;\n}\n\nEventEmitter.prototype.getMaxListeners = function getMaxListeners() {\n return _getMaxListeners(this);\n};\n\nEventEmitter.prototype.emit = function emit(type) {\n var args = [];\n for (var i = 1; i < arguments.length; i++) args.push(arguments[i]);\n var doError = (type === 'error');\n\n var events = this._events;\n if (events !== undefined)\n doError = (doError && events.error === undefined);\n else if (!doError)\n return false;\n\n // If there is no 'error' event listener then throw.\n if (doError) {\n var er;\n if (args.length > 0)\n er = args[0];\n if (er instanceof Error) {\n // Note: The comments on the `throw` lines are intentional, they show\n // up in Node's output if this results in an unhandled exception.\n throw er; // Unhandled 'error' event\n }\n // At least give some kind of context to the user\n var err = new Error('Unhandled error.' + (er ? ' (' + er.message + ')' : ''));\n err.context = er;\n throw err; // Unhandled 'error' event\n }\n\n var handler = events[type];\n\n if (handler === undefined)\n return false;\n\n if (typeof handler === 'function') {\n ReflectApply(handler, this, args);\n } else {\n var len = handler.length;\n var listeners = arrayClone(handler, len);\n for (var i = 0; i < len; ++i)\n ReflectApply(listeners[i], this, args);\n }\n\n return true;\n};\n\nfunction _addListener(target, type, listener, prepend) {\n var m;\n var events;\n var existing;\n\n checkListener(listener);\n\n events = target._events;\n if (events === undefined) {\n events = target._events = Object.create(null);\n target._eventsCount = 0;\n } else {\n // To avoid recursion in the case that type === \"newListener\"! Before\n // adding it to the listeners, first emit \"newListener\".\n if (events.newListener !== undefined) {\n target.emit('newListener', type,\n listener.listener ? listener.listener : listener);\n\n // Re-assign `events` because a newListener handler could have caused the\n // this._events to be assigned to a new object\n events = target._events;\n }\n existing = events[type];\n }\n\n if (existing === undefined) {\n // Optimize the case of one listener. Don't need the extra array object.\n existing = events[type] = listener;\n ++target._eventsCount;\n } else {\n if (typeof existing === 'function') {\n // Adding the second element, need to change to array.\n existing = events[type] =\n prepend ? [listener, existing] : [existing, listener];\n // If we've already got an array, just append.\n } else if (prepend) {\n existing.unshift(listener);\n } else {\n existing.push(listener);\n }\n\n // Check for listener leak\n m = _getMaxListeners(target);\n if (m > 0 && existing.length > m && !existing.warned) {\n existing.warned = true;\n // No error code for this since it is a Warning\n // eslint-disable-next-line no-restricted-syntax\n var w = new Error('Possible EventEmitter memory leak detected. ' +\n existing.length + ' ' + String(type) + ' listeners ' +\n 'added. Use emitter.setMaxListeners() to ' +\n 'increase limit');\n w.name = 'MaxListenersExceededWarning';\n w.emitter = target;\n w.type = type;\n w.count = existing.length;\n ProcessEmitWarning(w);\n }\n }\n\n return target;\n}\n\nEventEmitter.prototype.addListener = function addListener(type, listener) {\n return _addListener(this, type, listener, false);\n};\n\nEventEmitter.prototype.on = EventEmitter.prototype.addListener;\n\nEventEmitter.prototype.prependListener =\n function prependListener(type, listener) {\n return _addListener(this, type, listener, true);\n };\n\nfunction onceWrapper() {\n if (!this.fired) {\n this.target.removeListener(this.type, this.wrapFn);\n this.fired = true;\n if (arguments.length === 0)\n return this.listener.call(this.target);\n return this.listener.apply(this.target, arguments);\n }\n}\n\nfunction _onceWrap(target, type, listener) {\n var state = { fired: false, wrapFn: undefined, target: target, type: type, listener: listener };\n var wrapped = onceWrapper.bind(state);\n wrapped.listener = listener;\n state.wrapFn = wrapped;\n return wrapped;\n}\n\nEventEmitter.prototype.once = function once(type, listener) {\n checkListener(listener);\n this.on(type, _onceWrap(this, type, listener));\n return this;\n};\n\nEventEmitter.prototype.prependOnceListener =\n function prependOnceListener(type, listener) {\n checkListener(listener);\n this.prependListener(type, _onceWrap(this, type, listener));\n return this;\n };\n\n// Emits a 'removeListener' event if and only if the listener was removed.\nEventEmitter.prototype.removeListener =\n function removeListener(type, listener) {\n var list, events, position, i, originalListener;\n\n checkListener(listener);\n\n events = this._events;\n if (events === undefined)\n return this;\n\n list = events[type];\n if (list === undefined)\n return this;\n\n if (list === listener || list.listener === listener) {\n if (--this._eventsCount === 0)\n this._events = Object.create(null);\n else {\n delete events[type];\n if (events.removeListener)\n this.emit('removeListener', type, list.listener || listener);\n }\n } else if (typeof list !== 'function') {\n position = -1;\n\n for (i = list.length - 1; i >= 0; i--) {\n if (list[i] === listener || list[i].listener === listener) {\n originalListener = list[i].listener;\n position = i;\n break;\n }\n }\n\n if (position < 0)\n return this;\n\n if (position === 0)\n list.shift();\n else {\n spliceOne(list, position);\n }\n\n if (list.length === 1)\n events[type] = list[0];\n\n if (events.removeListener !== undefined)\n this.emit('removeListener', type, originalListener || listener);\n }\n\n return this;\n };\n\nEventEmitter.prototype.off = EventEmitter.prototype.removeListener;\n\nEventEmitter.prototype.removeAllListeners =\n function removeAllListeners(type) {\n var listeners, events, i;\n\n events = this._events;\n if (events === undefined)\n return this;\n\n // not listening for removeListener, no need to emit\n if (events.removeListener === undefined) {\n if (arguments.length === 0) {\n this._events = Object.create(null);\n this._eventsCount = 0;\n } else if (events[type] !== undefined) {\n if (--this._eventsCount === 0)\n this._events = Object.create(null);\n else\n delete events[type];\n }\n return this;\n }\n\n // emit removeListener for all listeners on all events\n if (arguments.length === 0) {\n var keys = Object.keys(events);\n var key;\n for (i = 0; i < keys.length; ++i) {\n key = keys[i];\n if (key === 'removeListener') continue;\n this.removeAllListeners(key);\n }\n this.removeAllListeners('removeListener');\n this._events = Object.create(null);\n this._eventsCount = 0;\n return this;\n }\n\n listeners = events[type];\n\n if (typeof listeners === 'function') {\n this.removeListener(type, listeners);\n } else if (listeners !== undefined) {\n // LIFO order\n for (i = listeners.length - 1; i >= 0; i--) {\n this.removeListener(type, listeners[i]);\n }\n }\n\n return this;\n };\n\nfunction _listeners(target, type, unwrap) {\n var events = target._events;\n\n if (events === undefined)\n return [];\n\n var evlistener = events[type];\n if (evlistener === undefined)\n return [];\n\n if (typeof evlistener === 'function')\n return unwrap ? [evlistener.listener || evlistener] : [evlistener];\n\n return unwrap ?\n unwrapListeners(evlistener) : arrayClone(evlistener, evlistener.length);\n}\n\nEventEmitter.prototype.listeners = function listeners(type) {\n return _listeners(this, type, true);\n};\n\nEventEmitter.prototype.rawListeners = function rawListeners(type) {\n return _listeners(this, type, false);\n};\n\nEventEmitter.listenerCount = function(emitter, type) {\n if (typeof emitter.listenerCount === 'function') {\n return emitter.listenerCount(type);\n } else {\n return listenerCount.call(emitter, type);\n }\n};\n\nEventEmitter.prototype.listenerCount = listenerCount;\nfunction listenerCount(type) {\n var events = this._events;\n\n if (events !== undefined) {\n var evlistener = events[type];\n\n if (typeof evlistener === 'function') {\n return 1;\n } else if (evlistener !== undefined) {\n return evlistener.length;\n }\n }\n\n return 0;\n}\n\nEventEmitter.prototype.eventNames = function eventNames() {\n return this._eventsCount > 0 ? ReflectOwnKeys(this._events) : [];\n};\n\nfunction arrayClone(arr, n) {\n var copy = new Array(n);\n for (var i = 0; i < n; ++i)\n copy[i] = arr[i];\n return copy;\n}\n\nfunction spliceOne(list, index) {\n for (; index + 1 < list.length; index++)\n list[index] = list[index + 1];\n list.pop();\n}\n\nfunction unwrapListeners(arr) {\n var ret = new Array(arr.length);\n for (var i = 0; i < ret.length; ++i) {\n ret[i] = arr[i].listener || arr[i];\n }\n return ret;\n}\n\nfunction once(emitter, name) {\n return new Promise(function (resolve, reject) {\n function errorListener(err) {\n emitter.removeListener(name, resolver);\n reject(err);\n }\n\n function resolver() {\n if (typeof emitter.removeListener === 'function') {\n emitter.removeListener('error', errorListener);\n }\n resolve([].slice.call(arguments));\n };\n\n eventTargetAgnosticAddListener(emitter, name, resolver, { once: true });\n if (name !== 'error') {\n addErrorHandlerIfEventEmitter(emitter, errorListener, { once: true });\n }\n });\n}\n\nfunction addErrorHandlerIfEventEmitter(emitter, handler, flags) {\n if (typeof emitter.on === 'function') {\n eventTargetAgnosticAddListener(emitter, 'error', handler, flags);\n }\n}\n\nfunction eventTargetAgnosticAddListener(emitter, name, listener, flags) {\n if (typeof emitter.on === 'function') {\n if (flags.once) {\n emitter.once(name, listener);\n } else {\n emitter.on(name, listener);\n }\n } else if (typeof emitter.addEventListener === 'function') {\n // EventTarget does not have `error` event semantics like Node\n // EventEmitters, we do not listen for `error` events here.\n emitter.addEventListener(name, function wrapListener(arg) {\n // IE does not have builtin `{ once: true }` support so we\n // have to do it manually.\n if (flags.once) {\n emitter.removeEventListener(name, wrapListener);\n }\n listener(arg);\n });\n } else {\n throw new TypeError('The \"emitter\" argument must be of type EventEmitter. Received type ' + typeof emitter);\n }\n}\n","export class CancelError extends Error {\n name = 'CancelError';\n\n constructor() {\n super();\n Object.setPrototypeOf(this, CancelError.prototype);\n }\n}\n","import CancelablePromise from '.';\n\nexport interface PromiseControlOptions {\n onStart?: () => void;\n onStop?: () => void;\n}\n\ntype Key = CancelablePromise | string | number | symbol;\n\nexport class PromiseControl {\n private _promises: Map<Key, CancelablePromise> = new Map();\n\n constructor(private options: PromiseControlOptions = {}) {}\n\n get isLoaded(): boolean {\n return this._promises.size > 0;\n }\n\n remove(promise: Key): void {\n if (this._promises.has(promise)) {\n this._promises.delete(promise);\n this._onStop();\n }\n }\n\n get(promise: Key): CancelablePromise | undefined {\n return this._promises.get(promise);\n }\n\n add<T extends CancelablePromise = CancelablePromise>(\n promise: T,\n name?: string | number | symbol,\n ): CancelablePromise<T> {\n const key = name ? name : promise;\n const exist = this._promises.get(key);\n if (this.options.onStart && !this.isLoaded) {\n this.options.onStart();\n }\n if (exist) {\n return exist;\n }\n this._promises.set(key, promise);\n promise.finally(() => {\n this.remove(key);\n });\n return promise;\n }\n\n abort(): void {\n if (this.isLoaded) {\n this._promises.forEach((x) => {\n if (x.cancel) {\n x.cancel();\n }\n });\n this._promises.clear();\n this._onStop();\n }\n }\n\n waitFunc<T>(func: () => any, name = ''): CancelablePromise<T> {\n name = name || func.name;\n const exist = this.get(name);\n if (exist) {\n return exist;\n }\n return this.add(func(), name);\n }\n\n WaitForMe(name: string | symbol = ''): MethodDecorator {\n const get = this.get.bind(this);\n const add = this.add.bind(this);\n return function (\n target: unknown,\n key: string | symbol,\n descriptor: PropertyDescriptor,\n ): PropertyDescriptor {\n const originalMethod = descriptor.value;\n name = name || key;\n descriptor.value = function (...args: any[]) {\n const exist = get(name);\n if (exist) {\n return exist;\n }\n const result = add(originalMethod.apply(this, args), name);\n return result;\n };\n\n return descriptor;\n };\n }\n\n /** @deprecated use {@link PromiseControl.WaitForMe } instead */\n GetOrCreateDecorator(name: string | symbol = ''): MethodDecorator {\n return this.WaitForMe(name);\n }\n\n private _onStop(): void {\n if (this.options.onStop && !this.isLoaded) {\n this.options.onStop();\n }\n }\n}\n","export class TimeoutError extends Error {\n name = 'TimeoutError';\n\n constructor() {\n super();\n Object.setPrototypeOf(this, TimeoutError.prototype);\n }\n}\n","import { CancelError } from './CancelError';\nimport { PromiseControl, PromiseControlOptions } from './PromiseControl';\nimport { TimeoutError } from './TimeoutError';\n\ntype Reject = (reason?: any) => void;\ntype Resolve = (value?: any) => void;\nexport type OnCancelFunction = (cancelHandler: () => void) => void;\n\nconst handleCallback = <T = never>(\n resolve: Resolve,\n reject: Reject,\n callback: Resolve,\n r: T,\n) => {\n try {\n resolve(callback(r));\n } catch (e) {\n reject(e);\n }\n};\n\nlet ID = 0;\n\n/**\n * Promise that can be canceled\n *\n * @example\n * Catch `CancelError`\n * ```javascript\n * import CancelablePromise from \"@nextgis/cancelable-promise\";\n *\n * const promise = new CancelablePromise((resolve, reject) => {\n * setTimeout(() => resolve(), 100);\n * }).catch((er) => {\n * if (er.name === \"CancelError\") {\n * // handle cancel error\n * }\n * throw er;\n * });\n *\n * promise.cancel();\n * ```\n * @example\n * Handle `onCancel` callback\n * ```javascript\n * import CancelablePromise from \"@nextgis/cancelable-promise\";\n *\n * const promise = new CancelablePromise((resolve, reject, onCancel) => {\n * const xhr = new XMLHttpRequest();\n * xhr.open(\"GET\", url, true);\n * xhr.onload = () => {\n * resolve(xhr.responseText);\n * };\n * xhr.onerror = (er) => {\n * reject(er);\n * };\n *\n * onCancel(() => {\n * xhr.abort();\n * });\n *\n * xhr.send();\n * });\n *\n * promise.cancel();\n * ```\n */\nexport class CancelablePromise<T = any> implements Promise<T> {\n static CancelError = CancelError;\n static TimeoutError = TimeoutError;\n static PromiseControl = PromiseControl;\n\n // @ts-ignore\n readonly [Symbol.toStringTag]: string;\n readonly id = ID++;\n private _isCanceled = false;\n private _isPending = true;\n private _promise?: Promise<T>;\n private _cancelPromise?: Promise<T>;\n private _cancelHandlers: (() => void)[] = [];\n private _setCanceledCallback?: (er?: any) => void;\n private _parentPromise?: CancelablePromise;\n private _children: CancelablePromise[] = [];\n\n constructor(\n executor: (\n resolve: (value?: T | PromiseLike<T>) => void,\n reject: (reason?: any) => void,\n onCancel: OnCancelFunction,\n ) => void,\n timeout?: number,\n ) {\n this._cancelPromise = new Promise<any>((resolve_, reject_) => {\n this._setCanceledCallback = (er) => resolve_(er || new CancelError());\n });\n const promises = [\n this._cancelPromise,\n new Promise<T>((resolve, reject) => {\n const onResolve = (value?: T | PromiseLike<T>) => {\n if (value instanceof CancelablePromise) {\n this.attach(value);\n } else {\n this._isPending = false;\n }\n // TODO: fix types, `undefined` not allowed since 19.12.2020\n resolve(value as T | PromiseLike<T>);\n };\n\n const onReject = (error: any) => {\n this._isPending = false;\n reject(error);\n };\n\n const onCancel: OnCancelFunction = (handler) => {\n if (!this._isPending) {\n throw new Error(\n 'The `onCancel` handler was attached after the promise settled.',\n );\n }\n\n this._cancelHandlers.push(handler);\n };\n\n return executor(onResolve, onReject, onCancel);\n }),\n ];\n if (timeout) {\n promises.push(\n new Promise((resolve, reject) => {\n setTimeout(() => {\n if (this._isPending) {\n try {\n this.cancel();\n } finally {\n reject(new TimeoutError());\n }\n }\n }, timeout);\n }),\n );\n }\n this._promise = Promise.race(promises);\n }\n\n static createControl(opt?: PromiseControlOptions): PromiseControl {\n return new PromiseControl(opt);\n }\n\n static resolve<T>(value: T | PromiseLike<T>): CancelablePromise<T> {\n return new CancelablePromise((resolve) => resolve(value));\n }\n\n static reject<T>(value: T | PromiseLike<T>): CancelablePromise<T> {\n return new CancelablePromise((resolve, reject) => reject(value));\n }\n\n static all<T>(values: (T | PromiseLike<T>)[]): CancelablePromise<T[]> {\n return new CancelablePromise((resolve, reject) => {\n Promise.all(values).then(resolve).catch(reject);\n }).catch((er) => {\n if (er instanceof this.CancelError) {\n for (const v of values) {\n const v_ = v as CancelablePromise\n if ('cancel' in v_) {\n v_.cancel();\n }\n }\n }\n throw er;\n });\n }\n\n attach(p: CancelablePromise): void {\n if (this._isCanceled) {\n p.cancel();\n } else {\n this._children.push(p);\n }\n }\n\n then<TResult1 = T, TResult2 = never>(\n onfulfilled?:\n | ((value: T) => TResult1 | PromiseLike<TResult1>)\n | undefined\n | null,\n onrejected?:\n | ((reason: any) => TResult2 | PromiseLike<TResult2>)\n | undefined\n | null,\n ): CancelablePromise<TResult1 | TResult2> {\n const p = new CancelablePromise((resolve, reject) => {\n if (this._promise) {\n const reject_ = (r: any) => {\n if (onrejected) {\n handleCallback(resolve, reject, onrejected, r);\n } else {\n reject(r);\n }\n };\n this._promise.then((r) => {\n if (this._isCanceled) {\n reject_(r);\n } else {\n if (onfulfilled) {\n handleCallback(resolve, reject, onfulfilled, r);\n } else {\n resolve(r);\n }\n }\n }, reject_);\n }\n });\n p._parentPromise = this;\n this._children.push(p);\n return p as CancelablePromise<TResult1 | TResult2>;\n }\n\n catch<TResult = never>(\n onrejected?:\n | ((reason: Error) => TResult | PromiseLike<TResult>)\n | undefined\n | null,\n ): CancelablePromise<T | TResult> {\n if (this._isCanceled && onrejected) {\n onrejected(new CancelError());\n }\n return this.then(undefined, onrejected);\n }\n\n finally(onfinally?: (() => void) | undefined | null): Promise<T> {\n if (this._promise) {\n return this._promise.finally(onfinally);\n }\n if (this._isCanceled) {\n return Promise.reject(new CancelError());\n }\n return Promise.reject<T>(onfinally);\n }\n\n cancel(): this {\n // No reason to run cancel action if promise is already complete\n if (this._isCanceled || !this._isPending) {\n return this;\n }\n this._isCanceled = true;\n const parent = this._getTopParent();\n if (parent) {\n parent.cancel();\n }\n\n if (this._children) {\n this._children.forEach((x) => x.cancel());\n }\n\n if (this._isPending) {\n if (this._cancelHandlers.length) {\n try {\n for (const handler of this._cancelHandlers) {\n handler();\n }\n } catch (error) {\n // this._setCanceledCallback(error);\n }\n }\n if (this._setCanceledCallback) {\n this._setCanceledCallback();\n }\n }\n this._destroy();\n\n return this;\n }\n\n private _getTopParent() {\n let parent = this._parentPromise;\n let hasParent = !!parent;\n while (hasParent) {\n if (parent && parent._parentPromise) {\n parent = parent._parentPromise;\n hasParent = !!parent;\n } else {\n hasParent = false;\n }\n }\n return parent;\n }\n\n private _destroy() {\n this._setCanceledCallback = undefined;\n this._cancelPromise = undefined;\n this._promise = undefined;\n }\n}\n\nObject.setPrototypeOf(CancelablePromise.prototype, Promise.prototype);\n","/**\n * A promise you can stop\n *\n * @packageDocumentation\n * @module cancelable-promise\n */\nimport { CancelablePromise } from './CancelablePromise';\nimport { CancelError } from './CancelError';\n\nexport { CancelError };\n\nexport default CancelablePromise;\n","export interface ApplyMixinOptions {\n replace?: boolean;\n}\n\ntype Ctor = any;\n\nexport function applyMixins(\n derivedCtor: Ctor,\n baseCtors: Ctor[],\n opt: ApplyMixinOptions = {},\n): void {\n const derivedProperties = allProperties(derivedCtor.prototype);\n const replace = opt.replace !== undefined ? opt.replace : true;\n baseCtors.forEach((baseCtor) => {\n Object.getOwnPropertyNames(baseCtor.prototype).forEach((name) => {\n const isSomeProp = derivedProperties.indexOf(name) !== -1;\n if ((!replace && !isSomeProp) || replace) {\n const descriptor = Object.getOwnPropertyDescriptor(\n baseCtor.prototype,\n name,\n );\n if (descriptor) {\n Object.defineProperty(derivedCtor.prototype, name, descriptor);\n }\n }\n });\n });\n}\n\nexport function allProperties(obj: Record<string, unknown>): string[] {\n return _allProperties(obj);\n}\n\nfunction _allProperties(\n obj: Record<string, unknown>,\n _props: string[] = [],\n): string[] {\n for (; obj !== null; obj = Object.getPrototypeOf(obj)) {\n const op = Object.getOwnPropertyNames(obj);\n for (let i = 0; i < op.length; i++) {\n if (_props.indexOf(op[i]) == -1) {\n _props.push(op[i]);\n }\n }\n }\n return _props;\n}\n\nexport function mixinProperties(\n derivedCtor: Ctor,\n baseCtor: Ctor,\n properties: string[],\n): void {\n properties.forEach((name) => {\n const descriptor = Object.getOwnPropertyDescriptor(\n baseCtor.prototype,\n name,\n );\n if (descriptor) {\n Object.defineProperty(derivedCtor.prototype, name, descriptor);\n }\n });\n}\n","/**\n * from https://github.com/CesiumGS/cesium/blob/master/Source/Core/defined.js\n *\n * @param val - The object.\n * @returns Returns true if the object is defined, returns false otherwise.\n *\n * @example\n * ```javascript\n * if (defined(positions)) {\n * doSomething();\n * } else {\n * doSomethingElse();\n * }\n * ```\n */\nexport function defined<T>(val: T): val is Exclude<T, null | undefined> {\n return val !== undefined && val !== null;\n}\n\n/**\n * from https://github.com/CesiumGS/cesium/blob/master/Source/Core/defined.js\n *\n * @param val - The object.\n * @returns Returns true if the object is defined and not empty string, returns false otherwise.\n *\n * @example\n * ```javascript\n * full('foo') // true\n * full('') // false\n * full(undefined) // false\n * full(0) // true\n * ```\n */\nexport function full<T>(val: T): val is Exclude<T, null | undefined> {\n return typeof val === 'string' ? !!val : defined(val);\n}\n","export function deepmerge<T>(\n x: Partial<T>,\n y: Partial<T>,\n mergeArray?: boolean,\n): T;\nexport function deepmerge<T1, T2>(\n target: Partial<T1>,\n src: Partial<T2>,\n mergeArray = false,\n): T1 & T2 {\n let target_ = target as any;\n const src_ = src as any;\n const array = Array.isArray(src_);\n let dst: any = (array && []) || {};\n\n if (array && Array.isArray(src_)) {\n if (mergeArray) {\n target_ = target_ || [];\n dst = dst.concat(target_);\n src_.forEach((e: any, i: number) => {\n if (typeof dst[i] === 'undefined') {\n dst[i] = e;\n } else if (typeof e === 'object') {\n dst[i] = deepmerge(target_[i], e, mergeArray);\n } else {\n if (target_.indexOf(e) === -1) {\n dst.push(e);\n }\n }\n });\n } else {\n // Replace array. Do not merge by default\n dst = src_;\n }\n } else {\n if (target_ && typeof target_ === 'object') {\n Object.keys(target_).forEach(function (key) {\n dst[key] = target_[key];\n });\n }\n Object.keys(src_).forEach(function (key) {\n if (typeof src_[key] !== 'object' || !src_[key]) {\n dst[key] = src_[key];\n } else {\n if (typeof target_[key] === 'object' && typeof src_[key] === 'object') {\n dst[key] = deepmerge(target_[key], src_[key], mergeArray);\n } else {\n dst[key] = src_[key];\n }\n }\n });\n }\n return dst;\n}\n","export function debugLog(message?: string): boolean {\n // @ts-ignore\n if (__DEV__) {\n console.trace('DEBUG: ' + message);\n return true;\n }\n return false;\n}\n","import { debugLog } from '../debug/debugLog';\n\nimport type { LatLng } from '../geom/interfaces';\nimport type { LngLatArray } from '../geom/interfaces';\n\ninterface DeprecatedMapClickEvent {\n lngLat: LngLatArray;\n latLng?: LatLng;\n}\n\n/**\n * @internal\n */\nexport function deprecatedMapClick<\n T extends DeprecatedMapClickEvent = DeprecatedMapClickEvent,\n>(ev: T): T {\n if (!ev.lngLat && ev.latLng) {\n debugLog('deprecated use of latLng in MapClickEvent, use lngLat instead');\n const lat = ev.latLng.lat;\n const lng = ev.latLng.lng;\n ev.lngLat = [lng, lat];\n }\n return ev;\n}\n","/** @internal */\nexport function deprecatedWarn(message: string): void {\n console.warn(`DEPRECATED WARN: ${message}`);\n}\n","// based on https://github.com/bvaughn/debounce-decorator\n\nexport function debounce<T extends (...args: any[]) => void>(\n cb: T,\n wait = 10,\n): T & { clear: () => void } {\n let timeoutId: any;\n\n function wrapper(this: any, ...args: any[]) {\n wrapper.clear();\n\n timeoutId = setTimeout(() => {\n timeoutId = null;\n cb.apply(this, args);\n }, wait);\n }\n\n wrapper.clear = function () {\n if (timeoutId) {\n clearTimeout(timeoutId);\n timeoutId = null;\n }\n };\n\n return wrapper as T & { clear: () => void };\n}\n\nexport function DebounceDecorator(wait = 10) {\n return function (\n target: unknown,\n key: string,\n descriptor: PropertyDescriptor,\n ): PropertyDescriptor {\n return {\n configurable: true,\n enumerable: descriptor.enumerable,\n get: function getter() {\n // Attach this function to the instance (not the class)\n Object.defineProperty(this, key, {\n configurable: true,\n enumerable: descriptor.enumerable,\n value: debounce(descriptor.value, wait),\n });\n // @ts-ignore\n return this[key];\n },\n };\n };\n}\n","/**\n * Radius of the earth in kilometers\n */\nexport const EARTHS_RADIUS = 6371;\n","import type { Feature, Polygon } from 'geojson';\nimport type { LngLatBoundsArray } from './interfaces';\n\nexport function getBoundsPolygon(b: LngLatBoundsArray): Polygon {\n const polygon: Polygon = {\n type: 'Polygon',\n coordinates: [getBoundsCoordinates(b)],\n };\n return polygon;\n}\n\nexport function getBoundsCoordinates(b: LngLatBoundsArray): number[][] {\n const westNorth = [b[0], b[1]];\n const eastNorth = [b[2], b[1]];\n const eastSouth = [b[2], b[3]];\n const westSouth = [b[0], b[3]];\n\n return [westNorth, eastNorth, eastSouth, westSouth, westNorth];\n}\n\nexport function getBoundsFeature(b: LngLatBoundsArray): Feature<Polygon> {\n const feature: Feature<Polygon> = {\n type: 'Feature',\n properties: {},\n geometry: getBoundsPolygon(b),\n };\n return feature;\n}\n","import { EARTHS_RADIUS } from './constants';\nimport type { Feature, Polygon, Position } from 'geojson';\n\nconst d2r = Math.PI / 180; // degrees to radians\nconst r2d = 180 / Math.PI; // radians to degrees\n\nexport function getCirclePolygonCoordinates(\n lng: number,\n lat: number,\n /** In kilometers */\n radius = 10,\n points = 6,\n): Position[] {\n // find the radius in lat/lon\n const rlat = (radius / EARTHS_RADIUS) * r2d;\n const rlng = rlat / Math.cos(lat * d2r);\n\n const extp = [];\n for (let i = 0; i < points + 1; i++) {\n // one extra here makes sure we connect the\n\n const theta = Math.PI * (i / (points / 2));\n const ex = lng + rlng * Math.cos(theta); // center a + radius x * cos(theta)\n const ey = lat + rlat * Math.sin(theta); // center b + radius y * sin(theta)\n extp.push([ex, ey]);\n }\n\n return extp;\n}\n\nexport function getCircleFeature(\n lng: number,\n lat: number,\n radius = 10,\n points = 6,\n): Feature<Polygon> {\n const polygon = getCirclePolygonCoordinates(lng, lat, radius, points);\n const feature: Feature<Polygon> = {\n type: 'Feature',\n properties: {},\n geometry: {\n type: 'Polygon',\n coordinates: [polygon],\n },\n };\n return feature;\n}\n","import type { LngLatArray } from './interfaces';\n\nexport function degrees2meters(lng: number, lat: number): [number, number] {\n lat = lat > 85.06 ? 85.06 : lat < -85.06 ? -85.06 : lat;\n\n const x = (lng * 20037508.34) / 180;\n let y = Math.log(Math.tan(((90 + lat) * Math.PI) / 360)) / (Math.PI / 180);\n y = (y * 20037508.34) / 180;\n return [x, y];\n}\n\nexport function meters2degrees(x: number, y: number): LngLatArray {\n const lon = (x * 180) / 20037508.34;\n const lat =\n (Math.atan(Math.exp((y * Math.PI) / 20037508.34)) * 360) / Math.PI - 90;\n return [lon, lat];\n}\n\nexport function degrees2Radian(deg: number): number {\n return (deg * Math.PI) / 180;\n}\n\n// export function degrees2meters2(lon: number, lat: number): [number, number] {\n// const radius = 6378137.0;\n// const x = (radius * lon * Math.PI) / 180.0;\n// const y =\n// radius * Math.log(Math.tan(Math.PI / 4.0 + (lat * Math.PI) / 360.0));\n// return [x, y];\n// }\n\n// export function meters2degress2(x: number, y: number): LngLatArray {\n// const radius = 6378137.0;\n// const lon = (180 / Math.PI) * (x / radius);\n// const lat = (360 / Math.PI) * (Math.atan(Math.exp(y / radius)) - Math.PI / 4);\n// return [lon, lat];\n// }\n\n// const lon = -77.035974;\n// const lat = 38.898717;\n\n// console.log(degrees2meters(lon, lat), degrees2meters2(lon, lat));\n\n// const x = -8575605.398443861;\n// const y = 4707174.018280405;\n\n// console.log(meters2degress(x, y), meters2degress2(x, y));\n","import { LngLatBoundsArray } from '@nextgis/utils';\n\nexport function isLngLatBoundsArray(\n array: unknown,\n): array is LngLatBoundsArray {\n return (\n Array.isArray(array) &&\n array.length === 4 &&\n array.every((x) => typeof x === 'number')\n );\n}\n","import { LngLatArray } from '@nextgis/utils';\n\nexport function getIdentifyRadius(\n center: LngLatArray,\n zoom: number,\n pixelRadius: number,\n): number {\n pixelRadius = pixelRadius ?? 10;\n const metresPerPixel =\n (40075016.686 * Math.abs(Math.cos((center[1] * 180) / Math.PI))) /\n Math.pow(2, zoom + 8);\n const radius = pixelRadius * metresPerPixel * 0.0005;\n return radius;\n}\n","export function objectAssign<T, U>(target: T, source: U): T & U;\n\n/**\n * Copy the values of all of the enumerable own properties from one or more source objects to a\n * target object. Returns the target object.\n * @param target - The target object to copy to.\n * @param source1 - The first source object from which to copy properties.\n * @param source2 - The second source object from which to copy properties.\n */\nexport function objectAssign<T, U, V>(\n target: T,\n source1: U,\n source2: V,\n): T & U & V;\n\n/**\n * Copy the values of all of the enumerable own properties from one or more source objects to a\n * target object. Returns the target object.\n * @param target - The target object to copy to.\n * @param source1 - The first source object from which to copy properties.\n * @param source2 - The second source object from which to copy properties.\n * @param source3 - The third source object from which to copy properties.\n */\nexport function objectAssign<T, U, V, W>(\n target: T,\n source1: U,\n source2: V,\n source3: W,\n): T & U & V & W;\n\n/**\n * Copy the values of all of the enumerable own properties from one or more source objects to a\n * target object. Returns the target object.\n * @param target - The target object to copy to.\n * @param sources - One or more source objects from which to copy properties\n */\nexport function objectAssign(\n target: Record<string, unknown>,\n ...sources: any[]\n): any {\n for (const source of sources) {\n for (const prop of Object.getOwnPropertyNames(source)) {\n (target as any)[prop] = source[prop];\n }\n }\n}\n","function isEqual(a: unknown, b: unknown, o: unknown, p: unknown): boolean {\n if (a instanceof Array) {\n if (!(b instanceof Array)) return false;\n //if (compareObjects(oVal, pVal === false) return false\n //would work, too, and perhaps is a better fit, still, this is easy, too\n return b.sort().join('') === a.sort().join('');\n } else if (a instanceof Date) {\n if (!(b instanceof Date)) return false;\n return '' + a === '' + b;\n } else if (a instanceof Function) {\n if (!(b instanceof Function)) return false;\n //ignore functions, or check them regardless?\n } else if (a instanceof Object) {\n if (!(b instanceof Object)) return false;\n if (a === o) {\n return b === p;\n } else {\n return objectDeepEqual(a, b);\n }\n }\n return a === b;\n}\n\n// based on https://stackoverflow.com/a/13143059\nexport function objectDeepEqual<\n T extends Record<string, any> = Record<string, any>,\n>(o: T, p: T): boolean {\n const keysO = Object.keys(o).sort();\n const keysP = Object.keys(p).sort();\n if (keysO.length !== keysP.length) return false;\n if (keysO.join('') !== keysP.join('')) return false;\n for (let i = 0; i < keysO.length; i++) {\n const oVal = o[keysO[i]];\n const pVal = p[keysP[i]];\n if (!isEqual(oVal, pVal, o, p)) {\n return false;\n }\n }\n return true;\n}\n","export function objectRemoveEmpty<T extends Record<any, any>>(obj: T): T {\n const newObj: Record<any, any> = {} as T;\n Object.keys(obj).forEach((key) => {\n if (!(obj[key] instanceof Array) && obj[key] === Object(obj[key])) {\n newObj[key] = objectRemoveEmpty(obj[key]);\n } else if (obj[key] !== undefined) {\n newObj[key] = obj[key];\n }\n });\n return newObj;\n}\n","export function round(val: number, toFixed?: number): number {\n const n = toFixed ? Number('1e+' + toFixed) : 1;\n return Math.round((val + Number.EPSILON) * n) / n;\n}\n","export * from './DeepPartial';\nexport * from './Type';\nexport * from './Json';\nexport * from './isObjKey';\n\nexport function isObject(val: unknown): val is Record<string | number, any> {\n return Object.prototype.toString.call(val) === '[object Object]';\n}\n\nexport function isArray(val: unknown): val is [] {\n return Object.prototype.toString.call(val) === '[object Array]';\n}\n","export function fixUrlStr(url: string): string {\n // remove double slash\n return url.replace(/([^:]\\/)\\/+/g, '$1');\n}\n","import type {\n VectorAdapterLayerPaint,\n GetPaintCallback,\n PropertiesPaint,\n GeometryPaint,\n IconPaint,\n Paint,\n} from './interfaces';\n\nexport function isPropertiesPaint(paint: Paint): paint is PropertiesPaint {\n if (Array.isArray(paint)) {\n return true;\n }\n return false;\n}\n\nexport function isPaint(paint: Paint): paint is VectorAdapterLayerPaint {\n if (Object.prototype.toString.call(paint) === '[object Object]') {\n return true;\n }\n return false;\n}\n\nexport function isBasePaint(paint: Paint): paint is GeometryPaint {\n if (isPaint(paint)) {\n if (paint.type === 'get-paint' || paint.type === 'icon') {\n return false;\n }\n return true;\n }\n return false;\n}\n\nexport function isPaintCallback(paint: Paint): paint is GetPaintCallback {\n if (typeof paint === 'function') {\n return true;\n }\n return false;\n}\n\nexport function isIcon(paint: IconPaint): paint is IconPaint {\n return paint.type === 'icon' || 'html' in paint;\n}\n","export const tryConvert = (\n converter: (arg: any, data: any) => any,\n arg: any,\n data: any,\n): any => {\n try {\n const result = converter(arg, data);\n if (result !== undefined) {\n return result;\n }\n } catch {\n // ignore errors\n }\n return undefined;\n};\n","import { tryConvert } from './tryConvert';\n\nimport type { ExpressionFunc, SimpleType } from '../interfaces';\n\nexport default function fallback<\n T extends SimpleType[] = SimpleType[],\n R = T[0],\n>(cb: ExpressionFunc<T, R | undefined>): ExpressionFunc<T[], R> {\n return (args: T[], data) => {\n for (const arg of args) {\n const result = tryConvert(cb, arg, data);\n if (result !== undefined) {\n return result;\n }\n }\n throw new Error(`Received a mismatched type`);\n };\n}\n","import type {\n ExpressionCbFunc,\n ExpressionFunc,\n MapToCallback,\n SimpleType,\n} from '../interfaces';\n\nexport default function evaluateArgs<\n T extends SimpleType[] = SimpleType[],\n R = T[0],\n>(cb: ExpressionFunc<T, R>): ExpressionCbFunc<T, R> {\n return (args: MapToCallback<T>, data) => {\n const unwrap = args.map((a) => a()) as T;\n return cb(unwrap, data);\n };\n}\n","import f from '../utils/fallback';\nimport e from '../utils/evaluateArgs';\n\nimport type { ExpressionCbFunc, TypeExpressionName } from '../interfaces';\n\ntype ArrayType = 'string' | 'number' | 'boolean';\n\ntype ArrayArgs =\n | [value: any[]]\n | [type: ArrayType, value: any[]]\n | [type: ArrayType, n: number, value: any[]];\n\nconst array = (args: ArrayArgs): any[] => {\n const [firstArg, secondArg, thirdArg] = args;\n let requiredType: ArrayType | undefined = undefined;\n let requiredLength: number | undefined = undefined;\n let value: any[] | undefined;\n\n if (\n typeof firstArg === 'string' &&\n ['string', 'number', 'boolean'].includes(firstArg)\n ) {\n requiredType = firstArg;\n\n if (typeof secondArg === 'number') {\n requiredLength = secondArg;\n value = thirdArg;\n } else {\n value = secondArg;\n }\n } else if (Array.isArray(firstArg)) {\n value = firstArg;\n }\n if (!Array.isArray(value)) {\n throw new Error('Expected an array');\n }\n if (requiredType && !value.every((item) => typeof item === requiredType)) {\n throw new Error(\n `Expected all items in array to be of type ${requiredType}`,\n );\n }\n\n if (requiredLength && value.length !== requiredLength) {\n throw new Error(`Expected array of length ${requiredLength}`);\n }\n return value;\n};\n\nfunction typeOfValue(value: any): string {\n if (value === null) return 'null';\n switch (typeof value) {\n case 'string':\n return 'string';\n case 'number':\n return 'number';\n case 'boolean':\n return 'boolean';\n case 'object':\n if (Array.isArray(value)) {\n let arrayType = 'value';\n if (value.every((item) => typeof item === 'number')) {\n arrayType = 'number';\n } else if (value.every((item) => typeof item === 'string')) {\n arrayType = 'string';\n } else if (value.every((item) => typeof item === 'boolean')) {\n arrayType = 'boolean';\n }\n return `array<${arrayType}, ${value.length}>`;\n } else {\n return 'object';\n }\n default:\n return 'undefined';\n }\n}\n\nexport const typeExpressions: Record<TypeExpressionName, ExpressionCbFunc> = {\n array: e(array),\n boolean: e(\n f<boolean[]>((arg) => (typeof arg === 'boolean' ? arg : undefined)),\n ),\n literal: e(([arg]) => arg),\n number: e(f<number[]>((arg) => (typeof arg === 'number' ? arg : undefined))),\n object: e(\n f<Record<string, any>[]>((arg) =>\n arg !== null && typeof arg === 'object' && !Array.isArray(arg)\n ? arg\n : undefined,\n ),\n ),\n\n string: e(f((arg) => (typeof arg === 'string' ? arg : undefined))),\n 'to-boolean': e(f(Boolean)),\n 'to-number': e(f(Number)),\n 'to-string': e(f(String)),\n typeof: e(([arg]) => typeOfValue(arg)),\n};\n","import e from '../utils/evaluateArgs';\n\nimport type { ExpressionCbFunc, MathExpressionName } from '../interfaces';\n\nexport const mathExpressions: Record<\n MathExpressionName,\n ExpressionCbFunc<number[], number>\n> = {\n '+': e((args) => args.reduce((a, b) => a + b, 0)),\n '-': e((args) => args.reduce((a, b) => a - b)),\n '*': e((args) => args.reduce((a, b) => a * b, 1)),\n '/': e((args) => args.reduce((a, b) => a / b)),\n '%': e((args) => args[0] % args[1]),\n '^': e((args) => Math.pow(args[0], args[1])),\n abs: e((args) => Math.abs(args[0])),\n acos: e((args) => Math.acos(args[0])),\n asin: e((args) => Math.asin(args[0])),\n atan: e((args) => Math.atan(args[0])),\n ceil: e((args) => Math.ceil(args[0])),\n cos: e((args) => Math.cos(args[0])),\n e: () => Math.E,\n floor: e((args) => Math.floor(args[0])),\n ln: e((args) => Math.log(args[0])),\n ln2: () => Math.LN2,\n log10: e((args) => Math.log10(args[0])),\n log2: e((args) => Math.log2(args[0])),\n max: e((args) => Math.max(...args)),\n min: e((args) => Math.min(...args)),\n pi: () => Math.PI,\n round: e((args) => Math.round(args[0])),\n sin: e((args) => Math.sin(args[0])),\n sqrt: e((args) => Math.sqrt(args[0])),\n tan: e((args) => Math.tan(args[0])),\n};\n","import e from '../utils/evaluateArgs';\n\nimport type {\n Data,\n SimpleType,\n LookupExpressionName,\n ExpressionCbFunc,\n} from '../interfaces';\n\ntype GetArg = [key: string] | [key: string, obj: Record<string, any>];\n\nfunction get([key, objExp]: GetArg, data: Data): SimpleType | null {\n const target = objExp || data;\n if (target && typeof target === 'object' && key in target) {\n return target[key];\n }\n return null;\n}\n\nfunction has([key, objExp]: GetArg, data: Data): boolean {\n const target = objExp || data;\n return !!(target && typeof target === 'object' && key in target);\n}\n\nfunction at([index, array]: [index: number, array: any[]]): SimpleType {\n return array[index];\n}\n\ntype InArgs = [keyword: string | boolean | number, input: string | any[]];\nfunction inFunc([keyword, input]: InArgs): boolean {\n if (typeof input === 'string') {\n return input.includes(String(keyword));\n } else if (Array.isArray(input)) {\n return input.includes(keyword);\n }\n throw new Error(\n `Invalid input type for 'in'. Expected string or array, got ${typeof input}.`,\n );\n}\n\nconst length = ([item]: [string | any[]]) => {\n if (typeof item === 'string' || Array.isArray(item)) {\n return item.length;\n }\n return undefined;\n};\n\ntype IndexOfArgs =\n | [keyword: string | boolean | number, input: string | any[]]\n | [keyword: string | boolean | number, input: string | any[], index: number];\nfunction indexOf([keyword, input, startIndex]: IndexOfArgs): number {\n if (typeof input === 'string') {\n return input.indexOf(String(keyword), startIndex);\n } else if (Array.isArray(input)) {\n return input.indexOf(keyword, startIndex);\n }\n\n throw new Error(\n `Invalid input type for 'index-of'. Expected string or array, got ${typeof input}.`,\n );\n}\n\ntype SliceArgs =\n | [input: string | any[], startIndex: number]\n | [input: string | any[], startIndex: number, endIndex: number];\n\nfunction slice(args: SliceArgs): string | any[] {\n const [input, startIndex, endIndex] = args;\n\n if (typeof input === 'string') {\n return input.slice(startIndex, endIndex);\n } else if (Array.isArray(input)) {\n return input.slice(startIndex, endIndex);\n }\n\n throw new Error(\n `Invalid input type for 'slice'. Expected string or array, got ${typeof input}.`,\n );\n}\n\nexport const lookupExpressions: Record<LookupExpressionName, ExpressionCbFunc> =\n {\n get: e(get),\n length: e(length),\n at: e(at),\n has: e(has),\n in: e(inFunc),\n 'index-of': e(indexOf),\n slice: e(slice),\n };\n","import e from '../utils/evaluateArgs';\nimport type { ExpressionCbFunc, StringExpressionName } from '../interfaces';\n\nexport const stringExpressions: Record<\n StringExpressionName,\n ExpressionCbFunc<string[], string>\n> = {\n concat: e((args) => args.reduce((a, b) => String(a) + String(b), '')),\n downcase: e((args) => String(args[0]).toLowerCase()),\n upcase: e((args) => String(args[0]).toUpperCase()),\n};\n","import e from '../utils/evaluateArgs';\nimport type { DecisionExpressionName, ExpressionCbFunc } from '../interfaces';\n\nfunction not([expr]: [boolean]): boolean {\n return !expr;\n}\n\nfunction notEqual([a, b]: [value1: any, value2: any]): boolean {\n return a !== b;\n}\n\nfunction lessThan([left, right]: [value1: any, value2: any]): boolean {\n return left < right;\n}\n\nfunction lessThanOrEqual([left, right]: [value1: any, value2: any]): boolean {\n return left <= right;\n}\n\nfunction equal([left, right]: [value1: any, value2: any]): boolean {\n return left === right;\n}\n\nfunction greaterThan([left, right]: [value1: any, value2: any]): boolean {\n return left > right;\n}\n\nfunction greaterThanOrEqual([left, right]: [\n value1: any,\n value2: any,\n]): boolean {\n return left >= right;\n}\n\nconst coalesce: ExpressionCbFunc<any[], any> = (args) => {\n for (let i = 0; i < args.length; i++) {\n const arg = args[i]();\n if (arg !== null && arg !== undefined) {\n return arg;\n }\n }\n return null;\n};\n\nconst all: ExpressionCbFunc<any[], boolean> = (args) => {\n for (let i = 0; i < args.length; i++) {\n const arg = args[i]();\n if (!arg) {\n return false;\n }\n }\n return true;\n};\n\nconst any: ExpressionCbFunc<any[], boolean> = (args) => {\n for (let i = 0; i < args.length; i++) {\n const arg = args[i]();\n if (arg) {\n return true;\n }\n }\n return false;\n};\n\nconst match: ExpressionCbFunc<any[]> = (args) => {\n const [lookupFn, ...cases] = args;\n const lookup = lookupFn();\n // remove last odd item from cases array\n const defValue = cases.splice(-1, cases.length % 2)[0];\n for (let fry = 0; fry < cases.length - 1; fry += 2) {\n const key = cases[fry]();\n if (key === lookup) {\n return cases[fry + 1]();\n }\n }\n return defValue();\n};\n\ntype OutputType = any;\nconst caseFunc: ExpressionCbFunc<\n [boolean, OutputType, ...Array<boolean | OutputType>],\n OutputType\n> = (args) => {\n if (args.length < 2) {\n throw new Error(\n 'The \"case\" function requires at least a condition and a corresponding output.',\n );\n }\n\n if (args.length % 2 === 0) {\n throw new Error(\n 'Missing a fallback value or unmatched condition-output pair.',\n );\n }\n for (let i = 0; i < args.length - 1; i += 2) {\n const condition = args[i]() as boolean;\n const value = args[i + 1]() as OutputType;\n if (condition) {\n return value;\n }\n }\n const fallback = args[args.length - 1];\n return fallback();\n};\n\nexport const decisionExpressions: Record<\n DecisionExpressionName,\n ExpressionCbFunc\n> = {\n '!': e(not),\n '!=': e(notEqual),\n '<': e(lessThan),\n '<=': e(lessThanOrEqual),\n '==': e(equal),\n '>': e(greaterThan),\n '>=': e(greaterThanOrEqual),\n coalesce,\n all,\n any,\n case: caseFunc,\n match,\n};\n","import { ExpressionCbFunc } from '../../interfaces';\n\ntype OutputType = number | string | boolean | null;\n\nexport const step: ExpressionCbFunc<(number | OutputType)[], OutputType> = (\n args,\n) => {\n const [inputFn, defaultValue, ...stops] = args;\n const input = inputFn();\n\n if (typeof input !== 'number') {\n return defaultValue() as OutputType;\n }\n\n for (let i = 0; i < stops.length - 2; i += 2) {\n const stopInput = stops[i]() as number;\n const stopOutput = stops[i + 1]() as OutputType;\n const nextStopInput = stops[i + 2]() as number;\n\n if (input >= stopInput && input < nextStopInput) {\n return stopOutput;\n }\n }\n\n if (input >= (stops[stops.length - 2]() as number)) {\n return stops[stops.length - 1]();\n }\n\n return defaultValue();\n};\n","export const COLORS = {\n aliceblue: '#f0f8ff',\n antiquewhite: '#faebd7',\n aqua: '#00ffff',\n aquamarine: '#7fffd4',\n azure: '#f0ffff',\n beige: '#f5f5dc',\n bisque: '#ffe4c4',\n black: '#000000',\n blanchedalmond: '#ffebcd',\n blue: '#0000ff',\n blueviolet: '#8a2be2',\n brown: '#a52a2a',\n burlywood: '#deb887',\n cadetblue: '#5f9ea0',\n chartreuse: '#7fff00',\n chocolate: '#d2691e',\n coral: '#ff7f50',\n cornflowerblue: '#6495ed',\n cornsilk: '#fff8dc',\n crimson: '#dc143c',\n cyan: '#00ffff',\n darkblue: '#00008b',\n darkcyan: '#008b8b',\n darkgoldenrod: '#b8860b',\n darkgray: '#a9a9a9',\n darkgreen: '#006400',\n darkkhaki: '#bdb76b',\n darkmagenta: '#8b008b',\n darkolivegreen: '#556b2f',\n darkorange: '#ff8c00',\n darkorchid: '#9932cc',\n darkred: '#8b0000',\n darksalmon: '#e9967a',\n darkseagreen: '#8fbc8f',\n darkslateblue: '#483d8b',\n darkslategray: '#2f4f4f',\n darkturquoise: '#00ced1',\n darkviolet: '#9400d3',\n deeppink: '#ff1493',\n deepskyblue: '#00bfff',\n dimgray: '#696969',\n dodgerblue: '#1e90ff',\n firebrick: '#b22222',\n floralwhite: '#fffaf0',\n forestgreen: '#228b22',\n fuchsia: '#ff00ff',\n gainsboro: '#dcdcdc',\n ghostwhite: '#f8f8ff',\n gold: '#ffd700',\n goldenrod: '#daa520',\n gray: '#808080',\n green: '#008000',\n greenyellow: '#adff2f',\n honeydew: '#f0fff0',\n hotpink: '#ff69b4',\n 'indianred ': '#cd5c5c',\n indigo: '#4b0082',\n ivory: '#fffff0',\n khaki: '#f0e68c',\n lavender: '#e6e6fa',\n lavenderblush: '#fff0f5',\n lawngreen: '#7cfc00',\n lemonchiffon: '#fffacd',\n lightblue: '#add8e6',\n lightcoral: '#f08080',\n lightcyan: '#e0ffff',\n lightgoldenrodyellow: '#fafad2',\n lightgrey: '#d3d3d3',\n lightgreen: '#90ee90',\n lightpink: '#ffb6c1',\n lightsalmon: '#ffa07a',\n lightseagreen: '#20b2aa',\n lightskyblue: '#87cefa',\n lightslategray: '#778899',\n lightsteelblue: '#b0c4de',\n lightyellow: '#ffffe0',\n lime: '#00ff00',\n limegreen: '#32cd32',\n linen: '#faf0e6',\n magenta: '#ff00ff',\n maroon: '#800000',\n mediumaquamarine: '#66cdaa',\n mediumblue: '#0000cd',\n mediumorchid: '#ba55d3',\n mediumpurple: '#9370d8',\n mediumseagreen: '#3cb371',\n mediumslateblue: '#7b68ee',\n mediumspringgreen: '#00fa9a',\n mediumturquoise: '#48d1cc',\n mediumvioletred: '#c71585',\n midnightblue: '#191970',\n mintcream: '#f5fffa',\n mistyrose: '#ffe4e1',\n moccasin: '#ffe4b5',\n navajowhite: '#ffdead',\n navy: '#000080',\n oldlace: '#fdf5e6',\n olive: '#808000',\n olivedrab: '#6b8e23',\n orange: '#ffa500',\n orangered: '#ff4500',\n orchid: '#da70d6',\n palegoldenrod: '#eee8aa',\n palegreen: '#98fb98',\n paleturquoise: '#afeeee',\n palevioletred: '#d87093',\n papayawhip: '#ffefd5',\n peachpuff: '#ffdab9',\n peru: '#cd853f',\n pink: '#ffc0cb',\n plum: '#dda0dd',\n powderblue: '#b0e0e6',\n purple: '#800080',\n rebeccapurple: '#663399',\n red: '#ff0000',\n rosybrown: '#bc8f8f',\n royalblue: '#4169e1',\n saddlebrown: '#8b4513',\n salmon: '#fa8072',\n sandybrown: '#f4a460',\n seagreen: '#2e8b57',\n seashell: '#fff5ee',\n sienna: '#a0522d',\n silver: '#c0c0c0',\n skyblue: '#87ceeb',\n slateblue: '#6a5acd',\n slategray: '#708090',\n snow: '#fffafa',\n springgreen: '#00ff7f',\n steelblue: '#4682b4',\n tan: '#d2b48c',\n teal: '#008080',\n thistle: '#d8bfd8',\n tomato: '#ff6347',\n turquoise: '#40e0d0',\n violet: '#ee82ee',\n wheat: '#f5deb3',\n white: '#ffffff',\n whitesmoke: '#f5f5f5',\n yellow: '#ffff00',\n yellowgreen: '#9acd32',\n};\n","import { COLORS } from '../constants/colors';\n\nexport type ColorArray = [r: number, g: number, b: number, a?: number];\n\nexport type ColorObject = {\n r: number;\n g: number;\n b: number;\n a?: number;\n};\nexport type Color = string | ColorObject;\n\nfunction isHex(hex: any): hex is string {\n return typeof hex === 'string' && /^#([A-Fa-f0-9]{3}){1,2}$/.test(hex);\n}\n\nfunction isRgb(hex: any): hex is string {\n const r =\n // eslint-disable-next-line max-len\n /^rgb(a?)\\(\\s*([0-9]+)\\s*,\\s*([0-9]+)\\s*,\\s*([0-9]+)(?:\\s*,\\s*([01](?:\\.\\d+)?))?\\s*\\)$/;\n return typeof hex === 'string' && r.test(hex);\n}\n\nfunction isColorObj(obj: any): obj is ColorObject {\n if (typeof obj === 'object' && obj !== null) {\n const hasRgb = 'r' in obj && 'g' in obj && 'b' in obj;\n const hasValidAlpha =\n !('a' in obj) || (typeof obj.a === 'number' && obj.a >= 0 && obj.a <= 1);\n return hasRgb && hasValidAlpha;\n }\n return false;\n}\n\nfunction isColorName(name: any): name is keyof typeof COLORS {\n if (typeof name === 'string' && name in COLORS) {\n return true;\n }\n return false;\n}\n\nexport function isColor(value: any): value is Color {\n return [isColorName, isHex, isRgb, isColorObj].some((c) => c(value));\n}\n\nexport function toColor(value: Color): ColorArray {\n if (isHex(value)) {\n return hexToColor(value);\n } else if (isColorName(value)) {\n return colorNameToColor(value);\n } else if (isRgb(value)) {\n return rgbToColor(value);\n } else if (isColorObj(value)) {\n return colorObjectToColor(value);\n }\n throw new Error(`The '${value}' cannot be converted to color`);\n}\n\nfunction colorNameToColor(name: keyof typeof COLORS) {\n return hexToColor(COLORS[name]);\n}\n\nfunction hexToColor(hex: string): ColorArray {\n const shortRGB = /^#([0-9a-fA-F])([0-9a-fA-F])([0-9a-fA-F])$/;\n const shortRGBA = /^#([0-9a-fA-F])([0-9a-fA-F])([0-9a-fA-F])([0-9a-fA-F])$/;\n const longRGB = /^#([0-9a-fA-F]{2})([0-9a-fA-F]{2})([0-9a-fA-F]{2})$/;\n const longRGBA =\n /^#([0-9a-fA-F]{2})([0-9a-fA-F]{2})([0-9a-fA-F]{2})([0-9a-fA-F]{2})$/;\n\n let result;\n\n if ((result = shortRGB.exec(hex))) {\n return [\n parseInt(result[1] + result[1], 16),\n parseInt(result[2] + result[2], 16),\n parseInt(result[3] + result[3], 16),\n ];\n } else if ((result = shortRGBA.exec(hex))) {\n return [\n parseInt(result[1] + result[1], 16),\n parseInt(result[2] + result[2], 16),\n parseInt(result[3] + result[3], 16),\n parseInt(result[4] + result[4], 16) / 255,\n ];\n } else if ((result = longRGB.exec(hex))) {\n return [\n parseInt(result[1], 16),\n parseInt(result[2], 16),\n parseInt(result[3], 16),\n ];\n } else if ((result = longRGBA.exec(hex))) {\n return [\n parseInt(result[1], 16),\n parseInt(result[2], 16),\n parseInt(result[3], 16),\n parseInt(result[4], 16) / 255,\n ];\n }\n throw new Error(`The '${hex}' Is not valid hex`);\n}\n\nfunction rgbToColor(rgb: string): ColorArray {\n const rgbPattern = /^rgb\\((\\d+),\\s*(\\d+),\\s*(\\d+)\\)$/;\n const rgbaPattern = /^rgba\\((\\d+),\\s*(\\d+),\\s*(\\d+),\\s*([\\d.]+)\\)$/;\n\n let matches;\n\n if ((matches = rgb.match(rgbPattern))) {\n return [\n parseInt(matches[1], 10),\n parseInt(matches[2], 10),\n parseInt(matches[3], 10),\n ];\n } else if ((matches = rgb.match(rgbaPattern))) {\n return [\n parseInt(matches[1], 10),\n parseInt(matches[2], 10),\n parseInt(matches[3], 10),\n parseFloat(matches[4]),\n ];\n }\n\n throw new Error(`The '${rgb}' Is not valid rgb`);\n}\n\nexport function colorObjectToColor({ r, g, b, a }: ColorObject): ColorArray {\n return [r, g, b, ...(a !== undefined ? [a] : [])] as ColorArray;\n}\n\nexport function colorToRGB(array: ColorArray): string {\n return `rgb(${array.join(',')})`;\n}\n","import { type ColorArray, colorToRGB, toColor } from '../../utils/color';\nimport type { ExpressionCbFunc } from '../../interfaces';\n\ntype LinearInterpolation = ['linear'];\ntype ExponentialInterpolation = [name: 'exponential', base: number];\ntype CubicBezierInterpolation = [\n name: 'cubic-bezier',\n x1: number,\n y1: number,\n x2: number,\n y2: number,\n];\ntype Interpolation =\n | LinearInterpolation\n | ExponentialInterpolation\n | CubicBezierInterpolation;\n\ntype OutputType = any;\n\ntype InterpolateArgs = [\n interpolation: Interpolation,\n input: number,\n ...stops: (number | OutputType)[],\n];\n\nfunction linearInterpolation(\n input: number,\n input1: number,\n output1: OutputType,\n input2: number,\n output2: OutputType,\n): OutputType {\n if (typeof output1 === 'number' && typeof output2 === 'number') {\n return (\n output1 + ((input - input1) / (input2 - input1)) * (output2 - output1)\n );\n }\n\n try {\n const outputColor1 = toColor(output1);\n const outputColor2 = toColor(output2);\n return colorToRGB(\n outputColor1.map((val, index) => {\n return Math.ceil(\n linearInterpolation(input, input1, val, input2, outputColor2[index]),\n );\n }) as ColorArray,\n );\n } catch (er) {\n console.log(er);\n }\n\n throw new Error('Unsupported output type for linear interpolation.');\n}\n\nexport const interpolate: ExpressionCbFunc<InterpolateArgs, OutputType> = ([\n interpolationFn,\n inputFn,\n ...stops\n]) => {\n if (stops.length < 2) {\n throw new Error('At least two stops are required');\n }\n if (stops.length < 2 || stops.length % 2 !== 0) {\n throw new Error('Invalid stops provided.');\n }\n const input = inputFn();\n\n if (typeof input !== 'number') {\n throw new Error('Input must be a number.');\n }\n const interpolation = interpolationFn();\n for (let i = 0; i < stops.length - 2; i += 2) {\n const stopInput1 = stops[i]() as number;\n const stopOutput1 = stops[i + 1]() as OutputType;\n const stopInput2 = stops[i + 2]() as number;\n const stopOutput2 = stops[i + 3]() as OutputType;\n\n if (input >= stopInput1 && input <= stopInput2) {\n if (interpolation[0] === 'linear') {\n return linearInterpolation(\n input,\n stopInput1,\n stopOutput1,\n stopInput2,\n stopOutput2,\n );\n }\n // else if (interpolation[0] === 'exponential') {\n // const base = interpolation[1];\n // return exponentialInterpolation(\n // input,\n // base,\n // stopInput1,\n // stopOutput1,\n // stopInput2,\n // stopOutput2,\n // );\n // }\n }\n }\n\n throw new Error('Invalid interpolation type.');\n};\n","import { step } from './step';\nimport { interpolate } from './interpolate';\n\nimport type {\n ExpressionFunc,\n InterpolationExpressionName,\n} from '../../interfaces';\n\nexport const interpolationExpressions: Record<\n InterpolationExpressionName,\n ExpressionFunc\n> = {\n step,\n interpolate,\n};\n","import { typeExpressions } from './expressions/typeExpressions';\nimport { mathExpressions } from './expressions/mathExpressions';\nimport { lookupExpressions } from './expressions/lookupExpressions';\nimport { stringExpressions } from './expressions/stringExpressions';\nimport { decisionExpressions } from './expressions/decisionExpressions';\nimport { interpolationExpressions } from './expressions/interpolationExpressions';\n\nimport type {\n Data,\n SimpleType,\n Expression,\n ExpressionFunc,\n ExpressionName,\n} from './interfaces';\n\nexport function isExpression(value: any): value is Expression {\n if (Array.isArray(value)) {\n const [lookup, ...cases] = value;\n const l = lookup as ExpressionName;\n return (\n typeof l === 'string' &&\n l !== 'literal' &&\n l in expressions &&\n cases.length > 0\n );\n }\n return false;\n}\n\nconst expressions: { [key in ExpressionName]: ExpressionFunc } = {\n ...mathExpressions,\n ...typeExpressions,\n ...stringExpressions,\n ...lookupExpressions,\n ...decisionExpressions,\n ...interpolationExpressions,\n};\n\nexport function evaluate<T extends SimpleType[] = SimpleType[], R = T[0]>(\n expression: Expression,\n data: Data = {},\n): R {\n const [name, ...args] = expression;\n const expressionFun = expressions[name];\n if (expressionFun) {\n return expressionFun(\n args.map((arg) => () => isExpression(arg) ? evaluate(arg, data) : arg),\n data,\n );\n }\n throw new Error(`Expression \"${name}\" is not supported.`);\n}\n","import { evaluate, isExpression, type Expression } from '@nextgis/expression';\n\nimport type { Feature } from 'geojson';\nimport type { VectorAdapterLayerPaint, GetPaintCallback } from './interfaces';\n\ntype PropertyExpressionCb = (feature: Feature) => ReturnType<typeof evaluate>;\n\nfunction createPropertyExpressionCb(\n expression: Expression,\n): PropertyExpressionCb {\n return (feature: Feature) => {\n const properties = feature.properties;\n if (properties) {\n return evaluate(expression, properties);\n }\n return false;\n };\n}\n\nconst excludeExpressionList = ['iconSize', 'iconAnchor'];\n\nexport function createExpressionCallback(\n paint: Record<string, any>,\n): GetPaintCallback | undefined {\n let withExpression = false;\n const expressions: {\n [key: string]: PropertyExpressionCb;\n } = {};\n for (const p in paint) {\n if (excludeExpressionList.indexOf(p) === -1) {\n const p_ = p as keyof VectorAdapterLayerPaint;\n const val = paint[p_];\n if (isExpression(val)) {\n withExpression = true;\n expressions[p_] = createPropertyExpressionCb(val);\n }\n }\n }\n if (withExpression) {\n return (feature: Feature) => {\n const fromCb: any = {};\n for (const p in expressions) {\n fromCb[p] = expressions[p](feature);\n }\n return { ...paint, ...fromCb };\n };\n }\n return;\n}\n","import type { Feature } from 'geojson';\nimport type {\n Operation,\n Properties,\n PropertiesFilter,\n PropertyFilter,\n} from './interfaces';\n\nfunction reEscape(s: string): string {\n return s.replace(/[-/\\\\^$*+?.()|[\\]{}]/g, '\\\\$&');\n}\n\nfunction like(b: string, a: string, iLike?: boolean): boolean {\n a = String(a);\n b = String(b);\n if (a === b) return true;\n if (iLike && a.toUpperCase() === b.toUpperCase()) return true;\n const re = `^${reEscape(a)}$`.replace(/%/g, '.*').replace('_', '.');\n return new RegExp(re, iLike ? 'i' : '').exec(b) !== null;\n}\n\nexport const operationsAliases: {\n [key in Operation]: (a: any, b: any) => boolean;\n} = {\n // greater(>)\n gt: (a: any, b: any) => a > b,\n // lower(<)\n lt: (a: any, b: any) => a < b,\n // greater or equal(>=)\n ge: (a: any, b: any) => a >= b,\n // lower or equal(<=)\n le: (a: any, b: any) => a <= b,\n // equal(=)\n eq: (a: any, b: any) => a === b,\n // not equal(!=)\n ne: (a: any, b: any) => a !== b,\n\n in: (a: any, b: any[]) => b.indexOf(a) !== -1,\n notin: (a: any, b: any[]) => b.indexOf(a) === -1,\n // LIKE SQL statement(for strings compare)\n like: (a: string, b: string) => {\n return like(a, b);\n },\n // ILIKE SQL statement(for strings compare)\n ilike: (a: string, b: string) => {\n return like(a, b, true);\n },\n};\n\nexport function isPropertyFilter(\n filter: PropertyFilter | PropertiesFilter | string,\n): filter is PropertyFilter {\n const pf = filter as PropertyFilter;\n if (\n pf.length === 3 &&\n typeof pf[0] === 'string' &&\n typeof pf[1] === 'string'\n ) {\n return true;\n }\n return false;\n}\n\n/** @deprecated use {@link isPropertyFilter} instead */\nexport function checkIfPropertyFilter(\n filter: PropertyFilter | PropertiesFilter | string,\n): filter is PropertyFilter {\n return isPropertyFilter(filter);\n}\n\nexport function featureFilter(\n feature: Feature,\n filters: PropertiesFilter,\n): boolean {\n const properties: Properties = { ...feature.properties };\n if (properties) {\n // workaround to filter by feature id\n properties.$id = feature.id;\n return propertiesFilter(properties, filters);\n }\n return false;\n}\n\nexport function propertiesFilter<T extends Properties = Properties>(\n properties: T,\n filters: PropertiesFilter<T>,\n): boolean {\n const logic = typeof filters[0] === 'string' ? filters[0] : 'all';\n const filterFunction = (p: PropertyFilter | PropertiesFilter) => {\n if (isPropertyFilter(p)) {\n const [field, operation, value] = p;\n const operationExec = operationsAliases[operation];\n if (operationExec) {\n if (operation === 'like' || operation === 'ilike') {\n if (typeof field === 'string') {\n let prop = '';\n const value_ = field.replace(/^%?(\\w+)%?$/, (match, cleanField) => {\n prop = properties[cleanField];\n return field.replace(cleanField, value);\n });\n return operationExec(prop, value_);\n }\n }\n return operationExec(properties[field], value);\n }\n return false;\n } else {\n return propertiesFilter(properties, p);\n }\n };\n const filters_ = filters.filter((x) => Array.isArray(x)) as (\n | PropertyFilter\n | PropertiesFilter\n )[];\n return logic === 'any'\n ? filters_.some(filterFunction)\n : filters_.every(filterFunction);\n}\n","import { featureFilter } from '@nextgis/properties-filter';\n\nimport { createExpressionCallback } from './fromPaintExpression';\nimport { isPaintCallback, isPropertiesPaint } from './typeHelpers';\n\nimport type { Feature } from 'geojson';\nimport type {\n Paint,\n PropertyPaint,\n GeometryPaint,\n PropertiesPaint,\n GetPaintCallback,\n GetPaintFunction,\n GetCustomPaintOptions,\n VectorAdapterLayerPaint,\n} from './interfaces';\n\nfunction updatePaintOptionFromCallback(\n paint: GetCustomPaintOptions,\n getPaintFunctions?: { [name: string]: GetPaintFunction },\n): VectorAdapterLayerPaint | undefined {\n if (typeof paint.from === 'function') {\n return paint.from(paint.options);\n } else if (typeof paint.from === 'string' && getPaintFunctions) {\n const from = getPaintFunctions[paint.from];\n if (from) {\n return from(paint.options);\n }\n }\n}\n\nfunction createPropertiesPaint(\n propertiesPaint: PropertiesPaint,\n): GetPaintFunction {\n let mask: VectorAdapterLayerPaint = {};\n const paintsFilters: PropertyPaint[] = [];\n for (const p of propertiesPaint) {\n if (p) {\n if (Array.isArray(p)) {\n paintsFilters.push(p);\n } else {\n mask = p as VectorAdapterLayerPaint;\n }\n }\n }\n\n return (feature: Feature) => {\n const paint = paintsFilters.find((x) => featureFilter(feature, x[0]));\n if (paint) {\n return { ...mask, ...paint[1] };\n }\n return mask;\n };\n}\n\nfunction expressionCallback({\n paint,\n defaultPaint,\n}: PreparePaintOptions): Paint | VectorAdapterLayerPaint {\n const expressionCallback = createExpressionCallback(paint);\n if (expressionCallback) {\n const expressionPaintCb = (feature: Feature) => {\n return preparePaint({\n paint: expressionCallback(feature),\n defaultPaint,\n }) as VectorAdapterLayerPaint;\n };\n expressionPaintCb.paint = finalizePaint({ paint, defaultPaint });\n return expressionPaintCb as VectorAdapterLayerPaint;\n }\n return finalizePaint({ paint, defaultPaint });\n}\n\nfunction finalizePaint({ paint, defaultPaint }: PreparePaintOptions): Paint {\n let newPaint: Paint = { ...defaultPaint };\n newPaint = { ...newPaint, ...paint } as GeometryPaint;\n newPaint.fill = newPaint.fill ?? true;\n newPaint.stroke =\n newPaint.stroke !== undefined\n ? newPaint.stroke\n : !newPaint.fill || !!(newPaint.strokeColor || newPaint.strokeOpacity);\n return newPaint;\n}\n\nexport interface PreparePaintOptions {\n paint: Paint;\n defaultPaint?: GeometryPaint;\n getPaintFunctions?: { [name: string]: GetPaintFunction };\n}\n\nexport function preparePaint({\n paint,\n defaultPaint,\n getPaintFunctions,\n}: PreparePaintOptions): Paint {\n if (!paint) {\n throw new Error('paint is empty');\n }\n let newPaint: Paint = { ...defaultPaint };\n if (isPaintCallback(paint)) {\n const getPaintFunction: GetPaintCallback = (feature: Feature) => {\n const getPaint = preparePaint({\n paint: paint(feature),\n defaultPaint,\n getPaintFunctions,\n }) as VectorAdapterLayerPaint;\n getPaint.type = paint.type;\n return getPaint;\n };\n getPaintFunction.type = paint.type;\n return getPaintFunction;\n } else if (isPropertiesPaint(paint)) {\n return (feature: Feature) => {\n return preparePaint({\n paint: createPropertiesPaint(paint)(feature),\n defaultPaint,\n getPaintFunctions,\n }) as VectorAdapterLayerPaint;\n };\n } else if (paint.type === 'get-paint') {\n const getPaint = updatePaintOptionFromCallback(paint, getPaintFunctions);\n if (getPaint) {\n newPaint = preparePaint({\n paint: getPaint,\n defaultPaint,\n getPaintFunctions,\n });\n }\n } else if (paint.type === 'icon') {\n return paint;\n } else {\n newPaint = expressionCallback({ paint, defaultPaint });\n }\n\n if (isPaintCallback(newPaint)) {\n return newPaint;\n }\n\n if ('color' in newPaint) {\n if (!newPaint.strokeColor) {\n newPaint.strokeColor = newPaint.color;\n }\n if (!newPaint.fillColor) {\n newPaint.fillColor = newPaint.color;\n }\n }\n if ('opacity' in newPaint) {\n if (newPaint.strokeOpacity === undefined) {\n newPaint.strokeOpacity = newPaint.opacity;\n }\n if (newPaint.fillOpacity === undefined) {\n newPaint.fillOpacity = newPaint.opacity;\n }\n }\n\n return newPaint;\n}\n","import type {\n GeoJsonObject,\n GeoJsonGeometryTypes,\n FeatureCollection,\n GeometryCollection,\n Feature,\n} from 'geojson';\n\n/**\n * @internal\n */\nexport function findMostFrequentGeomType(\n arr: GeoJsonGeometryTypes[],\n): GeoJsonGeometryTypes {\n const counts: { [x: string]: number } = {};\n for (let fry = 0; fry < arr.length; fry++) {\n counts[arr[fry]] = 1 + (counts[arr[fry]] || 0);\n }\n let maxName;\n for (const c in counts) {\n const count = maxName !== undefined ? counts[maxName] : 0;\n if (counts[c] > (count || 0)) {\n maxName = c;\n }\n }\n return maxName as GeoJsonGeometryTypes;\n}\n\n/**\n * @internal\n */\nexport function detectGeometryType(\n geojson: GeoJsonObject,\n): GeoJsonGeometryTypes {\n let geometry: GeoJsonGeometryTypes;\n if (geojson.type === 'FeatureCollection') {\n const featuresTypes = (geojson as FeatureCollection).features.map(\n (f) => f.geometry.type,\n );\n geometry = findMostFrequentGeomType(featuresTypes);\n } else if (geojson.type === 'GeometryCollection') {\n const geometryTypes = (geojson as GeometryCollection).geometries.map(\n (g) => g.type,\n );\n geometry = findMostFrequentGeomType(geometryTypes);\n } else if (geojson.type === 'Feature') {\n geometry = (geojson as Feature).geometry.type;\n } else {\n geometry = geojson.type;\n }\n return geometry;\n}\n","import { isPaint } from '@nextgis/paint';\nimport { detectGeometryType } from './geometryTypes';\n\nimport type {\n GeoJsonAdapterOptions,\n VectorAdapterLayerType,\n} from '../interfaces/LayerAdapter';\n\n/**\n * @internal\n */\nexport const paintTypeAlias: Record<VectorAdapterLayerType, any> = {\n polygon: 'path',\n line: 'path',\n point: 'circle',\n};\n\nexport const typeAlias: { [x: string]: VectorAdapterLayerType } = {\n Point: 'point',\n LineString: 'line',\n MultiPoint: 'point',\n Polygon: 'polygon',\n MultiLineString: 'line',\n MultiPolygon: 'polygon',\n};\n\n/**\n * @internal\n */\nexport function updateGeoJsonAdapterOptions<\n O extends GeoJsonAdapterOptions = GeoJsonAdapterOptions,\n>(opt: O): O {\n if (opt.data) {\n const geomType = typeAlias[detectGeometryType(opt.data)];\n const p = opt.paint;\n if (p && isPaint(p)) {\n // define parameter if not specified\n p.type = p.type\n ? p.type\n : geomType === 'polygon' || geomType === 'line'\n ? 'path'\n : 'html' in p || 'className' in p\n ? 'icon'\n : paintTypeAlias[geomType];\n }\n opt.type = opt.type || geomType;\n }\n return opt;\n}\n","export class KeyCodes {\n 'backspace' = 8;\n 'tab' = 9;\n 'enter' = 13;\n 'shift' = 16;\n 'ctrl' = 17;\n 'alt' = 18;\n 'pause/break' = 19;\n 'caps_lock' = 20;\n 'escape' = 27;\n 'page_up' = 33;\n 'page_down' = 34;\n 'end' = 35;\n 'home' = 36;\n 'left_arrow' = 37;\n 'up_arrow' = 38;\n 'right_arrow' = 39;\n 'down_arrow' = 40;\n 'insert' = 45;\n 'delete' = 46;\n 'left_window_key' = 91;\n 'right_window_key' = 92;\n 'select_key' = 93;\n 'numpad_0' = 96;\n 'numpad_1' = 97;\n 'numpad_2' = 98;\n 'numpad_3' = 99;\n 'numpad_4' = 100;\n 'numpad_5' = 101;\n 'numpad_6' = 102;\n 'numpad_7' = 103;\n 'numpad_8' = 104;\n 'numpad_9' = 105;\n 'multiply' = 106;\n 'add' = 107;\n 'subtract' = 109;\n 'decimal_point' = 110;\n 'divide' = 111;\n 'f1' = 112;\n 'f2' = 113;\n 'f3' = 114;\n 'f4' = 115;\n 'f5' = 116;\n 'f6' = 117;\n 'f7' = 118;\n 'f8' = 119;\n 'f9' = 120;\n 'f10' = 121;\n 'f11' = 122;\n 'f12' = 123;\n 'num_lock' = 144;\n 'scroll_lock' = 145;\n 'semi-colon' = 186;\n 'equal_sign' = 187;\n ',' = 188; // \"comma\";\n '-' = 189; // \"dash\";\n '.' = 190; // \"period\";\n '/' = 191; // \"forward slash\";\n '`' = 192; // \"grave accent\";\n '[' = 219; // \"open bracket\";\n '\\\\' = 220; // \"back slash\";\n ']' = 221; // \"close braket\";\n \"'\" = 222; // \"single quote\"\n}\n","import { KeyCodes } from './KeysCodes';\n\n/**\n * @param {string} key - key symbol\n * @param {string} func - action on key press\n * @param {number} [keyCode] - key code for special button like tab\n *\n * @export\n * @interface KeyControl\n */\nexport interface KeyControl {\n key?: string;\n keyCode?: number;\n func: () => void;\n}\n\nexport class Keys {\n keyCodeAlias = new KeyCodes();\n\n keys: { [keyCode: number]: boolean } = {};\n\n private _windowOnFocus: () => void;\n private _keysPressed: (e: KeyboardEvent) => void;\n private _keysReleased: (e: KeyboardEvent) => void;\n\n constructor() {\n this._windowOnFocus = this.windowOnFocus.bind(this);\n this._keysPressed = this.keysPressed.bind(this);\n this._keysReleased = this.keysReleased.bind(this);\n this.addKeyboardEventsListener();\n }\n\n pressed(keyName: keyof KeyCodes): boolean {\n const code = this.keyCodeAlias[keyName];\n return !!code && this.keys[code];\n }\n\n addKeyboardEventsListener(): void {\n if (typeof window !== 'undefined') {\n window.addEventListener('focus', this._windowOnFocus, false);\n window.addEventListener('keydown', this._keysPressed, false);\n window.addEventListener('keyup', this._keysReleased, false);\n }\n }\n\n removeKeyboardEventsListener(): void {\n if (typeof window !== 'undefined') {\n window.removeEventListener('focus', this._windowOnFocus, false);\n window.removeEventListener('keydown', this._keysPressed, false);\n window.removeEventListener('keyup', this._keysReleased, false);\n }\n }\n\n private keysPressed(e: KeyboardEvent) {\n e.stopPropagation();\n if (!this.keys[e.keyCode]) {\n this.keys[e.keyCode] = true;\n }\n }\n\n private keysReleased(e: KeyboardEvent) {\n e.stopPropagation();\n this.keys[e.keyCode] = false;\n }\n\n private windowOnFocus() {\n this.keys = {};\n }\n}\n","import type { WebMap } from '../../WebMap';\nimport type { MapStateItem } from '../../interfaces/MapState';\nimport type { WebMapEvents } from '../../interfaces/Events';\nimport type { MapOptions } from '../../interfaces/MapOptions';\n\nexport abstract class StateItem<V extends any | undefined = any | undefined>\n implements MapStateItem<V | undefined>\n{\n name!: keyof MapOptions;\n event!: keyof WebMapEvents;\n protected value?: V;\n\n constructor(\n protected webMap: WebMap,\n opt?: { name?: keyof MapOptions; event?: keyof WebMapEvents; value?: V },\n ) {\n if (opt) {\n if (opt.value) {\n this.setValue(opt.value);\n }\n if (opt.name) {\n this.name = opt.name;\n }\n if (opt.event) {\n this.event = opt.event;\n }\n }\n }\n\n getValue(): V | undefined {\n return this.value;\n }\n\n setValue(val: V): void {\n this.value = val;\n }\n\n abstract toString(data: unknown): string;\n abstract parse(str: string): V;\n}\n","import { StateItem } from './StateItem';\n\nimport type { LngLatArray } from '@nextgis/utils';\nimport type { WebMapEvents } from '../../interfaces/Events';\nimport type { MapOptions } from '../../interfaces/MapOptions';\n\nexport class CenterState extends StateItem<LngLatArray> {\n name: keyof MapOptions = 'center';\n event: keyof WebMapEvents = 'moveend';\n\n getValue(): LngLatArray | undefined {\n return this.webMap.getCenter();\n }\n setValue(val: LngLatArray): void {\n this.webMap.setCenter(val);\n }\n toString(data: LngLatArray): string {\n const d = data.map((x) => x.toFixed(5));\n return d[0] + '_' + d[1];\n }\n parse(str: string): LngLatArray {\n const lngLat = str.split('_').map(Number) as LngLatArray;\n return lngLat;\n }\n}\n","import { StateItem } from './StateItem';\nimport type { WebMapEvents } from '../../interfaces/Events';\nimport type { MapOptions } from '../../interfaces/MapOptions';\n\nexport class ZoomState extends StateItem<number> {\n name: keyof MapOptions = 'zoom';\n event: keyof WebMapEvents = 'zoomend';\n getValue(): number | undefined {\n const zoom = this.webMap.getZoom();\n return zoom !== undefined ? Math.round(zoom) : undefined;\n }\n setValue(val: number): void {\n this.webMap.setZoom(val);\n }\n toString(val: number): string {\n return String(val);\n }\n parse(str: string): number {\n return Number(str);\n }\n}\n","/**\n * @internal\n */\nexport function clearObject(obj: Record<any, any>): void {\n for (const member in obj) {\n delete obj[member];\n }\n}\n","import { EventEmitter } from 'events';\n\nimport { deepmerge, defined, getBoundsFeature } from '@nextgis/utils';\nimport { GetPaintFunction } from '@nextgis/paint';\nimport CancelablePromise from '@nextgis/cancelable-promise';\nimport { deprecatedMapClick } from '@nextgis/utils';\n\nimport { Keys } from './components/keys/Keys';\nimport { CenterState } from './components/mapStates/CenterState';\nimport { StateItem } from './components/mapStates/StateItem';\nimport { ZoomState } from './components/mapStates/ZoomState';\nimport { clearObject } from './utils/clearObject';\n\nimport type StrictEventEmitter from 'strict-event-emitter-types';\nimport type { Feature, Polygon } from 'geojson';\nimport type {\n Type,\n TileJson,\n LngLatArray,\n LngLatBoundsArray,\n} from '@nextgis/utils';\nimport type { Cursor } from './interfaces/BaseTypes';\nimport type {\n LocationEvents,\n MapClickEvent,\n LocateOptions,\n FitOptions,\n MapAdapter,\n Locate,\n} from './interfaces/MapAdapter';\nimport type { StarterKit } from './interfaces/StarterKit';\nimport type { LayerAdapter } from './interfaces/LayerAdapter';\nimport type { RuntimeParams } from './interfaces/RuntimeParams';\nimport type { MapOptions, ViewOptions } from './interfaces/MapOptions';\nimport type { WebMapEvents, MainMapEvents } from './interfaces/Events';\n\ntype EmitStatusEventData = any;\n\nlet ID = 0;\n\nconst OPTIONS: MapOptions = {\n minZoom: 0,\n maxZoom: 22,\n paint: {\n color: '#0000ff', // blue\n opacity: 0.4,\n strokeOpacity: 1,\n stroke: true,\n radius: 8,\n weight: 1,\n },\n selectedPaint: {\n color: '#00008b', // darkblue\n opacity: 0.4,\n strokeOpacity: 1,\n stroke: true,\n radius: 12,\n weight: 1,\n },\n create: true,\n};\n\ninterface AddEventsListenersOptions {\n include: (keyof MainMapEvents)[];\n}\n\nexport class WebMapMain<\n M = any,\n E extends WebMapEvents = WebMapEvents,\n O extends MapOptions = MapOptions,\n> {\n static keys: Keys = new Keys();\n\n static getPaintFunctions: { [name: string]: GetPaintFunction };\n\n options: O = OPTIONS as O;\n // `WebMapEvents` must be `E` but its not work correct\n readonly emitter: StrictEventEmitter<EventEmitter, WebMapEvents> =\n new EventEmitter();\n readonly keys = WebMapMain.keys;\n\n readonly mapAdapter: MapAdapter<M>;\n readonly runtimeParams: RuntimeParams[] = [];\n\n getPaintFunctions = WebMapMain.getPaintFunctions;\n mapState: Type<StateItem>[] = [CenterState, ZoomState];\n id = ID++;\n\n /**\n * From runtime params\n */\n protected _initMapState: Record<string, any> = {};\n protected readonly _starterKits: StarterKit[];\n private _mapState: StateItem[] = [];\n private _extent?: LngLatBoundsArray;\n private readonly _eventsStatus: { [key in keyof E]?: boolean } = {};\n private _coordFromMapClickPromise?: CancelablePromise<LngLatArray>;\n\n private readonly _mapEvents: {\n [key in keyof MainMapEvents]?: (...args: any[]) => void;\n } = {};\n\n constructor(mapOptions: O) {\n this.mapAdapter = mapOptions.mapAdapter as MapAdapter<M>;\n this._starterKits = mapOptions.starterKits || [];\n if (mapOptions) {\n this.options = deepmerge((OPTIONS as O) || {}, mapOptions) as O;\n }\n if (this.options.runtimeParams) {\n this.runtimeParams = this.options.runtimeParams;\n }\n this._addEventsListeners();\n\n if (this.options.tileJson) {\n this._setTileJsonOptions(this.options.tileJson);\n }\n if (this.options.create) {\n this.create();\n }\n }\n\n getId(): number {\n return this.id;\n }\n\n /**\n * Manual way to create a map (If {@link MapOptions.create} is `false`).\n * @example\n * ```javascript\n * const webMap = new WebMap(options);\n * webMap.create().then(() => doSomething());\n * ```\n */\n async create(): Promise<this> {\n if (!this.getEventStatus('create')) {\n await this._setInitMapState(this.mapState);\n await this._setupMap();\n this._emitStatusEvent('create', this);\n }\n return this;\n }\n\n setRuntimeParams(params: RuntimeParams): void {\n this.runtimeParams.push(params);\n }\n\n /**\n * Destroys WebMap, MapAdapter, clears all layers and turn off all event listeners\n */\n destroy(): void {\n this._removeEventListeners();\n clearObject(this._emitStatusEvent);\n if (this.mapAdapter.destroy) {\n this.mapAdapter.destroy();\n }\n }\n\n getState(): Record<string, any> {\n const state: Record<string, any> = {};\n this._mapState.forEach((x) => {\n state[x.name] = x.getValue();\n });\n return state;\n }\n\n getRuntimeParams(): Record<string, any> {\n const state: Record<string, any> = {};\n this._mapState.forEach((x) => {\n for (const r of this.runtimeParams) {\n const val = r.get(x.name);\n if (val !== undefined) {\n state[x.name] = x.parse(val);\n break;\n }\n }\n });\n return state;\n }\n\n /**\n * Returns the HTML element that contains the map.\n * @returns The map's container\n */\n getContainer(): HTMLElement | undefined {\n if (this.mapAdapter.getContainer) {\n return this.mapAdapter.getContainer();\n } else if (this.options.target) {\n if (this.options.target instanceof HTMLElement) {\n return this.options.target;\n } else if (typeof this.options.target === 'string') {\n const element = document.getElementById(this.options.target);\n if (element) {\n return element;\n }\n }\n }\n }\n\n /**\n * Set the cursor icon to be displayed when hover icon on the map container.\n * @param cursor - Available cursor name from https://developer.mozilla.org/ru/docs/Web/CSS/cursor\n */\n setCursor(cursor: Cursor): void {\n if (this.mapAdapter.setCursor) {\n this.mapAdapter.setCursor(cursor);\n }\n }\n\n getCursor(): Cursor | undefined {\n if (this.mapAdapter.getCursor) {\n return this.mapAdapter.getCursor() as Cursor;\n }\n const container = this.getContainer();\n if (container) {\n return container.style.cursor as Cursor;\n }\n }\n\n /**\n * Set the center of the current view.\n * @param lngLat - Array of two numbers representing longitude and latitude of the center of the map view.\n *\n * @example\n * ```javascript\n * // Mount Everest 27° 59′ 17″ N, 86° 55′ 31″ E\n * webMap.setCenter([86.925278, 27.988056]);\n * ```\n */\n setCenter(lngLat: LngLatArray): this {\n this.mapAdapter.setCenter(lngLat);\n return this;\n }\n\n /**\n * Returns the map's geographical centerpoint.\n * @returns lngLat Array of two numbers representing longitude and latitude of the center of the map view.\n *\n * @example\n * ```javascript\n * // Mount Everest 27° 59′ 17″ N, 86° 55′ 31″ E\n * webMap.getCenter(); // [86.925278, 27.988056]\n * ```\n */\n getCenter(): LngLatArray | undefined {\n return this.mapAdapter.getCenter();\n }\n\n getBounds(): LngLatBoundsArray | undefined {\n if (this.mapAdapter.getBounds) {\n return this.mapAdapter.getBounds();\n }\n }\n\n getBoundsPolygon(): Feature<Polygon> | undefined {\n const bounds = this.getBounds();\n if (bounds) {\n const feature = getBoundsFeature(bounds);\n return feature;\n }\n }\n\n /**\n * Zoom to a specific zoom level.\n * @param zoom - The zoom level to set (0-24).\n */\n setZoom(zoom: number): this {\n this.mapAdapter.setZoom(zoom);\n return this;\n }\n\n /**\n * Returns the map's current zoom level.\n * @returns The map's current zoom level (0-24).\n */\n getZoom(): number | undefined {\n const zoom = this.mapAdapter.getZoom();\n if (typeof zoom === 'number') {\n return zoom;\n }\n // throw Error(\n // 'Unable to get zoom level. Perhaps the map is not have been initialized yet',\n // );\n }\n\n zoomIn(): void {\n if (this.mapAdapter.zoomIn) {\n this.mapAdapter.zoomIn();\n } else {\n const zoom = this.getZoom();\n if (zoom !== undefined) {\n const toZoom = zoom + 1;\n this.setZoom(toZoom);\n }\n }\n }\n\n zoomOut(): void {\n if (this.mapAdapter.zoomOut) {\n this.mapAdapter.zoomOut();\n } else {\n const zoom = this.getZoom();\n if (zoom !== undefined) {\n const toZoom = zoom - 1;\n this.setZoom(toZoom);\n }\n }\n }\n\n /**\n * Sets the view of the map geographical center and zoom\n * @param lngLat - Array of two numbers representing longitude and latitude of the center of the map view.\n * @param zoom - The zoom level to set (0-24).\n *\n * @example\n * ```javascript\n * // Mount Everest 27° 59′ 17″ N, 86° 55′ 31″ E\n * webMap.setView([86.925278, 27.988056], 12)\n * ```\n */\n setView(lngLatOr: LngLatArray, zoom?: number): void;\n\n setView(options: ViewOptions): void;\n\n setView(lngLatOrOpt: LngLatArray | ViewOptions, zoom?: number): void {\n if (Array.isArray(lngLatOrOpt)) {\n const lngLat = lngLatOrOpt;\n if (this.mapAdapter.setView && lngLat && defined(zoom)) {\n this.mapAdapter.setView(lngLat, zoom);\n } else {\n if (lngLat) {\n this.mapAdapter.setCenter(lngLat);\n }\n if (defined(zoom)) {\n this.mapAdapter.setZoom(zoom);\n }\n }\n } else {\n const viewOpt = lngLatOrOpt;\n if (this.mapAdapter.setView) {\n this.mapAdapter.setView(viewOpt);\n }\n }\n }\n\n /**\n * Sets a map view that contains the given geographical bounds.\n * @param bounds - Array of coordinates, measured in degrees, in [west, south, east, north] order.\n *\n * @example\n * ```javascript\n * // Whole world\n * webMap.fitBounds([0, -90, 180, 90]);\n * ```\n */\n fitBounds(bounds: LngLatBoundsArray, options?: FitOptions): this {\n if (bounds.every((x) => defined(x))) {\n if (bounds[1] < -85.06) {\n bounds[1] = -85.06;\n }\n if (bounds[3] > 85.06) {\n bounds[3] = 85.06;\n }\n this.mapAdapter.fitBounds(bounds, options);\n }\n return this;\n }\n\n /**\n * Checking the status of any asynchronous operation\n * @param event - The name of the event whose status is checked\n *\n * @example\n * ```javascript\n * var webMap = new WebMap(options);\n * webMap.getEventStatus('create'); // false\n * webMap.emitter.on('create', function () {\n * webMap.getEventStatus('create'); // true\n * })\n * ```\n */\n getEventStatus(event: keyof E): boolean {\n // ugly hack to disable type checking error\n const _eventName = event as keyof WebMapEvents;\n const status = this._eventsStatus[_eventName];\n return status ?? false;\n }\n\n /**\n * helper method to wait for events to load. By default, card creation is tracked\n * @param event - The name of the event whose status is checked\n *\n * @example\n * ```javascript\n * var webMap = new WebMap(options);\n * webMap.onLoad().then(function () {\n * webMap.getEventStatus('create'); // true\n * })\n *\n * // use async/await syntax\n * async function () {\n * await webMap.onLoad();\n * doSomething();\n * }\n *\n * ```\n */\n onLoad(event: keyof WebMapEvents = 'create'): Promise<this> {\n return new Promise((res) => {\n if (this.getEventStatus(event)) {\n res(this);\n } else {\n this.emitter.once(event, () => {\n res(this);\n });\n }\n });\n }\n\n onMapLoad(cb?: (mapAdapter: MapAdapter) => void): Promise<MapAdapter> {\n return new Promise((res) => {\n const _resolve = () => {\n const mapAdapter = this.mapAdapter;\n if (cb) {\n cb(mapAdapter);\n }\n if (mapAdapter) {\n res(mapAdapter);\n }\n };\n const isLoaded = this.mapAdapter.isLoaded ?? true;\n if (this.mapAdapter.map && isLoaded) {\n _resolve();\n } else {\n this.mapAdapter.emitter.once('create', () => {\n _resolve();\n });\n }\n });\n }\n\n getLayerAdapters(): { [name: string]: Type<LayerAdapter> } {\n return this.mapAdapter.layerAdapters;\n }\n\n getLayerAdapter(name: string): Type<LayerAdapter> {\n const adapter = this.mapAdapter.layerAdapters[name];\n return adapter;\n }\n\n locate(opt: LocateOptions, events?: LocationEvents): Locate {\n if (this.mapAdapter && this.mapAdapter.locate) {\n return this.mapAdapter.locate(opt, events);\n }\n const stop = () => ({});\n return { stop };\n }\n\n stopGetCoordFromMapClick(): void {\n if (this._coordFromMapClickPromise) {\n this._coordFromMapClickPromise.cancel();\n }\n }\n\n getCoordFromMapClick(): CancelablePromise<LngLatArray> {\n if (!this._coordFromMapClickPromise) {\n this._coordFromMapClickPromise = new CancelablePromise(\n (resolve, reject, onCancel) => {\n const cursor: Cursor = this.getCursor() || 'grab';\n this._removeEventListeners({ include: ['click'] });\n this.setCursor('crosshair');\n const onCancel_ = (): void => {\n this.setCursor(cursor);\n this._addEventsListeners({ include: ['click'] });\n this.mapAdapter.emitter.off('click', onMapClick);\n this._coordFromMapClickPromise = undefined;\n };\n const onMapClick = (e: MapClickEvent) => {\n onCancel_();\n deprecatedMapClick(e);\n resolve(e.lngLat);\n };\n this.mapAdapter.emitter.once('click', onMapClick);\n onCancel(onCancel_);\n },\n );\n } else {\n return this.getCoordFromMapClick();\n }\n return this._coordFromMapClickPromise;\n }\n\n protected _emitStatusEvent(\n eventName: keyof E,\n data?: EmitStatusEventData,\n ): void {\n // ugly hack to disable type checking error\n const _eventName = eventName as keyof WebMapEvents;\n this._eventsStatus[_eventName] = true;\n this.emitter.emit(_eventName, data);\n }\n\n protected async _addLayerProviders(): Promise<void> {\n //\n }\n\n protected async _onLoadSync(): Promise<void> {\n //\n }\n\n private async _setupMap(): Promise<this> {\n if (!this.mapAdapter) {\n throw new Error('WebMap `mapAdapter` option is not set');\n }\n await this.mapAdapter.create(this.options);\n this._zoomToInitialExtent();\n\n await this._addLayerProviders();\n await this._onLoadSync();\n\n this._emitStatusEvent('build-map', this.mapAdapter);\n return this;\n }\n\n private _setTileJsonOptions(tileJson: TileJson): void {\n if (tileJson.center) {\n this.options.center = tileJson.center;\n }\n if (tileJson.bounds) {\n this.options.bounds = tileJson.bounds;\n }\n if (defined(tileJson.maxzoom)) {\n // this.options.maxZoom = tileJson.maxzoom;\n this.options.zoom = tileJson.maxzoom;\n }\n if (defined(tileJson.minzoom)) {\n // this.options.minZoom = tileJson.minzoom;\n this.options.zoom = tileJson.minzoom;\n }\n if (defined(tileJson.maxzoom) && defined(tileJson.minzoom)) {\n this.options.zoom = (tileJson.maxzoom + tileJson.minzoom) / 2;\n }\n }\n\n private _zoomToInitialExtent(): void {\n const { center, zoom, bounds } = this.options;\n if (this._extent) {\n this.fitBounds(this._extent);\n } else if (center && zoom) {\n this.setView(center, zoom);\n } else if (bounds) {\n this.fitBounds(bounds);\n }\n }\n\n private _setInitMapState(states: Type<StateItem>[]): void {\n for (const X of states) {\n const state = new X(this);\n this._mapState.push(state);\n for (const r of this.runtimeParams) {\n const str = r.get(state.name);\n if (str !== undefined) {\n const val = state.parse(str);\n // state.setValue(val);\n this._initMapState[state.name] = val;\n Object.defineProperty(this.options, state.name, {\n value: val,\n configurable: true,\n enumerable: true,\n });\n break;\n }\n }\n }\n }\n\n private _addEventsListeners(opt?: AddEventsListenersOptions): void {\n let events: (keyof MainMapEvents)[] = [\n 'preclick',\n 'click',\n 'zoomstart',\n 'zoom',\n 'zoomend',\n 'movestart',\n 'move',\n 'moveend',\n 'mousemove',\n 'mouseout',\n 'mouseover',\n ];\n\n if (opt && opt.include) {\n events = events.filter((x) => opt.include.includes(x));\n }\n events.forEach((x) => {\n this._mapEvents[x] = (data): void => {\n if (this.runtimeParams.length) {\n const mapStatusEvent = this._mapState.find((y) => y.event === x);\n if (mapStatusEvent) {\n const value = mapStatusEvent.toString(mapStatusEvent.getValue());\n this.runtimeParams.forEach((r) => {\n r.set(mapStatusEvent.name, value);\n });\n }\n }\n if (this._eventsStatus) {\n this.emitter.emit(x, data);\n }\n };\n const mapEvent = this._mapEvents[x];\n if (mapEvent) {\n this.mapAdapter.emitter.on(x, mapEvent);\n }\n });\n }\n\n private _removeEventListeners(opt?: AddEventsListenersOptions): void {\n let events = Object.entries(this._mapEvents) as [\n keyof MainMapEvents,\n ((...args: any[]) => void) | undefined,\n ][];\n if (opt && opt.include) {\n events = events.filter((x) => opt.include.includes(x[0]));\n }\n events.forEach(([x, event]) => {\n if (event) {\n this.mapAdapter.emitter.removeListener(x as keyof MainMapEvents, event);\n }\n });\n }\n}\n","import { defined } from '@nextgis/utils';\nimport { Paint, preparePaint } from '@nextgis/paint';\nimport { propertiesFilter } from '@nextgis/properties-filter';\n\nimport { updateGeoJsonAdapterOptions } from './utils/updateGeoJsonAdapterOptions';\nimport { WebMapMain } from './WebMapMain';\n\nimport type { Feature, GeoJsonObject, Geometry } from 'geojson';\nimport type { FeatureProperties, TileJson, Type } from '@nextgis/utils';\nimport type { PropertiesFilter } from '@nextgis/properties-filter';\n\nimport type {\n LayerAdapter,\n LayerAdapters,\n FilterOptions,\n AdapterOptions,\n LayerDefinition,\n DataLayerFilter,\n MainLayerAdapter,\n AdapterConstructor,\n VectorLayerAdapter,\n TileAdapterOptions,\n FeatureLayerAdapter,\n ImageAdapterOptions,\n OnLayerMouseOptions,\n LayerAdaptersOptions,\n OnLayerSelectOptions,\n GeoJsonAdapterOptions,\n LayerAdapterDefinition,\n} from './interfaces/LayerAdapter';\nimport type { LayerDef } from './interfaces/BaseTypes';\nimport type {\n GetAttributionsOptions,\n ToggleLayerOptions,\n MapOptions,\n} from './interfaces/MapOptions';\nimport type { WebMapEvents } from './interfaces/Events';\nimport type { FitOptions } from './interfaces/MapAdapter';\n\ntype AddedLayers<M = any, L = any> = { [id: string]: LayerAdapter<M, L> };\n\nexport class WebMapLayers<\n M = any,\n L = any,\n E extends WebMapEvents = WebMapEvents,\n O extends MapOptions = MapOptions,\n> extends WebMapMain<M, E, O> {\n private _layersIdCounter = 1;\n private _layersOrderCounter = 1;\n private readonly _baselayers: string[] = [];\n private readonly _layers: AddedLayers<M, L> = {};\n private readonly _selectedLayers: string[] = [];\n\n constructor(mapOptions: O) {\n super(mapOptions);\n const tileJson = this.options.tileJson;\n if (tileJson) {\n this.emitter.once('build-map', () => this.addTileJsonLayer(tileJson));\n }\n }\n\n /**\n * Try to fit map view by given layer bounds.\n * But not all layers have borders\n */\n async fitLayer(layerDef: LayerDef, options?: FitOptions): Promise<void> {\n const layer = this.getLayer(layerDef);\n // TODO: remove backward compatibility for `getExtent`\n const getBounds = layer && (layer.getBounds || layer.getExtent);\n if (getBounds) {\n const extent = await getBounds.call(layer);\n if (extent) {\n this.fitBounds(extent, options);\n }\n }\n }\n\n /**\n * Check if given layer is baselayer\n */\n isBaseLayer(layerDef: LayerDef): boolean | undefined {\n const layer = this.getLayer(layerDef);\n if (layer && layer.id) {\n return this._baselayers.indexOf(layer.id) !== -1;\n }\n return undefined;\n }\n\n getBaseLayers(): LayerAdapter[] {\n const baselayers: LayerAdapter[] = [];\n this._baselayers.forEach((x) => {\n const baselayer = this._layers[x];\n if (baselayer) {\n baselayers.push(baselayer);\n }\n });\n return baselayers;\n }\n\n getBaseLayersIds(): string[] {\n return this._baselayers;\n }\n\n /**\n * Helper method to return added layer object by any definition type.\n */\n getLayer<LA extends LayerAdapter = LayerAdapter>(\n layerDef: LayerDef,\n ): LA | undefined {\n if (typeof layerDef === 'string') {\n return this._layers[layerDef] as LA;\n }\n return layerDef as LA;\n }\n\n /**\n * Helper method to return added layer identificator by any definition type.\n */\n getLayerId(layerDef: LayerDef): string | undefined {\n const layer = this.getLayer(layerDef);\n if (layer) {\n if (layer.id) {\n return layer?.id;\n }\n if (layer && layer.options) {\n return layer.options.id;\n }\n }\n throw new Error('No id for layer');\n }\n\n /**\n * Return array of all added layer identifications.\n */\n getLayers(): string[] {\n return Object.keys(this._layers);\n }\n\n // TODO: rename to getLayers, getLayers rename to getLayersIds\n allLayers(): AddedLayers<M, L> {\n return this._layers;\n }\n\n orderedLayers<LA extends LayerAdapter<M, L> = LayerAdapter<M, L>>(): LA[] {\n return Object.values(this._layers).sort((a, b) =>\n a.order && b.order ? a.order - b.order : 0,\n ) as LA[];\n }\n\n findLayer<T extends LayerAdapter = LayerAdapter>(\n filter: (adapter: T) => boolean,\n ): T | undefined {\n for (const l in this._layers) {\n const layerAdapter = this._layers[l] as T;\n const isFit = filter(layerAdapter);\n if (isFit) {\n return layerAdapter;\n }\n }\n }\n\n /**\n * Check if the given layer on the map\n */\n isLayerVisible(layerDef: LayerDef): boolean {\n const layer = this.getLayer(layerDef);\n return layer && layer.options.visibility !== undefined\n ? layer.options.visibility\n : false;\n }\n\n /**\n * Shortcut method to create base layer\n */\n async addBaseLayer<\n K extends keyof LayerAdapters,\n O extends AdapterOptions = AdapterOptions,\n >(\n adapter: K | Type<LayerAdapters[K]>,\n options?: O | LayerAdaptersOptions[K],\n ): Promise<LayerAdapter> {\n const layer = await this.addLayer(\n adapter,\n {\n ...options,\n baselayer: true,\n },\n undefined,\n );\n\n return layer;\n }\n\n /**\n * Registration of map layer.\n *\n * @param adapter - The name of layer adapter from [MapAdapter.layerAdapters](webmap#MapAdapter.layerAdapters).\n * May be custom object or class implemented by [MainLayerAdapter](webmap#MainLayerAdapter).\n * @param options - Specific options for given adapter\n *\n * @example\n * ```javascript\n * webMap.addLayer('TILE', options).then((layer) => webMap.showLayer(layer));\n *\n * webMap.addLayer(CustomLayerAdapter, options);\n * ```\n */\n async addLayer<\n K extends keyof LayerAdapters,\n LO extends AdapterOptions = AdapterOptions,\n >(\n adapter: LayerAdapterDefinition<K>,\n options: LO | LayerAdaptersOptions[K] = {},\n order?: number,\n ): Promise<LayerAdapter> {\n const id = this._layersIdCounter++;\n const _order = defined(order)\n ? order\n : options.order !== undefined\n ? options.order\n : this.reserveOrder();\n let adapterEngine: Type<LayerAdapter<M, L, LO>> | undefined;\n if (typeof adapter === 'string') {\n adapterEngine = this.getLayerAdapter(adapter) as Type<\n LayerAdapter<M, L, LO>\n >;\n } else if (typeof adapter === 'function') {\n adapterEngine = adapter as Type<LayerAdapter<M, L, LO>>;\n } else if (\n 'then' in (adapter as Promise<Type<LayerAdapters[K]> | undefined>)\n ) {\n adapterEngine = (await adapter) as Type<LayerAdapter<M, L, LO>>;\n }\n\n const geoJsonOptions = options as GeoJsonAdapterOptions;\n\n this._updateGeoJsonOptions(geoJsonOptions);\n\n options = {\n id: String(id),\n order: _order,\n ...options,\n };\n\n // options.visibility is a layer global state\n const visibility = options.visibility ?? true;\n options.visibility = false;\n\n if (options.baselayer) {\n options.order = 0;\n }\n if (this.options.onBeforeAddLayer) {\n const modified = this.options.onBeforeAddLayer({\n options,\n adapter: adapterEngine,\n });\n if (modified) {\n if (modified.options) {\n options = modified.options;\n }\n if (modified.adapter) {\n adapterEngine = modified.adapter as Type<LayerAdapter<M, L, LO>>;\n }\n }\n }\n if (adapterEngine !== undefined) {\n const _adapter = new adapterEngine(this.mapAdapter.map, options);\n _adapter.options = { ...options, ..._adapter.options };\n\n if (_adapter.options.baselayer) {\n options.baselayer = true;\n options.order = 0;\n _adapter.options.order = 0;\n }\n\n let layerId: string | undefined;\n if (_adapter.options.id) {\n layerId = String(_adapter.options.id);\n\n this._layers[layerId] = _adapter;\n }\n this._emitLayerEvent('layer:preadd', layerId || '', _adapter);\n await this.onMapLoad();\n _adapter.map = this.mapAdapter.map;\n const layer = await _adapter.addLayer(_adapter.options);\n // checking that the original layer was inserted into the adapter anyway\n _adapter.layer = layer;\n // think about how to move `id` to the adapter's constructor,\n // but that it is not required in the options\n _adapter.id = _adapter.options.id || String(id);\n _adapter.options.id = _adapter.id;\n if (options.baselayer) {\n _adapter.options.order = 0;\n }\n _adapter.order = _adapter.options.order ?? _order;\n if (layerId) {\n delete this._layers[layerId];\n }\n layerId = String(_adapter.id);\n if (this._layers[layerId]) {\n throw Error(`layer with id '${layerId}' already exist`);\n }\n if (layerId) {\n this._layers[layerId] = _adapter;\n\n if (geoJsonOptions.filter) {\n this.filterLayer(_adapter, geoJsonOptions.filter);\n }\n if (options.baselayer) {\n this._baselayers.push(layerId);\n }\n\n if (visibility) {\n await this.showLayer(layerId);\n }\n }\n const opacity = options.opacity;\n if (opacity !== undefined && opacity <= 1) {\n this.setLayerOpacity(_adapter, opacity);\n }\n // TODO: remove backward compatibility for `getExtent`\n const getBounds = layer && (_adapter.getBounds || _adapter.getExtent);\n if (options.fit && getBounds) {\n const extent = await getBounds.call(_adapter);\n if (extent) {\n await this.fitBounds(extent);\n }\n }\n if (options.onAdded) {\n options.onAdded(_adapter);\n }\n this._emitLayerEvent('layer:add', layerId, _adapter);\n return _adapter;\n }\n return Promise.reject('No adapter');\n }\n\n async addLayerFromAsyncAdapter<\n K extends keyof LayerAdapters,\n O extends AdapterOptions = AdapterOptions,\n >(\n adapter: AdapterConstructor,\n options: O | LayerAdaptersOptions[K],\n order?: number,\n ): Promise<LayerAdapter> {\n const _order =\n order || options.order !== undefined\n ? options.order\n : 0 || this.reserveOrder();\n const adapterConstructor = adapter as AdapterConstructor;\n const adapterConstructorPromise = adapterConstructor();\n const adapterEngine = await adapterConstructorPromise;\n if (adapterEngine) {\n return this.addLayer(adapterEngine, options, _order);\n }\n return Promise.reject('No adapter');\n }\n\n /**\n * Remove all layer from map and memory.\n */\n removeLayers(\n allowCb?: (layer: string, adapter: LayerAdapter) => boolean,\n ): void {\n for (const l in this._layers) {\n let allow = true;\n if (allowCb) {\n allow = allowCb(l, this._layers[l]);\n }\n if (allow) {\n this.removeLayer(l);\n delete this._layers[l];\n }\n }\n }\n\n reserveOrder(): number {\n return this._layersOrderCounter++;\n }\n\n /**\n * Remove all layers but not remove basemap.\n */\n removeOverlays(): void {\n this.removeLayers((layerId, layer) => {\n if (layer && layer.options && layer.options.baselayer) {\n return false;\n }\n return true;\n });\n }\n\n /**\n * Remove specific layer from map and memory by its definition.\n */\n removeLayer(layerDef: LayerDef): void {\n const layer = this.getLayer(layerDef);\n const layerId = layer && this.getLayerId(layer);\n if (layer && layerId) {\n this.emitter.emit('layer:preremove', layer);\n if (layer.beforeRemove) {\n layer.beforeRemove();\n }\n if (layer.removeLayer) {\n layer.removeLayer();\n } else {\n this.mapAdapter.removeLayer(layer.layer);\n }\n if (layer.options && layer.options.baselayer) {\n const index = this._baselayers.indexOf(layerId);\n if (index) {\n this._baselayers.splice(index, 1);\n }\n }\n delete this._layers[layerId];\n this.emitter.emit('layer:remove', layer);\n }\n }\n\n /**\n * Create layer from GeoJson data. Set style and behavior for selection.\n *\n * @example\n * ```javascript\n * // Add simple layer\n * webMap.addGeoJsonLayer({ data: geojson, paint: { color: 'red' } });\n *\n * // Add styled by feature property layer with selection behavior\n * webMap.addGeoJsonLayer({\n * data: geojson,\n * paint: function (feature) {\n * return { color: feature.properties.color, opacity: 0.5 }\n * },\n * selectedPaint: function (feature) {\n * return { color: feature.properties.selcolor, opacity: 1 }\n * },\n * selectable: true,\n * multiselect: true\n * });\n *\n * // Add marker layer styled with use [Icons](icons)\n * webMap.addGeoJsonLayer({ data: geojson, paint: webMap.getIcon({ color: 'orange' })});\n *\n * // work with added layer\n * const layer = webMap.addGeoJsonLayer({ data: geojson, id: 'my_layer_name'});\n * // access layer by id\n * webMap.showLayer('my_layer_name');\n * // or access layer by instance\n * webMap.showLayer(layer);\n * ```\n */\n addGeoJsonLayer<\n K extends keyof LayerAdapters = keyof LayerAdapters,\n O extends GeoJsonAdapterOptions<any, any> = GeoJsonAdapterOptions,\n >(\n opt: O = {} as O,\n adapter?: LayerAdapterDefinition<K>,\n ): Promise<VectorLayerAdapter<any, any, any>> {\n opt = opt || ({} as O);\n opt.multiselect = opt.multiselect !== undefined ? opt.multiselect : false;\n opt.unselectOnSecondClick =\n opt.unselectOnSecondClick !== undefined\n ? opt.unselectOnSecondClick\n : true;\n if (!adapter) {\n opt = updateGeoJsonAdapterOptions(opt);\n }\n opt.paint = opt.paint || {};\n return this.addLayer(adapter || 'GEOJSON', opt);\n }\n\n /** Shortcut for {@link WebMapLayers.addGeoJsonLayer} to create GeoJson adapter with generic types for working in typescript */\n addFeatureLayer<\n P extends FeatureProperties = FeatureProperties,\n G extends Geometry = Geometry,\n O extends GeoJsonAdapterOptions<Feature<G, P>> = GeoJsonAdapterOptions<\n Feature<G, P>\n >,\n >(options = {} as O): Promise<FeatureLayerAdapter<P, G>> {\n return this.addGeoJsonLayer<'GEOJSON', O>(options) as Promise<\n FeatureLayerAdapter<P, G>\n >;\n }\n\n /** Shortcut for {@link WebMapLayers.addLayer} to create TileLayer adapter */\n addTileLayer(\n url: string,\n options: Omit<TileAdapterOptions, 'url'> = {},\n ): Promise<MainLayerAdapter<M, L, TileAdapterOptions>> {\n return this.addLayer('TILE', { ...options, url }) as Promise<\n MainLayerAdapter<M, L, TileAdapterOptions>\n >;\n }\n\n /** Shortcut for {@link WebMapLayers.addLayer} to create TileLayer adapter */\n addImageLayer(\n url: string,\n options: Omit<ImageAdapterOptions, 'url'>,\n ): Promise<MainLayerAdapter<M, L, ImageAdapterOptions>>;\n addImageLayer(\n options: ImageAdapterOptions,\n ): Promise<MainLayerAdapter<M, L, ImageAdapterOptions>>;\n addImageLayer(\n urlOrOptions: string | ImageAdapterOptions,\n options?: Omit<ImageAdapterOptions, 'url'>,\n ): Promise<MainLayerAdapter<M, L, ImageAdapterOptions>> {\n let url;\n if (typeof urlOrOptions === 'string') {\n url = urlOrOptions;\n } else {\n url = urlOrOptions.url;\n options = urlOrOptions;\n }\n\n return this.addLayer('IMAGE', { ...options, url }) as Promise<\n MainLayerAdapter<M, L, ImageAdapterOptions>\n >;\n }\n\n /**\n * Show added layer on the map by it definition.\n */\n showLayer(\n layerDef: LayerDef,\n options: ToggleLayerOptions = {},\n ): Promise<void> {\n return this.toggleLayer(layerDef, true, options);\n }\n\n /**\n * Hide added layer on the map by it definition.\n */\n hideLayer(\n layerDef: LayerDef,\n options: ToggleLayerOptions = {},\n ): Promise<void> {\n return this.toggleLayer(layerDef, false, options);\n }\n\n /**\n * Change added layer visibility on the map by given status or inverse current status.\n *\n * @example\n * ```javascript\n * webMap.addLayer('TILE', {id: 'my_layer', url: ''}).then((layer) => {\n * webMap.toggleLayer(layer, true);\n * webMap.toggleLayer('my_layer', false);\n * webMap.toggleLayer('my_layer');\n * webMap.isLayerVisible(layer); // true\n * });\n * ```\n */\n toggleLayer(\n layerDef: LayerDef,\n status?: boolean,\n options: ToggleLayerOptions = {},\n ): Promise<void> {\n const layer = this.getLayer(layerDef);\n\n const onMap = layer && layer.options.visibility;\n const toStatus = status !== undefined ? status : !onMap;\n const silent = options.silent !== undefined ? options.silent : false;\n const action = async (l: LayerAdapter) => {\n const id = String(l.id);\n const preEventName = toStatus ? 'layer:preshow' : 'layer:prehide';\n const eventName = toStatus ? 'layer:show' : 'layer:hide';\n if (!silent) {\n this._emitLayerEvent(preEventName, id, l);\n this._emitLayerEvent('layer:pretoggle', id, l);\n }\n if (toStatus && this.mapAdapter) {\n const order = l.options.baselayer ? 0 : l.options.order;\n\n // do not show baselayer if another on the map\n if (l.options.baselayer && this._baselayers.length) {\n const anotherVisibleBaselayers = this._baselayers.filter((x) => {\n return x !== l.id && this.isLayerVisible(x);\n });\n for (const bl of anotherVisibleBaselayers) {\n await this.hideLayer(bl);\n }\n }\n if (l.showLayer) {\n await l.showLayer.call(l, l.layer);\n } else if (l.layer !== undefined) {\n await this.mapAdapter.showLayer(l.layer);\n }\n if (order !== undefined) {\n this.mapAdapter.setLayerOrder(l.layer, order, this._layers);\n }\n } else {\n if (l.hideLayer) {\n await l.hideLayer.call(l, l.layer);\n } else if (l.layer !== undefined) {\n await this.mapAdapter.hideLayer(l.layer);\n }\n }\n l.options.visibility = toStatus;\n if (!silent) {\n this._emitLayerEvent(eventName, id, l);\n this._emitLayerEvent('layer:toggle', id, l);\n }\n };\n if (layer) {\n return this.onMapLoad().then(() => action(layer));\n }\n return Promise.resolve();\n }\n\n updateLayer(layerDef: LayerDef): Promise<void> {\n const layer = this.getLayer(layerDef);\n if (layer) {\n if (layer.updateLayer) {\n return Promise.resolve(layer.updateLayer());\n } else if (this.isLayerVisible(layer)) {\n return this.hideLayer(layer, { silent: true }).then(() => {\n return this.showLayer(layer, { silent: true });\n });\n }\n }\n return Promise.resolve();\n }\n\n /**\n * Set transparency for a given layer by number from 0 to 1\n */\n setLayerOpacity(layerDef: LayerDef, value: number): void {\n const layer = this.getLayer(layerDef);\n if (layer) {\n if (layer.setOpacity) {\n layer.setOpacity(value);\n } else if (this.mapAdapter.setLayerOpacity) {\n this.mapAdapter.setLayerOpacity(layer.layer, value);\n }\n }\n }\n\n isLayerLabelVisible(layerDef: LayerDef): boolean | undefined {\n const layer = this.getLayer(layerDef) as VectorLayerAdapter;\n if (layer.isLabelVisible) {\n return layer.isLabelVisible();\n }\n return layer.options.labelVisibility ?? true;\n }\n\n showLayerLabel(layerDef: LayerDef): void {\n this.toggleLayerLabel(layerDef, true);\n }\n\n hideLayerLabel(layerDef: LayerDef): void {\n this.toggleLayerLabel(layerDef, false);\n }\n\n toggleLayerLabel(layerDef: LayerDef, status?: boolean): boolean {\n const layer = this.getLayer(layerDef) as VectorLayerAdapter;\n status = status ?? !this.isLayerLabelVisible(layerDef);\n if (layer) {\n if (status) {\n if (layer.showLabel) {\n layer.options.labelVisibility = true;\n layer.showLabel();\n }\n } else {\n if (layer.hideLabel) {\n layer.options.labelVisibility = false;\n layer.hideLabel();\n }\n }\n if (layer.id) {\n this._emitLayerEvent('layer:label:toggle', layer.id, layer);\n }\n }\n return status;\n }\n\n /**\n * Mark the layer as selected.\n * If the adapter is a vector layer and supports data selection,\n * you can pass a callback function to specify which data will be selected.\n *\n * @example\n * ```javascript\n * const layer = webMap.addLayer('GEOJSON', {data: geojson}).then((layer) => {\n * webMap.selectLayer(layer, ({feature}) => feature.id === '42');\n * });\n * ```\n\n */\n selectLayer(layerDef: LayerDef, findFeatureFun?: DataLayerFilter): void {\n const layer = this.getLayer(layerDef);\n if (layer) {\n const adapter = layer as VectorLayerAdapter;\n if (adapter && adapter.select) {\n adapter.select(findFeatureFun);\n }\n const layerId = this.getLayerId(layer);\n if (layerId) {\n this._selectedLayers.push(layerId);\n }\n }\n }\n\n /**\n * Unselect the given layer.\n * If the adapter is a vector layer and supports data selection,\n * you can pass a callback function to specify which data will be unselected.\n *\n * @example\n * ```javascript\n * const layer = webMap.addLayer('GEOJSON', {data: geojson}).then((layer) => {\n * webMap.unSelectLayer(layer, ({feature}) => feature.id === '42');\n * });\n * ```\n *\n */\n unSelectLayer(layerDef: LayerDef, findFeatureFun?: DataLayerFilter): void {\n const layer = this.getLayer(layerDef);\n if (layer) {\n const adapter = layer && (layer as VectorLayerAdapter);\n if (adapter.unselect) {\n adapter.unselect(findFeatureFun);\n }\n const layerId = this.getLayerId(layer);\n if (layerId) {\n const index = this._selectedLayers.indexOf(layerId);\n if (index !== -1) {\n this._selectedLayers.splice(index, 1);\n }\n }\n }\n }\n /** Remove selection from any selected selectable layer */\n unSelectLayers(): void {\n const layers = Object.values(this.allLayers());\n let l: VectorLayerAdapter;\n for (l of layers) {\n if (l.unselect) {\n l.unselect();\n }\n }\n }\n\n /**\n * Hide features from a vector layer using a callback function.\n *\n * @example\n * ```javascript\n * const layer = webMap.addLayer('GEOJSON', {data: geojson}).then((layer) => {\n * webMap.filterLayer(layer, ({feature}) => feature.id === '42');\n * });\n * ```\n *\n */\n filterLayer(\n layerDef: LayerDef,\n filter: DataLayerFilter<Feature, L>,\n ): LayerDefinition<Feature, L>[] {\n const layer = this.getLayer(layerDef);\n const adapter = layer as VectorLayerAdapter;\n if (adapter.filter) {\n return adapter.filter(filter);\n }\n return [];\n }\n\n propertiesFilter(\n layerDef: LayerDef,\n filters: PropertiesFilter,\n options?: FilterOptions,\n ): Promise<void> {\n const layer = this.getLayer(layerDef);\n if (layer) {\n const adapter = layer as VectorLayerAdapter;\n if (adapter.propertiesFilter) {\n return adapter.propertiesFilter(filters, options);\n } else if (adapter.filter) {\n this.filterLayer(adapter, (e) => {\n if (e.feature && e.feature.properties) {\n return propertiesFilter(e.feature.properties, filters);\n }\n return true;\n });\n }\n }\n return Promise.resolve();\n }\n\n removeLayerFilter(layerDef: LayerDef): void {\n const layer = this.getLayer(layerDef);\n const adapter = layer as VectorLayerAdapter;\n if (adapter.removeFilter) {\n adapter.removeFilter();\n } else if (adapter.filter) {\n adapter.filter(() => {\n return true;\n });\n }\n }\n\n /**\n * Sets the GeoJSON data for given vector layer.\n *\n * @example\n * ```javascript\n * const layer = webMap.addLayer('GEOJSON').then((layer) => {\n * webMap.setLayerData(layer, geojson);\n * });\n * ```\n */\n setLayerData(layerDef: LayerDef, data: GeoJsonObject): void | Promise<void> {\n const vectorAdapter = this.getLayer(layerDef);\n const adapter = vectorAdapter as VectorLayerAdapter;\n if (adapter) {\n if (adapter.setData) {\n return adapter.setData(data);\n } else if (adapter.clearLayer && adapter.addData) {\n adapter.clearLayer();\n return adapter.addData(data);\n }\n }\n return Promise.resolve();\n }\n\n /**\n * Push new the GeoJSON features into given vector layer.\n *\n * @example\n * ```javascript\n * const layer = webMap.addLayer('GEOJSON', {data: geojson_features_5}).then((layer) => {\n * console.log(layer.getLayers().length) // > 5;\n * webMap.addLayerData(layer, geojson_features_3);\n * console.log(layer.getLayers().length) // > 8;\n * });\n * ```\n */\n addLayerData(layerDef: LayerDef, data: GeoJsonObject): void {\n const layerMem = this.getLayer(layerDef);\n const adapter = layerMem as VectorLayerAdapter;\n if (adapter.addData) {\n adapter.addData(data);\n }\n }\n\n /**\n * Remove from vector layer all features.\n * it is possible to remove only some objects if you specify a callback function.\n *\n * @example\n * ```javascript\n * const layer = webMap.addLayer('GEOJSON', {data: geojson}).then((layer) => {\n * webMap.clearLayerData(layer, (feture) => feture.id === 42);\n * webMap.clearLayerData(layer);\n * });\n * ```\n */\n clearLayerData(layerDef: LayerDef, cb?: (feature: Feature) => boolean): void {\n const layerMem = this.getLayer(layerDef);\n const adapter = layerMem as VectorLayerAdapter;\n if (adapter && adapter.clearLayer) {\n adapter.clearLayer(cb);\n }\n }\n\n setLayerPaint(layerDef: LayerDef, paint?: Paint | null): void {\n const layer = this.getLayer(layerDef);\n if (paint && layer && layer.setPaint) {\n layer.setPaint(paint);\n }\n }\n setLayerSelectedPaint(layerDef: LayerDef, paint?: Paint | null): void {\n const layer = this.getLayer(layerDef);\n if (paint && layer && layer.setSelectedPaint) {\n layer.setSelectedPaint(paint);\n }\n }\n updateLayerPaint(layerDef: LayerDef, paint: Partial<Paint>): void {\n const layer = this.getLayer(layerDef);\n if (paint && layer && layer.updatePaint) {\n layer.updatePaint(paint);\n }\n }\n updateLayerSelectedPaint(layerDef: LayerDef, paint: Partial<Paint>): void {\n const layer = this.getLayer(layerDef);\n if (paint && layer && layer.updateSelectedPaint) {\n layer.updateSelectedPaint(paint);\n }\n }\n\n getAttributions(options: GetAttributionsOptions): string[] {\n const attributions: string[] = [];\n for (const l in this._layers) {\n const layerCache = this._layers[l];\n const onlyVisible =\n options.onlyVisible !== undefined ? options.onlyVisible : true;\n let useLayerAttr = onlyVisible ? layerCache.options.visibility : true;\n if (useLayerAttr && options.onlyBaselayer) {\n useLayerAttr = this._baselayers.includes(l);\n }\n if (useLayerAttr) {\n const attr = layerCache.options && layerCache.options.attribution;\n if (attr) {\n attributions.push(attr);\n }\n }\n }\n\n return attributions;\n }\n\n getActiveBaseLayer(): MainLayerAdapter<M, any, AdapterOptions> | undefined {\n const visibleLayerBaseLayer = this.getBaseLayers().find((x) => {\n return this.isLayerVisible(x);\n });\n if (visibleLayerBaseLayer) {\n return this.getLayer(visibleLayerBaseLayer);\n }\n }\n\n addTileJsonLayer(\n tileJson: TileJson,\n ): Promise<MainLayerAdapter<M, any, TileAdapterOptions>> {\n // if (this.mapAdapter.createTileJsonlayer) {\n // } else {\n\n const url = tileJson.tiles[0];\n return this.addLayer('TILE', {\n url,\n maxZoom: tileJson.maxzoom,\n minZoom: tileJson.minzoom,\n subdomains: tileJson.scheme,\n attribution: tileJson.attribution,\n }) as Promise<MainLayerAdapter<M, any, TileAdapterOptions>>;\n }\n\n /** @internal */\n _emitLayerEvent(name: keyof E, id: string, options?: unknown) {\n const name_ = String(name);\n if (defined(id) && name_.startsWith('layer:')) {\n const specificLayerName = name_.replace('layer:', 'layer-' + id + ':');\n // @ts-ignore can't paste template literal key for interface\n this.emitter.emit(specificLayerName, options);\n }\n // @ts-ignore\n this.emitter.emit(name, options);\n }\n\n private async _onLayerClick(options: OnLayerMouseOptions) {\n const id = options.layer.id;\n this._emitLayerEvent('layer:click', id || '', options);\n return Promise.resolve(options);\n }\n\n private async _onLayerSelect(options: OnLayerSelectOptions) {\n this._emitLayerEvent('layer:select', options.layer.id || '', options);\n return Promise.resolve(options);\n }\n\n private _updateGeoJsonOptions(options: GeoJsonAdapterOptions) {\n const {\n onSelect,\n onLayerSelect,\n onClick,\n onLayerClick,\n onMouseOut,\n onMouseOver,\n } = options;\n const onLayerClickFromOpt = onClick || onLayerClick;\n options.onClick = (e) => {\n if (onLayerClickFromOpt) {\n onLayerClickFromOpt(e);\n }\n return this._onLayerClick(e);\n };\n\n options.onMouseOut = (e) => {\n const id = e.layer.id;\n onMouseOut && onMouseOut(e);\n if (defined(id)) {\n this._emitLayerEvent(`layer:mouseout`, id, e);\n }\n };\n\n options.onMouseOver = (e) => {\n const id = e.layer.id;\n onMouseOver && onMouseOver(e);\n if (defined(id)) {\n this._emitLayerEvent(`layer:mouseover`, id, e);\n }\n };\n\n // TODO: remove backward compatibility for onLayerSelect\n const onLayerSelectFromOpt = onSelect || onLayerSelect;\n options.onSelect = (e) => {\n if (onLayerSelectFromOpt) {\n onLayerSelectFromOpt(e);\n }\n return this._onLayerSelect(e);\n };\n\n if (!options.nativePaint) {\n if (this.options.paint) {\n options.paint = preparePaint({\n paint: options.paint || {},\n defaultPaint: this.options.paint,\n getPaintFunctions: this.getPaintFunctions,\n });\n }\n if (options.selectedPaint && this.options.selectedPaint) {\n options.selectedPaint = preparePaint({\n paint: options.selectedPaint,\n defaultPaint: this.options.selectedPaint,\n getPaintFunctions: this.getPaintFunctions,\n });\n }\n }\n }\n}\n","import type {\n ToggleControlOptions,\n ToggleControl,\n ButtonControlOptions,\n} from '../../interfaces/MapControl';\n\n/**\n * The toggle is a button with status.\n * @internal\n */\nexport function createToggleControl<C = any>(\n createButtonControl: (options: ButtonControlOptions) => C,\n options: ToggleControlOptions,\n): C & ToggleControl {\n const link = document.createElement('div');\n\n let status = false;\n if (options.getStatus) {\n status = options.getStatus();\n } else if (options.status) {\n status = options.status;\n }\n\n const title = options.title || '';\n const html = options.html;\n\n function setTitle() {\n if (title) {\n if (typeof title === 'string') {\n link.title = title;\n } else {\n link.title = status ? title.on : title.off;\n }\n link.setAttribute('aria-label', link.title);\n }\n }\n setTitle();\n\n // DomEvent.disableClickPropagation(link);\n // DomEvent.on(link, 'click', DomEvent.stop);\n\n function _setHtml(htmlDef: string | HTMLElement) {\n if (htmlDef instanceof HTMLElement) {\n link.innerHTML = '';\n link.appendChild(htmlDef);\n } else if (typeof htmlDef === 'string') {\n link.innerHTML = htmlDef;\n }\n }\n function setHtml() {\n if (html) {\n if (typeof html === 'string' || html instanceof HTMLElement) {\n _setHtml(html);\n } else {\n _setHtml(status ? html.on : html.off);\n }\n link.setAttribute('aria-label', link.title);\n }\n }\n setHtml();\n\n function _setClass(addClass: string, impact: boolean) {\n addClass.split(' ').forEach((x) => {\n if (impact) {\n link.classList.add(x);\n } else {\n link.classList.remove(x);\n }\n });\n }\n\n function setClass() {\n if (options.addClassOn) {\n _setClass(options.addClassOn, status);\n }\n if (options.addClassOff) {\n _setClass(options.addClassOff, !status);\n }\n }\n\n if (options.addClass) {\n _setClass(options.addClass, true);\n }\n setClass();\n\n const changeStatus = (status_?: boolean) => {\n if (status_ !== undefined) {\n status = status_;\n }\n setHtml();\n setTitle();\n setClass();\n };\n\n const onClick = (status_?: boolean) => {\n status = status_ !== undefined ? status_ : !status;\n if (options.onClick) {\n const afterClick = options.onClick(status);\n Promise.resolve(afterClick)\n .then(() => changeStatus())\n .catch(() => (status = !status));\n } else {\n changeStatus();\n }\n };\n\n const buttonControl = createButtonControl({\n html: link,\n onClick,\n }) as C & ToggleControl;\n buttonControl.onClick = onClick;\n buttonControl.changeStatus = changeStatus;\n return buttonControl;\n}\n","import { WebMapLayers } from './WebMapLayers';\nimport { createToggleControl } from './components/controls/createToggleControl';\n\nimport type { WebMapMain } from './WebMapMain';\nimport type { MapOptions } from './interfaces/MapOptions';\nimport type { WebMapEvents } from './interfaces/Events';\nimport type {\n MapControl,\n CreateControlOptions,\n ButtonControlOptions,\n ToggleControlOptions,\n ToggleControl,\n MapControls,\n} from './interfaces/MapControl';\nimport type { ControlPosition } from './interfaces/MapAdapter';\n\n/**\n * Collection of methods for managing map controls\n */\nexport class WebMapControls<\n M = any,\n L = any,\n C extends object = any,\n E extends WebMapEvents = WebMapEvents,\n O extends MapOptions = MapOptions,\n >\n extends WebMapLayers<M, L, E, O>\n implements WebMapLayers, WebMapMain\n{\n static controls: {\n [name: string]: (webMap: WebMapControls, options?: any) => any;\n } = {\n CONTROL: (\n webMap: WebMapControls,\n options: {\n control: MapControl;\n options?: CreateControlOptions;\n },\n ) => {\n return webMap.createControl(options.control, options.options);\n },\n BUTTON: (webMap: WebMapControls, options: ButtonControlOptions) => {\n return webMap.createButtonControl(options);\n },\n TOGGLE: (webMap: WebMapControls, options: ToggleControlOptions) => {\n return webMap.createToggleControl(options);\n },\n };\n\n private _loadControlQueue: {\n [key in ControlPosition]: (() => Promise<any>)[];\n } = {\n 'top-right': [],\n 'bottom-right': [],\n 'top-left': [],\n 'bottom-left': [],\n };\n private _isControlLoading: { [key in ControlPosition]: boolean } = {\n 'top-right': false,\n 'bottom-right': false,\n 'top-left': false,\n 'bottom-left': false,\n };\n\n async addControl<K extends keyof MapControls>(\n controlDef: K | C,\n position: ControlPosition,\n options?: MapControls[K],\n ): Promise<any> {\n let control: C | undefined;\n position = position ?? 'top-left';\n if (typeof controlDef === 'string') {\n control = this.getControl(controlDef, options);\n } else {\n control = controlDef as C;\n }\n if (control) {\n return new Promise<() => Promise<any>>((resolve) => {\n const promise = async () => {\n const _control = await control;\n const c = this.mapAdapter.addControl(_control, position);\n resolve(c);\n };\n this._setControlQueue(position, promise);\n });\n }\n }\n\n /**\n * Creating a universal map layout control element. Can be used with any map adapter.\n *\n * @example\n * ```javascript\n * const control = webMap.createControl({\n * onAdd() {\n * return document.createElement('div');\n * }\n * });\n * ```\n */\n async createControl(\n control: MapControl,\n options?: CreateControlOptions,\n ): Promise<C | undefined> {\n await this.onLoad('build-map');\n if (this.mapAdapter.createControl) {\n return this.mapAdapter.createControl(control, options);\n }\n }\n\n async createButtonControl(\n options: ButtonControlOptions,\n ): Promise<C | undefined> {\n await this.onLoad('build-map');\n if (this.mapAdapter.createButtonControl) {\n return this.mapAdapter.createButtonControl(options);\n }\n }\n\n /**\n * Create any toggler control button\n * @param options - Options for control layout customization and assigning a callback function\n *\n * @example\n * ```javascript\n * const toggleControl = ngwMap.createToggleControl({\n * getStatus: () => webMap.isLayerVisible('any-layer-id'),\n * onClick: (status) => ngwMap.toggleLayer('webmap', status),\n * html: {\n * on: 'ON',\n * off: 'OFF'\n * },\n * title: 'Toggle layer visibility'\n * });\n * webMap.addControl(toggleControl, 'top-right');\n * ```\n * {@link http://code.nextgis.com/demo-examples-toggle-control | Toggle button control example}\n */\n async createToggleControl(\n options: ToggleControlOptions,\n ): Promise<(C & ToggleControl) | undefined> {\n await this.onLoad('build-map');\n if (this.mapAdapter.createToggleControl) {\n return this.mapAdapter.createToggleControl(options);\n } else {\n if (this.mapAdapter.createButtonControl) {\n return createToggleControl<C>(\n this.mapAdapter.createButtonControl,\n options,\n );\n }\n }\n }\n\n /**\n *\n * @param control - Instance of WEB-GIS framework control.\n * What is returned by the {@link createControl | create} method\n */\n removeControl(control: C): void {\n if ('remove' in control) {\n // @ts-ignore TODO: ugly code, rewrite\n control.remove();\n } else if (this.mapAdapter.removeControl) {\n Promise.resolve(control).then((c) => {\n this.mapAdapter.removeControl(c);\n });\n }\n }\n\n /**\n * Get instance of registered control\n * @param control - Any registered control string name\n * @param options - Custom control options\n */\n getControl<K extends keyof MapControls>(\n control: K,\n options?: MapControls[K],\n ): C | undefined {\n const engine = this.mapAdapter.controlAdapters[control];\n if (engine) {\n return new engine(options);\n } else {\n const createFun = WebMapControls.controls[control];\n if (createFun) {\n return createFun(this, options);\n }\n }\n }\n\n getControlContainer(): HTMLElement | undefined {\n if (this.mapAdapter.getControlContainer) {\n return this.mapAdapter.getControlContainer();\n }\n }\n\n private _setControlQueue(position: ControlPosition, cb: () => Promise<any>) {\n this._loadControlQueue[position].push(cb);\n if (!this._isControlLoading[position]) {\n this._applyControls(position);\n }\n }\n\n private async _applyControls(position: ControlPosition) {\n if (this._loadControlQueue[position].length) {\n this._isControlLoading[position] = true;\n const controlCb = this._loadControlQueue[position][0];\n await controlCb();\n this._loadControlQueue[position].splice(0, 1);\n this._applyControls(position);\n } else {\n this._isControlLoading[position] = false;\n }\n }\n}\n","import type { WebMap } from './WebMap';\n\nconst WEB_MAP_CONTAINER: Record<number, any> = {};\n\nexport function getWebMap<T extends WebMap = WebMap>(id: number): T {\n return WEB_MAP_CONTAINER[id];\n}\n\nexport function setWebMap(id: number, webMap: WebMap) {\n WEB_MAP_CONTAINER[id] = webMap;\n}\n","/**\n * @privateRemarks\n * Since it was not possible to split the code through mixins, inheritance was used.\n * The `ts-mixin` plugin worked fine, but led to errors in IE.\n *\n * Now inheritance is as follow:\n * BaseWebMap \\> WebMapLayers \\> WebMap\n *\n * Will need to be done this way:\n * ```javascript\n * class WebMap extend mixin(WebMapLayers, WebMapControls) {}\n * ```\n *\n * This approach can also be considered\n * ```javascript\n * class WebMap {\n * layers: WebMapLayers;\n * controls WebMapControls\n * }\n * ```\n * and then\n *\n * const webMap = new WebMap(...);\n * webMap.layers.addLayer(...)\n *\n * looks good, but will add difficulty in inheriting from WebMap\n *\n * old:\n * ```javascript\n * class NgwMap extends WebMap {\n * addLayer(...) {\n * super.addLayer(...)\n * }\n * }\n * ```\n * new:\n * ```javascript\n * class NgwLayers extends WebMapLayers {\n * addLayer(...) {\n * super.addLayer(...)\n * }\n * }\n *\n * class NgwMap extends WebMap {\n * layersClass = NgwLayers\n * }\n * ```\n * ...and there will be compatibility issues\n */\n\nimport { WebMapMain } from './WebMapMain';\nimport { WebMapControls } from './WebMapControls';\n\nimport type { MapOptions } from './interfaces/MapOptions';\nimport type { ControlOptions } from './interfaces/MapControl';\nimport type { WebMapEvents } from './interfaces/Events';\nimport type { WebMapLayers } from './WebMapLayers';\nimport { getWebMap, setWebMap } from './container';\n\n/**\n * The core component for managing map adapters.\n * It contains methods for adding and manipulation with\n * {@link WebMapMain | map}, {@link WebMapLayers | layers} and {@link WebMapControls | controls}.\n *\n * @example\n * ```javascript\n * import { WebMap } from '@nextgis/webmap';\n * import MapAdapter from '@nextgis/ol-map-adapter';\n *\n * const webMap = new WebMap({\n * mapAdapter: new MapAdapter(),\n * target: 'map',\n * });\n * ```\n *\n * @typeParam M - Interactive Map used in the adapter\n * @typeParam L - Layer\n * @typeParam C - Control\n * @typeParam E - Events\n *\n */\nexport class WebMap<\n M = any,\n L = any,\n C extends object = any,\n E extends WebMapEvents = WebMapEvents,\n O extends MapOptions = MapOptions,\n >\n extends WebMapControls<M, L, C, E, O>\n implements WebMapControls, WebMapLayers, WebMapMain\n{\n constructor(mapOptions: O) {\n super(mapOptions);\n this._addControls();\n setWebMap(this.id, this);\n }\n\n static get<T extends WebMap = WebMap>(id: number): T {\n return getWebMap<T>(id);\n }\n\n /**\n * @internal\n */\n protected async _addLayerProviders(): Promise<void> {\n for await (const kit of this._starterKits) {\n if (kit.getLayerAdapters) {\n const adapters = await kit.getLayerAdapters.call(kit);\n if (adapters) {\n for await (const adapter of adapters) {\n const newAdapter = await adapter.createAdapter(this);\n if (newAdapter) {\n this.mapAdapter.layerAdapters[adapter.name] = newAdapter;\n }\n }\n }\n }\n }\n }\n\n /**\n * @internal\n */\n protected async _onLoadSync(): Promise<void> {\n for await (const kit of this._starterKits) {\n if (kit.onLoadSync) {\n try {\n await kit.onLoadSync.call(kit, this);\n } catch (er) {\n console.error(er);\n }\n }\n }\n }\n\n private _addControls(): void {\n if (this.options.controls) {\n this.options.controls.forEach((x) => {\n let controlAdapterName = x;\n let controlOptions: ControlOptions = {};\n if (typeof x === 'string' && this.options.controlsOptions) {\n if (this.options.controlsOptions[x]) {\n controlOptions = this.options.controlsOptions[x];\n if (controlOptions.control !== undefined) {\n controlAdapterName = controlOptions.control;\n }\n }\n }\n const { position, ...options } = controlOptions;\n this.addControl(controlAdapterName, position || 'top-left', options);\n });\n }\n this._emitStatusEvent('controls:create');\n }\n}\n","export function getDefaultControls(): string[] {\n return ['ZOOM', 'ATTRIBUTION'];\n}\n","/**\n * The library that allows to use a single interface for managing various interactive map frameworks.\n *\n * @remarks\n * The following adapters are available:\n * {@link https://github.com/nextgis/nextgis_frontend/tree/master/packages/leaflet-map-adapter | @nextgis/leaflet-map-adapter},\n * {@link https://github.com/nextgis/nextgis_frontend/tree/master/packages/ol-map-adapter | @nextgis/ol-map-adapter},\n * {@link https://github.com/nextgis/nextgis_frontend/tree/master/packages/mapboxgl-map-adapter | @nextgis/mapbox-map-adapter}\n * and experimental {@link https://github.com/nextgis/nextgis_frontend/tree/master/packages/cesium-map-adapter | @nextgis/cesium-map-adapter}.\n *\n * @example\n * ```javascript\n * import { WebMap } from \"@nextgis/webmap\";\n *\n * import \"./leaflet-style-override.css\";\n * import MapAdapter from \"@nextgis/leaflet-map-adapter\";\n * // OR\n * // import 'ol/ol.css';\n * // import MapAdapter from '@nextgis/ol-map-adapter';\n * // OR\n * // import 'maplibre-gl/dist/maplibre-gl.css';\n * // import MapAdapter from '@nextgis/mapboxgl-map-adapter';\n *\n * const webMap = new WebMap({\n * mapAdapter: new MapAdapter(),\n * target: 'map',\n * });\n *\n * console.log(!!webMap.mapAdapter.map); // false\n * webMap.onLoad().then(() => {\n * console.log(webMap.mapAdapter.map); // true\n *\n * webMap.addLayer('GEOJSON').then((layer) => {\n * webMap.setLayerData(layer, geojson)\n * });\n * });\n * ```\n *\n * @packageDocumentation\n * @module webmap\n */\nimport { WebMap } from './WebMap';\nimport type { MapOptions } from './interfaces/MapOptions';\n\nexport { createToggleControl } from './components/controls/createToggleControl';\n\nexport {\n detectGeometryType,\n findMostFrequentGeomType,\n} from './utils/geometryTypes';\nexport { getDefaultControls } from './utils/getDefaultControls';\nexport { updateGeoJsonAdapterOptions } from './utils/updateGeoJsonAdapterOptions';\n\nexport { getWebMap } from './container';\n\nexport * from './WebMapLayers';\nexport * from './WebMapControls';\nexport * from './WebMapMain';\n\nexport * from './interfaces/Events';\nexport * from './interfaces/BaseTypes';\nexport * from './interfaces/MapOptions';\nexport * from './interfaces/MapAdapter';\nexport * from './interfaces/MapControl';\nexport * from './interfaces/StarterKit';\nexport * from './interfaces/LayerAdapter';\nexport * from './interfaces/RuntimeParams';\n\nexport { WebMap };\n\nexport async function createWebMap(options: MapOptions): Promise<WebMap> {\n const webMap = new WebMap(options);\n return webMap.onLoad();\n}\n","import { objectDeepEqual, objectRemoveEmpty, full } from '@nextgis/utils';\n\ntype CacheValue<T> = T;\ntype CacheMatchProps<T> = Record<keyof T, T[keyof T]>;\n\ninterface CacheItem<T = any, O = any> {\n key: string;\n value: CacheValue<T>;\n props?: CacheMatchProps<O>;\n /** @deprecated use {@link CacheItem.props} instead */\n options?: CacheMatchProps<O>;\n}\n\nexport interface CacheOptions {\n /**\n * Cache Scope Separator\n * @defaultValue 'default'\n */\n namespace?: string;\n}\n\n/**\n * @example\n * ```javascript\n * const cache1 = new Cache();\n * cache1.add('foo', 'value');\n *\n * const cache2 = new Cache();\n * cache2.match('foo'); // value\n *\n * const cache3 = new Cache({ namespace: 'foo' });\n * cache3.match('foo'); // undefined\n * ```\n *\n * @example\n * ```javascript\n * let COUNTER = 0;\n * const createPromise = () => new Promise((res) => {\n * COUNTER++\n * setTimeout(() => res('Ok'), 300)\n * });\n *\n * const cache = new Cache();\n * for (let i = 0; i < 10; i++) {\n * cache.add('foo', createPromise).then((data) => {\n * console.log(data); // 'Ok'\n * });\n * }\n * console.log(COUNTER); // 1\n * ```\n */\nexport class Cache<\n V = any,\n O extends Record<string, unknown> = Record<string, unknown>,\n> {\n private static instance: Record<\n string,\n Cache<unknown, Record<string, unknown>>\n > = {};\n private readonly cache: CacheItem<V, O>[] = [];\n\n constructor(options: CacheOptions = {}) {\n const namespace = options.namespace ?? 'default';\n if (Cache.instance[namespace]) {\n return Cache.instance[namespace] as Cache<V, O>;\n }\n Cache.instance[namespace] = this;\n return this;\n }\n\n clean(): void {\n this.cache.length = 0;\n }\n\n all(): CacheItem<V, O>[] {\n return this.cache;\n }\n\n /**\n * Caching only a non-empty value.\n *\n * Useful for get or create strategy\n * @example\n * ```javascript\n * const cache = new Cache();\n * const getItemFunc = () => fetch(url).then((data) => {\n * return data.json(); // undefined\n * });\n * const item = await cache.addFull('foo', getItemFunc);\n * if (!item) {\n * await createItem(); // 'New item'\n * }\n *\n * // somewhere else in the code\n * const item = await cache.addFull('foo', getItemFunc).then((resp) => {\n * console.log(resp); // 'New item'\n * })\n *\n * ```\n */\n addFull(\n key: string,\n valueToSet: CacheValue<V> | (() => CacheValue<V>),\n props?: CacheMatchProps<O>,\n ): CacheValue<V> {\n return this.add(key, valueToSet, props, true);\n }\n\n add(\n key: string,\n valueToSet: CacheValue<V> | (() => CacheValue<V>),\n props?: CacheMatchProps<O>,\n onlyFull?: boolean,\n ): CacheValue<V> {\n const exist = this._find(key, props);\n if (!exist) {\n let value: CacheValue<V>;\n if (valueToSet instanceof Function) {\n value = valueToSet();\n } else {\n value = valueToSet;\n }\n const props_ =\n props && JSON.parse(JSON.stringify(objectRemoveEmpty(props)));\n\n const cacheItem: CacheItem<V, O> = {\n key,\n value,\n props: props_,\n // TODO: remove backward compatibility use only props\n options: props_,\n };\n if (onlyFull && !full(value)) {\n return value;\n }\n this.cache.push(cacheItem);\n if (value instanceof Promise) {\n value.catch((er) => {\n this.delete(key, props);\n throw er;\n });\n if (onlyFull) {\n value.then((x) => {\n if (!full(x)) {\n this.delete(key, props);\n }\n return x;\n });\n }\n return value;\n }\n return value;\n } else {\n return exist.value;\n }\n }\n\n match(key: string, props?: CacheMatchProps<O>): CacheValue<V> | undefined {\n const cacheRecord = this._find(key, props);\n\n if (cacheRecord) {\n return cacheRecord.value;\n }\n }\n\n matchAll(key?: string, props?: CacheMatchProps<O>): CacheValue<V>[] {\n if (key) {\n return this.cache\n .filter((x) => this._filter(x, key, props))\n .map((x) => x.value);\n }\n return this.cache.map((x) => x.value);\n }\n\n delete(item: CacheItem): void;\n delete(key: string, props?: CacheMatchProps<O>): void;\n delete(keyOrItem: string | CacheItem, props?: CacheMatchProps<O>): void {\n let exist: CacheItem[] = [];\n if (typeof keyOrItem === 'string') {\n exist = this.cache.filter((x) => this._filter(x, keyOrItem, props));\n } else {\n exist.push(keyOrItem);\n }\n for (const e of exist) {\n const index = this.cache.indexOf(e);\n this.cache.splice(index, 1);\n }\n }\n\n private _find(\n key: string,\n props?: CacheMatchProps<O>,\n ): CacheItem<V> | undefined {\n return this.cache.find((x) => this._filter(x, key, props));\n }\n\n private _filter(\n item: CacheItem,\n key: string,\n props?: CacheMatchProps<O>,\n ): boolean {\n if (item.key === key) {\n if (props) {\n // TODO: remove backward compatibility\n const itemProps = item.props || item.options;\n return objectDeepEqual(itemProps || {}, objectRemoveEmpty(props));\n }\n return true;\n }\n return false;\n }\n}\n","/**\n * Caching for asynchronous functions\n *\n * @packageDocumentation\n * @module cache\n */\nimport { Cache } from './Cache';\n\nexport default Cache;\n","/**\n * Thrown when...\n */\nexport class NetworkError extends Error {\n name = 'NetworkError';\n\n constructor(url: string) {\n super();\n Object.setPrototypeOf(this, NetworkError.prototype);\n this.message = `Unable to request ${url}.\n Possibly invalid NGW URL entered or CORS not configured to get request from ${location.origin}`; // /control-panel/cors\n }\n}\n","import { NgwExceptions } from '../interfaces';\n\n/**\n * Thrown when...\n */\nexport class NgwError extends Error {\n name = 'NgwError';\n\n title!: string;\n message!: string;\n detail!: string;\n exception!: NgwExceptions;\n status_code!: number | 404 | 500;\n data?: Record<string, any>;\n guru_meditation!: string;\n\n constructor(er?: Partial<NgwError>) {\n super();\n Object.assign(this, er);\n Object.setPrototypeOf(this, NgwError.prototype);\n }\n}\n","export function isObject(val: unknown): val is Record<string | number, any> {\n return Object.prototype.toString.call(val) === '[object Object]';\n}\n","import {\n RequestOptions as NgwRequestOptions,\n RequestMethods,\n} from '../interfaces';\nimport { NetworkError } from '../errors/NetworkError';\nimport { NgwError } from '../errors/NgwError';\nimport { isError } from '../errors/isError';\nimport { isObject } from './isObject';\n\n// readyState\n// Holds the status of the XMLHttpRequest.\n// 0: request not initialized\n// 1: server connection established\n// 2: request received\n// 3: processing request\n// 4: request finished and response is ready\n\n// status\n// 200: \"OK\"\n// 201 \"Created\"\tThe request has been fulfilled, and a new resource is created\n// 403: \"Forbidden\"\n// 404: \"Page not found\"\n// 500: \"Internal Server Error\"\n// For a complete list go to the Http Messages Reference\n\ntype LoadData = (\n url: string,\n callback: (...args: any[]) => any,\n options: NgwRequestOptions<RequestMethods> | undefined,\n error: (reason?: any) => void,\n onCancel: (cancelHandler: () => void) => void,\n) => void;\n\nlet loadData: LoadData;\n// @ts-ignore\nif (__BROWSER__) {\n loadData = (\n url: string,\n callback: (...args: any[]) => any,\n options: NgwRequestOptions = {},\n error: (reason?: any) => void,\n onCancel: (cancelHandler: () => void) => void,\n ): void => {\n options.method = options.method || 'GET';\n\n const xhr = new XMLHttpRequest();\n xhr.open(options.method || 'GET', url, true); // true for asynchronous\n\n if (options.responseType === 'blob') {\n xhr.responseType = options.responseType;\n }\n const getResponseText = () => {\n try {\n return JSON.parse(xhr.responseText);\n } catch (er) {\n return xhr.responseText;\n }\n };\n const processingResponse = (forError = false) => {\n const cb = forError ? error : callback;\n if (options.responseType === 'blob') {\n cb(xhr.response);\n } else {\n if (xhr.responseText) {\n cb(getResponseText());\n } else {\n error({ message: '' });\n }\n }\n };\n xhr.onload = () => {\n if ([401, 403, 404, 422, 500].indexOf(xhr.status) !== -1) {\n error(new NgwError(getResponseText()));\n }\n processingResponse();\n };\n\n // xhr.onreadystatechange = () => {\n // if (\n // (xhr.readyState === 4 && xhr.status === 200) ||\n // (xhr.readyState === 3 && xhr.status === 201)\n // ) {\n // processingResponse();\n // } else if (xhr.readyState === 3 && xhr.status === 400) {\n // processingResponse();\n // } else if (xhr.readyState === 4 && xhr.status === 500) {\n // processingResponse();\n // } else if (xhr.readyState === 4 && xhr.status === 401) {\n // error(xhr.statusText);\n // } else if (xhr.readyState === 4) {\n // error('request error');\n // }\n // };\n\n xhr.onerror = (er) => {\n if (xhr.status === 0) {\n error(new NetworkError(url));\n } else {\n error(er);\n }\n };\n\n xhr.upload.onprogress = function (e) {\n if (e.lengthComputable) {\n const percentComplete = (e.loaded / e.total) * 100;\n if (options.onProgress) {\n options.onProgress(percentComplete, e);\n }\n // console.log(percentComplete + '% uploaded');\n }\n };\n\n const headers = options.headers;\n if (headers) {\n for (const h in headers) {\n const header = headers[h];\n if (typeof header === 'string') {\n xhr.setRequestHeader(h, header);\n }\n }\n }\n if (options.withCredentials !== undefined) {\n xhr.withCredentials = options.withCredentials;\n }\n\n let data: FormData | any;\n if (options.file) {\n data = new FormData();\n data.append('file', options.file);\n if (options.data) {\n for (const d in options.data) {\n data.append(d, data[d]);\n }\n }\n } else {\n data = options.data\n ? typeof options.data === 'string'\n ? options.data\n : JSON.stringify(options.data)\n : null;\n }\n if (onCancel) {\n onCancel(() => {\n xhr.abort();\n });\n }\n xhr.send(data);\n };\n} else {\n const url = require('url');\n const http = require('http');\n const https = require('https');\n const FormData = require('form-data');\n\n const adapterFor = (inputUrl: string) => {\n const adapters: Record<string, any> = {\n 'http:': http,\n 'https:': https,\n };\n const protocol = url.parse(inputUrl).protocol || 'https:';\n return adapters[protocol];\n };\n\n loadData = (\n url: string,\n callback: (...args: any[]) => any,\n options: NgwRequestOptions<RequestMethods> = {},\n error: (reason?: any) => void,\n onCancel: (cancelHandler: () => void) => void,\n ): Promise<unknown> => {\n const { file, headers, method, data, responseType } = options;\n\n const request = new Promise((resolve, reject) => {\n const adapter = adapterFor(url);\n if (adapter) {\n const requestOpt = {\n headers: headers || {},\n method,\n };\n const body = typeof data === 'string' ? data : JSON.stringify(data);\n // https://stackoverflow.com/questions/35589109/node-http-delete-request-no-longer-works-after-upgrading-from-0-10-40\n let form;\n let uploadedFile = file;\n if (file) {\n const fileMeta = {};\n if (\n isObject(file) &&\n 'file' in file &&\n ('filename' in file || 'name' in file)\n ) {\n const {\n file: file_,\n name,\n ...fileMeta_\n } = file as Record<string, any>;\n if (name && !fileMeta_.filename) {\n fileMeta_.filename = name;\n }\n Object.assign(fileMeta, fileMeta_);\n uploadedFile = file_ as File;\n }\n form = new FormData();\n form.append('file', uploadedFile, fileMeta);\n if (data) {\n for (const d in data) {\n form.append(d, data[d]);\n }\n }\n Object.assign(requestOpt.headers, {\n // 'content-length': form.getLengthSync(),\n ...form.getHeaders(),\n });\n }\n\n if (body !== undefined) {\n Object.assign(requestOpt.headers, {\n 'content-type': 'application/json',\n 'content-length': Buffer.byteLength(body),\n });\n }\n const req = adapter.request(url, requestOpt, (resp: any) => {\n let data = '';\n resp.on('data', (chunk: any) => {\n data += chunk;\n });\n resp.on('end', () => {\n if (data) {\n if (responseType === 'blob') {\n resolve(data);\n } else {\n let json: Record<string, any> | undefined;\n try {\n json = JSON.parse(data);\n if (json && json.status_code && json.status_code) {\n reject(json.message);\n }\n } catch (er) {\n reject(er);\n }\n if (json !== undefined) {\n if (isError(json)) {\n reject('extractError(json)');\n } else {\n resolve(json);\n }\n }\n }\n }\n reject('no data');\n });\n });\n if (form) {\n form.pipe(req);\n }\n req.on('error', (err: any) => {\n reject(err);\n });\n if (body) {\n req.write(body);\n }\n onCancel(() => {\n req.abort();\n });\n req.end();\n } else {\n throw new Error(`Given URL '${url}' is not correct`);\n }\n });\n return request\n .then((data) => {\n if (callback) {\n callback(data);\n }\n return data;\n })\n .catch((er) => {\n if (error) {\n error(er);\n } else {\n throw new Error(er);\n }\n });\n };\n}\n\nexport { loadData };\n","// https://github.com/Leaflet/Leaflet/blob/b507e21c510b53cd704fb8d3f89bb46ea925c8eb/src/core/Util.js#L165\nconst templateRe = /\\{ *([\\w_-]+) *\\}/g;\n\nexport function template(str: string, data: { [param: string]: any }): string {\n return str.replace(templateRe, (s, key) => {\n let value = data[key];\n\n if (value === undefined) {\n throw new Error('No value provided for letiable ' + s);\n } else if (typeof value === 'function') {\n value = value(data);\n }\n return value;\n });\n}\n","import CancelablePromise from '@nextgis/cancelable-promise';\nimport { template } from './template';\nimport type { NgwConnector } from '../NgwConnector';\nimport type {\n RequestItemKeys,\n RequestItemsParams,\n RequestOptions,\n} from '../interfaces';\nimport type { RequestItemsParamsMap } from '../types/RequestItemsParamsMap';\n\ninterface ApiRequestOptions<K extends keyof RequestItemsParamsMap> {\n name: string;\n connector: NgwConnector;\n params: RequestItemsParams<K>;\n requestOptions: RequestOptions;\n}\n\nexport function apiRequest<\n K extends keyof RequestItemsParamsMap,\n P extends RequestItemKeys = RequestItemKeys,\n>(opt: ApiRequestOptions<K>): CancelablePromise<P[K]> {\n const params = opt.params;\n return new CancelablePromise((resolve, reject) => {\n opt.connector\n .connect()\n .then((apiItems) => {\n let apiItem = apiItems && apiItems[opt.name];\n if (apiItem) {\n apiItem = [...apiItem];\n let url = apiItem.shift();\n if (apiItem.length) {\n const replaceParams: {\n [num: number]: string;\n } = {};\n for (let fry = 0; fry < apiItem.length; fry++) {\n const arg = apiItem[fry];\n replaceParams[fry] = '{' + arg + '}';\n if (params[arg] === undefined) {\n throw new Error(\n '`' + arg + '`' + ' url api argument is not specified',\n );\n }\n }\n if (url) {\n url = template(url, replaceParams);\n }\n }\n // Transfer part of the parameters from `params` to the URL string\n if (params) {\n const paramArray = [];\n const paramList = params.paramList;\n if (Array.isArray(paramList)) {\n delete params.paramList;\n paramList.forEach((x) => {\n paramArray.push(`${x[0]}=${x[1]}`);\n });\n }\n for (const p in params) {\n if (apiItem.indexOf(p) === -1) {\n paramArray.push(`${p}=${params[p]}`);\n }\n }\n if (paramArray.length) {\n url = url + '?' + paramArray.join('&');\n }\n }\n if (url) {\n resolve(opt.connector.makeQuery(url, params, opt.requestOptions));\n } else {\n reject(new Error('request url is not set'));\n }\n } else {\n resolve(undefined);\n }\n })\n .catch((er) => {\n reject(er);\n });\n });\n}\n","import { NgwError } from './NgwError';\nimport { NgwExceptions } from '../interfaces';\n\n/**\n * Thrown when ...\n */\nexport class ResourceNotFoundError extends NgwError {\n name = 'ResourceNotFoundError';\n exception: NgwExceptions = 'nextgisweb.resource.exception.ResourceNotFound';\n\n constructor(obj?: ResourceNotFoundError) {\n super(obj);\n Object.setPrototypeOf(this, ResourceNotFoundError.prototype);\n }\n}\n","import { NgwError } from './NgwError';\nimport { NgwExceptions } from '../interfaces';\n\n/**\n * Thrown when ...\n */\nexport class InsufficientPermissionsError extends NgwError {\n name = 'InsufficientPermissionsError';\n exception: NgwExceptions =\n 'nextgisweb.core.exception.InsufficientPermissions';\n\n constructor(obj: InsufficientPermissionsError) {\n super(obj);\n Object.setPrototypeOf(this, InsufficientPermissionsError.prototype);\n }\n}\n","import { NgwConnectorOptions } from './interfaces';\nimport { NgwConnector } from './NgwConnector';\nimport { objectDeepEqual } from '@nextgis/utils';\n\nexport const CONNECTORS: NgwConnector[] = [];\n\nexport function addConnector(connector: NgwConnector): void {\n CONNECTORS.push(connector);\n}\n\nexport function findConnector(\n options: NgwConnectorOptions,\n): NgwConnector | undefined {\n return CONNECTORS.find((x) => {\n if (x.options.baseUrl === options.baseUrl) {\n if (options.auth) {\n if (x.options.auth) {\n return objectDeepEqual(x.options.auth, options.auth);\n }\n } else {\n // if auth not in find options; use first connector with same url\n return true;\n }\n }\n });\n}\n\nexport function removeConnector(connector: NgwConnector): void {\n const index = CONNECTORS.indexOf(connector);\n if (index !== -1) {\n CONNECTORS.splice(index, 1);\n }\n}\n\nexport function findAndRemoveConnector(options: NgwConnectorOptions): void {\n const exist = findConnector(options);\n if (exist) {\n removeConnector(exist);\n }\n}\n","import { DeepPartial, defined } from '@nextgis/utils';\nimport { Resource } from '../types/ResourceItem';\nimport { isObject } from './isObject';\n\nconst exclude = ['description'];\n\n/**\n * @remarks\n * https://docs.nextgis.ru/docs_ngweb_dev/doc/developer/resource.html#search-resources\n *\n * ```\n * { keyname, owner_user: { id }} > { keyname, owner_user__id }\n * ```\n *\n * @param resource - Any property from NGW resource item\n */\nexport function resourceToQuery(\n resource: DeepPartial<Resource>,\n prefix = '',\n): Record<string, unknown> {\n prefix = prefix ? prefix + '__' : '';\n const query: Record<string, any> = {};\n for (const [key, value] of Object.entries(resource)) {\n if (exclude.indexOf(key) === -1) {\n if (isObject(value)) {\n if (key === 'owner_user') {\n const children = resourceToQuery(value as DeepPartial<Resource>, key);\n Object.assign(query, children);\n } else if (key === 'parent' && 'id' in value) {\n query.parent_id = value.id;\n }\n } else if (defined(value)) {\n query[prefix + key] = value;\n }\n }\n }\n return query;\n}\n","import { objectDeepEqual } from '@nextgis/utils';\nimport type { DeepPartial } from '@nextgis/utils';\nimport type { Resource } from '../types/ResourceItem';\n\nexport function resourceCompare(\n res1: DeepPartial<Resource>,\n res2: DeepPartial<Resource>,\n): boolean {\n return objectDeepEqual(res1, res2);\n}\n","import CancelablePromise from '@nextgis/cancelable-promise';\nimport { defined } from '@nextgis/utils';\nimport Cache from '@nextgis/cache';\n\nimport { resourceToQuery } from './utils/resourceToQuery';\nimport { resourceCompare } from './utils/resourceCompare';\nimport { ResourceNotFoundError } from './errors/ResourceNotFoundError';\n\nimport { isObject } from './utils/isObject';\n\nimport type { DeepPartial } from '@nextgis/utils';\nimport type { NgwConnector } from './NgwConnector';\nimport type { ResourceItem, Resource } from './types/ResourceItem';\nimport type {\n GetChildrenOfOptions,\n ResourceDefinition,\n RequestOptions,\n} from './interfaces';\n\nexport class ResourcesControl {\n cache = new Cache<\n CancelablePromise<ResourceItem | undefined>,\n { id?: number | string }\n >();\n\n constructor(private connector: NgwConnector) {}\n\n // -------------------------------------------------------------------------\n // Resource Methods\n // -------------------------------------------------------------------------\n\n /**\n * Receive resource from NGW by id, keyname or search-object parameter.\n * @param resource - Resource id, keyname or search-object\n *\n * @remarks\n * Fetching resource would be cached to speed up next call\n */\n getOne(\n resource: ResourceDefinition,\n requestOptions?: RequestOptions<'GET'>,\n ): CancelablePromise<ResourceItem | undefined> {\n const cache = new Cache();\n const forCache: { keyname?: string; id?: number } = {};\n const opt = { ...requestOptions, cache: false };\n if (typeof resource === 'string') {\n forCache.keyname = resource;\n } else if (typeof resource === 'number') {\n forCache.id = resource;\n } else if (isObject(resource)) {\n if (resource.id !== undefined) {\n forCache.id = resource.id;\n } else if (resource.keyname) {\n forCache.keyname = resource.keyname;\n }\n }\n const makeRequest = () => {\n if (typeof resource === 'string') {\n return this._fetchResourceBy({ keyname: resource }, opt);\n } else if (typeof resource === 'number') {\n return this._fetchResourceById(resource, opt);\n } else if (isObject(resource)) {\n return this._fetchResourceBy(resource, opt);\n }\n return CancelablePromise.resolve(undefined);\n };\n\n return cache.addFull('resource', makeRequest, forCache);\n }\n\n getOneOrFail(\n resource: ResourceDefinition,\n requestOptions?: RequestOptions<'GET'>,\n ): CancelablePromise<ResourceItem> {\n return this.getOne(resource, requestOptions).then((res) => {\n if (res) {\n return res;\n }\n throw new ResourceNotFoundError();\n });\n }\n\n /**\n * A fast way to retrieve resource ID for any resource definition.\n * @param resource - Any available resource definition\n *\n * @remarks\n * There are situations when exactly the resource id is needed\n * (for example, to compose the correct request to the api)\n * then this method will come in handy to facilitate the extraction of the identifier\n * if the resource is specified through a keyname or other parameters.\n */\n getId(\n resource: ResourceDefinition,\n requestOptions?: RequestOptions<'GET'>,\n ): CancelablePromise<number | undefined> {\n if (typeof resource === 'number') {\n return CancelablePromise.resolve(resource);\n } else if (typeof resource === 'string' || isObject(resource)) {\n return this.getOne(resource, requestOptions).then((res) => {\n if (res) {\n return res.resource.id;\n }\n });\n }\n return CancelablePromise.resolve(undefined);\n }\n\n /**\n * A fast way to retrieve resource ID for any resource definition.\n * @param resource - Any available resource definition\n *\n * @remarks\n * Similar with {@link NgwConnector.getResourceId | getResourceId} but rise error if resource is not exist.\n * To not make one more checks if the resource is definitely exists\n */\n getIdOrFail(\n resource: ResourceDefinition,\n requestOptions?: RequestOptions<'GET'>,\n ): CancelablePromise<number> {\n return this.getId(resource, requestOptions).then((resp) => {\n if (resp === undefined) {\n throw new Error();\n }\n return resp;\n });\n }\n\n getMany(\n resource: DeepPartial<Resource>,\n requestOptions?: RequestOptions<'GET'>,\n ): CancelablePromise<ResourceItem[]> {\n return this._resourceCacheFilter(resource).then((items) => {\n if (!items.length) {\n const query: Record<string, unknown> = {};\n if (resource.keyname) {\n query.keyname = resource.keyname;\n } else {\n Object.assign(query, resourceToQuery(resource));\n }\n return this.connector\n .get('resource.search', requestOptions, {\n serialization: 'full',\n ...query,\n })\n .then((resources) => {\n if (resources) {\n for (const x of resources) {\n this.cache.add('resource.item', CancelablePromise.resolve(x), {\n id: x.resource.id,\n });\n }\n }\n return resources;\n });\n }\n return items;\n });\n }\n\n getParent(\n resource: ResourceDefinition,\n requestOptions?: RequestOptions<'GET'>,\n ): CancelablePromise<ResourceItem | undefined> {\n return this.getOne(resource, requestOptions).then((child) => {\n if (child) {\n return this.getOne(child.resource.parent.id, requestOptions);\n }\n return CancelablePromise.resolve(undefined);\n });\n }\n\n getChildrenOf(\n resource: ResourceDefinition,\n requestOptions?: GetChildrenOfOptions,\n ): CancelablePromise<ResourceItem[]> {\n return this.getIdOrFail(resource).then((parent) =>\n this._getChildrenOf(parent, requestOptions),\n );\n }\n\n update(\n resource: ResourceDefinition,\n data: DeepPartial<ResourceItem>,\n ): CancelablePromise<ResourceItem | undefined> {\n return this.getId(resource).then((id) => {\n if (id !== undefined) {\n return this.connector.put('resource.item', { data }, { id });\n }\n });\n }\n\n /**\n * Fast way to delete resource from NGW and clean cache.\n * @param resource - Resource definition\n */\n delete(resource: ResourceDefinition): CancelablePromise<void> {\n return this.getId(resource).then((id) => {\n if (id !== undefined) {\n return this.connector.delete('resource.item', null, { id }).then(() => {\n this._cleanResourceItemCache(id);\n return undefined;\n });\n }\n });\n }\n\n private _getChildrenOf(\n parent: ResourceDefinition,\n requestOptions?: GetChildrenOfOptions,\n _items: ResourceItem[] = [],\n ): CancelablePromise<ResourceItem[]> {\n return this.connector\n .get(\n 'resource.collection',\n { cache: true, ...requestOptions },\n {\n parent,\n },\n )\n .then((items) => {\n const recursivePromises = [];\n for (const item of items) {\n this.cache.add('resource.item', CancelablePromise.resolve(item), {\n id: item.resource.id,\n });\n _items.push(item);\n if (requestOptions?.recursive && item.resource.children) {\n recursivePromises.push(\n this._getChildrenOf(item.resource.id, requestOptions, _items),\n );\n }\n }\n if (recursivePromises.length) {\n return CancelablePromise.all(recursivePromises).then(() => {\n return _items;\n });\n }\n return _items;\n });\n }\n\n private async _cleanResourceItemCache(id: number) {\n const all = this.cache.all();\n const toDelete: typeof all = [];\n for (const c of all) {\n const cid = c.options && c.options.id;\n if (['resource.item', 'resource'].includes(c.key) && cid !== undefined) {\n if (typeof cid === 'number') {\n if (cid === id) {\n toDelete.push(c);\n }\n } else {\n const rid = await this.getId(cid);\n if (rid === id) {\n toDelete.push(c);\n }\n }\n }\n }\n for (const d of toDelete) {\n this.cache.delete(d);\n }\n }\n\n private _fetchResourceById(\n id: number,\n requestOptions?: RequestOptions<'GET'>,\n ): CancelablePromise<ResourceItem | undefined> {\n const promise = () =>\n this.connector.get('resource.item', requestOptions, { id });\n\n return this.cache\n .add('resource.item', promise, {\n id,\n })\n .catch((er) => {\n if (!(er instanceof ResourceNotFoundError)) {\n throw er;\n }\n return undefined;\n });\n }\n\n private _fetchResourceBy(\n resource: DeepPartial<Resource>,\n requestOptions?: RequestOptions<'GET'>,\n ): CancelablePromise<ResourceItem | undefined> {\n return this.getMany(resource, requestOptions).then((resources) => {\n return resources[0];\n });\n }\n\n private _resourceCacheFilter(\n resource: DeepPartial<Resource>,\n ): CancelablePromise<ResourceItem[]> {\n return CancelablePromise.all(this.cache.matchAll('resource.item')).then(\n (resources) => {\n const items: ResourceItem[] = [];\n resources.filter((x) => {\n if (x) {\n // identical by uniq props\n if (resource.keyname && x.resource.keyname) {\n return resource.keyname === x.resource.keyname;\n }\n if (defined(resource.id) && defined(x.resource.id)) {\n return resource.id === x.resource.id;\n }\n return resourceCompare(resource, x.resource);\n }\n });\n return items;\n },\n );\n }\n}\n","import { EventEmitter } from 'events';\nimport CancelablePromise from '@nextgis/cancelable-promise';\nimport { objectRemoveEmpty } from '@nextgis/utils';\nimport { fixUrlStr } from '@nextgis/utils';\nimport Cache from '@nextgis/cache';\n\nimport { loadData } from './utils/loadData';\nimport { template } from './utils/template';\nimport { NgwError } from './errors/NgwError';\nimport { apiRequest } from './utils/apiRequest';\nimport { ResourceNotFoundError } from './errors/ResourceNotFoundError';\nimport { InsufficientPermissionsError } from './errors/InsufficientPermissionsError';\nimport {\n addConnector,\n findConnector,\n removeConnector,\n} from './activeConnectors';\nimport { ResourcesControl } from './ResourcesControl';\n\nimport type { DeepPartial } from '@nextgis/utils';\nimport type {\n DeleteRequestItemsResponseMap,\n PatchRequestItemsResponseMap,\n PostRequestItemsResponseMap,\n GetRequestItemsResponseMap,\n PutRequestItemsResponseMap,\n RequestTransformFunction,\n GetChildrenOfOptions,\n ResourceIdKeynameDef,\n NgwConnectorOptions,\n ResourceDefinition,\n RequestItemsParams,\n RequestItemKeys,\n RequestHeaders,\n RequestOptions,\n PyramidRoute,\n Credentials,\n UserInfo,\n Params,\n} from './interfaces';\nimport type { RequestItemsParamsMap } from './types/RequestItemsParamsMap';\nimport type { ResourceItem, Resource } from './types/ResourceItem';\n\nlet ID = 0;\n\nexport class NgwConnector {\n static errors = {\n NgwError,\n ResourceNotFoundError,\n };\n id = ID++;\n\n emitter = new EventEmitter();\n user?: UserInfo;\n\n resources!: ResourcesControl;\n\n private routeStr = '/api/component/pyramid/route';\n private activeRequests: CancelablePromise[] = [];\n private requestTransform?: RequestTransformFunction | null;\n\n constructor(public options: NgwConnectorOptions) {\n const exist = findConnector(options);\n if (exist) {\n return exist;\n } else {\n if (this.options.route) {\n this.routeStr = this.options.route;\n }\n if (this.options.requestTransform) {\n this.requestTransform = this.options.requestTransform;\n }\n this.resources = new ResourcesControl(this);\n addConnector(this);\n }\n }\n\n static create(options: NgwConnectorOptions): NgwConnector {\n return new this(options);\n }\n\n setRequestTransform(\n requestTransform: RequestTransformFunction | undefined | null,\n ) {\n this.requestTransform = requestTransform;\n }\n\n /**\n * Fast way to specify the connection address to NextGIS Web.\n * The current connection will be severed.\n * @param baseUrl - NGW url\n */\n setNgw(baseUrl: string): void {\n this.logout();\n this.options.baseUrl = baseUrl;\n addConnector(this);\n }\n\n /**\n * Establishing a connection with NextGIS Web to fulfill all other requests.\n * @remarks\n * This method need not be called manually as it is used when forming a request in {@link apiRequest | apiRequest}.\n * Can be used to check connection.\n * @example\n * ```javascript\n * const connector = new NgwConnector({baseUrl: 'https://demo.nextgis.com'});\n * connector.connect()\n * .then(() => console.log('Ok'))\n * .catch((er) => console.log('Connection problem', er));\n * ```\n */\n connect(): CancelablePromise<PyramidRoute> {\n const cache = new Cache();\n const auth = this.options.auth;\n const makeConnect = () =>\n new CancelablePromise((resolve, reject) => {\n const makeQuery = () => {\n return this.makeQuery<PyramidRoute>(this.routeStr, {}, {})\n .then((route) => {\n resolve(route);\n })\n .catch((er) => {\n reject(er);\n });\n };\n if (auth) {\n const { login, password } = auth;\n if (login && password) {\n return this._login({ login, password })\n .then(() => {\n return makeQuery();\n })\n .catch((er) => reject(er));\n }\n }\n return makeQuery();\n });\n return cache.add('route', makeConnect, {\n id: this.id,\n auth,\n baseUrl: this.options.baseUrl,\n });\n }\n\n /**\n * Quick way to change NextGIS Web user.\n * @param credentials - New user credentials\n */\n login(\n credentials: Credentials,\n options?: RequestOptions,\n ): CancelablePromise<UserInfo> {\n this.logout();\n addConnector(this);\n return this._login(credentials, options);\n }\n\n /**\n * Disconnecting a user. Aborting all current requests\n */\n logout(): void {\n this.abort();\n removeConnector(this);\n this.options.auth = undefined;\n this.user = undefined;\n this.emitter.emit('logout');\n this.resources.cache.clean();\n }\n\n getUserInfo(\n credentials?: Credentials,\n options?: RequestOptions,\n ): CancelablePromise<UserInfo> {\n if (this.user && this.user.id) {\n return CancelablePromise.resolve(this.user);\n }\n if (credentials) {\n this.options.auth = credentials;\n }\n const options_: RequestOptions = {\n headers: this.getAuthorizationHeaders(credentials),\n // withCredentials: true\n ...options,\n };\n\n // Do not use apiRequest('auth.current_user') to avoid circular-references\n return this.makeQuery<UserInfo>(\n '/api/component/auth/current_user',\n {},\n options_,\n );\n }\n\n /**\n * Obtaining the required Headers for authentication of requests in the NGW.\n */\n getAuthorizationHeaders(\n credentials?: Credentials,\n ): RequestHeaders | undefined {\n const client = this.makeClientId(credentials);\n if (client) {\n return {\n Authorization: 'Basic ' + client,\n };\n }\n }\n\n makeClientId(credentials?: Credentials): string | undefined {\n credentials = credentials || this.options.auth;\n if (credentials) {\n const { login, password } = credentials;\n const str = unescape(encodeURIComponent(`${login}:${password}`));\n // @ts-ignore\n if (__BROWSER__) {\n return window.btoa(str);\n } else {\n return Buffer.from(str).toString('base64');\n }\n }\n }\n\n /** Stop all api requests */\n abort() {\n for (const req of this.activeRequests) {\n req.cancel();\n }\n this.activeRequests = [];\n }\n\n getActiveApiRequests() {\n return [...this.activeRequests];\n }\n\n /**\n * Send request to NGW api router.\n * @param name - NGW route name from {@link https://docs.nextgis.com/docs_ngweb_dev/doc/developer/resource.html#routes | routes}\n * @param params - Request item params or query params\n * @param requestOptions - Request options\n *\n * @example\n * ```javascript\n *\n * // there is such an NGW route item\n * // \"feature_layer.feature.item\": [\n * // \"/api/resource/{0}/feature/{1}\",\n * // \"id\",\n * // \"fid\"\n * // ],\n *\n * const connector = new NgwConnector({ baseUrl: 'https://example.nextgis.com' });\n * connector.apiRequest('feature_layer.feature.item', {\n * // request params for {0} and {1}\n * 'id': 2011,\n * 'fid': 101,\n * // query params\n * 'srs': 4326,\n * 'geom_format': 'geojson',\n * }, { method: 'GET' });\n * // send get-request to 'https://example.nextgis.com/api/resource/2011/feature/101?srs=4326&geom_format=geojson'\n *\n * ```\n */\n apiRequest<\n K extends keyof RequestItemsParamsMap,\n P extends RequestItemKeys = RequestItemKeys,\n >(\n name: K,\n params_: RequestItemsParams<K> = {},\n requestOptions: RequestOptions = {},\n ): CancelablePromise<P[K]> {\n const { method, headers, withCredentials, responseType } = requestOptions;\n\n params_ = requestOptions.params ?? params_;\n const params = objectRemoveEmpty(params_);\n const makeApiRequest = () =>\n apiRequest({ name, params, requestOptions, connector: this });\n if (requestOptions.cache && method === 'GET') {\n const cache = new Cache<CancelablePromise<P[K]>>();\n return cache.add(name, makeApiRequest, {\n params,\n ...objectRemoveEmpty({\n headers,\n withCredentials,\n responseType,\n baseUrl: this.options.baseUrl,\n userId: this.user?.id,\n }),\n });\n }\n return makeApiRequest();\n }\n\n /**\n * Shortcut method for send POST request to NGW.\n * @param name - NGW route name from {@link https://docs.nextgis.com/docs_ngweb_dev/doc/developer/resource.html#routes | routes}\n * @param options - Request options\n * @param params - Request item params or query params\n *\n * @example\n * ```javascript\n * connector.post('resource.collection', { data: POST_PAYLOAD })\n * .then((newResource) => console.log(newResource))\n * .catch((error) => console.warn(error));\n * ```\n */\n post<K extends keyof RequestItemsParamsMap>(\n name: K,\n options?: RequestOptions<'POST', K>,\n params?: RequestItemsParams<K>,\n ): CancelablePromise<PostRequestItemsResponseMap[K]> {\n options = options || {};\n options.method = 'POST';\n return this.apiRequest<K, PostRequestItemsResponseMap>(\n name,\n params,\n options,\n );\n }\n\n /**\n * Shortcut method for send GET request to NGW.\n * @param name - NGW route name from {@link https://docs.nextgis.com/docs_ngweb_dev/doc/developer/resource.html#routes | routes}\n * @param options - Request options\n * @param params - Request item params or query params\n */\n get<K extends keyof RequestItemsParamsMap>(\n name: K,\n options?: RequestOptions<'GET', K> | undefined | null,\n params?: RequestItemsParams<K>,\n ): CancelablePromise<GetRequestItemsResponseMap[K]> {\n options = options || {};\n options.method = 'GET';\n return this.apiRequest<K, GetRequestItemsResponseMap>(\n name,\n params,\n options,\n );\n }\n\n /**\n * Shortcut method for send PATCH request to NGW.\n * @param name - NGW route name from {@link https://docs.nextgis.com/docs_ngweb_dev/doc/developer/resource.html#routes | routes}\n * @param options - Request options\n * @param params - Request item params or query params\n */\n patch<K extends keyof RequestItemsParamsMap>(\n name: K,\n options?: RequestOptions<'PATCH', K>,\n params?: RequestItemsParams<K>,\n ): CancelablePromise<PatchRequestItemsResponseMap[K]> {\n options = options || {};\n options.method = 'PATCH';\n return this.apiRequest<K, PatchRequestItemsResponseMap>(\n name,\n params,\n options,\n );\n }\n\n /**\n * Shortcut method for send PUT request to NGW.\n * @param name - NGW route name from {@link https://docs.nextgis.com/docs_ngweb_dev/doc/developer/resource.html#routes | routes}\n * @param options - Request options\n * @param params - Request item params or query params\n */\n put<K extends keyof RequestItemsParamsMap>(\n name: K,\n options?: RequestOptions<'PUT', K>,\n params?: RequestItemsParams<K>,\n ): CancelablePromise<PutRequestItemsResponseMap[K]> {\n options = options || {};\n options.method = 'PUT';\n return this.apiRequest<K, PutRequestItemsResponseMap>(\n name,\n params,\n options,\n );\n }\n\n /**\n * Shortcut method for send DELETE request to NGW.\n * @param name - NGW route name from {@link https://docs.nextgis.com/docs_ngweb_dev/doc/developer/resource.html#routes | routes}\n * @param options - Request options\n * @param params - Request item params or query params\n */\n delete<K extends keyof RequestItemsParamsMap>(\n name: K,\n options?: RequestOptions<'DELETE', K> | undefined | null,\n params?: RequestItemsParams<K>,\n ): CancelablePromise<DeleteRequestItemsResponseMap[K]> {\n options = options || {};\n options.method = 'DELETE';\n return this.apiRequest<K, DeleteRequestItemsResponseMap>(\n name,\n params,\n options,\n );\n }\n\n /**\n * Send request to NGW.\n * @param url - URL address to NGW\n * @param params - Query params\n * @param options - Request options\n */\n makeQuery<R = unknown>(\n url: string,\n params?: Params | null,\n options: RequestOptions = {},\n ): CancelablePromise<R> {\n url = (this.options.baseUrl ? this.options.baseUrl : '') + url;\n if (url) {\n if (params) {\n url = template(url, params);\n }\n url = encodeURI(fixUrlStr(url));\n return this._loadData(url, options);\n } else {\n throw new Error('Empty `url` not allowed');\n }\n }\n\n // -------------------------------------------------------------------------\n // Resource Methods\n // -------------------------------------------------------------------------\n\n /**\n * {@link ResourcesControl.getOne}\n */\n getResource(\n resource: ResourceDefinition,\n requestOptions?: RequestOptions<'GET'>,\n ): CancelablePromise<ResourceItem | undefined> {\n return this.resources.getOne(resource, requestOptions);\n }\n\n /**\n * {@link ResourcesControl.getOneOrFail}\n */\n getResourceOrFail(\n resource: ResourceDefinition,\n requestOptions?: RequestOptions<'GET'>,\n ): CancelablePromise<ResourceItem> {\n return this.resources.getOneOrFail(resource, requestOptions);\n }\n\n /**\n * @deprecated - use {@link getResource}\n */\n getResourceBy(\n resource: DeepPartial<Resource>,\n ): CancelablePromise<ResourceItem | undefined> {\n return this.resources.getOne(resource);\n }\n\n /**\n * @deprecated - use {@link getResource}\n */\n getResourceByKeyname(\n keyname: string,\n ): CancelablePromise<ResourceItem | undefined> {\n return this.resources.getOne(keyname);\n }\n\n /**\n * @deprecated - use {@link getResource}\n */\n getResourceById(id: number): CancelablePromise<ResourceItem | undefined> {\n return this.resources.getOne(id);\n }\n\n /**\n * {@link ResourcesControl.getId}\n */\n getResourceId(\n resource: ResourceDefinition,\n requestOptions?: RequestOptions<'GET'>,\n ): CancelablePromise<number | undefined> {\n return this.resources.getId(resource, requestOptions);\n }\n\n /**\n * {@link ResourcesControl.getIdOrFail}\n */\n getResourceIdOrFail(\n resource: ResourceDefinition,\n requestOptions?: RequestOptions<'GET'>,\n ): CancelablePromise<number> {\n return this.resources.getIdOrFail(resource, requestOptions);\n }\n\n /**\n * {@link ResourcesControl.getMany}\n */\n getResourcesBy(\n resource: DeepPartial<Resource>,\n requestOptions?: RequestOptions<'GET'>,\n ): CancelablePromise<ResourceItem[]> {\n return this.resources.getMany(resource, requestOptions);\n }\n\n /**\n * {@link ResourcesControl.getParent}\n */\n getResourceParent(\n resource: ResourceDefinition,\n requestOptions?: RequestOptions<'GET'>,\n ): CancelablePromise<ResourceItem | undefined> {\n return this.resources.getParent(resource, requestOptions);\n }\n\n /**\n * {@link ResourcesControl.getChildrenOf}\n */\n getResourceChildren(\n resource: ResourceDefinition,\n requestOptions?: GetChildrenOfOptions,\n ): CancelablePromise<ResourceItem[]> {\n return this.resources.getChildrenOf(resource, requestOptions);\n }\n\n /**\n * {@link ResourcesControl.update}\n */\n updateResource(\n resource: ResourceIdKeynameDef,\n data: DeepPartial<ResourceItem>,\n ): CancelablePromise<ResourceItem | undefined> {\n return this.resources.update(resource, data);\n }\n\n /**\n * {@link ResourcesControl.delete}\n */\n deleteResource(resource: ResourceIdKeynameDef): CancelablePromise<void> {\n return this.resources.delete(resource);\n }\n\n /**\n * @internal\n */\n protected _loadData(\n url: string,\n options: RequestOptions,\n ): CancelablePromise<any> {\n options.responseType = options.responseType || 'json';\n\n const request = new CancelablePromise((resolve, reject, onCancel) => {\n if (this.user) {\n options = options || {};\n // options.withCredentials = true;\n options.headers = {\n ...this.getAuthorizationHeaders(),\n ...options.headers,\n };\n }\n\n if (this.requestTransform) {\n const [transUrl, transOptions] = this.requestTransform(url, options);\n url = transUrl;\n options = transOptions;\n }\n loadData(url, resolve, options, reject, onCancel);\n })\n .then((resp) => {\n this._cleanActiveRequests(request);\n return resp;\n })\n .catch((httpError) => {\n this._cleanActiveRequests(request);\n if (httpError instanceof CancelablePromise.CancelError) {\n // not need to handle cancel error because onCancel method is used\n } else {\n // @ts-ignore\n if (__DEV__) {\n console.warn('DEV WARN', httpError);\n }\n const er = this._handleHttpError(httpError);\n if (er) {\n throw er;\n }\n }\n });\n if (\n options.signal &&\n typeof options.signal.addEventListener === 'function'\n ) {\n options.signal.addEventListener('abort', () => {\n request.cancel();\n this._cleanActiveRequests(request);\n });\n }\n this.activeRequests.push(request);\n return request;\n }\n\n private _login(\n credentials: Credentials,\n options?: RequestOptions,\n ): CancelablePromise<UserInfo> {\n return this.getUserInfo(credentials, options)\n .then((data) => {\n this.user = data;\n this.emitter.emit('login', data);\n return data;\n })\n .catch((er) => {\n this.emitter.emit('login:error', er);\n throw er;\n });\n }\n\n private _cleanActiveRequests(request: CancelablePromise) {\n const activeRequestIndex = this.activeRequests.indexOf(request);\n if (activeRequestIndex !== -1) {\n this.activeRequests.splice(activeRequestIndex, 1);\n }\n }\n\n private _handleHttpError(er: Error) {\n if (er) {\n if (er instanceof NgwError) {\n if (er.exception === 'nextgisweb.resource.exception.ResourceNotFound') {\n throw new ResourceNotFoundError(er);\n } else if (\n er.exception === 'nextgisweb.core.exception.InsufficientPermissions'\n ) {\n throw new InsufficientPermissionsError(er);\n }\n }\n }\n return er;\n }\n}\n","/**\n * A lightweight HTTP client optimized for use with {@link http://docs.nextgis.ru/docs_ngweb_dev/doc/developer/toc.html | NextGIS Web} API\n *\n * @remarks\n * Make sure CORS is registered in the {@link https://docs.nextgis.com/docs_ngcom/source/CORS.html | NextGIS Web settings } to be able to send requests.\n *\n * @packageDocumentation\n * @module ngw-connector\n */\nimport { NgwConnector } from './NgwConnector';\n\nexport * from './interfaces';\nexport * from './types/ResourceItem';\nexport * from './types/FeatureLayer';\nexport * from './types/RequestItemsParamsMap';\nexport * from './types/ResourceStore';\n\nexport default NgwConnector;\n","import CancelablePromise from '@nextgis/cancelable-promise';\n\nimport type { LngLatBoundsArray } from '@nextgis/utils';\nimport type NgwConnector from '@nextgis/ngw-connector';\nimport type { WebmapResource, ResourceItem } from '@nextgis/ngw-connector';\nimport type {\n FetchNgwLayerExtentOptions,\n FetchNgwLayerItemExtentOptions,\n} from '../interfaces';\n\nexport function getNgwWebmapExtent(\n webmap: WebmapResource,\n): LngLatBoundsArray | undefined {\n const bottom = webmap['extent_bottom'];\n const left = webmap['extent_left'];\n const top = webmap['extent_top'];\n const right = webmap['extent_right'];\n if (bottom && left && top && right) {\n const extent: LngLatBoundsArray = [left, bottom, right, top];\n if (extent[3] > 82) {\n extent[3] = 82;\n }\n if (extent[1] < -82) {\n extent[1] = -82;\n }\n return extent;\n }\n}\n\nexport function fetchNgwLayerExtent({\n resourceId,\n connector,\n cache = true,\n}: FetchNgwLayerExtentOptions): CancelablePromise<\n LngLatBoundsArray | undefined\n> {\n return connector\n .get('layer.extent', { cache }, { id: resourceId })\n .then((resp) => {\n if (resp) {\n const { maxLat, maxLon, minLat, minLon } = resp.extent;\n const extentArray: LngLatBoundsArray = [minLon, minLat, maxLon, maxLat];\n return extentArray;\n }\n });\n}\n\nexport function fetchNgwLayerItemExtent({\n resourceId,\n featureId,\n connector,\n cache = true,\n}: FetchNgwLayerItemExtentOptions): CancelablePromise<\n LngLatBoundsArray | undefined\n> {\n return connector\n .get(\n 'feature_layer.feature.item_extent',\n { cache },\n { id: resourceId, fid: featureId },\n )\n .then((resp) => {\n if (resp) {\n const { maxLat, maxLon, minLat, minLon } = resp.extent;\n const extentArray: LngLatBoundsArray = [minLon, minLat, maxLon, maxLat];\n return extentArray;\n }\n });\n}\n\nexport function fetchNgwExtent(\n options: FetchNgwLayerExtentOptions,\n): CancelablePromise<LngLatBoundsArray | undefined> {\n return options.connector.getResource(options.resourceId).then((resource) => {\n if (resource) {\n return fetchNgwResourceExtent(resource, options.connector, options);\n }\n });\n}\n\n/** @deprecated use {@link fetchNgwExtent} instead */\nexport function fetchNgwResourceExtent(\n item: ResourceItem,\n connector: NgwConnector,\n options?: FetchNgwLayerExtentOptions,\n): CancelablePromise<LngLatBoundsArray | undefined> {\n if (item.webmap) {\n return CancelablePromise.resolve(getNgwWebmapExtent(item.webmap));\n } else {\n const resource = item.resource;\n if (resource.cls && resource.cls.indexOf('style') !== -1) {\n return connector.getResource(resource.parent.id).then((res) => {\n if (res) {\n return fetchNgwLayerExtent({\n ...options,\n resourceId: res.resource.id,\n connector,\n });\n }\n });\n } else {\n return fetchNgwLayerExtent({\n ...options,\n resourceId: resource.id,\n connector,\n });\n }\n }\n}\n","import { fetchNgwResourceExtent } from './utils/fetchNgwExtent';\n\nimport type NgwConnector from '@nextgis/ngw-connector';\nimport type { ResourceItem } from '@nextgis/ngw-connector';\nimport type { LngLatBoundsArray } from '@nextgis/utils';\nimport { FetchNgwLayerExtentOptions } from './interfaces';\nexport class NgwResource {\n item!: ResourceItem;\n connector!: NgwConnector;\n\n protected _extent?: LngLatBoundsArray;\n\n /** @deprecated use {@link NgwResource.getBounds} instead */\n async getExtent(): Promise<LngLatBoundsArray | undefined> {\n return this.getBounds();\n }\n\n async getBounds(\n options?: FetchNgwLayerExtentOptions,\n ): Promise<LngLatBoundsArray | undefined> {\n if (this._extent) {\n return this._extent;\n }\n if (this.item) {\n this._extent = await fetchNgwResourceExtent(\n this.item,\n this.connector,\n options,\n );\n return this._extent;\n }\n }\n}\n","import { Feature } from 'geojson';\nimport { ResourceItem } from '@nextgis/ngw-connector';\n\nexport function createPopupContent(\n feature: Feature,\n item?: ResourceItem,\n): HTMLElement | string {\n // @ts-ignore\n if (__BROWSER__) {\n const element = document.createElement('div');\n if (item && item.feature_layer) {\n item.feature_layer.fields.forEach((x) => {\n if (x.grid_visibility) {\n const value = feature.properties && feature.properties[x.keyname];\n if (value) {\n const propElem = document.createElement('div');\n element.appendChild(propElem);\n propElem.innerHTML = `<span>${x.display_name}</span>: ${value}<span></span>`;\n }\n }\n });\n } else if (feature.properties) {\n for (const p in feature.properties) {\n const propElem = document.createElement('div');\n element.appendChild(propElem);\n propElem.innerHTML = `<span>${p}</span>: ${feature.properties[p]}<span></span>`;\n }\n }\n return element;\n } else {\n return '';\n }\n}\n","import { FilterOptions, GeoJsonAdapterOptions } from '@nextgis/webmap';\n\nconst filterOptionsKeys: (keyof FilterOptions)[] = [\n 'fields',\n 'intersects',\n 'limit',\n 'orderBy',\n 'strategy',\n];\n\nexport function getLayerFilterOptions(\n options: GeoJsonAdapterOptions,\n): FilterOptions {\n const filterOptions: Record<string, any> = {};\n filterOptionsKeys.forEach((x) => {\n const opt = options[x];\n if (opt !== undefined) {\n filterOptions[x] = opt;\n }\n });\n return filterOptions as FilterOptions;\n}\n","import NgwConnector, { ResourceItem } from '@nextgis/ngw-connector';\nimport type { NgwLayerOptions } from '../interfaces';\n\nexport async function resourceIdFromLayerOptions(\n options: NgwLayerOptions,\n connector: NgwConnector,\n): Promise<number> {\n const resource = options.resource;\n const item = resource as ResourceItem;\n\n // @ts-ignore @deprecated\n let { keyname, resourceId } = options;\n\n if (resource) {\n if (typeof resource === 'string') {\n keyname = resource;\n } else if (typeof resource === 'number') {\n resourceId = resource;\n } else if (\n item.resource &&\n item.resource !== undefined &&\n 'resource' in item\n ) {\n resourceId = (resource as ResourceItem).resource.id;\n } else {\n // TODO: safe remove this case\n resourceId = await resourceIdFromLayerOptions(resource as any, connector);\n }\n }\n if (!resourceId && keyname) {\n const resourceItem = await connector.getResource(keyname);\n if (resourceItem) {\n resourceId = resourceItem.resource.id;\n }\n }\n return resourceId;\n}\n","import CancelablePromise from '@nextgis/cancelable-promise';\nimport {\n isPropertyFilter,\n PropertiesFilter,\n PropertyFilter,\n} from '@nextgis/properties-filter';\nimport {\n round,\n defined,\n degrees2meters,\n isLngLatBoundsArray,\n getBoundsCoordinates,\n} from '@nextgis/utils';\n\nimport type { Geometry, Feature } from 'geojson';\nimport type {\n RequestItemAdditionalParams,\n FeatureItem,\n} from '@nextgis/ngw-connector';\nimport type { LngLatArray, FeatureProperties } from '@nextgis/utils';\nimport type {\n NgwFeatureRequestOptions,\n FeatureRequestParams,\n FetchNgwItemsOptions,\n} from '../interfaces';\n\nexport const FEATURE_REQUEST_PARAMS: FeatureRequestParams = {\n srs: 4326,\n geom_format: 'geojson',\n};\n\nexport function createGeoJsonFeature<\n G extends Geometry | null = Geometry,\n P extends FeatureProperties = FeatureProperties,\n>(item: Pick<FeatureItem, 'id' | 'geom' | 'fields'>): Feature<G, P> {\n const geometry = item.geom as G;\n const feature: Feature<G, P> = {\n geometry,\n id: item.id,\n type: 'Feature',\n properties: item.fields as P,\n };\n return feature;\n}\n\nexport function updateItemRequestParam<\n P extends FeatureProperties = FeatureProperties,\n>(params: FeatureRequestParams, options: NgwFeatureRequestOptions<P>): void {\n const { extensions, geom, fields, srs, ilike, like } = options;\n // Empty extesions by default\n let extensionsStr = extensions ? extensions.join(',') : '';\n // Use character * to set all extensions\n if (extensionsStr !== '*') {\n params.extensions = extensionsStr;\n }\n\n if (fields !== undefined) {\n params.fields = Array.isArray(fields) ? fields.join(',') : '';\n }\n if (geom !== undefined) {\n params.geom = geom ? 'yes' : 'no';\n if (!geom) {\n delete params.srs;\n delete params.geom_format;\n }\n }\n if (defined(ilike)) {\n params.ilike = ilike;\n } else if (defined(like)) {\n params.like = like;\n }\n if (defined(srs)) {\n params.srs = srs;\n }\n}\n\n// NGW REST API is not able to filtering by combined queries\n// therefore the filter is divided into several requests\nexport function createFeatureFieldFilterQueries<\n G extends Geometry = Geometry,\n P extends { [field: string]: any } = { [field: string]: any },\n>(\n opt: FetchNgwItemsOptions<P> &\n Required<Pick<FetchNgwItemsOptions, 'filters'>>,\n): CancelablePromise<FeatureItem<P, G>[]> {\n const queries: CancelablePromise<FeatureItem<P, G>[]>[] = getQueries<G, P>(\n opt,\n );\n\n return CancelablePromise.all(queries).then((itemsParts) => {\n // this list of ids used for optimization\n const ids: number[] = [];\n const items: FeatureItem<P, G>[] = [];\n for (const part of itemsParts) {\n for (const item of part) {\n if (!ids.includes(item.id)) {\n items.push(item);\n ids.push(item.id);\n }\n }\n }\n const offset = opt.offset !== undefined ? opt.offset : 0;\n const limit = opt.limit !== undefined ? opt.limit : items.length;\n if (opt.offset || opt.limit) {\n return items.splice(offset, limit);\n }\n return items;\n });\n}\n\nfunction createParam(pf: PropertyFilter): [string, any] {\n const [field, operation, value] = pf;\n const isFldStr = field !== 'id' ? 'fld_' : '';\n let vStart = '';\n let vEnd = '';\n const field_ = String(field)\n .trim()\n .replace(/^(%?)(.+?)(%?)$/, (m, a, b, c) => {\n vStart = a;\n vEnd = c;\n return b;\n });\n const v = vStart + value + vEnd;\n return [`${isFldStr}${field_}__${operation}`, v];\n}\n\nfunction getQueries<\n G extends Geometry = Geometry,\n P extends { [field: string]: any } = { [field: string]: any },\n>(\n opt: FetchNgwItemsOptions<P> &\n Required<Pick<FetchNgwItemsOptions, 'filters'>>,\n _queries: CancelablePromise<FeatureItem<P, G>[]>[] = [],\n _parentAllParams: [string, any][] = [],\n): CancelablePromise<FeatureItem<P, G>[]>[] {\n const { filters } = opt;\n\n const logic = typeof filters[0] === 'string' ? filters[0] : 'all';\n\n const filters_ = filters.filter((x) => Array.isArray(x)) as PropertyFilter[];\n\n if (logic === 'any') {\n for (const f of filters_) {\n if (isPropertyFilter(f)) {\n _queries.push(\n fetchNgwLayerItemsRequest<G, P>({\n ...opt,\n paramList: [..._parentAllParams, createParam(f)],\n }),\n );\n } else {\n getQueries(\n {\n ...opt,\n filters: f,\n },\n _queries,\n [..._parentAllParams],\n );\n }\n }\n } else if (logic === 'all') {\n const filters: [string, any][] = [];\n const propertiesFilterList: PropertiesFilter[] = [];\n for (const f of filters_) {\n if (isPropertyFilter(f)) {\n filters.push(createParam(f));\n } else {\n propertiesFilterList.push(f);\n }\n }\n\n if (propertiesFilterList.length) {\n for (const x of propertiesFilterList) {\n getQueries(\n {\n ...opt,\n filters: x,\n },\n _queries,\n [..._parentAllParams, ...filters],\n );\n }\n } else {\n _queries.push(\n fetchNgwLayerItemsRequest<G, P>({\n ...opt,\n paramList: [..._parentAllParams, ...filters],\n }),\n );\n }\n }\n return _queries;\n}\n\nfunction createWktFromCoordArray(coord: LngLatArray[]): string {\n const polygon = coord.map(([lng, lat]) => {\n const [x, y] = degrees2meters(lng, lat).map((c) => round(c));\n return x + ' ' + y;\n });\n return `POLYGON((${polygon.join(', ')}))`;\n}\n\nexport function fetchNgwLayerItemsRequest<\n G extends Geometry = Geometry,\n P extends { [field: string]: any } = { [field: string]: any },\n>(options: FetchNgwItemsOptions<P>): CancelablePromise<FeatureItem<P, G>[]> {\n const params: FeatureRequestParams & RequestItemAdditionalParams = {\n ...FEATURE_REQUEST_PARAMS,\n };\n const {\n limit,\n cache,\n signal,\n offset,\n orderBy,\n paramList,\n connector,\n geomFormat,\n intersects,\n resourceId,\n } = options;\n if (limit) {\n if (limit !== Number.POSITIVE_INFINITY) {\n params.limit = limit;\n }\n } else {\n // Strict restriction on loading data from large layers\n params.limit = 7000;\n }\n if (offset) {\n params.offset = offset;\n }\n if (geomFormat) {\n params.geom_format = geomFormat;\n }\n updateItemRequestParam(params, options);\n\n if (orderBy) {\n params.order_by = orderBy.join(',');\n }\n if (Array.isArray(intersects)) {\n const coordinates = isLngLatBoundsArray(intersects)\n ? getBoundsCoordinates(intersects)\n : intersects;\n\n params.intersects = createWktFromCoordArray(coordinates);\n } else if (typeof intersects === 'string') {\n params.intersects = intersects;\n }\n\n if (paramList) {\n params.paramList = paramList;\n }\n const reqParams = {\n id: resourceId,\n ...params,\n };\n\n return connector.get(\n 'feature_layer.feature.collection',\n { cache, signal },\n reqParams,\n ) as CancelablePromise<FeatureItem<P, G>[]>;\n}\n","import { isObject, defined } from '@nextgis/utils';\nimport type { NgwDateFormat, NgwDateTimeFormat } from '@nextgis/ngw-connector';\n\nexport function prepareNgwFieldsToPropertiesFilter(\n fields: Record<string, any>,\n): Record<string, any> {\n let f: keyof typeof fields;\n for (f in fields) {\n const field = fields[f];\n if (isObject(field)) {\n const date = field as NgwDateFormat | NgwDateTimeFormat;\n if (defined(date.year) && defined(date.month) && defined(date.day)) {\n const dt: [number, number, number, number?, number?, number?] = [\n date.year,\n date.month - 1,\n date.day,\n ];\n if ('hour' in date) {\n [date.hour, date.minute, date.second].forEach((x) => {\n dt.push(x);\n });\n }\n fields[f] = new Date(...dt).toISOString();\n }\n } else if (f === 'id' && typeof field === 'string') {\n fields[f] = field.split(',').map(Number);\n }\n }\n return fields;\n}\n","import { propertiesFilter } from '@nextgis/properties-filter';\nimport CancelablePromise from '@nextgis/cancelable-promise';\nimport {\n createFeatureFieldFilterQueries,\n fetchNgwLayerItemsRequest,\n} from './featureLayerUtils';\nimport { prepareNgwFieldsToPropertiesFilter } from './prepareNgwFieldsToPropertiesFilter';\n\nimport type { Geometry } from 'geojson';\nimport type { FeatureItem } from '@nextgis/ngw-connector';\nimport { FeatureProperties, isArray } from '@nextgis/utils';\nimport type { PropertiesFilter } from '@nextgis/properties-filter';\nimport type { FetchNgwItemsOptions } from '../interfaces';\n\nexport function fetchNgwLayerItems<\n G extends Geometry = Geometry,\n P extends FeatureProperties = FeatureProperties,\n>(options: FetchNgwItemsOptions<P>): CancelablePromise<FeatureItem<P, G>[]> {\n const filters = options.filters;\n if (filters) {\n return createFeatureFieldFilterQueries({\n ...options,\n filters,\n }).then((data) => {\n const clientFilterValidate =\n options.clientFilterValidate ?? isFilterWithAnyCase(filters);\n // Additional client-side filter check\n if (clientFilterValidate) {\n data = data.filter((y) => {\n const fields = prepareNgwFieldsToPropertiesFilter({\n ...y.fields,\n id: y.id,\n });\n const result = propertiesFilter(fields, filters);\n return result;\n });\n }\n return data;\n }) as CancelablePromise<FeatureItem<P, G>[]>;\n } else {\n return fetchNgwLayerItemsRequest<G, P>(options);\n }\n}\n\nfunction isFilterWithAnyCase(filters: PropertiesFilter): boolean {\n if (filters[0] === 'any') {\n return true;\n }\n for (let i = 1; i < filters.length; i++) {\n const p = filters[i];\n if (isArray(p)) {\n const deep = isFilterWithAnyCase(p);\n if (deep) {\n return true;\n }\n }\n }\n return false;\n}\n","import { fetchNgwLayerItems } from './fetchNgwLayerItems';\nimport { createGeoJsonFeature } from './featureLayerUtils';\n\nimport type { Geometry, Feature } from 'geojson';\nimport type CancelablePromise from '@nextgis/cancelable-promise';\nimport type { FeatureItem } from '@nextgis/ngw-connector';\nimport type { FetchNgwItemsOptions } from '../interfaces';\nimport type { FeatureProperties } from '@nextgis/utils';\n\nexport function fetchNgwLayerFeatures<\n G extends Geometry | null = Geometry,\n P extends FeatureProperties = FeatureProperties,\n>(options: FetchNgwItemsOptions<P>): CancelablePromise<Feature<G, P>[]> {\n return fetchNgwLayerItems(options).then((x: FeatureItem[]) => {\n const features: Array<Feature<G, P>> = [];\n x.forEach((y) => {\n features.push(createGeoJsonFeature(y));\n });\n\n return features;\n });\n}\n","import { fetchNgwLayerFeatures } from './fetchNgwLayerFeatures';\n\nimport type { Geometry, FeatureCollection } from 'geojson';\nimport type CancelablePromise from '@nextgis/cancelable-promise';\nimport type { FeatureProperties } from '@nextgis/utils';\nimport type { FetchNgwItemsOptions } from '../interfaces';\n\nexport function fetchNgwLayerFeatureCollection<\n G extends Geometry | null = Geometry,\n P extends FeatureProperties = FeatureProperties,\n>(\n options: FetchNgwItemsOptions<P>,\n): CancelablePromise<FeatureCollection<G, P>> {\n return fetchNgwLayerFeatures<G, P>(options).then((features) => {\n const featureCollection: FeatureCollection<G, P> = {\n type: 'FeatureCollection',\n features,\n };\n return featureCollection;\n });\n}\n","import CancelablePromise from '@nextgis/cancelable-promise';\n\nimport type { FetchNgwLayerCountOptions } from '../interfaces';\n\nexport function fetchNgwLayerCount({\n connector,\n resourceId,\n cache = true,\n}: FetchNgwLayerCountOptions): CancelablePromise<number> {\n return connector\n .get(\n 'feature_layer.feature.count',\n { cache },\n {\n id: resourceId,\n },\n )\n .then((resp) => {\n return resp.total_count;\n });\n}\n","import { EventEmitter } from 'events';\nimport { debounce, LngLatBoundsArray } from '@nextgis/utils';\nimport { propertiesFilter } from '@nextgis/properties-filter';\n\nimport { createPopupContent } from '../utils/createPopupContent';\nimport { getLayerFilterOptions } from '../utils/getLayerFilterOptions';\nimport { fetchNgwExtent } from '../utils/fetchNgwExtent';\nimport { resourceIdFromLayerOptions } from '../utils/resourceIdFromLayerOptions';\nimport { vectorLayerGeomToPaintTypeAlias } from '../utils/utils';\nimport { fetchNgwLayerFeatureCollection } from '../utils/fetchNgwLayerFeatureCollection';\nimport { prepareNgwFieldsToPropertiesFilter } from '../utils/prepareNgwFieldsToPropertiesFilter';\n\nimport type { FeatureCollection } from 'geojson';\nimport type { PropertiesFilter } from '@nextgis/properties-filter';\nimport type CancelablePromise from '@nextgis/cancelable-promise';\nimport type { Type } from '@nextgis/utils';\nimport type {\n GeoJsonAdapterOptions,\n VectorLayerAdapter,\n FilterOptions,\n LayerAdapter,\n} from '@nextgis/webmap';\nimport type {\n NgwLayerOptions,\n GetClassAdapterOptions,\n NgwFeatureRequestOptions,\n} from '../interfaces';\nimport { fetchNgwLayerCount } from '../utils/fetchNgwLayerCount';\n\ninterface FilterArgs {\n filters?: PropertiesFilter;\n options?: FilterOptions;\n}\n\nexport async function createGeoJsonAdapter(\n props: GetClassAdapterOptions,\n): Promise<Type<VectorLayerAdapter>> {\n const {\n item,\n webMap,\n Adapter,\n connector,\n layerOptions,\n addLayerOptionsPriority: alop,\n } = props;\n const addLayerOptionsPriority = alop ?? true;\n const options = layerOptions as NgwLayerOptions<'GEOJSON'>;\n const GeoJsonAdapter: Type<VectorLayerAdapter> =\n Adapter || webMap.mapAdapter.layerAdapters.GEOJSON;\n\n const _loadedIds: string[] = [];\n let _fullDataLoad = false;\n let _lastFilterArgs: FilterArgs | undefined;\n let _dataPromise: CancelablePromise<FeatureCollection> | undefined;\n\n const resourceId = await resourceIdFromLayerOptions(options, connector);\n\n if (options.adapterOptions?.popupOptions?.fromProperties) {\n options.adapterOptions.popupOptions.createPopupContent = ({ feature }) => {\n return feature && createPopupContent(feature, item);\n };\n }\n\n const getData = async (\n filters?: PropertiesFilter,\n filterOpt?: NgwFeatureRequestOptions,\n ) => {\n abort();\n _lastFilterArgs = { filters, options: filterOpt };\n _dataPromise = fetchNgwLayerFeatureCollection({\n resourceId,\n filters,\n connector,\n cache: true,\n ...filterOpt,\n });\n return await _dataPromise;\n };\n let removed = false;\n const abort = () => {\n if (_dataPromise) {\n _dataPromise.cancel();\n _dataPromise = undefined;\n }\n };\n\n class NgwGeoJsonAdapter extends GeoJsonAdapter {\n emitter = new EventEmitter();\n __onMapMove?: () => void;\n __onMapMoveStart?: () => void;\n __enableMapMoveListener?: (e: LayerAdapter) => void;\n __disableMapMoveListener?: (e: LayerAdapter) => void;\n\n async addLayer(opt: GeoJsonAdapterOptions) {\n let needUpdate = !opt.data;\n const waitFullLoad =\n opt.waitFullLoad !== undefined ? opt.waitFullLoad : true;\n if (options.id !== undefined) {\n opt.id = options.id;\n }\n if (item && item.vector_layer) {\n opt.type =\n vectorLayerGeomToPaintTypeAlias[item.vector_layer.geometry_type];\n }\n if (options.adapterOptions) {\n // TODO: remove addLayerOptionsPriority options/\n // in some cases, addLayer options must be used,\n // but in others factory method options needs first\n if (addLayerOptionsPriority) {\n opt = {\n ...options.adapterOptions,\n ...opt,\n };\n } else {\n opt = {\n ...opt,\n ...options.adapterOptions,\n };\n }\n }\n if (opt.data && Object.keys(opt.data).length === 0) {\n opt.data = undefined;\n needUpdate = false;\n }\n const strategy = opt.strategy || undefined;\n this.options.strategy = strategy;\n\n const layer = super.addLayer(opt);\n _lastFilterArgs = {\n filters: opt.propertiesFilter,\n options: getLayerFilterOptions(opt),\n };\n let updatePromise: Promise<any> | undefined;\n if (needUpdate) {\n updatePromise = this.updateLayer();\n }\n if (waitFullLoad && updatePromise) {\n await updatePromise;\n }\n if (strategy && strategy.startsWith('BBOX') && !_fullDataLoad) {\n this._addBboxEventListener();\n }\n return layer;\n }\n\n /** @deprecated use {@link NgwGeoJsonAdapter.getBounds} instead */\n getExtent(): Promise<LngLatBoundsArray | undefined> {\n return this.getBounds();\n }\n\n async getBounds(): Promise<LngLatBoundsArray | undefined> {\n const hasData = this.getLayers && this.getLayers().length;\n const strategy = this.options.strategy;\n if (strategy?.startsWith('BBOX') || hasData) {\n return fetchNgwExtent({ connector, resourceId: item.resource.id });\n } else {\n if (super.getBounds) {\n return super.getBounds();\n }\n }\n }\n\n beforeRemove() {\n removed = true;\n this._removeMoveEventListener();\n this._removeBboxEventListener();\n this.__disableMapMoveListener = undefined;\n this.__enableMapMoveListener = undefined;\n this.__onMapMove = undefined;\n this.__onMapMoveStart = undefined;\n abort();\n }\n\n getCount() {\n return fetchNgwLayerCount({ connector, resourceId, cache: true });\n }\n\n async updateLayer(filterArgs?: FilterArgs) {\n filterArgs = filterArgs || _lastFilterArgs || {};\n if (this.options.strategy?.startsWith('BBOX')) {\n await webMap.onLoad('create');\n filterArgs.options = filterArgs.options || {};\n filterArgs.options.intersects = webMap.getBounds();\n const { minZoom, maxZoom } = this.options;\n const zoom = webMap.getZoom();\n if (zoom !== undefined) {\n if (minZoom !== undefined && zoom < minZoom) {\n return;\n }\n if (maxZoom !== undefined && zoom > maxZoom) {\n return;\n }\n if (_fullDataLoad) {\n return;\n }\n }\n }\n if (removed) {\n return;\n }\n try {\n this.emitter.emit('preupdate', filterArgs);\n webMap._emitLayerEvent('layer:preupdate', options.id || '', filterArgs);\n\n const data = await getData(filterArgs.filters, {\n ...filterArgs.options,\n srs: this.options.srs,\n });\n let newData: FeatureCollection = data;\n const count = await this.getCount();\n\n if (this.options.strategy === 'BBOX+') {\n newData = {\n type: 'FeatureCollection',\n features: [],\n };\n for (const f of data.features) {\n if (_loadedIds.indexOf(String(f.id)) === -1) {\n _loadedIds.push(String(f.id));\n newData.features.push(f);\n }\n }\n _fullDataLoad = count !== undefined && _loadedIds.length >= count;\n await webMap.addLayerData(this, newData);\n } else {\n _fullDataLoad = count !== undefined && data.features.length >= count;\n await webMap.setLayerData(this, data);\n }\n this.emitter.emit('updated', data);\n webMap._emitLayerEvent('layer:updated', options.id || '', {\n data,\n newData,\n isFull: _fullDataLoad,\n });\n } catch (er) {\n if (er instanceof Error && er.name !== 'CancelError') {\n throw er;\n }\n }\n if (super.updateLayer) {\n super.updateLayer();\n }\n }\n\n async propertiesFilter(filters: PropertiesFilter, opt?: FilterOptions): Promise<void> {\n abort();\n if (this.filter && _fullDataLoad) {\n this.filter((e) => {\n const props_ =\n e.feature &&\n e.feature.properties &&\n prepareNgwFieldsToPropertiesFilter({ ...e.feature.properties });\n if (props_) {\n return propertiesFilter(props_, filters);\n }\n return true;\n });\n } else if (this.setData) {\n if (this.clearLayer) {\n this.clearLayer();\n }\n const data = await getData(filters, {\n ...opt,\n srs: this.options.srs,\n });\n this.setData(data);\n }\n }\n\n removeFilter() {\n _lastFilterArgs = undefined;\n this.propertiesFilter([]);\n if (this.filter) {\n this.filter(() => {\n return true;\n });\n }\n }\n\n private _addBboxEventListener() {\n this.__enableMapMoveListener = (e: LayerAdapter) => {\n if (e === this) {\n this._removeMoveEventListener();\n this.updateLayer();\n this._addMoveEventListener();\n }\n };\n this.__disableMapMoveListener = (e: LayerAdapter) => {\n if (e === this) {\n this._removeMoveEventListener();\n }\n };\n webMap.emitter.on('layer:show', this.__enableMapMoveListener);\n webMap.emitter.on('layer:hide', this.__disableMapMoveListener);\n this.__enableMapMoveListener(this);\n }\n\n private _removeBboxEventListener() {\n if (this.__enableMapMoveListener) {\n webMap.emitter.on('layer:show', this.__enableMapMoveListener);\n }\n if (this.__disableMapMoveListener) {\n webMap.emitter.on('layer:hide', this.__disableMapMoveListener);\n }\n }\n\n private _addMoveEventListener() {\n this.__onMapMove = debounce(() => this.updateLayer());\n this.__onMapMoveStart = abort;\n webMap.emitter.on('movestart', this.__onMapMoveStart);\n webMap.emitter.on('moveend', this.__onMapMove);\n }\n\n private _removeMoveEventListener() {\n if (this.__onMapMove) {\n webMap.emitter.removeListener('moveend', this.__onMapMove);\n }\n if (this.__onMapMoveStart) {\n webMap.emitter.removeListener('movestart', this.__onMapMoveStart);\n }\n }\n }\n\n return NgwGeoJsonAdapter;\n}\n","import { updateImageParams } from './utils';\n\nimport type {\n RasterAdapterOptions,\n ImageAdapterOptions,\n WmsAdapterOptions,\n MvtAdapterOptions,\n WebMap,\n} from '@nextgis/webmap';\nimport type { NgwLayerOptions, TileNoData } from '../interfaces';\n\nexport interface GetLayerAdapterOptions {\n options: NgwLayerOptions;\n webMap?: WebMap;\n baseUrl?: string;\n}\n\nexport interface GetImageAdapterOptionsParams {\n resourceId: number | number[];\n baseUrl?: string;\n nd?: TileNoData;\n headers: any;\n}\n\nexport function getImageAdapterOptions({\n resourceId,\n baseUrl,\n nd,\n headers,\n}: GetImageAdapterOptionsParams): ImageAdapterOptions {\n const url = baseUrl + '/api/component/render/image';\n const params: Record<string, any> = { resource: resourceId };\n if (nd) {\n params.nd = nd;\n }\n return {\n url,\n resourceId,\n headers,\n params,\n updateWmsParams: (params_: Record<string, any>) => {\n if (nd) {\n params_.nd = nd;\n }\n return updateImageParams(params_, resourceId);\n },\n } as ImageAdapterOptions;\n}\n\nexport function ngwApiToAdapterOptions({\n options,\n webMap,\n baseUrl,\n}: GetLayerAdapterOptions):\n | MvtAdapterOptions\n | RasterAdapterOptions\n | ImageAdapterOptions\n | undefined {\n let adapter = options.adapter || 'IMAGE';\n let url: string;\n const layerAdapters = webMap && webMap.getLayerAdapters();\n const isImageAllowed = layerAdapters ? layerAdapters.IMAGE : true;\n\n const resourceId = options.resource;\n const nd: TileNoData = options.tileNoData ? options.tileNoData : 200;\n\n if (typeof resourceId === 'number') {\n if (adapter === 'IMAGE') {\n if (isImageAllowed) {\n return getImageAdapterOptions({\n resourceId,\n headers: options.headers,\n nd,\n baseUrl,\n });\n } else {\n adapter = 'TILE';\n }\n }\n if (adapter === 'WMS') {\n url = `${baseUrl}/api/resource/${resourceId}/wms`;\n const adapterOptions = options.adapterOptions as WmsAdapterOptions;\n return {\n url,\n format: 'image/png',\n version: '1.1.1',\n layers: adapterOptions && adapterOptions.layers,\n headers: options.headers,\n };\n }\n if (adapter === 'MVT') {\n url =\n baseUrl +\n '/api/component/feature_layer/mvt?x={x}&y={y}&z={z}&' +\n 'resource=' +\n resourceId +\n '&simplification=' +\n (options.simplification ?? 6);\n // url = baseUrl + '/api/resource/' + options.resourceId + '/{z}/{x}/{y}.mvt';\n return {\n url,\n sourceLayer: 'ngw:' + resourceId,\n featureIdName: '$id',\n };\n }\n if (adapter === 'TERRAIN') {\n url = baseUrl + `/api/resource/${resourceId}/terrain_provider`;\n // `/api/resource/${resourceId}/terrain_provider/{z}/{x}/{y}.terrain`;\n return { url, adapter };\n }\n if (adapter === 'MODEL_3D') {\n url = baseUrl + `/api/component/model_3d/${resourceId}/data.glb`;\n return { url };\n }\n if (adapter === 'TILE') {\n url =\n baseUrl +\n '/api/component/render/tile?z={z}&x={x}&y={y}&resource=' +\n resourceId +\n '&nd=' +\n nd;\n return { url, adapter };\n }\n } else if (resourceId !== undefined) {\n throw new Error(\n 'Option `resource` must be number, not ' + typeof resourceId,\n );\n } else {\n console.log('Option `resource` not set');\n }\n}\n\n/** @deprecated use {@link ngwApiToAdapterOptions} instead */\nexport function getLayerAdapterOptions(\n options: NgwLayerOptions,\n webMap: WebMap,\n baseUrl: string,\n): RasterAdapterOptions | ImageAdapterOptions | undefined {\n return ngwApiToAdapterOptions({ options, webMap, baseUrl });\n}\n","import { defined } from '@nextgis/utils';\n\nimport { ngwApiToAdapterOptions } from '../utils/ngwApiToAdapterOptions';\nimport { resourceIdFromLayerOptions } from '../utils/resourceIdFromLayerOptions';\n\nimport type { Type } from '@nextgis/utils';\nimport type { ResourceItem, ResourceCls } from '@nextgis/ngw-connector';\nimport type { MainLayerAdapter, ImageAdapterOptions } from '@nextgis/webmap';\nimport type {\n ResourceAdapter,\n NgwLayerAdapterType,\n GetClassAdapterOptions,\n} from '../interfaces';\n\nexport async function createRasterAdapter({\n layerOptions,\n webMap,\n connector,\n item,\n}: GetClassAdapterOptions): Promise<Type<MainLayerAdapter> | undefined> {\n const resourceCls = item.resource.cls;\n const clsAdapterAlias: { [key in ResourceCls]?: NgwLayerAdapterType } = {\n wmsserver_service: 'WMS',\n tmsclient_layer: 'IMAGE',\n };\n let adapter =\n layerOptions.adapter ||\n (resourceCls && clsAdapterAlias[resourceCls]) ||\n 'IMAGE';\n if (adapter !== undefined) {\n layerOptions.adapter = adapter;\n }\n if (adapter === 'IMAGE') {\n const layerAdapters = webMap.getLayerAdapters();\n const isImageAllowed = layerAdapters ? layerAdapters.IMAGE : true;\n if (!isImageAllowed) {\n adapter = 'TILE';\n }\n }\n\n const AdapterClass = webMap.mapAdapter.layerAdapters[\n adapter\n ] as Type<MainLayerAdapter>;\n if (AdapterClass) {\n const resourceId = await resourceIdFromLayerOptions(\n layerOptions,\n connector,\n );\n return class RasterAdapter extends AdapterClass implements ResourceAdapter {\n // options = {};\n item?: ResourceItem = item;\n resourceId = resourceId;\n\n constructor(public map: any, _options: any) {\n super(map, _options);\n const opt = ngwApiToAdapterOptions({\n options: layerOptions,\n webMap,\n baseUrl: connector.options.baseUrl || '',\n });\n if (opt) {\n const layerAdapterOptions: ImageAdapterOptions = {\n ...opt,\n ...layerOptions.adapterOptions,\n params: { resource: resourceId },\n layers: opt.layers || String(resourceId),\n resourceId: resourceId,\n };\n if (\n layerOptions.adapterOptions &&\n defined(layerOptions.adapterOptions.setViewDelay)\n ) {\n layerAdapterOptions.setViewDelay =\n layerOptions.adapterOptions.setViewDelay;\n }\n this.options = { ...this.options, ...layerAdapterOptions };\n }\n }\n addLayer(addOptions: any) {\n return super.addLayer({ ...this.options, ...addOptions });\n }\n\n async getIdentificationIds(): Promise<number[]> {\n if (this.item) {\n if (adapter === 'MVT') {\n return [this.item.resource.id];\n }\n const id = this.item.resource.parent.id;\n if (defined(id)) {\n return [id];\n }\n }\n return [];\n }\n // beforeRemove() {\n\n // }\n };\n } else {\n throw new Error(adapter + ' not supported yet. Only TILE');\n }\n}\n","import { propertiesFilter } from '@nextgis/properties-filter';\n\nimport type { PropertyFilter } from '@nextgis/properties-filter';\nimport type {\n DefaultTreeItem,\n RelationFunction,\n SelfFilter,\n TreeRelation,\n} from './interfaces';\n\ntype D = DefaultTreeItem;\n\ntype TreeFunction<X extends D> = (\n item: X | X[],\n filter: SelfFilter<X>,\n relation: TreeRelation<X>,\n) => X | X[] | boolean | undefined;\n\ntype ItemPrepareFunction<F extends D> = (item: D) => F;\n\nexport function treeEvery<F extends D = D>(\n item: F | F[],\n filter?: PropertyFilter | SelfFilter<F>,\n relation?: TreeRelation<F>,\n itemPrepare?: ItemPrepareFunction<F>,\n): boolean {\n return !!treeWrapper<F>(item, filter, relation, treeEvery_, itemPrepare);\n}\n\nexport function treeSome<F extends D = D>(\n item: F | F[],\n filter?: PropertyFilter | SelfFilter<F>,\n relation?: TreeRelation<F>,\n itemPrepare?: ItemPrepareFunction<F>,\n): boolean {\n return !!treeWrapper<F>(item, filter, relation, treeFind_, itemPrepare);\n}\n\nexport function treeFind<F extends D = D>(\n item: F | F[],\n filter?: PropertyFilter | SelfFilter<F>,\n relation?: TreeRelation<F>,\n itemPrepare?: ItemPrepareFunction<F>,\n): F | undefined {\n return treeWrapper<F>(item, filter, relation, treeFind_, itemPrepare) as F;\n}\n\nexport function treeFilter<F extends D = D>(\n item: F | F[],\n filter?: PropertyFilter | SelfFilter<F>,\n relation?: TreeRelation<F>,\n itemPrepare?: ItemPrepareFunction<F>,\n): F[] {\n return treeWrapper<F>(\n item,\n filter,\n relation,\n treeFilter_,\n itemPrepare,\n ) as F[];\n}\n\nexport function getChildren<F extends D = D>(\n item: F,\n relation: TreeRelation<F> = 'children',\n): F[] | undefined {\n let children: F[] = [];\n const relationFunction: RelationFunction<F> =\n typeof relation === 'function' ? relation : (i): F[] => i[relation];\n const relChild = relationFunction(item);\n if (relChild) {\n if (Array.isArray(relChild)) {\n children = relChild;\n } else {\n children.push(relChild);\n }\n }\n return relChild ? children : undefined;\n}\n\nfunction treeWrapper<F extends D = D>(\n item: F | F[],\n filter: PropertyFilter | SelfFilter<F> = (x: F): boolean => !!x,\n relation: TreeRelation<F> = 'children',\n treeFunction: TreeFunction<F>,\n itemPrepare?: ItemPrepareFunction<F>,\n): F[] | F | boolean | undefined {\n const filterFunction: SelfFilter<F> =\n typeof filter === 'function'\n ? filter\n : (i: F): boolean => propertiesFilter(i, filter);\n if (itemPrepare) {\n return treeFunction(\n item,\n (i: F): boolean => filterFunction(itemPrepare(i)),\n relation,\n );\n }\n return treeFunction(item, filterFunction, relation);\n}\n\nfunction treeFind_<F extends D = D>(\n item: F | F[],\n filterFunc: SelfFilter<F> = (x: F): boolean => !!x,\n relation: TreeRelation<F>,\n _filtered: F[] = [],\n): F | undefined {\n let children: F[] = [];\n if (Array.isArray(item)) {\n children = item;\n } else {\n const filter = filterFunc(item);\n if (filter) {\n return item;\n }\n const relChildren = getChildren(item, relation);\n if (relChildren) {\n children = relChildren;\n }\n }\n\n for (let fry = 0; fry < children.length; fry++) {\n if (children[fry]) {\n const result = treeFind_(children[fry], filterFunc, relation, _filtered);\n if (result) {\n return result;\n }\n }\n }\n}\n\nfunction treeFilter_<F extends D = D>(\n item: F | F[],\n filterFunc: SelfFilter<F> = (x: F): boolean => !!x,\n relation: TreeRelation<F>,\n _filtered: F[] = [],\n): F[] {\n let children: F[] = [];\n if (Array.isArray(item)) {\n children = item;\n } else {\n const filter = filterFunc(item);\n if (filter) {\n _filtered.push(item);\n }\n const relChildren = getChildren(item, relation);\n if (relChildren) {\n children = relChildren;\n }\n }\n\n for (let fry = 0; fry < children.length; fry++) {\n if (children[fry]) {\n treeFilter_(children[fry], filterFunc, relation, _filtered);\n }\n }\n\n return _filtered;\n}\n\nfunction treeEvery_<F extends D = D>(\n item: F | F[],\n filterFunc: SelfFilter<F> = (x: F): boolean => !!x,\n relation: TreeRelation<F>,\n _filtered: F[] = [],\n): boolean {\n let children: F[] = [];\n if (Array.isArray(item)) {\n children = item;\n } else {\n const filter = filterFunc(item);\n if (!filter) {\n return false;\n }\n const relChildren = getChildren(item, relation);\n if (relChildren) {\n children = relChildren;\n }\n }\n\n for (let fry = 0; fry < children.length; fry++) {\n if (children[fry]) {\n const res = treeEvery_(children[fry], filterFunc, relation, _filtered);\n if (!res) {\n return false;\n }\n }\n }\n\n return true;\n}\n","import { treeFind, treeFilter, treeEvery, treeSome } from '@nextgis/tree';\nimport { Item } from './Item';\nimport { ItemOptions } from './interfaces';\n\nexport class TreeHelper {\n item: Item;\n\n private _children: Item[] = [];\n private _parent?: Item;\n\n constructor(item: Item) {\n this.item = item;\n }\n\n setParent(parent: Item): void {\n this._parent = parent;\n }\n\n addChild(child: Item): void {\n this._children.push(child);\n }\n\n getParent(): Item | undefined {\n return this._parent;\n }\n\n getParents<I extends Item = Item>(filterFunc?: (item: I) => boolean): I[] {\n const parent = this.getParent() as I;\n if (parent) {\n return treeFilter<I>(\n parent,\n filterFunc,\n (x: I) => x.tree.getParent() as I,\n );\n }\n return [];\n }\n\n getRoot<I extends Item = Item>(): I | undefined {\n let parent = this.getParent() as I;\n let toReturn = parent;\n while (parent) {\n parent = parent.tree.getParent() as I;\n if (parent) {\n toReturn = parent;\n }\n }\n return toReturn;\n }\n\n find(filterFunc?: (item: Item) => boolean): Item<ItemOptions> | undefined {\n return treeFind(this._children, filterFunc, (x) => {\n return x.tree.getChildren();\n });\n }\n\n every<I extends Item = Item>(filterFunc?: (item: I) => boolean): boolean {\n return treeEvery(this._children as I[], filterFunc, (x) => {\n return x.tree.getChildren();\n });\n }\n\n some<I extends Item = Item>(filterFunc?: (item: I) => boolean): boolean {\n return treeSome(this._children as I[], filterFunc, (x) => {\n return x.tree.getChildren();\n });\n }\n\n // getDescendants shortcut\n all(filterFunc?: (item: Item) => boolean): any[] {\n return this.getDescendants(filterFunc);\n }\n\n getDescendants(filterFunc?: (item: Item) => boolean): any[] {\n return treeFilter(this._children, filterFunc, (x) => {\n return x.tree.getChildren();\n });\n }\n\n getChildren<T extends Item = Item>(): T[] {\n return [...this._children] as T[];\n }\n}\n","import { EventEmitter } from 'events';\nimport type { Item } from '../Item';\nimport type { ItemBasePropertyOptions, ItemOptions } from '../interfaces';\n\nexport abstract class BaseProperty<\n V = any,\n O extends ItemBasePropertyOptions<V> = ItemBasePropertyOptions<V>,\n I extends Item = Item,\n> {\n options: O;\n\n emitter = new EventEmitter();\n name: string;\n\n item: I;\n protected _blocked = false;\n protected _container?: HTMLElement;\n protected _value?: V;\n\n private _removeEventsListener?: () => void;\n\n constructor(name: string, item: I, options: O) {\n this.item = item;\n this.options = Object.assign({}, options);\n this.name = name;\n this._value = this.getProperty();\n }\n\n getProperty(): V | undefined {\n if (typeof this.options.getProperty === 'function') {\n return this.options.getProperty.call(this, this.item);\n }\n return this.options.value;\n }\n\n getParents(): Item[] {\n return this.item.tree.getParents() || [];\n }\n\n getParent(): Item<ItemOptions> | undefined {\n return this.item.tree.getParent();\n }\n\n getChildren(): Item<ItemOptions>[] {\n return this.item.tree.getChildren();\n }\n\n isGroup(): number {\n const children = this.item.tree.getDescendants();\n return children.length;\n }\n\n isBlocked(): boolean {\n if (this._blocked !== undefined) {\n return this._blocked;\n }\n\n const parents = this.item.tree.getParents();\n this._blocked = this._calculateBlockedStatus(parents);\n return this._blocked;\n }\n\n set(value?: V, options?: O): void {\n this._value = this._prepareValue(value);\n\n this.update(this._value, options);\n this._fireChangeEvent(this._value, options);\n }\n\n // shortcut for getValue\n get(): V | undefined {\n return this.getValue();\n }\n\n update(value?: V, options?: O): void {\n this._callOnSet(value, options);\n }\n\n getContainer(): HTMLElement | undefined {\n return this._container;\n }\n\n destroy(): void {\n if (this._container) {\n const parentNode = this._container.parentNode;\n if (parentNode) {\n parentNode.removeChild(this._container);\n }\n }\n if (this._removeEventsListener) {\n this._removeEventsListener();\n }\n }\n\n getValue(): V | undefined {\n return this._value !== undefined ? this._value : this.getProperty();\n }\n\n protected _prepareValue(value?: V): V | undefined {\n return value;\n }\n\n protected _callOnSet<W extends V = V>(value?: W, options?: O): void {\n if (this.options.onSet) {\n this.options.onSet.call(this, value, options, this.item);\n }\n }\n\n protected _fireChangeEvent(value?: V, options?: O): void {\n if (this.emitter) {\n value = value !== undefined ? value : this.getValue();\n this.emitter.emit('change', { value, options });\n const parents = this.item.tree.getParents();\n parents.forEach((x) => {\n const prop = x.properties && x.properties.property(this.name);\n if (prop) {\n prop.emitter.emit('change-tree', {\n value,\n options,\n item: this.item,\n });\n }\n });\n }\n }\n\n private _calculateBlockedStatus(parents: Item[]): boolean {\n const isBlocked = parents.some((parent: Item) => {\n const parentProp = parent.properties?.property(this.name);\n return parentProp ? !parentProp.get() : false;\n });\n\n return isBlocked;\n }\n}\n","import { BaseProperty } from './BaseProperty';\n\nimport type { Item } from '../Item';\nimport type { CheckOptions } from '../interfaces';\n\ntype VAL = boolean;\n\ntype PreparedValue = any;\n\nexport class CheckProperty<\n V extends VAL = VAL,\n O extends CheckOptions<VAL> = CheckOptions<VAL>,\n> extends BaseProperty<VAL, CheckOptions<VAL>> {\n static options: CheckOptions = {\n hierarchy: true,\n bubble: false,\n propagation: false,\n label: 'Toggle',\n // PropertyContainer: IndicatorContainer\n };\n\n constructor(name: string, item: Item, options: O) {\n super(name, item, { ...CheckProperty.options, ...options });\n this.set(this.get());\n }\n\n update(value?: V, options?: O): void {\n if (value) {\n const bubble = (options && options.bubble) || this.options.bubble;\n if (bubble) {\n this.unBlock(options);\n const parent = this.getParent();\n const property =\n parent && parent.properties && parent.properties.property(this.name);\n if (property) {\n property.set(\n value,\n Object.assign({}, options, { bubble: true, propagation: false }),\n );\n }\n }\n if (!this.isBlocked()) {\n this._turnOn(options);\n }\n } else {\n this._turnOff(options);\n }\n const propagation =\n (options && options.propagation) || this.options.propagation;\n if (propagation) {\n this._propagation(value, options);\n }\n }\n\n getHierarchyValue(): boolean | undefined {\n return (\n this.get() &&\n this.getParents().every((x) => {\n const property = x.properties && x.properties.get(this.name);\n return property && property.get();\n })\n );\n }\n\n block(options?: O): void {\n this._blocked = true;\n this._block(options);\n }\n\n unBlock(options?: O): void {\n this._blocked = false;\n if (this.getValue()) {\n this._unBlock(options);\n }\n }\n\n blockChild(options?: O): void {\n this.item.tree\n .getDescendants()\n .forEach((x) => this._blockChild(x, options));\n }\n\n unblockChild(options?: O): void {\n this.item.tree.getChildren().forEach((x) => this._unBlockChild(x, options));\n }\n\n protected _prepareValue(value?: PreparedValue): V | undefined {\n return value;\n }\n\n private _turnOff(options?: O): void {\n if (this.options.turnOff) {\n this.options.turnOff.call(this, options);\n }\n this._callOnSet(false, options);\n if (this.options.hierarchy && this.isGroup()) {\n this.blockChild(options);\n }\n }\n\n private _turnOn(options?: O): void {\n if (this.options.turnOn) {\n this.options.turnOn.call(this, options);\n }\n this._callOnSet(true, options);\n if (this.options.hierarchy && this.isGroup()) {\n this.unblockChild(options);\n }\n }\n\n private _block(options?: O): void {\n this._turnOff(options);\n }\n\n private _unBlock(options?: O): void {\n this._turnOn(options);\n }\n\n private _blockChild(item: Item, options?: O): void {\n const prop =\n item.properties &&\n (item.properties.property(this.name) as CheckProperty<V, O>);\n if (prop && prop.block) {\n prop.block(options);\n }\n }\n\n private _unBlockChild(item: Item, options?: O): void {\n const prop =\n item.properties &&\n (item.properties.property(this.name) as CheckProperty<V, O>);\n if (prop && prop.unBlock) {\n prop.unBlock(options);\n }\n }\n\n private _propagation(value?: V, options?: O): void {\n if (this.isGroup()) {\n const children = this.item.tree.getChildren();\n for (let fry = 0; fry < children.length; fry++) {\n const child = children[fry];\n const property =\n child.properties &&\n (child.properties.property(this.name) as CheckProperty<V, O>);\n if (property) {\n property.set(value, {\n ...options,\n ...{\n propagation: true,\n bubble: false,\n },\n });\n }\n }\n }\n }\n}\n","import { BaseProperty } from './BaseProperty';\nimport { CheckProperty } from './CheckProperty';\nimport { Item } from '../Item';\n\nimport {\n ItemBasePropertyOptions,\n Type,\n ItemPropertyConfig,\n ItemPropertyTypes,\n} from '../interfaces';\n\n// Constants for property types\nconst BOOLEAN_TYPE = 'boolean';\nconst STRING_TYPE = 'string';\n\nexport class ItemProperties {\n static handlers: Record<string, Type<BaseProperty>> = {\n CheckProperty,\n };\n\n options: Record<string, any> = {};\n\n private _properties: Record<string, BaseProperty> = {};\n private _propertiesList: string[] = [];\n\n constructor(\n public item: Item,\n propertiesList?: ItemPropertyConfig<keyof ItemPropertyTypes>[],\n ) {\n if (propertiesList) {\n propertiesList.forEach(this._setPropertyHandler.bind(this));\n }\n }\n\n add(propOpt: ItemPropertyConfig<keyof ItemPropertyTypes>): void {\n this._setPropertyHandler(propOpt);\n }\n\n update(): void {\n this.list().forEach((x) => x.update());\n }\n\n get(name: string): any {\n const prop = this.property(name);\n return prop ? prop.get() : undefined;\n }\n\n set<K extends keyof ItemPropertyTypes>(\n name: string,\n value: ItemPropertyTypes[K],\n options?: ItemBasePropertyOptions<ItemPropertyTypes[K]>,\n ): void {\n const prop = this.property(name);\n if (prop && prop.getValue() !== value) {\n prop.set(value, options);\n }\n }\n\n property(name: string): BaseProperty<any, ItemBasePropertyOptions<any>> {\n return this._properties[name];\n }\n\n list(): BaseProperty<any, ItemBasePropertyOptions<any>>[] {\n return this._propertiesList.map((name) => this._properties[name]);\n }\n\n destroy(): void {\n for (const name in this._properties) {\n const prop = this.property(name);\n if (prop && prop.destroy) {\n prop.destroy();\n }\n }\n this._properties = {};\n this._propertiesList = [];\n }\n\n private _setPropertyHandler(\n propOpt: ItemPropertyConfig<keyof ItemPropertyTypes>,\n ): void {\n const Handler = this._getHandler(propOpt);\n if (Handler && propOpt.name) {\n const options = { ...propOpt };\n this._properties[propOpt.name] = new Handler(\n propOpt.name,\n this.item,\n options,\n );\n this._propertiesList.push(propOpt.name);\n }\n }\n\n private _getHandler(\n propOpt: ItemPropertyConfig<keyof ItemPropertyTypes>,\n ): Type<BaseProperty> | undefined {\n const Handler = propOpt.handler;\n if (!Handler && propOpt.type) {\n switch (propOpt.type) {\n case BOOLEAN_TYPE:\n return ItemProperties.handlers.CheckProperty;\n case STRING_TYPE:\n default:\n return ItemProperties.handlers.BaseProperty;\n }\n }\n return Handler;\n }\n}\n","import { TreeHelper } from './TreeHelper';\nimport { ItemProperties } from './properties/ItemProperties';\nimport { ItemOptions } from './interfaces';\n\nlet ID = 0;\nexport class Item<O extends ItemOptions = ItemOptions> {\n options: O = {} as O;\n\n properties!: ItemProperties;\n tree: TreeHelper;\n id = ID;\n\n constructor(options?: O) {\n ID += 1;\n this.options = { ...options } as O;\n this.tree = new TreeHelper(this);\n }\n\n initProperties(): void {\n this.properties = new ItemProperties(this, this.options.properties);\n }\n}\n","import { BaseProperty } from '@nextgis/item';\nimport type { ItemBasePropertyOptions } from '../../../item/src/interfaces';\nimport type { NgwWebmapItem } from '../NgwWebmapItem';\n\ntype VAL = number;\n\nexport class WebmapLayerOpacityPropertyHandler<\n V extends VAL = VAL,\n> extends BaseProperty<VAL, ItemBasePropertyOptions<VAL>, NgwWebmapItem> {\n getProperty(): number {\n const layer = this.item.layer;\n if (layer) {\n return layer && layer.options && layer.options.opacity !== undefined\n ? layer.options.opacity\n : 1;\n }\n return 1;\n }\n\n update(value: V, options?: ItemBasePropertyOptions<VAL>): void {\n options = options || {};\n\n if (this.isGroup()) {\n this._value = this._prepareValue(value, options);\n const children = this.getChildren();\n for (const child of children) {\n const property = child.properties.property(this.name);\n if (property) {\n if (options.propagation) {\n property.set(value, options);\n } else {\n property.update(property.get(), options);\n }\n }\n }\n }\n const layer = this.item.layer;\n if (layer) {\n const parents = this.getParents();\n const coef = parents.reduce((s, x) => {\n const prop = x.properties.property(this.name);\n const multiplier = prop ? prop.getValue() : 1;\n return s * multiplier;\n }, 1);\n const val = value * coef;\n this.item.webMap.setLayerOpacity(layer, this._prepareValue(val));\n }\n }\n\n protected _prepareValue(\n value: number,\n options?: ItemBasePropertyOptions<VAL>,\n ): number {\n if (options && options.propagation && this.isGroup()) {\n return 1;\n }\n // value = Number(value);\n // return value < 0.1 ? 0.1 : value;\n return Number(value);\n }\n}\n","import { EventEmitter } from 'events';\nimport { Item } from '@nextgis/item';\nimport { treeSome } from '@nextgis/tree';\nimport {\n WebMap,\n LayerAdapter,\n ImageAdapterOptions,\n LayerAdapterDefinition,\n VectorAdapterOptions,\n} from '@nextgis/webmap';\nimport { objectAssign } from '@nextgis/utils';\n\nimport { setScaleRatio } from './utils/utils';\nimport { WebmapLayerOpacityPropertyHandler } from './utils/WebmapLayerOpacityPropertyHandler';\n\nimport type { ItemOptions } from '@nextgis/item';\nimport type NgwConnector from '@nextgis/ngw-connector';\nimport type { TreeGroup, TreeLayer, TreeItem } from './interfaces';\n\nexport class NgwWebmapItem extends Item<ItemOptions> {\n static GetAdapterFromLayerType: {\n [layerType: string]: (\n item: TreeItem,\n options: any,\n webMap: WebMap,\n connector?: NgwConnector,\n ) => LayerAdapterDefinition;\n } = {};\n\n static options: ItemOptions = {\n properties: [\n {\n type: 'boolean',\n name: 'visibility',\n getProperty(item?: NgwWebmapItem): boolean {\n if (item) {\n if (\n item.item.item_type === 'group' ||\n item.item.item_type === 'root'\n ) {\n return treeSome<TreeGroup | TreeLayer>(\n item.item,\n (i) => ('layer_enabled' in i ? i.layer_enabled : false),\n (i) => (i as TreeGroup).children,\n );\n } else if (item.item.item_type === 'layer') {\n return item.item.layer_enabled;\n }\n // else if (item.item.item_type === 'root') {\n // return true;\n // }\n }\n return false;\n },\n onSet(\n value: boolean,\n options?: Record<string, any>,\n item?: NgwWebmapItem,\n ): void {\n if (item && item.item.item_type === 'layer') {\n if (item.layer) {\n if (value) {\n item.webMap.showLayer(item.layer);\n } else {\n item.webMap.hideLayer(item.layer);\n }\n }\n item.item['layer_enabled'] = value;\n }\n },\n },\n {\n name: 'opacity',\n handler: WebmapLayerOpacityPropertyHandler,\n },\n ],\n };\n\n item: TreeGroup | TreeLayer;\n connector?: NgwConnector;\n layer?: LayerAdapter;\n readonly emitter = new EventEmitter();\n\n protected _rootDescendantsCount = 0;\n\n constructor(\n public webMap: WebMap,\n item: TreeGroup | TreeLayer,\n options?: ItemOptions,\n connector?: NgwConnector,\n parent?: NgwWebmapItem,\n noInit?: boolean,\n ) {\n super({ ...NgwWebmapItem.options, ...options });\n if (connector) {\n this.connector = connector;\n }\n if (parent) {\n this.tree.setParent(parent);\n }\n this.item = item;\n if (this.item.item_type === 'root') {\n this._rootDescendantsCount = this._sumUp(this.item.children);\n } else {\n const root = this.tree.getRoot<this>();\n if (root) {\n this._rootDescendantsCount = root._rootDescendantsCount;\n }\n }\n this.initProperties();\n if (!noInit) {\n this._init(item);\n }\n }\n\n static async create(\n webMap: WebMap,\n item: TreeGroup | TreeLayer,\n options?: ItemOptions,\n connector?: NgwConnector,\n parent?: NgwWebmapItem,\n ): Promise<NgwWebmapItem> {\n const ngwWebmapItem = new NgwWebmapItem(\n webMap,\n item,\n options,\n connector,\n parent,\n true,\n );\n await ngwWebmapItem._init(item);\n return ngwWebmapItem;\n }\n\n initItem(item: TreeGroup | TreeLayer): Promise<void> {\n const i = item;\n const options: Partial<ImageAdapterOptions> = this.getItemOptions(item);\n const setNewLayer = (l: LayerAdapter) => {\n i._layer = l;\n this.layer = l;\n const enabled = this.properties.get('visibility');\n if (enabled) {\n this.properties.set('visibility', true);\n }\n\n if (options.opacity !== undefined) {\n this.webMap.setLayerOpacity(l, options.opacity);\n }\n };\n\n if (item.item_type === 'group' || item.item_type === 'root') {\n if (item.children && item.children.length) {\n const children = this.getChildren(item);\n for (const x of children) {\n const children = new (this.constructor as typeof NgwWebmapItem)(\n this.webMap,\n x,\n this.options,\n this.connector,\n this,\n );\n this.tree.addChild(children);\n }\n }\n return Promise.resolve();\n } else {\n let adapter: LayerAdapterDefinition | undefined;\n if (item.item_type === 'layer') {\n adapter = item.adapter || item.layer_adapter.toUpperCase();\n } else if (NgwWebmapItem.GetAdapterFromLayerType[item.item_type]) {\n const getAdapter =\n NgwWebmapItem.GetAdapterFromLayerType[item.item_type];\n adapter = getAdapter(item, options, this.webMap, this.connector);\n }\n if (adapter) {\n return this.webMap.addLayer(adapter, options).then((newLayer) => {\n setNewLayer(newLayer);\n });\n }\n }\n if (item._layer) {\n return Promise.resolve(setNewLayer(item._layer));\n }\n return Promise.reject('No layer added');\n }\n\n bringToFront(): void {\n //\n }\n\n fit(): void {\n if (this.item.item_type === 'layer') {\n // console.log(this.item);\n }\n }\n\n getLayer() {\n return this.layer;\n }\n\n protected getItemOptions(item: TreeGroup | TreeLayer): Record<string, any> {\n const transparency = item.item_type === 'layer' && item.layer_transparency;\n const opacity =\n typeof transparency === 'number' ? (100 - transparency) / 100 : undefined;\n const options: Partial<ImageAdapterOptions> &\n Pick<VectorAdapterOptions, 'popupOptions'> = {\n visibility: false,\n headers: this.options.headers,\n crossOrigin: this.options.crossOrigin,\n setViewDelay: this.options.setViewDelay,\n params: { resource: this.item.resourceId, item: this.item },\n };\n if (this.options.order) {\n const subOrder =\n this.options.drawOrderEnabled && 'draw_order_position' in item\n ? this._rootDescendantsCount - item.draw_order_position\n : this.id;\n\n // 9 > 0009, 11 > 0011\n // TODO: find better way to set order in sub level, not limit by 1000 layer in group\n const subLevel = String(subOrder).padStart(4, '0');\n options.order = Number((this.options.order | 0) + '.' + subLevel);\n }\n if (this.options.popupOptions) {\n options.popupOptions = this.options.popupOptions;\n }\n if (item.item_type === 'layer') {\n const { maxZoom, minZoom } = this._getZoomRange(item);\n\n objectAssign(options, {\n updateWmsParams: item.updateWmsParams,\n url: item.url,\n headers: this.options.headers,\n ratio: this.options.ratio,\n maxZoom,\n minZoom,\n minScale: item.layer_min_scale_denom,\n maxScale: item.layer_max_scale_denom,\n });\n }\n if (opacity !== undefined) {\n options.opacity = opacity;\n }\n return options;\n }\n\n protected getChildren(item: TreeGroup): (TreeGroup | TreeLayer)[] {\n return [...item.children].reverse();\n }\n\n private _mapScaleToZoomLevel(scale: number) {\n return setScaleRatio(scale);\n }\n\n private _getZoomRange(item: TreeLayer) {\n const minZoomWebmap = this.options.minZoom;\n const maxZoomWebmap = this.options.maxZoom;\n\n const minZoomLayer = item.layer_min_scale_denom\n ? this._mapScaleToZoomLevel(item.layer_min_scale_denom)\n : undefined;\n const maxZoomLayer = item.layer_max_scale_denom\n ? this._mapScaleToZoomLevel(item.layer_max_scale_denom)\n : undefined;\n\n const minZooms = [minZoomWebmap, minZoomLayer].filter(Boolean) as number[];\n const maxZooms = [maxZoomWebmap, maxZoomLayer].filter(Boolean) as number[];\n const minZoom = minZooms.length ? Math.max(...minZooms) : undefined;\n const maxZoom = maxZooms.length ? Math.min(...maxZooms) : undefined;\n return { minZoom, maxZoom };\n }\n\n private _init(item: TreeGroup | TreeLayer) {\n this.initItem(item).then(() => {\n this.emitter.emit('init');\n });\n }\n\n private _sumUp(children: Array<TreeGroup | TreeLayer>, totalValue = 0) {\n for (const child of children) {\n if (child.item_type === 'layer') {\n totalValue += 1;\n child.draw_order_position = child.draw_order_position || totalValue;\n } else if (child.item_type === 'group') {\n totalValue = this._sumUp(child.children, totalValue);\n }\n }\n return totalValue;\n }\n}\n","import type { WebMap, MainLayerAdapter, AdapterOptions } from '@nextgis/webmap';\nimport type { Type } from '@nextgis/utils';\n\ninterface CreateOnFirstShowAdapterOptions {\n webMap: WebMap;\n adapterOptions?: Record<string, any>;\n onLayerAdded?: <L extends MainLayerAdapter = MainLayerAdapter>(\n layer: L,\n ) => void;\n createAdapter: (\n firstShowAdapter: FirstShowAdapter,\n ) => Promise<Type<MainLayerAdapter> | undefined>;\n}\n\ninterface FirstShowAdapter extends MainLayerAdapter {\n loadLayer: () => Promise<MainLayerAdapter[]>;\n destroyed: () => boolean;\n}\n\nexport async function createOnFirstShowAdapter({\n webMap,\n adapterOptions = {},\n onLayerAdded,\n createAdapter,\n}: CreateOnFirstShowAdapterOptions): Promise<Type<FirstShowAdapter>> {\n class OnFirstShowAdapter implements MainLayerAdapter {\n options: AdapterOptions = {};\n layer: MainLayerAdapter[] = [];\n _removed = false;\n _creatingInProgress = false;\n\n addLayer() {\n return this.layer;\n }\n\n removeLayer() {\n this._removed = true;\n for (const l of this.layer) {\n webMap.removeLayer(l);\n }\n }\n\n destroyed() {\n return this._removed;\n }\n\n async showLayer() {\n this.options.visibility = true;\n if (this.layer.length) {\n for (const x of this.layer) {\n await webMap.showLayer(x);\n }\n } else {\n await this.loadLayer();\n }\n }\n\n async hideLayer() {\n this.options.visibility = false;\n if (this.layer) {\n for (const x of this.layer) {\n await webMap.hideLayer(x);\n }\n }\n }\n\n async loadLayer() {\n if (!this.layer.length && !this._creatingInProgress) {\n this._creatingInProgress = true;\n const Adapter = await createAdapter(this);\n if (Adapter) {\n const adapter = new Adapter(webMap.mapAdapter.map, {\n ...adapterOptions,\n });\n const realLayer: MainLayerAdapter = await adapter.addLayer({\n order: this.options.order,\n headers: this.options.headers,\n baselayer: this.options.baselayer,\n });\n if (onLayerAdded) {\n onLayerAdded(adapter);\n }\n Object.assign(adapter.options, adapterOptions);\n adapter.layer = realLayer;\n if (this._removed) {\n webMap.removeLayer(adapter);\n }\n this.layer.push(adapter);\n if (this.options.visibility) {\n await webMap.showLayer(adapter);\n }\n this._creatingInProgress = false;\n }\n }\n return this.layer;\n }\n }\n return OnFirstShowAdapter;\n}\n","import { Type } from '@nextgis/utils';\nimport { WebMap, MainLayerAdapter } from '@nextgis/webmap';\nimport NgwConnector, { BasemapWebmapItem } from '@nextgis/ngw-connector';\nimport { createAsyncAdapter } from './createAsyncAdapter';\nimport { createOnFirstShowAdapter } from './createOnFirstShowAdapter';\n\ninterface CreateOnFirstShowAdapterOptions {\n webMap: WebMap;\n connector: NgwConnector;\n item: BasemapWebmapItem;\n adapterOptions?: Record<string, any>;\n idPrefix?: string;\n}\n\nexport async function createOnFirstShowNgwAdapter({\n webMap,\n connector,\n item,\n adapterOptions = {},\n idPrefix = 'first-show-adapter',\n}: CreateOnFirstShowAdapterOptions): Promise<Type<MainLayerAdapter>> {\n const createAdapter = () => {\n return createAsyncAdapter(\n {\n resource: item.resource_id,\n adapterOptions: {\n name: item.display_name,\n opacity: item.opacity,\n },\n },\n webMap,\n connector,\n );\n };\n const onLayerAdded = (adapter: MainLayerAdapter) => {\n adapter.options.baselayer = false;\n adapter.id = idPrefix + '-' + item.resource_id;\n };\n\n const OnFirstNgwShowAdapter = createOnFirstShowAdapter({\n webMap,\n adapterOptions,\n onLayerAdded,\n createAdapter,\n });\n\n return OnFirstNgwShowAdapter;\n}\n","import { Feature, Point } from 'geojson';\nimport { createGeoJsonFeature, fetchNgwLayerItem } from '@nextgis/ngw-kit';\nimport CancelablePromise from '@nextgis/cancelable-promise';\n\nimport type NgwConnector from '@nextgis/ngw-connector';\nimport type { FeatureItem } from '@nextgis/ngw-connector';\nimport type { LngLatBoundsArray } from '@nextgis/utils';\n\ninterface BookmarkItemOptions {\n connector: NgwConnector;\n resourceId: number;\n item: FeatureItem;\n labelField?: string;\n}\n\nexport class BookmarkItem {\n readonly name: string;\n readonly resourceId: number;\n readonly item: FeatureItem;\n\n private _extent?: LngLatBoundsArray;\n\n constructor(private options: BookmarkItemOptions) {\n this.resourceId = options.resourceId;\n const item = options.item;\n this.item = item;\n if (options.labelField && item.fields) {\n this.name = item.fields[options.labelField];\n } else {\n this.name = String(item.id);\n }\n }\n\n extent(): CancelablePromise<LngLatBoundsArray> {\n if (this._extent) {\n return CancelablePromise.resolve(this._extent);\n }\n return this.options.connector\n .get('feature_layer.feature.item_extent', null, {\n id: this.resourceId,\n fid: this.item.id,\n })\n .then((resp) => {\n const { minLat, minLon, maxLat, maxLon } = resp.extent;\n const lonLat = [minLon, minLat, maxLon, maxLat];\n this._extent = lonLat;\n return lonLat;\n });\n }\n\n geoJson(): CancelablePromise<Feature<Point, any>> {\n if (this.item.geom) {\n return CancelablePromise.resolve(createGeoJsonFeature(this.item));\n } else {\n return fetchNgwLayerItem({\n resourceId: this.resourceId,\n featureId: this.item.id,\n connector: this.options.connector,\n geom: true,\n fields: null,\n extensions: null,\n }).then((onlyGeomItem) => {\n const geom = onlyGeomItem.geom;\n this.item.geom = geom;\n return createGeoJsonFeature(this.item);\n });\n }\n }\n}\n","import { EventEmitter } from 'events';\n\nimport CancelablePromise from '@nextgis/cancelable-promise';\nimport { fixUrlStr } from '@nextgis/utils';\nimport {\n fetchNgwLayerItems,\n WEBMAP_BASELAYER_ID_PREFIX,\n} from '@nextgis/ngw-kit';\n\nimport { NgwWebmapItem } from './NgwWebmapItem';\nimport { createOnFirstShowNgwAdapter } from './adapters/createOnFirstShowNgwAdapter';\nimport { ngwApiToAdapterOptions } from './utils/ngwApiToAdapterOptions';\nimport { getNgwWebmapExtent } from './utils/fetchNgwExtent';\nimport { updateImageParams } from './utils/utils';\nimport { BookmarkItem } from './BookmarkItem';\n\nimport type StrictEventEmitter from 'strict-event-emitter-types';\nimport type { Type, LngLatBoundsArray } from '@nextgis/utils';\nimport type { ItemOptions } from '@nextgis/item';\nimport type {\n WebmapResource,\n BasemapWebmap,\n ResourceItem,\n} from '@nextgis/ngw-connector';\nimport type { WebMap, RasterAdapterOptions } from '@nextgis/webmap';\nimport type {\n TreeGroup,\n TreeLayer,\n ResourceAdapter,\n NgwLayerAdapterType,\n NgwWebmapAdapterOptions,\n NgwWebmapLayerAdapterEvents,\n} from './interfaces';\n\nexport class NgwWebmapLayerAdapter<M = any> implements ResourceAdapter<M> {\n layer?: NgwWebmapItem;\n\n NgwWebmapItem: Type<NgwWebmapItem> = NgwWebmapItem;\n /**\n * Radius for searching objects in pixels\n */\n pixelRadius = 10; // webmapSettings.identify_radius,\n resourceId!: number;\n webmapClassName = 'webmap';\n readonly emitter: StrictEventEmitter<\n EventEmitter,\n NgwWebmapLayerAdapterEvents\n > = new EventEmitter();\n protected _extent?: LngLatBoundsArray;\n\n private response?: ResourceItem;\n private _webmapLayersIds?: number[];\n private _webmapBaselayersIds: string[] = [];\n private _lastActiveBaselayer?: string;\n\n constructor(public map: M, public options: NgwWebmapAdapterOptions) {\n const r = options.resourceId;\n\n if (Array.isArray(r)) {\n this.resourceId = r[0];\n this.options.id = r[1];\n } else {\n this.resourceId = r;\n }\n\n if (!this.resourceId) {\n throw new Error('NGW `resourceId` is not defined');\n }\n }\n\n async addLayer(options: NgwWebmapAdapterOptions): Promise<any> {\n this.options = { ...this.options, ...options };\n this.layer = await this._getWebMapLayerItem();\n const extentConstrained = this.response?.webmap?.extent_constrained;\n if (\n this.options.useExtentConstrained &&\n this._extent &&\n extentConstrained\n ) {\n this.options.webMap.setView({ maxBounds: this._extent });\n }\n return this.layer;\n }\n\n removeLayer(): void {\n const mapAdapter = this.options.webMap.mapAdapter;\n\n this.getDependLayers().forEach((x) => {\n if (!('layer' in x)) return;\n // @ts-ignore Update x interface\n mapAdapter.removeLayer(x.layer.layer);\n });\n\n if (this._webmapBaselayersIds.length) {\n for (const b of this._webmapBaselayersIds) {\n this.options.webMap.removeLayer(b);\n }\n if (this._lastActiveBaselayer) {\n this.options.webMap.showLayer(this._lastActiveBaselayer);\n }\n }\n\n if (this.options.useExtentConstrained && this._extent) {\n this.options.webMap.setView({ maxBounds: null });\n }\n\n delete this.layer;\n delete this.response;\n delete this._webmapLayersIds;\n }\n\n async showLayer(): Promise<void> {\n if (this.layer && this.layer.properties) {\n return this.layer.properties.property('visibility').set(true);\n }\n }\n\n async hideLayer(): Promise<void> {\n if (this.layer && this.layer.properties) {\n return this.layer.properties.property('visibility').set(false);\n }\n }\n\n async setOpacity(val: number): Promise<void> {\n if (this.layer && this.layer.properties) {\n return this.layer.properties.property('opacity').set(val);\n }\n }\n\n /** @deprecated use {@link NgwWebmapLayerAdapter.getBounds} instead */\n getExtent(): LngLatBoundsArray | undefined {\n return this.getBounds();\n }\n\n getBounds(): LngLatBoundsArray | undefined {\n const webmap = this.response && this.response.webmap;\n if (webmap) {\n return getNgwWebmapExtent(webmap);\n }\n }\n\n getDependLayers(): Array<NgwWebmapItem> {\n return (this.layer && this.layer.tree.getDescendants()) || [];\n }\n\n getBookmarksResourceId(): number | undefined {\n const webmap = this.response && this.response.webmap;\n if (webmap) {\n return webmap.bookmark_resource.id;\n }\n }\n\n fetchBookmarks(): CancelablePromise<BookmarkItem[]> {\n const bookmarkResId = this.getBookmarksResourceId();\n const connector = this.options.connector;\n if (bookmarkResId) {\n return connector.getResourceOrFail(bookmarkResId).then((item) => {\n const labelField = item.feature_layer?.fields.find(\n (x) => x.label_field,\n );\n const keyname = labelField && labelField.keyname;\n return fetchNgwLayerItems({\n connector,\n resourceId: bookmarkResId,\n geom: false,\n fields: keyname ? [keyname] : undefined,\n }).then((items) => {\n const bookmarks: BookmarkItem[] = [];\n for (const i of items) {\n const bookmark = new BookmarkItem({\n item: i,\n resourceId: bookmarkResId,\n labelField: keyname,\n connector,\n });\n bookmarks.push(bookmark);\n }\n return bookmarks;\n });\n });\n }\n throw new Error(\n 'Webmap was not loaded correctly, it is impossible to extract bookmarks',\n );\n }\n\n async getIdentificationIds(): Promise<number[]> {\n const visibleLayers: number[] = [];\n let ids = this._webmapLayersIds;\n if (!ids) {\n ids = await this._getWebMapIds();\n this._webmapLayersIds = ids;\n }\n if (ids && ids.length) {\n let deps = this.getDependLayers();\n deps = deps.sort((a, b) => b.id - a.id);\n deps.forEach((x) => {\n const item = x.item;\n const parentId = item.parentId;\n if (parentId !== undefined && item.item_type === 'layer') {\n const visible = x.properties.property('visibility');\n const isVisible = visible.get() && !visible.isBlocked();\n if (isVisible) {\n visibleLayers.push(parentId);\n }\n }\n });\n }\n return visibleLayers;\n }\n\n protected async _getWebMapLayerItem(): Promise<NgwWebmapItem | undefined> {\n if (this.resourceId) {\n const webmap = await this.getWebMapConfig(this.resourceId);\n if (webmap && webmap.root_item) {\n return new Promise<NgwWebmapItem>((resolve) => {\n const options: ItemOptions = {};\n if (this.options.connector && this.options.connector.options.auth) {\n const headers = this.options.connector.getAuthorizationHeaders();\n if (headers) {\n options.headers = headers;\n }\n }\n options.setViewDelay = this.options.setViewDelay;\n options.order = this.options.order;\n options.ratio = this.options.ratio;\n options.crossOrigin = this.options.crossOrigin;\n options.minZoom = this.options.minZoom;\n options.maxZoom = this.options.maxZoom;\n options.drawOrderEnabled = webmap.draw_order_enabled;\n options.popupOptions = this.options.popupOptions;\n const layer = new this.NgwWebmapItem(\n this.options.webMap,\n webmap.root_item,\n options,\n this.options.connector,\n );\n layer.emitter.on('init', () => resolve(layer));\n });\n }\n }\n }\n\n private async getWebMapConfig(id: number) {\n const data = await this.options.connector.getResource(id);\n if (data) {\n this.response = data;\n const webmap = data[\n this.webmapClassName as keyof ResourceItem\n ] as WebmapResource;\n this._setupBaselayers(data);\n if (webmap) {\n this._extent = [\n webmap.extent_left,\n webmap.extent_bottom,\n webmap.extent_right,\n webmap.extent_top,\n ];\n this._updateItemsParams(webmap.root_item, this.options.webMap, data);\n return webmap;\n } else {\n // TODO: resource is no webmap\n }\n }\n }\n\n private _setupBaselayers(data: ResourceItem) {\n const webMap = this.options.webMap;\n const basemap = this.options.useBasemap ?? true;\n if (basemap) {\n if (data.basemap_webmap && data.basemap_webmap.basemaps.length) {\n const activeBaselayer = webMap.getActiveBaseLayer();\n this._lastActiveBaselayer = activeBaselayer\n ? activeBaselayer.id\n : undefined;\n this._setBasemaps(data.basemap_webmap);\n } else if (this.options.defaultBasemap) {\n webMap.addBaseLayer('OSM', {\n id: 'webmap-default-baselayer',\n name: 'OpenStreetMap',\n });\n }\n }\n }\n\n private _setBasemaps(baseWebmap: BasemapWebmap) {\n const webMap = this.options.webMap;\n // to avoid set many basemaps on init\n let enabledAlreadySet = false;\n for (const x of baseWebmap.basemaps) {\n createOnFirstShowNgwAdapter({\n webMap,\n connector: this.options.connector,\n item: x,\n adapterOptions: { crossOrigin: this.options.crossOrigin },\n }).then((adapter) => {\n const visibility = enabledAlreadySet ? false : x.enabled;\n if (x.enabled) {\n enabledAlreadySet = true;\n }\n return webMap\n .addBaseLayer(adapter, {\n id: WEBMAP_BASELAYER_ID_PREFIX + x.resource_id,\n name: x.display_name,\n opacity: x.opacity,\n visibility,\n })\n .then((l) => {\n l.id && this._webmapBaselayersIds.push(l.id);\n });\n });\n }\n }\n\n private _updateItemsParams(\n item: TreeGroup | TreeLayer,\n webMap: WebMap,\n data: ResourceItem,\n ) {\n if (item) {\n if (item.item_type === 'group' || item.item_type === 'root') {\n if (item.children) {\n item.children = item.children.map((x) =>\n this._updateItemsParams(x, webMap, data),\n );\n }\n if (item.item_type === 'root') {\n item.display_name = data.resource.display_name;\n }\n } else if (item.item_type === 'layer') {\n const url = fixUrlStr(\n this.options.connector.options.baseUrl +\n '/api/component/render/image',\n );\n const resourceId = item.layer_style_id;\n item.url = url;\n item.resourceId = resourceId;\n item.updateWmsParams = (params) =>\n updateImageParams(params, resourceId);\n const adapter = item.layer_adapter.toUpperCase() as NgwLayerAdapterType;\n const layerAdapterOptions = ngwApiToAdapterOptions({\n options: {\n adapter,\n resource: resourceId,\n },\n webMap,\n baseUrl: this.options.connector.options.baseUrl || '',\n }) as RasterAdapterOptions;\n item = {\n ...item,\n ...layerAdapterOptions,\n };\n }\n }\n return item;\n }\n\n private async _getWebMapIds(): Promise<number[] | undefined> {\n const webMapItem = this.layer;\n if (webMapItem && webMapItem.item.item_type === 'root') {\n const layers = webMapItem.tree.getDescendants();\n const promises: Array<CancelablePromise<any>> = [];\n for (const x of layers) {\n const item = x.item;\n if (item.item_type === 'layer') {\n const id = item.layer_style_id;\n const promise = this.options.connector.getResource(id).then((y) => {\n if (y) {\n const parentId = Number(y.resource.parent.id);\n item.parentId = parentId;\n return parentId;\n }\n });\n promises.push(promise);\n }\n }\n const ids = await Promise.all(promises);\n return ids.filter((x) => x !== undefined);\n }\n }\n}\n","import { NgwWebmapLayerAdapter as NWLayerAdapter } from '../NgwWebmapLayerAdapter';\nimport { resourceIdFromLayerOptions } from '../utils/resourceIdFromLayerOptions';\n\nimport type { Type } from '@nextgis/utils';\nimport type { GetClassAdapterOptions } from '../interfaces';\n\nexport async function createWebMapAdapter({\n layerOptions: options,\n webMap,\n connector,\n}: GetClassAdapterOptions): Promise<Type<NWLayerAdapter>> {\n const resourceId = await resourceIdFromLayerOptions(options, connector);\n return class NgwWebmapLayerAdapter extends NWLayerAdapter {\n constructor(map: any) {\n super(map, {\n url: '',\n webMap,\n resourceId,\n connector,\n });\n }\n };\n}\n","import type { LayerAdaptersOptions, AdapterOptions } from '@nextgis/webmap';\n\nimport type { QmsBasemap, QmsLayerType } from '../interfaces';\n\nexport const alias: { [key in QmsLayerType]: keyof LayerAdaptersOptions } = {\n tms: 'TILE',\n};\n\nexport function updateQmsOptions(\n qms: QmsBasemap,\n): AdapterOptions & { url: string } {\n const protocol = (location.protocol === 'https:' ? 'https' : 'http') + '://';\n let serviceUrl = qms.url.replace(/^(https?|ftp):\\/\\//, protocol);\n if (!qms.y_origin_top) {\n serviceUrl = serviceUrl.replace('{y}', '{-y}');\n }\n return {\n url: serviceUrl,\n name: qms.name,\n attribution: qms.copyright_text,\n maxZoom: qms.z_max,\n minZoom: qms.z_min,\n };\n}\n","import { fixUrlStr } from '@nextgis/utils';\n\nexport function loadJson<T = any>(url: string): Promise<T> {\n return new Promise<T>((resolve, reject) => {\n const xmlHttp = new XMLHttpRequest();\n xmlHttp.onreadystatechange = () => {\n if (xmlHttp.readyState === 4 && xmlHttp.status === 200) {\n if (xmlHttp.responseText) {\n try {\n resolve(JSON.parse(xmlHttp.responseText));\n } catch (er) {\n reject(er);\n }\n }\n }\n };\n xmlHttp.open('GET', fixUrlStr(url), true); // true for asynchronous\n xmlHttp.send();\n });\n}\n","export function getSubdomainsOriginUrl(originUrl: string): [string, string[]] {\n const submodules: string[] = [];\n originUrl = originUrl.replace(/{switch:(.*?)}/, (m, group) => {\n if (typeof group === 'string') {\n group.split(',').forEach((s) => submodules.push(s));\n }\n return '{s}';\n });\n return [originUrl, submodules];\n}\n","import { mixinProperties } from '@nextgis/utils';\nimport { alias, updateQmsOptions } from './updateQmsOptions';\nimport { loadJson } from './loadJson';\nimport { getSubdomainsOriginUrl } from './getSubmodulesFromOriginUrl';\n\nimport type { Type } from '@nextgis/utils';\nimport type { WebMap, MainLayerAdapter } from '@nextgis/webmap';\nimport type {\n QmsAdapterOptions,\n QmsBasemap,\n QmsAdapter as QA,\n CreateQmsAdapterOptions,\n} from '../interfaces';\n\nconst URL = 'https://qms.nextgis.com';\n\nexport function createQmsAdapter(\n options: CreateQmsAdapterOptions,\n): Type<MainLayerAdapter>;\nexport function createQmsAdapter(\n webMap: WebMap,\n url?: string,\n createOpt?: Partial<QmsAdapterOptions>,\n): Type<MainLayerAdapter>;\nexport function createQmsAdapter(\n webMapOrOptions: WebMap | CreateQmsAdapterOptions,\n url = URL,\n createOpt: Partial<QmsAdapterOptions> = {},\n): Type<MainLayerAdapter> {\n let webMap: WebMap;\n if ('webMap' in webMapOrOptions) {\n const { webMap: webMap_, url: url_, ...adapterOptions } = webMapOrOptions;\n webMap = webMap_;\n if (url_) {\n url = url_;\n }\n if (adapterOptions) {\n createOpt = adapterOptions;\n }\n } else {\n webMap = webMapOrOptions;\n }\n\n if (!url) {\n url = URL;\n }\n class QmsAdapter<M = any> implements MainLayerAdapter<M>, QA {\n qms?: QmsBasemap;\n\n options: QmsAdapterOptions;\n map: M;\n\n constructor(map: M, options: QmsAdapterOptions) {\n this.map = map;\n const opt = { ...createOpt, ...options };\n this.options = opt;\n this.options.baselayer = true;\n if (opt.qms) {\n this.qms = opt.qms;\n }\n }\n\n async addLayer(options: QmsAdapterOptions): Promise<any> {\n // qmsId for request, id for store\n if (!this.qms && options.qmsId) {\n try {\n this.qms = await loadJson<QmsBasemap>(\n url + '/api/v1/geoservices/' + options.qmsId,\n );\n } catch (er) {\n console.error(er);\n }\n }\n const qms = this.qms;\n if (qms) {\n const type = alias[qms.type || 'tms'];\n const WebMapAdapter = webMap.mapAdapter.layerAdapters[type];\n if (WebMapAdapter) {\n mixinProperties(QmsAdapter, WebMapAdapter, [\n 'showLayer',\n 'hideLayer',\n ]);\n if (type === 'TILE') {\n options = {\n order: 0,\n maxZoom: webMap.options.maxZoom,\n minZoom: webMap.options.minZoom,\n ...this.options,\n ...updateQmsOptions(qms),\n };\n if (qms.origin_url) {\n const [url, subdomains] = getSubdomainsOriginUrl(qms.origin_url);\n if (subdomains.length) {\n options.subdomains = subdomains;\n options.url = url;\n }\n }\n this.options = options;\n const adapter = new WebMapAdapter(this.map, options);\n return adapter.addLayer(options);\n }\n }\n }\n }\n }\n return QmsAdapter;\n}\n","import { createQmsAdapter } from './utils/createQmsAdapter';\n\nimport type { Type } from '@nextgis/utils';\nimport type {\n WebMap,\n StarterKit,\n MainLayerAdapter,\n LayerAdapterCreators,\n} from '@nextgis/webmap';\nimport type { QmsOptions } from './interfaces';\n\nexport class QmsKit implements StarterKit {\n static utils = {\n createQmsAdapter,\n };\n\n options: QmsOptions = {\n url: 'https://qms.nextgis.com',\n };\n\n url: string;\n\n constructor(options?: QmsOptions) {\n this.options = { ...this.options, ...options };\n this.url = this.options.url;\n }\n\n getLayerAdapters(): Promise<LayerAdapterCreators[]> {\n return Promise.resolve([\n {\n name: 'QMS',\n createAdapter: (webmap: WebMap) =>\n Promise.resolve(this._createAdapter(webmap)),\n },\n ]);\n }\n\n private _createAdapter(webMap: WebMap): Type<MainLayerAdapter> {\n return createQmsAdapter({ webMap, url: this.url });\n }\n}\n","import { QmsKit } from '@nextgis/qms-kit';\n\nimport type { Type } from '@nextgis/utils';\nimport type { MainLayerAdapter, TileAdapterOptions } from '@nextgis/webmap';\nimport type { GetClassAdapterOptions } from '../interfaces';\n\nexport async function createBasemapLayerAdapter({\n webMap,\n item,\n}: GetClassAdapterOptions): Promise<Type<MainLayerAdapter> | undefined> {\n if (item.basemap_layer) {\n const qms = item.basemap_layer.qms;\n const url = item.basemap_layer.url;\n if (qms) {\n const qms_ = JSON.parse(qms);\n const adapter = Promise.resolve(\n QmsKit.utils.createQmsAdapter(webMap, undefined, {\n qms: qms_,\n baselayer: true,\n }),\n );\n return adapter;\n } else if (url) {\n const TileAdapter = webMap.mapAdapter.layerAdapters.TILE as Type<\n MainLayerAdapter<any, any, TileAdapterOptions>\n >;\n if (TileAdapter) {\n class BasemapTileAdapter extends TileAdapter {\n async addLayer(opt: TileAdapterOptions) {\n return super.addLayer({ ...opt, url });\n }\n }\n return BasemapTileAdapter;\n }\n }\n }\n}\n","import NgwConnector, {\n ResourceCls,\n ResourceItem,\n} from '@nextgis/ngw-connector';\nimport { WebMap } from '@nextgis/webmap';\nimport { Type, applyMixins } from '@nextgis/utils';\n\nimport { vectorLayerGeomToPaintTypeAlias } from '../utils/utils';\nimport { NgwResource } from '../NgwResource';\nimport { createGeoJsonAdapter } from './createGeoJsonAdapter';\nimport { createRasterAdapter } from './createRasterAdapter';\nimport { createWebMapAdapter } from './createNgwWebmapAdapter';\nimport { resourceIdFromLayerOptions } from '../utils/resourceIdFromLayerOptions';\nimport { createBasemapLayerAdapter } from './createBasemapLayerAdapter';\n\nimport type {\n GetClassAdapterCallback,\n GetClassAdapterOptions,\n GetClassAdapterByType,\n ResourceAdapter,\n NgwLayerOptions,\n GetClassAdapter,\n ClassAdapter,\n} from '../interfaces';\n\nexport const classAdapters: Record<string, GetClassAdapter> = {};\n\nconst supportCls: ResourceCls[] = [\n 'mapserver_style',\n 'qgis_vector_style',\n 'qgis_raster_style',\n 'wmsserver_service',\n 'raster_style',\n 'basemap_layer',\n 'vector_layer',\n 'raster_layer',\n 'postgis_layer',\n 'webmap',\n // in tms branch\n 'tmsclient_layer',\n];\n\nasync function createAdapterFromFirstStyle({\n layerOptions,\n webMap,\n connector,\n item,\n}: GetClassAdapterOptions) {\n const parent = item.resource.id;\n const childrenStyles = await connector.getResourceChildren(parent);\n const firstStyle = childrenStyles && childrenStyles[0];\n if (firstStyle) {\n return createAsyncAdapter(\n { ...layerOptions, resource: firstStyle.resource.id },\n webMap,\n connector,\n );\n }\n}\n\nexport async function createAsyncAdapter(\n options: NgwLayerOptions,\n webMap: WebMap,\n connector: NgwConnector,\n): Promise<Type<ResourceAdapter> | undefined> {\n let adapter: ClassAdapter | undefined;\n let item: ResourceItem | undefined;\n const adapterType = options.adapter;\n const resourceId = await resourceIdFromLayerOptions(options, connector);\n if (resourceId) {\n const resourceOptions = options as NgwLayerOptions;\n const itemFromResOpt = resourceOptions.resource as ResourceItem;\n if (\n itemFromResOpt &&\n itemFromResOpt.resource &&\n itemFromResOpt.resource.id !== undefined\n ) {\n item = itemFromResOpt;\n } else {\n item = await connector.getResource(resourceId);\n }\n if (item) {\n const cls = item.resource.cls;\n const layerOptions: NgwLayerOptions = {\n ...options,\n resource: resourceId,\n };\n\n const adapterOptions: GetClassAdapterOptions = {\n layerOptions,\n webMap,\n connector,\n item,\n };\n\n if (supportCls.indexOf(cls) !== -1) {\n if (cls === 'webmap') {\n adapter = createWebMapAdapter(adapterOptions);\n } else if (cls === 'vector_layer' || cls === 'postgis_layer') {\n const type =\n item.vector_layer &&\n vectorLayerGeomToPaintTypeAlias[item.vector_layer.geometry_type];\n const adapterOptions_ =\n adapterOptions.layerOptions.adapterOptions || {};\n adapterOptions_.type = adapterOptions_.type || type;\n adapterOptions.layerOptions.adapterOptions = adapterOptions_;\n options.adapterOptions = adapterOptions;\n if (adapterType !== undefined && adapterType !== 'GEOJSON') {\n if (adapterType === 'MVT') {\n adapter = createRasterAdapter(adapterOptions);\n } else {\n return createAdapterFromFirstStyle(adapterOptions);\n }\n } else {\n adapter = createGeoJsonAdapter(adapterOptions);\n }\n } else if (cls === 'raster_layer') {\n return createAdapterFromFirstStyle(adapterOptions);\n } else if (cls === 'basemap_layer') {\n adapter = createBasemapLayerAdapter(adapterOptions);\n } else {\n if (adapterType === 'GEOJSON') {\n const parentItem = await connector.getResource(\n item.resource.parent.id,\n );\n if (parentItem) {\n const parentOptions: NgwLayerOptions = {\n ...options,\n resource: item.resource.parent.id,\n };\n adapter = createGeoJsonAdapter({\n ...adapterOptions,\n item: parentItem,\n layerOptions: parentOptions,\n });\n }\n } else {\n adapter = createRasterAdapter(adapterOptions);\n }\n }\n } else if (classAdapters[cls]) {\n const getClassAdapter = classAdapters[cls];\n let classAdapter: GetClassAdapterCallback | undefined;\n if (adapterType && typeof classAdapter !== 'function') {\n classAdapter = (getClassAdapter as GetClassAdapterByType)[\n adapterType\n ];\n } else {\n classAdapter = getClassAdapter as GetClassAdapterCallback;\n }\n if (classAdapter) {\n adapter = classAdapter(adapterOptions);\n }\n } else {\n throw `Resource class '${cls}' not yet supported.`;\n }\n } else {\n throw 'Resource item is not found';\n }\n }\n\n if (adapter) {\n return adapter.then((x) => {\n if (x) {\n const resourceAdapter = x as Type<ResourceAdapter>;\n if (item) {\n resourceAdapter.prototype.item = item;\n resourceAdapter.prototype.resourceId = item.resource.id;\n resourceAdapter.prototype.connector = connector;\n }\n\n applyMixins(resourceAdapter, [NgwResource], { replace: false });\n return resourceAdapter;\n }\n });\n }\n}\n","import NgwConnector, { GeometryType } from '@nextgis/ngw-connector';\nimport { createAsyncAdapter } from '../adapters/createAsyncAdapter';\nimport { NgwWebmapLayerAdapter } from '../NgwWebmapLayerAdapter';\n\nimport type { Type } from '@nextgis/utils';\nimport type { WebMap, VectorAdapterLayerType } from '@nextgis/webmap';\nimport type {\n ResourceAdapter,\n NgwLayerOptions,\n NgwWebmapAdapterOptions,\n} from '../interfaces';\n\nexport function updateImageParams(\n params: Record<string, any>,\n resourceId: number | number[],\n): Record<string, any> {\n const { bbox, width, height, nd } = params;\n return {\n resource: Array.isArray(resourceId) ? resourceId.join(',') : resourceId,\n extent: bbox,\n size: width + ',' + height,\n timestamp: Date.now(),\n nd: nd ?? 200,\n };\n}\n\nexport const vectorLayerGeomToPaintTypeAlias: Record<\n GeometryType,\n VectorAdapterLayerType\n> = {\n POINT: 'point',\n LINESTRING: 'line',\n POLYGON: 'polygon',\n MULTIPOINT: 'point',\n MULTILINESTRING: 'line',\n MULTIPOLYGON: 'polygon',\n POINTZ: 'point',\n LINESTRINGZ: 'line',\n POLYGONZ: 'polygon',\n MULTIPOINTZ: 'point',\n MULTILINESTRINGZ: 'line',\n MULTIPOLYGONZ: 'polygon',\n};\n\nexport function createNgwLayerAdapter(\n options: NgwLayerOptions,\n webMap: WebMap,\n connector: NgwConnector,\n): Promise<Type<ResourceAdapter> | undefined> {\n const headers = connector.getAuthorizationHeaders();\n if (headers) {\n options.headers = headers;\n }\n\n return createAsyncAdapter(options, webMap, connector);\n}\n\n/** @deprecated use {@link createNgwLayerAdapter} instead */\nexport function addNgwLayer(\n options: NgwLayerOptions,\n webMap: WebMap,\n connector: NgwConnector,\n): Promise<Type<ResourceAdapter> | undefined> {\n return createNgwLayerAdapter(options, webMap, connector);\n}\n\nexport interface ExtendNgwWebmapLayerAdapterOptions {\n webMap: WebMap;\n connector: NgwConnector;\n baseUrl?: string;\n}\n\nexport function extendNgwWebmapLayerAdapter(\n opt: ExtendNgwWebmapLayerAdapterOptions,\n): Type<NgwWebmapLayerAdapter> {\n class A extends NgwWebmapLayerAdapter {\n constructor(map: any, options: NgwWebmapAdapterOptions) {\n options = { ...opt, ...options };\n super(map, options);\n }\n }\n return A;\n}\n\nlet _pixelsInMeter: number;\n\nexport function pixelsInMeterWidth(): number {\n if (_pixelsInMeter === undefined) {\n const div = document.createElement('div');\n div.style.cssText =\n 'position: absolute; left: -100%; top: -100%; width: 100cm;';\n document.body.appendChild(div);\n const px = div.offsetWidth;\n document.body.removeChild(div);\n _pixelsInMeter = px;\n }\n return _pixelsInMeter;\n}\n\n// Returns width of map in meters on specified latitude.\nexport function getMapWidthForLanInMeters(lat: number): number {\n return 6378137 * 2 * Math.PI * Math.cos((lat * Math.PI) / 180);\n}\n\nexport function getZoomFromScale(scale: number): number {\n return Math.log(scale / 256) / Math.LN2;\n}\n\nexport function setScaleRatio(scale: number, lat = 0): number {\n // TODO: get real center\n // webmap does not contain center yet\n // const center = [104, 45]; // this.webMap.getCenter();\n\n const centerLat = lat;\n const crsScale =\n (pixelsInMeterWidth() * getMapWidthForLanInMeters(centerLat)) / scale;\n const zoom = getZoomFromScale(crsScale);\n return zoom;\n\n // return Math.round(Math.log(591657550.5 / (scale / 2)) / Math.log(2));\n}\n","import NgwConnector from '@nextgis/ngw-connector';\n\nimport { extendNgwWebmapLayerAdapter } from './utils/utils';\nimport { NgwWebmapLayerAdapter } from './NgwWebmapLayerAdapter';\nimport { classAdapters } from './adapters/createAsyncAdapter';\n\nimport type { Type } from '@nextgis/utils';\nimport type { WebMap, StarterKit, LayerAdapterCreators } from '@nextgis/webmap';\nimport type {\n NgwKitOptions,\n GetClassAdapter,\n NgwWebmapAdapterOptions,\n} from './interfaces';\n\nexport class NgwKit implements StarterKit {\n url: string;\n connector: NgwConnector;\n webMap?: WebMap;\n\n constructor(public options: NgwKitOptions) {\n if (this.options.connector) {\n this.url = this.options.connector.options.baseUrl || '';\n this.connector = this.options.connector;\n } else {\n if (this.options.baseUrl) {\n this.url = this.options.baseUrl;\n } else {\n throw new Error('url is not defined');\n }\n this.connector = new NgwConnector({\n baseUrl: this.url,\n auth: this.options.auth,\n });\n }\n }\n\n static addClassAdapters(cls: string, adapter: GetClassAdapter): void {\n classAdapters[cls] = adapter;\n }\n\n async onLoadSync(webMap: WebMap): Promise<NgwWebmapLayerAdapter | undefined> {\n if (this.options.resourceId && this.url) {\n // TODO: resources from array\n const resourceIds = [this.options.resourceId];\n\n if (resourceIds.length) {\n for (const r of resourceIds) {\n const options: Partial<NgwWebmapAdapterOptions> = {\n resourceId: r,\n connector: this.connector,\n webMap,\n };\n const layer = (await webMap.addLayer(NgwWebmapLayerAdapter, {\n visibility: true,\n fit: true,\n pixelRadius: this.options.pixelRadius,\n ...options,\n })) as NgwWebmapLayerAdapter;\n return layer;\n }\n }\n }\n }\n\n getLayerAdapters(): Promise<LayerAdapterCreators[]> {\n return Promise.resolve([this._getLayerAdapter()]);\n }\n\n private _getLayerAdapter() {\n return {\n name: 'WEBMAP',\n createAdapter: (webmap: WebMap) =>\n Promise.resolve(this._createAdapter(webmap)),\n };\n }\n\n private _createAdapter(webMap: WebMap): Type<NgwWebmapLayerAdapter> {\n const connector = this.connector;\n const baseUrl = this.url;\n return extendNgwWebmapLayerAdapter({\n webMap,\n connector,\n baseUrl,\n });\n }\n}\n","import {\n fetchNgwLayerItem,\n IdentifyItemOptions,\n fetchNgwLayerItemExtent,\n} from '.';\nimport CancelablePromise from '@nextgis/cancelable-promise';\n\nimport type { NgwFeatureItemResponse } from '.';\nimport type { GeoJsonObject, Geometry, Feature } from 'geojson';\nimport type {\n VectorLayerResourceItem,\n FeatureItemExtensions,\n FeatureResource,\n LayerFeature,\n} from '@nextgis/ngw-connector';\nimport type NgwConnector from '@nextgis/ngw-connector';\nimport type { FeatureProperties, LngLatBoundsArray } from '@nextgis/utils';\nimport type { FetchNgwItemOptions } from './interfaces';\n\nexport class IdentifyItem<\n F extends FeatureProperties = FeatureProperties,\n G extends Geometry = Geometry,\n> implements LayerFeature\n{\n readonly id: number;\n readonly label: string;\n readonly layerId: number;\n readonly parent: string;\n readonly fields: FeatureProperties;\n geom?: GeoJsonObject;\n extensions?: FeatureItemExtensions;\n\n private connector: NgwConnector;\n private _item?: NgwFeatureItemResponse<F, G>;\n private _geojson?: Feature<G, F>;\n private _resource?: VectorLayerResourceItem;\n private _extent?: LngLatBoundsArray;\n\n constructor(options: IdentifyItemOptions) {\n const f = options.feature;\n this.id = f.id;\n this.geom = f.geom;\n this.label = f.label;\n this.parent = f.parent;\n this.fields = f.fields;\n this.layerId = f.layerId;\n this.connector = options.connector;\n }\n\n identify(\n options: Partial<FetchNgwItemOptions<F>> = {},\n ): CancelablePromise<NgwFeatureItemResponse<F, G>> {\n if (this._item) {\n return CancelablePromise.resolve(this._item);\n }\n return fetchNgwLayerItem<G, F>({\n connector: this.connector,\n featureId: this.id,\n resourceId: this.layerId,\n fields: null,\n extensions: ['attachment', 'description'],\n ...options,\n }).then((resp) => {\n this._item = resp;\n this.geom = resp.geom;\n this.extensions = resp.extensions;\n return resp;\n });\n }\n\n resource(): CancelablePromise<FeatureResource> {\n if (this._resource) {\n return CancelablePromise.resolve(this._resource.feature_layer);\n }\n return this.connector.getResource(this.layerId).then((resp) => {\n this._resource = resp as VectorLayerResourceItem;\n return this._resource.feature_layer;\n });\n }\n\n getBounds(): CancelablePromise<LngLatBoundsArray | undefined> {\n if (this._extent) {\n return CancelablePromise.resolve(this._extent);\n }\n return fetchNgwLayerItemExtent({\n connector: this.connector,\n featureId: this.id,\n resourceId: this.layerId,\n });\n }\n\n geojson(): CancelablePromise<Feature<G, F>> {\n if (this._geojson) {\n return CancelablePromise.resolve(this._geojson);\n }\n return this.identify().then((resp) => {\n return resp.toGeojson().then((geojson) => {\n this._geojson = geojson;\n return geojson;\n });\n });\n }\n}\n","export const WEBMAP_BASELAYER_ID_PREFIX = 'webmap-baselayer';\n","import { Geometry } from 'geojson';\n\nimport CancelablePromise from '@nextgis/cancelable-promise';\nimport {\n createGeoJsonFeature,\n FEATURE_REQUEST_PARAMS,\n updateItemRequestParam,\n} from './featureLayerUtils';\n\nimport type { FeatureProperties } from '@nextgis/utils';\nimport type {\n NgwFeatureItemResponse,\n FeatureRequestParams,\n FetchNgwItemOptions,\n} from '../interfaces';\n\nexport function fetchNgwLayerItem<\n G extends Geometry = Geometry,\n P extends FeatureProperties = FeatureProperties,\n>(\n options: FetchNgwItemOptions<P>,\n): CancelablePromise<NgwFeatureItemResponse<P, G>> {\n const params: FeatureRequestParams & { [name: string]: any } = {\n ...FEATURE_REQUEST_PARAMS,\n };\n updateItemRequestParam(params, options);\n const queryParams = {\n id: options.resourceId,\n fid: options.featureId,\n ...params,\n };\n const cache = options.cache || true;\n return options.connector\n .get('feature_layer.feature.item', { cache }, queryParams)\n .then((resp) => {\n return {\n ...resp,\n toGeojson: () => {\n if (resp.geom) {\n return CancelablePromise.resolve(createGeoJsonFeature<G, P>(resp));\n } else {\n return fetchNgwLayerItem({\n ...options,\n geom: true,\n fields: null,\n extensions: null,\n }).then((onlyGeomItem) => {\n const geom = onlyGeomItem.geom;\n return createGeoJsonFeature<G, P>({ ...resp, geom });\n });\n }\n },\n } as NgwFeatureItemResponse<P, G>;\n });\n}\n","import { fetchNgwLayerItem } from './fetchNgwLayerItem';\nimport { createGeoJsonFeature } from './featureLayerUtils';\n\nimport type { Geometry, Feature } from 'geojson';\nimport type CancelablePromise from '@nextgis/cancelable-promise';\nimport type { FetchNgwItemOptions } from '../interfaces';\n\nexport function fetchNgwLayerFeature<\n G extends Geometry = Geometry,\n P extends Record<string, any> = Record<string, any>,\n>(options: FetchNgwItemOptions<P>): CancelablePromise<Feature<G, P>> {\n return fetchNgwLayerItem<G, P>(options).then((item) => {\n return createGeoJsonFeature<G, P>(item);\n });\n}\n","import CancelablePromise from '@nextgis/cancelable-promise';\nimport {\n JsonMap,\n degrees2meters,\n deprecatedMapClick,\n getCirclePolygonCoordinates,\n} from '@nextgis/utils';\nimport { IdentifyItem } from '../IdentifyItem';\nimport { createGeoJsonFeature } from './featureLayerUtils';\nimport { fetchNgwLayerFeature } from './fetchNgwLayerFeature';\nimport { fetchNgwLayerItem } from './fetchNgwLayerItem';\n\nimport type { Geometry, Feature, Position } from 'geojson';\nimport type { MapClickEvent } from '@nextgis/webmap';\nimport type { FeatureProperties } from '@nextgis/utils';\nimport type {\n LayerFeature,\n FeatureLayersIdentify,\n} from '@nextgis/ngw-connector';\nimport type {\n FeatureIdentifyRequestOptions,\n FeatureLayerIdentifyOptions,\n GetIdentifyGeoJsonOptions,\n IdentifyRequestOptions,\n NgwFeatureItemResponse,\n IdentifyItemOptions,\n NgwIdentifyItem,\n} from '../interfaces';\n\nexport function getIdentifyItems(\n identify: FeatureLayersIdentify & { resources?: number[] },\n multiple = false,\n): NgwIdentifyItem[] {\n const resources = [];\n const paramsList = [];\n for (const l in identify) {\n const id = Number(l);\n if (!isNaN(id)) {\n resources.push(id);\n }\n }\n const sortingArr = identify.resources;\n if (sortingArr) {\n resources.sort((a, b) => {\n return sortingArr.indexOf(a) - sortingArr.indexOf(b);\n });\n }\n\n for (let fry = 0; fry < resources.length; fry++) {\n const l = resources[fry];\n const identifyItem = identify[l];\n if ('features' in identifyItem) {\n const layerFeatures = identifyItem.features;\n const resourceId = Number(l);\n const featureParams: NgwIdentifyItem[] = createParamsFromFeatures(\n layerFeatures,\n resourceId,\n multiple,\n );\n if (featureParams.length) {\n paramsList.push(...featureParams);\n if (!multiple) {\n break;\n }\n }\n }\n }\n return paramsList;\n}\n\nfunction createParamsFromFeatures(\n features: LayerFeature[],\n resourceId: number,\n multiple: boolean,\n): NgwIdentifyItem[] {\n const featureParams: NgwIdentifyItem[] = [];\n for (const feature of features) {\n const params = {\n featureId: feature.id,\n resourceId,\n feature,\n };\n featureParams.push(params);\n if (!multiple) {\n break;\n }\n }\n return featureParams;\n}\n\nexport function fetchIdentifyGeoJson<\n G extends Geometry = Geometry,\n P extends JsonMap = JsonMap,\n>(\n options: GetIdentifyGeoJsonOptions,\n): CancelablePromise<Feature<G, P> | undefined> {\n const { connector, identify, requestOptions } = options;\n for (const l in identify) {\n const id = Number(l);\n if (!isNaN(id)) {\n const item = identify[l];\n if ('features' in item) {\n const withGeom = item.features.find((x) => x.geom);\n\n if (withGeom && withGeom.geom) {\n const geom = withGeom.geom as Geometry;\n return CancelablePromise.resolve(\n createGeoJsonFeature({\n ...withGeom,\n geom,\n }),\n );\n }\n }\n }\n }\n\n const params = getIdentifyItems(identify);\n if (params && params.length) {\n return fetchNgwLayerFeature({ ...requestOptions, connector, ...params[0] });\n }\n return CancelablePromise.resolve(undefined);\n}\n\nexport function fetchIdentifyItem<\n G extends Geometry = Geometry,\n P extends FeatureProperties = FeatureProperties,\n>(\n options: GetIdentifyGeoJsonOptions<P>,\n): CancelablePromise<NgwFeatureItemResponse<P, G> | undefined> {\n const { connector, identify } = options;\n\n const params = getIdentifyItems(identify);\n if (params && params.length) {\n return fetchNgwLayerItem<G, P>({\n connector,\n ...options.requestOptions,\n ...params[0],\n });\n }\n return CancelablePromise.resolve(undefined);\n}\n\n/**\n * @deprecated use {@link fetchIdentifyGeoJson} instead\n */\nexport function getIdentifyGeoJson<\n G extends Geometry = Geometry,\n P extends JsonMap = JsonMap,\n>(\n options: GetIdentifyGeoJsonOptions,\n): CancelablePromise<Feature<G, P> | undefined> {\n return fetchIdentifyGeoJson(options);\n}\n\nexport function featureLayerIdentify(\n options: FeatureLayerIdentifyOptions,\n): CancelablePromise<FeatureLayersIdentify> {\n const { geom, signal, cache, layers } = options;\n\n const wkt = typeof geom === 'string' ? geom : convertGeomToWKT(geom);\n\n if (!wkt) {\n throw new Error('Not valid geometry format to make intersection');\n }\n\n const data: FeatureIdentifyRequestOptions = {\n geom: wkt,\n srs: 3857,\n layers,\n };\n\n return options.connector.post('feature_layer.identify', {\n data,\n signal,\n cache,\n });\n}\n\nfunction convertGeomToWKT(geom: FeatureLayerIdentifyOptions[\"geom\"]): string | null {\n const coordinates = getPolygonCoordinates(geom);\n if (!coordinates) return null;\n\n const polygonStr = coordinates.map(([lng, lat]) => {\n const [x, y] = degrees2meters(lng, lat);\n return `${x} ${y}`;\n });\n\n return `POLYGON((${polygonStr.join(',')}))`;\n}\n\nfunction getPolygonCoordinates(geom: FeatureLayerIdentifyOptions[\"geom\"]): Position[] | null {\n if (Array.isArray(geom)) {\n return geom;\n }\n\n if (geom.type === 'Feature') {\n return geom.geometry?.coordinates[0];\n }\n\n if (geom.type === 'Polygon') {\n return geom.coordinates[0];\n }\n\n return null;\n}\n\nexport function sendIdentifyRequest(\n ev: MapClickEvent,\n options: IdentifyRequestOptions,\n): CancelablePromise<FeatureLayersIdentify> {\n deprecatedMapClick(ev);\n const [lng, lat] = ev.lngLat;\n const { geom, radius, signal, cache } = options;\n const geom_ = geom ?? getCirclePolygonCoordinates(lng, lat, radius);\n\n return featureLayerIdentify({ ...options, geom: geom_, signal, cache });\n}\n\nexport function createIdentifyItem<\n F extends FeatureProperties = FeatureProperties,\n G extends Geometry = Geometry,\n>(opt: IdentifyItemOptions): IdentifyItem<F, G> {\n return new IdentifyItem<F, G>(opt);\n}\n","import NgwConnector from '@nextgis/ngw-connector';\nimport { CompanyLogoOptions } from '../interfaces';\n\nexport async function getCompanyLogo(\n connector: NgwConnector,\n options?: CompanyLogoOptions,\n): Promise<HTMLElement | undefined> {\n const settings = await connector.get('pyramid.settings', null, {\n component: 'pyramid',\n });\n if (settings && settings.company_logo && settings.company_logo.enabled) {\n const anchor = document.createElement('a');\n anchor.style.position = 'absolute';\n anchor.style.bottom = '0';\n anchor.style.right = '0';\n anchor.style.padding = options?.padding ?? '10px';\n anchor.className = 'ngw-map-logo';\n if (options && options.cssClass) {\n anchor.className += ' ' + options.cssClass;\n }\n const img = new Image();\n img.style.maxHeight = '100px';\n img.style.maxWidth = '100px';\n img.src = '';\n try {\n const src = await connector.get('pyramid.company_logo', {\n responseType: 'blob',\n });\n const urlCreator = window.URL || window.webkitURL;\n const imageUrl = urlCreator.createObjectURL(src as any);\n img.src = imageUrl;\n } catch (er) {\n console.warn(er);\n }\n\n if (\n settings.company_logo.link !== null &&\n settings.company_logo.link.trim() !== ''\n ) {\n anchor.href = settings.company_logo.link;\n anchor.target = '_blank';\n if (settings.company_logo.link.search(/:\\/\\/nextgis/) !== -1) {\n img.alt = 'Get your own Web GIS at nextgis.com';\n }\n }\n anchor.appendChild(img);\n return anchor;\n }\n}\n","/**\n * @module icons\n */\n\nimport { IconPaint } from '@nextgis/paint';\n\nconst svgPath: { [name: string]: string | GetPathCallback } = {\n brill: '<path d=\"m6 0-5 6 5 6 5-6z\"/>',\n circle: '<circle cx=\"6\" cy=\"6\" r=\"6\"/>',\n rect: '<rect width=\"12\" height=\"12\"/>',\n marker:\n '<path d=\"m6 0c-1.85 0-4 1.19-4 4.22 0 2.05 3.08 6.59 4 7.78 0.821-1.19 4-5.62 4-7.78 0-3.03-2.15-4.22-4-4.22z\"/>',\n cross:\n '<path d=\"M 2.4,12 6,8.4 9.6,12 12,9.6 8.4,6 12,2.4 9.6,0 6,3.6 2.4,0 0,2.4 3.6,6 0,9.6 Z\"/>',\n star: '<path d=\"m6 0.25 1.71 4.18 4.29-1.04e-4 -3.43 3.14 0.857 4.18-3.43-3.14-3.43 3.14 0.857-4.18-3.43-3.14 4.29-0.209z\"/>',\n triangle: '<path d=\"m12 11.7h-12l6-11.2z\"/>',\n plus: '<path d=\"m7.5 12v-4.5h4.5v-3h-4.5v-4.5h-3v4.5h-4.5v3h4.5v4.5z\"/>',\n minus: '<path d=\"m12 7.5v-3h-12v3z\"/>',\n asterisk:\n '<path d=\"m7.59 12v-3.27l2.83 1.64 1.58-2.74-2.85-1.64 2.83-1.64-1.56-2.74-2.83 1.64v-3.24h-3.17v3.24l-2.85-1.64-1.57 2.74 2.84 1.64-2.84 1.64 1.57 2.74 2.85-1.64v3.27z\"/>',\n};\n\nexport interface IconOptions {\n svg?: string;\n /** Svg path */\n p?: string;\n shape?:\n | 'rect'\n | 'star'\n | 'plus'\n | 'minus'\n | 'brill'\n | 'circle'\n | 'marker'\n | 'triangle'\n | 'asterisk';\n color?: string;\n size?: number;\n stroke?: number;\n strokeColor?: string;\n rotate?: number;\n anchor?: [number, number];\n}\n\ninterface GenerateSvgOptions {\n width: number;\n height: number;\n stroke?: number;\n content?: string;\n}\n\nconst VIEW_BOX = 12;\nconst STROKE = 0.8;\n\nfunction generateSvg({\n width,\n height,\n stroke = 0,\n content,\n}: GenerateSvgOptions) {\n const s = stroke / 2;\n const svg = `<svg\n version=\"1.1\"\n xmlns=\"http://www.w3.org/2000/svg\"\n width=\"${width}\"\n height=\"${height}\"\n viewBox=\"-${s} -${s} ${VIEW_BOX + stroke} ${VIEW_BOX + stroke}\"\n >${content}</svg>`;\n return svg;\n}\n\nfunction insertSvg(svg: string) {\n const oParser = new DOMParser();\n const oDOM = oParser.parseFromString(svg, 'image/svg+xml');\n return oDOM.documentElement;\n}\n\ntype GetPathCallback = (opt?: IconOptions) => string;\n\n/**\n * Retrieves an icon with the provided options.\n * @function\n * @param {IconOptions} [opt={}] - Options for the icon.\n * @returns {IconPaint} Icon paint object.\n */\nexport function getIcon(opt: IconOptions = {}): IconPaint {\n // Default values\n const shape = opt.shape ?? 'circle';\n const color = opt.color ?? 'blue';\n const strokeColor = opt.strokeColor ?? 'white';\n const size = opt.size ?? VIEW_BOX;\n\n const rotate = opt.rotate ?? 0;\n\n const anchor = opt.anchor ?? [size / 2, size / 2];\n\n const stroke = opt.stroke !== undefined ? Number(opt.stroke) : STROKE;\n\n const pathAlias = opt.p || svgPath[shape] || 'circle';\n\n const path = typeof pathAlias === 'string' ? pathAlias : pathAlias(opt);\n const svg = insertSvg(\n opt.svg ||\n generateSvg({\n width: size,\n height: size,\n stroke,\n content: path,\n }),\n );\n\n svg.setAttribute('width', String(size));\n svg.setAttribute('height', String(size));\n\n svg.setAttribute('fill', color);\n if (stroke) {\n svg.setAttribute('stroke', strokeColor);\n svg.setAttribute('stroke-width', String(stroke));\n }\n const s = new XMLSerializer();\n\n return {\n type: 'icon',\n iconSize: [size, size],\n iconAnchor: anchor,\n html: s.serializeToString(svg),\n rotate,\n svg,\n };\n}\n","import type { NgwLayerOptions } from '@nextgis/ngw-kit';\nimport type { NgwResourceDefinition } from '../interfaces';\n\nexport function appendNgwResources(\n options: NgwLayerOptions[],\n resource?: NgwResourceDefinition,\n defOptions?: Partial<NgwLayerOptions>,\n overwriteOptions?: Partial<NgwLayerOptions>,\n): void {\n if (typeof resource === 'number' || typeof resource === 'string') {\n resource = Number(resource);\n options.push({\n ...defOptions,\n resource,\n });\n } else if (Array.isArray(resource)) {\n const [resourceId, id] = resource;\n options.push({\n ...defOptions,\n resource: resourceId,\n id,\n ...overwriteOptions,\n });\n } else if (typeof resource === 'object') {\n options.push({ ...defOptions, ...resource, ...overwriteOptions });\n }\n}\n","import { getDefaultControls } from '@nextgis/webmap';\nimport { deepmerge } from '@nextgis/utils';\nimport { StarterKit, MapOptions } from '@nextgis/webmap';\nimport NgwConnector from '@nextgis/ngw-connector';\nimport { QmsKit } from '@nextgis/qms-kit';\nimport { NgwKit } from '@nextgis/ngw-kit';\n\nimport { NgwMapOptions } from '../interfaces';\n\nexport const OPTIONS: NgwMapOptions = {\n target: 'map',\n baseUrl: '',\n whitlabel: false,\n controls: getDefaultControls(),\n controlsOptions: {\n ZOOM: { position: 'top-left' },\n ATTRIBUTION: {\n position: 'bottom-right',\n customAttribution: [\n '<a href=\"https://nextgis.com\" target=\"_blank\">©NextGIS</a>',\n ],\n },\n },\n pixelRadius: 10,\n};\n\nexport function prepareWebMapOptions(options: NgwMapOptions): MapOptions {\n const kits: StarterKit[] = [new QmsKit()];\n if (options.starterKits) {\n options.starterKits.forEach((x) => {\n kits.push(x);\n });\n }\n\n if (!options.connector) {\n options.connector = new NgwConnector({\n baseUrl: options.baseUrl || '',\n auth: options.auth,\n });\n } else if (options.connector) {\n options.baseUrl = options.connector.options.baseUrl;\n }\n options = deepmerge(OPTIONS, options);\n\n if (!options.center && !options.bounds) {\n options.bounds = [-179, -90, 180, 90];\n // options.maxBounds = options.bounds;\n }\n\n if (options.connector) {\n kits.push(\n new NgwKit({\n connector: options.connector,\n auth: options.auth,\n }),\n );\n }\n options = {\n ...options,\n starterKits: kits,\n create: false,\n };\n return options;\n}\n","import StrictEventEmitter from 'strict-event-emitter-types';\nimport { EventEmitter } from 'events';\nimport CancelablePromise from '@nextgis/cancelable-promise';\nimport { defined, isObject, getIdentifyRadius } from '@nextgis/utils';\nimport { AdapterOptions, WebMap } from '@nextgis/webmap';\nimport NgwConnector from '@nextgis/ngw-connector';\n\nimport {\n fetchNgwLayerFeatureCollection,\n createNgwLayerAdapter,\n fetchNgwLayerFeature,\n fetchIdentifyGeoJson,\n sendIdentifyRequest,\n createIdentifyItem,\n fetchNgwLayerItems,\n fetchIdentifyItem,\n fetchNgwLayerItem,\n getIdentifyItems,\n getCompanyLogo,\n fetchNgwExtent,\n} from '@nextgis/ngw-kit';\nimport { deprecatedWarn } from '@nextgis/utils';\nimport { getIcon } from '@nextgis/icons';\n\nimport { appendNgwResources } from './utils/appendNgwResources';\nimport { prepareWebMapOptions } from './utils/prepareWebMapOptions';\n\nimport type { JsonMap, FeatureProperties } from '@nextgis/utils';\nimport type {\n FeatureItem,\n LayerFeature,\n ResourceItem,\n FeatureLayersIdentify,\n FeatureLayersIdentifyItems,\n} from '@nextgis/ngw-connector';\nimport type {\n OnLayerMouseOptions,\n ControlPosition,\n MapClickEvent,\n LayerAdapter,\n WebMapEvents,\n MapControls,\n FitOptions,\n LayerDef,\n} from '@nextgis/webmap';\nimport type {\n NgwIdentify,\n NgwWebmapItem,\n ResourceAdapter,\n FetchNgwItemsOptions,\n NgwFeatureItemResponse,\n NgwFeatureRequestOptions,\n} from '@nextgis/ngw-kit';\nimport type { Geometry, Feature, FeatureCollection } from 'geojson';\nimport type { QmsAdapterOptions } from '@nextgis/qms-kit';\nimport type { NgwLayerOptions } from '@nextgis/ngw-kit';\nimport type {\n NgwIdentifyEvent,\n NgwMapOptions,\n NgwMapEvents,\n NgwLayers,\n} from './interfaces';\nimport type { FetchNgwItemOptions } from '@nextgis/ngw-kit';\n\ntype PromiseGroup = 'select' | 'identify';\n\n/**\n * Base class containing the logic of interaction WebMap with NextGIS services.\n *\n * @example\n * ```javascript\n * import { NgwMap } from '@nextgis/ngw-map';\n * import MapAdapter from '@nextgis/leaflet-map-adapter';\n * // styles are not included in the leaflet-map-adapter\n * import 'leaflet/dist/leaflet.css';\n *\n * const ngwMap = new NgwMap({\n * mapAdapter: new MapAdapter(),\n * target: 'map',\n * qmsId: 448,\n * baseUrl: 'https://demo.nextgis.com',\n * webmapId: 3985\n * });\n * ```\n */\nexport class NgwMap<\n M = unknown,\n L = unknown,\n C extends object = any,\n O extends NgwMapOptions<M, C> = NgwMapOptions<M, C>,\n> extends WebMap<M, L, C, NgwMapEvents, O> {\n static getIcon = getIcon;\n\n readonly emitter: StrictEventEmitter<EventEmitter, NgwMapEvents> =\n new EventEmitter();\n connector!: NgwConnector;\n\n protected _ngwLayers: NgwLayers = {};\n private $$selectFromNgwRaster?: (ev: MapClickEvent) => void;\n private $$selectFromNgwVector?: (ev: OnLayerMouseOptions) => void;\n private _promises: Record<PromiseGroup, CancelablePromise[]> = {\n select: [],\n identify: [],\n };\n\n constructor(options: O) {\n super(prepareWebMapOptions(options) as O);\n if (options.connector) {\n this.connector = options.connector;\n }\n this._createWebMap().then(() => {\n const container = this.getContainer();\n if (container) {\n container.classList.add('ngw-map-container');\n }\n if (this.options.whitlabel) {\n this._whiteLabel();\n }\n });\n }\n\n /**\n * Organized addition to the map design and controls elements,\n * calling `control.onAdd(this.webMap.mapAdapter)`\n * @param control - object with onAdd and onRemove methods\n * or a string value indicating the name of the control installed in the map adapter\n * @param position - position relative to the map angles\n * @param options - initialization parameters if the control is set as a string value\n *\n * @example\n * ```javascript\n * ngwMap.addControl(new CustomControl(), 'bottom-left');\n * ngwMap.addControl('ZOOM', 'top-right')\n * ```\n */\n async addControl<K extends keyof MapControls>(\n controlDef: K | C,\n position: ControlPosition,\n options?: MapControls[K],\n ): Promise<any> {\n await this.onLoad('controls:create');\n return super.addControl(controlDef, position, options);\n }\n\n /**\n * Add any (style, vector, webmap) NGW layer by resource definition.\n * @param options - set layer identification parameters and render method.\n *\n * @example\n * ```javascript\n * // Add raster layer resourceId is the style of 4004 layer\n * ngwMap.addNgwLayer({ resource: 4005 });\n * // Add vector data from layer GEOJSON source\n * ngwMap.addNgwLayer({\n * resource: 4038,\n * adapter: 'GEOJSON',\n * adapterOptions: { paint: { color: 'red' } }\n * });\n * ```\n */\n async addNgwLayer(\n options: NgwLayerOptions,\n ): Promise<ResourceAdapter | undefined> {\n await this.onMapLoad();\n // @ts-ignore for backward compatibility\n const { keyname, resourceId } = options;\n\n if (keyname || resourceId !== undefined) {\n deprecatedWarn(\n 'set `resource` options instead of `keyname` or `resourceId`',\n );\n }\n\n const resource = options.resource;\n if (!keyname && !resourceId && !resource) {\n throw new Error(\n 'resource, resourceId or keyname is required parameter to add NGW layer',\n );\n }\n if (defined(this.options.baseUrl)) {\n try {\n if (defined(this.options.setViewDelay)) {\n options.adapterOptions = options.adapterOptions || {};\n if (!defined(options.adapterOptions.setViewDelay)) {\n options.adapterOptions.setViewDelay = this.options.setViewDelay;\n }\n }\n const adapter = createNgwLayerAdapter(options, this, this.connector);\n const adapterOpts = {\n visibility: true,\n // TODO: do not merge options, use only `adapterOptions`\n ...options,\n ...options.adapterOptions,\n } as AdapterOptions;\n const layer = (await this.addLayer(\n adapter,\n adapterOpts,\n )) as ResourceAdapter<M, L, AdapterOptions>;\n const id = layer && this.getLayerId(layer);\n if (layer && id) {\n this._ngwLayers[id] = { layer, resourceId: layer.resourceId };\n layer.options.name =\n layer.options.name ||\n (layer.item && layer.item.resource.display_name);\n if (layer.options.baselayer) {\n const visibleLayerBaseLayer = this.getActiveBaseLayer();\n if (visibleLayerBaseLayer) {\n return layer;\n }\n }\n }\n return layer;\n } catch (er) {\n const resId =\n isObject(resource) && 'id' in resource\n ? resource.id\n : keyname || resourceId || resource;\n console.error(`Can't add NGW layer ${resId}.`, er);\n }\n }\n }\n\n /**\n * Pans and zooms the map to the initial position specified in the options\n */\n fit(): void {\n const { center, zoom, bounds } = this.options;\n if (center) {\n this.setCenter(center);\n if (zoom) {\n this.setZoom(zoom);\n }\n } else if (bounds) {\n this.fitBounds(bounds);\n }\n }\n\n fetchNgwLayerItem<\n G extends Geometry = Geometry,\n P extends FeatureProperties = FeatureProperties,\n >(\n options: Omit<FetchNgwItemOptions<P>, 'connector'>,\n ): CancelablePromise<FeatureItem> {\n return fetchNgwLayerItem<G, P>({\n connector: this.connector,\n ...options,\n });\n }\n\n fetchNgwLayerItems<\n F extends FeatureProperties = FeatureProperties,\n G extends Geometry = Geometry,\n >(\n options: Omit<FetchNgwItemsOptions<F>, 'connector'>,\n ): CancelablePromise<FeatureItem<F, G>[]> {\n return fetchNgwLayerItems<G, F>({\n connector: this.connector,\n ...options,\n });\n }\n\n fetchNgwLayerFeature<\n G extends Geometry = Geometry,\n P extends FeatureProperties = FeatureProperties,\n >(\n options: Omit<FetchNgwItemOptions<P>, 'connector'>,\n ): CancelablePromise<Feature<G, P>> {\n return fetchNgwLayerFeature<G, P>({\n connector: this.connector,\n ...options,\n });\n }\n\n fetchNgwLayerFeatures<\n G extends Geometry | null = Geometry,\n P extends FeatureProperties = FeatureProperties,\n >(\n options: Omit<FetchNgwItemsOptions<P>, 'connector'>,\n ): CancelablePromise<FeatureCollection<G, P>> {\n return fetchNgwLayerFeatureCollection({\n connector: this.connector,\n ...options,\n });\n }\n\n fetchIdentifyItem<\n G extends Geometry = Geometry,\n P extends FeatureProperties = FeatureProperties,\n >(\n identify: NgwIdentify,\n requestOptions?: NgwFeatureRequestOptions,\n // multiple = false\n ): CancelablePromise<NgwFeatureItemResponse<P, G> | undefined> {\n const promise = fetchIdentifyItem<G, P>({\n identify,\n connector: this.connector,\n requestOptions,\n // multiple,\n });\n\n this._addPromise('identify', promise);\n return promise;\n }\n\n fetchIdentifyGeoJson(\n identify: NgwIdentify,\n multiple = false,\n ): CancelablePromise<Feature | undefined> {\n const promise = fetchIdentifyGeoJson({\n identify,\n connector: this.connector,\n multiple,\n });\n if (promise && 'then' in promise) {\n this._addPromise('identify', promise);\n return promise;\n } else {\n return CancelablePromise.resolve(promise);\n }\n }\n\n /**\n * @deprecated use {@link fetchIdentifyGeoJson} instead\n */\n getIdentifyGeoJson(\n identify: NgwIdentify,\n multiple = false,\n ): CancelablePromise<Feature | undefined> {\n return this.fetchIdentifyGeoJson(identify, multiple);\n }\n\n async getNgwLayers(): Promise<NgwLayers> {\n await this.onLoad();\n return this._ngwLayers;\n }\n\n async getNgwLayerByResourceId(id: number): Promise<LayerAdapter | undefined> {\n for (const n in this._ngwLayers) {\n const mem = this._ngwLayers[n];\n if (mem.resourceId === id) {\n return mem && mem.layer;\n } else if (mem.layer.getIdentificationIds) {\n const ids = await mem.layer.getIdentificationIds();\n if (ids && ids.some((x) => x === id)) {\n return mem.layer;\n }\n }\n if (mem.layer.getDependLayers) {\n const dependLayers = mem.layer.getDependLayers() as NgwWebmapItem[];\n const dependFit = dependLayers.find((x) => {\n return x.item && x.item.parentId === id;\n });\n if (dependFit) {\n return dependFit.layer;\n }\n }\n }\n }\n\n /**\n * Move map to layer. If the layer is NGW resource, extent will be received from the server\n *\n * @example\n * ```javascript\n * const ngwLayer = ngwMap.addNgwLayer({ id: 'ngw_layer_name', resource: 4005 });\n * ngwMap.fitLayer(ngwLayer);\n * ngwMap.fitLayer('ngw_layer_name');\n * ```\n */\n async fitLayer(\n layerDef: LayerDef | number,\n options?: FitOptions,\n ): Promise<void> {\n let id: string | undefined;\n if (typeof layerDef === 'string' || typeof layerDef === 'number') {\n id = String(id);\n } else {\n id = layerDef.id;\n }\n const ngwLayer = id && this._ngwLayers[id];\n if (ngwLayer) {\n if (ngwLayer.layer.getBounds) {\n const bounds = await ngwLayer.layer.getBounds();\n if (bounds) {\n this.fitBounds(bounds, options);\n }\n } else {\n let item: ResourceItem | undefined;\n if (ngwLayer.layer.item) {\n item = ngwLayer.layer.item;\n } else {\n const resourceId = ngwLayer.resourceId;\n item = await this.connector.getResource(resourceId);\n }\n if (item) {\n fetchNgwExtent({\n resourceId: item.resource.id,\n connector: this.connector,\n }).then((extent) => {\n if (extent) {\n this.fitBounds(extent, options);\n }\n });\n }\n }\n } else {\n super.fitLayer(\n typeof layerDef === 'number' ? String(layerDef) : layerDef,\n options,\n );\n }\n }\n\n /** @deprecated use {@link fitLayer} instead */\n async zoomToLayer(layerDef: string | ResourceAdapter): Promise<void> {\n return this.fitLayer(layerDef);\n }\n\n onLoad(event: keyof NgwMapEvents = 'ngw-map:create'): Promise<this> {\n return super.onLoad(event as keyof WebMapEvents);\n }\n\n removeLayer(layerDef: LayerDef): void {\n const layer = this.getLayer(layerDef);\n if (layer) {\n const layerId = this.getLayerId(layer);\n if (layerId) {\n delete this._ngwLayers[layerId];\n }\n super.removeLayer(layer);\n }\n }\n\n enableSelection(): void {\n if (!this.$$selectFromNgwRaster) {\n this.$$selectFromNgwRaster = (ev: MapClickEvent) => {\n const count = this._getSelectListenersCount();\n if (count) {\n this.selectFromNgwRaster(ev);\n }\n };\n this.$$selectFromNgwVector = (ev: OnLayerMouseOptions) => {\n const count = this._getSelectListenersCount();\n if (count) {\n this._selectFromNgwVector(ev);\n }\n };\n this.emitter.on('click', this.$$selectFromNgwRaster);\n this.emitter.on('layer:click', this.$$selectFromNgwVector);\n }\n }\n\n disableSelection(): void {\n if (this.$$selectFromNgwRaster) {\n this.emitter.removeListener('click', this.$$selectFromNgwRaster);\n this.$$selectFromNgwRaster = undefined;\n }\n if (this.$$selectFromNgwVector) {\n this.emitter.removeListener('layer:click', this.$$selectFromNgwVector);\n\n this.$$selectFromNgwVector = undefined;\n }\n }\n\n /**\n * @deprecated use {@link fetchNgwLayerItem} instead\n */\n getNgwLayerItem<\n G extends Geometry = Geometry,\n P extends FeatureProperties = FeatureProperties,\n >(\n options: Omit<FetchNgwItemOptions<P>, 'connector'>,\n ): CancelablePromise<FeatureItem> {\n return this.fetchNgwLayerItem<G, P>(options);\n }\n\n /**\n * @deprecated use {@link fetchNgwLayerItems} instead\n */\n getNgwLayerItems<\n F extends FeatureProperties = FeatureProperties,\n G extends Geometry = Geometry,\n >(\n options: Omit<FetchNgwItemsOptions<F>, 'connector'>,\n ): CancelablePromise<FeatureItem<F, G>[]> {\n return this.fetchNgwLayerItems<F, G>(options);\n }\n\n /**\n * @deprecated use {@link fetchNgwLayerFeature} instead\n */\n getNgwLayerFeature<\n G extends Geometry = Geometry,\n P extends FeatureProperties = FeatureProperties,\n >(\n options: Omit<FetchNgwItemOptions<P>, 'connector'>,\n ): CancelablePromise<Feature<G, P>> {\n return this.fetchNgwLayerFeature<G, P>(options);\n }\n\n /**\n * @deprecated use {@link fetchNgwLayerFeatures} instead\n */\n getNgwLayerFeatures<\n G extends Geometry | null = Geometry,\n P extends JsonMap = JsonMap,\n >(\n options: FetchNgwItemsOptions<P>,\n ): CancelablePromise<FeatureCollection<G, P>> {\n return this.fetchNgwLayerFeatures(options);\n }\n\n /** @deprecated use {@link cancelPromises} instead */\n cancelPromise(...args: PromiseGroup[]): void {\n this.cancelPromises(...args);\n }\n\n cancelPromises(...args: PromiseGroup[]): void {\n if (!args.length) {\n args = Object.keys(this._promises) as PromiseGroup[];\n }\n args.forEach((name) => {\n const group = this._promises[name];\n if (group) {\n group.forEach((x) => x.cancel());\n this._promises[name] = [];\n }\n });\n }\n\n async selectFromNgwRaster(\n ev: MapClickEvent,\n ): Promise<NgwIdentifyEvent | undefined> {\n this._emitStatusEvent('ngw:preselect');\n\n const promises: Promise<number[] | undefined>[] = [];\n const layers = Object.values(this._ngwLayers);\n layers.sort((a, b) => {\n if (a.layer.order && b.layer.order) {\n return b.layer.order - a.layer.order;\n }\n return 1;\n });\n for (const l of layers) {\n const layer = l.layer;\n const identFunc =\n typeof layer.getIdentificationIds === 'function'\n ? layer.getIdentificationIds\n : false;\n if (identFunc && layer.options.selectable && this.isLayerVisible(layer)) {\n promises.push(identFunc.call(layer));\n }\n }\n const getIdsPromise = Promise.all(promises);\n const getIds = await getIdsPromise;\n const ids: number[] = [];\n for (const x of getIds) {\n if (x) {\n ids.push(...x);\n }\n }\n\n if (!ids.length) {\n this._emitStatusEvent('ngw:select', null);\n return;\n }\n\n const pixelRadius = this.options.pixelRadius || 10;\n const center = this.getCenter();\n let zoom = this.getZoom();\n zoom = zoom !== undefined ? zoom : 20;\n if (!center || !zoom) {\n this._emitStatusEvent('ngw:select', null);\n return;\n }\n const radius = getIdentifyRadius(center, zoom, pixelRadius);\n\n const selectPromise = sendIdentifyRequest(ev, {\n layers: ids,\n connector: this.connector,\n radius,\n }).then((resp) => {\n const identify: NgwIdentify = {\n ...resp,\n resources: ids,\n sourceType: 'raster',\n event: ev,\n };\n const identifyEvent: NgwIdentifyEvent = this._prepareToIdentify(identify);\n this._emitStatusEvent('ngw:select', identifyEvent);\n return identifyEvent;\n });\n this._addPromise('select', selectPromise);\n return selectPromise;\n }\n\n private _addPromise(groupName: PromiseGroup, promise: CancelablePromise) {\n const group = this._promises[groupName];\n if (group && group.indexOf(promise) === -1) {\n const removeFromGroup = () => {\n const index = group.indexOf(promise);\n if (index !== -1) {\n group.splice(index, 1);\n }\n };\n promise.then(removeFromGroup);\n promise.catch(removeFromGroup);\n group.push(promise);\n }\n }\n\n private _isFitFromResource() {\n const params = this._initMapState;\n if (params.zoom && params.center) {\n return false;\n }\n return true;\n }\n\n private async _createWebMap() {\n await this.create();\n if (this.options.qmsId) {\n this._addQmsBaseLayer();\n }\n if (this.options.osm) {\n this._addOsmBaseLayer();\n }\n\n const resources: NgwLayerOptions[] = [];\n const layerFitAllowed = this._isFitFromResource();\n if (this.options.webmapId) {\n appendNgwResources(resources, this.options.webmapId, {\n fit: layerFitAllowed,\n });\n }\n if (this.options.resources && Array.isArray(this.options.resources)) {\n for (const x of this.options.resources) {\n const overwriteOptions: Partial<NgwLayerOptions> = {};\n if (!layerFitAllowed) {\n overwriteOptions.fit = false;\n }\n appendNgwResources(resources, x, {}, overwriteOptions);\n }\n }\n for (const r of resources) {\n try {\n await this.addNgwLayer(r);\n } catch (er) {\n console.warn(er);\n }\n }\n this._emitStatusEvent('ngw-map:create', this);\n this.enableSelection();\n }\n\n private _addOsmBaseLayer() {\n this.addBaseLayer('OSM');\n }\n\n private _addQmsBaseLayer() {\n let qmsId: number;\n let qmsLayerName: string | undefined;\n if (Array.isArray(this.options.qmsId)) {\n qmsId = this.options.qmsId[0];\n qmsLayerName = this.options.qmsId[1];\n } else {\n qmsId = Number(this.options.qmsId);\n }\n const qmsLayerOptions: Partial<QmsAdapterOptions> = {\n qmsId,\n };\n if (qmsLayerName) {\n qmsLayerOptions.id = qmsLayerName;\n }\n\n this.addBaseLayer('QMS', qmsLayerOptions);\n }\n\n private _selectFromNgwVector(\n ev: OnLayerMouseOptions,\n ): FeatureLayersIdentify | undefined {\n const layer: ResourceAdapter = ev.layer as ResourceAdapter;\n const selectable = layer.options.selectable && this.isLayerVisible(layer);\n if (!selectable) {\n return undefined;\n }\n // Item property means layer is NgwResource\n const id = layer.item && layer.item.resource.id;\n const feature = ev.feature;\n\n if (id !== undefined && feature) {\n const featureId = feature.id;\n if (featureId) {\n const identifyFeature: LayerFeature = {\n id: Number(featureId),\n fields: feature.properties || {},\n label: `#${id}`,\n layerId: Number(id),\n parent: '',\n geom: feature.geometry,\n };\n const items: FeatureLayersIdentifyItems = {\n featureCount: 1,\n features: [identifyFeature],\n };\n const identify: FeatureLayersIdentify = {\n featureCount: 1,\n [id]: items,\n };\n this._emitStatusEvent(\n 'ngw:select',\n this._prepareToIdentify({\n ...identify,\n resources: [id],\n sourceType: 'vector',\n } as NgwIdentify),\n );\n return identify;\n }\n }\n }\n\n private _prepareToIdentify<\n F extends FeatureProperties = FeatureProperties,\n G extends Geometry = Geometry,\n >(identify: NgwIdentify): NgwIdentifyEvent {\n const getIdentifyItems_ = () => {\n return getIdentifyItems(identify, true).map((x) => {\n return createIdentifyItem<F, G>({\n feature: x.feature,\n connector: this.connector,\n });\n });\n };\n return {\n ...identify,\n getIdentifyItems: getIdentifyItems_,\n };\n }\n\n private _getSelectListenersCount() {\n return this.emitter.listenerCount('ngw:select');\n }\n\n private async _whiteLabel() {\n const container = this.getContainer();\n if (container) {\n const logo = await getCompanyLogo(\n this.connector,\n this.options.companyLogoOptions,\n );\n if (logo) {\n container.appendChild(logo);\n }\n }\n }\n}\n","/**\n * @module ngw-map\n */\n\nimport { NgwMap } from './NgwMap';\nimport type { NgwMapOptions } from './interfaces';\n\nexport * from '@nextgis/webmap';\n\nexport * from './interfaces';\n\nexport { NgwMap };\n\nexport async function createNgwMap(options: NgwMapOptions): Promise<NgwMap> {\n const ngwMap = new NgwMap(options);\n return ngwMap.onLoad();\n}\n"],"names":["eventsModule","events","ID","CancelablePromise","isObject","e","f","OPTIONS","EventEmitter","Cache","NgwConnector","NgwWebmapLayerAdapter","NWLayerAdapter"],"mappings":"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"}