@hanzogui/web 7.3.2 → 8.0.0

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 (347) hide show
  1. package/.turbo/turbo-build.log +2 -0
  2. package/dist/cjs/_withStableStyle.cjs +2 -2
  3. package/dist/cjs/_withStableStyle.native.js +2 -2
  4. package/dist/cjs/_withStableStyle.native.js.map +1 -1
  5. package/dist/cjs/config.cjs +18 -10
  6. package/dist/cjs/config.native.js +19 -10
  7. package/dist/cjs/config.native.js.map +1 -1
  8. package/dist/cjs/constants/constants.cjs +1 -1
  9. package/dist/cjs/constants/constants.native.js +1 -1
  10. package/dist/cjs/constants/constants.native.js.map +1 -1
  11. package/dist/cjs/createComponent.cjs +68 -28
  12. package/dist/cjs/createComponent.native.js +75 -30
  13. package/dist/cjs/createComponent.native.js.map +1 -1
  14. package/dist/cjs/createGui.cjs +1 -1
  15. package/dist/cjs/createGui.native.js +1 -1
  16. package/dist/cjs/createGui.native.js.map +1 -1
  17. package/dist/cjs/eventHandling.cjs +2 -2
  18. package/dist/cjs/eventHandling.native.js +73 -54
  19. package/dist/cjs/eventHandling.native.js.map +1 -1
  20. package/dist/cjs/helpers/createDesignSystem.cjs +2 -2
  21. package/dist/cjs/helpers/defaultAnimationDriver.cjs +1 -1
  22. package/dist/cjs/helpers/defaultAnimationDriver.native.js +1 -1
  23. package/dist/cjs/helpers/expandStyle.cjs +46 -5
  24. package/dist/cjs/helpers/expandStyle.native.js +36 -30
  25. package/dist/cjs/helpers/expandStyle.native.js.map +1 -1
  26. package/dist/cjs/helpers/getGroupPropParts.cjs +1 -1
  27. package/dist/cjs/helpers/getGroupPropParts.native.js +1 -1
  28. package/dist/cjs/helpers/getSplitStyles.cjs +76 -31
  29. package/dist/cjs/helpers/getSplitStyles.native.js +140 -85
  30. package/dist/cjs/helpers/getSplitStyles.native.js.map +1 -1
  31. package/dist/cjs/helpers/getTokenForKey.cjs +5 -5
  32. package/dist/cjs/helpers/getTokenForKey.native.js +5 -5
  33. package/dist/cjs/helpers/getTokenForKey.native.js.map +1 -1
  34. package/dist/cjs/helpers/getVariantExtras.cjs +7 -3
  35. package/dist/cjs/helpers/getVariantExtras.native.js +7 -3
  36. package/dist/cjs/helpers/getVariantExtras.native.js.map +1 -1
  37. package/dist/cjs/helpers/insertStyleRule.cjs +4 -4
  38. package/dist/cjs/helpers/insertStyleRule.native.js +3 -3
  39. package/dist/cjs/helpers/insertStyleRule.native.js.map +1 -1
  40. package/dist/cjs/helpers/mainThreadPressEvents.native.js +32 -4
  41. package/dist/cjs/helpers/mainThreadPressEvents.native.js.map +1 -1
  42. package/dist/cjs/helpers/normalizeStyle.cjs +22 -1
  43. package/dist/cjs/helpers/normalizeStyle.native.js +41 -1
  44. package/dist/cjs/helpers/normalizeStyle.native.js.map +1 -1
  45. package/dist/cjs/helpers/platformResolveValue.cjs +1 -1
  46. package/dist/cjs/helpers/platformResolveValue.native.js +1 -1
  47. package/dist/cjs/helpers/platformResolveValue.native.js.map +1 -1
  48. package/dist/cjs/helpers/pointerEvents.native.js +26 -20
  49. package/dist/cjs/helpers/pointerEvents.native.js.map +1 -1
  50. package/dist/cjs/helpers/propMapper.cjs +31 -7
  51. package/dist/cjs/helpers/propMapper.native.js +70 -20
  52. package/dist/cjs/helpers/propMapper.native.js.map +1 -1
  53. package/dist/cjs/helpers/resolveSafeArea.native.js +1 -1
  54. package/dist/cjs/helpers/resolveSafeArea.native.js.map +1 -1
  55. package/dist/cjs/helpers/styleOriginalValues.cjs +28 -0
  56. package/dist/cjs/helpers/styleOriginalValues.native.js +31 -0
  57. package/dist/cjs/helpers/styleOriginalValues.native.js.map +1 -0
  58. package/dist/cjs/helpers/styleProvenance.cjs +43 -0
  59. package/dist/cjs/helpers/styleProvenance.native.js +46 -0
  60. package/dist/cjs/helpers/styleProvenance.native.js.map +1 -0
  61. package/dist/cjs/helpers/wrapStyleTags.cjs +35 -11
  62. package/dist/cjs/helpers/wrapStyleTags.native.js.map +1 -1
  63. package/dist/cjs/hooks/getThemeProxied.cjs +1 -1
  64. package/dist/cjs/hooks/getThemeProxied.native.js +4 -4
  65. package/dist/cjs/hooks/getThemeProxied.native.js.map +1 -1
  66. package/dist/cjs/hooks/useComponentState.cjs +29 -3
  67. package/dist/cjs/hooks/useComponentState.native.js +30 -4
  68. package/dist/cjs/hooks/useComponentState.native.js.map +1 -1
  69. package/dist/cjs/hooks/useMedia.cjs +107 -42
  70. package/dist/cjs/hooks/useMedia.native.js +149 -60
  71. package/dist/cjs/hooks/useMedia.native.js.map +1 -1
  72. package/dist/cjs/hooks/useTheme.cjs +18 -5
  73. package/dist/cjs/hooks/useTheme.native.js +19 -5
  74. package/dist/cjs/hooks/useTheme.native.js.map +1 -1
  75. package/dist/cjs/hooks/useThemeState.cjs +143 -72
  76. package/dist/cjs/hooks/useThemeState.native.js +155 -74
  77. package/dist/cjs/hooks/useThemeState.native.js.map +1 -1
  78. package/dist/cjs/index.cjs +3 -0
  79. package/dist/cjs/index.native.js +3 -0
  80. package/dist/cjs/index.native.js.map +1 -1
  81. package/dist/cjs/opacityModifier.test-d.cjs +36 -0
  82. package/dist/cjs/opacityModifier.test-d.native.js +39 -0
  83. package/dist/cjs/opacityModifier.test-d.native.js.map +1 -0
  84. package/dist/cjs/styledNonStyleProps.test-d.cjs +63 -0
  85. package/dist/cjs/styledNonStyleProps.test-d.native.js +66 -0
  86. package/dist/cjs/styledNonStyleProps.test-d.native.js.map +1 -0
  87. package/dist/cjs/views/GuiProvider.cjs +2 -2
  88. package/dist/cjs/views/Text.cjs +1 -0
  89. package/dist/cjs/views/Text.native.js +1 -0
  90. package/dist/cjs/views/Text.native.js.map +1 -1
  91. package/dist/cjs/views/Theme.cjs +1 -1
  92. package/dist/cjs/views/Theme.native.js +1 -1
  93. package/dist/cjs/views/Theme.native.js.map +1 -1
  94. package/dist/esm/_withStableStyle.mjs +2 -2
  95. package/dist/esm/_withStableStyle.mjs.map +1 -1
  96. package/dist/esm/_withStableStyle.native.js +2 -2
  97. package/dist/esm/_withStableStyle.native.js.map +1 -1
  98. package/dist/esm/config.mjs +18 -11
  99. package/dist/esm/config.mjs.map +1 -1
  100. package/dist/esm/config.native.js +19 -11
  101. package/dist/esm/config.native.js.map +1 -1
  102. package/dist/esm/constants/constants.mjs +1 -1
  103. package/dist/esm/constants/constants.native.js +1 -1
  104. package/dist/esm/constants/constants.native.js.map +1 -1
  105. package/dist/esm/createComponent.mjs +74 -35
  106. package/dist/esm/createComponent.mjs.map +1 -1
  107. package/dist/esm/createComponent.native.js +90 -42
  108. package/dist/esm/createComponent.native.js.map +1 -1
  109. package/dist/esm/createGui.mjs +6 -6
  110. package/dist/esm/createGui.mjs.map +1 -1
  111. package/dist/esm/createGui.native.js +6 -6
  112. package/dist/esm/createGui.native.js.map +1 -1
  113. package/dist/esm/eventHandling.mjs +2 -2
  114. package/dist/esm/eventHandling.mjs.map +1 -1
  115. package/dist/esm/eventHandling.native.js +74 -55
  116. package/dist/esm/eventHandling.native.js.map +1 -1
  117. package/dist/esm/helpers/createDesignSystem.mjs +2 -2
  118. package/dist/esm/helpers/createDesignSystem.mjs.map +1 -1
  119. package/dist/esm/helpers/createDesignSystem.native.js +1 -2
  120. package/dist/esm/helpers/createDesignSystem.native.js.map +1 -1
  121. package/dist/esm/helpers/defaultAnimationDriver.mjs +1 -1
  122. package/dist/esm/helpers/defaultAnimationDriver.mjs.map +1 -1
  123. package/dist/esm/helpers/defaultAnimationDriver.native.js +1 -1
  124. package/dist/esm/helpers/expandStyle.mjs +47 -8
  125. package/dist/esm/helpers/expandStyle.mjs.map +1 -1
  126. package/dist/esm/helpers/expandStyle.native.js +36 -30
  127. package/dist/esm/helpers/expandStyle.native.js.map +1 -1
  128. package/dist/esm/helpers/expandStyles.mjs.map +1 -1
  129. package/dist/esm/helpers/expandStyles.native.js.map +1 -1
  130. package/dist/esm/helpers/getGroupPropParts.mjs +1 -1
  131. package/dist/esm/helpers/getGroupPropParts.mjs.map +1 -1
  132. package/dist/esm/helpers/getGroupPropParts.native.js +1 -1
  133. package/dist/esm/helpers/getSplitStyles.mjs +86 -45
  134. package/dist/esm/helpers/getSplitStyles.mjs.map +1 -1
  135. package/dist/esm/helpers/getSplitStyles.native.js +146 -98
  136. package/dist/esm/helpers/getSplitStyles.native.js.map +1 -1
  137. package/dist/esm/helpers/getThemeCSSRules.mjs +1 -1
  138. package/dist/esm/helpers/getThemeCSSRules.mjs.map +1 -1
  139. package/dist/esm/helpers/getTokenForKey.mjs +5 -5
  140. package/dist/esm/helpers/getTokenForKey.mjs.map +1 -1
  141. package/dist/esm/helpers/getTokenForKey.native.js +5 -5
  142. package/dist/esm/helpers/getTokenForKey.native.js.map +1 -1
  143. package/dist/esm/helpers/getVariantExtras.mjs +7 -3
  144. package/dist/esm/helpers/getVariantExtras.mjs.map +1 -1
  145. package/dist/esm/helpers/getVariantExtras.native.js +7 -3
  146. package/dist/esm/helpers/getVariantExtras.native.js.map +1 -1
  147. package/dist/esm/helpers/insertStyleRule.mjs +4 -6
  148. package/dist/esm/helpers/insertStyleRule.mjs.map +1 -1
  149. package/dist/esm/helpers/insertStyleRule.native.js +0 -26
  150. package/dist/esm/helpers/insertStyleRule.native.js.map +1 -1
  151. package/dist/esm/helpers/isActivePlatform.mjs.map +1 -1
  152. package/dist/esm/helpers/isActivePlatform.native.js.map +1 -1
  153. package/dist/esm/helpers/log.mjs.map +1 -1
  154. package/dist/esm/helpers/log.native.js.map +1 -1
  155. package/dist/esm/helpers/mainThreadPressEvents.native.js +32 -4
  156. package/dist/esm/helpers/mainThreadPressEvents.native.js.map +1 -1
  157. package/dist/esm/helpers/normalizeStyle.mjs +22 -1
  158. package/dist/esm/helpers/normalizeStyle.mjs.map +1 -1
  159. package/dist/esm/helpers/normalizeStyle.native.js +41 -1
  160. package/dist/esm/helpers/normalizeStyle.native.js.map +1 -1
  161. package/dist/esm/helpers/platformResolveValue.mjs +1 -1
  162. package/dist/esm/helpers/platformResolveValue.mjs.map +1 -1
  163. package/dist/esm/helpers/platformResolveValue.native.js +1 -1
  164. package/dist/esm/helpers/platformResolveValue.native.js.map +1 -1
  165. package/dist/esm/helpers/pointerEvents.native.js +26 -20
  166. package/dist/esm/helpers/pointerEvents.native.js.map +1 -1
  167. package/dist/esm/helpers/propMapper.mjs +32 -11
  168. package/dist/esm/helpers/propMapper.mjs.map +1 -1
  169. package/dist/esm/helpers/propMapper.native.js +71 -22
  170. package/dist/esm/helpers/propMapper.native.js.map +1 -1
  171. package/dist/esm/helpers/resolveSafeArea.native.js +1 -1
  172. package/dist/esm/helpers/resolveSafeArea.native.js.map +1 -1
  173. package/dist/esm/helpers/skipProps.mjs +0 -1
  174. package/dist/esm/helpers/skipProps.mjs.map +1 -1
  175. package/dist/esm/helpers/skipProps.native.js +0 -1
  176. package/dist/esm/helpers/skipProps.native.js.map +1 -1
  177. package/dist/esm/helpers/styleOriginalValues.mjs +3 -0
  178. package/dist/esm/helpers/styleOriginalValues.mjs.map +1 -0
  179. package/dist/esm/helpers/styleOriginalValues.native.js +3 -0
  180. package/dist/esm/helpers/styleOriginalValues.native.js.map +1 -0
  181. package/dist/esm/helpers/styleProvenance.mjs +16 -0
  182. package/dist/esm/helpers/styleProvenance.mjs.map +1 -0
  183. package/dist/esm/helpers/styleProvenance.native.js +16 -0
  184. package/dist/esm/helpers/styleProvenance.native.js.map +1 -0
  185. package/dist/esm/helpers/useRenderElement.mjs.map +1 -1
  186. package/dist/esm/helpers/useRenderElement.native.js.map +1 -1
  187. package/dist/esm/helpers/wrapStyleTags.mjs +35 -11
  188. package/dist/esm/helpers/wrapStyleTags.mjs.map +1 -1
  189. package/dist/esm/helpers/wrapStyleTags.native.js +0 -2
  190. package/dist/esm/helpers/wrapStyleTags.native.js.map +1 -1
  191. package/dist/esm/hooks/getThemeProxied.mjs +2 -5
  192. package/dist/esm/hooks/getThemeProxied.mjs.map +1 -1
  193. package/dist/esm/hooks/getThemeProxied.native.js +5 -5
  194. package/dist/esm/hooks/getThemeProxied.native.js.map +1 -1
  195. package/dist/esm/hooks/useComponentState.mjs +31 -5
  196. package/dist/esm/hooks/useComponentState.mjs.map +1 -1
  197. package/dist/esm/hooks/useComponentState.native.js +32 -6
  198. package/dist/esm/hooks/useComponentState.native.js.map +1 -1
  199. package/dist/esm/hooks/useMedia.mjs +108 -43
  200. package/dist/esm/hooks/useMedia.mjs.map +1 -1
  201. package/dist/esm/hooks/useMedia.native.js +150 -61
  202. package/dist/esm/hooks/useMedia.native.js.map +1 -1
  203. package/dist/esm/hooks/useTheme.mjs +18 -5
  204. package/dist/esm/hooks/useTheme.mjs.map +1 -1
  205. package/dist/esm/hooks/useTheme.native.js +19 -5
  206. package/dist/esm/hooks/useTheme.native.js.map +1 -1
  207. package/dist/esm/hooks/useThemeState.mjs +141 -70
  208. package/dist/esm/hooks/useThemeState.mjs.map +1 -1
  209. package/dist/esm/hooks/useThemeState.native.js +154 -73
  210. package/dist/esm/hooks/useThemeState.native.js.map +1 -1
  211. package/dist/esm/index.js +4 -4
  212. package/dist/esm/index.js.map +1 -1
  213. package/dist/esm/index.mjs +4 -4
  214. package/dist/esm/index.mjs.map +1 -1
  215. package/dist/esm/index.native.js +4 -4
  216. package/dist/esm/index.native.js.map +1 -1
  217. package/dist/esm/insertFont.mjs.map +1 -1
  218. package/dist/esm/insertFont.native.js +0 -1
  219. package/dist/esm/insertFont.native.js.map +1 -1
  220. package/dist/esm/opacityModifier.test-d.mjs +37 -0
  221. package/dist/esm/opacityModifier.test-d.mjs.map +1 -0
  222. package/dist/esm/opacityModifier.test-d.native.js +37 -0
  223. package/dist/esm/opacityModifier.test-d.native.js.map +1 -0
  224. package/dist/esm/styledNonStyleProps.test-d.mjs +64 -0
  225. package/dist/esm/styledNonStyleProps.test-d.mjs.map +1 -0
  226. package/dist/esm/styledNonStyleProps.test-d.native.js +64 -0
  227. package/dist/esm/styledNonStyleProps.test-d.native.js.map +1 -0
  228. package/dist/esm/views/GuiProvider.mjs +2 -2
  229. package/dist/esm/views/GuiProvider.mjs.map +1 -1
  230. package/dist/esm/views/GuiProvider.native.js +6 -6
  231. package/dist/esm/views/GuiProvider.native.js.map +1 -1
  232. package/dist/esm/views/Text.mjs +1 -0
  233. package/dist/esm/views/Text.mjs.map +1 -1
  234. package/dist/esm/views/Text.native.js +1 -0
  235. package/dist/esm/views/Text.native.js.map +1 -1
  236. package/dist/esm/views/Theme.mjs +1 -1
  237. package/dist/esm/views/Theme.mjs.map +1 -1
  238. package/dist/esm/views/Theme.native.js +1 -1
  239. package/dist/esm/views/Theme.native.js.map +1 -1
  240. package/dist/esm/views/ThemeProvider.mjs.map +1 -1
  241. package/dist/esm/views/ThemeProvider.native.js +2 -4
  242. package/dist/esm/views/ThemeProvider.native.js.map +1 -1
  243. package/inject-styles/index.cjs +2 -0
  244. package/inject-styles/index.js +2 -0
  245. package/package.json +27 -40
  246. package/src/_withStableStyle.tsx +9 -3
  247. package/src/config.ts +24 -14
  248. package/src/constants/accessibilityDirectMap.tsx +1 -1
  249. package/src/constants/constants.ts +1 -1
  250. package/src/createComponent.tsx +161 -26
  251. package/src/createGui.ts +2 -2
  252. package/src/eventHandling.native.ts +143 -52
  253. package/src/eventHandling.ts +4 -2
  254. package/src/helpers/createDesignSystem.ts +2 -2
  255. package/src/helpers/createMediaStyle.ts +1 -1
  256. package/src/helpers/defaultAnimationDriver.tsx +1 -1
  257. package/src/helpers/expandStyle.ts +108 -40
  258. package/src/helpers/getGroupPropParts.ts +1 -1
  259. package/src/helpers/getSplitStyles.tsx +178 -72
  260. package/src/helpers/getTokenForKey.ts +5 -5
  261. package/src/helpers/getVariantExtras.tsx +5 -4
  262. package/src/helpers/insertStyleRule.tsx +7 -7
  263. package/src/helpers/mainThreadPressEvents.native.ts +42 -2
  264. package/src/helpers/mergeProps.ts +1 -1
  265. package/src/helpers/normalizeStyle.ts +23 -1
  266. package/src/helpers/platformResolveValue.native.ts +4 -1
  267. package/src/helpers/platformResolveValue.ts +5 -1
  268. package/src/helpers/pointerEvents.native.ts +26 -19
  269. package/src/helpers/propMapper.ts +61 -6
  270. package/src/helpers/resolveSafeArea.native.ts +1 -1
  271. package/src/helpers/styleOriginalValues.ts +2 -0
  272. package/src/helpers/styleProvenance.ts +49 -0
  273. package/src/helpers/wrapStyleTags.tsx +63 -20
  274. package/src/hooks/getThemeProxied.ts +14 -8
  275. package/src/hooks/useComponentState.ts +56 -4
  276. package/src/hooks/useMedia.tsx +156 -43
  277. package/src/hooks/useTheme.tsx +28 -6
  278. package/src/hooks/useThemeState.ts +284 -142
  279. package/src/index.ts +9 -1
  280. package/src/interfaces/GuiComponentPropsBaseBase.tsx +2 -2
  281. package/src/opacityModifier.test-d.ts +65 -0
  282. package/src/styled.tsx +1 -1
  283. package/src/styledNonStyleProps.test-d.ts +106 -0
  284. package/src/types.tsx +120 -22
  285. package/src/views/GuiProvider.tsx +2 -2
  286. package/src/views/Text.tsx +1 -0
  287. package/src/views/Theme.tsx +4 -1
  288. package/tsconfig.json +44 -0
  289. package/tsconfig.test.json +9 -0
  290. package/types/_withStableStyle.d.ts.map +1 -1
  291. package/types/config.d.ts +3 -1
  292. package/types/config.d.ts.map +1 -1
  293. package/types/constants/constants.d.ts +1 -1
  294. package/types/constants/constants.d.ts.map +1 -1
  295. package/types/createComponent.d.ts.map +1 -1
  296. package/types/eventHandling.d.ts +2 -2
  297. package/types/eventHandling.d.ts.map +1 -1
  298. package/types/eventHandling.native.d.ts +3 -3
  299. package/types/eventHandling.native.d.ts.map +1 -1
  300. package/types/helpers/expandStyle.d.ts +2 -1
  301. package/types/helpers/expandStyle.d.ts.map +1 -1
  302. package/types/helpers/getSplitStyles.d.ts +4 -2
  303. package/types/helpers/getSplitStyles.d.ts.map +1 -1
  304. package/types/helpers/getVariantExtras.d.ts.map +1 -1
  305. package/types/helpers/mainThreadPressEvents.native.d.ts.map +1 -1
  306. package/types/helpers/normalizeStyle.d.ts.map +1 -1
  307. package/types/helpers/platformResolveValue.d.ts.map +1 -1
  308. package/types/helpers/platformResolveValue.native.d.ts.map +1 -1
  309. package/types/helpers/pointerEvents.native.d.ts.map +1 -1
  310. package/types/helpers/propMapper.d.ts.map +1 -1
  311. package/types/helpers/styleOriginalValues.d.ts +2 -0
  312. package/types/helpers/styleOriginalValues.d.ts.map +1 -0
  313. package/types/helpers/styleProvenance.d.ts +11 -0
  314. package/types/helpers/styleProvenance.d.ts.map +1 -0
  315. package/types/helpers/wrapStyleTags.d.ts +1 -1
  316. package/types/helpers/wrapStyleTags.d.ts.map +1 -1
  317. package/types/hooks/getThemeProxied.d.ts.map +1 -1
  318. package/types/hooks/useComponentState.d.ts +2 -1
  319. package/types/hooks/useComponentState.d.ts.map +1 -1
  320. package/types/hooks/useMedia.d.ts.map +1 -1
  321. package/types/hooks/useTheme.d.ts +1 -1
  322. package/types/hooks/useTheme.d.ts.map +1 -1
  323. package/types/hooks/useThemeState.d.ts +1 -1
  324. package/types/hooks/useThemeState.d.ts.map +1 -1
  325. package/types/index.d.ts +3 -3
  326. package/types/index.d.ts.map +1 -1
  327. package/types/interfaces/GuiComponentPropsBaseBase.d.ts +2 -2
  328. package/types/types.d.ts +33 -16
  329. package/types/types.d.ts.map +1 -1
  330. package/types/views/Configuration.d.ts +1 -1
  331. package/types/views/Configuration.d.ts.map +1 -1
  332. package/types/views/FontLanguage.d.ts +1 -1
  333. package/types/views/FontLanguage.native.d.ts +1 -2
  334. package/types/views/FontLanguage.native.d.ts.map +1 -1
  335. package/types/views/GuiProvider.d.ts +1 -2
  336. package/types/views/GuiProvider.d.ts.map +1 -1
  337. package/types/views/GuiRoot.d.ts +1 -1
  338. package/types/views/GuiRoot.d.ts.map +1 -1
  339. package/types/views/Slot.d.ts +1 -1
  340. package/types/views/Text.d.ts.map +1 -1
  341. package/types/views/Theme.d.ts.map +1 -1
  342. package/types/views/ThemeProvider.d.ts +1 -1
  343. package/types/views/ThemeProvider.d.ts.map +1 -1
  344. package/vitest.config.d.ts +3 -0
  345. package/vitest.config.d.ts.map +1 -0
  346. package/vitest.config.ts +14 -0
  347. package/LICENSE +0 -42
@@ -9,16 +9,29 @@ const useTheme = () => {
9
9
  const res = theme;
10
10
  return res;
11
11
  };
12
- const useThemeWithState = (props, isRoot = false) => {
12
+ const useThemeWithState = (props, isRoot = false, forThemeView = false) => {
13
13
  "use no memo";
14
14
 
15
- const keys = useRef(null);
16
- const schemeKeys = useRef(null);
17
- const themeState = useThemeState(props, isRoot, keys, schemeKeys);
15
+ const bag = useRef(null);
16
+ if (!bag.current) {
17
+ bag.current = {
18
+ keys: {
19
+ current: null
20
+ },
21
+ schemeKeys: {
22
+ current: null
23
+ }
24
+ };
25
+ }
26
+ const {
27
+ keys,
28
+ schemeKeys
29
+ } = bag.current;
30
+ const themeState = useThemeState(props, isRoot, keys, schemeKeys, forThemeView);
18
31
  if (process.env.NODE_ENV === "development") {
19
32
  if (!props.passThrough && !themeState?.theme) {
20
33
  if (process.env.GUI_DISABLE_NO_THEME_WARNING !== "1") {
21
- console.error(`[gui] No theme found, this could be due to an invalid theme name (given theme props ${JSON.stringify(props)}).
34
+ console.error(`[hanzogui] No theme found, this could be due to an invalid theme name (given theme props ${JSON.stringify(props)}).
22
35
 
23
36
  If this is intended and you are using Gui without any themes, you can disable this warning by setting the environment variable GUI_DISABLE_NO_THEME_WARNING=1`);
24
37
  }
@@ -1 +1 @@
1
- {"version":3,"names":["useRef","getThemeProxied","useThemeState","EMPTY","useTheme","theme","useThemeWithState","res","props","isRoot","keys","schemeKeys","themeState","process","env","NODE_ENV","passThrough","GUI_DISABLE_NO_THEME_WARNING","console","error","JSON","stringify","themeProxied"],"sources":["../../../src/hooks/useTheme.tsx"],"sourcesContent":[null],"mappings":"AAAA,SAASA,MAAA,QAAc;AAEvB,SAASC,eAAA,QAA0C;AACnD,SAASC,aAAA,QAAqB;AAE9B,MAAMC,KAAA,GAAQ,CAAC;AAER,MAAMC,QAAA,GAAWA,CAAA,KAAM;EAC5B;;EAEA,MAAM,CAACC,KAAK,IAAIC,iBAAA,CAAkBH,KAAK;EACvC,MAAMI,GAAA,GAAMF,KAAA;EACZ,OAAOE,GAAA;AACT;AAOO,MAAMD,iBAAA,GAAoBA,CAC/BE,KAAA,EACAC,MAAA,GAAS,UACU;EACnB;;EAEA,MAAMC,IAAA,GAAOV,MAAA,CAA2B,IAAI;EAC5C,MAAMW,UAAA,GAAaX,MAAA,CAA2B,IAAI;EAClD,MAAMY,UAAA,GAAaV,aAAA,CAAcM,KAAA,EAAOC,MAAA,EAAQC,IAAA,EAAMC,UAAU;EAEhE,IAAIE,OAAA,CAAQC,GAAA,CAAIC,QAAA,KAAa,eAAe;IAC1C,IAAI,CAACP,KAAA,CAAMQ,WAAA,IAAe,CAACJ,UAAA,EAAYP,KAAA,EAAO;MAC5C,IAAIQ,OAAA,CAAQC,GAAA,CAAIG,4BAAA,KAAiC,KAAK;QACpDC,OAAA,CAAQC,KAAA,CACN,uFAAuFC,IAAA,CAAKC,SAAA,CAC1Fb,KACF,CAAC;AAAA;AAAA,8JACH;MACF;IACF;EACF;EAEA,MAAMc,YAAA,GAAed,KAAA,CAAMQ,WAAA,GACvB,CAAC,IACDf,eAAA,CAAgBO,KAAA,EAAOI,UAAA,EAAYF,IAAA,EAAMC,UAAU;EAEvD,OAAO,CAACW,YAAA,EAAcV,UAAU;AAClC","ignoreList":[]}
1
+ {"version":3,"names":["useRef","getThemeProxied","useThemeState","EMPTY","useTheme","theme","useThemeWithState","res","props","isRoot","forThemeView","bag","current","keys","schemeKeys","themeState","process","env","NODE_ENV","passThrough","GUI_DISABLE_NO_THEME_WARNING","console","error","JSON","stringify","themeProxied"],"sources":["../../../src/hooks/useTheme.tsx"],"sourcesContent":[null],"mappings":"AAAA,SAASA,MAAA,QAAqC;AAE9C,SAASC,eAAA,QAA0C;AACnD,SAASC,aAAA,QAAqB;AAE9B,MAAMC,KAAA,GAAQ,CAAC;AAOR,MAAMC,QAAA,GAAWA,CAAA,KAAM;EAC5B;;EAEA,MAAM,CAACC,KAAK,IAAIC,iBAAA,CAAkBH,KAAK;EACvC,MAAMI,GAAA,GAAMF,KAAA;EACZ,OAAOE,GAAA;AACT;AAOO,MAAMD,iBAAA,GAAoBA,CAC/BE,KAAA,EACAC,MAAA,GAAS,OAQTC,YAAA,GAAe,UACI;EACnB;;EAKA,MAAMC,GAAA,GAAMX,MAAA,CAAuB,IAAI;EACvC,IAAI,CAACW,GAAA,CAAIC,OAAA,EAAS;IAChBD,GAAA,CAAIC,OAAA,GAAU;MACZC,IAAA,EAAM;QAAED,OAAA,EAAS;MAAK;MACtBE,UAAA,EAAY;QAAEF,OAAA,EAAS;MAAK;IAC9B;EACF;EACA,MAAM;IAAEC,IAAA;IAAMC;EAAW,IAAIH,GAAA,CAAIC,OAAA;EACjC,MAAMG,UAAA,GAAab,aAAA,CAAcM,KAAA,EAAOC,MAAA,EAAQI,IAAA,EAAMC,UAAA,EAAYJ,YAAY;EAE9E,IAAIM,OAAA,CAAQC,GAAA,CAAIC,QAAA,KAAa,eAAe;IAC1C,IAAI,CAACV,KAAA,CAAMW,WAAA,IAAe,CAACJ,UAAA,EAAYV,KAAA,EAAO;MAC5C,IAAIW,OAAA,CAAQC,GAAA,CAAIG,4BAAA,KAAiC,KAAK;QACpDC,OAAA,CAAQC,KAAA,CACN,4FAA4FC,IAAA,CAAKC,SAAA,CAC/FhB,KACF,CAAC;AAAA;AAAA,8JACH;MACF;IACF;EACF;EAEA,MAAMiB,YAAA,GAAejB,KAAA,CAAMW,WAAA,GACvB,CAAC,IACDlB,eAAA,CAAgBO,KAAA,EAAOO,UAAA,EAAYF,IAAA,EAAMC,UAAU;EAEvD,OAAO,CAACW,YAAA,EAAcV,UAAU;AAClC","ignoreList":[]}
@@ -12,14 +12,28 @@ var useTheme = function () {
12
12
  var useThemeWithState = function (props) {
13
13
  "use no memo";
14
14
 
15
- var isRoot = arguments.length > 1 && arguments[1] !== void 0 ? arguments[1] : false;
16
- var keys = useRef(null);
17
- var schemeKeys = useRef(null);
18
- var themeState = useThemeState(props, isRoot, keys, schemeKeys);
15
+ var isRoot = arguments.length > 1 && arguments[1] !== void 0 ? arguments[1] : false,
16
+ forThemeView = arguments.length > 2 && arguments[2] !== void 0 ? arguments[2] : false;
17
+ var bag = useRef(null);
18
+ if (!bag.current) {
19
+ bag.current = {
20
+ keys: {
21
+ current: null
22
+ },
23
+ schemeKeys: {
24
+ current: null
25
+ }
26
+ };
27
+ }
28
+ var {
29
+ keys,
30
+ schemeKeys
31
+ } = bag.current;
32
+ var themeState = useThemeState(props, isRoot, keys, schemeKeys, forThemeView);
19
33
  if (process.env.NODE_ENV === "development") {
20
34
  if (!props.passThrough && !(themeState === null || themeState === void 0 ? void 0 : themeState.theme)) {
21
35
  if (process.env.GUI_DISABLE_NO_THEME_WARNING !== "1") {
22
- console.error(`[gui] No theme found, this could be due to an invalid theme name (given theme props ${JSON.stringify(props)}).
36
+ console.error(`[hanzogui] No theme found, this could be due to an invalid theme name (given theme props ${JSON.stringify(props)}).
23
37
 
24
38
  If this is intended and you are using Gui without any themes, you can disable this warning by setting the environment variable GUI_DISABLE_NO_THEME_WARNING=1`);
25
39
  }
@@ -1 +1 @@
1
- {"version":3,"names":["useRef","getThemeProxied","useThemeState","EMPTY","useTheme","theme","useThemeWithState","res","props","isRoot","arguments","length","keys","schemeKeys","themeState","process","env","NODE_ENV","passThrough","GUI_DISABLE_NO_THEME_WARNING","console","error","JSON","stringify","themeProxied"],"sources":["../../../src/hooks/useTheme.tsx"],"sourcesContent":[null],"mappings":"AAAA,SAASA,MAAA,QAAc;AAEvB,SAASC,eAAA,QAA0C;AACnD,SAASC,aAAA,QAAqB;AAE9B,IAAAC,KAAM,KAAQ;AAEP,IAAAC,QAAM,YAAAA,CAAA,EAAiB;EAC5B;;EAEA,KAAAC,KAAO,IAAKC,iBAAI,CAAAH,KAAkB;EAClC,IAAAI,GAAM,GAAAF,KAAM;EACZ,OAAOE,GAAA;AACT;AAOO,IAAAD,iBAAM,YAAAA,CACXE,KACA;EAEA;;EAEA,IAAAC,MAAM,GAAOC,SAA2B,CAAAC,MAAI,QAAAD,SAAA,iBAAAA,SAAA;EAC5C,IAAAE,IAAM,GAAAZ,MAAA,KAAa;EACnB,IAAAa,UAAM,GAAAb,MAAa;EAEnB,IAAIc,UAAQ,GAAIZ,aAAa,CAAAM,KAAA,EAAAC,MAAe,EAAAG,IAAA,EAAAC,UAAA;EAC1C,IAAAE,OAAK,CAAAC,GAAM,CAAAC,QAAA,KAAgB,aAAY;IACrC,KAAAT,KAAI,CAAAU,WAAY,MAAAJ,UAAA,aAAiCA,UAAK,uBAAAA,UAAA,CAAAT,KAAA;MACpD,IAAAU,OAAQ,CAAAC,GAAA,CAAAG,4BAAA;QAAAC,OACN,CAAAC,KAAA,wFAA4FC,IAAA,CAAAC,SAAA,CAAAf,KAAA;AAAA;AAC1F,8JACD;MAAA;IAAA;EAAA;EACH,IACFgB,YAAA,GAAAhB,KAAA,CAAAU,WAAA,QAAAjB,eAAA,CAAAO,KAAA,EAAAM,UAAA,EAAAF,IAAA,EAAAC,UAAA;EAAA,OACF,CACFW,YAAA,EAEAV,UAAM,CAIN;AACF","ignoreList":[]}
1
+ {"version":3,"names":["useRef","getThemeProxied","useThemeState","EMPTY","useTheme","theme","useThemeWithState","res","props","isRoot","arguments","length","forThemeView","bag","current","keys","schemeKeys","themeState","process","env","NODE_ENV","passThrough","GUI_DISABLE_NO_THEME_WARNING","console","error","JSON","stringify","themeProxied"],"sources":["../../../src/hooks/useTheme.tsx"],"sourcesContent":[null],"mappings":"AAAA,SAASA,MAAA,QAAqC;AAE9C,SAASC,eAAA,QAA0C;AACnD,SAASC,aAAA,QAAqB;AAE9B,IAAAC,KAAM,KAAQ;AAOP,IAAAC,QAAM,YAAAA,CAAA,EAAiB;EAC5B;;EAEA,KAAAC,KAAO,IAAKC,iBAAI,CAAAH,KAAkB;EAClC,IAAAI,GAAM,GAAAF,KAAM;EACZ,OAAOE,GAAA;AACT;AAOO,IAAAD,iBAAM,YAAAA,CACXE,KACA;EAUA;;EAKA,IAAAC,MAAM,GAAMC,SAAuB,CAAIC,MAAA,QAAAD,SAAA,iBAAAA,SAAA;IAAAE,YAAA,GAAAF,SAAA,CAAAC,MAAA,QAAAD,SAAA,iBAAAA,SAAA;EACvC,IAAIG,GAAC,GAAIb,MAAA,KAAS;EAChB,KAAAa,GAAI,CAAAC,OAAU;IAAAD,GACZ,CAAAC,OAAQ;MACRC,IAAA;QACFD,OAAA;MACF;MACAE,UAAc;QACRF,OAAA;MAEF;IACF;EACE;EACE;IAAAC,IAAA;IAAAC;EAAQ,IAAAH,GAAA,CAAAC,OAAA;EAAA,IAAAG,UACN,GAAAf,aAAA,CAAAM,KAAA,EAAAC,MAAA,EAAAM,IAAA,EAAAC,UAAA,EAAAJ,YAAA;EAAiG,IAAAM,OAC/F,CAAAC,GAAA,CAAAC,QAAA;IAAA,KAAAZ,KACD,CAAAa,WAAA,MAAAJ,UAAA,aAAAA,UAAA,uBAAAA,UAAA,CAAAZ,KAAA;MAAA,IAAAa,OAAA,CAAAC,GAAA,CAAAG,4BAAA;QAAAC,OAAA,CAAAC,KAAA,6FAAAC,IAAA,CAAAC,SAAA,CAAAlB,KAAA;AAAA;AACH,8JACF;MACF;IACF;EAEA;EAIA,IAAAmB,YAAQ,GAAAnB,KAAc,CAAAa,WAAU,QAAApB,eAAA,CAAAO,KAAA,EAAAS,UAAA,EAAAF,IAAA,EAAAC,UAAA;EAClC,Q","ignoreList":[]}
@@ -1,7 +1,6 @@
1
- import { isIos } from "@hanzogui/constants";
2
1
  import { useIsomorphicLayoutEffect } from "@hanzogui/constants";
3
- import { createContext, useCallback, useContext, useId, useSyncExternalStore } from "react";
4
- import { getConfig, getSetting } from "../config.mjs";
2
+ import { createContext, useContext, useEffect, useId, useReducer, useRef } from "react";
3
+ import { getConfig } from "../config.mjs";
5
4
  import { MISSING_THEME_MESSAGE } from "../constants/constants.mjs";
6
5
  const ThemeStateContext = createContext("");
7
6
  const allListeners = /* @__PURE__ */new Map();
@@ -25,7 +24,8 @@ let themeNameCacheVer = -1;
25
24
  let themes = null;
26
25
  let rootThemeState = null;
27
26
  const getRootThemeState = () => rootThemeState;
28
- const useThemeState = (props, isRoot = false, keys, schemeKeys) => {
27
+ const incReducer = c => c + 1;
28
+ const useThemeState = (props, isRoot = false, keys, schemeKeys, cascadeOnChange = false) => {
29
29
  "use no memo";
30
30
 
31
31
  const {
@@ -41,69 +41,72 @@ Looked for theme${props.name ? ` "${props.name}"` : ""}${props.componentName ? `
41
41
  theme: getConfig().themes.light
42
42
  };
43
43
  const id = useId();
44
- const subscribe = useCallback(cb => {
45
- listenersByParent[parentId] = listenersByParent[parentId] || /* @__PURE__ */new Set();
46
- listenersByParent[parentId].add(id);
47
- allListeners.set(id, () => {
48
- PendingUpdate.set(id, shouldForce ? "force" : true);
49
- cb();
50
- });
51
- return () => {
52
- allListeners.delete(id);
53
- listenersByParent[parentId].delete(id);
54
- localStates.delete(id);
55
- states.delete(id);
56
- PendingUpdate.delete(id);
57
- };
58
- }, [id, parentId]);
59
44
  const propsKey = getPropsKey(props);
60
- const getSnapshot = () => {
61
- let local = localStates.get(id);
62
- const parentState = states.get(parentId);
63
- if (local && !PendingUpdate.has(id)) {
64
- if (parentState && local._parentName === parentState.name && local._propsKey === propsKey) return local;
65
- }
66
- const isSchemeOnlyChange = false;
67
- const keysSize = keys?.current?.size ?? 0;
68
- const allKeysSchemeOptimized = (schemeKeys?.current?.size ?? 0) === keysSize && keysSize > 0;
69
- const canSkipForSchemeChange = isSchemeOnlyChange;
70
- const needsUpdate = props.passThrough ? false : isRoot || props.name === "light" || props.name === "dark" || props.name === null ? true : !HasRenderedOnce.get(keys) ? true : keys?.current?.size ? true : props.needsUpdate?.();
71
- const [rerender, next] = getNextState(local, props, propsKey, isRoot, id, parentId, needsUpdate, PendingUpdate.get(id));
72
- PendingUpdate.delete(id);
73
- if (!local || rerender) {
74
- local = {
75
- ...next
76
- };
77
- localStates.set(id, local);
78
- }
79
- if (process.env.NODE_ENV === "development" && props.debug === "verbose") {
80
- console.groupCollapsed(` ${id} getSnapshot ${rerender}`, local.name, ">", next.name);
81
- console.info({
82
- props,
83
- propsKey,
84
- isRoot,
85
- parentId,
86
- local,
87
- next,
88
- needsUpdate,
89
- isSchemeOnlyChange,
90
- allKeysSchemeOptimized,
91
- canSkipForSchemeChange
92
- });
93
- console.groupEnd();
94
- }
95
- if (next !== local) {
96
- Object.assign(local, next);
97
- local.id = id;
98
- }
99
- local._parentName = parentState?.name;
100
- local._propsKey = propsKey;
101
- states.set(id, next);
102
- return local;
103
- };
45
+ const ref = useRef(null);
46
+ if (!ref.current) ref.current = {
47
+ id,
48
+ parentId,
49
+ props,
50
+ propsKey,
51
+ isRoot,
52
+ keys,
53
+ schemeKeys,
54
+ renderVersion: 0
55
+ };else {
56
+ ref.current.props = props;
57
+ ref.current.propsKey = propsKey;
58
+ ref.current.isRoot = isRoot;
59
+ ref.current.keys = keys;
60
+ ref.current.schemeKeys = schemeKeys;
61
+ ref.current.parentId = parentId;
62
+ }
63
+ ref.current.renderVersion++;
104
64
  if (process.env.NODE_ENV === "development" && globalThis.time) globalThis.time`theme-prep-uses`;
105
- const state = useSyncExternalStore(subscribe, getSnapshot, getSnapshot);
106
- useIsomorphicLayoutEffect(() => {
65
+ const [, forceUpdate] = useReducer(incReducer, 0);
66
+ const state = getSnapshotImpl(ref.current);
67
+ ref.current.lastSnap = state;
68
+ useEffect(() => {
69
+ const r = ref.current;
70
+ const renderVersion = r.renderVersion;
71
+ if (r.lastSnap && !states.has(r.id)) {
72
+ states.set(r.id, r.lastSnap);
73
+ localStates.set(r.id, r.lastSnap);
74
+ }
75
+ if (r.unsubscribe && r.subscribedParentId !== r.parentId) cleanupThemeSubscription(r);
76
+ if (shouldSubscribeToTheme(r, cascadeOnChange)) {
77
+ if (!r.unsubscribe) {
78
+ const pid = r.parentId;
79
+ const sid = r.id;
80
+ const cb = () => {
81
+ const next = getSnapshotImpl(r);
82
+ if (next !== r.lastSnap) {
83
+ r.lastSnap = next;
84
+ forceUpdate();
85
+ }
86
+ };
87
+ listenersByParent[pid] = listenersByParent[pid] || /* @__PURE__ */new Set();
88
+ listenersByParent[pid].add(sid);
89
+ allListeners.set(sid, () => {
90
+ PendingUpdate.set(sid, shouldForce ? "force" : true);
91
+ cb();
92
+ });
93
+ r.subscribedParentId = pid;
94
+ r.unsubscribe = () => {
95
+ allListeners.delete(sid);
96
+ listenersByParent[pid]?.delete(sid);
97
+ localStates.delete(sid);
98
+ states.delete(sid);
99
+ PendingUpdate.delete(sid);
100
+ r.unsubscribe = void 0;
101
+ r.subscribedParentId = void 0;
102
+ };
103
+ }
104
+ } else if (r.unsubscribe) cleanupThemeSubscription(r);
105
+ return () => {
106
+ if (r.renderVersion === renderVersion) cleanupThemeState(r);
107
+ };
108
+ });
109
+ if (cascadeOnChange) useIsomorphicLayoutEffect(() => {
107
110
  if (!HasRenderedOnce.get(keys)) {
108
111
  HasRenderedOnce.set(keys, true);
109
112
  return;
@@ -119,6 +122,70 @@ Looked for theme${props.name ? ` "${props.name}"` : ""}${props.componentName ? `
119
122
  }, [keys, propsKey]);
120
123
  return state;
121
124
  };
125
+ const shouldSubscribeToTheme = (r, cascadeOnChange) => r.isRoot || cascadeOnChange || hasThemeUpdatingProps(r.props) || !!r.keys.current?.size || !!r.props.needsUpdate?.();
126
+ function cleanupThemeSubscription(r) {
127
+ r.unsubscribe?.();
128
+ }
129
+ function cleanupThemeState(r) {
130
+ if (r.unsubscribe) cleanupThemeSubscription(r);else {
131
+ localStates.delete(r.id);
132
+ states.delete(r.id);
133
+ PendingUpdate.delete(r.id);
134
+ }
135
+ }
136
+ const getSnapshotImpl = r => {
137
+ const {
138
+ id,
139
+ parentId,
140
+ props,
141
+ propsKey,
142
+ isRoot,
143
+ keys,
144
+ schemeKeys
145
+ } = r;
146
+ let local = localStates.get(id);
147
+ const parentState = states.get(parentId);
148
+ if (local && !PendingUpdate.has(id)) {
149
+ if (parentState && local._parentName === parentState.name && local._propsKey === propsKey) return local;
150
+ }
151
+ const isSchemeOnlyChange = false;
152
+ const keysSize = keys?.current?.size ?? 0;
153
+ const allKeysSchemeOptimized = (schemeKeys?.current?.size ?? 0) === keysSize && keysSize > 0;
154
+ const canSkipForSchemeChange = isSchemeOnlyChange;
155
+ const needsUpdate = props.passThrough ? false : isRoot || props.name === "light" || props.name === "dark" || props.name === null ? true : !HasRenderedOnce.get(keys) ? true : keys?.current?.size ? true : props.needsUpdate?.();
156
+ const [rerender, next] = getNextState(local, props, propsKey, isRoot, id, parentId, needsUpdate, PendingUpdate.get(id));
157
+ PendingUpdate.delete(id);
158
+ if (!local || rerender) {
159
+ local = {
160
+ ...next
161
+ };
162
+ localStates.set(id, local);
163
+ }
164
+ if (process.env.NODE_ENV === "development" && props.debug === "verbose") {
165
+ console.groupCollapsed(` ${id} getSnapshot ${rerender}`, local.name, ">", next.name);
166
+ console.info({
167
+ props,
168
+ propsKey,
169
+ isRoot,
170
+ parentId,
171
+ local,
172
+ next,
173
+ needsUpdate,
174
+ isSchemeOnlyChange,
175
+ allKeysSchemeOptimized,
176
+ canSkipForSchemeChange
177
+ });
178
+ console.groupEnd();
179
+ }
180
+ if (next !== local) {
181
+ Object.assign(local, next);
182
+ local.id = id;
183
+ }
184
+ local._parentName = parentState?.name;
185
+ local._propsKey = propsKey;
186
+ states.set(id, next);
187
+ return local;
188
+ };
122
189
  const getNextState = (lastState, props, propsKey, isRoot = false, id, parentId, needsUpdate, pendingUpdate) => {
123
190
  const {
124
191
  debug
@@ -153,17 +220,20 @@ const getNextState = (lastState, props, propsKey, isRoot = false, id, parentId,
153
220
  }];
154
221
  }
155
222
  if (!name) {
156
- const next = lastState ?? parentState;
157
- if (!next) throw new Error(process.env.NODE_ENV === "development" ? `${MISSING_THEME_MESSAGE}
158
-
159
- Looked for theme${props.name ? ` "${props.name}"` : ""}${props.componentName ? ` (component: ${props.componentName})` : ""}, but no theme state was resolved (parentId: ${parentId}, id: ${id}).` : MISSING_THEME_MESSAGE);
223
+ const next = lastState ?? parentState ?? rootThemeState ?? {
224
+ id,
225
+ name: "light",
226
+ theme: getConfig().themes.light
227
+ };
160
228
  if (shouldRerender) return [true, {
161
- ...(parentState || lastState)
229
+ ...(parentState || lastState || next)
162
230
  }];
163
231
  return [false, next];
164
232
  }
165
233
  const scheme = getScheme(name);
234
+ const parentInverses = parentState?.inverses ?? 0;
166
235
  const isInverse = parentState && scheme !== parentState.scheme;
236
+ const inverses = parentInverses + (isInverse ? 1 : 0);
167
237
  const nextState = {
168
238
  id,
169
239
  name,
@@ -171,6 +241,7 @@ Looked for theme${props.name ? ` "${props.name}"` : ""}${props.componentName ? `
171
241
  scheme,
172
242
  parentId,
173
243
  parentName: parentState?.name,
244
+ inverses,
174
245
  isInverse,
175
246
  isNew: true
176
247
  };
@@ -1 +1 @@
1
- {"version":3,"names":["isIos","useIsomorphicLayoutEffect","createContext","useCallback","useContext","useId","useSyncExternalStore","getConfig","getSetting","MISSING_THEME_MESSAGE","ThemeStateContext","allListeners","Map","listenersByParent","HasRenderedOnce","WeakMap","HadTheme","PendingUpdate","states","localStates","shouldForce","forceUpdateThemes","cacheVersion","forEach","cb","getThemeState","id","get","themeNameCache","themeNameCacheVer","themes","rootThemeState","getRootThemeState","useThemeState","props","isRoot","keys","schemeKeys","disable","parentId","Error","process","env","NODE_ENV","name","componentName","theme","light","subscribe","Set","add","set","delete","propsKey","getPropsKey","getSnapshot","local","parentState","has","_parentName","_propsKey","isSchemeOnlyChange","keysSize","current","size","allKeysSchemeOptimized","canSkipForSchemeChange","needsUpdate","passThrough","rerender","next","getNextState","debug","console","groupCollapsed","info","groupEnd","Object","assign","globalThis","time","state","scheduleUpdate","warn","lastState","pendingUpdate","isNew","getNewThemeName","isSameAsParent","shouldRerender","Boolean","message","trace","scheme","getScheme","isInverse","nextState","parentName","shouldAvoidRerender","queue","visited","length","children","shift","childId","push","validSchemes","dark","split","forceUpdate","reset","unstyled","cacheKey","clear","cached","themes2","result2","lastPartIndex","lastIndexOf","name2","slice","result","parentParts","lastName","toLowerCase","pop","subNames","filter","found","nameHasScheme","subName","potentialBases","i","join","outer","base","candidates","potential","max","forceClassName","hasThemeUpdatingProps"],"sources":["../../../src/hooks/useThemeState.ts"],"sourcesContent":[null],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"names":["useIsomorphicLayoutEffect","createContext","useContext","useEffect","useId","useReducer","useRef","getConfig","MISSING_THEME_MESSAGE","ThemeStateContext","allListeners","Map","listenersByParent","HasRenderedOnce","WeakMap","HadTheme","PendingUpdate","states","localStates","shouldForce","forceUpdateThemes","cacheVersion","forEach","cb","getThemeState","id","get","themeNameCache","themeNameCacheVer","themes","rootThemeState","getRootThemeState","incReducer","c","useThemeState","props","isRoot","keys","schemeKeys","cascadeOnChange","disable","parentId","Error","process","env","NODE_ENV","name","componentName","theme","light","propsKey","getPropsKey","ref","current","renderVersion","globalThis","time","forceUpdate","state","getSnapshotImpl","lastSnap","r","has","set","unsubscribe","subscribedParentId","cleanupThemeSubscription","shouldSubscribeToTheme","pid","sid","next","Set","add","delete","cleanupThemeState","scheduleUpdate","debug","console","warn","hasThemeUpdatingProps","size","needsUpdate","local","parentState","_parentName","_propsKey","isSchemeOnlyChange","keysSize","allKeysSchemeOptimized","canSkipForSchemeChange","passThrough","rerender","getNextState","groupCollapsed","info","groupEnd","Object","assign","lastState","pendingUpdate","isNew","getNewThemeName","isSameAsParent","shouldRerender","Boolean","message","trace","scheme","getScheme","parentInverses","inverses","isInverse","nextState","parentName","shouldAvoidRerender","queue","visited","length","children","shift","childId","push","validSchemes","dark","split","reset","unstyled","cacheKey","clear","cached","themes2","result2","lastPartIndex","lastIndexOf","name2","slice","result","parentParts","lastName","toLowerCase","pop","subNames","filter","found","nameHasScheme","subName","potentialBases","i","join","outer","base","candidates","potential","max","forceClassName"],"sources":["useThemeState.mjs"],"sourcesContent":["import { useIsomorphicLayoutEffect } from \"@hanzogui/constants\";\nimport { createContext, useContext, useEffect, useId, useReducer, useRef } from \"react\";\nimport { getConfig } from \"../config\";\nimport { MISSING_THEME_MESSAGE } from \"../constants/constants\";\n\nconst ThemeStateContext = createContext(\"\");\nconst allListeners = /* @__PURE__ */ new Map();\nconst listenersByParent = {};\nconst HasRenderedOnce = /* @__PURE__ */ new WeakMap();\nconst HadTheme = /* @__PURE__ */ new WeakMap();\nconst PendingUpdate = /* @__PURE__ */ new Map();\nconst states = /* @__PURE__ */ new Map();\nconst localStates = /* @__PURE__ */ new Map();\nlet shouldForce = false;\nconst forceUpdateThemes = () => {\n\tcacheVersion++;\n\tshouldForce = true;\n\tallListeners.forEach((cb) => cb());\n\tshouldForce = false;\n};\nconst getThemeState = (id) => states.get(id);\nlet cacheVersion = 0;\nconst themeNameCache = /* @__PURE__ */ new Map();\nlet themeNameCacheVer = -1;\nlet themes = null;\nlet rootThemeState = null;\nconst getRootThemeState = () => rootThemeState;\nconst incReducer = (c) => c + 1;\nconst useThemeState = (props, isRoot = false, keys, schemeKeys, cascadeOnChange = false) => {\n\t\"use no memo\";\n\tconst { disable } = props;\n\tconst parentId = useContext(ThemeStateContext);\n\tif (!parentId && !isRoot) throw new Error(process.env.NODE_ENV === \"development\" ? `${MISSING_THEME_MESSAGE}\n\nLooked for theme${props.name ? ` \"${props.name}\"` : \"\"}${props.componentName ? ` (component: ${props.componentName})` : \"\"}, but no parent theme context was found (parentId: ${parentId}).` : MISSING_THEME_MESSAGE);\n\tif (disable) return states.get(parentId) || {\n\t\tid: \"\",\n\t\tname: \"light\",\n\t\ttheme: getConfig().themes.light\n\t};\n\tconst id = useId();\n\tconst propsKey = getPropsKey(props);\n\tconst ref = useRef(null);\n\tif (!ref.current) ref.current = {\n\t\tid,\n\t\tparentId,\n\t\tprops,\n\t\tpropsKey,\n\t\tisRoot,\n\t\tkeys,\n\t\tschemeKeys,\n\t\trenderVersion: 0\n\t};\n\telse {\n\t\tref.current.props = props;\n\t\tref.current.propsKey = propsKey;\n\t\tref.current.isRoot = isRoot;\n\t\tref.current.keys = keys;\n\t\tref.current.schemeKeys = schemeKeys;\n\t\tref.current.parentId = parentId;\n\t}\n\tref.current.renderVersion++;\n\tif (process.env.NODE_ENV === \"development\" && globalThis.time) globalThis.time`theme-prep-uses`;\n\tconst [, forceUpdate] = useReducer(incReducer, 0);\n\tconst state = getSnapshotImpl(ref.current);\n\tref.current.lastSnap = state;\n\tuseEffect(() => {\n\t\tconst r = ref.current;\n\t\tconst renderVersion = r.renderVersion;\n\t\tif (r.lastSnap && !states.has(r.id)) {\n\t\t\tstates.set(r.id, r.lastSnap);\n\t\t\tlocalStates.set(r.id, r.lastSnap);\n\t\t}\n\t\tif (r.unsubscribe && r.subscribedParentId !== r.parentId) cleanupThemeSubscription(r);\n\t\tif (shouldSubscribeToTheme(r, cascadeOnChange)) {\n\t\t\tif (!r.unsubscribe) {\n\t\t\t\tconst pid = r.parentId;\n\t\t\t\tconst sid = r.id;\n\t\t\t\tconst cb = () => {\n\t\t\t\t\tconst next = getSnapshotImpl(r);\n\t\t\t\t\tif (next !== r.lastSnap) {\n\t\t\t\t\t\tr.lastSnap = next;\n\t\t\t\t\t\tforceUpdate();\n\t\t\t\t\t}\n\t\t\t\t};\n\t\t\t\tlistenersByParent[pid] = listenersByParent[pid] || /* @__PURE__ */ new Set();\n\t\t\t\tlistenersByParent[pid].add(sid);\n\t\t\t\tallListeners.set(sid, () => {\n\t\t\t\t\tPendingUpdate.set(sid, shouldForce ? \"force\" : true);\n\t\t\t\t\tcb();\n\t\t\t\t});\n\t\t\t\tr.subscribedParentId = pid;\n\t\t\t\tr.unsubscribe = () => {\n\t\t\t\t\tallListeners.delete(sid);\n\t\t\t\t\tlistenersByParent[pid]?.delete(sid);\n\t\t\t\t\tlocalStates.delete(sid);\n\t\t\t\t\tstates.delete(sid);\n\t\t\t\t\tPendingUpdate.delete(sid);\n\t\t\t\t\tr.unsubscribe = void 0;\n\t\t\t\t\tr.subscribedParentId = void 0;\n\t\t\t\t};\n\t\t\t}\n\t\t} else if (r.unsubscribe) cleanupThemeSubscription(r);\n\t\treturn () => {\n\t\t\tif (r.renderVersion === renderVersion) cleanupThemeState(r);\n\t\t};\n\t});\n\tif (cascadeOnChange) useIsomorphicLayoutEffect(() => {\n\t\tif (!HasRenderedOnce.get(keys)) {\n\t\t\tHasRenderedOnce.set(keys, true);\n\t\t\treturn;\n\t\t}\n\t\tif (!propsKey) {\n\t\t\tif (HadTheme.get(keys)) scheduleUpdate(id);\n\t\t\tHadTheme.set(keys, false);\n\t\t\treturn;\n\t\t}\n\t\tif (process.env.NODE_ENV === \"development\" && props.debug === \"verbose\") console.warn(` \\xB7 useTheme(${id}) scheduleUpdate`, propsKey, states.get(id)?.name);\n\t\tscheduleUpdate(id);\n\t\tHadTheme.set(keys, true);\n\t}, [keys, propsKey]);\n\treturn state;\n};\nconst shouldSubscribeToTheme = (r, cascadeOnChange) => r.isRoot || cascadeOnChange || hasThemeUpdatingProps(r.props) || !!r.keys.current?.size || !!r.props.needsUpdate?.();\nfunction cleanupThemeSubscription(r) {\n\tr.unsubscribe?.();\n}\nfunction cleanupThemeState(r) {\n\tif (r.unsubscribe) cleanupThemeSubscription(r);\n\telse {\n\t\tlocalStates.delete(r.id);\n\t\tstates.delete(r.id);\n\t\tPendingUpdate.delete(r.id);\n\t}\n}\nconst getSnapshotImpl = (r) => {\n\tconst { id, parentId, props, propsKey, isRoot, keys, schemeKeys } = r;\n\tlet local = localStates.get(id);\n\tconst parentState = states.get(parentId);\n\tif (local && !PendingUpdate.has(id)) {\n\t\tif (parentState && local._parentName === parentState.name && local._propsKey === propsKey) return local;\n\t}\n\tconst isSchemeOnlyChange = false;\n\tconst keysSize = keys?.current?.size ?? 0;\n\tconst allKeysSchemeOptimized = (schemeKeys?.current?.size ?? 0) === keysSize && keysSize > 0;\n\tconst canSkipForSchemeChange = isSchemeOnlyChange;\n\tconst needsUpdate = props.passThrough ? false : isRoot || props.name === \"light\" || props.name === \"dark\" || props.name === null ? true : !HasRenderedOnce.get(keys) ? true : keys?.current?.size ? true : props.needsUpdate?.();\n\tconst [rerender, next] = getNextState(local, props, propsKey, isRoot, id, parentId, needsUpdate, PendingUpdate.get(id));\n\tPendingUpdate.delete(id);\n\tif (!local || rerender) {\n\t\tlocal = { ...next };\n\t\tlocalStates.set(id, local);\n\t}\n\tif (process.env.NODE_ENV === \"development\" && props.debug === \"verbose\") {\n\t\tconsole.groupCollapsed(` ${id} getSnapshot ${rerender}`, local.name, \">\", next.name);\n\t\tconsole.info({\n\t\t\tprops,\n\t\t\tpropsKey,\n\t\t\tisRoot,\n\t\t\tparentId,\n\t\t\tlocal,\n\t\t\tnext,\n\t\t\tneedsUpdate,\n\t\t\tisSchemeOnlyChange,\n\t\t\tallKeysSchemeOptimized,\n\t\t\tcanSkipForSchemeChange\n\t\t});\n\t\tconsole.groupEnd();\n\t}\n\tif (next !== local) {\n\t\tObject.assign(local, next);\n\t\tlocal.id = id;\n\t}\n\tlocal._parentName = parentState?.name;\n\tlocal._propsKey = propsKey;\n\tstates.set(id, next);\n\treturn local;\n};\nconst getNextState = (lastState, props, propsKey, isRoot = false, id, parentId, needsUpdate, pendingUpdate) => {\n\tconst { debug } = props;\n\tconst parentState = states.get(parentId);\n\tif (props.passThrough) return [false, lastState || parentState || { name: \"\" }];\n\tif (!themes) themes = getConfig().themes;\n\tconst name = !propsKey && (!lastState || !lastState?.isNew) ? null : getNewThemeName(parentState?.name, props, pendingUpdate === \"force\" ? true : !!needsUpdate);\n\tconst isSameAsParent = parentState && (!name || name === parentState.name);\n\tconst shouldRerender = Boolean(pendingUpdate === \"force\" || needsUpdate && (pendingUpdate || lastState?.name !== parentState?.name));\n\tif (process.env.NODE_ENV === \"development\" && debug === \"verbose\") {\n\t\tconst message = ` \\xB7 useTheme(${id}) getNextState => ${name} needsUpdate ${needsUpdate} shouldRerender ${shouldRerender}`;\n\t\tconsole.groupCollapsed(message);\n\t\tconsole.trace({\n\t\t\tname,\n\t\t\tlastState,\n\t\t\tparentState,\n\t\t\tprops,\n\t\t\tpropsKey,\n\t\t\tid,\n\t\t\tisSameAsParent\n\t\t});\n\t\tconsole.groupEnd();\n\t}\n\tif (isSameAsParent) {\n\t\tif (!shouldRerender && lastState && lastState.name === parentState.name) return [false, lastState];\n\t\treturn [shouldRerender, {\n\t\t\t...parentState,\n\t\t\tisNew: false\n\t\t}];\n\t}\n\tif (!name) {\n\t\tconst next = lastState ?? parentState ?? rootThemeState ?? {\n\t\t\tid,\n\t\t\tname: \"light\",\n\t\t\ttheme: getConfig().themes.light\n\t\t};\n\t\tif (shouldRerender) return [true, { ...parentState || lastState || next }];\n\t\treturn [false, next];\n\t}\n\tconst scheme = getScheme(name);\n\tconst parentInverses = parentState?.inverses ?? 0;\n\tconst isInverse = parentState && scheme !== parentState.scheme;\n\tconst inverses = parentInverses + (isInverse ? 1 : 0);\n\tconst nextState = {\n\t\tid,\n\t\tname,\n\t\ttheme: themes[name],\n\t\tscheme,\n\t\tparentId,\n\t\tparentName: parentState?.name,\n\t\tinverses,\n\t\tisInverse,\n\t\tisNew: true\n\t};\n\tif (isRoot) rootThemeState = nextState;\n\tif (pendingUpdate !== \"force\" && lastState && lastState.name === name) return [false, nextState];\n\tconst shouldAvoidRerender = pendingUpdate !== \"force\" && lastState && !needsUpdate && nextState.name === lastState.name;\n\tif (process.env.NODE_ENV === \"development\" && debug === \"verbose\") {\n\t\tconsole.groupCollapsed(` \\xB7 useTheme(${id}) \\u23ED\\uFE0F ${name} shouldAvoidRerender: ${shouldAvoidRerender}`);\n\t\tconsole.info({\n\t\t\tlastState,\n\t\t\tneedsUpdate,\n\t\t\tnextState,\n\t\t\tpendingUpdate\n\t\t});\n\t\tconsole.groupEnd();\n\t}\n\tif (shouldAvoidRerender) return [false, nextState];\n\treturn [true, nextState];\n};\nfunction scheduleUpdate(id) {\n\tconst queue = [id];\n\tconst visited = /* @__PURE__ */ new Set();\n\twhile (queue.length) {\n\t\tconst children = listenersByParent[queue.shift()];\n\t\tif (children) {\n\t\t\tfor (const childId of children) if (!visited.has(childId)) {\n\t\t\t\tvisited.add(childId);\n\t\t\t\tqueue.push(childId);\n\t\t\t}\n\t\t}\n\t}\n\tvisited.forEach((childId) => {\n\t\tallListeners.get(childId)?.();\n\t});\n}\nconst validSchemes = {\n\tlight: \"light\",\n\tdark: \"dark\"\n};\nfunction getScheme(name) {\n\treturn validSchemes[name.split(\"_\")[0]];\n}\nfunction getNewThemeName(parentName = \"\", props, forceUpdate = false) {\n\tconst { name, reset } = props;\n\tconst componentName = props.unstyled ? void 0 : props.componentName;\n\tif (name && reset) throw new Error(process.env.NODE_ENV === \"production\" ? `\\u274C004` : \"Cannot reset and set a new name at the same time.\");\n\tconst cacheKey = `${parentName}|${name || \"\"}|${componentName || \"\"}|${reset ? 1 : 0}|${forceUpdate ? 1 : 0}`;\n\tif (themeNameCacheVer !== cacheVersion) {\n\t\tthemeNameCache.clear();\n\t\tthemeNameCacheVer = cacheVersion;\n\t} else {\n\t\tconst cached = themeNameCache.get(cacheKey);\n\t\tif (cached !== void 0) return cached;\n\t}\n\tconst { themes: themes2 } = getConfig();\n\tif (reset) {\n\t\tif (parentName === \"light\" || parentName === \"dark\") {\n\t\t\tconst result2 = parentName === \"light\" ? \"dark\" : \"light\";\n\t\t\tthemeNameCache.set(cacheKey, result2);\n\t\t\treturn result2;\n\t\t}\n\t\tconst lastPartIndex = parentName.lastIndexOf(\"_\");\n\t\tconst name2 = lastPartIndex <= 0 ? parentName : parentName.slice(lastPartIndex);\n\t\tconst scheme = parentName.slice(0, lastPartIndex);\n\t\tconst result = themes2[name2] ? name2 : scheme;\n\t\tthemeNameCache.set(cacheKey, result);\n\t\treturn result;\n\t}\n\tconst parentParts = parentName.split(\"_\");\n\tconst lastName = parentParts[parentParts.length - 1];\n\tif (lastName && lastName[0].toLowerCase() !== lastName[0]) parentParts.pop();\n\tconst subNames = [\n\t\tname && componentName ? `${name}_${componentName}` : void 0,\n\t\tname,\n\t\tcomponentName\n\t].filter(Boolean);\n\tlet found = null;\n\tif (name) {\n\t\tconst nameHasScheme = getScheme(name);\n\t\tif (nameHasScheme) {\n\t\t\tfor (const subName of subNames) if (subName in themes2) {\n\t\t\t\tfound = subName;\n\t\t\t\tbreak;\n\t\t\t}\n\t\t}\n\t\tif (!found && !nameHasScheme) {\n\t\t\tif (getScheme(parentName)) {\n\t\t\t\tconst potentialBases = [];\n\t\t\t\tfor (let i = parentParts.length; i >= 1; i--) potentialBases.push(parentParts.slice(0, i).join(\"_\"));\n\t\t\t\touter: for (const base of potentialBases) {\n\t\t\t\t\tconst candidates = [componentName ? `${base}_${name}_${componentName}` : void 0, `${base}_${name}`].filter(Boolean);\n\t\t\t\t\tfor (const potential of candidates) if (potential in themes2) {\n\t\t\t\t\t\tfound = potential;\n\t\t\t\t\t\tbreak outer;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\tif (!found) if (!name && componentName) {\n\t\tconst potential = `${parentParts.join(\"_\")}_${componentName}`;\n\t\tif (potential in themes2) found = potential;\n\t} else {\n\t\tconst max = parentParts.length;\n\t\tfor (let i = 0; i <= max; i++) {\n\t\t\tconst base = (i === 0 ? parentParts : parentParts.slice(0, -i)).join(\"_\");\n\t\t\tfor (const subName of subNames) {\n\t\t\t\tconst potential = base ? `${base}_${subName}` : subName;\n\t\t\t\tif (potential in themes2) {\n\t\t\t\t\tfound = potential;\n\t\t\t\t\tbreak;\n\t\t\t\t}\n\t\t\t}\n\t\t\tif (found) break;\n\t\t}\n\t}\n\tif (!forceUpdate && found === parentName && !validSchemes[found]) {\n\t\tthemeNameCache.set(cacheKey, null);\n\t\treturn null;\n\t}\n\tthemeNameCache.set(cacheKey, found);\n\treturn found;\n}\nconst getPropsKey = ({ name, reset, forceClassName, componentName }) => `${name || \"\"}${reset || \"\"}${forceClassName || \"\"}${componentName || \"\"}`;\nconst hasThemeUpdatingProps = (props) => \"name\" in props || \"reset\" in props || \"forceClassName\" in props;\n\nexport { ThemeStateContext, forceUpdateThemes, getRootThemeState, getThemeState, hasThemeUpdatingProps, useThemeState };"],"mappings":"AAAA,SAASA,yBAAyB,QAAQ,qBAAqB;AAC/D,SAASC,aAAa,EAAEC,UAAU,EAAEC,SAAS,EAAEC,KAAK,EAAEC,UAAU,EAAEC,MAAM,QAAQ,OAAO;AACvF,SAASC,SAAS,QAAQ,eAAW;AACrC,SAASC,qBAAqB,QAAQ,4BAAwB;AAE9D,MAAMC,iBAAiB,GAAGR,aAAa,CAAC,EAAE,CAAC;AAC3C,MAAMS,YAAY,GAAG,eAAgB,IAAIC,GAAG,CAAC,CAAC;AAC9C,MAAMC,iBAAiB,GAAG,CAAC,CAAC;AAC5B,MAAMC,eAAe,GAAG,eAAgB,IAAIC,OAAO,CAAC,CAAC;AACrD,MAAMC,QAAQ,GAAG,eAAgB,IAAID,OAAO,CAAC,CAAC;AAC9C,MAAME,aAAa,GAAG,eAAgB,IAAIL,GAAG,CAAC,CAAC;AAC/C,MAAMM,MAAM,GAAG,eAAgB,IAAIN,GAAG,CAAC,CAAC;AACxC,MAAMO,WAAW,GAAG,eAAgB,IAAIP,GAAG,CAAC,CAAC;AAC7C,IAAIQ,WAAW,GAAG,KAAK;AACvB,MAAMC,iBAAiB,GAAGA,CAAA,KAAM;EAC/BC,YAAY,EAAE;EACdF,WAAW,GAAG,IAAI;EAClBT,YAAY,CAACY,OAAO,CAAEC,EAAE,IAAKA,EAAE,CAAC,CAAC,CAAC;EAClCJ,WAAW,GAAG,KAAK;AACpB,CAAC;AACD,MAAMK,aAAa,GAAIC,EAAE,IAAKR,MAAM,CAACS,GAAG,CAACD,EAAE,CAAC;AAC5C,IAAIJ,YAAY,GAAG,CAAC;AACpB,MAAMM,cAAc,GAAG,eAAgB,IAAIhB,GAAG,CAAC,CAAC;AAChD,IAAIiB,iBAAiB,GAAG,CAAC,CAAC;AAC1B,IAAIC,MAAM,GAAG,IAAI;AACjB,IAAIC,cAAc,GAAG,IAAI;AACzB,MAAMC,iBAAiB,GAAGA,CAAA,KAAMD,cAAc;AAC9C,MAAME,UAAU,GAAIC,CAAC,IAAKA,CAAC,GAAG,CAAC;AAC/B,MAAMC,aAAa,GAAGA,CAACC,KAAK,EAAEC,MAAM,GAAG,KAAK,EAAEC,IAAI,EAAEC,UAAU,EAAEC,eAAe,GAAG,KAAK,KAAK;EAC3F,aAAa;;EACb,MAAM;IAAEC;EAAQ,CAAC,GAAGL,KAAK;EACzB,MAAMM,QAAQ,GAAGvC,UAAU,CAACO,iBAAiB,CAAC;EAC9C,IAAI,CAACgC,QAAQ,IAAI,CAACL,MAAM,EAAE,MAAM,IAAIM,KAAK,CAACC,OAAO,CAACC,GAAG,CAACC,QAAQ,KAAK,aAAa,GAAG,GAAGrC,qBAAqB;AAC5G;AACA,kBAAkB2B,KAAK,CAACW,IAAI,GAAG,KAAKX,KAAK,CAACW,IAAI,GAAG,GAAG,EAAE,GAAGX,KAAK,CAACY,aAAa,GAAG,gBAAgBZ,KAAK,CAACY,aAAa,GAAG,GAAG,EAAE,sDAAsDN,QAAQ,IAAI,GAAGjC,qBAAqB,CAAC;EACpN,IAAIgC,OAAO,EAAE,OAAOvB,MAAM,CAACS,GAAG,CAACe,QAAQ,CAAC,IAAI;IAC3ChB,EAAE,EAAE,EAAE;IACNqB,IAAI,EAAE,OAAO;IACbE,KAAK,EAAEzC,SAAS,CAAC,CAAC,CAACsB,MAAM,CAACoB;EAC3B,CAAC;EACD,MAAMxB,EAAE,GAAGrB,KAAK,CAAC,CAAC;EAClB,MAAM8C,QAAQ,GAAGC,WAAW,CAAChB,KAAK,CAAC;EACnC,MAAMiB,GAAG,GAAG9C,MAAM,CAAC,IAAI,CAAC;EACxB,IAAI,CAAC8C,GAAG,CAACC,OAAO,EAAED,GAAG,CAACC,OAAO,GAAG;IAC/B5B,EAAE;IACFgB,QAAQ;IACRN,KAAK;IACLe,QAAQ;IACRd,MAAM;IACNC,IAAI;IACJC,UAAU;IACVgB,aAAa,EAAE;EAChB,CAAC,CAAC,KACG;IACJF,GAAG,CAACC,OAAO,CAAClB,KAAK,GAAGA,KAAK;IACzBiB,GAAG,CAACC,OAAO,CAACH,QAAQ,GAAGA,QAAQ;IAC/BE,GAAG,CAACC,OAAO,CAACjB,MAAM,GAAGA,MAAM;IAC3BgB,GAAG,CAACC,OAAO,CAAChB,IAAI,GAAGA,IAAI;IACvBe,GAAG,CAACC,OAAO,CAACf,UAAU,GAAGA,UAAU;IACnCc,GAAG,CAACC,OAAO,CAACZ,QAAQ,GAAGA,QAAQ;EAChC;EACAW,GAAG,CAACC,OAAO,CAACC,aAAa,EAAE;EAC3B,IAAIX,OAAO,CAACC,GAAG,CAACC,QAAQ,KAAK,aAAa,IAAIU,UAAU,CAACC,IAAI,EAAED,UAAU,CAACC,IAAI,iBAAiB;EAC/F,MAAM,GAAGC,WAAW,CAAC,GAAGpD,UAAU,CAAC2B,UAAU,EAAE,CAAC,CAAC;EACjD,MAAM0B,KAAK,GAAGC,eAAe,CAACP,GAAG,CAACC,OAAO,CAAC;EAC1CD,GAAG,CAACC,OAAO,CAACO,QAAQ,GAAGF,KAAK;EAC5BvD,SAAS,CAAC,MAAM;IACf,MAAM0D,CAAC,GAAGT,GAAG,CAACC,OAAO;IACrB,MAAMC,aAAa,GAAGO,CAAC,CAACP,aAAa;IACrC,IAAIO,CAAC,CAACD,QAAQ,IAAI,CAAC3C,MAAM,CAAC6C,GAAG,CAACD,CAAC,CAACpC,EAAE,CAAC,EAAE;MACpCR,MAAM,CAAC8C,GAAG,CAACF,CAAC,CAACpC,EAAE,EAAEoC,CAAC,CAACD,QAAQ,CAAC;MAC5B1C,WAAW,CAAC6C,GAAG,CAACF,CAAC,CAACpC,EAAE,EAAEoC,CAAC,CAACD,QAAQ,CAAC;IAClC;IACA,IAAIC,CAAC,CAACG,WAAW,IAAIH,CAAC,CAACI,kBAAkB,KAAKJ,CAAC,CAACpB,QAAQ,EAAEyB,wBAAwB,CAACL,CAAC,CAAC;IACrF,IAAIM,sBAAsB,CAACN,CAAC,EAAEtB,eAAe,CAAC,EAAE;MAC/C,IAAI,CAACsB,CAAC,CAACG,WAAW,EAAE;QACnB,MAAMI,GAAG,GAAGP,CAAC,CAACpB,QAAQ;QACtB,MAAM4B,GAAG,GAAGR,CAAC,CAACpC,EAAE;QAChB,MAAMF,EAAE,GAAGA,CAAA,KAAM;UAChB,MAAM+C,IAAI,GAAGX,eAAe,CAACE,CAAC,CAAC;UAC/B,IAAIS,IAAI,KAAKT,CAAC,CAACD,QAAQ,EAAE;YACxBC,CAAC,CAACD,QAAQ,GAAGU,IAAI;YACjBb,WAAW,CAAC,CAAC;UACd;QACD,CAAC;QACD7C,iBAAiB,CAACwD,GAAG,CAAC,GAAGxD,iBAAiB,CAACwD,GAAG,CAAC,IAAI,eAAgB,IAAIG,GAAG,CAAC,CAAC;QAC5E3D,iBAAiB,CAACwD,GAAG,CAAC,CAACI,GAAG,CAACH,GAAG,CAAC;QAC/B3D,YAAY,CAACqD,GAAG,CAACM,GAAG,EAAE,MAAM;UAC3BrD,aAAa,CAAC+C,GAAG,CAACM,GAAG,EAAElD,WAAW,GAAG,OAAO,GAAG,IAAI,CAAC;UACpDI,EAAE,CAAC,CAAC;QACL,CAAC,CAAC;QACFsC,CAAC,CAACI,kBAAkB,GAAGG,GAAG;QAC1BP,CAAC,CAACG,WAAW,GAAG,MAAM;UACrBtD,YAAY,CAAC+D,MAAM,CAACJ,GAAG,CAAC;UACxBzD,iBAAiB,CAACwD,GAAG,CAAC,EAAEK,MAAM,CAACJ,GAAG,CAAC;UACnCnD,WAAW,CAACuD,MAAM,CAACJ,GAAG,CAAC;UACvBpD,MAAM,CAACwD,MAAM,CAACJ,GAAG,CAAC;UAClBrD,aAAa,CAACyD,MAAM,CAACJ,GAAG,CAAC;UACzBR,CAAC,CAACG,WAAW,GAAG,KAAK,CAAC;UACtBH,CAAC,CAACI,kBAAkB,GAAG,KAAK,CAAC;QAC9B,CAAC;MACF;IACD,CAAC,MAAM,IAAIJ,CAAC,CAACG,WAAW,EAAEE,wBAAwB,CAACL,CAAC,CAAC;IACrD,OAAO,MAAM;MACZ,IAAIA,CAAC,CAACP,aAAa,KAAKA,aAAa,EAAEoB,iBAAiB,CAACb,CAAC,CAAC;IAC5D,CAAC;EACF,CAAC,CAAC;EACF,IAAItB,eAAe,EAAEvC,yBAAyB,CAAC,MAAM;IACpD,IAAI,CAACa,eAAe,CAACa,GAAG,CAACW,IAAI,CAAC,EAAE;MAC/BxB,eAAe,CAACkD,GAAG,CAAC1B,IAAI,EAAE,IAAI,CAAC;MAC/B;IACD;IACA,IAAI,CAACa,QAAQ,EAAE;MACd,IAAInC,QAAQ,CAACW,GAAG,CAACW,IAAI,CAAC,EAAEsC,cAAc,CAAClD,EAAE,CAAC;MAC1CV,QAAQ,CAACgD,GAAG,CAAC1B,IAAI,EAAE,KAAK,CAAC;MACzB;IACD;IACA,IAAIM,OAAO,CAACC,GAAG,CAACC,QAAQ,KAAK,aAAa,IAAIV,KAAK,CAACyC,KAAK,KAAK,SAAS,EAAEC,OAAO,CAACC,IAAI,CAAC,kBAAkBrD,EAAE,kBAAkB,EAAEyB,QAAQ,EAAEjC,MAAM,CAACS,GAAG,CAACD,EAAE,CAAC,EAAEqB,IAAI,CAAC;IAC7J6B,cAAc,CAAClD,EAAE,CAAC;IAClBV,QAAQ,CAACgD,GAAG,CAAC1B,IAAI,EAAE,IAAI,CAAC;EACzB,CAAC,EAAE,CAACA,IAAI,EAAEa,QAAQ,CAAC,CAAC;EACpB,OAAOQ,KAAK;AACb,CAAC;AACD,MAAMS,sBAAsB,GAAGA,CAACN,CAAC,EAAEtB,eAAe,KAAKsB,CAAC,CAACzB,MAAM,IAAIG,eAAe,IAAIwC,qBAAqB,CAAClB,CAAC,CAAC1B,KAAK,CAAC,IAAI,CAAC,CAAC0B,CAAC,CAACxB,IAAI,CAACgB,OAAO,EAAE2B,IAAI,IAAI,CAAC,CAACnB,CAAC,CAAC1B,KAAK,CAAC8C,WAAW,GAAG,CAAC;AAC3K,SAASf,wBAAwBA,CAACL,CAAC,EAAE;EACpCA,CAAC,CAACG,WAAW,GAAG,CAAC;AAClB;AACA,SAASU,iBAAiBA,CAACb,CAAC,EAAE;EAC7B,IAAIA,CAAC,CAACG,WAAW,EAAEE,wBAAwB,CAACL,CAAC,CAAC,CAAC,KAC1C;IACJ3C,WAAW,CAACuD,MAAM,CAACZ,CAAC,CAACpC,EAAE,CAAC;IACxBR,MAAM,CAACwD,MAAM,CAACZ,CAAC,CAACpC,EAAE,CAAC;IACnBT,aAAa,CAACyD,MAAM,CAACZ,CAAC,CAACpC,EAAE,CAAC;EAC3B;AACD;AACA,MAAMkC,eAAe,GAAIE,CAAC,IAAK;EAC9B,MAAM;IAAEpC,EAAE;IAAEgB,QAAQ;IAAEN,KAAK;IAAEe,QAAQ;IAAEd,MAAM;IAAEC,IAAI;IAAEC;EAAW,CAAC,GAAGuB,CAAC;EACrE,IAAIqB,KAAK,GAAGhE,WAAW,CAACQ,GAAG,CAACD,EAAE,CAAC;EAC/B,MAAM0D,WAAW,GAAGlE,MAAM,CAACS,GAAG,CAACe,QAAQ,CAAC;EACxC,IAAIyC,KAAK,IAAI,CAAClE,aAAa,CAAC8C,GAAG,CAACrC,EAAE,CAAC,EAAE;IACpC,IAAI0D,WAAW,IAAID,KAAK,CAACE,WAAW,KAAKD,WAAW,CAACrC,IAAI,IAAIoC,KAAK,CAACG,SAAS,KAAKnC,QAAQ,EAAE,OAAOgC,KAAK;EACxG;EACA,MAAMI,kBAAkB,GAAG,KAAK;EAChC,MAAMC,QAAQ,GAAGlD,IAAI,EAAEgB,OAAO,EAAE2B,IAAI,IAAI,CAAC;EACzC,MAAMQ,sBAAsB,GAAG,CAAClD,UAAU,EAAEe,OAAO,EAAE2B,IAAI,IAAI,CAAC,MAAMO,QAAQ,IAAIA,QAAQ,GAAG,CAAC;EAC5F,MAAME,sBAAsB,GAAGH,kBAAkB;EACjD,MAAML,WAAW,GAAG9C,KAAK,CAACuD,WAAW,GAAG,KAAK,GAAGtD,MAAM,IAAID,KAAK,CAACW,IAAI,KAAK,OAAO,IAAIX,KAAK,CAACW,IAAI,KAAK,MAAM,IAAIX,KAAK,CAACW,IAAI,KAAK,IAAI,GAAG,IAAI,GAAG,CAACjC,eAAe,CAACa,GAAG,CAACW,IAAI,CAAC,GAAG,IAAI,GAAGA,IAAI,EAAEgB,OAAO,EAAE2B,IAAI,GAAG,IAAI,GAAG7C,KAAK,CAAC8C,WAAW,GAAG,CAAC;EAChO,MAAM,CAACU,QAAQ,EAAErB,IAAI,CAAC,GAAGsB,YAAY,CAACV,KAAK,EAAE/C,KAAK,EAAEe,QAAQ,EAAEd,MAAM,EAAEX,EAAE,EAAEgB,QAAQ,EAAEwC,WAAW,EAAEjE,aAAa,CAACU,GAAG,CAACD,EAAE,CAAC,CAAC;EACvHT,aAAa,CAACyD,MAAM,CAAChD,EAAE,CAAC;EACxB,IAAI,CAACyD,KAAK,IAAIS,QAAQ,EAAE;IACvBT,KAAK,GAAG;MAAE,GAAGZ;IAAK,CAAC;IACnBpD,WAAW,CAAC6C,GAAG,CAACtC,EAAE,EAAEyD,KAAK,CAAC;EAC3B;EACA,IAAIvC,OAAO,CAACC,GAAG,CAACC,QAAQ,KAAK,aAAa,IAAIV,KAAK,CAACyC,KAAK,KAAK,SAAS,EAAE;IACxEC,OAAO,CAACgB,cAAc,CAAC,IAAIpE,EAAE,gBAAgBkE,QAAQ,EAAE,EAAET,KAAK,CAACpC,IAAI,EAAE,GAAG,EAAEwB,IAAI,CAACxB,IAAI,CAAC;IACpF+B,OAAO,CAACiB,IAAI,CAAC;MACZ3D,KAAK;MACLe,QAAQ;MACRd,MAAM;MACNK,QAAQ;MACRyC,KAAK;MACLZ,IAAI;MACJW,WAAW;MACXK,kBAAkB;MAClBE,sBAAsB;MACtBC;IACD,CAAC,CAAC;IACFZ,OAAO,CAACkB,QAAQ,CAAC,CAAC;EACnB;EACA,IAAIzB,IAAI,KAAKY,KAAK,EAAE;IACnBc,MAAM,CAACC,MAAM,CAACf,KAAK,EAAEZ,IAAI,CAAC;IAC1BY,KAAK,CAACzD,EAAE,GAAGA,EAAE;EACd;EACAyD,KAAK,CAACE,WAAW,GAAGD,WAAW,EAAErC,IAAI;EACrCoC,KAAK,CAACG,SAAS,GAAGnC,QAAQ;EAC1BjC,MAAM,CAAC8C,GAAG,CAACtC,EAAE,EAAE6C,IAAI,CAAC;EACpB,OAAOY,KAAK;AACb,CAAC;AACD,MAAMU,YAAY,GAAGA,CAACM,SAAS,EAAE/D,KAAK,EAAEe,QAAQ,EAAEd,MAAM,GAAG,KAAK,EAAEX,EAAE,EAAEgB,QAAQ,EAAEwC,WAAW,EAAEkB,aAAa,KAAK;EAC9G,MAAM;IAAEvB;EAAM,CAAC,GAAGzC,KAAK;EACvB,MAAMgD,WAAW,GAAGlE,MAAM,CAACS,GAAG,CAACe,QAAQ,CAAC;EACxC,IAAIN,KAAK,CAACuD,WAAW,EAAE,OAAO,CAAC,KAAK,EAAEQ,SAAS,IAAIf,WAAW,IAAI;IAAErC,IAAI,EAAE;EAAG,CAAC,CAAC;EAC/E,IAAI,CAACjB,MAAM,EAAEA,MAAM,GAAGtB,SAAS,CAAC,CAAC,CAACsB,MAAM;EACxC,MAAMiB,IAAI,GAAG,CAACI,QAAQ,KAAK,CAACgD,SAAS,IAAI,CAACA,SAAS,EAAEE,KAAK,CAAC,GAAG,IAAI,GAAGC,eAAe,CAAClB,WAAW,EAAErC,IAAI,EAAEX,KAAK,EAAEgE,aAAa,KAAK,OAAO,GAAG,IAAI,GAAG,CAAC,CAAClB,WAAW,CAAC;EAChK,MAAMqB,cAAc,GAAGnB,WAAW,KAAK,CAACrC,IAAI,IAAIA,IAAI,KAAKqC,WAAW,CAACrC,IAAI,CAAC;EAC1E,MAAMyD,cAAc,GAAGC,OAAO,CAACL,aAAa,KAAK,OAAO,IAAIlB,WAAW,KAAKkB,aAAa,IAAID,SAAS,EAAEpD,IAAI,KAAKqC,WAAW,EAAErC,IAAI,CAAC,CAAC;EACpI,IAAIH,OAAO,CAACC,GAAG,CAACC,QAAQ,KAAK,aAAa,IAAI+B,KAAK,KAAK,SAAS,EAAE;IAClE,MAAM6B,OAAO,GAAG,kBAAkBhF,EAAE,qBAAqBqB,IAAI,gBAAgBmC,WAAW,mBAAmBsB,cAAc,EAAE;IAC3H1B,OAAO,CAACgB,cAAc,CAACY,OAAO,CAAC;IAC/B5B,OAAO,CAAC6B,KAAK,CAAC;MACb5D,IAAI;MACJoD,SAAS;MACTf,WAAW;MACXhD,KAAK;MACLe,QAAQ;MACRzB,EAAE;MACF6E;IACD,CAAC,CAAC;IACFzB,OAAO,CAACkB,QAAQ,CAAC,CAAC;EACnB;EACA,IAAIO,cAAc,EAAE;IACnB,IAAI,CAACC,cAAc,IAAIL,SAAS,IAAIA,SAAS,CAACpD,IAAI,KAAKqC,WAAW,CAACrC,IAAI,EAAE,OAAO,CAAC,KAAK,EAAEoD,SAAS,CAAC;IAClG,OAAO,CAACK,cAAc,EAAE;MACvB,GAAGpB,WAAW;MACdiB,KAAK,EAAE;IACR,CAAC,CAAC;EACH;EACA,IAAI,CAACtD,IAAI,EAAE;IACV,MAAMwB,IAAI,GAAG4B,SAAS,IAAIf,WAAW,IAAIrD,cAAc,IAAI;MAC1DL,EAAE;MACFqB,IAAI,EAAE,OAAO;MACbE,KAAK,EAAEzC,SAAS,CAAC,CAAC,CAACsB,MAAM,CAACoB;IAC3B,CAAC;IACD,IAAIsD,cAAc,EAAE,OAAO,CAAC,IAAI,EAAE;MAAE,IAAGpB,WAAW,IAAIe,SAAS,IAAI5B,IAAI;IAAC,CAAC,CAAC;IAC1E,OAAO,CAAC,KAAK,EAAEA,IAAI,CAAC;EACrB;EACA,MAAMqC,MAAM,GAAGC,SAAS,CAAC9D,IAAI,CAAC;EAC9B,MAAM+D,cAAc,GAAG1B,WAAW,EAAE2B,QAAQ,IAAI,CAAC;EACjD,MAAMC,SAAS,GAAG5B,WAAW,IAAIwB,MAAM,KAAKxB,WAAW,CAACwB,MAAM;EAC9D,MAAMG,QAAQ,GAAGD,cAAc,IAAIE,SAAS,GAAG,CAAC,GAAG,CAAC,CAAC;EACrD,MAAMC,SAAS,GAAG;IACjBvF,EAAE;IACFqB,IAAI;IACJE,KAAK,EAAEnB,MAAM,CAACiB,IAAI,CAAC;IACnB6D,MAAM;IACNlE,QAAQ;IACRwE,UAAU,EAAE9B,WAAW,EAAErC,IAAI;IAC7BgE,QAAQ;IACRC,SAAS;IACTX,KAAK,EAAE;EACR,CAAC;EACD,IAAIhE,MAAM,EAAEN,cAAc,GAAGkF,SAAS;EACtC,IAAIb,aAAa,KAAK,OAAO,IAAID,SAAS,IAAIA,SAAS,CAACpD,IAAI,KAAKA,IAAI,EAAE,OAAO,CAAC,KAAK,EAAEkE,SAAS,CAAC;EAChG,MAAME,mBAAmB,GAAGf,aAAa,KAAK,OAAO,IAAID,SAAS,IAAI,CAACjB,WAAW,IAAI+B,SAAS,CAAClE,IAAI,KAAKoD,SAAS,CAACpD,IAAI;EACvH,IAAIH,OAAO,CAACC,GAAG,CAACC,QAAQ,KAAK,aAAa,IAAI+B,KAAK,KAAK,SAAS,EAAE;IAClEC,OAAO,CAACgB,cAAc,CAAC,kBAAkBpE,EAAE,kBAAkBqB,IAAI,yBAAyBoE,mBAAmB,EAAE,CAAC;IAChHrC,OAAO,CAACiB,IAAI,CAAC;MACZI,SAAS;MACTjB,WAAW;MACX+B,SAAS;MACTb;IACD,CAAC,CAAC;IACFtB,OAAO,CAACkB,QAAQ,CAAC,CAAC;EACnB;EACA,IAAImB,mBAAmB,EAAE,OAAO,CAAC,KAAK,EAAEF,SAAS,CAAC;EAClD,OAAO,CAAC,IAAI,EAAEA,SAAS,CAAC;AACzB,CAAC;AACD,SAASrC,cAAcA,CAAClD,EAAE,EAAE;EAC3B,MAAM0F,KAAK,GAAG,CAAC1F,EAAE,CAAC;EAClB,MAAM2F,OAAO,GAAG,eAAgB,IAAI7C,GAAG,CAAC,CAAC;EACzC,OAAO4C,KAAK,CAACE,MAAM,EAAE;IACpB,MAAMC,QAAQ,GAAG1G,iBAAiB,CAACuG,KAAK,CAACI,KAAK,CAAC,CAAC,CAAC;IACjD,IAAID,QAAQ,EAAE;MACb,KAAK,MAAME,OAAO,IAAIF,QAAQ,EAAE,IAAI,CAACF,OAAO,CAACtD,GAAG,CAAC0D,OAAO,CAAC,EAAE;QAC1DJ,OAAO,CAAC5C,GAAG,CAACgD,OAAO,CAAC;QACpBL,KAAK,CAACM,IAAI,CAACD,OAAO,CAAC;MACpB;IACD;EACD;EACAJ,OAAO,CAAC9F,OAAO,CAAEkG,OAAO,IAAK;IAC5B9G,YAAY,CAACgB,GAAG,CAAC8F,OAAO,CAAC,GAAG,CAAC;EAC9B,CAAC,CAAC;AACH;AACA,MAAME,YAAY,GAAG;EACpBzE,KAAK,EAAE,OAAO;EACd0E,IAAI,EAAE;AACP,CAAC;AACD,SAASf,SAASA,CAAC9D,IAAI,EAAE;EACxB,OAAO4E,YAAY,CAAC5E,IAAI,CAAC8E,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;AACxC;AACA,SAASvB,eAAeA,CAACY,UAAU,GAAG,EAAE,EAAE9E,KAAK,EAAEsB,WAAW,GAAG,KAAK,EAAE;EACrE,MAAM;IAAEX,IAAI;IAAE+E;EAAM,CAAC,GAAG1F,KAAK;EAC7B,MAAMY,aAAa,GAAGZ,KAAK,CAAC2F,QAAQ,GAAG,KAAK,CAAC,GAAG3F,KAAK,CAACY,aAAa;EACnE,IAAID,IAAI,IAAI+E,KAAK,EAAE,MAAM,IAAInF,KAAK,CAACC,OAAO,CAACC,GAAG,CAACC,QAAQ,KAAK,YAAY,GAAG,WAAW,GAAG,mDAAmD,CAAC;EAC7I,MAAMkF,QAAQ,GAAG,GAAGd,UAAU,IAAInE,IAAI,IAAI,EAAE,IAAIC,aAAa,IAAI,EAAE,IAAI8E,KAAK,GAAG,CAAC,GAAG,CAAC,IAAIpE,WAAW,GAAG,CAAC,GAAG,CAAC,EAAE;EAC7G,IAAI7B,iBAAiB,KAAKP,YAAY,EAAE;IACvCM,cAAc,CAACqG,KAAK,CAAC,CAAC;IACtBpG,iBAAiB,GAAGP,YAAY;EACjC,CAAC,MAAM;IACN,MAAM4G,MAAM,GAAGtG,cAAc,CAACD,GAAG,CAACqG,QAAQ,CAAC;IAC3C,IAAIE,MAAM,KAAK,KAAK,CAAC,EAAE,OAAOA,MAAM;EACrC;EACA,MAAM;IAAEpG,MAAM,EAAEqG;EAAQ,CAAC,GAAG3H,SAAS,CAAC,CAAC;EACvC,IAAIsH,KAAK,EAAE;IACV,IAAIZ,UAAU,KAAK,OAAO,IAAIA,UAAU,KAAK,MAAM,EAAE;MACpD,MAAMkB,OAAO,GAAGlB,UAAU,KAAK,OAAO,GAAG,MAAM,GAAG,OAAO;MACzDtF,cAAc,CAACoC,GAAG,CAACgE,QAAQ,EAAEI,OAAO,CAAC;MACrC,OAAOA,OAAO;IACf;IACA,MAAMC,aAAa,GAAGnB,UAAU,CAACoB,WAAW,CAAC,GAAG,CAAC;IACjD,MAAMC,KAAK,GAAGF,aAAa,IAAI,CAAC,GAAGnB,UAAU,GAAGA,UAAU,CAACsB,KAAK,CAACH,aAAa,CAAC;IAC/E,MAAMzB,MAAM,GAAGM,UAAU,CAACsB,KAAK,CAAC,CAAC,EAAEH,aAAa,CAAC;IACjD,MAAMI,MAAM,GAAGN,OAAO,CAACI,KAAK,CAAC,GAAGA,KAAK,GAAG3B,MAAM;IAC9ChF,cAAc,CAACoC,GAAG,CAACgE,QAAQ,EAAES,MAAM,CAAC;IACpC,OAAOA,MAAM;EACd;EACA,MAAMC,WAAW,GAAGxB,UAAU,CAACW,KAAK,CAAC,GAAG,CAAC;EACzC,MAAMc,QAAQ,GAAGD,WAAW,CAACA,WAAW,CAACpB,MAAM,GAAG,CAAC,CAAC;EACpD,IAAIqB,QAAQ,IAAIA,QAAQ,CAAC,CAAC,CAAC,CAACC,WAAW,CAAC,CAAC,KAAKD,QAAQ,CAAC,CAAC,CAAC,EAAED,WAAW,CAACG,GAAG,CAAC,CAAC;EAC5E,MAAMC,QAAQ,GAAG,CAChB/F,IAAI,IAAIC,aAAa,GAAG,GAAGD,IAAI,IAAIC,aAAa,EAAE,GAAG,KAAK,CAAC,EAC3DD,IAAI,EACJC,aAAa,CACb,CAAC+F,MAAM,CAACtC,OAAO,CAAC;EACjB,IAAIuC,KAAK,GAAG,IAAI;EAChB,IAAIjG,IAAI,EAAE;IACT,MAAMkG,aAAa,GAAGpC,SAAS,CAAC9D,IAAI,CAAC;IACrC,IAAIkG,aAAa,EAAE;MAClB,KAAK,MAAMC,OAAO,IAAIJ,QAAQ,EAAE,IAAII,OAAO,IAAIf,OAAO,EAAE;QACvDa,KAAK,GAAGE,OAAO;QACf;MACD;IACD;IACA,IAAI,CAACF,KAAK,IAAI,CAACC,aAAa,EAAE;MAC7B,IAAIpC,SAAS,CAACK,UAAU,CAAC,EAAE;QAC1B,MAAMiC,cAAc,GAAG,EAAE;QACzB,KAAK,IAAIC,CAAC,GAAGV,WAAW,CAACpB,MAAM,EAAE8B,CAAC,IAAI,CAAC,EAAEA,CAAC,EAAE,EAAED,cAAc,CAACzB,IAAI,CAACgB,WAAW,CAACF,KAAK,CAAC,CAAC,EAAEY,CAAC,CAAC,CAACC,IAAI,CAAC,GAAG,CAAC,CAAC;QACpGC,KAAK,EAAE,KAAK,MAAMC,IAAI,IAAIJ,cAAc,EAAE;UACzC,MAAMK,UAAU,GAAG,CAACxG,aAAa,GAAG,GAAGuG,IAAI,IAAIxG,IAAI,IAAIC,aAAa,EAAE,GAAG,KAAK,CAAC,EAAE,GAAGuG,IAAI,IAAIxG,IAAI,EAAE,CAAC,CAACgG,MAAM,CAACtC,OAAO,CAAC;UACnH,KAAK,MAAMgD,SAAS,IAAID,UAAU,EAAE,IAAIC,SAAS,IAAItB,OAAO,EAAE;YAC7Da,KAAK,GAAGS,SAAS;YACjB,MAAMH,KAAK;UACZ;QACD;MACD;IACD;EACD;EACA,IAAI,CAACN,KAAK,EAAE,IAAI,CAACjG,IAAI,IAAIC,aAAa,EAAE;IACvC,MAAMyG,SAAS,GAAG,GAAGf,WAAW,CAACW,IAAI,CAAC,GAAG,CAAC,IAAIrG,aAAa,EAAE;IAC7D,IAAIyG,SAAS,IAAItB,OAAO,EAAEa,KAAK,GAAGS,SAAS;EAC5C,CAAC,MAAM;IACN,MAAMC,GAAG,GAAGhB,WAAW,CAACpB,MAAM;IAC9B,KAAK,IAAI8B,CAAC,GAAG,CAAC,EAAEA,CAAC,IAAIM,GAAG,EAAEN,CAAC,EAAE,EAAE;MAC9B,MAAMG,IAAI,GAAG,CAACH,CAAC,KAAK,CAAC,GAAGV,WAAW,GAAGA,WAAW,CAACF,KAAK,CAAC,CAAC,EAAE,CAACY,CAAC,CAAC,EAAEC,IAAI,CAAC,GAAG,CAAC;MACzE,KAAK,MAAMH,OAAO,IAAIJ,QAAQ,EAAE;QAC/B,MAAMW,SAAS,GAAGF,IAAI,GAAG,GAAGA,IAAI,IAAIL,OAAO,EAAE,GAAGA,OAAO;QACvD,IAAIO,SAAS,IAAItB,OAAO,EAAE;UACzBa,KAAK,GAAGS,SAAS;UACjB;QACD;MACD;MACA,IAAIT,KAAK,EAAE;IACZ;EACD;EACA,IAAI,CAACtF,WAAW,IAAIsF,KAAK,KAAK9B,UAAU,IAAI,CAACS,YAAY,CAACqB,KAAK,CAAC,EAAE;IACjEpH,cAAc,CAACoC,GAAG,CAACgE,QAAQ,EAAE,IAAI,CAAC;IAClC,OAAO,IAAI;EACZ;EACApG,cAAc,CAACoC,GAAG,CAACgE,QAAQ,EAAEgB,KAAK,CAAC;EACnC,OAAOA,KAAK;AACb;AACA,MAAM5F,WAAW,GAAGA,CAAC;EAAEL,IAAI;EAAE+E,KAAK;EAAE6B,cAAc;EAAE3G;AAAc,CAAC,KAAK,GAAGD,IAAI,IAAI,EAAE,GAAG+E,KAAK,IAAI,EAAE,GAAG6B,cAAc,IAAI,EAAE,GAAG3G,aAAa,IAAI,EAAE,EAAE;AAClJ,MAAMgC,qBAAqB,GAAI5C,KAAK,IAAK,MAAM,IAAIA,KAAK,IAAI,OAAO,IAAIA,KAAK,IAAI,gBAAgB,IAAIA,KAAK;AAEzG,SAAS1B,iBAAiB,EAAEW,iBAAiB,EAAEW,iBAAiB,EAAEP,aAAa,EAAEuD,qBAAqB,EAAE7C,aAAa","ignoreList":[]}