@carto/api-client 0.4.9 → 0.4.10-alpha.0

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":"api-client.cjs","sources":["../src/client.ts","../src/constants.ts","../src/utils/makeIntervalComplete.ts","../src/filters/FilterTypes.ts","../src/filters/Filter.ts","../src/filters/geosjonFeatures.ts","../node_modules/@math.gl/core/dist/lib/common.js","../node_modules/@math.gl/web-mercator/dist/assert.js","../node_modules/@math.gl/web-mercator/dist/web-mercator-utils.js","../src/utils/transformToTileCoords.ts","../src/utils/transformTileCoordsToWGS84.ts","../src/filters/tileFeaturesGeometries.ts","../node_modules/tilebelt/index.js","../node_modules/@mapbox/tile-cover/index.js","../node_modules/quadbin/dist/esm/index.js","../src/filters/tileFeaturesSpatialIndex.ts","../src/constants-internal.ts","../src/filters/tileFeatures.ts","../src/deck/get-data-filter-extension-props.ts","../src/utils.ts","../src/filters.ts","../src/geo.ts","../src/api/endpoints.ts","../src/api/carto-api-error.ts","../src/api/request-with-parameters.ts","../src/sources/base-source.ts","../src/sources/boundary-query-source.ts","../src/sources/boundary-table-source.ts","../src/widget-sources/widget-source.ts","../src/models/common.ts","../src/models/model.ts","../src/widget-sources/widget-remote-source.ts","../src/widget-sources/widget-query-source.ts","../src/widget-sources/widget-table-source.ts","../src/operations/aggregation.ts","../node_modules/thenby/thenBy.module.js","../src/operations/applySorting.ts","../src/operations/groupBy.ts","../src/utils/dateUtils.ts","../src/operations/groupByDate.ts","../src/operations/histogram.ts","../src/operations/scatterPlot.ts","../src/widget-sources/widget-tileset-source.ts","../src/sources/h3-query-source.ts","../src/sources/h3-table-source.ts","../src/sources/h3-tileset-source.ts","../src/sources/raster-source.ts","../src/sources/quadbin-query-source.ts","../src/sources/quadbin-table-source.ts","../src/sources/quadbin-tileset-source.ts","../src/sources/vector-query-source.ts","../src/sources/vector-table-source.ts","../src/sources/vector-tileset-source.ts","../src/api/query.ts","../src/spatial-index.ts"],"sourcesContent":["/**\n * @internal\n * @privateRemarks Source: @carto/react-core, @carto/constants, @deck.gl/carto\n */\nlet client = 'deck-gl-carto';\n\n/**\n * Returns current client ID, used to categorize API requests. For internal use only.\n *\n * @internal\n * @privateRemarks Source: @carto/react-core\n */\nexport function getClient() {\n return client;\n}\n\n/**\n * Sets current client ID, used to categorize API requests. For internal use only.\n *\n * @internal\n * @privateRemarks Source: @carto/react-core\n */\nexport function setClient(c: string) {\n client = c;\n}\n","/**\n * Defines a comparator used when matching a column's values against given filter values.\n *\n * Example:\n *\n * ```javascript\n * import { FilterType } from '@carto/api-client';\n * const filters = {\n * column_name: { [FilterType.IN]: { values: ['a', 'b', 'c'] } }\n * };\n * ```\n *\n * @privateRemarks Source: @carto/react-api, @deck.gl/carto\n */\nexport enum FilterType {\n IN = 'in',\n /** [a, b] both are included. */\n BETWEEN = 'between',\n /** [a, b) a is included, b is not. */\n CLOSED_OPEN = 'closed_open',\n TIME = 'time',\n STRING_SEARCH = 'stringSearch',\n}\n\n/** @privateRemarks Source: @carto/constants */\nexport enum ApiVersion {\n V1 = 'v1',\n V2 = 'v2',\n V3 = 'v3',\n}\n\n/** @privateRemarks Source: @carto/constants, @deck.gl/carto */\nexport const DEFAULT_API_BASE_URL = 'https://gcp-us-east1.api.carto.com';\n\n/** @privateRemarks Source: @carto/react-core */\nexport enum TileFormat {\n MVT = 'mvt',\n JSON = 'json',\n GEOJSON = 'geojson',\n BINARY = 'binary',\n}\n\n/** @privateRemarks Source: @carto/react-core */\nexport enum SpatialIndex {\n H3 = 'h3',\n S2 = 's2',\n QUADBIN = 'quadbin',\n}\n\n/** @privateRemarks Source: @carto/react-core */\nexport enum Provider {\n BIGQUERY = 'bigquery',\n REDSHIFT = 'redshift',\n POSTGRES = 'postgres',\n SNOWFLAKE = 'snowflake',\n DATABRICKS = 'databricks',\n DATABRICKS_REST = 'databricksRest',\n}\n","import {FilterInterval, FilterIntervalComplete} from '../types.js';\n\nexport function makeIntervalComplete(\n intervals: FilterInterval[]\n): FilterIntervalComplete[] {\n return intervals.map((val) => {\n if (val[0] === undefined || val[0] === null) {\n return [Number.MIN_SAFE_INTEGER, val[1]];\n }\n\n if (val[1] === undefined || val[1] === null) {\n return [val[0], Number.MAX_SAFE_INTEGER];\n }\n\n return val;\n }) as FilterIntervalComplete[];\n}\n","import {FilterType} from '../constants.js';\nimport {FilterInterval, StringSearchOptions} from '../types.js';\nimport {makeIntervalComplete} from '../utils/makeIntervalComplete.js';\n\nexport type FilterFunction = (\n filterValues: unknown[],\n featureValue: unknown,\n params?: Record<string, unknown>\n) => boolean;\n\nexport const filterFunctions: Record<FilterType, FilterFunction> = {\n [FilterType.IN]: filterIn,\n [FilterType.BETWEEN]: filterBetween,\n [FilterType.TIME]: filterTime,\n [FilterType.CLOSED_OPEN]: filterClosedOpen,\n [FilterType.STRING_SEARCH]: filterStringSearch,\n};\n\nfunction filterIn(filterValues: unknown[], featureValue: unknown): boolean {\n return filterValues.includes(featureValue);\n}\n\n// FilterTypes.BETWEEN\nfunction filterBetween(\n filterValues: unknown[],\n featureValue: unknown\n): boolean {\n const checkRange = (range: [number, number]) => {\n const [lowerBound, upperBound] = range;\n return (\n (featureValue as number) >= lowerBound &&\n (featureValue as number) <= upperBound\n );\n };\n\n return makeIntervalComplete(filterValues as FilterInterval[]).some(\n checkRange\n );\n}\n\nfunction filterTime(filterValues: unknown[], featureValue: unknown) {\n const featureValueAsTimestamp = new Date(featureValue as number).getTime();\n if (isFinite(featureValueAsTimestamp)) {\n return filterBetween(filterValues, featureValueAsTimestamp);\n } else {\n throw new Error(`Column used to filter by time isn't well formatted.`);\n }\n}\n\n// FilterTypes.CLOSED_OPEN\nfunction filterClosedOpen(\n filterValues: unknown[],\n featureValue: unknown\n): boolean {\n const checkRange = (range: [number, number]) => {\n const [lowerBound, upperBound] = range;\n return (\n (featureValue as number) >= lowerBound &&\n (featureValue as number) < upperBound\n );\n };\n\n return makeIntervalComplete(filterValues as [number, number][]).some(\n checkRange\n );\n}\n\n// FilterTypes.STRING_SEARCH\nfunction filterStringSearch(\n filterValues: unknown[],\n featureValue: unknown,\n params: StringSearchOptions = {}\n): boolean {\n const normalizedFeatureValue = normalize(featureValue, params);\n const stringRegExp = params.useRegExp\n ? filterValues\n : filterValues.map((filterValue) => {\n let stringRegExp = escapeRegExp(normalize(filterValue, params));\n\n if (params.mustStart) stringRegExp = `^${stringRegExp}`;\n if (params.mustEnd) stringRegExp = `${stringRegExp}$`;\n\n return stringRegExp;\n });\n\n const regex = new RegExp(\n stringRegExp.join('|'),\n params.caseSensitive ? 'g' : 'gi'\n );\n return !!normalizedFeatureValue.match(regex);\n}\n\n// Aux\nconst specialCharRegExp = /[.*+?^${}()|[\\]\\\\]/g;\nconst normalizeRegExp = /\\p{Diacritic}/gu;\n\nfunction escapeRegExp(value: string) {\n return value.replace(specialCharRegExp, '\\\\$&');\n}\n\nfunction normalize(data: unknown, params: StringSearchOptions) {\n let normalizedData = String(data);\n if (!params.keepSpecialCharacters)\n normalizedData = normalizedData\n .normalize('NFD')\n .replace(normalizeRegExp, '');\n\n return normalizedData;\n}\n","import {filterFunctions} from './FilterTypes.js';\nimport {Filter, FilterLogicalOperator, Filters} from '../types.js';\nimport {Feature} from 'geojson';\nimport {FilterType} from '../constants.js';\nimport {FeatureData} from '../types-internal.js';\nimport {BinaryFeature} from '@loaders.gl/schema';\n\nconst LOGICAL_OPERATOR_METHODS: Record<\n FilterLogicalOperator,\n 'every' | 'some'\n> = {\n and: 'every',\n or: 'some',\n};\n\nfunction passesFilter(\n columns: string[],\n filters: Filters,\n feature: FeatureData,\n filtersLogicalOperator: FilterLogicalOperator\n): boolean {\n const method = LOGICAL_OPERATOR_METHODS[filtersLogicalOperator];\n return columns[method]((column) => {\n const columnFilters = filters[column];\n const columnFilterTypes = Object.keys(columnFilters) as FilterType[];\n\n if (!feature || feature[column] === null || feature[column] === undefined) {\n return false;\n }\n\n return columnFilterTypes.every((filter) => {\n const filterFunction = filterFunctions[filter];\n\n if (!filterFunction) {\n throw new Error(`\"${filter}\" filter is not implemented.`);\n }\n\n return filterFunction(\n columnFilters[filter]!.values,\n feature[column],\n (columnFilters[filter] as Filter[FilterType.STRING_SEARCH])!.params\n );\n });\n });\n}\n\n/**\n * @internal\n * @privateRemarks Exported for use in @deck.gl/carto's getDataFilterExtensionProps.\n */\nexport function _buildFeatureFilter({\n filters = {},\n type = 'boolean',\n filtersLogicalOperator = 'and',\n}: {\n filters?: Filters;\n type?: 'number' | 'boolean';\n filtersLogicalOperator?: FilterLogicalOperator;\n}) {\n const columns = Object.keys(filters);\n\n if (!columns.length) {\n return () => (type === 'number' ? 1 : true);\n }\n\n return (feature: Feature | FeatureData) => {\n const f = feature.properties || feature;\n const featurePassesFilter = passesFilter(\n columns,\n filters,\n f as FeatureData,\n filtersLogicalOperator\n );\n\n return type === 'number'\n ? Number(featurePassesFilter)\n : featurePassesFilter;\n };\n}\n\n/**\n * Apply certain filters to a collection of features.\n * @internal\n */\nexport function applyFilters(\n features: FeatureData[],\n filters: Filters,\n filtersLogicalOperator: FilterLogicalOperator\n) {\n return Object.keys(filters).length\n ? features.filter(_buildFeatureFilter({filters, filtersLogicalOperator}))\n : features;\n}\n\n/**\n * Binary.\n * @internal\n */\nexport function buildBinaryFeatureFilter({filters = {}}: {filters: Filters}) {\n const columns = Object.keys(filters);\n\n if (!columns.length) {\n return () => 1;\n }\n\n return (featureIdIdx: number, binaryData: BinaryFeature) =>\n passesFilterUsingBinary(columns, filters, featureIdIdx, binaryData);\n}\n\nfunction getValueFromNumericProps(\n featureIdIdx: number,\n binaryData: BinaryFeature,\n {column}: {column: string}\n) {\n return binaryData.numericProps?.[column]?.value[featureIdIdx];\n}\n\nfunction getValueFromProperties(\n featureIdIdx: number,\n binaryData: BinaryFeature,\n {column}: {column: string}\n) {\n const propertyIdx = binaryData.featureIds.value[featureIdIdx];\n return (binaryData.properties[propertyIdx] as Record<string, unknown>)?.[\n column\n ];\n}\n\nconst GET_VALUE_BY_BINARY_PROP = {\n properties: getValueFromProperties,\n numericProps: getValueFromNumericProps,\n};\n\nfunction getBinaryPropertyByFilterValues(filterValues: unknown[]) {\n return typeof filterValues.flat()[0] === 'string'\n ? 'properties'\n : 'numericProps';\n}\n\nfunction getFeatureValue(\n featureIdIdx: number,\n binaryData: any,\n filter: {type: FilterType; column: string; values: unknown[]}\n) {\n const {column, values} = filter;\n const binaryProp = getBinaryPropertyByFilterValues(values);\n const getFeatureValueFn = GET_VALUE_BY_BINARY_PROP[binaryProp];\n return getFeatureValueFn(featureIdIdx, binaryData, {column});\n}\n\nfunction passesFilterUsingBinary(\n columns: string[],\n filters: Filters,\n featureIdIdx: number,\n binaryData: BinaryFeature\n) {\n return columns.every((column) => {\n const columnFilters = filters[column];\n\n return Object.entries(columnFilters).every(([type, {values}]) => {\n const filterFn = filterFunctions[type as FilterType];\n if (!filterFn) {\n throw new Error(`\"${type}\" filter is not implemented.`);\n }\n\n if (!values) return 0;\n\n const featureValue = getFeatureValue(featureIdIdx, binaryData, {\n type: type as FilterType,\n column,\n values,\n });\n\n if (featureValue === undefined || featureValue === null) return 0;\n\n return filterFn(values, featureValue);\n });\n });\n}\n","import intersects from '@turf/boolean-intersects';\nimport {FeatureCollection} from 'geojson';\nimport {FeatureData} from '../types-internal.js';\nimport {SpatialFilter} from '../types.js';\n\nexport function geojsonFeatures({\n geojson,\n spatialFilter,\n uniqueIdProperty,\n}: {\n geojson: FeatureCollection;\n spatialFilter: SpatialFilter;\n uniqueIdProperty?: string;\n}): FeatureData[] {\n let uniqueIdx = 0;\n const map = new Map();\n\n if (!spatialFilter) {\n return [];\n }\n\n for (const feature of geojson.features) {\n const uniqueId = uniqueIdProperty\n ? feature.properties![uniqueIdProperty]\n : ++uniqueIdx;\n if (!map.has(uniqueId) && intersects(spatialFilter, feature)) {\n map.set(uniqueId, feature.properties);\n }\n }\n\n return Array.from(map.values());\n}\n","// math.gl\n// SPDX-License-Identifier: MIT\n// Copyright (c) vis.gl contributors\nconst RADIANS_TO_DEGREES = (1 / Math.PI) * 180;\nconst DEGREES_TO_RADIANS = (1 / 180) * Math.PI;\nconst DEFAULT_CONFIG = {\n EPSILON: 1e-12,\n debug: false,\n precision: 4,\n printTypes: false,\n printDegrees: false,\n printRowMajor: true,\n _cartographicRadians: false\n};\n// Configuration is truly global as of v3.6 to ensure single config even if multiple copies of math.gl\n// Multiple copies of config can be quite tricky to debug...\nglobalThis.mathgl = globalThis.mathgl || { config: { ...DEFAULT_CONFIG } };\nexport const config = globalThis.mathgl.config;\nexport function configure(options) {\n // Only copy existing keys\n Object.assign(config, options);\n return config;\n}\n/**\n * Formats a value into a string\n * @param value\n * @param param1\n * @returns\n */\nexport function formatValue(value, { precision = config.precision } = {}) {\n value = round(value);\n // get rid of trailing zeros\n return `${parseFloat(value.toPrecision(precision))}`;\n}\n/**\n * Check if value is an \"array\"\n * Returns `true` if value is either an array or a typed array\n * Note: returns `false` for `ArrayBuffer` and `DataView` instances\n * @note isTypedArray and isNumericArray are often more useful in TypeScript\n */\nexport function isArray(value) {\n return Array.isArray(value) || (ArrayBuffer.isView(value) && !(value instanceof DataView));\n}\nexport function clone(array) {\n return 'clone' in array ? array.clone() : array.slice();\n}\nexport function toRadians(degrees) {\n return radians(degrees);\n}\nexport function toDegrees(radians) {\n return degrees(radians);\n}\nexport function radians(degrees, result) {\n return map(degrees, (degrees) => degrees * DEGREES_TO_RADIANS, result);\n}\nexport function degrees(radians, result) {\n return map(radians, (radians) => radians * RADIANS_TO_DEGREES, result);\n}\n/**\n * \"GLSL equivalent\" of `Math.sin`: Works on single values and vectors\n * @deprecated\n */\nexport function sin(radians, result) {\n return map(radians, (angle) => Math.sin(angle), result);\n}\n/**\n * \"GLSL equivalent\" of `Math.cos`: Works on single values and vectors\n * @deprecated\n */\nexport function cos(radians, result) {\n return map(radians, (angle) => Math.cos(angle), result);\n}\n/**\n * \"GLSL equivalent\" of `Math.tan`: Works on single values and vectors\n * @deprecated\n */\nexport function tan(radians, result) {\n return map(radians, (angle) => Math.tan(angle), result);\n}\n/**\n * \"GLSL equivalent\" of `Math.asin`: Works on single values and vectors\n * @deprecated\n */\nexport function asin(radians, result) {\n return map(radians, (angle) => Math.asin(angle), result);\n}\n/**\n * \"GLSL equivalent\" of `Math.acos`: Works on single values and vectors\n * @deprecated\n */\nexport function acos(radians, result) {\n return map(radians, (angle) => Math.acos(angle), result);\n}\n/**\n * \"GLSL equivalent\" of `Math.atan`: Works on single values and vectors\n * @deprecated\n */\nexport function atan(radians, result) {\n return map(radians, (angle) => Math.atan(angle), result);\n}\nexport function clamp(value, min, max) {\n return map(value, (value) => Math.max(min, Math.min(max, value)));\n}\nexport function lerp(a, b, t) {\n if (isArray(a)) {\n return a.map((ai, i) => lerp(ai, b[i], t));\n }\n return t * b + (1 - t) * a;\n}\n/* eslint-disable */\n/**\n * Compares any two math objects, using `equals` method if available.\n * @param a\n * @param b\n * @param epsilon\n * @returns\n */\nexport function equals(a, b, epsilon) {\n const oldEpsilon = config.EPSILON;\n if (epsilon) {\n config.EPSILON = epsilon;\n }\n try {\n if (a === b) {\n return true;\n }\n if (isArray(a) && isArray(b)) {\n if (a.length !== b.length) {\n return false;\n }\n for (let i = 0; i < a.length; ++i) {\n // eslint-disable-next-line max-depth\n if (!equals(a[i], b[i])) {\n return false;\n }\n }\n return true;\n }\n if (a && a.equals) {\n return a.equals(b);\n }\n if (b && b.equals) {\n return b.equals(a);\n }\n if (typeof a === 'number' && typeof b === 'number') {\n return Math.abs(a - b) <= config.EPSILON * Math.max(1, Math.abs(a), Math.abs(b));\n }\n return false;\n }\n finally {\n config.EPSILON = oldEpsilon;\n }\n}\nexport function exactEquals(a, b) {\n if (a === b) {\n return true;\n }\n if (a && typeof a === 'object' && b && typeof b === 'object') {\n if (a.constructor !== b.constructor) {\n return false;\n }\n if (a.exactEquals) {\n return a.exactEquals(b);\n }\n }\n if (isArray(a) && isArray(b)) {\n if (a.length !== b.length) {\n return false;\n }\n for (let i = 0; i < a.length; ++i) {\n if (!exactEquals(a[i], b[i])) {\n return false;\n }\n }\n return true;\n }\n return false;\n}\n/* eslint-enable */\nexport function withEpsilon(epsilon, func) {\n const oldPrecision = config.EPSILON;\n config.EPSILON = epsilon;\n let value;\n try {\n value = func();\n }\n finally {\n config.EPSILON = oldPrecision;\n }\n return value;\n}\n// HELPERS\nfunction round(value) {\n return Math.round(value / config.EPSILON) * config.EPSILON;\n}\n// If the array has a clone function, calls it, otherwise returns a copy\nfunction duplicateArray(array) {\n // @ts-expect-error We check for math.gl class methods\n // eslint-disable-next-line @typescript-eslint/no-unsafe-call\n return array.clone ? array.clone() : new Array(array.length);\n}\n// If the argument value is an array, applies the func element wise,\n// otherwise applies func to the argument value\nfunction map(value, func, result) {\n if (isArray(value)) {\n const array = value;\n result = result || duplicateArray(array);\n for (let i = 0; i < result.length && i < array.length; ++i) {\n const val = typeof value === 'number' ? value : value[i];\n result[i] = func(val, i, result);\n }\n return result;\n }\n return func(value);\n}\n//# sourceMappingURL=common.js.map","// Replacement for the external assert method to reduce bundle size\n// Note: We don't use the second \"message\" argument in calling code,\n// so no need to support it here\nexport function assert(condition, message) {\n if (!condition) {\n throw new Error(message || '@math.gl/web-mercator: assertion failed.');\n }\n}\n//# sourceMappingURL=assert.js.map","// TODO - THE UTILITIES IN THIS FILE SHOULD BE IMPORTED FROM WEB-MERCATOR-VIEWPORT MODULE\nimport { createMat4, transformVector, clamp, log2 } from \"./math-utils.js\";\nimport { mat4, vec2, vec3 } from '@math.gl/core';\nimport { assert } from \"./assert.js\";\n// CONSTANTS\nconst PI = Math.PI;\nconst PI_4 = PI / 4;\nconst DEGREES_TO_RADIANS = PI / 180;\nconst RADIANS_TO_DEGREES = 180 / PI;\nconst TILE_SIZE = 512;\n// Average circumference (40075 km equatorial, 40007 km meridional)\nconst EARTH_CIRCUMFERENCE = 40.03e6;\n// Latitude that makes a square world, 2 * atan(E ** PI) - PI / 2\nexport const MAX_LATITUDE = 85.051129;\n// Mapbox default altitude\nexport const DEFAULT_ALTITUDE = 1.5;\n/** Logarithimic zoom to linear scale **/\nexport function zoomToScale(zoom) {\n return Math.pow(2, zoom);\n}\n/** Linear scale to logarithimic zoom **/\nexport function scaleToZoom(scale) {\n return log2(scale);\n}\n/**\n * Project [lng,lat] on sphere onto [x,y] on 512*512 Mercator Zoom 0 tile.\n * Performs the nonlinear part of the web mercator projection.\n * Remaining projection is done with 4x4 matrices which also handles\n * perspective.\n *\n * @param lngLat - [lng, lat] coordinates\n * Specifies a point on the sphere to project onto the map.\n * @return [x,y] coordinates.\n */\nexport function lngLatToWorld(lngLat) {\n const [lng, lat] = lngLat;\n assert(Number.isFinite(lng));\n assert(Number.isFinite(lat) && lat >= -90 && lat <= 90, 'invalid latitude');\n const lambda2 = lng * DEGREES_TO_RADIANS;\n const phi2 = lat * DEGREES_TO_RADIANS;\n const x = (TILE_SIZE * (lambda2 + PI)) / (2 * PI);\n const y = (TILE_SIZE * (PI + Math.log(Math.tan(PI_4 + phi2 * 0.5)))) / (2 * PI);\n return [x, y];\n}\n/**\n * Unproject world point [x,y] on map onto {lat, lon} on sphere\n *\n * @param xy - array with [x,y] members\n * representing point on projected map plane\n * @return - array with [x,y] of point on sphere.\n * Has toArray method if you need a GeoJSON Array.\n * Per cartographic tradition, lat and lon are specified as degrees.\n */\nexport function worldToLngLat(xy) {\n const [x, y] = xy;\n const lambda2 = (x / TILE_SIZE) * (2 * PI) - PI;\n const phi2 = 2 * (Math.atan(Math.exp((y / TILE_SIZE) * (2 * PI) - PI)) - PI_4);\n return [lambda2 * RADIANS_TO_DEGREES, phi2 * RADIANS_TO_DEGREES];\n}\n/**\n * Returns the zoom level that gives a 1 meter pixel at a certain latitude\n * 1 = C*cos(y)/2^z/TILE_SIZE = C*cos(y)/2^(z+9)\n */\nexport function getMeterZoom(options) {\n const { latitude } = options;\n assert(Number.isFinite(latitude));\n const latCosine = Math.cos(latitude * DEGREES_TO_RADIANS);\n return scaleToZoom(EARTH_CIRCUMFERENCE * latCosine) - 9;\n}\n/**\n * Calculate the conversion from meter to common units at a given latitude\n * This is a cheaper version of `getDistanceScales`\n * @param latitude center latitude in degrees\n * @returns common units per meter\n */\nexport function unitsPerMeter(latitude) {\n const latCosine = Math.cos(latitude * DEGREES_TO_RADIANS);\n return TILE_SIZE / EARTH_CIRCUMFERENCE / latCosine;\n}\n/**\n * Calculate distance scales in meters around current lat/lon, both for\n * degrees and pixels.\n * In mercator projection mode, the distance scales vary significantly\n * with latitude.\n */\nexport function getDistanceScales(options) {\n const { latitude, longitude, highPrecision = false } = options;\n assert(Number.isFinite(latitude) && Number.isFinite(longitude));\n const worldSize = TILE_SIZE;\n const latCosine = Math.cos(latitude * DEGREES_TO_RADIANS);\n /**\n * Number of pixels occupied by one degree longitude around current lat/lon:\n unitsPerDegreeX = d(lngLatToWorld([lng, lat])[0])/d(lng)\n = scale * TILE_SIZE * DEGREES_TO_RADIANS / (2 * PI)\n unitsPerDegreeY = d(lngLatToWorld([lng, lat])[1])/d(lat)\n = -scale * TILE_SIZE * DEGREES_TO_RADIANS / cos(lat * DEGREES_TO_RADIANS) / (2 * PI)\n */\n const unitsPerDegreeX = worldSize / 360;\n const unitsPerDegreeY = unitsPerDegreeX / latCosine;\n /**\n * Number of pixels occupied by one meter around current lat/lon:\n */\n const altUnitsPerMeter = worldSize / EARTH_CIRCUMFERENCE / latCosine;\n /**\n * LngLat: longitude -> east and latitude -> north (bottom left)\n * UTM meter offset: x -> east and y -> north (bottom left)\n * World space: x -> east and y -> south (top left)\n *\n * Y needs to be flipped when converting delta degree/meter to delta pixels\n */\n const result = {\n unitsPerMeter: [altUnitsPerMeter, altUnitsPerMeter, altUnitsPerMeter],\n metersPerUnit: [1 / altUnitsPerMeter, 1 / altUnitsPerMeter, 1 / altUnitsPerMeter],\n unitsPerDegree: [unitsPerDegreeX, unitsPerDegreeY, altUnitsPerMeter],\n degreesPerUnit: [1 / unitsPerDegreeX, 1 / unitsPerDegreeY, 1 / altUnitsPerMeter]\n };\n /**\n * Taylor series 2nd order for 1/latCosine\n f'(a) * (x - a)\n = d(1/cos(lat * DEGREES_TO_RADIANS))/d(lat) * dLat\n = DEGREES_TO_RADIANS * tan(lat * DEGREES_TO_RADIANS) / cos(lat * DEGREES_TO_RADIANS) * dLat\n */\n if (highPrecision) {\n const latCosine2 = (DEGREES_TO_RADIANS * Math.tan(latitude * DEGREES_TO_RADIANS)) / latCosine;\n const unitsPerDegreeY2 = (unitsPerDegreeX * latCosine2) / 2;\n const altUnitsPerDegree2 = (worldSize / EARTH_CIRCUMFERENCE) * latCosine2;\n const altUnitsPerMeter2 = (altUnitsPerDegree2 / unitsPerDegreeY) * altUnitsPerMeter;\n result.unitsPerDegree2 = [0, unitsPerDegreeY2, altUnitsPerDegree2];\n result.unitsPerMeter2 = [altUnitsPerMeter2, 0, altUnitsPerMeter2];\n }\n // Main results, used for converting meters to latlng deltas and scaling offsets\n return result;\n}\n/**\n * Offset a lng/lat position by meterOffset (northing, easting)\n */\nexport function addMetersToLngLat(lngLatZ, xyz) {\n const [longitude, latitude, z0] = lngLatZ;\n const [x, y, z] = xyz;\n // eslint-disable-next-line no-shadow\n const { unitsPerMeter, unitsPerMeter2 } = getDistanceScales({\n longitude,\n latitude,\n highPrecision: true\n });\n const worldspace = lngLatToWorld(lngLatZ);\n worldspace[0] += x * (unitsPerMeter[0] + unitsPerMeter2[0] * y);\n worldspace[1] += y * (unitsPerMeter[1] + unitsPerMeter2[1] * y);\n const newLngLat = worldToLngLat(worldspace);\n const newZ = (z0 || 0) + (z || 0);\n return Number.isFinite(z0) || Number.isFinite(z) ? [newLngLat[0], newLngLat[1], newZ] : newLngLat;\n}\n/**\n *\n * view and projection matrix creation is intentionally kept compatible with\n * mapbox-gl's implementation to ensure that seamless interoperation\n * with mapbox and react-map-gl. See: https://github.com/mapbox/mapbox-gl-js\n */\nexport function getViewMatrix(options) {\n const { \n // Viewport props\n height, pitch, bearing, altitude, \n // Pre-calculated parameters\n scale, center } = options;\n // VIEW MATRIX: PROJECTS MERCATOR WORLD COORDINATES\n // Note that mercator world coordinates typically need to be flipped\n //\n // Note: As usual, matrix operation orders should be read in reverse\n // since vectors will be multiplied from the right during transformation\n const vm = createMat4();\n // Move camera to altitude (along the pitch & bearing direction)\n mat4.translate(vm, vm, [0, 0, -altitude]);\n // Rotate by bearing, and then by pitch (which tilts the view)\n mat4.rotateX(vm, vm, -pitch * DEGREES_TO_RADIANS);\n mat4.rotateZ(vm, vm, bearing * DEGREES_TO_RADIANS);\n const relativeScale = scale / height;\n mat4.scale(vm, vm, [relativeScale, relativeScale, relativeScale]);\n if (center) {\n mat4.translate(vm, vm, vec3.negate([], center));\n }\n return vm;\n}\n/**\n * Calculates mapbox compatible projection matrix from parameters\n *\n * @param options.width Width of \"viewport\" or window\n * @param options.height Height of \"viewport\" or window\n * @param options.scale Scale at the current zoom\n * @param options.center Offset of the target, vec3 in world space\n * @param options.offset Offset of the focal point, vec2 in screen space\n * @param options.pitch Camera angle in degrees (0 is straight down)\n * @param options.fovy field of view in degrees\n * @param options.altitude if provided, field of view is calculated using `altitudeToFovy()`\n * @param options.nearZMultiplier control z buffer\n * @param options.farZMultiplier control z buffer\n * @returns project parameters object\n */\nexport function getProjectionParameters(options) {\n const { width, height, altitude, pitch = 0, offset, center, scale, nearZMultiplier = 1, farZMultiplier = 1 } = options;\n let { fovy = altitudeToFovy(DEFAULT_ALTITUDE) } = options;\n // For back-compatibility allow field of view to be\n // derived from altitude\n if (altitude !== undefined) {\n fovy = altitudeToFovy(altitude);\n }\n const fovRadians = fovy * DEGREES_TO_RADIANS;\n const pitchRadians = pitch * DEGREES_TO_RADIANS;\n // Distance from camera to the target\n const focalDistance = fovyToAltitude(fovy);\n let cameraToSeaLevelDistance = focalDistance;\n if (center) {\n cameraToSeaLevelDistance += (center[2] * scale) / Math.cos(pitchRadians) / height;\n }\n const fovAboveCenter = fovRadians * (0.5 + (offset ? offset[1] : 0) / height);\n // Find the distance from the center point to the center top\n // in focal distance units using law of sines.\n const topHalfSurfaceDistance = (Math.sin(fovAboveCenter) * cameraToSeaLevelDistance) /\n Math.sin(clamp(Math.PI / 2 - pitchRadians - fovAboveCenter, 0.01, Math.PI - 0.01));\n // Calculate z distance of the farthest fragment that should be rendered.\n const furthestDistance = Math.sin(pitchRadians) * topHalfSurfaceDistance + cameraToSeaLevelDistance;\n // Matches mapbox limit\n const horizonDistance = cameraToSeaLevelDistance * 10;\n // Calculate z value of the farthest fragment that should be rendered.\n const farZ = Math.min(furthestDistance * farZMultiplier, horizonDistance);\n return {\n fov: fovRadians,\n aspect: width / height,\n focalDistance,\n near: nearZMultiplier,\n far: farZ\n };\n}\n/**\n * CALCULATE PROJECTION MATRIX: PROJECTS FROM CAMERA (VIEW) SPACE TO CLIPSPACE\n *\n * To match mapbox's z buffer:\n * - \\<= 0.28: nearZMultiplier: 0.1, farZmultiplier: 1\n * - \\>= 0.29: nearZMultiplier: 1 / height, farZMultiplier: 1.01\n *\n * @param options Viewport options\n * @param options.width Width of \"viewport\" or window\n * @param options.height Height of \"viewport\" or window\n * @param options.scale Scale at the current zoom\n * @param options.center Offset of the target, vec3 in world space\n * @param options.offset Offset of the focal point, vec2 in screen space\n * @param options.pitch Camera angle in degrees (0 is straight down)\n * @param options.fovy field of view in degrees\n * @param options.altitude if provided, field of view is calculated using `altitudeToFovy()`\n * @param options.nearZMultiplier control z buffer\n * @param options.farZMultiplier control z buffer\n * @returns 4x4 projection matrix\n */\nexport function getProjectionMatrix(options) {\n const { fov, aspect, near, far } = getProjectionParameters(options);\n const projectionMatrix = mat4.perspective([], fov, // fov in radians\n aspect, // aspect ratio\n near, // near plane\n far // far plane\n );\n return projectionMatrix;\n}\n/**\n *\n * Convert an altitude to field of view such that the\n * focal distance is equal to the altitude\n *\n * @param altitude - altitude of camera in screen units\n * @return fovy field of view in degrees\n */\nexport function altitudeToFovy(altitude) {\n return 2 * Math.atan(0.5 / altitude) * RADIANS_TO_DEGREES;\n}\n/**\n *\n * Convert an field of view such that the\n * focal distance is equal to the altitude\n *\n * @param fovy - field of view in degrees\n * @return altitude altitude of camera in screen units\n */\nexport function fovyToAltitude(fovy) {\n return 0.5 / Math.tan(0.5 * fovy * DEGREES_TO_RADIANS);\n}\n// Project flat coordinates to pixels on screen.\nexport function worldToPixels(xyz, pixelProjectionMatrix) {\n const [x, y, z = 0] = xyz;\n assert(Number.isFinite(x) && Number.isFinite(y) && Number.isFinite(z));\n return transformVector(pixelProjectionMatrix, [x, y, z, 1]);\n}\n/**\n * Unproject pixels on screen to flat coordinates.\n *\n * @param xyz - pixel coordinate on screen.\n * @param pixelUnprojectionMatrix - unprojection matrix 4x4\n * @param targetZ - if pixel coordinate does not have a 3rd component (depth),\n * targetZ is used as the elevation plane to unproject onto\n * @return [x, y, Z] flat coordinates on 512*512 Mercator Zoom 0 tile.\n */\nexport function pixelsToWorld(xyz, pixelUnprojectionMatrix, targetZ = 0) {\n const [x, y, z] = xyz;\n assert(Number.isFinite(x) && Number.isFinite(y), 'invalid pixel coordinate');\n if (Number.isFinite(z)) {\n // Has depth component\n const coord = transformVector(pixelUnprojectionMatrix, [x, y, z, 1]);\n return coord;\n }\n // since we don't know the correct projected z value for the point,\n // unproject two points to get a line and then find the point on that line with z=0\n const coord0 = transformVector(pixelUnprojectionMatrix, [x, y, 0, 1]);\n const coord1 = transformVector(pixelUnprojectionMatrix, [x, y, 1, 1]);\n const z0 = coord0[2];\n const z1 = coord1[2];\n const t = z0 === z1 ? 0 : ((targetZ || 0) - z0) / (z1 - z0);\n return vec2.lerp([], coord0, coord1, t);\n}\n//# sourceMappingURL=web-mercator-utils.js.map","import {lngLatToWorld} from '@math.gl/web-mercator';\nimport {BBox, GeoJsonGeometryTypes, Geometry, Position} from 'geojson';\n\ntype TransformFn = (coordinates: any[], bbox: Position[]) => any[];\n\nconst TRANSFORM_FN: Record<\n Exclude<GeoJsonGeometryTypes, 'GeometryCollection'>,\n TransformFn\n> = {\n Point: transformPoint,\n MultiPoint: transformMultiPoint,\n LineString: transformLineString,\n MultiLineString: transformMultiLineString,\n Polygon: transformPolygon,\n MultiPolygon: transformMultiPolygon,\n};\n\n/**\n * Transform WGS84 coordinates to tile coords.\n * It's the inverse of deck.gl coordinate-transform (https://github.com/visgl/deck.gl/blob/master/modules/geo-layers/src/mvt-layer/coordinate-transform.js)\n *\n * @param geometry - any valid geojson geometry\n * @param bbox - geojson bbox\n */\nexport function transformToTileCoords<T extends Geometry>(\n geometry: T,\n bbox: BBox\n): T {\n const [west, south, east, north] = bbox;\n const nw = projectFlat([west, north]);\n const se = projectFlat([east, south]);\n const projectedBbox = [nw, se];\n\n if (geometry.type === 'GeometryCollection') {\n throw new Error('Unsupported geometry type GeometryCollection');\n }\n\n const transformFn = TRANSFORM_FN[geometry.type];\n const coordinates = transformFn(geometry.coordinates, projectedBbox);\n return {...geometry, coordinates};\n}\n\nfunction transformPoint([pointX, pointY]: Position, [nw, se]: Position[]) {\n const x = inverseLerp(nw[0], se[0], pointX);\n const y = inverseLerp(nw[1], se[1], pointY);\n\n return [x, y];\n}\n\nfunction getPoints(geometry: Position[], bbox: Position[]) {\n return geometry.map((g) => transformPoint(projectFlat(g), bbox));\n}\n\nfunction transformMultiPoint(multiPoint: Position[], bbox: Position[]) {\n return getPoints(multiPoint, bbox);\n}\n\nfunction transformLineString(line: Position[], bbox: Position[]) {\n return getPoints(line, bbox);\n}\n\nfunction transformMultiLineString(\n multiLineString: Position[][],\n bbox: Position[]\n) {\n return multiLineString.map((lineString) =>\n transformLineString(lineString, bbox)\n );\n}\n\nfunction transformPolygon(polygon: Position[][], bbox: Position[]) {\n return polygon.map((polygonRing) => getPoints(polygonRing, bbox));\n}\n\nfunction transformMultiPolygon(multiPolygon: Position[][][], bbox: Position[]) {\n return multiPolygon.map((polygon) => transformPolygon(polygon, bbox));\n}\n\nfunction projectFlat(xyz: Position): Position {\n return lngLatToWorld(xyz);\n}\n\nfunction inverseLerp(a: number, b: number, x: number): number {\n return (x - a) / (b - a);\n}\n","import {lerp} from '@math.gl/core';\nimport {lngLatToWorld, worldToLngLat} from '@math.gl/web-mercator';\nimport {BBox, GeoJsonGeometryTypes, Geometry, Position} from 'geojson';\n\ntype TransformFn = (coordinates: any[], bbox: Position[]) => any[];\n\nconst TRANSFORM_FN: Record<\n Exclude<GeoJsonGeometryTypes, 'GeometryCollection'>,\n TransformFn\n> = {\n Point: transformPoint,\n MultiPoint: transformMultiPoint,\n LineString: transformLineString,\n MultiLineString: transformMultiLineString,\n Polygon: transformPolygon,\n MultiPolygon: transformMultiPolygon,\n};\n\n/**\n * Transform tile coords to WGS84 coordinates.\n *\n * @param geometry - any valid geojson geometry\n * @param bbox - geojson bbox\n */\nexport function transformTileCoordsToWGS84<T extends Geometry>(\n geometry: T,\n bbox: BBox\n): T {\n const [west, south, east, north] = bbox;\n const nw = lngLatToWorld([west, north]);\n const se = lngLatToWorld([east, south]);\n const projectedBbox = [nw, se];\n\n if (geometry.type === 'GeometryCollection') {\n throw new Error('Unsupported geometry type GeometryCollection');\n }\n\n const transformFn = TRANSFORM_FN[geometry.type];\n const coordinates = transformFn(geometry.coordinates, projectedBbox);\n return {...geometry, coordinates};\n}\n\nfunction transformPoint([pointX, pointY]: Position, [nw, se]: Position[]) {\n const x = lerp(nw[0], se[0], pointX);\n const y = lerp(nw[1], se[1], pointY);\n\n return worldToLngLat([x, y]);\n}\n\nfunction getPoints(geometry: Position[], bbox: Position[]) {\n return geometry.map((g) => transformPoint(g, bbox));\n}\n\nfunction transformMultiPoint(multiPoint: Position[], bbox: Position[]) {\n return getPoints(multiPoint, bbox);\n}\n\nfunction transformLineString(line: Position[], bbox: Position[]) {\n return getPoints(line, bbox);\n}\n\nfunction transformMultiLineString(\n multiLineString: Position[][],\n bbox: Position[]\n) {\n return multiLineString.map((lineString) =>\n transformLineString(lineString, bbox)\n );\n}\n\nfunction transformPolygon(polygon: Position[][], bbox: Position[]) {\n return polygon.map((polygonRing) => getPoints(polygonRing, bbox));\n}\n\nfunction transformMultiPolygon(multiPolygon: Position[][][], bbox: Position[]) {\n return multiPolygon.map((polygon) => transformPolygon(polygon, bbox));\n}\n","import bboxPolygon from '@turf/bbox-polygon';\nimport intersects from '@turf/boolean-intersects';\nimport booleanWithin from '@turf/boolean-within';\nimport intersect from '@turf/intersect';\nimport {transformToTileCoords} from '../utils/transformToTileCoords.js';\nimport {transformTileCoordsToWGS84} from '../utils/transformTileCoordsToWGS84.js';\nimport {TileFormat} from '../constants.js';\nimport {\n BBox,\n Feature,\n Geometry,\n LineString,\n MultiPolygon,\n Point,\n Polygon,\n Position,\n} from 'geojson';\nimport {SpatialFilter, Tile} from '../types.js';\nimport {TileFeatureExtractOptions} from './tileFeatures.js';\nimport {featureCollection} from '@turf/helpers';\nimport {FeatureData} from '../types-internal.js';\nimport {\n BinaryAttribute,\n BinaryFeature,\n BinaryGeometryType,\n BinaryPointFeature,\n TypedArrayConstructor,\n} from '@loaders.gl/schema';\n\nexport const FEATURE_GEOM_PROPERTY = '__geomValue';\n\ntype TileMap = Map<unknown, unknown>;\n\ntype TileDataInternal = {\n uniqueId: string | number | undefined;\n properties: any;\n numericProps: Record<string, number>;\n};\n\nexport function tileFeaturesGeometries({\n tiles,\n tileFormat,\n spatialFilter,\n uniqueIdProperty,\n options,\n}: {\n tiles: Tile[];\n tileFormat?: TileFormat;\n spatialFilter: SpatialFilter;\n uniqueIdProperty?: string;\n options?: {storeGeometry?: boolean};\n}): FeatureData[] {\n const map = new Map();\n\n for (const tile of tiles) {\n // Discard if it's not a visible tile (only check false value, not undefined)\n // or tile has not data\n if (tile.isVisible === false || !tile.data) {\n continue;\n }\n\n const bbox = [\n tile.bbox.west,\n tile.bbox.south,\n tile.bbox.east,\n tile.bbox.north,\n ] as BBox;\n const bboxToGeom = bboxPolygon(bbox);\n const tileIsFullyVisible = booleanWithin(bboxToGeom, spatialFilter);\n\n // Clip the geometry to intersect with the tile\n const spatialFilterFeature: Feature<Polygon | MultiPolygon> = {\n type: 'Feature',\n geometry: spatialFilter,\n properties: {},\n };\n const clippedGeometryToIntersect = intersect(\n featureCollection([bboxToGeom, spatialFilterFeature])\n );\n\n if (!clippedGeometryToIntersect) {\n continue;\n }\n\n // We assume that MVT tileFormat uses local coordinates so we transform the geometry to intersect to tile coordinates [0..1],\n // while in the case of 'geojson' or binary, the geometries are already in WGS84\n const transformedGeometryToIntersect =\n tileFormat === TileFormat.MVT\n ? transformToTileCoords(clippedGeometryToIntersect.geometry, bbox)\n : clippedGeometryToIntersect.geometry;\n\n createIndicesForPoints(tile.data.points!);\n\n calculateFeatures({\n map,\n tileIsFullyVisible,\n geometryIntersection: transformedGeometryToIntersect,\n data: tile.data.points!,\n type: 'Point',\n bbox,\n tileFormat,\n uniqueIdProperty,\n options,\n });\n calculateFeatures({\n map,\n tileIsFullyVisible,\n geometryIntersection: transformedGeometryToIntersect,\n data: tile.data.lines!,\n type: 'LineString',\n bbox,\n tileFormat,\n uniqueIdProperty,\n options,\n });\n calculateFeatures({\n map,\n tileIsFullyVisible,\n geometryIntersection: transformedGeometryToIntersect,\n data: tile.data.polygons!,\n type: 'Polygon',\n bbox,\n tileFormat,\n uniqueIdProperty,\n options,\n });\n }\n return Array.from(map.values());\n}\n\nfunction processTileFeatureProperties({\n map,\n data,\n startIndex,\n endIndex,\n type,\n bbox,\n tileFormat,\n uniqueIdProperty,\n storeGeometry,\n geometryIntersection,\n}: {\n map: TileMap;\n data: BinaryFeature;\n startIndex: number;\n endIndex: number;\n type: BinaryGeometryType;\n bbox: BBox;\n tileFormat?: TileFormat;\n uniqueIdProperty?: string;\n storeGeometry: boolean;\n geometryIntersection?: Geometry;\n}) {\n const tileProps = getPropertiesFromTile(data, startIndex);\n const uniquePropertyValue = getUniquePropertyValue(\n tileProps,\n uniqueIdProperty,\n map\n );\n\n if (!uniquePropertyValue || map.has(uniquePropertyValue)) {\n return;\n }\n let geometry: Geometry | null = null;\n\n // Only calculate geometry if necessary\n if (storeGeometry || geometryIntersection) {\n const {positions} = data;\n const ringCoordinates = getRingCoordinatesFor(\n startIndex,\n endIndex,\n positions\n );\n geometry = getFeatureByType(ringCoordinates, type);\n }\n\n // If intersection is required, check before proceeding\n if (\n geometry &&\n geometryIntersection &&\n !intersects(geometry, geometryIntersection)\n ) {\n return;\n }\n\n const properties = parseProperties(tileProps);\n\n // Only save geometry if necessary\n if (storeGeometry && geometry) {\n properties[FEATURE_GEOM_PROPERTY] =\n tileFormat === TileFormat.MVT\n ? transformTileCoordsToWGS84(geometry, bbox)\n : geometry;\n }\n map.set(uniquePropertyValue, properties);\n}\n\nfunction addIntersectedFeaturesInTile({\n map,\n data,\n geometryIntersection,\n type,\n bbox,\n tileFormat,\n uniqueIdProperty,\n options,\n}: {\n map: TileMap;\n data: BinaryFeature;\n geometryIntersection: Geometry;\n type: BinaryGeometryType;\n bbox: BBox;\n tileFormat?: TileFormat;\n uniqueIdProperty?: string;\n options?: TileFeatureExtractOptions;\n}) {\n const indices = getIndices(data);\n const storeGeometry = options?.storeGeometry || false;\n\n for (let i = 0; i < indices.length - 1; i++) {\n const startIndex = indices[i];\n const endIndex = indices[i + 1];\n processTileFeatureProperties({\n map,\n data,\n startIndex,\n endIndex,\n type,\n bbox,\n tileFormat,\n uniqueIdProperty,\n storeGeometry,\n geometryIntersection,\n });\n }\n}\n\nfunction getIndices(data: BinaryFeature) {\n let indices: BinaryAttribute;\n switch (data.type) {\n case 'Point':\n // @ts-expect-error Missing or changed types?\n indices = data.pointIndices;\n break;\n case 'LineString':\n indices = data.pathIndices;\n break;\n case 'Polygon':\n indices = data.primitivePolygonIndices;\n break;\n default:\n throw new Error(`Unexpected type, \"${(data as BinaryFeature).type}\"`);\n }\n return indices.value;\n}\n\nfunction getFeatureId(data: BinaryFeature, startIndex: number) {\n return data.featureIds.value[startIndex];\n}\n\nfunction getPropertiesFromTile(data: BinaryFeature, startIndex: number) {\n const featureId = getFeatureId(data, startIndex);\n const {properties, numericProps, fields} = data;\n const result: TileDataInternal = {\n uniqueId: (fields?.[featureId] as {id: string | number})?.id,\n properties: properties[featureId],\n numericProps: {},\n };\n\n for (const key in numericProps) {\n result.numericProps[key] = numericProps[key].value[startIndex];\n }\n\n return result;\n}\n\nfunction parseProperties(tileProps: TileDataInternal) {\n const {properties, numericProps} = tileProps;\n return Object.assign({}, properties, numericProps);\n}\n\nfunction getUniquePropertyValue(\n tileProps: TileDataInternal,\n uniqueIdProperty: string | undefined,\n map: TileMap\n) {\n if (uniqueIdProperty) {\n return getValueFromTileProps(tileProps, uniqueIdProperty);\n }\n\n if (tileProps.uniqueId) {\n return tileProps.uniqueId;\n }\n\n const artificialId = map.size + 1; // a counter, assumed as a valid new id\n return (\n getValueFromTileProps(tileProps, 'cartodb_id') ||\n getValueFromTileProps(tileProps, 'geoid') ||\n artificialId\n );\n}\n\nfunction getValueFromTileProps(\n tileProps: TileDataInternal,\n propertyName: string\n) {\n const {properties, numericProps} = tileProps;\n return numericProps[propertyName] || properties[propertyName];\n}\n\nfunction getFeatureByType(\n coordinates: Position[],\n type: BinaryGeometryType\n): Polygon | LineString | Point {\n switch (type) {\n case 'Polygon':\n return {type: 'Polygon', coordinates: [coordinates]};\n case 'LineString':\n return {type: 'LineString', coordinates};\n case 'Point':\n return {type: 'Point', coordinates: coordinates[0]};\n default:\n throw new Error('Invalid geometry type');\n }\n}\n\nfunction getRingCoordinatesFor(\n startIndex: number,\n endIndex: number,\n positions: BinaryAttribute\n) {\n const ringCoordinates = [];\n\n for (let j = startIndex; j < endIndex; j++) {\n ringCoordinates.push(\n Array.from(\n positions.value.subarray(j * positions.size, (j + 1) * positions.size)\n )\n );\n }\n\n return ringCoordinates;\n}\n\nfunction calculateFeatures({\n map,\n tileIsFullyVisible,\n geometryIntersection,\n data,\n type,\n bbox,\n tileFormat,\n uniqueIdProperty,\n options,\n}: {\n map: TileMap;\n tileIsFullyVisible: boolean;\n geometryIntersection: SpatialFilter;\n data: BinaryFeature;\n type: BinaryGeometryType;\n bbox: BBox;\n tileFormat?: TileFormat;\n uniqueIdProperty?: string;\n options?: TileFeatureExtractOptions;\n}) {\n if (!data?.properties.length) {\n return;\n }\n\n if (tileIsFullyVisible) {\n addAllFeaturesInTile({\n map,\n data,\n type,\n bbox,\n tileFormat,\n uniqueIdProperty,\n options,\n });\n } else {\n addIntersectedFeaturesInTile({\n map,\n data,\n geometryIntersection,\n type,\n bbox,\n tileFormat,\n uniqueIdProperty,\n options,\n });\n }\n}\n\nfunction addAllFeaturesInTile({\n map,\n data,\n type,\n bbox,\n tileFormat,\n uniqueIdProperty,\n options,\n}: {\n map: TileMap;\n data: BinaryFeature;\n type: BinaryGeometryType;\n bbox: BBox;\n tileFormat?: TileFormat;\n uniqueIdProperty?: string;\n options?: TileFeatureExtractOptions;\n}) {\n const indices = getIndices(data);\n const storeGeometry = options?.storeGeometry || false;\n for (let i = 0; i < indices.length - 1; i++) {\n const startIndex = indices[i];\n const endIndex = indices[i + 1];\n processTileFeatureProperties({\n map,\n data,\n startIndex,\n endIndex,\n type,\n bbox,\n tileFormat,\n uniqueIdProperty,\n storeGeometry,\n });\n }\n}\n\nfunction createIndicesForPoints(data: BinaryPointFeature) {\n const featureIds = data.featureIds.value;\n const lastFeatureId = featureIds[featureIds.length - 1];\n const PointIndicesArray = featureIds.constructor as TypedArrayConstructor;\n\n const pointIndices: BinaryAttribute = {\n value: new PointIndicesArray(featureIds.length + 1),\n size: 1,\n };\n pointIndices.value.set(featureIds);\n pointIndices.value.set([lastFeatureId + 1], featureIds.length);\n\n // @ts-expect-error Missing or changed types?\n data.pointIndices = pointIndices;\n}\n","// a tile is an array [x,y,z]\nvar d2r = Math.PI / 180,\n r2d = 180 / Math.PI;\n\nfunction tileToBBOX (tile) {\n var e = tile2lon(tile[0]+1,tile[2]);\n var w = tile2lon(tile[0],tile[2]);\n var s = tile2lat(tile[1]+1,tile[2]);\n var n = tile2lat(tile[1],tile[2]);\n return [w,s,e,n];\n}\n\nfunction tileToGeoJSON (tile) {\n var bbox = tileToBBOX(tile);\n var poly = {\n type: 'Polygon',\n coordinates:\n [\n [\n [bbox[0],bbox[1]],\n [bbox[0], bbox[3]],\n [bbox[2], bbox[3]],\n [bbox[2], bbox[1]],\n [bbox[0], bbox[1]]\n ]\n ]\n };\n return poly;\n}\n\nfunction tile2lon(x, z) {\n return (x/Math.pow(2,z)*360-180);\n}\n\nfunction tile2lat(y, z) {\n var n=Math.PI-2*Math.PI*y/Math.pow(2,z);\n return (r2d*Math.atan(0.5*(Math.exp(n)-Math.exp(-n))));\n}\n\nfunction pointToTile(lon, lat, z) {\n var tile = pointToTileFraction(lon, lat, z);\n tile[0] = Math.floor(tile[0]);\n tile[1] = Math.floor(tile[1]);\n return tile;\n}\n\nfunction getChildren (tile) {\n return [\n [tile[0]*2, tile[1]*2, tile[2]+1],\n [tile[0]*2+1, tile[1]*2, tile[2 ]+1],\n [tile[0]*2+1, tile[1]*2+1, tile[2]+1],\n [tile[0]*2, tile[1]*2+1, tile[2]+1],\n ];\n}\n\nfunction getParent (tile) {\n // top left\n if(tile[0]%2===0 && tile[1]%2===0) {\n return [tile[0]/2, tile[1]/2, tile[2]-1];\n }\n // bottom left\n else if((tile[0]%2===0) && (!tile[1]%2===0)) {\n return [tile[0]/2, (tile[1]-1)/2, tile[2]-1];\n }\n // top right\n else if((!tile[0]%2===0) && (tile[1]%2===0)) {\n return [(tile[0]-1)/2, (tile[1])/2, tile[2]-1];\n }\n // bottom right\n else {\n return [(tile[0]-1)/2, (tile[1]-1)/2, tile[2]-1];\n }\n}\n\nfunction getSiblings (tile) {\n return getChildren(getParent(tile));\n}\n\nfunction hasSiblings(tile, tiles) {\n var siblings = getSiblings(tile);\n for (var i = 0; i < siblings.length; i++) {\n if (!hasTile(tiles, siblings[i])) return false;\n }\n return true;\n}\n\nfunction hasTile(tiles, tile) {\n for (var i = 0; i < tiles.length; i++) {\n if (tilesEqual(tiles[i], tile)) return true;\n }\n return false;\n}\n\nfunction tilesEqual(tile1, tile2) {\n return (\n tile1[0] === tile2[0] &&\n tile1[1] === tile2[1] &&\n tile1[2] === tile2[2]\n );\n}\n\nfunction tileToQuadkey(tile) {\n var index = '';\n for (var z = tile[2]; z > 0; z--) {\n var b = 0;\n var mask = 1 << (z - 1);\n if ((tile[0] & mask) !== 0) b++;\n if ((tile[1] & mask) !== 0) b += 2;\n index += b.toString();\n }\n return index;\n}\n\nfunction quadkeyToTile(quadkey) {\n var x = 0;\n var y = 0;\n var z = quadkey.length;\n\n for (var i = z; i > 0; i--) {\n var mask = 1 << (i - 1);\n switch (quadkey[z - i]) {\n case '0':\n break;\n\n case '1':\n x |= mask;\n break;\n\n case '2':\n y |= mask;\n break;\n\n case '3':\n x |= mask;\n y |= mask;\n break;\n }\n }\n return [x,y,z];\n}\n\nfunction bboxToTile(bboxCoords) {\n var min = pointToTile(bboxCoords[0], bboxCoords[1], 32);\n var max = pointToTile(bboxCoords[2], bboxCoords[3], 32);\n var bbox = [min[0], min[1], max[0], max[1]];\n\n var z = getBboxZoom(bbox);\n if (z === 0) return [0,0,0];\n var x = bbox[0] >>> (32 - z);\n var y = bbox[1] >>> (32 - z);\n return [x,y,z];\n}\n\nfunction getBboxZoom(bbox) {\n var MAX_ZOOM = 28;\n for (var z = 0; z < MAX_ZOOM; z++) {\n var mask = 1 << (32 - (z + 1));\n if (((bbox[0] & mask) != (bbox[2] & mask)) ||\n ((bbox[1] & mask) != (bbox[3] & mask))) {\n return z;\n }\n }\n\n return MAX_ZOOM;\n}\n\nfunction pointToTileFraction(lon, lat, z) {\n var sin = Math.sin(lat * d2r),\n z2 = Math.pow(2, z),\n x = z2 * (lon / 360 + 0.5),\n y = z2 * (0.5 - 0.25 * Math.log((1 + sin) / (1 - sin)) / Math.PI);\n return [x, y, z];\n}\n\nmodule.exports = {\n tileToGeoJSON: tileToGeoJSON,\n tileToBBOX: tileToBBOX,\n getChildren: getChildren,\n getParent: getParent,\n getSiblings: getSiblings,\n hasTile: hasTile,\n hasSiblings: hasSiblings,\n tilesEqual: tilesEqual,\n tileToQuadkey: tileToQuadkey,\n quadkeyToTile: quadkeyToTile,\n pointToTile: pointToTile,\n bboxToTile: bboxToTile,\n pointToTileFraction: pointToTileFraction\n};\n","var tilebelt = require('tilebelt');\n\n/**\n * Given a geometry, create cells and return them in a format easily readable\n * by any software that reads GeoJSON.\n *\n * @alias geojson\n * @param {Object} geom GeoJSON geometry\n * @param {Object} limits an object with min_zoom and max_zoom properties\n * specifying the minimum and maximum level to be tiled.\n * @returns {Object} FeatureCollection of cells formatted as GeoJSON Features\n */\nexports.geojson = function (geom, limits) {\n return {\n type: 'FeatureCollection',\n features: getTiles(geom, limits).map(tileToFeature)\n };\n};\n\nfunction tileToFeature(t) {\n return {\n type: 'Feature',\n geometry: tilebelt.tileToGeoJSON(t),\n properties: {}\n };\n}\n\n/**\n * Given a geometry, create cells and return them in their raw form,\n * as an array of cell identifiers.\n *\n * @alias tiles\n * @param {Object} geom GeoJSON geometry\n * @param {Object} limits an object with min_zoom and max_zoom properties\n * specifying the minimum and maximum level to be tiled.\n * @returns {Array<Array<number>>} An array of tiles given as [x, y, z] arrays\n */\nexports.tiles = getTiles;\n\n/**\n * Given a geometry, create cells and return them as\n * [quadkey](http://msdn.microsoft.com/en-us/library/bb259689.aspx) indexes.\n *\n * @alias indexes\n * @param {Object} geom GeoJSON geometry\n * @param {Object} limits an object with min_zoom and max_zoom properties\n * specifying the minimum and maximum level to be tiled.\n * @returns {Array<String>} An array of tiles given as quadkeys.\n */\nexports.indexes = function (geom, limits) {\n return getTiles(geom, limits).map(tilebelt.tileToQuadkey);\n};\n\nfunction getTiles(geom, limits) {\n var i, tile,\n coords = geom.coordinates,\n maxZoom = limits.max_zoom,\n tileHash = {},\n tiles = [];\n\n if (geom.type === 'Point') {\n return [tilebelt.pointToTile(coords[0], coords[1], maxZoom)];\n\n } else if (geom.type === 'MultiPoint') {\n for (i = 0; i < coords.length; i++) {\n tile = tilebelt.pointToTile(coords[i][0], coords[i][1], maxZoom);\n tileHash[toID(tile[0], tile[1], tile[2])] = true;\n }\n } else if (geom.type === 'LineString') {\n lineCover(tileHash, coords, maxZoom);\n\n } else if (geom.type === 'MultiLineString') {\n for (i = 0; i < coords.length; i++) {\n lineCover(tileHash, coords[i], maxZoom);\n }\n } else if (geom.type === 'Polygon') {\n polygonCover(tileHash, tiles, coords, maxZoom);\n\n } else if (geom.type === 'MultiPolygon') {\n for (i = 0; i < coords.length; i++) {\n polygonCover(tileHash, tiles, coords[i], maxZoom);\n }\n } else {\n throw new Error('Geometry type not implemented');\n }\n\n if (limits.min_zoom !== maxZoom) {\n // sync tile hash and tile array so that both contain the same tiles\n var len = tiles.length;\n appendHashTiles(tileHash, tiles);\n for (i = 0; i < len; i++) {\n var t = tiles[i];\n tileHash[toID(t[0], t[1], t[2])] = true;\n }\n return mergeTiles(tileHash, tiles, limits);\n }\n\n appendHashTiles(tileHash, tiles);\n return tiles;\n}\n\nfunction mergeTiles(tileHash, tiles, limits) {\n var mergedTiles = [];\n\n for (var z = limits.max_zoom; z > limits.min_zoom; z--) {\n\n var parentTileHash = {};\n var parentTiles = [];\n\n for (var i = 0; i < tiles.length; i++) {\n var t = tiles[i];\n\n if (t[0] % 2 === 0 && t[1] % 2 === 0) {\n var id2 = toID(t[0] + 1, t[1], z),\n id3 = toID(t[0], t[1] + 1, z),\n id4 = toID(t[0] + 1, t[1] + 1, z);\n\n if (tileHash[id2] && tileHash[id3] && tileHash[id4]) {\n tileHash[toID(t[0], t[1], t[2])] = false;\n tileHash[id2] = false;\n tileHash[id3] = false;\n tileHash[id4] = false;\n\n var parentTile = [t[0] / 2, t[1] / 2, z - 1];\n\n if (z - 1 === limits.min_zoom) mergedTiles.push(parentTile);\n else {\n parentTileHash[toID(t[0] / 2, t[1] / 2, z - 1)] = true;\n parentTiles.push(parentTile);\n }\n }\n }\n }\n\n for (i = 0; i < tiles.length; i++) {\n t = tiles[i];\n if (tileHash[toID(t[0], t[1], t[2])]) mergedTiles.push(t);\n }\n\n tileHash = parentTileHash;\n tiles = parentTiles;\n }\n\n return mergedTiles;\n}\n\nfunction polygonCover(tileHash, tileArray, geom, zoom) {\n var intersections = [];\n\n for (var i = 0; i < geom.length; i++) {\n var ring = [];\n lineCover(tileHash, geom[i], zoom, ring);\n\n for (var j = 0, len = ring.length, k = len - 1; j < len; k = j++) {\n var m = (j + 1) % len;\n var y = ring[j][1];\n\n // add interesction if it's not local extremum or duplicate\n if ((y > ring[k][1] || y > ring[m][1]) && // not local minimum\n (y < ring[k][1] || y < ring[m][1]) && // not local maximum\n y !== ring[m][1]) intersections.push(ring[j]);\n }\n }\n\n intersections.sort(compareTiles); // sort by y, then x\n\n for (i = 0; i < intersections.length; i += 2) {\n // fill tiles between pairs of intersections\n y = intersections[i][1];\n for (var x = intersections[i][0] + 1; x < intersections[i + 1][0]; x++) {\n var id = toID(x, y, zoom);\n if (!tileHash[id]) {\n tileArray.push([x, y, zoom]);\n }\n }\n }\n}\n\nfunction compareTiles(a, b) {\n return (a[1] - b[1]) || (a[0] - b[0]);\n}\n\nfunction lineCover(tileHash, coords, maxZoom, ring) {\n var prevX, prevY;\n\n for (var i = 0; i < coords.length - 1; i++) {\n var start = tilebelt.pointToTileFraction(coords[i][0], coords[i][1], maxZoom),\n stop = tilebelt.pointToTileFraction(coords[i + 1][0], coords[i + 1][1], maxZoom),\n x0 = start[0],\n y0 = start[1],\n x1 = stop[0],\n y1 = stop[1],\n dx = x1 - x0,\n dy = y1 - y0;\n\n if (dy === 0 && dx === 0) continue;\n\n var sx = dx > 0 ? 1 : -1,\n sy = dy > 0 ? 1 : -1,\n x = Math.floor(x0),\n y = Math.floor(y0),\n tMaxX = dx === 0 ? Infinity : Math.abs(((dx > 0 ? 1 : 0) + x - x0) / dx),\n tMaxY = dy === 0 ? Infinity : Math.abs(((dy > 0 ? 1 : 0) + y - y0) / dy),\n tdx = Math.abs(sx / dx),\n tdy = Math.abs(sy / dy);\n\n if (x !== prevX || y !== prevY) {\n tileHash[toID(x, y, maxZoom)] = true;\n if (ring && y !== prevY) ring.push([x, y]);\n prevX = x;\n prevY = y;\n }\n\n while (tMaxX < 1 || tMaxY < 1) {\n if (tMaxX < tMaxY) {\n tMaxX += tdx;\n x += sx;\n } else {\n tMaxY += tdy;\n y += sy;\n }\n tileHash[toID(x, y, maxZoom)] = true;\n if (ring && y !== prevY) ring.push([x, y]);\n prevX = x;\n prevY = y;\n }\n }\n\n if (ring && y === ring[0][1]) ring.pop();\n}\n\nfunction appendHashTiles(hash, tiles) {\n var keys = Object.keys(hash);\n for (var i = 0; i < keys.length; i++) {\n tiles.push(fromID(+keys[i]));\n }\n}\n\nfunction toID(x, y, z) {\n var dim = 2 * (1 << z);\n return ((dim * y + x) * 32) + z;\n}\n\nfunction fromID(id) {\n var z = id % 32,\n dim = 2 * (1 << z),\n xy = ((id - z) / 32),\n x = xy % dim,\n y = ((xy - x) / dim) % dim;\n return [x, y, z];\n}\n","import { tiles } from '@mapbox/tile-cover';\nconst B = [\n 0x5555555555555555n,\n 0x3333333333333333n,\n 0x0f0f0f0f0f0f0f0fn,\n 0x00ff00ff00ff00ffn,\n 0x0000ffff0000ffffn,\n 0x00000000ffffffffn\n];\nconst S = [0n, 1n, 2n, 4n, 8n, 16n];\nexport function hexToBigInt(hex) {\n return BigInt(`0x${hex}`);\n}\nexport function bigIntToHex(index) {\n return index.toString(16);\n}\nexport function tileToCell(tile) {\n if (tile.z < 0 || tile.z > 26) {\n throw new Error('Wrong zoom');\n }\n const z = BigInt(tile.z);\n let x = BigInt(tile.x) << (32n - z);\n let y = BigInt(tile.y) << (32n - z);\n for (let i = 0; i < 5; i++) {\n const s = S[5 - i];\n const b = B[4 - i];\n x = (x | (x << s)) & b;\n y = (y | (y << s)) & b;\n }\n const quadbin = 0x4000000000000000n |\n (1n << 59n) | // | (mode << 59) | (mode_dep << 57)\n (z << 52n) |\n ((x | (y << 1n)) >> 12n) |\n (0xfffffffffffffn >> (z * 2n));\n return quadbin;\n}\nexport function cellToTile(quadbin) {\n const mode = (quadbin >> 59n) & 7n;\n const modeDep = (quadbin >> 57n) & 3n;\n const z = (quadbin >> 52n) & 0x1fn;\n const q = (quadbin & 0xfffffffffffffn) << 12n;\n if (mode !== 1n && modeDep !== 0n) {\n throw new Error('Wrong mode');\n }\n let x = q;\n let y = q >> 1n;\n for (let i = 0; i < 6; i++) {\n const s = S[i];\n const b = B[i];\n x = (x | (x >> s)) & b;\n y = (y | (y >> s)) & b;\n }\n x = x >> (32n - z);\n y = y >> (32n - z);\n return { z: Number(z), x: Number(x), y: Number(y) };\n}\nexport function getResolution(quadbin) {\n return (quadbin >> 52n) & 0x1fn;\n}\nexport function cellToParent(quadbin) {\n const zparent = getResolution(quadbin) - 1n;\n const parent = (quadbin & ~(0x1fn << 52n)) | (zparent << 52n) | (0xfffffffffffffn >> (zparent * 2n));\n return parent;\n}\nexport function geometryToCells(geometry, resolution) {\n const zoom = Number(resolution);\n return tiles(geometry, {\n min_zoom: zoom,\n max_zoom: zoom\n }).map(([x, y, z]) => tileToCell({ x, y, z }));\n}\n","import {SpatialIndex} from '../constants.js';\nimport {getResolution as quadbinGetResolution, geometryToCells} from 'quadbin';\nimport bboxClip from '@turf/bbox-clip';\nimport {SpatialFilter, SpatialIndexTile} from '../types.js';\nimport {BBox, Feature} from 'geojson';\nimport {getResolution as h3GetResolution, polygonToCells} from 'h3-js';\nimport {FeatureData} from '../types-internal.js';\nimport {SpatialDataType} from '../sources/types.js';\n\nexport type TileFeaturesSpatialIndexOptions = {\n tiles: SpatialIndexTile[];\n spatialFilter: SpatialFilter;\n spatialDataColumn: string;\n spatialDataType: SpatialDataType;\n};\n\nexport function tileFeaturesSpatialIndex({\n tiles,\n spatialFilter,\n spatialDataColumn,\n spatialDataType,\n}: TileFeaturesSpatialIndexOptions): FeatureData[] {\n const map = new Map();\n const spatialIndex = getSpatialIndex(spatialDataType);\n const resolution = getResolution(tiles, spatialIndex);\n const spatialIndexIDName = spatialDataColumn\n ? spatialDataColumn\n : spatialIndex;\n\n if (!resolution) {\n return [];\n }\n const cells = getCellsCoverGeometry(spatialFilter, spatialIndex, resolution);\n\n if (!cells?.length) {\n return [];\n }\n\n // We transform cells to Set to improve the performace\n const cellsSet = new Set<bigint | string>(cells);\n\n for (const tile of tiles) {\n if (tile.isVisible === false || !tile.data) {\n continue;\n }\n\n tile.data.forEach((d: Feature) => {\n if (cellsSet.has(d.id as bigint | string)) {\n map.set(d.id, {...d.properties, [spatialIndexIDName]: d.id});\n }\n });\n }\n return Array.from(map.values());\n}\n\nfunction getResolution(\n tiles: SpatialIndexTile[],\n spatialIndex: SpatialIndex\n): number | undefined {\n const data = tiles.find((tile) => tile.data?.length)?.data;\n\n if (!data) {\n return;\n }\n\n if (spatialIndex === SpatialIndex.QUADBIN) {\n return Number(quadbinGetResolution(data[0].id));\n }\n\n if (spatialIndex === SpatialIndex.H3) {\n return h3GetResolution(data[0].id);\n }\n}\n\nconst bboxWest: BBox = [-180, -90, 0, 90];\nconst bboxEast: BBox = [0, -90, 180, 90];\n\nfunction getCellsCoverGeometry(\n geometry: SpatialFilter,\n spatialIndex: SpatialIndex,\n resolution: number\n) {\n if (spatialIndex === SpatialIndex.QUADBIN) {\n // @ts-expect-error TODO: Probably ought to be stricter about number vs. bigint types in this file.\n return geometryToCells(geometry, resolution);\n }\n\n if (spatialIndex === SpatialIndex.H3) {\n // The current H3 polyfill algorithm can't deal with polygon segments of greater than 180 degrees longitude\n // so we clip the geometry to be sure that none of them is greater than 180 degrees\n // https://github.com/uber/h3-js/issues/24#issuecomment-431893796\n return polygonToCells(\n bboxClip(geometry, bboxWest).geometry.coordinates as\n | number[][]\n | number[][][],\n resolution,\n true\n ).concat(\n polygonToCells(\n bboxClip(geometry, bboxEast).geometry.coordinates as\n | number[][]\n | number[][][],\n resolution,\n true\n )\n );\n }\n}\n\nfunction getSpatialIndex(spatialDataType: SpatialDataType): SpatialIndex {\n switch (spatialDataType) {\n case 'h3':\n return SpatialIndex.H3;\n case 'quadbin':\n return SpatialIndex.QUADBIN;\n default:\n throw new Error('Unexpected spatial data type');\n }\n}\n","/**\n * Current version of @carto/api-client.\n * @internal\n */\nexport const API_CLIENT_VERSION = __CARTO_API_CLIENT_VERSION;\n\n/** @internal */\nexport const V3_MINOR_VERSION = '3.4';\n\n/** @privateRemarks Source: @carto/constants, @deck.gl/carto */\nexport const DEFAULT_GEO_COLUMN = 'geom';\n\n/**\n * Fastly default limit is 8192; leave some padding.\n * @privateRemarks Source: @deck.gl/carto\n */\nexport const DEFAULT_MAX_LENGTH_URL = 7000;\n\n/** @privateRemarks Source: @deck.gl/carto */\nexport const DEFAULT_TILE_RESOLUTION = 0.5;\n\n/**\n * @privateRemarks Source: @deck.gl/carto\n * @internal\n */\nexport const DEFAULT_AGGREGATION_RES_LEVEL_H3 = 4;\n\n/**\n * @privateRemarks Source: @deck.gl/carto\n * @internal\n */\nexport const DEFAULT_AGGREGATION_RES_LEVEL_QUADBIN = 6;\n","import {SpatialFilter, SpatialIndexTile, Tile} from '../types.js';\nimport {tileFeaturesGeometries} from './tileFeaturesGeometries.js';\nimport {tileFeaturesSpatialIndex} from './tileFeaturesSpatialIndex.js';\nimport {TileFormat} from '../constants.js';\nimport {DEFAULT_GEO_COLUMN} from '../constants-internal.js';\nimport {FeatureData} from '../types-internal.js';\nimport {SpatialDataType} from '../sources/types.js';\n\n/** @privateRemarks Source: @carto/react-core */\nexport type TileFeatures = {\n tiles: Tile[];\n tileFormat: TileFormat;\n spatialDataType: SpatialDataType;\n spatialDataColumn?: string;\n spatialFilter: SpatialFilter;\n uniqueIdProperty?: string;\n options?: TileFeatureExtractOptions;\n};\n\n/** @privateRemarks Source: @carto/react-core */\nexport type TileFeatureExtractOptions = {\n storeGeometry?: boolean;\n};\n\n/** @privateRemarks Source: @carto/react-core */\nexport function tileFeatures({\n tiles,\n spatialFilter,\n uniqueIdProperty,\n tileFormat,\n spatialDataColumn = DEFAULT_GEO_COLUMN,\n spatialDataType,\n options = {},\n}: TileFeatures): FeatureData[] {\n if (spatialDataType !== 'geo') {\n return tileFeaturesSpatialIndex({\n tiles: tiles as SpatialIndexTile[],\n spatialFilter,\n spatialDataColumn,\n spatialDataType,\n });\n }\n return tileFeaturesGeometries({\n tiles,\n tileFormat,\n spatialFilter,\n uniqueIdProperty,\n options,\n });\n}\n","import {Feature} from 'geojson';\nimport {FilterLogicalOperator, Filters} from '../types.js';\nimport {FilterType} from '../constants.js';\nimport {_buildFeatureFilter} from '../filters/index.js';\nimport {FeatureData} from '../types-internal.js';\n\ntype TimeFilter = Filters['string'][FilterType.TIME] & {\n params?: {offsetBy?: number};\n};\n\n/**\n * deck.gl's DataFilterExtension supports GPU filtering with 1–4 values. We\n * allocate filters[0] to generic filters and filters[1] to time filters.\n *\n * getFilterValue() _must_ return an array of the same size as the filterSize\n * used to initialize the DataFilterExtension. We document that users must use\n * filterSize=4 for compatibility with @link {getDataFilterExtensionProps}.\n */\nconst DEFAULT_FILTER_SIZE = 4;\n\n/** @experimental Prefer type definition from deck.gl. */\nexport type _DataFilterExtensionProps = {\n filterRange: number[][];\n updateTriggers: Record<string, string>;\n getFilterValue: (feature: Feature | FeatureData) => number[];\n};\n\n/**\n * Creates props for DataFilterExtension, from `@deck.gl/extensions`, given\n * a set of filters. Requires that DataFilterExtension is initialized with\n * filterSize=4, where the CARTO filters will occupy the first two slots.\n *\n * @example To create a deck.gl layer with GPU data filtering:\n * ```typescript\n * import {DataFilterExtension} from '@deck.gl/extensions';\n * import {VectorTileLayer} from '@deck.gl/layers';\n * import {getDataFilterExtensionProps} from '@carto/api-client';\n *\n * const layer = new VectorTileLayer({\n * data: data,\n * extensions: [new DataFilterExtension({filterSize: 4})],\n * ...getDataFilterExtensionProps(filters),\n * });\n * ```\n */\nexport function getDataFilterExtensionProps(\n filters: Filters,\n filtersLogicalOperator?: FilterLogicalOperator\n): _DataFilterExtensionProps {\n const {filtersWithoutTimeType, timeColumn, timeFilter} =\n getFiltersByType(filters);\n return {\n filterRange: getFilterRange(timeFilter, DEFAULT_FILTER_SIZE),\n updateTriggers: getUpdateTriggers(\n filtersWithoutTimeType,\n timeColumn,\n timeFilter\n ),\n getFilterValue: getFilterValue(\n filtersWithoutTimeType,\n timeColumn,\n timeFilter,\n DEFAULT_FILTER_SIZE,\n filtersLogicalOperator\n ),\n };\n}\n\n/** @internal */\nfunction getFiltersByType(filters: Filters) {\n const filtersWithoutTimeType: Filters = {};\n\n let timeColumn: string | null = null;\n let timeFilter: TimeFilter | null = null;\n\n for (const [column, columnData] of Object.entries(filters)) {\n for (const [type, typeData] of Object.entries(columnData) as [\n FilterType,\n unknown,\n ][]) {\n if (type === FilterType.TIME) {\n timeColumn = column;\n timeFilter = typeData as TimeFilter;\n } else {\n filtersWithoutTimeType[column] = {[type]: typeData};\n }\n }\n }\n\n return {\n filtersWithoutTimeType,\n timeColumn,\n timeFilter,\n };\n}\n\n/** @internal */\nfunction getFilterRange(\n timeFilter: TimeFilter | null,\n filterSize: number\n): number[][] {\n const result = Array(filterSize).fill([0, 0]);\n // According to getFilterValue all filters are resolved as 0 or 1 in the first position of the array\n // except the time filter value that is resolved with the real value of the feature in the second position of the array\n result[0] = [1, 1];\n if (timeFilter) {\n const offsetBy = timeFilter.params?.offsetBy || 0;\n result[1] = timeFilter.values[0].map((v) => v - offsetBy);\n }\n return result;\n}\n\n/** @internal */\nfunction getUpdateTriggers(\n filtersWithoutTimeType: Filters,\n timeColumn: string | null,\n timeFilter: TimeFilter | null\n) {\n const result: Record<string, object> = {...filtersWithoutTimeType};\n\n // We don't want to change the layer UpdateTriggers every time that the time filter changes\n // because this filter is changed by the time series widget during its animation\n // so we remove the time filter value from the `updateTriggers`\n if (timeColumn && timeFilter) {\n result[timeColumn] = {\n ...result[timeColumn],\n offsetBy: timeFilter.params?.offsetBy,\n [FilterType.TIME]: {}, // Allows working with other filters, without an impact on performance.\n };\n }\n return {\n getFilterValue: JSON.stringify(result),\n };\n}\n\n/** @internal */\nfunction getFilterValue(\n filtersWithoutTimeType: Filters,\n timeColumn: string | null,\n timeFilter: TimeFilter | null,\n filterSize: number,\n filtersLogicalOperator?: FilterLogicalOperator\n) {\n const result = Array(filterSize).fill(0);\n const featureFilter = _buildFeatureFilter({\n filters: filtersWithoutTimeType,\n type: 'number',\n filtersLogicalOperator,\n });\n\n // We evaluate all filters except the time filter using _buildFeatureFilter function.\n // For the time filter, we return the value of the feature and we will change the getFilterRange result\n // every time this filter changes\n return (feature: Feature | FeatureData) => {\n result[0] = featureFilter(feature);\n\n if (timeColumn && timeFilter) {\n const offsetBy = timeFilter.params?.offsetBy || 0;\n const f = (feature.properties || feature) as Record<string, unknown>;\n result[1] = (f[timeColumn] as number) - offsetBy;\n }\n return result;\n };\n}\n","import {Filter} from './types.js';\nimport {FilterType} from './constants.js';\n\nconst FILTER_TYPES = new Set(Object.values(FilterType));\nconst isFilterType = (type: string): type is FilterType =>\n FILTER_TYPES.has(type as FilterType);\n\n/**\n * @privateRemarks Source: @carto/react-widgets\n * @internal\n */\nexport function getApplicableFilters(\n owner?: string,\n filters?: Record<string, Filter>\n): Record<string, Filter> {\n if (!filters) return {};\n\n const applicableFilters: Record<string, Filter> = {};\n\n for (const column in filters) {\n for (const type in filters[column]) {\n if (!isFilterType(type)) continue;\n\n const filter = filters[column][type];\n const isApplicable = !owner || !filter?.owner || filter?.owner !== owner;\n if (filter && isApplicable) {\n applicableFilters[column] ||= {};\n (applicableFilters[column][type] as typeof filter) = filter;\n }\n }\n }\n\n return applicableFilters;\n}\n\ntype Row<T> = Record<string, T> | Record<string, T>[] | T[] | T;\n\n/**\n * Due to each data warehouse having its own behavior with columns,\n * we need to normalize them and transform every key to lowercase.\n *\n * @privateRemarks Source: @carto/react-widgets\n * @internal\n */\nexport function normalizeObjectKeys<T, R extends Row<T>>(el: R): R {\n if (Array.isArray(el)) {\n return el.map((value) => normalizeObjectKeys(value)) as R;\n } else if (typeof el !== 'object') {\n return el;\n }\n\n return Object.entries(el as Record<string, T>).reduce(\n (acc, [key, value]) => {\n acc[key.toLowerCase()] =\n typeof value === 'object' && value ? normalizeObjectKeys(value) : value;\n return acc;\n },\n {} as Record<string, T>\n ) as R;\n}\n\n/** @privateRemarks Source: @carto/react-core */\nexport function assert(condition: unknown, message: string): asserts condition {\n if (!condition) {\n throw new Error(message);\n }\n}\n\n/**\n * @privateRemarks Source: @carto/react-core\n * @internal\n */\nexport class InvalidColumnError extends Error {\n protected static readonly NAME = 'InvalidColumnError';\n\n constructor(message: string) {\n super(`${InvalidColumnError.NAME}: ${message}`);\n this.name = InvalidColumnError.NAME;\n }\n\n static is(error: unknown) {\n return (\n error instanceof InvalidColumnError ||\n (error as Error).message?.includes(InvalidColumnError.NAME)\n );\n }\n}\n\nexport function isEmptyObject(object: object): boolean {\n for (const _ in object) {\n return false;\n }\n return true;\n}\n\n/** @internal */\nexport const isObject: (x: unknown) => boolean = (x) =>\n x !== null && typeof x === 'object';\n\n/** @internal */\nexport const isPureObject: (x: any) => boolean = (x) =>\n isObject(x) && x.constructor === {}.constructor;\n","import {FilterType} from './constants.js';\nimport {Filter} from './types.js';\nimport {isEmptyObject} from './utils.js';\n\ntype FilterTypeOptions<T extends FilterType> = {\n type: T;\n column: string;\n} & Filter[T];\n\nexport type AddFilterOptions =\n | FilterTypeOptions<FilterType.IN>\n | FilterTypeOptions<FilterType.BETWEEN>\n | FilterTypeOptions<FilterType.CLOSED_OPEN>\n | FilterTypeOptions<FilterType.TIME>\n | FilterTypeOptions<FilterType.STRING_SEARCH>;\n\n/**\n * Adds a {@link Filter} to the filter set. Any previous filters with the same\n * `column` and `type` will be replaced.\n */\nexport function addFilter(\n filters: Record<string, Filter>,\n {column, type, values, owner}: AddFilterOptions\n): Record<string, Filter> {\n if (!filters[column]) {\n filters[column] = {};\n }\n\n const filter = {values, owner} as FilterTypeOptions<typeof type>;\n (filters[column][type] as FilterTypeOptions<typeof type>) = filter;\n\n return filters;\n}\n\nexport type RemoveFilterOptions = {\n column: string;\n owner?: string;\n};\n\n/**\n * Removes one or more {@link Filter filters} from the filter set. If only\n * `column` is specified, then all filters on that column are removed. If both\n * `column` and `owner` are specified, then only filters for that column\n * associated with the owner are removed.\n */\nexport function removeFilter(\n filters: Record<string, Filter>,\n {column, owner}: RemoveFilterOptions\n): Record<string, Filter> {\n const filter = filters[column];\n if (!filter) {\n return filters;\n }\n\n if (owner) {\n for (const type of Object.values(FilterType)) {\n if (owner === filter[type as FilterType]?.owner) {\n delete filter[type as FilterType];\n }\n }\n }\n\n if (!owner || isEmptyObject(filter)) {\n delete filters[column];\n }\n\n return filters;\n}\n\n/**\n * Clears all {@link Filter filters} from the filter set.\n */\nexport function clearFilters(\n filters: Record<string, Filter>\n): Record<string, Filter> {\n for (const column of Object.keys(filters)) {\n delete filters[column];\n }\n return filters;\n}\n\nexport type HasFilterOptions = {\n column: string;\n owner?: string;\n};\n\nexport function hasFilter(\n filters: Record<string, Filter>,\n {column, owner}: HasFilterOptions\n): boolean {\n const filter = filters[column];\n if (!filter) {\n return false;\n }\n\n if (!owner) {\n return true;\n }\n\n for (const type of Object.values(FilterType)) {\n if (owner === filter[type as FilterType]?.owner) {\n return true;\n }\n }\n\n return false;\n}\n\nexport type GetFilterOptions<T extends FilterType> = {\n column: string;\n type: T;\n owner?: string;\n};\n\nexport function getFilter<T extends FilterType>(\n filters: Record<string, Filter>,\n {column, type, owner}: GetFilterOptions<T>\n): Filter[T] | null {\n const filter = filters[column];\n if (!filter) {\n return null;\n }\n\n if (!owner || owner === filter[type]?.owner) {\n return filter[type] || null;\n }\n\n return null;\n}\n","import bboxClip from '@turf/bbox-clip';\nimport bboxPolygon from '@turf/bbox-polygon';\nimport union from '@turf/union';\nimport {getType} from '@turf/invariant';\nimport {polygon, multiPolygon, feature, featureCollection} from '@turf/helpers';\nimport type {BBox, Geometry, MultiPolygon, Polygon, Position} from 'geojson';\nimport {SpatialFilter} from './types.js';\n\n/**\n * Returns a {@link SpatialFilter} for a given viewport, typically obtained\n * from deck.gl's `viewport.getBounds()` method ([west, south, east, north]).\n * If the viewport covers the entire world (to some margin of error in Web\n * Mercator space), `undefined` is returned instead.\n *\n * If the viewport extends beyond longitude range [-180, +180], the polygon\n * may be reformatted for compatibility with CARTO APIs.\n */\nexport function createViewportSpatialFilter(\n viewport: BBox\n): SpatialFilter | undefined {\n if (_isGlobalViewport(viewport)) {\n return;\n }\n return createPolygonSpatialFilter(bboxPolygon(viewport).geometry);\n}\n\n/**\n * Returns a {@link SpatialFilter} for a given {@link Polygon} or\n * {@link MultiPolygon}. If the polygon(s) extend outside longitude\n * range [-180, +180], the result may be reformatted for compatibility\n * with CARTO APIs.\n */\nexport function createPolygonSpatialFilter(\n spatialFilter: Polygon | MultiPolygon\n): SpatialFilter | undefined {\n return (spatialFilter && _normalizeGeometry(spatialFilter)) || undefined;\n}\n\n/**\n * Check if a viewport is large enough to represent a global coverage.\n * In this case the spatial filter parameter for widget calculation is removed.\n *\n * @privateRemarks Source: @carto/react-core\n */\nfunction _isGlobalViewport(viewport: BBox) {\n const [minx, miny, maxx, maxy] = viewport;\n return maxx - minx > 179.5 * 2 && maxy - miny > 85.05 * 2;\n}\n\n/**\n * Normalized a geometry, coming from a mask or a viewport. The parts\n * spanning outside longitude range [-180, +180] are clipped and \"folded\"\n * back to the valid range and unioned to the polygons inide that range.\n *\n * It results in a Polygon or MultiPolygon strictly inside the validity range.\n *\n * @privateRemarks Source: @carto/react-core\n */\nfunction _normalizeGeometry(\n geometry: Polygon | MultiPolygon\n): Polygon | MultiPolygon | null {\n const WORLD = [-180, -90, +180, +90] as BBox;\n const worldClip = _clean(\n bboxClip(geometry, WORLD).geometry as Polygon | MultiPolygon\n );\n\n const geometryTxWest = _tx(geometry, 360);\n const geometryTxEast = _tx(geometry, -360);\n\n let result: Polygon | MultiPolygon | null = worldClip;\n\n if (result && geometryTxWest) {\n const worldWestClip = _clean(\n bboxClip(geometryTxWest, WORLD).geometry as Polygon | MultiPolygon\n );\n if (worldWestClip) {\n const collection = featureCollection([\n feature(result),\n feature(worldWestClip),\n ]);\n const merged = union(collection);\n result = merged ? _clean(merged.geometry) : result;\n }\n }\n\n if (result && geometryTxEast) {\n const worldEastClip = _clean(\n bboxClip(geometryTxEast, WORLD).geometry as Polygon | MultiPolygon\n );\n if (worldEastClip) {\n const collection = featureCollection([\n feature(result),\n feature(worldEastClip),\n ]);\n const merged = union(collection);\n result = merged ? _clean(merged.geometry) : result;\n }\n }\n\n return result;\n}\n\n/** @privateRemarks Source: @carto/react-core */\nfunction _cleanPolygonCoords(cc: Position[][]) {\n const coords = cc.filter((c) => c.length > 0);\n return coords.length > 0 ? coords : null;\n}\n\n/** @privateRemarks Source: @carto/react-core */\nfunction _cleanMultiPolygonCoords(ccc: Position[][][]) {\n const coords = ccc.map(_cleanPolygonCoords).filter((cc) => cc);\n return coords.length > 0 ? coords : null;\n}\n\n/** @privateRemarks Source: @carto/react-core */\nfunction _clean(\n geometry: Polygon | MultiPolygon | null\n): Polygon | MultiPolygon | null {\n if (!geometry) {\n return null;\n }\n\n if (_isPolygon(geometry)) {\n const coords = _cleanPolygonCoords(geometry.coordinates);\n return coords ? polygon(coords).geometry : null;\n }\n\n if (_isMultiPolygon(geometry)) {\n const coords = _cleanMultiPolygonCoords(geometry.coordinates);\n return coords ? multiPolygon(coords as Position[][][]).geometry : null;\n }\n\n return null;\n}\n\n/** @privateRemarks Source: @carto/react-core */\nfunction _txContourCoords(cc: Position[], distance: number) {\n return cc.map((c) => [c[0] + distance, c[1]]);\n}\n\n/** @privateRemarks Source: @carto/react-core */\nfunction _txPolygonCoords(ccc: Position[][], distance: number) {\n return ccc.map((cc) => _txContourCoords(cc, distance));\n}\n\n/** @privateRemarks Source: @carto/react-core */\nfunction _txMultiPolygonCoords(cccc: Position[][][], distance: number) {\n return cccc.map((ccc) => _txPolygonCoords(ccc, distance));\n}\n\n/** @privateRemarks Source: @carto/react-core */\nfunction _tx(geometry: Polygon | MultiPolygon, distance: number) {\n if (geometry && getType(geometry) === 'Polygon') {\n const coords = _txPolygonCoords(\n (geometry as Polygon).coordinates,\n distance\n );\n return polygon(coords).geometry;\n } else if (geometry && getType(geometry) === 'MultiPolygon') {\n const coords = _txMultiPolygonCoords(\n (geometry as MultiPolygon).coordinates,\n distance\n );\n return multiPolygon(coords).geometry;\n } else {\n return null;\n }\n}\n\nfunction _isPolygon(geometry: Geometry): geometry is Polygon {\n return getType(geometry) === 'Polygon';\n}\n\nfunction _isMultiPolygon(geometry: Geometry): geometry is MultiPolygon {\n return getType(geometry) === 'MultiPolygon';\n}\n","// deck.gl\n// SPDX-License-Identifier: MIT\n// Copyright (c) vis.gl contributors\n\nimport {MapType} from '../types.js';\n\nexport type V3Endpoint = 'maps' | 'stats' | 'sql';\n\nfunction joinPath(...args: string[]): string {\n return args\n .map((part) => (part.endsWith('/') ? part.slice(0, -1) : part))\n .join('/');\n}\n\nfunction buildV3Path(\n apiBaseUrl: string,\n version: 'v3',\n endpoint: V3Endpoint,\n ...rest: string[]\n): string {\n return joinPath(apiBaseUrl, version, endpoint, ...rest);\n}\n\n/** @internal Required by fetchMap(). */\nexport function buildPublicMapUrl({\n apiBaseUrl,\n cartoMapId,\n}: {\n apiBaseUrl: string;\n cartoMapId: string;\n}): string {\n return buildV3Path(apiBaseUrl, 'v3', 'maps', 'public', cartoMapId);\n}\n\n/** @internal Required by fetchMap(). */\nexport function buildStatsUrl({\n attribute,\n apiBaseUrl,\n connectionName,\n source,\n type,\n}: {\n attribute: string;\n apiBaseUrl: string;\n connectionName: string;\n source: string;\n type: MapType;\n}): string {\n if (type === 'query') {\n return buildV3Path(apiBaseUrl, 'v3', 'stats', connectionName, attribute);\n }\n\n // type === 'table'\n return buildV3Path(\n apiBaseUrl,\n 'v3',\n 'stats',\n connectionName,\n source,\n attribute\n );\n}\n\nexport function buildSourceUrl({\n apiBaseUrl,\n connectionName,\n endpoint,\n}: {\n apiBaseUrl: string;\n connectionName: string;\n endpoint: MapType;\n}): string {\n return buildV3Path(apiBaseUrl, 'v3', 'maps', connectionName, endpoint);\n}\n\nexport function buildQueryUrl({\n apiBaseUrl,\n connectionName,\n}: {\n apiBaseUrl: string;\n connectionName: string;\n}): string {\n return buildV3Path(apiBaseUrl, 'v3', 'sql', connectionName, 'query');\n}\n","// deck.gl\n// SPDX-License-Identifier: MIT\n// Copyright (c) vis.gl contributors\n\nimport {MapType} from '../types.js';\n\nexport type APIRequestType =\n | 'Map data'\n | 'Map instantiation'\n | 'Public map'\n | 'Tile stats'\n | 'SQL'\n | 'Basemap style';\n\nexport type APIErrorContext = {\n requestType: APIRequestType;\n mapId?: string;\n connection?: string;\n source?: string;\n type?: MapType;\n};\n\n/**\n *\n * Custom error for reported errors in CARTO Maps API.\n * Provides useful debugging information in console and context for applications.\n *\n */\nexport class CartoAPIError extends Error {\n /** Source error from server */\n error: Error;\n\n /** Context (API call & parameters) in which error occured */\n errorContext: APIErrorContext;\n\n /** Response from server */\n response?: Response;\n\n /** JSON Response from server */\n responseJson?: any;\n\n constructor(\n error: Error,\n errorContext: APIErrorContext,\n response?: Response,\n responseJson?: any\n ) {\n let responseString = 'Failed to connect';\n if (response) {\n responseString = 'Server returned: ';\n if (response.status === 400) {\n responseString += 'Bad request';\n } else if (response.status === 401 || response.status === 403) {\n responseString += 'Unauthorized access';\n } else if (response.status === 404) {\n responseString += 'Not found';\n } else {\n responseString += 'Error';\n }\n\n responseString += ` (${response.status}):`;\n }\n responseString += ` ${error.message || error}`;\n\n let message = `${errorContext.requestType} API request failed`;\n message += `\\n${responseString}`;\n for (const key of Object.keys(errorContext)) {\n if (key === 'requestType') continue;\n message += `\\n${formatErrorKey(key)}: ${(errorContext as any)[key]}`;\n }\n message += '\\n';\n\n super(message);\n\n this.name = 'CartoAPIError';\n this.response = response;\n this.responseJson = responseJson;\n this.error = error;\n this.errorContext = errorContext;\n }\n}\n\n/**\n * Converts camelCase to Camel Case\n */\nfunction formatErrorKey(key: string) {\n return key.replace(/([A-Z])/g, ' $1').replace(/^./, (s) => s.toUpperCase());\n}\n","// deck.gl\n// SPDX-License-Identifier: MIT\n// Copyright (c) vis.gl contributors\n\nimport {isPureObject} from '../utils.js';\nimport {CartoAPIError, APIErrorContext} from './carto-api-error.js';\nimport {V3_MINOR_VERSION} from '../constants-internal.js';\nimport {DEFAULT_MAX_LENGTH_URL} from '../constants-internal.js';\nimport {getClient} from '../client.js';\nimport {LocalCacheOptions} from '../sources/types.js';\n\nconst DEFAULT_HEADERS = {\n Accept: 'application/json',\n 'Content-Type': 'application/json',\n};\n\nconst DEFAULT_REQUEST_CACHE = new Map<string, Promise<unknown>>();\n\nexport async function requestWithParameters<T = any>({\n baseUrl,\n parameters = {},\n headers: customHeaders = {},\n errorContext,\n maxLengthURL = DEFAULT_MAX_LENGTH_URL,\n localCache,\n}: {\n baseUrl: string;\n parameters?: Record<string, unknown>;\n headers?: Record<string, string>;\n errorContext: APIErrorContext;\n maxLengthURL?: number;\n localCache?: LocalCacheOptions;\n}): Promise<T> {\n // Parameters added to all requests issued with `requestWithParameters()`.\n // These parameters override parameters already in the base URL, but not\n // user-provided parameters.\n parameters = {\n v: V3_MINOR_VERSION,\n client: getClient(),\n ...(typeof deck !== 'undefined' &&\n deck.VERSION && {deckglVersion: deck.VERSION}),\n ...parameters,\n };\n\n baseUrl = excludeURLParameters(baseUrl, Object.keys(parameters));\n const key = createCacheKey(baseUrl, parameters, customHeaders);\n\n const {\n cache: REQUEST_CACHE,\n canReadCache,\n canStoreInCache,\n } = getCacheSettings(localCache);\n\n if (canReadCache && REQUEST_CACHE.has(key)) {\n return REQUEST_CACHE.get(key) as Promise<T>;\n }\n\n const url = createURLWithParameters(baseUrl, parameters);\n const headers = {...DEFAULT_HEADERS, ...customHeaders};\n\n /* global fetch */\n const fetchPromise =\n url.length > maxLengthURL\n ? fetch(baseUrl, {\n method: 'POST',\n body: JSON.stringify(parameters),\n headers,\n })\n : fetch(url, {headers});\n\n let response: Response | undefined;\n let responseJson: unknown;\n const jsonPromise: Promise<T> = fetchPromise\n .then((_response: Response) => {\n response = _response;\n return response.json();\n })\n .then((json: any) => {\n responseJson = json;\n if (!response || !response.ok) {\n throw new Error(json.error);\n }\n return json;\n })\n .catch((error: Error) => {\n if (canStoreInCache) {\n REQUEST_CACHE.delete(key);\n }\n throw new CartoAPIError(error, errorContext, response, responseJson);\n });\n\n if (canStoreInCache) {\n REQUEST_CACHE.set(key, jsonPromise);\n }\n return jsonPromise;\n}\n\nfunction getCacheSettings(localCache: LocalCacheOptions | undefined) {\n const canReadCache = localCache?.cacheControl?.includes('no-cache')\n ? false\n : true;\n const canStoreInCache = localCache?.cacheControl?.includes('no-store')\n ? false\n : true;\n const cache = localCache?.cache || DEFAULT_REQUEST_CACHE;\n\n return {\n cache,\n canReadCache,\n canStoreInCache,\n };\n}\n\nfunction createCacheKey(\n baseUrl: string,\n parameters: Record<string, unknown>,\n headers: Record<string, string>\n): string {\n const parameterEntries = Object.entries(parameters).sort(([a], [b]) =>\n a > b ? 1 : -1\n );\n const headerEntries = Object.entries(headers).sort(([a], [b]) =>\n a > b ? 1 : -1\n );\n return JSON.stringify({\n baseUrl,\n parameters: parameterEntries,\n headers: headerEntries,\n });\n}\n\n/**\n * Appends query string parameters to a URL. Existing URL parameters are kept,\n * unless there is a conflict, in which case the new parameters override\n * those already in the URL.\n */\nfunction createURLWithParameters(\n baseUrlString: string,\n parameters: Record<string, unknown>\n): string {\n const baseUrl = new URL(baseUrlString);\n for (const [key, value] of Object.entries(parameters)) {\n if (isPureObject(value) || Array.isArray(value)) {\n baseUrl.searchParams.set(key, JSON.stringify(value));\n } else {\n baseUrl.searchParams.set(\n key,\n (value as string | boolean | number).toString()\n );\n }\n }\n return baseUrl.toString();\n}\n\n/**\n * Deletes query string parameters from a URL.\n */\nfunction excludeURLParameters(baseUrlString: string, parameters: string[]) {\n const baseUrl = new URL(baseUrlString);\n for (const param of parameters) {\n if (baseUrl.searchParams.has(param)) {\n baseUrl.searchParams.delete(param);\n }\n }\n return baseUrl.toString();\n}\n","// deck.gl\n// SPDX-License-Identifier: MIT\n// Copyright (c) vis.gl contributors\n\nimport {DEFAULT_API_BASE_URL} from '../constants.js';\nimport {DEFAULT_MAX_LENGTH_URL} from '../constants-internal.js';\nimport {buildSourceUrl} from '../api/endpoints.js';\nimport {requestWithParameters} from '../api/request-with-parameters.js';\nimport type {\n GeojsonResult,\n JsonResult,\n SourceOptionalOptions,\n SourceRequiredOptions,\n TilejsonMapInstantiation,\n TilejsonResult,\n} from './types.js';\nimport {MapType} from '../types.js';\nimport {APIErrorContext} from '../api/index.js';\nimport {getClient} from '../client.js';\n\nexport const SOURCE_DEFAULTS: Omit<SourceOptionalOptions, 'clientId'> = {\n apiBaseUrl: DEFAULT_API_BASE_URL,\n format: 'tilejson',\n headers: {},\n maxLengthURL: DEFAULT_MAX_LENGTH_URL,\n};\n\nexport async function baseSource<UrlParameters extends Record<string, unknown>>(\n endpoint: MapType,\n options: Partial<SourceOptionalOptions> & SourceRequiredOptions,\n urlParameters: UrlParameters\n): Promise<TilejsonResult | GeojsonResult | JsonResult> {\n const {accessToken, connectionName, cache, ...optionalOptions} = options;\n const mergedOptions = {\n ...SOURCE_DEFAULTS,\n clientId: getClient(),\n accessToken,\n connectionName,\n endpoint,\n };\n for (const key in optionalOptions) {\n if (optionalOptions[key as keyof typeof optionalOptions]) {\n (mergedOptions as any)[key] =\n optionalOptions[key as keyof typeof optionalOptions];\n }\n }\n const baseUrl = buildSourceUrl(mergedOptions);\n const {clientId, maxLengthURL, format, localCache} = mergedOptions;\n const headers = {\n Authorization: `Bearer ${options.accessToken}`,\n ...options.headers,\n };\n const parameters = {client: clientId, ...urlParameters};\n\n const errorContext: APIErrorContext = {\n requestType: 'Map instantiation',\n connection: options.connectionName,\n type: endpoint,\n source: JSON.stringify(parameters, undefined, 2),\n };\n const mapInstantiation =\n await requestWithParameters<TilejsonMapInstantiation>({\n baseUrl,\n parameters,\n headers,\n errorContext,\n maxLengthURL,\n localCache,\n });\n\n const dataUrl = mapInstantiation[format].url[0];\n if (cache) {\n cache.value = parseInt(\n new URL(dataUrl).searchParams.get('cache') || '',\n 10\n );\n }\n errorContext.requestType = 'Map data';\n\n if (format === 'tilejson') {\n const json = await requestWithParameters<TilejsonResult>({\n baseUrl: dataUrl,\n parameters: {client: clientId},\n headers,\n errorContext,\n maxLengthURL,\n localCache,\n });\n if (accessToken) {\n json.accessToken = accessToken;\n }\n return json;\n }\n\n return await requestWithParameters<GeojsonResult | JsonResult>({\n baseUrl: dataUrl,\n parameters: {client: clientId},\n headers,\n errorContext,\n maxLengthURL,\n localCache,\n });\n}\n","// deck.gl\n// SPDX-License-Identifier: MIT\n// Copyright (c) vis.gl contributors\n\nimport {QueryParameters} from '../types.js';\nimport {baseSource} from './base-source.js';\nimport type {FilterOptions, SourceOptions, TilejsonResult} from './types.js';\n\nexport type BoundaryQuerySourceOptions = SourceOptions &\n FilterOptions & {\n columns?: string[];\n tilesetTableName: string;\n propertiesSqlQuery: string;\n queryParameters?: QueryParameters;\n };\ntype UrlParameters = {\n columns?: string;\n filters?: Record<string, unknown>;\n tilesetTableName: string;\n propertiesSqlQuery: string;\n queryParameters?: Record<string, unknown> | unknown[];\n};\n\nexport type BoundaryQuerySourceResponse = TilejsonResult;\n\nexport const boundaryQuerySource = async function (\n options: BoundaryQuerySourceOptions\n): Promise<BoundaryQuerySourceResponse> {\n const {\n columns,\n filters,\n tilesetTableName,\n propertiesSqlQuery,\n queryParameters,\n } = options;\n const urlParameters: UrlParameters = {\n tilesetTableName,\n propertiesSqlQuery,\n };\n\n if (columns) {\n urlParameters.columns = columns.join(',');\n }\n if (filters) {\n urlParameters.filters = filters;\n }\n if (queryParameters) {\n urlParameters.queryParameters = queryParameters;\n }\n\n return baseSource<UrlParameters>(\n 'boundary',\n options,\n urlParameters\n ) as Promise<BoundaryQuerySourceResponse>;\n};\n","// deck.gl\n// SPDX-License-Identifier: MIT\n// Copyright (c) vis.gl contributors\n\nimport {baseSource} from './base-source.js';\nimport type {FilterOptions, SourceOptions, TilejsonResult} from './types.js';\n\nexport type BoundaryTableSourceOptions = SourceOptions &\n FilterOptions & {\n tilesetTableName: string;\n columns?: string[];\n propertiesTableName: string;\n };\ntype UrlParameters = {\n filters?: Record<string, unknown>;\n tilesetTableName: string;\n columns?: string;\n propertiesTableName: string;\n};\n\nexport type BoundaryTableSourceResponse = TilejsonResult;\n\nexport const boundaryTableSource = async function (\n options: BoundaryTableSourceOptions\n): Promise<BoundaryTableSourceResponse> {\n const {filters, tilesetTableName, columns, propertiesTableName} = options;\n const urlParameters: UrlParameters = {\n tilesetTableName,\n propertiesTableName,\n };\n\n if (columns) {\n urlParameters.columns = columns.join(',');\n }\n if (filters) {\n urlParameters.filters = filters;\n }\n\n return baseSource<UrlParameters>(\n 'boundary',\n options,\n urlParameters\n ) as Promise<BoundaryTableSourceResponse>;\n};\n","import {\n CategoryRequestOptions,\n CategoryResponse,\n FeaturesRequestOptions,\n FeaturesResponse,\n FormulaRequestOptions,\n FormulaResponse,\n HistogramRequestOptions,\n HistogramResponse,\n RangeRequestOptions,\n RangeResponse,\n ScatterRequestOptions,\n ScatterResponse,\n TableRequestOptions,\n TableResponse,\n TimeSeriesRequestOptions,\n TimeSeriesResponse,\n} from './types.js';\nimport {FilterLogicalOperator, Filter, Filters} from '../types.js';\nimport {getApplicableFilters} from '../utils.js';\nimport {getClient} from '../client.js';\nimport {ModelSource} from '../models/model.js';\nimport {SourceOptions} from '../sources/index.js';\nimport {ApiVersion, DEFAULT_API_BASE_URL} from '../constants.js';\nimport {AggregationOptions} from '../sources/types.js';\n\nexport interface WidgetSourceProps extends Omit<SourceOptions, 'filters'> {\n apiVersion?: ApiVersion;\n filters?: Record<string, Filter>;\n filtersLogicalOperator?: FilterLogicalOperator;\n}\n\n/**\n * Source for Widget API requests on a data source defined by a SQL query.\n *\n * Abstract class. Use {@link WidgetQuerySource} or {@link WidgetTableSource}.\n */\nexport abstract class WidgetSource<Props extends WidgetSourceProps> {\n readonly props: Props;\n\n static defaultProps: Partial<WidgetSourceProps> = {\n apiVersion: ApiVersion.V3,\n apiBaseUrl: DEFAULT_API_BASE_URL,\n clientId: getClient(),\n filters: {},\n filtersLogicalOperator: 'and',\n };\n\n constructor(props: Props) {\n this.props = {\n ...WidgetSource.defaultProps,\n clientId: getClient(), // Refresh clientId, default may have changed.\n ...props,\n };\n }\n\n /**\n * Subclasses of {@link WidgetRemoteSource} must implement this method, calling\n * {@link WidgetRemoteSource.prototype._getModelSource} for common source\n * properties, and adding additional required properties including 'type' and\n * 'data'.\n */\n protected abstract getModelSource(\n filters: Filters | undefined,\n filterOwner?: string\n ): ModelSource;\n\n protected _getModelSource(\n filters: Filters | undefined,\n filterOwner?: string\n ): Omit<ModelSource, 'type' | 'data'> {\n const props = this.props;\n return {\n apiVersion: props.apiVersion as ApiVersion,\n apiBaseUrl: props.apiBaseUrl as string,\n clientId: props.clientId as string,\n accessToken: props.accessToken,\n connectionName: props.connectionName,\n filters: getApplicableFilters(filterOwner, filters || props.filters),\n filtersLogicalOperator: props.filtersLogicalOperator,\n spatialDataType: props.spatialDataType,\n spatialDataColumn: props.spatialDataColumn,\n dataResolution: (props as Partial<AggregationOptions>).dataResolution,\n };\n }\n\n /**\n * Returns a list of labeled datapoints for categorical data. Suitable for\n * charts including grouped bar charts, pie charts, and tree charts.\n */\n abstract getCategories(\n options: CategoryRequestOptions\n ): Promise<CategoryResponse>;\n\n /**\n * Given a list of feature IDs (as found in `_carto_feature_id`) returns all\n * matching features. In datasets containing features with duplicate geometries,\n * feature IDs may be duplicated (IDs are a hash of geometry) and so more\n * results may be returned than IDs in the request.\n * @internal\n * @experimental\n */\n abstract getFeatures(\n options: FeaturesRequestOptions\n ): Promise<FeaturesResponse>;\n\n /**\n * Returns a scalar numerical statistic over all matching data. Suitable\n * for 'headline' or 'scorecard' figures such as counts and sums.\n */\n abstract getFormula(options: FormulaRequestOptions): Promise<FormulaResponse>;\n\n /**\n * Returns a list of labeled datapoints for 'bins' of data defined as ticks\n * over a numerical range. Suitable for histogram charts.\n */\n abstract getHistogram(\n options: HistogramRequestOptions\n ): Promise<HistogramResponse>;\n\n /**\n * Returns a range (min and max) for a numerical column of matching rows.\n * Suitable for displaying certain 'headline' or 'scorecard' statistics,\n * or rendering a range slider UI for filtering.\n */\n abstract getRange(options: RangeRequestOptions): Promise<RangeResponse>;\n\n /**\n * Returns a list of bivariate datapoints defined as numerical 'x' and 'y'\n * values. Suitable for rendering scatter plots.\n */\n abstract getScatter(options: ScatterRequestOptions): Promise<ScatterResponse>;\n\n /**\n * Returns a list of arbitrary data rows, with support for pagination and\n * sorting. Suitable for displaying tables and lists.\n */\n abstract getTable(options: TableRequestOptions): Promise<TableResponse>;\n\n /**\n * Returns a series of labeled numerical values, grouped into equally-sized\n * time intervals. Suitable for rendering time series charts.\n */\n abstract getTimeSeries(\n options: TimeSeriesRequestOptions\n ): Promise<TimeSeriesResponse>;\n}\n\n/**\n * @todo TODO(v0.5): Remove WidgetBaseSourceProps alias\n * @deprecated Use WidgetSourceProps.\n */\nexport type WidgetBaseSourceProps = WidgetSourceProps;\n\n/**\n * @todo TODO(v0.5): Remove WidgetBaseSource alias.\n * @deprecated Use WidgetSourceP.\n */\nexport const WidgetBaseSource = WidgetSource;\n","import {InvalidColumnError} from '../utils.js';\n\n/** @privateRemarks Source: @carto/react-api */\nexport interface ModelRequestOptions {\n method: 'GET' | 'POST';\n headers?: Record<string, string>;\n signal?: AbortSignal;\n otherOptions?: Record<string, unknown>;\n body?: string;\n}\n\ninterface ModelErrorResponse {\n error?: string | string[];\n hint?: string;\n column_name?: string;\n}\n\n/**\n * Return more descriptive error from API\n * @privateRemarks Source: @carto/react-api\n */\nexport function dealWithApiError({\n response,\n data,\n}: {\n response: Response;\n data: ModelErrorResponse;\n}) {\n if (data.error === 'Column not found') {\n throw new InvalidColumnError(`${data.error} ${data.column_name}`);\n }\n\n if (\n typeof data.error === 'string' &&\n data.error?.includes('Missing columns')\n ) {\n throw new InvalidColumnError(data.error);\n }\n\n switch (response.status) {\n case 401:\n throw new Error('Unauthorized access. Invalid credentials');\n case 403:\n throw new Error('Forbidden access to the requested data');\n default:\n throw new Error(\n data && data.error && typeof data.error === 'string'\n ? data.error\n : JSON.stringify(data?.hint || data.error?.[0])\n );\n }\n}\n\n/** @privateRemarks Source: @carto/react-api */\nexport async function makeCall({\n url,\n accessToken,\n opts,\n}: {\n url: string;\n accessToken: string;\n opts: ModelRequestOptions;\n}) {\n let response;\n let data;\n const isPost = opts?.method === 'POST';\n try {\n response = await fetch(url.toString(), {\n headers: {\n Authorization: `Bearer ${accessToken}`,\n ...(isPost && {'Content-Type': 'application/json'}),\n ...opts.headers,\n },\n ...(isPost && {\n method: opts?.method,\n body: opts?.body,\n }),\n signal: opts?.signal,\n ...opts?.otherOptions,\n });\n data = await response.json();\n } catch (error) {\n if ((error as Error).name === 'AbortError') throw error;\n\n throw new Error(`Failed request: ${error as Error}`);\n }\n\n if (!response.ok) {\n dealWithApiError({response, data});\n }\n\n return data;\n}\n","import {DEFAULT_GEO_COLUMN} from '../constants-internal.js';\nimport {\n Filter,\n FilterLogicalOperator,\n MapType,\n QueryParameters,\n SpatialFilter,\n} from '../types.js';\nimport {assert, isPureObject} from '../utils.js';\nimport {ModelRequestOptions, makeCall} from './common.js';\nimport {ApiVersion} from '../constants.js';\nimport {SpatialDataType, SpatialFilterPolyfillMode} from '../sources/types.js';\n\n/** @privateRemarks Source: @carto/react-api */\nconst AVAILABLE_MODELS = [\n 'category',\n 'histogram',\n 'formula',\n 'pick',\n 'timeseries',\n 'range',\n 'scatterplot',\n 'table',\n] as const;\n\nexport type Model = (typeof AVAILABLE_MODELS)[number];\n\nexport interface ModelSource {\n type: MapType;\n apiVersion: ApiVersion;\n apiBaseUrl: string;\n accessToken: string;\n clientId: string;\n connectionName: string;\n data: string;\n filters?: Record<string, Filter>;\n filtersLogicalOperator?: FilterLogicalOperator;\n spatialFilter?: SpatialFilter;\n queryParameters?: QueryParameters;\n spatialDataColumn?: string;\n spatialDataType?: SpatialDataType;\n spatialFiltersMode?: SpatialFilterPolyfillMode;\n /** original resolution of the spatial index data as stored in the DW */\n dataResolution?: number;\n}\n\nconst {V3} = ApiVersion;\nconst REQUEST_GET_MAX_URL_LENGTH = 2048;\n\n/**\n * Execute a SQL model request.\n * @privateRemarks Source: @carto/react-api\n */\nexport function executeModel(props: {\n model: Model;\n source: ModelSource;\n params: Record<string, unknown>;\n opts?: Partial<ModelRequestOptions>;\n}) {\n assert(props.source, 'executeModel: missing source');\n assert(props.model, 'executeModel: missing model');\n assert(props.params, 'executeModel: missing params');\n\n assert(\n AVAILABLE_MODELS.includes(props.model),\n `executeModel: model provided isn't valid. Available models: ${AVAILABLE_MODELS.join(\n ', '\n )}`\n );\n\n const {model, source, params, opts} = props;\n const {type, apiVersion, apiBaseUrl, accessToken, connectionName, clientId} =\n source;\n\n assert(apiBaseUrl, 'executeModel: missing apiBaseUrl');\n assert(accessToken, 'executeModel: missing accessToken');\n assert(apiVersion === V3, 'executeModel: SQL Model API requires CARTO 3+');\n assert(type !== 'tileset', 'executeModel: Tilesets not supported');\n\n let url = `${apiBaseUrl}/v3/sql/${connectionName}/model/${model}`;\n\n const {\n data,\n filters,\n filtersLogicalOperator = 'and',\n spatialDataType = 'geo',\n spatialFiltersMode = 'intersects',\n } = source;\n\n const queryParams: Record<string, unknown> = {\n type,\n client: clientId,\n source: data,\n params,\n queryParameters: source.queryParameters || '',\n filters,\n filtersLogicalOperator,\n };\n\n const spatialDataColumn = source.spatialDataColumn || DEFAULT_GEO_COLUMN;\n\n // Picking Model API requires 'spatialDataColumn'.\n if (model === 'pick') {\n queryParams.spatialDataColumn = spatialDataColumn;\n }\n\n // API supports multiple filters, we apply it only to spatialDataColumn\n const spatialFilters = source.spatialFilter\n ? {[spatialDataColumn]: source.spatialFilter}\n : undefined;\n\n if (spatialFilters) {\n queryParams.spatialFilters = spatialFilters;\n queryParams.spatialDataColumn = spatialDataColumn;\n queryParams.spatialDataType = spatialDataType;\n }\n\n if (spatialDataType !== 'geo') {\n queryParams.spatialFiltersMode = spatialFiltersMode;\n }\n\n const urlWithSearchParams =\n url + '?' + objectToURLSearchParams(queryParams).toString();\n const isGet = urlWithSearchParams.length <= REQUEST_GET_MAX_URL_LENGTH;\n if (isGet) {\n url = urlWithSearchParams;\n }\n return makeCall({\n url,\n accessToken: source.accessToken,\n opts: {\n ...opts,\n method: isGet ? 'GET' : 'POST',\n ...(!isGet && {body: JSON.stringify(queryParams)}),\n },\n });\n}\n\nfunction objectToURLSearchParams(object: Record<string, unknown>) {\n const params = new URLSearchParams();\n for (const key in object) {\n if (isPureObject(object[key])) {\n params.append(key, JSON.stringify(object[key]));\n } else if (Array.isArray(object[key])) {\n params.append(key, JSON.stringify(object[key]));\n } else if (object[key] === null) {\n params.append(key, 'null');\n } else if (object[key] !== undefined) {\n params.append(key, String(object[key] as unknown));\n }\n }\n return params;\n}\n","import {executeModel} from '../models/index.js';\nimport {\n CategoryRequestOptions,\n CategoryResponse,\n FeaturesRequestOptions,\n FeaturesResponse,\n FormulaRequestOptions,\n FormulaResponse,\n HistogramRequestOptions,\n HistogramResponse,\n RangeRequestOptions,\n RangeResponse,\n ScatterRequestOptions,\n ScatterResponse,\n TableRequestOptions,\n TableResponse,\n TimeSeriesRequestOptions,\n TimeSeriesResponse,\n} from './types.js';\nimport {normalizeObjectKeys} from '../utils.js';\nimport {DEFAULT_TILE_RESOLUTION} from '../constants-internal.js';\nimport {WidgetSource, WidgetSourceProps} from './widget-source.js';\n\nexport type WidgetRemoteSourceProps = WidgetSourceProps;\n\n/**\n * Source for Widget API requests.\n *\n * Abstract class. Use {@link WidgetQuerySource} or {@link WidgetTableSource}.\n */\nexport abstract class WidgetRemoteSource<\n Props extends WidgetRemoteSourceProps,\n> extends WidgetSource<Props> {\n async getCategories(\n options: CategoryRequestOptions\n ): Promise<CategoryResponse> {\n const {\n signal,\n filters = this.props.filters,\n filterOwner,\n spatialFilter,\n spatialFiltersMode,\n ...params\n } = options;\n const {column, operation, operationColumn} = params;\n\n type CategoriesModelResponse = {rows: {name: string; value: number}[]};\n\n return executeModel({\n model: 'category',\n source: {\n ...this.getModelSource(filters, filterOwner),\n spatialFiltersMode,\n spatialFilter,\n },\n params: {\n column,\n operation,\n operationColumn: operationColumn || column,\n },\n opts: {signal, headers: this.props.headers},\n }).then((res: CategoriesModelResponse) => normalizeObjectKeys(res.rows));\n }\n\n async getFeatures(\n options: FeaturesRequestOptions\n ): Promise<FeaturesResponse> {\n const {\n abortController,\n signal = abortController?.signal,\n filters = this.props.filters,\n filterOwner,\n spatialFilter,\n spatialFiltersMode,\n ...params\n } = options;\n const {columns, dataType, featureIds, z, limit, tileResolution} = params;\n\n type FeaturesModelResponse = {rows: Record<string, unknown>[]};\n\n return executeModel({\n model: 'pick',\n source: {\n ...this.getModelSource(filters, filterOwner),\n spatialFiltersMode,\n spatialFilter,\n },\n params: {\n columns,\n dataType,\n featureIds,\n z,\n limit: limit || 1000,\n tileResolution: tileResolution || DEFAULT_TILE_RESOLUTION,\n },\n opts: {signal, headers: this.props.headers},\n // Avoid `normalizeObjectKeys()`, which changes column names.\n }).then(({rows}: FeaturesModelResponse) => ({rows}));\n }\n\n async getFormula(options: FormulaRequestOptions): Promise<FormulaResponse> {\n const {\n abortController,\n signal = abortController?.signal,\n filters = this.props.filters,\n filterOwner,\n spatialFilter,\n spatialFiltersMode,\n operationExp,\n ...params\n } = options;\n const {column, operation} = params;\n\n type FormulaModelResponse = {rows: {value: number}[]};\n\n return executeModel({\n model: 'formula',\n source: {\n ...this.getModelSource(filters, filterOwner),\n spatialFiltersMode,\n spatialFilter,\n },\n params: {\n column: column ?? '*',\n operation: operation ?? 'count',\n operationExp,\n },\n opts: {signal, headers: this.props.headers},\n }).then((res: FormulaModelResponse) => normalizeObjectKeys(res.rows[0]));\n }\n\n async getHistogram(\n options: HistogramRequestOptions\n ): Promise<HistogramResponse> {\n const {\n abortController,\n signal = abortController?.signal,\n filters = this.props.filters,\n filterOwner,\n spatialFilter,\n spatialFiltersMode,\n ...params\n } = options;\n const {column, operation, ticks} = params;\n\n type HistogramModelResponse = {rows: {tick: number; value: number}[]};\n\n const data = await executeModel({\n model: 'histogram',\n source: {\n ...this.getModelSource(filters, filterOwner),\n spatialFiltersMode,\n spatialFilter,\n },\n params: {column, operation, ticks},\n opts: {signal, headers: this.props.headers},\n }).then((res: HistogramModelResponse) => normalizeObjectKeys(res.rows));\n\n if (data.length) {\n // Given N ticks the API returns up to N+1 bins, omitting any empty bins. Bins\n // include 1 bin below the lowest tick, N-1 between ticks, and 1 bin above the highest tick.\n const result = Array(ticks.length + 1).fill(0);\n data.forEach(\n ({tick, value}: {tick: number; value: number}) => (result[tick] = value)\n );\n return result;\n }\n\n return [];\n }\n\n async getRange(options: RangeRequestOptions): Promise<RangeResponse> {\n const {\n abortController,\n signal = abortController?.signal,\n filters = this.props.filters,\n filterOwner,\n spatialFilter,\n spatialFiltersMode,\n ...params\n } = options;\n const {column} = params;\n\n type RangeModelResponse = {rows: {min: number; max: number}[]};\n\n return executeModel({\n model: 'range',\n source: {\n ...this.getModelSource(filters, filterOwner),\n spatialFiltersMode,\n spatialFilter,\n },\n params: {column},\n opts: {signal, headers: this.props.headers},\n }).then((res: RangeModelResponse) => normalizeObjectKeys(res.rows[0]));\n }\n\n async getScatter(options: ScatterRequestOptions): Promise<ScatterResponse> {\n const {\n abortController,\n signal = abortController?.signal,\n filters = this.props.filters,\n filterOwner,\n spatialFilter,\n spatialFiltersMode,\n ...params\n } = options;\n const {xAxisColumn, xAxisJoinOperation, yAxisColumn, yAxisJoinOperation} =\n params;\n\n // Make sure this is sync with the same constant in cloud-native/maps-api\n const HARD_LIMIT = 500;\n\n type ScatterModelResponse = {rows: {x: number; y: number}[]};\n\n return executeModel({\n model: 'scatterplot',\n source: {\n ...this.getModelSource(filters, filterOwner),\n spatialFiltersMode,\n spatialFilter,\n },\n params: {\n xAxisColumn,\n xAxisJoinOperation,\n yAxisColumn,\n yAxisJoinOperation,\n limit: HARD_LIMIT,\n },\n opts: {signal, headers: this.props.headers},\n })\n .then((res: ScatterModelResponse) => normalizeObjectKeys(res.rows))\n .then((res) => res.map(({x, y}: {x: number; y: number}) => [x, y]));\n }\n\n async getTable(options: TableRequestOptions): Promise<TableResponse> {\n const {\n abortController,\n signal = abortController?.signal,\n filters = this.props.filters,\n filterOwner,\n spatialFilter,\n spatialFiltersMode,\n ...params\n } = options;\n const {columns, sortBy, sortDirection, offset = 0, limit = 10} = params;\n\n type TableModelResponse = {\n rows: Record<string, number | string>[];\n metadata: {total: number};\n };\n\n return executeModel({\n model: 'table',\n source: {\n ...this.getModelSource(filters, filterOwner),\n spatialFiltersMode,\n spatialFilter,\n },\n params: {\n column: columns,\n sortBy,\n sortDirection,\n limit,\n offset,\n },\n opts: {signal, headers: this.props.headers},\n }).then((res: TableModelResponse) => ({\n // Avoid `normalizeObjectKeys()`, which changes column names.\n rows: res.rows ?? (res as any).ROWS,\n totalCount: res.metadata?.total ?? (res as any).METADATA?.TOTAL,\n }));\n }\n\n async getTimeSeries(\n options: TimeSeriesRequestOptions\n ): Promise<TimeSeriesResponse> {\n const {\n abortController,\n signal = abortController?.signal,\n filters = this.props.filters,\n filterOwner,\n spatialFilter,\n spatialFiltersMode,\n ...params\n } = options;\n const {\n column,\n operationColumn,\n joinOperation,\n operation,\n stepSize,\n stepMultiplier,\n splitByCategory,\n splitByCategoryLimit,\n splitByCategoryValues,\n } = params;\n\n type TimeSeriesModelResponse = {\n rows: {name: string; value: number}[];\n metadata: {categories: string[]};\n };\n\n return executeModel({\n model: 'timeseries',\n source: {\n ...this.getModelSource(filters, filterOwner),\n spatialFiltersMode,\n spatialFilter,\n },\n params: {\n column,\n stepSize,\n stepMultiplier,\n operationColumn: operationColumn || column,\n joinOperation,\n operation,\n splitByCategory,\n splitByCategoryLimit,\n splitByCategoryValues,\n },\n opts: {signal, headers: this.props.headers},\n }).then((res: TimeSeriesModelResponse) => ({\n rows: normalizeObjectKeys(res.rows),\n categories: res.metadata?.categories,\n }));\n }\n}\n","import {\n H3QuerySourceOptions,\n QuadbinQuerySourceOptions,\n VectorQuerySourceOptions,\n} from '../sources/index.js';\nimport {\n WidgetRemoteSource,\n WidgetRemoteSourceProps,\n} from './widget-remote-source.js';\nimport {ModelSource} from '../models/model.js';\nimport {Filters} from '../types.js';\n\ntype LayerQuerySourceOptions =\n | Omit<VectorQuerySourceOptions, 'filters'>\n | Omit<H3QuerySourceOptions, 'filters'>\n | Omit<QuadbinQuerySourceOptions, 'filters'>;\n\nexport type WidgetQuerySourceResult = {widgetSource: WidgetQuerySource};\n\n/**\n * Source for Widget API requests on a data source defined by a SQL query.\n *\n * Generally not intended to be constructed directly. Instead, call\n * {@link vectorQuerySource}, {@link h3QuerySource}, or {@link quadbinQuerySource},\n * which can be shared with map layers. Sources contain a `widgetSource` property,\n * for use by widget implementations.\n *\n * Example:\n *\n * ```javascript\n * import { vectorQuerySource } from '@carto/api-client';\n *\n * const data = vectorQuerySource({\n * accessToken: '••••',\n * connectionName: 'carto_dw',\n * sqlQuery: 'SELECT * FROM carto-demo-data.demo_tables.retail_stores'\n * });\n *\n * const { widgetSource } = await data;\n * ```\n */\nexport class WidgetQuerySource extends WidgetRemoteSource<\n LayerQuerySourceOptions & WidgetRemoteSourceProps\n> {\n protected override getModelSource(\n filters: Filters | undefined,\n filterOwner?: string\n ): ModelSource {\n return {\n ...super._getModelSource(filters, filterOwner),\n type: 'query',\n data: this.props.sqlQuery,\n queryParameters: this.props.queryParameters,\n };\n }\n}\n","import {\n H3TableSourceOptions,\n QuadbinTableSourceOptions,\n VectorTableSourceOptions,\n} from '../sources/index.js';\nimport {\n WidgetRemoteSource,\n WidgetRemoteSourceProps,\n} from './widget-remote-source.js';\nimport {ModelSource} from '../models/model.js';\nimport {Filters} from '../types.js';\n\ntype LayerTableSourceOptions =\n | Omit<VectorTableSourceOptions, 'filters'>\n | Omit<H3TableSourceOptions, 'filters'>\n | Omit<QuadbinTableSourceOptions, 'filters'>;\n\nexport type WidgetTableSourceResult = {widgetSource: WidgetTableSource};\n\n/**\n * Source for Widget API requests on a data source defined as a table.\n *\n * Generally not intended to be constructed directly. Instead, call\n * {@link vectorTableSource}, {@link h3TableSource}, or {@link quadbinTableSource},\n * which can be shared with map layers. Sources contain a `widgetSource` property,\n * for use by widget implementations.\n *\n * Example:\n *\n * ```javascript\n * import { vectorTableSource } from '@carto/api-client';\n *\n * const data = vectorTableSource({\n * accessToken: '••••',\n * connectionName: 'carto_dw',\n * tableName: 'carto-demo-data.demo_tables.retail_stores'\n * });\n *\n * const { widgetSource } = await data;\n * ```\n */\nexport class WidgetTableSource extends WidgetRemoteSource<\n LayerTableSourceOptions & WidgetRemoteSourceProps\n> {\n protected override getModelSource(\n filters: Filters | undefined,\n filterOwner?: string\n ): ModelSource {\n return {\n ...super._getModelSource(filters, filterOwner),\n type: 'table',\n data: this.props.tableName,\n };\n }\n}\n","import {AggregationType} from '../types.js';\nimport {FeatureData} from '../types-internal.js';\n\n/** @privateRemarks Source: @carto/react-core */\nexport type AggregationFunction = (\n values: unknown[] | FeatureData[],\n keys?: string[] | string,\n joinOperation?: AggregationType\n) => number;\n\n/** @privateRemarks Source: @carto/react-core */\nexport const aggregationFunctions: Record<\n Exclude<AggregationType, 'custom'>,\n AggregationFunction\n> = {\n count: (values) => values.length,\n min: (...args) => applyAggregationFunction(min, ...args),\n max: (...args) => applyAggregationFunction(max, ...args),\n sum: (...args) => applyAggregationFunction(sum, ...args),\n avg: (...args) => applyAggregationFunction(avg, ...args),\n};\n\n/** @privateRemarks Source: @carto/react-core */\nexport function aggregate(\n feature: FeatureData,\n keys?: string[],\n operation?: AggregationType\n): unknown {\n if (!keys?.length) {\n throw new Error('Cannot aggregate a feature without having keys');\n } else if (keys.length === 1) {\n const value = feature[keys[0]];\n return isPotentiallyValidNumber(value) ? Number(value) : value;\n }\n\n const aggregationFn =\n aggregationFunctions[operation as Exclude<AggregationType, 'custom'>];\n\n if (!aggregationFn) {\n throw new Error(`${operation} isn't a valid aggregation function`);\n }\n\n return aggregationFn(\n keys.map((column) => {\n const value = feature[column];\n return isPotentiallyValidNumber(value) ? Number(value) : value;\n })\n );\n}\n\n/*\n * Forced casting to Number (just of non empty strings) allows to work-around\n * some specific situations, where a big numeric field is transformed into a string when generating the tileset(eg.PG)\n */\nfunction isPotentiallyValidNumber(value: unknown): boolean {\n return typeof value === 'string' && value.trim().length > 0;\n}\n\nconst applyAggregationFunction = (\n aggFn: AggregationFunction,\n values: unknown[] | FeatureData[],\n keys?: string[] | string,\n operation?: AggregationType\n) => {\n const normalizedKeys = normalizeKeys(keys);\n const elements =\n (normalizedKeys?.length || 0) <= 1\n ? filterFalsyElements(values as unknown[], normalizedKeys || [])\n : values;\n return aggFn(elements, keys, operation);\n};\n\nfunction filterFalsyElements(\n values: unknown[] | FeatureData[],\n keys: string[]\n) {\n const filterFn = (value: unknown) => value !== null && value !== undefined;\n\n if (!keys?.length) {\n return values.filter(filterFn);\n }\n\n return (values as FeatureData[]).filter((v) => filterFn(v[keys[0]]));\n}\n\n// Aggregation functions\nfunction avg(\n values: unknown[] | FeatureData[],\n keys?: string[] | string,\n joinOperation?: AggregationType\n): number {\n return sum(values, keys, joinOperation) / (values.length || 1);\n}\n\nfunction sum(\n values: unknown[] | FeatureData[],\n keys?: string[] | string,\n joinOperation?: AggregationType\n): number {\n const normalizedKeys = normalizeKeys(keys);\n\n if (normalizedKeys) {\n return (values as FeatureData[]).reduce(\n (a, b) => a + (aggregate(b, normalizedKeys, joinOperation) as number),\n 0\n );\n }\n\n return values.reduce((a: number, b: unknown) => a + (b as number), 0);\n}\n\nfunction min(\n values: unknown[] | FeatureData[],\n keys?: string[] | string,\n joinOperation?: AggregationType\n): number {\n const normalizedKeys = normalizeKeys(keys);\n if (normalizedKeys) {\n return (values as FeatureData[]).reduce(\n (a, b) =>\n Math.min(a, aggregate(b, normalizedKeys, joinOperation) as number),\n Infinity\n );\n }\n return Math.min(...(values as number[]));\n}\n\nfunction max(\n values: unknown[] | FeatureData[],\n keys?: string[] | string,\n joinOperation?: AggregationType\n): number {\n const normalizedKeys = normalizeKeys(keys);\n if (normalizedKeys) {\n return (values as FeatureData[]).reduce(\n (a, b) =>\n Math.max(a, aggregate(b, normalizedKeys, joinOperation) as number),\n -Infinity\n );\n }\n return Math.max(...(values as number[]));\n}\n\n// Aux\n\n// Keys can come as a string (one column) or a strings array (multiple column)\n// Use always an array to make the code easier\nfunction normalizeKeys(keys: unknown): string[] | undefined {\n return Array.isArray(keys)\n ? keys\n : typeof keys === 'string'\n ? [keys]\n : undefined;\n}\n","/***\n Copyright 2013 Teun Duynstee\n\n Licensed under the Apache License, Version 2.0 (the \"License\");\n you may not use this file except in compliance with the License.\n You may obtain a copy of the License at\n\n http://www.apache.org/licenses/LICENSE-2.0\n\n Unless required by applicable law or agreed to in writing, software\n distributed under the License is distributed on an \"AS IS\" BASIS,\n WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n See the License for the specific language governing permissions and\n limitations under the License.\n*/\nmodule.exports = (function() {\n\n function identity(v){return v;}\n\n function ignoreCase(v){return typeof(v)===\"string\" ? v.toLowerCase() : v;}\n\n function makeCompareFunction(f, opt){\n opt = typeof(opt)===\"object\" ? opt : {direction:opt};\n \n if(typeof(f)!=\"function\"){\n var prop = f;\n // make unary function\n f = function(v1){return !!v1[prop] ? v1[prop] : \"\";}\n }\n if(f.length === 1) {\n // f is a unary function mapping a single item to its sort score\n var uf = f;\n var preprocess = opt.ignoreCase?ignoreCase:identity;\n var cmp = opt.cmp || function(v1,v2) {return v1 < v2 ? -1 : v1 > v2 ? 1 : 0;}\n f = function(v1,v2) {return cmp(preprocess(uf(v1)), preprocess(uf(v2)));}\n }\n const descTokens = {\"-1\":'', desc:''};\n if(opt.direction in descTokens) return function(v1,v2){return -f(v1,v2)};\n return f;\n }\n\n /* adds a secondary compare function to the target function (`this` context)\n which is applied in case the first one returns 0 (equal)\n returns a new compare function, which has a `thenBy` method as well */\n function tb(func, opt) {\n /* should get value false for the first call. This can be done by calling the \n exported function, or the firstBy property on it (for es6 module compatibility)\n */\n var x = (typeof(this) == \"function\" && !this.firstBy) ? this : false;\n var y = makeCompareFunction(func, opt);\n var f = x ? function(a, b) {\n return x(a,b) || y(a,b);\n }\n : y;\n f.thenBy = tb;\n return f;\n }\n tb.firstBy = tb;\n return tb;\n})();\n","import {firstBy} from 'thenby';\nimport {SortDirection} from '../types.js';\nimport {FeatureData} from '../types-internal.js';\n\n// TODO(cleanup): Could this be simplified?\ntype SortColumns = string | string[] | object[];\n\ninterface SortOptions {\n sortBy?: SortColumns;\n sortByDirection?: SortDirection;\n sortByColumnType?: 'number' | 'string' | 'date';\n}\n\n/**\n * Apply sort structure to a collection of features\n * @param features\n * @param [sortOptions]\n * @param [sortOptions.sortBy] - One or more columns to sort by\n * @param [sortOptions.sortByDirection] - Direction by the columns will be sorted\n * @param [sortOptions.sortByColumnType] - Column type\n * @internal\n * @privateRemarks Source: @carto/react-core\n */\nexport function applySorting(\n features: FeatureData[],\n {\n sortBy,\n sortByDirection = 'asc',\n sortByColumnType = 'string',\n }: SortOptions = {}\n): FeatureData[] {\n // If sortBy is undefined, pass all features\n if (sortBy === undefined) {\n return features;\n }\n\n // sortOptions exists, but are bad formatted\n const isValidSortBy =\n (Array.isArray(sortBy) && sortBy.length) || // sortBy can be an array of columns\n typeof sortBy === 'string'; // or just one column\n\n if (!isValidSortBy) {\n throw new Error('Sorting options are bad formatted');\n }\n const sortFn = createSortFn({\n sortBy,\n sortByDirection,\n sortByColumnType: sortByColumnType || 'string',\n });\n return features.sort(sortFn);\n}\n\n// Aux\nfunction createSortFn({\n sortBy,\n sortByDirection,\n sortByColumnType,\n}: Required<SortOptions>) {\n const [firstSortOption, ...othersSortOptions] = normalizeSortByOptions({\n sortBy,\n sortByDirection,\n sortByColumnType,\n }) as Parameters<typeof firstBy>[];\n\n let sortFn = firstBy(...firstSortOption);\n for (const sortOptions of othersSortOptions) {\n sortFn = sortFn.thenBy(...sortOptions);\n }\n\n return sortFn;\n}\n\nfunction normalizeSortByOptions({\n sortBy,\n sortByDirection,\n sortByColumnType,\n}: Required<SortOptions>) {\n const numberFormat = sortByColumnType === 'number' && {\n cmp: (a: number, b: number) => a - b,\n };\n if (!Array.isArray(sortBy)) {\n sortBy = [sortBy];\n }\n return sortBy.map((sortByEl) => {\n // sortByEl is 'column'\n if (typeof sortByEl === 'string') {\n return [sortByEl, {direction: sortByDirection, ...numberFormat}];\n }\n\n if (Array.isArray(sortByEl)) {\n // sortBy is ['column']\n if (sortByEl[1] === undefined) {\n return [sortByEl, {direction: sortByDirection, ...numberFormat}];\n }\n\n // sortBy is ['column', { ... }]\n if (typeof sortByEl[1] === 'object') {\n const othersSortOptions = numberFormat\n ? {...numberFormat, ...sortByEl[1]}\n : sortByEl[1];\n return [\n sortByEl[0],\n {direction: sortByDirection, ...othersSortOptions},\n ];\n }\n }\n return sortByEl;\n });\n}\n","import {aggregationFunctions, aggregate} from './aggregation.js';\nimport {AggregationType} from '../types.js';\nimport {FeatureData} from '../types-internal.js';\n\n/** @privateRemarks Source: @carto/react-core */\nexport type GroupByFeature = {\n name: string;\n value: number;\n}[];\n\n/** @privateRemarks Source: @carto/react-core */\nexport function groupValuesByColumn({\n data,\n valuesColumns,\n joinOperation,\n keysColumn,\n operation,\n}: {\n data: FeatureData[];\n valuesColumns?: string[];\n joinOperation?: AggregationType;\n keysColumn: string;\n operation: AggregationType;\n}): GroupByFeature | null {\n if (Array.isArray(data) && data.length === 0) {\n return null;\n }\n const groups = data.reduce((accumulator, item) => {\n const group = item[keysColumn];\n\n const values = accumulator.get(group) || [];\n accumulator.set(group, values);\n\n const aggregatedValue = aggregate(item, valuesColumns, joinOperation);\n\n const isValid =\n (operation === 'count' ? true : aggregatedValue !== null) &&\n aggregatedValue !== undefined;\n\n if (isValid) {\n values.push(aggregatedValue);\n accumulator.set(group, values);\n }\n\n return accumulator;\n }, new Map()); // We use a map to be able to maintain the type in the key value\n\n const targetOperation =\n aggregationFunctions[operation as Exclude<AggregationType, 'custom'>];\n\n if (targetOperation) {\n return Array.from(groups).map(([name, value]) => ({\n name,\n value: targetOperation(value),\n }));\n }\n\n return [];\n}\n","/**\n * Returns midnight (local time) on the Monday preceeding a given date, in\n * milliseconds since the UNIX epoch.\n */\nexport function getMonday(date: number | Date): number {\n const dateCp = new Date(date);\n const day = dateCp.getDay();\n const diff = dateCp.getDate() - day + (day ? 1 : -6); // adjust when day is sunday\n dateCp.setDate(diff);\n dateCp.setHours(0, 0, 0, 0);\n return dateCp.getTime();\n}\n\n/**\n * Returns midnight (UTC) on the Monday preceeding a given date, in\n * milliseconds since the UNIX epoch.\n */\nexport function getUTCMonday(date: number | Date): number {\n const dateCp = new Date(date);\n const day = dateCp.getUTCDay();\n const diff = dateCp.getUTCDate() - day + (day ? 1 : -6); // adjust when day is sunday\n dateCp.setUTCDate(diff);\n return Date.UTC(\n dateCp.getUTCFullYear(),\n dateCp.getUTCMonth(),\n dateCp.getUTCDate()\n );\n}\n","import {AggregationType, GroupDateType} from '../types.js';\nimport {getUTCMonday} from '../utils/dateUtils.js';\nimport {aggregate, aggregationFunctions} from './aggregation.js';\nimport {GroupByFeature} from './groupBy.js';\n\nconst GROUP_KEY_FN_MAPPING: Record<GroupDateType, (date: Date) => number> = {\n year: (date: Date) => Date.UTC(date.getUTCFullYear()),\n month: (date: Date) => Date.UTC(date.getUTCFullYear(), date.getUTCMonth()),\n week: (date: Date) => getUTCMonday(date),\n day: (date: Date) =>\n Date.UTC(date.getUTCFullYear(), date.getUTCMonth(), date.getUTCDate()),\n hour: (date: Date) =>\n Date.UTC(\n date.getUTCFullYear(),\n date.getUTCMonth(),\n date.getUTCDate(),\n date.getUTCHours()\n ),\n minute: (date: Date) =>\n Date.UTC(\n date.getUTCFullYear(),\n date.getUTCMonth(),\n date.getUTCDate(),\n date.getUTCHours(),\n date.getUTCMinutes()\n ),\n second: (date: Date) =>\n Date.UTC(\n date.getUTCFullYear(),\n date.getUTCMonth(),\n date.getUTCDate(),\n date.getUTCHours(),\n date.getUTCMinutes(),\n date.getUTCSeconds()\n ),\n};\n\n/** @privateRemarks Source: @carto/react-core */\nexport function groupValuesByDateColumn({\n data,\n valuesColumns,\n joinOperation,\n keysColumn,\n groupType,\n operation,\n}: {\n data: Record<string, unknown>[];\n valuesColumns?: string[];\n joinOperation?: Exclude<AggregationType, 'custom'>;\n keysColumn: string;\n groupType: GroupDateType;\n operation?: Exclude<AggregationType, 'custom'>;\n}): GroupByFeature | null {\n if (Array.isArray(data) && data.length === 0) {\n return null;\n }\n\n const groupKeyFn = GROUP_KEY_FN_MAPPING[groupType];\n\n if (!groupKeyFn) {\n return null;\n }\n\n const groups = data.reduce((acc, item) => {\n const value = item[keysColumn];\n const formattedValue = new Date(value as number);\n const groupKey = groupKeyFn(formattedValue);\n\n if (!isNaN(groupKey)) {\n let groupedValues = acc.get(groupKey);\n if (!groupedValues) {\n groupedValues = [];\n acc.set(groupKey, groupedValues);\n }\n\n const aggregatedValue = aggregate(item, valuesColumns, joinOperation);\n\n const isValid = aggregatedValue !== null && aggregatedValue !== undefined;\n\n if (isValid) {\n groupedValues.push(aggregatedValue);\n acc.set(groupKey, groupedValues);\n }\n }\n\n return acc;\n }, new Map());\n\n const targetOperation =\n aggregationFunctions[operation as Exclude<AggregationType, 'custom'>];\n\n return [...groups.entries()]\n .map(([name, value]) => ({\n name,\n value: targetOperation(value),\n }))\n .sort((a, b) => a.name - b.name);\n}\n","import {aggregate, aggregationFunctions} from './aggregation.js';\nimport {AggregationType} from '../types.js';\nimport {FeatureData} from '../types-internal.js';\n\n/**\n * Histogram computation.\n * @privateRemarks Source: @carto/react-core\n */\nexport function histogram({\n data,\n valuesColumns,\n joinOperation,\n ticks,\n operation,\n}: {\n data: FeatureData[];\n valuesColumns?: string[];\n joinOperation?: Exclude<AggregationType, 'custom'>;\n ticks: number[];\n operation: Exclude<AggregationType, 'custom'>;\n}): number[] {\n if (Array.isArray(data) && data.length === 0) {\n return [];\n }\n\n const binsContainer = [Number.MIN_SAFE_INTEGER, ...ticks].map(\n (tick, index, arr) => ({\n bin: index,\n start: tick,\n end: index === arr.length - 1 ? Number.MAX_SAFE_INTEGER : arr[index + 1],\n values: [] as number[],\n })\n );\n\n data.forEach((feature) => {\n const featureValue = aggregate(\n feature,\n valuesColumns,\n joinOperation\n ) as number;\n\n const isValid = featureValue !== null && featureValue !== undefined;\n\n if (!isValid) {\n return;\n }\n\n const binContainer = binsContainer.find(\n (bin) => bin.start <= featureValue && bin.end > featureValue\n );\n\n if (!binContainer) {\n return;\n }\n\n binContainer.values.push(featureValue);\n });\n\n const targetOperation = aggregationFunctions[operation];\n const transformedBins = binsContainer.map(\n (binContainer) => binContainer.values\n );\n return transformedBins.map((values) =>\n values.length ? targetOperation(values) : 0\n );\n}\n","import {aggregate} from './aggregation.js';\nimport {FeatureData} from '../types-internal.js';\nimport {AggregationType} from '../types.js';\n\nexport type ScatterPlotFeature = [number, number][];\n\n/**\n * Filters invalid features and formats data.\n * @privateRemarks Source: @carto/react-core\n */\nexport function scatterPlot({\n data,\n xAxisColumns,\n xAxisJoinOperation,\n yAxisColumns,\n yAxisJoinOperation,\n}: {\n data: FeatureData[];\n xAxisColumns: string[];\n xAxisJoinOperation?: AggregationType;\n yAxisColumns: string[];\n yAxisJoinOperation?: AggregationType;\n}): ScatterPlotFeature {\n return data.reduce(\n (acc, feature) => {\n const xValue = aggregate(\n feature,\n xAxisColumns,\n xAxisJoinOperation\n ) as number;\n\n const xIsValid = xValue !== null && xValue !== undefined;\n\n const yValue = aggregate(\n feature,\n yAxisColumns,\n yAxisJoinOperation\n ) as number;\n\n const yIsValid = yValue !== null && yValue !== undefined;\n\n if (xIsValid && yIsValid) {\n acc.push([xValue, yValue]);\n }\n\n return acc;\n },\n [] as [number, number][]\n );\n}\n","/* eslint-disable @typescript-eslint/require-await */\nimport {TilesetSourceOptions} from '../sources/index.js';\nimport type {ModelSource} from '../models/index.js';\nimport {\n CategoryRequestOptions,\n CategoryResponse,\n FeaturesResponse,\n FormulaRequestOptions,\n FormulaResponse,\n HistogramRequestOptions,\n HistogramResponse,\n RangeRequestOptions,\n RangeResponse,\n ScatterRequestOptions,\n ScatterResponse,\n TableRequestOptions,\n TableResponse,\n TimeSeriesRequestOptions,\n TimeSeriesResponse,\n} from './types.js';\nimport {InvalidColumnError, assert, getApplicableFilters} from '../utils.js';\nimport {TileFormat} from '../constants.js';\nimport {Filter, Filters, SpatialFilter, Tile} from '../types.js';\nimport {\n TileFeatureExtractOptions,\n applyFilters,\n geojsonFeatures,\n tileFeatures,\n} from '../filters/index.js';\nimport {\n aggregationFunctions,\n applySorting,\n groupValuesByColumn,\n groupValuesByDateColumn,\n histogram,\n scatterPlot,\n} from '../operations/index.js';\nimport {FeatureData} from '../types-internal.js';\nimport {FeatureCollection} from 'geojson';\nimport {SpatialDataType} from '../sources/types.js';\nimport {WidgetSource, WidgetSourceProps} from './widget-source.js';\nimport {booleanEqual} from '@turf/boolean-equal';\n\n// TODO(cleanup): Parameter defaults in source functions and widget API calls are\n// currently duplicated and possibly inconsistent. Consider consolidating and\n// operating on Required<T> objects. See:\n// https://github.com/CartoDB/carto-api-client/issues/39\n\nexport type WidgetTilesetSourceProps = WidgetSourceProps &\n Omit<TilesetSourceOptions, 'filters'> & {\n tileFormat: TileFormat;\n spatialDataType: SpatialDataType;\n };\n\nexport type WidgetTilesetSourceResult = {widgetSource: WidgetTilesetSource};\n\n/**\n * Source for Widget API requests on a data source defined by a tileset.\n *\n * Generally not intended to be constructed directly. Instead, call\n * {@link vectorTilesetSource}, {@link h3TilesetSource}, or {@link quadbinTilesetSource},\n * which can be shared with map layers. Sources contain a `widgetSource`\n * property, for use by widget implementations.\n *\n * Example:\n *\n * ```javascript\n * import { vectorTilesetSource } from '@carto/api-client';\n *\n * const data = vectorTilesetSource({\n * accessToken: '••••',\n * connectionName: 'carto_dw',\n * tableName: 'carto-demo-data.demo_rasters.my_tileset_source'\n * });\n *\n * const { widgetSource } = await data;\n * ```\n */\nexport class WidgetTilesetSource extends WidgetSource<WidgetTilesetSourceProps> {\n private _tiles: Tile[] = [];\n private _features: FeatureData[] = [];\n private _tileFeatureExtractOptions: TileFeatureExtractOptions = {};\n private _tileFeatureExtractPreviousInputs: {spatialFilter?: SpatialFilter} =\n {};\n\n protected override getModelSource(\n filters: Filters | undefined,\n filterOwner: string\n ): ModelSource {\n return {\n ...super._getModelSource(filters, filterOwner),\n type: 'tileset',\n data: this.props.tableName,\n };\n }\n\n /**\n * Loads features as a list of tiles (typically provided by deck.gl).\n * After tiles are loaded, {@link extractTileFeatures} must be called\n * before computing statistics on the tiles.\n */\n loadTiles(tiles: unknown[]) {\n this._tiles = tiles as Tile[];\n this._features.length = 0;\n }\n\n /** Configures options used to extract features from tiles. */\n setTileFeatureExtractOptions(options: TileFeatureExtractOptions) {\n this._tileFeatureExtractOptions = options;\n this._features.length = 0;\n }\n\n protected _extractTileFeatures(spatialFilter: SpatialFilter) {\n // When spatial filter has not changed, don't redo extraction. If tiles or\n // tile extract options change, features will have been cleared already.\n const prevInputs = this._tileFeatureExtractPreviousInputs;\n if (\n this._features.length &&\n prevInputs.spatialFilter &&\n booleanEqual(prevInputs.spatialFilter, spatialFilter)\n ) {\n return;\n }\n\n this._features = tileFeatures({\n tiles: this._tiles,\n tileFormat: this.props.tileFormat,\n ...this._tileFeatureExtractOptions,\n\n spatialFilter,\n spatialDataColumn: this.props.spatialDataColumn,\n spatialDataType: this.props.spatialDataType,\n });\n\n prevInputs.spatialFilter = spatialFilter;\n }\n\n /**\n * Loads features as GeoJSON (used for testing).\n * @experimental\n * @internal Not for public use. Spatial filters in other method calls will be ignored.\n */\n loadGeoJSON({\n geojson,\n spatialFilter,\n }: {\n geojson: FeatureCollection;\n spatialFilter: SpatialFilter;\n }) {\n this._features = geojsonFeatures({\n geojson,\n spatialFilter,\n ...this._tileFeatureExtractOptions,\n });\n this._tileFeatureExtractPreviousInputs.spatialFilter = spatialFilter;\n }\n\n override async getFeatures(): Promise<FeaturesResponse> {\n throw new Error('getFeatures not supported for tilesets');\n }\n\n async getFormula({\n column = '*',\n operation = 'count',\n joinOperation,\n filters,\n filterOwner,\n spatialFilter,\n }: FormulaRequestOptions): Promise<FormulaResponse> {\n if (operation === 'custom') {\n throw new Error('Custom aggregation not supported for tilesets');\n }\n\n // Column is required except when operation is 'count'.\n if ((column && column !== '*') || operation !== 'count') {\n assertColumn(this._features, column);\n }\n\n const filteredFeatures = this._getFilteredFeatures(\n spatialFilter,\n filters,\n filterOwner\n );\n\n if (filteredFeatures.length === 0 && operation !== 'count') {\n return {value: null};\n }\n\n const targetOperation = aggregationFunctions[operation];\n return {\n value: targetOperation(filteredFeatures, column, joinOperation),\n };\n }\n\n override async getHistogram({\n operation = 'count',\n ticks,\n column,\n joinOperation,\n filters,\n filterOwner,\n spatialFilter,\n }: HistogramRequestOptions): Promise<HistogramResponse> {\n const filteredFeatures = this._getFilteredFeatures(\n spatialFilter,\n filters,\n filterOwner\n );\n\n assertColumn(this._features, column);\n\n if (!this._features.length) {\n return [];\n }\n\n return histogram({\n data: filteredFeatures,\n valuesColumns: normalizeColumns(column),\n joinOperation,\n ticks,\n operation,\n });\n }\n\n override async getCategories({\n column,\n operation = 'count',\n operationColumn,\n joinOperation,\n filters,\n filterOwner,\n spatialFilter,\n }: CategoryRequestOptions): Promise<CategoryResponse> {\n const filteredFeatures = this._getFilteredFeatures(\n spatialFilter,\n filters,\n filterOwner\n );\n\n if (!filteredFeatures.length) {\n return [];\n }\n\n assertColumn(this._features, column, operationColumn as string);\n\n const groups = groupValuesByColumn({\n data: filteredFeatures,\n valuesColumns: normalizeColumns(operationColumn || column),\n joinOperation,\n keysColumn: column,\n operation,\n });\n\n return groups || [];\n }\n\n override async getScatter({\n xAxisColumn,\n yAxisColumn,\n xAxisJoinOperation,\n yAxisJoinOperation,\n filters,\n filterOwner,\n spatialFilter,\n }: ScatterRequestOptions): Promise<ScatterResponse> {\n const filteredFeatures = this._getFilteredFeatures(\n spatialFilter,\n filters,\n filterOwner\n );\n\n if (!filteredFeatures.length) {\n return [];\n }\n\n assertColumn(this._features, xAxisColumn, yAxisColumn);\n\n return scatterPlot({\n data: filteredFeatures,\n xAxisColumns: normalizeColumns(xAxisColumn),\n xAxisJoinOperation,\n yAxisColumns: normalizeColumns(yAxisColumn),\n yAxisJoinOperation,\n });\n }\n\n override async getTable({\n columns,\n searchFilterColumn,\n searchFilterText,\n sortBy,\n sortDirection,\n sortByColumnType,\n offset = 0,\n limit = 10,\n filters,\n filterOwner,\n spatialFilter,\n }: TableRequestOptions): Promise<TableResponse> {\n // Filter.\n let filteredFeatures = this._getFilteredFeatures(\n spatialFilter,\n filters,\n filterOwner\n );\n\n if (!filteredFeatures.length) {\n return {rows: [], totalCount: 0};\n }\n\n // Search.\n if (searchFilterColumn && searchFilterText) {\n filteredFeatures = filteredFeatures.filter(\n (row) =>\n row[searchFilterColumn] &&\n String(row[searchFilterColumn] as unknown)\n .toLowerCase()\n .includes(String(searchFilterText).toLowerCase())\n );\n }\n\n // Sort.\n let rows = applySorting(filteredFeatures, {\n sortBy,\n sortByDirection: sortDirection,\n sortByColumnType,\n });\n const totalCount = rows.length;\n\n // Offset and limit.\n rows = rows.slice(\n Math.min(offset, totalCount),\n Math.min(offset + limit, totalCount)\n );\n\n // Select columns.\n rows = rows.map((srcRow: FeatureData) => {\n const dstRow: FeatureData = {};\n for (const column of columns) {\n dstRow[column] = srcRow[column];\n }\n return dstRow;\n });\n\n return {rows, totalCount} as TableResponse;\n }\n\n override async getTimeSeries({\n column,\n stepSize,\n operation,\n operationColumn,\n joinOperation,\n filters,\n filterOwner,\n spatialFilter,\n }: TimeSeriesRequestOptions): Promise<TimeSeriesResponse> {\n const filteredFeatures = this._getFilteredFeatures(\n spatialFilter,\n filters,\n filterOwner\n );\n\n if (!filteredFeatures.length) {\n return {rows: []};\n }\n\n assertColumn(this._features, column, operationColumn as string);\n\n const rows =\n groupValuesByDateColumn({\n data: filteredFeatures,\n valuesColumns: normalizeColumns(operationColumn || column),\n keysColumn: column,\n groupType: stepSize,\n operation,\n joinOperation,\n }) || [];\n\n return {rows};\n }\n\n override async getRange({\n column,\n filters,\n filterOwner,\n spatialFilter,\n }: RangeRequestOptions): Promise<RangeResponse> {\n assertColumn(this._features, column);\n\n const filteredFeatures = this._getFilteredFeatures(\n spatialFilter,\n filters,\n filterOwner\n );\n\n if (!this._features.length) {\n // TODO: Is this the only nullable response in the Widgets API? If so,\n // can we do something more consistent?\n return null;\n }\n\n return {\n min: aggregationFunctions.min(filteredFeatures, column),\n max: aggregationFunctions.max(filteredFeatures, column),\n };\n }\n\n /****************************************************************************\n * INTERNAL\n */\n\n private _getFilteredFeatures(\n spatialFilter?: SpatialFilter,\n filters?: Record<string, Filter>,\n filterOwner?: string\n ): FeatureData[] {\n assert(spatialFilter, 'spatialFilter required for tilesets');\n this._extractTileFeatures(spatialFilter);\n return applyFilters(\n this._features,\n getApplicableFilters(filterOwner, filters || this.props.filters),\n this.props.filtersLogicalOperator || 'and'\n );\n }\n}\n\nfunction assertColumn(\n features: FeatureData[],\n ...columnArgs: string[] | string[][]\n) {\n // TODO(cleanup): Can drop support for multiple column shapes here?\n\n // Due to the multiple column shape, we normalise it as an array with normalizeColumns\n const columns = Array.from(new Set(columnArgs.map(normalizeColumns).flat()));\n\n const featureKeys = Object.keys(features[0]);\n\n const invalidColumns = columns.filter(\n (column) => !featureKeys.includes(column)\n );\n\n if (invalidColumns.length) {\n throw new InvalidColumnError(\n `Missing column(s): ${invalidColumns.join(', ')}`\n );\n }\n}\n\nfunction normalizeColumns(columns: string | string[]): string[] {\n return Array.isArray(columns)\n ? columns\n : typeof columns === 'string'\n ? [columns]\n : [];\n}\n","// deck.gl\n// SPDX-License-Identifier: MIT\n// Copyright (c) vis.gl contributors\n\nimport {DEFAULT_AGGREGATION_RES_LEVEL_H3} from '../constants-internal.js';\nimport {\n WidgetQuerySource,\n WidgetQuerySourceResult,\n} from '../widget-sources/index.js';\nimport {baseSource} from './base-source.js';\nimport type {\n AggregationOptions,\n FilterOptions,\n QuerySourceOptions,\n SourceOptions,\n SpatialDataType,\n TilejsonResult,\n} from './types.js';\n\nexport type H3QuerySourceOptions = SourceOptions &\n QuerySourceOptions &\n AggregationOptions &\n FilterOptions;\n\ntype UrlParameters = {\n aggregationExp: string;\n aggregationResLevel?: string;\n spatialDataType: SpatialDataType;\n spatialDataColumn?: string;\n q: string;\n queryParameters?: Record<string, unknown> | unknown[];\n filters?: Record<string, unknown>;\n};\n\nexport type H3QuerySourceResponse = TilejsonResult & WidgetQuerySourceResult;\n\nexport const h3QuerySource = async function (\n options: H3QuerySourceOptions\n): Promise<H3QuerySourceResponse> {\n const {\n aggregationExp,\n aggregationResLevel = DEFAULT_AGGREGATION_RES_LEVEL_H3,\n sqlQuery,\n spatialDataColumn = 'h3',\n queryParameters,\n filters,\n } = options;\n\n const spatialDataType = 'h3';\n\n const urlParameters: UrlParameters = {\n aggregationExp,\n spatialDataColumn,\n spatialDataType,\n q: sqlQuery,\n };\n\n if (aggregationResLevel) {\n urlParameters.aggregationResLevel = String(aggregationResLevel);\n }\n if (queryParameters) {\n urlParameters.queryParameters = queryParameters;\n }\n if (filters) {\n urlParameters.filters = filters;\n }\n\n return baseSource<UrlParameters>('query', options, urlParameters).then(\n (result) => ({\n ...(result as TilejsonResult),\n widgetSource: new WidgetQuerySource({\n ...options,\n // NOTE: Parameters with default values above must be explicitly passed here.\n spatialDataColumn,\n spatialDataType,\n }),\n })\n );\n};\n","// deck.gl\n// SPDX-License-Identifier: MIT\n// Copyright (c) vis.gl contributors\n\nimport {DEFAULT_AGGREGATION_RES_LEVEL_H3} from '../constants-internal.js';\nimport {\n WidgetTableSource,\n WidgetTableSourceResult,\n} from '../widget-sources/index.js';\nimport {baseSource} from './base-source.js';\nimport type {\n AggregationOptions,\n FilterOptions,\n SourceOptions,\n SpatialDataType,\n TableSourceOptions,\n TilejsonResult,\n} from './types.js';\n\nexport type H3TableSourceOptions = SourceOptions &\n TableSourceOptions &\n AggregationOptions &\n FilterOptions;\n\ntype UrlParameters = {\n aggregationExp: string;\n aggregationResLevel?: string;\n spatialDataType: SpatialDataType;\n spatialDataColumn?: string;\n name: string;\n filters?: Record<string, unknown>;\n};\n\nexport type H3TableSourceResponse = TilejsonResult & WidgetTableSourceResult;\n\nexport const h3TableSource = async function (\n options: H3TableSourceOptions\n): Promise<H3TableSourceResponse> {\n const {\n aggregationExp,\n aggregationResLevel = DEFAULT_AGGREGATION_RES_LEVEL_H3,\n spatialDataColumn = 'h3',\n tableName,\n filters,\n } = options;\n\n const spatialDataType = 'h3';\n\n const urlParameters: UrlParameters = {\n aggregationExp,\n name: tableName,\n spatialDataColumn,\n spatialDataType,\n };\n\n if (aggregationResLevel) {\n urlParameters.aggregationResLevel = String(aggregationResLevel);\n }\n if (filters) {\n urlParameters.filters = filters;\n }\n\n return baseSource<UrlParameters>('table', options, urlParameters).then(\n (result) => ({\n ...(result as TilejsonResult),\n widgetSource: new WidgetTableSource({\n ...options,\n // NOTE: Parameters with default values above must be explicitly passed here.\n spatialDataColumn,\n spatialDataType,\n }),\n })\n );\n};\n","// deck.gl\n// SPDX-License-Identifier: MIT\n// Copyright (c) vis.gl contributors\n\nimport {baseSource} from './base-source.js';\nimport type {\n SourceOptions,\n TilejsonResult,\n TilesetSourceOptions,\n} from './types.js';\n\nexport type H3TilesetSourceOptions = SourceOptions & TilesetSourceOptions;\ntype UrlParameters = {name: string};\n\nexport type H3TilesetSourceResponse = TilejsonResult;\n\nexport const h3TilesetSource = async function (\n options: H3TilesetSourceOptions\n): Promise<H3TilesetSourceResponse> {\n const {tableName} = options;\n const urlParameters: UrlParameters = {name: tableName};\n\n return baseSource<UrlParameters>(\n 'tileset',\n options,\n urlParameters\n ) as Promise<H3TilesetSourceResponse>;\n};\n","// deck.gl\n// SPDX-License-Identifier: MIT\n// Copyright (c) vis.gl contributors\n\nimport {baseSource} from './base-source.js';\nimport type {\n FilterOptions,\n SourceOptions,\n TilejsonResult,\n TilesetSourceOptions,\n} from './types.js';\n\nexport type RasterSourceOptions = SourceOptions &\n TilesetSourceOptions &\n FilterOptions;\ntype UrlParameters = {\n name: string;\n filters?: Record<string, unknown>;\n};\n\nexport type RasterSourceResponse = TilejsonResult;\n\nexport const rasterSource = async function (\n options: RasterSourceOptions\n): Promise<RasterSourceResponse> {\n const {tableName, filters} = options;\n const urlParameters: UrlParameters = {name: tableName};\n if (filters) {\n urlParameters.filters = filters;\n }\n\n return baseSource<UrlParameters>(\n 'raster',\n options,\n urlParameters\n ) as Promise<RasterSourceResponse>;\n};\n","// deck.gl\n// SPDX-License-Identifier: MIT\n// Copyright (c) vis.gl contributors\n\nimport {DEFAULT_AGGREGATION_RES_LEVEL_QUADBIN} from '../constants-internal.js';\nimport {\n WidgetQuerySource,\n WidgetQuerySourceResult,\n} from '../widget-sources/index.js';\nimport {baseSource} from './base-source.js';\nimport type {\n AggregationOptions,\n FilterOptions,\n QuerySourceOptions,\n SourceOptions,\n SpatialDataType,\n TilejsonResult,\n} from './types.js';\n\nexport type QuadbinQuerySourceOptions = SourceOptions &\n QuerySourceOptions &\n AggregationOptions &\n FilterOptions;\n\ntype UrlParameters = {\n aggregationExp: string;\n aggregationResLevel?: string;\n spatialDataType: SpatialDataType;\n spatialDataColumn?: string;\n q: string;\n queryParameters?: Record<string, unknown> | unknown[];\n filters?: Record<string, unknown>;\n};\n\nexport type QuadbinQuerySourceResponse = TilejsonResult &\n WidgetQuerySourceResult;\n\nexport const quadbinQuerySource = async function (\n options: QuadbinQuerySourceOptions\n): Promise<QuadbinQuerySourceResponse> {\n const {\n aggregationExp,\n aggregationResLevel = DEFAULT_AGGREGATION_RES_LEVEL_QUADBIN,\n sqlQuery,\n spatialDataColumn = 'quadbin',\n queryParameters,\n filters,\n } = options;\n\n const spatialDataType = 'quadbin';\n\n const urlParameters: UrlParameters = {\n aggregationExp,\n q: sqlQuery,\n spatialDataColumn,\n spatialDataType,\n };\n\n if (aggregationResLevel) {\n urlParameters.aggregationResLevel = String(aggregationResLevel);\n }\n if (queryParameters) {\n urlParameters.queryParameters = queryParameters;\n }\n if (filters) {\n urlParameters.filters = filters;\n }\n\n return baseSource<UrlParameters>('query', options, urlParameters).then(\n (result) => ({\n ...(result as TilejsonResult),\n widgetSource: new WidgetQuerySource({\n ...options,\n // NOTE: Parameters with default values above must be explicitly passed here.\n spatialDataColumn,\n spatialDataType,\n }),\n })\n );\n};\n","// deck.gl\n// SPDX-License-Identifier: MIT\n// Copyright (c) vis.gl contributors\n\nimport {DEFAULT_AGGREGATION_RES_LEVEL_QUADBIN} from '../constants-internal.js';\nimport {\n WidgetTableSource,\n WidgetTableSourceResult,\n} from '../widget-sources/index.js';\nimport {baseSource} from './base-source.js';\nimport type {\n AggregationOptions,\n FilterOptions,\n SourceOptions,\n SpatialDataType,\n TableSourceOptions,\n TilejsonResult,\n} from './types.js';\n\nexport type QuadbinTableSourceOptions = SourceOptions &\n TableSourceOptions &\n AggregationOptions &\n FilterOptions;\n\ntype UrlParameters = {\n aggregationExp: string;\n aggregationResLevel?: string;\n spatialDataType: SpatialDataType;\n spatialDataColumn?: string;\n name: string;\n filters?: Record<string, unknown>;\n};\n\nexport type QuadbinTableSourceResponse = TilejsonResult &\n WidgetTableSourceResult;\n\nexport const quadbinTableSource = async function (\n options: QuadbinTableSourceOptions\n): Promise<QuadbinTableSourceResponse> {\n const {\n aggregationExp,\n aggregationResLevel = DEFAULT_AGGREGATION_RES_LEVEL_QUADBIN,\n spatialDataColumn = 'quadbin',\n tableName,\n filters,\n } = options;\n\n const spatialDataType = 'quadbin';\n\n const urlParameters: UrlParameters = {\n aggregationExp,\n name: tableName,\n spatialDataColumn,\n spatialDataType,\n };\n\n if (aggregationResLevel) {\n urlParameters.aggregationResLevel = String(aggregationResLevel);\n }\n if (filters) {\n urlParameters.filters = filters;\n }\n\n return baseSource<UrlParameters>('table', options, urlParameters).then(\n (result) => ({\n ...(result as TilejsonResult),\n widgetSource: new WidgetTableSource({\n ...options,\n // NOTE: Parameters with default values above must be explicitly passed here.\n spatialDataColumn,\n spatialDataType,\n }),\n })\n );\n};\n","// deck.gl\n// SPDX-License-Identifier: MIT\n// Copyright (c) vis.gl contributors\n\nimport {baseSource} from './base-source.js';\nimport type {\n SourceOptions,\n TilejsonResult,\n TilesetSourceOptions,\n} from './types.js';\n\nexport type QuadbinTilesetSourceOptions = SourceOptions & TilesetSourceOptions;\ntype UrlParameters = {name: string};\n\nexport type QuadbinTilesetSourceResponse = TilejsonResult;\n\nexport const quadbinTilesetSource = async function (\n options: QuadbinTilesetSourceOptions\n): Promise<QuadbinTilesetSourceResponse> {\n const {tableName} = options;\n const urlParameters: UrlParameters = {name: tableName};\n\n return baseSource<UrlParameters>(\n 'tileset',\n options,\n urlParameters\n ) as Promise<QuadbinTilesetSourceResponse>;\n};\n","// deck.gl\n// SPDX-License-Identifier: MIT\n// Copyright (c) vis.gl contributors\n\nimport {\n DEFAULT_GEO_COLUMN,\n DEFAULT_TILE_RESOLUTION,\n} from '../constants-internal.js';\nimport {\n WidgetQuerySource,\n WidgetQuerySourceResult,\n} from '../widget-sources/index.js';\nimport {baseSource} from './base-source.js';\nimport type {\n FilterOptions,\n SourceOptions,\n QuerySourceOptions,\n SpatialDataType,\n TilejsonResult,\n ColumnsOption,\n} from './types.js';\n\nexport type VectorQuerySourceOptions = SourceOptions &\n QuerySourceOptions &\n FilterOptions &\n ColumnsOption;\n\ntype UrlParameters = {\n columns?: string;\n filters?: Record<string, unknown>;\n spatialDataType: SpatialDataType;\n spatialDataColumn?: string;\n tileResolution?: string;\n q: string;\n queryParameters?: Record<string, unknown> | unknown[];\n aggregationExp?: string;\n};\n\nexport type VectorQuerySourceResponse = TilejsonResult &\n WidgetQuerySourceResult;\n\nexport const vectorQuerySource = async function (\n options: VectorQuerySourceOptions\n): Promise<VectorQuerySourceResponse> {\n const {\n columns,\n filters,\n spatialDataColumn = DEFAULT_GEO_COLUMN,\n sqlQuery,\n tileResolution = DEFAULT_TILE_RESOLUTION,\n queryParameters,\n aggregationExp,\n } = options;\n\n const spatialDataType = 'geo';\n\n const urlParameters: UrlParameters = {\n spatialDataColumn,\n spatialDataType,\n tileResolution: tileResolution.toString(),\n q: sqlQuery,\n };\n\n if (columns) {\n urlParameters.columns = columns.join(',');\n }\n if (filters) {\n urlParameters.filters = filters;\n }\n if (queryParameters) {\n urlParameters.queryParameters = queryParameters;\n }\n if (aggregationExp) {\n urlParameters.aggregationExp = aggregationExp;\n }\n\n return baseSource<UrlParameters>('query', options, urlParameters).then(\n (result) => ({\n ...(result as TilejsonResult),\n widgetSource: new WidgetQuerySource({\n ...options,\n // NOTE: Parameters with default values above must be explicitly passed here.\n spatialDataColumn,\n spatialDataType,\n tileResolution,\n }),\n })\n );\n};\n","// deck.gl\n// SPDX-License-Identifier: MIT\n// Copyright (c) vis.gl contributors\n\nimport {\n DEFAULT_GEO_COLUMN,\n DEFAULT_TILE_RESOLUTION,\n} from '../constants-internal.js';\nimport {\n WidgetTableSource,\n WidgetTableSourceResult,\n} from '../widget-sources/index.js';\nimport {baseSource} from './base-source.js';\nimport type {\n FilterOptions,\n ColumnsOption,\n SourceOptions,\n SpatialDataType,\n TableSourceOptions,\n TilejsonResult,\n} from './types.js';\n\nexport type VectorTableSourceOptions = SourceOptions &\n TableSourceOptions &\n FilterOptions &\n ColumnsOption;\n\ntype UrlParameters = {\n columns?: string;\n filters?: Record<string, unknown>;\n spatialDataType: SpatialDataType;\n spatialDataColumn?: string;\n tileResolution?: string;\n name: string;\n aggregationExp?: string;\n};\n\nexport type VectorTableSourceResponse = TilejsonResult &\n WidgetTableSourceResult;\n\nexport const vectorTableSource = async function (\n options: VectorTableSourceOptions\n): Promise<VectorTableSourceResponse> {\n const {\n columns,\n filters,\n spatialDataColumn = DEFAULT_GEO_COLUMN,\n tableName,\n tileResolution = DEFAULT_TILE_RESOLUTION,\n aggregationExp,\n } = options;\n\n const spatialDataType = 'geo';\n\n const urlParameters: UrlParameters = {\n name: tableName,\n spatialDataColumn,\n spatialDataType,\n tileResolution: tileResolution.toString(),\n };\n\n if (columns) {\n urlParameters.columns = columns.join(',');\n }\n if (filters) {\n urlParameters.filters = filters;\n }\n if (aggregationExp) {\n urlParameters.aggregationExp = aggregationExp;\n }\n\n return baseSource<UrlParameters>('table', options, urlParameters).then(\n (result) => ({\n ...(result as TilejsonResult),\n widgetSource: new WidgetTableSource({\n ...options,\n // NOTE: Parameters with default values above must be explicitly passed here.\n spatialDataColumn,\n spatialDataType,\n tileResolution,\n }),\n })\n );\n};\n","// deck.gl\n// SPDX-License-Identifier: MIT\n// Copyright (c) vis.gl contributors\n\nimport {baseSource} from './base-source.js';\nimport type {\n SourceOptions,\n TilesetSourceOptions,\n TilejsonResult,\n} from './types.js';\n\nexport type VectorTilesetSourceOptions = SourceOptions & TilesetSourceOptions;\ntype UrlParameters = {name: string};\n\nexport type VectorTilesetSourceResponse = TilejsonResult;\n\nexport const vectorTilesetSource = async function (\n options: VectorTilesetSourceOptions\n): Promise<VectorTilesetSourceResponse> {\n const {tableName} = options;\n const urlParameters: UrlParameters = {name: tableName};\n\n return baseSource<UrlParameters>(\n 'tileset',\n options,\n urlParameters\n ) as Promise<VectorTilesetSourceResponse>;\n};\n","// deck.gl\n// SPDX-License-Identifier: MIT\n// Copyright (c) vis.gl contributors\n\nimport {SOURCE_DEFAULTS} from '../sources/index.js';\nimport type {\n SourceOptions,\n QuerySourceOptions,\n QueryResult,\n} from '../sources/types.js';\nimport {buildQueryUrl} from './endpoints.js';\nimport {requestWithParameters} from './request-with-parameters.js';\nimport {APIErrorContext} from './carto-api-error.js';\nimport {getClient} from '../client.js';\n\nexport type QueryOptions = SourceOptions & QuerySourceOptions;\ntype UrlParameters = {q: string; queryParameters?: string};\n\nexport const query = async function (\n options: QueryOptions\n): Promise<QueryResult> {\n const {\n apiBaseUrl = SOURCE_DEFAULTS.apiBaseUrl,\n maxLengthURL = SOURCE_DEFAULTS.maxLengthURL,\n clientId = getClient(),\n localCache,\n connectionName,\n sqlQuery,\n queryParameters,\n } = options;\n const urlParameters: UrlParameters = {q: sqlQuery};\n\n if (queryParameters) {\n urlParameters.queryParameters = JSON.stringify(queryParameters);\n }\n\n const baseUrl = buildQueryUrl({apiBaseUrl, connectionName});\n const headers = {\n Authorization: `Bearer ${options.accessToken}`,\n ...options.headers,\n };\n const parameters = {client: clientId, ...urlParameters};\n\n const errorContext: APIErrorContext = {\n requestType: 'SQL',\n connection: options.connectionName,\n type: 'query',\n source: JSON.stringify(parameters, undefined, 2),\n };\n return await requestWithParameters<QueryResult>({\n baseUrl,\n parameters,\n headers,\n errorContext,\n maxLengthURL,\n localCache,\n });\n};\n","// Default tile display size in deck.gl, in viewport pixels. May differ\n// from size or resolution assumed when generating the tile data,\nconst DEFAULT_TILE_SIZE = 512;\n\n// Relative scale factor (0 = no biasing, 2 = a few hexagons cover view)\nconst BIAS = 2;\n\n/**\n * Resolution conversion function. Takes a WebMercatorViewport and returns\n * a H3 resolution such that the screen space size of the hexagons is\n * \"similar\" to the given tileSize on screen. Intended for use with deck.gl.\n * @internal\n * @privateRemarks Source: https://github.com/visgl/deck.gl/blob/master/modules/carto/src/layers/h3-tileset-2d.ts\n */\nexport function _getHexagonResolution(\n viewport: {zoom: number; latitude: number},\n tileSize: number\n): number {\n // Difference in given tile size compared to deck's internal 512px tile size,\n // expressed as an offset to the viewport zoom.\n const zoomOffset = Math.log2(tileSize / DEFAULT_TILE_SIZE);\n const hexagonScaleFactor = (2 / 3) * (viewport.zoom - zoomOffset);\n const latitudeScaleFactor = Math.log(\n 1 / Math.cos((Math.PI * viewport.latitude) / 180)\n );\n\n // Clip and bias\n return Math.max(\n 0,\n Math.floor(hexagonScaleFactor + latitudeScaleFactor - BIAS)\n );\n}\n"],"names":["client","getClient","setClient","c","FilterType","ApiVersion","DEFAULT_API_BASE_URL","TileFormat","SpatialIndex","Provider","makeIntervalComplete","intervals","map","val","undefined","Number","MIN_SAFE_INTEGER","MAX_SAFE_INTEGER","filterFunctions","IN","filterIn","BETWEEN","filterBetween","TIME","filterTime","CLOSED_OPEN","filterClosedOpen","STRING_SEARCH","filterStringSearch","filterValues","featureValue","includes","checkRange","range","lowerBound","upperBound","some","featureValueAsTimestamp","Date","getTime","isFinite","Error","params","normalizedFeatureValue","normalize","stringRegExp","useRegExp","filterValue","escapeRegExp","mustStart","mustEnd","regex","RegExp","join","caseSensitive","match","specialCharRegExp","normalizeRegExp","value","replace","data","normalizedData","String","keepSpecialCharacters","LOGICAL_OPERATOR_METHODS","and","or","passesFilter","columns","filters","feature","filtersLogicalOperator","method","column","columnFilters","columnFilterTypes","Object","keys","every","filter","filterFunction","values","_buildFeatureFilter","_ref","type","length","f","properties","featurePassesFilter","applyFilters","features","buildBinaryFeatureFilter","_ref2","featureIdIdx","binaryData","passesFilterUsingBinary","getValueFromNumericProps","_ref3","numericProps","getValueFromProperties","_ref4","propertyIdx","featureIds","GET_VALUE_BY_BINARY_PROP","getBinaryPropertyByFilterValues","flat","getFeatureValue","binaryProp","getFeatureValueFn","entries","_ref5","filterFn","geojsonFeatures","geojson","spatialFilter","uniqueIdProperty","uniqueIdx","Map","uniqueId","has","intersects","set","Array","from","DEFAULT_CONFIG","EPSILON","debug","precision","printTypes","printDegrees","printRowMajor","_cartographicRadians","globalThis","mathgl","config","isArray","ArrayBuffer","isView","DataView","lerp","a","b","t","ai","i","assert","condition","message","PI","Math","PI_4","DEGREES_TO_RADIANS","RADIANS_TO_DEGREES","TILE_SIZE","lngLatToWorld","lngLat","lng","lat","lambda2","phi2","x","y","log","tan","worldToLngLat","xy","atan","exp","TRANSFORM_FN","Point","transformPoint","MultiPoint","transformMultiPoint","LineString","transformLineString","MultiLineString","transformMultiLineString","Polygon","transformPolygon","MultiPolygon","transformMultiPolygon","transformToTileCoords","geometry","bbox","west","south","east","north","nw","projectFlat","se","projectedBbox","transformFn","coordinates","pointX","pointY","inverseLerp","getPoints","g","multiPoint","line","multiLineString","lineString","polygon","polygonRing","multiPolygon","xyz","transformTileCoordsToWGS84","FEATURE_GEOM_PROPERTY","tileFeaturesGeometries","tiles","tileFormat","options","tile","isVisible","bboxToGeom","bboxPolygon","tileIsFullyVisible","booleanWithin","spatialFilterFeature","clippedGeometryToIntersect","intersect","featureCollection","transformedGeometryToIntersect","MVT","createIndicesForPoints","points","calculateFeatures","geometryIntersection","lines","polygons","processTileFeatureProperties","startIndex","endIndex","storeGeometry","tileProps","getPropertiesFromTile","uniquePropertyValue","getUniquePropertyValue","positions","ringCoordinates","getRingCoordinatesFor","getFeatureByType","parseProperties","addIntersectedFeaturesInTile","indices","getIndices","pointIndices","pathIndices","primitivePolygonIndices","getFeatureId","featureId","fields","result","id","key","assign","getValueFromTileProps","artificialId","size","propertyName","j","push","subarray","addAllFeaturesInTile","lastFeatureId","PointIndicesArray","constructor","d2r","r2d","tileToBBOX","e","tile2lon","w","s","tile2lat","n","tileToGeoJSON","poly","z","pow","pointToTile","lon","pointToTileFraction","floor","getChildren","getParent","getSiblings","hasSiblings","siblings","hasTile","tilesEqual","tile1","tile2","tileToQuadkey","index","mask","toString","quadkeyToTile","quadkey","bboxToTile","bboxCoords","min","max","getBboxZoom","MAX_ZOOM","sin","z2","tilebelt","getTiles","geom","limits","coords","maxZoom","max_zoom","tileHash","toID","lineCover","polygonCover","min_zoom","len","appendHashTiles","mergeTiles","mergedTiles","parentTileHash","parentTiles","id2","id3","id4","parentTile","tileArray","zoom","intersections","ring","k","m","sort","compareTiles","prevX","prevY","start","stop","x0","y0","x1","y1","dx","dy","sx","sy","tMaxX","Infinity","abs","tMaxY","tdx","tdy","pop","hash","fromID","dim","B","S","tileToCell","BigInt","quadbin","getResolution","geometryToCells","resolution","tileFeaturesSpatialIndex","spatialDataColumn","spatialDataType","spatialIndex","getSpatialIndex","spatialIndexIDName","cells","getCellsCoverGeometry","cellsSet","Set","forEach","d","find","QUADBIN","quadbinGetResolution","H3","h3GetResolution","bboxWest","bboxEast","polygonToCells","bboxClip","concat","V3_MINOR_VERSION","DEFAULT_GEO_COLUMN","DEFAULT_MAX_LENGTH_URL","DEFAULT_TILE_RESOLUTION","DEFAULT_AGGREGATION_RES_LEVEL_H3","DEFAULT_AGGREGATION_RES_LEVEL_QUADBIN","tileFeatures","DEFAULT_FILTER_SIZE","getDataFilterExtensionProps","filtersWithoutTimeType","timeColumn","timeFilter","getFiltersByType","filterRange","getFilterRange","updateTriggers","getUpdateTriggers","getFilterValue","columnData","typeData","filterSize","fill","offsetBy","v","JSON","stringify","featureFilter","FILTER_TYPES","isFilterType","getApplicableFilters","owner","applicableFilters","isApplicable","normalizeObjectKeys","el","reduce","acc","toLowerCase","InvalidColumnError","NAME","name","is","error","isEmptyObject","object","_","isObject","isPureObject","addFilter","removeFilter","clearFilters","hasFilter","getFilter","createViewportSpatialFilter","viewport","_isGlobalViewport","createPolygonSpatialFilter","_normalizeGeometry","minx","miny","maxx","maxy","WORLD","worldClip","_clean","geometryTxWest","_tx","geometryTxEast","worldWestClip","collection","merged","union","worldEastClip","_cleanPolygonCoords","cc","_cleanMultiPolygonCoords","ccc","_isPolygon","_isMultiPolygon","_txContourCoords","distance","_txPolygonCoords","_txMultiPolygonCoords","cccc","getType","joinPath","slice","call","arguments","part","endsWith","buildV3Path","apiBaseUrl","version","endpoint","buildPublicMapUrl","cartoMapId","buildStatsUrl","attribute","connectionName","source","buildSourceUrl","buildQueryUrl","CartoAPIError","errorContext","response","responseJson","responseString","status","requestType","formatErrorKey","toUpperCase","requestWithParameters","baseUrl","parameters","headers","customHeaders","maxLengthURL","localCache","deck","VERSION","deckglVersion","excludeURLParameters","createCacheKey","cache","REQUEST_CACHE","canReadCache","canStoreInCache","getCacheSettings","Promise","resolve","get","url","createURLWithParameters","DEFAULT_HEADERS","fetchPromise","fetch","body","jsonPromise","then","_response","json","ok","catch","delete","reject","Accept","DEFAULT_REQUEST_CACHE","cacheControl","parameterEntries","headerEntries","baseUrlString","URL","searchParams","param","baseSource","urlParameters","accessToken","optionalOptions","mergedOptions","SOURCE_DEFAULTS","clientId","format","Authorization","connection","mapInstantiation","_exit","_temp2","_result","dataUrl","parseInt","_temp","boundaryQuerySource","tilesetTableName","propertiesSqlQuery","queryParameters","boundaryTableSource","propertiesTableName","WidgetSource","props","defaultProps","_getModelSource","filterOwner","apiVersion","dataResolution","V3","WidgetBaseSource","makeCall","opts","dealWithApiError","isPost","_catch","signal","otherOptions","_fetch","_response$json","column_name","hint","AVAILABLE_MODELS","REQUEST_GET_MAX_URL_LENGTH","executeModel","model","spatialFiltersMode","queryParams","spatialFilters","urlWithSearchParams","objectToURLSearchParams","isGet","URLSearchParams","append","WidgetRemoteSource","getCategories","_this","operation","operationColumn","getModelSource","res","rows","getFeatures","_this2","abortController","dataType","limit","tileResolution","getFormula","_this3","operationExp","getHistogram","_this4","ticks","tick","getRange","_this5","getScatter","_this6","xAxisColumn","xAxisJoinOperation","yAxisColumn","yAxisJoinOperation","HARD_LIMIT","getTable","_this7","sortBy","sortDirection","offset","ROWS","totalCount","metadata","total","METADATA","TOTAL","getTimeSeries","_this8","joinOperation","stepSize","stepMultiplier","splitByCategory","splitByCategoryLimit","splitByCategoryValues","categories","WidgetQuerySource","sqlQuery","WidgetTableSource","tableName","aggregationFunctions","count","applyAggregationFunction","sum","avg","aggregate","isPotentiallyValidNumber","aggregationFn","trim","aggFn","normalizedKeys","normalizeKeys","elements","filterFalsyElements","thenBy_module","identity","ignoreCase","makeCompareFunction","opt","direction","prop","v1","uf","preprocess","cmp","v2","descTokens","desc","tb","func","firstBy","thenBy","applySorting","sortByDirection","sortByColumnType","isValidSortBy","sortFn","createSortFn","firstSortOption","othersSortOptions","normalizeSortByOptions","sortOptions","numberFormat","sortByEl","groupValuesByColumn","valuesColumns","keysColumn","groups","accumulator","item","group","aggregatedValue","isValid","targetOperation","getUTCMonday","date","dateCp","day","getUTCDay","diff","getUTCDate","setUTCDate","UTC","getUTCFullYear","getUTCMonth","GROUP_KEY_FN_MAPPING","year","month","week","hour","getUTCHours","minute","getUTCMinutes","second","getUTCSeconds","groupValuesByDateColumn","groupType","groupKeyFn","formattedValue","groupKey","isNaN","groupedValues","histogram","binsContainer","arr","bin","end","binContainer","transformedBins","scatterPlot","xAxisColumns","yAxisColumns","xValue","xIsValid","yValue","yIsValid","WidgetTilesetSource","_tiles","_features","_tileFeatureExtractOptions","_tileFeatureExtractPreviousInputs","loadTiles","setTileFeatureExtractOptions","_extractTileFeatures","prevInputs","booleanEqual","loadGeoJSON","assertColumn","filteredFeatures","_getFilteredFeatures","normalizeColumns","_ref6","searchFilterColumn","searchFilterText","row","srcRow","dstRow","_ref7","_ref8","featureKeys","invalidColumns","h3QuerySource","aggregationExp","aggregationResLevel","q","widgetSource","h3TableSource","h3TilesetSource","rasterSource","quadbinQuerySource","quadbinTableSource","quadbinTilesetSource","vectorQuerySource","vectorTableSource","vectorTilesetSource","query","DEFAULT_TILE_SIZE","BIAS","_getHexagonResolution","tileSize","zoomOffset","log2","hexagonScaleFactor","latitudeScaleFactor","cos","latitude"],"mappings":"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","x_google_ignoreList":[6,7,8,12,13,14,35]}
1
+ {"version":3,"file":"api-client.cjs","sources":["../src/client.ts","../src/constants.ts","../src/utils/makeIntervalComplete.ts","../src/filters/FilterTypes.ts","../src/filters/Filter.ts","../src/filters/geosjonFeatures.ts","../node_modules/@math.gl/core/dist/lib/common.js","../node_modules/@math.gl/web-mercator/dist/assert.js","../node_modules/@math.gl/web-mercator/dist/web-mercator-utils.js","../src/utils/transformToTileCoords.ts","../src/utils/transformTileCoordsToWGS84.ts","../src/filters/tileFeaturesGeometries.ts","../node_modules/tilebelt/index.js","../node_modules/@mapbox/tile-cover/index.js","../node_modules/quadbin/dist/index.esm.js","../src/filters/tileFeaturesSpatialIndex.ts","../src/constants-internal.ts","../src/filters/tileFeatures.ts","../src/deck/get-data-filter-extension-props.ts","../src/api/carto-api-error.ts","../src/api/endpoints.ts","../src/utils.ts","../src/api/request-with-parameters.ts","../src/sources/base-source.ts","../src/sources/boundary-query-source.ts","../src/sources/boundary-table-source.ts","../src/widget-sources/widget-source.ts","../src/models/common.ts","../src/models/model.ts","../src/widget-sources/widget-remote-source.ts","../src/widget-sources/widget-query-source.ts","../src/widget-sources/widget-table-source.ts","../src/operations/aggregation.ts","../node_modules/thenby/thenBy.module.js","../src/operations/applySorting.ts","../src/operations/groupBy.ts","../src/utils/dateUtils.ts","../src/operations/groupByDate.ts","../src/operations/histogram.ts","../src/operations/scatterPlot.ts","../src/widget-sources/widget-tileset-source.ts","../src/sources/h3-query-source.ts","../src/sources/h3-table-source.ts","../src/sources/h3-tileset-source.ts","../src/sources/raster-source.ts","../src/sources/quadbin-query-source.ts","../src/sources/quadbin-table-source.ts","../src/sources/quadbin-tileset-source.ts","../src/sources/vector-query-source.ts","../src/sources/vector-table-source.ts","../src/sources/vector-tileset-source.ts","../src/api/query.ts","../src/fetch-map/basemap-styles.ts","../node_modules/d3-array/src/ascending.js","../node_modules/d3-array/src/number.js","../node_modules/d3-array/src/variance.js","../node_modules/d3-array/src/deviation.js","../node_modules/d3-array/src/extent.js","../node_modules/internmap/src/index.js","../node_modules/d3-array/src/identity.js","../node_modules/d3-array/src/group.js","../node_modules/d3-array/src/permute.js","../node_modules/d3-array/src/sort.js","../node_modules/d3-array/src/groupSort.js","../node_modules/d3-array/src/max.js","../node_modules/d3-array/src/min.js","../node_modules/d3-array/src/quickselect.js","../node_modules/d3-array/src/quantile.js","../node_modules/d3-array/src/median.js","../node_modules/d3-color/src/define.js","../node_modules/d3-color/src/color.js","../node_modules/moment/moment.js","../node_modules/moment-timezone/moment-timezone.js","../node_modules/moment-timezone/index.js","../src/fetch-map/utils.ts","../src/fetch-map/layer-map.ts","../src/fetch-map/parse-map.ts","../src/fetch-map/basemap.ts","../src/fetch-map/source.ts","../src/fetch-map/fetch-map.ts","../src/filters.ts","../src/geo.ts","../src/spatial-index.ts"],"sourcesContent":["/**\n * @internal\n * @privateRemarks Source: @carto/react-core, @carto/constants, @deck.gl/carto\n */\nlet client = 'deck-gl-carto';\n\n/**\n * Returns current client ID, used to categorize API requests. For internal use only.\n *\n * @internal\n * @privateRemarks Source: @carto/react-core\n */\nexport function getClient() {\n return client;\n}\n\n/**\n * Sets current client ID, used to categorize API requests. For internal use only.\n *\n * @internal\n * @privateRemarks Source: @carto/react-core\n */\nexport function setClient(c: string) {\n client = c;\n}\n","/**\n * Defines a comparator used when matching a column's values against given filter values.\n *\n * Example:\n *\n * ```javascript\n * import { FilterType } from '@carto/api-client';\n * const filters = {\n * column_name: { [FilterType.IN]: { values: ['a', 'b', 'c'] } }\n * };\n * ```\n *\n * @privateRemarks Source: @carto/react-api, @deck.gl/carto\n */\nexport enum FilterType {\n IN = 'in',\n /** [a, b] both are included. */\n BETWEEN = 'between',\n /** [a, b) a is included, b is not. */\n CLOSED_OPEN = 'closed_open',\n TIME = 'time',\n STRING_SEARCH = 'stringSearch',\n}\n\n/** @privateRemarks Source: @carto/constants */\nexport enum ApiVersion {\n V1 = 'v1',\n V2 = 'v2',\n V3 = 'v3',\n}\n\n/** @privateRemarks Source: @carto/constants, @deck.gl/carto */\nexport const DEFAULT_API_BASE_URL = 'https://gcp-us-east1.api.carto.com';\n\n/** @privateRemarks Source: @carto/react-core */\nexport enum TileFormat {\n MVT = 'mvt',\n JSON = 'json',\n GEOJSON = 'geojson',\n BINARY = 'binary',\n}\n\n/** @privateRemarks Source: @carto/react-core */\nexport enum SpatialIndex {\n H3 = 'h3',\n QUADBIN = 'quadbin',\n}\n\n/** @privateRemarks Source: @carto/react-core */\nexport enum Provider {\n BIGQUERY = 'bigquery',\n REDSHIFT = 'redshift',\n POSTGRES = 'postgres',\n SNOWFLAKE = 'snowflake',\n DATABRICKS = 'databricks',\n DATABRICKS_REST = 'databricksRest',\n}\n\nexport const SpatialIndexColumn = Object.freeze({\n [SpatialIndex.H3]: ['h3', 'hex', 'h3id', 'hex_id', 'h3hex'],\n [SpatialIndex.QUADBIN]: ['quadbin'],\n});\n","import {FilterInterval, FilterIntervalComplete} from '../types.js';\n\nexport function makeIntervalComplete(\n intervals: FilterInterval[]\n): FilterIntervalComplete[] {\n return intervals.map((val) => {\n if (val[0] === undefined || val[0] === null) {\n return [Number.MIN_SAFE_INTEGER, val[1]];\n }\n\n if (val[1] === undefined || val[1] === null) {\n return [val[0], Number.MAX_SAFE_INTEGER];\n }\n\n return val;\n }) as FilterIntervalComplete[];\n}\n","import {FilterType} from '../constants.js';\nimport {FilterInterval, StringSearchOptions} from '../types.js';\nimport {makeIntervalComplete} from '../utils/makeIntervalComplete.js';\n\nexport type FilterFunction = (\n filterValues: unknown[],\n featureValue: unknown,\n params?: Record<string, unknown>\n) => boolean;\n\nexport const filterFunctions: Record<FilterType, FilterFunction> = {\n [FilterType.IN]: filterIn,\n [FilterType.BETWEEN]: filterBetween,\n [FilterType.TIME]: filterTime,\n [FilterType.CLOSED_OPEN]: filterClosedOpen,\n [FilterType.STRING_SEARCH]: filterStringSearch,\n};\n\nfunction filterIn(filterValues: unknown[], featureValue: unknown): boolean {\n return filterValues.includes(featureValue);\n}\n\n// FilterTypes.BETWEEN\nfunction filterBetween(\n filterValues: unknown[],\n featureValue: unknown\n): boolean {\n const checkRange = (range: [number, number]) => {\n const [lowerBound, upperBound] = range;\n return (\n (featureValue as number) >= lowerBound &&\n (featureValue as number) <= upperBound\n );\n };\n\n return makeIntervalComplete(filterValues as FilterInterval[]).some(\n checkRange\n );\n}\n\nfunction filterTime(filterValues: unknown[], featureValue: unknown) {\n const featureValueAsTimestamp = new Date(featureValue as number).getTime();\n if (isFinite(featureValueAsTimestamp)) {\n return filterBetween(filterValues, featureValueAsTimestamp);\n } else {\n throw new Error(`Column used to filter by time isn't well formatted.`);\n }\n}\n\n// FilterTypes.CLOSED_OPEN\nfunction filterClosedOpen(\n filterValues: unknown[],\n featureValue: unknown\n): boolean {\n const checkRange = (range: [number, number]) => {\n const [lowerBound, upperBound] = range;\n return (\n (featureValue as number) >= lowerBound &&\n (featureValue as number) < upperBound\n );\n };\n\n return makeIntervalComplete(filterValues as [number, number][]).some(\n checkRange\n );\n}\n\n// FilterTypes.STRING_SEARCH\nfunction filterStringSearch(\n filterValues: unknown[],\n featureValue: unknown,\n params: StringSearchOptions = {}\n): boolean {\n const normalizedFeatureValue = normalize(featureValue, params);\n const stringRegExp = params.useRegExp\n ? filterValues\n : filterValues.map((filterValue) => {\n let stringRegExp = escapeRegExp(normalize(filterValue, params));\n\n if (params.mustStart) stringRegExp = `^${stringRegExp}`;\n if (params.mustEnd) stringRegExp = `${stringRegExp}$`;\n\n return stringRegExp;\n });\n\n const regex = new RegExp(\n stringRegExp.join('|'),\n params.caseSensitive ? 'g' : 'gi'\n );\n return !!normalizedFeatureValue.match(regex);\n}\n\n// Aux\nconst specialCharRegExp = /[.*+?^${}()|[\\]\\\\]/g;\nconst normalizeRegExp = /\\p{Diacritic}/gu;\n\nfunction escapeRegExp(value: string) {\n return value.replace(specialCharRegExp, '\\\\$&');\n}\n\nfunction normalize(data: unknown, params: StringSearchOptions) {\n let normalizedData = String(data);\n if (!params.keepSpecialCharacters)\n normalizedData = normalizedData\n .normalize('NFD')\n .replace(normalizeRegExp, '');\n\n return normalizedData;\n}\n","import {filterFunctions} from './FilterTypes.js';\nimport {Filter, FilterLogicalOperator, Filters} from '../types.js';\nimport {Feature} from 'geojson';\nimport {FilterType} from '../constants.js';\nimport {FeatureData} from '../types-internal.js';\nimport {BinaryFeature} from '@loaders.gl/schema';\n\nconst LOGICAL_OPERATOR_METHODS: Record<\n FilterLogicalOperator,\n 'every' | 'some'\n> = {\n and: 'every',\n or: 'some',\n};\n\nfunction passesFilter(\n columns: string[],\n filters: Filters,\n feature: FeatureData,\n filtersLogicalOperator: FilterLogicalOperator\n): boolean {\n const method = LOGICAL_OPERATOR_METHODS[filtersLogicalOperator];\n return columns[method]((column) => {\n const columnFilters = filters[column];\n const columnFilterTypes = Object.keys(columnFilters) as FilterType[];\n\n if (!feature || feature[column] === null || feature[column] === undefined) {\n return false;\n }\n\n return columnFilterTypes.every((filter) => {\n const filterFunction = filterFunctions[filter];\n\n if (!filterFunction) {\n throw new Error(`\"${filter}\" filter is not implemented.`);\n }\n\n return filterFunction(\n columnFilters[filter]!.values,\n feature[column],\n (columnFilters[filter] as Filter[FilterType.STRING_SEARCH])!.params\n );\n });\n });\n}\n\n/**\n * @internal\n * @privateRemarks Exported for use in @deck.gl/carto's getDataFilterExtensionProps.\n */\nexport function _buildFeatureFilter({\n filters = {},\n type = 'boolean',\n filtersLogicalOperator = 'and',\n}: {\n filters?: Filters;\n type?: 'number' | 'boolean';\n filtersLogicalOperator?: FilterLogicalOperator;\n}) {\n const columns = Object.keys(filters);\n\n if (!columns.length) {\n return () => (type === 'number' ? 1 : true);\n }\n\n return (feature: Feature | FeatureData) => {\n const f = feature.properties || feature;\n const featurePassesFilter = passesFilter(\n columns,\n filters,\n f as FeatureData,\n filtersLogicalOperator\n );\n\n return type === 'number'\n ? Number(featurePassesFilter)\n : featurePassesFilter;\n };\n}\n\n/**\n * Apply certain filters to a collection of features.\n * @internal\n */\nexport function applyFilters(\n features: FeatureData[],\n filters: Filters,\n filtersLogicalOperator: FilterLogicalOperator\n) {\n return Object.keys(filters).length\n ? features.filter(_buildFeatureFilter({filters, filtersLogicalOperator}))\n : features;\n}\n\n/**\n * Binary.\n * @internal\n */\nexport function buildBinaryFeatureFilter({filters = {}}: {filters: Filters}) {\n const columns = Object.keys(filters);\n\n if (!columns.length) {\n return () => 1;\n }\n\n return (featureIdIdx: number, binaryData: BinaryFeature) =>\n passesFilterUsingBinary(columns, filters, featureIdIdx, binaryData);\n}\n\nfunction getValueFromNumericProps(\n featureIdIdx: number,\n binaryData: BinaryFeature,\n {column}: {column: string}\n) {\n return binaryData.numericProps?.[column]?.value[featureIdIdx];\n}\n\nfunction getValueFromProperties(\n featureIdIdx: number,\n binaryData: BinaryFeature,\n {column}: {column: string}\n) {\n const propertyIdx = binaryData.featureIds.value[featureIdIdx];\n return (binaryData.properties[propertyIdx] as Record<string, unknown>)?.[\n column\n ];\n}\n\nconst GET_VALUE_BY_BINARY_PROP = {\n properties: getValueFromProperties,\n numericProps: getValueFromNumericProps,\n};\n\nfunction getBinaryPropertyByFilterValues(filterValues: unknown[]) {\n return typeof filterValues.flat()[0] === 'string'\n ? 'properties'\n : 'numericProps';\n}\n\nfunction getFeatureValue(\n featureIdIdx: number,\n binaryData: any,\n filter: {type: FilterType; column: string; values: unknown[]}\n) {\n const {column, values} = filter;\n const binaryProp = getBinaryPropertyByFilterValues(values);\n const getFeatureValueFn = GET_VALUE_BY_BINARY_PROP[binaryProp];\n return getFeatureValueFn(featureIdIdx, binaryData, {column});\n}\n\nfunction passesFilterUsingBinary(\n columns: string[],\n filters: Filters,\n featureIdIdx: number,\n binaryData: BinaryFeature\n) {\n return columns.every((column) => {\n const columnFilters = filters[column];\n\n return Object.entries(columnFilters).every(([type, {values}]) => {\n const filterFn = filterFunctions[type as FilterType];\n if (!filterFn) {\n throw new Error(`\"${type}\" filter is not implemented.`);\n }\n\n if (!values) return 0;\n\n const featureValue = getFeatureValue(featureIdIdx, binaryData, {\n type: type as FilterType,\n column,\n values,\n });\n\n if (featureValue === undefined || featureValue === null) return 0;\n\n return filterFn(values, featureValue);\n });\n });\n}\n","import intersects from '@turf/boolean-intersects';\nimport {FeatureCollection} from 'geojson';\nimport {FeatureData} from '../types-internal.js';\nimport {SpatialFilter} from '../types.js';\n\nexport function geojsonFeatures({\n geojson,\n spatialFilter,\n uniqueIdProperty,\n}: {\n geojson: FeatureCollection;\n spatialFilter: SpatialFilter;\n uniqueIdProperty?: string;\n}): FeatureData[] {\n let uniqueIdx = 0;\n const map = new Map();\n\n if (!spatialFilter) {\n return [];\n }\n\n for (const feature of geojson.features) {\n const uniqueId = uniqueIdProperty\n ? feature.properties![uniqueIdProperty]\n : ++uniqueIdx;\n if (!map.has(uniqueId) && intersects(spatialFilter, feature)) {\n map.set(uniqueId, feature.properties);\n }\n }\n\n return Array.from(map.values());\n}\n","// math.gl\n// SPDX-License-Identifier: MIT\n// Copyright (c) vis.gl contributors\nconst RADIANS_TO_DEGREES = (1 / Math.PI) * 180;\nconst DEGREES_TO_RADIANS = (1 / 180) * Math.PI;\nconst DEFAULT_CONFIG = {\n EPSILON: 1e-12,\n debug: false,\n precision: 4,\n printTypes: false,\n printDegrees: false,\n printRowMajor: true,\n _cartographicRadians: false\n};\n// Configuration is truly global as of v3.6 to ensure single config even if multiple copies of math.gl\n// Multiple copies of config can be quite tricky to debug...\nglobalThis.mathgl = globalThis.mathgl || { config: { ...DEFAULT_CONFIG } };\nexport const config = globalThis.mathgl.config;\nexport function configure(options) {\n // Only copy existing keys\n Object.assign(config, options);\n return config;\n}\n/**\n * Formats a value into a string\n * @param value\n * @param param1\n * @returns\n */\nexport function formatValue(value, { precision = config.precision } = {}) {\n value = round(value);\n // get rid of trailing zeros\n return `${parseFloat(value.toPrecision(precision))}`;\n}\n/**\n * Check if value is an \"array\"\n * Returns `true` if value is either an array or a typed array\n * Note: returns `false` for `ArrayBuffer` and `DataView` instances\n * @note isTypedArray and isNumericArray are often more useful in TypeScript\n */\nexport function isArray(value) {\n return Array.isArray(value) || (ArrayBuffer.isView(value) && !(value instanceof DataView));\n}\nexport function clone(array) {\n return 'clone' in array ? array.clone() : array.slice();\n}\nexport function toRadians(degrees) {\n return radians(degrees);\n}\nexport function toDegrees(radians) {\n return degrees(radians);\n}\nexport function radians(degrees, result) {\n return map(degrees, (degrees) => degrees * DEGREES_TO_RADIANS, result);\n}\nexport function degrees(radians, result) {\n return map(radians, (radians) => radians * RADIANS_TO_DEGREES, result);\n}\n/**\n * \"GLSL equivalent\" of `Math.sin`: Works on single values and vectors\n * @deprecated\n */\nexport function sin(radians, result) {\n return map(radians, (angle) => Math.sin(angle), result);\n}\n/**\n * \"GLSL equivalent\" of `Math.cos`: Works on single values and vectors\n * @deprecated\n */\nexport function cos(radians, result) {\n return map(radians, (angle) => Math.cos(angle), result);\n}\n/**\n * \"GLSL equivalent\" of `Math.tan`: Works on single values and vectors\n * @deprecated\n */\nexport function tan(radians, result) {\n return map(radians, (angle) => Math.tan(angle), result);\n}\n/**\n * \"GLSL equivalent\" of `Math.asin`: Works on single values and vectors\n * @deprecated\n */\nexport function asin(radians, result) {\n return map(radians, (angle) => Math.asin(angle), result);\n}\n/**\n * \"GLSL equivalent\" of `Math.acos`: Works on single values and vectors\n * @deprecated\n */\nexport function acos(radians, result) {\n return map(radians, (angle) => Math.acos(angle), result);\n}\n/**\n * \"GLSL equivalent\" of `Math.atan`: Works on single values and vectors\n * @deprecated\n */\nexport function atan(radians, result) {\n return map(radians, (angle) => Math.atan(angle), result);\n}\nexport function clamp(value, min, max) {\n return map(value, (value) => Math.max(min, Math.min(max, value)));\n}\nexport function lerp(a, b, t) {\n if (isArray(a)) {\n return a.map((ai, i) => lerp(ai, b[i], t));\n }\n return t * b + (1 - t) * a;\n}\n/* eslint-disable */\n/**\n * Compares any two math objects, using `equals` method if available.\n * @param a\n * @param b\n * @param epsilon\n * @returns\n */\nexport function equals(a, b, epsilon) {\n const oldEpsilon = config.EPSILON;\n if (epsilon) {\n config.EPSILON = epsilon;\n }\n try {\n if (a === b) {\n return true;\n }\n if (isArray(a) && isArray(b)) {\n if (a.length !== b.length) {\n return false;\n }\n for (let i = 0; i < a.length; ++i) {\n // eslint-disable-next-line max-depth\n if (!equals(a[i], b[i])) {\n return false;\n }\n }\n return true;\n }\n if (a && a.equals) {\n return a.equals(b);\n }\n if (b && b.equals) {\n return b.equals(a);\n }\n if (typeof a === 'number' && typeof b === 'number') {\n return Math.abs(a - b) <= config.EPSILON * Math.max(1, Math.abs(a), Math.abs(b));\n }\n return false;\n }\n finally {\n config.EPSILON = oldEpsilon;\n }\n}\nexport function exactEquals(a, b) {\n if (a === b) {\n return true;\n }\n if (a && typeof a === 'object' && b && typeof b === 'object') {\n if (a.constructor !== b.constructor) {\n return false;\n }\n if (a.exactEquals) {\n return a.exactEquals(b);\n }\n }\n if (isArray(a) && isArray(b)) {\n if (a.length !== b.length) {\n return false;\n }\n for (let i = 0; i < a.length; ++i) {\n if (!exactEquals(a[i], b[i])) {\n return false;\n }\n }\n return true;\n }\n return false;\n}\n/* eslint-enable */\nexport function withEpsilon(epsilon, func) {\n const oldPrecision = config.EPSILON;\n config.EPSILON = epsilon;\n let value;\n try {\n value = func();\n }\n finally {\n config.EPSILON = oldPrecision;\n }\n return value;\n}\n// HELPERS\nfunction round(value) {\n return Math.round(value / config.EPSILON) * config.EPSILON;\n}\n// If the array has a clone function, calls it, otherwise returns a copy\nfunction duplicateArray(array) {\n // @ts-expect-error We check for math.gl class methods\n // eslint-disable-next-line @typescript-eslint/no-unsafe-call\n return array.clone ? array.clone() : new Array(array.length);\n}\n// If the argument value is an array, applies the func element wise,\n// otherwise applies func to the argument value\nfunction map(value, func, result) {\n if (isArray(value)) {\n const array = value;\n result = result || duplicateArray(array);\n for (let i = 0; i < result.length && i < array.length; ++i) {\n const val = typeof value === 'number' ? value : value[i];\n result[i] = func(val, i, result);\n }\n return result;\n }\n return func(value);\n}\n//# sourceMappingURL=common.js.map","// Replacement for the external assert method to reduce bundle size\n// Note: We don't use the second \"message\" argument in calling code,\n// so no need to support it here\nexport function assert(condition, message) {\n if (!condition) {\n throw new Error(message || '@math.gl/web-mercator: assertion failed.');\n }\n}\n//# sourceMappingURL=assert.js.map","// TODO - THE UTILITIES IN THIS FILE SHOULD BE IMPORTED FROM WEB-MERCATOR-VIEWPORT MODULE\nimport { createMat4, transformVector, clamp, log2 } from \"./math-utils.js\";\nimport { mat4, vec2, vec3 } from '@math.gl/core';\nimport { assert } from \"./assert.js\";\n// CONSTANTS\nconst PI = Math.PI;\nconst PI_4 = PI / 4;\nconst DEGREES_TO_RADIANS = PI / 180;\nconst RADIANS_TO_DEGREES = 180 / PI;\nconst TILE_SIZE = 512;\n// Average circumference (40075 km equatorial, 40007 km meridional)\nconst EARTH_CIRCUMFERENCE = 40.03e6;\n// Latitude that makes a square world, 2 * atan(E ** PI) - PI / 2\nexport const MAX_LATITUDE = 85.051129;\n// Mapbox default altitude\nexport const DEFAULT_ALTITUDE = 1.5;\n/** Logarithimic zoom to linear scale **/\nexport function zoomToScale(zoom) {\n return Math.pow(2, zoom);\n}\n/** Linear scale to logarithimic zoom **/\nexport function scaleToZoom(scale) {\n return log2(scale);\n}\n/**\n * Project [lng,lat] on sphere onto [x,y] on 512*512 Mercator Zoom 0 tile.\n * Performs the nonlinear part of the web mercator projection.\n * Remaining projection is done with 4x4 matrices which also handles\n * perspective.\n *\n * @param lngLat - [lng, lat] coordinates\n * Specifies a point on the sphere to project onto the map.\n * @return [x,y] coordinates.\n */\nexport function lngLatToWorld(lngLat) {\n const [lng, lat] = lngLat;\n assert(Number.isFinite(lng));\n assert(Number.isFinite(lat) && lat >= -90 && lat <= 90, 'invalid latitude');\n const lambda2 = lng * DEGREES_TO_RADIANS;\n const phi2 = lat * DEGREES_TO_RADIANS;\n const x = (TILE_SIZE * (lambda2 + PI)) / (2 * PI);\n const y = (TILE_SIZE * (PI + Math.log(Math.tan(PI_4 + phi2 * 0.5)))) / (2 * PI);\n return [x, y];\n}\n/**\n * Unproject world point [x,y] on map onto {lat, lon} on sphere\n *\n * @param xy - array with [x,y] members\n * representing point on projected map plane\n * @return - array with [x,y] of point on sphere.\n * Has toArray method if you need a GeoJSON Array.\n * Per cartographic tradition, lat and lon are specified as degrees.\n */\nexport function worldToLngLat(xy) {\n const [x, y] = xy;\n const lambda2 = (x / TILE_SIZE) * (2 * PI) - PI;\n const phi2 = 2 * (Math.atan(Math.exp((y / TILE_SIZE) * (2 * PI) - PI)) - PI_4);\n return [lambda2 * RADIANS_TO_DEGREES, phi2 * RADIANS_TO_DEGREES];\n}\n/**\n * Returns the zoom level that gives a 1 meter pixel at a certain latitude\n * 1 = C*cos(y)/2^z/TILE_SIZE = C*cos(y)/2^(z+9)\n */\nexport function getMeterZoom(options) {\n const { latitude } = options;\n assert(Number.isFinite(latitude));\n const latCosine = Math.cos(latitude * DEGREES_TO_RADIANS);\n return scaleToZoom(EARTH_CIRCUMFERENCE * latCosine) - 9;\n}\n/**\n * Calculate the conversion from meter to common units at a given latitude\n * This is a cheaper version of `getDistanceScales`\n * @param latitude center latitude in degrees\n * @returns common units per meter\n */\nexport function unitsPerMeter(latitude) {\n const latCosine = Math.cos(latitude * DEGREES_TO_RADIANS);\n return TILE_SIZE / EARTH_CIRCUMFERENCE / latCosine;\n}\n/**\n * Calculate distance scales in meters around current lat/lon, both for\n * degrees and pixels.\n * In mercator projection mode, the distance scales vary significantly\n * with latitude.\n */\nexport function getDistanceScales(options) {\n const { latitude, longitude, highPrecision = false } = options;\n assert(Number.isFinite(latitude) && Number.isFinite(longitude));\n const worldSize = TILE_SIZE;\n const latCosine = Math.cos(latitude * DEGREES_TO_RADIANS);\n /**\n * Number of pixels occupied by one degree longitude around current lat/lon:\n unitsPerDegreeX = d(lngLatToWorld([lng, lat])[0])/d(lng)\n = scale * TILE_SIZE * DEGREES_TO_RADIANS / (2 * PI)\n unitsPerDegreeY = d(lngLatToWorld([lng, lat])[1])/d(lat)\n = -scale * TILE_SIZE * DEGREES_TO_RADIANS / cos(lat * DEGREES_TO_RADIANS) / (2 * PI)\n */\n const unitsPerDegreeX = worldSize / 360;\n const unitsPerDegreeY = unitsPerDegreeX / latCosine;\n /**\n * Number of pixels occupied by one meter around current lat/lon:\n */\n const altUnitsPerMeter = worldSize / EARTH_CIRCUMFERENCE / latCosine;\n /**\n * LngLat: longitude -> east and latitude -> north (bottom left)\n * UTM meter offset: x -> east and y -> north (bottom left)\n * World space: x -> east and y -> south (top left)\n *\n * Y needs to be flipped when converting delta degree/meter to delta pixels\n */\n const result = {\n unitsPerMeter: [altUnitsPerMeter, altUnitsPerMeter, altUnitsPerMeter],\n metersPerUnit: [1 / altUnitsPerMeter, 1 / altUnitsPerMeter, 1 / altUnitsPerMeter],\n unitsPerDegree: [unitsPerDegreeX, unitsPerDegreeY, altUnitsPerMeter],\n degreesPerUnit: [1 / unitsPerDegreeX, 1 / unitsPerDegreeY, 1 / altUnitsPerMeter]\n };\n /**\n * Taylor series 2nd order for 1/latCosine\n f'(a) * (x - a)\n = d(1/cos(lat * DEGREES_TO_RADIANS))/d(lat) * dLat\n = DEGREES_TO_RADIANS * tan(lat * DEGREES_TO_RADIANS) / cos(lat * DEGREES_TO_RADIANS) * dLat\n */\n if (highPrecision) {\n const latCosine2 = (DEGREES_TO_RADIANS * Math.tan(latitude * DEGREES_TO_RADIANS)) / latCosine;\n const unitsPerDegreeY2 = (unitsPerDegreeX * latCosine2) / 2;\n const altUnitsPerDegree2 = (worldSize / EARTH_CIRCUMFERENCE) * latCosine2;\n const altUnitsPerMeter2 = (altUnitsPerDegree2 / unitsPerDegreeY) * altUnitsPerMeter;\n result.unitsPerDegree2 = [0, unitsPerDegreeY2, altUnitsPerDegree2];\n result.unitsPerMeter2 = [altUnitsPerMeter2, 0, altUnitsPerMeter2];\n }\n // Main results, used for converting meters to latlng deltas and scaling offsets\n return result;\n}\n/**\n * Offset a lng/lat position by meterOffset (northing, easting)\n */\nexport function addMetersToLngLat(lngLatZ, xyz) {\n const [longitude, latitude, z0] = lngLatZ;\n const [x, y, z] = xyz;\n // eslint-disable-next-line no-shadow\n const { unitsPerMeter, unitsPerMeter2 } = getDistanceScales({\n longitude,\n latitude,\n highPrecision: true\n });\n const worldspace = lngLatToWorld(lngLatZ);\n worldspace[0] += x * (unitsPerMeter[0] + unitsPerMeter2[0] * y);\n worldspace[1] += y * (unitsPerMeter[1] + unitsPerMeter2[1] * y);\n const newLngLat = worldToLngLat(worldspace);\n const newZ = (z0 || 0) + (z || 0);\n return Number.isFinite(z0) || Number.isFinite(z) ? [newLngLat[0], newLngLat[1], newZ] : newLngLat;\n}\n/**\n *\n * view and projection matrix creation is intentionally kept compatible with\n * mapbox-gl's implementation to ensure that seamless interoperation\n * with mapbox and react-map-gl. See: https://github.com/mapbox/mapbox-gl-js\n */\nexport function getViewMatrix(options) {\n const { \n // Viewport props\n height, pitch, bearing, altitude, \n // Pre-calculated parameters\n scale, center } = options;\n // VIEW MATRIX: PROJECTS MERCATOR WORLD COORDINATES\n // Note that mercator world coordinates typically need to be flipped\n //\n // Note: As usual, matrix operation orders should be read in reverse\n // since vectors will be multiplied from the right during transformation\n const vm = createMat4();\n // Move camera to altitude (along the pitch & bearing direction)\n mat4.translate(vm, vm, [0, 0, -altitude]);\n // Rotate by bearing, and then by pitch (which tilts the view)\n mat4.rotateX(vm, vm, -pitch * DEGREES_TO_RADIANS);\n mat4.rotateZ(vm, vm, bearing * DEGREES_TO_RADIANS);\n const relativeScale = scale / height;\n mat4.scale(vm, vm, [relativeScale, relativeScale, relativeScale]);\n if (center) {\n mat4.translate(vm, vm, vec3.negate([], center));\n }\n return vm;\n}\n/**\n * Calculates mapbox compatible projection matrix from parameters\n *\n * @param options.width Width of \"viewport\" or window\n * @param options.height Height of \"viewport\" or window\n * @param options.scale Scale at the current zoom\n * @param options.center Offset of the target, vec3 in world space\n * @param options.offset Offset of the focal point, vec2 in screen space\n * @param options.pitch Camera angle in degrees (0 is straight down)\n * @param options.fovy field of view in degrees\n * @param options.altitude if provided, field of view is calculated using `altitudeToFovy()`\n * @param options.nearZMultiplier control z buffer\n * @param options.farZMultiplier control z buffer\n * @returns project parameters object\n */\nexport function getProjectionParameters(options) {\n const { width, height, altitude, pitch = 0, offset, center, scale, nearZMultiplier = 1, farZMultiplier = 1 } = options;\n let { fovy = altitudeToFovy(DEFAULT_ALTITUDE) } = options;\n // For back-compatibility allow field of view to be\n // derived from altitude\n if (altitude !== undefined) {\n fovy = altitudeToFovy(altitude);\n }\n const fovRadians = fovy * DEGREES_TO_RADIANS;\n const pitchRadians = pitch * DEGREES_TO_RADIANS;\n // Distance from camera to the target\n const focalDistance = fovyToAltitude(fovy);\n let cameraToSeaLevelDistance = focalDistance;\n if (center) {\n cameraToSeaLevelDistance += (center[2] * scale) / Math.cos(pitchRadians) / height;\n }\n const fovAboveCenter = fovRadians * (0.5 + (offset ? offset[1] : 0) / height);\n // Find the distance from the center point to the center top\n // in focal distance units using law of sines.\n const topHalfSurfaceDistance = (Math.sin(fovAboveCenter) * cameraToSeaLevelDistance) /\n Math.sin(clamp(Math.PI / 2 - pitchRadians - fovAboveCenter, 0.01, Math.PI - 0.01));\n // Calculate z distance of the farthest fragment that should be rendered.\n const furthestDistance = Math.sin(pitchRadians) * topHalfSurfaceDistance + cameraToSeaLevelDistance;\n // Matches mapbox limit\n const horizonDistance = cameraToSeaLevelDistance * 10;\n // Calculate z value of the farthest fragment that should be rendered.\n const farZ = Math.min(furthestDistance * farZMultiplier, horizonDistance);\n return {\n fov: fovRadians,\n aspect: width / height,\n focalDistance,\n near: nearZMultiplier,\n far: farZ\n };\n}\n/**\n * CALCULATE PROJECTION MATRIX: PROJECTS FROM CAMERA (VIEW) SPACE TO CLIPSPACE\n *\n * To match mapbox's z buffer:\n * - \\<= 0.28: nearZMultiplier: 0.1, farZmultiplier: 1\n * - \\>= 0.29: nearZMultiplier: 1 / height, farZMultiplier: 1.01\n *\n * @param options Viewport options\n * @param options.width Width of \"viewport\" or window\n * @param options.height Height of \"viewport\" or window\n * @param options.scale Scale at the current zoom\n * @param options.center Offset of the target, vec3 in world space\n * @param options.offset Offset of the focal point, vec2 in screen space\n * @param options.pitch Camera angle in degrees (0 is straight down)\n * @param options.fovy field of view in degrees\n * @param options.altitude if provided, field of view is calculated using `altitudeToFovy()`\n * @param options.nearZMultiplier control z buffer\n * @param options.farZMultiplier control z buffer\n * @returns 4x4 projection matrix\n */\nexport function getProjectionMatrix(options) {\n const { fov, aspect, near, far } = getProjectionParameters(options);\n const projectionMatrix = mat4.perspective([], fov, // fov in radians\n aspect, // aspect ratio\n near, // near plane\n far // far plane\n );\n return projectionMatrix;\n}\n/**\n *\n * Convert an altitude to field of view such that the\n * focal distance is equal to the altitude\n *\n * @param altitude - altitude of camera in screen units\n * @return fovy field of view in degrees\n */\nexport function altitudeToFovy(altitude) {\n return 2 * Math.atan(0.5 / altitude) * RADIANS_TO_DEGREES;\n}\n/**\n *\n * Convert an field of view such that the\n * focal distance is equal to the altitude\n *\n * @param fovy - field of view in degrees\n * @return altitude altitude of camera in screen units\n */\nexport function fovyToAltitude(fovy) {\n return 0.5 / Math.tan(0.5 * fovy * DEGREES_TO_RADIANS);\n}\n// Project flat coordinates to pixels on screen.\nexport function worldToPixels(xyz, pixelProjectionMatrix) {\n const [x, y, z = 0] = xyz;\n assert(Number.isFinite(x) && Number.isFinite(y) && Number.isFinite(z));\n return transformVector(pixelProjectionMatrix, [x, y, z, 1]);\n}\n/**\n * Unproject pixels on screen to flat coordinates.\n *\n * @param xyz - pixel coordinate on screen.\n * @param pixelUnprojectionMatrix - unprojection matrix 4x4\n * @param targetZ - if pixel coordinate does not have a 3rd component (depth),\n * targetZ is used as the elevation plane to unproject onto\n * @return [x, y, Z] flat coordinates on 512*512 Mercator Zoom 0 tile.\n */\nexport function pixelsToWorld(xyz, pixelUnprojectionMatrix, targetZ = 0) {\n const [x, y, z] = xyz;\n assert(Number.isFinite(x) && Number.isFinite(y), 'invalid pixel coordinate');\n if (Number.isFinite(z)) {\n // Has depth component\n const coord = transformVector(pixelUnprojectionMatrix, [x, y, z, 1]);\n return coord;\n }\n // since we don't know the correct projected z value for the point,\n // unproject two points to get a line and then find the point on that line with z=0\n const coord0 = transformVector(pixelUnprojectionMatrix, [x, y, 0, 1]);\n const coord1 = transformVector(pixelUnprojectionMatrix, [x, y, 1, 1]);\n const z0 = coord0[2];\n const z1 = coord1[2];\n const t = z0 === z1 ? 0 : ((targetZ || 0) - z0) / (z1 - z0);\n return vec2.lerp([], coord0, coord1, t);\n}\n//# sourceMappingURL=web-mercator-utils.js.map","import {lngLatToWorld} from '@math.gl/web-mercator';\nimport {BBox, GeoJsonGeometryTypes, Geometry, Position} from 'geojson';\n\ntype TransformFn = (coordinates: any[], bbox: Position[]) => any[];\n\nconst TRANSFORM_FN: Record<\n Exclude<GeoJsonGeometryTypes, 'GeometryCollection'>,\n TransformFn\n> = {\n Point: transformPoint,\n MultiPoint: transformMultiPoint,\n LineString: transformLineString,\n MultiLineString: transformMultiLineString,\n Polygon: transformPolygon,\n MultiPolygon: transformMultiPolygon,\n};\n\n/**\n * Transform WGS84 coordinates to tile coords.\n * It's the inverse of deck.gl coordinate-transform (https://github.com/visgl/deck.gl/blob/master/modules/geo-layers/src/mvt-layer/coordinate-transform.js)\n *\n * @param geometry - any valid geojson geometry\n * @param bbox - geojson bbox\n */\nexport function transformToTileCoords<T extends Geometry>(\n geometry: T,\n bbox: BBox\n): T {\n const [west, south, east, north] = bbox;\n const nw = projectFlat([west, north]);\n const se = projectFlat([east, south]);\n const projectedBbox = [nw, se];\n\n if (geometry.type === 'GeometryCollection') {\n throw new Error('Unsupported geometry type GeometryCollection');\n }\n\n const transformFn = TRANSFORM_FN[geometry.type];\n const coordinates = transformFn(geometry.coordinates, projectedBbox);\n return {...geometry, coordinates};\n}\n\nfunction transformPoint([pointX, pointY]: Position, [nw, se]: Position[]) {\n const x = inverseLerp(nw[0], se[0], pointX);\n const y = inverseLerp(nw[1], se[1], pointY);\n\n return [x, y];\n}\n\nfunction getPoints(geometry: Position[], bbox: Position[]) {\n return geometry.map((g) => transformPoint(projectFlat(g), bbox));\n}\n\nfunction transformMultiPoint(multiPoint: Position[], bbox: Position[]) {\n return getPoints(multiPoint, bbox);\n}\n\nfunction transformLineString(line: Position[], bbox: Position[]) {\n return getPoints(line, bbox);\n}\n\nfunction transformMultiLineString(\n multiLineString: Position[][],\n bbox: Position[]\n) {\n return multiLineString.map((lineString) =>\n transformLineString(lineString, bbox)\n );\n}\n\nfunction transformPolygon(polygon: Position[][], bbox: Position[]) {\n return polygon.map((polygonRing) => getPoints(polygonRing, bbox));\n}\n\nfunction transformMultiPolygon(multiPolygon: Position[][][], bbox: Position[]) {\n return multiPolygon.map((polygon) => transformPolygon(polygon, bbox));\n}\n\nfunction projectFlat(xyz: Position): Position {\n return lngLatToWorld(xyz);\n}\n\nfunction inverseLerp(a: number, b: number, x: number): number {\n return (x - a) / (b - a);\n}\n","import {lerp} from '@math.gl/core';\nimport {lngLatToWorld, worldToLngLat} from '@math.gl/web-mercator';\nimport {BBox, GeoJsonGeometryTypes, Geometry, Position} from 'geojson';\n\ntype TransformFn = (coordinates: any[], bbox: Position[]) => any[];\n\nconst TRANSFORM_FN: Record<\n Exclude<GeoJsonGeometryTypes, 'GeometryCollection'>,\n TransformFn\n> = {\n Point: transformPoint,\n MultiPoint: transformMultiPoint,\n LineString: transformLineString,\n MultiLineString: transformMultiLineString,\n Polygon: transformPolygon,\n MultiPolygon: transformMultiPolygon,\n};\n\n/**\n * Transform tile coords to WGS84 coordinates.\n *\n * @param geometry - any valid geojson geometry\n * @param bbox - geojson bbox\n */\nexport function transformTileCoordsToWGS84<T extends Geometry>(\n geometry: T,\n bbox: BBox\n): T {\n const [west, south, east, north] = bbox;\n const nw = lngLatToWorld([west, north]);\n const se = lngLatToWorld([east, south]);\n const projectedBbox = [nw, se];\n\n if (geometry.type === 'GeometryCollection') {\n throw new Error('Unsupported geometry type GeometryCollection');\n }\n\n const transformFn = TRANSFORM_FN[geometry.type];\n const coordinates = transformFn(geometry.coordinates, projectedBbox);\n return {...geometry, coordinates};\n}\n\nfunction transformPoint([pointX, pointY]: Position, [nw, se]: Position[]) {\n const x = lerp(nw[0], se[0], pointX);\n const y = lerp(nw[1], se[1], pointY);\n\n return worldToLngLat([x, y]);\n}\n\nfunction getPoints(geometry: Position[], bbox: Position[]) {\n return geometry.map((g) => transformPoint(g, bbox));\n}\n\nfunction transformMultiPoint(multiPoint: Position[], bbox: Position[]) {\n return getPoints(multiPoint, bbox);\n}\n\nfunction transformLineString(line: Position[], bbox: Position[]) {\n return getPoints(line, bbox);\n}\n\nfunction transformMultiLineString(\n multiLineString: Position[][],\n bbox: Position[]\n) {\n return multiLineString.map((lineString) =>\n transformLineString(lineString, bbox)\n );\n}\n\nfunction transformPolygon(polygon: Position[][], bbox: Position[]) {\n return polygon.map((polygonRing) => getPoints(polygonRing, bbox));\n}\n\nfunction transformMultiPolygon(multiPolygon: Position[][][], bbox: Position[]) {\n return multiPolygon.map((polygon) => transformPolygon(polygon, bbox));\n}\n","import bboxPolygon from '@turf/bbox-polygon';\nimport intersects from '@turf/boolean-intersects';\nimport booleanWithin from '@turf/boolean-within';\nimport intersect from '@turf/intersect';\nimport {transformToTileCoords} from '../utils/transformToTileCoords.js';\nimport {transformTileCoordsToWGS84} from '../utils/transformTileCoordsToWGS84.js';\nimport {TileFormat} from '../constants.js';\nimport {\n BBox,\n Feature,\n Geometry,\n LineString,\n MultiPolygon,\n Point,\n Polygon,\n Position,\n} from 'geojson';\nimport {SpatialFilter, Tile} from '../types.js';\nimport {TileFeatureExtractOptions} from './tileFeatures.js';\nimport {featureCollection} from '@turf/helpers';\nimport {FeatureData} from '../types-internal.js';\nimport {\n BinaryAttribute,\n BinaryFeature,\n BinaryGeometryType,\n BinaryPointFeature,\n TypedArrayConstructor,\n} from '@loaders.gl/schema';\n\nexport const FEATURE_GEOM_PROPERTY = '__geomValue';\n\ntype TileMap = Map<unknown, unknown>;\n\ntype TileDataInternal = {\n uniqueId: string | number | undefined;\n properties: any;\n numericProps: Record<string, number>;\n};\n\nexport function tileFeaturesGeometries({\n tiles,\n tileFormat,\n spatialFilter,\n uniqueIdProperty,\n options,\n}: {\n tiles: Tile[];\n tileFormat?: TileFormat;\n spatialFilter: SpatialFilter;\n uniqueIdProperty?: string;\n options?: {storeGeometry?: boolean};\n}): FeatureData[] {\n const map = new Map();\n\n for (const tile of tiles) {\n // Discard if it's not a visible tile (only check false value, not undefined)\n // or tile has not data\n if (tile.isVisible === false || !tile.data) {\n continue;\n }\n\n const bbox = [\n tile.bbox.west,\n tile.bbox.south,\n tile.bbox.east,\n tile.bbox.north,\n ] as BBox;\n const bboxToGeom = bboxPolygon(bbox);\n const tileIsFullyVisible = booleanWithin(bboxToGeom, spatialFilter);\n\n // Clip the geometry to intersect with the tile\n const spatialFilterFeature: Feature<Polygon | MultiPolygon> = {\n type: 'Feature',\n geometry: spatialFilter,\n properties: {},\n };\n const clippedGeometryToIntersect = intersect(\n featureCollection([bboxToGeom, spatialFilterFeature])\n );\n\n if (!clippedGeometryToIntersect) {\n continue;\n }\n\n // We assume that MVT tileFormat uses local coordinates so we transform the geometry to intersect to tile coordinates [0..1],\n // while in the case of 'geojson' or binary, the geometries are already in WGS84\n const transformedGeometryToIntersect =\n tileFormat === TileFormat.MVT\n ? transformToTileCoords(clippedGeometryToIntersect.geometry, bbox)\n : clippedGeometryToIntersect.geometry;\n\n createIndicesForPoints(tile.data.points!);\n\n calculateFeatures({\n map,\n tileIsFullyVisible,\n geometryIntersection: transformedGeometryToIntersect,\n data: tile.data.points!,\n type: 'Point',\n bbox,\n tileFormat,\n uniqueIdProperty,\n options,\n });\n calculateFeatures({\n map,\n tileIsFullyVisible,\n geometryIntersection: transformedGeometryToIntersect,\n data: tile.data.lines!,\n type: 'LineString',\n bbox,\n tileFormat,\n uniqueIdProperty,\n options,\n });\n calculateFeatures({\n map,\n tileIsFullyVisible,\n geometryIntersection: transformedGeometryToIntersect,\n data: tile.data.polygons!,\n type: 'Polygon',\n bbox,\n tileFormat,\n uniqueIdProperty,\n options,\n });\n }\n return Array.from(map.values());\n}\n\nfunction processTileFeatureProperties({\n map,\n data,\n startIndex,\n endIndex,\n type,\n bbox,\n tileFormat,\n uniqueIdProperty,\n storeGeometry,\n geometryIntersection,\n}: {\n map: TileMap;\n data: BinaryFeature;\n startIndex: number;\n endIndex: number;\n type: BinaryGeometryType;\n bbox: BBox;\n tileFormat?: TileFormat;\n uniqueIdProperty?: string;\n storeGeometry: boolean;\n geometryIntersection?: Geometry;\n}) {\n const tileProps = getPropertiesFromTile(data, startIndex);\n const uniquePropertyValue = getUniquePropertyValue(\n tileProps,\n uniqueIdProperty,\n map\n );\n\n if (!uniquePropertyValue || map.has(uniquePropertyValue)) {\n return;\n }\n let geometry: Geometry | null = null;\n\n // Only calculate geometry if necessary\n if (storeGeometry || geometryIntersection) {\n const {positions} = data;\n const ringCoordinates = getRingCoordinatesFor(\n startIndex,\n endIndex,\n positions\n );\n geometry = getFeatureByType(ringCoordinates, type);\n }\n\n // If intersection is required, check before proceeding\n if (\n geometry &&\n geometryIntersection &&\n !intersects(geometry, geometryIntersection)\n ) {\n return;\n }\n\n const properties = parseProperties(tileProps);\n\n // Only save geometry if necessary\n if (storeGeometry && geometry) {\n properties[FEATURE_GEOM_PROPERTY] =\n tileFormat === TileFormat.MVT\n ? transformTileCoordsToWGS84(geometry, bbox)\n : geometry;\n }\n map.set(uniquePropertyValue, properties);\n}\n\nfunction addIntersectedFeaturesInTile({\n map,\n data,\n geometryIntersection,\n type,\n bbox,\n tileFormat,\n uniqueIdProperty,\n options,\n}: {\n map: TileMap;\n data: BinaryFeature;\n geometryIntersection: Geometry;\n type: BinaryGeometryType;\n bbox: BBox;\n tileFormat?: TileFormat;\n uniqueIdProperty?: string;\n options?: TileFeatureExtractOptions;\n}) {\n const indices = getIndices(data);\n const storeGeometry = options?.storeGeometry || false;\n\n for (let i = 0; i < indices.length - 1; i++) {\n const startIndex = indices[i];\n const endIndex = indices[i + 1];\n processTileFeatureProperties({\n map,\n data,\n startIndex,\n endIndex,\n type,\n bbox,\n tileFormat,\n uniqueIdProperty,\n storeGeometry,\n geometryIntersection,\n });\n }\n}\n\nfunction getIndices(data: BinaryFeature) {\n let indices: BinaryAttribute;\n switch (data.type) {\n case 'Point':\n // @ts-expect-error Missing or changed types?\n indices = data.pointIndices;\n break;\n case 'LineString':\n indices = data.pathIndices;\n break;\n case 'Polygon':\n indices = data.primitivePolygonIndices;\n break;\n default:\n throw new Error(`Unexpected type, \"${(data as BinaryFeature).type}\"`);\n }\n return indices.value;\n}\n\nfunction getFeatureId(data: BinaryFeature, startIndex: number) {\n return data.featureIds.value[startIndex];\n}\n\nfunction getPropertiesFromTile(data: BinaryFeature, startIndex: number) {\n const featureId = getFeatureId(data, startIndex);\n const {properties, numericProps, fields} = data;\n const result: TileDataInternal = {\n uniqueId: (fields?.[featureId] as {id: string | number})?.id,\n properties: properties[featureId],\n numericProps: {},\n };\n\n for (const key in numericProps) {\n result.numericProps[key] = numericProps[key].value[startIndex];\n }\n\n return result;\n}\n\nfunction parseProperties(tileProps: TileDataInternal) {\n const {properties, numericProps} = tileProps;\n return Object.assign({}, properties, numericProps);\n}\n\nfunction getUniquePropertyValue(\n tileProps: TileDataInternal,\n uniqueIdProperty: string | undefined,\n map: TileMap\n) {\n if (uniqueIdProperty) {\n return getValueFromTileProps(tileProps, uniqueIdProperty);\n }\n\n if (tileProps.uniqueId) {\n return tileProps.uniqueId;\n }\n\n const artificialId = map.size + 1; // a counter, assumed as a valid new id\n return (\n getValueFromTileProps(tileProps, 'cartodb_id') ||\n getValueFromTileProps(tileProps, 'geoid') ||\n artificialId\n );\n}\n\nfunction getValueFromTileProps(\n tileProps: TileDataInternal,\n propertyName: string\n) {\n const {properties, numericProps} = tileProps;\n return numericProps[propertyName] || properties[propertyName];\n}\n\nfunction getFeatureByType(\n coordinates: Position[],\n type: BinaryGeometryType\n): Polygon | LineString | Point {\n switch (type) {\n case 'Polygon':\n return {type: 'Polygon', coordinates: [coordinates]};\n case 'LineString':\n return {type: 'LineString', coordinates};\n case 'Point':\n return {type: 'Point', coordinates: coordinates[0]};\n default:\n throw new Error('Invalid geometry type');\n }\n}\n\nfunction getRingCoordinatesFor(\n startIndex: number,\n endIndex: number,\n positions: BinaryAttribute\n) {\n const ringCoordinates = [];\n\n for (let j = startIndex; j < endIndex; j++) {\n ringCoordinates.push(\n Array.from(\n positions.value.subarray(j * positions.size, (j + 1) * positions.size)\n )\n );\n }\n\n return ringCoordinates;\n}\n\nfunction calculateFeatures({\n map,\n tileIsFullyVisible,\n geometryIntersection,\n data,\n type,\n bbox,\n tileFormat,\n uniqueIdProperty,\n options,\n}: {\n map: TileMap;\n tileIsFullyVisible: boolean;\n geometryIntersection: SpatialFilter;\n data: BinaryFeature;\n type: BinaryGeometryType;\n bbox: BBox;\n tileFormat?: TileFormat;\n uniqueIdProperty?: string;\n options?: TileFeatureExtractOptions;\n}) {\n if (!data?.properties.length) {\n return;\n }\n\n if (tileIsFullyVisible) {\n addAllFeaturesInTile({\n map,\n data,\n type,\n bbox,\n tileFormat,\n uniqueIdProperty,\n options,\n });\n } else {\n addIntersectedFeaturesInTile({\n map,\n data,\n geometryIntersection,\n type,\n bbox,\n tileFormat,\n uniqueIdProperty,\n options,\n });\n }\n}\n\nfunction addAllFeaturesInTile({\n map,\n data,\n type,\n bbox,\n tileFormat,\n uniqueIdProperty,\n options,\n}: {\n map: TileMap;\n data: BinaryFeature;\n type: BinaryGeometryType;\n bbox: BBox;\n tileFormat?: TileFormat;\n uniqueIdProperty?: string;\n options?: TileFeatureExtractOptions;\n}) {\n const indices = getIndices(data);\n const storeGeometry = options?.storeGeometry || false;\n for (let i = 0; i < indices.length - 1; i++) {\n const startIndex = indices[i];\n const endIndex = indices[i + 1];\n processTileFeatureProperties({\n map,\n data,\n startIndex,\n endIndex,\n type,\n bbox,\n tileFormat,\n uniqueIdProperty,\n storeGeometry,\n });\n }\n}\n\nfunction createIndicesForPoints(data: BinaryPointFeature) {\n const featureIds = data.featureIds.value;\n const lastFeatureId = featureIds[featureIds.length - 1];\n const PointIndicesArray = featureIds.constructor as TypedArrayConstructor;\n\n const pointIndices: BinaryAttribute = {\n value: new PointIndicesArray(featureIds.length + 1),\n size: 1,\n };\n pointIndices.value.set(featureIds);\n pointIndices.value.set([lastFeatureId + 1], featureIds.length);\n\n // @ts-expect-error Missing or changed types?\n data.pointIndices = pointIndices;\n}\n","// a tile is an array [x,y,z]\nvar d2r = Math.PI / 180,\n r2d = 180 / Math.PI;\n\nfunction tileToBBOX (tile) {\n var e = tile2lon(tile[0]+1,tile[2]);\n var w = tile2lon(tile[0],tile[2]);\n var s = tile2lat(tile[1]+1,tile[2]);\n var n = tile2lat(tile[1],tile[2]);\n return [w,s,e,n];\n}\n\nfunction tileToGeoJSON (tile) {\n var bbox = tileToBBOX(tile);\n var poly = {\n type: 'Polygon',\n coordinates:\n [\n [\n [bbox[0],bbox[1]],\n [bbox[0], bbox[3]],\n [bbox[2], bbox[3]],\n [bbox[2], bbox[1]],\n [bbox[0], bbox[1]]\n ]\n ]\n };\n return poly;\n}\n\nfunction tile2lon(x, z) {\n return (x/Math.pow(2,z)*360-180);\n}\n\nfunction tile2lat(y, z) {\n var n=Math.PI-2*Math.PI*y/Math.pow(2,z);\n return (r2d*Math.atan(0.5*(Math.exp(n)-Math.exp(-n))));\n}\n\nfunction pointToTile(lon, lat, z) {\n var tile = pointToTileFraction(lon, lat, z);\n tile[0] = Math.floor(tile[0]);\n tile[1] = Math.floor(tile[1]);\n return tile;\n}\n\nfunction getChildren (tile) {\n return [\n [tile[0]*2, tile[1]*2, tile[2]+1],\n [tile[0]*2+1, tile[1]*2, tile[2 ]+1],\n [tile[0]*2+1, tile[1]*2+1, tile[2]+1],\n [tile[0]*2, tile[1]*2+1, tile[2]+1],\n ];\n}\n\nfunction getParent (tile) {\n // top left\n if(tile[0]%2===0 && tile[1]%2===0) {\n return [tile[0]/2, tile[1]/2, tile[2]-1];\n }\n // bottom left\n else if((tile[0]%2===0) && (!tile[1]%2===0)) {\n return [tile[0]/2, (tile[1]-1)/2, tile[2]-1];\n }\n // top right\n else if((!tile[0]%2===0) && (tile[1]%2===0)) {\n return [(tile[0]-1)/2, (tile[1])/2, tile[2]-1];\n }\n // bottom right\n else {\n return [(tile[0]-1)/2, (tile[1]-1)/2, tile[2]-1];\n }\n}\n\nfunction getSiblings (tile) {\n return getChildren(getParent(tile));\n}\n\nfunction hasSiblings(tile, tiles) {\n var siblings = getSiblings(tile);\n for (var i = 0; i < siblings.length; i++) {\n if (!hasTile(tiles, siblings[i])) return false;\n }\n return true;\n}\n\nfunction hasTile(tiles, tile) {\n for (var i = 0; i < tiles.length; i++) {\n if (tilesEqual(tiles[i], tile)) return true;\n }\n return false;\n}\n\nfunction tilesEqual(tile1, tile2) {\n return (\n tile1[0] === tile2[0] &&\n tile1[1] === tile2[1] &&\n tile1[2] === tile2[2]\n );\n}\n\nfunction tileToQuadkey(tile) {\n var index = '';\n for (var z = tile[2]; z > 0; z--) {\n var b = 0;\n var mask = 1 << (z - 1);\n if ((tile[0] & mask) !== 0) b++;\n if ((tile[1] & mask) !== 0) b += 2;\n index += b.toString();\n }\n return index;\n}\n\nfunction quadkeyToTile(quadkey) {\n var x = 0;\n var y = 0;\n var z = quadkey.length;\n\n for (var i = z; i > 0; i--) {\n var mask = 1 << (i - 1);\n switch (quadkey[z - i]) {\n case '0':\n break;\n\n case '1':\n x |= mask;\n break;\n\n case '2':\n y |= mask;\n break;\n\n case '3':\n x |= mask;\n y |= mask;\n break;\n }\n }\n return [x,y,z];\n}\n\nfunction bboxToTile(bboxCoords) {\n var min = pointToTile(bboxCoords[0], bboxCoords[1], 32);\n var max = pointToTile(bboxCoords[2], bboxCoords[3], 32);\n var bbox = [min[0], min[1], max[0], max[1]];\n\n var z = getBboxZoom(bbox);\n if (z === 0) return [0,0,0];\n var x = bbox[0] >>> (32 - z);\n var y = bbox[1] >>> (32 - z);\n return [x,y,z];\n}\n\nfunction getBboxZoom(bbox) {\n var MAX_ZOOM = 28;\n for (var z = 0; z < MAX_ZOOM; z++) {\n var mask = 1 << (32 - (z + 1));\n if (((bbox[0] & mask) != (bbox[2] & mask)) ||\n ((bbox[1] & mask) != (bbox[3] & mask))) {\n return z;\n }\n }\n\n return MAX_ZOOM;\n}\n\nfunction pointToTileFraction(lon, lat, z) {\n var sin = Math.sin(lat * d2r),\n z2 = Math.pow(2, z),\n x = z2 * (lon / 360 + 0.5),\n y = z2 * (0.5 - 0.25 * Math.log((1 + sin) / (1 - sin)) / Math.PI);\n return [x, y, z];\n}\n\nmodule.exports = {\n tileToGeoJSON: tileToGeoJSON,\n tileToBBOX: tileToBBOX,\n getChildren: getChildren,\n getParent: getParent,\n getSiblings: getSiblings,\n hasTile: hasTile,\n hasSiblings: hasSiblings,\n tilesEqual: tilesEqual,\n tileToQuadkey: tileToQuadkey,\n quadkeyToTile: quadkeyToTile,\n pointToTile: pointToTile,\n bboxToTile: bboxToTile,\n pointToTileFraction: pointToTileFraction\n};\n","var tilebelt = require('tilebelt');\n\n/**\n * Given a geometry, create cells and return them in a format easily readable\n * by any software that reads GeoJSON.\n *\n * @alias geojson\n * @param {Object} geom GeoJSON geometry\n * @param {Object} limits an object with min_zoom and max_zoom properties\n * specifying the minimum and maximum level to be tiled.\n * @returns {Object} FeatureCollection of cells formatted as GeoJSON Features\n */\nexports.geojson = function (geom, limits) {\n return {\n type: 'FeatureCollection',\n features: getTiles(geom, limits).map(tileToFeature)\n };\n};\n\nfunction tileToFeature(t) {\n return {\n type: 'Feature',\n geometry: tilebelt.tileToGeoJSON(t),\n properties: {}\n };\n}\n\n/**\n * Given a geometry, create cells and return them in their raw form,\n * as an array of cell identifiers.\n *\n * @alias tiles\n * @param {Object} geom GeoJSON geometry\n * @param {Object} limits an object with min_zoom and max_zoom properties\n * specifying the minimum and maximum level to be tiled.\n * @returns {Array<Array<number>>} An array of tiles given as [x, y, z] arrays\n */\nexports.tiles = getTiles;\n\n/**\n * Given a geometry, create cells and return them as\n * [quadkey](http://msdn.microsoft.com/en-us/library/bb259689.aspx) indexes.\n *\n * @alias indexes\n * @param {Object} geom GeoJSON geometry\n * @param {Object} limits an object with min_zoom and max_zoom properties\n * specifying the minimum and maximum level to be tiled.\n * @returns {Array<String>} An array of tiles given as quadkeys.\n */\nexports.indexes = function (geom, limits) {\n return getTiles(geom, limits).map(tilebelt.tileToQuadkey);\n};\n\nfunction getTiles(geom, limits) {\n var i, tile,\n coords = geom.coordinates,\n maxZoom = limits.max_zoom,\n tileHash = {},\n tiles = [];\n\n if (geom.type === 'Point') {\n return [tilebelt.pointToTile(coords[0], coords[1], maxZoom)];\n\n } else if (geom.type === 'MultiPoint') {\n for (i = 0; i < coords.length; i++) {\n tile = tilebelt.pointToTile(coords[i][0], coords[i][1], maxZoom);\n tileHash[toID(tile[0], tile[1], tile[2])] = true;\n }\n } else if (geom.type === 'LineString') {\n lineCover(tileHash, coords, maxZoom);\n\n } else if (geom.type === 'MultiLineString') {\n for (i = 0; i < coords.length; i++) {\n lineCover(tileHash, coords[i], maxZoom);\n }\n } else if (geom.type === 'Polygon') {\n polygonCover(tileHash, tiles, coords, maxZoom);\n\n } else if (geom.type === 'MultiPolygon') {\n for (i = 0; i < coords.length; i++) {\n polygonCover(tileHash, tiles, coords[i], maxZoom);\n }\n } else {\n throw new Error('Geometry type not implemented');\n }\n\n if (limits.min_zoom !== maxZoom) {\n // sync tile hash and tile array so that both contain the same tiles\n var len = tiles.length;\n appendHashTiles(tileHash, tiles);\n for (i = 0; i < len; i++) {\n var t = tiles[i];\n tileHash[toID(t[0], t[1], t[2])] = true;\n }\n return mergeTiles(tileHash, tiles, limits);\n }\n\n appendHashTiles(tileHash, tiles);\n return tiles;\n}\n\nfunction mergeTiles(tileHash, tiles, limits) {\n var mergedTiles = [];\n\n for (var z = limits.max_zoom; z > limits.min_zoom; z--) {\n\n var parentTileHash = {};\n var parentTiles = [];\n\n for (var i = 0; i < tiles.length; i++) {\n var t = tiles[i];\n\n if (t[0] % 2 === 0 && t[1] % 2 === 0) {\n var id2 = toID(t[0] + 1, t[1], z),\n id3 = toID(t[0], t[1] + 1, z),\n id4 = toID(t[0] + 1, t[1] + 1, z);\n\n if (tileHash[id2] && tileHash[id3] && tileHash[id4]) {\n tileHash[toID(t[0], t[1], t[2])] = false;\n tileHash[id2] = false;\n tileHash[id3] = false;\n tileHash[id4] = false;\n\n var parentTile = [t[0] / 2, t[1] / 2, z - 1];\n\n if (z - 1 === limits.min_zoom) mergedTiles.push(parentTile);\n else {\n parentTileHash[toID(t[0] / 2, t[1] / 2, z - 1)] = true;\n parentTiles.push(parentTile);\n }\n }\n }\n }\n\n for (i = 0; i < tiles.length; i++) {\n t = tiles[i];\n if (tileHash[toID(t[0], t[1], t[2])]) mergedTiles.push(t);\n }\n\n tileHash = parentTileHash;\n tiles = parentTiles;\n }\n\n return mergedTiles;\n}\n\nfunction polygonCover(tileHash, tileArray, geom, zoom) {\n var intersections = [];\n\n for (var i = 0; i < geom.length; i++) {\n var ring = [];\n lineCover(tileHash, geom[i], zoom, ring);\n\n for (var j = 0, len = ring.length, k = len - 1; j < len; k = j++) {\n var m = (j + 1) % len;\n var y = ring[j][1];\n\n // add interesction if it's not local extremum or duplicate\n if ((y > ring[k][1] || y > ring[m][1]) && // not local minimum\n (y < ring[k][1] || y < ring[m][1]) && // not local maximum\n y !== ring[m][1]) intersections.push(ring[j]);\n }\n }\n\n intersections.sort(compareTiles); // sort by y, then x\n\n for (i = 0; i < intersections.length; i += 2) {\n // fill tiles between pairs of intersections\n y = intersections[i][1];\n for (var x = intersections[i][0] + 1; x < intersections[i + 1][0]; x++) {\n var id = toID(x, y, zoom);\n if (!tileHash[id]) {\n tileArray.push([x, y, zoom]);\n }\n }\n }\n}\n\nfunction compareTiles(a, b) {\n return (a[1] - b[1]) || (a[0] - b[0]);\n}\n\nfunction lineCover(tileHash, coords, maxZoom, ring) {\n var prevX, prevY;\n\n for (var i = 0; i < coords.length - 1; i++) {\n var start = tilebelt.pointToTileFraction(coords[i][0], coords[i][1], maxZoom),\n stop = tilebelt.pointToTileFraction(coords[i + 1][0], coords[i + 1][1], maxZoom),\n x0 = start[0],\n y0 = start[1],\n x1 = stop[0],\n y1 = stop[1],\n dx = x1 - x0,\n dy = y1 - y0;\n\n if (dy === 0 && dx === 0) continue;\n\n var sx = dx > 0 ? 1 : -1,\n sy = dy > 0 ? 1 : -1,\n x = Math.floor(x0),\n y = Math.floor(y0),\n tMaxX = dx === 0 ? Infinity : Math.abs(((dx > 0 ? 1 : 0) + x - x0) / dx),\n tMaxY = dy === 0 ? Infinity : Math.abs(((dy > 0 ? 1 : 0) + y - y0) / dy),\n tdx = Math.abs(sx / dx),\n tdy = Math.abs(sy / dy);\n\n if (x !== prevX || y !== prevY) {\n tileHash[toID(x, y, maxZoom)] = true;\n if (ring && y !== prevY) ring.push([x, y]);\n prevX = x;\n prevY = y;\n }\n\n while (tMaxX < 1 || tMaxY < 1) {\n if (tMaxX < tMaxY) {\n tMaxX += tdx;\n x += sx;\n } else {\n tMaxY += tdy;\n y += sy;\n }\n tileHash[toID(x, y, maxZoom)] = true;\n if (ring && y !== prevY) ring.push([x, y]);\n prevX = x;\n prevY = y;\n }\n }\n\n if (ring && y === ring[0][1]) ring.pop();\n}\n\nfunction appendHashTiles(hash, tiles) {\n var keys = Object.keys(hash);\n for (var i = 0; i < keys.length; i++) {\n tiles.push(fromID(+keys[i]));\n }\n}\n\nfunction toID(x, y, z) {\n var dim = 2 * (1 << z);\n return ((dim * y + x) * 32) + z;\n}\n\nfunction fromID(id) {\n var z = id % 32,\n dim = 2 * (1 << z),\n xy = ((id - z) / 32),\n x = xy % dim,\n y = ((xy - x) / dim) % dim;\n return [x, y, z];\n}\n","import { tiles } from '@mapbox/tile-cover';\nimport { worldToLngLat } from '@math.gl/web-mercator';\n\nconst B = [0x5555555555555555n, 0x3333333333333333n, 0x0f0f0f0f0f0f0f0fn, 0x00ff00ff00ff00ffn, 0x0000ffff0000ffffn, 0x00000000ffffffffn];\nconst S = [0n, 1n, 2n, 4n, 8n, 16n];\nconst TILE_SIZE = 512;\nfunction cellToOffset(quadbin) {\n const {\n x,\n y,\n z\n } = cellToTile(quadbin);\n const scale = TILE_SIZE / (1 << z);\n return [x * scale, TILE_SIZE - y * scale, scale];\n}\nfunction cellToWorldBounds(quadbin, coverage) {\n const [xOffset, yOffset, scale] = cellToOffset(quadbin);\n return [[xOffset, yOffset], [xOffset + coverage * scale, yOffset - coverage * scale]];\n}\nfunction getCellPolygon(quadbin, coverage = 1) {\n const [topLeft, bottomRight] = cellToWorldBounds(quadbin, coverage);\n const [w, n] = worldToLngLat(topLeft);\n const [e, s] = worldToLngLat(bottomRight);\n return [e, n, e, s, w, s, w, n, e, n];\n}\nfunction hexToBigInt(hex) {\n return BigInt(`0x${hex}`);\n}\nfunction bigIntToHex(index) {\n return index.toString(16);\n}\nfunction tileToCell(tile) {\n if (tile.z < 0 || tile.z > 26) {\n throw new Error('Wrong zoom');\n }\n const z = BigInt(tile.z);\n let x = BigInt(tile.x) << 32n - z;\n let y = BigInt(tile.y) << 32n - z;\n for (let i = 0; i < 5; i++) {\n const s = S[5 - i];\n const b = B[4 - i];\n x = (x | x << s) & b;\n y = (y | y << s) & b;\n }\n const quadbin = 0x4000000000000000n | 1n << 59n |\n // | (mode << 59) | (mode_dep << 57)\n z << 52n | (x | y << 1n) >> 12n | 0xfffffffffffffn >> z * 2n;\n return quadbin;\n}\nfunction cellToTile(quadbin) {\n const mode = quadbin >> 59n & 7n;\n const modeDep = quadbin >> 57n & 3n;\n const z = quadbin >> 52n & 0x1fn;\n const q = (quadbin & 0xfffffffffffffn) << 12n;\n if (mode !== 1n && modeDep !== 0n) {\n throw new Error('Wrong mode');\n }\n let x = q;\n let y = q >> 1n;\n for (let i = 0; i < 6; i++) {\n const s = S[i];\n const b = B[i];\n x = (x | x >> s) & b;\n y = (y | y >> s) & b;\n }\n x = x >> 32n - z;\n y = y >> 32n - z;\n return {\n z: Number(z),\n x: Number(x),\n y: Number(y)\n };\n}\nfunction getResolution(quadbin) {\n return quadbin >> 52n & 0x1fn;\n}\nfunction cellToParent(quadbin) {\n const zparent = getResolution(quadbin) - 1n;\n const parent = quadbin & ~(0x1fn << 52n) | zparent << 52n | 0xfffffffffffffn >> zparent * 2n;\n return parent;\n}\n/**\n * Returns the children of a cell.\n *\n * @privateRemarks Order of the child cells would, preferably, be\n * row-major starting from NW and ending at SE.\n */\nfunction cellToChildren(quadbin, resolution) {\n if (resolution < 0 || resolution > 26 || resolution < getResolution(quadbin)) {\n throw new Error('Invalid resolution');\n }\n const zoomLevelMask = ~(0x1fn << 52n);\n const blockRange = 1n << (resolution - (quadbin >> 52n & 0x1fn) << 1n);\n const sqrtBlockRange = 1n << resolution - (quadbin >> 52n & 0x1fn);\n const blockShift = 52n - (resolution << 1n);\n const childBase = (quadbin & zoomLevelMask | resolution << 52n) & ~(blockRange - 1n << blockShift);\n const children = [];\n for (let blockRow = 0n; blockRow < sqrtBlockRange; blockRow++) {\n for (let blockColumn = 0n; blockColumn < sqrtBlockRange; blockColumn++) {\n children.push(childBase | blockRow * sqrtBlockRange + blockColumn << blockShift);\n }\n }\n return children;\n}\nfunction geometryToCells(geometry, resolution) {\n const zoom = Number(resolution);\n return tiles(geometry, {\n min_zoom: zoom,\n max_zoom: zoom\n }).map(([x, y, z]) => tileToCell({\n x,\n y,\n z\n }));\n}\nfunction cellToBoundary(cell) {\n const bbox = getCellPolygon(cell);\n const boundary = [[bbox[0], bbox[1]], [bbox[2], bbox[3]], [bbox[4], bbox[5]], [bbox[6], bbox[7]], [bbox[0], bbox[1]]];\n return {\n type: 'Polygon',\n coordinates: [boundary]\n };\n}\n\nexport { bigIntToHex, cellToBoundary, cellToChildren, cellToOffset, cellToParent, cellToTile, cellToWorldBounds, geometryToCells, getCellPolygon, getResolution, hexToBigInt, tileToCell };\n//# sourceMappingURL=index.esm.js.map\n","import {SpatialIndex} from '../constants.js';\nimport {getResolution as quadbinGetResolution, geometryToCells} from 'quadbin';\nimport bboxClip from '@turf/bbox-clip';\nimport {SpatialFilter, SpatialIndexTile} from '../types.js';\nimport {BBox, Feature} from 'geojson';\nimport {getResolution as h3GetResolution, polygonToCells} from 'h3-js';\nimport {FeatureData} from '../types-internal.js';\nimport {SpatialDataType} from '../sources/types.js';\n\nexport type TileFeaturesSpatialIndexOptions = {\n tiles: SpatialIndexTile[];\n spatialFilter: SpatialFilter;\n spatialDataColumn: string;\n spatialDataType: SpatialDataType;\n};\n\nexport function tileFeaturesSpatialIndex({\n tiles,\n spatialFilter,\n spatialDataColumn,\n spatialDataType,\n}: TileFeaturesSpatialIndexOptions): FeatureData[] {\n const map = new Map();\n const spatialIndex = getSpatialIndex(spatialDataType);\n const resolution = getResolution(tiles, spatialIndex);\n const spatialIndexIDName = spatialDataColumn\n ? spatialDataColumn\n : spatialIndex;\n\n if (!resolution) {\n return [];\n }\n const cells = getCellsCoverGeometry(spatialFilter, spatialIndex, resolution);\n\n if (!cells?.length) {\n return [];\n }\n\n // We transform cells to Set to improve the performace\n const cellsSet = new Set<bigint | string>(cells);\n\n for (const tile of tiles) {\n if (tile.isVisible === false || !tile.data) {\n continue;\n }\n\n tile.data.forEach((d: Feature) => {\n if (cellsSet.has(d.id as bigint | string)) {\n map.set(d.id, {...d.properties, [spatialIndexIDName]: d.id});\n }\n });\n }\n return Array.from(map.values());\n}\n\nfunction getResolution(\n tiles: SpatialIndexTile[],\n spatialIndex: SpatialIndex\n): number | undefined {\n const data = tiles.find((tile) => tile.data?.length)?.data;\n\n if (!data) {\n return;\n }\n\n if (spatialIndex === SpatialIndex.QUADBIN) {\n return Number(quadbinGetResolution(data[0].id));\n }\n\n if (spatialIndex === SpatialIndex.H3) {\n return h3GetResolution(data[0].id);\n }\n}\n\nconst bboxWest: BBox = [-180, -90, 0, 90];\nconst bboxEast: BBox = [0, -90, 180, 90];\n\nfunction getCellsCoverGeometry(\n geometry: SpatialFilter,\n spatialIndex: SpatialIndex,\n resolution: number\n) {\n if (spatialIndex === SpatialIndex.QUADBIN) {\n // @ts-expect-error TODO: Probably ought to be stricter about number vs. bigint types in this file.\n return geometryToCells(geometry, resolution);\n }\n\n if (spatialIndex === SpatialIndex.H3) {\n // The current H3 polyfill algorithm can't deal with polygon segments of greater than 180 degrees longitude\n // so we clip the geometry to be sure that none of them is greater than 180 degrees\n // https://github.com/uber/h3-js/issues/24#issuecomment-431893796\n return polygonToCells(\n bboxClip(geometry, bboxWest).geometry.coordinates as\n | number[][]\n | number[][][],\n resolution,\n true\n ).concat(\n polygonToCells(\n bboxClip(geometry, bboxEast).geometry.coordinates as\n | number[][]\n | number[][][],\n resolution,\n true\n )\n );\n }\n}\n\nfunction getSpatialIndex(spatialDataType: SpatialDataType): SpatialIndex {\n switch (spatialDataType) {\n case 'h3':\n return SpatialIndex.H3;\n case 'quadbin':\n return SpatialIndex.QUADBIN;\n default:\n throw new Error('Unexpected spatial data type');\n }\n}\n","/**\n * Current version of @carto/api-client.\n * @internal\n */\nexport const API_CLIENT_VERSION = __CARTO_API_CLIENT_VERSION;\n\n/** @internal */\nexport const V3_MINOR_VERSION = '3.4';\n\n/** @privateRemarks Source: @carto/constants, @deck.gl/carto */\nexport const DEFAULT_GEO_COLUMN = 'geom';\n\n/**\n * Fastly default limit is 8192; leave some padding.\n * @privateRemarks Source: @deck.gl/carto\n */\nexport const DEFAULT_MAX_LENGTH_URL = 7000;\n\n/** @privateRemarks Source: @deck.gl/carto */\nexport const DEFAULT_TILE_RESOLUTION = 0.5;\n\n/**\n * @todo TODO(v0.5): Update DEFAULT_TILE_RESOLUTION and remove this constant.\n * @internal\n */\nexport const REDUCED_QUERIES_TILE_RESOLUTION = 1;\n\n/**\n * @privateRemarks Source: @deck.gl/carto\n * @internal\n */\nexport const DEFAULT_AGGREGATION_RES_LEVEL_H3 = 4;\n\n/**\n * @privateRemarks Source: @deck.gl/carto\n * @internal\n */\nexport const DEFAULT_AGGREGATION_RES_LEVEL_QUADBIN = 6;\n\n/** @internal */\nexport const DEFAULT_AGGREGATION_EXP_ALIAS = '__aggregationValue';\nexport const DEFAULT_AGGREGATION_EXP = `1 AS ${DEFAULT_AGGREGATION_EXP_ALIAS}`;\n","import {SpatialFilter, SpatialIndexTile, Tile} from '../types.js';\nimport {tileFeaturesGeometries} from './tileFeaturesGeometries.js';\nimport {tileFeaturesSpatialIndex} from './tileFeaturesSpatialIndex.js';\nimport {TileFormat} from '../constants.js';\nimport {DEFAULT_GEO_COLUMN} from '../constants-internal.js';\nimport {FeatureData} from '../types-internal.js';\nimport {SpatialDataType} from '../sources/types.js';\n\n/** @privateRemarks Source: @carto/react-core */\nexport type TileFeatures = {\n tiles: Tile[];\n tileFormat: TileFormat;\n spatialDataType: SpatialDataType;\n spatialDataColumn?: string;\n spatialFilter: SpatialFilter;\n uniqueIdProperty?: string;\n options?: TileFeatureExtractOptions;\n};\n\n/** @privateRemarks Source: @carto/react-core */\nexport type TileFeatureExtractOptions = {\n storeGeometry?: boolean;\n};\n\n/** @privateRemarks Source: @carto/react-core */\nexport function tileFeatures({\n tiles,\n spatialFilter,\n uniqueIdProperty,\n tileFormat,\n spatialDataColumn = DEFAULT_GEO_COLUMN,\n spatialDataType,\n options = {},\n}: TileFeatures): FeatureData[] {\n if (spatialDataType !== 'geo') {\n return tileFeaturesSpatialIndex({\n tiles: tiles as SpatialIndexTile[],\n spatialFilter,\n spatialDataColumn,\n spatialDataType,\n });\n }\n return tileFeaturesGeometries({\n tiles,\n tileFormat,\n spatialFilter,\n uniqueIdProperty,\n options,\n });\n}\n","import {Feature} from 'geojson';\nimport {FilterLogicalOperator, Filters} from '../types.js';\nimport {FilterType} from '../constants.js';\nimport {_buildFeatureFilter} from '../filters/index.js';\nimport {FeatureData} from '../types-internal.js';\n\ntype TimeFilter = Filters['string'][FilterType.TIME] & {\n params?: {offsetBy?: number};\n};\n\n/**\n * deck.gl's DataFilterExtension supports GPU filtering with 1–4 values. We\n * allocate filters[0] to generic filters and filters[1] to time filters.\n *\n * getFilterValue() _must_ return an array of the same size as the filterSize\n * used to initialize the DataFilterExtension. We document that users must use\n * filterSize=4 for compatibility with @link {getDataFilterExtensionProps}.\n */\nconst DEFAULT_FILTER_SIZE = 4;\n\n/** @experimental Prefer type definition from deck.gl. */\nexport type _DataFilterExtensionProps = {\n filterRange: number[][];\n updateTriggers: Record<string, string>;\n getFilterValue: (feature: Feature | FeatureData) => number[];\n};\n\n/**\n * Creates props for DataFilterExtension, from `@deck.gl/extensions`, given\n * a set of filters. Requires that DataFilterExtension is initialized with\n * filterSize=4, where the CARTO filters will occupy the first two slots.\n *\n * @example To create a deck.gl layer with GPU data filtering:\n * ```typescript\n * import {DataFilterExtension} from '@deck.gl/extensions';\n * import {VectorTileLayer} from '@deck.gl/layers';\n * import {getDataFilterExtensionProps} from '@carto/api-client';\n *\n * const layer = new VectorTileLayer({\n * data: data,\n * extensions: [new DataFilterExtension({filterSize: 4})],\n * ...getDataFilterExtensionProps(filters),\n * });\n * ```\n */\nexport function getDataFilterExtensionProps(\n filters: Filters,\n filtersLogicalOperator?: FilterLogicalOperator\n): _DataFilterExtensionProps {\n const {filtersWithoutTimeType, timeColumn, timeFilter} =\n getFiltersByType(filters);\n return {\n filterRange: getFilterRange(timeFilter, DEFAULT_FILTER_SIZE),\n updateTriggers: getUpdateTriggers(\n filtersWithoutTimeType,\n timeColumn,\n timeFilter\n ),\n getFilterValue: getFilterValue(\n filtersWithoutTimeType,\n timeColumn,\n timeFilter,\n DEFAULT_FILTER_SIZE,\n filtersLogicalOperator\n ),\n };\n}\n\n/** @internal */\nfunction getFiltersByType(filters: Filters) {\n const filtersWithoutTimeType: Filters = {};\n\n let timeColumn: string | null = null;\n let timeFilter: TimeFilter | null = null;\n\n for (const [column, columnData] of Object.entries(filters)) {\n for (const [type, typeData] of Object.entries(columnData) as [\n FilterType,\n unknown,\n ][]) {\n if (type === FilterType.TIME) {\n timeColumn = column;\n timeFilter = typeData as TimeFilter;\n } else {\n filtersWithoutTimeType[column] = {[type]: typeData};\n }\n }\n }\n\n return {\n filtersWithoutTimeType,\n timeColumn,\n timeFilter,\n };\n}\n\n/** @internal */\nfunction getFilterRange(\n timeFilter: TimeFilter | null,\n filterSize: number\n): number[][] {\n const result = Array(filterSize).fill([0, 0]);\n // According to getFilterValue all filters are resolved as 0 or 1 in the first position of the array\n // except the time filter value that is resolved with the real value of the feature in the second position of the array\n result[0] = [1, 1];\n if (timeFilter) {\n const offsetBy = timeFilter.params?.offsetBy || 0;\n result[1] = timeFilter.values[0].map((v) => v - offsetBy);\n }\n return result;\n}\n\n/** @internal */\nfunction getUpdateTriggers(\n filtersWithoutTimeType: Filters,\n timeColumn: string | null,\n timeFilter: TimeFilter | null\n) {\n const result: Record<string, object> = {...filtersWithoutTimeType};\n\n // We don't want to change the layer UpdateTriggers every time that the time filter changes\n // because this filter is changed by the time series widget during its animation\n // so we remove the time filter value from the `updateTriggers`\n if (timeColumn && timeFilter) {\n result[timeColumn] = {\n ...result[timeColumn],\n offsetBy: timeFilter.params?.offsetBy,\n [FilterType.TIME]: {}, // Allows working with other filters, without an impact on performance.\n };\n }\n return {\n getFilterValue: JSON.stringify(result),\n };\n}\n\n/** @internal */\nfunction getFilterValue(\n filtersWithoutTimeType: Filters,\n timeColumn: string | null,\n timeFilter: TimeFilter | null,\n filterSize: number,\n filtersLogicalOperator?: FilterLogicalOperator\n) {\n const result = Array(filterSize).fill(0);\n const featureFilter = _buildFeatureFilter({\n filters: filtersWithoutTimeType,\n type: 'number',\n filtersLogicalOperator,\n });\n\n // We evaluate all filters except the time filter using _buildFeatureFilter function.\n // For the time filter, we return the value of the feature and we will change the getFilterRange result\n // every time this filter changes\n return (feature: Feature | FeatureData) => {\n result[0] = featureFilter(feature);\n\n if (timeColumn && timeFilter) {\n const offsetBy = timeFilter.params?.offsetBy || 0;\n const f = (feature.properties || feature) as Record<string, unknown>;\n result[1] = (f[timeColumn] as number) - offsetBy;\n }\n return result;\n };\n}\n","// deck.gl\n// SPDX-License-Identifier: MIT\n// Copyright (c) vis.gl contributors\n\nimport {MapType} from '../types.js';\n\nexport type APIRequestType =\n | 'Map data'\n | 'Map instantiation'\n | 'Public map'\n | 'Tile stats'\n | 'SQL'\n | 'Basemap style';\n\nexport type APIErrorContext = {\n requestType: APIRequestType;\n mapId?: string;\n connection?: string;\n source?: string;\n type?: MapType;\n};\n\n/**\n *\n * Custom error for reported errors in CARTO Maps API.\n * Provides useful debugging information in console and context for applications.\n *\n */\nexport class CartoAPIError extends Error {\n /** Source error from server */\n error: Error;\n\n /** Context (API call & parameters) in which error occured */\n errorContext: APIErrorContext;\n\n /** Response from server */\n response?: Response;\n\n /** JSON Response from server */\n responseJson?: any;\n\n constructor(\n error: Error,\n errorContext: APIErrorContext,\n response?: Response,\n responseJson?: any\n ) {\n let responseString = 'Failed to connect';\n if (response) {\n responseString = 'Server returned: ';\n if (response.status === 400) {\n responseString += 'Bad request';\n } else if (response.status === 401 || response.status === 403) {\n responseString += 'Unauthorized access';\n } else if (response.status === 404) {\n responseString += 'Not found';\n } else {\n responseString += 'Error';\n }\n\n responseString += ` (${response.status}):`;\n }\n responseString += ` ${error.message || error}`;\n\n let message = `${errorContext.requestType} API request failed`;\n message += `\\n${responseString}`;\n for (const key of Object.keys(errorContext)) {\n if (key === 'requestType') continue;\n message += `\\n${formatErrorKey(key)}: ${(errorContext as any)[key]}`;\n }\n message += '\\n';\n\n super(message);\n\n this.name = 'CartoAPIError';\n this.response = response;\n this.responseJson = responseJson;\n this.error = error;\n this.errorContext = errorContext;\n }\n}\n\n/**\n * Converts camelCase to Camel Case\n */\nfunction formatErrorKey(key: string) {\n return key.replace(/([A-Z])/g, ' $1').replace(/^./, (s) => s.toUpperCase());\n}\n","// deck.gl\n// SPDX-License-Identifier: MIT\n// Copyright (c) vis.gl contributors\n\nimport {MapType} from '../types.js';\n\nexport type V3Endpoint = 'maps' | 'stats' | 'sql';\n\nfunction joinPath(...args: string[]): string {\n return args\n .map((part) => (part.endsWith('/') ? part.slice(0, -1) : part))\n .join('/');\n}\n\nfunction buildV3Path(\n apiBaseUrl: string,\n version: 'v3',\n endpoint: V3Endpoint,\n ...rest: string[]\n): string {\n return joinPath(apiBaseUrl, version, endpoint, ...rest);\n}\n\n/** @internal Required by fetchMap(). */\nexport function buildPublicMapUrl({\n apiBaseUrl,\n cartoMapId,\n}: {\n apiBaseUrl: string;\n cartoMapId: string;\n}): string {\n return buildV3Path(apiBaseUrl, 'v3', 'maps', 'public', cartoMapId);\n}\n\n/** @internal Required by fetchMap(). */\nexport function buildStatsUrl({\n attribute,\n apiBaseUrl,\n connectionName,\n source,\n type,\n}: {\n attribute: string;\n apiBaseUrl: string;\n connectionName: string;\n source: string;\n type: MapType;\n}): string {\n if (type === 'query') {\n return buildV3Path(apiBaseUrl, 'v3', 'stats', connectionName, attribute);\n }\n\n // type === 'table'\n return buildV3Path(\n apiBaseUrl,\n 'v3',\n 'stats',\n connectionName,\n source,\n attribute\n );\n}\n\nexport function buildSourceUrl({\n apiBaseUrl,\n connectionName,\n endpoint,\n}: {\n apiBaseUrl: string;\n connectionName: string;\n endpoint: MapType;\n}): string {\n return buildV3Path(apiBaseUrl, 'v3', 'maps', connectionName, endpoint);\n}\n\nexport function buildQueryUrl({\n apiBaseUrl,\n connectionName,\n}: {\n apiBaseUrl: string;\n connectionName: string;\n}): string {\n return buildV3Path(apiBaseUrl, 'v3', 'sql', connectionName, 'query');\n}\n","import {Filter} from './types.js';\nimport {FilterType} from './constants.js';\n\nconst FILTER_TYPES = new Set(Object.values(FilterType));\nconst isFilterType = (type: string): type is FilterType =>\n FILTER_TYPES.has(type as FilterType);\n\n/**\n * @privateRemarks Source: @carto/react-widgets\n * @internal\n */\nexport function getApplicableFilters(\n owner?: string,\n filters?: Record<string, Filter>\n): Record<string, Filter> {\n if (!filters) return {};\n\n const applicableFilters: Record<string, Filter> = {};\n\n for (const column in filters) {\n for (const type in filters[column]) {\n if (!isFilterType(type)) continue;\n\n const filter = filters[column][type];\n const isApplicable = !owner || !filter?.owner || filter?.owner !== owner;\n if (filter && isApplicable) {\n applicableFilters[column] ||= {};\n (applicableFilters[column][type] as typeof filter) = filter;\n }\n }\n }\n\n return applicableFilters;\n}\n\ntype Row<T> = Record<string, T> | Record<string, T>[] | T[] | T;\n\n/**\n * Due to each data warehouse having its own behavior with columns,\n * we need to normalize them and transform every key to lowercase.\n *\n * @privateRemarks Source: @carto/react-widgets\n * @internal\n */\nexport function normalizeObjectKeys<T, R extends Row<T>>(el: R): R {\n if (Array.isArray(el)) {\n return el.map((value) => normalizeObjectKeys(value)) as R;\n } else if (typeof el !== 'object') {\n return el;\n }\n\n return Object.entries(el as Record<string, T>).reduce(\n (acc, [key, value]) => {\n acc[key.toLowerCase()] =\n typeof value === 'object' && value ? normalizeObjectKeys(value) : value;\n return acc;\n },\n {} as Record<string, T>\n ) as R;\n}\n\n/** @privateRemarks Source: @carto/react-core */\nexport function assert(condition: unknown, message: string): asserts condition {\n if (!condition) {\n throw new Error(message);\n }\n}\n\n/**\n * @privateRemarks Source: @carto/react-core\n * @internal\n */\nexport class InvalidColumnError extends Error {\n protected static readonly NAME = 'InvalidColumnError';\n\n constructor(message: string) {\n super(`${InvalidColumnError.NAME}: ${message}`);\n this.name = InvalidColumnError.NAME;\n }\n\n static is(error: unknown) {\n return (\n error instanceof InvalidColumnError ||\n (error as Error).message?.includes(InvalidColumnError.NAME)\n );\n }\n}\n\nexport function isEmptyObject(object: object): boolean {\n for (const _ in object) {\n return false;\n }\n return true;\n}\n\n/** @internal */\nexport const isObject: (x: unknown) => boolean = (x) =>\n x !== null && typeof x === 'object';\n\n/** @internal */\nexport const isPureObject: (x: any) => boolean = (x) =>\n isObject(x) && x.constructor === {}.constructor;\n","// deck.gl\n// SPDX-License-Identifier: MIT\n// Copyright (c) vis.gl contributors\n\nimport {isPureObject} from '../utils.js';\nimport {CartoAPIError, APIErrorContext} from './carto-api-error.js';\nimport {V3_MINOR_VERSION} from '../constants-internal.js';\nimport {DEFAULT_MAX_LENGTH_URL} from '../constants-internal.js';\nimport {getClient} from '../client.js';\nimport {LocalCacheOptions} from '../sources/types.js';\n\nconst DEFAULT_HEADERS = {\n Accept: 'application/json',\n 'Content-Type': 'application/json',\n};\n\nconst DEFAULT_REQUEST_CACHE = new Map<string, Promise<unknown>>();\n\nexport async function requestWithParameters<T = any>({\n baseUrl,\n parameters = {},\n headers: customHeaders = {},\n errorContext,\n maxLengthURL = DEFAULT_MAX_LENGTH_URL,\n localCache,\n}: {\n baseUrl: string;\n parameters?: Record<string, unknown>;\n headers?: Record<string, string>;\n errorContext: APIErrorContext;\n maxLengthURL?: number;\n localCache?: LocalCacheOptions;\n}): Promise<T> {\n // Parameters added to all requests issued with `requestWithParameters()`.\n // These parameters override parameters already in the base URL, but not\n // user-provided parameters.\n parameters = {\n v: V3_MINOR_VERSION,\n client: getClient(),\n ...(typeof deck !== 'undefined' &&\n deck.VERSION && {deckglVersion: deck.VERSION}),\n ...parameters,\n };\n\n baseUrl = excludeURLParameters(baseUrl, Object.keys(parameters));\n const key = createCacheKey(baseUrl, parameters, customHeaders);\n\n const {\n cache: REQUEST_CACHE,\n canReadCache,\n canStoreInCache,\n } = getCacheSettings(localCache);\n\n if (canReadCache && REQUEST_CACHE.has(key)) {\n return REQUEST_CACHE.get(key) as Promise<T>;\n }\n\n const url = createURLWithParameters(baseUrl, parameters);\n const headers = {...DEFAULT_HEADERS, ...customHeaders};\n\n /* global fetch */\n const fetchPromise =\n url.length > maxLengthURL\n ? fetch(baseUrl, {\n method: 'POST',\n body: JSON.stringify(parameters),\n headers,\n })\n : fetch(url, {headers});\n\n let response: Response | undefined;\n let responseJson: unknown;\n const jsonPromise: Promise<T> = fetchPromise\n .then((_response: Response) => {\n response = _response;\n return response.json();\n })\n .then((json: any) => {\n responseJson = json;\n if (!response || !response.ok) {\n throw new Error(json.error);\n }\n return json;\n })\n .catch((error: Error) => {\n if (canStoreInCache) {\n REQUEST_CACHE.delete(key);\n }\n throw new CartoAPIError(error, errorContext, response, responseJson);\n });\n\n if (canStoreInCache) {\n REQUEST_CACHE.set(key, jsonPromise);\n }\n return jsonPromise;\n}\n\nfunction getCacheSettings(localCache: LocalCacheOptions | undefined) {\n const canReadCache = localCache?.cacheControl?.includes('no-cache')\n ? false\n : true;\n const canStoreInCache = localCache?.cacheControl?.includes('no-store')\n ? false\n : true;\n const cache = localCache?.cache || DEFAULT_REQUEST_CACHE;\n\n return {\n cache,\n canReadCache,\n canStoreInCache,\n };\n}\n\nfunction createCacheKey(\n baseUrl: string,\n parameters: Record<string, unknown>,\n headers: Record<string, string>\n): string {\n const parameterEntries = Object.entries(parameters).sort(([a], [b]) =>\n a > b ? 1 : -1\n );\n const headerEntries = Object.entries(headers).sort(([a], [b]) =>\n a > b ? 1 : -1\n );\n return JSON.stringify({\n baseUrl,\n parameters: parameterEntries,\n headers: headerEntries,\n });\n}\n\n/**\n * Appends query string parameters to a URL. Existing URL parameters are kept,\n * unless there is a conflict, in which case the new parameters override\n * those already in the URL.\n */\nfunction createURLWithParameters(\n baseUrlString: string,\n parameters: Record<string, unknown>\n): string {\n const baseUrl = new URL(baseUrlString);\n for (const [key, value] of Object.entries(parameters)) {\n if (isPureObject(value) || Array.isArray(value)) {\n baseUrl.searchParams.set(key, JSON.stringify(value));\n } else {\n baseUrl.searchParams.set(\n key,\n (value as string | boolean | number).toString()\n );\n }\n }\n return baseUrl.toString();\n}\n\n/**\n * Deletes query string parameters from a URL.\n */\nfunction excludeURLParameters(baseUrlString: string, parameters: string[]) {\n const baseUrl = new URL(baseUrlString);\n for (const param of parameters) {\n if (baseUrl.searchParams.has(param)) {\n baseUrl.searchParams.delete(param);\n }\n }\n return baseUrl.toString();\n}\n","// deck.gl\n// SPDX-License-Identifier: MIT\n// Copyright (c) vis.gl contributors\n\nimport {DEFAULT_API_BASE_URL} from '../constants.js';\nimport {DEFAULT_MAX_LENGTH_URL} from '../constants-internal.js';\nimport {buildSourceUrl} from '../api/endpoints.js';\nimport {requestWithParameters} from '../api/request-with-parameters.js';\nimport type {\n GeojsonResult,\n JsonResult,\n SourceOptionalOptions,\n SourceRequiredOptions,\n TilejsonMapInstantiation,\n TilejsonResult,\n} from './types.js';\nimport {MapType} from '../types.js';\nimport {APIErrorContext} from '../api/index.js';\nimport {getClient} from '../client.js';\n\nexport const SOURCE_DEFAULTS: Omit<SourceOptionalOptions, 'clientId'> = {\n apiBaseUrl: DEFAULT_API_BASE_URL,\n format: 'tilejson',\n headers: {},\n maxLengthURL: DEFAULT_MAX_LENGTH_URL,\n};\n\nexport async function baseSource<UrlParameters extends Record<string, unknown>>(\n endpoint: MapType,\n options: Partial<SourceOptionalOptions> & SourceRequiredOptions,\n urlParameters: UrlParameters\n): Promise<TilejsonResult | GeojsonResult | JsonResult> {\n const {accessToken, connectionName, cache, ...optionalOptions} = options;\n const mergedOptions = {\n ...SOURCE_DEFAULTS,\n clientId: getClient(),\n accessToken,\n connectionName,\n endpoint,\n };\n for (const key in optionalOptions) {\n if (optionalOptions[key as keyof typeof optionalOptions]) {\n (mergedOptions as any)[key] =\n optionalOptions[key as keyof typeof optionalOptions];\n }\n }\n const baseUrl = buildSourceUrl(mergedOptions);\n const {clientId, maxLengthURL, format, localCache} = mergedOptions;\n const headers = {\n Authorization: `Bearer ${options.accessToken}`,\n ...options.headers,\n };\n const parameters = {client: clientId, ...urlParameters};\n\n const errorContext: APIErrorContext = {\n requestType: 'Map instantiation',\n connection: options.connectionName,\n type: endpoint,\n source: JSON.stringify(parameters, undefined, 2),\n };\n const mapInstantiation =\n await requestWithParameters<TilejsonMapInstantiation>({\n baseUrl,\n parameters,\n headers,\n errorContext,\n maxLengthURL,\n localCache,\n });\n\n const dataUrl = mapInstantiation[format].url[0];\n if (cache) {\n cache.value = parseInt(\n new URL(dataUrl).searchParams.get('cache') || '',\n 10\n );\n }\n errorContext.requestType = 'Map data';\n\n if (format === 'tilejson') {\n const json = await requestWithParameters<TilejsonResult>({\n baseUrl: dataUrl,\n parameters: {client: clientId},\n headers,\n errorContext,\n maxLengthURL,\n localCache,\n });\n if (accessToken) {\n json.accessToken = accessToken;\n }\n return json;\n }\n\n return await requestWithParameters<GeojsonResult | JsonResult>({\n baseUrl: dataUrl,\n parameters: {client: clientId},\n headers,\n errorContext,\n maxLengthURL,\n localCache,\n });\n}\n","// deck.gl\n// SPDX-License-Identifier: MIT\n// Copyright (c) vis.gl contributors\n\nimport {QueryParameters} from '../types.js';\nimport {baseSource} from './base-source.js';\nimport type {FilterOptions, SourceOptions, TilejsonResult} from './types.js';\n\nexport type BoundaryQuerySourceOptions = SourceOptions &\n FilterOptions & {\n columns?: string[];\n tilesetTableName: string;\n propertiesSqlQuery: string;\n queryParameters?: QueryParameters;\n };\ntype UrlParameters = {\n columns?: string;\n filters?: Record<string, unknown>;\n tilesetTableName: string;\n propertiesSqlQuery: string;\n queryParameters?: Record<string, unknown> | unknown[];\n};\n\nexport type BoundaryQuerySourceResponse = TilejsonResult;\n\nexport const boundaryQuerySource = async function (\n options: BoundaryQuerySourceOptions\n): Promise<BoundaryQuerySourceResponse> {\n const {\n columns,\n filters,\n tilesetTableName,\n propertiesSqlQuery,\n queryParameters,\n } = options;\n const urlParameters: UrlParameters = {\n tilesetTableName,\n propertiesSqlQuery,\n };\n\n if (columns) {\n urlParameters.columns = columns.join(',');\n }\n if (filters) {\n urlParameters.filters = filters;\n }\n if (queryParameters) {\n urlParameters.queryParameters = queryParameters;\n }\n\n return baseSource<UrlParameters>(\n 'boundary',\n options,\n urlParameters\n ) as Promise<BoundaryQuerySourceResponse>;\n};\n","// deck.gl\n// SPDX-License-Identifier: MIT\n// Copyright (c) vis.gl contributors\n\nimport {baseSource} from './base-source.js';\nimport type {FilterOptions, SourceOptions, TilejsonResult} from './types.js';\n\nexport type BoundaryTableSourceOptions = SourceOptions &\n FilterOptions & {\n tilesetTableName: string;\n columns?: string[];\n propertiesTableName: string;\n };\ntype UrlParameters = {\n filters?: Record<string, unknown>;\n tilesetTableName: string;\n columns?: string;\n propertiesTableName: string;\n};\n\nexport type BoundaryTableSourceResponse = TilejsonResult;\n\nexport const boundaryTableSource = async function (\n options: BoundaryTableSourceOptions\n): Promise<BoundaryTableSourceResponse> {\n const {filters, tilesetTableName, columns, propertiesTableName} = options;\n const urlParameters: UrlParameters = {\n tilesetTableName,\n propertiesTableName,\n };\n\n if (columns) {\n urlParameters.columns = columns.join(',');\n }\n if (filters) {\n urlParameters.filters = filters;\n }\n\n return baseSource<UrlParameters>(\n 'boundary',\n options,\n urlParameters\n ) as Promise<BoundaryTableSourceResponse>;\n};\n","import {\n CategoryRequestOptions,\n CategoryResponse,\n FeaturesRequestOptions,\n FeaturesResponse,\n FormulaRequestOptions,\n FormulaResponse,\n HistogramRequestOptions,\n HistogramResponse,\n RangeRequestOptions,\n RangeResponse,\n ScatterRequestOptions,\n ScatterResponse,\n TableRequestOptions,\n TableResponse,\n TimeSeriesRequestOptions,\n TimeSeriesResponse,\n} from './types.js';\nimport {FilterLogicalOperator, Filter, Filters} from '../types.js';\nimport {getApplicableFilters} from '../utils.js';\nimport {getClient} from '../client.js';\nimport {ModelSource} from '../models/model.js';\nimport {SourceOptions} from '../sources/index.js';\nimport {ApiVersion, DEFAULT_API_BASE_URL} from '../constants.js';\n\nexport interface WidgetSourceProps extends Omit<SourceOptions, 'filters'> {\n apiVersion?: ApiVersion;\n filters?: Record<string, Filter>;\n filtersLogicalOperator?: FilterLogicalOperator;\n}\n\n/**\n * Source for Widget API requests on a data source defined by a SQL query.\n *\n * Abstract class. Use {@link WidgetQuerySource} or {@link WidgetTableSource}.\n */\nexport abstract class WidgetSource<Props extends WidgetSourceProps> {\n readonly props: Props;\n\n static defaultProps: Partial<WidgetSourceProps> = {\n apiVersion: ApiVersion.V3,\n apiBaseUrl: DEFAULT_API_BASE_URL,\n clientId: getClient(),\n filters: {},\n filtersLogicalOperator: 'and',\n };\n\n constructor(props: Props) {\n this.props = {\n ...WidgetSource.defaultProps,\n clientId: getClient(), // Refresh clientId, default may have changed.\n ...props,\n };\n }\n\n /**\n * Subclasses of {@link WidgetRemoteSource} must implement this method, calling\n * {@link WidgetRemoteSource.prototype._getModelSource} for common source\n * properties, and adding additional required properties including 'type' and\n * 'data'.\n */\n protected abstract getModelSource(\n filters: Filters | undefined,\n filterOwner?: string\n ): ModelSource;\n\n protected _getModelSource(\n filters: Filters | undefined,\n filterOwner?: string\n ): Omit<ModelSource, 'type' | 'data'> {\n const props = this.props;\n return {\n apiVersion: props.apiVersion as ApiVersion,\n apiBaseUrl: props.apiBaseUrl as string,\n clientId: props.clientId as string,\n accessToken: props.accessToken,\n connectionName: props.connectionName,\n filters: getApplicableFilters(filterOwner, filters || props.filters),\n filtersLogicalOperator: props.filtersLogicalOperator,\n spatialDataType: props.spatialDataType,\n spatialDataColumn: props.spatialDataColumn,\n };\n }\n\n /**\n * Returns a list of labeled datapoints for categorical data. Suitable for\n * charts including grouped bar charts, pie charts, and tree charts.\n */\n abstract getCategories(\n options: CategoryRequestOptions\n ): Promise<CategoryResponse>;\n\n /**\n * Given a list of feature IDs (as found in `_carto_feature_id`) returns all\n * matching features. In datasets containing features with duplicate geometries,\n * feature IDs may be duplicated (IDs are a hash of geometry) and so more\n * results may be returned than IDs in the request.\n * @internal\n * @experimental\n */\n abstract getFeatures(\n options: FeaturesRequestOptions\n ): Promise<FeaturesResponse>;\n\n /**\n * Returns a scalar numerical statistic over all matching data. Suitable\n * for 'headline' or 'scorecard' figures such as counts and sums.\n */\n abstract getFormula(options: FormulaRequestOptions): Promise<FormulaResponse>;\n\n /**\n * Returns a list of labeled datapoints for 'bins' of data defined as ticks\n * over a numerical range. Suitable for histogram charts.\n */\n abstract getHistogram(\n options: HistogramRequestOptions\n ): Promise<HistogramResponse>;\n\n /**\n * Returns a range (min and max) for a numerical column of matching rows.\n * Suitable for displaying certain 'headline' or 'scorecard' statistics,\n * or rendering a range slider UI for filtering.\n */\n abstract getRange(options: RangeRequestOptions): Promise<RangeResponse>;\n\n /**\n * Returns a list of bivariate datapoints defined as numerical 'x' and 'y'\n * values. Suitable for rendering scatter plots.\n */\n abstract getScatter(options: ScatterRequestOptions): Promise<ScatterResponse>;\n\n /**\n * Returns a list of arbitrary data rows, with support for pagination and\n * sorting. Suitable for displaying tables and lists.\n */\n abstract getTable(options: TableRequestOptions): Promise<TableResponse>;\n\n /**\n * Returns a series of labeled numerical values, grouped into equally-sized\n * time intervals. Suitable for rendering time series charts.\n */\n abstract getTimeSeries(\n options: TimeSeriesRequestOptions\n ): Promise<TimeSeriesResponse>;\n}\n\n/**\n * @todo TODO(v0.5): Remove WidgetBaseSourceProps alias\n * @deprecated Use WidgetSourceProps.\n */\nexport type WidgetBaseSourceProps = WidgetSourceProps;\n\n/**\n * @todo TODO(v0.5): Remove WidgetBaseSource alias.\n * @deprecated Use WidgetSourceP.\n */\nexport const WidgetBaseSource = WidgetSource;\n","import {InvalidColumnError} from '../utils.js';\n\n/** @privateRemarks Source: @carto/react-api */\nexport interface ModelRequestOptions {\n method: 'GET' | 'POST';\n headers?: Record<string, string>;\n signal?: AbortSignal;\n otherOptions?: Record<string, unknown>;\n body?: string;\n}\n\ninterface ModelErrorResponse {\n error?: string | string[];\n hint?: string;\n column_name?: string;\n}\n\n/**\n * Return more descriptive error from API\n * @privateRemarks Source: @carto/react-api\n */\nexport function dealWithApiError({\n response,\n data,\n}: {\n response: Response;\n data: ModelErrorResponse;\n}) {\n if (data.error === 'Column not found') {\n throw new InvalidColumnError(`${data.error} ${data.column_name}`);\n }\n\n if (\n typeof data.error === 'string' &&\n data.error?.includes('Missing columns')\n ) {\n throw new InvalidColumnError(data.error);\n }\n\n switch (response.status) {\n case 401:\n throw new Error('Unauthorized access. Invalid credentials');\n case 403:\n throw new Error('Forbidden access to the requested data');\n default:\n throw new Error(\n data && data.error && typeof data.error === 'string'\n ? data.error\n : JSON.stringify(data?.hint || data.error?.[0])\n );\n }\n}\n\n/** @privateRemarks Source: @carto/react-api */\nexport async function makeCall({\n url,\n accessToken,\n opts,\n}: {\n url: string;\n accessToken: string;\n opts: ModelRequestOptions;\n}) {\n let response;\n let data;\n const isPost = opts?.method === 'POST';\n try {\n response = await fetch(url.toString(), {\n headers: {\n Authorization: `Bearer ${accessToken}`,\n ...(isPost && {'Content-Type': 'application/json'}),\n ...opts.headers,\n },\n ...(isPost && {\n method: opts?.method,\n body: opts?.body,\n }),\n signal: opts?.signal,\n ...opts?.otherOptions,\n });\n data = await response.json();\n } catch (error) {\n if ((error as Error).name === 'AbortError') throw error;\n\n throw new Error(`Failed request: ${error as Error}`);\n }\n\n if (!response.ok) {\n dealWithApiError({response, data});\n }\n\n return data;\n}\n","import {DEFAULT_GEO_COLUMN} from '../constants-internal.js';\nimport {\n Filter,\n FilterLogicalOperator,\n MapType,\n QueryParameters,\n SpatialFilter,\n} from '../types.js';\nimport {assert, isPureObject} from '../utils.js';\nimport {ModelRequestOptions, makeCall} from './common.js';\nimport {ApiVersion} from '../constants.js';\nimport {SpatialDataType, SpatialFilterPolyfillMode} from '../sources/types.js';\n\n/** @privateRemarks Source: @carto/react-api */\nconst AVAILABLE_MODELS = [\n 'category',\n 'histogram',\n 'formula',\n 'pick',\n 'timeseries',\n 'range',\n 'scatterplot',\n 'table',\n] as const;\n\nexport type Model = (typeof AVAILABLE_MODELS)[number];\n\nexport interface ModelSource {\n type: MapType;\n apiVersion: ApiVersion;\n apiBaseUrl: string;\n accessToken: string;\n clientId: string;\n connectionName: string;\n data: string;\n filters?: Record<string, Filter>;\n filtersLogicalOperator?: FilterLogicalOperator;\n spatialFilter?: SpatialFilter;\n queryParameters?: QueryParameters;\n spatialDataColumn?: string;\n spatialDataType?: SpatialDataType;\n spatialFiltersMode?: SpatialFilterPolyfillMode;\n}\n\nconst {V3} = ApiVersion;\nconst REQUEST_GET_MAX_URL_LENGTH = 2048;\n\n/**\n * Execute a SQL model request.\n * @privateRemarks Source: @carto/react-api\n */\nexport function executeModel(props: {\n model: Model;\n source: ModelSource;\n params: Record<string, unknown>;\n opts?: Partial<ModelRequestOptions>;\n}) {\n assert(props.source, 'executeModel: missing source');\n assert(props.model, 'executeModel: missing model');\n assert(props.params, 'executeModel: missing params');\n\n assert(\n AVAILABLE_MODELS.includes(props.model),\n `executeModel: model provided isn't valid. Available models: ${AVAILABLE_MODELS.join(\n ', '\n )}`\n );\n\n const {model, source, params, opts} = props;\n const {type, apiVersion, apiBaseUrl, accessToken, connectionName, clientId} =\n source;\n\n assert(apiBaseUrl, 'executeModel: missing apiBaseUrl');\n assert(accessToken, 'executeModel: missing accessToken');\n assert(apiVersion === V3, 'executeModel: SQL Model API requires CARTO 3+');\n assert(type !== 'tileset', 'executeModel: Tilesets not supported');\n\n let url = `${apiBaseUrl}/v3/sql/${connectionName}/model/${model}`;\n\n const {\n data,\n filters,\n filtersLogicalOperator = 'and',\n spatialDataType = 'geo',\n spatialFiltersMode = 'intersects',\n } = source;\n\n const queryParams: Record<string, unknown> = {\n type,\n client: clientId,\n source: data,\n params,\n queryParameters: source.queryParameters || '',\n filters,\n filtersLogicalOperator,\n };\n\n const spatialDataColumn = source.spatialDataColumn || DEFAULT_GEO_COLUMN;\n\n // Picking Model API requires 'spatialDataColumn'.\n if (model === 'pick') {\n queryParams.spatialDataColumn = spatialDataColumn;\n }\n\n // API supports multiple filters, we apply it only to spatialDataColumn\n const spatialFilters = source.spatialFilter\n ? {[spatialDataColumn]: source.spatialFilter}\n : undefined;\n\n if (spatialFilters) {\n queryParams.spatialFilters = spatialFilters;\n queryParams.spatialDataColumn = spatialDataColumn;\n queryParams.spatialDataType = spatialDataType;\n }\n\n if (spatialDataType !== 'geo') {\n queryParams.spatialFiltersMode = spatialFiltersMode;\n }\n\n const urlWithSearchParams =\n url + '?' + objectToURLSearchParams(queryParams).toString();\n const isGet = urlWithSearchParams.length <= REQUEST_GET_MAX_URL_LENGTH;\n if (isGet) {\n url = urlWithSearchParams;\n }\n return makeCall({\n url,\n accessToken: source.accessToken,\n opts: {\n ...opts,\n method: isGet ? 'GET' : 'POST',\n ...(!isGet && {body: JSON.stringify(queryParams)}),\n },\n });\n}\n\nfunction objectToURLSearchParams(object: Record<string, unknown>) {\n const params = new URLSearchParams();\n for (const key in object) {\n if (isPureObject(object[key])) {\n params.append(key, JSON.stringify(object[key]));\n } else if (Array.isArray(object[key])) {\n params.append(key, JSON.stringify(object[key]));\n } else if (object[key] === null) {\n params.append(key, 'null');\n } else if (object[key] !== undefined) {\n params.append(key, String(object[key] as unknown));\n }\n }\n return params;\n}\n","import {executeModel} from '../models/index.js';\nimport {\n CategoryRequestOptions,\n CategoryResponse,\n FeaturesRequestOptions,\n FeaturesResponse,\n FormulaRequestOptions,\n FormulaResponse,\n HistogramRequestOptions,\n HistogramResponse,\n RangeRequestOptions,\n RangeResponse,\n ScatterRequestOptions,\n ScatterResponse,\n TableRequestOptions,\n TableResponse,\n TimeSeriesRequestOptions,\n TimeSeriesResponse,\n} from './types.js';\nimport {normalizeObjectKeys} from '../utils.js';\nimport {DEFAULT_TILE_RESOLUTION} from '../constants-internal.js';\nimport {WidgetSource, WidgetSourceProps} from './widget-source.js';\n\nexport type WidgetRemoteSourceProps = WidgetSourceProps;\n\n/**\n * Source for Widget API requests.\n *\n * Abstract class. Use {@link WidgetQuerySource} or {@link WidgetTableSource}.\n */\nexport abstract class WidgetRemoteSource<\n Props extends WidgetRemoteSourceProps,\n> extends WidgetSource<Props> {\n async getCategories(\n options: CategoryRequestOptions\n ): Promise<CategoryResponse> {\n const {\n signal,\n filters = this.props.filters,\n filterOwner,\n spatialFilter,\n spatialFiltersMode,\n ...params\n } = options;\n const {column, operation, operationColumn} = params;\n\n type CategoriesModelResponse = {rows: {name: string; value: number}[]};\n\n return executeModel({\n model: 'category',\n source: {\n ...this.getModelSource(filters, filterOwner),\n spatialFiltersMode,\n spatialFilter,\n },\n params: {\n column,\n operation,\n operationColumn: operationColumn || column,\n },\n opts: {signal, headers: this.props.headers},\n }).then((res: CategoriesModelResponse) => normalizeObjectKeys(res.rows));\n }\n\n async getFeatures(\n options: FeaturesRequestOptions\n ): Promise<FeaturesResponse> {\n const {\n abortController,\n signal = abortController?.signal,\n filters = this.props.filters,\n filterOwner,\n spatialFilter,\n spatialFiltersMode,\n ...params\n } = options;\n const {columns, dataType, featureIds, z, limit, tileResolution} = params;\n\n type FeaturesModelResponse = {rows: Record<string, unknown>[]};\n\n return executeModel({\n model: 'pick',\n source: {\n ...this.getModelSource(filters, filterOwner),\n spatialFiltersMode,\n spatialFilter,\n },\n params: {\n columns,\n dataType,\n featureIds,\n z,\n limit: limit || 1000,\n tileResolution: tileResolution || DEFAULT_TILE_RESOLUTION,\n },\n opts: {signal, headers: this.props.headers},\n // Avoid `normalizeObjectKeys()`, which changes column names.\n }).then(({rows}: FeaturesModelResponse) => ({rows}));\n }\n\n async getFormula(options: FormulaRequestOptions): Promise<FormulaResponse> {\n const {\n abortController,\n signal = abortController?.signal,\n filters = this.props.filters,\n filterOwner,\n spatialFilter,\n spatialFiltersMode,\n operationExp,\n ...params\n } = options;\n const {column, operation} = params;\n\n type FormulaModelResponse = {rows: {value: number}[]};\n\n return executeModel({\n model: 'formula',\n source: {\n ...this.getModelSource(filters, filterOwner),\n spatialFiltersMode,\n spatialFilter,\n },\n params: {\n column: column ?? '*',\n operation: operation ?? 'count',\n operationExp,\n },\n opts: {signal, headers: this.props.headers},\n }).then((res: FormulaModelResponse) => normalizeObjectKeys(res.rows[0]));\n }\n\n async getHistogram(\n options: HistogramRequestOptions\n ): Promise<HistogramResponse> {\n const {\n abortController,\n signal = abortController?.signal,\n filters = this.props.filters,\n filterOwner,\n spatialFilter,\n spatialFiltersMode,\n ...params\n } = options;\n const {column, operation, ticks} = params;\n\n type HistogramModelResponse = {rows: {tick: number; value: number}[]};\n\n const data = await executeModel({\n model: 'histogram',\n source: {\n ...this.getModelSource(filters, filterOwner),\n spatialFiltersMode,\n spatialFilter,\n },\n params: {column, operation, ticks},\n opts: {signal, headers: this.props.headers},\n }).then((res: HistogramModelResponse) => normalizeObjectKeys(res.rows));\n\n if (data.length) {\n // Given N ticks the API returns up to N+1 bins, omitting any empty bins. Bins\n // include 1 bin below the lowest tick, N-1 between ticks, and 1 bin above the highest tick.\n const result = Array(ticks.length + 1).fill(0);\n data.forEach(\n ({tick, value}: {tick: number; value: number}) => (result[tick] = value)\n );\n return result;\n }\n\n return [];\n }\n\n async getRange(options: RangeRequestOptions): Promise<RangeResponse> {\n const {\n abortController,\n signal = abortController?.signal,\n filters = this.props.filters,\n filterOwner,\n spatialFilter,\n spatialFiltersMode,\n ...params\n } = options;\n const {column} = params;\n\n type RangeModelResponse = {rows: {min: number; max: number}[]};\n\n return executeModel({\n model: 'range',\n source: {\n ...this.getModelSource(filters, filterOwner),\n spatialFiltersMode,\n spatialFilter,\n },\n params: {column},\n opts: {signal, headers: this.props.headers},\n }).then((res: RangeModelResponse) => normalizeObjectKeys(res.rows[0]));\n }\n\n async getScatter(options: ScatterRequestOptions): Promise<ScatterResponse> {\n const {\n abortController,\n signal = abortController?.signal,\n filters = this.props.filters,\n filterOwner,\n spatialFilter,\n spatialFiltersMode,\n ...params\n } = options;\n const {xAxisColumn, xAxisJoinOperation, yAxisColumn, yAxisJoinOperation} =\n params;\n\n // Make sure this is sync with the same constant in cloud-native/maps-api\n const HARD_LIMIT = 500;\n\n type ScatterModelResponse = {rows: {x: number; y: number}[]};\n\n return executeModel({\n model: 'scatterplot',\n source: {\n ...this.getModelSource(filters, filterOwner),\n spatialFiltersMode,\n spatialFilter,\n },\n params: {\n xAxisColumn,\n xAxisJoinOperation,\n yAxisColumn,\n yAxisJoinOperation,\n limit: HARD_LIMIT,\n },\n opts: {signal, headers: this.props.headers},\n })\n .then((res: ScatterModelResponse) => normalizeObjectKeys(res.rows))\n .then((res) => res.map(({x, y}: {x: number; y: number}) => [x, y]));\n }\n\n async getTable(options: TableRequestOptions): Promise<TableResponse> {\n const {\n abortController,\n signal = abortController?.signal,\n filters = this.props.filters,\n filterOwner,\n spatialFilter,\n spatialFiltersMode,\n ...params\n } = options;\n const {columns, sortBy, sortDirection, offset = 0, limit = 10} = params;\n\n type TableModelResponse = {\n rows: Record<string, number | string>[];\n metadata: {total: number};\n };\n\n return executeModel({\n model: 'table',\n source: {\n ...this.getModelSource(filters, filterOwner),\n spatialFiltersMode,\n spatialFilter,\n },\n params: {\n column: columns,\n sortBy,\n sortDirection,\n limit,\n offset,\n },\n opts: {signal, headers: this.props.headers},\n }).then((res: TableModelResponse) => ({\n // Avoid `normalizeObjectKeys()`, which changes column names.\n rows: res.rows ?? (res as any).ROWS,\n totalCount: res.metadata?.total ?? (res as any).METADATA?.TOTAL,\n }));\n }\n\n async getTimeSeries(\n options: TimeSeriesRequestOptions\n ): Promise<TimeSeriesResponse> {\n const {\n abortController,\n signal = abortController?.signal,\n filters = this.props.filters,\n filterOwner,\n spatialFilter,\n spatialFiltersMode,\n ...params\n } = options;\n const {\n column,\n operationColumn,\n joinOperation,\n operation,\n stepSize,\n stepMultiplier,\n splitByCategory,\n splitByCategoryLimit,\n splitByCategoryValues,\n } = params;\n\n type TimeSeriesModelResponse = {\n rows: {name: string; value: number}[];\n metadata: {categories: string[]};\n };\n\n return executeModel({\n model: 'timeseries',\n source: {\n ...this.getModelSource(filters, filterOwner),\n spatialFiltersMode,\n spatialFilter,\n },\n params: {\n column,\n stepSize,\n stepMultiplier,\n operationColumn: operationColumn || column,\n joinOperation,\n operation,\n splitByCategory,\n splitByCategoryLimit,\n splitByCategoryValues,\n },\n opts: {signal, headers: this.props.headers},\n }).then((res: TimeSeriesModelResponse) => ({\n rows: normalizeObjectKeys(res.rows),\n categories: res.metadata?.categories,\n }));\n }\n}\n","import {\n H3QuerySourceOptions,\n QuadbinQuerySourceOptions,\n VectorQuerySourceOptions,\n} from '../sources/index.js';\nimport {\n WidgetRemoteSource,\n WidgetRemoteSourceProps,\n} from './widget-remote-source.js';\nimport {ModelSource} from '../models/model.js';\nimport {Filters} from '../types.js';\n\ntype LayerQuerySourceOptions =\n | Omit<VectorQuerySourceOptions, 'filters'>\n | Omit<H3QuerySourceOptions, 'filters'>\n | Omit<QuadbinQuerySourceOptions, 'filters'>;\n\nexport type WidgetQuerySourceResult = {widgetSource: WidgetQuerySource};\n\n/**\n * Source for Widget API requests on a data source defined by a SQL query.\n *\n * Generally not intended to be constructed directly. Instead, call\n * {@link vectorQuerySource}, {@link h3QuerySource}, or {@link quadbinQuerySource},\n * which can be shared with map layers. Sources contain a `widgetSource` property,\n * for use by widget implementations.\n *\n * Example:\n *\n * ```javascript\n * import { vectorQuerySource } from '@carto/api-client';\n *\n * const data = vectorQuerySource({\n * accessToken: '••••',\n * connectionName: 'carto_dw',\n * sqlQuery: 'SELECT * FROM carto-demo-data.demo_tables.retail_stores'\n * });\n *\n * const { widgetSource } = await data;\n * ```\n */\nexport class WidgetQuerySource extends WidgetRemoteSource<\n LayerQuerySourceOptions & WidgetRemoteSourceProps\n> {\n protected override getModelSource(\n filters: Filters | undefined,\n filterOwner?: string\n ): ModelSource {\n return {\n ...super._getModelSource(filters, filterOwner),\n type: 'query',\n data: this.props.sqlQuery,\n queryParameters: this.props.queryParameters,\n };\n }\n}\n","import {\n H3TableSourceOptions,\n QuadbinTableSourceOptions,\n VectorTableSourceOptions,\n} from '../sources/index.js';\nimport {\n WidgetRemoteSource,\n WidgetRemoteSourceProps,\n} from './widget-remote-source.js';\nimport {ModelSource} from '../models/model.js';\nimport {Filters} from '../types.js';\n\ntype LayerTableSourceOptions =\n | Omit<VectorTableSourceOptions, 'filters'>\n | Omit<H3TableSourceOptions, 'filters'>\n | Omit<QuadbinTableSourceOptions, 'filters'>;\n\nexport type WidgetTableSourceResult = {widgetSource: WidgetTableSource};\n\n/**\n * Source for Widget API requests on a data source defined as a table.\n *\n * Generally not intended to be constructed directly. Instead, call\n * {@link vectorTableSource}, {@link h3TableSource}, or {@link quadbinTableSource},\n * which can be shared with map layers. Sources contain a `widgetSource` property,\n * for use by widget implementations.\n *\n * Example:\n *\n * ```javascript\n * import { vectorTableSource } from '@carto/api-client';\n *\n * const data = vectorTableSource({\n * accessToken: '••••',\n * connectionName: 'carto_dw',\n * tableName: 'carto-demo-data.demo_tables.retail_stores'\n * });\n *\n * const { widgetSource } = await data;\n * ```\n */\nexport class WidgetTableSource extends WidgetRemoteSource<\n LayerTableSourceOptions & WidgetRemoteSourceProps\n> {\n protected override getModelSource(\n filters: Filters | undefined,\n filterOwner?: string\n ): ModelSource {\n return {\n ...super._getModelSource(filters, filterOwner),\n type: 'table',\n data: this.props.tableName,\n };\n }\n}\n","import {AggregationType} from '../types.js';\nimport {FeatureData} from '../types-internal.js';\n\n/** @privateRemarks Source: @carto/react-core */\nexport type AggregationFunction = (\n values: unknown[] | FeatureData[],\n keys?: string[] | string,\n joinOperation?: AggregationType\n) => number;\n\n/** @privateRemarks Source: @carto/react-core */\nexport const aggregationFunctions: Record<\n Exclude<AggregationType, 'custom'>,\n AggregationFunction\n> = {\n count: (values) => values.length,\n min: (...args) => applyAggregationFunction(min, ...args),\n max: (...args) => applyAggregationFunction(max, ...args),\n sum: (...args) => applyAggregationFunction(sum, ...args),\n avg: (...args) => applyAggregationFunction(avg, ...args),\n};\n\n/** @privateRemarks Source: @carto/react-core */\nexport function aggregate(\n feature: FeatureData,\n keys?: string[],\n operation?: AggregationType\n): unknown {\n if (!keys?.length) {\n throw new Error('Cannot aggregate a feature without having keys');\n } else if (keys.length === 1) {\n const value = feature[keys[0]];\n return isPotentiallyValidNumber(value) ? Number(value) : value;\n }\n\n const aggregationFn =\n aggregationFunctions[operation as Exclude<AggregationType, 'custom'>];\n\n if (!aggregationFn) {\n throw new Error(`${operation} isn't a valid aggregation function`);\n }\n\n return aggregationFn(\n keys.map((column) => {\n const value = feature[column];\n return isPotentiallyValidNumber(value) ? Number(value) : value;\n })\n );\n}\n\n/*\n * Forced casting to Number (just of non empty strings) allows to work-around\n * some specific situations, where a big numeric field is transformed into a string when generating the tileset(eg.PG)\n */\nfunction isPotentiallyValidNumber(value: unknown): boolean {\n return typeof value === 'string' && value.trim().length > 0;\n}\n\nconst applyAggregationFunction = (\n aggFn: AggregationFunction,\n values: unknown[] | FeatureData[],\n keys?: string[] | string,\n operation?: AggregationType\n) => {\n const normalizedKeys = normalizeKeys(keys);\n const elements =\n (normalizedKeys?.length || 0) <= 1\n ? filterFalsyElements(values as unknown[], normalizedKeys || [])\n : values;\n return aggFn(elements, keys, operation);\n};\n\nfunction filterFalsyElements(\n values: unknown[] | FeatureData[],\n keys: string[]\n) {\n const filterFn = (value: unknown) => value !== null && value !== undefined;\n\n if (!keys?.length) {\n return values.filter(filterFn);\n }\n\n return (values as FeatureData[]).filter((v) => filterFn(v[keys[0]]));\n}\n\n// Aggregation functions\nfunction avg(\n values: unknown[] | FeatureData[],\n keys?: string[] | string,\n joinOperation?: AggregationType\n): number {\n return sum(values, keys, joinOperation) / (values.length || 1);\n}\n\nfunction sum(\n values: unknown[] | FeatureData[],\n keys?: string[] | string,\n joinOperation?: AggregationType\n): number {\n const normalizedKeys = normalizeKeys(keys);\n\n if (normalizedKeys) {\n return (values as FeatureData[]).reduce(\n (a, b) => a + (aggregate(b, normalizedKeys, joinOperation) as number),\n 0\n );\n }\n\n return values.reduce((a: number, b: unknown) => a + (b as number), 0);\n}\n\nfunction min(\n values: unknown[] | FeatureData[],\n keys?: string[] | string,\n joinOperation?: AggregationType\n): number {\n const normalizedKeys = normalizeKeys(keys);\n if (normalizedKeys) {\n return (values as FeatureData[]).reduce(\n (a, b) =>\n Math.min(a, aggregate(b, normalizedKeys, joinOperation) as number),\n Infinity\n );\n }\n return Math.min(...(values as number[]));\n}\n\nfunction max(\n values: unknown[] | FeatureData[],\n keys?: string[] | string,\n joinOperation?: AggregationType\n): number {\n const normalizedKeys = normalizeKeys(keys);\n if (normalizedKeys) {\n return (values as FeatureData[]).reduce(\n (a, b) =>\n Math.max(a, aggregate(b, normalizedKeys, joinOperation) as number),\n -Infinity\n );\n }\n return Math.max(...(values as number[]));\n}\n\n// Aux\n\n// Keys can come as a string (one column) or a strings array (multiple column)\n// Use always an array to make the code easier\nfunction normalizeKeys(keys: unknown): string[] | undefined {\n return Array.isArray(keys)\n ? keys\n : typeof keys === 'string'\n ? [keys]\n : undefined;\n}\n","/***\n Copyright 2013 Teun Duynstee\n\n Licensed under the Apache License, Version 2.0 (the \"License\");\n you may not use this file except in compliance with the License.\n You may obtain a copy of the License at\n\n http://www.apache.org/licenses/LICENSE-2.0\n\n Unless required by applicable law or agreed to in writing, software\n distributed under the License is distributed on an \"AS IS\" BASIS,\n WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n See the License for the specific language governing permissions and\n limitations under the License.\n*/\nmodule.exports = (function() {\n\n function identity(v){return v;}\n\n function ignoreCase(v){return typeof(v)===\"string\" ? v.toLowerCase() : v;}\n\n function makeCompareFunction(f, opt){\n opt = typeof(opt)===\"object\" ? opt : {direction:opt};\n \n if(typeof(f)!=\"function\"){\n var prop = f;\n // make unary function\n f = function(v1){return !!v1[prop] ? v1[prop] : \"\";}\n }\n if(f.length === 1) {\n // f is a unary function mapping a single item to its sort score\n var uf = f;\n var preprocess = opt.ignoreCase?ignoreCase:identity;\n var cmp = opt.cmp || function(v1,v2) {return v1 < v2 ? -1 : v1 > v2 ? 1 : 0;}\n f = function(v1,v2) {return cmp(preprocess(uf(v1)), preprocess(uf(v2)));}\n }\n const descTokens = {\"-1\":'', desc:''};\n if(opt.direction in descTokens) return function(v1,v2){return -f(v1,v2)};\n return f;\n }\n\n /* adds a secondary compare function to the target function (`this` context)\n which is applied in case the first one returns 0 (equal)\n returns a new compare function, which has a `thenBy` method as well */\n function tb(func, opt) {\n /* should get value false for the first call. This can be done by calling the \n exported function, or the firstBy property on it (for es6 module compatibility)\n */\n var x = (typeof(this) == \"function\" && !this.firstBy) ? this : false;\n var y = makeCompareFunction(func, opt);\n var f = x ? function(a, b) {\n return x(a,b) || y(a,b);\n }\n : y;\n f.thenBy = tb;\n return f;\n }\n tb.firstBy = tb;\n return tb;\n})();\n","import {firstBy} from 'thenby';\nimport {SortDirection} from '../types.js';\nimport {FeatureData} from '../types-internal.js';\n\n// TODO(cleanup): Could this be simplified?\ntype SortColumns = string | string[] | object[];\n\ninterface SortOptions {\n sortBy?: SortColumns;\n sortByDirection?: SortDirection;\n sortByColumnType?: 'number' | 'string' | 'date';\n}\n\n/**\n * Apply sort structure to a collection of features\n * @param features\n * @param [sortOptions]\n * @param [sortOptions.sortBy] - One or more columns to sort by\n * @param [sortOptions.sortByDirection] - Direction by the columns will be sorted\n * @param [sortOptions.sortByColumnType] - Column type\n * @internal\n * @privateRemarks Source: @carto/react-core\n */\nexport function applySorting(\n features: FeatureData[],\n {\n sortBy,\n sortByDirection = 'asc',\n sortByColumnType = 'string',\n }: SortOptions = {}\n): FeatureData[] {\n // If sortBy is undefined, pass all features\n if (sortBy === undefined) {\n return features;\n }\n\n // sortOptions exists, but are bad formatted\n const isValidSortBy =\n (Array.isArray(sortBy) && sortBy.length) || // sortBy can be an array of columns\n typeof sortBy === 'string'; // or just one column\n\n if (!isValidSortBy) {\n throw new Error('Sorting options are bad formatted');\n }\n const sortFn = createSortFn({\n sortBy,\n sortByDirection,\n sortByColumnType: sortByColumnType || 'string',\n });\n return features.sort(sortFn);\n}\n\n// Aux\nfunction createSortFn({\n sortBy,\n sortByDirection,\n sortByColumnType,\n}: Required<SortOptions>) {\n const [firstSortOption, ...othersSortOptions] = normalizeSortByOptions({\n sortBy,\n sortByDirection,\n sortByColumnType,\n }) as Parameters<typeof firstBy>[];\n\n let sortFn = firstBy(...firstSortOption);\n for (const sortOptions of othersSortOptions) {\n sortFn = sortFn.thenBy(...sortOptions);\n }\n\n return sortFn;\n}\n\nfunction normalizeSortByOptions({\n sortBy,\n sortByDirection,\n sortByColumnType,\n}: Required<SortOptions>) {\n const numberFormat = sortByColumnType === 'number' && {\n cmp: (a: number, b: number) => a - b,\n };\n if (!Array.isArray(sortBy)) {\n sortBy = [sortBy];\n }\n return sortBy.map((sortByEl) => {\n // sortByEl is 'column'\n if (typeof sortByEl === 'string') {\n return [sortByEl, {direction: sortByDirection, ...numberFormat}];\n }\n\n if (Array.isArray(sortByEl)) {\n // sortBy is ['column']\n if (sortByEl[1] === undefined) {\n return [sortByEl, {direction: sortByDirection, ...numberFormat}];\n }\n\n // sortBy is ['column', { ... }]\n if (typeof sortByEl[1] === 'object') {\n const othersSortOptions = numberFormat\n ? {...numberFormat, ...sortByEl[1]}\n : sortByEl[1];\n return [\n sortByEl[0],\n {direction: sortByDirection, ...othersSortOptions},\n ];\n }\n }\n return sortByEl;\n });\n}\n","import {aggregationFunctions, aggregate} from './aggregation.js';\nimport {AggregationType} from '../types.js';\nimport {FeatureData} from '../types-internal.js';\n\n/** @privateRemarks Source: @carto/react-core */\nexport type GroupByFeature = {\n name: string;\n value: number;\n}[];\n\n/** @privateRemarks Source: @carto/react-core */\nexport function groupValuesByColumn({\n data,\n valuesColumns,\n joinOperation,\n keysColumn,\n operation,\n}: {\n data: FeatureData[];\n valuesColumns?: string[];\n joinOperation?: AggregationType;\n keysColumn: string;\n operation: AggregationType;\n}): GroupByFeature | null {\n if (Array.isArray(data) && data.length === 0) {\n return null;\n }\n const groups = data.reduce((accumulator, item) => {\n const group = item[keysColumn];\n\n const values = accumulator.get(group) || [];\n accumulator.set(group, values);\n\n const aggregatedValue = aggregate(item, valuesColumns, joinOperation);\n\n const isValid =\n (operation === 'count' ? true : aggregatedValue !== null) &&\n aggregatedValue !== undefined;\n\n if (isValid) {\n values.push(aggregatedValue);\n accumulator.set(group, values);\n }\n\n return accumulator;\n }, new Map()); // We use a map to be able to maintain the type in the key value\n\n const targetOperation =\n aggregationFunctions[operation as Exclude<AggregationType, 'custom'>];\n\n if (targetOperation) {\n return Array.from(groups).map(([name, value]) => ({\n name,\n value: targetOperation(value),\n }));\n }\n\n return [];\n}\n","/**\n * Returns midnight (local time) on the Monday preceeding a given date, in\n * milliseconds since the UNIX epoch.\n */\nexport function getMonday(date: number | Date): number {\n const dateCp = new Date(date);\n const day = dateCp.getDay();\n const diff = dateCp.getDate() - day + (day ? 1 : -6); // adjust when day is sunday\n dateCp.setDate(diff);\n dateCp.setHours(0, 0, 0, 0);\n return dateCp.getTime();\n}\n\n/**\n * Returns midnight (UTC) on the Monday preceeding a given date, in\n * milliseconds since the UNIX epoch.\n */\nexport function getUTCMonday(date: number | Date): number {\n const dateCp = new Date(date);\n const day = dateCp.getUTCDay();\n const diff = dateCp.getUTCDate() - day + (day ? 1 : -6); // adjust when day is sunday\n dateCp.setUTCDate(diff);\n return Date.UTC(\n dateCp.getUTCFullYear(),\n dateCp.getUTCMonth(),\n dateCp.getUTCDate()\n );\n}\n","import {AggregationType, GroupDateType} from '../types.js';\nimport {getUTCMonday} from '../utils/dateUtils.js';\nimport {aggregate, aggregationFunctions} from './aggregation.js';\nimport {GroupByFeature} from './groupBy.js';\n\nconst GROUP_KEY_FN_MAPPING: Record<GroupDateType, (date: Date) => number> = {\n year: (date: Date) => Date.UTC(date.getUTCFullYear()),\n month: (date: Date) => Date.UTC(date.getUTCFullYear(), date.getUTCMonth()),\n week: (date: Date) => getUTCMonday(date),\n day: (date: Date) =>\n Date.UTC(date.getUTCFullYear(), date.getUTCMonth(), date.getUTCDate()),\n hour: (date: Date) =>\n Date.UTC(\n date.getUTCFullYear(),\n date.getUTCMonth(),\n date.getUTCDate(),\n date.getUTCHours()\n ),\n minute: (date: Date) =>\n Date.UTC(\n date.getUTCFullYear(),\n date.getUTCMonth(),\n date.getUTCDate(),\n date.getUTCHours(),\n date.getUTCMinutes()\n ),\n second: (date: Date) =>\n Date.UTC(\n date.getUTCFullYear(),\n date.getUTCMonth(),\n date.getUTCDate(),\n date.getUTCHours(),\n date.getUTCMinutes(),\n date.getUTCSeconds()\n ),\n};\n\n/** @privateRemarks Source: @carto/react-core */\nexport function groupValuesByDateColumn({\n data,\n valuesColumns,\n joinOperation,\n keysColumn,\n groupType,\n operation,\n}: {\n data: Record<string, unknown>[];\n valuesColumns?: string[];\n joinOperation?: Exclude<AggregationType, 'custom'>;\n keysColumn: string;\n groupType: GroupDateType;\n operation?: Exclude<AggregationType, 'custom'>;\n}): GroupByFeature | null {\n if (Array.isArray(data) && data.length === 0) {\n return null;\n }\n\n const groupKeyFn = GROUP_KEY_FN_MAPPING[groupType];\n\n if (!groupKeyFn) {\n return null;\n }\n\n const groups = data.reduce((acc, item) => {\n const value = item[keysColumn];\n const formattedValue = new Date(value as number);\n const groupKey = groupKeyFn(formattedValue);\n\n if (!isNaN(groupKey)) {\n let groupedValues = acc.get(groupKey);\n if (!groupedValues) {\n groupedValues = [];\n acc.set(groupKey, groupedValues);\n }\n\n const aggregatedValue = aggregate(item, valuesColumns, joinOperation);\n\n const isValid = aggregatedValue !== null && aggregatedValue !== undefined;\n\n if (isValid) {\n groupedValues.push(aggregatedValue);\n acc.set(groupKey, groupedValues);\n }\n }\n\n return acc;\n }, new Map());\n\n const targetOperation =\n aggregationFunctions[operation as Exclude<AggregationType, 'custom'>];\n\n return [...groups.entries()]\n .map(([name, value]) => ({\n name,\n value: targetOperation(value),\n }))\n .sort((a, b) => a.name - b.name);\n}\n","import {aggregate, aggregationFunctions} from './aggregation.js';\nimport {AggregationType} from '../types.js';\nimport {FeatureData} from '../types-internal.js';\n\n/**\n * Histogram computation.\n * @privateRemarks Source: @carto/react-core\n */\nexport function histogram({\n data,\n valuesColumns,\n joinOperation,\n ticks,\n operation,\n}: {\n data: FeatureData[];\n valuesColumns?: string[];\n joinOperation?: Exclude<AggregationType, 'custom'>;\n ticks: number[];\n operation: Exclude<AggregationType, 'custom'>;\n}): number[] {\n if (Array.isArray(data) && data.length === 0) {\n return [];\n }\n\n const binsContainer = [Number.MIN_SAFE_INTEGER, ...ticks].map(\n (tick, index, arr) => ({\n bin: index,\n start: tick,\n end: index === arr.length - 1 ? Number.MAX_SAFE_INTEGER : arr[index + 1],\n values: [] as number[],\n })\n );\n\n data.forEach((feature) => {\n const featureValue = aggregate(\n feature,\n valuesColumns,\n joinOperation\n ) as number;\n\n const isValid = featureValue !== null && featureValue !== undefined;\n\n if (!isValid) {\n return;\n }\n\n const binContainer = binsContainer.find(\n (bin) => bin.start <= featureValue && bin.end > featureValue\n );\n\n if (!binContainer) {\n return;\n }\n\n binContainer.values.push(featureValue);\n });\n\n const targetOperation = aggregationFunctions[operation];\n const transformedBins = binsContainer.map(\n (binContainer) => binContainer.values\n );\n return transformedBins.map((values) =>\n values.length ? targetOperation(values) : 0\n );\n}\n","import {aggregate} from './aggregation.js';\nimport {FeatureData} from '../types-internal.js';\nimport {AggregationType} from '../types.js';\n\nexport type ScatterPlotFeature = [number, number][];\n\n/**\n * Filters invalid features and formats data.\n * @privateRemarks Source: @carto/react-core\n */\nexport function scatterPlot({\n data,\n xAxisColumns,\n xAxisJoinOperation,\n yAxisColumns,\n yAxisJoinOperation,\n}: {\n data: FeatureData[];\n xAxisColumns: string[];\n xAxisJoinOperation?: AggregationType;\n yAxisColumns: string[];\n yAxisJoinOperation?: AggregationType;\n}): ScatterPlotFeature {\n return data.reduce(\n (acc, feature) => {\n const xValue = aggregate(\n feature,\n xAxisColumns,\n xAxisJoinOperation\n ) as number;\n\n const xIsValid = xValue !== null && xValue !== undefined;\n\n const yValue = aggregate(\n feature,\n yAxisColumns,\n yAxisJoinOperation\n ) as number;\n\n const yIsValid = yValue !== null && yValue !== undefined;\n\n if (xIsValid && yIsValid) {\n acc.push([xValue, yValue]);\n }\n\n return acc;\n },\n [] as [number, number][]\n );\n}\n","/* eslint-disable @typescript-eslint/require-await */\nimport {TilesetSourceOptions} from '../sources/index.js';\nimport type {ModelSource} from '../models/index.js';\nimport {\n CategoryRequestOptions,\n CategoryResponse,\n FeaturesResponse,\n FormulaRequestOptions,\n FormulaResponse,\n HistogramRequestOptions,\n HistogramResponse,\n RangeRequestOptions,\n RangeResponse,\n ScatterRequestOptions,\n ScatterResponse,\n TableRequestOptions,\n TableResponse,\n TimeSeriesRequestOptions,\n TimeSeriesResponse,\n} from './types.js';\nimport {InvalidColumnError, assert, getApplicableFilters} from '../utils.js';\nimport {TileFormat} from '../constants.js';\nimport {Filter, Filters, SpatialFilter, Tile} from '../types.js';\nimport {\n TileFeatureExtractOptions,\n applyFilters,\n geojsonFeatures,\n tileFeatures,\n} from '../filters/index.js';\nimport {\n aggregationFunctions,\n applySorting,\n groupValuesByColumn,\n groupValuesByDateColumn,\n histogram,\n scatterPlot,\n} from '../operations/index.js';\nimport {FeatureData} from '../types-internal.js';\nimport {FeatureCollection} from 'geojson';\nimport {SpatialDataType} from '../sources/types.js';\nimport {WidgetSource, WidgetSourceProps} from './widget-source.js';\nimport {booleanEqual} from '@turf/boolean-equal';\n\n// TODO(cleanup): Parameter defaults in source functions and widget API calls are\n// currently duplicated and possibly inconsistent. Consider consolidating and\n// operating on Required<T> objects. See:\n// https://github.com/CartoDB/carto-api-client/issues/39\n\nexport type WidgetTilesetSourceProps = WidgetSourceProps &\n Omit<TilesetSourceOptions, 'filters'> & {\n tileFormat: TileFormat;\n spatialDataType: SpatialDataType;\n };\n\nexport type WidgetTilesetSourceResult = {widgetSource: WidgetTilesetSource};\n\n/**\n * Source for Widget API requests on a data source defined by a tileset.\n *\n * Generally not intended to be constructed directly. Instead, call\n * {@link vectorTilesetSource}, {@link h3TilesetSource}, or {@link quadbinTilesetSource},\n * which can be shared with map layers. Sources contain a `widgetSource`\n * property, for use by widget implementations.\n *\n * Example:\n *\n * ```javascript\n * import { vectorTilesetSource } from '@carto/api-client';\n *\n * const data = vectorTilesetSource({\n * accessToken: '••••',\n * connectionName: 'carto_dw',\n * tableName: 'carto-demo-data.demo_rasters.my_tileset_source'\n * });\n *\n * const { widgetSource } = await data;\n * ```\n */\nexport class WidgetTilesetSource extends WidgetSource<WidgetTilesetSourceProps> {\n private _tiles: Tile[] = [];\n private _features: FeatureData[] = [];\n private _tileFeatureExtractOptions: TileFeatureExtractOptions = {};\n private _tileFeatureExtractPreviousInputs: {spatialFilter?: SpatialFilter} =\n {};\n\n protected override getModelSource(\n filters: Filters | undefined,\n filterOwner: string\n ): ModelSource {\n return {\n ...super._getModelSource(filters, filterOwner),\n type: 'tileset',\n data: this.props.tableName,\n };\n }\n\n /**\n * Loads features as a list of tiles (typically provided by deck.gl).\n * After tiles are loaded, {@link extractTileFeatures} must be called\n * before computing statistics on the tiles.\n */\n loadTiles(tiles: unknown[]) {\n this._tiles = tiles as Tile[];\n this._features.length = 0;\n }\n\n /** Configures options used to extract features from tiles. */\n setTileFeatureExtractOptions(options: TileFeatureExtractOptions) {\n this._tileFeatureExtractOptions = options;\n this._features.length = 0;\n }\n\n protected _extractTileFeatures(spatialFilter: SpatialFilter) {\n // When spatial filter has not changed, don't redo extraction. If tiles or\n // tile extract options change, features will have been cleared already.\n const prevInputs = this._tileFeatureExtractPreviousInputs;\n if (\n this._features.length &&\n prevInputs.spatialFilter &&\n booleanEqual(prevInputs.spatialFilter, spatialFilter)\n ) {\n return;\n }\n\n this._features = tileFeatures({\n tiles: this._tiles,\n tileFormat: this.props.tileFormat,\n ...this._tileFeatureExtractOptions,\n\n spatialFilter,\n spatialDataColumn: this.props.spatialDataColumn,\n spatialDataType: this.props.spatialDataType,\n });\n\n prevInputs.spatialFilter = spatialFilter;\n }\n\n /**\n * Loads features as GeoJSON (used for testing).\n * @experimental\n * @internal Not for public use. Spatial filters in other method calls will be ignored.\n */\n loadGeoJSON({\n geojson,\n spatialFilter,\n }: {\n geojson: FeatureCollection;\n spatialFilter: SpatialFilter;\n }) {\n this._features = geojsonFeatures({\n geojson,\n spatialFilter,\n ...this._tileFeatureExtractOptions,\n });\n this._tileFeatureExtractPreviousInputs.spatialFilter = spatialFilter;\n }\n\n override async getFeatures(): Promise<FeaturesResponse> {\n throw new Error('getFeatures not supported for tilesets');\n }\n\n async getFormula({\n column = '*',\n operation = 'count',\n joinOperation,\n filters,\n filterOwner,\n spatialFilter,\n }: FormulaRequestOptions): Promise<FormulaResponse> {\n if (operation === 'custom') {\n throw new Error('Custom aggregation not supported for tilesets');\n }\n\n // Column is required except when operation is 'count'.\n if ((column && column !== '*') || operation !== 'count') {\n assertColumn(this._features, column);\n }\n\n const filteredFeatures = this._getFilteredFeatures(\n spatialFilter,\n filters,\n filterOwner\n );\n\n if (filteredFeatures.length === 0 && operation !== 'count') {\n return {value: null};\n }\n\n const targetOperation = aggregationFunctions[operation];\n return {\n value: targetOperation(filteredFeatures, column, joinOperation),\n };\n }\n\n override async getHistogram({\n operation = 'count',\n ticks,\n column,\n joinOperation,\n filters,\n filterOwner,\n spatialFilter,\n }: HistogramRequestOptions): Promise<HistogramResponse> {\n const filteredFeatures = this._getFilteredFeatures(\n spatialFilter,\n filters,\n filterOwner\n );\n\n assertColumn(this._features, column);\n\n if (!this._features.length) {\n return [];\n }\n\n return histogram({\n data: filteredFeatures,\n valuesColumns: normalizeColumns(column),\n joinOperation,\n ticks,\n operation,\n });\n }\n\n override async getCategories({\n column,\n operation = 'count',\n operationColumn,\n joinOperation,\n filters,\n filterOwner,\n spatialFilter,\n }: CategoryRequestOptions): Promise<CategoryResponse> {\n const filteredFeatures = this._getFilteredFeatures(\n spatialFilter,\n filters,\n filterOwner\n );\n\n if (!filteredFeatures.length) {\n return [];\n }\n\n assertColumn(this._features, column, operationColumn as string);\n\n const groups = groupValuesByColumn({\n data: filteredFeatures,\n valuesColumns: normalizeColumns(operationColumn || column),\n joinOperation,\n keysColumn: column,\n operation,\n });\n\n return groups || [];\n }\n\n override async getScatter({\n xAxisColumn,\n yAxisColumn,\n xAxisJoinOperation,\n yAxisJoinOperation,\n filters,\n filterOwner,\n spatialFilter,\n }: ScatterRequestOptions): Promise<ScatterResponse> {\n const filteredFeatures = this._getFilteredFeatures(\n spatialFilter,\n filters,\n filterOwner\n );\n\n if (!filteredFeatures.length) {\n return [];\n }\n\n assertColumn(this._features, xAxisColumn, yAxisColumn);\n\n return scatterPlot({\n data: filteredFeatures,\n xAxisColumns: normalizeColumns(xAxisColumn),\n xAxisJoinOperation,\n yAxisColumns: normalizeColumns(yAxisColumn),\n yAxisJoinOperation,\n });\n }\n\n override async getTable({\n columns,\n searchFilterColumn,\n searchFilterText,\n sortBy,\n sortDirection,\n sortByColumnType,\n offset = 0,\n limit = 10,\n filters,\n filterOwner,\n spatialFilter,\n }: TableRequestOptions): Promise<TableResponse> {\n // Filter.\n let filteredFeatures = this._getFilteredFeatures(\n spatialFilter,\n filters,\n filterOwner\n );\n\n if (!filteredFeatures.length) {\n return {rows: [], totalCount: 0};\n }\n\n // Search.\n if (searchFilterColumn && searchFilterText) {\n filteredFeatures = filteredFeatures.filter(\n (row) =>\n row[searchFilterColumn] &&\n String(row[searchFilterColumn] as unknown)\n .toLowerCase()\n .includes(String(searchFilterText).toLowerCase())\n );\n }\n\n // Sort.\n let rows = applySorting(filteredFeatures, {\n sortBy,\n sortByDirection: sortDirection,\n sortByColumnType,\n });\n const totalCount = rows.length;\n\n // Offset and limit.\n rows = rows.slice(\n Math.min(offset, totalCount),\n Math.min(offset + limit, totalCount)\n );\n\n // Select columns.\n rows = rows.map((srcRow: FeatureData) => {\n const dstRow: FeatureData = {};\n for (const column of columns) {\n dstRow[column] = srcRow[column];\n }\n return dstRow;\n });\n\n return {rows, totalCount} as TableResponse;\n }\n\n override async getTimeSeries({\n column,\n stepSize,\n operation,\n operationColumn,\n joinOperation,\n filters,\n filterOwner,\n spatialFilter,\n }: TimeSeriesRequestOptions): Promise<TimeSeriesResponse> {\n const filteredFeatures = this._getFilteredFeatures(\n spatialFilter,\n filters,\n filterOwner\n );\n\n if (!filteredFeatures.length) {\n return {rows: []};\n }\n\n assertColumn(this._features, column, operationColumn as string);\n\n const rows =\n groupValuesByDateColumn({\n data: filteredFeatures,\n valuesColumns: normalizeColumns(operationColumn || column),\n keysColumn: column,\n groupType: stepSize,\n operation,\n joinOperation,\n }) || [];\n\n return {rows};\n }\n\n override async getRange({\n column,\n filters,\n filterOwner,\n spatialFilter,\n }: RangeRequestOptions): Promise<RangeResponse> {\n assertColumn(this._features, column);\n\n const filteredFeatures = this._getFilteredFeatures(\n spatialFilter,\n filters,\n filterOwner\n );\n\n if (!this._features.length) {\n // TODO: Is this the only nullable response in the Widgets API? If so,\n // can we do something more consistent?\n return null;\n }\n\n return {\n min: aggregationFunctions.min(filteredFeatures, column),\n max: aggregationFunctions.max(filteredFeatures, column),\n };\n }\n\n /****************************************************************************\n * INTERNAL\n */\n\n private _getFilteredFeatures(\n spatialFilter?: SpatialFilter,\n filters?: Record<string, Filter>,\n filterOwner?: string\n ): FeatureData[] {\n assert(spatialFilter, 'spatialFilter required for tilesets');\n this._extractTileFeatures(spatialFilter);\n return applyFilters(\n this._features,\n getApplicableFilters(filterOwner, filters || this.props.filters),\n this.props.filtersLogicalOperator || 'and'\n );\n }\n}\n\nfunction assertColumn(\n features: FeatureData[],\n ...columnArgs: string[] | string[][]\n) {\n // TODO(cleanup): Can drop support for multiple column shapes here?\n\n // Due to the multiple column shape, we normalise it as an array with normalizeColumns\n const columns = Array.from(new Set(columnArgs.map(normalizeColumns).flat()));\n\n const featureKeys = Object.keys(features[0]);\n\n const invalidColumns = columns.filter(\n (column) => !featureKeys.includes(column)\n );\n\n if (invalidColumns.length) {\n throw new InvalidColumnError(\n `Missing column(s): ${invalidColumns.join(', ')}`\n );\n }\n}\n\nfunction normalizeColumns(columns: string | string[]): string[] {\n return Array.isArray(columns)\n ? columns\n : typeof columns === 'string'\n ? [columns]\n : [];\n}\n","// deck.gl\n// SPDX-License-Identifier: MIT\n// Copyright (c) vis.gl contributors\n\nimport {DEFAULT_AGGREGATION_RES_LEVEL_H3} from '../constants-internal.js';\nimport {\n WidgetQuerySource,\n WidgetQuerySourceResult,\n} from '../widget-sources/index.js';\nimport {baseSource} from './base-source.js';\nimport type {\n AggregationOptions,\n FilterOptions,\n QuerySourceOptions,\n SourceOptions,\n SpatialDataType,\n TilejsonResult,\n} from './types.js';\n\nexport type H3QuerySourceOptions = SourceOptions &\n QuerySourceOptions &\n AggregationOptions &\n FilterOptions;\n\ntype UrlParameters = {\n aggregationExp: string;\n aggregationResLevel?: string;\n spatialDataType: SpatialDataType;\n spatialDataColumn?: string;\n q: string;\n queryParameters?: Record<string, unknown> | unknown[];\n filters?: Record<string, unknown>;\n};\n\nexport type H3QuerySourceResponse = TilejsonResult & WidgetQuerySourceResult;\n\nexport const h3QuerySource = async function (\n options: H3QuerySourceOptions\n): Promise<H3QuerySourceResponse> {\n const {\n aggregationExp,\n aggregationResLevel = DEFAULT_AGGREGATION_RES_LEVEL_H3,\n sqlQuery,\n spatialDataColumn = 'h3',\n queryParameters,\n filters,\n } = options;\n\n const spatialDataType = 'h3';\n\n const urlParameters: UrlParameters = {\n aggregationExp,\n spatialDataColumn,\n spatialDataType,\n q: sqlQuery,\n };\n\n if (aggregationResLevel) {\n urlParameters.aggregationResLevel = String(aggregationResLevel);\n }\n if (queryParameters) {\n urlParameters.queryParameters = queryParameters;\n }\n if (filters) {\n urlParameters.filters = filters;\n }\n\n return baseSource<UrlParameters>('query', options, urlParameters).then(\n (result) => ({\n ...(result as TilejsonResult),\n widgetSource: new WidgetQuerySource({\n ...options,\n // NOTE: Parameters with default values above must be explicitly passed here.\n spatialDataColumn,\n spatialDataType,\n }),\n })\n );\n};\n","// deck.gl\n// SPDX-License-Identifier: MIT\n// Copyright (c) vis.gl contributors\n\nimport {DEFAULT_AGGREGATION_RES_LEVEL_H3} from '../constants-internal.js';\nimport {\n WidgetTableSource,\n WidgetTableSourceResult,\n} from '../widget-sources/index.js';\nimport {baseSource} from './base-source.js';\nimport type {\n AggregationOptions,\n FilterOptions,\n SourceOptions,\n SpatialDataType,\n TableSourceOptions,\n TilejsonResult,\n} from './types.js';\n\nexport type H3TableSourceOptions = SourceOptions &\n TableSourceOptions &\n AggregationOptions &\n FilterOptions;\n\ntype UrlParameters = {\n aggregationExp: string;\n aggregationResLevel?: string;\n spatialDataType: SpatialDataType;\n spatialDataColumn?: string;\n name: string;\n filters?: Record<string, unknown>;\n};\n\nexport type H3TableSourceResponse = TilejsonResult & WidgetTableSourceResult;\n\nexport const h3TableSource = async function (\n options: H3TableSourceOptions\n): Promise<H3TableSourceResponse> {\n const {\n aggregationExp,\n aggregationResLevel = DEFAULT_AGGREGATION_RES_LEVEL_H3,\n spatialDataColumn = 'h3',\n tableName,\n filters,\n } = options;\n\n const spatialDataType = 'h3';\n\n const urlParameters: UrlParameters = {\n aggregationExp,\n name: tableName,\n spatialDataColumn,\n spatialDataType,\n };\n\n if (aggregationResLevel) {\n urlParameters.aggregationResLevel = String(aggregationResLevel);\n }\n if (filters) {\n urlParameters.filters = filters;\n }\n\n return baseSource<UrlParameters>('table', options, urlParameters).then(\n (result) => ({\n ...(result as TilejsonResult),\n widgetSource: new WidgetTableSource({\n ...options,\n // NOTE: Parameters with default values above must be explicitly passed here.\n spatialDataColumn,\n spatialDataType,\n }),\n })\n );\n};\n","// deck.gl\n// SPDX-License-Identifier: MIT\n// Copyright (c) vis.gl contributors\n\nimport {baseSource} from './base-source.js';\nimport type {\n SourceOptions,\n TilejsonResult,\n TilesetSourceOptions,\n} from './types.js';\n\nexport type H3TilesetSourceOptions = SourceOptions & TilesetSourceOptions;\ntype UrlParameters = {name: string};\n\nexport type H3TilesetSourceResponse = TilejsonResult;\n\nexport const h3TilesetSource = async function (\n options: H3TilesetSourceOptions\n): Promise<H3TilesetSourceResponse> {\n const {tableName} = options;\n const urlParameters: UrlParameters = {name: tableName};\n\n return baseSource<UrlParameters>(\n 'tileset',\n options,\n urlParameters\n ) as Promise<H3TilesetSourceResponse>;\n};\n","// deck.gl\n// SPDX-License-Identifier: MIT\n// Copyright (c) vis.gl contributors\n\nimport {baseSource} from './base-source.js';\nimport type {\n FilterOptions,\n SourceOptions,\n TilejsonResult,\n TilesetSourceOptions,\n} from './types.js';\n\nexport type RasterSourceOptions = SourceOptions &\n TilesetSourceOptions &\n FilterOptions;\ntype UrlParameters = {\n name: string;\n filters?: Record<string, unknown>;\n};\n\nexport type RasterSourceResponse = TilejsonResult;\n\nexport const rasterSource = async function (\n options: RasterSourceOptions\n): Promise<RasterSourceResponse> {\n const {tableName, filters} = options;\n const urlParameters: UrlParameters = {name: tableName};\n if (filters) {\n urlParameters.filters = filters;\n }\n\n return baseSource<UrlParameters>(\n 'raster',\n options,\n urlParameters\n ) as Promise<RasterSourceResponse>;\n};\n","// deck.gl\n// SPDX-License-Identifier: MIT\n// Copyright (c) vis.gl contributors\n\nimport {DEFAULT_AGGREGATION_RES_LEVEL_QUADBIN} from '../constants-internal.js';\nimport {\n WidgetQuerySource,\n WidgetQuerySourceResult,\n} from '../widget-sources/index.js';\nimport {baseSource} from './base-source.js';\nimport type {\n AggregationOptions,\n FilterOptions,\n QuerySourceOptions,\n SourceOptions,\n SpatialDataType,\n TilejsonResult,\n} from './types.js';\n\nexport type QuadbinQuerySourceOptions = SourceOptions &\n QuerySourceOptions &\n AggregationOptions &\n FilterOptions;\n\ntype UrlParameters = {\n aggregationExp: string;\n aggregationResLevel?: string;\n spatialDataType: SpatialDataType;\n spatialDataColumn?: string;\n q: string;\n queryParameters?: Record<string, unknown> | unknown[];\n filters?: Record<string, unknown>;\n};\n\nexport type QuadbinQuerySourceResponse = TilejsonResult &\n WidgetQuerySourceResult;\n\nexport const quadbinQuerySource = async function (\n options: QuadbinQuerySourceOptions\n): Promise<QuadbinQuerySourceResponse> {\n const {\n aggregationExp,\n aggregationResLevel = DEFAULT_AGGREGATION_RES_LEVEL_QUADBIN,\n sqlQuery,\n spatialDataColumn = 'quadbin',\n queryParameters,\n filters,\n } = options;\n\n const spatialDataType = 'quadbin';\n\n const urlParameters: UrlParameters = {\n aggregationExp,\n q: sqlQuery,\n spatialDataColumn,\n spatialDataType,\n };\n\n if (aggregationResLevel) {\n urlParameters.aggregationResLevel = String(aggregationResLevel);\n }\n if (queryParameters) {\n urlParameters.queryParameters = queryParameters;\n }\n if (filters) {\n urlParameters.filters = filters;\n }\n\n return baseSource<UrlParameters>('query', options, urlParameters).then(\n (result) => ({\n ...(result as TilejsonResult),\n widgetSource: new WidgetQuerySource({\n ...options,\n // NOTE: Parameters with default values above must be explicitly passed here.\n spatialDataColumn,\n spatialDataType,\n }),\n })\n );\n};\n","// deck.gl\n// SPDX-License-Identifier: MIT\n// Copyright (c) vis.gl contributors\n\nimport {DEFAULT_AGGREGATION_RES_LEVEL_QUADBIN} from '../constants-internal.js';\nimport {\n WidgetTableSource,\n WidgetTableSourceResult,\n} from '../widget-sources/index.js';\nimport {baseSource} from './base-source.js';\nimport type {\n AggregationOptions,\n FilterOptions,\n SourceOptions,\n SpatialDataType,\n TableSourceOptions,\n TilejsonResult,\n} from './types.js';\n\nexport type QuadbinTableSourceOptions = SourceOptions &\n TableSourceOptions &\n AggregationOptions &\n FilterOptions;\n\ntype UrlParameters = {\n aggregationExp: string;\n aggregationResLevel?: string;\n spatialDataType: SpatialDataType;\n spatialDataColumn?: string;\n name: string;\n filters?: Record<string, unknown>;\n};\n\nexport type QuadbinTableSourceResponse = TilejsonResult &\n WidgetTableSourceResult;\n\nexport const quadbinTableSource = async function (\n options: QuadbinTableSourceOptions\n): Promise<QuadbinTableSourceResponse> {\n const {\n aggregationExp,\n aggregationResLevel = DEFAULT_AGGREGATION_RES_LEVEL_QUADBIN,\n spatialDataColumn = 'quadbin',\n tableName,\n filters,\n } = options;\n\n const spatialDataType = 'quadbin';\n\n const urlParameters: UrlParameters = {\n aggregationExp,\n name: tableName,\n spatialDataColumn,\n spatialDataType,\n };\n\n if (aggregationResLevel) {\n urlParameters.aggregationResLevel = String(aggregationResLevel);\n }\n if (filters) {\n urlParameters.filters = filters;\n }\n\n return baseSource<UrlParameters>('table', options, urlParameters).then(\n (result) => ({\n ...(result as TilejsonResult),\n widgetSource: new WidgetTableSource({\n ...options,\n // NOTE: Parameters with default values above must be explicitly passed here.\n spatialDataColumn,\n spatialDataType,\n }),\n })\n );\n};\n","// deck.gl\n// SPDX-License-Identifier: MIT\n// Copyright (c) vis.gl contributors\n\nimport {baseSource} from './base-source.js';\nimport type {\n SourceOptions,\n TilejsonResult,\n TilesetSourceOptions,\n} from './types.js';\n\nexport type QuadbinTilesetSourceOptions = SourceOptions & TilesetSourceOptions;\ntype UrlParameters = {name: string};\n\nexport type QuadbinTilesetSourceResponse = TilejsonResult;\n\nexport const quadbinTilesetSource = async function (\n options: QuadbinTilesetSourceOptions\n): Promise<QuadbinTilesetSourceResponse> {\n const {tableName} = options;\n const urlParameters: UrlParameters = {name: tableName};\n\n return baseSource<UrlParameters>(\n 'tileset',\n options,\n urlParameters\n ) as Promise<QuadbinTilesetSourceResponse>;\n};\n","// deck.gl\n// SPDX-License-Identifier: MIT\n// Copyright (c) vis.gl contributors\n\nimport {\n DEFAULT_GEO_COLUMN,\n DEFAULT_TILE_RESOLUTION,\n} from '../constants-internal.js';\nimport {\n WidgetQuerySource,\n WidgetQuerySourceResult,\n} from '../widget-sources/index.js';\nimport {baseSource} from './base-source.js';\nimport type {\n FilterOptions,\n SourceOptions,\n QuerySourceOptions,\n SpatialDataType,\n TilejsonResult,\n ColumnsOption,\n} from './types.js';\n\nexport type VectorQuerySourceOptions = SourceOptions &\n QuerySourceOptions &\n FilterOptions &\n ColumnsOption;\n\ntype UrlParameters = {\n columns?: string;\n filters?: Record<string, unknown>;\n spatialDataType: SpatialDataType;\n spatialDataColumn?: string;\n tileResolution?: string;\n q: string;\n queryParameters?: Record<string, unknown> | unknown[];\n aggregationExp?: string;\n};\n\nexport type VectorQuerySourceResponse = TilejsonResult &\n WidgetQuerySourceResult;\n\nexport const vectorQuerySource = async function (\n options: VectorQuerySourceOptions\n): Promise<VectorQuerySourceResponse> {\n const {\n columns,\n filters,\n spatialDataColumn = DEFAULT_GEO_COLUMN,\n sqlQuery,\n tileResolution = DEFAULT_TILE_RESOLUTION,\n queryParameters,\n aggregationExp,\n } = options;\n\n const spatialDataType = 'geo';\n\n const urlParameters: UrlParameters = {\n spatialDataColumn,\n spatialDataType,\n tileResolution: tileResolution.toString(),\n q: sqlQuery,\n };\n\n if (columns) {\n urlParameters.columns = columns.join(',');\n }\n if (filters) {\n urlParameters.filters = filters;\n }\n if (queryParameters) {\n urlParameters.queryParameters = queryParameters;\n }\n if (aggregationExp) {\n urlParameters.aggregationExp = aggregationExp;\n }\n\n return baseSource<UrlParameters>('query', options, urlParameters).then(\n (result) => ({\n ...(result as TilejsonResult),\n widgetSource: new WidgetQuerySource({\n ...options,\n // NOTE: Parameters with default values above must be explicitly passed here.\n spatialDataColumn,\n spatialDataType,\n tileResolution,\n }),\n })\n );\n};\n","// deck.gl\n// SPDX-License-Identifier: MIT\n// Copyright (c) vis.gl contributors\n\nimport {\n DEFAULT_GEO_COLUMN,\n DEFAULT_TILE_RESOLUTION,\n} from '../constants-internal.js';\nimport {\n WidgetTableSource,\n WidgetTableSourceResult,\n} from '../widget-sources/index.js';\nimport {baseSource} from './base-source.js';\nimport type {\n FilterOptions,\n ColumnsOption,\n SourceOptions,\n SpatialDataType,\n TableSourceOptions,\n TilejsonResult,\n} from './types.js';\n\nexport type VectorTableSourceOptions = SourceOptions &\n TableSourceOptions &\n FilterOptions &\n ColumnsOption;\n\ntype UrlParameters = {\n columns?: string;\n filters?: Record<string, unknown>;\n spatialDataType: SpatialDataType;\n spatialDataColumn?: string;\n tileResolution?: string;\n name: string;\n aggregationExp?: string;\n};\n\nexport type VectorTableSourceResponse = TilejsonResult &\n WidgetTableSourceResult;\n\nexport const vectorTableSource = async function (\n options: VectorTableSourceOptions\n): Promise<VectorTableSourceResponse> {\n const {\n columns,\n filters,\n spatialDataColumn = DEFAULT_GEO_COLUMN,\n tableName,\n tileResolution = DEFAULT_TILE_RESOLUTION,\n aggregationExp,\n } = options;\n\n const spatialDataType = 'geo';\n\n const urlParameters: UrlParameters = {\n name: tableName,\n spatialDataColumn,\n spatialDataType,\n tileResolution: tileResolution.toString(),\n };\n\n if (columns) {\n urlParameters.columns = columns.join(',');\n }\n if (filters) {\n urlParameters.filters = filters;\n }\n if (aggregationExp) {\n urlParameters.aggregationExp = aggregationExp;\n }\n\n return baseSource<UrlParameters>('table', options, urlParameters).then(\n (result) => ({\n ...(result as TilejsonResult),\n widgetSource: new WidgetTableSource({\n ...options,\n // NOTE: Parameters with default values above must be explicitly passed here.\n spatialDataColumn,\n spatialDataType,\n tileResolution,\n }),\n })\n );\n};\n","// deck.gl\n// SPDX-License-Identifier: MIT\n// Copyright (c) vis.gl contributors\n\nimport {baseSource} from './base-source.js';\nimport type {\n SourceOptions,\n TilesetSourceOptions,\n TilejsonResult,\n} from './types.js';\n\nexport type VectorTilesetSourceOptions = SourceOptions & TilesetSourceOptions;\ntype UrlParameters = {name: string};\n\nexport type VectorTilesetSourceResponse = TilejsonResult;\n\nexport const vectorTilesetSource = async function (\n options: VectorTilesetSourceOptions\n): Promise<VectorTilesetSourceResponse> {\n const {tableName} = options;\n const urlParameters: UrlParameters = {name: tableName};\n\n return baseSource<UrlParameters>(\n 'tileset',\n options,\n urlParameters\n ) as Promise<VectorTilesetSourceResponse>;\n};\n","// deck.gl\n// SPDX-License-Identifier: MIT\n// Copyright (c) vis.gl contributors\n\nimport {SOURCE_DEFAULTS} from '../sources/index.js';\nimport type {\n SourceOptions,\n QuerySourceOptions,\n QueryResult,\n} from '../sources/types.js';\nimport {buildQueryUrl} from './endpoints.js';\nimport {requestWithParameters} from './request-with-parameters.js';\nimport {APIErrorContext} from './carto-api-error.js';\nimport {getClient} from '../client.js';\n\nexport type QueryOptions = SourceOptions & QuerySourceOptions;\ntype UrlParameters = {q: string; queryParameters?: string};\n\nexport const query = async function (\n options: QueryOptions\n): Promise<QueryResult> {\n const {\n apiBaseUrl = SOURCE_DEFAULTS.apiBaseUrl,\n maxLengthURL = SOURCE_DEFAULTS.maxLengthURL,\n clientId = getClient(),\n localCache,\n connectionName,\n sqlQuery,\n queryParameters,\n } = options;\n const urlParameters: UrlParameters = {q: sqlQuery};\n\n if (queryParameters) {\n urlParameters.queryParameters = JSON.stringify(queryParameters);\n }\n\n const baseUrl = buildQueryUrl({apiBaseUrl, connectionName});\n const headers = {\n Authorization: `Bearer ${options.accessToken}`,\n ...options.headers,\n };\n const parameters = {client: clientId, ...urlParameters};\n\n const errorContext: APIErrorContext = {\n requestType: 'SQL',\n connection: options.connectionName,\n type: 'query',\n source: JSON.stringify(parameters, undefined, 2),\n };\n return await requestWithParameters<QueryResult>({\n baseUrl,\n parameters,\n headers,\n errorContext,\n maxLengthURL,\n localCache,\n });\n};\n","import {CartoAPIError, APIErrorContext} from '../api/index.js';\nimport {GoogleBasemapProps} from './types.js';\n\nconst cartoStyleUrlTemplate =\n 'https://basemaps.cartocdn.com/gl/{basemap}-gl-style/style.json';\n\nexport const CARTO_MAP_STYLES = ['positron', 'dark-matter', 'voyager'];\n\nexport const GOOGLE_BASEMAPS: Record<string, GoogleBasemapProps> = {\n roadmap: {\n mapTypeId: 'roadmap',\n mapId: '3754c817b510f791',\n },\n 'google-positron': {\n mapTypeId: 'roadmap',\n mapId: 'ea84ae4203ef21cd',\n },\n 'google-dark-matter': {\n mapTypeId: 'roadmap',\n mapId: '2fccc3b36c22a0e2',\n },\n 'google-voyager': {\n mapTypeId: 'roadmap',\n mapId: '885caf1e15bb9ef2',\n },\n satellite: {\n mapTypeId: 'satellite',\n },\n hybrid: {\n mapTypeId: 'hybrid',\n },\n terrain: {\n mapTypeId: 'terrain',\n },\n};\n\ntype StyleLayerGroupSlug =\n | 'label'\n | 'road'\n | 'border'\n | 'building'\n | 'water'\n | 'land';\ntype StyleLayerGroup = {\n slug: StyleLayerGroupSlug;\n filter: (layer: any) => boolean;\n defaultVisibility: boolean;\n};\n\nexport const STYLE_LAYER_GROUPS: StyleLayerGroup[] = [\n {\n slug: 'label',\n filter: ({id}: {id: string}) =>\n Boolean(\n id.match(\n /(?=(label|_label|place-|place_|poi-|poi_|watername_|roadname_|housenumber))/\n )\n ),\n defaultVisibility: true,\n },\n {\n slug: 'road',\n filter: ({id}: {id: string}) =>\n Boolean(id.match(/(?=(road|railway|tunnel|street|bridge))(?!.*label)/)),\n defaultVisibility: true,\n },\n {\n slug: 'border',\n filter: ({id}: {id: string}) =>\n Boolean(id.match(/border|boundaries|boundary_/)),\n defaultVisibility: false,\n },\n {\n slug: 'building',\n filter: ({id}: {id: string}) => Boolean(id.match(/building/)),\n defaultVisibility: true,\n },\n {\n slug: 'water',\n filter: ({id}: {id: string}) =>\n Boolean(id.match(/(?=(water|stream|ferry))/)),\n defaultVisibility: true,\n },\n {\n slug: 'land',\n filter: ({id}: {id: string}) =>\n Boolean(\n id.match(/(?=(parks|landcover|industrial|sand|hillshade|park_))/)\n ),\n defaultVisibility: true,\n },\n];\n\nexport function applyLayerGroupFilters(\n style: any,\n visibleLayerGroups: Record<StyleLayerGroupSlug, boolean>\n) {\n if (!Array.isArray(style?.layers)) {\n return style;\n }\n\n const removedLayerFilters = STYLE_LAYER_GROUPS.filter(\n (lg) => !visibleLayerGroups[lg.slug]\n ).map((lg) => lg.filter);\n\n const visibleLayers = style.layers.filter((layer: any) =>\n removedLayerFilters.every((match) => !match(layer))\n );\n\n return {\n ...style,\n layers: visibleLayers,\n };\n}\n\nexport function someLayerGroupsDisabled(\n visibleLayerGroups?: Record<StyleLayerGroupSlug, boolean>\n) {\n return (\n visibleLayerGroups &&\n Object.values(visibleLayerGroups).every(Boolean) === false\n );\n}\n\nexport function getStyleUrl(styleType: string) {\n return cartoStyleUrlTemplate.replace('{basemap}', styleType);\n}\n\nexport async function fetchStyle({\n styleUrl,\n errorContext,\n}: {\n styleUrl: string;\n errorContext?: APIErrorContext;\n}) {\n /* global fetch */\n let response: Response | undefined;\n return await fetch(styleUrl, {mode: 'cors'})\n .then((res) => {\n response = res;\n return res.json();\n })\n .catch((error) => {\n throw new CartoAPIError(\n error,\n {...errorContext, requestType: 'Basemap style'},\n response\n );\n });\n}\n\nexport default {\n VOYAGER: getStyleUrl('voyager'),\n POSITRON: getStyleUrl('positron'),\n DARK_MATTER: getStyleUrl('dark-matter'),\n VOYAGER_NOLABELS: getStyleUrl('voyager-nolabels'),\n POSITRON_NOLABELS: getStyleUrl('positron-nolabels'),\n DARK_MATTER_NOLABELS: getStyleUrl('dark-matter-nolabels'),\n} as const;\n","export default function ascending(a, b) {\n return a == null || b == null ? NaN : a < b ? -1 : a > b ? 1 : a >= b ? 0 : NaN;\n}\n","export default function number(x) {\n return x === null ? NaN : +x;\n}\n\nexport function* numbers(values, valueof) {\n if (valueof === undefined) {\n for (let value of values) {\n if (value != null && (value = +value) >= value) {\n yield value;\n }\n }\n } else {\n let index = -1;\n for (let value of values) {\n if ((value = valueof(value, ++index, values)) != null && (value = +value) >= value) {\n yield value;\n }\n }\n }\n}\n","export default function variance(values, valueof) {\n let count = 0;\n let delta;\n let mean = 0;\n let sum = 0;\n if (valueof === undefined) {\n for (let value of values) {\n if (value != null && (value = +value) >= value) {\n delta = value - mean;\n mean += delta / ++count;\n sum += delta * (value - mean);\n }\n }\n } else {\n let index = -1;\n for (let value of values) {\n if ((value = valueof(value, ++index, values)) != null && (value = +value) >= value) {\n delta = value - mean;\n mean += delta / ++count;\n sum += delta * (value - mean);\n }\n }\n }\n if (count > 1) return sum / (count - 1);\n}\n","import variance from \"./variance.js\";\n\nexport default function deviation(values, valueof) {\n const v = variance(values, valueof);\n return v ? Math.sqrt(v) : v;\n}\n","export default function extent(values, valueof) {\n let min;\n let max;\n if (valueof === undefined) {\n for (const value of values) {\n if (value != null) {\n if (min === undefined) {\n if (value >= value) min = max = value;\n } else {\n if (min > value) min = value;\n if (max < value) max = value;\n }\n }\n }\n } else {\n let index = -1;\n for (let value of values) {\n if ((value = valueof(value, ++index, values)) != null) {\n if (min === undefined) {\n if (value >= value) min = max = value;\n } else {\n if (min > value) min = value;\n if (max < value) max = value;\n }\n }\n }\n }\n return [min, max];\n}\n","export class InternMap extends Map {\n constructor(entries, key = keyof) {\n super();\n Object.defineProperties(this, {_intern: {value: new Map()}, _key: {value: key}});\n if (entries != null) for (const [key, value] of entries) this.set(key, value);\n }\n get(key) {\n return super.get(intern_get(this, key));\n }\n has(key) {\n return super.has(intern_get(this, key));\n }\n set(key, value) {\n return super.set(intern_set(this, key), value);\n }\n delete(key) {\n return super.delete(intern_delete(this, key));\n }\n}\n\nexport class InternSet extends Set {\n constructor(values, key = keyof) {\n super();\n Object.defineProperties(this, {_intern: {value: new Map()}, _key: {value: key}});\n if (values != null) for (const value of values) this.add(value);\n }\n has(value) {\n return super.has(intern_get(this, value));\n }\n add(value) {\n return super.add(intern_set(this, value));\n }\n delete(value) {\n return super.delete(intern_delete(this, value));\n }\n}\n\nfunction intern_get({_intern, _key}, value) {\n const key = _key(value);\n return _intern.has(key) ? _intern.get(key) : value;\n}\n\nfunction intern_set({_intern, _key}, value) {\n const key = _key(value);\n if (_intern.has(key)) return _intern.get(key);\n _intern.set(key, value);\n return value;\n}\n\nfunction intern_delete({_intern, _key}, value) {\n const key = _key(value);\n if (_intern.has(key)) {\n value = _intern.get(key);\n _intern.delete(key);\n }\n return value;\n}\n\nfunction keyof(value) {\n return value !== null && typeof value === \"object\" ? value.valueOf() : value;\n}\n","export default function identity(x) {\n return x;\n}\n","import {InternMap} from \"internmap\";\nimport identity from \"./identity.js\";\n\nexport default function group(values, ...keys) {\n return nest(values, identity, identity, keys);\n}\n\nexport function groups(values, ...keys) {\n return nest(values, Array.from, identity, keys);\n}\n\nfunction flatten(groups, keys) {\n for (let i = 1, n = keys.length; i < n; ++i) {\n groups = groups.flatMap(g => g.pop().map(([key, value]) => [...g, key, value]));\n }\n return groups;\n}\n\nexport function flatGroup(values, ...keys) {\n return flatten(groups(values, ...keys), keys);\n}\n\nexport function flatRollup(values, reduce, ...keys) {\n return flatten(rollups(values, reduce, ...keys), keys);\n}\n\nexport function rollup(values, reduce, ...keys) {\n return nest(values, identity, reduce, keys);\n}\n\nexport function rollups(values, reduce, ...keys) {\n return nest(values, Array.from, reduce, keys);\n}\n\nexport function index(values, ...keys) {\n return nest(values, identity, unique, keys);\n}\n\nexport function indexes(values, ...keys) {\n return nest(values, Array.from, unique, keys);\n}\n\nfunction unique(values) {\n if (values.length !== 1) throw new Error(\"duplicate key\");\n return values[0];\n}\n\nfunction nest(values, map, reduce, keys) {\n return (function regroup(values, i) {\n if (i >= keys.length) return reduce(values);\n const groups = new InternMap();\n const keyof = keys[i++];\n let index = -1;\n for (const value of values) {\n const key = keyof(value, ++index, values);\n const group = groups.get(key);\n if (group) group.push(value);\n else groups.set(key, [value]);\n }\n for (const [key, values] of groups) {\n groups.set(key, regroup(values, i));\n }\n return map(groups);\n })(values, 0);\n}\n","export default function permute(source, keys) {\n return Array.from(keys, key => source[key]);\n}\n","import ascending from \"./ascending.js\";\nimport permute from \"./permute.js\";\n\nexport default function sort(values, ...F) {\n if (typeof values[Symbol.iterator] !== \"function\") throw new TypeError(\"values is not iterable\");\n values = Array.from(values);\n let [f] = F;\n if ((f && f.length !== 2) || F.length > 1) {\n const index = Uint32Array.from(values, (d, i) => i);\n if (F.length > 1) {\n F = F.map(f => values.map(f));\n index.sort((i, j) => {\n for (const f of F) {\n const c = ascendingDefined(f[i], f[j]);\n if (c) return c;\n }\n });\n } else {\n f = values.map(f);\n index.sort((i, j) => ascendingDefined(f[i], f[j]));\n }\n return permute(values, index);\n }\n return values.sort(compareDefined(f));\n}\n\nexport function compareDefined(compare = ascending) {\n if (compare === ascending) return ascendingDefined;\n if (typeof compare !== \"function\") throw new TypeError(\"compare is not a function\");\n return (a, b) => {\n const x = compare(a, b);\n if (x || x === 0) return x;\n return (compare(b, b) === 0) - (compare(a, a) === 0);\n };\n}\n\nexport function ascendingDefined(a, b) {\n return (a == null || !(a >= a)) - (b == null || !(b >= b)) || (a < b ? -1 : a > b ? 1 : 0);\n}\n","import ascending from \"./ascending.js\";\nimport group, {rollup} from \"./group.js\";\nimport sort from \"./sort.js\";\n\nexport default function groupSort(values, reduce, key) {\n return (reduce.length !== 2\n ? sort(rollup(values, reduce, key), (([ak, av], [bk, bv]) => ascending(av, bv) || ascending(ak, bk)))\n : sort(group(values, key), (([ak, av], [bk, bv]) => reduce(av, bv) || ascending(ak, bk))))\n .map(([key]) => key);\n}\n","export default function max(values, valueof) {\n let max;\n if (valueof === undefined) {\n for (const value of values) {\n if (value != null\n && (max < value || (max === undefined && value >= value))) {\n max = value;\n }\n }\n } else {\n let index = -1;\n for (let value of values) {\n if ((value = valueof(value, ++index, values)) != null\n && (max < value || (max === undefined && value >= value))) {\n max = value;\n }\n }\n }\n return max;\n}\n","export default function min(values, valueof) {\n let min;\n if (valueof === undefined) {\n for (const value of values) {\n if (value != null\n && (min > value || (min === undefined && value >= value))) {\n min = value;\n }\n }\n } else {\n let index = -1;\n for (let value of values) {\n if ((value = valueof(value, ++index, values)) != null\n && (min > value || (min === undefined && value >= value))) {\n min = value;\n }\n }\n }\n return min;\n}\n","import {ascendingDefined, compareDefined} from \"./sort.js\";\n\n// Based on https://github.com/mourner/quickselect\n// ISC license, Copyright 2018 Vladimir Agafonkin.\nexport default function quickselect(array, k, left = 0, right = Infinity, compare) {\n k = Math.floor(k);\n left = Math.floor(Math.max(0, left));\n right = Math.floor(Math.min(array.length - 1, right));\n\n if (!(left <= k && k <= right)) return array;\n\n compare = compare === undefined ? ascendingDefined : compareDefined(compare);\n\n while (right > left) {\n if (right - left > 600) {\n const n = right - left + 1;\n const m = k - left + 1;\n const z = Math.log(n);\n const s = 0.5 * Math.exp(2 * z / 3);\n const sd = 0.5 * Math.sqrt(z * s * (n - s) / n) * (m - n / 2 < 0 ? -1 : 1);\n const newLeft = Math.max(left, Math.floor(k - m * s / n + sd));\n const newRight = Math.min(right, Math.floor(k + (n - m) * s / n + sd));\n quickselect(array, k, newLeft, newRight, compare);\n }\n\n const t = array[k];\n let i = left;\n let j = right;\n\n swap(array, left, k);\n if (compare(array[right], t) > 0) swap(array, left, right);\n\n while (i < j) {\n swap(array, i, j), ++i, --j;\n while (compare(array[i], t) < 0) ++i;\n while (compare(array[j], t) > 0) --j;\n }\n\n if (compare(array[left], t) === 0) swap(array, left, j);\n else ++j, swap(array, j, right);\n\n if (j <= k) left = j + 1;\n if (k <= j) right = j - 1;\n }\n\n return array;\n}\n\nfunction swap(array, i, j) {\n const t = array[i];\n array[i] = array[j];\n array[j] = t;\n}\n","import max from \"./max.js\";\nimport maxIndex from \"./maxIndex.js\";\nimport min from \"./min.js\";\nimport minIndex from \"./minIndex.js\";\nimport quickselect from \"./quickselect.js\";\nimport number, {numbers} from \"./number.js\";\nimport {ascendingDefined} from \"./sort.js\";\nimport greatest from \"./greatest.js\";\n\nexport default function quantile(values, p, valueof) {\n values = Float64Array.from(numbers(values, valueof));\n if (!(n = values.length) || isNaN(p = +p)) return;\n if (p <= 0 || n < 2) return min(values);\n if (p >= 1) return max(values);\n var n,\n i = (n - 1) * p,\n i0 = Math.floor(i),\n value0 = max(quickselect(values, i0).subarray(0, i0 + 1)),\n value1 = min(values.subarray(i0 + 1));\n return value0 + (value1 - value0) * (i - i0);\n}\n\nexport function quantileSorted(values, p, valueof = number) {\n if (!(n = values.length) || isNaN(p = +p)) return;\n if (p <= 0 || n < 2) return +valueof(values[0], 0, values);\n if (p >= 1) return +valueof(values[n - 1], n - 1, values);\n var n,\n i = (n - 1) * p,\n i0 = Math.floor(i),\n value0 = +valueof(values[i0], i0, values),\n value1 = +valueof(values[i0 + 1], i0 + 1, values);\n return value0 + (value1 - value0) * (i - i0);\n}\n\nexport function quantileIndex(values, p, valueof = number) {\n if (isNaN(p = +p)) return;\n numbers = Float64Array.from(values, (_, i) => number(valueof(values[i], i, values)));\n if (p <= 0) return minIndex(numbers);\n if (p >= 1) return maxIndex(numbers);\n var numbers,\n index = Uint32Array.from(values, (_, i) => i),\n j = numbers.length - 1,\n i = Math.floor(j * p);\n quickselect(index, i, 0, j, (i, j) => ascendingDefined(numbers[i], numbers[j]));\n i = greatest(index.subarray(0, i + 1), (i) => numbers[i]);\n return i >= 0 ? i : -1;\n}\n","import quantile, {quantileIndex} from \"./quantile.js\";\n\nexport default function median(values, valueof) {\n return quantile(values, 0.5, valueof);\n}\n\nexport function medianIndex(values, valueof) {\n return quantileIndex(values, 0.5, valueof);\n}\n","export default function(constructor, factory, prototype) {\n constructor.prototype = factory.prototype = prototype;\n prototype.constructor = constructor;\n}\n\nexport function extend(parent, definition) {\n var prototype = Object.create(parent.prototype);\n for (var key in definition) prototype[key] = definition[key];\n return prototype;\n}\n","import define, {extend} from \"./define.js\";\n\nexport function Color() {}\n\nexport var darker = 0.7;\nexport var brighter = 1 / darker;\n\nvar reI = \"\\\\s*([+-]?\\\\d+)\\\\s*\",\n reN = \"\\\\s*([+-]?(?:\\\\d*\\\\.)?\\\\d+(?:[eE][+-]?\\\\d+)?)\\\\s*\",\n reP = \"\\\\s*([+-]?(?:\\\\d*\\\\.)?\\\\d+(?:[eE][+-]?\\\\d+)?)%\\\\s*\",\n reHex = /^#([0-9a-f]{3,8})$/,\n reRgbInteger = new RegExp(`^rgb\\\\(${reI},${reI},${reI}\\\\)$`),\n reRgbPercent = new RegExp(`^rgb\\\\(${reP},${reP},${reP}\\\\)$`),\n reRgbaInteger = new RegExp(`^rgba\\\\(${reI},${reI},${reI},${reN}\\\\)$`),\n reRgbaPercent = new RegExp(`^rgba\\\\(${reP},${reP},${reP},${reN}\\\\)$`),\n reHslPercent = new RegExp(`^hsl\\\\(${reN},${reP},${reP}\\\\)$`),\n reHslaPercent = new RegExp(`^hsla\\\\(${reN},${reP},${reP},${reN}\\\\)$`);\n\nvar named = {\n aliceblue: 0xf0f8ff,\n antiquewhite: 0xfaebd7,\n aqua: 0x00ffff,\n aquamarine: 0x7fffd4,\n azure: 0xf0ffff,\n beige: 0xf5f5dc,\n bisque: 0xffe4c4,\n black: 0x000000,\n blanchedalmond: 0xffebcd,\n blue: 0x0000ff,\n blueviolet: 0x8a2be2,\n brown: 0xa52a2a,\n burlywood: 0xdeb887,\n cadetblue: 0x5f9ea0,\n chartreuse: 0x7fff00,\n chocolate: 0xd2691e,\n coral: 0xff7f50,\n cornflowerblue: 0x6495ed,\n cornsilk: 0xfff8dc,\n crimson: 0xdc143c,\n cyan: 0x00ffff,\n darkblue: 0x00008b,\n darkcyan: 0x008b8b,\n darkgoldenrod: 0xb8860b,\n darkgray: 0xa9a9a9,\n darkgreen: 0x006400,\n darkgrey: 0xa9a9a9,\n darkkhaki: 0xbdb76b,\n darkmagenta: 0x8b008b,\n darkolivegreen: 0x556b2f,\n darkorange: 0xff8c00,\n darkorchid: 0x9932cc,\n darkred: 0x8b0000,\n darksalmon: 0xe9967a,\n darkseagreen: 0x8fbc8f,\n darkslateblue: 0x483d8b,\n darkslategray: 0x2f4f4f,\n darkslategrey: 0x2f4f4f,\n darkturquoise: 0x00ced1,\n darkviolet: 0x9400d3,\n deeppink: 0xff1493,\n deepskyblue: 0x00bfff,\n dimgray: 0x696969,\n dimgrey: 0x696969,\n dodgerblue: 0x1e90ff,\n firebrick: 0xb22222,\n floralwhite: 0xfffaf0,\n forestgreen: 0x228b22,\n fuchsia: 0xff00ff,\n gainsboro: 0xdcdcdc,\n ghostwhite: 0xf8f8ff,\n gold: 0xffd700,\n goldenrod: 0xdaa520,\n gray: 0x808080,\n green: 0x008000,\n greenyellow: 0xadff2f,\n grey: 0x808080,\n honeydew: 0xf0fff0,\n hotpink: 0xff69b4,\n indianred: 0xcd5c5c,\n indigo: 0x4b0082,\n ivory: 0xfffff0,\n khaki: 0xf0e68c,\n lavender: 0xe6e6fa,\n lavenderblush: 0xfff0f5,\n lawngreen: 0x7cfc00,\n lemonchiffon: 0xfffacd,\n lightblue: 0xadd8e6,\n lightcoral: 0xf08080,\n lightcyan: 0xe0ffff,\n lightgoldenrodyellow: 0xfafad2,\n lightgray: 0xd3d3d3,\n lightgreen: 0x90ee90,\n lightgrey: 0xd3d3d3,\n lightpink: 0xffb6c1,\n lightsalmon: 0xffa07a,\n lightseagreen: 0x20b2aa,\n lightskyblue: 0x87cefa,\n lightslategray: 0x778899,\n lightslategrey: 0x778899,\n lightsteelblue: 0xb0c4de,\n lightyellow: 0xffffe0,\n lime: 0x00ff00,\n limegreen: 0x32cd32,\n linen: 0xfaf0e6,\n magenta: 0xff00ff,\n maroon: 0x800000,\n mediumaquamarine: 0x66cdaa,\n mediumblue: 0x0000cd,\n mediumorchid: 0xba55d3,\n mediumpurple: 0x9370db,\n mediumseagreen: 0x3cb371,\n mediumslateblue: 0x7b68ee,\n mediumspringgreen: 0x00fa9a,\n mediumturquoise: 0x48d1cc,\n mediumvioletred: 0xc71585,\n midnightblue: 0x191970,\n mintcream: 0xf5fffa,\n mistyrose: 0xffe4e1,\n moccasin: 0xffe4b5,\n navajowhite: 0xffdead,\n navy: 0x000080,\n oldlace: 0xfdf5e6,\n olive: 0x808000,\n olivedrab: 0x6b8e23,\n orange: 0xffa500,\n orangered: 0xff4500,\n orchid: 0xda70d6,\n palegoldenrod: 0xeee8aa,\n palegreen: 0x98fb98,\n paleturquoise: 0xafeeee,\n palevioletred: 0xdb7093,\n papayawhip: 0xffefd5,\n peachpuff: 0xffdab9,\n peru: 0xcd853f,\n pink: 0xffc0cb,\n plum: 0xdda0dd,\n powderblue: 0xb0e0e6,\n purple: 0x800080,\n rebeccapurple: 0x663399,\n red: 0xff0000,\n rosybrown: 0xbc8f8f,\n royalblue: 0x4169e1,\n saddlebrown: 0x8b4513,\n salmon: 0xfa8072,\n sandybrown: 0xf4a460,\n seagreen: 0x2e8b57,\n seashell: 0xfff5ee,\n sienna: 0xa0522d,\n silver: 0xc0c0c0,\n skyblue: 0x87ceeb,\n slateblue: 0x6a5acd,\n slategray: 0x708090,\n slategrey: 0x708090,\n snow: 0xfffafa,\n springgreen: 0x00ff7f,\n steelblue: 0x4682b4,\n tan: 0xd2b48c,\n teal: 0x008080,\n thistle: 0xd8bfd8,\n tomato: 0xff6347,\n turquoise: 0x40e0d0,\n violet: 0xee82ee,\n wheat: 0xf5deb3,\n white: 0xffffff,\n whitesmoke: 0xf5f5f5,\n yellow: 0xffff00,\n yellowgreen: 0x9acd32\n};\n\ndefine(Color, color, {\n copy(channels) {\n return Object.assign(new this.constructor, this, channels);\n },\n displayable() {\n return this.rgb().displayable();\n },\n hex: color_formatHex, // Deprecated! Use color.formatHex.\n formatHex: color_formatHex,\n formatHex8: color_formatHex8,\n formatHsl: color_formatHsl,\n formatRgb: color_formatRgb,\n toString: color_formatRgb\n});\n\nfunction color_formatHex() {\n return this.rgb().formatHex();\n}\n\nfunction color_formatHex8() {\n return this.rgb().formatHex8();\n}\n\nfunction color_formatHsl() {\n return hslConvert(this).formatHsl();\n}\n\nfunction color_formatRgb() {\n return this.rgb().formatRgb();\n}\n\nexport default function color(format) {\n var m, l;\n format = (format + \"\").trim().toLowerCase();\n return (m = reHex.exec(format)) ? (l = m[1].length, m = parseInt(m[1], 16), l === 6 ? rgbn(m) // #ff0000\n : l === 3 ? new Rgb((m >> 8 & 0xf) | (m >> 4 & 0xf0), (m >> 4 & 0xf) | (m & 0xf0), ((m & 0xf) << 4) | (m & 0xf), 1) // #f00\n : l === 8 ? rgba(m >> 24 & 0xff, m >> 16 & 0xff, m >> 8 & 0xff, (m & 0xff) / 0xff) // #ff000000\n : l === 4 ? rgba((m >> 12 & 0xf) | (m >> 8 & 0xf0), (m >> 8 & 0xf) | (m >> 4 & 0xf0), (m >> 4 & 0xf) | (m & 0xf0), (((m & 0xf) << 4) | (m & 0xf)) / 0xff) // #f000\n : null) // invalid hex\n : (m = reRgbInteger.exec(format)) ? new Rgb(m[1], m[2], m[3], 1) // rgb(255, 0, 0)\n : (m = reRgbPercent.exec(format)) ? new Rgb(m[1] * 255 / 100, m[2] * 255 / 100, m[3] * 255 / 100, 1) // rgb(100%, 0%, 0%)\n : (m = reRgbaInteger.exec(format)) ? rgba(m[1], m[2], m[3], m[4]) // rgba(255, 0, 0, 1)\n : (m = reRgbaPercent.exec(format)) ? rgba(m[1] * 255 / 100, m[2] * 255 / 100, m[3] * 255 / 100, m[4]) // rgb(100%, 0%, 0%, 1)\n : (m = reHslPercent.exec(format)) ? hsla(m[1], m[2] / 100, m[3] / 100, 1) // hsl(120, 50%, 50%)\n : (m = reHslaPercent.exec(format)) ? hsla(m[1], m[2] / 100, m[3] / 100, m[4]) // hsla(120, 50%, 50%, 1)\n : named.hasOwnProperty(format) ? rgbn(named[format]) // eslint-disable-line no-prototype-builtins\n : format === \"transparent\" ? new Rgb(NaN, NaN, NaN, 0)\n : null;\n}\n\nfunction rgbn(n) {\n return new Rgb(n >> 16 & 0xff, n >> 8 & 0xff, n & 0xff, 1);\n}\n\nfunction rgba(r, g, b, a) {\n if (a <= 0) r = g = b = NaN;\n return new Rgb(r, g, b, a);\n}\n\nexport function rgbConvert(o) {\n if (!(o instanceof Color)) o = color(o);\n if (!o) return new Rgb;\n o = o.rgb();\n return new Rgb(o.r, o.g, o.b, o.opacity);\n}\n\nexport function rgb(r, g, b, opacity) {\n return arguments.length === 1 ? rgbConvert(r) : new Rgb(r, g, b, opacity == null ? 1 : opacity);\n}\n\nexport function Rgb(r, g, b, opacity) {\n this.r = +r;\n this.g = +g;\n this.b = +b;\n this.opacity = +opacity;\n}\n\ndefine(Rgb, rgb, extend(Color, {\n brighter(k) {\n k = k == null ? brighter : Math.pow(brighter, k);\n return new Rgb(this.r * k, this.g * k, this.b * k, this.opacity);\n },\n darker(k) {\n k = k == null ? darker : Math.pow(darker, k);\n return new Rgb(this.r * k, this.g * k, this.b * k, this.opacity);\n },\n rgb() {\n return this;\n },\n clamp() {\n return new Rgb(clampi(this.r), clampi(this.g), clampi(this.b), clampa(this.opacity));\n },\n displayable() {\n return (-0.5 <= this.r && this.r < 255.5)\n && (-0.5 <= this.g && this.g < 255.5)\n && (-0.5 <= this.b && this.b < 255.5)\n && (0 <= this.opacity && this.opacity <= 1);\n },\n hex: rgb_formatHex, // Deprecated! Use color.formatHex.\n formatHex: rgb_formatHex,\n formatHex8: rgb_formatHex8,\n formatRgb: rgb_formatRgb,\n toString: rgb_formatRgb\n}));\n\nfunction rgb_formatHex() {\n return `#${hex(this.r)}${hex(this.g)}${hex(this.b)}`;\n}\n\nfunction rgb_formatHex8() {\n return `#${hex(this.r)}${hex(this.g)}${hex(this.b)}${hex((isNaN(this.opacity) ? 1 : this.opacity) * 255)}`;\n}\n\nfunction rgb_formatRgb() {\n const a = clampa(this.opacity);\n return `${a === 1 ? \"rgb(\" : \"rgba(\"}${clampi(this.r)}, ${clampi(this.g)}, ${clampi(this.b)}${a === 1 ? \")\" : `, ${a})`}`;\n}\n\nfunction clampa(opacity) {\n return isNaN(opacity) ? 1 : Math.max(0, Math.min(1, opacity));\n}\n\nfunction clampi(value) {\n return Math.max(0, Math.min(255, Math.round(value) || 0));\n}\n\nfunction hex(value) {\n value = clampi(value);\n return (value < 16 ? \"0\" : \"\") + value.toString(16);\n}\n\nfunction hsla(h, s, l, a) {\n if (a <= 0) h = s = l = NaN;\n else if (l <= 0 || l >= 1) h = s = NaN;\n else if (s <= 0) h = NaN;\n return new Hsl(h, s, l, a);\n}\n\nexport function hslConvert(o) {\n if (o instanceof Hsl) return new Hsl(o.h, o.s, o.l, o.opacity);\n if (!(o instanceof Color)) o = color(o);\n if (!o) return new Hsl;\n if (o instanceof Hsl) return o;\n o = o.rgb();\n var r = o.r / 255,\n g = o.g / 255,\n b = o.b / 255,\n min = Math.min(r, g, b),\n max = Math.max(r, g, b),\n h = NaN,\n s = max - min,\n l = (max + min) / 2;\n if (s) {\n if (r === max) h = (g - b) / s + (g < b) * 6;\n else if (g === max) h = (b - r) / s + 2;\n else h = (r - g) / s + 4;\n s /= l < 0.5 ? max + min : 2 - max - min;\n h *= 60;\n } else {\n s = l > 0 && l < 1 ? 0 : h;\n }\n return new Hsl(h, s, l, o.opacity);\n}\n\nexport function hsl(h, s, l, opacity) {\n return arguments.length === 1 ? hslConvert(h) : new Hsl(h, s, l, opacity == null ? 1 : opacity);\n}\n\nfunction Hsl(h, s, l, opacity) {\n this.h = +h;\n this.s = +s;\n this.l = +l;\n this.opacity = +opacity;\n}\n\ndefine(Hsl, hsl, extend(Color, {\n brighter(k) {\n k = k == null ? brighter : Math.pow(brighter, k);\n return new Hsl(this.h, this.s, this.l * k, this.opacity);\n },\n darker(k) {\n k = k == null ? darker : Math.pow(darker, k);\n return new Hsl(this.h, this.s, this.l * k, this.opacity);\n },\n rgb() {\n var h = this.h % 360 + (this.h < 0) * 360,\n s = isNaN(h) || isNaN(this.s) ? 0 : this.s,\n l = this.l,\n m2 = l + (l < 0.5 ? l : 1 - l) * s,\n m1 = 2 * l - m2;\n return new Rgb(\n hsl2rgb(h >= 240 ? h - 240 : h + 120, m1, m2),\n hsl2rgb(h, m1, m2),\n hsl2rgb(h < 120 ? h + 240 : h - 120, m1, m2),\n this.opacity\n );\n },\n clamp() {\n return new Hsl(clamph(this.h), clampt(this.s), clampt(this.l), clampa(this.opacity));\n },\n displayable() {\n return (0 <= this.s && this.s <= 1 || isNaN(this.s))\n && (0 <= this.l && this.l <= 1)\n && (0 <= this.opacity && this.opacity <= 1);\n },\n formatHsl() {\n const a = clampa(this.opacity);\n return `${a === 1 ? \"hsl(\" : \"hsla(\"}${clamph(this.h)}, ${clampt(this.s) * 100}%, ${clampt(this.l) * 100}%${a === 1 ? \")\" : `, ${a})`}`;\n }\n}));\n\nfunction clamph(value) {\n value = (value || 0) % 360;\n return value < 0 ? value + 360 : value;\n}\n\nfunction clampt(value) {\n return Math.max(0, Math.min(1, value || 0));\n}\n\n/* From FvD 13.37, CSS Color Module Level 3 */\nfunction hsl2rgb(h, m1, m2) {\n return (h < 60 ? m1 + (m2 - m1) * h / 60\n : h < 180 ? m2\n : h < 240 ? m1 + (m2 - m1) * (240 - h) / 60\n : m1) * 255;\n}\n","//! moment.js\n//! version : 2.30.1\n//! authors : Tim Wood, Iskren Chernev, Moment.js contributors\n//! license : MIT\n//! momentjs.com\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined' ? module.exports = factory() :\n typeof define === 'function' && define.amd ? define(factory) :\n global.moment = factory()\n}(this, (function () { 'use strict';\n\n var hookCallback;\n\n function hooks() {\n return hookCallback.apply(null, arguments);\n }\n\n // This is done to register the method called with moment()\n // without creating circular dependencies.\n function setHookCallback(callback) {\n hookCallback = callback;\n }\n\n function isArray(input) {\n return (\n input instanceof Array ||\n Object.prototype.toString.call(input) === '[object Array]'\n );\n }\n\n function isObject(input) {\n // IE8 will treat undefined and null as object if it wasn't for\n // input != null\n return (\n input != null &&\n Object.prototype.toString.call(input) === '[object Object]'\n );\n }\n\n function hasOwnProp(a, b) {\n return Object.prototype.hasOwnProperty.call(a, b);\n }\n\n function isObjectEmpty(obj) {\n if (Object.getOwnPropertyNames) {\n return Object.getOwnPropertyNames(obj).length === 0;\n } else {\n var k;\n for (k in obj) {\n if (hasOwnProp(obj, k)) {\n return false;\n }\n }\n return true;\n }\n }\n\n function isUndefined(input) {\n return input === void 0;\n }\n\n function isNumber(input) {\n return (\n typeof input === 'number' ||\n Object.prototype.toString.call(input) === '[object Number]'\n );\n }\n\n function isDate(input) {\n return (\n input instanceof Date ||\n Object.prototype.toString.call(input) === '[object Date]'\n );\n }\n\n function map(arr, fn) {\n var res = [],\n i,\n arrLen = arr.length;\n for (i = 0; i < arrLen; ++i) {\n res.push(fn(arr[i], i));\n }\n return res;\n }\n\n function extend(a, b) {\n for (var i in b) {\n if (hasOwnProp(b, i)) {\n a[i] = b[i];\n }\n }\n\n if (hasOwnProp(b, 'toString')) {\n a.toString = b.toString;\n }\n\n if (hasOwnProp(b, 'valueOf')) {\n a.valueOf = b.valueOf;\n }\n\n return a;\n }\n\n function createUTC(input, format, locale, strict) {\n return createLocalOrUTC(input, format, locale, strict, true).utc();\n }\n\n function defaultParsingFlags() {\n // We need to deep clone this object.\n return {\n empty: false,\n unusedTokens: [],\n unusedInput: [],\n overflow: -2,\n charsLeftOver: 0,\n nullInput: false,\n invalidEra: null,\n invalidMonth: null,\n invalidFormat: false,\n userInvalidated: false,\n iso: false,\n parsedDateParts: [],\n era: null,\n meridiem: null,\n rfc2822: false,\n weekdayMismatch: false,\n };\n }\n\n function getParsingFlags(m) {\n if (m._pf == null) {\n m._pf = defaultParsingFlags();\n }\n return m._pf;\n }\n\n var some;\n if (Array.prototype.some) {\n some = Array.prototype.some;\n } else {\n some = function (fun) {\n var t = Object(this),\n len = t.length >>> 0,\n i;\n\n for (i = 0; i < len; i++) {\n if (i in t && fun.call(this, t[i], i, t)) {\n return true;\n }\n }\n\n return false;\n };\n }\n\n function isValid(m) {\n var flags = null,\n parsedParts = false,\n isNowValid = m._d && !isNaN(m._d.getTime());\n if (isNowValid) {\n flags = getParsingFlags(m);\n parsedParts = some.call(flags.parsedDateParts, function (i) {\n return i != null;\n });\n isNowValid =\n flags.overflow < 0 &&\n !flags.empty &&\n !flags.invalidEra &&\n !flags.invalidMonth &&\n !flags.invalidWeekday &&\n !flags.weekdayMismatch &&\n !flags.nullInput &&\n !flags.invalidFormat &&\n !flags.userInvalidated &&\n (!flags.meridiem || (flags.meridiem && parsedParts));\n if (m._strict) {\n isNowValid =\n isNowValid &&\n flags.charsLeftOver === 0 &&\n flags.unusedTokens.length === 0 &&\n flags.bigHour === undefined;\n }\n }\n if (Object.isFrozen == null || !Object.isFrozen(m)) {\n m._isValid = isNowValid;\n } else {\n return isNowValid;\n }\n return m._isValid;\n }\n\n function createInvalid(flags) {\n var m = createUTC(NaN);\n if (flags != null) {\n extend(getParsingFlags(m), flags);\n } else {\n getParsingFlags(m).userInvalidated = true;\n }\n\n return m;\n }\n\n // Plugins that add properties should also add the key here (null value),\n // so we can properly clone ourselves.\n var momentProperties = (hooks.momentProperties = []),\n updateInProgress = false;\n\n function copyConfig(to, from) {\n var i,\n prop,\n val,\n momentPropertiesLen = momentProperties.length;\n\n if (!isUndefined(from._isAMomentObject)) {\n to._isAMomentObject = from._isAMomentObject;\n }\n if (!isUndefined(from._i)) {\n to._i = from._i;\n }\n if (!isUndefined(from._f)) {\n to._f = from._f;\n }\n if (!isUndefined(from._l)) {\n to._l = from._l;\n }\n if (!isUndefined(from._strict)) {\n to._strict = from._strict;\n }\n if (!isUndefined(from._tzm)) {\n to._tzm = from._tzm;\n }\n if (!isUndefined(from._isUTC)) {\n to._isUTC = from._isUTC;\n }\n if (!isUndefined(from._offset)) {\n to._offset = from._offset;\n }\n if (!isUndefined(from._pf)) {\n to._pf = getParsingFlags(from);\n }\n if (!isUndefined(from._locale)) {\n to._locale = from._locale;\n }\n\n if (momentPropertiesLen > 0) {\n for (i = 0; i < momentPropertiesLen; i++) {\n prop = momentProperties[i];\n val = from[prop];\n if (!isUndefined(val)) {\n to[prop] = val;\n }\n }\n }\n\n return to;\n }\n\n // Moment prototype object\n function Moment(config) {\n copyConfig(this, config);\n this._d = new Date(config._d != null ? config._d.getTime() : NaN);\n if (!this.isValid()) {\n this._d = new Date(NaN);\n }\n // Prevent infinite loop in case updateOffset creates new moment\n // objects.\n if (updateInProgress === false) {\n updateInProgress = true;\n hooks.updateOffset(this);\n updateInProgress = false;\n }\n }\n\n function isMoment(obj) {\n return (\n obj instanceof Moment || (obj != null && obj._isAMomentObject != null)\n );\n }\n\n function warn(msg) {\n if (\n hooks.suppressDeprecationWarnings === false &&\n typeof console !== 'undefined' &&\n console.warn\n ) {\n console.warn('Deprecation warning: ' + msg);\n }\n }\n\n function deprecate(msg, fn) {\n var firstTime = true;\n\n return extend(function () {\n if (hooks.deprecationHandler != null) {\n hooks.deprecationHandler(null, msg);\n }\n if (firstTime) {\n var args = [],\n arg,\n i,\n key,\n argLen = arguments.length;\n for (i = 0; i < argLen; i++) {\n arg = '';\n if (typeof arguments[i] === 'object') {\n arg += '\\n[' + i + '] ';\n for (key in arguments[0]) {\n if (hasOwnProp(arguments[0], key)) {\n arg += key + ': ' + arguments[0][key] + ', ';\n }\n }\n arg = arg.slice(0, -2); // Remove trailing comma and space\n } else {\n arg = arguments[i];\n }\n args.push(arg);\n }\n warn(\n msg +\n '\\nArguments: ' +\n Array.prototype.slice.call(args).join('') +\n '\\n' +\n new Error().stack\n );\n firstTime = false;\n }\n return fn.apply(this, arguments);\n }, fn);\n }\n\n var deprecations = {};\n\n function deprecateSimple(name, msg) {\n if (hooks.deprecationHandler != null) {\n hooks.deprecationHandler(name, msg);\n }\n if (!deprecations[name]) {\n warn(msg);\n deprecations[name] = true;\n }\n }\n\n hooks.suppressDeprecationWarnings = false;\n hooks.deprecationHandler = null;\n\n function isFunction(input) {\n return (\n (typeof Function !== 'undefined' && input instanceof Function) ||\n Object.prototype.toString.call(input) === '[object Function]'\n );\n }\n\n function set(config) {\n var prop, i;\n for (i in config) {\n if (hasOwnProp(config, i)) {\n prop = config[i];\n if (isFunction(prop)) {\n this[i] = prop;\n } else {\n this['_' + i] = prop;\n }\n }\n }\n this._config = config;\n // Lenient ordinal parsing accepts just a number in addition to\n // number + (possibly) stuff coming from _dayOfMonthOrdinalParse.\n // TODO: Remove \"ordinalParse\" fallback in next major release.\n this._dayOfMonthOrdinalParseLenient = new RegExp(\n (this._dayOfMonthOrdinalParse.source || this._ordinalParse.source) +\n '|' +\n /\\d{1,2}/.source\n );\n }\n\n function mergeConfigs(parentConfig, childConfig) {\n var res = extend({}, parentConfig),\n prop;\n for (prop in childConfig) {\n if (hasOwnProp(childConfig, prop)) {\n if (isObject(parentConfig[prop]) && isObject(childConfig[prop])) {\n res[prop] = {};\n extend(res[prop], parentConfig[prop]);\n extend(res[prop], childConfig[prop]);\n } else if (childConfig[prop] != null) {\n res[prop] = childConfig[prop];\n } else {\n delete res[prop];\n }\n }\n }\n for (prop in parentConfig) {\n if (\n hasOwnProp(parentConfig, prop) &&\n !hasOwnProp(childConfig, prop) &&\n isObject(parentConfig[prop])\n ) {\n // make sure changes to properties don't modify parent config\n res[prop] = extend({}, res[prop]);\n }\n }\n return res;\n }\n\n function Locale(config) {\n if (config != null) {\n this.set(config);\n }\n }\n\n var keys;\n\n if (Object.keys) {\n keys = Object.keys;\n } else {\n keys = function (obj) {\n var i,\n res = [];\n for (i in obj) {\n if (hasOwnProp(obj, i)) {\n res.push(i);\n }\n }\n return res;\n };\n }\n\n var defaultCalendar = {\n sameDay: '[Today at] LT',\n nextDay: '[Tomorrow at] LT',\n nextWeek: 'dddd [at] LT',\n lastDay: '[Yesterday at] LT',\n lastWeek: '[Last] dddd [at] LT',\n sameElse: 'L',\n };\n\n function calendar(key, mom, now) {\n var output = this._calendar[key] || this._calendar['sameElse'];\n return isFunction(output) ? output.call(mom, now) : output;\n }\n\n function zeroFill(number, targetLength, forceSign) {\n var absNumber = '' + Math.abs(number),\n zerosToFill = targetLength - absNumber.length,\n sign = number >= 0;\n return (\n (sign ? (forceSign ? '+' : '') : '-') +\n Math.pow(10, Math.max(0, zerosToFill)).toString().substr(1) +\n absNumber\n );\n }\n\n var formattingTokens =\n /(\\[[^\\[]*\\])|(\\\\)?([Hh]mm(ss)?|Mo|MM?M?M?|Do|DDDo|DD?D?D?|ddd?d?|do?|w[o|w]?|W[o|W]?|Qo?|N{1,5}|YYYYYY|YYYYY|YYYY|YY|y{2,4}|yo?|gg(ggg?)?|GG(GGG?)?|e|E|a|A|hh?|HH?|kk?|mm?|ss?|S{1,9}|x|X|zz?|ZZ?|.)/g,\n localFormattingTokens = /(\\[[^\\[]*\\])|(\\\\)?(LTS|LT|LL?L?L?|l{1,4})/g,\n formatFunctions = {},\n formatTokenFunctions = {};\n\n // token: 'M'\n // padded: ['MM', 2]\n // ordinal: 'Mo'\n // callback: function () { this.month() + 1 }\n function addFormatToken(token, padded, ordinal, callback) {\n var func = callback;\n if (typeof callback === 'string') {\n func = function () {\n return this[callback]();\n };\n }\n if (token) {\n formatTokenFunctions[token] = func;\n }\n if (padded) {\n formatTokenFunctions[padded[0]] = function () {\n return zeroFill(func.apply(this, arguments), padded[1], padded[2]);\n };\n }\n if (ordinal) {\n formatTokenFunctions[ordinal] = function () {\n return this.localeData().ordinal(\n func.apply(this, arguments),\n token\n );\n };\n }\n }\n\n function removeFormattingTokens(input) {\n if (input.match(/\\[[\\s\\S]/)) {\n return input.replace(/^\\[|\\]$/g, '');\n }\n return input.replace(/\\\\/g, '');\n }\n\n function makeFormatFunction(format) {\n var array = format.match(formattingTokens),\n i,\n length;\n\n for (i = 0, length = array.length; i < length; i++) {\n if (formatTokenFunctions[array[i]]) {\n array[i] = formatTokenFunctions[array[i]];\n } else {\n array[i] = removeFormattingTokens(array[i]);\n }\n }\n\n return function (mom) {\n var output = '',\n i;\n for (i = 0; i < length; i++) {\n output += isFunction(array[i])\n ? array[i].call(mom, format)\n : array[i];\n }\n return output;\n };\n }\n\n // format date using native date object\n function formatMoment(m, format) {\n if (!m.isValid()) {\n return m.localeData().invalidDate();\n }\n\n format = expandFormat(format, m.localeData());\n formatFunctions[format] =\n formatFunctions[format] || makeFormatFunction(format);\n\n return formatFunctions[format](m);\n }\n\n function expandFormat(format, locale) {\n var i = 5;\n\n function replaceLongDateFormatTokens(input) {\n return locale.longDateFormat(input) || input;\n }\n\n localFormattingTokens.lastIndex = 0;\n while (i >= 0 && localFormattingTokens.test(format)) {\n format = format.replace(\n localFormattingTokens,\n replaceLongDateFormatTokens\n );\n localFormattingTokens.lastIndex = 0;\n i -= 1;\n }\n\n return format;\n }\n\n var defaultLongDateFormat = {\n LTS: 'h:mm:ss A',\n LT: 'h:mm A',\n L: 'MM/DD/YYYY',\n LL: 'MMMM D, YYYY',\n LLL: 'MMMM D, YYYY h:mm A',\n LLLL: 'dddd, MMMM D, YYYY h:mm A',\n };\n\n function longDateFormat(key) {\n var format = this._longDateFormat[key],\n formatUpper = this._longDateFormat[key.toUpperCase()];\n\n if (format || !formatUpper) {\n return format;\n }\n\n this._longDateFormat[key] = formatUpper\n .match(formattingTokens)\n .map(function (tok) {\n if (\n tok === 'MMMM' ||\n tok === 'MM' ||\n tok === 'DD' ||\n tok === 'dddd'\n ) {\n return tok.slice(1);\n }\n return tok;\n })\n .join('');\n\n return this._longDateFormat[key];\n }\n\n var defaultInvalidDate = 'Invalid date';\n\n function invalidDate() {\n return this._invalidDate;\n }\n\n var defaultOrdinal = '%d',\n defaultDayOfMonthOrdinalParse = /\\d{1,2}/;\n\n function ordinal(number) {\n return this._ordinal.replace('%d', number);\n }\n\n var defaultRelativeTime = {\n future: 'in %s',\n past: '%s ago',\n s: 'a few seconds',\n ss: '%d seconds',\n m: 'a minute',\n mm: '%d minutes',\n h: 'an hour',\n hh: '%d hours',\n d: 'a day',\n dd: '%d days',\n w: 'a week',\n ww: '%d weeks',\n M: 'a month',\n MM: '%d months',\n y: 'a year',\n yy: '%d years',\n };\n\n function relativeTime(number, withoutSuffix, string, isFuture) {\n var output = this._relativeTime[string];\n return isFunction(output)\n ? output(number, withoutSuffix, string, isFuture)\n : output.replace(/%d/i, number);\n }\n\n function pastFuture(diff, output) {\n var format = this._relativeTime[diff > 0 ? 'future' : 'past'];\n return isFunction(format) ? format(output) : format.replace(/%s/i, output);\n }\n\n var aliases = {\n D: 'date',\n dates: 'date',\n date: 'date',\n d: 'day',\n days: 'day',\n day: 'day',\n e: 'weekday',\n weekdays: 'weekday',\n weekday: 'weekday',\n E: 'isoWeekday',\n isoweekdays: 'isoWeekday',\n isoweekday: 'isoWeekday',\n DDD: 'dayOfYear',\n dayofyears: 'dayOfYear',\n dayofyear: 'dayOfYear',\n h: 'hour',\n hours: 'hour',\n hour: 'hour',\n ms: 'millisecond',\n milliseconds: 'millisecond',\n millisecond: 'millisecond',\n m: 'minute',\n minutes: 'minute',\n minute: 'minute',\n M: 'month',\n months: 'month',\n month: 'month',\n Q: 'quarter',\n quarters: 'quarter',\n quarter: 'quarter',\n s: 'second',\n seconds: 'second',\n second: 'second',\n gg: 'weekYear',\n weekyears: 'weekYear',\n weekyear: 'weekYear',\n GG: 'isoWeekYear',\n isoweekyears: 'isoWeekYear',\n isoweekyear: 'isoWeekYear',\n w: 'week',\n weeks: 'week',\n week: 'week',\n W: 'isoWeek',\n isoweeks: 'isoWeek',\n isoweek: 'isoWeek',\n y: 'year',\n years: 'year',\n year: 'year',\n };\n\n function normalizeUnits(units) {\n return typeof units === 'string'\n ? aliases[units] || aliases[units.toLowerCase()]\n : undefined;\n }\n\n function normalizeObjectUnits(inputObject) {\n var normalizedInput = {},\n normalizedProp,\n prop;\n\n for (prop in inputObject) {\n if (hasOwnProp(inputObject, prop)) {\n normalizedProp = normalizeUnits(prop);\n if (normalizedProp) {\n normalizedInput[normalizedProp] = inputObject[prop];\n }\n }\n }\n\n return normalizedInput;\n }\n\n var priorities = {\n date: 9,\n day: 11,\n weekday: 11,\n isoWeekday: 11,\n dayOfYear: 4,\n hour: 13,\n millisecond: 16,\n minute: 14,\n month: 8,\n quarter: 7,\n second: 15,\n weekYear: 1,\n isoWeekYear: 1,\n week: 5,\n isoWeek: 5,\n year: 1,\n };\n\n function getPrioritizedUnits(unitsObj) {\n var units = [],\n u;\n for (u in unitsObj) {\n if (hasOwnProp(unitsObj, u)) {\n units.push({ unit: u, priority: priorities[u] });\n }\n }\n units.sort(function (a, b) {\n return a.priority - b.priority;\n });\n return units;\n }\n\n var match1 = /\\d/, // 0 - 9\n match2 = /\\d\\d/, // 00 - 99\n match3 = /\\d{3}/, // 000 - 999\n match4 = /\\d{4}/, // 0000 - 9999\n match6 = /[+-]?\\d{6}/, // -999999 - 999999\n match1to2 = /\\d\\d?/, // 0 - 99\n match3to4 = /\\d\\d\\d\\d?/, // 999 - 9999\n match5to6 = /\\d\\d\\d\\d\\d\\d?/, // 99999 - 999999\n match1to3 = /\\d{1,3}/, // 0 - 999\n match1to4 = /\\d{1,4}/, // 0 - 9999\n match1to6 = /[+-]?\\d{1,6}/, // -999999 - 999999\n matchUnsigned = /\\d+/, // 0 - inf\n matchSigned = /[+-]?\\d+/, // -inf - inf\n matchOffset = /Z|[+-]\\d\\d:?\\d\\d/gi, // +00:00 -00:00 +0000 -0000 or Z\n matchShortOffset = /Z|[+-]\\d\\d(?::?\\d\\d)?/gi, // +00 -00 +00:00 -00:00 +0000 -0000 or Z\n matchTimestamp = /[+-]?\\d+(\\.\\d{1,3})?/, // 123456789 123456789.123\n // any word (or two) characters or numbers including two/three word month in arabic.\n // includes scottish gaelic two word and hyphenated months\n matchWord =\n /[0-9]{0,256}['a-z\\u00A0-\\u05FF\\u0700-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFF07\\uFF10-\\uFFEF]{1,256}|[\\u0600-\\u06FF\\/]{1,256}(\\s*?[\\u0600-\\u06FF]{1,256}){1,2}/i,\n match1to2NoLeadingZero = /^[1-9]\\d?/, // 1-99\n match1to2HasZero = /^([1-9]\\d|\\d)/, // 0-99\n regexes;\n\n regexes = {};\n\n function addRegexToken(token, regex, strictRegex) {\n regexes[token] = isFunction(regex)\n ? regex\n : function (isStrict, localeData) {\n return isStrict && strictRegex ? strictRegex : regex;\n };\n }\n\n function getParseRegexForToken(token, config) {\n if (!hasOwnProp(regexes, token)) {\n return new RegExp(unescapeFormat(token));\n }\n\n return regexes[token](config._strict, config._locale);\n }\n\n // Code from http://stackoverflow.com/questions/3561493/is-there-a-regexp-escape-function-in-javascript\n function unescapeFormat(s) {\n return regexEscape(\n s\n .replace('\\\\', '')\n .replace(\n /\\\\(\\[)|\\\\(\\])|\\[([^\\]\\[]*)\\]|\\\\(.)/g,\n function (matched, p1, p2, p3, p4) {\n return p1 || p2 || p3 || p4;\n }\n )\n );\n }\n\n function regexEscape(s) {\n return s.replace(/[-\\/\\\\^$*+?.()|[\\]{}]/g, '\\\\$&');\n }\n\n function absFloor(number) {\n if (number < 0) {\n // -0 -> 0\n return Math.ceil(number) || 0;\n } else {\n return Math.floor(number);\n }\n }\n\n function toInt(argumentForCoercion) {\n var coercedNumber = +argumentForCoercion,\n value = 0;\n\n if (coercedNumber !== 0 && isFinite(coercedNumber)) {\n value = absFloor(coercedNumber);\n }\n\n return value;\n }\n\n var tokens = {};\n\n function addParseToken(token, callback) {\n var i,\n func = callback,\n tokenLen;\n if (typeof token === 'string') {\n token = [token];\n }\n if (isNumber(callback)) {\n func = function (input, array) {\n array[callback] = toInt(input);\n };\n }\n tokenLen = token.length;\n for (i = 0; i < tokenLen; i++) {\n tokens[token[i]] = func;\n }\n }\n\n function addWeekParseToken(token, callback) {\n addParseToken(token, function (input, array, config, token) {\n config._w = config._w || {};\n callback(input, config._w, config, token);\n });\n }\n\n function addTimeToArrayFromToken(token, input, config) {\n if (input != null && hasOwnProp(tokens, token)) {\n tokens[token](input, config._a, config, token);\n }\n }\n\n function isLeapYear(year) {\n return (year % 4 === 0 && year % 100 !== 0) || year % 400 === 0;\n }\n\n var YEAR = 0,\n MONTH = 1,\n DATE = 2,\n HOUR = 3,\n MINUTE = 4,\n SECOND = 5,\n MILLISECOND = 6,\n WEEK = 7,\n WEEKDAY = 8;\n\n // FORMATTING\n\n addFormatToken('Y', 0, 0, function () {\n var y = this.year();\n return y <= 9999 ? zeroFill(y, 4) : '+' + y;\n });\n\n addFormatToken(0, ['YY', 2], 0, function () {\n return this.year() % 100;\n });\n\n addFormatToken(0, ['YYYY', 4], 0, 'year');\n addFormatToken(0, ['YYYYY', 5], 0, 'year');\n addFormatToken(0, ['YYYYYY', 6, true], 0, 'year');\n\n // PARSING\n\n addRegexToken('Y', matchSigned);\n addRegexToken('YY', match1to2, match2);\n addRegexToken('YYYY', match1to4, match4);\n addRegexToken('YYYYY', match1to6, match6);\n addRegexToken('YYYYYY', match1to6, match6);\n\n addParseToken(['YYYYY', 'YYYYYY'], YEAR);\n addParseToken('YYYY', function (input, array) {\n array[YEAR] =\n input.length === 2 ? hooks.parseTwoDigitYear(input) : toInt(input);\n });\n addParseToken('YY', function (input, array) {\n array[YEAR] = hooks.parseTwoDigitYear(input);\n });\n addParseToken('Y', function (input, array) {\n array[YEAR] = parseInt(input, 10);\n });\n\n // HELPERS\n\n function daysInYear(year) {\n return isLeapYear(year) ? 366 : 365;\n }\n\n // HOOKS\n\n hooks.parseTwoDigitYear = function (input) {\n return toInt(input) + (toInt(input) > 68 ? 1900 : 2000);\n };\n\n // MOMENTS\n\n var getSetYear = makeGetSet('FullYear', true);\n\n function getIsLeapYear() {\n return isLeapYear(this.year());\n }\n\n function makeGetSet(unit, keepTime) {\n return function (value) {\n if (value != null) {\n set$1(this, unit, value);\n hooks.updateOffset(this, keepTime);\n return this;\n } else {\n return get(this, unit);\n }\n };\n }\n\n function get(mom, unit) {\n if (!mom.isValid()) {\n return NaN;\n }\n\n var d = mom._d,\n isUTC = mom._isUTC;\n\n switch (unit) {\n case 'Milliseconds':\n return isUTC ? d.getUTCMilliseconds() : d.getMilliseconds();\n case 'Seconds':\n return isUTC ? d.getUTCSeconds() : d.getSeconds();\n case 'Minutes':\n return isUTC ? d.getUTCMinutes() : d.getMinutes();\n case 'Hours':\n return isUTC ? d.getUTCHours() : d.getHours();\n case 'Date':\n return isUTC ? d.getUTCDate() : d.getDate();\n case 'Day':\n return isUTC ? d.getUTCDay() : d.getDay();\n case 'Month':\n return isUTC ? d.getUTCMonth() : d.getMonth();\n case 'FullYear':\n return isUTC ? d.getUTCFullYear() : d.getFullYear();\n default:\n return NaN; // Just in case\n }\n }\n\n function set$1(mom, unit, value) {\n var d, isUTC, year, month, date;\n\n if (!mom.isValid() || isNaN(value)) {\n return;\n }\n\n d = mom._d;\n isUTC = mom._isUTC;\n\n switch (unit) {\n case 'Milliseconds':\n return void (isUTC\n ? d.setUTCMilliseconds(value)\n : d.setMilliseconds(value));\n case 'Seconds':\n return void (isUTC ? d.setUTCSeconds(value) : d.setSeconds(value));\n case 'Minutes':\n return void (isUTC ? d.setUTCMinutes(value) : d.setMinutes(value));\n case 'Hours':\n return void (isUTC ? d.setUTCHours(value) : d.setHours(value));\n case 'Date':\n return void (isUTC ? d.setUTCDate(value) : d.setDate(value));\n // case 'Day': // Not real\n // return void (isUTC ? d.setUTCDay(value) : d.setDay(value));\n // case 'Month': // Not used because we need to pass two variables\n // return void (isUTC ? d.setUTCMonth(value) : d.setMonth(value));\n case 'FullYear':\n break; // See below ...\n default:\n return; // Just in case\n }\n\n year = value;\n month = mom.month();\n date = mom.date();\n date = date === 29 && month === 1 && !isLeapYear(year) ? 28 : date;\n void (isUTC\n ? d.setUTCFullYear(year, month, date)\n : d.setFullYear(year, month, date));\n }\n\n // MOMENTS\n\n function stringGet(units) {\n units = normalizeUnits(units);\n if (isFunction(this[units])) {\n return this[units]();\n }\n return this;\n }\n\n function stringSet(units, value) {\n if (typeof units === 'object') {\n units = normalizeObjectUnits(units);\n var prioritized = getPrioritizedUnits(units),\n i,\n prioritizedLen = prioritized.length;\n for (i = 0; i < prioritizedLen; i++) {\n this[prioritized[i].unit](units[prioritized[i].unit]);\n }\n } else {\n units = normalizeUnits(units);\n if (isFunction(this[units])) {\n return this[units](value);\n }\n }\n return this;\n }\n\n function mod(n, x) {\n return ((n % x) + x) % x;\n }\n\n var indexOf;\n\n if (Array.prototype.indexOf) {\n indexOf = Array.prototype.indexOf;\n } else {\n indexOf = function (o) {\n // I know\n var i;\n for (i = 0; i < this.length; ++i) {\n if (this[i] === o) {\n return i;\n }\n }\n return -1;\n };\n }\n\n function daysInMonth(year, month) {\n if (isNaN(year) || isNaN(month)) {\n return NaN;\n }\n var modMonth = mod(month, 12);\n year += (month - modMonth) / 12;\n return modMonth === 1\n ? isLeapYear(year)\n ? 29\n : 28\n : 31 - ((modMonth % 7) % 2);\n }\n\n // FORMATTING\n\n addFormatToken('M', ['MM', 2], 'Mo', function () {\n return this.month() + 1;\n });\n\n addFormatToken('MMM', 0, 0, function (format) {\n return this.localeData().monthsShort(this, format);\n });\n\n addFormatToken('MMMM', 0, 0, function (format) {\n return this.localeData().months(this, format);\n });\n\n // PARSING\n\n addRegexToken('M', match1to2, match1to2NoLeadingZero);\n addRegexToken('MM', match1to2, match2);\n addRegexToken('MMM', function (isStrict, locale) {\n return locale.monthsShortRegex(isStrict);\n });\n addRegexToken('MMMM', function (isStrict, locale) {\n return locale.monthsRegex(isStrict);\n });\n\n addParseToken(['M', 'MM'], function (input, array) {\n array[MONTH] = toInt(input) - 1;\n });\n\n addParseToken(['MMM', 'MMMM'], function (input, array, config, token) {\n var month = config._locale.monthsParse(input, token, config._strict);\n // if we didn't find a month name, mark the date as invalid.\n if (month != null) {\n array[MONTH] = month;\n } else {\n getParsingFlags(config).invalidMonth = input;\n }\n });\n\n // LOCALES\n\n var defaultLocaleMonths =\n 'January_February_March_April_May_June_July_August_September_October_November_December'.split(\n '_'\n ),\n defaultLocaleMonthsShort =\n 'Jan_Feb_Mar_Apr_May_Jun_Jul_Aug_Sep_Oct_Nov_Dec'.split('_'),\n MONTHS_IN_FORMAT = /D[oD]?(\\[[^\\[\\]]*\\]|\\s)+MMMM?/,\n defaultMonthsShortRegex = matchWord,\n defaultMonthsRegex = matchWord;\n\n function localeMonths(m, format) {\n if (!m) {\n return isArray(this._months)\n ? this._months\n : this._months['standalone'];\n }\n return isArray(this._months)\n ? this._months[m.month()]\n : this._months[\n (this._months.isFormat || MONTHS_IN_FORMAT).test(format)\n ? 'format'\n : 'standalone'\n ][m.month()];\n }\n\n function localeMonthsShort(m, format) {\n if (!m) {\n return isArray(this._monthsShort)\n ? this._monthsShort\n : this._monthsShort['standalone'];\n }\n return isArray(this._monthsShort)\n ? this._monthsShort[m.month()]\n : this._monthsShort[\n MONTHS_IN_FORMAT.test(format) ? 'format' : 'standalone'\n ][m.month()];\n }\n\n function handleStrictParse(monthName, format, strict) {\n var i,\n ii,\n mom,\n llc = monthName.toLocaleLowerCase();\n if (!this._monthsParse) {\n // this is not used\n this._monthsParse = [];\n this._longMonthsParse = [];\n this._shortMonthsParse = [];\n for (i = 0; i < 12; ++i) {\n mom = createUTC([2000, i]);\n this._shortMonthsParse[i] = this.monthsShort(\n mom,\n ''\n ).toLocaleLowerCase();\n this._longMonthsParse[i] = this.months(mom, '').toLocaleLowerCase();\n }\n }\n\n if (strict) {\n if (format === 'MMM') {\n ii = indexOf.call(this._shortMonthsParse, llc);\n return ii !== -1 ? ii : null;\n } else {\n ii = indexOf.call(this._longMonthsParse, llc);\n return ii !== -1 ? ii : null;\n }\n } else {\n if (format === 'MMM') {\n ii = indexOf.call(this._shortMonthsParse, llc);\n if (ii !== -1) {\n return ii;\n }\n ii = indexOf.call(this._longMonthsParse, llc);\n return ii !== -1 ? ii : null;\n } else {\n ii = indexOf.call(this._longMonthsParse, llc);\n if (ii !== -1) {\n return ii;\n }\n ii = indexOf.call(this._shortMonthsParse, llc);\n return ii !== -1 ? ii : null;\n }\n }\n }\n\n function localeMonthsParse(monthName, format, strict) {\n var i, mom, regex;\n\n if (this._monthsParseExact) {\n return handleStrictParse.call(this, monthName, format, strict);\n }\n\n if (!this._monthsParse) {\n this._monthsParse = [];\n this._longMonthsParse = [];\n this._shortMonthsParse = [];\n }\n\n // TODO: add sorting\n // Sorting makes sure if one month (or abbr) is a prefix of another\n // see sorting in computeMonthsParse\n for (i = 0; i < 12; i++) {\n // make the regex if we don't have it already\n mom = createUTC([2000, i]);\n if (strict && !this._longMonthsParse[i]) {\n this._longMonthsParse[i] = new RegExp(\n '^' + this.months(mom, '').replace('.', '') + '$',\n 'i'\n );\n this._shortMonthsParse[i] = new RegExp(\n '^' + this.monthsShort(mom, '').replace('.', '') + '$',\n 'i'\n );\n }\n if (!strict && !this._monthsParse[i]) {\n regex =\n '^' + this.months(mom, '') + '|^' + this.monthsShort(mom, '');\n this._monthsParse[i] = new RegExp(regex.replace('.', ''), 'i');\n }\n // test the regex\n if (\n strict &&\n format === 'MMMM' &&\n this._longMonthsParse[i].test(monthName)\n ) {\n return i;\n } else if (\n strict &&\n format === 'MMM' &&\n this._shortMonthsParse[i].test(monthName)\n ) {\n return i;\n } else if (!strict && this._monthsParse[i].test(monthName)) {\n return i;\n }\n }\n }\n\n // MOMENTS\n\n function setMonth(mom, value) {\n if (!mom.isValid()) {\n // No op\n return mom;\n }\n\n if (typeof value === 'string') {\n if (/^\\d+$/.test(value)) {\n value = toInt(value);\n } else {\n value = mom.localeData().monthsParse(value);\n // TODO: Another silent failure?\n if (!isNumber(value)) {\n return mom;\n }\n }\n }\n\n var month = value,\n date = mom.date();\n\n date = date < 29 ? date : Math.min(date, daysInMonth(mom.year(), month));\n void (mom._isUTC\n ? mom._d.setUTCMonth(month, date)\n : mom._d.setMonth(month, date));\n return mom;\n }\n\n function getSetMonth(value) {\n if (value != null) {\n setMonth(this, value);\n hooks.updateOffset(this, true);\n return this;\n } else {\n return get(this, 'Month');\n }\n }\n\n function getDaysInMonth() {\n return daysInMonth(this.year(), this.month());\n }\n\n function monthsShortRegex(isStrict) {\n if (this._monthsParseExact) {\n if (!hasOwnProp(this, '_monthsRegex')) {\n computeMonthsParse.call(this);\n }\n if (isStrict) {\n return this._monthsShortStrictRegex;\n } else {\n return this._monthsShortRegex;\n }\n } else {\n if (!hasOwnProp(this, '_monthsShortRegex')) {\n this._monthsShortRegex = defaultMonthsShortRegex;\n }\n return this._monthsShortStrictRegex && isStrict\n ? this._monthsShortStrictRegex\n : this._monthsShortRegex;\n }\n }\n\n function monthsRegex(isStrict) {\n if (this._monthsParseExact) {\n if (!hasOwnProp(this, '_monthsRegex')) {\n computeMonthsParse.call(this);\n }\n if (isStrict) {\n return this._monthsStrictRegex;\n } else {\n return this._monthsRegex;\n }\n } else {\n if (!hasOwnProp(this, '_monthsRegex')) {\n this._monthsRegex = defaultMonthsRegex;\n }\n return this._monthsStrictRegex && isStrict\n ? this._monthsStrictRegex\n : this._monthsRegex;\n }\n }\n\n function computeMonthsParse() {\n function cmpLenRev(a, b) {\n return b.length - a.length;\n }\n\n var shortPieces = [],\n longPieces = [],\n mixedPieces = [],\n i,\n mom,\n shortP,\n longP;\n for (i = 0; i < 12; i++) {\n // make the regex if we don't have it already\n mom = createUTC([2000, i]);\n shortP = regexEscape(this.monthsShort(mom, ''));\n longP = regexEscape(this.months(mom, ''));\n shortPieces.push(shortP);\n longPieces.push(longP);\n mixedPieces.push(longP);\n mixedPieces.push(shortP);\n }\n // Sorting makes sure if one month (or abbr) is a prefix of another it\n // will match the longer piece.\n shortPieces.sort(cmpLenRev);\n longPieces.sort(cmpLenRev);\n mixedPieces.sort(cmpLenRev);\n\n this._monthsRegex = new RegExp('^(' + mixedPieces.join('|') + ')', 'i');\n this._monthsShortRegex = this._monthsRegex;\n this._monthsStrictRegex = new RegExp(\n '^(' + longPieces.join('|') + ')',\n 'i'\n );\n this._monthsShortStrictRegex = new RegExp(\n '^(' + shortPieces.join('|') + ')',\n 'i'\n );\n }\n\n function createDate(y, m, d, h, M, s, ms) {\n // can't just apply() to create a date:\n // https://stackoverflow.com/q/181348\n var date;\n // the date constructor remaps years 0-99 to 1900-1999\n if (y < 100 && y >= 0) {\n // preserve leap years using a full 400 year cycle, then reset\n date = new Date(y + 400, m, d, h, M, s, ms);\n if (isFinite(date.getFullYear())) {\n date.setFullYear(y);\n }\n } else {\n date = new Date(y, m, d, h, M, s, ms);\n }\n\n return date;\n }\n\n function createUTCDate(y) {\n var date, args;\n // the Date.UTC function remaps years 0-99 to 1900-1999\n if (y < 100 && y >= 0) {\n args = Array.prototype.slice.call(arguments);\n // preserve leap years using a full 400 year cycle, then reset\n args[0] = y + 400;\n date = new Date(Date.UTC.apply(null, args));\n if (isFinite(date.getUTCFullYear())) {\n date.setUTCFullYear(y);\n }\n } else {\n date = new Date(Date.UTC.apply(null, arguments));\n }\n\n return date;\n }\n\n // start-of-first-week - start-of-year\n function firstWeekOffset(year, dow, doy) {\n var // first-week day -- which january is always in the first week (4 for iso, 1 for other)\n fwd = 7 + dow - doy,\n // first-week day local weekday -- which local weekday is fwd\n fwdlw = (7 + createUTCDate(year, 0, fwd).getUTCDay() - dow) % 7;\n\n return -fwdlw + fwd - 1;\n }\n\n // https://en.wikipedia.org/wiki/ISO_week_date#Calculating_a_date_given_the_year.2C_week_number_and_weekday\n function dayOfYearFromWeeks(year, week, weekday, dow, doy) {\n var localWeekday = (7 + weekday - dow) % 7,\n weekOffset = firstWeekOffset(year, dow, doy),\n dayOfYear = 1 + 7 * (week - 1) + localWeekday + weekOffset,\n resYear,\n resDayOfYear;\n\n if (dayOfYear <= 0) {\n resYear = year - 1;\n resDayOfYear = daysInYear(resYear) + dayOfYear;\n } else if (dayOfYear > daysInYear(year)) {\n resYear = year + 1;\n resDayOfYear = dayOfYear - daysInYear(year);\n } else {\n resYear = year;\n resDayOfYear = dayOfYear;\n }\n\n return {\n year: resYear,\n dayOfYear: resDayOfYear,\n };\n }\n\n function weekOfYear(mom, dow, doy) {\n var weekOffset = firstWeekOffset(mom.year(), dow, doy),\n week = Math.floor((mom.dayOfYear() - weekOffset - 1) / 7) + 1,\n resWeek,\n resYear;\n\n if (week < 1) {\n resYear = mom.year() - 1;\n resWeek = week + weeksInYear(resYear, dow, doy);\n } else if (week > weeksInYear(mom.year(), dow, doy)) {\n resWeek = week - weeksInYear(mom.year(), dow, doy);\n resYear = mom.year() + 1;\n } else {\n resYear = mom.year();\n resWeek = week;\n }\n\n return {\n week: resWeek,\n year: resYear,\n };\n }\n\n function weeksInYear(year, dow, doy) {\n var weekOffset = firstWeekOffset(year, dow, doy),\n weekOffsetNext = firstWeekOffset(year + 1, dow, doy);\n return (daysInYear(year) - weekOffset + weekOffsetNext) / 7;\n }\n\n // FORMATTING\n\n addFormatToken('w', ['ww', 2], 'wo', 'week');\n addFormatToken('W', ['WW', 2], 'Wo', 'isoWeek');\n\n // PARSING\n\n addRegexToken('w', match1to2, match1to2NoLeadingZero);\n addRegexToken('ww', match1to2, match2);\n addRegexToken('W', match1to2, match1to2NoLeadingZero);\n addRegexToken('WW', match1to2, match2);\n\n addWeekParseToken(\n ['w', 'ww', 'W', 'WW'],\n function (input, week, config, token) {\n week[token.substr(0, 1)] = toInt(input);\n }\n );\n\n // HELPERS\n\n // LOCALES\n\n function localeWeek(mom) {\n return weekOfYear(mom, this._week.dow, this._week.doy).week;\n }\n\n var defaultLocaleWeek = {\n dow: 0, // Sunday is the first day of the week.\n doy: 6, // The week that contains Jan 6th is the first week of the year.\n };\n\n function localeFirstDayOfWeek() {\n return this._week.dow;\n }\n\n function localeFirstDayOfYear() {\n return this._week.doy;\n }\n\n // MOMENTS\n\n function getSetWeek(input) {\n var week = this.localeData().week(this);\n return input == null ? week : this.add((input - week) * 7, 'd');\n }\n\n function getSetISOWeek(input) {\n var week = weekOfYear(this, 1, 4).week;\n return input == null ? week : this.add((input - week) * 7, 'd');\n }\n\n // FORMATTING\n\n addFormatToken('d', 0, 'do', 'day');\n\n addFormatToken('dd', 0, 0, function (format) {\n return this.localeData().weekdaysMin(this, format);\n });\n\n addFormatToken('ddd', 0, 0, function (format) {\n return this.localeData().weekdaysShort(this, format);\n });\n\n addFormatToken('dddd', 0, 0, function (format) {\n return this.localeData().weekdays(this, format);\n });\n\n addFormatToken('e', 0, 0, 'weekday');\n addFormatToken('E', 0, 0, 'isoWeekday');\n\n // PARSING\n\n addRegexToken('d', match1to2);\n addRegexToken('e', match1to2);\n addRegexToken('E', match1to2);\n addRegexToken('dd', function (isStrict, locale) {\n return locale.weekdaysMinRegex(isStrict);\n });\n addRegexToken('ddd', function (isStrict, locale) {\n return locale.weekdaysShortRegex(isStrict);\n });\n addRegexToken('dddd', function (isStrict, locale) {\n return locale.weekdaysRegex(isStrict);\n });\n\n addWeekParseToken(['dd', 'ddd', 'dddd'], function (input, week, config, token) {\n var weekday = config._locale.weekdaysParse(input, token, config._strict);\n // if we didn't get a weekday name, mark the date as invalid\n if (weekday != null) {\n week.d = weekday;\n } else {\n getParsingFlags(config).invalidWeekday = input;\n }\n });\n\n addWeekParseToken(['d', 'e', 'E'], function (input, week, config, token) {\n week[token] = toInt(input);\n });\n\n // HELPERS\n\n function parseWeekday(input, locale) {\n if (typeof input !== 'string') {\n return input;\n }\n\n if (!isNaN(input)) {\n return parseInt(input, 10);\n }\n\n input = locale.weekdaysParse(input);\n if (typeof input === 'number') {\n return input;\n }\n\n return null;\n }\n\n function parseIsoWeekday(input, locale) {\n if (typeof input === 'string') {\n return locale.weekdaysParse(input) % 7 || 7;\n }\n return isNaN(input) ? null : input;\n }\n\n // LOCALES\n function shiftWeekdays(ws, n) {\n return ws.slice(n, 7).concat(ws.slice(0, n));\n }\n\n var defaultLocaleWeekdays =\n 'Sunday_Monday_Tuesday_Wednesday_Thursday_Friday_Saturday'.split('_'),\n defaultLocaleWeekdaysShort = 'Sun_Mon_Tue_Wed_Thu_Fri_Sat'.split('_'),\n defaultLocaleWeekdaysMin = 'Su_Mo_Tu_We_Th_Fr_Sa'.split('_'),\n defaultWeekdaysRegex = matchWord,\n defaultWeekdaysShortRegex = matchWord,\n defaultWeekdaysMinRegex = matchWord;\n\n function localeWeekdays(m, format) {\n var weekdays = isArray(this._weekdays)\n ? this._weekdays\n : this._weekdays[\n m && m !== true && this._weekdays.isFormat.test(format)\n ? 'format'\n : 'standalone'\n ];\n return m === true\n ? shiftWeekdays(weekdays, this._week.dow)\n : m\n ? weekdays[m.day()]\n : weekdays;\n }\n\n function localeWeekdaysShort(m) {\n return m === true\n ? shiftWeekdays(this._weekdaysShort, this._week.dow)\n : m\n ? this._weekdaysShort[m.day()]\n : this._weekdaysShort;\n }\n\n function localeWeekdaysMin(m) {\n return m === true\n ? shiftWeekdays(this._weekdaysMin, this._week.dow)\n : m\n ? this._weekdaysMin[m.day()]\n : this._weekdaysMin;\n }\n\n function handleStrictParse$1(weekdayName, format, strict) {\n var i,\n ii,\n mom,\n llc = weekdayName.toLocaleLowerCase();\n if (!this._weekdaysParse) {\n this._weekdaysParse = [];\n this._shortWeekdaysParse = [];\n this._minWeekdaysParse = [];\n\n for (i = 0; i < 7; ++i) {\n mom = createUTC([2000, 1]).day(i);\n this._minWeekdaysParse[i] = this.weekdaysMin(\n mom,\n ''\n ).toLocaleLowerCase();\n this._shortWeekdaysParse[i] = this.weekdaysShort(\n mom,\n ''\n ).toLocaleLowerCase();\n this._weekdaysParse[i] = this.weekdays(mom, '').toLocaleLowerCase();\n }\n }\n\n if (strict) {\n if (format === 'dddd') {\n ii = indexOf.call(this._weekdaysParse, llc);\n return ii !== -1 ? ii : null;\n } else if (format === 'ddd') {\n ii = indexOf.call(this._shortWeekdaysParse, llc);\n return ii !== -1 ? ii : null;\n } else {\n ii = indexOf.call(this._minWeekdaysParse, llc);\n return ii !== -1 ? ii : null;\n }\n } else {\n if (format === 'dddd') {\n ii = indexOf.call(this._weekdaysParse, llc);\n if (ii !== -1) {\n return ii;\n }\n ii = indexOf.call(this._shortWeekdaysParse, llc);\n if (ii !== -1) {\n return ii;\n }\n ii = indexOf.call(this._minWeekdaysParse, llc);\n return ii !== -1 ? ii : null;\n } else if (format === 'ddd') {\n ii = indexOf.call(this._shortWeekdaysParse, llc);\n if (ii !== -1) {\n return ii;\n }\n ii = indexOf.call(this._weekdaysParse, llc);\n if (ii !== -1) {\n return ii;\n }\n ii = indexOf.call(this._minWeekdaysParse, llc);\n return ii !== -1 ? ii : null;\n } else {\n ii = indexOf.call(this._minWeekdaysParse, llc);\n if (ii !== -1) {\n return ii;\n }\n ii = indexOf.call(this._weekdaysParse, llc);\n if (ii !== -1) {\n return ii;\n }\n ii = indexOf.call(this._shortWeekdaysParse, llc);\n return ii !== -1 ? ii : null;\n }\n }\n }\n\n function localeWeekdaysParse(weekdayName, format, strict) {\n var i, mom, regex;\n\n if (this._weekdaysParseExact) {\n return handleStrictParse$1.call(this, weekdayName, format, strict);\n }\n\n if (!this._weekdaysParse) {\n this._weekdaysParse = [];\n this._minWeekdaysParse = [];\n this._shortWeekdaysParse = [];\n this._fullWeekdaysParse = [];\n }\n\n for (i = 0; i < 7; i++) {\n // make the regex if we don't have it already\n\n mom = createUTC([2000, 1]).day(i);\n if (strict && !this._fullWeekdaysParse[i]) {\n this._fullWeekdaysParse[i] = new RegExp(\n '^' + this.weekdays(mom, '').replace('.', '\\\\.?') + '$',\n 'i'\n );\n this._shortWeekdaysParse[i] = new RegExp(\n '^' + this.weekdaysShort(mom, '').replace('.', '\\\\.?') + '$',\n 'i'\n );\n this._minWeekdaysParse[i] = new RegExp(\n '^' + this.weekdaysMin(mom, '').replace('.', '\\\\.?') + '$',\n 'i'\n );\n }\n if (!this._weekdaysParse[i]) {\n regex =\n '^' +\n this.weekdays(mom, '') +\n '|^' +\n this.weekdaysShort(mom, '') +\n '|^' +\n this.weekdaysMin(mom, '');\n this._weekdaysParse[i] = new RegExp(regex.replace('.', ''), 'i');\n }\n // test the regex\n if (\n strict &&\n format === 'dddd' &&\n this._fullWeekdaysParse[i].test(weekdayName)\n ) {\n return i;\n } else if (\n strict &&\n format === 'ddd' &&\n this._shortWeekdaysParse[i].test(weekdayName)\n ) {\n return i;\n } else if (\n strict &&\n format === 'dd' &&\n this._minWeekdaysParse[i].test(weekdayName)\n ) {\n return i;\n } else if (!strict && this._weekdaysParse[i].test(weekdayName)) {\n return i;\n }\n }\n }\n\n // MOMENTS\n\n function getSetDayOfWeek(input) {\n if (!this.isValid()) {\n return input != null ? this : NaN;\n }\n\n var day = get(this, 'Day');\n if (input != null) {\n input = parseWeekday(input, this.localeData());\n return this.add(input - day, 'd');\n } else {\n return day;\n }\n }\n\n function getSetLocaleDayOfWeek(input) {\n if (!this.isValid()) {\n return input != null ? this : NaN;\n }\n var weekday = (this.day() + 7 - this.localeData()._week.dow) % 7;\n return input == null ? weekday : this.add(input - weekday, 'd');\n }\n\n function getSetISODayOfWeek(input) {\n if (!this.isValid()) {\n return input != null ? this : NaN;\n }\n\n // behaves the same as moment#day except\n // as a getter, returns 7 instead of 0 (1-7 range instead of 0-6)\n // as a setter, sunday should belong to the previous week.\n\n if (input != null) {\n var weekday = parseIsoWeekday(input, this.localeData());\n return this.day(this.day() % 7 ? weekday : weekday - 7);\n } else {\n return this.day() || 7;\n }\n }\n\n function weekdaysRegex(isStrict) {\n if (this._weekdaysParseExact) {\n if (!hasOwnProp(this, '_weekdaysRegex')) {\n computeWeekdaysParse.call(this);\n }\n if (isStrict) {\n return this._weekdaysStrictRegex;\n } else {\n return this._weekdaysRegex;\n }\n } else {\n if (!hasOwnProp(this, '_weekdaysRegex')) {\n this._weekdaysRegex = defaultWeekdaysRegex;\n }\n return this._weekdaysStrictRegex && isStrict\n ? this._weekdaysStrictRegex\n : this._weekdaysRegex;\n }\n }\n\n function weekdaysShortRegex(isStrict) {\n if (this._weekdaysParseExact) {\n if (!hasOwnProp(this, '_weekdaysRegex')) {\n computeWeekdaysParse.call(this);\n }\n if (isStrict) {\n return this._weekdaysShortStrictRegex;\n } else {\n return this._weekdaysShortRegex;\n }\n } else {\n if (!hasOwnProp(this, '_weekdaysShortRegex')) {\n this._weekdaysShortRegex = defaultWeekdaysShortRegex;\n }\n return this._weekdaysShortStrictRegex && isStrict\n ? this._weekdaysShortStrictRegex\n : this._weekdaysShortRegex;\n }\n }\n\n function weekdaysMinRegex(isStrict) {\n if (this._weekdaysParseExact) {\n if (!hasOwnProp(this, '_weekdaysRegex')) {\n computeWeekdaysParse.call(this);\n }\n if (isStrict) {\n return this._weekdaysMinStrictRegex;\n } else {\n return this._weekdaysMinRegex;\n }\n } else {\n if (!hasOwnProp(this, '_weekdaysMinRegex')) {\n this._weekdaysMinRegex = defaultWeekdaysMinRegex;\n }\n return this._weekdaysMinStrictRegex && isStrict\n ? this._weekdaysMinStrictRegex\n : this._weekdaysMinRegex;\n }\n }\n\n function computeWeekdaysParse() {\n function cmpLenRev(a, b) {\n return b.length - a.length;\n }\n\n var minPieces = [],\n shortPieces = [],\n longPieces = [],\n mixedPieces = [],\n i,\n mom,\n minp,\n shortp,\n longp;\n for (i = 0; i < 7; i++) {\n // make the regex if we don't have it already\n mom = createUTC([2000, 1]).day(i);\n minp = regexEscape(this.weekdaysMin(mom, ''));\n shortp = regexEscape(this.weekdaysShort(mom, ''));\n longp = regexEscape(this.weekdays(mom, ''));\n minPieces.push(minp);\n shortPieces.push(shortp);\n longPieces.push(longp);\n mixedPieces.push(minp);\n mixedPieces.push(shortp);\n mixedPieces.push(longp);\n }\n // Sorting makes sure if one weekday (or abbr) is a prefix of another it\n // will match the longer piece.\n minPieces.sort(cmpLenRev);\n shortPieces.sort(cmpLenRev);\n longPieces.sort(cmpLenRev);\n mixedPieces.sort(cmpLenRev);\n\n this._weekdaysRegex = new RegExp('^(' + mixedPieces.join('|') + ')', 'i');\n this._weekdaysShortRegex = this._weekdaysRegex;\n this._weekdaysMinRegex = this._weekdaysRegex;\n\n this._weekdaysStrictRegex = new RegExp(\n '^(' + longPieces.join('|') + ')',\n 'i'\n );\n this._weekdaysShortStrictRegex = new RegExp(\n '^(' + shortPieces.join('|') + ')',\n 'i'\n );\n this._weekdaysMinStrictRegex = new RegExp(\n '^(' + minPieces.join('|') + ')',\n 'i'\n );\n }\n\n // FORMATTING\n\n function hFormat() {\n return this.hours() % 12 || 12;\n }\n\n function kFormat() {\n return this.hours() || 24;\n }\n\n addFormatToken('H', ['HH', 2], 0, 'hour');\n addFormatToken('h', ['hh', 2], 0, hFormat);\n addFormatToken('k', ['kk', 2], 0, kFormat);\n\n addFormatToken('hmm', 0, 0, function () {\n return '' + hFormat.apply(this) + zeroFill(this.minutes(), 2);\n });\n\n addFormatToken('hmmss', 0, 0, function () {\n return (\n '' +\n hFormat.apply(this) +\n zeroFill(this.minutes(), 2) +\n zeroFill(this.seconds(), 2)\n );\n });\n\n addFormatToken('Hmm', 0, 0, function () {\n return '' + this.hours() + zeroFill(this.minutes(), 2);\n });\n\n addFormatToken('Hmmss', 0, 0, function () {\n return (\n '' +\n this.hours() +\n zeroFill(this.minutes(), 2) +\n zeroFill(this.seconds(), 2)\n );\n });\n\n function meridiem(token, lowercase) {\n addFormatToken(token, 0, 0, function () {\n return this.localeData().meridiem(\n this.hours(),\n this.minutes(),\n lowercase\n );\n });\n }\n\n meridiem('a', true);\n meridiem('A', false);\n\n // PARSING\n\n function matchMeridiem(isStrict, locale) {\n return locale._meridiemParse;\n }\n\n addRegexToken('a', matchMeridiem);\n addRegexToken('A', matchMeridiem);\n addRegexToken('H', match1to2, match1to2HasZero);\n addRegexToken('h', match1to2, match1to2NoLeadingZero);\n addRegexToken('k', match1to2, match1to2NoLeadingZero);\n addRegexToken('HH', match1to2, match2);\n addRegexToken('hh', match1to2, match2);\n addRegexToken('kk', match1to2, match2);\n\n addRegexToken('hmm', match3to4);\n addRegexToken('hmmss', match5to6);\n addRegexToken('Hmm', match3to4);\n addRegexToken('Hmmss', match5to6);\n\n addParseToken(['H', 'HH'], HOUR);\n addParseToken(['k', 'kk'], function (input, array, config) {\n var kInput = toInt(input);\n array[HOUR] = kInput === 24 ? 0 : kInput;\n });\n addParseToken(['a', 'A'], function (input, array, config) {\n config._isPm = config._locale.isPM(input);\n config._meridiem = input;\n });\n addParseToken(['h', 'hh'], function (input, array, config) {\n array[HOUR] = toInt(input);\n getParsingFlags(config).bigHour = true;\n });\n addParseToken('hmm', function (input, array, config) {\n var pos = input.length - 2;\n array[HOUR] = toInt(input.substr(0, pos));\n array[MINUTE] = toInt(input.substr(pos));\n getParsingFlags(config).bigHour = true;\n });\n addParseToken('hmmss', function (input, array, config) {\n var pos1 = input.length - 4,\n pos2 = input.length - 2;\n array[HOUR] = toInt(input.substr(0, pos1));\n array[MINUTE] = toInt(input.substr(pos1, 2));\n array[SECOND] = toInt(input.substr(pos2));\n getParsingFlags(config).bigHour = true;\n });\n addParseToken('Hmm', function (input, array, config) {\n var pos = input.length - 2;\n array[HOUR] = toInt(input.substr(0, pos));\n array[MINUTE] = toInt(input.substr(pos));\n });\n addParseToken('Hmmss', function (input, array, config) {\n var pos1 = input.length - 4,\n pos2 = input.length - 2;\n array[HOUR] = toInt(input.substr(0, pos1));\n array[MINUTE] = toInt(input.substr(pos1, 2));\n array[SECOND] = toInt(input.substr(pos2));\n });\n\n // LOCALES\n\n function localeIsPM(input) {\n // IE8 Quirks Mode & IE7 Standards Mode do not allow accessing strings like arrays\n // Using charAt should be more compatible.\n return (input + '').toLowerCase().charAt(0) === 'p';\n }\n\n var defaultLocaleMeridiemParse = /[ap]\\.?m?\\.?/i,\n // Setting the hour should keep the time, because the user explicitly\n // specified which hour they want. So trying to maintain the same hour (in\n // a new timezone) makes sense. Adding/subtracting hours does not follow\n // this rule.\n getSetHour = makeGetSet('Hours', true);\n\n function localeMeridiem(hours, minutes, isLower) {\n if (hours > 11) {\n return isLower ? 'pm' : 'PM';\n } else {\n return isLower ? 'am' : 'AM';\n }\n }\n\n var baseConfig = {\n calendar: defaultCalendar,\n longDateFormat: defaultLongDateFormat,\n invalidDate: defaultInvalidDate,\n ordinal: defaultOrdinal,\n dayOfMonthOrdinalParse: defaultDayOfMonthOrdinalParse,\n relativeTime: defaultRelativeTime,\n\n months: defaultLocaleMonths,\n monthsShort: defaultLocaleMonthsShort,\n\n week: defaultLocaleWeek,\n\n weekdays: defaultLocaleWeekdays,\n weekdaysMin: defaultLocaleWeekdaysMin,\n weekdaysShort: defaultLocaleWeekdaysShort,\n\n meridiemParse: defaultLocaleMeridiemParse,\n };\n\n // internal storage for locale config files\n var locales = {},\n localeFamilies = {},\n globalLocale;\n\n function commonPrefix(arr1, arr2) {\n var i,\n minl = Math.min(arr1.length, arr2.length);\n for (i = 0; i < minl; i += 1) {\n if (arr1[i] !== arr2[i]) {\n return i;\n }\n }\n return minl;\n }\n\n function normalizeLocale(key) {\n return key ? key.toLowerCase().replace('_', '-') : key;\n }\n\n // pick the locale from the array\n // try ['en-au', 'en-gb'] as 'en-au', 'en-gb', 'en', as in move through the list trying each\n // substring from most specific to least, but move to the next array item if it's a more specific variant than the current root\n function chooseLocale(names) {\n var i = 0,\n j,\n next,\n locale,\n split;\n\n while (i < names.length) {\n split = normalizeLocale(names[i]).split('-');\n j = split.length;\n next = normalizeLocale(names[i + 1]);\n next = next ? next.split('-') : null;\n while (j > 0) {\n locale = loadLocale(split.slice(0, j).join('-'));\n if (locale) {\n return locale;\n }\n if (\n next &&\n next.length >= j &&\n commonPrefix(split, next) >= j - 1\n ) {\n //the next array item is better than a shallower substring of this one\n break;\n }\n j--;\n }\n i++;\n }\n return globalLocale;\n }\n\n function isLocaleNameSane(name) {\n // Prevent names that look like filesystem paths, i.e contain '/' or '\\'\n // Ensure name is available and function returns boolean\n return !!(name && name.match('^[^/\\\\\\\\]*$'));\n }\n\n function loadLocale(name) {\n var oldLocale = null,\n aliasedRequire;\n // TODO: Find a better way to register and load all the locales in Node\n if (\n locales[name] === undefined &&\n typeof module !== 'undefined' &&\n module &&\n module.exports &&\n isLocaleNameSane(name)\n ) {\n try {\n oldLocale = globalLocale._abbr;\n aliasedRequire = require;\n aliasedRequire('./locale/' + name);\n getSetGlobalLocale(oldLocale);\n } catch (e) {\n // mark as not found to avoid repeating expensive file require call causing high CPU\n // when trying to find en-US, en_US, en-us for every format call\n locales[name] = null; // null means not found\n }\n }\n return locales[name];\n }\n\n // This function will load locale and then set the global locale. If\n // no arguments are passed in, it will simply return the current global\n // locale key.\n function getSetGlobalLocale(key, values) {\n var data;\n if (key) {\n if (isUndefined(values)) {\n data = getLocale(key);\n } else {\n data = defineLocale(key, values);\n }\n\n if (data) {\n // moment.duration._locale = moment._locale = data;\n globalLocale = data;\n } else {\n if (typeof console !== 'undefined' && console.warn) {\n //warn user if arguments are passed but the locale could not be set\n console.warn(\n 'Locale ' + key + ' not found. Did you forget to load it?'\n );\n }\n }\n }\n\n return globalLocale._abbr;\n }\n\n function defineLocale(name, config) {\n if (config !== null) {\n var locale,\n parentConfig = baseConfig;\n config.abbr = name;\n if (locales[name] != null) {\n deprecateSimple(\n 'defineLocaleOverride',\n 'use moment.updateLocale(localeName, config) to change ' +\n 'an existing locale. moment.defineLocale(localeName, ' +\n 'config) should only be used for creating a new locale ' +\n 'See http://momentjs.com/guides/#/warnings/define-locale/ for more info.'\n );\n parentConfig = locales[name]._config;\n } else if (config.parentLocale != null) {\n if (locales[config.parentLocale] != null) {\n parentConfig = locales[config.parentLocale]._config;\n } else {\n locale = loadLocale(config.parentLocale);\n if (locale != null) {\n parentConfig = locale._config;\n } else {\n if (!localeFamilies[config.parentLocale]) {\n localeFamilies[config.parentLocale] = [];\n }\n localeFamilies[config.parentLocale].push({\n name: name,\n config: config,\n });\n return null;\n }\n }\n }\n locales[name] = new Locale(mergeConfigs(parentConfig, config));\n\n if (localeFamilies[name]) {\n localeFamilies[name].forEach(function (x) {\n defineLocale(x.name, x.config);\n });\n }\n\n // backwards compat for now: also set the locale\n // make sure we set the locale AFTER all child locales have been\n // created, so we won't end up with the child locale set.\n getSetGlobalLocale(name);\n\n return locales[name];\n } else {\n // useful for testing\n delete locales[name];\n return null;\n }\n }\n\n function updateLocale(name, config) {\n if (config != null) {\n var locale,\n tmpLocale,\n parentConfig = baseConfig;\n\n if (locales[name] != null && locales[name].parentLocale != null) {\n // Update existing child locale in-place to avoid memory-leaks\n locales[name].set(mergeConfigs(locales[name]._config, config));\n } else {\n // MERGE\n tmpLocale = loadLocale(name);\n if (tmpLocale != null) {\n parentConfig = tmpLocale._config;\n }\n config = mergeConfigs(parentConfig, config);\n if (tmpLocale == null) {\n // updateLocale is called for creating a new locale\n // Set abbr so it will have a name (getters return\n // undefined otherwise).\n config.abbr = name;\n }\n locale = new Locale(config);\n locale.parentLocale = locales[name];\n locales[name] = locale;\n }\n\n // backwards compat for now: also set the locale\n getSetGlobalLocale(name);\n } else {\n // pass null for config to unupdate, useful for tests\n if (locales[name] != null) {\n if (locales[name].parentLocale != null) {\n locales[name] = locales[name].parentLocale;\n if (name === getSetGlobalLocale()) {\n getSetGlobalLocale(name);\n }\n } else if (locales[name] != null) {\n delete locales[name];\n }\n }\n }\n return locales[name];\n }\n\n // returns locale data\n function getLocale(key) {\n var locale;\n\n if (key && key._locale && key._locale._abbr) {\n key = key._locale._abbr;\n }\n\n if (!key) {\n return globalLocale;\n }\n\n if (!isArray(key)) {\n //short-circuit everything else\n locale = loadLocale(key);\n if (locale) {\n return locale;\n }\n key = [key];\n }\n\n return chooseLocale(key);\n }\n\n function listLocales() {\n return keys(locales);\n }\n\n function checkOverflow(m) {\n var overflow,\n a = m._a;\n\n if (a && getParsingFlags(m).overflow === -2) {\n overflow =\n a[MONTH] < 0 || a[MONTH] > 11\n ? MONTH\n : a[DATE] < 1 || a[DATE] > daysInMonth(a[YEAR], a[MONTH])\n ? DATE\n : a[HOUR] < 0 ||\n a[HOUR] > 24 ||\n (a[HOUR] === 24 &&\n (a[MINUTE] !== 0 ||\n a[SECOND] !== 0 ||\n a[MILLISECOND] !== 0))\n ? HOUR\n : a[MINUTE] < 0 || a[MINUTE] > 59\n ? MINUTE\n : a[SECOND] < 0 || a[SECOND] > 59\n ? SECOND\n : a[MILLISECOND] < 0 || a[MILLISECOND] > 999\n ? MILLISECOND\n : -1;\n\n if (\n getParsingFlags(m)._overflowDayOfYear &&\n (overflow < YEAR || overflow > DATE)\n ) {\n overflow = DATE;\n }\n if (getParsingFlags(m)._overflowWeeks && overflow === -1) {\n overflow = WEEK;\n }\n if (getParsingFlags(m)._overflowWeekday && overflow === -1) {\n overflow = WEEKDAY;\n }\n\n getParsingFlags(m).overflow = overflow;\n }\n\n return m;\n }\n\n // iso 8601 regex\n // 0000-00-00 0000-W00 or 0000-W00-0 + T + 00 or 00:00 or 00:00:00 or 00:00:00.000 + +00:00 or +0000 or +00)\n var extendedIsoRegex =\n /^\\s*((?:[+-]\\d{6}|\\d{4})-(?:\\d\\d-\\d\\d|W\\d\\d-\\d|W\\d\\d|\\d\\d\\d|\\d\\d))(?:(T| )(\\d\\d(?::\\d\\d(?::\\d\\d(?:[.,]\\d+)?)?)?)([+-]\\d\\d(?::?\\d\\d)?|\\s*Z)?)?$/,\n basicIsoRegex =\n /^\\s*((?:[+-]\\d{6}|\\d{4})(?:\\d\\d\\d\\d|W\\d\\d\\d|W\\d\\d|\\d\\d\\d|\\d\\d|))(?:(T| )(\\d\\d(?:\\d\\d(?:\\d\\d(?:[.,]\\d+)?)?)?)([+-]\\d\\d(?::?\\d\\d)?|\\s*Z)?)?$/,\n tzRegex = /Z|[+-]\\d\\d(?::?\\d\\d)?/,\n isoDates = [\n ['YYYYYY-MM-DD', /[+-]\\d{6}-\\d\\d-\\d\\d/],\n ['YYYY-MM-DD', /\\d{4}-\\d\\d-\\d\\d/],\n ['GGGG-[W]WW-E', /\\d{4}-W\\d\\d-\\d/],\n ['GGGG-[W]WW', /\\d{4}-W\\d\\d/, false],\n ['YYYY-DDD', /\\d{4}-\\d{3}/],\n ['YYYY-MM', /\\d{4}-\\d\\d/, false],\n ['YYYYYYMMDD', /[+-]\\d{10}/],\n ['YYYYMMDD', /\\d{8}/],\n ['GGGG[W]WWE', /\\d{4}W\\d{3}/],\n ['GGGG[W]WW', /\\d{4}W\\d{2}/, false],\n ['YYYYDDD', /\\d{7}/],\n ['YYYYMM', /\\d{6}/, false],\n ['YYYY', /\\d{4}/, false],\n ],\n // iso time formats and regexes\n isoTimes = [\n ['HH:mm:ss.SSSS', /\\d\\d:\\d\\d:\\d\\d\\.\\d+/],\n ['HH:mm:ss,SSSS', /\\d\\d:\\d\\d:\\d\\d,\\d+/],\n ['HH:mm:ss', /\\d\\d:\\d\\d:\\d\\d/],\n ['HH:mm', /\\d\\d:\\d\\d/],\n ['HHmmss.SSSS', /\\d\\d\\d\\d\\d\\d\\.\\d+/],\n ['HHmmss,SSSS', /\\d\\d\\d\\d\\d\\d,\\d+/],\n ['HHmmss', /\\d\\d\\d\\d\\d\\d/],\n ['HHmm', /\\d\\d\\d\\d/],\n ['HH', /\\d\\d/],\n ],\n aspNetJsonRegex = /^\\/?Date\\((-?\\d+)/i,\n // RFC 2822 regex: For details see https://tools.ietf.org/html/rfc2822#section-3.3\n rfc2822 =\n /^(?:(Mon|Tue|Wed|Thu|Fri|Sat|Sun),?\\s)?(\\d{1,2})\\s(Jan|Feb|Mar|Apr|May|Jun|Jul|Aug|Sep|Oct|Nov|Dec)\\s(\\d{2,4})\\s(\\d\\d):(\\d\\d)(?::(\\d\\d))?\\s(?:(UT|GMT|[ECMP][SD]T)|([Zz])|([+-]\\d{4}))$/,\n obsOffsets = {\n UT: 0,\n GMT: 0,\n EDT: -4 * 60,\n EST: -5 * 60,\n CDT: -5 * 60,\n CST: -6 * 60,\n MDT: -6 * 60,\n MST: -7 * 60,\n PDT: -7 * 60,\n PST: -8 * 60,\n };\n\n // date from iso format\n function configFromISO(config) {\n var i,\n l,\n string = config._i,\n match = extendedIsoRegex.exec(string) || basicIsoRegex.exec(string),\n allowTime,\n dateFormat,\n timeFormat,\n tzFormat,\n isoDatesLen = isoDates.length,\n isoTimesLen = isoTimes.length;\n\n if (match) {\n getParsingFlags(config).iso = true;\n for (i = 0, l = isoDatesLen; i < l; i++) {\n if (isoDates[i][1].exec(match[1])) {\n dateFormat = isoDates[i][0];\n allowTime = isoDates[i][2] !== false;\n break;\n }\n }\n if (dateFormat == null) {\n config._isValid = false;\n return;\n }\n if (match[3]) {\n for (i = 0, l = isoTimesLen; i < l; i++) {\n if (isoTimes[i][1].exec(match[3])) {\n // match[2] should be 'T' or space\n timeFormat = (match[2] || ' ') + isoTimes[i][0];\n break;\n }\n }\n if (timeFormat == null) {\n config._isValid = false;\n return;\n }\n }\n if (!allowTime && timeFormat != null) {\n config._isValid = false;\n return;\n }\n if (match[4]) {\n if (tzRegex.exec(match[4])) {\n tzFormat = 'Z';\n } else {\n config._isValid = false;\n return;\n }\n }\n config._f = dateFormat + (timeFormat || '') + (tzFormat || '');\n configFromStringAndFormat(config);\n } else {\n config._isValid = false;\n }\n }\n\n function extractFromRFC2822Strings(\n yearStr,\n monthStr,\n dayStr,\n hourStr,\n minuteStr,\n secondStr\n ) {\n var result = [\n untruncateYear(yearStr),\n defaultLocaleMonthsShort.indexOf(monthStr),\n parseInt(dayStr, 10),\n parseInt(hourStr, 10),\n parseInt(minuteStr, 10),\n ];\n\n if (secondStr) {\n result.push(parseInt(secondStr, 10));\n }\n\n return result;\n }\n\n function untruncateYear(yearStr) {\n var year = parseInt(yearStr, 10);\n if (year <= 49) {\n return 2000 + year;\n } else if (year <= 999) {\n return 1900 + year;\n }\n return year;\n }\n\n function preprocessRFC2822(s) {\n // Remove comments and folding whitespace and replace multiple-spaces with a single space\n return s\n .replace(/\\([^()]*\\)|[\\n\\t]/g, ' ')\n .replace(/(\\s\\s+)/g, ' ')\n .replace(/^\\s\\s*/, '')\n .replace(/\\s\\s*$/, '');\n }\n\n function checkWeekday(weekdayStr, parsedInput, config) {\n if (weekdayStr) {\n // TODO: Replace the vanilla JS Date object with an independent day-of-week check.\n var weekdayProvided = defaultLocaleWeekdaysShort.indexOf(weekdayStr),\n weekdayActual = new Date(\n parsedInput[0],\n parsedInput[1],\n parsedInput[2]\n ).getDay();\n if (weekdayProvided !== weekdayActual) {\n getParsingFlags(config).weekdayMismatch = true;\n config._isValid = false;\n return false;\n }\n }\n return true;\n }\n\n function calculateOffset(obsOffset, militaryOffset, numOffset) {\n if (obsOffset) {\n return obsOffsets[obsOffset];\n } else if (militaryOffset) {\n // the only allowed military tz is Z\n return 0;\n } else {\n var hm = parseInt(numOffset, 10),\n m = hm % 100,\n h = (hm - m) / 100;\n return h * 60 + m;\n }\n }\n\n // date and time from ref 2822 format\n function configFromRFC2822(config) {\n var match = rfc2822.exec(preprocessRFC2822(config._i)),\n parsedArray;\n if (match) {\n parsedArray = extractFromRFC2822Strings(\n match[4],\n match[3],\n match[2],\n match[5],\n match[6],\n match[7]\n );\n if (!checkWeekday(match[1], parsedArray, config)) {\n return;\n }\n\n config._a = parsedArray;\n config._tzm = calculateOffset(match[8], match[9], match[10]);\n\n config._d = createUTCDate.apply(null, config._a);\n config._d.setUTCMinutes(config._d.getUTCMinutes() - config._tzm);\n\n getParsingFlags(config).rfc2822 = true;\n } else {\n config._isValid = false;\n }\n }\n\n // date from 1) ASP.NET, 2) ISO, 3) RFC 2822 formats, or 4) optional fallback if parsing isn't strict\n function configFromString(config) {\n var matched = aspNetJsonRegex.exec(config._i);\n if (matched !== null) {\n config._d = new Date(+matched[1]);\n return;\n }\n\n configFromISO(config);\n if (config._isValid === false) {\n delete config._isValid;\n } else {\n return;\n }\n\n configFromRFC2822(config);\n if (config._isValid === false) {\n delete config._isValid;\n } else {\n return;\n }\n\n if (config._strict) {\n config._isValid = false;\n } else {\n // Final attempt, use Input Fallback\n hooks.createFromInputFallback(config);\n }\n }\n\n hooks.createFromInputFallback = deprecate(\n 'value provided is not in a recognized RFC2822 or ISO format. moment construction falls back to js Date(), ' +\n 'which is not reliable across all browsers and versions. Non RFC2822/ISO date formats are ' +\n 'discouraged. Please refer to http://momentjs.com/guides/#/warnings/js-date/ for more info.',\n function (config) {\n config._d = new Date(config._i + (config._useUTC ? ' UTC' : ''));\n }\n );\n\n // Pick the first defined of two or three arguments.\n function defaults(a, b, c) {\n if (a != null) {\n return a;\n }\n if (b != null) {\n return b;\n }\n return c;\n }\n\n function currentDateArray(config) {\n // hooks is actually the exported moment object\n var nowValue = new Date(hooks.now());\n if (config._useUTC) {\n return [\n nowValue.getUTCFullYear(),\n nowValue.getUTCMonth(),\n nowValue.getUTCDate(),\n ];\n }\n return [nowValue.getFullYear(), nowValue.getMonth(), nowValue.getDate()];\n }\n\n // convert an array to a date.\n // the array should mirror the parameters below\n // note: all values past the year are optional and will default to the lowest possible value.\n // [year, month, day , hour, minute, second, millisecond]\n function configFromArray(config) {\n var i,\n date,\n input = [],\n currentDate,\n expectedWeekday,\n yearToUse;\n\n if (config._d) {\n return;\n }\n\n currentDate = currentDateArray(config);\n\n //compute day of the year from weeks and weekdays\n if (config._w && config._a[DATE] == null && config._a[MONTH] == null) {\n dayOfYearFromWeekInfo(config);\n }\n\n //if the day of the year is set, figure out what it is\n if (config._dayOfYear != null) {\n yearToUse = defaults(config._a[YEAR], currentDate[YEAR]);\n\n if (\n config._dayOfYear > daysInYear(yearToUse) ||\n config._dayOfYear === 0\n ) {\n getParsingFlags(config)._overflowDayOfYear = true;\n }\n\n date = createUTCDate(yearToUse, 0, config._dayOfYear);\n config._a[MONTH] = date.getUTCMonth();\n config._a[DATE] = date.getUTCDate();\n }\n\n // Default to current date.\n // * if no year, month, day of month are given, default to today\n // * if day of month is given, default month and year\n // * if month is given, default only year\n // * if year is given, don't default anything\n for (i = 0; i < 3 && config._a[i] == null; ++i) {\n config._a[i] = input[i] = currentDate[i];\n }\n\n // Zero out whatever was not defaulted, including time\n for (; i < 7; i++) {\n config._a[i] = input[i] =\n config._a[i] == null ? (i === 2 ? 1 : 0) : config._a[i];\n }\n\n // Check for 24:00:00.000\n if (\n config._a[HOUR] === 24 &&\n config._a[MINUTE] === 0 &&\n config._a[SECOND] === 0 &&\n config._a[MILLISECOND] === 0\n ) {\n config._nextDay = true;\n config._a[HOUR] = 0;\n }\n\n config._d = (config._useUTC ? createUTCDate : createDate).apply(\n null,\n input\n );\n expectedWeekday = config._useUTC\n ? config._d.getUTCDay()\n : config._d.getDay();\n\n // Apply timezone offset from input. The actual utcOffset can be changed\n // with parseZone.\n if (config._tzm != null) {\n config._d.setUTCMinutes(config._d.getUTCMinutes() - config._tzm);\n }\n\n if (config._nextDay) {\n config._a[HOUR] = 24;\n }\n\n // check for mismatching day of week\n if (\n config._w &&\n typeof config._w.d !== 'undefined' &&\n config._w.d !== expectedWeekday\n ) {\n getParsingFlags(config).weekdayMismatch = true;\n }\n }\n\n function dayOfYearFromWeekInfo(config) {\n var w, weekYear, week, weekday, dow, doy, temp, weekdayOverflow, curWeek;\n\n w = config._w;\n if (w.GG != null || w.W != null || w.E != null) {\n dow = 1;\n doy = 4;\n\n // TODO: We need to take the current isoWeekYear, but that depends on\n // how we interpret now (local, utc, fixed offset). So create\n // a now version of current config (take local/utc/offset flags, and\n // create now).\n weekYear = defaults(\n w.GG,\n config._a[YEAR],\n weekOfYear(createLocal(), 1, 4).year\n );\n week = defaults(w.W, 1);\n weekday = defaults(w.E, 1);\n if (weekday < 1 || weekday > 7) {\n weekdayOverflow = true;\n }\n } else {\n dow = config._locale._week.dow;\n doy = config._locale._week.doy;\n\n curWeek = weekOfYear(createLocal(), dow, doy);\n\n weekYear = defaults(w.gg, config._a[YEAR], curWeek.year);\n\n // Default to current week.\n week = defaults(w.w, curWeek.week);\n\n if (w.d != null) {\n // weekday -- low day numbers are considered next week\n weekday = w.d;\n if (weekday < 0 || weekday > 6) {\n weekdayOverflow = true;\n }\n } else if (w.e != null) {\n // local weekday -- counting starts from beginning of week\n weekday = w.e + dow;\n if (w.e < 0 || w.e > 6) {\n weekdayOverflow = true;\n }\n } else {\n // default to beginning of week\n weekday = dow;\n }\n }\n if (week < 1 || week > weeksInYear(weekYear, dow, doy)) {\n getParsingFlags(config)._overflowWeeks = true;\n } else if (weekdayOverflow != null) {\n getParsingFlags(config)._overflowWeekday = true;\n } else {\n temp = dayOfYearFromWeeks(weekYear, week, weekday, dow, doy);\n config._a[YEAR] = temp.year;\n config._dayOfYear = temp.dayOfYear;\n }\n }\n\n // constant that refers to the ISO standard\n hooks.ISO_8601 = function () {};\n\n // constant that refers to the RFC 2822 form\n hooks.RFC_2822 = function () {};\n\n // date from string and format string\n function configFromStringAndFormat(config) {\n // TODO: Move this to another part of the creation flow to prevent circular deps\n if (config._f === hooks.ISO_8601) {\n configFromISO(config);\n return;\n }\n if (config._f === hooks.RFC_2822) {\n configFromRFC2822(config);\n return;\n }\n config._a = [];\n getParsingFlags(config).empty = true;\n\n // This array is used to make a Date, either with `new Date` or `Date.UTC`\n var string = '' + config._i,\n i,\n parsedInput,\n tokens,\n token,\n skipped,\n stringLength = string.length,\n totalParsedInputLength = 0,\n era,\n tokenLen;\n\n tokens =\n expandFormat(config._f, config._locale).match(formattingTokens) || [];\n tokenLen = tokens.length;\n for (i = 0; i < tokenLen; i++) {\n token = tokens[i];\n parsedInput = (string.match(getParseRegexForToken(token, config)) ||\n [])[0];\n if (parsedInput) {\n skipped = string.substr(0, string.indexOf(parsedInput));\n if (skipped.length > 0) {\n getParsingFlags(config).unusedInput.push(skipped);\n }\n string = string.slice(\n string.indexOf(parsedInput) + parsedInput.length\n );\n totalParsedInputLength += parsedInput.length;\n }\n // don't parse if it's not a known token\n if (formatTokenFunctions[token]) {\n if (parsedInput) {\n getParsingFlags(config).empty = false;\n } else {\n getParsingFlags(config).unusedTokens.push(token);\n }\n addTimeToArrayFromToken(token, parsedInput, config);\n } else if (config._strict && !parsedInput) {\n getParsingFlags(config).unusedTokens.push(token);\n }\n }\n\n // add remaining unparsed input length to the string\n getParsingFlags(config).charsLeftOver =\n stringLength - totalParsedInputLength;\n if (string.length > 0) {\n getParsingFlags(config).unusedInput.push(string);\n }\n\n // clear _12h flag if hour is <= 12\n if (\n config._a[HOUR] <= 12 &&\n getParsingFlags(config).bigHour === true &&\n config._a[HOUR] > 0\n ) {\n getParsingFlags(config).bigHour = undefined;\n }\n\n getParsingFlags(config).parsedDateParts = config._a.slice(0);\n getParsingFlags(config).meridiem = config._meridiem;\n // handle meridiem\n config._a[HOUR] = meridiemFixWrap(\n config._locale,\n config._a[HOUR],\n config._meridiem\n );\n\n // handle era\n era = getParsingFlags(config).era;\n if (era !== null) {\n config._a[YEAR] = config._locale.erasConvertYear(era, config._a[YEAR]);\n }\n\n configFromArray(config);\n checkOverflow(config);\n }\n\n function meridiemFixWrap(locale, hour, meridiem) {\n var isPm;\n\n if (meridiem == null) {\n // nothing to do\n return hour;\n }\n if (locale.meridiemHour != null) {\n return locale.meridiemHour(hour, meridiem);\n } else if (locale.isPM != null) {\n // Fallback\n isPm = locale.isPM(meridiem);\n if (isPm && hour < 12) {\n hour += 12;\n }\n if (!isPm && hour === 12) {\n hour = 0;\n }\n return hour;\n } else {\n // this is not supposed to happen\n return hour;\n }\n }\n\n // date from string and array of format strings\n function configFromStringAndArray(config) {\n var tempConfig,\n bestMoment,\n scoreToBeat,\n i,\n currentScore,\n validFormatFound,\n bestFormatIsValid = false,\n configfLen = config._f.length;\n\n if (configfLen === 0) {\n getParsingFlags(config).invalidFormat = true;\n config._d = new Date(NaN);\n return;\n }\n\n for (i = 0; i < configfLen; i++) {\n currentScore = 0;\n validFormatFound = false;\n tempConfig = copyConfig({}, config);\n if (config._useUTC != null) {\n tempConfig._useUTC = config._useUTC;\n }\n tempConfig._f = config._f[i];\n configFromStringAndFormat(tempConfig);\n\n if (isValid(tempConfig)) {\n validFormatFound = true;\n }\n\n // if there is any input that was not parsed add a penalty for that format\n currentScore += getParsingFlags(tempConfig).charsLeftOver;\n\n //or tokens\n currentScore += getParsingFlags(tempConfig).unusedTokens.length * 10;\n\n getParsingFlags(tempConfig).score = currentScore;\n\n if (!bestFormatIsValid) {\n if (\n scoreToBeat == null ||\n currentScore < scoreToBeat ||\n validFormatFound\n ) {\n scoreToBeat = currentScore;\n bestMoment = tempConfig;\n if (validFormatFound) {\n bestFormatIsValid = true;\n }\n }\n } else {\n if (currentScore < scoreToBeat) {\n scoreToBeat = currentScore;\n bestMoment = tempConfig;\n }\n }\n }\n\n extend(config, bestMoment || tempConfig);\n }\n\n function configFromObject(config) {\n if (config._d) {\n return;\n }\n\n var i = normalizeObjectUnits(config._i),\n dayOrDate = i.day === undefined ? i.date : i.day;\n config._a = map(\n [i.year, i.month, dayOrDate, i.hour, i.minute, i.second, i.millisecond],\n function (obj) {\n return obj && parseInt(obj, 10);\n }\n );\n\n configFromArray(config);\n }\n\n function createFromConfig(config) {\n var res = new Moment(checkOverflow(prepareConfig(config)));\n if (res._nextDay) {\n // Adding is smart enough around DST\n res.add(1, 'd');\n res._nextDay = undefined;\n }\n\n return res;\n }\n\n function prepareConfig(config) {\n var input = config._i,\n format = config._f;\n\n config._locale = config._locale || getLocale(config._l);\n\n if (input === null || (format === undefined && input === '')) {\n return createInvalid({ nullInput: true });\n }\n\n if (typeof input === 'string') {\n config._i = input = config._locale.preparse(input);\n }\n\n if (isMoment(input)) {\n return new Moment(checkOverflow(input));\n } else if (isDate(input)) {\n config._d = input;\n } else if (isArray(format)) {\n configFromStringAndArray(config);\n } else if (format) {\n configFromStringAndFormat(config);\n } else {\n configFromInput(config);\n }\n\n if (!isValid(config)) {\n config._d = null;\n }\n\n return config;\n }\n\n function configFromInput(config) {\n var input = config._i;\n if (isUndefined(input)) {\n config._d = new Date(hooks.now());\n } else if (isDate(input)) {\n config._d = new Date(input.valueOf());\n } else if (typeof input === 'string') {\n configFromString(config);\n } else if (isArray(input)) {\n config._a = map(input.slice(0), function (obj) {\n return parseInt(obj, 10);\n });\n configFromArray(config);\n } else if (isObject(input)) {\n configFromObject(config);\n } else if (isNumber(input)) {\n // from milliseconds\n config._d = new Date(input);\n } else {\n hooks.createFromInputFallback(config);\n }\n }\n\n function createLocalOrUTC(input, format, locale, strict, isUTC) {\n var c = {};\n\n if (format === true || format === false) {\n strict = format;\n format = undefined;\n }\n\n if (locale === true || locale === false) {\n strict = locale;\n locale = undefined;\n }\n\n if (\n (isObject(input) && isObjectEmpty(input)) ||\n (isArray(input) && input.length === 0)\n ) {\n input = undefined;\n }\n // object construction must be done this way.\n // https://github.com/moment/moment/issues/1423\n c._isAMomentObject = true;\n c._useUTC = c._isUTC = isUTC;\n c._l = locale;\n c._i = input;\n c._f = format;\n c._strict = strict;\n\n return createFromConfig(c);\n }\n\n function createLocal(input, format, locale, strict) {\n return createLocalOrUTC(input, format, locale, strict, false);\n }\n\n var prototypeMin = deprecate(\n 'moment().min is deprecated, use moment.max instead. http://momentjs.com/guides/#/warnings/min-max/',\n function () {\n var other = createLocal.apply(null, arguments);\n if (this.isValid() && other.isValid()) {\n return other < this ? this : other;\n } else {\n return createInvalid();\n }\n }\n ),\n prototypeMax = deprecate(\n 'moment().max is deprecated, use moment.min instead. http://momentjs.com/guides/#/warnings/min-max/',\n function () {\n var other = createLocal.apply(null, arguments);\n if (this.isValid() && other.isValid()) {\n return other > this ? this : other;\n } else {\n return createInvalid();\n }\n }\n );\n\n // Pick a moment m from moments so that m[fn](other) is true for all\n // other. This relies on the function fn to be transitive.\n //\n // moments should either be an array of moment objects or an array, whose\n // first element is an array of moment objects.\n function pickBy(fn, moments) {\n var res, i;\n if (moments.length === 1 && isArray(moments[0])) {\n moments = moments[0];\n }\n if (!moments.length) {\n return createLocal();\n }\n res = moments[0];\n for (i = 1; i < moments.length; ++i) {\n if (!moments[i].isValid() || moments[i][fn](res)) {\n res = moments[i];\n }\n }\n return res;\n }\n\n // TODO: Use [].sort instead?\n function min() {\n var args = [].slice.call(arguments, 0);\n\n return pickBy('isBefore', args);\n }\n\n function max() {\n var args = [].slice.call(arguments, 0);\n\n return pickBy('isAfter', args);\n }\n\n var now = function () {\n return Date.now ? Date.now() : +new Date();\n };\n\n var ordering = [\n 'year',\n 'quarter',\n 'month',\n 'week',\n 'day',\n 'hour',\n 'minute',\n 'second',\n 'millisecond',\n ];\n\n function isDurationValid(m) {\n var key,\n unitHasDecimal = false,\n i,\n orderLen = ordering.length;\n for (key in m) {\n if (\n hasOwnProp(m, key) &&\n !(\n indexOf.call(ordering, key) !== -1 &&\n (m[key] == null || !isNaN(m[key]))\n )\n ) {\n return false;\n }\n }\n\n for (i = 0; i < orderLen; ++i) {\n if (m[ordering[i]]) {\n if (unitHasDecimal) {\n return false; // only allow non-integers for smallest unit\n }\n if (parseFloat(m[ordering[i]]) !== toInt(m[ordering[i]])) {\n unitHasDecimal = true;\n }\n }\n }\n\n return true;\n }\n\n function isValid$1() {\n return this._isValid;\n }\n\n function createInvalid$1() {\n return createDuration(NaN);\n }\n\n function Duration(duration) {\n var normalizedInput = normalizeObjectUnits(duration),\n years = normalizedInput.year || 0,\n quarters = normalizedInput.quarter || 0,\n months = normalizedInput.month || 0,\n weeks = normalizedInput.week || normalizedInput.isoWeek || 0,\n days = normalizedInput.day || 0,\n hours = normalizedInput.hour || 0,\n minutes = normalizedInput.minute || 0,\n seconds = normalizedInput.second || 0,\n milliseconds = normalizedInput.millisecond || 0;\n\n this._isValid = isDurationValid(normalizedInput);\n\n // representation for dateAddRemove\n this._milliseconds =\n +milliseconds +\n seconds * 1e3 + // 1000\n minutes * 6e4 + // 1000 * 60\n hours * 1000 * 60 * 60; //using 1000 * 60 * 60 instead of 36e5 to avoid floating point rounding errors https://github.com/moment/moment/issues/2978\n // Because of dateAddRemove treats 24 hours as different from a\n // day when working around DST, we need to store them separately\n this._days = +days + weeks * 7;\n // It is impossible to translate months into days without knowing\n // which months you are are talking about, so we have to store\n // it separately.\n this._months = +months + quarters * 3 + years * 12;\n\n this._data = {};\n\n this._locale = getLocale();\n\n this._bubble();\n }\n\n function isDuration(obj) {\n return obj instanceof Duration;\n }\n\n function absRound(number) {\n if (number < 0) {\n return Math.round(-1 * number) * -1;\n } else {\n return Math.round(number);\n }\n }\n\n // compare two arrays, return the number of differences\n function compareArrays(array1, array2, dontConvert) {\n var len = Math.min(array1.length, array2.length),\n lengthDiff = Math.abs(array1.length - array2.length),\n diffs = 0,\n i;\n for (i = 0; i < len; i++) {\n if (\n (dontConvert && array1[i] !== array2[i]) ||\n (!dontConvert && toInt(array1[i]) !== toInt(array2[i]))\n ) {\n diffs++;\n }\n }\n return diffs + lengthDiff;\n }\n\n // FORMATTING\n\n function offset(token, separator) {\n addFormatToken(token, 0, 0, function () {\n var offset = this.utcOffset(),\n sign = '+';\n if (offset < 0) {\n offset = -offset;\n sign = '-';\n }\n return (\n sign +\n zeroFill(~~(offset / 60), 2) +\n separator +\n zeroFill(~~offset % 60, 2)\n );\n });\n }\n\n offset('Z', ':');\n offset('ZZ', '');\n\n // PARSING\n\n addRegexToken('Z', matchShortOffset);\n addRegexToken('ZZ', matchShortOffset);\n addParseToken(['Z', 'ZZ'], function (input, array, config) {\n config._useUTC = true;\n config._tzm = offsetFromString(matchShortOffset, input);\n });\n\n // HELPERS\n\n // timezone chunker\n // '+10:00' > ['10', '00']\n // '-1530' > ['-15', '30']\n var chunkOffset = /([\\+\\-]|\\d\\d)/gi;\n\n function offsetFromString(matcher, string) {\n var matches = (string || '').match(matcher),\n chunk,\n parts,\n minutes;\n\n if (matches === null) {\n return null;\n }\n\n chunk = matches[matches.length - 1] || [];\n parts = (chunk + '').match(chunkOffset) || ['-', 0, 0];\n minutes = +(parts[1] * 60) + toInt(parts[2]);\n\n return minutes === 0 ? 0 : parts[0] === '+' ? minutes : -minutes;\n }\n\n // Return a moment from input, that is local/utc/zone equivalent to model.\n function cloneWithOffset(input, model) {\n var res, diff;\n if (model._isUTC) {\n res = model.clone();\n diff =\n (isMoment(input) || isDate(input)\n ? input.valueOf()\n : createLocal(input).valueOf()) - res.valueOf();\n // Use low-level api, because this fn is low-level api.\n res._d.setTime(res._d.valueOf() + diff);\n hooks.updateOffset(res, false);\n return res;\n } else {\n return createLocal(input).local();\n }\n }\n\n function getDateOffset(m) {\n // On Firefox.24 Date#getTimezoneOffset returns a floating point.\n // https://github.com/moment/moment/pull/1871\n return -Math.round(m._d.getTimezoneOffset());\n }\n\n // HOOKS\n\n // This function will be called whenever a moment is mutated.\n // It is intended to keep the offset in sync with the timezone.\n hooks.updateOffset = function () {};\n\n // MOMENTS\n\n // keepLocalTime = true means only change the timezone, without\n // affecting the local hour. So 5:31:26 +0300 --[utcOffset(2, true)]-->\n // 5:31:26 +0200 It is possible that 5:31:26 doesn't exist with offset\n // +0200, so we adjust the time as needed, to be valid.\n //\n // Keeping the time actually adds/subtracts (one hour)\n // from the actual represented time. That is why we call updateOffset\n // a second time. In case it wants us to change the offset again\n // _changeInProgress == true case, then we have to adjust, because\n // there is no such time in the given timezone.\n function getSetOffset(input, keepLocalTime, keepMinutes) {\n var offset = this._offset || 0,\n localAdjust;\n if (!this.isValid()) {\n return input != null ? this : NaN;\n }\n if (input != null) {\n if (typeof input === 'string') {\n input = offsetFromString(matchShortOffset, input);\n if (input === null) {\n return this;\n }\n } else if (Math.abs(input) < 16 && !keepMinutes) {\n input = input * 60;\n }\n if (!this._isUTC && keepLocalTime) {\n localAdjust = getDateOffset(this);\n }\n this._offset = input;\n this._isUTC = true;\n if (localAdjust != null) {\n this.add(localAdjust, 'm');\n }\n if (offset !== input) {\n if (!keepLocalTime || this._changeInProgress) {\n addSubtract(\n this,\n createDuration(input - offset, 'm'),\n 1,\n false\n );\n } else if (!this._changeInProgress) {\n this._changeInProgress = true;\n hooks.updateOffset(this, true);\n this._changeInProgress = null;\n }\n }\n return this;\n } else {\n return this._isUTC ? offset : getDateOffset(this);\n }\n }\n\n function getSetZone(input, keepLocalTime) {\n if (input != null) {\n if (typeof input !== 'string') {\n input = -input;\n }\n\n this.utcOffset(input, keepLocalTime);\n\n return this;\n } else {\n return -this.utcOffset();\n }\n }\n\n function setOffsetToUTC(keepLocalTime) {\n return this.utcOffset(0, keepLocalTime);\n }\n\n function setOffsetToLocal(keepLocalTime) {\n if (this._isUTC) {\n this.utcOffset(0, keepLocalTime);\n this._isUTC = false;\n\n if (keepLocalTime) {\n this.subtract(getDateOffset(this), 'm');\n }\n }\n return this;\n }\n\n function setOffsetToParsedOffset() {\n if (this._tzm != null) {\n this.utcOffset(this._tzm, false, true);\n } else if (typeof this._i === 'string') {\n var tZone = offsetFromString(matchOffset, this._i);\n if (tZone != null) {\n this.utcOffset(tZone);\n } else {\n this.utcOffset(0, true);\n }\n }\n return this;\n }\n\n function hasAlignedHourOffset(input) {\n if (!this.isValid()) {\n return false;\n }\n input = input ? createLocal(input).utcOffset() : 0;\n\n return (this.utcOffset() - input) % 60 === 0;\n }\n\n function isDaylightSavingTime() {\n return (\n this.utcOffset() > this.clone().month(0).utcOffset() ||\n this.utcOffset() > this.clone().month(5).utcOffset()\n );\n }\n\n function isDaylightSavingTimeShifted() {\n if (!isUndefined(this._isDSTShifted)) {\n return this._isDSTShifted;\n }\n\n var c = {},\n other;\n\n copyConfig(c, this);\n c = prepareConfig(c);\n\n if (c._a) {\n other = c._isUTC ? createUTC(c._a) : createLocal(c._a);\n this._isDSTShifted =\n this.isValid() && compareArrays(c._a, other.toArray()) > 0;\n } else {\n this._isDSTShifted = false;\n }\n\n return this._isDSTShifted;\n }\n\n function isLocal() {\n return this.isValid() ? !this._isUTC : false;\n }\n\n function isUtcOffset() {\n return this.isValid() ? this._isUTC : false;\n }\n\n function isUtc() {\n return this.isValid() ? this._isUTC && this._offset === 0 : false;\n }\n\n // ASP.NET json date format regex\n var aspNetRegex = /^(-|\\+)?(?:(\\d*)[. ])?(\\d+):(\\d+)(?::(\\d+)(\\.\\d*)?)?$/,\n // from http://docs.closure-library.googlecode.com/git/closure_goog_date_date.js.source.html\n // somewhat more in line with 4.4.3.2 2004 spec, but allows decimal anywhere\n // and further modified to allow for strings containing both week and day\n isoRegex =\n /^(-|\\+)?P(?:([-+]?[0-9,.]*)Y)?(?:([-+]?[0-9,.]*)M)?(?:([-+]?[0-9,.]*)W)?(?:([-+]?[0-9,.]*)D)?(?:T(?:([-+]?[0-9,.]*)H)?(?:([-+]?[0-9,.]*)M)?(?:([-+]?[0-9,.]*)S)?)?$/;\n\n function createDuration(input, key) {\n var duration = input,\n // matching against regexp is expensive, do it on demand\n match = null,\n sign,\n ret,\n diffRes;\n\n if (isDuration(input)) {\n duration = {\n ms: input._milliseconds,\n d: input._days,\n M: input._months,\n };\n } else if (isNumber(input) || !isNaN(+input)) {\n duration = {};\n if (key) {\n duration[key] = +input;\n } else {\n duration.milliseconds = +input;\n }\n } else if ((match = aspNetRegex.exec(input))) {\n sign = match[1] === '-' ? -1 : 1;\n duration = {\n y: 0,\n d: toInt(match[DATE]) * sign,\n h: toInt(match[HOUR]) * sign,\n m: toInt(match[MINUTE]) * sign,\n s: toInt(match[SECOND]) * sign,\n ms: toInt(absRound(match[MILLISECOND] * 1000)) * sign, // the millisecond decimal point is included in the match\n };\n } else if ((match = isoRegex.exec(input))) {\n sign = match[1] === '-' ? -1 : 1;\n duration = {\n y: parseIso(match[2], sign),\n M: parseIso(match[3], sign),\n w: parseIso(match[4], sign),\n d: parseIso(match[5], sign),\n h: parseIso(match[6], sign),\n m: parseIso(match[7], sign),\n s: parseIso(match[8], sign),\n };\n } else if (duration == null) {\n // checks for null or undefined\n duration = {};\n } else if (\n typeof duration === 'object' &&\n ('from' in duration || 'to' in duration)\n ) {\n diffRes = momentsDifference(\n createLocal(duration.from),\n createLocal(duration.to)\n );\n\n duration = {};\n duration.ms = diffRes.milliseconds;\n duration.M = diffRes.months;\n }\n\n ret = new Duration(duration);\n\n if (isDuration(input) && hasOwnProp(input, '_locale')) {\n ret._locale = input._locale;\n }\n\n if (isDuration(input) && hasOwnProp(input, '_isValid')) {\n ret._isValid = input._isValid;\n }\n\n return ret;\n }\n\n createDuration.fn = Duration.prototype;\n createDuration.invalid = createInvalid$1;\n\n function parseIso(inp, sign) {\n // We'd normally use ~~inp for this, but unfortunately it also\n // converts floats to ints.\n // inp may be undefined, so careful calling replace on it.\n var res = inp && parseFloat(inp.replace(',', '.'));\n // apply sign while we're at it\n return (isNaN(res) ? 0 : res) * sign;\n }\n\n function positiveMomentsDifference(base, other) {\n var res = {};\n\n res.months =\n other.month() - base.month() + (other.year() - base.year()) * 12;\n if (base.clone().add(res.months, 'M').isAfter(other)) {\n --res.months;\n }\n\n res.milliseconds = +other - +base.clone().add(res.months, 'M');\n\n return res;\n }\n\n function momentsDifference(base, other) {\n var res;\n if (!(base.isValid() && other.isValid())) {\n return { milliseconds: 0, months: 0 };\n }\n\n other = cloneWithOffset(other, base);\n if (base.isBefore(other)) {\n res = positiveMomentsDifference(base, other);\n } else {\n res = positiveMomentsDifference(other, base);\n res.milliseconds = -res.milliseconds;\n res.months = -res.months;\n }\n\n return res;\n }\n\n // TODO: remove 'name' arg after deprecation is removed\n function createAdder(direction, name) {\n return function (val, period) {\n var dur, tmp;\n //invert the arguments, but complain about it\n if (period !== null && !isNaN(+period)) {\n deprecateSimple(\n name,\n 'moment().' +\n name +\n '(period, number) is deprecated. Please use moment().' +\n name +\n '(number, period). ' +\n 'See http://momentjs.com/guides/#/warnings/add-inverted-param/ for more info.'\n );\n tmp = val;\n val = period;\n period = tmp;\n }\n\n dur = createDuration(val, period);\n addSubtract(this, dur, direction);\n return this;\n };\n }\n\n function addSubtract(mom, duration, isAdding, updateOffset) {\n var milliseconds = duration._milliseconds,\n days = absRound(duration._days),\n months = absRound(duration._months);\n\n if (!mom.isValid()) {\n // No op\n return;\n }\n\n updateOffset = updateOffset == null ? true : updateOffset;\n\n if (months) {\n setMonth(mom, get(mom, 'Month') + months * isAdding);\n }\n if (days) {\n set$1(mom, 'Date', get(mom, 'Date') + days * isAdding);\n }\n if (milliseconds) {\n mom._d.setTime(mom._d.valueOf() + milliseconds * isAdding);\n }\n if (updateOffset) {\n hooks.updateOffset(mom, days || months);\n }\n }\n\n var add = createAdder(1, 'add'),\n subtract = createAdder(-1, 'subtract');\n\n function isString(input) {\n return typeof input === 'string' || input instanceof String;\n }\n\n // type MomentInput = Moment | Date | string | number | (number | string)[] | MomentInputObject | void; // null | undefined\n function isMomentInput(input) {\n return (\n isMoment(input) ||\n isDate(input) ||\n isString(input) ||\n isNumber(input) ||\n isNumberOrStringArray(input) ||\n isMomentInputObject(input) ||\n input === null ||\n input === undefined\n );\n }\n\n function isMomentInputObject(input) {\n var objectTest = isObject(input) && !isObjectEmpty(input),\n propertyTest = false,\n properties = [\n 'years',\n 'year',\n 'y',\n 'months',\n 'month',\n 'M',\n 'days',\n 'day',\n 'd',\n 'dates',\n 'date',\n 'D',\n 'hours',\n 'hour',\n 'h',\n 'minutes',\n 'minute',\n 'm',\n 'seconds',\n 'second',\n 's',\n 'milliseconds',\n 'millisecond',\n 'ms',\n ],\n i,\n property,\n propertyLen = properties.length;\n\n for (i = 0; i < propertyLen; i += 1) {\n property = properties[i];\n propertyTest = propertyTest || hasOwnProp(input, property);\n }\n\n return objectTest && propertyTest;\n }\n\n function isNumberOrStringArray(input) {\n var arrayTest = isArray(input),\n dataTypeTest = false;\n if (arrayTest) {\n dataTypeTest =\n input.filter(function (item) {\n return !isNumber(item) && isString(input);\n }).length === 0;\n }\n return arrayTest && dataTypeTest;\n }\n\n function isCalendarSpec(input) {\n var objectTest = isObject(input) && !isObjectEmpty(input),\n propertyTest = false,\n properties = [\n 'sameDay',\n 'nextDay',\n 'lastDay',\n 'nextWeek',\n 'lastWeek',\n 'sameElse',\n ],\n i,\n property;\n\n for (i = 0; i < properties.length; i += 1) {\n property = properties[i];\n propertyTest = propertyTest || hasOwnProp(input, property);\n }\n\n return objectTest && propertyTest;\n }\n\n function getCalendarFormat(myMoment, now) {\n var diff = myMoment.diff(now, 'days', true);\n return diff < -6\n ? 'sameElse'\n : diff < -1\n ? 'lastWeek'\n : diff < 0\n ? 'lastDay'\n : diff < 1\n ? 'sameDay'\n : diff < 2\n ? 'nextDay'\n : diff < 7\n ? 'nextWeek'\n : 'sameElse';\n }\n\n function calendar$1(time, formats) {\n // Support for single parameter, formats only overload to the calendar function\n if (arguments.length === 1) {\n if (!arguments[0]) {\n time = undefined;\n formats = undefined;\n } else if (isMomentInput(arguments[0])) {\n time = arguments[0];\n formats = undefined;\n } else if (isCalendarSpec(arguments[0])) {\n formats = arguments[0];\n time = undefined;\n }\n }\n // We want to compare the start of today, vs this.\n // Getting start-of-today depends on whether we're local/utc/offset or not.\n var now = time || createLocal(),\n sod = cloneWithOffset(now, this).startOf('day'),\n format = hooks.calendarFormat(this, sod) || 'sameElse',\n output =\n formats &&\n (isFunction(formats[format])\n ? formats[format].call(this, now)\n : formats[format]);\n\n return this.format(\n output || this.localeData().calendar(format, this, createLocal(now))\n );\n }\n\n function clone() {\n return new Moment(this);\n }\n\n function isAfter(input, units) {\n var localInput = isMoment(input) ? input : createLocal(input);\n if (!(this.isValid() && localInput.isValid())) {\n return false;\n }\n units = normalizeUnits(units) || 'millisecond';\n if (units === 'millisecond') {\n return this.valueOf() > localInput.valueOf();\n } else {\n return localInput.valueOf() < this.clone().startOf(units).valueOf();\n }\n }\n\n function isBefore(input, units) {\n var localInput = isMoment(input) ? input : createLocal(input);\n if (!(this.isValid() && localInput.isValid())) {\n return false;\n }\n units = normalizeUnits(units) || 'millisecond';\n if (units === 'millisecond') {\n return this.valueOf() < localInput.valueOf();\n } else {\n return this.clone().endOf(units).valueOf() < localInput.valueOf();\n }\n }\n\n function isBetween(from, to, units, inclusivity) {\n var localFrom = isMoment(from) ? from : createLocal(from),\n localTo = isMoment(to) ? to : createLocal(to);\n if (!(this.isValid() && localFrom.isValid() && localTo.isValid())) {\n return false;\n }\n inclusivity = inclusivity || '()';\n return (\n (inclusivity[0] === '('\n ? this.isAfter(localFrom, units)\n : !this.isBefore(localFrom, units)) &&\n (inclusivity[1] === ')'\n ? this.isBefore(localTo, units)\n : !this.isAfter(localTo, units))\n );\n }\n\n function isSame(input, units) {\n var localInput = isMoment(input) ? input : createLocal(input),\n inputMs;\n if (!(this.isValid() && localInput.isValid())) {\n return false;\n }\n units = normalizeUnits(units) || 'millisecond';\n if (units === 'millisecond') {\n return this.valueOf() === localInput.valueOf();\n } else {\n inputMs = localInput.valueOf();\n return (\n this.clone().startOf(units).valueOf() <= inputMs &&\n inputMs <= this.clone().endOf(units).valueOf()\n );\n }\n }\n\n function isSameOrAfter(input, units) {\n return this.isSame(input, units) || this.isAfter(input, units);\n }\n\n function isSameOrBefore(input, units) {\n return this.isSame(input, units) || this.isBefore(input, units);\n }\n\n function diff(input, units, asFloat) {\n var that, zoneDelta, output;\n\n if (!this.isValid()) {\n return NaN;\n }\n\n that = cloneWithOffset(input, this);\n\n if (!that.isValid()) {\n return NaN;\n }\n\n zoneDelta = (that.utcOffset() - this.utcOffset()) * 6e4;\n\n units = normalizeUnits(units);\n\n switch (units) {\n case 'year':\n output = monthDiff(this, that) / 12;\n break;\n case 'month':\n output = monthDiff(this, that);\n break;\n case 'quarter':\n output = monthDiff(this, that) / 3;\n break;\n case 'second':\n output = (this - that) / 1e3;\n break; // 1000\n case 'minute':\n output = (this - that) / 6e4;\n break; // 1000 * 60\n case 'hour':\n output = (this - that) / 36e5;\n break; // 1000 * 60 * 60\n case 'day':\n output = (this - that - zoneDelta) / 864e5;\n break; // 1000 * 60 * 60 * 24, negate dst\n case 'week':\n output = (this - that - zoneDelta) / 6048e5;\n break; // 1000 * 60 * 60 * 24 * 7, negate dst\n default:\n output = this - that;\n }\n\n return asFloat ? output : absFloor(output);\n }\n\n function monthDiff(a, b) {\n if (a.date() < b.date()) {\n // end-of-month calculations work correct when the start month has more\n // days than the end month.\n return -monthDiff(b, a);\n }\n // difference in months\n var wholeMonthDiff = (b.year() - a.year()) * 12 + (b.month() - a.month()),\n // b is in (anchor - 1 month, anchor + 1 month)\n anchor = a.clone().add(wholeMonthDiff, 'months'),\n anchor2,\n adjust;\n\n if (b - anchor < 0) {\n anchor2 = a.clone().add(wholeMonthDiff - 1, 'months');\n // linear across the month\n adjust = (b - anchor) / (anchor - anchor2);\n } else {\n anchor2 = a.clone().add(wholeMonthDiff + 1, 'months');\n // linear across the month\n adjust = (b - anchor) / (anchor2 - anchor);\n }\n\n //check for negative zero, return zero if negative zero\n return -(wholeMonthDiff + adjust) || 0;\n }\n\n hooks.defaultFormat = 'YYYY-MM-DDTHH:mm:ssZ';\n hooks.defaultFormatUtc = 'YYYY-MM-DDTHH:mm:ss[Z]';\n\n function toString() {\n return this.clone().locale('en').format('ddd MMM DD YYYY HH:mm:ss [GMT]ZZ');\n }\n\n function toISOString(keepOffset) {\n if (!this.isValid()) {\n return null;\n }\n var utc = keepOffset !== true,\n m = utc ? this.clone().utc() : this;\n if (m.year() < 0 || m.year() > 9999) {\n return formatMoment(\n m,\n utc\n ? 'YYYYYY-MM-DD[T]HH:mm:ss.SSS[Z]'\n : 'YYYYYY-MM-DD[T]HH:mm:ss.SSSZ'\n );\n }\n if (isFunction(Date.prototype.toISOString)) {\n // native implementation is ~50x faster, use it when we can\n if (utc) {\n return this.toDate().toISOString();\n } else {\n return new Date(this.valueOf() + this.utcOffset() * 60 * 1000)\n .toISOString()\n .replace('Z', formatMoment(m, 'Z'));\n }\n }\n return formatMoment(\n m,\n utc ? 'YYYY-MM-DD[T]HH:mm:ss.SSS[Z]' : 'YYYY-MM-DD[T]HH:mm:ss.SSSZ'\n );\n }\n\n /**\n * Return a human readable representation of a moment that can\n * also be evaluated to get a new moment which is the same\n *\n * @link https://nodejs.org/dist/latest/docs/api/util.html#util_custom_inspect_function_on_objects\n */\n function inspect() {\n if (!this.isValid()) {\n return 'moment.invalid(/* ' + this._i + ' */)';\n }\n var func = 'moment',\n zone = '',\n prefix,\n year,\n datetime,\n suffix;\n if (!this.isLocal()) {\n func = this.utcOffset() === 0 ? 'moment.utc' : 'moment.parseZone';\n zone = 'Z';\n }\n prefix = '[' + func + '(\"]';\n year = 0 <= this.year() && this.year() <= 9999 ? 'YYYY' : 'YYYYYY';\n datetime = '-MM-DD[T]HH:mm:ss.SSS';\n suffix = zone + '[\")]';\n\n return this.format(prefix + year + datetime + suffix);\n }\n\n function format(inputString) {\n if (!inputString) {\n inputString = this.isUtc()\n ? hooks.defaultFormatUtc\n : hooks.defaultFormat;\n }\n var output = formatMoment(this, inputString);\n return this.localeData().postformat(output);\n }\n\n function from(time, withoutSuffix) {\n if (\n this.isValid() &&\n ((isMoment(time) && time.isValid()) || createLocal(time).isValid())\n ) {\n return createDuration({ to: this, from: time })\n .locale(this.locale())\n .humanize(!withoutSuffix);\n } else {\n return this.localeData().invalidDate();\n }\n }\n\n function fromNow(withoutSuffix) {\n return this.from(createLocal(), withoutSuffix);\n }\n\n function to(time, withoutSuffix) {\n if (\n this.isValid() &&\n ((isMoment(time) && time.isValid()) || createLocal(time).isValid())\n ) {\n return createDuration({ from: this, to: time })\n .locale(this.locale())\n .humanize(!withoutSuffix);\n } else {\n return this.localeData().invalidDate();\n }\n }\n\n function toNow(withoutSuffix) {\n return this.to(createLocal(), withoutSuffix);\n }\n\n // If passed a locale key, it will set the locale for this\n // instance. Otherwise, it will return the locale configuration\n // variables for this instance.\n function locale(key) {\n var newLocaleData;\n\n if (key === undefined) {\n return this._locale._abbr;\n } else {\n newLocaleData = getLocale(key);\n if (newLocaleData != null) {\n this._locale = newLocaleData;\n }\n return this;\n }\n }\n\n var lang = deprecate(\n 'moment().lang() is deprecated. Instead, use moment().localeData() to get the language configuration. Use moment().locale() to change languages.',\n function (key) {\n if (key === undefined) {\n return this.localeData();\n } else {\n return this.locale(key);\n }\n }\n );\n\n function localeData() {\n return this._locale;\n }\n\n var MS_PER_SECOND = 1000,\n MS_PER_MINUTE = 60 * MS_PER_SECOND,\n MS_PER_HOUR = 60 * MS_PER_MINUTE,\n MS_PER_400_YEARS = (365 * 400 + 97) * 24 * MS_PER_HOUR;\n\n // actual modulo - handles negative numbers (for dates before 1970):\n function mod$1(dividend, divisor) {\n return ((dividend % divisor) + divisor) % divisor;\n }\n\n function localStartOfDate(y, m, d) {\n // the date constructor remaps years 0-99 to 1900-1999\n if (y < 100 && y >= 0) {\n // preserve leap years using a full 400 year cycle, then reset\n return new Date(y + 400, m, d) - MS_PER_400_YEARS;\n } else {\n return new Date(y, m, d).valueOf();\n }\n }\n\n function utcStartOfDate(y, m, d) {\n // Date.UTC remaps years 0-99 to 1900-1999\n if (y < 100 && y >= 0) {\n // preserve leap years using a full 400 year cycle, then reset\n return Date.UTC(y + 400, m, d) - MS_PER_400_YEARS;\n } else {\n return Date.UTC(y, m, d);\n }\n }\n\n function startOf(units) {\n var time, startOfDate;\n units = normalizeUnits(units);\n if (units === undefined || units === 'millisecond' || !this.isValid()) {\n return this;\n }\n\n startOfDate = this._isUTC ? utcStartOfDate : localStartOfDate;\n\n switch (units) {\n case 'year':\n time = startOfDate(this.year(), 0, 1);\n break;\n case 'quarter':\n time = startOfDate(\n this.year(),\n this.month() - (this.month() % 3),\n 1\n );\n break;\n case 'month':\n time = startOfDate(this.year(), this.month(), 1);\n break;\n case 'week':\n time = startOfDate(\n this.year(),\n this.month(),\n this.date() - this.weekday()\n );\n break;\n case 'isoWeek':\n time = startOfDate(\n this.year(),\n this.month(),\n this.date() - (this.isoWeekday() - 1)\n );\n break;\n case 'day':\n case 'date':\n time = startOfDate(this.year(), this.month(), this.date());\n break;\n case 'hour':\n time = this._d.valueOf();\n time -= mod$1(\n time + (this._isUTC ? 0 : this.utcOffset() * MS_PER_MINUTE),\n MS_PER_HOUR\n );\n break;\n case 'minute':\n time = this._d.valueOf();\n time -= mod$1(time, MS_PER_MINUTE);\n break;\n case 'second':\n time = this._d.valueOf();\n time -= mod$1(time, MS_PER_SECOND);\n break;\n }\n\n this._d.setTime(time);\n hooks.updateOffset(this, true);\n return this;\n }\n\n function endOf(units) {\n var time, startOfDate;\n units = normalizeUnits(units);\n if (units === undefined || units === 'millisecond' || !this.isValid()) {\n return this;\n }\n\n startOfDate = this._isUTC ? utcStartOfDate : localStartOfDate;\n\n switch (units) {\n case 'year':\n time = startOfDate(this.year() + 1, 0, 1) - 1;\n break;\n case 'quarter':\n time =\n startOfDate(\n this.year(),\n this.month() - (this.month() % 3) + 3,\n 1\n ) - 1;\n break;\n case 'month':\n time = startOfDate(this.year(), this.month() + 1, 1) - 1;\n break;\n case 'week':\n time =\n startOfDate(\n this.year(),\n this.month(),\n this.date() - this.weekday() + 7\n ) - 1;\n break;\n case 'isoWeek':\n time =\n startOfDate(\n this.year(),\n this.month(),\n this.date() - (this.isoWeekday() - 1) + 7\n ) - 1;\n break;\n case 'day':\n case 'date':\n time = startOfDate(this.year(), this.month(), this.date() + 1) - 1;\n break;\n case 'hour':\n time = this._d.valueOf();\n time +=\n MS_PER_HOUR -\n mod$1(\n time + (this._isUTC ? 0 : this.utcOffset() * MS_PER_MINUTE),\n MS_PER_HOUR\n ) -\n 1;\n break;\n case 'minute':\n time = this._d.valueOf();\n time += MS_PER_MINUTE - mod$1(time, MS_PER_MINUTE) - 1;\n break;\n case 'second':\n time = this._d.valueOf();\n time += MS_PER_SECOND - mod$1(time, MS_PER_SECOND) - 1;\n break;\n }\n\n this._d.setTime(time);\n hooks.updateOffset(this, true);\n return this;\n }\n\n function valueOf() {\n return this._d.valueOf() - (this._offset || 0) * 60000;\n }\n\n function unix() {\n return Math.floor(this.valueOf() / 1000);\n }\n\n function toDate() {\n return new Date(this.valueOf());\n }\n\n function toArray() {\n var m = this;\n return [\n m.year(),\n m.month(),\n m.date(),\n m.hour(),\n m.minute(),\n m.second(),\n m.millisecond(),\n ];\n }\n\n function toObject() {\n var m = this;\n return {\n years: m.year(),\n months: m.month(),\n date: m.date(),\n hours: m.hours(),\n minutes: m.minutes(),\n seconds: m.seconds(),\n milliseconds: m.milliseconds(),\n };\n }\n\n function toJSON() {\n // new Date(NaN).toJSON() === null\n return this.isValid() ? this.toISOString() : null;\n }\n\n function isValid$2() {\n return isValid(this);\n }\n\n function parsingFlags() {\n return extend({}, getParsingFlags(this));\n }\n\n function invalidAt() {\n return getParsingFlags(this).overflow;\n }\n\n function creationData() {\n return {\n input: this._i,\n format: this._f,\n locale: this._locale,\n isUTC: this._isUTC,\n strict: this._strict,\n };\n }\n\n addFormatToken('N', 0, 0, 'eraAbbr');\n addFormatToken('NN', 0, 0, 'eraAbbr');\n addFormatToken('NNN', 0, 0, 'eraAbbr');\n addFormatToken('NNNN', 0, 0, 'eraName');\n addFormatToken('NNNNN', 0, 0, 'eraNarrow');\n\n addFormatToken('y', ['y', 1], 'yo', 'eraYear');\n addFormatToken('y', ['yy', 2], 0, 'eraYear');\n addFormatToken('y', ['yyy', 3], 0, 'eraYear');\n addFormatToken('y', ['yyyy', 4], 0, 'eraYear');\n\n addRegexToken('N', matchEraAbbr);\n addRegexToken('NN', matchEraAbbr);\n addRegexToken('NNN', matchEraAbbr);\n addRegexToken('NNNN', matchEraName);\n addRegexToken('NNNNN', matchEraNarrow);\n\n addParseToken(\n ['N', 'NN', 'NNN', 'NNNN', 'NNNNN'],\n function (input, array, config, token) {\n var era = config._locale.erasParse(input, token, config._strict);\n if (era) {\n getParsingFlags(config).era = era;\n } else {\n getParsingFlags(config).invalidEra = input;\n }\n }\n );\n\n addRegexToken('y', matchUnsigned);\n addRegexToken('yy', matchUnsigned);\n addRegexToken('yyy', matchUnsigned);\n addRegexToken('yyyy', matchUnsigned);\n addRegexToken('yo', matchEraYearOrdinal);\n\n addParseToken(['y', 'yy', 'yyy', 'yyyy'], YEAR);\n addParseToken(['yo'], function (input, array, config, token) {\n var match;\n if (config._locale._eraYearOrdinalRegex) {\n match = input.match(config._locale._eraYearOrdinalRegex);\n }\n\n if (config._locale.eraYearOrdinalParse) {\n array[YEAR] = config._locale.eraYearOrdinalParse(input, match);\n } else {\n array[YEAR] = parseInt(input, 10);\n }\n });\n\n function localeEras(m, format) {\n var i,\n l,\n date,\n eras = this._eras || getLocale('en')._eras;\n for (i = 0, l = eras.length; i < l; ++i) {\n switch (typeof eras[i].since) {\n case 'string':\n // truncate time\n date = hooks(eras[i].since).startOf('day');\n eras[i].since = date.valueOf();\n break;\n }\n\n switch (typeof eras[i].until) {\n case 'undefined':\n eras[i].until = +Infinity;\n break;\n case 'string':\n // truncate time\n date = hooks(eras[i].until).startOf('day').valueOf();\n eras[i].until = date.valueOf();\n break;\n }\n }\n return eras;\n }\n\n function localeErasParse(eraName, format, strict) {\n var i,\n l,\n eras = this.eras(),\n name,\n abbr,\n narrow;\n eraName = eraName.toUpperCase();\n\n for (i = 0, l = eras.length; i < l; ++i) {\n name = eras[i].name.toUpperCase();\n abbr = eras[i].abbr.toUpperCase();\n narrow = eras[i].narrow.toUpperCase();\n\n if (strict) {\n switch (format) {\n case 'N':\n case 'NN':\n case 'NNN':\n if (abbr === eraName) {\n return eras[i];\n }\n break;\n\n case 'NNNN':\n if (name === eraName) {\n return eras[i];\n }\n break;\n\n case 'NNNNN':\n if (narrow === eraName) {\n return eras[i];\n }\n break;\n }\n } else if ([name, abbr, narrow].indexOf(eraName) >= 0) {\n return eras[i];\n }\n }\n }\n\n function localeErasConvertYear(era, year) {\n var dir = era.since <= era.until ? +1 : -1;\n if (year === undefined) {\n return hooks(era.since).year();\n } else {\n return hooks(era.since).year() + (year - era.offset) * dir;\n }\n }\n\n function getEraName() {\n var i,\n l,\n val,\n eras = this.localeData().eras();\n for (i = 0, l = eras.length; i < l; ++i) {\n // truncate time\n val = this.clone().startOf('day').valueOf();\n\n if (eras[i].since <= val && val <= eras[i].until) {\n return eras[i].name;\n }\n if (eras[i].until <= val && val <= eras[i].since) {\n return eras[i].name;\n }\n }\n\n return '';\n }\n\n function getEraNarrow() {\n var i,\n l,\n val,\n eras = this.localeData().eras();\n for (i = 0, l = eras.length; i < l; ++i) {\n // truncate time\n val = this.clone().startOf('day').valueOf();\n\n if (eras[i].since <= val && val <= eras[i].until) {\n return eras[i].narrow;\n }\n if (eras[i].until <= val && val <= eras[i].since) {\n return eras[i].narrow;\n }\n }\n\n return '';\n }\n\n function getEraAbbr() {\n var i,\n l,\n val,\n eras = this.localeData().eras();\n for (i = 0, l = eras.length; i < l; ++i) {\n // truncate time\n val = this.clone().startOf('day').valueOf();\n\n if (eras[i].since <= val && val <= eras[i].until) {\n return eras[i].abbr;\n }\n if (eras[i].until <= val && val <= eras[i].since) {\n return eras[i].abbr;\n }\n }\n\n return '';\n }\n\n function getEraYear() {\n var i,\n l,\n dir,\n val,\n eras = this.localeData().eras();\n for (i = 0, l = eras.length; i < l; ++i) {\n dir = eras[i].since <= eras[i].until ? +1 : -1;\n\n // truncate time\n val = this.clone().startOf('day').valueOf();\n\n if (\n (eras[i].since <= val && val <= eras[i].until) ||\n (eras[i].until <= val && val <= eras[i].since)\n ) {\n return (\n (this.year() - hooks(eras[i].since).year()) * dir +\n eras[i].offset\n );\n }\n }\n\n return this.year();\n }\n\n function erasNameRegex(isStrict) {\n if (!hasOwnProp(this, '_erasNameRegex')) {\n computeErasParse.call(this);\n }\n return isStrict ? this._erasNameRegex : this._erasRegex;\n }\n\n function erasAbbrRegex(isStrict) {\n if (!hasOwnProp(this, '_erasAbbrRegex')) {\n computeErasParse.call(this);\n }\n return isStrict ? this._erasAbbrRegex : this._erasRegex;\n }\n\n function erasNarrowRegex(isStrict) {\n if (!hasOwnProp(this, '_erasNarrowRegex')) {\n computeErasParse.call(this);\n }\n return isStrict ? this._erasNarrowRegex : this._erasRegex;\n }\n\n function matchEraAbbr(isStrict, locale) {\n return locale.erasAbbrRegex(isStrict);\n }\n\n function matchEraName(isStrict, locale) {\n return locale.erasNameRegex(isStrict);\n }\n\n function matchEraNarrow(isStrict, locale) {\n return locale.erasNarrowRegex(isStrict);\n }\n\n function matchEraYearOrdinal(isStrict, locale) {\n return locale._eraYearOrdinalRegex || matchUnsigned;\n }\n\n function computeErasParse() {\n var abbrPieces = [],\n namePieces = [],\n narrowPieces = [],\n mixedPieces = [],\n i,\n l,\n erasName,\n erasAbbr,\n erasNarrow,\n eras = this.eras();\n\n for (i = 0, l = eras.length; i < l; ++i) {\n erasName = regexEscape(eras[i].name);\n erasAbbr = regexEscape(eras[i].abbr);\n erasNarrow = regexEscape(eras[i].narrow);\n\n namePieces.push(erasName);\n abbrPieces.push(erasAbbr);\n narrowPieces.push(erasNarrow);\n mixedPieces.push(erasName);\n mixedPieces.push(erasAbbr);\n mixedPieces.push(erasNarrow);\n }\n\n this._erasRegex = new RegExp('^(' + mixedPieces.join('|') + ')', 'i');\n this._erasNameRegex = new RegExp('^(' + namePieces.join('|') + ')', 'i');\n this._erasAbbrRegex = new RegExp('^(' + abbrPieces.join('|') + ')', 'i');\n this._erasNarrowRegex = new RegExp(\n '^(' + narrowPieces.join('|') + ')',\n 'i'\n );\n }\n\n // FORMATTING\n\n addFormatToken(0, ['gg', 2], 0, function () {\n return this.weekYear() % 100;\n });\n\n addFormatToken(0, ['GG', 2], 0, function () {\n return this.isoWeekYear() % 100;\n });\n\n function addWeekYearFormatToken(token, getter) {\n addFormatToken(0, [token, token.length], 0, getter);\n }\n\n addWeekYearFormatToken('gggg', 'weekYear');\n addWeekYearFormatToken('ggggg', 'weekYear');\n addWeekYearFormatToken('GGGG', 'isoWeekYear');\n addWeekYearFormatToken('GGGGG', 'isoWeekYear');\n\n // ALIASES\n\n // PARSING\n\n addRegexToken('G', matchSigned);\n addRegexToken('g', matchSigned);\n addRegexToken('GG', match1to2, match2);\n addRegexToken('gg', match1to2, match2);\n addRegexToken('GGGG', match1to4, match4);\n addRegexToken('gggg', match1to4, match4);\n addRegexToken('GGGGG', match1to6, match6);\n addRegexToken('ggggg', match1to6, match6);\n\n addWeekParseToken(\n ['gggg', 'ggggg', 'GGGG', 'GGGGG'],\n function (input, week, config, token) {\n week[token.substr(0, 2)] = toInt(input);\n }\n );\n\n addWeekParseToken(['gg', 'GG'], function (input, week, config, token) {\n week[token] = hooks.parseTwoDigitYear(input);\n });\n\n // MOMENTS\n\n function getSetWeekYear(input) {\n return getSetWeekYearHelper.call(\n this,\n input,\n this.week(),\n this.weekday() + this.localeData()._week.dow,\n this.localeData()._week.dow,\n this.localeData()._week.doy\n );\n }\n\n function getSetISOWeekYear(input) {\n return getSetWeekYearHelper.call(\n this,\n input,\n this.isoWeek(),\n this.isoWeekday(),\n 1,\n 4\n );\n }\n\n function getISOWeeksInYear() {\n return weeksInYear(this.year(), 1, 4);\n }\n\n function getISOWeeksInISOWeekYear() {\n return weeksInYear(this.isoWeekYear(), 1, 4);\n }\n\n function getWeeksInYear() {\n var weekInfo = this.localeData()._week;\n return weeksInYear(this.year(), weekInfo.dow, weekInfo.doy);\n }\n\n function getWeeksInWeekYear() {\n var weekInfo = this.localeData()._week;\n return weeksInYear(this.weekYear(), weekInfo.dow, weekInfo.doy);\n }\n\n function getSetWeekYearHelper(input, week, weekday, dow, doy) {\n var weeksTarget;\n if (input == null) {\n return weekOfYear(this, dow, doy).year;\n } else {\n weeksTarget = weeksInYear(input, dow, doy);\n if (week > weeksTarget) {\n week = weeksTarget;\n }\n return setWeekAll.call(this, input, week, weekday, dow, doy);\n }\n }\n\n function setWeekAll(weekYear, week, weekday, dow, doy) {\n var dayOfYearData = dayOfYearFromWeeks(weekYear, week, weekday, dow, doy),\n date = createUTCDate(dayOfYearData.year, 0, dayOfYearData.dayOfYear);\n\n this.year(date.getUTCFullYear());\n this.month(date.getUTCMonth());\n this.date(date.getUTCDate());\n return this;\n }\n\n // FORMATTING\n\n addFormatToken('Q', 0, 'Qo', 'quarter');\n\n // PARSING\n\n addRegexToken('Q', match1);\n addParseToken('Q', function (input, array) {\n array[MONTH] = (toInt(input) - 1) * 3;\n });\n\n // MOMENTS\n\n function getSetQuarter(input) {\n return input == null\n ? Math.ceil((this.month() + 1) / 3)\n : this.month((input - 1) * 3 + (this.month() % 3));\n }\n\n // FORMATTING\n\n addFormatToken('D', ['DD', 2], 'Do', 'date');\n\n // PARSING\n\n addRegexToken('D', match1to2, match1to2NoLeadingZero);\n addRegexToken('DD', match1to2, match2);\n addRegexToken('Do', function (isStrict, locale) {\n // TODO: Remove \"ordinalParse\" fallback in next major release.\n return isStrict\n ? locale._dayOfMonthOrdinalParse || locale._ordinalParse\n : locale._dayOfMonthOrdinalParseLenient;\n });\n\n addParseToken(['D', 'DD'], DATE);\n addParseToken('Do', function (input, array) {\n array[DATE] = toInt(input.match(match1to2)[0]);\n });\n\n // MOMENTS\n\n var getSetDayOfMonth = makeGetSet('Date', true);\n\n // FORMATTING\n\n addFormatToken('DDD', ['DDDD', 3], 'DDDo', 'dayOfYear');\n\n // PARSING\n\n addRegexToken('DDD', match1to3);\n addRegexToken('DDDD', match3);\n addParseToken(['DDD', 'DDDD'], function (input, array, config) {\n config._dayOfYear = toInt(input);\n });\n\n // HELPERS\n\n // MOMENTS\n\n function getSetDayOfYear(input) {\n var dayOfYear =\n Math.round(\n (this.clone().startOf('day') - this.clone().startOf('year')) / 864e5\n ) + 1;\n return input == null ? dayOfYear : this.add(input - dayOfYear, 'd');\n }\n\n // FORMATTING\n\n addFormatToken('m', ['mm', 2], 0, 'minute');\n\n // PARSING\n\n addRegexToken('m', match1to2, match1to2HasZero);\n addRegexToken('mm', match1to2, match2);\n addParseToken(['m', 'mm'], MINUTE);\n\n // MOMENTS\n\n var getSetMinute = makeGetSet('Minutes', false);\n\n // FORMATTING\n\n addFormatToken('s', ['ss', 2], 0, 'second');\n\n // PARSING\n\n addRegexToken('s', match1to2, match1to2HasZero);\n addRegexToken('ss', match1to2, match2);\n addParseToken(['s', 'ss'], SECOND);\n\n // MOMENTS\n\n var getSetSecond = makeGetSet('Seconds', false);\n\n // FORMATTING\n\n addFormatToken('S', 0, 0, function () {\n return ~~(this.millisecond() / 100);\n });\n\n addFormatToken(0, ['SS', 2], 0, function () {\n return ~~(this.millisecond() / 10);\n });\n\n addFormatToken(0, ['SSS', 3], 0, 'millisecond');\n addFormatToken(0, ['SSSS', 4], 0, function () {\n return this.millisecond() * 10;\n });\n addFormatToken(0, ['SSSSS', 5], 0, function () {\n return this.millisecond() * 100;\n });\n addFormatToken(0, ['SSSSSS', 6], 0, function () {\n return this.millisecond() * 1000;\n });\n addFormatToken(0, ['SSSSSSS', 7], 0, function () {\n return this.millisecond() * 10000;\n });\n addFormatToken(0, ['SSSSSSSS', 8], 0, function () {\n return this.millisecond() * 100000;\n });\n addFormatToken(0, ['SSSSSSSSS', 9], 0, function () {\n return this.millisecond() * 1000000;\n });\n\n // PARSING\n\n addRegexToken('S', match1to3, match1);\n addRegexToken('SS', match1to3, match2);\n addRegexToken('SSS', match1to3, match3);\n\n var token, getSetMillisecond;\n for (token = 'SSSS'; token.length <= 9; token += 'S') {\n addRegexToken(token, matchUnsigned);\n }\n\n function parseMs(input, array) {\n array[MILLISECOND] = toInt(('0.' + input) * 1000);\n }\n\n for (token = 'S'; token.length <= 9; token += 'S') {\n addParseToken(token, parseMs);\n }\n\n getSetMillisecond = makeGetSet('Milliseconds', false);\n\n // FORMATTING\n\n addFormatToken('z', 0, 0, 'zoneAbbr');\n addFormatToken('zz', 0, 0, 'zoneName');\n\n // MOMENTS\n\n function getZoneAbbr() {\n return this._isUTC ? 'UTC' : '';\n }\n\n function getZoneName() {\n return this._isUTC ? 'Coordinated Universal Time' : '';\n }\n\n var proto = Moment.prototype;\n\n proto.add = add;\n proto.calendar = calendar$1;\n proto.clone = clone;\n proto.diff = diff;\n proto.endOf = endOf;\n proto.format = format;\n proto.from = from;\n proto.fromNow = fromNow;\n proto.to = to;\n proto.toNow = toNow;\n proto.get = stringGet;\n proto.invalidAt = invalidAt;\n proto.isAfter = isAfter;\n proto.isBefore = isBefore;\n proto.isBetween = isBetween;\n proto.isSame = isSame;\n proto.isSameOrAfter = isSameOrAfter;\n proto.isSameOrBefore = isSameOrBefore;\n proto.isValid = isValid$2;\n proto.lang = lang;\n proto.locale = locale;\n proto.localeData = localeData;\n proto.max = prototypeMax;\n proto.min = prototypeMin;\n proto.parsingFlags = parsingFlags;\n proto.set = stringSet;\n proto.startOf = startOf;\n proto.subtract = subtract;\n proto.toArray = toArray;\n proto.toObject = toObject;\n proto.toDate = toDate;\n proto.toISOString = toISOString;\n proto.inspect = inspect;\n if (typeof Symbol !== 'undefined' && Symbol.for != null) {\n proto[Symbol.for('nodejs.util.inspect.custom')] = function () {\n return 'Moment<' + this.format() + '>';\n };\n }\n proto.toJSON = toJSON;\n proto.toString = toString;\n proto.unix = unix;\n proto.valueOf = valueOf;\n proto.creationData = creationData;\n proto.eraName = getEraName;\n proto.eraNarrow = getEraNarrow;\n proto.eraAbbr = getEraAbbr;\n proto.eraYear = getEraYear;\n proto.year = getSetYear;\n proto.isLeapYear = getIsLeapYear;\n proto.weekYear = getSetWeekYear;\n proto.isoWeekYear = getSetISOWeekYear;\n proto.quarter = proto.quarters = getSetQuarter;\n proto.month = getSetMonth;\n proto.daysInMonth = getDaysInMonth;\n proto.week = proto.weeks = getSetWeek;\n proto.isoWeek = proto.isoWeeks = getSetISOWeek;\n proto.weeksInYear = getWeeksInYear;\n proto.weeksInWeekYear = getWeeksInWeekYear;\n proto.isoWeeksInYear = getISOWeeksInYear;\n proto.isoWeeksInISOWeekYear = getISOWeeksInISOWeekYear;\n proto.date = getSetDayOfMonth;\n proto.day = proto.days = getSetDayOfWeek;\n proto.weekday = getSetLocaleDayOfWeek;\n proto.isoWeekday = getSetISODayOfWeek;\n proto.dayOfYear = getSetDayOfYear;\n proto.hour = proto.hours = getSetHour;\n proto.minute = proto.minutes = getSetMinute;\n proto.second = proto.seconds = getSetSecond;\n proto.millisecond = proto.milliseconds = getSetMillisecond;\n proto.utcOffset = getSetOffset;\n proto.utc = setOffsetToUTC;\n proto.local = setOffsetToLocal;\n proto.parseZone = setOffsetToParsedOffset;\n proto.hasAlignedHourOffset = hasAlignedHourOffset;\n proto.isDST = isDaylightSavingTime;\n proto.isLocal = isLocal;\n proto.isUtcOffset = isUtcOffset;\n proto.isUtc = isUtc;\n proto.isUTC = isUtc;\n proto.zoneAbbr = getZoneAbbr;\n proto.zoneName = getZoneName;\n proto.dates = deprecate(\n 'dates accessor is deprecated. Use date instead.',\n getSetDayOfMonth\n );\n proto.months = deprecate(\n 'months accessor is deprecated. Use month instead',\n getSetMonth\n );\n proto.years = deprecate(\n 'years accessor is deprecated. Use year instead',\n getSetYear\n );\n proto.zone = deprecate(\n 'moment().zone is deprecated, use moment().utcOffset instead. http://momentjs.com/guides/#/warnings/zone/',\n getSetZone\n );\n proto.isDSTShifted = deprecate(\n 'isDSTShifted is deprecated. See http://momentjs.com/guides/#/warnings/dst-shifted/ for more information',\n isDaylightSavingTimeShifted\n );\n\n function createUnix(input) {\n return createLocal(input * 1000);\n }\n\n function createInZone() {\n return createLocal.apply(null, arguments).parseZone();\n }\n\n function preParsePostFormat(string) {\n return string;\n }\n\n var proto$1 = Locale.prototype;\n\n proto$1.calendar = calendar;\n proto$1.longDateFormat = longDateFormat;\n proto$1.invalidDate = invalidDate;\n proto$1.ordinal = ordinal;\n proto$1.preparse = preParsePostFormat;\n proto$1.postformat = preParsePostFormat;\n proto$1.relativeTime = relativeTime;\n proto$1.pastFuture = pastFuture;\n proto$1.set = set;\n proto$1.eras = localeEras;\n proto$1.erasParse = localeErasParse;\n proto$1.erasConvertYear = localeErasConvertYear;\n proto$1.erasAbbrRegex = erasAbbrRegex;\n proto$1.erasNameRegex = erasNameRegex;\n proto$1.erasNarrowRegex = erasNarrowRegex;\n\n proto$1.months = localeMonths;\n proto$1.monthsShort = localeMonthsShort;\n proto$1.monthsParse = localeMonthsParse;\n proto$1.monthsRegex = monthsRegex;\n proto$1.monthsShortRegex = monthsShortRegex;\n proto$1.week = localeWeek;\n proto$1.firstDayOfYear = localeFirstDayOfYear;\n proto$1.firstDayOfWeek = localeFirstDayOfWeek;\n\n proto$1.weekdays = localeWeekdays;\n proto$1.weekdaysMin = localeWeekdaysMin;\n proto$1.weekdaysShort = localeWeekdaysShort;\n proto$1.weekdaysParse = localeWeekdaysParse;\n\n proto$1.weekdaysRegex = weekdaysRegex;\n proto$1.weekdaysShortRegex = weekdaysShortRegex;\n proto$1.weekdaysMinRegex = weekdaysMinRegex;\n\n proto$1.isPM = localeIsPM;\n proto$1.meridiem = localeMeridiem;\n\n function get$1(format, index, field, setter) {\n var locale = getLocale(),\n utc = createUTC().set(setter, index);\n return locale[field](utc, format);\n }\n\n function listMonthsImpl(format, index, field) {\n if (isNumber(format)) {\n index = format;\n format = undefined;\n }\n\n format = format || '';\n\n if (index != null) {\n return get$1(format, index, field, 'month');\n }\n\n var i,\n out = [];\n for (i = 0; i < 12; i++) {\n out[i] = get$1(format, i, field, 'month');\n }\n return out;\n }\n\n // ()\n // (5)\n // (fmt, 5)\n // (fmt)\n // (true)\n // (true, 5)\n // (true, fmt, 5)\n // (true, fmt)\n function listWeekdaysImpl(localeSorted, format, index, field) {\n if (typeof localeSorted === 'boolean') {\n if (isNumber(format)) {\n index = format;\n format = undefined;\n }\n\n format = format || '';\n } else {\n format = localeSorted;\n index = format;\n localeSorted = false;\n\n if (isNumber(format)) {\n index = format;\n format = undefined;\n }\n\n format = format || '';\n }\n\n var locale = getLocale(),\n shift = localeSorted ? locale._week.dow : 0,\n i,\n out = [];\n\n if (index != null) {\n return get$1(format, (index + shift) % 7, field, 'day');\n }\n\n for (i = 0; i < 7; i++) {\n out[i] = get$1(format, (i + shift) % 7, field, 'day');\n }\n return out;\n }\n\n function listMonths(format, index) {\n return listMonthsImpl(format, index, 'months');\n }\n\n function listMonthsShort(format, index) {\n return listMonthsImpl(format, index, 'monthsShort');\n }\n\n function listWeekdays(localeSorted, format, index) {\n return listWeekdaysImpl(localeSorted, format, index, 'weekdays');\n }\n\n function listWeekdaysShort(localeSorted, format, index) {\n return listWeekdaysImpl(localeSorted, format, index, 'weekdaysShort');\n }\n\n function listWeekdaysMin(localeSorted, format, index) {\n return listWeekdaysImpl(localeSorted, format, index, 'weekdaysMin');\n }\n\n getSetGlobalLocale('en', {\n eras: [\n {\n since: '0001-01-01',\n until: +Infinity,\n offset: 1,\n name: 'Anno Domini',\n narrow: 'AD',\n abbr: 'AD',\n },\n {\n since: '0000-12-31',\n until: -Infinity,\n offset: 1,\n name: 'Before Christ',\n narrow: 'BC',\n abbr: 'BC',\n },\n ],\n dayOfMonthOrdinalParse: /\\d{1,2}(th|st|nd|rd)/,\n ordinal: function (number) {\n var b = number % 10,\n output =\n toInt((number % 100) / 10) === 1\n ? 'th'\n : b === 1\n ? 'st'\n : b === 2\n ? 'nd'\n : b === 3\n ? 'rd'\n : 'th';\n return number + output;\n },\n });\n\n // Side effect imports\n\n hooks.lang = deprecate(\n 'moment.lang is deprecated. Use moment.locale instead.',\n getSetGlobalLocale\n );\n hooks.langData = deprecate(\n 'moment.langData is deprecated. Use moment.localeData instead.',\n getLocale\n );\n\n var mathAbs = Math.abs;\n\n function abs() {\n var data = this._data;\n\n this._milliseconds = mathAbs(this._milliseconds);\n this._days = mathAbs(this._days);\n this._months = mathAbs(this._months);\n\n data.milliseconds = mathAbs(data.milliseconds);\n data.seconds = mathAbs(data.seconds);\n data.minutes = mathAbs(data.minutes);\n data.hours = mathAbs(data.hours);\n data.months = mathAbs(data.months);\n data.years = mathAbs(data.years);\n\n return this;\n }\n\n function addSubtract$1(duration, input, value, direction) {\n var other = createDuration(input, value);\n\n duration._milliseconds += direction * other._milliseconds;\n duration._days += direction * other._days;\n duration._months += direction * other._months;\n\n return duration._bubble();\n }\n\n // supports only 2.0-style add(1, 's') or add(duration)\n function add$1(input, value) {\n return addSubtract$1(this, input, value, 1);\n }\n\n // supports only 2.0-style subtract(1, 's') or subtract(duration)\n function subtract$1(input, value) {\n return addSubtract$1(this, input, value, -1);\n }\n\n function absCeil(number) {\n if (number < 0) {\n return Math.floor(number);\n } else {\n return Math.ceil(number);\n }\n }\n\n function bubble() {\n var milliseconds = this._milliseconds,\n days = this._days,\n months = this._months,\n data = this._data,\n seconds,\n minutes,\n hours,\n years,\n monthsFromDays;\n\n // if we have a mix of positive and negative values, bubble down first\n // check: https://github.com/moment/moment/issues/2166\n if (\n !(\n (milliseconds >= 0 && days >= 0 && months >= 0) ||\n (milliseconds <= 0 && days <= 0 && months <= 0)\n )\n ) {\n milliseconds += absCeil(monthsToDays(months) + days) * 864e5;\n days = 0;\n months = 0;\n }\n\n // The following code bubbles up values, see the tests for\n // examples of what that means.\n data.milliseconds = milliseconds % 1000;\n\n seconds = absFloor(milliseconds / 1000);\n data.seconds = seconds % 60;\n\n minutes = absFloor(seconds / 60);\n data.minutes = minutes % 60;\n\n hours = absFloor(minutes / 60);\n data.hours = hours % 24;\n\n days += absFloor(hours / 24);\n\n // convert days to months\n monthsFromDays = absFloor(daysToMonths(days));\n months += monthsFromDays;\n days -= absCeil(monthsToDays(monthsFromDays));\n\n // 12 months -> 1 year\n years = absFloor(months / 12);\n months %= 12;\n\n data.days = days;\n data.months = months;\n data.years = years;\n\n return this;\n }\n\n function daysToMonths(days) {\n // 400 years have 146097 days (taking into account leap year rules)\n // 400 years have 12 months === 4800\n return (days * 4800) / 146097;\n }\n\n function monthsToDays(months) {\n // the reverse of daysToMonths\n return (months * 146097) / 4800;\n }\n\n function as(units) {\n if (!this.isValid()) {\n return NaN;\n }\n var days,\n months,\n milliseconds = this._milliseconds;\n\n units = normalizeUnits(units);\n\n if (units === 'month' || units === 'quarter' || units === 'year') {\n days = this._days + milliseconds / 864e5;\n months = this._months + daysToMonths(days);\n switch (units) {\n case 'month':\n return months;\n case 'quarter':\n return months / 3;\n case 'year':\n return months / 12;\n }\n } else {\n // handle milliseconds separately because of floating point math errors (issue #1867)\n days = this._days + Math.round(monthsToDays(this._months));\n switch (units) {\n case 'week':\n return days / 7 + milliseconds / 6048e5;\n case 'day':\n return days + milliseconds / 864e5;\n case 'hour':\n return days * 24 + milliseconds / 36e5;\n case 'minute':\n return days * 1440 + milliseconds / 6e4;\n case 'second':\n return days * 86400 + milliseconds / 1000;\n // Math.floor prevents floating point math errors here\n case 'millisecond':\n return Math.floor(days * 864e5) + milliseconds;\n default:\n throw new Error('Unknown unit ' + units);\n }\n }\n }\n\n function makeAs(alias) {\n return function () {\n return this.as(alias);\n };\n }\n\n var asMilliseconds = makeAs('ms'),\n asSeconds = makeAs('s'),\n asMinutes = makeAs('m'),\n asHours = makeAs('h'),\n asDays = makeAs('d'),\n asWeeks = makeAs('w'),\n asMonths = makeAs('M'),\n asQuarters = makeAs('Q'),\n asYears = makeAs('y'),\n valueOf$1 = asMilliseconds;\n\n function clone$1() {\n return createDuration(this);\n }\n\n function get$2(units) {\n units = normalizeUnits(units);\n return this.isValid() ? this[units + 's']() : NaN;\n }\n\n function makeGetter(name) {\n return function () {\n return this.isValid() ? this._data[name] : NaN;\n };\n }\n\n var milliseconds = makeGetter('milliseconds'),\n seconds = makeGetter('seconds'),\n minutes = makeGetter('minutes'),\n hours = makeGetter('hours'),\n days = makeGetter('days'),\n months = makeGetter('months'),\n years = makeGetter('years');\n\n function weeks() {\n return absFloor(this.days() / 7);\n }\n\n var round = Math.round,\n thresholds = {\n ss: 44, // a few seconds to seconds\n s: 45, // seconds to minute\n m: 45, // minutes to hour\n h: 22, // hours to day\n d: 26, // days to month/week\n w: null, // weeks to month\n M: 11, // months to year\n };\n\n // helper function for moment.fn.from, moment.fn.fromNow, and moment.duration.fn.humanize\n function substituteTimeAgo(string, number, withoutSuffix, isFuture, locale) {\n return locale.relativeTime(number || 1, !!withoutSuffix, string, isFuture);\n }\n\n function relativeTime$1(posNegDuration, withoutSuffix, thresholds, locale) {\n var duration = createDuration(posNegDuration).abs(),\n seconds = round(duration.as('s')),\n minutes = round(duration.as('m')),\n hours = round(duration.as('h')),\n days = round(duration.as('d')),\n months = round(duration.as('M')),\n weeks = round(duration.as('w')),\n years = round(duration.as('y')),\n a =\n (seconds <= thresholds.ss && ['s', seconds]) ||\n (seconds < thresholds.s && ['ss', seconds]) ||\n (minutes <= 1 && ['m']) ||\n (minutes < thresholds.m && ['mm', minutes]) ||\n (hours <= 1 && ['h']) ||\n (hours < thresholds.h && ['hh', hours]) ||\n (days <= 1 && ['d']) ||\n (days < thresholds.d && ['dd', days]);\n\n if (thresholds.w != null) {\n a =\n a ||\n (weeks <= 1 && ['w']) ||\n (weeks < thresholds.w && ['ww', weeks]);\n }\n a = a ||\n (months <= 1 && ['M']) ||\n (months < thresholds.M && ['MM', months]) ||\n (years <= 1 && ['y']) || ['yy', years];\n\n a[2] = withoutSuffix;\n a[3] = +posNegDuration > 0;\n a[4] = locale;\n return substituteTimeAgo.apply(null, a);\n }\n\n // This function allows you to set the rounding function for relative time strings\n function getSetRelativeTimeRounding(roundingFunction) {\n if (roundingFunction === undefined) {\n return round;\n }\n if (typeof roundingFunction === 'function') {\n round = roundingFunction;\n return true;\n }\n return false;\n }\n\n // This function allows you to set a threshold for relative time strings\n function getSetRelativeTimeThreshold(threshold, limit) {\n if (thresholds[threshold] === undefined) {\n return false;\n }\n if (limit === undefined) {\n return thresholds[threshold];\n }\n thresholds[threshold] = limit;\n if (threshold === 's') {\n thresholds.ss = limit - 1;\n }\n return true;\n }\n\n function humanize(argWithSuffix, argThresholds) {\n if (!this.isValid()) {\n return this.localeData().invalidDate();\n }\n\n var withSuffix = false,\n th = thresholds,\n locale,\n output;\n\n if (typeof argWithSuffix === 'object') {\n argThresholds = argWithSuffix;\n argWithSuffix = false;\n }\n if (typeof argWithSuffix === 'boolean') {\n withSuffix = argWithSuffix;\n }\n if (typeof argThresholds === 'object') {\n th = Object.assign({}, thresholds, argThresholds);\n if (argThresholds.s != null && argThresholds.ss == null) {\n th.ss = argThresholds.s - 1;\n }\n }\n\n locale = this.localeData();\n output = relativeTime$1(this, !withSuffix, th, locale);\n\n if (withSuffix) {\n output = locale.pastFuture(+this, output);\n }\n\n return locale.postformat(output);\n }\n\n var abs$1 = Math.abs;\n\n function sign(x) {\n return (x > 0) - (x < 0) || +x;\n }\n\n function toISOString$1() {\n // for ISO strings we do not use the normal bubbling rules:\n // * milliseconds bubble up until they become hours\n // * days do not bubble at all\n // * months bubble up until they become years\n // This is because there is no context-free conversion between hours and days\n // (think of clock changes)\n // and also not between days and months (28-31 days per month)\n if (!this.isValid()) {\n return this.localeData().invalidDate();\n }\n\n var seconds = abs$1(this._milliseconds) / 1000,\n days = abs$1(this._days),\n months = abs$1(this._months),\n minutes,\n hours,\n years,\n s,\n total = this.asSeconds(),\n totalSign,\n ymSign,\n daysSign,\n hmsSign;\n\n if (!total) {\n // this is the same as C#'s (Noda) and python (isodate)...\n // but not other JS (goog.date)\n return 'P0D';\n }\n\n // 3600 seconds -> 60 minutes -> 1 hour\n minutes = absFloor(seconds / 60);\n hours = absFloor(minutes / 60);\n seconds %= 60;\n minutes %= 60;\n\n // 12 months -> 1 year\n years = absFloor(months / 12);\n months %= 12;\n\n // inspired by https://github.com/dordille/moment-isoduration/blob/master/moment.isoduration.js\n s = seconds ? seconds.toFixed(3).replace(/\\.?0+$/, '') : '';\n\n totalSign = total < 0 ? '-' : '';\n ymSign = sign(this._months) !== sign(total) ? '-' : '';\n daysSign = sign(this._days) !== sign(total) ? '-' : '';\n hmsSign = sign(this._milliseconds) !== sign(total) ? '-' : '';\n\n return (\n totalSign +\n 'P' +\n (years ? ymSign + years + 'Y' : '') +\n (months ? ymSign + months + 'M' : '') +\n (days ? daysSign + days + 'D' : '') +\n (hours || minutes || seconds ? 'T' : '') +\n (hours ? hmsSign + hours + 'H' : '') +\n (minutes ? hmsSign + minutes + 'M' : '') +\n (seconds ? hmsSign + s + 'S' : '')\n );\n }\n\n var proto$2 = Duration.prototype;\n\n proto$2.isValid = isValid$1;\n proto$2.abs = abs;\n proto$2.add = add$1;\n proto$2.subtract = subtract$1;\n proto$2.as = as;\n proto$2.asMilliseconds = asMilliseconds;\n proto$2.asSeconds = asSeconds;\n proto$2.asMinutes = asMinutes;\n proto$2.asHours = asHours;\n proto$2.asDays = asDays;\n proto$2.asWeeks = asWeeks;\n proto$2.asMonths = asMonths;\n proto$2.asQuarters = asQuarters;\n proto$2.asYears = asYears;\n proto$2.valueOf = valueOf$1;\n proto$2._bubble = bubble;\n proto$2.clone = clone$1;\n proto$2.get = get$2;\n proto$2.milliseconds = milliseconds;\n proto$2.seconds = seconds;\n proto$2.minutes = minutes;\n proto$2.hours = hours;\n proto$2.days = days;\n proto$2.weeks = weeks;\n proto$2.months = months;\n proto$2.years = years;\n proto$2.humanize = humanize;\n proto$2.toISOString = toISOString$1;\n proto$2.toString = toISOString$1;\n proto$2.toJSON = toISOString$1;\n proto$2.locale = locale;\n proto$2.localeData = localeData;\n\n proto$2.toIsoString = deprecate(\n 'toIsoString() is deprecated. Please use toISOString() instead (notice the capitals)',\n toISOString$1\n );\n proto$2.lang = lang;\n\n // FORMATTING\n\n addFormatToken('X', 0, 0, 'unix');\n addFormatToken('x', 0, 0, 'valueOf');\n\n // PARSING\n\n addRegexToken('x', matchSigned);\n addRegexToken('X', matchTimestamp);\n addParseToken('X', function (input, array, config) {\n config._d = new Date(parseFloat(input) * 1000);\n });\n addParseToken('x', function (input, array, config) {\n config._d = new Date(toInt(input));\n });\n\n //! moment.js\n\n hooks.version = '2.30.1';\n\n setHookCallback(createLocal);\n\n hooks.fn = proto;\n hooks.min = min;\n hooks.max = max;\n hooks.now = now;\n hooks.utc = createUTC;\n hooks.unix = createUnix;\n hooks.months = listMonths;\n hooks.isDate = isDate;\n hooks.locale = getSetGlobalLocale;\n hooks.invalid = createInvalid;\n hooks.duration = createDuration;\n hooks.isMoment = isMoment;\n hooks.weekdays = listWeekdays;\n hooks.parseZone = createInZone;\n hooks.localeData = getLocale;\n hooks.isDuration = isDuration;\n hooks.monthsShort = listMonthsShort;\n hooks.weekdaysMin = listWeekdaysMin;\n hooks.defineLocale = defineLocale;\n hooks.updateLocale = updateLocale;\n hooks.locales = listLocales;\n hooks.weekdaysShort = listWeekdaysShort;\n hooks.normalizeUnits = normalizeUnits;\n hooks.relativeTimeRounding = getSetRelativeTimeRounding;\n hooks.relativeTimeThreshold = getSetRelativeTimeThreshold;\n hooks.calendarFormat = getCalendarFormat;\n hooks.prototype = proto;\n\n // currently HTML5 input type only supports 24-hour formats\n hooks.HTML5_FMT = {\n DATETIME_LOCAL: 'YYYY-MM-DDTHH:mm', // <input type=\"datetime-local\" />\n DATETIME_LOCAL_SECONDS: 'YYYY-MM-DDTHH:mm:ss', // <input type=\"datetime-local\" step=\"1\" />\n DATETIME_LOCAL_MS: 'YYYY-MM-DDTHH:mm:ss.SSS', // <input type=\"datetime-local\" step=\"0.001\" />\n DATE: 'YYYY-MM-DD', // <input type=\"date\" />\n TIME: 'HH:mm', // <input type=\"time\" />\n TIME_SECONDS: 'HH:mm:ss', // <input type=\"time\" step=\"1\" />\n TIME_MS: 'HH:mm:ss.SSS', // <input type=\"time\" step=\"0.001\" />\n WEEK: 'GGGG-[W]WW', // <input type=\"week\" />\n MONTH: 'YYYY-MM', // <input type=\"month\" />\n };\n\n return hooks;\n\n})));\n","//! moment-timezone.js\n//! version : 0.5.46\n//! Copyright (c) JS Foundation and other contributors\n//! license : MIT\n//! github.com/moment/moment-timezone\n\n(function (root, factory) {\n\t\"use strict\";\n\n\t/*global define*/\n\tif (typeof module === 'object' && module.exports) {\n\t\tmodule.exports = factory(require('moment')); // Node\n\t} else if (typeof define === 'function' && define.amd) {\n\t\tdefine(['moment'], factory); // AMD\n\t} else {\n\t\tfactory(root.moment); // Browser\n\t}\n}(this, function (moment) {\n\t\"use strict\";\n\n\t// Resolves es6 module loading issue\n\tif (moment.version === undefined && moment.default) {\n\t\tmoment = moment.default;\n\t}\n\n\t// Do not load moment-timezone a second time.\n\t// if (moment.tz !== undefined) {\n\t// \tlogError('Moment Timezone ' + moment.tz.version + ' was already loaded ' + (moment.tz.dataVersion ? 'with data from ' : 'without any data') + moment.tz.dataVersion);\n\t// \treturn moment;\n\t// }\n\n\tvar VERSION = \"0.5.46\",\n\t\tzones = {},\n\t\tlinks = {},\n\t\tcountries = {},\n\t\tnames = {},\n\t\tguesses = {},\n\t\tcachedGuess;\n\n\tif (!moment || typeof moment.version !== 'string') {\n\t\tlogError('Moment Timezone requires Moment.js. See https://momentjs.com/timezone/docs/#/use-it/browser/');\n\t}\n\n\tvar momentVersion = moment.version.split('.'),\n\t\tmajor = +momentVersion[0],\n\t\tminor = +momentVersion[1];\n\n\t// Moment.js version check\n\tif (major < 2 || (major === 2 && minor < 6)) {\n\t\tlogError('Moment Timezone requires Moment.js >= 2.6.0. You are using Moment.js ' + moment.version + '. See momentjs.com');\n\t}\n\n\t/************************************\n\t\tUnpacking\n\t************************************/\n\n\tfunction charCodeToInt(charCode) {\n\t\tif (charCode > 96) {\n\t\t\treturn charCode - 87;\n\t\t} else if (charCode > 64) {\n\t\t\treturn charCode - 29;\n\t\t}\n\t\treturn charCode - 48;\n\t}\n\n\tfunction unpackBase60(string) {\n\t\tvar i = 0,\n\t\t\tparts = string.split('.'),\n\t\t\twhole = parts[0],\n\t\t\tfractional = parts[1] || '',\n\t\t\tmultiplier = 1,\n\t\t\tnum,\n\t\t\tout = 0,\n\t\t\tsign = 1;\n\n\t\t// handle negative numbers\n\t\tif (string.charCodeAt(0) === 45) {\n\t\t\ti = 1;\n\t\t\tsign = -1;\n\t\t}\n\n\t\t// handle digits before the decimal\n\t\tfor (i; i < whole.length; i++) {\n\t\t\tnum = charCodeToInt(whole.charCodeAt(i));\n\t\t\tout = 60 * out + num;\n\t\t}\n\n\t\t// handle digits after the decimal\n\t\tfor (i = 0; i < fractional.length; i++) {\n\t\t\tmultiplier = multiplier / 60;\n\t\t\tnum = charCodeToInt(fractional.charCodeAt(i));\n\t\t\tout += num * multiplier;\n\t\t}\n\n\t\treturn out * sign;\n\t}\n\n\tfunction arrayToInt (array) {\n\t\tfor (var i = 0; i < array.length; i++) {\n\t\t\tarray[i] = unpackBase60(array[i]);\n\t\t}\n\t}\n\n\tfunction intToUntil (array, length) {\n\t\tfor (var i = 0; i < length; i++) {\n\t\t\tarray[i] = Math.round((array[i - 1] || 0) + (array[i] * 60000)); // minutes to milliseconds\n\t\t}\n\n\t\tarray[length - 1] = Infinity;\n\t}\n\n\tfunction mapIndices (source, indices) {\n\t\tvar out = [], i;\n\n\t\tfor (i = 0; i < indices.length; i++) {\n\t\t\tout[i] = source[indices[i]];\n\t\t}\n\n\t\treturn out;\n\t}\n\n\tfunction unpack (string) {\n\t\tvar data = string.split('|'),\n\t\t\toffsets = data[2].split(' '),\n\t\t\tindices = data[3].split(''),\n\t\t\tuntils = data[4].split(' ');\n\n\t\tarrayToInt(offsets);\n\t\tarrayToInt(indices);\n\t\tarrayToInt(untils);\n\n\t\tintToUntil(untils, indices.length);\n\n\t\treturn {\n\t\t\tname : data[0],\n\t\t\tabbrs : mapIndices(data[1].split(' '), indices),\n\t\t\toffsets : mapIndices(offsets, indices),\n\t\t\tuntils : untils,\n\t\t\tpopulation : data[5] | 0\n\t\t};\n\t}\n\n\t/************************************\n\t\tZone object\n\t************************************/\n\n\tfunction Zone (packedString) {\n\t\tif (packedString) {\n\t\t\tthis._set(unpack(packedString));\n\t\t}\n\t}\n\n\tfunction closest (num, arr) {\n\t\tvar len = arr.length;\n\t\tif (num < arr[0]) {\n\t\t\treturn 0;\n\t\t} else if (len > 1 && arr[len - 1] === Infinity && num >= arr[len - 2]) {\n\t\t\treturn len - 1;\n\t\t} else if (num >= arr[len - 1]) {\n\t\t\treturn -1;\n\t\t}\n\n\t\tvar mid;\n\t\tvar lo = 0;\n\t\tvar hi = len - 1;\n\t\twhile (hi - lo > 1) {\n\t\t\tmid = Math.floor((lo + hi) / 2);\n\t\t\tif (arr[mid] <= num) {\n\t\t\t\tlo = mid;\n\t\t\t} else {\n\t\t\t\thi = mid;\n\t\t\t}\n\t\t}\n\t\treturn hi;\n\t}\n\n\tZone.prototype = {\n\t\t_set : function (unpacked) {\n\t\t\tthis.name = unpacked.name;\n\t\t\tthis.abbrs = unpacked.abbrs;\n\t\t\tthis.untils = unpacked.untils;\n\t\t\tthis.offsets = unpacked.offsets;\n\t\t\tthis.population = unpacked.population;\n\t\t},\n\n\t\t_index : function (timestamp) {\n\t\t\tvar target = +timestamp,\n\t\t\t\tuntils = this.untils,\n\t\t\t\ti;\n\n\t\t\ti = closest(target, untils);\n\t\t\tif (i >= 0) {\n\t\t\t\treturn i;\n\t\t\t}\n\t\t},\n\n\t\tcountries : function () {\n\t\t\tvar zone_name = this.name;\n\t\t\treturn Object.keys(countries).filter(function (country_code) {\n\t\t\t\treturn countries[country_code].zones.indexOf(zone_name) !== -1;\n\t\t\t});\n\t\t},\n\n\t\tparse : function (timestamp) {\n\t\t\tvar target = +timestamp,\n\t\t\t\toffsets = this.offsets,\n\t\t\t\tuntils = this.untils,\n\t\t\t\tmax = untils.length - 1,\n\t\t\t\toffset, offsetNext, offsetPrev, i;\n\n\t\t\tfor (i = 0; i < max; i++) {\n\t\t\t\toffset = offsets[i];\n\t\t\t\toffsetNext = offsets[i + 1];\n\t\t\t\toffsetPrev = offsets[i ? i - 1 : i];\n\n\t\t\t\tif (offset < offsetNext && tz.moveAmbiguousForward) {\n\t\t\t\t\toffset = offsetNext;\n\t\t\t\t} else if (offset > offsetPrev && tz.moveInvalidForward) {\n\t\t\t\t\toffset = offsetPrev;\n\t\t\t\t}\n\n\t\t\t\tif (target < untils[i] - (offset * 60000)) {\n\t\t\t\t\treturn offsets[i];\n\t\t\t\t}\n\t\t\t}\n\n\t\t\treturn offsets[max];\n\t\t},\n\n\t\tabbr : function (mom) {\n\t\t\treturn this.abbrs[this._index(mom)];\n\t\t},\n\n\t\toffset : function (mom) {\n\t\t\tlogError(\"zone.offset has been deprecated in favor of zone.utcOffset\");\n\t\t\treturn this.offsets[this._index(mom)];\n\t\t},\n\n\t\tutcOffset : function (mom) {\n\t\t\treturn this.offsets[this._index(mom)];\n\t\t}\n\t};\n\n\t/************************************\n\t\tCountry object\n\t************************************/\n\n\tfunction Country (country_name, zone_names) {\n\t\tthis.name = country_name;\n\t\tthis.zones = zone_names;\n\t}\n\n\t/************************************\n\t\tCurrent Timezone\n\t************************************/\n\n\tfunction OffsetAt(at) {\n\t\tvar timeString = at.toTimeString();\n\t\tvar abbr = timeString.match(/\\([a-z ]+\\)/i);\n\t\tif (abbr && abbr[0]) {\n\t\t\t// 17:56:31 GMT-0600 (CST)\n\t\t\t// 17:56:31 GMT-0600 (Central Standard Time)\n\t\t\tabbr = abbr[0].match(/[A-Z]/g);\n\t\t\tabbr = abbr ? abbr.join('') : undefined;\n\t\t} else {\n\t\t\t// 17:56:31 CST\n\t\t\t// 17:56:31 GMT+0800 (台北標準時間)\n\t\t\tabbr = timeString.match(/[A-Z]{3,5}/g);\n\t\t\tabbr = abbr ? abbr[0] : undefined;\n\t\t}\n\n\t\tif (abbr === 'GMT') {\n\t\t\tabbr = undefined;\n\t\t}\n\n\t\tthis.at = +at;\n\t\tthis.abbr = abbr;\n\t\tthis.offset = at.getTimezoneOffset();\n\t}\n\n\tfunction ZoneScore(zone) {\n\t\tthis.zone = zone;\n\t\tthis.offsetScore = 0;\n\t\tthis.abbrScore = 0;\n\t}\n\n\tZoneScore.prototype.scoreOffsetAt = function (offsetAt) {\n\t\tthis.offsetScore += Math.abs(this.zone.utcOffset(offsetAt.at) - offsetAt.offset);\n\t\tif (this.zone.abbr(offsetAt.at).replace(/[^A-Z]/g, '') !== offsetAt.abbr) {\n\t\t\tthis.abbrScore++;\n\t\t}\n\t};\n\n\tfunction findChange(low, high) {\n\t\tvar mid, diff;\n\n\t\twhile ((diff = ((high.at - low.at) / 12e4 | 0) * 6e4)) {\n\t\t\tmid = new OffsetAt(new Date(low.at + diff));\n\t\t\tif (mid.offset === low.offset) {\n\t\t\t\tlow = mid;\n\t\t\t} else {\n\t\t\t\thigh = mid;\n\t\t\t}\n\t\t}\n\n\t\treturn low;\n\t}\n\n\tfunction userOffsets() {\n\t\tvar startYear = new Date().getFullYear() - 2,\n\t\t\tlast = new OffsetAt(new Date(startYear, 0, 1)),\n\t\t\tlastOffset = last.offset,\n\t\t\toffsets = [last],\n\t\t\tchange, next, nextOffset, i;\n\n\t\tfor (i = 1; i < 48; i++) {\n\t\t\tnextOffset = new Date(startYear, i, 1).getTimezoneOffset();\n\t\t\tif (nextOffset !== lastOffset) {\n\t\t\t\t// Create OffsetAt here to avoid unnecessary abbr parsing before checking offsets\n\t\t\t\tnext = new OffsetAt(new Date(startYear, i, 1));\n\t\t\t\tchange = findChange(last, next);\n\t\t\t\toffsets.push(change);\n\t\t\t\toffsets.push(new OffsetAt(new Date(change.at + 6e4)));\n\t\t\t\tlast = next;\n\t\t\t\tlastOffset = nextOffset;\n\t\t\t}\n\t\t}\n\n\t\tfor (i = 0; i < 4; i++) {\n\t\t\toffsets.push(new OffsetAt(new Date(startYear + i, 0, 1)));\n\t\t\toffsets.push(new OffsetAt(new Date(startYear + i, 6, 1)));\n\t\t}\n\n\t\treturn offsets;\n\t}\n\n\tfunction sortZoneScores (a, b) {\n\t\tif (a.offsetScore !== b.offsetScore) {\n\t\t\treturn a.offsetScore - b.offsetScore;\n\t\t}\n\t\tif (a.abbrScore !== b.abbrScore) {\n\t\t\treturn a.abbrScore - b.abbrScore;\n\t\t}\n\t\tif (a.zone.population !== b.zone.population) {\n\t\t\treturn b.zone.population - a.zone.population;\n\t\t}\n\t\treturn b.zone.name.localeCompare(a.zone.name);\n\t}\n\n\tfunction addToGuesses (name, offsets) {\n\t\tvar i, offset;\n\t\tarrayToInt(offsets);\n\t\tfor (i = 0; i < offsets.length; i++) {\n\t\t\toffset = offsets[i];\n\t\t\tguesses[offset] = guesses[offset] || {};\n\t\t\tguesses[offset][name] = true;\n\t\t}\n\t}\n\n\tfunction guessesForUserOffsets (offsets) {\n\t\tvar offsetsLength = offsets.length,\n\t\t\tfilteredGuesses = {},\n\t\t\tout = [],\n\t\t\tcheckedOffsets = {},\n\t\t\ti, j, offset, guessesOffset;\n\n\t\tfor (i = 0; i < offsetsLength; i++) {\n\t\t\toffset = offsets[i].offset;\n\t\t\tif (checkedOffsets.hasOwnProperty(offset)) {\n\t\t\t\tcontinue;\n\t\t\t}\n\t\t\tguessesOffset = guesses[offset] || {};\n\t\t\tfor (j in guessesOffset) {\n\t\t\t\tif (guessesOffset.hasOwnProperty(j)) {\n\t\t\t\t\tfilteredGuesses[j] = true;\n\t\t\t\t}\n\t\t\t}\n\t\t\tcheckedOffsets[offset] = true;\n\t\t}\n\n\t\tfor (i in filteredGuesses) {\n\t\t\tif (filteredGuesses.hasOwnProperty(i)) {\n\t\t\t\tout.push(names[i]);\n\t\t\t}\n\t\t}\n\n\t\treturn out;\n\t}\n\n\tfunction rebuildGuess () {\n\n\t\t// use Intl API when available and returning valid time zone\n\t\ttry {\n\t\t\tvar intlName = Intl.DateTimeFormat().resolvedOptions().timeZone;\n\t\t\tif (intlName && intlName.length > 3) {\n\t\t\t\tvar name = names[normalizeName(intlName)];\n\t\t\t\tif (name) {\n\t\t\t\t\treturn name;\n\t\t\t\t}\n\t\t\t\tlogError(\"Moment Timezone found \" + intlName + \" from the Intl api, but did not have that data loaded.\");\n\t\t\t}\n\t\t} catch (e) {\n\t\t\t// Intl unavailable, fall back to manual guessing.\n\t\t}\n\n\t\tvar offsets = userOffsets(),\n\t\t\toffsetsLength = offsets.length,\n\t\t\tguesses = guessesForUserOffsets(offsets),\n\t\t\tzoneScores = [],\n\t\t\tzoneScore, i, j;\n\n\t\tfor (i = 0; i < guesses.length; i++) {\n\t\t\tzoneScore = new ZoneScore(getZone(guesses[i]), offsetsLength);\n\t\t\tfor (j = 0; j < offsetsLength; j++) {\n\t\t\t\tzoneScore.scoreOffsetAt(offsets[j]);\n\t\t\t}\n\t\t\tzoneScores.push(zoneScore);\n\t\t}\n\n\t\tzoneScores.sort(sortZoneScores);\n\n\t\treturn zoneScores.length > 0 ? zoneScores[0].zone.name : undefined;\n\t}\n\n\tfunction guess (ignoreCache) {\n\t\tif (!cachedGuess || ignoreCache) {\n\t\t\tcachedGuess = rebuildGuess();\n\t\t}\n\t\treturn cachedGuess;\n\t}\n\n\t/************************************\n\t\tGlobal Methods\n\t************************************/\n\n\tfunction normalizeName (name) {\n\t\treturn (name || '').toLowerCase().replace(/\\//g, '_');\n\t}\n\n\tfunction addZone (packed) {\n\t\tvar i, name, split, normalized;\n\n\t\tif (typeof packed === \"string\") {\n\t\t\tpacked = [packed];\n\t\t}\n\n\t\tfor (i = 0; i < packed.length; i++) {\n\t\t\tsplit = packed[i].split('|');\n\t\t\tname = split[0];\n\t\t\tnormalized = normalizeName(name);\n\t\t\tzones[normalized] = packed[i];\n\t\t\tnames[normalized] = name;\n\t\t\taddToGuesses(normalized, split[2].split(' '));\n\t\t}\n\t}\n\n\tfunction getZone (name, caller) {\n\n\t\tname = normalizeName(name);\n\n\t\tvar zone = zones[name];\n\t\tvar link;\n\n\t\tif (zone instanceof Zone) {\n\t\t\treturn zone;\n\t\t}\n\n\t\tif (typeof zone === 'string') {\n\t\t\tzone = new Zone(zone);\n\t\t\tzones[name] = zone;\n\t\t\treturn zone;\n\t\t}\n\n\t\t// Pass getZone to prevent recursion more than 1 level deep\n\t\tif (links[name] && caller !== getZone && (link = getZone(links[name], getZone))) {\n\t\t\tzone = zones[name] = new Zone();\n\t\t\tzone._set(link);\n\t\t\tzone.name = names[name];\n\t\t\treturn zone;\n\t\t}\n\n\t\treturn null;\n\t}\n\n\tfunction getNames () {\n\t\tvar i, out = [];\n\n\t\tfor (i in names) {\n\t\t\tif (names.hasOwnProperty(i) && (zones[i] || zones[links[i]]) && names[i]) {\n\t\t\t\tout.push(names[i]);\n\t\t\t}\n\t\t}\n\n\t\treturn out.sort();\n\t}\n\n\tfunction getCountryNames () {\n\t\treturn Object.keys(countries);\n\t}\n\n\tfunction addLink (aliases) {\n\t\tvar i, alias, normal0, normal1;\n\n\t\tif (typeof aliases === \"string\") {\n\t\t\taliases = [aliases];\n\t\t}\n\n\t\tfor (i = 0; i < aliases.length; i++) {\n\t\t\talias = aliases[i].split('|');\n\n\t\t\tnormal0 = normalizeName(alias[0]);\n\t\t\tnormal1 = normalizeName(alias[1]);\n\n\t\t\tlinks[normal0] = normal1;\n\t\t\tnames[normal0] = alias[0];\n\n\t\t\tlinks[normal1] = normal0;\n\t\t\tnames[normal1] = alias[1];\n\t\t}\n\t}\n\n\tfunction addCountries (data) {\n\t\tvar i, country_code, country_zones, split;\n\t\tif (!data || !data.length) return;\n\t\tfor (i = 0; i < data.length; i++) {\n\t\t\tsplit = data[i].split('|');\n\t\t\tcountry_code = split[0].toUpperCase();\n\t\t\tcountry_zones = split[1].split(' ');\n\t\t\tcountries[country_code] = new Country(\n\t\t\t\tcountry_code,\n\t\t\t\tcountry_zones\n\t\t\t);\n\t\t}\n\t}\n\n\tfunction getCountry (name) {\n\t\tname = name.toUpperCase();\n\t\treturn countries[name] || null;\n\t}\n\n\tfunction zonesForCountry(country, with_offset) {\n\t\tcountry = getCountry(country);\n\n\t\tif (!country) return null;\n\n\t\tvar zones = country.zones.sort();\n\n\t\tif (with_offset) {\n\t\t\treturn zones.map(function (zone_name) {\n\t\t\t\tvar zone = getZone(zone_name);\n\t\t\t\treturn {\n\t\t\t\t\tname: zone_name,\n\t\t\t\t\toffset: zone.utcOffset(new Date())\n\t\t\t\t};\n\t\t\t});\n\t\t}\n\n\t\treturn zones;\n\t}\n\n\tfunction loadData (data) {\n\t\taddZone(data.zones);\n\t\taddLink(data.links);\n\t\taddCountries(data.countries);\n\t\ttz.dataVersion = data.version;\n\t}\n\n\tfunction zoneExists (name) {\n\t\tif (!zoneExists.didShowError) {\n\t\t\tzoneExists.didShowError = true;\n\t\t\t\tlogError(\"moment.tz.zoneExists('\" + name + \"') has been deprecated in favor of !moment.tz.zone('\" + name + \"')\");\n\t\t}\n\t\treturn !!getZone(name);\n\t}\n\n\tfunction needsOffset (m) {\n\t\tvar isUnixTimestamp = (m._f === 'X' || m._f === 'x');\n\t\treturn !!(m._a && (m._tzm === undefined) && !isUnixTimestamp);\n\t}\n\n\tfunction logError (message) {\n\t\tif (typeof console !== 'undefined' && typeof console.error === 'function') {\n\t\t\tconsole.error(message);\n\t\t}\n\t}\n\n\t/************************************\n\t\tmoment.tz namespace\n\t************************************/\n\n\tfunction tz (input) {\n\t\tvar args = Array.prototype.slice.call(arguments, 0, -1),\n\t\t\tname = arguments[arguments.length - 1],\n\t\t\tout = moment.utc.apply(null, args),\n\t\t\tzone;\n\n\t\tif (!moment.isMoment(input) && needsOffset(out) && (zone = getZone(name))) {\n\t\t\tout.add(zone.parse(out), 'minutes');\n\t\t}\n\n\t\tout.tz(name);\n\n\t\treturn out;\n\t}\n\n\ttz.version = VERSION;\n\ttz.dataVersion = '';\n\ttz._zones = zones;\n\ttz._links = links;\n\ttz._names = names;\n\ttz._countries\t= countries;\n\ttz.add = addZone;\n\ttz.link = addLink;\n\ttz.load = loadData;\n\ttz.zone = getZone;\n\ttz.zoneExists = zoneExists; // deprecated in 0.1.0\n\ttz.guess = guess;\n\ttz.names = getNames;\n\ttz.Zone = Zone;\n\ttz.unpack = unpack;\n\ttz.unpackBase60 = unpackBase60;\n\ttz.needsOffset = needsOffset;\n\ttz.moveInvalidForward = true;\n\ttz.moveAmbiguousForward = false;\n\ttz.countries = getCountryNames;\n\ttz.zonesForCountry = zonesForCountry;\n\n\t/************************************\n\t\tInterface with Moment.js\n\t************************************/\n\n\tvar fn = moment.fn;\n\n\tmoment.tz = tz;\n\n\tmoment.defaultZone = null;\n\n\tmoment.updateOffset = function (mom, keepTime) {\n\t\tvar zone = moment.defaultZone,\n\t\t\toffset;\n\n\t\tif (mom._z === undefined) {\n\t\t\tif (zone && needsOffset(mom) && !mom._isUTC && mom.isValid()) {\n\t\t\t\tmom._d = moment.utc(mom._a)._d;\n\t\t\t\tmom.utc().add(zone.parse(mom), 'minutes');\n\t\t\t}\n\t\t\tmom._z = zone;\n\t\t}\n\t\tif (mom._z) {\n\t\t\toffset = mom._z.utcOffset(mom);\n\t\t\tif (Math.abs(offset) < 16) {\n\t\t\t\toffset = offset / 60;\n\t\t\t}\n\t\t\tif (mom.utcOffset !== undefined) {\n\t\t\t\tvar z = mom._z;\n\t\t\t\tmom.utcOffset(-offset, keepTime);\n\t\t\t\tmom._z = z;\n\t\t\t} else {\n\t\t\t\tmom.zone(offset, keepTime);\n\t\t\t}\n\t\t}\n\t};\n\n\tfn.tz = function (name, keepTime) {\n\t\tif (name) {\n\t\t\tif (typeof name !== 'string') {\n\t\t\t\tthrow new Error('Time zone name must be a string, got ' + name + ' [' + typeof name + ']');\n\t\t\t}\n\t\t\tthis._z = getZone(name);\n\t\t\tif (this._z) {\n\t\t\t\tmoment.updateOffset(this, keepTime);\n\t\t\t} else {\n\t\t\t\tlogError(\"Moment Timezone has no data for \" + name + \". See http://momentjs.com/timezone/docs/#/data-loading/.\");\n\t\t\t}\n\t\t\treturn this;\n\t\t}\n\t\tif (this._z) { return this._z.name; }\n\t};\n\n\tfunction abbrWrap (old) {\n\t\treturn function () {\n\t\t\tif (this._z) { return this._z.abbr(this); }\n\t\t\treturn old.call(this);\n\t\t};\n\t}\n\n\tfunction resetZoneWrap (old) {\n\t\treturn function () {\n\t\t\tthis._z = null;\n\t\t\treturn old.apply(this, arguments);\n\t\t};\n\t}\n\n\tfunction resetZoneWrap2 (old) {\n\t\treturn function () {\n\t\t\tif (arguments.length > 0) this._z = null;\n\t\t\treturn old.apply(this, arguments);\n\t\t};\n\t}\n\n\tfn.zoneName = abbrWrap(fn.zoneName);\n\tfn.zoneAbbr = abbrWrap(fn.zoneAbbr);\n\tfn.utc = resetZoneWrap(fn.utc);\n\tfn.local = resetZoneWrap(fn.local);\n\tfn.utcOffset = resetZoneWrap2(fn.utcOffset);\n\n\tmoment.tz.setDefault = function(name) {\n\t\tif (major < 2 || (major === 2 && minor < 9)) {\n\t\t\tlogError('Moment Timezone setDefault() requires Moment.js >= 2.9.0. You are using Moment.js ' + moment.version + '.');\n\t\t}\n\t\tmoment.defaultZone = name ? getZone(name) : null;\n\t\treturn moment;\n\t};\n\n\t// Cloning a moment should include the _z property.\n\tvar momentProperties = moment.momentProperties;\n\tif (Object.prototype.toString.call(momentProperties) === '[object Array]') {\n\t\t// moment 2.8.1+\n\t\tmomentProperties.push('_z');\n\t\tmomentProperties.push('_a');\n\t} else if (momentProperties) {\n\t\t// moment 2.7.0\n\t\tmomentProperties._z = null;\n\t}\n\n\t// INJECT DATA\n\n\treturn moment;\n}));\n","var moment = module.exports = require(\"./moment-timezone\");\nmoment.tz.load(require('./data/packed/latest.json'));\n","import type {BinaryFeature} from '@loaders.gl/schema';\nimport type {Dataset} from './types.js';\ntype Properties = BinaryFeature['properties'];\ntype NumericProps = BinaryFeature['numericProps'];\n\n// Returns a Proxy object that allows accessing binary data\n// as if it were JSON properties\nexport function createBinaryProxy(\n data: {numericProps: NumericProps; properties: Properties[]},\n index: number\n) {\n const {properties, numericProps} = data;\n return new Proxy(properties[index] || {}, {\n get(target, property) {\n if (property in numericProps) {\n return numericProps[property as string].value[index];\n }\n return target[property as any];\n },\n\n has(target, property) {\n return property in numericProps || property in target;\n },\n\n ownKeys(target) {\n return [...Object.keys(numericProps), ...Reflect.ownKeys(target)];\n },\n\n getOwnPropertyDescriptor() {\n return {enumerable: true, configurable: true};\n },\n });\n}\n\nexport function scaleIdentity() {\n let unknown: any;\n\n function scale(x: any) {\n return x === null ? unknown : x;\n }\n\n scale.invert = scale;\n\n scale.domain = scale.range = (d: any) => d;\n\n scale.unknown = (u: any) => {\n if (u) {\n unknown = u;\n }\n\n return unknown;\n };\n\n scale.copy = () => {\n const scaleCopy = scaleIdentity();\n scaleCopy.unknown(unknown);\n return scaleCopy;\n };\n\n return scale;\n}\n\nexport function isRemoteCalculationSupported(dataset: Dataset) {\n if (dataset?.type === 'tileset' || dataset.providerId === 'databricks') {\n return false;\n }\n\n return true;\n}\n","import {deviation, extent, groupSort, median, variance} from 'd3-array';\nimport {rgb} from 'd3-color';\nimport {\n scaleLinear,\n scaleOrdinal,\n scaleLog,\n scalePoint,\n scaleQuantile,\n scaleQuantize,\n scaleSqrt,\n scaleThreshold,\n} from 'd3-scale';\nimport {format as d3Format} from 'd3-format';\nimport moment from 'moment-timezone';\n\nexport type LayerType =\n | 'clusterTile'\n | 'h3'\n | 'heatmapTile'\n | 'mvt'\n | 'quadbin'\n | 'raster'\n | 'tileset';\n\nimport {createBinaryProxy, scaleIdentity} from './utils.js';\nimport {\n CustomMarkersRange,\n Dataset,\n MapLayerConfig,\n VisConfig,\n VisualChannelField,\n VisualChannels,\n} from './types.js';\n\nconst SCALE_FUNCS: Record<string, () => any> = {\n linear: scaleLinear,\n ordinal: scaleOrdinal,\n log: scaleLog,\n point: scalePoint,\n quantile: scaleQuantile,\n quantize: scaleQuantize,\n sqrt: scaleSqrt,\n custom: scaleThreshold,\n identity: scaleIdentity,\n};\nexport type SCALE_TYPE = keyof typeof SCALE_FUNCS;\n\nfunction identity<T>(v: T): T {\n return v;\n}\n\nconst UNKNOWN_COLOR = '#868d91';\n\nexport const AGGREGATION: Record<string, string> = {\n average: 'MEAN',\n maximum: 'MAX',\n minimum: 'MIN',\n sum: 'SUM',\n};\n\nexport const OPACITY_MAP: Record<string, string> = {\n getFillColor: 'opacity',\n getLineColor: 'strokeOpacity',\n getTextColor: 'opacity',\n};\n\nconst AGGREGATION_FUNC: Record<string, (values: any, accessor: any) => any> = {\n 'count unique': (values: any, accessor: any) =>\n groupSort(values, (v) => v.length, accessor).length,\n median,\n // Unfortunately mode() is only available in d3-array@3+ which is ESM only\n mode: (values: any, accessor: any) =>\n groupSort(values, (v) => v.length, accessor).pop(),\n stddev: deviation,\n variance,\n};\n\nconst hexToRGBA = (c: any) => {\n const {r, g, b, opacity} = rgb(c);\n return [r, g, b, 255 * opacity];\n};\n\n// Kepler prop value -> Deck.gl prop value\n// Supports nested definitions, and function transforms:\n// {keplerProp: 'deckProp'} is equivalent to:\n// {keplerProp: x => ({deckProp: x})}\nconst sharedPropMap = {\n // Apply the value of Kepler `color` prop to the deck `getFillColor` prop\n color: 'getFillColor',\n isVisible: 'visible',\n label: 'cartoLabel',\n textLabel: {\n alignment: 'getTextAlignmentBaseline',\n anchor: 'getTextAnchor',\n // Apply the value of Kepler `textLabel.color` prop to the deck `getTextColor` prop\n color: 'getTextColor',\n size: 'getTextSize',\n },\n visConfig: {\n enable3d: 'extruded',\n elevationScale: 'elevationScale',\n filled: 'filled',\n strokeColor: 'getLineColor',\n stroked: 'stroked',\n thickness: 'getLineWidth',\n radius: 'getPointRadius',\n wireframe: 'wireframe',\n },\n};\n\nconst customMarkersPropsMap = {\n color: 'getIconColor',\n visConfig: {\n radius: 'getIconSize',\n },\n};\n\nconst heatmapTilePropsMap = {\n visConfig: {\n colorRange: (x: any) => ({colorRange: x.colors.map(hexToRGBA)}),\n radius: 'radiusPixels',\n },\n};\n\nconst defaultProps = {\n lineMiterLimit: 2,\n lineWidthUnits: 'pixels',\n pointRadiusUnits: 'pixels',\n rounded: true,\n wrapLongitude: false,\n};\n\nfunction mergePropMaps(\n a: Record<string, any> = {},\n b: Record<string, any> = {}\n) {\n return {...a, ...b, visConfig: {...a.visConfig, ...b.visConfig}};\n}\n\nconst deprecatedLayerTypes = [\n 'geojson',\n 'grid',\n 'heatmap',\n 'hexagon',\n 'hexagonId',\n 'point',\n];\n\nexport function getLayerProps(\n type: LayerType,\n config: MapLayerConfig,\n dataset: Dataset\n): {propMap: any; defaultProps: any} {\n if (deprecatedLayerTypes.includes(type)) {\n throw new Error(\n `Outdated layer type: ${type}. Please open map in CARTO Builder to automatically migrate.`\n );\n }\n\n let basePropMap: any = sharedPropMap;\n if (config.visConfig?.customMarkers) {\n basePropMap = mergePropMaps(basePropMap, customMarkersPropsMap);\n }\n if (type === 'heatmapTile') {\n basePropMap = mergePropMaps(basePropMap, heatmapTilePropsMap);\n }\n const {aggregationExp, aggregationResLevel} = dataset;\n\n return {\n propMap: basePropMap,\n defaultProps: {\n ...defaultProps,\n ...(aggregationExp && {aggregationExp}),\n ...(aggregationResLevel && {aggregationResLevel}),\n uniqueIdProperty: 'geoid',\n },\n };\n}\n\nfunction domainFromAttribute(\n attribute: any,\n scaleType: SCALE_TYPE,\n scaleLength: number\n) {\n if (scaleType === 'ordinal' || scaleType === 'point') {\n return attribute.categories\n .map((c: any) => c.category)\n .filter((c: any) => c !== undefined && c !== null);\n }\n\n if (scaleType === 'quantile' && attribute.quantiles) {\n return attribute.quantiles.global\n ? attribute.quantiles.global[scaleLength]\n : attribute.quantiles[scaleLength];\n }\n\n let {min} = attribute;\n if (scaleType === 'log' && min === 0) {\n min = 1e-5;\n }\n return [min, attribute.max];\n}\n\nfunction domainFromValues(values: any, scaleType: SCALE_TYPE) {\n if (scaleType === 'ordinal' || scaleType === 'point') {\n return groupSort(\n values,\n (g) => -g.length,\n (d) => d\n );\n } else if (scaleType === 'quantile') {\n return values.sort((a: any, b: any) => a - b);\n } else if (scaleType === 'log') {\n const [d0, d1] = extent(values as number[]);\n return [d0 === 0 ? 1e-5 : d0, d1];\n }\n return extent(values);\n}\n\nfunction calculateDomain(\n data: any,\n name: any,\n scaleType: SCALE_TYPE,\n scaleLength?: number\n) {\n if (data.tilestats) {\n // Tileset data type\n const {attributes} = data.tilestats.layers[0];\n const attribute = attributes.find((a: any) => a.attribute === name);\n return domainFromAttribute(attribute, scaleType, scaleLength as number);\n }\n\n return [0, 1];\n}\n\nfunction normalizeAccessor(accessor: any, data: any) {\n if (data.features || data.tilestats) {\n return (object: any, info: any) => {\n if (object) {\n return accessor(object.properties || object.__source.object.properties);\n }\n\n const {data, index} = info;\n const proxy = createBinaryProxy(data, index);\n return accessor(proxy);\n };\n }\n return accessor;\n}\n\nexport function opacityToAlpha(opacity?: number) {\n return opacity !== undefined\n ? Math.round(255 * Math.pow(opacity, 1 / 2.2))\n : 255;\n}\n\nfunction getAccessorKeys(name: string, aggregation?: string | null): string[] {\n let keys = [name];\n if (aggregation) {\n // Snowflake will capitalized the keys, need to check lower and upper case version\n keys = keys.concat(\n [aggregation, aggregation.toUpperCase()].map((a) => `${name}_${a}`)\n );\n }\n return keys;\n}\n\nfunction findAccessorKey(keys: string[], properties: any): string[] {\n for (const key of keys) {\n if (key in properties) {\n return [key];\n }\n }\n\n throw new Error(\n `Could not find property for any accessor key: ${keys.join(', ')}`\n );\n}\n\nexport function getColorValueAccessor(\n {name}: VisualChannelField,\n colorAggregation: string,\n data: any\n) {\n const aggregator = AGGREGATION_FUNC[colorAggregation];\n const accessor = (values: any) => aggregator(values, (p: any) => p[name]);\n return normalizeAccessor(accessor, data);\n}\n\nexport function getColorAccessor(\n {name, colorColumn}: VisualChannelField,\n scaleType: SCALE_TYPE,\n {aggregation, range}: {aggregation: string; range: any},\n opacity: number | undefined,\n data: any\n) {\n const scale = calculateLayerScale(\n colorColumn || name,\n scaleType,\n range,\n data\n );\n const alpha = opacityToAlpha(opacity);\n\n let accessorKeys = getAccessorKeys(name, aggregation);\n const accessor = (properties: any) => {\n if (!(accessorKeys[0] in properties)) {\n accessorKeys = findAccessorKey(accessorKeys, properties);\n }\n const propertyValue = properties[accessorKeys[0]];\n const {r, g, b} = rgb(scale(propertyValue));\n return [r, g, b, propertyValue === null ? 0 : alpha];\n };\n return normalizeAccessor(accessor, data);\n}\n\nfunction calculateLayerScale(\n name: any,\n scaleType: SCALE_TYPE,\n range: any,\n data: any\n) {\n const scale = SCALE_FUNCS[scaleType]();\n let domain: (string | number)[] = [];\n let scaleColor: string[] = [];\n\n if (scaleType !== 'identity') {\n const {colorMap, colors} = range;\n\n if (Array.isArray(colorMap)) {\n colorMap.forEach(([value, color]) => {\n domain.push(value);\n scaleColor.push(color);\n });\n } else {\n domain = calculateDomain(data, name, scaleType, colors.length);\n scaleColor = colors;\n }\n\n if (scaleType === 'ordinal') {\n domain = domain.slice(0, scaleColor.length);\n }\n }\n\n scale.domain(domain);\n scale.range(scaleColor);\n scale.unknown(UNKNOWN_COLOR);\n\n return scale;\n}\n\nconst FALLBACK_ICON =\n 'data:image/svg+xml;charset=utf-8;base64,PHN2ZyB2aWV3Qm94PSIwIDAgMTAwIDEwMCIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj4NCiAgPGNpcmNsZSBjeD0iNTAiIGN5PSI1MCIgcj0iNTAiLz4NCjwvc3ZnPg==';\n\nexport function getIconUrlAccessor(\n field: VisualChannelField | null | undefined,\n range: CustomMarkersRange | null | undefined,\n {\n fallbackUrl,\n maxIconSize,\n useMaskedIcons,\n }: {\n fallbackUrl?: string | null;\n maxIconSize: number;\n useMaskedIcons?: boolean;\n },\n data: any\n) {\n const urlToUnpackedIcon = (url: string) => ({\n id: `${url}@@${maxIconSize}`,\n url,\n width: maxIconSize,\n height: maxIconSize,\n mask: useMaskedIcons,\n });\n let unknownValue = fallbackUrl || FALLBACK_ICON;\n\n if (range?.othersMarker) {\n unknownValue = range.othersMarker;\n }\n\n const unknownIcon = urlToUnpackedIcon(unknownValue);\n if (!range || !field) {\n return () => unknownIcon;\n }\n\n const mapping: Record<string, any> = {};\n for (const {value, markerUrl} of range.markerMap) {\n if (markerUrl) {\n mapping[value] = urlToUnpackedIcon(markerUrl);\n }\n }\n\n const accessor = (properties: any) => {\n const propertyValue = properties[field.name];\n return mapping[propertyValue] || unknownIcon;\n };\n return normalizeAccessor(accessor, data);\n}\n\nexport function getMaxMarkerSize(\n visConfig: VisConfig,\n visualChannels: VisualChannels\n): number {\n const {radiusRange, radius} = visConfig;\n const {radiusField, sizeField} = visualChannels;\n const field = radiusField || sizeField;\n return Math.ceil(radiusRange && field ? radiusRange[1] : radius);\n}\n\ntype Accessor = number | ((d: any, i: any) => number);\nexport function negateAccessor(accessor: Accessor): Accessor {\n if (typeof accessor === 'function') {\n return (d: any, i: any) => -accessor(d, i);\n }\n return -accessor;\n}\n\nexport function getSizeAccessor(\n {name}: VisualChannelField,\n scaleType: SCALE_TYPE | undefined,\n aggregation: string | null | undefined,\n range: Iterable<Range> | null | undefined,\n data: any\n) {\n const scale = scaleType ? SCALE_FUNCS[scaleType as any]() : identity;\n if (scaleType) {\n if (aggregation !== 'count') {\n scale.domain(calculateDomain(data, name, scaleType));\n }\n scale.range(range);\n }\n\n let accessorKeys = getAccessorKeys(name, aggregation);\n const accessor = (properties: any) => {\n if (!(accessorKeys[0] in properties)) {\n accessorKeys = findAccessorKey(accessorKeys, properties);\n }\n const propertyValue = properties[accessorKeys[0]];\n return scale(propertyValue);\n };\n return normalizeAccessor(accessor, data);\n}\n\nconst FORMATS: Record<string, (value: any) => string> = {\n date: (s) => moment.utc(s).format('MM/DD/YY HH:mm:ssa'),\n integer: d3Format('i'),\n float: d3Format('.5f'),\n timestamp: (s) => moment.utc(s).format('X'),\n default: String,\n};\n\nexport function getTextAccessor({name, type}: VisualChannelField, data: any) {\n const format = FORMATS[type] || FORMATS.default;\n const accessor = (properties: any) => {\n return format(properties[name]);\n };\n return normalizeAccessor(accessor, data);\n}\n\nexport {domainFromValues as _domainFromValues};\n","import type {ColorParameters} from '@luma.gl/core';\nimport {\n AGGREGATION,\n getLayerProps,\n getColorAccessor,\n getColorValueAccessor,\n getSizeAccessor,\n getTextAccessor,\n OPACITY_MAP,\n opacityToAlpha,\n getIconUrlAccessor,\n negateAccessor,\n getMaxMarkerSize,\n LayerType,\n} from './layer-map.js';\n\nimport {assert, isEmptyObject} from '../utils.js';\nimport {Filters} from '../types.js';\nimport {\n KeplerMapConfig,\n MapLayerConfig,\n VisualChannels,\n VisConfig,\n MapConfigLayer,\n Dataset,\n} from './types.js';\nimport {isRemoteCalculationSupported} from './utils.js';\n\nexport type LayerDescriptor = {\n type: LayerType;\n props: Record<string, any>;\n filters?: Filters;\n};\n\nexport type ParseMapResult = {\n /** Map id. */\n id: string;\n\n /** Title of map. */\n title: string;\n\n /** Description of map. */\n description?: string;\n createdAt: string;\n updatedAt: string;\n initialViewState: any;\n\n /** @deprecated Use `basemap`. */\n mapStyle: any;\n popupSettings: any;\n token: string;\n\n layers: LayerDescriptor[];\n};\n\nexport function parseMap(json: any) {\n const {keplerMapConfig, datasets, token} = json;\n assert(keplerMapConfig.version === 'v1', 'Only support Kepler v1');\n const config = keplerMapConfig.config as KeplerMapConfig;\n const {filters, mapState, mapStyle, popupSettings} = config;\n const {layers, layerBlending, interactionConfig} = config.visState;\n\n return {\n id: json.id,\n title: json.title,\n description: json.description,\n createdAt: json.createdAt,\n updatedAt: json.updatedAt,\n initialViewState: mapState,\n /** @deprecated Use `basemap`. */\n mapStyle,\n popupSettings,\n token,\n layers: layers\n .reverse()\n .map(({id, type, config, visualChannels}: MapConfigLayer) => {\n try {\n const {dataId} = config;\n const dataset: Dataset | null = datasets.find(\n (d: any) => d.id === dataId\n );\n assert(dataset, `No dataset matching dataId: ${dataId}`);\n const {data} = dataset;\n assert(data, `No data loaded for dataId: ${dataId}`);\n\n const {propMap, defaultProps} = getLayerProps(type, config, dataset);\n\n const styleProps = createStyleProps(config, propMap);\n\n const layer: LayerDescriptor = {\n type,\n filters:\n isEmptyObject(filters) || isRemoteCalculationSupported(dataset)\n ? undefined\n : filters[dataId],\n props: {\n id,\n data,\n ...defaultProps,\n ...createInteractionProps(interactionConfig),\n ...styleProps,\n ...createChannelProps(id, type, config, visualChannels, data), // Must come after style\n ...createParametersProp(\n layerBlending,\n styleProps.parameters || {}\n ), // Must come after style\n ...createLoadOptions(token),\n },\n };\n return layer;\n } catch (e: any) {\n console.error(e.message);\n return undefined;\n }\n }),\n };\n}\n\nfunction createParametersProp(\n layerBlending: string,\n parameters: ColorParameters\n) {\n if (layerBlending === 'additive') {\n parameters.blendColorSrcFactor = parameters.blendAlphaSrcFactor =\n 'src-alpha';\n parameters.blendColorDstFactor = parameters.blendAlphaDstFactor =\n 'dst-alpha';\n parameters.blendColorOperation = parameters.blendAlphaOperation = 'add';\n } else if (layerBlending === 'subtractive') {\n parameters.blendColorSrcFactor = 'one';\n parameters.blendColorDstFactor = 'one-minus-dst-color';\n parameters.blendAlphaSrcFactor = 'src-alpha';\n parameters.blendAlphaDstFactor = 'dst-alpha';\n parameters.blendColorOperation = 'subtract';\n parameters.blendAlphaOperation = 'add';\n }\n\n return Object.keys(parameters).length ? {parameters} : {};\n}\n\nfunction createInteractionProps(interactionConfig: any) {\n const pickable = interactionConfig && interactionConfig.tooltip.enabled;\n return {\n autoHighlight: pickable,\n pickable,\n };\n}\n\nfunction mapProps(source: any, target: any, mapping: any) {\n for (const sourceKey in mapping) {\n const sourceValue = source[sourceKey];\n const targetKey = mapping[sourceKey];\n if (sourceValue === undefined) {\n continue;\n }\n if (typeof targetKey === 'string') {\n target[targetKey] = sourceValue;\n } else if (typeof targetKey === 'function') {\n const [key, value] = Object.entries(targetKey(sourceValue))[0];\n target[key] = value;\n } else if (typeof targetKey === 'object') {\n // Nested definition, recurse down one level (also handles arrays)\n mapProps(sourceValue, target, targetKey);\n }\n }\n}\n\nfunction createStyleProps(config: MapLayerConfig, mapping: any) {\n const result: Record<string, any> = {};\n mapProps(config, result, mapping);\n\n // Kepler format sometimes omits strokeColor. TODO: remove once we can rely on\n // `strokeColor` always being set when `stroke: true`.\n if (result.stroked && !result.getLineColor) {\n result.getLineColor = result.getFillColor;\n }\n\n for (const colorAccessor in OPACITY_MAP) {\n if (Array.isArray(result[colorAccessor])) {\n const color = [...result[colorAccessor]];\n const opacityKey = OPACITY_MAP[colorAccessor];\n const opacity = config.visConfig[opacityKey as keyof VisConfig];\n color[3] = opacityToAlpha(opacity);\n result[colorAccessor] = color;\n }\n }\n\n result.highlightColor = config.visConfig.enable3d\n ? [255, 255, 255, 60]\n : [252, 242, 26, 255];\n return result;\n}\n\nfunction createChannelProps(\n id: string,\n type: string,\n config: MapLayerConfig,\n visualChannels: VisualChannels,\n data: any\n) {\n const {\n colorField,\n colorScale,\n radiusField,\n radiusScale,\n sizeField,\n sizeScale,\n strokeColorField,\n strokeColorScale,\n weightField,\n } = visualChannels;\n let {heightField, heightScale} = visualChannels;\n if (type === 'hexagonId') {\n heightField = sizeField;\n heightScale = sizeScale;\n }\n const {textLabel, visConfig} = config;\n const result: Record<string, any> = {};\n\n if (type === 'grid' || type === 'hexagon') {\n result.colorScaleType = colorScale;\n if (colorField) {\n const {colorAggregation} = config.visConfig;\n if (!AGGREGATION[colorAggregation]) {\n result.getColorValue = getColorValueAccessor(\n colorField,\n colorAggregation,\n data\n );\n } else {\n result.getColorWeight = (d: any) => d[colorField.name];\n }\n }\n } else if (colorField) {\n const {colorAggregation: aggregation, colorRange: range} = visConfig;\n result.getFillColor = getColorAccessor(\n colorField,\n // @ts-ignore\n colorScale,\n {aggregation, range},\n visConfig.opacity,\n data\n );\n }\n\n if (type === 'point') {\n const altitude = config.columns?.altitude;\n if (altitude) {\n result.dataTransform = (data: any) => {\n data.features.forEach(\n ({geometry, properties}: {geometry: any; properties: any}) => {\n const {type, coordinates} = geometry;\n if (type === 'Point') {\n coordinates[2] = properties[altitude];\n }\n }\n );\n return data;\n };\n }\n }\n\n if (radiusField || sizeField) {\n result.getPointRadius = getSizeAccessor(\n // @ts-ignore\n radiusField || sizeField,\n // @ts-ignore\n radiusScale || sizeScale,\n visConfig.sizeAggregation,\n visConfig.radiusRange || visConfig.sizeRange,\n data\n );\n }\n\n if (strokeColorField) {\n const fallbackOpacity = type === 'point' ? visConfig.opacity : 1;\n const opacity =\n visConfig.strokeOpacity !== undefined\n ? visConfig.strokeOpacity\n : fallbackOpacity;\n const {strokeColorAggregation: aggregation, strokeColorRange: range} =\n visConfig;\n result.getLineColor = getColorAccessor(\n strokeColorField,\n // @ts-ignore\n strokeColorScale,\n // @ts-ignore\n {aggregation, range},\n opacity,\n data\n );\n }\n if (heightField && visConfig.enable3d) {\n result.getElevation = getSizeAccessor(\n heightField,\n // @ts-ignore\n heightScale,\n visConfig.heightAggregation,\n visConfig.heightRange || visConfig.sizeRange,\n data\n );\n }\n\n if (weightField) {\n result.getWeight = getSizeAccessor(\n weightField,\n undefined,\n visConfig.weightAggregation,\n undefined,\n data\n );\n }\n\n if (visConfig.customMarkers) {\n const maxIconSize = getMaxMarkerSize(visConfig, visualChannels);\n const {getPointRadius, getFillColor} = result;\n const {\n customMarkersUrl,\n customMarkersRange,\n filled: useMaskedIcons,\n } = visConfig;\n\n result.pointType = 'icon';\n result.getIcon = getIconUrlAccessor(\n visualChannels.customMarkersField,\n customMarkersRange,\n {fallbackUrl: customMarkersUrl, maxIconSize, useMaskedIcons},\n data\n );\n result._subLayerProps = {\n 'points-icon': {\n loadOptions: {\n image: {\n type: 'imagebitmap',\n },\n imagebitmap: {\n resizeWidth: maxIconSize,\n resizeHeight: maxIconSize,\n resizeQuality: 'high',\n },\n },\n },\n };\n\n if (getFillColor && useMaskedIcons) {\n result.getIconColor = getFillColor;\n }\n\n if (getPointRadius) {\n result.getIconSize = getPointRadius;\n }\n\n if (visualChannels.rotationField) {\n result.getIconAngle = negateAccessor(\n getSizeAccessor(\n visualChannels.rotationField,\n undefined,\n null,\n undefined,\n data\n )\n );\n }\n } else if (type === 'point' || type === 'tileset') {\n result.pointType = 'circle';\n }\n\n if (textLabel && textLabel.length && textLabel[0].field) {\n const [mainLabel, secondaryLabel] = textLabel;\n const collisionGroup = id;\n\n ({\n alignment: result.getTextAlignmentBaseline,\n anchor: result.getTextAnchor,\n color: result.getTextColor,\n outlineColor: result.textOutlineColor,\n size: result.textSizeScale,\n } = mainLabel);\n const {\n color: getSecondaryColor,\n field: secondaryField,\n outlineColor: secondaryOutlineColor,\n size: secondarySizeScale,\n } = secondaryLabel || {};\n\n result.getText = mainLabel.field && getTextAccessor(mainLabel.field, data);\n const getSecondaryText =\n secondaryField && getTextAccessor(secondaryField, data);\n\n result.pointType = `${result.pointType}+text`;\n result.textCharacterSet = 'auto';\n result.textFontFamily = 'Inter, sans';\n result.textFontSettings = {sdf: true};\n result.textFontWeight = 600;\n result.textOutlineWidth = 3;\n\n result._subLayerProps = {\n ...result._subLayerProps,\n 'points-text': {\n collisionEnabled: true,\n collisionGroup,\n\n // getPointRadius already has radiusScale baked in, so only pass one or the other\n ...(result.getPointRadius\n ? {getRadius: result.getPointRadius}\n : {radiusScale: visConfig.radius}),\n\n ...(secondaryField && {\n getSecondaryText,\n getSecondaryColor,\n secondarySizeScale,\n secondaryOutlineColor,\n }),\n },\n };\n }\n\n return result;\n}\n\nfunction createLoadOptions(accessToken: string) {\n return {\n loadOptions: {fetch: {headers: {Authorization: `Bearer ${accessToken}`}}},\n };\n}\n","import {\n GOOGLE_BASEMAPS,\n CARTO_MAP_STYLES,\n applyLayerGroupFilters,\n fetchStyle,\n getStyleUrl,\n someLayerGroupsDisabled,\n} from './basemap-styles.js';\nimport {Basemap, KeplerMapConfig, MapLibreBasemapProps} from './types.js';\nimport {APIErrorContext} from '../api/index.js';\n\nconst CUSTOM_STYLE_ID_PREFIX = 'custom:';\nconst DEFAULT_CARTO_STYLE = 'positron';\n\n// Subset of type from @deck.gl/core to avoid adding dependency\ntype MapViewState = {\n /** Longitude of the map center */\n longitude: number;\n /** Latitude of the map center */\n latitude: number;\n /** Zoom level */\n zoom: number;\n /** Pitch (tilt) of the map, in degrees. `0` looks top down */\n pitch?: number;\n /** Bearing (rotation) of the map, in degrees. `0` is north up */\n bearing?: number;\n};\n\nfunction mapLibreViewpros(\n config: KeplerMapConfig\n): Omit<MapLibreBasemapProps, 'style'> {\n const {longitude, latitude, ...rest} = config.mapState as MapViewState;\n return {\n center: [longitude, latitude],\n ...rest,\n };\n}\n\n/**\n * Get basemap properties for Carto map.\n *\n * For maplibre-based basemaps it returns style or style URL that can be used with `maplibregl.Map` compatible component.\n * * style url is returned for non-filtered standard Carto basemaps or if user used style URL directly in configuration\n * * filtered style object returned for Carto basemaps with layer groups filtered\n *\n * For Google-maps base maps, it returns options that can be used with `google.maps.Map` constructor.\n */\nexport async function fetchBasemapProps({\n config,\n errorContext,\n\n applyLayerFilters = true,\n}: {\n config: KeplerMapConfig;\n\n /** By default `fetchBasemapProps` applies layers filters to style. Set this to `false` to disable it. */\n applyLayerFilters?: boolean;\n errorContext?: APIErrorContext;\n}): Promise<Basemap | null> {\n const {mapStyle} = config;\n const styleType = mapStyle.styleType || DEFAULT_CARTO_STYLE;\n if (styleType.startsWith(CUSTOM_STYLE_ID_PREFIX)) {\n const currentCustomStyle = config.customBaseMaps?.customStyle;\n if (currentCustomStyle) {\n return {\n type: 'maplibre',\n props: {\n style: currentCustomStyle.style || currentCustomStyle.url,\n ...mapLibreViewpros(config),\n },\n attribution: currentCustomStyle.customAttribution,\n };\n }\n }\n\n if (CARTO_MAP_STYLES.includes(styleType)) {\n const {visibleLayerGroups} = mapStyle;\n const styleUrl = getStyleUrl(styleType);\n let style = styleUrl;\n let rawStyle = styleUrl;\n if (\n applyLayerFilters &&\n visibleLayerGroups &&\n someLayerGroupsDisabled(visibleLayerGroups)\n ) {\n rawStyle = await fetchStyle({styleUrl, errorContext});\n style = applyLayerGroupFilters(rawStyle, visibleLayerGroups);\n }\n return {\n type: 'maplibre',\n props: {\n style,\n ...mapLibreViewpros(config),\n },\n visibleLayerGroups,\n rawStyle,\n };\n }\n const googleBasemapDef = GOOGLE_BASEMAPS[styleType];\n if (googleBasemapDef) {\n const {mapState} = config;\n return {\n type: 'google-maps',\n props: {\n ...googleBasemapDef,\n center: {lat: mapState.latitude, lng: mapState.longitude},\n zoom: mapState.zoom + 1,\n tilt: mapState.pitch,\n heading: mapState.bearing,\n },\n };\n }\n return {\n type: 'maplibre',\n props: {\n style: getStyleUrl(DEFAULT_CARTO_STYLE),\n ...mapLibreViewpros(config),\n },\n };\n}\n","import {Dataset} from './types.js';\nimport {SpatialIndex, SpatialIndexColumn} from '../constants.js';\nimport {\n QuerySourceOptions,\n TableSourceOptions,\n TilejsonResult,\n TileResolution,\n} from '../sources/types.js';\nimport {\n DEFAULT_AGGREGATION_EXP,\n DEFAULT_AGGREGATION_RES_LEVEL_H3,\n DEFAULT_AGGREGATION_RES_LEVEL_QUADBIN,\n DEFAULT_TILE_RESOLUTION,\n REDUCED_QUERIES_TILE_RESOLUTION,\n} from '../constants-internal.js';\nimport {\n h3QuerySource,\n H3QuerySourceOptions,\n h3TableSource,\n H3TableSourceOptions,\n quadbinQuerySource,\n QuadbinQuerySourceOptions,\n quadbinTableSource,\n QuadbinTableSourceOptions,\n rasterSource,\n vectorQuerySource,\n VectorQuerySourceOptions,\n vectorTableSource,\n VectorTableSourceOptions,\n vectorTilesetSource,\n VectorTilesetSourceOptions,\n} from '../sources/index.js';\nimport {Filter} from '../types.js';\n\ntype FetchDatasetOptions = {\n accessToken: string;\n apiBaseUrl: string;\n connection: string;\n headers?: Record<string, string>;\n localCache?: {\n cacheControl: 'no-cache'[];\n };\n maxLengthURL?: number;\n};\n\ntype FetchDataset = {\n dataset: Dataset;\n filters?: Filter;\n options: FetchDatasetOptions;\n};\n\n// Copy of getCartoSource from cloud-native:\n// https://github.com/CartoDB/cloud-native/blob/main/workspace-www/src/features/common/utils/cartoDeckGL.ts#L79\nexport function configureSource({\n dataset,\n filters,\n options,\n}: FetchDataset): Promise<TilejsonResult> {\n const {\n geoColumn,\n columns,\n type,\n source,\n queryParameters,\n aggregationExp,\n aggregationResLevel: originalAggregationResLevel,\n } = dataset;\n const sourceOptions = getSourceOptions(options);\n const spatialDataColumn = getColumnNameFromGeoColumn(geoColumn) || undefined;\n const spatialIndex = geoColumn\n ? getSpatialIndexFromGeoColumn(geoColumn)\n : undefined;\n const tileResolution = getDynamicTileResolution(spatialIndex);\n const isH3 = spatialIndex === SpatialIndex.H3;\n const isQuadbin = spatialIndex === SpatialIndex.QUADBIN;\n let aggregationResLevel = originalAggregationResLevel;\n\n if (typeof originalAggregationResLevel !== 'number' && isH3) {\n aggregationResLevel = DEFAULT_AGGREGATION_RES_LEVEL_H3;\n } else if (typeof originalAggregationResLevel !== 'number' && isQuadbin) {\n aggregationResLevel = DEFAULT_AGGREGATION_RES_LEVEL_QUADBIN;\n }\n\n const spatialIndexOptions = {\n aggregationExp: !aggregationExp ? DEFAULT_AGGREGATION_EXP : aggregationExp,\n aggregationResLevel: scaleAggregationResLevel(\n aggregationResLevel,\n tileResolution\n ),\n spatialDataColumn,\n ...(filters && {filters}),\n } as H3QuerySourceOptions;\n const tilesetOptions = {\n ...sourceOptions,\n tableName: source,\n } as VectorTilesetSourceOptions;\n const tableOptions = {\n ...sourceOptions,\n tableName: source,\n tileResolution,\n } as TableSourceOptions;\n const queryOptions = {\n ...sourceOptions,\n sqlQuery: source,\n tileResolution,\n ...(queryParameters && {queryParameters}),\n } as QuerySourceOptions;\n const vectorOptions = {\n spatialDataColumn,\n ...(columns && {columns}),\n ...(filters && {filters}),\n ...(aggregationExp && {aggregationExp}),\n } as VectorTableSourceOptions;\n\n if (type === 'raster') {\n return rasterSource({\n ...sourceOptions,\n tableName: source,\n ...(filters && {filters: filters as any}),\n });\n }\n if (type === 'tileset') {\n return vectorTilesetSource({...tilesetOptions});\n }\n\n if (type === 'table') {\n if (isH3) {\n return h3TableSource({\n ...(tableOptions as H3TableSourceOptions),\n ...spatialIndexOptions,\n });\n } else if (isQuadbin) {\n return quadbinTableSource({\n ...(tableOptions as QuadbinTableSourceOptions),\n ...spatialIndexOptions,\n });\n } else {\n return vectorTableSource({\n ...(tableOptions as VectorTableSourceOptions),\n ...vectorOptions,\n });\n }\n }\n\n if (type === 'query') {\n if (isH3) {\n return h3QuerySource({\n ...(queryOptions as H3QuerySourceOptions),\n ...spatialIndexOptions,\n });\n } else if (isQuadbin) {\n return quadbinQuerySource({\n ...(queryOptions as QuadbinQuerySourceOptions),\n ...spatialIndexOptions,\n });\n } else {\n return vectorQuerySource({\n ...(queryOptions as VectorQuerySourceOptions),\n ...vectorOptions,\n });\n }\n }\n throw new Error(`Invalid source type: ${type}`);\n}\n\nfunction getSourceOptions({\n accessToken,\n apiBaseUrl,\n connection,\n headers,\n maxLengthURL,\n}: FetchDatasetOptions) {\n return {\n accessToken,\n connectionName: connection,\n apiBaseUrl,\n headers,\n maxLengthURL,\n ...(headers?.['Cache-Control']?.includes('no-cache') && {\n localCache: {\n cacheControl: ['no-cache'] as 'no-cache'[],\n },\n }),\n };\n}\n\n/**\n * Returns default tile resolution for dynamic tilesets, based on layer configuration\n * Result is not applicable for static tilesets, for which tile resolution is defined\n * by tilejson.\n */\nfunction getDynamicTileResolution(\n spatialIndex?: SpatialIndex | null\n): TileResolution {\n // TODO: Support increased tile size and resolution for dynamic H3 spatial indexes.\n if (spatialIndex !== SpatialIndex.H3) {\n return REDUCED_QUERIES_TILE_RESOLUTION;\n }\n\n return DEFAULT_TILE_RESOLUTION;\n}\n\n/**\n * State of `aggregationResLevel` in the UI and backend config is based on an assumption of\n * 512x512px tiles. Because we may change tile resolution for performance goals, the\n * `aggregationResLevel` passed to the deck.gl layer must be scaled with tile resolution.\n */\nfunction scaleAggregationResLevel(\n aggregationResLevel: number,\n tileResolution: number\n): number | undefined {\n if (typeof aggregationResLevel !== 'number') return;\n return aggregationResLevel - Math.log2(0.5 / tileResolution);\n}\n\nfunction getColumnNameFromGeoColumn(geoColumn: string | null | undefined) {\n if (!geoColumn) {\n return geoColumn;\n }\n const parts = geoColumn.split(':');\n return parts.length === 1 ? parts[0] : parts.length === 2 ? parts[1] : null;\n}\n\nfunction getSpatialIndexFromGeoColumn(geoColumn: string) {\n const spatialIndexToSearch = geoColumn.split(':')[0];\n\n for (const index of Object.values(SpatialIndex)) {\n if (SpatialIndexColumn[index].includes(spatialIndexToSearch)) {\n return index;\n }\n }\n return null;\n}\n","import {TilejsonResult} from '../sources/index.js';\n\nimport {DEFAULT_API_BASE_URL} from '../constants.js';\n\nimport {\n APIErrorContext,\n CartoAPIError,\n buildPublicMapUrl,\n buildStatsUrl,\n requestWithParameters,\n} from '../api/index.js';\n\nimport {ParseMapResult, parseMap} from './parse-map.js';\nimport {assert} from '../utils.js';\nimport type {Basemap, Dataset, KeplerMapConfig} from './types.js';\nimport {fetchBasemapProps} from './basemap.js';\nimport {configureSource} from './source.js';\nimport {Filters} from '../types.js';\nimport {isRemoteCalculationSupported} from './utils.js';\n\n/* global clearInterval, setInterval, URL */\nasync function _fetchMapDataset(\n dataset: Dataset,\n filters: Filters,\n context: _FetchMapContext\n) {\n const {connectionName} = dataset;\n const cache: {value?: number} = {};\n const configuredSource = configureSource({\n dataset,\n filters: isRemoteCalculationSupported(dataset) ? filters : undefined,\n options: {\n ...context,\n connection: connectionName,\n headers: context.headers,\n accessToken: context.accessToken!,\n apiBaseUrl: context.apiBaseUrl,\n maxLengthURL: context.maxLengthURL,\n },\n });\n dataset.data = await configuredSource;\n\n let cacheChanged = true;\n if (cache.value) {\n cacheChanged = dataset.cache !== cache.value;\n dataset.cache = cache.value;\n }\n\n return cacheChanged;\n}\n\nasync function _fetchTilestats(\n attribute: string,\n dataset: Dataset,\n context: _FetchMapContext\n) {\n const {connectionName, data, id, source, type, queryParameters} = dataset;\n const {apiBaseUrl} = context;\n const errorContext: APIErrorContext = {\n requestType: 'Tile stats',\n connection: connectionName,\n type,\n source,\n };\n if (!('tilestats' in data)) {\n throw new CartoAPIError(\n new Error(`Invalid dataset for tilestats: ${id}`),\n errorContext\n );\n }\n\n const baseUrl = buildStatsUrl({attribute, apiBaseUrl, ...dataset});\n const client = new URLSearchParams(data.tiles[0]).get('client');\n const headers = {Authorization: `Bearer ${context.accessToken}`};\n const parameters: Record<string, string> = {};\n if (client) {\n parameters.client = client;\n }\n if (type === 'query') {\n parameters.q = source;\n if (queryParameters) {\n parameters.queryParameters = JSON.stringify(queryParameters);\n }\n }\n const stats = await requestWithParameters({\n baseUrl,\n headers,\n parameters,\n errorContext,\n maxLengthURL: context.maxLengthURL,\n });\n\n // Replace tilestats for attribute with value from API\n const {attributes} = data.tilestats.layers[0];\n const index = attributes.findIndex((d) => d.attribute === attribute);\n attributes[index] = stats;\n return true;\n}\n\nasync function fillInMapDatasets(\n {datasets, keplerMapConfig}: {datasets: Dataset[]; keplerMapConfig: any},\n context: _FetchMapContext\n) {\n const {filters} = keplerMapConfig.config as KeplerMapConfig;\n const promises = datasets.map((dataset) =>\n _fetchMapDataset(dataset, filters[dataset.id], context)\n );\n return await Promise.all(promises);\n}\n\nasync function fillInTileStats(\n {datasets, keplerMapConfig}: {datasets: Dataset[]; keplerMapConfig: any},\n context: _FetchMapContext\n) {\n const attributes: {attribute: string; dataset: any}[] = [];\n const {layers} = keplerMapConfig.config.visState;\n for (const layer of layers) {\n for (const channel of Object.keys(layer.visualChannels)) {\n const attribute = layer.visualChannels[channel]?.name;\n if (attribute) {\n const dataset = datasets.find((d) => d.id === layer.config.dataId);\n if (\n dataset &&\n dataset.type !== 'tileset' &&\n (dataset.data as TilejsonResult).tilestats\n ) {\n // Only fetch stats for QUERY & TABLE map types\n attributes.push({attribute, dataset});\n }\n }\n }\n }\n // Remove duplicates to avoid repeated requests\n const filteredAttributes: {attribute: string; dataset: any}[] = [];\n for (const a of attributes) {\n if (\n !filteredAttributes.find(\n ({attribute, dataset}) =>\n attribute === a.attribute && dataset === a.dataset\n )\n ) {\n filteredAttributes.push(a);\n }\n }\n\n const promises = filteredAttributes.map(({attribute, dataset}) =>\n _fetchTilestats(attribute, dataset, context)\n );\n return await Promise.all(promises);\n}\n\nexport type FetchMapOptions = {\n /**\n * CARTO platform access token. Only required for private maps.\n */\n accessToken?: string;\n\n /**\n * Base URL of the CARTO Maps API.\n *\n * Example for account located in EU-west region: `https://gcp-eu-west1.api.carto.com`\n *\n * @default https://gcp-us-east1.api.carto.com\n */\n apiBaseUrl?: string;\n\n /**\n * Identifier of map created in CARTO Builder.\n */\n cartoMapId: string;\n clientId?: string;\n\n /**\n * Custom HTTP headers added to map instantiation and data requests.\n */\n headers?: Record<string, string>;\n\n /**\n * Interval in seconds at which to autoRefresh the data. If provided, `onNewData` must also be provided.\n */\n autoRefresh?: number;\n\n /**\n * Callback function that will be invoked whenever data in layers is changed. If provided, `autoRefresh` must also be provided.\n */\n onNewData?: (map: any) => void;\n\n /**\n * Maximum URL character length. Above this limit, requests use POST.\n * Used to avoid browser and CDN limits.\n * @default {@link DEFAULT_MAX_LENGTH_URL}\n */\n maxLengthURL?: number;\n};\n\n/**\n * Context reused while fetching and updating a map with fetchMap().\n */\ntype _FetchMapContext = {apiBaseUrl: string} & Pick<\n FetchMapOptions,\n 'accessToken' | 'clientId' | 'headers' | 'maxLengthURL'\n>;\n\nexport type FetchMapResult = ParseMapResult & {\n /**\n * Basemap properties.\n */\n basemap: Basemap | null;\n stopAutoRefresh?: () => void;\n};\n\nexport async function fetchMap({\n accessToken,\n apiBaseUrl = DEFAULT_API_BASE_URL,\n cartoMapId,\n clientId,\n headers,\n autoRefresh,\n onNewData,\n maxLengthURL,\n}: FetchMapOptions): Promise<FetchMapResult> {\n assert(\n cartoMapId,\n 'Must define CARTO map id: fetchMap({cartoMapId: \"XXXX-XXXX-XXXX\"})'\n );\n\n if (accessToken) {\n headers = {Authorization: `Bearer ${accessToken}`, ...headers};\n }\n\n if (autoRefresh || onNewData) {\n assert(onNewData, 'Must define `onNewData` when using autoRefresh');\n assert(typeof onNewData === 'function', '`onNewData` must be a function');\n assert(\n typeof autoRefresh === 'number' && autoRefresh > 0,\n '`autoRefresh` must be a positive number'\n );\n }\n\n const baseUrl = buildPublicMapUrl({apiBaseUrl, cartoMapId});\n const errorContext: APIErrorContext = {\n requestType: 'Public map',\n mapId: cartoMapId,\n };\n const map = await requestWithParameters({\n baseUrl,\n headers,\n errorContext,\n maxLengthURL,\n });\n const context: _FetchMapContext = {\n accessToken: map.token || accessToken,\n apiBaseUrl,\n clientId,\n headers,\n maxLengthURL,\n };\n\n // Periodically check if the data has changed. Note that this\n // will not update when a map is published.\n let stopAutoRefresh: (() => void) | undefined;\n if (autoRefresh) {\n const intervalId = setInterval(async () => {\n const changed = await fillInMapDatasets(map, {\n ...context,\n headers: {\n ...headers,\n 'If-Modified-Since': new Date().toUTCString(),\n },\n });\n if (onNewData && changed.some((v) => v === true)) {\n onNewData(parseMap(map));\n }\n }, autoRefresh * 1000);\n stopAutoRefresh = () => {\n clearInterval(intervalId);\n };\n }\n\n const geojsonLayers = map.keplerMapConfig.config.visState.layers.filter(\n ({type}: {type: string}) => type === 'geojson' || type === 'point'\n );\n const geojsonDatasetIds = geojsonLayers.map(\n ({config}: {config: any}) => config.dataId\n );\n map.datasets.forEach((dataset: any) => {\n if (geojsonDatasetIds.includes(dataset.id)) {\n const {config} = geojsonLayers.find(\n ({config}: {config: any}) => config.dataId === dataset.id\n );\n dataset.format = 'geojson';\n // Support for very old maps. geoColumn was not stored in the past\n if (!dataset.geoColumn && config.columns.geojson) {\n dataset.geoColumn = config.columns.geojson;\n }\n }\n });\n\n const [basemap] = await Promise.all([\n fetchBasemapProps({config: map.keplerMapConfig.config, errorContext}),\n\n // Mutates map.datasets so that dataset.data contains data\n fillInMapDatasets(map, context),\n ]);\n\n // Mutates attributes in visualChannels to contain tile stats\n await fillInTileStats(map, context);\n\n const out = {...parseMap(map), basemap, ...{stopAutoRefresh}};\n\n const textLayers = out.layers.filter((layer: any) => {\n const pointType = layer.props?.pointType || '';\n return pointType.includes('text');\n });\n\n /* global FontFace, window, document */\n if (\n textLayers.length &&\n window.FontFace &&\n !document.fonts.check('12px Inter')\n ) {\n // Fetch font needed for labels\n const font = new FontFace(\n 'Inter',\n 'url(https://fonts.gstatic.com/s/inter/v12/UcC73FwrK3iLTeHuS_fvQtMwCp50KnMa1ZL7W0Q5nw.woff2)'\n );\n await font.load().then((f) => document.fonts.add(f));\n }\n\n return out as FetchMapResult;\n}\n","import {FilterType} from './constants.js';\nimport {Filter} from './types.js';\nimport {isEmptyObject} from './utils.js';\n\ntype FilterTypeOptions<T extends FilterType> = {\n type: T;\n column: string;\n} & Filter[T];\n\nexport type AddFilterOptions =\n | FilterTypeOptions<FilterType.IN>\n | FilterTypeOptions<FilterType.BETWEEN>\n | FilterTypeOptions<FilterType.CLOSED_OPEN>\n | FilterTypeOptions<FilterType.TIME>\n | FilterTypeOptions<FilterType.STRING_SEARCH>;\n\n/**\n * Adds a {@link Filter} to the filter set. Any previous filters with the same\n * `column` and `type` will be replaced.\n */\nexport function addFilter(\n filters: Record<string, Filter>,\n {column, type, values, owner}: AddFilterOptions\n): Record<string, Filter> {\n if (!filters[column]) {\n filters[column] = {};\n }\n\n const filter = {values, owner} as FilterTypeOptions<typeof type>;\n (filters[column][type] as FilterTypeOptions<typeof type>) = filter;\n\n return filters;\n}\n\nexport type RemoveFilterOptions = {\n column: string;\n owner?: string;\n};\n\n/**\n * Removes one or more {@link Filter filters} from the filter set. If only\n * `column` is specified, then all filters on that column are removed. If both\n * `column` and `owner` are specified, then only filters for that column\n * associated with the owner are removed.\n */\nexport function removeFilter(\n filters: Record<string, Filter>,\n {column, owner}: RemoveFilterOptions\n): Record<string, Filter> {\n const filter = filters[column];\n if (!filter) {\n return filters;\n }\n\n if (owner) {\n for (const type of Object.values(FilterType)) {\n if (owner === filter[type as FilterType]?.owner) {\n delete filter[type as FilterType];\n }\n }\n }\n\n if (!owner || isEmptyObject(filter)) {\n delete filters[column];\n }\n\n return filters;\n}\n\n/**\n * Clears all {@link Filter filters} from the filter set.\n */\nexport function clearFilters(\n filters: Record<string, Filter>\n): Record<string, Filter> {\n for (const column of Object.keys(filters)) {\n delete filters[column];\n }\n return filters;\n}\n\nexport type HasFilterOptions = {\n column: string;\n owner?: string;\n};\n\nexport function hasFilter(\n filters: Record<string, Filter>,\n {column, owner}: HasFilterOptions\n): boolean {\n const filter = filters[column];\n if (!filter) {\n return false;\n }\n\n if (!owner) {\n return true;\n }\n\n for (const type of Object.values(FilterType)) {\n if (owner === filter[type as FilterType]?.owner) {\n return true;\n }\n }\n\n return false;\n}\n\nexport type GetFilterOptions<T extends FilterType> = {\n column: string;\n type: T;\n owner?: string;\n};\n\nexport function getFilter<T extends FilterType>(\n filters: Record<string, Filter>,\n {column, type, owner}: GetFilterOptions<T>\n): Filter[T] | null {\n const filter = filters[column];\n if (!filter) {\n return null;\n }\n\n if (!owner || owner === filter[type]?.owner) {\n return filter[type] || null;\n }\n\n return null;\n}\n","import bboxClip from '@turf/bbox-clip';\nimport bboxPolygon from '@turf/bbox-polygon';\nimport union from '@turf/union';\nimport {getType} from '@turf/invariant';\nimport {polygon, multiPolygon, feature, featureCollection} from '@turf/helpers';\nimport type {BBox, Geometry, MultiPolygon, Polygon, Position} from 'geojson';\nimport {SpatialFilter} from './types.js';\n\n/**\n * Returns a {@link SpatialFilter} for a given viewport, typically obtained\n * from deck.gl's `viewport.getBounds()` method ([west, south, east, north]).\n * If the viewport covers the entire world (to some margin of error in Web\n * Mercator space), `undefined` is returned instead.\n *\n * If the viewport extends beyond longitude range [-180, +180], the polygon\n * may be reformatted for compatibility with CARTO APIs.\n */\nexport function createViewportSpatialFilter(\n viewport: BBox\n): SpatialFilter | undefined {\n if (_isGlobalViewport(viewport)) {\n return;\n }\n return createPolygonSpatialFilter(bboxPolygon(viewport).geometry);\n}\n\n/**\n * Returns a {@link SpatialFilter} for a given {@link Polygon} or\n * {@link MultiPolygon}. If the polygon(s) extend outside longitude\n * range [-180, +180], the result may be reformatted for compatibility\n * with CARTO APIs.\n */\nexport function createPolygonSpatialFilter(\n spatialFilter: Polygon | MultiPolygon\n): SpatialFilter | undefined {\n return (spatialFilter && _normalizeGeometry(spatialFilter)) || undefined;\n}\n\n/**\n * Check if a viewport is large enough to represent a global coverage.\n * In this case the spatial filter parameter for widget calculation is removed.\n *\n * @privateRemarks Source: @carto/react-core\n */\nfunction _isGlobalViewport(viewport: BBox) {\n const [minx, miny, maxx, maxy] = viewport;\n return maxx - minx > 179.5 * 2 && maxy - miny > 85.05 * 2;\n}\n\n/**\n * Normalized a geometry, coming from a mask or a viewport. The parts\n * spanning outside longitude range [-180, +180] are clipped and \"folded\"\n * back to the valid range and unioned to the polygons inide that range.\n *\n * It results in a Polygon or MultiPolygon strictly inside the validity range.\n *\n * @privateRemarks Source: @carto/react-core\n */\nfunction _normalizeGeometry(\n geometry: Polygon | MultiPolygon\n): Polygon | MultiPolygon | null {\n const WORLD = [-180, -90, +180, +90] as BBox;\n const worldClip = _clean(\n bboxClip(geometry, WORLD).geometry as Polygon | MultiPolygon\n );\n\n const geometryTxWest = _tx(geometry, 360);\n const geometryTxEast = _tx(geometry, -360);\n\n let result: Polygon | MultiPolygon | null = worldClip;\n\n if (result && geometryTxWest) {\n const worldWestClip = _clean(\n bboxClip(geometryTxWest, WORLD).geometry as Polygon | MultiPolygon\n );\n if (worldWestClip) {\n const collection = featureCollection([\n feature(result),\n feature(worldWestClip),\n ]);\n const merged = union(collection);\n result = merged ? _clean(merged.geometry) : result;\n }\n }\n\n if (result && geometryTxEast) {\n const worldEastClip = _clean(\n bboxClip(geometryTxEast, WORLD).geometry as Polygon | MultiPolygon\n );\n if (worldEastClip) {\n const collection = featureCollection([\n feature(result),\n feature(worldEastClip),\n ]);\n const merged = union(collection);\n result = merged ? _clean(merged.geometry) : result;\n }\n }\n\n return result;\n}\n\n/** @privateRemarks Source: @carto/react-core */\nfunction _cleanPolygonCoords(cc: Position[][]) {\n const coords = cc.filter((c) => c.length > 0);\n return coords.length > 0 ? coords : null;\n}\n\n/** @privateRemarks Source: @carto/react-core */\nfunction _cleanMultiPolygonCoords(ccc: Position[][][]) {\n const coords = ccc.map(_cleanPolygonCoords).filter((cc) => cc);\n return coords.length > 0 ? coords : null;\n}\n\n/** @privateRemarks Source: @carto/react-core */\nfunction _clean(\n geometry: Polygon | MultiPolygon | null\n): Polygon | MultiPolygon | null {\n if (!geometry) {\n return null;\n }\n\n if (_isPolygon(geometry)) {\n const coords = _cleanPolygonCoords(geometry.coordinates);\n return coords ? polygon(coords).geometry : null;\n }\n\n if (_isMultiPolygon(geometry)) {\n const coords = _cleanMultiPolygonCoords(geometry.coordinates);\n return coords ? multiPolygon(coords as Position[][][]).geometry : null;\n }\n\n return null;\n}\n\n/** @privateRemarks Source: @carto/react-core */\nfunction _txContourCoords(cc: Position[], distance: number) {\n return cc.map((c) => [c[0] + distance, c[1]]);\n}\n\n/** @privateRemarks Source: @carto/react-core */\nfunction _txPolygonCoords(ccc: Position[][], distance: number) {\n return ccc.map((cc) => _txContourCoords(cc, distance));\n}\n\n/** @privateRemarks Source: @carto/react-core */\nfunction _txMultiPolygonCoords(cccc: Position[][][], distance: number) {\n return cccc.map((ccc) => _txPolygonCoords(ccc, distance));\n}\n\n/** @privateRemarks Source: @carto/react-core */\nfunction _tx(geometry: Polygon | MultiPolygon, distance: number) {\n if (geometry && getType(geometry) === 'Polygon') {\n const coords = _txPolygonCoords(\n (geometry as Polygon).coordinates,\n distance\n );\n return polygon(coords).geometry;\n } else if (geometry && getType(geometry) === 'MultiPolygon') {\n const coords = _txMultiPolygonCoords(\n (geometry as MultiPolygon).coordinates,\n distance\n );\n return multiPolygon(coords).geometry;\n } else {\n return null;\n }\n}\n\nfunction _isPolygon(geometry: Geometry): geometry is Polygon {\n return getType(geometry) === 'Polygon';\n}\n\nfunction _isMultiPolygon(geometry: Geometry): geometry is MultiPolygon {\n return getType(geometry) === 'MultiPolygon';\n}\n","// Default tile display size in deck.gl, in viewport pixels. May differ\n// from size or resolution assumed when generating the tile data,\nconst DEFAULT_TILE_SIZE = 512;\n\n// Relative scale factor (0 = no biasing, 2 = a few hexagons cover view)\nconst BIAS = 2;\n\n/**\n * Resolution conversion function. Takes a WebMercatorViewport and returns\n * a H3 resolution such that the screen space size of the hexagons is\n * \"similar\" to the given tileSize on screen. Intended for use with deck.gl.\n * @internal\n * @privateRemarks Source: https://github.com/visgl/deck.gl/blob/master/modules/carto/src/layers/h3-tileset-2d.ts\n */\nexport function _getHexagonResolution(\n viewport: {zoom: number; latitude: number},\n tileSize: number\n): number {\n // Difference in given tile size compared to deck's internal 512px tile size,\n // expressed as an offset to the viewport zoom.\n const zoomOffset = Math.log2(tileSize / DEFAULT_TILE_SIZE);\n const hexagonScaleFactor = (2 / 3) * (viewport.zoom - zoomOffset);\n const latitudeScaleFactor = Math.log(\n 1 / Math.cos((Math.PI * viewport.latitude) / 180)\n );\n\n // Clip and bias\n return Math.max(\n 0,\n Math.floor(hexagonScaleFactor + latitudeScaleFactor - BIAS)\n );\n}\n"],"names":["client","getClient","setClient","c","FilterType","ApiVersion","DEFAULT_API_BASE_URL","TileFormat","SpatialIndex","Provider","SpatialIndexColumn","Object","freeze","H3","QUADBIN","makeIntervalComplete","intervals","map","val","undefined","Number","MIN_SAFE_INTEGER","MAX_SAFE_INTEGER","filterFunctions","IN","filterIn","BETWEEN","filterBetween","TIME","filterTime","CLOSED_OPEN","filterClosedOpen","STRING_SEARCH","filterStringSearch","filterValues","featureValue","includes","checkRange","range","lowerBound","upperBound","some","featureValueAsTimestamp","Date","getTime","isFinite","Error","params","normalizedFeatureValue","normalize","stringRegExp","useRegExp","filterValue","escapeRegExp","mustStart","mustEnd","regex","RegExp","join","caseSensitive","match","specialCharRegExp","normalizeRegExp","value","replace","data","normalizedData","String","keepSpecialCharacters","LOGICAL_OPERATOR_METHODS","and","or","passesFilter","columns","filters","feature","filtersLogicalOperator","method","column","columnFilters","columnFilterTypes","keys","every","filter","filterFunction","values","_buildFeatureFilter","_ref","type","length","f","properties","featurePassesFilter","applyFilters","features","buildBinaryFeatureFilter","_ref2","featureIdIdx","binaryData","passesFilterUsingBinary","getValueFromNumericProps","_ref3","numericProps","getValueFromProperties","_ref4","propertyIdx","featureIds","GET_VALUE_BY_BINARY_PROP","getBinaryPropertyByFilterValues","flat","getFeatureValue","binaryProp","getFeatureValueFn","entries","_ref5","filterFn","geojsonFeatures","geojson","spatialFilter","uniqueIdProperty","uniqueIdx","Map","uniqueId","has","intersects","set","Array","from","DEFAULT_CONFIG","EPSILON","debug","precision","printTypes","printDegrees","printRowMajor","_cartographicRadians","globalThis","mathgl","config","isArray","ArrayBuffer","isView","DataView","lerp","a","b","t","ai","i","assert","condition","message","PI","Math","PI_4","DEGREES_TO_RADIANS","RADIANS_TO_DEGREES","TILE_SIZE","lngLatToWorld","lngLat","lng","lat","lambda2","phi2","x","y","log","tan","worldToLngLat","xy","atan","exp","TRANSFORM_FN","Point","transformPoint","MultiPoint","transformMultiPoint","LineString","transformLineString","MultiLineString","transformMultiLineString","Polygon","transformPolygon","MultiPolygon","transformMultiPolygon","transformToTileCoords","geometry","bbox","west","south","east","north","nw","projectFlat","se","projectedBbox","transformFn","coordinates","pointX","pointY","inverseLerp","getPoints","g","multiPoint","line","multiLineString","lineString","polygon","polygonRing","multiPolygon","xyz","transformTileCoordsToWGS84","FEATURE_GEOM_PROPERTY","tileFeaturesGeometries","tiles","tileFormat","options","tile","isVisible","bboxToGeom","bboxPolygon","tileIsFullyVisible","booleanWithin","spatialFilterFeature","clippedGeometryToIntersect","intersect","featureCollection","transformedGeometryToIntersect","MVT","createIndicesForPoints","points","calculateFeatures","geometryIntersection","lines","polygons","processTileFeatureProperties","startIndex","endIndex","storeGeometry","tileProps","getPropertiesFromTile","uniquePropertyValue","getUniquePropertyValue","positions","ringCoordinates","getRingCoordinatesFor","getFeatureByType","parseProperties","addIntersectedFeaturesInTile","indices","getIndices","pointIndices","pathIndices","primitivePolygonIndices","getFeatureId","featureId","fields","result","id","key","assign","getValueFromTileProps","artificialId","size","propertyName","j","push","subarray","addAllFeaturesInTile","lastFeatureId","PointIndicesArray","constructor","d2r","r2d","tileToBBOX","e","tile2lon","w","s","tile2lat","n","tileToGeoJSON","poly","z","pow","pointToTile","lon","pointToTileFraction","floor","getChildren","getParent","getSiblings","hasSiblings","siblings","hasTile","tilesEqual","tile1","tile2","tileToQuadkey","index","mask","toString","quadkeyToTile","quadkey","bboxToTile","bboxCoords","min","max","getBboxZoom","MAX_ZOOM","sin","z2","tilebelt","getTiles","geom","limits","coords","maxZoom","max_zoom","tileHash","toID","lineCover","polygonCover","min_zoom","len","appendHashTiles","mergeTiles","mergedTiles","parentTileHash","parentTiles","id2","id3","id4","parentTile","tileArray","zoom","intersections","ring","k","m","sort","compareTiles","prevX","prevY","start","stop","x0","y0","x1","y1","dx","dy","sx","sy","tMaxX","Infinity","abs","tMaxY","tdx","tdy","pop","hash","fromID","dim","B","S","tileToCell","BigInt","quadbin","getResolution","geometryToCells","resolution","tileFeaturesSpatialIndex","spatialDataColumn","spatialDataType","spatialIndex","getSpatialIndex","spatialIndexIDName","cells","getCellsCoverGeometry","cellsSet","Set","forEach","d","find","quadbinGetResolution","h3GetResolution","bboxWest","bboxEast","polygonToCells","bboxClip","concat","V3_MINOR_VERSION","DEFAULT_GEO_COLUMN","DEFAULT_MAX_LENGTH_URL","DEFAULT_TILE_RESOLUTION","REDUCED_QUERIES_TILE_RESOLUTION","DEFAULT_AGGREGATION_RES_LEVEL_H3","DEFAULT_AGGREGATION_RES_LEVEL_QUADBIN","DEFAULT_AGGREGATION_EXP_ALIAS","DEFAULT_AGGREGATION_EXP","tileFeatures","DEFAULT_FILTER_SIZE","getDataFilterExtensionProps","filtersWithoutTimeType","timeColumn","timeFilter","getFiltersByType","filterRange","getFilterRange","updateTriggers","getUpdateTriggers","getFilterValue","columnData","typeData","filterSize","fill","offsetBy","v","JSON","stringify","featureFilter","CartoAPIError","error","errorContext","response","responseJson","responseString","status","requestType","formatErrorKey","name","toUpperCase","joinPath","slice","call","arguments","part","endsWith","buildV3Path","apiBaseUrl","version","endpoint","buildPublicMapUrl","cartoMapId","buildStatsUrl","attribute","connectionName","source","buildSourceUrl","buildQueryUrl","FILTER_TYPES","isFilterType","getApplicableFilters","owner","applicableFilters","isApplicable","normalizeObjectKeys","el","reduce","acc","toLowerCase","InvalidColumnError","NAME","is","isEmptyObject","object","_","isObject","isPureObject","requestWithParameters","baseUrl","parameters","headers","customHeaders","maxLengthURL","localCache","deck","VERSION","deckglVersion","excludeURLParameters","createCacheKey","cache","REQUEST_CACHE","canReadCache","canStoreInCache","getCacheSettings","Promise","resolve","get","url","createURLWithParameters","DEFAULT_HEADERS","fetchPromise","fetch","body","jsonPromise","then","_response","json","ok","catch","delete","reject","Accept","DEFAULT_REQUEST_CACHE","cacheControl","parameterEntries","headerEntries","baseUrlString","URL","searchParams","param","baseSource","urlParameters","accessToken","optionalOptions","mergedOptions","SOURCE_DEFAULTS","clientId","format","Authorization","connection","mapInstantiation","_exit","_temp2","_result","dataUrl","parseInt","_temp","boundaryQuerySource","tilesetTableName","propertiesSqlQuery","queryParameters","boundaryTableSource","propertiesTableName","WidgetSource","props","defaultProps","_getModelSource","filterOwner","apiVersion","V3","WidgetBaseSource","makeCall","opts","dealWithApiError","isPost","_catch","signal","otherOptions","_fetch","_response$json","column_name","hint","AVAILABLE_MODELS","REQUEST_GET_MAX_URL_LENGTH","executeModel","model","spatialFiltersMode","queryParams","spatialFilters","urlWithSearchParams","objectToURLSearchParams","isGet","URLSearchParams","append","WidgetRemoteSource","getCategories","_this","operation","operationColumn","getModelSource","res","rows","getFeatures","_this2","abortController","dataType","limit","tileResolution","getFormula","_this3","operationExp","getHistogram","_this4","ticks","tick","getRange","_this5","getScatter","_this6","xAxisColumn","xAxisJoinOperation","yAxisColumn","yAxisJoinOperation","HARD_LIMIT","getTable","_this7","sortBy","sortDirection","offset","ROWS","totalCount","metadata","total","METADATA","TOTAL","getTimeSeries","_this8","joinOperation","stepSize","stepMultiplier","splitByCategory","splitByCategoryLimit","splitByCategoryValues","categories","WidgetQuerySource","sqlQuery","WidgetTableSource","tableName","aggregationFunctions","count","applyAggregationFunction","sum","avg","aggregate","isPotentiallyValidNumber","aggregationFn","trim","aggFn","normalizedKeys","normalizeKeys","elements","filterFalsyElements","thenBy_module","identity","ignoreCase","makeCompareFunction","opt","direction","prop","v1","uf","preprocess","cmp","v2","descTokens","desc","tb","func","firstBy","thenBy","applySorting","sortByDirection","sortByColumnType","isValidSortBy","sortFn","createSortFn","firstSortOption","othersSortOptions","normalizeSortByOptions","sortOptions","numberFormat","sortByEl","groupValuesByColumn","valuesColumns","keysColumn","groups","accumulator","item","group","aggregatedValue","isValid","targetOperation","getUTCMonday","date","dateCp","day","getUTCDay","diff","getUTCDate","setUTCDate","UTC","getUTCFullYear","getUTCMonth","GROUP_KEY_FN_MAPPING","year","month","week","hour","getUTCHours","minute","getUTCMinutes","second","getUTCSeconds","groupValuesByDateColumn","groupType","groupKeyFn","formattedValue","groupKey","isNaN","groupedValues","histogram","binsContainer","arr","bin","end","binContainer","transformedBins","scatterPlot","xAxisColumns","yAxisColumns","xValue","xIsValid","yValue","yIsValid","WidgetTilesetSource","_tiles","_features","_tileFeatureExtractOptions","_tileFeatureExtractPreviousInputs","loadTiles","setTileFeatureExtractOptions","_extractTileFeatures","prevInputs","booleanEqual","loadGeoJSON","assertColumn","filteredFeatures","_getFilteredFeatures","normalizeColumns","_ref6","searchFilterColumn","searchFilterText","row","srcRow","dstRow","_ref7","_ref8","featureKeys","invalidColumns","h3QuerySource","aggregationExp","aggregationResLevel","q","widgetSource","h3TableSource","h3TilesetSource","rasterSource","quadbinQuerySource","quadbinTableSource","quadbinTilesetSource","vectorQuerySource","vectorTableSource","vectorTilesetSource","query","fetchStyle","styleUrl","mode","cartoStyleUrlTemplate","CARTO_MAP_STYLES","GOOGLE_BASEMAPS","roadmap","mapTypeId","mapId","satellite","hybrid","terrain","STYLE_LAYER_GROUPS","slug","Boolean","defaultVisibility","applyLayerGroupFilters","style","visibleLayerGroups","layers","removedLayerFilters","lg","visibleLayers","layer","someLayerGroupsDisabled","getStyleUrl","styleType","VOYAGER","POSITRON","DARK_MATTER","VOYAGER_NOLABELS","POSITRON_NOLABELS","DARK_MATTER_NOLABELS","ascending","NaN","numbers","valueof","variance","delta","mean","deviation","sqrt","extent","InternMap","keyof","defineProperties","_intern","_key","intern_get","intern_set","intern_delete","valueOf","nest","rollup","regroup","permute","F","Symbol","iterator","TypeError","Uint32Array","ascendingDefined","compareDefined","compare","groupSort","ak","av","bk","bv","quickselect","array","left","right","sd","newLeft","newRight","swap","quantile","p","Float64Array","i0","value0","value1","median","factory","prototype","extend","parent","definition","create","Color","darker","brighter","reI","reN","reP","reHex","reRgbInteger","reRgbPercent","reRgbaInteger","reRgbaPercent","reHslPercent","reHslaPercent","named","aliceblue","antiquewhite","aqua","aquamarine","azure","beige","bisque","black","blanchedalmond","blue","blueviolet","brown","burlywood","cadetblue","chartreuse","chocolate","coral","cornflowerblue","cornsilk","crimson","cyan","darkblue","darkcyan","darkgoldenrod","darkgray","darkgreen","darkgrey","darkkhaki","darkmagenta","darkolivegreen","darkorange","darkorchid","darkred","darksalmon","darkseagreen","darkslateblue","darkslategray","darkslategrey","darkturquoise","darkviolet","deeppink","deepskyblue","dimgray","dimgrey","dodgerblue","firebrick","floralwhite","forestgreen","fuchsia","gainsboro","ghostwhite","gold","goldenrod","gray","green","greenyellow","grey","honeydew","hotpink","indianred","indigo","ivory","khaki","lavender","lavenderblush","lawngreen","lemonchiffon","lightblue","lightcoral","lightcyan","lightgoldenrodyellow","lightgray","lightgreen","lightgrey","lightpink","lightsalmon","lightseagreen","lightskyblue","lightslategray","lightslategrey","lightsteelblue","lightyellow","lime","limegreen","linen","magenta","maroon","mediumaquamarine","mediumblue","mediumorchid","mediumpurple","mediumseagreen","mediumslateblue","mediumspringgreen","mediumturquoise","mediumvioletred","midnightblue","mintcream","mistyrose","moccasin","navajowhite","navy","oldlace","olive","olivedrab","orange","orangered","orchid","palegoldenrod","palegreen","paleturquoise","palevioletred","papayawhip","peachpuff","peru","pink","plum","powderblue","purple","rebeccapurple","red","rosybrown","royalblue","saddlebrown","salmon","sandybrown","seagreen","seashell","sienna","silver","skyblue","slateblue","slategray","slategrey","snow","springgreen","steelblue","teal","thistle","tomato","turquoise","violet","wheat","white","whitesmoke","yellow","yellowgreen","define","color","copy","channels","displayable","rgb","hex","color_formatHex","formatHex","formatHex8","color_formatHex8","formatHsl","color_formatHsl","formatRgb","color_formatRgb","hslConvert","l","exec","rgbn","Rgb","rgba","hsla","hasOwnProperty","r","rgbConvert","o","opacity","clamp","clampi","clampa","rgb_formatHex","rgb_formatHex8","rgb_formatRgb","round","h","Hsl","hsl","m2","m1","hsl2rgb","clamph","clampt","global","module","exports","this","hookCallback","hooks","apply","setHookCallback","callback","input","hasOwnProp","isObjectEmpty","obj","getOwnPropertyNames","isUndefined","isNumber","isDate","fn","arrLen","createUTC","locale","strict","createLocalOrUTC","utc","defaultParsingFlags","empty","unusedTokens","unusedInput","overflow","charsLeftOver","nullInput","invalidEra","invalidMonth","invalidFormat","userInvalidated","iso","parsedDateParts","era","meridiem","rfc2822","weekdayMismatch","getParsingFlags","_pf","fun","flags","parsedParts","isNowValid","_d","invalidWeekday","_strict","bigHour","isFrozen","_isValid","createInvalid","momentProperties","updateInProgress","copyConfig","to","momentPropertiesLen","_isAMomentObject","_i","_f","_l","_tzm","_isUTC","_offset","_locale","Moment","updateOffset","isMoment","warn","msg","suppressDeprecationWarnings","console","deprecate","firstTime","deprecationHandler","args","arg","argLen","stack","deprecations","deprecateSimple","isFunction","Function","_config","_dayOfMonthOrdinalParseLenient","_dayOfMonthOrdinalParse","_ordinalParse","mergeConfigs","parentConfig","childConfig","Locale","defaultCalendar","sameDay","nextDay","nextWeek","lastDay","lastWeek","sameElse","calendar","mom","now","output","_calendar","zeroFill","number","targetLength","forceSign","absNumber","zerosToFill","sign","substr","formattingTokens","localFormattingTokens","formatFunctions","formatTokenFunctions","addFormatToken","token","padded","ordinal","localeData","removeFormattingTokens","makeFormatFunction","formatMoment","invalidDate","expandFormat","replaceLongDateFormatTokens","longDateFormat","lastIndex","test","defaultLongDateFormat","LTS","LT","L","LL","LLL","LLLL","_longDateFormat","formatUpper","tok","defaultInvalidDate","_invalidDate","defaultOrdinal","defaultDayOfMonthOrdinalParse","_ordinal","defaultRelativeTime","future","past","ss","mm","hh","dd","ww","M","MM","yy","relativeTime","withoutSuffix","string","isFuture","_relativeTime","pastFuture","aliases","D","dates","days","weekdays","weekday","E","isoweekdays","isoweekday","DDD","dayofyears","dayofyear","hours","ms","milliseconds","millisecond","minutes","months","Q","quarters","quarter","seconds","gg","weekyears","weekyear","GG","isoweekyears","isoweekyear","weeks","W","isoweeks","isoweek","years","normalizeUnits","units","normalizeObjectUnits","inputObject","normalizedInput","normalizedProp","priorities","isoWeekday","dayOfYear","weekYear","isoWeekYear","isoWeek","getPrioritizedUnits","unitsObj","u","unit","priority","match1","match2","match3","match4","match6","match1to2","match3to4","match5to6","match1to3","match1to4","match1to6","matchUnsigned","matchSigned","matchOffset","matchShortOffset","matchTimestamp","matchWord","match1to2NoLeadingZero","match1to2HasZero","regexes","addRegexToken","strictRegex","isStrict","getParseRegexForToken","unescapeFormat","regexEscape","matched","p1","p2","p3","p4","absFloor","ceil","toInt","argumentForCoercion","coercedNumber","tokens","addParseToken","tokenLen","addWeekParseToken","_w","addTimeToArrayFromToken","_a","isLeapYear","YEAR","MONTH","DATE","HOUR","MINUTE","SECOND","MILLISECOND","WEEK","WEEKDAY","parseTwoDigitYear","daysInYear","getSetYear","makeGetSet","getIsLeapYear","keepTime","set$1","isUTC","getUTCMilliseconds","getMilliseconds","getSeconds","getMinutes","getHours","getDate","getDay","getMonth","getFullYear","setUTCMilliseconds","setMilliseconds","setUTCSeconds","setSeconds","setUTCMinutes","setMinutes","setUTCHours","setHours","setDate","setUTCFullYear","setFullYear","stringGet","stringSet","prioritized","prioritizedLen","mod","indexOf","daysInMonth","modMonth","monthsShort","monthsShortRegex","monthsRegex","monthsParse","defaultLocaleMonths","split","defaultLocaleMonthsShort","MONTHS_IN_FORMAT","defaultMonthsShortRegex","defaultMonthsRegex","localeMonths","_months","isFormat","localeMonthsShort","_monthsShort","handleStrictParse","monthName","ii","llc","toLocaleLowerCase","_monthsParse","_longMonthsParse","_shortMonthsParse","localeMonthsParse","_monthsParseExact","setMonth","setUTCMonth","getSetMonth","getDaysInMonth","computeMonthsParse","_monthsShortStrictRegex","_monthsShortRegex","_monthsStrictRegex","_monthsRegex","cmpLenRev","shortPieces","longPieces","mixedPieces","shortP","longP","createDate","createUTCDate","firstWeekOffset","dow","doy","fwd","fwdlw","dayOfYearFromWeeks","localWeekday","weekOffset","resYear","resDayOfYear","weekOfYear","resWeek","weeksInYear","weekOffsetNext","localeWeek","_week","defaultLocaleWeek","localeFirstDayOfWeek","localeFirstDayOfYear","getSetWeek","add","getSetISOWeek","weekdaysMin","weekdaysShort","weekdaysMinRegex","weekdaysShortRegex","weekdaysRegex","weekdaysParse","parseWeekday","parseIsoWeekday","shiftWeekdays","ws","defaultLocaleWeekdays","defaultLocaleWeekdaysShort","defaultLocaleWeekdaysMin","defaultWeekdaysRegex","defaultWeekdaysShortRegex","defaultWeekdaysMinRegex","localeWeekdays","_weekdays","localeWeekdaysShort","_weekdaysShort","localeWeekdaysMin","_weekdaysMin","handleStrictParse$1","weekdayName","_weekdaysParse","_shortWeekdaysParse","_minWeekdaysParse","localeWeekdaysParse","_weekdaysParseExact","_fullWeekdaysParse","getSetDayOfWeek","getSetLocaleDayOfWeek","getSetISODayOfWeek","computeWeekdaysParse","_weekdaysStrictRegex","_weekdaysRegex","_weekdaysShortStrictRegex","_weekdaysShortRegex","_weekdaysMinStrictRegex","_weekdaysMinRegex","minPieces","minp","shortp","longp","hFormat","kFormat","lowercase","matchMeridiem","_meridiemParse","kInput","_isPm","isPM","_meridiem","pos","pos1","pos2","localeIsPM","charAt","defaultLocaleMeridiemParse","getSetHour","localeMeridiem","isLower","baseConfig","dayOfMonthOrdinalParse","meridiemParse","locales","localeFamilies","globalLocale","commonPrefix","arr1","arr2","minl","normalizeLocale","chooseLocale","names","next","loadLocale","isLocaleNameSane","oldLocale","aliasedRequire","_abbr","require","getSetGlobalLocale","getLocale","defineLocale","abbr","parentLocale","updateLocale","tmpLocale","listLocales","checkOverflow","_overflowDayOfYear","_overflowWeeks","_overflowWeekday","extendedIsoRegex","basicIsoRegex","tzRegex","isoDates","isoTimes","aspNetJsonRegex","obsOffsets","UT","GMT","EDT","EST","CDT","CST","MDT","MST","PDT","PST","configFromISO","allowTime","dateFormat","timeFormat","tzFormat","isoDatesLen","isoTimesLen","configFromStringAndFormat","extractFromRFC2822Strings","yearStr","monthStr","dayStr","hourStr","minuteStr","secondStr","untruncateYear","preprocessRFC2822","checkWeekday","weekdayStr","parsedInput","weekdayProvided","weekdayActual","calculateOffset","obsOffset","militaryOffset","numOffset","hm","configFromRFC2822","parsedArray","configFromString","createFromInputFallback","_useUTC","defaults","currentDateArray","nowValue","configFromArray","currentDate","expectedWeekday","yearToUse","dayOfYearFromWeekInfo","_dayOfYear","_nextDay","temp","weekdayOverflow","curWeek","createLocal","ISO_8601","RFC_2822","skipped","stringLength","totalParsedInputLength","meridiemFixWrap","erasConvertYear","isPm","meridiemHour","configFromStringAndArray","tempConfig","bestMoment","scoreToBeat","currentScore","validFormatFound","bestFormatIsValid","configfLen","score","configFromObject","dayOrDate","createFromConfig","prepareConfig","preparse","configFromInput","prototypeMin","other","prototypeMax","pickBy","moments","ordering","isDurationValid","unitHasDecimal","orderLen","parseFloat","isValid$1","createInvalid$1","createDuration","Duration","duration","_milliseconds","_days","_data","_bubble","isDuration","absRound","compareArrays","array1","array2","dontConvert","lengthDiff","diffs","separator","utcOffset","offsetFromString","chunkOffset","matcher","matches","chunk","parts","cloneWithOffset","clone","setTime","local","getDateOffset","getTimezoneOffset","getSetOffset","keepLocalTime","keepMinutes","localAdjust","_changeInProgress","addSubtract","getSetZone","setOffsetToUTC","setOffsetToLocal","subtract","setOffsetToParsedOffset","tZone","hasAlignedHourOffset","isDaylightSavingTime","isDaylightSavingTimeShifted","_isDSTShifted","toArray","isLocal","isUtcOffset","isUtc","aspNetRegex","isoRegex","ret","diffRes","parseIso","momentsDifference","invalid","inp","positiveMomentsDifference","base","isAfter","isBefore","createAdder","period","dur","tmp","isAdding","isString","isMomentInput","isNumberOrStringArray","isMomentInputObject","objectTest","propertyTest","property","propertyLen","arrayTest","dataTypeTest","isCalendarSpec","getCalendarFormat","myMoment","calendar$1","time","formats","sod","startOf","calendarFormat","localInput","endOf","isBetween","inclusivity","localFrom","localTo","isSame","inputMs","isSameOrAfter","isSameOrBefore","asFloat","that","zoneDelta","monthDiff","wholeMonthDiff","anchor","anchor2","adjust","defaultFormat","defaultFormatUtc","toISOString","keepOffset","toDate","inspect","zone","prefix","datetime","suffix","inputString","postformat","humanize","fromNow","toNow","newLocaleData","lang","MS_PER_SECOND","MS_PER_MINUTE","MS_PER_HOUR","MS_PER_400_YEARS","mod$1","dividend","divisor","localStartOfDate","utcStartOfDate","startOfDate","unix","toObject","toJSON","isValid$2","parsingFlags","invalidAt","creationData","matchEraAbbr","matchEraName","matchEraNarrow","erasParse","matchEraYearOrdinal","_eraYearOrdinalRegex","eraYearOrdinalParse","localeEras","eras","_eras","since","until","localeErasParse","eraName","narrow","localeErasConvertYear","dir","getEraName","getEraNarrow","getEraAbbr","getEraYear","erasNameRegex","computeErasParse","_erasNameRegex","_erasRegex","erasAbbrRegex","_erasAbbrRegex","erasNarrowRegex","_erasNarrowRegex","abbrPieces","namePieces","narrowPieces","erasName","erasAbbr","erasNarrow","addWeekYearFormatToken","getter","getSetWeekYear","getSetWeekYearHelper","getSetISOWeekYear","getISOWeeksInYear","getISOWeeksInISOWeekYear","getWeeksInYear","weekInfo","getWeeksInWeekYear","weeksTarget","setWeekAll","dayOfYearData","getSetQuarter","getSetDayOfMonth","getSetDayOfYear","getSetMinute","getSetSecond","getSetMillisecond","parseMs","getZoneAbbr","getZoneName","proto","for","eraNarrow","eraAbbr","eraYear","isoWeeks","weeksInWeekYear","isoWeeksInYear","isoWeeksInISOWeekYear","parseZone","isDST","zoneAbbr","zoneName","isDSTShifted","createUnix","createInZone","preParsePostFormat","proto$1","firstDayOfYear","firstDayOfWeek","get$1","field","setter","listMonthsImpl","out","listWeekdaysImpl","localeSorted","shift","listMonths","listMonthsShort","listWeekdays","listWeekdaysShort","listWeekdaysMin","langData","mathAbs","addSubtract$1","add$1","subtract$1","absCeil","bubble","monthsFromDays","monthsToDays","daysToMonths","as","makeAs","alias","asMilliseconds","asSeconds","asMinutes","asHours","asDays","asWeeks","asMonths","asQuarters","asYears","valueOf$1","clone$1","get$2","makeGetter","thresholds","substituteTimeAgo","relativeTime$1","posNegDuration","getSetRelativeTimeRounding","roundingFunction","getSetRelativeTimeThreshold","threshold","argWithSuffix","argThresholds","withSuffix","th","abs$1","toISOString$1","totalSign","ymSign","daysSign","hmsSign","toFixed","proto$2","toIsoString","relativeTimeRounding","relativeTimeThreshold","HTML5_FMT","DATETIME_LOCAL","DATETIME_LOCAL_SECONDS","DATETIME_LOCAL_MS","TIME_SECONDS","TIME_MS","root","require$$0","moment","default","zones","links","countries","guesses","cachedGuess","logError","momentVersion","major","minor","charCodeToInt","charCode","unpackBase60","whole","fractional","multiplier","num","charCodeAt","arrayToInt","intToUntil","mapIndices","unpack","offsets","untils","abbrs","population","Zone","packedString","_set","closest","mid","lo","hi","unpacked","_index","timestamp","target","zone_name","country_code","parse","offsetNext","offsetPrev","tz","moveAmbiguousForward","moveInvalidForward","Country","country_name","zone_names","OffsetAt","at","timeString","toTimeString","ZoneScore","offsetScore","abbrScore","scoreOffsetAt","offsetAt","findChange","low","high","userOffsets","startYear","last","lastOffset","change","nextOffset","sortZoneScores","localeCompare","addToGuesses","guessesForUserOffsets","offsetsLength","filteredGuesses","checkedOffsets","guessesOffset","rebuildGuess","intlName","Intl","DateTimeFormat","resolvedOptions","timeZone","normalizeName","zoneScores","zoneScore","getZone","guess","ignoreCache","addZone","packed","normalized","caller","link","getNames","getCountryNames","addLink","normal0","normal1","addCountries","country_zones","getCountry","zonesForCountry","country","with_offset","loadData","dataVersion","zoneExists","didShowError","needsOffset","isUnixTimestamp","_zones","_links","_names","_countries","load","defaultZone","_z","abbrWrap","old","resetZoneWrap","resetZoneWrap2","setDefault","require$$1","createBinaryProxy","Proxy","ownKeys","Reflect","getOwnPropertyDescriptor","enumerable","configurable","scaleIdentity","unknown","scale","invert","domain","scaleCopy","isRemoteCalculationSupported","dataset","providerId","SCALE_FUNCS","linear","scaleLinear","scaleOrdinal","scaleLog","point","scalePoint","scaleQuantile","quantize","scaleQuantize","scaleSqrt","custom","scaleThreshold","UNKNOWN_COLOR","AGGREGATION","average","maximum","minimum","OPACITY_MAP","getFillColor","getLineColor","getTextColor","AGGREGATION_FUNC","count unique","accessor","stddev","hexToRGBA","sharedPropMap","label","textLabel","alignment","visConfig","enable3d","elevationScale","filled","strokeColor","stroked","thickness","radius","wireframe","customMarkersPropsMap","heatmapTilePropsMap","colorRange","colors","lineMiterLimit","lineWidthUnits","pointRadiusUnits","rounded","wrapLongitude","mergePropMaps","deprecatedLayerTypes","getLayerProps","basePropMap","customMarkers","propMap","domainFromAttribute","scaleType","scaleLength","category","quantiles","domainFromValues","d0","d1","calculateDomain","tilestats","attributes","normalizeAccessor","info","__source","proxy","opacityToAlpha","getAccessorKeys","aggregation","findAccessorKey","getColorValueAccessor","colorAggregation","aggregator","getColorAccessor","colorColumn","calculateLayerScale","alpha","accessorKeys","propertyValue","scaleColor","colorMap","FALLBACK_ICON","getIconUrlAccessor","fallbackUrl","maxIconSize","useMaskedIcons","urlToUnpackedIcon","width","height","unknownValue","othersMarker","unknownIcon","mapping","markerUrl","markerMap","getMaxMarkerSize","visualChannels","radiusRange","radiusField","sizeField","negateAccessor","getSizeAccessor","FORMATS","integer","d3Format","float","getTextAccessor","parseMap","keplerMapConfig","datasets","mapState","mapStyle","popupSettings","layerBlending","interactionConfig","visState","title","description","createdAt","updatedAt","initialViewState","reverse","dataId","styleProps","createStyleProps","createInteractionProps","createChannelProps","createParametersProp","createLoadOptions","blendColorSrcFactor","blendAlphaSrcFactor","blendColorDstFactor","blendAlphaDstFactor","blendColorOperation","blendAlphaOperation","pickable","tooltip","enabled","autoHighlight","mapProps","sourceKey","sourceValue","targetKey","colorAccessor","opacityKey","highlightColor","colorField","colorScale","radiusScale","sizeScale","strokeColorField","strokeColorScale","weightField","heightField","heightScale","colorScaleType","getColorValue","getColorWeight","altitude","dataTransform","getPointRadius","sizeAggregation","sizeRange","fallbackOpacity","strokeOpacity","strokeColorAggregation","strokeColorRange","getElevation","heightAggregation","heightRange","getWeight","weightAggregation","customMarkersUrl","customMarkersRange","pointType","getIcon","customMarkersField","_subLayerProps","loadOptions","image","imagebitmap","resizeWidth","resizeHeight","resizeQuality","getIconColor","getIconSize","rotationField","getIconAngle","mainLabel","secondaryLabel","collisionGroup","getTextAlignmentBaseline","getTextAnchor","outlineColor","textOutlineColor","textSizeScale","getSecondaryColor","secondaryField","secondaryOutlineColor","secondarySizeScale","getText","getSecondaryText","textCharacterSet","textFontFamily","textFontSettings","sdf","textFontWeight","textOutlineWidth","collisionEnabled","getRadius","fetchBasemapProps","applyLayerFilters","_temp4","googleBasemapDef","center","latitude","longitude","tilt","pitch","heading","bearing","DEFAULT_CARTO_STYLE","mapLibreViewpros","startsWith","CUSTOM_STYLE_ID_PREFIX","currentCustomStyle","customBaseMaps","customStyle","attribution","customAttribution","_temp3","_type$props$visibleLa","rawStyle","_fetchStyle","rest","configureSource","geoColumn","originalAggregationResLevel","sourceOptions","getSourceOptions","getColumnNameFromGeoColumn","getSpatialIndexFromGeoColumn","getDynamicTileResolution","isH3","isQuadbin","spatialIndexOptions","scaleAggregationResLevel","tilesetOptions","tableOptions","queryOptions","vectorOptions","log2","spatialIndexToSearch","fetchMap","autoRefresh","onNewData","context","stopAutoRefresh","intervalId","setInterval","fillInMapDatasets","toUTCString","changed","clearInterval","geojsonLayers","geojsonDatasetIds","all","basemap","fillInTileStats","textLayers","window","FontFace","document","fonts","check","font","channel","filteredAttributes","promises","_ref9","_fetchTilestats","_fetchMapDataset","stats","findIndex","configuredSource","_configuredSource","cacheChanged","addFilter","removeFilter","clearFilters","hasFilter","getFilter","createViewportSpatialFilter","viewport","_isGlobalViewport","createPolygonSpatialFilter","_normalizeGeometry","minx","miny","maxx","maxy","WORLD","worldClip","_clean","geometryTxWest","_tx","geometryTxEast","worldWestClip","collection","merged","union","worldEastClip","_cleanPolygonCoords","cc","_cleanMultiPolygonCoords","ccc","_isPolygon","_isMultiPolygon","_txContourCoords","distance","_txPolygonCoords","_txMultiPolygonCoords","cccc","getType","DEFAULT_TILE_SIZE","BIAS","_getHexagonResolution","tileSize","zoomOffset","hexagonScaleFactor","latitudeScaleFactor","cos"],"mappings":"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","x_google_ignoreList":[6,7,8,12,13,14,33,53,54,55,56,57,58,59,60,61,62,63,64,65,66,67,68,69,70,71,72,73]}