@oracle/oraclejet-preact 17.0.6 → 17.0.8

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 (650) hide show
  1. package/amd/{BaseCardView-1aa0d986.js → BaseCardView-3c1e5b4c.js} +2 -2
  2. package/amd/{BaseCardView-1aa0d986.js.map → BaseCardView-3c1e5b4c.js.map} +1 -1
  3. package/amd/CardFlexView-3e4bd681.js +2 -0
  4. package/amd/{CardFlexView-a647550f.js.map → CardFlexView-3e4bd681.js.map} +1 -1
  5. package/amd/CardGridView-8fb55ad7.js +2 -0
  6. package/amd/{CardGridView-06fb67cb.js.map → CardGridView-8fb55ad7.js.map} +1 -1
  7. package/amd/GroupLoadingIndicator-e66ed431.js +1 -1
  8. package/amd/{Indexer-204a6d88.js → Indexer-51d51cda.js} +2 -2
  9. package/amd/{Indexer-204a6d88.js.map → Indexer-51d51cda.js.map} +1 -1
  10. package/amd/InputDatePicker-0012b304.js +2 -0
  11. package/amd/{InputDatePicker-da5d8728.js.map → InputDatePicker-0012b304.js.map} +1 -1
  12. package/amd/List-88a7bee6.js +2 -0
  13. package/amd/{List-5958c802.js.map → List-88a7bee6.js.map} +1 -1
  14. package/amd/{ListView-27d10b67.js → ListView-6739207e.js} +2 -2
  15. package/amd/{ListView-27d10b67.js.map → ListView-6739207e.js.map} +1 -1
  16. package/amd/LoadMoreCollection-a6adbc3f.js +2 -0
  17. package/amd/{LoadMoreCollection-83413a59.js.map → LoadMoreCollection-a6adbc3f.js.map} +1 -1
  18. package/amd/MaxLengthCounter-caafceef.js +2 -0
  19. package/amd/MaxLengthCounter-caafceef.js.map +1 -0
  20. package/amd/PRIVATE_BaseCardView.js +1 -1
  21. package/amd/PRIVATE_List.js +1 -1
  22. package/amd/PRIVATE_LoadMoreCollection.js +1 -1
  23. package/amd/PRIVATE_SelectCommon.js +1 -1
  24. package/amd/PRIVATE_Table.js +1 -1
  25. package/amd/PRIVATE_VirtualizedCollection.js +1 -1
  26. package/amd/{SelectMultiple-fabd883c.js → SelectMultiple-06da3db0.js} +2 -2
  27. package/amd/{SelectMultiple-fabd883c.js.map → SelectMultiple-06da3db0.js.map} +1 -1
  28. package/amd/{SelectSingle-34d636a8.js → SelectSingle-2266e5c4.js} +2 -2
  29. package/amd/{SelectSingle-34d636a8.js.map → SelectSingle-2266e5c4.js.map} +1 -1
  30. package/amd/{Table-fda0ad21.js → Table-8e271f0f.js} +2 -2
  31. package/amd/{Table-fda0ad21.js.map → Table-8e271f0f.js.map} +1 -1
  32. package/amd/{TableView-e4216655.js → TableView-cc05c32f.js} +2 -2
  33. package/amd/{TableView-e4216655.js.map → TableView-cc05c32f.js.map} +1 -1
  34. package/amd/TextArea-44c90bc4.js +2 -0
  35. package/amd/TextArea-44c90bc4.js.map +1 -0
  36. package/amd/TextAreaAutosize-0a023972.js +2 -0
  37. package/amd/{TextAreaAutosize-9dc5bffe.js.map → TextAreaAutosize-0a023972.js.map} +1 -1
  38. package/amd/Theme-redwood/theme.css +254 -254
  39. package/amd/Theme-stable/theme.css +336 -336
  40. package/amd/UNSAFE_CardFlexView.js +1 -1
  41. package/amd/UNSAFE_CardGridView.js +1 -1
  42. package/amd/UNSAFE_ExpandableList.js +1 -1
  43. package/amd/UNSAFE_Indexer.js +1 -1
  44. package/amd/UNSAFE_InputDatePicker.js +1 -1
  45. package/amd/UNSAFE_ListView.js +1 -1
  46. package/amd/UNSAFE_SelectMultiple.js +1 -1
  47. package/amd/UNSAFE_SelectSingle.js +1 -1
  48. package/amd/UNSAFE_TableView.js +1 -1
  49. package/amd/UNSAFE_TextArea.js +1 -1
  50. package/amd/UNSAFE_TextAreaAutosize.js +1 -1
  51. package/amd/UNSAFE_VirtualizedListView.js +1 -1
  52. package/amd/{VirtualizedCollection-897516a5.js → VirtualizedCollection-63223f5e.js} +2 -2
  53. package/amd/{VirtualizedCollection-897516a5.js.map → VirtualizedCollection-63223f5e.js.map} +1 -1
  54. package/amd/VirtualizedListView-0924cf91.js +2 -0
  55. package/amd/{VirtualizedListView-ead601c7.js.map → VirtualizedListView-0924cf91.js.map} +1 -1
  56. package/amd/{useSelectCommon-8657b927.js → useSelectCommon-cbb310df.js} +2 -2
  57. package/amd/{useSelectCommon-8657b927.js.map → useSelectCommon-cbb310df.js.map} +1 -1
  58. package/cjs/{BarChart-acda079d.js → BarChart-11c56b6a.js} +2 -2
  59. package/cjs/{BarChart-acda079d.js.map → BarChart-11c56b6a.js.map} +1 -1
  60. package/cjs/{BaseCardView-badf6df3.js → BaseCardView-99f89fbf.js} +2 -2
  61. package/cjs/{BaseCardView-badf6df3.js.map → BaseCardView-99f89fbf.js.map} +1 -1
  62. package/cjs/{useNavigationListItem-74009187.js → BaseNavigationListItem-070d75bc.js} +40 -2
  63. package/cjs/BaseNavigationListItem-070d75bc.js.map +1 -0
  64. package/cjs/{CardFlexView-d44dfed5.js → CardFlexView-48f39ef2.js} +2 -2
  65. package/cjs/{CardFlexView-d44dfed5.js.map → CardFlexView-48f39ef2.js.map} +1 -1
  66. package/cjs/{CardGridView-dd7c777f.js → CardGridView-6bb427fe.js} +2 -2
  67. package/cjs/{CardGridView-dd7c777f.js.map → CardGridView-6bb427fe.js.map} +1 -1
  68. package/cjs/{Chart-c55ecfa4.js → Chart-6684fa6d.js} +2 -2
  69. package/cjs/{Chart-c55ecfa4.js.map → Chart-6684fa6d.js.map} +1 -1
  70. package/cjs/GroupLoadingIndicator-3c9d8341.js +1 -1
  71. package/cjs/{Indexer-563ea09d.js → Indexer-0663a593.js} +2 -2
  72. package/cjs/{Indexer-563ea09d.js.map → Indexer-0663a593.js.map} +1 -1
  73. package/cjs/{InputDatePicker-91be7790.js → InputDatePicker-005c03d0.js} +2 -2
  74. package/cjs/{InputDatePicker-91be7790.js.map → InputDatePicker-005c03d0.js.map} +1 -1
  75. package/cjs/{LineAreaChart-2320dafa.js → LineAreaChart-7e0e021f.js} +2 -2
  76. package/cjs/{LineAreaChart-2320dafa.js.map → LineAreaChart-7e0e021f.js.map} +1 -1
  77. package/cjs/{List-bd9ecebb.js → List-8802ce35.js} +3 -4
  78. package/cjs/{List-bd9ecebb.js.map → List-8802ce35.js.map} +1 -1
  79. package/cjs/{ListView-d67f49db.js → ListView-f7871b48.js} +2 -2
  80. package/cjs/{ListView-d67f49db.js.map → ListView-f7871b48.js.map} +1 -1
  81. package/cjs/{LoadMoreCollection-73112ff0.js → LoadMoreCollection-69bc038c.js} +2 -2
  82. package/cjs/{LoadMoreCollection-73112ff0.js.map → LoadMoreCollection-69bc038c.js.map} +1 -1
  83. package/cjs/{NavigationList-5218562e.js → NavigationListItem-12a76e7d.js} +18 -3
  84. package/cjs/NavigationListItem-12a76e7d.js.map +1 -0
  85. package/cjs/{OverflowTabBarItem-1de46588.js → OverflowTabBarItem-c0a592fd.js} +4 -5
  86. package/cjs/{OverflowTabBarItem-1de46588.js.map → OverflowTabBarItem-c0a592fd.js.map} +1 -1
  87. package/cjs/PRIVATE_BaseCardView.js +3 -3
  88. package/cjs/PRIVATE_Chart.js +4 -4
  89. package/cjs/PRIVATE_List.js +4 -4
  90. package/cjs/PRIVATE_LoadMoreCollection.js +2 -2
  91. package/cjs/PRIVATE_SelectCommon.js +5 -5
  92. package/cjs/PRIVATE_Table.js +3 -3
  93. package/cjs/PRIVATE_VirtualizedCollection.js +2 -2
  94. package/cjs/{RemovableNavigationListItem-eb2c8156.js → RemovableNavigationListItem-6231df42.js} +3 -4
  95. package/cjs/{RemovableNavigationListItem-eb2c8156.js.map → RemovableNavigationListItem-6231df42.js.map} +1 -1
  96. package/cjs/{ReorderableTabBar-025a0d71.js → ReorderableTabBar-5743c66a.js} +2 -2
  97. package/cjs/{ReorderableTabBar-025a0d71.js.map → ReorderableTabBar-5743c66a.js.map} +1 -1
  98. package/cjs/{SelectMultiple-3af44d48.js → SelectMultiple-fcfb029a.js} +2 -2
  99. package/cjs/{SelectMultiple-3af44d48.js.map → SelectMultiple-fcfb029a.js.map} +1 -1
  100. package/cjs/{SelectSingle-315c9871.js → SelectSingle-40cb868a.js} +2 -2
  101. package/cjs/{SelectSingle-315c9871.js.map → SelectSingle-40cb868a.js.map} +1 -1
  102. package/cjs/{TabBar-e77706d0.js → TabBar-73bb6c97.js} +1 -6
  103. package/cjs/{TabBar-e77706d0.js.map → TabBar-73bb6c97.js.map} +1 -1
  104. package/cjs/{TabBarMixed-bc696a46.js → TabBarMixed-426fcaf1.js} +1 -6
  105. package/cjs/{TabBarMixed-bc696a46.js.map → TabBarMixed-426fcaf1.js.map} +1 -1
  106. package/cjs/{Table-ecf57a09.js → Table-17b3dbc3.js} +2 -2
  107. package/cjs/{Table-ecf57a09.js.map → Table-17b3dbc3.js.map} +1 -1
  108. package/cjs/{TableView-756b9d98.js → TableView-26f85ff8.js} +2 -2
  109. package/cjs/{TableView-756b9d98.js.map → TableView-26f85ff8.js.map} +1 -1
  110. package/cjs/Theme-redwood/theme.css +180 -180
  111. package/cjs/Theme-stable/theme.css +149 -149
  112. package/cjs/UNSAFE_BarChart/__test__/BarChart.spec.js +5 -5
  113. package/cjs/UNSAFE_BarChart.js +5 -5
  114. package/cjs/UNSAFE_CardFlexView.js +4 -4
  115. package/cjs/UNSAFE_CardGridView.js +4 -4
  116. package/cjs/UNSAFE_ExpandableList.js +3 -3
  117. package/cjs/UNSAFE_Indexer.js +2 -2
  118. package/cjs/UNSAFE_InputDatePicker.js +87 -87
  119. package/cjs/UNSAFE_LineAreaChart/__test__/LineChart.spec.js +5 -5
  120. package/cjs/UNSAFE_LineAreaChart.js +5 -5
  121. package/cjs/UNSAFE_ListView.js +5 -5
  122. package/cjs/UNSAFE_NavigationList.js +14 -16
  123. package/cjs/UNSAFE_NavigationList.js.map +1 -1
  124. package/cjs/UNSAFE_NavigationListCommon.js +54 -55
  125. package/cjs/UNSAFE_NavigationListCommon.js.map +1 -1
  126. package/cjs/UNSAFE_OverflowTabBar.js +21 -23
  127. package/cjs/UNSAFE_OverflowTabBar.js.map +1 -1
  128. package/cjs/UNSAFE_ReorderableTabBar.js +7 -21
  129. package/cjs/UNSAFE_ReorderableTabBar.js.map +1 -1
  130. package/cjs/UNSAFE_SelectMultiple.js +6 -6
  131. package/cjs/UNSAFE_SelectSingle.js +6 -6
  132. package/cjs/UNSAFE_TabBar.js +22 -24
  133. package/cjs/UNSAFE_TabBar.js.map +1 -1
  134. package/cjs/UNSAFE_TabBarCommon.js +18 -20
  135. package/cjs/UNSAFE_TabBarCommon.js.map +1 -1
  136. package/cjs/UNSAFE_TabBarMixed.js +22 -24
  137. package/cjs/UNSAFE_TabBarMixed.js.map +1 -1
  138. package/cjs/UNSAFE_TableView.js +4 -4
  139. package/cjs/UNSAFE_VirtualizedListView.js +5 -5
  140. package/cjs/{VirtualizedCollection-00aedb8b.js → VirtualizedCollection-9e8c48b9.js} +2 -2
  141. package/cjs/{VirtualizedCollection-00aedb8b.js.map → VirtualizedCollection-9e8c48b9.js.map} +1 -1
  142. package/cjs/{VirtualizedListView-a07fe73b.js → VirtualizedListView-b4147305.js} +2 -2
  143. package/cjs/{VirtualizedListView-a07fe73b.js.map → VirtualizedListView-b4147305.js.map} +1 -1
  144. package/cjs/{useSelectCommon-8aaf62bd.js → useSelectCommon-d39e90e2.js} +2 -2
  145. package/cjs/{useSelectCommon-8aaf62bd.js.map → useSelectCommon-d39e90e2.js.map} +1 -1
  146. package/es/ActionCard-623c6191.js +1 -1
  147. package/es/BarChart-c8f78f4b.js +2 -2
  148. package/es/BaseButton-5b2791b1.js +2 -2
  149. package/es/BaseCardView-59efba85.js +7 -7
  150. package/es/{BaseCardViewSelectionTest-6796b2b4.js → BaseCardViewSelectionTest-ab83a0b0.js} +6 -6
  151. package/es/{BaseCardViewSelectionTest-6796b2b4.js.map → BaseCardViewSelectionTest-ab83a0b0.js.map} +1 -1
  152. package/es/BaseNavigationListItem-3a377d46.js +1 -1
  153. package/es/ButtonSet-fa7e8acd.js +2 -2
  154. package/es/ButtonSetIconButton-c5860cc1.js +2 -2
  155. package/es/{Center-2ffc1dcc.js → Center-58d4b406.js} +2 -2
  156. package/es/{Center-2ffc1dcc.js.map → Center-58d4b406.js.map} +1 -1
  157. package/es/Chart-793bd008.js +9 -9
  158. package/es/CheckboxControl-7174e0b2.js +6 -6
  159. package/es/CheckboxIconVariants.styles.css +7 -7
  160. package/es/CheckboxIconVariants.styles2.css +7 -7
  161. package/es/CheckboxRadioField-c7c4643e.js +5 -5
  162. package/es/CheckboxVariants.styles.css +4 -4
  163. package/es/CheckboxVariants.styles2.css +4 -4
  164. package/es/Chip-2c86a76f.js +1 -1
  165. package/es/ClearIcon-f1f796b4.js +1 -1
  166. package/es/CollapseIcon-b6d7cfd6.js +1 -1
  167. package/es/Collapsible-4cdc17e3.js +2 -2
  168. package/es/CollapsibleVariants.styles.css +3 -3
  169. package/es/CollapsibleVariants.styles2.css +3 -3
  170. package/es/CompactHelpSource-548938ff.js +2 -2
  171. package/es/{CompactLabelAssistance-fc9478aa.js → CompactLabelAssistance-933d1d68.js} +4 -4
  172. package/es/{CompactLabelAssistance-fc9478aa.js.map → CompactLabelAssistance-933d1d68.js.map} +1 -1
  173. package/es/CompactUserAssistance-41c32c6f.js +4 -4
  174. package/es/ComponentMessageContainer-7d9228a3.js +4 -4
  175. package/es/ConveyorBeltItem-3d1d7f3c.js +2 -2
  176. package/es/{DatePicker-4356274b.js → DatePicker-e517dad2.js} +6 -6
  177. package/es/{DatePicker-4356274b.js.map → DatePicker-e517dad2.js.map} +1 -1
  178. package/es/DatePickerHeader-7078d6e8.js +3 -3
  179. package/es/{Diagram-214e374c.js → Diagram-15e246b6.js} +5 -5
  180. package/es/{Diagram-214e374c.js.map → Diagram-15e246b6.js.map} +1 -1
  181. package/es/DirectionalCollapseArrowIcon-0298f5ef.js +1 -1
  182. package/es/DirectionalExpandArrowIcon-cf8fd7a8.js +1 -1
  183. package/es/DragHandle-9514fcdc.js +1 -1
  184. package/es/DrawerPopupVariants.styles.css +5 -5
  185. package/es/DrawerPopupVariants.styles2.css +5 -5
  186. package/es/{Dropdown-717319bb.js → Dropdown-2a328b40.js} +5 -5
  187. package/es/{Dropdown-717319bb.js.map → Dropdown-2a328b40.js.map} +1 -1
  188. package/es/{EnvironmentProvider-f543a463.js → EnvironmentProvider-6846a7ff.js} +3 -3
  189. package/es/{EnvironmentProvider-f543a463.js.map → EnvironmentProvider-6846a7ff.js.map} +1 -1
  190. package/es/FilePicker-d8a0ad3a.js +2 -2
  191. package/es/{Flex-24628925.js → Flex-5ff5aa5e.js} +2 -2
  192. package/es/{Flex-24628925.js.map → Flex-5ff5aa5e.js.map} +1 -1
  193. package/es/{Floating-9703160e.js → Floating-5b269acc.js} +4 -4
  194. package/es/{Floating-9703160e.js.map → Floating-5b269acc.js.map} +1 -1
  195. package/es/FormLayout-ecd0259b.js +1 -1
  196. package/es/Gantt-b21af627.js +9 -9
  197. package/es/{Grid-cfeac922.js → Grid-5d8f712b.js} +2 -2
  198. package/es/{Grid-cfeac922.js.map → Grid-5d8f712b.js.map} +1 -1
  199. package/es/{Gridlines-428bf909.js → Gridlines-4b7301e7.js} +2 -2
  200. package/es/{Gridlines-428bf909.js.map → Gridlines-4b7301e7.js.map} +1 -1
  201. package/es/GroupLoadingIndicator-9c995e99.js +1 -1
  202. package/es/{HighlightText-180e29f6.js → HighlightText-39781e79.js} +2 -2
  203. package/es/{HighlightText-180e29f6.js.map → HighlightText-39781e79.js.map} +1 -1
  204. package/es/Icon-90c3a630.js +2 -2
  205. package/es/IconButton-37310d21.js +2 -2
  206. package/es/IconMenuButton-9fe6cbf9.js +4 -4
  207. package/es/IconSwitchButton-61cabbfe.js +2 -2
  208. package/es/IconToggleButton-f57e5484.js +2 -2
  209. package/es/{IconUserAssistance-c226cb4f.js → IconUserAssistance-744d71a4.js} +3 -3
  210. package/es/{IconUserAssistance-c226cb4f.js.map → IconUserAssistance-744d71a4.js.map} +1 -1
  211. package/es/Indexer-a671092c.js +4 -4
  212. package/es/InlineHelpSource-b43def76.js +1 -1
  213. package/es/InlineUserAssistance-bb690d93.js +5 -5
  214. package/es/InputDateMask-7386adfe.js +7 -7
  215. package/es/InputDatePicker-aa02a34c.js +8 -8
  216. package/es/InputPassword-1f1f80b3.js +4 -4
  217. package/es/InputText-5fb896e7.js +6 -6
  218. package/es/Label-6674b3f2.js +5 -5
  219. package/es/LabelValueLayout-23b74176.js +1 -1
  220. package/es/LabelledLinkVariants.styles.css +3 -3
  221. package/es/LabelledLinkVariants.styles2.css +3 -3
  222. package/es/{Layer-9b06412e.js → Layer-5d259d3a.js} +3 -3
  223. package/es/{Layer-9b06412e.js.map → Layer-5d259d3a.js.map} +1 -1
  224. package/es/{LayerHost-45f545d7.js → LayerHost-aaed41a1.js} +2 -2
  225. package/es/{LayerHost-45f545d7.js.map → LayerHost-aaed41a1.js.map} +1 -1
  226. package/es/{LayerManager-625d2503.js → LayerManager-87beee1e.js} +2 -2
  227. package/es/{LayerManager-625d2503.js.map → LayerManager-87beee1e.js.map} +1 -1
  228. package/es/Legend-98a79c12.js +3 -3
  229. package/es/{LineAreaChart-413e0043.js → LineAreaChart-35327196.js} +3 -3
  230. package/es/{LineAreaChart-413e0043.js.map → LineAreaChart-35327196.js.map} +1 -1
  231. package/es/Link-bfa35319.js +1 -1
  232. package/es/List-9026206d.js +5 -5
  233. package/es/{ListItemLayout-695ec1a5.js → ListItemLayout-961c8443.js} +2 -2
  234. package/es/{ListItemLayout-695ec1a5.js.map → ListItemLayout-961c8443.js.map} +1 -1
  235. package/es/ListView-c508c3a4.js +3 -3
  236. package/es/{LiveRegion-81216fe6.js → LiveRegion-4646cd7d.js} +2 -2
  237. package/es/{LiveRegion-81216fe6.js.map → LiveRegion-4646cd7d.js.map} +1 -1
  238. package/es/MaxLengthCounter-cead2dac.js +25 -0
  239. package/es/MaxLengthCounter-cead2dac.js.map +1 -0
  240. package/es/{MaxLengthLiveRegion-cd15b075.js → MaxLengthLiveRegion-1278e638.js} +3 -3
  241. package/es/{MaxLengthLiveRegion-cd15b075.js.map → MaxLengthLiveRegion-1278e638.js.map} +1 -1
  242. package/es/{Menu-c7ab8412.js → Menu-b0c28cfd.js} +8 -8
  243. package/es/{Menu-c7ab8412.js.map → Menu-b0c28cfd.js.map} +1 -1
  244. package/es/MenuButton-39563941.js +3 -3
  245. package/es/MenuItem-a8f9c954.js +1 -1
  246. package/es/Message-be36b84a.js +2 -2
  247. package/es/MessageBannerVariants.styles.css +2 -2
  248. package/es/MessageBannerVariants.styles2.css +2 -2
  249. package/es/{MessageLayer-0946d6b7.js → MessageLayer-322485df.js} +6 -6
  250. package/es/{MessageLayer-0946d6b7.js.map → MessageLayer-322485df.js.map} +1 -1
  251. package/es/MessageToast-2fa3c9d4.js +8 -8
  252. package/es/MessagesManager-0d60fea1.js +3 -3
  253. package/es/MeterBar-bdd7f9da.js +4 -4
  254. package/es/MeterCircle-fd10f18b.js +4 -4
  255. package/es/{Modal-6b11d8cb.js → Modal-986872f3.js} +3 -3
  256. package/es/{Modal-6b11d8cb.js.map → Modal-986872f3.js.map} +1 -1
  257. package/es/{MonthView-cc017afe.js → MonthView-99cc26ac.js} +4 -4
  258. package/es/{MonthView-cc017afe.js.map → MonthView-99cc26ac.js.map} +1 -1
  259. package/es/NavigationListItem-ea899fab.js +5 -5
  260. package/es/NumberInputText-21ded33a.js +6 -6
  261. package/es/OverflowTabBarItem-8f35961d.js +3 -3
  262. package/es/PRIVATE_BaseCardView/themes/redwood/BaseCardViewBaseTheme.css.js +1 -1
  263. package/es/PRIVATE_BaseCardView/themes/stable/BaseCardViewBaseTheme.css.js +1 -1
  264. package/es/PRIVATE_BaseCardView.js +21 -21
  265. package/es/PRIVATE_Chart.js +29 -29
  266. package/es/PRIVATE_CheckboxControl.js +24 -24
  267. package/es/PRIVATE_CheckboxRadioField.js +24 -24
  268. package/es/PRIVATE_ClearIcon.js +16 -16
  269. package/es/PRIVATE_DatePickerHeader.js +18 -18
  270. package/es/PRIVATE_DatePickerLayout.js +4 -4
  271. package/es/PRIVATE_EmbeddedIconButton.js +3 -3
  272. package/es/PRIVATE_FormControls.js +19 -19
  273. package/es/PRIVATE_IconSwitchButton.js +14 -14
  274. package/es/PRIVATE_Icons/CheckboxMixed.js +14 -14
  275. package/es/PRIVATE_Icons/CheckboxOff.js +14 -14
  276. package/es/PRIVATE_Icons/CheckboxOn.js +14 -14
  277. package/es/PRIVATE_Icons/RadiobuttonOff.js +14 -14
  278. package/es/PRIVATE_Icons/RadiobuttonOn.js +14 -14
  279. package/es/PRIVATE_Icons/WarningS.js +14 -14
  280. package/es/PRIVATE_List.js +19 -19
  281. package/es/PRIVATE_Message.js +18 -18
  282. package/es/PRIVATE_MessageLayer.js +11 -11
  283. package/es/PRIVATE_MonthView.js +7 -7
  284. package/es/PRIVATE_MonthYearGridView.js +7 -7
  285. package/es/PRIVATE_PlotArea.js +4 -4
  286. package/es/PRIVATE_RevealToggleIcon.js +15 -15
  287. package/es/PRIVATE_SelectCommon.js +28 -28
  288. package/es/PRIVATE_StyledCheckbox.js +15 -15
  289. package/es/PRIVATE_Table/themes/redwood/TableBaseTheme.css.js +1 -1
  290. package/es/PRIVATE_Table/themes/redwood/TableTheme.js +1 -1
  291. package/es/PRIVATE_Table/themes/stable/TableBaseTheme.css.js +1 -1
  292. package/es/PRIVATE_Table.js +18 -18
  293. package/es/PRIVATE_ThemedIcons/CalendarIcon.js +14 -14
  294. package/es/PRIVATE_ThemedIcons/ChartMarqueeSelectIcon.js +14 -14
  295. package/es/PRIVATE_ThemedIcons/ChartPanIcon.js +14 -14
  296. package/es/PRIVATE_ThemedIcons/ChartZoomIcon.js +14 -14
  297. package/es/PRIVATE_ThemedIcons/CheckIcon.js +14 -14
  298. package/es/PRIVATE_ThemedIcons/CheckboxMixedIcon.js +14 -14
  299. package/es/PRIVATE_ThemedIcons/CheckboxOffIcon.js +14 -14
  300. package/es/PRIVATE_ThemedIcons/CheckboxOnIcon.js +14 -14
  301. package/es/PRIVATE_ThemedIcons/CloseIcon.js +14 -14
  302. package/es/PRIVATE_ThemedIcons/CollapseIcon.js +15 -15
  303. package/es/PRIVATE_ThemedIcons/CollapseUpIcon.js +14 -14
  304. package/es/PRIVATE_ThemedIcons/DecrementIcon.js +14 -14
  305. package/es/PRIVATE_ThemedIcons/DeleteIcon.js +14 -14
  306. package/es/PRIVATE_ThemedIcons/DirectionalCollapseArrowIcon.js +15 -15
  307. package/es/PRIVATE_ThemedIcons/DirectionalExpandArrowIcon.js +15 -15
  308. package/es/PRIVATE_ThemedIcons/DropdownArrowIcon.js +14 -14
  309. package/es/PRIVATE_ThemedIcons/ExpandIcon.js +14 -14
  310. package/es/PRIVATE_ThemedIcons/HelpIcon.js +14 -14
  311. package/es/PRIVATE_ThemedIcons/IncrementIcon.js +14 -14
  312. package/es/PRIVATE_ThemedIcons/MenuButtonDropdownIcon.js +14 -14
  313. package/es/PRIVATE_ThemedIcons/MessageConfirmationIcon.js +14 -14
  314. package/es/PRIVATE_ThemedIcons/MessageErrorIcon.js +14 -14
  315. package/es/PRIVATE_ThemedIcons/MessageInfoIcon.js +14 -14
  316. package/es/PRIVATE_ThemedIcons/MessageWarningIcon.js +14 -14
  317. package/es/PRIVATE_ThemedIcons/MinusIcon.js +14 -14
  318. package/es/PRIVATE_ThemedIcons/NavDownIcon.js +14 -14
  319. package/es/PRIVATE_ThemedIcons/PlusIcon.js +14 -14
  320. package/es/PRIVATE_ThemedIcons/RadioOffIcon.js +14 -14
  321. package/es/PRIVATE_ThemedIcons/RadioOnIcon.js +14 -14
  322. package/es/PRIVATE_ThemedIcons/SortAscendingIcon.js +14 -14
  323. package/es/PRIVATE_ThemedIcons/SortDefaultIcon.js +14 -14
  324. package/es/PRIVATE_ThemedIcons/SortDescendingIcon.js +14 -14
  325. package/es/PRIVATE_ThemedIcons/ViewHideIcon.js +14 -14
  326. package/es/PRIVATE_ThemedIcons/ViewIcon.js +14 -14
  327. package/es/PRIVATE_TimeComponent.js +17 -17
  328. package/es/PRIVATE_VisTabularDatatip.js +4 -4
  329. package/es/PictoChart-20c9a0c2.js +6 -6
  330. package/es/{PieChart-f349498b.js → PieChart-e41e3463.js} +5 -5
  331. package/es/{PieChart-f349498b.js.map → PieChart-e41e3463.js.map} +1 -1
  332. package/es/{Popup-8889a781.js → Popup-6288438d.js} +9 -9
  333. package/es/{Popup-8889a781.js.map → Popup-6288438d.js.map} +1 -1
  334. package/es/{ProgressBar-afafe39a.js → ProgressBar-ed0c5ba0.js} +3 -3
  335. package/es/{ProgressBar-afafe39a.js.map → ProgressBar-ed0c5ba0.js.map} +1 -1
  336. package/es/{ProgressCircle-fa5866a3.js → ProgressCircle-95a70910.js} +2 -2
  337. package/es/{ProgressCircle-fa5866a3.js.map → ProgressCircle-95a70910.js.map} +1 -1
  338. package/es/RadioItem-e5b1f50b.js +6 -6
  339. package/es/RatingGauge-4d8a68df.js +7 -7
  340. package/es/ReadonlyTextFieldInput-4392c7aa.js +1 -1
  341. package/es/RemovableNavigationListItem-4c86bec8.js +1 -1
  342. package/es/RemovableTabBarItem-217d4a0b.js +2 -2
  343. package/es/ReorderableTabBar-84640a66.js +2 -2
  344. package/es/RevealToggleIcon-9236963e.js +1 -1
  345. package/es/SectionalLegend-6ffb4255.js +4 -4
  346. package/es/{SectionedContent-815e377a.js → SectionedContent-13d72f4b.js} +5 -5
  347. package/es/{SectionedContent-815e377a.js.map → SectionedContent-13d72f4b.js.map} +1 -1
  348. package/es/SelectMultiple-fd3ea6f8.js +8 -8
  349. package/es/SelectSingle-8a8d1f5e.js +7 -7
  350. package/es/{SelectionCard-79044c5f.js → SelectionCard-8496e467.js} +2 -2
  351. package/es/{SelectionCard-79044c5f.js.map → SelectionCard-8496e467.js.map} +1 -1
  352. package/es/Selector-e56a73a8.js +1 -1
  353. package/es/SelectorAll-6f080f88.js +5 -5
  354. package/es/{Sheet-e4121f4a.js → Sheet-8914df23.js} +3 -3
  355. package/es/{Sheet-e4121f4a.js.map → Sheet-8914df23.js.map} +1 -1
  356. package/es/SplitMenuButton-79bdfe96.js +3 -3
  357. package/es/StyledTextField-c79f5438.js +3 -3
  358. package/es/Submenu-8b3fa593.js +1 -1
  359. package/es/TabBar-e39e8dbd.js +6 -6
  360. package/es/TabBarItem-c681fa07.js +3 -3
  361. package/es/TabBarLayout-a0d89ec4.js +1 -1
  362. package/es/TabBarMixed-3658d3d2.js +6 -6
  363. package/es/{TabBarMixedSeparator-8ab78880.js → TabBarMixedSeparator-da2254c9.js} +2 -2
  364. package/es/{TabBarMixedSeparator-8ab78880.js.map → TabBarMixedSeparator-da2254c9.js.map} +1 -1
  365. package/es/Table-e3ef68ad.js +3 -3
  366. package/es/TagCloud-78991c29.js +9 -9
  367. package/es/{TextArea-979496a0.js → TextArea-d97aac1f.js} +13 -30
  368. package/es/TextArea-d97aac1f.js.map +1 -0
  369. package/es/{TextAreaAutosize-b73aaa2f.js → TextAreaAutosize-68a4786d.js} +7 -7
  370. package/es/{TextAreaAutosize-b73aaa2f.js.map → TextAreaAutosize-68a4786d.js.map} +1 -1
  371. package/es/TextField-323fe0e9.js +3 -3
  372. package/es/TextFieldInput-3c39cb7b.js +1 -1
  373. package/es/Theme-redwood/theme.css +595 -614
  374. package/es/Theme-stable/theme.css +421 -402
  375. package/es/TimeComponentCanvas2D-c2ab38ba.js +4 -4
  376. package/es/Toolbar-f0e57a9d.js +1 -1
  377. package/es/TruncatingBadge-084c6682.js +2 -2
  378. package/es/TruncatingText-780cbb19.js +2 -2
  379. package/es/UNSAFE_ActionCard.js +2 -2
  380. package/es/UNSAFE_BarChart/__test__/BarChart.spec.js +29 -29
  381. package/es/UNSAFE_BarChart.js +29 -29
  382. package/es/UNSAFE_BaseButton.js +3 -3
  383. package/es/UNSAFE_Button.js +3 -3
  384. package/es/UNSAFE_ButtonLayout/tests/ButtonLayout.spec.js +18 -18
  385. package/es/UNSAFE_ButtonSet.js +4 -4
  386. package/es/UNSAFE_ButtonSetButton.js +3 -3
  387. package/es/UNSAFE_ButtonSetIconButton.js +14 -14
  388. package/es/UNSAFE_ButtonSetItem.js +14 -14
  389. package/es/UNSAFE_ButtonSetMultiple.js +4 -4
  390. package/es/UNSAFE_ButtonSetSingle.js +4 -4
  391. package/es/UNSAFE_CardFlexView.js +21 -21
  392. package/es/UNSAFE_CardGridView.js +21 -21
  393. package/es/UNSAFE_Center.js +5 -5
  394. package/es/UNSAFE_ChartWithLegend.js +4 -4
  395. package/es/UNSAFE_Checkbox/themes/redwood/CheckboxIconTheme.js +1 -1
  396. package/es/UNSAFE_Checkbox/themes/redwood/CheckboxIconVariants.css.js +1 -1
  397. package/es/UNSAFE_Checkbox/themes/redwood/CheckboxTheme.js +1 -1
  398. package/es/UNSAFE_Checkbox/themes/redwood/CheckboxVariants.css.js +1 -1
  399. package/es/UNSAFE_Checkbox/themes/stable/CheckboxIconTheme.js +1 -1
  400. package/es/UNSAFE_Checkbox/themes/stable/CheckboxIconVariants.css.js +1 -1
  401. package/es/UNSAFE_Checkbox/themes/stable/CheckboxTheme.js +1 -1
  402. package/es/UNSAFE_Checkbox/themes/stable/CheckboxVariants.css.js +1 -1
  403. package/es/UNSAFE_Checkbox.js +24 -24
  404. package/es/UNSAFE_CheckboxItem.js +25 -25
  405. package/es/UNSAFE_CheckboxSet.js +23 -23
  406. package/es/UNSAFE_Chip.js +2 -2
  407. package/es/UNSAFE_Collapsible/themes/redwood/CollapsibleTheme.js +1 -1
  408. package/es/UNSAFE_Collapsible/themes/redwood/CollapsibleVariants.css.js +1 -1
  409. package/es/UNSAFE_Collapsible/themes/stable/CollapsibleTheme.js +1 -1
  410. package/es/UNSAFE_Collapsible/themes/stable/CollapsibleVariants.css.js +1 -1
  411. package/es/UNSAFE_Collapsible.js +17 -17
  412. package/es/UNSAFE_ComponentMessage.js +18 -18
  413. package/es/UNSAFE_ConveyorBelt.js +14 -14
  414. package/es/UNSAFE_DatePicker.js +23 -23
  415. package/es/UNSAFE_Diagram.js +15 -15
  416. package/es/UNSAFE_Dialog.js +9 -9
  417. package/es/UNSAFE_DragHandle.js +15 -15
  418. package/es/UNSAFE_DrawerLayout.js +11 -11
  419. package/es/UNSAFE_DrawerPopup/themes/redwood/DrawerPopupTheme.js +1 -1
  420. package/es/UNSAFE_DrawerPopup/themes/redwood/DrawerPopupVariants.css.js +1 -1
  421. package/es/UNSAFE_DrawerPopup/themes/stable/DrawerPopupTheme.js +1 -1
  422. package/es/UNSAFE_DrawerPopup/themes/stable/DrawerPopupVariants.css.js +1 -1
  423. package/es/UNSAFE_DrawerPopup.js +11 -11
  424. package/es/UNSAFE_Dropdown.js +12 -12
  425. package/es/UNSAFE_Environment.js +4 -4
  426. package/es/UNSAFE_ExpandableList.js +22 -22
  427. package/es/UNSAFE_FilePicker.js +4 -4
  428. package/es/UNSAFE_Flex.js +4 -4
  429. package/es/UNSAFE_Floating.js +10 -10
  430. package/es/UNSAFE_FormLayout.js +2 -2
  431. package/es/UNSAFE_Gantt.js +21 -21
  432. package/es/UNSAFE_Grid.js +4 -4
  433. package/es/UNSAFE_HighlightText.js +4 -4
  434. package/es/UNSAFE_Icon.js +14 -14
  435. package/es/UNSAFE_IconButton.js +14 -14
  436. package/es/UNSAFE_IconMenuButton.js +18 -18
  437. package/es/UNSAFE_IconToggleButton.js +14 -14
  438. package/es/UNSAFE_Indexer.js +6 -6
  439. package/es/UNSAFE_InputDateMask.js +24 -24
  440. package/es/UNSAFE_InputDatePicker.js +33 -33
  441. package/es/UNSAFE_InputPassword.js +23 -23
  442. package/es/UNSAFE_InputSensitiveText.js +25 -25
  443. package/es/UNSAFE_InputText.js +26 -26
  444. package/es/UNSAFE_Label.js +22 -22
  445. package/es/UNSAFE_LabelValueLayout.js +5 -5
  446. package/es/UNSAFE_LabelledLink/themes/redwood/LabelledLinkTheme.js +1 -1
  447. package/es/UNSAFE_LabelledLink/themes/redwood/LabelledLinkVariants.css.js +1 -1
  448. package/es/UNSAFE_LabelledLink/themes/stable/LabelledLinkTheme.js +1 -1
  449. package/es/UNSAFE_LabelledLink/themes/stable/LabelledLinkVariants.css.js +1 -1
  450. package/es/UNSAFE_LabelledLink.js +26 -26
  451. package/es/UNSAFE_Layer.js +7 -7
  452. package/es/UNSAFE_Legend.js +22 -22
  453. package/es/UNSAFE_LineAreaChart/__test__/LineChart.spec.js +29 -29
  454. package/es/UNSAFE_LineAreaChart.js +30 -30
  455. package/es/UNSAFE_Link.js +2 -2
  456. package/es/UNSAFE_ListItemLayout.js +5 -5
  457. package/es/UNSAFE_ListView.js +25 -25
  458. package/es/UNSAFE_LiveRegion.js +4 -4
  459. package/es/UNSAFE_Menu.js +20 -20
  460. package/es/UNSAFE_MenuButton.js +18 -18
  461. package/es/UNSAFE_MessageBanner/themes/redwood/MessageBannerTheme.js +1 -1
  462. package/es/UNSAFE_MessageBanner/themes/redwood/MessageBannerVariants.css.js +1 -1
  463. package/es/UNSAFE_MessageBanner/themes/stable/MessageBannerTheme.js +1 -1
  464. package/es/UNSAFE_MessageBanner/themes/stable/MessageBannerVariants.css.js +1 -1
  465. package/es/UNSAFE_MessageBanner.js +18 -18
  466. package/es/UNSAFE_MessageToast.js +21 -21
  467. package/es/UNSAFE_MeterBar.js +14 -14
  468. package/es/UNSAFE_MeterCircle.js +14 -14
  469. package/es/UNSAFE_Modal.js +7 -7
  470. package/es/UNSAFE_NavigationList.js +18 -18
  471. package/es/UNSAFE_NavigationListCommon.js +16 -16
  472. package/es/UNSAFE_NumberInputText.js +25 -25
  473. package/es/UNSAFE_OverflowTabBar.js +23 -23
  474. package/es/UNSAFE_PictoChart.js +13 -13
  475. package/es/UNSAFE_PieChart/__test__/PieChart.spec.js +14 -14
  476. package/es/UNSAFE_PieChart.js +14 -14
  477. package/es/UNSAFE_Popup.js +15 -15
  478. package/es/UNSAFE_ProgressBar.js +5 -5
  479. package/es/UNSAFE_ProgressCircle.js +4 -4
  480. package/es/UNSAFE_RadioItem.js +22 -22
  481. package/es/UNSAFE_RadioSet.js +23 -23
  482. package/es/UNSAFE_RatingGauge.js +15 -15
  483. package/es/UNSAFE_ReorderableTabBar.js +21 -21
  484. package/es/UNSAFE_SectionalLegend.js +23 -23
  485. package/es/UNSAFE_SelectMultiple.js +32 -32
  486. package/es/UNSAFE_SelectSingle.js +32 -32
  487. package/es/UNSAFE_SelectionCard.js +4 -4
  488. package/es/UNSAFE_Selector.js +15 -15
  489. package/es/UNSAFE_SelectorAll.js +18 -18
  490. package/es/UNSAFE_Sheet/__test__/Sheet.spec.js +13 -13
  491. package/es/UNSAFE_Sheet.js +10 -10
  492. package/es/UNSAFE_SplitMenuButton.js +18 -18
  493. package/es/UNSAFE_TabBar.js +24 -24
  494. package/es/UNSAFE_TabBarCommon.js +23 -23
  495. package/es/UNSAFE_TabBarMixed.js +27 -27
  496. package/es/UNSAFE_TableView.js +18 -18
  497. package/es/UNSAFE_TagCloud.js +22 -22
  498. package/es/UNSAFE_TextArea.js +28 -27
  499. package/es/UNSAFE_TextArea.js.map +1 -1
  500. package/es/UNSAFE_TextAreaAutosize.js +27 -27
  501. package/es/UNSAFE_TextField.js +8 -8
  502. package/es/UNSAFE_ToggleButton.js +3 -3
  503. package/es/UNSAFE_Toolbar/tests/Toolbar.spec.js +20 -20
  504. package/es/UNSAFE_Toolbar.js +4 -4
  505. package/es/UNSAFE_Train.js +15 -15
  506. package/es/UNSAFE_TruncatingBadge.js +15 -15
  507. package/es/UNSAFE_TruncatingText.js +15 -15
  508. package/es/UNSAFE_UserAssistance.js +23 -23
  509. package/es/UNSAFE_View.js +7 -7
  510. package/es/UNSAFE_VirtualizedListView.js +19 -19
  511. package/es/UNSAFE_VisProgressiveLoader/__test__/VisProgressiveLoader.spec.js +8 -8
  512. package/es/UNSAFE_VisProgressiveLoader.js +6 -6
  513. package/es/UNSAFE_VisStatusMessage.js +6 -6
  514. package/es/UNSAFE_WindowOverlay.js +4 -4
  515. package/es/{View-6013acac.js → View-4dc6ce42.js} +5 -5
  516. package/es/{View-6013acac.js.map → View-4dc6ce42.js.map} +1 -1
  517. package/es/{VisNoData-8593beaa.js → VisNoData-c69e8f5e.js} +3 -3
  518. package/es/{VisNoData-8593beaa.js.map → VisNoData-c69e8f5e.js.map} +1 -1
  519. package/es/{VisProgressiveLoader-0d9a0dd0.js → VisProgressiveLoader-cc1ab7cc.js} +3 -3
  520. package/es/{VisProgressiveLoader-0d9a0dd0.js.map → VisProgressiveLoader-cc1ab7cc.js.map} +1 -1
  521. package/es/{VisTabularDatatip-1f16ca1f.js → VisTabularDatatip-418525b0.js} +2 -2
  522. package/es/{VisTabularDatatip-1f16ca1f.js.map → VisTabularDatatip-418525b0.js.map} +1 -1
  523. package/es/{WindowOverlay-e14f8324.js → WindowOverlay-88b63ede.js} +2 -2
  524. package/es/{WindowOverlay-e14f8324.js.map → WindowOverlay-88b63ede.js.map} +1 -1
  525. package/es/{YearsGridView-165e5eec.js → YearsGridView-76892288.js} +4 -4
  526. package/es/{YearsGridView-165e5eec.js.map → YearsGridView-76892288.js.map} +1 -1
  527. package/es/hoc/PRIVATE_withDirectionIcon.js +4 -4
  528. package/es/hoc/PRIVATE_withThemeIcon.js +3 -3
  529. package/es/hoc/UNSAFE_withThemeProps.js +3 -3
  530. package/es/hooks/PRIVATE_useChartContextMenu.js +18 -18
  531. package/es/hooks/PRIVATE_useChartDatatip.js +13 -13
  532. package/es/hooks/PRIVATE_useChartEvents.js +17 -17
  533. package/es/hooks/PRIVATE_useChartMarquee.js +16 -16
  534. package/es/hooks/PRIVATE_useCssVars.js +7 -7
  535. package/es/hooks/PRIVATE_useCurrentKey.js +4 -4
  536. package/es/hooks/PRIVATE_useDatatip.js +11 -11
  537. package/es/hooks/PRIVATE_useFloating.js +4 -4
  538. package/es/hooks/PRIVATE_useReorderable.js +4 -4
  539. package/es/hooks/PRIVATE_useRovingTabIndexContainer.js +4 -4
  540. package/es/hooks/PRIVATE_useSelection.js +4 -4
  541. package/es/hooks/PRIVATE_useTabBar.js +5 -5
  542. package/es/hooks/PRIVATE_useVisContextMenu.js +18 -18
  543. package/es/hooks/PRIVATE_useVisEvents.js +4 -4
  544. package/es/hooks/PRIVATE_useVisMeterEvents.js +13 -13
  545. package/es/hooks/PRIVATE_useVisSelection.js +12 -12
  546. package/es/hooks/UNSAFE_useColorScheme.js +3 -3
  547. package/es/hooks/UNSAFE_useCurrentBgColor.js +3 -3
  548. package/es/hooks/UNSAFE_useDensity.js +3 -3
  549. package/es/hooks/UNSAFE_useOutsideClick.js +7 -7
  550. package/es/hooks/UNSAFE_usePrefixSuffix.js +4 -4
  551. package/es/hooks/UNSAFE_useScale.js +3 -3
  552. package/es/hooks/UNSAFE_useTestId.js +3 -3
  553. package/es/hooks/UNSAFE_useTheme.js +3 -3
  554. package/es/hooks/UNSAFE_useThemeInterpolations.js +5 -5
  555. package/es/hooks/UNSAFE_useTooltip.js +15 -15
  556. package/es/hooks/UNSAFE_useTranslationBundle.js +3 -3
  557. package/es/hooks/UNSAFE_useUser.js +3 -3
  558. package/es/{index-5f0f1501.js → index-75f23286.js} +2 -2
  559. package/es/index-75f23286.js.map +1 -0
  560. package/es/listViewSelectionTests-ebf987d2.js +4 -4
  561. package/es/{render-c90e85c7.js → render-8e2a09d1.js} +3 -3
  562. package/es/{render-c90e85c7.js.map → render-8e2a09d1.js.map} +1 -1
  563. package/es/{tabbableUtils-e6193af2.js → tabbableUtils-73a9ba14.js} +3 -3
  564. package/es/{tabbableUtils-e6193af2.js.map → tabbableUtils-73a9ba14.js.map} +1 -1
  565. package/es/{testData-2998863b.js → testData-0aee4d83.js} +3 -3
  566. package/es/{testData-2998863b.js.map → testData-0aee4d83.js.map} +1 -1
  567. package/es/useCellNavigation-006fbce0.js +1 -1
  568. package/es/useChartContextMenu-0014fc73.js +3 -3
  569. package/es/{useChartDatatip-b6b2b00a.js → useChartDatatip-f7bacd9b.js} +4 -4
  570. package/es/{useChartDatatip-b6b2b00a.js.map → useChartDatatip-f7bacd9b.js.map} +1 -1
  571. package/es/useChartMarquee-38dbb5f9.js +1 -1
  572. package/es/{useColorScheme-e1b17324.js → useColorScheme-bf110202.js} +2 -2
  573. package/es/{useColorScheme-e1b17324.js.map → useColorScheme-bf110202.js.map} +1 -1
  574. package/es/useContextMenu-81db2534.js +3 -3
  575. package/es/{useCssVars-64d9b696.js → useCssVars-b3bf30fb.js} +5 -5
  576. package/es/{useCssVars-64d9b696.js.map → useCssVars-b3bf30fb.js.map} +1 -1
  577. package/es/{useCurrentBgColor-d89afadb.js → useCurrentBgColor-b3ebd7be.js} +2 -2
  578. package/es/{useCurrentBgColor-d89afadb.js.map → useCurrentBgColor-b3ebd7be.js.map} +1 -1
  579. package/es/{useCurrentKey-db7d3bb9.js → useCurrentKey-1f99b0f6.js} +2 -2
  580. package/es/{useCurrentKey-db7d3bb9.js.map → useCurrentKey-1f99b0f6.js.map} +1 -1
  581. package/es/{useDatatip-7c661980.js → useDatatip-f9bcaab9.js} +4 -4
  582. package/es/{useDatatip-7c661980.js.map → useDatatip-f9bcaab9.js.map} +1 -1
  583. package/es/{useDensity-60cfa748.js → useDensity-9f6c6bf0.js} +2 -2
  584. package/es/{useDensity-60cfa748.js.map → useDensity-9f6c6bf0.js.map} +1 -1
  585. package/es/{useFloating-c99976f8.js → useFloating-1cca9e4f.js} +2 -2
  586. package/es/{useFloating-c99976f8.js.map → useFloating-1cca9e4f.js.map} +1 -1
  587. package/es/{useKeyboardEvents-102b4feb.js → useKeyboardEvents-11b26017.js} +2 -2
  588. package/es/{useKeyboardEvents-102b4feb.js.map → useKeyboardEvents-11b26017.js.map} +1 -1
  589. package/es/useLegendContextMenu-d88be99d.js +5 -5
  590. package/es/{useMeterDatatip-262c0e39.js → useMeterDatatip-7366880d.js} +3 -3
  591. package/es/{useMeterDatatip-262c0e39.js.map → useMeterDatatip-7366880d.js.map} +1 -1
  592. package/es/{useOutsideClick-eb8324f6.js → useOutsideClick-ab98bfa3.js} +2 -2
  593. package/es/{useOutsideClick-eb8324f6.js.map → useOutsideClick-ab98bfa3.js.map} +1 -1
  594. package/es/{usePopupAnimation-4be04290.js → usePopupAnimation-4969107b.js} +2 -2
  595. package/es/{usePopupAnimation-4be04290.js.map → usePopupAnimation-4969107b.js.map} +1 -1
  596. package/es/{usePrefixSuffix-71a410f4.js → usePrefixSuffix-a14dacb0.js} +2 -2
  597. package/es/{usePrefixSuffix-71a410f4.js.map → usePrefixSuffix-a14dacb0.js.map} +1 -1
  598. package/es/useReorderableItem-25aa1c34.js +2 -2
  599. package/es/{useRovingTabIndexContainer-e7926bd6.js → useRovingTabIndexContainer-91fd85f3.js} +2 -2
  600. package/es/{useRovingTabIndexContainer-e7926bd6.js.map → useRovingTabIndexContainer-91fd85f3.js.map} +1 -1
  601. package/es/{useScale-d64a1a28.js → useScale-42018695.js} +2 -2
  602. package/es/{useScale-d64a1a28.js.map → useScale-42018695.js.map} +1 -1
  603. package/es/useSelectCommon-b6d67057.js +11 -11
  604. package/es/{useSelectDrill-9ce5bccf.js → useSelectDrill-333650bd.js} +3 -3
  605. package/es/{useSelectDrill-9ce5bccf.js.map → useSelectDrill-333650bd.js.map} +1 -1
  606. package/es/{useSelection-c12f7802.js → useSelection-48f572e5.js} +5 -5
  607. package/es/{useSelection-c12f7802.js.map → useSelection-48f572e5.js.map} +1 -1
  608. package/es/{useSelection-ce0f9a43.js → useSelection-a098b3af.js} +2 -2
  609. package/es/{useSelection-ce0f9a43.js.map → useSelection-a098b3af.js.map} +1 -1
  610. package/es/{useTabBar-8af19c50.js → useTabBar-4b318196.js} +2 -2
  611. package/es/{useTabBar-8af19c50.js.map → useTabBar-4b318196.js.map} +1 -1
  612. package/es/{useTestId-adde554c.js → useTestId-f5aed66c.js} +2 -2
  613. package/es/{useTestId-adde554c.js.map → useTestId-f5aed66c.js.map} +1 -1
  614. package/es/{useTheme-1f6035d2.js → useTheme-e7ea1253.js} +2 -2
  615. package/es/{useTheme-1f6035d2.js.map → useTheme-e7ea1253.js.map} +1 -1
  616. package/es/{useThemeInterpolations-9bddc683.js → useThemeInterpolations-66ce2e56.js} +4 -4
  617. package/es/{useThemeInterpolations-9bddc683.js.map → useThemeInterpolations-66ce2e56.js.map} +1 -1
  618. package/es/{useTooltip-9dec25b3.js → useTooltip-30a4a4fc.js} +2 -2
  619. package/es/{useTooltip-9dec25b3.js.map → useTooltip-30a4a4fc.js.map} +1 -1
  620. package/es/{useTooltipControlled-2044f639.js → useTooltipControlled-eafec36e.js} +8 -8
  621. package/es/{useTooltipControlled-2044f639.js.map → useTooltipControlled-eafec36e.js.map} +1 -1
  622. package/es/{useTranslationBundle-cd815e10.js → useTranslationBundle-e8a8c4f3.js} +2 -2
  623. package/es/{useTranslationBundle-cd815e10.js.map → useTranslationBundle-e8a8c4f3.js.map} +1 -1
  624. package/es/{useUser-99920e02.js → useUser-fb09e212.js} +2 -2
  625. package/es/{useUser-99920e02.js.map → useUser-fb09e212.js.map} +1 -1
  626. package/es/{useVisEvents-4cfe354c.js → useVisEvents-e31dcd17.js} +2 -2
  627. package/es/{useVisEvents-4cfe354c.js.map → useVisEvents-e31dcd17.js.map} +1 -1
  628. package/es/utils/PRIVATE_visTestUtils.js +6 -6
  629. package/es/{withDirectionIcon-f8ff778c.js → withDirectionIcon-6eefb71a.js} +2 -2
  630. package/es/{withDirectionIcon-f8ff778c.js.map → withDirectionIcon-6eefb71a.js.map} +1 -1
  631. package/package.json +2 -2
  632. package/amd/CardFlexView-a647550f.js +0 -2
  633. package/amd/CardGridView-06fb67cb.js +0 -2
  634. package/amd/InputDatePicker-da5d8728.js +0 -2
  635. package/amd/List-5958c802.js +0 -2
  636. package/amd/LoadMoreCollection-83413a59.js +0 -2
  637. package/amd/TextArea-2c7af40c.js +0 -2
  638. package/amd/TextArea-2c7af40c.js.map +0 -1
  639. package/amd/TextAreaAutosize-9dc5bffe.js +0 -2
  640. package/amd/VirtualizedListView-ead601c7.js +0 -2
  641. package/cjs/BaseNavigationListItem-175a3f35.js +0 -49
  642. package/cjs/BaseNavigationListItem-175a3f35.js.map +0 -1
  643. package/cjs/NavigationList-5218562e.js.map +0 -1
  644. package/cjs/NavigationListItem-b80c41dc.js +0 -12
  645. package/cjs/NavigationListItem-b80c41dc.js.map +0 -1
  646. package/cjs/useNavigationListItem-74009187.js.map +0 -1
  647. package/es/TextArea-979496a0.js.map +0 -1
  648. package/es/index-5f0f1501.js.map +0 -1
  649. /package/es/PRIVATE_BaseCardView/themes/{redwood → stable}/BaseCardViewBaseTheme.styles.css +0 -0
  650. /package/es/PRIVATE_Table/themes/{redwood → stable}/TableBaseTheme.styles.css +0 -0
@@ -1 +1 @@
1
- {"version":3,"file":"Table-ecf57a09.js","sources":["../../src/PRIVATE_Table/TableColGroup.tsx","../../src/PRIVATE_Table/TableSkeletonRow.tsx","../../src/PRIVATE_Table/TableCell.tsx","../../src/PRIVATE_Table/TableRow.tsx","../../src/PRIVATE_Table/TableNoData.tsx","../../src/PRIVATE_Table/TableBody.tsx","../../src/PRIVATE_Table/TableHeaderCell.tsx","../../src/PRIVATE_Table/TableHeader.tsx","../../src/PRIVATE_Table/TableFooterCell.tsx","../../src/PRIVATE_Table/TableFooter.tsx","../../src/PRIVATE_Table/TableDragIndicator.tsx","../../src/PRIVATE_Table/utils/TableDomUtils.ts","../../src/PRIVATE_Table/utils/TableScrollUtils.ts","../../src/PRIVATE_Table/utils/TableNavigationUtils.ts","../../src/PRIVATE_Table/hooks/useFocusHandling.ts","../../src/PRIVATE_Table/utils/TableActionUtils.ts","../../src/PRIVATE_Table/utils/TableSelectionUtils.ts","../../src/PRIVATE_Table/hooks/useKeyboardHandling.ts","../../src/PRIVATE_Table/utils/TableSizingUtils.ts","../../src/PRIVATE_Table/hooks/usePointerHandling.ts","../../src/PRIVATE_Table/hooks/useScrollHandling.ts","../../src/PRIVATE_Table/hooks/useInteractionManager.ts","../../src/PRIVATE_Table/utils/TableLayoutUtils.ts","../../src/PRIVATE_Table/Table.tsx"],"sourcesContent":["/**\n * @license\n * Copyright (c) %FIRST_YEAR% %CURRENT_YEAR%, Oracle and/or its affiliates.\n * The Universal Permissive License (UPL), Version 1.0\n * as shown at https://oss.oracle.com/licenses/upl/\n * @ignore\n */\n\n/**\n * Props for the TableColGroup Component\n */\nexport type TableColGroupProps = {\n tableId: string;\n columnWidthsArray: (number | undefined)[];\n};\n\n/**\n * The internal component used to render a single colgroup in Table.\n */\nexport function TableColGroup({ tableId, columnWidthsArray }: TableColGroupProps) {\n const getColStyle = (columnWidth?: number) => {\n return columnWidth == null ? '' : `width: ${columnWidth}px;`;\n };\n\n return (\n <colgroup>\n {columnWidthsArray.map((columnWidth?: number) => {\n return <col style={getColStyle(columnWidth)} data-oj-table-col={tableId} />;\n })}\n </colgroup>\n );\n}\n","/**\n * @license\n * Copyright (c) %FIRST_YEAR% %CURRENT_YEAR%, Oracle and/or its affiliates.\n * The Universal Permissive License (UPL), Version 1.0\n * as shown at https://oss.oracle.com/licenses/upl/\n * @ignore\n */\nimport { useState, useEffect } from 'preact/hooks';\nimport { LOADMORE_STYLE_CLASS } from '../PRIVATE_LoadMoreCollection';\nimport { tableSkeletonBarContainerStyles, tableSkeletonCellStyles } from './themes/Table.css';\nimport { classNames } from '../utils/UNSAFE_classNames';\nimport { Skeleton } from '../UNSAFE_Skeleton';\n\ntype SkeletonRowProps = {\n /**\n * Total number of columns to span\n */\n colspan: number;\n /**\n * The preact key value\n */\n preactKey: any;\n /**\n * Allows to specify number of skeletons to be rendered on initial load\n **/\n minimumCount?: number;\n};\n\n/**\n * Allows to specify the time delay for rendering the component\n **/\nconst _timerValue = 50;\n\n/**\n * TableSkeletonRow renders 'minimumCount' number of skeletons\n * of the variant specified from its child element - Skeleton's prop after\n * 'timerValue' ms delay\n **/\nexport function TableSkeletonRow({ colspan, preactKey, minimumCount = 1 }: SkeletonRowProps) {\n const [isVisible, setIsVisible] = useState(false);\n\n useEffect(() => {\n setTimeout(() => {\n setIsVisible(true);\n }, _timerValue);\n }, []);\n\n const cellClasses = classNames([tableSkeletonCellStyles.base]);\n\n return (\n <tr class={LOADMORE_STYLE_CLASS} key={preactKey}>\n {isVisible ? (\n <td class={cellClasses} colSpan={colspan} role=\"presentation\">\n {[...Array(minimumCount)].map((_element) => (\n <div class={tableSkeletonBarContainerStyles.base}>\n <Skeleton height=\"4x\" />\n </div>\n ))}\n </td>\n ) : null}\n </tr>\n );\n}\n","/**\n * @license\n * Copyright (c) %FIRST_YEAR% %CURRENT_YEAR%, Oracle and/or its affiliates.\n * The Universal Permissive License (UPL), Version 1.0\n * as shown at https://oss.oracle.com/licenses/upl/\n * @ignore\n */\nimport { ComponentChildren } from 'preact';\nimport { Text } from '../UNSAFE_Text';\nimport { CurrentRowVariant, TableRendererContext } from '../UNSAFE_TableView';\nimport { classNames } from '../utils/UNSAFE_classNames';\nimport { useId } from '../hooks/UNSAFE_useId';\nimport { TableCellVariantOptions } from './themes/TableCellStyles.css';\nimport { TableCellRedwoodTheme } from './themes/redwood/TableCellTheme';\nimport { useComponentTheme } from '../hooks/UNSAFE_useComponentTheme';\n\n/**\n * Props for the TableCell Component\n */\nexport type TableCellProps<K, D, C> = {\n tableId: string;\n rowData: D;\n columnKey: C;\n columnIndex: number;\n rowKey: K;\n rowIndex: number;\n isFinalRowIndex: boolean;\n isFinalColumnIndex: boolean;\n hasVerticalGridlines: boolean;\n hasHorizontalGridlines: boolean;\n isRowSelected: boolean;\n isPreviousRowSelected: boolean;\n isColumnSelected: boolean;\n isPreviousColumnSelected: boolean;\n isShowFocusRing: boolean;\n isStickyStartEdge: boolean;\n isStickyEndEdge: boolean;\n isRtl: boolean;\n isRowHeader: boolean;\n isRowSelectionEnabled: boolean;\n isRowSingleSelection: boolean;\n applyActiveStyle: boolean;\n applyHoverStyle: boolean;\n applyPseudoHoverStyle: boolean;\n field?: keyof D;\n stickyColumn?: 'start' | 'end' | 'none';\n renderer?: (context: TableRendererContext<K, D, C>) => ComponentChildren;\n selectorRenderer?: () => ComponentChildren;\n variant?: CurrentRowVariant;\n};\n\nfunction _defaultCellRenderer<K, D, C>({ rowData, field }: TableRendererContext<K, D, C>) {\n return field != null ? (\n <Text truncation=\"ellipsis\" variant=\"primary\" size=\"md\">\n {String(rowData[field])}\n </Text>\n ) : null;\n}\n\n/**\n * The internal component used to render a single cell in a TableRow.\n */\nexport function TableCell<K, D, C>({\n tableId,\n rowData,\n field,\n columnKey,\n columnIndex,\n rowKey,\n rowIndex,\n isFinalRowIndex,\n isFinalColumnIndex,\n hasVerticalGridlines,\n hasHorizontalGridlines,\n isRowSelected,\n isPreviousRowSelected,\n isColumnSelected,\n isPreviousColumnSelected,\n isShowFocusRing,\n isRowHeader,\n stickyColumn = 'none',\n renderer = _defaultCellRenderer,\n selectorRenderer,\n isRowSelectionEnabled,\n isRowSingleSelection,\n variant,\n applyActiveStyle,\n applyHoverStyle,\n applyPseudoHoverStyle,\n isStickyStartEdge,\n isStickyEndEdge,\n isRtl\n}: TableCellProps<K, D, C>) {\n const hasRenderer = renderer !== _defaultCellRenderer;\n const { classes: themeClasses } = useComponentTheme<TableCellVariantOptions>(\n TableCellRedwoodTheme,\n {\n defaultRenderer: !hasRenderer ? 'isDefaultRenderer' : 'notDefaultRenderer',\n firstRow: rowIndex === 0 ? 'isFirstRow' : 'notFirstRow',\n lastRow: isFinalRowIndex ? 'isLastRow' : 'notLastRow',\n firstColumn: columnIndex === 0 ? 'isFirstColumn' : 'notFirstColumn',\n lastColumn: isFinalColumnIndex ? 'isLastColumn' : 'notLastColumn',\n borderTopSpacer:\n !(isRowSingleSelection && (isRowSelected || isPreviousRowSelected)) &&\n (!hasHorizontalGridlines || rowIndex === 0)\n ? 'isBorderTopSpacer'\n : 'notBorderTopSpacer',\n borderBottomSpacer:\n isFinalRowIndex && !((isRowSingleSelection && isRowSelected) || hasHorizontalGridlines)\n ? 'isBorderBottomSpacer'\n : 'notBorderBottomSpacer',\n borderStartSpacer:\n !(isPreviousColumnSelected || isColumnSelected) &&\n (!hasVerticalGridlines || columnIndex === 0)\n ? 'isBorderStartSpacer'\n : 'notBorderStartSpacer',\n borderEndSpacer:\n isFinalColumnIndex && !isColumnSelected ? 'isBorderEndSpacer' : 'notBorderEndSpacer',\n verticalGrid: hasVerticalGridlines ? 'isVerticalGrid' : 'notVerticalGrid',\n horizontalGrid: hasHorizontalGridlines ? 'isHorizontalGrid' : 'notHorizontalGrid',\n rowSingleSelection: isRowSingleSelection ? 'isRowSingleSelection' : 'notRowSingleSelection',\n rowSelectable: isRowSelectionEnabled ? 'isRowSelectable' : 'notRowSelectable',\n rowSelected: isRowSelected ? 'isRowSelected' : 'notRowSelected',\n previousRowSelected: isPreviousRowSelected\n ? 'isPreviousRowSelected'\n : 'notPreviousRowSelected',\n columnSelected: isColumnSelected ? 'isColumnSelected' : 'notColumnSelected',\n previousColumnSelected: isPreviousColumnSelected\n ? 'isPreviousColumnSelected'\n : 'notPreviousColumnSelected',\n stickyStartColumn: stickyColumn === 'start' ? 'isStickyStartColumn' : 'notStickyStartColumn',\n stickyEndColumn: stickyColumn === 'end' ? 'isStickyEndColumn' : 'notStickyEndColumn',\n stickyStartEdge: isStickyStartEdge ? 'isStickyStartEdge' : 'notStickyStartEdge',\n stickyEndEdge: isStickyEndEdge ? 'isStickyEndEdge' : 'notStickyEndEdge',\n rowHighlight: variant === 'highlight' ? 'isRowHighlight' : 'notRowHighlight',\n showFocusRing: isShowFocusRing ? 'isShowFocusRing' : 'notShowFocusRing',\n active: applyActiveStyle ? 'isActive' : 'notActive',\n hover: applyHoverStyle ? 'isHover' : 'notHover',\n pseudoHover: applyPseudoHoverStyle ? 'isPseudoHover' : 'notPseudoHover',\n rtl: isRtl ? 'isRtl' : 'notRtl'\n }\n );\n\n const cellClasses = classNames([themeClasses]);\n\n const cellRendererProps = {\n rowData: rowData,\n rowKey: rowKey,\n field: field,\n columnKey: columnKey,\n selector: selectorRenderer\n };\n\n return (\n <td\n aria-colindex={columnIndex + 1}\n class={cellClasses}\n id={useId()}\n tabIndex={-1}\n role={isRowHeader ? 'rowheader' : 'gridcell'}\n data-oj-cell-type={'data'}\n data-oj-column-key={columnKey}\n data-oj-table-focusable={tableId}\n data-oj-table-data-cell={tableId}\n {...(typeof columnKey === 'number' && { 'data-oj-column-key-type': 'number' })}>\n {renderer(cellRendererProps)}\n </td>\n );\n}\n","/**\n * @license\n * Copyright (c) %FIRST_YEAR% %CURRENT_YEAR%, Oracle and/or its affiliates.\n * The Universal Permissive License (UPL), Version 1.0\n * as shown at https://oss.oracle.com/licenses/upl/\n * @ignore\n */\nimport { memo } from 'preact/compat';\nimport { SelectionDetail } from '../UNSAFE_Collection';\nimport { Selector } from '../UNSAFE_Selector';\nimport { CurrentRowVariant, TableSelectionDetail } from '../UNSAFE_TableView';\nimport { classNames } from '../utils/UNSAFE_classNames';\nimport { Keys, containsKey, isSameKey } from '../utils/UNSAFE_keys';\nimport { TableColumn } from './Table';\nimport { TableCell } from './TableCell';\nimport { TableRowVariantOptions } from './themes/TableRowStyles.css';\nimport { TableRowRedwoodTheme } from './themes/redwood/TableRowTheme';\nimport { BundleType } from '../resources/nls/bundle';\nimport { useComponentTheme } from '../hooks/UNSAFE_useComponentTheme';\nimport { useInteractionStyle } from '../hooks/UNSAFE_useInteractionStyle';\nimport { useTranslationBundle } from '../hooks/UNSAFE_useTranslationBundle';\n\n/**\n * Props for the TableRow Component\n */\nexport type TableRowProps<K, D, C> = {\n tableId: string;\n rowKey: K;\n rowData: D;\n rowIndex: number;\n isFinalRow: boolean;\n columnsArray: TableColumn<K, D, C>[];\n rowHeaderColumnKeys: Set<C>;\n hasVerticalGridlines: boolean;\n hasHorizontalGridlines: boolean;\n isSelected: boolean;\n isPreviousSelected: boolean;\n isRowSelectionEnabled: boolean;\n isSingleRowSelectionEnabled: boolean;\n isRtl: boolean;\n selectedRowKeys?: Keys<K>;\n focusRingColumnKey?: C;\n selectedColumnKeys?: Keys<C>;\n variant?: CurrentRowVariant;\n onSelectionChange?: (detail: TableSelectionDetail<K, C>, isExtendableSelection: boolean) => void;\n startStickyEdge?: number;\n endStickyEdge?: number;\n};\n\n/**\n * The internal component used to render a single row in Table.\n */\nfunction TableRow<K, D, C>({\n tableId,\n rowKey,\n rowData,\n rowIndex,\n isFinalRow,\n columnsArray,\n rowHeaderColumnKeys,\n hasVerticalGridlines,\n hasHorizontalGridlines,\n isSelected,\n isPreviousSelected,\n isRowSelectionEnabled,\n isSingleRowSelectionEnabled,\n selectedRowKeys = { all: false, keys: new Set<K>() },\n focusRingColumnKey,\n selectedColumnKeys = { all: false, keys: new Set<C>() },\n variant,\n onSelectionChange,\n startStickyEdge,\n endStickyEdge,\n isRtl\n}: TableRowProps<K, D, C>) {\n const translations = useTranslationBundle<BundleType>('@oracle/oraclejet-preact');\n const { interactionProps, applyActiveStyle, applyHoverStyle, applyPseudoHoverStyle } =\n useInteractionStyle();\n\n const { classes: themeClasses } = useComponentTheme<TableRowVariantOptions>(\n TableRowRedwoodTheme,\n { lastRow: isFinalRow ? 'isLastRow' : 'notLastRow' }\n );\n\n const classes = classNames([themeClasses]);\n\n const accessibleRowName = (rowIndex + 2).toString();\n const handleRowSelectorChange = (detail: SelectionDetail<K>) => {\n if (onSelectionChange != null) {\n onSelectionChange(\n { value: { row: detail.value, column: selectedColumnKeys }, target: detail.target },\n false\n );\n }\n };\n const selectorRenderer =\n isRowSelectionEnabled && !isSingleRowSelectionEnabled\n ? () => {\n // conversion from 0-based index and adding the header row as it is always rendered\n return (\n <Selector\n aria-label={translations.collection_selectRow({ ROW_NAME: accessibleRowName })}\n onChange={handleRowSelectorChange}\n rowKey={rowKey}\n selectedKeys={selectedRowKeys}\n />\n );\n }\n : undefined;\n\n let isPreviousColumnSelected = false;\n return (\n <tr\n aria-rowindex={rowIndex + 1}\n class={classes}\n role={'row'}\n data-oj-key={rowKey}\n data-oj-table-data-row={tableId}\n {...(isRowSelectionEnabled\n ? isSelected\n ? { 'aria-selected': true }\n : { 'aria-selected': false }\n : {})}\n {...(typeof rowKey === 'number' && { 'data-oj-key-type': 'number' })}\n {...(isRowSelectionEnabled && interactionProps)}>\n {columnsArray.map((column: TableColumn<K, D, C>, columnIndex: number) => {\n const columnKey = column.key;\n const isColumnSelected = containsKey(selectedColumnKeys, columnKey);\n const cellProps = {\n tableId: tableId,\n rowData: rowData,\n field: column.value.field,\n stickyColumn: column.value.stickyEdge,\n columnKey: columnKey,\n columnIndex: columnIndex,\n rowKey: rowKey,\n rowIndex: rowIndex,\n isFinalRowIndex: isFinalRow,\n isFinalColumnIndex: columnIndex === columnsArray.length - 1,\n hasVerticalGridlines: hasVerticalGridlines,\n hasHorizontalGridlines: hasHorizontalGridlines,\n isRowSelected: isSelected,\n isPreviousRowSelected: isPreviousSelected,\n isColumnSelected: isColumnSelected,\n isPreviousColumnSelected: isPreviousColumnSelected,\n isShowFocusRing: column.key === focusRingColumnKey,\n isRowHeader: rowHeaderColumnKeys.has(column.key),\n renderer: column.value.renderer,\n selectorRenderer: selectorRenderer,\n isRowSelectionEnabled: isRowSelectionEnabled,\n variant: variant,\n isRowSingleSelection: isSingleRowSelectionEnabled,\n applyActiveStyle: applyActiveStyle,\n applyHoverStyle: applyHoverStyle,\n applyPseudoHoverStyle: applyPseudoHoverStyle,\n isStickyStartEdge: columnIndex === startStickyEdge,\n isStickyEndEdge: columnIndex === endStickyEdge,\n isRtl: isRtl\n };\n isPreviousColumnSelected = isColumnSelected;\n return <TableCell {...cellProps} />;\n })}\n </tr>\n );\n}\n\nconst _areStringSetsEquivalent = (set1?: Set<string>, set2?: Set<string>) => {\n if (set1 == null) {\n return set2 == null;\n }\n if (set2 == null) {\n return false;\n }\n return set1.size === set2.size && [...set1].every((x) => set2.has(x));\n};\n\nconst _areColumnsArraysEquivalent = (\n columnsArray1: TableColumn<string | number, any, string>[],\n columnsArray2: TableColumn<string | number, any, string>[]\n) => {\n if (columnsArray1.length === columnsArray2.length) {\n for (let i = 0; i < columnsArray1.length; i++) {\n if (\n columnsArray1[i].key !== columnsArray2[i].key ||\n columnsArray1[i].value !== columnsArray2[i].value\n ) {\n return false;\n }\n }\n return true;\n }\n return false;\n};\n\nexport const MemoizeTableRow = memo(TableRow, (prev: any, next: any) => {\n if (prev && next) {\n return (\n prev.tableId === next.tableId &&\n prev.rowKey === next.rowKey &&\n prev.rowData === next.rowData &&\n prev.rowIndex === next.rowIndex &&\n prev.isFinalRow === next.isFinalRow &&\n _areColumnsArraysEquivalent(prev.columnsArray, next.columnsArray) &&\n prev.horizontalGridlines === next.horizontalGridlines &&\n prev.verticalGridlines === next.verticalGridlines &&\n _areStringSetsEquivalent(prev.rowHeaderColumnKeys, next.rowHeaderColumnKeys) &&\n prev.isSelected === next.isSelected &&\n prev.isPreviousSelected === next.isPreviousSelected &&\n prev.isRowSelectionEnabled === next.isRowSelectionEnabled &&\n prev.isSingleRowSelectionEnabled === next.isSingleRowSelectionEnabled &&\n (prev.isRowSelectionEnabled && !prev.isSingleRowSelectionEnabled\n ? isSameKey(prev.selectedRowKeys, next.selectedRowKeys)\n : true) &&\n isSameKey(prev.selectedColumnKeys, next.selectedColumnKeys) &&\n prev.focusRingColumnKey === next.focusRingColumnKey &&\n prev.variant === next.variant &&\n prev.onSelectionChange === next.onSelectionChange &&\n prev.startStickyEdge === next.startStickyEdge &&\n prev.endStickyEdge === next.endStickyEdge &&\n prev.isRtl === next.isRtl\n );\n }\n return false;\n});\n","/**\n * @license\n * Copyright (c) %FIRST_YEAR% %CURRENT_YEAR%, Oracle and/or its affiliates.\n * The Universal Permissive License (UPL), Version 1.0\n * as shown at https://oss.oracle.com/licenses/upl/\n * @ignore\n */\nimport { ComponentChildren } from 'preact';\nimport { Text } from '../UNSAFE_Text';\nimport { classNames } from '../utils/UNSAFE_classNames';\nimport { useId } from '../hooks/UNSAFE_useId';\nimport { tableRowStyles } from './themes/TableRowStyles.css';\nimport { TableNoDataVariantOptions } from './themes/TableNoDataStyles.css';\nimport { TableNoDataRedwoodTheme } from './themes/redwood/TableNoDataTheme';\nimport { useComponentTheme } from '../hooks/UNSAFE_useComponentTheme';\nimport { BundleType } from '../resources/nls/bundle';\nimport { useTranslationBundle } from '../hooks/UNSAFE_useTranslationBundle';\n\n/**\n * Props for the TableCell Component\n */\nexport type TableNoDataProps = {\n tableId: string;\n columnsCount: number;\n isShowFocusRing: boolean;\n renderer?: () => ComponentChildren;\n};\n\n/**\n * The internal component used to render a single cell in a TableRow.\n */\nexport function TableNoData({\n tableId,\n columnsCount,\n isShowFocusRing,\n renderer\n}: TableNoDataProps) {\n const translations = useTranslationBundle<BundleType>('@oracle/oraclejet-preact');\n\n const rowClasses = classNames([tableRowStyles.base]);\n\n const { classes: themeClasses } = useComponentTheme<TableNoDataVariantOptions>(\n TableNoDataRedwoodTheme,\n {\n defaultRenderer: renderer == null ? 'isDefaultRenderer' : 'notDefaultRenderer',\n showFocusRing: isShowFocusRing ? 'isShowFocusRing' : 'notShowFocusRing'\n }\n );\n\n const cellClasses = classNames([themeClasses]);\n\n function defaultContentRenderer() {\n return (\n <Text truncation=\"ellipsis\" variant=\"primary\" size=\"md\">\n {translations.collection_noData()}\n </Text>\n );\n }\n\n const contentRenderer = renderer != null ? renderer : defaultContentRenderer;\n\n return (\n <tr aria-rowindex={2} class={rowClasses} role={'row'}>\n <td\n aria-colindex={1}\n class={cellClasses}\n id={useId()}\n tabIndex={-1}\n role={'gridcell'}\n colSpan={columnsCount}\n data-oj-cell-type={'noData'}\n data-oj-table-focusable={tableId}\n data-oj-table-nodata-cell={tableId}>\n {contentRenderer()}\n </td>\n </tr>\n );\n}\n","/**\n * @license\n * Copyright (c) %FIRST_YEAR% %CURRENT_YEAR%, Oracle and/or its affiliates.\n * The Universal Permissive License (UPL), Version 1.0\n * as shown at https://oss.oracle.com/licenses/upl/\n * @ignore\n */\nimport { useCallback, useRef } from 'preact/hooks';\nimport { LoadMoreCollection } from '../PRIVATE_LoadMoreCollection';\nimport { TableColumn } from './Table';\nimport { TableSkeletonRow } from './TableSkeletonRow';\nimport { MemoizeTableRow } from './TableRow';\nimport { ItemContext } from '../UNSAFE_Collection';\nimport {\n Cell,\n CurrentRowVariant,\n TableSelectionDetail,\n TableRowContext\n} from '../UNSAFE_TableView';\nimport { classNames } from '../utils/UNSAFE_classNames';\nimport { collectionStyles } from './themes/Table.css';\nimport { Keys, containsKey } from '../utils/UNSAFE_keys';\nimport { ViewportConfig } from '../hooks/UNSAFE_useViewportIntersect';\nimport { TableNoData } from './TableNoData';\nimport { ComponentChildren } from 'preact';\n\n/**\n * Props for the TableBody Component\n */\nexport type TableBodyProps<K, D, C> = {\n tableId: string;\n getAccessibleRowHeaders: (context: TableRowContext<K, D>) => Set<C>;\n data: D[] | null;\n columnsArray: TableColumn<K, D, C>[];\n hasVerticalGridlines: boolean;\n hasHorizontalGridlines: boolean;\n isShowFocusRing: boolean;\n getRowKey: (data: D) => K;\n hasMore: boolean;\n isRtl: boolean;\n onLoadMore: () => void;\n viewportConfig: ViewportConfig;\n currentCell?: Cell<K, C>;\n currentRowVariant?: CurrentRowVariant;\n selected: { row?: Keys<K>; column?: Keys<C> };\n isRowSelectionEnabled: boolean;\n isSingleRowSelectionEnabled: boolean;\n onSelectionChange?: (detail: TableSelectionDetail<K, C>, isExtendableSelection: boolean) => void;\n noDataRenderer?: () => ComponentChildren;\n startStickyEdge?: number;\n endStickyEdge?: number;\n};\n\n/**\n * The internal component used to render a single cell in a TableRow.\n */\nexport function TableBody<K, D, C>({\n tableId,\n getAccessibleRowHeaders,\n data,\n columnsArray,\n hasVerticalGridlines,\n hasHorizontalGridlines,\n isShowFocusRing,\n getRowKey,\n hasMore,\n onLoadMore,\n viewportConfig,\n currentCell,\n currentRowVariant,\n selected,\n isRowSelectionEnabled,\n isSingleRowSelectionEnabled,\n onSelectionChange,\n noDataRenderer,\n startStickyEdge,\n endStickyEdge,\n isRtl\n}: TableBodyProps<K, D, C>) {\n // track the empty loading state and generate a new key when it changes to avoid\n // issues with skeleton animations becoming out of sync when more are added\n const loadIndicatorKeyRef = useRef<number>(new Date().getTime());\n const isShowEmptyLoadingRef = useRef<boolean>();\n\n const collectionClasses = classNames([collectionStyles.base]);\n\n // returns a TableRowContext based on ItemContext (added key)\n const getRowContext = useCallback(\n (context: ItemContext<{ data: D }>) => {\n return {\n index: context.index,\n data: context.data.data,\n key: getRowKey(context.data.data)\n };\n },\n [getRowKey]\n );\n\n let isPreviousSelected = false;\n const collectionChildrenFunc = (context: ItemContext<{ data: D }>) => {\n const tableRowContext = getRowContext(context);\n const rowKey = tableRowContext.key;\n const containsCurrentCell = currentCell?.rowKey === rowKey;\n const focusRingColumnKey =\n containsCurrentCell && isShowFocusRing ? currentCell.columnKey : undefined;\n const isSelected = containsKey(selected.row, rowKey);\n const rowProps = {\n tableId: tableId,\n columnsArray: columnsArray,\n rowHeaderColumnKeys: getAccessibleRowHeaders(tableRowContext),\n hasVerticalGridlines: hasVerticalGridlines,\n hasHorizontalGridlines: hasHorizontalGridlines,\n isSelected: isSelected,\n isPreviousSelected: isPreviousSelected,\n onSelectionChange: onSelectionChange,\n isRowSelectionEnabled: isRowSelectionEnabled,\n isSingleRowSelectionEnabled: isSingleRowSelectionEnabled,\n variant: containsCurrentCell ? currentRowVariant : 'none',\n focusRingColumnKey: focusRingColumnKey,\n selectedRowKeys: selected.row,\n selectedColumnKeys: selected.column,\n rowIndex: tableRowContext.index,\n rowKey: rowKey,\n rowData: tableRowContext.data,\n isFinalRow: tableRowContext.index === (data != null ? data.length - 1 : -1),\n startStickyEdge: startStickyEdge,\n endStickyEdge: endStickyEdge,\n isRtl: isRtl\n };\n isPreviousSelected = isSelected;\n return <MemoizeTableRow {...rowProps} />;\n };\n\n const getNoDataProps = () => {\n return {\n tableId: tableId,\n columnsCount: columnsArray.length,\n isShowFocusRing: isShowFocusRing && currentCell?.type === 'noData',\n renderer: noDataRenderer\n };\n };\n\n const collectionData =\n data != null\n ? data.map((d: D) => {\n const key = getRowKey(d);\n return { data: d, metadata: key };\n })\n : [];\n\n const isShowEmptyLoading = data != null && data.length === 0 && hasMore;\n const isShowNoData = data == null || (data.length === 0 && !hasMore);\n const prevIsEmpty = isShowEmptyLoadingRef.current;\n if (prevIsEmpty !== isShowEmptyLoading) {\n loadIndicatorKeyRef.current = new Date().getTime();\n }\n isShowEmptyLoadingRef.current = isShowEmptyLoading;\n\n return (\n <tbody class={collectionClasses}>\n {isShowNoData ? (\n <TableNoData {...getNoDataProps()} />\n ) : (\n <LoadMoreCollection\n data={collectionData}\n loadMoreIndicator={\n <TableSkeletonRow\n colspan={columnsArray.length}\n preactKey={loadIndicatorKeyRef.current}\n minimumCount={isShowEmptyLoading ? 25 : 3}\n />\n }\n hasMore={hasMore}\n onLoadMore={onLoadMore}\n viewportConfig={viewportConfig}>\n {collectionChildrenFunc}\n </LoadMoreCollection>\n )}\n </tbody>\n );\n}\n","/**\n * @license\n * Copyright (c) %FIRST_YEAR% %CURRENT_YEAR%, Oracle and/or its affiliates.\n * The Universal Permissive License (UPL), Version 1.0\n * as shown at https://oss.oracle.com/licenses/upl/\n * @ignore\n */\nimport { ComponentChildren } from 'preact';\nimport { useCallback } from 'preact/hooks';\nimport { SelectionDetail } from '../UNSAFE_Collection';\nimport { SelectorAll } from '../UNSAFE_SelectorAll';\nimport { Text } from '../UNSAFE_Text';\nimport {\n TableHeaderRendererContext,\n TableSelectionDetail,\n SortCriterionDetail\n} from '../UNSAFE_TableView';\nimport { classNames } from '../utils/UNSAFE_classNames';\nimport { Keys, isSameKey } from '../utils/UNSAFE_keys';\nimport { useId } from '../hooks/UNSAFE_useId';\nimport { tableHeaderCellTextStyles, tableHeaderSortContainerStyles } from './themes/Table.css';\nimport { TableHeaderCellVariantOptions } from './themes/TableHeaderCellStyles.css';\nimport { TableHeaderCellRedwoodTheme } from './themes/redwood/TableHeaderCellTheme';\nimport { useComponentTheme } from '../hooks/UNSAFE_useComponentTheme';\nimport { BundleType } from '../resources/nls/bundle';\nimport { useInteractionStyle } from '../hooks/UNSAFE_useInteractionStyle';\nimport { useTranslationBundle } from '../hooks/UNSAFE_useTranslationBundle';\nimport { EmbeddedIconButton } from '../PRIVATE_EmbeddedIconButton';\nimport { SortAscendingIcon } from '../PRIVATE_ThemedIcons/SortAscendingIcon';\nimport { SortDefaultIcon } from '../PRIVATE_ThemedIcons/SortDefaultIcon';\nimport { SortDescendingIcon } from '../PRIVATE_ThemedIcons/SortDescendingIcon';\n\n/**\n * Props for the TableHeaderCell Component\n */\nexport type TableHeaderCellProps<K, C> = {\n tableId: string;\n columnKey: C;\n columnIndex: number;\n isFinalColumnIndex: boolean;\n hasVerticalGridlines: boolean;\n isSelected: boolean;\n isPreviousSelected: boolean;\n isColumnSelectable: boolean;\n isRowSelectionEnabled: boolean;\n isShowFocusRing: boolean;\n isStickyStartEdge: boolean;\n isStickyEndEdge: boolean;\n isRtl: boolean;\n headerText?: string;\n selectedColumnKeys?: Keys<C>;\n selectedRowKeys?: Keys<K>;\n stickyColumn?: 'start' | 'end' | 'none';\n renderer?: (context: TableHeaderRendererContext<C>) => ComponentChildren;\n onSelectionChange?: (detail: TableSelectionDetail<K, C>, isExtendableSelection: boolean) => void;\n sortable?: 'enabled' | 'disabled';\n sortDirection?: 'ascending' | 'descending';\n onSortCriterionChange?: (detail: SortCriterionDetail<C>) => void;\n};\n\n/**\n * The internal component used to render a single cell in a TableHeaderRow.\n */\nexport function TableHeaderCell<K, C>({\n tableId,\n columnKey,\n columnIndex,\n isFinalColumnIndex,\n hasVerticalGridlines,\n isSelected,\n isPreviousSelected,\n isColumnSelectable,\n isRowSelectionEnabled,\n selectedColumnKeys = { all: false, keys: new Set<C>() },\n selectedRowKeys = { all: false, keys: new Set<K>() },\n isShowFocusRing,\n headerText,\n stickyColumn = 'none',\n renderer,\n onSelectionChange,\n sortable = 'disabled',\n sortDirection,\n onSortCriterionChange,\n isStickyStartEdge,\n isStickyEndEdge,\n isRtl\n}: TableHeaderCellProps<K, C>) {\n const translations = useTranslationBundle<BundleType>('@oracle/oraclejet-preact');\n\n const { interactionProps, applyActiveStyle, applyHoverStyle, applyPseudoHoverStyle } =\n useInteractionStyle();\n\n const hasRenderer = renderer != null;\n const { classes: themeClasses } = useComponentTheme<TableHeaderCellVariantOptions>(\n TableHeaderCellRedwoodTheme,\n {\n defaultRenderer: !hasRenderer ? 'isDefaultRenderer' : 'notDefaultRenderer',\n firstColumn: columnIndex === 0 ? 'isFirstColumn' : 'notFirstColumn',\n lastColumn: isFinalColumnIndex ? 'isLastColumn' : 'notLastColumn',\n borderStartSpacer:\n !(isPreviousSelected || isSelected) && (!hasVerticalGridlines || columnIndex === 0)\n ? 'isBorderStartSpacer'\n : 'notBorderStartSpacer',\n borderEndSpacer:\n isFinalColumnIndex && !isSelected ? 'isBorderEndSpacer' : 'notBorderEndSpacer',\n verticalGrid: hasVerticalGridlines ? 'isVerticalGrid' : 'notVerticalGrid',\n columnSelectable: isColumnSelectable ? 'isColumnSelectable' : 'notColumnSelectable',\n columnSelected: isSelected ? 'isColumnSelected' : 'notColumnSelected',\n previousColumnSelected: isPreviousSelected\n ? 'isPreviousColumnSelected'\n : 'notPreviousColumnSelected',\n stickyStartColumn: stickyColumn === 'start' ? 'isStickyStartColumn' : 'notStickyStartColumn',\n stickyEndColumn: stickyColumn === 'end' ? 'isStickyEndColumn' : 'notStickyEndColumn',\n stickyStartEdge: isStickyStartEdge ? 'isStickyStartEdge' : 'notStickyStartEdge',\n stickyEndEdge: isStickyEndEdge ? 'isStickyEndEdge' : 'notStickyEndEdge',\n showFocusRing: isShowFocusRing ? 'isShowFocusRing' : 'notShowFocusRing',\n active: applyActiveStyle ? 'isActive' : 'notActive',\n hover: applyHoverStyle ? 'isHover' : 'notHover',\n pseudoHover: applyPseudoHoverStyle ? 'isPseudoHover' : 'notPseudoHover',\n rtl: isRtl ? 'isRtl' : 'notRtl'\n }\n );\n\n const cellClasses = classNames([themeClasses]);\n\n let selectorAllState: 'all' | 'none' | 'partial' | 'partial-all';\n if (isSameKey(selectedRowKeys, { all: true, deletedKeys: new Set<K>() })) {\n selectorAllState = 'all';\n } else if (isSameKey(selectedRowKeys, { all: false, keys: new Set<K>() })) {\n selectorAllState = 'none';\n } else {\n selectorAllState = 'partial';\n }\n\n const handleSelectorChange = (detail: SelectionDetail<K>) => {\n if (onSelectionChange != null) {\n onSelectionChange(\n { value: { row: detail.value, column: selectedColumnKeys }, target: detail.target },\n false\n );\n }\n };\n\n const selectorRenderer = isRowSelectionEnabled\n ? () => (\n <SelectorAll\n aria-label={translations.collection_selectAllRows()}\n onChange={handleSelectorChange}\n selected={selectorAllState}\n />\n )\n : undefined;\n\n const sortIconRenderer =\n sortable === 'enabled' || sortDirection != null\n ? () => (\n <EmbeddedIconButton\n aria-label={\n sortable === 'enabled'\n ? translations.collection_sortEnabled()\n : translations.collection_sortDisabled()\n }\n isDisabled={sortable !== 'enabled'}\n onAction={handleSortGesture}>\n {sortDirection === 'ascending' ? (\n <SortAscendingIcon />\n ) : sortDirection === 'descending' ? (\n <SortDescendingIcon />\n ) : (\n <SortDefaultIcon />\n )}\n </EmbeddedIconButton>\n )\n : undefined;\n\n const headerCellRendererProps = {\n key: columnKey,\n headerText: headerText,\n sortable: sortable,\n sortDirection: sortDirection,\n selector: selectorRenderer,\n sortControl: sortIconRenderer\n };\n\n const handleSortGesture = useCallback(() => {\n if (onSortCriterionChange != null) {\n const newDirection = sortDirection === 'ascending' ? 'descending' : 'ascending';\n onSortCriterionChange([{ key: columnKey, sortDirection: newDirection }]);\n }\n }, [columnKey, sortDirection, onSortCriterionChange]);\n\n const getHeaderCellRenderer = useCallback(() => {\n if (renderer != null) {\n return renderer;\n }\n return ({ headerText, sortControl }: TableHeaderRendererContext<C>) => {\n const text =\n headerText != null ? (\n <div class={tableHeaderCellTextStyles.base}>\n <Text overflowWrap=\"normal\" lineClamp={2} variant=\"primary\" size=\"md\">\n {headerText}\n </Text>\n </div>\n ) : null;\n if (sortControl != null) {\n return (\n <div class={tableHeaderSortContainerStyles.base}>\n {text}\n {sortControl()}\n </div>\n );\n }\n return text;\n };\n }, [renderer]);\n\n const getAriaSelected = () => {\n if (isSelected) {\n return { 'aria-selected': true };\n }\n return isColumnSelectable ? { 'aria-selected': false } : undefined;\n };\n\n const getAriaSort = () => {\n if (sortDirection === 'ascending' || sortDirection === 'descending') {\n return { 'aria-sort': sortDirection };\n }\n return undefined;\n };\n\n return (\n <th\n aria-colindex={columnIndex + 1}\n {...getAriaSelected()}\n {...getAriaSort()}\n class={cellClasses}\n id={useId()}\n tabIndex={-1}\n role={'columnheader'}\n data-oj-cell-type={'header'}\n data-oj-column-key={columnKey}\n data-oj-table-focusable={tableId}\n data-oj-table-header-cell={tableId}\n {...(typeof columnKey === 'number' && { 'data-oj-column-key-type': 'number' })}\n {...(isColumnSelectable && interactionProps)}>\n {getHeaderCellRenderer()(headerCellRendererProps)}\n </th>\n );\n}\n","/**\n * @license\n * Copyright (c) %FIRST_YEAR% %CURRENT_YEAR%, Oracle and/or its affiliates.\n * The Universal Permissive License (UPL), Version 1.0\n * as shown at https://oss.oracle.com/licenses/upl/\n * @ignore\n */\nimport { classNames } from '../utils/UNSAFE_classNames';\nimport { Keys, containsKey } from '../utils/UNSAFE_keys';\nimport { TableSelectionDetail, SortCriterionDetail } from '../UNSAFE_TableView';\nimport { TableColumn } from './Table';\nimport { TableHeaderCell } from './TableHeaderCell';\nimport { tableHeaderRowStyles, tableHeaderRowContainerStyles } from './themes/Table.css';\n\n/**\n * Props for the TableHeader Component\n */\nexport type TableHeaderProps<K, D, C> = {\n tableId: string;\n columnsArray: TableColumn<K, D, C>[];\n hasVerticalGridlines: boolean;\n focusedKey?: C;\n isShowFocusRing: boolean;\n selectedColumnKeys?: Keys<C>;\n selectedRowKeys?: Keys<K>;\n isColumnSelectionEnabled: boolean;\n isRowSelectionEnabled: boolean;\n isResizeHover: boolean;\n isRtl: boolean;\n onSelectionChange?: (detail: TableSelectionDetail<K, C>, isExtendableSelection: boolean) => void;\n sortCriterion?: { key: C; sortDirection: 'ascending' | 'descending' }[];\n onSortCriterionChange?: (detail: SortCriterionDetail<C>) => void;\n startStickyEdge?: number;\n endStickyEdge?: number;\n};\n\n/**\n * The internal component used to render a header region in Table.\n */\nexport function TableHeader<K, D, C>({\n tableId,\n columnsArray,\n hasVerticalGridlines,\n focusedKey,\n isShowFocusRing,\n selectedColumnKeys,\n selectedRowKeys,\n isColumnSelectionEnabled,\n isRowSelectionEnabled,\n onSelectionChange,\n sortCriterion,\n onSortCriterionChange,\n startStickyEdge,\n endStickyEdge,\n isResizeHover,\n isRtl\n}: TableHeaderProps<K, D, C>) {\n const rowClasses = classNames([tableHeaderRowStyles.base]);\n const containerClasses = classNames([tableHeaderRowContainerStyles.base]);\n\n const getStyle = () => {\n return isResizeHover ? 'cursor: col-resize;' : '';\n };\n\n let isPreviousSelected = false;\n return (\n <thead class={containerClasses}>\n <tr class={rowClasses} role={'row'} style={getStyle()} data-oj-table-header-row={tableId}>\n {columnsArray.map((column: TableColumn<K, D, C>, columnIndex: number) => {\n const columnKey = column.key;\n let sortDirection;\n if (sortCriterion != null) {\n for (const criterion of sortCriterion) {\n if (criterion.key === columnKey) {\n sortDirection = criterion.sortDirection;\n break;\n }\n }\n }\n const isSelected = containsKey(selectedColumnKeys, columnKey);\n const headerCellProps = {\n tableId: tableId,\n hasVerticalGridlines: hasVerticalGridlines,\n columnKey: columnKey,\n columnIndex: columnIndex,\n isFinalColumnIndex: columnIndex === columnsArray.length - 1,\n stickyColumn: column.value.stickyEdge,\n isSelected: isSelected,\n isPreviousSelected: isPreviousSelected,\n selectedColumnKeys: selectedColumnKeys,\n selectedRowKeys: selectedRowKeys,\n isColumnSelectable: isColumnSelectionEnabled && column.value.selectable !== 'disabled',\n isRowSelectionEnabled: isRowSelectionEnabled,\n isShowFocusRing: isShowFocusRing && columnKey === focusedKey,\n headerText: column.value.headerText,\n renderer: column.value.headerRenderer,\n onSelectionChange: onSelectionChange,\n sortable: column.value.sortable,\n sortDirection: sortDirection,\n onSortCriterionChange: onSortCriterionChange,\n isStickyStartEdge: columnIndex === startStickyEdge,\n isStickyEndEdge: columnIndex === endStickyEdge,\n isRtl: isRtl\n };\n isPreviousSelected = isSelected;\n return <TableHeaderCell {...headerCellProps} />;\n })}\n </tr>\n </thead>\n );\n}\n","/**\n * @license\n * Copyright (c) %FIRST_YEAR% %CURRENT_YEAR%, Oracle and/or its affiliates.\n * The Universal Permissive License (UPL), Version 1.0\n * as shown at https://oss.oracle.com/licenses/upl/\n * @ignore\n */\nimport { ComponentChildren } from 'preact';\nimport { Text } from '../UNSAFE_Text';\nimport { TableFooterRendererContext } from '../UNSAFE_TableView';\nimport { classNames } from '../utils/UNSAFE_classNames';\nimport { useId } from '../hooks/UNSAFE_useId';\nimport { TableFooterCellVariantOptions } from './themes/TableFooterCellStyles.css';\nimport { TableFooterCellRedwoodTheme } from './themes/redwood/TableFooterCellTheme';\nimport { useComponentTheme } from '../hooks/UNSAFE_useComponentTheme';\nimport { useInteractionStyle } from '../hooks/UNSAFE_useInteractionStyle';\n\n/**\n * Props for the TableFooterCell Component\n */\nexport type TableFooterCellProps<C> = {\n tableId: string;\n columnKey: C;\n columnIndex: number;\n isFinalColumnIndex: boolean;\n hasVerticalGridlines: boolean;\n isSelected: boolean;\n isPreviousSelected: boolean;\n isColumnSelectable: boolean;\n isShowFocusRing: boolean;\n isStickyStartEdge: boolean;\n isStickyEndEdge: boolean;\n isRtl: boolean;\n footerText?: string;\n stickyColumn?: 'start' | 'end' | 'none';\n renderer?: (context: TableFooterRendererContext<C>) => ComponentChildren;\n};\n\nfunction _defaultFooterCellRenderer<C>({ footerText }: TableFooterRendererContext<C>) {\n return footerText != null ? (\n <Text truncation=\"ellipsis\" variant=\"primary\" size=\"md\">\n {footerText}\n </Text>\n ) : null;\n}\n\n/**\n * The internal component used to render a single cell in a TableFooterRow.\n */\nexport function TableFooterCell<C>({\n tableId,\n columnKey,\n columnIndex,\n isFinalColumnIndex,\n hasVerticalGridlines,\n isSelected,\n isPreviousSelected,\n isColumnSelectable,\n isShowFocusRing,\n stickyColumn = 'none',\n footerText,\n renderer = _defaultFooterCellRenderer,\n isStickyStartEdge,\n isStickyEndEdge,\n isRtl\n}: TableFooterCellProps<C>) {\n const { interactionProps, applyActiveStyle, applyHoverStyle, applyPseudoHoverStyle } =\n useInteractionStyle();\n\n const hasRenderer = renderer !== _defaultFooterCellRenderer;\n const { classes: themeClasses } = useComponentTheme<TableFooterCellVariantOptions>(\n TableFooterCellRedwoodTheme,\n {\n defaultRenderer: !hasRenderer ? 'isDefaultRenderer' : 'notDefaultRenderer',\n firstColumn: columnIndex === 0 ? 'isFirstColumn' : 'notFirstColumn',\n lastColumn: isFinalColumnIndex ? 'isLastColumn' : 'notLastColumn',\n borderStartSpacer:\n !(isPreviousSelected || isSelected) && (!hasVerticalGridlines || columnIndex === 0)\n ? 'isBorderStartSpacer'\n : 'notBorderStartSpacer',\n borderEndSpacer:\n isFinalColumnIndex && !isSelected ? 'isBorderEndSpacer' : 'notBorderEndSpacer',\n verticalGrid: hasVerticalGridlines ? 'isVerticalGrid' : 'notVerticalGrid',\n columnSelectable: isColumnSelectable ? 'isColumnSelectable' : 'notColumnSelectable',\n columnSelected: isSelected ? 'isColumnSelected' : 'notColumnSelected',\n previousColumnSelected: isPreviousSelected\n ? 'isPreviousColumnSelected'\n : 'notPreviousColumnSelected',\n stickyStartColumn: stickyColumn === 'start' ? 'isStickyStartColumn' : 'notStickyStartColumn',\n stickyEndColumn: stickyColumn === 'end' ? 'isStickyEndColumn' : 'notStickyEndColumn',\n stickyStartEdge: isStickyStartEdge ? 'isStickyStartEdge' : 'notStickyStartEdge',\n stickyEndEdge: isStickyEndEdge ? 'isStickyEndEdge' : 'notStickyEndEdge',\n showFocusRing: isShowFocusRing ? 'isShowFocusRing' : 'notShowFocusRing',\n active: applyActiveStyle ? 'isActive' : 'notActive',\n hover: applyHoverStyle ? 'isHover' : 'notHover',\n pseudoHover: applyPseudoHoverStyle ? 'isPseudoHover' : 'notPseudoHover',\n rtl: isRtl ? 'isRtl' : 'notRtl'\n }\n );\n\n const cellClasses = classNames([themeClasses]);\n\n const footerCellRendererProps = { key: columnKey, footerText: footerText };\n\n return (\n <td\n aria-colindex={columnIndex + 1}\n {...(isSelected\n ? { 'aria-selected': true }\n : isColumnSelectable\n ? { 'aria-selected': false }\n : {})}\n class={cellClasses}\n id={useId()}\n tabIndex={-1}\n role={'gridcell'}\n data-oj-cell-type={'footer'}\n data-oj-column-key={columnKey}\n data-oj-table-focusable={tableId}\n data-oj-table-footer-cell={tableId}\n {...(typeof columnKey === 'number' && { 'data-oj-column-key-type': 'number' })}\n {...(isColumnSelectable && interactionProps)}>\n {renderer(footerCellRendererProps)}\n </td>\n );\n}\n","/**\n * @license\n * Copyright (c) %FIRST_YEAR% %CURRENT_YEAR%, Oracle and/or its affiliates.\n * The Universal Permissive License (UPL), Version 1.0\n * as shown at https://oss.oracle.com/licenses/upl/\n * @ignore\n */\nimport { classNames } from '../utils/UNSAFE_classNames';\nimport { Keys, containsKey } from '../utils/UNSAFE_keys';\nimport { TableColumn } from './Table';\nimport { TableFooterCell } from './TableFooterCell';\nimport { tableFooterRowStyles, tableFooterRowContainerStyles } from './themes/Table.css';\n\n/**\n * Props for the TableFooter Component\n */\nexport type TableFooterProps<K, D, C> = {\n tableId: string;\n isRendered: boolean;\n columnsArray: TableColumn<K, D, C>[];\n hasVerticalGridlines: boolean;\n focusedKey?: C;\n isShowFocusRing: boolean;\n isRtl: boolean;\n selectedKeys?: Keys<C>;\n isColumnSelectionEnabled: boolean;\n startStickyEdge?: number;\n endStickyEdge?: number;\n};\n\n/**\n * The internal component used to render a footer region in Table.\n */\nexport function TableFooter<K, D, C>({\n tableId,\n isRendered,\n columnsArray,\n hasVerticalGridlines,\n focusedKey,\n isShowFocusRing,\n selectedKeys,\n isColumnSelectionEnabled,\n startStickyEdge,\n endStickyEdge,\n isRtl\n}: TableFooterProps<K, D, C>) {\n const rowClasses = classNames([tableFooterRowStyles.base]);\n const containerClasses = classNames([tableFooterRowContainerStyles.base]);\n\n let isPreviousSelected = false;\n return isRendered ? (\n <tfoot class={containerClasses}>\n <tr class={rowClasses} role={'row'} data-oj-table-footer-row={tableId}>\n {columnsArray.map((column: TableColumn<K, D, C>, columnIndex: number) => {\n const columnKey = column.key;\n const isSelected = containsKey(selectedKeys, columnKey);\n const footerCellProps = {\n tableId: tableId,\n columnKey: columnKey,\n columnIndex: columnIndex,\n isFinalColumnIndex: columnIndex === columnsArray.length - 1,\n hasVerticalGridlines: hasVerticalGridlines,\n stickyColumn: column.value.stickyEdge,\n isSelected: isSelected,\n isPreviousSelected: isPreviousSelected,\n isColumnSelectable: isColumnSelectionEnabled && column.value.selectable !== 'disabled',\n isShowFocusRing: isShowFocusRing && columnKey === focusedKey,\n footerText: column.value.footerText,\n renderer: column.value.footerRenderer,\n isStickyStartEdge: columnIndex === startStickyEdge,\n isStickyEndEdge: columnIndex === endStickyEdge,\n isRtl: isRtl\n };\n isPreviousSelected = isSelected;\n return <TableFooterCell {...footerCellProps} />;\n })}\n </tr>\n </tfoot>\n ) : null;\n}\n","/**\n * @license\n * Copyright (c) %FIRST_YEAR% %CURRENT_YEAR%, Oracle and/or its affiliates.\n * The Universal Permissive License (UPL), Version 1.0\n * as shown at https://oss.oracle.com/licenses/upl/\n * @ignore\n */\nimport { classNames } from '../utils/UNSAFE_classNames';\nimport { tableDragIndicatorStyles } from './themes/Table.css';\n\n/**\n * Props for the TableDragIndicator Component\n */\nexport type TableDragIndicatorProps = {\n isRtl: boolean;\n position?: number;\n};\n\n/**\n * The internal component used to render a drag indicator line in the Table.\n */\nexport function TableDragIndicator({ position, isRtl }: TableDragIndicatorProps) {\n const tableDragIndicatorClasses = classNames([tableDragIndicatorStyles.base]);\n\n const getDragIndicatorStyle = () => {\n if (position != null) {\n return isRtl\n ? `right:${position}px;cursor:col-resize;`\n : `left:${position}px;cursor:col-resize;`;\n }\n return `display:none;`;\n };\n\n return <div class={tableDragIndicatorClasses} style={getDragIndicatorStyle()} />;\n}\n","/**\n * @license\n * Copyright (c) %FIRST_YEAR% %CURRENT_YEAR%, Oracle and/or its affiliates.\n * The Universal Permissive License (UPL), Version 1.0\n * as shown at https://oss.oracle.com/licenses/upl/\n * @ignore\n */\nimport { keyExtractor } from '../../utils/PRIVATE_collectionUtils';\nimport { FocusableElement } from '../../utils/PRIVATE_tabbableUtils';\nimport { Cell } from '../../UNSAFE_TableView';\n\n/**\n * Returns the cell type for the given cell element\n */\nexport const getCellType = (element: FocusableElement) => {\n return element.dataset['ojCellType'];\n};\n\n/**\n * Returns the row key for the given row element\n */\nexport const getRowKey = (element: HTMLElement) => {\n return element.dataset['ojKeyType'] === 'number'\n ? Number(element.dataset['ojKey'])\n : element.dataset['ojKey'];\n};\n\n/**\n * Returns the key for the row at the given index\n */\nexport const getRowKeyForRowIndex = (root: HTMLElement, tableId: string, index: number) => {\n if (root != null) {\n const rowElements = root.querySelectorAll(`[data-oj-table-data-row='${tableId}']`);\n if (rowElements.length > index) {\n return getRowKey(rowElements[index] as HTMLElement);\n }\n }\n return null;\n};\n\n/**\n * Returns the index of the given row element\n */\nexport const getRowIndexForRowElement = (\n root: HTMLElement,\n tableId: string,\n rowElement: HTMLElement\n) => {\n if (root != null) {\n const rowElements = root.querySelectorAll(`[data-oj-table-data-row='${tableId}']`);\n const index = Array.prototype.indexOf.call(rowElements, rowElement);\n if (index > -1) {\n return index;\n }\n }\n return null;\n};\n\n/**\n * Returns the index of the row for the given key.\n */\nexport function getRowIndexForRowKey<K>(root: HTMLElement, tableId: string, rowKey: K) {\n if (root != null) {\n const rowElements = root.querySelectorAll(`[data-oj-table-data-row='${tableId}']`);\n for (let i = 0; i < rowElements.length; i++) {\n if (rowKey === getRowKey(rowElements[i] as HTMLElement)) {\n return i;\n }\n }\n }\n return null;\n}\n\n/**\n * Returns the column key for the given cell element\n */\nexport const getColumnKey = (element: HTMLElement) => {\n return element.dataset['ojColumnKeyType'] === 'number'\n ? Number(element.dataset['ojColumnKey'])\n : element.dataset['ojColumnKey'];\n};\n\n/**\n * Returns the key for the column at the given index\n */\nexport const getColumnKeyForColumnIndex = (root: HTMLElement, tableId: string, index: number) => {\n if (root != null) {\n const headerElements = root.querySelectorAll(`[data-oj-table-header-cell='${tableId}']`);\n if (headerElements.length > index) {\n return getColumnKey(headerElements[index] as HTMLElement);\n }\n }\n return null;\n};\n\n/**\n * Returns the index of the given column header element or footer element\n */\nexport const getColumnIndexForHeaderFooterElement = (\n root: HTMLElement,\n tableId: string,\n cellElement: HTMLElement,\n isHeader: boolean\n) => {\n if (root != null) {\n const columnElements = root.querySelectorAll(\n isHeader\n ? `[data-oj-table-header-cell='${tableId}']`\n : `[data-oj-table-footer-cell='${tableId}']`\n );\n const index = Array.prototype.indexOf.call(columnElements, cellElement);\n if (index > -1) {\n return index;\n }\n }\n return null;\n};\n\n/**\n * Helper method to get the cell key definition from an element\n */\nexport function logicalCellExtractor<K, C>(\n element: HTMLElement,\n tableId: string,\n cellSelector: string,\n onlyAncestors?: boolean\n): Cell<K, C> | null {\n const startingElement = onlyAncestors ? element.parentElement : element;\n if (startingElement != null) {\n const cellElement = startingElement.closest(cellSelector) as HTMLElement;\n if (cellElement != null) {\n const cellType = getCellType(cellElement);\n if (cellType === 'data') {\n return {\n rowKey: keyExtractor(cellElement, `[data-oj-table-data-row='${tableId}']`) as K,\n columnKey: getColumnKey(cellElement) as C,\n type: cellType\n };\n } else if (cellType === 'header' || cellType === 'footer') {\n return {\n columnKey: getColumnKey(cellElement) as C,\n type: cellType\n };\n } else if (cellType === 'noData') {\n return {\n type: cellType\n };\n }\n }\n }\n return null;\n}\n\n/**\n * Helper method to get an element from a cell descriptor\n */\nexport function getElementFromCell<K, C>(\n root: HTMLElement,\n tableId: string,\n cell: Cell<K, C>\n): HTMLElement | null {\n if (cell.type === 'header') {\n // header case\n const headerElements = root.querySelectorAll(`[data-oj-table-header-cell='${tableId}']`);\n for (const headerElement of headerElements) {\n if (cell.columnKey === getColumnKey(headerElement as HTMLElement)) {\n return headerElement as HTMLElement;\n }\n }\n } else if (cell.type === 'footer') {\n // footer case\n const footerElements = root.querySelectorAll(`[data-oj-table-footer-cell='${tableId}']`);\n for (const footerElement of footerElements) {\n if (cell.columnKey === getColumnKey(footerElement as HTMLElement)) {\n return footerElement as HTMLElement;\n }\n }\n } else if (cell.type === 'data') {\n // data body case\n const rowElements = root.querySelectorAll(`[data-oj-table-data-row='${tableId}']`);\n for (const rowElement of rowElements) {\n if (cell.rowKey === getRowKey(rowElement as HTMLElement)) {\n const cellElements = rowElement.querySelectorAll(`[data-oj-table-focusable='${tableId}']`);\n for (const cellElement of cellElements) {\n if (cell.columnKey === getColumnKey(cellElement as HTMLElement)) {\n return cellElement as HTMLElement;\n }\n }\n }\n }\n } else if (cell.type === 'noData') {\n // no data case\n return root.querySelector(`[data-oj-table-nodata-cell='${tableId}']`) as HTMLElement;\n }\n return null;\n}\n\n/**\n * Helper method to get the top scroller offset of the Table\n */\nexport const getScrollerTopOffset = (root: HTMLElement, tableId: string) => {\n const headerRowElement = root.querySelector(\n `[data-oj-table-header-row='${tableId}']`\n ) as HTMLElement;\n return headerRowElement != null ? headerRowElement.getBoundingClientRect().height : 0;\n};\n\n/**\n * Helper method to get the bottom scroller offset of the Table\n */\nexport const getScrollerBottomOffset = (root: HTMLElement, tableId: string) => {\n const footerRowElement = root.querySelector(\n `[data-oj-table-footer-row='${tableId}']`\n ) as HTMLElement;\n return footerRowElement != null ? footerRowElement.getBoundingClientRect().height : 0;\n};\n\n/**\n * Returns the key of the first focusable row in the Table\n */\nexport const getFirstFocusableRowKey = (root: HTMLElement, tableId: string) => {\n if (root != null) {\n const firstRowElement = root.querySelector(`[data-oj-table-data-row='${tableId}']`);\n if (firstRowElement != null) {\n return getRowKey(firstRowElement as HTMLElement);\n }\n }\n return null;\n};\n\n/**\n * Returns the key of the last focusable row in the Table\n */\nexport const getLastFocusableRowKey = (root: HTMLElement, tableId: string) => {\n const rowElements = root.querySelectorAll(`[data-oj-table-data-row='${tableId}']`);\n const rowCount = rowElements.length;\n if (rowCount > 0) {\n return getRowKey(rowElements[rowCount - 1] as HTMLElement);\n }\n return null;\n};\n\n/**\n * Returns the cell definition of the first rendered cell in the Table\n */\nexport const getFirstFocusableCell = (root: HTMLElement, tableId: string) => {\n if (root != null) {\n const firstCellElement = root.querySelector(\n `[data-oj-table-focusable='${tableId}']`\n ) as HTMLElement;\n if (firstCellElement != null) {\n const firstCellType = getCellType(firstCellElement);\n if (firstCellType === 'header' || firstCellType === 'footer') {\n return { columnKey: getColumnKey(firstCellElement), type: firstCellType };\n } else if (firstCellType === 'noData') {\n return { type: 'noData' };\n }\n return {\n rowKey: getRowKey(firstCellElement),\n columnKey: getColumnKey(firstCellElement),\n type: 'data'\n };\n }\n }\n return null;\n};\n\n/**\n * Helper method to determine if the no data cell is present in the Table\n */\nexport const hasNoDataCell = (root: HTMLElement, tableId: string) => {\n if (root != null) {\n return root.querySelectorAll(`[data-oj-table-nodata-cell='${tableId}']`).length > 0;\n }\n return false;\n};\n\n/**\n * Helper method to determine if footer cells are present in the Table\n */\nexport const hasFooterCells = (root: HTMLElement, tableId: string) => {\n if (root != null) {\n return root.querySelectorAll(`[data-oj-table-footer-row='${tableId}']`).length > 0;\n }\n return false;\n};\n","/**\n * @license\n * Copyright (c) %FIRST_YEAR% %CURRENT_YEAR%, Oracle and/or its affiliates.\n * The Universal Permissive License (UPL), Version 1.0\n * as shown at https://oss.oracle.com/licenses/upl/\n * @ignore\n */\nimport { RefObject } from 'preact';\nimport { ScrollDetail, SizingInfo, TableColumn } from '../Table';\nimport { TableHorizontalScrollPosition, TableVerticalScrollPosition } from '../../UNSAFE_TableView';\nimport { ViewportConfig } from '../../hooks/UNSAFE_useViewportIntersect';\nimport { findElementByKey } from '../../utils/PRIVATE_collectionUtils';\nimport {\n getColumnKey,\n getElementFromCell,\n getRowKey,\n getRowKeyForRowIndex,\n getScrollerBottomOffset,\n getScrollerTopOffset\n} from './TableDomUtils';\n\n/**\n * A helper function to make sure specified elem is visible in the specified container\n */\nfunction _scrollColumnIntoView<K, D, C>(\n columnElement: HTMLElement,\n scrollerElement: HTMLElement,\n columnsArray: TableColumn<K, D, C>[],\n scrollbarWidth: number,\n isRtl: boolean,\n fullColumnWidths?: number[],\n location?: 'inView' | 'start' | 'end'\n) {\n const columnKey = getColumnKey(columnElement);\n\n let columnIndex;\n for (let i = 0; i < columnsArray.length; i++) {\n if (columnsArray[i].key === columnKey) {\n columnIndex = i;\n break;\n }\n }\n if (columnIndex != null && fullColumnWidths != null) {\n let startOffset = 0;\n let endOffset = 0;\n\n const stickyStartColumns = getStickyColumnIndicies(columnsArray, true);\n for (let i = 0; i < stickyStartColumns.length; i++) {\n const stickyIndex = stickyStartColumns[i];\n if (stickyIndex < columnIndex) {\n startOffset += fullColumnWidths[stickyIndex];\n } else {\n break;\n }\n }\n const stickyEndColumns = getStickyColumnIndicies(columnsArray, false);\n for (let i = stickyEndColumns.length - 1; i > -1; i--) {\n const stickyIndex = stickyEndColumns[i];\n if (stickyIndex > columnIndex) {\n endOffset += fullColumnWidths[stickyIndex];\n } else {\n break;\n }\n }\n\n const horizontalOverflowDiff = _getHorizontalOverflowDiff(\n columnElement,\n scrollerElement,\n startOffset,\n endOffset,\n scrollbarWidth,\n isRtl\n );\n const leftOverflowDiff = horizontalOverflowDiff.left;\n const hasLeftOverflow = leftOverflowDiff >= 0;\n const rightOverflowDiff = horizontalOverflowDiff.right;\n const hasRightOverflow = rightOverflowDiff >= 0;\n\n // don't adjust scroll position if row has overflow in both directions\n if (hasLeftOverflow && hasRightOverflow) {\n return;\n }\n\n if (location == null || location === 'inView') {\n // if column fits fully in viewport, scroll overflow side into view\n // otherwise, scroll the shortest amount to fill viewport with column\n if (hasLeftOverflow) {\n if (Math.abs(rightOverflowDiff) > Math.abs(leftOverflowDiff)) {\n scrollerElement.scrollLeft = _roundScrollValue(\n scrollerElement.scrollLeft - leftOverflowDiff,\n false\n );\n } else {\n scrollerElement.scrollLeft = _roundScrollValue(\n scrollerElement.scrollLeft + rightOverflowDiff,\n true\n );\n }\n } else if (hasRightOverflow) {\n if (Math.abs(leftOverflowDiff) > Math.abs(rightOverflowDiff)) {\n scrollerElement.scrollLeft = _roundScrollValue(\n scrollerElement.scrollLeft + rightOverflowDiff,\n true\n );\n } else {\n scrollerElement.scrollLeft = _roundScrollValue(\n scrollerElement.scrollLeft - leftOverflowDiff,\n false\n );\n }\n }\n } else if (location === 'start') {\n scrollerElement.scrollLeft = _roundScrollValue(\n scrollerElement.scrollLeft - leftOverflowDiff,\n false\n );\n } else {\n scrollerElement.scrollLeft = _roundScrollValue(\n scrollerElement.scrollLeft + rightOverflowDiff,\n true\n );\n }\n }\n}\n\n/**\n * A helper function to make sure specified elem is visible in the specified container\n */\nconst _scrollRowIntoView = (\n root: HTMLDivElement,\n tableId: string,\n rowElement: HTMLElement,\n scrollerElement: HTMLElement,\n scrollbarHeight: number,\n location?: 'inView' | 'top' | 'bottom'\n) => {\n const topOffset = getScrollerTopOffset(root, tableId);\n const bottomOffset = getScrollerBottomOffset(root, tableId);\n const verticalOverflowDiff = _getVerticalOverflowDiff(\n rowElement,\n scrollerElement,\n topOffset,\n bottomOffset,\n scrollbarHeight\n );\n const topOverflowDiff = verticalOverflowDiff.top;\n const hasTopOverflow = topOverflowDiff >= 0;\n const bottomOverflowDiff = verticalOverflowDiff.bottom;\n const hasBottomOverflow = bottomOverflowDiff >= 0;\n\n // don't adjust scroll position if row has overflow in both directions\n if (hasTopOverflow && hasBottomOverflow) {\n return;\n }\n if (location == null || location === 'inView') {\n // if row fits fully in viewport, scroll overflow side into view\n // otherwise, scroll the shortest amount to fill viewport with row\n if (hasBottomOverflow) {\n if (Math.abs(topOverflowDiff) > Math.abs(bottomOverflowDiff)) {\n scrollerElement.scrollTop = _roundScrollValue(\n scrollerElement.scrollTop + bottomOverflowDiff,\n true\n );\n } else {\n scrollerElement.scrollTop = _roundScrollValue(\n scrollerElement.scrollTop - topOverflowDiff,\n false\n );\n }\n } else if (hasTopOverflow) {\n if (Math.abs(bottomOverflowDiff) > Math.abs(topOverflowDiff)) {\n scrollerElement.scrollTop = _roundScrollValue(\n scrollerElement.scrollTop - topOverflowDiff,\n false\n );\n } else {\n scrollerElement.scrollTop = _roundScrollValue(\n scrollerElement.scrollTop + bottomOverflowDiff,\n true\n );\n }\n }\n } else if (location === 'top') {\n scrollerElement.scrollTop = _roundScrollValue(\n scrollerElement.scrollTop - topOverflowDiff,\n false\n );\n } else {\n scrollerElement.scrollTop = _roundScrollValue(\n scrollerElement.scrollTop + bottomOverflowDiff,\n true\n );\n }\n};\n\n/**\n * Helper method to round a desired scrollTop or scrollLeft value to the nearest valid value\n * depending on the client browser.\n */\nconst _roundScrollValue = (value: number, isOver: boolean) => {\n // use Math.floor() and Math.ceil() to ensure we round to nearest containing valid\n // pixel value in either direction as valid scrollTop values are only integers\n return isOver ? Math.ceil(value) : Math.floor(value);\n};\n\n/**\n * A helper to get the horizontal overflow diff of the given element\n */\nconst _getHorizontalOverflowDiff = (\n element: HTMLElement,\n scrollerElement: HTMLElement,\n startOffset: number,\n endOffset: number,\n scrollbarWidth: number,\n isRtl: boolean\n) => {\n const elementRect = element.getBoundingClientRect();\n const scrollerRect = scrollerElement.getBoundingClientRect();\n\n if (isRtl) {\n return {\n left: scrollerRect.left - elementRect.left + endOffset + scrollbarWidth,\n right: elementRect.right - scrollerRect.right + startOffset\n };\n } else {\n return {\n left: scrollerRect.left - elementRect.left + startOffset,\n right: elementRect.right - scrollerRect.right + endOffset + scrollbarWidth\n };\n }\n};\n\n/**\n * A helper to get the vertical overflow diff of the given element\n */\nexport const _getVerticalOverflowDiff = (\n element: HTMLElement,\n scrollerElement: HTMLElement,\n topOffset: number,\n bottomOffset: number,\n scrollbarHeight: number\n) => {\n const elementRect = element.getBoundingClientRect();\n const scrollerRect = scrollerElement.getBoundingClientRect();\n\n return {\n top: scrollerRect.top - elementRect.top + topOffset,\n bottom: elementRect.bottom - scrollerRect.bottom + bottomOffset + scrollbarHeight\n };\n};\n\n/**\n * Helper to set the horizontal scroll position on the Table.\n */\nexport function setHorizontalScrollPosition<K, D, C>(\n root: HTMLDivElement,\n columnsArray: TableColumn<K, D, C>[],\n fullColumnWidths: number[],\n isRtl: boolean,\n horizontalScrollPosition?: TableHorizontalScrollPosition<C>\n) {\n const x = _getScrollLeftFromScrollPosition(\n root,\n columnsArray,\n fullColumnWidths,\n horizontalScrollPosition\n );\n root.scrollLeft = x != null ? (isRtl ? -x : x) : 0;\n}\n\n/**\n * Helper to set the vertical scroll position on the Table.\n */\nexport function setVerticalScrollPosition<K>(\n root: HTMLDivElement,\n tableId: string,\n verticalScrollPosition?: TableVerticalScrollPosition<K>\n) {\n const y = _getScrollTopFromScrollPosition(root, tableId, verticalScrollPosition);\n root.scrollTop = y != null ? y : 0;\n}\n\n/**\n * Helper to determine the 'x' value of a given scroll position.\n */\nfunction _getScrollLeftFromScrollPosition<K, D, C>(\n root: HTMLDivElement,\n columnsArray: TableColumn<K, D, C>[],\n fullColumnWidths: number[],\n scrollPosition?: TableHorizontalScrollPosition<C>\n) {\n if (scrollPosition != null) {\n let columnKey;\n let useColumn = false;\n if (scrollPosition.columnKey != null) {\n // columnKey takes precedence over everything else\n useColumn = true;\n columnKey = scrollPosition.columnKey;\n } else if (scrollPosition.offsetX != null && scrollPosition.x == null) {\n // offsetX can be used on its own if it is the only horizontal aspect provided\n useColumn = true;\n const currentHorizontalScrollPosition = getHorizontalScrollPosition(\n root,\n columnsArray,\n fullColumnWidths\n );\n columnKey = currentHorizontalScrollPosition.columnKey;\n }\n if (useColumn) {\n if (columnKey != null) {\n let x = 0;\n for (let i = 0; i < fullColumnWidths.length; i++) {\n if (columnsArray[i].key === columnKey) {\n return x + (scrollPosition.offsetX != null ? scrollPosition.offsetX : 0);\n }\n if (columnsArray[i].value.stickyEdge !== 'start') {\n x += fullColumnWidths[i];\n }\n }\n }\n } else if (scrollPosition.x != null) {\n return scrollPosition.x;\n }\n }\n // either nothing was provided, or what was provided was invalid\n return undefined;\n}\n\n/**\n * Helper to determine the 'y' value of a given scroll position.\n */\nfunction _getScrollTopFromScrollPosition<K>(\n root: HTMLDivElement,\n tableId: string,\n scrollPosition?: TableVerticalScrollPosition<K>\n) {\n if (scrollPosition != null) {\n let rowKey;\n let useRow = false;\n if (scrollPosition.rowKey != null) {\n // rowKey takes precedence over everything else\n useRow = true;\n rowKey = scrollPosition.rowKey;\n } else if (scrollPosition.offsetY != null && scrollPosition.y == null) {\n // offsetY can be used on its own if it is the only vertical aspect provided\n useRow = true;\n rowKey = getVerticalScrollPosition(root, tableId).rowKey;\n }\n if (useRow) {\n if (rowKey != null) {\n let y = 0;\n const rowElements = root.querySelectorAll(`[data-oj-table-data-row='${tableId}']`);\n for (let i = 0; i < rowElements.length; i++) {\n if (rowKey === getRowKey(rowElements[i] as HTMLElement)) {\n return y + (scrollPosition.offsetY != null ? scrollPosition.offsetY : 0);\n }\n y += rowElements[i].getBoundingClientRect().height;\n }\n }\n } else if (scrollPosition.y != null) {\n return scrollPosition.y;\n }\n }\n // either nothing was provided, or what was provided was invalid\n return undefined;\n}\n\n/**\n * Helper to get the logical scroll position for the given scrollLeft value. If no scrollLeft value is given,\n * it will use the current scrollLeft value of the Table.\n */\nexport function getHorizontalScrollPosition<K, D, C>(\n root: HTMLDivElement,\n columnsArray: TableColumn<K, D, C>[],\n fullColumnWidths: number[],\n newScrollLeft?: number\n) {\n // ensure scroll position x value is initialized\n const scrollLeft = Math.abs(newScrollLeft == null ? root.scrollLeft : newScrollLeft);\n\n const scrollPosition: TableHorizontalScrollPosition<C> = {\n x: scrollLeft,\n columnKey: undefined,\n offsetX: undefined\n };\n\n let columnEnd = 0;\n if (columnsArray.length > 0) {\n if (scrollLeft === 0) {\n scrollPosition.columnKey = columnsArray[0].key;\n scrollPosition.offsetX = 0;\n return scrollPosition;\n }\n }\n for (let i = 0; i < columnsArray.length; i++) {\n if (columnsArray[i].value.stickyEdge !== 'start') {\n columnEnd += fullColumnWidths[i];\n }\n if (scrollLeft < columnEnd) {\n scrollPosition.columnKey = columnsArray[i].key;\n scrollPosition.offsetX = fullColumnWidths[i] + scrollLeft - columnEnd;\n break;\n }\n }\n return scrollPosition;\n}\n\n/**\n * Helper to get the logical scroll position for the given scrollTop value. If no scrollTop value is given,\n * it will use the current scrollTop value of the Table.\n */\nexport function getVerticalScrollPosition<K>(\n root: HTMLDivElement,\n tableId: string,\n newScrollTop?: number\n) {\n // ensure scroll position y value is initialized\n const scrollTop = Math.abs(newScrollTop == null ? root.scrollTop : newScrollTop);\n\n const scrollPosition: TableVerticalScrollPosition<K> = {\n y: scrollTop,\n rowKey: undefined,\n offsetY: undefined\n };\n\n let rowBottom = 0;\n const rowElements = root.querySelectorAll(`[data-oj-table-data-row='${tableId}']`);\n if (rowElements.length > 0) {\n if (scrollTop === 0) {\n scrollPosition.rowKey = getRowKeyForRowIndex(root, tableId, 0) as K;\n scrollPosition.offsetY = 0;\n return scrollPosition;\n }\n }\n for (let i = 0; i < rowElements.length; i++) {\n const rowHeight = rowElements[i].getBoundingClientRect().height;\n rowBottom += rowHeight;\n if (scrollTop < rowBottom) {\n scrollPosition.rowKey = getRowKeyForRowIndex(root, tableId, i) as K;\n scrollPosition.offsetY = rowHeight + scrollTop - rowBottom;\n break;\n }\n }\n return scrollPosition;\n}\n\nexport function applyScrollDetail<K extends string | number, D, C>(\n root: HTMLDivElement,\n tableId: string,\n columnsArray: TableColumn<K, D, C>[],\n sizingInfo: SizingInfo,\n scrollDetail: ScrollDetail<K, C>,\n isRtl: boolean,\n fullColumnWidths?: number[],\n viewportConfig?: ViewportConfig\n) {\n const scroller = viewportConfig?.scroller() || root;\n if (scrollDetail.cell.type === 'data') {\n const rowElement = findElementByKey(\n root,\n scrollDetail.cell.rowKey,\n `[data-oj-table-data-row='${tableId}']`\n ) as HTMLElement;\n if (rowElement != null) {\n _scrollRowIntoView(\n root,\n tableId,\n rowElement,\n scroller,\n sizingInfo.boxHeight! - sizingInfo.contentHeight!,\n scrollDetail.locationY\n );\n }\n }\n const cellElement = getElementFromCell(root, tableId, scrollDetail.cell);\n if (cellElement != null) {\n _scrollColumnIntoView(\n cellElement,\n scroller,\n columnsArray,\n sizingInfo.boxWidth! - sizingInfo.contentWidth!,\n isRtl,\n fullColumnWidths,\n scrollDetail.locationX\n );\n }\n}\n\n/**\n * Helper function to update the 'left' and 'right' values of all sticky columns to correspond\n * to the given sizing information.\n */\nexport function updateStickyColumns<K, D, C>(\n root: HTMLDivElement,\n tableId: string,\n isRtl: boolean,\n columnsArray: TableColumn<K, D, C>[],\n fullColumnWidths: number[],\n stickyEdgesState: { start?: number; end?: number },\n setStickyEdgesState: (stickyEdgesState: { start?: number; end?: number }) => void\n) {\n let stickyIndex;\n let stickyStartOffset = 0;\n let stickyEndOffset = 0;\n\n const stickyStartIndicies = getStickyColumnIndicies(columnsArray, true);\n for (let i = 0; i < stickyStartIndicies.length; i++) {\n stickyIndex = stickyStartIndicies[i];\n _applyStickyColumnOffset(root, tableId, isRtl, stickyIndex, stickyStartOffset, true);\n stickyStartOffset += fullColumnWidths[stickyIndex];\n }\n const stickyEndIndicies = getStickyColumnIndicies(columnsArray, false);\n for (let i = stickyEndIndicies.length - 1; i > -1; i--) {\n stickyIndex = stickyEndIndicies[i];\n _applyStickyColumnOffset(root, tableId, isRtl, stickyIndex, stickyEndOffset, false);\n stickyEndOffset += fullColumnWidths[stickyIndex];\n }\n\n updateStickyEdges(root, columnsArray, fullColumnWidths, stickyEdgesState, setStickyEdgesState);\n}\n\n/**\n * Helper function to get the column indicies corresponding to the given edge.\n */\nexport const getStickyColumnIndicies = <K, D, C>(\n columnsArray: TableColumn<K, D, C>[],\n isStart: boolean\n) => {\n const stickyColumns = [];\n const edge = isStart ? 'start' : 'end';\n for (let i = 0; i < columnsArray.length; i++) {\n if (columnsArray[i].value.stickyEdge === edge) {\n stickyColumns.push(i);\n }\n }\n return stickyColumns;\n};\n\n/**\n * Helper function to update the 'left' and 'right' values of a specific column.\n */\nconst _applyStickyColumnOffset = (\n root: HTMLDivElement,\n tableId: string,\n isRtl: boolean,\n columnIndex: number,\n stickyOffset: number,\n isStart: boolean\n) => {\n const styleProperty = (isStart && !isRtl) || (!isStart && isRtl) ? 'left' : 'right';\n const styleValue = `${stickyOffset}px`;\n\n const headerElements = root.querySelectorAll(`[data-oj-table-header-cell='${tableId}']`);\n const headerElement = headerElements[columnIndex] as HTMLElement;\n headerElement.style[styleProperty] = styleValue;\n\n const rowElements = root.querySelectorAll(`[data-oj-table-data-row='${tableId}']`);\n for (let j = 0; j < rowElements.length; j++) {\n const rowElement = rowElements[j] as HTMLElement;\n const cellElements = rowElement.querySelectorAll(`[data-oj-table-data-cell='${tableId}']`);\n const cellElement = cellElements[columnIndex] as HTMLElement;\n cellElement.style[styleProperty] = styleValue;\n }\n\n const footerElements = root.querySelectorAll(`[data-oj-table-footer-cell='${tableId}']`);\n if (footerElements.length > 0) {\n const footerElement = footerElements[columnIndex] as HTMLElement;\n footerElement.style[styleProperty] = styleValue;\n }\n};\n\n/**\n * Helper function to update the sticky edges based on the given scrollLeft value.\n */\nexport function updateStickyEdges<K, D, C>(\n root: HTMLDivElement,\n columnsArray: TableColumn<K, D, C>[],\n fullColumnWidths: number[],\n stickyEdgesState: { start?: number; end?: number },\n setStickyEdgesState: (stickyEdgesState: { start?: number; end?: number }) => void,\n scrollLeft?: number\n) {\n if (columnsArray.length > 0) {\n let i;\n let currentScrollIndex;\n const newScrollPosition = getHorizontalScrollPosition(\n root,\n columnsArray,\n fullColumnWidths,\n scrollLeft\n );\n for (i = 0; i < columnsArray.length; i++) {\n if (columnsArray[i].key === newScrollPosition.columnKey) {\n currentScrollIndex = i;\n break;\n }\n }\n\n let startIndex;\n // browser zoom levels cause rounding issues where the start scroll\n // position may never be reached, but it should always be within 1\n if (newScrollPosition.x! >= 1) {\n const stickyStartIndicies = getStickyColumnIndicies(columnsArray, true);\n for (i = 0; i < stickyStartIndicies.length; i++) {\n const currentIndex = stickyStartIndicies[i];\n if (currentIndex < currentScrollIndex!) {\n startIndex = currentIndex;\n } else {\n break;\n }\n }\n }\n\n let endIndex;\n let currentWidth = 0;\n const maxScrollPos = root.scrollWidth - root.clientWidth;\n const endOverflow = maxScrollPos - newScrollPosition.x!;\n // browser zoom levels cause rounding issues where the max scroll\n // position may never be reached, but it should always be within 1\n if (endOverflow >= 1) {\n const stickyEndIndicies = getStickyColumnIndicies(columnsArray, false);\n for (let i = columnsArray.length - 1; i > -1; i--) {\n if (stickyEndIndicies.indexOf(i) !== -1) {\n endIndex = i;\n } else {\n currentWidth += fullColumnWidths[i];\n if (currentWidth > endOverflow) {\n break;\n }\n }\n }\n }\n if (stickyEdgesState.start != startIndex || stickyEdgesState.end != endIndex) {\n setStickyEdgesState({ start: startIndex, end: endIndex });\n }\n }\n}\n\n/**\n * Helper function to get the viewport config. TODO: this needs help for table still\n */\nexport const getViewportConfig = (\n outerTableRef: RefObject<HTMLElement>,\n config?: ViewportConfig\n) => {\n return (\n config ?? {\n scroller: () => {\n return outerTableRef.current;\n }\n }\n );\n};\n","/**\n * @license\n * Copyright (c) %FIRST_YEAR% %CURRENT_YEAR%, Oracle and/or its affiliates.\n * The Universal Permissive License (UPL), Version 1.0\n * as shown at https://oss.oracle.com/licenses/upl/\n * @ignore\n */\nimport { MutableRef } from 'preact/hooks';\nimport { SizingInfo, TableColumn } from '../Table';\nimport {\n getFirstFocusableRowKey,\n getLastFocusableRowKey,\n getRowKey,\n hasFooterCells,\n hasNoDataCell,\n getScrollerBottomOffset,\n getRowKeyForRowIndex,\n getRowIndexForRowKey\n} from './TableDomUtils';\nimport { applyScrollDetail, getVerticalScrollPosition } from './TableScrollUtils';\nimport { Cell, CurrentCellDetail } from '../../UNSAFE_TableView';\nimport { findElementByKey } from '../../utils/PRIVATE_collectionUtils';\n\n/**\n * Helper function to compare two given cell descriptors.\n */\nexport function cellComparator<K, C>(cell1?: Cell<K, C> | null, cell2?: Cell<K, C> | null) {\n if (cell1 == null) {\n return cell2 == null;\n }\n if (cell2 == null) {\n return false;\n }\n return (\n cell1?.rowKey === cell2?.rowKey &&\n cell1?.columnKey === cell2?.columnKey &&\n cell1?.type === cell2?.type\n );\n}\n\n/**\n * Helper function to handle an 'Up' or 'Down' arrow key press.\n * Up - Moves to the same cell in the previous row (including headers and footers). No op if already on the first row.\n * Down - Moves to the same cell in the next row (including headers and footers). No op if already on the last row.\n */\nexport function handleAdjacentRowGesture<K extends string | number, D, C>(\n root: HTMLDivElement,\n tableId: string,\n columnsArray: TableColumn<K, D, C>[],\n initialCell: Cell<K, C>,\n onCurrentCellChanged: (detail: CurrentCellDetail<K, C>) => void,\n isPrevious: boolean\n) {\n let newCurrentCell;\n const cellType = initialCell.type;\n if (cellType !== 'noData') {\n const columnKey = initialCell.columnKey;\n if (cellType === 'data') {\n const currentRowKey = initialCell.rowKey;\n const currentRowElement = findElementByKey(\n root,\n currentRowKey as string | number,\n `[data-oj-table-data-row='${tableId}']`\n );\n if (currentRowElement != null) {\n const adjacentRowElement = isPrevious\n ? (currentRowElement.previousElementSibling as HTMLElement)\n : (currentRowElement.nextElementSibling as HTMLElement);\n if (adjacentRowElement != null) {\n const rowKey = getRowKey(adjacentRowElement) as K;\n if (rowKey != null) {\n newCurrentCell = { rowKey: rowKey, columnKey: columnKey, type: 'data' } as Cell<K, C>;\n onCurrentCellChanged({ value: newCurrentCell });\n }\n } else if (isPrevious) {\n newCurrentCell = { columnKey: initialCell.columnKey, type: 'header' } as Cell<K, C>;\n onCurrentCellChanged({ value: newCurrentCell });\n } else if (hasFooterCells(root, tableId)) {\n newCurrentCell = { columnKey: initialCell.columnKey, type: 'footer' } as Cell<K, C>;\n onCurrentCellChanged({ value: newCurrentCell });\n }\n }\n } else if (cellType === 'header' && !isPrevious) {\n const rowKey = getFirstFocusableRowKey(root, tableId) as K;\n if (rowKey != null) {\n newCurrentCell = { rowKey: rowKey, columnKey: columnKey, type: 'data' } as Cell<K, C>;\n onCurrentCellChanged({ value: newCurrentCell });\n } else if (hasNoDataCell(root, tableId)) {\n newCurrentCell = { type: 'noData' } as Cell<K, C>;\n onCurrentCellChanged({ value: newCurrentCell });\n } else if (hasFooterCells(root, tableId)) {\n newCurrentCell = { columnKey: initialCell.columnKey, type: 'footer' } as Cell<K, C>;\n onCurrentCellChanged({ value: newCurrentCell });\n }\n } else if (cellType === 'footer' && isPrevious) {\n const rowKey = getLastFocusableRowKey(root, tableId) as K;\n if (rowKey != null) {\n newCurrentCell = { rowKey: rowKey, columnKey: columnKey, type: 'data' } as Cell<K, C>;\n onCurrentCellChanged({ value: newCurrentCell });\n } else if (hasNoDataCell(root, tableId)) {\n newCurrentCell = { type: 'noData' } as Cell<K, C>;\n onCurrentCellChanged({ value: newCurrentCell });\n } else {\n newCurrentCell = { columnKey: initialCell.columnKey, type: 'header' } as Cell<K, C>;\n onCurrentCellChanged({ value: newCurrentCell });\n }\n }\n } else {\n const newColumnKey = _getBoundaryColumnKey(columnsArray, true);\n if (isPrevious) {\n newCurrentCell = { columnKey: newColumnKey, type: 'header' } as Cell<K, C>;\n onCurrentCellChanged({ value: newCurrentCell });\n } else if (hasFooterCells(root, tableId)) {\n newCurrentCell = { columnKey: newColumnKey, type: 'footer' } as Cell<K, C>;\n onCurrentCellChanged({ value: newCurrentCell });\n }\n }\n}\n\n/**\n * Helper function to handle a 'PageUp' or 'PageDown' arrow key press.\n * PageUp - Moves to the same cell in the first visible row in the current viewport,\n * and scrolls the Table so it becomes the last visible row in the viewport when able.\n * PageDown - Moves to the same cell in the last visible row in the current viewport,\n * and scrolls the Table so it becomes the first visible row in the viewport when able.\n */\nexport function handlePageRowGesture<K extends string | number, D, C>(\n root: HTMLDivElement,\n tableId: string,\n columnsArray: TableColumn<K, D, C>[],\n sizingInfoRef: MutableRef<SizingInfo>,\n initialCell: Cell<K, C>,\n onCurrentCellChanged: (detail: CurrentCellDetail<K, C>) => void,\n isPrevious: boolean,\n isRtl: boolean,\n fullColumnWidths?: number[]\n) {\n const rowElements = root.querySelectorAll(`[data-oj-table-data-row='${tableId}']`);\n if (rowElements.length > 0) {\n const verticalScrollPosition = getVerticalScrollPosition(root, tableId);\n const verticalRowIndex = getRowIndexForRowKey(root, tableId, verticalScrollPosition.rowKey!);\n let targetRowIndex;\n if (isPrevious) {\n if (verticalScrollPosition.offsetY === 0) {\n targetRowIndex = Math.max(verticalRowIndex! - 1, 0);\n } else {\n targetRowIndex = verticalRowIndex!;\n }\n } else {\n const scrollerRect = root.getBoundingClientRect();\n const scrollbarHeight =\n sizingInfoRef.current.boxHeight! - sizingInfoRef.current.contentHeight!;\n const scrollerBottom =\n scrollerRect.bottom + getScrollerBottomOffset(root, tableId) + scrollbarHeight;\n targetRowIndex = verticalRowIndex!;\n while (rowElements.length > targetRowIndex + 1) {\n targetRowIndex += 1;\n const elementBottom = rowElements[targetRowIndex].getBoundingClientRect().bottom;\n if (elementBottom > scrollerBottom) {\n break;\n }\n }\n }\n const newRowKey = getRowKeyForRowIndex(root, tableId, targetRowIndex) as K;\n if (newRowKey != null) {\n const newCurrentCell = {\n rowKey: newRowKey,\n columnKey: initialCell.columnKey,\n type: 'data'\n } as Cell<K, C>;\n if (newRowKey !== initialCell.rowKey) {\n onCurrentCellChanged({ value: newCurrentCell });\n }\n applyScrollDetail(\n root,\n tableId,\n columnsArray,\n sizingInfoRef.current,\n { cell: newCurrentCell, locationX: 'inView', locationY: isPrevious ? 'bottom' : 'top' },\n isRtl,\n fullColumnWidths\n );\n }\n }\n}\n\n/**\n * Helper function to get the column key next to the given column key in the specified direction. Returns\n * null if there is no adjacent column in the direction specified.\n */\nfunction _getAdjacentColumnKey<K, D, C>(\n initialKey: C,\n columnsArray: TableColumn<K, D, C>[],\n isPrevious: boolean\n) {\n let currentIndex = -1;\n const columnsCount = columnsArray.length;\n for (let i = 0; i < columnsCount; i++) {\n if (columnsArray[i].key === initialKey) {\n currentIndex = i;\n break;\n }\n }\n if (isPrevious && currentIndex !== 0) {\n return columnsArray[currentIndex - 1].key;\n } else if (!isPrevious && currentIndex !== columnsCount - 1) {\n return columnsArray[currentIndex + 1].key;\n }\n return null;\n}\n\n/**\n * Helper function to handle a 'Previous' or 'Next' arrow key press.\n * Previous - Moves to the previous cell in the current row. No op if already on the first cell in that row.\n * Next - Moves to the next cell in the current row. No op if already on the last cell in that row.\n */\nexport function handleAdjacentColumnGesture<K extends string | number, D, C>(\n columnsArray: TableColumn<K, D, C>[],\n initialCell: Cell<K, C>,\n onCurrentCellChanged: (detail: CurrentCellDetail<K, C>) => void,\n isPrevious: boolean\n) {\n let newCurrentCell;\n const cellType = initialCell.type;\n if (cellType !== 'noData') {\n const initialKey = initialCell.columnKey;\n const newKey = _getAdjacentColumnKey(initialKey, columnsArray, isPrevious);\n if (newKey != null) {\n if (cellType === 'data') {\n newCurrentCell = { rowKey: initialCell.rowKey, columnKey: newKey, type: cellType };\n onCurrentCellChanged({ value: newCurrentCell });\n } else {\n newCurrentCell = { columnKey: newKey, type: cellType };\n onCurrentCellChanged({ value: newCurrentCell });\n }\n }\n }\n}\n\n/**\n * Helper function to get the first or last column key.\n */\nfunction _getBoundaryColumnKey<K, D, C>(columnsArray: TableColumn<K, D, C>[], isFirst: boolean) {\n if (isFirst) {\n return columnsArray[0].key;\n }\n return columnsArray[columnsArray.length - 1].key;\n}\n\n/**\n * Helper function to handle a 'Home' or 'End' key press.\n * Home - Jumps to the first cell in the current row. No op if already on the first cell in that row.\n * Ctrl/Cmd + Home - Jumps to the first cell in the first data row. If no data rows are present,\n * jumps to the first cell in the current region (header or footer). No op if already on that cell.\n * End - Jumps to the last cell in the current row. No op if already on the last cell in that row.\n * Ctrl/Cmd + End - Jumps to the last cell in the last data row. If no data rows are present,\n * jumps to the last cell in the current region (header or footer). No op if already on that cell.\n */\nexport function handleJumpColumnGesture<K extends string | number, D, C>(\n root: HTMLDivElement,\n tableId: string,\n columnsArray: TableColumn<K, D, C>[],\n initialCell: Cell<K, C>,\n onCurrentCellChanged: (detail: CurrentCellDetail<K, C>) => void,\n isPrevious: boolean,\n includeRows: boolean\n) {\n let newCurrentCell;\n const cellType = initialCell.type;\n if (cellType !== 'noData') {\n const initialKey = initialCell.columnKey;\n const newKey = _getBoundaryColumnKey(columnsArray, isPrevious);\n if (includeRows) {\n if (hasNoDataCell(root, tableId)) {\n newCurrentCell = {\n type: 'noData'\n } as Cell<K, C>;\n if (!cellComparator(newCurrentCell, initialCell)) {\n onCurrentCellChanged({ value: newCurrentCell });\n }\n } else {\n const newRowKey = isPrevious\n ? (getFirstFocusableRowKey(root, tableId) as K)\n : (getLastFocusableRowKey(root, tableId) as K);\n if (newRowKey != null) {\n newCurrentCell = {\n rowKey: newRowKey,\n columnKey: newKey,\n type: 'data'\n } as Cell<K, C>;\n if (!cellComparator(newCurrentCell, initialCell)) {\n onCurrentCellChanged({ value: newCurrentCell });\n }\n }\n }\n } else if (newKey !== initialKey) {\n if (cellType === 'data') {\n newCurrentCell = { rowKey: initialCell.rowKey, columnKey: newKey, type: cellType };\n onCurrentCellChanged({ value: newCurrentCell });\n } else {\n newCurrentCell = { columnKey: newKey, type: cellType };\n onCurrentCellChanged({ value: newCurrentCell });\n }\n }\n }\n}\n","/**\n * @license\n * Copyright (c) %FIRST_YEAR% %CURRENT_YEAR%, Oracle and/or its affiliates.\n * The Universal Permissive License (UPL), Version 1.0\n * as shown at https://oss.oracle.com/licenses/upl/\n * @ignore\n */\nimport { useCallback, useEffect, useMemo, useRef, useState, MutableRef, Ref } from 'preact/hooks';\nimport {\n getElementContainsFunc,\n handleEnterActionableMode,\n handleWrapActionableFocus\n} from '../../utils/PRIVATE_collectionUtils';\nimport {\n FocusableElement,\n allTabbableElements,\n getActiveElement,\n getBodyElement,\n isTabbableElement\n} from '../../utils/PRIVATE_tabbableUtils';\nimport { SizingInfo, TableColumn } from '../Table';\nimport {\n getCellType,\n getElementFromCell,\n getFirstFocusableCell,\n logicalCellExtractor\n} from '../utils/TableDomUtils';\nimport { cellComparator } from '../utils/TableNavigationUtils';\nimport { applyScrollDetail } from '../utils/TableScrollUtils';\nimport { Cell, CurrentCellDetail } from '../../UNSAFE_TableView';\n\ntype UseFocusHandlingProps<K, D, C extends string> = {\n outerTableRef: Ref<HTMLDivElement>;\n tableId: string;\n isRtl: boolean;\n columnsArray: TableColumn<K, D, C>[];\n sizingInfoRef: MutableRef<SizingInfo>;\n selectionExtensionElementRef: MutableRef<HTMLElement | undefined>;\n cellSupportsTabbable: (cell: Cell<K, C>) => boolean;\n fullColumnWidths?: number[];\n currentCellOverride?: Cell<K, C>;\n onPersistCurrentCell?: (detail: CurrentCellDetail<K, C>) => void;\n};\n\n// constant timeout values for delays following a input gesture until enabling focus rings\nconst MOUSE_FOCUS_SHIFT_TIMEOUT = 0;\nconst TOUCH_FOCUS_SHIFT_TIMEOUT = 200;\n\n// constant event.key values that trigger focus ring and 'scroll to current' logic\nconst NAVIGATION_KEYS = [\n ' ',\n 'F2',\n 'Enter',\n 'Esc', // Firefox 36 and earlier uses 'Esc' instead of 'Escape'\n 'Escape',\n 'ArrowLeft',\n 'ArrowUp',\n 'ArrowRight',\n 'ArrowDown',\n 'Home',\n 'End',\n 'PageUp',\n 'PageDown'\n];\n\n/**\n * Hook that manages focus interactions on the Preact Table\n */\nexport function useFocusHandling<K extends string | number, D, C extends string>({\n outerTableRef,\n tableId,\n isRtl,\n columnsArray,\n sizingInfoRef,\n selectionExtensionElementRef,\n cellSupportsTabbable,\n fullColumnWidths,\n currentCellOverride,\n onPersistCurrentCell\n}: UseFocusHandlingProps<K, D, C>) {\n // tracks whether the most recent 'blur' was caused by focus being lost by the browser window (or iframe)\n const blurFromWindowRef = useRef<boolean>(false);\n\n // tracks focus loss during render cycle for potential focus recapture cases\n const isRenderCycle = useRef<boolean>(true);\n isRenderCycle.current = true;\n const blurredRenderCycleElementRef = useRef<FocusableElement | null>(null);\n\n // track current 'focus info' state\n const hasFocusRef = useRef<boolean>(false);\n const [isTabbableMode, setIsTabbableMode] = useState<boolean>(false);\n const [isShowFocusRing, setIsShowFocusRing] = useState<boolean>(false);\n\n // track pointer down information\n const recentPointerRef = useRef<boolean>(false);\n const pointerTimerRef = useRef<ReturnType<typeof setTimeout> | null>(null);\n const isShowFocusRingOverrideRef = useRef<boolean | null>(null);\n\n // tracks the current cell information\n const [currentCell, setCurrentCell] = useState<Cell<K, C> | undefined>(currentCellOverride);\n const currentCellRef = useRef<Cell<K, C> | undefined>(currentCellOverride);\n\n // tracks whether the table is handling a tab gesture that should allow focus to leave the table\n const [isTabbing, setIsTabbing] = useState<boolean>(false);\n\n // intercept onPersistCurrentCell calls to ensure internal state is updated appropriately\n const onCurrentCellChanged = useMemo(() => {\n return (detail: CurrentCellDetail<K, C>) => {\n setCurrentCell(detail.value);\n currentCellRef.current = detail.value;\n selectionExtensionElementRef.current = undefined;\n if (onPersistCurrentCell != null) {\n onPersistCurrentCell(detail);\n }\n };\n }, [onPersistCurrentCell, selectionExtensionElementRef]);\n\n // ensure any new currentCellOverride settings are applied only on that render\n const currentCellOverrideRef = useRef<Cell<K, C> | undefined>(currentCellOverride);\n if (currentCellOverrideRef.current !== currentCellOverride) {\n currentCellOverrideRef.current = currentCellOverride;\n if (!cellComparator(currentCell, currentCellOverride)) {\n onCurrentCellChanged({ value: currentCellOverride });\n }\n }\n\n // Helper function to set the Table's focus tracking state to reflect that it is inactive.\n const _setAsInactive = useCallback(() => {\n hasFocusRef.current = false;\n setIsTabbableMode(false);\n setIsShowFocusRing(false);\n }, []);\n\n // Helper function to set the Table's focus tracking state to reflect that on of its cell has focus.\n const _enableNavigationMode = useCallback(\n (cell: Cell<K, C>, skipScrollCellIntoView?: boolean) => {\n const rootElement = outerTableRef.current;\n if (rootElement != null) {\n setIsTabbableMode(false);\n setIsShowFocusRing(\n isShowFocusRingOverrideRef.current !== null\n ? isShowFocusRingOverrideRef.current\n : !recentPointerRef.current\n );\n if (!recentPointerRef.current && !skipScrollCellIntoView) {\n applyScrollDetail(\n rootElement,\n tableId,\n columnsArray,\n sizingInfoRef.current,\n { cell: cell, locationX: 'inView', locationY: 'inView' },\n isRtl,\n fullColumnWidths\n );\n }\n if (!cellComparator(cell, currentCell)) {\n onCurrentCellChanged({ value: cell });\n }\n }\n },\n [\n outerTableRef,\n tableId,\n columnsArray,\n sizingInfoRef,\n isRtl,\n currentCell,\n onCurrentCellChanged,\n fullColumnWidths\n ]\n );\n\n // Helper function to set the Table's focus tracking state to reflect that it is tabbable.\n const _enableTabbableMode = useCallback(\n (cell: Cell<K, C>, isKeyboard?: boolean, skipScrollCellIntoView?: boolean) => {\n const rootElement = outerTableRef.current;\n if (rootElement != null) {\n setIsTabbableMode(true);\n if (!isKeyboard) {\n setIsShowFocusRing(false);\n if (!cellComparator(cell, currentCell)) {\n onCurrentCellChanged({ value: cell });\n }\n if (!recentPointerRef.current && !skipScrollCellIntoView) {\n applyScrollDetail(\n rootElement,\n tableId,\n columnsArray,\n sizingInfoRef.current,\n { cell: cell, locationX: 'inView', locationY: 'inView' },\n isRtl,\n fullColumnWidths\n );\n }\n }\n }\n },\n [\n outerTableRef,\n tableId,\n columnsArray,\n sizingInfoRef,\n isRtl,\n currentCell,\n onCurrentCellChanged,\n fullColumnWidths\n ]\n );\n\n // Helper function to set the Table's focus tracking state to reflect that a user has\n // exited tabbable mode via the keyboard (esc or 'F2')\n const _disableTabbableMode = useCallback(\n (cell: Cell<K, C>) => {\n const rootElement = outerTableRef.current;\n if (rootElement != null) {\n setIsTabbableMode(false);\n const currentCellElement = getElementFromCell(rootElement, tableId, cell);\n if (currentCellElement != null) {\n currentCellElement.focus({ preventScroll: true });\n } else {\n rootElement.focus({ preventScroll: true });\n }\n }\n },\n [outerTableRef, tableId]\n );\n\n // PointerDown handler for the outer Table. Focus transfers that occur following a pointerdown\n // on desktop devices should not result in a focus ring being shown on the focused element\n const _pointerDownHandler = useCallback(\n (event: PointerEvent) => {\n if (event.pointerType !== 'touch') {\n if (pointerTimerRef.current != null) {\n clearTimeout(pointerTimerRef.current);\n }\n recentPointerRef.current = true;\n pointerTimerRef.current = setTimeout(() => {\n recentPointerRef.current = false;\n if (isShowFocusRing) {\n setIsShowFocusRing(false);\n }\n }, MOUSE_FOCUS_SHIFT_TIMEOUT);\n }\n },\n [isShowFocusRing]\n );\n\n // TouchEnd handler for the outer Table. Focus transfers that occur following a touchend\n // on touch devices should not result in a focus ring being shown on the focused element\n const _touchEndHandler = useCallback(() => {\n if (pointerTimerRef.current != null) {\n clearTimeout(pointerTimerRef.current);\n }\n recentPointerRef.current = true;\n pointerTimerRef.current = setTimeout(() => {\n recentPointerRef.current = false;\n if (isShowFocusRing) {\n setIsShowFocusRing(false);\n }\n }, TOUCH_FOCUS_SHIFT_TIMEOUT);\n }, [isShowFocusRing]);\n\n // Focus handler for the outer Table. On focus, a focusable area needs to be 'current'.\n // If a 'current' area already exists, nothing further is needed. Otherwise, the first\n // focusable element should be made 'current'.\n const _onFocusHandler = useCallback(\n (event: FocusEvent) => {\n hasFocusRef.current = true;\n const rootElement = outerTableRef.current;\n if (rootElement != null) {\n // don't scroll current into view if previous blur was due to window focus loss\n const skipScrollCellIntoView = blurFromWindowRef.current;\n blurFromWindowRef.current = false;\n\n const targetElement = event.target as HTMLElement;\n if (targetElement === rootElement) {\n // handle overall root element receiving focus\n const cell =\n currentCell != null\n ? currentCell\n : (getFirstFocusableCell(rootElement, tableId) as Cell<K, C>);\n if (cell != null) {\n _enableNavigationMode(cell, skipScrollCellIntoView);\n }\n } else {\n const cell = logicalCellExtractor(\n targetElement,\n tableId,\n `[data-oj-table-focusable='${tableId}']`\n ) as Cell<K, C>;\n if (cell != null) {\n if (getCellType(targetElement) != null) {\n // handle individual focusable regions receiving focus\n _enableNavigationMode(cell, skipScrollCellIntoView);\n } else {\n _enableTabbableMode(cell, false, skipScrollCellIntoView);\n }\n }\n }\n }\n if (pointerTimerRef.current != null) {\n clearTimeout(pointerTimerRef.current);\n pointerTimerRef.current = null;\n }\n recentPointerRef.current = false;\n isShowFocusRingOverrideRef.current = null;\n },\n [outerTableRef, tableId, currentCell, _enableTabbableMode, _enableNavigationMode]\n );\n\n // Blur handler for the outer Table. When a blur is caused by the browser window itself\n // losing focus (changing tabs or leaving an iframe for example), an eventual re-focus due\n // to the window re-gaining focus needs to be handled differently (no auto-scroll mostly).\n const _onBlurHandler = useCallback(\n (event: FocusEvent) => {\n const rootElement = outerTableRef.current;\n if (rootElement != null) {\n if (event.target === document.activeElement) {\n // save focus ring state so it's set once focus comes back\n isShowFocusRingOverrideRef.current = isShowFocusRing;\n }\n const relatedTarget = event.relatedTarget as Element;\n const isUnknownRelatedTarget = relatedTarget == null;\n blurFromWindowRef.current = isUnknownRelatedTarget;\n if (isUnknownRelatedTarget || !getElementContainsFunc(rootElement, true)(relatedTarget)) {\n _setAsInactive();\n if (isRenderCycle.current) {\n // store element that loses focus during a render cycle for recapturing focus logic\n blurredRenderCycleElementRef.current = event.target as FocusableElement;\n }\n }\n setIsTabbing(false);\n }\n },\n [outerTableRef, isShowFocusRing, _setAsInactive]\n );\n\n // KeyDown handler for the outer Table. This specific handler tracks 'focus' transfer keys\n // Esc, F2, Enter, and Tab. It also ensures the currentCell is scrolled into view on any key\n const _onKeyDownHandler = useCallback(\n (event: KeyboardEvent) => {\n const rootElement = outerTableRef.current;\n if (rootElement != null && currentCell != null) {\n if (cellSupportsTabbable(currentCell)) {\n if (event.key === 'F2') {\n if (isTabbableMode) {\n _disableTabbableMode(currentCell);\n } else {\n _enableTabbableMode(currentCell, true);\n }\n } else if (event.key === 'Esc' || event.key === 'Escape') {\n // Firefox 36 and earlier uses 'Esc' instead of 'Escape'\n _disableTabbableMode(currentCell);\n } else if (event.key === 'Enter' && !isTabbableMode) {\n _enableTabbableMode(currentCell, true);\n }\n }\n if (NAVIGATION_KEYS.indexOf(event.key) > -1 && !isTabbableMode) {\n setIsShowFocusRing(true);\n applyScrollDetail(\n rootElement,\n tableId,\n columnsArray,\n sizingInfoRef.current,\n { cell: currentCell, locationX: 'inView', locationY: 'inView' },\n isRtl,\n fullColumnWidths\n );\n }\n }\n if (event.key === 'Tab' && !isTabbableMode) {\n setIsTabbing(true);\n }\n },\n [\n outerTableRef,\n tableId,\n columnsArray,\n sizingInfoRef,\n isRtl,\n isTabbableMode,\n currentCell,\n cellSupportsTabbable,\n fullColumnWidths,\n _enableTabbableMode,\n _disableTabbableMode\n ]\n );\n\n // Callback for the outer Table's FocusTracker usage.\n const onStartFocusTracking = useCallback(\n (detail: {\n activeElement: FocusableElement;\n hasFocusWithin: boolean;\n tabbableElements: FocusableElement[];\n }) => {\n const rootElement = outerTableRef.current;\n if (rootElement != null && currentCell != null) {\n handleEnterActionableMode(\n detail.hasFocusWithin && getCellType(detail.activeElement) == null,\n allTabbableElements(\n getElementFromCell(rootElement, tableId, currentCell) as FocusableElement\n ),\n (value?: Cell<K, D>) => {\n setIsTabbableMode(value != undefined);\n }\n );\n }\n },\n [outerTableRef, currentCell, tableId]\n );\n\n // Callback for the outer Table's FocusTracker usage.\n const onFocusStartEdge = useCallback((detail: { tabbableElements: FocusableElement[] }) => {\n handleWrapActionableFocus(true, detail.tabbableElements, (value?: Cell<K, D>) => {\n setIsTabbableMode(value != undefined);\n });\n }, []);\n\n // Callback for the outer Table's FocusTracker usage.\n const onFocusEndEdge = useCallback((detail: { tabbableElements: FocusableElement[] }) => {\n handleWrapActionableFocus(false, detail.tabbableElements, (value?: Cell<K, D>) => {\n setIsTabbableMode(value != undefined);\n });\n }, []);\n\n // Handle ensuring focus is properly set at the completion of every render cycle\n // NO DEPENDENCY ARRAY HERE TO ENSURE THIS RUNS ON EVERY RENDER CYCLE\n useEffect(() => {\n const blurredRenderCycleElement = blurredRenderCycleElementRef.current;\n blurredRenderCycleElementRef.current = null;\n isRenderCycle.current = false;\n\n const rootElement = outerTableRef.current;\n if (rootElement != null) {\n const activeElement = getActiveElement(rootElement);\n // if we were tracking focus during the render cycle, ensure we recapture focus if needed\n if (\n blurredRenderCycleElement != null &&\n !isTabbing &&\n activeElement === getBodyElement(rootElement) &&\n (!getElementContainsFunc(rootElement, true)(blurredRenderCycleElement) ||\n !isTabbableElement(blurredRenderCycleElement, true))\n ) {\n rootElement.focus({ preventScroll: true });\n return;\n }\n if (\n hasFocusRef.current &&\n currentCell != null &&\n !isTabbing &&\n cellComparator(currentCell, currentCellRef.current)\n ) {\n // ensure real browser focus is on the correct cell element\n const currentCellElement = getElementFromCell(rootElement, tableId, currentCell);\n if (currentCellElement != null) {\n // currentCell is valid, so set focus on it if needed\n if (\n (!isTabbableMode && activeElement !== currentCellElement) ||\n (isTabbableMode && !getElementContainsFunc(currentCellElement, true)(activeElement))\n ) {\n currentCellElement.focus({ preventScroll: true });\n }\n } else {\n // currentCell is not valid, so choose a new currentCell instead\n const newCurrentCell = getFirstFocusableCell(rootElement, tableId) as Cell<K, C>;\n if (newCurrentCell != null) {\n onCurrentCellChanged({ value: newCurrentCell });\n }\n }\n }\n }\n });\n\n return {\n focusHandlingProps: {\n onPointerDown: _pointerDownHandler,\n onTouchEnd: _touchEndHandler,\n onFocus: _onFocusHandler,\n onBlur: _onBlurHandler,\n onKeyDown: _onKeyDownHandler,\n tabIndex: isTabbing ? -1 : 0\n },\n currentCell,\n onCurrentCellChanged,\n isShowFocusRing,\n isTabbableMode,\n onStartFocusTracking,\n onFocusStartEdge,\n onFocusEndEdge\n };\n}\n","/**\n * @license\n * Copyright (c) %FIRST_YEAR% %CURRENT_YEAR%, Oracle and/or its affiliates.\n * The Universal Permissive License (UPL), Version 1.0\n * as shown at https://oss.oracle.com/licenses/upl/\n * @ignore\n */\nimport { keyExtractor } from '../../utils/PRIVATE_collectionUtils';\nimport { getRowIndexForRowElement, getElementFromCell } from './TableDomUtils';\nimport { TableColumn } from '../Table';\nimport { Cell, RowActionDetail, SortCriterionDetail } from '../../UNSAFE_TableView';\n\n/**\n * Helper function to handle a row action gesture from a pointer or keyboard event\n */\nexport function handleRowActionGesture<K, D, C>(\n root: HTMLDivElement,\n tableId: string,\n data: D[],\n onRowAction: (detail: RowActionDetail<K, D>) => void,\n targetElement: HTMLElement,\n targetCell?: Cell<K, C>\n) {\n let rowKey;\n let rowElement;\n if (targetCell?.type === 'data') {\n rowKey = targetCell.rowKey;\n const targetCellElement = getElementFromCell(root, tableId, targetCell);\n if (targetCellElement != null) {\n rowElement = targetCellElement.parentElement;\n }\n } else {\n rowKey = keyExtractor(targetElement, `[data-oj-table-data-row='${tableId}']`) as K;\n if (rowKey != null) {\n rowElement = targetElement.closest(`[data-oj-table-data-row='${tableId}']`);\n }\n }\n if (rowKey != null && rowElement != null) {\n const rowIndex = getRowIndexForRowElement(root, tableId, rowElement as HTMLElement);\n if (rowIndex != null) {\n const rowContext = {\n key: rowKey,\n data: data[rowIndex]\n };\n onRowAction({ context: rowContext, target: targetElement });\n return true;\n }\n }\n return false;\n}\n\n/**\n * Helper function to handle a row action gesture\n */\nexport function handleSortActionGesture<K, D, C>(\n columnsArray: TableColumn<K, D, C>[],\n columnKey: C,\n onSortCriterionChange: (detail: SortCriterionDetail<C>) => void,\n sortCriterion?: { key: C; sortDirection: 'ascending' | 'descending' }[]\n) {\n for (const column of columnsArray) {\n if (column.key === columnKey) {\n if (column.value.sortable === 'enabled') {\n let sortDirection;\n if (sortCriterion != null) {\n for (const criterion of sortCriterion) {\n if (criterion.key === column.key) {\n sortDirection = criterion.sortDirection;\n break;\n }\n }\n }\n const newDirection = sortDirection === 'ascending' ? 'descending' : 'ascending';\n onSortCriterionChange([{ key: columnKey, sortDirection: newDirection }]);\n return true;\n }\n break;\n }\n }\n return false;\n}\n","/**\n * @license\n * Copyright (c) %FIRST_YEAR% %CURRENT_YEAR%, Oracle and/or its affiliates.\n * The Universal Permissive License (UPL), Version 1.0\n * as shown at https://oss.oracle.com/licenses/upl/\n * @ignore\n */\nimport { MutableRef } from 'preact/hooks';\nimport { keyExtractor } from '../../utils/PRIVATE_collectionUtils';\nimport { Keys, containsKey, isSameKey, addKey, removeKey } from '../../utils/UNSAFE_keys';\nimport { SizingInfo, TableColumn } from '../Table';\nimport {\n logicalCellExtractor,\n getCellType,\n getRowKeyForRowIndex,\n getRowIndexForRowElement,\n getElementFromCell,\n getColumnIndexForHeaderFooterElement\n} from './TableDomUtils';\nimport { applyScrollDetail } from './TableScrollUtils';\nimport { SelectionMode } from '../../UNSAFE_Collection';\nimport { Cell, TableSelectionDetail } from '../../UNSAFE_TableView';\n\n/**\n * Helper function to handle a selection gesture (click, spacebar, etc...)\n */\nexport function handleSelectionGesture<K, D, C>(\n root: HTMLDivElement,\n tableId: string,\n columnsArray: TableColumn<K, D, C>[],\n targetElement: HTMLElement,\n isMultiSelectGesture: boolean,\n onSelectionChange: (detail: TableSelectionDetail<K, C>, isExtendableSelection: boolean) => void,\n selectionMode?: { row?: SelectionMode; column?: SelectionMode },\n selected?: { row?: Keys<K>; column?: Keys<C> }\n) {\n const emptyKeys = { all: false, keys: new Set() };\n let selectedRows = selected?.row != null ? selected.row : (emptyKeys as Keys<K>);\n let selectedColumns = selected?.column != null ? selected.column : (emptyKeys as Keys<C>);\n\n const newRowKey = keyExtractor(targetElement, `[data-oj-table-data-row='${tableId}']`) as K;\n if (newRowKey != null) {\n if (selectionMode?.row === 'single' || selectionMode?.row === 'multiple') {\n if (selectedRows == null) {\n selectedRows = { all: false, keys: new Set([newRowKey]) };\n } else if (!containsKey(selectedRows, newRowKey)) {\n if (isMultiSelectGesture && selectionMode.row === 'multiple') {\n selectedRows = addKey(selectedRows, newRowKey);\n } else {\n selectedRows = { all: false, keys: new Set([newRowKey]) };\n }\n } else if (isMultiSelectGesture) {\n selectedRows = removeKey(selectedRows, newRowKey, false);\n } else {\n selectedRows = { all: false, keys: new Set([newRowKey]) };\n }\n selectedColumns = emptyKeys as Keys<C>;\n }\n } else if (selectionMode?.column === 'single' || selectionMode?.column === 'multiple') {\n const cellElement = targetElement.closest(\n `[data-oj-table-focusable='${tableId}']`\n ) as HTMLElement;\n if (cellElement != null) {\n const cellType = getCellType(cellElement);\n if (cellType === 'header' || cellType === 'footer') {\n const index = getColumnIndexForHeaderFooterElement(\n root,\n tableId,\n cellElement,\n cellType === 'header'\n );\n if (index != null) {\n const column = columnsArray[index];\n if (column.value.selectable !== 'disabled') {\n if (selectedColumns == null) {\n selectedColumns = { all: false, keys: new Set([column.key]) };\n } else if (!containsKey(selectedColumns, column.key)) {\n if (isMultiSelectGesture && selectionMode.column === 'multiple') {\n selectedColumns = addKey(selectedColumns, column.key);\n } else {\n selectedColumns = { all: false, keys: new Set([column.key]) };\n }\n } else if (isMultiSelectGesture) {\n selectedColumns = removeKey(selectedColumns, column.key, false);\n } else {\n selectedColumns = { all: false, keys: new Set([column.key]) };\n }\n selectedRows = emptyKeys as Keys<K>;\n }\n }\n }\n }\n }\n\n if (!isSameKey(selectedRows, selected?.row) || !isSameKey(selectedColumns, selected?.column)) {\n onSelectionChange(\n { value: { row: selectedRows, column: selectedColumns }, target: targetElement },\n false\n );\n }\n}\n\n/**\n * Helper function to calculate and apply a new selection state corresponding to the range provided\n */\nfunction _applyRangeSelection<K, D, C>(\n root: HTMLDivElement,\n tableId: string,\n columnsArray: TableColumn<K, D, C>[],\n targetElement: HTMLElement,\n startIndex: number,\n endIndex: number,\n isRowGesture: boolean,\n onSelectionChange: (detail: TableSelectionDetail<K, C>, isExtendableSelection: boolean) => void,\n selectionMode?: { row?: SelectionMode; column?: SelectionMode },\n selected?: { row?: Keys<K>; column?: Keys<C> }\n) {\n const emptyKeys = { all: false, keys: new Set() };\n let selectedRows = selected?.row != null ? selected.row : (emptyKeys as Keys<K>);\n let selectedColumns = selected?.column != null ? selected.column : (emptyKeys as Keys<C>);\n\n if (isRowGesture) {\n selectedColumns = emptyKeys as Keys<C>;\n if (selectionMode?.row === 'multiple') {\n selectedRows = emptyKeys as Keys<K>;\n // selected rows should be added in the order that they are selected\n if (startIndex <= endIndex) {\n for (let i = startIndex; i <= endIndex; i++) {\n const key = getRowKeyForRowIndex(root, tableId, i) as K;\n selectedRows = addKey(selectedRows, key) as Keys<K>;\n }\n } else {\n for (let i = startIndex; i >= endIndex; i--) {\n const key = getRowKeyForRowIndex(root, tableId, i) as K;\n selectedRows = addKey(selectedRows, key) as Keys<K>;\n }\n }\n }\n } else {\n selectedRows = emptyKeys as Keys<K>;\n if (selectionMode?.column === 'multiple') {\n selectedColumns = emptyKeys as Keys<C>;\n // selected columns should be added in the order that they are selected\n if (startIndex <= endIndex) {\n for (let i = startIndex; i <= endIndex; i++) {\n const column = columnsArray[i];\n if (column.value.selectable !== 'disabled') {\n selectedColumns = addKey(selectedColumns, column.key);\n }\n }\n } else {\n for (let i = startIndex; i >= endIndex; i--) {\n const column = columnsArray[i];\n if (column.value.selectable !== 'disabled') {\n selectedColumns = addKey(selectedColumns, column.key);\n }\n }\n }\n }\n }\n\n if (!isSameKey(selectedRows, selected?.row) || !isSameKey(selectedColumns, selected?.column)) {\n onSelectionChange(\n { value: { row: selectedRows, column: selectedColumns }, target: targetElement },\n true\n );\n }\n}\n\n/**\n * Determines whether a potential range selection gesture is valid based on the given target\n */\nexport function isRangeSelectionGesture<K, C>(\n root: HTMLDivElement,\n tableId: string,\n targetElement: HTMLElement,\n currentCell: Cell<K, C>,\n selectionMode?: { row?: SelectionMode; column?: SelectionMode }\n) {\n const targetCell = logicalCellExtractor(\n targetElement,\n tableId,\n `[data-oj-table-focusable='${tableId}']`\n ) as Cell<K, C>;\n if (\n ((selectionMode?.row === 'multiple' && currentCell.type === 'data') ||\n (selectionMode?.column === 'multiple' &&\n (currentCell.type === 'header' || currentCell.type === 'footer'))) &&\n targetCell?.type === currentCell.type\n ) {\n const currentCellElement = getElementFromCell(root, tableId, currentCell);\n const targetCellElement = getElementFromCell(root, tableId, targetCell);\n if (currentCellElement != null && targetCellElement != null) {\n const isRow = targetCell?.type === 'data';\n if (isRow) {\n return (\n getRowIndexForRowElement(\n root,\n tableId,\n currentCellElement.parentElement as HTMLElement\n ) != null &&\n getRowIndexForRowElement(root, tableId, targetCellElement.parentElement as HTMLElement) !=\n null\n );\n } else if (targetCell?.type === 'header' || targetCell?.type === 'footer') {\n const isHeader = targetCell?.type === 'header';\n return (\n getColumnIndexForHeaderFooterElement(root, tableId, currentCellElement, isHeader) !=\n null &&\n getColumnIndexForHeaderFooterElement(root, tableId, targetCellElement, isHeader) != null\n );\n }\n }\n }\n return false;\n}\n\n/**\n * Helper function to handle a range selection gesture (shift+click)\n */\nexport function handleRangeSelectionGesture<K, D, C>(\n root: HTMLDivElement,\n tableId: string,\n columnsArray: TableColumn<K, D, C>[],\n targetElement: HTMLElement,\n currentCell: Cell<K, C>,\n selectionExtensionElementRef: MutableRef<HTMLElement | undefined>,\n onSelectionChange: (detail: TableSelectionDetail<K, C>, isExtendableSelection: boolean) => void,\n selectionMode?: { row?: SelectionMode; column?: SelectionMode },\n selected?: { row?: Keys<K>; column?: Keys<C> }\n) {\n const targetCell = logicalCellExtractor(\n targetElement,\n tableId,\n `[data-oj-table-focusable='${tableId}']`\n ) as Cell<K, C>;\n const currentCellElement = getElementFromCell(root, tableId, currentCell);\n const targetCellElement = getElementFromCell(root, tableId, targetCell);\n if (currentCellElement != null && targetCellElement != null) {\n if (\n ((selectionMode?.row === 'multiple' && targetCell?.type === 'data') ||\n (selectionMode?.column === 'multiple' &&\n (targetCell?.type === 'header' || targetCell?.type === 'footer'))) &&\n targetCell?.type === currentCell.type\n ) {\n let startIndex;\n let endIndex;\n let endElement;\n const isRow = targetCell?.type === 'data';\n if (isRow) {\n endElement = targetCellElement.parentElement as HTMLElement;\n startIndex = getRowIndexForRowElement(\n root,\n tableId,\n currentCellElement.parentElement as HTMLElement\n );\n endIndex = getRowIndexForRowElement(root, tableId, endElement);\n } else if (targetCell?.type === 'header' || targetCell?.type === 'footer') {\n const isHeader = targetCell?.type === 'header';\n endElement = targetCellElement;\n startIndex = getColumnIndexForHeaderFooterElement(\n root,\n tableId,\n currentCellElement,\n isHeader\n );\n endIndex = getColumnIndexForHeaderFooterElement(root, tableId, targetCellElement, isHeader);\n }\n if (startIndex != null && endIndex != null) {\n selectionExtensionElementRef.current = endElement;\n _applyRangeSelection(\n root,\n tableId,\n columnsArray,\n targetElement,\n startIndex,\n endIndex,\n isRow,\n onSelectionChange,\n selectionMode,\n selected\n );\n return true;\n }\n }\n }\n return false;\n}\n\n/**\n * Helper function to handle a selection extension gesture (shift+arrow key)\n */\nexport function handleExtendSelectionGesture<K extends string | number, D, C>(\n root: HTMLDivElement,\n tableId: string,\n columnsArray: TableColumn<K, D, C>[],\n sizingInfoRef: MutableRef<SizingInfo>,\n targetElement: HTMLElement,\n isPrevious: boolean,\n currentCell: Cell<K, C>,\n selectionExtensionElementRef: MutableRef<HTMLElement | undefined>,\n onSelectionChange: (detail: TableSelectionDetail<K, C>, isExtendableSelection: boolean) => void,\n isRtl: boolean,\n fullColumnWidths?: number[],\n selectionMode?: { row?: SelectionMode; column?: SelectionMode },\n selected?: { row?: Keys<K>; column?: Keys<C> }\n) {\n const currentCellElement = getElementFromCell(root, tableId, currentCell);\n if (currentCellElement != null) {\n let startIndex;\n let startElement;\n const isRow = currentCell.type === 'data';\n const isHeader = currentCell.type === 'header';\n if (isRow) {\n startElement = currentCellElement.parentElement as HTMLElement;\n startIndex = getRowIndexForRowElement(root, tableId, startElement);\n } else {\n startElement = currentCellElement;\n startIndex = getColumnIndexForHeaderFooterElement(root, tableId, startElement, isHeader);\n }\n if (startIndex != null) {\n let endIndex;\n let extendedElement;\n const cursorElement = selectionExtensionElementRef.current;\n if (cursorElement != null) {\n extendedElement = isPrevious\n ? (cursorElement.previousElementSibling as HTMLElement)\n : (cursorElement.nextElementSibling as HTMLElement);\n if (extendedElement != null) {\n selectionExtensionElementRef.current = extendedElement;\n endIndex = isRow\n ? getRowIndexForRowElement(root, tableId, extendedElement)\n : getColumnIndexForHeaderFooterElement(root, tableId, extendedElement, isHeader);\n } else {\n endIndex = isRow\n ? getRowIndexForRowElement(root, tableId, cursorElement)\n : getColumnIndexForHeaderFooterElement(root, tableId, cursorElement, isHeader);\n }\n } else {\n extendedElement = isPrevious\n ? (startElement.previousElementSibling as HTMLElement)\n : (startElement.nextElementSibling as HTMLElement);\n if (extendedElement != null) {\n selectionExtensionElementRef.current = extendedElement;\n endIndex = isRow\n ? getRowIndexForRowElement(root, tableId, extendedElement)\n : getColumnIndexForHeaderFooterElement(root, tableId, extendedElement, isHeader);\n } else {\n endIndex = startIndex;\n }\n }\n if (endIndex != null) {\n _applyRangeSelection(\n root,\n tableId,\n columnsArray,\n targetElement,\n startIndex,\n endIndex,\n isRow,\n onSelectionChange,\n selectionMode,\n selected\n );\n }\n\n // scroll 'extensionElement' into view\n const extensionElement =\n selectionExtensionElementRef.current != null\n ? selectionExtensionElementRef.current\n : currentCellElement;\n let extensionCell;\n if (isRow) {\n const rowKey = keyExtractor(extensionElement, `[data-oj-table-data-row='${tableId}']`) as K;\n extensionCell = {\n type: currentCell.type,\n rowKey: rowKey,\n columnKey: currentCell.columnKey\n };\n } else {\n extensionCell = logicalCellExtractor(\n extensionElement,\n tableId,\n `[data-oj-table-focusable='${tableId}']`\n ) as Cell<K, C>;\n }\n applyScrollDetail(\n root,\n tableId,\n columnsArray,\n sizingInfoRef.current,\n { cell: extensionCell, locationX: 'inView', locationY: 'inView' },\n isRtl,\n fullColumnWidths\n );\n }\n }\n}\n","/**\n * @license\n * Copyright (c) %FIRST_YEAR% %CURRENT_YEAR%, Oracle and/or its affiliates.\n * The Universal Permissive License (UPL), Version 1.0\n * as shown at https://oss.oracle.com/licenses/upl/\n * @ignore\n */\nimport { useCallback, MutableRef, Ref } from 'preact/hooks';\nimport { getClientHints } from '../../utils/PRIVATE_clientHints';\nimport { Keys } from '../../utils/UNSAFE_keys';\nimport { SizingInfo, TableColumn } from '../Table';\nimport { handleRowActionGesture, handleSortActionGesture } from '../utils/TableActionUtils';\nimport { getElementFromCell } from '../utils/TableDomUtils';\nimport {\n handleAdjacentRowGesture,\n handleAdjacentColumnGesture,\n handlePageRowGesture,\n handleJumpColumnGesture\n} from '../utils/TableNavigationUtils';\nimport { handleSelectionGesture, handleExtendSelectionGesture } from '../utils/TableSelectionUtils';\nimport { SelectionMode } from '../../UNSAFE_Collection';\nimport {\n Cell,\n CurrentCellDetail,\n RowActionDetail,\n SortCriterionDetail,\n TableSelectionDetail\n} from '../../UNSAFE_TableView';\n\ntype UseKeyboardHandlingProps<K, D, C extends string> = {\n outerTableRef: Ref<HTMLDivElement>;\n tableId: string;\n data: D[] | null;\n isRtl: boolean;\n isTabbableMode: boolean;\n columnsArray: TableColumn<K, D, C>[];\n sizingInfoRef: MutableRef<SizingInfo>;\n selectionExtensionElementRef: MutableRef<HTMLElement | undefined>;\n onCurrentCellChanged: (detail: CurrentCellDetail<K, C>) => void;\n fullColumnWidths?: number[];\n currentCell?: Cell<K, C>;\n selectionMode?: { row?: SelectionMode; column?: SelectionMode };\n selected?: { row?: Keys<K>; column?: Keys<C> };\n onTableSelectionChange?: (\n detail: TableSelectionDetail<K, C>,\n isExtendableSelection: boolean\n ) => void;\n onRowAction?: (detail: RowActionDetail<K, D>) => void;\n sortCriterion?: { key: C; sortDirection: 'ascending' | 'descending' }[];\n onSortCriterionChange?: (detail: SortCriterionDetail<C>) => void;\n};\n\n/**\n * Hook that manages keyboard interactions on the Preact Table\n */\nexport function useKeyboardHandling<K extends string | number, D, C extends string>({\n outerTableRef,\n tableId,\n data,\n isRtl,\n isTabbableMode,\n columnsArray,\n sizingInfoRef,\n selectionExtensionElementRef,\n fullColumnWidths,\n currentCell,\n onCurrentCellChanged,\n selectionMode,\n selected,\n onTableSelectionChange,\n onRowAction,\n sortCriterion,\n onSortCriterionChange\n}: UseKeyboardHandlingProps<K, D, C>) {\n // Keydown handler for the outer Table. This handles all internal\n // keyboard navigation for the Table.\n const _keyDownHandler = useCallback(\n (event: KeyboardEvent) => {\n const platform = getClientHints().platform;\n const keyHandlers: Record<string, (root: HTMLDivElement) => void> = {\n ' ': function (root: HTMLDivElement) {\n if (outerTableRef.current != null) {\n if (currentCell != null) {\n if (!isTabbableMode) {\n if (onTableSelectionChange != null) {\n handleSelectionGesture(\n outerTableRef.current,\n tableId,\n columnsArray,\n getElementFromCell(root, tableId, currentCell) as HTMLElement,\n true,\n onTableSelectionChange,\n selectionMode,\n selected\n );\n }\n event.preventDefault();\n }\n if (\n onRowAction != null &&\n data != null &&\n handleRowActionGesture(\n outerTableRef.current,\n tableId,\n data,\n onRowAction,\n event.target as HTMLElement,\n currentCell\n )\n ) {\n event.stopPropagation();\n }\n }\n }\n },\n Enter: function () {\n if (outerTableRef.current != null) {\n if (currentCell != null) {\n if (\n onRowAction != null &&\n data != null &&\n currentCell.type === 'data' &&\n handleRowActionGesture(\n outerTableRef.current,\n tableId,\n data,\n onRowAction,\n event.target as HTMLElement,\n currentCell\n )\n ) {\n event.stopPropagation();\n } else if (\n !isTabbableMode &&\n onSortCriterionChange != null &&\n currentCell.type === 'header' &&\n handleSortActionGesture(\n columnsArray,\n currentCell.columnKey,\n onSortCriterionChange,\n sortCriterion\n )\n ) {\n event.stopPropagation();\n }\n }\n }\n },\n ArrowUp: function (root: HTMLDivElement) {\n if (outerTableRef.current != null) {\n if (!isTabbableMode && currentCell != null) {\n if (\n currentCell.type === 'data' &&\n event.shiftKey &&\n onTableSelectionChange != null &&\n selectionMode?.row === 'multiple'\n ) {\n handleExtendSelectionGesture(\n outerTableRef.current,\n tableId,\n columnsArray,\n sizingInfoRef,\n root,\n true,\n currentCell,\n selectionExtensionElementRef,\n onTableSelectionChange,\n isRtl,\n fullColumnWidths,\n selectionMode,\n selected\n );\n } else {\n handleAdjacentRowGesture(\n root,\n tableId,\n columnsArray,\n currentCell,\n onCurrentCellChanged,\n true\n );\n }\n event.preventDefault();\n }\n }\n },\n ArrowDown: function (root: HTMLDivElement) {\n if (outerTableRef.current != null) {\n if (!isTabbableMode && currentCell != null) {\n if (\n currentCell.type === 'data' &&\n event.shiftKey &&\n onTableSelectionChange != null &&\n selectionMode?.row === 'multiple'\n ) {\n handleExtendSelectionGesture(\n outerTableRef.current,\n tableId,\n columnsArray,\n sizingInfoRef,\n root,\n false,\n currentCell,\n selectionExtensionElementRef,\n onTableSelectionChange,\n isRtl,\n fullColumnWidths,\n selectionMode,\n selected\n );\n } else {\n handleAdjacentRowGesture(\n root,\n tableId,\n columnsArray,\n currentCell,\n onCurrentCellChanged,\n false\n );\n }\n event.preventDefault();\n }\n }\n },\n ArrowLeft: function (root: HTMLDivElement) {\n if (outerTableRef.current != null) {\n if (!isTabbableMode && currentCell != null) {\n if (\n (currentCell.type === 'header' || currentCell.type === 'footer') &&\n event.shiftKey &&\n onTableSelectionChange != null &&\n selectionMode?.column === 'multiple'\n ) {\n handleExtendSelectionGesture(\n outerTableRef.current,\n tableId,\n columnsArray,\n sizingInfoRef,\n root,\n true,\n currentCell,\n selectionExtensionElementRef,\n onTableSelectionChange,\n isRtl,\n fullColumnWidths,\n selectionMode,\n selected\n );\n } else {\n handleAdjacentColumnGesture(\n columnsArray,\n currentCell,\n onCurrentCellChanged,\n !isRtl\n );\n }\n event.preventDefault();\n }\n }\n },\n ArrowRight: function (root: HTMLDivElement) {\n if (outerTableRef.current != null) {\n if (!isTabbableMode && currentCell != null) {\n if (\n (currentCell.type === 'header' || currentCell.type === 'footer') &&\n event.shiftKey &&\n onTableSelectionChange != null &&\n selectionMode?.column === 'multiple'\n ) {\n handleExtendSelectionGesture(\n outerTableRef.current,\n tableId,\n columnsArray,\n sizingInfoRef,\n root,\n false,\n currentCell,\n selectionExtensionElementRef,\n onTableSelectionChange,\n isRtl,\n fullColumnWidths,\n selectionMode,\n selected\n );\n } else {\n handleAdjacentColumnGesture(columnsArray, currentCell, onCurrentCellChanged, isRtl);\n }\n event.preventDefault();\n }\n }\n },\n PageUp: function (root: HTMLDivElement) {\n if (!isTabbableMode && currentCell != null) {\n handlePageRowGesture(\n root,\n tableId,\n columnsArray,\n sizingInfoRef,\n currentCell,\n onCurrentCellChanged,\n true,\n isRtl,\n fullColumnWidths\n );\n event.preventDefault();\n }\n },\n PageDown: function (root: HTMLDivElement) {\n if (!isTabbableMode && currentCell != null) {\n handlePageRowGesture(\n root,\n tableId,\n columnsArray,\n sizingInfoRef,\n currentCell,\n onCurrentCellChanged,\n false,\n isRtl,\n fullColumnWidths\n );\n event.preventDefault();\n }\n },\n Home: function (root: HTMLDivElement) {\n if (!isTabbableMode && currentCell != null) {\n handleJumpColumnGesture(\n root,\n tableId,\n columnsArray,\n currentCell,\n onCurrentCellChanged,\n true,\n platform === 'mac' ? event.metaKey : event.ctrlKey\n );\n event.preventDefault();\n }\n },\n End: function (root: HTMLDivElement) {\n if (!isTabbableMode && currentCell != null) {\n handleJumpColumnGesture(\n root,\n tableId,\n columnsArray,\n currentCell,\n onCurrentCellChanged,\n false,\n platform === 'mac' ? event.metaKey : event.ctrlKey\n );\n event.preventDefault();\n }\n }\n };\n if (Object.keys(keyHandlers).includes(event.key) && outerTableRef.current != null) {\n keyHandlers[event.key](outerTableRef.current);\n }\n },\n [\n outerTableRef,\n tableId,\n data,\n isRtl,\n isTabbableMode,\n columnsArray,\n sizingInfoRef,\n selectionExtensionElementRef,\n fullColumnWidths,\n currentCell,\n onCurrentCellChanged,\n selectionMode,\n selected,\n onTableSelectionChange,\n onRowAction,\n sortCriterion,\n onSortCriterionChange\n ]\n );\n\n return { onKeyDown: _keyDownHandler };\n}\n","/**\n * @license\n * Copyright (c) %FIRST_YEAR% %CURRENT_YEAR%, Oracle and/or its affiliates.\n * The Universal Permissive License (UPL), Version 1.0\n * as shown at https://oss.oracle.com/licenses/upl/\n * @ignore\n */\nimport { MutableRef } from 'preact/hooks';\nimport { ColumnResizeInfo, TableColumn } from '../Table';\nimport { ColumnResizeDetail, ColumnWidths } from '../../UNSAFE_TableView';\nimport { getElementContainsFunc } from '../../utils/PRIVATE_collectionUtils';\n\n/**\n * Helper function to handle a hover over a resizable column region gesture.\n */\nexport function handleOverResizeRegionGesture<K, D, C>(\n root: HTMLDivElement,\n tableId: string,\n event: PointerEvent,\n columnsArray: TableColumn<K, D, C>[],\n resizeInfoRef: MutableRef<ColumnResizeInfo<C>>,\n isRtl: boolean\n) {\n // handle hover feedback around potentially resizable columns\n _updateResizingState(root, tableId, event, columnsArray, resizeInfoRef, isRtl);\n}\n\n/**\n * Helper function to handle a column resize start gesture (pointer down).\n */\nexport function handleColumnResizeStartGesture<K, D, C extends string>(\n root: HTMLDivElement,\n tableId: string,\n event: PointerEvent,\n columnsArray: TableColumn<K, D, C>[],\n appliedColumnWidths: ColumnWidths<C>,\n resizeInfoRef: MutableRef<ColumnResizeInfo<C>>,\n isRtl: boolean,\n fullColumnWidths?: number[],\n onColumnResizing?: (detail: ColumnResizeDetail<C>) => void\n) {\n if (fullColumnWidths != null) {\n if (resizeInfoRef.current.key == null) {\n _updateResizingState(root, tableId, event, columnsArray, resizeInfoRef, isRtl);\n }\n if (resizeInfoRef.current.key != null) {\n const innerTable = root.querySelector(`[data-oj-table-inner-table='${tableId}']`);\n if (innerTable != null) {\n const rect = innerTable.getBoundingClientRect();\n const pointerX = isRtl ? rect.right - event.clientX : event.clientX - rect.left;\n\n const resizeColumnWidths = [];\n for (let i = 0; i < fullColumnWidths.length; i++) {\n const columnWidth = fullColumnWidths[i];\n resizeColumnWidths.push(columnWidth as number);\n }\n resizeInfoRef.current = {\n isResizing: true,\n isResizeHover: true,\n key: resizeInfoRef.current.key,\n startX: pointerX,\n delta: 0,\n fullColumnWidths: resizeColumnWidths,\n ignoreClick: resizeInfoRef.current.ignoreClick\n };\n if (onColumnResizing != null) {\n onColumnResizing({\n key: resizeInfoRef.current.key,\n delta: 0,\n allColumnWidths: appliedColumnWidths\n });\n }\n return true;\n }\n }\n }\n return false;\n}\n\n/**\n * Helper function to ensure the resizing state is updated based on the latest pointer event.\n */\nfunction _updateResizingState<K, D, C>(\n root: HTMLDivElement,\n tableId: string,\n event: PointerEvent,\n columnsArray: TableColumn<K, D, C>[],\n resizeInfoRef: MutableRef<ColumnResizeInfo<C>>,\n isRtl: boolean\n) {\n const headerRowElement = root.querySelector(\n `[data-oj-table-header-row='${tableId}']`\n ) as HTMLElement;\n if (headerRowElement != null) {\n const headerElements = headerRowElement.querySelectorAll(\n `[data-oj-table-header-cell='${tableId}']`\n ) as NodeListOf<HTMLElement>;\n if (getElementContainsFunc(headerRowElement)(event.target as HTMLElement)) {\n let isResizeHover = false;\n for (let i = 0; i < headerElements.length; i++) {\n const headerElement = headerElements[i];\n const cellRect = headerElement.getBoundingClientRect();\n const endEdge = isRtl ? cellRect.left : cellRect.right;\n if (Math.abs(endEdge - event.pageX) <= 8) {\n if (columnsArray[i].value.edgeResizable !== 'enabled') {\n break;\n }\n // resize operation on end side of header cell\n resizeInfoRef.current.key = columnsArray[i].key;\n headerRowElement.style.cursor = 'col-resize';\n isResizeHover = true;\n resizeInfoRef.current.isResizeHover = true;\n }\n }\n if (!isResizeHover) {\n headerRowElement.style.cursor = '';\n resizeInfoRef.current.key = undefined;\n resizeInfoRef.current.isResizeHover = false;\n }\n } else {\n if (headerRowElement != null) {\n headerRowElement.style.cursor = '';\n }\n resizeInfoRef.current.key = undefined;\n resizeInfoRef.current.isResizeHover = false;\n }\n }\n}\n\n/**\n * Helper function to handle a pointer move gesture during a column resize.\n */\nexport function handleColumnResizingGesture<C extends string>(\n root: HTMLDivElement,\n tableId: string,\n event: PointerEvent,\n appliedColumnWidths: ColumnWidths<C>,\n resizeInfoRef: MutableRef<ColumnResizeInfo<C>>,\n isRtl: boolean,\n fullColumnWidths?: number[],\n onColumnResizing?: (detail: ColumnResizeDetail<C>) => void\n) {\n if (resizeInfoRef.current.isResizing && fullColumnWidths != null) {\n const innerTable = root.querySelector(`[data-oj-table-inner-table='${tableId}']`);\n if (innerTable != null) {\n const rect = innerTable.getBoundingClientRect();\n const currentX = isRtl ? rect.right - event.clientX : event.clientX - rect.left;\n\n resizeInfoRef.current.delta = currentX - resizeInfoRef.current.startX;\n // handle resize move operation\n if (onColumnResizing != null) {\n onColumnResizing({\n key: resizeInfoRef.current.key,\n delta: resizeInfoRef.current.delta,\n allColumnWidths: appliedColumnWidths\n });\n }\n }\n }\n}\n\n/**\n * Helper function to handle a column resize end gesture (pointer up).\n */\nexport function handleColumnResizeEndGesture<C extends string>(\n root: HTMLDivElement,\n tableId: string,\n event: PointerEvent,\n appliedColumnWidths: ColumnWidths<C>,\n resizeInfoRef: MutableRef<ColumnResizeInfo<C>>,\n isRtl: boolean,\n onColumnResize?: (detail: ColumnResizeDetail<C>) => void\n) {\n if (resizeInfoRef.current.isResizing) {\n if (onColumnResize != null) {\n const resizeColumnWidths = [];\n for (const columnWidth of resizeInfoRef.current.fullColumnWidths) {\n resizeColumnWidths.push(columnWidth);\n }\n const innerTable = root.querySelector(`[data-oj-table-inner-table='${tableId}']`);\n if (innerTable != null) {\n const rect = innerTable.getBoundingClientRect();\n const currentX = isRtl ? rect.right - event.clientX : event.clientX - rect.left;\n\n resizeInfoRef.current.delta = currentX - resizeInfoRef.current.startX;\n onColumnResize({\n key: resizeInfoRef.current.key,\n delta: resizeInfoRef.current.delta,\n allColumnWidths: appliedColumnWidths\n });\n }\n }\n }\n resizeInfoRef.current = {\n isResizing: false,\n isResizeHover: resizeInfoRef.current.isResizeHover,\n ignoreClick: resizeInfoRef.current.ignoreClick\n };\n}\n\n/**\n * Helper function to handle the pointer leaving the entire Table when previously hovering\n * over a column resize region.\n */\nexport function handleLeaveResizingGesture<C>(\n root: HTMLDivElement,\n tableId: string,\n resizeInfoRef: MutableRef<ColumnResizeInfo<C>>\n) {\n if (!resizeInfoRef.current.isResizing) {\n const headerRowElement = root.querySelector(\n `[data-oj-table-header-row='${tableId}']`\n ) as HTMLElement;\n if (headerRowElement != null) {\n headerRowElement.style.cursor = '';\n }\n resizeInfoRef.current.isResizeHover = false;\n }\n}\n\n/**\n * Helper function to handle a pointer entering the Table when it was previously handling\n * a column resize gesture.\n */\nexport function handleEnterResizingGesture<C extends string>(\n root: HTMLDivElement,\n tableId: string,\n event: PointerEvent,\n appliedColumnWidths: ColumnWidths<C>,\n resizeInfoRef: MutableRef<ColumnResizeInfo<C>>,\n isRtl: boolean,\n onColumnResize?: (detail: ColumnResizeDetail<C>) => void\n) {\n // handle case where user was resizing, moved pointer out of the Table,\n // released the button, and has now entered the table once again\n if (resizeInfoRef.current.isResizing && event.buttons === 0) {\n handleColumnResizeEndGesture(\n root,\n tableId,\n event,\n appliedColumnWidths,\n resizeInfoRef,\n isRtl,\n onColumnResize\n );\n }\n}\n","/**\n * @license\n * Copyright (c) %FIRST_YEAR% %CURRENT_YEAR%, Oracle and/or its affiliates.\n * The Universal Permissive License (UPL), Version 1.0\n * as shown at https://oss.oracle.com/licenses/upl/\n * @ignore\n */\nimport { useCallback, useRef, MutableRef, Ref } from 'preact/hooks';\nimport { getClientHints } from '../../utils/PRIVATE_clientHints';\nimport { getIsSelectionPending } from '../../utils/PRIVATE_textSelectionUtils';\nimport { Keys } from '../../utils/UNSAFE_keys';\nimport { ColumnResizeInfo, TableColumn } from '../Table';\nimport { handleRowActionGesture } from '../utils/TableActionUtils';\nimport {\n handleSelectionGesture,\n handleRangeSelectionGesture,\n isRangeSelectionGesture\n} from '../utils/TableSelectionUtils';\nimport {\n handleOverResizeRegionGesture,\n handleColumnResizeStartGesture,\n handleColumnResizingGesture,\n handleColumnResizeEndGesture,\n handleLeaveResizingGesture,\n handleEnterResizingGesture\n} from '../utils/TableSizingUtils';\nimport { SelectionMode } from '../../UNSAFE_Collection';\nimport {\n Cell,\n ColumnWidths,\n RowActionDetail,\n ColumnResizeDetail,\n TableSelectionDetail\n} from '../../UNSAFE_TableView';\n\ntype UsePointerHandlingOptions<K, D, C extends string> = {\n outerTableRef: Ref<HTMLDivElement>;\n tableId: string;\n data: D[] | null;\n isRtl: boolean;\n columnsArray: TableColumn<K, D, C>[];\n appliedColumnWidths: ColumnWidths<C>;\n resizeInfoRef: MutableRef<ColumnResizeInfo<C>>;\n selectionExtensionElementRef: MutableRef<HTMLElement | undefined>;\n fullColumnWidths?: number[];\n onColumnResizing?: (detail: ColumnResizeDetail<C>) => void;\n onColumnResize?: (detail: ColumnResizeDetail<C>) => void;\n currentCell?: Cell<K, C>;\n selectionMode?: { row?: SelectionMode; column?: SelectionMode };\n selected?: { row?: Keys<K>; column?: Keys<C> };\n onTableSelectionChange?: (\n detail: TableSelectionDetail<K, C>,\n isSelectionExtension: boolean\n ) => void;\n onRowAction?: (detail: RowActionDetail<K, D>) => void;\n};\n\n/**\n * Hook that manages pointer interactions on the Preact Table\n */\nexport function usePointerHandling<K extends string | number, D, C extends string>({\n outerTableRef,\n tableId,\n data,\n isRtl,\n columnsArray,\n appliedColumnWidths,\n resizeInfoRef,\n selectionExtensionElementRef,\n fullColumnWidths,\n onColumnResizing,\n onColumnResize,\n currentCell,\n selectionMode,\n selected,\n onTableSelectionChange,\n onRowAction\n}: UsePointerHandlingOptions<K, D, C>) {\n // tracks whether the most recent 'pointerdown' event was due to a touch gesture\n const selectionTouchRef = useRef<boolean>(false);\n\n // Pointer move handler for the outer Table.\n const _pointerMoveHandler = useCallback(\n (event: PointerEvent) => {\n if (outerTableRef.current != null && onColumnResizing != null) {\n if (!resizeInfoRef.current.isResizing) {\n handleOverResizeRegionGesture(\n outerTableRef.current,\n tableId,\n event,\n columnsArray,\n resizeInfoRef,\n isRtl\n );\n } else {\n handleColumnResizingGesture(\n outerTableRef.current,\n tableId,\n event,\n appliedColumnWidths,\n resizeInfoRef,\n isRtl,\n fullColumnWidths,\n onColumnResizing\n );\n }\n }\n },\n [\n outerTableRef,\n tableId,\n columnsArray,\n appliedColumnWidths,\n resizeInfoRef,\n isRtl,\n fullColumnWidths,\n onColumnResizing\n ]\n );\n\n // Pointer down handler for the outer Table. It ensures the area targeted is 'current'.\n // NOTE - This event handling is triggered prior to 'onFocus' handling and ensures the\n // 'pending current' area is set when an initial pointer interaction focuses the Table.\n const _pointerDownHandler = useCallback(\n (event: PointerEvent) => {\n if (outerTableRef.current != null) {\n selectionTouchRef.current = event.pointerType === 'touch';\n const targetElement = event.target as HTMLElement;\n if (\n onTableSelectionChange != null &&\n currentCell != null &&\n event.shiftKey &&\n isRangeSelectionGesture(\n outerTableRef.current,\n tableId,\n targetElement,\n currentCell,\n selectionMode\n )\n ) {\n // prevent focus change on selection extension gesture\n if (!getIsSelectionPending()) {\n event.preventDefault();\n }\n } else if (\n handleColumnResizeStartGesture(\n outerTableRef.current,\n tableId,\n event,\n columnsArray,\n appliedColumnWidths,\n resizeInfoRef,\n isRtl,\n fullColumnWidths,\n onColumnResizing\n )\n ) {\n // prevent focus change on column resize gesture\n event.preventDefault();\n resizeInfoRef.current.ignoreClick = true;\n }\n }\n },\n [\n outerTableRef,\n tableId,\n columnsArray,\n appliedColumnWidths,\n resizeInfoRef,\n isRtl,\n currentCell,\n selectionMode,\n onTableSelectionChange,\n fullColumnWidths,\n onColumnResizing\n ]\n );\n\n // Pointer up handler for the outer Table.\n const _pointerUpHandler = useCallback(\n (event: PointerEvent) => {\n if (outerTableRef.current != null) {\n handleColumnResizeEndGesture(\n outerTableRef.current,\n tableId,\n event,\n appliedColumnWidths,\n resizeInfoRef,\n isRtl,\n onColumnResize\n );\n }\n },\n [outerTableRef, tableId, appliedColumnWidths, resizeInfoRef, isRtl, onColumnResize]\n );\n\n // Pointer leave handler for the outer Table.\n const _pointerLeaveHandler = useCallback(\n (_event: PointerEvent) => {\n if (outerTableRef.current != null) {\n handleLeaveResizingGesture(outerTableRef.current, tableId, resizeInfoRef);\n }\n },\n [outerTableRef, tableId, resizeInfoRef]\n );\n\n // Pointer leave handler for the outer Table.\n const _pointerEnterHandler = useCallback(\n (event: PointerEvent) => {\n if (outerTableRef.current != null) {\n handleEnterResizingGesture(\n outerTableRef.current,\n tableId,\n event,\n appliedColumnWidths,\n resizeInfoRef,\n isRtl,\n onColumnResize\n );\n }\n },\n [outerTableRef, tableId, appliedColumnWidths, resizeInfoRef, isRtl, onColumnResize]\n );\n\n // Click handler for the outer Table. It ensures the Table's selection state is\n // updated to reflect the area targeted.\n const _clickHandler = useCallback(\n (event: MouseEvent) => {\n let isSelectionExtension = false;\n const platform = getClientHints().platform;\n const target = event.target as HTMLElement;\n if (outerTableRef.current != null) {\n if (\n onTableSelectionChange != null &&\n !resizeInfoRef.current.ignoreClick &&\n !getIsSelectionPending()\n ) {\n if (currentCell != null && event.shiftKey) {\n isSelectionExtension = handleRangeSelectionGesture(\n outerTableRef.current,\n tableId,\n columnsArray,\n target,\n currentCell,\n selectionExtensionElementRef,\n onTableSelectionChange,\n selectionMode,\n selected\n );\n }\n if (!isSelectionExtension) {\n handleSelectionGesture(\n outerTableRef.current,\n tableId,\n columnsArray,\n target,\n (platform === 'mac' ? event.metaKey : event.ctrlKey) || selectionTouchRef.current,\n onTableSelectionChange,\n selectionMode,\n selected\n );\n }\n }\n if (\n onRowAction != null &&\n data != null &&\n !getIsSelectionPending() &&\n handleRowActionGesture(outerTableRef.current, tableId, data, onRowAction, target)\n ) {\n event.stopPropagation();\n }\n }\n resizeInfoRef.current.ignoreClick = false;\n },\n [\n outerTableRef,\n tableId,\n columnsArray,\n data,\n resizeInfoRef,\n selectionExtensionElementRef,\n currentCell,\n selectionMode,\n selected,\n onTableSelectionChange,\n onRowAction\n ]\n );\n\n return {\n onPointerMove: _pointerMoveHandler,\n onPointerDown: _pointerDownHandler,\n onPointerUp: _pointerUpHandler,\n onPointerLeave: _pointerLeaveHandler,\n onPointerEnter: _pointerEnterHandler,\n onClick: _clickHandler\n };\n}\n","/**\n * @license\n * Copyright (c) %FIRST_YEAR% %CURRENT_YEAR%, Oracle and/or its affiliates.\n * The Universal Permissive License (UPL), Version 1.0\n * as shown at https://oss.oracle.com/licenses/upl/\n * @ignore\n */\nimport { useCallback, Ref } from 'preact/hooks';\nimport { TableColumn } from '../Table';\nimport { updateStickyEdges } from '../utils/TableScrollUtils';\n\ntype UseScrollHandlingProps<K, D, C extends string> = {\n outerTableRef: Ref<HTMLDivElement>;\n columnsArray: TableColumn<K, D, C>[];\n stickyEdgesState: { start?: number; end?: number };\n setStickyEdgesState: (stickyEdgesState: { start?: number; end?: number }) => void;\n fullColumnWidths?: number[];\n};\n\n/**\n * Hook that manages handling scroll events on the Preact Table\n */\nexport function useScrollHandling<K extends string | number, D, C extends string>({\n outerTableRef,\n columnsArray,\n stickyEdgesState,\n setStickyEdgesState,\n fullColumnWidths\n}: UseScrollHandlingProps<K, D, C>) {\n // Scroll hander for the outer Table. It ensures the Table's sticky edges are updated.\n const _scrollHandler = useCallback(() => {\n if (outerTableRef.current != null && fullColumnWidths != null) {\n updateStickyEdges(\n outerTableRef.current,\n columnsArray,\n fullColumnWidths,\n stickyEdgesState,\n setStickyEdgesState,\n outerTableRef.current.scrollLeft\n );\n }\n }, [outerTableRef, columnsArray, stickyEdgesState, setStickyEdgesState, fullColumnWidths]);\n\n return { onScroll: _scrollHandler };\n}\n","/**\n * @license\n * Copyright (c) %FIRST_YEAR% %CURRENT_YEAR%, Oracle and/or its affiliates.\n * The Universal Permissive License (UPL), Version 1.0\n * as shown at https://oss.oracle.com/licenses/upl/\n * @ignore\n */\nimport { useMemo, useRef, MutableRef, Ref } from 'preact/hooks';\nimport { Keys } from '../../utils/UNSAFE_keys';\nimport { mergeProps } from '../../utils/UNSAFE_mergeProps';\nimport { ColumnResizeInfo, SizingInfo, TableColumn } from '../Table';\nimport { useFocusHandling } from './useFocusHandling';\nimport { useKeyboardHandling } from './useKeyboardHandling';\nimport { usePointerHandling } from './usePointerHandling';\nimport { useScrollHandling } from './useScrollHandling';\nimport { SelectionMode } from '../../UNSAFE_Collection';\nimport {\n Cell,\n ColumnWidths,\n CurrentCellDetail,\n RowActionDetail,\n SortCriterionDetail,\n ColumnResizeDetail,\n TableSelectionDetail\n} from '../../UNSAFE_TableView';\n\ntype UseInteractionManagerOptions<K, D, C extends string> = {\n outerTableRef: Ref<HTMLDivElement>;\n tableId: string;\n data: D[] | null;\n isRtl: boolean;\n columnsArray: TableColumn<K, D, C>[];\n appliedColumnWidths: ColumnWidths<C>;\n sizingInfoRef: MutableRef<SizingInfo>;\n resizeInfoRef: MutableRef<ColumnResizeInfo<C>>;\n stickyEdgesState: { start?: number; end?: number };\n setStickyEdgesState: (stickyEdgesState: { start?: number; end?: number }) => void;\n cellHasRenderer: (cell: Cell<K, C>) => boolean;\n fullColumnWidths?: number[];\n onColumnResizing?: (detail: ColumnResizeDetail<C>) => void;\n onColumnResize?: (detail: ColumnResizeDetail<C>) => void;\n currentCellOverride?: Cell<K, C>;\n onPersistCurrentCell?: (detail: CurrentCellDetail<K, C>) => void;\n selectionMode?: { row?: SelectionMode; column?: SelectionMode };\n selected?: { row?: Keys<K>; column?: Keys<C> };\n onSelectionChange?: (detail: TableSelectionDetail<K, C>) => void;\n onRowAction?: (detail: RowActionDetail<K, D>) => void;\n sortCriterion?: { key: C; sortDirection: 'ascending' | 'descending' }[];\n onSortCriterionChange?: (detail: SortCriterionDetail<C>) => void;\n};\n\n/**\n * Hook that manages interactions and events on the Preact Table\n */\nexport function useInteractionManager<K extends string | number, D, C extends string>({\n outerTableRef,\n tableId,\n data,\n isRtl,\n columnsArray,\n appliedColumnWidths,\n sizingInfoRef,\n resizeInfoRef,\n stickyEdgesState,\n setStickyEdgesState,\n cellHasRenderer,\n fullColumnWidths,\n onColumnResizing,\n onColumnResize,\n currentCellOverride,\n onPersistCurrentCell,\n selectionMode,\n selected,\n onSelectionChange,\n onRowAction,\n sortCriterion,\n onSortCriterionChange\n}: UseInteractionManagerOptions<K, D, C>) {\n // tracks the current selection extension element (if any)\n const selectionExtensionElementRef = useRef<HTMLElement>();\n\n // intercept onSelectionChange calls to ensure local selectionExtensionElementRef is cleared\n const onTableSelectionChange = useMemo(() => {\n return onSelectionChange != null\n ? (detail: TableSelectionDetail<K, C>, isExtendableSelection: boolean) => {\n if (!isExtendableSelection) {\n selectionExtensionElementRef.current = undefined;\n }\n onSelectionChange(detail);\n }\n : undefined;\n }, [onSelectionChange]);\n\n // setup focus tracking using the useFocusHandling hook\n const {\n focusHandlingProps,\n currentCell,\n onCurrentCellChanged,\n isShowFocusRing,\n isTabbableMode,\n onStartFocusTracking,\n onFocusStartEdge,\n onFocusEndEdge\n } = useFocusHandling({\n outerTableRef,\n tableId,\n columnsArray,\n sizingInfoRef,\n selectionExtensionElementRef,\n isRtl,\n cellSupportsTabbable: cellHasRenderer,\n fullColumnWidths,\n currentCellOverride,\n onPersistCurrentCell\n });\n\n const keyboardHandlingProps = useKeyboardHandling({\n outerTableRef,\n tableId,\n data,\n isRtl,\n isTabbableMode,\n columnsArray,\n sizingInfoRef,\n selectionExtensionElementRef,\n fullColumnWidths,\n currentCell,\n onCurrentCellChanged,\n selectionMode,\n selected,\n onTableSelectionChange,\n onRowAction,\n sortCriterion,\n onSortCriterionChange\n });\n\n const pointerHandlingProps = usePointerHandling({\n outerTableRef,\n tableId,\n data,\n isRtl,\n columnsArray,\n appliedColumnWidths,\n resizeInfoRef,\n selectionExtensionElementRef,\n fullColumnWidths,\n onColumnResizing,\n onColumnResize,\n currentCell,\n selectionMode,\n selected,\n onTableSelectionChange,\n onRowAction\n });\n\n const scrollHandlingProps = useScrollHandling({\n outerTableRef,\n columnsArray,\n stickyEdgesState,\n setStickyEdgesState,\n fullColumnWidths\n });\n\n const interactionManagerProps = mergeProps(\n focusHandlingProps,\n keyboardHandlingProps,\n pointerHandlingProps,\n scrollHandlingProps\n );\n\n return {\n interactionManagerProps,\n onTableSelectionChange,\n isShowFocusRing,\n isTabbableMode,\n currentCell,\n onStartFocusTracking,\n onFocusStartEdge,\n onFocusEndEdge\n };\n}\n","/**\n * @license\n * Copyright (c) %FIRST_YEAR% %CURRENT_YEAR%, Oracle and/or its affiliates.\n * The Universal Permissive License (UPL), Version 1.0\n * as shown at https://oss.oracle.com/licenses/upl/\n * @ignore\n */\nimport { MutableRef } from 'preact/hooks';\nimport { SampledWidths, TableColumn } from '../Table';\nimport { tableStyles } from '../themes/TableStyles.css';\nimport { ColumnWidths } from '../../UNSAFE_TableView';\n\n/**\n * Helper method to extract the individual column widths of the Table\n * depending on its layout. With a 'fixed' layout, an initial 'availableWidth'\n * is required, while with a 'contents' layout, -1 can be provided as the\n * 'availableWidth' initially. This will trigger the layout logic to ensure\n * a non-contstrained Table width is supported, and is needed to match\n * current Redwood behaviors with a 'contents' layout.\n */\nexport function getLayoutColumnWidths<K, D, C extends string>(\n outerTableElement: HTMLDivElement,\n scrollbarWidth: number,\n tableId: string,\n isFixed: boolean,\n sampledColumnWidthsRef: MutableRef<SampledWidths<C> | undefined>,\n availableWidth: number,\n columnsArray: TableColumn<K, D, C>[],\n staticColumnWidths?: ColumnWidths<C>\n) {\n if (isFixed) {\n return _getFixedLayoutColumnWidths(availableWidth, columnsArray, staticColumnWidths);\n }\n let newColumnWidths = _getContentsLayoutColumnWidths(\n outerTableElement,\n tableId,\n sampledColumnWidthsRef,\n availableWidth,\n columnsArray,\n staticColumnWidths\n );\n if (availableWidth === -1) {\n let totalWidth = 0;\n const widthsArray = [];\n for (let i = 0; i < columnsArray.length; i++) {\n const width = newColumnWidths[columnsArray[i].key];\n widthsArray.push(width);\n totalWidth += width;\n }\n // for content sizing, apply the new column widths immediately, and check to see\n // if all space is actually utilized - this supports no width constraint scenarios\n _udpateTableSizing(outerTableElement, tableId, widthsArray, totalWidth);\n availableWidth = outerTableElement.getBoundingClientRect().width - scrollbarWidth;\n if (Math.abs(totalWidth - availableWidth) > 0.005) {\n newColumnWidths = _getContentsLayoutColumnWidths(\n outerTableElement,\n tableId,\n sampledColumnWidthsRef,\n availableWidth,\n columnsArray,\n staticColumnWidths\n );\n }\n }\n return newColumnWidths;\n}\n\n/**\n * Helper method to extract the individual column widths of the Table\n * for a 'fixed' layout table that already has its root width applied.\n */\nfunction _getFixedLayoutColumnWidths<K, D, C extends string>(\n availableWidth: number,\n columnsArray: TableColumn<K, D, C>[],\n staticColumnWidths?: ColumnWidths<C>\n) {\n const DEFAULT_COLUMN_WEIGHT = 1;\n const DEFAULT_COLUMN_MIN_WIDTH = 100;\n const DEFAULT_COLUMN_MAX_WIDTH = undefined;\n\n let requiresActiveSizing = false;\n let totalWorkingWeight = 0;\n let forcedTotalWidth = 0;\n let pendingTotalWidth = 0;\n const columnMaxWidthsArray = [];\n const columnWeightsArray = [];\n const forcedColumnWidthsArray = [];\n const newColumnWidthsArray = [];\n const appliedColumnWidthsArray = [];\n for (let i = 0; i < columnsArray.length; i++) {\n const column = columnsArray[i];\n let columnMinWidth = column.value.minWidth;\n if (columnMinWidth == null || columnMinWidth <= 0) {\n columnMinWidth = DEFAULT_COLUMN_MIN_WIDTH;\n }\n let columnMaxWidth = column.value.maxWidth;\n if (columnMaxWidth == null || columnMaxWidth < columnMinWidth) {\n columnMaxWidth = DEFAULT_COLUMN_MAX_WIDTH;\n }\n columnMaxWidthsArray.push(columnMaxWidth);\n let columnWeight = column.value.weight;\n if (columnWeight == null || columnWeight < 1) {\n columnWeight = DEFAULT_COLUMN_WEIGHT;\n }\n columnWeightsArray.push(columnWeight);\n const columnWidth = staticColumnWidths != null ? staticColumnWidths[column.key] : undefined;\n if (columnWidth != null) {\n forcedTotalWidth += columnWidth;\n pendingTotalWidth += columnWidth;\n forcedColumnWidthsArray.push(columnWidth);\n newColumnWidthsArray.push(columnWidth);\n appliedColumnWidthsArray.push(columnWidth);\n } else {\n requiresActiveSizing = true;\n pendingTotalWidth += columnMinWidth;\n totalWorkingWeight += columnWeight;\n forcedColumnWidthsArray.push(undefined);\n newColumnWidthsArray.push(columnMinWidth);\n appliedColumnWidthsArray.push(columnMinWidth);\n }\n }\n\n // enforce min and max rules if active sizing is required and available space remains\n if (requiresActiveSizing && pendingTotalWidth < availableWidth) {\n _enforceFixedMinMaxRules(\n columnsArray,\n availableWidth,\n totalWorkingWeight,\n forcedTotalWidth,\n forcedColumnWidthsArray,\n columnWeightsArray,\n columnMaxWidthsArray,\n newColumnWidthsArray,\n appliedColumnWidthsArray\n );\n }\n return _createColumnWidths(columnsArray, newColumnWidthsArray);\n}\n\n/**\n * Helper function to enforce all of the layout sizing rules on the Table's columns.\n */\nfunction _enforceFixedMinMaxRules<K, D, C>(\n columnsArray: TableColumn<K, D, C>[],\n availableWidth: number,\n totalWorkingWeight: number,\n forcedTotalWidth: number,\n forcedColumnWidthsArray: (number | undefined)[],\n columnWeightsArray: number[],\n columnMaxWidthsArray: (number | undefined)[],\n newColumnWidthsArray: number[],\n appliedColumnWidthsArray: number[]\n) {\n // try and honor the weights of each column combined with the min widths, and then check that against\n // any max widths once completed. if the final result doesn't fill the space AND at least 1 max width\n // rule was enforced, repeat the process until no max rules are enforced OR the space is filled.\n let isMaxRuleApplied = true;\n while (isMaxRuleApplied) {\n isMaxRuleApplied = false;\n _enforceWeightedMinRules(\n columnsArray,\n availableWidth,\n totalWorkingWeight,\n forcedTotalWidth,\n forcedColumnWidthsArray,\n columnWeightsArray,\n newColumnWidthsArray,\n appliedColumnWidthsArray\n );\n let pendingTotalWidth = 0;\n for (let i = 0; i < columnsArray.length; i++) {\n if (forcedColumnWidthsArray[i] == null) {\n const maxWidth = columnMaxWidthsArray[i];\n if (maxWidth != null && newColumnWidthsArray[i] > maxWidth) {\n isMaxRuleApplied = true;\n forcedColumnWidthsArray[i] = maxWidth;\n forcedTotalWidth += maxWidth;\n totalWorkingWeight -= columnWeightsArray[i];\n newColumnWidthsArray[i] = maxWidth;\n appliedColumnWidthsArray[i] = maxWidth;\n }\n }\n pendingTotalWidth += newColumnWidthsArray[i];\n }\n isMaxRuleApplied = isMaxRuleApplied && pendingTotalWidth < availableWidth;\n }\n}\n\n/**\n * Helper method to extract the individual column widths of the Table\n * for a 'contents' layout table that already has its root width applied.\n */\nfunction _getContentsLayoutColumnWidths<K, D, C extends string>(\n outerTableElement: HTMLDivElement,\n tableId: string,\n sampledColumnWidthsRef: MutableRef<SampledWidths<C> | undefined>,\n availableWidth: number,\n columnsArray: TableColumn<K, D, C>[],\n staticColumnWidths?: ColumnWidths<C>\n) {\n const DEFAULT_COLUMN_MIN_WIDTH = undefined;\n const DEFAULT_COLUMN_MAX_WIDTH = undefined;\n\n let requiresActiveSizing = false;\n const columnMinWidthsArray = [] as (number | undefined)[];\n const columnMaxWidthsArray = [];\n const forcedColumnWidthsArray = [];\n const newColumnWidthsArray = [];\n for (let i = 0; i < columnsArray.length; i++) {\n const column = columnsArray[i];\n let columnMinWidth = column.value.minWidth;\n if (columnMinWidth == null || columnMinWidth <= 0) {\n columnMinWidth = DEFAULT_COLUMN_MIN_WIDTH;\n }\n columnMinWidthsArray.push(columnMinWidth);\n let columnMaxWidth = column.value.maxWidth;\n if (columnMaxWidth == null || columnMaxWidth < (columnMinWidth != null ? columnMinWidth : 0)) {\n columnMaxWidth = DEFAULT_COLUMN_MAX_WIDTH;\n }\n columnMaxWidthsArray.push(columnMaxWidth);\n const columnWidth = staticColumnWidths != null ? staticColumnWidths[column.key] : undefined;\n if (columnWidth != null) {\n forcedColumnWidthsArray.push(columnWidth);\n newColumnWidthsArray[i] = columnWidth;\n } else {\n requiresActiveSizing = true;\n forcedColumnWidthsArray.push(undefined);\n }\n }\n\n // short-circuit normal contents sizing if each column specifies a 'width' value\n if (requiresActiveSizing) {\n // if active sizing is required, update min width values to reflect actual widths\n // performance note - this should be the only logic that requires DOM measurements\n let forcedTotalWidth = 0;\n let pendingTotalWidth = 0;\n let totalPreferredWidth = 0;\n let totalWorkingWeight = 0;\n let totalRemainingWeight = 0;\n const sampledWidths = sampledColumnWidthsRef.current;\n const sampledMinWidthsArray = [];\n const sampledWeightWidthsArray = [] as number[];\n const appliedColumnWidthsArray = [];\n if (sampledWidths != null) {\n for (let i = 0; i < columnsArray.length; i++) {\n sampledMinWidthsArray.push(sampledWidths.minWidths[columnsArray[i].key]);\n sampledWeightWidthsArray.push(sampledWidths.weightWidths[columnsArray[i].key]);\n }\n } else {\n sampledColumnWidthsRef.current = {\n minWidths: {} as ColumnWidths<C>,\n weightWidths: {} as ColumnWidths<C>\n };\n const headerElements = outerTableElement.querySelectorAll(\n `[data-oj-table-header-cell='${tableId}']`\n );\n // when sampledColumnWidths are not populated, content wrapping is disabled in the table\n // which allows for measurements to represent the column weights\n for (let i = 0; i < headerElements.length; i++) {\n const sampledWeightWidth = (headerElements[i] as HTMLElement).getBoundingClientRect().width;\n sampledWeightWidthsArray.push(sampledWeightWidth);\n sampledColumnWidthsRef.current.weightWidths[columnsArray[i].key] = sampledWeightWidth;\n }\n // re-enable wrapping, allowing measurements to represent minimum auto-resizable column widths\n outerTableElement.classList.remove(tableStyles.disableWrapping);\n for (let i = 0; i < headerElements.length; i++) {\n const sampledMinWidth = (headerElements[i] as HTMLElement).getBoundingClientRect().width;\n sampledMinWidthsArray.push(sampledMinWidth);\n sampledColumnWidthsRef.current.minWidths[columnsArray[i].key] = sampledMinWidth;\n }\n }\n\n for (let i = 0; i < sampledMinWidthsArray.length; i++) {\n const forcedWidth = forcedColumnWidthsArray[i];\n if (forcedWidth == null) {\n let columnWidth;\n const sampledMinWidth = sampledMinWidthsArray[i];\n const minWidth = columnMinWidthsArray[i];\n const maxWidth = columnMaxWidthsArray[i];\n if (minWidth != null && minWidth >= sampledMinWidth) {\n columnWidth = minWidth;\n } else if (maxWidth != null && sampledMinWidth >= maxWidth) {\n columnWidth = maxWidth;\n } else {\n columnWidth = sampledMinWidth;\n }\n pendingTotalWidth += columnWidth;\n // replace sampled weight with min width if needed\n const columnWeight =\n minWidth != null && minWidth >= sampledWeightWidthsArray[i]\n ? minWidth\n : sampledWeightWidthsArray[i];\n sampledWeightWidthsArray[i] = columnWeight;\n totalPreferredWidth +=\n maxWidth != null && maxWidth <= columnWeight ? maxWidth : columnWeight;\n totalWorkingWeight += columnWeight;\n totalRemainingWeight += columnWeight - columnWidth;\n // newColumnWidthsArray already has content, so update in place rather than 'push'\n newColumnWidthsArray[i] = columnWidth;\n appliedColumnWidthsArray.push(columnWidth);\n } else {\n forcedTotalWidth += forcedWidth;\n pendingTotalWidth += forcedWidth;\n totalPreferredWidth += forcedWidth;\n appliedColumnWidthsArray.push(forcedWidth);\n }\n }\n // special case for initial rendering where we don't know if overall width is constrained\n if (availableWidth === -1) {\n availableWidth = totalPreferredWidth;\n }\n if (pendingTotalWidth < availableWidth) {\n _enforceContentsMinMaxRules(\n columnsArray,\n availableWidth,\n totalPreferredWidth,\n totalRemainingWeight,\n totalWorkingWeight,\n pendingTotalWidth,\n forcedTotalWidth,\n forcedColumnWidthsArray,\n sampledWeightWidthsArray,\n columnMaxWidthsArray,\n newColumnWidthsArray,\n appliedColumnWidthsArray\n );\n }\n }\n return _createColumnWidths(columnsArray, newColumnWidthsArray);\n}\n\n/**\n * Helper function to enforce all of the layout sizing rules on the Table's columns.\n */\nfunction _enforceContentsMinMaxRules<K, D, C>(\n columnsArray: TableColumn<K, D, C>[],\n availableWidth: number,\n totalPreferredWidth: number,\n totalRemainingWeight: number,\n totalWorkingWeight: number,\n appliedPendingTotalWidth: number,\n forcedTotalWidth: number,\n forcedColumnWidthsArray: (number | undefined)[],\n columnWeightsArray: number[],\n columnMaxWidthsArray: (number | undefined)[],\n newColumnWidthsArray: number[],\n appliedColumnWidthsArray: number[]\n) {\n // try and honor the weights of each column combined with the min widths, and then check that against\n // any max widths once completed. if the final result doesn't fill the space AND at least 1 max width\n // rule was enforced, repeat the process until no max rules are enforced OR the space is filled.\n let isMaxRuleApplied = true;\n while (isMaxRuleApplied) {\n isMaxRuleApplied = false;\n if (totalPreferredWidth > availableWidth) {\n _enforceConstrainedWeightRules(\n columnsArray,\n availableWidth - appliedPendingTotalWidth,\n totalRemainingWeight,\n columnWeightsArray,\n forcedColumnWidthsArray,\n newColumnWidthsArray,\n appliedColumnWidthsArray\n );\n } else {\n _enforceWeightedMinRules(\n columnsArray,\n availableWidth,\n totalWorkingWeight,\n forcedTotalWidth,\n forcedColumnWidthsArray,\n columnWeightsArray,\n newColumnWidthsArray,\n appliedColumnWidthsArray\n );\n }\n\n let pendingTotalWidth = 0;\n for (let i = 0; i < columnsArray.length; i++) {\n if (forcedColumnWidthsArray[i] == null) {\n const maxWidth = columnMaxWidthsArray[i];\n if (maxWidth != null && newColumnWidthsArray[i] > maxWidth) {\n isMaxRuleApplied = true;\n forcedColumnWidthsArray[i] = maxWidth;\n forcedTotalWidth += maxWidth;\n appliedPendingTotalWidth += maxWidth - appliedColumnWidthsArray[i];\n totalWorkingWeight -= columnWeightsArray[i];\n newColumnWidthsArray[i] = maxWidth;\n appliedColumnWidthsArray[i] = maxWidth;\n }\n }\n pendingTotalWidth += newColumnWidthsArray[i];\n }\n isMaxRuleApplied = isMaxRuleApplied && pendingTotalWidth < availableWidth;\n }\n}\n\n/**\n * Helper function to enforce constrained weights / min width rules on the Table's columns.\n */\nfunction _enforceConstrainedWeightRules<K, D, C>(\n columnsArray: TableColumn<K, D, C>[],\n initialExtraWidth: number,\n totalRemainingWeight: number,\n columnWeightsArray: number[],\n forcedColumnWidthsArray: (number | undefined)[],\n newColumnWidthsArray: number[],\n appliedColumnWidthsArray: number[]\n) {\n if (initialExtraWidth > 0) {\n let availableWidth = initialExtraWidth;\n let currentWeightTotal = totalRemainingWeight;\n for (let i = 0; i < columnsArray.length; i++) {\n if (currentWeightTotal > 0 && forcedColumnWidthsArray[i] == null) {\n const currentWeight = columnWeightsArray[i] - appliedColumnWidthsArray[i];\n const weightWidth = (currentWeight / currentWeightTotal) * availableWidth;\n newColumnWidthsArray[i] = weightWidth + appliedColumnWidthsArray[i];\n availableWidth -= weightWidth;\n currentWeightTotal -= currentWeight;\n }\n }\n }\n}\n\n/**\n * Helper function to enforce the weights / min width rules on the Table's columns.\n */\nfunction _enforceWeightedMinRules<K, D, C>(\n columnsArray: TableColumn<K, D, C>[],\n availableWidth: number,\n totalWeight: number,\n forcedTotalWidth: number,\n forcedColumnWidthsArray: (number | undefined)[],\n columnWeightsArray: number[],\n newColumnWidthsArray: number[],\n appliedColumnWidthsArray: number[]\n) {\n const pendingForcedColumnWidths = [] as (number | undefined)[];\n let isMinRuleApplied = true;\n while (isMinRuleApplied) {\n isMinRuleApplied = false;\n let currentWeightTotal = totalWeight;\n let widthDiff = availableWidth - forcedTotalWidth;\n if (widthDiff > 0) {\n for (let i = 0; i < columnsArray.length; i++) {\n if (\n currentWeightTotal > 0 &&\n forcedColumnWidthsArray[i] == null &&\n pendingForcedColumnWidths[i] == null\n ) {\n const currentWeight = columnWeightsArray[i];\n const newWidth = (currentWeight / currentWeightTotal) * widthDiff;\n\n // if calculated width breaks min width requirement, force min width as needed\n const minWidth = appliedColumnWidthsArray[i];\n if (newWidth < minWidth) {\n // the preferred weighted size conflicts with the min size, so set pending to min size\n pendingForcedColumnWidths[i] = minWidth;\n forcedTotalWidth += minWidth;\n newColumnWidthsArray[i] = minWidth;\n isMinRuleApplied = true;\n totalWeight -= currentWeight;\n break;\n }\n newColumnWidthsArray[i] = newWidth;\n widthDiff -= newWidth;\n currentWeightTotal -= currentWeight;\n }\n }\n }\n }\n}\n\n/**\n * Helper function to create a ColumnWidths object from a TableColumn array and a widths array.\n */\nfunction _createColumnWidths<K, D, C extends string>(\n columnsArray: TableColumn<K, D, C>[],\n columnWidthsArray: number[]\n) {\n const columnWidths = {} as ColumnWidths<C>;\n for (let i = 0; i < columnsArray.length; i++) {\n columnWidths[columnsArray[i].key] = columnWidthsArray[i];\n }\n return columnWidths;\n}\n\n/**\n * Helper method to apply the given sizing object to the currently rendered Table\n * and column elements.\n */\nfunction _udpateTableSizing(\n root: HTMLDivElement,\n tableId: string,\n widthsArray: number[],\n totalWidth: number\n) {\n const tableCols = root.querySelectorAll(`[data-oj-table-col='${tableId}']`);\n for (let i = 0; i < tableCols.length; i++) {\n const tableCol = tableCols[i] as HTMLTableColElement;\n tableCol.style.width = `${widthsArray[i]}px`;\n }\n const innerTableElem = root.querySelectorAll(\n `[data-oj-table-inner-table='${tableId}']`\n )[0] as HTMLElement;\n innerTableElem.style.width = `${totalWidth}px`;\n innerTableElem.style.tableLayout = 'fixed';\n}\n","/**\n * @license\n * Copyright (c) %FIRST_YEAR% %CURRENT_YEAR%, Oracle and/or its affiliates.\n * The Universal Permissive License (UPL), Version 1.0\n * as shown at https://oss.oracle.com/licenses/upl/\n * @ignore\n */\nimport {\n useImperativeHandle,\n useCallback,\n useMemo,\n useRef,\n useLayoutEffect,\n useState\n} from 'preact/hooks';\nimport { forwardRef, ForwardedRef } from 'preact/compat';\nimport { JSXInternal } from 'preact/src/jsx';\nimport { classNames } from '../utils/UNSAFE_classNames';\nimport { useId } from '../hooks/UNSAFE_useId';\nimport { TabbableModeContext } from '../hooks/UNSAFE_useTabbableMode';\nimport { useUser } from '../hooks/UNSAFE_useUser';\nimport {\n Cell,\n Column,\n ColumnWidths,\n TableHorizontalScrollPosition,\n TableVerticalScrollPosition\n} from '../UNSAFE_TableView';\nimport { TableColGroup } from './TableColGroup';\nimport { TableBody } from './TableBody';\nimport { TableHeader } from './TableHeader';\nimport { TableFooter } from './TableFooter';\nimport { TableDragIndicator } from './TableDragIndicator';\nimport { FocusTracker } from '../PRIVATE_FocusTracker';\nimport { Props, TableViewHandle } from '../UNSAFE_TableView';\nimport { useInteractionManager } from './hooks/useInteractionManager';\nimport { getLayoutColumnWidths } from './utils/TableLayoutUtils';\nimport {\n getViewportConfig,\n getHorizontalScrollPosition,\n setHorizontalScrollPosition,\n getVerticalScrollPosition,\n setVerticalScrollPosition,\n updateStickyColumns\n} from './utils/TableScrollUtils';\nimport { innerTableStyles, focusTrackerStyles } from './themes/Table.css';\nimport { TableVariantOptions, tableStyles } from './themes/TableStyles.css';\nimport { TableRedwoodTheme } from './themes/redwood/TableTheme';\nimport { useComponentTheme } from '../hooks/UNSAFE_useComponentTheme';\nimport { useResizeObserver } from '../hooks/UNSAFE_useResizeObserver';\nimport { useTestId } from '../hooks/UNSAFE_useTestId';\n\nexport type TableColumn<K, D, C> = {\n key: C;\n value: Column<K, D, C>;\n};\n\nexport type SampledWidths<C extends string> = {\n minWidths: ColumnWidths<C>;\n weightWidths: ColumnWidths<C>;\n};\n\nexport type SizingInfo =\n | {\n isInitialRender: true;\n boxWidth?: number;\n contentWidth?: number;\n boxHeight?: number;\n contentHeight?: number;\n defaultScrollbarWidth?: number;\n defaultScrollbarHeight?: number;\n }\n | {\n isInitialRender: false;\n boxWidth: number;\n contentWidth: number;\n boxHeight: number;\n contentHeight: number;\n defaultScrollbarWidth: number;\n defaultScrollbarHeight: number;\n };\n\ntype LayoutInfo =\n | {\n isLayoutRequired: true;\n columnWidthsArray?: number[];\n }\n | {\n isLayoutRequired: false;\n columnWidthsArray: number[];\n };\n\nexport type ColumnResizeInfo<C> =\n | {\n isResizing: false;\n isResizeHover: boolean;\n key?: C;\n startX?: never;\n delta?: never;\n fullColumnWidths?: never;\n ignoreClick: boolean;\n }\n | {\n isResizing: true;\n isResizeHover: boolean;\n key: C;\n startX: number;\n delta: number;\n fullColumnWidths: number[];\n ignoreClick: boolean;\n };\n\nexport type ScrollDetail<K, C> = {\n cell: Cell<K, C>;\n locationX?: 'inView' | 'start' | 'end';\n locationY?: 'inView' | 'top' | 'bottom';\n};\n\nconst _defaultSelected = {\n row: { all: false, keys: new Set() },\n column: { all: false, keys: new Set() }\n};\n\n/**\n * Component that renders items as a flat table.\n * In order to maximize performance, only items that are visible in the viewport are rendered.\n */\nexport const Table = forwardRef(function Table<K extends string | number, D, C extends string>(\n {\n 'aria-label': ariaLabel,\n 'aria-labelledby': ariaLabelledBy,\n getAccessibleRowHeaders,\n columns,\n columnOrder,\n columnWidths,\n layout = 'contents',\n data,\n getRowKey,\n hasMore = false,\n onLoadMore = () => {},\n currentCellOverride,\n onPersistCurrentCell,\n currentRowVariant,\n gridlines,\n selectionMode,\n selected = _defaultSelected as NonNullable<Props<K, D, C>['selected']>,\n onSelectionChange,\n onRowAction,\n sortCriterion,\n onSortCriterionChange,\n horizontalScrollPositionOverride,\n verticalScrollPositionOverride,\n columnResizingIndicator,\n onColumnResizing,\n onColumnResize,\n noDataRenderer,\n testId\n }: Props<K, D, C>,\n ref?: ForwardedRef<TableViewHandle<K, C>>\n) {\n const tableId = useId();\n const outerTableRef = useRef<HTMLDivElement>(null);\n const sizingInfoRef = useRef<SizingInfo>({ isInitialRender: true });\n const [appliedColumnWidths, setAppliedColumnWidths] = useState<ColumnWidths<C>>();\n const [contentHeight, setContentHeight] = useState<number>();\n const isVerticalScrollRef = useRef<boolean>(false);\n const sampledColumnWidthsRef = useRef<SampledWidths<C>>();\n const horizontalScrollPositionOverrideRef = useRef<TableHorizontalScrollPosition<C>>();\n const verticalScrollPositionOverrideRef = useRef<TableVerticalScrollPosition<K>>();\n\n const [stickyEdgesState, setStickyEdgesState] = useState<{ start?: number; end?: number }>({\n start: undefined,\n end: undefined\n });\n\n const resizeInfoRef = useRef<ColumnResizeInfo<C>>({\n isResizing: false,\n isResizeHover: false,\n ignoreClick: false\n });\n\n const { direction } = useUser();\n const isRtl = direction === 'rtl';\n const testIdProps = useTestId(testId);\n\n const columnsArray = useMemo(() => {\n const newColumnsArray = [] as Array<TableColumn<K, D, C>>;\n if (columnOrder != null) {\n for (const key of columnOrder) {\n if (columns[key] != null) {\n newColumnsArray.push({\n key: key,\n value: columns[key]\n });\n }\n }\n } else {\n for (const [key, value] of Object.entries(columns)) {\n newColumnsArray.push({\n key: key as C,\n value: value as Column<K, D, C>\n });\n }\n }\n return newColumnsArray;\n }, [columnOrder, columns]);\n\n let isLayoutRequired = false;\n const columnWidthsArray = [];\n if (appliedColumnWidths != null) {\n for (let i = 0; i < columnsArray.length; i++) {\n const key = columnsArray[i].key;\n const appliedWidth = appliedColumnWidths[key];\n const staticWidth = columnWidths != null ? columnWidths[key] : undefined;\n if (appliedWidth == null || (staticWidth != null && staticWidth !== appliedWidth)) {\n isLayoutRequired = true;\n break;\n }\n columnWidthsArray.push(appliedWidth);\n }\n } else {\n isLayoutRequired = true;\n }\n const layoutInfo = {\n isLayoutRequired: isLayoutRequired,\n columnWidthsArray: isLayoutRequired ? undefined : columnWidthsArray\n } as LayoutInfo;\n\n useImperativeHandle(\n ref!,\n () => {\n return {\n getHorizontalScrollPosition: () => {\n if (layoutInfo.isLayoutRequired) {\n return {};\n }\n return getHorizontalScrollPosition(\n outerTableRef.current!,\n columnsArray,\n layoutInfo.columnWidthsArray\n );\n },\n getVerticalScrollPosition: () => {\n if (layoutInfo.isLayoutRequired) {\n return {};\n }\n return getVerticalScrollPosition(outerTableRef.current!, tableId);\n }\n };\n },\n [tableId, columnsArray, layoutInfo.isLayoutRequired, layoutInfo.columnWidthsArray]\n );\n\n const cellHasRenderer = useCallback(\n (cell: Cell<K, C>) => {\n let hasRenderer = false;\n if (cell.type === 'noData') {\n hasRenderer = noDataRenderer != null;\n } else {\n for (const column of columnsArray) {\n if (column.key === cell.columnKey) {\n if (cell.type === 'data') {\n hasRenderer = column.value.renderer != null;\n } else if (cell.type === 'header') {\n hasRenderer = column.value.headerRenderer != null;\n } else if (cell.type === 'footer') {\n hasRenderer = column.value.footerRenderer != null;\n }\n break;\n }\n }\n }\n return hasRenderer;\n },\n [columnsArray, noDataRenderer]\n );\n\n const {\n interactionManagerProps,\n onTableSelectionChange,\n isShowFocusRing,\n isTabbableMode,\n currentCell,\n onStartFocusTracking,\n onFocusStartEdge,\n onFocusEndEdge\n } = useInteractionManager({\n outerTableRef,\n tableId,\n data,\n isRtl,\n columnsArray,\n appliedColumnWidths: appliedColumnWidths!,\n sizingInfoRef,\n resizeInfoRef,\n stickyEdgesState,\n setStickyEdgesState,\n cellHasRenderer,\n fullColumnWidths: layoutInfo.isLayoutRequired ? undefined : layoutInfo.columnWidthsArray,\n onColumnResizing,\n onColumnResize,\n currentCellOverride,\n onPersistCurrentCell,\n selectionMode,\n selected,\n onSelectionChange,\n onRowAction,\n sortCriterion,\n onSortCriterionChange\n });\n\n // ensure sampled column sizes are cleared if 'columns' is updated\n useLayoutEffect(() => {\n sampledColumnWidthsRef.current = undefined;\n setAppliedColumnWidths(undefined);\n }, [columns]);\n\n // setup sizing calculation updates for subsequent renders\n useLayoutEffect(() => {\n const rootElement = outerTableRef.current;\n if (\n rootElement != null &&\n !sizingInfoRef.current.isInitialRender &&\n layoutInfo.isLayoutRequired &&\n sizingInfoRef.current.defaultScrollbarWidth != null\n ) {\n const totalWidth =\n layout === 'fixed'\n ? sizingInfoRef.current.boxWidth - sizingInfoRef.current.defaultScrollbarWidth\n : -1;\n const newColumnWidths = getLayoutColumnWidths(\n rootElement,\n sizingInfoRef.current.defaultScrollbarWidth,\n tableId,\n layout === 'fixed',\n sampledColumnWidthsRef,\n totalWidth,\n columnsArray,\n columnWidths\n );\n setAppliedColumnWidths(newColumnWidths);\n }\n }, [tableId, columnsArray, columnWidths, layout, layoutInfo.isLayoutRequired]);\n\n // setup component resize-based sizing calculation updates\n const resizeObserverCallbackRef = useRef<(entry: ResizeObserverEntry) => void>();\n resizeObserverCallbackRef.current = (entry: ResizeObserverEntry) => {\n if (outerTableRef.current != null) {\n let availableWidth;\n let scrollbarWidth;\n const newContentWidth = entry.contentBoxSize[0].inlineSize;\n const newContentHeight = entry.contentBoxSize[0].blockSize;\n const newBoxWidth = entry.borderBoxSize[0].inlineSize;\n const newBoxHeight = entry.borderBoxSize[0].blockSize;\n\n if (newContentWidth !== 0 || newBoxWidth !== 0) {\n if (sizingInfoRef.current.isInitialRender) {\n scrollbarWidth = newBoxWidth - newContentWidth;\n availableWidth = layout === 'fixed' ? newContentWidth : -1;\n sizingInfoRef.current = {\n isInitialRender: false,\n contentWidth: newContentWidth,\n boxWidth: newBoxWidth,\n contentHeight: newContentHeight,\n boxHeight: newBoxHeight,\n defaultScrollbarWidth: scrollbarWidth,\n defaultScrollbarHeight: newBoxHeight - newContentHeight\n };\n } else {\n scrollbarWidth = sizingInfoRef.current.defaultScrollbarWidth;\n availableWidth = isVerticalScrollRef.current\n ? newContentWidth\n : newBoxWidth - scrollbarWidth;\n sizingInfoRef.current.contentWidth = newContentWidth;\n sizingInfoRef.current.boxWidth = newBoxWidth;\n sizingInfoRef.current.contentHeight = newContentHeight;\n sizingInfoRef.current.boxHeight = newBoxHeight;\n }\n const newColumnWidths = getLayoutColumnWidths(\n outerTableRef.current,\n scrollbarWidth,\n tableId,\n layout === 'fixed',\n sampledColumnWidthsRef,\n availableWidth,\n columnsArray,\n columnWidths\n );\n setAppliedColumnWidths(newColumnWidths);\n if (contentHeight !== newContentHeight) {\n setContentHeight(newContentHeight);\n }\n }\n }\n };\n // ensure resize observer callback function is static to avoid hook re-subscribing each render\n const staticResizeObserverCallback = useCallback((entry: ResizeObserverEntry) => {\n resizeObserverCallbackRef.current!(entry);\n }, []);\n useResizeObserver(outerTableRef, staticResizeObserverCallback);\n\n // after each additional render, update vertical scrollbar state if necessary\n useLayoutEffect(() => {\n const scrollbarWidth = sizingInfoRef.current.defaultScrollbarWidth;\n if (\n outerTableRef.current != null &&\n !sizingInfoRef.current.isInitialRender &&\n contentHeight != null &&\n scrollbarWidth != null\n ) {\n const innerTable = outerTableRef.current.querySelector(\n `[data-oj-table-inner-table='${tableId}']`\n );\n if (innerTable != null) {\n const hasVerticalOverflow = contentHeight < innerTable.getBoundingClientRect().height;\n isVerticalScrollRef.current = hasVerticalOverflow;\n if (hasVerticalOverflow) {\n outerTableRef.current.classList.remove(tableStyles.noVerticalScroll);\n outerTableRef.current.classList.add(tableStyles.verticalScroll);\n outerTableRef.current.style.paddingInlineEnd = '';\n } else {\n outerTableRef.current.classList.remove(tableStyles.verticalScroll);\n outerTableRef.current.classList.add(tableStyles.noVerticalScroll);\n outerTableRef.current.style.paddingInlineEnd = `${scrollbarWidth}px`;\n }\n }\n }\n }, [tableId, contentHeight, data, noDataRenderer, appliedColumnWidths]);\n\n // update horizontal scroll position if a new value is provided\n useLayoutEffect(() => {\n if (\n horizontalScrollPositionOverrideRef.current !== horizontalScrollPositionOverride &&\n !layoutInfo.isLayoutRequired\n ) {\n setHorizontalScrollPosition(\n outerTableRef.current!,\n columnsArray,\n layoutInfo.columnWidthsArray,\n isRtl,\n horizontalScrollPositionOverride\n );\n horizontalScrollPositionOverrideRef.current = horizontalScrollPositionOverride;\n }\n }, [\n tableId,\n columnsArray,\n layoutInfo.isLayoutRequired,\n layoutInfo.columnWidthsArray,\n horizontalScrollPositionOverride,\n isRtl\n ]);\n\n // update vertical scroll position if a new value is provided\n useLayoutEffect(() => {\n if (\n verticalScrollPositionOverrideRef.current !== verticalScrollPositionOverride &&\n !layoutInfo.isLayoutRequired\n ) {\n setVerticalScrollPosition(outerTableRef.current!, tableId, verticalScrollPositionOverride);\n verticalScrollPositionOverrideRef.current = verticalScrollPositionOverride;\n }\n }, [tableId, layoutInfo.isLayoutRequired, verticalScrollPositionOverride]);\n\n // ensure sticky columns are updated appropriately\n useLayoutEffect(() => {\n if (outerTableRef.current != null && !layoutInfo.isLayoutRequired) {\n updateStickyColumns(\n outerTableRef.current,\n tableId,\n isRtl,\n columnsArray,\n layoutInfo.columnWidthsArray,\n stickyEdgesState,\n setStickyEdgesState\n );\n }\n }, [\n tableId,\n columnsArray,\n layoutInfo.isLayoutRequired,\n layoutInfo.columnWidthsArray,\n isRtl,\n stickyEdgesState\n ]);\n\n // initialize base Table style classes\n const { classes: themeClasses } = useComponentTheme<TableVariantOptions>(TableRedwoodTheme, {\n forceScroll: sizingInfoRef.current.isInitialRender ? 'isForceScroll' : 'notForceScroll',\n verticalScroll: isVerticalScrollRef.current ? 'isVerticalScroll' : 'notVerticalScroll',\n disableWrapping:\n layout === 'contents' && sampledColumnWidthsRef.current === undefined\n ? 'isDisableWrapping'\n : 'notDisableWrapping'\n });\n\n const classes = classNames([themeClasses]);\n const tableClasses = classNames([innerTableStyles.base]);\n const focusTrackerClasses = classNames([focusTrackerStyles.base]);\n\n // aria-rowcount includes header and footer rows\n const hasFooters = columnsArray.some((column: TableColumn<K, D, C>) => {\n return column.value.footerRenderer != null || column.value.footerText != null;\n });\n const ariaRowCount = data == null ? undefined : hasMore ? -1 : data.length + (hasFooters ? 2 : 1);\n\n const startStickyEdge = stickyEdgesState.start;\n const endStickyEdge = stickyEdgesState.end;\n\n const hasVerticalGridlines = gridlines?.vertical === 'visible';\n const hasHorizontalGridlines = gridlines?.horizontal !== 'hidden';\n\n const isRowSelectionEnabled =\n selectionMode?.row === 'single' || selectionMode?.row === 'multiple';\n const isColumnSelectionEnabled =\n selectionMode?.column === 'single' || selectionMode?.column === 'multiple';\n\n const getTableBodyProps = () => {\n return {\n tableId: tableId,\n data: data,\n columnsArray: columnsArray,\n getAccessibleRowHeaders: getAccessibleRowHeaders,\n hasVerticalGridlines: hasVerticalGridlines,\n hasHorizontalGridlines: hasHorizontalGridlines,\n selected: selected,\n isRowSelectionEnabled: isRowSelectionEnabled,\n isSingleRowSelectionEnabled: selectionMode?.row === 'single',\n currentCell: currentCell,\n currentRowVariant: currentRowVariant,\n isShowFocusRing: isShowFocusRing,\n getRowKey: getRowKey,\n hasMore: hasMore,\n onLoadMore: onLoadMore,\n noDataRenderer: noDataRenderer,\n viewportConfig: getViewportConfig(outerTableRef),\n onSelectionChange: onTableSelectionChange,\n startStickyEdge: startStickyEdge,\n endStickyEdge: endStickyEdge,\n isRtl: isRtl\n };\n };\n\n const getTableColGroupProps = () => {\n let columnWidthsArray;\n if (!layoutInfo.isLayoutRequired) {\n columnWidthsArray = layoutInfo.columnWidthsArray;\n } else {\n columnWidthsArray = [];\n for (let i = 0; i < columnsArray.length; i++) {\n columnWidthsArray[i] = undefined;\n }\n }\n return {\n tableId: tableId,\n columnWidthsArray: columnWidthsArray\n };\n };\n\n const getTableHeaderProps = () => {\n return {\n tableId: tableId,\n columnsArray: columnsArray,\n hasVerticalGridlines: hasVerticalGridlines,\n focusedKey: currentCell?.type === 'header' ? currentCell.columnKey : undefined,\n selectedColumnKeys: selected.column,\n selectedRowKeys: selected.row,\n isColumnSelectionEnabled: isColumnSelectionEnabled,\n isRowSelectionEnabled: isRowSelectionEnabled,\n onSelectionChange: onTableSelectionChange,\n sortCriterion: sortCriterion,\n onSortCriterionChange: onSortCriterionChange,\n isShowFocusRing: isShowFocusRing,\n startStickyEdge: startStickyEdge,\n endStickyEdge: endStickyEdge,\n isResizeHover: resizeInfoRef.current.isResizeHover,\n isRtl: isRtl\n };\n };\n\n const getTableFooterProps = () => {\n return {\n tableId: tableId,\n isRendered: hasFooters,\n columnsArray: columnsArray,\n hasVerticalGridlines: hasVerticalGridlines,\n focusedKey: currentCell?.type === 'footer' ? currentCell.columnKey : undefined,\n selectedKeys: selected.column,\n isColumnSelectionEnabled: isColumnSelectionEnabled,\n isShowFocusRing: isShowFocusRing,\n startStickyEdge: startStickyEdge,\n endStickyEdge: endStickyEdge,\n isRtl: isRtl\n };\n };\n\n const getTableDragIndicator = () => {\n if (columnResizingIndicator != null && !layoutInfo.isLayoutRequired) {\n let position = 0;\n for (let i = 0; i < columnsArray.length; i++) {\n position += layoutInfo.columnWidthsArray[i];\n if (columnsArray[i].key === columnResizingIndicator.key) {\n if (columnResizingIndicator.delta != null) {\n position += columnResizingIndicator.delta;\n }\n break;\n }\n }\n return <TableDragIndicator position={position} isRtl={isRtl} />;\n }\n return undefined;\n };\n\n const getTableStyle = () => {\n let widthString = '';\n let heightString = '';\n if (!layoutInfo.isLayoutRequired) {\n let totalWidth = 0;\n for (let i = 0; i < layoutInfo.columnWidthsArray.length; i++) {\n totalWidth += layoutInfo.columnWidthsArray[i];\n }\n widthString = `width: ${totalWidth}px; table-layout: fixed;`;\n } else {\n // shrink table down as much as possible when a 'contents' layout is required, otherwise\n // the sampled column widths will not reflect the true minimum sizes with line-clamping\n widthString = layout !== 'contents' ? 'width: 100%;' : 'width: 1px';\n }\n if (contentHeight != null) {\n heightString = data == null || data.length === 0 ? `min-height: ${contentHeight}px;` : '';\n }\n return `${widthString}${heightString}`;\n };\n\n return (\n <div\n {...testIdProps}\n ref={outerTableRef}\n aria-colcount={columnsArray.length}\n aria-label={ariaLabel}\n aria-labelledby={ariaLabelledBy}\n aria-rowcount={ariaRowCount}\n {...(selectionMode?.column === 'multiple' || selectionMode?.row === 'multiple'\n ? { 'aria-multiselectable': true }\n : {})}\n class={classes}\n role={'grid'}\n {...interactionManagerProps}>\n <FocusTracker\n styleClass={focusTrackerClasses}\n isDisabled={!isTabbableMode}\n onFocusStartEdge={onFocusStartEdge}\n onFocusEndEdge={onFocusEndEdge}\n onStartTracking={onStartFocusTracking}>\n <TabbableModeContext.Provider value={{ isTabbable: isTabbableMode }}>\n <table\n class={tableClasses}\n role={'presentation'}\n style={getTableStyle()}\n data-oj-table-inner-table={tableId}>\n <TableColGroup {...getTableColGroupProps()} />\n <TableHeader {...getTableHeaderProps()} />\n <TableBody {...getTableBodyProps()} />\n <TableFooter {...getTableFooterProps()} />\n </table>\n </TabbableModeContext.Provider>\n {getTableDragIndicator()}\n </FocusTracker>\n </div>\n );\n}) as <K extends string | number, D, C extends string>(\n p: Props<K, D, C> & { ref?: ForwardedRef<TableViewHandle<K, C>> }\n) => JSXInternal.Element;\n"],"names":["_jsx","useState","useEffect","classNames","tableSkeletonCellStyles","LOADMORE_STYLE_CLASS","tableSkeletonBarContainerStyles","Skeleton","Text","useComponentTheme","TableCellRedwoodTheme","useId","useTranslationBundle","useInteractionStyle","TableRowRedwoodTheme","Selector","containsKey","memo","isSameKey","tableRowStyles","TableNoDataRedwoodTheme","useRef","collectionStyles","useCallback","LoadMoreCollection","TableHeaderCellRedwoodTheme","SelectorAll","EmbeddedIconButton","SortAscendingIcon","SortDescendingIcon","SortDefaultIcon","tableHeaderCellTextStyles","_jsxs","tableHeaderSortContainerStyles","tableHeaderRowStyles","tableHeaderRowContainerStyles","TableFooterCellRedwoodTheme","tableFooterRowStyles","tableFooterRowContainerStyles","tableDragIndicatorStyles","keyExtractor","findElementByKey","useMemo","getElementContainsFunc","handleEnterActionableMode","allTabbableElements","handleWrapActionableFocus","getActiveElement","getBodyElement","isTabbableElement","addKey","removeKey","getClientHints","getIsSelectionPending","mergeProps","tableStyles","forwardRef","useUser","useTestId","useImperativeHandle","useLayoutEffect","useResizeObserver","TableRedwoodTheme","innerTableStyles","focusTrackerStyles","FocusTracker","TabbableModeContext"],"mappings":"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"}
1
+ {"version":3,"file":"Table-17b3dbc3.js","sources":["../../src/PRIVATE_Table/TableColGroup.tsx","../../src/PRIVATE_Table/TableSkeletonRow.tsx","../../src/PRIVATE_Table/TableCell.tsx","../../src/PRIVATE_Table/TableRow.tsx","../../src/PRIVATE_Table/TableNoData.tsx","../../src/PRIVATE_Table/TableBody.tsx","../../src/PRIVATE_Table/TableHeaderCell.tsx","../../src/PRIVATE_Table/TableHeader.tsx","../../src/PRIVATE_Table/TableFooterCell.tsx","../../src/PRIVATE_Table/TableFooter.tsx","../../src/PRIVATE_Table/TableDragIndicator.tsx","../../src/PRIVATE_Table/utils/TableDomUtils.ts","../../src/PRIVATE_Table/utils/TableScrollUtils.ts","../../src/PRIVATE_Table/utils/TableNavigationUtils.ts","../../src/PRIVATE_Table/hooks/useFocusHandling.ts","../../src/PRIVATE_Table/utils/TableActionUtils.ts","../../src/PRIVATE_Table/utils/TableSelectionUtils.ts","../../src/PRIVATE_Table/hooks/useKeyboardHandling.ts","../../src/PRIVATE_Table/utils/TableSizingUtils.ts","../../src/PRIVATE_Table/hooks/usePointerHandling.ts","../../src/PRIVATE_Table/hooks/useScrollHandling.ts","../../src/PRIVATE_Table/hooks/useInteractionManager.ts","../../src/PRIVATE_Table/utils/TableLayoutUtils.ts","../../src/PRIVATE_Table/Table.tsx"],"sourcesContent":["/**\n * @license\n * Copyright (c) %FIRST_YEAR% %CURRENT_YEAR%, Oracle and/or its affiliates.\n * The Universal Permissive License (UPL), Version 1.0\n * as shown at https://oss.oracle.com/licenses/upl/\n * @ignore\n */\n\n/**\n * Props for the TableColGroup Component\n */\nexport type TableColGroupProps = {\n tableId: string;\n columnWidthsArray: (number | undefined)[];\n};\n\n/**\n * The internal component used to render a single colgroup in Table.\n */\nexport function TableColGroup({ tableId, columnWidthsArray }: TableColGroupProps) {\n const getColStyle = (columnWidth?: number) => {\n return columnWidth == null ? '' : `width: ${columnWidth}px;`;\n };\n\n return (\n <colgroup>\n {columnWidthsArray.map((columnWidth?: number) => {\n return <col style={getColStyle(columnWidth)} data-oj-table-col={tableId} />;\n })}\n </colgroup>\n );\n}\n","/**\n * @license\n * Copyright (c) %FIRST_YEAR% %CURRENT_YEAR%, Oracle and/or its affiliates.\n * The Universal Permissive License (UPL), Version 1.0\n * as shown at https://oss.oracle.com/licenses/upl/\n * @ignore\n */\nimport { useState, useEffect } from 'preact/hooks';\nimport { LOADMORE_STYLE_CLASS } from '../PRIVATE_LoadMoreCollection';\nimport { tableSkeletonBarContainerStyles, tableSkeletonCellStyles } from './themes/Table.css';\nimport { classNames } from '../utils/UNSAFE_classNames';\nimport { Skeleton } from '../UNSAFE_Skeleton';\n\ntype SkeletonRowProps = {\n /**\n * Total number of columns to span\n */\n colspan: number;\n /**\n * The preact key value\n */\n preactKey: any;\n /**\n * Allows to specify number of skeletons to be rendered on initial load\n **/\n minimumCount?: number;\n};\n\n/**\n * Allows to specify the time delay for rendering the component\n **/\nconst _timerValue = 50;\n\n/**\n * TableSkeletonRow renders 'minimumCount' number of skeletons\n * of the variant specified from its child element - Skeleton's prop after\n * 'timerValue' ms delay\n **/\nexport function TableSkeletonRow({ colspan, preactKey, minimumCount = 1 }: SkeletonRowProps) {\n const [isVisible, setIsVisible] = useState(false);\n\n useEffect(() => {\n setTimeout(() => {\n setIsVisible(true);\n }, _timerValue);\n }, []);\n\n const cellClasses = classNames([tableSkeletonCellStyles.base]);\n\n return (\n <tr class={LOADMORE_STYLE_CLASS} key={preactKey}>\n {isVisible ? (\n <td class={cellClasses} colSpan={colspan} role=\"presentation\">\n {[...Array(minimumCount)].map((_element) => (\n <div class={tableSkeletonBarContainerStyles.base}>\n <Skeleton height=\"4x\" />\n </div>\n ))}\n </td>\n ) : null}\n </tr>\n );\n}\n","/**\n * @license\n * Copyright (c) %FIRST_YEAR% %CURRENT_YEAR%, Oracle and/or its affiliates.\n * The Universal Permissive License (UPL), Version 1.0\n * as shown at https://oss.oracle.com/licenses/upl/\n * @ignore\n */\nimport { ComponentChildren } from 'preact';\nimport { Text } from '../UNSAFE_Text';\nimport { CurrentRowVariant, TableRendererContext } from '../UNSAFE_TableView';\nimport { classNames } from '../utils/UNSAFE_classNames';\nimport { useId } from '../hooks/UNSAFE_useId';\nimport { TableCellVariantOptions } from './themes/TableCellStyles.css';\nimport { TableCellRedwoodTheme } from './themes/redwood/TableCellTheme';\nimport { useComponentTheme } from '../hooks/UNSAFE_useComponentTheme';\n\n/**\n * Props for the TableCell Component\n */\nexport type TableCellProps<K, D, C> = {\n tableId: string;\n rowData: D;\n columnKey: C;\n columnIndex: number;\n rowKey: K;\n rowIndex: number;\n isFinalRowIndex: boolean;\n isFinalColumnIndex: boolean;\n hasVerticalGridlines: boolean;\n hasHorizontalGridlines: boolean;\n isRowSelected: boolean;\n isPreviousRowSelected: boolean;\n isColumnSelected: boolean;\n isPreviousColumnSelected: boolean;\n isShowFocusRing: boolean;\n isStickyStartEdge: boolean;\n isStickyEndEdge: boolean;\n isRtl: boolean;\n isRowHeader: boolean;\n isRowSelectionEnabled: boolean;\n isRowSingleSelection: boolean;\n applyActiveStyle: boolean;\n applyHoverStyle: boolean;\n applyPseudoHoverStyle: boolean;\n field?: keyof D;\n stickyColumn?: 'start' | 'end' | 'none';\n renderer?: (context: TableRendererContext<K, D, C>) => ComponentChildren;\n selectorRenderer?: () => ComponentChildren;\n variant?: CurrentRowVariant;\n};\n\nfunction _defaultCellRenderer<K, D, C>({ rowData, field }: TableRendererContext<K, D, C>) {\n return field != null ? (\n <Text truncation=\"ellipsis\" variant=\"primary\" size=\"md\">\n {String(rowData[field])}\n </Text>\n ) : null;\n}\n\n/**\n * The internal component used to render a single cell in a TableRow.\n */\nexport function TableCell<K, D, C>({\n tableId,\n rowData,\n field,\n columnKey,\n columnIndex,\n rowKey,\n rowIndex,\n isFinalRowIndex,\n isFinalColumnIndex,\n hasVerticalGridlines,\n hasHorizontalGridlines,\n isRowSelected,\n isPreviousRowSelected,\n isColumnSelected,\n isPreviousColumnSelected,\n isShowFocusRing,\n isRowHeader,\n stickyColumn = 'none',\n renderer = _defaultCellRenderer,\n selectorRenderer,\n isRowSelectionEnabled,\n isRowSingleSelection,\n variant,\n applyActiveStyle,\n applyHoverStyle,\n applyPseudoHoverStyle,\n isStickyStartEdge,\n isStickyEndEdge,\n isRtl\n}: TableCellProps<K, D, C>) {\n const hasRenderer = renderer !== _defaultCellRenderer;\n const { classes: themeClasses } = useComponentTheme<TableCellVariantOptions>(\n TableCellRedwoodTheme,\n {\n defaultRenderer: !hasRenderer ? 'isDefaultRenderer' : 'notDefaultRenderer',\n firstRow: rowIndex === 0 ? 'isFirstRow' : 'notFirstRow',\n lastRow: isFinalRowIndex ? 'isLastRow' : 'notLastRow',\n firstColumn: columnIndex === 0 ? 'isFirstColumn' : 'notFirstColumn',\n lastColumn: isFinalColumnIndex ? 'isLastColumn' : 'notLastColumn',\n borderTopSpacer:\n !(isRowSingleSelection && (isRowSelected || isPreviousRowSelected)) &&\n (!hasHorizontalGridlines || rowIndex === 0)\n ? 'isBorderTopSpacer'\n : 'notBorderTopSpacer',\n borderBottomSpacer:\n isFinalRowIndex && !((isRowSingleSelection && isRowSelected) || hasHorizontalGridlines)\n ? 'isBorderBottomSpacer'\n : 'notBorderBottomSpacer',\n borderStartSpacer:\n !(isPreviousColumnSelected || isColumnSelected) &&\n (!hasVerticalGridlines || columnIndex === 0)\n ? 'isBorderStartSpacer'\n : 'notBorderStartSpacer',\n borderEndSpacer:\n isFinalColumnIndex && !isColumnSelected ? 'isBorderEndSpacer' : 'notBorderEndSpacer',\n verticalGrid: hasVerticalGridlines ? 'isVerticalGrid' : 'notVerticalGrid',\n horizontalGrid: hasHorizontalGridlines ? 'isHorizontalGrid' : 'notHorizontalGrid',\n rowSingleSelection: isRowSingleSelection ? 'isRowSingleSelection' : 'notRowSingleSelection',\n rowSelectable: isRowSelectionEnabled ? 'isRowSelectable' : 'notRowSelectable',\n rowSelected: isRowSelected ? 'isRowSelected' : 'notRowSelected',\n previousRowSelected: isPreviousRowSelected\n ? 'isPreviousRowSelected'\n : 'notPreviousRowSelected',\n columnSelected: isColumnSelected ? 'isColumnSelected' : 'notColumnSelected',\n previousColumnSelected: isPreviousColumnSelected\n ? 'isPreviousColumnSelected'\n : 'notPreviousColumnSelected',\n stickyStartColumn: stickyColumn === 'start' ? 'isStickyStartColumn' : 'notStickyStartColumn',\n stickyEndColumn: stickyColumn === 'end' ? 'isStickyEndColumn' : 'notStickyEndColumn',\n stickyStartEdge: isStickyStartEdge ? 'isStickyStartEdge' : 'notStickyStartEdge',\n stickyEndEdge: isStickyEndEdge ? 'isStickyEndEdge' : 'notStickyEndEdge',\n rowHighlight: variant === 'highlight' ? 'isRowHighlight' : 'notRowHighlight',\n showFocusRing: isShowFocusRing ? 'isShowFocusRing' : 'notShowFocusRing',\n active: applyActiveStyle ? 'isActive' : 'notActive',\n hover: applyHoverStyle ? 'isHover' : 'notHover',\n pseudoHover: applyPseudoHoverStyle ? 'isPseudoHover' : 'notPseudoHover',\n rtl: isRtl ? 'isRtl' : 'notRtl'\n }\n );\n\n const cellClasses = classNames([themeClasses]);\n\n const cellRendererProps = {\n rowData: rowData,\n rowKey: rowKey,\n field: field,\n columnKey: columnKey,\n selector: selectorRenderer\n };\n\n return (\n <td\n aria-colindex={columnIndex + 1}\n class={cellClasses}\n id={useId()}\n tabIndex={-1}\n role={isRowHeader ? 'rowheader' : 'gridcell'}\n data-oj-cell-type={'data'}\n data-oj-column-key={columnKey}\n data-oj-table-focusable={tableId}\n data-oj-table-data-cell={tableId}\n {...(typeof columnKey === 'number' && { 'data-oj-column-key-type': 'number' })}>\n {renderer(cellRendererProps)}\n </td>\n );\n}\n","/**\n * @license\n * Copyright (c) %FIRST_YEAR% %CURRENT_YEAR%, Oracle and/or its affiliates.\n * The Universal Permissive License (UPL), Version 1.0\n * as shown at https://oss.oracle.com/licenses/upl/\n * @ignore\n */\nimport { memo } from 'preact/compat';\nimport { SelectionDetail } from '../UNSAFE_Collection';\nimport { Selector } from '../UNSAFE_Selector';\nimport { CurrentRowVariant, TableSelectionDetail } from '../UNSAFE_TableView';\nimport { classNames } from '../utils/UNSAFE_classNames';\nimport { Keys, containsKey, isSameKey } from '../utils/UNSAFE_keys';\nimport { TableColumn } from './Table';\nimport { TableCell } from './TableCell';\nimport { TableRowVariantOptions } from './themes/TableRowStyles.css';\nimport { TableRowRedwoodTheme } from './themes/redwood/TableRowTheme';\nimport { BundleType } from '../resources/nls/bundle';\nimport { useComponentTheme } from '../hooks/UNSAFE_useComponentTheme';\nimport { useInteractionStyle } from '../hooks/UNSAFE_useInteractionStyle';\nimport { useTranslationBundle } from '../hooks/UNSAFE_useTranslationBundle';\n\n/**\n * Props for the TableRow Component\n */\nexport type TableRowProps<K, D, C> = {\n tableId: string;\n rowKey: K;\n rowData: D;\n rowIndex: number;\n isFinalRow: boolean;\n columnsArray: TableColumn<K, D, C>[];\n rowHeaderColumnKeys: Set<C>;\n hasVerticalGridlines: boolean;\n hasHorizontalGridlines: boolean;\n isSelected: boolean;\n isPreviousSelected: boolean;\n isRowSelectionEnabled: boolean;\n isSingleRowSelectionEnabled: boolean;\n isRtl: boolean;\n selectedRowKeys?: Keys<K>;\n focusRingColumnKey?: C;\n selectedColumnKeys?: Keys<C>;\n variant?: CurrentRowVariant;\n onSelectionChange?: (detail: TableSelectionDetail<K, C>, isExtendableSelection: boolean) => void;\n startStickyEdge?: number;\n endStickyEdge?: number;\n};\n\n/**\n * The internal component used to render a single row in Table.\n */\nfunction TableRow<K, D, C>({\n tableId,\n rowKey,\n rowData,\n rowIndex,\n isFinalRow,\n columnsArray,\n rowHeaderColumnKeys,\n hasVerticalGridlines,\n hasHorizontalGridlines,\n isSelected,\n isPreviousSelected,\n isRowSelectionEnabled,\n isSingleRowSelectionEnabled,\n selectedRowKeys = { all: false, keys: new Set<K>() },\n focusRingColumnKey,\n selectedColumnKeys = { all: false, keys: new Set<C>() },\n variant,\n onSelectionChange,\n startStickyEdge,\n endStickyEdge,\n isRtl\n}: TableRowProps<K, D, C>) {\n const translations = useTranslationBundle<BundleType>('@oracle/oraclejet-preact');\n const { interactionProps, applyActiveStyle, applyHoverStyle, applyPseudoHoverStyle } =\n useInteractionStyle();\n\n const { classes: themeClasses } = useComponentTheme<TableRowVariantOptions>(\n TableRowRedwoodTheme,\n { lastRow: isFinalRow ? 'isLastRow' : 'notLastRow' }\n );\n\n const classes = classNames([themeClasses]);\n\n const accessibleRowName = (rowIndex + 2).toString();\n const handleRowSelectorChange = (detail: SelectionDetail<K>) => {\n if (onSelectionChange != null) {\n onSelectionChange(\n { value: { row: detail.value, column: selectedColumnKeys }, target: detail.target },\n false\n );\n }\n };\n const selectorRenderer =\n isRowSelectionEnabled && !isSingleRowSelectionEnabled\n ? () => {\n // conversion from 0-based index and adding the header row as it is always rendered\n return (\n <Selector\n aria-label={translations.collection_selectRow({ ROW_NAME: accessibleRowName })}\n onChange={handleRowSelectorChange}\n rowKey={rowKey}\n selectedKeys={selectedRowKeys}\n />\n );\n }\n : undefined;\n\n let isPreviousColumnSelected = false;\n return (\n <tr\n aria-rowindex={rowIndex + 1}\n class={classes}\n role={'row'}\n data-oj-key={rowKey}\n data-oj-table-data-row={tableId}\n {...(isRowSelectionEnabled\n ? isSelected\n ? { 'aria-selected': true }\n : { 'aria-selected': false }\n : {})}\n {...(typeof rowKey === 'number' && { 'data-oj-key-type': 'number' })}\n {...(isRowSelectionEnabled && interactionProps)}>\n {columnsArray.map((column: TableColumn<K, D, C>, columnIndex: number) => {\n const columnKey = column.key;\n const isColumnSelected = containsKey(selectedColumnKeys, columnKey);\n const cellProps = {\n tableId: tableId,\n rowData: rowData,\n field: column.value.field,\n stickyColumn: column.value.stickyEdge,\n columnKey: columnKey,\n columnIndex: columnIndex,\n rowKey: rowKey,\n rowIndex: rowIndex,\n isFinalRowIndex: isFinalRow,\n isFinalColumnIndex: columnIndex === columnsArray.length - 1,\n hasVerticalGridlines: hasVerticalGridlines,\n hasHorizontalGridlines: hasHorizontalGridlines,\n isRowSelected: isSelected,\n isPreviousRowSelected: isPreviousSelected,\n isColumnSelected: isColumnSelected,\n isPreviousColumnSelected: isPreviousColumnSelected,\n isShowFocusRing: column.key === focusRingColumnKey,\n isRowHeader: rowHeaderColumnKeys.has(column.key),\n renderer: column.value.renderer,\n selectorRenderer: selectorRenderer,\n isRowSelectionEnabled: isRowSelectionEnabled,\n variant: variant,\n isRowSingleSelection: isSingleRowSelectionEnabled,\n applyActiveStyle: applyActiveStyle,\n applyHoverStyle: applyHoverStyle,\n applyPseudoHoverStyle: applyPseudoHoverStyle,\n isStickyStartEdge: columnIndex === startStickyEdge,\n isStickyEndEdge: columnIndex === endStickyEdge,\n isRtl: isRtl\n };\n isPreviousColumnSelected = isColumnSelected;\n return <TableCell {...cellProps} />;\n })}\n </tr>\n );\n}\n\nconst _areStringSetsEquivalent = (set1?: Set<string>, set2?: Set<string>) => {\n if (set1 == null) {\n return set2 == null;\n }\n if (set2 == null) {\n return false;\n }\n return set1.size === set2.size && [...set1].every((x) => set2.has(x));\n};\n\nconst _areColumnsArraysEquivalent = (\n columnsArray1: TableColumn<string | number, any, string>[],\n columnsArray2: TableColumn<string | number, any, string>[]\n) => {\n if (columnsArray1.length === columnsArray2.length) {\n for (let i = 0; i < columnsArray1.length; i++) {\n if (\n columnsArray1[i].key !== columnsArray2[i].key ||\n columnsArray1[i].value !== columnsArray2[i].value\n ) {\n return false;\n }\n }\n return true;\n }\n return false;\n};\n\nexport const MemoizeTableRow = memo(TableRow, (prev: any, next: any) => {\n if (prev && next) {\n return (\n prev.tableId === next.tableId &&\n prev.rowKey === next.rowKey &&\n prev.rowData === next.rowData &&\n prev.rowIndex === next.rowIndex &&\n prev.isFinalRow === next.isFinalRow &&\n _areColumnsArraysEquivalent(prev.columnsArray, next.columnsArray) &&\n prev.horizontalGridlines === next.horizontalGridlines &&\n prev.verticalGridlines === next.verticalGridlines &&\n _areStringSetsEquivalent(prev.rowHeaderColumnKeys, next.rowHeaderColumnKeys) &&\n prev.isSelected === next.isSelected &&\n prev.isPreviousSelected === next.isPreviousSelected &&\n prev.isRowSelectionEnabled === next.isRowSelectionEnabled &&\n prev.isSingleRowSelectionEnabled === next.isSingleRowSelectionEnabled &&\n (prev.isRowSelectionEnabled && !prev.isSingleRowSelectionEnabled\n ? isSameKey(prev.selectedRowKeys, next.selectedRowKeys)\n : true) &&\n isSameKey(prev.selectedColumnKeys, next.selectedColumnKeys) &&\n prev.focusRingColumnKey === next.focusRingColumnKey &&\n prev.variant === next.variant &&\n prev.onSelectionChange === next.onSelectionChange &&\n prev.startStickyEdge === next.startStickyEdge &&\n prev.endStickyEdge === next.endStickyEdge &&\n prev.isRtl === next.isRtl\n );\n }\n return false;\n});\n","/**\n * @license\n * Copyright (c) %FIRST_YEAR% %CURRENT_YEAR%, Oracle and/or its affiliates.\n * The Universal Permissive License (UPL), Version 1.0\n * as shown at https://oss.oracle.com/licenses/upl/\n * @ignore\n */\nimport { ComponentChildren } from 'preact';\nimport { Text } from '../UNSAFE_Text';\nimport { classNames } from '../utils/UNSAFE_classNames';\nimport { useId } from '../hooks/UNSAFE_useId';\nimport { tableRowStyles } from './themes/TableRowStyles.css';\nimport { TableNoDataVariantOptions } from './themes/TableNoDataStyles.css';\nimport { TableNoDataRedwoodTheme } from './themes/redwood/TableNoDataTheme';\nimport { useComponentTheme } from '../hooks/UNSAFE_useComponentTheme';\nimport { BundleType } from '../resources/nls/bundle';\nimport { useTranslationBundle } from '../hooks/UNSAFE_useTranslationBundle';\n\n/**\n * Props for the TableCell Component\n */\nexport type TableNoDataProps = {\n tableId: string;\n columnsCount: number;\n isShowFocusRing: boolean;\n renderer?: () => ComponentChildren;\n};\n\n/**\n * The internal component used to render a single cell in a TableRow.\n */\nexport function TableNoData({\n tableId,\n columnsCount,\n isShowFocusRing,\n renderer\n}: TableNoDataProps) {\n const translations = useTranslationBundle<BundleType>('@oracle/oraclejet-preact');\n\n const rowClasses = classNames([tableRowStyles.base]);\n\n const { classes: themeClasses } = useComponentTheme<TableNoDataVariantOptions>(\n TableNoDataRedwoodTheme,\n {\n defaultRenderer: renderer == null ? 'isDefaultRenderer' : 'notDefaultRenderer',\n showFocusRing: isShowFocusRing ? 'isShowFocusRing' : 'notShowFocusRing'\n }\n );\n\n const cellClasses = classNames([themeClasses]);\n\n function defaultContentRenderer() {\n return (\n <Text truncation=\"ellipsis\" variant=\"primary\" size=\"md\">\n {translations.collection_noData()}\n </Text>\n );\n }\n\n const contentRenderer = renderer != null ? renderer : defaultContentRenderer;\n\n return (\n <tr aria-rowindex={2} class={rowClasses} role={'row'}>\n <td\n aria-colindex={1}\n class={cellClasses}\n id={useId()}\n tabIndex={-1}\n role={'gridcell'}\n colSpan={columnsCount}\n data-oj-cell-type={'noData'}\n data-oj-table-focusable={tableId}\n data-oj-table-nodata-cell={tableId}>\n {contentRenderer()}\n </td>\n </tr>\n );\n}\n","/**\n * @license\n * Copyright (c) %FIRST_YEAR% %CURRENT_YEAR%, Oracle and/or its affiliates.\n * The Universal Permissive License (UPL), Version 1.0\n * as shown at https://oss.oracle.com/licenses/upl/\n * @ignore\n */\nimport { useCallback, useRef } from 'preact/hooks';\nimport { LoadMoreCollection } from '../PRIVATE_LoadMoreCollection';\nimport { TableColumn } from './Table';\nimport { TableSkeletonRow } from './TableSkeletonRow';\nimport { MemoizeTableRow } from './TableRow';\nimport { ItemContext } from '../UNSAFE_Collection';\nimport {\n Cell,\n CurrentRowVariant,\n TableSelectionDetail,\n TableRowContext\n} from '../UNSAFE_TableView';\nimport { classNames } from '../utils/UNSAFE_classNames';\nimport { collectionStyles } from './themes/Table.css';\nimport { Keys, containsKey } from '../utils/UNSAFE_keys';\nimport { ViewportConfig } from '../hooks/UNSAFE_useViewportIntersect';\nimport { TableNoData } from './TableNoData';\nimport { ComponentChildren } from 'preact';\n\n/**\n * Props for the TableBody Component\n */\nexport type TableBodyProps<K, D, C> = {\n tableId: string;\n getAccessibleRowHeaders: (context: TableRowContext<K, D>) => Set<C>;\n data: D[] | null;\n columnsArray: TableColumn<K, D, C>[];\n hasVerticalGridlines: boolean;\n hasHorizontalGridlines: boolean;\n isShowFocusRing: boolean;\n getRowKey: (data: D) => K;\n hasMore: boolean;\n isRtl: boolean;\n onLoadMore: () => void;\n viewportConfig: ViewportConfig;\n currentCell?: Cell<K, C>;\n currentRowVariant?: CurrentRowVariant;\n selected: { row?: Keys<K>; column?: Keys<C> };\n isRowSelectionEnabled: boolean;\n isSingleRowSelectionEnabled: boolean;\n onSelectionChange?: (detail: TableSelectionDetail<K, C>, isExtendableSelection: boolean) => void;\n noDataRenderer?: () => ComponentChildren;\n startStickyEdge?: number;\n endStickyEdge?: number;\n};\n\n/**\n * The internal component used to render a single cell in a TableRow.\n */\nexport function TableBody<K, D, C>({\n tableId,\n getAccessibleRowHeaders,\n data,\n columnsArray,\n hasVerticalGridlines,\n hasHorizontalGridlines,\n isShowFocusRing,\n getRowKey,\n hasMore,\n onLoadMore,\n viewportConfig,\n currentCell,\n currentRowVariant,\n selected,\n isRowSelectionEnabled,\n isSingleRowSelectionEnabled,\n onSelectionChange,\n noDataRenderer,\n startStickyEdge,\n endStickyEdge,\n isRtl\n}: TableBodyProps<K, D, C>) {\n // track the empty loading state and generate a new key when it changes to avoid\n // issues with skeleton animations becoming out of sync when more are added\n const loadIndicatorKeyRef = useRef<number>(new Date().getTime());\n const isShowEmptyLoadingRef = useRef<boolean>();\n\n const collectionClasses = classNames([collectionStyles.base]);\n\n // returns a TableRowContext based on ItemContext (added key)\n const getRowContext = useCallback(\n (context: ItemContext<{ data: D }>) => {\n return {\n index: context.index,\n data: context.data.data,\n key: getRowKey(context.data.data)\n };\n },\n [getRowKey]\n );\n\n let isPreviousSelected = false;\n const collectionChildrenFunc = (context: ItemContext<{ data: D }>) => {\n const tableRowContext = getRowContext(context);\n const rowKey = tableRowContext.key;\n const containsCurrentCell = currentCell?.rowKey === rowKey;\n const focusRingColumnKey =\n containsCurrentCell && isShowFocusRing ? currentCell.columnKey : undefined;\n const isSelected = containsKey(selected.row, rowKey);\n const rowProps = {\n tableId: tableId,\n columnsArray: columnsArray,\n rowHeaderColumnKeys: getAccessibleRowHeaders(tableRowContext),\n hasVerticalGridlines: hasVerticalGridlines,\n hasHorizontalGridlines: hasHorizontalGridlines,\n isSelected: isSelected,\n isPreviousSelected: isPreviousSelected,\n onSelectionChange: onSelectionChange,\n isRowSelectionEnabled: isRowSelectionEnabled,\n isSingleRowSelectionEnabled: isSingleRowSelectionEnabled,\n variant: containsCurrentCell ? currentRowVariant : 'none',\n focusRingColumnKey: focusRingColumnKey,\n selectedRowKeys: selected.row,\n selectedColumnKeys: selected.column,\n rowIndex: tableRowContext.index,\n rowKey: rowKey,\n rowData: tableRowContext.data,\n isFinalRow: tableRowContext.index === (data != null ? data.length - 1 : -1),\n startStickyEdge: startStickyEdge,\n endStickyEdge: endStickyEdge,\n isRtl: isRtl\n };\n isPreviousSelected = isSelected;\n return <MemoizeTableRow {...rowProps} />;\n };\n\n const getNoDataProps = () => {\n return {\n tableId: tableId,\n columnsCount: columnsArray.length,\n isShowFocusRing: isShowFocusRing && currentCell?.type === 'noData',\n renderer: noDataRenderer\n };\n };\n\n const collectionData =\n data != null\n ? data.map((d: D) => {\n const key = getRowKey(d);\n return { data: d, metadata: key };\n })\n : [];\n\n const isShowEmptyLoading = data != null && data.length === 0 && hasMore;\n const isShowNoData = data == null || (data.length === 0 && !hasMore);\n const prevIsEmpty = isShowEmptyLoadingRef.current;\n if (prevIsEmpty !== isShowEmptyLoading) {\n loadIndicatorKeyRef.current = new Date().getTime();\n }\n isShowEmptyLoadingRef.current = isShowEmptyLoading;\n\n return (\n <tbody class={collectionClasses}>\n {isShowNoData ? (\n <TableNoData {...getNoDataProps()} />\n ) : (\n <LoadMoreCollection\n data={collectionData}\n loadMoreIndicator={\n <TableSkeletonRow\n colspan={columnsArray.length}\n preactKey={loadIndicatorKeyRef.current}\n minimumCount={isShowEmptyLoading ? 25 : 3}\n />\n }\n hasMore={hasMore}\n onLoadMore={onLoadMore}\n viewportConfig={viewportConfig}>\n {collectionChildrenFunc}\n </LoadMoreCollection>\n )}\n </tbody>\n );\n}\n","/**\n * @license\n * Copyright (c) %FIRST_YEAR% %CURRENT_YEAR%, Oracle and/or its affiliates.\n * The Universal Permissive License (UPL), Version 1.0\n * as shown at https://oss.oracle.com/licenses/upl/\n * @ignore\n */\nimport { ComponentChildren } from 'preact';\nimport { useCallback } from 'preact/hooks';\nimport { SelectionDetail } from '../UNSAFE_Collection';\nimport { SelectorAll } from '../UNSAFE_SelectorAll';\nimport { Text } from '../UNSAFE_Text';\nimport {\n TableHeaderRendererContext,\n TableSelectionDetail,\n SortCriterionDetail\n} from '../UNSAFE_TableView';\nimport { classNames } from '../utils/UNSAFE_classNames';\nimport { Keys, isSameKey } from '../utils/UNSAFE_keys';\nimport { useId } from '../hooks/UNSAFE_useId';\nimport { tableHeaderCellTextStyles, tableHeaderSortContainerStyles } from './themes/Table.css';\nimport { TableHeaderCellVariantOptions } from './themes/TableHeaderCellStyles.css';\nimport { TableHeaderCellRedwoodTheme } from './themes/redwood/TableHeaderCellTheme';\nimport { useComponentTheme } from '../hooks/UNSAFE_useComponentTheme';\nimport { BundleType } from '../resources/nls/bundle';\nimport { useInteractionStyle } from '../hooks/UNSAFE_useInteractionStyle';\nimport { useTranslationBundle } from '../hooks/UNSAFE_useTranslationBundle';\nimport { EmbeddedIconButton } from '../PRIVATE_EmbeddedIconButton';\nimport { SortAscendingIcon } from '../PRIVATE_ThemedIcons/SortAscendingIcon';\nimport { SortDefaultIcon } from '../PRIVATE_ThemedIcons/SortDefaultIcon';\nimport { SortDescendingIcon } from '../PRIVATE_ThemedIcons/SortDescendingIcon';\n\n/**\n * Props for the TableHeaderCell Component\n */\nexport type TableHeaderCellProps<K, C> = {\n tableId: string;\n columnKey: C;\n columnIndex: number;\n isFinalColumnIndex: boolean;\n hasVerticalGridlines: boolean;\n isSelected: boolean;\n isPreviousSelected: boolean;\n isColumnSelectable: boolean;\n isRowSelectionEnabled: boolean;\n isShowFocusRing: boolean;\n isStickyStartEdge: boolean;\n isStickyEndEdge: boolean;\n isRtl: boolean;\n headerText?: string;\n selectedColumnKeys?: Keys<C>;\n selectedRowKeys?: Keys<K>;\n stickyColumn?: 'start' | 'end' | 'none';\n renderer?: (context: TableHeaderRendererContext<C>) => ComponentChildren;\n onSelectionChange?: (detail: TableSelectionDetail<K, C>, isExtendableSelection: boolean) => void;\n sortable?: 'enabled' | 'disabled';\n sortDirection?: 'ascending' | 'descending';\n onSortCriterionChange?: (detail: SortCriterionDetail<C>) => void;\n};\n\n/**\n * The internal component used to render a single cell in a TableHeaderRow.\n */\nexport function TableHeaderCell<K, C>({\n tableId,\n columnKey,\n columnIndex,\n isFinalColumnIndex,\n hasVerticalGridlines,\n isSelected,\n isPreviousSelected,\n isColumnSelectable,\n isRowSelectionEnabled,\n selectedColumnKeys = { all: false, keys: new Set<C>() },\n selectedRowKeys = { all: false, keys: new Set<K>() },\n isShowFocusRing,\n headerText,\n stickyColumn = 'none',\n renderer,\n onSelectionChange,\n sortable = 'disabled',\n sortDirection,\n onSortCriterionChange,\n isStickyStartEdge,\n isStickyEndEdge,\n isRtl\n}: TableHeaderCellProps<K, C>) {\n const translations = useTranslationBundle<BundleType>('@oracle/oraclejet-preact');\n\n const { interactionProps, applyActiveStyle, applyHoverStyle, applyPseudoHoverStyle } =\n useInteractionStyle();\n\n const hasRenderer = renderer != null;\n const { classes: themeClasses } = useComponentTheme<TableHeaderCellVariantOptions>(\n TableHeaderCellRedwoodTheme,\n {\n defaultRenderer: !hasRenderer ? 'isDefaultRenderer' : 'notDefaultRenderer',\n firstColumn: columnIndex === 0 ? 'isFirstColumn' : 'notFirstColumn',\n lastColumn: isFinalColumnIndex ? 'isLastColumn' : 'notLastColumn',\n borderStartSpacer:\n !(isPreviousSelected || isSelected) && (!hasVerticalGridlines || columnIndex === 0)\n ? 'isBorderStartSpacer'\n : 'notBorderStartSpacer',\n borderEndSpacer:\n isFinalColumnIndex && !isSelected ? 'isBorderEndSpacer' : 'notBorderEndSpacer',\n verticalGrid: hasVerticalGridlines ? 'isVerticalGrid' : 'notVerticalGrid',\n columnSelectable: isColumnSelectable ? 'isColumnSelectable' : 'notColumnSelectable',\n columnSelected: isSelected ? 'isColumnSelected' : 'notColumnSelected',\n previousColumnSelected: isPreviousSelected\n ? 'isPreviousColumnSelected'\n : 'notPreviousColumnSelected',\n stickyStartColumn: stickyColumn === 'start' ? 'isStickyStartColumn' : 'notStickyStartColumn',\n stickyEndColumn: stickyColumn === 'end' ? 'isStickyEndColumn' : 'notStickyEndColumn',\n stickyStartEdge: isStickyStartEdge ? 'isStickyStartEdge' : 'notStickyStartEdge',\n stickyEndEdge: isStickyEndEdge ? 'isStickyEndEdge' : 'notStickyEndEdge',\n showFocusRing: isShowFocusRing ? 'isShowFocusRing' : 'notShowFocusRing',\n active: applyActiveStyle ? 'isActive' : 'notActive',\n hover: applyHoverStyle ? 'isHover' : 'notHover',\n pseudoHover: applyPseudoHoverStyle ? 'isPseudoHover' : 'notPseudoHover',\n rtl: isRtl ? 'isRtl' : 'notRtl'\n }\n );\n\n const cellClasses = classNames([themeClasses]);\n\n let selectorAllState: 'all' | 'none' | 'partial' | 'partial-all';\n if (isSameKey(selectedRowKeys, { all: true, deletedKeys: new Set<K>() })) {\n selectorAllState = 'all';\n } else if (isSameKey(selectedRowKeys, { all: false, keys: new Set<K>() })) {\n selectorAllState = 'none';\n } else {\n selectorAllState = 'partial';\n }\n\n const handleSelectorChange = (detail: SelectionDetail<K>) => {\n if (onSelectionChange != null) {\n onSelectionChange(\n { value: { row: detail.value, column: selectedColumnKeys }, target: detail.target },\n false\n );\n }\n };\n\n const selectorRenderer = isRowSelectionEnabled\n ? () => (\n <SelectorAll\n aria-label={translations.collection_selectAllRows()}\n onChange={handleSelectorChange}\n selected={selectorAllState}\n />\n )\n : undefined;\n\n const sortIconRenderer =\n sortable === 'enabled' || sortDirection != null\n ? () => (\n <EmbeddedIconButton\n aria-label={\n sortable === 'enabled'\n ? translations.collection_sortEnabled()\n : translations.collection_sortDisabled()\n }\n isDisabled={sortable !== 'enabled'}\n onAction={handleSortGesture}>\n {sortDirection === 'ascending' ? (\n <SortAscendingIcon />\n ) : sortDirection === 'descending' ? (\n <SortDescendingIcon />\n ) : (\n <SortDefaultIcon />\n )}\n </EmbeddedIconButton>\n )\n : undefined;\n\n const headerCellRendererProps = {\n key: columnKey,\n headerText: headerText,\n sortable: sortable,\n sortDirection: sortDirection,\n selector: selectorRenderer,\n sortControl: sortIconRenderer\n };\n\n const handleSortGesture = useCallback(() => {\n if (onSortCriterionChange != null) {\n const newDirection = sortDirection === 'ascending' ? 'descending' : 'ascending';\n onSortCriterionChange([{ key: columnKey, sortDirection: newDirection }]);\n }\n }, [columnKey, sortDirection, onSortCriterionChange]);\n\n const getHeaderCellRenderer = useCallback(() => {\n if (renderer != null) {\n return renderer;\n }\n return ({ headerText, sortControl }: TableHeaderRendererContext<C>) => {\n const text =\n headerText != null ? (\n <div class={tableHeaderCellTextStyles.base}>\n <Text overflowWrap=\"normal\" lineClamp={2} variant=\"primary\" size=\"md\">\n {headerText}\n </Text>\n </div>\n ) : null;\n if (sortControl != null) {\n return (\n <div class={tableHeaderSortContainerStyles.base}>\n {text}\n {sortControl()}\n </div>\n );\n }\n return text;\n };\n }, [renderer]);\n\n const getAriaSelected = () => {\n if (isSelected) {\n return { 'aria-selected': true };\n }\n return isColumnSelectable ? { 'aria-selected': false } : undefined;\n };\n\n const getAriaSort = () => {\n if (sortDirection === 'ascending' || sortDirection === 'descending') {\n return { 'aria-sort': sortDirection };\n }\n return undefined;\n };\n\n return (\n <th\n aria-colindex={columnIndex + 1}\n {...getAriaSelected()}\n {...getAriaSort()}\n class={cellClasses}\n id={useId()}\n tabIndex={-1}\n role={'columnheader'}\n data-oj-cell-type={'header'}\n data-oj-column-key={columnKey}\n data-oj-table-focusable={tableId}\n data-oj-table-header-cell={tableId}\n {...(typeof columnKey === 'number' && { 'data-oj-column-key-type': 'number' })}\n {...(isColumnSelectable && interactionProps)}>\n {getHeaderCellRenderer()(headerCellRendererProps)}\n </th>\n );\n}\n","/**\n * @license\n * Copyright (c) %FIRST_YEAR% %CURRENT_YEAR%, Oracle and/or its affiliates.\n * The Universal Permissive License (UPL), Version 1.0\n * as shown at https://oss.oracle.com/licenses/upl/\n * @ignore\n */\nimport { classNames } from '../utils/UNSAFE_classNames';\nimport { Keys, containsKey } from '../utils/UNSAFE_keys';\nimport { TableSelectionDetail, SortCriterionDetail } from '../UNSAFE_TableView';\nimport { TableColumn } from './Table';\nimport { TableHeaderCell } from './TableHeaderCell';\nimport { tableHeaderRowStyles, tableHeaderRowContainerStyles } from './themes/Table.css';\n\n/**\n * Props for the TableHeader Component\n */\nexport type TableHeaderProps<K, D, C> = {\n tableId: string;\n columnsArray: TableColumn<K, D, C>[];\n hasVerticalGridlines: boolean;\n focusedKey?: C;\n isShowFocusRing: boolean;\n selectedColumnKeys?: Keys<C>;\n selectedRowKeys?: Keys<K>;\n isColumnSelectionEnabled: boolean;\n isRowSelectionEnabled: boolean;\n isResizeHover: boolean;\n isRtl: boolean;\n onSelectionChange?: (detail: TableSelectionDetail<K, C>, isExtendableSelection: boolean) => void;\n sortCriterion?: { key: C; sortDirection: 'ascending' | 'descending' }[];\n onSortCriterionChange?: (detail: SortCriterionDetail<C>) => void;\n startStickyEdge?: number;\n endStickyEdge?: number;\n};\n\n/**\n * The internal component used to render a header region in Table.\n */\nexport function TableHeader<K, D, C>({\n tableId,\n columnsArray,\n hasVerticalGridlines,\n focusedKey,\n isShowFocusRing,\n selectedColumnKeys,\n selectedRowKeys,\n isColumnSelectionEnabled,\n isRowSelectionEnabled,\n onSelectionChange,\n sortCriterion,\n onSortCriterionChange,\n startStickyEdge,\n endStickyEdge,\n isResizeHover,\n isRtl\n}: TableHeaderProps<K, D, C>) {\n const rowClasses = classNames([tableHeaderRowStyles.base]);\n const containerClasses = classNames([tableHeaderRowContainerStyles.base]);\n\n const getStyle = () => {\n return isResizeHover ? 'cursor: col-resize;' : '';\n };\n\n let isPreviousSelected = false;\n return (\n <thead class={containerClasses}>\n <tr class={rowClasses} role={'row'} style={getStyle()} data-oj-table-header-row={tableId}>\n {columnsArray.map((column: TableColumn<K, D, C>, columnIndex: number) => {\n const columnKey = column.key;\n let sortDirection;\n if (sortCriterion != null) {\n for (const criterion of sortCriterion) {\n if (criterion.key === columnKey) {\n sortDirection = criterion.sortDirection;\n break;\n }\n }\n }\n const isSelected = containsKey(selectedColumnKeys, columnKey);\n const headerCellProps = {\n tableId: tableId,\n hasVerticalGridlines: hasVerticalGridlines,\n columnKey: columnKey,\n columnIndex: columnIndex,\n isFinalColumnIndex: columnIndex === columnsArray.length - 1,\n stickyColumn: column.value.stickyEdge,\n isSelected: isSelected,\n isPreviousSelected: isPreviousSelected,\n selectedColumnKeys: selectedColumnKeys,\n selectedRowKeys: selectedRowKeys,\n isColumnSelectable: isColumnSelectionEnabled && column.value.selectable !== 'disabled',\n isRowSelectionEnabled: isRowSelectionEnabled,\n isShowFocusRing: isShowFocusRing && columnKey === focusedKey,\n headerText: column.value.headerText,\n renderer: column.value.headerRenderer,\n onSelectionChange: onSelectionChange,\n sortable: column.value.sortable,\n sortDirection: sortDirection,\n onSortCriterionChange: onSortCriterionChange,\n isStickyStartEdge: columnIndex === startStickyEdge,\n isStickyEndEdge: columnIndex === endStickyEdge,\n isRtl: isRtl\n };\n isPreviousSelected = isSelected;\n return <TableHeaderCell {...headerCellProps} />;\n })}\n </tr>\n </thead>\n );\n}\n","/**\n * @license\n * Copyright (c) %FIRST_YEAR% %CURRENT_YEAR%, Oracle and/or its affiliates.\n * The Universal Permissive License (UPL), Version 1.0\n * as shown at https://oss.oracle.com/licenses/upl/\n * @ignore\n */\nimport { ComponentChildren } from 'preact';\nimport { Text } from '../UNSAFE_Text';\nimport { TableFooterRendererContext } from '../UNSAFE_TableView';\nimport { classNames } from '../utils/UNSAFE_classNames';\nimport { useId } from '../hooks/UNSAFE_useId';\nimport { TableFooterCellVariantOptions } from './themes/TableFooterCellStyles.css';\nimport { TableFooterCellRedwoodTheme } from './themes/redwood/TableFooterCellTheme';\nimport { useComponentTheme } from '../hooks/UNSAFE_useComponentTheme';\nimport { useInteractionStyle } from '../hooks/UNSAFE_useInteractionStyle';\n\n/**\n * Props for the TableFooterCell Component\n */\nexport type TableFooterCellProps<C> = {\n tableId: string;\n columnKey: C;\n columnIndex: number;\n isFinalColumnIndex: boolean;\n hasVerticalGridlines: boolean;\n isSelected: boolean;\n isPreviousSelected: boolean;\n isColumnSelectable: boolean;\n isShowFocusRing: boolean;\n isStickyStartEdge: boolean;\n isStickyEndEdge: boolean;\n isRtl: boolean;\n footerText?: string;\n stickyColumn?: 'start' | 'end' | 'none';\n renderer?: (context: TableFooterRendererContext<C>) => ComponentChildren;\n};\n\nfunction _defaultFooterCellRenderer<C>({ footerText }: TableFooterRendererContext<C>) {\n return footerText != null ? (\n <Text truncation=\"ellipsis\" variant=\"primary\" size=\"md\">\n {footerText}\n </Text>\n ) : null;\n}\n\n/**\n * The internal component used to render a single cell in a TableFooterRow.\n */\nexport function TableFooterCell<C>({\n tableId,\n columnKey,\n columnIndex,\n isFinalColumnIndex,\n hasVerticalGridlines,\n isSelected,\n isPreviousSelected,\n isColumnSelectable,\n isShowFocusRing,\n stickyColumn = 'none',\n footerText,\n renderer = _defaultFooterCellRenderer,\n isStickyStartEdge,\n isStickyEndEdge,\n isRtl\n}: TableFooterCellProps<C>) {\n const { interactionProps, applyActiveStyle, applyHoverStyle, applyPseudoHoverStyle } =\n useInteractionStyle();\n\n const hasRenderer = renderer !== _defaultFooterCellRenderer;\n const { classes: themeClasses } = useComponentTheme<TableFooterCellVariantOptions>(\n TableFooterCellRedwoodTheme,\n {\n defaultRenderer: !hasRenderer ? 'isDefaultRenderer' : 'notDefaultRenderer',\n firstColumn: columnIndex === 0 ? 'isFirstColumn' : 'notFirstColumn',\n lastColumn: isFinalColumnIndex ? 'isLastColumn' : 'notLastColumn',\n borderStartSpacer:\n !(isPreviousSelected || isSelected) && (!hasVerticalGridlines || columnIndex === 0)\n ? 'isBorderStartSpacer'\n : 'notBorderStartSpacer',\n borderEndSpacer:\n isFinalColumnIndex && !isSelected ? 'isBorderEndSpacer' : 'notBorderEndSpacer',\n verticalGrid: hasVerticalGridlines ? 'isVerticalGrid' : 'notVerticalGrid',\n columnSelectable: isColumnSelectable ? 'isColumnSelectable' : 'notColumnSelectable',\n columnSelected: isSelected ? 'isColumnSelected' : 'notColumnSelected',\n previousColumnSelected: isPreviousSelected\n ? 'isPreviousColumnSelected'\n : 'notPreviousColumnSelected',\n stickyStartColumn: stickyColumn === 'start' ? 'isStickyStartColumn' : 'notStickyStartColumn',\n stickyEndColumn: stickyColumn === 'end' ? 'isStickyEndColumn' : 'notStickyEndColumn',\n stickyStartEdge: isStickyStartEdge ? 'isStickyStartEdge' : 'notStickyStartEdge',\n stickyEndEdge: isStickyEndEdge ? 'isStickyEndEdge' : 'notStickyEndEdge',\n showFocusRing: isShowFocusRing ? 'isShowFocusRing' : 'notShowFocusRing',\n active: applyActiveStyle ? 'isActive' : 'notActive',\n hover: applyHoverStyle ? 'isHover' : 'notHover',\n pseudoHover: applyPseudoHoverStyle ? 'isPseudoHover' : 'notPseudoHover',\n rtl: isRtl ? 'isRtl' : 'notRtl'\n }\n );\n\n const cellClasses = classNames([themeClasses]);\n\n const footerCellRendererProps = { key: columnKey, footerText: footerText };\n\n return (\n <td\n aria-colindex={columnIndex + 1}\n {...(isSelected\n ? { 'aria-selected': true }\n : isColumnSelectable\n ? { 'aria-selected': false }\n : {})}\n class={cellClasses}\n id={useId()}\n tabIndex={-1}\n role={'gridcell'}\n data-oj-cell-type={'footer'}\n data-oj-column-key={columnKey}\n data-oj-table-focusable={tableId}\n data-oj-table-footer-cell={tableId}\n {...(typeof columnKey === 'number' && { 'data-oj-column-key-type': 'number' })}\n {...(isColumnSelectable && interactionProps)}>\n {renderer(footerCellRendererProps)}\n </td>\n );\n}\n","/**\n * @license\n * Copyright (c) %FIRST_YEAR% %CURRENT_YEAR%, Oracle and/or its affiliates.\n * The Universal Permissive License (UPL), Version 1.0\n * as shown at https://oss.oracle.com/licenses/upl/\n * @ignore\n */\nimport { classNames } from '../utils/UNSAFE_classNames';\nimport { Keys, containsKey } from '../utils/UNSAFE_keys';\nimport { TableColumn } from './Table';\nimport { TableFooterCell } from './TableFooterCell';\nimport { tableFooterRowStyles, tableFooterRowContainerStyles } from './themes/Table.css';\n\n/**\n * Props for the TableFooter Component\n */\nexport type TableFooterProps<K, D, C> = {\n tableId: string;\n isRendered: boolean;\n columnsArray: TableColumn<K, D, C>[];\n hasVerticalGridlines: boolean;\n focusedKey?: C;\n isShowFocusRing: boolean;\n isRtl: boolean;\n selectedKeys?: Keys<C>;\n isColumnSelectionEnabled: boolean;\n startStickyEdge?: number;\n endStickyEdge?: number;\n};\n\n/**\n * The internal component used to render a footer region in Table.\n */\nexport function TableFooter<K, D, C>({\n tableId,\n isRendered,\n columnsArray,\n hasVerticalGridlines,\n focusedKey,\n isShowFocusRing,\n selectedKeys,\n isColumnSelectionEnabled,\n startStickyEdge,\n endStickyEdge,\n isRtl\n}: TableFooterProps<K, D, C>) {\n const rowClasses = classNames([tableFooterRowStyles.base]);\n const containerClasses = classNames([tableFooterRowContainerStyles.base]);\n\n let isPreviousSelected = false;\n return isRendered ? (\n <tfoot class={containerClasses}>\n <tr class={rowClasses} role={'row'} data-oj-table-footer-row={tableId}>\n {columnsArray.map((column: TableColumn<K, D, C>, columnIndex: number) => {\n const columnKey = column.key;\n const isSelected = containsKey(selectedKeys, columnKey);\n const footerCellProps = {\n tableId: tableId,\n columnKey: columnKey,\n columnIndex: columnIndex,\n isFinalColumnIndex: columnIndex === columnsArray.length - 1,\n hasVerticalGridlines: hasVerticalGridlines,\n stickyColumn: column.value.stickyEdge,\n isSelected: isSelected,\n isPreviousSelected: isPreviousSelected,\n isColumnSelectable: isColumnSelectionEnabled && column.value.selectable !== 'disabled',\n isShowFocusRing: isShowFocusRing && columnKey === focusedKey,\n footerText: column.value.footerText,\n renderer: column.value.footerRenderer,\n isStickyStartEdge: columnIndex === startStickyEdge,\n isStickyEndEdge: columnIndex === endStickyEdge,\n isRtl: isRtl\n };\n isPreviousSelected = isSelected;\n return <TableFooterCell {...footerCellProps} />;\n })}\n </tr>\n </tfoot>\n ) : null;\n}\n","/**\n * @license\n * Copyright (c) %FIRST_YEAR% %CURRENT_YEAR%, Oracle and/or its affiliates.\n * The Universal Permissive License (UPL), Version 1.0\n * as shown at https://oss.oracle.com/licenses/upl/\n * @ignore\n */\nimport { classNames } from '../utils/UNSAFE_classNames';\nimport { tableDragIndicatorStyles } from './themes/Table.css';\n\n/**\n * Props for the TableDragIndicator Component\n */\nexport type TableDragIndicatorProps = {\n isRtl: boolean;\n position?: number;\n};\n\n/**\n * The internal component used to render a drag indicator line in the Table.\n */\nexport function TableDragIndicator({ position, isRtl }: TableDragIndicatorProps) {\n const tableDragIndicatorClasses = classNames([tableDragIndicatorStyles.base]);\n\n const getDragIndicatorStyle = () => {\n if (position != null) {\n return isRtl\n ? `right:${position}px;cursor:col-resize;`\n : `left:${position}px;cursor:col-resize;`;\n }\n return `display:none;`;\n };\n\n return <div class={tableDragIndicatorClasses} style={getDragIndicatorStyle()} />;\n}\n","/**\n * @license\n * Copyright (c) %FIRST_YEAR% %CURRENT_YEAR%, Oracle and/or its affiliates.\n * The Universal Permissive License (UPL), Version 1.0\n * as shown at https://oss.oracle.com/licenses/upl/\n * @ignore\n */\nimport { keyExtractor } from '../../utils/PRIVATE_collectionUtils';\nimport { FocusableElement } from '../../utils/PRIVATE_tabbableUtils';\nimport { Cell } from '../../UNSAFE_TableView';\n\n/**\n * Returns the cell type for the given cell element\n */\nexport const getCellType = (element: FocusableElement) => {\n return element.dataset['ojCellType'];\n};\n\n/**\n * Returns the row key for the given row element\n */\nexport const getRowKey = (element: HTMLElement) => {\n return element.dataset['ojKeyType'] === 'number'\n ? Number(element.dataset['ojKey'])\n : element.dataset['ojKey'];\n};\n\n/**\n * Returns the key for the row at the given index\n */\nexport const getRowKeyForRowIndex = (root: HTMLElement, tableId: string, index: number) => {\n if (root != null) {\n const rowElements = root.querySelectorAll(`[data-oj-table-data-row='${tableId}']`);\n if (rowElements.length > index) {\n return getRowKey(rowElements[index] as HTMLElement);\n }\n }\n return null;\n};\n\n/**\n * Returns the index of the given row element\n */\nexport const getRowIndexForRowElement = (\n root: HTMLElement,\n tableId: string,\n rowElement: HTMLElement\n) => {\n if (root != null) {\n const rowElements = root.querySelectorAll(`[data-oj-table-data-row='${tableId}']`);\n const index = Array.prototype.indexOf.call(rowElements, rowElement);\n if (index > -1) {\n return index;\n }\n }\n return null;\n};\n\n/**\n * Returns the index of the row for the given key.\n */\nexport function getRowIndexForRowKey<K>(root: HTMLElement, tableId: string, rowKey: K) {\n if (root != null) {\n const rowElements = root.querySelectorAll(`[data-oj-table-data-row='${tableId}']`);\n for (let i = 0; i < rowElements.length; i++) {\n if (rowKey === getRowKey(rowElements[i] as HTMLElement)) {\n return i;\n }\n }\n }\n return null;\n}\n\n/**\n * Returns the column key for the given cell element\n */\nexport const getColumnKey = (element: HTMLElement) => {\n return element.dataset['ojColumnKeyType'] === 'number'\n ? Number(element.dataset['ojColumnKey'])\n : element.dataset['ojColumnKey'];\n};\n\n/**\n * Returns the key for the column at the given index\n */\nexport const getColumnKeyForColumnIndex = (root: HTMLElement, tableId: string, index: number) => {\n if (root != null) {\n const headerElements = root.querySelectorAll(`[data-oj-table-header-cell='${tableId}']`);\n if (headerElements.length > index) {\n return getColumnKey(headerElements[index] as HTMLElement);\n }\n }\n return null;\n};\n\n/**\n * Returns the index of the given column header element or footer element\n */\nexport const getColumnIndexForHeaderFooterElement = (\n root: HTMLElement,\n tableId: string,\n cellElement: HTMLElement,\n isHeader: boolean\n) => {\n if (root != null) {\n const columnElements = root.querySelectorAll(\n isHeader\n ? `[data-oj-table-header-cell='${tableId}']`\n : `[data-oj-table-footer-cell='${tableId}']`\n );\n const index = Array.prototype.indexOf.call(columnElements, cellElement);\n if (index > -1) {\n return index;\n }\n }\n return null;\n};\n\n/**\n * Helper method to get the cell key definition from an element\n */\nexport function logicalCellExtractor<K, C>(\n element: HTMLElement,\n tableId: string,\n cellSelector: string,\n onlyAncestors?: boolean\n): Cell<K, C> | null {\n const startingElement = onlyAncestors ? element.parentElement : element;\n if (startingElement != null) {\n const cellElement = startingElement.closest(cellSelector) as HTMLElement;\n if (cellElement != null) {\n const cellType = getCellType(cellElement);\n if (cellType === 'data') {\n return {\n rowKey: keyExtractor(cellElement, `[data-oj-table-data-row='${tableId}']`) as K,\n columnKey: getColumnKey(cellElement) as C,\n type: cellType\n };\n } else if (cellType === 'header' || cellType === 'footer') {\n return {\n columnKey: getColumnKey(cellElement) as C,\n type: cellType\n };\n } else if (cellType === 'noData') {\n return {\n type: cellType\n };\n }\n }\n }\n return null;\n}\n\n/**\n * Helper method to get an element from a cell descriptor\n */\nexport function getElementFromCell<K, C>(\n root: HTMLElement,\n tableId: string,\n cell: Cell<K, C>\n): HTMLElement | null {\n if (cell.type === 'header') {\n // header case\n const headerElements = root.querySelectorAll(`[data-oj-table-header-cell='${tableId}']`);\n for (const headerElement of headerElements) {\n if (cell.columnKey === getColumnKey(headerElement as HTMLElement)) {\n return headerElement as HTMLElement;\n }\n }\n } else if (cell.type === 'footer') {\n // footer case\n const footerElements = root.querySelectorAll(`[data-oj-table-footer-cell='${tableId}']`);\n for (const footerElement of footerElements) {\n if (cell.columnKey === getColumnKey(footerElement as HTMLElement)) {\n return footerElement as HTMLElement;\n }\n }\n } else if (cell.type === 'data') {\n // data body case\n const rowElements = root.querySelectorAll(`[data-oj-table-data-row='${tableId}']`);\n for (const rowElement of rowElements) {\n if (cell.rowKey === getRowKey(rowElement as HTMLElement)) {\n const cellElements = rowElement.querySelectorAll(`[data-oj-table-focusable='${tableId}']`);\n for (const cellElement of cellElements) {\n if (cell.columnKey === getColumnKey(cellElement as HTMLElement)) {\n return cellElement as HTMLElement;\n }\n }\n }\n }\n } else if (cell.type === 'noData') {\n // no data case\n return root.querySelector(`[data-oj-table-nodata-cell='${tableId}']`) as HTMLElement;\n }\n return null;\n}\n\n/**\n * Helper method to get the top scroller offset of the Table\n */\nexport const getScrollerTopOffset = (root: HTMLElement, tableId: string) => {\n const headerRowElement = root.querySelector(\n `[data-oj-table-header-row='${tableId}']`\n ) as HTMLElement;\n return headerRowElement != null ? headerRowElement.getBoundingClientRect().height : 0;\n};\n\n/**\n * Helper method to get the bottom scroller offset of the Table\n */\nexport const getScrollerBottomOffset = (root: HTMLElement, tableId: string) => {\n const footerRowElement = root.querySelector(\n `[data-oj-table-footer-row='${tableId}']`\n ) as HTMLElement;\n return footerRowElement != null ? footerRowElement.getBoundingClientRect().height : 0;\n};\n\n/**\n * Returns the key of the first focusable row in the Table\n */\nexport const getFirstFocusableRowKey = (root: HTMLElement, tableId: string) => {\n if (root != null) {\n const firstRowElement = root.querySelector(`[data-oj-table-data-row='${tableId}']`);\n if (firstRowElement != null) {\n return getRowKey(firstRowElement as HTMLElement);\n }\n }\n return null;\n};\n\n/**\n * Returns the key of the last focusable row in the Table\n */\nexport const getLastFocusableRowKey = (root: HTMLElement, tableId: string) => {\n const rowElements = root.querySelectorAll(`[data-oj-table-data-row='${tableId}']`);\n const rowCount = rowElements.length;\n if (rowCount > 0) {\n return getRowKey(rowElements[rowCount - 1] as HTMLElement);\n }\n return null;\n};\n\n/**\n * Returns the cell definition of the first rendered cell in the Table\n */\nexport const getFirstFocusableCell = (root: HTMLElement, tableId: string) => {\n if (root != null) {\n const firstCellElement = root.querySelector(\n `[data-oj-table-focusable='${tableId}']`\n ) as HTMLElement;\n if (firstCellElement != null) {\n const firstCellType = getCellType(firstCellElement);\n if (firstCellType === 'header' || firstCellType === 'footer') {\n return { columnKey: getColumnKey(firstCellElement), type: firstCellType };\n } else if (firstCellType === 'noData') {\n return { type: 'noData' };\n }\n return {\n rowKey: getRowKey(firstCellElement),\n columnKey: getColumnKey(firstCellElement),\n type: 'data'\n };\n }\n }\n return null;\n};\n\n/**\n * Helper method to determine if the no data cell is present in the Table\n */\nexport const hasNoDataCell = (root: HTMLElement, tableId: string) => {\n if (root != null) {\n return root.querySelectorAll(`[data-oj-table-nodata-cell='${tableId}']`).length > 0;\n }\n return false;\n};\n\n/**\n * Helper method to determine if footer cells are present in the Table\n */\nexport const hasFooterCells = (root: HTMLElement, tableId: string) => {\n if (root != null) {\n return root.querySelectorAll(`[data-oj-table-footer-row='${tableId}']`).length > 0;\n }\n return false;\n};\n","/**\n * @license\n * Copyright (c) %FIRST_YEAR% %CURRENT_YEAR%, Oracle and/or its affiliates.\n * The Universal Permissive License (UPL), Version 1.0\n * as shown at https://oss.oracle.com/licenses/upl/\n * @ignore\n */\nimport { RefObject } from 'preact';\nimport { ScrollDetail, SizingInfo, TableColumn } from '../Table';\nimport { TableHorizontalScrollPosition, TableVerticalScrollPosition } from '../../UNSAFE_TableView';\nimport { ViewportConfig } from '../../hooks/UNSAFE_useViewportIntersect';\nimport { findElementByKey } from '../../utils/PRIVATE_collectionUtils';\nimport {\n getColumnKey,\n getElementFromCell,\n getRowKey,\n getRowKeyForRowIndex,\n getScrollerBottomOffset,\n getScrollerTopOffset\n} from './TableDomUtils';\n\n/**\n * A helper function to make sure specified elem is visible in the specified container\n */\nfunction _scrollColumnIntoView<K, D, C>(\n columnElement: HTMLElement,\n scrollerElement: HTMLElement,\n columnsArray: TableColumn<K, D, C>[],\n scrollbarWidth: number,\n isRtl: boolean,\n fullColumnWidths?: number[],\n location?: 'inView' | 'start' | 'end'\n) {\n const columnKey = getColumnKey(columnElement);\n\n let columnIndex;\n for (let i = 0; i < columnsArray.length; i++) {\n if (columnsArray[i].key === columnKey) {\n columnIndex = i;\n break;\n }\n }\n if (columnIndex != null && fullColumnWidths != null) {\n let startOffset = 0;\n let endOffset = 0;\n\n const stickyStartColumns = getStickyColumnIndicies(columnsArray, true);\n for (let i = 0; i < stickyStartColumns.length; i++) {\n const stickyIndex = stickyStartColumns[i];\n if (stickyIndex < columnIndex) {\n startOffset += fullColumnWidths[stickyIndex];\n } else {\n break;\n }\n }\n const stickyEndColumns = getStickyColumnIndicies(columnsArray, false);\n for (let i = stickyEndColumns.length - 1; i > -1; i--) {\n const stickyIndex = stickyEndColumns[i];\n if (stickyIndex > columnIndex) {\n endOffset += fullColumnWidths[stickyIndex];\n } else {\n break;\n }\n }\n\n const horizontalOverflowDiff = _getHorizontalOverflowDiff(\n columnElement,\n scrollerElement,\n startOffset,\n endOffset,\n scrollbarWidth,\n isRtl\n );\n const leftOverflowDiff = horizontalOverflowDiff.left;\n const hasLeftOverflow = leftOverflowDiff >= 0;\n const rightOverflowDiff = horizontalOverflowDiff.right;\n const hasRightOverflow = rightOverflowDiff >= 0;\n\n // don't adjust scroll position if row has overflow in both directions\n if (hasLeftOverflow && hasRightOverflow) {\n return;\n }\n\n if (location == null || location === 'inView') {\n // if column fits fully in viewport, scroll overflow side into view\n // otherwise, scroll the shortest amount to fill viewport with column\n if (hasLeftOverflow) {\n if (Math.abs(rightOverflowDiff) > Math.abs(leftOverflowDiff)) {\n scrollerElement.scrollLeft = _roundScrollValue(\n scrollerElement.scrollLeft - leftOverflowDiff,\n false\n );\n } else {\n scrollerElement.scrollLeft = _roundScrollValue(\n scrollerElement.scrollLeft + rightOverflowDiff,\n true\n );\n }\n } else if (hasRightOverflow) {\n if (Math.abs(leftOverflowDiff) > Math.abs(rightOverflowDiff)) {\n scrollerElement.scrollLeft = _roundScrollValue(\n scrollerElement.scrollLeft + rightOverflowDiff,\n true\n );\n } else {\n scrollerElement.scrollLeft = _roundScrollValue(\n scrollerElement.scrollLeft - leftOverflowDiff,\n false\n );\n }\n }\n } else if (location === 'start') {\n scrollerElement.scrollLeft = _roundScrollValue(\n scrollerElement.scrollLeft - leftOverflowDiff,\n false\n );\n } else {\n scrollerElement.scrollLeft = _roundScrollValue(\n scrollerElement.scrollLeft + rightOverflowDiff,\n true\n );\n }\n }\n}\n\n/**\n * A helper function to make sure specified elem is visible in the specified container\n */\nconst _scrollRowIntoView = (\n root: HTMLDivElement,\n tableId: string,\n rowElement: HTMLElement,\n scrollerElement: HTMLElement,\n scrollbarHeight: number,\n location?: 'inView' | 'top' | 'bottom'\n) => {\n const topOffset = getScrollerTopOffset(root, tableId);\n const bottomOffset = getScrollerBottomOffset(root, tableId);\n const verticalOverflowDiff = _getVerticalOverflowDiff(\n rowElement,\n scrollerElement,\n topOffset,\n bottomOffset,\n scrollbarHeight\n );\n const topOverflowDiff = verticalOverflowDiff.top;\n const hasTopOverflow = topOverflowDiff >= 0;\n const bottomOverflowDiff = verticalOverflowDiff.bottom;\n const hasBottomOverflow = bottomOverflowDiff >= 0;\n\n // don't adjust scroll position if row has overflow in both directions\n if (hasTopOverflow && hasBottomOverflow) {\n return;\n }\n if (location == null || location === 'inView') {\n // if row fits fully in viewport, scroll overflow side into view\n // otherwise, scroll the shortest amount to fill viewport with row\n if (hasBottomOverflow) {\n if (Math.abs(topOverflowDiff) > Math.abs(bottomOverflowDiff)) {\n scrollerElement.scrollTop = _roundScrollValue(\n scrollerElement.scrollTop + bottomOverflowDiff,\n true\n );\n } else {\n scrollerElement.scrollTop = _roundScrollValue(\n scrollerElement.scrollTop - topOverflowDiff,\n false\n );\n }\n } else if (hasTopOverflow) {\n if (Math.abs(bottomOverflowDiff) > Math.abs(topOverflowDiff)) {\n scrollerElement.scrollTop = _roundScrollValue(\n scrollerElement.scrollTop - topOverflowDiff,\n false\n );\n } else {\n scrollerElement.scrollTop = _roundScrollValue(\n scrollerElement.scrollTop + bottomOverflowDiff,\n true\n );\n }\n }\n } else if (location === 'top') {\n scrollerElement.scrollTop = _roundScrollValue(\n scrollerElement.scrollTop - topOverflowDiff,\n false\n );\n } else {\n scrollerElement.scrollTop = _roundScrollValue(\n scrollerElement.scrollTop + bottomOverflowDiff,\n true\n );\n }\n};\n\n/**\n * Helper method to round a desired scrollTop or scrollLeft value to the nearest valid value\n * depending on the client browser.\n */\nconst _roundScrollValue = (value: number, isOver: boolean) => {\n // use Math.floor() and Math.ceil() to ensure we round to nearest containing valid\n // pixel value in either direction as valid scrollTop values are only integers\n return isOver ? Math.ceil(value) : Math.floor(value);\n};\n\n/**\n * A helper to get the horizontal overflow diff of the given element\n */\nconst _getHorizontalOverflowDiff = (\n element: HTMLElement,\n scrollerElement: HTMLElement,\n startOffset: number,\n endOffset: number,\n scrollbarWidth: number,\n isRtl: boolean\n) => {\n const elementRect = element.getBoundingClientRect();\n const scrollerRect = scrollerElement.getBoundingClientRect();\n\n if (isRtl) {\n return {\n left: scrollerRect.left - elementRect.left + endOffset + scrollbarWidth,\n right: elementRect.right - scrollerRect.right + startOffset\n };\n } else {\n return {\n left: scrollerRect.left - elementRect.left + startOffset,\n right: elementRect.right - scrollerRect.right + endOffset + scrollbarWidth\n };\n }\n};\n\n/**\n * A helper to get the vertical overflow diff of the given element\n */\nexport const _getVerticalOverflowDiff = (\n element: HTMLElement,\n scrollerElement: HTMLElement,\n topOffset: number,\n bottomOffset: number,\n scrollbarHeight: number\n) => {\n const elementRect = element.getBoundingClientRect();\n const scrollerRect = scrollerElement.getBoundingClientRect();\n\n return {\n top: scrollerRect.top - elementRect.top + topOffset,\n bottom: elementRect.bottom - scrollerRect.bottom + bottomOffset + scrollbarHeight\n };\n};\n\n/**\n * Helper to set the horizontal scroll position on the Table.\n */\nexport function setHorizontalScrollPosition<K, D, C>(\n root: HTMLDivElement,\n columnsArray: TableColumn<K, D, C>[],\n fullColumnWidths: number[],\n isRtl: boolean,\n horizontalScrollPosition?: TableHorizontalScrollPosition<C>\n) {\n const x = _getScrollLeftFromScrollPosition(\n root,\n columnsArray,\n fullColumnWidths,\n horizontalScrollPosition\n );\n root.scrollLeft = x != null ? (isRtl ? -x : x) : 0;\n}\n\n/**\n * Helper to set the vertical scroll position on the Table.\n */\nexport function setVerticalScrollPosition<K>(\n root: HTMLDivElement,\n tableId: string,\n verticalScrollPosition?: TableVerticalScrollPosition<K>\n) {\n const y = _getScrollTopFromScrollPosition(root, tableId, verticalScrollPosition);\n root.scrollTop = y != null ? y : 0;\n}\n\n/**\n * Helper to determine the 'x' value of a given scroll position.\n */\nfunction _getScrollLeftFromScrollPosition<K, D, C>(\n root: HTMLDivElement,\n columnsArray: TableColumn<K, D, C>[],\n fullColumnWidths: number[],\n scrollPosition?: TableHorizontalScrollPosition<C>\n) {\n if (scrollPosition != null) {\n let columnKey;\n let useColumn = false;\n if (scrollPosition.columnKey != null) {\n // columnKey takes precedence over everything else\n useColumn = true;\n columnKey = scrollPosition.columnKey;\n } else if (scrollPosition.offsetX != null && scrollPosition.x == null) {\n // offsetX can be used on its own if it is the only horizontal aspect provided\n useColumn = true;\n const currentHorizontalScrollPosition = getHorizontalScrollPosition(\n root,\n columnsArray,\n fullColumnWidths\n );\n columnKey = currentHorizontalScrollPosition.columnKey;\n }\n if (useColumn) {\n if (columnKey != null) {\n let x = 0;\n for (let i = 0; i < fullColumnWidths.length; i++) {\n if (columnsArray[i].key === columnKey) {\n return x + (scrollPosition.offsetX != null ? scrollPosition.offsetX : 0);\n }\n if (columnsArray[i].value.stickyEdge !== 'start') {\n x += fullColumnWidths[i];\n }\n }\n }\n } else if (scrollPosition.x != null) {\n return scrollPosition.x;\n }\n }\n // either nothing was provided, or what was provided was invalid\n return undefined;\n}\n\n/**\n * Helper to determine the 'y' value of a given scroll position.\n */\nfunction _getScrollTopFromScrollPosition<K>(\n root: HTMLDivElement,\n tableId: string,\n scrollPosition?: TableVerticalScrollPosition<K>\n) {\n if (scrollPosition != null) {\n let rowKey;\n let useRow = false;\n if (scrollPosition.rowKey != null) {\n // rowKey takes precedence over everything else\n useRow = true;\n rowKey = scrollPosition.rowKey;\n } else if (scrollPosition.offsetY != null && scrollPosition.y == null) {\n // offsetY can be used on its own if it is the only vertical aspect provided\n useRow = true;\n rowKey = getVerticalScrollPosition(root, tableId).rowKey;\n }\n if (useRow) {\n if (rowKey != null) {\n let y = 0;\n const rowElements = root.querySelectorAll(`[data-oj-table-data-row='${tableId}']`);\n for (let i = 0; i < rowElements.length; i++) {\n if (rowKey === getRowKey(rowElements[i] as HTMLElement)) {\n return y + (scrollPosition.offsetY != null ? scrollPosition.offsetY : 0);\n }\n y += rowElements[i].getBoundingClientRect().height;\n }\n }\n } else if (scrollPosition.y != null) {\n return scrollPosition.y;\n }\n }\n // either nothing was provided, or what was provided was invalid\n return undefined;\n}\n\n/**\n * Helper to get the logical scroll position for the given scrollLeft value. If no scrollLeft value is given,\n * it will use the current scrollLeft value of the Table.\n */\nexport function getHorizontalScrollPosition<K, D, C>(\n root: HTMLDivElement,\n columnsArray: TableColumn<K, D, C>[],\n fullColumnWidths: number[],\n newScrollLeft?: number\n) {\n // ensure scroll position x value is initialized\n const scrollLeft = Math.abs(newScrollLeft == null ? root.scrollLeft : newScrollLeft);\n\n const scrollPosition: TableHorizontalScrollPosition<C> = {\n x: scrollLeft,\n columnKey: undefined,\n offsetX: undefined\n };\n\n let columnEnd = 0;\n if (columnsArray.length > 0) {\n if (scrollLeft === 0) {\n scrollPosition.columnKey = columnsArray[0].key;\n scrollPosition.offsetX = 0;\n return scrollPosition;\n }\n }\n for (let i = 0; i < columnsArray.length; i++) {\n if (columnsArray[i].value.stickyEdge !== 'start') {\n columnEnd += fullColumnWidths[i];\n }\n if (scrollLeft < columnEnd) {\n scrollPosition.columnKey = columnsArray[i].key;\n scrollPosition.offsetX = fullColumnWidths[i] + scrollLeft - columnEnd;\n break;\n }\n }\n return scrollPosition;\n}\n\n/**\n * Helper to get the logical scroll position for the given scrollTop value. If no scrollTop value is given,\n * it will use the current scrollTop value of the Table.\n */\nexport function getVerticalScrollPosition<K>(\n root: HTMLDivElement,\n tableId: string,\n newScrollTop?: number\n) {\n // ensure scroll position y value is initialized\n const scrollTop = Math.abs(newScrollTop == null ? root.scrollTop : newScrollTop);\n\n const scrollPosition: TableVerticalScrollPosition<K> = {\n y: scrollTop,\n rowKey: undefined,\n offsetY: undefined\n };\n\n let rowBottom = 0;\n const rowElements = root.querySelectorAll(`[data-oj-table-data-row='${tableId}']`);\n if (rowElements.length > 0) {\n if (scrollTop === 0) {\n scrollPosition.rowKey = getRowKeyForRowIndex(root, tableId, 0) as K;\n scrollPosition.offsetY = 0;\n return scrollPosition;\n }\n }\n for (let i = 0; i < rowElements.length; i++) {\n const rowHeight = rowElements[i].getBoundingClientRect().height;\n rowBottom += rowHeight;\n if (scrollTop < rowBottom) {\n scrollPosition.rowKey = getRowKeyForRowIndex(root, tableId, i) as K;\n scrollPosition.offsetY = rowHeight + scrollTop - rowBottom;\n break;\n }\n }\n return scrollPosition;\n}\n\nexport function applyScrollDetail<K extends string | number, D, C>(\n root: HTMLDivElement,\n tableId: string,\n columnsArray: TableColumn<K, D, C>[],\n sizingInfo: SizingInfo,\n scrollDetail: ScrollDetail<K, C>,\n isRtl: boolean,\n fullColumnWidths?: number[],\n viewportConfig?: ViewportConfig\n) {\n const scroller = viewportConfig?.scroller() || root;\n if (scrollDetail.cell.type === 'data') {\n const rowElement = findElementByKey(\n root,\n scrollDetail.cell.rowKey,\n `[data-oj-table-data-row='${tableId}']`\n ) as HTMLElement;\n if (rowElement != null) {\n _scrollRowIntoView(\n root,\n tableId,\n rowElement,\n scroller,\n sizingInfo.boxHeight! - sizingInfo.contentHeight!,\n scrollDetail.locationY\n );\n }\n }\n const cellElement = getElementFromCell(root, tableId, scrollDetail.cell);\n if (cellElement != null) {\n _scrollColumnIntoView(\n cellElement,\n scroller,\n columnsArray,\n sizingInfo.boxWidth! - sizingInfo.contentWidth!,\n isRtl,\n fullColumnWidths,\n scrollDetail.locationX\n );\n }\n}\n\n/**\n * Helper function to update the 'left' and 'right' values of all sticky columns to correspond\n * to the given sizing information.\n */\nexport function updateStickyColumns<K, D, C>(\n root: HTMLDivElement,\n tableId: string,\n isRtl: boolean,\n columnsArray: TableColumn<K, D, C>[],\n fullColumnWidths: number[],\n stickyEdgesState: { start?: number; end?: number },\n setStickyEdgesState: (stickyEdgesState: { start?: number; end?: number }) => void\n) {\n let stickyIndex;\n let stickyStartOffset = 0;\n let stickyEndOffset = 0;\n\n const stickyStartIndicies = getStickyColumnIndicies(columnsArray, true);\n for (let i = 0; i < stickyStartIndicies.length; i++) {\n stickyIndex = stickyStartIndicies[i];\n _applyStickyColumnOffset(root, tableId, isRtl, stickyIndex, stickyStartOffset, true);\n stickyStartOffset += fullColumnWidths[stickyIndex];\n }\n const stickyEndIndicies = getStickyColumnIndicies(columnsArray, false);\n for (let i = stickyEndIndicies.length - 1; i > -1; i--) {\n stickyIndex = stickyEndIndicies[i];\n _applyStickyColumnOffset(root, tableId, isRtl, stickyIndex, stickyEndOffset, false);\n stickyEndOffset += fullColumnWidths[stickyIndex];\n }\n\n updateStickyEdges(root, columnsArray, fullColumnWidths, stickyEdgesState, setStickyEdgesState);\n}\n\n/**\n * Helper function to get the column indicies corresponding to the given edge.\n */\nexport const getStickyColumnIndicies = <K, D, C>(\n columnsArray: TableColumn<K, D, C>[],\n isStart: boolean\n) => {\n const stickyColumns = [];\n const edge = isStart ? 'start' : 'end';\n for (let i = 0; i < columnsArray.length; i++) {\n if (columnsArray[i].value.stickyEdge === edge) {\n stickyColumns.push(i);\n }\n }\n return stickyColumns;\n};\n\n/**\n * Helper function to update the 'left' and 'right' values of a specific column.\n */\nconst _applyStickyColumnOffset = (\n root: HTMLDivElement,\n tableId: string,\n isRtl: boolean,\n columnIndex: number,\n stickyOffset: number,\n isStart: boolean\n) => {\n const styleProperty = (isStart && !isRtl) || (!isStart && isRtl) ? 'left' : 'right';\n const styleValue = `${stickyOffset}px`;\n\n const headerElements = root.querySelectorAll(`[data-oj-table-header-cell='${tableId}']`);\n const headerElement = headerElements[columnIndex] as HTMLElement;\n headerElement.style[styleProperty] = styleValue;\n\n const rowElements = root.querySelectorAll(`[data-oj-table-data-row='${tableId}']`);\n for (let j = 0; j < rowElements.length; j++) {\n const rowElement = rowElements[j] as HTMLElement;\n const cellElements = rowElement.querySelectorAll(`[data-oj-table-data-cell='${tableId}']`);\n const cellElement = cellElements[columnIndex] as HTMLElement;\n cellElement.style[styleProperty] = styleValue;\n }\n\n const footerElements = root.querySelectorAll(`[data-oj-table-footer-cell='${tableId}']`);\n if (footerElements.length > 0) {\n const footerElement = footerElements[columnIndex] as HTMLElement;\n footerElement.style[styleProperty] = styleValue;\n }\n};\n\n/**\n * Helper function to update the sticky edges based on the given scrollLeft value.\n */\nexport function updateStickyEdges<K, D, C>(\n root: HTMLDivElement,\n columnsArray: TableColumn<K, D, C>[],\n fullColumnWidths: number[],\n stickyEdgesState: { start?: number; end?: number },\n setStickyEdgesState: (stickyEdgesState: { start?: number; end?: number }) => void,\n scrollLeft?: number\n) {\n if (columnsArray.length > 0) {\n let i;\n let currentScrollIndex;\n const newScrollPosition = getHorizontalScrollPosition(\n root,\n columnsArray,\n fullColumnWidths,\n scrollLeft\n );\n for (i = 0; i < columnsArray.length; i++) {\n if (columnsArray[i].key === newScrollPosition.columnKey) {\n currentScrollIndex = i;\n break;\n }\n }\n\n let startIndex;\n // browser zoom levels cause rounding issues where the start scroll\n // position may never be reached, but it should always be within 1\n if (newScrollPosition.x! >= 1) {\n const stickyStartIndicies = getStickyColumnIndicies(columnsArray, true);\n for (i = 0; i < stickyStartIndicies.length; i++) {\n const currentIndex = stickyStartIndicies[i];\n if (currentIndex < currentScrollIndex!) {\n startIndex = currentIndex;\n } else {\n break;\n }\n }\n }\n\n let endIndex;\n let currentWidth = 0;\n const maxScrollPos = root.scrollWidth - root.clientWidth;\n const endOverflow = maxScrollPos - newScrollPosition.x!;\n // browser zoom levels cause rounding issues where the max scroll\n // position may never be reached, but it should always be within 1\n if (endOverflow >= 1) {\n const stickyEndIndicies = getStickyColumnIndicies(columnsArray, false);\n for (let i = columnsArray.length - 1; i > -1; i--) {\n if (stickyEndIndicies.indexOf(i) !== -1) {\n endIndex = i;\n } else {\n currentWidth += fullColumnWidths[i];\n if (currentWidth > endOverflow) {\n break;\n }\n }\n }\n }\n if (stickyEdgesState.start != startIndex || stickyEdgesState.end != endIndex) {\n setStickyEdgesState({ start: startIndex, end: endIndex });\n }\n }\n}\n\n/**\n * Helper function to get the viewport config. TODO: this needs help for table still\n */\nexport const getViewportConfig = (\n outerTableRef: RefObject<HTMLElement>,\n config?: ViewportConfig\n) => {\n return (\n config ?? {\n scroller: () => {\n return outerTableRef.current;\n }\n }\n );\n};\n","/**\n * @license\n * Copyright (c) %FIRST_YEAR% %CURRENT_YEAR%, Oracle and/or its affiliates.\n * The Universal Permissive License (UPL), Version 1.0\n * as shown at https://oss.oracle.com/licenses/upl/\n * @ignore\n */\nimport { MutableRef } from 'preact/hooks';\nimport { SizingInfo, TableColumn } from '../Table';\nimport {\n getFirstFocusableRowKey,\n getLastFocusableRowKey,\n getRowKey,\n hasFooterCells,\n hasNoDataCell,\n getScrollerBottomOffset,\n getRowKeyForRowIndex,\n getRowIndexForRowKey\n} from './TableDomUtils';\nimport { applyScrollDetail, getVerticalScrollPosition } from './TableScrollUtils';\nimport { Cell, CurrentCellDetail } from '../../UNSAFE_TableView';\nimport { findElementByKey } from '../../utils/PRIVATE_collectionUtils';\n\n/**\n * Helper function to compare two given cell descriptors.\n */\nexport function cellComparator<K, C>(cell1?: Cell<K, C> | null, cell2?: Cell<K, C> | null) {\n if (cell1 == null) {\n return cell2 == null;\n }\n if (cell2 == null) {\n return false;\n }\n return (\n cell1?.rowKey === cell2?.rowKey &&\n cell1?.columnKey === cell2?.columnKey &&\n cell1?.type === cell2?.type\n );\n}\n\n/**\n * Helper function to handle an 'Up' or 'Down' arrow key press.\n * Up - Moves to the same cell in the previous row (including headers and footers). No op if already on the first row.\n * Down - Moves to the same cell in the next row (including headers and footers). No op if already on the last row.\n */\nexport function handleAdjacentRowGesture<K extends string | number, D, C>(\n root: HTMLDivElement,\n tableId: string,\n columnsArray: TableColumn<K, D, C>[],\n initialCell: Cell<K, C>,\n onCurrentCellChanged: (detail: CurrentCellDetail<K, C>) => void,\n isPrevious: boolean\n) {\n let newCurrentCell;\n const cellType = initialCell.type;\n if (cellType !== 'noData') {\n const columnKey = initialCell.columnKey;\n if (cellType === 'data') {\n const currentRowKey = initialCell.rowKey;\n const currentRowElement = findElementByKey(\n root,\n currentRowKey as string | number,\n `[data-oj-table-data-row='${tableId}']`\n );\n if (currentRowElement != null) {\n const adjacentRowElement = isPrevious\n ? (currentRowElement.previousElementSibling as HTMLElement)\n : (currentRowElement.nextElementSibling as HTMLElement);\n if (adjacentRowElement != null) {\n const rowKey = getRowKey(adjacentRowElement) as K;\n if (rowKey != null) {\n newCurrentCell = { rowKey: rowKey, columnKey: columnKey, type: 'data' } as Cell<K, C>;\n onCurrentCellChanged({ value: newCurrentCell });\n }\n } else if (isPrevious) {\n newCurrentCell = { columnKey: initialCell.columnKey, type: 'header' } as Cell<K, C>;\n onCurrentCellChanged({ value: newCurrentCell });\n } else if (hasFooterCells(root, tableId)) {\n newCurrentCell = { columnKey: initialCell.columnKey, type: 'footer' } as Cell<K, C>;\n onCurrentCellChanged({ value: newCurrentCell });\n }\n }\n } else if (cellType === 'header' && !isPrevious) {\n const rowKey = getFirstFocusableRowKey(root, tableId) as K;\n if (rowKey != null) {\n newCurrentCell = { rowKey: rowKey, columnKey: columnKey, type: 'data' } as Cell<K, C>;\n onCurrentCellChanged({ value: newCurrentCell });\n } else if (hasNoDataCell(root, tableId)) {\n newCurrentCell = { type: 'noData' } as Cell<K, C>;\n onCurrentCellChanged({ value: newCurrentCell });\n } else if (hasFooterCells(root, tableId)) {\n newCurrentCell = { columnKey: initialCell.columnKey, type: 'footer' } as Cell<K, C>;\n onCurrentCellChanged({ value: newCurrentCell });\n }\n } else if (cellType === 'footer' && isPrevious) {\n const rowKey = getLastFocusableRowKey(root, tableId) as K;\n if (rowKey != null) {\n newCurrentCell = { rowKey: rowKey, columnKey: columnKey, type: 'data' } as Cell<K, C>;\n onCurrentCellChanged({ value: newCurrentCell });\n } else if (hasNoDataCell(root, tableId)) {\n newCurrentCell = { type: 'noData' } as Cell<K, C>;\n onCurrentCellChanged({ value: newCurrentCell });\n } else {\n newCurrentCell = { columnKey: initialCell.columnKey, type: 'header' } as Cell<K, C>;\n onCurrentCellChanged({ value: newCurrentCell });\n }\n }\n } else {\n const newColumnKey = _getBoundaryColumnKey(columnsArray, true);\n if (isPrevious) {\n newCurrentCell = { columnKey: newColumnKey, type: 'header' } as Cell<K, C>;\n onCurrentCellChanged({ value: newCurrentCell });\n } else if (hasFooterCells(root, tableId)) {\n newCurrentCell = { columnKey: newColumnKey, type: 'footer' } as Cell<K, C>;\n onCurrentCellChanged({ value: newCurrentCell });\n }\n }\n}\n\n/**\n * Helper function to handle a 'PageUp' or 'PageDown' arrow key press.\n * PageUp - Moves to the same cell in the first visible row in the current viewport,\n * and scrolls the Table so it becomes the last visible row in the viewport when able.\n * PageDown - Moves to the same cell in the last visible row in the current viewport,\n * and scrolls the Table so it becomes the first visible row in the viewport when able.\n */\nexport function handlePageRowGesture<K extends string | number, D, C>(\n root: HTMLDivElement,\n tableId: string,\n columnsArray: TableColumn<K, D, C>[],\n sizingInfoRef: MutableRef<SizingInfo>,\n initialCell: Cell<K, C>,\n onCurrentCellChanged: (detail: CurrentCellDetail<K, C>) => void,\n isPrevious: boolean,\n isRtl: boolean,\n fullColumnWidths?: number[]\n) {\n const rowElements = root.querySelectorAll(`[data-oj-table-data-row='${tableId}']`);\n if (rowElements.length > 0) {\n const verticalScrollPosition = getVerticalScrollPosition(root, tableId);\n const verticalRowIndex = getRowIndexForRowKey(root, tableId, verticalScrollPosition.rowKey!);\n let targetRowIndex;\n if (isPrevious) {\n if (verticalScrollPosition.offsetY === 0) {\n targetRowIndex = Math.max(verticalRowIndex! - 1, 0);\n } else {\n targetRowIndex = verticalRowIndex!;\n }\n } else {\n const scrollerRect = root.getBoundingClientRect();\n const scrollbarHeight =\n sizingInfoRef.current.boxHeight! - sizingInfoRef.current.contentHeight!;\n const scrollerBottom =\n scrollerRect.bottom + getScrollerBottomOffset(root, tableId) + scrollbarHeight;\n targetRowIndex = verticalRowIndex!;\n while (rowElements.length > targetRowIndex + 1) {\n targetRowIndex += 1;\n const elementBottom = rowElements[targetRowIndex].getBoundingClientRect().bottom;\n if (elementBottom > scrollerBottom) {\n break;\n }\n }\n }\n const newRowKey = getRowKeyForRowIndex(root, tableId, targetRowIndex) as K;\n if (newRowKey != null) {\n const newCurrentCell = {\n rowKey: newRowKey,\n columnKey: initialCell.columnKey,\n type: 'data'\n } as Cell<K, C>;\n if (newRowKey !== initialCell.rowKey) {\n onCurrentCellChanged({ value: newCurrentCell });\n }\n applyScrollDetail(\n root,\n tableId,\n columnsArray,\n sizingInfoRef.current,\n { cell: newCurrentCell, locationX: 'inView', locationY: isPrevious ? 'bottom' : 'top' },\n isRtl,\n fullColumnWidths\n );\n }\n }\n}\n\n/**\n * Helper function to get the column key next to the given column key in the specified direction. Returns\n * null if there is no adjacent column in the direction specified.\n */\nfunction _getAdjacentColumnKey<K, D, C>(\n initialKey: C,\n columnsArray: TableColumn<K, D, C>[],\n isPrevious: boolean\n) {\n let currentIndex = -1;\n const columnsCount = columnsArray.length;\n for (let i = 0; i < columnsCount; i++) {\n if (columnsArray[i].key === initialKey) {\n currentIndex = i;\n break;\n }\n }\n if (isPrevious && currentIndex !== 0) {\n return columnsArray[currentIndex - 1].key;\n } else if (!isPrevious && currentIndex !== columnsCount - 1) {\n return columnsArray[currentIndex + 1].key;\n }\n return null;\n}\n\n/**\n * Helper function to handle a 'Previous' or 'Next' arrow key press.\n * Previous - Moves to the previous cell in the current row. No op if already on the first cell in that row.\n * Next - Moves to the next cell in the current row. No op if already on the last cell in that row.\n */\nexport function handleAdjacentColumnGesture<K extends string | number, D, C>(\n columnsArray: TableColumn<K, D, C>[],\n initialCell: Cell<K, C>,\n onCurrentCellChanged: (detail: CurrentCellDetail<K, C>) => void,\n isPrevious: boolean\n) {\n let newCurrentCell;\n const cellType = initialCell.type;\n if (cellType !== 'noData') {\n const initialKey = initialCell.columnKey;\n const newKey = _getAdjacentColumnKey(initialKey, columnsArray, isPrevious);\n if (newKey != null) {\n if (cellType === 'data') {\n newCurrentCell = { rowKey: initialCell.rowKey, columnKey: newKey, type: cellType };\n onCurrentCellChanged({ value: newCurrentCell });\n } else {\n newCurrentCell = { columnKey: newKey, type: cellType };\n onCurrentCellChanged({ value: newCurrentCell });\n }\n }\n }\n}\n\n/**\n * Helper function to get the first or last column key.\n */\nfunction _getBoundaryColumnKey<K, D, C>(columnsArray: TableColumn<K, D, C>[], isFirst: boolean) {\n if (isFirst) {\n return columnsArray[0].key;\n }\n return columnsArray[columnsArray.length - 1].key;\n}\n\n/**\n * Helper function to handle a 'Home' or 'End' key press.\n * Home - Jumps to the first cell in the current row. No op if already on the first cell in that row.\n * Ctrl/Cmd + Home - Jumps to the first cell in the first data row. If no data rows are present,\n * jumps to the first cell in the current region (header or footer). No op if already on that cell.\n * End - Jumps to the last cell in the current row. No op if already on the last cell in that row.\n * Ctrl/Cmd + End - Jumps to the last cell in the last data row. If no data rows are present,\n * jumps to the last cell in the current region (header or footer). No op if already on that cell.\n */\nexport function handleJumpColumnGesture<K extends string | number, D, C>(\n root: HTMLDivElement,\n tableId: string,\n columnsArray: TableColumn<K, D, C>[],\n initialCell: Cell<K, C>,\n onCurrentCellChanged: (detail: CurrentCellDetail<K, C>) => void,\n isPrevious: boolean,\n includeRows: boolean\n) {\n let newCurrentCell;\n const cellType = initialCell.type;\n if (cellType !== 'noData') {\n const initialKey = initialCell.columnKey;\n const newKey = _getBoundaryColumnKey(columnsArray, isPrevious);\n if (includeRows) {\n if (hasNoDataCell(root, tableId)) {\n newCurrentCell = {\n type: 'noData'\n } as Cell<K, C>;\n if (!cellComparator(newCurrentCell, initialCell)) {\n onCurrentCellChanged({ value: newCurrentCell });\n }\n } else {\n const newRowKey = isPrevious\n ? (getFirstFocusableRowKey(root, tableId) as K)\n : (getLastFocusableRowKey(root, tableId) as K);\n if (newRowKey != null) {\n newCurrentCell = {\n rowKey: newRowKey,\n columnKey: newKey,\n type: 'data'\n } as Cell<K, C>;\n if (!cellComparator(newCurrentCell, initialCell)) {\n onCurrentCellChanged({ value: newCurrentCell });\n }\n }\n }\n } else if (newKey !== initialKey) {\n if (cellType === 'data') {\n newCurrentCell = { rowKey: initialCell.rowKey, columnKey: newKey, type: cellType };\n onCurrentCellChanged({ value: newCurrentCell });\n } else {\n newCurrentCell = { columnKey: newKey, type: cellType };\n onCurrentCellChanged({ value: newCurrentCell });\n }\n }\n }\n}\n","/**\n * @license\n * Copyright (c) %FIRST_YEAR% %CURRENT_YEAR%, Oracle and/or its affiliates.\n * The Universal Permissive License (UPL), Version 1.0\n * as shown at https://oss.oracle.com/licenses/upl/\n * @ignore\n */\nimport { useCallback, useEffect, useMemo, useRef, useState, MutableRef, Ref } from 'preact/hooks';\nimport {\n getElementContainsFunc,\n handleEnterActionableMode,\n handleWrapActionableFocus\n} from '../../utils/PRIVATE_collectionUtils';\nimport {\n FocusableElement,\n allTabbableElements,\n getActiveElement,\n getBodyElement,\n isTabbableElement\n} from '../../utils/PRIVATE_tabbableUtils';\nimport { SizingInfo, TableColumn } from '../Table';\nimport {\n getCellType,\n getElementFromCell,\n getFirstFocusableCell,\n logicalCellExtractor\n} from '../utils/TableDomUtils';\nimport { cellComparator } from '../utils/TableNavigationUtils';\nimport { applyScrollDetail } from '../utils/TableScrollUtils';\nimport { Cell, CurrentCellDetail } from '../../UNSAFE_TableView';\n\ntype UseFocusHandlingProps<K, D, C extends string> = {\n outerTableRef: Ref<HTMLDivElement>;\n tableId: string;\n isRtl: boolean;\n columnsArray: TableColumn<K, D, C>[];\n sizingInfoRef: MutableRef<SizingInfo>;\n selectionExtensionElementRef: MutableRef<HTMLElement | undefined>;\n cellSupportsTabbable: (cell: Cell<K, C>) => boolean;\n fullColumnWidths?: number[];\n currentCellOverride?: Cell<K, C>;\n onPersistCurrentCell?: (detail: CurrentCellDetail<K, C>) => void;\n};\n\n// constant timeout values for delays following a input gesture until enabling focus rings\nconst MOUSE_FOCUS_SHIFT_TIMEOUT = 0;\nconst TOUCH_FOCUS_SHIFT_TIMEOUT = 200;\n\n// constant event.key values that trigger focus ring and 'scroll to current' logic\nconst NAVIGATION_KEYS = [\n ' ',\n 'F2',\n 'Enter',\n 'Esc', // Firefox 36 and earlier uses 'Esc' instead of 'Escape'\n 'Escape',\n 'ArrowLeft',\n 'ArrowUp',\n 'ArrowRight',\n 'ArrowDown',\n 'Home',\n 'End',\n 'PageUp',\n 'PageDown'\n];\n\n/**\n * Hook that manages focus interactions on the Preact Table\n */\nexport function useFocusHandling<K extends string | number, D, C extends string>({\n outerTableRef,\n tableId,\n isRtl,\n columnsArray,\n sizingInfoRef,\n selectionExtensionElementRef,\n cellSupportsTabbable,\n fullColumnWidths,\n currentCellOverride,\n onPersistCurrentCell\n}: UseFocusHandlingProps<K, D, C>) {\n // tracks whether the most recent 'blur' was caused by focus being lost by the browser window (or iframe)\n const blurFromWindowRef = useRef<boolean>(false);\n\n // tracks focus loss during render cycle for potential focus recapture cases\n const isRenderCycle = useRef<boolean>(true);\n isRenderCycle.current = true;\n const blurredRenderCycleElementRef = useRef<FocusableElement | null>(null);\n\n // track current 'focus info' state\n const hasFocusRef = useRef<boolean>(false);\n const [isTabbableMode, setIsTabbableMode] = useState<boolean>(false);\n const [isShowFocusRing, setIsShowFocusRing] = useState<boolean>(false);\n\n // track pointer down information\n const recentPointerRef = useRef<boolean>(false);\n const pointerTimerRef = useRef<ReturnType<typeof setTimeout> | null>(null);\n const isShowFocusRingOverrideRef = useRef<boolean | null>(null);\n\n // tracks the current cell information\n const [currentCell, setCurrentCell] = useState<Cell<K, C> | undefined>(currentCellOverride);\n const currentCellRef = useRef<Cell<K, C> | undefined>(currentCellOverride);\n\n // tracks whether the table is handling a tab gesture that should allow focus to leave the table\n const [isTabbing, setIsTabbing] = useState<boolean>(false);\n\n // intercept onPersistCurrentCell calls to ensure internal state is updated appropriately\n const onCurrentCellChanged = useMemo(() => {\n return (detail: CurrentCellDetail<K, C>) => {\n setCurrentCell(detail.value);\n currentCellRef.current = detail.value;\n selectionExtensionElementRef.current = undefined;\n if (onPersistCurrentCell != null) {\n onPersistCurrentCell(detail);\n }\n };\n }, [onPersistCurrentCell, selectionExtensionElementRef]);\n\n // ensure any new currentCellOverride settings are applied only on that render\n const currentCellOverrideRef = useRef<Cell<K, C> | undefined>(currentCellOverride);\n if (currentCellOverrideRef.current !== currentCellOverride) {\n currentCellOverrideRef.current = currentCellOverride;\n if (!cellComparator(currentCell, currentCellOverride)) {\n onCurrentCellChanged({ value: currentCellOverride });\n }\n }\n\n // Helper function to set the Table's focus tracking state to reflect that it is inactive.\n const _setAsInactive = useCallback(() => {\n hasFocusRef.current = false;\n setIsTabbableMode(false);\n setIsShowFocusRing(false);\n }, []);\n\n // Helper function to set the Table's focus tracking state to reflect that on of its cell has focus.\n const _enableNavigationMode = useCallback(\n (cell: Cell<K, C>, skipScrollCellIntoView?: boolean) => {\n const rootElement = outerTableRef.current;\n if (rootElement != null) {\n setIsTabbableMode(false);\n setIsShowFocusRing(\n isShowFocusRingOverrideRef.current !== null\n ? isShowFocusRingOverrideRef.current\n : !recentPointerRef.current\n );\n if (!recentPointerRef.current && !skipScrollCellIntoView) {\n applyScrollDetail(\n rootElement,\n tableId,\n columnsArray,\n sizingInfoRef.current,\n { cell: cell, locationX: 'inView', locationY: 'inView' },\n isRtl,\n fullColumnWidths\n );\n }\n if (!cellComparator(cell, currentCell)) {\n onCurrentCellChanged({ value: cell });\n }\n }\n },\n [\n outerTableRef,\n tableId,\n columnsArray,\n sizingInfoRef,\n isRtl,\n currentCell,\n onCurrentCellChanged,\n fullColumnWidths\n ]\n );\n\n // Helper function to set the Table's focus tracking state to reflect that it is tabbable.\n const _enableTabbableMode = useCallback(\n (cell: Cell<K, C>, isKeyboard?: boolean, skipScrollCellIntoView?: boolean) => {\n const rootElement = outerTableRef.current;\n if (rootElement != null) {\n setIsTabbableMode(true);\n if (!isKeyboard) {\n setIsShowFocusRing(false);\n if (!cellComparator(cell, currentCell)) {\n onCurrentCellChanged({ value: cell });\n }\n if (!recentPointerRef.current && !skipScrollCellIntoView) {\n applyScrollDetail(\n rootElement,\n tableId,\n columnsArray,\n sizingInfoRef.current,\n { cell: cell, locationX: 'inView', locationY: 'inView' },\n isRtl,\n fullColumnWidths\n );\n }\n }\n }\n },\n [\n outerTableRef,\n tableId,\n columnsArray,\n sizingInfoRef,\n isRtl,\n currentCell,\n onCurrentCellChanged,\n fullColumnWidths\n ]\n );\n\n // Helper function to set the Table's focus tracking state to reflect that a user has\n // exited tabbable mode via the keyboard (esc or 'F2')\n const _disableTabbableMode = useCallback(\n (cell: Cell<K, C>) => {\n const rootElement = outerTableRef.current;\n if (rootElement != null) {\n setIsTabbableMode(false);\n const currentCellElement = getElementFromCell(rootElement, tableId, cell);\n if (currentCellElement != null) {\n currentCellElement.focus({ preventScroll: true });\n } else {\n rootElement.focus({ preventScroll: true });\n }\n }\n },\n [outerTableRef, tableId]\n );\n\n // PointerDown handler for the outer Table. Focus transfers that occur following a pointerdown\n // on desktop devices should not result in a focus ring being shown on the focused element\n const _pointerDownHandler = useCallback(\n (event: PointerEvent) => {\n if (event.pointerType !== 'touch') {\n if (pointerTimerRef.current != null) {\n clearTimeout(pointerTimerRef.current);\n }\n recentPointerRef.current = true;\n pointerTimerRef.current = setTimeout(() => {\n recentPointerRef.current = false;\n if (isShowFocusRing) {\n setIsShowFocusRing(false);\n }\n }, MOUSE_FOCUS_SHIFT_TIMEOUT);\n }\n },\n [isShowFocusRing]\n );\n\n // TouchEnd handler for the outer Table. Focus transfers that occur following a touchend\n // on touch devices should not result in a focus ring being shown on the focused element\n const _touchEndHandler = useCallback(() => {\n if (pointerTimerRef.current != null) {\n clearTimeout(pointerTimerRef.current);\n }\n recentPointerRef.current = true;\n pointerTimerRef.current = setTimeout(() => {\n recentPointerRef.current = false;\n if (isShowFocusRing) {\n setIsShowFocusRing(false);\n }\n }, TOUCH_FOCUS_SHIFT_TIMEOUT);\n }, [isShowFocusRing]);\n\n // Focus handler for the outer Table. On focus, a focusable area needs to be 'current'.\n // If a 'current' area already exists, nothing further is needed. Otherwise, the first\n // focusable element should be made 'current'.\n const _onFocusHandler = useCallback(\n (event: FocusEvent) => {\n hasFocusRef.current = true;\n const rootElement = outerTableRef.current;\n if (rootElement != null) {\n // don't scroll current into view if previous blur was due to window focus loss\n const skipScrollCellIntoView = blurFromWindowRef.current;\n blurFromWindowRef.current = false;\n\n const targetElement = event.target as HTMLElement;\n if (targetElement === rootElement) {\n // handle overall root element receiving focus\n const cell =\n currentCell != null\n ? currentCell\n : (getFirstFocusableCell(rootElement, tableId) as Cell<K, C>);\n if (cell != null) {\n _enableNavigationMode(cell, skipScrollCellIntoView);\n }\n } else {\n const cell = logicalCellExtractor(\n targetElement,\n tableId,\n `[data-oj-table-focusable='${tableId}']`\n ) as Cell<K, C>;\n if (cell != null) {\n if (getCellType(targetElement) != null) {\n // handle individual focusable regions receiving focus\n _enableNavigationMode(cell, skipScrollCellIntoView);\n } else {\n _enableTabbableMode(cell, false, skipScrollCellIntoView);\n }\n }\n }\n }\n if (pointerTimerRef.current != null) {\n clearTimeout(pointerTimerRef.current);\n pointerTimerRef.current = null;\n }\n recentPointerRef.current = false;\n isShowFocusRingOverrideRef.current = null;\n },\n [outerTableRef, tableId, currentCell, _enableTabbableMode, _enableNavigationMode]\n );\n\n // Blur handler for the outer Table. When a blur is caused by the browser window itself\n // losing focus (changing tabs or leaving an iframe for example), an eventual re-focus due\n // to the window re-gaining focus needs to be handled differently (no auto-scroll mostly).\n const _onBlurHandler = useCallback(\n (event: FocusEvent) => {\n const rootElement = outerTableRef.current;\n if (rootElement != null) {\n if (event.target === document.activeElement) {\n // save focus ring state so it's set once focus comes back\n isShowFocusRingOverrideRef.current = isShowFocusRing;\n }\n const relatedTarget = event.relatedTarget as Element;\n const isUnknownRelatedTarget = relatedTarget == null;\n blurFromWindowRef.current = isUnknownRelatedTarget;\n if (isUnknownRelatedTarget || !getElementContainsFunc(rootElement, true)(relatedTarget)) {\n _setAsInactive();\n if (isRenderCycle.current) {\n // store element that loses focus during a render cycle for recapturing focus logic\n blurredRenderCycleElementRef.current = event.target as FocusableElement;\n }\n }\n setIsTabbing(false);\n }\n },\n [outerTableRef, isShowFocusRing, _setAsInactive]\n );\n\n // KeyDown handler for the outer Table. This specific handler tracks 'focus' transfer keys\n // Esc, F2, Enter, and Tab. It also ensures the currentCell is scrolled into view on any key\n const _onKeyDownHandler = useCallback(\n (event: KeyboardEvent) => {\n const rootElement = outerTableRef.current;\n if (rootElement != null && currentCell != null) {\n if (cellSupportsTabbable(currentCell)) {\n if (event.key === 'F2') {\n if (isTabbableMode) {\n _disableTabbableMode(currentCell);\n } else {\n _enableTabbableMode(currentCell, true);\n }\n } else if (event.key === 'Esc' || event.key === 'Escape') {\n // Firefox 36 and earlier uses 'Esc' instead of 'Escape'\n _disableTabbableMode(currentCell);\n } else if (event.key === 'Enter' && !isTabbableMode) {\n _enableTabbableMode(currentCell, true);\n }\n }\n if (NAVIGATION_KEYS.indexOf(event.key) > -1 && !isTabbableMode) {\n setIsShowFocusRing(true);\n applyScrollDetail(\n rootElement,\n tableId,\n columnsArray,\n sizingInfoRef.current,\n { cell: currentCell, locationX: 'inView', locationY: 'inView' },\n isRtl,\n fullColumnWidths\n );\n }\n }\n if (event.key === 'Tab' && !isTabbableMode) {\n setIsTabbing(true);\n }\n },\n [\n outerTableRef,\n tableId,\n columnsArray,\n sizingInfoRef,\n isRtl,\n isTabbableMode,\n currentCell,\n cellSupportsTabbable,\n fullColumnWidths,\n _enableTabbableMode,\n _disableTabbableMode\n ]\n );\n\n // Callback for the outer Table's FocusTracker usage.\n const onStartFocusTracking = useCallback(\n (detail: {\n activeElement: FocusableElement;\n hasFocusWithin: boolean;\n tabbableElements: FocusableElement[];\n }) => {\n const rootElement = outerTableRef.current;\n if (rootElement != null && currentCell != null) {\n handleEnterActionableMode(\n detail.hasFocusWithin && getCellType(detail.activeElement) == null,\n allTabbableElements(\n getElementFromCell(rootElement, tableId, currentCell) as FocusableElement\n ),\n (value?: Cell<K, D>) => {\n setIsTabbableMode(value != undefined);\n }\n );\n }\n },\n [outerTableRef, currentCell, tableId]\n );\n\n // Callback for the outer Table's FocusTracker usage.\n const onFocusStartEdge = useCallback((detail: { tabbableElements: FocusableElement[] }) => {\n handleWrapActionableFocus(true, detail.tabbableElements, (value?: Cell<K, D>) => {\n setIsTabbableMode(value != undefined);\n });\n }, []);\n\n // Callback for the outer Table's FocusTracker usage.\n const onFocusEndEdge = useCallback((detail: { tabbableElements: FocusableElement[] }) => {\n handleWrapActionableFocus(false, detail.tabbableElements, (value?: Cell<K, D>) => {\n setIsTabbableMode(value != undefined);\n });\n }, []);\n\n // Handle ensuring focus is properly set at the completion of every render cycle\n // NO DEPENDENCY ARRAY HERE TO ENSURE THIS RUNS ON EVERY RENDER CYCLE\n useEffect(() => {\n const blurredRenderCycleElement = blurredRenderCycleElementRef.current;\n blurredRenderCycleElementRef.current = null;\n isRenderCycle.current = false;\n\n const rootElement = outerTableRef.current;\n if (rootElement != null) {\n const activeElement = getActiveElement(rootElement);\n // if we were tracking focus during the render cycle, ensure we recapture focus if needed\n if (\n blurredRenderCycleElement != null &&\n !isTabbing &&\n activeElement === getBodyElement(rootElement) &&\n (!getElementContainsFunc(rootElement, true)(blurredRenderCycleElement) ||\n !isTabbableElement(blurredRenderCycleElement, true))\n ) {\n rootElement.focus({ preventScroll: true });\n return;\n }\n if (\n hasFocusRef.current &&\n currentCell != null &&\n !isTabbing &&\n cellComparator(currentCell, currentCellRef.current)\n ) {\n // ensure real browser focus is on the correct cell element\n const currentCellElement = getElementFromCell(rootElement, tableId, currentCell);\n if (currentCellElement != null) {\n // currentCell is valid, so set focus on it if needed\n if (\n (!isTabbableMode && activeElement !== currentCellElement) ||\n (isTabbableMode && !getElementContainsFunc(currentCellElement, true)(activeElement))\n ) {\n currentCellElement.focus({ preventScroll: true });\n }\n } else {\n // currentCell is not valid, so choose a new currentCell instead\n const newCurrentCell = getFirstFocusableCell(rootElement, tableId) as Cell<K, C>;\n if (newCurrentCell != null) {\n onCurrentCellChanged({ value: newCurrentCell });\n }\n }\n }\n }\n });\n\n return {\n focusHandlingProps: {\n onPointerDown: _pointerDownHandler,\n onTouchEnd: _touchEndHandler,\n onFocus: _onFocusHandler,\n onBlur: _onBlurHandler,\n onKeyDown: _onKeyDownHandler,\n tabIndex: isTabbing ? -1 : 0\n },\n currentCell,\n onCurrentCellChanged,\n isShowFocusRing,\n isTabbableMode,\n onStartFocusTracking,\n onFocusStartEdge,\n onFocusEndEdge\n };\n}\n","/**\n * @license\n * Copyright (c) %FIRST_YEAR% %CURRENT_YEAR%, Oracle and/or its affiliates.\n * The Universal Permissive License (UPL), Version 1.0\n * as shown at https://oss.oracle.com/licenses/upl/\n * @ignore\n */\nimport { keyExtractor } from '../../utils/PRIVATE_collectionUtils';\nimport { getRowIndexForRowElement, getElementFromCell } from './TableDomUtils';\nimport { TableColumn } from '../Table';\nimport { Cell, RowActionDetail, SortCriterionDetail } from '../../UNSAFE_TableView';\n\n/**\n * Helper function to handle a row action gesture from a pointer or keyboard event\n */\nexport function handleRowActionGesture<K, D, C>(\n root: HTMLDivElement,\n tableId: string,\n data: D[],\n onRowAction: (detail: RowActionDetail<K, D>) => void,\n targetElement: HTMLElement,\n targetCell?: Cell<K, C>\n) {\n let rowKey;\n let rowElement;\n if (targetCell?.type === 'data') {\n rowKey = targetCell.rowKey;\n const targetCellElement = getElementFromCell(root, tableId, targetCell);\n if (targetCellElement != null) {\n rowElement = targetCellElement.parentElement;\n }\n } else {\n rowKey = keyExtractor(targetElement, `[data-oj-table-data-row='${tableId}']`) as K;\n if (rowKey != null) {\n rowElement = targetElement.closest(`[data-oj-table-data-row='${tableId}']`);\n }\n }\n if (rowKey != null && rowElement != null) {\n const rowIndex = getRowIndexForRowElement(root, tableId, rowElement as HTMLElement);\n if (rowIndex != null) {\n const rowContext = {\n key: rowKey,\n data: data[rowIndex]\n };\n onRowAction({ context: rowContext, target: targetElement });\n return true;\n }\n }\n return false;\n}\n\n/**\n * Helper function to handle a row action gesture\n */\nexport function handleSortActionGesture<K, D, C>(\n columnsArray: TableColumn<K, D, C>[],\n columnKey: C,\n onSortCriterionChange: (detail: SortCriterionDetail<C>) => void,\n sortCriterion?: { key: C; sortDirection: 'ascending' | 'descending' }[]\n) {\n for (const column of columnsArray) {\n if (column.key === columnKey) {\n if (column.value.sortable === 'enabled') {\n let sortDirection;\n if (sortCriterion != null) {\n for (const criterion of sortCriterion) {\n if (criterion.key === column.key) {\n sortDirection = criterion.sortDirection;\n break;\n }\n }\n }\n const newDirection = sortDirection === 'ascending' ? 'descending' : 'ascending';\n onSortCriterionChange([{ key: columnKey, sortDirection: newDirection }]);\n return true;\n }\n break;\n }\n }\n return false;\n}\n","/**\n * @license\n * Copyright (c) %FIRST_YEAR% %CURRENT_YEAR%, Oracle and/or its affiliates.\n * The Universal Permissive License (UPL), Version 1.0\n * as shown at https://oss.oracle.com/licenses/upl/\n * @ignore\n */\nimport { MutableRef } from 'preact/hooks';\nimport { keyExtractor } from '../../utils/PRIVATE_collectionUtils';\nimport { Keys, containsKey, isSameKey, addKey, removeKey } from '../../utils/UNSAFE_keys';\nimport { SizingInfo, TableColumn } from '../Table';\nimport {\n logicalCellExtractor,\n getCellType,\n getRowKeyForRowIndex,\n getRowIndexForRowElement,\n getElementFromCell,\n getColumnIndexForHeaderFooterElement\n} from './TableDomUtils';\nimport { applyScrollDetail } from './TableScrollUtils';\nimport { SelectionMode } from '../../UNSAFE_Collection';\nimport { Cell, TableSelectionDetail } from '../../UNSAFE_TableView';\n\n/**\n * Helper function to handle a selection gesture (click, spacebar, etc...)\n */\nexport function handleSelectionGesture<K, D, C>(\n root: HTMLDivElement,\n tableId: string,\n columnsArray: TableColumn<K, D, C>[],\n targetElement: HTMLElement,\n isMultiSelectGesture: boolean,\n onSelectionChange: (detail: TableSelectionDetail<K, C>, isExtendableSelection: boolean) => void,\n selectionMode?: { row?: SelectionMode; column?: SelectionMode },\n selected?: { row?: Keys<K>; column?: Keys<C> }\n) {\n const emptyKeys = { all: false, keys: new Set() };\n let selectedRows = selected?.row != null ? selected.row : (emptyKeys as Keys<K>);\n let selectedColumns = selected?.column != null ? selected.column : (emptyKeys as Keys<C>);\n\n const newRowKey = keyExtractor(targetElement, `[data-oj-table-data-row='${tableId}']`) as K;\n if (newRowKey != null) {\n if (selectionMode?.row === 'single' || selectionMode?.row === 'multiple') {\n if (selectedRows == null) {\n selectedRows = { all: false, keys: new Set([newRowKey]) };\n } else if (!containsKey(selectedRows, newRowKey)) {\n if (isMultiSelectGesture && selectionMode.row === 'multiple') {\n selectedRows = addKey(selectedRows, newRowKey);\n } else {\n selectedRows = { all: false, keys: new Set([newRowKey]) };\n }\n } else if (isMultiSelectGesture) {\n selectedRows = removeKey(selectedRows, newRowKey, false);\n } else {\n selectedRows = { all: false, keys: new Set([newRowKey]) };\n }\n selectedColumns = emptyKeys as Keys<C>;\n }\n } else if (selectionMode?.column === 'single' || selectionMode?.column === 'multiple') {\n const cellElement = targetElement.closest(\n `[data-oj-table-focusable='${tableId}']`\n ) as HTMLElement;\n if (cellElement != null) {\n const cellType = getCellType(cellElement);\n if (cellType === 'header' || cellType === 'footer') {\n const index = getColumnIndexForHeaderFooterElement(\n root,\n tableId,\n cellElement,\n cellType === 'header'\n );\n if (index != null) {\n const column = columnsArray[index];\n if (column.value.selectable !== 'disabled') {\n if (selectedColumns == null) {\n selectedColumns = { all: false, keys: new Set([column.key]) };\n } else if (!containsKey(selectedColumns, column.key)) {\n if (isMultiSelectGesture && selectionMode.column === 'multiple') {\n selectedColumns = addKey(selectedColumns, column.key);\n } else {\n selectedColumns = { all: false, keys: new Set([column.key]) };\n }\n } else if (isMultiSelectGesture) {\n selectedColumns = removeKey(selectedColumns, column.key, false);\n } else {\n selectedColumns = { all: false, keys: new Set([column.key]) };\n }\n selectedRows = emptyKeys as Keys<K>;\n }\n }\n }\n }\n }\n\n if (!isSameKey(selectedRows, selected?.row) || !isSameKey(selectedColumns, selected?.column)) {\n onSelectionChange(\n { value: { row: selectedRows, column: selectedColumns }, target: targetElement },\n false\n );\n }\n}\n\n/**\n * Helper function to calculate and apply a new selection state corresponding to the range provided\n */\nfunction _applyRangeSelection<K, D, C>(\n root: HTMLDivElement,\n tableId: string,\n columnsArray: TableColumn<K, D, C>[],\n targetElement: HTMLElement,\n startIndex: number,\n endIndex: number,\n isRowGesture: boolean,\n onSelectionChange: (detail: TableSelectionDetail<K, C>, isExtendableSelection: boolean) => void,\n selectionMode?: { row?: SelectionMode; column?: SelectionMode },\n selected?: { row?: Keys<K>; column?: Keys<C> }\n) {\n const emptyKeys = { all: false, keys: new Set() };\n let selectedRows = selected?.row != null ? selected.row : (emptyKeys as Keys<K>);\n let selectedColumns = selected?.column != null ? selected.column : (emptyKeys as Keys<C>);\n\n if (isRowGesture) {\n selectedColumns = emptyKeys as Keys<C>;\n if (selectionMode?.row === 'multiple') {\n selectedRows = emptyKeys as Keys<K>;\n // selected rows should be added in the order that they are selected\n if (startIndex <= endIndex) {\n for (let i = startIndex; i <= endIndex; i++) {\n const key = getRowKeyForRowIndex(root, tableId, i) as K;\n selectedRows = addKey(selectedRows, key) as Keys<K>;\n }\n } else {\n for (let i = startIndex; i >= endIndex; i--) {\n const key = getRowKeyForRowIndex(root, tableId, i) as K;\n selectedRows = addKey(selectedRows, key) as Keys<K>;\n }\n }\n }\n } else {\n selectedRows = emptyKeys as Keys<K>;\n if (selectionMode?.column === 'multiple') {\n selectedColumns = emptyKeys as Keys<C>;\n // selected columns should be added in the order that they are selected\n if (startIndex <= endIndex) {\n for (let i = startIndex; i <= endIndex; i++) {\n const column = columnsArray[i];\n if (column.value.selectable !== 'disabled') {\n selectedColumns = addKey(selectedColumns, column.key);\n }\n }\n } else {\n for (let i = startIndex; i >= endIndex; i--) {\n const column = columnsArray[i];\n if (column.value.selectable !== 'disabled') {\n selectedColumns = addKey(selectedColumns, column.key);\n }\n }\n }\n }\n }\n\n if (!isSameKey(selectedRows, selected?.row) || !isSameKey(selectedColumns, selected?.column)) {\n onSelectionChange(\n { value: { row: selectedRows, column: selectedColumns }, target: targetElement },\n true\n );\n }\n}\n\n/**\n * Determines whether a potential range selection gesture is valid based on the given target\n */\nexport function isRangeSelectionGesture<K, C>(\n root: HTMLDivElement,\n tableId: string,\n targetElement: HTMLElement,\n currentCell: Cell<K, C>,\n selectionMode?: { row?: SelectionMode; column?: SelectionMode }\n) {\n const targetCell = logicalCellExtractor(\n targetElement,\n tableId,\n `[data-oj-table-focusable='${tableId}']`\n ) as Cell<K, C>;\n if (\n ((selectionMode?.row === 'multiple' && currentCell.type === 'data') ||\n (selectionMode?.column === 'multiple' &&\n (currentCell.type === 'header' || currentCell.type === 'footer'))) &&\n targetCell?.type === currentCell.type\n ) {\n const currentCellElement = getElementFromCell(root, tableId, currentCell);\n const targetCellElement = getElementFromCell(root, tableId, targetCell);\n if (currentCellElement != null && targetCellElement != null) {\n const isRow = targetCell?.type === 'data';\n if (isRow) {\n return (\n getRowIndexForRowElement(\n root,\n tableId,\n currentCellElement.parentElement as HTMLElement\n ) != null &&\n getRowIndexForRowElement(root, tableId, targetCellElement.parentElement as HTMLElement) !=\n null\n );\n } else if (targetCell?.type === 'header' || targetCell?.type === 'footer') {\n const isHeader = targetCell?.type === 'header';\n return (\n getColumnIndexForHeaderFooterElement(root, tableId, currentCellElement, isHeader) !=\n null &&\n getColumnIndexForHeaderFooterElement(root, tableId, targetCellElement, isHeader) != null\n );\n }\n }\n }\n return false;\n}\n\n/**\n * Helper function to handle a range selection gesture (shift+click)\n */\nexport function handleRangeSelectionGesture<K, D, C>(\n root: HTMLDivElement,\n tableId: string,\n columnsArray: TableColumn<K, D, C>[],\n targetElement: HTMLElement,\n currentCell: Cell<K, C>,\n selectionExtensionElementRef: MutableRef<HTMLElement | undefined>,\n onSelectionChange: (detail: TableSelectionDetail<K, C>, isExtendableSelection: boolean) => void,\n selectionMode?: { row?: SelectionMode; column?: SelectionMode },\n selected?: { row?: Keys<K>; column?: Keys<C> }\n) {\n const targetCell = logicalCellExtractor(\n targetElement,\n tableId,\n `[data-oj-table-focusable='${tableId}']`\n ) as Cell<K, C>;\n const currentCellElement = getElementFromCell(root, tableId, currentCell);\n const targetCellElement = getElementFromCell(root, tableId, targetCell);\n if (currentCellElement != null && targetCellElement != null) {\n if (\n ((selectionMode?.row === 'multiple' && targetCell?.type === 'data') ||\n (selectionMode?.column === 'multiple' &&\n (targetCell?.type === 'header' || targetCell?.type === 'footer'))) &&\n targetCell?.type === currentCell.type\n ) {\n let startIndex;\n let endIndex;\n let endElement;\n const isRow = targetCell?.type === 'data';\n if (isRow) {\n endElement = targetCellElement.parentElement as HTMLElement;\n startIndex = getRowIndexForRowElement(\n root,\n tableId,\n currentCellElement.parentElement as HTMLElement\n );\n endIndex = getRowIndexForRowElement(root, tableId, endElement);\n } else if (targetCell?.type === 'header' || targetCell?.type === 'footer') {\n const isHeader = targetCell?.type === 'header';\n endElement = targetCellElement;\n startIndex = getColumnIndexForHeaderFooterElement(\n root,\n tableId,\n currentCellElement,\n isHeader\n );\n endIndex = getColumnIndexForHeaderFooterElement(root, tableId, targetCellElement, isHeader);\n }\n if (startIndex != null && endIndex != null) {\n selectionExtensionElementRef.current = endElement;\n _applyRangeSelection(\n root,\n tableId,\n columnsArray,\n targetElement,\n startIndex,\n endIndex,\n isRow,\n onSelectionChange,\n selectionMode,\n selected\n );\n return true;\n }\n }\n }\n return false;\n}\n\n/**\n * Helper function to handle a selection extension gesture (shift+arrow key)\n */\nexport function handleExtendSelectionGesture<K extends string | number, D, C>(\n root: HTMLDivElement,\n tableId: string,\n columnsArray: TableColumn<K, D, C>[],\n sizingInfoRef: MutableRef<SizingInfo>,\n targetElement: HTMLElement,\n isPrevious: boolean,\n currentCell: Cell<K, C>,\n selectionExtensionElementRef: MutableRef<HTMLElement | undefined>,\n onSelectionChange: (detail: TableSelectionDetail<K, C>, isExtendableSelection: boolean) => void,\n isRtl: boolean,\n fullColumnWidths?: number[],\n selectionMode?: { row?: SelectionMode; column?: SelectionMode },\n selected?: { row?: Keys<K>; column?: Keys<C> }\n) {\n const currentCellElement = getElementFromCell(root, tableId, currentCell);\n if (currentCellElement != null) {\n let startIndex;\n let startElement;\n const isRow = currentCell.type === 'data';\n const isHeader = currentCell.type === 'header';\n if (isRow) {\n startElement = currentCellElement.parentElement as HTMLElement;\n startIndex = getRowIndexForRowElement(root, tableId, startElement);\n } else {\n startElement = currentCellElement;\n startIndex = getColumnIndexForHeaderFooterElement(root, tableId, startElement, isHeader);\n }\n if (startIndex != null) {\n let endIndex;\n let extendedElement;\n const cursorElement = selectionExtensionElementRef.current;\n if (cursorElement != null) {\n extendedElement = isPrevious\n ? (cursorElement.previousElementSibling as HTMLElement)\n : (cursorElement.nextElementSibling as HTMLElement);\n if (extendedElement != null) {\n selectionExtensionElementRef.current = extendedElement;\n endIndex = isRow\n ? getRowIndexForRowElement(root, tableId, extendedElement)\n : getColumnIndexForHeaderFooterElement(root, tableId, extendedElement, isHeader);\n } else {\n endIndex = isRow\n ? getRowIndexForRowElement(root, tableId, cursorElement)\n : getColumnIndexForHeaderFooterElement(root, tableId, cursorElement, isHeader);\n }\n } else {\n extendedElement = isPrevious\n ? (startElement.previousElementSibling as HTMLElement)\n : (startElement.nextElementSibling as HTMLElement);\n if (extendedElement != null) {\n selectionExtensionElementRef.current = extendedElement;\n endIndex = isRow\n ? getRowIndexForRowElement(root, tableId, extendedElement)\n : getColumnIndexForHeaderFooterElement(root, tableId, extendedElement, isHeader);\n } else {\n endIndex = startIndex;\n }\n }\n if (endIndex != null) {\n _applyRangeSelection(\n root,\n tableId,\n columnsArray,\n targetElement,\n startIndex,\n endIndex,\n isRow,\n onSelectionChange,\n selectionMode,\n selected\n );\n }\n\n // scroll 'extensionElement' into view\n const extensionElement =\n selectionExtensionElementRef.current != null\n ? selectionExtensionElementRef.current\n : currentCellElement;\n let extensionCell;\n if (isRow) {\n const rowKey = keyExtractor(extensionElement, `[data-oj-table-data-row='${tableId}']`) as K;\n extensionCell = {\n type: currentCell.type,\n rowKey: rowKey,\n columnKey: currentCell.columnKey\n };\n } else {\n extensionCell = logicalCellExtractor(\n extensionElement,\n tableId,\n `[data-oj-table-focusable='${tableId}']`\n ) as Cell<K, C>;\n }\n applyScrollDetail(\n root,\n tableId,\n columnsArray,\n sizingInfoRef.current,\n { cell: extensionCell, locationX: 'inView', locationY: 'inView' },\n isRtl,\n fullColumnWidths\n );\n }\n }\n}\n","/**\n * @license\n * Copyright (c) %FIRST_YEAR% %CURRENT_YEAR%, Oracle and/or its affiliates.\n * The Universal Permissive License (UPL), Version 1.0\n * as shown at https://oss.oracle.com/licenses/upl/\n * @ignore\n */\nimport { useCallback, MutableRef, Ref } from 'preact/hooks';\nimport { getClientHints } from '../../utils/PRIVATE_clientHints';\nimport { Keys } from '../../utils/UNSAFE_keys';\nimport { SizingInfo, TableColumn } from '../Table';\nimport { handleRowActionGesture, handleSortActionGesture } from '../utils/TableActionUtils';\nimport { getElementFromCell } from '../utils/TableDomUtils';\nimport {\n handleAdjacentRowGesture,\n handleAdjacentColumnGesture,\n handlePageRowGesture,\n handleJumpColumnGesture\n} from '../utils/TableNavigationUtils';\nimport { handleSelectionGesture, handleExtendSelectionGesture } from '../utils/TableSelectionUtils';\nimport { SelectionMode } from '../../UNSAFE_Collection';\nimport {\n Cell,\n CurrentCellDetail,\n RowActionDetail,\n SortCriterionDetail,\n TableSelectionDetail\n} from '../../UNSAFE_TableView';\n\ntype UseKeyboardHandlingProps<K, D, C extends string> = {\n outerTableRef: Ref<HTMLDivElement>;\n tableId: string;\n data: D[] | null;\n isRtl: boolean;\n isTabbableMode: boolean;\n columnsArray: TableColumn<K, D, C>[];\n sizingInfoRef: MutableRef<SizingInfo>;\n selectionExtensionElementRef: MutableRef<HTMLElement | undefined>;\n onCurrentCellChanged: (detail: CurrentCellDetail<K, C>) => void;\n fullColumnWidths?: number[];\n currentCell?: Cell<K, C>;\n selectionMode?: { row?: SelectionMode; column?: SelectionMode };\n selected?: { row?: Keys<K>; column?: Keys<C> };\n onTableSelectionChange?: (\n detail: TableSelectionDetail<K, C>,\n isExtendableSelection: boolean\n ) => void;\n onRowAction?: (detail: RowActionDetail<K, D>) => void;\n sortCriterion?: { key: C; sortDirection: 'ascending' | 'descending' }[];\n onSortCriterionChange?: (detail: SortCriterionDetail<C>) => void;\n};\n\n/**\n * Hook that manages keyboard interactions on the Preact Table\n */\nexport function useKeyboardHandling<K extends string | number, D, C extends string>({\n outerTableRef,\n tableId,\n data,\n isRtl,\n isTabbableMode,\n columnsArray,\n sizingInfoRef,\n selectionExtensionElementRef,\n fullColumnWidths,\n currentCell,\n onCurrentCellChanged,\n selectionMode,\n selected,\n onTableSelectionChange,\n onRowAction,\n sortCriterion,\n onSortCriterionChange\n}: UseKeyboardHandlingProps<K, D, C>) {\n // Keydown handler for the outer Table. This handles all internal\n // keyboard navigation for the Table.\n const _keyDownHandler = useCallback(\n (event: KeyboardEvent) => {\n const platform = getClientHints().platform;\n const keyHandlers: Record<string, (root: HTMLDivElement) => void> = {\n ' ': function (root: HTMLDivElement) {\n if (outerTableRef.current != null) {\n if (currentCell != null) {\n if (!isTabbableMode) {\n if (onTableSelectionChange != null) {\n handleSelectionGesture(\n outerTableRef.current,\n tableId,\n columnsArray,\n getElementFromCell(root, tableId, currentCell) as HTMLElement,\n true,\n onTableSelectionChange,\n selectionMode,\n selected\n );\n }\n event.preventDefault();\n }\n if (\n onRowAction != null &&\n data != null &&\n handleRowActionGesture(\n outerTableRef.current,\n tableId,\n data,\n onRowAction,\n event.target as HTMLElement,\n currentCell\n )\n ) {\n event.stopPropagation();\n }\n }\n }\n },\n Enter: function () {\n if (outerTableRef.current != null) {\n if (currentCell != null) {\n if (\n onRowAction != null &&\n data != null &&\n currentCell.type === 'data' &&\n handleRowActionGesture(\n outerTableRef.current,\n tableId,\n data,\n onRowAction,\n event.target as HTMLElement,\n currentCell\n )\n ) {\n event.stopPropagation();\n } else if (\n !isTabbableMode &&\n onSortCriterionChange != null &&\n currentCell.type === 'header' &&\n handleSortActionGesture(\n columnsArray,\n currentCell.columnKey,\n onSortCriterionChange,\n sortCriterion\n )\n ) {\n event.stopPropagation();\n }\n }\n }\n },\n ArrowUp: function (root: HTMLDivElement) {\n if (outerTableRef.current != null) {\n if (!isTabbableMode && currentCell != null) {\n if (\n currentCell.type === 'data' &&\n event.shiftKey &&\n onTableSelectionChange != null &&\n selectionMode?.row === 'multiple'\n ) {\n handleExtendSelectionGesture(\n outerTableRef.current,\n tableId,\n columnsArray,\n sizingInfoRef,\n root,\n true,\n currentCell,\n selectionExtensionElementRef,\n onTableSelectionChange,\n isRtl,\n fullColumnWidths,\n selectionMode,\n selected\n );\n } else {\n handleAdjacentRowGesture(\n root,\n tableId,\n columnsArray,\n currentCell,\n onCurrentCellChanged,\n true\n );\n }\n event.preventDefault();\n }\n }\n },\n ArrowDown: function (root: HTMLDivElement) {\n if (outerTableRef.current != null) {\n if (!isTabbableMode && currentCell != null) {\n if (\n currentCell.type === 'data' &&\n event.shiftKey &&\n onTableSelectionChange != null &&\n selectionMode?.row === 'multiple'\n ) {\n handleExtendSelectionGesture(\n outerTableRef.current,\n tableId,\n columnsArray,\n sizingInfoRef,\n root,\n false,\n currentCell,\n selectionExtensionElementRef,\n onTableSelectionChange,\n isRtl,\n fullColumnWidths,\n selectionMode,\n selected\n );\n } else {\n handleAdjacentRowGesture(\n root,\n tableId,\n columnsArray,\n currentCell,\n onCurrentCellChanged,\n false\n );\n }\n event.preventDefault();\n }\n }\n },\n ArrowLeft: function (root: HTMLDivElement) {\n if (outerTableRef.current != null) {\n if (!isTabbableMode && currentCell != null) {\n if (\n (currentCell.type === 'header' || currentCell.type === 'footer') &&\n event.shiftKey &&\n onTableSelectionChange != null &&\n selectionMode?.column === 'multiple'\n ) {\n handleExtendSelectionGesture(\n outerTableRef.current,\n tableId,\n columnsArray,\n sizingInfoRef,\n root,\n true,\n currentCell,\n selectionExtensionElementRef,\n onTableSelectionChange,\n isRtl,\n fullColumnWidths,\n selectionMode,\n selected\n );\n } else {\n handleAdjacentColumnGesture(\n columnsArray,\n currentCell,\n onCurrentCellChanged,\n !isRtl\n );\n }\n event.preventDefault();\n }\n }\n },\n ArrowRight: function (root: HTMLDivElement) {\n if (outerTableRef.current != null) {\n if (!isTabbableMode && currentCell != null) {\n if (\n (currentCell.type === 'header' || currentCell.type === 'footer') &&\n event.shiftKey &&\n onTableSelectionChange != null &&\n selectionMode?.column === 'multiple'\n ) {\n handleExtendSelectionGesture(\n outerTableRef.current,\n tableId,\n columnsArray,\n sizingInfoRef,\n root,\n false,\n currentCell,\n selectionExtensionElementRef,\n onTableSelectionChange,\n isRtl,\n fullColumnWidths,\n selectionMode,\n selected\n );\n } else {\n handleAdjacentColumnGesture(columnsArray, currentCell, onCurrentCellChanged, isRtl);\n }\n event.preventDefault();\n }\n }\n },\n PageUp: function (root: HTMLDivElement) {\n if (!isTabbableMode && currentCell != null) {\n handlePageRowGesture(\n root,\n tableId,\n columnsArray,\n sizingInfoRef,\n currentCell,\n onCurrentCellChanged,\n true,\n isRtl,\n fullColumnWidths\n );\n event.preventDefault();\n }\n },\n PageDown: function (root: HTMLDivElement) {\n if (!isTabbableMode && currentCell != null) {\n handlePageRowGesture(\n root,\n tableId,\n columnsArray,\n sizingInfoRef,\n currentCell,\n onCurrentCellChanged,\n false,\n isRtl,\n fullColumnWidths\n );\n event.preventDefault();\n }\n },\n Home: function (root: HTMLDivElement) {\n if (!isTabbableMode && currentCell != null) {\n handleJumpColumnGesture(\n root,\n tableId,\n columnsArray,\n currentCell,\n onCurrentCellChanged,\n true,\n platform === 'mac' ? event.metaKey : event.ctrlKey\n );\n event.preventDefault();\n }\n },\n End: function (root: HTMLDivElement) {\n if (!isTabbableMode && currentCell != null) {\n handleJumpColumnGesture(\n root,\n tableId,\n columnsArray,\n currentCell,\n onCurrentCellChanged,\n false,\n platform === 'mac' ? event.metaKey : event.ctrlKey\n );\n event.preventDefault();\n }\n }\n };\n if (Object.keys(keyHandlers).includes(event.key) && outerTableRef.current != null) {\n keyHandlers[event.key](outerTableRef.current);\n }\n },\n [\n outerTableRef,\n tableId,\n data,\n isRtl,\n isTabbableMode,\n columnsArray,\n sizingInfoRef,\n selectionExtensionElementRef,\n fullColumnWidths,\n currentCell,\n onCurrentCellChanged,\n selectionMode,\n selected,\n onTableSelectionChange,\n onRowAction,\n sortCriterion,\n onSortCriterionChange\n ]\n );\n\n return { onKeyDown: _keyDownHandler };\n}\n","/**\n * @license\n * Copyright (c) %FIRST_YEAR% %CURRENT_YEAR%, Oracle and/or its affiliates.\n * The Universal Permissive License (UPL), Version 1.0\n * as shown at https://oss.oracle.com/licenses/upl/\n * @ignore\n */\nimport { MutableRef } from 'preact/hooks';\nimport { ColumnResizeInfo, TableColumn } from '../Table';\nimport { ColumnResizeDetail, ColumnWidths } from '../../UNSAFE_TableView';\nimport { getElementContainsFunc } from '../../utils/PRIVATE_collectionUtils';\n\n/**\n * Helper function to handle a hover over a resizable column region gesture.\n */\nexport function handleOverResizeRegionGesture<K, D, C>(\n root: HTMLDivElement,\n tableId: string,\n event: PointerEvent,\n columnsArray: TableColumn<K, D, C>[],\n resizeInfoRef: MutableRef<ColumnResizeInfo<C>>,\n isRtl: boolean\n) {\n // handle hover feedback around potentially resizable columns\n _updateResizingState(root, tableId, event, columnsArray, resizeInfoRef, isRtl);\n}\n\n/**\n * Helper function to handle a column resize start gesture (pointer down).\n */\nexport function handleColumnResizeStartGesture<K, D, C extends string>(\n root: HTMLDivElement,\n tableId: string,\n event: PointerEvent,\n columnsArray: TableColumn<K, D, C>[],\n appliedColumnWidths: ColumnWidths<C>,\n resizeInfoRef: MutableRef<ColumnResizeInfo<C>>,\n isRtl: boolean,\n fullColumnWidths?: number[],\n onColumnResizing?: (detail: ColumnResizeDetail<C>) => void\n) {\n if (fullColumnWidths != null) {\n if (resizeInfoRef.current.key == null) {\n _updateResizingState(root, tableId, event, columnsArray, resizeInfoRef, isRtl);\n }\n if (resizeInfoRef.current.key != null) {\n const innerTable = root.querySelector(`[data-oj-table-inner-table='${tableId}']`);\n if (innerTable != null) {\n const rect = innerTable.getBoundingClientRect();\n const pointerX = isRtl ? rect.right - event.clientX : event.clientX - rect.left;\n\n const resizeColumnWidths = [];\n for (let i = 0; i < fullColumnWidths.length; i++) {\n const columnWidth = fullColumnWidths[i];\n resizeColumnWidths.push(columnWidth as number);\n }\n resizeInfoRef.current = {\n isResizing: true,\n isResizeHover: true,\n key: resizeInfoRef.current.key,\n startX: pointerX,\n delta: 0,\n fullColumnWidths: resizeColumnWidths,\n ignoreClick: resizeInfoRef.current.ignoreClick\n };\n if (onColumnResizing != null) {\n onColumnResizing({\n key: resizeInfoRef.current.key,\n delta: 0,\n allColumnWidths: appliedColumnWidths\n });\n }\n return true;\n }\n }\n }\n return false;\n}\n\n/**\n * Helper function to ensure the resizing state is updated based on the latest pointer event.\n */\nfunction _updateResizingState<K, D, C>(\n root: HTMLDivElement,\n tableId: string,\n event: PointerEvent,\n columnsArray: TableColumn<K, D, C>[],\n resizeInfoRef: MutableRef<ColumnResizeInfo<C>>,\n isRtl: boolean\n) {\n const headerRowElement = root.querySelector(\n `[data-oj-table-header-row='${tableId}']`\n ) as HTMLElement;\n if (headerRowElement != null) {\n const headerElements = headerRowElement.querySelectorAll(\n `[data-oj-table-header-cell='${tableId}']`\n ) as NodeListOf<HTMLElement>;\n if (getElementContainsFunc(headerRowElement)(event.target as HTMLElement)) {\n let isResizeHover = false;\n for (let i = 0; i < headerElements.length; i++) {\n const headerElement = headerElements[i];\n const cellRect = headerElement.getBoundingClientRect();\n const endEdge = isRtl ? cellRect.left : cellRect.right;\n if (Math.abs(endEdge - event.pageX) <= 8) {\n if (columnsArray[i].value.edgeResizable !== 'enabled') {\n break;\n }\n // resize operation on end side of header cell\n resizeInfoRef.current.key = columnsArray[i].key;\n headerRowElement.style.cursor = 'col-resize';\n isResizeHover = true;\n resizeInfoRef.current.isResizeHover = true;\n }\n }\n if (!isResizeHover) {\n headerRowElement.style.cursor = '';\n resizeInfoRef.current.key = undefined;\n resizeInfoRef.current.isResizeHover = false;\n }\n } else {\n if (headerRowElement != null) {\n headerRowElement.style.cursor = '';\n }\n resizeInfoRef.current.key = undefined;\n resizeInfoRef.current.isResizeHover = false;\n }\n }\n}\n\n/**\n * Helper function to handle a pointer move gesture during a column resize.\n */\nexport function handleColumnResizingGesture<C extends string>(\n root: HTMLDivElement,\n tableId: string,\n event: PointerEvent,\n appliedColumnWidths: ColumnWidths<C>,\n resizeInfoRef: MutableRef<ColumnResizeInfo<C>>,\n isRtl: boolean,\n fullColumnWidths?: number[],\n onColumnResizing?: (detail: ColumnResizeDetail<C>) => void\n) {\n if (resizeInfoRef.current.isResizing && fullColumnWidths != null) {\n const innerTable = root.querySelector(`[data-oj-table-inner-table='${tableId}']`);\n if (innerTable != null) {\n const rect = innerTable.getBoundingClientRect();\n const currentX = isRtl ? rect.right - event.clientX : event.clientX - rect.left;\n\n resizeInfoRef.current.delta = currentX - resizeInfoRef.current.startX;\n // handle resize move operation\n if (onColumnResizing != null) {\n onColumnResizing({\n key: resizeInfoRef.current.key,\n delta: resizeInfoRef.current.delta,\n allColumnWidths: appliedColumnWidths\n });\n }\n }\n }\n}\n\n/**\n * Helper function to handle a column resize end gesture (pointer up).\n */\nexport function handleColumnResizeEndGesture<C extends string>(\n root: HTMLDivElement,\n tableId: string,\n event: PointerEvent,\n appliedColumnWidths: ColumnWidths<C>,\n resizeInfoRef: MutableRef<ColumnResizeInfo<C>>,\n isRtl: boolean,\n onColumnResize?: (detail: ColumnResizeDetail<C>) => void\n) {\n if (resizeInfoRef.current.isResizing) {\n if (onColumnResize != null) {\n const resizeColumnWidths = [];\n for (const columnWidth of resizeInfoRef.current.fullColumnWidths) {\n resizeColumnWidths.push(columnWidth);\n }\n const innerTable = root.querySelector(`[data-oj-table-inner-table='${tableId}']`);\n if (innerTable != null) {\n const rect = innerTable.getBoundingClientRect();\n const currentX = isRtl ? rect.right - event.clientX : event.clientX - rect.left;\n\n resizeInfoRef.current.delta = currentX - resizeInfoRef.current.startX;\n onColumnResize({\n key: resizeInfoRef.current.key,\n delta: resizeInfoRef.current.delta,\n allColumnWidths: appliedColumnWidths\n });\n }\n }\n }\n resizeInfoRef.current = {\n isResizing: false,\n isResizeHover: resizeInfoRef.current.isResizeHover,\n ignoreClick: resizeInfoRef.current.ignoreClick\n };\n}\n\n/**\n * Helper function to handle the pointer leaving the entire Table when previously hovering\n * over a column resize region.\n */\nexport function handleLeaveResizingGesture<C>(\n root: HTMLDivElement,\n tableId: string,\n resizeInfoRef: MutableRef<ColumnResizeInfo<C>>\n) {\n if (!resizeInfoRef.current.isResizing) {\n const headerRowElement = root.querySelector(\n `[data-oj-table-header-row='${tableId}']`\n ) as HTMLElement;\n if (headerRowElement != null) {\n headerRowElement.style.cursor = '';\n }\n resizeInfoRef.current.isResizeHover = false;\n }\n}\n\n/**\n * Helper function to handle a pointer entering the Table when it was previously handling\n * a column resize gesture.\n */\nexport function handleEnterResizingGesture<C extends string>(\n root: HTMLDivElement,\n tableId: string,\n event: PointerEvent,\n appliedColumnWidths: ColumnWidths<C>,\n resizeInfoRef: MutableRef<ColumnResizeInfo<C>>,\n isRtl: boolean,\n onColumnResize?: (detail: ColumnResizeDetail<C>) => void\n) {\n // handle case where user was resizing, moved pointer out of the Table,\n // released the button, and has now entered the table once again\n if (resizeInfoRef.current.isResizing && event.buttons === 0) {\n handleColumnResizeEndGesture(\n root,\n tableId,\n event,\n appliedColumnWidths,\n resizeInfoRef,\n isRtl,\n onColumnResize\n );\n }\n}\n","/**\n * @license\n * Copyright (c) %FIRST_YEAR% %CURRENT_YEAR%, Oracle and/or its affiliates.\n * The Universal Permissive License (UPL), Version 1.0\n * as shown at https://oss.oracle.com/licenses/upl/\n * @ignore\n */\nimport { useCallback, useRef, MutableRef, Ref } from 'preact/hooks';\nimport { getClientHints } from '../../utils/PRIVATE_clientHints';\nimport { getIsSelectionPending } from '../../utils/PRIVATE_textSelectionUtils';\nimport { Keys } from '../../utils/UNSAFE_keys';\nimport { ColumnResizeInfo, TableColumn } from '../Table';\nimport { handleRowActionGesture } from '../utils/TableActionUtils';\nimport {\n handleSelectionGesture,\n handleRangeSelectionGesture,\n isRangeSelectionGesture\n} from '../utils/TableSelectionUtils';\nimport {\n handleOverResizeRegionGesture,\n handleColumnResizeStartGesture,\n handleColumnResizingGesture,\n handleColumnResizeEndGesture,\n handleLeaveResizingGesture,\n handleEnterResizingGesture\n} from '../utils/TableSizingUtils';\nimport { SelectionMode } from '../../UNSAFE_Collection';\nimport {\n Cell,\n ColumnWidths,\n RowActionDetail,\n ColumnResizeDetail,\n TableSelectionDetail\n} from '../../UNSAFE_TableView';\n\ntype UsePointerHandlingOptions<K, D, C extends string> = {\n outerTableRef: Ref<HTMLDivElement>;\n tableId: string;\n data: D[] | null;\n isRtl: boolean;\n columnsArray: TableColumn<K, D, C>[];\n appliedColumnWidths: ColumnWidths<C>;\n resizeInfoRef: MutableRef<ColumnResizeInfo<C>>;\n selectionExtensionElementRef: MutableRef<HTMLElement | undefined>;\n fullColumnWidths?: number[];\n onColumnResizing?: (detail: ColumnResizeDetail<C>) => void;\n onColumnResize?: (detail: ColumnResizeDetail<C>) => void;\n currentCell?: Cell<K, C>;\n selectionMode?: { row?: SelectionMode; column?: SelectionMode };\n selected?: { row?: Keys<K>; column?: Keys<C> };\n onTableSelectionChange?: (\n detail: TableSelectionDetail<K, C>,\n isSelectionExtension: boolean\n ) => void;\n onRowAction?: (detail: RowActionDetail<K, D>) => void;\n};\n\n/**\n * Hook that manages pointer interactions on the Preact Table\n */\nexport function usePointerHandling<K extends string | number, D, C extends string>({\n outerTableRef,\n tableId,\n data,\n isRtl,\n columnsArray,\n appliedColumnWidths,\n resizeInfoRef,\n selectionExtensionElementRef,\n fullColumnWidths,\n onColumnResizing,\n onColumnResize,\n currentCell,\n selectionMode,\n selected,\n onTableSelectionChange,\n onRowAction\n}: UsePointerHandlingOptions<K, D, C>) {\n // tracks whether the most recent 'pointerdown' event was due to a touch gesture\n const selectionTouchRef = useRef<boolean>(false);\n\n // Pointer move handler for the outer Table.\n const _pointerMoveHandler = useCallback(\n (event: PointerEvent) => {\n if (outerTableRef.current != null && onColumnResizing != null) {\n if (!resizeInfoRef.current.isResizing) {\n handleOverResizeRegionGesture(\n outerTableRef.current,\n tableId,\n event,\n columnsArray,\n resizeInfoRef,\n isRtl\n );\n } else {\n handleColumnResizingGesture(\n outerTableRef.current,\n tableId,\n event,\n appliedColumnWidths,\n resizeInfoRef,\n isRtl,\n fullColumnWidths,\n onColumnResizing\n );\n }\n }\n },\n [\n outerTableRef,\n tableId,\n columnsArray,\n appliedColumnWidths,\n resizeInfoRef,\n isRtl,\n fullColumnWidths,\n onColumnResizing\n ]\n );\n\n // Pointer down handler for the outer Table. It ensures the area targeted is 'current'.\n // NOTE - This event handling is triggered prior to 'onFocus' handling and ensures the\n // 'pending current' area is set when an initial pointer interaction focuses the Table.\n const _pointerDownHandler = useCallback(\n (event: PointerEvent) => {\n if (outerTableRef.current != null) {\n selectionTouchRef.current = event.pointerType === 'touch';\n const targetElement = event.target as HTMLElement;\n if (\n onTableSelectionChange != null &&\n currentCell != null &&\n event.shiftKey &&\n isRangeSelectionGesture(\n outerTableRef.current,\n tableId,\n targetElement,\n currentCell,\n selectionMode\n )\n ) {\n // prevent focus change on selection extension gesture\n if (!getIsSelectionPending()) {\n event.preventDefault();\n }\n } else if (\n handleColumnResizeStartGesture(\n outerTableRef.current,\n tableId,\n event,\n columnsArray,\n appliedColumnWidths,\n resizeInfoRef,\n isRtl,\n fullColumnWidths,\n onColumnResizing\n )\n ) {\n // prevent focus change on column resize gesture\n event.preventDefault();\n resizeInfoRef.current.ignoreClick = true;\n }\n }\n },\n [\n outerTableRef,\n tableId,\n columnsArray,\n appliedColumnWidths,\n resizeInfoRef,\n isRtl,\n currentCell,\n selectionMode,\n onTableSelectionChange,\n fullColumnWidths,\n onColumnResizing\n ]\n );\n\n // Pointer up handler for the outer Table.\n const _pointerUpHandler = useCallback(\n (event: PointerEvent) => {\n if (outerTableRef.current != null) {\n handleColumnResizeEndGesture(\n outerTableRef.current,\n tableId,\n event,\n appliedColumnWidths,\n resizeInfoRef,\n isRtl,\n onColumnResize\n );\n }\n },\n [outerTableRef, tableId, appliedColumnWidths, resizeInfoRef, isRtl, onColumnResize]\n );\n\n // Pointer leave handler for the outer Table.\n const _pointerLeaveHandler = useCallback(\n (_event: PointerEvent) => {\n if (outerTableRef.current != null) {\n handleLeaveResizingGesture(outerTableRef.current, tableId, resizeInfoRef);\n }\n },\n [outerTableRef, tableId, resizeInfoRef]\n );\n\n // Pointer leave handler for the outer Table.\n const _pointerEnterHandler = useCallback(\n (event: PointerEvent) => {\n if (outerTableRef.current != null) {\n handleEnterResizingGesture(\n outerTableRef.current,\n tableId,\n event,\n appliedColumnWidths,\n resizeInfoRef,\n isRtl,\n onColumnResize\n );\n }\n },\n [outerTableRef, tableId, appliedColumnWidths, resizeInfoRef, isRtl, onColumnResize]\n );\n\n // Click handler for the outer Table. It ensures the Table's selection state is\n // updated to reflect the area targeted.\n const _clickHandler = useCallback(\n (event: MouseEvent) => {\n let isSelectionExtension = false;\n const platform = getClientHints().platform;\n const target = event.target as HTMLElement;\n if (outerTableRef.current != null) {\n if (\n onTableSelectionChange != null &&\n !resizeInfoRef.current.ignoreClick &&\n !getIsSelectionPending()\n ) {\n if (currentCell != null && event.shiftKey) {\n isSelectionExtension = handleRangeSelectionGesture(\n outerTableRef.current,\n tableId,\n columnsArray,\n target,\n currentCell,\n selectionExtensionElementRef,\n onTableSelectionChange,\n selectionMode,\n selected\n );\n }\n if (!isSelectionExtension) {\n handleSelectionGesture(\n outerTableRef.current,\n tableId,\n columnsArray,\n target,\n (platform === 'mac' ? event.metaKey : event.ctrlKey) || selectionTouchRef.current,\n onTableSelectionChange,\n selectionMode,\n selected\n );\n }\n }\n if (\n onRowAction != null &&\n data != null &&\n !getIsSelectionPending() &&\n handleRowActionGesture(outerTableRef.current, tableId, data, onRowAction, target)\n ) {\n event.stopPropagation();\n }\n }\n resizeInfoRef.current.ignoreClick = false;\n },\n [\n outerTableRef,\n tableId,\n columnsArray,\n data,\n resizeInfoRef,\n selectionExtensionElementRef,\n currentCell,\n selectionMode,\n selected,\n onTableSelectionChange,\n onRowAction\n ]\n );\n\n return {\n onPointerMove: _pointerMoveHandler,\n onPointerDown: _pointerDownHandler,\n onPointerUp: _pointerUpHandler,\n onPointerLeave: _pointerLeaveHandler,\n onPointerEnter: _pointerEnterHandler,\n onClick: _clickHandler\n };\n}\n","/**\n * @license\n * Copyright (c) %FIRST_YEAR% %CURRENT_YEAR%, Oracle and/or its affiliates.\n * The Universal Permissive License (UPL), Version 1.0\n * as shown at https://oss.oracle.com/licenses/upl/\n * @ignore\n */\nimport { useCallback, Ref } from 'preact/hooks';\nimport { TableColumn } from '../Table';\nimport { updateStickyEdges } from '../utils/TableScrollUtils';\n\ntype UseScrollHandlingProps<K, D, C extends string> = {\n outerTableRef: Ref<HTMLDivElement>;\n columnsArray: TableColumn<K, D, C>[];\n stickyEdgesState: { start?: number; end?: number };\n setStickyEdgesState: (stickyEdgesState: { start?: number; end?: number }) => void;\n fullColumnWidths?: number[];\n};\n\n/**\n * Hook that manages handling scroll events on the Preact Table\n */\nexport function useScrollHandling<K extends string | number, D, C extends string>({\n outerTableRef,\n columnsArray,\n stickyEdgesState,\n setStickyEdgesState,\n fullColumnWidths\n}: UseScrollHandlingProps<K, D, C>) {\n // Scroll hander for the outer Table. It ensures the Table's sticky edges are updated.\n const _scrollHandler = useCallback(() => {\n if (outerTableRef.current != null && fullColumnWidths != null) {\n updateStickyEdges(\n outerTableRef.current,\n columnsArray,\n fullColumnWidths,\n stickyEdgesState,\n setStickyEdgesState,\n outerTableRef.current.scrollLeft\n );\n }\n }, [outerTableRef, columnsArray, stickyEdgesState, setStickyEdgesState, fullColumnWidths]);\n\n return { onScroll: _scrollHandler };\n}\n","/**\n * @license\n * Copyright (c) %FIRST_YEAR% %CURRENT_YEAR%, Oracle and/or its affiliates.\n * The Universal Permissive License (UPL), Version 1.0\n * as shown at https://oss.oracle.com/licenses/upl/\n * @ignore\n */\nimport { useMemo, useRef, MutableRef, Ref } from 'preact/hooks';\nimport { Keys } from '../../utils/UNSAFE_keys';\nimport { mergeProps } from '../../utils/UNSAFE_mergeProps';\nimport { ColumnResizeInfo, SizingInfo, TableColumn } from '../Table';\nimport { useFocusHandling } from './useFocusHandling';\nimport { useKeyboardHandling } from './useKeyboardHandling';\nimport { usePointerHandling } from './usePointerHandling';\nimport { useScrollHandling } from './useScrollHandling';\nimport { SelectionMode } from '../../UNSAFE_Collection';\nimport {\n Cell,\n ColumnWidths,\n CurrentCellDetail,\n RowActionDetail,\n SortCriterionDetail,\n ColumnResizeDetail,\n TableSelectionDetail\n} from '../../UNSAFE_TableView';\n\ntype UseInteractionManagerOptions<K, D, C extends string> = {\n outerTableRef: Ref<HTMLDivElement>;\n tableId: string;\n data: D[] | null;\n isRtl: boolean;\n columnsArray: TableColumn<K, D, C>[];\n appliedColumnWidths: ColumnWidths<C>;\n sizingInfoRef: MutableRef<SizingInfo>;\n resizeInfoRef: MutableRef<ColumnResizeInfo<C>>;\n stickyEdgesState: { start?: number; end?: number };\n setStickyEdgesState: (stickyEdgesState: { start?: number; end?: number }) => void;\n cellHasRenderer: (cell: Cell<K, C>) => boolean;\n fullColumnWidths?: number[];\n onColumnResizing?: (detail: ColumnResizeDetail<C>) => void;\n onColumnResize?: (detail: ColumnResizeDetail<C>) => void;\n currentCellOverride?: Cell<K, C>;\n onPersistCurrentCell?: (detail: CurrentCellDetail<K, C>) => void;\n selectionMode?: { row?: SelectionMode; column?: SelectionMode };\n selected?: { row?: Keys<K>; column?: Keys<C> };\n onSelectionChange?: (detail: TableSelectionDetail<K, C>) => void;\n onRowAction?: (detail: RowActionDetail<K, D>) => void;\n sortCriterion?: { key: C; sortDirection: 'ascending' | 'descending' }[];\n onSortCriterionChange?: (detail: SortCriterionDetail<C>) => void;\n};\n\n/**\n * Hook that manages interactions and events on the Preact Table\n */\nexport function useInteractionManager<K extends string | number, D, C extends string>({\n outerTableRef,\n tableId,\n data,\n isRtl,\n columnsArray,\n appliedColumnWidths,\n sizingInfoRef,\n resizeInfoRef,\n stickyEdgesState,\n setStickyEdgesState,\n cellHasRenderer,\n fullColumnWidths,\n onColumnResizing,\n onColumnResize,\n currentCellOverride,\n onPersistCurrentCell,\n selectionMode,\n selected,\n onSelectionChange,\n onRowAction,\n sortCriterion,\n onSortCriterionChange\n}: UseInteractionManagerOptions<K, D, C>) {\n // tracks the current selection extension element (if any)\n const selectionExtensionElementRef = useRef<HTMLElement>();\n\n // intercept onSelectionChange calls to ensure local selectionExtensionElementRef is cleared\n const onTableSelectionChange = useMemo(() => {\n return onSelectionChange != null\n ? (detail: TableSelectionDetail<K, C>, isExtendableSelection: boolean) => {\n if (!isExtendableSelection) {\n selectionExtensionElementRef.current = undefined;\n }\n onSelectionChange(detail);\n }\n : undefined;\n }, [onSelectionChange]);\n\n // setup focus tracking using the useFocusHandling hook\n const {\n focusHandlingProps,\n currentCell,\n onCurrentCellChanged,\n isShowFocusRing,\n isTabbableMode,\n onStartFocusTracking,\n onFocusStartEdge,\n onFocusEndEdge\n } = useFocusHandling({\n outerTableRef,\n tableId,\n columnsArray,\n sizingInfoRef,\n selectionExtensionElementRef,\n isRtl,\n cellSupportsTabbable: cellHasRenderer,\n fullColumnWidths,\n currentCellOverride,\n onPersistCurrentCell\n });\n\n const keyboardHandlingProps = useKeyboardHandling({\n outerTableRef,\n tableId,\n data,\n isRtl,\n isTabbableMode,\n columnsArray,\n sizingInfoRef,\n selectionExtensionElementRef,\n fullColumnWidths,\n currentCell,\n onCurrentCellChanged,\n selectionMode,\n selected,\n onTableSelectionChange,\n onRowAction,\n sortCriterion,\n onSortCriterionChange\n });\n\n const pointerHandlingProps = usePointerHandling({\n outerTableRef,\n tableId,\n data,\n isRtl,\n columnsArray,\n appliedColumnWidths,\n resizeInfoRef,\n selectionExtensionElementRef,\n fullColumnWidths,\n onColumnResizing,\n onColumnResize,\n currentCell,\n selectionMode,\n selected,\n onTableSelectionChange,\n onRowAction\n });\n\n const scrollHandlingProps = useScrollHandling({\n outerTableRef,\n columnsArray,\n stickyEdgesState,\n setStickyEdgesState,\n fullColumnWidths\n });\n\n const interactionManagerProps = mergeProps(\n focusHandlingProps,\n keyboardHandlingProps,\n pointerHandlingProps,\n scrollHandlingProps\n );\n\n return {\n interactionManagerProps,\n onTableSelectionChange,\n isShowFocusRing,\n isTabbableMode,\n currentCell,\n onStartFocusTracking,\n onFocusStartEdge,\n onFocusEndEdge\n };\n}\n","/**\n * @license\n * Copyright (c) %FIRST_YEAR% %CURRENT_YEAR%, Oracle and/or its affiliates.\n * The Universal Permissive License (UPL), Version 1.0\n * as shown at https://oss.oracle.com/licenses/upl/\n * @ignore\n */\nimport { MutableRef } from 'preact/hooks';\nimport { SampledWidths, TableColumn } from '../Table';\nimport { tableStyles } from '../themes/TableStyles.css';\nimport { ColumnWidths } from '../../UNSAFE_TableView';\n\n/**\n * Helper method to extract the individual column widths of the Table\n * depending on its layout. With a 'fixed' layout, an initial 'availableWidth'\n * is required, while with a 'contents' layout, -1 can be provided as the\n * 'availableWidth' initially. This will trigger the layout logic to ensure\n * a non-contstrained Table width is supported, and is needed to match\n * current Redwood behaviors with a 'contents' layout.\n */\nexport function getLayoutColumnWidths<K, D, C extends string>(\n outerTableElement: HTMLDivElement,\n scrollbarWidth: number,\n tableId: string,\n isFixed: boolean,\n sampledColumnWidthsRef: MutableRef<SampledWidths<C> | undefined>,\n availableWidth: number,\n columnsArray: TableColumn<K, D, C>[],\n staticColumnWidths?: ColumnWidths<C>\n) {\n if (isFixed) {\n return _getFixedLayoutColumnWidths(availableWidth, columnsArray, staticColumnWidths);\n }\n let newColumnWidths = _getContentsLayoutColumnWidths(\n outerTableElement,\n tableId,\n sampledColumnWidthsRef,\n availableWidth,\n columnsArray,\n staticColumnWidths\n );\n if (availableWidth === -1) {\n let totalWidth = 0;\n const widthsArray = [];\n for (let i = 0; i < columnsArray.length; i++) {\n const width = newColumnWidths[columnsArray[i].key];\n widthsArray.push(width);\n totalWidth += width;\n }\n // for content sizing, apply the new column widths immediately, and check to see\n // if all space is actually utilized - this supports no width constraint scenarios\n _udpateTableSizing(outerTableElement, tableId, widthsArray, totalWidth);\n availableWidth = outerTableElement.getBoundingClientRect().width - scrollbarWidth;\n if (Math.abs(totalWidth - availableWidth) > 0.005) {\n newColumnWidths = _getContentsLayoutColumnWidths(\n outerTableElement,\n tableId,\n sampledColumnWidthsRef,\n availableWidth,\n columnsArray,\n staticColumnWidths\n );\n }\n }\n return newColumnWidths;\n}\n\n/**\n * Helper method to extract the individual column widths of the Table\n * for a 'fixed' layout table that already has its root width applied.\n */\nfunction _getFixedLayoutColumnWidths<K, D, C extends string>(\n availableWidth: number,\n columnsArray: TableColumn<K, D, C>[],\n staticColumnWidths?: ColumnWidths<C>\n) {\n const DEFAULT_COLUMN_WEIGHT = 1;\n const DEFAULT_COLUMN_MIN_WIDTH = 100;\n const DEFAULT_COLUMN_MAX_WIDTH = undefined;\n\n let requiresActiveSizing = false;\n let totalWorkingWeight = 0;\n let forcedTotalWidth = 0;\n let pendingTotalWidth = 0;\n const columnMaxWidthsArray = [];\n const columnWeightsArray = [];\n const forcedColumnWidthsArray = [];\n const newColumnWidthsArray = [];\n const appliedColumnWidthsArray = [];\n for (let i = 0; i < columnsArray.length; i++) {\n const column = columnsArray[i];\n let columnMinWidth = column.value.minWidth;\n if (columnMinWidth == null || columnMinWidth <= 0) {\n columnMinWidth = DEFAULT_COLUMN_MIN_WIDTH;\n }\n let columnMaxWidth = column.value.maxWidth;\n if (columnMaxWidth == null || columnMaxWidth < columnMinWidth) {\n columnMaxWidth = DEFAULT_COLUMN_MAX_WIDTH;\n }\n columnMaxWidthsArray.push(columnMaxWidth);\n let columnWeight = column.value.weight;\n if (columnWeight == null || columnWeight < 1) {\n columnWeight = DEFAULT_COLUMN_WEIGHT;\n }\n columnWeightsArray.push(columnWeight);\n const columnWidth = staticColumnWidths != null ? staticColumnWidths[column.key] : undefined;\n if (columnWidth != null) {\n forcedTotalWidth += columnWidth;\n pendingTotalWidth += columnWidth;\n forcedColumnWidthsArray.push(columnWidth);\n newColumnWidthsArray.push(columnWidth);\n appliedColumnWidthsArray.push(columnWidth);\n } else {\n requiresActiveSizing = true;\n pendingTotalWidth += columnMinWidth;\n totalWorkingWeight += columnWeight;\n forcedColumnWidthsArray.push(undefined);\n newColumnWidthsArray.push(columnMinWidth);\n appliedColumnWidthsArray.push(columnMinWidth);\n }\n }\n\n // enforce min and max rules if active sizing is required and available space remains\n if (requiresActiveSizing && pendingTotalWidth < availableWidth) {\n _enforceFixedMinMaxRules(\n columnsArray,\n availableWidth,\n totalWorkingWeight,\n forcedTotalWidth,\n forcedColumnWidthsArray,\n columnWeightsArray,\n columnMaxWidthsArray,\n newColumnWidthsArray,\n appliedColumnWidthsArray\n );\n }\n return _createColumnWidths(columnsArray, newColumnWidthsArray);\n}\n\n/**\n * Helper function to enforce all of the layout sizing rules on the Table's columns.\n */\nfunction _enforceFixedMinMaxRules<K, D, C>(\n columnsArray: TableColumn<K, D, C>[],\n availableWidth: number,\n totalWorkingWeight: number,\n forcedTotalWidth: number,\n forcedColumnWidthsArray: (number | undefined)[],\n columnWeightsArray: number[],\n columnMaxWidthsArray: (number | undefined)[],\n newColumnWidthsArray: number[],\n appliedColumnWidthsArray: number[]\n) {\n // try and honor the weights of each column combined with the min widths, and then check that against\n // any max widths once completed. if the final result doesn't fill the space AND at least 1 max width\n // rule was enforced, repeat the process until no max rules are enforced OR the space is filled.\n let isMaxRuleApplied = true;\n while (isMaxRuleApplied) {\n isMaxRuleApplied = false;\n _enforceWeightedMinRules(\n columnsArray,\n availableWidth,\n totalWorkingWeight,\n forcedTotalWidth,\n forcedColumnWidthsArray,\n columnWeightsArray,\n newColumnWidthsArray,\n appliedColumnWidthsArray\n );\n let pendingTotalWidth = 0;\n for (let i = 0; i < columnsArray.length; i++) {\n if (forcedColumnWidthsArray[i] == null) {\n const maxWidth = columnMaxWidthsArray[i];\n if (maxWidth != null && newColumnWidthsArray[i] > maxWidth) {\n isMaxRuleApplied = true;\n forcedColumnWidthsArray[i] = maxWidth;\n forcedTotalWidth += maxWidth;\n totalWorkingWeight -= columnWeightsArray[i];\n newColumnWidthsArray[i] = maxWidth;\n appliedColumnWidthsArray[i] = maxWidth;\n }\n }\n pendingTotalWidth += newColumnWidthsArray[i];\n }\n isMaxRuleApplied = isMaxRuleApplied && pendingTotalWidth < availableWidth;\n }\n}\n\n/**\n * Helper method to extract the individual column widths of the Table\n * for a 'contents' layout table that already has its root width applied.\n */\nfunction _getContentsLayoutColumnWidths<K, D, C extends string>(\n outerTableElement: HTMLDivElement,\n tableId: string,\n sampledColumnWidthsRef: MutableRef<SampledWidths<C> | undefined>,\n availableWidth: number,\n columnsArray: TableColumn<K, D, C>[],\n staticColumnWidths?: ColumnWidths<C>\n) {\n const DEFAULT_COLUMN_MIN_WIDTH = undefined;\n const DEFAULT_COLUMN_MAX_WIDTH = undefined;\n\n let requiresActiveSizing = false;\n const columnMinWidthsArray = [] as (number | undefined)[];\n const columnMaxWidthsArray = [];\n const forcedColumnWidthsArray = [];\n const newColumnWidthsArray = [];\n for (let i = 0; i < columnsArray.length; i++) {\n const column = columnsArray[i];\n let columnMinWidth = column.value.minWidth;\n if (columnMinWidth == null || columnMinWidth <= 0) {\n columnMinWidth = DEFAULT_COLUMN_MIN_WIDTH;\n }\n columnMinWidthsArray.push(columnMinWidth);\n let columnMaxWidth = column.value.maxWidth;\n if (columnMaxWidth == null || columnMaxWidth < (columnMinWidth != null ? columnMinWidth : 0)) {\n columnMaxWidth = DEFAULT_COLUMN_MAX_WIDTH;\n }\n columnMaxWidthsArray.push(columnMaxWidth);\n const columnWidth = staticColumnWidths != null ? staticColumnWidths[column.key] : undefined;\n if (columnWidth != null) {\n forcedColumnWidthsArray.push(columnWidth);\n newColumnWidthsArray[i] = columnWidth;\n } else {\n requiresActiveSizing = true;\n forcedColumnWidthsArray.push(undefined);\n }\n }\n\n // short-circuit normal contents sizing if each column specifies a 'width' value\n if (requiresActiveSizing) {\n // if active sizing is required, update min width values to reflect actual widths\n // performance note - this should be the only logic that requires DOM measurements\n let forcedTotalWidth = 0;\n let pendingTotalWidth = 0;\n let totalPreferredWidth = 0;\n let totalWorkingWeight = 0;\n let totalRemainingWeight = 0;\n const sampledWidths = sampledColumnWidthsRef.current;\n const sampledMinWidthsArray = [];\n const sampledWeightWidthsArray = [] as number[];\n const appliedColumnWidthsArray = [];\n if (sampledWidths != null) {\n for (let i = 0; i < columnsArray.length; i++) {\n sampledMinWidthsArray.push(sampledWidths.minWidths[columnsArray[i].key]);\n sampledWeightWidthsArray.push(sampledWidths.weightWidths[columnsArray[i].key]);\n }\n } else {\n sampledColumnWidthsRef.current = {\n minWidths: {} as ColumnWidths<C>,\n weightWidths: {} as ColumnWidths<C>\n };\n const headerElements = outerTableElement.querySelectorAll(\n `[data-oj-table-header-cell='${tableId}']`\n );\n // when sampledColumnWidths are not populated, content wrapping is disabled in the table\n // which allows for measurements to represent the column weights\n for (let i = 0; i < headerElements.length; i++) {\n const sampledWeightWidth = (headerElements[i] as HTMLElement).getBoundingClientRect().width;\n sampledWeightWidthsArray.push(sampledWeightWidth);\n sampledColumnWidthsRef.current.weightWidths[columnsArray[i].key] = sampledWeightWidth;\n }\n // re-enable wrapping, allowing measurements to represent minimum auto-resizable column widths\n outerTableElement.classList.remove(tableStyles.disableWrapping);\n for (let i = 0; i < headerElements.length; i++) {\n const sampledMinWidth = (headerElements[i] as HTMLElement).getBoundingClientRect().width;\n sampledMinWidthsArray.push(sampledMinWidth);\n sampledColumnWidthsRef.current.minWidths[columnsArray[i].key] = sampledMinWidth;\n }\n }\n\n for (let i = 0; i < sampledMinWidthsArray.length; i++) {\n const forcedWidth = forcedColumnWidthsArray[i];\n if (forcedWidth == null) {\n let columnWidth;\n const sampledMinWidth = sampledMinWidthsArray[i];\n const minWidth = columnMinWidthsArray[i];\n const maxWidth = columnMaxWidthsArray[i];\n if (minWidth != null && minWidth >= sampledMinWidth) {\n columnWidth = minWidth;\n } else if (maxWidth != null && sampledMinWidth >= maxWidth) {\n columnWidth = maxWidth;\n } else {\n columnWidth = sampledMinWidth;\n }\n pendingTotalWidth += columnWidth;\n // replace sampled weight with min width if needed\n const columnWeight =\n minWidth != null && minWidth >= sampledWeightWidthsArray[i]\n ? minWidth\n : sampledWeightWidthsArray[i];\n sampledWeightWidthsArray[i] = columnWeight;\n totalPreferredWidth +=\n maxWidth != null && maxWidth <= columnWeight ? maxWidth : columnWeight;\n totalWorkingWeight += columnWeight;\n totalRemainingWeight += columnWeight - columnWidth;\n // newColumnWidthsArray already has content, so update in place rather than 'push'\n newColumnWidthsArray[i] = columnWidth;\n appliedColumnWidthsArray.push(columnWidth);\n } else {\n forcedTotalWidth += forcedWidth;\n pendingTotalWidth += forcedWidth;\n totalPreferredWidth += forcedWidth;\n appliedColumnWidthsArray.push(forcedWidth);\n }\n }\n // special case for initial rendering where we don't know if overall width is constrained\n if (availableWidth === -1) {\n availableWidth = totalPreferredWidth;\n }\n if (pendingTotalWidth < availableWidth) {\n _enforceContentsMinMaxRules(\n columnsArray,\n availableWidth,\n totalPreferredWidth,\n totalRemainingWeight,\n totalWorkingWeight,\n pendingTotalWidth,\n forcedTotalWidth,\n forcedColumnWidthsArray,\n sampledWeightWidthsArray,\n columnMaxWidthsArray,\n newColumnWidthsArray,\n appliedColumnWidthsArray\n );\n }\n }\n return _createColumnWidths(columnsArray, newColumnWidthsArray);\n}\n\n/**\n * Helper function to enforce all of the layout sizing rules on the Table's columns.\n */\nfunction _enforceContentsMinMaxRules<K, D, C>(\n columnsArray: TableColumn<K, D, C>[],\n availableWidth: number,\n totalPreferredWidth: number,\n totalRemainingWeight: number,\n totalWorkingWeight: number,\n appliedPendingTotalWidth: number,\n forcedTotalWidth: number,\n forcedColumnWidthsArray: (number | undefined)[],\n columnWeightsArray: number[],\n columnMaxWidthsArray: (number | undefined)[],\n newColumnWidthsArray: number[],\n appliedColumnWidthsArray: number[]\n) {\n // try and honor the weights of each column combined with the min widths, and then check that against\n // any max widths once completed. if the final result doesn't fill the space AND at least 1 max width\n // rule was enforced, repeat the process until no max rules are enforced OR the space is filled.\n let isMaxRuleApplied = true;\n while (isMaxRuleApplied) {\n isMaxRuleApplied = false;\n if (totalPreferredWidth > availableWidth) {\n _enforceConstrainedWeightRules(\n columnsArray,\n availableWidth - appliedPendingTotalWidth,\n totalRemainingWeight,\n columnWeightsArray,\n forcedColumnWidthsArray,\n newColumnWidthsArray,\n appliedColumnWidthsArray\n );\n } else {\n _enforceWeightedMinRules(\n columnsArray,\n availableWidth,\n totalWorkingWeight,\n forcedTotalWidth,\n forcedColumnWidthsArray,\n columnWeightsArray,\n newColumnWidthsArray,\n appliedColumnWidthsArray\n );\n }\n\n let pendingTotalWidth = 0;\n for (let i = 0; i < columnsArray.length; i++) {\n if (forcedColumnWidthsArray[i] == null) {\n const maxWidth = columnMaxWidthsArray[i];\n if (maxWidth != null && newColumnWidthsArray[i] > maxWidth) {\n isMaxRuleApplied = true;\n forcedColumnWidthsArray[i] = maxWidth;\n forcedTotalWidth += maxWidth;\n appliedPendingTotalWidth += maxWidth - appliedColumnWidthsArray[i];\n totalWorkingWeight -= columnWeightsArray[i];\n newColumnWidthsArray[i] = maxWidth;\n appliedColumnWidthsArray[i] = maxWidth;\n }\n }\n pendingTotalWidth += newColumnWidthsArray[i];\n }\n isMaxRuleApplied = isMaxRuleApplied && pendingTotalWidth < availableWidth;\n }\n}\n\n/**\n * Helper function to enforce constrained weights / min width rules on the Table's columns.\n */\nfunction _enforceConstrainedWeightRules<K, D, C>(\n columnsArray: TableColumn<K, D, C>[],\n initialExtraWidth: number,\n totalRemainingWeight: number,\n columnWeightsArray: number[],\n forcedColumnWidthsArray: (number | undefined)[],\n newColumnWidthsArray: number[],\n appliedColumnWidthsArray: number[]\n) {\n if (initialExtraWidth > 0) {\n let availableWidth = initialExtraWidth;\n let currentWeightTotal = totalRemainingWeight;\n for (let i = 0; i < columnsArray.length; i++) {\n if (currentWeightTotal > 0 && forcedColumnWidthsArray[i] == null) {\n const currentWeight = columnWeightsArray[i] - appliedColumnWidthsArray[i];\n const weightWidth = (currentWeight / currentWeightTotal) * availableWidth;\n newColumnWidthsArray[i] = weightWidth + appliedColumnWidthsArray[i];\n availableWidth -= weightWidth;\n currentWeightTotal -= currentWeight;\n }\n }\n }\n}\n\n/**\n * Helper function to enforce the weights / min width rules on the Table's columns.\n */\nfunction _enforceWeightedMinRules<K, D, C>(\n columnsArray: TableColumn<K, D, C>[],\n availableWidth: number,\n totalWeight: number,\n forcedTotalWidth: number,\n forcedColumnWidthsArray: (number | undefined)[],\n columnWeightsArray: number[],\n newColumnWidthsArray: number[],\n appliedColumnWidthsArray: number[]\n) {\n const pendingForcedColumnWidths = [] as (number | undefined)[];\n let isMinRuleApplied = true;\n while (isMinRuleApplied) {\n isMinRuleApplied = false;\n let currentWeightTotal = totalWeight;\n let widthDiff = availableWidth - forcedTotalWidth;\n if (widthDiff > 0) {\n for (let i = 0; i < columnsArray.length; i++) {\n if (\n currentWeightTotal > 0 &&\n forcedColumnWidthsArray[i] == null &&\n pendingForcedColumnWidths[i] == null\n ) {\n const currentWeight = columnWeightsArray[i];\n const newWidth = (currentWeight / currentWeightTotal) * widthDiff;\n\n // if calculated width breaks min width requirement, force min width as needed\n const minWidth = appliedColumnWidthsArray[i];\n if (newWidth < minWidth) {\n // the preferred weighted size conflicts with the min size, so set pending to min size\n pendingForcedColumnWidths[i] = minWidth;\n forcedTotalWidth += minWidth;\n newColumnWidthsArray[i] = minWidth;\n isMinRuleApplied = true;\n totalWeight -= currentWeight;\n break;\n }\n newColumnWidthsArray[i] = newWidth;\n widthDiff -= newWidth;\n currentWeightTotal -= currentWeight;\n }\n }\n }\n }\n}\n\n/**\n * Helper function to create a ColumnWidths object from a TableColumn array and a widths array.\n */\nfunction _createColumnWidths<K, D, C extends string>(\n columnsArray: TableColumn<K, D, C>[],\n columnWidthsArray: number[]\n) {\n const columnWidths = {} as ColumnWidths<C>;\n for (let i = 0; i < columnsArray.length; i++) {\n columnWidths[columnsArray[i].key] = columnWidthsArray[i];\n }\n return columnWidths;\n}\n\n/**\n * Helper method to apply the given sizing object to the currently rendered Table\n * and column elements.\n */\nfunction _udpateTableSizing(\n root: HTMLDivElement,\n tableId: string,\n widthsArray: number[],\n totalWidth: number\n) {\n const tableCols = root.querySelectorAll(`[data-oj-table-col='${tableId}']`);\n for (let i = 0; i < tableCols.length; i++) {\n const tableCol = tableCols[i] as HTMLTableColElement;\n tableCol.style.width = `${widthsArray[i]}px`;\n }\n const innerTableElem = root.querySelectorAll(\n `[data-oj-table-inner-table='${tableId}']`\n )[0] as HTMLElement;\n innerTableElem.style.width = `${totalWidth}px`;\n innerTableElem.style.tableLayout = 'fixed';\n}\n","/**\n * @license\n * Copyright (c) %FIRST_YEAR% %CURRENT_YEAR%, Oracle and/or its affiliates.\n * The Universal Permissive License (UPL), Version 1.0\n * as shown at https://oss.oracle.com/licenses/upl/\n * @ignore\n */\nimport {\n useImperativeHandle,\n useCallback,\n useMemo,\n useRef,\n useLayoutEffect,\n useState\n} from 'preact/hooks';\nimport { forwardRef, ForwardedRef } from 'preact/compat';\nimport { JSXInternal } from 'preact/src/jsx';\nimport { classNames } from '../utils/UNSAFE_classNames';\nimport { useId } from '../hooks/UNSAFE_useId';\nimport { TabbableModeContext } from '../hooks/UNSAFE_useTabbableMode';\nimport { useUser } from '../hooks/UNSAFE_useUser';\nimport {\n Cell,\n Column,\n ColumnWidths,\n TableHorizontalScrollPosition,\n TableVerticalScrollPosition\n} from '../UNSAFE_TableView';\nimport { TableColGroup } from './TableColGroup';\nimport { TableBody } from './TableBody';\nimport { TableHeader } from './TableHeader';\nimport { TableFooter } from './TableFooter';\nimport { TableDragIndicator } from './TableDragIndicator';\nimport { FocusTracker } from '../PRIVATE_FocusTracker';\nimport { Props, TableViewHandle } from '../UNSAFE_TableView';\nimport { useInteractionManager } from './hooks/useInteractionManager';\nimport { getLayoutColumnWidths } from './utils/TableLayoutUtils';\nimport {\n getViewportConfig,\n getHorizontalScrollPosition,\n setHorizontalScrollPosition,\n getVerticalScrollPosition,\n setVerticalScrollPosition,\n updateStickyColumns\n} from './utils/TableScrollUtils';\nimport { innerTableStyles, focusTrackerStyles } from './themes/Table.css';\nimport { TableVariantOptions, tableStyles } from './themes/TableStyles.css';\nimport { TableRedwoodTheme } from './themes/redwood/TableTheme';\nimport { useComponentTheme } from '../hooks/UNSAFE_useComponentTheme';\nimport { useResizeObserver } from '../hooks/UNSAFE_useResizeObserver';\nimport { useTestId } from '../hooks/UNSAFE_useTestId';\n\nexport type TableColumn<K, D, C> = {\n key: C;\n value: Column<K, D, C>;\n};\n\nexport type SampledWidths<C extends string> = {\n minWidths: ColumnWidths<C>;\n weightWidths: ColumnWidths<C>;\n};\n\nexport type SizingInfo =\n | {\n isInitialRender: true;\n boxWidth?: number;\n contentWidth?: number;\n boxHeight?: number;\n contentHeight?: number;\n defaultScrollbarWidth?: number;\n defaultScrollbarHeight?: number;\n }\n | {\n isInitialRender: false;\n boxWidth: number;\n contentWidth: number;\n boxHeight: number;\n contentHeight: number;\n defaultScrollbarWidth: number;\n defaultScrollbarHeight: number;\n };\n\ntype LayoutInfo =\n | {\n isLayoutRequired: true;\n columnWidthsArray?: number[];\n }\n | {\n isLayoutRequired: false;\n columnWidthsArray: number[];\n };\n\nexport type ColumnResizeInfo<C> =\n | {\n isResizing: false;\n isResizeHover: boolean;\n key?: C;\n startX?: never;\n delta?: never;\n fullColumnWidths?: never;\n ignoreClick: boolean;\n }\n | {\n isResizing: true;\n isResizeHover: boolean;\n key: C;\n startX: number;\n delta: number;\n fullColumnWidths: number[];\n ignoreClick: boolean;\n };\n\nexport type ScrollDetail<K, C> = {\n cell: Cell<K, C>;\n locationX?: 'inView' | 'start' | 'end';\n locationY?: 'inView' | 'top' | 'bottom';\n};\n\nconst _defaultSelected = {\n row: { all: false, keys: new Set() },\n column: { all: false, keys: new Set() }\n};\n\n/**\n * Component that renders items as a flat table.\n * In order to maximize performance, only items that are visible in the viewport are rendered.\n */\nexport const Table = forwardRef(function Table<K extends string | number, D, C extends string>(\n {\n 'aria-label': ariaLabel,\n 'aria-labelledby': ariaLabelledBy,\n getAccessibleRowHeaders,\n columns,\n columnOrder,\n columnWidths,\n layout = 'contents',\n data,\n getRowKey,\n hasMore = false,\n onLoadMore = () => {},\n currentCellOverride,\n onPersistCurrentCell,\n currentRowVariant,\n gridlines,\n selectionMode,\n selected = _defaultSelected as NonNullable<Props<K, D, C>['selected']>,\n onSelectionChange,\n onRowAction,\n sortCriterion,\n onSortCriterionChange,\n horizontalScrollPositionOverride,\n verticalScrollPositionOverride,\n columnResizingIndicator,\n onColumnResizing,\n onColumnResize,\n noDataRenderer,\n testId\n }: Props<K, D, C>,\n ref?: ForwardedRef<TableViewHandle<K, C>>\n) {\n const tableId = useId();\n const outerTableRef = useRef<HTMLDivElement>(null);\n const sizingInfoRef = useRef<SizingInfo>({ isInitialRender: true });\n const [appliedColumnWidths, setAppliedColumnWidths] = useState<ColumnWidths<C>>();\n const [contentHeight, setContentHeight] = useState<number>();\n const isVerticalScrollRef = useRef<boolean>(false);\n const sampledColumnWidthsRef = useRef<SampledWidths<C>>();\n const horizontalScrollPositionOverrideRef = useRef<TableHorizontalScrollPosition<C>>();\n const verticalScrollPositionOverrideRef = useRef<TableVerticalScrollPosition<K>>();\n\n const [stickyEdgesState, setStickyEdgesState] = useState<{ start?: number; end?: number }>({\n start: undefined,\n end: undefined\n });\n\n const resizeInfoRef = useRef<ColumnResizeInfo<C>>({\n isResizing: false,\n isResizeHover: false,\n ignoreClick: false\n });\n\n const { direction } = useUser();\n const isRtl = direction === 'rtl';\n const testIdProps = useTestId(testId);\n\n const columnsArray = useMemo(() => {\n const newColumnsArray = [] as Array<TableColumn<K, D, C>>;\n if (columnOrder != null) {\n for (const key of columnOrder) {\n if (columns[key] != null) {\n newColumnsArray.push({\n key: key,\n value: columns[key]\n });\n }\n }\n } else {\n for (const [key, value] of Object.entries(columns)) {\n newColumnsArray.push({\n key: key as C,\n value: value as Column<K, D, C>\n });\n }\n }\n return newColumnsArray;\n }, [columnOrder, columns]);\n\n let isLayoutRequired = false;\n const columnWidthsArray = [];\n if (appliedColumnWidths != null) {\n for (let i = 0; i < columnsArray.length; i++) {\n const key = columnsArray[i].key;\n const appliedWidth = appliedColumnWidths[key];\n const staticWidth = columnWidths != null ? columnWidths[key] : undefined;\n if (appliedWidth == null || (staticWidth != null && staticWidth !== appliedWidth)) {\n isLayoutRequired = true;\n break;\n }\n columnWidthsArray.push(appliedWidth);\n }\n } else {\n isLayoutRequired = true;\n }\n const layoutInfo = {\n isLayoutRequired: isLayoutRequired,\n columnWidthsArray: isLayoutRequired ? undefined : columnWidthsArray\n } as LayoutInfo;\n\n useImperativeHandle(\n ref!,\n () => {\n return {\n getHorizontalScrollPosition: () => {\n if (layoutInfo.isLayoutRequired) {\n return {};\n }\n return getHorizontalScrollPosition(\n outerTableRef.current!,\n columnsArray,\n layoutInfo.columnWidthsArray\n );\n },\n getVerticalScrollPosition: () => {\n if (layoutInfo.isLayoutRequired) {\n return {};\n }\n return getVerticalScrollPosition(outerTableRef.current!, tableId);\n }\n };\n },\n [tableId, columnsArray, layoutInfo.isLayoutRequired, layoutInfo.columnWidthsArray]\n );\n\n const cellHasRenderer = useCallback(\n (cell: Cell<K, C>) => {\n let hasRenderer = false;\n if (cell.type === 'noData') {\n hasRenderer = noDataRenderer != null;\n } else {\n for (const column of columnsArray) {\n if (column.key === cell.columnKey) {\n if (cell.type === 'data') {\n hasRenderer = column.value.renderer != null;\n } else if (cell.type === 'header') {\n hasRenderer = column.value.headerRenderer != null;\n } else if (cell.type === 'footer') {\n hasRenderer = column.value.footerRenderer != null;\n }\n break;\n }\n }\n }\n return hasRenderer;\n },\n [columnsArray, noDataRenderer]\n );\n\n const {\n interactionManagerProps,\n onTableSelectionChange,\n isShowFocusRing,\n isTabbableMode,\n currentCell,\n onStartFocusTracking,\n onFocusStartEdge,\n onFocusEndEdge\n } = useInteractionManager({\n outerTableRef,\n tableId,\n data,\n isRtl,\n columnsArray,\n appliedColumnWidths: appliedColumnWidths!,\n sizingInfoRef,\n resizeInfoRef,\n stickyEdgesState,\n setStickyEdgesState,\n cellHasRenderer,\n fullColumnWidths: layoutInfo.isLayoutRequired ? undefined : layoutInfo.columnWidthsArray,\n onColumnResizing,\n onColumnResize,\n currentCellOverride,\n onPersistCurrentCell,\n selectionMode,\n selected,\n onSelectionChange,\n onRowAction,\n sortCriterion,\n onSortCriterionChange\n });\n\n // ensure sampled column sizes are cleared if 'columns' is updated\n useLayoutEffect(() => {\n sampledColumnWidthsRef.current = undefined;\n setAppliedColumnWidths(undefined);\n }, [columns]);\n\n // setup sizing calculation updates for subsequent renders\n useLayoutEffect(() => {\n const rootElement = outerTableRef.current;\n if (\n rootElement != null &&\n !sizingInfoRef.current.isInitialRender &&\n layoutInfo.isLayoutRequired &&\n sizingInfoRef.current.defaultScrollbarWidth != null\n ) {\n const totalWidth =\n layout === 'fixed'\n ? sizingInfoRef.current.boxWidth - sizingInfoRef.current.defaultScrollbarWidth\n : -1;\n const newColumnWidths = getLayoutColumnWidths(\n rootElement,\n sizingInfoRef.current.defaultScrollbarWidth,\n tableId,\n layout === 'fixed',\n sampledColumnWidthsRef,\n totalWidth,\n columnsArray,\n columnWidths\n );\n setAppliedColumnWidths(newColumnWidths);\n }\n }, [tableId, columnsArray, columnWidths, layout, layoutInfo.isLayoutRequired]);\n\n // setup component resize-based sizing calculation updates\n const resizeObserverCallbackRef = useRef<(entry: ResizeObserverEntry) => void>();\n resizeObserverCallbackRef.current = (entry: ResizeObserverEntry) => {\n if (outerTableRef.current != null) {\n let availableWidth;\n let scrollbarWidth;\n const newContentWidth = entry.contentBoxSize[0].inlineSize;\n const newContentHeight = entry.contentBoxSize[0].blockSize;\n const newBoxWidth = entry.borderBoxSize[0].inlineSize;\n const newBoxHeight = entry.borderBoxSize[0].blockSize;\n\n if (newContentWidth !== 0 || newBoxWidth !== 0) {\n if (sizingInfoRef.current.isInitialRender) {\n scrollbarWidth = newBoxWidth - newContentWidth;\n availableWidth = layout === 'fixed' ? newContentWidth : -1;\n sizingInfoRef.current = {\n isInitialRender: false,\n contentWidth: newContentWidth,\n boxWidth: newBoxWidth,\n contentHeight: newContentHeight,\n boxHeight: newBoxHeight,\n defaultScrollbarWidth: scrollbarWidth,\n defaultScrollbarHeight: newBoxHeight - newContentHeight\n };\n } else {\n scrollbarWidth = sizingInfoRef.current.defaultScrollbarWidth;\n availableWidth = isVerticalScrollRef.current\n ? newContentWidth\n : newBoxWidth - scrollbarWidth;\n sizingInfoRef.current.contentWidth = newContentWidth;\n sizingInfoRef.current.boxWidth = newBoxWidth;\n sizingInfoRef.current.contentHeight = newContentHeight;\n sizingInfoRef.current.boxHeight = newBoxHeight;\n }\n const newColumnWidths = getLayoutColumnWidths(\n outerTableRef.current,\n scrollbarWidth,\n tableId,\n layout === 'fixed',\n sampledColumnWidthsRef,\n availableWidth,\n columnsArray,\n columnWidths\n );\n setAppliedColumnWidths(newColumnWidths);\n if (contentHeight !== newContentHeight) {\n setContentHeight(newContentHeight);\n }\n }\n }\n };\n // ensure resize observer callback function is static to avoid hook re-subscribing each render\n const staticResizeObserverCallback = useCallback((entry: ResizeObserverEntry) => {\n resizeObserverCallbackRef.current!(entry);\n }, []);\n useResizeObserver(outerTableRef, staticResizeObserverCallback);\n\n // after each additional render, update vertical scrollbar state if necessary\n useLayoutEffect(() => {\n const scrollbarWidth = sizingInfoRef.current.defaultScrollbarWidth;\n if (\n outerTableRef.current != null &&\n !sizingInfoRef.current.isInitialRender &&\n contentHeight != null &&\n scrollbarWidth != null\n ) {\n const innerTable = outerTableRef.current.querySelector(\n `[data-oj-table-inner-table='${tableId}']`\n );\n if (innerTable != null) {\n const hasVerticalOverflow = contentHeight < innerTable.getBoundingClientRect().height;\n isVerticalScrollRef.current = hasVerticalOverflow;\n if (hasVerticalOverflow) {\n outerTableRef.current.classList.remove(tableStyles.noVerticalScroll);\n outerTableRef.current.classList.add(tableStyles.verticalScroll);\n outerTableRef.current.style.paddingInlineEnd = '';\n } else {\n outerTableRef.current.classList.remove(tableStyles.verticalScroll);\n outerTableRef.current.classList.add(tableStyles.noVerticalScroll);\n outerTableRef.current.style.paddingInlineEnd = `${scrollbarWidth}px`;\n }\n }\n }\n }, [tableId, contentHeight, data, noDataRenderer, appliedColumnWidths]);\n\n // update horizontal scroll position if a new value is provided\n useLayoutEffect(() => {\n if (\n horizontalScrollPositionOverrideRef.current !== horizontalScrollPositionOverride &&\n !layoutInfo.isLayoutRequired\n ) {\n setHorizontalScrollPosition(\n outerTableRef.current!,\n columnsArray,\n layoutInfo.columnWidthsArray,\n isRtl,\n horizontalScrollPositionOverride\n );\n horizontalScrollPositionOverrideRef.current = horizontalScrollPositionOverride;\n }\n }, [\n tableId,\n columnsArray,\n layoutInfo.isLayoutRequired,\n layoutInfo.columnWidthsArray,\n horizontalScrollPositionOverride,\n isRtl\n ]);\n\n // update vertical scroll position if a new value is provided\n useLayoutEffect(() => {\n if (\n verticalScrollPositionOverrideRef.current !== verticalScrollPositionOverride &&\n !layoutInfo.isLayoutRequired\n ) {\n setVerticalScrollPosition(outerTableRef.current!, tableId, verticalScrollPositionOverride);\n verticalScrollPositionOverrideRef.current = verticalScrollPositionOverride;\n }\n }, [tableId, layoutInfo.isLayoutRequired, verticalScrollPositionOverride]);\n\n // ensure sticky columns are updated appropriately\n useLayoutEffect(() => {\n if (outerTableRef.current != null && !layoutInfo.isLayoutRequired) {\n updateStickyColumns(\n outerTableRef.current,\n tableId,\n isRtl,\n columnsArray,\n layoutInfo.columnWidthsArray,\n stickyEdgesState,\n setStickyEdgesState\n );\n }\n }, [\n tableId,\n columnsArray,\n layoutInfo.isLayoutRequired,\n layoutInfo.columnWidthsArray,\n isRtl,\n stickyEdgesState\n ]);\n\n // initialize base Table style classes\n const { classes: themeClasses } = useComponentTheme<TableVariantOptions>(TableRedwoodTheme, {\n forceScroll: sizingInfoRef.current.isInitialRender ? 'isForceScroll' : 'notForceScroll',\n verticalScroll: isVerticalScrollRef.current ? 'isVerticalScroll' : 'notVerticalScroll',\n disableWrapping:\n layout === 'contents' && sampledColumnWidthsRef.current === undefined\n ? 'isDisableWrapping'\n : 'notDisableWrapping'\n });\n\n const classes = classNames([themeClasses]);\n const tableClasses = classNames([innerTableStyles.base]);\n const focusTrackerClasses = classNames([focusTrackerStyles.base]);\n\n // aria-rowcount includes header and footer rows\n const hasFooters = columnsArray.some((column: TableColumn<K, D, C>) => {\n return column.value.footerRenderer != null || column.value.footerText != null;\n });\n const ariaRowCount = data == null ? undefined : hasMore ? -1 : data.length + (hasFooters ? 2 : 1);\n\n const startStickyEdge = stickyEdgesState.start;\n const endStickyEdge = stickyEdgesState.end;\n\n const hasVerticalGridlines = gridlines?.vertical === 'visible';\n const hasHorizontalGridlines = gridlines?.horizontal !== 'hidden';\n\n const isRowSelectionEnabled =\n selectionMode?.row === 'single' || selectionMode?.row === 'multiple';\n const isColumnSelectionEnabled =\n selectionMode?.column === 'single' || selectionMode?.column === 'multiple';\n\n const getTableBodyProps = () => {\n return {\n tableId: tableId,\n data: data,\n columnsArray: columnsArray,\n getAccessibleRowHeaders: getAccessibleRowHeaders,\n hasVerticalGridlines: hasVerticalGridlines,\n hasHorizontalGridlines: hasHorizontalGridlines,\n selected: selected,\n isRowSelectionEnabled: isRowSelectionEnabled,\n isSingleRowSelectionEnabled: selectionMode?.row === 'single',\n currentCell: currentCell,\n currentRowVariant: currentRowVariant,\n isShowFocusRing: isShowFocusRing,\n getRowKey: getRowKey,\n hasMore: hasMore,\n onLoadMore: onLoadMore,\n noDataRenderer: noDataRenderer,\n viewportConfig: getViewportConfig(outerTableRef),\n onSelectionChange: onTableSelectionChange,\n startStickyEdge: startStickyEdge,\n endStickyEdge: endStickyEdge,\n isRtl: isRtl\n };\n };\n\n const getTableColGroupProps = () => {\n let columnWidthsArray;\n if (!layoutInfo.isLayoutRequired) {\n columnWidthsArray = layoutInfo.columnWidthsArray;\n } else {\n columnWidthsArray = [];\n for (let i = 0; i < columnsArray.length; i++) {\n columnWidthsArray[i] = undefined;\n }\n }\n return {\n tableId: tableId,\n columnWidthsArray: columnWidthsArray\n };\n };\n\n const getTableHeaderProps = () => {\n return {\n tableId: tableId,\n columnsArray: columnsArray,\n hasVerticalGridlines: hasVerticalGridlines,\n focusedKey: currentCell?.type === 'header' ? currentCell.columnKey : undefined,\n selectedColumnKeys: selected.column,\n selectedRowKeys: selected.row,\n isColumnSelectionEnabled: isColumnSelectionEnabled,\n isRowSelectionEnabled: isRowSelectionEnabled,\n onSelectionChange: onTableSelectionChange,\n sortCriterion: sortCriterion,\n onSortCriterionChange: onSortCriterionChange,\n isShowFocusRing: isShowFocusRing,\n startStickyEdge: startStickyEdge,\n endStickyEdge: endStickyEdge,\n isResizeHover: resizeInfoRef.current.isResizeHover,\n isRtl: isRtl\n };\n };\n\n const getTableFooterProps = () => {\n return {\n tableId: tableId,\n isRendered: hasFooters,\n columnsArray: columnsArray,\n hasVerticalGridlines: hasVerticalGridlines,\n focusedKey: currentCell?.type === 'footer' ? currentCell.columnKey : undefined,\n selectedKeys: selected.column,\n isColumnSelectionEnabled: isColumnSelectionEnabled,\n isShowFocusRing: isShowFocusRing,\n startStickyEdge: startStickyEdge,\n endStickyEdge: endStickyEdge,\n isRtl: isRtl\n };\n };\n\n const getTableDragIndicator = () => {\n if (columnResizingIndicator != null && !layoutInfo.isLayoutRequired) {\n let position = 0;\n for (let i = 0; i < columnsArray.length; i++) {\n position += layoutInfo.columnWidthsArray[i];\n if (columnsArray[i].key === columnResizingIndicator.key) {\n if (columnResizingIndicator.delta != null) {\n position += columnResizingIndicator.delta;\n }\n break;\n }\n }\n return <TableDragIndicator position={position} isRtl={isRtl} />;\n }\n return undefined;\n };\n\n const getTableStyle = () => {\n let widthString = '';\n let heightString = '';\n if (!layoutInfo.isLayoutRequired) {\n let totalWidth = 0;\n for (let i = 0; i < layoutInfo.columnWidthsArray.length; i++) {\n totalWidth += layoutInfo.columnWidthsArray[i];\n }\n widthString = `width: ${totalWidth}px; table-layout: fixed;`;\n } else {\n // shrink table down as much as possible when a 'contents' layout is required, otherwise\n // the sampled column widths will not reflect the true minimum sizes with line-clamping\n widthString = layout !== 'contents' ? 'width: 100%;' : 'width: 1px';\n }\n if (contentHeight != null) {\n heightString = data == null || data.length === 0 ? `min-height: ${contentHeight}px;` : '';\n }\n return `${widthString}${heightString}`;\n };\n\n return (\n <div\n {...testIdProps}\n ref={outerTableRef}\n aria-colcount={columnsArray.length}\n aria-label={ariaLabel}\n aria-labelledby={ariaLabelledBy}\n aria-rowcount={ariaRowCount}\n {...(selectionMode?.column === 'multiple' || selectionMode?.row === 'multiple'\n ? { 'aria-multiselectable': true }\n : {})}\n class={classes}\n role={'grid'}\n {...interactionManagerProps}>\n <FocusTracker\n styleClass={focusTrackerClasses}\n isDisabled={!isTabbableMode}\n onFocusStartEdge={onFocusStartEdge}\n onFocusEndEdge={onFocusEndEdge}\n onStartTracking={onStartFocusTracking}>\n <TabbableModeContext.Provider value={{ isTabbable: isTabbableMode }}>\n <table\n class={tableClasses}\n role={'presentation'}\n style={getTableStyle()}\n data-oj-table-inner-table={tableId}>\n <TableColGroup {...getTableColGroupProps()} />\n <TableHeader {...getTableHeaderProps()} />\n <TableBody {...getTableBodyProps()} />\n <TableFooter {...getTableFooterProps()} />\n </table>\n </TabbableModeContext.Provider>\n {getTableDragIndicator()}\n </FocusTracker>\n </div>\n );\n}) as <K extends string | number, D, C extends string>(\n p: Props<K, D, C> & { ref?: ForwardedRef<TableViewHandle<K, C>> }\n) => JSXInternal.Element;\n"],"names":["_jsx","useState","useEffect","classNames","tableSkeletonCellStyles","LOADMORE_STYLE_CLASS","tableSkeletonBarContainerStyles","Skeleton","Text","useComponentTheme","TableCellRedwoodTheme","useId","useTranslationBundle","useInteractionStyle","TableRowRedwoodTheme","Selector","containsKey","memo","isSameKey","tableRowStyles","TableNoDataRedwoodTheme","useRef","collectionStyles","useCallback","LoadMoreCollection","TableHeaderCellRedwoodTheme","SelectorAll","EmbeddedIconButton","SortAscendingIcon","SortDescendingIcon","SortDefaultIcon","tableHeaderCellTextStyles","_jsxs","tableHeaderSortContainerStyles","tableHeaderRowStyles","tableHeaderRowContainerStyles","TableFooterCellRedwoodTheme","tableFooterRowStyles","tableFooterRowContainerStyles","tableDragIndicatorStyles","keyExtractor","findElementByKey","useMemo","getElementContainsFunc","handleEnterActionableMode","allTabbableElements","handleWrapActionableFocus","getActiveElement","getBodyElement","isTabbableElement","addKey","removeKey","getClientHints","getIsSelectionPending","mergeProps","tableStyles","forwardRef","useUser","useTestId","useImperativeHandle","useLayoutEffect","useResizeObserver","TableRedwoodTheme","innerTableStyles","focusTrackerStyles","FocusTracker","TabbableModeContext"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAgBA;;AAEG;SACa,aAAa,CAAC,EAAE,OAAO,EAAE,iBAAiB,EAAsB,EAAA;AAC9E,IAAA,MAAM,WAAW,GAAG,CAAC,WAAoB,KAAI;AAC3C,QAAA,OAAO,WAAW,IAAI,IAAI,GAAG,EAAE,GAAG,CAAU,OAAA,EAAA,WAAW,KAAK,CAAC;AAC/D,KAAC,CAAC;IAEF,QACEA,uCACG,iBAAiB,CAAC,GAAG,CAAC,CAAC,WAAoB,KAAI;YAC9C,OAAOA,cAAA,CAAA,KAAA,EAAA,EAAK,KAAK,EAAE,WAAW,CAAC,WAAW,CAAC,EAAA,mBAAA,EAAqB,OAAO,EAAA,CAAI,CAAC;SAC7E,CAAC,EACO,CAAA,EACX;AACJ;;ACHA;;AAEI;AACJ,MAAM,WAAW,GAAG,EAAE,CAAC;AAEvB;;;;AAII;AACE,SAAU,gBAAgB,CAAC,EAAE,OAAO,EAAE,SAAS,EAAE,YAAY,GAAG,CAAC,EAAoB,EAAA;IACzF,MAAM,CAAC,SAAS,EAAE,YAAY,CAAC,GAAGC,cAAQ,CAAC,KAAK,CAAC,CAAC;IAElDC,eAAS,CAAC,MAAK;QACb,UAAU,CAAC,MAAK;YACd,YAAY,CAAC,IAAI,CAAC,CAAC;SACpB,EAAE,WAAW,CAAC,CAAC;KACjB,EAAE,EAAE,CAAC,CAAC;IAEP,MAAM,WAAW,GAAGC,qBAAU,CAAC,CAACC,sDAAuB,CAAC,IAAI,CAAC,CAAC,CAAC;AAE/D,IAAA,QACEJ,cAAA,CAAA,IAAA,EAAA,EAAI,KAAK,EAAEK,uCAAoB,EAAA,QAAA,EAC5B,SAAS,IACRL,cAAA,CAAA,IAAA,EAAA,EAAI,KAAK,EAAE,WAAW,EAAE,OAAO,EAAE,OAAO,EAAE,IAAI,EAAC,cAAc,EAAA,QAAA,EAC1D,CAAC,GAAG,KAAK,CAAC,YAAY,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,QAAQ,MACrCA,cAAK,CAAA,KAAA,EAAA,EAAA,KAAK,EAAEM,8DAA+B,CAAC,IAAI,EAC9C,QAAA,EAAAN,cAAA,CAACO,iBAAQ,EAAC,EAAA,MAAM,EAAC,IAAI,EAAG,CAAA,EAAA,CACpB,CACP,CAAC,GACC,IACH,IAAI,EAAA,EAT4B,SAAS,CAU1C,EACL;AACJ;;ACXA,SAAS,oBAAoB,CAAU,EAAE,OAAO,EAAE,KAAK,EAAiC,EAAA;AACtF,IAAA,OAAO,KAAK,IAAI,IAAI,IAClBP,cAAC,CAAAQ,SAAI,IAAC,UAAU,EAAC,UAAU,EAAC,OAAO,EAAC,SAAS,EAAC,IAAI,EAAC,IAAI,EAAA,QAAA,EACpD,MAAM,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,GAClB,IACL,IAAI,CAAC;AACX,CAAC;AAED;;AAEG;AACa,SAAA,SAAS,CAAU,EACjC,OAAO,EACP,OAAO,EACP,KAAK,EACL,SAAS,EACT,WAAW,EACX,MAAM,EACN,QAAQ,EACR,eAAe,EACf,kBAAkB,EAClB,oBAAoB,EACpB,sBAAsB,EACtB,aAAa,EACb,qBAAqB,EACrB,gBAAgB,EAChB,wBAAwB,EACxB,eAAe,EACf,WAAW,EACX,YAAY,GAAG,MAAM,EACrB,QAAQ,GAAG,oBAAoB,EAC/B,gBAAgB,EAChB,qBAAqB,EACrB,oBAAoB,EACpB,OAAO,EACP,gBAAgB,EAChB,eAAe,EACf,qBAAqB,EACrB,iBAAiB,EACjB,eAAe,EACf,KAAK,EACmB,EAAA;AACxB,IAAA,MAAM,WAAW,GAAG,QAAQ,KAAK,oBAAoB,CAAC;IACtD,MAAM,EAAE,OAAO,EAAE,YAAY,EAAE,GAAGC,mCAAiB,CACjDC,iEAAqB,EACrB;QACE,eAAe,EAAE,CAAC,WAAW,GAAG,mBAAmB,GAAG,oBAAoB;QAC1E,QAAQ,EAAE,QAAQ,KAAK,CAAC,GAAG,YAAY,GAAG,aAAa;QACvD,OAAO,EAAE,eAAe,GAAG,WAAW,GAAG,YAAY;QACrD,WAAW,EAAE,WAAW,KAAK,CAAC,GAAG,eAAe,GAAG,gBAAgB;QACnE,UAAU,EAAE,kBAAkB,GAAG,cAAc,GAAG,eAAe;QACjE,eAAe,EACb,EAAE,oBAAoB,KAAK,aAAa,IAAI,qBAAqB,CAAC,CAAC;AACnE,aAAC,CAAC,sBAAsB,IAAI,QAAQ,KAAK,CAAC,CAAC;AACzC,cAAE,mBAAmB;AACrB,cAAE,oBAAoB;AAC1B,QAAA,kBAAkB,EAChB,eAAe,IAAI,EAAE,CAAC,oBAAoB,IAAI,aAAa,KAAK,sBAAsB,CAAC;AACrF,cAAE,sBAAsB;AACxB,cAAE,uBAAuB;AAC7B,QAAA,iBAAiB,EACf,EAAE,wBAAwB,IAAI,gBAAgB,CAAC;AAC/C,aAAC,CAAC,oBAAoB,IAAI,WAAW,KAAK,CAAC,CAAC;AAC1C,cAAE,qBAAqB;AACvB,cAAE,sBAAsB;AAC5B,QAAA,eAAe,EACb,kBAAkB,IAAI,CAAC,gBAAgB,GAAG,mBAAmB,GAAG,oBAAoB;QACtF,YAAY,EAAE,oBAAoB,GAAG,gBAAgB,GAAG,iBAAiB;QACzE,cAAc,EAAE,sBAAsB,GAAG,kBAAkB,GAAG,mBAAmB;QACjF,kBAAkB,EAAE,oBAAoB,GAAG,sBAAsB,GAAG,uBAAuB;QAC3F,aAAa,EAAE,qBAAqB,GAAG,iBAAiB,GAAG,kBAAkB;QAC7E,WAAW,EAAE,aAAa,GAAG,eAAe,GAAG,gBAAgB;AAC/D,QAAA,mBAAmB,EAAE,qBAAqB;AACxC,cAAE,uBAAuB;AACzB,cAAE,wBAAwB;QAC5B,cAAc,EAAE,gBAAgB,GAAG,kBAAkB,GAAG,mBAAmB;AAC3E,QAAA,sBAAsB,EAAE,wBAAwB;AAC9C,cAAE,0BAA0B;AAC5B,cAAE,2BAA2B;QAC/B,iBAAiB,EAAE,YAAY,KAAK,OAAO,GAAG,qBAAqB,GAAG,sBAAsB;QAC5F,eAAe,EAAE,YAAY,KAAK,KAAK,GAAG,mBAAmB,GAAG,oBAAoB;QACpF,eAAe,EAAE,iBAAiB,GAAG,mBAAmB,GAAG,oBAAoB;QAC/E,aAAa,EAAE,eAAe,GAAG,iBAAiB,GAAG,kBAAkB;QACvE,YAAY,EAAE,OAAO,KAAK,WAAW,GAAG,gBAAgB,GAAG,iBAAiB;QAC5E,aAAa,EAAE,eAAe,GAAG,iBAAiB,GAAG,kBAAkB;QACvE,MAAM,EAAE,gBAAgB,GAAG,UAAU,GAAG,WAAW;QACnD,KAAK,EAAE,eAAe,GAAG,SAAS,GAAG,UAAU;QAC/C,WAAW,EAAE,qBAAqB,GAAG,eAAe,GAAG,gBAAgB;QACvE,GAAG,EAAE,KAAK,GAAG,OAAO,GAAG,QAAQ;AAChC,KAAA,CACF,CAAC;IAEF,MAAM,WAAW,GAAGP,qBAAU,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC;AAE/C,IAAA,MAAM,iBAAiB,GAAG;AACxB,QAAA,OAAO,EAAE,OAAO;AAChB,QAAA,MAAM,EAAE,MAAM;AACd,QAAA,KAAK,EAAE,KAAK;AACZ,QAAA,SAAS,EAAE,SAAS;AACpB,QAAA,QAAQ,EAAE,gBAAgB;KAC3B,CAAC;IAEF,QACEH,cACiB,CAAA,IAAA,EAAA,EAAA,eAAA,EAAA,WAAW,GAAG,CAAC,EAC9B,KAAK,EAAE,WAAW,EAClB,EAAE,EAAEW,WAAK,EAAE,EACX,QAAQ,EAAE,CAAC,CAAC,EACZ,IAAI,EAAE,WAAW,GAAG,WAAW,GAAG,UAAU,EACzB,mBAAA,EAAA,MAAM,EACL,oBAAA,EAAA,SAAS,EACJ,yBAAA,EAAA,OAAO,EACP,yBAAA,EAAA,OAAO,EAC5B,IAAC,OAAO,SAAS,KAAK,QAAQ,IAAI,EAAE,yBAAyB,EAAE,QAAQ,EAAE,CAAC,EAAA,QAAA,EAC7E,QAAQ,CAAC,iBAAiB,CAAC,EACzB,CAAA,EACL;AACJ;;ACvHA;;AAEG;AACH,SAAS,QAAQ,CAAU,EACzB,OAAO,EACP,MAAM,EACN,OAAO,EACP,QAAQ,EACR,UAAU,EACV,YAAY,EACZ,mBAAmB,EACnB,oBAAoB,EACpB,sBAAsB,EACtB,UAAU,EACV,kBAAkB,EAClB,qBAAqB,EACrB,2BAA2B,EAC3B,eAAe,GAAG,EAAE,GAAG,EAAE,KAAK,EAAE,IAAI,EAAE,IAAI,GAAG,EAAK,EAAE,EACpD,kBAAkB,EAClB,kBAAkB,GAAG,EAAE,GAAG,EAAE,KAAK,EAAE,IAAI,EAAE,IAAI,GAAG,EAAK,EAAE,EACvD,OAAO,EACP,iBAAiB,EACjB,eAAe,EACf,aAAa,EACb,KAAK,EACkB,EAAA;AACvB,IAAA,MAAM,YAAY,GAAGC,yCAAoB,CAAa,0BAA0B,CAAC,CAAC;AAClF,IAAA,MAAM,EAAE,gBAAgB,EAAE,gBAAgB,EAAE,eAAe,EAAE,qBAAqB,EAAE,GAClFC,uCAAmB,EAAE,CAAC;IAExB,MAAM,EAAE,OAAO,EAAE,YAAY,EAAE,GAAGJ,mCAAiB,CACjDK,+DAAoB,EACpB,EAAE,OAAO,EAAE,UAAU,GAAG,WAAW,GAAG,YAAY,EAAE,CACrD,CAAC;IAEF,MAAM,OAAO,GAAGX,qBAAU,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC;IAE3C,MAAM,iBAAiB,GAAG,CAAC,QAAQ,GAAG,CAAC,EAAE,QAAQ,EAAE,CAAC;AACpD,IAAA,MAAM,uBAAuB,GAAG,CAAC,MAA0B,KAAI;AAC7D,QAAA,IAAI,iBAAiB,IAAI,IAAI,EAAE;YAC7B,iBAAiB,CACf,EAAE,KAAK,EAAE,EAAE,GAAG,EAAE,MAAM,CAAC,KAAK,EAAE,MAAM,EAAE,kBAAkB,EAAE,EAAE,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,EACnF,KAAK,CACN,CAAC;SACH;AACH,KAAC,CAAC;AACF,IAAA,MAAM,gBAAgB,GACpB,qBAAqB,IAAI,CAAC,2BAA2B;UACjD,MAAK;;AAEH,YAAA,QACEH,cAAA,CAACe,iBAAQ,EAAA,EAAA,YAAA,EACK,YAAY,CAAC,oBAAoB,CAAC,EAAE,QAAQ,EAAE,iBAAiB,EAAE,CAAC,EAC9E,QAAQ,EAAE,uBAAuB,EACjC,MAAM,EAAE,MAAM,EACd,YAAY,EAAE,eAAe,EAC7B,CAAA,EACF;SACH;UACD,SAAS,CAAC;IAEhB,IAAI,wBAAwB,GAAG,KAAK,CAAC;AACrC,IAAA,QACEf,cACiB,CAAA,IAAA,EAAA,EAAA,eAAA,EAAA,QAAQ,GAAG,CAAC,EAC3B,KAAK,EAAE,OAAO,EACd,IAAI,EAAE,KAAK,EACE,aAAA,EAAA,MAAM,4BACK,OAAO,EAAA,IAC1B,qBAAqB;AACxB,cAAE,UAAU;AACV,kBAAE,EAAE,eAAe,EAAE,IAAI,EAAE;AAC3B,kBAAE,EAAE,eAAe,EAAE,KAAK,EAAE;AAC9B,cAAE,EAAE,CAAC,EAAA,IACF,OAAO,MAAM,KAAK,QAAQ,IAAI,EAAE,kBAAkB,EAAE,QAAQ,EAAE,CAAC,EAChE,IAAC,qBAAqB,IAAI,gBAAgB,CAAC,YAC9C,YAAY,CAAC,GAAG,CAAC,CAAC,MAA4B,EAAE,WAAmB,KAAI;AACtE,YAAA,MAAM,SAAS,GAAG,MAAM,CAAC,GAAG,CAAC;YAC7B,MAAM,gBAAgB,GAAGgB,gBAAW,CAAC,kBAAkB,EAAE,SAAS,CAAC,CAAC;AACpE,YAAA,MAAM,SAAS,GAAG;AAChB,gBAAA,OAAO,EAAE,OAAO;AAChB,gBAAA,OAAO,EAAE,OAAO;AAChB,gBAAA,KAAK,EAAE,MAAM,CAAC,KAAK,CAAC,KAAK;AACzB,gBAAA,YAAY,EAAE,MAAM,CAAC,KAAK,CAAC,UAAU;AACrC,gBAAA,SAAS,EAAE,SAAS;AACpB,gBAAA,WAAW,EAAE,WAAW;AACxB,gBAAA,MAAM,EAAE,MAAM;AACd,gBAAA,QAAQ,EAAE,QAAQ;AAClB,gBAAA,eAAe,EAAE,UAAU;AAC3B,gBAAA,kBAAkB,EAAE,WAAW,KAAK,YAAY,CAAC,MAAM,GAAG,CAAC;AAC3D,gBAAA,oBAAoB,EAAE,oBAAoB;AAC1C,gBAAA,sBAAsB,EAAE,sBAAsB;AAC9C,gBAAA,aAAa,EAAE,UAAU;AACzB,gBAAA,qBAAqB,EAAE,kBAAkB;AACzC,gBAAA,gBAAgB,EAAE,gBAAgB;AAClC,gBAAA,wBAAwB,EAAE,wBAAwB;AAClD,gBAAA,eAAe,EAAE,MAAM,CAAC,GAAG,KAAK,kBAAkB;gBAClD,WAAW,EAAE,mBAAmB,CAAC,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC;AAChD,gBAAA,QAAQ,EAAE,MAAM,CAAC,KAAK,CAAC,QAAQ;AAC/B,gBAAA,gBAAgB,EAAE,gBAAgB;AAClC,gBAAA,qBAAqB,EAAE,qBAAqB;AAC5C,gBAAA,OAAO,EAAE,OAAO;AAChB,gBAAA,oBAAoB,EAAE,2BAA2B;AACjD,gBAAA,gBAAgB,EAAE,gBAAgB;AAClC,gBAAA,eAAe,EAAE,eAAe;AAChC,gBAAA,qBAAqB,EAAE,qBAAqB;gBAC5C,iBAAiB,EAAE,WAAW,KAAK,eAAe;gBAClD,eAAe,EAAE,WAAW,KAAK,aAAa;AAC9C,gBAAA,KAAK,EAAE,KAAK;aACb,CAAC;YACF,wBAAwB,GAAG,gBAAgB,CAAC;AAC5C,YAAA,OAAOhB,cAAC,CAAA,SAAS,EAAK,EAAA,GAAA,SAAS,GAAI,CAAC;SACrC,CAAC,EACC,CAAA,EACL;AACJ,CAAC;AAED,MAAM,wBAAwB,GAAG,CAAC,IAAkB,EAAE,IAAkB,KAAI;AAC1E,IAAA,IAAI,IAAI,IAAI,IAAI,EAAE;QAChB,OAAO,IAAI,IAAI,IAAI,CAAC;KACrB;AACD,IAAA,IAAI,IAAI,IAAI,IAAI,EAAE;AAChB,QAAA,OAAO,KAAK,CAAC;KACd;IACD,OAAO,IAAI,CAAC,IAAI,KAAK,IAAI,CAAC,IAAI,IAAI,CAAC,GAAG,IAAI,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,KAAK,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;AACxE,CAAC,CAAC;AAEF,MAAM,2BAA2B,GAAG,CAClC,aAA0D,EAC1D,aAA0D,KACxD;IACF,IAAI,aAAa,CAAC,MAAM,KAAK,aAAa,CAAC,MAAM,EAAE;AACjD,QAAA,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,aAAa,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;AAC7C,YAAA,IACE,aAAa,CAAC,CAAC,CAAC,CAAC,GAAG,KAAK,aAAa,CAAC,CAAC,CAAC,CAAC,GAAG;AAC7C,gBAAA,aAAa,CAAC,CAAC,CAAC,CAAC,KAAK,KAAK,aAAa,CAAC,CAAC,CAAC,CAAC,KAAK,EACjD;AACA,gBAAA,OAAO,KAAK,CAAC;aACd;SACF;AACD,QAAA,OAAO,IAAI,CAAC;KACb;AACD,IAAA,OAAO,KAAK,CAAC;AACf,CAAC,CAAC;AAEK,MAAM,eAAe,GAAGiB,WAAI,CAAC,QAAQ,EAAE,CAAC,IAAS,EAAE,IAAS,KAAI;AACrE,IAAA,IAAI,IAAI,IAAI,IAAI,EAAE;AAChB,QAAA,QACE,IAAI,CAAC,OAAO,KAAK,IAAI,CAAC,OAAO;AAC7B,YAAA,IAAI,CAAC,MAAM,KAAK,IAAI,CAAC,MAAM;AAC3B,YAAA,IAAI,CAAC,OAAO,KAAK,IAAI,CAAC,OAAO;AAC7B,YAAA,IAAI,CAAC,QAAQ,KAAK,IAAI,CAAC,QAAQ;AAC/B,YAAA,IAAI,CAAC,UAAU,KAAK,IAAI,CAAC,UAAU;YACnC,2BAA2B,CAAC,IAAI,CAAC,YAAY,EAAE,IAAI,CAAC,YAAY,CAAC;AACjE,YAAA,IAAI,CAAC,mBAAmB,KAAK,IAAI,CAAC,mBAAmB;AACrD,YAAA,IAAI,CAAC,iBAAiB,KAAK,IAAI,CAAC,iBAAiB;YACjD,wBAAwB,CAAC,IAAI,CAAC,mBAAmB,EAAE,IAAI,CAAC,mBAAmB,CAAC;AAC5E,YAAA,IAAI,CAAC,UAAU,KAAK,IAAI,CAAC,UAAU;AACnC,YAAA,IAAI,CAAC,kBAAkB,KAAK,IAAI,CAAC,kBAAkB;AACnD,YAAA,IAAI,CAAC,qBAAqB,KAAK,IAAI,CAAC,qBAAqB;AACzD,YAAA,IAAI,CAAC,2BAA2B,KAAK,IAAI,CAAC,2BAA2B;AACrE,aAAC,IAAI,CAAC,qBAAqB,IAAI,CAAC,IAAI,CAAC,2BAA2B;kBAC5DC,cAAS,CAAC,IAAI,CAAC,eAAe,EAAE,IAAI,CAAC,eAAe,CAAC;kBACrD,IAAI,CAAC;YACTA,cAAS,CAAC,IAAI,CAAC,kBAAkB,EAAE,IAAI,CAAC,kBAAkB,CAAC;AAC3D,YAAA,IAAI,CAAC,kBAAkB,KAAK,IAAI,CAAC,kBAAkB;AACnD,YAAA,IAAI,CAAC,OAAO,KAAK,IAAI,CAAC,OAAO;AAC7B,YAAA,IAAI,CAAC,iBAAiB,KAAK,IAAI,CAAC,iBAAiB;AACjD,YAAA,IAAI,CAAC,eAAe,KAAK,IAAI,CAAC,eAAe;AAC7C,YAAA,IAAI,CAAC,aAAa,KAAK,IAAI,CAAC,aAAa;AACzC,YAAA,IAAI,CAAC,KAAK,KAAK,IAAI,CAAC,KAAK,EACzB;KACH;AACD,IAAA,OAAO,KAAK,CAAC;AACf,CAAC,CAAC;;ACnMF;;AAEG;AACG,SAAU,WAAW,CAAC,EAC1B,OAAO,EACP,YAAY,EACZ,eAAe,EACf,QAAQ,EACS,EAAA;AACjB,IAAA,MAAM,YAAY,GAAGN,yCAAoB,CAAa,0BAA0B,CAAC,CAAC;IAElF,MAAM,UAAU,GAAGT,qBAAU,CAAC,CAACgB,sDAAc,CAAC,IAAI,CAAC,CAAC,CAAC;IAErD,MAAM,EAAE,OAAO,EAAE,YAAY,EAAE,GAAGV,mCAAiB,CACjDW,qEAAuB,EACvB;QACE,eAAe,EAAE,QAAQ,IAAI,IAAI,GAAG,mBAAmB,GAAG,oBAAoB;QAC9E,aAAa,EAAE,eAAe,GAAG,iBAAiB,GAAG,kBAAkB;AACxE,KAAA,CACF,CAAC;IAEF,MAAM,WAAW,GAAGjB,qBAAU,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC;AAE/C,IAAA,SAAS,sBAAsB,GAAA;QAC7B,QACEH,eAACQ,SAAI,EAAA,EAAC,UAAU,EAAC,UAAU,EAAC,OAAO,EAAC,SAAS,EAAC,IAAI,EAAC,IAAI,EACpD,QAAA,EAAA,YAAY,CAAC,iBAAiB,EAAE,EAC5B,CAAA,EACP;KACH;AAED,IAAA,MAAM,eAAe,GAAG,QAAQ,IAAI,IAAI,GAAG,QAAQ,GAAG,sBAAsB,CAAC;IAE7E,QACER,wCAAmB,CAAC,EAAE,KAAK,EAAE,UAAU,EAAE,IAAI,EAAE,KAAK,YAClDA,cACiB,CAAA,IAAA,EAAA,EAAA,eAAA,EAAA,CAAC,EAChB,KAAK,EAAE,WAAW,EAClB,EAAE,EAAEW,WAAK,EAAE,EACX,QAAQ,EAAE,CAAC,CAAC,EACZ,IAAI,EAAE,UAAU,EAChB,OAAO,EAAE,YAAY,EAAA,mBAAA,EACF,QAAQ,EACF,yBAAA,EAAA,OAAO,+BACL,OAAO,EAAA,QAAA,EACjC,eAAe,EAAE,EAAA,CACf,EACF,CAAA,EACL;AACJ;;ACxBA;;AAEG;AACG,SAAU,SAAS,CAAU,EACjC,OAAO,EACP,uBAAuB,EACvB,IAAI,EACJ,YAAY,EACZ,oBAAoB,EACpB,sBAAsB,EACtB,eAAe,EACf,SAAS,EACT,OAAO,EACP,UAAU,EACV,cAAc,EACd,WAAW,EACX,iBAAiB,EACjB,QAAQ,EACR,qBAAqB,EACrB,2BAA2B,EAC3B,iBAAiB,EACjB,cAAc,EACd,eAAe,EACf,aAAa,EACb,KAAK,EACmB,EAAA;;;IAGxB,MAAM,mBAAmB,GAAGU,YAAM,CAAS,IAAI,IAAI,EAAE,CAAC,OAAO,EAAE,CAAC,CAAC;AACjE,IAAA,MAAM,qBAAqB,GAAGA,YAAM,EAAW,CAAC;IAEhD,MAAM,iBAAiB,GAAGlB,qBAAU,CAAC,CAACmB,+CAAgB,CAAC,IAAI,CAAC,CAAC,CAAC;;AAG9D,IAAA,MAAM,aAAa,GAAGC,iBAAW,CAC/B,CAAC,OAAiC,KAAI;QACpC,OAAO;YACL,KAAK,EAAE,OAAO,CAAC,KAAK;AACpB,YAAA,IAAI,EAAE,OAAO,CAAC,IAAI,CAAC,IAAI;YACvB,GAAG,EAAE,SAAS,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC;SAClC,CAAC;AACJ,KAAC,EACD,CAAC,SAAS,CAAC,CACZ,CAAC;IAEF,IAAI,kBAAkB,GAAG,KAAK,CAAC;AAC/B,IAAA,MAAM,sBAAsB,GAAG,CAAC,OAAiC,KAAI;AACnE,QAAA,MAAM,eAAe,GAAG,aAAa,CAAC,OAAO,CAAC,CAAC;AAC/C,QAAA,MAAM,MAAM,GAAG,eAAe,CAAC,GAAG,CAAC;AACnC,QAAA,MAAM,mBAAmB,GAAG,WAAW,EAAE,MAAM,KAAK,MAAM,CAAC;AAC3D,QAAA,MAAM,kBAAkB,GACtB,mBAAmB,IAAI,eAAe,GAAG,WAAW,CAAC,SAAS,GAAG,SAAS,CAAC;QAC7E,MAAM,UAAU,GAAGP,gBAAW,CAAC,QAAQ,CAAC,GAAG,EAAE,MAAM,CAAC,CAAC;AACrD,QAAA,MAAM,QAAQ,GAAG;AACf,YAAA,OAAO,EAAE,OAAO;AAChB,YAAA,YAAY,EAAE,YAAY;AAC1B,YAAA,mBAAmB,EAAE,uBAAuB,CAAC,eAAe,CAAC;AAC7D,YAAA,oBAAoB,EAAE,oBAAoB;AAC1C,YAAA,sBAAsB,EAAE,sBAAsB;AAC9C,YAAA,UAAU,EAAE,UAAU;AACtB,YAAA,kBAAkB,EAAE,kBAAkB;AACtC,YAAA,iBAAiB,EAAE,iBAAiB;AACpC,YAAA,qBAAqB,EAAE,qBAAqB;AAC5C,YAAA,2BAA2B,EAAE,2BAA2B;YACxD,OAAO,EAAE,mBAAmB,GAAG,iBAAiB,GAAG,MAAM;AACzD,YAAA,kBAAkB,EAAE,kBAAkB;YACtC,eAAe,EAAE,QAAQ,CAAC,GAAG;YAC7B,kBAAkB,EAAE,QAAQ,CAAC,MAAM;YACnC,QAAQ,EAAE,eAAe,CAAC,KAAK;AAC/B,YAAA,MAAM,EAAE,MAAM;YACd,OAAO,EAAE,eAAe,CAAC,IAAI;YAC7B,UAAU,EAAE,eAAe,CAAC,KAAK,MAAM,IAAI,IAAI,IAAI,GAAG,IAAI,CAAC,MAAM,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC;AAC3E,YAAA,eAAe,EAAE,eAAe;AAChC,YAAA,aAAa,EAAE,aAAa;AAC5B,YAAA,KAAK,EAAE,KAAK;SACb,CAAC;QACF,kBAAkB,GAAG,UAAU,CAAC;AAChC,QAAA,OAAOhB,cAAC,CAAA,eAAe,EAAK,EAAA,GAAA,QAAQ,GAAI,CAAC;AAC3C,KAAC,CAAC;IAEF,MAAM,cAAc,GAAG,MAAK;QAC1B,OAAO;AACL,YAAA,OAAO,EAAE,OAAO;YAChB,YAAY,EAAE,YAAY,CAAC,MAAM;AACjC,YAAA,eAAe,EAAE,eAAe,IAAI,WAAW,EAAE,IAAI,KAAK,QAAQ;AAClE,YAAA,QAAQ,EAAE,cAAc;SACzB,CAAC;AACJ,KAAC,CAAC;AAEF,IAAA,MAAM,cAAc,GAClB,IAAI,IAAI,IAAI;UACR,IAAI,CAAC,GAAG,CAAC,CAAC,CAAI,KAAI;AAChB,YAAA,MAAM,GAAG,GAAG,SAAS,CAAC,CAAC,CAAC,CAAC;YACzB,OAAO,EAAE,IAAI,EAAE,CAAC,EAAE,QAAQ,EAAE,GAAG,EAAE,CAAC;AACpC,SAAC,CAAC;UACF,EAAE,CAAC;AAET,IAAA,MAAM,kBAAkB,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,CAAC,MAAM,KAAK,CAAC,IAAI,OAAO,CAAC;AACxE,IAAA,MAAM,YAAY,GAAG,IAAI,IAAI,IAAI,KAAK,IAAI,CAAC,MAAM,KAAK,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;AACrE,IAAA,MAAM,WAAW,GAAG,qBAAqB,CAAC,OAAO,CAAC;AAClD,IAAA,IAAI,WAAW,KAAK,kBAAkB,EAAE;QACtC,mBAAmB,CAAC,OAAO,GAAG,IAAI,IAAI,EAAE,CAAC,OAAO,EAAE,CAAC;KACpD;AACD,IAAA,qBAAqB,CAAC,OAAO,GAAG,kBAAkB,CAAC;AAEnD,IAAA,QACEA,cAAO,CAAA,OAAA,EAAA,EAAA,KAAK,EAAE,iBAAiB,YAC5B,YAAY,IACXA,cAAC,CAAA,WAAW,EAAK,EAAA,GAAA,cAAc,EAAE,EAAI,CAAA,KAErCA,cAAA,CAACwB,qCAAkB,EAAA,EACjB,IAAI,EAAE,cAAc,EACpB,iBAAiB,EACfxB,cAAC,CAAA,gBAAgB,EACf,EAAA,OAAO,EAAE,YAAY,CAAC,MAAM,EAC5B,SAAS,EAAE,mBAAmB,CAAC,OAAO,EACtC,YAAY,EAAE,kBAAkB,GAAG,EAAE,GAAG,CAAC,EAAA,CACzC,EAEJ,OAAO,EAAE,OAAO,EAChB,UAAU,EAAE,UAAU,EACtB,cAAc,EAAE,cAAc,YAC7B,sBAAsB,EAAA,CACJ,CACtB,EAAA,CACK,EACR;AACJ;;ACxHA;;AAEG;AACa,SAAA,eAAe,CAAO,EACpC,OAAO,EACP,SAAS,EACT,WAAW,EACX,kBAAkB,EAClB,oBAAoB,EACpB,UAAU,EACV,kBAAkB,EAClB,kBAAkB,EAClB,qBAAqB,EACrB,kBAAkB,GAAG,EAAE,GAAG,EAAE,KAAK,EAAE,IAAI,EAAE,IAAI,GAAG,EAAK,EAAE,EACvD,eAAe,GAAG,EAAE,GAAG,EAAE,KAAK,EAAE,IAAI,EAAE,IAAI,GAAG,EAAK,EAAE,EACpD,eAAe,EACf,UAAU,EACV,YAAY,GAAG,MAAM,EACrB,QAAQ,EACR,iBAAiB,EACjB,QAAQ,GAAG,UAAU,EACrB,aAAa,EACb,qBAAqB,EACrB,iBAAiB,EACjB,eAAe,EACf,KAAK,EACsB,EAAA;AAC3B,IAAA,MAAM,YAAY,GAAGY,yCAAoB,CAAa,0BAA0B,CAAC,CAAC;AAElF,IAAA,MAAM,EAAE,gBAAgB,EAAE,gBAAgB,EAAE,eAAe,EAAE,qBAAqB,EAAE,GAClFC,uCAAmB,EAAE,CAAC;AAExB,IAAA,MAAM,WAAW,GAAG,QAAQ,IAAI,IAAI,CAAC;IACrC,MAAM,EAAE,OAAO,EAAE,YAAY,EAAE,GAAGJ,mCAAiB,CACjDgB,6EAA2B,EAC3B;QACE,eAAe,EAAE,CAAC,WAAW,GAAG,mBAAmB,GAAG,oBAAoB;QAC1E,WAAW,EAAE,WAAW,KAAK,CAAC,GAAG,eAAe,GAAG,gBAAgB;QACnE,UAAU,EAAE,kBAAkB,GAAG,cAAc,GAAG,eAAe;AACjE,QAAA,iBAAiB,EACf,EAAE,kBAAkB,IAAI,UAAU,CAAC,KAAK,CAAC,oBAAoB,IAAI,WAAW,KAAK,CAAC,CAAC;AACjF,cAAE,qBAAqB;AACvB,cAAE,sBAAsB;AAC5B,QAAA,eAAe,EACb,kBAAkB,IAAI,CAAC,UAAU,GAAG,mBAAmB,GAAG,oBAAoB;QAChF,YAAY,EAAE,oBAAoB,GAAG,gBAAgB,GAAG,iBAAiB;QACzE,gBAAgB,EAAE,kBAAkB,GAAG,oBAAoB,GAAG,qBAAqB;QACnF,cAAc,EAAE,UAAU,GAAG,kBAAkB,GAAG,mBAAmB;AACrE,QAAA,sBAAsB,EAAE,kBAAkB;AACxC,cAAE,0BAA0B;AAC5B,cAAE,2BAA2B;QAC/B,iBAAiB,EAAE,YAAY,KAAK,OAAO,GAAG,qBAAqB,GAAG,sBAAsB;QAC5F,eAAe,EAAE,YAAY,KAAK,KAAK,GAAG,mBAAmB,GAAG,oBAAoB;QACpF,eAAe,EAAE,iBAAiB,GAAG,mBAAmB,GAAG,oBAAoB;QAC/E,aAAa,EAAE,eAAe,GAAG,iBAAiB,GAAG,kBAAkB;QACvE,aAAa,EAAE,eAAe,GAAG,iBAAiB,GAAG,kBAAkB;QACvE,MAAM,EAAE,gBAAgB,GAAG,UAAU,GAAG,WAAW;QACnD,KAAK,EAAE,eAAe,GAAG,SAAS,GAAG,UAAU;QAC/C,WAAW,EAAE,qBAAqB,GAAG,eAAe,GAAG,gBAAgB;QACvE,GAAG,EAAE,KAAK,GAAG,OAAO,GAAG,QAAQ;AAChC,KAAA,CACF,CAAC;IAEF,MAAM,WAAW,GAAGtB,qBAAU,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC;AAE/C,IAAA,IAAI,gBAA4D,CAAC;AACjE,IAAA,IAAIe,cAAS,CAAC,eAAe,EAAE,EAAE,GAAG,EAAE,IAAI,EAAE,WAAW,EAAE,IAAI,GAAG,EAAK,EAAE,CAAC,EAAE;QACxE,gBAAgB,GAAG,KAAK,CAAC;KAC1B;AAAM,SAAA,IAAIA,cAAS,CAAC,eAAe,EAAE,EAAE,GAAG,EAAE,KAAK,EAAE,IAAI,EAAE,IAAI,GAAG,EAAK,EAAE,CAAC,EAAE;QACzE,gBAAgB,GAAG,MAAM,CAAC;KAC3B;SAAM;QACL,gBAAgB,GAAG,SAAS,CAAC;KAC9B;AAED,IAAA,MAAM,oBAAoB,GAAG,CAAC,MAA0B,KAAI;AAC1D,QAAA,IAAI,iBAAiB,IAAI,IAAI,EAAE;YAC7B,iBAAiB,CACf,EAAE,KAAK,EAAE,EAAE,GAAG,EAAE,MAAM,CAAC,KAAK,EAAE,MAAM,EAAE,kBAAkB,EAAE,EAAE,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,EACnF,KAAK,CACN,CAAC;SACH;AACH,KAAC,CAAC;IAEF,MAAM,gBAAgB,GAAG,qBAAqB;UAC1C,OACElB,cAAC,CAAA0B,uBAAW,kBACE,YAAY,CAAC,wBAAwB,EAAE,EACnD,QAAQ,EAAE,oBAAoB,EAC9B,QAAQ,EAAE,gBAAgB,EAAA,CAC1B,CACH;UACD,SAAS,CAAC;IAEd,MAAM,gBAAgB,GACpB,QAAQ,KAAK,SAAS,IAAI,aAAa,IAAI,IAAI;UAC3C,OACE1B,eAAC2B,qCAAkB,EAAA,EAAA,YAAA,EAEf,QAAQ,KAAK,SAAS;AACpB,kBAAE,YAAY,CAAC,sBAAsB,EAAE;kBACrC,YAAY,CAAC,uBAAuB,EAAE,EAE5C,UAAU,EAAE,QAAQ,KAAK,SAAS,EAClC,QAAQ,EAAE,iBAAiB,EAAA,QAAA,EAC1B,aAAa,KAAK,WAAW,IAC5B3B,cAAC,CAAA4B,sBAAiB,KAAG,IACnB,aAAa,KAAK,YAAY,IAChC5B,cAAA,CAAC6B,0BAAkB,EAAG,EAAA,CAAA,KAEtB7B,eAAC8B,8BAAe,EAAA,EAAA,CAAG,CACpB,EAAA,CACkB,CACtB;UACD,SAAS,CAAC;AAEhB,IAAA,MAAM,uBAAuB,GAAG;AAC9B,QAAA,GAAG,EAAE,SAAS;AACd,QAAA,UAAU,EAAE,UAAU;AACtB,QAAA,QAAQ,EAAE,QAAQ;AAClB,QAAA,aAAa,EAAE,aAAa;AAC5B,QAAA,QAAQ,EAAE,gBAAgB;AAC1B,QAAA,WAAW,EAAE,gBAAgB;KAC9B,CAAC;AAEF,IAAA,MAAM,iBAAiB,GAAGP,iBAAW,CAAC,MAAK;AACzC,QAAA,IAAI,qBAAqB,IAAI,IAAI,EAAE;AACjC,YAAA,MAAM,YAAY,GAAG,aAAa,KAAK,WAAW,GAAG,YAAY,GAAG,WAAW,CAAC;AAChF,YAAA,qBAAqB,CAAC,CAAC,EAAE,GAAG,EAAE,SAAS,EAAE,aAAa,EAAE,YAAY,EAAE,CAAC,CAAC,CAAC;SAC1E;KACF,EAAE,CAAC,SAAS,EAAE,aAAa,EAAE,qBAAqB,CAAC,CAAC,CAAC;AAEtD,IAAA,MAAM,qBAAqB,GAAGA,iBAAW,CAAC,MAAK;AAC7C,QAAA,IAAI,QAAQ,IAAI,IAAI,EAAE;AACpB,YAAA,OAAO,QAAQ,CAAC;SACjB;AACD,QAAA,OAAO,CAAC,EAAE,UAAU,EAAE,WAAW,EAAiC,KAAI;AACpE,YAAA,MAAM,IAAI,GACR,UAAU,IAAI,IAAI,IAChBvB,wBAAK,KAAK,EAAE+B,wDAAyB,CAAC,IAAI,YACxC/B,cAAC,CAAAQ,SAAI,IAAC,YAAY,EAAC,QAAQ,EAAC,SAAS,EAAE,CAAC,EAAE,OAAO,EAAC,SAAS,EAAC,IAAI,EAAC,IAAI,EAClE,QAAA,EAAA,UAAU,GACN,EACH,CAAA,IACJ,IAAI,CAAC;AACX,YAAA,IAAI,WAAW,IAAI,IAAI,EAAE;AACvB,gBAAA,QACEwB,eAAA,CAAA,KAAA,EAAA,EAAK,KAAK,EAAEC,6DAA8B,CAAC,IAAI,EAC5C,QAAA,EAAA,CAAA,IAAI,EACJ,WAAW,EAAE,CAAA,EAAA,CACV,EACN;aACH;AACD,YAAA,OAAO,IAAI,CAAC;AACd,SAAC,CAAC;AACJ,KAAC,EAAE,CAAC,QAAQ,CAAC,CAAC,CAAC;IAEf,MAAM,eAAe,GAAG,MAAK;QAC3B,IAAI,UAAU,EAAE;AACd,YAAA,OAAO,EAAE,eAAe,EAAE,IAAI,EAAE,CAAC;SAClC;AACD,QAAA,OAAO,kBAAkB,GAAG,EAAE,eAAe,EAAE,KAAK,EAAE,GAAG,SAAS,CAAC;AACrE,KAAC,CAAC;IAEF,MAAM,WAAW,GAAG,MAAK;QACvB,IAAI,aAAa,KAAK,WAAW,IAAI,aAAa,KAAK,YAAY,EAAE;AACnE,YAAA,OAAO,EAAE,WAAW,EAAE,aAAa,EAAE,CAAC;SACvC;AACD,QAAA,OAAO,SAAS,CAAC;AACnB,KAAC,CAAC;AAEF,IAAA,QACEjC,cAAA,CAAA,IAAA,EAAA,EAAA,eAAA,EACiB,WAAW,GAAG,CAAC,EAAA,GAC1B,eAAe,EAAE,EACjB,GAAA,WAAW,EAAE,EACjB,KAAK,EAAE,WAAW,EAClB,EAAE,EAAEW,WAAK,EAAE,EACX,QAAQ,EAAE,CAAC,CAAC,EACZ,IAAI,EAAE,cAAc,uBACD,QAAQ,EAAA,oBAAA,EACP,SAAS,EAAA,yBAAA,EACJ,OAAO,EAAA,2BAAA,EACL,OAAO,EAAA,IAC7B,OAAO,SAAS,KAAK,QAAQ,IAAI,EAAE,yBAAyB,EAAE,QAAQ,EAAE,CAAC,EAAA,IACzE,kBAAkB,IAAI,gBAAgB,CAAC,EAAA,QAAA,EAC3C,qBAAqB,EAAE,CAAC,uBAAuB,CAAC,EAAA,CAC9C,EACL;AACJ;;ACpNA;;AAEG;AACa,SAAA,WAAW,CAAU,EACnC,OAAO,EACP,YAAY,EACZ,oBAAoB,EACpB,UAAU,EACV,eAAe,EACf,kBAAkB,EAClB,eAAe,EACf,wBAAwB,EACxB,qBAAqB,EACrB,iBAAiB,EACjB,aAAa,EACb,qBAAqB,EACrB,eAAe,EACf,aAAa,EACb,aAAa,EACb,KAAK,EACqB,EAAA;IAC1B,MAAM,UAAU,GAAGR,qBAAU,CAAC,CAAC+B,mDAAoB,CAAC,IAAI,CAAC,CAAC,CAAC;IAC3D,MAAM,gBAAgB,GAAG/B,qBAAU,CAAC,CAACgC,4DAA6B,CAAC,IAAI,CAAC,CAAC,CAAC;IAE1E,MAAM,QAAQ,GAAG,MAAK;QACpB,OAAO,aAAa,GAAG,qBAAqB,GAAG,EAAE,CAAC;AACpD,KAAC,CAAC;IAEF,IAAI,kBAAkB,GAAG,KAAK,CAAC;AAC/B,IAAA,QACEnC,cAAA,CAAA,OAAA,EAAA,EAAO,KAAK,EAAE,gBAAgB,EAAA,QAAA,EAC5BA,cAAI,CAAA,IAAA,EAAA,EAAA,KAAK,EAAE,UAAU,EAAE,IAAI,EAAE,KAAK,EAAE,KAAK,EAAE,QAAQ,EAAE,EAA4B,0BAAA,EAAA,OAAO,YACrF,YAAY,CAAC,GAAG,CAAC,CAAC,MAA4B,EAAE,WAAmB,KAAI;AACtE,gBAAA,MAAM,SAAS,GAAG,MAAM,CAAC,GAAG,CAAC;AAC7B,gBAAA,IAAI,aAAa,CAAC;AAClB,gBAAA,IAAI,aAAa,IAAI,IAAI,EAAE;AACzB,oBAAA,KAAK,MAAM,SAAS,IAAI,aAAa,EAAE;AACrC,wBAAA,IAAI,SAAS,CAAC,GAAG,KAAK,SAAS,EAAE;AAC/B,4BAAA,aAAa,GAAG,SAAS,CAAC,aAAa,CAAC;4BACxC,MAAM;yBACP;qBACF;iBACF;gBACD,MAAM,UAAU,GAAGgB,gBAAW,CAAC,kBAAkB,EAAE,SAAS,CAAC,CAAC;AAC9D,gBAAA,MAAM,eAAe,GAAG;AACtB,oBAAA,OAAO,EAAE,OAAO;AAChB,oBAAA,oBAAoB,EAAE,oBAAoB;AAC1C,oBAAA,SAAS,EAAE,SAAS;AACpB,oBAAA,WAAW,EAAE,WAAW;AACxB,oBAAA,kBAAkB,EAAE,WAAW,KAAK,YAAY,CAAC,MAAM,GAAG,CAAC;AAC3D,oBAAA,YAAY,EAAE,MAAM,CAAC,KAAK,CAAC,UAAU;AACrC,oBAAA,UAAU,EAAE,UAAU;AACtB,oBAAA,kBAAkB,EAAE,kBAAkB;AACtC,oBAAA,kBAAkB,EAAE,kBAAkB;AACtC,oBAAA,eAAe,EAAE,eAAe;oBAChC,kBAAkB,EAAE,wBAAwB,IAAI,MAAM,CAAC,KAAK,CAAC,UAAU,KAAK,UAAU;AACtF,oBAAA,qBAAqB,EAAE,qBAAqB;AAC5C,oBAAA,eAAe,EAAE,eAAe,IAAI,SAAS,KAAK,UAAU;AAC5D,oBAAA,UAAU,EAAE,MAAM,CAAC,KAAK,CAAC,UAAU;AACnC,oBAAA,QAAQ,EAAE,MAAM,CAAC,KAAK,CAAC,cAAc;AACrC,oBAAA,iBAAiB,EAAE,iBAAiB;AACpC,oBAAA,QAAQ,EAAE,MAAM,CAAC,KAAK,CAAC,QAAQ;AAC/B,oBAAA,aAAa,EAAE,aAAa;AAC5B,oBAAA,qBAAqB,EAAE,qBAAqB;oBAC5C,iBAAiB,EAAE,WAAW,KAAK,eAAe;oBAClD,eAAe,EAAE,WAAW,KAAK,aAAa;AAC9C,oBAAA,KAAK,EAAE,KAAK;iBACb,CAAC;gBACF,kBAAkB,GAAG,UAAU,CAAC;AAChC,gBAAA,OAAOhB,cAAC,CAAA,eAAe,EAAK,EAAA,GAAA,eAAe,GAAI,CAAC;AAClD,aAAC,CAAC,EAAA,CACC,EACC,CAAA,EACR;AACJ;;ACxEA,SAAS,0BAA0B,CAAI,EAAE,UAAU,EAAiC,EAAA;AAClF,IAAA,OAAO,UAAU,IAAI,IAAI,IACvBA,cAAA,CAACQ,SAAI,EAAA,EAAC,UAAU,EAAC,UAAU,EAAC,OAAO,EAAC,SAAS,EAAC,IAAI,EAAC,IAAI,EAAA,QAAA,EACpD,UAAU,EAAA,CACN,IACL,IAAI,CAAC;AACX,CAAC;AAED;;AAEG;SACa,eAAe,CAAI,EACjC,OAAO,EACP,SAAS,EACT,WAAW,EACX,kBAAkB,EAClB,oBAAoB,EACpB,UAAU,EACV,kBAAkB,EAClB,kBAAkB,EAClB,eAAe,EACf,YAAY,GAAG,MAAM,EACrB,UAAU,EACV,QAAQ,GAAG,0BAA0B,EACrC,iBAAiB,EACjB,eAAe,EACf,KAAK,EACmB,EAAA;AACxB,IAAA,MAAM,EAAE,gBAAgB,EAAE,gBAAgB,EAAE,eAAe,EAAE,qBAAqB,EAAE,GAClFK,uCAAmB,EAAE,CAAC;AAExB,IAAA,MAAM,WAAW,GAAG,QAAQ,KAAK,0BAA0B,CAAC;IAC5D,MAAM,EAAE,OAAO,EAAE,YAAY,EAAE,GAAGJ,mCAAiB,CACjD2B,6EAA2B,EAC3B;QACE,eAAe,EAAE,CAAC,WAAW,GAAG,mBAAmB,GAAG,oBAAoB;QAC1E,WAAW,EAAE,WAAW,KAAK,CAAC,GAAG,eAAe,GAAG,gBAAgB;QACnE,UAAU,EAAE,kBAAkB,GAAG,cAAc,GAAG,eAAe;AACjE,QAAA,iBAAiB,EACf,EAAE,kBAAkB,IAAI,UAAU,CAAC,KAAK,CAAC,oBAAoB,IAAI,WAAW,KAAK,CAAC,CAAC;AACjF,cAAE,qBAAqB;AACvB,cAAE,sBAAsB;AAC5B,QAAA,eAAe,EACb,kBAAkB,IAAI,CAAC,UAAU,GAAG,mBAAmB,GAAG,oBAAoB;QAChF,YAAY,EAAE,oBAAoB,GAAG,gBAAgB,GAAG,iBAAiB;QACzE,gBAAgB,EAAE,kBAAkB,GAAG,oBAAoB,GAAG,qBAAqB;QACnF,cAAc,EAAE,UAAU,GAAG,kBAAkB,GAAG,mBAAmB;AACrE,QAAA,sBAAsB,EAAE,kBAAkB;AACxC,cAAE,0BAA0B;AAC5B,cAAE,2BAA2B;QAC/B,iBAAiB,EAAE,YAAY,KAAK,OAAO,GAAG,qBAAqB,GAAG,sBAAsB;QAC5F,eAAe,EAAE,YAAY,KAAK,KAAK,GAAG,mBAAmB,GAAG,oBAAoB;QACpF,eAAe,EAAE,iBAAiB,GAAG,mBAAmB,GAAG,oBAAoB;QAC/E,aAAa,EAAE,eAAe,GAAG,iBAAiB,GAAG,kBAAkB;QACvE,aAAa,EAAE,eAAe,GAAG,iBAAiB,GAAG,kBAAkB;QACvE,MAAM,EAAE,gBAAgB,GAAG,UAAU,GAAG,WAAW;QACnD,KAAK,EAAE,eAAe,GAAG,SAAS,GAAG,UAAU;QAC/C,WAAW,EAAE,qBAAqB,GAAG,eAAe,GAAG,gBAAgB;QACvE,GAAG,EAAE,KAAK,GAAG,OAAO,GAAG,QAAQ;AAChC,KAAA,CACF,CAAC;IAEF,MAAM,WAAW,GAAGjC,qBAAU,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC;IAE/C,MAAM,uBAAuB,GAAG,EAAE,GAAG,EAAE,SAAS,EAAE,UAAU,EAAE,UAAU,EAAE,CAAC;AAE3E,IAAA,QACEH,cACiB,CAAA,IAAA,EAAA,EAAA,eAAA,EAAA,WAAW,GAAG,CAAC,EAAA,IACzB,UAAU;AACb,cAAE,EAAE,eAAe,EAAE,IAAI,EAAE;AAC3B,cAAE,kBAAkB;AACpB,kBAAE,EAAE,eAAe,EAAE,KAAK,EAAE;kBAC1B,EAAE,CAAC,EACP,KAAK,EAAE,WAAW,EAClB,EAAE,EAAEW,WAAK,EAAE,EACX,QAAQ,EAAE,CAAC,CAAC,EACZ,IAAI,EAAE,UAAU,EACG,mBAAA,EAAA,QAAQ,EACP,oBAAA,EAAA,SAAS,EACJ,yBAAA,EAAA,OAAO,+BACL,OAAO,EAAA,IAC7B,OAAO,SAAS,KAAK,QAAQ,IAAI,EAAE,yBAAyB,EAAE,QAAQ,EAAE,CAAC,MACzE,kBAAkB,IAAI,gBAAgB,CAAC,EAAA,QAAA,EAC3C,QAAQ,CAAC,uBAAuB,CAAC,EAC/B,CAAA,EACL;AACJ;;AC/FA;;AAEG;AACG,SAAU,WAAW,CAAU,EACnC,OAAO,EACP,UAAU,EACV,YAAY,EACZ,oBAAoB,EACpB,UAAU,EACV,eAAe,EACf,YAAY,EACZ,wBAAwB,EACxB,eAAe,EACf,aAAa,EACb,KAAK,EACqB,EAAA;IAC1B,MAAM,UAAU,GAAGR,qBAAU,CAAC,CAACkC,mDAAoB,CAAC,IAAI,CAAC,CAAC,CAAC;IAC3D,MAAM,gBAAgB,GAAGlC,qBAAU,CAAC,CAACmC,4DAA6B,CAAC,IAAI,CAAC,CAAC,CAAC;IAE1E,IAAI,kBAAkB,GAAG,KAAK,CAAC;AAC/B,IAAA,OAAO,UAAU,IACftC,cAAA,CAAA,OAAA,EAAA,EAAO,KAAK,EAAE,gBAAgB,EAAA,QAAA,EAC5BA,cAAI,CAAA,IAAA,EAAA,EAAA,KAAK,EAAE,UAAU,EAAE,IAAI,EAAE,KAAK,EAAA,0BAAA,EAA4B,OAAO,EAAA,QAAA,EAClE,YAAY,CAAC,GAAG,CAAC,CAAC,MAA4B,EAAE,WAAmB,KAAI;AACtE,gBAAA,MAAM,SAAS,GAAG,MAAM,CAAC,GAAG,CAAC;gBAC7B,MAAM,UAAU,GAAGgB,gBAAW,CAAC,YAAY,EAAE,SAAS,CAAC,CAAC;AACxD,gBAAA,MAAM,eAAe,GAAG;AACtB,oBAAA,OAAO,EAAE,OAAO;AAChB,oBAAA,SAAS,EAAE,SAAS;AACpB,oBAAA,WAAW,EAAE,WAAW;AACxB,oBAAA,kBAAkB,EAAE,WAAW,KAAK,YAAY,CAAC,MAAM,GAAG,CAAC;AAC3D,oBAAA,oBAAoB,EAAE,oBAAoB;AAC1C,oBAAA,YAAY,EAAE,MAAM,CAAC,KAAK,CAAC,UAAU;AACrC,oBAAA,UAAU,EAAE,UAAU;AACtB,oBAAA,kBAAkB,EAAE,kBAAkB;oBACtC,kBAAkB,EAAE,wBAAwB,IAAI,MAAM,CAAC,KAAK,CAAC,UAAU,KAAK,UAAU;AACtF,oBAAA,eAAe,EAAE,eAAe,IAAI,SAAS,KAAK,UAAU;AAC5D,oBAAA,UAAU,EAAE,MAAM,CAAC,KAAK,CAAC,UAAU;AACnC,oBAAA,QAAQ,EAAE,MAAM,CAAC,KAAK,CAAC,cAAc;oBACrC,iBAAiB,EAAE,WAAW,KAAK,eAAe;oBAClD,eAAe,EAAE,WAAW,KAAK,aAAa;AAC9C,oBAAA,KAAK,EAAE,KAAK;iBACb,CAAC;gBACF,kBAAkB,GAAG,UAAU,CAAC;AAChC,gBAAA,OAAOhB,cAAC,CAAA,eAAe,EAAK,EAAA,GAAA,eAAe,GAAI,CAAC;aACjD,CAAC,GACC,EACC,CAAA,IACN,IAAI,CAAC;AACX;;AC7DA;;AAEG;SACa,kBAAkB,CAAC,EAAE,QAAQ,EAAE,KAAK,EAA2B,EAAA;IAC7E,MAAM,yBAAyB,GAAGG,qBAAU,CAAC,CAACoC,uDAAwB,CAAC,IAAI,CAAC,CAAC,CAAC;IAE9E,MAAM,qBAAqB,GAAG,MAAK;AACjC,QAAA,IAAI,QAAQ,IAAI,IAAI,EAAE;AACpB,YAAA,OAAO,KAAK;kBACR,CAAS,MAAA,EAAA,QAAQ,CAAuB,qBAAA,CAAA;AAC1C,kBAAE,CAAA,KAAA,EAAQ,QAAQ,CAAA,qBAAA,CAAuB,CAAC;SAC7C;AACD,QAAA,OAAO,eAAe,CAAC;AACzB,KAAC,CAAC;IAEF,OAAOvC,cAAA,CAAA,KAAA,EAAA,EAAK,KAAK,EAAE,yBAAyB,EAAE,KAAK,EAAE,qBAAqB,EAAE,EAAA,CAAI,CAAC;AACnF;;AClCA;;;;;;AAMG;AAKH;;AAEG;AACI,MAAM,WAAW,GAAG,CAAC,OAAyB,KAAI;AACvD,IAAA,OAAO,OAAO,CAAC,OAAO,CAAC,YAAY,CAAC,CAAC;AACvC,CAAC,CAAC;AAEF;;AAEG;AACI,MAAM,SAAS,GAAG,CAAC,OAAoB,KAAI;AAChD,IAAA,OAAO,OAAO,CAAC,OAAO,CAAC,WAAW,CAAC,KAAK,QAAQ;UAC5C,MAAM,CAAC,OAAO,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC;AAClC,UAAE,OAAO,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC;AAC/B,CAAC,CAAC;AAEF;;AAEG;AACI,MAAM,oBAAoB,GAAG,CAAC,IAAiB,EAAE,OAAe,EAAE,KAAa,KAAI;AACxF,IAAA,IAAI,IAAI,IAAI,IAAI,EAAE;QAChB,MAAM,WAAW,GAAG,IAAI,CAAC,gBAAgB,CAAC,CAA4B,yBAAA,EAAA,OAAO,CAAI,EAAA,CAAA,CAAC,CAAC;AACnF,QAAA,IAAI,WAAW,CAAC,MAAM,GAAG,KAAK,EAAE;AAC9B,YAAA,OAAO,SAAS,CAAC,WAAW,CAAC,KAAK,CAAgB,CAAC,CAAC;SACrD;KACF;AACD,IAAA,OAAO,IAAI,CAAC;AACd,CAAC,CAAC;AAEF;;AAEG;AACI,MAAM,wBAAwB,GAAG,CACtC,IAAiB,EACjB,OAAe,EACf,UAAuB,KACrB;AACF,IAAA,IAAI,IAAI,IAAI,IAAI,EAAE;QAChB,MAAM,WAAW,GAAG,IAAI,CAAC,gBAAgB,CAAC,CAA4B,yBAAA,EAAA,OAAO,CAAI,EAAA,CAAA,CAAC,CAAC;AACnF,QAAA,MAAM,KAAK,GAAG,KAAK,CAAC,SAAS,CAAC,OAAO,CAAC,IAAI,CAAC,WAAW,EAAE,UAAU,CAAC,CAAC;AACpE,QAAA,IAAI,KAAK,GAAG,CAAC,CAAC,EAAE;AACd,YAAA,OAAO,KAAK,CAAC;SACd;KACF;AACD,IAAA,OAAO,IAAI,CAAC;AACd,CAAC,CAAC;AAEF;;AAEG;SACa,oBAAoB,CAAI,IAAiB,EAAE,OAAe,EAAE,MAAS,EAAA;AACnF,IAAA,IAAI,IAAI,IAAI,IAAI,EAAE;QAChB,MAAM,WAAW,GAAG,IAAI,CAAC,gBAAgB,CAAC,CAA4B,yBAAA,EAAA,OAAO,CAAI,EAAA,CAAA,CAAC,CAAC;AACnF,QAAA,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,WAAW,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;YAC3C,IAAI,MAAM,KAAK,SAAS,CAAC,WAAW,CAAC,CAAC,CAAgB,CAAC,EAAE;AACvD,gBAAA,OAAO,CAAC,CAAC;aACV;SACF;KACF;AACD,IAAA,OAAO,IAAI,CAAC;AACd,CAAC;AAED;;AAEG;AACI,MAAM,YAAY,GAAG,CAAC,OAAoB,KAAI;AACnD,IAAA,OAAO,OAAO,CAAC,OAAO,CAAC,iBAAiB,CAAC,KAAK,QAAQ;UAClD,MAAM,CAAC,OAAO,CAAC,OAAO,CAAC,aAAa,CAAC,CAAC;AACxC,UAAE,OAAO,CAAC,OAAO,CAAC,aAAa,CAAC,CAAC;AACrC,CAAC,CAAC;AAeF;;AAEG;AACI,MAAM,oCAAoC,GAAG,CAClD,IAAiB,EACjB,OAAe,EACf,WAAwB,EACxB,QAAiB,KACf;AACF,IAAA,IAAI,IAAI,IAAI,IAAI,EAAE;AAChB,QAAA,MAAM,cAAc,GAAG,IAAI,CAAC,gBAAgB,CAC1C,QAAQ;cACJ,CAA+B,4BAAA,EAAA,OAAO,CAAI,EAAA,CAAA;AAC5C,cAAE,CAAA,4BAAA,EAA+B,OAAO,CAAA,EAAA,CAAI,CAC/C,CAAC;AACF,QAAA,MAAM,KAAK,GAAG,KAAK,CAAC,SAAS,CAAC,OAAO,CAAC,IAAI,CAAC,cAAc,EAAE,WAAW,CAAC,CAAC;AACxE,QAAA,IAAI,KAAK,GAAG,CAAC,CAAC,EAAE;AACd,YAAA,OAAO,KAAK,CAAC;SACd;KACF;AACD,IAAA,OAAO,IAAI,CAAC;AACd,CAAC,CAAC;AAEF;;AAEG;AACG,SAAU,oBAAoB,CAClC,OAAoB,EACpB,OAAe,EACf,YAAoB,EACpB,aAAuB,EAAA;AAEvB,IAAA,MAAM,eAAe,GAAG,aAAa,GAAG,OAAO,CAAC,aAAa,GAAG,OAAO,CAAC;AACxE,IAAA,IAAI,eAAe,IAAI,IAAI,EAAE;QAC3B,MAAM,WAAW,GAAG,eAAe,CAAC,OAAO,CAAC,YAAY,CAAgB,CAAC;AACzE,QAAA,IAAI,WAAW,IAAI,IAAI,EAAE;AACvB,YAAA,MAAM,QAAQ,GAAG,WAAW,CAAC,WAAW,CAAC,CAAC;AAC1C,YAAA,IAAI,QAAQ,KAAK,MAAM,EAAE;gBACvB,OAAO;oBACL,MAAM,EAAEwC,4BAAY,CAAC,WAAW,EAAE,CAA4B,yBAAA,EAAA,OAAO,IAAI,CAAM;AAC/E,oBAAA,SAAS,EAAE,YAAY,CAAC,WAAW,CAAM;AACzC,oBAAA,IAAI,EAAE,QAAQ;iBACf,CAAC;aACH;iBAAM,IAAI,QAAQ,KAAK,QAAQ,IAAI,QAAQ,KAAK,QAAQ,EAAE;gBACzD,OAAO;AACL,oBAAA,SAAS,EAAE,YAAY,CAAC,WAAW,CAAM;AACzC,oBAAA,IAAI,EAAE,QAAQ;iBACf,CAAC;aACH;AAAM,iBAAA,IAAI,QAAQ,KAAK,QAAQ,EAAE;gBAChC,OAAO;AACL,oBAAA,IAAI,EAAE,QAAQ;iBACf,CAAC;aACH;SACF;KACF;AACD,IAAA,OAAO,IAAI,CAAC;AACd,CAAC;AAED;;AAEG;SACa,kBAAkB,CAChC,IAAiB,EACjB,OAAe,EACf,IAAgB,EAAA;AAEhB,IAAA,IAAI,IAAI,CAAC,IAAI,KAAK,QAAQ,EAAE;;QAE1B,MAAM,cAAc,GAAG,IAAI,CAAC,gBAAgB,CAAC,CAA+B,4BAAA,EAAA,OAAO,CAAI,EAAA,CAAA,CAAC,CAAC;AACzF,QAAA,KAAK,MAAM,aAAa,IAAI,cAAc,EAAE;YAC1C,IAAI,IAAI,CAAC,SAAS,KAAK,YAAY,CAAC,aAA4B,CAAC,EAAE;AACjE,gBAAA,OAAO,aAA4B,CAAC;aACrC;SACF;KACF;AAAM,SAAA,IAAI,IAAI,CAAC,IAAI,KAAK,QAAQ,EAAE;;QAEjC,MAAM,cAAc,GAAG,IAAI,CAAC,gBAAgB,CAAC,CAA+B,4BAAA,EAAA,OAAO,CAAI,EAAA,CAAA,CAAC,CAAC;AACzF,QAAA,KAAK,MAAM,aAAa,IAAI,cAAc,EAAE;YAC1C,IAAI,IAAI,CAAC,SAAS,KAAK,YAAY,CAAC,aAA4B,CAAC,EAAE;AACjE,gBAAA,OAAO,aAA4B,CAAC;aACrC;SACF;KACF;AAAM,SAAA,IAAI,IAAI,CAAC,IAAI,KAAK,MAAM,EAAE;;QAE/B,MAAM,WAAW,GAAG,IAAI,CAAC,gBAAgB,CAAC,CAA4B,yBAAA,EAAA,OAAO,CAAI,EAAA,CAAA,CAAC,CAAC;AACnF,QAAA,KAAK,MAAM,UAAU,IAAI,WAAW,EAAE;YACpC,IAAI,IAAI,CAAC,MAAM,KAAK,SAAS,CAAC,UAAyB,CAAC,EAAE;gBACxD,MAAM,YAAY,GAAG,UAAU,CAAC,gBAAgB,CAAC,CAA6B,0BAAA,EAAA,OAAO,CAAI,EAAA,CAAA,CAAC,CAAC;AAC3F,gBAAA,KAAK,MAAM,WAAW,IAAI,YAAY,EAAE;oBACtC,IAAI,IAAI,CAAC,SAAS,KAAK,YAAY,CAAC,WAA0B,CAAC,EAAE;AAC/D,wBAAA,OAAO,WAA0B,CAAC;qBACnC;iBACF;aACF;SACF;KACF;AAAM,SAAA,IAAI,IAAI,CAAC,IAAI,KAAK,QAAQ,EAAE;;QAEjC,OAAO,IAAI,CAAC,aAAa,CAAC,+BAA+B,OAAO,CAAA,EAAA,CAAI,CAAgB,CAAC;KACtF;AACD,IAAA,OAAO,IAAI,CAAC;AACd,CAAC;AAED;;AAEG;AACI,MAAM,oBAAoB,GAAG,CAAC,IAAiB,EAAE,OAAe,KAAI;IACzE,MAAM,gBAAgB,GAAG,IAAI,CAAC,aAAa,CACzC,CAA8B,2BAAA,EAAA,OAAO,CAAI,EAAA,CAAA,CAC3B,CAAC;AACjB,IAAA,OAAO,gBAAgB,IAAI,IAAI,GAAG,gBAAgB,CAAC,qBAAqB,EAAE,CAAC,MAAM,GAAG,CAAC,CAAC;AACxF,CAAC,CAAC;AAEF;;AAEG;AACI,MAAM,uBAAuB,GAAG,CAAC,IAAiB,EAAE,OAAe,KAAI;IAC5E,MAAM,gBAAgB,GAAG,IAAI,CAAC,aAAa,CACzC,CAA8B,2BAAA,EAAA,OAAO,CAAI,EAAA,CAAA,CAC3B,CAAC;AACjB,IAAA,OAAO,gBAAgB,IAAI,IAAI,GAAG,gBAAgB,CAAC,qBAAqB,EAAE,CAAC,MAAM,GAAG,CAAC,CAAC;AACxF,CAAC,CAAC;AAEF;;AAEG;AACI,MAAM,uBAAuB,GAAG,CAAC,IAAiB,EAAE,OAAe,KAAI;AAC5E,IAAA,IAAI,IAAI,IAAI,IAAI,EAAE;QAChB,MAAM,eAAe,GAAG,IAAI,CAAC,aAAa,CAAC,CAA4B,yBAAA,EAAA,OAAO,CAAI,EAAA,CAAA,CAAC,CAAC;AACpF,QAAA,IAAI,eAAe,IAAI,IAAI,EAAE;AAC3B,YAAA,OAAO,SAAS,CAAC,eAA8B,CAAC,CAAC;SAClD;KACF;AACD,IAAA,OAAO,IAAI,CAAC;AACd,CAAC,CAAC;AAEF;;AAEG;AACI,MAAM,sBAAsB,GAAG,CAAC,IAAiB,EAAE,OAAe,KAAI;IAC3E,MAAM,WAAW,GAAG,IAAI,CAAC,gBAAgB,CAAC,CAA4B,yBAAA,EAAA,OAAO,CAAI,EAAA,CAAA,CAAC,CAAC;AACnF,IAAA,MAAM,QAAQ,GAAG,WAAW,CAAC,MAAM,CAAC;AACpC,IAAA,IAAI,QAAQ,GAAG,CAAC,EAAE;QAChB,OAAO,SAAS,CAAC,WAAW,CAAC,QAAQ,GAAG,CAAC,CAAgB,CAAC,CAAC;KAC5D;AACD,IAAA,OAAO,IAAI,CAAC;AACd,CAAC,CAAC;AAEF;;AAEG;AACI,MAAM,qBAAqB,GAAG,CAAC,IAAiB,EAAE,OAAe,KAAI;AAC1E,IAAA,IAAI,IAAI,IAAI,IAAI,EAAE;QAChB,MAAM,gBAAgB,GAAG,IAAI,CAAC,aAAa,CACzC,CAA6B,0BAAA,EAAA,OAAO,CAAI,EAAA,CAAA,CAC1B,CAAC;AACjB,QAAA,IAAI,gBAAgB,IAAI,IAAI,EAAE;AAC5B,YAAA,MAAM,aAAa,GAAG,WAAW,CAAC,gBAAgB,CAAC,CAAC;YACpD,IAAI,aAAa,KAAK,QAAQ,IAAI,aAAa,KAAK,QAAQ,EAAE;AAC5D,gBAAA,OAAO,EAAE,SAAS,EAAE,YAAY,CAAC,gBAAgB,CAAC,EAAE,IAAI,EAAE,aAAa,EAAE,CAAC;aAC3E;AAAM,iBAAA,IAAI,aAAa,KAAK,QAAQ,EAAE;AACrC,gBAAA,OAAO,EAAE,IAAI,EAAE,QAAQ,EAAE,CAAC;aAC3B;YACD,OAAO;AACL,gBAAA,MAAM,EAAE,SAAS,CAAC,gBAAgB,CAAC;AACnC,gBAAA,SAAS,EAAE,YAAY,CAAC,gBAAgB,CAAC;AACzC,gBAAA,IAAI,EAAE,MAAM;aACb,CAAC;SACH;KACF;AACD,IAAA,OAAO,IAAI,CAAC;AACd,CAAC,CAAC;AAEF;;AAEG;AACI,MAAM,aAAa,GAAG,CAAC,IAAiB,EAAE,OAAe,KAAI;AAClE,IAAA,IAAI,IAAI,IAAI,IAAI,EAAE;AAChB,QAAA,OAAO,IAAI,CAAC,gBAAgB,CAAC,CAA+B,4BAAA,EAAA,OAAO,CAAI,EAAA,CAAA,CAAC,CAAC,MAAM,GAAG,CAAC,CAAC;KACrF;AACD,IAAA,OAAO,KAAK,CAAC;AACf,CAAC,CAAC;AAEF;;AAEG;AACI,MAAM,cAAc,GAAG,CAAC,IAAiB,EAAE,OAAe,KAAI;AACnE,IAAA,IAAI,IAAI,IAAI,IAAI,EAAE;AAChB,QAAA,OAAO,IAAI,CAAC,gBAAgB,CAAC,CAA8B,2BAAA,EAAA,OAAO,CAAI,EAAA,CAAA,CAAC,CAAC,MAAM,GAAG,CAAC,CAAC;KACpF;AACD,IAAA,OAAO,KAAK,CAAC;AACf,CAAC;;ACxQD;;AAEG;AACH,SAAS,qBAAqB,CAC5B,aAA0B,EAC1B,eAA4B,EAC5B,YAAoC,EACpC,cAAsB,EACtB,KAAc,EACd,gBAA2B,EAC3B,QAAqC,EAAA;AAErC,IAAA,MAAM,SAAS,GAAG,YAAY,CAAC,aAAa,CAAC,CAAC;AAE9C,IAAA,IAAI,WAAW,CAAC;AAChB,IAAA,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,YAAY,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;QAC5C,IAAI,YAAY,CAAC,CAAC,CAAC,CAAC,GAAG,KAAK,SAAS,EAAE;YACrC,WAAW,GAAG,CAAC,CAAC;YAChB,MAAM;SACP;KACF;IACD,IAAI,WAAW,IAAI,IAAI,IAAI,gBAAgB,IAAI,IAAI,EAAE;QACnD,IAAI,WAAW,GAAG,CAAC,CAAC;QACpB,IAAI,SAAS,GAAG,CAAC,CAAC;QAElB,MAAM,kBAAkB,GAAG,uBAAuB,CAAC,YAAY,EAAE,IAAI,CAAC,CAAC;AACvE,QAAA,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,kBAAkB,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;AAClD,YAAA,MAAM,WAAW,GAAG,kBAAkB,CAAC,CAAC,CAAC,CAAC;AAC1C,YAAA,IAAI,WAAW,GAAG,WAAW,EAAE;AAC7B,gBAAA,WAAW,IAAI,gBAAgB,CAAC,WAAW,CAAC,CAAC;aAC9C;iBAAM;gBACL,MAAM;aACP;SACF;QACD,MAAM,gBAAgB,GAAG,uBAAuB,CAAC,YAAY,EAAE,KAAK,CAAC,CAAC;AACtE,QAAA,KAAK,IAAI,CAAC,GAAG,gBAAgB,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE;AACrD,YAAA,MAAM,WAAW,GAAG,gBAAgB,CAAC,CAAC,CAAC,CAAC;AACxC,YAAA,IAAI,WAAW,GAAG,WAAW,EAAE;AAC7B,gBAAA,SAAS,IAAI,gBAAgB,CAAC,WAAW,CAAC,CAAC;aAC5C;iBAAM;gBACL,MAAM;aACP;SACF;AAED,QAAA,MAAM,sBAAsB,GAAG,0BAA0B,CACvD,aAAa,EACb,eAAe,EACf,WAAW,EACX,SAAS,EACT,cAAc,EACd,KAAK,CACN,CAAC;AACF,QAAA,MAAM,gBAAgB,GAAG,sBAAsB,CAAC,IAAI,CAAC;AACrD,QAAA,MAAM,eAAe,GAAG,gBAAgB,IAAI,CAAC,CAAC;AAC9C,QAAA,MAAM,iBAAiB,GAAG,sBAAsB,CAAC,KAAK,CAAC;AACvD,QAAA,MAAM,gBAAgB,GAAG,iBAAiB,IAAI,CAAC,CAAC;;AAGhD,QAAA,IAAI,eAAe,IAAI,gBAAgB,EAAE;YACvC,OAAO;SACR;QAED,IAAI,QAAQ,IAAI,IAAI,IAAI,QAAQ,KAAK,QAAQ,EAAE;;;YAG7C,IAAI,eAAe,EAAE;AACnB,gBAAA,IAAI,IAAI,CAAC,GAAG,CAAC,iBAAiB,CAAC,GAAG,IAAI,CAAC,GAAG,CAAC,gBAAgB,CAAC,EAAE;AAC5D,oBAAA,eAAe,CAAC,UAAU,GAAG,iBAAiB,CAC5C,eAAe,CAAC,UAAU,GAAG,gBAAgB,EAC7C,KAAK,CACN,CAAC;iBACH;qBAAM;AACL,oBAAA,eAAe,CAAC,UAAU,GAAG,iBAAiB,CAC5C,eAAe,CAAC,UAAU,GAAG,iBAAiB,EAC9C,IAAI,CACL,CAAC;iBACH;aACF;iBAAM,IAAI,gBAAgB,EAAE;AAC3B,gBAAA,IAAI,IAAI,CAAC,GAAG,CAAC,gBAAgB,CAAC,GAAG,IAAI,CAAC,GAAG,CAAC,iBAAiB,CAAC,EAAE;AAC5D,oBAAA,eAAe,CAAC,UAAU,GAAG,iBAAiB,CAC5C,eAAe,CAAC,UAAU,GAAG,iBAAiB,EAC9C,IAAI,CACL,CAAC;iBACH;qBAAM;AACL,oBAAA,eAAe,CAAC,UAAU,GAAG,iBAAiB,CAC5C,eAAe,CAAC,UAAU,GAAG,gBAAgB,EAC7C,KAAK,CACN,CAAC;iBACH;aACF;SACF;AAAM,aAAA,IAAI,QAAQ,KAAK,OAAO,EAAE;AAC/B,YAAA,eAAe,CAAC,UAAU,GAAG,iBAAiB,CAC5C,eAAe,CAAC,UAAU,GAAG,gBAAgB,EAC7C,KAAK,CACN,CAAC;SACH;aAAM;AACL,YAAA,eAAe,CAAC,UAAU,GAAG,iBAAiB,CAC5C,eAAe,CAAC,UAAU,GAAG,iBAAiB,EAC9C,IAAI,CACL,CAAC;SACH;KACF;AACH,CAAC;AAED;;AAEG;AACH,MAAM,kBAAkB,GAAG,CACzB,IAAoB,EACpB,OAAe,EACf,UAAuB,EACvB,eAA4B,EAC5B,eAAuB,EACvB,QAAsC,KACpC;IACF,MAAM,SAAS,GAAG,oBAAoB,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC;IACtD,MAAM,YAAY,GAAG,uBAAuB,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC;AAC5D,IAAA,MAAM,oBAAoB,GAAG,wBAAwB,CACnD,UAAU,EACV,eAAe,EACf,SAAS,EACT,YAAY,EACZ,eAAe,CAChB,CAAC;AACF,IAAA,MAAM,eAAe,GAAG,oBAAoB,CAAC,GAAG,CAAC;AACjD,IAAA,MAAM,cAAc,GAAG,eAAe,IAAI,CAAC,CAAC;AAC5C,IAAA,MAAM,kBAAkB,GAAG,oBAAoB,CAAC,MAAM,CAAC;AACvD,IAAA,MAAM,iBAAiB,GAAG,kBAAkB,IAAI,CAAC,CAAC;;AAGlD,IAAA,IAAI,cAAc,IAAI,iBAAiB,EAAE;QACvC,OAAO;KACR;IACD,IAAI,QAAQ,IAAI,IAAI,IAAI,QAAQ,KAAK,QAAQ,EAAE;;;QAG7C,IAAI,iBAAiB,EAAE;AACrB,YAAA,IAAI,IAAI,CAAC,GAAG,CAAC,eAAe,CAAC,GAAG,IAAI,CAAC,GAAG,CAAC,kBAAkB,CAAC,EAAE;AAC5D,gBAAA,eAAe,CAAC,SAAS,GAAG,iBAAiB,CAC3C,eAAe,CAAC,SAAS,GAAG,kBAAkB,EAC9C,IAAI,CACL,CAAC;aACH;iBAAM;AACL,gBAAA,eAAe,CAAC,SAAS,GAAG,iBAAiB,CAC3C,eAAe,CAAC,SAAS,GAAG,eAAe,EAC3C,KAAK,CACN,CAAC;aACH;SACF;aAAM,IAAI,cAAc,EAAE;AACzB,YAAA,IAAI,IAAI,CAAC,GAAG,CAAC,kBAAkB,CAAC,GAAG,IAAI,CAAC,GAAG,CAAC,eAAe,CAAC,EAAE;AAC5D,gBAAA,eAAe,CAAC,SAAS,GAAG,iBAAiB,CAC3C,eAAe,CAAC,SAAS,GAAG,eAAe,EAC3C,KAAK,CACN,CAAC;aACH;iBAAM;AACL,gBAAA,eAAe,CAAC,SAAS,GAAG,iBAAiB,CAC3C,eAAe,CAAC,SAAS,GAAG,kBAAkB,EAC9C,IAAI,CACL,CAAC;aACH;SACF;KACF;AAAM,SAAA,IAAI,QAAQ,KAAK,KAAK,EAAE;AAC7B,QAAA,eAAe,CAAC,SAAS,GAAG,iBAAiB,CAC3C,eAAe,CAAC,SAAS,GAAG,eAAe,EAC3C,KAAK,CACN,CAAC;KACH;SAAM;AACL,QAAA,eAAe,CAAC,SAAS,GAAG,iBAAiB,CAC3C,eAAe,CAAC,SAAS,GAAG,kBAAkB,EAC9C,IAAI,CACL,CAAC;KACH;AACH,CAAC,CAAC;AAEF;;;AAGG;AACH,MAAM,iBAAiB,GAAG,CAAC,KAAa,EAAE,MAAe,KAAI;;;AAG3D,IAAA,OAAO,MAAM,GAAG,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;AACvD,CAAC,CAAC;AAEF;;AAEG;AACH,MAAM,0BAA0B,GAAG,CACjC,OAAoB,EACpB,eAA4B,EAC5B,WAAmB,EACnB,SAAiB,EACjB,cAAsB,EACtB,KAAc,KACZ;AACF,IAAA,MAAM,WAAW,GAAG,OAAO,CAAC,qBAAqB,EAAE,CAAC;AACpD,IAAA,MAAM,YAAY,GAAG,eAAe,CAAC,qBAAqB,EAAE,CAAC;IAE7D,IAAI,KAAK,EAAE;QACT,OAAO;YACL,IAAI,EAAE,YAAY,CAAC,IAAI,GAAG,WAAW,CAAC,IAAI,GAAG,SAAS,GAAG,cAAc;YACvE,KAAK,EAAE,WAAW,CAAC,KAAK,GAAG,YAAY,CAAC,KAAK,GAAG,WAAW;SAC5D,CAAC;KACH;SAAM;QACL,OAAO;YACL,IAAI,EAAE,YAAY,CAAC,IAAI,GAAG,WAAW,CAAC,IAAI,GAAG,WAAW;YACxD,KAAK,EAAE,WAAW,CAAC,KAAK,GAAG,YAAY,CAAC,KAAK,GAAG,SAAS,GAAG,cAAc;SAC3E,CAAC;KACH;AACH,CAAC,CAAC;AAEF;;AAEG;AACI,MAAM,wBAAwB,GAAG,CACtC,OAAoB,EACpB,eAA4B,EAC5B,SAAiB,EACjB,YAAoB,EACpB,eAAuB,KACrB;AACF,IAAA,MAAM,WAAW,GAAG,OAAO,CAAC,qBAAqB,EAAE,CAAC;AACpD,IAAA,MAAM,YAAY,GAAG,eAAe,CAAC,qBAAqB,EAAE,CAAC;IAE7D,OAAO;QACL,GAAG,EAAE,YAAY,CAAC,GAAG,GAAG,WAAW,CAAC,GAAG,GAAG,SAAS;QACnD,MAAM,EAAE,WAAW,CAAC,MAAM,GAAG,YAAY,CAAC,MAAM,GAAG,YAAY,GAAG,eAAe;KAClF,CAAC;AACJ,CAAC,CAAC;AAEF;;AAEG;AACG,SAAU,2BAA2B,CACzC,IAAoB,EACpB,YAAoC,EACpC,gBAA0B,EAC1B,KAAc,EACd,wBAA2D,EAAA;AAE3D,IAAA,MAAM,CAAC,GAAG,gCAAgC,CACxC,IAAI,EACJ,YAAY,EACZ,gBAAgB,EAChB,wBAAwB,CACzB,CAAC;IACF,IAAI,CAAC,UAAU,GAAG,CAAC,IAAI,IAAI,IAAI,KAAK,GAAG,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;AACrD,CAAC;AAED;;AAEG;SACa,yBAAyB,CACvC,IAAoB,EACpB,OAAe,EACf,sBAAuD,EAAA;IAEvD,MAAM,CAAC,GAAG,+BAA+B,CAAC,IAAI,EAAE,OAAO,EAAE,sBAAsB,CAAC,CAAC;AACjF,IAAA,IAAI,CAAC,SAAS,GAAG,CAAC,IAAI,IAAI,GAAG,CAAC,GAAG,CAAC,CAAC;AACrC,CAAC;AAED;;AAEG;AACH,SAAS,gCAAgC,CACvC,IAAoB,EACpB,YAAoC,EACpC,gBAA0B,EAC1B,cAAiD,EAAA;AAEjD,IAAA,IAAI,cAAc,IAAI,IAAI,EAAE;AAC1B,QAAA,IAAI,SAAS,CAAC;QACd,IAAI,SAAS,GAAG,KAAK,CAAC;AACtB,QAAA,IAAI,cAAc,CAAC,SAAS,IAAI,IAAI,EAAE;;YAEpC,SAAS,GAAG,IAAI,CAAC;AACjB,YAAA,SAAS,GAAG,cAAc,CAAC,SAAS,CAAC;SACtC;AAAM,aAAA,IAAI,cAAc,CAAC,OAAO,IAAI,IAAI,IAAI,cAAc,CAAC,CAAC,IAAI,IAAI,EAAE;;YAErE,SAAS,GAAG,IAAI,CAAC;YACjB,MAAM,+BAA+B,GAAG,2BAA2B,CACjE,IAAI,EACJ,YAAY,EACZ,gBAAgB,CACjB,CAAC;AACF,YAAA,SAAS,GAAG,+BAA+B,CAAC,SAAS,CAAC;SACvD;QACD,IAAI,SAAS,EAAE;AACb,YAAA,IAAI,SAAS,IAAI,IAAI,EAAE;gBACrB,IAAI,CAAC,GAAG,CAAC,CAAC;AACV,gBAAA,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,gBAAgB,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;oBAChD,IAAI,YAAY,CAAC,CAAC,CAAC,CAAC,GAAG,KAAK,SAAS,EAAE;AACrC,wBAAA,OAAO,CAAC,IAAI,cAAc,CAAC,OAAO,IAAI,IAAI,GAAG,cAAc,CAAC,OAAO,GAAG,CAAC,CAAC,CAAC;qBAC1E;oBACD,IAAI,YAAY,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,UAAU,KAAK,OAAO,EAAE;AAChD,wBAAA,CAAC,IAAI,gBAAgB,CAAC,CAAC,CAAC,CAAC;qBAC1B;iBACF;aACF;SACF;AAAM,aAAA,IAAI,cAAc,CAAC,CAAC,IAAI,IAAI,EAAE;YACnC,OAAO,cAAc,CAAC,CAAC,CAAC;SACzB;KACF;;AAED,IAAA,OAAO,SAAS,CAAC;AACnB,CAAC;AAED;;AAEG;AACH,SAAS,+BAA+B,CACtC,IAAoB,EACpB,OAAe,EACf,cAA+C,EAAA;AAE/C,IAAA,IAAI,cAAc,IAAI,IAAI,EAAE;AAC1B,QAAA,IAAI,MAAM,CAAC;QACX,IAAI,MAAM,GAAG,KAAK,CAAC;AACnB,QAAA,IAAI,cAAc,CAAC,MAAM,IAAI,IAAI,EAAE;;YAEjC,MAAM,GAAG,IAAI,CAAC;AACd,YAAA,MAAM,GAAG,cAAc,CAAC,MAAM,CAAC;SAChC;AAAM,aAAA,IAAI,cAAc,CAAC,OAAO,IAAI,IAAI,IAAI,cAAc,CAAC,CAAC,IAAI,IAAI,EAAE;;YAErE,MAAM,GAAG,IAAI,CAAC;YACd,MAAM,GAAG,yBAAyB,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC,MAAM,CAAC;SAC1D;QACD,IAAI,MAAM,EAAE;AACV,YAAA,IAAI,MAAM,IAAI,IAAI,EAAE;gBAClB,IAAI,CAAC,GAAG,CAAC,CAAC;gBACV,MAAM,WAAW,GAAG,IAAI,CAAC,gBAAgB,CAAC,CAA4B,yBAAA,EAAA,OAAO,CAAI,EAAA,CAAA,CAAC,CAAC;AACnF,gBAAA,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,WAAW,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;oBAC3C,IAAI,MAAM,KAAK,SAAS,CAAC,WAAW,CAAC,CAAC,CAAgB,CAAC,EAAE;AACvD,wBAAA,OAAO,CAAC,IAAI,cAAc,CAAC,OAAO,IAAI,IAAI,GAAG,cAAc,CAAC,OAAO,GAAG,CAAC,CAAC,CAAC;qBAC1E;oBACD,CAAC,IAAI,WAAW,CAAC,CAAC,CAAC,CAAC,qBAAqB,EAAE,CAAC,MAAM,CAAC;iBACpD;aACF;SACF;AAAM,aAAA,IAAI,cAAc,CAAC,CAAC,IAAI,IAAI,EAAE;YACnC,OAAO,cAAc,CAAC,CAAC,CAAC;SACzB;KACF;;AAED,IAAA,OAAO,SAAS,CAAC;AACnB,CAAC;AAED;;;AAGG;AACG,SAAU,2BAA2B,CACzC,IAAoB,EACpB,YAAoC,EACpC,gBAA0B,EAC1B,aAAsB,EAAA;;IAGtB,MAAM,UAAU,GAAG,IAAI,CAAC,GAAG,CAAC,aAAa,IAAI,IAAI,GAAG,IAAI,CAAC,UAAU,GAAG,aAAa,CAAC,CAAC;AAErF,IAAA,MAAM,cAAc,GAAqC;AACvD,QAAA,CAAC,EAAE,UAAU;AACb,QAAA,SAAS,EAAE,SAAS;AACpB,QAAA,OAAO,EAAE,SAAS;KACnB,CAAC;IAEF,IAAI,SAAS,GAAG,CAAC,CAAC;AAClB,IAAA,IAAI,YAAY,CAAC,MAAM,GAAG,CAAC,EAAE;AAC3B,QAAA,IAAI,UAAU,KAAK,CAAC,EAAE;YACpB,cAAc,CAAC,SAAS,GAAG,YAAY,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC;AAC/C,YAAA,cAAc,CAAC,OAAO,GAAG,CAAC,CAAC;AAC3B,YAAA,OAAO,cAAc,CAAC;SACvB;KACF;AACD,IAAA,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,YAAY,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;QAC5C,IAAI,YAAY,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,UAAU,KAAK,OAAO,EAAE;AAChD,YAAA,SAAS,IAAI,gBAAgB,CAAC,CAAC,CAAC,CAAC;SAClC;AACD,QAAA,IAAI,UAAU,GAAG,SAAS,EAAE;YAC1B,cAAc,CAAC,SAAS,GAAG,YAAY,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC;YAC/C,cAAc,CAAC,OAAO,GAAG,gBAAgB,CAAC,CAAC,CAAC,GAAG,UAAU,GAAG,SAAS,CAAC;YACtE,MAAM;SACP;KACF;AACD,IAAA,OAAO,cAAc,CAAC;AACxB,CAAC;AAED;;;AAGG;SACa,yBAAyB,CACvC,IAAoB,EACpB,OAAe,EACf,YAAqB,EAAA;;IAGrB,MAAM,SAAS,GAAG,IAAI,CAAC,GAAG,CAAC,YAAY,IAAI,IAAI,GAAG,IAAI,CAAC,SAAS,GAAG,YAAY,CAAC,CAAC;AAEjF,IAAA,MAAM,cAAc,GAAmC;AACrD,QAAA,CAAC,EAAE,SAAS;AACZ,QAAA,MAAM,EAAE,SAAS;AACjB,QAAA,OAAO,EAAE,SAAS;KACnB,CAAC;IAEF,IAAI,SAAS,GAAG,CAAC,CAAC;IAClB,MAAM,WAAW,GAAG,IAAI,CAAC,gBAAgB,CAAC,CAA4B,yBAAA,EAAA,OAAO,CAAI,EAAA,CAAA,CAAC,CAAC;AACnF,IAAA,IAAI,WAAW,CAAC,MAAM,GAAG,CAAC,EAAE;AAC1B,QAAA,IAAI,SAAS,KAAK,CAAC,EAAE;YACnB,cAAc,CAAC,MAAM,GAAG,oBAAoB,CAAC,IAAI,EAAE,OAAO,EAAE,CAAC,CAAM,CAAC;AACpE,YAAA,cAAc,CAAC,OAAO,GAAG,CAAC,CAAC;AAC3B,YAAA,OAAO,cAAc,CAAC;SACvB;KACF;AACD,IAAA,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,WAAW,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;QAC3C,MAAM,SAAS,GAAG,WAAW,CAAC,CAAC,CAAC,CAAC,qBAAqB,EAAE,CAAC,MAAM,CAAC;QAChE,SAAS,IAAI,SAAS,CAAC;AACvB,QAAA,IAAI,SAAS,GAAG,SAAS,EAAE;YACzB,cAAc,CAAC,MAAM,GAAG,oBAAoB,CAAC,IAAI,EAAE,OAAO,EAAE,CAAC,CAAM,CAAC;YACpE,cAAc,CAAC,OAAO,GAAG,SAAS,GAAG,SAAS,GAAG,SAAS,CAAC;YAC3D,MAAM;SACP;KACF;AACD,IAAA,OAAO,cAAc,CAAC;AACxB,CAAC;SAEe,iBAAiB,CAC/B,IAAoB,EACpB,OAAe,EACf,YAAoC,EACpC,UAAsB,EACtB,YAAgC,EAChC,KAAc,EACd,gBAA2B,EAC3B,cAA+B,EAAA;IAE/B,MAAM,QAAQ,GAAG,cAAc,EAAE,QAAQ,EAAE,IAAI,IAAI,CAAC;IACpD,IAAI,YAAY,CAAC,IAAI,CAAC,IAAI,KAAK,MAAM,EAAE;AACrC,QAAA,MAAM,UAAU,GAAGC,gCAAgB,CACjC,IAAI,EACJ,YAAY,CAAC,IAAI,CAAC,MAAM,EACxB,CAAA,yBAAA,EAA4B,OAAO,CAAA,EAAA,CAAI,CACzB,CAAC;AACjB,QAAA,IAAI,UAAU,IAAI,IAAI,EAAE;YACtB,kBAAkB,CAChB,IAAI,EACJ,OAAO,EACP,UAAU,EACV,QAAQ,EACR,UAAU,CAAC,SAAU,GAAG,UAAU,CAAC,aAAc,EACjD,YAAY,CAAC,SAAS,CACvB,CAAC;SACH;KACF;AACD,IAAA,MAAM,WAAW,GAAG,kBAAkB,CAAC,IAAI,EAAE,OAAO,EAAE,YAAY,CAAC,IAAI,CAAC,CAAC;AACzE,IAAA,IAAI,WAAW,IAAI,IAAI,EAAE;QACvB,qBAAqB,CACnB,WAAW,EACX,QAAQ,EACR,YAAY,EACZ,UAAU,CAAC,QAAS,GAAG,UAAU,CAAC,YAAa,EAC/C,KAAK,EACL,gBAAgB,EAChB,YAAY,CAAC,SAAS,CACvB,CAAC;KACH;AACH,CAAC;AAED;;;AAGG;AACa,SAAA,mBAAmB,CACjC,IAAoB,EACpB,OAAe,EACf,KAAc,EACd,YAAoC,EACpC,gBAA0B,EAC1B,gBAAkD,EAClD,mBAAiF,EAAA;AAEjF,IAAA,IAAI,WAAW,CAAC;IAChB,IAAI,iBAAiB,GAAG,CAAC,CAAC;IAC1B,IAAI,eAAe,GAAG,CAAC,CAAC;IAExB,MAAM,mBAAmB,GAAG,uBAAuB,CAAC,YAAY,EAAE,IAAI,CAAC,CAAC;AACxE,IAAA,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,mBAAmB,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;AACnD,QAAA,WAAW,GAAG,mBAAmB,CAAC,CAAC,CAAC,CAAC;AACrC,QAAA,wBAAwB,CAAC,IAAI,EAAE,OAAO,EAAE,KAAK,EAAE,WAAW,EAAE,iBAAiB,EAAE,IAAI,CAAC,CAAC;AACrF,QAAA,iBAAiB,IAAI,gBAAgB,CAAC,WAAW,CAAC,CAAC;KACpD;IACD,MAAM,iBAAiB,GAAG,uBAAuB,CAAC,YAAY,EAAE,KAAK,CAAC,CAAC;AACvE,IAAA,KAAK,IAAI,CAAC,GAAG,iBAAiB,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE;AACtD,QAAA,WAAW,GAAG,iBAAiB,CAAC,CAAC,CAAC,CAAC;AACnC,QAAA,wBAAwB,CAAC,IAAI,EAAE,OAAO,EAAE,KAAK,EAAE,WAAW,EAAE,eAAe,EAAE,KAAK,CAAC,CAAC;AACpF,QAAA,eAAe,IAAI,gBAAgB,CAAC,WAAW,CAAC,CAAC;KAClD;IAED,iBAAiB,CAAC,IAAI,EAAE,YAAY,EAAE,gBAAgB,EAAE,gBAAgB,EAAE,mBAAmB,CAAC,CAAC;AACjG,CAAC;AAED;;AAEG;AACI,MAAM,uBAAuB,GAAG,CACrC,YAAoC,EACpC,OAAgB,KACd;IACF,MAAM,aAAa,GAAG,EAAE,CAAC;IACzB,MAAM,IAAI,GAAG,OAAO,GAAG,OAAO,GAAG,KAAK,CAAC;AACvC,IAAA,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,YAAY,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;QAC5C,IAAI,YAAY,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,UAAU,KAAK,IAAI,EAAE;AAC7C,YAAA,aAAa,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;SACvB;KACF;AACD,IAAA,OAAO,aAAa,CAAC;AACvB,CAAC,CAAC;AAEF;;AAEG;AACH,MAAM,wBAAwB,GAAG,CAC/B,IAAoB,EACpB,OAAe,EACf,KAAc,EACd,WAAmB,EACnB,YAAoB,EACpB,OAAgB,KACd;IACF,MAAM,aAAa,GAAG,CAAC,OAAO,IAAI,CAAC,KAAK,MAAM,CAAC,OAAO,IAAI,KAAK,CAAC,GAAG,MAAM,GAAG,OAAO,CAAC;AACpF,IAAA,MAAM,UAAU,GAAG,CAAG,EAAA,YAAY,IAAI,CAAC;IAEvC,MAAM,cAAc,GAAG,IAAI,CAAC,gBAAgB,CAAC,CAA+B,4BAAA,EAAA,OAAO,CAAI,EAAA,CAAA,CAAC,CAAC;AACzF,IAAA,MAAM,aAAa,GAAG,cAAc,CAAC,WAAW,CAAgB,CAAC;AACjE,IAAA,aAAa,CAAC,KAAK,CAAC,aAAa,CAAC,GAAG,UAAU,CAAC;IAEhD,MAAM,WAAW,GAAG,IAAI,CAAC,gBAAgB,CAAC,CAA4B,yBAAA,EAAA,OAAO,CAAI,EAAA,CAAA,CAAC,CAAC;AACnF,IAAA,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,WAAW,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;AAC3C,QAAA,MAAM,UAAU,GAAG,WAAW,CAAC,CAAC,CAAgB,CAAC;QACjD,MAAM,YAAY,GAAG,UAAU,CAAC,gBAAgB,CAAC,CAA6B,0BAAA,EAAA,OAAO,CAAI,EAAA,CAAA,CAAC,CAAC;AAC3F,QAAA,MAAM,WAAW,GAAG,YAAY,CAAC,WAAW,CAAgB,CAAC;AAC7D,QAAA,WAAW,CAAC,KAAK,CAAC,aAAa,CAAC,GAAG,UAAU,CAAC;KAC/C;IAED,MAAM,cAAc,GAAG,IAAI,CAAC,gBAAgB,CAAC,CAA+B,4BAAA,EAAA,OAAO,CAAI,EAAA,CAAA,CAAC,CAAC;AACzF,IAAA,IAAI,cAAc,CAAC,MAAM,GAAG,CAAC,EAAE;AAC7B,QAAA,MAAM,aAAa,GAAG,cAAc,CAAC,WAAW,CAAgB,CAAC;AACjE,QAAA,aAAa,CAAC,KAAK,CAAC,aAAa,CAAC,GAAG,UAAU,CAAC;KACjD;AACH,CAAC,CAAC;AAEF;;AAEG;AACa,SAAA,iBAAiB,CAC/B,IAAoB,EACpB,YAAoC,EACpC,gBAA0B,EAC1B,gBAAkD,EAClD,mBAAiF,EACjF,UAAmB,EAAA;AAEnB,IAAA,IAAI,YAAY,CAAC,MAAM,GAAG,CAAC,EAAE;AAC3B,QAAA,IAAI,CAAC,CAAC;AACN,QAAA,IAAI,kBAAkB,CAAC;AACvB,QAAA,MAAM,iBAAiB,GAAG,2BAA2B,CACnD,IAAI,EACJ,YAAY,EACZ,gBAAgB,EAChB,UAAU,CACX,CAAC;AACF,QAAA,KAAK,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,YAAY,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;YACxC,IAAI,YAAY,CAAC,CAAC,CAAC,CAAC,GAAG,KAAK,iBAAiB,CAAC,SAAS,EAAE;gBACvD,kBAAkB,GAAG,CAAC,CAAC;gBACvB,MAAM;aACP;SACF;AAED,QAAA,IAAI,UAAU,CAAC;;;AAGf,QAAA,IAAI,iBAAiB,CAAC,CAAE,IAAI,CAAC,EAAE;YAC7B,MAAM,mBAAmB,GAAG,uBAAuB,CAAC,YAAY,EAAE,IAAI,CAAC,CAAC;AACxE,YAAA,KAAK,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,mBAAmB,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;AAC/C,gBAAA,MAAM,YAAY,GAAG,mBAAmB,CAAC,CAAC,CAAC,CAAC;AAC5C,gBAAA,IAAI,YAAY,GAAG,kBAAmB,EAAE;oBACtC,UAAU,GAAG,YAAY,CAAC;iBAC3B;qBAAM;oBACL,MAAM;iBACP;aACF;SACF;AAED,QAAA,IAAI,QAAQ,CAAC;QACb,IAAI,YAAY,GAAG,CAAC,CAAC;QACrB,MAAM,YAAY,GAAG,IAAI,CAAC,WAAW,GAAG,IAAI,CAAC,WAAW,CAAC;AACzD,QAAA,MAAM,WAAW,GAAG,YAAY,GAAG,iBAAiB,CAAC,CAAE,CAAC;;;AAGxD,QAAA,IAAI,WAAW,IAAI,CAAC,EAAE;YACpB,MAAM,iBAAiB,GAAG,uBAAuB,CAAC,YAAY,EAAE,KAAK,CAAC,CAAC;AACvE,YAAA,KAAK,IAAI,CAAC,GAAG,YAAY,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE;gBACjD,IAAI,iBAAiB,CAAC,OAAO,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE;oBACvC,QAAQ,GAAG,CAAC,CAAC;iBACd;qBAAM;AACL,oBAAA,YAAY,IAAI,gBAAgB,CAAC,CAAC,CAAC,CAAC;AACpC,oBAAA,IAAI,YAAY,GAAG,WAAW,EAAE;wBAC9B,MAAM;qBACP;iBACF;aACF;SACF;AACD,QAAA,IAAI,gBAAgB,CAAC,KAAK,IAAI,UAAU,IAAI,gBAAgB,CAAC,GAAG,IAAI,QAAQ,EAAE;YAC5E,mBAAmB,CAAC,EAAE,KAAK,EAAE,UAAU,EAAE,GAAG,EAAE,QAAQ,EAAE,CAAC,CAAC;SAC3D;KACF;AACH,CAAC;AAED;;AAEG;AACI,MAAM,iBAAiB,GAAG,CAC/B,aAAqC,EACrC,MAAuB,KACrB;IACF,QACE,MAAM,IAAI;QACR,QAAQ,EAAE,MAAK;YACb,OAAO,aAAa,CAAC,OAAO,CAAC;SAC9B;AACF,KAAA,EACD;AACJ,CAAC;;ACrnBD;;AAEG;AACa,SAAA,cAAc,CAAO,KAAyB,EAAE,KAAyB,EAAA;AACvF,IAAA,IAAI,KAAK,IAAI,IAAI,EAAE;QACjB,OAAO,KAAK,IAAI,IAAI,CAAC;KACtB;AACD,IAAA,IAAI,KAAK,IAAI,IAAI,EAAE;AACjB,QAAA,OAAO,KAAK,CAAC;KACd;AACD,IAAA,QACE,KAAK,EAAE,MAAM,KAAK,KAAK,EAAE,MAAM;AAC/B,QAAA,KAAK,EAAE,SAAS,KAAK,KAAK,EAAE,SAAS;AACrC,QAAA,KAAK,EAAE,IAAI,KAAK,KAAK,EAAE,IAAI,EAC3B;AACJ,CAAC;AAED;;;;AAIG;AACa,SAAA,wBAAwB,CACtC,IAAoB,EACpB,OAAe,EACf,YAAoC,EACpC,WAAuB,EACvB,oBAA+D,EAC/D,UAAmB,EAAA;AAEnB,IAAA,IAAI,cAAc,CAAC;AACnB,IAAA,MAAM,QAAQ,GAAG,WAAW,CAAC,IAAI,CAAC;AAClC,IAAA,IAAI,QAAQ,KAAK,QAAQ,EAAE;AACzB,QAAA,MAAM,SAAS,GAAG,WAAW,CAAC,SAAS,CAAC;AACxC,QAAA,IAAI,QAAQ,KAAK,MAAM,EAAE;AACvB,YAAA,MAAM,aAAa,GAAG,WAAW,CAAC,MAAM,CAAC;AACzC,YAAA,MAAM,iBAAiB,GAAGA,gCAAgB,CACxC,IAAI,EACJ,aAAgC,EAChC,CAA4B,yBAAA,EAAA,OAAO,CAAI,EAAA,CAAA,CACxC,CAAC;AACF,YAAA,IAAI,iBAAiB,IAAI,IAAI,EAAE;gBAC7B,MAAM,kBAAkB,GAAG,UAAU;sBAChC,iBAAiB,CAAC,sBAAsC;AAC3D,sBAAG,iBAAiB,CAAC,kBAAkC,CAAC;AAC1D,gBAAA,IAAI,kBAAkB,IAAI,IAAI,EAAE;AAC9B,oBAAA,MAAM,MAAM,GAAG,SAAS,CAAC,kBAAkB,CAAM,CAAC;AAClD,oBAAA,IAAI,MAAM,IAAI,IAAI,EAAE;AAClB,wBAAA,cAAc,GAAG,EAAE,MAAM,EAAE,MAAM,EAAE,SAAS,EAAE,SAAS,EAAE,IAAI,EAAE,MAAM,EAAgB,CAAC;AACtF,wBAAA,oBAAoB,CAAC,EAAE,KAAK,EAAE,cAAc,EAAE,CAAC,CAAC;qBACjD;iBACF;qBAAM,IAAI,UAAU,EAAE;AACrB,oBAAA,cAAc,GAAG,EAAE,SAAS,EAAE,WAAW,CAAC,SAAS,EAAE,IAAI,EAAE,QAAQ,EAAgB,CAAC;AACpF,oBAAA,oBAAoB,CAAC,EAAE,KAAK,EAAE,cAAc,EAAE,CAAC,CAAC;iBACjD;AAAM,qBAAA,IAAI,cAAc,CAAC,IAAI,EAAE,OAAO,CAAC,EAAE;AACxC,oBAAA,cAAc,GAAG,EAAE,SAAS,EAAE,WAAW,CAAC,SAAS,EAAE,IAAI,EAAE,QAAQ,EAAgB,CAAC;AACpF,oBAAA,oBAAoB,CAAC,EAAE,KAAK,EAAE,cAAc,EAAE,CAAC,CAAC;iBACjD;aACF;SACF;AAAM,aAAA,IAAI,QAAQ,KAAK,QAAQ,IAAI,CAAC,UAAU,EAAE;YAC/C,MAAM,MAAM,GAAG,uBAAuB,CAAC,IAAI,EAAE,OAAO,CAAM,CAAC;AAC3D,YAAA,IAAI,MAAM,IAAI,IAAI,EAAE;AAClB,gBAAA,cAAc,GAAG,EAAE,MAAM,EAAE,MAAM,EAAE,SAAS,EAAE,SAAS,EAAE,IAAI,EAAE,MAAM,EAAgB,CAAC;AACtF,gBAAA,oBAAoB,CAAC,EAAE,KAAK,EAAE,cAAc,EAAE,CAAC,CAAC;aACjD;AAAM,iBAAA,IAAI,aAAa,CAAC,IAAI,EAAE,OAAO,CAAC,EAAE;AACvC,gBAAA,cAAc,GAAG,EAAE,IAAI,EAAE,QAAQ,EAAgB,CAAC;AAClD,gBAAA,oBAAoB,CAAC,EAAE,KAAK,EAAE,cAAc,EAAE,CAAC,CAAC;aACjD;AAAM,iBAAA,IAAI,cAAc,CAAC,IAAI,EAAE,OAAO,CAAC,EAAE;AACxC,gBAAA,cAAc,GAAG,EAAE,SAAS,EAAE,WAAW,CAAC,SAAS,EAAE,IAAI,EAAE,QAAQ,EAAgB,CAAC;AACpF,gBAAA,oBAAoB,CAAC,EAAE,KAAK,EAAE,cAAc,EAAE,CAAC,CAAC;aACjD;SACF;AAAM,aAAA,IAAI,QAAQ,KAAK,QAAQ,IAAI,UAAU,EAAE;YAC9C,MAAM,MAAM,GAAG,sBAAsB,CAAC,IAAI,EAAE,OAAO,CAAM,CAAC;AAC1D,YAAA,IAAI,MAAM,IAAI,IAAI,EAAE;AAClB,gBAAA,cAAc,GAAG,EAAE,MAAM,EAAE,MAAM,EAAE,SAAS,EAAE,SAAS,EAAE,IAAI,EAAE,MAAM,EAAgB,CAAC;AACtF,gBAAA,oBAAoB,CAAC,EAAE,KAAK,EAAE,cAAc,EAAE,CAAC,CAAC;aACjD;AAAM,iBAAA,IAAI,aAAa,CAAC,IAAI,EAAE,OAAO,CAAC,EAAE;AACvC,gBAAA,cAAc,GAAG,EAAE,IAAI,EAAE,QAAQ,EAAgB,CAAC;AAClD,gBAAA,oBAAoB,CAAC,EAAE,KAAK,EAAE,cAAc,EAAE,CAAC,CAAC;aACjD;iBAAM;AACL,gBAAA,cAAc,GAAG,EAAE,SAAS,EAAE,WAAW,CAAC,SAAS,EAAE,IAAI,EAAE,QAAQ,EAAgB,CAAC;AACpF,gBAAA,oBAAoB,CAAC,EAAE,KAAK,EAAE,cAAc,EAAE,CAAC,CAAC;aACjD;SACF;KACF;SAAM;QACL,MAAM,YAAY,GAAG,qBAAqB,CAAC,YAAY,EAAE,IAAI,CAAC,CAAC;QAC/D,IAAI,UAAU,EAAE;YACd,cAAc,GAAG,EAAE,SAAS,EAAE,YAAY,EAAE,IAAI,EAAE,QAAQ,EAAgB,CAAC;AAC3E,YAAA,oBAAoB,CAAC,EAAE,KAAK,EAAE,cAAc,EAAE,CAAC,CAAC;SACjD;AAAM,aAAA,IAAI,cAAc,CAAC,IAAI,EAAE,OAAO,CAAC,EAAE;YACxC,cAAc,GAAG,EAAE,SAAS,EAAE,YAAY,EAAE,IAAI,EAAE,QAAQ,EAAgB,CAAC;AAC3E,YAAA,oBAAoB,CAAC,EAAE,KAAK,EAAE,cAAc,EAAE,CAAC,CAAC;SACjD;KACF;AACH,CAAC;AAED;;;;;;AAMG;SACa,oBAAoB,CAClC,IAAoB,EACpB,OAAe,EACf,YAAoC,EACpC,aAAqC,EACrC,WAAuB,EACvB,oBAA+D,EAC/D,UAAmB,EACnB,KAAc,EACd,gBAA2B,EAAA;IAE3B,MAAM,WAAW,GAAG,IAAI,CAAC,gBAAgB,CAAC,CAA4B,yBAAA,EAAA,OAAO,CAAI,EAAA,CAAA,CAAC,CAAC;AACnF,IAAA,IAAI,WAAW,CAAC,MAAM,GAAG,CAAC,EAAE;QAC1B,MAAM,sBAAsB,GAAG,yBAAyB,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC;AACxE,QAAA,MAAM,gBAAgB,GAAG,oBAAoB,CAAC,IAAI,EAAE,OAAO,EAAE,sBAAsB,CAAC,MAAO,CAAC,CAAC;AAC7F,QAAA,IAAI,cAAc,CAAC;QACnB,IAAI,UAAU,EAAE;AACd,YAAA,IAAI,sBAAsB,CAAC,OAAO,KAAK,CAAC,EAAE;gBACxC,cAAc,GAAG,IAAI,CAAC,GAAG,CAAC,gBAAiB,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC;aACrD;iBAAM;gBACL,cAAc,GAAG,gBAAiB,CAAC;aACpC;SACF;aAAM;AACL,YAAA,MAAM,YAAY,GAAG,IAAI,CAAC,qBAAqB,EAAE,CAAC;AAClD,YAAA,MAAM,eAAe,GACnB,aAAa,CAAC,OAAO,CAAC,SAAU,GAAG,aAAa,CAAC,OAAO,CAAC,aAAc,CAAC;AAC1E,YAAA,MAAM,cAAc,GAClB,YAAY,CAAC,MAAM,GAAG,uBAAuB,CAAC,IAAI,EAAE,OAAO,CAAC,GAAG,eAAe,CAAC;YACjF,cAAc,GAAG,gBAAiB,CAAC;YACnC,OAAO,WAAW,CAAC,MAAM,GAAG,cAAc,GAAG,CAAC,EAAE;gBAC9C,cAAc,IAAI,CAAC,CAAC;gBACpB,MAAM,aAAa,GAAG,WAAW,CAAC,cAAc,CAAC,CAAC,qBAAqB,EAAE,CAAC,MAAM,CAAC;AACjF,gBAAA,IAAI,aAAa,GAAG,cAAc,EAAE;oBAClC,MAAM;iBACP;aACF;SACF;QACD,MAAM,SAAS,GAAG,oBAAoB,CAAC,IAAI,EAAE,OAAO,EAAE,cAAc,CAAM,CAAC;AAC3E,QAAA,IAAI,SAAS,IAAI,IAAI,EAAE;AACrB,YAAA,MAAM,cAAc,GAAG;AACrB,gBAAA,MAAM,EAAE,SAAS;gBACjB,SAAS,EAAE,WAAW,CAAC,SAAS;AAChC,gBAAA,IAAI,EAAE,MAAM;aACC,CAAC;AAChB,YAAA,IAAI,SAAS,KAAK,WAAW,CAAC,MAAM,EAAE;AACpC,gBAAA,oBAAoB,CAAC,EAAE,KAAK,EAAE,cAAc,EAAE,CAAC,CAAC;aACjD;AACD,YAAA,iBAAiB,CACf,IAAI,EACJ,OAAO,EACP,YAAY,EACZ,aAAa,CAAC,OAAO,EACrB,EAAE,IAAI,EAAE,cAAc,EAAE,SAAS,EAAE,QAAQ,EAAE,SAAS,EAAE,UAAU,GAAG,QAAQ,GAAG,KAAK,EAAE,EACvF,KAAK,EACL,gBAAgB,CACjB,CAAC;SACH;KACF;AACH,CAAC;AAED;;;AAGG;AACH,SAAS,qBAAqB,CAC5B,UAAa,EACb,YAAoC,EACpC,UAAmB,EAAA;AAEnB,IAAA,IAAI,YAAY,GAAG,CAAC,CAAC,CAAC;AACtB,IAAA,MAAM,YAAY,GAAG,YAAY,CAAC,MAAM,CAAC;AACzC,IAAA,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,YAAY,EAAE,CAAC,EAAE,EAAE;QACrC,IAAI,YAAY,CAAC,CAAC,CAAC,CAAC,GAAG,KAAK,UAAU,EAAE;YACtC,YAAY,GAAG,CAAC,CAAC;YACjB,MAAM;SACP;KACF;AACD,IAAA,IAAI,UAAU,IAAI,YAAY,KAAK,CAAC,EAAE;QACpC,OAAO,YAAY,CAAC,YAAY,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC;KAC3C;SAAM,IAAI,CAAC,UAAU,IAAI,YAAY,KAAK,YAAY,GAAG,CAAC,EAAE;QAC3D,OAAO,YAAY,CAAC,YAAY,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC;KAC3C;AACD,IAAA,OAAO,IAAI,CAAC;AACd,CAAC;AAED;;;;AAIG;AACG,SAAU,2BAA2B,CACzC,YAAoC,EACpC,WAAuB,EACvB,oBAA+D,EAC/D,UAAmB,EAAA;AAEnB,IAAA,IAAI,cAAc,CAAC;AACnB,IAAA,MAAM,QAAQ,GAAG,WAAW,CAAC,IAAI,CAAC;AAClC,IAAA,IAAI,QAAQ,KAAK,QAAQ,EAAE;AACzB,QAAA,MAAM,UAAU,GAAG,WAAW,CAAC,SAAS,CAAC;QACzC,MAAM,MAAM,GAAG,qBAAqB,CAAC,UAAU,EAAE,YAAY,EAAE,UAAU,CAAC,CAAC;AAC3E,QAAA,IAAI,MAAM,IAAI,IAAI,EAAE;AAClB,YAAA,IAAI,QAAQ,KAAK,MAAM,EAAE;AACvB,gBAAA,cAAc,GAAG,EAAE,MAAM,EAAE,WAAW,CAAC,MAAM,EAAE,SAAS,EAAE,MAAM,EAAE,IAAI,EAAE,QAAQ,EAAE,CAAC;AACnF,gBAAA,oBAAoB,CAAC,EAAE,KAAK,EAAE,cAAc,EAAE,CAAC,CAAC;aACjD;iBAAM;gBACL,cAAc,GAAG,EAAE,SAAS,EAAE,MAAM,EAAE,IAAI,EAAE,QAAQ,EAAE,CAAC;AACvD,gBAAA,oBAAoB,CAAC,EAAE,KAAK,EAAE,cAAc,EAAE,CAAC,CAAC;aACjD;SACF;KACF;AACH,CAAC;AAED;;AAEG;AACH,SAAS,qBAAqB,CAAU,YAAoC,EAAE,OAAgB,EAAA;IAC5F,IAAI,OAAO,EAAE;AACX,QAAA,OAAO,YAAY,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC;KAC5B;IACD,OAAO,YAAY,CAAC,YAAY,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC;AACnD,CAAC;AAED;;;;;;;;AAQG;AACa,SAAA,uBAAuB,CACrC,IAAoB,EACpB,OAAe,EACf,YAAoC,EACpC,WAAuB,EACvB,oBAA+D,EAC/D,UAAmB,EACnB,WAAoB,EAAA;AAEpB,IAAA,IAAI,cAAc,CAAC;AACnB,IAAA,MAAM,QAAQ,GAAG,WAAW,CAAC,IAAI,CAAC;AAClC,IAAA,IAAI,QAAQ,KAAK,QAAQ,EAAE;AACzB,QAAA,MAAM,UAAU,GAAG,WAAW,CAAC,SAAS,CAAC;QACzC,MAAM,MAAM,GAAG,qBAAqB,CAAC,YAAY,EAAE,UAAU,CAAC,CAAC;QAC/D,IAAI,WAAW,EAAE;AACf,YAAA,IAAI,aAAa,CAAC,IAAI,EAAE,OAAO,CAAC,EAAE;AAChC,gBAAA,cAAc,GAAG;AACf,oBAAA,IAAI,EAAE,QAAQ;iBACD,CAAC;gBAChB,IAAI,CAAC,cAAc,CAAC,cAAc,EAAE,WAAW,CAAC,EAAE;AAChD,oBAAA,oBAAoB,CAAC,EAAE,KAAK,EAAE,cAAc,EAAE,CAAC,CAAC;iBACjD;aACF;iBAAM;gBACL,MAAM,SAAS,GAAG,UAAU;AAC1B,sBAAG,uBAAuB,CAAC,IAAI,EAAE,OAAO,CAAO;AAC/C,sBAAG,sBAAsB,CAAC,IAAI,EAAE,OAAO,CAAO,CAAC;AACjD,gBAAA,IAAI,SAAS,IAAI,IAAI,EAAE;AACrB,oBAAA,cAAc,GAAG;AACf,wBAAA,MAAM,EAAE,SAAS;AACjB,wBAAA,SAAS,EAAE,MAAM;AACjB,wBAAA,IAAI,EAAE,MAAM;qBACC,CAAC;oBAChB,IAAI,CAAC,cAAc,CAAC,cAAc,EAAE,WAAW,CAAC,EAAE;AAChD,wBAAA,oBAAoB,CAAC,EAAE,KAAK,EAAE,cAAc,EAAE,CAAC,CAAC;qBACjD;iBACF;aACF;SACF;AAAM,aAAA,IAAI,MAAM,KAAK,UAAU,EAAE;AAChC,YAAA,IAAI,QAAQ,KAAK,MAAM,EAAE;AACvB,gBAAA,cAAc,GAAG,EAAE,MAAM,EAAE,WAAW,CAAC,MAAM,EAAE,SAAS,EAAE,MAAM,EAAE,IAAI,EAAE,QAAQ,EAAE,CAAC;AACnF,gBAAA,oBAAoB,CAAC,EAAE,KAAK,EAAE,cAAc,EAAE,CAAC,CAAC;aACjD;iBAAM;gBACL,cAAc,GAAG,EAAE,SAAS,EAAE,MAAM,EAAE,IAAI,EAAE,QAAQ,EAAE,CAAC;AACvD,gBAAA,oBAAoB,CAAC,EAAE,KAAK,EAAE,cAAc,EAAE,CAAC,CAAC;aACjD;SACF;KACF;AACH;;ACjTA;;;;;;AAMG;AAsCH;AACA,MAAM,yBAAyB,GAAG,CAAC,CAAC;AACpC,MAAM,yBAAyB,GAAG,GAAG,CAAC;AAEtC;AACA,MAAM,eAAe,GAAG;IACtB,GAAG;IACH,IAAI;IACJ,OAAO;AACP,IAAA,KAAK;IACL,QAAQ;IACR,WAAW;IACX,SAAS;IACT,YAAY;IACZ,WAAW;IACX,MAAM;IACN,KAAK;IACL,QAAQ;IACR,UAAU;CACX,CAAC;AAEF;;AAEG;AACG,SAAU,gBAAgB,CAAiD,EAC/E,aAAa,EACb,OAAO,EACP,KAAK,EACL,YAAY,EACZ,aAAa,EACb,4BAA4B,EAC5B,oBAAoB,EACpB,gBAAgB,EAChB,mBAAmB,EACnB,oBAAoB,EACW,EAAA;;AAE/B,IAAA,MAAM,iBAAiB,GAAGpB,YAAM,CAAU,KAAK,CAAC,CAAC;;AAGjD,IAAA,MAAM,aAAa,GAAGA,YAAM,CAAU,IAAI,CAAC,CAAC;AAC5C,IAAA,aAAa,CAAC,OAAO,GAAG,IAAI,CAAC;AAC7B,IAAA,MAAM,4BAA4B,GAAGA,YAAM,CAA0B,IAAI,CAAC,CAAC;;AAG3E,IAAA,MAAM,WAAW,GAAGA,YAAM,CAAU,KAAK,CAAC,CAAC;IAC3C,MAAM,CAAC,cAAc,EAAE,iBAAiB,CAAC,GAAGpB,cAAQ,CAAU,KAAK,CAAC,CAAC;IACrE,MAAM,CAAC,eAAe,EAAE,kBAAkB,CAAC,GAAGA,cAAQ,CAAU,KAAK,CAAC,CAAC;;AAGvE,IAAA,MAAM,gBAAgB,GAAGoB,YAAM,CAAU,KAAK,CAAC,CAAC;AAChD,IAAA,MAAM,eAAe,GAAGA,YAAM,CAAuC,IAAI,CAAC,CAAC;AAC3E,IAAA,MAAM,0BAA0B,GAAGA,YAAM,CAAiB,IAAI,CAAC,CAAC;;IAGhE,MAAM,CAAC,WAAW,EAAE,cAAc,CAAC,GAAGpB,cAAQ,CAAyB,mBAAmB,CAAC,CAAC;AAC5F,IAAA,MAAM,cAAc,GAAGoB,YAAM,CAAyB,mBAAmB,CAAC,CAAC;;IAG3E,MAAM,CAAC,SAAS,EAAE,YAAY,CAAC,GAAGpB,cAAQ,CAAU,KAAK,CAAC,CAAC;;AAG3D,IAAA,MAAM,oBAAoB,GAAGyC,aAAO,CAAC,MAAK;QACxC,OAAO,CAAC,MAA+B,KAAI;AACzC,YAAA,cAAc,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;AAC7B,YAAA,cAAc,CAAC,OAAO,GAAG,MAAM,CAAC,KAAK,CAAC;AACtC,YAAA,4BAA4B,CAAC,OAAO,GAAG,SAAS,CAAC;AACjD,YAAA,IAAI,oBAAoB,IAAI,IAAI,EAAE;gBAChC,oBAAoB,CAAC,MAAM,CAAC,CAAC;aAC9B;AACH,SAAC,CAAC;AACJ,KAAC,EAAE,CAAC,oBAAoB,EAAE,4BAA4B,CAAC,CAAC,CAAC;;AAGzD,IAAA,MAAM,sBAAsB,GAAGrB,YAAM,CAAyB,mBAAmB,CAAC,CAAC;AACnF,IAAA,IAAI,sBAAsB,CAAC,OAAO,KAAK,mBAAmB,EAAE;AAC1D,QAAA,sBAAsB,CAAC,OAAO,GAAG,mBAAmB,CAAC;QACrD,IAAI,CAAC,cAAc,CAAC,WAAW,EAAE,mBAAmB,CAAC,EAAE;AACrD,YAAA,oBAAoB,CAAC,EAAE,KAAK,EAAE,mBAAmB,EAAE,CAAC,CAAC;SACtD;KACF;;AAGD,IAAA,MAAM,cAAc,GAAGE,iBAAW,CAAC,MAAK;AACtC,QAAA,WAAW,CAAC,OAAO,GAAG,KAAK,CAAC;QAC5B,iBAAiB,CAAC,KAAK,CAAC,CAAC;QACzB,kBAAkB,CAAC,KAAK,CAAC,CAAC;KAC3B,EAAE,EAAE,CAAC,CAAC;;IAGP,MAAM,qBAAqB,GAAGA,iBAAW,CACvC,CAAC,IAAgB,EAAE,sBAAgC,KAAI;AACrD,QAAA,MAAM,WAAW,GAAG,aAAa,CAAC,OAAO,CAAC;AAC1C,QAAA,IAAI,WAAW,IAAI,IAAI,EAAE;YACvB,iBAAiB,CAAC,KAAK,CAAC,CAAC;AACzB,YAAA,kBAAkB,CAChB,0BAA0B,CAAC,OAAO,KAAK,IAAI;kBACvC,0BAA0B,CAAC,OAAO;AACpC,kBAAE,CAAC,gBAAgB,CAAC,OAAO,CAC9B,CAAC;YACF,IAAI,CAAC,gBAAgB,CAAC,OAAO,IAAI,CAAC,sBAAsB,EAAE;AACxD,gBAAA,iBAAiB,CACf,WAAW,EACX,OAAO,EACP,YAAY,EACZ,aAAa,CAAC,OAAO,EACrB,EAAE,IAAI,EAAE,IAAI,EAAE,SAAS,EAAE,QAAQ,EAAE,SAAS,EAAE,QAAQ,EAAE,EACxD,KAAK,EACL,gBAAgB,CACjB,CAAC;aACH;YACD,IAAI,CAAC,cAAc,CAAC,IAAI,EAAE,WAAW,CAAC,EAAE;AACtC,gBAAA,oBAAoB,CAAC,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC,CAAC;aACvC;SACF;AACH,KAAC,EACD;QACE,aAAa;QACb,OAAO;QACP,YAAY;QACZ,aAAa;QACb,KAAK;QACL,WAAW;QACX,oBAAoB;QACpB,gBAAgB;AACjB,KAAA,CACF,CAAC;;IAGF,MAAM,mBAAmB,GAAGA,iBAAW,CACrC,CAAC,IAAgB,EAAE,UAAoB,EAAE,sBAAgC,KAAI;AAC3E,QAAA,MAAM,WAAW,GAAG,aAAa,CAAC,OAAO,CAAC;AAC1C,QAAA,IAAI,WAAW,IAAI,IAAI,EAAE;YACvB,iBAAiB,CAAC,IAAI,CAAC,CAAC;YACxB,IAAI,CAAC,UAAU,EAAE;gBACf,kBAAkB,CAAC,KAAK,CAAC,CAAC;gBAC1B,IAAI,CAAC,cAAc,CAAC,IAAI,EAAE,WAAW,CAAC,EAAE;AACtC,oBAAA,oBAAoB,CAAC,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC,CAAC;iBACvC;gBACD,IAAI,CAAC,gBAAgB,CAAC,OAAO,IAAI,CAAC,sBAAsB,EAAE;AACxD,oBAAA,iBAAiB,CACf,WAAW,EACX,OAAO,EACP,YAAY,EACZ,aAAa,CAAC,OAAO,EACrB,EAAE,IAAI,EAAE,IAAI,EAAE,SAAS,EAAE,QAAQ,EAAE,SAAS,EAAE,QAAQ,EAAE,EACxD,KAAK,EACL,gBAAgB,CACjB,CAAC;iBACH;aACF;SACF;AACH,KAAC,EACD;QACE,aAAa;QACb,OAAO;QACP,YAAY;QACZ,aAAa;QACb,KAAK;QACL,WAAW;QACX,oBAAoB;QACpB,gBAAgB;AACjB,KAAA,CACF,CAAC;;;AAIF,IAAA,MAAM,oBAAoB,GAAGA,iBAAW,CACtC,CAAC,IAAgB,KAAI;AACnB,QAAA,MAAM,WAAW,GAAG,aAAa,CAAC,OAAO,CAAC;AAC1C,QAAA,IAAI,WAAW,IAAI,IAAI,EAAE;YACvB,iBAAiB,CAAC,KAAK,CAAC,CAAC;YACzB,MAAM,kBAAkB,GAAG,kBAAkB,CAAC,WAAW,EAAE,OAAO,EAAE,IAAI,CAAC,CAAC;AAC1E,YAAA,IAAI,kBAAkB,IAAI,IAAI,EAAE;gBAC9B,kBAAkB,CAAC,KAAK,CAAC,EAAE,aAAa,EAAE,IAAI,EAAE,CAAC,CAAC;aACnD;iBAAM;gBACL,WAAW,CAAC,KAAK,CAAC,EAAE,aAAa,EAAE,IAAI,EAAE,CAAC,CAAC;aAC5C;SACF;AACH,KAAC,EACD,CAAC,aAAa,EAAE,OAAO,CAAC,CACzB,CAAC;;;AAIF,IAAA,MAAM,mBAAmB,GAAGA,iBAAW,CACrC,CAAC,KAAmB,KAAI;AACtB,QAAA,IAAI,KAAK,CAAC,WAAW,KAAK,OAAO,EAAE;AACjC,YAAA,IAAI,eAAe,CAAC,OAAO,IAAI,IAAI,EAAE;AACnC,gBAAA,YAAY,CAAC,eAAe,CAAC,OAAO,CAAC,CAAC;aACvC;AACD,YAAA,gBAAgB,CAAC,OAAO,GAAG,IAAI,CAAC;AAChC,YAAA,eAAe,CAAC,OAAO,GAAG,UAAU,CAAC,MAAK;AACxC,gBAAA,gBAAgB,CAAC,OAAO,GAAG,KAAK,CAAC;gBACjC,IAAI,eAAe,EAAE;oBACnB,kBAAkB,CAAC,KAAK,CAAC,CAAC;iBAC3B;aACF,EAAE,yBAAyB,CAAC,CAAC;SAC/B;AACH,KAAC,EACD,CAAC,eAAe,CAAC,CAClB,CAAC;;;AAIF,IAAA,MAAM,gBAAgB,GAAGA,iBAAW,CAAC,MAAK;AACxC,QAAA,IAAI,eAAe,CAAC,OAAO,IAAI,IAAI,EAAE;AACnC,YAAA,YAAY,CAAC,eAAe,CAAC,OAAO,CAAC,CAAC;SACvC;AACD,QAAA,gBAAgB,CAAC,OAAO,GAAG,IAAI,CAAC;AAChC,QAAA,eAAe,CAAC,OAAO,GAAG,UAAU,CAAC,MAAK;AACxC,YAAA,gBAAgB,CAAC,OAAO,GAAG,KAAK,CAAC;YACjC,IAAI,eAAe,EAAE;gBACnB,kBAAkB,CAAC,KAAK,CAAC,CAAC;aAC3B;SACF,EAAE,yBAAyB,CAAC,CAAC;AAChC,KAAC,EAAE,CAAC,eAAe,CAAC,CAAC,CAAC;;;;AAKtB,IAAA,MAAM,eAAe,GAAGA,iBAAW,CACjC,CAAC,KAAiB,KAAI;AACpB,QAAA,WAAW,CAAC,OAAO,GAAG,IAAI,CAAC;AAC3B,QAAA,MAAM,WAAW,GAAG,aAAa,CAAC,OAAO,CAAC;AAC1C,QAAA,IAAI,WAAW,IAAI,IAAI,EAAE;;AAEvB,YAAA,MAAM,sBAAsB,GAAG,iBAAiB,CAAC,OAAO,CAAC;AACzD,YAAA,iBAAiB,CAAC,OAAO,GAAG,KAAK,CAAC;AAElC,YAAA,MAAM,aAAa,GAAG,KAAK,CAAC,MAAqB,CAAC;AAClD,YAAA,IAAI,aAAa,KAAK,WAAW,EAAE;;AAEjC,gBAAA,MAAM,IAAI,GACR,WAAW,IAAI,IAAI;AACjB,sBAAE,WAAW;AACb,sBAAG,qBAAqB,CAAC,WAAW,EAAE,OAAO,CAAgB,CAAC;AAClE,gBAAA,IAAI,IAAI,IAAI,IAAI,EAAE;AAChB,oBAAA,qBAAqB,CAAC,IAAI,EAAE,sBAAsB,CAAC,CAAC;iBACrD;aACF;iBAAM;AACL,gBAAA,MAAM,IAAI,GAAG,oBAAoB,CAC/B,aAAa,EACb,OAAO,EACP,CAA6B,0BAAA,EAAA,OAAO,CAAI,EAAA,CAAA,CAC3B,CAAC;AAChB,gBAAA,IAAI,IAAI,IAAI,IAAI,EAAE;AAChB,oBAAA,IAAI,WAAW,CAAC,aAAa,CAAC,IAAI,IAAI,EAAE;;AAEtC,wBAAA,qBAAqB,CAAC,IAAI,EAAE,sBAAsB,CAAC,CAAC;qBACrD;yBAAM;AACL,wBAAA,mBAAmB,CAAC,IAAI,EAAE,KAAK,EAAE,sBAAsB,CAAC,CAAC;qBAC1D;iBACF;aACF;SACF;AACD,QAAA,IAAI,eAAe,CAAC,OAAO,IAAI,IAAI,EAAE;AACnC,YAAA,YAAY,CAAC,eAAe,CAAC,OAAO,CAAC,CAAC;AACtC,YAAA,eAAe,CAAC,OAAO,GAAG,IAAI,CAAC;SAChC;AACD,QAAA,gBAAgB,CAAC,OAAO,GAAG,KAAK,CAAC;AACjC,QAAA,0BAA0B,CAAC,OAAO,GAAG,IAAI,CAAC;AAC5C,KAAC,EACD,CAAC,aAAa,EAAE,OAAO,EAAE,WAAW,EAAE,mBAAmB,EAAE,qBAAqB,CAAC,CAClF,CAAC;;;;AAKF,IAAA,MAAM,cAAc,GAAGA,iBAAW,CAChC,CAAC,KAAiB,KAAI;AACpB,QAAA,MAAM,WAAW,GAAG,aAAa,CAAC,OAAO,CAAC;AAC1C,QAAA,IAAI,WAAW,IAAI,IAAI,EAAE;YACvB,IAAI,KAAK,CAAC,MAAM,KAAK,QAAQ,CAAC,aAAa,EAAE;;AAE3C,gBAAA,0BAA0B,CAAC,OAAO,GAAG,eAAe,CAAC;aACtD;AACD,YAAA,MAAM,aAAa,GAAG,KAAK,CAAC,aAAwB,CAAC;AACrD,YAAA,MAAM,sBAAsB,GAAG,aAAa,IAAI,IAAI,CAAC;AACrD,YAAA,iBAAiB,CAAC,OAAO,GAAG,sBAAsB,CAAC;AACnD,YAAA,IAAI,sBAAsB,IAAI,CAACoB,sCAAsB,CAAC,WAAW,EAAE,IAAI,CAAC,CAAC,aAAa,CAAC,EAAE;AACvF,gBAAA,cAAc,EAAE,CAAC;AACjB,gBAAA,IAAI,aAAa,CAAC,OAAO,EAAE;;AAEzB,oBAAA,4BAA4B,CAAC,OAAO,GAAG,KAAK,CAAC,MAA0B,CAAC;iBACzE;aACF;YACD,YAAY,CAAC,KAAK,CAAC,CAAC;SACrB;KACF,EACD,CAAC,aAAa,EAAE,eAAe,EAAE,cAAc,CAAC,CACjD,CAAC;;;AAIF,IAAA,MAAM,iBAAiB,GAAGpB,iBAAW,CACnC,CAAC,KAAoB,KAAI;AACvB,QAAA,MAAM,WAAW,GAAG,aAAa,CAAC,OAAO,CAAC;QAC1C,IAAI,WAAW,IAAI,IAAI,IAAI,WAAW,IAAI,IAAI,EAAE;AAC9C,YAAA,IAAI,oBAAoB,CAAC,WAAW,CAAC,EAAE;AACrC,gBAAA,IAAI,KAAK,CAAC,GAAG,KAAK,IAAI,EAAE;oBACtB,IAAI,cAAc,EAAE;wBAClB,oBAAoB,CAAC,WAAW,CAAC,CAAC;qBACnC;yBAAM;AACL,wBAAA,mBAAmB,CAAC,WAAW,EAAE,IAAI,CAAC,CAAC;qBACxC;iBACF;AAAM,qBAAA,IAAI,KAAK,CAAC,GAAG,KAAK,KAAK,IAAI,KAAK,CAAC,GAAG,KAAK,QAAQ,EAAE;;oBAExD,oBAAoB,CAAC,WAAW,CAAC,CAAC;iBACnC;qBAAM,IAAI,KAAK,CAAC,GAAG,KAAK,OAAO,IAAI,CAAC,cAAc,EAAE;AACnD,oBAAA,mBAAmB,CAAC,WAAW,EAAE,IAAI,CAAC,CAAC;iBACxC;aACF;AACD,YAAA,IAAI,eAAe,CAAC,OAAO,CAAC,KAAK,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,cAAc,EAAE;gBAC9D,kBAAkB,CAAC,IAAI,CAAC,CAAC;AACzB,gBAAA,iBAAiB,CACf,WAAW,EACX,OAAO,EACP,YAAY,EACZ,aAAa,CAAC,OAAO,EACrB,EAAE,IAAI,EAAE,WAAW,EAAE,SAAS,EAAE,QAAQ,EAAE,SAAS,EAAE,QAAQ,EAAE,EAC/D,KAAK,EACL,gBAAgB,CACjB,CAAC;aACH;SACF;QACD,IAAI,KAAK,CAAC,GAAG,KAAK,KAAK,IAAI,CAAC,cAAc,EAAE;YAC1C,YAAY,CAAC,IAAI,CAAC,CAAC;SACpB;AACH,KAAC,EACD;QACE,aAAa;QACb,OAAO;QACP,YAAY;QACZ,aAAa;QACb,KAAK;QACL,cAAc;QACd,WAAW;QACX,oBAAoB;QACpB,gBAAgB;QAChB,mBAAmB;QACnB,oBAAoB;AACrB,KAAA,CACF,CAAC;;AAGF,IAAA,MAAM,oBAAoB,GAAGA,iBAAW,CACtC,CAAC,MAIA,KAAI;AACH,QAAA,MAAM,WAAW,GAAG,aAAa,CAAC,OAAO,CAAC;QAC1C,IAAI,WAAW,IAAI,IAAI,IAAI,WAAW,IAAI,IAAI,EAAE;AAC9C,YAAAqB,yCAAyB,CACvB,MAAM,CAAC,cAAc,IAAI,WAAW,CAAC,MAAM,CAAC,aAAa,CAAC,IAAI,IAAI,EAClEC,iCAAmB,CACjB,kBAAkB,CAAC,WAAW,EAAE,OAAO,EAAE,WAAW,CAAqB,CAC1E,EACD,CAAC,KAAkB,KAAI;AACrB,gBAAA,iBAAiB,CAAC,KAAK,IAAI,SAAS,CAAC,CAAC;AACxC,aAAC,CACF,CAAC;SACH;KACF,EACD,CAAC,aAAa,EAAE,WAAW,EAAE,OAAO,CAAC,CACtC,CAAC;;AAGF,IAAA,MAAM,gBAAgB,GAAGtB,iBAAW,CAAC,CAAC,MAAgD,KAAI;QACxFuB,yCAAyB,CAAC,IAAI,EAAE,MAAM,CAAC,gBAAgB,EAAE,CAAC,KAAkB,KAAI;AAC9E,YAAA,iBAAiB,CAAC,KAAK,IAAI,SAAS,CAAC,CAAC;AACxC,SAAC,CAAC,CAAC;KACJ,EAAE,EAAE,CAAC,CAAC;;AAGP,IAAA,MAAM,cAAc,GAAGvB,iBAAW,CAAC,CAAC,MAAgD,KAAI;QACtFuB,yCAAyB,CAAC,KAAK,EAAE,MAAM,CAAC,gBAAgB,EAAE,CAAC,KAAkB,KAAI;AAC/E,YAAA,iBAAiB,CAAC,KAAK,IAAI,SAAS,CAAC,CAAC;AACxC,SAAC,CAAC,CAAC;KACJ,EAAE,EAAE,CAAC,CAAC;;;IAIP5C,eAAS,CAAC,MAAK;AACb,QAAA,MAAM,yBAAyB,GAAG,4BAA4B,CAAC,OAAO,CAAC;AACvE,QAAA,4BAA4B,CAAC,OAAO,GAAG,IAAI,CAAC;AAC5C,QAAA,aAAa,CAAC,OAAO,GAAG,KAAK,CAAC;AAE9B,QAAA,MAAM,WAAW,GAAG,aAAa,CAAC,OAAO,CAAC;AAC1C,QAAA,IAAI,WAAW,IAAI,IAAI,EAAE;AACvB,YAAA,MAAM,aAAa,GAAG6C,8BAAgB,CAAC,WAAW,CAAC,CAAC;;YAEpD,IACE,yBAAyB,IAAI,IAAI;AACjC,gBAAA,CAAC,SAAS;AACV,gBAAA,aAAa,KAAKC,4BAAc,CAAC,WAAW,CAAC;iBAC5C,CAACL,sCAAsB,CAAC,WAAW,EAAE,IAAI,CAAC,CAAC,yBAAyB,CAAC;oBACpE,CAACM,+BAAiB,CAAC,yBAAyB,EAAE,IAAI,CAAC,CAAC,EACtD;gBACA,WAAW,CAAC,KAAK,CAAC,EAAE,aAAa,EAAE,IAAI,EAAE,CAAC,CAAC;gBAC3C,OAAO;aACR;YACD,IACE,WAAW,CAAC,OAAO;AACnB,gBAAA,WAAW,IAAI,IAAI;AACnB,gBAAA,CAAC,SAAS;gBACV,cAAc,CAAC,WAAW,EAAE,cAAc,CAAC,OAAO,CAAC,EACnD;;gBAEA,MAAM,kBAAkB,GAAG,kBAAkB,CAAC,WAAW,EAAE,OAAO,EAAE,WAAW,CAAC,CAAC;AACjF,gBAAA,IAAI,kBAAkB,IAAI,IAAI,EAAE;;AAE9B,oBAAA,IACE,CAAC,CAAC,cAAc,IAAI,aAAa,KAAK,kBAAkB;AACxD,yBAAC,cAAc,IAAI,CAACN,sCAAsB,CAAC,kBAAkB,EAAE,IAAI,CAAC,CAAC,aAAa,CAAC,CAAC,EACpF;wBACA,kBAAkB,CAAC,KAAK,CAAC,EAAE,aAAa,EAAE,IAAI,EAAE,CAAC,CAAC;qBACnD;iBACF;qBAAM;;oBAEL,MAAM,cAAc,GAAG,qBAAqB,CAAC,WAAW,EAAE,OAAO,CAAe,CAAC;AACjF,oBAAA,IAAI,cAAc,IAAI,IAAI,EAAE;AAC1B,wBAAA,oBAAoB,CAAC,EAAE,KAAK,EAAE,cAAc,EAAE,CAAC,CAAC;qBACjD;iBACF;aACF;SACF;AACH,KAAC,CAAC,CAAC;IAEH,OAAO;AACL,QAAA,kBAAkB,EAAE;AAClB,YAAA,aAAa,EAAE,mBAAmB;AAClC,YAAA,UAAU,EAAE,gBAAgB;AAC5B,YAAA,OAAO,EAAE,eAAe;AACxB,YAAA,MAAM,EAAE,cAAc;AACtB,YAAA,SAAS,EAAE,iBAAiB;YAC5B,QAAQ,EAAE,SAAS,GAAG,CAAC,CAAC,GAAG,CAAC;AAC7B,SAAA;QACD,WAAW;QACX,oBAAoB;QACpB,eAAe;QACf,cAAc;QACd,oBAAoB;QACpB,gBAAgB;QAChB,cAAc;KACf,CAAC;AACJ;;AC3eA;;;;;;AAMG;AAMH;;AAEG;AACa,SAAA,sBAAsB,CACpC,IAAoB,EACpB,OAAe,EACf,IAAS,EACT,WAAoD,EACpD,aAA0B,EAC1B,UAAuB,EAAA;AAEvB,IAAA,IAAI,MAAM,CAAC;AACX,IAAA,IAAI,UAAU,CAAC;AACf,IAAA,IAAI,UAAU,EAAE,IAAI,KAAK,MAAM,EAAE;AAC/B,QAAA,MAAM,GAAG,UAAU,CAAC,MAAM,CAAC;QAC3B,MAAM,iBAAiB,GAAG,kBAAkB,CAAC,IAAI,EAAE,OAAO,EAAE,UAAU,CAAC,CAAC;AACxE,QAAA,IAAI,iBAAiB,IAAI,IAAI,EAAE;AAC7B,YAAA,UAAU,GAAG,iBAAiB,CAAC,aAAa,CAAC;SAC9C;KACF;SAAM;QACL,MAAM,GAAGH,4BAAY,CAAC,aAAa,EAAE,CAA4B,yBAAA,EAAA,OAAO,CAAI,EAAA,CAAA,CAAM,CAAC;AACnF,QAAA,IAAI,MAAM,IAAI,IAAI,EAAE;YAClB,UAAU,GAAG,aAAa,CAAC,OAAO,CAAC,CAA4B,yBAAA,EAAA,OAAO,CAAI,EAAA,CAAA,CAAC,CAAC;SAC7E;KACF;IACD,IAAI,MAAM,IAAI,IAAI,IAAI,UAAU,IAAI,IAAI,EAAE;QACxC,MAAM,QAAQ,GAAG,wBAAwB,CAAC,IAAI,EAAE,OAAO,EAAE,UAAyB,CAAC,CAAC;AACpF,QAAA,IAAI,QAAQ,IAAI,IAAI,EAAE;AACpB,YAAA,MAAM,UAAU,GAAG;AACjB,gBAAA,GAAG,EAAE,MAAM;AACX,gBAAA,IAAI,EAAE,IAAI,CAAC,QAAQ,CAAC;aACrB,CAAC;YACF,WAAW,CAAC,EAAE,OAAO,EAAE,UAAU,EAAE,MAAM,EAAE,aAAa,EAAE,CAAC,CAAC;AAC5D,YAAA,OAAO,IAAI,CAAC;SACb;KACF;AACD,IAAA,OAAO,KAAK,CAAC;AACf,CAAC;AAED;;AAEG;AACG,SAAU,uBAAuB,CACrC,YAAoC,EACpC,SAAY,EACZ,qBAA+D,EAC/D,aAAuE,EAAA;AAEvE,IAAA,KAAK,MAAM,MAAM,IAAI,YAAY,EAAE;AACjC,QAAA,IAAI,MAAM,CAAC,GAAG,KAAK,SAAS,EAAE;YAC5B,IAAI,MAAM,CAAC,KAAK,CAAC,QAAQ,KAAK,SAAS,EAAE;AACvC,gBAAA,IAAI,aAAa,CAAC;AAClB,gBAAA,IAAI,aAAa,IAAI,IAAI,EAAE;AACzB,oBAAA,KAAK,MAAM,SAAS,IAAI,aAAa,EAAE;wBACrC,IAAI,SAAS,CAAC,GAAG,KAAK,MAAM,CAAC,GAAG,EAAE;AAChC,4BAAA,aAAa,GAAG,SAAS,CAAC,aAAa,CAAC;4BACxC,MAAM;yBACP;qBACF;iBACF;AACD,gBAAA,MAAM,YAAY,GAAG,aAAa,KAAK,WAAW,GAAG,YAAY,GAAG,WAAW,CAAC;AAChF,gBAAA,qBAAqB,CAAC,CAAC,EAAE,GAAG,EAAE,SAAS,EAAE,aAAa,EAAE,YAAY,EAAE,CAAC,CAAC,CAAC;AACzE,gBAAA,OAAO,IAAI,CAAC;aACb;YACD,MAAM;SACP;KACF;AACD,IAAA,OAAO,KAAK,CAAC;AACf;;ACzDA;;AAEG;SACa,sBAAsB,CACpC,IAAoB,EACpB,OAAe,EACf,YAAoC,EACpC,aAA0B,EAC1B,oBAA6B,EAC7B,iBAA+F,EAC/F,aAA+D,EAC/D,QAA8C,EAAA;AAE9C,IAAA,MAAM,SAAS,GAAG,EAAE,GAAG,EAAE,KAAK,EAAE,IAAI,EAAE,IAAI,GAAG,EAAE,EAAE,CAAC;AAClD,IAAA,IAAI,YAAY,GAAG,QAAQ,EAAE,GAAG,IAAI,IAAI,GAAG,QAAQ,CAAC,GAAG,GAAI,SAAqB,CAAC;AACjF,IAAA,IAAI,eAAe,GAAG,QAAQ,EAAE,MAAM,IAAI,IAAI,GAAG,QAAQ,CAAC,MAAM,GAAI,SAAqB,CAAC;IAE1F,MAAM,SAAS,GAAGA,4BAAY,CAAC,aAAa,EAAE,CAA4B,yBAAA,EAAA,OAAO,CAAI,EAAA,CAAA,CAAM,CAAC;AAC5F,IAAA,IAAI,SAAS,IAAI,IAAI,EAAE;AACrB,QAAA,IAAI,aAAa,EAAE,GAAG,KAAK,QAAQ,IAAI,aAAa,EAAE,GAAG,KAAK,UAAU,EAAE;AACxE,YAAA,IAAI,YAAY,IAAI,IAAI,EAAE;AACxB,gBAAA,YAAY,GAAG,EAAE,GAAG,EAAE,KAAK,EAAE,IAAI,EAAE,IAAI,GAAG,CAAC,CAAC,SAAS,CAAC,CAAC,EAAE,CAAC;aAC3D;iBAAM,IAAI,CAACxB,gBAAW,CAAC,YAAY,EAAE,SAAS,CAAC,EAAE;gBAChD,IAAI,oBAAoB,IAAI,aAAa,CAAC,GAAG,KAAK,UAAU,EAAE;AAC5D,oBAAA,YAAY,GAAGkC,WAAM,CAAC,YAAY,EAAE,SAAS,CAAC,CAAC;iBAChD;qBAAM;AACL,oBAAA,YAAY,GAAG,EAAE,GAAG,EAAE,KAAK,EAAE,IAAI,EAAE,IAAI,GAAG,CAAC,CAAC,SAAS,CAAC,CAAC,EAAE,CAAC;iBAC3D;aACF;iBAAM,IAAI,oBAAoB,EAAE;gBAC/B,YAAY,GAAGC,cAAS,CAAC,YAAY,EAAE,SAAS,EAAE,KAAK,CAAC,CAAC;aAC1D;iBAAM;AACL,gBAAA,YAAY,GAAG,EAAE,GAAG,EAAE,KAAK,EAAE,IAAI,EAAE,IAAI,GAAG,CAAC,CAAC,SAAS,CAAC,CAAC,EAAE,CAAC;aAC3D;YACD,eAAe,GAAG,SAAoB,CAAC;SACxC;KACF;AAAM,SAAA,IAAI,aAAa,EAAE,MAAM,KAAK,QAAQ,IAAI,aAAa,EAAE,MAAM,KAAK,UAAU,EAAE;QACrF,MAAM,WAAW,GAAG,aAAa,CAAC,OAAO,CACvC,CAA6B,0BAAA,EAAA,OAAO,CAAI,EAAA,CAAA,CAC1B,CAAC;AACjB,QAAA,IAAI,WAAW,IAAI,IAAI,EAAE;AACvB,YAAA,MAAM,QAAQ,GAAG,WAAW,CAAC,WAAW,CAAC,CAAC;YAC1C,IAAI,QAAQ,KAAK,QAAQ,IAAI,QAAQ,KAAK,QAAQ,EAAE;AAClD,gBAAA,MAAM,KAAK,GAAG,oCAAoC,CAChD,IAAI,EACJ,OAAO,EACP,WAAW,EACX,QAAQ,KAAK,QAAQ,CACtB,CAAC;AACF,gBAAA,IAAI,KAAK,IAAI,IAAI,EAAE;AACjB,oBAAA,MAAM,MAAM,GAAG,YAAY,CAAC,KAAK,CAAC,CAAC;oBACnC,IAAI,MAAM,CAAC,KAAK,CAAC,UAAU,KAAK,UAAU,EAAE;AAC1C,wBAAA,IAAI,eAAe,IAAI,IAAI,EAAE;AAC3B,4BAAA,eAAe,GAAG,EAAE,GAAG,EAAE,KAAK,EAAE,IAAI,EAAE,IAAI,GAAG,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC;yBAC/D;6BAAM,IAAI,CAACnC,gBAAW,CAAC,eAAe,EAAE,MAAM,CAAC,GAAG,CAAC,EAAE;4BACpD,IAAI,oBAAoB,IAAI,aAAa,CAAC,MAAM,KAAK,UAAU,EAAE;gCAC/D,eAAe,GAAGkC,WAAM,CAAC,eAAe,EAAE,MAAM,CAAC,GAAG,CAAC,CAAC;6BACvD;iCAAM;AACL,gCAAA,eAAe,GAAG,EAAE,GAAG,EAAE,KAAK,EAAE,IAAI,EAAE,IAAI,GAAG,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC;6BAC/D;yBACF;6BAAM,IAAI,oBAAoB,EAAE;4BAC/B,eAAe,GAAGC,cAAS,CAAC,eAAe,EAAE,MAAM,CAAC,GAAG,EAAE,KAAK,CAAC,CAAC;yBACjE;6BAAM;AACL,4BAAA,eAAe,GAAG,EAAE,GAAG,EAAE,KAAK,EAAE,IAAI,EAAE,IAAI,GAAG,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC;yBAC/D;wBACD,YAAY,GAAG,SAAoB,CAAC;qBACrC;iBACF;aACF;SACF;KACF;IAED,IAAI,CAACjC,cAAS,CAAC,YAAY,EAAE,QAAQ,EAAE,GAAG,CAAC,IAAI,CAACA,cAAS,CAAC,eAAe,EAAE,QAAQ,EAAE,MAAM,CAAC,EAAE;QAC5F,iBAAiB,CACf,EAAE,KAAK,EAAE,EAAE,GAAG,EAAE,YAAY,EAAE,MAAM,EAAE,eAAe,EAAE,EAAE,MAAM,EAAE,aAAa,EAAE,EAChF,KAAK,CACN,CAAC;KACH;AACH,CAAC;AAED;;AAEG;AACH,SAAS,oBAAoB,CAC3B,IAAoB,EACpB,OAAe,EACf,YAAoC,EACpC,aAA0B,EAC1B,UAAkB,EAClB,QAAgB,EAChB,YAAqB,EACrB,iBAA+F,EAC/F,aAA+D,EAC/D,QAA8C,EAAA;AAE9C,IAAA,MAAM,SAAS,GAAG,EAAE,GAAG,EAAE,KAAK,EAAE,IAAI,EAAE,IAAI,GAAG,EAAE,EAAE,CAAC;AAClD,IAAA,IAAI,YAAY,GAAG,QAAQ,EAAE,GAAG,IAAI,IAAI,GAAG,QAAQ,CAAC,GAAG,GAAI,SAAqB,CAAC;AACjF,IAAA,IAAI,eAAe,GAAG,QAAQ,EAAE,MAAM,IAAI,IAAI,GAAG,QAAQ,CAAC,MAAM,GAAI,SAAqB,CAAC;IAE1F,IAAI,YAAY,EAAE;QAChB,eAAe,GAAG,SAAoB,CAAC;AACvC,QAAA,IAAI,aAAa,EAAE,GAAG,KAAK,UAAU,EAAE;YACrC,YAAY,GAAG,SAAoB,CAAC;;AAEpC,YAAA,IAAI,UAAU,IAAI,QAAQ,EAAE;AAC1B,gBAAA,KAAK,IAAI,CAAC,GAAG,UAAU,EAAE,CAAC,IAAI,QAAQ,EAAE,CAAC,EAAE,EAAE;oBAC3C,MAAM,GAAG,GAAG,oBAAoB,CAAC,IAAI,EAAE,OAAO,EAAE,CAAC,CAAM,CAAC;AACxD,oBAAA,YAAY,GAAGgC,WAAM,CAAC,YAAY,EAAE,GAAG,CAAY,CAAC;iBACrD;aACF;iBAAM;AACL,gBAAA,KAAK,IAAI,CAAC,GAAG,UAAU,EAAE,CAAC,IAAI,QAAQ,EAAE,CAAC,EAAE,EAAE;oBAC3C,MAAM,GAAG,GAAG,oBAAoB,CAAC,IAAI,EAAE,OAAO,EAAE,CAAC,CAAM,CAAC;AACxD,oBAAA,YAAY,GAAGA,WAAM,CAAC,YAAY,EAAE,GAAG,CAAY,CAAC;iBACrD;aACF;SACF;KACF;SAAM;QACL,YAAY,GAAG,SAAoB,CAAC;AACpC,QAAA,IAAI,aAAa,EAAE,MAAM,KAAK,UAAU,EAAE;YACxC,eAAe,GAAG,SAAoB,CAAC;;AAEvC,YAAA,IAAI,UAAU,IAAI,QAAQ,EAAE;AAC1B,gBAAA,KAAK,IAAI,CAAC,GAAG,UAAU,EAAE,CAAC,IAAI,QAAQ,EAAE,CAAC,EAAE,EAAE;AAC3C,oBAAA,MAAM,MAAM,GAAG,YAAY,CAAC,CAAC,CAAC,CAAC;oBAC/B,IAAI,MAAM,CAAC,KAAK,CAAC,UAAU,KAAK,UAAU,EAAE;wBAC1C,eAAe,GAAGA,WAAM,CAAC,eAAe,EAAE,MAAM,CAAC,GAAG,CAAC,CAAC;qBACvD;iBACF;aACF;iBAAM;AACL,gBAAA,KAAK,IAAI,CAAC,GAAG,UAAU,EAAE,CAAC,IAAI,QAAQ,EAAE,CAAC,EAAE,EAAE;AAC3C,oBAAA,MAAM,MAAM,GAAG,YAAY,CAAC,CAAC,CAAC,CAAC;oBAC/B,IAAI,MAAM,CAAC,KAAK,CAAC,UAAU,KAAK,UAAU,EAAE;wBAC1C,eAAe,GAAGA,WAAM,CAAC,eAAe,EAAE,MAAM,CAAC,GAAG,CAAC,CAAC;qBACvD;iBACF;aACF;SACF;KACF;IAED,IAAI,CAAChC,cAAS,CAAC,YAAY,EAAE,QAAQ,EAAE,GAAG,CAAC,IAAI,CAACA,cAAS,CAAC,eAAe,EAAE,QAAQ,EAAE,MAAM,CAAC,EAAE;QAC5F,iBAAiB,CACf,EAAE,KAAK,EAAE,EAAE,GAAG,EAAE,YAAY,EAAE,MAAM,EAAE,eAAe,EAAE,EAAE,MAAM,EAAE,aAAa,EAAE,EAChF,IAAI,CACL,CAAC;KACH;AACH,CAAC;AAED;;AAEG;AACG,SAAU,uBAAuB,CACrC,IAAoB,EACpB,OAAe,EACf,aAA0B,EAC1B,WAAuB,EACvB,aAA+D,EAAA;AAE/D,IAAA,MAAM,UAAU,GAAG,oBAAoB,CACrC,aAAa,EACb,OAAO,EACP,CAA6B,0BAAA,EAAA,OAAO,CAAI,EAAA,CAAA,CAC3B,CAAC;AAChB,IAAA,IACE,CAAC,CAAC,aAAa,EAAE,GAAG,KAAK,UAAU,IAAI,WAAW,CAAC,IAAI,KAAK,MAAM;AAChE,SAAC,aAAa,EAAE,MAAM,KAAK,UAAU;AACnC,aAAC,WAAW,CAAC,IAAI,KAAK,QAAQ,IAAI,WAAW,CAAC,IAAI,KAAK,QAAQ,CAAC,CAAC;AACrE,QAAA,UAAU,EAAE,IAAI,KAAK,WAAW,CAAC,IAAI,EACrC;QACA,MAAM,kBAAkB,GAAG,kBAAkB,CAAC,IAAI,EAAE,OAAO,EAAE,WAAW,CAAC,CAAC;QAC1E,MAAM,iBAAiB,GAAG,kBAAkB,CAAC,IAAI,EAAE,OAAO,EAAE,UAAU,CAAC,CAAC;QACxE,IAAI,kBAAkB,IAAI,IAAI,IAAI,iBAAiB,IAAI,IAAI,EAAE;AAC3D,YAAA,MAAM,KAAK,GAAG,UAAU,EAAE,IAAI,KAAK,MAAM,CAAC;YAC1C,IAAI,KAAK,EAAE;AACT,gBAAA,QACE,wBAAwB,CACtB,IAAI,EACJ,OAAO,EACP,kBAAkB,CAAC,aAA4B,CAChD,IAAI,IAAI;oBACT,wBAAwB,CAAC,IAAI,EAAE,OAAO,EAAE,iBAAiB,CAAC,aAA4B,CAAC;AACrF,wBAAA,IAAI,EACN;aACH;AAAM,iBAAA,IAAI,UAAU,EAAE,IAAI,KAAK,QAAQ,IAAI,UAAU,EAAE,IAAI,KAAK,QAAQ,EAAE;AACzE,gBAAA,MAAM,QAAQ,GAAG,UAAU,EAAE,IAAI,KAAK,QAAQ,CAAC;gBAC/C,QACE,oCAAoC,CAAC,IAAI,EAAE,OAAO,EAAE,kBAAkB,EAAE,QAAQ,CAAC;oBAC/E,IAAI;AACN,oBAAA,oCAAoC,CAAC,IAAI,EAAE,OAAO,EAAE,iBAAiB,EAAE,QAAQ,CAAC,IAAI,IAAI,EACxF;aACH;SACF;KACF;AACD,IAAA,OAAO,KAAK,CAAC;AACf,CAAC;AAED;;AAEG;SACa,2BAA2B,CACzC,IAAoB,EACpB,OAAe,EACf,YAAoC,EACpC,aAA0B,EAC1B,WAAuB,EACvB,4BAAiE,EACjE,iBAA+F,EAC/F,aAA+D,EAC/D,QAA8C,EAAA;AAE9C,IAAA,MAAM,UAAU,GAAG,oBAAoB,CACrC,aAAa,EACb,OAAO,EACP,CAA6B,0BAAA,EAAA,OAAO,CAAI,EAAA,CAAA,CAC3B,CAAC;IAChB,MAAM,kBAAkB,GAAG,kBAAkB,CAAC,IAAI,EAAE,OAAO,EAAE,WAAW,CAAC,CAAC;IAC1E,MAAM,iBAAiB,GAAG,kBAAkB,CAAC,IAAI,EAAE,OAAO,EAAE,UAAU,CAAC,CAAC;IACxE,IAAI,kBAAkB,IAAI,IAAI,IAAI,iBAAiB,IAAI,IAAI,EAAE;AAC3D,QAAA,IACE,CAAC,CAAC,aAAa,EAAE,GAAG,KAAK,UAAU,IAAI,UAAU,EAAE,IAAI,KAAK,MAAM;AAChE,aAAC,aAAa,EAAE,MAAM,KAAK,UAAU;AACnC,iBAAC,UAAU,EAAE,IAAI,KAAK,QAAQ,IAAI,UAAU,EAAE,IAAI,KAAK,QAAQ,CAAC,CAAC;AACrE,YAAA,UAAU,EAAE,IAAI,KAAK,WAAW,CAAC,IAAI,EACrC;AACA,YAAA,IAAI,UAAU,CAAC;AACf,YAAA,IAAI,QAAQ,CAAC;AACb,YAAA,IAAI,UAAU,CAAC;AACf,YAAA,MAAM,KAAK,GAAG,UAAU,EAAE,IAAI,KAAK,MAAM,CAAC;YAC1C,IAAI,KAAK,EAAE;AACT,gBAAA,UAAU,GAAG,iBAAiB,CAAC,aAA4B,CAAC;gBAC5D,UAAU,GAAG,wBAAwB,CACnC,IAAI,EACJ,OAAO,EACP,kBAAkB,CAAC,aAA4B,CAChD,CAAC;gBACF,QAAQ,GAAG,wBAAwB,CAAC,IAAI,EAAE,OAAO,EAAE,UAAU,CAAC,CAAC;aAChE;AAAM,iBAAA,IAAI,UAAU,EAAE,IAAI,KAAK,QAAQ,IAAI,UAAU,EAAE,IAAI,KAAK,QAAQ,EAAE;AACzE,gBAAA,MAAM,QAAQ,GAAG,UAAU,EAAE,IAAI,KAAK,QAAQ,CAAC;gBAC/C,UAAU,GAAG,iBAAiB,CAAC;gBAC/B,UAAU,GAAG,oCAAoC,CAC/C,IAAI,EACJ,OAAO,EACP,kBAAkB,EAClB,QAAQ,CACT,CAAC;gBACF,QAAQ,GAAG,oCAAoC,CAAC,IAAI,EAAE,OAAO,EAAE,iBAAiB,EAAE,QAAQ,CAAC,CAAC;aAC7F;YACD,IAAI,UAAU,IAAI,IAAI,IAAI,QAAQ,IAAI,IAAI,EAAE;AAC1C,gBAAA,4BAA4B,CAAC,OAAO,GAAG,UAAU,CAAC;gBAClD,oBAAoB,CAClB,IAAI,EACJ,OAAO,EACP,YAAY,EACZ,aAAa,EACb,UAAU,EACV,QAAQ,EACR,KAAK,EACL,iBAAiB,EACjB,aAAa,EACb,QAAQ,CACT,CAAC;AACF,gBAAA,OAAO,IAAI,CAAC;aACb;SACF;KACF;AACD,IAAA,OAAO,KAAK,CAAC;AACf,CAAC;AAED;;AAEG;AACG,SAAU,4BAA4B,CAC1C,IAAoB,EACpB,OAAe,EACf,YAAoC,EACpC,aAAqC,EACrC,aAA0B,EAC1B,UAAmB,EACnB,WAAuB,EACvB,4BAAiE,EACjE,iBAA+F,EAC/F,KAAc,EACd,gBAA2B,EAC3B,aAA+D,EAC/D,QAA8C,EAAA;IAE9C,MAAM,kBAAkB,GAAG,kBAAkB,CAAC,IAAI,EAAE,OAAO,EAAE,WAAW,CAAC,CAAC;AAC1E,IAAA,IAAI,kBAAkB,IAAI,IAAI,EAAE;AAC9B,QAAA,IAAI,UAAU,CAAC;AACf,QAAA,IAAI,YAAY,CAAC;AACjB,QAAA,MAAM,KAAK,GAAG,WAAW,CAAC,IAAI,KAAK,MAAM,CAAC;AAC1C,QAAA,MAAM,QAAQ,GAAG,WAAW,CAAC,IAAI,KAAK,QAAQ,CAAC;QAC/C,IAAI,KAAK,EAAE;AACT,YAAA,YAAY,GAAG,kBAAkB,CAAC,aAA4B,CAAC;YAC/D,UAAU,GAAG,wBAAwB,CAAC,IAAI,EAAE,OAAO,EAAE,YAAY,CAAC,CAAC;SACpE;aAAM;YACL,YAAY,GAAG,kBAAkB,CAAC;YAClC,UAAU,GAAG,oCAAoC,CAAC,IAAI,EAAE,OAAO,EAAE,YAAY,EAAE,QAAQ,CAAC,CAAC;SAC1F;AACD,QAAA,IAAI,UAAU,IAAI,IAAI,EAAE;AACtB,YAAA,IAAI,QAAQ,CAAC;AACb,YAAA,IAAI,eAAe,CAAC;AACpB,YAAA,MAAM,aAAa,GAAG,4BAA4B,CAAC,OAAO,CAAC;AAC3D,YAAA,IAAI,aAAa,IAAI,IAAI,EAAE;AACzB,gBAAA,eAAe,GAAG,UAAU;sBACvB,aAAa,CAAC,sBAAsC;AACvD,sBAAG,aAAa,CAAC,kBAAkC,CAAC;AACtD,gBAAA,IAAI,eAAe,IAAI,IAAI,EAAE;AAC3B,oBAAA,4BAA4B,CAAC,OAAO,GAAG,eAAe,CAAC;AACvD,oBAAA,QAAQ,GAAG,KAAK;0BACZ,wBAAwB,CAAC,IAAI,EAAE,OAAO,EAAE,eAAe,CAAC;0BACxD,oCAAoC,CAAC,IAAI,EAAE,OAAO,EAAE,eAAe,EAAE,QAAQ,CAAC,CAAC;iBACpF;qBAAM;AACL,oBAAA,QAAQ,GAAG,KAAK;0BACZ,wBAAwB,CAAC,IAAI,EAAE,OAAO,EAAE,aAAa,CAAC;0BACtD,oCAAoC,CAAC,IAAI,EAAE,OAAO,EAAE,aAAa,EAAE,QAAQ,CAAC,CAAC;iBAClF;aACF;iBAAM;AACL,gBAAA,eAAe,GAAG,UAAU;sBACvB,YAAY,CAAC,sBAAsC;AACtD,sBAAG,YAAY,CAAC,kBAAkC,CAAC;AACrD,gBAAA,IAAI,eAAe,IAAI,IAAI,EAAE;AAC3B,oBAAA,4BAA4B,CAAC,OAAO,GAAG,eAAe,CAAC;AACvD,oBAAA,QAAQ,GAAG,KAAK;0BACZ,wBAAwB,CAAC,IAAI,EAAE,OAAO,EAAE,eAAe,CAAC;0BACxD,oCAAoC,CAAC,IAAI,EAAE,OAAO,EAAE,eAAe,EAAE,QAAQ,CAAC,CAAC;iBACpF;qBAAM;oBACL,QAAQ,GAAG,UAAU,CAAC;iBACvB;aACF;AACD,YAAA,IAAI,QAAQ,IAAI,IAAI,EAAE;gBACpB,oBAAoB,CAClB,IAAI,EACJ,OAAO,EACP,YAAY,EACZ,aAAa,EACb,UAAU,EACV,QAAQ,EACR,KAAK,EACL,iBAAiB,EACjB,aAAa,EACb,QAAQ,CACT,CAAC;aACH;;AAGD,YAAA,MAAM,gBAAgB,GACpB,4BAA4B,CAAC,OAAO,IAAI,IAAI;kBACxC,4BAA4B,CAAC,OAAO;kBACpC,kBAAkB,CAAC;AACzB,YAAA,IAAI,aAAa,CAAC;YAClB,IAAI,KAAK,EAAE;gBACT,MAAM,MAAM,GAAGsB,4BAAY,CAAC,gBAAgB,EAAE,CAA4B,yBAAA,EAAA,OAAO,CAAI,EAAA,CAAA,CAAM,CAAC;AAC5F,gBAAA,aAAa,GAAG;oBACd,IAAI,EAAE,WAAW,CAAC,IAAI;AACtB,oBAAA,MAAM,EAAE,MAAM;oBACd,SAAS,EAAE,WAAW,CAAC,SAAS;iBACjC,CAAC;aACH;iBAAM;gBACL,aAAa,GAAG,oBAAoB,CAClC,gBAAgB,EAChB,OAAO,EACP,CAA6B,0BAAA,EAAA,OAAO,CAAI,EAAA,CAAA,CAC3B,CAAC;aACjB;AACD,YAAA,iBAAiB,CACf,IAAI,EACJ,OAAO,EACP,YAAY,EACZ,aAAa,CAAC,OAAO,EACrB,EAAE,IAAI,EAAE,aAAa,EAAE,SAAS,EAAE,QAAQ,EAAE,SAAS,EAAE,QAAQ,EAAE,EACjE,KAAK,EACL,gBAAgB,CACjB,CAAC;SACH;KACF;AACH;;AC7YA;;;;;;AAMG;AA8CH;;AAEG;SACa,mBAAmB,CAAiD,EAClF,aAAa,EACb,OAAO,EACP,IAAI,EACJ,KAAK,EACL,cAAc,EACd,YAAY,EACZ,aAAa,EACb,4BAA4B,EAC5B,gBAAgB,EAChB,WAAW,EACX,oBAAoB,EACpB,aAAa,EACb,QAAQ,EACR,sBAAsB,EACtB,WAAW,EACX,aAAa,EACb,qBAAqB,EACa,EAAA;;;AAGlC,IAAA,MAAM,eAAe,GAAGjB,iBAAW,CACjC,CAAC,KAAoB,KAAI;AACvB,QAAA,MAAM,QAAQ,GAAG6B,0BAAc,EAAE,CAAC,QAAQ,CAAC;AAC3C,QAAA,MAAM,WAAW,GAAmD;YAClE,GAAG,EAAE,UAAU,IAAoB,EAAA;AACjC,gBAAA,IAAI,aAAa,CAAC,OAAO,IAAI,IAAI,EAAE;AACjC,oBAAA,IAAI,WAAW,IAAI,IAAI,EAAE;wBACvB,IAAI,CAAC,cAAc,EAAE;AACnB,4BAAA,IAAI,sBAAsB,IAAI,IAAI,EAAE;gCAClC,sBAAsB,CACpB,aAAa,CAAC,OAAO,EACrB,OAAO,EACP,YAAY,EACZ,kBAAkB,CAAC,IAAI,EAAE,OAAO,EAAE,WAAW,CAAgB,EAC7D,IAAI,EACJ,sBAAsB,EACtB,aAAa,EACb,QAAQ,CACT,CAAC;6BACH;4BACD,KAAK,CAAC,cAAc,EAAE,CAAC;yBACxB;wBACD,IACE,WAAW,IAAI,IAAI;AACnB,4BAAA,IAAI,IAAI,IAAI;AACZ,4BAAA,sBAAsB,CACpB,aAAa,CAAC,OAAO,EACrB,OAAO,EACP,IAAI,EACJ,WAAW,EACX,KAAK,CAAC,MAAqB,EAC3B,WAAW,CACZ,EACD;4BACA,KAAK,CAAC,eAAe,EAAE,CAAC;yBACzB;qBACF;iBACF;aACF;AACD,YAAA,KAAK,EAAE,YAAA;AACL,gBAAA,IAAI,aAAa,CAAC,OAAO,IAAI,IAAI,EAAE;AACjC,oBAAA,IAAI,WAAW,IAAI,IAAI,EAAE;wBACvB,IACE,WAAW,IAAI,IAAI;AACnB,4BAAA,IAAI,IAAI,IAAI;4BACZ,WAAW,CAAC,IAAI,KAAK,MAAM;AAC3B,4BAAA,sBAAsB,CACpB,aAAa,CAAC,OAAO,EACrB,OAAO,EACP,IAAI,EACJ,WAAW,EACX,KAAK,CAAC,MAAqB,EAC3B,WAAW,CACZ,EACD;4BACA,KAAK,CAAC,eAAe,EAAE,CAAC;yBACzB;AAAM,6BAAA,IACL,CAAC,cAAc;AACf,4BAAA,qBAAqB,IAAI,IAAI;4BAC7B,WAAW,CAAC,IAAI,KAAK,QAAQ;AAC7B,4BAAA,uBAAuB,CACrB,YAAY,EACZ,WAAW,CAAC,SAAS,EACrB,qBAAqB,EACrB,aAAa,CACd,EACD;4BACA,KAAK,CAAC,eAAe,EAAE,CAAC;yBACzB;qBACF;iBACF;aACF;YACD,OAAO,EAAE,UAAU,IAAoB,EAAA;AACrC,gBAAA,IAAI,aAAa,CAAC,OAAO,IAAI,IAAI,EAAE;AACjC,oBAAA,IAAI,CAAC,cAAc,IAAI,WAAW,IAAI,IAAI,EAAE;AAC1C,wBAAA,IACE,WAAW,CAAC,IAAI,KAAK,MAAM;AAC3B,4BAAA,KAAK,CAAC,QAAQ;AACd,4BAAA,sBAAsB,IAAI,IAAI;AAC9B,4BAAA,aAAa,EAAE,GAAG,KAAK,UAAU,EACjC;AACA,4BAAA,4BAA4B,CAC1B,aAAa,CAAC,OAAO,EACrB,OAAO,EACP,YAAY,EACZ,aAAa,EACb,IAAI,EACJ,IAAI,EACJ,WAAW,EACX,4BAA4B,EAC5B,sBAAsB,EACtB,KAAK,EACL,gBAAgB,EAChB,aAAa,EACb,QAAQ,CACT,CAAC;yBACH;6BAAM;AACL,4BAAA,wBAAwB,CACtB,IAAI,EACJ,OAAO,EACP,YAAY,EACZ,WAAW,EACX,oBAAoB,EACpB,IAAI,CACL,CAAC;yBACH;wBACD,KAAK,CAAC,cAAc,EAAE,CAAC;qBACxB;iBACF;aACF;YACD,SAAS,EAAE,UAAU,IAAoB,EAAA;AACvC,gBAAA,IAAI,aAAa,CAAC,OAAO,IAAI,IAAI,EAAE;AACjC,oBAAA,IAAI,CAAC,cAAc,IAAI,WAAW,IAAI,IAAI,EAAE;AAC1C,wBAAA,IACE,WAAW,CAAC,IAAI,KAAK,MAAM;AAC3B,4BAAA,KAAK,CAAC,QAAQ;AACd,4BAAA,sBAAsB,IAAI,IAAI;AAC9B,4BAAA,aAAa,EAAE,GAAG,KAAK,UAAU,EACjC;AACA,4BAAA,4BAA4B,CAC1B,aAAa,CAAC,OAAO,EACrB,OAAO,EACP,YAAY,EACZ,aAAa,EACb,IAAI,EACJ,KAAK,EACL,WAAW,EACX,4BAA4B,EAC5B,sBAAsB,EACtB,KAAK,EACL,gBAAgB,EAChB,aAAa,EACb,QAAQ,CACT,CAAC;yBACH;6BAAM;AACL,4BAAA,wBAAwB,CACtB,IAAI,EACJ,OAAO,EACP,YAAY,EACZ,WAAW,EACX,oBAAoB,EACpB,KAAK,CACN,CAAC;yBACH;wBACD,KAAK,CAAC,cAAc,EAAE,CAAC;qBACxB;iBACF;aACF;YACD,SAAS,EAAE,UAAU,IAAoB,EAAA;AACvC,gBAAA,IAAI,aAAa,CAAC,OAAO,IAAI,IAAI,EAAE;AACjC,oBAAA,IAAI,CAAC,cAAc,IAAI,WAAW,IAAI,IAAI,EAAE;AAC1C,wBAAA,IACE,CAAC,WAAW,CAAC,IAAI,KAAK,QAAQ,IAAI,WAAW,CAAC,IAAI,KAAK,QAAQ;AAC/D,4BAAA,KAAK,CAAC,QAAQ;AACd,4BAAA,sBAAsB,IAAI,IAAI;AAC9B,4BAAA,aAAa,EAAE,MAAM,KAAK,UAAU,EACpC;AACA,4BAAA,4BAA4B,CAC1B,aAAa,CAAC,OAAO,EACrB,OAAO,EACP,YAAY,EACZ,aAAa,EACb,IAAI,EACJ,IAAI,EACJ,WAAW,EACX,4BAA4B,EAC5B,sBAAsB,EACtB,KAAK,EACL,gBAAgB,EAChB,aAAa,EACb,QAAQ,CACT,CAAC;yBACH;6BAAM;4BACL,2BAA2B,CACzB,YAAY,EACZ,WAAW,EACX,oBAAoB,EACpB,CAAC,KAAK,CACP,CAAC;yBACH;wBACD,KAAK,CAAC,cAAc,EAAE,CAAC;qBACxB;iBACF;aACF;YACD,UAAU,EAAE,UAAU,IAAoB,EAAA;AACxC,gBAAA,IAAI,aAAa,CAAC,OAAO,IAAI,IAAI,EAAE;AACjC,oBAAA,IAAI,CAAC,cAAc,IAAI,WAAW,IAAI,IAAI,EAAE;AAC1C,wBAAA,IACE,CAAC,WAAW,CAAC,IAAI,KAAK,QAAQ,IAAI,WAAW,CAAC,IAAI,KAAK,QAAQ;AAC/D,4BAAA,KAAK,CAAC,QAAQ;AACd,4BAAA,sBAAsB,IAAI,IAAI;AAC9B,4BAAA,aAAa,EAAE,MAAM,KAAK,UAAU,EACpC;AACA,4BAAA,4BAA4B,CAC1B,aAAa,CAAC,OAAO,EACrB,OAAO,EACP,YAAY,EACZ,aAAa,EACb,IAAI,EACJ,KAAK,EACL,WAAW,EACX,4BAA4B,EAC5B,sBAAsB,EACtB,KAAK,EACL,gBAAgB,EAChB,aAAa,EACb,QAAQ,CACT,CAAC;yBACH;6BAAM;4BACL,2BAA2B,CAAC,YAAY,EAAE,WAAW,EAAE,oBAAoB,EAAE,KAAK,CAAC,CAAC;yBACrF;wBACD,KAAK,CAAC,cAAc,EAAE,CAAC;qBACxB;iBACF;aACF;YACD,MAAM,EAAE,UAAU,IAAoB,EAAA;AACpC,gBAAA,IAAI,CAAC,cAAc,IAAI,WAAW,IAAI,IAAI,EAAE;AAC1C,oBAAA,oBAAoB,CAClB,IAAI,EACJ,OAAO,EACP,YAAY,EACZ,aAAa,EACb,WAAW,EACX,oBAAoB,EACpB,IAAI,EACJ,KAAK,EACL,gBAAgB,CACjB,CAAC;oBACF,KAAK,CAAC,cAAc,EAAE,CAAC;iBACxB;aACF;YACD,QAAQ,EAAE,UAAU,IAAoB,EAAA;AACtC,gBAAA,IAAI,CAAC,cAAc,IAAI,WAAW,IAAI,IAAI,EAAE;AAC1C,oBAAA,oBAAoB,CAClB,IAAI,EACJ,OAAO,EACP,YAAY,EACZ,aAAa,EACb,WAAW,EACX,oBAAoB,EACpB,KAAK,EACL,KAAK,EACL,gBAAgB,CACjB,CAAC;oBACF,KAAK,CAAC,cAAc,EAAE,CAAC;iBACxB;aACF;YACD,IAAI,EAAE,UAAU,IAAoB,EAAA;AAClC,gBAAA,IAAI,CAAC,cAAc,IAAI,WAAW,IAAI,IAAI,EAAE;AAC1C,oBAAA,uBAAuB,CACrB,IAAI,EACJ,OAAO,EACP,YAAY,EACZ,WAAW,EACX,oBAAoB,EACpB,IAAI,EACJ,QAAQ,KAAK,KAAK,GAAG,KAAK,CAAC,OAAO,GAAG,KAAK,CAAC,OAAO,CACnD,CAAC;oBACF,KAAK,CAAC,cAAc,EAAE,CAAC;iBACxB;aACF;YACD,GAAG,EAAE,UAAU,IAAoB,EAAA;AACjC,gBAAA,IAAI,CAAC,cAAc,IAAI,WAAW,IAAI,IAAI,EAAE;AAC1C,oBAAA,uBAAuB,CACrB,IAAI,EACJ,OAAO,EACP,YAAY,EACZ,WAAW,EACX,oBAAoB,EACpB,KAAK,EACL,QAAQ,KAAK,KAAK,GAAG,KAAK,CAAC,OAAO,GAAG,KAAK,CAAC,OAAO,CACnD,CAAC;oBACF,KAAK,CAAC,cAAc,EAAE,CAAC;iBACxB;aACF;SACF,CAAC;QACF,IAAI,MAAM,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC,QAAQ,CAAC,KAAK,CAAC,GAAG,CAAC,IAAI,aAAa,CAAC,OAAO,IAAI,IAAI,EAAE;YACjF,WAAW,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,aAAa,CAAC,OAAO,CAAC,CAAC;SAC/C;AACH,KAAC,EACD;QACE,aAAa;QACb,OAAO;QACP,IAAI;QACJ,KAAK;QACL,cAAc;QACd,YAAY;QACZ,aAAa;QACb,4BAA4B;QAC5B,gBAAgB;QAChB,WAAW;QACX,oBAAoB;QACpB,aAAa;QACb,QAAQ;QACR,sBAAsB;QACtB,WAAW;QACX,aAAa;QACb,qBAAqB;AACtB,KAAA,CACF,CAAC;AAEF,IAAA,OAAO,EAAE,SAAS,EAAE,eAAe,EAAE,CAAC;AACxC;;AC9WA;;AAEG;AACa,SAAA,6BAA6B,CAC3C,IAAoB,EACpB,OAAe,EACf,KAAmB,EACnB,YAAoC,EACpC,aAA8C,EAC9C,KAAc,EAAA;;AAGd,IAAA,oBAAoB,CAAC,IAAI,EAAE,OAAO,EAAE,KAAK,EAAE,YAAY,EAAE,aAAa,EAAE,KAAK,CAAC,CAAC;AACjF,CAAC;AAED;;AAEG;SACa,8BAA8B,CAC5C,IAAoB,EACpB,OAAe,EACf,KAAmB,EACnB,YAAoC,EACpC,mBAAoC,EACpC,aAA8C,EAC9C,KAAc,EACd,gBAA2B,EAC3B,gBAA0D,EAAA;AAE1D,IAAA,IAAI,gBAAgB,IAAI,IAAI,EAAE;QAC5B,IAAI,aAAa,CAAC,OAAO,CAAC,GAAG,IAAI,IAAI,EAAE;AACrC,YAAA,oBAAoB,CAAC,IAAI,EAAE,OAAO,EAAE,KAAK,EAAE,YAAY,EAAE,aAAa,EAAE,KAAK,CAAC,CAAC;SAChF;QACD,IAAI,aAAa,CAAC,OAAO,CAAC,GAAG,IAAI,IAAI,EAAE;YACrC,MAAM,UAAU,GAAG,IAAI,CAAC,aAAa,CAAC,CAA+B,4BAAA,EAAA,OAAO,CAAI,EAAA,CAAA,CAAC,CAAC;AAClF,YAAA,IAAI,UAAU,IAAI,IAAI,EAAE;AACtB,gBAAA,MAAM,IAAI,GAAG,UAAU,CAAC,qBAAqB,EAAE,CAAC;gBAChD,MAAM,QAAQ,GAAG,KAAK,GAAG,IAAI,CAAC,KAAK,GAAG,KAAK,CAAC,OAAO,GAAG,KAAK,CAAC,OAAO,GAAG,IAAI,CAAC,IAAI,CAAC;gBAEhF,MAAM,kBAAkB,GAAG,EAAE,CAAC;AAC9B,gBAAA,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,gBAAgB,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;AAChD,oBAAA,MAAM,WAAW,GAAG,gBAAgB,CAAC,CAAC,CAAC,CAAC;AACxC,oBAAA,kBAAkB,CAAC,IAAI,CAAC,WAAqB,CAAC,CAAC;iBAChD;gBACD,aAAa,CAAC,OAAO,GAAG;AACtB,oBAAA,UAAU,EAAE,IAAI;AAChB,oBAAA,aAAa,EAAE,IAAI;AACnB,oBAAA,GAAG,EAAE,aAAa,CAAC,OAAO,CAAC,GAAG;AAC9B,oBAAA,MAAM,EAAE,QAAQ;AAChB,oBAAA,KAAK,EAAE,CAAC;AACR,oBAAA,gBAAgB,EAAE,kBAAkB;AACpC,oBAAA,WAAW,EAAE,aAAa,CAAC,OAAO,CAAC,WAAW;iBAC/C,CAAC;AACF,gBAAA,IAAI,gBAAgB,IAAI,IAAI,EAAE;AAC5B,oBAAA,gBAAgB,CAAC;AACf,wBAAA,GAAG,EAAE,aAAa,CAAC,OAAO,CAAC,GAAG;AAC9B,wBAAA,KAAK,EAAE,CAAC;AACR,wBAAA,eAAe,EAAE,mBAAmB;AACrC,qBAAA,CAAC,CAAC;iBACJ;AACD,gBAAA,OAAO,IAAI,CAAC;aACb;SACF;KACF;AACD,IAAA,OAAO,KAAK,CAAC;AACf,CAAC;AAED;;AAEG;AACH,SAAS,oBAAoB,CAC3B,IAAoB,EACpB,OAAe,EACf,KAAmB,EACnB,YAAoC,EACpC,aAA8C,EAC9C,KAAc,EAAA;IAEd,MAAM,gBAAgB,GAAG,IAAI,CAAC,aAAa,CACzC,CAA8B,2BAAA,EAAA,OAAO,CAAI,EAAA,CAAA,CAC3B,CAAC;AACjB,IAAA,IAAI,gBAAgB,IAAI,IAAI,EAAE;QAC5B,MAAM,cAAc,GAAG,gBAAgB,CAAC,gBAAgB,CACtD,CAA+B,4BAAA,EAAA,OAAO,CAAI,EAAA,CAAA,CAChB,CAAC;QAC7B,IAAIT,sCAAsB,CAAC,gBAAgB,CAAC,CAAC,KAAK,CAAC,MAAqB,CAAC,EAAE;YACzE,IAAI,aAAa,GAAG,KAAK,CAAC;AAC1B,YAAA,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,cAAc,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;AAC9C,gBAAA,MAAM,aAAa,GAAG,cAAc,CAAC,CAAC,CAAC,CAAC;AACxC,gBAAA,MAAM,QAAQ,GAAG,aAAa,CAAC,qBAAqB,EAAE,CAAC;AACvD,gBAAA,MAAM,OAAO,GAAG,KAAK,GAAG,QAAQ,CAAC,IAAI,GAAG,QAAQ,CAAC,KAAK,CAAC;AACvD,gBAAA,IAAI,IAAI,CAAC,GAAG,CAAC,OAAO,GAAG,KAAK,CAAC,KAAK,CAAC,IAAI,CAAC,EAAE;oBACxC,IAAI,YAAY,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,aAAa,KAAK,SAAS,EAAE;wBACrD,MAAM;qBACP;;oBAED,aAAa,CAAC,OAAO,CAAC,GAAG,GAAG,YAAY,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC;AAChD,oBAAA,gBAAgB,CAAC,KAAK,CAAC,MAAM,GAAG,YAAY,CAAC;oBAC7C,aAAa,GAAG,IAAI,CAAC;AACrB,oBAAA,aAAa,CAAC,OAAO,CAAC,aAAa,GAAG,IAAI,CAAC;iBAC5C;aACF;YACD,IAAI,CAAC,aAAa,EAAE;AAClB,gBAAA,gBAAgB,CAAC,KAAK,CAAC,MAAM,GAAG,EAAE,CAAC;AACnC,gBAAA,aAAa,CAAC,OAAO,CAAC,GAAG,GAAG,SAAS,CAAC;AACtC,gBAAA,aAAa,CAAC,OAAO,CAAC,aAAa,GAAG,KAAK,CAAC;aAC7C;SACF;aAAM;AACL,YAAA,IAAI,gBAAgB,IAAI,IAAI,EAAE;AAC5B,gBAAA,gBAAgB,CAAC,KAAK,CAAC,MAAM,GAAG,EAAE,CAAC;aACpC;AACD,YAAA,aAAa,CAAC,OAAO,CAAC,GAAG,GAAG,SAAS,CAAC;AACtC,YAAA,aAAa,CAAC,OAAO,CAAC,aAAa,GAAG,KAAK,CAAC;SAC7C;KACF;AACH,CAAC;AAED;;AAEG;SACa,2BAA2B,CACzC,IAAoB,EACpB,OAAe,EACf,KAAmB,EACnB,mBAAoC,EACpC,aAA8C,EAC9C,KAAc,EACd,gBAA2B,EAC3B,gBAA0D,EAAA;IAE1D,IAAI,aAAa,CAAC,OAAO,CAAC,UAAU,IAAI,gBAAgB,IAAI,IAAI,EAAE;QAChE,MAAM,UAAU,GAAG,IAAI,CAAC,aAAa,CAAC,CAA+B,4BAAA,EAAA,OAAO,CAAI,EAAA,CAAA,CAAC,CAAC;AAClF,QAAA,IAAI,UAAU,IAAI,IAAI,EAAE;AACtB,YAAA,MAAM,IAAI,GAAG,UAAU,CAAC,qBAAqB,EAAE,CAAC;YAChD,MAAM,QAAQ,GAAG,KAAK,GAAG,IAAI,CAAC,KAAK,GAAG,KAAK,CAAC,OAAO,GAAG,KAAK,CAAC,OAAO,GAAG,IAAI,CAAC,IAAI,CAAC;AAEhF,YAAA,aAAa,CAAC,OAAO,CAAC,KAAK,GAAG,QAAQ,GAAG,aAAa,CAAC,OAAO,CAAC,MAAM,CAAC;;AAEtE,YAAA,IAAI,gBAAgB,IAAI,IAAI,EAAE;AAC5B,gBAAA,gBAAgB,CAAC;AACf,oBAAA,GAAG,EAAE,aAAa,CAAC,OAAO,CAAC,GAAG;AAC9B,oBAAA,KAAK,EAAE,aAAa,CAAC,OAAO,CAAC,KAAK;AAClC,oBAAA,eAAe,EAAE,mBAAmB;AACrC,iBAAA,CAAC,CAAC;aACJ;SACF;KACF;AACH,CAAC;AAED;;AAEG;AACa,SAAA,4BAA4B,CAC1C,IAAoB,EACpB,OAAe,EACf,KAAmB,EACnB,mBAAoC,EACpC,aAA8C,EAC9C,KAAc,EACd,cAAwD,EAAA;AAExD,IAAA,IAAI,aAAa,CAAC,OAAO,CAAC,UAAU,EAAE;AACpC,QAAA,IAAI,cAAc,IAAI,IAAI,EAAE;YAE1B,KAAK,MAAM,WAAW,IAAI,aAAa,CAAC,OAAO,CAAC,gBAAgB,EAAE;aAEjE;YACD,MAAM,UAAU,GAAG,IAAI,CAAC,aAAa,CAAC,CAA+B,4BAAA,EAAA,OAAO,CAAI,EAAA,CAAA,CAAC,CAAC;AAClF,YAAA,IAAI,UAAU,IAAI,IAAI,EAAE;AACtB,gBAAA,MAAM,IAAI,GAAG,UAAU,CAAC,qBAAqB,EAAE,CAAC;gBAChD,MAAM,QAAQ,GAAG,KAAK,GAAG,IAAI,CAAC,KAAK,GAAG,KAAK,CAAC,OAAO,GAAG,KAAK,CAAC,OAAO,GAAG,IAAI,CAAC,IAAI,CAAC;AAEhF,gBAAA,aAAa,CAAC,OAAO,CAAC,KAAK,GAAG,QAAQ,GAAG,aAAa,CAAC,OAAO,CAAC,MAAM,CAAC;AACtE,gBAAA,cAAc,CAAC;AACb,oBAAA,GAAG,EAAE,aAAa,CAAC,OAAO,CAAC,GAAG;AAC9B,oBAAA,KAAK,EAAE,aAAa,CAAC,OAAO,CAAC,KAAK;AAClC,oBAAA,eAAe,EAAE,mBAAmB;AACrC,iBAAA,CAAC,CAAC;aACJ;SACF;KACF;IACD,aAAa,CAAC,OAAO,GAAG;AACtB,QAAA,UAAU,EAAE,KAAK;AACjB,QAAA,aAAa,EAAE,aAAa,CAAC,OAAO,CAAC,aAAa;AAClD,QAAA,WAAW,EAAE,aAAa,CAAC,OAAO,CAAC,WAAW;KAC/C,CAAC;AACJ,CAAC;AAED;;;AAGG;SACa,0BAA0B,CACxC,IAAoB,EACpB,OAAe,EACf,aAA8C,EAAA;AAE9C,IAAA,IAAI,CAAC,aAAa,CAAC,OAAO,CAAC,UAAU,EAAE;QACrC,MAAM,gBAAgB,GAAG,IAAI,CAAC,aAAa,CACzC,CAA8B,2BAAA,EAAA,OAAO,CAAI,EAAA,CAAA,CAC3B,CAAC;AACjB,QAAA,IAAI,gBAAgB,IAAI,IAAI,EAAE;AAC5B,YAAA,gBAAgB,CAAC,KAAK,CAAC,MAAM,GAAG,EAAE,CAAC;SACpC;AACD,QAAA,aAAa,CAAC,OAAO,CAAC,aAAa,GAAG,KAAK,CAAC;KAC7C;AACH,CAAC;AAED;;;AAGG;AACa,SAAA,0BAA0B,CACxC,IAAoB,EACpB,OAAe,EACf,KAAmB,EACnB,mBAAoC,EACpC,aAA8C,EAC9C,KAAc,EACd,cAAwD,EAAA;;;AAIxD,IAAA,IAAI,aAAa,CAAC,OAAO,CAAC,UAAU,IAAI,KAAK,CAAC,OAAO,KAAK,CAAC,EAAE;AAC3D,QAAA,4BAA4B,CAC1B,IAAI,EACJ,OAAO,EACP,KAAK,EACL,mBAAmB,EACnB,aAAa,EACb,KAAK,EACL,cAAc,CACf,CAAC;KACH;AACH;;ACtPA;;;;;;AAMG;AAmDH;;AAEG;AACa,SAAA,kBAAkB,CAAiD,EACjF,aAAa,EACb,OAAO,EACP,IAAI,EACJ,KAAK,EACL,YAAY,EACZ,mBAAmB,EACnB,aAAa,EACb,4BAA4B,EAC5B,gBAAgB,EAChB,gBAAgB,EAChB,cAAc,EACd,WAAW,EACX,aAAa,EACb,QAAQ,EACR,sBAAsB,EACtB,WAAW,EACwB,EAAA;;AAEnC,IAAA,MAAM,iBAAiB,GAAGtB,YAAM,CAAU,KAAK,CAAC,CAAC;;AAGjD,IAAA,MAAM,mBAAmB,GAAGE,iBAAW,CACrC,CAAC,KAAmB,KAAI;QACtB,IAAI,aAAa,CAAC,OAAO,IAAI,IAAI,IAAI,gBAAgB,IAAI,IAAI,EAAE;AAC7D,YAAA,IAAI,CAAC,aAAa,CAAC,OAAO,CAAC,UAAU,EAAE;AACrC,gBAAA,6BAA6B,CAC3B,aAAa,CAAC,OAAO,EACrB,OAAO,EACP,KAAK,EACL,YAAY,EACZ,aAAa,EACb,KAAK,CACN,CAAC;aACH;iBAAM;AACL,gBAAA,2BAA2B,CACzB,aAAa,CAAC,OAAO,EACrB,OAAO,EACP,KAAK,EACL,mBAAmB,EACnB,aAAa,EACb,KAAK,EACL,gBAAgB,EAChB,gBAAgB,CACjB,CAAC;aACH;SACF;AACH,KAAC,EACD;QACE,aAAa;QACb,OAAO;QACP,YAAY;QACZ,mBAAmB;QACnB,aAAa;QACb,KAAK;QACL,gBAAgB;QAChB,gBAAgB;AACjB,KAAA,CACF,CAAC;;;;AAKF,IAAA,MAAM,mBAAmB,GAAGA,iBAAW,CACrC,CAAC,KAAmB,KAAI;AACtB,QAAA,IAAI,aAAa,CAAC,OAAO,IAAI,IAAI,EAAE;YACjC,iBAAiB,CAAC,OAAO,GAAG,KAAK,CAAC,WAAW,KAAK,OAAO,CAAC;AAC1D,YAAA,MAAM,aAAa,GAAG,KAAK,CAAC,MAAqB,CAAC;YAClD,IACE,sBAAsB,IAAI,IAAI;AAC9B,gBAAA,WAAW,IAAI,IAAI;AACnB,gBAAA,KAAK,CAAC,QAAQ;AACd,gBAAA,uBAAuB,CACrB,aAAa,CAAC,OAAO,EACrB,OAAO,EACP,aAAa,EACb,WAAW,EACX,aAAa,CACd,EACD;;AAEA,gBAAA,IAAI,CAAC8B,wCAAqB,EAAE,EAAE;oBAC5B,KAAK,CAAC,cAAc,EAAE,CAAC;iBACxB;aACF;iBAAM,IACL,8BAA8B,CAC5B,aAAa,CAAC,OAAO,EACrB,OAAO,EACP,KAAK,EACL,YAAY,EACZ,mBAAmB,EACnB,aAAa,EACb,KAAK,EACL,gBAAgB,EAChB,gBAAgB,CACjB,EACD;;gBAEA,KAAK,CAAC,cAAc,EAAE,CAAC;AACvB,gBAAA,aAAa,CAAC,OAAO,CAAC,WAAW,GAAG,IAAI,CAAC;aAC1C;SACF;AACH,KAAC,EACD;QACE,aAAa;QACb,OAAO;QACP,YAAY;QACZ,mBAAmB;QACnB,aAAa;QACb,KAAK;QACL,WAAW;QACX,aAAa;QACb,sBAAsB;QACtB,gBAAgB;QAChB,gBAAgB;AACjB,KAAA,CACF,CAAC;;AAGF,IAAA,MAAM,iBAAiB,GAAG9B,iBAAW,CACnC,CAAC,KAAmB,KAAI;AACtB,QAAA,IAAI,aAAa,CAAC,OAAO,IAAI,IAAI,EAAE;AACjC,YAAA,4BAA4B,CAC1B,aAAa,CAAC,OAAO,EACrB,OAAO,EACP,KAAK,EACL,mBAAmB,EACnB,aAAa,EACb,KAAK,EACL,cAAc,CACf,CAAC;SACH;AACH,KAAC,EACD,CAAC,aAAa,EAAE,OAAO,EAAE,mBAAmB,EAAE,aAAa,EAAE,KAAK,EAAE,cAAc,CAAC,CACpF,CAAC;;AAGF,IAAA,MAAM,oBAAoB,GAAGA,iBAAW,CACtC,CAAC,MAAoB,KAAI;AACvB,QAAA,IAAI,aAAa,CAAC,OAAO,IAAI,IAAI,EAAE;YACjC,0BAA0B,CAAC,aAAa,CAAC,OAAO,EAAE,OAAO,EAAE,aAAa,CAAC,CAAC;SAC3E;KACF,EACD,CAAC,aAAa,EAAE,OAAO,EAAE,aAAa,CAAC,CACxC,CAAC;;AAGF,IAAA,MAAM,oBAAoB,GAAGA,iBAAW,CACtC,CAAC,KAAmB,KAAI;AACtB,QAAA,IAAI,aAAa,CAAC,OAAO,IAAI,IAAI,EAAE;AACjC,YAAA,0BAA0B,CACxB,aAAa,CAAC,OAAO,EACrB,OAAO,EACP,KAAK,EACL,mBAAmB,EACnB,aAAa,EACb,KAAK,EACL,cAAc,CACf,CAAC;SACH;AACH,KAAC,EACD,CAAC,aAAa,EAAE,OAAO,EAAE,mBAAmB,EAAE,aAAa,EAAE,KAAK,EAAE,cAAc,CAAC,CACpF,CAAC;;;AAIF,IAAA,MAAM,aAAa,GAAGA,iBAAW,CAC/B,CAAC,KAAiB,KAAI;QACpB,IAAI,oBAAoB,GAAG,KAAK,CAAC;AACjC,QAAA,MAAM,QAAQ,GAAG6B,0BAAc,EAAE,CAAC,QAAQ,CAAC;AAC3C,QAAA,MAAM,MAAM,GAAG,KAAK,CAAC,MAAqB,CAAC;AAC3C,QAAA,IAAI,aAAa,CAAC,OAAO,IAAI,IAAI,EAAE;YACjC,IACE,sBAAsB,IAAI,IAAI;AAC9B,gBAAA,CAAC,aAAa,CAAC,OAAO,CAAC,WAAW;gBAClC,CAACC,wCAAqB,EAAE,EACxB;gBACA,IAAI,WAAW,IAAI,IAAI,IAAI,KAAK,CAAC,QAAQ,EAAE;oBACzC,oBAAoB,GAAG,2BAA2B,CAChD,aAAa,CAAC,OAAO,EACrB,OAAO,EACP,YAAY,EACZ,MAAM,EACN,WAAW,EACX,4BAA4B,EAC5B,sBAAsB,EACtB,aAAa,EACb,QAAQ,CACT,CAAC;iBACH;gBACD,IAAI,CAAC,oBAAoB,EAAE;AACzB,oBAAA,sBAAsB,CACpB,aAAa,CAAC,OAAO,EACrB,OAAO,EACP,YAAY,EACZ,MAAM,EACN,CAAC,QAAQ,KAAK,KAAK,GAAG,KAAK,CAAC,OAAO,GAAG,KAAK,CAAC,OAAO,KAAK,iBAAiB,CAAC,OAAO,EACjF,sBAAsB,EACtB,aAAa,EACb,QAAQ,CACT,CAAC;iBACH;aACF;YACD,IACE,WAAW,IAAI,IAAI;AACnB,gBAAA,IAAI,IAAI,IAAI;AACZ,gBAAA,CAACA,wCAAqB,EAAE;AACxB,gBAAA,sBAAsB,CAAC,aAAa,CAAC,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,WAAW,EAAE,MAAM,CAAC,EACjF;gBACA,KAAK,CAAC,eAAe,EAAE,CAAC;aACzB;SACF;AACD,QAAA,aAAa,CAAC,OAAO,CAAC,WAAW,GAAG,KAAK,CAAC;AAC5C,KAAC,EACD;QACE,aAAa;QACb,OAAO;QACP,YAAY;QACZ,IAAI;QACJ,aAAa;QACb,4BAA4B;QAC5B,WAAW;QACX,aAAa;QACb,QAAQ;QACR,sBAAsB;QACtB,WAAW;AACZ,KAAA,CACF,CAAC;IAEF,OAAO;AACL,QAAA,aAAa,EAAE,mBAAmB;AAClC,QAAA,aAAa,EAAE,mBAAmB;AAClC,QAAA,WAAW,EAAE,iBAAiB;AAC9B,QAAA,cAAc,EAAE,oBAAoB;AACpC,QAAA,cAAc,EAAE,oBAAoB;AACpC,QAAA,OAAO,EAAE,aAAa;KACvB,CAAC;AACJ;;ACzSA;;;;;;AAMG;AAaH;;AAEG;AACa,SAAA,iBAAiB,CAAiD,EAChF,aAAa,EACb,YAAY,EACZ,gBAAgB,EAChB,mBAAmB,EACnB,gBAAgB,EACgB,EAAA;;AAEhC,IAAA,MAAM,cAAc,GAAG9B,iBAAW,CAAC,MAAK;QACtC,IAAI,aAAa,CAAC,OAAO,IAAI,IAAI,IAAI,gBAAgB,IAAI,IAAI,EAAE;AAC7D,YAAA,iBAAiB,CACf,aAAa,CAAC,OAAO,EACrB,YAAY,EACZ,gBAAgB,EAChB,gBAAgB,EAChB,mBAAmB,EACnB,aAAa,CAAC,OAAO,CAAC,UAAU,CACjC,CAAC;SACH;AACH,KAAC,EAAE,CAAC,aAAa,EAAE,YAAY,EAAE,gBAAgB,EAAE,mBAAmB,EAAE,gBAAgB,CAAC,CAAC,CAAC;AAE3F,IAAA,OAAO,EAAE,QAAQ,EAAE,cAAc,EAAE,CAAC;AACtC;;AC5CA;;;;;;AAMG;AA6CH;;AAEG;AACG,SAAU,qBAAqB,CAAiD,EACpF,aAAa,EACb,OAAO,EACP,IAAI,EACJ,KAAK,EACL,YAAY,EACZ,mBAAmB,EACnB,aAAa,EACb,aAAa,EACb,gBAAgB,EAChB,mBAAmB,EACnB,eAAe,EACf,gBAAgB,EAChB,gBAAgB,EAChB,cAAc,EACd,mBAAmB,EACnB,oBAAoB,EACpB,aAAa,EACb,QAAQ,EACR,iBAAiB,EACjB,WAAW,EACX,aAAa,EACb,qBAAqB,EACiB,EAAA;;AAEtC,IAAA,MAAM,4BAA4B,GAAGF,YAAM,EAAe,CAAC;;AAG3D,IAAA,MAAM,sBAAsB,GAAGqB,aAAO,CAAC,MAAK;QAC1C,OAAO,iBAAiB,IAAI,IAAI;AAC9B,cAAE,CAAC,MAAkC,EAAE,qBAA8B,KAAI;gBACrE,IAAI,CAAC,qBAAqB,EAAE;AAC1B,oBAAA,4BAA4B,CAAC,OAAO,GAAG,SAAS,CAAC;iBAClD;gBACD,iBAAiB,CAAC,MAAM,CAAC,CAAC;aAC3B;cACD,SAAS,CAAC;AAChB,KAAC,EAAE,CAAC,iBAAiB,CAAC,CAAC,CAAC;;AAGxB,IAAA,MAAM,EACJ,kBAAkB,EAClB,WAAW,EACX,oBAAoB,EACpB,eAAe,EACf,cAAc,EACd,oBAAoB,EACpB,gBAAgB,EAChB,cAAc,EACf,GAAG,gBAAgB,CAAC;QACnB,aAAa;QACb,OAAO;QACP,YAAY;QACZ,aAAa;QACb,4BAA4B;QAC5B,KAAK;AACL,QAAA,oBAAoB,EAAE,eAAe;QACrC,gBAAgB;QAChB,mBAAmB;QACnB,oBAAoB;AACrB,KAAA,CAAC,CAAC;IAEH,MAAM,qBAAqB,GAAG,mBAAmB,CAAC;QAChD,aAAa;QACb,OAAO;QACP,IAAI;QACJ,KAAK;QACL,cAAc;QACd,YAAY;QACZ,aAAa;QACb,4BAA4B;QAC5B,gBAAgB;QAChB,WAAW;QACX,oBAAoB;QACpB,aAAa;QACb,QAAQ;QACR,sBAAsB;QACtB,WAAW;QACX,aAAa;QACb,qBAAqB;AACtB,KAAA,CAAC,CAAC;IAEH,MAAM,oBAAoB,GAAG,kBAAkB,CAAC;QAC9C,aAAa;QACb,OAAO;QACP,IAAI;QACJ,KAAK;QACL,YAAY;QACZ,mBAAmB;QACnB,aAAa;QACb,4BAA4B;QAC5B,gBAAgB;QAChB,gBAAgB;QAChB,cAAc;QACd,WAAW;QACX,aAAa;QACb,QAAQ;QACR,sBAAsB;QACtB,WAAW;AACZ,KAAA,CAAC,CAAC;IAEH,MAAM,mBAAmB,GAAG,iBAAiB,CAAC;QAC5C,aAAa;QACb,YAAY;QACZ,gBAAgB;QAChB,mBAAmB;QACnB,gBAAgB;AACjB,KAAA,CAAC,CAAC;AAEH,IAAA,MAAM,uBAAuB,GAAGY,qBAAU,CACxC,kBAAkB,EAClB,qBAAqB,EACrB,oBAAoB,EACpB,mBAAmB,CACpB,CAAC;IAEF,OAAO;QACL,uBAAuB;QACvB,sBAAsB;QACtB,eAAe;QACf,cAAc;QACd,WAAW;QACX,oBAAoB;QACpB,gBAAgB;QAChB,cAAc;KACf,CAAC;AACJ;;ACxKA;;;;;;;AAOG;SACa,qBAAqB,CACnC,iBAAiC,EACjC,cAAsB,EACtB,OAAe,EACf,OAAgB,EAChB,sBAAgE,EAChE,cAAsB,EACtB,YAAoC,EACpC,kBAAoC,EAAA;IAEpC,IAAI,OAAO,EAAE;QACX,OAAO,2BAA2B,CAAC,cAAc,EAAE,YAAY,EAAE,kBAAkB,CAAC,CAAC;KACtF;AACD,IAAA,IAAI,eAAe,GAAG,8BAA8B,CAClD,iBAAiB,EACjB,OAAO,EACP,sBAAsB,EACtB,cAAc,EACd,YAAY,EACZ,kBAAkB,CACnB,CAAC;AACF,IAAA,IAAI,cAAc,KAAK,CAAC,CAAC,EAAE;QACzB,IAAI,UAAU,GAAG,CAAC,CAAC;QACnB,MAAM,WAAW,GAAG,EAAE,CAAC;AACvB,QAAA,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,YAAY,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;YAC5C,MAAM,KAAK,GAAG,eAAe,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC;AACnD,YAAA,WAAW,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;YACxB,UAAU,IAAI,KAAK,CAAC;SACrB;;;QAGD,kBAAkB,CAAC,iBAAiB,EAAE,OAAO,EAAE,WAAW,EAAE,UAAU,CAAC,CAAC;QACxE,cAAc,GAAG,iBAAiB,CAAC,qBAAqB,EAAE,CAAC,KAAK,GAAG,cAAc,CAAC;QAClF,IAAI,IAAI,CAAC,GAAG,CAAC,UAAU,GAAG,cAAc,CAAC,GAAG,KAAK,EAAE;AACjD,YAAA,eAAe,GAAG,8BAA8B,CAC9C,iBAAiB,EACjB,OAAO,EACP,sBAAsB,EACtB,cAAc,EACd,YAAY,EACZ,kBAAkB,CACnB,CAAC;SACH;KACF;AACD,IAAA,OAAO,eAAe,CAAC;AACzB,CAAC;AAED;;;AAGG;AACH,SAAS,2BAA2B,CAClC,cAAsB,EACtB,YAAoC,EACpC,kBAAoC,EAAA;IAEpC,MAAM,qBAAqB,GAAG,CAAC,CAAC;IAChC,MAAM,wBAAwB,GAAG,GAAG,CAAC;IACrC,MAAM,wBAAwB,GAAG,SAAS,CAAC;IAE3C,IAAI,oBAAoB,GAAG,KAAK,CAAC;IACjC,IAAI,kBAAkB,GAAG,CAAC,CAAC;IAC3B,IAAI,gBAAgB,GAAG,CAAC,CAAC;IACzB,IAAI,iBAAiB,GAAG,CAAC,CAAC;IAC1B,MAAM,oBAAoB,GAAG,EAAE,CAAC;IAChC,MAAM,kBAAkB,GAAG,EAAE,CAAC;IAC9B,MAAM,uBAAuB,GAAG,EAAE,CAAC;IACnC,MAAM,oBAAoB,GAAG,EAAE,CAAC;IAChC,MAAM,wBAAwB,GAAG,EAAE,CAAC;AACpC,IAAA,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,YAAY,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;AAC5C,QAAA,MAAM,MAAM,GAAG,YAAY,CAAC,CAAC,CAAC,CAAC;AAC/B,QAAA,IAAI,cAAc,GAAG,MAAM,CAAC,KAAK,CAAC,QAAQ,CAAC;QAC3C,IAAI,cAAc,IAAI,IAAI,IAAI,cAAc,IAAI,CAAC,EAAE;YACjD,cAAc,GAAG,wBAAwB,CAAC;SAC3C;AACD,QAAA,IAAI,cAAc,GAAG,MAAM,CAAC,KAAK,CAAC,QAAQ,CAAC;QAC3C,IAAI,cAAc,IAAI,IAAI,IAAI,cAAc,GAAG,cAAc,EAAE;YAC7D,cAAc,GAAG,wBAAwB,CAAC;SAC3C;AACD,QAAA,oBAAoB,CAAC,IAAI,CAAC,cAAc,CAAC,CAAC;AAC1C,QAAA,IAAI,YAAY,GAAG,MAAM,CAAC,KAAK,CAAC,MAAM,CAAC;QACvC,IAAI,YAAY,IAAI,IAAI,IAAI,YAAY,GAAG,CAAC,EAAE;YAC5C,YAAY,GAAG,qBAAqB,CAAC;SACtC;AACD,QAAA,kBAAkB,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC;AACtC,QAAA,MAAM,WAAW,GAAG,kBAAkB,IAAI,IAAI,GAAG,kBAAkB,CAAC,MAAM,CAAC,GAAG,CAAC,GAAG,SAAS,CAAC;AAC5F,QAAA,IAAI,WAAW,IAAI,IAAI,EAAE;YACvB,gBAAgB,IAAI,WAAW,CAAC;YAChC,iBAAiB,IAAI,WAAW,CAAC;AACjC,YAAA,uBAAuB,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC;AAC1C,YAAA,oBAAoB,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC;AACvC,YAAA,wBAAwB,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC;SAC5C;aAAM;YACL,oBAAoB,GAAG,IAAI,CAAC;YAC5B,iBAAiB,IAAI,cAAc,CAAC;YACpC,kBAAkB,IAAI,YAAY,CAAC;AACnC,YAAA,uBAAuB,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;AACxC,YAAA,oBAAoB,CAAC,IAAI,CAAC,cAAc,CAAC,CAAC;AAC1C,YAAA,wBAAwB,CAAC,IAAI,CAAC,cAAc,CAAC,CAAC;SAC/C;KACF;;AAGD,IAAA,IAAI,oBAAoB,IAAI,iBAAiB,GAAG,cAAc,EAAE;AAC9D,QAAA,wBAAwB,CACtB,YAAY,EACZ,cAAc,EACd,kBAAkB,EAClB,gBAAgB,EAChB,uBAAuB,EACvB,kBAAkB,EAClB,oBAAoB,EACpB,oBAAoB,EACpB,wBAAwB,CACzB,CAAC;KACH;AACD,IAAA,OAAO,mBAAmB,CAAC,YAAY,EAAE,oBAAoB,CAAC,CAAC;AACjE,CAAC;AAED;;AAEG;AACH,SAAS,wBAAwB,CAC/B,YAAoC,EACpC,cAAsB,EACtB,kBAA0B,EAC1B,gBAAwB,EACxB,uBAA+C,EAC/C,kBAA4B,EAC5B,oBAA4C,EAC5C,oBAA8B,EAC9B,wBAAkC,EAAA;;;;IAKlC,IAAI,gBAAgB,GAAG,IAAI,CAAC;IAC5B,OAAO,gBAAgB,EAAE;QACvB,gBAAgB,GAAG,KAAK,CAAC;AACzB,QAAA,wBAAwB,CACtB,YAAY,EACZ,cAAc,EACd,kBAAkB,EAClB,gBAAgB,EAChB,uBAAuB,EACvB,kBAAkB,EAClB,oBAAoB,EACpB,wBAAwB,CACzB,CAAC;QACF,IAAI,iBAAiB,GAAG,CAAC,CAAC;AAC1B,QAAA,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,YAAY,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;AAC5C,YAAA,IAAI,uBAAuB,CAAC,CAAC,CAAC,IAAI,IAAI,EAAE;AACtC,gBAAA,MAAM,QAAQ,GAAG,oBAAoB,CAAC,CAAC,CAAC,CAAC;gBACzC,IAAI,QAAQ,IAAI,IAAI,IAAI,oBAAoB,CAAC,CAAC,CAAC,GAAG,QAAQ,EAAE;oBAC1D,gBAAgB,GAAG,IAAI,CAAC;AACxB,oBAAA,uBAAuB,CAAC,CAAC,CAAC,GAAG,QAAQ,CAAC;oBACtC,gBAAgB,IAAI,QAAQ,CAAC;AAC7B,oBAAA,kBAAkB,IAAI,kBAAkB,CAAC,CAAC,CAAC,CAAC;AAC5C,oBAAA,oBAAoB,CAAC,CAAC,CAAC,GAAG,QAAQ,CAAC;AACnC,oBAAA,wBAAwB,CAAC,CAAC,CAAC,GAAG,QAAQ,CAAC;iBACxC;aACF;AACD,YAAA,iBAAiB,IAAI,oBAAoB,CAAC,CAAC,CAAC,CAAC;SAC9C;AACD,QAAA,gBAAgB,GAAG,gBAAgB,IAAI,iBAAiB,GAAG,cAAc,CAAC;KAC3E;AACH,CAAC;AAED;;;AAGG;AACH,SAAS,8BAA8B,CACrC,iBAAiC,EACjC,OAAe,EACf,sBAAgE,EAChE,cAAsB,EACtB,YAAoC,EACpC,kBAAoC,EAAA;IAEpC,MAAM,wBAAwB,GAAG,SAAS,CAAC;IAC3C,MAAM,wBAAwB,GAAG,SAAS,CAAC;IAE3C,IAAI,oBAAoB,GAAG,KAAK,CAAC;IACjC,MAAM,oBAAoB,GAAG,EAA4B,CAAC;IAC1D,MAAM,oBAAoB,GAAG,EAAE,CAAC;IAChC,MAAM,uBAAuB,GAAG,EAAE,CAAC;IACnC,MAAM,oBAAoB,GAAG,EAAE,CAAC;AAChC,IAAA,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,YAAY,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;AAC5C,QAAA,MAAM,MAAM,GAAG,YAAY,CAAC,CAAC,CAAC,CAAC;AAC/B,QAAA,IAAI,cAAc,GAAG,MAAM,CAAC,KAAK,CAAC,QAAQ,CAAC;QAC3C,IAAI,cAAc,IAAI,IAAI,IAAI,cAAc,IAAI,CAAC,EAAE;YACjD,cAAc,GAAG,wBAAwB,CAAC;SAC3C;AACD,QAAA,oBAAoB,CAAC,IAAI,CAAC,cAAc,CAAC,CAAC;AAC1C,QAAA,IAAI,cAAc,GAAG,MAAM,CAAC,KAAK,CAAC,QAAQ,CAAC;QAC3C,IAAI,cAAc,IAAI,IAAI,IAAI,cAAc,IAAI,cAAc,IAAI,IAAI,GAAG,cAAc,GAAG,CAAC,CAAC,EAAE;YAC5F,cAAc,GAAG,wBAAwB,CAAC;SAC3C;AACD,QAAA,oBAAoB,CAAC,IAAI,CAAC,cAAc,CAAC,CAAC;AAC1C,QAAA,MAAM,WAAW,GAAG,kBAAkB,IAAI,IAAI,GAAG,kBAAkB,CAAC,MAAM,CAAC,GAAG,CAAC,GAAG,SAAS,CAAC;AAC5F,QAAA,IAAI,WAAW,IAAI,IAAI,EAAE;AACvB,YAAA,uBAAuB,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC;AAC1C,YAAA,oBAAoB,CAAC,CAAC,CAAC,GAAG,WAAW,CAAC;SACvC;aAAM;YACL,oBAAoB,GAAG,IAAI,CAAC;AAC5B,YAAA,uBAAuB,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;SACzC;KACF;;IAGD,IAAI,oBAAoB,EAAE;;;QAGxB,IAAI,gBAAgB,GAAG,CAAC,CAAC;QACzB,IAAI,iBAAiB,GAAG,CAAC,CAAC;QAC1B,IAAI,mBAAmB,GAAG,CAAC,CAAC;QAC5B,IAAI,kBAAkB,GAAG,CAAC,CAAC;QAC3B,IAAI,oBAAoB,GAAG,CAAC,CAAC;AAC7B,QAAA,MAAM,aAAa,GAAG,sBAAsB,CAAC,OAAO,CAAC;QACrD,MAAM,qBAAqB,GAAG,EAAE,CAAC;QACjC,MAAM,wBAAwB,GAAG,EAAc,CAAC;QAChD,MAAM,wBAAwB,GAAG,EAAE,CAAC;AACpC,QAAA,IAAI,aAAa,IAAI,IAAI,EAAE;AACzB,YAAA,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,YAAY,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;AAC5C,gBAAA,qBAAqB,CAAC,IAAI,CAAC,aAAa,CAAC,SAAS,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC;AACzE,gBAAA,wBAAwB,CAAC,IAAI,CAAC,aAAa,CAAC,YAAY,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC;aAChF;SACF;aAAM;YACL,sBAAsB,CAAC,OAAO,GAAG;AAC/B,gBAAA,SAAS,EAAE,EAAqB;AAChC,gBAAA,YAAY,EAAE,EAAqB;aACpC,CAAC;YACF,MAAM,cAAc,GAAG,iBAAiB,CAAC,gBAAgB,CACvD,CAA+B,4BAAA,EAAA,OAAO,CAAI,EAAA,CAAA,CAC3C,CAAC;;;AAGF,YAAA,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,cAAc,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;gBAC9C,MAAM,kBAAkB,GAAI,cAAc,CAAC,CAAC,CAAiB,CAAC,qBAAqB,EAAE,CAAC,KAAK,CAAC;AAC5F,gBAAA,wBAAwB,CAAC,IAAI,CAAC,kBAAkB,CAAC,CAAC;AAClD,gBAAA,sBAAsB,CAAC,OAAO,CAAC,YAAY,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,kBAAkB,CAAC;aACvF;;YAED,iBAAiB,CAAC,SAAS,CAAC,MAAM,CAACC,gDAAW,CAAC,eAAe,CAAC,CAAC;AAChE,YAAA,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,cAAc,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;gBAC9C,MAAM,eAAe,GAAI,cAAc,CAAC,CAAC,CAAiB,CAAC,qBAAqB,EAAE,CAAC,KAAK,CAAC;AACzF,gBAAA,qBAAqB,CAAC,IAAI,CAAC,eAAe,CAAC,CAAC;AAC5C,gBAAA,sBAAsB,CAAC,OAAO,CAAC,SAAS,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,eAAe,CAAC;aACjF;SACF;AAED,QAAA,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,qBAAqB,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;AACrD,YAAA,MAAM,WAAW,GAAG,uBAAuB,CAAC,CAAC,CAAC,CAAC;AAC/C,YAAA,IAAI,WAAW,IAAI,IAAI,EAAE;AACvB,gBAAA,IAAI,WAAW,CAAC;AAChB,gBAAA,MAAM,eAAe,GAAG,qBAAqB,CAAC,CAAC,CAAC,CAAC;AACjD,gBAAA,MAAM,QAAQ,GAAG,oBAAoB,CAAC,CAAC,CAAC,CAAC;AACzC,gBAAA,MAAM,QAAQ,GAAG,oBAAoB,CAAC,CAAC,CAAC,CAAC;gBACzC,IAAI,QAAQ,IAAI,IAAI,IAAI,QAAQ,IAAI,eAAe,EAAE;oBACnD,WAAW,GAAG,QAAQ,CAAC;iBACxB;qBAAM,IAAI,QAAQ,IAAI,IAAI,IAAI,eAAe,IAAI,QAAQ,EAAE;oBAC1D,WAAW,GAAG,QAAQ,CAAC;iBACxB;qBAAM;oBACL,WAAW,GAAG,eAAe,CAAC;iBAC/B;gBACD,iBAAiB,IAAI,WAAW,CAAC;;gBAEjC,MAAM,YAAY,GAChB,QAAQ,IAAI,IAAI,IAAI,QAAQ,IAAI,wBAAwB,CAAC,CAAC,CAAC;AACzD,sBAAE,QAAQ;AACV,sBAAE,wBAAwB,CAAC,CAAC,CAAC,CAAC;AAClC,gBAAA,wBAAwB,CAAC,CAAC,CAAC,GAAG,YAAY,CAAC;gBAC3C,mBAAmB;AACjB,oBAAA,QAAQ,IAAI,IAAI,IAAI,QAAQ,IAAI,YAAY,GAAG,QAAQ,GAAG,YAAY,CAAC;gBACzE,kBAAkB,IAAI,YAAY,CAAC;AACnC,gBAAA,oBAAoB,IAAI,YAAY,GAAG,WAAW,CAAC;;AAEnD,gBAAA,oBAAoB,CAAC,CAAC,CAAC,GAAG,WAAW,CAAC;AACtC,gBAAA,wBAAwB,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC;aAC5C;iBAAM;gBACL,gBAAgB,IAAI,WAAW,CAAC;gBAChC,iBAAiB,IAAI,WAAW,CAAC;gBACjC,mBAAmB,IAAI,WAAW,CAAC;AACnC,gBAAA,wBAAwB,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC;aAC5C;SACF;;AAED,QAAA,IAAI,cAAc,KAAK,CAAC,CAAC,EAAE;YACzB,cAAc,GAAG,mBAAmB,CAAC;SACtC;AACD,QAAA,IAAI,iBAAiB,GAAG,cAAc,EAAE;YACtC,2BAA2B,CACzB,YAAY,EACZ,cAAc,EACd,mBAAmB,EACnB,oBAAoB,EACpB,kBAAkB,EAClB,iBAAiB,EACjB,gBAAgB,EAChB,uBAAuB,EACvB,wBAAwB,EACxB,oBAAoB,EACpB,oBAAoB,EACpB,wBAAwB,CACzB,CAAC;SACH;KACF;AACD,IAAA,OAAO,mBAAmB,CAAC,YAAY,EAAE,oBAAoB,CAAC,CAAC;AACjE,CAAC;AAED;;AAEG;AACH,SAAS,2BAA2B,CAClC,YAAoC,EACpC,cAAsB,EACtB,mBAA2B,EAC3B,oBAA4B,EAC5B,kBAA0B,EAC1B,wBAAgC,EAChC,gBAAwB,EACxB,uBAA+C,EAC/C,kBAA4B,EAC5B,oBAA4C,EAC5C,oBAA8B,EAC9B,wBAAkC,EAAA;;;;IAKlC,IAAI,gBAAgB,GAAG,IAAI,CAAC;IAC5B,OAAO,gBAAgB,EAAE;QACvB,gBAAgB,GAAG,KAAK,CAAC;AACzB,QAAA,IAAI,mBAAmB,GAAG,cAAc,EAAE;AACxC,YAAA,8BAA8B,CAC5B,YAAY,EACZ,cAAc,GAAG,wBAAwB,EACzC,oBAAoB,EACpB,kBAAkB,EAClB,uBAAuB,EACvB,oBAAoB,EACpB,wBAAwB,CACzB,CAAC;SACH;aAAM;AACL,YAAA,wBAAwB,CACtB,YAAY,EACZ,cAAc,EACd,kBAAkB,EAClB,gBAAgB,EAChB,uBAAuB,EACvB,kBAAkB,EAClB,oBAAoB,EACpB,wBAAwB,CACzB,CAAC;SACH;QAED,IAAI,iBAAiB,GAAG,CAAC,CAAC;AAC1B,QAAA,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,YAAY,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;AAC5C,YAAA,IAAI,uBAAuB,CAAC,CAAC,CAAC,IAAI,IAAI,EAAE;AACtC,gBAAA,MAAM,QAAQ,GAAG,oBAAoB,CAAC,CAAC,CAAC,CAAC;gBACzC,IAAI,QAAQ,IAAI,IAAI,IAAI,oBAAoB,CAAC,CAAC,CAAC,GAAG,QAAQ,EAAE;oBAC1D,gBAAgB,GAAG,IAAI,CAAC;AACxB,oBAAA,uBAAuB,CAAC,CAAC,CAAC,GAAG,QAAQ,CAAC;oBACtC,gBAAgB,IAAI,QAAQ,CAAC;AAC7B,oBAAA,wBAAwB,IAAI,QAAQ,GAAG,wBAAwB,CAAC,CAAC,CAAC,CAAC;AACnE,oBAAA,kBAAkB,IAAI,kBAAkB,CAAC,CAAC,CAAC,CAAC;AAC5C,oBAAA,oBAAoB,CAAC,CAAC,CAAC,GAAG,QAAQ,CAAC;AACnC,oBAAA,wBAAwB,CAAC,CAAC,CAAC,GAAG,QAAQ,CAAC;iBACxC;aACF;AACD,YAAA,iBAAiB,IAAI,oBAAoB,CAAC,CAAC,CAAC,CAAC;SAC9C;AACD,QAAA,gBAAgB,GAAG,gBAAgB,IAAI,iBAAiB,GAAG,cAAc,CAAC;KAC3E;AACH,CAAC;AAED;;AAEG;AACH,SAAS,8BAA8B,CACrC,YAAoC,EACpC,iBAAyB,EACzB,oBAA4B,EAC5B,kBAA4B,EAC5B,uBAA+C,EAC/C,oBAA8B,EAC9B,wBAAkC,EAAA;AAElC,IAAA,IAAI,iBAAiB,GAAG,CAAC,EAAE;QACzB,IAAI,cAAc,GAAG,iBAAiB,CAAC;QACvC,IAAI,kBAAkB,GAAG,oBAAoB,CAAC;AAC9C,QAAA,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,YAAY,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;YAC5C,IAAI,kBAAkB,GAAG,CAAC,IAAI,uBAAuB,CAAC,CAAC,CAAC,IAAI,IAAI,EAAE;gBAChE,MAAM,aAAa,GAAG,kBAAkB,CAAC,CAAC,CAAC,GAAG,wBAAwB,CAAC,CAAC,CAAC,CAAC;gBAC1E,MAAM,WAAW,GAAG,CAAC,aAAa,GAAG,kBAAkB,IAAI,cAAc,CAAC;gBAC1E,oBAAoB,CAAC,CAAC,CAAC,GAAG,WAAW,GAAG,wBAAwB,CAAC,CAAC,CAAC,CAAC;gBACpE,cAAc,IAAI,WAAW,CAAC;gBAC9B,kBAAkB,IAAI,aAAa,CAAC;aACrC;SACF;KACF;AACH,CAAC;AAED;;AAEG;AACH,SAAS,wBAAwB,CAC/B,YAAoC,EACpC,cAAsB,EACtB,WAAmB,EACnB,gBAAwB,EACxB,uBAA+C,EAC/C,kBAA4B,EAC5B,oBAA8B,EAC9B,wBAAkC,EAAA;IAElC,MAAM,yBAAyB,GAAG,EAA4B,CAAC;IAC/D,IAAI,gBAAgB,GAAG,IAAI,CAAC;IAC5B,OAAO,gBAAgB,EAAE;QACvB,gBAAgB,GAAG,KAAK,CAAC;QACzB,IAAI,kBAAkB,GAAG,WAAW,CAAC;AACrC,QAAA,IAAI,SAAS,GAAG,cAAc,GAAG,gBAAgB,CAAC;AAClD,QAAA,IAAI,SAAS,GAAG,CAAC,EAAE;AACjB,YAAA,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,YAAY,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;gBAC5C,IACE,kBAAkB,GAAG,CAAC;AACtB,oBAAA,uBAAuB,CAAC,CAAC,CAAC,IAAI,IAAI;AAClC,oBAAA,yBAAyB,CAAC,CAAC,CAAC,IAAI,IAAI,EACpC;AACA,oBAAA,MAAM,aAAa,GAAG,kBAAkB,CAAC,CAAC,CAAC,CAAC;oBAC5C,MAAM,QAAQ,GAAG,CAAC,aAAa,GAAG,kBAAkB,IAAI,SAAS,CAAC;;AAGlE,oBAAA,MAAM,QAAQ,GAAG,wBAAwB,CAAC,CAAC,CAAC,CAAC;AAC7C,oBAAA,IAAI,QAAQ,GAAG,QAAQ,EAAE;;AAEvB,wBAAA,yBAAyB,CAAC,CAAC,CAAC,GAAG,QAAQ,CAAC;wBACxC,gBAAgB,IAAI,QAAQ,CAAC;AAC7B,wBAAA,oBAAoB,CAAC,CAAC,CAAC,GAAG,QAAQ,CAAC;wBACnC,gBAAgB,GAAG,IAAI,CAAC;wBACxB,WAAW,IAAI,aAAa,CAAC;wBAC7B,MAAM;qBACP;AACD,oBAAA,oBAAoB,CAAC,CAAC,CAAC,GAAG,QAAQ,CAAC;oBACnC,SAAS,IAAI,QAAQ,CAAC;oBACtB,kBAAkB,IAAI,aAAa,CAAC;iBACrC;aACF;SACF;KACF;AACH,CAAC;AAED;;AAEG;AACH,SAAS,mBAAmB,CAC1B,YAAoC,EACpC,iBAA2B,EAAA;IAE3B,MAAM,YAAY,GAAG,EAAqB,CAAC;AAC3C,IAAA,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,YAAY,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;AAC5C,QAAA,YAAY,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,iBAAiB,CAAC,CAAC,CAAC,CAAC;KAC1D;AACD,IAAA,OAAO,YAAY,CAAC;AACtB,CAAC;AAED;;;AAGG;AACH,SAAS,kBAAkB,CACzB,IAAoB,EACpB,OAAe,EACf,WAAqB,EACrB,UAAkB,EAAA;IAElB,MAAM,SAAS,GAAG,IAAI,CAAC,gBAAgB,CAAC,CAAuB,oBAAA,EAAA,OAAO,CAAI,EAAA,CAAA,CAAC,CAAC;AAC5E,IAAA,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,SAAS,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;AACzC,QAAA,MAAM,QAAQ,GAAG,SAAS,CAAC,CAAC,CAAwB,CAAC;QACrD,QAAQ,CAAC,KAAK,CAAC,KAAK,GAAG,CAAG,EAAA,WAAW,CAAC,CAAC,CAAC,CAAA,EAAA,CAAI,CAAC;KAC9C;AACD,IAAA,MAAM,cAAc,GAAG,IAAI,CAAC,gBAAgB,CAC1C,CAA+B,4BAAA,EAAA,OAAO,CAAI,EAAA,CAAA,CAC3C,CAAC,CAAC,CAAgB,CAAC;IACpB,cAAc,CAAC,KAAK,CAAC,KAAK,GAAG,CAAG,EAAA,UAAU,IAAI,CAAC;AAC/C,IAAA,cAAc,CAAC,KAAK,CAAC,WAAW,GAAG,OAAO,CAAC;AAC7C;;ACrYA,MAAM,gBAAgB,GAAG;IACvB,GAAG,EAAE,EAAE,GAAG,EAAE,KAAK,EAAE,IAAI,EAAE,IAAI,GAAG,EAAE,EAAE;IACpC,MAAM,EAAE,EAAE,GAAG,EAAE,KAAK,EAAE,IAAI,EAAE,IAAI,GAAG,EAAE,EAAE;CACxC,CAAC;AAEF;;;AAGG;AACU,MAAA,KAAK,GAAGC,iBAAU,CAAC,SAAS,KAAK,CAC5C,EACE,YAAY,EAAE,SAAS,EACvB,iBAAiB,EAAE,cAAc,EACjC,uBAAuB,EACvB,OAAO,EACP,WAAW,EACX,YAAY,EACZ,MAAM,GAAG,UAAU,EACnB,IAAI,EACJ,SAAS,EACT,OAAO,GAAG,KAAK,EACf,UAAU,GAAG,MAAK,GAAG,EACrB,mBAAmB,EACnB,oBAAoB,EACpB,iBAAiB,EACjB,SAAS,EACT,aAAa,EACb,QAAQ,GAAG,gBAA2D,EACtE,iBAAiB,EACjB,WAAW,EACX,aAAa,EACb,qBAAqB,EACrB,gCAAgC,EAChC,8BAA8B,EAC9B,uBAAuB,EACvB,gBAAgB,EAChB,cAAc,EACd,cAAc,EACd,MAAM,EACS,EACjB,GAAyC,EAAA;AAEzC,IAAA,MAAM,OAAO,GAAG7C,WAAK,EAAE,CAAC;AACxB,IAAA,MAAM,aAAa,GAAGU,YAAM,CAAiB,IAAI,CAAC,CAAC;IACnD,MAAM,aAAa,GAAGA,YAAM,CAAa,EAAE,eAAe,EAAE,IAAI,EAAE,CAAC,CAAC;IACpE,MAAM,CAAC,mBAAmB,EAAE,sBAAsB,CAAC,GAAGpB,cAAQ,EAAmB,CAAC;IAClF,MAAM,CAAC,aAAa,EAAE,gBAAgB,CAAC,GAAGA,cAAQ,EAAU,CAAC;AAC7D,IAAA,MAAM,mBAAmB,GAAGoB,YAAM,CAAU,KAAK,CAAC,CAAC;AACnD,IAAA,MAAM,sBAAsB,GAAGA,YAAM,EAAoB,CAAC;AAC1D,IAAA,MAAM,mCAAmC,GAAGA,YAAM,EAAoC,CAAC;AACvF,IAAA,MAAM,iCAAiC,GAAGA,YAAM,EAAkC,CAAC;AAEnF,IAAA,MAAM,CAAC,gBAAgB,EAAE,mBAAmB,CAAC,GAAGpB,cAAQ,CAAmC;AACzF,QAAA,KAAK,EAAE,SAAS;AAChB,QAAA,GAAG,EAAE,SAAS;AACf,KAAA,CAAC,CAAC;IAEH,MAAM,aAAa,GAAGoB,YAAM,CAAsB;AAChD,QAAA,UAAU,EAAE,KAAK;AACjB,QAAA,aAAa,EAAE,KAAK;AACpB,QAAA,WAAW,EAAE,KAAK;AACnB,KAAA,CAAC,CAAC;AAEH,IAAA,MAAM,EAAE,SAAS,EAAE,GAAGoC,eAAO,EAAE,CAAC;AAChC,IAAA,MAAM,KAAK,GAAG,SAAS,KAAK,KAAK,CAAC;AAClC,IAAA,MAAM,WAAW,GAAGC,mBAAS,CAAC,MAAM,CAAC,CAAC;AAEtC,IAAA,MAAM,YAAY,GAAGhB,aAAO,CAAC,MAAK;QAChC,MAAM,eAAe,GAAG,EAAiC,CAAC;AAC1D,QAAA,IAAI,WAAW,IAAI,IAAI,EAAE;AACvB,YAAA,KAAK,MAAM,GAAG,IAAI,WAAW,EAAE;AAC7B,gBAAA,IAAI,OAAO,CAAC,GAAG,CAAC,IAAI,IAAI,EAAE;oBACxB,eAAe,CAAC,IAAI,CAAC;AACnB,wBAAA,GAAG,EAAE,GAAG;AACR,wBAAA,KAAK,EAAE,OAAO,CAAC,GAAG,CAAC;AACpB,qBAAA,CAAC,CAAC;iBACJ;aACF;SACF;aAAM;AACL,YAAA,KAAK,MAAM,CAAC,GAAG,EAAE,KAAK,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,OAAO,CAAC,EAAE;gBAClD,eAAe,CAAC,IAAI,CAAC;AACnB,oBAAA,GAAG,EAAE,GAAQ;AACb,oBAAA,KAAK,EAAE,KAAwB;AAChC,iBAAA,CAAC,CAAC;aACJ;SACF;AACD,QAAA,OAAO,eAAe,CAAC;AACzB,KAAC,EAAE,CAAC,WAAW,EAAE,OAAO,CAAC,CAAC,CAAC;IAE3B,IAAI,gBAAgB,GAAG,KAAK,CAAC;IAC7B,MAAM,iBAAiB,GAAG,EAAE,CAAC;AAC7B,IAAA,IAAI,mBAAmB,IAAI,IAAI,EAAE;AAC/B,QAAA,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,YAAY,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;YAC5C,MAAM,GAAG,GAAG,YAAY,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC;AAChC,YAAA,MAAM,YAAY,GAAG,mBAAmB,CAAC,GAAG,CAAC,CAAC;AAC9C,YAAA,MAAM,WAAW,GAAG,YAAY,IAAI,IAAI,GAAG,YAAY,CAAC,GAAG,CAAC,GAAG,SAAS,CAAC;AACzE,YAAA,IAAI,YAAY,IAAI,IAAI,KAAK,WAAW,IAAI,IAAI,IAAI,WAAW,KAAK,YAAY,CAAC,EAAE;gBACjF,gBAAgB,GAAG,IAAI,CAAC;gBACxB,MAAM;aACP;AACD,YAAA,iBAAiB,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC;SACtC;KACF;SAAM;QACL,gBAAgB,GAAG,IAAI,CAAC;KACzB;AACD,IAAA,MAAM,UAAU,GAAG;AACjB,QAAA,gBAAgB,EAAE,gBAAgB;QAClC,iBAAiB,EAAE,gBAAgB,GAAG,SAAS,GAAG,iBAAiB;KACtD,CAAC;AAEhB,IAAAiB,yBAAmB,CACjB,GAAI,EACJ,MAAK;QACH,OAAO;YACL,2BAA2B,EAAE,MAAK;AAChC,gBAAA,IAAI,UAAU,CAAC,gBAAgB,EAAE;AAC/B,oBAAA,OAAO,EAAE,CAAC;iBACX;AACD,gBAAA,OAAO,2BAA2B,CAChC,aAAa,CAAC,OAAQ,EACtB,YAAY,EACZ,UAAU,CAAC,iBAAiB,CAC7B,CAAC;aACH;YACD,yBAAyB,EAAE,MAAK;AAC9B,gBAAA,IAAI,UAAU,CAAC,gBAAgB,EAAE;AAC/B,oBAAA,OAAO,EAAE,CAAC;iBACX;gBACD,OAAO,yBAAyB,CAAC,aAAa,CAAC,OAAQ,EAAE,OAAO,CAAC,CAAC;aACnE;SACF,CAAC;AACJ,KAAC,EACD,CAAC,OAAO,EAAE,YAAY,EAAE,UAAU,CAAC,gBAAgB,EAAE,UAAU,CAAC,iBAAiB,CAAC,CACnF,CAAC;AAEF,IAAA,MAAM,eAAe,GAAGpC,iBAAW,CACjC,CAAC,IAAgB,KAAI;QACnB,IAAI,WAAW,GAAG,KAAK,CAAC;AACxB,QAAA,IAAI,IAAI,CAAC,IAAI,KAAK,QAAQ,EAAE;AAC1B,YAAA,WAAW,GAAG,cAAc,IAAI,IAAI,CAAC;SACtC;aAAM;AACL,YAAA,KAAK,MAAM,MAAM,IAAI,YAAY,EAAE;gBACjC,IAAI,MAAM,CAAC,GAAG,KAAK,IAAI,CAAC,SAAS,EAAE;AACjC,oBAAA,IAAI,IAAI,CAAC,IAAI,KAAK,MAAM,EAAE;wBACxB,WAAW,GAAG,MAAM,CAAC,KAAK,CAAC,QAAQ,IAAI,IAAI,CAAC;qBAC7C;AAAM,yBAAA,IAAI,IAAI,CAAC,IAAI,KAAK,QAAQ,EAAE;wBACjC,WAAW,GAAG,MAAM,CAAC,KAAK,CAAC,cAAc,IAAI,IAAI,CAAC;qBACnD;AAAM,yBAAA,IAAI,IAAI,CAAC,IAAI,KAAK,QAAQ,EAAE;wBACjC,WAAW,GAAG,MAAM,CAAC,KAAK,CAAC,cAAc,IAAI,IAAI,CAAC;qBACnD;oBACD,MAAM;iBACP;aACF;SACF;AACD,QAAA,OAAO,WAAW,CAAC;AACrB,KAAC,EACD,CAAC,YAAY,EAAE,cAAc,CAAC,CAC/B,CAAC;AAEF,IAAA,MAAM,EACJ,uBAAuB,EACvB,sBAAsB,EACtB,eAAe,EACf,cAAc,EACd,WAAW,EACX,oBAAoB,EACpB,gBAAgB,EAChB,cAAc,EACf,GAAG,qBAAqB,CAAC;QACxB,aAAa;QACb,OAAO;QACP,IAAI;QACJ,KAAK;QACL,YAAY;AACZ,QAAA,mBAAmB,EAAE,mBAAoB;QACzC,aAAa;QACb,aAAa;QACb,gBAAgB;QAChB,mBAAmB;QACnB,eAAe;AACf,QAAA,gBAAgB,EAAE,UAAU,CAAC,gBAAgB,GAAG,SAAS,GAAG,UAAU,CAAC,iBAAiB;QACxF,gBAAgB;QAChB,cAAc;QACd,mBAAmB;QACnB,oBAAoB;QACpB,aAAa;QACb,QAAQ;QACR,iBAAiB;QACjB,WAAW;QACX,aAAa;QACb,qBAAqB;AACtB,KAAA,CAAC,CAAC;;IAGHqC,qBAAe,CAAC,MAAK;AACnB,QAAA,sBAAsB,CAAC,OAAO,GAAG,SAAS,CAAC;QAC3C,sBAAsB,CAAC,SAAS,CAAC,CAAC;AACpC,KAAC,EAAE,CAAC,OAAO,CAAC,CAAC,CAAC;;IAGdA,qBAAe,CAAC,MAAK;AACnB,QAAA,MAAM,WAAW,GAAG,aAAa,CAAC,OAAO,CAAC;QAC1C,IACE,WAAW,IAAI,IAAI;AACnB,YAAA,CAAC,aAAa,CAAC,OAAO,CAAC,eAAe;AACtC,YAAA,UAAU,CAAC,gBAAgB;AAC3B,YAAA,aAAa,CAAC,OAAO,CAAC,qBAAqB,IAAI,IAAI,EACnD;AACA,YAAA,MAAM,UAAU,GACd,MAAM,KAAK,OAAO;kBACd,aAAa,CAAC,OAAO,CAAC,QAAQ,GAAG,aAAa,CAAC,OAAO,CAAC,qBAAqB;kBAC5E,CAAC,CAAC,CAAC;YACT,MAAM,eAAe,GAAG,qBAAqB,CAC3C,WAAW,EACX,aAAa,CAAC,OAAO,CAAC,qBAAqB,EAC3C,OAAO,EACP,MAAM,KAAK,OAAO,EAClB,sBAAsB,EACtB,UAAU,EACV,YAAY,EACZ,YAAY,CACb,CAAC;YACF,sBAAsB,CAAC,eAAe,CAAC,CAAC;SACzC;AACH,KAAC,EAAE,CAAC,OAAO,EAAE,YAAY,EAAE,YAAY,EAAE,MAAM,EAAE,UAAU,CAAC,gBAAgB,CAAC,CAAC,CAAC;;AAG/E,IAAA,MAAM,yBAAyB,GAAGvC,YAAM,EAAwC,CAAC;AACjF,IAAA,yBAAyB,CAAC,OAAO,GAAG,CAAC,KAA0B,KAAI;AACjE,QAAA,IAAI,aAAa,CAAC,OAAO,IAAI,IAAI,EAAE;AACjC,YAAA,IAAI,cAAc,CAAC;AACnB,YAAA,IAAI,cAAc,CAAC;YACnB,MAAM,eAAe,GAAG,KAAK,CAAC,cAAc,CAAC,CAAC,CAAC,CAAC,UAAU,CAAC;YAC3D,MAAM,gBAAgB,GAAG,KAAK,CAAC,cAAc,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC;YAC3D,MAAM,WAAW,GAAG,KAAK,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC,UAAU,CAAC;YACtD,MAAM,YAAY,GAAG,KAAK,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC;YAEtD,IAAI,eAAe,KAAK,CAAC,IAAI,WAAW,KAAK,CAAC,EAAE;AAC9C,gBAAA,IAAI,aAAa,CAAC,OAAO,CAAC,eAAe,EAAE;AACzC,oBAAA,cAAc,GAAG,WAAW,GAAG,eAAe,CAAC;AAC/C,oBAAA,cAAc,GAAG,MAAM,KAAK,OAAO,GAAG,eAAe,GAAG,CAAC,CAAC,CAAC;oBAC3D,aAAa,CAAC,OAAO,GAAG;AACtB,wBAAA,eAAe,EAAE,KAAK;AACtB,wBAAA,YAAY,EAAE,eAAe;AAC7B,wBAAA,QAAQ,EAAE,WAAW;AACrB,wBAAA,aAAa,EAAE,gBAAgB;AAC/B,wBAAA,SAAS,EAAE,YAAY;AACvB,wBAAA,qBAAqB,EAAE,cAAc;wBACrC,sBAAsB,EAAE,YAAY,GAAG,gBAAgB;qBACxD,CAAC;iBACH;qBAAM;AACL,oBAAA,cAAc,GAAG,aAAa,CAAC,OAAO,CAAC,qBAAqB,CAAC;oBAC7D,cAAc,GAAG,mBAAmB,CAAC,OAAO;AAC1C,0BAAE,eAAe;AACjB,0BAAE,WAAW,GAAG,cAAc,CAAC;AACjC,oBAAA,aAAa,CAAC,OAAO,CAAC,YAAY,GAAG,eAAe,CAAC;AACrD,oBAAA,aAAa,CAAC,OAAO,CAAC,QAAQ,GAAG,WAAW,CAAC;AAC7C,oBAAA,aAAa,CAAC,OAAO,CAAC,aAAa,GAAG,gBAAgB,CAAC;AACvD,oBAAA,aAAa,CAAC,OAAO,CAAC,SAAS,GAAG,YAAY,CAAC;iBAChD;gBACD,MAAM,eAAe,GAAG,qBAAqB,CAC3C,aAAa,CAAC,OAAO,EACrB,cAAc,EACd,OAAO,EACP,MAAM,KAAK,OAAO,EAClB,sBAAsB,EACtB,cAAc,EACd,YAAY,EACZ,YAAY,CACb,CAAC;gBACF,sBAAsB,CAAC,eAAe,CAAC,CAAC;AACxC,gBAAA,IAAI,aAAa,KAAK,gBAAgB,EAAE;oBACtC,gBAAgB,CAAC,gBAAgB,CAAC,CAAC;iBACpC;aACF;SACF;AACH,KAAC,CAAC;;AAEF,IAAA,MAAM,4BAA4B,GAAGE,iBAAW,CAAC,CAAC,KAA0B,KAAI;AAC9E,QAAA,yBAAyB,CAAC,OAAQ,CAAC,KAAK,CAAC,CAAC;KAC3C,EAAE,EAAE,CAAC,CAAC;AACP,IAAAsC,mCAAiB,CAAC,aAAa,EAAE,4BAA4B,CAAC,CAAC;;IAG/DD,qBAAe,CAAC,MAAK;AACnB,QAAA,MAAM,cAAc,GAAG,aAAa,CAAC,OAAO,CAAC,qBAAqB,CAAC;AACnE,QAAA,IACE,aAAa,CAAC,OAAO,IAAI,IAAI;AAC7B,YAAA,CAAC,aAAa,CAAC,OAAO,CAAC,eAAe;AACtC,YAAA,aAAa,IAAI,IAAI;YACrB,cAAc,IAAI,IAAI,EACtB;AACA,YAAA,MAAM,UAAU,GAAG,aAAa,CAAC,OAAO,CAAC,aAAa,CACpD,CAA+B,4BAAA,EAAA,OAAO,CAAI,EAAA,CAAA,CAC3C,CAAC;AACF,YAAA,IAAI,UAAU,IAAI,IAAI,EAAE;gBACtB,MAAM,mBAAmB,GAAG,aAAa,GAAG,UAAU,CAAC,qBAAqB,EAAE,CAAC,MAAM,CAAC;AACtF,gBAAA,mBAAmB,CAAC,OAAO,GAAG,mBAAmB,CAAC;gBAClD,IAAI,mBAAmB,EAAE;oBACvB,aAAa,CAAC,OAAO,CAAC,SAAS,CAAC,MAAM,CAACL,gDAAW,CAAC,gBAAgB,CAAC,CAAC;oBACrE,aAAa,CAAC,OAAO,CAAC,SAAS,CAAC,GAAG,CAACA,gDAAW,CAAC,cAAc,CAAC,CAAC;oBAChE,aAAa,CAAC,OAAO,CAAC,KAAK,CAAC,gBAAgB,GAAG,EAAE,CAAC;iBACnD;qBAAM;oBACL,aAAa,CAAC,OAAO,CAAC,SAAS,CAAC,MAAM,CAACA,gDAAW,CAAC,cAAc,CAAC,CAAC;oBACnE,aAAa,CAAC,OAAO,CAAC,SAAS,CAAC,GAAG,CAACA,gDAAW,CAAC,gBAAgB,CAAC,CAAC;oBAClE,aAAa,CAAC,OAAO,CAAC,KAAK,CAAC,gBAAgB,GAAG,CAAA,EAAG,cAAc,CAAA,EAAA,CAAI,CAAC;iBACtE;aACF;SACF;AACH,KAAC,EAAE,CAAC,OAAO,EAAE,aAAa,EAAE,IAAI,EAAE,cAAc,EAAE,mBAAmB,CAAC,CAAC,CAAC;;IAGxEK,qBAAe,CAAC,MAAK;AACnB,QAAA,IACE,mCAAmC,CAAC,OAAO,KAAK,gCAAgC;AAChF,YAAA,CAAC,UAAU,CAAC,gBAAgB,EAC5B;AACA,YAAA,2BAA2B,CACzB,aAAa,CAAC,OAAQ,EACtB,YAAY,EACZ,UAAU,CAAC,iBAAiB,EAC5B,KAAK,EACL,gCAAgC,CACjC,CAAC;AACF,YAAA,mCAAmC,CAAC,OAAO,GAAG,gCAAgC,CAAC;SAChF;AACH,KAAC,EAAE;QACD,OAAO;QACP,YAAY;AACZ,QAAA,UAAU,CAAC,gBAAgB;AAC3B,QAAA,UAAU,CAAC,iBAAiB;QAC5B,gCAAgC;QAChC,KAAK;AACN,KAAA,CAAC,CAAC;;IAGHA,qBAAe,CAAC,MAAK;AACnB,QAAA,IACE,iCAAiC,CAAC,OAAO,KAAK,8BAA8B;AAC5E,YAAA,CAAC,UAAU,CAAC,gBAAgB,EAC5B;YACA,yBAAyB,CAAC,aAAa,CAAC,OAAQ,EAAE,OAAO,EAAE,8BAA8B,CAAC,CAAC;AAC3F,YAAA,iCAAiC,CAAC,OAAO,GAAG,8BAA8B,CAAC;SAC5E;KACF,EAAE,CAAC,OAAO,EAAE,UAAU,CAAC,gBAAgB,EAAE,8BAA8B,CAAC,CAAC,CAAC;;IAG3EA,qBAAe,CAAC,MAAK;QACnB,IAAI,aAAa,CAAC,OAAO,IAAI,IAAI,IAAI,CAAC,UAAU,CAAC,gBAAgB,EAAE;AACjE,YAAA,mBAAmB,CACjB,aAAa,CAAC,OAAO,EACrB,OAAO,EACP,KAAK,EACL,YAAY,EACZ,UAAU,CAAC,iBAAiB,EAC5B,gBAAgB,EAChB,mBAAmB,CACpB,CAAC;SACH;AACH,KAAC,EAAE;QACD,OAAO;QACP,YAAY;AACZ,QAAA,UAAU,CAAC,gBAAgB;AAC3B,QAAA,UAAU,CAAC,iBAAiB;QAC5B,KAAK;QACL,gBAAgB;AACjB,KAAA,CAAC,CAAC;;IAGH,MAAM,EAAE,OAAO,EAAE,YAAY,EAAE,GAAGnD,mCAAiB,CAAsBqD,yDAAiB,EAAE;AAC1F,QAAA,WAAW,EAAE,aAAa,CAAC,OAAO,CAAC,eAAe,GAAG,eAAe,GAAG,gBAAgB;QACvF,cAAc,EAAE,mBAAmB,CAAC,OAAO,GAAG,kBAAkB,GAAG,mBAAmB;QACtF,eAAe,EACb,MAAM,KAAK,UAAU,IAAI,sBAAsB,CAAC,OAAO,KAAK,SAAS;AACnE,cAAE,mBAAmB;AACrB,cAAE,oBAAoB;AAC3B,KAAA,CAAC,CAAC;IAEH,MAAM,OAAO,GAAG3D,qBAAU,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC;IAC3C,MAAM,YAAY,GAAGA,qBAAU,CAAC,CAAC4D,+CAAgB,CAAC,IAAI,CAAC,CAAC,CAAC;IACzD,MAAM,mBAAmB,GAAG5D,qBAAU,CAAC,CAAC6D,iDAAkB,CAAC,IAAI,CAAC,CAAC,CAAC;;IAGlE,MAAM,UAAU,GAAG,YAAY,CAAC,IAAI,CAAC,CAAC,MAA4B,KAAI;AACpE,QAAA,OAAO,MAAM,CAAC,KAAK,CAAC,cAAc,IAAI,IAAI,IAAI,MAAM,CAAC,KAAK,CAAC,UAAU,IAAI,IAAI,CAAC;AAChF,KAAC,CAAC,CAAC;AACH,IAAA,MAAM,YAAY,GAAG,IAAI,IAAI,IAAI,GAAG,SAAS,GAAG,OAAO,GAAG,CAAC,CAAC,GAAG,IAAI,CAAC,MAAM,IAAI,UAAU,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC;AAElG,IAAA,MAAM,eAAe,GAAG,gBAAgB,CAAC,KAAK,CAAC;AAC/C,IAAA,MAAM,aAAa,GAAG,gBAAgB,CAAC,GAAG,CAAC;AAE3C,IAAA,MAAM,oBAAoB,GAAG,SAAS,EAAE,QAAQ,KAAK,SAAS,CAAC;AAC/D,IAAA,MAAM,sBAAsB,GAAG,SAAS,EAAE,UAAU,KAAK,QAAQ,CAAC;AAElE,IAAA,MAAM,qBAAqB,GACzB,aAAa,EAAE,GAAG,KAAK,QAAQ,IAAI,aAAa,EAAE,GAAG,KAAK,UAAU,CAAC;AACvE,IAAA,MAAM,wBAAwB,GAC5B,aAAa,EAAE,MAAM,KAAK,QAAQ,IAAI,aAAa,EAAE,MAAM,KAAK,UAAU,CAAC;IAE7E,MAAM,iBAAiB,GAAG,MAAK;QAC7B,OAAO;AACL,YAAA,OAAO,EAAE,OAAO;AAChB,YAAA,IAAI,EAAE,IAAI;AACV,YAAA,YAAY,EAAE,YAAY;AAC1B,YAAA,uBAAuB,EAAE,uBAAuB;AAChD,YAAA,oBAAoB,EAAE,oBAAoB;AAC1C,YAAA,sBAAsB,EAAE,sBAAsB;AAC9C,YAAA,QAAQ,EAAE,QAAQ;AAClB,YAAA,qBAAqB,EAAE,qBAAqB;AAC5C,YAAA,2BAA2B,EAAE,aAAa,EAAE,GAAG,KAAK,QAAQ;AAC5D,YAAA,WAAW,EAAE,WAAW;AACxB,YAAA,iBAAiB,EAAE,iBAAiB;AACpC,YAAA,eAAe,EAAE,eAAe;AAChC,YAAA,SAAS,EAAE,SAAS;AACpB,YAAA,OAAO,EAAE,OAAO;AAChB,YAAA,UAAU,EAAE,UAAU;AACtB,YAAA,cAAc,EAAE,cAAc;AAC9B,YAAA,cAAc,EAAE,iBAAiB,CAAC,aAAa,CAAC;AAChD,YAAA,iBAAiB,EAAE,sBAAsB;AACzC,YAAA,eAAe,EAAE,eAAe;AAChC,YAAA,aAAa,EAAE,aAAa;AAC5B,YAAA,KAAK,EAAE,KAAK;SACb,CAAC;AACJ,KAAC,CAAC;IAEF,MAAM,qBAAqB,GAAG,MAAK;AACjC,QAAA,IAAI,iBAAiB,CAAC;AACtB,QAAA,IAAI,CAAC,UAAU,CAAC,gBAAgB,EAAE;AAChC,YAAA,iBAAiB,GAAG,UAAU,CAAC,iBAAiB,CAAC;SAClD;aAAM;YACL,iBAAiB,GAAG,EAAE,CAAC;AACvB,YAAA,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,YAAY,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;AAC5C,gBAAA,iBAAiB,CAAC,CAAC,CAAC,GAAG,SAAS,CAAC;aAClC;SACF;QACD,OAAO;AACL,YAAA,OAAO,EAAE,OAAO;AAChB,YAAA,iBAAiB,EAAE,iBAAiB;SACrC,CAAC;AACJ,KAAC,CAAC;IAEF,MAAM,mBAAmB,GAAG,MAAK;QAC/B,OAAO;AACL,YAAA,OAAO,EAAE,OAAO;AAChB,YAAA,YAAY,EAAE,YAAY;AAC1B,YAAA,oBAAoB,EAAE,oBAAoB;AAC1C,YAAA,UAAU,EAAE,WAAW,EAAE,IAAI,KAAK,QAAQ,GAAG,WAAW,CAAC,SAAS,GAAG,SAAS;YAC9E,kBAAkB,EAAE,QAAQ,CAAC,MAAM;YACnC,eAAe,EAAE,QAAQ,CAAC,GAAG;AAC7B,YAAA,wBAAwB,EAAE,wBAAwB;AAClD,YAAA,qBAAqB,EAAE,qBAAqB;AAC5C,YAAA,iBAAiB,EAAE,sBAAsB;AACzC,YAAA,aAAa,EAAE,aAAa;AAC5B,YAAA,qBAAqB,EAAE,qBAAqB;AAC5C,YAAA,eAAe,EAAE,eAAe;AAChC,YAAA,eAAe,EAAE,eAAe;AAChC,YAAA,aAAa,EAAE,aAAa;AAC5B,YAAA,aAAa,EAAE,aAAa,CAAC,OAAO,CAAC,aAAa;AAClD,YAAA,KAAK,EAAE,KAAK;SACb,CAAC;AACJ,KAAC,CAAC;IAEF,MAAM,mBAAmB,GAAG,MAAK;QAC/B,OAAO;AACL,YAAA,OAAO,EAAE,OAAO;AAChB,YAAA,UAAU,EAAE,UAAU;AACtB,YAAA,YAAY,EAAE,YAAY;AAC1B,YAAA,oBAAoB,EAAE,oBAAoB;AAC1C,YAAA,UAAU,EAAE,WAAW,EAAE,IAAI,KAAK,QAAQ,GAAG,WAAW,CAAC,SAAS,GAAG,SAAS;YAC9E,YAAY,EAAE,QAAQ,CAAC,MAAM;AAC7B,YAAA,wBAAwB,EAAE,wBAAwB;AAClD,YAAA,eAAe,EAAE,eAAe;AAChC,YAAA,eAAe,EAAE,eAAe;AAChC,YAAA,aAAa,EAAE,aAAa;AAC5B,YAAA,KAAK,EAAE,KAAK;SACb,CAAC;AACJ,KAAC,CAAC;IAEF,MAAM,qBAAqB,GAAG,MAAK;QACjC,IAAI,uBAAuB,IAAI,IAAI,IAAI,CAAC,UAAU,CAAC,gBAAgB,EAAE;YACnE,IAAI,QAAQ,GAAG,CAAC,CAAC;AACjB,YAAA,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,YAAY,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;AAC5C,gBAAA,QAAQ,IAAI,UAAU,CAAC,iBAAiB,CAAC,CAAC,CAAC,CAAC;gBAC5C,IAAI,YAAY,CAAC,CAAC,CAAC,CAAC,GAAG,KAAK,uBAAuB,CAAC,GAAG,EAAE;AACvD,oBAAA,IAAI,uBAAuB,CAAC,KAAK,IAAI,IAAI,EAAE;AACzC,wBAAA,QAAQ,IAAI,uBAAuB,CAAC,KAAK,CAAC;qBAC3C;oBACD,MAAM;iBACP;aACF;YACD,OAAOhE,cAAA,CAAC,kBAAkB,EAAA,EAAC,QAAQ,EAAE,QAAQ,EAAE,KAAK,EAAE,KAAK,EAAA,CAAI,CAAC;SACjE;AACD,QAAA,OAAO,SAAS,CAAC;AACnB,KAAC,CAAC;IAEF,MAAM,aAAa,GAAG,MAAK;QACzB,IAAI,WAAW,GAAG,EAAE,CAAC;QACrB,IAAI,YAAY,GAAG,EAAE,CAAC;AACtB,QAAA,IAAI,CAAC,UAAU,CAAC,gBAAgB,EAAE;YAChC,IAAI,UAAU,GAAG,CAAC,CAAC;AACnB,YAAA,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,UAAU,CAAC,iBAAiB,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;AAC5D,gBAAA,UAAU,IAAI,UAAU,CAAC,iBAAiB,CAAC,CAAC,CAAC,CAAC;aAC/C;AACD,YAAA,WAAW,GAAG,CAAA,OAAA,EAAU,UAAU,CAAA,wBAAA,CAA0B,CAAC;SAC9D;aAAM;;;AAGL,YAAA,WAAW,GAAG,MAAM,KAAK,UAAU,GAAG,cAAc,GAAG,YAAY,CAAC;SACrE;AACD,QAAA,IAAI,aAAa,IAAI,IAAI,EAAE;YACzB,YAAY,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,CAAC,MAAM,KAAK,CAAC,GAAG,eAAe,aAAa,CAAA,GAAA,CAAK,GAAG,EAAE,CAAC;SAC3F;AACD,QAAA,OAAO,CAAG,EAAA,WAAW,CAAG,EAAA,YAAY,EAAE,CAAC;AACzC,KAAC,CAAC;AAEF,IAAA,QACEA,cAAA,CAAA,KAAA,EAAA,EAAA,GACM,WAAW,EACf,GAAG,EAAE,aAAa,EAAA,eAAA,EACH,YAAY,CAAC,MAAM,EAAA,YAAA,EACtB,SAAS,EAAA,iBAAA,EACJ,cAAc,EAAA,eAAA,EAChB,YAAY,EAAA,IACtB,aAAa,EAAE,MAAM,KAAK,UAAU,IAAI,aAAa,EAAE,GAAG,KAAK,UAAU;AAC5E,cAAE,EAAE,sBAAsB,EAAE,IAAI,EAAE;cAChC,EAAE,CAAC,EACP,KAAK,EAAE,OAAO,EACd,IAAI,EAAE,MAAM,KACR,uBAAuB,EAAA,QAAA,EAC3BgC,gBAACiC,yBAAY,EAAA,EACX,UAAU,EAAE,mBAAmB,EAC/B,UAAU,EAAE,CAAC,cAAc,EAC3B,gBAAgB,EAAE,gBAAgB,EAClC,cAAc,EAAE,cAAc,EAC9B,eAAe,EAAE,oBAAoB,aACrCjE,cAAC,CAAAkE,uCAAmB,CAAC,QAAQ,EAAC,EAAA,KAAK,EAAE,EAAE,UAAU,EAAE,cAAc,EAAE,EAAA,QAAA,EACjElC,2BACE,KAAK,EAAE,YAAY,EACnB,IAAI,EAAE,cAAc,EACpB,KAAK,EAAE,aAAa,EAAE,+BACK,OAAO,EAAA,QAAA,EAAA,CAClChC,eAAC,aAAa,EAAA,EAAA,GAAK,qBAAqB,EAAE,EAAA,CAAI,EAC9CA,cAAA,CAAC,WAAW,EAAA,EAAA,GAAK,mBAAmB,EAAE,EAAA,CAAI,EAC1CA,cAAC,CAAA,SAAS,OAAK,iBAAiB,EAAE,EAAI,CAAA,EACtCA,cAAC,CAAA,WAAW,OAAK,mBAAmB,EAAE,EAAI,CAAA,CAAA,EAAA,CACpC,EACqB,CAAA,EAC9B,qBAAqB,EAAE,CAAA,EAAA,CACX,EACX,CAAA,EACN;AACJ,CAAC;;;;"}