@homecode/ui 5.1.9 → 5.1.11

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 (522) hide show
  1. package/dist/esm/index.js +109 -2
  2. package/dist/esm/node_modules/style-inject/dist/style-inject.es.js +28 -2
  3. package/dist/esm/src/components/AssistiveText/AssistiveText.js +10 -2
  4. package/dist/esm/src/components/AssistiveText/AssistiveText.styl.js +7 -2
  5. package/dist/esm/src/components/Autocomplete/Autocomplete.js +429 -2
  6. package/dist/esm/src/components/Autocomplete/Autocomplete.styl.js +7 -2
  7. package/dist/esm/src/components/Button/Button.helpers.js +12 -2
  8. package/dist/esm/src/components/Button/Button.js +38 -2
  9. package/dist/esm/src/components/Button/Button.styl.js +7 -2
  10. package/dist/esm/src/components/ButtonGroup/ButtonGroup.js +10 -2
  11. package/dist/esm/src/components/ButtonGroup/ButtonGroup.styl.js +7 -2
  12. package/dist/esm/src/components/Calendar/Calendar.helpers.js +65 -2
  13. package/dist/esm/src/components/Calendar/Calendar.js +136 -2
  14. package/dist/esm/src/components/Calendar/Calendar.styl.js +7 -2
  15. package/dist/esm/src/components/Card/Card.js +55 -2
  16. package/dist/esm/src/components/Card/Card.styl.js +7 -2
  17. package/dist/esm/src/components/Checkbox/Checkbox.js +19 -2
  18. package/dist/esm/src/components/Checkbox/Checkbox.styl.js +7 -2
  19. package/dist/esm/src/components/Chip/Chip.js +16 -2
  20. package/dist/esm/src/components/Chip/Chip.styl.js +7 -2
  21. package/dist/esm/src/components/Container/Container.js +13 -2
  22. package/dist/esm/src/components/Container/Container.styl.js +7 -2
  23. package/dist/esm/src/components/DatePicker/DatePicker.helpers.js +33 -2
  24. package/dist/esm/src/components/DatePicker/DatePicker.js +47 -2
  25. package/dist/esm/src/components/DatePicker/DatePicker.styl.js +7 -2
  26. package/dist/esm/src/components/DatePickerInput/DatePickerInput.js +44 -2
  27. package/dist/esm/src/components/DatePickerInput/DatePickerInput.styl.js +7 -2
  28. package/dist/esm/src/components/DateTime/DateTime.js +17 -2
  29. package/dist/esm/src/components/Dialogue/Dialogue.js +107 -2
  30. package/dist/esm/src/components/Dialogue/Dialogue.styl.js +7 -2
  31. package/dist/esm/src/components/Draggable/Draggable.js +147 -2
  32. package/dist/esm/src/components/Draggable/Draggable.styl.js +7 -2
  33. package/dist/esm/src/components/DropZone/DropZone.js +112 -2
  34. package/dist/esm/src/components/DropZone/DropZone.styl.js +7 -2
  35. package/dist/esm/src/components/Expand/Expand.js +24 -2
  36. package/dist/esm/src/components/Expand/Expand.styl.js +7 -2
  37. package/dist/esm/src/components/Flex/Flex.js +24 -2
  38. package/dist/esm/src/components/Flex/Flex.styl.js +7 -2
  39. package/dist/esm/src/components/Form/Form.helpers.js +42 -2
  40. package/dist/esm/src/components/Form/Form.js +272 -2
  41. package/dist/esm/src/components/Form/Form.styl.js +7 -2
  42. package/dist/esm/src/components/Form/Form.types.js +0 -1
  43. package/dist/esm/src/components/Form/SubmitButtons/SubmitButtons.js +8 -2
  44. package/dist/esm/src/components/Form/SubmitButtons/SubmitButtons.styl.js +7 -2
  45. package/dist/esm/src/components/Form/Validator.js +24 -6
  46. package/dist/esm/src/components/Gallery/Dots/Dots.js +9 -2
  47. package/dist/esm/src/components/Gallery/Dots/Dots.styl.js +7 -2
  48. package/dist/esm/src/components/Gallery/Gallery.js +222 -2
  49. package/dist/esm/src/components/Gallery/Gallery.styl.js +7 -2
  50. package/dist/esm/src/components/Heading/Heading.js +37 -2
  51. package/dist/esm/src/components/Heading/Heading.styl.js +7 -2
  52. package/dist/esm/src/components/Icon/Icon.js +21 -2
  53. package/dist/esm/src/components/Icon/Icon.styl.js +7 -2
  54. package/dist/esm/src/components/Icon/icons/apple.svg.js +16 -2
  55. package/dist/esm/src/components/Icon/icons/arrowDown.svg.js +17 -2
  56. package/dist/esm/src/components/Icon/icons/arrowLeft.svg.js +17 -2
  57. package/dist/esm/src/components/Icon/icons/arrowRight.svg.js +17 -2
  58. package/dist/esm/src/components/Icon/icons/arrowUp.svg.js +17 -2
  59. package/dist/esm/src/components/Icon/icons/attach.svg.js +19 -2
  60. package/dist/esm/src/components/Icon/icons/avatar.svg.js +15 -2
  61. package/dist/esm/src/components/Icon/icons/bookmark.svg.js +17 -2
  62. package/dist/esm/src/components/Icon/icons/bookmarkAdd.svg.js +17 -2
  63. package/dist/esm/src/components/Icon/icons/brain.svg.js +22 -2
  64. package/dist/esm/src/components/Icon/icons/brokenImage.svg.js +15 -2
  65. package/dist/esm/src/components/Icon/icons/call.svg.js +17 -2
  66. package/dist/esm/src/components/Icon/icons/camera.svg.js +17 -2
  67. package/dist/esm/src/components/Icon/icons/chat.svg.js +17 -2
  68. package/dist/esm/src/components/Icon/icons/check.svg.js +19 -2
  69. package/dist/esm/src/components/Icon/icons/checkers.svg.js +18 -2
  70. package/dist/esm/src/components/Icon/icons/chevronDown.svg.js +20 -2
  71. package/dist/esm/src/components/Icon/icons/chevronLeft.svg.js +20 -2
  72. package/dist/esm/src/components/Icon/icons/chevronRight.svg.js +20 -2
  73. package/dist/esm/src/components/Icon/icons/chevronUp.svg.js +20 -2
  74. package/dist/esm/src/components/Icon/icons/clearAll.svg.js +17 -2
  75. package/dist/esm/src/components/Icon/icons/close.svg.js +15 -2
  76. package/dist/esm/src/components/Icon/icons/colors.svg.js +60 -2
  77. package/dist/esm/src/components/Icon/icons/compass.svg.js +56 -2
  78. package/dist/esm/src/components/Icon/icons/copy.svg.js +15 -2
  79. package/dist/esm/src/components/Icon/icons/cubes.svg.js +17 -2
  80. package/dist/esm/src/components/Icon/icons/delete.svg.js +15 -2
  81. package/dist/esm/src/components/Icon/icons/discord.svg.js +17 -2
  82. package/dist/esm/src/components/Icon/icons/draft.svg.js +15 -2
  83. package/dist/esm/src/components/Icon/icons/dragHandlerHorizontal.svg.js +15 -2
  84. package/dist/esm/src/components/Icon/icons/dragHandlerVertical.svg.js +15 -2
  85. package/dist/esm/src/components/Icon/icons/edit.svg.js +15 -2
  86. package/dist/esm/src/components/Icon/icons/email.svg.js +15 -2
  87. package/dist/esm/src/components/Icon/icons/externalLink.svg.js +15 -2
  88. package/dist/esm/src/components/Icon/icons/eye.svg.js +15 -2
  89. package/dist/esm/src/components/Icon/icons/flyover.svg.js +17 -2
  90. package/dist/esm/src/components/Icon/icons/folder.svg.js +17 -2
  91. package/dist/esm/src/components/Icon/icons/folderOpen.svg.js +17 -2
  92. package/dist/esm/src/components/Icon/icons/forward.svg.js +17 -2
  93. package/dist/esm/src/components/Icon/icons/fullscreen.svg.js +15 -2
  94. package/dist/esm/src/components/Icon/icons/fullscreenExit.svg.js +15 -2
  95. package/dist/esm/src/components/Icon/icons/function.svg.js +15 -2
  96. package/dist/esm/src/components/Icon/icons/gear.svg.js +21 -2
  97. package/dist/esm/src/components/Icon/icons/geolocation.svg.js +17 -2
  98. package/dist/esm/src/components/Icon/icons/github.svg.js +18 -2
  99. package/dist/esm/src/components/Icon/icons/globe.svg.js +17 -2
  100. package/dist/esm/src/components/Icon/icons/google.svg.js +42 -2
  101. package/dist/esm/src/components/Icon/icons/group.svg.js +15 -2
  102. package/dist/esm/src/components/Icon/icons/history.svg.js +17 -2
  103. package/dist/esm/src/components/Icon/icons/home.svg.js +19 -2
  104. package/dist/esm/src/components/Icon/icons/image.svg.js +17 -2
  105. package/dist/esm/src/components/Icon/icons/index.js +95 -2
  106. package/dist/esm/src/components/Icon/icons/instagram.svg.js +15 -2
  107. package/dist/esm/src/components/Icon/icons/layers.svg.js +17 -2
  108. package/dist/esm/src/components/Icon/icons/link.svg.js +15 -2
  109. package/dist/esm/src/components/Icon/icons/linkedin.svg.js +20 -2
  110. package/dist/esm/src/components/Icon/icons/loader.svg.js +45 -2
  111. package/dist/esm/src/components/Icon/icons/lock.svg.js +19 -2
  112. package/dist/esm/src/components/Icon/icons/lockOpen.svg.js +19 -2
  113. package/dist/esm/src/components/Icon/icons/map.svg.js +17 -2
  114. package/dist/esm/src/components/Icon/icons/menu.svg.js +18 -2
  115. package/dist/esm/src/components/Icon/icons/mic.svg.js +15 -2
  116. package/dist/esm/src/components/Icon/icons/micMuted.svg.js +27 -2
  117. package/dist/esm/src/components/Icon/icons/minus.svg.js +15 -2
  118. package/dist/esm/src/components/Icon/icons/moreHorizontal.svg.js +15 -2
  119. package/dist/esm/src/components/Icon/icons/moreVertical.svg.js +15 -2
  120. package/dist/esm/src/components/Icon/icons/output.svg.js +15 -2
  121. package/dist/esm/src/components/Icon/icons/pause.svg.js +15 -2
  122. package/dist/esm/src/components/Icon/icons/play.svg.js +20 -2
  123. package/dist/esm/src/components/Icon/icons/plus.svg.js +15 -2
  124. package/dist/esm/src/components/Icon/icons/redo.svg.js +15 -2
  125. package/dist/esm/src/components/Icon/icons/requiredStar.svg.js +15 -2
  126. package/dist/esm/src/components/Icon/icons/rewind.svg.js +17 -2
  127. package/dist/esm/src/components/Icon/icons/rocket.svg.js +22 -2
  128. package/dist/esm/src/components/Icon/icons/route.svg.js +17 -2
  129. package/dist/esm/src/components/Icon/icons/routeFrom.svg.js +31 -2
  130. package/dist/esm/src/components/Icon/icons/routeTo.svg.js +31 -2
  131. package/dist/esm/src/components/Icon/icons/save.svg.js +17 -2
  132. package/dist/esm/src/components/Icon/icons/search.svg.js +17 -2
  133. package/dist/esm/src/components/Icon/icons/send.svg.js +16 -2
  134. package/dist/esm/src/components/Icon/icons/settings.svg.js +52 -2
  135. package/dist/esm/src/components/Icon/icons/shoppingBag.svg.js +17 -2
  136. package/dist/esm/src/components/Icon/icons/smile.svg.js +30 -2
  137. package/dist/esm/src/components/Icon/icons/soundWave.svg.js +66 -2
  138. package/dist/esm/src/components/Icon/icons/sparks.svg.js +21 -2
  139. package/dist/esm/src/components/Icon/icons/star.svg.js +18 -2
  140. package/dist/esm/src/components/Icon/icons/stop.svg.js +22 -2
  141. package/dist/esm/src/components/Icon/icons/stopInCircle.svg.js +17 -2
  142. package/dist/esm/src/components/Icon/icons/syncArrows.svg.js +22 -2
  143. package/dist/esm/src/components/Icon/icons/table.svg.js +15 -2
  144. package/dist/esm/src/components/Icon/icons/telegram.svg.js +19 -2
  145. package/dist/esm/src/components/Icon/icons/tool.svg.js +17 -2
  146. package/dist/esm/src/components/Icon/icons/trafficLight.svg.js +49 -2
  147. package/dist/esm/src/components/Icon/icons/undo.svg.js +15 -2
  148. package/dist/esm/src/components/Icon/icons/usage.svg.js +25 -2
  149. package/dist/esm/src/components/Icon/icons/youtube.svg.js +20 -2
  150. package/dist/esm/src/components/Input/Input.js +281 -2
  151. package/dist/esm/src/components/Input/Input.styl.js +7 -2
  152. package/dist/esm/src/components/InputFile/InputFile.js +314 -2
  153. package/dist/esm/src/components/InputFile/InputFile.styl.js +7 -2
  154. package/dist/esm/src/components/InputFile/InputFile.types.js +0 -1
  155. package/dist/esm/src/components/InputFile/Item/Item.js +18 -2
  156. package/dist/esm/src/components/InputFile/Item/Item.styl.js +7 -2
  157. package/dist/esm/src/components/Label/Label.constants.json.js +8 -2
  158. package/dist/esm/src/components/Label/Label.helpers.js +35 -2
  159. package/dist/esm/src/components/Label/Label.js +58 -2
  160. package/dist/esm/src/components/Label/Label.styl.js +7 -2
  161. package/dist/esm/src/components/LangSelector/LangSelector.js +10 -2
  162. package/dist/esm/src/components/Lazy/Lazy.js +74 -2
  163. package/dist/esm/src/components/LightBox/LightBox.js +28 -2
  164. package/dist/esm/src/components/LightBox/LightBox.styl.js +7 -2
  165. package/dist/esm/src/components/Menu/Menu.js +27 -2
  166. package/dist/esm/src/components/Menu/Menu.styl.js +7 -2
  167. package/dist/esm/src/components/Notifications/Notifications.constants.json.js +6 -2
  168. package/dist/esm/src/components/Notifications/Notifications.js +67 -2
  169. package/dist/esm/src/components/Notifications/Notifications.styl.js +7 -2
  170. package/dist/esm/src/components/Notifications/store.js +72 -2
  171. package/dist/esm/src/components/Paranja/Paranja.js +14 -2
  172. package/dist/esm/src/components/Paranja/Paranja.styl.js +7 -2
  173. package/dist/esm/src/components/Popup/Popup.helpers.js +130 -2
  174. package/dist/esm/src/components/Popup/Popup.js +484 -2
  175. package/dist/esm/src/components/Popup/Popup.styl.js +7 -2
  176. package/dist/esm/src/components/PopupMenu/PopupMenu.js +15 -2
  177. package/dist/esm/src/components/PopupMenu/PopupMenu.styl.js +7 -2
  178. package/dist/esm/src/components/Portal/Portal.js +33 -2
  179. package/dist/esm/src/components/Progress/Progress.helpers.js +5 -2
  180. package/dist/esm/src/components/Progress/Progress.js +12 -2
  181. package/dist/esm/src/components/Progress/Progress.styl.js +7 -2
  182. package/dist/esm/src/components/ProgressCircular/ProgressCircular.js +23 -2
  183. package/dist/esm/src/components/ProgressCircular/ProgressCircular.styl.js +7 -2
  184. package/dist/esm/src/components/RadioButton/RadioButton.js +33 -2
  185. package/dist/esm/src/components/RadioButton/RadioButton.styl.js +7 -2
  186. package/dist/esm/src/components/RadioGroup/RadioGroup.js +31 -2
  187. package/dist/esm/src/components/RadioGroup/RadioGroup.styl.js +7 -2
  188. package/dist/esm/src/components/RadioGroup/RadioGroupContext.js +8 -2
  189. package/dist/esm/src/components/RequiredStar/RequiredStar.js +12 -2
  190. package/dist/esm/src/components/RequiredStar/RequiredStar.styl.js +7 -2
  191. package/dist/esm/src/components/Router/Link/Link.js +62 -2
  192. package/dist/esm/src/components/Router/Link/Link.styl.js +7 -2
  193. package/dist/esm/src/components/Router/Redirect.js +12 -2
  194. package/dist/esm/src/components/Router/Route.js +6 -2
  195. package/dist/esm/src/components/Router/Router.helpers.js +33 -2
  196. package/dist/esm/src/components/Router/Router.js +72 -2
  197. package/dist/esm/src/components/Router/context.js +5 -2
  198. package/dist/esm/src/components/Router/store.js +75 -2
  199. package/dist/esm/src/components/Scroll/Scroll.js +308 -2
  200. package/dist/esm/src/components/Scroll/Scroll.styl.js +7 -2
  201. package/dist/esm/src/components/Select/Select.helpers.js +37 -2
  202. package/dist/esm/src/components/Select/Select.js +601 -2
  203. package/dist/esm/src/components/Select/Select.styl.js +7 -2
  204. package/dist/esm/src/components/Select/Select2.js +334 -2
  205. package/dist/esm/src/components/Shimmer/Shimmer.js +7 -2
  206. package/dist/esm/src/components/Shimmer/Shimmer.styl.js +7 -2
  207. package/dist/esm/src/components/Spinner/Spinner.js +11 -2
  208. package/dist/esm/src/components/Spinner/Spinner.styl.js +7 -2
  209. package/dist/esm/src/components/Spinner/spinner.svg.js +24 -2
  210. package/dist/esm/src/components/Table/Table.js +24 -2
  211. package/dist/esm/src/components/Table/Table.styl.js +7 -2
  212. package/dist/esm/src/components/Tabs/Tabs.js +48 -2
  213. package/dist/esm/src/components/Tabs/Tabs.styl.js +7 -2
  214. package/dist/esm/src/components/Text/Text.js +44 -2
  215. package/dist/esm/src/components/Text/Text.styl.js +7 -2
  216. package/dist/esm/src/components/TextShimmer/TextShimmer.js +29 -0
  217. package/dist/esm/src/components/TextShimmer/TextShimmer.styl.js +7 -0
  218. package/dist/esm/src/components/Theme/Theme.defaults.js +53 -2
  219. package/dist/esm/src/components/Theme/Theme.helpers.js +67 -2
  220. package/dist/esm/src/components/Theme/Theme.js +15 -2
  221. package/dist/esm/src/components/Theme/ThemeProvider.js +50 -2
  222. package/dist/esm/src/components/Toggle/Toggle.js +18 -2
  223. package/dist/esm/src/components/Toggle/Toggle.styl.js +7 -2
  224. package/dist/esm/src/components/Tooltip/Tooltip.js +86 -2
  225. package/dist/esm/src/components/Tooltip/Tooltip.styl.js +7 -2
  226. package/dist/esm/src/components/VH/VH.js +33 -2
  227. package/dist/esm/src/components/Virtualized/List/List.js +136 -2
  228. package/dist/esm/src/components/Virtualized/List/List.styl.js +7 -2
  229. package/dist/esm/src/components/Virtualized/List/ListScroll.js +22 -2
  230. package/dist/esm/src/components/Virtualized/List/ListScroll.styl.js +7 -2
  231. package/dist/esm/src/components/Virtualized/Virtualized.helpers.js +14 -2
  232. package/dist/esm/src/components/Virtualized/Virtualized.js +218 -2
  233. package/dist/esm/src/components/Virtualized/Virtualized.styl.js +7 -2
  234. package/dist/esm/src/components/Virtualized/Virtualized.types.js +0 -1
  235. package/dist/esm/src/hooks/useDebounce.js +11 -2
  236. package/dist/esm/src/hooks/useEvent.js +27 -2
  237. package/dist/esm/src/hooks/useIsMounted.js +11 -2
  238. package/dist/esm/src/hooks/useListKeyboardControl.js +50 -2
  239. package/dist/esm/src/hooks/useResizeObserver.js +15 -2
  240. package/dist/esm/src/hooks/useThrottle.js +31 -2
  241. package/dist/esm/src/hooks/useToggleState.js +35 -2
  242. package/dist/esm/src/services/i18n.js +112 -2
  243. package/dist/esm/src/tools/array.js +60 -2
  244. package/dist/esm/src/tools/config.js +9 -2
  245. package/dist/esm/src/tools/date.js +11 -2
  246. package/dist/esm/src/tools/debounce.js +11 -2
  247. package/dist/esm/src/tools/dom.js +57 -2
  248. package/dist/esm/src/tools/env.js +3 -2
  249. package/dist/esm/src/tools/file.js +11 -2
  250. package/dist/esm/src/tools/localStorage.js +31 -2
  251. package/dist/esm/src/tools/number.js +27 -2
  252. package/dist/esm/src/tools/object.js +5 -2
  253. package/dist/esm/src/tools/queryParams.js +40 -2
  254. package/dist/esm/src/tools/rangeMap.js +3 -2
  255. package/dist/esm/src/tools/resizeObserver.js +68 -2
  256. package/dist/esm/src/tools/scroll.js +41 -2
  257. package/dist/esm/src/tools/string.js +7 -2
  258. package/dist/esm/src/tools/throttle.js +30 -2
  259. package/dist/esm/src/tools/uid.js +7 -2
  260. package/dist/esm/types/src/components/Notifications/Notifications.types.d.ts +4 -2
  261. package/dist/esm/types/src/components/TextShimmer/TextShimmer.d.ts +5 -0
  262. package/dist/esm/types/src/components/TextShimmer/TextShimmer.types.d.ts +9 -0
  263. package/dist/esm/types/src/components/TextShimmer/index.d.ts +2 -0
  264. package/dist/esm/types/src/components/index.d.ts +1 -0
  265. package/package.json +1 -1
  266. package/dist/esm/index.js.map +0 -1
  267. package/dist/esm/node_modules/style-inject/dist/style-inject.es.js.map +0 -1
  268. package/dist/esm/src/components/AssistiveText/AssistiveText.js.map +0 -1
  269. package/dist/esm/src/components/AssistiveText/AssistiveText.styl.js.map +0 -1
  270. package/dist/esm/src/components/Autocomplete/Autocomplete.js.map +0 -1
  271. package/dist/esm/src/components/Autocomplete/Autocomplete.styl.js.map +0 -1
  272. package/dist/esm/src/components/Button/Button.helpers.js.map +0 -1
  273. package/dist/esm/src/components/Button/Button.js.map +0 -1
  274. package/dist/esm/src/components/Button/Button.styl.js.map +0 -1
  275. package/dist/esm/src/components/ButtonGroup/ButtonGroup.js.map +0 -1
  276. package/dist/esm/src/components/ButtonGroup/ButtonGroup.styl.js.map +0 -1
  277. package/dist/esm/src/components/Calendar/Calendar.helpers.js.map +0 -1
  278. package/dist/esm/src/components/Calendar/Calendar.js.map +0 -1
  279. package/dist/esm/src/components/Calendar/Calendar.styl.js.map +0 -1
  280. package/dist/esm/src/components/Card/Card.js.map +0 -1
  281. package/dist/esm/src/components/Card/Card.styl.js.map +0 -1
  282. package/dist/esm/src/components/Checkbox/Checkbox.js.map +0 -1
  283. package/dist/esm/src/components/Checkbox/Checkbox.styl.js.map +0 -1
  284. package/dist/esm/src/components/Chip/Chip.js.map +0 -1
  285. package/dist/esm/src/components/Chip/Chip.styl.js.map +0 -1
  286. package/dist/esm/src/components/Container/Container.js.map +0 -1
  287. package/dist/esm/src/components/Container/Container.styl.js.map +0 -1
  288. package/dist/esm/src/components/DatePicker/DatePicker.helpers.js.map +0 -1
  289. package/dist/esm/src/components/DatePicker/DatePicker.js.map +0 -1
  290. package/dist/esm/src/components/DatePicker/DatePicker.styl.js.map +0 -1
  291. package/dist/esm/src/components/DatePickerInput/DatePickerInput.js.map +0 -1
  292. package/dist/esm/src/components/DatePickerInput/DatePickerInput.styl.js.map +0 -1
  293. package/dist/esm/src/components/DateTime/DateTime.js.map +0 -1
  294. package/dist/esm/src/components/Dialogue/Dialogue.js.map +0 -1
  295. package/dist/esm/src/components/Dialogue/Dialogue.styl.js.map +0 -1
  296. package/dist/esm/src/components/Draggable/Draggable.js.map +0 -1
  297. package/dist/esm/src/components/Draggable/Draggable.styl.js.map +0 -1
  298. package/dist/esm/src/components/DropZone/DropZone.js.map +0 -1
  299. package/dist/esm/src/components/DropZone/DropZone.styl.js.map +0 -1
  300. package/dist/esm/src/components/Expand/Expand.js.map +0 -1
  301. package/dist/esm/src/components/Expand/Expand.styl.js.map +0 -1
  302. package/dist/esm/src/components/Flex/Flex.js.map +0 -1
  303. package/dist/esm/src/components/Flex/Flex.styl.js.map +0 -1
  304. package/dist/esm/src/components/Form/Form.helpers.js.map +0 -1
  305. package/dist/esm/src/components/Form/Form.js.map +0 -1
  306. package/dist/esm/src/components/Form/Form.styl.js.map +0 -1
  307. package/dist/esm/src/components/Form/Form.types.js.map +0 -1
  308. package/dist/esm/src/components/Form/SubmitButtons/SubmitButtons.js.map +0 -1
  309. package/dist/esm/src/components/Form/SubmitButtons/SubmitButtons.styl.js.map +0 -1
  310. package/dist/esm/src/components/Form/Validator.js.map +0 -1
  311. package/dist/esm/src/components/Gallery/Dots/Dots.js.map +0 -1
  312. package/dist/esm/src/components/Gallery/Dots/Dots.styl.js.map +0 -1
  313. package/dist/esm/src/components/Gallery/Gallery.js.map +0 -1
  314. package/dist/esm/src/components/Gallery/Gallery.styl.js.map +0 -1
  315. package/dist/esm/src/components/Heading/Heading.js.map +0 -1
  316. package/dist/esm/src/components/Heading/Heading.styl.js.map +0 -1
  317. package/dist/esm/src/components/Icon/Icon.js.map +0 -1
  318. package/dist/esm/src/components/Icon/Icon.styl.js.map +0 -1
  319. package/dist/esm/src/components/Icon/icons/apple.svg.js.map +0 -1
  320. package/dist/esm/src/components/Icon/icons/arrowDown.svg.js.map +0 -1
  321. package/dist/esm/src/components/Icon/icons/arrowLeft.svg.js.map +0 -1
  322. package/dist/esm/src/components/Icon/icons/arrowRight.svg.js.map +0 -1
  323. package/dist/esm/src/components/Icon/icons/arrowUp.svg.js.map +0 -1
  324. package/dist/esm/src/components/Icon/icons/attach.svg.js.map +0 -1
  325. package/dist/esm/src/components/Icon/icons/avatar.svg.js.map +0 -1
  326. package/dist/esm/src/components/Icon/icons/bookmark.svg.js.map +0 -1
  327. package/dist/esm/src/components/Icon/icons/bookmarkAdd.svg.js.map +0 -1
  328. package/dist/esm/src/components/Icon/icons/brain.svg.js.map +0 -1
  329. package/dist/esm/src/components/Icon/icons/brokenImage.svg.js.map +0 -1
  330. package/dist/esm/src/components/Icon/icons/call.svg.js.map +0 -1
  331. package/dist/esm/src/components/Icon/icons/camera.svg.js.map +0 -1
  332. package/dist/esm/src/components/Icon/icons/chat.svg.js.map +0 -1
  333. package/dist/esm/src/components/Icon/icons/check.svg.js.map +0 -1
  334. package/dist/esm/src/components/Icon/icons/checkers.svg.js.map +0 -1
  335. package/dist/esm/src/components/Icon/icons/chevronDown.svg.js.map +0 -1
  336. package/dist/esm/src/components/Icon/icons/chevronLeft.svg.js.map +0 -1
  337. package/dist/esm/src/components/Icon/icons/chevronRight.svg.js.map +0 -1
  338. package/dist/esm/src/components/Icon/icons/chevronUp.svg.js.map +0 -1
  339. package/dist/esm/src/components/Icon/icons/clearAll.svg.js.map +0 -1
  340. package/dist/esm/src/components/Icon/icons/close.svg.js.map +0 -1
  341. package/dist/esm/src/components/Icon/icons/colors.svg.js.map +0 -1
  342. package/dist/esm/src/components/Icon/icons/compass.svg.js.map +0 -1
  343. package/dist/esm/src/components/Icon/icons/copy.svg.js.map +0 -1
  344. package/dist/esm/src/components/Icon/icons/cubes.svg.js.map +0 -1
  345. package/dist/esm/src/components/Icon/icons/delete.svg.js.map +0 -1
  346. package/dist/esm/src/components/Icon/icons/discord.svg.js.map +0 -1
  347. package/dist/esm/src/components/Icon/icons/draft.svg.js.map +0 -1
  348. package/dist/esm/src/components/Icon/icons/dragHandlerHorizontal.svg.js.map +0 -1
  349. package/dist/esm/src/components/Icon/icons/dragHandlerVertical.svg.js.map +0 -1
  350. package/dist/esm/src/components/Icon/icons/edit.svg.js.map +0 -1
  351. package/dist/esm/src/components/Icon/icons/email.svg.js.map +0 -1
  352. package/dist/esm/src/components/Icon/icons/externalLink.svg.js.map +0 -1
  353. package/dist/esm/src/components/Icon/icons/eye.svg.js.map +0 -1
  354. package/dist/esm/src/components/Icon/icons/flyover.svg.js.map +0 -1
  355. package/dist/esm/src/components/Icon/icons/folder.svg.js.map +0 -1
  356. package/dist/esm/src/components/Icon/icons/folderOpen.svg.js.map +0 -1
  357. package/dist/esm/src/components/Icon/icons/forward.svg.js.map +0 -1
  358. package/dist/esm/src/components/Icon/icons/fullscreen.svg.js.map +0 -1
  359. package/dist/esm/src/components/Icon/icons/fullscreenExit.svg.js.map +0 -1
  360. package/dist/esm/src/components/Icon/icons/function.svg.js.map +0 -1
  361. package/dist/esm/src/components/Icon/icons/gear.svg.js.map +0 -1
  362. package/dist/esm/src/components/Icon/icons/geolocation.svg.js.map +0 -1
  363. package/dist/esm/src/components/Icon/icons/github.svg.js.map +0 -1
  364. package/dist/esm/src/components/Icon/icons/globe.svg.js.map +0 -1
  365. package/dist/esm/src/components/Icon/icons/google.svg.js.map +0 -1
  366. package/dist/esm/src/components/Icon/icons/group.svg.js.map +0 -1
  367. package/dist/esm/src/components/Icon/icons/history.svg.js.map +0 -1
  368. package/dist/esm/src/components/Icon/icons/home.svg.js.map +0 -1
  369. package/dist/esm/src/components/Icon/icons/image.svg.js.map +0 -1
  370. package/dist/esm/src/components/Icon/icons/index.js.map +0 -1
  371. package/dist/esm/src/components/Icon/icons/instagram.svg.js.map +0 -1
  372. package/dist/esm/src/components/Icon/icons/layers.svg.js.map +0 -1
  373. package/dist/esm/src/components/Icon/icons/link.svg.js.map +0 -1
  374. package/dist/esm/src/components/Icon/icons/linkedin.svg.js.map +0 -1
  375. package/dist/esm/src/components/Icon/icons/loader.svg.js.map +0 -1
  376. package/dist/esm/src/components/Icon/icons/lock.svg.js.map +0 -1
  377. package/dist/esm/src/components/Icon/icons/lockOpen.svg.js.map +0 -1
  378. package/dist/esm/src/components/Icon/icons/map.svg.js.map +0 -1
  379. package/dist/esm/src/components/Icon/icons/menu.svg.js.map +0 -1
  380. package/dist/esm/src/components/Icon/icons/mic.svg.js.map +0 -1
  381. package/dist/esm/src/components/Icon/icons/micMuted.svg.js.map +0 -1
  382. package/dist/esm/src/components/Icon/icons/minus.svg.js.map +0 -1
  383. package/dist/esm/src/components/Icon/icons/moreHorizontal.svg.js.map +0 -1
  384. package/dist/esm/src/components/Icon/icons/moreVertical.svg.js.map +0 -1
  385. package/dist/esm/src/components/Icon/icons/output.svg.js.map +0 -1
  386. package/dist/esm/src/components/Icon/icons/pause.svg.js.map +0 -1
  387. package/dist/esm/src/components/Icon/icons/play.svg.js.map +0 -1
  388. package/dist/esm/src/components/Icon/icons/plus.svg.js.map +0 -1
  389. package/dist/esm/src/components/Icon/icons/redo.svg.js.map +0 -1
  390. package/dist/esm/src/components/Icon/icons/requiredStar.svg.js.map +0 -1
  391. package/dist/esm/src/components/Icon/icons/rewind.svg.js.map +0 -1
  392. package/dist/esm/src/components/Icon/icons/rocket.svg.js.map +0 -1
  393. package/dist/esm/src/components/Icon/icons/route.svg.js.map +0 -1
  394. package/dist/esm/src/components/Icon/icons/routeFrom.svg.js.map +0 -1
  395. package/dist/esm/src/components/Icon/icons/routeTo.svg.js.map +0 -1
  396. package/dist/esm/src/components/Icon/icons/save.svg.js.map +0 -1
  397. package/dist/esm/src/components/Icon/icons/search.svg.js.map +0 -1
  398. package/dist/esm/src/components/Icon/icons/send.svg.js.map +0 -1
  399. package/dist/esm/src/components/Icon/icons/settings.svg.js.map +0 -1
  400. package/dist/esm/src/components/Icon/icons/shoppingBag.svg.js.map +0 -1
  401. package/dist/esm/src/components/Icon/icons/smile.svg.js.map +0 -1
  402. package/dist/esm/src/components/Icon/icons/soundWave.svg.js.map +0 -1
  403. package/dist/esm/src/components/Icon/icons/sparks.svg.js.map +0 -1
  404. package/dist/esm/src/components/Icon/icons/star.svg.js.map +0 -1
  405. package/dist/esm/src/components/Icon/icons/stop.svg.js.map +0 -1
  406. package/dist/esm/src/components/Icon/icons/stopInCircle.svg.js.map +0 -1
  407. package/dist/esm/src/components/Icon/icons/syncArrows.svg.js.map +0 -1
  408. package/dist/esm/src/components/Icon/icons/table.svg.js.map +0 -1
  409. package/dist/esm/src/components/Icon/icons/telegram.svg.js.map +0 -1
  410. package/dist/esm/src/components/Icon/icons/tool.svg.js.map +0 -1
  411. package/dist/esm/src/components/Icon/icons/trafficLight.svg.js.map +0 -1
  412. package/dist/esm/src/components/Icon/icons/undo.svg.js.map +0 -1
  413. package/dist/esm/src/components/Icon/icons/usage.svg.js.map +0 -1
  414. package/dist/esm/src/components/Icon/icons/youtube.svg.js.map +0 -1
  415. package/dist/esm/src/components/Input/Input.js.map +0 -1
  416. package/dist/esm/src/components/Input/Input.styl.js.map +0 -1
  417. package/dist/esm/src/components/InputFile/InputFile.js.map +0 -1
  418. package/dist/esm/src/components/InputFile/InputFile.styl.js.map +0 -1
  419. package/dist/esm/src/components/InputFile/InputFile.types.js.map +0 -1
  420. package/dist/esm/src/components/InputFile/Item/Item.js.map +0 -1
  421. package/dist/esm/src/components/InputFile/Item/Item.styl.js.map +0 -1
  422. package/dist/esm/src/components/Label/Label.constants.json.js.map +0 -1
  423. package/dist/esm/src/components/Label/Label.helpers.js.map +0 -1
  424. package/dist/esm/src/components/Label/Label.js.map +0 -1
  425. package/dist/esm/src/components/Label/Label.styl.js.map +0 -1
  426. package/dist/esm/src/components/LangSelector/LangSelector.js.map +0 -1
  427. package/dist/esm/src/components/Lazy/Lazy.js.map +0 -1
  428. package/dist/esm/src/components/LightBox/LightBox.js.map +0 -1
  429. package/dist/esm/src/components/LightBox/LightBox.styl.js.map +0 -1
  430. package/dist/esm/src/components/Menu/Menu.js.map +0 -1
  431. package/dist/esm/src/components/Menu/Menu.styl.js.map +0 -1
  432. package/dist/esm/src/components/Notifications/Notifications.constants.json.js.map +0 -1
  433. package/dist/esm/src/components/Notifications/Notifications.js.map +0 -1
  434. package/dist/esm/src/components/Notifications/Notifications.styl.js.map +0 -1
  435. package/dist/esm/src/components/Notifications/store.js.map +0 -1
  436. package/dist/esm/src/components/Paranja/Paranja.js.map +0 -1
  437. package/dist/esm/src/components/Paranja/Paranja.styl.js.map +0 -1
  438. package/dist/esm/src/components/Popup/Popup.helpers.js.map +0 -1
  439. package/dist/esm/src/components/Popup/Popup.js.map +0 -1
  440. package/dist/esm/src/components/Popup/Popup.styl.js.map +0 -1
  441. package/dist/esm/src/components/PopupMenu/PopupMenu.js.map +0 -1
  442. package/dist/esm/src/components/PopupMenu/PopupMenu.styl.js.map +0 -1
  443. package/dist/esm/src/components/Portal/Portal.js.map +0 -1
  444. package/dist/esm/src/components/Progress/Progress.helpers.js.map +0 -1
  445. package/dist/esm/src/components/Progress/Progress.js.map +0 -1
  446. package/dist/esm/src/components/Progress/Progress.styl.js.map +0 -1
  447. package/dist/esm/src/components/ProgressCircular/ProgressCircular.js.map +0 -1
  448. package/dist/esm/src/components/ProgressCircular/ProgressCircular.styl.js.map +0 -1
  449. package/dist/esm/src/components/RadioButton/RadioButton.js.map +0 -1
  450. package/dist/esm/src/components/RadioButton/RadioButton.styl.js.map +0 -1
  451. package/dist/esm/src/components/RadioGroup/RadioGroup.js.map +0 -1
  452. package/dist/esm/src/components/RadioGroup/RadioGroup.styl.js.map +0 -1
  453. package/dist/esm/src/components/RadioGroup/RadioGroupContext.js.map +0 -1
  454. package/dist/esm/src/components/RequiredStar/RequiredStar.js.map +0 -1
  455. package/dist/esm/src/components/RequiredStar/RequiredStar.styl.js.map +0 -1
  456. package/dist/esm/src/components/Router/Link/Link.js.map +0 -1
  457. package/dist/esm/src/components/Router/Link/Link.styl.js.map +0 -1
  458. package/dist/esm/src/components/Router/Redirect.js.map +0 -1
  459. package/dist/esm/src/components/Router/Route.js.map +0 -1
  460. package/dist/esm/src/components/Router/Router.helpers.js.map +0 -1
  461. package/dist/esm/src/components/Router/Router.js.map +0 -1
  462. package/dist/esm/src/components/Router/context.js.map +0 -1
  463. package/dist/esm/src/components/Router/store.js.map +0 -1
  464. package/dist/esm/src/components/Scroll/Scroll.js.map +0 -1
  465. package/dist/esm/src/components/Scroll/Scroll.styl.js.map +0 -1
  466. package/dist/esm/src/components/Select/Select.helpers.js.map +0 -1
  467. package/dist/esm/src/components/Select/Select.js.map +0 -1
  468. package/dist/esm/src/components/Select/Select.styl.js.map +0 -1
  469. package/dist/esm/src/components/Select/Select2.js.map +0 -1
  470. package/dist/esm/src/components/Shimmer/Shimmer.js.map +0 -1
  471. package/dist/esm/src/components/Shimmer/Shimmer.styl.js.map +0 -1
  472. package/dist/esm/src/components/Spinner/Spinner.js.map +0 -1
  473. package/dist/esm/src/components/Spinner/Spinner.styl.js.map +0 -1
  474. package/dist/esm/src/components/Spinner/spinner.svg.js.map +0 -1
  475. package/dist/esm/src/components/Table/Table.js.map +0 -1
  476. package/dist/esm/src/components/Table/Table.styl.js.map +0 -1
  477. package/dist/esm/src/components/Tabs/Tabs.js.map +0 -1
  478. package/dist/esm/src/components/Tabs/Tabs.styl.js.map +0 -1
  479. package/dist/esm/src/components/Text/Text.js.map +0 -1
  480. package/dist/esm/src/components/Text/Text.styl.js.map +0 -1
  481. package/dist/esm/src/components/Theme/Theme.defaults.js.map +0 -1
  482. package/dist/esm/src/components/Theme/Theme.helpers.js.map +0 -1
  483. package/dist/esm/src/components/Theme/Theme.js.map +0 -1
  484. package/dist/esm/src/components/Theme/ThemeProvider.js.map +0 -1
  485. package/dist/esm/src/components/Toggle/Toggle.js.map +0 -1
  486. package/dist/esm/src/components/Toggle/Toggle.styl.js.map +0 -1
  487. package/dist/esm/src/components/Tooltip/Tooltip.js.map +0 -1
  488. package/dist/esm/src/components/Tooltip/Tooltip.styl.js.map +0 -1
  489. package/dist/esm/src/components/VH/VH.js.map +0 -1
  490. package/dist/esm/src/components/Virtualized/List/List.js.map +0 -1
  491. package/dist/esm/src/components/Virtualized/List/List.styl.js.map +0 -1
  492. package/dist/esm/src/components/Virtualized/List/ListScroll.js.map +0 -1
  493. package/dist/esm/src/components/Virtualized/List/ListScroll.styl.js.map +0 -1
  494. package/dist/esm/src/components/Virtualized/Virtualized.helpers.js.map +0 -1
  495. package/dist/esm/src/components/Virtualized/Virtualized.js.map +0 -1
  496. package/dist/esm/src/components/Virtualized/Virtualized.styl.js.map +0 -1
  497. package/dist/esm/src/components/Virtualized/Virtualized.types.js.map +0 -1
  498. package/dist/esm/src/hooks/useDebounce.js.map +0 -1
  499. package/dist/esm/src/hooks/useEvent.js.map +0 -1
  500. package/dist/esm/src/hooks/useIsMounted.js.map +0 -1
  501. package/dist/esm/src/hooks/useListKeyboardControl.js.map +0 -1
  502. package/dist/esm/src/hooks/useResizeObserver.js.map +0 -1
  503. package/dist/esm/src/hooks/useThrottle.js.map +0 -1
  504. package/dist/esm/src/hooks/useToggleState.js.map +0 -1
  505. package/dist/esm/src/services/i18n.js.map +0 -1
  506. package/dist/esm/src/tools/array.js.map +0 -1
  507. package/dist/esm/src/tools/config.js.map +0 -1
  508. package/dist/esm/src/tools/date.js.map +0 -1
  509. package/dist/esm/src/tools/debounce.js.map +0 -1
  510. package/dist/esm/src/tools/dom.js.map +0 -1
  511. package/dist/esm/src/tools/env.js.map +0 -1
  512. package/dist/esm/src/tools/file.js.map +0 -1
  513. package/dist/esm/src/tools/localStorage.js.map +0 -1
  514. package/dist/esm/src/tools/number.js.map +0 -1
  515. package/dist/esm/src/tools/object.js.map +0 -1
  516. package/dist/esm/src/tools/queryParams.js.map +0 -1
  517. package/dist/esm/src/tools/rangeMap.js.map +0 -1
  518. package/dist/esm/src/tools/resizeObserver.js.map +0 -1
  519. package/dist/esm/src/tools/scroll.js.map +0 -1
  520. package/dist/esm/src/tools/string.js.map +0 -1
  521. package/dist/esm/src/tools/throttle.js.map +0 -1
  522. package/dist/esm/src/tools/uid.js.map +0 -1
@@ -1,2 +1,484 @@
1
- import{jsx,jsxs,Fragment}from"react/jsx-runtime";import{ZERO_BOUNDARY_FIT,getId,getPopupId,popupBoundaryEdges,popupBoundaryPadding,edgesWidth,fitRectToBoundary,isLastChild,unsetChild,childs,setChild}from"./Popup.helpers.js";import{observe,unobserve}from"../../tools/resizeObserver.js";import{Component,createRef}from"react";import{Paranja}from"../Paranja/Paranja.js";import{Portal}from"../Portal/Portal.js";import{config}from"../../tools/config.js";import S from"./Popup.styl.js";import Time from"timen";import cn from"classnames";import debounce from"../../tools/debounce.js";import{getCoords}from"../../tools/dom.js";import{isBrowser}from"../../tools/env.js";import throttle from"../../tools/throttle.js";const ANIMATION_DURATION=100,OFFSET_GAP=10,BOUNDARY_FIT_EPSILON=1;class Popup extends Component{rootElem=createRef();triggerElem=createRef();containerElem=null;onContainerElemRef=t=>{(this.containerElem=t)&&(this.unsubscribeSizeChange(),this.subscribeSizeChange(),this.state.isOpen)&&this.updateBounds()};focused=!1;pointerPressed=!1;subscribedHoverControl=!1;subscribedSizeChange=!1;pointerDownTarget=null;isPointerPressedInside=!1;id;parentPopupContent;timers=Time.create();scrollParent;shiftOuterRafId=0;shiftInnerRafId=0;static defaultProps={size:"m",direction:"",animated:!0};state={rootPopupId:null,isOpen:Boolean(this.props.isOpen),isContentVisible:Boolean(this.props.isOpen),animating:!1,direction:this.props.direction,triggerBounds:null,boundaryFit:ZERO_BOUNDARY_FIT};constructor(t){super(t),this.id=getId()}componentDidMount(){var{hoverControl:t,focusControl:e}=this.props,s=isBrowser?window.visualViewport:null,s=(s&&(s.addEventListener("resize",this.onBoundaryGeometryChange),s.addEventListener("scroll",this.onBoundaryGeometryChange)),this.triggerElem.current.closest("."+S.content));document.addEventListener("pointerdown",this.onDocPointerDown,!0),document.addEventListener("pointerup",this.onDocPointerUp,!0),s&&(s=getPopupId(s,"data-root-popup-id")||getPopupId(s,"data-popup-id"),this.setState({rootPopupId:s})),e&&(document.addEventListener("keydown",this.onDocKeyDown,!0),document.addEventListener("keyup",this.onDocKeyUp)),t&&this.subscribeHoverControl(),this.subscribeScroll(),this.state.isOpen&&this.state.isContentVisible&&this.containerElem&&this.scheduleComputeShift()}onBoundaryGeometryChange=throttle(()=>{this.state.isOpen&&this.scheduleComputeShift()},100);componentDidUpdate(t,e){var{isOpen:s,disabled:i,hoverControl:o}=this.props;i!==t.disabled?this.setState({isOpen:!1}):(!t.hoverControl&&o&&this.subscribeHoverControl(),t.hoverControl&&!o&&this.unsubscribeHoverControl(),"boolean"==typeof s&&s!==t.isOpen&&(s?this.open():this.close()),i=!e.isOpen&&this.state.isOpen&&this.state.isContentVisible&&Boolean(this.containerElem),o=this.state.isOpen&&this.state.isContentVisible&&Boolean(this.containerElem)&&null===e.triggerBounds&&null!==this.state.triggerBounds,(i||o)&&this.scheduleComputeShift())}componentWillUnmount(){this.timers.clear(),cancelAnimationFrame(this.shiftOuterRafId),cancelAnimationFrame(this.shiftInnerRafId);var t=isBrowser?window.visualViewport:null;t&&(t.removeEventListener("resize",this.onBoundaryGeometryChange),t.removeEventListener("scroll",this.onBoundaryGeometryChange)),document.removeEventListener("keyup",this.onDocKeyUp),this.scrollParent&&this.scrollParent.removeEventListener("scroll",this.close),this.unsubscribeHoverControl(),this.unsubscribeSizeChange(),this.unsubscribeScroll()}subscribeSizeChange(){this.subscribedSizeChange||(this.subscribedSizeChange=!0,observe(this.triggerElem.current,this.onTriggerResize),observe(this.containerElem,this.onContainerResize))}subscribeScroll(){isBrowser&&!this.props.inline&&document.addEventListener("scroll",this.onScroll,!0)}unsubscribeScroll(){document.removeEventListener("scroll",this.onScroll,!0)}unsubscribeSizeChange(){this.subscribedSizeChange=!1,unobserve(this.triggerElem.current),unobserve(this.containerElem)}subscribeHoverControl(){this.subscribedHoverControl||(this.subscribedHoverControl=!0,document.addEventListener("pointermove",this.checkHover),document.addEventListener("pointerup",this.checkHover))}unsubscribeHoverControl(){this.subscribedHoverControl&&(this.subscribedHoverControl=!1,document.removeEventListener("pointermove",this.checkHover),document.removeEventListener("pointerup",this.checkHover))}updateBounds(){this.containerElem&&this.triggerElem.current&&this.updateBoundsThrottled()}updateBoundsThrottled=throttle(()=>{var t=this.triggerElem.current,e=this.props.offset||{},s=t=>t||0,s={minHeight:t.offsetHeight-s(e.top)-s(e.bottom),minWidth:t.offsetWidth-s(e.left)-s(e.right),...getCoords(t,this.props.direction,this.props.offset)};Object.entries(s).forEach(([t,e])=>{this.triggerElem.current.style[t]=e}),this.setState({triggerBounds:s}),this.scheduleComputeShift()},200,{trailing:!0});scheduleComputeShift(){isBrowser&&(cancelAnimationFrame(this.shiftOuterRafId),cancelAnimationFrame(this.shiftInnerRafId),this.shiftOuterRafId=window.requestAnimationFrame(()=>{this.shiftOuterRafId=0,this.shiftInnerRafId=window.requestAnimationFrame(()=>{this.shiftInnerRafId=0,this.computeBoundaryShift()})}))}computeBoundaryShift=()=>{var t,e,s,i,o,r,n;this.containerElem&&this.state.isOpen&&this.state.isContentVisible&&(e=(t=this.containerElem).parentElement)instanceof HTMLElement&&({boundary:i,boundaryMountSelector:o,inline:r,shiftPadding:n,offset:s}=this.props,i=popupBoundaryEdges({boundary:i,boundaryMountSelector:o??"#"+config.appOverlayId,inline:r,padding:popupBoundaryPadding(OFFSET_GAP+(n??0),s)}),r=(o=edgesWidth(i))>=BOUNDARY_FIT_EPSILON?Math.floor(o):null,n=this.measureBoundaryRect(t,e,r,i),this.setBoundaryFit(fitRectToBoundary(n.rect,i,n.maxWidth)))};measureBoundaryRect(t,e,s,i){var o=e.style.transform,r=t.style.maxWidth,n=t.style.overflowX,a=t.style.overflowY;e.style.transform="",t.style.maxWidth="",t.style.overflowX="",t.style.overflowY="",e.offsetHeight;let h=t.getBoundingClientRect();i=null!==s&&h.width>edgesWidth(i)+BOUNDARY_FIT_EPSILON;return i&&(t.style.maxWidth=s+"px",t.style.overflowX="auto",t.style.overflowY="hidden",t.offsetHeight,h=t.getBoundingClientRect()),e.style.transform=o,t.style.maxWidth=r,t.style.overflowX=n,t.style.overflowY=a,{rect:h,maxWidth:i?s:null}}setBoundaryFit(t){var e=this.state.boundaryFit;e.left===t.left&&e.top===t.top&&e.maxWidth===t.maxWidth||this.setState({boundaryFit:t})}checkHover=debounce(t=>{var e,s,i,o;this.isPointerPressedInside||({isOpen:e,rootPopupId:s}=this.state,i=this.isPointerOver(t.target,S.trigger),o=this.isPointerOver(t.target,S.content),e?i||o||("number"==typeof s?isLastChild(s,this.id)&&(this.close(),unsetChild(s,this.id)):t.target.closest("."+S.content)&&childs[this.id]?.length||this.close()):i&&this.open())},100);isControllable=()=>"boolean"==typeof this.props.isOpen;isLastClickInside=()=>this.pointerDownTarget&&(this.pointerDownTarget.closest("."+S.trigger)||this.pointerDownTarget.closest("."+S.content));onDocPointerDown=t=>{this.pointerDownTarget=t.target,this.isPointerPressedInside=this.isLastClickInside(),this.timers.after(100,()=>this.pointerDownTarget=null)};onDocPointerUp=t=>{this.isPointerPressedInside||this.close(),this.isPointerPressedInside=!1};isPointerOver(t,e){return t.closest(`.${e}[data-popup-id="${this.id}"]`)}onScroll=throttle(t=>{var e,s;this.state.isOpen?this.isPointerOver(t.target,S.content)||childs[this.id]?.length||this.close():({top:t,left:e,maxWidth:s}=this.state.boundaryFit,(e||t||null!==s)&&this.setState({boundaryFit:ZERO_BOUNDARY_FIT}))},200);onDocKeyDown=t=>{this.pointerDownTarget=null};onDocKeyUp=t=>{this.state.isOpen&&"Escape"===t.key?(t.stopPropagation(),this.close()):this.focused&&/Enter| /.test(t.key)&&(t.stopPropagation(),this.toggle())};onTriggerPointerDown=t=>{this.pointerDownTarget=t.target,this.pointerPressed=!0};onTriggerPointerUp=t=>{this.pointerPressed=!1,t.traget===this.pointerDownTarget&&this.toggle()};onFocus=t=>{this.focused=!0,this.props.triggerProps?.onFocus?.(t),this.pointerPressed||this.state.isOpen||this.open()};onBlur=t=>{this.focused=!1,this.props.triggerProps?.onBlur?.(t),this.isControllable()&&this.props.isOpen||this.timers.after(60,()=>{this.isLastClickInside()||this.close()})};onTriggerResize=()=>{this.updateBounds()};onContainerResize=()=>{this.updateBounds()};open=throttle(()=>{var t=this.state["rootPopupId"];this.state.isOpen||(this.updateBounds(),this.subscribeSizeChange(),this.subscribeScroll(),this.setState({isContentVisible:!0,boundaryFit:ZERO_BOUNDARY_FIT}),this.changeState(!0,this.afterOpen),t&&setChild(t,this.id))},100);close=()=>{this.state.isOpen&&(this.unsubscribeSizeChange(),this.changeState(!1,this.afterClose))};changeState(t,e){var{animated:s,onOpen:i,onClose:o}=this.props;this.timers.clear(),this.setState({isOpen:t}),(t?i:o)?.(),s?(this.setState({animating:!0}),this.timers.after(ANIMATION_DURATION+500,()=>{this.setState({animating:!1}),e()})):e()}afterOpen=()=>{this.props.onAfterOpen?.()};afterClose=()=>{this.setState({isContentVisible:!1,boundaryFit:ZERO_BOUNDARY_FIT}),this.props.onAfterClose?.()};toggle=throttle(()=>{this.state.isOpen?this.close():this.open()},100);renderTrigger(){const{trigger:t,content:e,disabled:s,focusControl:i,hoverControl:o,...r}=this.props;var n,a={...r.triggerProps},h=this.state["isOpen"];return t?(n=cn(S.trigger,h&&S.isOpen,(h=s||!t)&&S.disabled,a.className),h||(a.role="button",o&&Object.assign(a,{onPointerDown:this.onTriggerPointerDown,onPointerUp:this.onTriggerPointerUp}),i&&Object.assign(a,{onFocus:this.onFocus,onBlur:this.onBlur})),jsx("div",{className:n,...a,suppressHydrationWarning:!0,"data-popup-id":this.id,ref:this.triggerElem,children:t})):null}renderContent(){var t,{content:e,contentProps:s={},wrapperProps:i={},size:o,disabled:r,inline:n,outlined:a,animated:h,paranja:l,blur:d,round:p,elevation:u}=this.props,{isOpen:c,isContentVisible:m,animating:g,direction:f,triggerBounds:b,rootPopupId:v,boundaryFit:C}=this.state;return r?null:(r=cn(S.contentWrapper,n&&S.inline,c&&S.isOpen,g&&S.animating,i.className),c=this.triggerElem.current,[f,t]=f.split("-"),a=cn(S.content,a&&S.outlined,h&&g&&S.animating,u&&S["elevation-"+u],S["size-"+o],S["axis-"+f],S["float-"+(t||"middle")],d&&S.blur,p&&S.round,s.className),c&&!n&&b&&(h=0!==C.left||0!==C.top?`translate3d(${C.left}px, ${C.top}px, 0)`:void 0,i.style={...b,...i.style,...h?{transform:h}:{}}),g=jsx("div",{...i,className:r,children:jsxs("div",{...s,ref:this.onContainerElemRef,className:a,suppressHydrationWarning:!0,"data-popup-id":this.id,"data-root-popup-id":v,style:{...s.style??{},...null!==C.maxWidth&&0<C.maxWidth?{maxWidth:C.maxWidth,overflowX:"auto",overflowY:"hidden"}:{}},children:[l&&!v&&jsx(Paranja,{visible:m,blur:d}),m&&jsx(Fragment,{children:e})]})}),n?g:jsx(Portal,{children:g}))}render(){var t=this.props["className"],t=cn(S.root,t);return jsxs("div",{className:t,ref:this.rootElem,children:[this.renderTrigger(),this.renderContent()]})}}export{ANIMATION_DURATION,Popup};
2
- //# sourceMappingURL=Popup.js.map
1
+ import { jsx, jsxs, Fragment } from 'react/jsx-runtime';
2
+ import { ZERO_BOUNDARY_FIT, getId, getPopupId, popupBoundaryEdges, popupBoundaryPadding, edgesWidth, fitRectToBoundary, isLastChild, unsetChild, childs, setChild } from './Popup.helpers.js';
3
+ import { observe, unobserve } from '../../tools/resizeObserver.js';
4
+ import { Component, createRef } from 'react';
5
+ import { Paranja } from '../Paranja/Paranja.js';
6
+ import { Portal } from '../Portal/Portal.js';
7
+ import { config } from '../../tools/config.js';
8
+ import S from './Popup.styl.js';
9
+ import Time from 'timen';
10
+ import cn from 'classnames';
11
+ import debounce from '../../tools/debounce.js';
12
+ import { getCoords } from '../../tools/dom.js';
13
+ import { isBrowser } from '../../tools/env.js';
14
+ import throttle from '../../tools/throttle.js';
15
+
16
+ const ANIMATION_DURATION = 100;
17
+ const OFFSET_GAP = 10;
18
+ const BOUNDARY_FIT_EPSILON = 1;
19
+ class Popup extends Component {
20
+ rootElem = createRef();
21
+ triggerElem = createRef();
22
+ containerElem = null;
23
+ onContainerElemRef = elem => {
24
+ this.containerElem = elem;
25
+ // TODO: useElemResize(elem, callback)
26
+ if (elem) {
27
+ this.unsubscribeSizeChange();
28
+ this.subscribeSizeChange();
29
+ if (this.state.isOpen) {
30
+ this.updateBounds();
31
+ }
32
+ }
33
+ };
34
+ focused = false;
35
+ pointerPressed = false;
36
+ subscribedHoverControl = false;
37
+ subscribedSizeChange = false;
38
+ pointerDownTarget = null;
39
+ isPointerPressedInside = false;
40
+ id;
41
+ parentPopupContent;
42
+ timers = Time.create();
43
+ scrollParent;
44
+ shiftOuterRafId = 0;
45
+ shiftInnerRafId = 0;
46
+ static defaultProps = {
47
+ size: 'm',
48
+ direction: '',
49
+ animated: true,
50
+ };
51
+ state = {
52
+ rootPopupId: null,
53
+ isOpen: Boolean(this.props.isOpen),
54
+ isContentVisible: Boolean(this.props.isOpen),
55
+ animating: false,
56
+ direction: this.props.direction,
57
+ triggerBounds: null,
58
+ boundaryFit: ZERO_BOUNDARY_FIT,
59
+ };
60
+ constructor(props) {
61
+ super(props);
62
+ this.id = getId();
63
+ }
64
+ componentDidMount() {
65
+ const { hoverControl, focusControl } = this.props;
66
+ const vv = isBrowser ? window.visualViewport : null;
67
+ if (vv) {
68
+ vv.addEventListener('resize', this.onBoundaryGeometryChange);
69
+ vv.addEventListener('scroll', this.onBoundaryGeometryChange);
70
+ }
71
+ const parentPopupContent = this.triggerElem.current.closest(`.${S.content}`);
72
+ document.addEventListener('pointerdown', this.onDocPointerDown, true);
73
+ document.addEventListener('pointerup', this.onDocPointerUp, true);
74
+ if (parentPopupContent) {
75
+ const rootPopupId = getPopupId(parentPopupContent, 'data-root-popup-id') ||
76
+ getPopupId(parentPopupContent, 'data-popup-id');
77
+ this.setState({ rootPopupId });
78
+ }
79
+ if (focusControl) {
80
+ document.addEventListener('keydown', this.onDocKeyDown, true);
81
+ document.addEventListener('keyup', this.onDocKeyUp);
82
+ }
83
+ if (hoverControl)
84
+ this.subscribeHoverControl();
85
+ this.subscribeScroll();
86
+ if (this.state.isOpen &&
87
+ this.state.isContentVisible &&
88
+ this.containerElem) {
89
+ this.scheduleComputeShift();
90
+ }
91
+ }
92
+ onBoundaryGeometryChange = throttle(() => {
93
+ if (this.state.isOpen)
94
+ this.scheduleComputeShift();
95
+ }, 100);
96
+ componentDidUpdate(prevProps, prevState) {
97
+ const { isOpen, disabled, hoverControl } = this.props;
98
+ if (disabled !== prevProps.disabled) {
99
+ this.setState({ isOpen: false }); // close when receive disabled=true
100
+ return;
101
+ }
102
+ if (!prevProps.hoverControl && hoverControl)
103
+ this.subscribeHoverControl();
104
+ if (prevProps.hoverControl && !hoverControl)
105
+ this.unsubscribeHoverControl();
106
+ if (typeof isOpen === 'boolean' && isOpen !== prevProps.isOpen) {
107
+ isOpen ? this.open() : this.close();
108
+ }
109
+ const justOpened = !prevState.isOpen &&
110
+ this.state.isOpen &&
111
+ this.state.isContentVisible &&
112
+ Boolean(this.containerElem);
113
+ const triggerBoundsCommitted = this.state.isOpen &&
114
+ this.state.isContentVisible &&
115
+ Boolean(this.containerElem) &&
116
+ prevState.triggerBounds === null &&
117
+ this.state.triggerBounds !== null;
118
+ if (justOpened || triggerBoundsCommitted) {
119
+ this.scheduleComputeShift();
120
+ }
121
+ }
122
+ componentWillUnmount() {
123
+ this.timers.clear();
124
+ cancelAnimationFrame(this.shiftOuterRafId);
125
+ cancelAnimationFrame(this.shiftInnerRafId);
126
+ const vv = isBrowser ? window.visualViewport : null;
127
+ if (vv) {
128
+ vv.removeEventListener('resize', this.onBoundaryGeometryChange);
129
+ vv.removeEventListener('scroll', this.onBoundaryGeometryChange);
130
+ }
131
+ document.removeEventListener('keyup', this.onDocKeyUp);
132
+ if (this.scrollParent) {
133
+ this.scrollParent.removeEventListener('scroll', this.close);
134
+ }
135
+ this.unsubscribeHoverControl();
136
+ this.unsubscribeSizeChange();
137
+ this.unsubscribeScroll();
138
+ }
139
+ subscribeSizeChange() {
140
+ if (this.subscribedSizeChange)
141
+ return;
142
+ this.subscribedSizeChange = true;
143
+ observe(this.triggerElem.current, this.onTriggerResize);
144
+ observe(this.containerElem, this.onContainerResize);
145
+ }
146
+ subscribeScroll() {
147
+ if (isBrowser && !this.props.inline) {
148
+ document.addEventListener('scroll', this.onScroll, true);
149
+ }
150
+ }
151
+ unsubscribeScroll() {
152
+ document.removeEventListener('scroll', this.onScroll, true);
153
+ }
154
+ unsubscribeSizeChange() {
155
+ this.subscribedSizeChange = false;
156
+ unobserve(this.triggerElem.current);
157
+ unobserve(this.containerElem);
158
+ }
159
+ subscribeHoverControl() {
160
+ if (this.subscribedHoverControl)
161
+ return;
162
+ this.subscribedHoverControl = true;
163
+ document.addEventListener('pointermove', this.checkHover);
164
+ document.addEventListener('pointerup', this.checkHover);
165
+ }
166
+ unsubscribeHoverControl() {
167
+ if (!this.subscribedHoverControl)
168
+ return;
169
+ this.subscribedHoverControl = false;
170
+ document.removeEventListener('pointermove', this.checkHover);
171
+ document.removeEventListener('pointerup', this.checkHover);
172
+ }
173
+ updateBounds() {
174
+ if (!this.containerElem)
175
+ return;
176
+ if (!this.triggerElem.current)
177
+ return;
178
+ this.updateBoundsThrottled();
179
+ }
180
+ updateBoundsThrottled = throttle(() => {
181
+ const trigger = this.triggerElem.current;
182
+ const offset = this.props.offset || {};
183
+ const n = (num) => num || 0;
184
+ const bounds = {
185
+ minHeight: trigger.offsetHeight - n(offset.top) - n(offset.bottom),
186
+ minWidth: trigger.offsetWidth - n(offset.left) - n(offset.right),
187
+ ...getCoords(trigger, this.props.direction, this.props.offset),
188
+ };
189
+ Object.entries(bounds).forEach(([key, value]) => {
190
+ this.triggerElem.current.style[key] = value;
191
+ });
192
+ this.setState({ triggerBounds: bounds });
193
+ this.scheduleComputeShift();
194
+ }, 200, { trailing: true });
195
+ scheduleComputeShift() {
196
+ if (!isBrowser)
197
+ return;
198
+ cancelAnimationFrame(this.shiftOuterRafId);
199
+ cancelAnimationFrame(this.shiftInnerRafId);
200
+ this.shiftOuterRafId = window.requestAnimationFrame(() => {
201
+ this.shiftOuterRafId = 0;
202
+ this.shiftInnerRafId = window.requestAnimationFrame(() => {
203
+ this.shiftInnerRafId = 0;
204
+ this.computeBoundaryShift();
205
+ });
206
+ });
207
+ }
208
+ computeBoundaryShift = () => {
209
+ if (!this.containerElem ||
210
+ !this.state.isOpen ||
211
+ !this.state.isContentVisible) {
212
+ return;
213
+ }
214
+ const el = this.containerElem;
215
+ const wrapper = el.parentElement;
216
+ if (!(wrapper instanceof HTMLElement)) {
217
+ return;
218
+ }
219
+ const { boundary, boundaryMountSelector, inline, shiftPadding, offset } = this.props;
220
+ const bounds = popupBoundaryEdges({
221
+ boundary,
222
+ boundaryMountSelector: boundaryMountSelector ?? `#${config.appOverlayId}`,
223
+ inline,
224
+ padding: popupBoundaryPadding(OFFSET_GAP + (shiftPadding ?? 0), offset),
225
+ });
226
+ const availWidth = edgesWidth(bounds);
227
+ const fitWidth = availWidth >= BOUNDARY_FIT_EPSILON ? Math.floor(availWidth) : null;
228
+ const measured = this.measureBoundaryRect(el, wrapper, fitWidth, bounds);
229
+ this.setBoundaryFit(fitRectToBoundary(measured.rect, bounds, measured.maxWidth));
230
+ };
231
+ measureBoundaryRect(el, wrapper, fitWidth, bounds) {
232
+ const transform = wrapper.style.transform;
233
+ const maxWidth = el.style.maxWidth;
234
+ const overflowX = el.style.overflowX;
235
+ const overflowY = el.style.overflowY;
236
+ wrapper.style.transform = '';
237
+ el.style.maxWidth = '';
238
+ el.style.overflowX = '';
239
+ el.style.overflowY = '';
240
+ void wrapper.offsetHeight;
241
+ let rect = el.getBoundingClientRect();
242
+ const shouldClamp = fitWidth !== null &&
243
+ rect.width > edgesWidth(bounds) + BOUNDARY_FIT_EPSILON;
244
+ if (shouldClamp) {
245
+ el.style.maxWidth = `${fitWidth}px`;
246
+ el.style.overflowX = 'auto';
247
+ el.style.overflowY = 'hidden';
248
+ void el.offsetHeight;
249
+ rect = el.getBoundingClientRect();
250
+ }
251
+ wrapper.style.transform = transform;
252
+ el.style.maxWidth = maxWidth;
253
+ el.style.overflowX = overflowX;
254
+ el.style.overflowY = overflowY;
255
+ return { rect, maxWidth: shouldClamp ? fitWidth : null };
256
+ }
257
+ setBoundaryFit(boundaryFit) {
258
+ const prev = this.state.boundaryFit;
259
+ if (prev.left !== boundaryFit.left ||
260
+ prev.top !== boundaryFit.top ||
261
+ prev.maxWidth !== boundaryFit.maxWidth) {
262
+ this.setState({ boundaryFit });
263
+ }
264
+ }
265
+ checkHover = debounce((e) => {
266
+ if (this.isPointerPressedInside)
267
+ return;
268
+ const { isOpen, rootPopupId } = this.state;
269
+ const overTrigger = this.isPointerOver(e.target, S.trigger);
270
+ const overContent = this.isPointerOver(e.target, S.content);
271
+ if (!isOpen) {
272
+ if (overTrigger)
273
+ this.open();
274
+ return;
275
+ }
276
+ // isOpen
277
+ if (overTrigger || overContent)
278
+ return;
279
+ if (typeof rootPopupId === 'number') {
280
+ if (isLastChild(rootPopupId, this.id)) {
281
+ this.close();
282
+ unsetChild(rootPopupId, this.id);
283
+ }
284
+ }
285
+ else {
286
+ const isOverAnyPopupContent = e.target.closest(`.${S.content}`);
287
+ if (!isOverAnyPopupContent || !childs[this.id]?.length) {
288
+ this.close();
289
+ }
290
+ }
291
+ }, 100);
292
+ isControllable = () => typeof this.props.isOpen === 'boolean';
293
+ isLastClickInside = () => this.pointerDownTarget &&
294
+ (this.pointerDownTarget.closest(`.${S.trigger}`) ||
295
+ this.pointerDownTarget.closest(`.${S.content}`));
296
+ onDocPointerDown = (e) => {
297
+ this.pointerDownTarget = e.target;
298
+ this.isPointerPressedInside = this.isLastClickInside();
299
+ this.timers.after(100, () => (this.pointerDownTarget = null));
300
+ };
301
+ onDocPointerUp = (e) => {
302
+ if (!this.isPointerPressedInside)
303
+ this.close();
304
+ this.isPointerPressedInside = false;
305
+ };
306
+ isPointerOver(target, elem) {
307
+ return target.closest(`.${elem}[data-popup-id="${this.id}"]`);
308
+ }
309
+ onScroll = throttle(e => {
310
+ if (!this.state.isOpen) {
311
+ const { top, left, maxWidth } = this.state.boundaryFit;
312
+ if (left || top || maxWidth !== null) {
313
+ this.setState({ boundaryFit: ZERO_BOUNDARY_FIT });
314
+ }
315
+ return;
316
+ }
317
+ // if scrolling outside this popup - close it
318
+ if (!this.isPointerOver(e.target, S.content) &&
319
+ !childs[this.id]?.length) {
320
+ this.close();
321
+ }
322
+ }, 200);
323
+ onDocKeyDown = (e) => {
324
+ this.pointerDownTarget = null;
325
+ };
326
+ onDocKeyUp = (e) => {
327
+ if (this.state.isOpen && e.key === 'Escape') {
328
+ e.stopPropagation();
329
+ this.close();
330
+ return;
331
+ }
332
+ if (this.focused && /Enter| /.test(e.key)) {
333
+ e.stopPropagation();
334
+ this.toggle();
335
+ }
336
+ };
337
+ onTriggerPointerDown = e => {
338
+ this.pointerDownTarget = e.target;
339
+ this.pointerPressed = true;
340
+ };
341
+ onTriggerPointerUp = e => {
342
+ this.pointerPressed = false;
343
+ if (e.traget === this.pointerDownTarget)
344
+ this.toggle();
345
+ };
346
+ onFocus = e => {
347
+ this.focused = true;
348
+ this.props.triggerProps?.onFocus?.(e);
349
+ if (!this.pointerPressed && !this.state.isOpen)
350
+ this.open();
351
+ };
352
+ onBlur = e => {
353
+ this.focused = false;
354
+ this.props.triggerProps?.onBlur?.(e);
355
+ if (this.isControllable() && this.props.isOpen)
356
+ return;
357
+ // give time to fire clicks inside popup
358
+ this.timers.after(60, () => {
359
+ if (!this.isLastClickInside())
360
+ this.close();
361
+ });
362
+ };
363
+ onTriggerResize = () => {
364
+ this.updateBounds();
365
+ };
366
+ onContainerResize = () => {
367
+ this.updateBounds();
368
+ };
369
+ open = throttle(() => {
370
+ const { rootPopupId } = this.state;
371
+ if (this.state.isOpen)
372
+ return;
373
+ this.updateBounds();
374
+ this.subscribeSizeChange();
375
+ this.subscribeScroll();
376
+ this.setState({
377
+ isContentVisible: true,
378
+ boundaryFit: ZERO_BOUNDARY_FIT,
379
+ });
380
+ this.changeState(true, this.afterOpen);
381
+ if (rootPopupId)
382
+ setChild(rootPopupId, this.id);
383
+ }, 100);
384
+ close = () => {
385
+ if (!this.state.isOpen)
386
+ return;
387
+ this.unsubscribeSizeChange();
388
+ this.changeState(false, this.afterClose);
389
+ };
390
+ changeState(isOpen, callback) {
391
+ const { animated, onOpen, onClose } = this.props;
392
+ this.timers.clear();
393
+ this.setState({ isOpen });
394
+ isOpen ? onOpen?.() : onClose?.();
395
+ if (animated) {
396
+ this.setState({ animating: true });
397
+ this.timers.after(ANIMATION_DURATION + 500, () => {
398
+ this.setState({ animating: false });
399
+ callback();
400
+ });
401
+ }
402
+ else {
403
+ callback();
404
+ }
405
+ }
406
+ afterOpen = () => {
407
+ this.props.onAfterOpen?.();
408
+ };
409
+ afterClose = () => {
410
+ this.setState({
411
+ isContentVisible: false,
412
+ boundaryFit: ZERO_BOUNDARY_FIT,
413
+ });
414
+ this.props.onAfterClose?.();
415
+ };
416
+ toggle = throttle(() => {
417
+ this.state.isOpen ? this.close() : this.open();
418
+ }, 100);
419
+ renderTrigger() {
420
+ const { trigger, content, disabled, focusControl, hoverControl, ...rest } = this.props;
421
+ const triggerProps = { ...rest.triggerProps };
422
+ const { isOpen } = this.state;
423
+ if (!trigger)
424
+ return null;
425
+ const disableTrigger = disabled || !trigger;
426
+ const classesTrigger = cn(S.trigger, isOpen && S.isOpen, disableTrigger && S.disabled, triggerProps.className);
427
+ if (!disableTrigger) {
428
+ triggerProps.role = 'button';
429
+ if (hoverControl) {
430
+ Object.assign(triggerProps, {
431
+ onPointerDown: this.onTriggerPointerDown,
432
+ onPointerUp: this.onTriggerPointerUp,
433
+ });
434
+ }
435
+ if (focusControl) {
436
+ Object.assign(triggerProps, {
437
+ onFocus: this.onFocus,
438
+ onBlur: this.onBlur,
439
+ });
440
+ }
441
+ }
442
+ return (jsx("div", { className: classesTrigger, ...triggerProps, suppressHydrationWarning: true, "data-popup-id": this.id, ref: this.triggerElem, children: trigger }));
443
+ }
444
+ renderContent() {
445
+ const { content, contentProps = {}, wrapperProps = {}, size, disabled, inline, outlined, animated, paranja, blur, round, elevation, } = this.props;
446
+ const { isOpen, isContentVisible, animating, direction, triggerBounds, rootPopupId, boundaryFit, } = this.state;
447
+ if (disabled)
448
+ return null;
449
+ const wrapperClasses = cn(S.contentWrapper, inline && S.inline, isOpen && S.isOpen, animating && S.animating, wrapperProps.className);
450
+ const trigger = this.triggerElem.current;
451
+ const [axis, float] = direction.split('-');
452
+ const classes = cn(S.content, outlined && S.outlined, animated && animating && S.animating, elevation && S[`elevation-${elevation}`], S[`size-${size}`], S[`axis-${axis}`], S[`float-${float || 'middle'}`], blur && S.blur, round && S.round, contentProps.className);
453
+ if (trigger && !inline && triggerBounds) {
454
+ const shiftTf = boundaryFit.left !== 0 || boundaryFit.top !== 0
455
+ ? `translate3d(${boundaryFit.left}px, ${boundaryFit.top}px, 0)`
456
+ : undefined;
457
+ wrapperProps.style = {
458
+ ...triggerBounds,
459
+ ...wrapperProps.style,
460
+ ...(shiftTf ? { transform: shiftTf } : {}),
461
+ };
462
+ }
463
+ const contentNode = (jsx("div", { ...wrapperProps, className: wrapperClasses, children: jsxs("div", { ...contentProps, ref: this.onContainerElemRef, className: classes, suppressHydrationWarning: true, "data-popup-id": this.id, "data-root-popup-id": rootPopupId, style: {
464
+ ...(contentProps.style ?? {}),
465
+ ...(boundaryFit.maxWidth !== null && boundaryFit.maxWidth > 0
466
+ ? {
467
+ maxWidth: boundaryFit.maxWidth,
468
+ overflowX: 'auto',
469
+ overflowY: 'hidden',
470
+ }
471
+ : {}),
472
+ }, children: [paranja && !rootPopupId && (jsx(Paranja, { visible: isContentVisible, blur: blur })), isContentVisible && jsx(Fragment, { children: content })] }) }));
473
+ if (inline)
474
+ return contentNode;
475
+ return jsx(Portal, { children: contentNode });
476
+ }
477
+ render() {
478
+ const { className } = this.props;
479
+ const classes = cn(S.root, className);
480
+ return (jsxs("div", { className: classes, ref: this.rootElem, children: [this.renderTrigger(), this.renderContent()] }));
481
+ }
482
+ }
483
+
484
+ export { ANIMATION_DURATION, Popup };
@@ -1,2 +1,7 @@
1
- import styleInject from"../../../node_modules/style-inject/dist/style-inject.es.js";var css_248z='.Popup_root__uQ-fP{display:inline-block;position:relative}.Popup_contentWrapper__2yi-2{opacity:0;pointer-events:none;position:absolute}.Popup_contentWrapper__2yi-2.Popup_animating__kR0qF{transition:opacity .1s ease-out}.Popup_contentWrapper__2yi-2.Popup_isOpen__BRIdP{opacity:1;pointer-events:all}.Popup_contentWrapper__2yi-2.Popup_inline__1-l1S.Popup_isOpen__BRIdP{position:relative}.Popup_contentWrapper__2yi-2:not(.Popup_inline__1-l1S),.Popup_contentWrapper__2yi-2:not(.Popup_inline__1-l1S)>.Popup_content__e8Qyu{position:absolute}.Popup_trigger__jQNaQ{cursor:pointer}.Popup_trigger__jQNaQ.Popup_isOpen__BRIdP{position:relative;z-index:11}.Popup_trigger__jQNaQ.Popup_disabled__DlE9y{opacity:.4;pointer-events:none}.Popup_content__e8Qyu{-webkit-backface-visibility:hidden;backface-visibility:hidden;background-color:var(--decent-color);box-shadow:inset 0 0 0 1px var(--accent-color-alpha-50);box-sizing:border-box;max-width:min(min(560px,70vw),calc(100svw - 16px));min-width:100%;overflow:hidden;position:relative;transform-origin:top center;z-index:11}.Popup_content__e8Qyu:before{background-color:var(--accent-color-alpha-50);bottom:0;content:"";left:0;pointer-events:none;position:absolute;right:0;top:0}.Popup_content__e8Qyu.Popup_blur__1hfU8{-webkit-backdrop-filter:blur(50px);backdrop-filter:blur(50px);background-color:var(--decent-color-alpha-500)}.Popup_content__e8Qyu.Popup_size-xs__7QR-d{border-radius:4px}.Popup_content__e8Qyu.Popup_size-xs__7QR-d.Popup_round__7rD1m{border-radius:12px}.Popup_content__e8Qyu.Popup_size-s__UmixP{border-radius:4px}.Popup_content__e8Qyu.Popup_size-s__UmixP.Popup_round__7rD1m{border-radius:16px}.Popup_content__e8Qyu.Popup_size-m__FYpTL{border-radius:6px}.Popup_content__e8Qyu.Popup_size-m__FYpTL.Popup_round__7rD1m{border-radius:20px}.Popup_content__e8Qyu.Popup_size-l__BTS57{border-radius:8px}.Popup_content__e8Qyu.Popup_size-l__BTS57.Popup_round__7rD1m{border-radius:24px}.Popup_content__e8Qyu.Popup_size-xl__fSfCc{border-radius:10px}.Popup_content__e8Qyu.Popup_size-xl__fSfCc.Popup_round__7rD1m{border-radius:28px}.Popup_content__e8Qyu.Popup_elevation-1__vmP3e{box-shadow:inset 0 0 0 1px var(--accent-color-alpha-50),0 0 var(--p-3) 2px var(--decent-color-alpha-500)}.Popup_content__e8Qyu.Popup_elevation-2__Ci4sI{box-shadow:inset 0 0 0 1px var(--accent-color-alpha-50),0 0 var(--p-5) 2px var(--decent-color-alpha-500)}.Popup_content__e8Qyu.Popup_outlined__g3cJV:after{border-radius:inherit;bottom:0;content:"";left:0;pointer-events:none;position:absolute;right:0;top:0}.Popup_isOpen__BRIdP .Popup_content__e8Qyu{opacity:1;pointer-events:all;transform:scaleX(1)}.Popup_animating__kR0qF{transition:70ms ease-out;transition-property:transform,opacity,margin}.Popup_axis-top__BaLgG{bottom:100%}.Popup_axis-bottom__hZwwr{top:100%}.Popup_axis-right__LMYVy{left:100%}.Popup_axis-left__SFKm-{right:100%}.Popup_float-top__8SQAu{bottom:0}.Popup_float-right__mdm-3{left:0}.Popup_float-bottom__7flve{top:0}.Popup_float-left__tz7fX{right:0}.Popup_axis-bottom__hZwwr,.Popup_axis-top__BaLgG{transform:scaleY(.5)}.Popup_axis-bottom__hZwwr.Popup_float-middle__Dmnn1,.Popup_axis-top__BaLgG.Popup_float-middle__Dmnn1{left:50%;transform:translateX(-50%) scaleY(.5)}.Popup_isOpen__BRIdP .Popup_axis-bottom__hZwwr.Popup_float-middle__Dmnn1,.Popup_isOpen__BRIdP .Popup_axis-top__BaLgG.Popup_float-middle__Dmnn1{transform:translateX(-50%) scaleX(1)}.Popup_axis-left__SFKm-,.Popup_axis-right__LMYVy{transform:scaleX(.5)}.Popup_axis-left__SFKm-.Popup_float-middle__Dmnn1,.Popup_axis-right__LMYVy.Popup_float-middle__Dmnn1{top:50%;transform:translateY(-50%) scaleX(.5)}.Popup_isOpen__BRIdP .Popup_axis-left__SFKm-.Popup_float-middle__Dmnn1,.Popup_isOpen__BRIdP .Popup_axis-right__LMYVy.Popup_float-middle__Dmnn1{transform:translateY(-50%) scaleX(1)}.Popup_axis-top__BaLgG.Popup_float-middle__Dmnn1{transform-origin:bottom center}.Popup_axis-top__BaLgG.Popup_float-right__mdm-3{transform-origin:bottom left}.Popup_axis-top__BaLgG.Popup_float-left__tz7fX{transform-origin:bottom right}.Popup_axis-bottom__hZwwr.Popup_float-middle__Dmnn1{transform-origin:top center}.Popup_axis-bottom__hZwwr.Popup_float-right__mdm-3{transform-origin:top left}.Popup_axis-bottom__hZwwr.Popup_float-left__tz7fX{transform-origin:top right}.Popup_axis-right__LMYVy.Popup_float-middle__Dmnn1{transform-origin:center left}.Popup_axis-right__LMYVy.Popup_float-top__8SQAu{transform-origin:bottom left}.Popup_axis-right__LMYVy.Popup_float-bottom__7flve{transform-origin:top left}.Popup_axis-left__SFKm-.Popup_float-middle__Dmnn1{transform-origin:center right}.Popup_axis-left__SFKm-.Popup_float-top__8SQAu{transform-origin:bottom right}.Popup_axis-left__SFKm-.Popup_float-bottom__7flve{transform-origin:top right}',S={root:"Popup_root__uQ-fP",contentWrapper:"Popup_contentWrapper__2yi-2",animating:"Popup_animating__kR0qF",isOpen:"Popup_isOpen__BRIdP",inline:"Popup_inline__1-l1S",content:"Popup_content__e8Qyu",trigger:"Popup_trigger__jQNaQ",disabled:"Popup_disabled__DlE9y",blur:"Popup_blur__1hfU8","size-xs":"Popup_size-xs__7QR-d",round:"Popup_round__7rD1m","size-s":"Popup_size-s__UmixP","size-m":"Popup_size-m__FYpTL","size-l":"Popup_size-l__BTS57","size-xl":"Popup_size-xl__fSfCc","elevation-1":"Popup_elevation-1__vmP3e","elevation-2":"Popup_elevation-2__Ci4sI",outlined:"Popup_outlined__g3cJV","axis-top":"Popup_axis-top__BaLgG","axis-bottom":"Popup_axis-bottom__hZwwr","axis-right":"Popup_axis-right__LMYVy","axis-left":"Popup_axis-left__SFKm-","float-top":"Popup_float-top__8SQAu","float-right":"Popup_float-right__mdm-3","float-bottom":"Popup_float-bottom__7flve","float-left":"Popup_float-left__tz7fX","float-middle":"Popup_float-middle__Dmnn1"};styleInject(css_248z);export{S as default};
2
- //# sourceMappingURL=Popup.styl.js.map
1
+ import styleInject from '../../../node_modules/style-inject/dist/style-inject.es.js';
2
+
3
+ var css_248z = ".Popup_root__uQ-fP{display:inline-block;position:relative}.Popup_contentWrapper__2yi-2{opacity:0;pointer-events:none;position:absolute}.Popup_contentWrapper__2yi-2.Popup_animating__kR0qF{transition:opacity .1s ease-out}.Popup_contentWrapper__2yi-2.Popup_isOpen__BRIdP{opacity:1;pointer-events:all}.Popup_contentWrapper__2yi-2.Popup_inline__1-l1S.Popup_isOpen__BRIdP{position:relative}.Popup_contentWrapper__2yi-2:not(.Popup_inline__1-l1S),.Popup_contentWrapper__2yi-2:not(.Popup_inline__1-l1S)>.Popup_content__e8Qyu{position:absolute}.Popup_trigger__jQNaQ{cursor:pointer}.Popup_trigger__jQNaQ.Popup_isOpen__BRIdP{position:relative;z-index:11}.Popup_trigger__jQNaQ.Popup_disabled__DlE9y{opacity:.4;pointer-events:none}.Popup_content__e8Qyu{-webkit-backface-visibility:hidden;backface-visibility:hidden;background-color:var(--decent-color);box-shadow:inset 0 0 0 1px var(--accent-color-alpha-50);box-sizing:border-box;max-width:min(min(560px,70vw),calc(100svw - 16px));min-width:100%;overflow:hidden;position:relative;transform-origin:top center;z-index:11}.Popup_content__e8Qyu:before{background-color:var(--accent-color-alpha-50);bottom:0;content:\"\";left:0;pointer-events:none;position:absolute;right:0;top:0}.Popup_content__e8Qyu.Popup_blur__1hfU8{-webkit-backdrop-filter:blur(50px);backdrop-filter:blur(50px);background-color:var(--decent-color-alpha-500)}.Popup_content__e8Qyu.Popup_size-xs__7QR-d{border-radius:4px}.Popup_content__e8Qyu.Popup_size-xs__7QR-d.Popup_round__7rD1m{border-radius:12px}.Popup_content__e8Qyu.Popup_size-s__UmixP{border-radius:4px}.Popup_content__e8Qyu.Popup_size-s__UmixP.Popup_round__7rD1m{border-radius:16px}.Popup_content__e8Qyu.Popup_size-m__FYpTL{border-radius:6px}.Popup_content__e8Qyu.Popup_size-m__FYpTL.Popup_round__7rD1m{border-radius:20px}.Popup_content__e8Qyu.Popup_size-l__BTS57{border-radius:8px}.Popup_content__e8Qyu.Popup_size-l__BTS57.Popup_round__7rD1m{border-radius:24px}.Popup_content__e8Qyu.Popup_size-xl__fSfCc{border-radius:10px}.Popup_content__e8Qyu.Popup_size-xl__fSfCc.Popup_round__7rD1m{border-radius:28px}.Popup_content__e8Qyu.Popup_elevation-1__vmP3e{box-shadow:inset 0 0 0 1px var(--accent-color-alpha-50),0 0 var(--p-3) 2px var(--decent-color-alpha-500)}.Popup_content__e8Qyu.Popup_elevation-2__Ci4sI{box-shadow:inset 0 0 0 1px var(--accent-color-alpha-50),0 0 var(--p-5) 2px var(--decent-color-alpha-500)}.Popup_content__e8Qyu.Popup_outlined__g3cJV:after{border-radius:inherit;bottom:0;content:\"\";left:0;pointer-events:none;position:absolute;right:0;top:0}.Popup_isOpen__BRIdP .Popup_content__e8Qyu{opacity:1;pointer-events:all;transform:scaleX(1)}.Popup_animating__kR0qF{transition:70ms ease-out;transition-property:transform,opacity,margin}.Popup_axis-top__BaLgG{bottom:100%}.Popup_axis-bottom__hZwwr{top:100%}.Popup_axis-right__LMYVy{left:100%}.Popup_axis-left__SFKm-{right:100%}.Popup_float-top__8SQAu{bottom:0}.Popup_float-right__mdm-3{left:0}.Popup_float-bottom__7flve{top:0}.Popup_float-left__tz7fX{right:0}.Popup_axis-bottom__hZwwr,.Popup_axis-top__BaLgG{transform:scaleY(.5)}.Popup_axis-bottom__hZwwr.Popup_float-middle__Dmnn1,.Popup_axis-top__BaLgG.Popup_float-middle__Dmnn1{left:50%;transform:translateX(-50%) scaleY(.5)}.Popup_isOpen__BRIdP .Popup_axis-bottom__hZwwr.Popup_float-middle__Dmnn1,.Popup_isOpen__BRIdP .Popup_axis-top__BaLgG.Popup_float-middle__Dmnn1{transform:translateX(-50%) scaleX(1)}.Popup_axis-left__SFKm-,.Popup_axis-right__LMYVy{transform:scaleX(.5)}.Popup_axis-left__SFKm-.Popup_float-middle__Dmnn1,.Popup_axis-right__LMYVy.Popup_float-middle__Dmnn1{top:50%;transform:translateY(-50%) scaleX(.5)}.Popup_isOpen__BRIdP .Popup_axis-left__SFKm-.Popup_float-middle__Dmnn1,.Popup_isOpen__BRIdP .Popup_axis-right__LMYVy.Popup_float-middle__Dmnn1{transform:translateY(-50%) scaleX(1)}.Popup_axis-top__BaLgG.Popup_float-middle__Dmnn1{transform-origin:bottom center}.Popup_axis-top__BaLgG.Popup_float-right__mdm-3{transform-origin:bottom left}.Popup_axis-top__BaLgG.Popup_float-left__tz7fX{transform-origin:bottom right}.Popup_axis-bottom__hZwwr.Popup_float-middle__Dmnn1{transform-origin:top center}.Popup_axis-bottom__hZwwr.Popup_float-right__mdm-3{transform-origin:top left}.Popup_axis-bottom__hZwwr.Popup_float-left__tz7fX{transform-origin:top right}.Popup_axis-right__LMYVy.Popup_float-middle__Dmnn1{transform-origin:center left}.Popup_axis-right__LMYVy.Popup_float-top__8SQAu{transform-origin:bottom left}.Popup_axis-right__LMYVy.Popup_float-bottom__7flve{transform-origin:top left}.Popup_axis-left__SFKm-.Popup_float-middle__Dmnn1{transform-origin:center right}.Popup_axis-left__SFKm-.Popup_float-top__8SQAu{transform-origin:bottom right}.Popup_axis-left__SFKm-.Popup_float-bottom__7flve{transform-origin:top right}";
4
+ var S = {"root":"Popup_root__uQ-fP","contentWrapper":"Popup_contentWrapper__2yi-2","animating":"Popup_animating__kR0qF","isOpen":"Popup_isOpen__BRIdP","inline":"Popup_inline__1-l1S","content":"Popup_content__e8Qyu","trigger":"Popup_trigger__jQNaQ","disabled":"Popup_disabled__DlE9y","blur":"Popup_blur__1hfU8","size-xs":"Popup_size-xs__7QR-d","round":"Popup_round__7rD1m","size-s":"Popup_size-s__UmixP","size-m":"Popup_size-m__FYpTL","size-l":"Popup_size-l__BTS57","size-xl":"Popup_size-xl__fSfCc","elevation-1":"Popup_elevation-1__vmP3e","elevation-2":"Popup_elevation-2__Ci4sI","outlined":"Popup_outlined__g3cJV","axis-top":"Popup_axis-top__BaLgG","axis-bottom":"Popup_axis-bottom__hZwwr","axis-right":"Popup_axis-right__LMYVy","axis-left":"Popup_axis-left__SFKm-","float-top":"Popup_float-top__8SQAu","float-right":"Popup_float-right__mdm-3","float-bottom":"Popup_float-bottom__7flve","float-left":"Popup_float-left__tz7fX","float-middle":"Popup_float-middle__Dmnn1"};
5
+ styleInject(css_248z);
6
+
7
+ export { S as default };
@@ -1,2 +1,15 @@
1
- import{jsx}from"react/jsx-runtime";import{createElement}from"react";import cn from"classnames";import{Button}from"../Button/Button.js";import{Popup}from"../Popup/Popup.js";import S from"./PopupMenu.styl.js";function PopupMenu({items:t,onClose:e,...o}){if(0===t.length)return null;const r=o["size"];return jsx(Popup,{...o,content:jsx("div",{className:S.list,children:t.map(({id:t,title:e,className:o,...n})=>createElement(Button,{variant:"clear",size:r,...n,className:cn(S.item,o),key:t},e))})})}export{PopupMenu};
2
- //# sourceMappingURL=PopupMenu.js.map
1
+ import { jsx } from 'react/jsx-runtime';
2
+ import { createElement } from 'react';
3
+ import cn from 'classnames';
4
+ import { Button } from '../Button/Button.js';
5
+ import { Popup } from '../Popup/Popup.js';
6
+ import S from './PopupMenu.styl.js';
7
+
8
+ function PopupMenu({ items, onClose, ...props }) {
9
+ if (items.length === 0)
10
+ return null;
11
+ const { size } = props;
12
+ return (jsx(Popup, { ...props, content: jsx("div", { className: S.list, children: items.map(({ id, title, className, ...rest }) => (createElement(Button, { variant: "clear", size: size, ...rest, className: cn(S.item, className), key: id }, title))) }) }));
13
+ }
14
+
15
+ export { PopupMenu };
@@ -1,2 +1,7 @@
1
- import styleInject from"../../../node_modules/style-inject/dist/style-inject.es.js";var css_248z=".PopupMenu_list__G7xP3{align-items:stretch;border-radius:inherit;display:flex;flex-direction:column;padding:2px}.PopupMenu_item__wxay-+.PopupMenu_item__wxay-{margin-top:2px}.PopupMenu_item__wxay-:first-child{border-top-left-radius:inherit;border-top-right-radius:inherit}.PopupMenu_item__wxay-:last-child{border-bottom-left-radius:inherit;border-bottom-right-radius:inherit}",S={list:"PopupMenu_list__G7xP3",item:"PopupMenu_item__wxay-"};styleInject(css_248z);export{S as default};
2
- //# sourceMappingURL=PopupMenu.styl.js.map
1
+ import styleInject from '../../../node_modules/style-inject/dist/style-inject.es.js';
2
+
3
+ var css_248z = ".PopupMenu_list__G7xP3{align-items:stretch;border-radius:inherit;display:flex;flex-direction:column;padding:2px}.PopupMenu_item__wxay-+.PopupMenu_item__wxay-{margin-top:2px}.PopupMenu_item__wxay-:first-child{border-top-left-radius:inherit;border-top-right-radius:inherit}.PopupMenu_item__wxay-:last-child{border-bottom-left-radius:inherit;border-bottom-right-radius:inherit}";
4
+ var S = {"list":"PopupMenu_list__G7xP3","item":"PopupMenu_item__wxay-"};
5
+ styleInject(css_248z);
6
+
7
+ export { S as default };
@@ -1,2 +1,33 @@
1
- import{jsx,Fragment}from"react/jsx-runtime";import{useState,useLayoutEffect,useMemo}from"react";import{createPortal}from"react-dom";import{config}from"../../tools/config.js";import{isBrowser}from"../../tools/env.js";const DEFAULT_SELECTOR="#"+config.appOverlayId;function Portal(e){const{selector:o=DEFAULT_SELECTOR,children:t}=e,[r,n]=useState(isBrowser);useLayoutEffect(()=>{n(!0)},[]);e=useMemo(()=>r?document.querySelector(o):null,[o,r]);return r?e?createPortal(jsx(Fragment,{children:t}),e):(console.warn("Portal target element not found: "+o),null):null}export{Portal};
2
- //# sourceMappingURL=Portal.js.map
1
+ import { jsx, Fragment } from 'react/jsx-runtime';
2
+ import { useState, useLayoutEffect, useMemo } from 'react';
3
+ import { createPortal } from 'react-dom';
4
+ import { config } from '../../tools/config.js';
5
+ import { isBrowser } from '../../tools/env.js';
6
+
7
+ const DEFAULT_SELECTOR = `#${config.appOverlayId}`;
8
+ function Portal(props) {
9
+ const { selector = DEFAULT_SELECTOR, children } = props;
10
+ // Start with immediate rendering if we're in browser
11
+ const [isMounted, setMounted] = useState(isBrowser);
12
+ useLayoutEffect(() => {
13
+ // Ensure we're mounted on client side (handles SSR edge cases)
14
+ setMounted(true);
15
+ }, []);
16
+ // Cache target element to avoid DOM queries on every render
17
+ const targetElement = useMemo(() => {
18
+ if (!isMounted)
19
+ return null;
20
+ return document.querySelector(selector);
21
+ }, [selector, isMounted]);
22
+ // Don't render if not mounted (prevents SSR hydration mismatch)
23
+ if (!isMounted)
24
+ return null;
25
+ // Check if target element exists before rendering
26
+ if (!targetElement) {
27
+ console.warn(`Portal target element not found: ${selector}`);
28
+ return null;
29
+ }
30
+ return createPortal(jsx(Fragment, { children: children }), targetElement);
31
+ }
32
+
33
+ export { Portal };
@@ -1,2 +1,5 @@
1
- const calculateProgress=a=>Math.min(100,Math.max(0,a));export{calculateProgress};
2
- //# sourceMappingURL=Progress.helpers.js.map
1
+ const calculateProgress = (value) => {
2
+ return Math.min(100, Math.max(0, value));
3
+ };
4
+
5
+ export { calculateProgress };
@@ -1,2 +1,12 @@
1
- import{jsxs,jsx}from"react/jsx-runtime";import cn from"classnames";import{calculateProgress}from"./Progress.helpers.js";import S from"./Progress.styl.js";function Progress({value:s,showPercentage:r,size:e="m",alignText:a="center",className:o}){var t=calculateProgress(s),e=cn(S.root,S["size-"+e],S["align-"+a],0<s&&S.animated,o);return jsxs("div",{className:e,children:[jsx("div",{className:S.bar,style:{width:t+"%"}}),r&&jsxs("div",{className:S.label,children:[Math.round(t),"%"]})]})}export{Progress};
2
- //# sourceMappingURL=Progress.js.map
1
+ import { jsxs, jsx } from 'react/jsx-runtime';
2
+ import cn from 'classnames';
3
+ import { calculateProgress } from './Progress.helpers.js';
4
+ import S from './Progress.styl.js';
5
+
6
+ function Progress({ value, showPercentage, size = 'm', alignText = 'center', className, }) {
7
+ const progress = calculateProgress(value);
8
+ const classes = cn(S.root, S[`size-${size}`], S[`align-${alignText}`], value > 0 && S.animated, className);
9
+ return (jsxs("div", { className: classes, children: [jsx("div", { className: S.bar, style: { width: `${progress}%` } }), showPercentage && jsxs("div", { className: S.label, children: [Math.round(progress), "%"] })] }));
10
+ }
11
+
12
+ export { Progress };
@@ -1,2 +1,7 @@
1
- import styleInject from"../../../node_modules/style-inject/dist/style-inject.es.js";var css_248z=".Progress_root__gGPO9{background-color:var(--accent-color-alpha-100);border-radius:50px;position:relative;width:100%}.Progress_size-xs__C0q44{font-size:12px;height:1px}.Progress_size-s__Xl7Vl{font-size:14px;height:2px}.Progress_size-m__2vNe8{font-size:16px;height:8px}.Progress_size-l__GYI3y{font-size:18px;height:12px}.Progress_size-xl__Rl8GA{font-size:20px;height:16px}.Progress_bar__guoEx{background-color:var(--active-color);border-radius:inherit;height:100%}.Progress_animated__rfWjG .Progress_bar__guoEx{transition:width .3s ease}.Progress_hasLabel__1Xx16{margin-top:1em}.Progress_label__rQqsN{bottom:100%;color:var(--accent-color);font-weight:700;margin-bottom:4px;position:absolute}.Progress_align-left__p45c1 .Progress_label__rQqsN{left:var(--p-3)}.Progress_align-center__HheKi .Progress_label__rQqsN{left:50%;transform:translate(-50%)}.Progress_align-right__lIRT2 .Progress_label__rQqsN{right:var(--p-3)}",S={root:"Progress_root__gGPO9","size-xs":"Progress_size-xs__C0q44","size-s":"Progress_size-s__Xl7Vl","size-m":"Progress_size-m__2vNe8","size-l":"Progress_size-l__GYI3y","size-xl":"Progress_size-xl__Rl8GA",bar:"Progress_bar__guoEx",animated:"Progress_animated__rfWjG",hasLabel:"Progress_hasLabel__1Xx16",label:"Progress_label__rQqsN","align-left":"Progress_align-left__p45c1","align-center":"Progress_align-center__HheKi","align-right":"Progress_align-right__lIRT2"};styleInject(css_248z);export{S as default};
2
- //# sourceMappingURL=Progress.styl.js.map
1
+ import styleInject from '../../../node_modules/style-inject/dist/style-inject.es.js';
2
+
3
+ var css_248z = ".Progress_root__gGPO9{background-color:var(--accent-color-alpha-100);border-radius:50px;position:relative;width:100%}.Progress_size-xs__C0q44{font-size:12px;height:1px}.Progress_size-s__Xl7Vl{font-size:14px;height:2px}.Progress_size-m__2vNe8{font-size:16px;height:8px}.Progress_size-l__GYI3y{font-size:18px;height:12px}.Progress_size-xl__Rl8GA{font-size:20px;height:16px}.Progress_bar__guoEx{background-color:var(--active-color);border-radius:inherit;height:100%}.Progress_animated__rfWjG .Progress_bar__guoEx{transition:width .3s ease}.Progress_hasLabel__1Xx16{margin-top:1em}.Progress_label__rQqsN{bottom:100%;color:var(--accent-color);font-weight:700;margin-bottom:4px;position:absolute}.Progress_align-left__p45c1 .Progress_label__rQqsN{left:var(--p-3)}.Progress_align-center__HheKi .Progress_label__rQqsN{left:50%;transform:translate(-50%)}.Progress_align-right__lIRT2 .Progress_label__rQqsN{right:var(--p-3)}";
4
+ var S = {"root":"Progress_root__gGPO9","size-xs":"Progress_size-xs__C0q44","size-s":"Progress_size-s__Xl7Vl","size-m":"Progress_size-m__2vNe8","size-l":"Progress_size-l__GYI3y","size-xl":"Progress_size-xl__Rl8GA","bar":"Progress_bar__guoEx","animated":"Progress_animated__rfWjG","hasLabel":"Progress_hasLabel__1Xx16","label":"Progress_label__rQqsN","align-left":"Progress_align-left__p45c1","align-center":"Progress_align-center__HheKi","align-right":"Progress_align-right__lIRT2"};
5
+ styleInject(css_248z);
6
+
7
+ export { S as default };