@sanity/ui 0.37.21 → 0.38.1

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 (733) hide show
  1. package/dist/sanity-ui.cjs +1321 -0
  2. package/dist/sanity-ui.cjs.map +1 -0
  3. package/dist/sanity-ui.js +1321 -0
  4. package/dist/sanity-ui.js.map +1 -0
  5. package/dist/types/src/index.d.ts +15180 -0
  6. package/package.json +21 -22
  7. package/src/__workshop__/color/overview.tsx +9 -11
  8. package/src/components/autocomplete/__workshop__/async.tsx +14 -12
  9. package/src/components/autocomplete/__workshop__/constrainedHeight.tsx +36 -0
  10. package/src/components/autocomplete/autocomplete.tsx +2 -2
  11. package/src/components/breadcrumbs/breadcrumbs.tsx +3 -2
  12. package/src/components/dialog/dialog.tsx +17 -9
  13. package/src/components/dialog/styles.ts +4 -4
  14. package/src/components/hotkeys/hotkeys.tsx +3 -1
  15. package/src/components/menu/__workshop__/constrainedInBoundary.tsx +11 -14
  16. package/src/components/menu/__workshop__/groups.tsx +1 -1
  17. package/src/components/menu/menuGroup.tsx +3 -2
  18. package/src/components/menu/menuItem.tsx +3 -3
  19. package/src/components/skeleton/skeleton.tsx +10 -1
  20. package/src/components/skeleton/textSkeleton.tsx +7 -7
  21. package/src/hooks/index.ts +2 -1
  22. package/src/hooks/useArrayProp.ts +24 -0
  23. package/src/hooks/useElementRect/useElementRect.ts +5 -15
  24. package/src/hooks/useElementSize.ts +18 -0
  25. package/src/index.ts +1 -0
  26. package/src/observers/elementSizeObserver.ts +116 -0
  27. package/src/observers/index.ts +2 -0
  28. package/src/{utils → observers}/resizeObserver.ts +1 -3
  29. package/src/primitives/_selectable/selectable.tsx +5 -4
  30. package/src/primitives/avatar/avatar.tsx +7 -5
  31. package/src/primitives/avatar/avatarCounter.tsx +12 -11
  32. package/src/primitives/avatar/avatarStack.tsx +15 -10
  33. package/src/primitives/avatar/styles.ts +2 -2
  34. package/src/primitives/badge/badge.tsx +3 -2
  35. package/src/primitives/box/box.tsx +26 -25
  36. package/src/primitives/button/button.tsx +22 -10
  37. package/src/primitives/card/card.tsx +8 -7
  38. package/src/primitives/checkbox/__workshop__/example.tsx +4 -2
  39. package/src/primitives/checkbox/__workshop__/props.tsx +4 -2
  40. package/src/primitives/checkbox/__workshop__/readOnly.tsx +4 -2
  41. package/src/primitives/code/__workshop__/props.tsx +1 -1
  42. package/src/primitives/code/code.tsx +2 -1
  43. package/src/primitives/container/container.tsx +10 -1
  44. package/src/primitives/container/styles.ts +2 -2
  45. package/src/primitives/container/types.ts +1 -1
  46. package/src/primitives/flex/flex.tsx +6 -5
  47. package/src/primitives/grid/__workshop__/responsive.tsx +13 -12
  48. package/src/primitives/grid/grid.tsx +9 -8
  49. package/src/primitives/heading/__workshop__/opticalAlignment.tsx +19 -7
  50. package/src/primitives/heading/heading.tsx +3 -2
  51. package/src/primitives/inline/inline.tsx +12 -6
  52. package/src/primitives/inline/styles.ts +2 -2
  53. package/src/primitives/inline/types.ts +1 -1
  54. package/src/primitives/kbd/kbd.tsx +2 -1
  55. package/src/primitives/label/label.tsx +4 -3
  56. package/src/primitives/popover/__workshop__/{margins.tsx → MarginsStory.tsx} +1 -1
  57. package/src/primitives/popover/__workshop__/{matchReferenceWidth.tsx → MatchReferenceWidthStory.tsx} +0 -0
  58. package/src/primitives/popover/__workshop__/{plain.tsx → PlainStory.tsx} +12 -14
  59. package/src/primitives/popover/__workshop__/{recursive.tsx → RecursiveStory.tsx} +4 -1
  60. package/src/primitives/popover/__workshop__/RightAlignedStory.tsx +60 -0
  61. package/src/primitives/popover/__workshop__/TestStory.tsx +79 -0
  62. package/src/primitives/popover/__workshop__/index.ts +10 -5
  63. package/src/primitives/popover/popover.tsx +29 -10
  64. package/src/primitives/select/select.tsx +9 -9
  65. package/src/primitives/select/styles.ts +10 -4
  66. package/src/primitives/stack/stack.tsx +2 -1
  67. package/src/primitives/stack/styles.ts +3 -3
  68. package/src/primitives/text/__workshop__/opticalAlignment.tsx +15 -5
  69. package/src/primitives/text/text.tsx +3 -2
  70. package/src/primitives/textArea/__workshop__/plain.tsx +23 -18
  71. package/src/primitives/textArea/textArea.tsx +21 -5
  72. package/src/primitives/textInput/__workshop__/clearButton.tsx +14 -8
  73. package/src/primitives/textInput/__workshop__/index.ts +2 -2
  74. package/src/primitives/textInput/__workshop__/plain.tsx +39 -32
  75. package/src/primitives/textInput/__workshop__/tones.tsx +234 -95
  76. package/src/primitives/textInput/__workshop__/typed.tsx +8 -2
  77. package/src/primitives/textInput/textInput.tsx +47 -12
  78. package/src/primitives/tooltip/__workshop__/props.tsx +7 -2
  79. package/src/primitives/tooltip/tooltip.tsx +19 -9
  80. package/src/primitives/types.ts +1 -1
  81. package/src/styles/border/borderStyle.ts +6 -6
  82. package/src/styles/border/types.ts +5 -5
  83. package/src/styles/box/boxStyle.ts +5 -5
  84. package/src/styles/box/types.ts +4 -4
  85. package/src/styles/flex/flexItemStyle.ts +5 -4
  86. package/src/styles/flex/flexStyle.ts +6 -6
  87. package/src/styles/flex/types.ts +6 -6
  88. package/src/styles/font/responsiveFont.ts +2 -4
  89. package/src/styles/font/textAlignStyle.ts +2 -2
  90. package/src/styles/font/types.ts +4 -3
  91. package/src/styles/grid/gridItemStyle.ts +7 -7
  92. package/src/styles/grid/gridStyle.ts +9 -9
  93. package/src/styles/grid/types.ts +14 -14
  94. package/src/styles/helpers.ts +9 -9
  95. package/src/styles/input/responsiveInputPaddingStyle.ts +24 -27
  96. package/src/styles/input/textInputStyle.ts +92 -80
  97. package/src/styles/margin/marginStyle.ts +8 -8
  98. package/src/styles/margin/marginsStyle.test.ts +1 -1
  99. package/src/styles/margin/types.ts +7 -7
  100. package/src/styles/padding/paddingStyle.test.ts +1 -1
  101. package/src/styles/padding/paddingStyle.ts +8 -8
  102. package/src/styles/padding/types.ts +7 -7
  103. package/src/styles/radius/radiusStyle.ts +2 -2
  104. package/src/styles/radius/types.ts +1 -1
  105. package/src/styles/shadow/shadowStyle.ts +2 -5
  106. package/src/styles/shadow/types.ts +1 -1
  107. package/src/theme/lib/theme/color/button/types.ts +1 -1
  108. package/src/theme/lib/theme/shadow.ts +1 -1
  109. package/src/theme/studioTheme/color.ts +15 -14
  110. package/src/theme/studioTheme/fonts.ts +4 -4
  111. package/src/theme/types.ts +1 -1
  112. package/src/utils/elementQuery/elementQuery.tsx +5 -18
  113. package/src/utils/index.ts +0 -1
  114. package/src/utils/layer/layerProvider.tsx +2 -2
  115. package/src/utils/virtualList/virtualList.tsx +3 -1
  116. package/lib/dts/src/components/autocomplete/autocomplete.d.ts +0 -56
  117. package/lib/dts/src/components/autocomplete/autocomplete.d.ts.map +0 -1
  118. package/lib/dts/src/components/autocomplete/autocomplete.styles.d.ts +0 -18
  119. package/lib/dts/src/components/autocomplete/autocomplete.styles.d.ts.map +0 -1
  120. package/lib/dts/src/components/autocomplete/autocompleteOption.d.ts +0 -10
  121. package/lib/dts/src/components/autocomplete/autocompleteOption.d.ts.map +0 -1
  122. package/lib/dts/src/components/autocomplete/autocompleteReducer.d.ts +0 -6
  123. package/lib/dts/src/components/autocomplete/autocompleteReducer.d.ts.map +0 -1
  124. package/lib/dts/src/components/autocomplete/constants.d.ts +0 -18
  125. package/lib/dts/src/components/autocomplete/constants.d.ts.map +0 -1
  126. package/lib/dts/src/components/autocomplete/index.d.ts +0 -3
  127. package/lib/dts/src/components/autocomplete/index.d.ts.map +0 -1
  128. package/lib/dts/src/components/autocomplete/types.d.ts +0 -87
  129. package/lib/dts/src/components/autocomplete/types.d.ts.map +0 -1
  130. package/lib/dts/src/components/breadcrumbs/breadcrumbs.d.ts +0 -14
  131. package/lib/dts/src/components/breadcrumbs/breadcrumbs.d.ts.map +0 -1
  132. package/lib/dts/src/components/breadcrumbs/breadcrumbs.styles.d.ts +0 -4
  133. package/lib/dts/src/components/breadcrumbs/breadcrumbs.styles.d.ts.map +0 -1
  134. package/lib/dts/src/components/breadcrumbs/index.d.ts +0 -2
  135. package/lib/dts/src/components/breadcrumbs/index.d.ts.map +0 -1
  136. package/lib/dts/src/components/dialog/dialog.d.ts +0 -34
  137. package/lib/dts/src/components/dialog/dialog.d.ts.map +0 -1
  138. package/lib/dts/src/components/dialog/dialogContext.d.ts +0 -16
  139. package/lib/dts/src/components/dialog/dialogContext.d.ts.map +0 -1
  140. package/lib/dts/src/components/dialog/dialogProvider.d.ts +0 -17
  141. package/lib/dts/src/components/dialog/dialogProvider.d.ts.map +0 -1
  142. package/lib/dts/src/components/dialog/index.d.ts +0 -5
  143. package/lib/dts/src/components/dialog/index.d.ts.map +0 -1
  144. package/lib/dts/src/components/dialog/styles.d.ts +0 -12
  145. package/lib/dts/src/components/dialog/styles.d.ts.map +0 -1
  146. package/lib/dts/src/components/dialog/useDialog.d.ts +0 -7
  147. package/lib/dts/src/components/dialog/useDialog.d.ts.map +0 -1
  148. package/lib/dts/src/components/hotkeys/hotkeys.d.ts +0 -16
  149. package/lib/dts/src/components/hotkeys/hotkeys.d.ts.map +0 -1
  150. package/lib/dts/src/components/hotkeys/index.d.ts +0 -2
  151. package/lib/dts/src/components/hotkeys/index.d.ts.map +0 -1
  152. package/lib/dts/src/components/index.d.ts +0 -10
  153. package/lib/dts/src/components/index.d.ts.map +0 -1
  154. package/lib/dts/src/components/menu/helpers.d.ts +0 -13
  155. package/lib/dts/src/components/menu/helpers.d.ts.map +0 -1
  156. package/lib/dts/src/components/menu/index.d.ts +0 -6
  157. package/lib/dts/src/components/menu/index.d.ts.map +0 -1
  158. package/lib/dts/src/components/menu/menu.d.ts +0 -28
  159. package/lib/dts/src/components/menu/menu.d.ts.map +0 -1
  160. package/lib/dts/src/components/menu/menuButton.d.ts +0 -48
  161. package/lib/dts/src/components/menu/menuButton.d.ts.map +0 -1
  162. package/lib/dts/src/components/menu/menuContext.d.ts +0 -23
  163. package/lib/dts/src/components/menu/menuContext.d.ts.map +0 -1
  164. package/lib/dts/src/components/menu/menuDivider.d.ts +0 -7
  165. package/lib/dts/src/components/menu/menuDivider.d.ts.map +0 -1
  166. package/lib/dts/src/components/menu/menuGroup.d.ts +0 -22
  167. package/lib/dts/src/components/menu/menuGroup.d.ts.map +0 -1
  168. package/lib/dts/src/components/menu/menuItem.d.ts +0 -23
  169. package/lib/dts/src/components/menu/menuItem.d.ts.map +0 -1
  170. package/lib/dts/src/components/menu/useMenu.d.ts +0 -3
  171. package/lib/dts/src/components/menu/useMenu.d.ts.map +0 -1
  172. package/lib/dts/src/components/menu/useMenuController.d.ts +0 -25
  173. package/lib/dts/src/components/menu/useMenuController.d.ts.map +0 -1
  174. package/lib/dts/src/components/skeleton/index.d.ts +0 -3
  175. package/lib/dts/src/components/skeleton/index.d.ts.map +0 -1
  176. package/lib/dts/src/components/skeleton/skeleton.d.ts +0 -16
  177. package/lib/dts/src/components/skeleton/skeleton.d.ts.map +0 -1
  178. package/lib/dts/src/components/skeleton/styles.d.ts +0 -9
  179. package/lib/dts/src/components/skeleton/styles.d.ts.map +0 -1
  180. package/lib/dts/src/components/skeleton/textSkeleton.d.ts +0 -51
  181. package/lib/dts/src/components/skeleton/textSkeleton.d.ts.map +0 -1
  182. package/lib/dts/src/components/tab/index.d.ts +0 -4
  183. package/lib/dts/src/components/tab/index.d.ts.map +0 -1
  184. package/lib/dts/src/components/tab/tab.d.ts +0 -24
  185. package/lib/dts/src/components/tab/tab.d.ts.map +0 -1
  186. package/lib/dts/src/components/tab/tabList.d.ts +0 -13
  187. package/lib/dts/src/components/tab/tabList.d.ts.map +0 -1
  188. package/lib/dts/src/components/tab/tabPanel.d.ts +0 -17
  189. package/lib/dts/src/components/tab/tabPanel.d.ts.map +0 -1
  190. package/lib/dts/src/components/toast/index.d.ts +0 -5
  191. package/lib/dts/src/components/toast/index.d.ts.map +0 -1
  192. package/lib/dts/src/components/toast/toast.d.ts +0 -16
  193. package/lib/dts/src/components/toast/toast.d.ts.map +0 -1
  194. package/lib/dts/src/components/toast/toastContext.d.ts +0 -4
  195. package/lib/dts/src/components/toast/toastContext.d.ts.map +0 -1
  196. package/lib/dts/src/components/toast/toastProvider.d.ts +0 -16
  197. package/lib/dts/src/components/toast/toastProvider.d.ts.map +0 -1
  198. package/lib/dts/src/components/toast/types.d.ts +0 -21
  199. package/lib/dts/src/components/toast/types.d.ts.map +0 -1
  200. package/lib/dts/src/components/toast/useToast.d.ts +0 -6
  201. package/lib/dts/src/components/toast/useToast.d.ts.map +0 -1
  202. package/lib/dts/src/components/tree/helpers.d.ts +0 -5
  203. package/lib/dts/src/components/tree/helpers.d.ts.map +0 -1
  204. package/lib/dts/src/components/tree/index.d.ts +0 -5
  205. package/lib/dts/src/components/tree/index.d.ts.map +0 -1
  206. package/lib/dts/src/components/tree/style.d.ts +0 -9
  207. package/lib/dts/src/components/tree/style.d.ts.map +0 -1
  208. package/lib/dts/src/components/tree/tree.d.ts +0 -14
  209. package/lib/dts/src/components/tree/tree.d.ts.map +0 -1
  210. package/lib/dts/src/components/tree/treeContext.d.ts +0 -7
  211. package/lib/dts/src/components/tree/treeContext.d.ts.map +0 -1
  212. package/lib/dts/src/components/tree/treeGroup.d.ts +0 -6
  213. package/lib/dts/src/components/tree/treeGroup.d.ts.map +0 -1
  214. package/lib/dts/src/components/tree/treeItem.d.ts +0 -20
  215. package/lib/dts/src/components/tree/treeItem.d.ts.map +0 -1
  216. package/lib/dts/src/components/tree/types.d.ts +0 -24
  217. package/lib/dts/src/components/tree/types.d.ts.map +0 -1
  218. package/lib/dts/src/components/tree/useTree.d.ts +0 -6
  219. package/lib/dts/src/components/tree/useTree.d.ts.map +0 -1
  220. package/lib/dts/src/constants.d.ts +0 -3
  221. package/lib/dts/src/constants.d.ts.map +0 -1
  222. package/lib/dts/src/helpers/animation.d.ts +0 -9
  223. package/lib/dts/src/helpers/animation.d.ts.map +0 -1
  224. package/lib/dts/src/helpers/element.d.ts +0 -29
  225. package/lib/dts/src/helpers/element.d.ts.map +0 -1
  226. package/lib/dts/src/helpers/focus.d.ts +0 -21
  227. package/lib/dts/src/helpers/focus.d.ts.map +0 -1
  228. package/lib/dts/src/helpers/index.d.ts +0 -5
  229. package/lib/dts/src/helpers/index.d.ts.map +0 -1
  230. package/lib/dts/src/helpers/scroll.d.ts +0 -5
  231. package/lib/dts/src/helpers/scroll.d.ts.map +0 -1
  232. package/lib/dts/src/hooks/_internal/index.d.ts +0 -2
  233. package/lib/dts/src/hooks/_internal/index.d.ts.map +0 -1
  234. package/lib/dts/src/hooks/_internal/useUnique.d.ts +0 -10
  235. package/lib/dts/src/hooks/_internal/useUnique.d.ts.map +0 -1
  236. package/lib/dts/src/hooks/index.d.ts +0 -9
  237. package/lib/dts/src/hooks/index.d.ts.map +0 -1
  238. package/lib/dts/src/hooks/useClickOutside.d.ts +0 -9
  239. package/lib/dts/src/hooks/useClickOutside.d.ts.map +0 -1
  240. package/lib/dts/src/hooks/useCustomValidity.d.ts +0 -9
  241. package/lib/dts/src/hooks/useCustomValidity.d.ts.map +0 -1
  242. package/lib/dts/src/hooks/useElementRect/index.d.ts +0 -2
  243. package/lib/dts/src/hooks/useElementRect/index.d.ts.map +0 -1
  244. package/lib/dts/src/hooks/useElementRect/useElementRect.d.ts +0 -6
  245. package/lib/dts/src/hooks/useElementRect/useElementRect.d.ts.map +0 -1
  246. package/lib/dts/src/hooks/useForwardedRef.d.ts +0 -6
  247. package/lib/dts/src/hooks/useForwardedRef.d.ts.map +0 -1
  248. package/lib/dts/src/hooks/useGlobalKeyDown.d.ts +0 -5
  249. package/lib/dts/src/hooks/useGlobalKeyDown.d.ts.map +0 -1
  250. package/lib/dts/src/hooks/useIsomorphicEffect.d.ts +0 -6
  251. package/lib/dts/src/hooks/useIsomorphicEffect.d.ts.map +0 -1
  252. package/lib/dts/src/hooks/useMediaIndex/index.d.ts +0 -2
  253. package/lib/dts/src/hooks/useMediaIndex/index.d.ts.map +0 -1
  254. package/lib/dts/src/hooks/useMediaIndex/lib/media.d.ts +0 -12
  255. package/lib/dts/src/hooks/useMediaIndex/lib/media.d.ts.map +0 -1
  256. package/lib/dts/src/hooks/useMediaIndex/useMediaIndex.d.ts +0 -6
  257. package/lib/dts/src/hooks/useMediaIndex/useMediaIndex.d.ts.map +0 -1
  258. package/lib/dts/src/hooks/usePrefersDark.d.ts +0 -5
  259. package/lib/dts/src/hooks/usePrefersDark.d.ts.map +0 -1
  260. package/lib/dts/src/hooks/useResponsiveProp.d.ts +0 -6
  261. package/lib/dts/src/hooks/useResponsiveProp.d.ts.map +0 -1
  262. package/lib/dts/src/index.d.ts +0 -9
  263. package/lib/dts/src/index.d.ts.map +0 -1
  264. package/lib/dts/src/lib/globalScope.d.ts +0 -2
  265. package/lib/dts/src/lib/globalScope.d.ts.map +0 -1
  266. package/lib/dts/src/lib/isRecord.d.ts +0 -2
  267. package/lib/dts/src/lib/isRecord.d.ts.map +0 -1
  268. package/lib/dts/src/primitives/_selectable/index.d.ts +0 -2
  269. package/lib/dts/src/primitives/_selectable/index.d.ts.map +0 -1
  270. package/lib/dts/src/primitives/_selectable/selectable.d.ts +0 -9
  271. package/lib/dts/src/primitives/_selectable/selectable.d.ts.map +0 -1
  272. package/lib/dts/src/primitives/_selectable/style.d.ts +0 -12
  273. package/lib/dts/src/primitives/_selectable/style.d.ts.map +0 -1
  274. package/lib/dts/src/primitives/avatar/avatar.d.ts +0 -27
  275. package/lib/dts/src/primitives/avatar/avatar.d.ts.map +0 -1
  276. package/lib/dts/src/primitives/avatar/avatarCounter.d.ts +0 -16
  277. package/lib/dts/src/primitives/avatar/avatarCounter.d.ts.map +0 -1
  278. package/lib/dts/src/primitives/avatar/avatarStack.d.ts +0 -17
  279. package/lib/dts/src/primitives/avatar/avatarStack.d.ts.map +0 -1
  280. package/lib/dts/src/primitives/avatar/index.d.ts +0 -5
  281. package/lib/dts/src/primitives/avatar/index.d.ts.map +0 -1
  282. package/lib/dts/src/primitives/avatar/styles.d.ts +0 -18
  283. package/lib/dts/src/primitives/avatar/styles.d.ts.map +0 -1
  284. package/lib/dts/src/primitives/avatar/types.d.ts +0 -14
  285. package/lib/dts/src/primitives/avatar/types.d.ts.map +0 -1
  286. package/lib/dts/src/primitives/badge/badge.d.ts +0 -18
  287. package/lib/dts/src/primitives/badge/badge.d.ts.map +0 -1
  288. package/lib/dts/src/primitives/badge/index.d.ts +0 -2
  289. package/lib/dts/src/primitives/badge/index.d.ts.map +0 -1
  290. package/lib/dts/src/primitives/badge/styles.d.ts +0 -5
  291. package/lib/dts/src/primitives/badge/styles.d.ts.map +0 -1
  292. package/lib/dts/src/primitives/badge/types.d.ts +0 -9
  293. package/lib/dts/src/primitives/badge/types.d.ts.map +0 -1
  294. package/lib/dts/src/primitives/box/box.d.ts +0 -13
  295. package/lib/dts/src/primitives/box/box.d.ts.map +0 -1
  296. package/lib/dts/src/primitives/box/index.d.ts +0 -2
  297. package/lib/dts/src/primitives/box/index.d.ts.map +0 -1
  298. package/lib/dts/src/primitives/button/button.d.ts +0 -29
  299. package/lib/dts/src/primitives/button/button.d.ts.map +0 -1
  300. package/lib/dts/src/primitives/button/index.d.ts +0 -2
  301. package/lib/dts/src/primitives/button/index.d.ts.map +0 -1
  302. package/lib/dts/src/primitives/button/styles.d.ts +0 -15
  303. package/lib/dts/src/primitives/button/styles.d.ts.map +0 -1
  304. package/lib/dts/src/primitives/card/card.d.ts +0 -28
  305. package/lib/dts/src/primitives/card/card.d.ts.map +0 -1
  306. package/lib/dts/src/primitives/card/index.d.ts +0 -3
  307. package/lib/dts/src/primitives/card/index.d.ts.map +0 -1
  308. package/lib/dts/src/primitives/card/styles.d.ts +0 -7
  309. package/lib/dts/src/primitives/card/styles.d.ts.map +0 -1
  310. package/lib/dts/src/primitives/card/types.d.ts +0 -10
  311. package/lib/dts/src/primitives/card/types.d.ts.map +0 -1
  312. package/lib/dts/src/primitives/checkbox/checkbox.d.ts +0 -13
  313. package/lib/dts/src/primitives/checkbox/checkbox.d.ts.map +0 -1
  314. package/lib/dts/src/primitives/checkbox/index.d.ts +0 -2
  315. package/lib/dts/src/primitives/checkbox/index.d.ts.map +0 -1
  316. package/lib/dts/src/primitives/checkbox/styles.d.ts +0 -5
  317. package/lib/dts/src/primitives/checkbox/styles.d.ts.map +0 -1
  318. package/lib/dts/src/primitives/code/code.d.ts +0 -15
  319. package/lib/dts/src/primitives/code/code.d.ts.map +0 -1
  320. package/lib/dts/src/primitives/code/index.d.ts +0 -2
  321. package/lib/dts/src/primitives/code/index.d.ts.map +0 -1
  322. package/lib/dts/src/primitives/code/styles.d.ts +0 -4
  323. package/lib/dts/src/primitives/code/styles.d.ts.map +0 -1
  324. package/lib/dts/src/primitives/container/container.d.ts +0 -13
  325. package/lib/dts/src/primitives/container/container.d.ts.map +0 -1
  326. package/lib/dts/src/primitives/container/index.d.ts +0 -3
  327. package/lib/dts/src/primitives/container/index.d.ts.map +0 -1
  328. package/lib/dts/src/primitives/container/styles.d.ts +0 -6
  329. package/lib/dts/src/primitives/container/styles.d.ts.map +0 -1
  330. package/lib/dts/src/primitives/container/types.d.ts +0 -7
  331. package/lib/dts/src/primitives/container/types.d.ts.map +0 -1
  332. package/lib/dts/src/primitives/flex/flex.d.ts +0 -14
  333. package/lib/dts/src/primitives/flex/flex.d.ts.map +0 -1
  334. package/lib/dts/src/primitives/flex/index.d.ts +0 -2
  335. package/lib/dts/src/primitives/flex/index.d.ts.map +0 -1
  336. package/lib/dts/src/primitives/grid/grid.d.ts +0 -13
  337. package/lib/dts/src/primitives/grid/grid.d.ts.map +0 -1
  338. package/lib/dts/src/primitives/grid/index.d.ts +0 -2
  339. package/lib/dts/src/primitives/grid/index.d.ts.map +0 -1
  340. package/lib/dts/src/primitives/heading/heading.d.ts +0 -25
  341. package/lib/dts/src/primitives/heading/heading.d.ts.map +0 -1
  342. package/lib/dts/src/primitives/heading/index.d.ts +0 -2
  343. package/lib/dts/src/primitives/heading/index.d.ts.map +0 -1
  344. package/lib/dts/src/primitives/heading/styles.d.ts +0 -5
  345. package/lib/dts/src/primitives/heading/styles.d.ts.map +0 -1
  346. package/lib/dts/src/primitives/heading/types.d.ts +0 -8
  347. package/lib/dts/src/primitives/heading/types.d.ts.map +0 -1
  348. package/lib/dts/src/primitives/helpers.d.ts +0 -3
  349. package/lib/dts/src/primitives/helpers.d.ts.map +0 -1
  350. package/lib/dts/src/primitives/index.d.ts +0 -26
  351. package/lib/dts/src/primitives/index.d.ts.map +0 -1
  352. package/lib/dts/src/primitives/inline/index.d.ts +0 -2
  353. package/lib/dts/src/primitives/inline/index.d.ts.map +0 -1
  354. package/lib/dts/src/primitives/inline/inline.d.ts +0 -13
  355. package/lib/dts/src/primitives/inline/inline.d.ts.map +0 -1
  356. package/lib/dts/src/primitives/inline/styles.d.ts +0 -6
  357. package/lib/dts/src/primitives/inline/styles.d.ts.map +0 -1
  358. package/lib/dts/src/primitives/inline/types.d.ts +0 -7
  359. package/lib/dts/src/primitives/inline/types.d.ts.map +0 -1
  360. package/lib/dts/src/primitives/kbd/index.d.ts +0 -2
  361. package/lib/dts/src/primitives/kbd/index.d.ts.map +0 -1
  362. package/lib/dts/src/primitives/kbd/kbd.d.ts +0 -15
  363. package/lib/dts/src/primitives/kbd/kbd.d.ts.map +0 -1
  364. package/lib/dts/src/primitives/label/index.d.ts +0 -2
  365. package/lib/dts/src/primitives/label/index.d.ts.map +0 -1
  366. package/lib/dts/src/primitives/label/label.d.ts +0 -25
  367. package/lib/dts/src/primitives/label/label.d.ts.map +0 -1
  368. package/lib/dts/src/primitives/label/styles.d.ts +0 -7
  369. package/lib/dts/src/primitives/label/styles.d.ts.map +0 -1
  370. package/lib/dts/src/primitives/popover/arrow.d.ts +0 -3
  371. package/lib/dts/src/primitives/popover/arrow.d.ts.map +0 -1
  372. package/lib/dts/src/primitives/popover/index.d.ts +0 -2
  373. package/lib/dts/src/primitives/popover/index.d.ts.map +0 -1
  374. package/lib/dts/src/primitives/popover/modifiers/getPopoverModifiers.d.ts +0 -4
  375. package/lib/dts/src/primitives/popover/modifiers/getPopoverModifiers.d.ts.map +0 -1
  376. package/lib/dts/src/primitives/popover/modifiers/index.d.ts +0 -2
  377. package/lib/dts/src/primitives/popover/modifiers/index.d.ts.map +0 -1
  378. package/lib/dts/src/primitives/popover/modifiers/types.d.ts +0 -18
  379. package/lib/dts/src/primitives/popover/modifiers/types.d.ts.map +0 -1
  380. package/lib/dts/src/primitives/popover/modifiers/usePopoverModifiers.d.ts +0 -4
  381. package/lib/dts/src/primitives/popover/modifiers/usePopoverModifiers.d.ts.map +0 -1
  382. package/lib/dts/src/primitives/popover/popover.d.ts +0 -38
  383. package/lib/dts/src/primitives/popover/popover.d.ts.map +0 -1
  384. package/lib/dts/src/primitives/radio/index.d.ts +0 -2
  385. package/lib/dts/src/primitives/radio/index.d.ts.map +0 -1
  386. package/lib/dts/src/primitives/radio/radio.d.ts +0 -12
  387. package/lib/dts/src/primitives/radio/radio.d.ts.map +0 -1
  388. package/lib/dts/src/primitives/radio/styles.d.ts +0 -5
  389. package/lib/dts/src/primitives/radio/styles.d.ts.map +0 -1
  390. package/lib/dts/src/primitives/select/index.d.ts +0 -2
  391. package/lib/dts/src/primitives/select/index.d.ts.map +0 -1
  392. package/lib/dts/src/primitives/select/select.d.ts +0 -16
  393. package/lib/dts/src/primitives/select/select.d.ts.map +0 -1
  394. package/lib/dts/src/primitives/select/styles.d.ts +0 -13
  395. package/lib/dts/src/primitives/select/styles.d.ts.map +0 -1
  396. package/lib/dts/src/primitives/spinner/index.d.ts +0 -2
  397. package/lib/dts/src/primitives/spinner/index.d.ts.map +0 -1
  398. package/lib/dts/src/primitives/spinner/spinner.d.ts +0 -13
  399. package/lib/dts/src/primitives/spinner/spinner.d.ts.map +0 -1
  400. package/lib/dts/src/primitives/stack/index.d.ts +0 -2
  401. package/lib/dts/src/primitives/stack/index.d.ts.map +0 -1
  402. package/lib/dts/src/primitives/stack/stack.d.ts +0 -14
  403. package/lib/dts/src/primitives/stack/stack.d.ts.map +0 -1
  404. package/lib/dts/src/primitives/stack/styles.d.ts +0 -8
  405. package/lib/dts/src/primitives/stack/styles.d.ts.map +0 -1
  406. package/lib/dts/src/primitives/switch/index.d.ts +0 -2
  407. package/lib/dts/src/primitives/switch/index.d.ts.map +0 -1
  408. package/lib/dts/src/primitives/switch/styles.d.ts +0 -11
  409. package/lib/dts/src/primitives/switch/styles.d.ts.map +0 -1
  410. package/lib/dts/src/primitives/switch/switch.d.ts +0 -12
  411. package/lib/dts/src/primitives/switch/switch.d.ts.map +0 -1
  412. package/lib/dts/src/primitives/text/index.d.ts +0 -2
  413. package/lib/dts/src/primitives/text/index.d.ts.map +0 -1
  414. package/lib/dts/src/primitives/text/styles.d.ts +0 -7
  415. package/lib/dts/src/primitives/text/styles.d.ts.map +0 -1
  416. package/lib/dts/src/primitives/text/text.d.ts +0 -25
  417. package/lib/dts/src/primitives/text/text.d.ts.map +0 -1
  418. package/lib/dts/src/primitives/textArea/index.d.ts +0 -2
  419. package/lib/dts/src/primitives/textArea/index.d.ts.map +0 -1
  420. package/lib/dts/src/primitives/textArea/textArea.d.ts +0 -18
  421. package/lib/dts/src/primitives/textArea/textArea.d.ts.map +0 -1
  422. package/lib/dts/src/primitives/textInput/index.d.ts +0 -2
  423. package/lib/dts/src/primitives/textInput/index.d.ts.map +0 -1
  424. package/lib/dts/src/primitives/textInput/textInput.d.ts +0 -41
  425. package/lib/dts/src/primitives/textInput/textInput.d.ts.map +0 -1
  426. package/lib/dts/src/primitives/tooltip/index.d.ts +0 -2
  427. package/lib/dts/src/primitives/tooltip/index.d.ts.map +0 -1
  428. package/lib/dts/src/primitives/tooltip/tooltip.d.ts +0 -23
  429. package/lib/dts/src/primitives/tooltip/tooltip.d.ts.map +0 -1
  430. package/lib/dts/src/primitives/tooltip/tooltipArrow.d.ts +0 -6
  431. package/lib/dts/src/primitives/tooltip/tooltipArrow.d.ts.map +0 -1
  432. package/lib/dts/src/primitives/types.d.ts +0 -102
  433. package/lib/dts/src/primitives/types.d.ts.map +0 -1
  434. package/lib/dts/src/styles/border/borderStyle.d.ts +0 -5
  435. package/lib/dts/src/styles/border/borderStyle.d.ts.map +0 -1
  436. package/lib/dts/src/styles/border/index.d.ts +0 -3
  437. package/lib/dts/src/styles/border/index.d.ts.map +0 -1
  438. package/lib/dts/src/styles/border/types.d.ts +0 -11
  439. package/lib/dts/src/styles/border/types.d.ts.map +0 -1
  440. package/lib/dts/src/styles/box/boxStyle.d.ts +0 -6
  441. package/lib/dts/src/styles/box/boxStyle.d.ts.map +0 -1
  442. package/lib/dts/src/styles/box/index.d.ts +0 -3
  443. package/lib/dts/src/styles/box/index.d.ts.map +0 -1
  444. package/lib/dts/src/styles/box/types.d.ts +0 -11
  445. package/lib/dts/src/styles/box/types.d.ts.map +0 -1
  446. package/lib/dts/src/styles/colorVars/colorVarsStyle.d.ts +0 -7
  447. package/lib/dts/src/styles/colorVars/colorVarsStyle.d.ts.map +0 -1
  448. package/lib/dts/src/styles/colorVars/index.d.ts +0 -2
  449. package/lib/dts/src/styles/colorVars/index.d.ts.map +0 -1
  450. package/lib/dts/src/styles/flex/flexItemStyle.d.ts +0 -6
  451. package/lib/dts/src/styles/flex/flexItemStyle.d.ts.map +0 -1
  452. package/lib/dts/src/styles/flex/flexStyle.d.ts +0 -9
  453. package/lib/dts/src/styles/flex/flexStyle.d.ts.map +0 -1
  454. package/lib/dts/src/styles/flex/index.d.ts +0 -4
  455. package/lib/dts/src/styles/flex/index.d.ts.map +0 -1
  456. package/lib/dts/src/styles/flex/types.d.ts +0 -23
  457. package/lib/dts/src/styles/flex/types.d.ts.map +0 -1
  458. package/lib/dts/src/styles/focusRing/index.d.ts +0 -18
  459. package/lib/dts/src/styles/focusRing/index.d.ts.map +0 -1
  460. package/lib/dts/src/styles/font/codeFontStyle.d.ts +0 -9
  461. package/lib/dts/src/styles/font/codeFontStyle.d.ts.map +0 -1
  462. package/lib/dts/src/styles/font/headingFontStyle.d.ts +0 -9
  463. package/lib/dts/src/styles/font/headingFontStyle.d.ts.map +0 -1
  464. package/lib/dts/src/styles/font/index.d.ts +0 -7
  465. package/lib/dts/src/styles/font/index.d.ts.map +0 -1
  466. package/lib/dts/src/styles/font/labelFontStyle.d.ts +0 -9
  467. package/lib/dts/src/styles/font/labelFontStyle.d.ts.map +0 -1
  468. package/lib/dts/src/styles/font/responsiveFont.d.ts +0 -11
  469. package/lib/dts/src/styles/font/responsiveFont.d.ts.map +0 -1
  470. package/lib/dts/src/styles/font/textAlignStyle.d.ts +0 -9
  471. package/lib/dts/src/styles/font/textAlignStyle.d.ts.map +0 -1
  472. package/lib/dts/src/styles/font/textFontStyle.d.ts +0 -9
  473. package/lib/dts/src/styles/font/textFontStyle.d.ts.map +0 -1
  474. package/lib/dts/src/styles/font/types.d.ts +0 -28
  475. package/lib/dts/src/styles/font/types.d.ts.map +0 -1
  476. package/lib/dts/src/styles/grid/gridItemStyle.d.ts +0 -5
  477. package/lib/dts/src/styles/grid/gridItemStyle.d.ts.map +0 -1
  478. package/lib/dts/src/styles/grid/gridStyle.d.ts +0 -5
  479. package/lib/dts/src/styles/grid/gridStyle.d.ts.map +0 -1
  480. package/lib/dts/src/styles/grid/index.d.ts +0 -4
  481. package/lib/dts/src/styles/grid/index.d.ts.map +0 -1
  482. package/lib/dts/src/styles/grid/types.d.ts +0 -26
  483. package/lib/dts/src/styles/grid/types.d.ts.map +0 -1
  484. package/lib/dts/src/styles/helpers.d.ts +0 -23
  485. package/lib/dts/src/styles/helpers.d.ts.map +0 -1
  486. package/lib/dts/src/styles/index.d.ts +0 -4
  487. package/lib/dts/src/styles/index.d.ts.map +0 -1
  488. package/lib/dts/src/styles/input/index.d.ts +0 -3
  489. package/lib/dts/src/styles/input/index.d.ts.map +0 -1
  490. package/lib/dts/src/styles/input/responsiveInputPaddingStyle.d.ts +0 -26
  491. package/lib/dts/src/styles/input/responsiveInputPaddingStyle.d.ts.map +0 -1
  492. package/lib/dts/src/styles/input/textInputStyle.d.ts +0 -23
  493. package/lib/dts/src/styles/input/textInputStyle.d.ts.map +0 -1
  494. package/lib/dts/src/styles/internal.d.ts +0 -12
  495. package/lib/dts/src/styles/internal.d.ts.map +0 -1
  496. package/lib/dts/src/styles/margin/index.d.ts +0 -3
  497. package/lib/dts/src/styles/margin/index.d.ts.map +0 -1
  498. package/lib/dts/src/styles/margin/marginStyle.d.ts +0 -5
  499. package/lib/dts/src/styles/margin/marginStyle.d.ts.map +0 -1
  500. package/lib/dts/src/styles/margin/types.d.ts +0 -10
  501. package/lib/dts/src/styles/margin/types.d.ts.map +0 -1
  502. package/lib/dts/src/styles/padding/index.d.ts +0 -3
  503. package/lib/dts/src/styles/padding/index.d.ts.map +0 -1
  504. package/lib/dts/src/styles/padding/paddingStyle.d.ts +0 -5
  505. package/lib/dts/src/styles/padding/paddingStyle.d.ts.map +0 -1
  506. package/lib/dts/src/styles/padding/types.d.ts +0 -13
  507. package/lib/dts/src/styles/padding/types.d.ts.map +0 -1
  508. package/lib/dts/src/styles/radius/index.d.ts +0 -3
  509. package/lib/dts/src/styles/radius/index.d.ts.map +0 -1
  510. package/lib/dts/src/styles/radius/radiusStyle.d.ts +0 -5
  511. package/lib/dts/src/styles/radius/radiusStyle.d.ts.map +0 -1
  512. package/lib/dts/src/styles/radius/types.d.ts +0 -7
  513. package/lib/dts/src/styles/radius/types.d.ts.map +0 -1
  514. package/lib/dts/src/styles/shadow/index.d.ts +0 -3
  515. package/lib/dts/src/styles/shadow/index.d.ts.map +0 -1
  516. package/lib/dts/src/styles/shadow/shadowStyle.d.ts +0 -5
  517. package/lib/dts/src/styles/shadow/shadowStyle.d.ts.map +0 -1
  518. package/lib/dts/src/styles/shadow/types.d.ts +0 -7
  519. package/lib/dts/src/styles/shadow/types.d.ts.map +0 -1
  520. package/lib/dts/src/styles/types.d.ts +0 -8
  521. package/lib/dts/src/styles/types.d.ts.map +0 -1
  522. package/lib/dts/src/theme/defaults.d.ts +0 -3
  523. package/lib/dts/src/theme/defaults.d.ts.map +0 -1
  524. package/lib/dts/src/theme/index.d.ts +0 -9
  525. package/lib/dts/src/theme/index.d.ts.map +0 -1
  526. package/lib/dts/src/theme/lib/color-fns/blend/index.d.ts +0 -3
  527. package/lib/dts/src/theme/lib/color-fns/blend/index.d.ts.map +0 -1
  528. package/lib/dts/src/theme/lib/color-fns/blend/multiply.d.ts +0 -8
  529. package/lib/dts/src/theme/lib/color-fns/blend/multiply.d.ts.map +0 -1
  530. package/lib/dts/src/theme/lib/color-fns/blend/screen.d.ts +0 -8
  531. package/lib/dts/src/theme/lib/color-fns/blend/screen.d.ts.map +0 -1
  532. package/lib/dts/src/theme/lib/color-fns/convert.d.ts +0 -19
  533. package/lib/dts/src/theme/lib/color-fns/convert.d.ts.map +0 -1
  534. package/lib/dts/src/theme/lib/color-fns/helpers/index.d.ts +0 -2
  535. package/lib/dts/src/theme/lib/color-fns/helpers/index.d.ts.map +0 -1
  536. package/lib/dts/src/theme/lib/color-fns/helpers/rgba.d.ts +0 -5
  537. package/lib/dts/src/theme/lib/color-fns/helpers/rgba.d.ts.map +0 -1
  538. package/lib/dts/src/theme/lib/color-fns/index.d.ts +0 -6
  539. package/lib/dts/src/theme/lib/color-fns/index.d.ts.map +0 -1
  540. package/lib/dts/src/theme/lib/color-fns/parse.d.ts +0 -6
  541. package/lib/dts/src/theme/lib/color-fns/parse.d.ts.map +0 -1
  542. package/lib/dts/src/theme/lib/color-fns/types.d.ts +0 -17
  543. package/lib/dts/src/theme/lib/color-fns/types.d.ts.map +0 -1
  544. package/lib/dts/src/theme/lib/theme/avatar.d.ts +0 -10
  545. package/lib/dts/src/theme/lib/theme/avatar.d.ts.map +0 -1
  546. package/lib/dts/src/theme/lib/theme/color/_generic/index.d.ts +0 -2
  547. package/lib/dts/src/theme/lib/theme/color/_generic/index.d.ts.map +0 -1
  548. package/lib/dts/src/theme/lib/theme/color/_generic/types.d.ts +0 -30
  549. package/lib/dts/src/theme/lib/theme/color/_generic/types.d.ts.map +0 -1
  550. package/lib/dts/src/theme/lib/theme/color/base/index.d.ts +0 -2
  551. package/lib/dts/src/theme/lib/theme/color/base/index.d.ts.map +0 -1
  552. package/lib/dts/src/theme/lib/theme/color/base/types.d.ts +0 -20
  553. package/lib/dts/src/theme/lib/theme/color/base/types.d.ts.map +0 -1
  554. package/lib/dts/src/theme/lib/theme/color/button/createButtonModes.d.ts +0 -7
  555. package/lib/dts/src/theme/lib/theme/color/button/createButtonModes.d.ts.map +0 -1
  556. package/lib/dts/src/theme/lib/theme/color/button/createButtonTones.d.ts +0 -7
  557. package/lib/dts/src/theme/lib/theme/color/button/createButtonTones.d.ts.map +0 -1
  558. package/lib/dts/src/theme/lib/theme/color/button/index.d.ts +0 -2
  559. package/lib/dts/src/theme/lib/theme/color/button/index.d.ts.map +0 -1
  560. package/lib/dts/src/theme/lib/theme/color/button/types.d.ts +0 -40
  561. package/lib/dts/src/theme/lib/theme/color/button/types.d.ts.map +0 -1
  562. package/lib/dts/src/theme/lib/theme/color/card/createCardStates.d.ts +0 -8
  563. package/lib/dts/src/theme/lib/theme/color/card/createCardStates.d.ts.map +0 -1
  564. package/lib/dts/src/theme/lib/theme/color/card/index.d.ts +0 -2
  565. package/lib/dts/src/theme/lib/theme/color/card/index.d.ts.map +0 -1
  566. package/lib/dts/src/theme/lib/theme/color/card/types.d.ts +0 -17
  567. package/lib/dts/src/theme/lib/theme/color/card/types.d.ts.map +0 -1
  568. package/lib/dts/src/theme/lib/theme/color/defaults.d.ts +0 -3
  569. package/lib/dts/src/theme/lib/theme/color/defaults.d.ts.map +0 -1
  570. package/lib/dts/src/theme/lib/theme/color/factory.d.ts +0 -83
  571. package/lib/dts/src/theme/lib/theme/color/factory.d.ts.map +0 -1
  572. package/lib/dts/src/theme/lib/theme/color/index.d.ts +0 -13
  573. package/lib/dts/src/theme/lib/theme/color/index.d.ts.map +0 -1
  574. package/lib/dts/src/theme/lib/theme/color/input/createInputModes.d.ts +0 -7
  575. package/lib/dts/src/theme/lib/theme/color/input/createInputModes.d.ts.map +0 -1
  576. package/lib/dts/src/theme/lib/theme/color/input/index.d.ts +0 -2
  577. package/lib/dts/src/theme/lib/theme/color/input/index.d.ts.map +0 -1
  578. package/lib/dts/src/theme/lib/theme/color/input/types.d.ts +0 -26
  579. package/lib/dts/src/theme/lib/theme/color/input/types.d.ts.map +0 -1
  580. package/lib/dts/src/theme/lib/theme/color/muted/createMuted.d.ts +0 -6
  581. package/lib/dts/src/theme/lib/theme/color/muted/createMuted.d.ts.map +0 -1
  582. package/lib/dts/src/theme/lib/theme/color/muted/index.d.ts +0 -2
  583. package/lib/dts/src/theme/lib/theme/color/muted/index.d.ts.map +0 -1
  584. package/lib/dts/src/theme/lib/theme/color/muted/types.d.ts +0 -23
  585. package/lib/dts/src/theme/lib/theme/color/muted/types.d.ts.map +0 -1
  586. package/lib/dts/src/theme/lib/theme/color/selectable/createSelectableTones.d.ts +0 -7
  587. package/lib/dts/src/theme/lib/theme/color/selectable/createSelectableTones.d.ts.map +0 -1
  588. package/lib/dts/src/theme/lib/theme/color/selectable/index.d.ts +0 -2
  589. package/lib/dts/src/theme/lib/theme/color/selectable/index.d.ts.map +0 -1
  590. package/lib/dts/src/theme/lib/theme/color/selectable/types.d.ts +0 -27
  591. package/lib/dts/src/theme/lib/theme/color/selectable/types.d.ts.map +0 -1
  592. package/lib/dts/src/theme/lib/theme/color/solid/createSolidTones.d.ts +0 -6
  593. package/lib/dts/src/theme/lib/theme/color/solid/createSolidTones.d.ts.map +0 -1
  594. package/lib/dts/src/theme/lib/theme/color/solid/index.d.ts +0 -2
  595. package/lib/dts/src/theme/lib/theme/color/solid/index.d.ts.map +0 -1
  596. package/lib/dts/src/theme/lib/theme/color/solid/types.d.ts +0 -23
  597. package/lib/dts/src/theme/lib/theme/color/solid/types.d.ts.map +0 -1
  598. package/lib/dts/src/theme/lib/theme/color/spot/createSpot.d.ts +0 -5
  599. package/lib/dts/src/theme/lib/theme/color/spot/createSpot.d.ts.map +0 -1
  600. package/lib/dts/src/theme/lib/theme/color/spot/index.d.ts +0 -2
  601. package/lib/dts/src/theme/lib/theme/color/spot/index.d.ts.map +0 -1
  602. package/lib/dts/src/theme/lib/theme/color/spot/types.d.ts +0 -19
  603. package/lib/dts/src/theme/lib/theme/color/spot/types.d.ts.map +0 -1
  604. package/lib/dts/src/theme/lib/theme/color/syntax/index.d.ts +0 -2
  605. package/lib/dts/src/theme/lib/theme/color/syntax/index.d.ts.map +0 -1
  606. package/lib/dts/src/theme/lib/theme/color/syntax/types.d.ts +0 -42
  607. package/lib/dts/src/theme/lib/theme/color/syntax/types.d.ts.map +0 -1
  608. package/lib/dts/src/theme/lib/theme/color/types.d.ts +0 -55
  609. package/lib/dts/src/theme/lib/theme/color/types.d.ts.map +0 -1
  610. package/lib/dts/src/theme/lib/theme/fonts.d.ts +0 -48
  611. package/lib/dts/src/theme/lib/theme/fonts.d.ts.map +0 -1
  612. package/lib/dts/src/theme/lib/theme/index.d.ts +0 -8
  613. package/lib/dts/src/theme/lib/theme/index.d.ts.map +0 -1
  614. package/lib/dts/src/theme/lib/theme/input.d.ts +0 -23
  615. package/lib/dts/src/theme/lib/theme/input.d.ts.map +0 -1
  616. package/lib/dts/src/theme/lib/theme/layer.d.ts +0 -16
  617. package/lib/dts/src/theme/lib/theme/layer.d.ts.map +0 -1
  618. package/lib/dts/src/theme/lib/theme/shadow.d.ts +0 -19
  619. package/lib/dts/src/theme/lib/theme/shadow.d.ts.map +0 -1
  620. package/lib/dts/src/theme/lib/theme/theme.d.ts +0 -34
  621. package/lib/dts/src/theme/lib/theme/theme.d.ts.map +0 -1
  622. package/lib/dts/src/theme/studioTheme/color.d.ts +0 -2
  623. package/lib/dts/src/theme/studioTheme/color.d.ts.map +0 -1
  624. package/lib/dts/src/theme/studioTheme/fonts.d.ts +0 -3
  625. package/lib/dts/src/theme/studioTheme/fonts.d.ts.map +0 -1
  626. package/lib/dts/src/theme/studioTheme/helpers.d.ts +0 -3
  627. package/lib/dts/src/theme/studioTheme/helpers.d.ts.map +0 -1
  628. package/lib/dts/src/theme/studioTheme/index.d.ts +0 -2
  629. package/lib/dts/src/theme/studioTheme/index.d.ts.map +0 -1
  630. package/lib/dts/src/theme/studioTheme/theme.d.ts +0 -6
  631. package/lib/dts/src/theme/studioTheme/theme.d.ts.map +0 -1
  632. package/lib/dts/src/theme/themeColorProvider.d.ts +0 -15
  633. package/lib/dts/src/theme/themeColorProvider.d.ts.map +0 -1
  634. package/lib/dts/src/theme/themeContext.d.ts +0 -7
  635. package/lib/dts/src/theme/themeContext.d.ts.map +0 -1
  636. package/lib/dts/src/theme/themeProvider.d.ts +0 -17
  637. package/lib/dts/src/theme/themeProvider.d.ts.map +0 -1
  638. package/lib/dts/src/theme/types.d.ts +0 -36
  639. package/lib/dts/src/theme/types.d.ts.map +0 -1
  640. package/lib/dts/src/theme/useRootTheme.d.ts +0 -6
  641. package/lib/dts/src/theme/useRootTheme.d.ts.map +0 -1
  642. package/lib/dts/src/theme/useTheme.d.ts +0 -6
  643. package/lib/dts/src/theme/useTheme.d.ts.map +0 -1
  644. package/lib/dts/src/types/avatar.d.ts +0 -13
  645. package/lib/dts/src/types/avatar.d.ts.map +0 -1
  646. package/lib/dts/src/types/badge.d.ts +0 -9
  647. package/lib/dts/src/types/badge.d.ts.map +0 -1
  648. package/lib/dts/src/types/box.d.ts +0 -17
  649. package/lib/dts/src/types/box.d.ts.map +0 -1
  650. package/lib/dts/src/types/button.d.ts +0 -13
  651. package/lib/dts/src/types/button.d.ts.map +0 -1
  652. package/lib/dts/src/types/card.d.ts +0 -6
  653. package/lib/dts/src/types/card.d.ts.map +0 -1
  654. package/lib/dts/src/types/dialog.d.ts +0 -5
  655. package/lib/dts/src/types/dialog.d.ts.map +0 -1
  656. package/lib/dts/src/types/flex.d.ts +0 -21
  657. package/lib/dts/src/types/flex.d.ts.map +0 -1
  658. package/lib/dts/src/types/grid.d.ts +0 -13
  659. package/lib/dts/src/types/grid.d.ts.map +0 -1
  660. package/lib/dts/src/types/gridItem.d.ts +0 -25
  661. package/lib/dts/src/types/gridItem.d.ts.map +0 -1
  662. package/lib/dts/src/types/index.d.ts +0 -14
  663. package/lib/dts/src/types/index.d.ts.map +0 -1
  664. package/lib/dts/src/types/placement.d.ts +0 -7
  665. package/lib/dts/src/types/placement.d.ts.map +0 -1
  666. package/lib/dts/src/types/popover.d.ts +0 -5
  667. package/lib/dts/src/types/popover.d.ts.map +0 -1
  668. package/lib/dts/src/types/selectable.d.ts +0 -5
  669. package/lib/dts/src/types/selectable.d.ts.map +0 -1
  670. package/lib/dts/src/types/text.d.ts +0 -5
  671. package/lib/dts/src/types/text.d.ts.map +0 -1
  672. package/lib/dts/src/utils/boundaryElement/boundaryElementContext.d.ts +0 -4
  673. package/lib/dts/src/utils/boundaryElement/boundaryElementContext.d.ts.map +0 -1
  674. package/lib/dts/src/utils/boundaryElement/boundaryElementProvider.d.ts +0 -13
  675. package/lib/dts/src/utils/boundaryElement/boundaryElementProvider.d.ts.map +0 -1
  676. package/lib/dts/src/utils/boundaryElement/index.d.ts +0 -4
  677. package/lib/dts/src/utils/boundaryElement/index.d.ts.map +0 -1
  678. package/lib/dts/src/utils/boundaryElement/types.d.ts +0 -8
  679. package/lib/dts/src/utils/boundaryElement/types.d.ts.map +0 -1
  680. package/lib/dts/src/utils/boundaryElement/useBoundaryElement.d.ts +0 -6
  681. package/lib/dts/src/utils/boundaryElement/useBoundaryElement.d.ts.map +0 -1
  682. package/lib/dts/src/utils/elementQuery/elementQuery.d.ts +0 -15
  683. package/lib/dts/src/utils/elementQuery/elementQuery.d.ts.map +0 -1
  684. package/lib/dts/src/utils/elementQuery/helpers.d.ts +0 -3
  685. package/lib/dts/src/utils/elementQuery/helpers.d.ts.map +0 -1
  686. package/lib/dts/src/utils/elementQuery/index.d.ts +0 -2
  687. package/lib/dts/src/utils/elementQuery/index.d.ts.map +0 -1
  688. package/lib/dts/src/utils/errorBoundary.d.ts +0 -29
  689. package/lib/dts/src/utils/errorBoundary.d.ts.map +0 -1
  690. package/lib/dts/src/utils/index.d.ts +0 -9
  691. package/lib/dts/src/utils/index.d.ts.map +0 -1
  692. package/lib/dts/src/utils/layer/index.d.ts +0 -5
  693. package/lib/dts/src/utils/layer/index.d.ts.map +0 -1
  694. package/lib/dts/src/utils/layer/layer.d.ts +0 -13
  695. package/lib/dts/src/utils/layer/layer.d.ts.map +0 -1
  696. package/lib/dts/src/utils/layer/layerContext.d.ts +0 -4
  697. package/lib/dts/src/utils/layer/layerContext.d.ts.map +0 -1
  698. package/lib/dts/src/utils/layer/layerProvider.d.ts +0 -13
  699. package/lib/dts/src/utils/layer/layerProvider.d.ts.map +0 -1
  700. package/lib/dts/src/utils/layer/types.d.ts +0 -11
  701. package/lib/dts/src/utils/layer/types.d.ts.map +0 -1
  702. package/lib/dts/src/utils/layer/useLayer.d.ts +0 -6
  703. package/lib/dts/src/utils/layer/useLayer.d.ts.map +0 -1
  704. package/lib/dts/src/utils/portal/index.d.ts +0 -5
  705. package/lib/dts/src/utils/portal/index.d.ts.map +0 -1
  706. package/lib/dts/src/utils/portal/portal.d.ts +0 -16
  707. package/lib/dts/src/utils/portal/portal.d.ts.map +0 -1
  708. package/lib/dts/src/utils/portal/portalContext.d.ts +0 -5
  709. package/lib/dts/src/utils/portal/portalContext.d.ts.map +0 -1
  710. package/lib/dts/src/utils/portal/portalProvider.d.ts +0 -21
  711. package/lib/dts/src/utils/portal/portalProvider.d.ts.map +0 -1
  712. package/lib/dts/src/utils/portal/types.d.ts +0 -10
  713. package/lib/dts/src/utils/portal/types.d.ts.map +0 -1
  714. package/lib/dts/src/utils/portal/usePortal.d.ts +0 -6
  715. package/lib/dts/src/utils/portal/usePortal.d.ts.map +0 -1
  716. package/lib/dts/src/utils/resizeObserver.d.ts +0 -6
  717. package/lib/dts/src/utils/resizeObserver.d.ts.map +0 -1
  718. package/lib/dts/src/utils/srOnly/index.d.ts +0 -2
  719. package/lib/dts/src/utils/srOnly/index.d.ts.map +0 -1
  720. package/lib/dts/src/utils/srOnly/srOnly.d.ts +0 -13
  721. package/lib/dts/src/utils/srOnly/srOnly.d.ts.map +0 -1
  722. package/lib/dts/src/utils/virtualList/index.d.ts +0 -2
  723. package/lib/dts/src/utils/virtualList/index.d.ts.map +0 -1
  724. package/lib/dts/src/utils/virtualList/virtualList.d.ts +0 -29
  725. package/lib/dts/src/utils/virtualList/virtualList.d.ts.map +0 -1
  726. package/lib/sanity-ui.js +0 -9891
  727. package/lib/sanity-ui.js.map +0 -1
  728. package/lib/sanity-ui.modern.js +0 -10940
  729. package/lib/sanity-ui.modern.js.map +0 -1
  730. package/lib/sanity-ui.module.js +0 -9771
  731. package/lib/sanity-ui.module.js.map +0 -1
  732. package/src/hooks/useResponsiveProp.ts +0 -10
  733. package/src/primitives/popover/__workshop__/rightAligned.tsx +0 -57
@@ -0,0 +1 @@
1
+ {"version":3,"file":"sanity-ui.js","sources":["../src/constants.ts","../src/styles/helpers.ts","../src/styles/font/responsiveFont.ts","../src/styles/font/codeFontStyle.ts","../src/styles/font/headingFontStyle.ts","../src/styles/font/labelFontStyle.ts","../src/styles/font/textAlignStyle.ts","../src/styles/font/textFontStyle.ts","../src/hooks/useArrayProp.ts","../src/hooks/useClickOutside.ts","../src/observers/resizeObserver.ts","../src/observers/elementSizeObserver.ts","../src/hooks/useElementSize.ts","../src/hooks/useElementRect/useElementRect.ts","../src/hooks/useGlobalKeyDown.ts","../src/theme/lib/color-fns/blend/multiply.ts","../src/theme/lib/color-fns/blend/screen.ts","../src/theme/lib/color-fns/convert.ts","../src/theme/lib/color-fns/parse.ts","../src/theme/lib/color-fns/helpers/rgba.ts","../src/theme/lib/theme/color/button/createButtonTones.ts","../src/theme/lib/theme/color/button/createButtonModes.ts","../src/theme/lib/theme/color/card/createCardStates.ts","../src/theme/lib/theme/color/defaults.ts","../src/theme/lib/theme/color/input/createInputModes.ts","../src/theme/lib/theme/color/muted/createMuted.ts","../src/theme/lib/theme/color/selectable/createSelectableTones.ts","../src/theme/lib/theme/color/solid/createSolidTones.ts","../src/theme/lib/theme/color/spot/createSpot.ts","../src/theme/lib/theme/color/factory.ts","../src/theme/studioTheme/helpers.ts","../src/theme/studioTheme/color.ts","../src/theme/studioTheme/fonts.ts","../src/theme/studioTheme/theme.ts","../src/theme/defaults.ts","../src/lib/globalScope.ts","../src/theme/themeContext.ts","../src/theme/themeProvider.tsx","../src/lib/isRecord.ts","../src/theme/useRootTheme.ts","../src/theme/themeColorProvider.tsx","../src/theme/useTheme.ts","../src/hooks/useMediaIndex/lib/media.ts","../src/hooks/useMediaIndex/useMediaIndex.ts","../src/hooks/usePrefersDark.ts","../src/hooks/useIsomorphicEffect.ts","../src/hooks/useForwardedRef.ts","../src/hooks/useCustomValidity.ts","../src/styles/border/borderStyle.ts","../src/styles/box/boxStyle.ts","../src/styles/flex/flexStyle.ts","../src/styles/flex/flexItemStyle.ts","../src/styles/focusRing/index.ts","../src/styles/grid/gridStyle.ts","../src/styles/grid/gridItemStyle.ts","../src/styles/input/responsiveInputPaddingStyle.ts","../src/styles/input/textInputStyle.ts","../src/styles/margin/marginStyle.ts","../src/styles/padding/paddingStyle.ts","../src/styles/radius/radiusStyle.ts","../src/styles/shadow/shadowStyle.ts","../src/primitives/text/styles.ts","../src/primitives/text/text.tsx","../src/primitives/avatar/styles.ts","../src/primitives/avatar/avatar.tsx","../src/primitives/avatar/avatarCounter.tsx","../src/primitives/helpers.ts","../src/primitives/avatar/avatarStack.tsx","../src/primitives/box/box.tsx","../src/primitives/label/styles.ts","../src/primitives/label/label.tsx","../src/primitives/badge/styles.ts","../src/primitives/badge/badge.tsx","../src/primitives/flex/flex.tsx","../src/primitives/spinner/spinner.tsx","../src/styles/colorVars/colorVarsStyle.ts","../src/primitives/button/styles.ts","../src/primitives/button/button.tsx","../src/primitives/card/styles.ts","../src/primitives/card/card.tsx","../src/primitives/checkbox/styles.ts","../src/primitives/checkbox/checkbox.tsx","../src/primitives/code/styles.ts","../src/primitives/code/code.tsx","../src/primitives/container/styles.ts","../src/primitives/container/container.tsx","../src/primitives/grid/grid.tsx","../src/primitives/heading/styles.ts","../src/primitives/heading/heading.tsx","../src/primitives/inline/styles.ts","../src/primitives/inline/inline.tsx","../src/primitives/kbd/kbd.tsx","../src/utils/boundaryElement/boundaryElementContext.ts","../src/utils/boundaryElement/boundaryElementProvider.tsx","../src/utils/boundaryElement/useBoundaryElement.ts","../src/utils/elementQuery/helpers.ts","../src/utils/elementQuery/elementQuery.tsx","../src/utils/errorBoundary.tsx","../src/utils/layer/layerContext.ts","../src/utils/layer/useLayer.ts","../src/utils/layer/layerProvider.tsx","../src/utils/layer/layer.tsx","../src/utils/portal/portalContext.ts","../src/utils/portal/usePortal.ts","../src/utils/portal/portal.ts","../src/hooks/_internal/useUnique.ts","../src/utils/portal/portalProvider.tsx","../src/utils/srOnly/srOnly.tsx","../src/helpers/animation.ts","../src/helpers/element.ts","../src/helpers/focus.ts","../src/helpers/scroll.ts","../src/utils/virtualList/virtualList.tsx","../src/primitives/popover/arrow.tsx","../src/primitives/popover/modifiers/getPopoverModifiers.ts","../src/primitives/popover/modifiers/usePopoverModifiers.ts","../src/primitives/popover/popover.tsx","../src/primitives/radio/styles.ts","../src/primitives/radio/radio.tsx","../src/primitives/select/styles.ts","../src/primitives/select/select.tsx","../src/primitives/stack/styles.ts","../src/primitives/stack/stack.tsx","../src/primitives/switch/styles.ts","../src/primitives/switch/switch.tsx","../src/primitives/textArea/textArea.tsx","../src/primitives/textInput/textInput.tsx","../src/primitives/tooltip/tooltipArrow.tsx","../src/primitives/tooltip/tooltip.tsx","../src/components/autocomplete/autocomplete.styles.tsx","../src/components/autocomplete/autocompleteOption.tsx","../src/components/autocomplete/autocompleteReducer.ts","../src/components/autocomplete/constants.ts","../src/components/autocomplete/autocomplete.tsx","../src/components/breadcrumbs/breadcrumbs.styles.ts","../src/components/breadcrumbs/breadcrumbs.tsx","../src/components/dialog/styles.ts","../src/components/dialog/dialogContext.ts","../src/components/dialog/useDialog.ts","../src/components/dialog/dialog.tsx","../src/components/dialog/dialogProvider.tsx","../src/components/hotkeys/hotkeys.tsx","../src/components/menu/menuContext.ts","../src/components/menu/helpers.ts","../src/components/menu/useMenuController.ts","../src/components/menu/menu.tsx","../src/components/menu/menuButton.tsx","../src/components/menu/menuDivider.ts","../src/primitives/_selectable/style.ts","../src/primitives/_selectable/selectable.tsx","../src/components/menu/useMenu.ts","../src/components/menu/menuGroup.tsx","../src/components/menu/menuItem.tsx","../src/components/skeleton/styles.ts","../src/components/skeleton/skeleton.tsx","../src/components/skeleton/textSkeleton.tsx","../src/components/tab/tab.tsx","../src/components/tab/tabList.tsx","../src/components/tab/tabPanel.tsx","../src/components/toast/toast.tsx","../src/components/toast/toastContext.ts","../src/components/toast/toastProvider.tsx","../src/components/toast/useToast.ts","../src/components/tree/helpers.ts","../src/components/tree/treeContext.ts","../src/components/tree/tree.tsx","../src/components/tree/style.ts","../src/components/tree/useTree.ts","../src/components/tree/treeGroup.tsx","../src/components/tree/treeItem.tsx"],"sourcesContent":["export const EMPTY_ARRAY: any[] = []\nexport const EMPTY_RECORD: Record<string, any> = {}\n","import {CSSObject} from 'styled-components'\nimport {EMPTY_ARRAY} from '../constants'\nimport {Theme} from '../theme'\n\n/**\n * @internal\n */\nexport function _fillCSSObject(keys: string[], value: string | number | CSSObject): CSSObject {\n return keys.reduce<CSSObject>((style, key) => {\n style[key] = value\n\n return style\n }, {})\n}\n\n/**\n * @public\n */\nexport function rem(pixelValue: number): string | 0 {\n if (pixelValue === 0) return 0\n\n return `${pixelValue / 16}rem`\n}\n\n/**\n * @internal\n */\nexport function _responsive<T>(\n media: number[],\n values: T[],\n callback: (value: T, index: number, array: T[]) => CSSObject\n): CSSObject[] {\n const statements = values.map(callback)\n\n return statements.map((statement, mediaIndex) => {\n if (mediaIndex === 0) return statement\n\n return {[`@media screen and (min-width: ${media[mediaIndex - 1]}px)`]: statement}\n })\n}\n\n/**\n * @internal\n */\nexport function _getArrayProp<T = number>(val: T | T[] | undefined, defaultVal?: T[]): T[] {\n if (val === undefined) return defaultVal || EMPTY_ARRAY\n\n return Array.isArray(val) ? val : [val]\n}\n\n/**\n * @internal\n */\nexport function _getResponsiveSpace(\n theme: Theme,\n props: string[],\n spaceIndexes: number[] = EMPTY_ARRAY\n): CSSObject[] | null {\n if (!Array.isArray(spaceIndexes)) {\n throw new Error('the property must be array of numbers')\n }\n\n if (spaceIndexes.length === 0) {\n return null\n }\n\n return _responsive(theme.sanity.media, spaceIndexes, (spaceIndex) =>\n _fillCSSObject(props, rem(theme.sanity.space[spaceIndex]))\n )\n}\n","import {CSSObject} from 'styled-components'\nimport {ThemeFontSize, ThemeFontKey} from '../../theme'\nimport {rem, _responsive} from '../helpers'\nimport {ThemeProps} from '../types'\nimport {ResponsiveFontStyleProps} from './types'\n\n/**\n * A utility function getting responsive font styles.\n * @internal\n */\nexport function responsiveFont(\n fontKey: ThemeFontKey,\n props: ResponsiveFontStyleProps & ThemeProps\n): CSSObject[] {\n const {$size, $weight, theme} = props\n const {fonts, media} = theme.sanity\n const {family, sizes, weights} = fonts[fontKey]\n const fontWeight = ($weight && weights[$weight]) || weights.regular\n\n // @todo: make this configurable\n const defaultSize = sizes[2]\n\n const base: CSSObject = {\n position: 'relative',\n fontFamily: family,\n fontWeight,\n padding: '1px 0',\n margin: 0,\n\n '&:before': {\n content: '\"\"',\n display: 'block',\n height: 0,\n },\n\n '&:after': {\n content: '\"\"',\n display: 'block',\n height: 0,\n },\n\n '& > code, & > span': {\n display: 'block',\n },\n\n '&:not([hidden])': {\n display: 'block',\n },\n }\n\n const resp = _responsive(media, $size, (sizeIndex) => fontSize(sizes[sizeIndex] || defaultSize))\n\n return [base, ...resp]\n}\n\nexport function fontSize(size: ThemeFontSize): CSSObject {\n const {ascenderHeight, descenderHeight, fontSize, iconSize, letterSpacing, lineHeight} = size\n const negHeight = ascenderHeight + descenderHeight\n const capHeight = lineHeight - negHeight\n const iconOffset = (capHeight - iconSize) / 2\n const customIconSize = Math.floor((fontSize * 1.125) / 2) * 2 + 1\n const customIconOffset = (capHeight - customIconSize) / 2\n\n return {\n fontSize: rem(fontSize),\n lineHeight: `calc(${lineHeight} / ${fontSize})`,\n letterSpacing: rem(letterSpacing),\n transform: `translateY(${rem(descenderHeight)})`,\n\n '&:before': {\n marginTop: `calc(${rem(0 - negHeight)} - 1px)`,\n },\n\n '&:after': {\n marginBottom: '-1px',\n },\n\n '& svg:not([data-sanity-icon])': {\n fontSize: `calc(${customIconSize} / 16 * 1rem)`,\n margin: rem(customIconOffset),\n },\n\n '& [data-sanity-icon]': {\n fontSize: `calc(${iconSize} / 16 * 1rem)`,\n margin: rem(iconOffset),\n },\n }\n}\n","import {CSSObject} from 'styled-components'\nimport {ThemeProps} from '../types'\nimport {responsiveFont} from './responsiveFont'\nimport {ResponsiveFontStyleProps} from './types'\n\n/**\n * Get responsive CSS for the `code` font style.\n * @internal\n */\nexport function responsiveCodeFontStyle(props: ResponsiveFontStyleProps & ThemeProps): CSSObject[] {\n return responsiveFont('code', props)\n}\n","import {CSSObject} from 'styled-components'\nimport {ThemeProps} from '../types'\nimport {responsiveFont} from './responsiveFont'\nimport {ResponsiveFontStyleProps} from './types'\n\n/**\n * Get responsive CSS for the `heading` font style.\n * @internal\n */\nexport function responsiveHeadingFont(props: ResponsiveFontStyleProps & ThemeProps): CSSObject[] {\n return responsiveFont('heading', props)\n}\n","import {CSSObject} from 'styled-components'\nimport {ThemeProps} from '../types'\nimport {responsiveFont} from './responsiveFont'\nimport {ResponsiveFontStyleProps} from './types'\n\n/**\n * Get responsive CSS for the `label` font style.\n * @internal\n */\nexport function responsiveLabelFont(props: ResponsiveFontStyleProps & ThemeProps): CSSObject[] {\n return responsiveFont('label', props)\n}\n","import {CSSObject} from 'styled-components'\nimport {_responsive} from '../helpers'\nimport {ThemeProps} from '../types'\nimport {ResponsiveTextAlignStyleProps} from './types'\n\n/**\n * Get responsive text align styles.\n * @internal\n */\nexport function responsiveTextAlignStyle(\n props: ResponsiveTextAlignStyleProps & ThemeProps\n): CSSObject[] {\n const {theme} = props\n\n return _responsive(theme.sanity.media, props.$align, (textAlign) => {\n return {textAlign}\n })\n}\n","import {CSSObject} from 'styled-components'\nimport {ThemeProps} from '../types'\nimport {responsiveFont} from './responsiveFont'\nimport {ResponsiveFontStyleProps} from './types'\n\n/**\n * Get responsive CSS for the `text` font style.\n * @internal\n */\nexport function responsiveTextFont(props: ResponsiveFontStyleProps & ThemeProps): CSSObject[] {\n return responsiveFont('text', props)\n}\n","import {useMemo} from 'react'\nimport {_getArrayProp} from '../styles'\n\n/** @beta */\nexport type ArrayPropPrimitive = string | number | boolean | undefined | null\n\n/**\n * This API might change. DO NOT USE IN PRODUCTION.\n * @beta\n */\nexport function useArrayProp<T extends ArrayPropPrimitive = ArrayPropPrimitive>(\n val: T | T[] | undefined,\n defaultVal?: T[]\n): T[] {\n const __perf_hash__ = JSON.stringify(val ?? defaultVal)\n\n return useMemo(\n () => _getArrayProp(val, defaultVal),\n\n // Improve performance: Keep object identify for a given hash of the value\n // eslint-disable-next-line react-hooks/exhaustive-deps\n [__perf_hash__]\n )\n}\n","import {useEffect, useRef, useState} from 'react'\nimport {EMPTY_ARRAY} from '../constants'\n\n/**\n * @public\n */\nexport type ClickOutsideListener = (event: MouseEvent) => void\n\nfunction _getElements(\n element: HTMLElement | null,\n elementsArg: Array<HTMLElement | HTMLElement[] | null>\n): HTMLElement[] {\n const ret = [element]\n\n for (const el of elementsArg) {\n if (Array.isArray(el)) {\n ret.push(...el)\n } else {\n ret.push(el)\n }\n }\n\n return ret.filter(Boolean) as HTMLElement[]\n}\n\n/**\n * @public\n */\nexport function useClickOutside(\n listener: ClickOutsideListener,\n elementsArg: Array<HTMLElement | HTMLElement[] | null> = EMPTY_ARRAY,\n boundaryElement?: HTMLElement | null\n): (el: HTMLElement | null) => void {\n const [element, setElement] = useState<HTMLElement | null>(null)\n const [elements, setElements] = useState(() => _getElements(element, elementsArg))\n const elementsRef = useRef(elements)\n\n useEffect(() => {\n const prevElements = elementsRef.current\n const nextElements = _getElements(element, elementsArg)\n\n if (prevElements.length !== nextElements.length) {\n setElements(nextElements)\n elementsRef.current = nextElements\n\n return\n }\n\n for (const el of prevElements) {\n if (!nextElements.includes(el)) {\n setElements(nextElements)\n elementsRef.current = nextElements\n\n return\n }\n }\n\n for (const el of nextElements) {\n if (!prevElements.includes(el)) {\n setElements(nextElements)\n elementsRef.current = nextElements\n\n return\n }\n }\n }, [element, elementsArg])\n\n useEffect(() => {\n if (!listener) return undefined\n\n const handleWindowMouseDown = (evt: MouseEvent) => {\n const target = evt.target\n\n if (!(target instanceof Node)) {\n return\n }\n\n if (boundaryElement && !boundaryElement.contains(target)) {\n return\n }\n\n for (const el of elements) {\n if (target === el || el.contains(target)) {\n return\n }\n }\n\n listener(evt)\n }\n\n window.addEventListener('mousedown', handleWindowMouseDown)\n\n return () => {\n window.removeEventListener('mousedown', handleWindowMouseDown)\n }\n }, [boundaryElement, listener, elements])\n\n return setElement\n}\n","import {ResizeObserver as ResizeObserverPolyfill} from '@juggle/resize-observer'\n\n/**\n * @internal\n */\nexport const _ResizeObserver: typeof ResizeObserver =\n typeof window !== 'undefined' && window.ResizeObserver\n ? window.ResizeObserver\n : ResizeObserverPolyfill\n","import {_ResizeObserver} from './resizeObserver'\n\n/**\n * @beta\n */\nexport interface ElementRectValue {\n width: number\n height: number\n}\n\n/**\n * @beta\n */\nexport interface ElementSize {\n content: ElementRectValue\n border: ElementRectValue\n\n /** @deprecated INTERNAL ONLY */\n _contentRect: DOMRectReadOnly\n}\n\n/**\n * @internal\n */\nexport type _ElementSizeSubscriber = (elementRect: ElementSize) => void\n\n/**\n * @internal\n */\nexport interface _ElementSizeObserver {\n subscribe: (element: HTMLElement, subscriber: _ElementSizeSubscriber) => () => void\n}\n\n/**\n * @internal\n */\nexport interface _ElementSizeListener {\n subscribe: (element: HTMLElement, subscriber: _ElementSizeSubscriber) => () => void\n}\n\n// Initialize element size observer\n// NOTE: this should NOT have size effects\n/**\n * @internal\n */\nexport const _elementSizeObserver = _createElementSizeObserver()\n\nfunction _createElementRectValueListener(): _ElementSizeListener {\n return {\n subscribe(element, subscriber) {\n const resizeObserver = new _ResizeObserver(([entry]) => {\n subscriber({\n _contentRect: entry.contentRect,\n border: {\n width: entry.borderBoxSize[0].inlineSize,\n height: entry.borderBoxSize[0].blockSize,\n },\n content: {\n width: entry.contentRect.width,\n height: entry.contentRect.height,\n },\n })\n })\n\n resizeObserver.observe(element)\n\n return () => {\n resizeObserver.unobserve(element)\n resizeObserver.disconnect()\n }\n },\n }\n}\n\nfunction _createElementSizeObserver(): _ElementSizeObserver {\n const disposeCache = new WeakMap<HTMLElement, () => void>()\n const subscribersCache = new WeakMap<HTMLElement, _ElementSizeSubscriber[]>()\n\n return {\n subscribe(element, subscriber) {\n const subscribers = subscribersCache.get(element) || []\n\n let dispose = disposeCache.get(element)\n\n if (!subscribersCache.has(element)) {\n subscribersCache.set(element, subscribers)\n\n const listener = _createElementRectValueListener()\n\n // listen\n dispose = listener.subscribe(element, (elementRect) => {\n for (const sub of subscribers) {\n sub(elementRect)\n }\n })\n }\n\n subscribers.push(subscriber)\n\n return () => {\n // dispose\n\n const idx = subscribers.indexOf(subscriber)\n\n if (idx > -1) {\n subscribers.splice(idx, 1)\n }\n\n if (subscribers.length === 0) {\n // unlisten\n if (dispose) dispose()\n }\n }\n },\n }\n}\n","import {useEffect, useState} from 'react'\nimport {ElementSize, _elementSizeObserver} from '../observers/elementSizeObserver'\n\n/**\n * Subscribe to the size of a DOM element.\n * @beta\n */\nexport function useElementSize(element: HTMLElement | null): ElementSize | null {\n const [size, setSize] = useState<ElementSize | null>(null)\n\n useEffect(() => {\n if (!element) return undefined\n\n return _elementSizeObserver.subscribe(element, setSize)\n }, [element])\n\n return size\n}\n","import {useElementSize} from '../useElementSize'\n\n/**\n * Subscribe to the rect of a DOM element.\n * @beta\n *\n * @deprecated Use `useElementSize` instead\n */\nexport function useElementRect(element: HTMLElement | null): DOMRectReadOnly | null {\n const elementSize = useElementSize(element)\n\n return elementSize?._contentRect || null\n}\n","import {useEffect} from 'react'\n\n/**\n * @beta\n */\nexport function useGlobalKeyDown(onKeyDown: (event: KeyboardEvent) => void): void {\n return useEffect(() => {\n addEventListener('keydown', onKeyDown)\n\n return () => removeEventListener('keydown', onKeyDown)\n }, [onKeyDown])\n}\n","import {RGB} from '../types'\n\nfunction multiplyChannel(b: number, s: number) {\n return b * s\n}\n\n/**\n * Apply the \\`multiply\\` blend mode\n * Source: https://www.w3.org/TR/compositing-1/#blendingmultiply\n * @internal\n */\nexport function multiply(b: RGB, s: RGB): RGB {\n return {\n r: Math.round(clamp(multiplyChannel(b.r / 255, s.r / 255) * 255)),\n g: Math.round(clamp(multiplyChannel(b.g / 255, s.g / 255) * 255)),\n b: Math.round(clamp(multiplyChannel(b.b / 255, s.b / 255) * 255)),\n }\n}\n\nfunction clamp(num: number) {\n return Math.max(Math.min(num, 255), 0)\n}\n","import {RGB} from '../types'\n\nfunction screenChannel(b: number, s: number) {\n return b + s - b * s\n}\n\n/**\n * Apply the \\`screen\\` blend mode\n * Source: https://www.w3.org/TR/compositing-1/#blendingscreen\n * @internal\n */\nexport function screen(b: RGB, s: RGB): RGB {\n return {\n r: Math.round(clamp(screenChannel(b.r / 255, s.r / 255) * 255)),\n g: Math.round(clamp(screenChannel(b.g / 255, s.g / 255) * 255)),\n b: Math.round(clamp(screenChannel(b.b / 255, s.b / 255) * 255)),\n }\n}\n\nfunction clamp(num: number) {\n return Math.max(Math.min(num, 255), 0)\n}\n","import {HSL, RGB} from './types'\n\n/**\n * @internal\n */\nexport function hexToRgb(hex: string): RGB {\n if (hex.length === 4) {\n const hexR = hex.slice(1, 2)\n const hexG = hex.slice(2, 3)\n const hexB = hex.slice(3, 4)\n\n return {\n r: parseInt(hexR + hexR, 16),\n g: parseInt(hexG + hexG, 16),\n b: parseInt(hexB + hexB, 16),\n }\n }\n\n return {\n r: parseInt(hex.slice(1, 3), 16),\n g: parseInt(hex.slice(3, 5), 16),\n b: parseInt(hex.slice(5, 7), 16),\n }\n}\n\n/**\n * @internal\n */\nexport function rgbToHex({r, g, b}: RGB): string {\n return '#' + ((1 << 24) + (r << 16) + (g << 8) + b).toString(16).slice(1)\n}\n\n/**\n * @internal\n * @see https://css-tricks.com/converting-color-spaces-in-javascript/\n */\nexport function rgbToHsl({r, g, b}: RGB): HSL {\n // Make r, g, and b fractions of 1\n r /= 255\n g /= 255\n b /= 255\n\n // Find greatest and smallest channel values\n const cmin = Math.min(r, g, b)\n const cmax = Math.max(r, g, b)\n const delta = cmax - cmin\n\n let h = 0\n let s = 0\n let l = 0\n\n // Calculate hue\n // No difference\n if (delta == 0) h = 0\n // Red is max\n else if (cmax == r) h = ((g - b) / delta) % 6\n // Green is max\n else if (cmax == g) h = (b - r) / delta + 2\n // Blue is max\n else h = (r - g) / delta + 4\n\n h = Math.round(h * 60)\n\n // Make negative hues positive behind 360°\n if (h < 0) h += 360\n\n // Calculate lightness\n l = (cmax + cmin) / 2\n\n // Calculate saturation\n s = delta == 0 ? 0 : delta / (1 - Math.abs(2 * l - 1))\n\n // Multiply l and s by 100\n s = +(s * 100).toFixed(1)\n l = +(l * 100).toFixed(1)\n\n return {h, s, l}\n}\n\n/**\n * @internal\n */\nexport function hslToRgb(hsl: HSL): RGB {\n // Must be fractions of 1\n const s = hsl.s / 100\n const l = hsl.l / 100\n\n const c = (1 - Math.abs(2 * l - 1)) * s\n const x = c * (1 - Math.abs(((hsl.h / 60) % 2) - 1))\n const m = l - c / 2\n\n let r = 0\n let g = 0\n let b = 0\n\n if (0 <= hsl.h && hsl.h < 60) {\n r = c\n g = x\n b = 0\n } else if (60 <= hsl.h && hsl.h < 120) {\n r = x\n g = c\n b = 0\n } else if (120 <= hsl.h && hsl.h < 180) {\n r = 0\n g = c\n b = x\n } else if (180 <= hsl.h && hsl.h < 240) {\n r = 0\n g = x\n b = c\n } else if (240 <= hsl.h && hsl.h < 300) {\n r = x\n g = 0\n b = c\n } else if (300 <= hsl.h && hsl.h < 360) {\n r = c\n g = 0\n b = x\n }\n\n return {\n r: Math.round((r + m) * 255),\n g: Math.round((g + m) * 255),\n b: Math.round((b + m) * 255),\n }\n}\n","import {hexToRgb, hslToRgb} from './convert'\nimport {HSL, RGB} from './types'\n\nconst HEX_CHARS = '0123456789ABCDEFabcdef'\n\nconst HSL_RE = /hsl\\(\\s*(\\d+)\\s*,\\s*((\\d+(?:\\.\\d+)?)%)\\s*,\\s*((\\d+(?:\\.\\d+)?)%)\\s*\\)/i\n\nfunction isHexChars(str: string) {\n for (const c of str) {\n if (HEX_CHARS.indexOf(c) === -1) {\n return false\n }\n }\n\n return true\n}\n\nfunction isHex(str: string) {\n if (str[0] !== '#') return false\n\n // Accept both #000 and #000000\n if (!(str.length === 4 || str.length === 7)) return false\n\n return isHexChars(str.slice(1))\n}\n\nfunction parseHsl(str: string): HSL {\n const res = HSL_RE.exec(str)\n\n if (!res) {\n throw new Error(`parseHsl: string is not a HSL color: \"${str}\"`)\n }\n\n return {h: parseInt(res[1]), s: parseFloat(res[3]), l: parseFloat(res[5])}\n}\n\n/**\n * @internal\n */\nexport function parseColor(color: unknown): RGB {\n if (!color) return {r: 0, g: 0, b: 0}\n\n if (typeof color !== 'string') {\n throw new Error('parseColor: expected a string')\n }\n\n if (isHex(color)) {\n return hexToRgb(color)\n }\n\n if (color.startsWith('hsl(')) {\n return hslToRgb(parseHsl(color))\n }\n\n throw new Error(`parseColor: unexpected color format: \"${color}\"`)\n}\n","import {parseColor} from '../parse'\n\n/**\n * @internal\n */\nexport function rgba(color: unknown, a: number): string {\n const rgb = parseColor(color)\n\n return `rgba(${rgb.r},${rgb.g},${rgb.b},${a})`\n}\n","import {ThemeColorBase} from '../base'\nimport {ThemeColorBuilderOpts} from '../factory'\nimport {ThemeColorMuted} from '../muted'\nimport {ThemeColorSolid} from '../solid'\nimport {ThemeColorButtonModeKey, ThemeColorButtonTones} from './types'\n\nexport function createButtonTones(\n opts: ThemeColorBuilderOpts,\n base: ThemeColorBase,\n dark: boolean,\n solid: ThemeColorSolid,\n muted: ThemeColorMuted,\n mode: ThemeColorButtonModeKey\n): ThemeColorButtonTones {\n return {\n default: opts.button({\n base,\n dark,\n solid: solid.default,\n muted: muted.default,\n mode,\n }),\n primary: opts.button({\n base,\n dark,\n solid: solid.primary,\n muted: muted.primary,\n mode,\n }),\n positive: opts.button({\n base,\n dark,\n solid: solid.positive,\n muted: muted.positive,\n mode,\n }),\n caution: opts.button({\n base,\n dark,\n solid: solid.caution,\n muted: muted.caution,\n mode,\n }),\n critical: opts.button({\n base,\n dark,\n solid: solid.critical,\n muted: muted.critical,\n mode,\n }),\n }\n}\n","import {ThemeColorBase} from '../base'\nimport {ThemeColorBuilderOpts} from '../factory'\nimport {ThemeColorMuted} from '../muted'\nimport {ThemeColorSolid} from '../solid'\nimport {createButtonTones} from './createButtonTones'\nimport {ThemeColorButton} from './types'\n\nexport function createButtonModes(\n opts: ThemeColorBuilderOpts,\n base: ThemeColorBase,\n dark: boolean,\n solid: ThemeColorSolid,\n muted: ThemeColorMuted\n): ThemeColorButton {\n return {\n default: createButtonTones(opts, base, dark, solid, muted, 'default'),\n ghost: createButtonTones(opts, base, dark, solid, muted, 'ghost'),\n bleed: createButtonTones(opts, base, dark, solid, muted, 'bleed'),\n }\n}\n","import {ThemeColorBase} from '../base'\nimport {ThemeColorBuilderOpts} from '../factory'\nimport {ThemeColorMuted} from '../muted'\nimport {ThemeColorSolid} from '../solid'\nimport {ThemeColorName} from '../types'\nimport {ThemeColorCard} from './types'\n\nexport function createCardStates(\n opts: ThemeColorBuilderOpts,\n base: ThemeColorBase,\n dark: boolean,\n name: ThemeColorName,\n solid: ThemeColorSolid,\n muted: ThemeColorMuted\n): ThemeColorCard {\n return {\n enabled: opts.card({\n base,\n dark,\n name,\n state: 'enabled',\n solid,\n muted,\n }),\n disabled: opts.card({\n base,\n dark,\n name,\n state: 'disabled',\n solid,\n muted,\n }),\n hovered: opts.card({\n base,\n dark,\n name,\n state: 'hovered',\n solid,\n muted,\n }),\n pressed: opts.card({\n base,\n dark,\n name,\n state: 'pressed',\n solid,\n muted,\n }),\n selected: opts.card({\n base,\n dark,\n name,\n state: 'selected',\n solid,\n muted,\n }),\n }\n}\n","import {ThemeColorBuilderOpts} from './factory'\n\nconst black = 'hsl(0, 0%, 0%)'\nconst white = 'hsl(0, 0%, 100%)'\n\nconst colors = {\n default: {\n lightest: 'hsl(0, 0%, 95%)',\n lighter: 'hsl(0, 0%, 70%)',\n light: 'hsl(0, 0%, 65%)',\n base: 'hsl(0, 0%, 50%)',\n dark: 'hsl(0, 0%, 35%)',\n darker: 'hsl(0, 0%, 20%)',\n darkest: 'hsl(0, 0%, 5%)',\n },\n transparent: {\n lightest: 'hsl(240, 100%, 95%)',\n lighter: 'hsl(240, 100%, 70%)',\n light: 'hsl(240, 100%, 65%)',\n base: 'hsl(240, 100%, 50%)',\n dark: 'hsl(240, 100%, 35%)',\n darker: 'hsl(240, 100%, 20%)',\n darkest: 'hsl(240, 100%, 5%)',\n },\n primary: {\n lightest: 'hsl(240, 100%, 95%)',\n lighter: 'hsl(240, 100%, 70%)',\n light: 'hsl(240, 100%, 65%)',\n base: 'hsl(240, 100%, 50%)',\n dark: 'hsl(240, 100%, 35%)',\n darker: 'hsl(240, 100%, 20%)',\n darkest: 'hsl(240, 100%, 5%)',\n },\n positive: {\n lightest: 'hsl(120, 100%, 95%)',\n lighter: 'hsl(120, 100%, 70%)',\n light: 'hsl(120, 100%, 65%)',\n base: 'hsl(120, 100%, 50%)',\n dark: 'hsl(120, 100%, 35%)',\n darker: 'hsl(120, 100%, 20%)',\n darkest: 'hsl(120, 100%, 5%)',\n },\n caution: {\n lightest: 'hsl(60, 100%, 95%)',\n lighter: 'hsl(60, 100%, 70%)',\n light: 'hsl(60, 100%, 65%)',\n base: 'hsl(60, 100%, 50%)',\n dark: 'hsl(60, 100%, 35%)',\n darker: 'hsl(60, 100%, 20%)',\n darkest: 'hsl(60, 100%, 5%)',\n },\n critical: {\n lightest: 'hsl(0, 100%, 95%)',\n lighter: 'hsl(0, 100%, 70%)',\n light: 'hsl(0, 100%, 65%)',\n base: 'hsl(0, 100%, 50%)',\n dark: 'hsl(0, 100%, 35%)',\n darker: 'hsl(0, 100%, 20%)',\n darkest: 'hsl(0, 100%, 5%)',\n },\n}\n\nconst spots = {\n gray: 'hsl(0, 0%, 50%)',\n red: 'hsl(0, 100%, 50%)',\n orange: 'hsl(30, 100%, 50%)',\n yellow: 'hsl(60, 100%, 50%)',\n green: 'hsl(120, 100%, 50%)',\n cyan: 'hsl(180, 100%, 50%)',\n blue: 'hsl(240, 100%, 50%)',\n purple: 'hsl(270, 100%, 50%)',\n magenta: 'hsl(300, 100%, 50%)',\n}\n\nconst tones = {\n transparent: {\n bg: [colors.transparent.darkest, colors.transparent.lightest],\n fg: [colors.transparent.lightest, colors.transparent.darkest],\n border: [colors.transparent.darker, colors.transparent.lighter],\n focusRing: [colors.transparent.base, colors.transparent.base],\n },\n primary: {\n bg: [colors.primary.darkest, colors.primary.lightest],\n fg: [colors.primary.lightest, colors.primary.darkest],\n border: [colors.primary.darker, colors.primary.lighter],\n focusRing: [colors.primary.base, colors.primary.base],\n },\n positive: {\n bg: [colors.positive.darkest, colors.positive.lightest],\n fg: [colors.positive.lightest, colors.positive.darkest],\n border: [colors.positive.darker, colors.positive.lighter],\n focusRing: [colors.positive.base, colors.positive.base],\n },\n caution: {\n bg: [colors.caution.darkest, colors.caution.lightest],\n fg: [colors.caution.lightest, colors.caution.darkest],\n border: [colors.caution.darker, colors.caution.lighter],\n focusRing: [colors.caution.base, colors.caution.base],\n },\n critical: {\n bg: [colors.critical.darkest, colors.critical.lightest],\n fg: [colors.critical.lightest, colors.critical.darkest],\n border: [colors.critical.darker, colors.critical.lighter],\n focusRing: [colors.critical.base, colors.critical.base],\n },\n}\n\nexport const defaultOpts: ThemeColorBuilderOpts = {\n base: ({dark, name}) => {\n if (name === 'default') {\n return {\n bg: dark ? black : white,\n fg: dark ? white : black,\n border: dark ? colors.default.darkest : colors.default.lightest,\n focusRing: colors.primary.base,\n shadow: {\n outline: black,\n umbra: black,\n penumbra: black,\n ambient: black,\n },\n skeleton: {\n from: dark ? white : black,\n to: dark ? white : black,\n },\n }\n }\n\n // Variants:\n // - primary\n // - positive\n // - caution\n // - critical\n return {\n bg: tones[name].bg[dark ? 0 : 1],\n fg: tones[name].fg[dark ? 0 : 1],\n border: tones[name].border[dark ? 0 : 1],\n focusRing: tones[name].focusRing[dark ? 0 : 1],\n shadow: {\n outline: black,\n umbra: black,\n penumbra: black,\n ambient: black,\n },\n skeleton: {\n from: dark ? white : black,\n to: dark ? white : black,\n },\n }\n },\n\n solid: ({base, dark, state, tone}) => {\n const color = colors[tone]\n\n if (state === 'hovered') {\n return {\n bg: dark ? color.light : color.dark,\n bg2: dark ? color.light : color.dark,\n border: dark ? color.lighter : color.darker,\n fg: dark ? color.darkest : color.lightest,\n muted: {\n fg: black,\n },\n accent: {\n fg: black,\n },\n link: {\n fg: black,\n },\n code: {\n bg: black,\n fg: black,\n },\n skeleton: base.skeleton,\n }\n }\n\n return {\n bg: color.base,\n bg2: color.base,\n border: dark ? color.light : color.dark,\n fg: dark ? color.darkest : color.lightest,\n muted: {\n fg: black,\n },\n accent: {\n fg: black,\n },\n link: {\n fg: black,\n },\n code: {\n bg: black,\n fg: black,\n },\n skeleton: base.skeleton,\n }\n },\n\n muted: ({base, dark, state, tone}) => {\n const color = colors[tone]\n\n if (state === 'hovered') {\n return {\n bg: dark ? color.darker : color.lighter,\n bg2: dark ? color.darker : color.lighter,\n border: dark ? color.lighter : color.darker,\n fg: dark ? color.lightest : color.darkest,\n muted: {\n fg: black,\n },\n accent: {\n fg: black,\n },\n link: {\n fg: black,\n },\n code: {\n bg: black,\n fg: black,\n },\n skeleton: base.skeleton,\n }\n }\n\n return {\n bg: dark ? color.darkest : color.lightest,\n bg2: dark ? color.darkest : color.lightest,\n border: dark ? color.darker : color.lighter,\n fg: dark ? color.lighter : color.darker,\n muted: {\n fg: black,\n },\n accent: {\n fg: black,\n },\n link: {\n fg: black,\n },\n code: {\n bg: black,\n fg: black,\n },\n skeleton: base.skeleton,\n }\n },\n\n button: ({base, mode, muted, solid}) => {\n if (mode === 'bleed') {\n return {\n ...muted,\n enabled: {\n bg: 'transparent',\n bg2: 'transparent',\n fg: muted.enabled.fg,\n border: 'transparent',\n muted: {\n fg: black,\n },\n accent: {\n fg: black,\n },\n link: {\n fg: black,\n },\n code: {\n bg: black,\n fg: black,\n },\n skeleton: base.skeleton,\n },\n hovered: {\n bg: muted.enabled.bg,\n bg2: muted.enabled.bg,\n fg: muted.hovered.fg,\n border: 'transparent',\n muted: {\n fg: black,\n },\n accent: {\n fg: black,\n },\n link: {\n fg: black,\n },\n code: {\n bg: black,\n fg: black,\n },\n skeleton: base.skeleton,\n },\n }\n }\n\n if (mode === 'ghost')\n return {\n ...solid,\n enabled: muted.enabled,\n }\n\n return solid\n },\n\n card: ({base}) => {\n return {\n bg: black,\n bg2: black,\n fg: black,\n border: black,\n muted: {\n fg: black,\n },\n accent: {\n fg: black,\n },\n link: {\n fg: black,\n },\n code: {\n bg: black,\n fg: black,\n },\n skeleton: base.skeleton,\n }\n },\n\n input: () => {\n return {\n bg: black,\n fg: black,\n border: black,\n placeholder: black,\n }\n },\n\n selectable: ({muted, state, tone}) => {\n return muted[tone][state]\n },\n\n spot: ({key}) => {\n return spots[key]\n },\n\n syntax: () => ({\n atrule: black,\n attrName: black,\n attrValue: black,\n attribute: black,\n boolean: black,\n builtin: black,\n cdata: black,\n char: black,\n class: black,\n className: black,\n comment: black,\n constant: black,\n deleted: black,\n doctype: black,\n entity: black,\n function: black,\n hexcode: black,\n id: black,\n important: black,\n inserted: black,\n keyword: black,\n number: black,\n operator: black,\n prolog: black,\n property: black,\n pseudoClass: black,\n pseudoElement: black,\n punctuation: black,\n regex: black,\n selector: black,\n string: black,\n symbol: black,\n tag: black,\n unit: black,\n url: black,\n variable: black,\n }),\n}\n","import {ThemeColorBase} from '../base'\nimport {ThemeColorBuilderOpts} from '../factory'\nimport {ThemeColorMuted} from '../muted'\nimport {ThemeColorSolid} from '../solid'\nimport {ThemeColorInput} from './types'\n\nexport function createInputModes(\n opts: ThemeColorBuilderOpts,\n base: ThemeColorBase,\n dark: boolean,\n solid: ThemeColorSolid,\n muted: ThemeColorMuted\n): ThemeColorInput {\n return {\n default: {\n enabled: opts.input({\n base,\n dark,\n mode: 'default',\n state: 'enabled',\n solid: solid.default,\n muted: muted.default,\n }),\n disabled: opts.input({\n base,\n dark,\n mode: 'default',\n state: 'disabled',\n solid: solid.default,\n muted: muted.default,\n }),\n hovered: opts.input({\n base,\n dark,\n mode: 'default',\n state: 'hovered',\n solid: solid.default,\n muted: muted.default,\n }),\n readOnly: opts.input({\n base,\n dark,\n mode: 'default',\n state: 'readOnly',\n solid: solid.default,\n muted: muted.default,\n }),\n },\n invalid: {\n enabled: opts.input({\n base,\n dark,\n mode: 'invalid',\n state: 'enabled',\n solid: solid.default,\n muted: muted.default,\n }),\n disabled: opts.input({\n base,\n dark,\n mode: 'invalid',\n state: 'disabled',\n solid: solid.default,\n muted: muted.default,\n }),\n hovered: opts.input({\n base,\n dark,\n mode: 'invalid',\n state: 'hovered',\n solid: solid.default,\n muted: muted.default,\n }),\n readOnly: opts.input({\n base,\n dark,\n mode: 'invalid',\n state: 'readOnly',\n solid: solid.default,\n muted: muted.default,\n }),\n },\n }\n}\n","import {ThemeColorBase} from '../base'\nimport {ThemeColorBuilderOpts} from '../factory'\nimport {ThemeColorName} from '../types'\nimport {ThemeColorMuted} from './types'\n\nexport function createMutedTones(\n opts: ThemeColorBuilderOpts,\n base: ThemeColorBase,\n dark: boolean,\n name: ThemeColorName\n): ThemeColorMuted {\n return {\n default: {\n enabled: opts.muted({base, dark, tone: 'default', name, state: 'enabled'}),\n disabled: opts.muted({base, dark, tone: 'default', name, state: 'disabled'}),\n hovered: opts.muted({base, dark, tone: 'default', name, state: 'hovered'}),\n pressed: opts.muted({base, dark, tone: 'default', name, state: 'pressed'}),\n selected: opts.muted({base, dark, tone: 'default', name, state: 'selected'}),\n },\n transparent: {\n enabled: opts.muted({base, dark, tone: 'transparent', name, state: 'enabled'}),\n disabled: opts.muted({base, dark, tone: 'transparent', name, state: 'disabled'}),\n hovered: opts.muted({base, dark, tone: 'transparent', name, state: 'hovered'}),\n pressed: opts.muted({base, dark, tone: 'transparent', name, state: 'pressed'}),\n selected: opts.muted({base, dark, tone: 'transparent', name, state: 'selected'}),\n },\n primary: {\n enabled: opts.muted({base, dark, tone: 'primary', name, state: 'enabled'}),\n disabled: opts.muted({base, dark, tone: 'primary', name, state: 'disabled'}),\n hovered: opts.muted({base, dark, tone: 'primary', name, state: 'hovered'}),\n pressed: opts.muted({base, dark, tone: 'primary', name, state: 'pressed'}),\n selected: opts.muted({base, dark, tone: 'primary', name, state: 'selected'}),\n },\n positive: {\n enabled: opts.muted({base, dark, tone: 'positive', name, state: 'enabled'}),\n disabled: opts.muted({base, dark, tone: 'positive', name, state: 'disabled'}),\n hovered: opts.muted({base, dark, tone: 'positive', name, state: 'hovered'}),\n pressed: opts.muted({base, dark, tone: 'positive', name, state: 'pressed'}),\n selected: opts.muted({base, dark, tone: 'positive', name, state: 'selected'}),\n },\n caution: {\n enabled: opts.muted({base, dark, tone: 'caution', name, state: 'enabled'}),\n disabled: opts.muted({base, dark, tone: 'caution', name, state: 'disabled'}),\n hovered: opts.muted({base, dark, tone: 'caution', name, state: 'hovered'}),\n pressed: opts.muted({base, dark, tone: 'caution', name, state: 'pressed'}),\n selected: opts.muted({base, dark, tone: 'caution', name, state: 'selected'}),\n },\n critical: {\n enabled: opts.muted({base, dark, tone: 'critical', name, state: 'enabled'}),\n disabled: opts.muted({base, dark, tone: 'critical', name, state: 'disabled'}),\n hovered: opts.muted({base, dark, tone: 'critical', name, state: 'hovered'}),\n pressed: opts.muted({base, dark, tone: 'critical', name, state: 'pressed'}),\n selected: opts.muted({base, dark, tone: 'critical', name, state: 'selected'}),\n },\n }\n}\n","import {ThemeColorBase} from '../base'\nimport {ThemeColorBuilderOpts} from '../factory'\nimport {ThemeColorMuted} from '../muted'\nimport {ThemeColorSolid} from '../solid'\nimport {ThemeColorSelectable, ThemeColorSelectableStates} from './types'\n\nexport function createSelectableTones(\n opts: ThemeColorBuilderOpts,\n base: ThemeColorBase,\n dark: boolean,\n solid: ThemeColorSolid,\n muted: ThemeColorMuted\n): ThemeColorSelectable {\n return {\n default: _createSelectableStates(opts, base, dark, solid, muted, 'default'),\n primary: _createSelectableStates(opts, base, dark, solid, muted, 'primary'),\n positive: _createSelectableStates(opts, base, dark, solid, muted, 'positive'),\n caution: _createSelectableStates(opts, base, dark, solid, muted, 'caution'),\n critical: _createSelectableStates(opts, base, dark, solid, muted, 'critical'),\n }\n}\n\nfunction _createSelectableStates(\n opts: ThemeColorBuilderOpts,\n base: ThemeColorBase,\n dark: boolean,\n solid: ThemeColorSolid,\n muted: ThemeColorMuted,\n tone: 'default' | 'primary' | 'positive' | 'caution' | 'critical'\n): ThemeColorSelectableStates {\n return {\n enabled: opts.selectable({\n base,\n dark,\n solid,\n muted,\n state: 'enabled',\n tone,\n }),\n hovered: opts.selectable({\n base,\n dark,\n solid,\n muted,\n state: 'hovered',\n tone,\n }),\n pressed: opts.selectable({\n base,\n dark,\n solid,\n muted,\n state: 'pressed',\n tone,\n }),\n selected: opts.selectable({\n base,\n dark,\n solid,\n muted,\n state: 'selected',\n tone,\n }),\n disabled: opts.selectable({\n base,\n dark,\n solid,\n muted,\n state: 'disabled',\n tone,\n }),\n }\n}\n","import {ThemeColorBase} from '../base'\nimport {ThemeColorBuilderOpts} from '../factory'\nimport {ThemeColorName} from '../types'\nimport {ThemeColorSolid} from './types'\n\nexport function createSolidTones(\n opts: ThemeColorBuilderOpts,\n base: ThemeColorBase,\n dark: boolean,\n name: ThemeColorName\n): ThemeColorSolid {\n return {\n default: {\n enabled: opts.solid({base, dark, tone: 'default', name, state: 'enabled'}),\n disabled: opts.solid({base, dark, tone: 'default', name, state: 'disabled'}),\n hovered: opts.solid({base, dark, tone: 'default', name, state: 'hovered'}),\n pressed: opts.solid({base, dark, tone: 'default', name, state: 'pressed'}),\n selected: opts.solid({base, dark, tone: 'default', name, state: 'selected'}),\n },\n transparent: {\n enabled: opts.solid({base, dark, tone: 'transparent', name, state: 'enabled'}),\n disabled: opts.solid({base, dark, tone: 'transparent', name, state: 'disabled'}),\n hovered: opts.solid({base, dark, tone: 'transparent', name, state: 'hovered'}),\n pressed: opts.solid({base, dark, tone: 'transparent', name, state: 'pressed'}),\n selected: opts.solid({base, dark, tone: 'transparent', name, state: 'selected'}),\n },\n primary: {\n enabled: opts.solid({base, dark, tone: 'primary', name, state: 'enabled'}),\n disabled: opts.solid({base, dark, tone: 'primary', name, state: 'disabled'}),\n hovered: opts.solid({base, dark, tone: 'primary', name, state: 'hovered'}),\n pressed: opts.solid({base, dark, tone: 'primary', name, state: 'pressed'}),\n selected: opts.solid({base, dark, tone: 'primary', name, state: 'selected'}),\n },\n positive: {\n enabled: opts.solid({base, dark, tone: 'positive', name, state: 'enabled'}),\n disabled: opts.solid({base, dark, tone: 'positive', name, state: 'disabled'}),\n hovered: opts.solid({base, dark, tone: 'positive', name, state: 'hovered'}),\n pressed: opts.solid({base, dark, tone: 'positive', name, state: 'pressed'}),\n selected: opts.solid({base, dark, tone: 'positive', name, state: 'selected'}),\n },\n caution: {\n enabled: opts.solid({base, dark, tone: 'caution', name, state: 'enabled'}),\n disabled: opts.solid({base, dark, tone: 'caution', name, state: 'disabled'}),\n hovered: opts.solid({base, dark, tone: 'caution', name, state: 'hovered'}),\n pressed: opts.solid({base, dark, tone: 'caution', name, state: 'pressed'}),\n selected: opts.solid({base, dark, tone: 'caution', name, state: 'selected'}),\n },\n critical: {\n enabled: opts.solid({base, dark, tone: 'critical', name, state: 'enabled'}),\n disabled: opts.solid({base, dark, tone: 'critical', name, state: 'disabled'}),\n hovered: opts.solid({base, dark, tone: 'critical', name, state: 'hovered'}),\n pressed: opts.solid({base, dark, tone: 'critical', name, state: 'pressed'}),\n selected: opts.solid({base, dark, tone: 'critical', name, state: 'selected'}),\n },\n }\n}\n","import {ThemeColorBase} from '../base'\nimport {ThemeColorBuilderOpts} from '../factory'\nimport {ThemeColorSpot} from './types'\n\nexport function createSpot(\n opts: ThemeColorBuilderOpts,\n base: ThemeColorBase,\n dark: boolean\n): ThemeColorSpot {\n return {\n gray: opts.spot({base, dark, key: 'gray'}),\n blue: opts.spot({base, dark, key: 'blue'}),\n purple: opts.spot({base, dark, key: 'purple'}),\n magenta: opts.spot({base, dark, key: 'magenta'}),\n red: opts.spot({base, dark, key: 'red'}),\n orange: opts.spot({base, dark, key: 'orange'}),\n yellow: opts.spot({base, dark, key: 'yellow'}),\n green: opts.spot({base, dark, key: 'green'}),\n cyan: opts.spot({base, dark, key: 'cyan'}),\n }\n}\n","import {ThemeColorGenericState} from './_generic'\nimport {ThemeColorBase} from './base'\nimport {ThemeColorButtonModeKey, ThemeColorButtonStates} from './button'\nimport {createButtonModes} from './button/createButtonModes'\nimport {ThemeColorCardState} from './card'\nimport {createCardStates} from './card/createCardStates'\nimport {defaultOpts} from './defaults'\nimport {ThemeColorInputState} from './input'\nimport {createInputModes} from './input/createInputModes'\nimport {ThemeColorMuted, ThemeColorMutedTone} from './muted'\nimport {createMutedTones} from './muted/createMuted'\nimport {ThemeColorSelectableState} from './selectable'\nimport {createSelectableTones} from './selectable/createSelectableTones'\nimport {ThemeColorSolid, ThemeColorSolidTone} from './solid'\nimport {createSolidTones} from './solid/createSolidTones'\nimport {ThemeColorSpotKey} from './spot'\nimport {createSpot} from './spot/createSpot'\nimport {ThemeColorSyntax} from './syntax'\nimport {\n ThemeColorName,\n ThemeColorScheme,\n ThemeColorSchemes,\n ThemeColor,\n ThemeColorToneKey,\n} from './types'\n\n/**\n * @public\n */\nexport interface ThemeColorBuilderOpts {\n base: (opts: {dark: boolean; name: ThemeColorName}) => ThemeColorBase\n solid: (opts: {\n base: ThemeColorBase\n dark: boolean\n tone: ThemeColorToneKey\n name: ThemeColorName\n state: 'enabled' | 'disabled' | 'hovered' | 'pressed' | 'selected'\n }) => ThemeColorGenericState\n muted: (opts: {\n base: ThemeColorBase\n dark: boolean\n tone: ThemeColorToneKey\n name: ThemeColorName\n state: 'enabled' | 'disabled' | 'hovered' | 'pressed' | 'selected'\n }) => ThemeColorGenericState\n card: (opts: {\n base: ThemeColorBase\n dark: boolean\n muted: ThemeColorMuted\n name: ThemeColorName\n solid: ThemeColorSolid\n state: 'enabled' | 'disabled' | 'hovered' | 'pressed' | 'selected'\n }) => ThemeColorCardState\n button: (opts: {\n dark: boolean\n mode: ThemeColorButtonModeKey\n base: ThemeColorBase\n solid: ThemeColorSolidTone\n muted: ThemeColorMutedTone\n }) => ThemeColorButtonStates\n input: (opts: {\n base: ThemeColorBase\n solid: ThemeColorSolidTone\n muted: ThemeColorMutedTone\n dark: boolean\n mode: 'default' | 'invalid'\n state: 'enabled' | 'disabled' | 'hovered' | 'readOnly'\n }) => ThemeColorInputState\n selectable: (opts: {\n dark: boolean\n base: ThemeColorBase\n solid: ThemeColorSolid\n muted: ThemeColorMuted\n state: 'enabled' | 'disabled' | 'hovered' | 'pressed' | 'selected'\n tone: 'default' | 'primary' | 'positive' | 'caution' | 'critical'\n }) => ThemeColorSelectableState\n syntax: (opts: {base: ThemeColorBase; dark: boolean}) => ThemeColorSyntax\n spot: (opts: {base: ThemeColorBase; dark: boolean; key: ThemeColorSpotKey}) => string\n}\n\n/**\n * @public\n */\nexport type PartialThemeColorBuilderOpts = Partial<ThemeColorBuilderOpts>\n\n/**\n * @public\n */\nexport function createColorTheme(\n partialOpts: PartialThemeColorBuilderOpts = {}\n): ThemeColorSchemes {\n const builders: ThemeColorBuilderOpts = {...defaultOpts, ...partialOpts}\n\n return {\n light: _createColorScheme(builders, false),\n dark: _createColorScheme(builders, true),\n }\n}\n\n/**\n * @internal\n */\nfunction _createColorScheme(opts: ThemeColorBuilderOpts, dark: boolean): ThemeColorScheme {\n return {\n default: _createColor(opts, dark, 'default'),\n transparent: _createColor(opts, dark, 'transparent'),\n primary: _createColor(opts, dark, 'primary'),\n positive: _createColor(opts, dark, 'positive'),\n caution: _createColor(opts, dark, 'caution'),\n critical: _createColor(opts, dark, 'critical'),\n }\n}\n\n/**\n * @internal\n */\nfunction _createColor(\n opts: ThemeColorBuilderOpts,\n dark: boolean,\n name: ThemeColorName\n): ThemeColor {\n const base = opts.base({dark, name})\n const solid = createSolidTones(opts, base, dark, name)\n const muted = createMutedTones(opts, base, dark, name)\n\n return {\n base,\n button: createButtonModes(opts, base, dark, solid, muted),\n card: createCardStates(opts, base, dark, name, solid, muted),\n dark,\n input: createInputModes(opts, base, dark, solid, muted),\n selectable: createSelectableTones(opts, base, dark, solid, muted),\n spot: createSpot(opts, base, dark),\n syntax: opts.syntax({base, dark}),\n solid,\n muted,\n }\n}\n","import {parseColor, rgbToHex, screen as _screen, multiply as _multiply} from '../lib/color-fns'\n\nexport function multiply(bg: string, fg: string): string {\n const b = parseColor(bg)\n const s = parseColor(fg)\n const hex = rgbToHex(_multiply(b, s))\n\n return hex\n}\n\nexport function screen(bg: string, fg: string): string {\n const b = parseColor(bg)\n const s = parseColor(fg)\n const hex = rgbToHex(_screen(b, s))\n\n return hex\n}\n","import {black, ColorTints, hues, white} from '@sanity/color'\nimport {rgba} from '../lib/color-fns'\nimport {createColorTheme} from '../lib/theme'\nimport {multiply, screen} from './helpers'\n\nconst tones: {[key: string]: ColorTints} = {\n default: hues.gray,\n transparent: hues.gray,\n primary: hues.blue,\n positive: hues.green,\n caution: hues.yellow,\n critical: hues.red,\n}\n\nconst NEUTRAL_TONES = ['default', 'transparent']\n\nexport const color = createColorTheme({\n base: ({dark, name}) => {\n if (name === 'default') {\n const tints = hues.gray\n const skeletonFrom = dark ? tints[900].hex : tints[100].hex\n\n return {\n fg: dark ? white.hex : black.hex,\n bg: dark ? black.hex : white.hex,\n border: tints[dark ? 800 : 200].hex,\n focusRing: hues.blue[dark ? 500 : 500].hex,\n shadow: {\n outline: rgba(tints[500].hex, 0.4),\n umbra: dark ? rgba(tints[950].hex, 0.4) : rgba(tints[500].hex, 0.2),\n penumbra: dark ? rgba(tints[950].hex, 0.28) : rgba(tints[500].hex, 0.14),\n ambient: dark ? rgba(tints[950].hex, 0.24) : rgba(tints[500].hex, 0.12),\n },\n skeleton: {\n from: skeletonFrom,\n to: rgba(skeletonFrom, 0.5),\n },\n }\n }\n\n if (name === 'transparent') {\n const tints = tones.default\n const skeletonFrom = tints[dark ? 800 : 200].hex\n\n return {\n fg: tints[dark ? 100 : 900].hex,\n bg: tints[dark ? 950 : 50].hex,\n border: tints[dark ? 800 : 300].hex,\n focusRing: hues.blue[500].hex,\n shadow: {\n outline: rgba(tints[500].hex, 0.4),\n umbra: dark ? rgba(tints[900].hex, 0.4) : rgba(tints[500].hex, 0.2),\n penumbra: dark ? rgba(tints[900].hex, 0.28) : rgba(tints[500].hex, 0.14),\n ambient: dark ? rgba(tints[900].hex, 0.24) : rgba(tints[500].hex, 0.12),\n },\n skeleton: {\n from: skeletonFrom,\n to: rgba(skeletonFrom, 0.5),\n },\n }\n }\n\n const tints = tones[name] || tones.default\n const skeletonFrom = tints[dark ? 800 : 200].hex\n\n return {\n fg: tints[dark ? 100 : 900].hex,\n bg: tints[dark ? 950 : 50].hex,\n border: tints[dark ? 800 : 200].hex,\n focusRing: tints[500].hex,\n shadow: {\n outline: rgba(tints[500].hex, 0.4),\n umbra: dark ? rgba(tints[900].hex, 0.4) : rgba(tints[500].hex, 0.2),\n penumbra: dark ? rgba(tints[900].hex, 0.28) : rgba(tints[500].hex, 0.14),\n ambient: dark ? rgba(tints[900].hex, 0.24) : rgba(tints[500].hex, 0.12),\n },\n skeleton: {\n from: skeletonFrom,\n to: rgba(skeletonFrom, 0.5),\n },\n }\n },\n\n solid: ({base, dark, name, state, tone}) => {\n const mix = dark ? screen : multiply\n const mix2 = dark ? multiply : screen\n const defaultTints = tones[name] || tones.default\n const isNeutral = NEUTRAL_TONES.includes(name) && NEUTRAL_TONES.includes(tone)\n\n let tints = tones[tone === 'default' ? name : tone] || defaultTints\n\n if (state === 'disabled') {\n tints = defaultTints\n\n const bg = mix(base.bg, tints[dark ? 800 : 200].hex)\n const skeletonFrom = mix2(bg, tints[dark ? 200 : 800].hex)\n\n return {\n bg,\n bg2: mix2(bg, tints[dark ? 50 : 950].hex),\n border: mix(base.bg, tints[dark ? 800 : 200].hex),\n fg: mix(base.bg, dark ? black.hex : white.hex),\n muted: {\n fg: mix(base.bg, tints[dark ? 950 : 50].hex),\n },\n accent: {\n fg: mix(base.bg, tints[dark ? 950 : 50].hex),\n },\n link: {\n fg: mix(base.bg, tints[dark ? 950 : 50].hex),\n },\n code: {\n bg,\n fg: mix(base.bg, tints[dark ? 950 : 50].hex),\n },\n skeleton: {\n from: skeletonFrom,\n to: rgba(skeletonFrom, 0.5),\n },\n }\n }\n\n if (state === 'hovered') {\n const bg = mix(base.bg, tints[dark ? 300 : 600].hex)\n const skeletonFrom = mix2(bg, tints[dark ? 200 : 800].hex)\n\n return {\n bg,\n bg2: mix2(bg, tints[dark ? 50 : 950].hex),\n border: mix(base.bg, tints[dark ? 300 : 600].hex),\n fg: mix(base.bg, dark ? black.hex : white.hex),\n muted: {\n fg: mix(base.bg, tints[dark ? 800 : 200].hex),\n },\n accent: {\n fg: mix2(bg, hues.red[dark ? 800 : 200].hex),\n },\n link: {\n fg: mix2(bg, hues.blue[dark ? 800 : 200].hex),\n },\n code: {\n bg: mix(bg, tints[dark ? 950 : 50].hex),\n fg: mix(base.bg, tints[dark ? 800 : 200].hex),\n },\n skeleton: {\n from: skeletonFrom,\n to: rgba(skeletonFrom, 0.5),\n },\n }\n }\n\n if (state === 'pressed') {\n const bg = mix(base.bg, tints[dark ? 200 : 800].hex)\n const skeletonFrom = mix2(bg, tints[dark ? 200 : 800].hex)\n\n return {\n bg: mix(base.bg, tints[dark ? 200 : 800].hex),\n bg2: mix2(bg, tints[dark ? 50 : 950].hex),\n border: mix(base.bg, tints[dark ? 200 : 800].hex),\n fg: mix(base.bg, dark ? black.hex : white.hex),\n muted: {\n fg: mix(base.bg, tints[dark ? 800 : 200].hex),\n },\n accent: {\n fg: mix2(bg, hues.red[dark ? 800 : 200].hex),\n },\n link: {\n fg: mix2(bg, hues.blue[dark ? 800 : 200].hex),\n },\n code: {\n bg: mix(bg, tints[dark ? 950 : 50].hex),\n fg: mix(base.bg, tints[dark ? 800 : 200].hex),\n },\n skeleton: {\n from: skeletonFrom,\n to: rgba(skeletonFrom, 0.5),\n },\n }\n }\n\n if (state === 'selected') {\n if (isNeutral) {\n tints = tones.primary\n }\n\n const bg = mix(base.bg, tints[dark ? 200 : 800].hex)\n const skeletonFrom = mix2(bg, tints[dark ? 200 : 800].hex)\n\n return {\n bg,\n bg2: mix2(bg, tints[dark ? 50 : 950].hex),\n border: mix(base.bg, tints[dark ? 200 : 800].hex),\n fg: mix(base.bg, dark ? black.hex : white.hex),\n muted: {\n fg: mix(base.bg, tints[dark ? 800 : 200].hex),\n },\n accent: {\n fg: mix2(bg, hues.red[dark ? 800 : 200].hex),\n },\n link: {\n fg: mix2(bg, hues.blue[dark ? 800 : 200].hex),\n },\n code: {\n bg: mix(bg, tints[dark ? 950 : 50].hex),\n fg: mix(base.bg, tints[dark ? 800 : 200].hex),\n },\n skeleton: {\n from: skeletonFrom,\n to: rgba(skeletonFrom, 0.5),\n },\n }\n }\n\n // state: \"enabled\" | unknown\n const bg = mix(base.bg, tints[dark ? 400 : 500].hex)\n const skeletonFrom = mix2(bg, tints[dark ? 200 : 800].hex)\n\n return {\n bg,\n bg2: mix2(bg, tints[dark ? 50 : 950].hex),\n border: mix(base.bg, tints[dark ? 400 : 500].hex),\n fg: mix(base.bg, dark ? black.hex : white.hex),\n muted: {\n fg: mix(base.bg, tints[dark ? 900 : 100].hex),\n },\n accent: {\n fg: mix2(bg, hues.red[dark ? 900 : 100].hex),\n },\n link: {\n fg: mix2(bg, hues.blue[dark ? 900 : 100].hex),\n },\n code: {\n bg: mix(bg, tints[dark ? 950 : 50].hex),\n fg: mix(base.bg, tints[dark ? 900 : 100].hex),\n },\n skeleton: {\n from: skeletonFrom,\n to: rgba(skeletonFrom, 0.5),\n },\n }\n },\n\n muted: ({base, dark, name, state, tone}) => {\n const mix = dark ? screen : multiply\n const defaultTints = tones[name] || tones.default\n const isNeutral = NEUTRAL_TONES.includes(name) && NEUTRAL_TONES.includes(tone)\n\n let tints = tones[tone === 'default' ? name : tone] || defaultTints\n\n if (state === 'disabled') {\n tints = defaultTints\n\n const bg = base.bg\n const skeletonFrom = mix(bg, tints[dark ? 900 : 100].hex)\n\n return {\n bg,\n bg2: mix(bg, tints[dark ? 950 : 50].hex),\n border: mix(bg, tints[dark ? 950 : 50].hex),\n fg: mix(bg, tints[dark ? 800 : 200].hex),\n muted: {\n fg: mix(bg, tints[dark ? 900 : 100].hex),\n },\n accent: {\n fg: mix(bg, tints[dark ? 900 : 100].hex),\n },\n link: {\n fg: mix(bg, tints[dark ? 900 : 100].hex),\n },\n code: {\n bg,\n fg: mix(bg, tints[dark ? 900 : 100].hex),\n },\n skeleton: {\n from: rgba(skeletonFrom, 0.5),\n to: rgba(skeletonFrom, 0.25),\n },\n }\n }\n\n if (state === 'hovered') {\n // if (isNeutral) {\n // tints = tones.primary\n // }\n\n const bg = mix(base.bg, tints[dark ? 950 : 50].hex)\n const skeletonFrom = mix(bg, tints[dark ? 900 : 100].hex)\n\n return {\n bg,\n bg2: mix(bg, tints[dark ? 950 : 50].hex),\n border: mix(bg, tints[dark ? 900 : 100].hex),\n fg: mix(base.bg, tints[dark ? 200 : 800].hex),\n muted: {\n fg: mix(base.bg, tints[dark ? 400 : 600].hex),\n },\n accent: {\n fg: mix(base.bg, hues.red[dark ? 400 : 500].hex),\n },\n link: {\n fg: mix(base.bg, hues.blue[dark ? 400 : 600].hex),\n },\n code: {\n bg: mix(bg, tints[dark ? 950 : 50].hex),\n fg: mix(base.bg, tints[dark ? 400 : 600].hex),\n },\n skeleton: {\n from: skeletonFrom,\n to: rgba(skeletonFrom, 0.5),\n },\n }\n }\n\n if (state === 'pressed') {\n if (isNeutral) {\n tints = tones.primary\n }\n\n const bg = mix(base.bg, tints[dark ? 900 : 100].hex)\n const skeletonFrom = mix(bg, tints[dark ? 900 : 100].hex)\n\n return {\n bg,\n bg2: mix(bg, tints[dark ? 950 : 50].hex),\n border: mix(bg, tints[dark ? 900 : 100].hex),\n fg: mix(base.bg, tints[dark ? 200 : 800].hex),\n muted: {\n fg: mix(base.bg, tints[dark ? 400 : 600].hex),\n },\n accent: {\n fg: mix(bg, hues.red[dark ? 400 : 500].hex),\n },\n link: {\n fg: mix(bg, hues.blue[dark ? 400 : 600].hex),\n },\n code: {\n bg: mix(bg, tints[dark ? 950 : 50].hex),\n fg: mix(base.bg, tints[dark ? 400 : 600].hex),\n },\n skeleton: {\n from: skeletonFrom,\n to: rgba(skeletonFrom, 0.5),\n },\n }\n }\n\n if (state === 'selected') {\n if (isNeutral) {\n tints = tones.primary\n }\n\n const bg = mix(base.bg, tints[dark ? 900 : 100].hex)\n const skeletonFrom = mix(bg, tints[dark ? 900 : 100].hex)\n\n return {\n bg,\n bg2: mix(bg, tints[dark ? 950 : 50].hex),\n border: mix(bg, tints[dark ? 900 : 100].hex),\n fg: mix(base.bg, tints[dark ? 200 : 800].hex),\n muted: {\n fg: mix(base.bg, tints[dark ? 400 : 600].hex),\n },\n accent: {\n fg: mix(bg, hues.red[dark ? 400 : 500].hex),\n },\n link: {\n fg: mix(bg, hues.blue[dark ? 400 : 600].hex),\n },\n code: {\n bg: mix(bg, tints[dark ? 950 : 50].hex),\n fg: mix(base.bg, tints[dark ? 400 : 600].hex),\n },\n skeleton: {\n from: skeletonFrom,\n to: rgba(skeletonFrom, 0.5),\n },\n }\n }\n\n const bg = base.bg\n const skeletonFrom = mix(bg, tints[dark ? 900 : 100].hex)\n\n return {\n bg,\n bg2: mix(bg, tints[dark ? 950 : 50].hex),\n border: mix(bg, tints[dark ? 900 : 100].hex),\n fg: mix(base.bg, tints[dark ? 300 : 700].hex),\n muted: {\n fg: mix(base.bg, tints[dark ? 400 : 600].hex),\n },\n accent: {\n fg: mix(base.bg, hues.red[dark ? 400 : 500].hex),\n },\n link: {\n fg: mix(base.bg, hues.blue[dark ? 400 : 600].hex),\n },\n code: {\n bg: mix(base.bg, tints[dark ? 950 : 50].hex),\n fg: mix(base.bg, tints[dark ? 400 : 600].hex),\n },\n skeleton: {\n from: skeletonFrom,\n to: rgba(skeletonFrom, 0.5),\n },\n }\n },\n\n button: ({base, mode, muted, solid}) => {\n if (mode === 'bleed') {\n return {\n enabled: {\n ...muted.enabled,\n border: muted.enabled.bg,\n },\n hovered: {\n ...muted.hovered,\n border: muted.hovered.bg,\n },\n pressed: {\n ...muted.pressed,\n border: muted.pressed.bg,\n },\n selected: {\n ...muted.selected,\n border: muted.selected.bg,\n },\n disabled: {\n ...muted.disabled,\n border: muted.disabled.bg,\n },\n }\n }\n\n if (mode === 'ghost') {\n return {\n ...solid,\n enabled: {\n ...muted.enabled,\n border: base.border,\n },\n disabled: muted.disabled,\n }\n }\n\n return solid\n },\n\n card: ({base, dark, muted, name, solid, state}) => {\n if (state === 'hovered') {\n return muted[name].hovered\n }\n\n if (state === 'disabled') {\n return muted[name].disabled\n }\n\n const isNeutral = NEUTRAL_TONES.includes(name)\n const tints = tones[name] || tones.default\n const mix = dark ? screen : multiply\n\n if (state === 'pressed') {\n if (isNeutral) {\n return muted.primary.pressed\n }\n\n return muted[name].pressed\n }\n\n if (state === 'selected') {\n if (isNeutral) {\n return solid.primary.enabled\n }\n\n return solid[name].enabled\n }\n\n const bg = base.bg\n const skeletonFrom = mix(base.bg, tints[dark ? 900 : 100].hex)\n\n return {\n bg,\n bg2: mix(bg, tints[dark ? 950 : 50].hex),\n fg: base.fg,\n border: base.border,\n muted: {\n fg: mix(base.bg, tints[dark ? 400 : 600].hex),\n },\n accent: {\n fg: mix(base.bg, hues.red[dark ? 400 : 500].hex),\n },\n link: {\n fg: mix(base.bg, hues.blue[dark ? 400 : 600].hex),\n },\n code: {\n bg: mix(base.bg, tints[dark ? 950 : 50].hex),\n fg: tints[dark ? 400 : 600].hex,\n },\n skeleton: {\n from: skeletonFrom,\n to: rgba(skeletonFrom, 0.5),\n },\n }\n },\n\n input: ({base, dark, mode, state}) => {\n const mix = dark ? screen : multiply\n\n if (mode === 'invalid') {\n const tints = tones.critical\n\n return {\n bg: mix(base.bg, tints[dark ? 950 : 50].hex),\n fg: mix(base.bg, tints[dark ? 400 : 600].hex),\n border: mix(base.bg, tints[dark ? 800 : 200].hex),\n placeholder: mix(base.bg, tints[dark ? 600 : 400].hex),\n }\n }\n\n if (state === 'hovered') {\n return {\n bg: base.bg,\n fg: base.fg,\n border: mix(base.bg, hues.gray[dark ? 700 : 300].hex),\n placeholder: mix(base.bg, hues.gray[dark ? 600 : 400].hex),\n }\n }\n\n if (state === 'disabled') {\n return {\n bg: mix(base.bg, hues.gray[dark ? 950 : 50].hex),\n fg: mix(base.bg, hues.gray[dark ? 700 : 300].hex),\n border: mix(base.bg, hues.gray[dark ? 900 : 100].hex),\n placeholder: mix(base.bg, hues.gray[dark ? 800 : 200].hex),\n }\n }\n\n if (state === 'readOnly') {\n return {\n bg: mix(base.bg, hues.gray[dark ? 950 : 50].hex),\n fg: mix(base.bg, hues.gray[dark ? 200 : 800].hex),\n border: mix(base.bg, hues.gray[dark ? 800 : 200].hex),\n placeholder: mix(base.bg, hues.gray[dark ? 600 : 400].hex),\n }\n }\n\n return {\n bg: base.bg,\n fg: base.fg,\n border: base.border,\n placeholder: mix(base.bg, hues.gray[dark ? 600 : 400].hex),\n }\n },\n\n selectable: ({base, muted, tone, solid, state}) => {\n if (state === 'enabled') {\n return {\n ...muted[tone].enabled,\n bg: base.bg,\n }\n }\n\n if (state === 'pressed') {\n if (tone === 'default') {\n return muted.primary.pressed\n }\n\n return muted[tone].pressed\n }\n\n if (state === 'selected') {\n if (tone === 'default') {\n return solid.primary.enabled\n }\n\n return solid[tone].enabled\n }\n\n if (state === 'disabled') {\n return {\n ...muted[tone].disabled,\n bg: base.bg,\n }\n }\n\n return muted[tone][state]\n },\n\n spot: ({base, dark, key}) => {\n const mix = dark ? screen : multiply\n\n return mix(base.bg, hues[key][dark ? 400 : 500].hex)\n },\n\n syntax: ({base, dark}) => {\n const mix = dark ? screen : multiply\n const mainShade = dark ? 400 : 600\n const secondaryShade = dark ? 600 : 400\n\n return {\n atrule: mix(base.bg, hues.purple[mainShade].hex),\n attrName: mix(base.bg, hues.green[mainShade].hex),\n attrValue: mix(base.bg, hues.yellow[mainShade].hex),\n attribute: mix(base.bg, hues.yellow[mainShade].hex),\n boolean: mix(base.bg, hues.purple[mainShade].hex),\n builtin: mix(base.bg, hues.purple[mainShade].hex),\n cdata: mix(base.bg, hues.yellow[mainShade].hex),\n char: mix(base.bg, hues.yellow[mainShade].hex),\n class: mix(base.bg, hues.orange[mainShade].hex),\n className: mix(base.bg, hues.cyan[mainShade].hex),\n comment: mix(base.bg, hues.gray[secondaryShade].hex),\n constant: mix(base.bg, hues.purple[mainShade].hex),\n deleted: mix(base.bg, hues.red[mainShade].hex),\n doctype: mix(base.bg, hues.gray[secondaryShade].hex),\n entity: mix(base.bg, hues.red[mainShade].hex),\n function: mix(base.bg, hues.green[mainShade].hex),\n hexcode: mix(base.bg, hues.blue[mainShade].hex),\n id: mix(base.bg, hues.purple[mainShade].hex),\n important: mix(base.bg, hues.purple[mainShade].hex),\n inserted: mix(base.bg, hues.yellow[mainShade].hex),\n keyword: mix(base.bg, hues.magenta[mainShade].hex),\n number: mix(base.bg, hues.purple[mainShade].hex),\n operator: mix(base.bg, hues.magenta[mainShade].hex),\n prolog: mix(base.bg, hues.gray[secondaryShade].hex),\n property: mix(base.bg, hues.blue[mainShade].hex),\n pseudoClass: mix(base.bg, hues.yellow[mainShade].hex),\n pseudoElement: mix(base.bg, hues.yellow[mainShade].hex),\n punctuation: mix(base.bg, hues.gray[mainShade].hex),\n regex: mix(base.bg, hues.blue[mainShade].hex),\n selector: mix(base.bg, hues.red[mainShade].hex),\n string: mix(base.bg, hues.yellow[mainShade].hex),\n symbol: mix(base.bg, hues.purple[mainShade].hex),\n tag: mix(base.bg, hues.red[mainShade].hex),\n unit: mix(base.bg, hues.orange[mainShade].hex),\n url: mix(base.bg, hues.red[mainShade].hex),\n variable: mix(base.bg, hues.red[mainShade].hex),\n }\n },\n})\n","import {ThemeFonts} from '../lib/theme'\n\nexport const fonts: ThemeFonts = {\n code: {\n family: 'ui-monospace, SFMono-Regular, SF Mono, Menlo, Consolas, Liberation Mono, monospace',\n weights: {\n regular: 400,\n medium: 500,\n semibold: 600,\n bold: 700,\n },\n sizes: [\n {\n ascenderHeight: 3,\n descenderHeight: 3,\n fontSize: 10,\n iconSize: 17,\n lineHeight: 13,\n letterSpacing: 0,\n },\n {\n ascenderHeight: 4,\n descenderHeight: 4,\n fontSize: 13,\n iconSize: 21,\n lineHeight: 17,\n letterSpacing: 0,\n },\n {\n ascenderHeight: 5,\n descenderHeight: 5,\n fontSize: 16,\n iconSize: 25,\n lineHeight: 21,\n letterSpacing: 0,\n },\n {\n ascenderHeight: 6,\n descenderHeight: 6,\n fontSize: 19,\n iconSize: 29,\n lineHeight: 25,\n letterSpacing: 0,\n },\n {\n ascenderHeight: 7,\n descenderHeight: 7,\n fontSize: 22,\n iconSize: 33,\n lineHeight: 29,\n letterSpacing: 0,\n },\n ],\n },\n heading: {\n family:\n '-apple-system, BlinkMacSystemFont, \"Segoe UI\", Roboto, \"Helvetica Neue\", \"Liberation Sans\", Helvetica, Arial, system-ui, sans-serif',\n weights: {\n regular: 700,\n medium: 800,\n semibold: 900,\n bold: 900,\n },\n sizes: [\n {\n ascenderHeight: 4,\n descenderHeight: 4,\n fontSize: 12,\n iconSize: 17,\n lineHeight: 17,\n letterSpacing: 0,\n },\n {\n ascenderHeight: 5,\n descenderHeight: 5,\n fontSize: 16,\n iconSize: 25,\n lineHeight: 21,\n letterSpacing: 0,\n },\n {\n ascenderHeight: 6,\n descenderHeight: 6,\n fontSize: 21,\n iconSize: 33,\n lineHeight: 27,\n letterSpacing: 0,\n },\n {\n ascenderHeight: 7,\n descenderHeight: 7,\n fontSize: 27,\n iconSize: 41,\n lineHeight: 33,\n letterSpacing: 0,\n },\n {\n ascenderHeight: 8,\n descenderHeight: 8,\n fontSize: 33,\n iconSize: 49,\n lineHeight: 39,\n letterSpacing: 0,\n },\n {\n ascenderHeight: 9,\n descenderHeight: 9,\n fontSize: 38,\n iconSize: 53,\n lineHeight: 45,\n letterSpacing: 0,\n },\n ],\n },\n label: {\n family:\n '-apple-system, BlinkMacSystemFont, \"Segoe UI\", Roboto, \"Helvetica Neue\", \"Liberation Sans\", system-ui, sans-serif',\n weights: {\n regular: 600,\n medium: 700,\n semibold: 800,\n bold: 900,\n },\n sizes: [\n {\n ascenderHeight: 2,\n descenderHeight: 2,\n fontSize: 9.8,\n iconSize: 15,\n lineHeight: 11,\n letterSpacing: 0.5,\n },\n {\n ascenderHeight: 2,\n descenderHeight: 2,\n fontSize: 11.25,\n iconSize: 17,\n lineHeight: 12,\n letterSpacing: 0.5,\n },\n {\n ascenderHeight: 2,\n descenderHeight: 2,\n fontSize: 12.75,\n iconSize: 19,\n lineHeight: 13,\n letterSpacing: 0.5,\n },\n {\n ascenderHeight: 2,\n descenderHeight: 2,\n fontSize: 14,\n iconSize: 21,\n lineHeight: 14,\n letterSpacing: 0.5,\n },\n {\n ascenderHeight: 2,\n descenderHeight: 2,\n fontSize: 15.5,\n iconSize: 23,\n lineHeight: 15,\n letterSpacing: 0.5,\n },\n ],\n },\n text: {\n family:\n '-apple-system, BlinkMacSystemFont, \"Segoe UI\", Roboto, \"Helvetica Neue\", \"Liberation Sans\", Helvetica, Arial, system-ui, sans-serif',\n weights: {\n regular: 400,\n medium: 500,\n semibold: 600,\n bold: 700,\n },\n sizes: [\n {\n ascenderHeight: 3,\n descenderHeight: 3,\n fontSize: 10,\n iconSize: 17,\n lineHeight: 13,\n letterSpacing: 0,\n },\n {\n ascenderHeight: 4,\n descenderHeight: 4,\n fontSize: 13,\n iconSize: 21,\n lineHeight: 17,\n letterSpacing: 0,\n },\n {\n ascenderHeight: 5,\n descenderHeight: 5,\n fontSize: 16,\n iconSize: 25,\n lineHeight: 21,\n letterSpacing: 0,\n },\n {\n ascenderHeight: 6,\n descenderHeight: 6,\n fontSize: 19,\n iconSize: 29,\n lineHeight: 25,\n letterSpacing: 0,\n },\n {\n ascenderHeight: 7,\n descenderHeight: 7,\n fontSize: 22,\n iconSize: 33,\n lineHeight: 29,\n letterSpacing: 0,\n },\n ],\n },\n}\n","import {RootTheme} from '../types'\nimport {color} from './color'\nimport {fonts} from './fonts'\n\n/**\n * @public\n */\nexport const studioTheme: RootTheme = {\n avatar: {\n sizes: [\n {distance: -3, size: 25},\n {distance: -6, size: 35},\n {distance: -9, size: 55},\n ],\n },\n button: {\n textWeight: 'medium',\n },\n color,\n container: [320, 640, 960, 1280, 1600, 1920],\n focusRing: {\n offset: 1,\n width: 2,\n },\n fonts,\n media: [360, 600, 900, 1200, 1800, 2400],\n radius: [0, 1, 3, 6, 9, 12, 21],\n shadows: [\n null,\n {umbra: [0, 0, 0, 0], penumbra: [0, 0, 0, 0], ambient: [0, 0, 0, 0]},\n {umbra: [0, 3, 5, -1], penumbra: [0, 6, 10, 0], ambient: [0, 1, 18, 0]},\n {umbra: [0, 7, 8, -4], penumbra: [0, 12, 17, 2], ambient: [0, 5, 22, 4]},\n {umbra: [0, 9, 11, -5], penumbra: [0, 18, 28, 2], ambient: [0, 7, 34, 6]},\n {umbra: [0, 11, 15, -7], penumbra: [0, 24, 38, 3], ambient: [0, 9, 46, 8]},\n ],\n space: [0, 4, 8, 12, 20, 32, 52, 84, 136, 220],\n input: {\n checkbox: {\n size: 17,\n },\n radio: {\n size: 17,\n markSize: 9,\n },\n switch: {\n width: 33,\n height: 17,\n padding: 4,\n transitionDurationMs: 150,\n transitionTimingFunction: 'ease-out',\n },\n border: {\n width: 1,\n },\n },\n // styles: {\n // button: {\n // root: {\n // transition: 'background-color 100ms,border-color 100ms,color 100ms',\n // },\n // },\n // card: {\n // root: {\n // transition: 'background-color 100ms,border-color 100ms,color 100ms',\n // },\n // },\n // },\n}\n","import {ThemeLayer} from './lib/theme/layer'\n\nexport const DEFAULT_THEME_LAYER: ThemeLayer = {\n dialog: {zOffset: 600},\n popover: {zOffset: 400},\n tooltip: {zOffset: 200},\n}\n","/**\n * Gets the global scope instance in a given environment.\n *\n * The strategy is to return the most modern, and if not, the most common:\n * - The `globalThis` variable is the modern approach to accessing the global scope\n * - The `window` variable is the global scope in a web browser\n * - The `self` variable is the global scope in workers and others\n * - The `global` variable is the global scope in Node.js\n */\nfunction getGlobalScope() {\n if (typeof globalThis !== 'undefined') return globalThis\n if (typeof window !== 'undefined') return window\n if (typeof self !== 'undefined') return self\n if (typeof global !== 'undefined') return global\n\n throw new Error('@sanity/ui: could not locate global scope')\n}\n\nexport const globalScope = getGlobalScope() as any\n","import {createContext} from 'react'\nimport {globalScope} from '../lib/globalScope'\nimport {ThemeContextValue} from './types'\n\nconst key = Symbol.for('@sanity/ui/context/theme')\n\nglobalScope[key] = globalScope[key] || createContext<ThemeContextValue | null>(null)\n\n/**\n * @internal\n */\nexport const ThemeContext: React.Context<ThemeContextValue | null> = globalScope[key]\n","import React, {useContext, useMemo} from 'react'\nimport {ThemeProvider as StyledThemeProvider} from 'styled-components'\nimport {DEFAULT_THEME_LAYER} from './defaults'\nimport {ThemeColorSchemeKey, ThemeColorName} from './lib/theme'\nimport {ThemeContext} from './themeContext'\nimport {RootTheme, Theme, ThemeContextValue} from './types'\n\n/**\n * @public\n */\nexport interface ThemeProviderProps {\n children?: React.ReactNode\n scheme?: ThemeColorSchemeKey\n theme?: RootTheme\n tone?: ThemeColorName\n}\n\n/**\n * @public\n */\nexport function ThemeProvider(props: ThemeProviderProps): React.ReactElement {\n const parentTheme = useContext(ThemeContext)\n const {\n children,\n scheme = parentTheme?.scheme || 'light',\n theme: themeProp = parentTheme?.theme || null,\n tone = parentTheme?.tone || 'default',\n } = props\n\n const theme: Theme | null = useMemo(() => {\n if (!themeProp) return null\n\n const {color: rootColor, layer: rootLayer, ...restTheme} = themeProp\n const colorScheme = rootColor[scheme] || rootColor.light\n const color = colorScheme[tone] || colorScheme.default\n const layer = rootLayer || DEFAULT_THEME_LAYER\n\n return {sanity: {...restTheme, color, layer}}\n }, [scheme, themeProp, tone])\n\n const value: ThemeContextValue | null = useMemo(\n () =>\n themeProp && {\n version: 0.0,\n theme: themeProp,\n scheme,\n tone,\n },\n [themeProp, scheme, tone]\n )\n\n if (!theme) {\n return <pre>ThemeProvider: no \"theme\" property provided</pre>\n }\n\n return (\n <ThemeContext.Provider value={value}>\n <StyledThemeProvider theme={theme}>{children}</StyledThemeProvider>\n </ThemeContext.Provider>\n )\n}\n","export function isRecord(value: unknown): value is Record<string, unknown> {\n return Boolean(value && typeof value === 'object')\n}\n","import {useContext} from 'react'\nimport {isRecord} from '../lib/isRecord'\nimport {ThemeContext} from './themeContext'\nimport {ThemeContextValue} from './types'\n\n/**\n * @public\n */\nexport function useRootTheme(): ThemeContextValue {\n const value: unknown = useContext(ThemeContext)\n\n if (!value) {\n throw new Error('useRootTheme(): missing context value')\n }\n\n // NOTE: This check is for future-compatiblity\n // - If the value is not an object, it’s not compatible with the current version\n // - If the value is an object, but doesn’t have `version: 0.0`, it’s not compatible with the current version\n if (!isRecord(value) || value.version !== 0.0) {\n throw new Error('useRootTheme(): the context value is not compatible')\n }\n\n return value as any as ThemeContextValue\n}\n","import React from 'react'\nimport {ThemeColorName, ThemeColorSchemeKey} from './lib/theme'\nimport {ThemeProvider} from './themeProvider'\nimport {useRootTheme} from './useRootTheme'\n\n/**\n * @public\n */\nexport interface ThemeColorProviderProps {\n children?: React.ReactNode\n scheme?: ThemeColorSchemeKey\n tone?: ThemeColorName\n}\n\n/**\n * @public\n */\nexport function ThemeColorProvider(props: ThemeColorProviderProps): React.ReactElement {\n const {children, scheme, tone} = props\n const root = useRootTheme()\n\n return (\n <ThemeProvider scheme={scheme || root.scheme} theme={root.theme} tone={tone}>\n {children}\n </ThemeProvider>\n )\n}\n","import {useTheme as useStyledTheme} from 'styled-components'\n\nimport {Theme} from './types'\n\n/**\n * @public\n */\nexport function useTheme(): Theme {\n return useStyledTheme() as Theme\n}\n","/**\n * @internal\n */\nexport interface _MediaManager {\n getCurrentIndex: () => number\n subscribe: (subscriber: (index: number) => void) => () => void\n}\n\nconst MEDIA_MANAGER_CACHE = new WeakMap<number[], _MediaManager>()\n\nfunction _getMediaQuery(media: number[], index: number) {\n if (index === 0) {\n return `screen and (max-width: ${media[index] - 1}px)`\n }\n\n if (index === media.length) {\n return `screen and (min-width: ${media[index - 1]}px)`\n }\n\n return `screen and (min-width: ${media[index - 1]}px) and (max-width: ${media[index] - 1}px)`\n}\n\nfunction _createMediaManager(media: number[]): _MediaManager {\n const mediaLen = media.length\n const sizes: {mq: MediaQueryList; index: number}[] = []\n\n if (typeof window !== 'undefined') {\n for (let index = mediaLen; index > -1; index -= 1) {\n const mediaQuery = _getMediaQuery(media, index)\n\n sizes.push({index, mq: window.matchMedia(mediaQuery)})\n }\n }\n\n const getCurrentIndex = () => {\n for (const {index, mq} of sizes) {\n if (mq.matches) return index\n }\n\n return 0\n }\n\n const subscribe = (subscriber: (index: number) => void) => {\n const disposeFns: (() => void)[] = []\n\n for (const {index, mq} of sizes) {\n const handleChange = () => {\n if (mq.matches) subscriber(index)\n }\n\n if (mq.addEventListener) {\n mq.addEventListener('change', handleChange)\n } else {\n mq.addListener(handleChange)\n }\n\n disposeFns.push(() => {\n if (mq.removeEventListener) {\n mq.removeEventListener('change', handleChange)\n } else {\n mq.removeListener(handleChange)\n }\n })\n }\n\n return () => {\n for (const disposeFn of disposeFns) {\n disposeFn()\n }\n }\n }\n\n return {getCurrentIndex, subscribe}\n}\n\n/**\n * @internal\n */\nexport function _getMediaManager(media: number[]): _MediaManager {\n let manager = MEDIA_MANAGER_CACHE.get(media)\n\n if (!manager) {\n manager = _createMediaManager(media)\n MEDIA_MANAGER_CACHE.set(media, manager)\n }\n\n return manager\n}\n","import {useEffect, useMemo, useState} from 'react'\nimport {useTheme} from '../../theme'\nimport {_getMediaManager} from './lib/media'\n\n/**\n * This API might change. DO NOT USE IN PRODUCTION.\n * @beta\n */\nexport function useMediaIndex(): number {\n const theme = useTheme()\n const {media} = theme.sanity\n const manager = useMemo(() => _getMediaManager(media), [media])\n const [index, setIndex] = useState(manager.getCurrentIndex)\n\n useEffect(() => manager.subscribe(setIndex), [manager])\n\n return index\n}\n","import {useEffect, useMemo, useState} from 'react'\n\n/**\n * @public\n */\nexport function usePrefersDark(): boolean {\n const mq = useMemo(() => {\n if (typeof window === 'undefined') return undefined\n\n return window.matchMedia('(prefers-color-scheme: dark)')\n }, [])\n\n const [dark, setDark] = useState(mq?.matches || false)\n\n useEffect(() => {\n if (!mq) return undefined\n\n setDark(mq.matches)\n\n const handleChange = () => setDark(mq.matches)\n\n mq.addEventListener('change', handleChange)\n\n return () => mq.removeEventListener('change', handleChange)\n }, [mq])\n\n return dark\n}\n","import {useEffect, useLayoutEffect} from 'react'\n\n/**\n * @beta\n */\nexport const useIsomorphicEffect = typeof window !== 'undefined' ? useLayoutEffect : useEffect\n","import React, {useRef} from 'react'\nimport {useIsomorphicEffect} from './useIsomorphicEffect'\n\n/**\n * @beta\n */\nexport function useForwardedRef<T>(ref: React.ForwardedRef<T>): React.MutableRefObject<T | null> {\n const innerRef = useRef<T | null>(null)\n\n useIsomorphicEffect(() => {\n if (!ref) return\n\n if (typeof ref === 'function') {\n ref(innerRef.current)\n } else {\n ref.current = innerRef.current\n }\n })\n\n return innerRef\n}\n","import {useEffect} from 'react'\n\n/**\n * @beta\n */\nexport function useCustomValidity(\n ref: {current: null | {setCustomValidity: (validity: string) => void}},\n customValidity: string | undefined\n): void {\n useEffect(() => {\n if (ref.current) {\n ref.current.setCustomValidity(customValidity || '')\n }\n }, [customValidity, ref])\n}\n","import {CSSObject} from 'styled-components'\nimport {_responsive} from '../helpers'\nimport {ThemeProps} from '../types'\nimport {ResponsiveBorderStyleProps} from './types'\n\nconst BORDER_VALUE = '1px solid var(--card-border-color)'\n\nexport function responsiveBorderStyle(): Array<\n (props: ResponsiveBorderStyleProps & ThemeProps) => CSSObject[]\n> {\n return [border, borderTop, borderRight, borderBottom, borderLeft]\n}\n\nfunction border(props: ResponsiveBorderStyleProps & ThemeProps) {\n const {theme} = props\n const {media} = theme.sanity\n\n return _responsive(media, props.$border, (value) =>\n value ? {'&&': {border: BORDER_VALUE}} : {'&&': {border: 0}}\n )\n}\n\nfunction borderTop(props: ResponsiveBorderStyleProps & ThemeProps) {\n const {theme} = props\n const {media} = theme.sanity\n\n return _responsive(media, props.$borderTop, (value) =>\n value ? {'&&': {borderTop: BORDER_VALUE}} : {'&&': {borderTop: 0}}\n )\n}\n\nfunction borderRight(props: ResponsiveBorderStyleProps & ThemeProps) {\n const {theme} = props\n const {media} = theme.sanity\n\n return _responsive(media, props.$borderRight, (value) =>\n value ? {'&&': {borderRight: BORDER_VALUE}} : {'&&': {borderRight: 0}}\n )\n}\n\nfunction borderBottom(props: ResponsiveBorderStyleProps & ThemeProps) {\n const {theme} = props\n const {media} = theme.sanity\n\n return _responsive(media, props.$borderBottom, (value) =>\n value ? {'&&': {borderBottom: BORDER_VALUE}} : {'&&': {borderBottom: 0}}\n )\n}\n\nfunction borderLeft(props: ResponsiveBorderStyleProps & ThemeProps) {\n const {theme} = props\n const {media} = theme.sanity\n\n return _responsive(media, props.$borderLeft, (value) =>\n value ? {'&&': {borderLeft: BORDER_VALUE}} : {'&&': {borderLeft: 0}}\n )\n}\n","import {Property} from 'csstype'\nimport {CSSObject} from 'styled-components'\nimport {_responsive} from '../helpers'\nimport {ThemeProps} from '../types'\nimport {ResponsiveBoxStyleProps} from './types'\n\nconst BASE_STYLE: CSSObject = {\n '&[data-as=\"ul\"],&[data-as=\"ol\"]': {\n listStyle: 'none',\n },\n}\n\nconst BOX_SIZING: {[key: string]: Property.BoxSizing} = {\n content: 'content-box',\n border: 'border-box',\n}\n\nconst BOX_HEIGHT = {\n stretch: 'stretch',\n fill: '100%',\n}\n\nexport function boxStyle(): CSSObject {\n return BASE_STYLE\n}\n\nexport function responsiveBoxStyle(): Array<\n (props: ResponsiveBoxStyleProps & ThemeProps) => CSSObject[]\n> {\n return [\n responsiveBoxSizingStyle,\n responsiveBoxHeightStyle,\n responsiveBoxOverflowStyle,\n responsiveBoxDisplayStyle,\n ]\n}\n\nfunction responsiveBoxDisplayStyle(props: ResponsiveBoxStyleProps & ThemeProps) {\n const {theme} = props\n const {media} = theme.sanity\n\n return _responsive(media, props.$display, (display) => ({\n '&:not([hidden])': {display},\n }))\n}\n\nfunction responsiveBoxSizingStyle(props: ResponsiveBoxStyleProps & ThemeProps) {\n const {theme} = props\n const {media} = theme.sanity\n\n return _responsive(media, props.$sizing, (sizing) => ({\n boxSizing: BOX_SIZING[sizing],\n }))\n}\n\nfunction responsiveBoxHeightStyle(props: ResponsiveBoxStyleProps & ThemeProps) {\n const {theme} = props\n const {media} = theme.sanity\n\n return _responsive(media, props.$height, (height) => ({\n height: BOX_HEIGHT[height],\n }))\n}\n\nfunction responsiveBoxOverflowStyle(props: ResponsiveBoxStyleProps & ThemeProps) {\n const {theme} = props\n const {media} = theme.sanity\n\n return _responsive(media, props.$overflow, (overflow) => ({\n overflow,\n }))\n}\n","import {CSSObject} from 'styled-components'\nimport {rem, _responsive} from '../helpers'\nimport {ThemeProps} from '../types'\nimport {ResponsiveFlexStyleProps} from './types'\n\nconst BASE_STYLE: CSSObject = {\n '&&:not([hidden])': {\n display: 'flex',\n },\n}\n\nexport function responsiveFlexStyle(): Array<\n CSSObject | ((props: ResponsiveFlexStyleProps & ThemeProps) => CSSObject[])\n> {\n return [\n BASE_STYLE,\n responsiveFlexAlignStyle,\n responsiveFlexGapStyle,\n responsiveFlexWrapStyle,\n responsiveFlexJustifyStyle,\n responsiveFlexDirectionStyle,\n ]\n}\n\nexport function responsiveFlexAlignStyle(\n props: ResponsiveFlexStyleProps & ThemeProps\n): CSSObject[] {\n const {theme} = props\n const {media} = theme.sanity\n\n return _responsive(media, props.$align, (align) => {\n return {alignItems: align}\n })\n}\n\nfunction responsiveFlexGapStyle(props: ResponsiveFlexStyleProps & ThemeProps) {\n const {theme} = props\n const {media, space} = theme.sanity\n\n return _responsive(media, props.$gap, (gap) => ({\n gap: gap ? rem(space[gap]) : undefined,\n }))\n}\n\nexport function responsiveFlexWrapStyle(props: ResponsiveFlexStyleProps & ThemeProps): CSSObject[] {\n const {theme} = props\n const {media} = theme.sanity\n\n return _responsive(media, props.$wrap, (wrap) => {\n return {flexWrap: wrap}\n })\n}\n\nexport function responsiveFlexJustifyStyle(\n props: ResponsiveFlexStyleProps & ThemeProps\n): CSSObject[] {\n const {theme} = props\n const {media} = theme.sanity\n\n return _responsive(media, props.$justify, (justify) => {\n return {justifyContent: justify}\n })\n}\n\nexport function responsiveFlexDirectionStyle(\n props: ResponsiveFlexStyleProps & ThemeProps\n): CSSObject[] {\n const {theme} = props\n const {media} = theme.sanity\n\n return _responsive(media, props.$direction, (direction) => {\n return {flexDirection: direction}\n })\n}\n","import {CSSObject} from 'styled-components'\nimport {EMPTY_ARRAY} from '../../constants'\nimport {_responsive} from '../helpers'\nimport {ThemeProps} from '../types'\nimport {ResponsiveFlexItemStyleProps} from './types'\n\nconst BASE_STYLE: CSSObject = {\n minWidth: 0,\n minHeight: 0,\n}\n\nexport function flexItemStyle(): Array<\n CSSObject | ((props: ResponsiveFlexItemStyleProps & ThemeProps) => CSSObject[])\n> {\n return [BASE_STYLE, responsiveFlexItemStyle]\n}\n\nexport function responsiveFlexItemStyle(\n props: ResponsiveFlexItemStyleProps & ThemeProps\n): CSSObject[] {\n const {theme} = props\n const {media} = theme.sanity\n\n if (!props.$flex) return EMPTY_ARRAY\n\n return _responsive(media, props.$flex, (flex) => ({flex}))\n}\n","export function focusRingBorderStyle(border: {color: string; width: number}): string {\n return `inset 0 0 0 ${border.width}px ${border.color}`\n}\n\nexport function focusRingStyle(opts: {\n base?: {bg: string}\n border?: {color: string; width: number}\n focusRing: {offset: number; width: number}\n}): string {\n const {base, border, focusRing} = opts\n const focusRingOutsetWidth = focusRing.offset + focusRing.width\n const focusRingInsetWidth = 0 - focusRing.offset\n const bgColor = base ? base.bg : 'var(--card-bg-color)'\n\n return [\n focusRingInsetWidth > 0 && `inset 0 0 0 ${focusRingInsetWidth}px var(--card-focus-ring-color)`,\n border && focusRingBorderStyle(border),\n focusRingInsetWidth < 0 && `0 0 0 ${0 - focusRingInsetWidth}px ${bgColor}`,\n focusRingOutsetWidth > 0 && `0 0 0 ${focusRingOutsetWidth}px var(--card-focus-ring-color)`,\n ]\n .filter(Boolean)\n .join(',')\n}\n","import {CSSObject} from 'styled-components'\nimport {rem, _responsive} from '../helpers'\nimport {ThemeProps} from '../types'\nimport {ResponsiveGridStyleProps} from './types'\n\nconst GRID_CSS = {\n '&&:not([hidden])': {\n display: 'grid',\n },\n '&[data-as=\"ul\"],&[data-as=\"ol\"]': {\n listStyle: 'none',\n },\n}\n\nconst GRID_AUTO_COLUMS = {\n auto: 'auto',\n min: 'min-content',\n max: 'max-content',\n fr: 'minmax(0, 1fr)',\n}\n\nconst GRID_AUTO_ROWS = {\n auto: 'auto',\n min: 'min-content',\n max: 'max-content',\n fr: 'minmax(0, 1fr)',\n}\n\nexport function responsiveGridStyle(): Array<\n CSSObject | ((props: ResponsiveGridStyleProps & ThemeProps) => CSSObject[])\n> {\n return [\n GRID_CSS,\n responsiveGridAutoFlowStyle,\n responsiveGridAutoRowsStyle,\n responsiveGridAutoColsStyle,\n responsiveGridColumnsStyle,\n responsiveGridRowsStyle,\n responsiveGridGapStyle,\n responsiveGridGapXStyle,\n responsiveGridGapYStyle,\n ]\n}\n\nfunction responsiveGridAutoFlowStyle(props: ResponsiveGridStyleProps & ThemeProps) {\n const {theme} = props\n const {media} = theme.sanity\n\n return _responsive(media, props.$autoFlow, (autoFlow) => ({\n gridAutoFlow: autoFlow,\n }))\n}\n\nfunction responsiveGridAutoRowsStyle(props: ResponsiveGridStyleProps & ThemeProps) {\n const {theme} = props\n const {media} = theme.sanity\n\n return _responsive(media, props.$autoRows, (autoRows) => ({\n gridAutoRows: autoRows && GRID_AUTO_ROWS[autoRows],\n }))\n}\n\nfunction responsiveGridAutoColsStyle(props: ResponsiveGridStyleProps & ThemeProps) {\n const {theme} = props\n const {media} = theme.sanity\n\n return _responsive(media, props.$autoCols, (autoCols) => ({\n gridAutoColumns: autoCols && GRID_AUTO_COLUMS[autoCols],\n }))\n}\n\nfunction responsiveGridColumnsStyle(props: ResponsiveGridStyleProps & ThemeProps) {\n const {theme} = props\n const {media} = theme.sanity\n\n return _responsive(media, props.$columns, (columns) => ({\n gridTemplateColumns: columns && `repeat(${columns},minmax(0,1fr));`,\n }))\n}\n\nfunction responsiveGridRowsStyle(props: ResponsiveGridStyleProps & ThemeProps) {\n const {theme} = props\n const {media} = theme.sanity\n\n return _responsive(media, props.$rows, (rows) => ({\n gridTemplateRows: rows && `repeat(${rows},minmax(0,1fr));`,\n }))\n}\n\nfunction responsiveGridGapStyle(props: ResponsiveGridStyleProps & ThemeProps) {\n const {theme} = props\n const {media, space} = theme.sanity\n\n return _responsive(media, props.$gap, (gap) => ({\n gridGap: gap ? rem(space[gap]) : undefined,\n }))\n}\n\nfunction responsiveGridGapXStyle(props: ResponsiveGridStyleProps & ThemeProps) {\n const {theme} = props\n const {media, space} = theme.sanity\n\n return _responsive(media, props.$gapX, (gapX) => ({\n columnGap: gapX ? rem(space[gapX]) : undefined,\n }))\n}\n\nfunction responsiveGridGapYStyle(props: ResponsiveGridStyleProps & ThemeProps) {\n const {theme} = props\n const {media, space} = theme.sanity\n\n return _responsive(media, props.$gapY, (gapY) => ({\n rowGap: gapY ? rem(space[gapY]) : undefined,\n }))\n}\n","import {CSSObject} from 'styled-components'\nimport {_responsive} from '../helpers'\nimport {ThemeProps} from '../types'\nimport {ResponsiveGridItemStyleProps} from './types'\n\nexport function responsiveGridItemStyle(): Array<\n (props: ResponsiveGridItemStyleProps & ThemeProps) => CSSObject[]\n> {\n return [\n responsiveGridItemRowStyle,\n responsiveGridItemRowStartStyle,\n responsiveGridItemRowEndStyle,\n responsiveGridItemColumnStyle,\n responsiveGridItemColumnStartStyle,\n responsiveGridItemColumnEndStyle,\n ]\n}\n\nconst GRID_ITEM_ROW = {\n auto: 'auto',\n full: '1 / -1',\n}\n\nconst GRID_ITEM_COLUMN = {\n auto: 'auto',\n full: '1 / -1',\n}\n\nfunction responsiveGridItemRowStyle(props: ResponsiveGridItemStyleProps & ThemeProps) {\n const {theme} = props\n const {media} = theme.sanity\n\n return _responsive(media, props.$row, (row) => {\n if (typeof row === 'number') {\n return {gridRow: `span ${row} / span ${row}`}\n }\n\n return {gridRow: GRID_ITEM_ROW[row]}\n })\n}\n\nfunction responsiveGridItemRowStartStyle(props: ResponsiveGridItemStyleProps & ThemeProps) {\n const {theme} = props\n const {media} = theme.sanity\n\n return _responsive(media, props.$rowStart, (rowStart) => ({\n gridRowStart: rowStart,\n }))\n}\n\nfunction responsiveGridItemRowEndStyle(props: ResponsiveGridItemStyleProps & ThemeProps) {\n const {theme} = props\n const {media} = theme.sanity\n\n return _responsive(media, props.$rowEnd, (rowEnd) => ({gridRowEnd: rowEnd}))\n}\n\nfunction responsiveGridItemColumnStyle(props: ResponsiveGridItemStyleProps & ThemeProps) {\n const {theme} = props\n const {media} = theme.sanity\n\n return _responsive(media, props.$column, (column) => {\n if (typeof column === 'number') {\n return {gridColumn: `span ${column} / span ${column}`}\n }\n\n return {gridColumn: GRID_ITEM_COLUMN[column]}\n })\n}\n\nfunction responsiveGridItemColumnStartStyle(props: ResponsiveGridItemStyleProps & ThemeProps) {\n const {theme} = props\n const {media} = theme.sanity\n\n return _responsive(media, props.$columnStart, (columnStart) => ({\n gridColumnStart: columnStart,\n }))\n}\n\nfunction responsiveGridItemColumnEndStyle(props: ResponsiveGridItemStyleProps & ThemeProps) {\n const {theme} = props\n const {media} = theme.sanity\n\n return _responsive(media, props.$columnEnd, (columnEnd) => ({\n gridColumnEnd: columnEnd,\n }))\n}\n","import {CSSObject} from 'styled-components'\nimport {rem, _responsive} from '../helpers'\nimport {ThemeProps} from '../types'\n\nexport interface TextInputResponsivePaddingStyleProps {\n $fontSize: number[]\n $iconLeft?: boolean\n $iconRight?: boolean\n $padding: number[]\n $space: number[]\n}\n\nexport function responsiveInputPaddingStyle(\n props: TextInputResponsivePaddingStyleProps & ThemeProps\n): CSSObject[] {\n const {$fontSize, $iconLeft, $iconRight, $padding, $space, theme} = props\n const {fonts, media, space: spaceScale} = theme.sanity\n const len = Math.max($padding.length, $space.length, $fontSize.length)\n const _padding: number[] = []\n const _space: number[] = []\n const _fontSize: number[] = []\n\n for (let i = 0; i < len; i += 1) {\n _fontSize[i] = $fontSize[i] === undefined ? _fontSize[i - 1] : $fontSize[i]\n _padding[i] = $padding[i] === undefined ? _padding[i - 1] : $padding[i]\n _space[i] = $space[i] === undefined ? _space[i - 1] : $space[i]\n }\n\n return _responsive(media, _padding, (_, i) => {\n const size = fonts.text.sizes[_fontSize[i]] || fonts.text.sizes[2]\n const emSize = size.lineHeight - size.ascenderHeight - size.descenderHeight\n const p = spaceScale[_padding[i]]\n const s = spaceScale[_space[i]]\n\n const styles = {\n paddingTop: rem(p - size.ascenderHeight),\n paddingRight: rem(p),\n paddingBottom: rem(p - size.descenderHeight),\n paddingLeft: rem(p),\n }\n\n if ($iconRight) styles.paddingRight = rem(p + emSize + s)\n if ($iconLeft) styles.paddingLeft = rem(p + emSize + s)\n\n return styles\n })\n}\n\nexport function responsiveInputPaddingIconsStyle(\n props: {\n $fontSize: number[]\n $padding: number[]\n $space: number[]\n } & ThemeProps\n): CSSObject[] {\n return responsiveInputPaddingStyle({...props, $iconLeft: true, $iconRight: true})\n}\n\nexport function responsiveInputPaddingIconLeftStyle(\n props: {\n $fontSize: number[]\n $padding: number[]\n $space: number[]\n } & ThemeProps\n): CSSObject[] {\n return responsiveInputPaddingStyle({...props, $iconLeft: true})\n}\n\nexport function responsiveInputPaddingIconRightStyle(\n props: {\n $fontSize: number[]\n $padding: number[]\n $space: number[]\n } & ThemeProps\n): CSSObject[] {\n return responsiveInputPaddingStyle({...props, $iconRight: true})\n}\n","import {css, CSSObject, FlattenSimpleInterpolation} from 'styled-components'\nimport {ThemeColorSchemeKey, ThemeFontWeightKey} from '../../theme'\nimport {CardTone} from '../../types'\nimport {focusRingBorderStyle, focusRingStyle} from '../focusRing'\nimport {rem, _responsive} from '../helpers'\nimport {ThemeProps} from '../types'\n\n/**\n * @internal\n */\nexport interface TextInputInputStyleProps {\n $fontSize: number[]\n $scheme: ThemeColorSchemeKey\n $tone: CardTone\n $weight?: ThemeFontWeightKey\n}\n\n/**\n * @internal\n */\nexport interface TextInputRepresentationStyleProps {\n $border?: boolean\n $hasPrefix?: boolean\n $hasSuffix?: boolean\n $scheme: ThemeColorSchemeKey\n $tone: CardTone\n}\n\nconst ROOT_STYLE = css`\n &:not([hidden]) {\n display: flex;\n }\n\n align-items: center;\n`\n\nexport function textInputRootStyle(): FlattenSimpleInterpolation {\n return ROOT_STYLE\n}\n\nexport function textInputBaseStyle(\n props: TextInputInputStyleProps & ThemeProps\n): FlattenSimpleInterpolation {\n const {theme, $scheme, $tone, $weight} = props\n const font = theme.sanity.fonts.text\n const color = theme.sanity.color.input\n\n return css`\n appearance: none;\n background: none;\n border: 0;\n border-radius: 0;\n outline: none;\n width: 100%;\n box-sizing: border-box;\n font-family: ${font.family};\n font-weight: ${($weight && font.weights[$weight]) || font.weights.regular};\n margin: 0;\n position: relative;\n z-index: 1;\n display: block;\n\n /* NOTE: This is a hack to disable Chrome’s autofill styles */\n &:-webkit-autofill,\n &:-webkit-autofill:hover,\n &:-webkit-autofill:focus,\n &:-webkit-autofill:active {\n -webkit-text-fill-color: var(--input-fg-color) !important;\n transition: background-color 5000s;\n transition-delay: 86400s /* 24h */;\n }\n\n /* &:is(textarea) */\n &[data-as='textarea'] {\n resize: none;\n }\n\n color: var(--input-fg-color);\n\n &::placeholder {\n color: var(--input-placeholder-color);\n }\n\n &[data-scheme='${$scheme}'][data-tone='${$tone}'] {\n --input-fg-color: ${color.default.enabled.fg};\n --input-placeholder-color: ${color.default.enabled.placeholder};\n\n /* enabled */\n &:not(:invalid):not(:disabled):not(:read-only) {\n --input-fg-color: ${color.default.enabled.fg};\n --input-placeholder-color: ${color.default.enabled.placeholder};\n }\n\n /* disabled */\n &:not(:invalid):disabled {\n --input-fg-color: ${color.default.disabled.fg};\n --input-placeholder-color: ${color.default.disabled.placeholder};\n }\n\n /* invalid */\n &:invalid {\n --input-fg-color: ${color.invalid.enabled.fg};\n --input-placeholder-color: ${color.invalid.enabled.placeholder};\n }\n\n /* readOnly */\n &:read-only {\n --input-fg-color: ${color.default.readOnly.fg};\n --input-placeholder-color: ${color.default.readOnly.placeholder};\n }\n }\n `\n}\n\nexport function textInputFontSizeStyle(props: TextInputInputStyleProps & ThemeProps): CSSObject[] {\n const {theme} = props\n const {fonts, media} = theme.sanity\n\n return _responsive(media, props.$fontSize, (sizeIndex) => {\n const size = fonts.text.sizes[sizeIndex] || fonts.text.sizes[2]\n\n return {\n fontSize: rem(size.fontSize),\n lineHeight: size.lineHeight / size.fontSize,\n }\n })\n}\n\nexport function textInputRepresentationStyle(\n props: TextInputRepresentationStyleProps & ThemeProps\n): FlattenSimpleInterpolation {\n const {$border, $hasPrefix, $hasSuffix, $scheme, $tone, theme} = props\n const {focusRing, input} = theme.sanity\n const color = theme.sanity.color.input\n\n return css`\n --input-box-shadow: none;\n\n position: absolute;\n top: 0;\n left: 0;\n right: 0;\n bottom: 0;\n display: block;\n pointer-events: none;\n z-index: 0;\n\n background-color: var(--card-bg-color);\n box-shadow: var(--input-box-shadow);\n\n border-top-left-radius: ${$hasPrefix ? 0 : undefined};\n border-bottom-left-radius: ${$hasPrefix ? 0 : undefined};\n border-top-right-radius: ${$hasSuffix ? 0 : undefined};\n border-bottom-right-radius: ${$hasSuffix ? 0 : undefined};\n\n &[data-scheme='${$scheme}'][data-tone='${$tone}'] {\n --card-bg-color: ${color.default.enabled.bg};\n --card-fg-color: ${color.default.enabled.fg};\n\n /* enabled */\n *:not(:disabled) + & {\n --input-box-shadow: ${$border\n ? focusRingBorderStyle({color: color.default.enabled.border, width: input.border.width})\n : undefined};\n }\n\n /* invalid */\n *:not(:disabled):invalid + & {\n --card-bg-color: ${color.invalid.enabled.bg};\n --card-fg-color: ${color.invalid.enabled.fg};\n --input-box-shadow: ${$border\n ? focusRingBorderStyle({color: color.invalid.enabled.border, width: input.border.width})\n : 'none'};\n }\n\n /* focused */\n *:not(:disabled):focus + & {\n --input-box-shadow: ${focusRingStyle({\n border: $border\n ? {color: color.default.enabled.border, width: input.border.width}\n : undefined,\n focusRing,\n })};\n }\n\n /* disabled */\n *:disabled + & {\n --card-bg-color: ${color.default.disabled.bg} !important;\n --card-fg-color: ${color.default.disabled.fg} !important;\n --input-box-shadow: ${$border\n ? focusRingBorderStyle({\n color: color.default.disabled.border,\n width: input.border.width,\n })\n : 'none'};\n }\n\n /* readOnly */\n *:read-only + & {\n --card-bg-color: ${color.default.readOnly.bg} !important;\n --card-fg-color: ${color.default.readOnly.fg} !important;\n }\n\n /* hovered */\n @media (hover: hover) {\n *:not(:disabled):not(:read-only):not(:invalid):hover + & {\n --card-bg-color: ${color.default.hovered.bg};\n --card-fg-color: ${color.default.hovered.fg};\n }\n\n *:not(:disabled):not(:read-only):not(:invalid):not(:focus):hover + & {\n --input-box-shadow: ${$border\n ? focusRingBorderStyle({\n color: color.default.hovered.border,\n width: input.border.width,\n })\n : 'none'};\n }\n }\n }\n `\n}\n","import {CSSObject} from 'styled-components'\nimport {_getResponsiveSpace} from '../helpers'\nimport {ThemeProps} from '../types'\nimport {ResponsiveMarginStyleProps} from './types'\n\nexport function responsiveMarginStyle(\n props: ResponsiveMarginStyleProps & ThemeProps\n): CSSObject[][] {\n const {theme} = props\n\n return [\n _getResponsiveSpace(theme, ['margin'], props.$margin),\n _getResponsiveSpace(theme, ['marginLeft', 'marginRight'], props.$marginX),\n _getResponsiveSpace(theme, ['marginTop', 'marginBottom'], props.$marginY),\n _getResponsiveSpace(theme, ['marginTop'], props.$marginTop),\n _getResponsiveSpace(theme, ['marginRight'], props.$marginRight),\n _getResponsiveSpace(theme, ['marginBottom'], props.$marginBottom),\n _getResponsiveSpace(theme, ['marginLeft'], props.$marginLeft),\n ].filter(Boolean) as CSSObject[][]\n}\n","import {CSSObject} from 'styled-components'\nimport {_getResponsiveSpace} from '../helpers'\nimport {ThemeProps} from '../types'\nimport {ResponsivePaddingStyleProps} from './types'\n\nexport function responsivePaddingStyle(\n props: ResponsivePaddingStyleProps & ThemeProps\n): CSSObject[][] {\n const {theme} = props\n\n return [\n _getResponsiveSpace(theme, ['padding'], props.$padding),\n _getResponsiveSpace(theme, ['paddingLeft', 'paddingRight'], props.$paddingX),\n _getResponsiveSpace(theme, ['paddingTop', 'paddingBottom'], props.$paddingY),\n _getResponsiveSpace(theme, ['paddingTop'], props.$paddingTop),\n _getResponsiveSpace(theme, ['paddingRight'], props.$paddingRight),\n _getResponsiveSpace(theme, ['paddingBottom'], props.$paddingBottom),\n _getResponsiveSpace(theme, ['paddingLeft'], props.$paddingLeft),\n ].filter(Boolean) as CSSObject[][]\n}\n","import {CSSObject} from 'styled-components'\nimport {rem, _responsive} from '../helpers'\nimport {ThemeProps} from '../types'\nimport {ResponsiveRadiusStyleProps} from './types'\n\nexport function responsiveRadiusStyle(props: ResponsiveRadiusStyleProps & ThemeProps): CSSObject[] {\n const {theme} = props\n const {media, radius} = theme.sanity\n\n return _responsive(media, props.$radius, (radiusIndex) => ({\n borderRadius: rem(radius[radiusIndex]),\n }))\n}\n","import {CSSObject} from 'styled-components'\nimport {EMPTY_RECORD} from '../../constants'\nimport {BoxShadow, ThemeShadow} from '../../theme'\nimport {rem, _responsive} from '../helpers'\nimport {ThemeProps} from '../types'\nimport {ResponsiveShadowStyleProps} from './types'\n\nfunction toBoxShadow(shadow: BoxShadow, color: string) {\n return `${shadow.map(rem).join(' ')} ${color}`\n}\n\nfunction shadowStyle(shadow: ThemeShadow | null): CSSObject {\n if (!shadow) return EMPTY_RECORD\n\n const outline = `0 0 0 ${rem(1)} var(--card-shadow-outline-color)`\n const umbra = toBoxShadow(shadow.umbra, 'var(--card-shadow-umbra-color)')\n const penumbra = toBoxShadow(shadow.penumbra, 'var(--card-shadow-penumbra-color)')\n const ambient = toBoxShadow(shadow.ambient, 'var(--card-shadow-ambient-color)')\n\n return {boxShadow: `${outline}, ${umbra}, ${penumbra}, ${ambient}`}\n}\n\nexport function responsiveShadowStyle(props: ResponsiveShadowStyleProps & ThemeProps): CSSObject[] {\n const {theme} = props\n const {media, shadows} = theme.sanity\n\n return _responsive(media, props.$shadow, (shadow) => shadowStyle(shadows[shadow]))\n}\n","import {css, FlattenSimpleInterpolation} from 'styled-components'\nimport {ThemeProps} from '../../styles'\n\nexport function textBaseStyle(\n props: {$accent?: boolean; $muted?: boolean} & ThemeProps\n): FlattenSimpleInterpolation {\n const {$accent, $muted, theme} = props\n const {weights} = theme.sanity.fonts.text\n\n return css`\n color: var(--card-fg-color);\n\n ${$accent &&\n css`\n color: var(--card-accent-fg-color);\n `}\n\n ${$muted &&\n css`\n color: var(--card-muted-fg-color);\n `}\n\n & code {\n font-family: ${theme.sanity.fonts.code.family};\n border-radius: 1px;\n background-color: var(--card-code-bg-color);\n color: var(--card-code-fg-color);\n }\n\n & a {\n text-decoration: none;\n border-radius: 1px;\n color: var(--card-link-color);\n outline: none;\n\n @media (hover: hover) {\n &:hover {\n text-decoration: underline;\n }\n }\n\n &:focus {\n box-shadow: 0 0 0 1px var(--card-bg-color), 0 0 0 3px var(--card-focus-ring-color);\n }\n\n &:focus:not(:focus-visible) {\n box-shadow: none;\n }\n }\n\n & strong {\n font-weight: ${weights.bold};\n }\n\n & [data-sanity-icon] {\n vertical-align: baseline;\n }\n `\n}\n","import React, {forwardRef} from 'react'\nimport styled from 'styled-components'\nimport {useArrayProp} from '../../hooks'\nimport {\n ResponsiveFontStyleProps,\n responsiveTextAlignStyle,\n responsiveTextFont,\n} from '../../styles/internal'\nimport {ThemeFontWeightKey} from '../../theme'\nimport {TextAlign} from '../../types'\nimport {textBaseStyle} from './styles'\n\n/**\n * @public\n */\nexport interface TextProps {\n accent?: boolean\n align?: TextAlign | TextAlign[]\n as?: React.ElementType | keyof JSX.IntrinsicElements\n muted?: boolean\n size?: number | number[]\n /**\n * Controls how overflowing text is treated.\n * Use `textOverflow=\"ellipsis\"` to render text as a single line which is concatenated with a `…` symbol.\n * @beta\n */\n textOverflow?: 'ellipsis'\n weight?: ThemeFontWeightKey\n}\n\nconst Root = styled.div<ResponsiveFontStyleProps>(\n responsiveTextFont,\n responsiveTextAlignStyle,\n textBaseStyle\n)\n\nconst SpanWithTextOverflow = styled.span`\n display: block;\n white-space: nowrap;\n text-overflow: ellipsis;\n overflow: hidden;\n`\n\n/**\n * @public\n */\nexport const Text = forwardRef(function Text(\n props: TextProps & Omit<React.HTMLProps<HTMLDivElement>, 'as' | 'size'>,\n ref: React.ForwardedRef<HTMLDivElement>\n) {\n const {\n accent = false,\n align,\n children: childrenProp,\n muted = false,\n size = 2,\n textOverflow,\n weight,\n ...restProps\n } = props\n\n let children = childrenProp\n\n if (textOverflow === 'ellipsis') {\n children = <SpanWithTextOverflow>{children}</SpanWithTextOverflow>\n }\n\n return (\n <Root\n data-ui=\"Text\"\n {...restProps}\n $accent={accent}\n $align={useArrayProp(align)}\n $muted={muted}\n ref={ref}\n $size={useArrayProp(size)}\n $weight={weight}\n >\n <span>{children}</span>\n </Root>\n )\n})\n","import {CSSObject} from 'styled-components'\nimport {rem, _responsive, ThemeProps} from '../../styles'\nimport {focusRingStyle} from '../../styles/internal'\nimport {AvatarRootStyleProps, ResponsiveAvatarSizeStyleProps} from './types'\n\nexport const avatarStyle = {\n root: avatarRootStyle,\n arrow: avatarArrowStyle,\n bgStroke: avatarBgStrokeStyle,\n stroke: avatarStrokeStyle,\n initials: avatarInitialsStyle,\n}\n\nfunction avatarArrowStyle(): CSSObject {\n return {\n position: 'absolute',\n boxSizing: 'border-box',\n zIndex: 0,\n opacity: 0,\n transition: 'all 0.2s linear',\n transform: 'rotate(-90deg) translate3d(0, 6px, 0)',\n left: 0,\n right: 0,\n top: 0,\n bottom: 0,\n\n '& > svg': {\n width: '11px',\n height: '7px',\n position: 'absolute',\n top: '-5px',\n left: '50%',\n transform: 'translateX(-6px)',\n\n '&:not([hidden])': {\n display: 'block',\n },\n },\n\n \"[data-arrow-position='inside'] > &\": {\n transform: 'rotate(-90deg) translate3d(0, 6px, 0)',\n opacity: 0,\n },\n\n \"[data-arrow-position='top'] > &\": {\n opacity: 1,\n transform: 'rotate(0deg)',\n },\n\n \"[data-arrow-position='bottom'] > &\": {\n opacity: 1,\n transform: 'rotate(-180deg)',\n },\n }\n}\n\nexport function avatarRootStyle(props: AvatarRootStyleProps & ThemeProps): CSSObject {\n const {$color, theme} = props\n const {focusRing} = theme.sanity\n\n return {\n backgroundColor: $color,\n position: 'relative',\n boxSizing: 'border-box',\n userSelect: 'none',\n boxShadow: '0 0 0 1px var(--card-bg-color)',\n\n '&[data-status=\"inactive\"]': {\n opacity: 0.5,\n },\n\n '&>svg': {\n '&:not([hidden])': {\n display: 'block',\n },\n },\n\n /* &:is(button) */\n '&[data-as=\"button\"]': {\n '-webkit-font-smoothing': 'inherit',\n appearance: 'none',\n margin: 0,\n padding: 0,\n border: 0,\n font: 'inherit',\n color: 'inherit',\n outline: 'none',\n\n '&:focus': {\n boxShadow: focusRingStyle({focusRing}),\n },\n\n '&:focus:not(:focus-visible)': {\n boxShadow: 'none',\n },\n },\n }\n}\n\nexport function responsiveAvatarSizeStyle(\n props: ResponsiveAvatarSizeStyleProps & ThemeProps\n): CSSObject[] {\n const {theme} = props\n const {avatar, media} = theme.sanity\n\n return _responsive(media, props.$size, (size) => {\n const avatarSize = avatar.sizes[size] || avatar.sizes[0]\n\n return {\n width: rem(avatarSize.size),\n height: rem(avatarSize.size),\n borderRadius: rem(avatarSize.size / 2),\n\n '&>svg': {\n width: rem(avatarSize.size),\n height: rem(avatarSize.size),\n borderRadius: rem(avatarSize.size / 2),\n },\n }\n })\n}\n\nexport function avatarInitialsStyle(props: ThemeProps): CSSObject {\n const {theme} = props\n const {base} = theme.sanity.color\n\n return {\n width: '100%',\n height: '100%',\n color: base.fg,\n alignItems: 'center',\n justifyContent: 'center',\n textTransform: 'uppercase',\n textAlign: 'center',\n borderRadius: '50%',\n\n '&:not([hidden])': {\n display: 'flex',\n },\n }\n}\n\nfunction avatarBgStrokeStyle(): CSSObject {\n return {\n strokeWidth: '4px',\n stroke: 'var(--card-bg-color)',\n }\n}\n\nfunction avatarStrokeStyle(): CSSObject {\n return {\n strokeWidth: '3px',\n\n '[data-status=\"editing\"] &': {\n strokeSasharray: '2 4',\n strokeLinecap: 'round',\n },\n }\n}\n","import {useId} from '@reach/auto-id'\nimport React, {forwardRef, useCallback, useEffect, useMemo, useState} from 'react'\nimport ReactIs from 'react-is'\nimport styled from 'styled-components'\nimport {useArrayProp} from '../../hooks'\nimport {ThemeColorSpotKey, useTheme} from '../../theme'\nimport {AvatarPosition, AvatarSize, AvatarStatus} from '../../types'\nimport {Text} from '../text'\nimport {avatarStyle, responsiveAvatarSizeStyle} from './styles'\n\n/**\n * @public\n */\nexport interface AvatarProps {\n animateArrowFrom?: AvatarPosition\n arrowPosition?: AvatarPosition\n as?: React.ElementType | keyof JSX.IntrinsicElements\n color?: ThemeColorSpotKey\n initials?: string\n onImageLoadError?: (event: Error) => void\n size?: AvatarSize | AvatarSize[]\n src?: string\n /**\n * The status of the entity this Avatar represents.\n * @alpha\n */\n status?: AvatarStatus\n title?: string\n}\n\nconst Root = styled.div<{$color: string; $size: AvatarSize[]}>(\n responsiveAvatarSizeStyle,\n avatarStyle.root\n)\n\nconst Arrow = styled.div(avatarStyle.arrow)\n\nconst BgStroke = styled.ellipse(avatarStyle.bgStroke)\n\nconst Stroke = styled.ellipse(avatarStyle.stroke)\n\nconst Initials = styled.div(avatarStyle.initials)\n\n/**\n * @public\n */\nexport const Avatar = forwardRef(function Avatar(\n props: AvatarProps & Omit<React.HTMLProps<HTMLDivElement>, 'as' | 'ref'>,\n ref: React.ForwardedRef<HTMLDivElement>\n) {\n const {\n as: asProp,\n color: colorKey = 'gray',\n src,\n title,\n initials,\n onImageLoadError,\n arrowPosition: arrowPositionProp,\n animateArrowFrom,\n status = 'online',\n size: sizeProp = 0,\n ...restProps\n } = props\n const as = ReactIs.isValidElementType(asProp) ? asProp : 'div'\n const size = useArrayProp(sizeProp)\n const theme = useTheme()\n const color = theme.sanity.color.spot[colorKey] || theme.sanity.color.spot.gray\n\n // @todo: remove this\n const avatarSize = theme.sanity.avatar.sizes[size[0]] || theme.sanity.avatar.sizes[0]\n const _sizeRem = avatarSize.size\n const _radius = _sizeRem / 2\n\n const elementId = useId() || ''\n const [arrowPosition, setArrowPosition] = useState<AvatarPosition | undefined>(\n animateArrowFrom || arrowPositionProp || 'inside'\n )\n\n const [imageFailed, setImageFailed] = useState<boolean>(false)\n\n const imageId = `avatar-image-${elementId}`\n\n useEffect(() => {\n if (arrowPosition === arrowPositionProp) return undefined\n\n // Start animation in the next frame\n const raf = requestAnimationFrame(() => setArrowPosition(arrowPositionProp))\n\n return () => cancelAnimationFrame(raf)\n }, [arrowPosition, arrowPositionProp])\n\n useEffect(() => {\n if (src) setImageFailed(false)\n }, [src])\n\n const handleImageError = useCallback(() => {\n setImageFailed(true)\n\n if (onImageLoadError) {\n onImageLoadError(new Error('Avatar: the image failed to load'))\n }\n }, [onImageLoadError])\n\n const initialsSize = useMemo(() => size.map((s) => (s === 0 ? 0 : s + 1)), [size])\n\n return (\n <Root\n as={as}\n data-as={typeof as === 'string' ? as : undefined}\n data-ui=\"Avatar\"\n {...restProps}\n $size={size}\n $color={color}\n aria-label={title}\n data-arrow-position={arrowPosition}\n data-status={status}\n ref={ref}\n title={title}\n >\n <Arrow>\n <svg width=\"11\" height=\"7\" viewBox=\"0 0 11 7\" fill=\"none\">\n <path\n d=\"M6.67948 1.50115L11 7L0 7L4.32052 1.50115C4.92109 0.736796 6.07891 0.736795 6.67948 1.50115Z\"\n fill={color}\n />\n </svg>\n </Arrow>\n\n {!imageFailed && src && (\n <svg viewBox={`0 0 ${_sizeRem} ${_sizeRem}`} fill=\"none\">\n <defs>\n <pattern id={imageId} patternContentUnits=\"objectBoundingBox\" width=\"1\" height=\"1\">\n <image href={src} width=\"1\" height=\"1\" onError={handleImageError} />\n </pattern>\n </defs>\n\n <circle cx={_radius} cy={_radius} r={_radius} fill={`url(#${imageId})`} />\n <BgStroke\n cx={_radius}\n cy={_radius}\n rx={_radius}\n ry={_radius}\n vectorEffect=\"non-scaling-stroke\"\n />\n <Stroke\n cx={_radius}\n cy={_radius}\n rx={_radius}\n ry={_radius}\n stroke={color}\n vectorEffect=\"non-scaling-stroke\"\n />\n </svg>\n )}\n\n {(imageFailed || !src) && initials && (\n <>\n <Initials>\n <Text as=\"span\" size={initialsSize}>\n <strong>{initials}</strong>\n </Text>\n </Initials>\n </>\n )}\n </Root>\n )\n})\n","import React, {forwardRef, useMemo} from 'react'\nimport styled, {css} from 'styled-components'\nimport {EMPTY_RECORD} from '../../constants'\nimport {useArrayProp} from '../../hooks'\nimport {rem, _responsive, ThemeProps} from '../../styles'\nimport {AvatarSize} from '../../types'\nimport {Text} from '../text'\n\nfunction _responsiveAvatarCounterSizeStyle(props: {$size: AvatarSize[]} & ThemeProps) {\n const {theme} = props\n const {avatar, media} = theme.sanity\n\n return _responsive(media, props.$size, (size) => {\n const avatarSize = avatar.sizes[size]\n\n if (!avatarSize) return EMPTY_RECORD\n\n return {\n borderRadius: rem(avatarSize.size / 2),\n minWidth: rem(avatarSize.size),\n height: rem(avatarSize.size),\n }\n })\n}\n\nfunction _avatarCounterBaseStyle(props: ThemeProps) {\n const {theme} = props\n\n return css`\n align-items: center;\n justify-content: center;\n box-sizing: border-box;\n user-select: none;\n color: inherit;\n color: var(--card-fg-color);\n background: var(--card-bg-color);\n box-shadow: 0 0 0 1px var(--card-bg-color), inset 0 0 0 1.5px var(--card-hairline-hard-color);\n padding: 0 ${rem(theme.sanity.space[2])};\n\n &:not([hidden]) {\n display: flex;\n }\n `\n}\n\nconst Root = styled.div<{$size: AvatarSize[]}>(\n _responsiveAvatarCounterSizeStyle,\n _avatarCounterBaseStyle\n)\n\n/**\n * @public\n */\nexport interface AvatarCounterProps {\n count: number\n size?: AvatarSize | AvatarSize[]\n /** @deprecated No longer supported. */\n tone?: 'navbar'\n}\n\n/**\n * @public\n */\nexport const AvatarCounter = forwardRef(function AvatarCounter(\n props: AvatarCounterProps,\n ref: React.Ref<HTMLDivElement>\n) {\n const {count, size: sizeProp = 0} = props\n const size = useArrayProp(sizeProp)\n const counterSize = useMemo(() => size.map((s) => (s === 0 ? 0 : s + 1)), [size])\n\n return (\n <Root $size={size} data-ui=\"AvatarCounter\" ref={ref}>\n <Text as=\"span\" size={counterSize}>\n <strong>{count}</strong>\n </Text>\n </Root>\n )\n})\n","import {isElement, isFragment} from 'react-is'\n\nexport function childrenToElementArray(\n children: React.ReactNode\n): Array<React.ReactElement | string> {\n const childrenArray = Array.isArray(children) ? children : [children]\n\n return childrenArray.filter(\n (node) => isElement(node) || isFragment(node) || typeof node === 'string'\n ) as Array<React.ReactElement | string>\n}\n","import React, {cloneElement, forwardRef} from 'react'\nimport styled, {css} from 'styled-components'\nimport {EMPTY_RECORD} from '../../constants'\nimport {useArrayProp} from '../../hooks'\nimport {rem, _responsive, ThemeProps} from '../../styles'\nimport {AvatarSize} from '../../types'\nimport {childrenToElementArray} from '../helpers'\nimport {AvatarCounter} from './avatarCounter'\n\nconst BASE_STYLES = css`\n white-space: nowrap;\n\n & > div {\n vertical-align: top;\n\n &:not([hidden]) {\n display: inline-block;\n }\n }\n`\n\nfunction avatarStackStyle() {\n return BASE_STYLES\n}\n\nfunction responsiveAvatarStackSizeStyle(props: {$size: AvatarSize[]} & ThemeProps) {\n const {theme} = props\n const {avatar, media} = theme.sanity\n\n return _responsive(media, props.$size, (size) => {\n const avatarSize = avatar.sizes[size]\n\n if (!avatarSize) return EMPTY_RECORD\n\n return {\n '& > div + div': {\n marginLeft: rem(avatarSize.distance),\n },\n }\n })\n}\n\nconst Root = styled.div<{$size: AvatarSize[]}>(responsiveAvatarStackSizeStyle, avatarStackStyle)\n\n/**\n * @public\n */\nexport interface AvatarStackProps {\n children: React.ReactNode\n maxLength?: number\n size?: AvatarSize | AvatarSize[]\n /** @deprecated No longer supported. */\n tone?: 'navbar'\n}\n\n/**\n * @public\n */\nexport const AvatarStack = forwardRef(function AvatarStack(\n props: AvatarStackProps & Omit<React.HTMLProps<HTMLDivElement>, 'as' | 'ref'>,\n ref: React.ForwardedRef<HTMLDivElement>\n) {\n const {\n children: childrenProp,\n maxLength: maxLengthProp = 4,\n size: sizeProp = 0,\n ...restProps\n } = props\n const children = childrenToElementArray(childrenProp).filter(\n (child) => typeof child !== 'string'\n ) as React.ReactElement[]\n const maxLength = Math.max(maxLengthProp, 0)\n const size = useArrayProp(sizeProp)\n\n const len = children.length\n const visibleCount = maxLength - 1\n const extraCount = len - visibleCount\n const visibleChildren = extraCount > 1 ? children.slice(extraCount, len) : children\n\n return (\n <Root data-ui=\"AvatarStack\" {...restProps} ref={ref} $size={size}>\n {len === 0 && (\n <div>\n <AvatarCounter count={len} />\n </div>\n )}\n\n {len !== 0 && extraCount > 1 && (\n <div>\n <AvatarCounter count={extraCount} size={size} />\n </div>\n )}\n\n {visibleChildren.map((child, childIndex) => (\n <div key={String(childIndex)}>{cloneElement(child, {size})}</div>\n ))}\n </Root>\n )\n})\n","import React, {forwardRef} from 'react'\nimport styled from 'styled-components'\nimport {useArrayProp} from '../../hooks'\nimport {\n boxStyle,\n flexItemStyle,\n FlexItemStyleProps,\n responsiveBoxStyle,\n ResponsiveBoxStyleProps,\n responsiveGridItemStyle,\n ResponsiveGridItemStyleProps,\n responsivePaddingStyle,\n ResponsivePaddingStyleProps,\n responsiveMarginStyle,\n ResponsiveMarginStyleProps,\n} from '../../styles/internal'\nimport {\n ResponsiveBoxProps,\n ResponsiveFlexItemProps,\n ResponsiveGridItemProps,\n ResponsiveMarginProps,\n ResponsivePaddingProps,\n} from '../types'\n\n/**\n * @public\n */\nexport interface BoxProps\n extends ResponsiveFlexItemProps,\n ResponsiveBoxProps,\n ResponsiveGridItemProps,\n ResponsiveMarginProps,\n ResponsivePaddingProps {\n as?: React.ElementType | keyof JSX.IntrinsicElements\n}\n\nconst Root = styled.div<\n FlexItemStyleProps &\n ResponsiveBoxStyleProps &\n ResponsiveGridItemStyleProps &\n ResponsiveMarginStyleProps &\n ResponsivePaddingStyleProps\n>(\n boxStyle,\n flexItemStyle,\n responsiveBoxStyle,\n responsiveGridItemStyle,\n responsiveMarginStyle,\n responsivePaddingStyle\n)\n\n/**\n * @public\n */\nexport const Box = forwardRef(function Box(\n props: BoxProps & Omit<React.HTMLProps<HTMLDivElement>, 'as' | 'height'>,\n ref: React.ForwardedRef<HTMLDivElement>\n) {\n const {\n as: asProp = 'div',\n column,\n columnStart,\n columnEnd,\n display = 'block',\n flex,\n height,\n margin = 0,\n marginX,\n marginY,\n marginTop,\n marginRight,\n marginBottom,\n marginLeft,\n overflow,\n padding = 0,\n paddingX,\n paddingY,\n paddingTop,\n paddingRight,\n paddingBottom,\n paddingLeft,\n row,\n rowStart,\n rowEnd,\n sizing,\n ...restProps\n } = props\n\n return (\n <Root\n data-as={typeof asProp === 'string' ? asProp : undefined}\n data-ui=\"Box\"\n {...restProps}\n $column={useArrayProp(column)}\n $columnStart={useArrayProp(columnStart)}\n $columnEnd={useArrayProp(columnEnd)}\n $display={useArrayProp(display)}\n $flex={useArrayProp(flex)}\n $height={useArrayProp(height)}\n $margin={useArrayProp(margin)}\n $marginX={useArrayProp(marginX)}\n $marginY={useArrayProp(marginY)}\n $marginTop={useArrayProp(marginTop)}\n $marginRight={useArrayProp(marginRight)}\n $marginBottom={useArrayProp(marginBottom)}\n $marginLeft={useArrayProp(marginLeft)}\n $overflow={useArrayProp(overflow)}\n $padding={useArrayProp(padding)}\n $paddingX={useArrayProp(paddingX)}\n $paddingY={useArrayProp(paddingY)}\n $paddingTop={useArrayProp(paddingTop)}\n $paddingRight={useArrayProp(paddingRight)}\n $paddingBottom={useArrayProp(paddingBottom)}\n $paddingLeft={useArrayProp(paddingLeft)}\n $row={useArrayProp(row)}\n $rowStart={useArrayProp(rowStart)}\n $rowEnd={useArrayProp(rowEnd)}\n $sizing={useArrayProp(sizing)}\n as={asProp}\n ref={ref}\n >\n {props.children}\n </Root>\n )\n})\n","import {css, FlattenSimpleInterpolation} from 'styled-components'\nimport {ThemeProps} from '../../styles'\n\nexport function labelBaseStyle(\n props: {$accent?: boolean; $muted: boolean} & ThemeProps\n): FlattenSimpleInterpolation {\n const {$accent, $muted, theme} = props\n const {fonts} = theme.sanity\n\n return css`\n text-transform: uppercase;\n\n ${$accent &&\n css`\n color: var(--card-accent-fg-color);\n `}\n\n ${$muted &&\n css`\n color: var(--card-muted-fg-color);\n `}\n\n & code {\n font-family: ${fonts.code.family};\n border-radius: 1px;\n }\n\n & a {\n text-decoration: none;\n border-radius: 1px;\n }\n\n & [data-sanity-icon] {\n vertical-align: baseline;\n }\n `\n}\n","import React, {forwardRef} from 'react'\nimport styled from 'styled-components'\nimport {useArrayProp} from '../../hooks'\nimport {responsiveLabelFont, responsiveTextAlignStyle} from '../../styles/internal'\nimport {ThemeFontWeightKey} from '../../theme'\nimport {TextAlign} from '../../types'\nimport {labelBaseStyle} from './styles'\n\n/**\n * @public\n */\nexport interface LabelProps {\n accent?: boolean\n align?: TextAlign | TextAlign[]\n as?: React.ElementType | keyof JSX.IntrinsicElements\n muted?: boolean\n size?: number | number[]\n /**\n * Controls how overflowing text is treated.\n * Use `textOverflow=\"ellipsis\"` to render text as a single line which is concatenated with a `…` symbol.\n * @beta\n */\n textOverflow?: 'ellipsis'\n weight?: ThemeFontWeightKey\n}\n\nconst Root = styled.div<{\n $accent?: boolean\n $align: TextAlign[]\n $muted: boolean\n $size: number[]\n}>(responsiveLabelFont, responsiveTextAlignStyle, labelBaseStyle)\n\nconst SpanWithTextOverflow = styled.span`\n display: block;\n white-space: nowrap;\n text-overflow: ellipsis;\n overflow: hidden;\n`\n\n/**\n * @public\n */\nexport const Label = forwardRef(function Label(\n props: LabelProps & Omit<React.HTMLProps<HTMLDivElement>, 'as' | 'size'>,\n ref: React.ForwardedRef<HTMLDivElement>\n) {\n const {\n accent,\n align,\n children: childrenProp,\n muted = false,\n size = 2,\n textOverflow,\n weight,\n ...restProps\n } = props\n\n let children = childrenProp\n\n if (textOverflow === 'ellipsis') {\n children = <SpanWithTextOverflow>{children}</SpanWithTextOverflow>\n } else {\n children = <span>{children}</span>\n }\n\n return (\n <Root\n data-ui=\"Label\"\n {...restProps}\n $accent={accent}\n $align={useArrayProp(align)}\n $muted={muted}\n $size={useArrayProp(size)}\n $weight={weight}\n ref={ref}\n >\n {children}\n </Root>\n )\n})\n","import {CSSObject} from 'styled-components'\nimport {ThemeProps} from '../../styles'\nimport {BadgeStyleProps} from './types'\n\nexport function badgeStyle(props: BadgeStyleProps & ThemeProps): CSSObject {\n const {$mode, $tone, theme} = props\n const palette = theme.sanity.color[$mode === 'outline' ? 'muted' : 'solid']\n const color = palette[$tone] || palette.default\n\n return {\n backgroundColor: color.enabled.bg,\n color: color.enabled.fg,\n boxShadow: `inset 0 0 0 1px ${color.enabled.border}`,\n cursor: 'default',\n\n '&:not([hidden])': {\n display: 'inline-block',\n },\n }\n}\n","import React, {forwardRef} from 'react'\nimport styled from 'styled-components'\nimport {useArrayProp} from '../../hooks'\nimport {responsiveRadiusStyle, ResponsiveRadiusStyleProps} from '../../styles/internal'\nimport {BadgeMode, BadgeTone} from '../../types'\nimport {Box, BoxProps} from '../box'\nimport {Label} from '../label'\nimport {ResponsiveRadiusProps} from '../types'\nimport {badgeStyle} from './styles'\nimport {BadgeStyleProps} from './types'\n\n/**\n * @public\n */\nexport interface BadgeProps extends BoxProps, ResponsiveRadiusProps {\n as?: React.ElementType | keyof JSX.IntrinsicElements\n fontSize?: number | number[]\n mode?: BadgeMode\n tone?: BadgeTone\n}\n\nconst Root = styled(Box)<BadgeStyleProps & ResponsiveRadiusStyleProps>(\n responsiveRadiusStyle,\n badgeStyle\n)\n\n/**\n * @public\n */\nexport const Badge = forwardRef(function Badge(\n props: BadgeProps & React.HTMLProps<HTMLDivElement>,\n ref\n) {\n const {\n children,\n fontSize,\n mode = 'default',\n padding = 1,\n radius = 2,\n tone = 'default',\n ...restProps\n } = props\n\n return (\n <Root\n data-ui=\"Badge\"\n {...restProps}\n $mode={mode}\n $tone={tone}\n $radius={useArrayProp(radius)}\n padding={useArrayProp(padding)}\n ref={ref}\n >\n <Label size={fontSize}>{children}</Label>\n </Root>\n )\n})\n","import React, {forwardRef} from 'react'\nimport styled from 'styled-components'\nimport {useArrayProp} from '../../hooks'\nimport {\n flexItemStyle,\n FlexItemStyleProps,\n responsiveFlexStyle,\n ResponsiveFlexStyleProps,\n} from '../../styles/internal'\nimport {Box, BoxProps} from '../box'\nimport {ResponsiveFlexProps, ResponsiveFlexItemProps} from '../types'\n\n/**\n * @public\n */\nexport interface FlexProps\n extends Omit<BoxProps, 'display'>,\n ResponsiveFlexProps,\n ResponsiveFlexItemProps {\n gap?: number | number[]\n}\n\nconst Root = styled(Box)<FlexItemStyleProps & ResponsiveFlexStyleProps>(\n flexItemStyle,\n responsiveFlexStyle\n)\n\n/**\n * @public\n */\nexport const Flex = forwardRef(function Flex(\n props: FlexProps & Omit<React.HTMLProps<HTMLDivElement>, 'as' | 'wrap'>,\n ref: React.ForwardedRef<HTMLDivElement>\n) {\n const {align, as, direction = 'row', gap, justify, wrap, ...restProps} = props\n\n return (\n <Root\n data-ui=\"Flex\"\n {...restProps}\n $align={useArrayProp(align)}\n $direction={useArrayProp(direction)}\n $gap={useArrayProp(gap)}\n $justify={useArrayProp(justify)}\n $wrap={useArrayProp(wrap)}\n forwardedAs={as}\n ref={ref}\n />\n )\n})\n","import {SpinnerIcon} from '@sanity/icons'\nimport React, {forwardRef} from 'react'\nimport styled, {keyframes} from 'styled-components'\nimport {Text} from '../text'\n\n/**\n * @public\n */\nexport interface SpinnerProps {\n muted?: boolean\n size?: number | number[]\n}\n\nconst rotate = keyframes`\n from {\n transform: rotate(0deg);\n }\n\n to {\n transform: rotate(360deg);\n }\n`\n\nconst Root = styled(Text)`\n & > span > svg {\n animation: ${rotate} 500ms linear infinite;\n }\n`\n\n/**\n * @public\n */\nexport const Spinner = forwardRef(function Spinner(\n props: SpinnerProps & Omit<React.HTMLProps<HTMLDivElement>, 'as' | 'size'>,\n ref: React.ForwardedRef<HTMLDivElement>\n) {\n return (\n <Root data-ui=\"Spinner\" {...props} ref={ref}>\n <SpinnerIcon />\n </Root>\n )\n})\n","import {CSSObject} from 'styled-components'\nimport {ThemeColorBase, ThemeColorGenericState} from '../../theme'\n\n/**\n * @internal\n */\nexport function _colorVarsStyle(\n base: ThemeColorBase,\n color: ThemeColorGenericState,\n checkered = false\n): CSSObject {\n return {\n // Base\n // @todo: rename to \"--base-\"?\n '--card-shadow-outline-color': base.shadow.outline,\n '--card-shadow-umbra-color': base.shadow.umbra,\n '--card-shadow-penumbra-color': base.shadow.penumbra,\n '--card-shadow-ambient-color': base.shadow.ambient,\n '--card-focus-ring-color': base.focusRing,\n\n // Card\n '--card-bg-color': color.bg,\n '--card-bg-image': checkered\n ? `repeating-conic-gradient(${color.bg} 0% 25%, ${color.bg2 || color.bg} 0% 50%)`\n : undefined,\n '--card-fg-color': color.fg,\n '--card-border-color': color.border,\n '--card-muted-fg-color': color.muted?.fg,\n '--card-accent-fg-color': color.accent?.fg,\n '--card-link-fg-color': color.link?.fg,\n '--card-code-bg-color': color.code?.bg,\n '--card-code-fg-color': color.code?.fg,\n '--card-skeleton-color-from': color.skeleton?.from,\n '--card-skeleton-color-to': color.skeleton?.to,\n\n // @todo: deprecate\n '--card-link-color': color.link?.fg,\n '--card-hairline-soft-color': color.border,\n '--card-hairline-hard-color': color.border,\n }\n}\n","import {css, CSSObject, FlattenSimpleInterpolation} from 'styled-components'\nimport {ThemeProps} from '../../styles'\nimport {_colorVarsStyle} from '../../styles/colorVars'\nimport {focusRingBorderStyle, focusRingStyle} from '../../styles/internal'\nimport {ButtonMode, ButtonTone} from '../../types'\n\n/**\n * @internal\n */\nexport function buttonBaseStyles(): FlattenSimpleInterpolation {\n return css`\n -webkit-font-smoothing: inherit;\n appearance: none;\n display: inline-flex;\n align-items: center;\n font: inherit;\n border: 0;\n outline: none;\n user-select: none;\n text-decoration: none;\n border: 0;\n box-sizing: border-box;\n padding: 0;\n margin: 0;\n white-space: nowrap;\n text-align: left;\n position: relative;\n\n & > span {\n display: block;\n flex: 1;\n min-width: 0;\n border-radius: inherit;\n }\n\n &::-moz-focus-inner {\n border: 0;\n padding: 0;\n }\n `\n}\n\nconst buttonTheme = {border: {width: 1}}\n\n/**\n * @internal\n */\nexport function buttonColorStyles(\n props: {$mode: ButtonMode; $tone: ButtonTone} & ThemeProps\n): CSSObject[] {\n const {$mode, theme} = props\n const {focusRing} = theme.sanity\n const base = theme.sanity.color.base\n const mode = theme.sanity.color.button[$mode] || theme.sanity.color.button.default\n const color = mode[props.$tone] || mode.default\n const border = {width: buttonTheme.border.width, color: 'var(--card-border-color)'}\n\n return [\n _colorVarsStyle(base, color.enabled),\n {\n backgroundColor: 'var(--card-bg-color)',\n color: 'var(--card-fg-color)',\n boxShadow: focusRingBorderStyle(border),\n '&:disabled, &[data-disabled=\"true\"]': _colorVarsStyle(base, color.disabled),\n \"&:not([data-disabled='true'])\": {\n '&:focus': {\n boxShadow: focusRingStyle({base, border, focusRing}),\n },\n '&:focus:not(:focus-visible)': {\n boxShadow: focusRingBorderStyle(border),\n },\n '@media (hover: hover)': {\n '&:hover': _colorVarsStyle(base, color.hovered),\n '&:active': _colorVarsStyle(base, color.pressed),\n },\n '&[data-selected]': _colorVarsStyle(base, color.pressed),\n },\n },\n theme.sanity.styles?.button?.root,\n ].filter(Boolean) as CSSObject[]\n}\n","import React, {createElement, forwardRef, isValidElement, useMemo} from 'react'\nimport {isValidElementType} from 'react-is'\nimport styled from 'styled-components'\nimport {useArrayProp} from '../../hooks'\nimport {ThemeProps} from '../../styles'\nimport {responsiveRadiusStyle, ResponsiveRadiusStyleProps} from '../../styles/internal'\nimport {useTheme} from '../../theme'\nimport {ButtonMode, ButtonTextAlign, ButtonTone, FlexJustify} from '../../types'\nimport {Box} from '../box'\nimport {Flex} from '../flex'\nimport {Spinner} from '../spinner'\nimport {Text} from '../text'\nimport {ResponsivePaddingProps, ResponsiveRadiusProps} from '../types'\nimport {buttonBaseStyles, buttonColorStyles} from './styles'\n\n/**\n * @public\n */\nexport interface ButtonProps extends ResponsivePaddingProps, ResponsiveRadiusProps {\n as?: React.ElementType | keyof JSX.IntrinsicElements\n fontSize?: number | number[]\n mode?: ButtonMode\n icon?: React.ComponentType | React.ReactNode\n iconRight?: React.ComponentType | React.ReactNode\n justify?: FlexJustify | FlexJustify[]\n /**\n * @beta Do not use in production, as this might change.\n */\n loading?: boolean\n selected?: boolean\n space?: number | number[]\n textAlign?: ButtonTextAlign\n text?: React.ReactNode\n tone?: ButtonTone\n type?: 'button' | 'reset' | 'submit'\n}\n\nconst Root = styled.button<\n {$mode: ButtonMode; $tone: ButtonTone} & ResponsiveRadiusStyleProps & ThemeProps\n>(responsiveRadiusStyle, buttonBaseStyles, buttonColorStyles)\n\nconst LoadingBox = styled.div`\n position: absolute;\n top: 0;\n left: 0;\n right: 0;\n bottom: 0;\n display: flex;\n align-items: center;\n justify-content: center;\n background-color: var(--card-bg-color);\n border-radius: inherit;\n z-index: 1;\n box-shadow: inherit;\n`\n\n/**\n * @public\n */\nexport const Button = forwardRef(function Button(\n props: ButtonProps & Omit<React.HTMLProps<HTMLButtonElement>, 'as'>,\n ref: React.ForwardedRef<HTMLButtonElement>\n) {\n const {\n children,\n disabled,\n fontSize,\n icon,\n iconRight,\n justify: justifyProp = 'center',\n loading,\n mode = 'default',\n padding: paddingProp = 3,\n paddingX: paddingXProp,\n paddingY: paddingYProp,\n paddingTop: paddingTopProp,\n paddingBottom: paddingBottomProp,\n paddingLeft: paddingLeftProp,\n paddingRight: paddingRightProp,\n radius: radiusProp = 2,\n selected,\n space: spaceProp = 3,\n text,\n textAlign,\n tone = 'default',\n type = 'button',\n ...restProps\n } = props\n\n const justify = useArrayProp(justifyProp)\n const padding = useArrayProp(paddingProp)\n const paddingX = useArrayProp(paddingXProp)\n const paddingY = useArrayProp(paddingYProp)\n const paddingTop = useArrayProp(paddingTopProp)\n const paddingBottom = useArrayProp(paddingBottomProp)\n const paddingLeft = useArrayProp(paddingLeftProp)\n const paddingRight = useArrayProp(paddingRightProp)\n const radius = useArrayProp(radiusProp)\n const space = useArrayProp(spaceProp)\n\n const theme = useTheme()\n\n const boxProps = useMemo(\n () => ({\n // flex: 1,\n padding,\n paddingX,\n paddingY,\n paddingTop,\n paddingBottom,\n paddingLeft,\n paddingRight,\n }),\n [padding, paddingX, paddingY, paddingTop, paddingBottom, paddingLeft, paddingRight]\n )\n\n return (\n <Root\n data-ui=\"Button\"\n {...restProps}\n $mode={mode}\n $radius={radius}\n $tone={tone}\n data-disabled={Boolean(loading || disabled)}\n data-selected={selected ? '' : undefined}\n disabled={Boolean(loading || disabled)}\n ref={ref}\n type={type}\n >\n {Boolean(loading) && (\n <LoadingBox>\n <Spinner />\n </LoadingBox>\n )}\n\n {(icon || text || iconRight) && (\n <Box as=\"span\" {...boxProps}>\n <Flex as=\"span\" justify={justify}>\n {icon && (\n <Text size={fontSize}>\n {isValidElement(icon) && icon}\n {isValidElementType(icon) && createElement(icon)}\n </Text>\n )}\n\n {text && (\n <Box\n flex={iconRight ? 1 : undefined}\n marginLeft={icon ? space : undefined}\n marginRight={iconRight ? space : undefined}\n >\n <Text\n align={textAlign}\n size={fontSize}\n textOverflow=\"ellipsis\"\n weight={theme.sanity.button.textWeight}\n >\n {text}\n </Text>\n </Box>\n )}\n\n {iconRight && (\n <Text size={fontSize}>\n {isValidElement(iconRight) && iconRight}\n {isValidElementType(iconRight) && createElement(iconRight)}\n </Text>\n )}\n </Flex>\n </Box>\n )}\n\n {children && (\n <Box as=\"span\" {...boxProps}>\n {children}\n </Box>\n )}\n </Root>\n )\n})\n","import {css, FlattenSimpleInterpolation} from 'styled-components'\nimport {ThemeProps} from '../../styles'\nimport {_colorVarsStyle} from '../../styles/colorVars'\nimport {focusRingBorderStyle, focusRingStyle} from '../../styles/focusRing'\nimport {CardStyleProps} from './types'\n\nexport function cardStyle(\n props: CardStyleProps & ThemeProps\n): Array<FlattenSimpleInterpolation | (() => FlattenSimpleInterpolation)> {\n return [cardBaseStyle(props), cardColorStyle(props)]\n}\n\nexport function cardBaseStyle(props: CardStyleProps & ThemeProps): FlattenSimpleInterpolation {\n const {$checkered, theme} = props\n const space = theme.sanity.space\n\n return css`\n ${$checkered &&\n css`\n background-size: ${space[3]}px ${space[3]}px;\n background-position: 50% 50%;\n background-image: var(--card-bg-image);\n `}\n\n &[data-as='button'] {\n -webkit-font-smoothing: inherit;\n appearance: none;\n outline: none;\n font: inherit;\n text-align: inherit;\n border: 0;\n width: stretch;\n }\n\n /* &:is(a) */\n &[data-as='a'] {\n outline: none;\n text-decoration: none;\n }\n\n /* &:is(pre) */\n &[data-as='pre'] {\n font: inherit;\n }\n `\n}\n\nexport function cardColorStyle(props: CardStyleProps & ThemeProps): FlattenSimpleInterpolation {\n const {$checkered, $focusRing, theme} = props\n const {focusRing} = theme.sanity\n const {base, card} = theme.sanity.color\n const border = {width: 0, color: 'var(--card-border-color)'}\n\n return css`\n ${_colorVarsStyle(base, card.enabled, $checkered)}\n\n background-color: var(--card-bg-color);\n color: var(--card-fg-color);\n\n /* &:is(button) */\n &[data-as='button'] {\n --card-focus-ring-box-shadow: none;\n\n cursor: default;\n box-shadow: var(--card-focus-ring-box-shadow);\n\n &:disabled {\n ${_colorVarsStyle(base, card.disabled, $checkered)}\n }\n\n &:not(:disabled) {\n &[data-pressed] {\n ${_colorVarsStyle(base, card.pressed, $checkered)}\n }\n\n &[data-selected] {\n ${_colorVarsStyle(base, card.selected, $checkered)}\n }\n\n @media (hover: hover) {\n &:not([data-pressed]):not([data-selected]) {\n &:hover {\n ${_colorVarsStyle(base, card.hovered, $checkered)}\n }\n\n &:active {\n ${_colorVarsStyle(base, card.pressed, $checkered)}\n }\n }\n }\n\n &:focus {\n --card-focus-ring-box-shadow: ${$focusRing\n ? focusRingStyle({base, border, focusRing})\n : undefined};\n }\n\n &:focus:not(:focus-visible) {\n --card-focus-ring-box-shadow: ${$focusRing ? focusRingBorderStyle(border) : undefined};\n }\n }\n }\n\n /* &:is(a) */\n &[data-as='a'] {\n cursor: pointer;\n box-shadow: var(--card-focus-ring-box-shadow);\n\n &[data-disabled] {\n ${_colorVarsStyle(base, card.disabled, $checkered)}\n }\n\n &:not([data-disabled]) {\n &[data-pressed] {\n ${_colorVarsStyle(base, card.pressed, $checkered)}\n }\n\n &[data-selected] {\n ${_colorVarsStyle(base, card.selected, $checkered)}\n }\n\n @media (hover: hover) {\n &:not([data-pressed]):not([data-selected]) {\n &:hover {\n ${_colorVarsStyle(base, card.hovered, $checkered)}\n }\n\n &:active {\n ${_colorVarsStyle(base, card.pressed, $checkered)}\n }\n }\n }\n\n &:focus {\n --card-focus-ring-box-shadow: ${$focusRing\n ? focusRingStyle({base, border, focusRing})\n : undefined};\n }\n\n &:focus:not(:focus-visible) {\n --card-focus-ring-box-shadow: ${$focusRing ? focusRingBorderStyle(border) : undefined};\n }\n }\n }\n\n ${theme.sanity.styles?.card?.root}\n `\n}\n","import React, {forwardRef} from 'react'\nimport {isValidElementType} from 'react-is'\nimport styled from 'styled-components'\nimport {useArrayProp} from '../../hooks'\nimport {\n responsiveBorderStyle,\n ResponsiveBorderStyleProps,\n responsiveRadiusStyle,\n ResponsiveRadiusStyleProps,\n responsiveShadowStyle,\n ResponsiveShadowStyleProps,\n} from '../../styles/internal'\nimport {ThemeColorProvider, ThemeColorSchemeKey, useRootTheme} from '../../theme'\nimport {CardTone} from '../../types'\nimport {Box, BoxProps} from '../box'\nimport {ResponsiveBorderProps, ResponsiveRadiusProps, ResponsiveShadowProps} from '../types'\nimport {cardStyle} from './styles'\nimport {CardStyleProps} from './types'\n\n/**\n * @public\n */\nexport interface CardProps\n extends BoxProps,\n ResponsiveBorderProps,\n ResponsiveRadiusProps,\n ResponsiveShadowProps {\n /**\n * Do not use in production.\n * @beta\n */\n __unstable_checkered?: boolean\n /**\n * Do not use in production.\n * @beta\n */\n __unstable_focusRing?: boolean\n pressed?: boolean\n scheme?: ThemeColorSchemeKey\n tone?: CardTone\n}\n\nconst Root = styled(Box)<\n CardStyleProps &\n ResponsiveRadiusStyleProps &\n ResponsiveBorderStyleProps &\n ResponsiveShadowStyleProps\n>(responsiveBorderStyle, responsiveRadiusStyle, responsiveShadowStyle, cardStyle)\n\n/**\n * @public\n */\nexport const Card = forwardRef(function Card(\n props: CardProps & Omit<React.HTMLProps<HTMLDivElement>, 'as' | 'height'>,\n ref: React.ForwardedRef<HTMLDivElement>\n) {\n const {\n __unstable_checkered: checkered = false,\n __unstable_focusRing: focusRing = false,\n as: asProp,\n border,\n borderTop,\n borderRight,\n borderBottom,\n borderLeft,\n pressed,\n radius = 0,\n scheme,\n selected,\n shadow,\n tone: toneProp = 'default',\n ...restProps\n } = props\n\n const as = isValidElementType(asProp) ? asProp : 'div'\n const rootTheme = useRootTheme()\n const tone = toneProp === 'inherit' ? rootTheme.tone : toneProp\n\n return (\n <ThemeColorProvider scheme={scheme} tone={tone}>\n <Root\n data-as={typeof as === 'string' ? as : undefined}\n data-scheme={rootTheme.scheme}\n data-ui=\"Card\"\n data-tone={tone}\n {...restProps}\n $border={useArrayProp(border)}\n $borderTop={useArrayProp(borderTop)}\n $borderRight={useArrayProp(borderRight)}\n $borderBottom={useArrayProp(borderBottom)}\n $borderLeft={useArrayProp(borderLeft)}\n $checkered={checkered}\n $focusRing={focusRing}\n $radius={useArrayProp(radius)}\n $shadow={useArrayProp(shadow)}\n $tone={tone}\n data-checkered={checkered ? '' : undefined}\n data-pressed={pressed ? '' : undefined}\n data-selected={selected ? '' : undefined}\n forwardedAs={as}\n ref={ref}\n selected={selected}\n />\n </ThemeColorProvider>\n )\n})\n","import {css, FlattenSimpleInterpolation} from 'styled-components'\nimport {rem, ThemeProps} from '../../styles'\nimport {focusRingBorderStyle, focusRingStyle} from '../../styles/internal'\n\nexport function checkboxBaseStyles(): FlattenSimpleInterpolation {\n return css`\n position: relative;\n display: inline-block;\n `\n}\n\nexport function inputElementStyles(props: ThemeProps): FlattenSimpleInterpolation {\n const {theme} = props\n const color = theme.sanity.color.input\n const {focusRing, input, radius} = theme.sanity\n\n return css`\n position: absolute;\n top: 0;\n left: 0;\n width: 100%;\n height: 100%;\n outline: none;\n opacity: 0;\n z-index: 1;\n padding: 0;\n margin: 0;\n\n & + span {\n position: relative;\n display: block;\n height: ${rem(input.checkbox.size)};\n width: ${rem(input.checkbox.size)};\n box-sizing: border-box;\n box-shadow: ${focusRingBorderStyle({\n color: color.default.enabled.border,\n width: input.border.width,\n })};\n border-radius: ${rem(radius[2])};\n line-height: 1;\n background-color: ${color.default.enabled.bg};\n\n & > svg {\n display: block;\n position: absolute;\n opacity: 0;\n height: 100%;\n width: 100%;\n\n & > path {\n vector-effect: non-scaling-stroke;\n stroke-width: 2 !important;\n }\n }\n }\n\n &:not(:disabled):focus + span {\n box-shadow: ${focusRingStyle({\n border: {width: input.border.width, color: color.default.enabled.border},\n focusRing,\n })};\n }\n\n &:not(:disabled):focus:not(:focus-visible) + span {\n box-shadow: ${focusRingBorderStyle({\n color: color.default.enabled.border,\n width: input.border.width,\n })};\n }\n\n &:checked + span > svg:first-child {\n opacity: 1;\n }\n\n &[data-read-only] + span {\n background-color: ${color.default.readOnly.bg};\n box-shadow: ${focusRingBorderStyle({\n width: input.border.width,\n color: color.default.readOnly.border,\n })};\n color: ${color.default.readOnly.fg};\n }\n\n &:not([data-read-only]):disabled + span {\n background-color: ${color.default.disabled.bg};\n box-shadow: ${focusRingBorderStyle({\n width: input.border.width,\n color: color.default.disabled.border,\n })};\n color: ${color.default.disabled.fg};\n }\n\n &:indeterminate + span > svg:last-child {\n opacity: 1;\n }\n `\n}\n","import {CheckmarkIcon, RemoveIcon} from '@sanity/icons'\nimport React, {forwardRef, useEffect} from 'react'\nimport styled from 'styled-components'\nimport {useForwardedRef, useCustomValidity} from '../../hooks'\nimport {checkboxBaseStyles, inputElementStyles} from './styles'\n\n/**\n * @public\n */\nexport interface CheckboxProps {\n indeterminate?: boolean\n customValidity?: string\n}\n\nconst Root = styled.div(checkboxBaseStyles)\nconst Input = styled.input(inputElementStyles)\n\n/**\n * @public\n */\nexport const Checkbox = forwardRef(function Checkbox(\n props: Omit<React.HTMLProps<HTMLInputElement>, 'as' | 'type'> & CheckboxProps,\n forwardedRef: React.ForwardedRef<HTMLInputElement>\n) {\n const {\n checked,\n className,\n disabled,\n indeterminate,\n customValidity,\n readOnly,\n style,\n ...restProps\n } = props\n const ref = useForwardedRef(forwardedRef)\n\n useCustomValidity(ref, customValidity)\n\n useEffect(() => {\n if (ref.current) {\n // Set the indeterminate state\n ref.current.indeterminate = indeterminate || false\n }\n }, [indeterminate, ref])\n\n return (\n <Root className={className} data-ui=\"Checkbox\" style={style}>\n <Input\n data-read-only={!disabled && readOnly ? '' : undefined}\n {...restProps}\n checked={checked}\n disabled={disabled || readOnly}\n type=\"checkbox\"\n readOnly={readOnly}\n ref={ref}\n />\n <span>\n <CheckmarkIcon />\n <RemoveIcon />\n </span>\n </Root>\n )\n})\n","import {css, FlattenInterpolation, ThemeProps as StyledThemeProps} from 'styled-components'\nimport {ThemeProps} from '../../styles'\nimport {Theme} from '../../theme'\n\nfunction codeSyntaxHighlightingStyle({theme}: ThemeProps) {\n const color = theme.sanity.color.syntax\n\n return {\n '&.atrule': {color: color.atrule},\n '&.attr-name': {color: color.attrName},\n '&.attr-value': {color: color.attrValue},\n '&.attribute': {color: color.attribute},\n '&.boolean': {color: color.boolean},\n '&.builtin': {color: color.builtin},\n '&.cdata': {color: color.cdata},\n '&.char': {color: color.char},\n '&.class': {color: color.class},\n '&.class-name': {color: color.className},\n '&.comment': {color: color.comment},\n '&.constant': {color: color.constant},\n '&.deleted': {color: color.deleted},\n '&.doctype': {color: color.doctype},\n '&.entity': {color: color.entity},\n '&.function': {color: color.function},\n '&.hexcode': {color: color.hexcode},\n '&.id': {color: color.id},\n '&.important': {color: color.important},\n '&.inserted': {color: color.inserted},\n '&.keyword': {color: color.keyword},\n '&.number': {color: color.number},\n '&.operator': {color: color.operator},\n '&.prolog': {color: color.prolog},\n '&.property': {color: color.property},\n '&.pseudo-class': {color: color.pseudoClass},\n '&.pseudo-element': {color: color.pseudoElement},\n '&.punctuation': {color: color.punctuation},\n '&.regex': {color: color.regex},\n '&.selector': {color: color.selector},\n '&.string': {color: color.string},\n '&.symbol': {color: color.symbol},\n '&.tag': {color: color.tag},\n '&.unit': {color: color.unit},\n '&.url': {color: color.url},\n '&.variable': {color: color.variable},\n }\n}\n\nexport function codeBaseStyle(): FlattenInterpolation<StyledThemeProps<Theme>> {\n return css`\n color: var(--card-code-fg-color);\n\n & code {\n font-family: inherit;\n\n &.refractor .token {\n ${codeSyntaxHighlightingStyle}\n }\n }\n\n & a {\n color: inherit;\n text-decoration: underline;\n border-radius: 1px;\n }\n\n & [data-sanity-icon] {\n vertical-align: baseline;\n }\n `\n}\n","import React, {forwardRef} from 'react'\nimport Refractor from 'react-refractor'\nimport styled from 'styled-components'\nimport {useArrayProp} from '../../hooks'\nimport {responsiveCodeFontStyle, ResponsiveFontStyleProps} from '../../styles/internal'\nimport {codeBaseStyle} from './styles'\n\n/**\n * @public\n */\nexport interface CodeProps {\n as?: React.ElementType | keyof JSX.IntrinsicElements\n language?: string\n size?: number | number[]\n weight?: string\n}\n\nconst Root = styled.pre<ResponsiveFontStyleProps>(codeBaseStyle, responsiveCodeFontStyle)\n\n/**\n * @public\n */\nexport const Code = forwardRef(function Code(\n props: CodeProps & Omit<React.HTMLProps<HTMLElement>, 'as' | 'size'>,\n ref: React.ForwardedRef<HTMLElement>\n) {\n const {children, language: languageProp, size = 2, weight, ...restProps} = props\n const language = typeof languageProp === 'string' ? languageProp : undefined\n const registered = language ? Refractor.hasLanguage(language as any) : false\n\n return (\n <Root data-ui=\"Code\" {...restProps} $size={useArrayProp(size)} $weight={weight} ref={ref}>\n {!(language && registered) && <code>{children}</code>}\n {language && registered && <Refractor inline language={language} value={String(children)} />}\n </Root>\n )\n})\n","import {CSSObject} from 'styled-components'\nimport {rem, _responsive, ThemeProps} from '../../styles'\nimport {ResponsiveWidthStyleProps} from './types'\n\nconst BASE_STYLE: CSSObject = {\n width: '100%',\n margin: '0 auto',\n}\n\nexport function containerBaseStyle(): CSSObject {\n return BASE_STYLE\n}\n\nexport function responsiveContainerWidthStyle(\n props: ResponsiveWidthStyleProps & ThemeProps\n): CSSObject[] {\n const {theme} = props\n const {container, media} = theme.sanity\n\n return _responsive(media, props.$width, (val) => ({\n maxWidth: val === 'auto' ? 'none' : rem(container[val]),\n }))\n}\n","import React, {forwardRef} from 'react'\nimport styled from 'styled-components'\nimport {useArrayProp} from '../../hooks'\nimport {Box, BoxProps} from '../box'\nimport {ResponsiveWidthProps} from '../types'\nimport {containerBaseStyle, responsiveContainerWidthStyle} from './styles'\nimport {ResponsiveWidthStyleProps} from './types'\n\n/**\n * @public\n */\nexport interface ContainerProps extends BoxProps, ResponsiveWidthProps {}\n\nconst Root = styled(Box)<ResponsiveWidthStyleProps>(\n containerBaseStyle,\n responsiveContainerWidthStyle\n)\n\n/**\n * @public\n */\nexport const Container = forwardRef(function Container(\n props: ContainerProps & Omit<React.HTMLProps<HTMLDivElement>, 'as' | 'height' | 'width'>,\n ref: React.ForwardedRef<HTMLDivElement>\n) {\n const {as, width = 2, ...restProps} = props\n\n return (\n <Root\n data-ui=\"Container\"\n {...restProps}\n $width={useArrayProp(width)}\n forwardedAs={as}\n ref={ref}\n />\n )\n})\n","import React, {forwardRef} from 'react'\nimport styled from 'styled-components'\nimport {useArrayProp} from '../../hooks'\nimport {responsiveGridStyle, ResponsiveGridStyleProps} from '../../styles/internal'\nimport {Box, BoxProps} from '../box'\nimport {ResponsiveGridProps} from '../types'\n\n/**\n * @public\n */\nexport interface GridProps extends Omit<BoxProps, 'display'>, ResponsiveGridProps {}\n\nconst Root = styled(Box)<ResponsiveGridStyleProps>(responsiveGridStyle)\n\n/**\n * @public\n */\nexport const Grid = forwardRef(function Grid(\n props: GridProps & Omit<React.HTMLProps<HTMLDivElement>, 'as' | 'height' | 'rows'>,\n ref: React.ForwardedRef<HTMLDivElement>\n) {\n const {as, autoRows, autoCols, autoFlow, columns, gap, gapX, gapY, rows, children, ...restProps} =\n props\n\n return (\n <Root\n data-as={typeof as === 'string' ? as : undefined}\n data-ui=\"Grid\"\n {...restProps}\n $autoRows={useArrayProp(autoRows)}\n $autoCols={useArrayProp(autoCols)}\n $autoFlow={useArrayProp(autoFlow)}\n $columns={useArrayProp(columns)}\n $gap={useArrayProp(gap)}\n $gapX={useArrayProp(gapX)}\n $gapY={useArrayProp(gapY)}\n $rows={useArrayProp(rows)}\n forwardedAs={as}\n ref={ref}\n >\n {children}\n </Root>\n )\n})\n","import {css, FlattenSimpleInterpolation} from 'styled-components'\nimport {ThemeProps} from '../../styles'\nimport {HeadingStyleProps} from './types'\n\nexport function headingBaseStyle(\n props: HeadingStyleProps & ThemeProps\n): FlattenSimpleInterpolation {\n const {$accent, $muted, theme} = props\n\n return css`\n ${$accent &&\n css`\n color: var(--card-accent-fg-color);\n `}\n\n ${$muted &&\n css`\n color: var(--card-muted-fg-color);\n `}\n\n & code {\n font-family: ${theme.sanity.fonts.code.family};\n border-radius: 1px;\n }\n\n & a {\n text-decoration: none;\n border-radius: 1px;\n color: var(--card-link-color);\n outline: none;\n\n @media (hover: hover) {\n &:hover {\n text-decoration: underline;\n }\n }\n\n &:focus {\n box-shadow: 0 0 0 1px var(--card-bg-color), 0 0 0 3px var(--card-focus-ring-color);\n }\n\n &:focus:not(:focus-visible) {\n box-shadow: none;\n }\n }\n\n & [data-sanity-icon] {\n vertical-align: baseline;\n }\n `\n}\n","import React, {forwardRef} from 'react'\nimport styled from 'styled-components'\nimport {useArrayProp} from '../../hooks'\nimport {\n ResponsiveFontStyleProps,\n responsiveHeadingFont,\n responsiveTextAlignStyle,\n ResponsiveTextAlignStyleProps,\n} from '../../styles/internal'\nimport {ThemeFontWeightKey} from '../../theme'\nimport {TextAlign} from '../../types'\nimport {headingBaseStyle} from './styles'\nimport {HeadingStyleProps} from './types'\n\n/**\n * @public\n */\nexport interface HeadingProps {\n accent?: boolean\n align?: TextAlign | TextAlign[]\n as?: React.ElementType | keyof JSX.IntrinsicElements\n muted?: boolean\n size?: number | number[]\n /**\n * Controls how overflowing text is treated.\n * Use `textOverflow=\"ellipsis\"` to render text as a single line which is concatenated with a `…` symbol.\n * @beta\n */\n textOverflow?: 'ellipsis'\n weight?: ThemeFontWeightKey\n}\n\nconst Root = styled.div<\n HeadingStyleProps & ResponsiveTextAlignStyleProps & ResponsiveFontStyleProps\n>(headingBaseStyle, responsiveTextAlignStyle, responsiveHeadingFont)\n\nconst SpanWithTextOverflow = styled.span`\n display: block;\n white-space: nowrap;\n text-overflow: ellipsis;\n overflow: hidden;\n`\n\n/**\n * @public\n */\nexport const Heading = forwardRef(function Heading(\n props: HeadingProps & Omit<React.HTMLProps<HTMLElement>, 'as' | 'size'>,\n ref: React.ForwardedRef<HTMLElement>\n) {\n const {\n accent = false,\n align,\n children: childrenProp,\n muted = false,\n size = 2,\n textOverflow,\n weight,\n ...restProps\n } = props\n\n let children = childrenProp\n\n if (textOverflow === 'ellipsis') {\n children = <SpanWithTextOverflow>{children}</SpanWithTextOverflow>\n }\n\n return (\n <Root\n data-ui=\"Heading\"\n {...restProps}\n $accent={accent}\n $align={useArrayProp(align)}\n $muted={muted}\n $size={useArrayProp(size)}\n $weight={weight}\n ref={ref}\n >\n <span>{children}</span>\n </Root>\n )\n})\n","import {CSSObject} from 'styled-components'\nimport {rem, _responsive, ThemeProps} from '../../styles'\nimport {ResponsiveInlineSpaceStyleProps} from './types'\n\nexport function inlineBaseStyle(): CSSObject {\n return {\n lineHeight: 0,\n\n '&&:not([hidden])': {\n display: 'block',\n },\n\n '& > div': {\n display: 'inline-block',\n verticalAlign: 'middle',\n },\n }\n}\n\nexport function inlineSpaceStyle(props: ResponsiveInlineSpaceStyleProps & ThemeProps): CSSObject[] {\n const {theme} = props\n\n return _responsive(theme.sanity.media, props.$space, (spaceIndex) => {\n const space = rem(theme.sanity.space[spaceIndex])\n\n return {\n margin: `-${space} 0 0 -${space}`,\n '& > div': {padding: `${space} 0 0 ${space}`},\n }\n })\n}\n","import React, {forwardRef, useMemo} from 'react'\nimport styled from 'styled-components'\nimport {useArrayProp} from '../../hooks'\nimport {Box, BoxProps} from '../box'\nimport {childrenToElementArray} from '../helpers'\nimport {inlineBaseStyle, inlineSpaceStyle} from './styles'\nimport {ResponsiveInlineSpaceStyleProps} from './types'\n\n/**\n * @public\n */\nexport interface InlineProps extends Omit<BoxProps, 'display'> {\n space?: number | number[]\n}\n\nconst Root = styled(Box)<ResponsiveInlineSpaceStyleProps>(inlineBaseStyle, inlineSpaceStyle)\n\n/**\n * @public\n */\nexport const Inline = forwardRef(function Inline(\n props: InlineProps & React.HTMLProps<HTMLDivElement>,\n ref\n) {\n const {as, children: childrenProp, space, ...restProps} = props\n\n const children = useMemo(\n () =>\n childrenToElementArray(childrenProp)\n .filter(Boolean)\n .map((child, idx) => <div key={idx}>{child}</div>),\n [childrenProp]\n )\n\n return (\n <Root data-ui=\"Inline\" {...restProps} $space={useArrayProp(space)} forwardedAs={as} ref={ref}>\n {children}\n </Root>\n )\n})\n","import React, {forwardRef} from 'react'\nimport styled, {css} from 'styled-components'\nimport {useArrayProp} from '../../hooks'\nimport {responsiveRadiusStyle, ResponsiveRadiusStyleProps} from '../../styles/internal'\nimport {Box} from '../box'\nimport {Code} from '../code'\n\n/**\n * @public\n */\nexport interface KBDProps {\n as?: React.ElementType | keyof JSX.IntrinsicElements\n fontSize?: number | number[]\n padding?: number | number[]\n radius?: number | number[]\n}\n\nfunction kbdStyle() {\n return css`\n background: var(--card-bg-color);\n font: inherit;\n box-shadow: inset 0 0 0 1px var(--card-hairline-hard-color);\n\n &:not([hidden]) {\n display: inline-block;\n }\n `\n}\n\nconst Root = styled.kbd<ResponsiveRadiusStyleProps>(responsiveRadiusStyle, kbdStyle)\n\n/**\n * @public\n */\nexport const KBD = forwardRef(function KBD(\n props: KBDProps & Omit<React.HTMLProps<HTMLElement>, 'as' | 'ref' | 'size'>,\n ref: React.ForwardedRef<HTMLDivElement>\n) {\n const {children, fontSize = 1, padding = 1, radius = 2, ...restProps} = props\n\n return (\n <Root data-ui=\"KBD\" {...restProps} $radius={useArrayProp(radius)} ref={ref}>\n <Box as=\"span\" padding={padding}>\n <Code as=\"span\" muted size={fontSize}>\n {children}\n </Code>\n </Box>\n </Root>\n )\n})\n","import {createContext} from 'react'\nimport {globalScope} from '../../lib/globalScope'\nimport {BoundaryElementContextValue} from './types'\n\nconst key = Symbol.for('@sanity/ui/context/boundaryElement')\n\nglobalScope[key] = globalScope[key] || createContext<BoundaryElementContextValue | null>(null)\n\nexport const BoundaryElementContext: React.Context<BoundaryElementContextValue | null> =\n globalScope[key]\n","import React, {useMemo} from 'react'\nimport {BoundaryElementContext} from './boundaryElementContext'\nimport {BoundaryElementContextValue} from './types'\n\n/**\n * @public\n */\nexport interface BoundaryElementProviderProps {\n children: React.ReactNode\n element: HTMLElement | null\n}\n\n/**\n * @public\n */\nexport function BoundaryElementProvider(props: BoundaryElementProviderProps): React.ReactElement {\n const {children, element} = props\n const value: BoundaryElementContextValue = useMemo(() => ({version: 0.0, element}), [element])\n\n return <BoundaryElementContext.Provider value={value}>{children}</BoundaryElementContext.Provider>\n}\n","import {useContext} from 'react'\nimport {isRecord} from '../../lib/isRecord'\nimport {BoundaryElementContext} from './boundaryElementContext'\nimport {BoundaryElementContextValue} from './types'\n\nconst DEFAULT_VALUE: BoundaryElementContextValue = {\n version: 0.0,\n element: null,\n}\n\n/**\n * @public\n */\nexport function useBoundaryElement(): BoundaryElementContextValue {\n const value = useContext(BoundaryElementContext)\n\n // NOTE: This check is for future-compatiblity\n // - If the value is not an object, it’s not compatible with the current version\n // - If the value is an object, but doesn’t have `version: 0.0`, it’s not compatible with the current version\n if (value && (!isRecord(value) || value.version !== 0.0)) {\n throw new Error('useBoundaryElement(): the context value is not compatible')\n }\n\n return value || DEFAULT_VALUE\n}\n","export function findMaxBreakpoints(media: number[], width: number): number[] {\n const ret: number[] = []\n\n for (let i = 0; i < media.length; i += 1) {\n const bp = media[i]\n\n if (bp > width) {\n ret.push(i)\n }\n }\n\n return ret\n}\n\nexport function findMinBreakpoints(media: number[], width: number): number[] {\n const ret: number[] = []\n\n for (let i = 0; i < media.length; i += 1) {\n const bp = media[i]\n\n if (bp <= width) {\n ret.push(i)\n }\n }\n\n return ret\n}\n","import React, {forwardRef, useCallback, useMemo, useState} from 'react'\nimport {useElementSize, useForwardedRef} from '../../hooks'\nimport {useTheme} from '../../theme'\nimport {findMaxBreakpoints, findMinBreakpoints} from './helpers'\n\n/**\n * DO NOT USE IN PRODUCTION.\n * @beta\n */\nexport interface MediaQueryProps {\n as?: React.ElementType | keyof JSX.IntrinsicElements\n media?: number[]\n}\n\n/**\n * DO NOT USE IN PRODUCTION.\n * @beta\n */\nexport const ElementQuery = forwardRef(function ElementQuery(\n props: MediaQueryProps & Omit<React.HTMLProps<HTMLDivElement>, 'as' | 'media'>,\n ref: React.ForwardedRef<HTMLDivElement>\n) {\n const theme = useTheme()\n const {children, media = theme.sanity.media, ...restProps} = props\n\n const forwardedRef = useForwardedRef(ref)\n const [element, setElement] = useState<HTMLDivElement | null>(null)\n const elementSize = useElementSize(element)\n const width = useMemo(() => elementSize?.border.width ?? window.innerWidth, [elementSize])\n\n const max = useMemo(() => findMaxBreakpoints(media, width), [media, width])\n const min = useMemo(() => findMinBreakpoints(media, width), [media, width])\n\n const setRef = useCallback(\n (el: HTMLDivElement | null) => {\n forwardedRef.current = el\n setElement(el)\n },\n [forwardedRef]\n )\n\n return (\n <div\n data-ui=\"ElementQuery\"\n {...restProps}\n data-eq-max={max.length ? max.join(' ') : undefined}\n data-eq-min={min.length ? min.join(' ') : undefined}\n ref={setRef}\n >\n {children}\n </div>\n )\n})\n","import React from 'react'\nimport {Code} from '../primitives/code'\n\n/**\n * DO NOT USE IN PRODUCTION\n * @beta\n */\nexport interface ErrorBoundaryProps {\n onCatch: (params: {error: Error; info: React.ErrorInfo}) => void\n}\n\n/**\n * DO NOT USE IN PRODUCTION\n * @beta\n */\nexport interface ErrorBoundaryState {\n error: Error | null\n}\n\n/**\n * DO NOT USE IN PRODUCTION\n * @beta\n */\nexport class ErrorBoundary extends React.Component<ErrorBoundaryProps, ErrorBoundaryState> {\n state: ErrorBoundaryState = {error: null}\n\n static getDerivedStateFromError(error: Error): ErrorBoundaryState {\n // Update state so the next render will show the fallback UI.\n return {error}\n }\n\n componentDidCatch(error: Error, info: React.ErrorInfo): void {\n this.props.onCatch({error, info})\n }\n\n render(): React.ReactNode {\n const {error} = this.state\n\n if (error) {\n const message = typeof error?.message === 'string' ? error.message : 'Error'\n\n return <Code>{message}</Code>\n }\n\n return this.props.children\n }\n}\n","import {createContext} from 'react'\nimport {globalScope} from '../../lib/globalScope'\nimport {LayerContextValue} from './types'\n\nconst key = Symbol.for('@sanity/ui/context/layer')\n\nglobalScope[key] = globalScope[key] || createContext<LayerContextValue | null>(null)\n\nexport const LayerContext: React.Context<LayerContextValue | null> = globalScope[key]\n","import {useContext} from 'react'\nimport {isRecord} from '../../lib/isRecord'\nimport {LayerContext} from './layerContext'\nimport {LayerContextValue} from './types'\n\n/**\n * @public\n */\nexport function useLayer(): LayerContextValue {\n const value = useContext(LayerContext)\n\n if (!value) {\n throw new Error('useLayer(): missing context value')\n }\n\n // NOTE: This check is for future-compatiblity\n // - If the value is not an object, it’s not compatible with the current version\n // - If the value is an object, but doesn’t have `version: 0.0`, it’s not compatible with the current version\n if (!isRecord(value) || value.version !== 0.0) {\n throw new Error('useLayer(): the context value is not compatible')\n }\n\n return value\n}\n","import React, {useCallback, useContext, useEffect, useMemo, useState} from 'react'\nimport {useMediaIndex, useArrayProp} from '../../hooks'\nimport {LayerContext} from './layerContext'\nimport {LayerContextValue} from './types'\n\n/**\n * @public\n */\nexport interface LayerProviderProps {\n children?: React.ReactNode\n zOffset?: number | number[]\n}\n\n/**\n * @public\n */\nexport function LayerProvider(props: LayerProviderProps): React.ReactElement {\n const {children, zOffset: zOffsetProp = 0} = props\n const parent = useContext(LayerContext)\n const zOffset = useArrayProp(zOffsetProp)\n const maxMediaIndex = zOffset.length - 1\n const mediaIndex = Math.min(useMediaIndex(), maxMediaIndex)\n const zIndex = parent ? parent.zIndex + zOffset[mediaIndex] : zOffset[mediaIndex]\n const [size, setSize] = useState(0)\n\n const registerChild = useCallback(() => {\n setSize((v) => v + 1)\n\n return () => setSize((v) => v - 1)\n }, [])\n\n const parentRegisterChild = parent?.registerChild\n\n useEffect(() => {\n if (!parentRegisterChild) return\n\n return parentRegisterChild()\n }, [parentRegisterChild])\n\n const value: LayerContextValue = useMemo(\n () => ({version: 0.0, isTopLayer: size === 0, registerChild, size, zIndex}),\n [size, registerChild, zIndex]\n )\n\n return <LayerContext.Provider value={value}>{children}</LayerContext.Provider>\n}\n","import React, {forwardRef} from 'react'\nimport styled from 'styled-components'\nimport {EMPTY_RECORD} from '../../constants'\nimport {LayerProvider} from './layerProvider'\nimport {useLayer} from './useLayer'\n\n/**\n * @public\n */\nexport interface LayerProps {\n as?: React.ElementType | keyof JSX.IntrinsicElements\n zOffset?: number | number[]\n}\n\ninterface LayerChildrenProps {\n as?: React.ElementType | keyof JSX.IntrinsicElements\n}\n\nconst Root = styled.div`\n position: relative;\n`\n\nconst LayerChildren = forwardRef(function LayerChildren(\n props: LayerChildrenProps & Omit<React.HTMLProps<HTMLDivElement>, 'as'>,\n ref: React.Ref<HTMLDivElement>\n) {\n const {children, style = EMPTY_RECORD, ...restProps} = props\n const {zIndex} = useLayer()\n\n return (\n <Root {...restProps} data-ui=\"Layer\" ref={ref} style={{...style, zIndex}}>\n {children}\n </Root>\n )\n})\n\n/**\n * @public\n */\nexport const Layer = forwardRef(function Layer(\n props: LayerProps & Omit<React.HTMLProps<HTMLDivElement>, 'as'>,\n ref: React.Ref<HTMLDivElement>\n) {\n const {children, zOffset = 1, ...restProps} = props\n\n return (\n <LayerProvider zOffset={zOffset}>\n <LayerChildren {...restProps} ref={ref}>\n {children}\n </LayerChildren>\n </LayerProvider>\n )\n})\n","import {createContext} from 'react'\nimport {globalScope} from '../../lib/globalScope'\nimport {PortalContextValue} from './types'\n\nconst key = Symbol.for('@sanity/ui/context/portal')\nconst elementKey = Symbol.for('@sanity/ui/context/portal/element')\n\nglobalScope[elementKey] = null\n\nexport const defaultContextValue: PortalContextValue = {\n version: 0.0,\n boundaryElement: null,\n get element() {\n if (typeof window === 'undefined') {\n return null\n }\n\n if (globalScope[elementKey]) {\n return globalScope[elementKey]\n }\n\n globalScope[elementKey] = document.createElement('div')\n globalScope[elementKey].setAttribute('data-portal', '')\n\n document.body.appendChild(globalScope[elementKey])\n\n return globalScope[elementKey]\n },\n}\n\nglobalScope[key] = globalScope[key] || createContext<PortalContextValue>(defaultContextValue)\n\nexport const PortalContext: React.Context<PortalContextValue> = globalScope[key]\n","import {useContext} from 'react'\nimport {isRecord} from '../../lib/isRecord'\nimport {PortalContext} from './portalContext'\nimport {PortalContextValue} from './types'\n\n/**\n * @public\n */\nexport function usePortal(): PortalContextValue {\n const value = useContext(PortalContext)\n\n if (!value) {\n throw new Error('usePortal(): missing context value')\n }\n\n // NOTE: This check is for future-compatiblity\n // - If the value is not an object, it’s not compatible with the current version\n // - If the value is an object, but doesn’t have `version: 0.0`, it’s not compatible with the current version\n if (!isRecord(value) || value.version !== 0.0) {\n throw new Error('usePortal(): the context value is not compatible')\n }\n\n return value\n}\n","import React from 'react'\nimport ReactDOM from 'react-dom'\nimport {usePortal} from './usePortal'\n\n/**\n * @public\n */\nexport interface PortalProps {\n children: React.ReactNode\n /**\n * @beta This API might change. DO NOT USE IN PRODUCTION.\n */\n __unstable_name?: string\n}\n\n/**\n * @public\n */\nexport function Portal(props: PortalProps): React.ReactPortal | null {\n const {children, __unstable_name: name} = props\n const portal = usePortal()\n const portalElement =\n (name ? portal.elements && portal.elements[name] : portal.element) || portal.elements?.default\n\n if (!portalElement) {\n return null\n }\n\n return ReactDOM.createPortal(children, portalElement)\n}\n","import {useRef} from 'react'\n\n/**\n * This is a React hook to make sure that a record identity is the same on every render. Uses strict\n * equality comparison (eg by identity), and only goes one level deep.\n *\n * @internal\n */\ntype Comparable = Record<string | number | symbol, unknown> | undefined | null\n\nexport function useUnique<ValueType extends Comparable = Comparable>(value: ValueType): ValueType {\n const valueRef = useRef<ValueType>(value)\n\n if (!_isEqual(valueRef.current, value)) {\n valueRef.current = value\n }\n\n return valueRef.current\n}\n\nfunction _isEqual(objA: Comparable, objB: Comparable): boolean {\n if (!objA || !objB) {\n return objA === objB\n }\n\n const keysA = Object.keys(objA)\n const keysB = Object.keys(objB)\n\n if (keysA.length !== keysB.length) {\n return false\n }\n\n return keysA.every((key) => objA[key] === objB[key])\n}\n","import React, {useMemo} from 'react'\nimport {useUnique} from '../../hooks/_internal'\nimport {PortalContext} from './portalContext'\nimport {PortalContextValue} from './types'\n\n/**\n * @public\n */\nexport interface PortalProviderProps {\n /**\n * @deprecated Use `<BoundaryElementProvider element={...} />` instead\n */\n boundaryElement?: HTMLElement | null\n children: React.ReactNode\n element?: HTMLElement | null\n /**\n * @beta\n */\n __unstable_elements?: Record<string, HTMLElement | null | undefined>\n}\n\nconst __BROWSER__ = typeof window !== 'undefined'\n\n/**\n * @public\n */\nexport function PortalProvider(props: PortalProviderProps): React.ReactElement {\n const {boundaryElement, children, element, __unstable_elements: elementsProp} = props\n const elements = useUnique(elementsProp)\n\n const value: PortalContextValue = useMemo(() => {\n return {\n version: 0.0,\n boundaryElement: boundaryElement || null,\n element: element || (__BROWSER__ && document.body) || null,\n elements,\n }\n }, [boundaryElement, element, elements])\n\n return <PortalContext.Provider value={value}>{children}</PortalContext.Provider>\n}\n","import React, {forwardRef} from 'react'\nimport styled from 'styled-components'\n\n/**\n * @public\n */\nexport interface SrOnlyProps {\n as?: React.ElementType | keyof JSX.IntrinsicElements\n children?: React.ReactNode\n}\n\nconst Root = styled.div`\n display: block;\n width: 0;\n height: 0;\n position: absolute;\n overflow: hidden;\n`\n\n/**\n * @public\n */\nexport const SrOnly = forwardRef(function SrOnly(\n props: SrOnlyProps & Omit<React.HTMLProps<HTMLDivElement>, 'aria-hidden' | 'as'>,\n ref: React.Ref<HTMLDivElement>\n) {\n const {as, children} = props\n\n return (\n <Root aria-hidden as={as} data-ui=\"SrOnly\" ref={ref}>\n {children}\n </Root>\n )\n})\n","/**\n * @internal\n */\nexport function _raf(fn: () => void): () => void {\n const frameId = requestAnimationFrame(fn)\n\n return () => {\n cancelAnimationFrame(frameId)\n }\n}\n\n/**\n * @internal\n */\nexport function _raf2(fn: () => void): () => void {\n let innerDispose: (() => void) | null = null\n\n const outerDispose = _raf(() => {\n innerDispose = _raf(fn)\n })\n\n return () => {\n if (innerDispose) innerDispose()\n\n outerDispose()\n }\n}\n","/**\n * @internal\n */\nexport function _isEnterToClickElement(element: HTMLElement): boolean {\n return isHTMLAnchorElement(element) || isHTMLButtonElement(element)\n}\n\n/**\n * @internal\n */\nexport function isHTMLElement(node: unknown): node is HTMLElement {\n return node instanceof Node && node.nodeType === Node.ELEMENT_NODE\n}\n\n/**\n * @internal\n */\nexport function isHTMLAnchorElement(element: unknown): element is HTMLAnchorElement {\n return isHTMLElement(element) && element.nodeName === 'A'\n}\n\n/**\n * @internal\n */\nexport function isHTMLInputElement(element: unknown): element is HTMLInputElement {\n return isHTMLElement(element) && element.nodeName === 'INPUT'\n}\n\n/**\n * @internal\n */\nexport function isHTMLButtonElement(element: unknown): element is HTMLButtonElement {\n return isHTMLElement(element) && element.nodeName === 'BUTTON'\n}\n\n/**\n * @internal\n */\nexport function isHTMLSelectElement(element: unknown): element is HTMLSelectElement {\n return isHTMLElement(element) && element.nodeName === 'SELECT'\n}\n\n/**\n * @internal\n */\nexport function isHTMLTextAreaElement(element: unknown): element is HTMLTextAreaElement {\n return isHTMLElement(element) && element.nodeName === 'TEXTAREA'\n}\n","import {\n isHTMLElement,\n isHTMLAnchorElement,\n isHTMLInputElement,\n isHTMLButtonElement,\n isHTMLSelectElement,\n isHTMLTextAreaElement,\n} from './element'\n\n// export const globalFocusState = {\n// IgnoreUtilFocusChanges: false,\n// }\n\n/**\n * @internal\n */\nexport function _hasFocus(element: HTMLElement): boolean {\n return Boolean(document.activeElement) && element.contains(document.activeElement)\n}\n\n/**\n * @internal\n */\nexport function isFocusable(element: HTMLElement): boolean {\n if (\n element.tabIndex > 0 ||\n (element.tabIndex === 0 && element.getAttribute('tabIndex') !== null)\n ) {\n return true\n }\n\n if (isHTMLAnchorElement(element)) {\n return Boolean(element.href) && element.rel !== 'ignore'\n }\n\n if (isHTMLInputElement(element)) {\n return element.type !== 'hidden' && element.type !== 'file' && !element.disabled\n }\n\n if (\n isHTMLButtonElement(element) ||\n isHTMLSelectElement(element) ||\n isHTMLTextAreaElement(element)\n ) {\n return !element.disabled\n }\n\n return false\n}\n\n/**\n * @internal\n */\nexport function attemptFocus(element: HTMLElement): boolean {\n if (!isFocusable(element)) {\n return false\n }\n\n // globalFocusState.IgnoreUtilFocusChanges = true\n\n try {\n element.focus()\n } catch (_) {\n // ignore\n }\n\n // globalFocusState.IgnoreUtilFocusChanges = false\n\n return document.activeElement === element\n}\n\n/**\n * @internal\n */\nexport function focusFirstDescendant(element: HTMLElement): boolean {\n for (let i = 0; i < element.childNodes.length; i++) {\n const child = element.childNodes[i]\n\n if (isHTMLElement(child) && (attemptFocus(child) || focusFirstDescendant(child))) {\n return true\n }\n }\n\n return false\n}\n\n/**\n * @internal\n */\nexport function focusLastDescendant(element: HTMLElement): boolean {\n for (let i = element.childNodes.length - 1; i >= 0; i--) {\n const child = element.childNodes[i]\n\n if (isHTMLElement(child) && (attemptFocus(child) || focusLastDescendant(child))) {\n return true\n }\n }\n\n return false\n}\n","/**\n * @internal\n */\nexport function _isScrollable(el: Node): boolean {\n if (!(el instanceof Element)) return false\n\n const style = window.getComputedStyle(el)\n\n return (\n style.overflowX.includes('auto') ||\n style.overflowX.includes('scroll') ||\n style.overflowY.includes('auto') ||\n style.overflowY.includes('scroll')\n )\n}\n","import React, {forwardRef, useEffect, useMemo, useRef, useState} from 'react'\nimport styled from 'styled-components'\nimport {_isScrollable} from '../../helpers'\nimport {useForwardedRef} from '../../hooks'\nimport {_ResizeObserver} from '../../observers'\nimport {StackProps} from '../../primitives'\nimport {useTheme} from '../../theme'\n\n/**\n * @beta\n */\nexport interface VirtualListChangeOpts {\n fromIndex: number\n gap: number\n itemHeight: number\n scrollHeight: number\n scrollTop: number\n toIndex: number\n}\n\n/**\n * @beta\n */\nexport interface VirtualListProps<Item = any> {\n as?: React.ElementType | keyof JSX.IntrinsicElements\n gap?: number\n getItemKey?: (item: Item, itemIndex: number) => string\n items?: Item[]\n onChange?: (opts: VirtualListChangeOpts) => void\n renderItem?: (item: Item) => React.ReactNode\n}\n\nconst Root = styled.div`\n position: relative;\n`\n\nconst ItemWrapper = styled.div`\n position: absolute;\n left: 0;\n right: 0;\n`\n\n/**\n * @beta\n */\nexport const VirtualList = forwardRef(function VirtualList(\n props: VirtualListProps &\n StackProps &\n Omit<React.HTMLProps<HTMLDivElement>, 'as' | 'children' | 'onChange' | 'ref'>,\n ref: React.ForwardedRef<HTMLDivElement>\n): React.ReactElement {\n const {as = 'div', gap = 0, getItemKey, items = [], onChange, renderItem, ...restProps} = props\n const {space} = useTheme().sanity\n const forwardedRef = useForwardedRef(ref)\n const wrapperRef = useRef<HTMLDivElement | null>(null)\n const [scrollTop, setScrollTop] = useState(0)\n const [scrollHeight, setScrollHeight] = useState(0)\n const [itemHeight, setItemHeight] = useState(-1)\n\n useEffect(() => {\n if (!wrapperRef.current) return\n\n const firstElement = wrapperRef.current.firstChild\n\n if (firstElement instanceof HTMLElement) {\n setItemHeight(firstElement.offsetHeight)\n }\n }, [renderItem])\n\n useEffect(() => {\n if (!forwardedRef.current) return\n\n let _scrollEl = forwardedRef.current.parentNode\n\n while (_scrollEl && !_isScrollable(_scrollEl)) {\n _scrollEl = _scrollEl.parentNode\n }\n\n if (_scrollEl) {\n const scrollEl = _scrollEl\n\n if (!(scrollEl instanceof HTMLElement)) return\n\n const handleScroll = () => {\n setScrollTop(scrollEl.scrollTop)\n }\n\n scrollEl.addEventListener('scroll', handleScroll, {passive: true})\n\n const ro = new _ResizeObserver((entries) => {\n setScrollHeight(entries[0].contentRect.height)\n })\n\n ro.observe(scrollEl)\n\n handleScroll()\n\n return () => {\n scrollEl.removeEventListener('scroll', handleScroll)\n\n ro.unobserve(scrollEl)\n ro.disconnect()\n }\n }\n\n const handleScroll = () => {\n setScrollTop(window.scrollY)\n }\n\n const handleResize = () => {\n setScrollHeight(window.innerHeight)\n }\n\n window.addEventListener('scroll', handleScroll, {passive: true})\n window.addEventListener('resize', handleResize)\n\n setScrollHeight(window.innerHeight)\n\n handleScroll()\n\n return () => {\n window.removeEventListener('scroll', handleScroll)\n window.removeEventListener('resize', handleResize)\n }\n }, [forwardedRef])\n\n const len = items.length\n const height = itemHeight ? len * (itemHeight + space[gap]) - space[gap] : 0\n const fromIndex = height ? Math.max(Math.floor((scrollTop / height) * len) - 2, 0) : 0\n const toIndex = height ? Math.ceil(((scrollTop + scrollHeight) / height) * len) + 1 : 0\n\n useEffect(() => {\n if (!onChange) return\n onChange({fromIndex, gap: space[gap], itemHeight, scrollHeight, scrollTop, toIndex})\n }, [fromIndex, gap, itemHeight, onChange, scrollHeight, scrollTop, space, toIndex])\n\n const children = useMemo(() => {\n if (!renderItem || items.length === 0) return null\n\n if (itemHeight === -1) {\n return [<ItemWrapper key={0}>{renderItem(items[0])}</ItemWrapper>]\n }\n\n return items.slice(fromIndex, toIndex).map((item, _itemIndex) => {\n const itemIndex = fromIndex + _itemIndex\n const node = renderItem(item)\n const key = getItemKey ? getItemKey(item, itemIndex) : itemIndex\n\n return (\n <ItemWrapper key={key} style={{top: itemIndex * (itemHeight + space[gap])}}>\n {node}\n </ItemWrapper>\n )\n })\n }, [fromIndex, gap, getItemKey, itemHeight, items, renderItem, space, toIndex])\n\n const wrapperStyle = useMemo(() => ({height}), [height])\n\n return (\n <Root as={as} data-ui=\"VirtualList\" {...restProps} ref={forwardedRef}>\n <div ref={wrapperRef} style={wrapperStyle}>\n {children}\n </div>\n </Root>\n )\n})\n","import React, {forwardRef} from 'react'\nimport styled from 'styled-components'\n\nconst Root = styled.div`\n position: absolute;\n pointer-events: none;\n width: 27px;\n height: 27px;\n fill: none;\n\n :empty + & {\n display: none;\n }\n\n & > svg {\n display: block;\n transform-origin: 13.5px 13.5px;\n }\n\n [data-popper-placement^='top'] > div > & {\n bottom: -27px;\n }\n\n [data-popper-placement^='right'] > div > & {\n left: -27px;\n\n & > svg {\n transform: rotate(90deg);\n }\n }\n\n [data-popper-placement^='left'] > div > & {\n right: -27px;\n\n & > svg {\n transform: rotate(-90deg);\n }\n }\n\n [data-popper-placement^='bottom'] > div > & {\n top: -27px;\n\n & > svg {\n transform: rotate(180deg);\n }\n }\n`\n\nconst BorderPath = styled.path`\n fill: var(--card-shadow-outline-color);\n`\n\nconst ShapePath = styled.path`\n fill: var(--card-bg-color);\n`\n\nexport const PopoverArrow = forwardRef(function PopoverArrow(\n props: Omit<React.HTMLProps<HTMLDivElement>, 'as'>,\n ref: React.ForwardedRef<HTMLDivElement>\n) {\n return (\n <Root data-ui=\"PopoverArrow\" {...props} ref={ref}>\n <svg\n width=\"27\"\n height=\"11\"\n viewBox=\"0 0 27 11\"\n fill=\"none\"\n xmlns=\"http://www.w3.org/2000/svg\"\n >\n <BorderPath d=\"M1.18708 1C3.29803 1.0011 5.29585 1.95479 6.62414 3.59561L11.1683 9.20895C12.369 10.6922 14.631 10.6922 15.8317 9.20894L20.3759 3.59561C21.7042 1.95478 23.702 1.0011 25.8129 1H21.9436C21.0533 1.49255 20.2545 2.15618 19.5986 2.96641L15.0545 8.57975C14.254 9.56855 12.746 9.56855 11.9455 8.57975L7.40139 2.96642C6.74548 2.15618 5.94673 1.49255 5.05643 1H1.18708Z\" />\n <ShapePath d=\"M1.18342 0C3.59749 0 5.88246 1.0901 7.40138 2.96642L11.9455 8.57975C12.746 9.56855 14.254 9.56855 15.0545 8.57975L19.5986 2.96641C21.1175 1.0901 23.4025 0 25.8166 0H27H0H1.18342Z\" />\n </svg>\n </Root>\n )\n})\n","import maxSizeModifier from 'popper-max-size-modifier'\nimport {Modifier} from 'react-popper'\nimport {PopoverModifiersProps} from './types'\n\n/*\n\nThe order of popper phases:\n\n- beforeRead\n- read\n- afterRead\n- beforeMain\n- main\n- afterMain\n- beforeWrite\n- write\n- afterWrite\n\n*/\n\nexport function getPopoverModifiers(props: PopoverModifiersProps): Modifier<any, any>[] {\n const {\n allowedAutoPlacements,\n arrow,\n arrowElement,\n boundaryElement,\n constrainSize,\n distance,\n fallbackPlacements,\n margins,\n matchReferenceWidth,\n open,\n preventOverflow,\n skidding,\n tether,\n tetherOffset,\n } = props\n\n // NOTE: For later viewers:\n // Prior to adding this change, the popover would get `maxWidth: 0` the 2nd time it\n // was opened, when used with `constrainSize`. I was looking for a way to \"reset\"\n // the size of the popover as measured by Popper.js, and this seems to be a workaround.\n if (!open) {\n return []\n }\n\n const detectOverflowOptions = {\n altAxis: !constrainSize,\n boundary: boundaryElement || undefined,\n padding: 8,\n tether,\n tetherOffset,\n }\n\n return [\n constrainSize && {\n ...maxSizeModifier,\n options: detectOverflowOptions,\n },\n constrainSize && {\n name: 'applyMaxSize',\n enabled: true,\n phase: 'beforeWrite',\n requires: ['maxSize'],\n fn({state}: any) {\n const {width, height} = state.modifiersData.maxSize\n\n state.styles.popper = {\n ...state.styles.popper,\n maxWidth: `${width}px`,\n maxHeight: `${height}px`,\n }\n },\n },\n arrow && {\n name: 'arrow',\n options: {\n element: arrowElement,\n padding: 4,\n },\n },\n (constrainSize || preventOverflow) && {\n name: 'preventOverflow',\n options: detectOverflowOptions,\n },\n {\n name: 'offset',\n options: {\n offset: [skidding, distance],\n },\n },\n margins && {\n name: 'margins',\n enabled: true,\n phase: 'beforeRead',\n fn: ({state}: any) => {\n const {rects} = state\n\n if (rects.reference) {\n rects.reference.x += margins[3]\n rects.reference.y += margins[1]\n rects.reference.width -= margins[1] + margins[3]\n rects.reference.height -= margins[0] + margins[2]\n }\n },\n },\n {\n name: 'flip',\n options: {\n allowedAutoPlacements,\n boundary: boundaryElement || undefined,\n fallbackPlacements,\n padding: 8,\n },\n },\n matchReferenceWidth && {\n name: 'matchWidth',\n enabled: true,\n phase: 'beforeWrite',\n requires: ['computeStyles'],\n fn({state}: any) {\n const {width} = state.rects.reference\n\n state.styles.popper.width = `${width}px`\n },\n effect: ({state}: any) => {\n const refElement = state.elements.reference\n\n if (refElement instanceof HTMLElement) {\n state.elements.popper.style.width = `${\n refElement.offsetWidth - (margins ? margins[1] + margins[3] : 0)\n }px`\n }\n },\n },\n ].filter(Boolean) as Modifier<any, any>[]\n}\n","import {useMemo} from 'react'\nimport {Modifier} from 'react-popper'\n\nimport {getPopoverModifiers} from './getPopoverModifiers'\nimport {PopoverModifiersProps} from './types'\n\nexport function usePopoverModifiers(props: PopoverModifiersProps): Modifier<any, any>[] {\n const {\n allowedAutoPlacements,\n arrow,\n arrowElement,\n boundaryElement,\n constrainSize,\n distance,\n fallbackPlacements,\n margins,\n matchReferenceWidth,\n open,\n preventOverflow,\n skidding,\n tether,\n tetherOffset,\n } = props\n\n return useMemo(() => {\n return getPopoverModifiers({\n allowedAutoPlacements,\n arrow,\n arrowElement,\n boundaryElement,\n constrainSize,\n distance,\n fallbackPlacements,\n margins,\n matchReferenceWidth,\n open,\n preventOverflow,\n skidding,\n tether,\n tetherOffset,\n })\n }, [\n allowedAutoPlacements,\n arrow,\n arrowElement,\n boundaryElement,\n constrainSize,\n distance,\n fallbackPlacements,\n margins,\n matchReferenceWidth,\n open,\n preventOverflow,\n skidding,\n tether,\n tetherOffset,\n ])\n}\n","import React, {\n cloneElement,\n forwardRef,\n useCallback,\n useEffect,\n useMemo,\n useRef,\n useState,\n} from 'react'\nimport {usePopper} from 'react-popper'\nimport styled, {css} from 'styled-components'\nimport {EMPTY_RECORD} from '../../constants'\nimport {useArrayProp, useForwardedRef} from '../../hooks'\nimport {ThemeColorSchemeKey, useTheme} from '../../theme'\nimport {CardTone, Placement, PopoverMargins} from '../../types'\nimport {Layer, LayerProps, Portal, useBoundaryElement, usePortal} from '../../utils'\nimport {Card} from '../card'\nimport {ResponsiveWidthStyleProps} from '../container'\nimport {responsiveContainerWidthStyle} from '../container/styles'\nimport {ResponsiveRadiusProps, ResponsiveShadowProps, ResponsiveWidthProps} from '../types'\nimport {PopoverArrow} from './arrow'\nimport {usePopoverModifiers} from './modifiers'\n\n/**\n * @public\n */\nexport interface PopoverProps\n extends Omit<LayerProps, 'as'>,\n ResponsiveRadiusProps,\n ResponsiveShadowProps,\n ResponsiveWidthProps {\n /**\n * @beta\n */\n __unstable_margins?: PopoverMargins\n allowedAutoPlacements?: Placement[]\n arrow?: boolean\n boundaryElement?: HTMLElement | null\n children?: React.ReactElement\n constrainSize?: boolean\n content?: React.ReactNode\n disabled?: boolean\n fallbackPlacements?: Placement[]\n open?: boolean\n padding?: number | number[]\n placement?: Placement\n portal?: boolean | string\n preventOverflow?: boolean\n referenceElement?: HTMLElement | null\n matchReferenceWidth?: boolean\n scheme?: ThemeColorSchemeKey\n tether?: boolean\n tetherOffset?: number | ((...args: any[]) => number)\n tone?: CardTone\n}\n\nconst Root = styled(Layer)<{$preventOverflow?: boolean}>(\n ({$preventOverflow}) => css`\n pointer-events: none;\n display: flex;\n flex-direction: column;\n max-width: calc(100% - 16px);\n\n & > * {\n min-height: 0;\n }\n\n /* Hide the popover when the reference element is out of bounds */\n ${$preventOverflow &&\n css`\n &[data-popper-reference-hidden='true'] {\n display: none;\n }\n `}\n `\n)\n\nconst PopoverCard = styled(Card)<\n ResponsiveWidthStyleProps & {\n $constrainSize?: boolean\n $preventOverflow?: boolean\n $width: (number | 'auto')[]\n }\n>(\n ({$constrainSize}) => css`\n flex: 1;\n max-height: ${$constrainSize && '100%'};\n pointer-events: all;\n\n && {\n display: flex;\n }\n\n flex-direction: column;\n\n & > * {\n min-height: 0;\n }\n\n ${responsiveContainerWidthStyle}\n `\n)\n\n/**\n * @public\n */\nexport const Popover = forwardRef(function Popover(\n props: PopoverProps &\n Omit<React.HTMLProps<HTMLDivElement>, 'as' | 'children' | 'content' | 'width'>,\n ref: React.ForwardedRef<HTMLDivElement>\n) {\n const boundaryElementContext = useBoundaryElement()\n const theme = useTheme()\n const {\n __unstable_margins: margins,\n allowedAutoPlacements,\n arrow = true,\n boundaryElement: boundaryElementProp = boundaryElementContext.element,\n children: child,\n content,\n constrainSize,\n disabled,\n fallbackPlacements,\n open = false,\n padding,\n placement = 'bottom',\n portal: portalProp = false,\n preventOverflow,\n radius = 3,\n referenceElement: referenceElementProp,\n matchReferenceWidth,\n shadow = 3,\n scheme,\n style = EMPTY_RECORD,\n tether,\n tetherOffset,\n tone = 'inherit',\n width: widthProp = 0,\n zOffset = theme.sanity.layer?.popover.zOffset,\n ...restProps\n } = props\n const forwardedRef = useForwardedRef(ref)\n const portal = usePortal()\n const [referenceElement, setReferenceElement] = useState<HTMLElement | null>(null)\n const [popperElement, setPopperElement] = useState<HTMLElement | null>(null)\n const [arrowElement, setArrowElement] = useState<HTMLElement | null>(null)\n const popperReferenceElement = referenceElementProp || referenceElement\n const width = useArrayProp(matchReferenceWidth ? 'auto' : widthProp)\n\n const modifiers = usePopoverModifiers({\n allowedAutoPlacements,\n arrow,\n arrowElement,\n boundaryElement: boundaryElementProp || portal.boundaryElement,\n constrainSize,\n distance: arrow ? 4 : 0,\n fallbackPlacements,\n margins,\n matchReferenceWidth,\n open,\n preventOverflow,\n skidding: 0,\n tether,\n tetherOffset,\n })\n\n const popper = usePopper(popperReferenceElement, popperElement, {\n placement,\n modifiers,\n })\n\n const {attributes, forceUpdate, styles} = popper\n\n const setRef = useCallback(\n (el: HTMLElement | null) => {\n const childRef = (child as any).ref\n\n setReferenceElement(el)\n\n if (typeof childRef === 'function') {\n childRef(el)\n } else if (childRef) {\n childRef.current = el\n }\n },\n [child]\n )\n\n const setRootRef = useCallback(\n (el: HTMLDivElement | null) => {\n setPopperElement(el)\n forwardedRef.current = el\n },\n [forwardedRef]\n )\n\n const popoverStyle = useMemo(() => ({...style, ...styles.popper}), [style, styles])\n\n const updateTimeoutRef = useRef<NodeJS.Timeout | null>(null)\n\n useEffect(() => {\n if (updateTimeoutRef.current) {\n clearTimeout(updateTimeoutRef.current)\n updateTimeoutRef.current = null\n }\n\n updateTimeoutRef.current = setTimeout(() => {\n if (forceUpdate) {\n try {\n forceUpdate()\n } catch (_) {\n // ignore caught error\n }\n }\n }, 0)\n }, [content, forceUpdate, open, popperReferenceElement])\n\n if (disabled) {\n return child || <></>\n }\n\n const node = (\n <Root\n data-ui=\"Popover\"\n {...restProps}\n $preventOverflow={preventOverflow}\n ref={setRootRef}\n style={popoverStyle}\n zOffset={zOffset}\n {...attributes.popper}\n >\n <PopoverCard\n $constrainSize={constrainSize}\n $width={width}\n data-ui=\"PopoverCard\"\n padding={padding}\n radius={radius}\n scheme={scheme}\n shadow={shadow}\n tone={tone}\n >\n {arrow && <PopoverArrow ref={setArrowElement} style={styles.arrow} />}\n {content}\n </PopoverCard>\n </Root>\n )\n\n return (\n <>\n {child && !referenceElementProp ? cloneElement(child, {ref: setRef}) : child || <></>}\n\n {open && (\n <>\n {portalProp && (\n <Portal __unstable_name={typeof portalProp === 'string' ? portalProp : undefined}>\n {node}\n </Portal>\n )}\n\n {!portalProp && node}\n </>\n )}\n </>\n )\n})\n","import {css, FlattenSimpleInterpolation} from 'styled-components'\nimport {rem, ThemeProps} from '../../styles'\nimport {focusRingBorderStyle, focusRingStyle} from '../../styles/internal'\n\nexport function radioBaseStyle(): FlattenSimpleInterpolation {\n return css`\n position: relative;\n\n &:not([hidden]) {\n display: inline-block;\n }\n\n &[data-read-only] {\n outline: 1px solid red;\n }\n `\n}\n\nexport function inputElementStyle(props: ThemeProps): FlattenSimpleInterpolation {\n const {theme} = props\n const {focusRing, input} = theme.sanity\n const color = theme.sanity.color.input\n const dist = (input.radio.size - input.radio.markSize) / 2\n\n return css`\n appearance: none;\n position: absolute;\n top: 0;\n left: 0;\n opacity: 0;\n height: 100%;\n width: 100%;\n outline: none;\n z-index: 1;\n padding: 0;\n margin: 0;\n border-radius: ${rem(input.radio.size / 2)};\n border: none;\n\n /* enabled */\n & + span {\n display: block;\n position: relative;\n height: ${rem(input.radio.size)};\n width: ${rem(input.radio.size)};\n border-radius: ${rem(input.radio.size / 2)};\n background: ${color.default.enabled.bg};\n box-shadow: ${focusRingBorderStyle({\n color: color.default.enabled.border,\n width: input.border.width,\n })};\n\n &::after {\n content: '';\n position: absolute;\n top: ${rem(dist)};\n left: ${rem(dist)};\n height: ${rem(input.radio.markSize)};\n width: ${rem(input.radio.markSize)};\n border-radius: ${rem(input.radio.markSize / 2)};\n background: ${color.default.enabled.fg};\n opacity: 0;\n }\n }\n\n /* focused */\n &:not(:disabled):focus + span {\n box-shadow: ${focusRingStyle({\n border: {width: input.border.width, color: color.default.enabled.border},\n focusRing,\n })};\n }\n\n &:not(:disabled):focus:not(:focus-visible) + span {\n box-shadow: ${focusRingBorderStyle({\n color: color.default.enabled.border,\n width: input.border.width,\n })};\n }\n\n &:checked + span::after {\n opacity: 1;\n }\n\n /* read only */\n &[data-read-only] + span {\n box-shadow: 0 0 0 1px ${color.default.readOnly.border};\n background: ${color.default.readOnly.bg};\n\n &::after {\n background: ${color.default.readOnly.fg};\n }\n }\n\n /* disabled */\n &:not([data-read-only]):disabled + span {\n box-shadow: 0 0 0 1px ${color.default.disabled.border};\n background: ${color.default.disabled.bg};\n\n &::after {\n background: ${color.default.disabled.fg};\n }\n }\n `\n}\n","import React, {forwardRef} from 'react'\nimport styled from 'styled-components'\nimport {useForwardedRef, useCustomValidity} from '../../hooks'\nimport {radioBaseStyle, inputElementStyle} from './styles'\n\n/**\n * @public\n */\nexport interface RadioProps {\n customValidity?: string\n}\n\nconst Root = styled.div(radioBaseStyle)\nconst Input = styled.input(inputElementStyle)\n\n/**\n * @public\n */\nexport const Radio = forwardRef(function Radio(\n props: Omit<React.HTMLProps<HTMLInputElement>, 'as' | 'type'> & RadioProps,\n forwardedRef: React.ForwardedRef<HTMLInputElement>\n) {\n const {className, disabled, style, customValidity, readOnly, ...restProps} = props\n const ref = useForwardedRef(forwardedRef)\n\n useCustomValidity(ref, customValidity)\n\n return (\n <Root className={className} data-ui=\"Radio\" style={style}>\n <Input\n data-read-only={!disabled && readOnly ? '' : undefined}\n {...restProps}\n disabled={disabled || readOnly}\n readOnly={readOnly}\n ref={ref}\n type=\"radio\"\n />\n <span />\n </Root>\n )\n})\n","import {css, CSSObject, FlattenSimpleInterpolation} from 'styled-components'\nimport {rem, _responsive, ThemeProps} from '../../styles'\nimport {\n focusRingBorderStyle,\n focusRingStyle,\n responsiveInputPaddingIconRightStyle,\n responsiveRadiusStyle,\n ResponsiveRadiusStyleProps,\n} from '../../styles/internal'\nimport {ThemeFontSize} from '../../theme'\n\nfunction rootStyle(): FlattenSimpleInterpolation {\n return css`\n position: relative;\n width: stretch;\n\n &:not([hidden]) {\n display: inline-block;\n }\n `\n}\n\nfunction inputBaseStyle(props: ThemeProps): FlattenSimpleInterpolation {\n const {theme} = props\n const font = theme.sanity.fonts.text\n\n return css`\n -webkit-font-smoothing: antialiased;\n appearance: none;\n border: 0;\n font-family: ${font.family};\n color: inherit;\n width: 100%;\n outline: none;\n margin: 0;\n\n &:disabled {\n opacity: 1;\n }\n `\n}\n\nfunction inputColorStyle(props: ThemeProps) {\n const {theme} = props\n const {focusRing, input} = theme.sanity\n const color = theme.sanity.color.input\n\n return css`\n /* enabled */\n background-color: ${color.default.enabled.bg};\n color: ${color.default.enabled.fg};\n box-shadow: ${focusRingBorderStyle({\n color: color.default.enabled.border,\n width: input.border.width,\n })};\n\n /* hovered */\n @media (hover: hover) {\n &:not(:disabled):hover {\n background-color: ${color.default.hovered.bg};\n color: ${color.default.hovered.fg};\n box-shadow: ${focusRingBorderStyle({\n color: color.default.hovered.border,\n width: input.border.width,\n })};\n }\n }\n\n /* focused */\n &:not(:disabled):focus {\n box-shadow: ${focusRingStyle({\n border: {width: input.border.width, color: color.default.enabled.border},\n focusRing,\n })};\n }\n\n /* read-only */\n &[data-read-only] {\n background-color: ${color.default.readOnly.bg};\n color: ${color.default.readOnly.fg};\n box-shadow: ${focusRingBorderStyle({\n color: color.default.readOnly.border,\n width: input.border.width,\n })};\n }\n\n /* disabled */\n &:not([data-read-only]):disabled {\n background-color: ${color.default.disabled.bg};\n color: ${color.default.disabled.fg};\n box-shadow: ${focusRingBorderStyle({\n color: color.default.disabled.border,\n width: input.border.width,\n })};\n }\n `\n}\n\nfunction textSize(size: ThemeFontSize) {\n return {fontSize: rem(size.fontSize), lineHeight: rem(size.lineHeight)}\n}\n\nfunction inputTextSizeStyle(props: {$fontSize: number[]} & ThemeProps) {\n const {theme, $fontSize} = props\n const {sizes} = theme.sanity.fonts.text\n\n return _responsive(theme.sanity.media, $fontSize, (sizeIndex) =>\n textSize(sizes[sizeIndex] || sizes[2])\n )\n}\n\nfunction inputStyle(): Array<\n | ((\n props: ResponsiveRadiusStyleProps & {\n $fontSize: number[]\n $padding: number[]\n $space: number[]\n } & ThemeProps\n ) => CSSObject[])\n | ((props: ThemeProps) => FlattenSimpleInterpolation)\n> {\n return [\n responsiveRadiusStyle,\n inputBaseStyle,\n inputColorStyle,\n inputTextSizeStyle,\n responsiveInputPaddingIconRightStyle,\n ]\n}\n\nfunction iconBoxStyle(props: ThemeProps): FlattenSimpleInterpolation {\n const {theme} = props\n const color = theme.sanity.color.input\n\n return css`\n pointer-events: none;\n position: absolute;\n top: 0;\n right: 0;\n\n /* enabled */\n --card-fg-color: ${color.default.enabled.fg};\n\n /* hover */\n @media (hover: hover) {\n select:not(disabled):not(:read-only):hover + && {\n --card-fg-color: ${color.default.hovered.fg};\n }\n }\n\n /* disabled */\n select:disabled + && {\n --card-fg-color: ${color.default.disabled.fg};\n }\n\n /* read-only */\n select[data-read-only] + && {\n --card-fg-color: ${color.default.readOnly.fg};\n }\n `\n}\n\nexport const selectStyle = {\n root: rootStyle,\n input: inputStyle,\n iconBox: iconBoxStyle,\n}\n","import {SelectIcon} from '@sanity/icons'\nimport React, {forwardRef} from 'react'\nimport styled from 'styled-components'\nimport {useForwardedRef, useCustomValidity, useArrayProp} from '../../hooks'\nimport {Box} from '../box'\nimport {Text} from '../text'\nimport {selectStyle} from './styles'\n\n/**\n * @public\n */\nexport interface SelectProps {\n fontSize?: number | number[]\n padding?: number | number[]\n radius?: number | number[]\n space?: number | number[]\n customValidity?: string\n}\n\nconst Root = styled.div(selectStyle.root)\n\nconst Input = styled.select<{\n $fontSize: number[]\n $padding: number[]\n $radius: number[]\n $space: number[]\n}>(selectStyle.input)\n\nconst IconBox = styled(Box)(selectStyle.iconBox)\n\n/**\n * @public\n */\nexport const Select = forwardRef(function Select(\n props: SelectProps & Omit<React.HTMLProps<HTMLSelectElement>, 'as'>,\n forwardedRef: React.ForwardedRef<HTMLSelectElement>\n) {\n const {\n children,\n customValidity,\n disabled,\n fontSize = 2,\n padding = 3,\n radius = 1,\n readOnly,\n space = 3,\n ...restProps\n } = props\n\n const ref = useForwardedRef(forwardedRef)\n\n useCustomValidity(ref, customValidity)\n\n return (\n <Root data-ui=\"Select\">\n <Input\n data-read-only={!disabled && readOnly ? '' : undefined}\n data-ui=\"Select\"\n {...restProps}\n $fontSize={useArrayProp(fontSize)}\n $padding={useArrayProp(padding)}\n $radius={useArrayProp(radius)}\n $space={useArrayProp(space)}\n disabled={disabled || readOnly}\n ref={ref}\n >\n {children}\n </Input>\n\n <IconBox padding={padding}>\n <Text size={fontSize}>\n <SelectIcon />\n </Text>\n </IconBox>\n </Root>\n )\n})\n","import {CSSObject} from 'styled-components'\nimport {rem, _responsive, ThemeProps} from '../../styles'\n\nexport interface ResponsiveStackSpaceStyleProps {\n $space: number[]\n}\n\nconst BASE_STYLE: CSSObject = {\n '&&:not([hidden])': {\n display: 'grid',\n },\n '&[data-as=\"ul\"],&[data-as=\"ol\"]': {\n listStyle: 'none',\n },\n gridTemplateColumns: 'minmax(0, 1fr)',\n gridAutoRows: 'min-content',\n}\n\nexport function stackBaseStyle(): CSSObject {\n return BASE_STYLE\n}\n\nexport function responsiveStackSpaceStyle(\n props: ResponsiveStackSpaceStyleProps & ThemeProps\n): CSSObject[] {\n const {theme} = props\n const {media, space} = theme.sanity\n\n return _responsive(media, props.$space, (spaceIndex) => ({\n gridGap: rem(space[spaceIndex]),\n }))\n}\n","import React, {forwardRef} from 'react'\nimport styled from 'styled-components'\nimport {useArrayProp} from '../../hooks'\nimport {Box, BoxProps} from '../box'\nimport {stackBaseStyle, responsiveStackSpaceStyle, ResponsiveStackSpaceStyleProps} from './styles'\n\n/**\n * @public\n */\nexport interface StackProps extends BoxProps {\n as?: React.ElementType | keyof JSX.IntrinsicElements\n space?: number | number[]\n}\n\nconst Root = styled(Box)<ResponsiveStackSpaceStyleProps>(stackBaseStyle, responsiveStackSpaceStyle)\n\n/**\n * @public\n */\nexport const Stack = forwardRef(function Stack(\n props: StackProps & Omit<React.HTMLProps<HTMLDivElement>, 'as' | 'ref'>,\n ref: React.ForwardedRef<HTMLDivElement>\n) {\n const {as, space, ...restProps} = props\n\n return (\n <Root\n data-as={typeof as === 'string' ? as : undefined}\n data-ui=\"Stack\"\n {...restProps}\n $space={useArrayProp(space)}\n forwardedAs={as}\n ref={ref}\n />\n )\n})\n","import {css, FlattenSimpleInterpolation} from 'styled-components'\nimport {rem, ThemeProps} from '../../styles'\nimport {focusRingStyle} from '../../styles/internal'\n\n/* Root */\nexport function switchBaseStyles(): FlattenSimpleInterpolation {\n return css`\n position: relative;\n &:not([hidden]) {\n display: inline-block;\n }\n `\n}\n\n/* Input */\nexport function switchInputStyles(): FlattenSimpleInterpolation {\n // Visually hide the input element while keeping it interactive\n return css`\n position: absolute;\n top: 0;\n right: 0;\n bottom: 0;\n left: 0;\n opacity: 0;\n height: 100%;\n width: 100%;\n outline: none;\n padding: 0;\n margin: 0;\n\n /* Place the input element above the representation element */\n z-index: 1;\n `\n}\n\n/* Representation */\nexport function switchRepresentationStyles(props: ThemeProps): FlattenSimpleInterpolation {\n const {theme} = props\n const {focusRing, input} = theme.sanity\n const color = theme.sanity.color.button.default\n\n return css`\n --switch-bg-color: ${color.default.enabled.bg};\n --switch-fg-color: ${color.default.enabled.fg};\n --switch-box-shadow: none;\n\n &:not([hidden]) {\n display: block;\n }\n position: relative;\n width: ${rem(input.switch.width)};\n height: ${rem(input.switch.height)};\n border-radius: ${rem(input.switch.height / 2)};\n\n /* Make sure it’s not possible to interact with the wrapper element */\n pointer-events: none;\n\n &:after {\n content: '';\n display: block;\n position: absolute;\n top: 0;\n left: 0;\n right: 0;\n bottom: 0;\n z-index: 1;\n box-shadow: var(--switch-box-shadow);\n border-radius: inherit;\n }\n\n /* Focus styles */\n input:focus + && {\n --switch-box-shadow: ${focusRingStyle({focusRing})};\n }\n\n input:focus:not(:focus-visible) + && {\n --switch-box-shadow: none;\n }\n\n input:checked + && {\n --switch-bg-color: ${color.positive.enabled.bg};\n --switch-fg-color: ${color.positive.enabled.fg};\n }\n\n @media (hover: hover) {\n input:not(:disabled):hover + && {\n --switch-bg-color: ${color.default.hovered.bg};\n --switch-fg-color: ${color.default.hovered.fg};\n }\n\n input:not(:disabled):checked:hover + && {\n --switch-bg-color: ${color.positive.hovered.bg};\n --switch-fg-color: ${color.positive.hovered.fg};\n }\n }\n\n input:not([data-read-only]):disabled + && {\n --switch-bg-color: ${color.default.disabled.bg};\n --switch-fg-color: ${color.default.disabled.fg};\n }\n `\n}\n\n/* Track */\nexport function switchTrackStyles(props: ThemeProps): FlattenSimpleInterpolation {\n const {theme} = props\n const {input} = theme.sanity\n\n return css`\n &:not([hidden]) {\n display: block;\n }\n background-color: var(--switch-bg-color);\n position: absolute;\n left: 0;\n top: 0;\n width: ${rem(input.switch.width)};\n height: ${rem(input.switch.height)};\n border-radius: ${rem(input.switch.height / 2)};\n `\n}\n\n/* Thumb */\nexport function switchThumbStyles(\n props: {$checked?: boolean; $indeterminate?: boolean} & ThemeProps\n): FlattenSimpleInterpolation {\n const {$indeterminate, theme} = props\n const {input} = theme.sanity\n const trackWidth = input.switch.width\n const trackHeight = input.switch.height\n const trackPadding = input.switch.padding\n const size = trackHeight - input.switch.padding * 2\n const checkedOffset = trackWidth - trackPadding * 2 - size\n const indeterminateOffset = trackWidth / 2 - size / 2 - trackPadding\n const checked = $indeterminate !== true && props.$checked === true\n\n return css`\n &:not([hidden]) {\n display: block;\n }\n position: absolute;\n left: ${rem(trackPadding)};\n top: ${rem(trackPadding)};\n height: ${rem(size)};\n width: ${rem(size)};\n border-radius: ${rem(size / 2)};\n transition-property: transform;\n transition-duration: ${input.switch.transitionDurationMs}ms;\n transition-timing-function: ${input.switch.transitionTimingFunction};\n background: var(--switch-fg-color);\n transform: translate3d(0, 0, 0);\n\n ${checked &&\n css`\n transform: translate3d(${checkedOffset}px, 0, 0);\n `}\n\n ${$indeterminate &&\n css`\n transform: translate3d(${indeterminateOffset}px, 0, 0);\n `}\n `\n}\n","import React, {forwardRef, useEffect} from 'react'\nimport styled from 'styled-components'\nimport {useForwardedRef} from '../../hooks'\nimport {\n switchBaseStyles,\n switchRepresentationStyles,\n switchThumbStyles,\n switchTrackStyles,\n switchInputStyles,\n} from './styles'\n\n/**\n * @public\n */\nexport interface SwitchProps {\n indeterminate?: boolean\n}\n\nconst Root = styled.span(switchBaseStyles)\nconst Input = styled.input(switchInputStyles)\nconst Representation = styled.span(switchRepresentationStyles)\nconst Track = styled.span(switchTrackStyles)\nconst Thumb = styled.span<{$checked?: boolean; $indeterminate?: boolean}>(switchThumbStyles)\n\n/**\n * @public\n */\nexport const Switch = forwardRef(function Switch(\n props: Omit<React.HTMLProps<HTMLInputElement>, 'as' | 'type'> & SwitchProps,\n forwardedRef: React.ForwardedRef<HTMLInputElement>\n) {\n const {checked, className, disabled, indeterminate, readOnly, style, ...restProps} = props\n const ref = useForwardedRef(forwardedRef)\n\n useEffect(() => {\n if (ref.current) {\n // Set the indeterminate state\n ref.current.indeterminate = indeterminate || false\n }\n }, [indeterminate, ref])\n\n return (\n <Root className={className} data-ui=\"Switch\" style={style}>\n <Input\n data-read-only={!disabled && readOnly ? '' : undefined}\n {...restProps}\n checked={indeterminate !== true && checked}\n disabled={disabled || readOnly}\n type=\"checkbox\"\n ref={ref}\n />\n <Representation aria-hidden data-name=\"representation\">\n <Track />\n <Thumb $checked={checked} $indeterminate={indeterminate} />\n </Representation>\n </Root>\n )\n})\n","import React, {forwardRef} from 'react'\nimport styled from 'styled-components'\nimport {useForwardedRef, useCustomValidity, useArrayProp} from '../../hooks'\nimport {\n responsiveInputPaddingStyle,\n responsiveRadiusStyle,\n ResponsiveRadiusStyleProps,\n TextInputResponsivePaddingStyleProps,\n TextInputInputStyleProps,\n TextInputRepresentationStyleProps,\n textInputRootStyle,\n textInputBaseStyle,\n textInputFontSizeStyle,\n textInputRepresentationStyle,\n} from '../../styles/internal'\nimport {ThemeFontWeightKey, useRootTheme} from '../../theme'\nimport {ResponsiveRadiusProps} from '../types'\n\n/**\n * @public\n */\nexport interface TextAreaProps extends ResponsiveRadiusProps {\n border?: boolean\n customValidity?: string\n fontSize?: number | number[]\n padding?: number | number[]\n weight?: ThemeFontWeightKey\n}\n\nconst Root = styled.span(textInputRootStyle)\n\nconst InputRoot = styled.span`\n flex: 1;\n min-width: 0;\n display: block;\n position: relative;\n`\n\nconst Input = styled.textarea<TextInputResponsivePaddingStyleProps & TextInputInputStyleProps>(\n responsiveInputPaddingStyle,\n textInputBaseStyle,\n textInputFontSizeStyle\n)\n\nconst Presentation = styled.div<ResponsiveRadiusStyleProps & TextInputRepresentationStyleProps>(\n responsiveRadiusStyle,\n textInputRepresentationStyle\n)\n\n/**\n * @public\n */\nexport const TextArea = forwardRef(function TextArea(\n props: TextAreaProps & Omit<React.HTMLProps<HTMLTextAreaElement>, 'as'>,\n forwardedRef: React.ForwardedRef<HTMLTextAreaElement>\n) {\n const {\n border = true,\n customValidity,\n disabled = false,\n fontSize = 2,\n padding = 3,\n radius = 1,\n weight,\n ...restProps\n } = props\n\n const ref = useForwardedRef(forwardedRef)\n\n const rootTheme = useRootTheme()\n\n useCustomValidity(ref, customValidity)\n\n return (\n <Root data-ui=\"TextArea\">\n <InputRoot>\n <Input\n data-as=\"textarea\"\n data-scheme={rootTheme.scheme}\n data-tone={rootTheme.tone}\n {...restProps}\n $fontSize={useArrayProp(fontSize)}\n $padding={useArrayProp(padding)}\n $scheme={rootTheme.scheme}\n $space={useArrayProp(0)}\n $tone={rootTheme.tone}\n $weight={weight}\n disabled={disabled}\n ref={ref}\n />\n <Presentation\n $border={border}\n $radius={useArrayProp(radius)}\n $scheme={rootTheme.scheme}\n $tone={rootTheme.tone}\n data-scheme={rootTheme.scheme}\n data-tone={rootTheme.tone}\n />\n </InputRoot>\n </Root>\n )\n})\n","import {CloseIcon} from '@sanity/icons'\nimport React, {createElement, forwardRef, isValidElement, useCallback, useMemo} from 'react'\nimport {isValidElementType} from 'react-is'\nimport styled from 'styled-components'\nimport {EMPTY_RECORD} from '../../constants'\nimport {useArrayProp, useForwardedRef, useCustomValidity} from '../../hooks'\nimport {\n responsiveRadiusStyle,\n ResponsiveRadiusStyleProps,\n responsiveInputPaddingStyle,\n TextInputInputStyleProps,\n TextInputRepresentationStyleProps,\n TextInputResponsivePaddingStyleProps,\n textInputBaseStyle,\n textInputFontSizeStyle,\n textInputRepresentationStyle,\n textInputRootStyle,\n} from '../../styles/internal'\nimport {ThemeFontWeightKey, useRootTheme} from '../../theme'\nimport {Box} from '../box'\nimport {Button, ButtonProps} from '../button'\nimport {Card} from '../card'\nimport {Text} from '../text'\n\n/**\n * @public\n */\nexport type TextInputClearButtonProps = Omit<ButtonProps, 'as'> &\n Omit<React.HTMLProps<HTMLButtonElement>, 'as' | 'onClick' | 'onMouseDown' | 'ref'>\n\n/**\n * @public\n */\nexport type TextInputType =\n | 'date'\n | 'datetime-local'\n | 'email'\n | 'url'\n | 'month'\n | 'number'\n | 'password'\n | 'tel'\n | 'time'\n | 'text'\n | 'week'\n\n/**\n * @public\n */\nexport interface TextInputProps {\n border?: boolean\n /**\n * @beta\n */\n clearButton?: boolean | TextInputClearButtonProps\n customValidity?: string\n fontSize?: number | number[]\n icon?: React.ComponentType | React.ReactNode\n iconRight?: React.ComponentType | React.ReactNode\n /**\n * @beta\n */\n onClear?: () => void\n padding?: number | number[]\n prefix?: React.ReactNode\n radius?: number | number[]\n space?: number | number[]\n suffix?: React.ReactNode\n type?: TextInputType\n weight?: ThemeFontWeightKey\n}\n\nconst CLEAR_BUTTON_BOX_STYLE: React.CSSProperties = {zIndex: 2}\n\nconst Root = styled(Card).attrs({forwardedAs: 'span'})(textInputRootStyle)\n\nconst InputRoot = styled.span`\n flex: 1;\n min-width: 0;\n display: block;\n position: relative;\n`\n\nconst Prefix = styled(Card).attrs({forwardedAs: 'span'})`\n border-top-right-radius: 0;\n border-bottom-right-radius: 0;\n\n & > span {\n display: block;\n margin: -1px;\n }\n`\n\nconst Suffix = styled(Card).attrs({forwardedAs: 'span'})`\n border-top-left-radius: 0;\n border-bottom-left-radius: 0;\n\n & > span {\n display: block;\n margin: -1px;\n }\n`\n\nconst Input = styled.input<TextInputResponsivePaddingStyleProps & TextInputInputStyleProps>(\n responsiveInputPaddingStyle,\n textInputBaseStyle,\n textInputFontSizeStyle\n)\n\nconst Presentation = styled.span<ResponsiveRadiusStyleProps & TextInputRepresentationStyleProps>(\n responsiveRadiusStyle,\n textInputRepresentationStyle\n)\n\nconst LeftBox = styled(Box)`\n position: absolute;\n top: 0;\n left: 0;\n`\n\nconst RightBox = styled(Box)`\n position: absolute;\n top: 0;\n right: 0;\n`\n\nconst RightCard = styled(Card)`\n background-color: transparent;\n position: absolute;\n top: 0;\n right: 0;\n`\n\n/**\n * @public\n */\nexport const TextInput = forwardRef(function TextInput(\n props: TextInputProps & Omit<React.HTMLProps<HTMLInputElement>, 'as' | 'prefix' | 'type'>,\n forwardedRef: React.Ref<HTMLInputElement>\n) {\n const {\n border = true,\n clearButton,\n disabled = false,\n fontSize: fontSizeProp = 2,\n icon,\n iconRight,\n onClear,\n padding: paddingProp = 3,\n prefix,\n radius: radiusProp = 1,\n readOnly,\n space: spaceProp = 3,\n suffix,\n customValidity,\n type = 'text',\n weight,\n ...restProps\n } = props\n\n const ref = useForwardedRef(forwardedRef)\n\n const rootTheme = useRootTheme()\n\n const fontSize = useArrayProp(fontSizeProp)\n const padding = useArrayProp(paddingProp)\n const radius = useArrayProp(radiusProp)\n const space = useArrayProp(spaceProp)\n\n // Transient properties\n const $hasClearButton = Boolean(clearButton)\n const $hasIcon = Boolean(icon)\n const $hasIconRight = Boolean(iconRight)\n const $hasSuffix = Boolean(suffix)\n const $hasPrefix = Boolean(prefix)\n\n useCustomValidity(ref, customValidity)\n\n // Prevent the clear button from taking the focus away from the input\n const handleClearMouseDown = useCallback((event: React.MouseEvent<HTMLButtonElement>) => {\n event.preventDefault()\n event.stopPropagation()\n }, [])\n\n const handleClearClick = useCallback(\n (event: React.MouseEvent<HTMLButtonElement>) => {\n event.preventDefault()\n event.stopPropagation()\n\n if (onClear) onClear()\n\n // Focus the input, in case focus has been lost when clicking the clear button\n ref.current?.focus()\n },\n [onClear, ref]\n )\n\n // Render prefix (memoized)\n const prefixNode = useMemo(\n () =>\n prefix && (\n <Prefix borderTop borderLeft borderBottom radius={radius} sizing=\"border\" tone=\"inherit\">\n <span>{prefix}</span>\n </Prefix>\n ),\n [prefix, radius]\n )\n\n // Render presentation (memoized)\n const presentationNode = useMemo(\n () => (\n <Presentation\n $border={border}\n $hasPrefix={$hasPrefix}\n $hasSuffix={$hasSuffix}\n $radius={radius}\n $scheme={rootTheme.scheme}\n $tone={rootTheme.tone}\n data-scheme={rootTheme.scheme}\n data-tone={rootTheme.tone}\n >\n {icon && (\n <LeftBox padding={padding}>\n <Text size={fontSize}>\n {isValidElement(icon) && icon}\n {isValidElementType(icon) && createElement(icon)}\n </Text>\n </LeftBox>\n )}\n\n {!$hasClearButton && iconRight && (\n <RightBox padding={padding}>\n <Text size={fontSize}>\n {isValidElement(iconRight) && iconRight}\n {isValidElementType(iconRight) && createElement(iconRight)}\n </Text>\n </RightBox>\n )}\n </Presentation>\n ),\n [\n border,\n fontSize,\n icon,\n iconRight,\n padding,\n radius,\n rootTheme,\n $hasClearButton,\n $hasPrefix,\n $hasSuffix,\n ]\n )\n\n // Render clear button (memoized)\n const clearButtonBoxPadding = useMemo(\n () =>\n padding.map((v) => {\n if (v === 0) return 0\n if (v === 1) return 1\n if (v === 2) return 1\n\n return v - 2\n }),\n [padding]\n )\n const clearButtonPadding = useMemo(\n () =>\n padding.map((v) => {\n if (v === 0) return 0\n if (v === 1) return 0\n if (v === 2) return 1\n\n return v - 1\n }),\n [padding]\n )\n const clearButtonProps: TextInputClearButtonProps = useMemo(\n () => (typeof clearButton === 'object' ? clearButton : EMPTY_RECORD),\n [clearButton]\n )\n const clearButtonNode = useMemo(\n () =>\n !disabled &&\n !readOnly &&\n clearButton && (\n <RightCard\n forwardedAs=\"span\"\n padding={clearButtonBoxPadding}\n style={CLEAR_BUTTON_BOX_STYLE}\n tone={customValidity ? 'critical' : 'inherit'}\n >\n <Button\n data-qa=\"clear-button\"\n fontSize={fontSize}\n icon={CloseIcon}\n mode=\"bleed\"\n padding={clearButtonPadding}\n radius={radius}\n {...clearButtonProps}\n onClick={handleClearClick}\n onMouseDown={handleClearMouseDown}\n />\n </RightCard>\n ),\n [\n clearButton,\n clearButtonBoxPadding,\n clearButtonPadding,\n clearButtonProps,\n customValidity,\n disabled,\n fontSize,\n handleClearClick,\n handleClearMouseDown,\n radius,\n readOnly,\n ]\n )\n\n // Render suffix (memoized)\n const suffixNode = useMemo(\n () =>\n suffix && (\n <Suffix borderTop borderRight borderBottom radius={radius} sizing=\"border\" tone=\"inherit\">\n <span>{suffix}</span>\n </Suffix>\n ),\n [radius, suffix]\n )\n\n return (\n <Root data-ui=\"TextInput\" tone={rootTheme.tone}>\n {prefixNode}\n\n <InputRoot>\n <Input\n data-as=\"input\"\n data-scheme={rootTheme.scheme}\n data-tone={rootTheme.tone}\n {...restProps}\n $fontSize={fontSize}\n $iconLeft={$hasIcon}\n $iconRight={$hasIconRight || $hasClearButton}\n $padding={padding}\n $scheme={rootTheme.scheme}\n $space={space}\n $tone={rootTheme.tone}\n $weight={weight}\n disabled={disabled}\n readOnly={readOnly}\n ref={ref}\n type={type}\n />\n\n {presentationNode}\n {clearButtonNode}\n </InputRoot>\n\n {suffixNode}\n </Root>\n )\n})\n","import React, {forwardRef} from 'react'\nimport styled from 'styled-components'\n\nconst Root = styled.div`\n position: absolute;\n width: 15px;\n height: 15px;\n fill: none;\n\n :empty + & {\n display: none;\n }\n\n & > svg {\n &:not([hidden]) {\n display: block;\n }\n transform-origin: 7.5px 7.5px;\n }\n\n [data-popper-placement^='top'] > div > & {\n bottom: -15px;\n }\n\n [data-popper-placement^='right'] > div > & {\n left: -15px;\n\n & > svg {\n transform: rotate(90deg);\n }\n }\n\n [data-popper-placement^='left'] > div > & {\n right: -15px;\n\n & > svg {\n transform: rotate(-90deg);\n }\n }\n\n [data-popper-placement^='bottom'] > div > & {\n top: -15px;\n\n & > svg {\n transform: rotate(180deg);\n }\n }\n`\n\nconst Border = styled.path`\n fill: var(--card-shadow-outline-color);\n`\n\nconst Shape = styled.path`\n fill: var(--card-bg-color);\n`\n\ninterface TooltipArrowProps {}\n\nexport const TooltipArrow = forwardRef(function TooltipArrow(\n props: TooltipArrowProps & Omit<React.HTMLProps<HTMLDivElement>, 'as'>,\n ref: React.ForwardedRef<HTMLDivElement>\n) {\n const {...restProps} = props\n\n return (\n <Root {...restProps} ref={ref}>\n <svg width=\"15\" height=\"15\" viewBox=\"0 0 15 15\">\n <Border d=\"M11.5266 1C11.032 1.32802 10.5837 1.73105 10.1995 2.20057L9.04792 3.6081C8.24771 4.58614 6.7523 4.58614 5.95209 3.6081L4.80047 2.20057C4.41632 1.73105 3.96796 1.32802 3.47341 1H0.156727C1.65639 1 3.07687 1.67313 4.02651 2.83381L5.17813 4.24134C6.37844 5.70839 8.62156 5.70839 9.82187 4.24134L10.9735 2.83381C11.9231 1.67313 13.3436 1 14.8433 1H11.5266Z\" />\n <Shape d=\"M0.156725 0C1.95632 0 3.66089 0.80776 4.80047 2.20057L5.95209 3.6081C6.75229 4.58614 8.24771 4.58614 9.04791 3.6081L10.1995 2.20057C11.3391 0.80776 13.0437 0 14.8433 0H15H0H0.156725Z\" />\n </svg>\n </Root>\n )\n})\n","import React, {cloneElement, forwardRef, useCallback, useEffect, useRef, useState} from 'react'\nimport {usePopper} from 'react-popper'\nimport styled from 'styled-components'\nimport {useArrayProp, useForwardedRef} from '../../hooks'\nimport {ThemeColorSchemeKey, useTheme} from '../../theme'\nimport {Placement} from '../../types'\nimport {Layer, LayerProps, Portal, useBoundaryElement} from '../../utils'\nimport {Card} from '../card'\nimport {TooltipArrow} from './tooltipArrow'\n\n/**\n * @public\n */\nexport interface TooltipProps extends Omit<LayerProps, 'as'> {\n allowedAutoPlacements?: Placement[]\n boundaryElement?: HTMLElement | null\n children?: React.ReactElement\n content?: React.ReactNode\n disabled?: boolean\n fallbackPlacements?: Placement[]\n placement?: Placement\n portal?: boolean | string\n scheme?: ThemeColorSchemeKey\n}\n\nconst Root = styled(Layer)`\n pointer-events: none;\n`\n\n/**\n * @public\n */\nexport const Tooltip = forwardRef(function Tooltip(\n props: TooltipProps & Omit<React.HTMLProps<HTMLDivElement>, 'as' | 'children' | 'content'>,\n ref: React.ForwardedRef<HTMLDivElement>\n) {\n const boundaryElementContext = useBoundaryElement()\n const theme = useTheme()\n const {\n allowedAutoPlacements,\n boundaryElement = boundaryElementContext?.element,\n children,\n content,\n disabled,\n fallbackPlacements: fallbackPlacementsProp,\n placement = 'bottom',\n portal,\n scheme,\n zOffset = theme.sanity.layer?.tooltip.zOffset,\n ...restProps\n } = props\n const fallbackPlacements = useArrayProp(fallbackPlacementsProp)\n const forwardedRef = useForwardedRef(ref)\n const [referenceElement, setReferenceElement] = useState<HTMLElement | null>(null)\n const [popperElement, setPopperElement] = useState<HTMLDivElement | null>(null)\n const [arrowElement, setArrowElement] = useState<HTMLDivElement | null>(null)\n const popper = usePopper(referenceElement, popperElement, {\n placement,\n modifiers: [\n {\n name: 'arrow',\n options: {\n element: arrowElement,\n padding: 4,\n },\n },\n {\n name: 'preventOverflow',\n options: {\n altAxis: true,\n boundary: boundaryElement || undefined,\n padding: 4,\n },\n },\n {\n name: 'offset',\n options: {offset: [0, 3]},\n },\n {\n name: 'flip',\n options: {\n allowedAutoPlacements,\n fallbackPlacements,\n },\n },\n ],\n })\n const {forceUpdate} = popper\n const [isOpen, setIsOpen] = useState(false)\n const handleBlur = useCallback(() => setIsOpen(false), [])\n const handleFocus = useCallback(() => setIsOpen(true), [])\n const handleMouseEnter = useCallback(() => setIsOpen(true), [])\n const handleMouseLeave = useCallback(() => setIsOpen(false), [])\n\n // Detect whether the mouse is moving outside of the reference element. This is sometimes\n // necessary, because the tooltip might not always close as it should (e.g. when clicking\n // the reference element triggers a CPU-heavy operation.)\n useEffect(() => {\n if (!isOpen) return\n\n function handleWindowMouseMove(event: MouseEvent) {\n if (!referenceElement) return\n\n const isHoveringReference =\n referenceElement === event.target ||\n (event.target instanceof Node && referenceElement.contains(event.target))\n\n if (!isHoveringReference) {\n setIsOpen(false)\n window.removeEventListener('mousemove', handleWindowMouseMove)\n }\n }\n\n window.addEventListener('mousemove', handleWindowMouseMove)\n\n return () => {\n window.removeEventListener('mousemove', handleWindowMouseMove)\n }\n }, [isOpen, referenceElement])\n\n const updateTimeoutRef = useRef<NodeJS.Timeout | null>(null)\n\n useEffect(() => {\n if (updateTimeoutRef.current) {\n clearTimeout(updateTimeoutRef.current)\n updateTimeoutRef.current = null\n }\n\n updateTimeoutRef.current = setTimeout(() => {\n if (forceUpdate) {\n try {\n forceUpdate()\n } catch (_) {\n // ignore caught error\n }\n }\n }, 0)\n }, [forceUpdate, content])\n\n // Close when `disabled` changes to `true`\n useEffect(() => {\n if (disabled) setIsOpen(false)\n }, [disabled])\n\n // Close when `content` changes to falsy\n useEffect(() => {\n if (!content) setIsOpen(false)\n }, [content])\n\n const setRef = (el: HTMLDivElement | null) => {\n setPopperElement(el)\n forwardedRef.current = el\n }\n\n if (!children) return <></>\n\n if (disabled) return children\n\n const referenceProps = {\n onBlur: handleBlur,\n onFocus: handleFocus,\n onMouseEnter: handleMouseEnter,\n onMouseLeave: handleMouseLeave,\n ref: setReferenceElement,\n }\n\n const referenceNode = cloneElement(children, referenceProps)\n\n const popperNode = (\n <Root\n data-ui=\"Tooltip\"\n {...restProps}\n {...popper.attributes.popper}\n ref={setRef}\n style={popper.styles.popper}\n zOffset={zOffset}\n >\n <Card radius={2} scheme={scheme} shadow={3}>\n {content}\n <TooltipArrow ref={setArrowElement} style={popper.styles.arrow} />\n </Card>\n </Root>\n )\n\n return (\n <>\n {referenceNode}\n\n {isOpen && (\n <>\n {portal && (\n <Portal __unstable_name={typeof portal === 'string' ? portal : undefined}>\n {popperNode}\n </Portal>\n )}\n\n {!portal && popperNode}\n </>\n )}\n </>\n )\n})\n","import {SpinnerIcon} from '@sanity/icons'\nimport styled, {keyframes} from 'styled-components'\nimport {Box, Popover} from '../../primitives'\n\n/**\n * @internal\n */\nexport const Root = styled.div`\n line-height: 0;\n`\n\n/**\n * @internal\n */\nexport const ListBox = styled(Box)`\n & > ul {\n list-style: none;\n padding: 0;\n margin: 0;\n }\n`\n\n/**\n * @internal\n */\nexport const ResultsPopover = styled(Popover)`\n & > div {\n overflow: auto;\n -webkit-overflow-scrolling: touch;\n }\n\n &[data-popper-reference-hidden='true'] {\n display: none;\n }\n`\n\nconst rotate = keyframes`\n from {\n transform: rotate(0deg);\n }\n\n to {\n transform: rotate(360deg);\n }\n`\n\n/**\n * @internal\n */\nexport const AnimatedSpinnerIcon = styled(SpinnerIcon)`\n animation: ${rotate} 500ms linear infinite;\n`\n","import React, {useCallback} from 'react'\nimport {_isEnterToClickElement} from '../../helpers'\n\nexport interface AutocompleteOptionProps {\n children: React.ReactNode\n id: string\n onSelect: (v: string) => void\n selected: boolean\n value: string\n}\n\nexport function AutocompleteOption(props: AutocompleteOptionProps): React.ReactElement {\n const {children, id, onSelect, selected, value} = props\n\n const handleClick = useCallback(() => {\n // Calling the `onSelect` in a timeout is a fix to\n // allow the `click` event to propagate in some cases\n setTimeout(() => {\n onSelect(value)\n }, 0)\n }, [onSelect, value])\n\n const handleKeyDown = useCallback(\n (event: React.KeyboardEvent<HTMLLIElement>) => {\n if (event.key === 'Enter' && !_isEnterToClickElement(event.currentTarget)) {\n handleClick()\n }\n },\n [handleClick]\n )\n\n return (\n <li\n aria-selected={selected}\n data-ui=\"AutocompleteOption\"\n id={id}\n role=\"option\"\n onClick={handleClick}\n onKeyDown={handleKeyDown}\n >\n {children}\n </li>\n )\n}\n","import {AutocompleteMsg, AutocompleteState} from './types'\n\n/**\n * @internal\n */\nexport function autocompleteReducer(\n state: AutocompleteState,\n msg: AutocompleteMsg\n): AutocompleteState {\n if (msg.type === 'input/change') {\n return {...state, activeValue: null, focused: true, query: msg.query}\n }\n\n if (msg.type === 'input/focus') {\n return {...state, focused: true}\n }\n\n if (msg.type === 'root/blur') {\n return {...state, focused: false, query: null}\n }\n\n if (msg.type === 'root/clear') {\n return {...state, activeValue: null, query: null, value: null}\n }\n\n if (msg.type === 'root/escape') {\n return {...state, focused: false, query: null}\n }\n\n if (msg.type === 'root/open') {\n return {...state, query: state.query || msg.query}\n }\n\n if (msg.type === 'root/setActiveValue') {\n return {...state, activeValue: msg.value, listFocused: msg.listFocused || state.listFocused}\n }\n\n if (msg.type === 'root/setListFocused') {\n // prevent unnecessary re-render\n if (state.listFocused === msg.listFocused) return state\n\n return {...state, listFocused: msg.listFocused}\n }\n\n if (msg.type === 'value/change') {\n return {...state, activeValue: msg.value, query: null, value: msg.value}\n }\n\n return state\n}\n","import {Placement, PopoverMargins} from '../../types'\n\n/**\n * @internal\n */\nexport const AUTOCOMPLETE_LISTBOX_IGNORE_KEYS = [\n 'Control',\n 'Shift',\n 'Alt',\n 'Enter',\n 'Home',\n 'End',\n 'PageUp',\n 'PageDown',\n 'Meta',\n 'Tab',\n 'CapsLock',\n]\n\n/**\n * @internal\n */\nexport const AUTOCOMPLETE_POPOVER_MARGINS: PopoverMargins = [0, 1, 1, 1]\n\n/**\n * @internal\n */\nexport const AUTOCOMPLETE_POPOVER_PLACEMENT: Placement = 'bottom-start'\n\n/**\n * @internal\n */\nexport const AUTOCOMPLETE_POPOVER_FALLBACK_PLACEMENTS: Placement[] = ['top-start']\n","import {ChevronDownIcon} from '@sanity/icons'\nimport React, {\n cloneElement,\n forwardRef,\n useCallback,\n useEffect,\n useMemo,\n useReducer,\n useRef,\n useState,\n} from 'react'\nimport {EMPTY_ARRAY, EMPTY_RECORD} from '../../constants'\nimport {_hasFocus, _raf, focusFirstDescendant} from '../../helpers'\nimport {useForwardedRef, useArrayProp} from '../../hooks'\nimport {Box, BoxProps, Button, Card, PopoverProps, Stack, Text, TextInput} from '../../primitives'\nimport {AnimatedSpinnerIcon, ListBox, ResultsPopover, Root} from './autocomplete.styles'\nimport {AutocompleteOption} from './autocompleteOption'\nimport {autocompleteReducer} from './autocompleteReducer'\nimport {\n AUTOCOMPLETE_LISTBOX_IGNORE_KEYS,\n AUTOCOMPLETE_POPOVER_FALLBACK_PLACEMENTS,\n AUTOCOMPLETE_POPOVER_MARGINS,\n AUTOCOMPLETE_POPOVER_PLACEMENT,\n} from './constants'\nimport {AutocompleteOpenButtonProps, BaseAutocompleteOption} from './types'\n\n/**\n * @public\n */\nexport interface AutocompleteProps<Option extends BaseAutocompleteOption = BaseAutocompleteOption> {\n border?: boolean\n customValidity?: string\n filterOption?: (query: string, option: Option) => boolean\n fontSize?: number | number[]\n icon?: React.ComponentType | React.ReactNode\n id: string\n /**\n * @beta\n */\n listBox?: BoxProps\n loading?: boolean\n onChange?: (value: string) => void\n onQueryChange?: (query: string | null) => void\n onSelect?: (value: string) => void\n /**\n * @beta\n */\n openButton?: boolean | AutocompleteOpenButtonProps\n options?: Option[]\n padding?: number | number[]\n popover?: Omit<PopoverProps, 'content' | 'onMouseEnter' | 'onMouseLeave' | 'open'> &\n Omit<React.HTMLProps<HTMLDivElement>, 'as' | 'children' | 'content' | 'ref' | 'width'>\n prefix?: React.ReactNode\n radius?: number | number[]\n /**\n * @beta\n */\n relatedElements?: HTMLElement[]\n renderOption?: (option: Option) => React.ReactElement\n /**\n * @beta\n */\n renderPopover?: (\n props: {\n content: React.ReactElement | null\n hidden: boolean\n inputElement: HTMLInputElement | null\n onMouseEnter: () => void\n onMouseLeave: () => void\n },\n ref: React.Ref<HTMLDivElement>\n ) => React.ReactNode\n renderValue?: (value: string, option?: Option) => string\n suffix?: React.ReactNode\n value?: string\n}\n\nconst defaultRenderValue = (value: string, option?: BaseAutocompleteOption) =>\n option ? option.value : value\n\nconst defaultFilterOption = (query: string, option: BaseAutocompleteOption) =>\n option.value.toLowerCase().indexOf(query.toLowerCase()) > -1\n\nconst InnerAutocomplete = forwardRef(function InnerAutocomplete<\n Option extends BaseAutocompleteOption\n>(\n props: AutocompleteProps<Option> &\n Omit<\n React.HTMLProps<HTMLInputElement>,\n | 'aria-activedescendant'\n | 'aria-autocomplete'\n | 'aria-expanded'\n | 'aria-owns'\n | 'as'\n | 'autoCapitalize'\n | 'autoComplete'\n | 'autoCorrect'\n | 'id'\n | 'inputMode'\n | 'onChange'\n | 'onSelect'\n | 'prefix'\n | 'ref'\n | 'role'\n | 'spellCheck'\n | 'type'\n | 'value'\n >,\n ref: React.Ref<HTMLInputElement>\n) {\n const {\n border = true,\n customValidity,\n disabled,\n filterOption: filterOptionProp,\n fontSize = 2,\n icon,\n id,\n listBox = {},\n loading,\n onBlur,\n onChange,\n onFocus,\n onQueryChange,\n onSelect,\n openButton,\n options: optionsProp,\n padding: paddingProp = 3,\n popover = {},\n prefix,\n radius = 3,\n readOnly,\n relatedElements,\n renderOption: renderOptionProp,\n renderPopover,\n renderValue = defaultRenderValue,\n suffix,\n value: valueProp,\n ...restProps\n } = props\n\n const [state, dispatch] = useReducer(autocompleteReducer, {\n activeValue: valueProp || null,\n focused: false,\n listFocused: false,\n query: null,\n value: valueProp || null,\n })\n\n const {activeValue, focused, listFocused, query, value} = state\n\n const defaultRenderOption = useCallback(\n ({value}: BaseAutocompleteOption) => (\n <Card data-as=\"button\" padding={paddingProp} radius={2} tone=\"inherit\">\n <Text size={fontSize} textOverflow=\"ellipsis\">\n {value}\n </Text>\n </Card>\n ),\n [fontSize, paddingProp]\n )\n\n const renderOption =\n typeof renderOptionProp === 'function' ? renderOptionProp : defaultRenderOption\n const filterOption =\n typeof filterOptionProp === 'function' ? filterOptionProp : defaultFilterOption\n const [rootElement, setRootElement] = useState<HTMLDivElement | null>(null)\n const [resultsPopoverElement, setResultsPopoverElement] = useState<HTMLDivElement | null>(null)\n const inputElementRef = useRef<HTMLInputElement | null>(null)\n const listBoxElementRef = useRef<HTMLDivElement | null>(null)\n const focusedElementRef = useRef<HTMLElement | null>(null)\n const valueRef = useRef(value)\n const valuePropRef = useRef(valueProp)\n const forwardedRef = useForwardedRef(ref)\n const popoverMouseWithinRef = useRef(false)\n const listBoxId = `${id}-listbox`\n const options = Array.isArray(optionsProp) ? optionsProp : EMPTY_ARRAY\n const padding = useArrayProp(paddingProp)\n const currentOption = useMemo(\n () => (value !== null ? options.find((o) => o.value === value) : undefined),\n [options, value]\n )\n const filteredOptions = useMemo(\n () => options.filter((option) => (query ? filterOption(query, option) : true)),\n [filterOption, options, query]\n )\n const filteredOptionsLen = filteredOptions.length\n const activeItemId = activeValue ? `${id}-option-${activeValue}` : undefined\n const expanded = (query !== null && loading) || (focused && query !== null)\n\n const handleRootBlur = useCallback(\n (event: React.FocusEvent<HTMLInputElement>) => {\n setTimeout(() => {\n // NOTE: This is a workaround for a bug that may happen in Chrome (clicking the scrollbar\n // closes the results in certain situations):\n // - Do not handle blur if the mouse is within the popover\n if (popoverMouseWithinRef.current) {\n return\n }\n\n const elements: HTMLElement[] = (relatedElements || []).concat(\n rootElement ? [rootElement] : [],\n resultsPopoverElement ? [resultsPopoverElement] : []\n )\n\n let focusInside = false\n\n if (document.activeElement) {\n for (const e of elements) {\n if (e === document.activeElement || e.contains(document.activeElement)) {\n focusInside = true\n break\n }\n }\n }\n\n if (focusInside === false) {\n dispatch({type: 'root/blur'})\n popoverMouseWithinRef.current = false\n if (onQueryChange) onQueryChange(null)\n if (onBlur) onBlur(event)\n }\n }, 0)\n },\n [onBlur, onQueryChange, relatedElements, resultsPopoverElement, rootElement]\n )\n\n const handleRootFocus = useCallback((event: React.FocusEvent) => {\n const listBoxElement = listBoxElementRef.current\n const focusedElement = event.target instanceof HTMLElement ? event.target : null\n\n focusedElementRef.current = focusedElement\n\n const nextListFocused = Boolean(\n listBoxElement && focusedElement && listBoxElement.contains(focusedElement)\n )\n\n dispatch({type: 'root/setListFocused', listFocused: nextListFocused})\n }, [])\n\n const handleOptionSelect = useCallback(\n (v: string) => {\n dispatch({type: 'value/change', value: v})\n\n popoverMouseWithinRef.current = false\n\n if (onSelect) onSelect(v)\n\n valueRef.current = v\n\n if (onChange) onChange(v)\n if (onQueryChange) onQueryChange(null)\n\n inputElementRef.current?.focus()\n },\n [onChange, onSelect, onQueryChange]\n )\n\n const handleRootKeyDown = useCallback(\n (event: React.KeyboardEvent<HTMLElement>) => {\n if (event.key === 'ArrowDown') {\n event.preventDefault()\n\n if (!filteredOptionsLen) return\n\n const activeOption = filteredOptions.find((o) => o.value === activeValue)\n const activeIndex = activeOption ? filteredOptions.indexOf(activeOption) : -1\n const nextActiveOption = filteredOptions[(activeIndex + 1) % filteredOptionsLen]\n\n if (nextActiveOption) {\n dispatch({type: 'root/setActiveValue', value: nextActiveOption.value, listFocused: true})\n }\n\n return\n }\n\n if (event.key === 'ArrowUp') {\n event.preventDefault()\n\n if (!filteredOptionsLen) return\n\n const activeOption = filteredOptions.find((o) => o.value === activeValue)\n const activeIndex = activeOption ? filteredOptions.indexOf(activeOption) : -1\n const nextActiveOption =\n filteredOptions[\n activeIndex === -1\n ? filteredOptionsLen - 1\n : (filteredOptionsLen + activeIndex - 1) % filteredOptionsLen\n ]\n\n if (nextActiveOption) {\n dispatch({type: 'root/setActiveValue', value: nextActiveOption.value, listFocused: true})\n }\n\n return\n }\n\n if (event.key === 'Escape') {\n dispatch({type: 'root/escape'})\n popoverMouseWithinRef.current = false\n if (onQueryChange) onQueryChange(null)\n inputElementRef.current?.focus()\n\n return\n }\n\n const target = event.target as Node\n const listEl = listBoxElementRef.current\n\n if (\n (listEl === target || listEl?.contains(target)) &&\n !AUTOCOMPLETE_LISTBOX_IGNORE_KEYS.includes(event.key)\n ) {\n inputElementRef.current?.focus()\n\n return\n }\n },\n [activeValue, filteredOptions, filteredOptionsLen, onQueryChange]\n )\n\n const handleInputChange = useCallback(\n (event: React.ChangeEvent<HTMLInputElement>) => {\n const nextQuery = event.currentTarget.value\n\n dispatch({type: 'input/change', query: nextQuery})\n\n if (onQueryChange) onQueryChange(nextQuery)\n },\n [onQueryChange]\n )\n\n const handleInputFocus = useCallback(\n (event: React.FocusEvent<HTMLInputElement>) => {\n if (!focused) {\n dispatch({type: 'input/focus'})\n\n if (onFocus) onFocus(event)\n }\n },\n [focused, onFocus]\n )\n\n const handlePopoverMouseEnter = useCallback(() => {\n popoverMouseWithinRef.current = true\n }, [])\n\n const handlePopoverMouseLeave = useCallback(() => {\n popoverMouseWithinRef.current = false\n }, [])\n\n const handleClearButtonClick = useCallback(() => {\n dispatch({type: 'root/clear'})\n valueRef.current = ''\n if (onChange) onChange('')\n if (onQueryChange) onQueryChange(null)\n inputElementRef.current?.focus()\n }, [onChange, onQueryChange])\n\n const handleClearButtonFocus = useCallback(() => {\n dispatch({type: 'input/focus'})\n }, [])\n\n // Change the value when `value` prop changes\n useEffect(() => {\n if (valueProp !== valuePropRef.current) {\n valuePropRef.current = valueProp\n\n if (valueProp !== undefined) {\n dispatch({type: 'value/change', value: valueProp})\n valueRef.current = valueProp\n }\n\n return\n }\n\n if (valueProp !== value) {\n dispatch({type: 'value/change', value: valueProp || null})\n }\n }, [valueProp, value])\n\n // Reset active item when closing\n useEffect(() => {\n if (!focused) {\n if (valueRef.current) {\n dispatch({type: 'root/setActiveValue', value: valueRef.current})\n }\n }\n }, [focused])\n\n // Focus the selected item\n useEffect(() => {\n const listElement = listBoxElementRef.current\n\n if (!listElement) return\n\n const activeOption = filteredOptions.find((o) => o.value === activeValue)\n\n if (activeOption) {\n const activeIndex = filteredOptions.indexOf(activeOption)\n const activeItemElement = listElement.childNodes[activeIndex] as HTMLLIElement | undefined\n\n if (activeItemElement) {\n if (_hasFocus(activeItemElement)) {\n // already focused\n return\n }\n\n focusFirstDescendant(activeItemElement)\n }\n }\n }, [activeValue, filteredOptions])\n\n const setRef = useCallback(\n (el: HTMLInputElement | null) => {\n inputElementRef.current = el\n forwardedRef.current = el\n },\n [forwardedRef]\n )\n\n const clearButton = useMemo(() => {\n if (!loading && !disabled && value) {\n return {\n 'aria-label': 'Clear',\n onFocus: handleClearButtonFocus,\n }\n }\n\n return undefined\n }, [disabled, handleClearButtonFocus, loading, value])\n\n const openButtonBoxPadding = useMemo(\n () =>\n padding.map((v) => {\n if (v === 0) return 0\n if (v === 1) return 1\n if (v === 2) return 1\n\n return v - 2\n }),\n [padding]\n )\n const openButtonPadding = useMemo(\n () =>\n padding.map((v) => {\n if (v === 0) return 0\n if (v === 1) return 0\n if (v === 2) return 1\n\n return v - 1\n }),\n [padding]\n )\n const openButtonProps: AutocompleteOpenButtonProps = useMemo(\n () => (typeof openButton === 'object' ? openButton : EMPTY_RECORD),\n [openButton]\n )\n\n const handleOpenClick = useCallback(\n (event: React.MouseEvent<HTMLButtonElement>) => {\n dispatch({\n type: 'root/open',\n query: value ? renderValue(value, currentOption) : '',\n })\n\n if (openButtonProps.onClick) openButtonProps.onClick(event)\n\n _raf(() => inputElementRef.current?.focus())\n },\n [currentOption, openButtonProps, renderValue, value]\n )\n\n const openButtonNode = useMemo(\n () =>\n !disabled && !readOnly && openButton ? (\n <Box aria-hidden={expanded} padding={openButtonBoxPadding}>\n <Button\n aria-label=\"Open\"\n disabled={expanded}\n fontSize={fontSize}\n icon={ChevronDownIcon}\n mode=\"bleed\"\n padding={openButtonPadding}\n {...openButtonProps}\n onClick={handleOpenClick}\n />\n </Box>\n ) : undefined,\n [\n disabled,\n expanded,\n fontSize,\n handleOpenClick,\n openButton,\n openButtonBoxPadding,\n openButtonPadding,\n openButtonProps,\n readOnly,\n ]\n )\n\n const inputValue = useMemo(() => {\n if (query === null) {\n if (value !== null) {\n return renderValue(value, currentOption)\n }\n\n return ''\n }\n\n return query\n }, [currentOption, query, renderValue, value])\n\n const input = (\n <TextInput\n {...restProps}\n aria-activedescendant={activeItemId}\n aria-autocomplete=\"list\"\n aria-expanded={expanded}\n aria-owns={listBoxId}\n autoCapitalize=\"off\"\n autoComplete=\"off\"\n autoCorrect=\"off\"\n border={border}\n clearButton={clearButton}\n customValidity={customValidity}\n disabled={disabled}\n fontSize={fontSize}\n icon={icon}\n iconRight={loading && AnimatedSpinnerIcon}\n id={id}\n inputMode=\"search\"\n onChange={handleInputChange}\n onClear={handleClearButtonClick}\n onFocus={handleInputFocus}\n padding={padding}\n prefix={prefix}\n radius={radius}\n readOnly={readOnly}\n ref={setRef}\n role=\"combobox\"\n spellCheck={false}\n suffix={suffix || openButtonNode}\n value={inputValue}\n />\n )\n\n const handleListBoxKeyDown = useCallback(\n (event: React.KeyboardEvent<HTMLDivElement>) => {\n // If the focus is currently in the list, move focus to the input element\n if (event.key === 'Tab') {\n if (listFocused) inputElementRef.current?.focus()\n }\n },\n [listFocused]\n )\n\n const content = useMemo(() => {\n if (filteredOptions.length === 0) return null\n\n return (\n <ListBox\n data-ui=\"AutoComplete__results\"\n onKeyDown={handleListBoxKeyDown}\n padding={1}\n {...listBox}\n tabIndex={-1}\n >\n <Stack\n as=\"ul\"\n aria-multiselectable={false}\n data-ui=\"AutoComplete__resultsList\"\n id={listBoxId}\n ref={listBoxElementRef}\n role=\"listbox\"\n space={1}\n >\n {filteredOptions.map((option) => {\n const active =\n activeValue !== null ? option.value === activeValue : currentOption === option\n\n return (\n <AutocompleteOption\n id={`${id}-option-${option.value}`}\n key={option.value}\n onSelect={handleOptionSelect}\n selected={active}\n value={option.value}\n >\n {cloneElement(renderOption(option), {\n disabled: loading,\n selected: active,\n tabIndex: listFocused && active ? 0 : -1,\n })}\n </AutocompleteOption>\n )\n })}\n </Stack>\n </ListBox>\n )\n }, [\n activeValue,\n currentOption,\n filteredOptions,\n handleOptionSelect,\n handleListBoxKeyDown,\n id,\n listBox,\n listBoxId,\n listFocused,\n loading,\n renderOption,\n ])\n\n const results = useMemo(() => {\n if (renderPopover) {\n return renderPopover(\n {\n content,\n hidden: !expanded,\n inputElement: inputElementRef.current,\n onMouseEnter: handlePopoverMouseEnter,\n onMouseLeave: handlePopoverMouseLeave,\n },\n setResultsPopoverElement\n )\n }\n\n if (filteredOptionsLen === 0) {\n return null\n }\n\n return (\n <ResultsPopover\n __unstable_margins={AUTOCOMPLETE_POPOVER_MARGINS}\n arrow={false}\n constrainSize\n content={content}\n fallbackPlacements={AUTOCOMPLETE_POPOVER_FALLBACK_PLACEMENTS}\n matchReferenceWidth\n onMouseEnter={handlePopoverMouseEnter}\n onMouseLeave={handlePopoverMouseLeave}\n open={expanded}\n placement={AUTOCOMPLETE_POPOVER_PLACEMENT}\n portal\n radius={radius}\n ref={setResultsPopoverElement}\n referenceElement={inputElementRef.current}\n {...popover}\n />\n )\n }, [\n content,\n expanded,\n filteredOptionsLen,\n handlePopoverMouseEnter,\n handlePopoverMouseLeave,\n popover,\n radius,\n renderPopover,\n ])\n\n return (\n <Root\n data-ui=\"Autocomplete\"\n onBlur={handleRootBlur}\n onFocus={handleRootFocus}\n onKeyDown={handleRootKeyDown}\n ref={setRootElement}\n >\n {input}\n {results}\n </Root>\n )\n})\n\n/**\n * @public\n */\nexport const Autocomplete = InnerAutocomplete as <Option extends BaseAutocompleteOption>(\n props: AutocompleteProps<Option> &\n Omit<\n React.HTMLProps<HTMLInputElement>,\n | 'aria-activedescendant'\n | 'aria-autocomplete'\n | 'aria-expanded'\n | 'aria-owns'\n | 'as'\n | 'autoCapitalize'\n | 'autoComplete'\n | 'autoCorrect'\n | 'id'\n | 'inputMode'\n | 'onChange'\n | 'onSelect'\n | 'prefix'\n | 'ref'\n | 'role'\n | 'spellCheck'\n | 'type'\n | 'value'\n > & {\n ref?: React.Ref<HTMLInputElement>\n }\n) => React.ReactElement\n","import styled from 'styled-components'\nimport {Button} from '../../primitives'\n\nexport const Root = styled.ol`\n margin: 0;\n padding: 0;\n display: flex;\n list-style: none;\n align-items: center;\n white-space: nowrap;\n line-height: 0;\n`\n\nexport const ExpandButton = styled(Button)`\n appearance: none;\n margin: -4px;\n`\n","import React, {\n Children,\n forwardRef,\n Fragment,\n isValidElement,\n useCallback,\n useMemo,\n useState,\n} from 'react'\nimport {useArrayProp, useClickOutside} from '../../hooks'\nimport {Box, Popover, Stack, Text} from '../../primitives'\nimport {ExpandButton, Root} from './breadcrumbs.styles'\n\n/**\n * @beta\n */\nexport interface BreadcrumbsProps {\n maxLength?: number\n separator?: React.ReactNode\n space?: number | number[]\n}\n\n/**\n * @beta\n */\nexport const Breadcrumbs = forwardRef(function Breadcrumbs(\n props: BreadcrumbsProps & Omit<React.HTMLProps<HTMLOListElement>, 'as' | 'ref' | 'type'>,\n ref: React.ForwardedRef<HTMLOListElement>\n) {\n const {children, maxLength, separator, space: spaceRaw = 2, ...restProps} = props\n const space = useArrayProp(spaceRaw)\n const [open, setOpen] = useState(false)\n const [expandElement, setExpandElement] = useState<HTMLButtonElement | null>(null)\n const [popoverElement, setPopoverElement] = useState<HTMLDivElement | null>(null)\n\n const collapse = useCallback(() => setOpen(false), [])\n const expand = useCallback(() => setOpen(true), [])\n\n useClickOutside(collapse, [expandElement, popoverElement])\n\n const rawItems = useMemo(\n () =>\n Children.toArray(children).filter((child) => {\n return isValidElement(child)\n }),\n [children]\n )\n\n const items = useMemo(() => {\n const len = rawItems.length\n\n if (maxLength && len > maxLength) {\n const beforeLength = Math.ceil(maxLength / 2)\n const afterLength = Math.floor(maxLength / 2)\n\n return [\n ...rawItems.slice(0, beforeLength - 1),\n <Popover\n constrainSize\n content={\n <Stack as=\"ol\" overflow=\"auto\" padding={space} space={space}>\n {rawItems.slice(beforeLength - 1, len - afterLength)}\n </Stack>\n }\n key=\"button\"\n open={open}\n placement=\"top\"\n portal\n ref={setPopoverElement}\n >\n <ExpandButton\n fontSize={1}\n mode=\"bleed\"\n onClick={open ? collapse : expand}\n padding={1}\n ref={setExpandElement}\n selected={open}\n text=\"…\"\n />\n </Popover>,\n ...rawItems.slice(len - afterLength),\n ]\n }\n\n return rawItems\n }, [collapse, expand, maxLength, open, rawItems, space])\n\n return (\n <Root data-ui=\"Breadcrumbs\" {...restProps} ref={ref}>\n {items.map((item, itemIndex) => (\n <Fragment key={itemIndex}>\n {itemIndex > 0 && (\n <Box aria-hidden as=\"li\" paddingX={space}>\n {separator || <Text muted>/</Text>}\n </Box>\n )}\n <Box as=\"li\">{item}</Box>\n </Fragment>\n ))}\n </Root>\n )\n})\n","import {CSSObject} from 'styled-components'\nimport {_responsive, ThemeProps} from '../../styles'\nimport {DialogPosition} from '../../types'\n\n/**\n * @internal\n */\nexport interface ResponsiveDialogPositionStyleProps {\n $position: DialogPosition[]\n}\n\nexport function dialogStyle({theme}: ThemeProps): CSSObject {\n const color = theme.sanity.color.base\n\n return {\n '&:not([hidden])': {\n display: 'flex',\n },\n\n top: 0,\n left: 0,\n right: 0,\n bottom: 0,\n alignItems: 'center',\n justifyContent: 'center',\n outline: 'none',\n background: color.shadow.umbra,\n }\n}\n\nexport function responsiveDialogPositionStyle(\n props: ResponsiveDialogPositionStyleProps & ThemeProps\n): CSSObject[] {\n const {theme} = props\n const {media} = theme.sanity\n\n return _responsive(media, props.$position, (position) => ({'&&': {position}}))\n}\n","import {createContext} from 'react'\nimport {globalScope} from '../../lib/globalScope'\nimport {DialogPosition} from '../../types'\n\n/**\n * This API might change. DO NOT USE IN PRODUCTION.\n * @beta\n */\nexport interface DialogContextValue {\n version: 0.0\n position?: DialogPosition | DialogPosition[]\n zOffset?: number | number[]\n}\n\nconst key = Symbol.for('@sanity/ui/context/dialog')\n\nglobalScope[key] = globalScope[key] || createContext<DialogContextValue>({version: 0.0})\n\n/**\n * @internal\n */\nexport const DialogContext: React.Context<DialogContextValue> = globalScope[key]\n","import {useContext} from 'react'\nimport {DialogContext, DialogContextValue} from './dialogContext'\n\n/**\n * This API might change. DO NOT USE IN PRODUCTION.\n * @beta\n */\nexport function useDialog(): DialogContextValue {\n return useContext(DialogContext)\n}\n","import {CloseIcon} from '@sanity/icons'\nimport React, {forwardRef, useCallback, useEffect, useRef, useState} from 'react'\nimport styled from 'styled-components'\nimport {focusFirstDescendant, focusLastDescendant} from '../../helpers'\nimport {useArrayProp, useClickOutside, useForwardedRef, useGlobalKeyDown} from '../../hooks'\nimport {Box, Button, Card, Container, Flex, Text} from '../../primitives'\nimport {ResponsivePaddingProps, ResponsiveWidthProps} from '../../primitives/types'\nimport {responsivePaddingStyle, ResponsivePaddingStyleProps} from '../../styles/internal'\nimport {ThemeColorSchemeKey, useTheme} from '../../theme'\nimport {DialogPosition} from '../../types'\nimport {Layer, Portal, useLayer} from '../../utils'\nimport {\n dialogStyle,\n responsiveDialogPositionStyle,\n ResponsiveDialogPositionStyleProps,\n} from './styles'\nimport {useDialog} from './useDialog'\n\n/**\n * @public\n */\nexport interface DialogProps extends ResponsivePaddingProps, ResponsiveWidthProps {\n /**\n * @beta\n */\n __unstable_autoFocus?: boolean\n /**\n * @beta\n */\n __unstable_hideCloseButton?: boolean\n cardRadius?: number | number[]\n cardShadow?: number | number[]\n contentRef?: React.ForwardedRef<HTMLDivElement>\n footer?: React.ReactNode\n header?: React.ReactNode\n id: string\n onClickOutside?: () => void\n onClose?: () => void\n portal?: string\n position?: DialogPosition | DialogPosition[]\n scheme?: ThemeColorSchemeKey\n zOffset?: number | number[]\n}\n\ninterface DialogCardProps extends ResponsiveWidthProps {\n /**\n * @beta\n */\n __unstable_autoFocus: boolean\n /**\n * @beta\n */\n __unstable_hideCloseButton: boolean\n children: React.ReactNode\n contentRef?: React.ForwardedRef<HTMLDivElement>\n footer: React.ReactNode\n header: React.ReactNode\n id: string\n onClickOutside?: () => void\n onClose?: () => void\n radius: number | number[]\n scheme?: ThemeColorSchemeKey\n shadow: number | number[]\n}\n\nconst Root = styled(Layer)<ResponsiveDialogPositionStyleProps & ResponsivePaddingStyleProps>(\n responsivePaddingStyle,\n dialogStyle,\n responsiveDialogPositionStyle\n)\n\nconst DialogContainer = styled(Container)`\n &:not([hidden]) {\n display: flex;\n }\n width: 100%;\n height: 100%;\n flex-direction: column;\n align-items: center;\n justify-content: center;\n`\n\nconst DialogCardRoot = styled(Card)`\n &:not([hidden]) {\n display: flex;\n }\n width: 100%;\n min-height: 0;\n max-height: 100%;\n overflow: hidden;\n`\n\nconst DialogLayout = styled(Flex)`\n flex: 1;\n min-height: 0;\n width: 100%;\n`\n\nconst DialogHeader = styled(Card)`\n position: relative;\n z-index: 2;\n\n &:after {\n content: '';\n display: block;\n position: absolute;\n left: 0;\n right: 0;\n bottom: -1px;\n border-bottom: 1px solid var(--card-hairline-soft-color);\n }\n`\n\nconst DialogContent = styled(Box)`\n position: relative;\n z-index: 1;\n overflow: auto;\n outline: none;\n`\n\nconst DialogFooter = styled(Box)`\n position: relative;\n z-index: 3;\n border-top: 1px solid var(--card-hairline-soft-color);\n`\n\nconst DialogCard = forwardRef(function DialogCard(\n props: DialogCardProps,\n ref: React.ForwardedRef<HTMLDivElement>\n) {\n const {\n __unstable_autoFocus: autoFocus,\n __unstable_hideCloseButton: hideCloseButton,\n children,\n contentRef,\n footer,\n header,\n id,\n onClickOutside,\n onClose,\n radius: radiusProp,\n scheme,\n shadow: shadowProp,\n width: widthProp,\n } = props\n const radius = useArrayProp(radiusProp)\n const shadow = useArrayProp(shadowProp)\n const width = useArrayProp(widthProp)\n const forwardedRef = useForwardedRef(ref)\n const [rootElement, setRootElement] = useState<HTMLDivElement | null>(null)\n const localContentRef = useRef<HTMLDivElement | null>(null)\n const layer = useLayer()\n const {isTopLayer} = layer\n const labelId = `${id}_label`\n const showCloseButton = Boolean(onClose) && hideCloseButton === false\n const showHeader = Boolean(header) || showCloseButton\n\n useEffect(() => {\n if (!autoFocus) return\n\n // On mount: focus the first interactive element in the contents\n if (forwardedRef.current) {\n focusFirstDescendant(forwardedRef.current)\n }\n }, [autoFocus, forwardedRef])\n\n useGlobalKeyDown(\n useCallback(\n (event: KeyboardEvent) => {\n if (!isTopLayer || !onClose) return\n\n if (event.key === 'Escape') {\n event.preventDefault()\n event.stopPropagation()\n onClose()\n }\n },\n [isTopLayer, onClose]\n )\n )\n\n useClickOutside(\n useCallback(() => {\n if (!isTopLayer || !onClickOutside) return\n\n onClickOutside()\n }, [isTopLayer, onClickOutside]),\n [rootElement]\n )\n\n const setRef = useCallback(\n (el: HTMLDivElement | null) => {\n setRootElement(el)\n forwardedRef.current = el\n },\n [forwardedRef]\n )\n\n const setContentRef = useCallback(\n (el: HTMLDivElement | null) => {\n localContentRef.current = el\n if (typeof contentRef === 'function') contentRef(el)\n else if (contentRef) contentRef.current = el\n },\n [contentRef]\n )\n\n return (\n <DialogContainer data-ui=\"DialogCard\" width={width}>\n <DialogCardRoot radius={radius} ref={setRef} scheme={scheme} shadow={shadow}>\n <DialogLayout direction=\"column\">\n {showHeader && (\n <DialogHeader>\n <Flex>\n <Box flex={1} padding={4}>\n {header && (\n <Text id={labelId} weight=\"semibold\">\n {header}\n </Text>\n )}\n </Box>\n {showCloseButton && (\n <Box padding={2}>\n <Button\n aria-label=\"Close dialog\"\n disabled={!onClose}\n icon={CloseIcon}\n mode=\"bleed\"\n onClick={onClose}\n padding={3}\n />\n </Box>\n )}\n </Flex>\n </DialogHeader>\n )}\n\n <DialogContent flex={1} ref={setContentRef} tabIndex={-1}>\n {children}\n </DialogContent>\n\n {footer && <DialogFooter>{footer}</DialogFooter>}\n </DialogLayout>\n </DialogCardRoot>\n </DialogContainer>\n )\n})\n\n/**\n * @public\n */\nexport const Dialog = forwardRef(function Dialog(\n props: DialogProps & Omit<React.HTMLProps<HTMLDivElement>, 'as' | 'id' | 'width'>,\n ref: React.Ref<HTMLDivElement>\n) {\n const dialog = useDialog()\n const theme = useTheme()\n const {\n __unstable_autoFocus: autoFocus = true,\n __unstable_hideCloseButton: hideCloseButton = false,\n cardRadius: cardRadiusProp = 3,\n cardShadow = 4,\n children,\n contentRef,\n footer,\n header,\n id,\n onClickOutside,\n onClose,\n padding: paddingProp = 4,\n portal,\n position: positionProp = dialog.position || 'fixed',\n scheme,\n width: widthProp = 0,\n zOffset: zOffsetProp = dialog.zOffset || theme.sanity.layer?.dialog.zOffset,\n ...restProps\n } = props\n const cardRadius = useArrayProp(cardRadiusProp)\n const padding = useArrayProp(paddingProp)\n const position = useArrayProp(positionProp)\n const width = useArrayProp(widthProp)\n const zOffset = useArrayProp(zOffsetProp)\n const preDivRef = useRef<HTMLDivElement | null>(null)\n const postDivRef = useRef<HTMLDivElement | null>(null)\n const cardRef = useRef<HTMLDivElement | null>(null)\n\n const handleFocus = useCallback((event: React.FocusEvent<HTMLDivElement>) => {\n const target = event.target\n const cardElement = cardRef.current\n\n if (!cardElement) {\n return\n }\n\n if (target === preDivRef.current) {\n focusLastDescendant(cardElement)\n\n return\n }\n\n if (target === postDivRef.current) {\n focusFirstDescendant(cardElement)\n\n return\n }\n }, [])\n\n const labelId = `${id}_label`\n\n return (\n <Portal __unstable_name={portal}>\n <Root\n {...restProps}\n $padding={padding}\n $position={position}\n aria-labelledby={labelId}\n aria-modal\n data-ui=\"Dialog\"\n id={id}\n onFocus={handleFocus}\n ref={ref}\n role=\"dialog\"\n zOffset={zOffset}\n >\n <div ref={preDivRef} tabIndex={0} />\n <DialogCard\n __unstable_autoFocus={autoFocus}\n __unstable_hideCloseButton={hideCloseButton}\n contentRef={contentRef}\n footer={footer}\n header={header}\n id={id}\n onClickOutside={onClickOutside}\n onClose={onClose}\n radius={cardRadius}\n ref={cardRef}\n scheme={scheme}\n shadow={cardShadow}\n width={width}\n >\n {children}\n </DialogCard>\n <div ref={postDivRef} tabIndex={0} />\n </Root>\n </Portal>\n )\n})\n","import React, {useMemo} from 'react'\nimport {DialogPosition} from '../../types'\nimport {DialogContext, DialogContextValue} from './dialogContext'\n\n/**\n * This API might change. DO NOT USE IN PRODUCTION.\n * @beta\n */\nexport interface DialogProviderProps {\n children?: React.ReactNode\n position?: DialogPosition | DialogPosition[]\n zOffset?: number | number[]\n}\n\n/**\n * This API might change. DO NOT USE IN PRODUCTION.\n * @beta\n */\nexport function DialogProvider(props: DialogProviderProps): React.ReactElement {\n const {children, position, zOffset} = props\n\n const contextValue: DialogContextValue = useMemo(\n () => ({\n version: 0.0,\n position,\n zOffset,\n }),\n [position, zOffset]\n )\n\n return <DialogContext.Provider value={contextValue}>{children}</DialogContext.Provider>\n}\n","import React, {forwardRef} from 'react'\nimport styled from 'styled-components'\nimport {useArrayProp} from '../../hooks'\nimport {Inline, KBD} from '../../primitives'\n\n/**\n * @public\n */\nexport interface HotkeysProps {\n fontSize?: number | number[]\n padding?: number | number[]\n radius?: number | number[]\n space?: number | number[]\n keys?: string[]\n}\n\nconst Root = styled.kbd`\n &:not([hidden]) {\n display: block;\n }\n font: inherit;\n`\n\nconst Key = styled(KBD)`\n &:not([hidden]) {\n display: block;\n }\n`\n\n/**\n * @public\n */\nexport const Hotkeys = forwardRef(function Hotkeys(\n props: HotkeysProps & Omit<React.HTMLProps<HTMLElement>, 'as' | 'ref' | 'size'>,\n ref: React.Ref<HTMLElement>\n) {\n const {fontSize, keys, padding, radius, space: spaceProp = 1, ...restProps} = props\n const space = useArrayProp(spaceProp)\n\n if (!keys || keys.length === 0) {\n return <></>\n }\n\n return (\n <Root data-ui=\"Hotkeys\" {...restProps} ref={ref}>\n <Inline as=\"span\" space={space}>\n {keys.map((key, i) => (\n <Key fontSize={fontSize} key={i} padding={padding} radius={radius}>\n {key}\n </Key>\n ))}\n </Inline>\n </Root>\n )\n})\n","import {createContext} from 'react'\nimport {globalScope} from '../../lib/globalScope'\n\nexport interface MenuContextValue {\n version: 0.0\n activeElement: HTMLElement | null\n activeIndex: number\n mount: (element: HTMLElement | null, selected?: boolean) => () => void\n onClickOutside?: (event: MouseEvent) => void\n onEscape?: () => void\n onItemClick?: () => void\n onItemMouseEnter?: (event: React.MouseEvent<HTMLElement>) => void\n onItemMouseLeave?: (event: React.MouseEvent<HTMLElement>) => void\n registerElement?: (el: HTMLElement) => () => void\n\n /**\n * @deprecated Use `onItemMouseEnter` instead\n */\n onMouseEnter: (event: React.MouseEvent<HTMLElement>) => void\n\n /**\n * @deprecated Use `onItemMouseLeave` instead\n */\n onMouseLeave: (event: React.MouseEvent<HTMLElement>) => void\n}\n\nconst key = Symbol.for('@sanity/ui/context/menu')\n\nglobalScope[key] = globalScope[key] || createContext<MenuContextValue | null>(null)\n\nexport const MenuContext: React.Context<MenuContextValue | null> = globalScope[key]\n","import {isHTMLAnchorElement, isHTMLButtonElement} from '../../helpers'\n\n/**\n * @internal\n */\nfunction _isFocusable(element: HTMLElement) {\n return (\n (isHTMLAnchorElement(element) && element.getAttribute('data-disabled') !== 'true') ||\n (isHTMLButtonElement(element) && !element.disabled)\n )\n}\n\n/**\n * @internal\n */\nexport function _getFocusableElements(elements: HTMLElement[]): HTMLElement[] {\n return elements.filter(_isFocusable)\n}\n\n/**\n * @internal\n */\nexport function _getDOMPath(rootElement: HTMLElement, el: HTMLElement): number[] {\n const path: number[] = []\n\n let e = el\n\n while (e !== rootElement) {\n const parentElement = e.parentElement\n\n if (!parentElement) return path\n\n const children = Array.from(parentElement.childNodes)\n const index = children.indexOf(e)\n\n path.unshift(index)\n\n if (parentElement === rootElement) {\n return path\n }\n\n e = parentElement\n }\n\n return path\n}\n\nconst EMPTY_PATH: number[] = []\n\n/**\n * @internal\n */\nexport function _sortElements(rootElement: HTMLElement | null, elements: HTMLElement[]): void {\n if (!rootElement) return\n\n const map = new WeakMap<HTMLElement, number[]>()\n\n for (const el of elements) {\n map.set(el, _getDOMPath(rootElement, el))\n }\n\n const _sort = (a: HTMLElement, b: HTMLElement) => {\n const _a = map.get(a) || EMPTY_PATH\n const _b = map.get(b) || EMPTY_PATH\n\n const len = Math.max(_a.length, _b.length)\n\n // Loop until there are different indexes\n for (let i = 0; i < len; i += 1) {\n const aIndex = _a[i] || -1\n const bIndex = _b[i] || -1\n\n if (aIndex !== bIndex) {\n return aIndex - bIndex\n }\n }\n\n return 0\n }\n\n elements.sort(_sort)\n}\n","import {useCallback, useEffect, useRef, useState} from 'react'\nimport {_getFocusableElements, _sortElements} from './helpers'\n\n/**\n * @internal\n */\nexport interface MenuController {\n activeElement: HTMLElement | null\n activeIndex: number\n handleItemMouseEnter: (event: React.MouseEvent<HTMLElement>) => void\n handleItemMouseLeave: () => void\n handleKeyDown: (event: React.KeyboardEvent<HTMLDivElement>) => void\n mount: (element: HTMLElement | null, selected?: boolean) => () => void\n rootElement: HTMLDivElement | null\n setRootElement: (el: HTMLDivElement | null) => void\n}\n\n/**\n * This controller is responsible for controlling UI menu state.\n *\n * @internal\n */\nexport function useMenuController(props: {\n onKeyDown?: React.KeyboardEventHandler\n originElement?: HTMLElement | null\n shouldFocus: 'first' | 'last' | null\n}): MenuController {\n const {onKeyDown, originElement, shouldFocus} = props\n const elementsRef = useRef<HTMLElement[]>([])\n const [rootElement, setRootElement] = useState<HTMLDivElement | null>(null)\n const [activeIndex, _setActiveIndex] = useState(-1)\n const activeIndexRef = useRef(activeIndex)\n const activeElement = elementsRef.current[activeIndex] || null\n const mounted = Boolean(rootElement)\n\n const setActiveIndex = useCallback((nextActiveIndex) => {\n _setActiveIndex(nextActiveIndex)\n activeIndexRef.current = nextActiveIndex\n }, [])\n\n const mount = useCallback(\n (element: HTMLElement | null, selected?: boolean): (() => void) => {\n if (!element) return () => undefined\n\n if (elementsRef.current.indexOf(element) === -1) {\n elementsRef.current.push(element)\n _sortElements(rootElement, elementsRef.current)\n }\n\n if (selected) {\n const selectedIndex = elementsRef.current.indexOf(element)\n\n setActiveIndex(selectedIndex)\n }\n\n return () => {\n const idx = elementsRef.current.indexOf(element)\n\n if (idx > -1) {\n elementsRef.current.splice(idx, 1)\n }\n }\n },\n [rootElement, setActiveIndex]\n )\n\n const handleKeyDown = useCallback(\n (event: React.KeyboardEvent<HTMLDivElement>) => {\n // Move focus to the element that opened the menu before handling the `Tab` press\n if (event.key === 'Tab') {\n if (originElement) {\n originElement.focus()\n }\n\n return\n }\n\n // Move focus to the first focusable menuitem\n if (event.key === 'Home') {\n event.preventDefault()\n event.stopPropagation()\n\n const focusableElements = _getFocusableElements(elementsRef.current)\n const el = focusableElements[0]\n\n if (!el) return\n\n const currentIndex = elementsRef.current.indexOf(el)\n\n setActiveIndex(currentIndex)\n\n return\n }\n\n // Move focus to the last focusable menuitem\n if (event.key === 'End') {\n event.preventDefault()\n event.stopPropagation()\n\n const focusableElements = _getFocusableElements(elementsRef.current)\n const el = focusableElements[focusableElements.length - 1]\n\n if (!el) return\n\n const currentIndex = elementsRef.current.indexOf(el)\n\n setActiveIndex(currentIndex)\n\n return\n }\n\n if (event.key === 'ArrowUp') {\n event.preventDefault()\n event.stopPropagation()\n\n const focusableElements = _getFocusableElements(elementsRef.current)\n const focusableLen = focusableElements.length\n\n if (focusableLen === 0) return\n\n const focusedElement = elementsRef.current[activeIndexRef.current]\n\n let focusedIndex = focusableElements.indexOf(focusedElement)\n\n focusedIndex = (focusedIndex - 1 + focusableLen) % focusableLen\n\n const el = focusableElements[focusedIndex]\n const currentIndex = elementsRef.current.indexOf(el)\n\n setActiveIndex(currentIndex)\n\n return\n }\n\n if (event.key === 'ArrowDown') {\n event.preventDefault()\n event.stopPropagation()\n\n const focusableElements = _getFocusableElements(elementsRef.current)\n const focusableLen = focusableElements.length\n\n if (focusableLen === 0) return\n\n const focusedElement = elementsRef.current[activeIndexRef.current]\n\n let focusedIndex = focusableElements.indexOf(focusedElement)\n\n focusedIndex = (focusedIndex + 1) % focusableLen\n\n const el = focusableElements[focusedIndex]\n const currentIndex = elementsRef.current.indexOf(el)\n\n setActiveIndex(currentIndex)\n\n return\n }\n\n if (onKeyDown) {\n onKeyDown(event)\n }\n },\n [onKeyDown, originElement, setActiveIndex]\n )\n\n const handleItemMouseEnter = useCallback(\n (event: React.MouseEvent<HTMLElement>) => {\n const element = event.currentTarget\n const currentIndex = elementsRef.current.indexOf(element)\n\n setActiveIndex(currentIndex)\n },\n [setActiveIndex]\n )\n\n const handleItemMouseLeave = useCallback(() => {\n rootElement?.focus()\n setActiveIndex(-1)\n }, [rootElement, setActiveIndex])\n\n // Set focus on the currently active element\n useEffect(() => {\n if (!mounted) return\n\n const rafId = window.requestAnimationFrame(() => {\n const _activeIndex = activeIndexRef.current\n\n if (_activeIndex === -1) {\n if (shouldFocus === 'first') {\n const focusableElements = _getFocusableElements(elementsRef.current)\n const el = focusableElements[0]\n\n if (el) {\n const currentIndex = elementsRef.current.indexOf(el)\n\n setActiveIndex(currentIndex)\n activeIndexRef.current = currentIndex\n }\n }\n\n if (shouldFocus === 'last') {\n const focusableElements = _getFocusableElements(elementsRef.current)\n const el = focusableElements[focusableElements.length - 1]\n\n if (el) {\n const currentIndex = elementsRef.current.indexOf(el)\n\n setActiveIndex(currentIndex)\n activeIndexRef.current = currentIndex\n }\n }\n\n return\n }\n\n const element = elementsRef.current[_activeIndex] || null\n\n element?.focus()\n })\n\n return () => {\n window.cancelAnimationFrame(rafId)\n }\n }, [activeIndex, mounted, setActiveIndex, shouldFocus])\n\n return {\n activeElement,\n activeIndex,\n handleItemMouseEnter,\n handleItemMouseLeave,\n handleKeyDown,\n mount,\n rootElement,\n setRootElement,\n }\n}\n","import React, {forwardRef, useCallback, useEffect, useMemo} from 'react'\nimport styled from 'styled-components'\nimport {useClickOutside, useForwardedRef, useGlobalKeyDown} from '../../hooks'\nimport {Box, Stack} from '../../primitives'\nimport {ResponsivePaddingProps} from '../../primitives/types'\nimport {useLayer} from '../../utils'\nimport {MenuContext, MenuContextValue} from './menuContext'\nimport {useMenuController} from './useMenuController'\n\n/**\n * @public\n */\nexport interface MenuProps extends ResponsivePaddingProps {\n /**\n * @deprecated Use `shouldFocus=\"first\"` instead.\n */\n focusFirst?: boolean\n /**\n * @deprecated Use `shouldFocus=\"last\"` instead.\n */\n focusLast?: boolean\n onClickOutside?: (event: MouseEvent) => void\n onEscape?: () => void\n onItemClick?: () => void\n onItemSelect?: (index: number) => void\n originElement?: HTMLElement | null\n registerElement?: (el: HTMLElement) => () => void\n shouldFocus?: 'first' | 'last' | null\n space?: number | number[]\n}\n\nconst Root = styled(Box)`\n outline: none;\n overflow: auto;\n`\n\n/**\n * @public\n */\nexport const Menu = forwardRef(function Menu(\n props: MenuProps & Omit<React.HTMLProps<HTMLDivElement>, 'as' | 'height' | 'role' | 'tabIndex'>,\n ref: React.ForwardedRef<HTMLDivElement>\n) {\n const {\n children,\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n focusFirst,\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n focusLast,\n onClickOutside,\n onEscape,\n onItemClick,\n onItemSelect,\n onKeyDown,\n originElement,\n padding = 1,\n registerElement,\n shouldFocus = (props.focusFirst && 'first') || (props.focusLast && 'last') || null,\n space = 1,\n ...restProps\n } = props\n\n const forwardedRef = useForwardedRef(ref)\n\n const {isTopLayer} = useLayer()\n\n const {\n activeElement,\n activeIndex,\n handleItemMouseEnter,\n handleItemMouseLeave,\n handleKeyDown,\n mount,\n rootElement,\n setRootElement,\n } = useMenuController({onKeyDown, originElement, shouldFocus})\n\n const handleRefChange = useCallback(\n (el: HTMLDivElement | null) => {\n setRootElement(el)\n forwardedRef.current = el\n },\n [forwardedRef, setRootElement]\n )\n\n // Trigger `onItemSelect` when active index changes\n useEffect(() => {\n if (onItemSelect) onItemSelect(activeIndex)\n }, [activeIndex, onItemSelect])\n\n // Close menu when clicking outside\n useClickOutside(\n useCallback(\n (event) => isTopLayer && onClickOutside && onClickOutside(event),\n [isTopLayer, onClickOutside]\n ),\n [rootElement]\n )\n\n // Close menu when pressing Escape\n useGlobalKeyDown(\n useCallback(\n (event) => {\n if (!isTopLayer) return\n\n if (event.key === 'Escape') {\n event.stopPropagation()\n if (onEscape) onEscape()\n }\n },\n [isTopLayer, onEscape]\n )\n )\n\n // Register root element (for nested menus)\n useEffect(() => {\n if (!rootElement || !registerElement) return\n\n return registerElement(rootElement)\n }, [registerElement, rootElement])\n\n const value: MenuContextValue = useMemo(\n () => ({\n version: 0.0,\n activeElement,\n activeIndex,\n mount,\n onClickOutside,\n onEscape,\n onItemClick,\n onItemMouseEnter: handleItemMouseEnter,\n onItemMouseLeave: handleItemMouseLeave,\n registerElement,\n\n // deprecated\n onMouseEnter: handleItemMouseEnter,\n onMouseLeave: handleItemMouseLeave,\n }),\n [\n activeElement,\n activeIndex,\n mount,\n handleItemMouseEnter,\n handleItemMouseLeave,\n onClickOutside,\n onEscape,\n onItemClick,\n registerElement,\n ]\n )\n\n return (\n <MenuContext.Provider value={value}>\n <Root\n data-ui=\"Menu\"\n {...restProps}\n onKeyDown={handleKeyDown}\n padding={padding}\n ref={handleRefChange}\n role=\"menu\"\n tabIndex={-1}\n >\n <Stack space={space}>{children}</Stack>\n </Root>\n </MenuContext.Provider>\n )\n})\n","import React, {\n cloneElement,\n forwardRef,\n useCallback,\n useMemo,\n useState,\n useEffect,\n useRef,\n} from 'react'\nimport {isElement} from 'react-is'\nimport {Popover, PopoverProps} from '../../primitives'\nimport {ThemeColorSchemeKey} from '../../theme'\nimport {Placement} from '../../types'\nimport {MenuProps} from './menu'\n\n/**\n * @public\n */\nexport interface MenuButtonProps {\n /**\n * @beta Do not use in production.\n */\n __unstable_disableRestoreFocusOnClose?: boolean\n /**\n * @deprecated Use `popover={{boundaryElement: element}}` instead.\n */\n boundaryElement?: HTMLElement\n button: React.ReactElement\n id: string\n menu?: React.ReactElement\n onClose?: () => void\n /**\n * @deprecated Use `popover={{placement: 'top'}}` instead.\n */\n placement?: Placement\n popover?: Omit<PopoverProps, 'content' | 'open'>\n /**\n * @deprecated Use `popover={{scheme: 'dark'}}` instead.\n */\n popoverScheme?: ThemeColorSchemeKey\n /**\n * @deprecated Use `popover={{radius: 2}}` instead.\n */\n popoverRadius?: number | number[]\n /**\n * @beta Do not use in production.\n * @deprecated Use `popover={{portal: true}}` instead.\n */\n portal?: boolean\n /**\n * @deprecated Use `popover={{preventOverflow: true}}` instead.\n */\n preventOverflow?: boolean\n}\n\n/**\n * @public\n */\nexport const MenuButton = forwardRef(function MenuButton(\n props: MenuButtonProps,\n ref: React.ForwardedRef<HTMLButtonElement | null>\n) {\n const {\n __unstable_disableRestoreFocusOnClose: disableRestoreFocusOnClose = false,\n boundaryElement: deprecated_boundaryElement,\n button: buttonProp,\n id,\n menu: menuProp,\n onClose,\n placement: deprecated_placement,\n popoverScheme: deprecated_popoverScheme,\n portal: deprecated_portal = true,\n popover,\n popoverRadius: deprecated_popoverRadius,\n preventOverflow: deprecated_preventOverflow,\n } = props\n const [open, setOpen] = useState(false)\n const [shouldFocus, setShouldFocus] = useState<'first' | 'last' | null>(null)\n const [buttonElement, setButtonElement] = useState<HTMLButtonElement | null>(null)\n const [menuElements, setChildMenuElements] = useState<HTMLElement[]>([])\n const openRef = useRef<boolean>(open)\n\n useEffect(() => {\n if (onClose && !open && openRef.current) {\n onClose()\n }\n }, [onClose, open])\n\n useEffect(() => {\n openRef.current = open\n }, [open])\n\n const handleButtonClick = useCallback(() => {\n setOpen((v) => !v)\n setShouldFocus(null)\n }, [])\n\n const handleButtonKeyDown = useCallback((event: React.KeyboardEvent<HTMLButtonElement>) => {\n // On `ArrowDown`, `Enter` and `Space`\n // - Opens menu and moves focus to first menuitem\n if (event.key === 'ArrowDown' || event.key === 'Enter' || event.key === ' ') {\n event.preventDefault()\n setOpen(true)\n setShouldFocus('first')\n\n return\n }\n\n // On `ArrowUp`\n // - \tOpens menu and moves focus to last menuitem\n if (event.key === 'ArrowUp') {\n event.preventDefault()\n setOpen(true)\n setShouldFocus('last')\n\n return\n }\n }, [])\n\n const handleMenuClickOutside = useCallback(\n (event: MouseEvent) => {\n const target = event.target\n\n if (!(target instanceof Node)) {\n return\n }\n\n if (buttonElement && (target === buttonElement || buttonElement.contains(target))) {\n return\n }\n\n for (const el of menuElements) {\n if (target === el || el.contains(target)) {\n return\n }\n }\n\n setOpen(false)\n },\n [buttonElement, menuElements]\n )\n\n const handleMenuEscape = useCallback(() => {\n setOpen(false)\n if (disableRestoreFocusOnClose) return\n if (buttonElement) buttonElement.focus()\n }, [buttonElement, disableRestoreFocusOnClose])\n\n const handleBlur = useCallback(\n (event: React.FocusEvent<HTMLButtonElement>) => {\n const target = event.relatedTarget\n\n if (!(target instanceof Node)) {\n return\n }\n\n for (const el of menuElements) {\n if (el === target || el.contains(target)) {\n return\n }\n }\n\n setOpen(false)\n },\n [menuElements]\n )\n\n const handleItemClick = useCallback(() => {\n setOpen(false)\n if (disableRestoreFocusOnClose) return\n if (buttonElement) buttonElement.focus()\n }, [buttonElement, disableRestoreFocusOnClose])\n\n const registerElement = useCallback((el: HTMLElement) => {\n setChildMenuElements((els) => els.concat([el]))\n\n return () => {\n setChildMenuElements((els) => {\n return els.filter((_el) => _el !== el)\n })\n }\n }, [])\n\n const menuProps: MenuProps = useMemo(\n () => ({\n 'aria-labelledby': id,\n onBlurCapture: handleBlur,\n onClickOutside: handleMenuClickOutside,\n onEscape: handleMenuEscape,\n onItemClick: handleItemClick,\n originElement: buttonElement,\n registerElement,\n shouldFocus,\n }),\n [\n buttonElement,\n handleMenuClickOutside,\n handleMenuEscape,\n handleItemClick,\n id,\n handleBlur,\n registerElement,\n shouldFocus,\n ]\n )\n\n const menu = isElement(menuProp) ? cloneElement(menuProp, menuProps) : null\n\n const setButtonRef = useCallback(\n (el: HTMLButtonElement | null) => {\n if (typeof ref === 'function') {\n ref(el)\n } else if (ref) {\n ref.current = el\n }\n\n setButtonElement(el)\n },\n [ref]\n )\n\n const button = useMemo(\n () =>\n isElement(buttonProp)\n ? cloneElement(buttonProp, {\n 'data-ui': 'MenuButton',\n id,\n onClick: handleButtonClick,\n onKeyDown: handleButtonKeyDown,\n 'aria-haspopup': true,\n 'aria-expanded': open,\n ref: setButtonRef,\n selected: open,\n })\n : null,\n [buttonProp, handleButtonClick, handleButtonKeyDown, id, open, setButtonRef]\n )\n\n const popoverProps: PopoverProps = useMemo(() => {\n return {\n boundaryElement: deprecated_boundaryElement,\n placement: deprecated_placement,\n portal: deprecated_portal,\n radius: deprecated_popoverRadius,\n preventOverflow: deprecated_preventOverflow,\n scheme: deprecated_popoverScheme,\n ...(popover || {}),\n }\n }, [\n deprecated_boundaryElement,\n deprecated_preventOverflow,\n deprecated_placement,\n popover,\n deprecated_popoverRadius,\n deprecated_portal,\n deprecated_popoverScheme,\n ])\n\n return (\n <Popover {...popoverProps} content={menu} data-ui=\"MenuButton__popover\" open={open}>\n {button || <></>}\n </Popover>\n )\n})\n","import styled, {StyledComponent} from 'styled-components'\nimport {Theme} from '../../theme'\n\n/**\n * @public\n */\nexport const MenuDivider: StyledComponent<'hr', Theme> = styled.hr`\n height: 1px;\n border: 0;\n background: var(--card-hairline-soft-color);\n margin: 0;\n`\n","import {css, FlattenSimpleInterpolation} from 'styled-components'\nimport {ThemeProps} from '../../styles'\nimport {_colorVarsStyle} from '../../styles/colorVars'\nimport {SelectableTone} from '../../types/selectable'\n\n/**\n * @internal\n */\nexport interface SelectableStyleProps {\n $tone: SelectableTone\n}\n\nexport function selectableBaseStyle(): FlattenSimpleInterpolation {\n return css`\n background-color: inherit;\n color: inherit;\n\n &[data-as='button'] {\n -webkit-font-smoothing: inherit;\n appearance: none;\n outline: none;\n font: inherit;\n text-align: inherit;\n border: 0;\n width: stretch;\n }\n\n /* &:is(a) */\n &[data-as='a'] {\n text-decoration: none;\n }\n `\n}\n\nexport function selectableColorStyle(\n props: SelectableStyleProps & ThemeProps\n): FlattenSimpleInterpolation {\n const {$tone, theme} = props\n const {base, muted, selectable} = theme.sanity.color\n // @todo: remove use of `muted` here\n const tone = selectable ? selectable[$tone] || selectable.default : muted[$tone] || muted.default\n\n return css`\n ${_colorVarsStyle(base, tone.enabled)}\n\n background-color: var(--card-bg-color);\n color: var(--card-fg-color);\n outline: none;\n\n /* &:is(button) */\n &[data-as='button'] {\n &:disabled {\n ${_colorVarsStyle(base, tone.disabled)}\n }\n\n &:not(:disabled) {\n &[aria-pressed='true'] {\n ${_colorVarsStyle(base, tone.pressed)}\n }\n\n &[data-selected],\n &[aria-selected='true'] > & {\n ${_colorVarsStyle(base, tone.selected)}\n }\n\n @media (hover: hover) {\n &:not([data-selected]) {\n &:hover {\n ${_colorVarsStyle(base, tone.hovered)}\n }\n\n &:active {\n ${_colorVarsStyle(base, tone.pressed)}\n }\n }\n }\n }\n }\n\n /* &:is(a) */\n &[data-as='a'] {\n &[data-disabled] {\n ${_colorVarsStyle(base, tone.disabled)}\n }\n\n &:not([data-disabled]) {\n &[data-pressed] {\n ${_colorVarsStyle(base, tone.pressed)}\n }\n\n &[data-selected] {\n ${_colorVarsStyle(base, tone.selected)}\n }\n\n @media (hover: hover) {\n &:not([data-selected]) {\n &:hover {\n ${_colorVarsStyle(base, tone.hovered)}\n }\n\n &:active {\n ${_colorVarsStyle(base, tone.pressed)}\n }\n }\n }\n }\n }\n\n ${theme.sanity.styles?.card?.root}\n `\n}\n","import styled from 'styled-components'\nimport {responsiveRadiusStyle, ResponsiveRadiusStyleProps} from '../../styles/radius'\nimport {Box} from '../box'\nimport {selectableBaseStyle, selectableColorStyle, SelectableStyleProps} from './style'\n\n/**\n * @internal\n */\nexport const Selectable = styled(Box)<SelectableStyleProps & ResponsiveRadiusStyleProps>(\n responsiveRadiusStyle,\n selectableBaseStyle,\n selectableColorStyle\n)\n","import {useContext} from 'react'\nimport {isRecord} from '../../lib/isRecord'\nimport {MenuContext, MenuContextValue} from './menuContext'\n\nexport function useMenu(): MenuContextValue {\n const value = useContext(MenuContext)\n\n if (!value) {\n throw new Error('useMenu(): missing context value')\n }\n\n // NOTE: This check is for future-compatiblity\n // - If the value is not an object, it’s not compatible with the current version\n // - If the value is an object, but doesn’t have `version: 0.0`, it’s not compatible with the current version\n if (!isRecord(value) || value.version !== 0.0) {\n throw new Error('useMenu(): the context value is not compatible')\n }\n\n return value\n}\n","import {ChevronRightIcon} from '@sanity/icons'\nimport React, {createElement, isValidElement, useCallback, useEffect, useRef, useState} from 'react'\nimport {isValidElementType} from 'react-is'\nimport {useArrayProp} from '../../hooks'\nimport {Box, Flex, Popover, PopoverProps, Text} from '../../primitives'\nimport {Selectable} from '../../primitives/_selectable'\nimport {SelectableTone} from '../../types/selectable'\nimport {Menu} from './menu'\nimport {useMenu} from './useMenu'\n\n/**\n * @public\n */\nexport interface MenuGroupProps {\n as?: React.ElementType | keyof JSX.IntrinsicElements\n fontSize?: number | number[]\n icon?: React.ComponentType | React.ReactNode\n padding?: number | number[]\n popover?: Omit<PopoverProps, 'content' | 'open'>\n radius?: number | number[]\n space?: number | number[]\n text: React.ReactNode\n tone?: SelectableTone\n}\n\n/**\n * @public\n */\nexport function MenuGroup(\n props: MenuGroupProps &\n Omit<React.HTMLProps<HTMLDivElement>, 'as' | 'height' | 'ref' | 'tabIndex'>\n): React.ReactElement {\n const {\n as = 'button',\n children,\n fontSize,\n icon,\n onClick,\n padding = 3,\n popover,\n radius = 2,\n space = 3,\n text,\n tone = 'default',\n ...restProps\n } = props\n const menu = useMenu()\n const {\n activeElement,\n mount,\n onClickOutside,\n onEscape,\n onItemClick,\n onItemMouseEnter = menu.onMouseEnter,\n registerElement,\n } = menu\n const [rootElement, setRootElement] = useState<HTMLButtonElement | null>(null)\n const [open, setOpen] = useState(false)\n const shouldFocusRef = useRef<'first' | 'last' | null>(null)\n const active = Boolean(activeElement) && activeElement === rootElement\n const [withinMenu, setWithinMenu] = useState(false)\n\n const handleMouseEnter = useCallback(\n (event: React.MouseEvent<HTMLElement>) => {\n setWithinMenu(false)\n onItemMouseEnter(event)\n setOpen(true)\n },\n [onItemMouseEnter]\n )\n\n const handleMenuKeyDown = useCallback(\n (event: React.KeyboardEvent<HTMLDivElement>) => {\n if (event.key === 'ArrowLeft') {\n event.stopPropagation()\n\n setOpen(false)\n\n requestAnimationFrame(() => {\n rootElement?.focus()\n })\n }\n },\n [rootElement]\n )\n\n const handleClick = useCallback(\n (event: React.MouseEvent<HTMLDivElement>) => {\n if (onClick) onClick(event)\n\n shouldFocusRef.current = 'first'\n\n setOpen(true)\n\n requestAnimationFrame(() => {\n shouldFocusRef.current = null\n })\n },\n [onClick]\n )\n\n const handleChildItemClick = useCallback(() => {\n setOpen(false)\n if (onItemClick) onItemClick()\n }, [onItemClick])\n\n const handleMenuMouseEnter = useCallback(() => setWithinMenu(true), [])\n\n // Register the menu item element\n useEffect(() => mount(rootElement), [mount, rootElement])\n\n // Close child menu when a sibling item becomes active\n useEffect(() => {\n if (!active) setOpen(false)\n }, [active])\n\n // Update state when child menu is no longer open\n useEffect(() => {\n if (!open) setWithinMenu(false)\n }, [open])\n\n const childMenu = (\n <Menu\n onClickOutside={onClickOutside}\n onEscape={onEscape}\n onItemClick={handleChildItemClick}\n onKeyDown={handleMenuKeyDown}\n onMouseEnter={handleMenuMouseEnter}\n registerElement={registerElement}\n shouldFocus={shouldFocusRef.current}\n >\n {children}\n </Menu>\n )\n\n const handleKeyDown = useCallback((event: React.KeyboardEvent<HTMLDivElement>) => {\n const target = event.currentTarget\n\n if (document.activeElement !== target) {\n return\n }\n\n if (event.key === 'ArrowRight') {\n shouldFocusRef.current = 'first'\n\n setOpen(true)\n setWithinMenu(true)\n\n requestAnimationFrame(() => {\n shouldFocusRef.current = null\n })\n\n return\n }\n }, [])\n\n return (\n <Popover {...popover} content={childMenu} data-ui=\"MenuGroup__popover\" open={open}>\n <Selectable\n data-as={as}\n data-ui=\"MenuGroup\"\n forwardedAs={as}\n {...restProps}\n aria-pressed={as === 'button' ? withinMenu : undefined}\n data-pressed={as !== 'button' ? withinMenu : undefined}\n data-selected={!withinMenu && active ? '' : undefined}\n $radius={useArrayProp(radius)}\n $tone={tone}\n onClick={handleClick}\n onKeyDown={handleKeyDown}\n onMouseEnter={handleMouseEnter}\n ref={setRootElement}\n tabIndex={-1}\n type={as === 'button' ? 'button' : undefined}\n >\n <Box padding={padding}>\n <Flex>\n {icon && (\n <Text size={fontSize}>\n {isValidElement(icon) && icon}\n {isValidElementType(icon) && createElement(icon)}\n </Text>\n )}\n\n <Box flex={1} marginLeft={icon ? space : undefined}>\n <Text size={fontSize} textOverflow=\"ellipsis\">\n {text}\n </Text>\n </Box>\n\n <Box marginLeft={space}>\n <Text size={fontSize}>\n <ChevronRightIcon />\n </Text>\n </Box>\n </Flex>\n </Box>\n </Selectable>\n </Popover>\n )\n}\n","import React, {\n createElement,\n forwardRef,\n isValidElement,\n useCallback,\n useEffect,\n useMemo,\n useState,\n} from 'react'\nimport {isValidElementType} from 'react-is'\nimport {useArrayProp, useForwardedRef} from '../../hooks'\nimport {Box, Flex, Text} from '../../primitives'\nimport {Selectable} from '../../primitives/_selectable'\nimport {ResponsivePaddingProps, ResponsiveRadiusProps} from '../../primitives/types'\nimport {SelectableTone} from '../../types/selectable'\nimport {Hotkeys} from '../hotkeys'\nimport {useMenu} from './useMenu'\n\n/**\n * @public\n */\nexport interface MenuItemProps extends ResponsivePaddingProps, ResponsiveRadiusProps {\n as?: React.ElementType | keyof JSX.IntrinsicElements\n fontSize?: number | number[]\n hotkeys?: string[]\n icon?: React.ComponentType | React.ReactNode\n iconRight?: React.ComponentType | React.ReactNode\n pressed?: boolean\n selected?: boolean\n space?: number | number[]\n text?: React.ReactNode\n tone?: SelectableTone\n}\n\n/**\n * @public\n */\nexport const MenuItem = forwardRef(function MenuItem(\n props: MenuItemProps &\n Omit<React.HTMLProps<HTMLDivElement>, 'as' | 'height' | 'ref' | 'selected' | 'tabIndex'>,\n forwardedRef: React.ForwardedRef<HTMLDivElement>\n) {\n const {\n as = 'button',\n children,\n disabled,\n fontSize = 2,\n hotkeys,\n icon,\n iconRight,\n onClick,\n padding = 3,\n paddingX,\n paddingY,\n paddingTop,\n paddingRight,\n paddingBottom,\n paddingLeft,\n pressed,\n radius = 2,\n selected: selectedProp,\n space = 3,\n text,\n tone = 'default',\n ...restProps\n } = props\n const menu = useMenu()\n const {\n activeElement,\n mount,\n onItemClick,\n onItemMouseEnter = menu.onMouseEnter,\n onItemMouseLeave = menu.onMouseLeave,\n } = menu\n const [rootElement, setRootElement] = useState<HTMLDivElement | null>(null)\n const active = Boolean(activeElement) && activeElement === rootElement\n\n useEffect(() => mount(rootElement, selectedProp), [mount, rootElement, selectedProp])\n\n const ref = useForwardedRef(forwardedRef)\n\n const handleClick = useCallback(\n (event: React.MouseEvent<HTMLDivElement>) => {\n if (disabled) return\n if (onClick) onClick(event)\n if (onItemClick) onItemClick()\n },\n [disabled, onClick, onItemClick]\n )\n\n const paddingProps = useMemo(\n () => ({\n padding,\n paddingX,\n paddingY,\n paddingTop,\n paddingRight,\n paddingBottom,\n paddingLeft,\n }),\n [padding, paddingX, paddingY, paddingTop, paddingRight, paddingBottom, paddingLeft]\n )\n\n const setRef = useCallback(\n (el: HTMLDivElement | null) => {\n ref.current = el\n setRootElement(el)\n },\n [ref]\n )\n\n return (\n <Selectable\n data-ui=\"MenuItem\"\n {...restProps}\n aria-pressed={as === 'button' && pressed}\n data-pressed={as !== 'button' && pressed ? '' : undefined}\n data-selected={active ? '' : undefined}\n data-disabled={disabled ? '' : undefined}\n forwardedAs={as}\n $radius={useArrayProp(radius)}\n $padding={useArrayProp(0)}\n $tone={tone}\n disabled={disabled}\n onClick={handleClick}\n onMouseEnter={onItemMouseEnter}\n onMouseLeave={onItemMouseLeave}\n ref={setRef}\n role=\"menuitem\"\n tabIndex={-1}\n type={as === 'button' ? 'button' : undefined}\n >\n {(icon || text || iconRight) && (\n <Box as=\"span\" {...paddingProps}>\n <Flex as=\"span\">\n {icon && (\n <Text size={fontSize}>\n {isValidElement(icon) && icon}\n {isValidElementType(icon) && createElement(icon)}\n </Text>\n )}\n\n {text && (\n <Box\n flex={1}\n marginLeft={icon ? space : undefined}\n marginRight={iconRight ? space : undefined}\n >\n <Text size={fontSize} textOverflow=\"ellipsis\">\n {text}\n </Text>\n </Box>\n )}\n\n {hotkeys && (\n <Box marginLeft={space} style={{marginTop: -4, marginBottom: -4}}>\n <Hotkeys fontSize={fontSize} keys={hotkeys} />\n </Box>\n )}\n\n {iconRight && (\n <Text size={fontSize}>\n {isValidElement(iconRight) && iconRight}\n {isValidElementType(iconRight) && createElement(iconRight)}\n </Text>\n )}\n </Flex>\n </Box>\n )}\n\n {children && (\n <Box as=\"span\" {...paddingProps}>\n {children}\n </Box>\n )}\n </Selectable>\n )\n})\n","import {css, keyframes} from 'styled-components'\n\nconst keyframe = keyframes`\n 0% {\n background-position: 100%;\n }\n 100% {\n background-position: -100%;\n }\n`\n\nconst animation = css`\n background-image: linear-gradient(\n to right,\n var(--card-skeleton-color-from),\n var(--card-skeleton-color-to),\n var(--card-skeleton-color-from),\n var(--card-skeleton-color-from),\n var(--card-skeleton-color-from)\n );\n background-position: 100%;\n background-size: 200% 100%;\n background-attachment: fixed;\n animation-name: ${keyframe};\n animation-timing-function: ease-in-out;\n animation-iteration-count: infinite;\n animation-duration: 2000ms;\n`\n\n/**\n * This API might change. DO NOT USE IN PRODUCTION.\n * @beta\n */\nexport const skeletonStyle = css<{$animated: boolean; $visible: boolean}>`\n opacity: ${({$visible}) => ($visible ? 1 : 0)};\n transition: opacity 200ms ease-in;\n\n @media screen and (prefers-reduced-motion: no-preference) {\n ${({$animated}) =>\n $animated\n ? animation\n : css`\n background-color: var(--card-skeleton-color-from);\n `}\n }\n\n @media screen and (prefers-reduced-motion: reduce) {\n background-color: var(--card-skeleton-color-from);\n }\n`\n","import React, {forwardRef, useEffect, useState} from 'react'\nimport styled from 'styled-components'\nimport {useArrayProp} from '../../hooks'\nimport {Box} from '../../primitives'\nimport {BoxProps, ResponsiveRadiusProps} from '../../primitives'\nimport {responsiveRadiusStyle, ResponsiveRadiusStyleProps} from '../../styles/internal'\nimport {skeletonStyle} from './styles'\n\nconst Root = styled(Box)<{$animated: boolean; $visible: boolean} & ResponsiveRadiusStyleProps>(\n responsiveRadiusStyle,\n skeletonStyle\n)\n\n/**\n * This API might change. DO NOT USE IN PRODUCTION.\n * @beta\n */\nexport interface SkeletonProps extends ResponsiveRadiusProps, Omit<BoxProps, 'children'> {\n animated?: boolean\n delay?: number\n}\n\n/**\n * This API might change. DO NOT USE IN PRODUCTION.\n * @beta\n */\nexport const Skeleton = forwardRef(function Skeleton(\n props: SkeletonProps & React.HTMLProps<HTMLDivElement>,\n ref: React.Ref<HTMLDivElement>\n) {\n const {animated = false, delay, radius, ...restProps} = props\n const [visible, setVisible] = useState<boolean>(delay ? false : true)\n\n useEffect(() => {\n if (!delay) {\n return setVisible(true)\n }\n\n const timeout = setTimeout(() => {\n setVisible(true)\n }, delay)\n\n return () => {\n clearTimeout(timeout)\n }\n }, [delay])\n\n return (\n <Root\n {...restProps}\n $animated={animated}\n $radius={useArrayProp(radius)}\n $visible={visible}\n ref={ref}\n />\n )\n})\n","import React, {forwardRef} from 'react'\nimport styled from 'styled-components'\nimport {useArrayProp} from '../../hooks'\nimport {_responsive} from '../../styles'\nimport {Theme, ThemeFontKey} from '../../theme'\nimport {Skeleton, SkeletonProps} from './skeleton'\n\nconst Root = styled(Skeleton)<{$size: number[]; $style: ThemeFontKey}>(\n ({$size, $style, theme}: {$size: number[]; $style: ThemeFontKey; theme: Theme}) => {\n const {media} = theme.sanity\n const font = theme.sanity.fonts[$style]\n\n const styles = _responsive(media, $size, (sizeIndex) => {\n const fontSize = font.sizes[sizeIndex]\n const capHeight = fontSize.lineHeight - fontSize.ascenderHeight - fontSize.descenderHeight\n\n return {height: capHeight}\n })\n\n return styles\n }\n)\n\n/**\n * This API might change. DO NOT USE IN PRODUCTION.\n * @beta\n */\nexport interface TextSkeletonProps extends SkeletonProps {\n size?: number | number[]\n}\n\n/**\n * This API might change. DO NOT USE IN PRODUCTION.\n * @beta\n */\nexport interface LabelSkeletonProps extends SkeletonProps {\n size?: number | number[]\n}\n\n/**\n * This API might change. DO NOT USE IN PRODUCTION.\n * @beta\n */\nexport interface HeadingSkeletonProps extends SkeletonProps {\n size?: number | number[]\n}\n\n/**\n * This API might change. DO NOT USE IN PRODUCTION.\n * @beta\n */\nexport interface CodeSkeletonProps extends SkeletonProps {\n size?: number | number[]\n}\n\n/**\n * This API might change. DO NOT USE IN PRODUCTION.\n * @beta\n */\nexport const TextSkeleton = forwardRef(function TextSkeleton(\n props: TextSkeletonProps &\n Omit<React.HTMLProps<HTMLDivElement>, 'as' | 'children' | 'height' | 'size'>,\n ref: React.Ref<HTMLDivElement>\n) {\n const {size = 2, ...restProps} = props\n const $size = useArrayProp(size)\n\n return <Root {...restProps} $size={$size} ref={ref} $style=\"text\" />\n})\n\n/**\n * This API might change. DO NOT USE IN PRODUCTION.\n * @beta\n */\nexport const LabelSkeleton = forwardRef(function TextSkeleton(\n props: LabelSkeletonProps &\n Omit<React.HTMLProps<HTMLDivElement>, 'as' | 'children' | 'height' | 'size'>,\n ref: React.Ref<HTMLDivElement>\n) {\n const {size = 2, ...restProps} = props\n const $size = useArrayProp(size)\n\n return <Root {...restProps} $size={$size} ref={ref} $style=\"label\" />\n})\n\n/**\n * This API might change. DO NOT USE IN PRODUCTION.\n * @beta\n */\nexport const HeadingSkeleton = forwardRef(function TextSkeleton(\n props: HeadingSkeletonProps &\n Omit<React.HTMLProps<HTMLDivElement>, 'as' | 'children' | 'height' | 'size'>,\n ref: React.Ref<HTMLDivElement>\n) {\n const {size = 2, ...restProps} = props\n const $size = useArrayProp(size)\n\n return <Root {...restProps} $size={$size} ref={ref} $style=\"heading\" />\n})\n\n/**\n * This API might change. DO NOT USE IN PRODUCTION.\n * @beta\n */\nexport const CodeSkeleton = forwardRef(function TextSkeleton(\n props: CodeSkeletonProps &\n Omit<React.HTMLProps<HTMLDivElement>, 'as' | 'children' | 'height' | 'size'>,\n ref: React.Ref<HTMLDivElement>\n) {\n const {size = 2, ...restProps} = props\n const $size = useArrayProp(size)\n\n return <Root {...restProps} $size={$size} ref={ref} $style=\"code\" />\n})\n","import React, {forwardRef, useCallback, useEffect, useRef} from 'react'\nimport {useForwardedRef} from '../../hooks'\nimport {Button} from '../../primitives'\nimport {ButtonTone} from '../../types'\n\n/**\n * @public\n */\nexport interface TabProps {\n /**\n * The `id` of the correlating `TabPanel` component.\n */\n 'aria-controls': string\n id: string\n icon?: React.ComponentType | React.ReactNode\n focused?: boolean\n fontSize?: number | number[]\n label?: React.ReactNode\n padding?: number | number[]\n selected?: boolean\n tone?: ButtonTone\n}\n\n/**\n * @public\n */\nexport const Tab = forwardRef(function Tab(\n props: TabProps &\n Omit<React.HTMLProps<HTMLButtonElement>, 'aria-controls' | 'as' | 'id' | 'label' | 'type'>,\n forwardedRef: React.ForwardedRef<HTMLButtonElement>\n) {\n const {\n icon,\n id,\n focused,\n fontSize,\n label,\n onClick,\n onFocus,\n padding = 2,\n selected,\n ...restProps\n } = props\n const elementRef = useRef<HTMLButtonElement | null>(null)\n const focusedRef = useRef(false)\n\n const handleBlur = useCallback(() => {\n focusedRef.current = false\n }, [])\n\n const handleFocus = useCallback(\n (event: React.FocusEvent<HTMLButtonElement>) => {\n focusedRef.current = true\n if (onFocus) onFocus(event)\n },\n [onFocus]\n )\n\n const ref = useForwardedRef(forwardedRef)\n\n useEffect(() => {\n if (focused && !focusedRef.current) {\n if (elementRef.current) elementRef.current.focus()\n focusedRef.current = true\n }\n }, [focused])\n\n const setRef = (el: HTMLButtonElement | null) => {\n elementRef.current = el\n ref.current = el\n }\n\n return (\n <Button\n data-ui=\"Tab\"\n {...restProps}\n aria-selected={selected ? 'true' : 'false'}\n fontSize={fontSize}\n icon={icon}\n id={id}\n mode=\"bleed\"\n onClick={onClick}\n onBlur={handleBlur}\n onFocus={handleFocus}\n padding={padding}\n ref={setRef}\n role=\"tab\"\n selected={selected}\n tabIndex={selected ? 0 : -1}\n text={label}\n type=\"button\"\n />\n )\n})\n","import React, {cloneElement, forwardRef, useCallback, useMemo, useState} from 'react'\nimport {Inline, InlineProps} from '../../primitives'\n\n/**\n * @public\n */\nexport interface TabListProps extends Omit<InlineProps, 'as' | 'height'> {\n children: Array<React.ReactElement | null | undefined | false>\n}\n\nfunction _isReactElement(node: unknown): node is React.ReactElement {\n return Boolean(node)\n}\n\n/**\n * @public\n */\nexport const TabList = forwardRef(function TabList(\n props: TabListProps & Omit<React.HTMLProps<HTMLDivElement>, 'as' | 'height'>,\n ref\n) {\n const {children: childrenProp, ...restProps} = props\n const [focusedIndex, setFocusedIndex] = useState(-1)\n\n const children = useMemo(() => childrenProp.filter(_isReactElement), [childrenProp])\n\n const tabs = children.map((child, childIndex) =>\n cloneElement(child, {\n focused: focusedIndex === childIndex,\n key: childIndex,\n onFocus: () => handleTabFocus(childIndex),\n })\n )\n\n const numTabs = tabs.length\n\n const handleTabFocus = useCallback((tabIdx: number) => {\n setFocusedIndex(tabIdx)\n }, [])\n\n const handleKeyDown = useCallback(\n (event: React.KeyboardEvent<HTMLDivElement>) => {\n if (event.key === 'ArrowLeft') {\n setFocusedIndex((prevIndex) => (prevIndex + numTabs - 1) % numTabs)\n }\n\n if (event.key === 'ArrowRight') {\n setFocusedIndex((prevIndex) => (prevIndex + 1) % numTabs)\n }\n },\n [numTabs]\n )\n\n return (\n <Inline data-ui=\"TabList\" {...restProps} onKeyDown={handleKeyDown} ref={ref} role=\"tablist\">\n {tabs}\n </Inline>\n )\n})\n","import React, {forwardRef} from 'react'\nimport {Box, BoxProps} from '../../primitives'\n\n/**\n * @public\n */\nexport interface TabPanelProps extends BoxProps {\n /**\n * The `id` of the correlating `Tab` component.\n */\n 'aria-labelledby': string\n id: string\n}\n\n/**\n * @public\n */\nexport const TabPanel = forwardRef(function TabPanel(\n props: TabPanelProps &\n Omit<React.HTMLProps<HTMLDivElement>, 'as' | 'aria-labelledby' | 'id' | 'role'>,\n ref: React.ForwardedRef<HTMLDivElement>\n) {\n const {flex, ...restProps} = props\n\n return (\n <Box\n data-ui=\"TabPanel\"\n {...restProps}\n flex={flex}\n ref={ref}\n role=\"tabpanel\"\n tabIndex={props.tabIndex === undefined ? 0 : props.tabIndex}\n >\n {props.children}\n </Box>\n )\n})\n","import {CloseIcon} from '@sanity/icons'\nimport React from 'react'\nimport styled from 'styled-components'\nimport {Box, Button, Card, Flex, Stack, Text} from '../../primitives'\nimport {ThemeColorToneKey} from '../../theme'\n\n/**\n * @public\n */\nexport interface ToastProps {\n closable?: boolean\n description?: React.ReactNode\n onClose?: () => void\n title?: React.ReactNode\n status?: 'error' | 'warning' | 'success' | 'info'\n}\n\nconst STATUS_CARD_TONE: {[key: string]: ThemeColorToneKey} = {\n error: 'critical',\n warning: 'caution',\n success: 'positive',\n info: 'primary',\n}\n\nconst ROLES = {\n error: 'alert',\n warning: 'alert',\n success: 'alert',\n info: 'alert',\n}\n\nconst Root = styled(Card)`\n pointer-events: all;\n`\n\nconst TextBox = styled(Flex)`\n overflow-x: auto;\n`\n\n/**\n * @public\n */\nexport function Toast(\n props: ToastProps & Omit<React.HTMLProps<HTMLDivElement>, 'as' | 'height' | 'ref' | 'title'>\n): React.ReactElement {\n const {closable, description, onClose, title, status, ...restProps} = props\n const cardTone = status ? STATUS_CARD_TONE[status] : 'default'\n const role = status ? ROLES[status] : 'status'\n\n return (\n <Root\n data-ui=\"Toast\"\n role={role}\n {...restProps}\n marginTop={3}\n radius={2}\n shadow={2}\n tone={cardTone}\n >\n <Flex align=\"flex-start\">\n <TextBox flex={1} padding={3}>\n <Stack space={3}>\n {title && <Text weight=\"semibold\">{title}</Text>}\n {description && (\n <Text muted size={1}>\n {description}\n </Text>\n )}\n </Stack>\n </TextBox>\n\n {closable && (\n <Box padding={1}>\n <Button\n as=\"button\"\n icon={CloseIcon}\n mode=\"bleed\"\n padding={2}\n onClick={onClose}\n style={{verticalAlign: 'top'}}\n />\n </Box>\n )}\n </Flex>\n </Root>\n )\n}\n","import {createContext} from 'react'\nimport {globalScope} from '../../lib/globalScope'\nimport {ToastContextValue} from './types'\n\nconst key = Symbol.for('@sanity/ui/context/toast')\n\nglobalScope[key] = globalScope[key] || createContext<ToastContextValue | null>(null)\n\nexport const ToastContext: React.Context<ToastContextValue | null> = globalScope[key]\n","import {AnimatePresence, motion} from 'framer-motion'\nimport React, {useCallback, useEffect, useMemo, useRef, useState} from 'react'\nimport styled from 'styled-components'\nimport {Box} from '../../primitives'\nimport {Layer} from '../../utils'\nimport {Toast} from './toast'\nimport {ToastContext} from './toastContext'\nimport {ToastContextValue, ToastParams} from './types'\n\ninterface ToastState {\n toasts: {\n dismiss: () => void\n id: string\n params: ToastParams\n }[]\n}\n\n/**\n * @public\n */\nexport interface ToastProviderProps {\n children?: React.ReactNode\n padding?: number | number[]\n paddingX?: number | number[]\n paddingY?: number | number[]\n zOffset?: number | number[]\n}\n\nconst Root = styled(Layer)`\n position: fixed;\n top: 0;\n left: 0;\n right: 0;\n bottom: 0;\n pointer-events: none;\n`\n\nconst ToastContainer = styled.div`\n box-sizing: border-box;\n position: absolute;\n right: 0;\n bottom: 0;\n max-width: 420px;\n width: 100%;\n`\n\nlet toastId = 0\n\n/**\n * @public\n */\nexport function ToastProvider(props: ToastProviderProps): React.ReactElement {\n const {children, padding = 4, paddingX, paddingY, zOffset} = props\n const [state, setState] = useState<ToastState>({toasts: []})\n const toastsRef = useRef<{[key: string]: {timeoutId: NodeJS.Timeout}}>({})\n\n const push = useCallback((params: ToastParams) => {\n const id = params.id || String(toastId++)\n const duration = params.duration || 5000\n\n const dismiss = () => {\n const timeoutId = toastsRef.current[id]?.timeoutId\n\n setState((prevState) => {\n const idx = prevState.toasts.findIndex((t) => t.id === id)\n\n if (idx > -1) {\n const toasts = prevState.toasts.slice(0)\n\n toasts.splice(idx, 1)\n\n return {...prevState, toasts}\n }\n\n return prevState\n })\n\n if (timeoutId !== undefined) {\n clearTimeout(timeoutId)\n delete toastsRef.current[id]\n }\n }\n\n setState((prevState) => {\n return {\n ...prevState,\n toasts: prevState.toasts\n .filter((t) => t.id !== id)\n .concat([\n {\n dismiss,\n id,\n params: {...params, duration},\n },\n ]),\n }\n })\n\n if (toastsRef.current[id]) {\n clearTimeout(toastsRef.current[id].timeoutId)\n delete toastsRef.current[id]\n }\n\n toastsRef.current[id] = {timeoutId: setTimeout(dismiss, duration)}\n\n return id\n }, [])\n\n // clear timeouts on unmount\n useEffect(\n () => () => {\n for (const {timeoutId} of Object.values(toastsRef.current)) {\n clearTimeout(timeoutId)\n }\n\n toastsRef.current = {}\n },\n []\n )\n\n const value: ToastContextValue = useMemo(() => ({version: 0.0, push}), [push])\n\n return (\n <ToastContext.Provider value={value}>\n {children}\n\n <Root data-ui=\"ToastProvider\" zOffset={zOffset}>\n <ToastContainer>\n <Box padding={padding} paddingX={paddingX} paddingY={paddingY}>\n <AnimatePresence initial={false}>\n {state.toasts.map(({dismiss, id, params}) => (\n <motion.div\n animate={{opacity: 1, y: 0, scale: 1}}\n exit={{opacity: 0, scale: 0.5, transition: {duration: 0.2}}}\n initial={{opacity: 0, y: 32, scale: 0.25}}\n key={id}\n layout=\"position\"\n transition={{type: 'spring', damping: 30, stiffness: 400}}\n >\n <Toast\n closable={params.closable}\n description={params.description}\n onClose={dismiss}\n status={params.status}\n title={params.title}\n />\n </motion.div>\n ))}\n </AnimatePresence>\n </Box>\n </ToastContainer>\n </Root>\n </ToastContext.Provider>\n )\n}\n","import {useContext} from 'react'\nimport {isRecord} from '../../lib/isRecord'\nimport {ToastContext} from './toastContext'\nimport {ToastContextValue} from './types'\n\n/**\n * @public\n */\nexport function useToast(): ToastContextValue {\n const value = useContext(ToastContext)\n\n if (!value) {\n throw new Error('useToast(): missing context value')\n }\n\n // NOTE: This check is for future-compatiblity\n // - If the value is not an object, it’s not compatible with the current version\n // - If the value is an object, but doesn’t have `version: 0.0`, it’s not compatible with the current version\n if (!isRecord(value) || value.version !== 0.0) {\n throw new Error('useToast(): the context value is not compatible')\n }\n\n return value\n}\n","import {TreeState} from './types'\n\nexport function _findPrevItemElement(\n state: TreeState,\n itemElements: HTMLElement[],\n focusedElement: HTMLElement\n): HTMLElement | null {\n const idx = itemElements.indexOf(focusedElement)\n const els = itemElements.slice(0, idx)\n const len = els.length\n\n for (let i = len - 1; i >= 0; i -= 1) {\n const itemKey = els[i].getAttribute('data-tree-key')\n\n if (!itemKey) {\n continue\n }\n\n const segments = itemKey.split('/')\n\n segments.pop()\n\n const p: string[] = []\n\n let expanded = true\n\n for (let j = 0; j < segments.length; j += 1) {\n p.push(segments[j])\n\n const k = p.join('/')\n\n if (!state[k]?.expanded) {\n expanded = false\n break\n }\n }\n\n if (expanded) {\n return els[i]\n }\n }\n\n return null\n}\n\nexport function _findNextItemElement(\n state: TreeState,\n itemElements: HTMLElement[],\n focusedElement: HTMLElement\n): HTMLElement | null {\n const idx = itemElements.indexOf(focusedElement)\n const els = itemElements.slice(idx)\n const len = itemElements.length\n\n for (let i = 1; i < len; i += 1) {\n if (!els[i]) {\n continue\n }\n\n const itemKey = els[i].getAttribute('data-tree-key')\n\n if (!itemKey) {\n continue\n }\n\n const segments = itemKey.split('/')\n\n segments.pop()\n\n const p: string[] = []\n\n let expanded = true\n\n for (let j = 0; j < segments.length; j += 1) {\n p.push(segments[j])\n\n const k = p.join('/')\n\n if (!state[k]?.expanded) {\n expanded = false\n break\n }\n }\n\n if (expanded) {\n return els[i]\n }\n }\n\n return null\n}\n\nexport function _focusItemElement(el: HTMLElement): void {\n if (el.getAttribute('role') === 'treeitem') {\n el.focus()\n }\n\n if (el.getAttribute('role') === 'none') {\n const firstChild = el.firstChild\n\n if (firstChild && firstChild instanceof HTMLElement) {\n firstChild.focus()\n }\n }\n}\n","import {createContext} from 'react'\nimport {globalScope} from '../../lib/globalScope'\nimport {TreeContextValue} from './types'\n\nconst key = Symbol.for('@sanity/ui/context/tree')\n\nglobalScope[key] = globalScope[key] || createContext<TreeContextValue | null>(null)\n\n/**\n * @internal\n */\nexport const TreeContext: React.Context<TreeContextValue | null> = globalScope[key]\n","import React, {forwardRef, memo, useCallback, useEffect, useMemo, useRef, useState} from 'react'\nimport {useForwardedRef} from '../../hooks'\nimport {Stack} from '../../primitives'\nimport {_findNextItemElement, _findPrevItemElement, _focusItemElement} from './helpers'\nimport {TreeContext} from './treeContext'\nimport {TreeContextValue, TreeState} from './types'\n\n/**\n * This API might change. DO NOT USE IN PRODUCTION.\n * @beta\n */\nexport interface TreeProps {\n space?: number | number[]\n}\n\n/**\n * This API might change. DO NOT USE IN PRODUCTION.\n * @beta\n */\nexport const Tree = memo(\n forwardRef(function Tree(\n props: TreeProps &\n Omit<React.HTMLProps<HTMLDivElement>, 'align' | 'as' | 'height' | 'ref' | 'role' | 'wrap'>,\n ref: React.ForwardedRef<HTMLDivElement>\n ): React.ReactElement {\n const {children, space = 1, ...restProps} = props\n const forwardedRef = useForwardedRef(ref)\n const [focusedElement, setFocusedElement] = useState<HTMLElement | null>(null)\n const focusedElementRef = useRef(focusedElement)\n const path: string[] = useMemo(() => [], [])\n const [itemElements, setItemElements] = useState<HTMLElement[]>([])\n const [state, setState] = useState<TreeState>({})\n const stateRef = useRef(state)\n\n useEffect(() => {\n focusedElementRef.current = focusedElement\n }, [focusedElement])\n\n useEffect(() => {\n stateRef.current = state\n }, [state])\n\n const registerItem = useCallback(\n (element: HTMLElement, path: string, expanded: boolean, selected: boolean) => {\n setState((s) => ({...s, [path]: {element, expanded}}))\n\n if (selected) {\n setFocusedElement(element)\n }\n\n return () => {\n setState((s) => {\n const newState = {...s}\n\n delete newState[path]\n\n return newState\n })\n }\n },\n []\n )\n\n const setExpanded = useCallback((path: string, expanded: boolean) => {\n setState((s) => {\n const itemState = s[path]\n\n if (!itemState) return s\n\n return {...s, [path]: {...itemState, expanded}}\n })\n }, [])\n\n const contextValue: TreeContextValue = useMemo(\n () => ({\n version: 0.0,\n focusedElement: focusedElement || itemElements[0] || null,\n level: 0,\n path,\n registerItem,\n setExpanded,\n setFocusedElement,\n space,\n state,\n }),\n [focusedElement, itemElements, path, registerItem, setExpanded, space, state]\n )\n\n const handleKeyDown = useCallback(\n (event: React.KeyboardEvent<HTMLDivElement>) => {\n if (!focusedElementRef.current) return\n\n if (event.key === 'ArrowDown') {\n event.preventDefault()\n\n const nextEl = _findNextItemElement(\n stateRef.current,\n itemElements,\n focusedElementRef.current\n )\n\n if (nextEl) {\n _focusItemElement(nextEl)\n setFocusedElement(nextEl)\n }\n\n return\n }\n\n if (event.key === 'ArrowUp') {\n event.preventDefault()\n\n const prevEl = _findPrevItemElement(\n stateRef.current,\n itemElements,\n focusedElementRef.current\n )\n\n if (prevEl) {\n _focusItemElement(prevEl)\n setFocusedElement(prevEl)\n }\n\n return\n }\n\n if (event.key === 'ArrowLeft') {\n event.preventDefault()\n\n const itemKey = focusedElementRef.current.getAttribute('data-tree-key')\n\n if (!itemKey) return\n\n const itemState = stateRef.current[itemKey]\n\n if (!itemState) return\n\n if (itemState.expanded) {\n setState((s) => {\n const itemState = s[itemKey]\n\n if (!itemState) return s\n\n return {...s, [itemKey]: {...itemState, expanded: false}}\n })\n } else {\n const itemPath = itemKey.split('/')\n\n itemPath.pop()\n\n const parentKey = itemPath.join('/')\n const parentState = parentKey && stateRef.current[parentKey]\n\n if (parentState) {\n parentState.element.focus()\n setFocusedElement(parentState.element)\n }\n }\n\n return\n }\n\n if (event.key === 'ArrowRight') {\n event.preventDefault()\n\n const focusedKey = focusedElementRef.current.getAttribute('data-tree-key')\n\n if (!focusedKey) return\n\n if (!stateRef.current[focusedKey]?.expanded) {\n setState((s) => {\n const itemState = s[focusedKey]\n\n if (!itemState) return s\n\n return {...s, [focusedKey]: {...itemState, expanded: true}}\n })\n }\n\n return\n }\n },\n [itemElements]\n )\n\n useEffect(() => {\n if (!forwardedRef.current) return\n const _itemElements = Array.from(\n forwardedRef.current.querySelectorAll('[data-ui=\"TreeItem\"]')\n ) as HTMLElement[]\n\n setItemElements(_itemElements)\n }, [children, forwardedRef])\n\n return (\n <TreeContext.Provider value={contextValue}>\n <Stack\n as=\"ul\"\n data-ui=\"Tree\"\n {...restProps}\n onKeyDown={handleKeyDown}\n ref={forwardedRef}\n role=\"tree\"\n space={space}\n >\n {children}\n </Stack>\n </TreeContext.Provider>\n )\n })\n)\n\nTree.displayName = 'Tree'\n","import {css, FlattenSimpleInterpolation} from 'styled-components'\nimport {rem, ThemeProps} from '../../styles'\nimport {_colorVarsStyle} from '../../styles/colorVars'\n\nexport function treeItemRootStyle(): FlattenSimpleInterpolation {\n return css`\n &[role='none'] > [role='treeitem'] {\n outline: none;\n cursor: default;\n border-radius: 3px;\n\n &:focus {\n position: relative;\n }\n }\n\n &[role='treeitem'] {\n outline: none;\n\n & > div {\n cursor: default;\n border-radius: 3px;\n }\n\n &:focus > div {\n position: relative;\n }\n }\n `\n}\n\nexport function treeItemRootColorStyle(props: ThemeProps): FlattenSimpleInterpolation {\n const {theme} = props\n const $tone = 'default'\n const {base, muted, selectable} = theme.sanity.color\n // @todo: remove use of `muted` here\n const tone = selectable ? selectable[$tone] || selectable.default : muted[$tone] || muted.default\n\n return css`\n /* <div role=\"none\"><a data-ui=\"TreeItem__box\" role=\"treeitem\" tabIndex=\"0\"></div> */\n &[role='none'] {\n & > [role='treeitem'] {\n ${_colorVarsStyle(base, tone.enabled)}\n\n background-color: var(--card-bg-color);\n color: var(--treeitem-fg-color);\n }\n\n &[data-selected] > [role='treeitem'] {\n ${_colorVarsStyle(base, tone.pressed)}\n }\n\n @media (hover: hover) {\n &:not([data-selected]) > [role='treeitem']:not(:focus):hover {\n ${_colorVarsStyle(base, tone.hovered)}\n }\n\n & > [role='treeitem']:focus {\n ${_colorVarsStyle(base, tone.selected)}\n }\n }\n }\n\n /* <div role=\"treeitem\" tabIndex=\"0\"><div data-ui=\"TreeItem__box\"></div> */\n &[role='treeitem'] {\n & > [data-ui='TreeItem__box'] {\n ${_colorVarsStyle(base, tone.enabled)}\n\n background-color: var(--card-bg-color);\n color: var(--card-fg-color);\n }\n\n &[data-selected] > [data-ui='TreeItem__box'] {\n ${_colorVarsStyle(base, tone.pressed)}\n }\n\n @media (hover: hover) {\n &:not([data-selected]):not(:focus) > [data-ui='TreeItem__box']:hover {\n ${_colorVarsStyle(base, tone.hovered)}\n }\n\n &:focus > [data-ui='TreeItem__box'] {\n ${_colorVarsStyle(base, tone.selected)}\n }\n }\n }\n `\n}\n\nexport interface TreeItemBoxStyleProps {\n $level: number\n}\n\nexport function treeItemBoxStyle(\n props: TreeItemBoxStyleProps & ThemeProps\n): FlattenSimpleInterpolation {\n const {$level, theme} = props\n const {space} = theme.sanity\n\n return css`\n padding-left: ${rem(space[2] * $level)};\n\n &[data-as='a'] {\n text-decoration: none;\n }\n `\n}\n","import {useContext} from 'react'\nimport {TreeContext} from './treeContext'\nimport {TreeContextValue} from './types'\n\n/**\n * @beta\n */\nexport function useTree(): TreeContextValue {\n const tree = useContext(TreeContext)\n\n if (!tree) {\n throw new Error('Tree: missing context value')\n }\n\n return tree\n}\n","import React, {memo} from 'react'\nimport {Stack} from '../../primitives'\nimport {useTree} from './useTree'\n\nexport interface TreeGroupProps {\n expanded?: boolean\n}\n\nexport const TreeGroup = memo(function TreeGroup(\n props: TreeGroupProps &\n Omit<React.HTMLProps<HTMLDivElement>, 'as' | 'height' | 'ref' | 'role' | 'wrap'>\n): React.ReactElement {\n const {children, expanded = false, ...restProps} = props\n const tree = useTree()\n\n return (\n <Stack\n as=\"ul\"\n data-ui=\"TreeGroup\"\n {...restProps}\n hidden={!expanded}\n marginTop={tree.space}\n role=\"group\"\n space={tree.space}\n >\n {children}\n </Stack>\n )\n})\n","import {useId} from '@reach/auto-id'\nimport {ToggleArrowRightIcon} from '@sanity/icons'\nimport React, {createElement, memo, useCallback, useEffect, useMemo, useRef} from 'react'\nimport styled from 'styled-components'\nimport {Box, Flex, Text} from '../../primitives'\nimport {ThemeFontWeightKey} from '../../theme'\nimport {\n treeItemRootStyle,\n treeItemRootColorStyle,\n treeItemBoxStyle,\n TreeItemBoxStyleProps,\n} from './style'\nimport {TreeContext} from './treeContext'\nimport {TreeGroup} from './treeGroup'\nimport {useTree} from './useTree'\n\n/**\n * @beta\n */\nexport interface TreeItemProps {\n expanded?: boolean\n fontSize?: number | number[]\n icon?: React.ComponentType\n padding?: number | number[]\n space?: number | number[]\n text?: React.ReactNode\n weight?: ThemeFontWeightKey\n}\n\nconst Root = memo(styled.li(treeItemRootStyle, treeItemRootColorStyle))\n\nconst TreeItemBox = styled(Box).attrs({forwardedAs: 'a'})<TreeItemBoxStyleProps>(treeItemBoxStyle)\n\nconst ToggleArrowText = styled(Text)`\n & > svg {\n transition: transform 100ms;\n }\n`\n\n/**\n * This API might change. DO NOT USE IN PRODUCTION.\n * @beta\n */\nexport const TreeItem = memo(function TreeItem(\n props: TreeItemProps & Omit<React.HTMLProps<HTMLLIElement>, 'as' | 'ref' | 'role'>\n): React.ReactElement {\n const {\n children,\n expanded: expandedProp = false,\n fontSize,\n href,\n icon,\n id: idProp,\n muted,\n onClick,\n padding = 3,\n selected = false,\n space = 2,\n text,\n weight,\n ...restProps\n } = props\n const rootRef = useRef<HTMLLIElement | null>(null)\n const treeitemRef = useRef<HTMLDivElement | null>(null)\n const tree = useTree()\n const {path, registerItem, setExpanded, setFocusedElement} = tree\n const id = useId(idProp) || idProp\n const itemPath = useMemo(() => path.concat([id || '']), [id, path])\n const itemKey = itemPath.join('/')\n const itemState = tree.state[itemKey]\n const focused = tree.focusedElement === rootRef.current\n const expanded = itemState?.expanded === undefined ? expandedProp : itemState?.expanded || false\n const tabIndex = tree.focusedElement && tree.focusedElement === rootRef.current ? 0 : -1\n const contextValue = useMemo(\n () => ({...tree, level: tree.level + 1, path: itemPath}),\n [itemPath, tree]\n )\n\n const handleClick = useCallback(\n (event: React.MouseEvent<HTMLLIElement>) => {\n if (onClick) onClick(event)\n\n const target = event.target\n\n if (\n target instanceof HTMLElement &&\n (target.getAttribute('data-ui') === 'TreeItem__box' ||\n target.closest('[data-ui=\"TreeItem__box\"]'))\n ) {\n event.stopPropagation()\n setExpanded(itemKey, !expanded)\n setFocusedElement(rootRef.current)\n }\n },\n [expanded, itemKey, onClick, setExpanded, setFocusedElement]\n )\n\n const handleKeyDown = useCallback(\n (event: React.KeyboardEvent<HTMLElement>) => {\n if (focused && event.key === 'Enter') {\n const el = treeitemRef.current || rootRef.current\n\n el?.click()\n }\n },\n [focused]\n )\n\n useEffect(() => {\n if (!rootRef.current) return\n\n return registerItem(rootRef.current, itemPath.join('/'), expanded, selected)\n }, [expanded, itemPath, registerItem, selected])\n\n const content = (\n <Flex padding={padding}>\n <Box\n marginRight={space}\n style={{visibility: icon || children ? 'visible' : 'hidden', pointerEvents: 'none'}}\n >\n {icon && (\n <Text muted={muted} size={fontSize} weight={weight}>\n {createElement(icon)}\n </Text>\n )}\n {!icon && (\n <ToggleArrowText muted={muted} size={fontSize} weight={weight}>\n <ToggleArrowRightIcon style={{transform: expanded ? 'rotate(90deg)' : undefined}} />\n </ToggleArrowText>\n )}\n </Box>\n <Box flex={1}>\n <Text muted={muted} size={fontSize} textOverflow=\"ellipsis\" weight={weight}>\n {text}\n </Text>\n </Box>\n </Flex>\n )\n\n if (href) {\n return (\n <Root\n data-selected={selected ? '' : undefined}\n data-tree-id={id}\n data-tree-key={itemKey}\n data-ui=\"TreeItem\"\n {...restProps}\n onClick={handleClick}\n ref={rootRef}\n role=\"none\"\n >\n <TreeItemBox\n $level={tree.level}\n aria-expanded={expanded}\n data-ui=\"TreeItem__box\"\n href={href}\n ref={treeitemRef}\n role=\"treeitem\"\n tabIndex={tabIndex}\n >\n {content}\n </TreeItemBox>\n\n <TreeContext.Provider value={contextValue}>\n {children && <TreeGroup hidden={!expanded}>{children}</TreeGroup>}\n </TreeContext.Provider>\n </Root>\n )\n }\n\n return (\n <Root\n data-selected={selected ? '' : undefined}\n data-ui=\"TreeItem\"\n data-tree-id={id}\n data-tree-key={itemKey}\n {...restProps}\n aria-expanded={expanded}\n onClick={handleClick}\n onKeyDown={handleKeyDown}\n ref={rootRef}\n role=\"treeitem\"\n tabIndex={tabIndex}\n >\n <TreeItemBox $level={tree.level} as=\"div\" data-ui=\"TreeItem__box\">\n {content}\n </TreeItemBox>\n\n <TreeContext.Provider value={contextValue}>\n {children && <TreeGroup expanded={expanded}>{children}</TreeGroup>}\n </TreeContext.Provider>\n </Root>\n )\n})\n"],"names":["EMPTY_ARRAY","EMPTY_RECORD","_fillCSSObject","keys","value","style","key","rem","pixelValue","_responsive","media","values","callback","statement","mediaIndex","_getArrayProp","val","defaultVal","_getResponsiveSpace","theme","props","spaceIndexes","spaceIndex","responsiveFont","fontKey","$size","$weight","fonts","family","sizes","weights","fontWeight","defaultSize","base","resp","sizeIndex","fontSize","size","ascenderHeight","descenderHeight","iconSize","letterSpacing","lineHeight","negHeight","capHeight","iconOffset","customIconSize","customIconOffset","responsiveCodeFontStyle","responsiveHeadingFont","responsiveLabelFont","responsiveTextAlignStyle","textAlign","responsiveTextFont","useArrayProp","__perf_hash__","useMemo","_getElements","element","elementsArg","ret","el","useClickOutside","listener","boundaryElement","setElement","useState","elements","setElements","elementsRef","useRef","useEffect","prevElements","nextElements","handleWindowMouseDown","evt","target","_ResizeObserver","ResizeObserverPolyfill","_elementSizeObserver","_createElementSizeObserver","_createElementRectValueListener","subscriber","resizeObserver","entry","disposeCache","subscribersCache","subscribers","dispose","elementRect","sub","idx","useElementSize","setSize","useElementRect","elementSize","useGlobalKeyDown","onKeyDown","multiplyChannel","b","s","multiply","clamp","num","screenChannel","screen","hexToRgb","hex","hexR","hexG","hexB","rgbToHex","r","g","rgbToHsl","cmin","cmax","delta","h","l","hslToRgb","hsl","c","x","m","HEX_CHARS","HSL_RE","isHexChars","str","isHex","parseHsl","res","parseColor","color","rgba","a","rgb","createButtonTones","opts","dark","solid","muted","mode","createButtonModes","createCardStates","name","black","white","colors","spots","tones","defaultOpts","state","tone","createInputModes","createMutedTones","createSelectableTones","_createSelectableStates","createSolidTones","createSpot","createColorTheme","partialOpts","builders","_createColorScheme","_createColor","bg","fg","_multiply","_screen","hues","NEUTRAL_TONES","tints","skeletonFrom","mix","mix2","defaultTints","isNeutral","mainShade","secondaryShade","studioTheme","DEFAULT_THEME_LAYER","getGlobalScope","globalScope","createContext","ThemeContext","ThemeProvider","parentTheme","useContext","children","scheme","themeProp","rootColor","rootLayer","restTheme","colorScheme","React","StyledThemeProvider","isRecord","useRootTheme","ThemeColorProvider","root","useTheme","useStyledTheme","MEDIA_MANAGER_CACHE","_getMediaQuery","index","_createMediaManager","mediaLen","mediaQuery","mq","disposeFns","handleChange","disposeFn","_getMediaManager","manager","useMediaIndex","setIndex","usePrefersDark","setDark","useIsomorphicEffect","useLayoutEffect","useForwardedRef","ref","innerRef","useCustomValidity","customValidity","BORDER_VALUE","responsiveBorderStyle","border","borderTop","borderRight","borderBottom","borderLeft","BASE_STYLE","BOX_SIZING","BOX_HEIGHT","boxStyle","responsiveBoxStyle","responsiveBoxSizingStyle","responsiveBoxHeightStyle","responsiveBoxOverflowStyle","responsiveBoxDisplayStyle","display","sizing","height","overflow","responsiveFlexStyle","responsiveFlexAlignStyle","responsiveFlexGapStyle","responsiveFlexWrapStyle","responsiveFlexJustifyStyle","responsiveFlexDirectionStyle","align","space","gap","wrap","justify","direction","flexItemStyle","responsiveFlexItemStyle","flex","focusRingBorderStyle","focusRingStyle","focusRing","focusRingOutsetWidth","focusRingInsetWidth","bgColor","GRID_CSS","GRID_AUTO_COLUMS","GRID_AUTO_ROWS","responsiveGridStyle","responsiveGridAutoFlowStyle","responsiveGridAutoRowsStyle","responsiveGridAutoColsStyle","responsiveGridColumnsStyle","responsiveGridRowsStyle","responsiveGridGapStyle","responsiveGridGapXStyle","responsiveGridGapYStyle","autoFlow","autoRows","autoCols","columns","rows","gapX","gapY","responsiveGridItemStyle","responsiveGridItemRowStyle","responsiveGridItemRowStartStyle","responsiveGridItemRowEndStyle","responsiveGridItemColumnStyle","responsiveGridItemColumnStartStyle","responsiveGridItemColumnEndStyle","GRID_ITEM_ROW","GRID_ITEM_COLUMN","row","rowStart","rowEnd","column","columnStart","columnEnd","responsiveInputPaddingStyle","$fontSize","$iconLeft","$iconRight","$padding","$space","spaceScale","len","_padding","_space","_fontSize","i","_","emSize","p","styles","responsiveInputPaddingIconRightStyle","ROOT_STYLE","css","textInputRootStyle","textInputBaseStyle","$scheme","$tone","font","textInputFontSizeStyle","textInputRepresentationStyle","$border","$hasPrefix","$hasSuffix","input","responsiveMarginStyle","responsivePaddingStyle","responsiveRadiusStyle","radius","radiusIndex","toBoxShadow","shadow","shadowStyle","outline","umbra","penumbra","ambient","responsiveShadowStyle","shadows","textBaseStyle","$accent","$muted","Root","styled","SpanWithTextOverflow","Text","forwardRef","accent","childrenProp","textOverflow","weight","restProps","avatarStyle","avatarRootStyle","avatarArrowStyle","avatarBgStrokeStyle","avatarStrokeStyle","avatarInitialsStyle","$color","responsiveAvatarSizeStyle","avatar","avatarSize","Arrow","BgStroke","Stroke","Initials","Avatar","asProp","colorKey","src","title","initials","onImageLoadError","arrowPositionProp","animateArrowFrom","status","sizeProp","as","ReactIs","_sizeRem","_radius","elementId","useId","arrowPosition","setArrowPosition","imageFailed","setImageFailed","imageId","raf","handleImageError","useCallback","initialsSize","_responsiveAvatarCounterSizeStyle","_avatarCounterBaseStyle","AvatarCounter","count","counterSize","childrenToElementArray","node","isElement","isFragment","BASE_STYLES","avatarStackStyle","responsiveAvatarStackSizeStyle","AvatarStack","maxLengthProp","child","maxLength","visibleCount","extraCount","visibleChildren","childIndex","cloneElement","Box","margin","marginX","marginY","marginTop","marginRight","marginBottom","marginLeft","padding","paddingX","paddingY","paddingTop","paddingRight","paddingBottom","paddingLeft","labelBaseStyle","Label","badgeStyle","$mode","palette","Badge","Flex","rotate","keyframes","Spinner","SpinnerIcon","_colorVarsStyle","checkered","_a","_b","_c","_d","_e","_f","_g","_h","buttonBaseStyles","buttonTheme","buttonColorStyles","LoadingBox","Button","disabled","icon","iconRight","justifyProp","loading","paddingProp","paddingXProp","paddingYProp","paddingTopProp","paddingBottomProp","paddingLeftProp","paddingRightProp","radiusProp","selected","spaceProp","text","type","boxProps","isValidElement","isValidElementType","createElement","cardStyle","cardBaseStyle","cardColorStyle","$checkered","$focusRing","card","Card","pressed","toneProp","rootTheme","checkboxBaseStyles","inputElementStyles","Input","Checkbox","forwardedRef","checked","className","indeterminate","readOnly","CheckmarkIcon","RemoveIcon","codeSyntaxHighlightingStyle","codeBaseStyle","Code","languageProp","language","registered","Refractor","containerBaseStyle","responsiveContainerWidthStyle","container","Container","width","Grid","headingBaseStyle","Heading","inlineBaseStyle","inlineSpaceStyle","Inline","kbdStyle","KBD","BoundaryElementContext","BoundaryElementProvider","DEFAULT_VALUE","useBoundaryElement","findMaxBreakpoints","findMinBreakpoints","ElementQuery","max","min","setRef","ErrorBoundary","error","info","message","LayerContext","useLayer","LayerProvider","zOffsetProp","parent","zOffset","maxMediaIndex","zIndex","registerChild","v","parentRegisterChild","LayerChildren","Layer","elementKey","defaultContextValue","PortalContext","usePortal","Portal","portal","portalElement","ReactDOM","useUnique","valueRef","_isEqual","objA","objB","keysA","keysB","__BROWSER__","PortalProvider","elementsProp","SrOnly","_raf","fn","frameId","_raf2","innerDispose","outerDispose","_isEnterToClickElement","isHTMLAnchorElement","isHTMLButtonElement","isHTMLElement","isHTMLInputElement","isHTMLSelectElement","isHTMLTextAreaElement","_hasFocus","isFocusable","attemptFocus","focusFirstDescendant","focusLastDescendant","_isScrollable","ItemWrapper","VirtualList","getItemKey","items","onChange","renderItem","wrapperRef","scrollTop","setScrollTop","scrollHeight","setScrollHeight","itemHeight","setItemHeight","firstElement","_scrollEl","scrollEl","handleScroll","ro","entries","handleResize","fromIndex","toIndex","item","_itemIndex","itemIndex","wrapperStyle","BorderPath","ShapePath","PopoverArrow","getPopoverModifiers","allowedAutoPlacements","arrow","arrowElement","constrainSize","distance","fallbackPlacements","margins","matchReferenceWidth","open","preventOverflow","skidding","tether","tetherOffset","detectOverflowOptions","maxSizeModifier","rects","refElement","usePopoverModifiers","$preventOverflow","PopoverCard","$constrainSize","Popover","boundaryElementContext","boundaryElementProp","content","placement","portalProp","referenceElementProp","widthProp","referenceElement","setReferenceElement","popperElement","setPopperElement","setArrowElement","popperReferenceElement","modifiers","popper","usePopper","attributes","forceUpdate","childRef","setRootRef","popoverStyle","updateTimeoutRef","radioBaseStyle","inputElementStyle","dist","Radio","rootStyle","inputBaseStyle","inputColorStyle","textSize","inputTextSizeStyle","inputStyle","iconBoxStyle","selectStyle","IconBox","Select","SelectIcon","stackBaseStyle","responsiveStackSpaceStyle","Stack","switchBaseStyles","switchInputStyles","switchRepresentationStyles","switchTrackStyles","switchThumbStyles","$indeterminate","trackWidth","trackHeight","trackPadding","checkedOffset","indeterminateOffset","Representation","Track","Thumb","Switch","InputRoot","Presentation","TextArea","CLEAR_BUTTON_BOX_STYLE","Prefix","Suffix","LeftBox","RightBox","RightCard","TextInput","clearButton","fontSizeProp","onClear","prefix","suffix","$hasClearButton","$hasIcon","$hasIconRight","handleClearMouseDown","event","handleClearClick","prefixNode","presentationNode","clearButtonBoxPadding","clearButtonPadding","clearButtonProps","clearButtonNode","CloseIcon","suffixNode","Border","Shape","TooltipArrow","Tooltip","fallbackPlacementsProp","isOpen","setIsOpen","handleBlur","handleFocus","handleMouseEnter","handleMouseLeave","handleWindowMouseMove","referenceNode","popperNode","ListBox","ResultsPopover","AnimatedSpinnerIcon","AutocompleteOption","id","onSelect","handleClick","handleKeyDown","autocompleteReducer","msg","AUTOCOMPLETE_LISTBOX_IGNORE_KEYS","AUTOCOMPLETE_POPOVER_MARGINS","AUTOCOMPLETE_POPOVER_PLACEMENT","AUTOCOMPLETE_POPOVER_FALLBACK_PLACEMENTS","defaultRenderValue","option","defaultFilterOption","query","InnerAutocomplete","filterOptionProp","listBox","onBlur","onFocus","onQueryChange","openButton","optionsProp","popover","relatedElements","renderOptionProp","renderPopover","renderValue","valueProp","dispatch","useReducer","activeValue","focused","listFocused","defaultRenderOption","renderOption","filterOption","rootElement","setRootElement","resultsPopoverElement","setResultsPopoverElement","inputElementRef","listBoxElementRef","focusedElementRef","valuePropRef","popoverMouseWithinRef","listBoxId","options","currentOption","o","filteredOptions","filteredOptionsLen","activeItemId","expanded","handleRootBlur","focusInside","e","handleRootFocus","listBoxElement","focusedElement","nextListFocused","handleOptionSelect","handleRootKeyDown","activeOption","activeIndex","nextActiveOption","listEl","handleInputChange","nextQuery","handleInputFocus","handlePopoverMouseEnter","handlePopoverMouseLeave","handleClearButtonClick","handleClearButtonFocus","listElement","activeItemElement","openButtonBoxPadding","openButtonPadding","openButtonProps","handleOpenClick","openButtonNode","ChevronDownIcon","inputValue","handleListBoxKeyDown","active","results","Autocomplete","ExpandButton","Breadcrumbs","separator","spaceRaw","setOpen","expandElement","setExpandElement","popoverElement","setPopoverElement","collapse","expand","rawItems","Children","beforeLength","afterLength","Fragment","dialogStyle","responsiveDialogPositionStyle","position","DialogContext","useDialog","DialogContainer","DialogCardRoot","DialogLayout","DialogHeader","DialogContent","DialogFooter","DialogCard","autoFocus","hideCloseButton","contentRef","footer","header","onClickOutside","onClose","shadowProp","localContentRef","layer","isTopLayer","labelId","showCloseButton","showHeader","setContentRef","Dialog","dialog","cardRadiusProp","cardShadow","positionProp","cardRadius","preDivRef","postDivRef","cardRef","cardElement","DialogProvider","contextValue","Key","Hotkeys","MenuContext","_isFocusable","_getFocusableElements","_getDOMPath","path","parentElement","EMPTY_PATH","_sortElements","map","_sort","aIndex","bIndex","useMenuController","originElement","shouldFocus","_setActiveIndex","activeIndexRef","activeElement","mounted","setActiveIndex","nextActiveIndex","mount","selectedIndex","currentIndex","focusableElements","focusableLen","focusedIndex","handleItemMouseEnter","handleItemMouseLeave","rafId","_activeIndex","Menu","focusFirst","focusLast","onEscape","onItemClick","onItemSelect","registerElement","handleRefChange","MenuButton","disableRestoreFocusOnClose","deprecated_boundaryElement","buttonProp","menuProp","deprecated_placement","deprecated_popoverScheme","deprecated_portal","deprecated_popoverRadius","deprecated_preventOverflow","setShouldFocus","buttonElement","setButtonElement","menuElements","setChildMenuElements","openRef","handleButtonClick","handleButtonKeyDown","handleMenuClickOutside","handleMenuEscape","handleItemClick","els","_el","menuProps","menu","setButtonRef","button","popoverProps","MenuDivider","selectableBaseStyle","selectableColorStyle","selectable","Selectable","useMenu","MenuGroup","onClick","onItemMouseEnter","shouldFocusRef","withinMenu","setWithinMenu","handleMenuKeyDown","handleChildItemClick","handleMenuMouseEnter","childMenu","ChevronRightIcon","MenuItem","hotkeys","selectedProp","onItemMouseLeave","paddingProps","keyframe","animation","skeletonStyle","$visible","$animated","Skeleton","animated","delay","visible","setVisible","timeout","$style","TextSkeleton","LabelSkeleton","HeadingSkeleton","CodeSkeleton","Tab","label","elementRef","focusedRef","_isReactElement","TabList","setFocusedIndex","tabs","handleTabFocus","numTabs","tabIdx","prevIndex","TabPanel","STATUS_CARD_TONE","ROLES","TextBox","Toast","closable","description","cardTone","role","ToastContext","ToastContainer","toastId","ToastProvider","setState","toastsRef","push","params","duration","dismiss","timeoutId","prevState","t","toasts","AnimatePresence","motion","useToast","_findPrevItemElement","itemElements","itemKey","segments","j","k","_findNextItemElement","_focusItemElement","firstChild","TreeContext","Tree","memo","setFocusedElement","setItemElements","stateRef","registerItem","newState","setExpanded","itemState","nextEl","prevEl","itemPath","parentKey","parentState","focusedKey","_itemElements","treeItemRootStyle","treeItemRootColorStyle","treeItemBoxStyle","$level","useTree","tree","TreeGroup","TreeItemBox","ToggleArrowText","TreeItem","expandedProp","href","idProp","rootRef","treeitemRef","tabIndex","ToggleArrowRightIcon"],"mappings":"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EACA,MAAO,CACL,CACE,eAAgB,EAChB,gBAAiB,EACjB,SAAU,GACV,SAAU,GACV,WAAY,GACZ,cAAe,CACjB,EACA,CACE,eAAgB,EAChB,gBAAiB,EACjB,SAAU,GACV,SAAU,GACV,WAAY,GACZ,cAAe,CACjB,EACA,CACE,eAAgB,EAChB,gBAAiB,EACjB,SAAU,GACV,SAAU,GACV,WAAY,GACZ,cAAe,CACjB,EACA,CACE,eAAgB,EAChB,gBAAiB,EACjB,SAAU,GACV,SAAU,GACV,WAAY,GACZ,cAAe,CACjB,EACA,CACE,eAAgB,EAChB,gBAAiB,EACjB,SAAU,GACV,SAAU,GACV,WAAY,GACZ,cAAe,CACjB,CACF,CACF,EACA,QAAS,CACP,OACE,sIACF,QAAS,CACP,QAAS,IACT,OAAQ,IACR,SAAU,IACV,KAAM,GACR,EACA,MAAO,CACL,CACE,eAAgB,EAChB,gBAAiB,EACjB,SAAU,GACV,SAAU,GACV,WAAY,GACZ,cAAe,CACjB,EACA,CACE,eAAgB,EAChB,gBAAiB,EACjB,SAAU,GACV,SAAU,GACV,WAAY,GACZ,cAAe,CACjB,EACA,CACE,eAAgB,EAChB,gBAAiB,EACjB,SAAU,GACV,SAAU,GACV,WAAY,GACZ,cAAe,CACjB,EACA,CACE,eAAgB,EAChB,gBAAiB,EACjB,SAAU,GACV,SAAU,GACV,WAAY,GACZ,cAAe,CACjB,EACA,CACE,eAAgB,EAChB,gBAAiB,EACjB,SAAU,GACV,SAAU,GACV,WAAY,GACZ,cAAe,CACjB,EACA,CACE,eAAgB,EAChB,gBAAiB,EACjB,SAAU,GACV,SAAU,GACV,WAAY,GACZ,cAAe,CACjB,CACF,CACF,EACA,MAAO,CACL,OACE,oHACF,QAAS,CACP,QAAS,IACT,OAAQ,IACR,SAAU,IACV,KAAM,GACR,EACA,MAAO,CACL,CACE,eAAgB,EAChB,gBAAiB,EACjB,SAAU,IACV,SAAU,GACV,WAAY,GACZ,cAAe,EACjB,EACA,CACE,eAAgB,EAChB,gBAAiB,EACjB,SAAU,MACV,SAAU,GACV,WAAY,GACZ,cAAe,EACjB,EACA,CACE,eAAgB,EAChB,gBAAiB,EACjB,SAAU,MACV,SAAU,GACV,WAAY,GACZ,cAAe,EACjB,EACA,CACE,eAAgB,EAChB,gBAAiB,EACjB,SAAU,GACV,SAAU,GACV,WAAY,GACZ,cAAe,EACjB,EACA,CACE,eAAgB,EAChB,gBAAiB,EACjB,SAAU,KACV,SAAU,GACV,WAAY,GACZ,cAAe,EACjB,CACF,CACF,EACA,KAAM,CACJ,OACE,sIACF,QAAS,CACP,QAAS,IACT,OAAQ,IACR,SAAU,IACV,KAAM,GACR,EACA,MAAO,CACL,CACE,eAAgB,EAChB,gBAAiB,EACjB,SAAU,GACV,SAAU,GACV,WAAY,GACZ,cAAe,CACjB,EACA,CACE,eAAgB,EAChB,gBAAiB,EACjB,SAAU,GACV,SAAU,GACV,WAAY,GACZ,cAAe,CACjB,EACA,CACE,eAAgB,EAChB,gBAAiB,EACjB,SAAU,GACV,SAAU,GACV,WAAY,GACZ,cAAe,CACjB,EACA,CACE,eAAgB,EAChB,gBAAiB,EACjB,SAAU,GACV,SAAU,GACV,WAAY,GACZ,cAAe,CACjB,EACA,CACE,eAAgB,EAChB,gBAAiB,EACjB,SAAU,GACV,SAAU,GACV,WAAY,GACZ,cAAe,CACjB,CACF,CACF,CACF,ECnNawJ,GAAyB,CACpC,OAAQ,CACN,MAAO,CACL,CAAC,SAAU,GAAI,KAAM,EAAE,EACvB,CAAC,SAAU,GAAI,KAAM,EAAE,EACvB,CAAC,SAAU,GAAI,KAAM,EAAE,CACzB,CACF,EACA,OAAQ,CACN,WAAY,QACd,EACA,MAAA9C,GACA,UAAW,CAAC,IAAK,IAAK,IAAK,KAAM,KAAM,IAAI,EAC3C,UAAW,CACT,OAAQ,EACR,MAAO,CACT,EACA,MAAA1G,GACA,MAAO,CAAC,IAAK,IAAK,IAAK,KAAM,KAAM,IAAI,EACvC,OAAQ,CAAC,EAAG,EAAG,EAAG,EAAG,EAAG,GAAI,EAAE,EAC9B,QAAS,CACP,KACA,CAAC,MAAO,CAAC,EAAG,EAAG,EAAG,CAAC,EAAG,SAAU,CAAC,EAAG,EAAG,EAAG,CAAC,EAAG,QAAS,CAAC,EAAG,EAAG,EAAG,CAAC,CAAC,EACnE,CAAC,MAAO,CAAC,EAAG,EAAG,EAAG,EAAE,EAAG,SAAU,CAAC,EAAG,EAAG,GAAI,CAAC,EAAG,QAAS,CAAC,EAAG,EAAG,GAAI,CAAC,CAAC,EACtE,CAAC,MAAO,CAAC,EAAG,EAAG,EAAG,EAAE,EAAG,SAAU,CAAC,EAAG,GAAI,GAAI,CAAC,EAAG,QAAS,CAAC,EAAG,EAAG,GAAI,CAAC,CAAC,EACvE,CAAC,MAAO,CAAC,EAAG,EAAG,GAAI,EAAE,EAAG,SAAU,CAAC,EAAG,GAAI,GAAI,CAAC,EAAG,QAAS,CAAC,EAAG,EAAG,GAAI,CAAC,CAAC,EACxE,CAAC,MAAO,CAAC,EAAG,GAAI,GAAI,EAAE,EAAG,SAAU,CAAC,EAAG,GAAI,GAAI,CAAC,EAAG,QAAS,CAAC,EAAG,EAAG,GAAI,CAAC,CAAC,CAC3E,EACA,MAAO,CAAC,EAAG,EAAG,EAAG,GAAI,GAAI,GAAI,GAAI,GAAI,IAAK,GAAG,EAC7C,MAAO,CACL,SAAU,CACR,KAAM,EACR,EACA,MAAO,CACL,KAAM,GACN,SAAU,CACZ,EACA,OAAQ,CACN,MAAO,GACP,OAAQ,GACR,QAAS,EACT,qBAAsB,IACtB,yBAA0B,UAC5B,EACA,OAAQ,CACN,MAAO,CACT,CACF,CAaF,ECjEayJ,GAAkC,CAC7C,OAAQ,CAAC,QAAS,GAAG,EACrB,QAAS,CAAC,QAAS,GAAG,EACtB,QAAS,CAAC,QAAS,GAAG,CACxB,ECGA,SAASC,IAAiB,CACxB,GAAI,OAAO,WAAe,IAAa,OAAO,WAC9C,GAAI,OAAO,OAAW,IAAa,OAAO,OAC1C,GAAI,OAAO,KAAS,IAAa,OAAO,KACxC,GAAI,OAAO,OAAW,IAAa,OAAO,OAE1C,MAAM,IAAI,MAAM,2CAA2C,CAC7D,CAEO,MAAMC,EAAcD,GAAe,ECdpC/K,GAAM,OAAO,IAAI,0BAA0B,EAEjDgL,EAAYhL,IAAOgL,EAAYhL,KAAQiL,GAAwC,IAAI,EAKtE,MAAAC,GAAwDF,EAAYhL,ICSjE,SAAAmL,GAAcrK,EAA+C,CAC3E,MAAMsK,EAAcC,GAAWH,EAAY,EACrC,CACJ,SAAAI,EACA,OAAAC,GAASH,GAAA,KAAA,OAAAA,EAAa,SAAU,QAChC,MAAOI,GAAYJ,GAAA,YAAAA,EAAa,QAAS,KACzC,KAAAjC,GAAOiC,GAAA,KAAAA,OAAAA,EAAa,OAAQ,SAC9B,EAAItK,EAEED,EAAsBqC,EAAQ,IAAM,CACxC,GAAI,CAACsI,EAAW,OAAO,KAEvB,KAAM,CAAC,MAAOC,EAAW,MAAOC,KAAcC,CAAS,EAAIH,EACrDI,EAAcH,EAAUF,IAAWE,EAAU,MAC7C1D,EAAQ6D,EAAYzC,IAASyC,EAAY,QAG/C,MAAO,CAAC,OAAQ,CAAC,GAAGD,EAAW,MAAA5D,EAAO,MAFxB2D,GAAaZ,EAEgB,CAAC,CAC9C,EAAG,CAACS,EAAQC,EAAWrC,CAAI,CAAC,EAEtBrJ,EAAkCoD,EACtC,IACEsI,GAAa,CACX,QAAS,EACT,MAAOA,EACP,OAAAD,EACA,KAAApC,CACF,EACF,CAACqC,EAAWD,EAAQpC,CAAI,CAC1B,EAEA,OAAKtI,EAKHgL,EAAA,cAACX,GAAa,SAAb,CAAsB,MAAOpL,CAAAA,EAC5B+L,EAAA,cAACC,GAAA,CAAoB,MAAOjL,CAAQyK,EAAAA,CAAS,CAC/C,EANOO,EAAA,cAAC,MAAA,KAAI,6CAA2C,CAQ3D,CC5DgB,SAAAE,GAASjM,EAAkD,CACzE,OAAO,QAAQA,GAAS,OAAOA,GAAU,QAAQ,CACnD,UCMgBkM,IAAkC,CAChD,MAAMlM,EAAiBuL,GAAWH,EAAY,EAE9C,GAAI,CAACpL,EACH,MAAM,IAAI,MAAM,uCAAuC,EAMzD,GAAI,CAACiM,GAASjM,CAAK,GAAKA,EAAM,UAAY,EACxC,MAAM,IAAI,MAAM,qDAAqD,EAGvE,OAAOA,CACT,CCNgB,SAAAmM,GAAmBnL,EAAoD,CACrF,KAAM,CAAC,SAAAwK,EAAU,OAAAC,EAAQ,KAAApC,CAAI,EAAIrI,EAC3BoL,EAAOF,KAEb,OACEH,EAAA,cAACV,GAAA,CAAc,OAAQI,GAAUW,EAAK,OAAQ,MAAOA,EAAK,MAAO,KAAM/C,CAAAA,EACpEmC,CACH,CAEJ,CCnBO,SAASa,IAAkB,CAChC,OAAOC,GACT,CAAA,CCDA,MAAMC,GAAsB,IAAI,QAEhC,SAASC,GAAelM,EAAiBmM,EAAe,CACtD,OAAIA,IAAU,EACL,0BAA0BnM,EAAMmM,GAAS,OAG9CA,IAAUnM,EAAM,OACX,0BAA0BA,EAAMmM,EAAQ,QAG1C,0BAA0BnM,EAAMmM,EAAQ,yBAAyBnM,EAAMmM,GAAS,MACzF,CAEA,SAASC,GAAoBpM,EAAgC,CAC3D,MAAMqM,EAAWrM,EAAM,OACjBmB,EAA+C,CAAA,EAErD,GAAI,OAAO,OAAW,IACpB,QAASgL,EAAQE,EAAUF,EAAQ,GAAIA,GAAS,EAAG,CACjD,MAAMG,EAAaJ,GAAelM,EAAOmM,CAAK,EAE9ChL,EAAM,KAAK,CAAC,MAAAgL,EAAO,GAAI,OAAO,WAAWG,CAAU,CAAC,CAAC,CACvD,CAyCF,MAAO,CAAC,gBAtCgB,IAAM,CAC5B,SAAW,CAAC,MAAAH,EAAO,GAAAI,CAAE,IAAKpL,EACxB,GAAIoL,EAAG,QAAS,OAAOJ,EAGzB,MAAO,EACT,EAgCyB,UA9BN3H,GAAwC,CACzD,MAAMgI,EAA6B,CAAA,EAEnC,SAAW,CAAC,MAAAL,EAAO,GAAAI,CAAE,IAAKpL,EAAO,CAC/B,MAAMsL,EAAe,IAAM,CACrBF,EAAG,SAAS/H,EAAW2H,CAAK,CAClC,EAEII,EAAG,iBACLA,EAAG,iBAAiB,SAAUE,CAAY,EAE1CF,EAAG,YAAYE,CAAY,EAG7BD,EAAW,KAAK,IAAM,CAChBD,EAAG,oBACLA,EAAG,oBAAoB,SAAUE,CAAY,EAE7CF,EAAG,eAAeE,CAAY,CAElC,CAAC,CACH,CAEA,MAAO,IAAM,CACX,UAAWC,KAAaF,EACtBE,GAEJ,CACF,CAEkC,CACpC,CAKgB,SAAAC,GAAiB3M,EAAgC,CAC/D,IAAI4M,EAAUX,GAAoB,IAAIjM,CAAK,EAE3C,OAAK4M,IACHA,EAAUR,GAAoBpM,CAAK,EACnCiM,GAAoB,IAAIjM,EAAO4M,CAAO,GAGjCA,CACT,CC/EO,SAASC,IAAwB,CACtC,MAAMpM,EAAQsL,GAAS,EACjB,CAAC,MAAA/L,CAAK,EAAIS,EAAM,OAChBmM,EAAU9J,EAAQ,IAAM6J,GAAiB3M,CAAK,EAAG,CAACA,CAAK,CAAC,EACxD,CAACmM,EAAOW,CAAQ,EAAItJ,EAASoJ,EAAQ,eAAe,EAE1D,OAAA/I,EAAU,IAAM+I,EAAQ,UAAUE,CAAQ,EAAG,CAACF,CAAO,CAAC,EAE/CT,CACT,CCZgB,SAAAY,IAA0B,CACxC,MAAMR,EAAKzJ,EAAQ,IAAM,CACvB,GAAI,EAAA,OAAO,OAAW,KAEtB,OAAO,OAAO,WAAW,8BAA8B,CACzD,EAAG,CAAE,CAAA,EAEC,CAACmF,EAAM+E,CAAO,EAAIxJ,GAAS+I,GAAA,YAAAA,EAAI,UAAW,EAAK,EAErD,OAAA1I,EAAU,IAAM,CACd,GAAI,CAAC0I,EAAI,OAETS,EAAQT,EAAG,OAAO,EAElB,MAAME,EAAe,IAAMO,EAAQT,EAAG,OAAO,EAE7C,OAAAA,EAAG,iBAAiB,SAAUE,CAAY,EAEnC,IAAMF,EAAG,oBAAoB,SAAUE,CAAY,CAC5D,EAAG,CAACF,CAAE,CAAC,EAEAtE,CACT,OCtBagF,GAAsB,OAAO,OAAW,IAAcC,GAAkBrJ,ECCrE,SAAAsJ,GAAmBC,EAA8D,CAC/F,MAAMC,EAAWzJ,GAAiB,IAAI,EAEtC,OAAAqJ,GAAoB,IAAM,CACpB,CAACG,IAED,OAAOA,GAAQ,WACjBA,EAAIC,EAAS,OAAO,EAEpBD,EAAI,QAAUC,EAAS,QAE3B,CAAC,EAEMA,CACT,CCfgB,SAAAC,GACdF,EACAG,EACM,CACN1J,EAAU,IAAM,CACVuJ,EAAI,SACNA,EAAI,QAAQ,kBAAkBG,GAAkB,EAAE,CAEtD,EAAG,CAACA,EAAgBH,CAAG,CAAC,CAC1B,CCTA,MAAMI,GAAe,qCAEd,SAASC,IAEd,CACA,MAAO,CAACC,GAAQC,GAAWC,GAAaC,GAAcC,EAAU,CAClE,CAEA,SAASJ,GAAOhN,EAAgD,CAC9D,KAAM,CAAC,MAAAD,CAAK,EAAIC,EACV,CAAC,MAAAV,CAAK,EAAIS,EAAM,OAEtB,OAAOV,EAAYC,EAAOU,EAAM,QAAUhB,GACxCA,EAAQ,CAAC,KAAM,CAAC,OAAQ8N,EAAY,CAAC,EAAI,CAAC,KAAM,CAAC,OAAQ,CAAC,CAAC,CAC7D,CACF,CAEA,SAASG,GAAUjN,EAAgD,CACjE,KAAM,CAAC,MAAAD,CAAK,EAAIC,EACV,CAAC,MAAAV,CAAK,EAAIS,EAAM,OAEtB,OAAOV,EAAYC,EAAOU,EAAM,WAAahB,GAC3CA,EAAQ,CAAC,KAAM,CAAC,UAAW8N,EAAY,CAAC,EAAI,CAAC,KAAM,CAAC,UAAW,CAAC,CAAC,CACnE,CACF,CAEA,SAASI,GAAYlN,EAAgD,CACnE,KAAM,CAAC,MAAAD,CAAK,EAAIC,EACV,CAAC,MAAAV,CAAK,EAAIS,EAAM,OAEtB,OAAOV,EAAYC,EAAOU,EAAM,aAAehB,GAC7CA,EAAQ,CAAC,KAAM,CAAC,YAAa8N,EAAY,CAAC,EAAI,CAAC,KAAM,CAAC,YAAa,CAAC,CAAC,CACvE,CACF,CAEA,SAASK,GAAanN,EAAgD,CACpE,KAAM,CAAC,MAAAD,CAAK,EAAIC,EACV,CAAC,MAAAV,CAAK,EAAIS,EAAM,OAEtB,OAAOV,EAAYC,EAAOU,EAAM,cAAgBhB,GAC9CA,EAAQ,CAAC,KAAM,CAAC,aAAc8N,EAAY,CAAC,EAAI,CAAC,KAAM,CAAC,aAAc,CAAC,CAAC,CACzE,CACF,CAEA,SAASM,GAAWpN,EAAgD,CAClE,KAAM,CAAC,MAAAD,CAAK,EAAIC,EACV,CAAC,MAAAV,CAAK,EAAIS,EAAM,OAEtB,OAAOV,EAAYC,EAAOU,EAAM,YAAchB,GAC5CA,EAAQ,CAAC,KAAM,CAAC,WAAY8N,EAAY,CAAC,EAAI,CAAC,KAAM,CAAC,WAAY,CAAC,CAAC,CACrE,CACF,CClDA,MAAMO,GAAwB,CAC5B,kCAAmC,CACjC,UAAW,MACb,CACF,EAEMC,GAAkD,CACtD,QAAS,cACT,OAAQ,YACV,EAEMC,GAAa,CACjB,QAAS,UACT,KAAM,MACR,EAEgB,SAAAC,IAAsB,CACpC,OAAOH,EACT,CAEO,SAASI,IAEd,CACA,MAAO,CACLC,GACAC,GACAC,GACAC,EACF,CACF,CAEA,SAASA,GAA0B7N,EAA6C,CAC9E,KAAM,CAAC,MAAAD,CAAK,EAAIC,EACV,CAAC,MAAAV,CAAK,EAAIS,EAAM,OAEtB,OAAOV,EAAYC,EAAOU,EAAM,SAAW8N,IAAa,CACtD,kBAAmB,CAAC,QAAAA,CAAO,CAC7B,EAAE,CACJ,CAEA,SAASJ,GAAyB1N,EAA6C,CAC7E,KAAM,CAAC,MAAAD,CAAK,EAAIC,EACV,CAAC,MAAAV,CAAK,EAAIS,EAAM,OAEtB,OAAOV,EAAYC,EAAOU,EAAM,QAAU+N,IAAY,CACpD,UAAWT,GAAWS,EACxB,EAAE,CACJ,CAEA,SAASJ,GAAyB3N,EAA6C,CAC7E,KAAM,CAAC,MAAAD,CAAK,EAAIC,EACV,CAAC,MAAAV,CAAK,EAAIS,EAAM,OAEtB,OAAOV,EAAYC,EAAOU,EAAM,QAAUgO,IAAY,CACpD,OAAQT,GAAWS,EACrB,EAAE,CACJ,CAEA,SAASJ,GAA2B5N,EAA6C,CAC/E,KAAM,CAAC,MAAAD,CAAK,EAAIC,EACV,CAAC,MAAAV,CAAK,EAAIS,EAAM,OAEtB,OAAOV,EAAYC,EAAOU,EAAM,UAAYiO,IAAc,CACxD,SAAAA,CACF,EAAE,CACJ,CClEA,MAAMZ,GAAwB,CAC5B,mBAAoB,CAClB,QAAS,MACX,CACF,WAEgBa,IAEd,CACA,MAAO,CACLb,GACAc,GACAC,GACAC,GACAC,GACAC,EACF,CACF,CAEO,SAASJ,GACdnO,EACa,CACb,KAAM,CAAC,MAAAD,CAAK,EAAIC,EACV,CAAC,MAAAV,CAAK,EAAIS,EAAM,OAEtB,OAAOV,EAAYC,EAAOU,EAAM,OAASwO,IAChC,CAAC,WAAYA,CAAK,EAC1B,CACH,CAEA,SAASJ,GAAuBpO,EAA8C,CAC5E,KAAM,CAAC,MAAAD,CAAK,EAAIC,EACV,CAAC,MAAAV,EAAO,MAAAmP,CAAK,EAAI1O,EAAM,OAE7B,OAAOV,EAAYC,EAAOU,EAAM,KAAO0O,IAAS,CAC9C,IAAKA,EAAMvP,EAAIsP,EAAMC,EAAI,EAAI,MAC/B,EAAE,CACJ,CAEO,SAASL,GAAwBrO,EAA2D,CACjG,KAAM,CAAC,MAAAD,CAAK,EAAIC,EACV,CAAC,MAAAV,CAAK,EAAIS,EAAM,OAEtB,OAAOV,EAAYC,EAAOU,EAAM,MAAQ2O,IAC/B,CAAC,SAAUA,CAAI,EACvB,CACH,CAEO,SAASL,GACdtO,EACa,CACb,KAAM,CAAC,MAAAD,CAAK,EAAIC,EACV,CAAC,MAAAV,CAAK,EAAIS,EAAM,OAEtB,OAAOV,EAAYC,EAAOU,EAAM,SAAW4O,IAClC,CAAC,eAAgBA,CAAO,EAChC,CACH,UAEgBL,GACdvO,EACa,CACb,KAAM,CAAC,MAAAD,CAAK,EAAIC,EACV,CAAC,MAAAV,CAAK,EAAIS,EAAM,OAEtB,OAAOV,EAAYC,EAAOU,EAAM,WAAa6O,IACpC,CAAC,cAAeA,CAAS,EACjC,CACH,CCnEA,MAAMxB,GAAwB,CAC5B,SAAU,EACV,UAAW,CACb,EAEgB,SAAAyB,IAEd,CACA,MAAO,CAACzB,GAAY0B,EAAuB,CAC7C,CAEgB,SAAAA,GACd/O,EACa,CACb,KAAM,CAAC,MAAAD,CAAK,EAAIC,EACV,CAAC,MAAAV,CAAK,EAAIS,EAAM,OAEtB,OAAKC,EAAM,MAEJX,EAAYC,EAAOU,EAAM,MAAQgP,IAAU,CAAC,KAAAA,CAAI,EAAE,EAFhCpQ,EAG3B,CC1BO,SAASqQ,GAAqBjC,EAAgD,CACnF,MAAO,eAAeA,EAAO,WAAWA,EAAO,OACjD,CAEgB,SAAAkC,GAAe5H,EAIpB,CACT,KAAM,CAAC,KAAAzG,EAAM,OAAAmM,EAAQ,UAAAmC,CAAS,EAAI7H,EAC5B8H,EAAuBD,EAAU,OAASA,EAAU,MACpDE,EAAsB,EAAIF,EAAU,OACpCG,EAAUzO,EAAOA,EAAK,GAAK,uBAEjC,MAAO,CACLwO,EAAsB,GAAK,eAAeA,mCAC1CrC,GAAUiC,GAAqBjC,CAAM,EACrCqC,EAAsB,GAAK,SAAS,EAAIA,OAAyBC,IACjEF,EAAuB,GAAK,SAASA,kCACvC,EACG,OAAO,OAAO,EACd,KAAK,GAAG,CACb,CCjBA,MAAMG,GAAW,CACf,mBAAoB,CAClB,QAAS,MACX,EACA,kCAAmC,CACjC,UAAW,MACb,CACF,EAEMC,GAAmB,CACvB,KAAM,OACN,IAAK,cACL,IAAK,cACL,GAAI,gBACN,EAEMC,GAAiB,CACrB,KAAM,OACN,IAAK,cACL,IAAK,cACL,GAAI,gBACN,EAEgB,SAAAC,IAEd,CACA,MAAO,CACLH,GACAI,GACAC,GACAC,GACAC,GACAC,GACAC,GACAC,GACAC,EACF,CACF,CAEA,SAASP,GAA4B3P,EAA8C,CACjF,KAAM,CAAC,MAAAD,CAAK,EAAIC,EACV,CAAC,MAAAV,CAAK,EAAIS,EAAM,OAEtB,OAAOV,EAAYC,EAAOU,EAAM,UAAYmQ,IAAc,CACxD,aAAcA,CAChB,EAAE,CACJ,CAEA,SAASP,GAA4B5P,EAA8C,CACjF,KAAM,CAAC,MAAAD,CAAK,EAAIC,EACV,CAAC,MAAAV,CAAK,EAAIS,EAAM,OAEtB,OAAOV,EAAYC,EAAOU,EAAM,UAAYoQ,IAAc,CACxD,aAAcA,GAAYX,GAAeW,EAC3C,EAAE,CACJ,CAEA,SAASP,GAA4B7P,EAA8C,CACjF,KAAM,CAAC,MAAAD,CAAK,EAAIC,EACV,CAAC,MAAAV,CAAK,EAAIS,EAAM,OAEtB,OAAOV,EAAYC,EAAOU,EAAM,UAAYqQ,IAAc,CACxD,gBAAiBA,GAAYb,GAAiBa,EAChD,EAAE,CACJ,CAEA,SAASP,GAA2B9P,EAA8C,CAChF,KAAM,CAAC,MAAAD,CAAK,EAAIC,EACV,CAAC,MAAAV,CAAK,EAAIS,EAAM,OAEtB,OAAOV,EAAYC,EAAOU,EAAM,SAAWsQ,IAAa,CACtD,oBAAqBA,GAAW,UAAUA,mBAC5C,EAAE,CACJ,CAEA,SAASP,GAAwB/P,EAA8C,CAC7E,KAAM,CAAC,MAAAD,CAAK,EAAIC,EACV,CAAC,MAAAV,CAAK,EAAIS,EAAM,OAEtB,OAAOV,EAAYC,EAAOU,EAAM,MAAQuQ,IAAU,CAChD,iBAAkBA,GAAQ,UAAUA,mBACtC,EAAE,CACJ,CAEA,SAASP,GAAuBhQ,EAA8C,CAC5E,KAAM,CAAC,MAAAD,CAAK,EAAIC,EACV,CAAC,MAAAV,EAAO,MAAAmP,CAAK,EAAI1O,EAAM,OAE7B,OAAOV,EAAYC,EAAOU,EAAM,KAAO0O,IAAS,CAC9C,QAASA,EAAMvP,EAAIsP,EAAMC,EAAI,EAAI,MACnC,EAAE,CACJ,CAEA,SAASuB,GAAwBjQ,EAA8C,CAC7E,KAAM,CAAC,MAAAD,CAAK,EAAIC,EACV,CAAC,MAAAV,EAAO,MAAAmP,CAAK,EAAI1O,EAAM,OAE7B,OAAOV,EAAYC,EAAOU,EAAM,MAAQwQ,IAAU,CAChD,UAAWA,EAAOrR,EAAIsP,EAAM+B,EAAK,EAAI,MACvC,EAAE,CACJ,CAEA,SAASN,GAAwBlQ,EAA8C,CAC7E,KAAM,CAAC,MAAAD,CAAK,EAAIC,EACV,CAAC,MAAAV,EAAO,MAAAmP,CAAK,EAAI1O,EAAM,OAE7B,OAAOV,EAAYC,EAAOU,EAAM,MAAQyQ,IAAU,CAChD,OAAQA,EAAOtR,EAAIsP,EAAMgC,EAAK,EAAI,MACpC,EAAE,CACJ,CC7GO,SAASC,IAEd,CACA,MAAO,CACLC,GACAC,GACAC,GACAC,GACAC,GACAC,EACF,CACF,CAEA,MAAMC,GAAgB,CACpB,KAAM,OACN,KAAM,QACR,EAEMC,GAAmB,CACvB,KAAM,OACN,KAAM,QACR,EAEA,SAASP,GAA2B3Q,EAAkD,CACpF,KAAM,CAAC,MAAAD,CAAK,EAAIC,EACV,CAAC,MAAAV,CAAK,EAAIS,EAAM,OAEtB,OAAOV,EAAYC,EAAOU,EAAM,KAAOmR,GACjC,OAAOA,GAAQ,SACV,CAAC,QAAS,QAAQA,YAAcA,GAAK,EAGvC,CAAC,QAASF,GAAcE,EAAI,CACpC,CACH,CAEA,SAASP,GAAgC5Q,EAAkD,CACzF,KAAM,CAAC,MAAAD,CAAK,EAAIC,EACV,CAAC,MAAAV,CAAK,EAAIS,EAAM,OAEtB,OAAOV,EAAYC,EAAOU,EAAM,UAAYoR,IAAc,CACxD,aAAcA,CAChB,EAAE,CACJ,CAEA,SAASP,GAA8B7Q,EAAkD,CACvF,KAAM,CAAC,MAAAD,CAAK,EAAIC,EACV,CAAC,MAAAV,CAAK,EAAIS,EAAM,OAEtB,OAAOV,EAAYC,EAAOU,EAAM,QAAUqR,IAAY,CAAC,WAAYA,CAAM,EAAE,CAC7E,CAEA,SAASP,GAA8B9Q,EAAkD,CACvF,KAAM,CAAC,MAAAD,CAAK,EAAIC,EACV,CAAC,MAAAV,CAAK,EAAIS,EAAM,OAEtB,OAAOV,EAAYC,EAAOU,EAAM,QAAUsR,GACpC,OAAOA,GAAW,SACb,CAAC,WAAY,QAAQA,YAAiBA,GAAQ,EAGhD,CAAC,WAAYJ,GAAiBI,EAAO,CAC7C,CACH,CAEA,SAASP,GAAmC/Q,EAAkD,CAC5F,KAAM,CAAC,MAAAD,CAAK,EAAIC,EACV,CAAC,MAAAV,CAAK,EAAIS,EAAM,OAEtB,OAAOV,EAAYC,EAAOU,EAAM,aAAeuR,IAAiB,CAC9D,gBAAiBA,CACnB,EAAE,CACJ,CAEA,SAASP,GAAiChR,EAAkD,CAC1F,KAAM,CAAC,MAAAD,CAAK,EAAIC,EACV,CAAC,MAAAV,CAAK,EAAIS,EAAM,OAEtB,OAAOV,EAAYC,EAAOU,EAAM,WAAawR,IAAe,CAC1D,cAAeA,CACjB,EAAE,CACJ,CC1EgB,SAAAC,GACdzR,EACa,CACb,KAAM,CAAC,UAAA0R,EAAW,UAAAC,EAAW,WAAAC,EAAY,SAAAC,EAAU,OAAAC,EAAQ,MAAA/R,CAAK,EAAIC,EAC9D,CAAC,MAAAO,EAAO,MAAAjB,EAAO,MAAOyS,CAAU,EAAIhS,EAAM,OAC1CiS,EAAM,KAAK,IAAIH,EAAS,OAAQC,EAAO,OAAQJ,EAAU,MAAM,EAC/DO,EAAqB,CAAA,EACrBC,EAAmB,GACnBC,EAAsB,CAAC,EAE7B,QAASC,EAAI,EAAGA,EAAIJ,EAAKI,GAAK,EAC5BD,EAAUC,GAAKV,EAAUU,KAAO,OAAYD,EAAUC,EAAI,GAAKV,EAAUU,GACzEH,EAASG,GAAKP,EAASO,KAAO,OAAYH,EAASG,EAAI,GAAKP,EAASO,GACrEF,EAAOE,GAAKN,EAAOM,KAAO,OAAYF,EAAOE,EAAI,GAAKN,EAAOM,GAG/D,OAAO/S,EAAYC,EAAO2S,EAAU,CAACI,EAAGD,IAAM,CAC5C,MAAMnR,EAAOV,EAAM,KAAK,MAAM4R,EAAUC,KAAO7R,EAAM,KAAK,MAAM,GAC1D+R,EAASrR,EAAK,WAAaA,EAAK,eAAiBA,EAAK,gBACtDsR,EAAIR,EAAWE,EAASG,IACxBpN,EAAI+M,EAAWG,EAAOE,IAEtBI,EAAS,CACb,WAAYrT,EAAIoT,EAAItR,EAAK,cAAc,EACvC,aAAc9B,EAAIoT,CAAC,EACnB,cAAepT,EAAIoT,EAAItR,EAAK,eAAe,EAC3C,YAAa9B,EAAIoT,CAAC,CACpB,EAEA,OAAIX,IAAYY,EAAO,aAAerT,EAAIoT,EAAID,EAAStN,CAAC,GACpD2M,IAAWa,EAAO,YAAcrT,EAAIoT,EAAID,EAAStN,CAAC,GAE/CwN,CACT,CAAC,CACH,UAsBgBC,GACdzS,EAKa,CACb,OAAOyR,GAA4B,CAAC,GAAGzR,EAAO,WAAY,EAAI,CAAC,CACjE,CChDA,MAAM0S,GAAaC;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA,EAQH,SAAAC,IAAiD,CAC/D,OAAOF,EACT,CAEO,SAASG,GACd7S,EAC4B,CAC5B,KAAM,CAAC,MAAAD,EAAO,QAAA+S,EAAS,MAAAC,EAAO,QAAAzS,CAAO,EAAIN,EACnCgT,EAAOjT,EAAM,OAAO,MAAM,KAC1BkH,EAAQlH,EAAM,OAAO,MAAM,MAEjC,OAAO4S;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA,mBAQUK,EAAK;AAAA,mBACJ1S,GAAW0S,EAAK,QAAQ1S,IAAa0S,EAAK,QAAQ;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,qBA2BjDF,kBAAwBC;AAAAA,0BACnB9L,EAAM,QAAQ,QAAQ;AAAA,mCACbA,EAAM,QAAQ,QAAQ;AAAA;AAAA;AAAA;AAAA,4BAI7BA,EAAM,QAAQ,QAAQ;AAAA,qCACbA,EAAM,QAAQ,QAAQ;AAAA;AAAA;AAAA;AAAA;AAAA,4BAK/BA,EAAM,QAAQ,SAAS;AAAA,qCACdA,EAAM,QAAQ,SAAS;AAAA;AAAA;AAAA;AAAA;AAAA,4BAKhCA,EAAM,QAAQ,QAAQ;AAAA,qCACbA,EAAM,QAAQ,QAAQ;AAAA;AAAA;AAAA;AAAA;AAAA,4BAK/BA,EAAM,QAAQ,SAAS;AAAA,qCACdA,EAAM,QAAQ,SAAS;AAAA;AAAA;AAAA,GAI5D,CAEgB,SAAAgM,GAAuBjT,EAA2D,CAChG,KAAM,CAAC,MAAAD,CAAK,EAAIC,EACV,CAAC,MAAAO,EAAO,MAAAjB,CAAK,EAAIS,EAAM,OAE7B,OAAOV,EAAYC,EAAOU,EAAM,UAAYe,GAAc,CACxD,MAAME,EAAOV,EAAM,KAAK,MAAMQ,IAAcR,EAAM,KAAK,MAAM,GAE7D,MAAO,CACL,SAAUpB,EAAI8B,EAAK,QAAQ,EAC3B,WAAYA,EAAK,WAAaA,EAAK,QACrC,CACF,CAAC,CACH,CAEO,SAASiS,GACdlT,EAC4B,CAC5B,KAAM,CAAC,QAAAmT,EAAS,WAAAC,EAAY,WAAAC,EAAY,QAAAP,EAAS,MAAAC,EAAO,MAAAhT,CAAK,EAAIC,EAC3D,CAAC,UAAAmP,EAAW,MAAAmE,CAAK,EAAIvT,EAAM,OAC3BkH,EAAQlH,EAAM,OAAO,MAAM,MAEjC,OAAO4S;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA,8BAeqBS,EAAa,EAAI;AAAA,iCACdA,EAAa,EAAI;AAAA,+BACnBC,EAAa,EAAI;AAAA,kCACdA,EAAa,EAAI;AAAA;AAAA,qBAE9BP,kBAAwBC;AAAAA,yBACpB9L,EAAM,QAAQ,QAAQ;AAAA,yBACtBA,EAAM,QAAQ,QAAQ;AAAA;AAAA;AAAA;AAAA,8BAIjBkM,EAClBlE,GAAqB,CAAC,MAAOhI,EAAM,QAAQ,QAAQ,OAAQ,MAAOqM,EAAM,OAAO,KAAK,CAAC,EACrF;AAAA;AAAA;AAAA;AAAA;AAAA,2BAKerM,EAAM,QAAQ,QAAQ;AAAA,2BACtBA,EAAM,QAAQ,QAAQ;AAAA,8BACnBkM,EAClBlE,GAAqB,CAAC,MAAOhI,EAAM,QAAQ,QAAQ,OAAQ,MAAOqM,EAAM,OAAO,KAAK,CAAC,EACrF;AAAA;AAAA;AAAA;AAAA;AAAA,8BAKkBpE,GAAe,CACnC,OAAQiE,EACJ,CAAC,MAAOlM,EAAM,QAAQ,QAAQ,OAAQ,MAAOqM,EAAM,OAAO,KAAK,EAC/D,OACJ,UAAAnE,CACF,CAAC;AAAA;AAAA;AAAA;AAAA;AAAA,2BAKkBlI,EAAM,QAAQ,SAAS;AAAA,2BACvBA,EAAM,QAAQ,SAAS;AAAA,8BACpBkM,EAClBlE,GAAqB,CACnB,MAAOhI,EAAM,QAAQ,SAAS,OAC9B,MAAOqM,EAAM,OAAO,KACtB,CAAC,EACD;AAAA;AAAA;AAAA;AAAA;AAAA,2BAKerM,EAAM,QAAQ,SAAS;AAAA,2BACvBA,EAAM,QAAQ,SAAS;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,6BAMrBA,EAAM,QAAQ,QAAQ;AAAA,6BACtBA,EAAM,QAAQ,QAAQ;AAAA;AAAA;AAAA;AAAA,gCAInBkM,EAClBlE,GAAqB,CACnB,MAAOhI,EAAM,QAAQ,QAAQ,OAC7B,MAAOqM,EAAM,OAAO,KACtB,CAAC,EACD;AAAA;AAAA;AAAA;AAAA,GAKd,CCxNgB,SAAAC,GACdvT,EACe,CACf,KAAM,CAAC,MAAAD,CAAK,EAAIC,EAEhB,MAAO,CACLF,GAAoBC,EAAO,CAAC,QAAQ,EAAGC,EAAM,OAAO,EACpDF,GAAoBC,EAAO,CAAC,aAAc,aAAa,EAAGC,EAAM,QAAQ,EACxEF,GAAoBC,EAAO,CAAC,YAAa,cAAc,EAAGC,EAAM,QAAQ,EACxEF,GAAoBC,EAAO,CAAC,WAAW,EAAGC,EAAM,UAAU,EAC1DF,GAAoBC,EAAO,CAAC,aAAa,EAAGC,EAAM,YAAY,EAC9DF,GAAoBC,EAAO,CAAC,cAAc,EAAGC,EAAM,aAAa,EAChEF,GAAoBC,EAAO,CAAC,YAAY,EAAGC,EAAM,WAAW,CAC9D,EAAE,OAAO,OAAO,CAClB,CCdgB,SAAAwT,GACdxT,EACe,CACf,KAAM,CAAC,MAAAD,CAAK,EAAIC,EAEhB,MAAO,CACLF,GAAoBC,EAAO,CAAC,SAAS,EAAGC,EAAM,QAAQ,EACtDF,GAAoBC,EAAO,CAAC,cAAe,cAAc,EAAGC,EAAM,SAAS,EAC3EF,GAAoBC,EAAO,CAAC,aAAc,eAAe,EAAGC,EAAM,SAAS,EAC3EF,GAAoBC,EAAO,CAAC,YAAY,EAAGC,EAAM,WAAW,EAC5DF,GAAoBC,EAAO,CAAC,cAAc,EAAGC,EAAM,aAAa,EAChEF,GAAoBC,EAAO,CAAC,eAAe,EAAGC,EAAM,cAAc,EAClEF,GAAoBC,EAAO,CAAC,aAAa,EAAGC,EAAM,YAAY,CAChE,EAAE,OAAO,OAAO,CAClB,UCdgByT,GAAsBzT,EAA6D,CACjG,KAAM,CAAC,MAAAD,CAAK,EAAIC,EACV,CAAC,MAAAV,EAAO,OAAAoU,CAAM,EAAI3T,EAAM,OAE9B,OAAOV,EAAYC,EAAOU,EAAM,QAAU2T,IAAiB,CACzD,aAAcxU,EAAIuU,EAAOC,EAAY,CACvC,EAAE,CACJ,CCLA,SAASC,GAAYC,EAAmB5M,EAAe,CACrD,MAAO,GAAG4M,EAAO,IAAI1U,CAAG,EAAE,KAAK,GAAG,KAAK8H,GACzC,CAEA,SAAS6M,GAAYD,EAAuC,CAC1D,GAAI,CAACA,EAAQ,OAAOhV,GAEpB,MAAMkV,EAAU,SAAS5U,EAAI,CAAC,qCACxB6U,EAAQJ,GAAYC,EAAO,MAAO,gCAAgC,EAClEI,EAAWL,GAAYC,EAAO,SAAU,mCAAmC,EAC3EK,EAAUN,GAAYC,EAAO,QAAS,kCAAkC,EAE9E,MAAO,CAAC,UAAW,GAAGE,MAAYC,MAAUC,MAAaC,GAAS,CACpE,CAEO,SAASC,GAAsBnU,EAA6D,CACjG,KAAM,CAAC,MAAAD,CAAK,EAAIC,EACV,CAAC,MAAAV,EAAO,QAAA8U,CAAO,EAAIrU,EAAM,OAE/B,OAAOV,EAAYC,EAAOU,EAAM,QAAU6T,GAAWC,GAAYM,EAAQP,EAAO,CAAC,CACnF,CCxBgB,SAAAQ,GACdrU,EAC4B,CAC5B,KAAM,CAAC,QAAAsU,EAAS,OAAAC,EAAQ,MAAAxU,CAAK,EAAIC,EAC3B,CAAC,QAAAU,CAAO,EAAIX,EAAM,OAAO,MAAM,KAErC,OAAO4S;AAAAA;AAAAA;AAAAA,MAGH2B,GACF3B;AAAAA;AAAAA;AAAAA;AAAAA,MAIE4B,GACF5B;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA,qBAKiB5S,EAAM,OAAO,MAAM,KAAK;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,qBA4BxBW,EAAQ;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,GAO7B,CC5BA,MAAM8T,GAAOC,EAAO,IAClBxS,GACAF,GACAsS,EACF,EAEMK,GAAuBD,EAAO;AAAA;AAAA;AAAA;AAAA;AAAA,EAUvBE,GAAOC,EAAW,SAC7B5U,EACA0M,EACA,CACA,KAAM,CACJ,OAAAmI,EAAS,GACT,MAAArG,EACA,SAAUsG,EACV,MAAArN,EAAQ,GACR,KAAAxG,EAAO,EACP,aAAA8T,EACA,OAAAC,KACGC,CACL,EAAIjV,EAEJ,IAAIwK,EAAWsK,EAEf,OAAIC,IAAiB,aACnBvK,EAAWO,EAAA,cAAC2J,GAAA,KAAsBlK,CAAS,GAI3CO,EAAA,cAACyJ,GAAA,CACC,UAAQ,OACP,GAAGS,EACJ,QAASJ,EACT,OAAQ3S,EAAasM,CAAK,EAC1B,OAAQ/G,EACR,IAAKiF,EACL,MAAOxK,EAAajB,CAAI,EACxB,QAAS+T,CAAAA,EAETjK,EAAA,cAAC,OAAA,KAAMP,CAAS,CAClB,CAEJ,CAAC,EC5EY0K,GAAc,CACzB,KAAMC,GACN,MAAOC,GACP,SAAUC,GACV,OAAQC,GACR,SAAUC,EACZ,EAEA,SAASH,IAA8B,CACrC,MAAO,CACL,SAAU,WACV,UAAW,aACX,OAAQ,EACR,QAAS,EACT,WAAY,kBACZ,UAAW,wCACX,KAAM,EACN,MAAO,EACP,IAAK,EACL,OAAQ,EAER,UAAW,CACT,MAAO,OACP,OAAQ,MACR,SAAU,WACV,IAAK,OACL,KAAM,MACN,UAAW,mBAEX,kBAAmB,CACjB,QAAS,OACX,CACF,EAEA,qCAAsC,CACpC,UAAW,wCACX,QAAS,CACX,EAEA,kCAAmC,CACjC,QAAS,EACT,UAAW,cACb,EAEA,qCAAsC,CACpC,QAAS,EACT,UAAW,iBACb,CACF,CACF,CAEgB,SAAAD,GAAgBnV,EAAqD,CACnF,KAAM,CAAC,OAAAwV,EAAQ,MAAAzV,CAAK,EAAIC,EAClB,CAAC,UAAAmP,CAAS,EAAIpP,EAAM,OAE1B,MAAO,CACL,gBAAiByV,EACjB,SAAU,WACV,UAAW,aACX,WAAY,OACZ,UAAW,iCAEX,4BAA6B,CAC3B,QAAS,EACX,EAEA,QAAS,CACP,kBAAmB,CACjB,QAAS,OACX,CACF,EAGA,sBAAuB,CACrB,yBAA0B,UAC1B,WAAY,OACZ,OAAQ,EACR,QAAS,EACT,OAAQ,EACR,KAAM,UACN,MAAO,UACP,QAAS,OAET,UAAW,CACT,UAAWtG,GAAe,CAAC,UAAAC,CAAS,CAAC,CACvC,EAEA,8BAA+B,CAC7B,UAAW,MACb,CACF,CACF,CACF,CAEgB,SAAAsG,GACdzV,EACa,CACb,KAAM,CAAC,MAAAD,CAAK,EAAIC,EACV,CAAC,OAAA0V,EAAQ,MAAApW,CAAK,EAAIS,EAAM,OAE9B,OAAOV,EAAYC,EAAOU,EAAM,MAAQiB,GAAS,CAC/C,MAAM0U,EAAaD,EAAO,MAAMzU,IAASyU,EAAO,MAAM,GAEtD,MAAO,CACL,MAAOvW,EAAIwW,EAAW,IAAI,EAC1B,OAAQxW,EAAIwW,EAAW,IAAI,EAC3B,aAAcxW,EAAIwW,EAAW,KAAO,CAAC,EAErC,QAAS,CACP,MAAOxW,EAAIwW,EAAW,IAAI,EAC1B,OAAQxW,EAAIwW,EAAW,IAAI,EAC3B,aAAcxW,EAAIwW,EAAW,KAAO,CAAC,CACvC,CACF,CACF,CAAC,CACH,CAEgB,SAAAJ,GAAoBvV,EAA8B,CAChE,KAAM,CAAC,MAAAD,CAAK,EAAIC,EACV,CAAC,KAAAa,CAAI,EAAId,EAAM,OAAO,MAE5B,MAAO,CACL,MAAO,OACP,OAAQ,OACR,MAAOc,EAAK,GACZ,WAAY,SACZ,eAAgB,SAChB,cAAe,YACf,UAAW,SACX,aAAc,MAEd,kBAAmB,CACjB,QAAS,MACX,CACF,CACF,CAEA,SAASwU,IAAiC,CACxC,MAAO,CACL,YAAa,MACb,OAAQ,sBACV,CACF,CAEA,SAASC,IAA+B,CACtC,MAAO,CACL,YAAa,MAEb,4BAA6B,CAC3B,gBAAiB,MACjB,cAAe,OACjB,CACF,CACF,CChIA,MAAMd,GAAOC,EAAO,IAClBgB,GACAP,GAAY,IACd,EAEMU,GAAQnB,EAAO,IAAIS,GAAY,KAAK,EAEpCW,GAAWpB,EAAO,QAAQS,GAAY,QAAQ,EAE9CY,GAASrB,EAAO,QAAQS,GAAY,MAAM,EAE1Ca,GAAWtB,EAAO,IAAIS,GAAY,QAAQ,EAKnCc,GAASpB,EAAW,SAC/B5U,EACA0M,EACA,CACA,KAAM,CACJ,GAAIuJ,EACJ,MAAOC,EAAW,OAClB,IAAAC,EACA,MAAAC,EACA,SAAAC,EACA,iBAAAC,EACA,cAAeC,EACf,iBAAAC,EACA,OAAAC,EAAS,SACT,KAAMC,EAAW,KACdzB,CACL,EAAIjV,EACE2W,EAAKC,GAAQ,mBAAmBX,CAAM,EAAIA,EAAS,MACnDhV,EAAOiB,EAAawU,CAAQ,EAC5B3W,EAAQsL,GAAS,EACjBpE,EAAQlH,EAAM,OAAO,MAAM,KAAKmW,IAAanW,EAAM,OAAO,MAAM,KAAK,KAIrE8W,GADa9W,EAAM,OAAO,OAAO,MAAMkB,EAAK,KAAOlB,EAAM,OAAO,OAAO,MAAM,IACvD,KACtB+W,EAAUD,EAAW,EAErBE,EAAYC,GAAW,GAAA,GACvB,CAACC,EAAeC,CAAgB,EAAIpU,EACxC0T,GAAoBD,GAAqB,QAC3C,EAEM,CAACY,EAAaC,CAAc,EAAItU,EAAkB,EAAK,EAEvDuU,EAAU,gBAAgBN,IAEhC5T,EAAU,IAAM,CACd,GAAI8T,IAAkBV,EAAmB,OAGzC,MAAMe,EAAM,sBAAsB,IAAMJ,EAAiBX,CAAiB,CAAC,EAE3E,MAAO,IAAM,qBAAqBe,CAAG,CACvC,EAAG,CAACL,EAAeV,CAAiB,CAAC,EAErCpT,EAAU,IAAM,CACVgT,GAAKiB,EAAe,EAAK,CAC/B,EAAG,CAACjB,CAAG,CAAC,EAER,MAAMoB,EAAmBC,EAAY,IAAM,CACzCJ,EAAe,EAAI,EAEfd,GACFA,EAAiB,IAAI,MAAM,kCAAkC,CAAC,CAElE,EAAG,CAACA,CAAgB,CAAC,EAEfmB,EAAerV,EAAQ,IAAMnB,EAAK,IAAK+D,GAAOA,IAAM,EAAI,EAAIA,EAAI,CAAE,EAAG,CAAC/D,CAAI,CAAC,EAEjF,OACE8J,EAAA,cAACyJ,GAAA,CACC,GAAImC,EACJ,UAAS,OAAOA,GAAO,SAAWA,EAAK,OACvC,UAAQ,SACP,GAAG1B,EACJ,MAAOhU,EACP,OAAQgG,EACR,aAAYmP,EACZ,sBAAqBa,EACrB,cAAaR,EACb,IAAK/J,EACL,MAAO0J,GAEPrL,EAAA,cAAC6K,GAAA,KACC7K,EAAA,cAAC,MAAA,CAAI,MAAM,KAAK,OAAO,IAAI,QAAQ,WAAW,KAAK,MAAA,EACjDA,EAAA,cAAC,OAAA,CACC,EAAE,+FACF,KAAM9D,CAAAA,CACR,CACF,CACF,EAEC,CAACkQ,GAAehB,GACfpL,EAAA,cAAC,MAAI,CAAA,QAAS,OAAO8L,KAAYA,IAAY,KAAK,QAChD9L,EAAA,cAAC,YACCA,EAAA,cAAC,WAAQ,GAAIsM,EAAS,oBAAoB,oBAAoB,MAAM,IAAI,OAAO,GAC7EtM,EAAAA,EAAA,cAAC,QAAM,CAAA,KAAMoL,EAAK,MAAM,IAAI,OAAO,IAAI,QAASoB,CAAAA,CAAkB,CACpE,CACF,EAEAxM,EAAA,cAAC,SAAA,CAAO,GAAI+L,EAAS,GAAIA,EAASA,EAAAA,EAAY,KAAM,QAAQO,KAAY,EACxEtM,EAAA,cAAC8K,GAAA,CACC,GAAIiB,EACJ,GAAIA,EACJ,GAAIA,EACJ,GAAIA,EACJ,aAAa,oBAAA,CACf,EACA/L,EAAA,cAAC+K,GAAA,CACC,GAAIgB,EACJ,GAAIA,EACJ,GAAIA,EACJ,GAAIA,EACJ,OAAQ7P,EACR,aAAa,qBACf,CACF,GAGAkQ,GAAe,CAAChB,IAAQE,GACxBtL,EAAA,cAAAA,EAAA,cACEA,EAAA,cAACgL,GAAA,KACChL,EAAA,cAAC4J,GAAA,CAAK,GAAG,OAAO,KAAM8C,CAAAA,EACpB1M,EAAA,cAAC,SAAQsL,KAAAA,CAAS,CACpB,CACF,CACF,CAEJ,CAEJ,CAAC,EC9JD,SAASqB,GAAkC1X,EAA2C,CACpF,KAAM,CAAC,MAAAD,CAAK,EAAIC,EACV,CAAC,OAAA0V,EAAQ,MAAApW,CAAK,EAAIS,EAAM,OAE9B,OAAOV,EAAYC,EAAOU,EAAM,MAAQiB,GAAS,CAC/C,MAAM0U,EAAaD,EAAO,MAAMzU,GAEhC,OAAK0U,EAEE,CACL,aAAcxW,EAAIwW,EAAW,KAAO,CAAC,EACrC,SAAUxW,EAAIwW,EAAW,IAAI,EAC7B,OAAQxW,EAAIwW,EAAW,IAAI,CAC7B,EANwB9W,EAO1B,CAAC,CACH,CAEA,SAAS8Y,GAAwB3X,EAAmB,CAClD,KAAM,CAAC,MAAAD,CAAK,EAAIC,EAEhB,OAAO2S;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA,iBASQxT,EAAIY,EAAM,OAAO,MAAM,EAAE;AAAA;AAAA;AAAA;AAAA;AAAA,GAM1C,CAEA,MAAMyU,GAAOC,EAAO,IAClBiD,GACAC,EACF,EAeaC,GAAgBhD,EAAW,SACtC5U,EACA0M,EACA,CACA,KAAM,CAAC,MAAAmL,EAAO,KAAMnB,EAAW,CAAC,EAAI1W,EAC9BiB,EAAOiB,EAAawU,CAAQ,EAC5BoB,EAAc1V,EAAQ,IAAMnB,EAAK,IAAK+D,GAAOA,IAAM,EAAI,EAAIA,EAAI,CAAE,EAAG,CAAC/D,CAAI,CAAC,EAEhF,OACE8J,EAAA,cAACyJ,GAAA,CAAK,MAAOvT,EAAM,UAAQ,gBAAgB,IAAKyL,CAAAA,EAC9C3B,EAAA,cAAC4J,GAAA,CAAK,GAAG,OAAO,KAAMmD,CACpB/M,EAAAA,EAAA,cAAC,SAAQ8M,KAAAA,CAAM,CACjB,CACF,CAEJ,CAAC,EC5EM,SAASE,GACdvN,EACoC,CAGpC,OAFsB,MAAM,QAAQA,CAAQ,EAAIA,EAAW,CAACA,CAAQ,GAE/C,OAClBwN,GAASC,GAAUD,CAAI,GAAKE,GAAWF,CAAI,GAAK,OAAOA,GAAS,QACnE,CACF,CCDA,MAAMG,GAAcxF;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA,EAYpB,SAASyF,IAAmB,CAC1B,OAAOD,EACT,CAEA,SAASE,GAA+BrY,EAA2C,CACjF,KAAM,CAAC,MAAAD,CAAK,EAAIC,EACV,CAAC,OAAA0V,EAAQ,MAAApW,CAAK,EAAIS,EAAM,OAE9B,OAAOV,EAAYC,EAAOU,EAAM,MAAQiB,GAAS,CAC/C,MAAM0U,EAAaD,EAAO,MAAMzU,GAEhC,OAAK0U,EAEE,CACL,gBAAiB,CACf,WAAYxW,EAAIwW,EAAW,QAAQ,CACrC,CACF,EANwB9W,EAO1B,CAAC,CACH,CAEA,MAAM2V,GAAOC,EAAO,IAA2B4D,GAAgCD,EAAgB,EAgBlFE,GAAc1D,EAAW,SACpC5U,EACA0M,EACA,CACA,KAAM,CACJ,SAAUoI,EACV,UAAWyD,EAAgB,EAC3B,KAAM7B,EAAW,KACdzB,CACL,EAAIjV,EACEwK,EAAWuN,GAAuBjD,CAAY,EAAE,OACnD0D,GAAU,OAAOA,GAAU,QAC9B,EACMC,EAAY,KAAK,IAAIF,EAAe,CAAC,EACrCtX,EAAOiB,EAAawU,CAAQ,EAE5B1E,EAAMxH,EAAS,OACfkO,EAAeD,EAAY,EAC3BE,EAAa3G,EAAM0G,EACnBE,EAAkBD,EAAa,EAAInO,EAAS,MAAMmO,EAAY3G,CAAG,EAAIxH,EAE3E,OACEO,EAAA,cAACyJ,GAAA,CAAK,UAAQ,cAAe,GAAGS,EAAW,IAAKvI,EAAK,MAAOzL,CACzD+Q,EAAAA,IAAQ,GACPjH,EAAA,cAAC,WACCA,EAAA,cAAC6M,GAAA,CAAc,MAAO5F,CAAK,CAAA,CAC7B,EAGDA,IAAQ,GAAK2G,EAAa,GACzB5N,EAAA,cAAC,MACCA,KAAAA,EAAA,cAAC6M,GAAA,CAAc,MAAOe,EAAY,KAAM1X,EAAM,CAChD,EAGD2X,EAAgB,IAAI,CAACJ,EAAOK,IAC3B9N,EAAA,cAAC,MAAI,CAAA,IAAK,OAAO8N,CAAU,CAAA,EAAIC,GAAaN,EAAO,CAAC,KAAAvX,CAAI,CAAC,CAAE,CAC5D,CACH,CAEJ,CAAC,EC9DKuT,GAAOC,EAAO,IAOlBjH,GACAsB,GACArB,GACAiD,GACA6C,GACAC,EACF,EAKauF,EAAMnE,EAAW,SAC5B5U,EACA0M,EACA,CACA,KAAM,CACJ,GAAIuJ,EAAS,MACb,OAAA3E,EACA,YAAAC,EACA,UAAAC,EACA,QAAA1D,EAAU,QACV,KAAAkB,EACA,OAAAhB,EACA,OAAAgL,EAAS,EACT,QAAAC,EACA,QAAAC,EACA,UAAAC,EACA,YAAAC,EACA,aAAAC,EACA,WAAAC,EACA,SAAArL,EACA,QAAAsL,EAAU,EACV,SAAAC,EACA,SAAAC,EACA,WAAAC,EACA,aAAAC,EACA,cAAAC,EACA,YAAAC,EACA,IAAA1I,EACA,SAAAC,EACA,OAAAC,EACA,OAAAtD,KACGkH,CACL,EAAIjV,EAEJ,OACE+K,EAAA,cAACyJ,GAAA,CACC,UAAS,OAAOyB,GAAW,SAAWA,EAAS,OAC/C,UAAQ,MACP,GAAGhB,EACJ,QAAS/S,EAAaoP,CAAM,EAC5B,aAAcpP,EAAaqP,CAAW,EACtC,WAAYrP,EAAasP,CAAS,EAClC,SAAUtP,EAAa4L,CAAO,EAC9B,MAAO5L,EAAa8M,CAAI,EACxB,QAAS9M,EAAa8L,CAAM,EAC5B,QAAS9L,EAAa8W,CAAM,EAC5B,SAAU9W,EAAa+W,CAAO,EAC9B,SAAU/W,EAAagX,CAAO,EAC9B,WAAYhX,EAAaiX,CAAS,EAClC,aAAcjX,EAAakX,CAAW,EACtC,cAAelX,EAAamX,CAAY,EACxC,YAAanX,EAAaoX,CAAU,EACpC,UAAWpX,EAAa+L,CAAQ,EAChC,SAAU/L,EAAaqX,CAAO,EAC9B,UAAWrX,EAAasX,CAAQ,EAChC,UAAWtX,EAAauX,CAAQ,EAChC,YAAavX,EAAawX,CAAU,EACpC,cAAexX,EAAayX,CAAY,EACxC,eAAgBzX,EAAa0X,CAAa,EAC1C,aAAc1X,EAAa2X,CAAW,EACtC,KAAM3X,EAAaiP,CAAG,EACtB,UAAWjP,EAAakP,CAAQ,EAChC,QAASlP,EAAamP,CAAM,EAC5B,QAASnP,EAAa6L,CAAM,EAC5B,GAAIkI,EACJ,IAAKvJ,CAEJ1M,EAAAA,EAAM,QACT,CAEJ,CAAC,ECzHM,SAAS8Z,GACd9Z,EAC4B,CAC5B,KAAM,CAAC,QAAAsU,EAAS,OAAAC,EAAQ,MAAAxU,CAAK,EAAIC,EAC3B,CAAC,MAAAO,CAAK,EAAIR,EAAM,OAEtB,OAAO4S;AAAAA;AAAAA;AAAAA,MAGH2B,GACF3B;AAAAA;AAAAA;AAAAA;AAAAA,MAIE4B,GACF5B;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA,qBAKiBpS,EAAM,KAAK;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,GAahC,CCVA,MAAMiU,GAAOC,EAAO,IAKjB3S,GAAqBC,GAA0B+X,EAAc,EAE1DpF,GAAuBD,EAAO;AAAA;AAAA;AAAA;AAAA;AAAA,EAUvBsF,GAAQnF,EAAW,SAC9B5U,EACA0M,EACA,CACA,KAAM,CACJ,OAAAmI,EACA,MAAArG,EACA,SAAUsG,EACV,MAAArN,EAAQ,GACR,KAAAxG,EAAO,EACP,aAAA8T,EACA,OAAAC,KACGC,CACL,EAAIjV,EAEJ,IAAIwK,EAAWsK,EAEf,OAAIC,IAAiB,WACnBvK,EAAWO,EAAA,cAAC2J,GAAA,KAAsBlK,CAAS,EAE3CA,EAAWO,EAAA,cAAC,OAAA,KAAMP,CAAS,EAI3BO,EAAA,cAACyJ,GAAA,CACC,UAAQ,QACP,GAAGS,EACJ,QAASJ,EACT,OAAQ3S,EAAasM,CAAK,EAC1B,OAAQ/G,EACR,MAAOvF,EAAajB,CAAI,EACxB,QAAS+T,EACT,IAAKtI,CAEJlC,EAAAA,CACH,CAEJ,CAAC,EC5Ee,SAAAwP,GAAWha,EAAgD,CACzE,KAAM,CAAC,MAAAia,EAAO,MAAAlH,EAAO,MAAAhT,CAAK,EAAIC,EACxBka,EAAUna,EAAM,OAAO,MAAMka,IAAU,UAAY,QAAU,SAC7DhT,EAAQiT,EAAQnH,IAAUmH,EAAQ,QAExC,MAAO,CACL,gBAAiBjT,EAAM,QAAQ,GAC/B,MAAOA,EAAM,QAAQ,GACrB,UAAW,mBAAmBA,EAAM,QAAQ,SAC5C,OAAQ,UAER,kBAAmB,CACjB,QAAS,cACX,CACF,CACF,CCEA,MAAMuN,GAAOC,EAAOsE,CAAG,EACrBtF,GACAuG,EACF,EAKaG,GAAQvF,EAAW,SAC9B5U,EACA0M,EACA,CACA,KAAM,CACJ,SAAAlC,EACA,SAAAxJ,EACA,KAAA0G,EAAO,UACP,QAAA6R,EAAU,EACV,OAAA7F,EAAS,EACT,KAAArL,EAAO,aACJ4M,CACL,EAAIjV,EAEJ,OACE+K,EAAA,cAACyJ,GAAA,CACC,UAAQ,QACP,GAAGS,EACJ,MAAOvN,EACP,MAAOW,EACP,QAASnG,EAAawR,CAAM,EAC5B,QAASxR,EAAaqX,CAAO,EAC7B,IAAK7M,CAEL3B,EAAAA,EAAA,cAACgP,GAAA,CAAM,KAAM/Y,CAAWwJ,EAAAA,CAAS,CACnC,CAEJ,CAAC,EClCKgK,GAAOC,EAAOsE,CAAG,EACrBjK,GACAZ,EACF,EAKakM,GAAOxF,EAAW,SAC7B5U,EACA0M,EACA,CACA,KAAM,CAAC,MAAA8B,EAAO,GAAAmI,EAAI,UAAA9H,EAAY,MAAO,IAAAH,EAAK,QAAAE,EAAS,KAAAD,KAASsG,CAAS,EAAIjV,EAEzE,OACE+K,EAAA,cAACyJ,GAAA,CACC,UAAQ,OACP,GAAGS,EACJ,OAAQ/S,EAAasM,CAAK,EAC1B,WAAYtM,EAAa2M,CAAS,EAClC,KAAM3M,EAAawM,CAAG,EACtB,SAAUxM,EAAa0M,CAAO,EAC9B,MAAO1M,EAAayM,CAAI,EACxB,YAAagI,EACb,IAAKjK,CAAAA,CACP,CAEJ,CAAC,ECpCK2N,GAASC;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA,EAUT9F,GAAOC,EAAOE,EAAI;AAAA;AAAA,iBAEP0F;AAAAA;AAAAA,EAOJE,GAAU3F,EAAW,SAChC5U,EACA0M,EACA,CACA,OACE3B,EAAA,cAACyJ,GAAA,CAAK,UAAQ,UAAW,GAAGxU,EAAO,IAAK0M,CACtC3B,EAAAA,EAAA,cAACyP,GAAA,IAAY,CACf,CAEJ,CAAC,ECnCe,SAAAC,EACd5Z,EACAoG,EACAyT,EAAY,GACD,CAVb,IAAAC,EAAAC,EAAAC,EAAAC,EAAAC,EAAAC,EAAAC,EAAAC,EAWE,MAAO,CAGL,8BAA+Bra,EAAK,OAAO,QAC3C,4BAA6BA,EAAK,OAAO,MACzC,+BAAgCA,EAAK,OAAO,SAC5C,8BAA+BA,EAAK,OAAO,QAC3C,0BAA2BA,EAAK,UAGhC,kBAAmBoG,EAAM,GACzB,kBAAmByT,EACf,4BAA4BzT,EAAM,cAAcA,EAAM,KAAOA,EAAM,aACnE,OACJ,kBAAmBA,EAAM,GACzB,sBAAuBA,EAAM,OAC7B,yBAAyB0T,EAAA1T,EAAM,QAAN,KAAA0T,OAAAA,EAAa,GACtC,0BAA0BC,EAAA3T,EAAM,SAAN,KAAA,OAAA2T,EAAc,GACxC,wBAAwBC,EAAA5T,EAAM,OAAN,YAAA4T,EAAY,GACpC,wBAAwBC,EAAA7T,EAAM,OAAN,KAAA6T,OAAAA,EAAY,GACpC,wBAAwBC,EAAA9T,EAAM,OAAN,KAAA,OAAA8T,EAAY,GACpC,8BAA8BC,EAAA/T,EAAM,WAAN,KAAA,OAAA+T,EAAgB,KAC9C,4BAA4BC,EAAAhU,EAAM,WAAN,KAAAgU,OAAAA,EAAgB,GAG5C,qBAAqBC,EAAAjU,EAAM,OAAN,KAAA,OAAAiU,EAAY,GACjC,6BAA8BjU,EAAM,OACpC,6BAA8BA,EAAM,MACtC,CACF,CC/BgB,SAAAkU,IAA+C,CAC7D,OAAOxI;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA,GA8BT,CAEA,MAAMyI,GAAc,CAAC,OAAQ,CAAC,MAAO,CAAC,CAAC,EAKhC,SAASC,GACdrb,EACa,CAjDf,IAAA2a,EAAAC,EAkDE,KAAM,CAAC,MAAAX,EAAO,MAAAla,CAAK,EAAIC,EACjB,CAAC,UAAAmP,CAAS,EAAIpP,EAAM,OACpBc,EAAOd,EAAM,OAAO,MAAM,KAC1B2H,EAAO3H,EAAM,OAAO,MAAM,OAAOka,IAAUla,EAAM,OAAO,MAAM,OAAO,QACrEkH,EAAQS,EAAK1H,EAAM,QAAU0H,EAAK,QAClCsF,EAAS,CAAC,MAAOoO,GAAY,OAAO,MAAO,MAAO,0BAA0B,EAElF,MAAO,CACLX,EAAgB5Z,EAAMoG,EAAM,OAAO,EACnC,CACE,gBAAiB,uBACjB,MAAO,uBACP,UAAWgI,GAAqBjC,CAAM,EACtC,sCAAuCyN,EAAgB5Z,EAAMoG,EAAM,QAAQ,EAC3E,gCAAiC,CAC/B,UAAW,CACT,UAAWiI,GAAe,CAAC,KAAArO,EAAM,OAAAmM,EAAQ,UAAAmC,CAAS,CAAC,CACrD,EACA,8BAA+B,CAC7B,UAAWF,GAAqBjC,CAAM,CACxC,EACA,wBAAyB,CACvB,UAAWyN,EAAgB5Z,EAAMoG,EAAM,OAAO,EAC9C,WAAYwT,EAAgB5Z,EAAMoG,EAAM,OAAO,CACjD,EACA,mBAAoBwT,EAAgB5Z,EAAMoG,EAAM,OAAO,CACzD,CACF,GACA2T,GAAAD,EAAA5a,EAAM,OAAO,SAAb,KAAA,OAAA4a,EAAqB,SAArB,YAAAC,EAA6B,IAC/B,EAAE,OAAO,OAAO,CAClB,CC3CA,MAAMpG,GAAOC,EAAO,OAElBhB,GAAuB0H,GAAkBE,EAAiB,EAEtDC,GAAa7G,EAAO;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAkBb8G,GAAS3G,EAAW,SAC/B5U,EACA0M,EACA,CACA,KAAM,CACJ,SAAAlC,EACA,SAAAgR,EACA,SAAAxa,EACA,KAAAya,EACA,UAAAC,EACA,QAASC,EAAc,SACvB,QAAAC,EACA,KAAAlU,EAAO,UACP,QAASmU,EAAc,EACvB,SAAUC,EACV,SAAUC,EACV,WAAYC,EACZ,cAAeC,EACf,YAAaC,EACb,aAAcC,EACd,OAAQC,EAAa,EACrB,SAAAC,EACA,MAAOC,EAAY,EACnB,KAAAC,EACA,UAAAva,EACA,KAAAqG,EAAO,UACP,KAAAmU,EAAO,YACJvH,CACL,EAAIjV,EAEE4O,EAAU1M,EAAayZ,CAAW,EAClCpC,EAAUrX,EAAa2Z,CAAW,EAClCrC,EAAWtX,EAAa4Z,CAAY,EACpCrC,EAAWvX,EAAa6Z,CAAY,EACpCrC,EAAaxX,EAAa8Z,CAAc,EACxCpC,GAAgB1X,EAAa+Z,CAAiB,EAC9CpC,EAAc3X,EAAaga,CAAe,EAC1CvC,EAAezX,EAAaia,CAAgB,EAC5CzI,GAASxR,EAAaka,CAAU,EAChC3N,EAAQvM,EAAaoa,CAAS,EAE9Bvc,EAAQsL,KAERoR,EAAWra,EACf,KAAO,CAEL,QAAAmX,EACA,SAAAC,EACA,SAAAC,EACA,WAAAC,EACA,cAAAE,GACA,YAAAC,EACA,aAAAF,CACF,GACA,CAACJ,EAASC,EAAUC,EAAUC,EAAYE,GAAeC,EAAaF,CAAY,CACpF,EAEA,OACE5O,EAAA,cAACyJ,GAAA,CACC,UAAQ,SACP,GAAGS,EACJ,MAAOvN,EACP,QAASgM,GACT,MAAOrL,EACP,gBAAe,QAAQuT,GAAWJ,CAAQ,EAC1C,gBAAea,EAAW,GAAK,OAC/B,SAAU,QAAQT,GAAWJ,CAAQ,EACrC,IAAK9O,EACL,KAAM8P,CAEL,EAAA,QAAQZ,CAAO,GACd7Q,EAAA,cAACuQ,GAAA,KACCvQ,EAAA,cAACwP,GAAA,IAAQ,CACX,GAGAkB,GAAQc,GAAQb,IAChB3Q,EAAA,cAACgO,EAAA,CAAI,GAAG,OAAQ,GAAG0D,CACjB1R,EAAAA,EAAA,cAACqP,GAAA,CAAK,GAAG,OAAO,QAASxL,CAAAA,EACtB6M,GACC1Q,EAAA,cAAC4J,GAAA,CAAK,KAAM3T,CAAAA,EACT0b,GAAejB,CAAI,GAAKA,EACxBkB,GAAmBlB,CAAI,GAAKmB,GAAcnB,CAAI,CACjD,EAGDc,GACCxR,EAAA,cAACgO,EAAA,CACC,KAAM2C,EAAY,EAAI,OACtB,WAAYD,EAAOhN,EAAQ,OAC3B,YAAaiN,EAAYjN,EAAQ,MAEjC1D,EAAAA,EAAA,cAAC4J,GAAA,CACC,MAAO3S,EACP,KAAMhB,EACN,aAAa,WACb,OAAQjB,EAAM,OAAO,OAAO,UAAA,EAE3Bwc,CACH,CACF,EAGDb,GACC3Q,EAAA,cAAC4J,GAAA,CAAK,KAAM3T,CACT0b,EAAAA,GAAehB,CAAS,GAAKA,EAC7BiB,GAAmBjB,CAAS,GAAKkB,GAAclB,CAAS,CAC3D,CAEJ,CACF,EAGDlR,GACCO,EAAA,cAACgO,EAAA,CAAI,GAAG,OAAQ,GAAG0D,CAAAA,EAChBjS,CACH,CAEJ,CAEJ,CAAC,EC7Ke,SAAAqS,GACd7c,EACwE,CACxE,MAAO,CAAC8c,GAAc9c,CAAK,EAAG+c,GAAe/c,CAAK,CAAC,CACrD,UAEgB8c,GAAc9c,EAAgE,CAC5F,KAAM,CAAC,WAAAgd,EAAY,MAAAjd,CAAK,EAAIC,EACtByO,EAAQ1O,EAAM,OAAO,MAE3B,OAAO4S;AAAAA,MACHqK,GACFrK;AAAAA,yBACqBlE,EAAM,QAAQA,EAAM;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,GA0B7C,CAEgB,SAAAsO,GAAe/c,EAAgE,CA/C/F,IAAA2a,EAAAC,EAgDE,KAAM,CAAC,WAAAoC,EAAY,WAAAC,EAAY,MAAAld,CAAK,EAAIC,EAClC,CAAC,UAAAmP,CAAS,EAAIpP,EAAM,OACpB,CAAC,KAAAc,EAAM,KAAAqc,CAAI,EAAInd,EAAM,OAAO,MAC5BiN,EAAS,CAAC,MAAO,EAAG,MAAO,0BAA0B,EAE3D,OAAO2F;AAAAA,MACH8H,EAAgB5Z,EAAMqc,EAAK,QAASF,CAAU;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,UAa1CvC,EAAgB5Z,EAAMqc,EAAK,SAAUF,CAAU;AAAA;AAAA;AAAA;AAAA;AAAA,YAK7CvC,EAAgB5Z,EAAMqc,EAAK,QAASF,CAAU;AAAA;AAAA;AAAA;AAAA,YAI9CvC,EAAgB5Z,EAAMqc,EAAK,SAAUF,CAAU;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,gBAM3CvC,EAAgB5Z,EAAMqc,EAAK,QAASF,CAAU;AAAA;AAAA;AAAA;AAAA,gBAI9CvC,EAAgB5Z,EAAMqc,EAAK,QAASF,CAAU;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,0CAMpBC,EAC5B/N,GAAe,CAAC,KAAArO,EAAM,OAAAmM,EAAQ,UAAAmC,CAAS,CAAC,EACxC;AAAA;AAAA;AAAA;AAAA,0CAI4B8N,EAAahO,GAAqBjC,CAAM,EAAI;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,UAW5EyN,EAAgB5Z,EAAMqc,EAAK,SAAUF,CAAU;AAAA;AAAA;AAAA;AAAA;AAAA,YAK7CvC,EAAgB5Z,EAAMqc,EAAK,QAASF,CAAU;AAAA;AAAA;AAAA;AAAA,YAI9CvC,EAAgB5Z,EAAMqc,EAAK,SAAUF,CAAU;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,gBAM3CvC,EAAgB5Z,EAAMqc,EAAK,QAASF,CAAU;AAAA;AAAA;AAAA;AAAA,gBAI9CvC,EAAgB5Z,EAAMqc,EAAK,QAASF,CAAU;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,0CAMpBC,EAC5B/N,GAAe,CAAC,KAAArO,EAAM,OAAAmM,EAAQ,UAAAmC,CAAS,CAAC,EACxC;AAAA;AAAA;AAAA;AAAA,0CAI4B8N,EAAahO,GAAqBjC,CAAM,EAAI;AAAA;AAAA;AAAA;AAAA;AAAA,OAKhF4N,GAAAD,EAAA5a,EAAM,OAAO,SAAb,KAAA4a,OAAAA,EAAqB,OAArB,KAAA,OAAAC,EAA2B;AAAA,GAEjC,CCzGA,MAAMpG,GAAOC,EAAOsE,CAAG,EAKrBhM,GAAuB0G,GAAuBU,GAAuB0I,EAAS,EAKnEM,GAAOvI,EAAW,SAC7B5U,EACA0M,EACA,CACA,KAAM,CACJ,qBAAsBgO,EAAY,GAClC,qBAAsBvL,EAAY,GAClC,GAAI8G,EACJ,OAAAjJ,EACA,UAAAC,EACA,YAAAC,EACA,aAAAC,EACA,WAAAC,EACA,QAAAgQ,EACA,OAAA1J,EAAS,EACT,OAAAjJ,EACA,SAAA4R,EACA,OAAAxI,EACA,KAAMwJ,EAAW,aACdpI,CACL,EAAIjV,EAEE2W,EAAKgG,GAAmB1G,CAAM,EAAIA,EAAS,MAC3CqH,EAAYpS,GAAa,EACzB7C,EAAOgV,IAAa,UAAYC,EAAU,KAAOD,EAEvD,OACEtS,EAAA,cAACI,GAAA,CAAmB,OAAQV,EAAQ,KAAMpC,CAAAA,EACxC0C,EAAA,cAACyJ,GAAA,CACC,UAAS,OAAOmC,GAAO,SAAWA,EAAK,OACvC,cAAa2G,EAAU,OACvB,UAAQ,OACR,YAAWjV,EACV,GAAG4M,EACJ,QAAS/S,EAAa8K,CAAM,EAC5B,WAAY9K,EAAa+K,CAAS,EAClC,aAAc/K,EAAagL,CAAW,EACtC,cAAehL,EAAaiL,CAAY,EACxC,YAAajL,EAAakL,CAAU,EACpC,WAAYsN,EACZ,WAAYvL,EACZ,QAASjN,EAAawR,CAAM,EAC5B,QAASxR,EAAa2R,CAAM,EAC5B,MAAOxL,EACP,iBAAgBqS,EAAY,GAAK,OACjC,eAAc0C,EAAU,GAAK,OAC7B,gBAAef,EAAW,GAAK,OAC/B,YAAa1F,EACb,IAAKjK,EACL,SAAU2P,CACZ,CAAA,CACF,CAEJ,CAAC,ECrGe,SAAAkB,IAAiD,CAC/D,OAAO5K;AAAAA;AAAAA;AAAAA,GAIT,CAEgB,SAAA6K,GAAmBxd,EAA+C,CAChF,KAAM,CAAC,MAAAD,CAAK,EAAIC,EACViH,EAAQlH,EAAM,OAAO,MAAM,MAC3B,CAAC,UAAAoP,EAAW,MAAAmE,EAAO,OAAAI,CAAM,EAAI3T,EAAM,OAEzC,OAAO4S;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA,gBAeOxT,EAAImU,EAAM,SAAS,IAAI;AAAA,eACxBnU,EAAImU,EAAM,SAAS,IAAI;AAAA;AAAA,oBAElBrE,GAAqB,CACjC,MAAOhI,EAAM,QAAQ,QAAQ,OAC7B,MAAOqM,EAAM,OAAO,KACtB,CAAC;AAAA,uBACgBnU,EAAIuU,EAAO,EAAE;AAAA;AAAA,0BAEVzM,EAAM,QAAQ,QAAQ;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,oBAiB5BiI,GAAe,CAC3B,OAAQ,CAAC,MAAOoE,EAAM,OAAO,MAAO,MAAOrM,EAAM,QAAQ,QAAQ,MAAM,EACvE,UAAAkI,CACF,CAAC;AAAA;AAAA;AAAA;AAAA,oBAIaF,GAAqB,CACjC,MAAOhI,EAAM,QAAQ,QAAQ,OAC7B,MAAOqM,EAAM,OAAO,KACtB,CAAC;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,0BAQmBrM,EAAM,QAAQ,SAAS;AAAA,oBAC7BgI,GAAqB,CACjC,MAAOqE,EAAM,OAAO,MACpB,MAAOrM,EAAM,QAAQ,SAAS,MAChC,CAAC;AAAA,eACQA,EAAM,QAAQ,SAAS;AAAA;AAAA;AAAA;AAAA,0BAIZA,EAAM,QAAQ,SAAS;AAAA,oBAC7BgI,GAAqB,CACjC,MAAOqE,EAAM,OAAO,MACpB,MAAOrM,EAAM,QAAQ,SAAS,MAChC,CAAC;AAAA,eACQA,EAAM,QAAQ,SAAS;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,GAOtC,CClFA,MAAMuN,GAAOC,EAAO,IAAI8I,EAAkB,EACpCE,GAAQhJ,EAAO,MAAM+I,EAAkB,EAKhCE,GAAW9I,EAAW,SACjC5U,EACA2d,EACA,CACA,KAAM,CACJ,QAAAC,EACA,UAAAC,EACA,SAAArC,EACA,cAAAsC,EACA,eAAAjR,EACA,SAAAkR,EACA,MAAA9e,KACGgW,CACL,EAAIjV,EACE0M,EAAMD,GAAgBkR,CAAY,EAExC,OAAA/Q,GAAkBF,EAAKG,CAAc,EAErC1J,EAAU,IAAM,CACVuJ,EAAI,UAENA,EAAI,QAAQ,cAAgBoR,GAAiB,GAEjD,EAAG,CAACA,EAAepR,CAAG,CAAC,EAGrB3B,EAAA,cAACyJ,GAAA,CAAK,UAAWqJ,EAAW,UAAQ,WAAW,MAAO5e,CAAAA,EACpD8L,EAAA,cAAC0S,GAAA,CACC,iBAAgB,CAACjC,GAAYuC,EAAW,GAAK,OAC5C,GAAG9I,EACJ,QAAS2I,EACT,SAAUpC,GAAYuC,EACtB,KAAK,WACL,SAAUA,EACV,IAAKrR,CAAAA,CACP,EACA3B,EAAA,cAAC,OAAA,KACCA,EAAA,cAACiT,GAAA,IAAc,EACfjT,EAAA,cAACkT,GAAA,IAAW,CACd,CACF,CAEJ,CAAC,EC1DD,SAASC,GAA4B,CAAC,MAAAne,CAAK,EAAe,CACxD,MAAMkH,EAAQlH,EAAM,OAAO,MAAM,OAEjC,MAAO,CACL,WAAY,CAAC,MAAOkH,EAAM,MAAM,EAChC,cAAe,CAAC,MAAOA,EAAM,QAAQ,EACrC,eAAgB,CAAC,MAAOA,EAAM,SAAS,EACvC,cAAe,CAAC,MAAOA,EAAM,SAAS,EACtC,YAAa,CAAC,MAAOA,EAAM,OAAO,EAClC,YAAa,CAAC,MAAOA,EAAM,OAAO,EAClC,UAAW,CAAC,MAAOA,EAAM,KAAK,EAC9B,SAAU,CAAC,MAAOA,EAAM,IAAI,EAC5B,UAAW,CAAC,MAAOA,EAAM,KAAK,EAC9B,eAAgB,CAAC,MAAOA,EAAM,SAAS,EACvC,YAAa,CAAC,MAAOA,EAAM,OAAO,EAClC,aAAc,CAAC,MAAOA,EAAM,QAAQ,EACpC,YAAa,CAAC,MAAOA,EAAM,OAAO,EAClC,YAAa,CAAC,MAAOA,EAAM,OAAO,EAClC,WAAY,CAAC,MAAOA,EAAM,MAAM,EAChC,aAAc,CAAC,MAAOA,EAAM,QAAQ,EACpC,YAAa,CAAC,MAAOA,EAAM,OAAO,EAClC,OAAQ,CAAC,MAAOA,EAAM,EAAE,EACxB,cAAe,CAAC,MAAOA,EAAM,SAAS,EACtC,aAAc,CAAC,MAAOA,EAAM,QAAQ,EACpC,YAAa,CAAC,MAAOA,EAAM,OAAO,EAClC,WAAY,CAAC,MAAOA,EAAM,MAAM,EAChC,aAAc,CAAC,MAAOA,EAAM,QAAQ,EACpC,WAAY,CAAC,MAAOA,EAAM,MAAM,EAChC,aAAc,CAAC,MAAOA,EAAM,QAAQ,EACpC,iBAAkB,CAAC,MAAOA,EAAM,WAAW,EAC3C,mBAAoB,CAAC,MAAOA,EAAM,aAAa,EAC/C,gBAAiB,CAAC,MAAOA,EAAM,WAAW,EAC1C,UAAW,CAAC,MAAOA,EAAM,KAAK,EAC9B,aAAc,CAAC,MAAOA,EAAM,QAAQ,EACpC,WAAY,CAAC,MAAOA,EAAM,MAAM,EAChC,WAAY,CAAC,MAAOA,EAAM,MAAM,EAChC,QAAS,CAAC,MAAOA,EAAM,GAAG,EAC1B,SAAU,CAAC,MAAOA,EAAM,IAAI,EAC5B,QAAS,CAAC,MAAOA,EAAM,GAAG,EAC1B,aAAc,CAAC,MAAOA,EAAM,QAAQ,CACtC,CACF,CAEO,SAASkX,IAA+D,CAC7E,OAAOxL;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA,UAOCuL;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA,GAcV,CCpDA,MAAM1J,GAAOC,EAAO,IAA8B0J,GAAevc,EAAuB,EAK3Ewc,GAAOxJ,EAAW,SAC7B5U,EACA0M,EACA,CACA,KAAM,CAAC,SAAAlC,EAAU,SAAU6T,EAAc,KAAApd,EAAO,EAAG,OAAA+T,KAAWC,CAAS,EAAIjV,EACrEse,EAAW,OAAOD,GAAiB,SAAWA,EAAe,OAC7DE,EAAaD,EAAWE,GAAU,YAAYF,CAAe,EAAI,GAEvE,OACEvT,EAAA,cAACyJ,GAAA,CAAK,UAAQ,OAAQ,GAAGS,EAAW,MAAO/S,EAAajB,CAAI,EAAG,QAAS+T,EAAQ,IAAKtI,GAClF,EAAE4R,GAAYC,IAAexT,EAAA,cAAC,YAAMP,CAAS,EAC7C8T,GAAYC,GAAcxT,EAAA,cAACyT,GAAA,CAAU,OAAM,GAAC,SAAUF,EAAU,MAAO,OAAO9T,CAAQ,CAAA,CAAG,CAC5F,CAEJ,CAAC,EChCK6C,GAAwB,CAC5B,MAAO,OACP,OAAQ,QACV,EAEgB,SAAAoR,IAAgC,CAC9C,OAAOpR,EACT,UAEgBqR,GACd1e,EACa,CACb,KAAM,CAAC,MAAAD,CAAK,EAAIC,EACV,CAAC,UAAA2e,EAAW,MAAArf,CAAK,EAAIS,EAAM,OAEjC,OAAOV,EAAYC,EAAOU,EAAM,OAASJ,IAAS,CAChD,SAAUA,IAAQ,OAAS,OAAST,EAAIwf,EAAU/e,EAAI,CACxD,EAAE,CACJ,CCTA,MAAM4U,GAAOC,EAAOsE,CAAG,EACrB0F,GACAC,EACF,EAKaE,GAAYhK,EAAW,SAClC5U,EACA0M,EACA,CACA,KAAM,CAAC,GAAAiK,EAAI,MAAAkI,EAAQ,KAAM5J,CAAS,EAAIjV,EAEtC,OACE+K,EAAA,cAACyJ,GAAA,CACC,UAAQ,YACP,GAAGS,EACJ,OAAQ/S,EAAa2c,CAAK,EAC1B,YAAalI,EACb,IAAKjK,CAAAA,CACP,CAEJ,CAAC,ECxBK8H,GAAOC,EAAOsE,CAAG,EAA4BrJ,EAAmB,EAKzDoP,GAAOlK,EAAW,SAC7B5U,EACA0M,EACA,CACA,KAAM,CAAC,GAAAiK,EAAI,SAAAvG,EAAU,SAAAC,EAAU,SAAAF,EAAU,QAAAG,EAAS,IAAA5B,EAAK,KAAA8B,EAAM,KAAAC,EAAM,KAAAF,EAAM,SAAA/F,KAAayK,CAAS,EAC7FjV,EAEF,OACE+K,EAAA,cAACyJ,GAAA,CACC,UAAS,OAAOmC,GAAO,SAAWA,EAAK,OACvC,UAAQ,OACP,GAAG1B,EACJ,UAAW/S,EAAakO,CAAQ,EAChC,UAAWlO,EAAamO,CAAQ,EAChC,UAAWnO,EAAaiO,CAAQ,EAChC,SAAUjO,EAAaoO,CAAO,EAC9B,KAAMpO,EAAawM,CAAG,EACtB,MAAOxM,EAAasO,CAAI,EACxB,MAAOtO,EAAauO,CAAI,EACxB,MAAOvO,EAAaqO,CAAI,EACxB,YAAaoG,EACb,IAAKjK,CAAAA,EAEJlC,CACH,CAEJ,CAAC,ECvCe,SAAAuU,GACd/e,EAC4B,CAC5B,KAAM,CAAC,QAAAsU,EAAS,OAAAC,EAAQ,MAAAxU,CAAK,EAAIC,EAEjC,OAAO2S;AAAAA,MACH2B,GACF3B;AAAAA;AAAAA;AAAAA;AAAAA,MAIE4B,GACF5B;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA,qBAKiB5S,EAAM,OAAO,MAAM,KAAK;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,GA6B7C,CClBA,MAAMyU,GAAOC,EAAO,IAElBsK,GAAkBhd,GAA0BF,EAAqB,EAE7D6S,GAAuBD,EAAO;AAAA;AAAA;AAAA;AAAA;AAAA,EAUvBuK,GAAUpK,EAAW,SAChC5U,EACA0M,EACA,CACA,KAAM,CACJ,OAAAmI,EAAS,GACT,MAAArG,EACA,SAAUsG,EACV,MAAArN,EAAQ,GACR,KAAAxG,EAAO,EACP,aAAA8T,EACA,OAAAC,KACGC,CACL,EAAIjV,EAEJ,IAAIwK,EAAWsK,EAEf,OAAIC,IAAiB,aACnBvK,EAAWO,EAAA,cAAC2J,GAAA,KAAsBlK,CAAS,GAI3CO,EAAA,cAACyJ,GAAA,CACC,UAAQ,UACP,GAAGS,EACJ,QAASJ,EACT,OAAQ3S,EAAasM,CAAK,EAC1B,OAAQ/G,EACR,MAAOvF,EAAajB,CAAI,EACxB,QAAS+T,EACT,IAAKtI,CAAAA,EAEL3B,EAAA,cAAC,OAAA,KAAMP,CAAS,CAClB,CAEJ,CAAC,EC7Ee,SAAAyU,IAA6B,CAC3C,MAAO,CACL,WAAY,EAEZ,mBAAoB,CAClB,QAAS,OACX,EAEA,UAAW,CACT,QAAS,eACT,cAAe,QACjB,CACF,CACF,CAEO,SAASC,GAAiBlf,EAAkE,CACjG,KAAM,CAAC,MAAAD,CAAK,EAAIC,EAEhB,OAAOX,EAAYU,EAAM,OAAO,MAAOC,EAAM,OAASE,GAAe,CACnE,MAAMuO,EAAQtP,EAAIY,EAAM,OAAO,MAAMG,EAAW,EAEhD,MAAO,CACL,OAAQ,IAAIuO,UAAcA,IAC1B,UAAW,CAAC,QAAS,GAAGA,SAAaA,GAAO,CAC9C,CACF,CAAC,CACH,CCfA,MAAM+F,GAAOC,EAAOsE,CAAG,EAAmCkG,GAAiBC,EAAgB,EAK9EC,GAASvK,EAAW,SAC/B5U,EACA0M,EACA,CACA,KAAM,CAAC,GAAAiK,EAAI,SAAU7B,EAAc,MAAArG,KAAUwG,CAAS,EAAIjV,EAEpDwK,EAAWpI,EACf,IACE2V,GAAuBjD,CAAY,EAChC,OAAO,OAAO,EACd,IAAI,CAAC0D,EAAOjU,IAAQwG,EAAA,cAAC,MAAA,CAAI,IAAKxG,CAAAA,EAAMiU,CAAM,CAAM,EACrD,CAAC1D,CAAY,CACf,EAEA,OACE/J,EAAA,cAACyJ,GAAA,CAAK,UAAQ,SAAU,GAAGS,EAAW,OAAQ/S,EAAauM,CAAK,EAAG,YAAakI,EAAI,IAAKjK,CAAAA,EACtFlC,CACH,CAEJ,CAAC,ECtBD,SAAS4U,IAAW,CAClB,OAAOzM;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA,GAST,CAEA,MAAM6B,GAAOC,EAAO,IAAgChB,GAAuB2L,EAAQ,EAKtEC,GAAMzK,EAAW,SAC5B5U,EACA0M,EACA,CACA,KAAM,CAAC,SAAAlC,EAAU,SAAAxJ,EAAW,EAAG,QAAAuY,EAAU,EAAG,OAAA7F,EAAS,KAAMuB,CAAS,EAAIjV,EAExE,OACE+K,EAAA,cAACyJ,GAAA,CAAK,UAAQ,MAAO,GAAGS,EAAW,QAAS/S,EAAawR,CAAM,EAAG,IAAKhH,CACrE3B,EAAAA,EAAA,cAACgO,EAAA,CAAI,GAAG,OAAO,QAASQ,CAAAA,EACtBxO,EAAA,cAACqT,GAAA,CAAK,GAAG,OAAO,MAAK,GAAC,KAAMpd,CACzBwJ,EAAAA,CACH,CACF,CACF,CAEJ,CAAC,EC7CKtL,GAAM,OAAO,IAAI,oCAAoC,EAE3DgL,EAAYhL,IAAOgL,EAAYhL,KAAQiL,GAAkD,IAAI,EAEhF,MAAAmV,GACXpV,EAAYhL,ICMP,SAASqgB,GAAwBvf,EAAyD,CAC/F,KAAM,CAAC,SAAAwK,EAAU,QAAAlI,CAAO,EAAItC,EACtBhB,EAAqCoD,EAAQ,KAAO,CAAC,QAAS,EAAK,QAAAE,CAAO,GAAI,CAACA,CAAO,CAAC,EAE7F,OAAOyI,EAAA,cAACuU,GAAuB,SAAvB,CAAgC,MAAOtgB,CAAAA,EAAQwL,CAAS,CAClE,CCfA,MAAMgV,GAA6C,CACjD,QAAS,EACT,QAAS,IACX,EAKgB,SAAAC,IAAkD,CAChE,MAAMzgB,EAAQuL,GAAW+U,EAAsB,EAK/C,GAAItgB,IAAU,CAACiM,GAASjM,CAAK,GAAKA,EAAM,UAAY,GAClD,MAAM,IAAI,MAAM,2DAA2D,EAG7E,OAAOA,GAASwgB,EAClB,CCxBgB,SAAAE,GAAmBpgB,EAAiBuf,EAAyB,CAC3E,MAAMrc,EAAgB,CAEtB,EAAA,QAAS4P,EAAI,EAAGA,EAAI9S,EAAM,OAAQ8S,GAAK,EAC1B9S,EAAM8S,GAERyM,GACPrc,EAAI,KAAK4P,CAAC,EAId,OAAO5P,CACT,CAEgB,SAAAmd,GAAmBrgB,EAAiBuf,EAAyB,CAC3E,MAAMrc,EAAgB,CAAC,EAEvB,QAAS4P,EAAI,EAAGA,EAAI9S,EAAM,OAAQ8S,GAAK,EAC1B9S,EAAM8S,IAEPyM,GACRrc,EAAI,KAAK4P,CAAC,EAId,OAAO5P,CACT,CCRa,MAAAod,GAAehL,EAAW,SACrC5U,EACA0M,EACA,CACA,MAAM3M,EAAQsL,GACR,EAAA,CAAC,SAAAb,EAAU,MAAAlL,EAAQS,EAAM,OAAO,SAAUkV,CAAS,EAAIjV,EAEvD2d,EAAelR,GAAgBC,CAAG,EAClC,CAACpK,EAASO,CAAU,EAAIC,EAAgC,IAAI,EAC5D6B,EAAcH,GAAelC,CAAO,EACpCuc,EAAQzc,EAAQ,IAAG,CA5B3B,IAAAuY,EA4B8B,OAAAA,EAAAhW,GAAA,YAAAA,EAAa,OAAO,QAApB,KAAAgW,EAA6B,OAAO,UAAY,EAAA,CAAChW,CAAW,CAAC,EAEnFkb,EAAMzd,EAAQ,IAAMsd,GAAmBpgB,EAAOuf,CAAK,EAAG,CAACvf,EAAOuf,CAAK,CAAC,EACpEiB,EAAM1d,EAAQ,IAAMud,GAAmBrgB,EAAOuf,CAAK,EAAG,CAACvf,EAAOuf,CAAK,CAAC,EAEpEkB,EAASvI,EACZ/U,GAA8B,CAC7Bkb,EAAa,QAAUlb,EACvBI,EAAWJ,CAAE,CACf,EACA,CAACkb,CAAY,CACf,EAEA,OACE5S,EAAA,cAAC,MACC,CAAA,UAAQ,eACP,GAAGkK,EACJ,cAAa4K,EAAI,OAASA,EAAI,KAAK,GAAG,EAAI,OAC1C,cAAaC,EAAI,OAASA,EAAI,KAAK,GAAG,EAAI,OAC1C,IAAKC,CAEJvV,EAAAA,CACH,CAEJ,CAAC,EC7BY,MAAAwV,WAAsBjV,EAAM,SAAkD,CAApF,aACL,CAAA,MAAA,GAAA,SAAA,EAAA,KAAA,MAA4B,CAAC,MAAO,IAAI,CAExC,CAAA,OAAO,yBAAyBkV,EAAkC,CAEhE,MAAO,CAAC,MAAAA,CAAK,CACf,CAEA,kBAAkBA,EAAcC,EAA6B,CAC3D,KAAK,MAAM,QAAQ,CAAC,MAAAD,EAAO,KAAAC,CAAI,CAAC,CAClC,CAEA,QAA0B,CACxB,KAAM,CAAC,MAAAD,CAAK,EAAI,KAAK,MAErB,GAAIA,EAAO,CACT,MAAME,EAAU,OAAOF,GAAA,KAAAA,OAAAA,EAAO,UAAY,SAAWA,EAAM,QAAU,QAErE,OAAOlV,EAAA,cAACqT,GAAA,KAAM+B,CAAQ,CACxB,CAEA,OAAO,KAAK,MAAM,QACpB,CACF,CC1CA,MAAMjhB,GAAM,OAAO,IAAI,0BAA0B,EAEjDgL,EAAYhL,IAAOgL,EAAYhL,KAAQiL,GAAwC,IAAI,EAEtE,MAAAiW,GAAwDlW,EAAYhL,aCAjEmhB,IAA8B,CAC5C,MAAMrhB,EAAQuL,GAAW6V,EAAY,EAErC,GAAI,CAACphB,EACH,MAAM,IAAI,MAAM,mCAAmC,EAMrD,GAAI,CAACiM,GAASjM,CAAK,GAAKA,EAAM,UAAY,EACxC,MAAM,IAAI,MAAM,iDAAiD,EAGnE,OAAOA,CACT,CCPgB,SAAAshB,GAActgB,EAA+C,CAC3E,KAAM,CAAC,SAAAwK,EAAU,QAAS+V,EAAc,CAAC,EAAIvgB,EACvCwgB,EAASjW,GAAW6V,EAAY,EAChCK,EAAUve,EAAaqe,CAAW,EAClCG,EAAgBD,EAAQ,OAAS,EACjC/gB,EAAa,KAAK,IAAIyM,GAAc,EAAGuU,CAAa,EACpDC,EAASH,EAASA,EAAO,OAASC,EAAQ/gB,GAAc+gB,EAAQ/gB,GAChE,CAACuB,EAAMwD,CAAO,EAAI3B,EAAS,CAAC,EAE5B8d,EAAgBpJ,EAAY,KAChC/S,EAASoc,GAAMA,EAAI,CAAC,EAEb,IAAMpc,EAASoc,GAAMA,EAAI,CAAC,GAChC,EAAE,EAECC,EAAsBN,GAAA,KAAA,OAAAA,EAAQ,cAEpCrd,EAAU,IAAM,CACd,GAAK2d,EAEL,OAAOA,EACT,CAAA,EAAG,CAACA,CAAmB,CAAC,EAExB,MAAM9hB,EAA2BoD,EAC/B,KAAO,CAAC,QAAS,EAAK,WAAYnB,IAAS,EAAG,cAAA2f,EAAe,KAAA3f,EAAM,OAAA0f,CAAM,GACzE,CAAC1f,EAAM2f,EAAeD,CAAM,CAC9B,EAEA,OAAO5V,EAAA,cAACqV,GAAa,SAAb,CAAsB,MAAOphB,CAAAA,EAAQwL,CAAS,CACxD,CC3BA,MAAMgK,GAAOC,EAAO;AAAA;AAAA,EAIdsM,GAAgBnM,EAAW,SAC/B5U,EACA0M,EACA,CACA,KAAM,CAAC,SAAAlC,EAAU,MAAAvL,EAAQJ,MAAiBoW,CAAS,EAAIjV,EACjD,CAAC,OAAA2gB,CAAM,EAAIN,GAEjB,EAAA,OACEtV,EAAA,cAACyJ,GAAA,CAAM,GAAGS,EAAW,UAAQ,QAAQ,IAAKvI,EAAK,MAAO,CAAC,GAAGzN,EAAO,OAAA0hB,CAAM,CACpEnW,EAAAA,CACH,CAEJ,CAAC,EAKYwW,GAAQpM,EAAW,SAC9B5U,EACA0M,EACA,CACA,KAAM,CAAC,SAAAlC,EAAU,QAAAiW,EAAU,KAAMxL,CAAS,EAAIjV,EAE9C,OACE+K,EAAA,cAACuV,GAAA,CAAc,QAASG,GACtB1V,EAAA,cAACgW,GAAA,CAAe,GAAG9L,EAAW,IAAKvI,GAChClC,CACH,CACF,CAEJ,CAAC,EChDKtL,GAAM,OAAO,IAAI,2BAA2B,EAC5C+hB,GAAa,OAAO,IAAI,mCAAmC,EAEjE/W,EAAY+W,IAAc,KAEnB,MAAMC,GAA0C,CACrD,QAAS,EACT,gBAAiB,KACjB,IAAI,SAAU,CACZ,OAAI,OAAO,OAAW,IACb,MAGLhX,EAAY+W,MAIhB/W,EAAY+W,IAAc,SAAS,cAAc,KAAK,EACtD/W,EAAY+W,IAAY,aAAa,cAAe,EAAE,EAEtD,SAAS,KAAK,YAAY/W,EAAY+W,GAAW,GAE1C/W,EAAY+W,IACrB,CACF,EAEA/W,EAAYhL,IAAOgL,EAAYhL,KAAQiL,GAAkC+W,EAAmB,EAErF,MAAMC,GAAmDjX,EAAYhL,aCxB5DkiB,IAAgC,CAC9C,MAAMpiB,EAAQuL,GAAW4W,EAAa,EAEtC,GAAI,CAACniB,EACH,MAAM,IAAI,MAAM,oCAAoC,EAMtD,GAAI,CAACiM,GAASjM,CAAK,GAAKA,EAAM,UAAY,EACxC,MAAM,IAAI,MAAM,kDAAkD,EAGpE,OAAOA,CACT,CCLO,SAASqiB,GAAOrhB,EAA8C,CAlBrE,IAAA2a,EAmBE,KAAM,CAAC,SAAAnQ,EAAU,gBAAiB3C,CAAI,EAAI7H,EACpCshB,EAASF,KACTG,GACH1Z,EAAOyZ,EAAO,UAAYA,EAAO,SAASzZ,GAAQyZ,EAAO,YAAY3G,EAAA2G,EAAO,WAAP,KAAA3G,OAAAA,EAAiB,SAEzF,OAAK4G,EAIEC,GAAS,aAAahX,EAAU+W,CAAa,EAH3C,IAIX,CCnBO,SAASE,GAAqDziB,EAA6B,CAChG,MAAM0iB,EAAWxe,GAAkBlE,CAAK,EAExC,OAAK2iB,GAASD,EAAS,QAAS1iB,CAAK,IACnC0iB,EAAS,QAAU1iB,GAGd0iB,EAAS,OAClB,CAEA,SAASC,GAASC,EAAkBC,EAA2B,CAC7D,GAAI,CAACD,GAAQ,CAACC,EACZ,OAAOD,IAASC,EAGlB,MAAMC,EAAQ,OAAO,KAAKF,CAAI,EACxBG,EAAQ,OAAO,KAAKF,CAAI,EAE9B,OAAIC,EAAM,SAAWC,EAAM,OAClB,GAGFD,EAAM,MAAO5iB,GAAQ0iB,EAAK1iB,KAAS2iB,EAAK3iB,EAAI,CACrD,CCZA,MAAM8iB,GAAc,OAAO,OAAW,IAK/B,SAASC,GAAejiB,EAAgD,CAC7E,KAAM,CAAC,gBAAA4C,EAAiB,SAAA4H,EAAU,QAAAlI,EAAS,oBAAqB4f,CAAY,EAAIliB,EAC1E+C,EAAW0e,GAAUS,CAAY,EAEjCljB,EAA4BoD,EAAQ,KACjC,CACL,QAAS,EACT,gBAAiBQ,GAAmB,KACpC,QAASN,GAAY0f,IAAe,SAAS,MAAS,KACtD,SAAAjf,CACF,GACC,CAACH,EAAiBN,EAASS,CAAQ,CAAC,EAEvC,OAAOgI,EAAA,cAACoW,GAAc,SAAd,CAAuB,MAAOniB,CAAAA,EAAQwL,CAAS,CACzD,CC7BA,MAAMgK,GAAOC,EAAO;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAWP0N,GAASvN,EAAW,SAC/B5U,EACA0M,EACA,CACA,KAAM,CAAC,GAAAiK,EAAI,SAAAnM,CAAQ,EAAIxK,EAEvB,OACE+K,EAAA,cAACyJ,GAAA,CAAK,cAAW,GAAC,GAAImC,EAAI,UAAQ,SAAS,IAAKjK,CAC7ClC,EAAAA,CACH,CAEJ,CAAC,EC9BM,SAAS4X,GAAKC,EAA4B,CAC/C,MAAMC,EAAU,sBAAsBD,CAAE,EAExC,MAAO,IAAM,CACX,qBAAqBC,CAAO,CAC9B,CACF,CAKgB,SAAAC,GAAMF,EAA4B,CAChD,IAAIG,EAAoC,KAExC,MAAMC,EAAeL,GAAK,IAAM,CAC9BI,EAAeJ,GAAKC,CAAE,CACxB,CAAC,EAED,MAAO,IAAM,CACPG,GAAcA,EAElBC,EAAAA,EAAAA,CACF,CACF,CCvBO,SAASC,GAAuBpgB,EAA+B,CACpE,OAAOqgB,GAAoBrgB,CAAO,GAAKsgB,GAAoBtgB,CAAO,CACpE,CAKgB,SAAAugB,GAAc7K,EAAoC,CAChE,OAAOA,aAAgB,MAAQA,EAAK,WAAa,KAAK,YACxD,CAKO,SAAS2K,GAAoBrgB,EAAgD,CAClF,OAAOugB,GAAcvgB,CAAO,GAAKA,EAAQ,WAAa,GACxD,CAKgB,SAAAwgB,GAAmBxgB,EAA+C,CAChF,OAAOugB,GAAcvgB,CAAO,GAAKA,EAAQ,WAAa,OACxD,UAKgBsgB,GAAoBtgB,EAAgD,CAClF,OAAOugB,GAAcvgB,CAAO,GAAKA,EAAQ,WAAa,QACxD,CAKgB,SAAAygB,GAAoBzgB,EAAgD,CAClF,OAAOugB,GAAcvgB,CAAO,GAAKA,EAAQ,WAAa,QACxD,CAKO,SAAS0gB,GAAsB1gB,EAAkD,CACtF,OAAOugB,GAAcvgB,CAAO,GAAKA,EAAQ,WAAa,UACxD,CC/BO,SAAS2gB,GAAU3gB,EAA+B,CACvD,OAAO,QAAQ,SAAS,aAAa,GAAKA,EAAQ,SAAS,SAAS,aAAa,CACnF,UAKgB4gB,GAAY5gB,EAA+B,CACzD,OACEA,EAAQ,SAAW,GAClBA,EAAQ,WAAa,GAAKA,EAAQ,aAAa,UAAU,IAAM,KAEzD,GAGLqgB,GAAoBrgB,CAAO,EACtB,QAAQA,EAAQ,IAAI,GAAKA,EAAQ,MAAQ,SAG9CwgB,GAAmBxgB,CAAO,EACrBA,EAAQ,OAAS,UAAYA,EAAQ,OAAS,QAAU,CAACA,EAAQ,SAIxEsgB,GAAoBtgB,CAAO,GAC3BygB,GAAoBzgB,CAAO,GAC3B0gB,GAAsB1gB,CAAO,EAEtB,CAACA,EAAQ,SAGX,EACT,CAKgB,SAAA6gB,GAAa7gB,EAA+B,CAC1D,GAAI,CAAC4gB,GAAY5gB,CAAO,EACtB,MAAO,GAKT,GAAI,CACFA,EAAQ,MAAM,CAChB,MAAE,CAMF,CAAA,OAAO,SAAS,gBAAkBA,CACpC,UAKgB8gB,GAAqB9gB,EAA+B,CAClE,QAAS8P,EAAI,EAAGA,EAAI9P,EAAQ,WAAW,OAAQ8P,IAAK,CAClD,MAAMoG,EAAQlW,EAAQ,WAAW8P,GAEjC,GAAIyQ,GAAcrK,CAAK,IAAM2K,GAAa3K,CAAK,GAAK4K,GAAqB5K,CAAK,GAC5E,MAAO,EAEX,CAEA,MAAO,EACT,CAKgB,SAAA6K,GAAoB/gB,EAA+B,CACjE,QAAS8P,EAAI9P,EAAQ,WAAW,OAAS,EAAG8P,GAAK,EAAGA,IAAK,CACvD,MAAMoG,EAAQlW,EAAQ,WAAW8P,GAEjC,GAAIyQ,GAAcrK,CAAK,IAAM2K,GAAa3K,CAAK,GAAK6K,GAAoB7K,CAAK,GAC3E,MAAO,EAEX,CAEA,MAAO,EACT,CChGO,SAAS8K,GAAc7gB,EAAmB,CAC/C,GAAI,EAAEA,aAAc,SAAU,MAAO,GAErC,MAAMxD,EAAQ,OAAO,iBAAiBwD,CAAE,EAExC,OACExD,EAAM,UAAU,SAAS,MAAM,GAC/BA,EAAM,UAAU,SAAS,QAAQ,GACjCA,EAAM,UAAU,SAAS,MAAM,GAC/BA,EAAM,UAAU,SAAS,QAAQ,CAErC,CCkBA,MAAMuV,GAAOC,EAAO;AAAA;AAAA,EAId8O,GAAc9O,EAAO;AAAA;AAAA;AAAA;AAAA,EASd+O,GAAc5O,EAAW,SACpC5U,EAGA0M,EACoB,CACpB,KAAM,CAAC,GAAAiK,EAAK,MAAO,IAAAjI,EAAM,EAAG,WAAA+U,EAAY,MAAAC,EAAQ,CAAI,EAAA,SAAAC,EAAU,WAAAC,KAAe3O,CAAS,EAAIjV,EACpF,CAAC,MAAAyO,CAAK,EAAIpD,GAAAA,EAAW,OACrBsS,EAAelR,GAAgBC,CAAG,EAClCmX,EAAa3gB,GAA8B,IAAI,EAC/C,CAAC4gB,EAAWC,CAAY,EAAIjhB,EAAS,CAAC,EACtC,CAACkhB,EAAcC,CAAe,EAAInhB,EAAS,CAAC,EAC5C,CAACohB,EAAYC,CAAa,EAAIrhB,EAAS,EAAE,EAE/CK,EAAU,IAAM,CACd,GAAI,CAAC0gB,EAAW,QAAS,OAEzB,MAAMO,EAAeP,EAAW,QAAQ,WAEpCO,aAAwB,aAC1BD,EAAcC,EAAa,YAAY,CAE3C,EAAG,CAACR,CAAU,CAAC,EAEfzgB,EAAU,IAAM,CACd,GAAI,CAACwa,EAAa,QAAS,OAE3B,IAAI0G,EAAY1G,EAAa,QAAQ,WAErC,KAAO0G,GAAa,CAACf,GAAce,CAAS,GAC1CA,EAAYA,EAAU,WAGxB,GAAIA,EAAW,CACb,MAAMC,EAAWD,EAEjB,GAAI,EAAEC,aAAoB,aAAc,OAExC,MAAMC,EAAe,IAAM,CACzBR,EAAaO,EAAS,SAAS,CACjC,EAEAA,EAAS,iBAAiB,SAAUC,EAAc,CAAC,QAAS,EAAI,CAAC,EAEjE,MAAMC,EAAK,IAAI/gB,GAAiBghB,IAAY,CAC1CR,EAAgBQ,GAAQ,GAAG,YAAY,MAAM,CAC/C,CAAC,EAED,OAAAD,EAAG,QAAQF,CAAQ,EAEnBC,IAEO,IAAM,CACXD,EAAS,oBAAoB,SAAUC,CAAY,EAEnDC,EAAG,UAAUF,CAAQ,EACrBE,EAAG,WACL,CAAA,CACF,CAEA,MAAMD,EAAe,IAAM,CACzBR,EAAa,OAAO,OAAO,CAC7B,EAEMW,EAAe,IAAM,CACzBT,EAAgB,OAAO,WAAW,CACpC,EAEA,OAAA,OAAO,iBAAiB,SAAUM,EAAc,CAAC,QAAS,EAAI,CAAC,EAC/D,OAAO,iBAAiB,SAAUG,CAAY,EAE9CT,EAAgB,OAAO,WAAW,EAElCM,EAEO,EAAA,IAAM,CACX,OAAO,oBAAoB,SAAUA,CAAY,EACjD,OAAO,oBAAoB,SAAUG,CAAY,CACnD,CACF,EAAG,CAAC/G,CAAY,CAAC,EAEjB,MAAM3L,EAAM0R,EAAM,OACZ1V,EAASkW,EAAalS,GAAOkS,EAAazV,EAAMC,IAAQD,EAAMC,GAAO,EACrEiW,EAAY3W,EAAS,KAAK,IAAI,KAAK,MAAO8V,EAAY9V,EAAUgE,CAAG,EAAI,EAAG,CAAC,EAAI,EAC/E4S,EAAU5W,EAAS,KAAK,MAAO8V,EAAYE,GAAgBhW,EAAUgE,CAAG,EAAI,EAAI,EAEtF7O,EAAU,IAAM,CACV,CAACwgB,GACLA,EAAS,CAAC,UAAAgB,EAAW,IAAKlW,EAAMC,GAAM,WAAAwV,EAAY,aAAAF,EAAc,UAAAF,EAAW,QAAAc,CAAO,CAAC,CACrF,EAAG,CAACD,EAAWjW,EAAKwV,EAAYP,EAAUK,EAAcF,EAAWrV,EAAOmW,CAAO,CAAC,EAElF,MAAMpa,EAAWpI,EAAQ,IACnB,CAACwhB,GAAcF,EAAM,SAAW,EAAU,KAE1CQ,IAAe,GACV,CAACnZ,EAAA,cAACwY,GAAA,CAAY,IAAK,CAAA,EAAIK,EAAWF,EAAM,EAAE,CAAE,CAAc,EAG5DA,EAAM,MAAMiB,EAAWC,CAAO,EAAE,IAAI,CAACC,EAAMC,IAAe,CAC/D,MAAMC,EAAYJ,EAAYG,EACxB9M,EAAO4L,EAAWiB,CAAI,EACtB3lB,EAAMukB,EAAaA,EAAWoB,EAAME,CAAS,EAAIA,EAEvD,OACEha,EAAA,cAACwY,GAAA,CAAY,IAAKrkB,EAAK,MAAO,CAAC,IAAK6lB,GAAab,EAAazV,EAAMC,GAAK,CACtEsJ,EAAAA,CACH,CAEJ,CAAC,EACA,CAAC2M,EAAWjW,EAAK+U,EAAYS,EAAYR,EAAOE,EAAYnV,EAAOmW,CAAO,CAAC,EAExEI,EAAe5iB,EAAQ,KAAO,CAAC,OAAA4L,CAAM,GAAI,CAACA,CAAM,CAAC,EAEvD,OACEjD,EAAA,cAACyJ,GAAA,CAAK,GAAImC,EAAI,UAAQ,cAAe,GAAG1B,EAAW,IAAK0I,CACtD5S,EAAAA,EAAA,cAAC,MAAA,CAAI,IAAK8Y,EAAY,MAAOmB,CAC1Bxa,EAAAA,CACH,CACF,CAEJ,CAAC,EClKKgK,GAAOC,EAAO;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EA6CdwQ,GAAaxQ,EAAO;AAAA;AAAA,EAIpByQ,GAAYzQ,EAAO;AAAA;AAAA,EAIZ0Q,GAAevQ,EAAW,SACrC5U,EACA0M,EACA,CACA,OACE3B,EAAA,cAACyJ,GAAA,CAAK,UAAQ,eAAgB,GAAGxU,EAAO,IAAK0M,CAC3C3B,EAAAA,EAAA,cAAC,MAAA,CACC,MAAM,KACN,OAAO,KACP,QAAQ,YACR,KAAK,OACL,MAAM,4BAENA,EAAAA,EAAA,cAACka,GAAA,CAAW,EAAE,2WAA2W,EACzXla,EAAA,cAACma,GAAA,CAAU,EAAE,oLAAqL,CAAA,CACpM,CACF,CAEJ,CAAC,ECtDe,SAAAE,GAAoBplB,EAAoD,CACtF,KAAM,CACJ,sBAAAqlB,EACA,MAAAC,EACA,aAAAC,EACA,gBAAA3iB,EACA,cAAA4iB,EACA,SAAAC,EACA,mBAAAC,EACA,QAAAC,EACA,oBAAAC,EACA,KAAAC,EACA,gBAAAC,EACA,SAAAC,EACA,OAAAC,EACA,aAAAC,CACF,EAAIjmB,EAMJ,GAAI,CAAC6lB,EACH,MAAO,CAAA,EAGT,MAAMK,EAAwB,CAC5B,QAAS,CAACV,EACV,SAAU5iB,GAAmB,OAC7B,QAAS,EACT,OAAAojB,EACA,aAAAC,CACF,EAEA,MAAO,CACLT,GAAiB,CACf,GAAGW,GACH,QAASD,CACX,EACAV,GAAiB,CACf,KAAM,eACN,QAAS,GACT,MAAO,cACP,SAAU,CAAC,SAAS,EACpB,GAAG,CAAC,MAAApd,CAAK,EAAQ,CACf,KAAM,CAAC,MAAAyW,EAAO,OAAA7Q,CAAM,EAAI5F,EAAM,cAAc,QAE5CA,EAAM,OAAO,OAAS,CACpB,GAAGA,EAAM,OAAO,OAChB,SAAU,GAAGyW,MACb,UAAW,GAAG7Q,KAChB,CACF,CACF,EACAsX,GAAS,CACP,KAAM,QACN,QAAS,CACP,QAASC,EACT,QAAS,CACX,CACF,GACCC,GAAiBM,IAAoB,CACpC,KAAM,kBACN,QAASI,CACX,EACA,CACE,KAAM,SACN,QAAS,CACP,OAAQ,CAACH,EAAUN,CAAQ,CAC7B,CACF,EACAE,GAAW,CACT,KAAM,UACN,QAAS,GACT,MAAO,aACP,GAAI,CAAC,CAAC,MAAAvd,CAAK,IAAW,CACpB,KAAM,CAAC,MAAAge,CAAK,EAAIhe,EAEZge,EAAM,YACRA,EAAM,UAAU,GAAKT,EAAQ,GAC7BS,EAAM,UAAU,GAAKT,EAAQ,GAC7BS,EAAM,UAAU,OAAST,EAAQ,GAAKA,EAAQ,GAC9CS,EAAM,UAAU,QAAUT,EAAQ,GAAKA,EAAQ,GAEnD,CACF,EACA,CACE,KAAM,OACN,QAAS,CACP,sBAAAN,EACA,SAAUziB,GAAmB,OAC7B,mBAAA8iB,EACA,QAAS,CACX,CACF,EACAE,GAAuB,CACrB,KAAM,aACN,QAAS,GACT,MAAO,cACP,SAAU,CAAC,eAAe,EAC1B,GAAG,CAAC,MAAAxd,CAAK,EAAQ,CACf,KAAM,CAAC,MAAAyW,CAAK,EAAIzW,EAAM,MAAM,UAE5BA,EAAM,OAAO,OAAO,MAAQ,GAAGyW,KACjC,EACA,OAAQ,CAAC,CAAC,MAAAzW,CAAK,IAAW,CACxB,MAAMie,EAAaje,EAAM,SAAS,UAE9Bie,aAAsB,cACxBje,EAAM,SAAS,OAAO,MAAM,MAAQ,GAClCie,EAAW,aAAeV,EAAUA,EAAQ,GAAKA,EAAQ,GAAK,OAGpE,CACF,CACF,EAAE,OAAO,OAAO,CAClB,UClIgBW,GAAoBtmB,EAAoD,CACtF,KAAM,CACJ,sBAAAqlB,EACA,MAAAC,EACA,aAAAC,EACA,gBAAA3iB,EACA,cAAA4iB,EACA,SAAAC,EACA,mBAAAC,EACA,QAAAC,EACA,oBAAAC,EACA,KAAAC,EACA,gBAAAC,EACA,SAAAC,EACA,OAAAC,EACA,aAAAC,CACF,EAAIjmB,EAEJ,OAAOoC,EAAQ,IACNgjB,GAAoB,CACzB,sBAAAC,EACA,MAAAC,EACA,aAAAC,EACA,gBAAA3iB,EACA,cAAA4iB,EACA,SAAAC,EACA,mBAAAC,EACA,QAAAC,EACA,oBAAAC,EACA,KAAAC,EACA,gBAAAC,EACA,SAAAC,EACA,OAAAC,EACA,aAAAC,CACF,CAAC,EACA,CACDZ,EACAC,EACAC,EACA3iB,EACA4iB,EACAC,EACAC,EACAC,EACAC,EACAC,EACAC,EACAC,EACAC,EACAC,CACF,CAAC,CACH,CCDA,MAAMzR,GAAOC,EAAOuM,EAAK,EACvB,CAAC,CAAC,iBAAAuF,CAAgB,IAAM5T;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA,MAWpB4T,GACF5T;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA,GAMJ,EAEM6T,GAAc/R,EAAO0I,EAAI,EAO7B,CAAC,CAAC,eAAAsJ,CAAc,IAAM9T;AAAAA;AAAAA,kBAEN8T,GAAkB;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,MAa9B/H;AAAAA,GAEN,EAKagI,GAAU9R,EAAW,SAChC5U,EAEA0M,EACA,CA9GF,IAAAiO,EA+GE,MAAMgM,EAAyBlH,GAAAA,EACzB1f,EAAQsL,KACR,CACJ,mBAAoBsa,EACpB,sBAAAN,EACA,MAAAC,EAAQ,GACR,gBAAiBsB,EAAsBD,EAAuB,QAC9D,SAAUnO,EACV,QAAAqO,EACA,cAAArB,EACA,SAAAhK,EACA,mBAAAkK,EACA,KAAAG,EAAO,GACP,QAAAtM,EACA,UAAAuN,EAAY,SACZ,OAAQC,EAAa,GACrB,gBAAAjB,EACA,OAAApS,EAAS,EACT,iBAAkBsT,EAClB,oBAAApB,EACA,OAAA/R,EAAS,EACT,OAAApJ,EACA,MAAAxL,EAAQJ,GACR,OAAAmnB,EACA,aAAAC,EACA,KAAA5d,EAAO,UACP,MAAO4e,EAAY,EACnB,QAAAxG,GAAU9F,EAAA5a,EAAM,OAAO,QAAb,YAAA4a,EAAoB,QAAQ,WACnC1F,EACL,EAAIjV,EACE2d,EAAelR,GAAgBC,CAAG,EAClC4U,EAASF,GAAAA,EACT,CAAC8F,GAAkBC,CAAmB,EAAIrkB,EAA6B,IAAI,EAC3E,CAACskB,EAAeC,CAAgB,EAAIvkB,EAA6B,IAAI,EACrE,CAACyiB,GAAc+B,EAAe,EAAIxkB,EAA6B,IAAI,EACnEykB,GAAyBP,GAAwBE,GACjDrI,GAAQ3c,EAAa0jB,EAAsB,OAASqB,CAAS,EAE7DO,GAAYlB,GAAoB,CACpC,sBAAAjB,EACA,MAAAC,EACA,aAAAC,GACA,gBAAiBqB,GAAuBtF,EAAO,gBAC/C,cAAAkE,EACA,SAAUF,EAAQ,EAAI,EACtB,mBAAAI,EACA,QAAAC,EACA,oBAAAC,EACA,KAAAC,EACA,gBAAAC,EACA,SAAU,EACV,OAAAE,EACA,aAAAC,CACF,CAAC,EAEKwB,GAASC,GAAUH,GAAwBH,EAAe,CAC9D,UAAAN,EACA,UAAAU,EACF,CAAC,EAEK,CAAC,WAAAG,GAAY,YAAAC,GAAa,OAAApV,EAAM,EAAIiV,GAEpC1H,GAASvI,EACZ/U,IAA2B,CAC1B,MAAMolB,GAAYrP,EAAc,IAEhC2O,EAAoB1kB,EAAE,EAElB,OAAOolB,IAAa,WACtBA,GAASplB,EAAE,EACFolB,KACTA,GAAS,QAAUplB,GAEvB,EACA,CAAC+V,CAAK,CACR,EAEMsP,GAAatQ,EAChB/U,IAA8B,CAC7B4kB,EAAiB5kB,EAAE,EACnBkb,EAAa,QAAUlb,EACzB,EACA,CAACkb,CAAY,CACf,EAEMoK,GAAe3lB,EAAQ,KAAO,CAAC,GAAGnD,EAAO,GAAGuT,GAAO,MAAM,GAAI,CAACvT,EAAOuT,EAAM,CAAC,EAE5EwV,GAAmB9kB,GAA8B,IAAI,EAmB3D,GAjBAC,EAAU,IAAM,CACV6kB,GAAiB,UACnB,aAAaA,GAAiB,OAAO,EACrCA,GAAiB,QAAU,MAG7BA,GAAiB,QAAU,WAAW,IAAM,CAC1C,GAAIJ,GACF,GAAI,CACFA,IACF,MAAE,CAIN,CAAA,EAAG,CAAC,CACN,EAAG,CAACf,EAASe,GAAa/B,EAAM0B,EAAsB,CAAC,EAEnD/L,EACF,OAAOhD,GAASzN,EAAA,cAAAA,EAAA,SAAE,IAAA,EAGpB,MAAMiN,GACJjN,EAAA,cAACyJ,GAAA,CACC,UAAQ,UACP,GAAGS,GACJ,iBAAkB6Q,EAClB,IAAKgC,GACL,MAAOC,GACP,QAAStH,EACR,GAAGkH,GAAW,QAEf5c,EAAA,cAACyb,GAAA,CACC,eAAgBhB,EAChB,OAAQ3G,GACR,UAAQ,cACR,QAAStF,EACT,OAAQ7F,EACR,OAAQjJ,EACR,OAAQoJ,EACR,KAAMxL,CAAAA,EAELid,GAASva,EAAA,cAACoa,GAAA,CAAa,IAAKmC,GAAiB,MAAO9U,GAAO,KAAA,CAAO,EAClEqU,CACH,CACF,EAGF,OACE9b,EAAA,cAAAA,EAAA,SAAA,KACGyN,GAAS,CAACwO,EAAuBlO,GAAaN,EAAO,CAAC,IAAKuH,EAAM,CAAC,EAAIvH,GAASzN,EAAA,cAAAA,EAAA,SAAE,IAAA,EAEjF8a,GACC9a,EAAA,cAAAA,EAAA,SACGgc,KAAAA,GACChc,EAAA,cAACsW,GAAA,CAAO,gBAAiB,OAAO0F,GAAe,SAAWA,EAAa,QACpE/O,EACH,EAGD,CAAC+O,GAAc/O,EAClB,CAEJ,CAEJ,CAAC,ECpQe,SAAAiQ,IAA6C,CAC3D,OAAOtV;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA,GAWT,CAEO,SAASuV,GAAkBloB,EAA+C,CAC/E,KAAM,CAAC,MAAAD,CAAK,EAAIC,EACV,CAAC,UAAAmP,EAAW,MAAAmE,CAAK,EAAIvT,EAAM,OAC3BkH,EAAQlH,EAAM,OAAO,MAAM,MAC3BooB,GAAQ7U,EAAM,MAAM,KAAOA,EAAM,MAAM,UAAY,EAEzD,OAAOX;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA,qBAYYxT,EAAImU,EAAM,MAAM,KAAO,CAAC;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,gBAO7BnU,EAAImU,EAAM,MAAM,IAAI;AAAA,eACrBnU,EAAImU,EAAM,MAAM,IAAI;AAAA,uBACZnU,EAAImU,EAAM,MAAM,KAAO,CAAC;AAAA,oBAC3BrM,EAAM,QAAQ,QAAQ;AAAA,oBACtBgI,GAAqB,CACjC,MAAOhI,EAAM,QAAQ,QAAQ,OAC7B,MAAOqM,EAAM,OAAO,KACtB,CAAC;AAAA;AAAA;AAAA;AAAA;AAAA,eAKQnU,EAAIgpB,CAAI;AAAA,gBACPhpB,EAAIgpB,CAAI;AAAA,kBACNhpB,EAAImU,EAAM,MAAM,QAAQ;AAAA,iBACzBnU,EAAImU,EAAM,MAAM,QAAQ;AAAA,yBAChBnU,EAAImU,EAAM,MAAM,SAAW,CAAC;AAAA,sBAC/BrM,EAAM,QAAQ,QAAQ;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,oBAOxBiI,GAAe,CAC3B,OAAQ,CAAC,MAAOoE,EAAM,OAAO,MAAO,MAAOrM,EAAM,QAAQ,QAAQ,MAAM,EACvE,UAAAkI,CACF,CAAC;AAAA;AAAA;AAAA;AAAA,oBAIaF,GAAqB,CACjC,MAAOhI,EAAM,QAAQ,QAAQ,OAC7B,MAAOqM,EAAM,OAAO,KACtB,CAAC;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,8BASuBrM,EAAM,QAAQ,SAAS;AAAA,oBACjCA,EAAM,QAAQ,SAAS;AAAA;AAAA;AAAA,sBAGrBA,EAAM,QAAQ,SAAS;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,8BAMfA,EAAM,QAAQ,SAAS;AAAA,oBACjCA,EAAM,QAAQ,SAAS;AAAA;AAAA;AAAA,sBAGrBA,EAAM,QAAQ,SAAS;AAAA;AAAA;AAAA,GAI7C,CC5FA,MAAMuN,GAAOC,EAAO,IAAIwT,EAAc,EAChCxK,GAAQhJ,EAAO,MAAMyT,EAAiB,EAK/BE,GAAQxT,EAAW,SAC9B5U,EACA2d,EACA,CACA,KAAM,CAAC,UAAAE,EAAW,SAAArC,EAAU,MAAAvc,EAAO,eAAA4N,EAAgB,SAAAkR,KAAa9I,CAAS,EAAIjV,EACvE0M,EAAMD,GAAgBkR,CAAY,EAExC,OAAA/Q,GAAkBF,EAAKG,CAAc,EAGnC9B,EAAA,cAACyJ,GAAA,CAAK,UAAWqJ,EAAW,UAAQ,QAAQ,MAAO5e,CACjD8L,EAAAA,EAAA,cAAC0S,GAAA,CACC,iBAAgB,CAACjC,GAAYuC,EAAW,GAAK,OAC5C,GAAG9I,EACJ,SAAUuG,GAAYuC,EACtB,SAAUA,EACV,IAAKrR,EACL,KAAK,OACP,CAAA,EACA3B,EAAA,cAAC,OAAA,IAAK,CACR,CAEJ,CAAC,EC7BD,SAASsd,IAAwC,CAC/C,OAAO1V;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA,GAQT,CAEA,SAAS2V,GAAetoB,EAA+C,CACrE,KAAM,CAAC,MAAAD,CAAK,EAAIC,EACVgT,EAAOjT,EAAM,OAAO,MAAM,KAEhC,OAAO4S;AAAAA;AAAAA;AAAAA;AAAAA,mBAIUK,EAAK;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,GAUxB,CAEA,SAASuV,GAAgBvoB,EAAmB,CAC1C,KAAM,CAAC,MAAAD,CAAK,EAAIC,EACV,CAAC,UAAAmP,EAAW,MAAAmE,CAAK,EAAIvT,EAAM,OAC3BkH,EAAQlH,EAAM,OAAO,MAAM,MAEjC,OAAO4S;AAAAA;AAAAA,wBAEe1L,EAAM,QAAQ,QAAQ;AAAA,aACjCA,EAAM,QAAQ,QAAQ;AAAA,kBACjBgI,GAAqB,CACjC,MAAOhI,EAAM,QAAQ,QAAQ,OAC7B,MAAOqM,EAAM,OAAO,KACtB,CAAC;AAAA;AAAA;AAAA;AAAA;AAAA,4BAKuBrM,EAAM,QAAQ,QAAQ;AAAA,iBACjCA,EAAM,QAAQ,QAAQ;AAAA,sBACjBgI,GAAqB,CACjC,MAAOhI,EAAM,QAAQ,QAAQ,OAC7B,MAAOqM,EAAM,OAAO,KACtB,CAAC;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,oBAMWpE,GAAe,CAC3B,OAAQ,CAAC,MAAOoE,EAAM,OAAO,MAAO,MAAOrM,EAAM,QAAQ,QAAQ,MAAM,EACvE,UAAAkI,CACF,CAAC;AAAA;AAAA;AAAA;AAAA;AAAA,0BAKmBlI,EAAM,QAAQ,SAAS;AAAA,eAClCA,EAAM,QAAQ,SAAS;AAAA,oBAClBgI,GAAqB,CACjC,MAAOhI,EAAM,QAAQ,SAAS,OAC9B,MAAOqM,EAAM,OAAO,KACtB,CAAC;AAAA;AAAA;AAAA;AAAA;AAAA,0BAKmBrM,EAAM,QAAQ,SAAS;AAAA,eAClCA,EAAM,QAAQ,SAAS;AAAA,oBAClBgI,GAAqB,CACjC,MAAOhI,EAAM,QAAQ,SAAS,OAC9B,MAAOqM,EAAM,OAAO,KACtB,CAAC;AAAA;AAAA,GAGP,CAEA,SAASkV,GAASvnB,EAAqB,CACrC,MAAO,CAAC,SAAU9B,EAAI8B,EAAK,QAAQ,EAAG,WAAY9B,EAAI8B,EAAK,UAAU,CAAC,CACxE,CAEA,SAASwnB,GAAmBzoB,EAA2C,CACrE,KAAM,CAAC,MAAAD,EAAO,UAAA2R,CAAS,EAAI1R,EACrB,CAAC,MAAAS,CAAK,EAAIV,EAAM,OAAO,MAAM,KAEnC,OAAOV,EAAYU,EAAM,OAAO,MAAO2R,EAAY3Q,GACjDynB,GAAS/nB,EAAMM,IAAcN,EAAM,EAAE,CACvC,CACF,CAEA,SAASioB,IASP,CACA,MAAO,CACLjV,GACA6U,GACAC,GACAE,GACAhW,EACF,CACF,CAEA,SAASkW,GAAa3oB,EAA+C,CACnE,KAAM,CAAC,MAAAD,CAAK,EAAIC,EACViH,EAAQlH,EAAM,OAAO,MAAM,MAEjC,OAAO4S;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA,uBAOc1L,EAAM,QAAQ,QAAQ;AAAA;AAAA;AAAA;AAAA;AAAA,2BAKlBA,EAAM,QAAQ,QAAQ;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,yBAMxBA,EAAM,QAAQ,SAAS;AAAA;AAAA;AAAA;AAAA;AAAA,yBAKvBA,EAAM,QAAQ,SAAS;AAAA;AAAA,GAGhD,OAEa2hB,GAAc,CACzB,KAAMP,GACN,MAAOK,GACP,QAASC,EACX,ECnJMnU,GAAOC,EAAO,IAAImU,GAAY,IAAI,EAElCnL,GAAQhJ,EAAO,OAKlBmU,GAAY,KAAK,EAEdC,GAAUpU,EAAOsE,CAAG,EAAE6P,GAAY,OAAO,EAKlCE,GAASlU,EAAW,SAC/B5U,EACA2d,EACA,CACA,KAAM,CACJ,SAAAnT,EACA,eAAAqC,EACA,SAAA2O,EACA,SAAAxa,EAAW,EACX,QAAAuY,EAAU,EACV,OAAA7F,EAAS,EACT,SAAAqK,EACA,MAAAtP,EAAQ,KACLwG,CACL,EAAIjV,EAEE0M,EAAMD,GAAgBkR,CAAY,EAExC,OAAA/Q,GAAkBF,EAAKG,CAAc,EAGnC9B,EAAA,cAACyJ,GAAA,CAAK,UAAQ,QACZzJ,EAAAA,EAAA,cAAC0S,GAAA,CACC,iBAAgB,CAACjC,GAAYuC,EAAW,GAAK,OAC7C,UAAQ,SACP,GAAG9I,EACJ,UAAW/S,EAAalB,CAAQ,EAChC,SAAUkB,EAAaqX,CAAO,EAC9B,QAASrX,EAAawR,CAAM,EAC5B,OAAQxR,EAAauM,CAAK,EAC1B,SAAU+M,GAAYuC,EACtB,IAAKrR,CAEJlC,EAAAA,CACH,EAEAO,EAAA,cAAC8d,GAAA,CAAQ,QAAStP,CAChBxO,EAAAA,EAAA,cAAC4J,GAAA,CAAK,KAAM3T,CAAAA,EACV+J,EAAA,cAACge,GAAA,IAAW,CACd,CACF,CACF,CAEJ,CAAC,ECrEK1b,GAAwB,CAC5B,mBAAoB,CAClB,QAAS,MACX,EACA,kCAAmC,CACjC,UAAW,MACb,EACA,oBAAqB,iBACrB,aAAc,aAChB,EAEO,SAAS2b,IAA4B,CAC1C,OAAO3b,EACT,CAEO,SAAS4b,GACdjpB,EACa,CACb,KAAM,CAAC,MAAAD,CAAK,EAAIC,EACV,CAAC,MAAAV,EAAO,MAAAmP,CAAK,EAAI1O,EAAM,OAE7B,OAAOV,EAAYC,EAAOU,EAAM,OAASE,IAAgB,CACvD,QAASf,EAAIsP,EAAMvO,EAAW,CAChC,EAAE,CACJ,CCjBA,MAAMsU,GAAOC,EAAOsE,CAAG,EAAkCiQ,GAAgBC,EAAyB,EAKrFC,GAAQtU,EAAW,SAC9B5U,EACA0M,EACA,CACA,KAAM,CAAC,GAAAiK,EAAI,MAAAlI,KAAUwG,CAAS,EAAIjV,EAElC,OACE+K,EAAA,cAACyJ,GAAA,CACC,UAAS,OAAOmC,GAAO,SAAWA,EAAK,OACvC,UAAQ,QACP,GAAG1B,EACJ,OAAQ/S,EAAauM,CAAK,EAC1B,YAAakI,EACb,IAAKjK,CAAAA,CACP,CAEJ,CAAC,EC9Be,SAAAyc,IAA+C,CAC7D,OAAOxW;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA,GAMT,CAGO,SAASyW,IAAgD,CAE9D,OAAOzW;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA,GAgBT,CAGgB,SAAA0W,GAA2BrpB,EAA+C,CACxF,KAAM,CAAC,MAAAD,CAAK,EAAIC,EACV,CAAC,UAAAmP,EAAW,MAAAmE,CAAK,EAAIvT,EAAM,OAC3BkH,EAAQlH,EAAM,OAAO,MAAM,OAAO,QAExC,OAAO4S;AAAAA,yBACgB1L,EAAM,QAAQ,QAAQ;AAAA,yBACtBA,EAAM,QAAQ,QAAQ;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,aAOlC9H,EAAImU,EAAM,OAAO,KAAK;AAAA,cACrBnU,EAAImU,EAAM,OAAO,MAAM;AAAA,qBAChBnU,EAAImU,EAAM,OAAO,OAAS,CAAC;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,6BAoBnBpE,GAAe,CAAC,UAAAC,CAAS,CAAC;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,2BAQ5BlI,EAAM,SAAS,QAAQ;AAAA,2BACvBA,EAAM,SAAS,QAAQ;AAAA;AAAA;AAAA;AAAA;AAAA,6BAKrBA,EAAM,QAAQ,QAAQ;AAAA,6BACtBA,EAAM,QAAQ,QAAQ;AAAA;AAAA;AAAA;AAAA,6BAItBA,EAAM,SAAS,QAAQ;AAAA,6BACvBA,EAAM,SAAS,QAAQ;AAAA;AAAA;AAAA;AAAA;AAAA,2BAKzBA,EAAM,QAAQ,SAAS;AAAA,2BACvBA,EAAM,QAAQ,SAAS;AAAA;AAAA,GAGlD,CAGgB,SAAAqiB,GAAkBtpB,EAA+C,CAC/E,KAAM,CAAC,MAAAD,CAAK,EAAIC,EACV,CAAC,MAAAsT,CAAK,EAAIvT,EAAM,OAEtB,OAAO4S;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA,aAQIxT,EAAImU,EAAM,OAAO,KAAK;AAAA,cACrBnU,EAAImU,EAAM,OAAO,MAAM;AAAA,qBAChBnU,EAAImU,EAAM,OAAO,OAAS,CAAC;AAAA,GAEhD,CAGgB,SAAAiW,GACdvpB,EAC4B,CAC5B,KAAM,CAAC,eAAAwpB,EAAgB,MAAAzpB,CAAK,EAAIC,EAC1B,CAAC,MAAAsT,CAAK,EAAIvT,EAAM,OAChB0pB,EAAanW,EAAM,OAAO,MAC1BoW,EAAcpW,EAAM,OAAO,OAC3BqW,EAAerW,EAAM,OAAO,QAC5BrS,EAAOyoB,EAAcpW,EAAM,OAAO,QAAU,EAC5CsW,EAAgBH,EAAaE,EAAe,EAAI1oB,EAChD4oB,EAAsBJ,EAAa,EAAIxoB,EAAO,EAAI0oB,EAClD/L,EAAU4L,IAAmB,IAAQxpB,EAAM,WAAa,GAE9D,OAAO2S;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA,YAKGxT,EAAIwqB,CAAY;AAAA,WACjBxqB,EAAIwqB,CAAY;AAAA,cACbxqB,EAAI8B,CAAI;AAAA,aACT9B,EAAI8B,CAAI;AAAA,qBACA9B,EAAI8B,EAAO,CAAC;AAAA;AAAA,2BAENqS,EAAM,OAAO;AAAA,kCACNA,EAAM,OAAO;AAAA;AAAA;AAAA;AAAA,MAIzCsK,GACFjL;AAAAA,+BAC2BiX;AAAAA;AAAAA;AAAAA,MAGzBJ,GACF7W;AAAAA,+BAC2BkX;AAAAA;AAAAA,GAG/B,CChJA,MAAMrV,GAAOC,EAAO,KAAK0U,EAAgB,EACnC1L,GAAQhJ,EAAO,MAAM2U,EAAiB,EACtCU,GAAiBrV,EAAO,KAAK4U,EAA0B,EACvDU,GAAQtV,EAAO,KAAK6U,EAAiB,EACrCU,GAAQvV,EAAO,KAAqD8U,EAAiB,EAK9EU,GAASrV,EAAW,SAC/B5U,EACA2d,EACA,CACA,KAAM,CAAC,QAAAC,EAAS,UAAAC,EAAW,SAAArC,EAAU,cAAAsC,EAAe,SAAAC,EAAU,MAAA9e,KAAUgW,CAAS,EAAIjV,EAC/E0M,EAAMD,GAAgBkR,CAAY,EAExC,OAAAxa,EAAU,IAAM,CACVuJ,EAAI,UAENA,EAAI,QAAQ,cAAgBoR,GAAiB,GAEjD,EAAG,CAACA,EAAepR,CAAG,CAAC,EAGrB3B,EAAA,cAACyJ,GAAA,CAAK,UAAWqJ,EAAW,UAAQ,SAAS,MAAO5e,CAAAA,EAClD8L,EAAA,cAAC0S,GAAA,CACC,iBAAgB,CAACjC,GAAYuC,EAAW,GAAK,OAC5C,GAAG9I,EACJ,QAAS6I,IAAkB,IAAQF,EACnC,SAAUpC,GAAYuC,EACtB,KAAK,WACL,IAAKrR,EACP,EACA3B,EAAA,cAAC+e,GAAA,CAAe,cAAW,GAAC,YAAU,gBAAA,EACpC/e,EAAA,cAACgf,GAAA,IAAM,EACPhf,EAAA,cAACif,GAAA,CAAM,SAAUpM,EAAS,eAAgBE,CAAAA,CAAe,CAC3D,CACF,CAEJ,CAAC,EC5BKtJ,GAAOC,EAAO,KAAK7B,EAAkB,EAErCsX,GAAYzV,EAAO;AAAA;AAAA;AAAA;AAAA;AAAA,EAOnBgJ,GAAQhJ,EAAO,SACnBhD,GACAoB,GACAI,EACF,EAEMkX,GAAe1V,EAAO,IAC1BhB,GACAP,EACF,EAKakX,GAAWxV,EAAW,SACjC5U,EACA2d,EACA,CACA,KAAM,CACJ,OAAA3Q,EAAS,GACT,eAAAH,EACA,SAAA2O,EAAW,GACX,SAAAxa,EAAW,EACX,QAAAuY,EAAU,EACV,OAAA7F,EAAS,EACT,OAAAsB,KACGC,CACL,EAAIjV,EAEE0M,EAAMD,GAAgBkR,CAAY,EAElCL,EAAYpS,GAAAA,EAElB,OAAA0B,GAAkBF,EAAKG,CAAc,EAGnC9B,EAAA,cAACyJ,GAAA,CAAK,UAAQ,UAAA,EACZzJ,EAAA,cAACmf,GAAA,KACCnf,EAAA,cAAC0S,GAAA,CACC,UAAQ,WACR,cAAaH,EAAU,OACvB,YAAWA,EAAU,KACpB,GAAGrI,EACJ,UAAW/S,EAAalB,CAAQ,EAChC,SAAUkB,EAAaqX,CAAO,EAC9B,QAAS+D,EAAU,OACnB,OAAQpb,EAAa,CAAC,EACtB,MAAOob,EAAU,KACjB,QAAStI,EACT,SAAUwG,EACV,IAAK9O,CAAAA,CACP,EACA3B,EAAA,cAACof,GAAA,CACC,QAASnd,EACT,QAAS9K,EAAawR,CAAM,EAC5B,QAAS4J,EAAU,OACnB,MAAOA,EAAU,KACjB,cAAaA,EAAU,OACvB,YAAWA,EAAU,IAAA,CACvB,CACF,CACF,CAEJ,CAAC,EC7BK+M,GAA8C,CAAC,OAAQ,CAAC,EAExD7V,GAAOC,EAAO0I,EAAI,EAAE,MAAM,CAAC,YAAa,MAAM,CAAC,EAAEvK,EAAkB,EAEnEsX,GAAYzV,EAAO;AAAA;AAAA;AAAA;AAAA;AAAA,EAOnB6V,GAAS7V,EAAO0I,EAAI,EAAE,MAAM,CAAC,YAAa,MAAM,CAAC;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAUjDoN,GAAS9V,EAAO0I,EAAI,EAAE,MAAM,CAAC,YAAa,MAAM,CAAC;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAUjDM,GAAQhJ,EAAO,MACnBhD,GACAoB,GACAI,EACF,EAEMkX,GAAe1V,EAAO,KAC1BhB,GACAP,EACF,EAEMsX,GAAU/V,EAAOsE,CAAG;AAAA;AAAA;AAAA;AAAA,EAMpB0R,GAAWhW,EAAOsE,CAAG;AAAA;AAAA;AAAA;AAAA,EAMrB2R,GAAYjW,EAAO0I,EAAI;AAAA;AAAA;AAAA;AAAA;AAAA,EAUhBwN,GAAY/V,EAAW,SAClC5U,EACA2d,EACA,CACA,KAAM,CACJ,OAAA3Q,EAAS,GACT,YAAA4d,EACA,SAAApP,EAAW,GACX,SAAUqP,EAAe,EACzB,KAAApP,EACA,UAAAC,EACA,QAAAoP,EACA,QAASjP,EAAc,EACvB,OAAAkP,EACA,OAAQ3O,EAAa,EACrB,SAAA2B,EACA,MAAOzB,EAAY,EACnB,OAAA0O,EACA,eAAAne,EACA,KAAA2P,EAAO,OACP,OAAAxH,KACGC,CACL,EAAIjV,EAEE0M,EAAMD,GAAgBkR,CAAY,EAElCL,EAAYpS,KAEZlK,EAAWkB,EAAa2oB,CAAY,EACpCtR,EAAUrX,EAAa2Z,CAAW,EAClCnI,EAASxR,EAAaka,CAAU,EAChC3N,EAAQvM,EAAaoa,CAAS,EAG9B2O,EAAkB,QAAQL,CAAW,EACrCM,EAAW,QAAQzP,CAAI,EACvB0P,EAAgB,QAAQzP,CAAS,EACjCrI,EAAa,QAAQ2X,CAAM,EAC3B5X,EAAa,QAAQ2X,CAAM,EAEjCne,GAAkBF,EAAKG,CAAc,EAGrC,MAAMue,GAAuB5T,EAAa6T,IAA+C,CACvFA,GAAM,eAAe,EACrBA,GAAM,gBAAA,CACR,EAAG,EAAE,EAECC,EAAmB9T,EACtB6T,IAA+C,CAzLpD,IAAA1Q,GA0LM0Q,GAAM,eAAA,EACNA,GAAM,gBAEFP,EAAAA,GAASA,EAAQ,GAGrBnQ,GAAAjO,EAAI,UAAJ,MAAAiO,GAAa,MACf,CAAA,EACA,CAACmQ,EAASpe,CAAG,CACf,EAGM6e,EAAanpB,EACjB,IACE2oB,GACEhgB,EAAA,cAACuf,GAAA,CAAO,UAAS,GAAC,WAAU,GAAC,aAAY,GAAC,OAAQ5W,EAAQ,OAAO,SAAS,KAAK,SAAA,EAC7E3I,EAAA,cAAC,OAAA,KAAMggB,CAAO,CAChB,EAEJ,CAACA,EAAQrX,CAAM,CACjB,EAGM8X,GAAmBppB,EACvB,IACE2I,EAAA,cAACof,GAAA,CACC,QAASnd,EACT,WAAYoG,EACZ,WAAYC,EACZ,QAASK,EACT,QAAS4J,EAAU,OACnB,MAAOA,EAAU,KACjB,cAAaA,EAAU,OACvB,YAAWA,EAAU,IAEpB7B,EAAAA,GACC1Q,EAAA,cAACyf,GAAA,CAAQ,QAASjR,CAAAA,EAChBxO,EAAA,cAAC4J,GAAA,CAAK,KAAM3T,CACT0b,EAAAA,GAAejB,CAAI,GAAKA,EACxBkB,GAAmBlB,CAAI,GAAKmB,GAAcnB,CAAI,CACjD,CACF,EAGD,CAACwP,GAAmBvP,GACnB3Q,EAAA,cAAC0f,GAAA,CAAS,QAASlR,CACjBxO,EAAAA,EAAA,cAAC4J,GAAA,CAAK,KAAM3T,CAAAA,EACT0b,GAAehB,CAAS,GAAKA,EAC7BiB,GAAmBjB,CAAS,GAAKkB,GAAclB,CAAS,CAC3D,CACF,CAEJ,EAEF,CACE1O,EACAhM,EACAya,EACAC,EACAnC,EACA7F,EACA4J,EACA2N,EACA7X,EACAC,CACF,CACF,EAGMoY,EAAwBrpB,EAC5B,IACEmX,EAAQ,IAAKsH,IACPA,KAAM,EAAU,EAChBA,KAAM,GACNA,KAAM,EAAU,EAEbA,GAAI,CACZ,EACH,CAACtH,CAAO,CACV,EACMmS,EAAqBtpB,EACzB,IACEmX,EAAQ,IAAKsH,IACPA,KAAM,GACNA,KAAM,EAAU,EAChBA,KAAM,EAAU,EAEbA,GAAI,CACZ,EACH,CAACtH,CAAO,CACV,EACMoS,EAA8CvpB,EAClD,IAAO,OAAOwoB,GAAgB,SAAWA,EAAc/rB,GACvD,CAAC+rB,CAAW,CACd,EACMgB,GAAkBxpB,EACtB,IACE,CAACoZ,GACD,CAACuC,GACD6M,GACE7f,EAAA,cAAC2f,GAAA,CACC,YAAY,OACZ,QAASe,EACT,MAAOpB,GACP,KAAMxd,EAAiB,WAAa,WAEpC9B,EAAA,cAACwQ,GAAA,CACC,UAAQ,eACR,SAAUva,EACV,KAAM6qB,GACN,KAAK,QACL,QAASH,EACT,OAAQhY,EACP,GAAGiY,EACJ,QAASL,EACT,YAAaF,GACf,CACF,EAEJ,CACER,EACAa,EACAC,EACAC,EACA9e,EACA2O,EACAxa,EACAsqB,EACAF,GACA1X,EACAqK,CACF,CACF,EAGM+N,GAAa1pB,EACjB,IACE4oB,GACEjgB,EAAA,cAACwf,GAAA,CAAO,UAAS,GAAC,YAAW,GAAC,aAAY,GAAC,OAAQ7W,EAAQ,OAAO,SAAS,KAAK,SAAA,EAC9E3I,EAAA,cAAC,OAAA,KAAMigB,CAAO,CAChB,EAEJ,CAACtX,EAAQsX,CAAM,CACjB,EAEA,OACEjgB,EAAA,cAACyJ,GAAA,CAAK,UAAQ,YAAY,KAAM8I,EAAU,IACvCiO,EAAAA,EAEDxgB,EAAA,cAACmf,GAAA,KACCnf,EAAA,cAAC0S,GAAA,CACC,UAAQ,QACR,cAAaH,EAAU,OACvB,YAAWA,EAAU,KACpB,GAAGrI,EACJ,UAAWjU,EACX,UAAWkqB,EACX,WAAYC,GAAiBF,EAC7B,SAAU1R,EACV,QAAS+D,EAAU,OACnB,OAAQ7O,EACR,MAAO6O,EAAU,KACjB,QAAStI,EACT,SAAUwG,EACV,SAAUuC,EACV,IAAKrR,EACL,KAAM8P,CAAAA,CACR,EAECgP,GACAI,EACH,EAECE,EACH,CAEJ,CAAC,ECvWKtX,GAAOC,EAAO;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EA8CdsX,GAAStX,EAAO;AAAA;AAAA,EAIhBuX,GAAQvX,EAAO;AAAA;AAAA,EAMRwX,GAAerX,EAAW,SACrC5U,EACA0M,EACA,CACA,KAAM,IAAIuI,CAAS,EAAIjV,EAEvB,OACE+K,EAAA,cAACyJ,GAAA,CAAM,GAAGS,EAAW,IAAKvI,CAAAA,EACxB3B,EAAA,cAAC,OAAI,MAAM,KAAK,OAAO,KAAK,QAAQ,aAClCA,EAAA,cAACghB,GAAA,CAAO,EAAE,mWAAmW,EAC7WhhB,EAAA,cAACihB,GAAA,CAAM,EAAE,wLAAyL,CAAA,CACpM,CACF,CAEJ,CAAC,EChDKxX,GAAOC,EAAOuM,EAAK;AAAA;AAAA,EAOZkL,GAAUtX,EAAW,SAChC5U,EACA0M,EACA,CAnCF,IAAAiO,EAoCE,MAAMgM,EAAyBlH,KACzB1f,EAAQsL,KACR,CACJ,sBAAAga,EACA,gBAAAziB,EAAkB+jB,GAAA,KAAAA,OAAAA,EAAwB,QAC1C,SAAAnc,EACA,QAAAqc,EACA,SAAArL,EACA,mBAAoB2Q,EACpB,UAAArF,EAAY,SACZ,OAAAxF,EACA,OAAA7W,EACA,QAAAgW,GAAU9F,EAAA5a,EAAM,OAAO,QAAb,KAAA,OAAA4a,EAAoB,QAAQ,WACnC1F,CACL,EAAIjV,EACE0lB,EAAqBxjB,EAAaiqB,CAAsB,EACxDxO,EAAelR,GAAgBC,CAAG,EAClC,CAACwa,EAAkBC,CAAmB,EAAIrkB,EAA6B,IAAI,EAC3E,CAACskB,EAAeC,CAAgB,EAAIvkB,EAAgC,IAAI,EACxE,CAACyiB,EAAc+B,CAAe,EAAIxkB,EAAgC,IAAI,EACtE2kB,EAASC,GAAUR,EAAkBE,EAAe,CACxD,UAAAN,EACA,UAAW,CACT,CACE,KAAM,QACN,QAAS,CACP,QAASvB,EACT,QAAS,CACX,CACF,EACA,CACE,KAAM,kBACN,QAAS,CACP,QAAS,GACT,SAAU3iB,GAAmB,OAC7B,QAAS,CACX,CACF,EACA,CACE,KAAM,SACN,QAAS,CAAC,OAAQ,CAAC,EAAG,CAAC,CAAC,CAC1B,EACA,CACE,KAAM,OACN,QAAS,CACP,sBAAAyiB,EACA,mBAAAK,CACF,CACF,CACF,CACF,CAAC,EACK,CAAC,YAAAkC,CAAW,EAAIH,EAChB,CAAC2E,EAAQC,CAAS,EAAIvpB,EAAS,EAAK,EACpCwpB,EAAa9U,EAAY,IAAM6U,EAAU,EAAK,EAAG,EAAE,EACnDE,EAAc/U,EAAY,IAAM6U,EAAU,EAAI,EAAG,EAAE,EACnDG,GAAmBhV,EAAY,IAAM6U,EAAU,EAAI,EAAG,CAAA,CAAE,EACxDI,EAAmBjV,EAAY,IAAM6U,EAAU,EAAK,EAAG,CAAA,CAAE,EAK/DlpB,EAAU,IAAM,CACd,GAAI,CAACipB,EAAQ,OAEb,SAASM,EAAsBrB,GAAmB,CAC5C,CAACnE,GAGHA,IAAqBmE,GAAM,QAC1BA,GAAM,kBAAkB,MAAQnE,EAAiB,SAASmE,GAAM,MAAM,IAGvEgB,EAAU,EAAK,EACf,OAAO,oBAAoB,YAAaK,CAAqB,EAEjE,CAEA,OAAO,OAAA,iBAAiB,YAAaA,CAAqB,EAEnD,IAAM,CACX,OAAO,oBAAoB,YAAaA,CAAqB,CAC/D,CACF,EAAG,CAACN,EAAQlF,CAAgB,CAAC,EAE7B,MAAMc,EAAmB9kB,GAA8B,IAAI,EAE3DC,EAAU,IAAM,CACV6kB,EAAiB,UACnB,aAAaA,EAAiB,OAAO,EACrCA,EAAiB,QAAU,MAG7BA,EAAiB,QAAU,WAAW,IAAM,CAC1C,GAAIJ,EACF,GAAI,CACFA,GACF,MAAA,CAAE,CAIN,EAAG,CAAC,CACN,EAAG,CAACA,EAAaf,CAAO,CAAC,EAGzB1jB,EAAU,IAAM,CACVqY,GAAU6Q,EAAU,EAAK,CAC/B,EAAG,CAAC7Q,CAAQ,CAAC,EAGbrY,EAAU,IAAM,CACT0jB,GAASwF,EAAU,EAAK,CAC/B,EAAG,CAACxF,CAAO,CAAC,EAEZ,MAAM9G,GAAUtd,GAA8B,CAC5C4kB,EAAiB5kB,CAAE,EACnBkb,EAAa,QAAUlb,CACzB,EAEA,GAAI,CAAC+H,EAAU,OAAOO,EAAA,cAAAA,EAAA,SAAA,IAAE,EAExB,GAAIyQ,EAAU,OAAOhR,EAUrB,MAAMmiB,EAAgB7T,GAAatO,EARZ,CACrB,OAAQ8hB,EACR,QAASC,EACT,aAAcC,GACd,aAAcC,EACd,IAAKtF,CACP,CAE2D,EAErDyF,EACJ7hB,EAAA,cAACyJ,GAAA,CACC,UAAQ,UACP,GAAGS,EACH,GAAGwS,EAAO,WAAW,OACtB,IAAK1H,GACL,MAAO0H,EAAO,OAAO,OACrB,QAAShH,CAET1V,EAAAA,EAAA,cAACoS,GAAA,CAAK,OAAQ,EAAG,OAAQ1S,EAAQ,OAAQ,CAAA,EACtCoc,EACD9b,EAAA,cAACkhB,GAAA,CAAa,IAAK3E,EAAiB,MAAOG,EAAO,OAAO,KAAA,CAAO,CAClE,CACF,EAGF,OACE1c,EAAA,cAAAA,EAAA,cACG4hB,EAEAP,GACCrhB,EAAA,cAAAA,EAAA,cACGuW,GACCvW,EAAA,cAACsW,GAAA,CAAO,gBAAiB,OAAOC,GAAW,SAAWA,EAAS,MAAA,EAC5DsL,CACH,EAGD,CAACtL,GAAUsL,CACd,CAEJ,CAEJ,CAAC,EClMYpY,GAAOC,EAAO;AAAA;AAAA,EAOdoY,GAAUpY,EAAOsE,CAAG;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAWpB+T,GAAiBrY,EAAOiS,EAAO;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAWtCrM,GAASC;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA,EAaFyS,GAAsBtY,EAAO+F,EAAW;AAAA,eACtCH;AAAAA,ECvCC,SAAA2S,GAAmBhtB,EAAoD,CACrF,KAAM,CAAC,SAAAwK,EAAU,GAAAyiB,EAAI,SAAAC,EAAU,SAAA7Q,EAAU,MAAArd,CAAK,EAAIgB,EAE5CmtB,EAAc3V,EAAY,IAAM,CAGpC,WAAW,IAAM,CACf0V,EAASluB,CAAK,CAChB,EAAG,CAAC,CACN,EAAG,CAACkuB,EAAUluB,CAAK,CAAC,EAEdouB,EAAgB5V,EACnB6T,GAA8C,CACzCA,EAAM,MAAQ,SAAW,CAAC3I,GAAuB2I,EAAM,aAAa,GACtE8B,EAEJ,CAAA,EACA,CAACA,CAAW,CACd,EAEA,OACEpiB,EAAA,cAAC,KACC,CAAA,gBAAesR,EACf,UAAQ,qBACR,GAAI4Q,EACJ,KAAK,SACL,QAASE,EACT,UAAWC,CAAAA,EAEV5iB,CACH,CAEJ,CCtCgB,SAAA6iB,GACdjlB,EACAklB,EACmB,CACnB,OAAIA,EAAI,OAAS,eACR,CAAC,GAAGllB,EAAO,YAAa,KAAM,QAAS,GAAM,MAAOklB,EAAI,KAAK,EAGlEA,EAAI,OAAS,cACR,CAAC,GAAGllB,EAAO,QAAS,EAAI,EAG7BklB,EAAI,OAAS,YACR,CAAC,GAAGllB,EAAO,QAAS,GAAO,MAAO,IAAI,EAG3CklB,EAAI,OAAS,aACR,CAAC,GAAGllB,EAAO,YAAa,KAAM,MAAO,KAAM,MAAO,IAAI,EAG3DklB,EAAI,OAAS,cACR,CAAC,GAAGllB,EAAO,QAAS,GAAO,MAAO,IAAI,EAG3CklB,EAAI,OAAS,YACR,CAAC,GAAGllB,EAAO,MAAOA,EAAM,OAASklB,EAAI,KAAK,EAG/CA,EAAI,OAAS,sBACR,CAAC,GAAGllB,EAAO,YAAaklB,EAAI,MAAO,YAAaA,EAAI,aAAellB,EAAM,WAAW,EAGzFklB,EAAI,OAAS,sBAEXllB,EAAM,cAAgBklB,EAAI,YAAoBllB,EAE3C,CAAC,GAAGA,EAAO,YAAaklB,EAAI,WAAW,EAG5CA,EAAI,OAAS,eACR,CAAC,GAAGllB,EAAO,YAAaklB,EAAI,MAAO,MAAO,KAAM,MAAOA,EAAI,KAAK,EAGlEllB,CACT,CC5Ca,MAAAmlB,GAAmC,CAC9C,UACA,QACA,MACA,QACA,OACA,MACA,SACA,WACA,OACA,MACA,UACF,EAKaC,GAA+C,CAAC,EAAG,EAAG,EAAG,CAAC,EAK1DC,GAA4C,eAK5CC,GAAwD,CAAC,WAAW,EC6C3EC,GAAqB,CAAC3uB,EAAe4uB,IACzCA,EAASA,EAAO,MAAQ5uB,EAEpB6uB,GAAsB,CAACC,EAAeF,IAC1CA,EAAO,MAAM,cAAc,QAAQE,EAAM,YAAA,CAAa,EAAI,GAEtDC,GAAoBnZ,EAAW,SAGnC5U,EAsBA0M,EACA,CACA,KAAM,CACJ,OAAAM,EAAS,GACT,eAAAH,EACA,SAAA2O,EACA,aAAcwS,EACd,SAAAhtB,EAAW,EACX,KAAAya,EACA,GAAAwR,EACA,QAAAgB,EAAU,GACV,QAAArS,EACA,OAAAsS,EACA,SAAAvK,EACA,QAAAwK,EACA,cAAAC,EACA,SAAAlB,EACA,WAAAmB,EACA,QAASC,EACT,QAASzS,EAAc,EACvB,QAAA0S,EAAU,CAAA,EACV,OAAAxD,EACA,OAAArX,EAAS,EACT,SAAAqK,EACA,gBAAAyQ,EACA,aAAcC,EACd,cAAAC,EACA,YAAAC,EAAchB,GACd,OAAA3C,EACA,MAAO4D,KACJ3Z,CACL,EAAIjV,EAEE,CAACoI,GAAOymB,CAAQ,EAAIC,GAAWzB,GAAqB,CACxD,YAAauB,GAAa,KAC1B,QAAS,GACT,YAAa,GACb,MAAO,KACP,MAAOA,GAAa,IACtB,CAAC,EAEK,CAAC,YAAAG,EAAa,QAAAC,GAAS,YAAAC,EAAa,MAAAnB,EAAO,MAAA9uB,CAAK,EAAIoJ,GAEpD8mB,GAAsB1X,EAC1B,CAAC,CAAC,MAAAxY,CAAK,IACL+L,EAAA,cAACoS,GAAA,CAAK,UAAQ,SAAS,QAAStB,EAAa,OAAQ,EAAG,KAAK,SAAA,EAC3D9Q,EAAA,cAAC4J,GAAA,CAAK,KAAM3T,EAAU,aAAa,UAAA,EAChChC,CACH,CACF,EAEF,CAACgC,EAAU6a,CAAW,CACxB,EAEMsT,GACJ,OAAOV,GAAqB,WAAaA,EAAmBS,GACxDE,GACJ,OAAOpB,GAAqB,WAAaA,EAAmBH,GACxD,CAACwB,GAAaC,EAAc,EAAIxsB,EAAgC,IAAI,EACpE,CAACysB,GAAuBC,EAAwB,EAAI1sB,EAAgC,IAAI,EACxF2sB,GAAkBvsB,GAAgC,IAAI,EACtDwsB,GAAoBxsB,GAA8B,IAAI,EACtDysB,GAAoBzsB,GAA2B,IAAI,EACnDwe,GAAWxe,GAAOlE,CAAK,EACvB4wB,GAAe1sB,GAAO0rB,CAAS,EAC/BjR,GAAelR,GAAgBC,CAAG,EAClCmjB,GAAwB3sB,GAAO,EAAK,EACpC4sB,GAAY,GAAG7C,YACf8C,GAAU,MAAM,QAAQzB,CAAW,EAAIA,EAAc1vB,GACrD2a,GAAUrX,EAAa2Z,CAAW,EAClCmU,GAAgB5tB,EACpB,IAAOpD,IAAU,KAAO+wB,GAAQ,KAAME,GAAMA,EAAE,QAAUjxB,CAAK,EAAI,OACjE,CAAC+wB,GAAS/wB,CAAK,CACjB,EACMkxB,GAAkB9tB,EACtB,IAAM2tB,GAAQ,OAAQnC,GAAYE,EAAQsB,GAAatB,EAAOF,CAAM,EAAI,EAAK,EAC7E,CAACwB,GAAcW,GAASjC,CAAK,CAC/B,EACMqC,GAAqBD,GAAgB,OACrCE,GAAerB,EAAc,GAAG9B,YAAa8B,IAAgB,OAC7DsB,GAAYvC,IAAU,MAAQlS,GAAaoT,IAAWlB,IAAU,KAEhEwC,GAAiB9Y,EACpB6T,GAA8C,CAC7C,WAAW,IAAM,CAIf,GAAIwE,GAAsB,QACxB,OAGF,MAAM9sB,IAA2ByrB,GAAmB,CAAA,GAAI,OACtDa,GAAc,CAACA,EAAW,EAAI,CAAA,EAC9BE,GAAwB,CAACA,EAAqB,EAAI,CACpD,CAAA,EAEA,IAAIgB,GAAc,GAElB,GAAI,SAAS,eACX,UAAWC,MAAKztB,GACd,GAAIytB,KAAM,SAAS,eAAiBA,GAAE,SAAS,SAAS,aAAa,EAAG,CACtED,GAAc,GACd,KACF,EAIAA,KAAgB,KAClB1B,EAAS,CAAC,KAAM,WAAW,CAAC,EAC5BgB,GAAsB,QAAU,GAC5BzB,GAAeA,EAAc,IAAI,EACjCF,GAAQA,EAAO7C,CAAK,EAE5B,EAAG,CAAC,CACN,EACA,CAAC6C,EAAQE,EAAeI,EAAiBe,GAAuBF,EAAW,CAC7E,EAEMoB,GAAkBjZ,EAAa6T,GAA4B,CAC/D,MAAMqF,GAAiBhB,GAAkB,QACnCiB,GAAiBtF,EAAM,kBAAkB,YAAcA,EAAM,OAAS,KAE5EsE,GAAkB,QAAUgB,GAE5B,MAAMC,GAAkB,QACtBF,IAAkBC,IAAkBD,GAAe,SAASC,EAAc,CAC5E,EAEA9B,EAAS,CAAC,KAAM,sBAAuB,YAAa+B,EAAe,CAAC,CACtE,EAAG,CAAE,CAAA,EAECC,GAAqBrZ,EACxBqJ,GAAc,CAjPnB,IAAAlG,GAkPMkU,EAAS,CAAC,KAAM,eAAgB,MAAOhO,CAAC,CAAC,EAEzCgP,GAAsB,QAAU,GAE5B3C,GAAUA,EAASrM,CAAC,EAExBa,GAAS,QAAUb,EAEf8C,GAAUA,EAAS9C,CAAC,EACpBuN,GAAeA,EAAc,IAAI,GAErCzT,GAAA8U,GAAgB,UAAhB,MAAA9U,GAAyB,MAC3B,CAAA,EACA,CAACgJ,EAAUuJ,EAAUkB,CAAa,CACpC,EAEM0C,GAAoBtZ,EACvB6T,GAA4C,CAnQjD,IAAA1Q,GAAAC,GAoQM,GAAIyQ,EAAM,MAAQ,YAAa,CAG7B,GAFAA,EAAM,iBAEF,CAAC8E,GAAoB,OAEzB,MAAMY,GAAeb,GAAgB,KAAMD,IAAMA,GAAE,QAAUlB,CAAW,EAClEiC,GAAcD,GAAeb,GAAgB,QAAQa,EAAY,EAAI,GACrEE,GAAmBf,IAAiBc,GAAc,GAAKb,IAEzDc,IACFpC,EAAS,CAAC,KAAM,sBAAuB,MAAOoC,GAAiB,MAAO,YAAa,EAAI,CAAC,EAG1F,MACF,CAEA,GAAI5F,EAAM,MAAQ,UAAW,CAG3B,GAFAA,EAAM,eAAA,EAEF,CAAC8E,GAAoB,OAEzB,MAAMY,GAAeb,GAAgB,KAAMD,IAAMA,GAAE,QAAUlB,CAAW,EAClEiC,GAAcD,GAAeb,GAAgB,QAAQa,EAAY,EAAI,GACrEE,GACJf,GACEc,KAAgB,GACZb,GAAqB,GACpBA,GAAqBa,GAAc,GAAKb,IAG7Cc,IACFpC,EAAS,CAAC,KAAM,sBAAuB,MAAOoC,GAAiB,MAAO,YAAa,EAAI,CAAC,EAG1F,MACF,CAEA,GAAI5F,EAAM,MAAQ,SAAU,CAC1BwD,EAAS,CAAC,KAAM,aAAa,CAAC,EAC9BgB,GAAsB,QAAU,GAC5BzB,GAAeA,EAAc,IAAI,GACrCzT,GAAA8U,GAAgB,UAAhB,MAAA9U,GAAyB,MAAA,EAEzB,MACF,CAEA,MAAMnX,GAAS6nB,EAAM,OACf6F,GAASxB,GAAkB,QAEjC,IACGwB,KAAW1tB,KAAU0tB,IAAA,KAAA,OAAAA,GAAQ,SAAS1tB,EAAAA,KACvC,CAAC+pB,GAAiC,SAASlC,EAAM,GAAG,EACpD,EACAzQ,GAAA6U,GAAgB,UAAhB,MAAA7U,GAAyB,MAEzB,EAAA,MACF,CACF,EACA,CAACmU,EAAamB,GAAiBC,GAAoB/B,CAAa,CAClE,EAEM+C,GAAoB3Z,EACvB6T,GAA+C,CAC9C,MAAM+F,GAAY/F,EAAM,cAAc,MAEtCwD,EAAS,CAAC,KAAM,eAAgB,MAAOuC,EAAS,CAAC,EAE7ChD,GAAeA,EAAcgD,EAAS,CAC5C,EACA,CAAChD,CAAa,CAChB,EAEMiD,GAAmB7Z,EACtB6T,GAA8C,CACxC2D,KACHH,EAAS,CAAC,KAAM,aAAa,CAAC,EAE1BV,GAASA,EAAQ9C,CAAK,EAE9B,EACA,CAAC2D,GAASb,CAAO,CACnB,EAEMmD,GAA0B9Z,EAAY,IAAM,CAChDqY,GAAsB,QAAU,EAClC,EAAG,CAAA,CAAE,EAEC0B,GAA0B/Z,EAAY,IAAM,CAChDqY,GAAsB,QAAU,EAClC,EAAG,CAAA,CAAE,EAEC2B,GAAyBha,EAAY,IAAM,CA/VnD,IAAAmD,EAgWIkU,EAAS,CAAC,KAAM,YAAY,CAAC,EAC7BnN,GAAS,QAAU,GACfiC,GAAUA,EAAS,EAAE,EACrByK,GAAeA,EAAc,IAAI,GACrCzT,EAAA8U,GAAgB,UAAhB,MAAA9U,EAAyB,MAC3B,CAAA,EAAG,CAACgJ,EAAUyK,CAAa,CAAC,EAEtBqD,GAAyBja,EAAY,IAAM,CAC/CqX,EAAS,CAAC,KAAM,aAAa,CAAC,CAChC,EAAG,EAAE,EAGL1rB,EAAU,IAAM,CACd,GAAIyrB,IAAcgB,GAAa,QAAS,CACtCA,GAAa,QAAUhB,EAEnBA,IAAc,SAChBC,EAAS,CAAC,KAAM,eAAgB,MAAOD,CAAS,CAAC,EACjDlN,GAAS,QAAUkN,GAGrB,MACF,CAEIA,IAAc5vB,GAChB6vB,EAAS,CAAC,KAAM,eAAgB,MAAOD,GAAa,IAAI,CAAC,CAE7D,EAAG,CAACA,EAAW5vB,CAAK,CAAC,EAGrBmE,EAAU,IAAM,CACT6rB,IACCtN,GAAS,SACXmN,EAAS,CAAC,KAAM,sBAAuB,MAAOnN,GAAS,OAAO,CAAC,CAGrE,EAAG,CAACsN,EAAO,CAAC,EAGZ7rB,EAAU,IAAM,CACd,MAAMuuB,EAAchC,GAAkB,QAEtC,GAAI,CAACgC,EAAa,OAElB,MAAMX,GAAeb,GAAgB,KAAMD,IAAMA,GAAE,QAAUlB,CAAW,EAExE,GAAIgC,GAAc,CAChB,MAAMC,GAAcd,GAAgB,QAAQa,EAAY,EAClDY,GAAoBD,EAAY,WAAWV,IAEjD,GAAIW,GAAmB,CACrB,GAAI1O,GAAU0O,EAAiB,EAE7B,OAGFvO,GAAqBuO,EAAiB,CACxC,CACF,CACF,EAAG,CAAC5C,EAAamB,EAAe,CAAC,EAEjC,MAAMnQ,GAASvI,EACZ/U,GAAgC,CAC/BgtB,GAAgB,QAAUhtB,EAC1Bkb,GAAa,QAAUlb,CACzB,EACA,CAACkb,EAAY,CACf,EAEMiN,GAAcxoB,EAAQ,IAAM,CAChC,GAAI,CAACwZ,GAAW,CAACJ,GAAYxc,EAC3B,MAAO,CACL,aAAc,QACd,QAASyyB,EACX,CAIJ,EAAG,CAACjW,EAAUiW,GAAwB7V,EAAS5c,CAAK,CAAC,EAE/C4yB,GAAuBxvB,EAC3B,IACEmX,GAAQ,IAAKsH,GACPA,IAAM,EAAU,EAChBA,IAAM,GACNA,IAAM,EAAU,EAEbA,EAAI,CACZ,EACH,CAACtH,EAAO,CACV,EACMsY,GAAoBzvB,EACxB,IACEmX,GAAQ,IAAKsH,GACPA,IAAM,GACNA,IAAM,EAAU,EAChBA,IAAM,EAAU,EAEbA,EAAI,CACZ,EACH,CAACtH,EAAO,CACV,EACMuY,GAA+C1vB,EACnD,IAAO,OAAOisB,GAAe,SAAWA,EAAaxvB,GACrD,CAACwvB,CAAU,CACb,EAEM0D,GAAkBva,EACrB6T,GAA+C,CAC9CwD,EAAS,CACP,KAAM,YACN,MAAO7vB,EAAQ2vB,EAAY3vB,EAAOgxB,EAAa,EAAI,EACrD,CAAC,EAEG8B,GAAgB,SAASA,GAAgB,QAAQzG,CAAK,EAE1DjJ,GAAK,IAAG,CApdd,IAAAzH,GAodiB,OAAAA,GAAA8U,GAAgB,UAAhB,KAAA,OAAA9U,GAAyB,OAAO,CAAA,CAC7C,EACA,CAACqV,GAAe8B,GAAiBnD,EAAa3vB,CAAK,CACrD,EAEMgzB,GAAiB5vB,EACrB,IACE,CAACoZ,GAAY,CAACuC,GAAYsQ,EACxBtjB,EAAA,cAACgO,EAAA,CAAI,cAAasX,GAAU,QAASuB,EACnC7mB,EAAAA,EAAA,cAACwQ,GAAA,CACC,aAAW,OACX,SAAU8U,GACV,SAAUrvB,EACV,KAAMixB,GACN,KAAK,QACL,QAASJ,GACR,GAAGC,GACJ,QAASC,EACX,CAAA,CACF,EACE,OACN,CACEvW,EACA6U,GACArvB,EACA+wB,GACA1D,EACAuD,GACAC,GACAC,GACA/T,CACF,CACF,EAEMmU,GAAa9vB,EAAQ,IACrB0rB,IAAU,KACR9uB,IAAU,KACL2vB,EAAY3vB,EAAOgxB,EAAa,EAGlC,GAGFlC,EACN,CAACkC,GAAelC,EAAOa,EAAa3vB,CAAK,CAAC,EAEvCsU,GACJvI,EAAA,cAAC4f,GAAA,CACE,GAAG1V,EACJ,wBAAuBmb,GACvB,oBAAkB,OAClB,gBAAeC,GACf,YAAWP,GACX,eAAe,MACf,aAAa,MACb,YAAY,MACZ,OAAQ9iB,EACR,YAAa4d,GACb,eAAgB/d,EAChB,SAAU2O,EACV,SAAUxa,EACV,KAAMya,EACN,UAAWG,GAAWmR,GACtB,GAAIE,EACJ,UAAU,SACV,SAAUkE,GACV,QAASK,GACT,QAASH,GACT,QAAS9X,GACT,OAAQwR,EACR,OAAQrX,EACR,SAAUqK,EACV,IAAKgC,GACL,KAAK,WACL,WAAY,GACZ,OAAQiL,GAAUgH,GAClB,MAAOE,GACT,EAGIC,GAAuB3a,EAC1B6T,GAA+C,CAriBpD,IAAA1Q,GAuiBU0Q,EAAM,MAAQ,OACZ4D,KAAatU,GAAA8U,GAAgB,UAAhB,MAAA9U,GAAyB,QAE9C,EACA,CAACsU,CAAW,CACd,EAEMpI,GAAUzkB,EAAQ,IAClB8tB,GAAgB,SAAW,EAAU,KAGvCnlB,EAAA,cAAC8hB,GAAA,CACC,UAAQ,wBACR,UAAWsF,GACX,QAAS,EACR,GAAGlE,EACJ,SAAU,EAEVljB,EAAAA,EAAA,cAACme,GAAA,CACC,GAAG,KACH,uBAAsB,GACtB,UAAQ,4BACR,GAAI4G,GACJ,IAAKJ,GACL,KAAK,UACL,MAAO,CAAA,EAENQ,GAAgB,IAAKtC,GAAW,CAC/B,MAAMwE,GACJrD,IAAgB,KAAOnB,EAAO,QAAUmB,EAAciB,KAAkBpC,EAE1E,OACE7iB,EAAA,cAACiiB,GAAA,CACC,GAAI,GAAGC,YAAaW,EAAO,QAC3B,IAAKA,EAAO,MACZ,SAAUiD,GACV,SAAUuB,GACV,MAAOxE,EAAO,KAEb9U,EAAAA,GAAaqW,GAAavB,CAAM,EAAG,CAClC,SAAUhS,EACV,SAAUwW,GACV,SAAUnD,GAAemD,GAAS,EAAI,EACxC,CAAC,CACH,CAEJ,CAAC,CACH,CACF,EAED,CACDrD,EACAiB,GACAE,GACAW,GACAsB,GACAlF,EACAgB,EACA6B,GACAb,EACArT,EACAuT,EACF,CAAC,EAEKkD,GAAUjwB,EAAQ,IAClBssB,EACKA,EACL,CACE,QAAA7H,GACA,OAAQ,CAACwJ,GACT,aAAcZ,GAAgB,QAC9B,aAAc6B,GACd,aAAcC,EAChB,EACA/B,EACF,EAGEW,KAAuB,EAClB,KAIPplB,EAAA,cAAC+hB,GAAA,CACC,mBAAoBU,GACpB,MAAO,GACP,cAAa,GACb,QAAS3G,GACT,mBAAoB6G,GACpB,oBAAmB,GACnB,aAAc4D,GACd,aAAcC,GACd,KAAMlB,GACN,UAAW5C,GACX,OAAM,GACN,OAAQ/Z,EACR,IAAK8b,GACL,iBAAkBC,GAAgB,QACjC,GAAGlB,CAAAA,CACN,EAED,CACD1H,GACAwJ,GACAF,GACAmB,GACAC,GACAhD,EACA7a,EACAgb,CACF,CAAC,EAED,OACE3jB,EAAA,cAACyJ,GAAA,CACC,UAAQ,eACR,OAAQ8b,GACR,QAASG,GACT,UAAWK,GACX,IAAKxB,IAEJhc,GACA+e,EACH,CAEJ,CAAC,EAKYC,GAAevE,GCrqBfvZ,GAAOC,EAAO;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAUd8d,GAAe9d,EAAO8G,EAAM;AAAA;AAAA;AAAA,ECY5BiX,GAAc5d,EAAW,SACpC5U,EACA0M,EACA,CACA,KAAM,CAAC,SAAAlC,EAAU,UAAAiO,EAAW,UAAAga,EAAW,MAAOC,EAAW,KAAMzd,CAAS,EAAIjV,EACtEyO,EAAQvM,EAAawwB,CAAQ,EAC7B,CAAC7M,EAAM8M,CAAO,EAAI7vB,EAAS,EAAK,EAChC,CAAC8vB,EAAeC,CAAgB,EAAI/vB,EAAmC,IAAI,EAC3E,CAACgwB,EAAgBC,CAAiB,EAAIjwB,EAAgC,IAAI,EAE1EkwB,EAAWxb,EAAY,IAAMmb,EAAQ,EAAK,EAAG,CAAA,CAAE,EAC/CM,EAASzb,EAAY,IAAMmb,EAAQ,EAAI,EAAG,CAAA,CAAE,EAElDjwB,GAAgBswB,EAAU,CAACJ,EAAeE,CAAc,CAAC,EAEzD,MAAMI,EAAW9wB,EACf,IACE+wB,GAAS,QAAQ3oB,CAAQ,EAAE,OAAQgO,GAC1BkE,GAAelE,CAAK,CAC5B,EACH,CAAChO,CAAQ,CACX,EAEMkZ,EAAQthB,EAAQ,IAAM,CAC1B,MAAM4P,EAAMkhB,EAAS,OAErB,GAAIza,GAAazG,EAAMyG,EAAW,CAChC,MAAM2a,EAAe,KAAK,KAAK3a,EAAY,CAAC,EACtC4a,EAAc,KAAK,MAAM5a,EAAY,CAAC,EAE5C,MAAO,CACL,GAAGya,EAAS,MAAM,EAAGE,EAAe,CAAC,EACrCroB,EAAA,cAAC2b,GAAA,CACC,cAAa,GACb,QACE3b,EAAA,cAACme,GAAA,CAAM,GAAG,KAAK,SAAS,OAAO,QAASza,EAAO,MAAOA,CACnDykB,EAAAA,EAAS,MAAME,EAAe,EAAGphB,EAAMqhB,CAAW,CACrD,EAEF,IAAI,SACJ,KAAMxN,EACN,UAAU,MACV,OAAM,GACN,IAAKkN,CAAAA,EAELhoB,EAAA,cAACwnB,GAAA,CACC,SAAU,EACV,KAAK,QACL,QAAS1M,EAAOmN,EAAWC,EAC3B,QAAS,EACT,IAAKJ,EACL,SAAUhN,EACV,KAAK,QACP,CAAA,CACF,EACA,GAAGqN,EAAS,MAAMlhB,EAAMqhB,CAAW,CACrC,CACF,CAEA,OAAOH,CACT,EAAG,CAACF,EAAUC,EAAQxa,EAAWoN,EAAMqN,EAAUzkB,CAAK,CAAC,EAEvD,OACE1D,EAAA,cAACyJ,GAAA,CAAK,UAAQ,cAAe,GAAGS,EAAW,IAAKvI,CAAAA,EAC7CgX,EAAM,IAAI,CAACmB,EAAME,IAChBha,EAAA,cAACuoB,GAAA,CAAS,IAAKvO,CACZA,EAAAA,EAAY,GACXha,EAAA,cAACgO,EAAA,CAAI,cAAW,GAAC,GAAG,KAAK,SAAUtK,CAChCgkB,EAAAA,GAAa1nB,EAAA,cAAC4J,GAAA,CAAK,MAAK,EAAC,EAAA,GAAC,CAC7B,EAEF5J,EAAA,cAACgO,EAAA,CAAI,GAAG,MAAM8L,CAAK,CACrB,CACD,CACH,CAEJ,CAAC,EC1FM,SAAS0O,GAAY,CAAC,MAAAxzB,CAAK,EAA0B,CAC1D,MAAMkH,EAAQlH,EAAM,OAAO,MAAM,KAEjC,MAAO,CACL,kBAAmB,CACjB,QAAS,MACX,EAEA,IAAK,EACL,KAAM,EACN,MAAO,EACP,OAAQ,EACR,WAAY,SACZ,eAAgB,SAChB,QAAS,OACT,WAAYkH,EAAM,OAAO,KAC3B,CACF,CAEgB,SAAAusB,GACdxzB,EACa,CACb,KAAM,CAAC,MAAAD,CAAK,EAAIC,EACV,CAAC,MAAAV,CAAK,EAAIS,EAAM,OAEtB,OAAOV,EAAYC,EAAOU,EAAM,UAAYyzB,IAAc,CAAC,KAAM,CAAC,SAAAA,CAAQ,CAAC,EAAE,CAC/E,CCvBA,MAAMv0B,GAAM,OAAO,IAAI,2BAA2B,EAElDgL,EAAYhL,IAAOgL,EAAYhL,KAAQiL,GAAkC,CAAC,QAAS,CAAG,CAAC,EAK1E,MAAAupB,GAAmDxpB,EAAYhL,ICdrE,SAASy0B,IAAgC,CAC9C,OAAOppB,GAAWmpB,EAAa,CACjC,CCwDA,MAAMlf,GAAOC,EAAOuM,EAAK,EACvBxN,GACA+f,GACAC,EACF,EAEMI,GAAkBnf,EAAOmK,EAAS;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAWlCiV,GAAiBpf,EAAO0I,EAAI;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAU5B2W,GAAerf,EAAO2F,EAAI;AAAA;AAAA;AAAA;AAAA,EAM1B2Z,GAAetf,EAAO0I,EAAI;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAe1B6W,GAAgBvf,EAAOsE,CAAG;AAAA;AAAA;AAAA;AAAA;AAAA,EAO1Bkb,GAAexf,EAAOsE,CAAG;AAAA;AAAA;AAAA;AAAA,EAMzBmb,GAAatf,EAAW,SAC5B5U,EACA0M,EACA,CACA,KAAM,CACJ,qBAAsBynB,EACtB,2BAA4BC,EAC5B,SAAA5pB,EACA,WAAA6pB,EACA,OAAAC,EACA,OAAAC,EACA,GAAAtH,EACA,eAAAuH,EACA,QAAAC,EACA,OAAQrY,EACR,OAAA3R,EACA,OAAQiqB,EACR,MAAOzN,CACT,EAAIjnB,EACE0T,EAASxR,EAAaka,CAAU,EAChCvI,EAAS3R,EAAawyB,CAAU,EAChC7V,EAAQ3c,EAAa+kB,CAAS,EAC9BtJ,EAAelR,GAAgBC,CAAG,EAClC,CAAC2iB,EAAaC,CAAc,EAAIxsB,EAAgC,IAAI,EACpE6xB,EAAkBzxB,GAA8B,IAAI,EACpD0xB,EAAQvU,KACR,CAAC,WAAAwU,CAAU,EAAID,EACfE,EAAU,GAAG7H,UACb8H,EAAkB,QAAQN,CAAO,GAAKL,IAAoB,GAC1DY,EAAa,QAAQT,CAAM,GAAKQ,EAEtC5xB,EAAU,IAAM,CACV,CAACgxB,GAGDxW,EAAa,SACfyF,GAAqBzF,EAAa,OAAO,CAE7C,EAAG,CAACwW,EAAWxW,CAAY,CAAC,EAE5B/Y,GACE4S,EACG6T,GAAyB,CACpB,CAACwJ,GAAc,CAACJ,GAEhBpJ,EAAM,MAAQ,WAChBA,EAAM,eAAe,EACrBA,EAAM,gBACNoJ,EAAAA,EAAAA,EAEJ,EACA,CAACI,EAAYJ,CAAO,CACtB,CACF,EAEA/xB,GACE8U,EAAY,IAAM,CACZ,CAACqd,GAAc,CAACL,GAEpBA,EACF,CAAA,EAAG,CAACK,EAAYL,CAAc,CAAC,EAC/B,CAACnF,CAAW,CACd,EAEA,MAAMtP,EAASvI,EACZ/U,GAA8B,CAC7B6sB,EAAe7sB,CAAE,EACjBkb,EAAa,QAAUlb,CACzB,EACA,CAACkb,CAAY,CACf,EAEMsX,EAAgBzd,EACnB/U,GAA8B,CAC7BkyB,EAAgB,QAAUlyB,EACtB,OAAO4xB,GAAe,WAAYA,EAAW5xB,CAAE,EAC1C4xB,IAAYA,EAAW,QAAU5xB,EAC5C,EACA,CAAC4xB,CAAU,CACb,EAEA,OACEtpB,EAAA,cAAC6oB,GAAA,CAAgB,UAAQ,aAAa,MAAO/U,CAAAA,EAC3C9T,EAAA,cAAC8oB,GAAA,CAAe,OAAQngB,EAAQ,IAAKqM,EAAQ,OAAQtV,EAAQ,OAAQoJ,CAAAA,EACnE9I,EAAA,cAAC+oB,GAAA,CAAa,UAAU,QAAA,EACrBkB,GACCjqB,EAAA,cAACgpB,GAAA,KACChpB,EAAA,cAACqP,GAAA,KACCrP,EAAA,cAACgO,EAAA,CAAI,KAAM,EAAG,QAAS,CAAA,EACpBwb,GACCxpB,EAAA,cAAC4J,GAAA,CAAK,GAAImgB,EAAS,OAAO,UACvBP,EAAAA,CACH,CAEJ,EACCQ,GACChqB,EAAA,cAACgO,EAAA,CAAI,QAAS,CACZhO,EAAAA,EAAA,cAACwQ,GAAA,CACC,aAAW,eACX,SAAU,CAACkZ,EACX,KAAM5I,GACN,KAAK,QACL,QAAS4I,EACT,QAAS,CACX,CAAA,CACF,CAEJ,CACF,EAGF1pB,EAAA,cAACipB,GAAA,CAAc,KAAM,EAAG,IAAKiB,EAAe,SAAU,EACnDzqB,EAAAA,CACH,EAEC8pB,GAAUvpB,EAAA,cAACkpB,GAAA,KAAcK,CAAO,CACnC,CACF,CACF,CAEJ,CAAC,EAKYY,GAAStgB,EAAW,SAC/B5U,EACA0M,EACA,CA9PF,IAAAiO,EA+PE,MAAMwa,EAASxB,GACT5zB,EAAAA,EAAQsL,GAAS,EACjB,CACJ,qBAAsB8oB,EAAY,GAClC,2BAA4BC,EAAkB,GAC9C,WAAYgB,EAAiB,EAC7B,WAAAC,EAAa,EACb,SAAA7qB,EACA,WAAA6pB,EACA,OAAAC,EACA,OAAAC,EACA,GAAAtH,EACA,eAAAuH,EACA,QAAAC,EACA,QAAS5Y,EAAc,EACvB,OAAAyF,EACA,SAAUgU,EAAeH,EAAO,UAAY,QAC5C,OAAA1qB,EACA,MAAOwc,EAAY,EACnB,QAAS1G,EAAc4U,EAAO,WAAWxa,EAAA5a,EAAM,OAAO,QAAb,KAAA4a,OAAAA,EAAoB,OAAO,YACjE1F,CACL,EAAIjV,EACEu1B,EAAarzB,EAAakzB,CAAc,EACxC7b,EAAUrX,EAAa2Z,CAAW,EAClC4X,EAAWvxB,EAAaozB,CAAY,EACpCzW,EAAQ3c,EAAa+kB,CAAS,EAC9BxG,EAAUve,EAAaqe,CAAW,EAClCiV,EAAYtyB,GAA8B,IAAI,EAC9CuyB,EAAavyB,GAA8B,IAAI,EAC/CwyB,GAAUxyB,GAA8B,IAAI,EAE5CqpB,EAAc/U,EAAa6T,IAA4C,CAC3E,MAAM7nB,EAAS6nB,GAAM,OACfsK,EAAcD,GAAQ,QAE5B,GAAKC,EAIL,CAAInyB,GAAAA,IAAWgyB,EAAU,QAAS,CAChCnS,GAAoBsS,CAAW,EAE/B,MACF,CAEA,GAAInyB,IAAWiyB,EAAW,QAAS,CACjCrS,GAAqBuS,CAAW,EAEhC,MACF,CACF,CAAA,EAAG,CAAE,CAAA,EAECb,EAAU,GAAG7H,UAEnB,OACEliB,EAAA,cAACsW,GAAA,CAAO,gBAAiBC,CACvBvW,EAAAA,EAAA,cAACyJ,GAAA,CACE,GAAGS,EACJ,SAAUsE,EACV,UAAWka,EACX,kBAAiBqB,EACjB,aAAU,GACV,UAAQ,SACR,GAAI7H,EACJ,QAASV,EACT,IAAK7f,EACL,KAAK,SACL,QAAS+T,CAAAA,EAET1V,EAAA,cAAC,MAAI,CAAA,IAAKyqB,EAAW,SAAU,CAAG,CAAA,EAClCzqB,EAAA,cAACmpB,GAAA,CACC,qBAAsBC,EACtB,2BAA4BC,EAC5B,WAAYC,EACZ,OAAQC,EACR,OAAQC,EACR,GAAItH,EACJ,eAAgBuH,EAChB,QAASC,EACT,OAAQc,EACR,IAAKG,GACL,OAAQjrB,EACR,OAAQ4qB,EACR,MAAOxW,CAENrU,EAAAA,CACH,EACAO,EAAA,cAAC,MAAA,CAAI,IAAK0qB,EAAY,SAAU,CAAA,CAAG,CACrC,CACF,CAEJ,CAAC,ECxUe,SAAAG,GAAe51B,EAAgD,CAC7E,KAAM,CAAC,SAAAwK,EAAU,SAAAipB,EAAU,QAAAhT,CAAO,EAAIzgB,EAEhC61B,EAAmCzzB,EACvC,KAAO,CACL,QAAS,EACT,SAAAqxB,EACA,QAAAhT,CACF,GACA,CAACgT,EAAUhT,CAAO,CACpB,EAEA,OAAO1V,EAAA,cAAC2oB,GAAc,SAAd,CAAuB,MAAOmC,CAAerrB,EAAAA,CAAS,CAChE,CCfA,MAAMgK,GAAOC,EAAO;AAAA;AAAA;AAAA;AAAA;AAAA,EAOdqhB,GAAMrhB,EAAO4K,EAAG;AAAA;AAAA;AAAA;AAAA,EAST0W,GAAUnhB,EAAW,SAChC5U,EACA0M,EACA,CACA,KAAM,CAAC,SAAA1L,EAAU,KAAAjC,EAAM,QAAAwa,EAAS,OAAA7F,EAAQ,MAAO4I,EAAY,KAAMrH,CAAS,EAAIjV,EACxEyO,EAAQvM,EAAaoa,CAAS,EAEpC,MAAI,CAACvd,GAAQA,EAAK,SAAW,EACpBgM,EAAA,cAAAA,EAAA,aAAE,EAITA,EAAA,cAACyJ,GAAA,CAAK,UAAQ,UAAW,GAAGS,EAAW,IAAKvI,CAC1C3B,EAAAA,EAAA,cAACoU,GAAA,CAAO,GAAG,OAAO,MAAO1Q,CAAAA,EACtB1P,EAAK,IAAI,CAACG,EAAKkT,IACdrH,EAAA,cAAC+qB,GAAA,CAAI,SAAU90B,EAAU,IAAKoR,EAAG,QAASmH,EAAS,OAAQ7F,CACxDxU,EAAAA,CACH,CACD,CACH,CACF,CAEJ,CAAC,EC5BKA,GAAM,OAAO,IAAI,yBAAyB,EAEhDgL,EAAYhL,IAAOgL,EAAYhL,KAAQiL,GAAuC,IAAI,EAErE,MAAA6rB,GAAsD9rB,EAAYhL,ICzB/E,SAAS+2B,GAAa3zB,EAAsB,CAC1C,OACGqgB,GAAoBrgB,CAAO,GAAKA,EAAQ,aAAa,eAAe,IAAM,QAC1EsgB,GAAoBtgB,CAAO,GAAK,CAACA,EAAQ,QAE9C,CAKgB,SAAA4zB,GAAsBnzB,EAAwC,CAC5E,OAAOA,EAAS,OAAOkzB,EAAY,CACrC,UAKgBE,GAAY9G,EAA0B5sB,EAA2B,CAC/E,MAAM2zB,EAAiB,CAAA,EAEvB,IAAI5F,EAAI/tB,EAER,KAAO+tB,IAAMnB,GAAa,CACxB,MAAMgH,EAAgB7F,EAAE,cAExB,GAAI,CAAC6F,EAAe,OAAOD,EAG3B,MAAM3qB,EADW,MAAM,KAAK4qB,EAAc,UAAU,EAC7B,QAAQ7F,CAAC,EAIhC,GAFA4F,EAAK,QAAQ3qB,CAAK,EAEd4qB,IAAkBhH,EACpB,OAAO+G,EAGT5F,EAAI6F,CACN,CAEA,OAAOD,CACT,CAEA,MAAME,GAAuB,CAKtB,EAAA,SAASC,GAAclH,EAAiCtsB,EAA+B,CAC5F,GAAI,CAACssB,EAAa,OAElB,MAAMmH,EAAM,IAAI,QAEhB,UAAW/zB,KAAMM,EACfyzB,EAAI,IAAI/zB,EAAI0zB,GAAY9G,EAAa5sB,CAAE,CAAC,EAG1C,MAAMg0B,EAAQ,CAACtvB,EAAgBpC,IAAmB,CAChD,MAAM4V,EAAK6b,EAAI,IAAIrvB,CAAC,GAAKmvB,GACnB1b,EAAK4b,EAAI,IAAIzxB,CAAC,GAAKuxB,GAEnBtkB,EAAM,KAAK,IAAI2I,EAAG,OAAQC,EAAG,MAAM,EAGzC,QAASxI,EAAI,EAAGA,EAAIJ,EAAKI,GAAK,EAAG,CAC/B,MAAMskB,EAAS/b,EAAGvI,IAAM,GAClBukB,EAAS/b,EAAGxI,IAAM,GAExB,GAAIskB,IAAWC,EACb,OAAOD,EAASC,CAEpB,CAEA,MAAO,EACT,EAEA5zB,EAAS,KAAK0zB,CAAK,CACrB,CC3DO,SAASG,GAAkB52B,EAIf,CACjB,KAAM,CAAC,UAAA6E,EAAW,cAAAgyB,EAAe,YAAAC,CAAW,EAAI92B,EAC1CiD,EAAcC,GAAsB,CAAA,CAAE,EACtC,CAACmsB,EAAaC,CAAc,EAAIxsB,EAAgC,IAAI,EACpE,CAACkuB,EAAa+F,CAAe,EAAIj0B,EAAS,EAAE,EAC5Ck0B,EAAiB9zB,GAAO8tB,CAAW,EACnCiG,EAAgBh0B,EAAY,QAAQ+tB,IAAgB,KACpDkG,EAAU,QAAQ7H,CAAW,EAE7B8H,EAAiB3f,EAAa4f,GAAoB,CACtDL,EAAgBK,CAAe,EAC/BJ,EAAe,QAAUI,CAC3B,EAAG,CAAA,CAAE,EAECC,EAAQ7f,EACZ,CAAClV,EAA6B+Z,IAAqC,CACjE,GAAI,CAAC/Z,EAAS,MAAO,IAAG,CAAA,EAOxB,GALIW,EAAY,QAAQ,QAAQX,CAAO,IAAM,KAC3CW,EAAY,QAAQ,KAAKX,CAAO,EAChCi0B,GAAclH,EAAapsB,EAAY,OAAO,GAG5CoZ,EAAU,CACZ,MAAMib,EAAgBr0B,EAAY,QAAQ,QAAQX,CAAO,EAEzD60B,EAAeG,CAAa,CAC9B,CAEA,MAAO,IAAM,CACX,MAAM/yB,EAAMtB,EAAY,QAAQ,QAAQX,CAAO,EAE3CiC,EAAM,IACRtB,EAAY,QAAQ,OAAOsB,EAAK,CAAC,CAErC,CACF,EACA,CAAC8qB,EAAa8H,CAAc,CAC9B,EAEM/J,EAAgB5V,EACnB6T,GAA+C,CAE9C,GAAIA,EAAM,MAAQ,MAAO,CACnBwL,GACFA,EAAc,QAGhB,MACF,CAGA,GAAIxL,EAAM,MAAQ,OAAQ,CACxBA,EAAM,eAAe,EACrBA,EAAM,kBAGN,MAAM5oB,EADoByzB,GAAsBjzB,EAAY,OAAO,EACtC,GAE7B,GAAI,CAACR,EAAI,OAET,MAAM80B,EAAet0B,EAAY,QAAQ,QAAQR,CAAE,EAEnD00B,EAAeI,CAAY,EAE3B,MACF,CAGA,GAAIlM,EAAM,MAAQ,MAAO,CACvBA,EAAM,eAAA,EACNA,EAAM,gBAAgB,EAEtB,MAAMmM,EAAoBtB,GAAsBjzB,EAAY,OAAO,EAC7DR,EAAK+0B,EAAkBA,EAAkB,OAAS,GAExD,GAAI,CAAC/0B,EAAI,OAET,MAAM80B,EAAet0B,EAAY,QAAQ,QAAQR,CAAE,EAEnD00B,EAAeI,CAAY,EAE3B,MACF,CAEA,GAAIlM,EAAM,MAAQ,UAAW,CAC3BA,EAAM,iBACNA,EAAM,gBAEN,EAAA,MAAMmM,EAAoBtB,GAAsBjzB,EAAY,OAAO,EAC7Dw0B,EAAeD,EAAkB,OAEvC,GAAIC,IAAiB,EAAG,OAExB,MAAM9G,EAAiB1tB,EAAY,QAAQ+zB,EAAe,SAE1D,IAAIU,EAAeF,EAAkB,QAAQ7G,CAAc,EAE3D+G,GAAgBA,EAAe,EAAID,GAAgBA,EAEnD,MAAMh1B,EAAK+0B,EAAkBE,GACvBH,EAAet0B,EAAY,QAAQ,QAAQR,CAAE,EAEnD00B,EAAeI,CAAY,EAE3B,MACF,CAEA,GAAIlM,EAAM,MAAQ,YAAa,CAC7BA,EAAM,iBACNA,EAAM,gBAAgB,EAEtB,MAAMmM,EAAoBtB,GAAsBjzB,EAAY,OAAO,EAC7Dw0B,EAAeD,EAAkB,OAEvC,GAAIC,IAAiB,EAAG,OAExB,MAAM9G,EAAiB1tB,EAAY,QAAQ+zB,EAAe,SAE1D,IAAIU,EAAeF,EAAkB,QAAQ7G,CAAc,EAE3D+G,GAAgBA,EAAe,GAAKD,EAEpC,MAAMh1B,EAAK+0B,EAAkBE,GACvBH,EAAet0B,EAAY,QAAQ,QAAQR,CAAE,EAEnD00B,EAAeI,CAAY,EAE3B,MACF,CAEI1yB,GACFA,EAAUwmB,CAAK,CAEnB,EACA,CAACxmB,EAAWgyB,EAAeM,CAAc,CAC3C,EAEMQ,EAAuBngB,EAC1B6T,GAAyC,CACxC,MAAM/oB,EAAU+oB,EAAM,cAChBkM,EAAet0B,EAAY,QAAQ,QAAQX,CAAO,EAExD60B,EAAeI,CAAY,CAC7B,EACA,CAACJ,CAAc,CACjB,EAEMS,EAAuBpgB,EAAY,IAAM,CAC7C6X,GAAA,MAAAA,EAAa,QACb8H,EAAe,EAAE,CACnB,EAAG,CAAC9H,EAAa8H,CAAc,CAAC,EAGhC,OAAAh0B,EAAU,IAAM,CACd,GAAI,CAAC+zB,EAAS,OAEd,MAAMW,EAAQ,OAAO,sBAAsB,IAAM,CAC/C,MAAMC,EAAed,EAAe,QAEpC,GAAIc,IAAiB,GAAI,CACvB,GAAIhB,IAAgB,QAAS,CAE3B,MAAMr0B,EADoByzB,GAAsBjzB,EAAY,OAAO,EACtC,GAE7B,GAAIR,EAAI,CACN,MAAM80B,EAAet0B,EAAY,QAAQ,QAAQR,CAAE,EAEnD00B,EAAeI,CAAY,EAC3BP,EAAe,QAAUO,CAC3B,CACF,CAEA,GAAIT,IAAgB,OAAQ,CAC1B,MAAMU,EAAoBtB,GAAsBjzB,EAAY,OAAO,EAC7DR,EAAK+0B,EAAkBA,EAAkB,OAAS,GAExD,GAAI/0B,EAAI,CACN,MAAM80B,EAAet0B,EAAY,QAAQ,QAAQR,CAAE,EAEnD00B,EAAeI,CAAY,EAC3BP,EAAe,QAAUO,CAC3B,CACF,CAEA,MACF,CAEA,MAAMj1B,EAAUW,EAAY,QAAQ60B,IAAiB,KAErDx1B,GAAA,MAAAA,EAAS,MACX,CAAA,CAAC,EAED,MAAO,IAAM,CACX,OAAO,qBAAqBu1B,CAAK,CACnC,CACF,EAAG,CAAC7G,EAAakG,EAASC,EAAgBL,CAAW,CAAC,EAE/C,CACL,cAAAG,EACA,YAAAjG,EACA,qBAAA2G,EACA,qBAAAC,EACA,cAAAxK,EACA,MAAAiK,EACA,YAAAhI,EACA,eAAAC,CACF,CACF,CC3MA,MAAM9a,GAAOC,EAAOsE,CAAG;AAAA;AAAA;AAAA,EAQVgf,GAAOnjB,EAAW,SAC7B5U,EACA0M,EACA,CACA,KAAM,CACJ,SAAAlC,EAEA,WAAAwtB,EAEA,UAAAC,EACA,eAAAzD,EACA,SAAA0D,EACA,YAAAC,EACA,aAAAC,EACA,UAAAvzB,EACA,cAAAgyB,EACA,QAAAtd,EAAU,EACV,gBAAA8e,EACA,YAAAvB,EAAe92B,EAAM,YAAc,SAAaA,EAAM,WAAa,QAAW,KAC9E,MAAAyO,EAAQ,KACLwG,CACL,EAAIjV,EAEE2d,EAAelR,GAAgBC,CAAG,EAElC,CAAC,WAAAmoB,CAAU,EAAIxU,GAAS,EAExB,CACJ,cAAA4W,EACA,YAAAjG,EACA,qBAAA2G,EACA,qBAAAC,EACA,cAAAxK,EACA,MAAAiK,EACA,YAAAhI,EACA,eAAAC,CACF,EAAIsH,GAAkB,CAAC,UAAA/xB,EAAW,cAAAgyB,EAAe,YAAAC,CAAW,CAAC,EAEvDwB,EAAkB9gB,EACrB/U,GAA8B,CAC7B6sB,EAAe7sB,CAAE,EACjBkb,EAAa,QAAUlb,CACzB,EACA,CAACkb,EAAc2R,CAAc,CAC/B,EAGAnsB,EAAU,IAAM,CACVi1B,GAAcA,EAAapH,CAAW,CAC5C,EAAG,CAACA,EAAaoH,CAAY,CAAC,EAG9B11B,GACE8U,EACG6T,GAAUwJ,GAAcL,GAAkBA,EAAenJ,CAAK,EAC/D,CAACwJ,EAAYL,CAAc,CAC7B,EACA,CAACnF,CAAW,CACd,EAGAzqB,GACE4S,EACG6T,GAAU,CACL,CAACwJ,GAEDxJ,EAAM,MAAQ,WAChBA,EAAM,gBAAgB,EAClB6M,GAAUA,EAElB,EAAA,EACA,CAACrD,EAAYqD,CAAQ,CACvB,CACF,EAGA/0B,EAAU,IAAM,CACd,GAAI,EAACksB,CAAAA,GAAe,CAACgJ,GAErB,OAAOA,EAAgBhJ,CAAW,CACpC,EAAG,CAACgJ,EAAiBhJ,CAAW,CAAC,EAEjC,MAAMrwB,EAA0BoD,EAC9B,KAAO,CACL,QAAS,EACT,cAAA60B,EACA,YAAAjG,EACA,MAAAqG,EACA,eAAA7C,EACA,SAAA0D,EACA,YAAAC,EACA,iBAAkBR,EAClB,iBAAkBC,EAClB,gBAAAS,EAGA,aAAcV,EACd,aAAcC,CAChB,GACA,CACEX,EACAjG,EACAqG,EACAM,EACAC,EACApD,EACA0D,EACAC,EACAE,CACF,CACF,EAEA,OACEttB,EAAA,cAACirB,GAAY,SAAZ,CAAqB,MAAOh3B,CAAAA,EAC3B+L,EAAA,cAACyJ,GAAA,CACC,UAAQ,OACP,GAAGS,EACJ,UAAWmY,EACX,QAAS7T,EACT,IAAK+e,EACL,KAAK,OACL,SAAU,EAAA,EAEVvtB,EAAA,cAACme,GAAA,CAAM,MAAOza,CAAAA,EAAQjE,CAAS,CACjC,CACF,CAEJ,CAAC,EC5GY+tB,GAAa3jB,EAAW,SACnC5U,EACA0M,EACA,CACA,KAAM,CACJ,sCAAuC8rB,EAA6B,GACpE,gBAAiBC,EACjB,OAAQC,EACR,GAAAzL,EACA,KAAM0L,EACN,QAAAlE,EACA,UAAWmE,EACX,cAAeC,EACf,OAAQC,EAAoB,GAC5B,QAAAvK,EACA,cAAewK,EACf,gBAAiBC,CACnB,EAAIh5B,EACE,CAAC6lB,EAAM8M,CAAO,EAAI7vB,EAAS,EAAK,EAChC,CAACg0B,EAAamC,CAAc,EAAIn2B,EAAkC,IAAI,EACtE,CAACo2B,EAAeC,CAAgB,EAAIr2B,EAAmC,IAAI,EAC3E,CAACs2B,EAAcC,CAAoB,EAAIv2B,EAAwB,CAAE,CAAA,EACjEw2B,EAAUp2B,GAAgB2iB,CAAI,EAEpC1iB,EAAU,IAAM,CACVsxB,GAAW,CAAC5O,GAAQyT,EAAQ,SAC9B7E,EAEJ,CAAA,EAAG,CAACA,EAAS5O,CAAI,CAAC,EAElB1iB,EAAU,IAAM,CACdm2B,EAAQ,QAAUzT,CACpB,EAAG,CAACA,CAAI,CAAC,EAET,MAAM0T,EAAoB/hB,EAAY,IAAM,CAC1Cmb,EAAS9R,GAAM,CAACA,CAAC,EACjBoY,EAAe,IAAI,CACrB,EAAG,EAAE,EAECO,EAAsBhiB,EAAa6T,GAAkD,CAGzF,GAAIA,EAAM,MAAQ,aAAeA,EAAM,MAAQ,SAAWA,EAAM,MAAQ,IAAK,CAC3EA,EAAM,eAAe,EACrBsH,EAAQ,EAAI,EACZsG,EAAe,OAAO,EAEtB,MACF,CAIA,GAAI5N,EAAM,MAAQ,UAAW,CAC3BA,EAAM,iBACNsH,EAAQ,EAAI,EACZsG,EAAe,MAAM,EAErB,MACF,CACF,EAAG,CAAA,CAAE,EAECQ,EAAyBjiB,EAC5B6T,GAAsB,CACrB,MAAM7nB,EAAS6nB,EAAM,OAErB,GAAM7nB,aAAkB,MAIpB,EAAA01B,IAAkB11B,IAAW01B,GAAiBA,EAAc,SAAS11B,CAAM,IAI/E,CAAA,UAAWf,MAAM22B,EACf,GAAI51B,IAAWf,IAAMA,GAAG,SAASe,CAAM,EACrC,OAIJmvB,EAAQ,EAAK,CAAA,CACf,EACA,CAACuG,EAAeE,CAAY,CAC9B,EAEMM,EAAmBliB,EAAY,IAAM,CACzCmb,EAAQ,EAAK,EACT,CAAA6F,GACAU,GAAeA,EAAc,OACnC,EAAG,CAACA,EAAeV,CAA0B,CAAC,EAExClM,EAAa9U,EAChB6T,GAA+C,CAC9C,MAAM7nB,EAAS6nB,EAAM,cAErB,GAAM7nB,aAAkB,KAIxB,CAAWf,UAAAA,MAAM22B,EACf,GAAI32B,KAAOe,GAAUf,GAAG,SAASe,CAAM,EACrC,OAIJmvB,EAAQ,EAAK,CACf,CAAA,EACA,CAACyG,CAAY,CACf,EAEMO,EAAkBniB,EAAY,IAAM,CACxCmb,EAAQ,EAAK,EACT,CAAA6F,GACAU,GAAeA,EAAc,MAAM,CACzC,EAAG,CAACA,EAAeV,CAA0B,CAAC,EAExCH,EAAkB7gB,EAAa/U,IACnC42B,EAAsBO,GAAQA,EAAI,OAAO,CAACn3B,CAAE,CAAC,CAAC,EAEvC,IAAM,CACX42B,EAAsBO,GACbA,EAAI,OAAQC,IAAQA,KAAQp3B,CAAE,CACtC,CACH,GACC,CAAA,CAAE,EAECq3B,GAAuB13B,EAC3B,KAAO,CACL,kBAAmB6qB,EACnB,cAAeX,EACf,eAAgBmN,EAChB,SAAUC,EACV,YAAaC,EACb,cAAeT,EACf,gBAAAb,EACA,YAAAvB,CACF,GACA,CACEoC,EACAO,EACAC,EACAC,EACA1M,EACAX,EACA+L,EACAvB,CACF,CACF,EAEMiD,EAAO9hB,GAAU0gB,CAAQ,EAAI7f,GAAa6f,EAAUmB,EAAS,EAAI,KAEjEE,EAAexiB,EAClB/U,GAAiC,CAC5B,OAAOiK,GAAQ,WACjBA,EAAIjK,CAAE,EACGiK,IACTA,EAAI,QAAUjK,GAGhB02B,EAAiB12B,CAAE,CACrB,EACA,CAACiK,CAAG,CACN,EAEMutB,GAAS73B,EACb,IACE6V,GAAUygB,CAAU,EAChB5f,GAAa4f,EAAY,CACvB,UAAW,aACX,GAAAzL,EACA,QAASsM,EACT,UAAWC,EACX,gBAAiB,GACjB,gBAAiB3T,EACjB,IAAKmU,EACL,SAAUnU,CACZ,CAAC,EACD,KACN,CAAC6S,EAAYa,EAAmBC,EAAqBvM,EAAIpH,EAAMmU,CAAY,CAC7E,EAEME,EAA6B93B,EAAQ,KAClC,CACL,gBAAiBq2B,EACjB,UAAWG,EACX,OAAQE,EACR,OAAQC,EACR,gBAAiBC,EACjB,OAAQH,EACR,GAAItK,GAAW,EACjB,GACC,CACDkK,EACAO,EACAJ,EACArK,EACAwK,EACAD,EACAD,CACF,CAAC,EAED,OACE9tB,EAAA,cAAC2b,GAAA,CAAS,GAAGwT,EAAc,QAASH,EAAM,UAAQ,sBAAsB,KAAMlU,CAC3EoU,EAAAA,IAAUlvB,EAAA,cAAAA,EAAA,SAAA,IAAE,CACf,CAEJ,CAAC,ECjQYovB,GAA4C1lB,EAAO;AAAA;AAAA;AAAA;AAAA;AAAA,ECMzD,SAAS2lB,IAAkD,CAChE,OAAOznB;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA,GAmBT,CAEgB,SAAA0nB,GACdr6B,EAC4B,CApC9B,IAAA2a,EAAAC,EAqCE,KAAM,CAAC,MAAA7H,EAAO,MAAAhT,CAAK,EAAIC,EACjB,CAAC,KAAAa,EAAM,MAAA4G,EAAO,WAAA6yB,CAAU,EAAIv6B,EAAM,OAAO,MAEzCsI,EAAOiyB,EAAaA,EAAWvnB,IAAUunB,EAAW,QAAU7yB,EAAMsL,IAAUtL,EAAM,QAE1F,OAAOkL;AAAAA,MACH8H,EAAgB5Z,EAAMwH,EAAK,OAAO;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,UAS9BoS,EAAgB5Z,EAAMwH,EAAK,QAAQ;AAAA;AAAA;AAAA;AAAA;AAAA,YAKjCoS,EAAgB5Z,EAAMwH,EAAK,OAAO;AAAA;AAAA;AAAA;AAAA;AAAA,YAKlCoS,EAAgB5Z,EAAMwH,EAAK,QAAQ;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,gBAM/BoS,EAAgB5Z,EAAMwH,EAAK,OAAO;AAAA;AAAA;AAAA;AAAA,gBAIlCoS,EAAgB5Z,EAAMwH,EAAK,OAAO;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,UAUxCoS,EAAgB5Z,EAAMwH,EAAK,QAAQ;AAAA;AAAA;AAAA;AAAA;AAAA,YAKjCoS,EAAgB5Z,EAAMwH,EAAK,OAAO;AAAA;AAAA;AAAA;AAAA,YAIlCoS,EAAgB5Z,EAAMwH,EAAK,QAAQ;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,gBAM/BoS,EAAgB5Z,EAAMwH,EAAK,OAAO;AAAA;AAAA;AAAA;AAAA,gBAIlCoS,EAAgB5Z,EAAMwH,EAAK,OAAO;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,OAO5CuS,GAAAD,EAAA5a,EAAM,OAAO,SAAb,KAAA4a,OAAAA,EAAqB,OAArB,KAAA,OAAAC,EAA2B;AAAA,GAEjC,CCtGa,MAAA2f,GAAa9lB,EAAOsE,CAAG,EAClCtF,GACA2mB,GACAC,EACF,WCRgBG,IAA4B,CAC1C,MAAMx7B,EAAQuL,GAAWyrB,EAAW,EAEpC,GAAI,CAACh3B,EACH,MAAM,IAAI,MAAM,kCAAkC,EAMpD,GAAI,CAACiM,GAASjM,CAAK,GAAKA,EAAM,UAAY,EACxC,MAAM,IAAI,MAAM,gDAAgD,EAGlE,OAAOA,CACT,CCSgB,SAAAy7B,GACdz6B,EAEoB,CACpB,KAAM,CACJ,GAAA2W,EAAK,SACL,SAAAnM,EACA,SAAAxJ,EACA,KAAAya,EACA,QAAAif,EACA,QAAAnhB,EAAU,EACV,QAAAgV,EACA,OAAA7a,EAAS,EACT,MAAAjF,EAAQ,EACR,KAAA8N,EACA,KAAAlU,EAAO,aACJ4M,CACL,EAAIjV,EACE+5B,EAAOS,GACP,EAAA,CACJ,cAAAvD,EACA,MAAAI,EACA,eAAA7C,EACA,SAAA0D,EACA,YAAAC,EACA,iBAAAwC,EAAmBZ,EAAK,aACxB,gBAAA1B,CACF,EAAI0B,EACE,CAAC1K,EAAaC,CAAc,EAAIxsB,EAAmC,IAAI,EACvE,CAAC+iB,EAAM8M,CAAO,EAAI7vB,EAAS,EAAK,EAChC83B,EAAiB13B,GAAgC,IAAI,EACrDkvB,EAAS,QAAQ6E,CAAa,GAAKA,IAAkB5H,EACrD,CAACwL,EAAYC,CAAa,EAAIh4B,EAAS,EAAK,EAE5C0pB,EAAmBhV,EACtB6T,GAAyC,CACxCyP,EAAc,EAAK,EACnBH,EAAiBtP,CAAK,EACtBsH,EAAQ,EAAI,CACd,EACA,CAACgI,CAAgB,CACnB,EAEMI,GAAoBvjB,EACvB6T,GAA+C,CAC1CA,EAAM,MAAQ,cAChBA,EAAM,kBAENsH,EAAQ,EAAK,EAEb,sBAAsB,IAAM,CAC1BtD,GAAA,MAAAA,EAAa,MACf,CAAA,CAAC,EAEL,EACA,CAACA,CAAW,CACd,EAEMlC,EAAc3V,EACjB6T,GAA4C,CACvCqP,GAASA,EAAQrP,CAAK,EAE1BuP,EAAe,QAAU,QAEzBjI,EAAQ,EAAI,EAEZ,sBAAsB,IAAM,CAC1BiI,EAAe,QAAU,IAC3B,CAAC,CACH,EACA,CAACF,CAAO,CACV,EAEMM,EAAuBxjB,EAAY,IAAM,CAC7Cmb,EAAQ,EAAK,EACTwF,GAAaA,EAAY,CAC/B,EAAG,CAACA,CAAW,CAAC,EAEV8C,GAAuBzjB,EAAY,IAAMsjB,EAAc,EAAI,EAAG,CAAE,CAAA,EAGtE33B,EAAU,IAAMk0B,EAAMhI,CAAW,EAAG,CAACgI,EAAOhI,CAAW,CAAC,EAGxDlsB,EAAU,IAAM,CACTivB,GAAQO,EAAQ,EAAK,CAC5B,EAAG,CAACP,CAAM,CAAC,EAGXjvB,EAAU,IAAM,CACT0iB,GAAMiV,EAAc,EAAK,CAChC,EAAG,CAACjV,CAAI,CAAC,EAET,MAAMqV,EACJnwB,EAAA,cAACgtB,GAAA,CACC,eAAgBvD,EAChB,SAAU0D,EACV,YAAa8C,EACb,UAAWD,GACX,aAAcE,GACd,gBAAiB5C,EACjB,YAAauC,EAAe,OAE3BpwB,EAAAA,CACH,EAGI4iB,EAAgB5V,EAAa6T,GAA+C,CAChF,MAAM7nB,GAAS6nB,EAAM,cAErB,GAAI,SAAS,gBAAkB7nB,IAI3B6nB,EAAM,MAAQ,aAAc,CAC9BuP,EAAe,QAAU,QAEzBjI,EAAQ,EAAI,EACZmI,EAAc,EAAI,EAElB,sBAAsB,IAAM,CAC1BF,EAAe,QAAU,IAC3B,CAAC,EAED,MACF,CACF,EAAG,EAAE,EAEL,OACE7vB,EAAA,cAAC2b,GAAA,CAAS,GAAG6H,EAAS,QAAS2M,EAAW,UAAQ,qBAAqB,KAAMrV,CAC3E9a,EAAAA,EAAA,cAACwvB,GAAA,CACC,UAAS5jB,EACT,UAAQ,YACR,YAAaA,EACZ,GAAG1B,EACJ,eAAc0B,IAAO,SAAWkkB,EAAa,OAC7C,eAAclkB,IAAO,SAAWkkB,EAAa,OAC7C,gBAAe,CAACA,GAAczI,EAAS,GAAK,OAC5C,QAASlwB,EAAawR,CAAM,EAC5B,MAAOrL,EACP,QAAS8kB,EACT,UAAWC,EACX,aAAcZ,EACd,IAAK8C,EACL,SAAU,GACV,KAAM3Y,IAAO,SAAW,SAAW,QAEnC5L,EAAA,cAACgO,EAAA,CAAI,QAASQ,CAAAA,EACZxO,EAAA,cAACqP,GAAA,KACEqB,GACC1Q,EAAA,cAAC4J,GAAA,CAAK,KAAM3T,CAAAA,EACT0b,GAAejB,CAAI,GAAKA,EACxBkB,GAAmBlB,CAAI,GAAKmB,GAAcnB,CAAI,CACjD,EAGF1Q,EAAA,cAACgO,EAAA,CAAI,KAAM,EAAG,WAAY0C,EAAOhN,EAAQ,MACvC1D,EAAAA,EAAA,cAAC4J,GAAA,CAAK,KAAM3T,EAAU,aAAa,UAAA,EAChCub,CACH,CACF,EAEAxR,EAAA,cAACgO,EAAA,CAAI,WAAYtK,CACf1D,EAAAA,EAAA,cAAC4J,GAAA,CAAK,KAAM3T,CAAAA,EACV+J,EAAA,cAACowB,GAAA,IAAiB,CACpB,CACF,CACF,CACF,CACF,CACF,CAEJ,CCnKO,MAAMC,GAAWxmB,EAAW,SACjC5U,EAEA2d,EACA,CACA,KAAM,CACJ,GAAAhH,EAAK,SACL,SAAAnM,EACA,SAAAgR,EACA,SAAAxa,EAAW,EACX,QAAAq6B,EACA,KAAA5f,EACA,UAAAC,EACA,QAAAgf,EACA,QAAAnhB,EAAU,EACV,SAAAC,EACA,SAAAC,EACA,WAAAC,EACA,aAAAC,EACA,cAAAC,EACA,YAAAC,EACA,QAAAuD,EACA,OAAA1J,EAAS,EACT,SAAU4nB,EACV,MAAA7sB,EAAQ,EACR,KAAA8N,EACA,KAAAlU,EAAO,aACJ4M,CACL,EAAIjV,EACE+5B,EAAOS,GAAQ,EACf,CACJ,cAAAvD,EACA,MAAAI,EACA,YAAAc,EACA,iBAAAwC,EAAmBZ,EAAK,aACxB,iBAAAwB,EAAmBxB,EAAK,YAC1B,EAAIA,EACE,CAAC1K,GAAaC,CAAc,EAAIxsB,EAAgC,IAAI,EACpEsvB,EAAS,QAAQ6E,CAAa,GAAKA,IAAkB5H,GAE3DlsB,EAAU,IAAMk0B,EAAMhI,GAAaiM,CAAY,EAAG,CAACjE,EAAOhI,GAAaiM,CAAY,CAAC,EAEpF,MAAM5uB,GAAMD,GAAgBkR,CAAY,EAElCwP,EAAc3V,EACjB6T,IAA4C,CACvC7P,IACAkf,GAASA,EAAQrP,EAAK,EACtB8M,GAAaA,EAAY,EAC/B,EACA,CAAC3c,EAAUkf,EAASvC,CAAW,CACjC,EAEMqD,EAAep5B,EACnB,KAAO,CACL,QAAAmX,EACA,SAAAC,EACA,SAAAC,EACA,WAAAC,EACA,aAAAC,EACA,cAAAC,EACA,YAAAC,CACF,GACA,CAACN,EAASC,EAAUC,EAAUC,EAAYC,EAAcC,EAAeC,CAAW,CACpF,EAEMkG,EAASvI,EACZ/U,IAA8B,CAC7BiK,GAAI,QAAUjK,GACd6sB,EAAe7sB,EAAE,CACnB,EACA,CAACiK,EAAG,CACN,EAEA,OACE3B,EAAA,cAACwvB,GAAA,CACC,UAAQ,WACP,GAAGtlB,EACJ,eAAc0B,IAAO,UAAYyG,EACjC,eAAczG,IAAO,UAAYyG,EAAU,GAAK,OAChD,gBAAegV,EAAS,GAAK,OAC7B,gBAAe5W,EAAW,GAAK,OAC/B,YAAa7E,EACb,QAASzU,EAAawR,CAAM,EAC5B,SAAUxR,EAAa,CAAC,EACxB,MAAOmG,EACP,SAAUmT,EACV,QAAS2R,EACT,aAAcwN,EACd,aAAcY,EACd,IAAKxb,EACL,KAAK,WACL,SAAU,GACV,KAAMpJ,IAAO,SAAW,SAAW,MAAA,GAEjC8E,GAAQc,GAAQb,IAChB3Q,EAAA,cAACgO,EAAA,CAAI,GAAG,OAAQ,GAAGyiB,CACjBzwB,EAAAA,EAAA,cAACqP,GAAA,CAAK,GAAG,MAAA,EACNqB,GACC1Q,EAAA,cAAC4J,GAAA,CAAK,KAAM3T,CACT0b,EAAAA,GAAejB,CAAI,GAAKA,EACxBkB,GAAmBlB,CAAI,GAAKmB,GAAcnB,CAAI,CACjD,EAGDc,GACCxR,EAAA,cAACgO,EAAA,CACC,KAAM,EACN,WAAY0C,EAAOhN,EAAQ,OAC3B,YAAaiN,EAAYjN,EAAQ,MAAA,EAEjC1D,EAAA,cAAC4J,GAAA,CAAK,KAAM3T,EAAU,aAAa,UAChCub,EAAAA,CACH,CACF,EAGD8e,GACCtwB,EAAA,cAACgO,EAAA,CAAI,WAAYtK,EAAO,MAAO,CAAC,UAAW,GAAI,aAAc,EAAE,CAAA,EAC7D1D,EAAA,cAACgrB,GAAA,CAAQ,SAAU/0B,EAAU,KAAMq6B,CAAS,CAAA,CAC9C,EAGD3f,GACC3Q,EAAA,cAAC4J,GAAA,CAAK,KAAM3T,CAAAA,EACT0b,GAAehB,CAAS,GAAKA,EAC7BiB,GAAmBjB,CAAS,GAAKkB,GAAclB,CAAS,CAC3D,CAEJ,CACF,EAGDlR,GACCO,EAAA,cAACgO,EAAA,CAAI,GAAG,OAAQ,GAAGyiB,CAChBhxB,EAAAA,CACH,CAEJ,CAEJ,CAAC,EC/KKixB,GAAWnhB;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA,EASXohB,GAAY/oB;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA,oBAYE8oB;AAAAA;AAAAA;AAAAA;AAAAA,EAUPE,GAAgBhpB;AAAAA,aAChB,CAAC,CAAC,SAAAipB,CAAQ,IAAOA,EAAW,EAAI;AAAA;AAAA;AAAA;AAAA,MAIvC,CAAC,CAAC,UAAAC,CAAS,IACXA,EACIH,GACA/oB;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA,ECjCJ6B,GAAOC,EAAOsE,CAAG,EACrBtF,GACAkoB,EACF,EAeaG,GAAWlnB,EAAW,SACjC5U,EACA0M,EACA,CACA,KAAM,CAAC,SAAAqvB,EAAW,GAAO,MAAAC,EAAO,OAAAtoB,KAAWuB,CAAS,EAAIjV,EAClD,CAACi8B,EAASC,CAAU,EAAIp5B,EAAkB,CAAAk5B,CAAoB,EAEpE,OAAA74B,EAAU,IAAM,CACd,GAAI,CAAC64B,EACH,OAAOE,EAAW,EAAI,EAGxB,MAAMC,EAAU,WAAW,IAAM,CAC/BD,EAAW,EAAI,CACjB,EAAGF,CAAK,EAER,MAAO,IAAM,CACX,aAAaG,CAAO,CACtB,CACF,EAAG,CAACH,CAAK,CAAC,EAGRjxB,EAAA,cAACyJ,GAAA,CACE,GAAGS,EACJ,UAAW8mB,EACX,QAAS75B,EAAawR,CAAM,EAC5B,SAAUuoB,EACV,IAAKvvB,CACP,CAAA,CAEJ,CAAC,ECjDK8H,GAAOC,EAAOqnB,EAAQ,EAC1B,CAAC,CAAC,MAAAz7B,EAAO,OAAA+7B,EAAQ,MAAAr8B,CAAK,IAA6D,CACjF,KAAM,CAAC,MAAAT,CAAK,EAAIS,EAAM,OAChBiT,EAAOjT,EAAM,OAAO,MAAMq8B,GAShC,OAPe/8B,EAAYC,EAAOe,EAAQU,GAAc,CACtD,MAAMC,EAAWgS,EAAK,MAAMjS,GAG5B,MAAO,CAAC,OAFUC,EAAS,WAAaA,EAAS,eAAiBA,EAAS,eAElD,CAC3B,CAAC,CAGH,CACF,EAsCaq7B,GAAeznB,EAAW,SACrC5U,EAEA0M,EACA,CACA,KAAM,CAAC,KAAAzL,EAAO,KAAMgU,CAAS,EAAIjV,EAC3BK,EAAQ6B,EAAajB,CAAI,EAE/B,OAAO8J,EAAA,cAACyJ,GAAA,CAAM,GAAGS,EAAW,MAAO5U,EAAO,IAAKqM,EAAK,OAAO,MAAA,CAAO,CACpE,CAAC,EAMY4vB,GAAgB1nB,EAAW,SACtC5U,EAEA0M,EACA,CACA,KAAM,CAAC,KAAAzL,EAAO,KAAMgU,CAAS,EAAIjV,EAC3BK,EAAQ6B,EAAajB,CAAI,EAE/B,OAAO8J,EAAA,cAACyJ,GAAA,CAAM,GAAGS,EAAW,MAAO5U,EAAO,IAAKqM,EAAK,OAAO,OAAQ,CAAA,CACrE,CAAC,EAMY6vB,GAAkB3nB,EAAW,SACxC5U,EAEA0M,EACA,CACA,KAAM,CAAC,KAAAzL,EAAO,KAAMgU,CAAS,EAAIjV,EAC3BK,EAAQ6B,EAAajB,CAAI,EAE/B,OAAO8J,EAAA,cAACyJ,GAAA,CAAM,GAAGS,EAAW,MAAO5U,EAAO,IAAKqM,EAAK,OAAO,SAAA,CAAU,CACvE,CAAC,EAMY8vB,GAAe5nB,EAAW,SACrC5U,EAEA0M,EACA,CACA,KAAM,CAAC,KAAAzL,EAAO,KAAMgU,CAAS,EAAIjV,EAC3BK,EAAQ6B,EAAajB,CAAI,EAE/B,OAAO8J,EAAA,cAACyJ,GAAA,CAAM,GAAGS,EAAW,MAAO5U,EAAO,IAAKqM,EAAK,OAAO,MAAO,CAAA,CACpE,CAAC,ECvFY+vB,GAAM7nB,EAAW,SAC5B5U,EAEA2d,EACA,CACA,KAAM,CACJ,KAAAlC,EACA,GAAAwR,EACA,QAAA+B,EACA,SAAAhuB,EACA,MAAA07B,EACA,QAAAhC,EACA,QAAAvM,EACA,QAAA5U,EAAU,EACV,SAAA8C,KACGpH,CACL,EAAIjV,EACE28B,EAAaz5B,GAAiC,IAAI,EAClD05B,EAAa15B,GAAO,EAAK,EAEzBopB,EAAa9U,EAAY,IAAM,CACnColB,EAAW,QAAU,EACvB,EAAG,CAAE,CAAA,EAECrQ,EAAc/U,EACjB6T,GAA+C,CAC9CuR,EAAW,QAAU,GACjBzO,GAASA,EAAQ9C,CAAK,CAC5B,EACA,CAAC8C,CAAO,CACV,EAEMzhB,EAAMD,GAAgBkR,CAAY,EAExC,OAAAxa,EAAU,IAAM,CACV6rB,GAAW,CAAC4N,EAAW,UACrBD,EAAW,SAASA,EAAW,QAAQ,MAAM,EACjDC,EAAW,QAAU,GAEzB,EAAG,CAAC5N,CAAO,CAAC,EAQVjkB,EAAA,cAACwQ,GAAA,CACC,UAAQ,MACP,GAAGtG,EACJ,gBAAeoH,EAAW,OAAS,QACnC,SAAUrb,EACV,KAAMya,EACN,GAAIwR,EACJ,KAAK,QACL,QAASyN,EACT,OAAQpO,EACR,QAASC,EACT,QAAShT,EACT,IAlBY9W,GAAiC,CAC/Ck6B,EAAW,QAAUl6B,EACrBiK,EAAI,QAAUjK,CAChB,EAgBI,KAAK,MACL,SAAU4Z,EACV,SAAUA,EAAW,EAAI,GACzB,KAAMqgB,EACN,KAAK,QAAA,CACP,CAEJ,CAAC,ECnFD,SAASG,GAAgB7kB,EAA2C,CAClE,OAAO,QAAQA,CAAI,CACrB,CAKO,MAAM8kB,GAAUloB,EAAW,SAChC5U,EACA0M,EACA,CACA,KAAM,CAAC,SAAUoI,KAAiBG,CAAS,EAAIjV,EACzC,CAAC03B,EAAcqF,CAAe,EAAIj6B,EAAS,EAAE,EAI7Ck6B,EAFW56B,EAAQ,IAAM0S,EAAa,OAAO+nB,EAAe,EAAG,CAAC/nB,CAAY,CAAC,EAE7D,IAAI,CAAC0D,EAAOK,IAChCC,GAAaN,EAAO,CAClB,QAASkf,IAAiB7e,EAC1B,IAAKA,EACL,QAAS,IAAMokB,EAAepkB,CAAU,CAC1C,CAAC,CACH,EAEMqkB,EAAUF,EAAK,OAEfC,EAAiBzlB,EAAa2lB,GAAmB,CACrDJ,EAAgBI,CAAM,CACxB,EAAG,CAAE,CAAA,EAEC/P,EAAgB5V,EACnB6T,GAA+C,CAC1CA,EAAM,MAAQ,aAChB0R,EAAiBK,IAAeA,EAAYF,EAAU,GAAKA,CAAO,EAGhE7R,EAAM,MAAQ,cAChB0R,EAAiBK,IAAeA,EAAY,GAAKF,CAAO,CAE5D,EACA,CAACA,CAAO,CACV,EAEA,OACEnyB,EAAA,cAACoU,GAAA,CAAO,UAAQ,UAAW,GAAGlK,EAAW,UAAWmY,EAAe,IAAK1gB,EAAK,KAAK,SAC/EswB,EAAAA,CACH,CAEJ,CAAC,ECzCYK,GAAWzoB,EAAW,SACjC5U,EAEA0M,EACA,CACA,KAAM,CAAC,KAAAsC,KAASiG,CAAS,EAAIjV,EAE7B,OACE+K,EAAA,cAACgO,EAAA,CACC,UAAQ,WACP,GAAG9D,EACJ,KAAMjG,EACN,IAAKtC,EACL,KAAK,WACL,SAAU1M,EAAM,WAAa,OAAY,EAAIA,EAAM,QAElDA,EAAAA,EAAM,QACT,CAEJ,CAAC,ECnBKs9B,GAAuD,CAC3D,MAAO,WACP,QAAS,UACT,QAAS,WACT,KAAM,SACR,EAEMC,GAAQ,CACZ,MAAO,QACP,QAAS,QACT,QAAS,QACT,KAAM,OACR,EAEM/oB,GAAOC,EAAO0I,EAAI;AAAA;AAAA,EAIlBqgB,GAAU/oB,EAAO2F,EAAI;AAAA;AAAA,EAOpB,SAASqjB,GACdz9B,EACoB,CACpB,KAAM,CAAC,SAAA09B,EAAU,YAAAC,EAAa,QAAAlJ,EAAS,MAAAre,EAAO,OAAAK,KAAWxB,CAAS,EAAIjV,EAChE49B,EAAWnnB,EAAS6mB,GAAiB7mB,GAAU,UAC/ConB,EAAOpnB,EAAS8mB,GAAM9mB,GAAU,SAEtC,OACE1L,EAAA,cAACyJ,GAAA,CACC,UAAQ,QACR,KAAMqpB,EACL,GAAG5oB,EACJ,UAAW,EACX,OAAQ,EACR,OAAQ,EACR,KAAM2oB,CAEN7yB,EAAAA,EAAA,cAACqP,GAAA,CAAK,MAAM,YACVrP,EAAAA,EAAA,cAACyyB,GAAA,CAAQ,KAAM,EAAG,QAAS,CAAA,EACzBzyB,EAAA,cAACme,GAAA,CAAM,MAAO,CAAA,EACX9S,GAASrL,EAAA,cAAC4J,GAAA,CAAK,OAAO,UAAYyB,EAAAA,CAAM,EACxCunB,GACC5yB,EAAA,cAAC4J,GAAA,CAAK,MAAK,GAAC,KAAM,CAAA,EACfgpB,CACH,CAEJ,CACF,EAECD,GACC3yB,EAAA,cAACgO,EAAA,CAAI,QAAS,CAAA,EACZhO,EAAA,cAACwQ,GAAA,CACC,GAAG,SACH,KAAMsQ,GACN,KAAK,QACL,QAAS,EACT,QAAS4I,EACT,MAAO,CAAC,cAAe,KAAK,CAC9B,CAAA,CACF,CAEJ,CACF,CAEJ,CClFA,MAAMv1B,GAAM,OAAO,IAAI,0BAA0B,EAEjDgL,EAAYhL,IAAOgL,EAAYhL,KAAQiL,GAAwC,IAAI,EAEtE,MAAA2zB,GAAwD5zB,EAAYhL,ICoB3EsV,GAAOC,EAAOuM,EAAK;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EASnB+c,GAAiBtpB,EAAO;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAS9B,IAAIupB,GAAU,EAKE,SAAAC,GAAcj+B,EAA+C,CAC3E,KAAM,CAAC,SAAAwK,EAAU,QAAA+O,EAAU,EAAG,SAAAC,EAAU,SAAAC,EAAU,QAAAgH,CAAO,EAAIzgB,EACvD,CAACoI,EAAO81B,CAAQ,EAAIp7B,EAAqB,CAAC,OAAQ,EAAE,CAAC,EACrDq7B,EAAYj7B,GAAqD,CAAA,CAAE,EAEnEk7B,EAAO5mB,EAAa6mB,GAAwB,CAChD,MAAMpR,EAAKoR,EAAO,IAAM,OAAOL,IAAS,EAClCM,EAAWD,EAAO,UAAY,IAE9BE,EAAU,IAAM,CA5D1B,IAAA5jB,EA6DM,MAAM6jB,GAAY7jB,EAAAwjB,EAAU,QAAQlR,KAAlB,YAAAtS,EAAuB,UAEzCujB,EAAUO,GAAc,CACtB,MAAMl6B,EAAMk6B,EAAU,OAAO,UAAWC,GAAMA,EAAE,KAAOzR,CAAE,EAEzD,GAAI1oB,EAAM,GAAI,CACZ,MAAMo6B,EAASF,EAAU,OAAO,MAAM,CAAC,EAEvC,OAAAE,EAAO,OAAOp6B,EAAK,CAAC,EAEb,CAAC,GAAGk6B,EAAW,OAAAE,CAAM,CAC9B,CAEA,OAAOF,CACT,CAAC,EAEGD,IAAc,SAChB,aAAaA,CAAS,EACtB,OAAOL,EAAU,QAAQlR,GAE7B,EAEA,OAAAiR,EAAUO,IACD,CACL,GAAGA,EACH,OAAQA,EAAU,OACf,OAAQC,GAAMA,EAAE,KAAOzR,CAAE,EACzB,OAAO,CACN,CACE,QAAAsR,EACA,GAAAtR,EACA,OAAQ,CAAC,GAAGoR,EAAQ,SAAAC,CAAQ,CAC9B,CACF,CAAC,CACL,EACD,EAEGH,EAAU,QAAQlR,KACpB,aAAakR,EAAU,QAAQlR,GAAI,SAAS,EAC5C,OAAOkR,EAAU,QAAQlR,IAG3BkR,EAAU,QAAQlR,GAAM,CAAC,UAAW,WAAWsR,EAASD,CAAQ,CAAC,EAE1DrR,CACT,EAAG,CAAA,CAAE,EAGL9pB,EACE,IAAM,IAAM,CACV,SAAW,CAAC,UAAAq7B,CAAS,IAAK,OAAO,OAAOL,EAAU,OAAO,EACvD,aAAaK,CAAS,EAGxBL,EAAU,QAAU,CACtB,CAAA,EACA,CAAA,CACF,EAEA,MAAMn/B,EAA2BoD,EAAQ,KAAO,CAAC,QAAS,EAAK,KAAAg8B,CAAI,GAAI,CAACA,CAAI,CAAC,EAE7E,OACErzB,EAAA,cAAC+yB,GAAa,SAAb,CAAsB,MAAO9+B,CAC3BwL,EAAAA,EAEDO,EAAA,cAACyJ,GAAA,CAAK,UAAQ,gBAAgB,QAASiM,CAAAA,EACrC1V,EAAA,cAACgzB,GAAA,KACChzB,EAAA,cAACgO,EAAA,CAAI,QAASQ,EAAS,SAAUC,EAAU,SAAUC,CAAAA,EACnD1O,EAAA,cAAC6zB,GAAA,CAAgB,QAAS,EAAA,EACvBx2B,EAAM,OAAO,IAAI,CAAC,CAAC,QAAAm2B,EAAS,GAAAtR,EAAI,OAAAoR,CAAM,IACrCtzB,EAAA,cAAC8zB,GAAO,IAAP,CACC,QAAS,CAAC,QAAS,EAAG,EAAG,EAAG,MAAO,CAAC,EACpC,KAAM,CAAC,QAAS,EAAG,MAAO,GAAK,WAAY,CAAC,SAAU,EAAG,CAAC,EAC1D,QAAS,CAAC,QAAS,EAAG,EAAG,GAAI,MAAO,GAAI,EACxC,IAAK5R,EACL,OAAO,WACP,WAAY,CAAC,KAAM,SAAU,QAAS,GAAI,UAAW,GAAG,GAExDliB,EAAA,cAAC0yB,GAAA,CACC,SAAUY,EAAO,SACjB,YAAaA,EAAO,YACpB,QAASE,EACT,OAAQF,EAAO,OACf,MAAOA,EAAO,KAAA,CAChB,CACF,CACD,CACH,CACF,CACF,CACF,CACF,CAEJ,UClJgBS,IAA8B,CAC5C,MAAM9/B,EAAQuL,GAAWuzB,EAAY,EAErC,GAAI,CAAC9+B,EACH,MAAM,IAAI,MAAM,mCAAmC,EAMrD,GAAI,CAACiM,GAASjM,CAAK,GAAKA,EAAM,UAAY,EACxC,MAAM,IAAI,MAAM,iDAAiD,EAGnE,OAAOA,CACT,CCrBgB,SAAA+/B,GACd32B,EACA42B,EACArO,EACoB,CANtB,IAAAhW,EAOE,MAAMpW,EAAMy6B,EAAa,QAAQrO,CAAc,EACzCiJ,EAAMoF,EAAa,MAAM,EAAGz6B,CAAG,EAC/ByN,EAAM4nB,EAAI,OAEhB,QAASxnB,EAAIJ,EAAM,EAAGI,GAAK,EAAGA,GAAK,EAAG,CACpC,MAAM6sB,EAAUrF,EAAIxnB,GAAG,aAAa,eAAe,EAEnD,GAAI,CAAC6sB,EACH,SAGF,MAAMC,EAAWD,EAAQ,MAAM,GAAG,EAElCC,EAAS,IAAI,EAEb,MAAM3sB,EAAc,GAEpB,IAAI8d,EAAW,GAEf,QAAS8O,EAAI,EAAGA,EAAID,EAAS,OAAQC,GAAK,EAAG,CAC3C5sB,EAAE,KAAK2sB,EAASC,EAAE,EAElB,MAAMC,EAAI7sB,EAAE,KAAK,GAAG,EAEpB,GAAI,GAACoI,EAAAvS,EAAMg3B,KAAN,MAAAzkB,EAAU,UAAU,CACvB0V,EAAW,GACX,KACF,CACF,CAEA,GAAIA,EACF,OAAOuJ,EAAIxnB,EAEf,CAEA,OAAO,IACT,CAEO,SAASitB,GACdj3B,EACA42B,EACArO,EACoB,CAjDtB,IAAAhW,EAkDE,MAAMpW,EAAMy6B,EAAa,QAAQrO,CAAc,EACzCiJ,EAAMoF,EAAa,MAAMz6B,CAAG,EAC5ByN,EAAMgtB,EAAa,OAEzB,QAAS5sB,EAAI,EAAGA,EAAIJ,EAAKI,GAAK,EAAG,CAC/B,GAAI,CAACwnB,EAAIxnB,GACP,SAGF,MAAM6sB,EAAUrF,EAAIxnB,GAAG,aAAa,eAAe,EAEnD,GAAI,CAAC6sB,EACH,SAGF,MAAMC,EAAWD,EAAQ,MAAM,GAAG,EAElCC,EAAS,MAET,MAAM3sB,EAAc,CAAA,EAEpB,IAAI8d,EAAW,GAEf,QAAS8O,EAAI,EAAGA,EAAID,EAAS,OAAQC,GAAK,EAAG,CAC3C5sB,EAAE,KAAK2sB,EAASC,EAAE,EAElB,MAAMC,EAAI7sB,EAAE,KAAK,GAAG,EAEpB,GAAI,GAACoI,EAAAvS,EAAMg3B,KAAN,MAAAzkB,EAAU,UAAU,CACvB0V,EAAW,GACX,KACF,CACF,CAEA,GAAIA,EACF,OAAOuJ,EAAIxnB,EAEf,CAEA,OAAO,IACT,CAEO,SAASktB,GAAkB78B,EAAuB,CAKvD,GAJIA,EAAG,aAAa,MAAM,IAAM,YAC9BA,EAAG,MAAA,EAGDA,EAAG,aAAa,MAAM,IAAM,OAAQ,CACtC,MAAM88B,EAAa98B,EAAG,WAElB88B,GAAcA,aAAsB,aACtCA,EAAW,MAAM,CAErB,CACF,CCpGA,MAAMrgC,GAAM,OAAO,IAAI,yBAAyB,EAEhDgL,EAAYhL,IAAOgL,EAAYhL,KAAQiL,GAAuC,IAAI,EAKrE,MAAAq1B,GAAsDt1B,EAAYhL,ICQlEugC,GAAOC,GAClB9qB,EAAW,SACT5U,EAEA0M,EACoB,CACpB,KAAM,CAAC,SAAAlC,EAAU,MAAAiE,EAAQ,KAAMwG,CAAS,EAAIjV,EACtC2d,EAAelR,GAAgBC,CAAG,EAClC,CAACikB,EAAgBgP,CAAiB,EAAI78B,EAA6B,IAAI,EACvE6sB,EAAoBzsB,GAAOytB,CAAc,EACzCyF,EAAiBh0B,EAAQ,IAAM,CAAA,EAAI,CAAE,CAAA,EACrC,CAAC48B,EAAcY,CAAe,EAAI98B,EAAwB,EAAE,EAC5D,CAACsF,EAAO81B,CAAQ,EAAIp7B,EAAoB,CAAA,CAAE,EAC1C+8B,EAAW38B,GAAOkF,CAAK,EAE7BjF,EAAU,IAAM,CACdwsB,EAAkB,QAAUgB,CAC9B,EAAG,CAACA,CAAc,CAAC,EAEnBxtB,EAAU,IAAM,CACd08B,EAAS,QAAUz3B,CACrB,EAAG,CAACA,CAAK,CAAC,EAEV,MAAM03B,EAAetoB,EACnB,CAAClV,EAAsB8zB,EAAc/F,EAAmBhU,KACtD6hB,EAAUl5B,IAAO,CAAC,GAAGA,EAAG,CAACoxB,GAAO,CAAC,QAAA9zB,EAAS,SAAA+tB,CAAQ,CAAC,EAAE,EAEjDhU,GACFsjB,EAAkBr9B,CAAO,EAGpB,IAAM,CACX47B,EAAUl5B,GAAM,CACd,MAAM+6B,EAAW,CAAC,GAAG/6B,CAAC,EAEtB,OAAA,OAAO+6B,EAAS3J,GAET2J,CACT,CAAC,CACH,GAEF,EACF,EAEMC,EAAcxoB,EAAY,CAAC4e,EAAc/F,IAAsB,CACnE6N,EAAUl5B,GAAM,CACd,MAAMi7B,EAAYj7B,EAAEoxB,GAEpB,OAAK6J,EAEE,CAAC,GAAGj7B,EAAG,CAACoxB,GAAO,CAAC,GAAG6J,EAAW,SAAA5P,CAAQ,CAAC,EAFvBrrB,CAGzB,CAAC,CACH,EAAG,EAAE,EAEC6wB,EAAiCzzB,EACrC,KAAO,CACL,QAAS,EACT,eAAgBuuB,GAAkBqO,EAAa,IAAM,KACrD,MAAO,EACP,KAAA5I,EACA,aAAA0J,EACA,YAAAE,EACA,kBAAAL,EACA,MAAAlxB,EACA,MAAArG,CACF,GACA,CAACuoB,EAAgBqO,EAAc5I,EAAM0J,EAAcE,EAAavxB,EAAOrG,CAAK,CAC9E,EAEMglB,EAAgB5V,EACnB6T,GAA+C,CAzFtD,IAAA1Q,EA0FQ,GAAKgV,EAAkB,QAEvB,CAAA,GAAItE,EAAM,MAAQ,YAAa,CAC7BA,EAAM,eAAe,EAErB,MAAM6U,EAASb,GACbQ,EAAS,QACTb,EACArP,EAAkB,OACpB,EAEIuQ,IACFZ,GAAkBY,CAAM,EACxBP,EAAkBO,CAAM,GAG1B,MACF,CAEA,GAAI7U,EAAM,MAAQ,UAAW,CAC3BA,EAAM,eAAe,EAErB,MAAM8U,EAASpB,GACbc,EAAS,QACTb,EACArP,EAAkB,OACpB,EAEIwQ,IACFb,GAAkBa,CAAM,EACxBR,EAAkBQ,CAAM,GAG1B,MACF,CAEA,GAAI9U,EAAM,MAAQ,YAAa,CAC7BA,EAAM,eAAe,EAErB,MAAM4T,EAAUtP,EAAkB,QAAQ,aAAa,eAAe,EAEtE,GAAI,CAACsP,EAAS,OAEd,MAAMgB,EAAYJ,EAAS,QAAQZ,GAEnC,GAAI,CAACgB,EAAW,OAEhB,GAAIA,EAAU,SACZ/B,EAAUl5B,GAAM,CACd,MAAMi7B,EAAYj7B,EAAEi6B,GAEpB,OAAKgB,EAEE,CAAC,GAAGj7B,EAAG,CAACi6B,GAAU,CAAC,GAAGgB,EAAW,SAAU,EAAK,CAAC,EAFjCj7B,CAGzB,CAAC,MACI,CACL,MAAMo7B,EAAWnB,EAAQ,MAAM,GAAG,EAElCmB,EAAS,MAET,MAAMC,EAAYD,EAAS,KAAK,GAAG,EAC7BE,EAAcD,GAAaR,EAAS,QAAQQ,GAE9CC,IACFA,EAAY,QAAQ,QACpBX,EAAkBW,EAAY,OAAO,EAEzC,CAEA,MACF,CAEA,GAAIjV,EAAM,MAAQ,aAAc,CAC9BA,EAAM,eAEN,EAAA,MAAMkV,EAAa5Q,EAAkB,QAAQ,aAAa,eAAe,EAEzE,GAAI,CAAC4Q,EAAY,QAEZ5lB,EAAAklB,EAAS,QAAQU,KAAjB,MAAA5lB,EAA8B,UACjCujB,EAAUl5B,GAAM,CACd,MAAMi7B,EAAYj7B,EAAEu7B,GAEpB,OAAKN,EAEE,CAAC,GAAGj7B,EAAG,CAACu7B,GAAa,CAAC,GAAGN,EAAW,SAAU,EAAI,CAAC,EAFnCj7B,CAGzB,CAAC,EAGH,MACF,CACF,CAAA,EACA,CAACg6B,CAAY,CACf,EAEA,OAAA77B,EAAU,IAAM,CACd,GAAI,CAACwa,EAAa,QAAS,OAC3B,MAAM6iB,EAAgB,MAAM,KAC1B7iB,EAAa,QAAQ,iBAAiB,sBAAsB,CAC9D,EAEAiiB,EAAgBY,CAAa,CAC/B,EAAG,CAACh2B,EAAUmT,CAAY,CAAC,EAGzB5S,EAAA,cAACy0B,GAAY,SAAZ,CAAqB,MAAO3J,CAC3B9qB,EAAAA,EAAA,cAACme,GAAA,CACC,GAAG,KACH,UAAQ,OACP,GAAGjU,EACJ,UAAWmY,EACX,IAAKzP,EACL,KAAK,OACL,MAAOlP,CAENjE,EAAAA,CACH,CACF,CAEJ,CAAC,CACH,EAEAi1B,GAAK,YAAc,OChNH,SAAAgB,IAAgD,CAC9D,OAAO9tB;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA,GAwBT,CAEO,SAAS+tB,GAAuB1gC,EAA+C,CACpF,KAAM,CAAC,MAAAD,CAAK,EAAIC,EACV+S,EAAQ,UACR,CAAC,KAAAlS,EAAM,MAAA4G,EAAO,WAAA6yB,CAAU,EAAIv6B,EAAM,OAAO,MAEzCsI,EAAOiyB,EAAaA,EAAWvnB,IAAUunB,EAAW,QAAU7yB,EAAMsL,IAAUtL,EAAM,QAE1F,OAAOkL;AAAAA;AAAAA;AAAAA;AAAAA,UAIC8H,EAAgB5Z,EAAMwH,EAAK,OAAO;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,UAOlCoS,EAAgB5Z,EAAMwH,EAAK,OAAO;AAAA;AAAA;AAAA;AAAA;AAAA,YAKhCoS,EAAgB5Z,EAAMwH,EAAK,OAAO;AAAA;AAAA;AAAA;AAAA,YAIlCoS,EAAgB5Z,EAAMwH,EAAK,QAAQ;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,UAQrCoS,EAAgB5Z,EAAMwH,EAAK,OAAO;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,UAOlCoS,EAAgB5Z,EAAMwH,EAAK,OAAO;AAAA;AAAA;AAAA;AAAA;AAAA,YAKhCoS,EAAgB5Z,EAAMwH,EAAK,OAAO;AAAA;AAAA;AAAA;AAAA,YAIlCoS,EAAgB5Z,EAAMwH,EAAK,QAAQ;AAAA;AAAA;AAAA;AAAA,GAK/C,CAMgB,SAAAs4B,GACd3gC,EAC4B,CAC5B,KAAM,CAAC,OAAA4gC,EAAQ,MAAA7gC,CAAK,EAAIC,EAClB,CAAC,MAAAyO,CAAK,EAAI1O,EAAM,OAEtB,OAAO4S;AAAAA,oBACWxT,EAAIsP,EAAM,GAAKmyB,CAAM;AAAA;AAAA;AAAA;AAAA;AAAA,GAMzC,CCnGO,SAASC,IAA4B,CAC1C,MAAMC,EAAOv2B,GAAWi1B,EAAW,EAEnC,GAAI,CAACsB,EACH,MAAM,IAAI,MAAM,6BAA6B,EAG/C,OAAOA,CACT,OCPaC,GAAYrB,GAAK,SAC5B1/B,EAEoB,CACpB,KAAM,CAAC,SAAAwK,EAAU,SAAA6lB,EAAW,MAAUpb,CAAS,EAAIjV,EAC7C8gC,EAAOD,KAEb,OACE91B,EAAA,cAACme,GAAA,CACC,GAAG,KACH,UAAQ,YACP,GAAGjU,EACJ,OAAQ,CAACob,EACT,UAAWyQ,EAAK,MAChB,KAAK,QACL,MAAOA,EAAK,KAAA,EAEXt2B,CACH,CAEJ,CAAC,ECCKgK,GAAOkrB,GAAKjrB,EAAO,GAAGgsB,GAAmBC,EAAsB,CAAC,EAEhEM,GAAcvsB,EAAOsE,CAAG,EAAE,MAAM,CAAC,YAAa,GAAG,CAAC,EAAyB4nB,EAAgB,EAE3FM,GAAkBxsB,EAAOE,EAAI;AAAA;AAAA;AAAA;AAAA,EAUtBusB,GAAWxB,GAAK,SAC3B1/B,EACoB,CACpB,KAAM,CACJ,SAAAwK,EACA,SAAU22B,EAAe,GACzB,SAAAngC,EACA,KAAAogC,EACA,KAAA3lB,EACA,GAAI4lB,EACJ,MAAA55B,EACA,QAAAizB,EACA,QAAAnhB,EAAU,EACV,SAAA8C,EAAW,GACX,MAAA5N,EAAQ,EACR,KAAA8N,EACA,OAAAvH,KACGC,CACL,EAAIjV,EACEshC,EAAUp+B,GAA6B,IAAI,EAC3Cq+B,EAAcr+B,GAA8B,IAAI,EAChD49B,EAAOD,GACP,EAAA,CAAC,KAAAzK,EAAM,aAAA0J,EAAc,YAAAE,EAAa,kBAAAL,CAAiB,EAAImB,EACvD7T,EAAKjW,GAAMqqB,CAAM,GAAKA,EACtBjB,EAAWh+B,EAAQ,IAAMg0B,EAAK,OAAO,CAACnJ,GAAM,EAAE,CAAC,EAAG,CAACA,EAAImJ,CAAI,CAAC,EAC5D6I,EAAUmB,EAAS,KAAK,GAAG,EAC3BH,EAAYa,EAAK,MAAM7B,GACvBjQ,EAAU8R,EAAK,iBAAmBQ,EAAQ,QAC1CjR,GAAW4P,GAAA,KAAA,OAAAA,EAAW,YAAa,OAAYkB,GAAelB,GAAA,KAAAA,OAAAA,EAAW,WAAY,GACrFuB,EAAWV,EAAK,gBAAkBA,EAAK,iBAAmBQ,EAAQ,QAAU,EAAI,GAChFzL,EAAezzB,EACnB,KAAO,CAAC,GAAG0+B,EAAM,MAAOA,EAAK,MAAQ,EAAG,KAAMV,CAAQ,GACtD,CAACA,EAAUU,CAAI,CACjB,EAEM3T,GAAc3V,EACjB6T,IAA2C,CACtCqP,GAASA,EAAQrP,EAAK,EAE1B,MAAM7nB,EAAS6nB,GAAM,OAGnB7nB,aAAkB,cACjBA,EAAO,aAAa,SAAS,IAAM,iBAClCA,EAAO,QAAQ,2BAA2B,KAE5C6nB,GAAM,kBACN2U,EAAYf,EAAS,CAAC5O,CAAQ,EAC9BsP,EAAkB2B,EAAQ,OAAO,EAErC,EACA,CAACjR,EAAU4O,EAASvE,EAASsF,EAAaL,CAAiB,CAC7D,EAEMvS,EAAgB5V,EACnB6T,IAA4C,CAC3C,GAAI2D,GAAW3D,GAAM,MAAQ,QAAS,CACpC,MAAM5oB,EAAK8+B,EAAY,SAAWD,EAAQ,QAE1C7+B,GAAA,MAAAA,EAAI,OACN,CACF,EACA,CAACusB,CAAO,CACV,EAEA7rB,EAAU,IAAM,CACd,GAAKm+B,EAAQ,QAEb,OAAOxB,EAAawB,EAAQ,QAASlB,EAAS,KAAK,GAAG,EAAG/P,EAAUhU,CAAQ,CAC7E,EAAG,CAACgU,EAAU+P,EAAUN,EAAczjB,CAAQ,CAAC,EAE/C,MAAMwK,EACJ9b,EAAA,cAACqP,GAAA,CAAK,QAASb,CACbxO,EAAAA,EAAA,cAACgO,EAAA,CACC,YAAatK,EACb,MAAO,CAAC,WAAYgN,GAAQjR,EAAW,UAAY,SAAU,cAAe,MAAM,GAEjFiR,GACC1Q,EAAA,cAAC4J,GAAA,CAAK,MAAOlN,EAAO,KAAMzG,EAAU,OAAQgU,CAAAA,EACzC4H,GAAcnB,CAAI,CACrB,EAED,CAACA,GACA1Q,EAAA,cAACk2B,GAAA,CAAgB,MAAOx5B,EAAO,KAAMzG,EAAU,OAAQgU,CAAAA,EACrDjK,EAAA,cAAC02B,GAAA,CAAqB,MAAO,CAAC,UAAWpR,EAAW,gBAAkB,MAAS,CAAG,CAAA,CACpF,CAEJ,EACAtlB,EAAA,cAACgO,EAAA,CAAI,KAAM,CACThO,EAAAA,EAAA,cAAC4J,GAAA,CAAK,MAAOlN,EAAO,KAAMzG,EAAU,aAAa,WAAW,OAAQgU,CACjEuH,EAAAA,CACH,CACF,CACF,EAGF,OAAI6kB,EAEAr2B,EAAA,cAACyJ,GAAA,CACC,gBAAe6H,EAAW,GAAK,OAC/B,eAAc4Q,EACd,gBAAegS,EACf,UAAQ,WACP,GAAGhqB,EACJ,QAASkY,GACT,IAAKmU,EACL,KAAK,MAELv2B,EAAAA,EAAA,cAACi2B,GAAA,CACC,OAAQF,EAAK,MACb,gBAAezQ,EACf,UAAQ,gBACR,KAAM+Q,EACN,IAAKG,EACL,KAAK,WACL,SAAUC,CAET3a,EAAAA,CACH,EAEA9b,EAAA,cAACy0B,GAAY,SAAZ,CAAqB,MAAO3J,CAC1BrrB,EAAAA,GAAYO,EAAA,cAACg2B,GAAA,CAAU,OAAQ,CAAC1Q,CAAAA,EAAW7lB,CAAS,CACvD,CACF,EAKFO,EAAA,cAACyJ,GAAA,CACC,gBAAe6H,EAAW,GAAK,OAC/B,UAAQ,WACR,eAAc4Q,EACd,gBAAegS,EACd,GAAGhqB,EACJ,gBAAeob,EACf,QAASlD,GACT,UAAWC,EACX,IAAKkU,EACL,KAAK,WACL,SAAUE,CAEVz2B,EAAAA,EAAA,cAACi2B,GAAA,CAAY,OAAQF,EAAK,MAAO,GAAG,MAAM,UAAQ,eAC/Cja,EAAAA,CACH,EAEA9b,EAAA,cAACy0B,GAAY,SAAZ,CAAqB,MAAO3J,GAC1BrrB,GAAYO,EAAA,cAACg2B,GAAA,CAAU,SAAU1Q,GAAW7lB,CAAS,CACxD,CACF,CAEJ,CAAC"}