@longline/aqua-ui 1.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 (410) hide show
  1. package/README.md +7 -0
  2. package/Types.d.ts +6 -0
  3. package/Types.js +5 -0
  4. package/containers/Anchor/Anchor.d.ts +63 -0
  5. package/containers/Anchor/Anchor.js +113 -0
  6. package/containers/Anchor/index.d.ts +1 -0
  7. package/containers/Anchor/index.js +1 -0
  8. package/containers/Dock/Dock.d.ts +45 -0
  9. package/containers/Dock/Dock.js +61 -0
  10. package/containers/Dock/Dockable.d.ts +60 -0
  11. package/containers/Dock/Dockable.js +98 -0
  12. package/containers/Dock/index.d.ts +2 -0
  13. package/containers/Dock/index.js +2 -0
  14. package/containers/Form/Field.d.ts +104 -0
  15. package/containers/Form/Field.js +168 -0
  16. package/containers/Form/Form.d.ts +51 -0
  17. package/containers/Form/Form.js +89 -0
  18. package/containers/Form/Validation.d.ts +212 -0
  19. package/containers/Form/Validation.js +232 -0
  20. package/containers/Form/context/FormContext.d.ts +10 -0
  21. package/containers/Form/context/FormContext.js +3 -0
  22. package/containers/Form/context/useForm.d.ts +5 -0
  23. package/containers/Form/context/useForm.js +9 -0
  24. package/containers/Form/elements/BoxWrapper.d.ts +15 -0
  25. package/containers/Form/elements/BoxWrapper.js +35 -0
  26. package/containers/Form/elements/Hint.d.ts +21 -0
  27. package/containers/Form/elements/Hint.js +15 -0
  28. package/containers/Form/elements/Label.d.ts +22 -0
  29. package/containers/Form/elements/Label.js +15 -0
  30. package/containers/Form/elements/SimpleWrapper.d.ts +15 -0
  31. package/containers/Form/elements/SimpleWrapper.js +17 -0
  32. package/containers/GlassPane/GlassPane.d.ts +36 -0
  33. package/containers/GlassPane/GlassPane.js +66 -0
  34. package/containers/GlassPane/index.d.ts +1 -0
  35. package/containers/GlassPane/index.js +1 -0
  36. package/containers/InfoBox/InfoBox.d.ts +34 -0
  37. package/containers/InfoBox/InfoBox.js +45 -0
  38. package/containers/InfoBox/elements/Content.d.ts +23 -0
  39. package/containers/InfoBox/elements/Content.js +37 -0
  40. package/containers/InfoBox/elements/Footer.d.ts +9 -0
  41. package/containers/InfoBox/elements/Footer.js +24 -0
  42. package/containers/InfoBox/elements/Header.d.ts +9 -0
  43. package/containers/InfoBox/elements/Header.js +24 -0
  44. package/containers/List/List.d.ts +45 -0
  45. package/containers/List/List.js +47 -0
  46. package/containers/List/ListCell.d.ts +13 -0
  47. package/containers/List/ListCell.js +24 -0
  48. package/containers/List/ListRow.d.ts +15 -0
  49. package/containers/List/ListRow.js +24 -0
  50. package/containers/List/index.d.ts +3 -0
  51. package/containers/List/index.js +3 -0
  52. package/containers/Tabs/Pane.d.ts +29 -0
  53. package/containers/Tabs/Pane.js +45 -0
  54. package/containers/Tabs/Tabs.d.ts +66 -0
  55. package/containers/Tabs/Tabs.js +144 -0
  56. package/controls/Chip/Chip.d.ts +35 -0
  57. package/controls/Chip/Chip.js +83 -0
  58. package/controls/Fab/Fab.d.ts +73 -0
  59. package/controls/Fab/Fab.js +94 -0
  60. package/controls/Icon/Icon.d.ts +98 -0
  61. package/controls/Icon/Icon.js +79 -0
  62. package/controls/Icon/index.d.ts +1 -0
  63. package/controls/Icon/index.js +1 -0
  64. package/controls/Key/Key.d.ts +22 -0
  65. package/controls/Key/Key.js +74 -0
  66. package/controls/Key/index.d.ts +1 -0
  67. package/controls/Key/index.js +1 -0
  68. package/controls/LinearChart/LinearChart.d.ts +31 -0
  69. package/controls/LinearChart/LinearChart.js +58 -0
  70. package/controls/ListView/Body.d.ts +8 -0
  71. package/controls/ListView/Body.js +24 -0
  72. package/controls/ListView/Column.d.ts +55 -0
  73. package/controls/ListView/Column.js +8 -0
  74. package/controls/ListView/ColumnsManager/ColumnDraggable.d.ts +11 -0
  75. package/controls/ListView/ColumnsManager/ColumnDraggable.js +83 -0
  76. package/controls/ListView/ColumnsManager/ColumnsManager.d.ts +12 -0
  77. package/controls/ListView/ColumnsManager/ColumnsManager.js +63 -0
  78. package/controls/ListView/ColumnsManager/OrderColumns.d.ts +11 -0
  79. package/controls/ListView/ColumnsManager/OrderColumns.js +62 -0
  80. package/controls/ListView/ColumnsManager/SourceColumns.d.ts +10 -0
  81. package/controls/ListView/ColumnsManager/SourceColumns.js +45 -0
  82. package/controls/ListView/Ghost.d.ts +9 -0
  83. package/controls/ListView/Ghost.js +52 -0
  84. package/controls/ListView/Header.d.ts +12 -0
  85. package/controls/ListView/Header.js +35 -0
  86. package/controls/ListView/HeaderButton.d.ts +8 -0
  87. package/controls/ListView/HeaderButton.js +8 -0
  88. package/controls/ListView/HeaderCell.d.ts +20 -0
  89. package/controls/ListView/HeaderCell.js +47 -0
  90. package/controls/ListView/IListViewProps.d.ts +105 -0
  91. package/controls/ListView/IListViewProps.js +1 -0
  92. package/controls/ListView/ListView.d.ts +20 -0
  93. package/controls/ListView/ListView.js +97 -0
  94. package/controls/ListView/NoData.d.ts +19 -0
  95. package/controls/ListView/NoData.js +30 -0
  96. package/controls/ListView/SortButton.d.ts +16 -0
  97. package/controls/ListView/SortButton.js +26 -0
  98. package/controls/ListView/Table.d.ts +18 -0
  99. package/controls/ListView/Table.js +99 -0
  100. package/controls/ListView/Total.d.ts +9 -0
  101. package/controls/ListView/Total.js +28 -0
  102. package/controls/ListView/sortItems.d.ts +6 -0
  103. package/controls/ListView/sortItems.js +35 -0
  104. package/controls/Mouse/Mouse.d.ts +38 -0
  105. package/controls/Mouse/Mouse.js +51 -0
  106. package/controls/Mouse/index.d.ts +1 -0
  107. package/controls/Mouse/index.js +1 -0
  108. package/controls/PrimaryButton/PrimaryButton.d.ts +63 -0
  109. package/controls/PrimaryButton/PrimaryButton.js +83 -0
  110. package/controls/PrimaryButton/index.d.ts +1 -0
  111. package/controls/PrimaryButton/index.js +1 -0
  112. package/controls/Progress/Progress.d.ts +35 -0
  113. package/controls/Progress/Progress.js +49 -0
  114. package/controls/SecondaryButton/SecondaryButton.d.ts +58 -0
  115. package/controls/SecondaryButton/SecondaryButton.js +73 -0
  116. package/controls/SecondaryButton/index.d.ts +1 -0
  117. package/controls/SecondaryButton/index.js +1 -0
  118. package/controls/TabBar/Tab.d.ts +21 -0
  119. package/controls/TabBar/Tab.js +25 -0
  120. package/controls/TabBar/TabBar.d.ts +34 -0
  121. package/controls/TabBar/TabBar.js +134 -0
  122. package/controls/TabBar/Underliner.d.ts +7 -0
  123. package/controls/TabBar/Underliner.js +27 -0
  124. package/controls/TabBar/index.d.ts +1 -0
  125. package/controls/TabBar/index.js +1 -0
  126. package/controls/TertiaryButton/TertiaryButton.d.ts +28 -0
  127. package/controls/TertiaryButton/TertiaryButton.js +65 -0
  128. package/controls/TertiaryButton/index.d.ts +1 -0
  129. package/controls/TertiaryButton/index.js +1 -0
  130. package/controls/View/View.d.ts +35 -0
  131. package/controls/View/View.js +58 -0
  132. package/formatters/Date/DateTime.d.ts +45 -0
  133. package/formatters/Date/DateTime.js +64 -0
  134. package/formatters/Date/elements/Custom.d.ts +18 -0
  135. package/formatters/Date/elements/Custom.js +22 -0
  136. package/formatters/Date/elements/Distance.d.ts +24 -0
  137. package/formatters/Date/elements/Distance.js +45 -0
  138. package/formatters/Date/elements/LongDate.d.ts +17 -0
  139. package/formatters/Date/elements/LongDate.js +11 -0
  140. package/formatters/Date/elements/LongDateTime.d.ts +14 -0
  141. package/formatters/Date/elements/LongDateTime.js +10 -0
  142. package/formatters/Date/elements/LongTime.d.ts +14 -0
  143. package/formatters/Date/elements/LongTime.js +10 -0
  144. package/formatters/Date/elements/ShortDate.d.ts +14 -0
  145. package/formatters/Date/elements/ShortDate.js +10 -0
  146. package/formatters/Date/elements/ShortDateTime.d.ts +14 -0
  147. package/formatters/Date/elements/ShortDateTime.js +10 -0
  148. package/formatters/Date/elements/ShortTime.d.ts +18 -0
  149. package/formatters/Date/elements/ShortTime.js +10 -0
  150. package/formatters/Date/elements/toDate.d.ts +2 -0
  151. package/formatters/Date/elements/toDate.js +13 -0
  152. package/formatters/Filesize/Filesize.d.ts +29 -0
  153. package/formatters/Filesize/Filesize.js +54 -0
  154. package/formatters/GIS/Latitude.d.ts +23 -0
  155. package/formatters/GIS/Latitude.js +13 -0
  156. package/formatters/GIS/Longitude.d.ts +23 -0
  157. package/formatters/GIS/Longitude.js +13 -0
  158. package/formatters/GIS/index.d.ts +2 -0
  159. package/formatters/GIS/index.js +2 -0
  160. package/formatters/GIS/toDMS.d.ts +2 -0
  161. package/formatters/GIS/toDMS.js +16 -0
  162. package/formatters/Highlight/Highlight.d.ts +22 -0
  163. package/formatters/Highlight/Highlight.js +32 -0
  164. package/formatters/Highlight/index.d.ts +1 -0
  165. package/formatters/Highlight/index.js +1 -0
  166. package/formatters/Human/Human.d.ts +18 -0
  167. package/formatters/Human/Human.js +34 -0
  168. package/formatters/Human/index.d.ts +1 -0
  169. package/formatters/Human/index.js +1 -0
  170. package/formatters/Number/Number.d.ts +24 -0
  171. package/formatters/Number/Number.js +36 -0
  172. package/formatters/Number/index.d.ts +1 -0
  173. package/formatters/Number/index.js +1 -0
  174. package/helper/DMS.d.ts +22 -0
  175. package/helper/DMS.js +46 -0
  176. package/helper/HslColor.d.ts +11 -0
  177. package/helper/HslColor.js +47 -0
  178. package/helper/RgbColor.d.ts +43 -0
  179. package/helper/RgbColor.js +162 -0
  180. package/helper/SizeHelper.d.ts +10 -0
  181. package/helper/SizeHelper.js +56 -0
  182. package/helper/darken.d.ts +8 -0
  183. package/helper/darken.js +18 -0
  184. package/helper/guard.d.ts +5 -0
  185. package/helper/guard.js +7 -0
  186. package/helper/lighten.d.ts +8 -0
  187. package/helper/lighten.js +11 -0
  188. package/helper/nameToHex.d.ts +6 -0
  189. package/helper/nameToHex.js +163 -0
  190. package/inputs/DateInput/Body.d.ts +34 -0
  191. package/inputs/DateInput/Body.js +50 -0
  192. package/inputs/DateInput/Calendar.d.ts +15 -0
  193. package/inputs/DateInput/Calendar.js +60 -0
  194. package/inputs/DateInput/DateInput.d.ts +73 -0
  195. package/inputs/DateInput/DateInput.js +143 -0
  196. package/inputs/DateInput/Day.d.ts +32 -0
  197. package/inputs/DateInput/Day.js +33 -0
  198. package/inputs/DateInput/InfiniteList.d.ts +26 -0
  199. package/inputs/DateInput/InfiniteList.js +87 -0
  200. package/inputs/DateInput/Nav.d.ts +11 -0
  201. package/inputs/DateInput/Nav.js +24 -0
  202. package/inputs/DateInput/Navbar.d.ts +16 -0
  203. package/inputs/DateInput/Navbar.js +33 -0
  204. package/inputs/DateInput/NumericInput.d.ts +14 -0
  205. package/inputs/DateInput/NumericInput.js +48 -0
  206. package/inputs/DateInput/Selector.d.ts +47 -0
  207. package/inputs/DateInput/Selector.js +55 -0
  208. package/inputs/DateInput/SimpleList.d.ts +19 -0
  209. package/inputs/DateInput/SimpleList.js +31 -0
  210. package/inputs/Dropdown/Body.d.ts +25 -0
  211. package/inputs/Dropdown/Body.js +14 -0
  212. package/inputs/Dropdown/Column.d.ts +21 -0
  213. package/inputs/Dropdown/Column.js +6 -0
  214. package/inputs/Dropdown/Dropdown.d.ts +136 -0
  215. package/inputs/Dropdown/Dropdown.js +446 -0
  216. package/inputs/Dropdown/Selection.d.ts +11 -0
  217. package/inputs/Dropdown/Selection.js +23 -0
  218. package/inputs/Dropdown/Selector.d.ts +29 -0
  219. package/inputs/Dropdown/Selector.js +16 -0
  220. package/inputs/Editor/Editor.d.ts +45 -0
  221. package/inputs/Editor/Editor.js +60 -0
  222. package/inputs/Editor/buttons/BoldButton.d.ts +7 -0
  223. package/inputs/Editor/buttons/BoldButton.js +7 -0
  224. package/inputs/Editor/buttons/BulletListButton.d.ts +7 -0
  225. package/inputs/Editor/buttons/BulletListButton.js +7 -0
  226. package/inputs/Editor/buttons/CodeBlockButton.d.ts +7 -0
  227. package/inputs/Editor/buttons/CodeBlockButton.js +7 -0
  228. package/inputs/Editor/buttons/CodeButton.d.ts +7 -0
  229. package/inputs/Editor/buttons/CodeButton.js +7 -0
  230. package/inputs/Editor/buttons/ItalicButton.d.ts +7 -0
  231. package/inputs/Editor/buttons/ItalicButton.js +7 -0
  232. package/inputs/Editor/buttons/OrderedListButton.d.ts +7 -0
  233. package/inputs/Editor/buttons/OrderedListButton.js +7 -0
  234. package/inputs/Editor/buttons/StrikethroughButton.d.ts +7 -0
  235. package/inputs/Editor/buttons/StrikethroughButton.js +7 -0
  236. package/inputs/Editor/menu/MenuBar.d.ts +9 -0
  237. package/inputs/Editor/menu/MenuBar.js +44 -0
  238. package/inputs/Editor/menu/MenuButton.d.ts +35 -0
  239. package/inputs/Editor/menu/MenuButton.js +34 -0
  240. package/inputs/Editor/menu/MenuSeparator.d.ts +7 -0
  241. package/inputs/Editor/menu/MenuSeparator.js +24 -0
  242. package/inputs/Input/Clear.d.ts +7 -0
  243. package/inputs/Input/Clear.js +14 -0
  244. package/inputs/Input/Input.d.ts +133 -0
  245. package/inputs/Input/Input.js +64 -0
  246. package/inputs/Input/InputWrapper.d.ts +23 -0
  247. package/inputs/Input/InputWrapper.js +57 -0
  248. package/inputs/Input/index.d.ts +1 -0
  249. package/inputs/Input/index.js +1 -0
  250. package/inputs/Selector/ISelectorProps.d.ts +29 -0
  251. package/inputs/Selector/ISelectorProps.js +1 -0
  252. package/inputs/Selector/Selector.d.ts +29 -0
  253. package/inputs/Selector/Selector.js +77 -0
  254. package/inputs/Selector/index.d.ts +1 -0
  255. package/inputs/Selector/index.js +1 -0
  256. package/inputs/Selector/widgets/Checkbox.d.ts +6 -0
  257. package/inputs/Selector/widgets/Checkbox.js +29 -0
  258. package/inputs/Selector/widgets/Toggle.d.ts +6 -0
  259. package/inputs/Selector/widgets/Toggle.js +24 -0
  260. package/inputs/Slider/Slider.d.ts +63 -0
  261. package/inputs/Slider/Slider.js +198 -0
  262. package/inputs/Textarea/Textarea.d.ts +79 -0
  263. package/inputs/Textarea/Textarea.js +65 -0
  264. package/main.js +32 -0
  265. package/map/Map/Map.d.ts +47 -0
  266. package/map/Map/Map.js +221 -0
  267. package/map/Map/index.d.ts +1 -0
  268. package/map/Map/index.js +1 -0
  269. package/map/PositionsManager/PositionBox.d.ts +14 -0
  270. package/map/PositionsManager/PositionBox.js +86 -0
  271. package/map/PositionsManager/PositionsManager.d.ts +27 -0
  272. package/map/PositionsManager/PositionsManager.js +99 -0
  273. package/map/controls/CompassButton/CompassButton.d.ts +33 -0
  274. package/map/controls/CompassButton/CompassButton.js +88 -0
  275. package/map/controls/FullscreenButton/FullscreenButton.d.ts +21 -0
  276. package/map/controls/FullscreenButton/FullscreenButton.js +62 -0
  277. package/map/controls/Geocoder/Geocoder.d.ts +49 -0
  278. package/map/controls/Geocoder/Geocoder.js +179 -0
  279. package/map/controls/Geocoder/GeocoderApi.d.ts +59 -0
  280. package/map/controls/Geocoder/GeocoderApi.js +68 -0
  281. package/map/controls/Geocoder/GeocoderEntry.d.ts +15 -0
  282. package/map/controls/Geocoder/GeocoderEntry.js +18 -0
  283. package/map/controls/Geocoder/GeocoderList.d.ts +10 -0
  284. package/map/controls/Geocoder/GeocoderList.js +18 -0
  285. package/map/controls/Geocoder/GeocoderSelector.d.ts +16 -0
  286. package/map/controls/Geocoder/GeocoderSelector.js +25 -0
  287. package/map/controls/Graticule/Graticule.d.ts +35 -0
  288. package/map/controls/Graticule/Graticule.js +142 -0
  289. package/map/controls/MapLoader/MapLoader.d.ts +33 -0
  290. package/map/controls/MapLoader/MapLoader.js +73 -0
  291. package/map/controls/ScaleControl/ScaleControl.d.ts +24 -0
  292. package/map/controls/ScaleControl/ScaleControl.js +107 -0
  293. package/map/controls/ZoomInButton/ZoomInButton.d.ts +19 -0
  294. package/map/controls/ZoomInButton/ZoomInButton.js +56 -0
  295. package/map/controls/ZoomOutButton/ZoomOutButton.d.ts +19 -0
  296. package/map/controls/ZoomOutButton/ZoomOutButton.js +56 -0
  297. package/map/controls/base/MapButton/Hint.d.ts +17 -0
  298. package/map/controls/base/MapButton/Hint.js +34 -0
  299. package/map/controls/base/MapButton/MapButton.d.ts +46 -0
  300. package/map/controls/base/MapButton/MapButton.js +71 -0
  301. package/map/controls/base/MapButton/index.d.ts +1 -0
  302. package/map/controls/base/MapButton/index.js +1 -0
  303. package/map/controls/base/MapButtonGroup/MapButtonGroup.d.ts +17 -0
  304. package/map/controls/base/MapButtonGroup/MapButtonGroup.js +24 -0
  305. package/map/controls/base/MapControl/MapControl.d.ts +36 -0
  306. package/map/controls/base/MapControl/MapControl.js +77 -0
  307. package/map/controls/base/MapControl/index.d.ts +1 -0
  308. package/map/controls/base/MapControl/index.js +1 -0
  309. package/map/layers/ClusterLayer/ClusterLayer.d.ts +79 -0
  310. package/map/layers/ClusterLayer/ClusterLayer.js +118 -0
  311. package/map/layers/HtmlMarkerLayer/HtmlMarkerLayer.d.ts +51 -0
  312. package/map/layers/HtmlMarkerLayer/HtmlMarkerLayer.js +151 -0
  313. package/map/layers/InterpolationLayer/ContoursFragmentShader.d.ts +2 -0
  314. package/map/layers/InterpolationLayer/ContoursFragmentShader.js +2 -0
  315. package/map/layers/InterpolationLayer/ContoursVertexShader.d.ts +2 -0
  316. package/map/layers/InterpolationLayer/ContoursVertexShader.js +2 -0
  317. package/map/layers/InterpolationLayer/IGradientStop.d.ts +5 -0
  318. package/map/layers/InterpolationLayer/IGradientStop.js +1 -0
  319. package/map/layers/InterpolationLayer/InterpolationLayer.d.ts +35 -0
  320. package/map/layers/InterpolationLayer/InterpolationLayer.js +256 -0
  321. package/map/layers/InterpolationLayer/LevelsFragmentShader.d.ts +2 -0
  322. package/map/layers/InterpolationLayer/LevelsFragmentShader.js +2 -0
  323. package/map/layers/InterpolationLayer/LevelsVertexShader.d.ts +2 -0
  324. package/map/layers/InterpolationLayer/LevelsVertexShader.js +2 -0
  325. package/map/layers/ParticlesLayer/ParticlesFragmentShader.d.ts +2 -0
  326. package/map/layers/ParticlesLayer/ParticlesFragmentShader.js +2 -0
  327. package/map/layers/ParticlesLayer/ParticlesLayer.d.ts +40 -0
  328. package/map/layers/ParticlesLayer/ParticlesLayer.js +337 -0
  329. package/map/layers/ParticlesLayer/ParticlesVertexShader.d.ts +2 -0
  330. package/map/layers/ParticlesLayer/ParticlesVertexShader.js +2 -0
  331. package/map/layers/ParticlesLayer/UVFragmentShader.d.ts +2 -0
  332. package/map/layers/ParticlesLayer/UVFragmentShader.js +2 -0
  333. package/map/layers/ParticlesLayer/UVVertexShader.d.ts +2 -0
  334. package/map/layers/ParticlesLayer/UVVertexShader.js +2 -0
  335. package/map/markers/ClusterMarker/ClusterMarker.d.ts +36 -0
  336. package/map/markers/ClusterMarker/ClusterMarker.js +99 -0
  337. package/map/markers/ClusterMarker/index.d.ts +1 -0
  338. package/map/markers/ClusterMarker/index.js +1 -0
  339. package/map/markers/RiskMarker/RiskMarker.d.ts +22 -0
  340. package/map/markers/RiskMarker/RiskMarker.js +61 -0
  341. package/modules/MainMenu/Item.d.ts +42 -0
  342. package/modules/MainMenu/Item.js +94 -0
  343. package/modules/MainMenu/MainMenu.d.ts +20 -0
  344. package/modules/MainMenu/MainMenu.js +41 -0
  345. package/modules/MainMenu/index.d.ts +1 -0
  346. package/modules/MainMenu/index.js +1 -0
  347. package/modules/Root/Content.d.ts +16 -0
  348. package/modules/Root/Content.js +25 -0
  349. package/modules/Root/Overlay.d.ts +23 -0
  350. package/modules/Root/Overlay.js +33 -0
  351. package/modules/Root/Root.d.ts +7 -0
  352. package/modules/Root/Root.js +45 -0
  353. package/modules/Root/Shader.d.ts +15 -0
  354. package/modules/Root/Shader.js +24 -0
  355. package/modules/Root/Sidebar.d.ts +13 -0
  356. package/modules/Root/Sidebar.js +24 -0
  357. package/modules/Root/stories/SampleContent.d.ts +7 -0
  358. package/modules/Root/stories/SampleContent.js +44 -0
  359. package/package.json +64 -0
  360. package/services/Dialog/AlertDialog.d.ts +31 -0
  361. package/services/Dialog/AlertDialog.js +29 -0
  362. package/services/Dialog/ConfirmDialog.d.ts +34 -0
  363. package/services/Dialog/ConfirmDialog.js +30 -0
  364. package/services/Dialog/Dialog.d.ts +91 -0
  365. package/services/Dialog/Dialog.js +92 -0
  366. package/services/Dialog/DialogBackground.d.ts +7 -0
  367. package/services/Dialog/DialogBackground.js +12 -0
  368. package/services/Dialog/DialogContent.d.ts +25 -0
  369. package/services/Dialog/DialogContent.js +38 -0
  370. package/services/Dialog/DialogFooter.d.ts +24 -0
  371. package/services/Dialog/DialogFooter.js +50 -0
  372. package/services/Dialog/DialogHeader.d.ts +18 -0
  373. package/services/Dialog/DialogHeader.js +36 -0
  374. package/services/Dialog/DialogWindow.d.ts +13 -0
  375. package/services/Dialog/DialogWindow.js +12 -0
  376. package/services/Dialog/XhrDialog.d.ts +34 -0
  377. package/services/Dialog/XhrDialog.js +321 -0
  378. package/services/Toast/IToastMessage.d.ts +10 -0
  379. package/services/Toast/IToastMessage.js +1 -0
  380. package/services/Toast/IToastProps.d.ts +23 -0
  381. package/services/Toast/IToastProps.js +1 -0
  382. package/services/Toast/Toast.d.ts +21 -0
  383. package/services/Toast/Toast.js +79 -0
  384. package/services/Toast/ToastContainer.d.ts +40 -0
  385. package/services/Toast/ToastContainer.js +65 -0
  386. package/services/Toast/ToastContext.d.ts +22 -0
  387. package/services/Toast/ToastContext.js +7 -0
  388. package/services/Toast/ToastProvider.d.ts +19 -0
  389. package/services/Toast/ToastProvider.js +67 -0
  390. package/services/Toast/index.d.ts +2 -0
  391. package/services/Toast/index.js +2 -0
  392. package/services/Toast/useToast.d.ts +5 -0
  393. package/services/Toast/useToast.js +9 -0
  394. package/spritemap.svg +1 -0
  395. package/styles/NormalTheme.d.ts +3 -0
  396. package/styles/NormalTheme.js +65 -0
  397. package/styles/StyleBase.d.ts +2 -0
  398. package/styles/StyleBase.js +8 -0
  399. package/styles/StyleReset.d.ts +2 -0
  400. package/styles/StyleReset.js +8 -0
  401. package/svg/editor/index.d.ts +10 -0
  402. package/svg/editor/index.js +11 -0
  403. package/svg/file/index.d.ts +5 -0
  404. package/svg/file/index.js +6 -0
  405. package/svg/icons/index.d.ts +36 -0
  406. package/svg/icons/index.js +37 -0
  407. package/svg/index.d.ts +11 -0
  408. package/svg/index.js +5 -0
  409. package/svg/menu/index.d.ts +8 -0
  410. package/svg/menu/index.js +9 -0
@@ -0,0 +1,46 @@
1
+ import * as React from 'react';
2
+ import { IMapControlProps } from '../MapControl';
3
+ interface IMapButtonProps extends IMapControlProps {
4
+ /**
5
+ * Is the button currently active?
6
+ * @default false*
7
+ */
8
+ active?: boolean;
9
+ /**
10
+ * Is the button currently disabled?
11
+ * @default false
12
+ */
13
+ disabled?: boolean;
14
+ /**
15
+ * Optional hint to show on hover. This can be JSX. No hint is shown if this value is `null`.
16
+ */
17
+ hint?: React.ReactNode;
18
+ /**
19
+ * Button size in pixels.
20
+ * @defaultValue 32
21
+ */
22
+ size?: number;
23
+ /**
24
+ * Is this button grouped with siblings? This is the case when it is inside a `MapButtonGroup`.
25
+ */
26
+ grouped?: boolean;
27
+ }
28
+ interface IProps {
29
+ /** @ignore */
30
+ className?: string;
31
+ /** @ignore */
32
+ children?: React.ReactNode;
33
+ /**
34
+ * Fired when the map button is clicked.
35
+ */
36
+ onClick: () => void;
37
+ }
38
+ /**
39
+ * A `MapButton` is a square button to be used on a Mapbox map. It must
40
+ * be provided with the `ViewState` by the underlying `Map`.
41
+ *
42
+ * This component is **abstract**: the button has no content by itself,
43
+ * which must be provided by its child.
44
+ */
45
+ declare const MapButton: ({ size, disabled, active, grouped, ...props }: IProps & IMapButtonProps) => React.JSX.Element;
46
+ export { MapButton, IMapButtonProps, IProps };
@@ -0,0 +1,71 @@
1
+ var __makeTemplateObject = (this && this.__makeTemplateObject) || function (cooked, raw) {
2
+ if (Object.defineProperty) { Object.defineProperty(cooked, "raw", { value: raw }); } else { cooked.raw = raw; }
3
+ return cooked;
4
+ };
5
+ var __assign = (this && this.__assign) || function () {
6
+ __assign = Object.assign || function(t) {
7
+ for (var s, i = 1, n = arguments.length; i < n; i++) {
8
+ s = arguments[i];
9
+ for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))
10
+ t[p] = s[p];
11
+ }
12
+ return t;
13
+ };
14
+ return __assign.apply(this, arguments);
15
+ };
16
+ var __rest = (this && this.__rest) || function (s, e) {
17
+ var t = {};
18
+ for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)
19
+ t[p] = s[p];
20
+ if (s != null && typeof Object.getOwnPropertySymbols === "function")
21
+ for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {
22
+ if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))
23
+ t[p[i]] = s[p[i]];
24
+ }
25
+ return t;
26
+ };
27
+ import * as React from 'react';
28
+ import styled, { css } from 'styled-components';
29
+ import { Hint } from './Hint';
30
+ import { MapControl } from '../MapControl';
31
+ var MapButtonBase = function (props) {
32
+ var handleClick = function () {
33
+ if (props.disabled)
34
+ return;
35
+ if (props.onClick)
36
+ props.onClick();
37
+ };
38
+ var renderButton = function () {
39
+ return React.createElement("div", { className: props.className, tabIndex: props.disabled ? -1 : 0, onClick: handleClick },
40
+ React.createElement(Button, { "$grouped": props.grouped, "$size": props.size, "$disabled": props.disabled, "$active": props.active }, props.children),
41
+ props.hint &&
42
+ React.createElement(Hint, { offset: 12, side: props.x < 0 ? "right" : "left" }, props.hint));
43
+ };
44
+ if (props.grouped)
45
+ return renderButton();
46
+ return React.createElement(MapControl, { x: props.x, y: props.y }, renderButton());
47
+ };
48
+ // const Teardrop = styled.svg<{ $disabled: boolean }>`
49
+ var Button = styled.div(templateObject_4 || (templateObject_4 = __makeTemplateObject([" \n width: 100%;\n height: 100%;\n cursor: pointer;\n background-color: ", ";\n\n // Border:\n border-radius: 4px;\n\n ", "\n\n svg {\n box-sizing: border-box;\n width: 100%;\n height: 100%;\n padding: 8px;\n fill: ", ";\n transition: fill ease-in-out ", "ms;\n }\n\n // Hover:\n div:hover > & {\n background-color: ", ";\n }\n\n ", "\n\n // Disabled:\n ", "\n"], [" \n width: 100%;\n height: 100%;\n cursor: pointer;\n background-color: ", ";\n\n // Border:\n border-radius: 4px;\n\n ", "\n\n svg {\n box-sizing: border-box;\n width: 100%;\n height: 100%;\n padding: 8px;\n fill: ", ";\n transition: fill ease-in-out ", "ms;\n }\n\n // Hover:\n div:hover > & {\n background-color: ", ";\n }\n\n ", "\n\n // Disabled:\n ", "\n"])), function (p) { return p.theme.colors.neutral[100]; }, function (p) { return p.$grouped && css(templateObject_1 || (templateObject_1 = __makeTemplateObject(["\n div:first-child > & {\n border-bottom-left-radius: 0;\n border-bottom-right-radius: 0;\n }\n div:not(:last-child):not(:first-child) > & {\n border-top-left-radius: 0;\n border-top-right-radius: 0;\n border-bottom-left-radius: 0;\n border-bottom-right-radius: 0;\n }\n div:last-child > & {\n border-top-left-radius: 0;\n border-top-right-radius: 0;\n }\n "], ["\n div:first-child > & {\n border-bottom-left-radius: 0;\n border-bottom-right-radius: 0;\n }\n div:not(:last-child):not(:first-child) > & {\n border-top-left-radius: 0;\n border-top-right-radius: 0;\n border-bottom-left-radius: 0;\n border-bottom-right-radius: 0;\n }\n div:last-child > & {\n border-top-left-radius: 0;\n border-top-right-radius: 0;\n }\n "]))); }, function (p) { return p.theme.colors.neutral[10]; }, function (p) { return p.theme.animation.duration; }, function (p) { return p.theme.colors.neutral[95]; }, function (p) { return p.$active && css(templateObject_2 || (templateObject_2 = __makeTemplateObject(["\n background-color: ", " !important;\n svg {\n fill: ", ";\n }\n "], ["\n background-color: ", " !important;\n svg {\n fill: ", ";\n }\n "])), function (p) { return p.theme.colors.accent; }, function (p) { return p.theme.colors.neutral[100]; }); }, function (p) { return p.$disabled && css(templateObject_3 || (templateObject_3 = __makeTemplateObject(["\n cursor: default;\n background-color: ", ";\n svg { fill: ", "; } \n "], ["\n cursor: default;\n background-color: ", ";\n svg { fill: ", "; } \n "])), function (p) { return p.theme.colors.neutral[50]; }, function (p) { return p.theme.colors.primary[3]; }); });
50
+ var MapButtonStyled = styled(MapButtonBase)(templateObject_7 || (templateObject_7 = __makeTemplateObject(["\n position: relative;\n pointer-events: all;\n\n // Size control:\n width: ", "px;\n height: ", "px;\n\n outline: 0;\n user-select: none;\n\n // Grouped button has a separator border (though not the last button in the group):\n ", "\n\n // Hint positioning:\n div:nth-child(2) {\n opacity: 0;\n }\n\n // Hover:\n &:hover {\n div:nth-child(2) {\n opacity: 1;\n }\n }\n\n // Disabled mode:\n ", " \n"], ["\n position: relative;\n pointer-events: all;\n\n // Size control:\n width: ", "px;\n height: ", "px;\n\n outline: 0;\n user-select: none;\n\n // Grouped button has a separator border (though not the last button in the group):\n ", "\n\n // Hint positioning:\n div:nth-child(2) {\n opacity: 0;\n }\n\n // Hover:\n &:hover {\n div:nth-child(2) {\n opacity: 1;\n }\n }\n\n // Disabled mode:\n ", " \n"
51
+ /**
52
+ * A `MapButton` is a square button to be used on a Mapbox map. It must
53
+ * be provided with the `ViewState` by the underlying `Map`.
54
+ *
55
+ * This component is **abstract**: the button has no content by itself,
56
+ * which must be provided by its child.
57
+ */
58
+ ])), function (p) { return p.size; }, function (p) { return p.size; }, function (p) { return p.grouped && css(templateObject_5 || (templateObject_5 = __makeTemplateObject(["\n &:not(:last-child) {\n border-bottom: solid 1px ", ";\n } \n "], ["\n &:not(:last-child) {\n border-bottom: solid 1px ", ";\n } \n "])), function (p) { return p.theme.colors.neutral[80]; }); }, function (p) { return p.disabled && css(templateObject_6 || (templateObject_6 = __makeTemplateObject(["\n pointer-events: none;\n cursor: default;\n "], ["\n pointer-events: none;\n cursor: default;\n "]))); });
59
+ /**
60
+ * A `MapButton` is a square button to be used on a Mapbox map. It must
61
+ * be provided with the `ViewState` by the underlying `Map`.
62
+ *
63
+ * This component is **abstract**: the button has no content by itself,
64
+ * which must be provided by its child.
65
+ */
66
+ var MapButton = function (_a) {
67
+ var _b = _a.size, size = _b === void 0 ? 32 : _b, _c = _a.disabled, disabled = _c === void 0 ? false : _c, _d = _a.active, active = _d === void 0 ? false : _d, _e = _a.grouped, grouped = _e === void 0 ? false : _e, props = __rest(_a, ["size", "disabled", "active", "grouped"]);
68
+ return React.createElement(MapButtonStyled, __assign({ size: size, disabled: disabled, active: active, grouped: grouped }, props));
69
+ };
70
+ export { MapButton };
71
+ var templateObject_1, templateObject_2, templateObject_3, templateObject_4, templateObject_5, templateObject_6, templateObject_7;
@@ -0,0 +1 @@
1
+ export { MapButton, IMapButtonProps } from './MapButton';
@@ -0,0 +1 @@
1
+ export { MapButton } from './MapButton';
@@ -0,0 +1,17 @@
1
+ import * as React from 'react';
2
+ import { IMapControlProps } from '../MapControl';
3
+ interface IProps extends IMapControlProps {
4
+ /**
5
+ * Children must be one or more `MapButton`-derived components.
6
+ */
7
+ children?: React.ReactNode;
8
+ }
9
+ /**
10
+ * A `MapButtonGroup` groups `MapButton`-derived components, like `ZoomInButton` and `CompassButton`.
11
+ * It removes button borders, leaving a thin separator line between buttons.
12
+ *
13
+ * The button children do not need `x` and `y` coordinates. Instead, coordinates are set once
14
+ * through `MapButtonGroup`.
15
+ */
16
+ declare const MapButtonGroup: (props: IProps) => React.JSX.Element;
17
+ export { MapButtonGroup };
@@ -0,0 +1,24 @@
1
+ import * as React from 'react';
2
+ import { MapControl } from '../MapControl';
3
+ /**
4
+ * A `MapButtonGroup` groups `MapButton`-derived components, like `ZoomInButton` and `CompassButton`.
5
+ * It removes button borders, leaving a thin separator line between buttons.
6
+ *
7
+ * The button children do not need `x` and `y` coordinates. Instead, coordinates are set once
8
+ * through `MapButtonGroup`.
9
+ */
10
+ var MapButtonGroup = function (props) {
11
+ return (React.createElement(MapControl, { x: props.x, y: props.y },
12
+ React.createElement("div", { className: props.className }, React.Children.map(props.children, function (child) {
13
+ if (child == null)
14
+ return null;
15
+ return React.cloneElement(child, {
16
+ // X-coordinate is required to determine if Hint aligns left or right.
17
+ x: props.x,
18
+ // If there's only one child, then grouped should be false, or we'd get
19
+ // a single button with no borders.
20
+ grouped: React.Children.count(props.children) > 1
21
+ });
22
+ }))));
23
+ };
24
+ export { MapButtonGroup };
@@ -0,0 +1,36 @@
1
+ import * as React from 'react';
2
+ interface IMapControlProps {
3
+ /** @ignore */
4
+ className?: string;
5
+ /**
6
+ * (From `MapControl`): Horizontal button position. A positive value is an offset from
7
+ * the left, and a negative value is an offset from the right.
8
+ * @default 0
9
+ */
10
+ x?: number;
11
+ /**
12
+ * (From `MapControl`): Vertical button position. A positive value is an offset from the
13
+ * top, and a negative value is an offset from the bottom.
14
+ * @default 0
15
+ */
16
+ y?: number;
17
+ }
18
+ /**
19
+ * `MapControl` positions a control of top of a map, taking Mapbox `padding`
20
+ * into account.
21
+ *
22
+ * The control is positioned using `x` and `y`. Positive values mean offset from
23
+ * left and top, and negative coordinates mean offsets from right and bottom.
24
+ *
25
+ * This component is **abstract**: the button has no content by itself,
26
+ * which must be provided by its child.
27
+ *
28
+ * **Note**: `MapControl` has `pointer-events: none`. It is the responsibility of
29
+ * the wrapped control to set `pointer-events: all`. This is done to accommodate
30
+ * controls that must not capture pointer events, such as `MapLoader`
31
+ * and `ScaleControl`.
32
+ */
33
+ declare const MapControl: ({ x, y, ...props }: IMapControlProps & {
34
+ children?: React.ReactNode;
35
+ }) => React.JSX.Element;
36
+ export { MapControl, IMapControlProps };
@@ -0,0 +1,77 @@
1
+ var __makeTemplateObject = (this && this.__makeTemplateObject) || function (cooked, raw) {
2
+ if (Object.defineProperty) { Object.defineProperty(cooked, "raw", { value: raw }); } else { cooked.raw = raw; }
3
+ return cooked;
4
+ };
5
+ var __assign = (this && this.__assign) || function () {
6
+ __assign = Object.assign || function(t) {
7
+ for (var s, i = 1, n = arguments.length; i < n; i++) {
8
+ s = arguments[i];
9
+ for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))
10
+ t[p] = s[p];
11
+ }
12
+ return t;
13
+ };
14
+ return __assign.apply(this, arguments);
15
+ };
16
+ var __rest = (this && this.__rest) || function (s, e) {
17
+ var t = {};
18
+ for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)
19
+ t[p] = s[p];
20
+ if (s != null && typeof Object.getOwnPropertySymbols === "function")
21
+ for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {
22
+ if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))
23
+ t[p[i]] = s[p[i]];
24
+ }
25
+ return t;
26
+ };
27
+ import * as React from 'react';
28
+ import { useViewState } from '../../../Map';
29
+ import styled from 'styled-components';
30
+ var MapControlBase = function (props) {
31
+ var viewState = useViewState();
32
+ return (React.createElement("div", { className: props.className, style: {
33
+ // Must calculate this style dynamically, because it needs local state.
34
+ left: props.x >= 0 ? "".concat(props.x + viewState.padding.left, "px") : 'auto',
35
+ right: props.x < 0 ? "".concat(viewState.padding.right - props.x, "px") : 'auto',
36
+ top: props.y >= 0 ? "".concat(props.y + viewState.padding.top, "px") : 'auto',
37
+ bottom: props.y < 0 ? "".concat(-props.y - -viewState.padding.bottom, "px") : 'auto'
38
+ } }, props.children));
39
+ };
40
+ var MapControlStyled = styled(MapControlBase)(templateObject_1 || (templateObject_1 = __makeTemplateObject(["\n position: absolute;\n z-index: 100;\n box-sizing: border-box;\n pointer-events: none;\n"], ["\n position: absolute;\n z-index: 100;\n box-sizing: border-box;\n pointer-events: none;\n"
41
+ /**
42
+ * `MapControl` positions a control of top of a map, taking Mapbox `padding`
43
+ * into account.
44
+ *
45
+ * The control is positioned using `x` and `y`. Positive values mean offset from
46
+ * left and top, and negative coordinates mean offsets from right and bottom.
47
+ *
48
+ * This component is **abstract**: the button has no content by itself,
49
+ * which must be provided by its child.
50
+ *
51
+ * **Note**: `MapControl` has `pointer-events: none`. It is the responsibility of
52
+ * the wrapped control to set `pointer-events: all`. This is done to accommodate
53
+ * controls that must not capture pointer events, such as `MapLoader`
54
+ * and `ScaleControl`.
55
+ */
56
+ ])));
57
+ /**
58
+ * `MapControl` positions a control of top of a map, taking Mapbox `padding`
59
+ * into account.
60
+ *
61
+ * The control is positioned using `x` and `y`. Positive values mean offset from
62
+ * left and top, and negative coordinates mean offsets from right and bottom.
63
+ *
64
+ * This component is **abstract**: the button has no content by itself,
65
+ * which must be provided by its child.
66
+ *
67
+ * **Note**: `MapControl` has `pointer-events: none`. It is the responsibility of
68
+ * the wrapped control to set `pointer-events: all`. This is done to accommodate
69
+ * controls that must not capture pointer events, such as `MapLoader`
70
+ * and `ScaleControl`.
71
+ */
72
+ var MapControl = function (_a) {
73
+ var _b = _a.x, x = _b === void 0 ? 0 : _b, _c = _a.y, y = _c === void 0 ? 0 : _c, props = __rest(_a, ["x", "y"]);
74
+ return React.createElement(MapControlStyled, __assign({ x: x, y: y }, props));
75
+ };
76
+ export { MapControl };
77
+ var templateObject_1;
@@ -0,0 +1 @@
1
+ export * from './MapControl';
@@ -0,0 +1 @@
1
+ export * from './MapControl';
@@ -0,0 +1,79 @@
1
+ import * as React from 'react';
2
+ interface IItem {
3
+ latitude: number;
4
+ longitude: number;
5
+ }
6
+ interface IProps {
7
+ /**
8
+ * Array of items that must be clustered. Each item must at least have
9
+ * a `latitude` and `longitude` key.
10
+ */
11
+ items: IItem[];
12
+ /**
13
+ * Radius of cluster (in pixels).
14
+ * @default 18
15
+ */
16
+ radius?: number;
17
+ /**
18
+ * If set, cluster size is relative to its value (as taken from the `field`),
19
+ * adding this value to the cluster radius per logarithmic step.
20
+ * @default 0
21
+ */
22
+ relativeSize?: number;
23
+ /**
24
+ * If provided, then this property will be extracted from features and a
25
+ * sum is calculated for each cluster. This is the value that will be
26
+ * printed on clusters. If omitted, `point_count` is used.
27
+ */
28
+ aggregation?: string;
29
+ /**
30
+ * RingFields are drawn as colored segments around the cluster marker.
31
+ * For each ring field, provide a (numeric) item property.
32
+ * @default []
33
+ */
34
+ ringFields?: string[];
35
+ /**
36
+ * Radius of each cluster. A value of 512 indicates a radius equal to the width
37
+ * of a tile.
38
+ * @default 80
39
+ */
40
+ clusterRadius?: number;
41
+ /**
42
+ * Max zoom on which to cluster points. Defaults to one zoom less than maxzoom
43
+ * (so that last zoom features are not clustered). Clusters are re-evaluated at
44
+ * integer zoom levels so setting clusterMaxZoom to 14 means the clusters will
45
+ * be displayed until z15.
46
+ * @default 18
47
+ */
48
+ clusterMaxZoom?: number;
49
+ /**
50
+ * If set, clicking a cluster zooms the map to its extent.
51
+ * @default false
52
+ */
53
+ clickZoom?: boolean;
54
+ }
55
+ /**
56
+ * A `ClusterLayer` manages its own `Source`. It does not takes GeoJSON, but a list of objects which must at least have
57
+ * `latitude` and `longitude` keys. Other object keys may be used for the aggregate values of clusters; if no field is
58
+ * supplied, then the cluster will display the number of features inside them (the `point_count`).
59
+ *
60
+ * A `ClusterLayer` uses `HtmlMarkerLayer`, providing it with its own preset marker.
61
+ *
62
+ * `ringFields` is an array of strings, each element being a key in the layer input items. For each cluster, the field
63
+ * values are aggregated, and then an arc is painted on the cluster marker which correspond to that field's weight
64
+ * compared to the other `ringFields`.
65
+ *
66
+ * ```tsx
67
+ * const items = [
68
+ * { latitude: 23.3, longitude: 16.6, population: 100 },
69
+ * { latitude: 24.5, longitude: 17.2, population: 250 },
70
+ * ...
71
+ * ];
72
+ *
73
+ * <Map>
74
+ * <ClusterLayer items={items} aggregation="population"/>
75
+ * </Map>
76
+ * ```
77
+ */
78
+ declare const ClusterLayer: ({ relativeSize, radius, clusterRadius, clusterMaxZoom, ringFields, clickZoom, ...props }: IProps) => React.JSX.Element;
79
+ export { ClusterLayer };
@@ -0,0 +1,118 @@
1
+ var __assign = (this && this.__assign) || function () {
2
+ __assign = Object.assign || function(t) {
3
+ for (var s, i = 1, n = arguments.length; i < n; i++) {
4
+ s = arguments[i];
5
+ for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))
6
+ t[p] = s[p];
7
+ }
8
+ return t;
9
+ };
10
+ return __assign.apply(this, arguments);
11
+ };
12
+ var __rest = (this && this.__rest) || function (s, e) {
13
+ var t = {};
14
+ for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)
15
+ t[p] = s[p];
16
+ if (s != null && typeof Object.getOwnPropertySymbols === "function")
17
+ for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {
18
+ if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))
19
+ t[p[i]] = s[p[i]];
20
+ }
21
+ return t;
22
+ };
23
+ import * as React from 'react';
24
+ import { Source, useMap } from 'react-map-gl';
25
+ import { HtmlMarkerLayer } from '../HtmlMarkerLayer/HtmlMarkerLayer';
26
+ import { ClusterMarker } from '../../markers/ClusterMarker';
27
+ function uuidv4() {
28
+ return "10000000-1000-4000-8000-100000000000".replace(/[018]/g, function (c) {
29
+ return (+c ^ crypto.getRandomValues(new Uint8Array(1))[0] & 15 >> +c / 4).toString(16);
30
+ });
31
+ }
32
+ var ClusterLayerBase = function (_a) {
33
+ var _b = _a.relativeSize, relativeSize = _b === void 0 ? 0 : _b, _c = _a.radius, radius = _c === void 0 ? 18 : _c, _d = _a.clusterRadius, clusterRadius = _d === void 0 ? 80 : _d, _e = _a.clusterMaxZoom, clusterMaxZoom = _e === void 0 ? 18 : _e, _f = _a.ringFields, ringFields = _f === void 0 ? [] : _f, _g = _a.clickZoom, clickZoom = _g === void 0 ? false : _g, props = __rest(_a, ["relativeSize", "radius", "clusterRadius", "clusterMaxZoom", "ringFields", "clickZoom"]);
34
+ var map = useMap().current;
35
+ // Generate a random, unique source ID:
36
+ var sourceId = React.useRef(uuidv4()).current;
37
+ var itemsToFeatures = React.useMemo(function () {
38
+ var collection = {
39
+ type: 'FeatureCollection',
40
+ // Return a feature for each item.
41
+ features: props.items.map(function (f) {
42
+ var _a;
43
+ // Build feature's propeties:
44
+ var properties = {};
45
+ // If an aggregation was provided, copy its value to the GeoJSON.
46
+ if (props.aggregation) {
47
+ properties[props.aggregation] = (_a = f[props.aggregation]) !== null && _a !== void 0 ? _a : 0;
48
+ }
49
+ // If ringFields were provided, copy their values to the GeoJSON.
50
+ ringFields.forEach(function (rf) { return properties[rf] = f[rf]; });
51
+ return {
52
+ type: 'Feature',
53
+ geometry: { type: 'Point', coordinates: [f.longitude, f.latitude] },
54
+ properties: properties
55
+ };
56
+ })
57
+ };
58
+ return collection;
59
+ }, [props.items]);
60
+ // Cluster properties calculations:
61
+ // * The `aggregation` is summed.
62
+ // * Each `ringField` is summed.
63
+ var clusterProperties = React.useMemo(function () {
64
+ var obj = {};
65
+ if (props.aggregation)
66
+ obj["sum"] = ["+", ["get", props.aggregation]];
67
+ ringFields.forEach(function (rf) { return obj[rf] = ["+", ["get", rf]]; });
68
+ return obj;
69
+ }, [props.aggregation, ringFields]);
70
+ var handleClick = function (longitude, latitude, cluster_id) {
71
+ map.getSource(sourceId).getClusterExpansionZoom(cluster_id, function (err, zoom) {
72
+ if (err)
73
+ return;
74
+ map.easeTo({
75
+ center: [longitude, latitude],
76
+ zoom: zoom
77
+ });
78
+ });
79
+ };
80
+ return (React.createElement(Source, { id: sourceId, type: 'geojson', data: itemsToFeatures, cluster: true, clusterRadius: clusterRadius, clusterMaxZoom: clusterMaxZoom, clusterProperties: __assign({}, clusterProperties) },
81
+ React.createElement(HtmlMarkerLayer, { sourceId: sourceId, idField: "cluster_id" }, function (markerProps) {
82
+ return React.createElement(ClusterMarker, __assign({ relativeSize: relativeSize, radius: radius, value: props.aggregation ? markerProps['sum'] : markerProps['point_count'], ringValues: ringFields.map(function (f) { return markerProps[f]; }), onClick: clickZoom ? function () { return handleClick(markerProps.longitude, markerProps.latitude, markerProps.cluster_id); } : null }, markerProps));
83
+ })));
84
+ };
85
+ /**
86
+ * A `ClusterLayer` manages its own `Source`. It does not takes GeoJSON, but a list of objects which must at least have
87
+ * `latitude` and `longitude` keys. Other object keys may be used for the aggregate values of clusters; if no field is
88
+ * supplied, then the cluster will display the number of features inside them (the `point_count`).
89
+ *
90
+ * A `ClusterLayer` uses `HtmlMarkerLayer`, providing it with its own preset marker.
91
+ *
92
+ * `ringFields` is an array of strings, each element being a key in the layer input items. For each cluster, the field
93
+ * values are aggregated, and then an arc is painted on the cluster marker which correspond to that field's weight
94
+ * compared to the other `ringFields`.
95
+ *
96
+ * ```tsx
97
+ * const items = [
98
+ * { latitude: 23.3, longitude: 16.6, population: 100 },
99
+ * { latitude: 24.5, longitude: 17.2, population: 250 },
100
+ * ...
101
+ * ];
102
+ *
103
+ * <Map>
104
+ * <ClusterLayer items={items} aggregation="population"/>
105
+ * </Map>
106
+ * ```
107
+ */
108
+ var ClusterLayer = function (_a) {
109
+ var _b = _a.relativeSize, relativeSize = _b === void 0 ? 0 : _b, _c = _a.radius, radius = _c === void 0 ? 24 : _c, _d = _a.clusterRadius, clusterRadius = _d === void 0 ? 80 : _d, _e = _a.clusterMaxZoom, clusterMaxZoom = _e === void 0 ? 18 : _e, ringFields = _a.ringFields, _f = _a.clickZoom, clickZoom = _f === void 0 ? false : _f, props = __rest(_a, ["relativeSize", "radius", "clusterRadius", "clusterMaxZoom", "ringFields", "clickZoom"]);
110
+ var _g = React.useState(0), key = _g[0], setKey = _g[1];
111
+ // When aggregation changes, we mount a whole new component. Mapbox does not
112
+ // appear to deal with changes to clusterProperties well.
113
+ React.useEffect(function () {
114
+ setKey(Date.now());
115
+ }, [props.aggregation, ringFields]);
116
+ return React.createElement(ClusterLayerBase, __assign({ key: key, relativeSize: relativeSize, radius: radius, clusterRadius: clusterRadius, clusterMaxZoom: clusterMaxZoom, ringFields: ringFields, clickZoom: clickZoom }, props));
117
+ };
118
+ export { ClusterLayer };
@@ -0,0 +1,51 @@
1
+ import * as React from 'react';
2
+ interface IProps {
3
+ /**
4
+ * Function that returns a marker component. Properties that `HtmlMarkerLayer`
5
+ * makes available to the component are passed in as `props`.
6
+ * e.g. `{(p) => <MyMarker {...p} bordered flashing/>}`
7
+ */
8
+ children?: (props: any) => React.ReactNode;
9
+ /**
10
+ * ID of the source that's queried.
11
+ */
12
+ sourceId: string;
13
+ /**
14
+ * Every feature must have a unique ID in its properties. This is used to
15
+ * tell features apart. If the `source` should ever change, then it is
16
+ * important that new items have new IDs, so that old markers get removed
17
+ * correctly.
18
+ */
19
+ idField: string;
20
+ }
21
+ /**
22
+ * The `HtmlMarkerLayer` manages HTML markers on a map. HTML markers are far slower
23
+ * than OpenGL layers, but much more flexible: with SVG, any shape of marker can
24
+ * be designed, and the markers can easily be made responsive to hover.
25
+ *
26
+ * The `HtmlMarkerLayer` keeps an internal cache, creating and rendering markers only
27
+ * when they are visible in the map viewport. This is a suitable solution for clusters
28
+ * (where by definition there are never very many icons in the viewport), or when
29
+ * there are simply not _that_ many markers: up to a few hundred in the viewport is the
30
+ * upper limit.
31
+ *
32
+ * The `HtmlMarkerLayer` must be placed inside a GeoJSON `Source`. In that source,
33
+ * each feature must have a unique ID (passed to this layer as the `idField`), which
34
+ * is used to tell features apart. When features are refreshed, it is imported that
35
+ * they all get new IDs so that old markers get removed correctly.
36
+ *
37
+ * The `HtmlMarkerLayer` component takes a _function child_. This function accepts
38
+ * a `props` object, which will be the properties from each GeoJSON feature for which
39
+ * a marker is rendered.
40
+ *
41
+ * ```tsx
42
+ * // featureCollection has a property "id" with unique values
43
+ * <Source id="mysource" type="geojson" data={featureCollection}>
44
+ * <HtmlMarkerLayer sourceId="mysource" idField="id">
45
+ * {(markerProps) => <MyMarkerComponent color="gold" radius={45} {...markerProps}/>
46
+ * </HtmlMarkerLayer>
47
+ * </Source>
48
+ * ```
49
+ */
50
+ declare const HtmlMarkerLayer: (props: IProps) => React.JSX.Element;
51
+ export { HtmlMarkerLayer };