{"version":3,"file":"mapValidation.js","names":[],"sources":["esm/platform/ui/mapValidation.js"],"sourcesContent":["const defaultCamera = {\n  coordinates: { latitude: 37.7749, longitude: -122.4194 },\n  zoom: 12\n};\nconst hexColor = /^#[0-9a-f]{6}([0-9a-f]{2})?$/i;\nfunction coordinates(value, what) {\n  if (!value || !Number.isFinite(value.latitude) || value.latitude < -90 || value.latitude > 90 || !Number.isFinite(value.longitude) || value.longitude < -180 || value.longitude > 180)\n    throw new Error(\n      `One.UI.Map ${what} must be a latitude from -90 to 90 and a longitude from -180 to 180`\n    );\n  return value;\n}\nfunction color(value, what) {\n  if (value === void 0) return \"\";\n  if (typeof value !== \"string\" || !hexColor.test(value))\n    throw new Error(`One.UI.Map ${what} must be a #rrggbb or #rrggbbaa string`);\n  return value;\n}\nfunction width(value, what) {\n  if (value === void 0) return 0;\n  if (!Number.isFinite(value) || value < 0)\n    throw new Error(`One.UI.Map ${what} must be a finite number at or above 0`);\n  return value;\n}\nfunction uniqueIds(ids, what) {\n  if (new Set(ids).size !== ids.length)\n    throw new Error(`One.UI.Map ${what} ids must be unique`);\n}\nfunction markers(value) {\n  const list = value ?? [];\n  if (!Array.isArray(list)) throw new Error(\"One.UI.Map markers must be an array\");\n  uniqueIds(\n    list.map((marker) => marker?.id),\n    \"marker\"\n  );\n  return list.map((marker) => {\n    if (typeof marker?.id !== \"string\")\n      throw new Error(\"One.UI.Map markers must contain a string id\");\n    const point = coordinates(marker.coordinates, `marker \"${marker.id}\" coordinates`);\n    if (marker.title !== void 0 && typeof marker.title !== \"string\")\n      throw new Error(`One.UI.Map marker \"${marker.id}\" title must be a string`);\n    return {\n      id: marker.id,\n      title: marker.title ?? \"\",\n      latitude: point.latitude,\n      longitude: point.longitude,\n      tint: color(marker.tintColor, `marker \"${marker.id}\" tintColor`)\n    };\n  });\n}\nfunction overlayPoints(value, what) {\n  if (!Array.isArray(value) || value.length === 0)\n    throw new Error(`One.UI.Map ${what} coordinates must be a non-empty array`);\n  return value.map(\n    (point, index) => coordinates(point, `${what} coordinates[${index}]`)\n  );\n}\nfunction resolveNativeMapModel(input) {\n  const camera = input.cameraPosition ?? defaultCamera;\n  const center = coordinates(camera.coordinates, \"cameraPosition coordinates\");\n  if (!camera || !Number.isFinite(camera.zoom))\n    throw new Error(\"One.UI.Map cameraPosition zoom must be a finite number\");\n  const resolvedMarkers = markers(input.markers);\n  const polylines = input.polylines ?? [];\n  const polygons = input.polygons ?? [];\n  const circles = input.circles ?? [];\n  if (!Array.isArray(polylines)) throw new Error(\"One.UI.Map polylines must be an array\");\n  if (!Array.isArray(polygons)) throw new Error(\"One.UI.Map polygons must be an array\");\n  if (!Array.isArray(circles)) throw new Error(\"One.UI.Map circles must be an array\");\n  uniqueIds(\n    polylines.map((line) => line?.id),\n    \"polyline\"\n  );\n  uniqueIds(\n    polygons.map((polygon) => polygon?.id),\n    \"polygon\"\n  );\n  uniqueIds(\n    circles.map((circle) => circle?.id),\n    \"circle\"\n  );\n  for (const line of polylines)\n    if (typeof line?.id !== \"string\")\n      throw new Error(\"One.UI.Map polylines must contain a string id\");\n  for (const polygon of polygons)\n    if (typeof polygon?.id !== \"string\")\n      throw new Error(\"One.UI.Map polygons must contain a string id\");\n  for (const circle of circles)\n    if (typeof circle?.id !== \"string\")\n      throw new Error(\"One.UI.Map circles must contain a string id\");\n  return {\n    latitude: center.latitude,\n    longitude: center.longitude,\n    zoom: camera.zoom,\n    markers: resolvedMarkers,\n    overlays: JSON.stringify({\n      polylines: polylines.map((line) => ({\n        id: line.id,\n        coordinates: overlayPoints(line.coordinates, `polyline \"${line.id}\"`),\n        color: color(line.color, `polyline \"${line.id}\" color`),\n        width: width(line.width, `polyline \"${line.id}\" width`)\n      })),\n      polygons: polygons.map((polygon) => ({\n        id: polygon.id,\n        coordinates: overlayPoints(polygon.coordinates, `polygon \"${polygon.id}\"`),\n        color: color(polygon.color, `polygon \"${polygon.id}\" color`),\n        lineColor: color(polygon.lineColor, `polygon \"${polygon.id}\" lineColor`),\n        lineWidth: width(polygon.lineWidth, `polygon \"${polygon.id}\" lineWidth`)\n      })),\n      circles: circles.map((circle) => {\n        if (!Number.isFinite(circle.radius) || circle.radius <= 0)\n          throw new Error(\n            `One.UI.Map circle \"${circle.id}\" radius must be a positive number of metres`\n          );\n        return {\n          id: circle.id,\n          center: coordinates(circle.center, `circle \"${circle.id}\" center`),\n          radius: circle.radius,\n          color: color(circle.color, `circle \"${circle.id}\" color`),\n          lineColor: color(circle.lineColor, `circle \"${circle.id}\" lineColor`),\n          lineWidth: width(circle.lineWidth, `circle \"${circle.id}\" lineWidth`)\n        };\n      })\n    })\n  };\n}\nexport {\n  resolveNativeMapModel\n};\n//# sourceMappingURL=mapValidation.js.map\n"],"mappings":"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"}