ods-component-lib 1.22.2 → 1.22.3

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 (261) hide show
  1. package/dist/_virtual/index5.js +2 -3
  2. package/dist/_virtual/index5.js.map +1 -1
  3. package/dist/_virtual/index6.js +3 -2
  4. package/dist/_virtual/index6.js.map +1 -1
  5. package/dist/components/antd/currencyInput/CurrencySelect.js +15 -14
  6. package/dist/components/antd/currencyInput/CurrencySelect.js.map +1 -1
  7. package/dist/node_modules/@ant-design/cssinjs/es/StyleContext.js +6 -6
  8. package/dist/node_modules/@ant-design/cssinjs/es/StyleContext.js.map +1 -1
  9. package/dist/node_modules/@ant-design/cssinjs/es/hooks/useCacheToken.js +20 -20
  10. package/dist/node_modules/@ant-design/cssinjs/es/hooks/useCacheToken.js.map +1 -1
  11. package/dist/node_modules/@ant-design/cssinjs/es/hooks/useGlobalCache.js.map +1 -1
  12. package/dist/node_modules/@ant-design/cssinjs/es/hooks/useStyleRegister.js +101 -98
  13. package/dist/node_modules/@ant-design/cssinjs/es/hooks/useStyleRegister.js.map +1 -1
  14. package/dist/node_modules/@ant-design/cssinjs/es/util/index.js +29 -27
  15. package/dist/node_modules/@ant-design/cssinjs/es/util/index.js.map +1 -1
  16. package/dist/node_modules/@rc-component/async-validator/es/index.js +20 -20
  17. package/dist/node_modules/@rc-component/async-validator/es/index.js.map +1 -1
  18. package/dist/node_modules/@rc-component/async-validator/es/messages.js +1 -0
  19. package/dist/node_modules/@rc-component/async-validator/es/messages.js.map +1 -1
  20. package/dist/node_modules/@rc-component/async-validator/es/rule/type.js +18 -8
  21. package/dist/node_modules/@rc-component/async-validator/es/rule/type.js.map +1 -1
  22. package/dist/node_modules/@rc-component/async-validator/es/util.js +1 -1
  23. package/dist/node_modules/@rc-component/async-validator/es/util.js.map +1 -1
  24. package/dist/node_modules/@rc-component/async-validator/es/validator/index.js +1 -0
  25. package/dist/node_modules/@rc-component/async-validator/es/validator/index.js.map +1 -1
  26. package/dist/node_modules/@rc-component/collapse/es/hooks/useItems.js +88 -68
  27. package/dist/node_modules/@rc-component/collapse/es/hooks/useItems.js.map +1 -1
  28. package/dist/node_modules/@rc-component/dialog/es/Dialog/Content/Panel.js +75 -96
  29. package/dist/node_modules/@rc-component/dialog/es/Dialog/Content/Panel.js.map +1 -1
  30. package/dist/node_modules/@rc-component/dialog/es/Dialog/Content/index.js +22 -20
  31. package/dist/node_modules/@rc-component/dialog/es/Dialog/Content/index.js.map +1 -1
  32. package/dist/node_modules/@rc-component/dialog/es/Dialog/index.js +92 -100
  33. package/dist/node_modules/@rc-component/dialog/es/Dialog/index.js.map +1 -1
  34. package/dist/node_modules/@rc-component/dialog/es/DialogWrap.js +40 -29
  35. package/dist/node_modules/@rc-component/dialog/es/DialogWrap.js.map +1 -1
  36. package/dist/node_modules/@rc-component/form/es/hooks/useForm.js +115 -100
  37. package/dist/node_modules/@rc-component/form/es/hooks/useForm.js.map +1 -1
  38. package/dist/node_modules/@rc-component/form/es/utils/NameMap.js +28 -22
  39. package/dist/node_modules/@rc-component/form/es/utils/NameMap.js.map +1 -1
  40. package/dist/node_modules/@rc-component/form/es/utils/messages.js +1 -0
  41. package/dist/node_modules/@rc-component/form/es/utils/messages.js.map +1 -1
  42. package/dist/node_modules/@rc-component/image/es/Preview/index.js +111 -105
  43. package/dist/node_modules/@rc-component/image/es/Preview/index.js.map +1 -1
  44. package/dist/node_modules/@rc-component/portal/es/useEscKeyDown.js +42 -22
  45. package/dist/node_modules/@rc-component/portal/es/useEscKeyDown.js.map +1 -1
  46. package/dist/node_modules/@rc-component/resize-observer/es/SingleObserver/index.js +18 -54
  47. package/dist/node_modules/@rc-component/resize-observer/es/SingleObserver/index.js.map +1 -1
  48. package/dist/node_modules/@rc-component/resize-observer/es/index.js.map +1 -1
  49. package/dist/node_modules/@rc-component/resize-observer/es/useResizeObserver.js +50 -0
  50. package/dist/node_modules/@rc-component/resize-observer/es/useResizeObserver.js.map +1 -0
  51. package/dist/node_modules/@rc-component/select/es/SelectInput/Content/MultipleContent.js +50 -50
  52. package/dist/node_modules/@rc-component/select/es/SelectInput/Content/MultipleContent.js.map +1 -1
  53. package/dist/node_modules/@rc-component/select/es/SelectInput/index.js +85 -80
  54. package/dist/node_modules/@rc-component/select/es/SelectInput/index.js.map +1 -1
  55. package/dist/node_modules/@rc-component/table/es/VirtualTable/BodyGrid.js +85 -80
  56. package/dist/node_modules/@rc-component/table/es/VirtualTable/BodyGrid.js.map +1 -1
  57. package/dist/node_modules/@rc-component/trigger/es/Popup/index.js +74 -72
  58. package/dist/node_modules/@rc-component/trigger/es/Popup/index.js.map +1 -1
  59. package/dist/node_modules/@rc-component/trigger/es/UniqueProvider/index.js +10 -9
  60. package/dist/node_modules/@rc-component/trigger/es/UniqueProvider/index.js.map +1 -1
  61. package/dist/node_modules/@rc-component/trigger/es/hooks/useAlign.js +27 -27
  62. package/dist/node_modules/@rc-component/trigger/es/hooks/useAlign.js.map +1 -1
  63. package/dist/node_modules/@rc-component/trigger/es/index.js +150 -140
  64. package/dist/node_modules/@rc-component/trigger/es/index.js.map +1 -1
  65. package/dist/node_modules/@rc-component/util/es/Dom/focus.js +65 -20
  66. package/dist/node_modules/@rc-component/util/es/Dom/focus.js.map +1 -1
  67. package/dist/node_modules/@rc-component/util/es/ref.js +1 -1
  68. package/dist/node_modules/antd/es/_util/wave/WaveEffect.js +53 -48
  69. package/dist/node_modules/antd/es/_util/wave/WaveEffect.js.map +1 -1
  70. package/dist/node_modules/antd/es/_util/wave/style.js +8 -7
  71. package/dist/node_modules/antd/es/_util/wave/style.js.map +1 -1
  72. package/dist/node_modules/antd/es/alert/Alert.js +133 -128
  73. package/dist/node_modules/antd/es/alert/Alert.js.map +1 -1
  74. package/dist/node_modules/antd/es/badge/Badge.js +29 -28
  75. package/dist/node_modules/antd/es/badge/Badge.js.map +1 -1
  76. package/dist/node_modules/antd/es/badge/style/index.js +1 -1
  77. package/dist/node_modules/antd/es/badge/style/index.js.map +1 -1
  78. package/dist/node_modules/antd/es/button/buttonHelpers.js +47 -41
  79. package/dist/node_modules/antd/es/button/buttonHelpers.js.map +1 -1
  80. package/dist/node_modules/antd/es/button/style/variant.js +132 -132
  81. package/dist/node_modules/antd/es/button/style/variant.js.map +1 -1
  82. package/dist/node_modules/antd/es/calendar/generateCalendar.js +55 -57
  83. package/dist/node_modules/antd/es/calendar/generateCalendar.js.map +1 -1
  84. package/dist/node_modules/antd/es/calendar/style/index.js +18 -18
  85. package/dist/node_modules/antd/es/calendar/style/index.js.map +1 -1
  86. package/dist/node_modules/antd/es/card/CardGrid.js.map +1 -1
  87. package/dist/node_modules/antd/es/card/style/index.js +15 -7
  88. package/dist/node_modules/antd/es/card/style/index.js.map +1 -1
  89. package/dist/node_modules/antd/es/checkbox/Group.js +32 -30
  90. package/dist/node_modules/antd/es/checkbox/Group.js.map +1 -1
  91. package/dist/node_modules/antd/es/collapse/Collapse.js +61 -61
  92. package/dist/node_modules/antd/es/collapse/Collapse.js.map +1 -1
  93. package/dist/node_modules/antd/es/config-provider/index.js +76 -71
  94. package/dist/node_modules/antd/es/config-provider/index.js.map +1 -1
  95. package/dist/node_modules/antd/es/date-picker/generatePicker/generateRangePicker.js +29 -31
  96. package/dist/node_modules/antd/es/date-picker/generatePicker/generateRangePicker.js.map +1 -1
  97. package/dist/node_modules/antd/es/date-picker/generatePicker/generateSinglePicker.js +7 -9
  98. package/dist/node_modules/antd/es/date-picker/generatePicker/generateSinglePicker.js.map +1 -1
  99. package/dist/node_modules/antd/es/date-picker/generatePicker/{SuffixIcon.js → useSuffixIcon.js} +4 -4
  100. package/dist/node_modules/antd/es/date-picker/generatePicker/useSuffixIcon.js.map +1 -0
  101. package/dist/node_modules/antd/es/date-picker/style/panel.js +4 -4
  102. package/dist/node_modules/antd/es/date-picker/style/panel.js.map +1 -1
  103. package/dist/node_modules/antd/es/drawer/useFocusable.js +14 -0
  104. package/dist/node_modules/antd/es/drawer/useFocusable.js.map +1 -0
  105. package/dist/node_modules/antd/es/form/style/index.js +24 -24
  106. package/dist/node_modules/antd/es/form/style/index.js.map +1 -1
  107. package/dist/node_modules/antd/es/grid/col.js +56 -54
  108. package/dist/node_modules/antd/es/grid/col.js.map +1 -1
  109. package/dist/node_modules/antd/es/grid/style/index.js +50 -50
  110. package/dist/node_modules/antd/es/grid/style/index.js.map +1 -1
  111. package/dist/node_modules/antd/es/input/style/index.js +1 -0
  112. package/dist/node_modules/antd/es/input/style/index.js.map +1 -1
  113. package/dist/node_modules/antd/es/input-number/index.js +91 -91
  114. package/dist/node_modules/antd/es/input-number/index.js.map +1 -1
  115. package/dist/node_modules/antd/es/input-number/style/index.js +80 -79
  116. package/dist/node_modules/antd/es/input-number/style/index.js.map +1 -1
  117. package/dist/node_modules/antd/es/layout/style/sider.js +9 -9
  118. package/dist/node_modules/antd/es/layout/style/sider.js.map +1 -1
  119. package/dist/node_modules/antd/es/menu/MenuItem.js +6 -6
  120. package/dist/node_modules/antd/es/menu/MenuItem.js.map +1 -1
  121. package/dist/node_modules/antd/es/menu/SubMenu.js +8 -8
  122. package/dist/node_modules/antd/es/menu/SubMenu.js.map +1 -1
  123. package/dist/node_modules/antd/es/menu/style/horizontal.js +1 -1
  124. package/dist/node_modules/antd/es/menu/style/horizontal.js.map +1 -1
  125. package/dist/node_modules/antd/es/menu/style/index.js +58 -58
  126. package/dist/node_modules/antd/es/menu/style/index.js.map +1 -1
  127. package/dist/node_modules/antd/es/menu/style/vertical.js +1 -1
  128. package/dist/node_modules/antd/es/menu/style/vertical.js.map +1 -1
  129. package/dist/node_modules/antd/es/modal/ConfirmDialog.js +117 -112
  130. package/dist/node_modules/antd/es/modal/ConfirmDialog.js.map +1 -1
  131. package/dist/node_modules/antd/es/modal/Modal.js +115 -109
  132. package/dist/node_modules/antd/es/modal/Modal.js.map +1 -1
  133. package/dist/node_modules/antd/es/modal/style/index.js +83 -80
  134. package/dist/node_modules/antd/es/modal/style/index.js.map +1 -1
  135. package/dist/node_modules/antd/es/pagination/Pagination.js +85 -81
  136. package/dist/node_modules/antd/es/pagination/Pagination.js.map +1 -1
  137. package/dist/node_modules/antd/es/pagination/style/bordered.js +2 -2
  138. package/dist/node_modules/antd/es/pagination/style/bordered.js.map +1 -1
  139. package/dist/node_modules/antd/es/pagination/style/index.js +98 -132
  140. package/dist/node_modules/antd/es/pagination/style/index.js.map +1 -1
  141. package/dist/node_modules/antd/es/popover/index.js +77 -82
  142. package/dist/node_modules/antd/es/popover/index.js.map +1 -1
  143. package/dist/node_modules/antd/es/popover/style/index.js +65 -63
  144. package/dist/node_modules/antd/es/popover/style/index.js.map +1 -1
  145. package/dist/node_modules/antd/es/radio/context.js +3 -3
  146. package/dist/node_modules/antd/es/radio/context.js.map +1 -1
  147. package/dist/node_modules/antd/es/radio/group.js +31 -29
  148. package/dist/node_modules/antd/es/radio/group.js.map +1 -1
  149. package/dist/node_modules/antd/es/radio/style/index.js +1 -1
  150. package/dist/node_modules/antd/es/radio/style/index.js.map +1 -1
  151. package/dist/node_modules/antd/es/select/style/dropdown.js +1 -1
  152. package/dist/node_modules/antd/es/select/style/dropdown.js.map +1 -1
  153. package/dist/node_modules/antd/es/select/style/select-input-multiple.js +71 -69
  154. package/dist/node_modules/antd/es/select/style/select-input-multiple.js.map +1 -1
  155. package/dist/node_modules/antd/es/select/style/select-input.js +104 -98
  156. package/dist/node_modules/antd/es/select/style/select-input.js.map +1 -1
  157. package/dist/node_modules/antd/es/space/Item.js +2 -2
  158. package/dist/node_modules/antd/es/space/Item.js.map +1 -1
  159. package/dist/node_modules/antd/es/space/index.js +4 -4
  160. package/dist/node_modules/antd/es/space/index.js.map +1 -1
  161. package/dist/node_modules/antd/es/space/style/addon.js +47 -46
  162. package/dist/node_modules/antd/es/space/style/addon.js.map +1 -1
  163. package/dist/node_modules/antd/es/steps/PanelArrow.js +2 -2
  164. package/dist/node_modules/antd/es/steps/PanelArrow.js.map +1 -1
  165. package/dist/node_modules/antd/es/steps/ProgressIcon.js +12 -10
  166. package/dist/node_modules/antd/es/steps/ProgressIcon.js.map +1 -1
  167. package/dist/node_modules/antd/es/steps/index.js +108 -106
  168. package/dist/node_modules/antd/es/steps/index.js.map +1 -1
  169. package/dist/node_modules/antd/es/steps/style/horizontal.js +13 -11
  170. package/dist/node_modules/antd/es/steps/style/horizontal.js.map +1 -1
  171. package/dist/node_modules/antd/es/steps/style/icon.js +23 -18
  172. package/dist/node_modules/antd/es/steps/style/icon.js.map +1 -1
  173. package/dist/node_modules/antd/es/steps/style/index.js +41 -41
  174. package/dist/node_modules/antd/es/steps/style/index.js.map +1 -1
  175. package/dist/node_modules/antd/es/steps/style/inline.js +28 -23
  176. package/dist/node_modules/antd/es/steps/style/inline.js.map +1 -1
  177. package/dist/node_modules/antd/es/steps/style/label-placement.js +44 -39
  178. package/dist/node_modules/antd/es/steps/style/label-placement.js.map +1 -1
  179. package/dist/node_modules/antd/es/steps/style/nav.js +29 -27
  180. package/dist/node_modules/antd/es/steps/style/nav.js.map +1 -1
  181. package/dist/node_modules/antd/es/steps/style/panel.js +61 -56
  182. package/dist/node_modules/antd/es/steps/style/panel.js.map +1 -1
  183. package/dist/node_modules/antd/es/steps/style/progress-dot.js +28 -26
  184. package/dist/node_modules/antd/es/steps/style/progress-dot.js.map +1 -1
  185. package/dist/node_modules/antd/es/steps/style/progress.js +24 -57
  186. package/dist/node_modules/antd/es/steps/style/progress.js.map +1 -1
  187. package/dist/node_modules/antd/es/steps/style/rtl.js +10 -8
  188. package/dist/node_modules/antd/es/steps/style/rtl.js.map +1 -1
  189. package/dist/node_modules/antd/es/steps/style/small.js +21 -16
  190. package/dist/node_modules/antd/es/steps/style/small.js.map +1 -1
  191. package/dist/node_modules/antd/es/steps/style/status.js +187 -176
  192. package/dist/node_modules/antd/es/steps/style/status.js.map +1 -1
  193. package/dist/node_modules/antd/es/steps/style/util.js +18 -16
  194. package/dist/node_modules/antd/es/steps/style/util.js.map +1 -1
  195. package/dist/node_modules/antd/es/steps/style/vertical.js +21 -16
  196. package/dist/node_modules/antd/es/steps/style/vertical.js.map +1 -1
  197. package/dist/node_modules/antd/es/style/placementArrow.js +31 -29
  198. package/dist/node_modules/antd/es/style/placementArrow.js.map +1 -1
  199. package/dist/node_modules/antd/es/table/InternalTable.js +65 -62
  200. package/dist/node_modules/antd/es/table/InternalTable.js.map +1 -1
  201. package/dist/node_modules/antd/es/table/TableMeasureRowContext.js +6 -0
  202. package/dist/node_modules/antd/es/table/TableMeasureRowContext.js.map +1 -0
  203. package/dist/node_modules/antd/es/table/hooks/useFilter/FilterDropdown.js +145 -137
  204. package/dist/node_modules/antd/es/table/hooks/useFilter/FilterDropdown.js.map +1 -1
  205. package/dist/node_modules/antd/es/table/style/index.js +3 -3
  206. package/dist/node_modules/antd/es/table/style/index.js.map +1 -1
  207. package/dist/node_modules/antd/es/table/style/radius.js +10 -0
  208. package/dist/node_modules/antd/es/table/style/radius.js.map +1 -1
  209. package/dist/node_modules/antd/es/table/style/virtual.js +5 -5
  210. package/dist/node_modules/antd/es/table/style/virtual.js.map +1 -1
  211. package/dist/node_modules/antd/es/theme/util/genStyleUtils.js +29 -32
  212. package/dist/node_modules/antd/es/theme/util/genStyleUtils.js.map +1 -1
  213. package/dist/node_modules/antd/es/timeline/Timeline.js +76 -74
  214. package/dist/node_modules/antd/es/timeline/Timeline.js.map +1 -1
  215. package/dist/node_modules/antd/es/timeline/style/horizontal.js +21 -18
  216. package/dist/node_modules/antd/es/timeline/style/horizontal.js.map +1 -1
  217. package/dist/node_modules/antd/es/timeline/style/index.js +85 -70
  218. package/dist/node_modules/antd/es/timeline/style/index.js.map +1 -1
  219. package/dist/node_modules/antd/es/timeline/useItems.js +38 -37
  220. package/dist/node_modules/antd/es/timeline/useItems.js.map +1 -1
  221. package/dist/node_modules/antd/es/tooltip/PurePanel.js +27 -27
  222. package/dist/node_modules/antd/es/tooltip/PurePanel.js.map +1 -1
  223. package/dist/node_modules/antd/es/tooltip/UniqueProvider/MotionContent.js +17 -22
  224. package/dist/node_modules/antd/es/tooltip/UniqueProvider/MotionContent.js.map +1 -1
  225. package/dist/node_modules/antd/es/tooltip/UniqueProvider/index.js +27 -26
  226. package/dist/node_modules/antd/es/tooltip/UniqueProvider/index.js.map +1 -1
  227. package/dist/node_modules/antd/es/tooltip/index.js +50 -50
  228. package/dist/node_modules/antd/es/tooltip/index.js.map +1 -1
  229. package/dist/node_modules/antd/es/tooltip/style/index.js +55 -52
  230. package/dist/node_modules/antd/es/tooltip/style/index.js.map +1 -1
  231. package/dist/node_modules/antd/es/tooltip/util.js +13 -12
  232. package/dist/node_modules/antd/es/tooltip/util.js.map +1 -1
  233. package/dist/node_modules/antd/es/tree/DirectoryTree.js +42 -41
  234. package/dist/node_modules/antd/es/tree/DirectoryTree.js.map +1 -1
  235. package/dist/node_modules/antd/es/version/version.js +1 -1
  236. package/dist/node_modules/antd/es/version/version.js.map +1 -1
  237. package/dist/node_modules/canvg/lib/index.es.js +84 -84
  238. package/dist/node_modules/canvg/lib/index.es.js.map +1 -1
  239. package/dist/node_modules/compute-scroll-into-view/dist/index.js +17 -17
  240. package/dist/node_modules/compute-scroll-into-view/dist/index.js.map +1 -1
  241. package/dist/node_modules/dompurify/dist/purify.es.js +217 -223
  242. package/dist/node_modules/dompurify/dist/purify.es.js.map +1 -1
  243. package/dist/node_modules/fflate/esm/browser.js +295 -335
  244. package/dist/node_modules/fflate/esm/browser.js.map +1 -1
  245. package/dist/node_modules/jspdf/dist/jspdf.es.min.js +1771 -1781
  246. package/dist/node_modules/jspdf/dist/jspdf.es.min.js.map +1 -1
  247. package/dist/node_modules/raf/index.js +1 -1
  248. package/dist/node_modules/uuid/dist/esm-browser/regex.js +5 -0
  249. package/dist/node_modules/uuid/dist/esm-browser/regex.js.map +1 -0
  250. package/dist/node_modules/uuid/dist/esm-browser/rng.js +2 -3
  251. package/dist/node_modules/uuid/dist/esm-browser/rng.js.map +1 -1
  252. package/dist/node_modules/uuid/dist/esm-browser/stringify.js +10 -6
  253. package/dist/node_modules/uuid/dist/esm-browser/stringify.js.map +1 -1
  254. package/dist/node_modules/uuid/dist/esm-browser/v4.js +6 -9
  255. package/dist/node_modules/uuid/dist/esm-browser/v4.js.map +1 -1
  256. package/dist/node_modules/uuid/dist/esm-browser/validate.js +8 -0
  257. package/dist/node_modules/uuid/dist/esm-browser/validate.js.map +1 -0
  258. package/package.json +1 -1
  259. package/dist/node_modules/antd/es/date-picker/generatePicker/SuffixIcon.js.map +0 -1
  260. package/dist/node_modules/uuid/dist/esm-browser/native.js +0 -7
  261. package/dist/node_modules/uuid/dist/esm-browser/native.js.map +0 -1
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sources":["../../../../../../node_modules/@rc-component/trigger/es/UniqueProvider/index.js"],"sourcesContent":["import * as React from 'react';\nimport Portal from '@rc-component/portal';\nimport TriggerContext, { UniqueContext } from \"../context\";\nimport useDelay from \"../hooks/useDelay\";\nimport useAlign from \"../hooks/useAlign\";\nimport Popup from \"../Popup\";\nimport { useEvent } from '@rc-component/util';\nimport useTargetState from \"./useTargetState\";\nimport { isDOM } from \"@rc-component/util/es/Dom/findDOMNode\";\nimport UniqueContainer from \"./UniqueContainer\";\nimport { clsx } from 'clsx';\nimport { getAlignPopupClassName } from \"../util\";\nconst UniqueProvider = ({\n children,\n postTriggerProps\n}) => {\n const [trigger, open, options, onTargetVisibleChanged] = useTargetState();\n\n // ========================== Options ===========================\n const mergedOptions = React.useMemo(() => {\n if (!options || !postTriggerProps) {\n return options;\n }\n return postTriggerProps(options);\n }, [options, postTriggerProps]);\n\n // =========================== Popup ============================\n const [popupEle, setPopupEle] = React.useState(null);\n const [popupSize, setPopupSize] = React.useState(null);\n\n // Used for forwardRef popup. Not use internal\n const externalPopupRef = React.useRef(null);\n const setPopupRef = useEvent(node => {\n externalPopupRef.current = node;\n if (isDOM(node) && popupEle !== node) {\n setPopupEle(node);\n }\n });\n\n // ========================== Register ==========================\n // Store the isOpen function from the latest show call\n const isOpenRef = React.useRef(null);\n const delayInvoke = useDelay();\n const show = useEvent((showOptions, isOpen) => {\n // Store the isOpen function for later use in hide\n isOpenRef.current = isOpen;\n delayInvoke(() => {\n trigger(showOptions);\n }, showOptions.delay);\n });\n const hide = delay => {\n delayInvoke(() => {\n // Check if we should still hide by calling the isOpen function\n // If isOpen returns true, it means another trigger wants to keep it open\n if (isOpenRef.current?.()) {\n return; // Don't hide if something else wants it open\n }\n trigger(false);\n // Don't clear target, currentNode, options immediately, wait until animation completes\n }, delay);\n };\n\n // Callback after animation completes\n const onVisibleChanged = useEvent(visible => {\n // Call useTargetState callback to handle animation state\n onTargetVisibleChanged(visible);\n });\n\n // =========================== Align ============================\n const [ready, offsetX, offsetY, offsetR, offsetB, arrowX, arrowY,\n\n // scaleX - not used in UniqueProvider\n ,,\n // scaleY - not used in UniqueProvider\n alignInfo, onAlign] = useAlign(open, popupEle, mergedOptions?.target, mergedOptions?.popupPlacement, mergedOptions?.builtinPlacements || {}, mergedOptions?.popupAlign, undefined,\n // onPopupAlign\n false // isMobile\n );\n const alignedClassName = React.useMemo(() => {\n if (!mergedOptions) {\n return '';\n }\n const baseClassName = getAlignPopupClassName(mergedOptions.builtinPlacements || {}, mergedOptions.prefixCls || '', alignInfo, false // alignPoint is false for UniqueProvider\n );\n return clsx(baseClassName, mergedOptions.getPopupClassNameFromAlign?.(alignInfo));\n }, [alignInfo, mergedOptions?.getPopupClassNameFromAlign, mergedOptions?.builtinPlacements, mergedOptions?.prefixCls]);\n const contextValue = React.useMemo(() => ({\n show,\n hide\n }), []);\n\n // =========================== Align ============================\n React.useEffect(() => {\n onAlign();\n }, [mergedOptions?.target]);\n\n // =========================== Motion ===========================\n const onPrepare = useEvent(() => {\n onAlign();\n return Promise.resolve();\n });\n\n // ======================== Trigger Context =====================\n const subPopupElements = React.useRef({});\n const parentContext = React.useContext(TriggerContext);\n const triggerContextValue = React.useMemo(() => ({\n registerSubPopup: (id, subPopupEle) => {\n subPopupElements.current[id] = subPopupEle;\n parentContext?.registerSubPopup(id, subPopupEle);\n }\n }), [parentContext]);\n\n // =========================== Render ===========================\n const prefixCls = mergedOptions?.prefixCls;\n return /*#__PURE__*/React.createElement(UniqueContext.Provider, {\n value: contextValue\n }, children, mergedOptions && /*#__PURE__*/React.createElement(TriggerContext.Provider, {\n value: triggerContextValue\n }, /*#__PURE__*/React.createElement(Popup, {\n ref: setPopupRef,\n portal: Portal,\n prefixCls: prefixCls,\n popup: mergedOptions.popup,\n className: clsx(mergedOptions.popupClassName, alignedClassName, `${prefixCls}-unique-controlled`),\n style: mergedOptions.popupStyle,\n target: mergedOptions.target,\n open: open,\n keepDom: true,\n fresh: true,\n autoDestroy: false,\n onVisibleChanged: onVisibleChanged,\n ready: ready,\n offsetX: offsetX,\n offsetY: offsetY,\n offsetR: offsetR,\n offsetB: offsetB,\n onAlign: onAlign,\n onPrepare: onPrepare,\n onResize: size => setPopupSize({\n width: size.offsetWidth,\n height: size.offsetHeight\n }),\n arrowPos: {\n x: arrowX,\n y: arrowY\n },\n align: alignInfo,\n zIndex: mergedOptions.zIndex,\n mask: mergedOptions.mask,\n arrow: mergedOptions.arrow,\n motion: mergedOptions.popupMotion,\n maskMotion: mergedOptions.maskMotion,\n getPopupContainer: mergedOptions.getPopupContainer\n }, /*#__PURE__*/React.createElement(UniqueContainer, {\n prefixCls: prefixCls,\n isMobile: false,\n ready: ready,\n open: open,\n align: alignInfo,\n offsetR: offsetR,\n offsetB: offsetB,\n offsetX: offsetX,\n offsetY: offsetY,\n arrowPos: {\n x: arrowX,\n y: arrowY\n },\n popupSize: popupSize,\n motion: mergedOptions.popupMotion,\n uniqueContainerClassName: clsx(mergedOptions.uniqueContainerClassName, alignedClassName),\n uniqueContainerStyle: mergedOptions.uniqueContainerStyle\n }))));\n};\nexport default UniqueProvider;"],"names":["UniqueProvider","children","postTriggerProps","trigger","open","options","onTargetVisibleChanged","useTargetState","mergedOptions","React","popupEle","setPopupEle","popupSize","setPopupSize","externalPopupRef","setPopupRef","useEvent","node","isDOM","isOpenRef","delayInvoke","useDelay","show","showOptions","isOpen","hide","delay","onVisibleChanged","visible","ready","offsetX","offsetY","offsetR","offsetB","arrowX","arrowY","alignInfo","onAlign","useAlign","alignedClassName","baseClassName","getAlignPopupClassName","clsx","contextValue","onPrepare","subPopupElements","parentContext","TriggerContext","triggerContextValue","id","subPopupEle","prefixCls","UniqueContext","Popup","Portal","size","UniqueContainer"],"mappings":"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","x_google_ignoreList":[0]}
1
+ {"version":3,"file":"index.js","sources":["../../../../../../node_modules/@rc-component/trigger/es/UniqueProvider/index.js"],"sourcesContent":["import * as React from 'react';\nimport Portal from '@rc-component/portal';\nimport TriggerContext, { UniqueContext } from \"../context\";\nimport useDelay from \"../hooks/useDelay\";\nimport useAlign from \"../hooks/useAlign\";\nimport Popup from \"../Popup\";\nimport { useEvent } from '@rc-component/util';\nimport useTargetState from \"./useTargetState\";\nimport { isDOM } from \"@rc-component/util/es/Dom/findDOMNode\";\nimport UniqueContainer from \"./UniqueContainer\";\nimport { clsx } from 'clsx';\nimport { getAlignPopupClassName } from \"../util\";\nconst UniqueProvider = ({\n children,\n postTriggerProps\n}) => {\n const [trigger, open, options, onTargetVisibleChanged] = useTargetState();\n\n // ========================== Options ===========================\n const mergedOptions = React.useMemo(() => {\n if (!options || !postTriggerProps) {\n return options;\n }\n return postTriggerProps(options);\n }, [options, postTriggerProps]);\n\n // =========================== Popup ============================\n const [popupEle, setPopupEle] = React.useState(null);\n const [popupSize, setPopupSize] = React.useState(null);\n\n // Used for forwardRef popup. Not use internal\n const externalPopupRef = React.useRef(null);\n const setPopupRef = useEvent(node => {\n externalPopupRef.current = node;\n if (isDOM(node) && popupEle !== node) {\n setPopupEle(node);\n }\n });\n\n // ========================== Register ==========================\n // Store the isOpen function from the latest show call\n const isOpenRef = React.useRef(null);\n const delayInvoke = useDelay();\n const show = useEvent((showOptions, isOpen) => {\n // Store the isOpen function for later use in hide\n isOpenRef.current = isOpen;\n delayInvoke(() => {\n trigger(showOptions);\n }, showOptions.delay);\n });\n const hide = delay => {\n delayInvoke(() => {\n // Check if we should still hide by calling the isOpen function\n // If isOpen returns true, it means another trigger wants to keep it open\n if (isOpenRef.current?.()) {\n return; // Don't hide if something else wants it open\n }\n trigger(false);\n // Don't clear target, currentNode, options immediately, wait until animation completes\n }, delay);\n };\n\n // Callback after animation completes\n const onVisibleChanged = useEvent(visible => {\n // Call useTargetState callback to handle animation state\n onTargetVisibleChanged(visible);\n });\n\n // =========================== Align ============================\n const [ready, offsetX, offsetY, offsetR, offsetB, arrowX, arrowY,\n\n // scaleX - not used in UniqueProvider\n ,,\n // scaleY - not used in UniqueProvider\n alignInfo, onAlign] = useAlign(open, popupEle, mergedOptions?.target, mergedOptions?.popupPlacement, mergedOptions?.builtinPlacements || {}, mergedOptions?.popupAlign, undefined,\n // onPopupAlign\n false // isMobile\n );\n const alignedClassName = React.useMemo(() => {\n if (!mergedOptions) {\n return '';\n }\n const baseClassName = getAlignPopupClassName(mergedOptions.builtinPlacements || {}, mergedOptions.prefixCls || '', alignInfo, false // alignPoint is false for UniqueProvider\n );\n return clsx(baseClassName, mergedOptions.getPopupClassNameFromAlign?.(alignInfo));\n }, [alignInfo, mergedOptions?.getPopupClassNameFromAlign, mergedOptions?.builtinPlacements, mergedOptions?.prefixCls]);\n const contextValue = React.useMemo(() => ({\n show,\n hide\n }), []);\n\n // =========================== Align ============================\n React.useEffect(() => {\n onAlign();\n }, [mergedOptions?.target]);\n\n // =========================== Motion ===========================\n const onPrepare = useEvent(() => {\n onAlign();\n return Promise.resolve();\n });\n\n // ======================== Trigger Context =====================\n const subPopupElements = React.useRef({});\n const parentContext = React.useContext(TriggerContext);\n const triggerContextValue = React.useMemo(() => ({\n registerSubPopup: (id, subPopupEle) => {\n subPopupElements.current[id] = subPopupEle;\n parentContext?.registerSubPopup(id, subPopupEle);\n }\n }), [parentContext]);\n\n // =========================== Render ===========================\n const prefixCls = mergedOptions?.prefixCls;\n return /*#__PURE__*/React.createElement(UniqueContext.Provider, {\n value: contextValue\n }, children, mergedOptions && /*#__PURE__*/React.createElement(TriggerContext.Provider, {\n value: triggerContextValue\n }, /*#__PURE__*/React.createElement(Popup, {\n ref: setPopupRef,\n portal: Portal,\n onEsc: mergedOptions.onEsc,\n prefixCls: prefixCls,\n popup: mergedOptions.popup,\n className: clsx(mergedOptions.popupClassName, alignedClassName, `${prefixCls}-unique-controlled`),\n style: mergedOptions.popupStyle,\n target: mergedOptions.target,\n open: open,\n keepDom: true,\n fresh: true,\n autoDestroy: false,\n onVisibleChanged: onVisibleChanged,\n ready: ready,\n offsetX: offsetX,\n offsetY: offsetY,\n offsetR: offsetR,\n offsetB: offsetB,\n onAlign: onAlign,\n onPrepare: onPrepare,\n onResize: size => setPopupSize({\n width: size.offsetWidth,\n height: size.offsetHeight\n }),\n arrowPos: {\n x: arrowX,\n y: arrowY\n },\n align: alignInfo,\n zIndex: mergedOptions.zIndex,\n mask: mergedOptions.mask,\n arrow: mergedOptions.arrow,\n motion: mergedOptions.popupMotion,\n maskMotion: mergedOptions.maskMotion,\n getPopupContainer: mergedOptions.getPopupContainer\n }, /*#__PURE__*/React.createElement(UniqueContainer, {\n prefixCls: prefixCls,\n isMobile: false,\n ready: ready,\n open: open,\n align: alignInfo,\n offsetR: offsetR,\n offsetB: offsetB,\n offsetX: offsetX,\n offsetY: offsetY,\n arrowPos: {\n x: arrowX,\n y: arrowY\n },\n popupSize: popupSize,\n motion: mergedOptions.popupMotion,\n uniqueContainerClassName: clsx(mergedOptions.uniqueContainerClassName, alignedClassName),\n uniqueContainerStyle: mergedOptions.uniqueContainerStyle\n }))));\n};\nexport default UniqueProvider;"],"names":["UniqueProvider","children","postTriggerProps","trigger","open","options","onTargetVisibleChanged","useTargetState","mergedOptions","React","popupEle","setPopupEle","popupSize","setPopupSize","externalPopupRef","setPopupRef","useEvent","node","isDOM","isOpenRef","delayInvoke","useDelay","show","showOptions","isOpen","hide","delay","onVisibleChanged","visible","ready","offsetX","offsetY","offsetR","offsetB","arrowX","arrowY","alignInfo","onAlign","useAlign","alignedClassName","baseClassName","getAlignPopupClassName","clsx","contextValue","onPrepare","subPopupElements","parentContext","TriggerContext","triggerContextValue","id","subPopupEle","prefixCls","UniqueContext","Popup","Portal","size","UniqueContainer"],"mappings":";;;;;;;;;;;;AAYK,MAACA,KAAiB,CAAC;AAAA,EACtB,UAAAC;AAAA,EACA,kBAAAC;AACF,MAAM;AACJ,QAAM,CAACC,GAASC,GAAMC,GAASC,CAAsB,IAAIC,EAAc,GAGjEC,IAAgBC,EAAM,QAAQ,MAC9B,CAACJ,KAAW,CAACH,IACRG,IAEFH,EAAiBG,CAAO,GAC9B,CAACA,GAASH,CAAgB,CAAC,GAGxB,CAACQ,GAAUC,CAAW,IAAIF,EAAM,SAAS,IAAI,GAC7C,CAACG,GAAWC,CAAY,IAAIJ,EAAM,SAAS,IAAI,GAG/CK,IAAmBL,EAAM,OAAO,IAAI,GACpCM,IAAcC,EAAS,CAAAC,MAAQ;AACnC,IAAAH,EAAiB,UAAUG,GACvBC,EAAMD,CAAI,KAAKP,MAAaO,KAC9BN,EAAYM,CAAI;AAAA,EAEpB,CAAC,GAIKE,IAAYV,EAAM,OAAO,IAAI,GAC7BW,IAAcC,EAAQ,GACtBC,IAAON,EAAS,CAACO,GAAaC,MAAW;AAE7C,IAAAL,EAAU,UAAUK,GACpBJ,EAAY,MAAM;AAChB,MAAAjB,EAAQoB,CAAW;AAAA,IACrB,GAAGA,EAAY,KAAK;AAAA,EACtB,CAAC,GACKE,IAAO,CAAAC,MAAS;AACpB,IAAAN,EAAY,MAAM;AAGhB,MAAID,EAAU,eAGdhB,EAAQ,EAAK;AAAA,IAEf,GAAGuB,CAAK;AAAA,EACV,GAGMC,IAAmBX,EAAS,CAAAY,MAAW;AAE3C,IAAAtB,EAAuBsB,CAAO;AAAA,EAChC,CAAC,GAGK;AAAA,IAACC;AAAA,IAAOC;AAAA,IAASC;AAAA,IAASC;AAAA,IAASC;AAAA,IAASC;AAAA,IAAQC;AAAA;AAAA,IAG5D;AAAA,IAAA;AAAA;AAAA,IAEEC;AAAA,IAAWC;AAAA,EAAO,IAAIC;AAAA,IAASlC;AAAA,IAAMM;AAAA,IAAUF,GAAe;AAAA,IAAQA,GAAe;AAAA,IAAgBA,GAAe,qBAAqB,CAAA;AAAA,IAAIA,GAAe;AAAA,IAAY;AAAA;AAAA,IAExK;AAAA;AAAA,EACF,GACQ+B,IAAmB9B,EAAM,QAAQ,MAAM;AAC3C,QAAI,CAACD;AACH,aAAO;AAET,UAAMgC,IAAgBC;AAAA,MAAuBjC,EAAc,qBAAqB;MAAIA,EAAc,aAAa;AAAA,MAAI4B;AAAA,MAAW;AAAA;AAAA,IAClI;AACI,WAAOM,EAAKF,GAAehC,EAAc,6BAA6B4B,CAAS,CAAC;AAAA,EAClF,GAAG,CAACA,GAAW5B,GAAe,4BAA4BA,GAAe,mBAAmBA,GAAe,SAAS,CAAC,GAC/GmC,IAAelC,EAAM,QAAQ,OAAO;AAAA,IACxC,MAAAa;AAAA,IACA,MAAAG;AAAA,EACJ,IAAM,CAAA,CAAE;AAGN,EAAAhB,EAAM,UAAU,MAAM;AACpB,IAAA4B,EAAO;AAAA,EACT,GAAG,CAAC7B,GAAe,MAAM,CAAC;AAG1B,QAAMoC,IAAY5B,EAAS,OACzBqB,EAAO,GACA,QAAQ,QAAO,EACvB,GAGKQ,IAAmBpC,EAAM,OAAO,EAAE,GAClCqC,IAAgBrC,EAAM,WAAWsC,CAAc,GAC/CC,IAAsBvC,EAAM,QAAQ,OAAO;AAAA,IAC/C,kBAAkB,CAACwC,GAAIC,MAAgB;AACrC,MAAAL,EAAiB,QAAQI,CAAE,IAAIC,GAC/BJ,GAAe,iBAAiBG,GAAIC,CAAW;AAAA,IACjD;AAAA,EACJ,IAAM,CAACJ,CAAa,CAAC,GAGbK,IAAY3C,GAAe;AACjC,SAAoB,gBAAAC,EAAM,cAAc2C,EAAc,UAAU;AAAA,IAC9D,OAAOT;AAAA,EACX,GAAK1C,GAAUO,KAA8B,gBAAAC,EAAM,cAAcsC,EAAe,UAAU;AAAA,IACtF,OAAOC;AAAA,EACX,GAAkB,gBAAAvC,EAAM,cAAc4C,GAAO;AAAA,IACzC,KAAKtC;AAAA,IACL,QAAQuC;AAAA,IACR,OAAO9C,EAAc;AAAA,IACrB,WAAW2C;AAAA,IACX,OAAO3C,EAAc;AAAA,IACrB,WAAWkC,EAAKlC,EAAc,gBAAgB+B,GAAkB,GAAGY,CAAS,oBAAoB;AAAA,IAChG,OAAO3C,EAAc;AAAA,IACrB,QAAQA,EAAc;AAAA,IACtB,MAAMJ;AAAA,IACN,SAAS;AAAA,IACT,OAAO;AAAA,IACP,aAAa;AAAA,IACb,kBAAkBuB;AAAA,IAClB,OAAOE;AAAA,IACP,SAASC;AAAA,IACT,SAASC;AAAA,IACT,SAASC;AAAA,IACT,SAASC;AAAA,IACT,SAASI;AAAA,IACT,WAAWO;AAAA,IACX,UAAU,CAAAW,MAAQ1C,EAAa;AAAA,MAC7B,OAAO0C,EAAK;AAAA,MACZ,QAAQA,EAAK;AAAA,IACnB,CAAK;AAAA,IACD,UAAU;AAAA,MACR,GAAGrB;AAAA,MACH,GAAGC;AAAA,IACT;AAAA,IACI,OAAOC;AAAA,IACP,QAAQ5B,EAAc;AAAA,IACtB,MAAMA,EAAc;AAAA,IACpB,OAAOA,EAAc;AAAA,IACrB,QAAQA,EAAc;AAAA,IACtB,YAAYA,EAAc;AAAA,IAC1B,mBAAmBA,EAAc;AAAA,EACrC,GAAkB,gBAAAC,EAAM,cAAc+C,GAAiB;AAAA,IACnD,WAAWL;AAAA,IACX,UAAU;AAAA,IACV,OAAOtB;AAAA,IACP,MAAMzB;AAAA,IACN,OAAOgC;AAAA,IACP,SAASJ;AAAA,IACT,SAASC;AAAA,IACT,SAASH;AAAA,IACT,SAASC;AAAA,IACT,UAAU;AAAA,MACR,GAAGG;AAAA,MACH,GAAGC;AAAA,IACT;AAAA,IACI,WAAWvB;AAAA,IACX,QAAQJ,EAAc;AAAA,IACtB,0BAA0BkC,EAAKlC,EAAc,0BAA0B+B,CAAgB;AAAA,IACvF,sBAAsB/B,EAAc;AAAA,EACxC,CAAG,CAAC,CAAC,CAAC;AACN;","x_google_ignoreList":[0]}
@@ -47,14 +47,14 @@ function je(o, c, l, p, A, X, Tt, K) {
47
47
  scaleX: 1,
48
48
  scaleY: 1,
49
49
  align: A[p] || {}
50
- }), U = k.useRef(0), Z = k.useMemo(() => !c || K ? [] : Be(c), [c]), a = k.useRef({});
51
- o || (a.current = {});
50
+ }), U = k.useRef(0), Z = k.useMemo(() => !c || K ? [] : Be(c), [c]), u = k.useRef({});
51
+ o || (u.current = {});
52
52
  const Ft = ve(() => {
53
53
  if (c && l && o && !K) {
54
54
  let y = function(t, h, g = ft) {
55
- const Yt = s.x + t, vt = s.y + h, de = Yt + v, be = vt + Y, Re = Math.max(Yt, g.left), we = Math.max(vt, g.top), Ae = Math.min(de, g.right), Pe = Math.min(be, g.bottom);
55
+ const Yt = s.x + t, vt = s.y + h, be = Yt + v, de = vt + Y, Re = Math.max(Yt, g.left), we = Math.max(vt, g.top), Ae = Math.min(be, g.right), Pe = Math.min(de, g.bottom);
56
56
  return Math.max(0, (Ae - Re) * (Pe - we));
57
- }, dt = function() {
57
+ }, bt = function() {
58
58
  F = s.y + f, H = F + Y, S = s.x + r, D = S + v;
59
59
  };
60
60
  const e = c, et = e.ownerDocument, ot = Me(e), {
@@ -120,64 +120,64 @@ function je(o, c, l, p, A, X, Tt, K) {
120
120
  offset: Qt,
121
121
  targetOffset: Zt
122
122
  } = V;
123
- let [x, d] = Ct(s, Qt);
123
+ let [x, b] = Ct(s, Qt);
124
124
  const [te, ee] = Ct(i, Zt);
125
125
  i.x -= te, i.y -= ee;
126
- const [oe, ne] = V.points || [], $ = Lt(ne), b = Lt(oe), ct = O(i, $), pt = O(s, b), _ = {
126
+ const [oe, ne] = V.points || [], $ = Lt(ne), d = Lt(oe), ct = O(i, $), pt = O(s, d), _ = {
127
127
  ...V
128
128
  };
129
- let u = [b, $], r = ct.x - pt.x + x, f = ct.y - pt.y + d;
130
- const R = y(r, f), E = y(r, f, n), ut = O(i, ["t", "l"]), at = O(s, ["t", "l"]), ht = O(i, ["b", "r"]), gt = O(s, ["b", "r"]), se = V.overflow || {}, {
129
+ let a = [d, $], r = ct.x - pt.x + x, f = ct.y - pt.y + b;
130
+ const R = y(r, f), E = y(r, f, n), at = O(i, ["t", "l"]), ut = O(s, ["t", "l"]), ht = O(i, ["b", "r"]), gt = O(s, ["b", "r"]), se = V.overflow || {}, {
131
131
  adjustX: ie,
132
132
  adjustY: re,
133
133
  shiftX: mt,
134
134
  shiftY: yt
135
135
  } = se, xt = (t) => typeof t == "boolean" ? t : t >= 0;
136
136
  let F, H, S, D;
137
- dt();
138
- const bt = xt(re), Rt = b[0] === $[0];
139
- if (bt && b[0] === "t" && (H > W.bottom || a.current.bt)) {
137
+ bt();
138
+ const dt = xt(re), Rt = d[0] === $[0];
139
+ if (dt && d[0] === "t" && (H > W.bottom || u.current.bt)) {
140
140
  let t = f;
141
- Rt ? t -= Y - C : t = ut.y - gt.y - d;
141
+ Rt ? t -= Y - C : t = at.y - gt.y - b;
142
142
  const h = y(r, t), g = y(r, t, n);
143
143
  // Of course use larger one
144
144
  h > R || h === R && (!T || // Choose recommend one
145
- g >= E) ? (a.current.bt = !0, f = t, d = -d, u = [w(u[0], 0), w(u[1], 0)]) : a.current.bt = !1;
145
+ g >= E) ? (u.current.bt = !0, f = t, b = -b, a = [w(a[0], 0), w(a[1], 0)]) : u.current.bt = !1;
146
146
  }
147
- if (bt && b[0] === "b" && (F < W.top || a.current.tb)) {
147
+ if (dt && d[0] === "b" && (F < W.top || u.current.tb)) {
148
148
  let t = f;
149
- Rt ? t += Y - C : t = ht.y - at.y - d;
149
+ Rt ? t += Y - C : t = ht.y - ut.y - b;
150
150
  const h = y(r, t), g = y(r, t, n);
151
151
  // Of course use larger one
152
152
  h > R || h === R && (!T || // Choose recommend one
153
- g >= E) ? (a.current.tb = !0, f = t, d = -d, u = [w(u[0], 0), w(u[1], 0)]) : a.current.tb = !1;
153
+ g >= E) ? (u.current.tb = !0, f = t, b = -b, a = [w(a[0], 0), w(a[1], 0)]) : u.current.tb = !1;
154
154
  }
155
- const wt = xt(ie), At = b[1] === $[1];
156
- if (wt && b[1] === "l" && (D > W.right || a.current.rl)) {
155
+ const wt = xt(ie), At = d[1] === $[1];
156
+ if (wt && d[1] === "l" && (D > W.right || u.current.rl)) {
157
157
  let t = r;
158
- At ? t -= v - L : t = ut.x - gt.x - x;
158
+ At ? t -= v - L : t = at.x - gt.x - x;
159
159
  const h = y(t, f), g = y(t, f, n);
160
160
  // Of course use larger one
161
161
  h > R || h === R && (!T || // Choose recommend one
162
- g >= E) ? (a.current.rl = !0, r = t, x = -x, u = [w(u[0], 1), w(u[1], 1)]) : a.current.rl = !1;
162
+ g >= E) ? (u.current.rl = !0, r = t, x = -x, a = [w(a[0], 1), w(a[1], 1)]) : u.current.rl = !1;
163
163
  }
164
- if (wt && b[1] === "r" && (S < W.left || a.current.lr)) {
164
+ if (wt && d[1] === "r" && (S < W.left || u.current.lr)) {
165
165
  let t = r;
166
- At ? t += v - L : t = ht.x - at.x - x;
166
+ At ? t += v - L : t = ht.x - ut.x - x;
167
167
  const h = y(t, f), g = y(t, f, n);
168
168
  // Of course use larger one
169
169
  h > R || h === R && (!T || // Choose recommend one
170
- g >= E) ? (a.current.lr = !0, r = t, x = -x, u = [w(u[0], 1), w(u[1], 1)]) : a.current.lr = !1;
170
+ g >= E) ? (u.current.lr = !0, r = t, x = -x, a = [w(a[0], 1), w(a[1], 1)]) : u.current.lr = !1;
171
171
  }
172
- _.points = [It(u[0]), It(u[1])], dt();
172
+ _.points = [It(a[0]), It(a[1])], bt();
173
173
  const j = mt === !0 ? 0 : mt;
174
174
  typeof j == "number" && (S < n.left && (r -= S - n.left - x, i.x + L < n.left + j && (r += i.x - n.left + L - j)), D > n.right && (r -= D - n.right - x, i.x > n.right - j && (r += i.x - n.right + j)));
175
175
  const N = yt === !0 ? 0 : yt;
176
- typeof N == "number" && (F < n.top && (f -= F - n.top - d, i.y + C < n.top + N && (f += i.y - n.top + C - N)), H > n.bottom && (f -= H - n.bottom - d, i.y > n.bottom - N && (f += i.y - n.bottom + N)));
177
- const q = s.x + r, fe = q + v, z = s.y + f, le = z + Y, Pt = i.x, ce = Pt + L, Xt = i.y, pe = Xt + C, ue = Math.max(q, Pt), ae = Math.min(fe, ce), he = (ue + ae) / 2 - q, ge = Math.max(z, Xt), me = Math.min(le, pe), ye = (ge + me) / 2 - z;
176
+ typeof N == "number" && (F < n.top && (f -= F - n.top - b, i.y + C < n.top + N && (f += i.y - n.top + C - N)), H > n.bottom && (f -= H - n.bottom - b, i.y > n.bottom - N && (f += i.y - n.bottom + N)));
177
+ const q = s.x + r, fe = q + v, z = s.y + f, le = z + Y, Pt = i.x, ce = Pt + L, Xt = i.y, pe = Xt + C, ae = Math.max(q, Pt), ue = Math.min(fe, ce), he = (ae + ue) / 2 - q, ge = Math.max(z, Xt), me = Math.min(le, pe), ye = (ge + me) / 2 - z;
178
178
  Tt?.(c, _);
179
179
  let G = lt.right - s.x - (r + s.width), J = lt.bottom - s.y - (f + s.height);
180
- B === 1 && (r = Math.round(r), G = Math.round(G)), M === 1 && (f = Math.round(f), J = Math.round(J));
180
+ B === 1 && (r = Math.floor(r), G = Math.floor(G)), M === 1 && (f = Math.floor(f), J = Math.floor(J));
181
181
  const xe = {
182
182
  ready: !0,
183
183
  offsetX: r / B,
@@ -1 +1 @@
1
- {"version":3,"file":"useAlign.js","sources":["../../../../../../node_modules/@rc-component/trigger/es/hooks/useAlign.js"],"sourcesContent":["import { isDOM } from \"@rc-component/util/es/Dom/findDOMNode\";\nimport isVisible from \"@rc-component/util/es/Dom/isVisible\";\nimport useEvent from \"@rc-component/util/es/hooks/useEvent\";\nimport useLayoutEffect from \"@rc-component/util/es/hooks/useLayoutEffect\";\nimport * as React from 'react';\nimport { collectScroller, getVisibleArea, getWin, toNum } from \"../util\";\nfunction getUnitOffset(size, offset = 0) {\n const offsetStr = `${offset}`;\n const cells = offsetStr.match(/^(.*)\\%$/);\n if (cells) {\n return size * (parseFloat(cells[1]) / 100);\n }\n return parseFloat(offsetStr);\n}\nfunction getNumberOffset(rect, offset) {\n const [offsetX, offsetY] = offset || [];\n return [getUnitOffset(rect.width, offsetX), getUnitOffset(rect.height, offsetY)];\n}\nfunction splitPoints(points = '') {\n return [points[0], points[1]];\n}\nfunction getAlignPoint(rect, points) {\n const topBottom = points[0];\n const leftRight = points[1];\n let x;\n let y;\n\n // Top & Bottom\n if (topBottom === 't') {\n y = rect.y;\n } else if (topBottom === 'b') {\n y = rect.y + rect.height;\n } else {\n y = rect.y + rect.height / 2;\n }\n\n // Left & Right\n if (leftRight === 'l') {\n x = rect.x;\n } else if (leftRight === 'r') {\n x = rect.x + rect.width;\n } else {\n x = rect.x + rect.width / 2;\n }\n return {\n x,\n y\n };\n}\nfunction reversePoints(points, index) {\n const reverseMap = {\n t: 'b',\n b: 't',\n l: 'r',\n r: 'l'\n };\n const clone = [...points];\n clone[index] = reverseMap[points[index]] || 'c';\n return clone;\n}\nfunction flatPoints(points) {\n return points.join('');\n}\nexport default function useAlign(open, popupEle, target, placement, builtinPlacements, popupAlign, onPopupAlign, mobile) {\n const [offsetInfo, setOffsetInfo] = React.useState({\n ready: false,\n offsetX: 0,\n offsetY: 0,\n offsetR: 0,\n offsetB: 0,\n arrowX: 0,\n arrowY: 0,\n scaleX: 1,\n scaleY: 1,\n align: builtinPlacements[placement] || {}\n });\n const alignCountRef = React.useRef(0);\n const scrollerList = React.useMemo(() => {\n if (!popupEle || mobile) {\n return [];\n }\n return collectScroller(popupEle);\n }, [popupEle]);\n\n // ========================= Flip ==========================\n // We will memo flip info.\n // If size change to make flip, it will memo the flip info and use it in next align.\n const prevFlipRef = React.useRef({});\n const resetFlipCache = () => {\n prevFlipRef.current = {};\n };\n if (!open) {\n resetFlipCache();\n }\n\n // ========================= Align =========================\n const onAlign = useEvent(() => {\n if (popupEle && target && open && !mobile) {\n const popupElement = popupEle;\n const doc = popupElement.ownerDocument;\n const win = getWin(popupElement);\n const {\n position: popupPosition\n } = win.getComputedStyle(popupElement);\n const originLeft = popupElement.style.left;\n const originTop = popupElement.style.top;\n const originRight = popupElement.style.right;\n const originBottom = popupElement.style.bottom;\n const originOverflow = popupElement.style.overflow;\n\n // Placement\n const placementInfo = {\n ...builtinPlacements[placement],\n ...popupAlign\n };\n\n // placeholder element\n const placeholderElement = doc.createElement('div');\n popupElement.parentElement?.appendChild(placeholderElement);\n placeholderElement.style.left = `${popupElement.offsetLeft}px`;\n placeholderElement.style.top = `${popupElement.offsetTop}px`;\n placeholderElement.style.position = popupPosition;\n placeholderElement.style.height = `${popupElement.offsetHeight}px`;\n placeholderElement.style.width = `${popupElement.offsetWidth}px`;\n\n // Reset first\n popupElement.style.left = '0';\n popupElement.style.top = '0';\n popupElement.style.right = 'auto';\n popupElement.style.bottom = 'auto';\n popupElement.style.overflow = 'hidden';\n\n // Calculate align style, we should consider `transform` case\n let targetRect;\n if (Array.isArray(target)) {\n targetRect = {\n x: target[0],\n y: target[1],\n width: 0,\n height: 0\n };\n } else {\n const rect = target.getBoundingClientRect();\n rect.x = rect.x ?? rect.left;\n rect.y = rect.y ?? rect.top;\n targetRect = {\n x: rect.x,\n y: rect.y,\n width: rect.width,\n height: rect.height\n };\n }\n const popupRect = popupElement.getBoundingClientRect();\n const {\n height,\n width\n } = win.getComputedStyle(popupElement);\n popupRect.x = popupRect.x ?? popupRect.left;\n popupRect.y = popupRect.y ?? popupRect.top;\n const {\n clientWidth,\n clientHeight,\n scrollWidth,\n scrollHeight,\n scrollTop,\n scrollLeft\n } = doc.documentElement;\n const popupHeight = popupRect.height;\n const popupWidth = popupRect.width;\n const targetHeight = targetRect.height;\n const targetWidth = targetRect.width;\n\n // Get bounding of visible area\n const visibleRegion = {\n left: 0,\n top: 0,\n right: clientWidth,\n bottom: clientHeight\n };\n const scrollRegion = {\n left: -scrollLeft,\n top: -scrollTop,\n right: scrollWidth - scrollLeft,\n bottom: scrollHeight - scrollTop\n };\n let {\n htmlRegion\n } = placementInfo;\n const VISIBLE = 'visible';\n const VISIBLE_FIRST = 'visibleFirst';\n if (htmlRegion !== 'scroll' && htmlRegion !== VISIBLE_FIRST) {\n htmlRegion = VISIBLE;\n }\n const isVisibleFirst = htmlRegion === VISIBLE_FIRST;\n const scrollRegionArea = getVisibleArea(scrollRegion, scrollerList);\n const visibleRegionArea = getVisibleArea(visibleRegion, scrollerList);\n const visibleArea = htmlRegion === VISIBLE ? visibleRegionArea : scrollRegionArea;\n\n // When set to `visibleFirst`,\n // the check `adjust` logic will use `visibleRegion` for check first.\n const adjustCheckVisibleArea = isVisibleFirst ? visibleRegionArea : visibleArea;\n\n // Record right & bottom align data\n popupElement.style.left = 'auto';\n popupElement.style.top = 'auto';\n popupElement.style.right = '0';\n popupElement.style.bottom = '0';\n const popupMirrorRect = popupElement.getBoundingClientRect();\n\n // Reset back\n popupElement.style.left = originLeft;\n popupElement.style.top = originTop;\n popupElement.style.right = originRight;\n popupElement.style.bottom = originBottom;\n popupElement.style.overflow = originOverflow;\n popupElement.parentElement?.removeChild(placeholderElement);\n\n // Calculate scale\n const scaleX = toNum(Math.round(popupWidth / parseFloat(width) * 1000) / 1000);\n const scaleY = toNum(Math.round(popupHeight / parseFloat(height) * 1000) / 1000);\n\n // No need to align since it's not visible in view\n if (scaleX === 0 || scaleY === 0 || isDOM(target) && !isVisible(target)) {\n return;\n }\n\n // Offset\n const {\n offset,\n targetOffset\n } = placementInfo;\n let [popupOffsetX, popupOffsetY] = getNumberOffset(popupRect, offset);\n const [targetOffsetX, targetOffsetY] = getNumberOffset(targetRect, targetOffset);\n targetRect.x -= targetOffsetX;\n targetRect.y -= targetOffsetY;\n\n // Points\n const [popupPoint, targetPoint] = placementInfo.points || [];\n const targetPoints = splitPoints(targetPoint);\n const popupPoints = splitPoints(popupPoint);\n const targetAlignPoint = getAlignPoint(targetRect, targetPoints);\n const popupAlignPoint = getAlignPoint(popupRect, popupPoints);\n\n // Real align info may not same as origin one\n const nextAlignInfo = {\n ...placementInfo\n };\n let nextPoints = [popupPoints, targetPoints];\n\n // Next Offset\n let nextOffsetX = targetAlignPoint.x - popupAlignPoint.x + popupOffsetX;\n let nextOffsetY = targetAlignPoint.y - popupAlignPoint.y + popupOffsetY;\n\n // ============== Intersection ===============\n // Get area by position. Used for check if flip area is better\n function getIntersectionVisibleArea(offsetX, offsetY, area = visibleArea) {\n const l = popupRect.x + offsetX;\n const t = popupRect.y + offsetY;\n const r = l + popupWidth;\n const b = t + popupHeight;\n const visibleL = Math.max(l, area.left);\n const visibleT = Math.max(t, area.top);\n const visibleR = Math.min(r, area.right);\n const visibleB = Math.min(b, area.bottom);\n return Math.max(0, (visibleR - visibleL) * (visibleB - visibleT));\n }\n const originIntersectionVisibleArea = getIntersectionVisibleArea(nextOffsetX, nextOffsetY);\n\n // As `visibleFirst`, we prepare this for check\n const originIntersectionRecommendArea = getIntersectionVisibleArea(nextOffsetX, nextOffsetY, visibleRegionArea);\n\n // ========================== Overflow ===========================\n const targetAlignPointTL = getAlignPoint(targetRect, ['t', 'l']);\n const popupAlignPointTL = getAlignPoint(popupRect, ['t', 'l']);\n const targetAlignPointBR = getAlignPoint(targetRect, ['b', 'r']);\n const popupAlignPointBR = getAlignPoint(popupRect, ['b', 'r']);\n const overflow = placementInfo.overflow || {};\n const {\n adjustX,\n adjustY,\n shiftX,\n shiftY\n } = overflow;\n const supportAdjust = val => {\n if (typeof val === 'boolean') {\n return val;\n }\n return val >= 0;\n };\n\n // Prepare position\n let nextPopupY;\n let nextPopupBottom;\n let nextPopupX;\n let nextPopupRight;\n function syncNextPopupPosition() {\n nextPopupY = popupRect.y + nextOffsetY;\n nextPopupBottom = nextPopupY + popupHeight;\n nextPopupX = popupRect.x + nextOffsetX;\n nextPopupRight = nextPopupX + popupWidth;\n }\n syncNextPopupPosition();\n\n // >>>>>>>>>> Top & Bottom\n const needAdjustY = supportAdjust(adjustY);\n const sameTB = popupPoints[0] === targetPoints[0];\n\n // Bottom to Top\n if (needAdjustY && popupPoints[0] === 't' && (nextPopupBottom > adjustCheckVisibleArea.bottom || prevFlipRef.current.bt)) {\n let tmpNextOffsetY = nextOffsetY;\n if (sameTB) {\n tmpNextOffsetY -= popupHeight - targetHeight;\n } else {\n tmpNextOffsetY = targetAlignPointTL.y - popupAlignPointBR.y - popupOffsetY;\n }\n const newVisibleArea = getIntersectionVisibleArea(nextOffsetX, tmpNextOffsetY);\n const newVisibleRecommendArea = getIntersectionVisibleArea(nextOffsetX, tmpNextOffsetY, visibleRegionArea);\n if (\n // Of course use larger one\n newVisibleArea > originIntersectionVisibleArea || newVisibleArea === originIntersectionVisibleArea && (!isVisibleFirst ||\n // Choose recommend one\n newVisibleRecommendArea >= originIntersectionRecommendArea)) {\n prevFlipRef.current.bt = true;\n nextOffsetY = tmpNextOffsetY;\n popupOffsetY = -popupOffsetY;\n nextPoints = [reversePoints(nextPoints[0], 0), reversePoints(nextPoints[1], 0)];\n } else {\n prevFlipRef.current.bt = false;\n }\n }\n\n // Top to Bottom\n if (needAdjustY && popupPoints[0] === 'b' && (nextPopupY < adjustCheckVisibleArea.top || prevFlipRef.current.tb)) {\n let tmpNextOffsetY = nextOffsetY;\n if (sameTB) {\n tmpNextOffsetY += popupHeight - targetHeight;\n } else {\n tmpNextOffsetY = targetAlignPointBR.y - popupAlignPointTL.y - popupOffsetY;\n }\n const newVisibleArea = getIntersectionVisibleArea(nextOffsetX, tmpNextOffsetY);\n const newVisibleRecommendArea = getIntersectionVisibleArea(nextOffsetX, tmpNextOffsetY, visibleRegionArea);\n if (\n // Of course use larger one\n newVisibleArea > originIntersectionVisibleArea || newVisibleArea === originIntersectionVisibleArea && (!isVisibleFirst ||\n // Choose recommend one\n newVisibleRecommendArea >= originIntersectionRecommendArea)) {\n prevFlipRef.current.tb = true;\n nextOffsetY = tmpNextOffsetY;\n popupOffsetY = -popupOffsetY;\n nextPoints = [reversePoints(nextPoints[0], 0), reversePoints(nextPoints[1], 0)];\n } else {\n prevFlipRef.current.tb = false;\n }\n }\n\n // >>>>>>>>>> Left & Right\n const needAdjustX = supportAdjust(adjustX);\n\n // >>>>> Flip\n const sameLR = popupPoints[1] === targetPoints[1];\n\n // Right to Left\n if (needAdjustX && popupPoints[1] === 'l' && (nextPopupRight > adjustCheckVisibleArea.right || prevFlipRef.current.rl)) {\n let tmpNextOffsetX = nextOffsetX;\n if (sameLR) {\n tmpNextOffsetX -= popupWidth - targetWidth;\n } else {\n tmpNextOffsetX = targetAlignPointTL.x - popupAlignPointBR.x - popupOffsetX;\n }\n const newVisibleArea = getIntersectionVisibleArea(tmpNextOffsetX, nextOffsetY);\n const newVisibleRecommendArea = getIntersectionVisibleArea(tmpNextOffsetX, nextOffsetY, visibleRegionArea);\n if (\n // Of course use larger one\n newVisibleArea > originIntersectionVisibleArea || newVisibleArea === originIntersectionVisibleArea && (!isVisibleFirst ||\n // Choose recommend one\n newVisibleRecommendArea >= originIntersectionRecommendArea)) {\n prevFlipRef.current.rl = true;\n nextOffsetX = tmpNextOffsetX;\n popupOffsetX = -popupOffsetX;\n nextPoints = [reversePoints(nextPoints[0], 1), reversePoints(nextPoints[1], 1)];\n } else {\n prevFlipRef.current.rl = false;\n }\n }\n\n // Left to Right\n if (needAdjustX && popupPoints[1] === 'r' && (nextPopupX < adjustCheckVisibleArea.left || prevFlipRef.current.lr)) {\n let tmpNextOffsetX = nextOffsetX;\n if (sameLR) {\n tmpNextOffsetX += popupWidth - targetWidth;\n } else {\n tmpNextOffsetX = targetAlignPointBR.x - popupAlignPointTL.x - popupOffsetX;\n }\n const newVisibleArea = getIntersectionVisibleArea(tmpNextOffsetX, nextOffsetY);\n const newVisibleRecommendArea = getIntersectionVisibleArea(tmpNextOffsetX, nextOffsetY, visibleRegionArea);\n if (\n // Of course use larger one\n newVisibleArea > originIntersectionVisibleArea || newVisibleArea === originIntersectionVisibleArea && (!isVisibleFirst ||\n // Choose recommend one\n newVisibleRecommendArea >= originIntersectionRecommendArea)) {\n prevFlipRef.current.lr = true;\n nextOffsetX = tmpNextOffsetX;\n popupOffsetX = -popupOffsetX;\n nextPoints = [reversePoints(nextPoints[0], 1), reversePoints(nextPoints[1], 1)];\n } else {\n prevFlipRef.current.lr = false;\n }\n }\n nextAlignInfo.points = [flatPoints(nextPoints[0]), flatPoints(nextPoints[1])];\n\n // ============================ Shift ============================\n syncNextPopupPosition();\n const numShiftX = shiftX === true ? 0 : shiftX;\n if (typeof numShiftX === 'number') {\n // Left\n if (nextPopupX < visibleRegionArea.left) {\n nextOffsetX -= nextPopupX - visibleRegionArea.left - popupOffsetX;\n if (targetRect.x + targetWidth < visibleRegionArea.left + numShiftX) {\n nextOffsetX += targetRect.x - visibleRegionArea.left + targetWidth - numShiftX;\n }\n }\n\n // Right\n if (nextPopupRight > visibleRegionArea.right) {\n nextOffsetX -= nextPopupRight - visibleRegionArea.right - popupOffsetX;\n if (targetRect.x > visibleRegionArea.right - numShiftX) {\n nextOffsetX += targetRect.x - visibleRegionArea.right + numShiftX;\n }\n }\n }\n const numShiftY = shiftY === true ? 0 : shiftY;\n if (typeof numShiftY === 'number') {\n // Top\n if (nextPopupY < visibleRegionArea.top) {\n nextOffsetY -= nextPopupY - visibleRegionArea.top - popupOffsetY;\n\n // When target if far away from visible area\n // Stop shift\n if (targetRect.y + targetHeight < visibleRegionArea.top + numShiftY) {\n nextOffsetY += targetRect.y - visibleRegionArea.top + targetHeight - numShiftY;\n }\n }\n\n // Bottom\n if (nextPopupBottom > visibleRegionArea.bottom) {\n nextOffsetY -= nextPopupBottom - visibleRegionArea.bottom - popupOffsetY;\n if (targetRect.y > visibleRegionArea.bottom - numShiftY) {\n nextOffsetY += targetRect.y - visibleRegionArea.bottom + numShiftY;\n }\n }\n }\n\n // ============================ Arrow ============================\n // Arrow center align\n const popupLeft = popupRect.x + nextOffsetX;\n const popupRight = popupLeft + popupWidth;\n const popupTop = popupRect.y + nextOffsetY;\n const popupBottom = popupTop + popupHeight;\n const targetLeft = targetRect.x;\n const targetRight = targetLeft + targetWidth;\n const targetTop = targetRect.y;\n const targetBottom = targetTop + targetHeight;\n\n /** Max left of the popup and target element */\n const maxLeft = Math.max(popupLeft, targetLeft);\n /** Min right of the popup and target element */\n const minRight = Math.min(popupRight, targetRight);\n\n /** The center X of popup & target cross area */\n const xCenter = (maxLeft + minRight) / 2;\n /** Arrow X of popup offset */\n const nextArrowX = xCenter - popupLeft;\n const maxTop = Math.max(popupTop, targetTop);\n const minBottom = Math.min(popupBottom, targetBottom);\n const yCenter = (maxTop + minBottom) / 2;\n const nextArrowY = yCenter - popupTop;\n onPopupAlign?.(popupEle, nextAlignInfo);\n\n // Additional calculate right & bottom position\n let offsetX4Right = popupMirrorRect.right - popupRect.x - (nextOffsetX + popupRect.width);\n let offsetY4Bottom = popupMirrorRect.bottom - popupRect.y - (nextOffsetY + popupRect.height);\n if (scaleX === 1) {\n nextOffsetX = Math.round(nextOffsetX);\n offsetX4Right = Math.round(offsetX4Right);\n }\n if (scaleY === 1) {\n nextOffsetY = Math.round(nextOffsetY);\n offsetY4Bottom = Math.round(offsetY4Bottom);\n }\n const nextOffsetInfo = {\n ready: true,\n offsetX: nextOffsetX / scaleX,\n offsetY: nextOffsetY / scaleY,\n offsetR: offsetX4Right / scaleX,\n offsetB: offsetY4Bottom / scaleY,\n arrowX: nextArrowX / scaleX,\n arrowY: nextArrowY / scaleY,\n scaleX,\n scaleY,\n align: nextAlignInfo\n };\n setOffsetInfo(nextOffsetInfo);\n }\n });\n const triggerAlign = () => {\n alignCountRef.current += 1;\n const id = alignCountRef.current;\n\n // Merge all align requirement into one frame\n Promise.resolve().then(() => {\n if (alignCountRef.current === id) {\n onAlign();\n }\n });\n };\n\n // Reset ready status when placement & open changed\n const resetReady = () => {\n setOffsetInfo(ori => ({\n ...ori,\n ready: false\n }));\n };\n useLayoutEffect(resetReady, [placement]);\n useLayoutEffect(() => {\n if (!open) {\n resetReady();\n }\n }, [open]);\n return [offsetInfo.ready, offsetInfo.offsetX, offsetInfo.offsetY, offsetInfo.offsetR, offsetInfo.offsetB, offsetInfo.arrowX, offsetInfo.arrowY, offsetInfo.scaleX, offsetInfo.scaleY, offsetInfo.align, triggerAlign];\n}"],"names":["getUnitOffset","size","offset","offsetStr","cells","getNumberOffset","rect","offsetX","offsetY","splitPoints","points","getAlignPoint","topBottom","leftRight","x","y","reversePoints","index","reverseMap","clone","flatPoints","useAlign","open","popupEle","target","placement","builtinPlacements","popupAlign","onPopupAlign","mobile","offsetInfo","setOffsetInfo","React","alignCountRef","scrollerList","collectScroller","prevFlipRef","onAlign","useEvent","getIntersectionVisibleArea","area","visibleArea","l","popupRect","t","r","popupWidth","b","popupHeight","visibleL","visibleT","visibleR","visibleB","syncNextPopupPosition","nextPopupY","nextOffsetY","nextPopupBottom","nextPopupX","nextOffsetX","nextPopupRight","popupElement","doc","win","getWin","popupPosition","originLeft","originTop","originRight","originBottom","originOverflow","placementInfo","placeholderElement","targetRect","height","width","clientWidth","clientHeight","scrollWidth","scrollHeight","scrollTop","scrollLeft","targetHeight","targetWidth","visibleRegion","scrollRegion","htmlRegion","VISIBLE","VISIBLE_FIRST","isVisibleFirst","scrollRegionArea","getVisibleArea","visibleRegionArea","adjustCheckVisibleArea","popupMirrorRect","scaleX","toNum","scaleY","isDOM","isVisible","targetOffset","popupOffsetX","popupOffsetY","targetOffsetX","targetOffsetY","popupPoint","targetPoint","targetPoints","popupPoints","targetAlignPoint","popupAlignPoint","nextAlignInfo","nextPoints","originIntersectionVisibleArea","originIntersectionRecommendArea","targetAlignPointTL","popupAlignPointTL","targetAlignPointBR","popupAlignPointBR","overflow","adjustX","adjustY","shiftX","shiftY","supportAdjust","val","needAdjustY","sameTB","tmpNextOffsetY","newVisibleArea","newVisibleRecommendArea","needAdjustX","sameLR","tmpNextOffsetX","numShiftX","numShiftY","popupLeft","popupRight","popupTop","popupBottom","targetLeft","targetRight","targetTop","targetBottom","maxLeft","minRight","nextArrowX","maxTop","minBottom","nextArrowY","offsetX4Right","offsetY4Bottom","nextOffsetInfo","triggerAlign","id","resetReady","ori","useLayoutEffect"],"mappings":"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","x_google_ignoreList":[0]}
1
+ {"version":3,"file":"useAlign.js","sources":["../../../../../../node_modules/@rc-component/trigger/es/hooks/useAlign.js"],"sourcesContent":["import { isDOM } from \"@rc-component/util/es/Dom/findDOMNode\";\nimport isVisible from \"@rc-component/util/es/Dom/isVisible\";\nimport useEvent from \"@rc-component/util/es/hooks/useEvent\";\nimport useLayoutEffect from \"@rc-component/util/es/hooks/useLayoutEffect\";\nimport * as React from 'react';\nimport { collectScroller, getVisibleArea, getWin, toNum } from \"../util\";\nfunction getUnitOffset(size, offset = 0) {\n const offsetStr = `${offset}`;\n const cells = offsetStr.match(/^(.*)\\%$/);\n if (cells) {\n return size * (parseFloat(cells[1]) / 100);\n }\n return parseFloat(offsetStr);\n}\nfunction getNumberOffset(rect, offset) {\n const [offsetX, offsetY] = offset || [];\n return [getUnitOffset(rect.width, offsetX), getUnitOffset(rect.height, offsetY)];\n}\nfunction splitPoints(points = '') {\n return [points[0], points[1]];\n}\nfunction getAlignPoint(rect, points) {\n const topBottom = points[0];\n const leftRight = points[1];\n let x;\n let y;\n\n // Top & Bottom\n if (topBottom === 't') {\n y = rect.y;\n } else if (topBottom === 'b') {\n y = rect.y + rect.height;\n } else {\n y = rect.y + rect.height / 2;\n }\n\n // Left & Right\n if (leftRight === 'l') {\n x = rect.x;\n } else if (leftRight === 'r') {\n x = rect.x + rect.width;\n } else {\n x = rect.x + rect.width / 2;\n }\n return {\n x,\n y\n };\n}\nfunction reversePoints(points, index) {\n const reverseMap = {\n t: 'b',\n b: 't',\n l: 'r',\n r: 'l'\n };\n const clone = [...points];\n clone[index] = reverseMap[points[index]] || 'c';\n return clone;\n}\nfunction flatPoints(points) {\n return points.join('');\n}\nexport default function useAlign(open, popupEle, target, placement, builtinPlacements, popupAlign, onPopupAlign, mobile) {\n const [offsetInfo, setOffsetInfo] = React.useState({\n ready: false,\n offsetX: 0,\n offsetY: 0,\n offsetR: 0,\n offsetB: 0,\n arrowX: 0,\n arrowY: 0,\n scaleX: 1,\n scaleY: 1,\n align: builtinPlacements[placement] || {}\n });\n const alignCountRef = React.useRef(0);\n const scrollerList = React.useMemo(() => {\n if (!popupEle || mobile) {\n return [];\n }\n return collectScroller(popupEle);\n }, [popupEle]);\n\n // ========================= Flip ==========================\n // We will memo flip info.\n // If size change to make flip, it will memo the flip info and use it in next align.\n const prevFlipRef = React.useRef({});\n const resetFlipCache = () => {\n prevFlipRef.current = {};\n };\n if (!open) {\n resetFlipCache();\n }\n\n // ========================= Align =========================\n const onAlign = useEvent(() => {\n if (popupEle && target && open && !mobile) {\n const popupElement = popupEle;\n const doc = popupElement.ownerDocument;\n const win = getWin(popupElement);\n const {\n position: popupPosition\n } = win.getComputedStyle(popupElement);\n const originLeft = popupElement.style.left;\n const originTop = popupElement.style.top;\n const originRight = popupElement.style.right;\n const originBottom = popupElement.style.bottom;\n const originOverflow = popupElement.style.overflow;\n\n // Placement\n const placementInfo = {\n ...builtinPlacements[placement],\n ...popupAlign\n };\n\n // placeholder element\n const placeholderElement = doc.createElement('div');\n popupElement.parentElement?.appendChild(placeholderElement);\n placeholderElement.style.left = `${popupElement.offsetLeft}px`;\n placeholderElement.style.top = `${popupElement.offsetTop}px`;\n placeholderElement.style.position = popupPosition;\n placeholderElement.style.height = `${popupElement.offsetHeight}px`;\n placeholderElement.style.width = `${popupElement.offsetWidth}px`;\n\n // Reset first\n popupElement.style.left = '0';\n popupElement.style.top = '0';\n popupElement.style.right = 'auto';\n popupElement.style.bottom = 'auto';\n popupElement.style.overflow = 'hidden';\n\n // Calculate align style, we should consider `transform` case\n let targetRect;\n if (Array.isArray(target)) {\n targetRect = {\n x: target[0],\n y: target[1],\n width: 0,\n height: 0\n };\n } else {\n const rect = target.getBoundingClientRect();\n rect.x = rect.x ?? rect.left;\n rect.y = rect.y ?? rect.top;\n targetRect = {\n x: rect.x,\n y: rect.y,\n width: rect.width,\n height: rect.height\n };\n }\n const popupRect = popupElement.getBoundingClientRect();\n const {\n height,\n width\n } = win.getComputedStyle(popupElement);\n popupRect.x = popupRect.x ?? popupRect.left;\n popupRect.y = popupRect.y ?? popupRect.top;\n const {\n clientWidth,\n clientHeight,\n scrollWidth,\n scrollHeight,\n scrollTop,\n scrollLeft\n } = doc.documentElement;\n const popupHeight = popupRect.height;\n const popupWidth = popupRect.width;\n const targetHeight = targetRect.height;\n const targetWidth = targetRect.width;\n\n // Get bounding of visible area\n const visibleRegion = {\n left: 0,\n top: 0,\n right: clientWidth,\n bottom: clientHeight\n };\n const scrollRegion = {\n left: -scrollLeft,\n top: -scrollTop,\n right: scrollWidth - scrollLeft,\n bottom: scrollHeight - scrollTop\n };\n let {\n htmlRegion\n } = placementInfo;\n const VISIBLE = 'visible';\n const VISIBLE_FIRST = 'visibleFirst';\n if (htmlRegion !== 'scroll' && htmlRegion !== VISIBLE_FIRST) {\n htmlRegion = VISIBLE;\n }\n const isVisibleFirst = htmlRegion === VISIBLE_FIRST;\n const scrollRegionArea = getVisibleArea(scrollRegion, scrollerList);\n const visibleRegionArea = getVisibleArea(visibleRegion, scrollerList);\n const visibleArea = htmlRegion === VISIBLE ? visibleRegionArea : scrollRegionArea;\n\n // When set to `visibleFirst`,\n // the check `adjust` logic will use `visibleRegion` for check first.\n const adjustCheckVisibleArea = isVisibleFirst ? visibleRegionArea : visibleArea;\n\n // Record right & bottom align data\n popupElement.style.left = 'auto';\n popupElement.style.top = 'auto';\n popupElement.style.right = '0';\n popupElement.style.bottom = '0';\n const popupMirrorRect = popupElement.getBoundingClientRect();\n\n // Reset back\n popupElement.style.left = originLeft;\n popupElement.style.top = originTop;\n popupElement.style.right = originRight;\n popupElement.style.bottom = originBottom;\n popupElement.style.overflow = originOverflow;\n popupElement.parentElement?.removeChild(placeholderElement);\n\n // Calculate scale\n const scaleX = toNum(Math.round(popupWidth / parseFloat(width) * 1000) / 1000);\n const scaleY = toNum(Math.round(popupHeight / parseFloat(height) * 1000) / 1000);\n\n // No need to align since it's not visible in view\n if (scaleX === 0 || scaleY === 0 || isDOM(target) && !isVisible(target)) {\n return;\n }\n\n // Offset\n const {\n offset,\n targetOffset\n } = placementInfo;\n let [popupOffsetX, popupOffsetY] = getNumberOffset(popupRect, offset);\n const [targetOffsetX, targetOffsetY] = getNumberOffset(targetRect, targetOffset);\n targetRect.x -= targetOffsetX;\n targetRect.y -= targetOffsetY;\n\n // Points\n const [popupPoint, targetPoint] = placementInfo.points || [];\n const targetPoints = splitPoints(targetPoint);\n const popupPoints = splitPoints(popupPoint);\n const targetAlignPoint = getAlignPoint(targetRect, targetPoints);\n const popupAlignPoint = getAlignPoint(popupRect, popupPoints);\n\n // Real align info may not same as origin one\n const nextAlignInfo = {\n ...placementInfo\n };\n let nextPoints = [popupPoints, targetPoints];\n\n // Next Offset\n let nextOffsetX = targetAlignPoint.x - popupAlignPoint.x + popupOffsetX;\n let nextOffsetY = targetAlignPoint.y - popupAlignPoint.y + popupOffsetY;\n\n // ============== Intersection ===============\n // Get area by position. Used for check if flip area is better\n function getIntersectionVisibleArea(offsetX, offsetY, area = visibleArea) {\n const l = popupRect.x + offsetX;\n const t = popupRect.y + offsetY;\n const r = l + popupWidth;\n const b = t + popupHeight;\n const visibleL = Math.max(l, area.left);\n const visibleT = Math.max(t, area.top);\n const visibleR = Math.min(r, area.right);\n const visibleB = Math.min(b, area.bottom);\n return Math.max(0, (visibleR - visibleL) * (visibleB - visibleT));\n }\n const originIntersectionVisibleArea = getIntersectionVisibleArea(nextOffsetX, nextOffsetY);\n\n // As `visibleFirst`, we prepare this for check\n const originIntersectionRecommendArea = getIntersectionVisibleArea(nextOffsetX, nextOffsetY, visibleRegionArea);\n\n // ========================== Overflow ===========================\n const targetAlignPointTL = getAlignPoint(targetRect, ['t', 'l']);\n const popupAlignPointTL = getAlignPoint(popupRect, ['t', 'l']);\n const targetAlignPointBR = getAlignPoint(targetRect, ['b', 'r']);\n const popupAlignPointBR = getAlignPoint(popupRect, ['b', 'r']);\n const overflow = placementInfo.overflow || {};\n const {\n adjustX,\n adjustY,\n shiftX,\n shiftY\n } = overflow;\n const supportAdjust = val => {\n if (typeof val === 'boolean') {\n return val;\n }\n return val >= 0;\n };\n\n // Prepare position\n let nextPopupY;\n let nextPopupBottom;\n let nextPopupX;\n let nextPopupRight;\n function syncNextPopupPosition() {\n nextPopupY = popupRect.y + nextOffsetY;\n nextPopupBottom = nextPopupY + popupHeight;\n nextPopupX = popupRect.x + nextOffsetX;\n nextPopupRight = nextPopupX + popupWidth;\n }\n syncNextPopupPosition();\n\n // >>>>>>>>>> Top & Bottom\n const needAdjustY = supportAdjust(adjustY);\n const sameTB = popupPoints[0] === targetPoints[0];\n\n // Bottom to Top\n if (needAdjustY && popupPoints[0] === 't' && (nextPopupBottom > adjustCheckVisibleArea.bottom || prevFlipRef.current.bt)) {\n let tmpNextOffsetY = nextOffsetY;\n if (sameTB) {\n tmpNextOffsetY -= popupHeight - targetHeight;\n } else {\n tmpNextOffsetY = targetAlignPointTL.y - popupAlignPointBR.y - popupOffsetY;\n }\n const newVisibleArea = getIntersectionVisibleArea(nextOffsetX, tmpNextOffsetY);\n const newVisibleRecommendArea = getIntersectionVisibleArea(nextOffsetX, tmpNextOffsetY, visibleRegionArea);\n if (\n // Of course use larger one\n newVisibleArea > originIntersectionVisibleArea || newVisibleArea === originIntersectionVisibleArea && (!isVisibleFirst ||\n // Choose recommend one\n newVisibleRecommendArea >= originIntersectionRecommendArea)) {\n prevFlipRef.current.bt = true;\n nextOffsetY = tmpNextOffsetY;\n popupOffsetY = -popupOffsetY;\n nextPoints = [reversePoints(nextPoints[0], 0), reversePoints(nextPoints[1], 0)];\n } else {\n prevFlipRef.current.bt = false;\n }\n }\n\n // Top to Bottom\n if (needAdjustY && popupPoints[0] === 'b' && (nextPopupY < adjustCheckVisibleArea.top || prevFlipRef.current.tb)) {\n let tmpNextOffsetY = nextOffsetY;\n if (sameTB) {\n tmpNextOffsetY += popupHeight - targetHeight;\n } else {\n tmpNextOffsetY = targetAlignPointBR.y - popupAlignPointTL.y - popupOffsetY;\n }\n const newVisibleArea = getIntersectionVisibleArea(nextOffsetX, tmpNextOffsetY);\n const newVisibleRecommendArea = getIntersectionVisibleArea(nextOffsetX, tmpNextOffsetY, visibleRegionArea);\n if (\n // Of course use larger one\n newVisibleArea > originIntersectionVisibleArea || newVisibleArea === originIntersectionVisibleArea && (!isVisibleFirst ||\n // Choose recommend one\n newVisibleRecommendArea >= originIntersectionRecommendArea)) {\n prevFlipRef.current.tb = true;\n nextOffsetY = tmpNextOffsetY;\n popupOffsetY = -popupOffsetY;\n nextPoints = [reversePoints(nextPoints[0], 0), reversePoints(nextPoints[1], 0)];\n } else {\n prevFlipRef.current.tb = false;\n }\n }\n\n // >>>>>>>>>> Left & Right\n const needAdjustX = supportAdjust(adjustX);\n\n // >>>>> Flip\n const sameLR = popupPoints[1] === targetPoints[1];\n\n // Right to Left\n if (needAdjustX && popupPoints[1] === 'l' && (nextPopupRight > adjustCheckVisibleArea.right || prevFlipRef.current.rl)) {\n let tmpNextOffsetX = nextOffsetX;\n if (sameLR) {\n tmpNextOffsetX -= popupWidth - targetWidth;\n } else {\n tmpNextOffsetX = targetAlignPointTL.x - popupAlignPointBR.x - popupOffsetX;\n }\n const newVisibleArea = getIntersectionVisibleArea(tmpNextOffsetX, nextOffsetY);\n const newVisibleRecommendArea = getIntersectionVisibleArea(tmpNextOffsetX, nextOffsetY, visibleRegionArea);\n if (\n // Of course use larger one\n newVisibleArea > originIntersectionVisibleArea || newVisibleArea === originIntersectionVisibleArea && (!isVisibleFirst ||\n // Choose recommend one\n newVisibleRecommendArea >= originIntersectionRecommendArea)) {\n prevFlipRef.current.rl = true;\n nextOffsetX = tmpNextOffsetX;\n popupOffsetX = -popupOffsetX;\n nextPoints = [reversePoints(nextPoints[0], 1), reversePoints(nextPoints[1], 1)];\n } else {\n prevFlipRef.current.rl = false;\n }\n }\n\n // Left to Right\n if (needAdjustX && popupPoints[1] === 'r' && (nextPopupX < adjustCheckVisibleArea.left || prevFlipRef.current.lr)) {\n let tmpNextOffsetX = nextOffsetX;\n if (sameLR) {\n tmpNextOffsetX += popupWidth - targetWidth;\n } else {\n tmpNextOffsetX = targetAlignPointBR.x - popupAlignPointTL.x - popupOffsetX;\n }\n const newVisibleArea = getIntersectionVisibleArea(tmpNextOffsetX, nextOffsetY);\n const newVisibleRecommendArea = getIntersectionVisibleArea(tmpNextOffsetX, nextOffsetY, visibleRegionArea);\n if (\n // Of course use larger one\n newVisibleArea > originIntersectionVisibleArea || newVisibleArea === originIntersectionVisibleArea && (!isVisibleFirst ||\n // Choose recommend one\n newVisibleRecommendArea >= originIntersectionRecommendArea)) {\n prevFlipRef.current.lr = true;\n nextOffsetX = tmpNextOffsetX;\n popupOffsetX = -popupOffsetX;\n nextPoints = [reversePoints(nextPoints[0], 1), reversePoints(nextPoints[1], 1)];\n } else {\n prevFlipRef.current.lr = false;\n }\n }\n nextAlignInfo.points = [flatPoints(nextPoints[0]), flatPoints(nextPoints[1])];\n\n // ============================ Shift ============================\n syncNextPopupPosition();\n const numShiftX = shiftX === true ? 0 : shiftX;\n if (typeof numShiftX === 'number') {\n // Left\n if (nextPopupX < visibleRegionArea.left) {\n nextOffsetX -= nextPopupX - visibleRegionArea.left - popupOffsetX;\n if (targetRect.x + targetWidth < visibleRegionArea.left + numShiftX) {\n nextOffsetX += targetRect.x - visibleRegionArea.left + targetWidth - numShiftX;\n }\n }\n\n // Right\n if (nextPopupRight > visibleRegionArea.right) {\n nextOffsetX -= nextPopupRight - visibleRegionArea.right - popupOffsetX;\n if (targetRect.x > visibleRegionArea.right - numShiftX) {\n nextOffsetX += targetRect.x - visibleRegionArea.right + numShiftX;\n }\n }\n }\n const numShiftY = shiftY === true ? 0 : shiftY;\n if (typeof numShiftY === 'number') {\n // Top\n if (nextPopupY < visibleRegionArea.top) {\n nextOffsetY -= nextPopupY - visibleRegionArea.top - popupOffsetY;\n\n // When target if far away from visible area\n // Stop shift\n if (targetRect.y + targetHeight < visibleRegionArea.top + numShiftY) {\n nextOffsetY += targetRect.y - visibleRegionArea.top + targetHeight - numShiftY;\n }\n }\n\n // Bottom\n if (nextPopupBottom > visibleRegionArea.bottom) {\n nextOffsetY -= nextPopupBottom - visibleRegionArea.bottom - popupOffsetY;\n if (targetRect.y > visibleRegionArea.bottom - numShiftY) {\n nextOffsetY += targetRect.y - visibleRegionArea.bottom + numShiftY;\n }\n }\n }\n\n // ============================ Arrow ============================\n // Arrow center align\n const popupLeft = popupRect.x + nextOffsetX;\n const popupRight = popupLeft + popupWidth;\n const popupTop = popupRect.y + nextOffsetY;\n const popupBottom = popupTop + popupHeight;\n const targetLeft = targetRect.x;\n const targetRight = targetLeft + targetWidth;\n const targetTop = targetRect.y;\n const targetBottom = targetTop + targetHeight;\n\n /** Max left of the popup and target element */\n const maxLeft = Math.max(popupLeft, targetLeft);\n /** Min right of the popup and target element */\n const minRight = Math.min(popupRight, targetRight);\n\n /** The center X of popup & target cross area */\n const xCenter = (maxLeft + minRight) / 2;\n /** Arrow X of popup offset */\n const nextArrowX = xCenter - popupLeft;\n const maxTop = Math.max(popupTop, targetTop);\n const minBottom = Math.min(popupBottom, targetBottom);\n const yCenter = (maxTop + minBottom) / 2;\n const nextArrowY = yCenter - popupTop;\n onPopupAlign?.(popupEle, nextAlignInfo);\n\n // Additional calculate right & bottom position\n let offsetX4Right = popupMirrorRect.right - popupRect.x - (nextOffsetX + popupRect.width);\n let offsetY4Bottom = popupMirrorRect.bottom - popupRect.y - (nextOffsetY + popupRect.height);\n if (scaleX === 1) {\n nextOffsetX = Math.floor(nextOffsetX);\n offsetX4Right = Math.floor(offsetX4Right);\n }\n if (scaleY === 1) {\n nextOffsetY = Math.floor(nextOffsetY);\n offsetY4Bottom = Math.floor(offsetY4Bottom);\n }\n const nextOffsetInfo = {\n ready: true,\n offsetX: nextOffsetX / scaleX,\n offsetY: nextOffsetY / scaleY,\n offsetR: offsetX4Right / scaleX,\n offsetB: offsetY4Bottom / scaleY,\n arrowX: nextArrowX / scaleX,\n arrowY: nextArrowY / scaleY,\n scaleX,\n scaleY,\n align: nextAlignInfo\n };\n setOffsetInfo(nextOffsetInfo);\n }\n });\n const triggerAlign = () => {\n alignCountRef.current += 1;\n const id = alignCountRef.current;\n\n // Merge all align requirement into one frame\n Promise.resolve().then(() => {\n if (alignCountRef.current === id) {\n onAlign();\n }\n });\n };\n\n // Reset ready status when placement & open changed\n const resetReady = () => {\n setOffsetInfo(ori => ({\n ...ori,\n ready: false\n }));\n };\n useLayoutEffect(resetReady, [placement]);\n useLayoutEffect(() => {\n if (!open) {\n resetReady();\n }\n }, [open]);\n return [offsetInfo.ready, offsetInfo.offsetX, offsetInfo.offsetY, offsetInfo.offsetR, offsetInfo.offsetB, offsetInfo.arrowX, offsetInfo.arrowY, offsetInfo.scaleX, offsetInfo.scaleY, offsetInfo.align, triggerAlign];\n}"],"names":["getUnitOffset","size","offset","offsetStr","cells","getNumberOffset","rect","offsetX","offsetY","splitPoints","points","getAlignPoint","topBottom","leftRight","x","y","reversePoints","index","reverseMap","clone","flatPoints","useAlign","open","popupEle","target","placement","builtinPlacements","popupAlign","onPopupAlign","mobile","offsetInfo","setOffsetInfo","React","alignCountRef","scrollerList","collectScroller","prevFlipRef","onAlign","useEvent","getIntersectionVisibleArea","area","visibleArea","l","popupRect","t","r","popupWidth","b","popupHeight","visibleL","visibleT","visibleR","visibleB","syncNextPopupPosition","nextPopupY","nextOffsetY","nextPopupBottom","nextPopupX","nextOffsetX","nextPopupRight","popupElement","doc","win","getWin","popupPosition","originLeft","originTop","originRight","originBottom","originOverflow","placementInfo","placeholderElement","targetRect","height","width","clientWidth","clientHeight","scrollWidth","scrollHeight","scrollTop","scrollLeft","targetHeight","targetWidth","visibleRegion","scrollRegion","htmlRegion","VISIBLE","VISIBLE_FIRST","isVisibleFirst","scrollRegionArea","getVisibleArea","visibleRegionArea","adjustCheckVisibleArea","popupMirrorRect","scaleX","toNum","scaleY","isDOM","isVisible","targetOffset","popupOffsetX","popupOffsetY","targetOffsetX","targetOffsetY","popupPoint","targetPoint","targetPoints","popupPoints","targetAlignPoint","popupAlignPoint","nextAlignInfo","nextPoints","originIntersectionVisibleArea","originIntersectionRecommendArea","targetAlignPointTL","popupAlignPointTL","targetAlignPointBR","popupAlignPointBR","overflow","adjustX","adjustY","shiftX","shiftY","supportAdjust","val","needAdjustY","sameTB","tmpNextOffsetY","newVisibleArea","newVisibleRecommendArea","needAdjustX","sameLR","tmpNextOffsetX","numShiftX","numShiftY","popupLeft","popupRight","popupTop","popupBottom","targetLeft","targetRight","targetTop","targetBottom","maxLeft","minRight","nextArrowX","maxTop","minBottom","nextArrowY","offsetX4Right","offsetY4Bottom","nextOffsetInfo","triggerAlign","id","resetReady","ori","useLayoutEffect"],"mappings":"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","x_google_ignoreList":[0]}