@keboola/design 9.1.0 → 11.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 (520) hide show
  1. package/AGENTS.md +119 -40
  2. package/COMPONENT-API.md +31 -9
  3. package/README.md +3 -3
  4. package/dist/MermaidDiagram-ZU5KAVRT.js +18 -0
  5. package/dist/MermaidDiagram-ZU5KAVRT.js.map +1 -0
  6. package/dist/charts.d.ts +37 -2
  7. package/dist/charts.js +11 -9
  8. package/dist/charts.js.map +1 -1
  9. package/dist/chunk-2YYJDKSP.js +51 -0
  10. package/dist/chunk-2YYJDKSP.js.map +1 -0
  11. package/dist/chunk-3P5UUCFI.js +385 -0
  12. package/dist/chunk-3P5UUCFI.js.map +1 -0
  13. package/dist/chunk-3QDFDDWZ.js +99 -0
  14. package/dist/chunk-3QDFDDWZ.js.map +1 -0
  15. package/dist/chunk-3W27OLK5.js +15 -0
  16. package/dist/chunk-3W27OLK5.js.map +1 -0
  17. package/dist/chunk-4FIZZONW.js +40 -0
  18. package/dist/chunk-4FIZZONW.js.map +1 -0
  19. package/dist/chunk-4GIAXOJG.js +133 -0
  20. package/dist/chunk-4GIAXOJG.js.map +1 -0
  21. package/dist/chunk-52NDNMK7.js +99 -0
  22. package/dist/chunk-52NDNMK7.js.map +1 -0
  23. package/dist/chunk-576G5OES.js +201 -0
  24. package/dist/chunk-576G5OES.js.map +1 -0
  25. package/dist/chunk-5AIE6SET.js +659 -0
  26. package/dist/chunk-5AIE6SET.js.map +1 -0
  27. package/dist/chunk-5FTNAZRW.js +327 -0
  28. package/dist/chunk-5FTNAZRW.js.map +1 -0
  29. package/dist/chunk-5IG2S7ZY.js +70 -0
  30. package/dist/chunk-5IG2S7ZY.js.map +1 -0
  31. package/dist/chunk-5QCXHNCW.js +404 -0
  32. package/dist/chunk-5QCXHNCW.js.map +1 -0
  33. package/dist/chunk-6DUMGC7Y.js +105 -0
  34. package/dist/chunk-6DUMGC7Y.js.map +1 -0
  35. package/dist/chunk-6J25CVST.js +174 -0
  36. package/dist/chunk-6J25CVST.js.map +1 -0
  37. package/dist/chunk-6NN35XOP.js +120 -0
  38. package/dist/chunk-6NN35XOP.js.map +1 -0
  39. package/dist/chunk-6NZBVA4T.js +24 -0
  40. package/dist/chunk-6NZBVA4T.js.map +1 -0
  41. package/dist/chunk-6W5BHRCL.js +295 -0
  42. package/dist/chunk-6W5BHRCL.js.map +1 -0
  43. package/dist/chunk-72BKRCEG.js +409 -0
  44. package/dist/chunk-72BKRCEG.js.map +1 -0
  45. package/dist/chunk-7GTI3PPI.js +95 -0
  46. package/dist/chunk-7GTI3PPI.js.map +1 -0
  47. package/dist/chunk-7P6PLZ4B.js +74 -0
  48. package/dist/chunk-7P6PLZ4B.js.map +1 -0
  49. package/dist/chunk-7WZWY5IA.js +46 -0
  50. package/dist/chunk-7WZWY5IA.js.map +1 -0
  51. package/dist/chunk-AIYO2632.js +489 -0
  52. package/dist/chunk-AIYO2632.js.map +1 -0
  53. package/dist/chunk-ANFZWPNE.js +112 -0
  54. package/dist/chunk-ANFZWPNE.js.map +1 -0
  55. package/dist/chunk-ANZTVAJU.js +73 -0
  56. package/dist/chunk-ANZTVAJU.js.map +1 -0
  57. package/dist/chunk-BD5BTJKX.js +166 -0
  58. package/dist/chunk-BD5BTJKX.js.map +1 -0
  59. package/dist/chunk-BHGIDSRJ.js +140 -0
  60. package/dist/chunk-BHGIDSRJ.js.map +1 -0
  61. package/dist/chunk-BSQWZITZ.js +507 -0
  62. package/dist/chunk-BSQWZITZ.js.map +1 -0
  63. package/dist/chunk-D3LAIK62.js +23 -0
  64. package/dist/chunk-D3LAIK62.js.map +1 -0
  65. package/dist/chunk-DODCR43C.js +155 -0
  66. package/dist/chunk-DODCR43C.js.map +1 -0
  67. package/dist/chunk-EEK5NGZF.js +40 -0
  68. package/dist/chunk-EEK5NGZF.js.map +1 -0
  69. package/dist/chunk-ENRG7TXA.js +11 -0
  70. package/dist/chunk-ENRG7TXA.js.map +1 -0
  71. package/dist/chunk-EQRMGIGY.js +239 -0
  72. package/dist/chunk-EQRMGIGY.js.map +1 -0
  73. package/dist/chunk-ERAHK5YQ.js +495 -0
  74. package/dist/chunk-ERAHK5YQ.js.map +1 -0
  75. package/dist/chunk-F3FOFY2P.js +124 -0
  76. package/dist/chunk-F3FOFY2P.js.map +1 -0
  77. package/dist/chunk-F6BTWFOC.js +507 -0
  78. package/dist/chunk-F6BTWFOC.js.map +1 -0
  79. package/dist/chunk-F6J6NNAL.js +34 -0
  80. package/dist/chunk-F6J6NNAL.js.map +1 -0
  81. package/dist/chunk-FCHJ7D5O.js +59 -0
  82. package/dist/chunk-FCHJ7D5O.js.map +1 -0
  83. package/dist/chunk-FFJTEQCC.js +80 -0
  84. package/dist/chunk-FFJTEQCC.js.map +1 -0
  85. package/dist/chunk-FUFMVW7O.js +64 -0
  86. package/dist/chunk-FUFMVW7O.js.map +1 -0
  87. package/dist/chunk-FVPGQ6UE.js +25 -0
  88. package/dist/chunk-FVPGQ6UE.js.map +1 -0
  89. package/dist/chunk-G3PMV62Z.js +33 -0
  90. package/dist/chunk-G3PMV62Z.js.map +1 -0
  91. package/dist/chunk-GACFOW3E.js +51 -0
  92. package/dist/chunk-GACFOW3E.js.map +1 -0
  93. package/dist/chunk-GDT6HQMK.js +42 -0
  94. package/dist/chunk-GDT6HQMK.js.map +1 -0
  95. package/dist/chunk-HLGU22C6.js +2589 -0
  96. package/dist/chunk-HLGU22C6.js.map +1 -0
  97. package/dist/chunk-HPMYYGP7.js +134 -0
  98. package/dist/chunk-HPMYYGP7.js.map +1 -0
  99. package/dist/chunk-I2UCOD45.js +197 -0
  100. package/dist/chunk-I2UCOD45.js.map +1 -0
  101. package/dist/chunk-IEGDZUVM.js +75 -0
  102. package/dist/chunk-IEGDZUVM.js.map +1 -0
  103. package/dist/chunk-IIS7INHF.js +47 -0
  104. package/dist/chunk-IIS7INHF.js.map +1 -0
  105. package/dist/chunk-ITELSEFU.js +256 -0
  106. package/dist/chunk-ITELSEFU.js.map +1 -0
  107. package/dist/chunk-IXAYNBOY.js +407 -0
  108. package/dist/chunk-IXAYNBOY.js.map +1 -0
  109. package/dist/chunk-JUW2ETEI.js +191 -0
  110. package/dist/chunk-JUW2ETEI.js.map +1 -0
  111. package/dist/chunk-K65C7CVE.js +127 -0
  112. package/dist/chunk-K65C7CVE.js.map +1 -0
  113. package/dist/chunk-KDI64MCY.js +189 -0
  114. package/dist/chunk-KDI64MCY.js.map +1 -0
  115. package/dist/chunk-KN4ASMH5.js +160 -0
  116. package/dist/chunk-KN4ASMH5.js.map +1 -0
  117. package/dist/chunk-KQW7QNTU.js +1549 -0
  118. package/dist/chunk-KQW7QNTU.js.map +1 -0
  119. package/dist/chunk-KR7NXXHC.js +66 -0
  120. package/dist/chunk-KR7NXXHC.js.map +1 -0
  121. package/dist/chunk-KRZKIVMA.js +142 -0
  122. package/dist/chunk-KRZKIVMA.js.map +1 -0
  123. package/dist/chunk-KTTLLKGQ.js +185 -0
  124. package/dist/chunk-KTTLLKGQ.js.map +1 -0
  125. package/dist/chunk-KWKSHPDP.js +234 -0
  126. package/dist/chunk-KWKSHPDP.js.map +1 -0
  127. package/dist/chunk-KZVC7OYG.js +57 -0
  128. package/dist/chunk-KZVC7OYG.js.map +1 -0
  129. package/dist/chunk-L5DHUN2V.js +204 -0
  130. package/dist/chunk-L5DHUN2V.js.map +1 -0
  131. package/dist/chunk-LCTGEH57.js +1376 -0
  132. package/dist/chunk-LCTGEH57.js.map +1 -0
  133. package/dist/chunk-LXLIQ2D6.js +12 -0
  134. package/dist/chunk-LXLIQ2D6.js.map +1 -0
  135. package/dist/chunk-M4CTURKX.js +84 -0
  136. package/dist/chunk-M4CTURKX.js.map +1 -0
  137. package/dist/chunk-M6LTUPVP.js +301 -0
  138. package/dist/chunk-M6LTUPVP.js.map +1 -0
  139. package/dist/chunk-MA6RRHDT.js +291 -0
  140. package/dist/chunk-MA6RRHDT.js.map +1 -0
  141. package/dist/chunk-MODE4QIA.js +6 -0
  142. package/dist/chunk-MODE4QIA.js.map +1 -0
  143. package/dist/chunk-MVILMVGG.js +118 -0
  144. package/dist/chunk-MVILMVGG.js.map +1 -0
  145. package/dist/chunk-MWS4VCLV.js +17 -0
  146. package/dist/chunk-MWS4VCLV.js.map +1 -0
  147. package/dist/chunk-NEUX74SO.js +315 -0
  148. package/dist/chunk-NEUX74SO.js.map +1 -0
  149. package/dist/chunk-NFHKYBRD.js +156 -0
  150. package/dist/chunk-NFHKYBRD.js.map +1 -0
  151. package/dist/chunk-NHJNNXD3.js +89 -0
  152. package/dist/chunk-NHJNNXD3.js.map +1 -0
  153. package/dist/chunk-O2BF3HZL.js +33 -0
  154. package/dist/chunk-O2BF3HZL.js.map +1 -0
  155. package/dist/chunk-OANXCZYD.js +212 -0
  156. package/dist/chunk-OANXCZYD.js.map +1 -0
  157. package/dist/chunk-ODJF7YIP.js +230 -0
  158. package/dist/chunk-ODJF7YIP.js.map +1 -0
  159. package/dist/chunk-ON4BJTHI.js +101 -0
  160. package/dist/chunk-ON4BJTHI.js.map +1 -0
  161. package/dist/chunk-OTL5WXIJ.js +16 -0
  162. package/dist/chunk-OTL5WXIJ.js.map +1 -0
  163. package/dist/chunk-PACNBKJV.js +47 -0
  164. package/dist/chunk-PACNBKJV.js.map +1 -0
  165. package/dist/chunk-PROCA7K7.js +23 -0
  166. package/dist/chunk-PROCA7K7.js.map +1 -0
  167. package/dist/chunk-QGMIPA67.js +85 -0
  168. package/dist/chunk-QGMIPA67.js.map +1 -0
  169. package/dist/chunk-QQA37LFB.js +190 -0
  170. package/dist/chunk-QQA37LFB.js.map +1 -0
  171. package/dist/chunk-QZAWRSEB.js +61 -0
  172. package/dist/chunk-QZAWRSEB.js.map +1 -0
  173. package/dist/chunk-R74KGWNS.js +699 -0
  174. package/dist/chunk-R74KGWNS.js.map +1 -0
  175. package/dist/chunk-RFDLHMKL.js +110 -0
  176. package/dist/chunk-RFDLHMKL.js.map +1 -0
  177. package/dist/chunk-RL64HN7S.js +40 -0
  178. package/dist/chunk-RL64HN7S.js.map +1 -0
  179. package/dist/chunk-RMRQKPL7.js +115 -0
  180. package/dist/chunk-RMRQKPL7.js.map +1 -0
  181. package/dist/chunk-RQVK4IYC.js +606 -0
  182. package/dist/chunk-RQVK4IYC.js.map +1 -0
  183. package/dist/chunk-RTW56PWZ.js +59 -0
  184. package/dist/chunk-RTW56PWZ.js.map +1 -0
  185. package/dist/chunk-RUTPQNLR.js +266 -0
  186. package/dist/chunk-RUTPQNLR.js.map +1 -0
  187. package/dist/chunk-S6TAF63G.js +25 -0
  188. package/dist/chunk-S6TAF63G.js.map +1 -0
  189. package/dist/chunk-SBGAUGXY.js +224 -0
  190. package/dist/chunk-SBGAUGXY.js.map +1 -0
  191. package/dist/chunk-SC275NHZ.js +407 -0
  192. package/dist/chunk-SC275NHZ.js.map +1 -0
  193. package/dist/chunk-SCQPU4UE.js +97 -0
  194. package/dist/chunk-SCQPU4UE.js.map +1 -0
  195. package/dist/chunk-SFFF2WQP.js +8 -0
  196. package/dist/chunk-SFFF2WQP.js.map +1 -0
  197. package/dist/chunk-SJYMHZKA.js +36 -0
  198. package/dist/chunk-SJYMHZKA.js.map +1 -0
  199. package/dist/chunk-SLCCUJVN.js +125 -0
  200. package/dist/chunk-SLCCUJVN.js.map +1 -0
  201. package/dist/chunk-SVBSNSD4.js +259 -0
  202. package/dist/chunk-SVBSNSD4.js.map +1 -0
  203. package/dist/chunk-SVPLTL35.js +62 -0
  204. package/dist/chunk-SVPLTL35.js.map +1 -0
  205. package/dist/chunk-SWQFYNYG.js +338 -0
  206. package/dist/chunk-SWQFYNYG.js.map +1 -0
  207. package/dist/chunk-THHB4EWS.js +72 -0
  208. package/dist/chunk-THHB4EWS.js.map +1 -0
  209. package/dist/chunk-TUCDD33E.js +246 -0
  210. package/dist/chunk-TUCDD33E.js.map +1 -0
  211. package/dist/chunk-TV4WAP2R.js +14 -0
  212. package/dist/chunk-TV4WAP2R.js.map +1 -0
  213. package/dist/chunk-U3A6YBTZ.js +134 -0
  214. package/dist/chunk-U3A6YBTZ.js.map +1 -0
  215. package/dist/chunk-UGT6DKWM.js +95 -0
  216. package/dist/chunk-UGT6DKWM.js.map +1 -0
  217. package/dist/chunk-VSERHUWD.js +212 -0
  218. package/dist/chunk-VSERHUWD.js.map +1 -0
  219. package/dist/chunk-VYG7BDXC.js +49 -0
  220. package/dist/chunk-VYG7BDXC.js.map +1 -0
  221. package/dist/chunk-WETKNYZX.js +52 -0
  222. package/dist/chunk-WETKNYZX.js.map +1 -0
  223. package/dist/chunk-WGG4AML3.js +216 -0
  224. package/dist/chunk-WGG4AML3.js.map +1 -0
  225. package/dist/chunk-WKAUEL6I.js +30 -0
  226. package/dist/chunk-WKAUEL6I.js.map +1 -0
  227. package/dist/chunk-WPOLA5CG.js +81 -0
  228. package/dist/chunk-WPOLA5CG.js.map +1 -0
  229. package/dist/chunk-WPVETCGJ.js +254 -0
  230. package/dist/chunk-WPVETCGJ.js.map +1 -0
  231. package/dist/chunk-WTSM3A7E.js +13 -0
  232. package/dist/chunk-WTSM3A7E.js.map +1 -0
  233. package/dist/chunk-WU3F2K3T.js +148 -0
  234. package/dist/chunk-WU3F2K3T.js.map +1 -0
  235. package/dist/chunk-WZZK2DTZ.js +39 -0
  236. package/dist/chunk-WZZK2DTZ.js.map +1 -0
  237. package/dist/chunk-X4IHLKRD.js +42 -0
  238. package/dist/chunk-X4IHLKRD.js.map +1 -0
  239. package/dist/chunk-XAHEXZJC.js +80 -0
  240. package/dist/chunk-XAHEXZJC.js.map +1 -0
  241. package/dist/chunk-XCYGJDUX.js +31 -0
  242. package/dist/chunk-XCYGJDUX.js.map +1 -0
  243. package/dist/chunk-Y4W3JORC.js +104 -0
  244. package/dist/chunk-Y4W3JORC.js.map +1 -0
  245. package/dist/chunk-YFZJ3ZLG.js +1297 -0
  246. package/dist/chunk-YFZJ3ZLG.js.map +1 -0
  247. package/dist/chunk-YI3WLXEN.js +4387 -0
  248. package/dist/chunk-YI3WLXEN.js.map +1 -0
  249. package/dist/chunk-ZBKFSPD3.js +29 -0
  250. package/dist/chunk-ZBKFSPD3.js.map +1 -0
  251. package/dist/chunk-ZOERRQ6A.js +79 -0
  252. package/dist/chunk-ZOERRQ6A.js.map +1 -0
  253. package/dist/chunk-ZSTGUKHU.js +10 -0
  254. package/dist/chunk-ZSTGUKHU.js.map +1 -0
  255. package/dist/chunk-ZUEHDL27.js +65 -0
  256. package/dist/chunk-ZUEHDL27.js.map +1 -0
  257. package/dist/editors.d.ts +27 -3
  258. package/dist/editors.js +93 -2081
  259. package/dist/editors.js.map +1 -1
  260. package/dist/icons.d.ts +29 -8
  261. package/dist/icons.js +7 -361
  262. package/dist/icons.js.map +1 -1
  263. package/dist/index.d.ts +715 -441
  264. package/dist/index.js +121 -24643
  265. package/dist/index.js.map +1 -1
  266. package/dist/internal/blocks/AIKit.js +30 -0
  267. package/dist/internal/blocks/AIKit.js.map +1 -0
  268. package/dist/internal/blocks/AppShell.js +11 -0
  269. package/dist/internal/blocks/AppShell.js.map +1 -0
  270. package/dist/internal/blocks/AutoSaveTextarea.js +14 -0
  271. package/dist/internal/blocks/AutoSaveTextarea.js.map +1 -0
  272. package/dist/internal/blocks/BrandEditor.js +23 -0
  273. package/dist/internal/blocks/BrandEditor.js.map +1 -0
  274. package/dist/internal/blocks/ChartPanel.js +10 -0
  275. package/dist/internal/blocks/ChartPanel.js.map +1 -0
  276. package/dist/internal/blocks/ClipboardButton.js +12 -0
  277. package/dist/internal/blocks/ClipboardButton.js.map +1 -0
  278. package/dist/internal/blocks/ColorInput.js +13 -0
  279. package/dist/internal/blocks/ColorInput.js.map +1 -0
  280. package/dist/internal/blocks/ColorModeSwitch.js +13 -0
  281. package/dist/internal/blocks/ColorModeSwitch.js.map +1 -0
  282. package/dist/internal/blocks/Command.js +15 -0
  283. package/dist/internal/blocks/Command.js.map +1 -0
  284. package/dist/internal/blocks/CopyField.js +11 -0
  285. package/dist/internal/blocks/CopyField.js.map +1 -0
  286. package/dist/internal/blocks/DashboardHero.js +9 -0
  287. package/dist/internal/blocks/DashboardHero.js.map +1 -0
  288. package/dist/internal/blocks/DateInput.js +16 -0
  289. package/dist/internal/blocks/DateInput.js.map +1 -0
  290. package/dist/internal/blocks/DateRangeInput.js +16 -0
  291. package/dist/internal/blocks/DateRangeInput.js.map +1 -0
  292. package/dist/internal/blocks/EmptyConfigurationActionCard.js +10 -0
  293. package/dist/internal/blocks/EmptyConfigurationActionCard.js.map +1 -0
  294. package/dist/internal/blocks/EmptyState.js +4 -0
  295. package/dist/internal/blocks/EmptyState.js.map +1 -0
  296. package/dist/internal/blocks/ErrorState.js +5 -0
  297. package/dist/internal/blocks/ErrorState.js.map +1 -0
  298. package/dist/internal/blocks/ExportMenu.js +13 -0
  299. package/dist/internal/blocks/ExportMenu.js.map +1 -0
  300. package/dist/internal/blocks/Form.js +29 -0
  301. package/dist/internal/blocks/Form.js.map +1 -0
  302. package/dist/internal/blocks/FormGroup.js +18 -0
  303. package/dist/internal/blocks/FormGroup.js.map +1 -0
  304. package/dist/internal/blocks/GoogleButton.js +10 -0
  305. package/dist/internal/blocks/GoogleButton.js.map +1 -0
  306. package/dist/internal/blocks/MicrosoftButton.js +10 -0
  307. package/dist/internal/blocks/MicrosoftButton.js.map +1 -0
  308. package/dist/internal/blocks/MultiActionButtonGroup.js +12 -0
  309. package/dist/internal/blocks/MultiActionButtonGroup.js.map +1 -0
  310. package/dist/internal/blocks/MultiCombobox.js +14 -0
  311. package/dist/internal/blocks/MultiCombobox.js.map +1 -0
  312. package/dist/internal/blocks/NumberInput.js +12 -0
  313. package/dist/internal/blocks/NumberInput.js.map +1 -0
  314. package/dist/internal/blocks/OtpInput.js +10 -0
  315. package/dist/internal/blocks/OtpInput.js.map +1 -0
  316. package/dist/internal/blocks/PageHeader.js +9 -0
  317. package/dist/internal/blocks/PageHeader.js.map +1 -0
  318. package/dist/internal/blocks/PageLayout.js +9 -0
  319. package/dist/internal/blocks/PageLayout.js.map +1 -0
  320. package/dist/internal/blocks/PageToolbar.js +13 -0
  321. package/dist/internal/blocks/PageToolbar.js.map +1 -0
  322. package/dist/internal/blocks/PasswordInput.js +13 -0
  323. package/dist/internal/blocks/PasswordInput.js.map +1 -0
  324. package/dist/internal/blocks/SearchInput.js +12 -0
  325. package/dist/internal/blocks/SearchInput.js.map +1 -0
  326. package/dist/internal/blocks/SearchInputWithNavigation.js +16 -0
  327. package/dist/internal/blocks/SearchInputWithNavigation.js.map +1 -0
  328. package/dist/internal/blocks/SectionNav.js +15 -0
  329. package/dist/internal/blocks/SectionNav.js.map +1 -0
  330. package/dist/internal/blocks/SplitButton.js +14 -0
  331. package/dist/internal/blocks/SplitButton.js.map +1 -0
  332. package/dist/internal/blocks/StatCard.js +10 -0
  333. package/dist/internal/blocks/StatCard.js.map +1 -0
  334. package/dist/internal/blocks/TextInput.js +13 -0
  335. package/dist/internal/blocks/TextInput.js.map +1 -0
  336. package/dist/internal/blocks/Textarea.js +13 -0
  337. package/dist/internal/blocks/Textarea.js.map +1 -0
  338. package/dist/internal/blocks/TimeInput.js +17 -0
  339. package/dist/internal/blocks/TimeInput.js.map +1 -0
  340. package/dist/internal/components/Alert.js +11 -0
  341. package/dist/internal/components/Alert.js.map +1 -0
  342. package/dist/internal/components/AlertModal.js +11 -0
  343. package/dist/internal/components/AlertModal.js.map +1 -0
  344. package/dist/internal/components/Avatar.js +9 -0
  345. package/dist/internal/components/Avatar.js.map +1 -0
  346. package/dist/internal/components/Badge.js +9 -0
  347. package/dist/internal/components/Badge.js.map +1 -0
  348. package/dist/internal/components/BrandLogo.js +11 -0
  349. package/dist/internal/components/BrandLogo.js.map +1 -0
  350. package/dist/internal/components/Breadcrumb.js +14 -0
  351. package/dist/internal/components/Breadcrumb.js.map +1 -0
  352. package/dist/internal/components/Button.js +10 -0
  353. package/dist/internal/components/Button.js.map +1 -0
  354. package/dist/internal/components/ButtonGroup.js +9 -0
  355. package/dist/internal/components/ButtonGroup.js.map +1 -0
  356. package/dist/internal/components/Calendar.js +9 -0
  357. package/dist/internal/components/Calendar.js.map +1 -0
  358. package/dist/internal/components/Card.js +9 -0
  359. package/dist/internal/components/Card.js.map +1 -0
  360. package/dist/internal/components/Checkbox.js +11 -0
  361. package/dist/internal/components/Checkbox.js.map +1 -0
  362. package/dist/internal/components/Clipboard.js +9 -0
  363. package/dist/internal/components/Clipboard.js.map +1 -0
  364. package/dist/internal/components/Collapsible.js +9 -0
  365. package/dist/internal/components/Collapsible.js.map +1 -0
  366. package/dist/internal/components/CollapsiblePanel.js +11 -0
  367. package/dist/internal/components/CollapsiblePanel.js.map +1 -0
  368. package/dist/internal/components/Combobox.js +13 -0
  369. package/dist/internal/components/Combobox.js.map +1 -0
  370. package/dist/internal/components/DatePicker.js +11 -0
  371. package/dist/internal/components/DatePicker.js.map +1 -0
  372. package/dist/internal/components/DateRangePicker.js +17 -0
  373. package/dist/internal/components/DateRangePicker.js.map +1 -0
  374. package/dist/internal/components/DiffView.js +9 -0
  375. package/dist/internal/components/DiffView.js.map +1 -0
  376. package/dist/internal/components/DotsLoader.js +5 -0
  377. package/dist/internal/components/DotsLoader.js.map +1 -0
  378. package/dist/internal/components/DropdownMenu.js +11 -0
  379. package/dist/internal/components/DropdownMenu.js.map +1 -0
  380. package/dist/internal/components/EmptySearchContent.js +4 -0
  381. package/dist/internal/components/EmptySearchContent.js.map +1 -0
  382. package/dist/internal/components/FileUpload.js +11 -0
  383. package/dist/internal/components/FileUpload.js.map +1 -0
  384. package/dist/internal/components/FullScreenModal.js +12 -0
  385. package/dist/internal/components/FullScreenModal.js.map +1 -0
  386. package/dist/internal/components/HelpBlock.js +4 -0
  387. package/dist/internal/components/HelpBlock.js.map +1 -0
  388. package/dist/internal/components/HoverCard.js +9 -0
  389. package/dist/internal/components/HoverCard.js.map +1 -0
  390. package/dist/internal/components/InputGroup.js +11 -0
  391. package/dist/internal/components/InputGroup.js.map +1 -0
  392. package/dist/internal/components/Kbd.js +9 -0
  393. package/dist/internal/components/Kbd.js.map +1 -0
  394. package/dist/internal/components/Label.js +9 -0
  395. package/dist/internal/components/Label.js.map +1 -0
  396. package/dist/internal/components/Link.js +9 -0
  397. package/dist/internal/components/Link.js.map +1 -0
  398. package/dist/internal/components/MarkedText.js +5 -0
  399. package/dist/internal/components/MarkedText.js.map +1 -0
  400. package/dist/internal/components/MergeEditor/ConflictStatus/ConflictStatusIndicator.js +10 -0
  401. package/dist/internal/components/MergeEditor/ConflictStatus/ConflictStatusIndicator.js.map +1 -0
  402. package/dist/internal/components/MergeEditor/PaneHeader.js +4 -0
  403. package/dist/internal/components/MergeEditor/PaneHeader.js.map +1 -0
  404. package/dist/internal/components/MergeEditor/constants.js +4 -0
  405. package/dist/internal/components/MergeEditor/constants.js.map +1 -0
  406. package/dist/internal/components/MergeEditor/useMergeDiff.js +5 -0
  407. package/dist/internal/components/MergeEditor/useMergeDiff.js.map +1 -0
  408. package/dist/internal/components/Modal.js +13 -0
  409. package/dist/internal/components/Modal.js.map +1 -0
  410. package/dist/internal/components/Navbar.js +14 -0
  411. package/dist/internal/components/Navbar.js.map +1 -0
  412. package/dist/internal/components/Pagination.js +11 -0
  413. package/dist/internal/components/Pagination.js.map +1 -0
  414. package/dist/internal/components/PanelWithDetails.js +11 -0
  415. package/dist/internal/components/PanelWithDetails.js.map +1 -0
  416. package/dist/internal/components/Popconfirm.js +12 -0
  417. package/dist/internal/components/Popconfirm.js.map +1 -0
  418. package/dist/internal/components/Popover.js +9 -0
  419. package/dist/internal/components/Popover.js.map +1 -0
  420. package/dist/internal/components/Progress.js +9 -0
  421. package/dist/internal/components/Progress.js.map +1 -0
  422. package/dist/internal/components/RadioGroup.js +12 -0
  423. package/dist/internal/components/RadioGroup.js.map +1 -0
  424. package/dist/internal/components/Resizable.js +9 -0
  425. package/dist/internal/components/Resizable.js.map +1 -0
  426. package/dist/internal/components/ScrollArea.js +9 -0
  427. package/dist/internal/components/ScrollArea.js.map +1 -0
  428. package/dist/internal/components/Search.js +10 -0
  429. package/dist/internal/components/Search.js.map +1 -0
  430. package/dist/internal/components/Select.js +12 -0
  431. package/dist/internal/components/Select.js.map +1 -0
  432. package/dist/internal/components/Separator.js +9 -0
  433. package/dist/internal/components/Separator.js.map +1 -0
  434. package/dist/internal/components/Sheet.js +12 -0
  435. package/dist/internal/components/Sheet.js.map +1 -0
  436. package/dist/internal/components/Sidebar.js +20 -0
  437. package/dist/internal/components/Sidebar.js.map +1 -0
  438. package/dist/internal/components/Skeleton/Skeleton.js +9 -0
  439. package/dist/internal/components/Skeleton/Skeleton.js.map +1 -0
  440. package/dist/internal/components/Skeleton/SkeletonList.js +10 -0
  441. package/dist/internal/components/Skeleton/SkeletonList.js.map +1 -0
  442. package/dist/internal/components/Slider.js +11 -0
  443. package/dist/internal/components/Slider.js.map +1 -0
  444. package/dist/internal/components/SpotlightBackdrop.js +9 -0
  445. package/dist/internal/components/SpotlightBackdrop.js.map +1 -0
  446. package/dist/internal/components/Stepper.js +10 -0
  447. package/dist/internal/components/Stepper.js.map +1 -0
  448. package/dist/internal/components/Switch.js +10 -0
  449. package/dist/internal/components/Switch.js.map +1 -0
  450. package/dist/internal/components/Table.js +10 -0
  451. package/dist/internal/components/Table.js.map +1 -0
  452. package/dist/internal/components/Tabs.js +12 -0
  453. package/dist/internal/components/Tabs.js.map +1 -0
  454. package/dist/internal/components/ThemeProvider.js +10 -0
  455. package/dist/internal/components/ThemeProvider.js.map +1 -0
  456. package/dist/internal/components/TimePicker.js +12 -0
  457. package/dist/internal/components/TimePicker.js.map +1 -0
  458. package/dist/internal/components/Timeline.js +10 -0
  459. package/dist/internal/components/Timeline.js.map +1 -0
  460. package/dist/internal/components/Toast.js +11 -0
  461. package/dist/internal/components/Toast.js.map +1 -0
  462. package/dist/internal/components/Toggle.js +9 -0
  463. package/dist/internal/components/Toggle.js.map +1 -0
  464. package/dist/internal/components/ToggleGroup.js +9 -0
  465. package/dist/internal/components/ToggleGroup.js.map +1 -0
  466. package/dist/internal/components/Tooltip.js +8 -0
  467. package/dist/internal/components/Tooltip.js.map +1 -0
  468. package/dist/internal/components/Truncated.js +9 -0
  469. package/dist/internal/components/Truncated.js.map +1 -0
  470. package/dist/internal/components/Workbench.js +11 -0
  471. package/dist/internal/components/Workbench.js.map +1 -0
  472. package/dist/internal/components/ZoomableSvg.js +13 -0
  473. package/dist/internal/components/ZoomableSvg.js.map +1 -0
  474. package/dist/internal/hooks/useAutosizeInput.js +4 -0
  475. package/dist/internal/hooks/useAutosizeInput.js.map +1 -0
  476. package/dist/internal/hooks/useScrollbarPosition.js +5 -0
  477. package/dist/internal/hooks/useScrollbarPosition.js.map +1 -0
  478. package/dist/internal/hooks/useStableCallback.js +4 -0
  479. package/dist/internal/hooks/useStableCallback.js.map +1 -0
  480. package/dist/internal/utils/mergeRefs.js +4 -0
  481. package/dist/internal/utils/mergeRefs.js.map +1 -0
  482. package/dist/internal/utils.js +8 -0
  483. package/dist/internal/utils.js.map +1 -0
  484. package/dist/markdown-editor.js +55 -3426
  485. package/dist/markdown-editor.js.map +1 -1
  486. package/dist/mermaid.js +16 -1129
  487. package/dist/mermaid.js.map +1 -1
  488. package/dist/rjsf.js +252 -9380
  489. package/dist/rjsf.js.map +1 -1
  490. package/dist/styles.css +1 -1
  491. package/dist/testing.js +10 -357
  492. package/dist/testing.js.map +1 -1
  493. package/package.json +31 -75
  494. package/src/styles.css +95 -10
  495. package/src/theme.css +65 -0
  496. package/dist/charts.cjs +0 -268
  497. package/dist/charts.cjs.map +0 -1
  498. package/dist/charts.d.cts +0 -181
  499. package/dist/constants-D3gaMY-W.d.cts +0 -39
  500. package/dist/editors.cjs +0 -2440
  501. package/dist/editors.cjs.map +0 -1
  502. package/dist/editors.d.cts +0 -165
  503. package/dist/icons.cjs +0 -23888
  504. package/dist/icons.cjs.map +0 -1
  505. package/dist/icons.d.cts +0 -20
  506. package/dist/index.cjs +0 -24894
  507. package/dist/index.cjs.map +0 -1
  508. package/dist/index.d.cts +0 -10438
  509. package/dist/markdown-editor.cjs +0 -4636
  510. package/dist/markdown-editor.cjs.map +0 -1
  511. package/dist/markdown-editor.d.cts +0 -75
  512. package/dist/mermaid.cjs +0 -1138
  513. package/dist/mermaid.cjs.map +0 -1
  514. package/dist/mermaid.d.cts +0 -15
  515. package/dist/rjsf.cjs +0 -10893
  516. package/dist/rjsf.cjs.map +0 -1
  517. package/dist/rjsf.d.cts +0 -55
  518. package/dist/testing.cjs +0 -373
  519. package/dist/testing.cjs.map +0 -1
  520. package/dist/testing.d.cts +0 -25
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/components/MergeEditor/helpers.ts","../src/components/MergeEditor/useMergeDiff.ts"],"names":[],"mappings":";;;;;AASO,IAAM,iBAAA,GAAoB,CAAC,OAAA,EAAiB,OAAA,KAAiC;AAClF,EAAA,MAAM,OAAA,GAAU,SAAA,CAAU,OAAA,EAAS,OAAO,CAAA;AAC1C,EAAA,MAAM,SAAsB,EAAC;AAC7B,EAAA,IAAI,OAAA,GAAU,CAAA;AACd,EAAA,IAAI,OAAA,GAAU,CAAA;AAEd,EAAA,KAAA,MAAW,UAAU,OAAA,EAAS;AAC5B,IAAA,IAAI,MAAA,CAAO,UAAU,EAAA,EAAI;AAEzB,IAAA,MAAM,SAAA,GAAY,MAAA,CAAO,KAAA,IAAS,MAAA,CAAO,KAAA,CAAM,OAAA,CAAQ,KAAA,EAAO,EAAE,CAAA,CAAE,KAAA,CAAM,IAAI,CAAA,CAAE,MAAA;AAE9E,IAAA,IAAI,OAAO,OAAA,EAAS;AAElB,MAAA,MAAA,CAAO,IAAA,CAAK;AAAA,QACV,MAAM,UAAA,CAAW,OAAA;AAAA,QACjB,OAAO,MAAA,CAAO,KAAA;AAAA,QACd,QAAA,EAAU,OAAA;AAAA,QACV,MAAA,EAAQ,UAAU,SAAA,GAAY,CAAA;AAAA,QAC9B,QAAA,EAAU,OAAA;AAAA,QACV,MAAA,EAAQ;AAAA,OACT,CAAA;AACD,MAAA,OAAA,IAAW,SAAA;AAAA,IACb,CAAA,MAAA,IAAW,OAAO,KAAA,EAAO;AAEvB,MAAA,MAAA,CAAO,IAAA,CAAK;AAAA,QACV,MAAM,UAAA,CAAW,KAAA;AAAA,QACjB,OAAO,MAAA,CAAO,KAAA;AAAA,QACd,QAAA,EAAU,OAAA;AAAA,QACV,MAAA,EAAQ,OAAA;AAAA,QACR,QAAA,EAAU,OAAA;AAAA,QACV,MAAA,EAAQ,UAAU,SAAA,GAAY;AAAA,OAC/B,CAAA;AACD,MAAA,OAAA,IAAW,SAAA;AAAA,IACb,CAAA,MAAO;AACL,MAAA,MAAA,CAAO,IAAA,CAAK;AAAA,QACV,MAAM,UAAA,CAAW,SAAA;AAAA,QACjB,OAAO,MAAA,CAAO,KAAA;AAAA,QACd,QAAA,EAAU,OAAA;AAAA,QACV,MAAA,EAAQ,UAAU,SAAA,GAAY,CAAA;AAAA,QAC9B,QAAA,EAAU,OAAA;AAAA,QACV,MAAA,EAAQ,UAAU,SAAA,GAAY;AAAA,OAC/B,CAAA;AACD,MAAA,OAAA,IAAW,SAAA;AACX,MAAA,OAAA,IAAW,SAAA;AAAA,IACb;AAAA,EACF;AAEA,EAAA,OAAO,MAAA;AACT,CAAA;AAMO,IAAM,qBAAA,GAAwB,CAAC,MAAA,EAAqB,IAAA,KAAqC;AAC9F,EAAA,MAAM,KAAA,uBAAY,GAAA,EAAY;AAE9B,EAAA,KAAA,MAAW,SAAS,MAAA,EAAQ;AAC1B,IAAA,IAAI,KAAA,CAAM,IAAA,KAAS,UAAA,CAAW,SAAA,EAAW;AAEzC,IAAA,IAAI,IAAA,KAAS,KAAA,IAAS,KAAA,CAAM,IAAA,KAAS,WAAW,OAAA,EAAS;AACvD,MAAA,KAAA,IAAS,CAAA,GAAI,MAAM,QAAA,EAAU,CAAA,IAAK,MAAM,MAAA,EAAQ,CAAA,EAAA,EAAK,KAAA,CAAM,GAAA,CAAI,CAAC,CAAA;AAAA,IAClE;AACA,IAAA,IAAI,IAAA,KAAS,KAAA,IAAS,KAAA,CAAM,IAAA,KAAS,WAAW,KAAA,EAAO;AACrD,MAAA,KAAA,IAAS,CAAA,GAAI,MAAM,QAAA,EAAU,CAAA,IAAK,MAAM,MAAA,EAAQ,CAAA,EAAA,EAAK,KAAA,CAAM,GAAA,CAAI,CAAC,CAAA;AAAA,IAClE;AAAA,EACF;AAEA,EAAA,OAAO,KAAA;AACT,CAAA;AASO,IAAM,sBAAA,GAAyB,CACpC,MAAA,EACA,IAAA,EACA,gBACA,eAAA,KACgB;AAChB,EAAA,MAAM,QAAA,uBAAe,GAAA,EAAY;AACjC,EAAA,KAAA,MAAW,IAAA,IAAQ,qBAAA,CAAsB,MAAA,EAAQ,IAAI,CAAA,EAAG;AACtD,IAAA,IAAI,cAAA,CAAe,GAAA,CAAI,IAAI,CAAA,IAAK,CAAC,eAAA,CAAgB,GAAA,CAAI,IAAI,CAAA,EAAG,QAAA,CAAS,GAAA,CAAI,IAAI,CAAA;AAAA,EAC/E;AACA,EAAA,OAAO,QAAA;AACT,CAAA;AAMO,IAAM,YAAA,GAAe,CAC1B,IAAA,EACA,SAAA,EACA,SACA,WAAA,KACW;AACX,EAAA,MAAM,KAAA,GAAQ,IAAA,CAAK,KAAA,CAAM,IAAI,CAAA;AAC7B,EAAA,MAAM,MAAA,GAAS,KAAA,CAAM,KAAA,CAAM,CAAA,EAAG,YAAY,CAAC,CAAA;AAC3C,EAAA,MAAM,KAAA,GAAQ,SAAA,GAAY,OAAA,GAAU,KAAA,CAAM,KAAA,CAAM,YAAY,CAAC,CAAA,GAAI,KAAA,CAAM,KAAA,CAAM,OAAO,CAAA;AAEpF,EAAA,MAAM,cAAA,GAAiB,WAAA,KAAgB,EAAA,GAAK,EAAC,GAAI,WAAA,CAAY,OAAA,CAAQ,KAAA,EAAO,EAAE,CAAA,CAAE,KAAA,CAAM,IAAI,CAAA;AAE1F,EAAA,OAAO,CAAC,GAAG,MAAA,EAAQ,GAAG,gBAAgB,GAAG,KAAK,CAAA,CAAE,IAAA,CAAK,IAAI,CAAA;AAC3D,CAAA;;;ACpGA,IAAM,WAAA,GAAc,GAAA;AAYpB,IAAM,aAAA,GAAgB,CAAC,EAAA,EAAY,EAAA,EAAY,IAAY,EAAA,KAAe,EAAA,IAAM,MAAM,EAAA,IAAM,EAAA;AAE5F,IAAM,sBAAA,GAAyB,CAC7B,cAAA,EACA,KAAA,EACA,aACA,QAAA,KACgB;AAChB,EAAA,MAAM,KAAA,GAAQ,IAAI,GAAA,CAAI,cAAc,CAAA;AACpC,EAAA,KAAA,MAAW,QAAQ,KAAA,EAAO;AACxB,IAAA,IAAI,WAAA,CAAY,GAAA,CAAI,IAAA,CAAK,EAAE,CAAA,EAAG;AAC5B,MAAA,MAAM,CAAC,KAAA,EAAO,GAAG,CAAA,GAAI,SAAS,IAAI,CAAA;AAClC,MAAA,KAAA,IAAS,IAAI,KAAA,EAAO,CAAA,IAAK,KAAK,CAAA,EAAA,EAAK,KAAA,CAAM,IAAI,CAAC,CAAA;AAAA,IAChD;AAAA,EACF;AACA,EAAA,OAAO,KAAA;AACT,CAAA;AAEA,IAAM,sBAAA,GAAyB,CAC7B,SAAA,EACA,cAAA,EACA,cAAA,EACA,QAAA,EACA,QAAA,EACA,oBAAA,KAEA,SAAA,CAAU,MAAA,CAAO,CAAC,CAAA,KAAM;AACtB,EAAA,MAAM,CAAC,KAAA,EAAO,GAAG,CAAA,GAAI,SAAS,CAAC,CAAA;AAC/B,EAAA,IAAI,iBAAA,GAAoB,KAAA;AACxB,EAAA,IAAI,YAAA,GAAe,IAAA;AACnB,EAAA,KAAA,IAAS,CAAA,GAAI,KAAA,EAAO,CAAA,IAAK,GAAA,EAAK,CAAA,EAAA,EAAK;AACjC,IAAA,IAAI,cAAA,CAAe,GAAA,CAAI,CAAC,CAAA,EAAG,iBAAA,GAAoB,IAAA;AAC/C,IAAA,IAAI,CAAC,cAAA,CAAe,GAAA,CAAI,CAAC,GAAG,YAAA,GAAe,KAAA;AAAA,EAC7C;AACA,EAAA,IAAI,CAAC,iBAAA,IAAqB,YAAA,EAAc,OAAO,KAAA;AAE/C,EAAA,MAAM,IAAA,GAAO,SAAS,CAAC,CAAA;AACvB,EAAA,OAAO,CAAC,IAAA,IAAQ,CAAC,oBAAA,CAAqB,GAAA,CAAI,KAAK,EAAE,CAAA;AACnD,CAAC,CAAA;AAEI,IAAM,YAAA,GAAe,CAAC,QAAA,EAAkB,QAAA,EAAkB,SAAA,KAAsB;AACrF,EAAA,MAAM,CAAC,UAAA,EAAY,aAAa,CAAA,GAAI,SAAS,QAAQ,CAAA;AACrD,EAAA,MAAM,WAAA,GAAc,OAA6C,IAAI,CAAA;AACrE,EAAA,MAAM,CAAC,mBAAA,EAAqB,sBAAsB,CAAA,GAAI,SAAS,UAAU,CAAA;AACzE,EAAA,MAAM,CAAC,iBAAA,EAAmB,oBAAoB,CAAA,GAAI,QAAA;AAAA,IAChD,0BAAU,GAAA;AAAI,GAChB;AACA,EAAA,MAAM,CAAC,oBAAoB,qBAAqB,CAAA,GAAI,SAAsB,sBAAM,IAAI,KAAK,CAAA;AACzF,EAAA,MAAM,CAAC,qBAAqB,sBAAsB,CAAA,GAAI,SAAsB,sBAAM,IAAI,KAAK,CAAA;AAE3F,EAAA,MAAM,KAAA,GAAQ,YAAY,MAAM;AAC9B,IAAA,IAAI,YAAY,OAAA,EAAS;AACvB,MAAA,YAAA,CAAa,YAAY,OAAO,CAAA;AAChC,MAAA,WAAA,CAAY,OAAA,GAAU,IAAA;AAAA,IACxB;AAEA,IAAA,aAAA,CAAc,QAAQ,CAAA;AACtB,IAAA,sBAAA,CAAuB,QAAQ,CAAA;AAC/B,IAAA,oBAAA,iBAAqB,IAAI,KAAK,CAAA;AAC9B,IAAA,qBAAA,iBAAsB,IAAI,KAAK,CAAA;AAC/B,IAAA,sBAAA,iBAAuB,IAAI,KAAK,CAAA;AAAA,EAClC,CAAA,EAAG,CAAC,QAAQ,CAAC,CAAA;AAKb,EAAA,eAAA,CAAgB,MAAM;AACpB,IAAA,KAAA,EAAM;AAAA,EACR,CAAA,EAAG,CAAC,QAAA,EAAU,QAAA,EAAU,SAAS,CAAC,CAAA;AAGlC,EAAA,SAAA,CAAU,MAAM;AACd,IAAA,OAAO,MAAM;AACX,MAAA,IAAI,WAAA,CAAY,OAAA,EAAS,YAAA,CAAa,WAAA,CAAY,OAAO,CAAA;AAAA,IAC3D,CAAA;AAAA,EACF,CAAA,EAAG,EAAE,CAAA;AAEL,EAAA,MAAM,iBAAA,GAAoB,WAAA,CAAY,CAAC,KAAA,KAAkB;AACvD,IAAA,aAAA,CAAc,KAAK,CAAA;AAEnB,IAAA,IAAI,YAAY,OAAA,EAAS;AACvB,MAAA,YAAA,CAAa,YAAY,OAAO,CAAA;AAAA,IAClC;AAEA,IAAA,WAAA,CAAY,OAAA,GAAU,WAAW,MAAM;AACrC,MAAA,sBAAA,CAAuB,KAAK,CAAA;AAAA,IAC9B,GAAG,WAAW,CAAA;AAAA,EAChB,CAAA,EAAG,EAAE,CAAA;AAGL,EAAA,MAAM,cAAA,GAAiB,OAAA;AAAA,IACrB,MAAM,iBAAA,CAAkB,QAAA,EAAU,mBAAmB,CAAA;AAAA,IACrD,CAAC,UAAU,mBAAmB;AAAA,GAChC;AAGA,EAAA,MAAM,eAAA,GAAkB,OAAA;AAAA,IACtB,MAAM,iBAAA,CAAkB,mBAAA,EAAqB,SAAS,CAAA;AAAA,IACtD,CAAC,qBAAqB,SAAS;AAAA,GACjC;AAGA,EAAA,MAAM,aAAA,GAAgB,QAAQ,MAAM,uBAAA,CAAwB,cAAc,CAAA,EAAG,CAAC,cAAc,CAAC,CAAA;AAE7F,EAAA,MAAM,cAAA,GAAiB,QAAQ,MAAM,uBAAA,CAAwB,eAAe,CAAA,EAAG,CAAC,eAAe,CAAC,CAAA;AAGhG,EAAA,MAAM,UAAA,GAAa,OAAA,CAAQ,MAAM,iBAAA,CAAkB,QAAA,EAAU,QAAQ,CAAA,EAAG,CAAC,QAAA,EAAU,QAAQ,CAAC,CAAA;AAC5F,EAAA,MAAM,WAAA,GAAc,OAAA,CAAQ,MAAM,iBAAA,CAAkB,QAAA,EAAU,SAAS,CAAA,EAAG,CAAC,QAAA,EAAU,SAAS,CAAC,CAAA;AAE/F,EAAA,MAAM,EAAE,kBAAA,EAAoB,mBAAA,EAAqB,aAAA,EAAc,GAAI,QAAQ,MAAM;AAC/E,IAAA,MAAM,SAAA,GAAY,QAAA,CAAS,KAAA,CAAM,IAAI,CAAA;AACrC,IAAA,MAAM,SAAA,GAAY,QAAA,CAAS,KAAA,CAAM,IAAI,CAAA;AACrC,IAAA,MAAM,UAAA,GAAa,SAAA,CAAU,KAAA,CAAM,IAAI,CAAA;AAEvC,IAAA,MAAM,MAAA,GAAS,UAAA,CAAW,SAAA,EAAW,SAAA,EAAW,UAAU,CAAA;AAE1D,IAAA,MAAM,mBAAA,uBAA0B,GAAA,EAAY;AAC5C,IAAA,MAAM,oBAAA,uBAA2B,GAAA,EAAY;AAC7C,IAAA,MAAM,QAAwB,EAAC;AAE/B,IAAA,KAAA,MAAW,SAAS,MAAA,EAAQ;AAC1B,MAAA,IAAI,UAAA,IAAc,KAAA,IAAS,KAAA,CAAM,QAAA,EAAU;AACzC,QAAA,MAAM,EAAE,CAAA,EAAG,MAAA,EAAQ,CAAA,EAAG,MAAA,KAAW,KAAA,CAAM,QAAA;AACvC,QAAA,KAAA,IAAS,CAAA,GAAI,CAAA,EAAG,CAAA,GAAI,CAAA,CAAE,MAAA,EAAQ,KAAK,mBAAA,CAAoB,GAAA,CAAI,MAAA,GAAS,CAAA,GAAI,CAAC,CAAA;AACzE,QAAA,KAAA,IAAS,CAAA,GAAI,CAAA,EAAG,CAAA,GAAI,CAAA,CAAE,MAAA,EAAQ,KAAK,oBAAA,CAAqB,GAAA,CAAI,MAAA,GAAS,CAAA,GAAI,CAAC,CAAA;AAE1E,QAAA,KAAA,CAAM,IAAA,CAAK;AAAA,UACT,EAAA,EAAI,CAAA,KAAA,EAAQ,MAAM,CAAA,CAAA,EAAI,MAAM,CAAA,CAAA;AAAA,UAC5B,WAAW,MAAA,GAAS,CAAA;AAAA,UACpB,OAAA,EAAS,SAAS,CAAA,CAAE,MAAA;AAAA,UACpB,YAAY,MAAA,GAAS,CAAA;AAAA,UACrB,QAAA,EAAU,SAAS,CAAA,CAAE;AAAA,SACtB,CAAA;AAAA,MACH;AAAA,IACF;AAEA,IAAA,MAAM,WAAA,GAAc,qBAAA,CAAsB,UAAA,EAAY,KAAK,CAAA;AAC3D,IAAA,MAAM,YAAA,GAAe,qBAAA,CAAsB,WAAA,EAAa,KAAK,CAAA;AAE7D,IAAA,MAAM,OAAA,uBAAc,GAAA,EAAkC;AACtD,IAAA,KAAA,MAAW,QAAQ,WAAA,EAAa;AAC9B,MAAA,OAAA,CAAQ,GAAA,CAAI,MAAM,mBAAA,CAAoB,GAAA,CAAI,IAAI,CAAA,GAAI,YAAA,CAAa,QAAA,GAAW,YAAA,CAAa,IAAI,CAAA;AAAA,IAC7F;AAEA,IAAA,MAAM,QAAA,uBAAe,GAAA,EAAkC;AACvD,IAAA,KAAA,MAAW,QAAQ,YAAA,EAAc;AAC/B,MAAA,QAAA,CAAS,GAAA;AAAA,QACP,IAAA;AAAA,QACA,qBAAqB,GAAA,CAAI,IAAI,CAAA,GAAI,YAAA,CAAa,WAAW,YAAA,CAAa;AAAA,OACxE;AAAA,IACF;AAEA,IAAA,OAAO;AAAA,MACL,kBAAA,EAAoB,OAAA;AAAA,MACpB,mBAAA,EAAqB,QAAA;AAAA,MACrB,aAAA,EAAe;AAAA,KACjB;AAAA,EACF,GAAG,CAAC,QAAA,EAAU,UAAU,SAAA,EAAW,UAAA,EAAY,WAAW,CAAC,CAAA;AAE3D,EAAA,MAAM,eAAA,GAAkB,WAAA;AAAA,IACtB,CAAC,aACC,aAAA,CAAc,IAAA;AAAA,MAAK,CAAC,CAAA,KAClB,aAAA,CAAc,QAAA,CAAS,YAAA,EAAc,SAAS,UAAA,EAAY,CAAA,CAAE,SAAA,EAAW,CAAA,CAAE,OAAO;AAAA,KAClF;AAAA,IACF,CAAC,aAAa;AAAA,GAChB;AAEA,EAAA,MAAM,gBAAA,GAAmB,WAAA;AAAA,IACvB,CAAC,aACC,aAAA,CAAc,IAAA;AAAA,MAAK,CAAC,CAAA,KAClB,aAAA,CAAc,QAAA,CAAS,YAAA,EAAc,SAAS,UAAA,EAAY,CAAA,CAAE,UAAA,EAAY,CAAA,CAAE,QAAQ;AAAA,KACpF;AAAA,IACF,CAAC,aAAa;AAAA,GAChB;AAEA,EAAA,MAAM,gBAAA,GAAmB,WAAA,CAAY,CAAC,IAAA,EAAgC,IAAA,KAAe;AACnF,IAAA,IAAI,CAAC,IAAA,EAAM;AACX,IAAA,oBAAA,CAAqB,CAAC,IAAA,KAAS;AAC7B,MAAA,MAAM,IAAA,GAAO,IAAI,GAAA,CAAI,IAAI,CAAA;AACzB,MAAA,MAAM,KAAA,GAAQ,IAAI,GAAA,CAAI,IAAA,CAAK,IAAI,IAAA,CAAK,EAAE,CAAA,IAAK,EAAE,CAAA;AAC7C,MAAA,KAAA,CAAM,IAAI,IAAI,CAAA;AACd,MAAA,IAAA,CAAK,GAAA,CAAI,IAAA,CAAK,EAAA,EAAI,KAAK,CAAA;AACvB,MAAA,OAAO,IAAA;AAAA,IACT,CAAC,CAAA;AAAA,EACH,CAAA,EAAG,EAAE,CAAA;AAEL,EAAA,MAAM,mBAAA,GAAsB,WAAA;AAAA,IAC1B,CAAC,MAAgC,IAAA,KAAe;AAC9C,MAAA,IAAI,CAAC,MAAM,OAAO,KAAA;AAClB,MAAA,MAAM,SAAA,GAAY,IAAA,KAAS,MAAA,GAAS,OAAA,GAAU,MAAA;AAC9C,MAAA,OAAO,kBAAkB,GAAA,CAAI,IAAA,CAAK,EAAE,CAAA,EAAG,GAAA,CAAI,SAAS,CAAA,IAAK,KAAA;AAAA,IAC3D,CAAA;AAAA,IACA,CAAC,iBAAiB;AAAA,GACpB;AAEA,EAAA,MAAM,UAAA,GAAa,WAAA;AAAA,IACjB,CAAC,UAAyB,IAAA,KAAe;AACvC,MAAA,MAAM,QAAA,GAAW,IAAA,KAAS,MAAA,GAAS,eAAA,GAAkB,gBAAA;AACrD,MAAA,MAAM,IAAA,GAAO,SAAS,QAAQ,CAAA;AAC9B,MAAA,MAAM,aAAA,GAAgB,mBAAA,CAAoB,IAAA,EAAM,IAAI,CAAA;AACpD,MAAA,MAAM,WAAA,GAAc,IAAA,KAAS,MAAA,GAAS,QAAA,CAAS,WAAW,QAAA,CAAS,QAAA;AACnE,MAAA,MAAM,WAAA,GAAc,IAAA,KAAS,MAAA,GAAS,QAAA,CAAS,eAAe,QAAA,CAAS,YAAA;AACvE,MAAA,MAAM,SAAA,GAAY,IAAA,KAAS,MAAA,GAAS,QAAA,CAAS,aAAa,QAAA,CAAS,UAAA;AAEnE,MAAA,IAAI,YAAY,OAAA,EAAS;AACvB,QAAA,YAAA,CAAa,YAAY,OAAO,CAAA;AAChC,QAAA,WAAA,CAAY,OAAA,GAAU,IAAA;AAAA,MACxB;AAEA,MAAA,MAAM,mBACJ,IAAA,KAAS,MAAA,GAAS,SAAS,QAAA,KAAa,EAAA,GAAK,SAAS,QAAA,KAAa,EAAA;AACrE,MAAA,MAAM,QAAA,GAAW,gBACb,YAAA,CAAa,UAAA,EAAY,YAAY,CAAA,EAAG,SAAA,EAAW,WAAW,CAAA,GAC9D,gBAAA,GACE,aAAa,UAAA,EAAY,WAAA,EAAa,cAAc,CAAA,EAAG,WAAW,IAClE,YAAA,CAAa,UAAA,EAAY,WAAA,EAAa,SAAA,EAAW,WAAW,CAAA;AAElE,MAAA,aAAA,CAAc,QAAQ,CAAA;AACtB,MAAA,sBAAA,CAAuB,QAAQ,CAAA;AAC/B,MAAA,gBAAA,CAAiB,MAAM,IAAI,CAAA;AAE3B,MAAA,IAAI,CAAC,IAAA,EAAM;AAGT,QAAA,MAAM,gBAAA,GAAmB,IAAA,KAAS,MAAA,GAAS,qBAAA,GAAwB,sBAAA;AACnE,QAAA,MAAM,CAAC,SAAA,EAAW,OAAO,CAAA,GACvB,IAAA,KAAS,SACL,CAAC,QAAA,CAAS,YAAA,EAAc,QAAA,CAAS,UAAU,CAAA,GAC3C,CAAC,QAAA,CAAS,YAAA,EAAc,SAAS,UAAU,CAAA;AAEjD,QAAA,gBAAA,CAAiB,CAAC,IAAA,KAAS;AACzB,UAAA,MAAM,IAAA,GAAO,IAAI,GAAA,CAAI,IAAI,CAAA;AACzB,UAAA,KAAA,IAAS,IAAI,SAAA,EAAW,CAAA,IAAK,SAAS,CAAA,EAAA,EAAK,IAAA,CAAK,IAAI,CAAC,CAAA;AACrD,UAAA,OAAO,IAAA;AAAA,QACT,CAAC,CAAA;AAAA,MACH;AAAA,IACF,CAAA;AAAA,IACA,CAAC,UAAA,EAAY,eAAA,EAAiB,gBAAA,EAAkB,qBAAqB,gBAAgB;AAAA,GACvF;AAEA,EAAA,MAAM,UAAA,GAAa,WAAA;AAAA,IACjB,CAAC,QAAA,KAA4B,UAAA,CAAW,QAAA,EAAU,MAAM,CAAA;AAAA,IACxD,CAAC,UAAU;AAAA,GACb;AAEA,EAAA,MAAM,WAAA,GAAc,WAAA;AAAA,IAClB,CAAC,QAAA,KAA4B,UAAA,CAAW,QAAA,EAAU,OAAO,CAAA;AAAA,IACzD,CAAC,UAAU;AAAA,GACb;AAEA,EAAA,MAAM,WAAA,GAAc,WAAA,CAAY,CAAC,QAAA,EAAyB,IAAA,KAAe;AACvE,IAAA,MAAM,YAAA,GAAe,IAAA,KAAS,MAAA,GAAS,qBAAA,GAAwB,sBAAA;AAC/D,IAAA,MAAM,CAAC,SAAA,EAAW,OAAO,CAAA,GACvB,IAAA,KAAS,SACL,CAAC,QAAA,CAAS,YAAA,EAAc,QAAA,CAAS,UAAU,CAAA,GAC3C,CAAC,QAAA,CAAS,YAAA,EAAc,SAAS,UAAU,CAAA;AAEjD,IAAA,YAAA,CAAa,CAAC,IAAA,KAAS;AACrB,MAAA,MAAM,IAAA,GAAO,IAAI,GAAA,CAAI,IAAI,CAAA;AACzB,MAAA,KAAA,IAAS,IAAI,SAAA,EAAW,CAAA,IAAK,SAAS,CAAA,EAAA,EAAK,IAAA,CAAK,IAAI,CAAC,CAAA;AACrD,MAAA,OAAO,IAAA;AAAA,IACT,CAAC,CAAA;AAAA,EACH,CAAA,EAAG,EAAE,CAAA;AAEL,EAAA,MAAM,WAAA,GAAc,WAAA;AAAA,IAClB,CAAC,QAAA,KAA4B,WAAA,CAAY,QAAA,EAAU,MAAM,CAAA;AAAA,IACzD,CAAC,WAAW;AAAA,GACd;AAEA,EAAA,MAAM,YAAA,GAAe,WAAA;AAAA,IACnB,CAAC,QAAA,KAA4B,WAAA,CAAY,QAAA,EAAU,OAAO,CAAA;AAAA,IAC1D,CAAC,WAAW;AAAA,GACd;AAEA,EAAA,MAAM,oBAAA,GAAuB,QAAQ,MAAM;AACzC,IAAA,MAAM,GAAA,uBAAU,GAAA,EAAY;AAC5B,IAAA,KAAA,MAAW,QAAQ,aAAA,EAAe;AAChC,MAAA,MAAM,YAAA,GAAe,kBAAkB,GAAA,CAAI,IAAA,CAAK,EAAE,CAAA,EAAG,GAAA,CAAI,MAAM,CAAA,IAAK,KAAA;AACpE,MAAA,MAAM,aAAA,GAAgB,kBAAkB,GAAA,CAAI,IAAA,CAAK,EAAE,CAAA,EAAG,GAAA,CAAI,OAAO,CAAA,IAAK,KAAA;AAEtE,MAAA,IAAI,aAAA,GAAgB,IAAA;AACpB,MAAA,KAAA,IAAS,IAAI,IAAA,CAAK,SAAA,EAAW,CAAA,IAAK,IAAA,CAAK,SAAS,CAAA,EAAA,EAAK;AACnD,QAAA,IAAI,CAAC,kBAAA,CAAmB,GAAA,CAAI,CAAC,CAAA,EAAG;AAC9B,UAAA,aAAA,GAAgB,KAAA;AAChB,UAAA;AAAA,QACF;AAAA,MACF;AAEA,MAAA,IAAI,cAAA,GAAiB,IAAA;AACrB,MAAA,KAAA,IAAS,IAAI,IAAA,CAAK,UAAA,EAAY,CAAA,IAAK,IAAA,CAAK,UAAU,CAAA,EAAA,EAAK;AACrD,QAAA,IAAI,CAAC,mBAAA,CAAoB,GAAA,CAAI,CAAC,CAAA,EAAG;AAC/B,UAAA,cAAA,GAAiB,KAAA;AACjB,UAAA;AAAA,QACF;AAAA,MACF;AAEA,MAAA,IAAA,CAAK,YAAA,IAAgB,aAAA,MAAmB,aAAA,IAAiB,cAAA,CAAA,EAAiB;AACxE,QAAA,GAAA,CAAI,GAAA,CAAI,KAAK,EAAE,CAAA;AAAA,MACjB;AAAA,IACF;AACA,IAAA,OAAO,GAAA;AAAA,EACT,GAAG,CAAC,aAAA,EAAe,iBAAA,EAAmB,kBAAA,EAAoB,mBAAmB,CAAC,CAAA;AAE9E,EAAA,MAAM,oBAAA,GAAuB,OAAA;AAAA,IAC3B,MACE,sBAAA;AAAA,MACE,aAAA;AAAA,MACA,kBAAA;AAAA,MACA,kBAAA;AAAA,MACA,CAAC,CAAA,KAAM,CAAC,CAAA,CAAE,YAAA,EAAc,EAAE,UAAU,CAAA;AAAA,MACpC,eAAA;AAAA,MACA;AAAA,KACF;AAAA,IACF,CAAC,aAAA,EAAe,kBAAA,EAAoB,kBAAA,EAAoB,iBAAiB,oBAAoB;AAAA,GAC/F;AAEA,EAAA,MAAM,qBAAA,GAAwB,OAAA;AAAA,IAC5B,MACE,sBAAA;AAAA,MACE,cAAA;AAAA,MACA,mBAAA;AAAA,MACA,mBAAA;AAAA,MACA,CAAC,CAAA,KAAM,CAAC,CAAA,CAAE,YAAA,EAAc,EAAE,UAAU,CAAA;AAAA,MACpC,gBAAA;AAAA,MACA;AAAA,KACF;AAAA,IACF;AAAA,MACE,cAAA;AAAA,MACA,mBAAA;AAAA,MACA,mBAAA;AAAA,MACA,gBAAA;AAAA,MACA;AAAA;AACF,GACF;AAEA,EAAA,MAAM,mBAAA,GAAsB,OAAA;AAAA,IAC1B,MACE,sBAAA,CAAuB,kBAAA,EAAoB,aAAA,EAAe,oBAAA,EAAsB,CAAC,CAAA,KAAM;AAAA,MACrF,CAAA,CAAE,SAAA;AAAA,MACF,CAAA,CAAE;AAAA,KACH,CAAA;AAAA,IACH,CAAC,aAAA,EAAe,oBAAA,EAAsB,kBAAkB;AAAA,GAC1D;AAEA,EAAA,MAAM,oBAAA,GAAuB,OAAA;AAAA,IAC3B,MACE,sBAAA,CAAuB,mBAAA,EAAqB,aAAA,EAAe,oBAAA,EAAsB,CAAC,CAAA,KAAM;AAAA,MACtF,CAAA,CAAE,UAAA;AAAA,MACF,CAAA,CAAE;AAAA,KACH,CAAA;AAAA,IACH,CAAC,aAAA,EAAe,oBAAA,EAAsB,mBAAmB;AAAA,GAC3D;AAEA,EAAA,MAAM,EAAE,qBAAA,EAAuB,mBAAA,EAAoB,GAAI,QAAQ,MAAM;AACnE,IAAA,MAAM,cAAA,GAAiB,qBAAA,CAAsB,cAAA,EAAgB,KAAK,CAAA;AAClE,IAAA,MAAM,eAAA,GAAkB,qBAAA,CAAsB,eAAA,EAAiB,KAAK,CAAA;AAEpE,IAAA,MAAM,eAAA,uBAAsB,GAAA,EAAoB;AAEhD,IAAA,KAAA,MAAW,YAAY,aAAA,EAAe;AACpC,MAAA,MAAM,IAAA,GAAO,gBAAgB,QAAQ,CAAA;AACrC,MAAA,IAAI,IAAA,EAAM;AACR,QAAA,KAAA,IAAS,IAAI,QAAA,CAAS,YAAA,EAAc,CAAA,IAAK,QAAA,CAAS,YAAY,CAAA,EAAA,EAAK;AACjE,UAAA,eAAA,CAAgB,GAAA,CAAI,CAAA,EAAG,IAAA,CAAK,EAAE,CAAA;AAAA,QAChC;AAAA,MACF;AAAA,IACF;AAEA,IAAA,KAAA,MAAW,YAAY,cAAA,EAAgB;AACrC,MAAA,MAAM,IAAA,GAAO,iBAAiB,QAAQ,CAAA;AACtC,MAAA,IAAI,IAAA,EAAM;AACR,QAAA,KAAA,IAAS,IAAI,QAAA,CAAS,YAAA,EAAc,CAAA,IAAK,QAAA,CAAS,YAAY,CAAA,EAAA,EAAK;AACjE,UAAA,eAAA,CAAgB,GAAA,CAAI,CAAA,EAAG,IAAA,CAAK,EAAE,CAAA;AAAA,QAChC;AAAA,MACF;AAAA,IACF;AAIA,IAAA,MAAM,oBAAA,uBAA2B,GAAA,EAAY;AAE7C,IAAA,KAAA,MAAW,YAAY,aAAA,EAAe;AACpC,MAAA,IAAI,eAAA,CAAgB,QAAQ,CAAA,EAAG;AAC/B,MAAA,IAAI,QAAA,CAAS,YAAA,GAAe,QAAA,CAAS,UAAA,EAAY;AACjD,MAAA,IAAI,YAAA,GAAe,IAAA;AACnB,MAAA,KAAA,IAAS,IAAI,QAAA,CAAS,YAAA,EAAc,CAAA,IAAK,QAAA,CAAS,YAAY,CAAA,EAAA,EAAK;AACjE,QAAA,IAAI,CAAC,kBAAA,CAAmB,GAAA,CAAI,CAAC,CAAA,EAAG;AAC9B,UAAA,YAAA,GAAe,KAAA;AACf,UAAA;AAAA,QACF;AAAA,MACF;AACA,MAAA,IAAI,YAAA,EAAc;AAChB,QAAA,KAAA,IAAS,IAAI,QAAA,CAAS,YAAA,EAAc,CAAA,IAAK,QAAA,CAAS,YAAY,CAAA,EAAA,EAAK;AACjE,UAAA,oBAAA,CAAqB,IAAI,CAAC,CAAA;AAAA,QAC5B;AAAA,MACF;AAAA,IACF;AAEA,IAAA,KAAA,MAAW,YAAY,cAAA,EAAgB;AACrC,MAAA,IAAI,gBAAA,CAAiB,QAAQ,CAAA,EAAG;AAChC,MAAA,IAAI,QAAA,CAAS,YAAA,GAAe,QAAA,CAAS,UAAA,EAAY;AACjD,MAAA,IAAI,YAAA,GAAe,IAAA;AACnB,MAAA,KAAA,IAAS,IAAI,QAAA,CAAS,YAAA,EAAc,CAAA,IAAK,QAAA,CAAS,YAAY,CAAA,EAAA,EAAK;AACjE,QAAA,IAAI,CAAC,mBAAA,CAAoB,GAAA,CAAI,CAAC,CAAA,EAAG;AAC/B,UAAA,YAAA,GAAe,KAAA;AACf,UAAA;AAAA,QACF;AAAA,MACF;AACA,MAAA,IAAI,YAAA,EAAc;AAChB,QAAA,KAAA,IAAS,IAAI,QAAA,CAAS,YAAA,EAAc,CAAA,IAAK,QAAA,CAAS,YAAY,CAAA,EAAA,EAAK;AACjE,UAAA,oBAAA,CAAqB,IAAI,CAAC,CAAA;AAAA,QAC5B;AAAA,MACF;AAAA,IACF;AAEA,IAAA,MAAM,aAAA,uBAAoB,GAAA,EAAY;AACtC,IAAA,KAAA,MAAW,IAAA,IAAQ,cAAA,EAAgB,aAAA,CAAc,GAAA,CAAI,IAAI,CAAA;AACzD,IAAA,KAAA,MAAW,IAAA,IAAQ,eAAA,EAAiB,aAAA,CAAc,GAAA,CAAI,IAAI,CAAA;AAE1D,IAAA,MAAM,WAAA,uBAAkB,GAAA,EAAY;AACpC,IAAA,MAAM,cAAA,uBAAqB,GAAA,EAAkC;AAE7D,IAAA,KAAA,MAAW,QAAQ,aAAA,EAAe;AAChC,MAAA,IAAI,oBAAA,CAAqB,GAAA,CAAI,IAAI,CAAA,EAAG;AAEpC,MAAA,MAAM,MAAA,GAAS,eAAA,CAAgB,GAAA,CAAI,IAAI,CAAA;AACvC,MAAA,IAAI,MAAA,IAAU,oBAAA,CAAqB,GAAA,CAAI,MAAM,CAAA,EAAG;AAEhD,MAAA,WAAA,CAAY,IAAI,IAAI,CAAA;AACpB,MAAA,cAAA,CAAe,IAAI,IAAA,EAAM,MAAA,GAAS,YAAA,CAAa,QAAA,GAAW,aAAa,IAAI,CAAA;AAAA,IAC7E;AAEA,IAAA,OAAO,EAAE,qBAAA,EAAuB,WAAA,EAAa,mBAAA,EAAqB,cAAA,EAAe;AAAA,EACnF,CAAA,EAAG;AAAA,IACD,cAAA;AAAA,IACA,eAAA;AAAA,IACA,aAAA;AAAA,IACA,cAAA;AAAA,IACA,eAAA;AAAA,IACA,gBAAA;AAAA,IACA,oBAAA;AAAA,IACA,kBAAA;AAAA,IACA;AAAA,GACD,CAAA;AAED,EAAA,MAAM,oBAAA,GAAuB,OAAA;AAAA,IAC3B,MAAM,sBAAA,CAAuB,cAAA,EAAgB,KAAA,EAAO,oBAAoB,mBAAmB,CAAA;AAAA,IAC3F,CAAC,cAAA,EAAgB,kBAAA,EAAoB,mBAAmB;AAAA,GAC1D;AAEA,EAAA,MAAM,qBAAA,GAAwB,OAAA;AAAA,IAC5B,MAAM,sBAAA,CAAuB,eAAA,EAAiB,KAAA,EAAO,qBAAqB,oBAAoB,CAAA;AAAA,IAC9F,CAAC,eAAA,EAAiB,mBAAA,EAAqB,oBAAoB;AAAA,GAC7D;AAEA,EAAA,MAAM,oBAAA,GAAuB,QAAQ,MAAM;AACzC,IAAA,MAAM,QAAA,GAAW,qBAAqB,MAAA,CAAO,CAAC,MAAM,CAAC,eAAA,CAAgB,CAAC,CAAC,CAAA,CAAE,MAAA;AACzE,IAAA,MAAM,SAAA,GAAY,sBAAsB,MAAA,CAAO,CAAC,MAAM,CAAC,gBAAA,CAAiB,CAAC,CAAC,CAAA,CAAE,MAAA;AAC5E,IAAA,OAAO,QAAA,GAAW,SAAA;AAAA,EACpB,GAAG,CAAC,oBAAA,EAAsB,qBAAA,EAAuB,eAAA,EAAiB,gBAAgB,CAAC,CAAA;AAEnF,EAAA,OAAO;AAAA,IACL,UAAA;AAAA,IACA,iBAAA;AAAA,IACA,aAAA,EAAe,oBAAA;AAAA,IACf,cAAA,EAAgB,qBAAA;AAAA,IAChB,oBAAA;AAAA,IACA,qBAAA;AAAA,IACA,kBAAA;AAAA,IACA,mBAAA;AAAA,IACA,qBAAA;AAAA,IACA,mBAAA;AAAA,IACA,UAAA;AAAA,IACA,WAAA;AAAA,IACA,WAAA;AAAA,IACA,YAAA;AAAA,IACA,gBAAgB,aAAA,CAAc,MAAA;AAAA,IAC9B,mBAAmB,oBAAA,CAAqB,IAAA;AAAA,IACxC,oBAAA;AAAA,IACA,SAAS,UAAA,KAAe,QAAA,IAAY,mBAAmB,IAAA,GAAO,CAAA,IAAK,oBAAoB,IAAA,GAAO,CAAA;AAAA,IAC9F;AAAA,GACF;AACF;AAOA,IAAM,uBAAA,GAA0B,CAAC,MAAA,KAAyC;AACxE,EAAA,MAAM,YAA6B,EAAC;AACpC,EAAA,IAAI,CAAA,GAAI,CAAA;AAER,EAAA,OAAO,CAAA,GAAI,OAAO,MAAA,EAAQ;AACxB,IAAA,MAAM,KAAA,GAAQ,OAAO,CAAC,CAAA;AAEtB,IAAA,IAAI,KAAA,CAAM,IAAA,KAAS,UAAA,CAAW,SAAA,EAAW;AACvC,MAAA,CAAA,EAAA;AACA,MAAA;AAAA,IACF;AAEA,IAAA,IAAI,KAAA,CAAM,IAAA,KAAS,UAAA,CAAW,OAAA,EAAS;AACrC,MAAA,MAAM,IAAA,GAAO,MAAA,CAAO,CAAA,GAAI,CAAC,CAAA;AAEzB,MAAA,IAAI,IAAA,EAAM,IAAA,KAAS,UAAA,CAAW,KAAA,EAAO;AACnC,QAAA,SAAA,CAAU,IAAA,CAAK;AAAA,UACb,IAAI,CAAA,EAAG,KAAA,CAAM,QAAQ,CAAA,CAAA,EAAI,KAAK,QAAQ,CAAA,CAAA;AAAA,UACtC,UAAU,KAAA,CAAM,KAAA;AAAA,UAChB,cAAc,KAAA,CAAM,QAAA;AAAA,UACpB,YAAY,KAAA,CAAM,MAAA;AAAA,UAClB,UAAU,IAAA,CAAK,KAAA;AAAA,UACf,cAAc,IAAA,CAAK,QAAA;AAAA,UACnB,YAAY,IAAA,CAAK;AAAA,SAClB,CAAA;AACD,QAAA,CAAA,IAAK,CAAA;AAAA,MACP,CAAA,MAAO;AACL,QAAA,SAAA,CAAU,IAAA,CAAK;AAAA,UACb,EAAA,EAAI,CAAA,EAAG,KAAA,CAAM,QAAQ,CAAA,IAAA,CAAA;AAAA,UACrB,UAAU,KAAA,CAAM,KAAA;AAAA,UAChB,cAAc,KAAA,CAAM,QAAA;AAAA,UACpB,YAAY,KAAA,CAAM,MAAA;AAAA,UAClB,QAAA,EAAU,EAAA;AAAA,UACV,cAAc,KAAA,CAAM,QAAA;AAAA,UACpB,YAAY,KAAA,CAAM;AAAA,SACnB,CAAA;AACD,QAAA,CAAA,EAAA;AAAA,MACF;AAAA,IACF,CAAA,MAAO;AACL,MAAA,SAAA,CAAU,IAAA,CAAK;AAAA,QACb,EAAA,EAAI,CAAA,IAAA,EAAO,KAAA,CAAM,QAAQ,CAAA,CAAA;AAAA,QACzB,QAAA,EAAU,EAAA;AAAA,QACV,cAAc,KAAA,CAAM,QAAA;AAAA,QACpB,YAAY,KAAA,CAAM,QAAA;AAAA,QAClB,UAAU,KAAA,CAAM,KAAA;AAAA,QAChB,cAAc,KAAA,CAAM,QAAA;AAAA,QACpB,YAAY,KAAA,CAAM;AAAA,OACnB,CAAA;AACD,MAAA,CAAA,EAAA;AAAA,IACF;AAAA,EACF;AAEA,EAAA,OAAO,SAAA;AACT,CAAA","file":"chunk-BSQWZITZ.js","sourcesContent":["import { diffLines } from 'diff';\n\nimport { type ChangeClassification, CHUNK_TYPE, type DiffChunk } from './constants';\n\n/**\n * Computes diff chunks between oldText and newText using line-level diffing.\n * Adjacent removed+added pairs are kept as separate chunks so the consumer\n * can pair them into \"modifications\" for accept controls.\n */\nexport const computeDiffChunks = (oldText: string, newText: string): DiffChunk[] => {\n const changes = diffLines(oldText, newText);\n const chunks: DiffChunk[] = [];\n let oldLine = 1;\n let newLine = 1;\n\n for (const change of changes) {\n if (change.value === '') continue;\n\n const lineCount = change.count || change.value.replace(/\\n$/, '').split('\\n').length;\n\n if (change.removed) {\n // newStart/newEnd anchor to the current new-side position (insertion point) for alignment\n chunks.push({\n type: CHUNK_TYPE.REMOVED,\n value: change.value,\n oldStart: oldLine,\n oldEnd: oldLine + lineCount - 1,\n newStart: newLine,\n newEnd: newLine,\n });\n oldLine += lineCount;\n } else if (change.added) {\n // oldStart/oldEnd anchor to the current old-side position (insertion point) for alignment\n chunks.push({\n type: CHUNK_TYPE.ADDED,\n value: change.value,\n oldStart: oldLine,\n oldEnd: oldLine,\n newStart: newLine,\n newEnd: newLine + lineCount - 1,\n });\n newLine += lineCount;\n } else {\n chunks.push({\n type: CHUNK_TYPE.UNCHANGED,\n value: change.value,\n oldStart: oldLine,\n oldEnd: oldLine + lineCount - 1,\n newStart: newLine,\n newEnd: newLine + lineCount - 1,\n });\n oldLine += lineCount;\n newLine += lineCount;\n }\n }\n\n return chunks;\n};\n\n/**\n * Collects 1-indexed line numbers that are marked as changed (added or removed)\n * from a set of diff chunks. `side` determines which line range to use.\n */\nexport const getChangedLineNumbers = (chunks: DiffChunk[], side: 'old' | 'new'): Set<number> => {\n const lines = new Set<number>();\n\n for (const chunk of chunks) {\n if (chunk.type === CHUNK_TYPE.UNCHANGED) continue;\n\n if (side === 'old' && chunk.type === CHUNK_TYPE.REMOVED) {\n for (let i = chunk.oldStart; i <= chunk.oldEnd; i++) lines.add(i);\n }\n if (side === 'new' && chunk.type === CHUNK_TYPE.ADDED) {\n for (let i = chunk.newStart; i <= chunk.newEnd; i++) lines.add(i);\n }\n }\n\n return lines;\n};\n\n/**\n * Filters changed line numbers, keeping only those that are classified\n * and not suppressed (resolved/dismissed).\n *\n * `classification` and `suppressedLines` must be keyed by line numbers\n * from the same `side` (old-side lines for 'old', new-side lines for 'new').\n */\nexport const filterHighlightedLines = (\n chunks: DiffChunk[],\n side: 'old' | 'new',\n classification: Map<number, ChangeClassification>,\n suppressedLines: Set<number>,\n): Set<number> => {\n const filtered = new Set<number>();\n for (const line of getChangedLineNumbers(chunks, side)) {\n if (classification.has(line) && !suppressedLines.has(line)) filtered.add(line);\n }\n return filtered;\n};\n\n/**\n * Replaces lines in `text` between `startLine` and `endLine` (1-indexed, inclusive)\n * with `replacementLines`. If startLine > endLine, inserts before startLine.\n */\nexport const replaceLines = (\n text: string,\n startLine: number,\n endLine: number,\n replacement: string,\n): string => {\n const lines = text.split('\\n');\n const before = lines.slice(0, startLine - 1);\n const after = startLine > endLine ? lines.slice(startLine - 1) : lines.slice(endLine);\n\n const replacementArr = replacement === '' ? [] : replacement.replace(/\\n$/, '').split('\\n');\n\n return [...before, ...replacementArr, ...after].join('\\n');\n};\n","import { useCallback, useEffect, useLayoutEffect, useMemo, useRef, useState } from 'react';\nimport { diff3Merge } from 'node-diff3';\n\nimport {\n CHANGE_CLASS,\n type ChangeClassification,\n CHUNK_TYPE,\n type DiffChunk,\n type MergeConflict,\n} from './constants';\nimport {\n computeDiffChunks,\n filterHighlightedLines,\n getChangedLineNumbers,\n replaceLines,\n} from './helpers';\n\nconst DEBOUNCE_MS = 150;\n\ntype ConflictPair = {\n id: string;\n leftStart: number;\n leftEnd: number;\n rightStart: number;\n rightEnd: number;\n};\n\ntype Side = 'left' | 'right';\n\nconst rangesOverlap = (s1: number, e1: number, s2: number, e2: number) => s1 <= e2 && e1 >= s2;\n\nconst computeSuppressedLines = (\n dismissedLines: Set<number>,\n pairs: ConflictPair[],\n resolvedIds: Set<string>,\n getRange: (p: ConflictPair) => [number, number],\n): Set<number> => {\n const lines = new Set(dismissedLines);\n for (const pair of pairs) {\n if (resolvedIds.has(pair.id)) {\n const [start, end] = getRange(pair);\n for (let i = start; i <= end; i++) lines.add(i);\n }\n }\n return lines;\n};\n\nconst filterVisibleConflicts = (\n conflicts: MergeConflict[],\n classification: Map<number, ChangeClassification>,\n dismissedLines: Set<number>,\n getRange: (c: MergeConflict) => [number, number],\n findPair: (c: MergeConflict) => ConflictPair | undefined,\n fullyResolvedPairIds: Set<string>,\n): MergeConflict[] =>\n conflicts.filter((c) => {\n const [start, end] = getRange(c);\n let hasClassifiedLine = false;\n let allDismissed = true;\n for (let i = start; i <= end; i++) {\n if (classification.has(i)) hasClassifiedLine = true;\n if (!dismissedLines.has(i)) allDismissed = false;\n }\n if (!hasClassifiedLine || allDismissed) return false;\n\n const pair = findPair(c);\n return !pair || !fullyResolvedPairIds.has(pair.id);\n });\n\nexport const useMergeDiff = (baseText: string, leftText: string, rightText: string) => {\n const [mergeValue, setMergeValue] = useState(baseText);\n const debounceRef = useRef<ReturnType<typeof setTimeout> | null>(null);\n const [debouncedMergeValue, setDebouncedMergeValue] = useState(mergeValue);\n const [acceptedPairSides, setAcceptedPairSides] = useState<Map<string, Set<Side>>>(\n () => new Map(),\n );\n const [dismissedLeftLines, setDismissedLeftLines] = useState<Set<number>>(() => new Set());\n const [dismissedRightLines, setDismissedRightLines] = useState<Set<number>>(() => new Set());\n\n const reset = useCallback(() => {\n if (debounceRef.current) {\n clearTimeout(debounceRef.current);\n debounceRef.current = null;\n }\n\n setMergeValue(baseText);\n setDebouncedMergeValue(baseText);\n setAcceptedPairSides(new Map());\n setDismissedLeftLines(new Set());\n setDismissedRightLines(new Set());\n }, [baseText]);\n\n // Reset all state when input texts change (e.g. async data arrives).\n // useLayoutEffect prevents a one-frame flash of incorrect diff rendering\n // when mergeValue is still '' but the real texts have arrived.\n useLayoutEffect(() => {\n reset();\n }, [baseText, leftText, rightText]); // eslint-disable-line react-hooks/exhaustive-deps\n\n // Clean up debounce timer on unmount\n useEffect(() => {\n return () => {\n if (debounceRef.current) clearTimeout(debounceRef.current);\n };\n }, []);\n\n const handleMergeChange = useCallback((value: string) => {\n setMergeValue(value);\n\n if (debounceRef.current) {\n clearTimeout(debounceRef.current);\n }\n\n debounceRef.current = setTimeout(() => {\n setDebouncedMergeValue(value);\n }, DEBOUNCE_MS);\n }, []);\n\n // diff(production, mergeResult) — highlights for left pane\n const leftDiffChunks = useMemo(\n () => computeDiffChunks(leftText, debouncedMergeValue),\n [leftText, debouncedMergeValue],\n );\n\n // diff(mergeResult, branch) — highlights for right pane\n const rightDiffChunks = useMemo(\n () => computeDiffChunks(debouncedMergeValue, rightText),\n [debouncedMergeValue, rightText],\n );\n\n // Recompute conflict positions based on current merge value vs both sides\n const leftConflicts = useMemo(() => pairChunksIntoConflicts(leftDiffChunks), [leftDiffChunks]);\n\n const rightConflicts = useMemo(() => pairChunksIntoConflicts(rightDiffChunks), [rightDiffChunks]);\n\n // Base-vs-side diffs (stable unless source texts change)\n const leftVsBase = useMemo(() => computeDiffChunks(baseText, leftText), [baseText, leftText]);\n const rightVsBase = useMemo(() => computeDiffChunks(baseText, rightText), [baseText, rightText]);\n\n const { leftClassification, rightClassification, conflictPairs } = useMemo(() => {\n const baseLines = baseText.split('\\n');\n const leftLines = leftText.split('\\n');\n const rightLines = rightText.split('\\n');\n\n const result = diff3Merge(leftLines, baseLines, rightLines);\n\n const leftConflictLineSet = new Set<number>();\n const rightConflictLineSet = new Set<number>();\n const pairs: ConflictPair[] = [];\n\n for (const block of result) {\n if ('conflict' in block && block.conflict) {\n const { a, aIndex, b, bIndex } = block.conflict;\n for (let i = 0; i < a.length; i++) leftConflictLineSet.add(aIndex + i + 1);\n for (let i = 0; i < b.length; i++) rightConflictLineSet.add(bIndex + i + 1);\n\n pairs.push({\n id: `pair-${aIndex}-${bIndex}`,\n leftStart: aIndex + 1,\n leftEnd: aIndex + a.length,\n rightStart: bIndex + 1,\n rightEnd: bIndex + b.length,\n });\n }\n }\n\n const leftChanged = getChangedLineNumbers(leftVsBase, 'new');\n const rightChanged = getChangedLineNumbers(rightVsBase, 'new');\n\n const leftMap = new Map<number, ChangeClassification>();\n for (const line of leftChanged) {\n leftMap.set(line, leftConflictLineSet.has(line) ? CHANGE_CLASS.CONFLICT : CHANGE_CLASS.SAFE);\n }\n\n const rightMap = new Map<number, ChangeClassification>();\n for (const line of rightChanged) {\n rightMap.set(\n line,\n rightConflictLineSet.has(line) ? CHANGE_CLASS.CONFLICT : CHANGE_CLASS.SAFE,\n );\n }\n\n return {\n leftClassification: leftMap,\n rightClassification: rightMap,\n conflictPairs: pairs,\n };\n }, [baseText, leftText, rightText, leftVsBase, rightVsBase]);\n\n const findPairForLeft = useCallback(\n (conflict: MergeConflict) =>\n conflictPairs.find((p) =>\n rangesOverlap(conflict.oldStartLine, conflict.oldEndLine, p.leftStart, p.leftEnd),\n ),\n [conflictPairs],\n );\n\n const findPairForRight = useCallback(\n (conflict: MergeConflict) =>\n conflictPairs.find((p) =>\n rangesOverlap(conflict.newStartLine, conflict.newEndLine, p.rightStart, p.rightEnd),\n ),\n [conflictPairs],\n );\n\n const markSideAccepted = useCallback((pair: ConflictPair | undefined, side: Side) => {\n if (!pair) return;\n setAcceptedPairSides((prev) => {\n const next = new Map(prev);\n const sides = new Set(prev.get(pair.id) ?? []);\n sides.add(side);\n next.set(pair.id, sides);\n return next;\n });\n }, []);\n\n const isOtherSideAccepted = useCallback(\n (pair: ConflictPair | undefined, side: Side) => {\n if (!pair) return false;\n const otherSide = side === 'left' ? 'right' : 'left';\n return acceptedPairSides.get(pair.id)?.has(otherSide) ?? false;\n },\n [acceptedPairSides],\n );\n\n const acceptSide = useCallback(\n (conflict: MergeConflict, side: Side) => {\n const findPair = side === 'left' ? findPairForLeft : findPairForRight;\n const pair = findPair(conflict);\n const otherAccepted = isOtherSideAccepted(pair, side);\n const sourceValue = side === 'left' ? conflict.oldValue : conflict.newValue;\n const targetStart = side === 'left' ? conflict.newStartLine : conflict.oldStartLine;\n const targetEnd = side === 'left' ? conflict.newEndLine : conflict.oldEndLine;\n\n if (debounceRef.current) {\n clearTimeout(debounceRef.current);\n debounceRef.current = null;\n }\n\n const mergeTargetEmpty =\n side === 'left' ? conflict.newValue === '' : conflict.oldValue === '';\n const newValue = otherAccepted\n ? replaceLines(mergeValue, targetEnd + 1, targetEnd, sourceValue)\n : mergeTargetEmpty\n ? replaceLines(mergeValue, targetStart, targetStart - 1, sourceValue)\n : replaceLines(mergeValue, targetStart, targetEnd, sourceValue);\n\n setMergeValue(newValue);\n setDebouncedMergeValue(newValue);\n markSideAccepted(pair, side);\n\n if (!pair) {\n // Dismiss the source side-pane lines so the change doesn't reappear\n // if the user later edits the accepted text in the merge pane\n const setDismissedSide = side === 'left' ? setDismissedLeftLines : setDismissedRightLines;\n const [sideStart, sideEnd] =\n side === 'left'\n ? [conflict.oldStartLine, conflict.oldEndLine]\n : [conflict.newStartLine, conflict.newEndLine];\n\n setDismissedSide((prev) => {\n const next = new Set(prev);\n for (let i = sideStart; i <= sideEnd; i++) next.add(i);\n return next;\n });\n }\n },\n [mergeValue, findPairForLeft, findPairForRight, isOtherSideAccepted, markSideAccepted],\n );\n\n const acceptLeft = useCallback(\n (conflict: MergeConflict) => acceptSide(conflict, 'left'),\n [acceptSide],\n );\n\n const acceptRight = useCallback(\n (conflict: MergeConflict) => acceptSide(conflict, 'right'),\n [acceptSide],\n );\n\n const dismissSide = useCallback((conflict: MergeConflict, side: Side) => {\n const setDismissed = side === 'left' ? setDismissedLeftLines : setDismissedRightLines;\n const [sideStart, sideEnd] =\n side === 'left'\n ? [conflict.oldStartLine, conflict.oldEndLine]\n : [conflict.newStartLine, conflict.newEndLine];\n\n setDismissed((prev) => {\n const next = new Set(prev);\n for (let i = sideStart; i <= sideEnd; i++) next.add(i);\n return next;\n });\n }, []);\n\n const dismissLeft = useCallback(\n (conflict: MergeConflict) => dismissSide(conflict, 'left'),\n [dismissSide],\n );\n\n const dismissRight = useCallback(\n (conflict: MergeConflict) => dismissSide(conflict, 'right'),\n [dismissSide],\n );\n\n const fullyResolvedPairIds = useMemo(() => {\n const ids = new Set<string>();\n for (const pair of conflictPairs) {\n const leftAccepted = acceptedPairSides.get(pair.id)?.has('left') ?? false;\n const rightAccepted = acceptedPairSides.get(pair.id)?.has('right') ?? false;\n\n let leftDismissed = true;\n for (let i = pair.leftStart; i <= pair.leftEnd; i++) {\n if (!dismissedLeftLines.has(i)) {\n leftDismissed = false;\n break;\n }\n }\n\n let rightDismissed = true;\n for (let i = pair.rightStart; i <= pair.rightEnd; i++) {\n if (!dismissedRightLines.has(i)) {\n rightDismissed = false;\n break;\n }\n }\n\n if ((leftAccepted || leftDismissed) && (rightAccepted || rightDismissed)) {\n ids.add(pair.id);\n }\n }\n return ids;\n }, [conflictPairs, acceptedPairSides, dismissedLeftLines, dismissedRightLines]);\n\n const visibleLeftConflicts = useMemo(\n () =>\n filterVisibleConflicts(\n leftConflicts,\n leftClassification,\n dismissedLeftLines,\n (c) => [c.oldStartLine, c.oldEndLine],\n findPairForLeft,\n fullyResolvedPairIds,\n ),\n [leftConflicts, leftClassification, dismissedLeftLines, findPairForLeft, fullyResolvedPairIds],\n );\n\n const visibleRightConflicts = useMemo(\n () =>\n filterVisibleConflicts(\n rightConflicts,\n rightClassification,\n dismissedRightLines,\n (c) => [c.newStartLine, c.newEndLine],\n findPairForRight,\n fullyResolvedPairIds,\n ),\n [\n rightConflicts,\n rightClassification,\n dismissedRightLines,\n findPairForRight,\n fullyResolvedPairIds,\n ],\n );\n\n const suppressedLeftLines = useMemo(\n () =>\n computeSuppressedLines(dismissedLeftLines, conflictPairs, fullyResolvedPairIds, (p) => [\n p.leftStart,\n p.leftEnd,\n ]),\n [conflictPairs, fullyResolvedPairIds, dismissedLeftLines],\n );\n\n const suppressedRightLines = useMemo(\n () =>\n computeSuppressedLines(dismissedRightLines, conflictPairs, fullyResolvedPairIds, (p) => [\n p.rightStart,\n p.rightEnd,\n ]),\n [conflictPairs, fullyResolvedPairIds, dismissedRightLines],\n );\n\n const { mergeHighlightedLines, mergeClassification } = useMemo(() => {\n const mergeLeftLines = getChangedLineNumbers(leftDiffChunks, 'new');\n const mergeRightLines = getChangedLineNumbers(rightDiffChunks, 'old');\n\n const mergeLineToPair = new Map<number, string>();\n\n for (const conflict of leftConflicts) {\n const pair = findPairForLeft(conflict);\n if (pair) {\n for (let i = conflict.newStartLine; i <= conflict.newEndLine; i++) {\n mergeLineToPair.set(i, pair.id);\n }\n }\n }\n\n for (const conflict of rightConflicts) {\n const pair = findPairForRight(conflict);\n if (pair) {\n for (let i = conflict.oldStartLine; i <= conflict.oldEndLine; i++) {\n mergeLineToPair.set(i, pair.id);\n }\n }\n }\n\n // Derive suppressed merge lines from side-pane dismissals.\n // Side texts are static, so their line numbers never go stale.\n const suppressedMergeLines = new Set<number>();\n\n for (const conflict of leftConflicts) {\n if (findPairForLeft(conflict)) continue;\n if (conflict.oldStartLine > conflict.oldEndLine) continue;\n let allDismissed = true;\n for (let i = conflict.oldStartLine; i <= conflict.oldEndLine; i++) {\n if (!dismissedLeftLines.has(i)) {\n allDismissed = false;\n break;\n }\n }\n if (allDismissed) {\n for (let i = conflict.newStartLine; i <= conflict.newEndLine; i++) {\n suppressedMergeLines.add(i);\n }\n }\n }\n\n for (const conflict of rightConflicts) {\n if (findPairForRight(conflict)) continue;\n if (conflict.newStartLine > conflict.newEndLine) continue;\n let allDismissed = true;\n for (let i = conflict.newStartLine; i <= conflict.newEndLine; i++) {\n if (!dismissedRightLines.has(i)) {\n allDismissed = false;\n break;\n }\n }\n if (allDismissed) {\n for (let i = conflict.oldStartLine; i <= conflict.oldEndLine; i++) {\n suppressedMergeLines.add(i);\n }\n }\n }\n\n const allMergeLines = new Set<number>();\n for (const line of mergeLeftLines) allMergeLines.add(line);\n for (const line of mergeRightLines) allMergeLines.add(line);\n\n const highlighted = new Set<number>();\n const classification = new Map<number, ChangeClassification>();\n\n for (const line of allMergeLines) {\n if (suppressedMergeLines.has(line)) continue;\n\n const pairId = mergeLineToPair.get(line);\n if (pairId && fullyResolvedPairIds.has(pairId)) continue;\n\n highlighted.add(line);\n classification.set(line, pairId ? CHANGE_CLASS.CONFLICT : CHANGE_CLASS.SAFE);\n }\n\n return { mergeHighlightedLines: highlighted, mergeClassification: classification };\n }, [\n leftDiffChunks,\n rightDiffChunks,\n leftConflicts,\n rightConflicts,\n findPairForLeft,\n findPairForRight,\n fullyResolvedPairIds,\n dismissedLeftLines,\n dismissedRightLines,\n ]);\n\n const leftHighlightedLines = useMemo(\n () => filterHighlightedLines(leftDiffChunks, 'old', leftClassification, suppressedLeftLines),\n [leftDiffChunks, leftClassification, suppressedLeftLines],\n );\n\n const rightHighlightedLines = useMemo(\n () => filterHighlightedLines(rightDiffChunks, 'new', rightClassification, suppressedRightLines),\n [rightDiffChunks, rightClassification, suppressedRightLines],\n );\n\n const remainingSafeChanges = useMemo(() => {\n const leftSafe = visibleLeftConflicts.filter((c) => !findPairForLeft(c)).length;\n const rightSafe = visibleRightConflicts.filter((c) => !findPairForRight(c)).length;\n return leftSafe + rightSafe;\n }, [visibleLeftConflicts, visibleRightConflicts, findPairForLeft, findPairForRight]);\n\n return {\n mergeValue,\n handleMergeChange,\n leftConflicts: visibleLeftConflicts,\n rightConflicts: visibleRightConflicts,\n leftHighlightedLines,\n rightHighlightedLines,\n leftClassification,\n rightClassification,\n mergeHighlightedLines,\n mergeClassification,\n acceptLeft,\n acceptRight,\n dismissLeft,\n dismissRight,\n totalConflicts: conflictPairs.length,\n resolvedConflicts: fullyResolvedPairIds.size,\n remainingSafeChanges,\n isDirty: mergeValue !== baseText || dismissedLeftLines.size > 0 || dismissedRightLines.size > 0,\n reset,\n };\n};\n\n/**\n * Pairs adjacent removed+added chunks into MergeConflicts.\n * A standalone REMOVED or ADDED chunk becomes a conflict with\n * the other side empty.\n */\nconst pairChunksIntoConflicts = (chunks: DiffChunk[]): MergeConflict[] => {\n const conflicts: MergeConflict[] = [];\n let i = 0;\n\n while (i < chunks.length) {\n const chunk = chunks[i]!;\n\n if (chunk.type === CHUNK_TYPE.UNCHANGED) {\n i++;\n continue;\n }\n\n if (chunk.type === CHUNK_TYPE.REMOVED) {\n const next = chunks[i + 1];\n\n if (next?.type === CHUNK_TYPE.ADDED) {\n conflicts.push({\n id: `${chunk.oldStart}-${next.newStart}`,\n oldValue: chunk.value,\n oldStartLine: chunk.oldStart,\n oldEndLine: chunk.oldEnd,\n newValue: next.value,\n newStartLine: next.newStart,\n newEndLine: next.newEnd,\n });\n i += 2;\n } else {\n conflicts.push({\n id: `${chunk.oldStart}-del`,\n oldValue: chunk.value,\n oldStartLine: chunk.oldStart,\n oldEndLine: chunk.oldEnd,\n newValue: '',\n newStartLine: chunk.newStart,\n newEndLine: chunk.newStart,\n });\n i++;\n }\n } else {\n conflicts.push({\n id: `add-${chunk.newStart}`,\n oldValue: '',\n oldStartLine: chunk.oldStart,\n oldEndLine: chunk.oldStart,\n newValue: chunk.value,\n newStartLine: chunk.newStart,\n newEndLine: chunk.newEnd,\n });\n i++;\n }\n }\n\n return conflicts;\n};\n"]}
@@ -0,0 +1,23 @@
1
+ import { DropdownMenu } from './chunk-ERAHK5YQ.js';
2
+ import { Button } from './chunk-IXAYNBOY.js';
3
+ import { Download } from './chunk-RQVK4IYC.js';
4
+ import { Tooltip } from './chunk-SWQFYNYG.js';
5
+ import { jsxs, jsx } from 'react/jsx-runtime';
6
+
7
+ var ExportMenu = ({ items, label, size = "icon-sm" }) => /* @__PURE__ */ jsxs(DropdownMenu, { children: [
8
+ /* @__PURE__ */ jsx(Tooltip, { tooltip: label, placement: "top", triggerAsChild: true, children: /* @__PURE__ */ jsx(DropdownMenu.Trigger, { asChild: true, children: /* @__PURE__ */ jsx(
9
+ Button,
10
+ {
11
+ size,
12
+ variant: "outline",
13
+ "aria-label": label,
14
+ className: "tw:data-[state=open]:!bg-primary/10 tw:data-[state=open]:!text-primary",
15
+ children: /* @__PURE__ */ jsx(Download, { className: "tw:size-4" })
16
+ }
17
+ ) }) }),
18
+ /* @__PURE__ */ jsx(DropdownMenu.Content, { align: "end", children: items.map((item, index) => /* @__PURE__ */ jsx(DropdownMenu.Item, { onSelect: item.onSelect, children: item.label }, index)) })
19
+ ] });
20
+
21
+ export { ExportMenu };
22
+ //# sourceMappingURL=chunk-D3LAIK62.js.map
23
+ //# sourceMappingURL=chunk-D3LAIK62.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/blocks/ExportMenu/ExportMenu.tsx"],"names":[],"mappings":";;;;;;AA4BO,IAAM,UAAA,GAAa,CAAC,EAAE,KAAA,EAAO,OAAO,IAAA,GAAO,SAAA,EAAU,qBAC1D,IAAA,CAAC,YAAA,EAAA,EACC,QAAA,EAAA;AAAA,kBAAA,GAAA,CAAC,OAAA,EAAA,EAAQ,OAAA,EAAS,KAAA,EAAO,SAAA,EAAU,KAAA,EAAM,cAAA,EAAc,IAAA,EACrD,QAAA,kBAAA,GAAA,CAAC,YAAA,CAAa,OAAA,EAAb,EAAqB,OAAA,EAAO,IAAA,EAC3B,QAAA,kBAAA,GAAA;AAAA,IAAC,MAAA;AAAA,IAAA;AAAA,MACC,IAAA;AAAA,MACA,OAAA,EAAQ,SAAA;AAAA,MACR,YAAA,EAAY,KAAA;AAAA,MAKZ,SAAA,EAAU,wEAAA;AAAA,MAEV,QAAA,kBAAA,GAAA,CAAC,QAAA,EAAA,EAAS,SAAA,EAAU,WAAA,EAAY;AAAA;AAAA,KAEpC,CAAA,EACF,CAAA;AAAA,kBACA,GAAA,CAAC,aAAa,OAAA,EAAb,EAAqB,OAAM,KAAA,EAIzB,QAAA,EAAA,KAAA,CAAM,GAAA,CAAI,CAAC,IAAA,EAAM,KAAA,yBACf,YAAA,CAAa,IAAA,EAAb,EAA8B,QAAA,EAAU,IAAA,CAAK,UAC3C,QAAA,EAAA,IAAA,CAAK,KAAA,EAAA,EADgB,KAExB,CACD,CAAA,EACH;AAAA,CAAA,EACF","file":"chunk-D3LAIK62.js","sourcesContent":["import { Button } from '../../components/Button';\nimport { DropdownMenu } from '../../components/DropdownMenu';\nimport { Tooltip } from '../../components/Tooltip';\nimport { Download } from '../../icons';\n\nexport type ExportMenuItem = {\n /** Menu label, e.g. \"Download as CSV\". */\n label: string;\n onSelect: () => void;\n};\n\ntype Props = {\n items: ExportMenuItem[];\n /** Accessible name + tooltip for the trigger, e.g. \"Export table\". */\n label: string;\n size?: 'icon-xs' | 'icon-sm';\n};\n\n/**\n * Download-icon trigger with a menu of export formats.\n *\n * Lives in the root barrel rather than inside `ZoomableSvg` on purpose: that\n * component ships behind the lazy `@keboola/design/mermaid` boundary, and Radix's\n * menu is not in that chunk closure — importing it there would pull ~11 kB\n * brotlied of chunk-mates (`DropdownMenu` travels with `ButtonGroup` and `toast`,\n * which in turn pulls `ScrollArea`) plus two more external deps behind the lazy\n * boundary. Callers already paying for the barrel inject this instead.\n */\nexport const ExportMenu = ({ items, label, size = 'icon-sm' }: Props) => (\n <DropdownMenu>\n <Tooltip tooltip={label} placement=\"top\" triggerAsChild>\n <DropdownMenu.Trigger asChild>\n <Button\n size={size}\n variant=\"outline\"\n aria-label={label}\n // A menu trigger reads as active while its menu is open, and the argo\n // `outline` variant resets to the plain background when active\n // (`tw:hover:active:bg-background`). Re-assert the tint so an open\n // trigger stays highlighted instead of dropping back to plain.\n className=\"tw:data-[state=open]:!bg-primary/10 tw:data-[state=open]:!text-primary\"\n >\n <Download className=\"tw:size-4\" />\n </Button>\n </DropdownMenu.Trigger>\n </Tooltip>\n <DropdownMenu.Content align=\"end\">\n {/* Keyed by index, not label: labels aren't guaranteed unique on a public\n export (localized or dynamic text), and a duplicate key trips React's\n duplicate-key warning. */}\n {items.map((item, index) => (\n <DropdownMenu.Item key={index} onSelect={item.onSelect}>\n {item.label}\n </DropdownMenu.Item>\n ))}\n </DropdownMenu.Content>\n </DropdownMenu>\n);\n"]}
@@ -0,0 +1,155 @@
1
+ import { overlayTriggerVariants } from './chunk-NFHKYBRD.js';
2
+ import { TimePicker, parseTime, formatTime, pad } from './chunk-52NDNMK7.js';
3
+ import { Popover } from './chunk-ON4BJTHI.js';
4
+ import { Calendar } from './chunk-YI3WLXEN.js';
5
+ import { Button } from './chunk-IXAYNBOY.js';
6
+ import { ChevronDown } from './chunk-RQVK4IYC.js';
7
+ import { useArgoDesign } from './chunk-WETKNYZX.js';
8
+ import { cn } from './chunk-LXLIQ2D6.js';
9
+ import { useState } from 'react';
10
+ import { jsxs, jsx, Fragment } from 'react/jsx-runtime';
11
+
12
+ var timeOf = (date) => formatTime(date.getHours(), date.getMinutes());
13
+ var isoDate = (date) => `${date.getFullYear()}-${pad(date.getMonth() + 1)}-${pad(date.getDate())}`;
14
+ var formatRange = (range, format) => {
15
+ if (!range?.from) return null;
16
+ return range.to ? `${format(range.from)} \u2192 ${format(range.to)}` : format(range.from);
17
+ };
18
+ var withHoursMinutes = (target, hour, minute) => {
19
+ const next = new Date(target);
20
+ next.setHours(hour, minute, 0, 0);
21
+ return next;
22
+ };
23
+ var withTimeOf = (target, source) => withHoursMinutes(target, source.getHours(), source.getMinutes());
24
+ var atTime = (target, time) => {
25
+ const { hour, minute } = parseTime(time);
26
+ return hour === null || minute === null ? target : withHoursMinutes(target, hour, minute);
27
+ };
28
+ var TimeField = ({ label, date, onChange }) => /* @__PURE__ */ jsxs("div", { className: "tw:flex tw:items-center tw:gap-2 tw:text-sm", children: [
29
+ /* @__PURE__ */ jsx("span", { className: "tw:text-muted-foreground", children: label }),
30
+ /* @__PURE__ */ jsx(TimePicker, { selected: date ? timeOf(date) : null, onSelect: onChange, children: /* @__PURE__ */ jsx(Button, { variant: "outline", size: "small", disabled: !date, "aria-label": `${label} time`, children: date ? timeOf(date) : "--:--" }) })
31
+ ] });
32
+ var DateRangePicker = ({
33
+ align = "start",
34
+ alignOffset,
35
+ className,
36
+ defaultOpen,
37
+ disabled = false,
38
+ disabledDays,
39
+ formatDate,
40
+ label,
41
+ onChange,
42
+ onOpenChange,
43
+ onPresetSelect,
44
+ open,
45
+ placeholder = "Pick a date range",
46
+ presets,
47
+ requireApply = false,
48
+ sideOffset,
49
+ value,
50
+ variant,
51
+ withTime = false
52
+ }) => {
53
+ const isArgoDesign = useArgoDesign();
54
+ const [draft, setDraft] = useState(value);
55
+ const handleOpenChange = (nextOpen) => {
56
+ if (nextOpen) setDraft(value);
57
+ onOpenChange?.(nextOpen);
58
+ };
59
+ const current = requireApply ? draft : value;
60
+ const edit = (range) => {
61
+ if (requireApply) setDraft(range);
62
+ else onChange(range);
63
+ };
64
+ const handleSelect = (range) => {
65
+ if (!range?.from) {
66
+ edit(void 0);
67
+ return;
68
+ }
69
+ edit({
70
+ from: current?.from ? withTimeOf(range.from, current.from) : range.from,
71
+ to: range.to && current?.to ? withTimeOf(range.to, current.to) : range.to
72
+ });
73
+ };
74
+ const format = formatDate ?? ((date) => withTime ? `${isoDate(date)} ${timeOf(date)}` : isoDate(date));
75
+ const triggerLabel = label ?? formatRange(value, format);
76
+ return /* @__PURE__ */ jsxs(Popover, { open, defaultOpen, onOpenChange: handleOpenChange, children: [
77
+ /* @__PURE__ */ jsxs(
78
+ Popover.Trigger,
79
+ {
80
+ disabled,
81
+ className: cn(
82
+ overlayTriggerVariants({ variant: isArgoDesign ? "argo" : variant, sizing: "medium" }),
83
+ className
84
+ ),
85
+ children: [
86
+ /* @__PURE__ */ jsx("span", { className: cn("tw:truncate", !triggerLabel && "tw:text-muted-foreground"), children: triggerLabel ?? placeholder }),
87
+ /* @__PURE__ */ jsx(ChevronDown, { className: "tw:size-4 tw:text-muted-foreground" })
88
+ ]
89
+ }
90
+ ),
91
+ /* @__PURE__ */ jsxs(
92
+ Popover.Content,
93
+ {
94
+ align,
95
+ alignOffset,
96
+ sideOffset,
97
+ className: "tw:w-auto tw:p-0",
98
+ children: [
99
+ /* @__PURE__ */ jsxs("div", { className: "tw:flex", children: [
100
+ presets && presets.length > 0 ? /* @__PURE__ */ jsx("div", { className: "tw:flex tw:flex-col tw:gap-1 tw:border-r tw:border-solid tw:border-border tw:p-2", children: presets.map((preset) => /* @__PURE__ */ jsx(Popover.Close, { asChild: true, children: /* @__PURE__ */ jsx(
101
+ Button,
102
+ {
103
+ variant: "invisible",
104
+ size: "small",
105
+ className: "tw:justify-start",
106
+ onClick: () => onPresetSelect ? onPresetSelect(preset) : onChange(preset.range),
107
+ children: preset.label
108
+ }
109
+ ) }, preset.label)) }) : null,
110
+ /* @__PURE__ */ jsx(
111
+ Calendar,
112
+ {
113
+ mode: "range",
114
+ selected: current,
115
+ onSelect: handleSelect,
116
+ numberOfMonths: 2,
117
+ defaultMonth: current?.from,
118
+ disabled: disabledDays
119
+ }
120
+ )
121
+ ] }),
122
+ (withTime || requireApply) && /* @__PURE__ */ jsxs("div", { className: "tw:flex tw:items-center tw:gap-3 tw:border-t tw:border-solid tw:border-border tw:p-3", children: [
123
+ withTime && /* @__PURE__ */ jsxs(Fragment, { children: [
124
+ /* @__PURE__ */ jsx(
125
+ TimeField,
126
+ {
127
+ label: "From",
128
+ date: current?.from,
129
+ onChange: (time) => current?.from && edit({ ...current, from: atTime(current.from, time) })
130
+ }
131
+ ),
132
+ /* @__PURE__ */ jsx(
133
+ TimeField,
134
+ {
135
+ label: "To",
136
+ date: current?.to,
137
+ onChange: (time) => current?.to && edit({ ...current, to: atTime(current.to, time) })
138
+ }
139
+ )
140
+ ] }),
141
+ requireApply && /* @__PURE__ */ jsxs("div", { className: "tw:ml-auto tw:flex tw:gap-2", children: [
142
+ /* @__PURE__ */ jsx(Popover.Close, { asChild: true, children: /* @__PURE__ */ jsx(Button, { variant: "outline", size: "small", children: "Cancel" }) }),
143
+ /* @__PURE__ */ jsx(Popover.Close, { asChild: true, children: /* @__PURE__ */ jsx(Button, { size: "small", disabled: !draft?.from, onClick: () => onChange(draft), children: "Apply" }) })
144
+ ] })
145
+ ] })
146
+ ]
147
+ }
148
+ )
149
+ ] });
150
+ };
151
+ DateRangePicker.displayName = "DateRangePicker";
152
+
153
+ export { DateRangePicker };
154
+ //# sourceMappingURL=chunk-DODCR43C.js.map
155
+ //# sourceMappingURL=chunk-DODCR43C.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/components/DateRangePicker/DateRangePicker.tsx"],"names":[],"mappings":"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","file":"chunk-DODCR43C.js","sourcesContent":["import { useState } from 'react';\nimport type { ReactNode } from 'react';\nimport type { DateRange as DayPickerDateRange, Matcher } from 'react-day-picker';\nimport type { PopoverContentProps, PopoverProps } from '@radix-ui/react-popover';\nimport type { VariantProps } from 'class-variance-authority';\n\nimport { ChevronDown } from '../../icons';\nimport { cn } from '../../utils';\nimport { Button } from '../Button';\nimport { Calendar } from '../Calendar';\nimport { overlayTriggerVariants } from '../OverlayTrigger/styles';\nimport { Popover } from '../Popover';\nimport { useArgoDesign } from '../ThemeProvider/context';\nimport { TimePicker } from '../TimePicker';\nimport { formatTime, pad, parseTime } from '../TimePicker/utils';\n\nexport type DateRange = {\n from: Date;\n to?: Date;\n};\n\nexport type DateRangePreset = {\n label: string;\n /**\n * The range the preset stands for. A preset may omit it and carry `value` instead — or neither,\n * for a clear-the-range preset (\"All time\"): without `onPresetSelect`, picking one calls\n * `onChange(undefined)`.\n */\n range?: DateRange;\n /**\n * Echoed back through `onPresetSelect` instead of `range`. For consumers whose stored form of a\n * range is not two dates: a relative token the server resolves per request, such as `-7 days`.\n */\n value?: string;\n};\n\ntype DateRangePickerProps = {\n value: DateRange | undefined;\n onChange: (range: DateRange | undefined) => void;\n /**\n * Replaces the formatted range on the trigger entirely — the name of the active preset. For a\n * range in the app's own date style, prefer `formatDate`, which keeps the from → to join here.\n */\n label?: ReactNode;\n /**\n * Formats one end of the range on the trigger, replacing the built-in ISO format (which is\n * unambiguous but matches no app in particular, including the `withTime` time-of-day part).\n * The from → to join stays with the component.\n */\n formatDate?: (date: Date) => string;\n placeholder?: string;\n presets?: readonly DateRangePreset[];\n /** Called instead of `onChange` when a preset is picked, with the preset itself. */\n onPresetSelect?: (preset: DateRangePreset) => void;\n /** Adds a start/end time-of-day row; the emitted `from` / `to` then carry hours and minutes. */\n withTime?: boolean;\n /** Hold edits in a draft and emit only on Apply, so one range costs one `onChange`. */\n requireApply?: boolean;\n /** Days that cannot be picked, as a react-day-picker matcher — e.g. `{ after: new Date() }`. */\n disabledDays?: Matcher | Matcher[];\n variant?: Exclude<VariantProps<typeof overlayTriggerVariants>['variant'], 'argo'>;\n disabled?: boolean;\n className?: string;\n} & Pick<PopoverProps, 'open' | 'onOpenChange' | 'defaultOpen'> &\n Pick<PopoverContentProps, 'align' | 'alignOffset' | 'sideOffset'>;\n\nconst timeOf = (date: Date) => formatTime(date.getHours(), date.getMinutes());\n\nconst isoDate = (date: Date) =>\n `${date.getFullYear()}-${pad(date.getMonth() + 1)}-${pad(date.getDate())}`;\n\nconst formatRange = (\n range: DateRange | undefined,\n format: (date: Date) => string,\n): string | null => {\n if (!range?.from) return null;\n return range.to ? `${format(range.from)} → ${format(range.to)}` : format(range.from);\n};\n\nconst withHoursMinutes = (target: Date, hour: number, minute: number) => {\n const next = new Date(target);\n next.setHours(hour, minute, 0, 0);\n return next;\n};\n\nconst withTimeOf = (target: Date, source: Date) =>\n withHoursMinutes(target, source.getHours(), source.getMinutes());\n\n/** Returns `target` at `time` (\"HH:mm\"); unparseable input leaves it alone. */\nconst atTime = (target: Date, time: string) => {\n const { hour, minute } = parseTime(time);\n return hour === null || minute === null ? target : withHoursMinutes(target, hour, minute);\n};\n\ntype TimeFieldProps = {\n label: string;\n date: Date | undefined;\n onChange: (time: string) => void;\n};\n\n/** Time-of-day for one end of the range, on the same `TimePicker` the rest of the app uses. */\nconst TimeField = ({ label, date, onChange }: TimeFieldProps) => (\n <div className=\"tw:flex tw:items-center tw:gap-2 tw:text-sm\">\n <span className=\"tw:text-muted-foreground\">{label}</span>\n <TimePicker selected={date ? timeOf(date) : null} onSelect={onChange}>\n <Button variant=\"outline\" size=\"small\" disabled={!date} aria-label={`${label} time`}>\n {date ? timeOf(date) : '--:--'}\n </Button>\n </TimePicker>\n </div>\n);\n\n/**\n * Range-mode date picker — `Popover` + `Calendar` in range mode, with an optional preset sidebar,\n * a time-of-day row (`withTime`) and an explicit Apply step (`requireApply`). Use for selecting a\n * `{ from, to }` pair; for a single date use `DatePicker`.\n */\nexport const DateRangePicker = ({\n align = 'start',\n alignOffset,\n className,\n defaultOpen,\n disabled = false,\n disabledDays,\n formatDate,\n label,\n onChange,\n onOpenChange,\n onPresetSelect,\n open,\n placeholder = 'Pick a date range',\n presets,\n requireApply = false,\n sideOffset,\n value,\n variant,\n withTime = false,\n}: DateRangePickerProps) => {\n const isArgoDesign = useArgoDesign();\n const [draft, setDraft] = useState<DateRange | undefined>(value);\n\n const handleOpenChange = (nextOpen: boolean) => {\n // Reopening restarts from the committed value, so a cancelled edit never leaks into the next visit.\n if (nextOpen) setDraft(value);\n onOpenChange?.(nextOpen);\n };\n\n const current = requireApply ? draft : value;\n\n const edit = (range: DateRange | undefined) => {\n if (requireApply) setDraft(range);\n else onChange(range);\n };\n\n const handleSelect = (range: DayPickerDateRange | undefined) => {\n if (!range?.from) {\n edit(undefined);\n return;\n }\n\n // Picking days keeps whatever time-of-day is already set — otherwise every day click would\n // silently reset the range back to midnight.\n edit({\n from: current?.from ? withTimeOf(range.from, current.from) : range.from,\n to: range.to && current?.to ? withTimeOf(range.to, current.to) : range.to,\n });\n };\n\n const format =\n formatDate ?? ((date: Date) => (withTime ? `${isoDate(date)} ${timeOf(date)}` : isoDate(date)));\n const triggerLabel = label ?? formatRange(value, format);\n\n return (\n <Popover open={open} defaultOpen={defaultOpen} onOpenChange={handleOpenChange}>\n <Popover.Trigger\n disabled={disabled}\n className={cn(\n overlayTriggerVariants({ variant: isArgoDesign ? 'argo' : variant, sizing: 'medium' }),\n className,\n )}\n >\n <span className={cn('tw:truncate', !triggerLabel && 'tw:text-muted-foreground')}>\n {triggerLabel ?? placeholder}\n </span>\n <ChevronDown className=\"tw:size-4 tw:text-muted-foreground\" />\n </Popover.Trigger>\n <Popover.Content\n align={align}\n alignOffset={alignOffset}\n sideOffset={sideOffset}\n className=\"tw:w-auto tw:p-0\"\n >\n <div className=\"tw:flex\">\n {presets && presets.length > 0 ? (\n <div className=\"tw:flex tw:flex-col tw:gap-1 tw:border-r tw:border-solid tw:border-border tw:p-2\">\n {presets.map((preset) => (\n <Popover.Close asChild key={preset.label}>\n <Button\n variant=\"invisible\"\n size=\"small\"\n className=\"tw:justify-start\"\n onClick={() =>\n onPresetSelect ? onPresetSelect(preset) : onChange(preset.range)\n }\n >\n {preset.label}\n </Button>\n </Popover.Close>\n ))}\n </div>\n ) : null}\n <Calendar\n mode=\"range\"\n selected={current}\n onSelect={handleSelect}\n numberOfMonths={2}\n defaultMonth={current?.from}\n disabled={disabledDays}\n />\n </div>\n {(withTime || requireApply) && (\n <div className=\"tw:flex tw:items-center tw:gap-3 tw:border-t tw:border-solid tw:border-border tw:p-3\">\n {withTime && (\n <>\n <TimeField\n label=\"From\"\n date={current?.from}\n onChange={(time) =>\n current?.from && edit({ ...current, from: atTime(current.from, time) })\n }\n />\n <TimeField\n label=\"To\"\n date={current?.to}\n onChange={(time) =>\n current?.to && edit({ ...current, to: atTime(current.to, time) })\n }\n />\n </>\n )}\n {requireApply && (\n <div className=\"tw:ml-auto tw:flex tw:gap-2\">\n <Popover.Close asChild>\n <Button variant=\"outline\" size=\"small\">\n Cancel\n </Button>\n </Popover.Close>\n <Popover.Close asChild>\n <Button size=\"small\" disabled={!draft?.from} onClick={() => onChange(draft)}>\n Apply\n </Button>\n </Popover.Close>\n </div>\n )}\n </div>\n )}\n </Popover.Content>\n </Popover>\n );\n};\n\nDateRangePicker.displayName = 'DateRangePicker';\n"]}
@@ -0,0 +1,40 @@
1
+ import { useControllableState } from './chunk-WKAUEL6I.js';
2
+ import { InputGroup } from './chunk-SC275NHZ.js';
3
+ import { jsx } from 'react/jsx-runtime';
4
+
5
+ var Textarea = ({
6
+ ref,
7
+ containerClassName,
8
+ // group props
9
+ state = "default",
10
+ variant,
11
+ sizing,
12
+ focusVariant,
13
+ // value handling
14
+ value: valueProp,
15
+ defaultValue,
16
+ onValueChange,
17
+ ...rest
18
+ }) => {
19
+ const [value, setValue] = useControllableState({
20
+ // `undefined` stays uncontrolled; any provided value (incl. `null`) is controlled, coerced to ''.
21
+ prop: valueProp === void 0 ? void 0 : valueProp ?? "",
22
+ defaultProp: defaultValue ?? "",
23
+ onChange: onValueChange
24
+ });
25
+ return /* @__PURE__ */ jsx(
26
+ InputGroup,
27
+ {
28
+ state,
29
+ sizing,
30
+ focusVariant,
31
+ variant,
32
+ className: containerClassName,
33
+ children: /* @__PURE__ */ jsx(InputGroup.TextArea, { ...rest, ref, value, onValueChange: setValue })
34
+ }
35
+ );
36
+ };
37
+
38
+ export { Textarea };
39
+ //# sourceMappingURL=chunk-EEK5NGZF.js.map
40
+ //# sourceMappingURL=chunk-EEK5NGZF.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/blocks/Textarea/Textarea.tsx"],"names":[],"mappings":";;;;AA+BO,IAAM,WAAW,CAAC;AAAA,EACvB,GAAA;AAAA,EACA,kBAAA;AAAA;AAAA,EAGA,KAAA,GAAQ,SAAA;AAAA,EACR,OAAA;AAAA,EACA,MAAA;AAAA,EACA,YAAA;AAAA;AAAA,EAGA,KAAA,EAAO,SAAA;AAAA,EACP,YAAA;AAAA,EACA,aAAA;AAAA,EAEA,GAAG;AACL,CAAA,KAAa;AACX,EAAA,MAAM,CAAC,KAAA,EAAO,QAAQ,CAAA,GAAI,oBAAA,CAA6B;AAAA;AAAA,IAErD,IAAA,EAAM,SAAA,KAAc,MAAA,GAAY,MAAA,GAAa,SAAA,IAAa,EAAA;AAAA,IAC1D,aAAa,YAAA,IAAgB,EAAA;AAAA,IAC7B,QAAA,EAAU;AAAA,GACX,CAAA;AAED,EAAA,uBACE,GAAA;AAAA,IAAC,UAAA;AAAA,IAAA;AAAA,MACC,KAAA;AAAA,MACA,MAAA;AAAA,MACA,YAAA;AAAA,MACA,OAAA;AAAA,MACA,SAAA,EAAW,kBAAA;AAAA,MAEX,QAAA,kBAAA,GAAA,CAAC,WAAW,QAAA,EAAX,EAAqB,GAAG,IAAA,EAAM,GAAA,EAAU,KAAA,EAAc,aAAA,EAAe,QAAA,EAAU;AAAA;AAAA,GAClF;AAEJ","file":"chunk-EEK5NGZF.js","sourcesContent":["import type { ComponentProps } from 'react';\n\nimport { InputGroup } from '../../components/InputGroup';\nimport { useControllableState } from '../../hooks/useControllableState';\n\ntype InputGroupProps = Pick<\n ComponentProps<typeof InputGroup>,\n 'variant' | 'sizing' | 'focusVariant' | 'state'\n>;\n\ntype TextareaNativeProps = Omit<\n ComponentProps<typeof InputGroup.TextArea>,\n 'value' | 'defaultValue' | 'rows' | 'maxRows'\n>;\n\ntype TextareaOwnProps = {\n value?: string | null;\n defaultValue?: string | null;\n onValueChange?: (value: string) => void;\n onValueBlur?: (value: string) => void;\n maxRows?: number | 'unlimited';\n disableResize?: boolean;\n containerClassName?: string;\n};\n\ntype Props = InputGroupProps & TextareaNativeProps & TextareaOwnProps;\n\n/**\n * Multi-line text input. Chrome resolves from the active brand automatically: a modern brand always\n * renders argo (any `variant` is ignored), while `variant` only tunes the legacy-brand chrome.\n */\nexport const Textarea = ({\n ref,\n containerClassName,\n\n // group props\n state = 'default',\n variant,\n sizing,\n focusVariant,\n\n // value handling\n value: valueProp,\n defaultValue,\n onValueChange,\n\n ...rest\n}: Props) => {\n const [value, setValue] = useControllableState<string>({\n // `undefined` stays uncontrolled; any provided value (incl. `null`) is controlled, coerced to ''.\n prop: valueProp === undefined ? undefined : (valueProp ?? ''),\n defaultProp: defaultValue ?? '',\n onChange: onValueChange,\n });\n\n return (\n <InputGroup\n state={state}\n sizing={sizing}\n focusVariant={focusVariant}\n variant={variant}\n className={containerClassName}\n >\n <InputGroup.TextArea {...rest} ref={ref} value={value} onValueChange={setValue} />\n </InputGroup>\n );\n};\n"]}
@@ -0,0 +1,11 @@
1
+ import { jsxs, jsx } from 'react/jsx-runtime';
2
+
3
+ // src/components/MergeEditor/PaneHeader.tsx
4
+ var PaneHeader = ({ label, sublabel }) => /* @__PURE__ */ jsxs("div", { children: [
5
+ /* @__PURE__ */ jsx("p", { className: "tw:m-0 tw:text-sm tw:font-medium tw:text-foreground", children: label }),
6
+ sublabel && /* @__PURE__ */ jsx("p", { className: "tw:m-0 tw:text-xs tw:text-muted-foreground", children: sublabel })
7
+ ] });
8
+
9
+ export { PaneHeader };
10
+ //# sourceMappingURL=chunk-ENRG7TXA.js.map
11
+ //# sourceMappingURL=chunk-ENRG7TXA.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/components/MergeEditor/PaneHeader.tsx"],"names":[],"mappings":";;;AAKO,IAAM,aAAa,CAAC,EAAE,OAAO,QAAA,EAAS,0BAC1C,KAAA,EAAA,EACC,QAAA,EAAA;AAAA,kBAAA,GAAA,CAAC,GAAA,EAAA,EAAE,SAAA,EAAU,qDAAA,EAAuD,QAAA,EAAA,KAAA,EAAM,CAAA;AAAA,EACzE,QAAA,oBAAY,GAAA,CAAC,GAAA,EAAA,EAAE,SAAA,EAAU,8CAA8C,QAAA,EAAA,QAAA,EAAS;AAAA,CAAA,EACnF","file":"chunk-ENRG7TXA.js","sourcesContent":["type Props = {\n label: string;\n sublabel?: string;\n};\n\nexport const PaneHeader = ({ label, sublabel }: Props) => (\n <div>\n <p className=\"tw:m-0 tw:text-sm tw:font-medium tw:text-foreground\">{label}</p>\n {sublabel && <p className=\"tw:m-0 tw:text-xs tw:text-muted-foreground\">{sublabel}</p>}\n </div>\n);\n"]}
@@ -0,0 +1,239 @@
1
+ import { DropdownMenu } from './chunk-ERAHK5YQ.js';
2
+ import { Collapsible } from './chunk-FVPGQ6UE.js';
3
+ import { Badge } from './chunk-SBGAUGXY.js';
4
+ import { Button } from './chunk-IXAYNBOY.js';
5
+ import { ChevronDown } from './chunk-RQVK4IYC.js';
6
+ import { noop } from './chunk-SWQFYNYG.js';
7
+ import { cn } from './chunk-LXLIQ2D6.js';
8
+ import { useState } from 'react';
9
+ import { jsxs, Fragment, jsx } from 'react/jsx-runtime';
10
+
11
+ var SectionNavItemContent = ({
12
+ item,
13
+ active,
14
+ showDescription = false,
15
+ expanded,
16
+ showIcon = true
17
+ }) => {
18
+ const Icon = item.icon;
19
+ return /* @__PURE__ */ jsxs("span", { className: "tw:flex tw:min-w-0 tw:flex-1 tw:flex-col tw:gap-0.5", children: [
20
+ /* @__PURE__ */ jsxs("span", { className: "tw:flex tw:items-center tw:gap-2", children: [
21
+ showIcon && Icon && /* @__PURE__ */ jsx(Icon, { className: "tw:size-4 tw:shrink-0" }),
22
+ /* @__PURE__ */ jsx(
23
+ "span",
24
+ {
25
+ className: cn(
26
+ "tw:flex-1 tw:truncate tw:text-sm",
27
+ active ? "tw:font-medium tw:text-accent-foreground" : "tw:text-foreground"
28
+ ),
29
+ children: item.title
30
+ }
31
+ ),
32
+ item.isNew && /* @__PURE__ */ jsx(
33
+ Badge,
34
+ {
35
+ color: "blue-inverse",
36
+ className: "tw:min-h-0 tw:text-[10px]",
37
+ labelClassName: "tw:px-1.5 tw:py-0",
38
+ children: "New"
39
+ }
40
+ ),
41
+ expanded !== void 0 && /* @__PURE__ */ jsx(
42
+ ChevronDown,
43
+ {
44
+ className: cn(
45
+ "tw:size-4 tw:shrink-0 tw:text-muted-foreground tw:transition-transform tw:duration-200",
46
+ expanded && "tw:rotate-180"
47
+ )
48
+ }
49
+ )
50
+ ] }),
51
+ showDescription && item.description && /* @__PURE__ */ jsx("span", { className: "tw:text-xs tw:break-words tw:text-muted-foreground", children: item.description })
52
+ ] });
53
+ };
54
+ var FOCUS_RING = "tw:focus-visible:outline-hidden tw:focus-visible:ring-2 tw:focus-visible:ring-inset tw:focus-visible:ring-ring";
55
+ var rowClass = (active) => cn(
56
+ "tw:flex tw:w-full tw:cursor-pointer tw:items-center tw:gap-2 tw:rounded-md tw:border-none tw:px-3 tw:py-2 tw:text-left tw:text-sm tw:no-underline tw:transition-colors",
57
+ FOCUS_RING,
58
+ active ? "tw:bg-accent tw:font-medium tw:text-accent-foreground" : "tw:bg-transparent tw:text-foreground tw:hover:bg-muted"
59
+ );
60
+ var childRowClass = (active) => cn(
61
+ "tw:flex tw:w-full tw:cursor-pointer tw:rounded-md tw:border-none tw:px-3 tw:py-1.5 tw:text-left tw:no-underline tw:transition-colors",
62
+ FOCUS_RING,
63
+ active ? "tw:bg-accent" : "tw:bg-transparent tw:hover:bg-muted"
64
+ );
65
+ var SectionNavGroupRow = ({ group, activeId, renderItem, showDescriptions }) => {
66
+ const [open, setOpen] = useState(true);
67
+ const hasChildren = group.children.length > 0;
68
+ const targetId = group.children[0]?.id ?? group.id;
69
+ const isCurrent = group.id === activeId;
70
+ const holdsCurrent = isCurrent || group.children.some((child) => child.id === activeId);
71
+ const onClick = (event) => {
72
+ if (!hasChildren) return;
73
+ if (activeId === targetId) {
74
+ event.preventDefault();
75
+ setOpen((isOpen) => !isOpen);
76
+ return;
77
+ }
78
+ setOpen(true);
79
+ };
80
+ return /* @__PURE__ */ jsxs(Collapsible, { open, onOpenChange: setOpen, className: "tw:flex tw:flex-col tw:gap-0.5", children: [
81
+ renderItem({
82
+ targetId,
83
+ isActive: isCurrent,
84
+ children: /* @__PURE__ */ jsx(
85
+ SectionNavItemContent,
86
+ {
87
+ item: group,
88
+ active: holdsCurrent,
89
+ expanded: hasChildren ? open : void 0
90
+ }
91
+ ),
92
+ itemProps: {
93
+ className: rowClass(holdsCurrent),
94
+ "aria-current": isCurrent ? "page" : void 0,
95
+ "aria-expanded": hasChildren ? open : void 0,
96
+ "data-active": holdsCurrent && !isCurrent ? true : void 0,
97
+ onClick
98
+ }
99
+ }),
100
+ hasChildren && /* @__PURE__ */ jsx(Collapsible.Content, { children: /* @__PURE__ */ jsxs("ul", { className: "tw:my-0 tw:mr-0 tw:ml-5 tw:flex tw:list-none tw:flex-col tw:gap-0.5 tw:border-l tw:border-border tw:py-0.5 tw:pl-1", children: [
101
+ group.children.map((child) => {
102
+ const active = child.id === activeId;
103
+ return /* @__PURE__ */ jsx("li", { children: renderItem({
104
+ targetId: child.id,
105
+ isActive: active,
106
+ children: /* @__PURE__ */ jsx(
107
+ SectionNavItemContent,
108
+ {
109
+ item: child,
110
+ active,
111
+ showDescription: showDescriptions,
112
+ showIcon: false
113
+ }
114
+ ),
115
+ itemProps: {
116
+ className: childRowClass(active),
117
+ "aria-current": active ? "page" : void 0,
118
+ "aria-expanded": void 0,
119
+ "data-active": void 0,
120
+ onClick: noop
121
+ }
122
+ }) }, child.id);
123
+ }),
124
+ group.note && /* @__PURE__ */ jsx("li", { className: "tw:py-1 tw:pl-3 tw:text-xs tw:text-muted-foreground", children: group.note })
125
+ ] }) })
126
+ ] });
127
+ };
128
+ var SectionNav = ({
129
+ groups,
130
+ activeId,
131
+ renderItem,
132
+ showDescriptions = false,
133
+ label = "Sections",
134
+ className
135
+ }) => {
136
+ const activeChild = groups.flatMap((group) => group.children.map((child) => ({ group, child }))).find(({ child }) => child.id === activeId);
137
+ const activeGroup = groups.find((group) => group.id === activeId);
138
+ const current = activeChild ? {
139
+ icon: activeChild.group.icon,
140
+ title: activeChild.child.title,
141
+ parent: activeChild.group.title
142
+ } : { icon: activeGroup?.icon, title: activeGroup?.title ?? label, parent: void 0 };
143
+ const CurrentIcon = current.icon;
144
+ const holdsActive = (group) => group.id === activeId || group.children.some((child) => child.id === activeId);
145
+ return /* @__PURE__ */ jsxs(Fragment, { children: [
146
+ /* @__PURE__ */ jsx(
147
+ "nav",
148
+ {
149
+ "aria-label": label,
150
+ className: cn(
151
+ "tailwindcss-preflight",
152
+ "tw:w-full tw:flex-col tw:gap-0.5 tw:@[640px]/section-nav:flex tw:@max-[640px]/section-nav:hidden",
153
+ className
154
+ ),
155
+ children: groups.map((group) => /* @__PURE__ */ jsx(
156
+ SectionNavGroupRow,
157
+ {
158
+ group,
159
+ activeId,
160
+ renderItem,
161
+ showDescriptions
162
+ },
163
+ group.id
164
+ ))
165
+ }
166
+ ),
167
+ /* @__PURE__ */ jsx("div", { className: "tw:w-full tw:bg-background tw:@[640px]/section-nav:hidden tw:@max-[640px]/section-nav:block", children: /* @__PURE__ */ jsxs(DropdownMenu, { children: [
168
+ /* @__PURE__ */ jsx(DropdownMenu.Trigger, { asChild: true, children: /* @__PURE__ */ jsxs(Button, { variant: "outline", className: "tw:w-full tw:justify-between", children: [
169
+ /* @__PURE__ */ jsxs("span", { className: "tw:flex tw:min-w-0 tw:items-center tw:gap-2", children: [
170
+ CurrentIcon && /* @__PURE__ */ jsx(CurrentIcon, { className: "tw:size-4 tw:shrink-0" }),
171
+ current.parent && /* @__PURE__ */ jsxs(Fragment, { children: [
172
+ /* @__PURE__ */ jsx("span", { className: "tw:truncate tw:font-normal tw:text-muted-foreground", children: current.parent }),
173
+ /* @__PURE__ */ jsx("span", { className: "tw:text-border", children: "/" })
174
+ ] }),
175
+ /* @__PURE__ */ jsx("span", { className: "tw:truncate tw:font-medium tw:text-foreground", children: current.title })
176
+ ] }),
177
+ /* @__PURE__ */ jsx(ChevronDown, { className: "tw:size-4 tw:shrink-0" })
178
+ ] }) }),
179
+ /* @__PURE__ */ jsx(
180
+ DropdownMenu.Content,
181
+ {
182
+ align: "start",
183
+ className: "tw:w-(--radix-dropdown-menu-trigger-width)",
184
+ children: groups.map(
185
+ (group) => group.children.length > 0 ? /* @__PURE__ */ jsxs(DropdownMenu.Group, { children: [
186
+ /* @__PURE__ */ jsx(DropdownMenu.Item, { asChild: true, children: renderItem({
187
+ targetId: group.children[0]?.id ?? group.id,
188
+ isActive: false,
189
+ children: /* @__PURE__ */ jsx(SectionNavItemContent, { item: group, active: holdsActive(group) }),
190
+ itemProps: {
191
+ className: "tw:no-underline",
192
+ "aria-current": void 0,
193
+ "aria-expanded": void 0,
194
+ "data-active": holdsActive(group) ? true : void 0,
195
+ onClick: noop
196
+ }
197
+ }) }),
198
+ /* @__PURE__ */ jsx("div", { className: "tw:ml-5 tw:border-l tw:border-border tw:py-0.5 tw:pl-1", children: group.children.map((child) => /* @__PURE__ */ jsx(DropdownMenu.Item, { asChild: true, children: renderItem({
199
+ targetId: child.id,
200
+ isActive: child.id === activeId,
201
+ children: /* @__PURE__ */ jsx(
202
+ SectionNavItemContent,
203
+ {
204
+ item: child,
205
+ active: child.id === activeId,
206
+ showDescription: showDescriptions,
207
+ showIcon: false
208
+ }
209
+ ),
210
+ itemProps: {
211
+ className: "tw:no-underline",
212
+ "aria-current": child.id === activeId ? "page" : void 0,
213
+ "aria-expanded": void 0,
214
+ "data-active": void 0,
215
+ onClick: noop
216
+ }
217
+ }) }, child.id)) })
218
+ ] }, group.id) : /* @__PURE__ */ jsx(DropdownMenu.Item, { asChild: true, children: renderItem({
219
+ targetId: group.id,
220
+ isActive: group.id === activeId,
221
+ children: /* @__PURE__ */ jsx(SectionNavItemContent, { item: group, active: group.id === activeId }),
222
+ itemProps: {
223
+ className: "tw:no-underline",
224
+ "aria-current": group.id === activeId ? "page" : void 0,
225
+ "aria-expanded": void 0,
226
+ "data-active": void 0,
227
+ onClick: noop
228
+ }
229
+ }) }, group.id)
230
+ )
231
+ }
232
+ )
233
+ ] }) })
234
+ ] });
235
+ };
236
+
237
+ export { SectionNav };
238
+ //# sourceMappingURL=chunk-EQRMGIGY.js.map
239
+ //# sourceMappingURL=chunk-EQRMGIGY.js.map