@code-plate/iran-cities 1.2.0 → 2.0.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.
Files changed (130) hide show
  1. package/CHANGELOG.md +45 -0
  2. package/LICENSE +21 -0
  3. package/MIGRATION.fa.md +277 -0
  4. package/MIGRATION.md +272 -0
  5. package/NOTICE.md +17 -0
  6. package/README.fa.md +528 -201
  7. package/README.md +524 -201
  8. package/dist/boundaries.cjs +9218 -0
  9. package/dist/boundaries.cjs.map +1 -0
  10. package/dist/boundaries.d.cts +30 -0
  11. package/dist/boundaries.d.mts +30 -0
  12. package/dist/boundaries.mjs +9215 -0
  13. package/dist/boundaries.mjs.map +1 -0
  14. package/dist/changes-B-wz9-Gy.cjs +841 -0
  15. package/dist/changes-B-wz9-Gy.cjs.map +1 -0
  16. package/dist/changes-CMVZbfZO.d.mts +8 -0
  17. package/dist/changes-DLZkHBwZ.mjs +800 -0
  18. package/dist/changes-DLZkHBwZ.mjs.map +1 -0
  19. package/dist/changes-DnnwRAKl.d.cts +8 -0
  20. package/dist/components-B7060em0.mjs +240 -0
  21. package/dist/components-B7060em0.mjs.map +1 -0
  22. package/dist/components-BuMUB7XT.d.cts +47 -0
  23. package/dist/components-DZz72pd1.d.mts +47 -0
  24. package/dist/components-grWmOsaV.cjs +247 -0
  25. package/dist/components-grWmOsaV.cjs.map +1 -0
  26. package/dist/components.css +251 -0
  27. package/dist/data/cities.csv +1253 -0
  28. package/dist/data/cities.json +23305 -0
  29. package/dist/data/iran-cities.sql +1487 -0
  30. package/dist/data/iran-provinces.geojson +1 -0
  31. package/dist/data/provinces.csv +32 -0
  32. package/dist/data/provinces.json +460 -0
  33. package/dist/hooks-C6kjWLIE.mjs +134 -0
  34. package/dist/hooks-C6kjWLIE.mjs.map +1 -0
  35. package/dist/hooks-K7pTMF2R.cjs +139 -0
  36. package/dist/hooks-K7pTMF2R.cjs.map +1 -0
  37. package/dist/index.cjs +30 -9307
  38. package/dist/index.d.cts +25 -0
  39. package/dist/index.d.mts +25 -25
  40. package/dist/index.mjs +3 -9264
  41. package/dist/lite-CtNPRhU-.mjs +1926 -0
  42. package/dist/lite-CtNPRhU-.mjs.map +1 -0
  43. package/dist/lite-CutarzAc.cjs +2051 -0
  44. package/dist/lite-CutarzAc.cjs.map +1 -0
  45. package/dist/lite-react-1HVWJOWt.cjs +55 -0
  46. package/dist/lite-react-1HVWJOWt.cjs.map +1 -0
  47. package/dist/lite-react-Ds-DNmEi.mjs +20 -0
  48. package/dist/lite-react-Ds-DNmEi.mjs.map +1 -0
  49. package/dist/lite-react-components.cjs +12 -0
  50. package/dist/lite-react-components.cjs.map +1 -0
  51. package/dist/lite-react-components.d.cts +5 -0
  52. package/dist/lite-react-components.d.mts +5 -0
  53. package/dist/lite-react-components.mjs +11 -0
  54. package/dist/lite-react-components.mjs.map +1 -0
  55. package/dist/lite-react.cjs +8 -0
  56. package/dist/lite-react.d.cts +7 -0
  57. package/dist/lite-react.d.mts +7 -0
  58. package/dist/lite-react.mjs +2 -0
  59. package/dist/lite.cjs +28 -0
  60. package/dist/lite.d.cts +23 -0
  61. package/dist/lite.d.mts +23 -0
  62. package/dist/lite.mjs +3 -0
  63. package/dist/react-BKmJ476x.mjs +20 -0
  64. package/dist/react-BKmJ476x.mjs.map +1 -0
  65. package/dist/react-BZV3TkXB.cjs +55 -0
  66. package/dist/react-BZV3TkXB.cjs.map +1 -0
  67. package/dist/react-components.cjs +12 -0
  68. package/dist/react-components.cjs.map +1 -0
  69. package/dist/react-components.d.cts +5 -0
  70. package/dist/react-components.d.mts +5 -0
  71. package/dist/react-components.mjs +11 -0
  72. package/dist/react-components.mjs.map +1 -0
  73. package/dist/react.cjs +8 -9310
  74. package/dist/react.d.cts +7 -0
  75. package/dist/react.d.mts +7 -30
  76. package/dist/react.mjs +2 -9281
  77. package/dist/rolldown-runtime-78lK1XfQ.cjs +42 -0
  78. package/dist/rolldown-runtime-D3KUYPsf.mjs +12 -0
  79. package/dist/src-DRaUVbc4.mjs +4302 -0
  80. package/dist/src-DRaUVbc4.mjs.map +1 -0
  81. package/dist/src-mqZTwJfQ.cjs +4439 -0
  82. package/dist/src-mqZTwJfQ.cjs.map +1 -0
  83. package/dist/types/boundaries.d.ts +30 -0
  84. package/dist/types/changes.d.ts +4 -0
  85. package/dist/types/components.d.ts +47 -0
  86. package/dist/types/core.d.ts +25 -0
  87. package/dist/types/geo.d.ts +2 -0
  88. package/dist/types/hooks.d.ts +2 -0
  89. package/dist/types/index.d.ts +28 -0
  90. package/dist/types/keyboard.d.ts +3 -0
  91. package/dist/types/lite-react-components.d.ts +5 -0
  92. package/dist/types/lite-react.d.ts +7 -0
  93. package/dist/types/lite.d.ts +26 -0
  94. package/dist/types/normalize.d.ts +1 -0
  95. package/dist/types/packed.d.ts +16 -0
  96. package/dist/types/react-components.d.ts +5 -0
  97. package/dist/types/react.d.ts +7 -0
  98. package/dist/types/types.d.ts +149 -0
  99. package/dist/types/valibot.d.ts +23 -0
  100. package/dist/types/validation-shared.d.ts +11 -0
  101. package/dist/types/zod.d.ts +23 -0
  102. package/dist/types-Ds_b0yHP.d.cts +150 -0
  103. package/dist/types-Ds_b0yHP.d.mts +150 -0
  104. package/dist/valibot.cjs +47 -0
  105. package/dist/valibot.cjs.map +1 -0
  106. package/dist/valibot.d.cts +21 -0
  107. package/dist/valibot.d.mts +21 -0
  108. package/dist/valibot.mjs +38 -0
  109. package/dist/valibot.mjs.map +1 -0
  110. package/dist/validation-shared-BFilTuY1.cjs +58 -0
  111. package/dist/validation-shared-BFilTuY1.cjs.map +1 -0
  112. package/dist/validation-shared-C7l2cv4e.d.cts +8 -0
  113. package/dist/validation-shared-CJjGRx8p.d.mts +7 -0
  114. package/dist/validation-shared-mh_saZne.mjs +29 -0
  115. package/dist/validation-shared-mh_saZne.mjs.map +1 -0
  116. package/dist/zod.cjs +49 -0
  117. package/dist/zod.cjs.map +1 -0
  118. package/dist/zod.d.cts +21 -0
  119. package/dist/zod.d.mts +21 -0
  120. package/dist/zod.mjs +42 -0
  121. package/dist/zod.mjs.map +1 -0
  122. package/package.json +167 -22
  123. package/dist/index.cjs.map +0 -1
  124. package/dist/index.d.ts +0 -25
  125. package/dist/index.mjs.map +0 -1
  126. package/dist/react.cjs.map +0 -1
  127. package/dist/react.d.ts +0 -30
  128. package/dist/react.mjs.map +0 -1
  129. package/dist/types-DwK3g-Z0.d.mts +0 -53
  130. package/dist/types-DwK3g-Z0.d.ts +0 -53
@@ -0,0 +1 @@
1
+ {"version":3,"file":"boundaries.cjs","names":["data","getProvinceById"],"sources":["../src/boundaries.json","../src/boundaries.ts"],"sourcesContent":["","import data from './boundaries.json' with { type: 'json' };\r\nimport { getProvinceById } from './index';\r\nimport type { LatLng, Province, ProvinceId } from './types';\r\n\r\nexport type Position = readonly [number, number];\r\n\r\nexport interface PolygonGeometry {\r\n readonly type: 'Polygon';\r\n readonly coordinates: readonly (readonly Position[])[];\r\n}\r\n\r\nexport interface MultiPolygonGeometry {\r\n readonly type: 'MultiPolygon';\r\n readonly coordinates: readonly (readonly (readonly Position[])[])[];\r\n}\r\n\r\nexport interface ProvinceFeature {\r\n readonly type: 'Feature';\r\n readonly id: ProvinceId;\r\n readonly properties: { readonly id: ProvinceId; readonly en: string; readonly fa: string };\r\n readonly geometry: PolygonGeometry | MultiPolygonGeometry;\r\n}\r\n\r\nexport interface ProvinceBoundaries {\r\n readonly type: 'FeatureCollection';\r\n readonly features: readonly ProvinceFeature[];\r\n}\r\n\r\nexport interface ProvinceAtOptions {\r\n maxDistanceKm?: number;\r\n}\r\n\r\ntype Ring = readonly Position[];\r\n\r\ninterface IndexedFeature {\r\n id: ProvinceId;\r\n polygons: (readonly Ring[])[];\r\n minLng: number;\r\n minLat: number;\r\n maxLng: number;\r\n maxLat: number;\r\n}\r\n\r\nfunction deepFreeze<T>(value: T): T {\r\n if (value && typeof value === 'object' && !Object.isFrozen(value)) {\r\n Object.freeze(value);\r\n for (const key of Object.keys(value as object)) deepFreeze((value as Record<string, unknown>)[key]);\r\n }\r\n return value;\r\n}\r\n\r\nexport const provinceBoundaries: ProvinceBoundaries = deepFreeze(data as unknown as ProvinceBoundaries);\r\n\r\nconst KM_PER_DEGREE = 111.195;\r\n\r\nconst indexed: IndexedFeature[] = provinceBoundaries.features.map((feature) => {\r\n const polygons: (readonly Ring[])[] =\r\n feature.geometry.type === 'Polygon'\r\n ? [feature.geometry.coordinates]\r\n : feature.geometry.coordinates.map((polygon) => polygon);\r\n let minLng = Infinity;\r\n let minLat = Infinity;\r\n let maxLng = -Infinity;\r\n let maxLat = -Infinity;\r\n for (const polygon of polygons) {\r\n for (const [lng, lat] of polygon[0] ?? []) {\r\n if (lng < minLng) minLng = lng;\r\n if (lng > maxLng) maxLng = lng;\r\n if (lat < minLat) minLat = lat;\r\n if (lat > maxLat) maxLat = lat;\r\n }\r\n }\r\n return { id: feature.id, polygons, minLng, minLat, maxLng, maxLat };\r\n});\r\n\r\nfunction insideRing(lng: number, lat: number, ring: Ring): boolean {\r\n let inside = false;\r\n for (let i = 0, j = ring.length - 1; i < ring.length; j = i++) {\r\n const [xi, yi] = ring[i] as Position;\r\n const [xj, yj] = ring[j] as Position;\r\n if (yi > lat !== yj > lat && lng < ((xj - xi) * (lat - yi)) / (yj - yi) + xi) inside = !inside;\r\n }\r\n return inside;\r\n}\r\n\r\nfunction insidePolygon(lng: number, lat: number, polygon: readonly Ring[]): boolean {\r\n const outer = polygon[0];\r\n if (!outer || !insideRing(lng, lat, outer)) return false;\r\n for (let h = 1; h < polygon.length; h++) {\r\n if (insideRing(lng, lat, polygon[h] as Ring)) return false;\r\n }\r\n return true;\r\n}\r\n\r\nfunction distanceToSegmentKm(lng: number, lat: number, a: Position, b: Position): number {\r\n const kx = KM_PER_DEGREE * Math.cos((lat * Math.PI) / 180);\r\n const ky = KM_PER_DEGREE;\r\n const ax = (a[0] - lng) * kx;\r\n const ay = (a[1] - lat) * ky;\r\n const bx = (b[0] - lng) * kx;\r\n const by = (b[1] - lat) * ky;\r\n const dx = bx - ax;\r\n const dy = by - ay;\r\n const lengthSquared = dx * dx + dy * dy;\r\n const t = lengthSquared === 0 ? 0 : Math.max(0, Math.min(1, -(ax * dx + ay * dy) / lengthSquared));\r\n const px = ax + t * dx;\r\n const py = ay + t * dy;\r\n return Math.sqrt(px * px + py * py);\r\n}\r\n\r\nfunction distanceToFeatureKm(lng: number, lat: number, feature: IndexedFeature, limitKm: number): number {\r\n const marginLng = limitKm / (KM_PER_DEGREE * Math.max(0.1, Math.cos((lat * Math.PI) / 180)));\r\n const marginLat = limitKm / KM_PER_DEGREE;\r\n if (\r\n lng < feature.minLng - marginLng ||\r\n lng > feature.maxLng + marginLng ||\r\n lat < feature.minLat - marginLat ||\r\n lat > feature.maxLat + marginLat\r\n ) {\r\n return Infinity;\r\n }\r\n let best = Infinity;\r\n for (const polygon of feature.polygons) {\r\n for (const ring of polygon) {\r\n for (let i = 1; i < ring.length; i++) {\r\n const d = distanceToSegmentKm(lng, lat, ring[i - 1] as Position, ring[i] as Position);\r\n if (d < best) best = d;\r\n }\r\n }\r\n }\r\n return best;\r\n}\r\n\r\nfunction isLatLng(value: unknown): value is LatLng {\r\n return (\r\n typeof value === 'object' &&\r\n value !== null &&\r\n Number.isFinite((value as LatLng).lat) &&\r\n Number.isFinite((value as LatLng).lng)\r\n );\r\n}\r\n\r\nexport function getProvinceAt(point: LatLng, options: ProvinceAtOptions = {}): Province | undefined {\r\n if (!isLatLng(point)) return undefined;\r\n const { lat, lng } = point;\r\n for (const feature of indexed) {\r\n if (lng < feature.minLng || lng > feature.maxLng || lat < feature.minLat || lat > feature.maxLat) continue;\r\n if (feature.polygons.some((polygon) => insidePolygon(lng, lat, polygon))) return getProvinceById(feature.id);\r\n }\r\n const limitKm = typeof options.maxDistanceKm === 'number' && options.maxDistanceKm >= 0 ? options.maxDistanceKm : 5;\r\n if (limitKm === 0) return undefined;\r\n let bestId: ProvinceId | undefined;\r\n let bestDistance = limitKm;\r\n for (const feature of indexed) {\r\n const d = distanceToFeatureKm(lng, lat, feature, limitKm);\r\n if (d <= bestDistance) {\r\n bestDistance = d;\r\n bestId = feature.id;\r\n }\r\n }\r\n return bestId === undefined ? undefined : getProvinceById(bestId);\r\n}\r\n\r\nexport function getProvinceBoundary(provinceId: ProvinceId): ProvinceFeature | undefined {\r\n return provinceBoundaries.features.find((feature) => feature.id === provinceId);\r\n}\r\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AC2CA,SAAS,WAAc,OAAa;CAClC,IAAI,SAAS,OAAO,UAAU,YAAY,CAAC,OAAO,SAAS,KAAK,GAAG;EACjE,OAAO,OAAO,KAAK;EACnB,KAAK,MAAM,OAAO,OAAO,KAAK,KAAe,GAAG,WAAY,MAAkC,IAAI;CACpG;CACA,OAAO;AACT;AAEA,MAAa,qBAAyC,WAAWA,kBAAqC;AAEtG,MAAM,gBAAgB;AAEtB,MAAM,UAA4B,mBAAmB,SAAS,KAAK,YAAY;CAC7E,MAAM,WACJ,QAAQ,SAAS,SAAS,YACtB,CAAC,QAAQ,SAAS,WAAW,IAC7B,QAAQ,SAAS,YAAY,KAAK,YAAY,OAAO;CAC3D,IAAI,SAAS;CACb,IAAI,SAAS;CACb,IAAI,SAAS;CACb,IAAI,SAAS;CACb,KAAK,MAAM,WAAW,UAAU;;EAC9B,KAAK,MAAM,CAAC,KAAK,SAAA,YAAQ,QAAQ,QAAA,QAAA,cAAA,KAAA,IAAA,YAAM,CAAC,GAAG;GACzC,IAAI,MAAM,QAAQ,SAAS;GAC3B,IAAI,MAAM,QAAQ,SAAS;GAC3B,IAAI,MAAM,QAAQ,SAAS;GAC3B,IAAI,MAAM,QAAQ,SAAS;EAC7B;CACF;CACA,OAAO;EAAE,IAAI,QAAQ;EAAI;EAAU;EAAQ;EAAQ;EAAQ;CAAO;AACpE,CAAC;AAED,SAAS,WAAW,KAAa,KAAa,MAAqB;CACjE,IAAI,SAAS;CACb,KAAK,IAAI,IAAI,GAAG,IAAI,KAAK,SAAS,GAAG,IAAI,KAAK,QAAQ,IAAI,KAAK;EAC7D,MAAM,CAAC,IAAI,MAAM,KAAK;EACtB,MAAM,CAAC,IAAI,MAAM,KAAK;EACtB,IAAI,KAAK,QAAQ,KAAK,OAAO,OAAQ,KAAK,OAAO,MAAM,OAAQ,KAAK,MAAM,IAAI,SAAS,CAAC;CAC1F;CACA,OAAO;AACT;AAEA,SAAS,cAAc,KAAa,KAAa,SAAmC;CAClF,MAAM,QAAQ,QAAQ;CACtB,IAAI,CAAC,SAAS,CAAC,WAAW,KAAK,KAAK,KAAK,GAAG,OAAO;CACnD,KAAK,IAAI,IAAI,GAAG,IAAI,QAAQ,QAAQ,KAClC,IAAI,WAAW,KAAK,KAAK,QAAQ,EAAU,GAAG,OAAO;CAEvD,OAAO;AACT;AAEA,SAAS,oBAAoB,KAAa,KAAa,GAAa,GAAqB;CACvF,MAAM,KAAK,gBAAgB,KAAK,IAAK,MAAM,KAAK,KAAM,GAAG;CACzD,MAAM,KAAK;CACX,MAAM,MAAM,EAAE,KAAK,OAAO;CAC1B,MAAM,MAAM,EAAE,KAAK,OAAO;CAC1B,MAAM,MAAM,EAAE,KAAK,OAAO;CAC1B,MAAM,MAAM,EAAE,KAAK,OAAO;CAC1B,MAAM,KAAK,KAAK;CAChB,MAAM,KAAK,KAAK;CAChB,MAAM,gBAAgB,KAAK,KAAK,KAAK;CACrC,MAAM,IAAI,kBAAkB,IAAI,IAAI,KAAK,IAAI,GAAG,KAAK,IAAI,GAAG,EAAE,KAAK,KAAK,KAAK,MAAM,aAAa,CAAC;CACjG,MAAM,KAAK,KAAK,IAAI;CACpB,MAAM,KAAK,KAAK,IAAI;CACpB,OAAO,KAAK,KAAK,KAAK,KAAK,KAAK,EAAE;AACpC;AAEA,SAAS,oBAAoB,KAAa,KAAa,SAAyB,SAAyB;CACvG,MAAM,YAAY,WAAW,gBAAgB,KAAK,IAAI,IAAK,KAAK,IAAK,MAAM,KAAK,KAAM,GAAG,CAAC;CAC1F,MAAM,YAAY,UAAU;CAC5B,IACE,MAAM,QAAQ,SAAS,aACvB,MAAM,QAAQ,SAAS,aACvB,MAAM,QAAQ,SAAS,aACvB,MAAM,QAAQ,SAAS,WAEvB,OAAO;CAET,IAAI,OAAO;CACX,KAAK,MAAM,WAAW,QAAQ,UAC5B,KAAK,MAAM,QAAQ,SACjB,KAAK,IAAI,IAAI,GAAG,IAAI,KAAK,QAAQ,KAAK;EACpC,MAAM,IAAI,oBAAoB,KAAK,KAAK,KAAK,IAAI,IAAgB,KAAK,EAAc;EACpF,IAAI,IAAI,MAAM,OAAO;CACvB;CAGJ,OAAO;AACT;AAEA,SAAS,SAAS,OAAiC;CACjD,OACE,OAAO,UAAU,YACjB,UAAU,QACV,OAAO,SAAU,MAAiB,GAAG,KACrC,OAAO,SAAU,MAAiB,GAAG;AAEzC;AAEA,SAAgB,cAAc,OAAe,UAA6B,CAAC,GAAyB;CAClG,IAAI,CAAC,SAAS,KAAK,GAAG,OAAO,KAAA;CAC7B,MAAM,EAAE,KAAK,QAAQ;CACrB,KAAK,MAAM,WAAW,SAAS;EAC7B,IAAI,MAAM,QAAQ,UAAU,MAAM,QAAQ,UAAU,MAAM,QAAQ,UAAU,MAAM,QAAQ,QAAQ;EAClG,IAAI,QAAQ,SAAS,MAAM,YAAY,cAAc,KAAK,KAAK,OAAO,CAAC,GAAG,OAAOC,YAAAA,gBAAgB,QAAQ,EAAE;CAC7G;CACA,MAAM,UAAU,OAAO,QAAQ,kBAAkB,YAAY,QAAQ,iBAAiB,IAAI,QAAQ,gBAAgB;CAClH,IAAI,YAAY,GAAG,OAAO,KAAA;CAC1B,IAAI;CACJ,IAAI,eAAe;CACnB,KAAK,MAAM,WAAW,SAAS;EAC7B,MAAM,IAAI,oBAAoB,KAAK,KAAK,SAAS,OAAO;EACxD,IAAI,KAAK,cAAc;GACrB,eAAe;GACf,SAAS,QAAQ;EACnB;CACF;CACA,OAAO,WAAW,KAAA,IAAY,KAAA,IAAYA,YAAAA,gBAAgB,MAAM;AAClE;AAEA,SAAgB,oBAAoB,YAAqD;CACvF,OAAO,mBAAmB,SAAS,MAAM,YAAY,QAAQ,OAAO,UAAU;AAChF"}
@@ -0,0 +1,30 @@
1
+ import { b as ProvinceId, f as LatLng, g as Province } from "./types-Ds_b0yHP.cjs";
2
+ export type Position = readonly [number, number];
3
+ export interface PolygonGeometry {
4
+ readonly type: "Polygon";
5
+ readonly coordinates: readonly (readonly Position[])[];
6
+ }
7
+ export interface MultiPolygonGeometry {
8
+ readonly type: "MultiPolygon";
9
+ readonly coordinates: readonly (readonly (readonly Position[])[])[];
10
+ }
11
+ export interface ProvinceFeature {
12
+ readonly type: "Feature";
13
+ readonly id: ProvinceId;
14
+ readonly properties: {
15
+ readonly id: ProvinceId;
16
+ readonly en: string;
17
+ readonly fa: string;
18
+ };
19
+ readonly geometry: PolygonGeometry | MultiPolygonGeometry;
20
+ }
21
+ export interface ProvinceBoundaries {
22
+ readonly type: "FeatureCollection";
23
+ readonly features: readonly ProvinceFeature[];
24
+ }
25
+ export interface ProvinceAtOptions {
26
+ maxDistanceKm?: number;
27
+ }
28
+ export declare const provinceBoundaries: ProvinceBoundaries;
29
+ export declare function getProvinceAt(point: LatLng, options?: ProvinceAtOptions): Province | undefined;
30
+ export declare function getProvinceBoundary(provinceId: ProvinceId): ProvinceFeature | undefined;
@@ -0,0 +1,30 @@
1
+ import { b as ProvinceId, f as LatLng, g as Province } from "./types-Ds_b0yHP.mjs";
2
+ export type Position = readonly [number, number];
3
+ export interface PolygonGeometry {
4
+ readonly type: "Polygon";
5
+ readonly coordinates: readonly (readonly Position[])[];
6
+ }
7
+ export interface MultiPolygonGeometry {
8
+ readonly type: "MultiPolygon";
9
+ readonly coordinates: readonly (readonly (readonly Position[])[])[];
10
+ }
11
+ export interface ProvinceFeature {
12
+ readonly type: "Feature";
13
+ readonly id: ProvinceId;
14
+ readonly properties: {
15
+ readonly id: ProvinceId;
16
+ readonly en: string;
17
+ readonly fa: string;
18
+ };
19
+ readonly geometry: PolygonGeometry | MultiPolygonGeometry;
20
+ }
21
+ export interface ProvinceBoundaries {
22
+ readonly type: "FeatureCollection";
23
+ readonly features: readonly ProvinceFeature[];
24
+ }
25
+ export interface ProvinceAtOptions {
26
+ maxDistanceKm?: number;
27
+ }
28
+ export declare const provinceBoundaries: ProvinceBoundaries;
29
+ export declare function getProvinceAt(point: LatLng, options?: ProvinceAtOptions): Province | undefined;
30
+ export declare function getProvinceBoundary(provinceId: ProvinceId): ProvinceFeature | undefined;