@onesy/ui-react 1.0.130 → 1.0.131

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 (444) hide show
  1. package/Accordion/Accordion.js +342 -242
  2. package/Accordion/index.js +12 -7
  3. package/AdvancedTextField/AdvancedTextField.js +165 -157
  4. package/AdvancedTextField/index.js +12 -7
  5. package/Append/Append.js +502 -519
  6. package/Append/index.js +12 -7
  7. package/AreaChart/AreaChart.js +53 -40
  8. package/AreaChart/index.js +12 -7
  9. package/AreaChartItem/AreaChartItem.js +325 -237
  10. package/AreaChartItem/index.js +12 -7
  11. package/AudioPlayer/AudioPlayer.js +683 -466
  12. package/AudioPlayer/index.js +12 -7
  13. package/AudioRecorder/AudioRecorder.js +359 -259
  14. package/AudioRecorder/index.js +12 -7
  15. package/AutoComplete/AutoComplete.js +693 -568
  16. package/AutoComplete/index.js +12 -7
  17. package/AutoCompleteCountry/AutoCompleteCountry.js +99 -62
  18. package/AutoCompleteCountry/index.js +12 -7
  19. package/AutoCompleteCurrency/AutoCompleteCurrency.js +73 -61
  20. package/AutoCompleteCurrency/index.js +12 -7
  21. package/Avatar/Avatar.js +113 -86
  22. package/Avatar/index.js +12 -7
  23. package/AvatarGroup/AvatarGroup.js +104 -87
  24. package/AvatarGroup/index.js +12 -7
  25. package/Backdrop/Backdrop.js +160 -139
  26. package/Backdrop/index.js +12 -7
  27. package/Badge/Badge.js +116 -96
  28. package/Badge/index.js +12 -7
  29. package/Banner/Banner.js +126 -85
  30. package/Banner/index.js +12 -7
  31. package/BottomAppBar/BottomAppBar.js +89 -60
  32. package/BottomAppBar/index.js +12 -7
  33. package/BottomSheet/BottomSheet.js +66 -59
  34. package/BottomSheet/index.js +12 -7
  35. package/Box/Box.js +43 -35
  36. package/Box/index.js +12 -7
  37. package/Breadcrumbs/Breadcrumbs.js +168 -144
  38. package/Breadcrumbs/index.js +12 -7
  39. package/BubbleChart/BubbleChart.js +261 -132
  40. package/BubbleChart/index.js +12 -7
  41. package/BubbleChartItem/BubbleChartItem.js +228 -161
  42. package/BubbleChartItem/index.js +12 -7
  43. package/Button/Button.js +488 -467
  44. package/Button/index.js +12 -7
  45. package/Buttons/Buttons.js +366 -293
  46. package/Buttons/index.js +12 -7
  47. package/Calendar/Calendar.js +715 -452
  48. package/Calendar/index.js +12 -7
  49. package/CalendarAvailability/CalendarAvailability.js +709 -388
  50. package/CalendarAvailability/index.js +12 -7
  51. package/CalendarMenu/CalendarMenu.js +430 -303
  52. package/CalendarMenu/index.js +12 -7
  53. package/CalendarMonth/CalendarMonth.js +537 -498
  54. package/CalendarMonth/index.js +12 -7
  55. package/CalendarViews/CalendarViews.js +403 -254
  56. package/CalendarViews/index.js +12 -7
  57. package/CalendarWeek/CalendarWeek.js +536 -395
  58. package/CalendarWeek/index.js +12 -7
  59. package/Card/Card.js +133 -101
  60. package/Card/index.js +12 -7
  61. package/CardButton/CardButton.js +78 -58
  62. package/CardButton/index.js +12 -7
  63. package/CardFooter/CardFooter.js +58 -39
  64. package/CardFooter/index.js +12 -7
  65. package/CardHeader/CardHeader.js +61 -44
  66. package/CardHeader/index.js +12 -7
  67. package/CardImage/CardImage.js +80 -67
  68. package/CardImage/index.js +12 -7
  69. package/CardMain/CardMain.js +53 -39
  70. package/CardMain/index.js +12 -7
  71. package/Carousel/Carousel.js +1025 -913
  72. package/Carousel/index.js +12 -7
  73. package/Chart/Chart.js +1325 -1174
  74. package/Chart/index.js +12 -7
  75. package/Checkbox/Checkbox.js +339 -325
  76. package/Checkbox/index.js +12 -7
  77. package/Chip/Chip.js +131 -102
  78. package/Chip/index.js +12 -7
  79. package/Chips/Chips.js +121 -94
  80. package/Chips/index.js +12 -7
  81. package/ClickListener/ClickListener.js +86 -89
  82. package/ClickListener/index.js +12 -7
  83. package/Clock/Clock.js +470 -417
  84. package/Clock/index.js +12 -7
  85. package/ColorTextField/ColorTextField.js +234 -171
  86. package/ColorTextField/index.js +12 -7
  87. package/ColumnChart/ColumnChart.js +63 -46
  88. package/ColumnChart/index.js +12 -7
  89. package/ColumnChartItem/ColumnChartItem.js +208 -149
  90. package/ColumnChartItem/index.js +12 -7
  91. package/Confirm/Confirm.js +184 -129
  92. package/Confirm/Context.js +9 -7
  93. package/Confirm/index.js +32 -13
  94. package/Confirm/useConfirm.js +11 -10
  95. package/Container/Container.js +154 -133
  96. package/Container/index.js +12 -7
  97. package/CookieBanner/CookieBanner.js +142 -76
  98. package/CookieBanner/index.js +12 -7
  99. package/Countdown/Countdown.js +403 -255
  100. package/Countdown/index.js +12 -7
  101. package/DatePicker/DatePicker.js +802 -547
  102. package/DatePicker/index.js +12 -7
  103. package/DateRangePicker/DateRangePicker.js +44 -37
  104. package/DateRangePicker/index.js +12 -7
  105. package/DateTimePicker/DateTimePicker.js +672 -459
  106. package/DateTimePicker/index.js +12 -7
  107. package/DateTimeRangePicker/DateTimeRangePicker.js +44 -37
  108. package/DateTimeRangePicker/index.js +12 -7
  109. package/Divider/Divider.js +198 -185
  110. package/Divider/index.js +12 -7
  111. package/DonutChart/DonutChart.js +49 -42
  112. package/DonutChart/index.js +12 -7
  113. package/DragAndDropList/DragAndDropList.js +160 -156
  114. package/DragAndDropList/index.js +12 -7
  115. package/Drawing/Drawing.js +850 -523
  116. package/Drawing/index.js +12 -7
  117. package/DropZone/DropZone.js +239 -201
  118. package/DropZone/index.js +12 -7
  119. package/Emojis/Emojis.js +409 -317
  120. package/Emojis/emojis_list.js +7279 -9250
  121. package/Emojis/index.js +19 -9
  122. package/Expand/Expand.js +201 -149
  123. package/Expand/index.js +12 -7
  124. package/Fab/Fab.js +46 -26
  125. package/Fab/index.js +12 -7
  126. package/Fade/Fade.js +131 -101
  127. package/Fade/index.js +12 -7
  128. package/FileChoose/FileChoose.js +218 -150
  129. package/FileChoose/index.js +12 -7
  130. package/Focus/Focus.js +87 -88
  131. package/Focus/index.js +12 -7
  132. package/Form/Form.js +194 -120
  133. package/Form/index.js +12 -7
  134. package/FormRow/FormRow.js +123 -78
  135. package/FormRow/index.js +12 -7
  136. package/Forms/Forms.js +55 -41
  137. package/Forms/index.js +12 -7
  138. package/Frame/Frame.js +212 -150
  139. package/Frame/index.js +12 -7
  140. package/Grid/Grid.js +231 -166
  141. package/Grid/index.js +12 -7
  142. package/Grow/Grow.js +137 -109
  143. package/Grow/index.js +12 -7
  144. package/HTMLCanvas/HTMLCanvas.js +752 -542
  145. package/HTMLCanvas/index.js +24 -21
  146. package/IFrame/IFrame.js +122 -104
  147. package/IFrame/index.js +12 -7
  148. package/Icon/Icon.js +112 -95
  149. package/Icon/index.js +24 -21
  150. package/IconButton/IconButton.js +49 -37
  151. package/IconButton/index.js +12 -7
  152. package/Image/Image.js +285 -252
  153. package/Image/index.js +12 -7
  154. package/ImageCrop/ImageCrop.js +1073 -1048
  155. package/ImageCrop/index.js +12 -7
  156. package/ImageEdit/ImageEdit.js +1088 -783
  157. package/ImageEdit/index.js +12 -7
  158. package/ImageGallery/ImageGallery.js +518 -473
  159. package/ImageGallery/index.js +12 -7
  160. package/ImageList/ImageList.js +136 -129
  161. package/ImageList/index.js +12 -7
  162. package/ImageListItem/ImageListItem.js +101 -87
  163. package/ImageListItem/index.js +12 -7
  164. package/ImageListItemBox/ImageListItemBox.js +61 -50
  165. package/ImageListItemBox/index.js +12 -7
  166. package/Info/Info.js +99 -63
  167. package/Info/index.js +12 -7
  168. package/Interaction/Interaction.js +405 -345
  169. package/Interaction/index.js +12 -7
  170. package/Keyframes/Context.js +9 -7
  171. package/Keyframes/Keyframes.js +189 -174
  172. package/Keyframes/index.js +42 -25
  173. package/Keyframes/useKeyframes.js +11 -10
  174. package/Label/Label.js +177 -151
  175. package/Label/index.js +12 -7
  176. package/Labels/Labels.js +126 -98
  177. package/Labels/index.js +12 -7
  178. package/Line/Line.js +296 -174
  179. package/Line/index.js +12 -7
  180. package/LineChart/LineChart.js +57 -40
  181. package/LineChart/index.js +12 -7
  182. package/LineChartItem/LineChartItem.js +239 -177
  183. package/LineChartItem/index.js +12 -7
  184. package/LinearMeter/LinearMeter.js +453 -377
  185. package/LinearMeter/index.js +12 -7
  186. package/LinearProgress/LinearProgress.js +324 -255
  187. package/LinearProgress/index.js +12 -7
  188. package/Link/Link.js +182 -127
  189. package/Link/index.js +12 -7
  190. package/Links/Links.js +277 -156
  191. package/Links/index.js +12 -7
  192. package/List/List.js +148 -113
  193. package/List/index.js +12 -7
  194. package/ListItem/ListItem.js +388 -362
  195. package/ListItem/index.js +12 -7
  196. package/ListSubheader/ListSubheader.js +52 -44
  197. package/ListSubheader/index.js +12 -7
  198. package/MainProgress/Context.js +9 -7
  199. package/MainProgress/MainProgress.js +193 -161
  200. package/MainProgress/index.js +32 -13
  201. package/MainProgress/useMainProgress.js +11 -10
  202. package/Markdown/Markdown.js +676 -704
  203. package/Markdown/index.js +12 -7
  204. package/Masonry/Masonry.js +207 -181
  205. package/Masonry/index.js +12 -7
  206. package/Medias/Medias.js +436 -398
  207. package/Medias/index.js +12 -7
  208. package/Menu/Menu.js +278 -243
  209. package/Menu/index.js +12 -7
  210. package/MenuDesktop/MenuDesktop.js +496 -419
  211. package/MenuDesktop/index.js +12 -7
  212. package/MenuItem/MenuItem.js +286 -231
  213. package/MenuItem/index.js +12 -7
  214. package/Meta/Meta.js +78 -54
  215. package/Meta/index.js +12 -7
  216. package/Modal/Modal.js +333 -272
  217. package/Modal/index.js +12 -7
  218. package/ModalFooter/ModalFooter.js +50 -39
  219. package/ModalFooter/index.js +12 -7
  220. package/ModalHeader/ModalHeader.js +51 -39
  221. package/ModalHeader/index.js +12 -7
  222. package/ModalIcon/ModalIcon.js +29 -23
  223. package/ModalIcon/index.js +12 -7
  224. package/ModalMain/ModalMain.js +50 -41
  225. package/ModalMain/index.js +12 -7
  226. package/ModalText/ModalText.js +47 -37
  227. package/ModalText/index.js +12 -7
  228. package/ModalTitle/ModalTitle.js +47 -37
  229. package/ModalTitle/index.js +12 -7
  230. package/MoreOptions/MoreOptions.js +72 -52
  231. package/MoreOptions/index.js +12 -7
  232. package/Move/Move.js +166 -141
  233. package/Move/index.js +12 -7
  234. package/NavigationBar/NavigationBar.js +133 -109
  235. package/NavigationBar/index.js +12 -7
  236. package/NavigationDrawer/NavigationDrawer.js +241 -211
  237. package/NavigationDrawer/index.js +12 -7
  238. package/NavigationItem/NavigationItem.js +293 -262
  239. package/NavigationItem/index.js +12 -7
  240. package/NavigationRail/NavigationRail.js +187 -150
  241. package/NavigationRail/index.js +12 -7
  242. package/NotFound/NotFound.js +89 -66
  243. package/NotFound/index.js +12 -7
  244. package/NumericTextField/NumericTextField.js +217 -212
  245. package/NumericTextField/index.js +12 -7
  246. package/Page/Page.js +131 -67
  247. package/Page/index.js +12 -7
  248. package/PageTransition/PageTransition.js +112 -102
  249. package/PageTransition/index.js +12 -7
  250. package/Pagination/Pagination.js +153 -98
  251. package/Pagination/index.js +12 -7
  252. package/PaginationItem/PaginationItem.js +85 -65
  253. package/PaginationItem/index.js +12 -7
  254. package/Parallax/Parallax.js +138 -145
  255. package/Parallax/index.js +12 -7
  256. package/Path/Path.js +40 -35
  257. package/Path/index.js +12 -7
  258. package/PieChart/PieChart.js +382 -267
  259. package/PieChart/index.js +12 -7
  260. package/Placeholder/Placeholder.js +125 -117
  261. package/Placeholder/index.js +12 -7
  262. package/Portal/Portal.js +37 -38
  263. package/Portal/index.js +12 -7
  264. package/Properties/Properties.js +85 -64
  265. package/Properties/index.js +12 -7
  266. package/Property/Property.js +120 -108
  267. package/Property/index.js +12 -7
  268. package/Radio/Radio.js +211 -181
  269. package/Radio/index.js +12 -7
  270. package/Radios/Radios.js +124 -92
  271. package/Radios/index.js +12 -7
  272. package/Rating/Rating.js +353 -360
  273. package/Rating/index.js +12 -7
  274. package/Reset/Reset.js +19 -24
  275. package/Reset/index.js +12 -7
  276. package/Reveal/Reveal.js +98 -89
  277. package/Reveal/index.js +12 -7
  278. package/RichTextEditor/RichTextEditor.js +1764 -972
  279. package/RichTextEditor/index.js +12 -7
  280. package/RoundMeter/RoundMeter.js +629 -537
  281. package/RoundMeter/index.js +12 -7
  282. package/RoundProgress/RoundProgress.js +233 -174
  283. package/RoundProgress/index.js +12 -7
  284. package/ScatterChart/ScatterChart.js +53 -40
  285. package/ScatterChart/index.js +12 -7
  286. package/ScatterChartItem/ScatterChartItem.js +214 -153
  287. package/ScatterChartItem/index.js +12 -7
  288. package/ScreenCapture/ScreenCapture.js +427 -335
  289. package/ScreenCapture/index.js +12 -7
  290. package/Section/Section.js +380 -319
  291. package/Section/index.js +12 -7
  292. package/SectionAction/SectionAction.js +72 -61
  293. package/SectionAction/index.js +12 -7
  294. package/SectionBoxes/SectionBoxes.js +240 -208
  295. package/SectionBoxes/index.js +12 -7
  296. package/SectionCards/SectionCards.js +256 -217
  297. package/SectionCards/index.js +12 -7
  298. package/SectionCarousel/SectionCarousel.js +284 -242
  299. package/SectionCarousel/index.js +12 -7
  300. package/SectionContact/SectionContact.js +174 -116
  301. package/SectionContact/index.js +12 -7
  302. package/SectionImageGallery/SectionImageGallery.js +64 -51
  303. package/SectionImageGallery/index.js +12 -7
  304. package/SectionLogos/SectionLogos.js +123 -109
  305. package/SectionLogos/index.js +12 -7
  306. package/SectionMedia/SectionMedia.js +170 -152
  307. package/SectionMedia/index.js +12 -7
  308. package/SectionReviews/SectionReviews.js +170 -129
  309. package/SectionReviews/index.js +12 -7
  310. package/SectionTextMedia/SectionTextMedia.js +187 -142
  311. package/SectionTextMedia/index.js +12 -7
  312. package/SectionTimeline/SectionTimeline.js +126 -95
  313. package/SectionTimeline/index.js +12 -7
  314. package/SectionWatch/SectionWatch.js +65 -53
  315. package/SectionWatch/index.js +12 -7
  316. package/Select/Select.js +517 -406
  317. package/Select/index.js +12 -7
  318. package/Share/Share.js +458 -319
  319. package/Share/index.js +12 -7
  320. package/Slide/Slide.js +184 -140
  321. package/Slide/index.js +12 -7
  322. package/Slider/Slider.js +927 -837
  323. package/Slider/index.js +12 -7
  324. package/SmartTextField/SmartTextField.js +1406 -1014
  325. package/SmartTextField/index.js +12 -7
  326. package/Snackbar/Snackbar.js +227 -185
  327. package/Snackbar/index.js +12 -7
  328. package/Snackbars/Context.js +9 -7
  329. package/Snackbars/Snackbars.js +234 -210
  330. package/Snackbars/index.js +32 -13
  331. package/Snackbars/useSnackbars.js +11 -10
  332. package/Space/Space.js +1683 -968
  333. package/Space/index.js +24 -21
  334. package/SpeechToText/SpeechToText.js +207 -172
  335. package/SpeechToText/index.js +12 -7
  336. package/SpeedDial/SpeedDial.js +434 -398
  337. package/SpeedDial/index.js +12 -7
  338. package/SpeedDialItem/SpeedDialItem.js +89 -63
  339. package/SpeedDialItem/index.js +12 -7
  340. package/SpyScroll/SpyScroll.js +154 -142
  341. package/SpyScroll/index.js +12 -7
  342. package/Step/Step.js +181 -127
  343. package/Step/index.js +12 -7
  344. package/Stepper/Stepper.js +159 -139
  345. package/Stepper/index.js +12 -7
  346. package/Surface/Surface.js +760 -798
  347. package/Surface/index.js +12 -7
  348. package/Switch/Switch.js +688 -532
  349. package/Switch/index.js +12 -7
  350. package/Tab/Tab.js +185 -150
  351. package/Tab/index.js +12 -7
  352. package/Table/Table.js +100 -77
  353. package/Table/index.js +12 -7
  354. package/TableBody/TableBody.js +76 -63
  355. package/TableBody/index.js +12 -7
  356. package/TableCell/TableCell.js +258 -220
  357. package/TableCell/index.js +12 -7
  358. package/TableFooter/TableFooter.js +60 -48
  359. package/TableFooter/index.js +12 -7
  360. package/TableHead/TableHead.js +139 -120
  361. package/TableHead/index.js +12 -7
  362. package/TableHeader/TableHeader.js +65 -50
  363. package/TableHeader/index.js +12 -7
  364. package/TablePagination/TablePagination.js +171 -98
  365. package/TablePagination/index.js +12 -7
  366. package/TableRow/TableRow.js +77 -64
  367. package/TableRow/index.js +12 -7
  368. package/Tabs/Tabs.js +425 -377
  369. package/Tabs/index.js +12 -7
  370. package/Text/Text.js +131 -113
  371. package/Text/index.js +12 -7
  372. package/TextField/TextField.js +940 -879
  373. package/TextField/index.js +12 -7
  374. package/TextToSpeech/TextToSpeech.js +176 -153
  375. package/TextToSpeech/index.js +12 -7
  376. package/TimePicker/TimePicker.js +985 -718
  377. package/TimePicker/index.js +12 -7
  378. package/TimeRangePicker/TimeRangePicker.js +44 -37
  379. package/TimeRangePicker/index.js +12 -7
  380. package/Timeline/Timeline.js +54 -42
  381. package/Timeline/index.js +12 -7
  382. package/TimelineItem/TimelineItem.js +144 -147
  383. package/TimelineItem/index.js +12 -7
  384. package/Timer/Timer.js +321 -204
  385. package/Timer/index.js +12 -7
  386. package/ToggleButton/ToggleButton.js +67 -58
  387. package/ToggleButton/index.js +12 -7
  388. package/ToggleButtons/ToggleButtons.js +46 -37
  389. package/ToggleButtons/index.js +12 -7
  390. package/Tooltip/Tooltip.js +489 -454
  391. package/Tooltip/index.js +12 -7
  392. package/TopAppBar/TopAppBar.js +237 -197
  393. package/TopAppBar/index.js +12 -7
  394. package/Transition/Context.js +9 -7
  395. package/Transition/Transition.js +321 -339
  396. package/Transition/index.js +42 -25
  397. package/Transition/useTransition.js +11 -10
  398. package/Transitions/Transitions.js +215 -179
  399. package/Transitions/index.js +12 -7
  400. package/Tree/Tree.js +375 -312
  401. package/Tree/index.js +12 -7
  402. package/Type/Type.js +251 -152
  403. package/Type/index.js +12 -7
  404. package/VideoPlayer/VideoPlayer.js +866 -656
  405. package/VideoPlayer/index.js +12 -7
  406. package/ViewSplit/ViewSplit.js +413 -387
  407. package/ViewSplit/index.js +12 -7
  408. package/Watch/Watch.js +436 -290
  409. package/Watch/index.js +12 -7
  410. package/Weather/Weather.js +294 -247
  411. package/Weather/index.js +12 -7
  412. package/Whiteboard/Whiteboard.js +1392 -1292
  413. package/Whiteboard/index.js +12 -7
  414. package/Widgets/Context.js +9 -7
  415. package/Widgets/Widgets.js +220 -168
  416. package/Widgets/index.js +32 -13
  417. package/Widgets/useWidgets.js +11 -10
  418. package/WindowSplit/WindowSplit.js +381 -336
  419. package/WindowSplit/index.js +12 -7
  420. package/Zoom/Zoom.js +126 -99
  421. package/Zoom/index.js +12 -7
  422. package/esm/Buttons/Buttons.js +1 -1
  423. package/esm/index.js +1 -1
  424. package/index.js +4053 -660
  425. package/package.json +1 -1
  426. package/types.js +4 -1
  427. package/useForm/index.js +25 -11
  428. package/useForm/useForm.js +203 -174
  429. package/useForm/validate.js +215 -203
  430. package/useLocation/index.js +12 -7
  431. package/useLocation/useLocation.js +54 -49
  432. package/useMediaQuery/index.js +12 -7
  433. package/useMediaQuery/useMediaQuery.js +44 -43
  434. package/useQuery/index.js +12 -7
  435. package/useQuery/useQuery.js +14 -10
  436. package/useScroll/index.js +12 -7
  437. package/useScroll/useScroll.js +61 -56
  438. package/useSubscription/index.js +12 -7
  439. package/useSubscription/useSubscription.js +35 -35
  440. package/useSwipe/index.js +12 -7
  441. package/useSwipe/useSwipe.js +157 -131
  442. package/useVisible/index.js +12 -7
  443. package/useVisible/useVisible.js +86 -76
  444. package/utils.js +1224 -1362
@@ -1,554 +1,646 @@
1
1
  "use strict";
2
- var __rest = (this && this.__rest) || function (s, e) {
3
- var t = {};
4
- for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)
5
- t[p] = s[p];
6
- if (s != null && typeof Object.getOwnPropertySymbols === "function")
7
- for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {
8
- if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))
9
- t[p[i]] = s[p[i]];
2
+
3
+ var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
4
+ Object.defineProperty(exports, "__esModule", {
5
+ value: true
6
+ });
7
+ exports.default = void 0;
8
+ var _extends2 = _interopRequireDefault(require("@babel/runtime/helpers/extends"));
9
+ var _objectWithoutProperties2 = _interopRequireDefault(require("@babel/runtime/helpers/objectWithoutProperties"));
10
+ var _defineProperty2 = _interopRequireDefault(require("@babel/runtime/helpers/defineProperty"));
11
+ var _react = _interopRequireDefault(require("react"));
12
+ var _utils = require("@onesy/utils");
13
+ var _styleReact = require("@onesy/style-react");
14
+ var _Surface = _interopRequireDefault(require("../Surface"));
15
+ var _utils2 = require("../utils");
16
+ const _excluded = ["tonal", "color", "size", "parts", "lineCap", "padding", "gap", "border", "background", "boundary", "boundaryWidth", "arcProgress", "arcsVisible", "marksVisible", "labelsVisible", "marks", "markSize", "markWidth", "labels", "renderLabel", "childrenPosition", "additional", "textProps", "pathProps", "SvgProps", "MarkProps", "LabelProps", "BackgroundProps", "BorderProps", "ArcProps", "ArcMainProps", "ArcsProgressProps", "ArcProgressProps", "Component", "className", "style", "children"],
17
+ _excluded2 = ["size", "padding", "position"],
18
+ _excluded3 = ["value", "padding", "position"],
19
+ _excluded4 = ["x", "y", "value"];
20
+ function ownKeys(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e); r && (o = o.filter(function (r) { return Object.getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; }
21
+ function _objectSpread(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys(Object(t), !0).forEach(function (r) { (0, _defineProperty2.default)(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; }
22
+ const useStyle = (0, _styleReact.style)(theme => ({
23
+ root: {
24
+ width: '100vw'
25
+ },
26
+ size_small: {
27
+ maxWidth: '180px'
28
+ },
29
+ size_regular: {
30
+ maxWidth: '240px'
31
+ },
32
+ size_large: {
33
+ maxWidth: '300px'
34
+ },
35
+ boundary_1: {
36
+ aspectRatio: '1'
37
+ },
38
+ boundary_075: {
39
+ aspectRatio: '1'
40
+ },
41
+ boundary_05: {
42
+ aspectRatio: '1'
43
+ },
44
+ boundary_025: {
45
+ aspectRatio: '1'
46
+ },
47
+ label: _objectSpread(_objectSpread({}, theme.typography.values.b2), {}, {
48
+ textAnchor: 'middle',
49
+ alignmentBaseline: 'central',
50
+ dominantBaseline: 'central'
51
+ }),
52
+ svg: {
53
+ position: 'relative',
54
+ width: '100%',
55
+ height: 'auto'
56
+ }
57
+ }), {
58
+ name: 'onesy-RoundMeter'
59
+ });
60
+ const RoundMeter = /*#__PURE__*/_react.default.forwardRef((props_, ref) => {
61
+ const theme = (0, _styleReact.useOnesyTheme)();
62
+ const props = _react.default.useMemo(() => {
63
+ var _theme$ui, _theme$ui2;
64
+ return _objectSpread(_objectSpread(_objectSpread({}, theme === null || theme === void 0 || (_theme$ui = theme.ui) === null || _theme$ui === void 0 || (_theme$ui = _theme$ui.elements) === null || _theme$ui === void 0 || (_theme$ui = _theme$ui.all) === null || _theme$ui === void 0 || (_theme$ui = _theme$ui.props) === null || _theme$ui === void 0 ? void 0 : _theme$ui.default), theme === null || theme === void 0 || (_theme$ui2 = theme.ui) === null || _theme$ui2 === void 0 || (_theme$ui2 = _theme$ui2.elements) === null || _theme$ui2 === void 0 || (_theme$ui2 = _theme$ui2.onesyRoundMeter) === null || _theme$ui2 === void 0 || (_theme$ui2 = _theme$ui2.props) === null || _theme$ui2 === void 0 ? void 0 : _theme$ui2.default), props_);
65
+ }, [props_]);
66
+ const Surface = _react.default.useMemo(() => {
67
+ var _theme$elements;
68
+ return (theme === null || theme === void 0 || (_theme$elements = theme.elements) === null || _theme$elements === void 0 ? void 0 : _theme$elements.Surface) || _Surface.default;
69
+ }, [theme]);
70
+ const {
71
+ tonal = true,
72
+ color = 'primary',
73
+ size = 'regular',
74
+ parts: parts_ = 1,
75
+ lineCap,
76
+ padding: outsidePadding = 0,
77
+ gap: gap_ = 0,
78
+ border = false,
79
+ background = false,
80
+ boundary: boundary_ = 1,
81
+ boundaryWidth = 1,
82
+ arcProgress = false,
83
+ arcsVisible = true,
84
+ marksVisible = true,
85
+ labelsVisible = true,
86
+ marks: marks_ = [],
87
+ markSize = 4,
88
+ markWidth = 1,
89
+ labels: labels_ = [],
90
+ renderLabel,
91
+ childrenPosition = 'post',
92
+ additional,
93
+ textProps,
94
+ pathProps,
95
+ SvgProps,
96
+ MarkProps,
97
+ LabelProps,
98
+ BackgroundProps,
99
+ BorderProps,
100
+ ArcProps,
101
+ ArcMainProps,
102
+ ArcsProgressProps,
103
+ ArcProgressProps,
104
+ Component = 'div',
105
+ className,
106
+ style,
107
+ children
108
+ } = props,
109
+ other = (0, _objectWithoutProperties2.default)(props, _excluded);
110
+ const {
111
+ classes
112
+ } = useStyle();
113
+ const refs = {
114
+ root: _react.default.useRef(undefined)
115
+ };
116
+ const styles = {
117
+ root: {}
118
+ };
119
+ let radius;
120
+ const boundary = (0, _utils.parse)(boundary_);
121
+ const width = 240;
122
+ const height = width;
123
+ let gap = ['round', 'square'].includes(lineCap) ? gap_ + boundaryWidth / 2 : gap_;
124
+ const parts = (0, _utils.clamp)((0, _utils.parse)(parts_), 1, 180);
125
+ let min = 0;
126
+ let max = 360;
127
+ let yViewBox = 0;
128
+
129
+ // 1
130
+ if (boundary === 1) {
131
+ // 0 is middle top
132
+ // ie. 270 degreese
133
+ min = 270;
134
+ max = 270 + 360;
135
+ }
136
+
137
+ // 0.75
138
+ if (boundary === 0.75) {
139
+ // 0 is angle bottom left
140
+ // ie. 270 degreese
141
+ min = 135;
142
+ max = 135 + 270;
143
+ yViewBox = -15;
144
+ }
145
+
146
+ // 0.5
147
+ if (boundary === 0.5) {
148
+ // 0 is left
149
+ // ie. 180 degreese
150
+ min = 180;
151
+ max = 180 + 180;
152
+ yViewBox = -50;
153
+ }
154
+
155
+ // 0.25
156
+ if (boundary === 0.25) {
157
+ // 0 is angle top left
158
+ // ie. 225 degreese
159
+ min = 225;
160
+ max = 225 + 90;
161
+ yViewBox = -60;
162
+ }
163
+ if (!['small', 'regular', 'large'].includes(size)) styles.root.maxWidth = size;
164
+ const marks = _react.default.useMemo(() => {
165
+ const values = [];
166
+ if (marks_.length) {
167
+ const center = (0, _utils2.toNumber)(width / 2);
168
+ radius = (0, _utils2.toNumber)(width / 2 - boundaryWidth - outsidePadding);
169
+ let marksValues = marks_;
170
+ if (!(0, _utils.is)('array', marksValues[0])) marksValues = [marksValues];
171
+ marksValues.forEach((marksValue, index) => {
172
+ values[index] = [];
173
+ marksValue.forEach(mark => {
174
+ const {
175
+ size: size_,
176
+ padding: markPadding = 0,
177
+ position
178
+ } = mark,
179
+ other_ = (0, _objectWithoutProperties2.default)(mark, _excluded2);
180
+ const itemPadding = (0, _utils2.toNumber)(markPadding);
181
+ const angle = (0, _utils.valueFromPercentageWithinRange)(position, min, max);
182
+ const start = (0, _utils2.angleToCoordinates)(angle, center, center, radius - itemPadding);
183
+ const end = (0, _utils2.angleToCoordinates)(angle, center, center, radius - (size_ !== undefined ? size_ : markSize) - itemPadding);
184
+ values[index].push(_objectSpread({
185
+ d: ['M', start.x, start.y, 'L', end.x, end.y].join(' ')
186
+ }, other_));
187
+ });
188
+ });
189
+ }
190
+ return values;
191
+ }, [width, height, parts, marks_, markSize, boundary, boundaryWidth, lineCap, outsidePadding, gap]);
192
+ const labels = _react.default.useMemo(() => {
193
+ const values = [];
194
+ if (labels_.length) {
195
+ var _sort$;
196
+ const center = (0, _utils2.toNumber)(width / 2);
197
+ const marksPadding = (0, _utils2.toNumber)(marks_ !== null && marks_ !== void 0 && marks_.length ? ((_sort$ = (marks_ || []).sort((a, b) => b.size - a.size)[0]) === null || _sort$ === void 0 ? void 0 : _sort$.size) || markSize : 0);
198
+ radius = (0, _utils2.toNumber)(width / 2 - boundaryWidth - marksPadding - outsidePadding);
199
+ let labelsValues = labels_;
200
+ if (!(0, _utils.is)('array', labelsValues[0])) labelsValues = [labelsValues];
201
+ labelsValues.forEach((labelsValue, index) => {
202
+ values[index] = [];
203
+ labelsValue.forEach(label => {
204
+ var _label$style;
205
+ const {
206
+ value,
207
+ padding: labelPadding = 0,
208
+ position
209
+ } = label,
210
+ other_ = (0, _objectWithoutProperties2.default)(label, _excluded3);
211
+ const itemPadding = (0, _utils2.toNumber)(labelPadding);
212
+ const fontSize = (0, _utils2.toNumber)(((_label$style = label.style) === null || _label$style === void 0 ? void 0 : _label$style.fontSize) !== undefined ? label.style.fontSize : 14);
213
+ const angle = (0, _utils.valueFromPercentageWithinRange)(position, min, max);
214
+ const start = (0, _utils2.angleToCoordinates)(angle, center, center, radius - fontSize / 2 - itemPadding);
215
+ values[index].push(_objectSpread({
216
+ x: start.x,
217
+ y: start.y,
218
+ value
219
+ }, other_));
220
+ });
221
+ });
222
+ }
223
+ return values;
224
+ }, [width, height, parts, marks_, markSize, boundary, boundaryWidth, lineCap, outsidePadding, gap]);
225
+ const arcs = _react.default.useMemo(() => {
226
+ const values = [];
227
+ let value = [];
228
+ const offset = outsidePadding;
229
+
230
+ // 1
231
+ if (boundary === 1) {
232
+ if (parts === 1) {
233
+ radius = width / 2 - boundaryWidth / 2 - offset;
234
+ values.push({
235
+ d: [
236
+ // Move
237
+ 'M', offset + boundaryWidth / 2, width / 2 + 0.001,
238
+ // Arc
239
+ 'A', radius, radius, 0, 1, 0, offset + boundaryWidth / 2, width / 2].join(' ')
240
+ });
241
+ } else {
242
+ const center = width / 2;
243
+ radius = width / 2 - boundaryWidth / 2 - offset;
244
+ const total = 360;
245
+ const part = (total - parts * gap) / parts;
246
+ const angles = {
247
+ start: (0, _utils2.angleToCoordinates)(0, center, center, radius)
248
+ };
249
+ let anglePrevious = 0;
250
+ for (let i = 0; i < parts; i++) {
251
+ // Move to 0 deg
252
+ if (i === 0) value.push(
253
+ // Move to 0 deg
254
+ 'M', angles.start.x, angles.start.y);
255
+ const angleEnd = anglePrevious + part;
256
+ angles.end = (0, _utils2.angleToCoordinates)(angleEnd, center, center, radius);
257
+ angles.move = (0, _utils2.angleToCoordinates)(angleEnd + gap, center, center, radius);
258
+
259
+ // Arc
260
+ value.push('A', radius, radius, 0, 0, 1, angles.end.x, angles.end.y);
261
+
262
+ // Move the gap if there's a gap
263
+ if (gap > 0 && i < parts - 1) {
264
+ value.push('M', angles.move.x, angles.move.y);
265
+ anglePrevious = angleEnd + gap;
266
+ } else anglePrevious = angleEnd;
267
+ values.push({
268
+ d: value.join(' ')
269
+ });
270
+
271
+ // Move for the next value
272
+ if (i < parts - 1) {
273
+ value = ['M', angles.move.x, angles.move.y];
274
+ }
10
275
  }
11
- return t;
12
- };
13
- var __importDefault = (this && this.__importDefault) || function (mod) {
14
- return (mod && mod.__esModule) ? mod : { "default": mod };
15
- };
16
- Object.defineProperty(exports, "__esModule", { value: true });
17
- const jsx_runtime_1 = require("react/jsx-runtime");
18
- const react_1 = __importDefault(require("react"));
19
- const utils_1 = require("@onesy/utils");
20
- const style_react_1 = require("@onesy/style-react");
21
- const Surface_1 = __importDefault(require("../Surface"));
22
- const utils_2 = require("../utils");
23
- const useStyle = (0, style_react_1.style)(theme => ({
24
- root: {
25
- width: '100vw'
26
- },
27
- size_small: {
28
- maxWidth: '180px'
29
- },
30
- size_regular: {
31
- maxWidth: '240px'
32
- },
33
- size_large: {
34
- maxWidth: '300px'
35
- },
36
- boundary_1: {
37
- aspectRatio: '1'
38
- },
39
- boundary_075: {
40
- aspectRatio: '1'
41
- },
42
- boundary_05: {
43
- aspectRatio: '1'
44
- },
45
- boundary_025: {
46
- aspectRatio: '1'
47
- },
48
- label: Object.assign(Object.assign({}, theme.typography.values.b2), { textAnchor: 'middle', alignmentBaseline: 'central', dominantBaseline: 'central' }),
49
- svg: {
50
- position: 'relative',
51
- width: '100%',
52
- height: 'auto'
276
+ }
277
+ }
278
+
279
+ // 0.75
280
+ if (boundary === 0.75) {
281
+ value = [];
282
+ const center = width / 2;
283
+ radius = width / 2 - boundaryWidth / 2 - offset;
284
+ const angles = {
285
+ end: (0, _utils2.angleToCoordinates)(45, center, center, radius),
286
+ start: (0, _utils2.angleToCoordinates)(135, center, center, radius)
287
+ };
288
+ if (parts === 1) {
289
+ values.push({
290
+ d: [
291
+ // Line middle bottom
292
+ 'M', angles.start.x, angles.start.y,
293
+ // Arc
294
+ 'A', radius, radius, 0, 1, 1, angles.end.x, angles.end.y].join(' ')
295
+ });
296
+ } else {
297
+ const total = 270;
298
+ const part = (total - (parts - 1) * gap) / parts;
299
+ const angles_ = {
300
+ 0: (0, _utils2.angleToCoordinates)(135, center, center, radius)
301
+ };
302
+ let anglePrevious = 135;
303
+ for (let i = 0; i < parts; i++) {
304
+ // Move to 135 deg
305
+ if (i === 0) value.push(
306
+ // Move to 0 deg
307
+ 'M', angles_[0].x, angles_[0].y);
308
+ const angleEnd = anglePrevious + part;
309
+ angles_.end = (0, _utils2.angleToCoordinates)(angleEnd, center, center, radius);
310
+ angles_.move = (0, _utils2.angleToCoordinates)(angleEnd + gap, center, center, radius);
311
+
312
+ // Arc
313
+ value.push('A', radius, radius, 0, 0, 1, angles_.end.x, angles_.end.y);
314
+
315
+ // Move the gap if there's a gap
316
+ if (gap > 0 && i < parts - 1) {
317
+ value.push('M', angles_.move.x, angles_.move.y);
318
+ anglePrevious = angleEnd + gap;
319
+ } else anglePrevious = angleEnd;
320
+ values.push({
321
+ d: value.join(' ')
322
+ });
323
+
324
+ // Move for the next value
325
+ if (i < parts - 1) {
326
+ value = ['M', angles_.move.x, angles_.move.y];
327
+ }
328
+ }
329
+ }
330
+ }
331
+
332
+ // 0.5
333
+ if (boundary === 0.5) {
334
+ value = [];
335
+ const center = width / 2;
336
+ radius = width / 2 - boundaryWidth / 2 - offset;
337
+ const total = 180;
338
+ const part = (total - (parts - 1) * gap) / parts;
339
+ const angles = {
340
+ start: (0, _utils2.angleToCoordinates)(180, center, center, radius)
341
+ };
342
+ let anglePrevious = 180;
343
+ for (let i = 0; i < parts; i++) {
344
+ // Move to 180 deg
345
+ if (i === 0) value.push(
346
+ // Move to 0 deg
347
+ 'M', angles.start.x, angles.start.y);
348
+ const angleEnd = anglePrevious + part;
349
+ angles.end = (0, _utils2.angleToCoordinates)(angleEnd, center, center, radius);
350
+ angles.move = (0, _utils2.angleToCoordinates)(angleEnd + gap, center, center, radius);
351
+
352
+ // Arc
353
+ value.push('A', radius, radius, 0, 0, 1, angles.end.x, angles.end.y);
354
+
355
+ // Move the gap if there's a gap
356
+ if (gap > 0 && i < parts - 1) {
357
+ value.push('M', angles.move.x, angles.move.y);
358
+ anglePrevious = angleEnd + gap;
359
+ } else anglePrevious = angleEnd;
360
+ values.push({
361
+ d: value.join(' ')
362
+ });
363
+
364
+ // Move for the next value
365
+ if (i < parts - 1) {
366
+ value = ['M', angles.move.x, angles.move.y];
367
+ }
368
+ }
53
369
  }
54
- }), { name: 'onesy-RoundMeter' });
55
- const RoundMeter = react_1.default.forwardRef((props_, ref) => {
56
- const theme = (0, style_react_1.useOnesyTheme)();
57
- const props = react_1.default.useMemo(() => { var _a, _b, _c, _d, _e, _f, _g, _h; return (Object.assign(Object.assign(Object.assign({}, (_d = (_c = (_b = (_a = theme === null || theme === void 0 ? void 0 : theme.ui) === null || _a === void 0 ? void 0 : _a.elements) === null || _b === void 0 ? void 0 : _b.all) === null || _c === void 0 ? void 0 : _c.props) === null || _d === void 0 ? void 0 : _d.default), (_h = (_g = (_f = (_e = theme === null || theme === void 0 ? void 0 : theme.ui) === null || _e === void 0 ? void 0 : _e.elements) === null || _f === void 0 ? void 0 : _f.onesyRoundMeter) === null || _g === void 0 ? void 0 : _g.props) === null || _h === void 0 ? void 0 : _h.default), props_)); }, [props_]);
58
- const Surface = react_1.default.useMemo(() => { var _a; return ((_a = theme === null || theme === void 0 ? void 0 : theme.elements) === null || _a === void 0 ? void 0 : _a.Surface) || Surface_1.default; }, [theme]);
59
- const { tonal = true, color = 'primary', size = 'regular', parts: parts_ = 1, lineCap, padding: outsidePadding = 0, gap: gap_ = 0, border = false, background = false, boundary: boundary_ = 1, boundaryWidth = 1, arcProgress = false, arcsVisible = true, marksVisible = true, labelsVisible = true, marks: marks_ = [], markSize = 4, markWidth = 1, labels: labels_ = [], renderLabel, childrenPosition = 'post', additional, textProps, pathProps, SvgProps, MarkProps, LabelProps, BackgroundProps, BorderProps, ArcProps, ArcMainProps, ArcsProgressProps, ArcProgressProps, Component = 'div', className, style, children } = props, other = __rest(props, ["tonal", "color", "size", "parts", "lineCap", "padding", "gap", "border", "background", "boundary", "boundaryWidth", "arcProgress", "arcsVisible", "marksVisible", "labelsVisible", "marks", "markSize", "markWidth", "labels", "renderLabel", "childrenPosition", "additional", "textProps", "pathProps", "SvgProps", "MarkProps", "LabelProps", "BackgroundProps", "BorderProps", "ArcProps", "ArcMainProps", "ArcsProgressProps", "ArcProgressProps", "Component", "className", "style", "children"]);
60
- const { classes } = useStyle();
61
- const refs = {
62
- root: react_1.default.useRef(undefined)
63
- };
64
- const styles = {
65
- root: {}
66
- };
67
- let radius;
68
- const boundary = (0, utils_1.parse)(boundary_);
69
- const width = 240;
70
- const height = width;
71
- let gap = ['round', 'square'].includes(lineCap) ? gap_ + (boundaryWidth / 2) : gap_;
72
- const parts = (0, utils_1.clamp)((0, utils_1.parse)(parts_), 1, 180);
73
- let min = 0;
74
- let max = 360;
75
- let yViewBox = 0;
370
+
371
+ // 0.25
372
+ if (boundary === 0.25) {
373
+ value = [];
374
+ const center = width / 2;
375
+ radius = width / 2 - boundaryWidth / 2 - offset;
376
+ const total = 90;
377
+ const part = (0, _utils.clamp)((total - (parts - 1) * gap) / parts, 0.01);
378
+ gap = (0, _utils.clamp)(gap, 0, (total - part * parts) / (parts - 1));
379
+ const angles = {
380
+ start: (0, _utils2.angleToCoordinates)(225, center, center, radius)
381
+ };
382
+ let anglePrevious = 225;
383
+ for (let i = 0; i < parts; i++) {
384
+ // Move to 225 deg
385
+ if (i === 0) value.push(
386
+ // Move to 0 deg
387
+ 'M', angles.start.x, angles.start.y);
388
+ const angleEnd = anglePrevious + part;
389
+ angles.end = (0, _utils2.angleToCoordinates)(angleEnd, center, center, radius);
390
+ angles.move = (0, _utils2.angleToCoordinates)(angleEnd + gap, center, center, radius);
391
+
392
+ // Arc
393
+ value.push('A', radius, radius, 0, 0, 1, angles.end.x, angles.end.y);
394
+
395
+ // Move the gap if there's a gap
396
+ if (gap > 0 && i < parts - 1) {
397
+ value.push('M', angles.move.x, angles.move.y);
398
+ anglePrevious = angleEnd + gap;
399
+ } else anglePrevious = angleEnd;
400
+ values.push({
401
+ d: value.join(' ')
402
+ });
403
+
404
+ // Move for the next value
405
+ if (i < parts - 1) {
406
+ value = ['M', angles.move.x, angles.move.y];
407
+ }
408
+ }
409
+ }
410
+ return values;
411
+ }, [width, height, parts, boundary, boundaryWidth, lineCap, outsidePadding, gap, gap_]);
412
+ const pathBackground = _react.default.useMemo(() => {
413
+ const values = [];
414
+ const offset = outsidePadding;
415
+
76
416
  // 1
77
417
  if (boundary === 1) {
78
- // 0 is middle top
79
- // ie. 270 degreese
80
- min = 270;
81
- max = 270 + 360;
418
+ radius = width / 2 - boundaryWidth / 2 - offset;
419
+ values.push(
420
+ // Move
421
+ 'M', offset + boundaryWidth / 2, width / 2 + 0.001,
422
+ // Arc
423
+ 'A', radius, radius, 0, 1, 0, offset + boundaryWidth / 2, width / 2);
82
424
  }
425
+
83
426
  // 0.75
84
427
  if (boundary === 0.75) {
85
- // 0 is angle bottom left
86
- // ie. 270 degreese
87
- min = 135;
88
- max = 135 + 270;
89
- yViewBox = -15;
428
+ const center = width / 2;
429
+ radius = width / 2 - boundaryWidth / 2 - offset;
430
+ const angles = {
431
+ end: (0, _utils2.angleToCoordinates)(45, center, center, radius),
432
+ start: (0, _utils2.angleToCoordinates)(135, center, center, radius)
433
+ };
434
+ values.push(
435
+ // Move
436
+ 'M', center, center,
437
+ // Line middle bottom
438
+ 'L', angles.start.x, angles.start.y,
439
+ // Arc
440
+ 'A', radius, radius, 0, 1, 1, angles.end.x, angles.end.y,
441
+ // Line bottom middle
442
+ 'L', center, center, 'Z');
90
443
  }
444
+
91
445
  // 0.5
92
446
  if (boundary === 0.5) {
93
- // 0 is left
94
- // ie. 180 degreese
95
- min = 180;
96
- max = 180 + 180;
97
- yViewBox = -50;
447
+ const center = width / 2;
448
+ radius = width / 2 - boundaryWidth / 2 - offset;
449
+ const total = 180;
450
+ const part = (total - (parts - 1) * gap) / parts;
451
+ const angles = {
452
+ start: (0, _utils2.angleToCoordinates)(180, center, center, radius)
453
+ };
454
+ const anglePrevious = 180;
455
+ const angleEnd = anglePrevious + part;
456
+ angles.end = (0, _utils2.angleToCoordinates)(angleEnd, center, center, radius);
457
+ angles.move = (0, _utils2.angleToCoordinates)(angleEnd + gap, center, center, radius);
458
+ values.push(
459
+ // Move
460
+ 'M', angles.start.x, angles.start.y,
461
+ // Arc
462
+ 'A', radius, radius, 0, 0, 1, angles.end.x, angles.end.y, 'Z');
98
463
  }
464
+
99
465
  // 0.25
100
466
  if (boundary === 0.25) {
101
- // 0 is angle top left
102
- // ie. 225 degreese
103
- min = 225;
104
- max = 225 + 90;
105
- yViewBox = -60;
467
+ const center = width / 2;
468
+ radius = width / 2 - boundaryWidth / 2 - offset;
469
+ const total = 90;
470
+ const part = (0, _utils.clamp)((total - (parts - 1) * gap) / parts, 0.01);
471
+ gap = (0, _utils.clamp)(gap, 0, (total - part * parts) / (parts - 1));
472
+ const angles = {
473
+ start: (0, _utils2.angleToCoordinates)(225, center, center, radius)
474
+ };
475
+ const anglePrevious = 225;
476
+ const angleEnd = anglePrevious + part;
477
+ angles.end = (0, _utils2.angleToCoordinates)(angleEnd, center, center, radius);
478
+ angles.move = (0, _utils2.angleToCoordinates)(angleEnd + gap, center, center, radius);
479
+ values.push(
480
+ // Move
481
+ 'M', center, width / 2 - boundaryWidth,
482
+ // Line middle bottom, top quarter left
483
+ 'L', angles.start.x, angles.start.y,
484
+ // Arc
485
+ 'A', radius, radius, 0, 0, 1, angles.end.x, angles.end.y,
486
+ // Line top quarter right, middle bottom
487
+ 'L', center, width / 2 - boundaryWidth, 'Z');
106
488
  }
107
- if (!['small', 'regular', 'large'].includes(size))
108
- styles.root.maxWidth = size;
109
- const marks = react_1.default.useMemo(() => {
110
- const values = [];
111
- if (marks_.length) {
112
- const center = (0, utils_2.toNumber)(width / 2);
113
- radius = (0, utils_2.toNumber)((width / 2) - boundaryWidth - outsidePadding);
114
- let marksValues = marks_;
115
- if (!(0, utils_1.is)('array', marksValues[0]))
116
- marksValues = [marksValues];
117
- marksValues.forEach((marksValue, index) => {
118
- values[index] = [];
119
- marksValue.forEach((mark) => {
120
- const { size: size_, padding: markPadding = 0, position } = mark, other_ = __rest(mark, ["size", "padding", "position"]);
121
- const itemPadding = (0, utils_2.toNumber)(markPadding);
122
- const angle = (0, utils_1.valueFromPercentageWithinRange)(position, min, max);
123
- const start = (0, utils_2.angleToCoordinates)(angle, center, center, radius - itemPadding);
124
- const end = (0, utils_2.angleToCoordinates)(angle, center, center, radius - (size_ !== undefined ? size_ : markSize) - itemPadding);
125
- values[index].push(Object.assign({ d: [
126
- 'M', start.x, start.y,
127
- 'L', end.x, end.y
128
- ].join(' ') }, other_));
129
- });
130
- });
131
- }
132
- return values;
133
- }, [width, height, parts, marks_, markSize, boundary, boundaryWidth, lineCap, outsidePadding, gap]);
134
- const labels = react_1.default.useMemo(() => {
135
- var _a;
136
- const values = [];
137
- if (labels_.length) {
138
- const center = (0, utils_2.toNumber)(width / 2);
139
- const marksPadding = (0, utils_2.toNumber)((marks_ === null || marks_ === void 0 ? void 0 : marks_.length) ? ((_a = (marks_ || []).sort((a, b) => b.size - a.size)[0]) === null || _a === void 0 ? void 0 : _a.size) || markSize : 0);
140
- radius = (0, utils_2.toNumber)((width / 2) - boundaryWidth - marksPadding - outsidePadding);
141
- let labelsValues = labels_;
142
- if (!(0, utils_1.is)('array', labelsValues[0]))
143
- labelsValues = [labelsValues];
144
- labelsValues.forEach((labelsValue, index) => {
145
- values[index] = [];
146
- labelsValue.forEach((label) => {
147
- var _a;
148
- const { value, padding: labelPadding = 0, position } = label, other_ = __rest(label, ["value", "padding", "position"]);
149
- const itemPadding = (0, utils_2.toNumber)(labelPadding);
150
- const fontSize = (0, utils_2.toNumber)(((_a = label.style) === null || _a === void 0 ? void 0 : _a.fontSize) !== undefined ? label.style.fontSize : 14);
151
- const angle = (0, utils_1.valueFromPercentageWithinRange)(position, min, max);
152
- const start = (0, utils_2.angleToCoordinates)(angle, center, center, radius - (fontSize / 2) - itemPadding);
153
- values[index].push(Object.assign({ x: start.x, y: start.y, value }, other_));
154
- });
155
- });
156
- }
157
- return values;
158
- }, [width, height, parts, marks_, markSize, boundary, boundaryWidth, lineCap, outsidePadding, gap]);
159
- const arcs = react_1.default.useMemo(() => {
160
- const values = [];
161
- let value = [];
162
- const offset = outsidePadding;
163
- // 1
164
- if (boundary === 1) {
165
- if (parts === 1) {
166
- radius = ((width / 2) - (boundaryWidth / 2)) - offset;
167
- values.push({
168
- d: [
169
- // Move
170
- 'M', offset + (boundaryWidth / 2), (width / 2) + 0.001,
171
- // Arc
172
- 'A', radius, radius, 0, 1, 0, offset + (boundaryWidth / 2), (width / 2)
173
- ].join(' ')
174
- });
175
- }
176
- else {
177
- const center = width / 2;
178
- radius = (width / 2) - (boundaryWidth / 2) - offset;
179
- const total = 360;
180
- const part = (total - (parts * gap)) / parts;
181
- const angles = {
182
- start: (0, utils_2.angleToCoordinates)(0, center, center, radius)
183
- };
184
- let anglePrevious = 0;
185
- for (let i = 0; i < parts; i++) {
186
- // Move to 0 deg
187
- if (i === 0)
188
- value.push(
189
- // Move to 0 deg
190
- 'M', angles.start.x, angles.start.y);
191
- const angleEnd = anglePrevious + part;
192
- angles.end = (0, utils_2.angleToCoordinates)(angleEnd, center, center, radius);
193
- angles.move = (0, utils_2.angleToCoordinates)(angleEnd + gap, center, center, radius);
194
- // Arc
195
- value.push('A', radius, radius, 0, 0, 1, angles.end.x, angles.end.y);
196
- // Move the gap if there's a gap
197
- if (gap > 0 && i < parts - 1) {
198
- value.push('M', angles.move.x, angles.move.y);
199
- anglePrevious = angleEnd + gap;
200
- }
201
- else
202
- anglePrevious = angleEnd;
203
- values.push({ d: value.join(' ') });
204
- // Move for the next value
205
- if (i < parts - 1) {
206
- value = [
207
- 'M', angles.move.x, angles.move.y
208
- ];
209
- }
210
- }
211
- }
212
- }
213
- // 0.75
214
- if (boundary === 0.75) {
215
- value = [];
216
- const center = width / 2;
217
- radius = ((width / 2) - (boundaryWidth / 2)) - offset;
218
- const angles = {
219
- end: (0, utils_2.angleToCoordinates)(45, center, center, radius),
220
- start: (0, utils_2.angleToCoordinates)(135, center, center, radius)
221
- };
222
- if (parts === 1) {
223
- values.push({
224
- d: [
225
- // Line middle bottom
226
- 'M', angles.start.x, angles.start.y,
227
- // Arc
228
- 'A', radius, radius, 0, 1, 1, angles.end.x, angles.end.y
229
- ].join(' ')
230
- });
231
- }
232
- else {
233
- const total = 270;
234
- const part = (total - ((parts - 1) * gap)) / parts;
235
- const angles_ = {
236
- 0: (0, utils_2.angleToCoordinates)(135, center, center, radius)
237
- };
238
- let anglePrevious = 135;
239
- for (let i = 0; i < parts; i++) {
240
- // Move to 135 deg
241
- if (i === 0)
242
- value.push(
243
- // Move to 0 deg
244
- 'M', angles_[0].x, angles_[0].y);
245
- const angleEnd = anglePrevious + part;
246
- angles_.end = (0, utils_2.angleToCoordinates)(angleEnd, center, center, radius);
247
- angles_.move = (0, utils_2.angleToCoordinates)(angleEnd + gap, center, center, radius);
248
- // Arc
249
- value.push('A', radius, radius, 0, 0, 1, angles_.end.x, angles_.end.y);
250
- // Move the gap if there's a gap
251
- if (gap > 0 && i < parts - 1) {
252
- value.push('M', angles_.move.x, angles_.move.y);
253
- anglePrevious = angleEnd + gap;
254
- }
255
- else
256
- anglePrevious = angleEnd;
257
- values.push({ d: value.join(' ') });
258
- // Move for the next value
259
- if (i < parts - 1) {
260
- value = [
261
- 'M', angles_.move.x, angles_.move.y
262
- ];
263
- }
264
- }
265
- }
266
- }
267
- // 0.5
268
- if (boundary === 0.5) {
269
- value = [];
270
- const center = width / 2;
271
- radius = ((width / 2) - (boundaryWidth / 2)) - offset;
272
- const total = 180;
273
- const part = (total - ((parts - 1) * gap)) / parts;
274
- const angles = {
275
- start: (0, utils_2.angleToCoordinates)(180, center, center, radius)
276
- };
277
- let anglePrevious = 180;
278
- for (let i = 0; i < parts; i++) {
279
- // Move to 180 deg
280
- if (i === 0)
281
- value.push(
282
- // Move to 0 deg
283
- 'M', angles.start.x, angles.start.y);
284
- const angleEnd = anglePrevious + part;
285
- angles.end = (0, utils_2.angleToCoordinates)(angleEnd, center, center, radius);
286
- angles.move = (0, utils_2.angleToCoordinates)(angleEnd + gap, center, center, radius);
287
- // Arc
288
- value.push('A', radius, radius, 0, 0, 1, angles.end.x, angles.end.y);
289
- // Move the gap if there's a gap
290
- if (gap > 0 && i < parts - 1) {
291
- value.push('M', angles.move.x, angles.move.y);
292
- anglePrevious = angleEnd + gap;
293
- }
294
- else
295
- anglePrevious = angleEnd;
296
- values.push({ d: value.join(' ') });
297
- // Move for the next value
298
- if (i < parts - 1) {
299
- value = [
300
- 'M', angles.move.x, angles.move.y
301
- ];
302
- }
303
- }
304
- }
305
- // 0.25
306
- if (boundary === 0.25) {
307
- value = [];
308
- const center = width / 2;
309
- radius = ((width / 2) - (boundaryWidth / 2)) - offset;
310
- const total = 90;
311
- const part = (0, utils_1.clamp)((total - ((parts - 1) * gap)) / parts, 0.01);
312
- gap = (0, utils_1.clamp)(gap, 0, ((total - (part * parts)) / (parts - 1)));
313
- const angles = {
314
- start: (0, utils_2.angleToCoordinates)(225, center, center, radius)
315
- };
316
- let anglePrevious = 225;
317
- for (let i = 0; i < parts; i++) {
318
- // Move to 225 deg
319
- if (i === 0)
320
- value.push(
321
- // Move to 0 deg
322
- 'M', angles.start.x, angles.start.y);
323
- const angleEnd = anglePrevious + part;
324
- angles.end = (0, utils_2.angleToCoordinates)(angleEnd, center, center, radius);
325
- angles.move = (0, utils_2.angleToCoordinates)(angleEnd + gap, center, center, radius);
326
- // Arc
327
- value.push('A', radius, radius, 0, 0, 1, angles.end.x, angles.end.y);
328
- // Move the gap if there's a gap
329
- if (gap > 0 && i < parts - 1) {
330
- value.push('M', angles.move.x, angles.move.y);
331
- anglePrevious = angleEnd + gap;
332
- }
333
- else
334
- anglePrevious = angleEnd;
335
- values.push({ d: value.join(' ') });
336
- // Move for the next value
337
- if (i < parts - 1) {
338
- value = [
339
- 'M', angles.move.x, angles.move.y
340
- ];
341
- }
342
- }
343
- }
344
- return values;
345
- }, [width, height, parts, boundary, boundaryWidth, lineCap, outsidePadding, gap, gap_]);
346
- const pathBackground = react_1.default.useMemo(() => {
347
- const values = [];
348
- const offset = outsidePadding;
349
- // 1
350
- if (boundary === 1) {
351
- radius = ((width / 2) - (boundaryWidth / 2)) - offset;
352
- values.push(
353
- // Move
354
- 'M', offset + (boundaryWidth / 2), (width / 2) + 0.001,
355
- // Arc
356
- 'A', radius, radius, 0, 1, 0, offset + (boundaryWidth / 2), (width / 2));
357
- }
358
- // 0.75
359
- if (boundary === 0.75) {
360
- const center = width / 2;
361
- radius = ((width / 2) - (boundaryWidth / 2)) - offset;
362
- const angles = {
363
- end: (0, utils_2.angleToCoordinates)(45, center, center, radius),
364
- start: (0, utils_2.angleToCoordinates)(135, center, center, radius)
365
- };
366
- values.push(
367
- // Move
368
- 'M', center, center,
369
- // Line middle bottom
370
- 'L', angles.start.x, angles.start.y,
371
- // Arc
372
- 'A', radius, radius, 0, 1, 1, angles.end.x, angles.end.y,
373
- // Line bottom middle
374
- 'L', center, center, 'Z');
375
- }
376
- // 0.5
377
- if (boundary === 0.5) {
378
- const center = width / 2;
379
- radius = ((width / 2) - (boundaryWidth / 2)) - offset;
380
- const total = 180;
381
- const part = (total - ((parts - 1) * gap)) / parts;
382
- const angles = {
383
- start: (0, utils_2.angleToCoordinates)(180, center, center, radius)
384
- };
385
- const anglePrevious = 180;
386
- const angleEnd = anglePrevious + part;
387
- angles.end = (0, utils_2.angleToCoordinates)(angleEnd, center, center, radius);
388
- angles.move = (0, utils_2.angleToCoordinates)(angleEnd + gap, center, center, radius);
389
- values.push(
390
- // Move
391
- 'M', angles.start.x, angles.start.y,
392
- // Arc
393
- 'A', radius, radius, 0, 0, 1, angles.end.x, angles.end.y, 'Z');
394
- }
395
- // 0.25
396
- if (boundary === 0.25) {
397
- const center = width / 2;
398
- radius = ((width / 2) - (boundaryWidth / 2)) - offset;
399
- const total = 90;
400
- const part = (0, utils_1.clamp)((total - ((parts - 1) * gap)) / parts, 0.01);
401
- gap = (0, utils_1.clamp)(gap, 0, ((total - (part * parts)) / (parts - 1)));
402
- const angles = {
403
- start: (0, utils_2.angleToCoordinates)(225, center, center, radius)
404
- };
405
- const anglePrevious = 225;
406
- const angleEnd = anglePrevious + part;
407
- angles.end = (0, utils_2.angleToCoordinates)(angleEnd, center, center, radius);
408
- angles.move = (0, utils_2.angleToCoordinates)(angleEnd + gap, center, center, radius);
409
- values.push(
410
- // Move
411
- 'M', center, ((width / 2) - boundaryWidth),
412
- // Line middle bottom, top quarter left
413
- 'L', angles.start.x, angles.start.y,
414
- // Arc
415
- 'A', radius, radius, 0, 0, 1, angles.end.x, angles.end.y,
416
- // Line top quarter right, middle bottom
417
- 'L', center, ((width / 2) - boundaryWidth), 'Z');
418
- }
419
- return values.join(' ');
420
- }, [width, height, boundary, boundaryWidth, outsidePadding]);
421
- const pathBorder = react_1.default.useMemo(() => {
422
- const values = [];
423
- const offset = outsidePadding;
424
- // 0.75
425
- if (boundary === 0.75) {
426
- const center = width / 2;
427
- radius = ((width / 2) - (boundaryWidth / 2)) - offset;
428
- const angles = {
429
- end: (0, utils_2.angleToCoordinates)(45, center, center, radius),
430
- start: (0, utils_2.angleToCoordinates)(135, center, center, radius)
431
- };
432
- values.push(
433
- // Move bottom angle left
434
- 'M', angles.start.x, angles.start.y,
435
- // Line middle
436
- 'L', center, center,
437
- // Line bottom angle right
438
- 'L', angles.end.x, angles.end.y);
439
- }
440
- // 0.5
441
- if (boundary === 0.5) {
442
- const center = width / 2;
443
- radius = ((width / 2) - (boundaryWidth / 2)) - offset;
444
- const angles = {
445
- start: (0, utils_2.angleToCoordinates)(180, center, center, radius)
446
- };
447
- values.push(
448
- // Move
449
- 'M', angles.start.x, angles.start.y,
450
- // Line
451
- 'L', (width - (boundaryWidth / 2)) - offset, angles.start.y);
452
- }
453
- // 0.25
454
- if (boundary === 0.25) {
455
- const center = width / 2;
456
- radius = ((width / 2) - (boundaryWidth / 2)) - offset;
457
- const total = 90;
458
- const part = (0, utils_1.clamp)((total - ((parts - 1) * gap)) / parts, 0.01);
459
- gap = (0, utils_1.clamp)(gap, 0, ((total - (part * parts)) / (parts - 1)));
460
- const angles = {
461
- start: (0, utils_2.angleToCoordinates)(225, center, center, radius),
462
- end: (0, utils_2.angleToCoordinates)(315, center, center, radius)
463
- };
464
- values.push(
465
- // Move middle bottom, top quarter left
466
- 'M', angles.start.x, angles.start.y,
467
- // Line middle bottom
468
- 'L', center, ((width / 2) - boundaryWidth),
469
- // Arc top quarter right, middle bottom
470
- 'L', angles.end.x, angles.end.y);
471
- }
472
- return values.join(' ');
473
- }, [width, height, boundary, boundaryWidth, outsidePadding]);
474
- const children_ = children && ((0, jsx_runtime_1.jsx)("g", Object.assign({ className: (0, style_react_1.classNames)([
475
- (0, utils_2.staticClassName)('RoundMeter', theme) && [
476
- 'onesy-RoundMeter-children'
477
- ],
478
- classes.children
479
- ]) }, { children: react_1.default.Children.toArray(children).map((item, index) => {
480
- return (react_1.default.cloneElement(item, {
481
- key: index,
482
- fill: item.props.fill !== undefined ? item.props.fill : color,
483
- stroke: item.props.stroke !== undefined ? item.props.stroke : color,
484
- // clean up
485
- value: undefined,
486
- style: Object.assign(Object.assign({}, (item.props.value !== undefined ? {
487
- transform: `rotate(${(0, utils_1.valueFromPercentageWithinRange)(item.props.value, min, max)}deg)`
488
- } : undefined)), item.props.style)
489
- }));
490
- }) })));
491
- return ((0, jsx_runtime_1.jsxs)(Component, Object.assign({ ref: item => {
492
- if (ref) {
493
- if ((0, utils_1.is)('function', ref))
494
- ref(item);
495
- else
496
- ref.current = item;
497
- }
498
- refs.root.current = item;
499
- }, className: (0, style_react_1.classNames)([
500
- (0, utils_2.staticClassName)('RoundMeter', theme) && [
501
- 'onesy-RoundMeter-root',
502
- `onesy-RoundMeter-size-${size}`
503
- ],
504
- className,
505
- classes.root,
506
- classes[`size_${size}`],
507
- classes[`boundary_${String(boundary).replace('.', '')}`]
508
- ]), style: Object.assign(Object.assign({}, styles.root), style) }, other, { children: [additional, (0, jsx_runtime_1.jsx)(Surface, Object.assign({ tonal: tonal, color: color }, { children: ({ color: color_, backgroundColor }) => ((0, jsx_runtime_1.jsxs)("svg", Object.assign({ xmlns: 'http://www.w3.org/2000/svg', viewBox: `0 ${yViewBox} ${width || 0} ${height || 0}` }, SvgProps, { className: (0, style_react_1.classNames)([
509
- (0, utils_2.staticClassName)('RoundMeter', theme) && [
510
- 'onesy-RoundMeter-svg'
511
- ],
512
- SvgProps === null || SvgProps === void 0 ? void 0 : SvgProps.className,
513
- classes.svg
514
- ]) }, { children: [childrenPosition === 'pre' && children_, background && ((0, jsx_runtime_1.jsx)("path", Object.assign({ d: pathBackground, fill: backgroundColor, stroke: 'none' }, pathProps, BackgroundProps))), border && ((0, jsx_runtime_1.jsx)("path", Object.assign({ d: pathBorder, fill: 'none', stroke: color_, strokeWidth: boundaryWidth }, pathProps, BorderProps))), arcsVisible && ((0, jsx_runtime_1.jsx)("g", Object.assign({ className: (0, style_react_1.classNames)([
515
- (0, utils_2.staticClassName)('RoundMeter', theme) && [
516
- 'onesy-RoundMeter-arcs'
517
- ],
518
- classes.arcs
519
- ]) }, { children: (arcs.map((item, index) => ((0, jsx_runtime_1.jsx)("path", Object.assign({ d: item.d, fill: 'none', stroke: color_, strokeWidth: boundaryWidth, strokeLinecap: lineCap }, pathProps, ArcProps, ArcMainProps), index)))) }))), arcsVisible && arcProgress && ((0, jsx_runtime_1.jsx)("g", Object.assign({}, ArcsProgressProps, { className: (0, style_react_1.classNames)([
520
- (0, utils_2.staticClassName)('RoundMeter', theme) && [
521
- 'onesy-RoundMeter-arcs-progress'
522
- ],
523
- ArcsProgressProps === null || ArcsProgressProps === void 0 ? void 0 : ArcsProgressProps.className,
524
- classes.arcs_progress
525
- ]) }, { children: (arcs.map((item, index) => ((0, jsx_runtime_1.jsx)("path", Object.assign({ d: item.d, fill: 'none', stroke: color_, strokeWidth: boundaryWidth, strokeLinecap: lineCap }, pathProps, ArcProps, ArcProgressProps), index)))) }))), childrenPosition === 'pre-marks' && children_, marksVisible && !!marks_.length && (marks.map((marksValue, index) => ((0, jsx_runtime_1.jsx)("g", Object.assign({ className: (0, style_react_1.classNames)([
526
- (0, utils_2.staticClassName)('RoundMeter', theme) && [
527
- 'onesy-RoundMeter-marks'
528
- ],
529
- classes.marks
530
- ]) }, { children: (marksValue.map((item, index_) => ((0, jsx_runtime_1.jsx)("path", Object.assign({ d: item.d, fill: 'none', stroke: color_, strokeWidth: item.width !== undefined ? item.width : markWidth, strokeLinecap: lineCap }, pathProps, MarkProps), index_)))) }), index)))), childrenPosition === 'pre-labels' && children_, labelsVisible && !!labels_.length && (labels.map((labelsValue, index) => {
531
- return ((0, jsx_runtime_1.jsx)("g", Object.assign({ className: (0, style_react_1.classNames)([
532
- (0, utils_2.staticClassName)('RoundMeter', theme) && [
533
- 'onesy-RoundMeter-labels'
534
- ],
535
- classes.labels
536
- ]) }, { children: (labelsValue.map((item, index_) => {
537
- const { x, y, value } = item, other_ = __rest(item, ["x", "y", "value"]);
538
- const propsLabel = Object.assign(Object.assign(Object.assign(Object.assign({}, other_), textProps), LabelProps), { style: Object.assign(Object.assign(Object.assign({ fill: color_ }, other_.style), textProps === null || textProps === void 0 ? void 0 : textProps.style), LabelProps === null || LabelProps === void 0 ? void 0 : LabelProps.style) });
539
- if ((0, utils_1.is)('function', renderLabel))
540
- return renderLabel(x, y, value, propsLabel);
541
- return ((0, jsx_runtime_1.jsx)("text", Object.assign({ x: x, y: y }, propsLabel, { className: (0, style_react_1.classNames)([
542
- (0, utils_2.staticClassName)('RoundMeter', theme) && [
543
- 'onesy-RoundMeter-label'
544
- ],
545
- other_ === null || other_ === void 0 ? void 0 : other_.className,
546
- textProps === null || textProps === void 0 ? void 0 : textProps.className,
547
- LabelProps === null || LabelProps === void 0 ? void 0 : LabelProps.className,
548
- classes.label
549
- ]) }, { children: value }), index_));
550
- })) }), index));
551
- })), childrenPosition === 'post' && children_] }))) }))] })));
489
+ return values.join(' ');
490
+ }, [width, height, boundary, boundaryWidth, outsidePadding]);
491
+ const pathBorder = _react.default.useMemo(() => {
492
+ const values = [];
493
+ const offset = outsidePadding;
494
+
495
+ // 0.75
496
+ if (boundary === 0.75) {
497
+ const center = width / 2;
498
+ radius = width / 2 - boundaryWidth / 2 - offset;
499
+ const angles = {
500
+ end: (0, _utils2.angleToCoordinates)(45, center, center, radius),
501
+ start: (0, _utils2.angleToCoordinates)(135, center, center, radius)
502
+ };
503
+ values.push(
504
+ // Move bottom angle left
505
+ 'M', angles.start.x, angles.start.y,
506
+ // Line middle
507
+ 'L', center, center,
508
+ // Line bottom angle right
509
+ 'L', angles.end.x, angles.end.y);
510
+ }
511
+
512
+ // 0.5
513
+ if (boundary === 0.5) {
514
+ const center = width / 2;
515
+ radius = width / 2 - boundaryWidth / 2 - offset;
516
+ const angles = {
517
+ start: (0, _utils2.angleToCoordinates)(180, center, center, radius)
518
+ };
519
+ values.push(
520
+ // Move
521
+ 'M', angles.start.x, angles.start.y,
522
+ // Line
523
+ 'L', width - boundaryWidth / 2 - offset, angles.start.y);
524
+ }
525
+
526
+ // 0.25
527
+ if (boundary === 0.25) {
528
+ const center = width / 2;
529
+ radius = width / 2 - boundaryWidth / 2 - offset;
530
+ const total = 90;
531
+ const part = (0, _utils.clamp)((total - (parts - 1) * gap) / parts, 0.01);
532
+ gap = (0, _utils.clamp)(gap, 0, (total - part * parts) / (parts - 1));
533
+ const angles = {
534
+ start: (0, _utils2.angleToCoordinates)(225, center, center, radius),
535
+ end: (0, _utils2.angleToCoordinates)(315, center, center, radius)
536
+ };
537
+ values.push(
538
+ // Move middle bottom, top quarter left
539
+ 'M', angles.start.x, angles.start.y,
540
+ // Line middle bottom
541
+ 'L', center, width / 2 - boundaryWidth,
542
+ // Arc top quarter right, middle bottom
543
+ 'L', angles.end.x, angles.end.y);
544
+ }
545
+ return values.join(' ');
546
+ }, [width, height, boundary, boundaryWidth, outsidePadding]);
547
+ const children_ = children && /*#__PURE__*/_react.default.createElement("g", {
548
+ className: (0, _styleReact.classNames)([(0, _utils2.staticClassName)('RoundMeter', theme) && ['onesy-RoundMeter-children'], classes.children])
549
+ }, _react.default.Children.toArray(children).map((item, index) => {
550
+ return /*#__PURE__*/_react.default.cloneElement(item, {
551
+ key: index,
552
+ fill: item.props.fill !== undefined ? item.props.fill : color,
553
+ stroke: item.props.stroke !== undefined ? item.props.stroke : color,
554
+ // clean up
555
+ value: undefined,
556
+ style: _objectSpread(_objectSpread({}, item.props.value !== undefined ? {
557
+ transform: `rotate(${(0, _utils.valueFromPercentageWithinRange)(item.props.value, min, max)}deg)`
558
+ } : undefined), item.props.style)
559
+ });
560
+ }));
561
+ return /*#__PURE__*/_react.default.createElement(Component, (0, _extends2.default)({
562
+ ref: item => {
563
+ if (ref) {
564
+ if ((0, _utils.is)('function', ref)) ref(item);else ref.current = item;
565
+ }
566
+ refs.root.current = item;
567
+ },
568
+ className: (0, _styleReact.classNames)([(0, _utils2.staticClassName)('RoundMeter', theme) && ['onesy-RoundMeter-root', `onesy-RoundMeter-size-${size}`], className, classes.root, classes[`size_${size}`], classes[`boundary_${String(boundary).replace('.', '')}`]]),
569
+ style: _objectSpread(_objectSpread({}, styles.root), style)
570
+ }, other), additional, /*#__PURE__*/_react.default.createElement(Surface, {
571
+ tonal: tonal,
572
+ color: color
573
+ }, ({
574
+ color: color_,
575
+ backgroundColor
576
+ }) => /*#__PURE__*/_react.default.createElement("svg", (0, _extends2.default)({
577
+ xmlns: "http://www.w3.org/2000/svg",
578
+ viewBox: `0 ${yViewBox} ${width || 0} ${height || 0}`
579
+ }, SvgProps, {
580
+ className: (0, _styleReact.classNames)([(0, _utils2.staticClassName)('RoundMeter', theme) && ['onesy-RoundMeter-svg'], SvgProps === null || SvgProps === void 0 ? void 0 : SvgProps.className, classes.svg])
581
+ }), childrenPosition === 'pre' && children_, background && /*#__PURE__*/_react.default.createElement("path", (0, _extends2.default)({
582
+ d: pathBackground,
583
+ fill: backgroundColor,
584
+ stroke: "none"
585
+ }, pathProps, BackgroundProps)), border && /*#__PURE__*/_react.default.createElement("path", (0, _extends2.default)({
586
+ d: pathBorder,
587
+ fill: "none",
588
+ stroke: color_,
589
+ strokeWidth: boundaryWidth
590
+ }, pathProps, BorderProps)), arcsVisible && /*#__PURE__*/_react.default.createElement("g", {
591
+ className: (0, _styleReact.classNames)([(0, _utils2.staticClassName)('RoundMeter', theme) && ['onesy-RoundMeter-arcs'], classes.arcs])
592
+ }, arcs.map((item, index) => /*#__PURE__*/_react.default.createElement("path", (0, _extends2.default)({
593
+ key: index,
594
+ d: item.d,
595
+ fill: "none",
596
+ stroke: color_,
597
+ strokeWidth: boundaryWidth,
598
+ strokeLinecap: lineCap
599
+ }, pathProps, ArcProps, ArcMainProps)))), arcsVisible && arcProgress && /*#__PURE__*/_react.default.createElement("g", (0, _extends2.default)({}, ArcsProgressProps, {
600
+ className: (0, _styleReact.classNames)([(0, _utils2.staticClassName)('RoundMeter', theme) && ['onesy-RoundMeter-arcs-progress'], ArcsProgressProps === null || ArcsProgressProps === void 0 ? void 0 : ArcsProgressProps.className, classes.arcs_progress])
601
+ }), arcs.map((item, index) => /*#__PURE__*/_react.default.createElement("path", (0, _extends2.default)({
602
+ key: index,
603
+ d: item.d,
604
+ fill: "none",
605
+ stroke: color_,
606
+ strokeWidth: boundaryWidth,
607
+ strokeLinecap: lineCap
608
+ }, pathProps, ArcProps, ArcProgressProps)))), childrenPosition === 'pre-marks' && children_, marksVisible && !!marks_.length && marks.map((marksValue, index) => /*#__PURE__*/_react.default.createElement("g", {
609
+ key: index,
610
+ className: (0, _styleReact.classNames)([(0, _utils2.staticClassName)('RoundMeter', theme) && ['onesy-RoundMeter-marks'], classes.marks])
611
+ }, marksValue.map((item, index_) => /*#__PURE__*/_react.default.createElement("path", (0, _extends2.default)({
612
+ key: index_,
613
+ d: item.d,
614
+ fill: "none",
615
+ stroke: color_,
616
+ strokeWidth: item.width !== undefined ? item.width : markWidth,
617
+ strokeLinecap: lineCap
618
+ }, pathProps, MarkProps))))), childrenPosition === 'pre-labels' && children_, labelsVisible && !!labels_.length && labels.map((labelsValue, index) => {
619
+ return /*#__PURE__*/_react.default.createElement("g", {
620
+ key: index,
621
+ className: (0, _styleReact.classNames)([(0, _utils2.staticClassName)('RoundMeter', theme) && ['onesy-RoundMeter-labels'], classes.labels])
622
+ }, labelsValue.map((item, index_) => {
623
+ const {
624
+ x,
625
+ y,
626
+ value
627
+ } = item,
628
+ other_ = (0, _objectWithoutProperties2.default)(item, _excluded4);
629
+ const propsLabel = _objectSpread(_objectSpread(_objectSpread(_objectSpread({}, other_), textProps), LabelProps), {}, {
630
+ style: _objectSpread(_objectSpread(_objectSpread({
631
+ fill: color_
632
+ }, other_.style), textProps === null || textProps === void 0 ? void 0 : textProps.style), LabelProps === null || LabelProps === void 0 ? void 0 : LabelProps.style)
633
+ });
634
+ if ((0, _utils.is)('function', renderLabel)) return renderLabel(x, y, value, propsLabel);
635
+ return /*#__PURE__*/_react.default.createElement("text", (0, _extends2.default)({
636
+ key: index_,
637
+ x: x,
638
+ y: y
639
+ }, propsLabel, {
640
+ className: (0, _styleReact.classNames)([(0, _utils2.staticClassName)('RoundMeter', theme) && ['onesy-RoundMeter-label'], other_ === null || other_ === void 0 ? void 0 : other_.className, textProps === null || textProps === void 0 ? void 0 : textProps.className, LabelProps === null || LabelProps === void 0 ? void 0 : LabelProps.className, classes.label])
641
+ }), value);
642
+ }));
643
+ }), childrenPosition === 'post' && children_)));
552
644
  });
553
645
  RoundMeter.displayName = 'onesy-RoundMeter';
554
- exports.default = RoundMeter;
646
+ var _default = exports.default = RoundMeter;