@keboola/design 11.0.0 → 11.0.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (662) hide show
  1. package/dist/AIKit-Dre37SJr.js +1320 -0
  2. package/dist/AIKit-Dre37SJr.js.map +1 -0
  3. package/dist/Alert-DfZq9kGe.js +133 -0
  4. package/dist/Alert-DfZq9kGe.js.map +1 -0
  5. package/dist/AlertModal-BUC4Es8o.js +222 -0
  6. package/dist/AlertModal-BUC4Es8o.js.map +1 -0
  7. package/dist/AppShell-B5GQN6Zs.js +143 -0
  8. package/dist/AppShell-B5GQN6Zs.js.map +1 -0
  9. package/dist/AutoSaveTextarea-BeuWuszr.js +58 -0
  10. package/dist/{chunk-UGT6DKWM.js.map → AutoSaveTextarea-BeuWuszr.js.map} +1 -1
  11. package/dist/Badge-Ch26CXoP.js +195 -0
  12. package/dist/Badge-Ch26CXoP.js.map +1 -0
  13. package/dist/BrandEditor-B8o9zdZO.js +903 -0
  14. package/dist/BrandEditor-B8o9zdZO.js.map +1 -0
  15. package/dist/BrandLogo-CJkRd0F8.js +46 -0
  16. package/dist/BrandLogo-CJkRd0F8.js.map +1 -0
  17. package/dist/Breadcrumb-DJp7WwSv.js +330 -0
  18. package/dist/Breadcrumb-DJp7WwSv.js.map +1 -0
  19. package/dist/Button-nzmDNS2q.js +391 -0
  20. package/dist/Button-nzmDNS2q.js.map +1 -0
  21. package/dist/Calendar-cG5NIJ4O.js +6768 -0
  22. package/dist/Calendar-cG5NIJ4O.js.map +1 -0
  23. package/dist/Card-BAoZ35CV.js +105 -0
  24. package/dist/Card-BAoZ35CV.js.map +1 -0
  25. package/dist/Checkbox-GJ8-srt4.js +97 -0
  26. package/dist/Checkbox-GJ8-srt4.js.map +1 -0
  27. package/dist/Clipboard-CBJZiviP.js +58 -0
  28. package/dist/Clipboard-CBJZiviP.js.map +1 -0
  29. package/dist/ClipboardButton-ez5V3fkk.js +43 -0
  30. package/dist/ClipboardButton-ez5V3fkk.js.map +1 -0
  31. package/dist/CodeEditor-BfQJfbhL.js +952 -0
  32. package/dist/CodeEditor-BfQJfbhL.js.map +1 -0
  33. package/dist/Collapsible-BQXWEOBC.js +34 -0
  34. package/dist/Collapsible-BQXWEOBC.js.map +1 -0
  35. package/dist/ColorInput-Dx8Dsv7Y.js +180 -0
  36. package/dist/ColorInput-Dx8Dsv7Y.js.map +1 -0
  37. package/dist/ColorModeSwitch-CCqj7tjE.js +77 -0
  38. package/dist/ColorModeSwitch-CCqj7tjE.js.map +1 -0
  39. package/dist/Combobox-c_xBjf0P.js +439 -0
  40. package/dist/Combobox-c_xBjf0P.js.map +1 -0
  41. package/dist/Command-CQ_bQsJp.js +102 -0
  42. package/dist/Command-CQ_bQsJp.js.map +1 -0
  43. package/dist/CopyField-BJ96zvXs.js +322 -0
  44. package/dist/CopyField-BJ96zvXs.js.map +1 -0
  45. package/dist/DateInput-CMD3dY-T.js +141 -0
  46. package/dist/DateInput-CMD3dY-T.js.map +1 -0
  47. package/dist/DatePicker-BbFbmsGl.js +24 -0
  48. package/dist/DatePicker-BbFbmsGl.js.map +1 -0
  49. package/dist/DateRangeInput-D3BhiKyk.js +139 -0
  50. package/dist/DateRangeInput-D3BhiKyk.js.map +1 -0
  51. package/dist/DateRangePicker-BiUgtt_M.js +159 -0
  52. package/dist/DateRangePicker-BiUgtt_M.js.map +1 -0
  53. package/dist/DiagramSkeleton-lwBS2YBa.js +11 -0
  54. package/dist/DiagramSkeleton-lwBS2YBa.js.map +1 -0
  55. package/dist/DiffView-ppTIzh2h.js +429 -0
  56. package/dist/DiffView-ppTIzh2h.js.map +1 -0
  57. package/dist/DropdownMenu-B6ZbYvaM.js +327 -0
  58. package/dist/DropdownMenu-B6ZbYvaM.js.map +1 -0
  59. package/dist/FieldBox-D7DYtX_m.js +70 -0
  60. package/dist/FieldBox-D7DYtX_m.js.map +1 -0
  61. package/dist/FileUpload-sXRv7JiY.js +2527 -0
  62. package/dist/FileUpload-sXRv7JiY.js.map +1 -0
  63. package/dist/Form-BDCef6O9.js +371 -0
  64. package/dist/Form-BDCef6O9.js.map +1 -0
  65. package/dist/FormGroup-S9mPNHKH.js +124 -0
  66. package/dist/FormGroup-S9mPNHKH.js.map +1 -0
  67. package/dist/FullScreenModal-CJa2VkJ2.js +96 -0
  68. package/dist/FullScreenModal-CJa2VkJ2.js.map +1 -0
  69. package/dist/HoverCard-WfDkLK1s.js +31 -0
  70. package/dist/HoverCard-WfDkLK1s.js.map +1 -0
  71. package/dist/InputGroup-BJWsI35s.js +292 -0
  72. package/dist/InputGroup-BJWsI35s.js.map +1 -0
  73. package/dist/Kbd-CxHAo1oo.js +111 -0
  74. package/dist/Kbd-CxHAo1oo.js.map +1 -0
  75. package/dist/MarkedText-Ckbft5mw.js +44 -0
  76. package/dist/MarkedText-Ckbft5mw.js.map +1 -0
  77. package/dist/MermaidDiagram-BB06gymm.js +399 -0
  78. package/dist/MermaidDiagram-BB06gymm.js.map +1 -0
  79. package/dist/Modal-BA5Wc3sx.js +185 -0
  80. package/dist/Modal-BA5Wc3sx.js.map +1 -0
  81. package/dist/ModalTitle-C76ke2eo.js +28 -0
  82. package/dist/ModalTitle-C76ke2eo.js.map +1 -0
  83. package/dist/MultiActionButtonGroup-CiBHxsSk.js +33 -0
  84. package/dist/MultiActionButtonGroup-CiBHxsSk.js.map +1 -0
  85. package/dist/Navbar-t16usFZQ.js +322 -0
  86. package/dist/Navbar-t16usFZQ.js.map +1 -0
  87. package/dist/OtpInput-CbbymqYs.js +93 -0
  88. package/dist/OtpInput-CbbymqYs.js.map +1 -0
  89. package/dist/PageHeader-Q3IpCnQd.js +177 -0
  90. package/dist/PageHeader-Q3IpCnQd.js.map +1 -0
  91. package/dist/PageLayout-DSVM-ASz.js +176 -0
  92. package/dist/PageLayout-DSVM-ASz.js.map +1 -0
  93. package/dist/PageToolbar-0_1OBzaZ.js +153 -0
  94. package/dist/PageToolbar-0_1OBzaZ.js.map +1 -0
  95. package/dist/Pagination-CM_Rszz-.js +70 -0
  96. package/dist/Pagination-CM_Rszz-.js.map +1 -0
  97. package/dist/Popconfirm-BGe1jLov.js +170 -0
  98. package/dist/Popconfirm-BGe1jLov.js.map +1 -0
  99. package/dist/Popover-Ca0V6AD1.js +92 -0
  100. package/dist/Popover-Ca0V6AD1.js.map +1 -0
  101. package/dist/RadioGroup-sIveSsNa.js +233 -0
  102. package/dist/RadioGroup-sIveSsNa.js.map +1 -0
  103. package/dist/Resizable-D3vYToZH.js +52 -0
  104. package/dist/Resizable-D3vYToZH.js.map +1 -0
  105. package/dist/Search-3UiqNZRj.js +184 -0
  106. package/dist/Search-3UiqNZRj.js.map +1 -0
  107. package/dist/SearchInput-D2fcOv7E.js +102 -0
  108. package/dist/SearchInput-D2fcOv7E.js.map +1 -0
  109. package/dist/SectionNav--7bw2b6u.js +276 -0
  110. package/dist/SectionNav--7bw2b6u.js.map +1 -0
  111. package/dist/Select-4YX38G5h.js +181 -0
  112. package/dist/Select-4YX38G5h.js.map +1 -0
  113. package/dist/Sheet-BQrX8-h5.js +169 -0
  114. package/dist/Sheet-BQrX8-h5.js.map +1 -0
  115. package/dist/Sidebar-ROaR_AqC.js +799 -0
  116. package/dist/Sidebar-ROaR_AqC.js.map +1 -0
  117. package/dist/Slider-Da_3mS5v.js +127 -0
  118. package/dist/Slider-Da_3mS5v.js.map +1 -0
  119. package/dist/Stepper-C8sm9ZFM.js +325 -0
  120. package/dist/Stepper-C8sm9ZFM.js.map +1 -0
  121. package/dist/Switch-CX2A0v50.js +201 -0
  122. package/dist/Switch-CX2A0v50.js.map +1 -0
  123. package/dist/Table-CvYuTuNU.js +104 -0
  124. package/dist/Table-CvYuTuNU.js.map +1 -0
  125. package/dist/Tabs-EAihyqCt.js +74 -0
  126. package/dist/Tabs-EAihyqCt.js.map +1 -0
  127. package/dist/TextInput-BGed-V13.js +110 -0
  128. package/dist/TextInput-BGed-V13.js.map +1 -0
  129. package/dist/ThemeProvider-QncUrfJn.js +203 -0
  130. package/dist/ThemeProvider-QncUrfJn.js.map +1 -0
  131. package/dist/TimePicker-B_NegL-7.js +98 -0
  132. package/dist/TimePicker-B_NegL-7.js.map +1 -0
  133. package/dist/Timeline-6btyJl4D.js +154 -0
  134. package/dist/Timeline-6btyJl4D.js.map +1 -0
  135. package/dist/Toast-DQSbs3oA.js +49 -0
  136. package/dist/Toast-DQSbs3oA.js.map +1 -0
  137. package/dist/ToggleGroup-Cy_10Mvu.js +47 -0
  138. package/dist/ToggleGroup-Cy_10Mvu.js.map +1 -0
  139. package/dist/Workbench-BzE-Vvd9.js +293 -0
  140. package/dist/Workbench-BzE-Vvd9.js.map +1 -0
  141. package/dist/ZoomableSvg-DG9PnAm8.js +248 -0
  142. package/dist/ZoomableSvg-DG9PnAm8.js.map +1 -0
  143. package/dist/charts.d.ts +110 -103
  144. package/dist/charts.js +303 -254
  145. package/dist/charts.js.map +1 -1
  146. package/dist/classNames-BzrkDnOD.js +9 -0
  147. package/dist/classNames-BzrkDnOD.js.map +1 -0
  148. package/dist/constants-D6JcsD4_.d.ts +41 -0
  149. package/dist/context-KxxeMHbR.js +62 -0
  150. package/dist/context-KxxeMHbR.js.map +1 -0
  151. package/dist/editors.d.ts +180 -173
  152. package/dist/editors.js +747 -428
  153. package/dist/editors.js.map +1 -1
  154. package/dist/escapeStringRegexp-8MxP2knR.js +6 -0
  155. package/dist/escapeStringRegexp-8MxP2knR.js.map +1 -0
  156. package/dist/icons-Cek151jC.js +640 -0
  157. package/dist/icons-Cek151jC.js.map +1 -0
  158. package/dist/icons.d.ts +2 -41
  159. package/dist/icons.js +2 -9
  160. package/dist/index-m-kQEWiY.d.ts +54 -0
  161. package/dist/index.d.ts +6183 -9885
  162. package/dist/index.js +112 -124
  163. package/dist/internal/blocks/AIKit.js +2 -30
  164. package/dist/internal/blocks/AppShell.js +2 -11
  165. package/dist/internal/blocks/AutoSaveTextarea.js +2 -14
  166. package/dist/internal/blocks/BrandEditor.js +2 -23
  167. package/dist/internal/blocks/ChartPanel.js +45 -9
  168. package/dist/internal/blocks/ChartPanel.js.map +1 -1
  169. package/dist/internal/blocks/ClipboardButton.js +2 -12
  170. package/dist/internal/blocks/ColorInput.js +2 -13
  171. package/dist/internal/blocks/ColorModeSwitch.js +2 -13
  172. package/dist/internal/blocks/Command.js +2 -15
  173. package/dist/internal/blocks/CopyField.js +2 -11
  174. package/dist/internal/blocks/DashboardHero.js +58 -8
  175. package/dist/internal/blocks/DashboardHero.js.map +1 -1
  176. package/dist/internal/blocks/DateInput.js +2 -16
  177. package/dist/internal/blocks/DateRangeInput.js +2 -16
  178. package/dist/internal/blocks/EmptyConfigurationActionCard.js +15 -9
  179. package/dist/internal/blocks/EmptyConfigurationActionCard.js.map +1 -1
  180. package/dist/internal/blocks/EmptyState.js +141 -3
  181. package/dist/internal/blocks/EmptyState.js.map +1 -1
  182. package/dist/internal/blocks/ErrorState.js +178 -4
  183. package/dist/internal/blocks/ErrorState.js.map +1 -1
  184. package/dist/internal/blocks/ExportMenu.js +40 -12
  185. package/dist/internal/blocks/ExportMenu.js.map +1 -1
  186. package/dist/internal/blocks/Form.js +2 -29
  187. package/dist/internal/blocks/FormGroup.js +2 -18
  188. package/dist/internal/blocks/GoogleButton.js +94 -9
  189. package/dist/internal/blocks/GoogleButton.js.map +1 -1
  190. package/dist/internal/blocks/MicrosoftButton.js +63 -9
  191. package/dist/internal/blocks/MicrosoftButton.js.map +1 -1
  192. package/dist/internal/blocks/MultiActionButtonGroup.js +2 -12
  193. package/dist/internal/blocks/MultiCombobox.js +187 -13
  194. package/dist/internal/blocks/MultiCombobox.js.map +1 -1
  195. package/dist/internal/blocks/NumberInput.js +43 -11
  196. package/dist/internal/blocks/NumberInput.js.map +1 -1
  197. package/dist/internal/blocks/OtpInput.js +2 -10
  198. package/dist/internal/blocks/PageHeader.js +2 -9
  199. package/dist/internal/blocks/PageLayout.js +2 -9
  200. package/dist/internal/blocks/PageToolbar.js +2 -13
  201. package/dist/internal/blocks/PasswordInput.js +96 -12
  202. package/dist/internal/blocks/PasswordInput.js.map +1 -1
  203. package/dist/internal/blocks/SearchInput.js +2 -12
  204. package/dist/internal/blocks/SearchInputWithNavigation.js +64 -15
  205. package/dist/internal/blocks/SearchInputWithNavigation.js.map +1 -1
  206. package/dist/internal/blocks/SectionNav.js +2 -15
  207. package/dist/internal/blocks/SplitButton.js +45 -13
  208. package/dist/internal/blocks/SplitButton.js.map +1 -1
  209. package/dist/internal/blocks/StatCard.js +96 -9
  210. package/dist/internal/blocks/StatCard.js.map +1 -1
  211. package/dist/internal/blocks/TextInput.js +2 -13
  212. package/dist/internal/blocks/Textarea.js +31 -12
  213. package/dist/internal/blocks/Textarea.js.map +1 -1
  214. package/dist/internal/blocks/TimeInput.js +76 -16
  215. package/dist/internal/blocks/TimeInput.js.map +1 -1
  216. package/dist/internal/components/Alert.js +2 -11
  217. package/dist/internal/components/AlertModal.js +2 -11
  218. package/dist/internal/components/Avatar.js +52 -8
  219. package/dist/internal/components/Avatar.js.map +1 -1
  220. package/dist/internal/components/Badge.js +2 -9
  221. package/dist/internal/components/BrandLogo.js +2 -11
  222. package/dist/internal/components/Breadcrumb.js +2 -14
  223. package/dist/internal/components/Button.js +2 -10
  224. package/dist/internal/components/ButtonGroup.js +65 -8
  225. package/dist/internal/components/ButtonGroup.js.map +1 -1
  226. package/dist/internal/components/Calendar.js +2 -9
  227. package/dist/internal/components/Card.js +2 -9
  228. package/dist/internal/components/Checkbox.js +2 -11
  229. package/dist/internal/components/Clipboard.js +2 -9
  230. package/dist/internal/components/Collapsible.js +2 -9
  231. package/dist/internal/components/CollapsiblePanel.js +86 -10
  232. package/dist/internal/components/CollapsiblePanel.js.map +1 -1
  233. package/dist/internal/components/Combobox.js +2 -13
  234. package/dist/internal/components/DatePicker.js +2 -11
  235. package/dist/internal/components/DateRangePicker.js +2 -17
  236. package/dist/internal/components/DiffView.js +2 -9
  237. package/dist/internal/components/DotsLoader.js +17 -4
  238. package/dist/internal/components/DotsLoader.js.map +1 -1
  239. package/dist/internal/components/DropdownMenu.js +2 -11
  240. package/dist/internal/components/EmptySearchContent.js +11 -3
  241. package/dist/internal/components/EmptySearchContent.js.map +1 -1
  242. package/dist/internal/components/FileUpload.js +2 -11
  243. package/dist/internal/components/FullScreenModal.js +2 -12
  244. package/dist/internal/components/HelpBlock.js +24 -3
  245. package/dist/internal/components/HelpBlock.js.map +1 -1
  246. package/dist/internal/components/HoverCard.js +2 -9
  247. package/dist/internal/components/InputGroup.js +2 -11
  248. package/dist/internal/components/Kbd.js +2 -9
  249. package/dist/internal/components/Label.js +38 -8
  250. package/dist/internal/components/Label.js.map +1 -1
  251. package/dist/internal/components/Link.js +21 -8
  252. package/dist/internal/components/Link.js.map +1 -1
  253. package/dist/internal/components/MarkedText.js +2 -5
  254. package/dist/internal/components/MergeEditor/ConflictStatus/ConflictStatusIndicator.js +19 -9
  255. package/dist/internal/components/MergeEditor/ConflictStatus/ConflictStatusIndicator.js.map +1 -1
  256. package/dist/internal/components/MergeEditor/PaneHeader.js +12 -3
  257. package/dist/internal/components/MergeEditor/PaneHeader.js.map +1 -1
  258. package/dist/internal/components/MergeEditor/constants.js +17 -3
  259. package/dist/internal/components/MergeEditor/constants.js.map +1 -1
  260. package/dist/internal/components/MergeEditor/useMergeDiff.js +2 -5
  261. package/dist/internal/components/Modal.js +2 -13
  262. package/dist/internal/components/Navbar.js +2 -14
  263. package/dist/internal/components/Pagination.js +2 -11
  264. package/dist/internal/components/PanelWithDetails.js +30 -10
  265. package/dist/internal/components/PanelWithDetails.js.map +1 -1
  266. package/dist/internal/components/Popconfirm.js +2 -12
  267. package/dist/internal/components/Popover.js +2 -9
  268. package/dist/internal/components/Progress.js +46 -8
  269. package/dist/internal/components/Progress.js.map +1 -1
  270. package/dist/internal/components/RadioGroup.js +2 -12
  271. package/dist/internal/components/Resizable.js +2 -9
  272. package/dist/internal/components/ScrollArea.js +41 -8
  273. package/dist/internal/components/ScrollArea.js.map +1 -1
  274. package/dist/internal/components/Search.js +2 -10
  275. package/dist/internal/components/Select.js +2 -12
  276. package/dist/internal/components/Separator.js +83 -8
  277. package/dist/internal/components/Separator.js.map +1 -1
  278. package/dist/internal/components/Sheet.js +2 -12
  279. package/dist/internal/components/Sidebar.js +2 -20
  280. package/dist/internal/components/Skeleton/Skeleton.js +38 -8
  281. package/dist/internal/components/Skeleton/Skeleton.js.map +1 -1
  282. package/dist/internal/components/Skeleton/SkeletonList.js +40 -9
  283. package/dist/internal/components/Skeleton/SkeletonList.js.map +1 -1
  284. package/dist/internal/components/Slider.js +2 -11
  285. package/dist/internal/components/SpotlightBackdrop.js +131 -8
  286. package/dist/internal/components/SpotlightBackdrop.js.map +1 -1
  287. package/dist/internal/components/Stepper.js +2 -10
  288. package/dist/internal/components/Switch.js +2 -10
  289. package/dist/internal/components/Table.js +2 -10
  290. package/dist/internal/components/Tabs.js +2 -12
  291. package/dist/internal/components/ThemeProvider.js +3 -10
  292. package/dist/internal/components/TimePicker.js +2 -12
  293. package/dist/internal/components/Timeline.js +2 -10
  294. package/dist/internal/components/Toast.js +3 -11
  295. package/dist/internal/components/Toggle.js +168 -8
  296. package/dist/internal/components/Toggle.js.map +1 -1
  297. package/dist/internal/components/ToggleGroup.js +2 -9
  298. package/dist/internal/components/Tooltip.js +2 -8
  299. package/dist/internal/components/Truncated.js +44 -8
  300. package/dist/internal/components/Truncated.js.map +1 -1
  301. package/dist/internal/components/Workbench.js +2 -11
  302. package/dist/internal/components/ZoomableSvg.js +2 -13
  303. package/dist/internal/hooks/useAutosizeInput.js +76 -3
  304. package/dist/internal/hooks/useAutosizeInput.js.map +1 -1
  305. package/dist/internal/hooks/useScrollbarPosition.js +44 -4
  306. package/dist/internal/hooks/useScrollbarPosition.js.map +1 -1
  307. package/dist/internal/hooks/useStableCallback.js +28 -3
  308. package/dist/internal/hooks/useStableCallback.js.map +1 -1
  309. package/dist/internal/utils/mergeRefs.js +19 -3
  310. package/dist/internal/utils/mergeRefs.js.map +1 -1
  311. package/dist/internal/utils.js +5 -8
  312. package/dist/markdown-editor.d.ts +72 -72
  313. package/dist/markdown-editor.js +1122 -1207
  314. package/dist/markdown-editor.js.map +1 -1
  315. package/dist/mermaid.d.ts +12 -12
  316. package/dist/mermaid.js +2 -18
  317. package/dist/rjsf.d.ts +33 -34
  318. package/dist/rjsf.js +1541 -1671
  319. package/dist/rjsf.js.map +1 -1
  320. package/dist/rolldown-runtime-Bdc48AWt.js +33 -0
  321. package/dist/styles-DSUP_-9Z.js +158 -0
  322. package/dist/styles-DSUP_-9Z.js.map +1 -0
  323. package/dist/testing.d.ts +8 -7
  324. package/dist/testing.js +36 -21
  325. package/dist/testing.js.map +1 -1
  326. package/dist/themeTokens-BNg98Mu9.js +85 -0
  327. package/dist/themeTokens-BNg98Mu9.js.map +1 -0
  328. package/dist/toast-CjkURw0M.js +184 -0
  329. package/dist/toast-CjkURw0M.js.map +1 -0
  330. package/dist/useColorSchemeState-CYqcUfSH.js +61 -0
  331. package/dist/useColorSchemeState-CYqcUfSH.js.map +1 -0
  332. package/dist/useControllableState-M6494mCT.js +31 -0
  333. package/dist/useControllableState-M6494mCT.js.map +1 -0
  334. package/dist/useElement-DkF6esWL.js +15 -0
  335. package/dist/useElement-DkF6esWL.js.map +1 -0
  336. package/dist/useMergeDiff-CvowEXJ1.js +465 -0
  337. package/dist/useMergeDiff-CvowEXJ1.js.map +1 -0
  338. package/dist/utils-D0c5VAyF.js +308 -0
  339. package/dist/utils-D0c5VAyF.js.map +1 -0
  340. package/package.json +8 -8
  341. package/dist/MermaidDiagram-ZU5KAVRT.js +0 -18
  342. package/dist/MermaidDiagram-ZU5KAVRT.js.map +0 -1
  343. package/dist/chunk-2YYJDKSP.js +0 -51
  344. package/dist/chunk-2YYJDKSP.js.map +0 -1
  345. package/dist/chunk-3P5UUCFI.js +0 -385
  346. package/dist/chunk-3P5UUCFI.js.map +0 -1
  347. package/dist/chunk-3QDFDDWZ.js +0 -99
  348. package/dist/chunk-3QDFDDWZ.js.map +0 -1
  349. package/dist/chunk-3W27OLK5.js +0 -15
  350. package/dist/chunk-3W27OLK5.js.map +0 -1
  351. package/dist/chunk-4FIZZONW.js +0 -40
  352. package/dist/chunk-4FIZZONW.js.map +0 -1
  353. package/dist/chunk-4GIAXOJG.js +0 -133
  354. package/dist/chunk-4GIAXOJG.js.map +0 -1
  355. package/dist/chunk-52NDNMK7.js +0 -99
  356. package/dist/chunk-52NDNMK7.js.map +0 -1
  357. package/dist/chunk-576G5OES.js +0 -201
  358. package/dist/chunk-576G5OES.js.map +0 -1
  359. package/dist/chunk-5AIE6SET.js +0 -659
  360. package/dist/chunk-5AIE6SET.js.map +0 -1
  361. package/dist/chunk-5FTNAZRW.js +0 -327
  362. package/dist/chunk-5FTNAZRW.js.map +0 -1
  363. package/dist/chunk-5IG2S7ZY.js +0 -70
  364. package/dist/chunk-5IG2S7ZY.js.map +0 -1
  365. package/dist/chunk-5QCXHNCW.js +0 -404
  366. package/dist/chunk-5QCXHNCW.js.map +0 -1
  367. package/dist/chunk-6DUMGC7Y.js +0 -105
  368. package/dist/chunk-6DUMGC7Y.js.map +0 -1
  369. package/dist/chunk-6J25CVST.js +0 -174
  370. package/dist/chunk-6J25CVST.js.map +0 -1
  371. package/dist/chunk-6NN35XOP.js +0 -120
  372. package/dist/chunk-6NN35XOP.js.map +0 -1
  373. package/dist/chunk-6NZBVA4T.js +0 -24
  374. package/dist/chunk-6NZBVA4T.js.map +0 -1
  375. package/dist/chunk-6W5BHRCL.js +0 -295
  376. package/dist/chunk-6W5BHRCL.js.map +0 -1
  377. package/dist/chunk-72BKRCEG.js +0 -409
  378. package/dist/chunk-72BKRCEG.js.map +0 -1
  379. package/dist/chunk-7GTI3PPI.js +0 -95
  380. package/dist/chunk-7GTI3PPI.js.map +0 -1
  381. package/dist/chunk-7P6PLZ4B.js +0 -74
  382. package/dist/chunk-7P6PLZ4B.js.map +0 -1
  383. package/dist/chunk-7WZWY5IA.js +0 -46
  384. package/dist/chunk-7WZWY5IA.js.map +0 -1
  385. package/dist/chunk-AIYO2632.js +0 -489
  386. package/dist/chunk-AIYO2632.js.map +0 -1
  387. package/dist/chunk-ANFZWPNE.js +0 -112
  388. package/dist/chunk-ANFZWPNE.js.map +0 -1
  389. package/dist/chunk-ANZTVAJU.js +0 -73
  390. package/dist/chunk-ANZTVAJU.js.map +0 -1
  391. package/dist/chunk-BD5BTJKX.js +0 -166
  392. package/dist/chunk-BD5BTJKX.js.map +0 -1
  393. package/dist/chunk-BHGIDSRJ.js +0 -140
  394. package/dist/chunk-BHGIDSRJ.js.map +0 -1
  395. package/dist/chunk-BSQWZITZ.js +0 -507
  396. package/dist/chunk-BSQWZITZ.js.map +0 -1
  397. package/dist/chunk-D3LAIK62.js +0 -23
  398. package/dist/chunk-D3LAIK62.js.map +0 -1
  399. package/dist/chunk-DODCR43C.js +0 -155
  400. package/dist/chunk-DODCR43C.js.map +0 -1
  401. package/dist/chunk-EEK5NGZF.js +0 -40
  402. package/dist/chunk-EEK5NGZF.js.map +0 -1
  403. package/dist/chunk-ENRG7TXA.js +0 -11
  404. package/dist/chunk-ENRG7TXA.js.map +0 -1
  405. package/dist/chunk-EQRMGIGY.js +0 -239
  406. package/dist/chunk-EQRMGIGY.js.map +0 -1
  407. package/dist/chunk-ERAHK5YQ.js +0 -495
  408. package/dist/chunk-ERAHK5YQ.js.map +0 -1
  409. package/dist/chunk-F3FOFY2P.js +0 -124
  410. package/dist/chunk-F3FOFY2P.js.map +0 -1
  411. package/dist/chunk-F6BTWFOC.js +0 -507
  412. package/dist/chunk-F6BTWFOC.js.map +0 -1
  413. package/dist/chunk-F6J6NNAL.js +0 -34
  414. package/dist/chunk-F6J6NNAL.js.map +0 -1
  415. package/dist/chunk-FCHJ7D5O.js +0 -59
  416. package/dist/chunk-FCHJ7D5O.js.map +0 -1
  417. package/dist/chunk-FFJTEQCC.js +0 -80
  418. package/dist/chunk-FFJTEQCC.js.map +0 -1
  419. package/dist/chunk-FUFMVW7O.js +0 -64
  420. package/dist/chunk-FUFMVW7O.js.map +0 -1
  421. package/dist/chunk-FVPGQ6UE.js +0 -25
  422. package/dist/chunk-FVPGQ6UE.js.map +0 -1
  423. package/dist/chunk-G3PMV62Z.js +0 -33
  424. package/dist/chunk-G3PMV62Z.js.map +0 -1
  425. package/dist/chunk-GACFOW3E.js +0 -51
  426. package/dist/chunk-GACFOW3E.js.map +0 -1
  427. package/dist/chunk-GDT6HQMK.js +0 -42
  428. package/dist/chunk-GDT6HQMK.js.map +0 -1
  429. package/dist/chunk-HLGU22C6.js +0 -2589
  430. package/dist/chunk-HLGU22C6.js.map +0 -1
  431. package/dist/chunk-HPMYYGP7.js +0 -134
  432. package/dist/chunk-HPMYYGP7.js.map +0 -1
  433. package/dist/chunk-I2UCOD45.js +0 -197
  434. package/dist/chunk-I2UCOD45.js.map +0 -1
  435. package/dist/chunk-IEGDZUVM.js +0 -75
  436. package/dist/chunk-IEGDZUVM.js.map +0 -1
  437. package/dist/chunk-IIS7INHF.js +0 -47
  438. package/dist/chunk-IIS7INHF.js.map +0 -1
  439. package/dist/chunk-ITELSEFU.js +0 -256
  440. package/dist/chunk-ITELSEFU.js.map +0 -1
  441. package/dist/chunk-IXAYNBOY.js +0 -407
  442. package/dist/chunk-IXAYNBOY.js.map +0 -1
  443. package/dist/chunk-JUW2ETEI.js +0 -191
  444. package/dist/chunk-JUW2ETEI.js.map +0 -1
  445. package/dist/chunk-K65C7CVE.js +0 -127
  446. package/dist/chunk-K65C7CVE.js.map +0 -1
  447. package/dist/chunk-KDI64MCY.js +0 -189
  448. package/dist/chunk-KDI64MCY.js.map +0 -1
  449. package/dist/chunk-KN4ASMH5.js +0 -160
  450. package/dist/chunk-KN4ASMH5.js.map +0 -1
  451. package/dist/chunk-KQW7QNTU.js +0 -1549
  452. package/dist/chunk-KQW7QNTU.js.map +0 -1
  453. package/dist/chunk-KR7NXXHC.js +0 -66
  454. package/dist/chunk-KR7NXXHC.js.map +0 -1
  455. package/dist/chunk-KRZKIVMA.js +0 -142
  456. package/dist/chunk-KRZKIVMA.js.map +0 -1
  457. package/dist/chunk-KTTLLKGQ.js +0 -185
  458. package/dist/chunk-KTTLLKGQ.js.map +0 -1
  459. package/dist/chunk-KWKSHPDP.js +0 -234
  460. package/dist/chunk-KWKSHPDP.js.map +0 -1
  461. package/dist/chunk-KZVC7OYG.js +0 -57
  462. package/dist/chunk-KZVC7OYG.js.map +0 -1
  463. package/dist/chunk-L5DHUN2V.js +0 -204
  464. package/dist/chunk-L5DHUN2V.js.map +0 -1
  465. package/dist/chunk-LCTGEH57.js +0 -1376
  466. package/dist/chunk-LCTGEH57.js.map +0 -1
  467. package/dist/chunk-LXLIQ2D6.js +0 -12
  468. package/dist/chunk-LXLIQ2D6.js.map +0 -1
  469. package/dist/chunk-M4CTURKX.js +0 -84
  470. package/dist/chunk-M4CTURKX.js.map +0 -1
  471. package/dist/chunk-M6LTUPVP.js +0 -301
  472. package/dist/chunk-M6LTUPVP.js.map +0 -1
  473. package/dist/chunk-MA6RRHDT.js +0 -291
  474. package/dist/chunk-MA6RRHDT.js.map +0 -1
  475. package/dist/chunk-MODE4QIA.js +0 -6
  476. package/dist/chunk-MODE4QIA.js.map +0 -1
  477. package/dist/chunk-MVILMVGG.js +0 -118
  478. package/dist/chunk-MVILMVGG.js.map +0 -1
  479. package/dist/chunk-MWS4VCLV.js +0 -17
  480. package/dist/chunk-MWS4VCLV.js.map +0 -1
  481. package/dist/chunk-NEUX74SO.js +0 -315
  482. package/dist/chunk-NEUX74SO.js.map +0 -1
  483. package/dist/chunk-NFHKYBRD.js +0 -156
  484. package/dist/chunk-NFHKYBRD.js.map +0 -1
  485. package/dist/chunk-NHJNNXD3.js +0 -89
  486. package/dist/chunk-NHJNNXD3.js.map +0 -1
  487. package/dist/chunk-O2BF3HZL.js +0 -33
  488. package/dist/chunk-O2BF3HZL.js.map +0 -1
  489. package/dist/chunk-OANXCZYD.js +0 -212
  490. package/dist/chunk-OANXCZYD.js.map +0 -1
  491. package/dist/chunk-ODJF7YIP.js +0 -230
  492. package/dist/chunk-ODJF7YIP.js.map +0 -1
  493. package/dist/chunk-ON4BJTHI.js +0 -101
  494. package/dist/chunk-ON4BJTHI.js.map +0 -1
  495. package/dist/chunk-OTL5WXIJ.js +0 -16
  496. package/dist/chunk-OTL5WXIJ.js.map +0 -1
  497. package/dist/chunk-PACNBKJV.js +0 -47
  498. package/dist/chunk-PACNBKJV.js.map +0 -1
  499. package/dist/chunk-PROCA7K7.js +0 -23
  500. package/dist/chunk-PROCA7K7.js.map +0 -1
  501. package/dist/chunk-QGMIPA67.js +0 -85
  502. package/dist/chunk-QGMIPA67.js.map +0 -1
  503. package/dist/chunk-QQA37LFB.js +0 -190
  504. package/dist/chunk-QQA37LFB.js.map +0 -1
  505. package/dist/chunk-QZAWRSEB.js +0 -61
  506. package/dist/chunk-QZAWRSEB.js.map +0 -1
  507. package/dist/chunk-R74KGWNS.js +0 -699
  508. package/dist/chunk-R74KGWNS.js.map +0 -1
  509. package/dist/chunk-RFDLHMKL.js +0 -110
  510. package/dist/chunk-RFDLHMKL.js.map +0 -1
  511. package/dist/chunk-RL64HN7S.js +0 -40
  512. package/dist/chunk-RL64HN7S.js.map +0 -1
  513. package/dist/chunk-RMRQKPL7.js +0 -115
  514. package/dist/chunk-RMRQKPL7.js.map +0 -1
  515. package/dist/chunk-RQVK4IYC.js +0 -606
  516. package/dist/chunk-RQVK4IYC.js.map +0 -1
  517. package/dist/chunk-RTW56PWZ.js +0 -59
  518. package/dist/chunk-RTW56PWZ.js.map +0 -1
  519. package/dist/chunk-RUTPQNLR.js +0 -266
  520. package/dist/chunk-RUTPQNLR.js.map +0 -1
  521. package/dist/chunk-S6TAF63G.js +0 -25
  522. package/dist/chunk-S6TAF63G.js.map +0 -1
  523. package/dist/chunk-SBGAUGXY.js +0 -224
  524. package/dist/chunk-SBGAUGXY.js.map +0 -1
  525. package/dist/chunk-SC275NHZ.js +0 -407
  526. package/dist/chunk-SC275NHZ.js.map +0 -1
  527. package/dist/chunk-SCQPU4UE.js +0 -97
  528. package/dist/chunk-SCQPU4UE.js.map +0 -1
  529. package/dist/chunk-SFFF2WQP.js +0 -8
  530. package/dist/chunk-SFFF2WQP.js.map +0 -1
  531. package/dist/chunk-SJYMHZKA.js +0 -36
  532. package/dist/chunk-SJYMHZKA.js.map +0 -1
  533. package/dist/chunk-SLCCUJVN.js +0 -125
  534. package/dist/chunk-SLCCUJVN.js.map +0 -1
  535. package/dist/chunk-SVBSNSD4.js +0 -259
  536. package/dist/chunk-SVBSNSD4.js.map +0 -1
  537. package/dist/chunk-SVPLTL35.js +0 -62
  538. package/dist/chunk-SVPLTL35.js.map +0 -1
  539. package/dist/chunk-SWQFYNYG.js +0 -338
  540. package/dist/chunk-SWQFYNYG.js.map +0 -1
  541. package/dist/chunk-THHB4EWS.js +0 -72
  542. package/dist/chunk-THHB4EWS.js.map +0 -1
  543. package/dist/chunk-TUCDD33E.js +0 -246
  544. package/dist/chunk-TUCDD33E.js.map +0 -1
  545. package/dist/chunk-TV4WAP2R.js +0 -14
  546. package/dist/chunk-TV4WAP2R.js.map +0 -1
  547. package/dist/chunk-U3A6YBTZ.js +0 -134
  548. package/dist/chunk-U3A6YBTZ.js.map +0 -1
  549. package/dist/chunk-UGT6DKWM.js +0 -95
  550. package/dist/chunk-VSERHUWD.js +0 -212
  551. package/dist/chunk-VSERHUWD.js.map +0 -1
  552. package/dist/chunk-VYG7BDXC.js +0 -49
  553. package/dist/chunk-VYG7BDXC.js.map +0 -1
  554. package/dist/chunk-WETKNYZX.js +0 -52
  555. package/dist/chunk-WETKNYZX.js.map +0 -1
  556. package/dist/chunk-WGG4AML3.js +0 -216
  557. package/dist/chunk-WGG4AML3.js.map +0 -1
  558. package/dist/chunk-WKAUEL6I.js +0 -30
  559. package/dist/chunk-WKAUEL6I.js.map +0 -1
  560. package/dist/chunk-WPOLA5CG.js +0 -81
  561. package/dist/chunk-WPOLA5CG.js.map +0 -1
  562. package/dist/chunk-WPVETCGJ.js +0 -254
  563. package/dist/chunk-WPVETCGJ.js.map +0 -1
  564. package/dist/chunk-WTSM3A7E.js +0 -13
  565. package/dist/chunk-WTSM3A7E.js.map +0 -1
  566. package/dist/chunk-WU3F2K3T.js +0 -148
  567. package/dist/chunk-WU3F2K3T.js.map +0 -1
  568. package/dist/chunk-WZZK2DTZ.js +0 -39
  569. package/dist/chunk-WZZK2DTZ.js.map +0 -1
  570. package/dist/chunk-X4IHLKRD.js +0 -42
  571. package/dist/chunk-X4IHLKRD.js.map +0 -1
  572. package/dist/chunk-XAHEXZJC.js +0 -80
  573. package/dist/chunk-XAHEXZJC.js.map +0 -1
  574. package/dist/chunk-XCYGJDUX.js +0 -31
  575. package/dist/chunk-XCYGJDUX.js.map +0 -1
  576. package/dist/chunk-Y4W3JORC.js +0 -104
  577. package/dist/chunk-Y4W3JORC.js.map +0 -1
  578. package/dist/chunk-YFZJ3ZLG.js +0 -1297
  579. package/dist/chunk-YFZJ3ZLG.js.map +0 -1
  580. package/dist/chunk-YI3WLXEN.js +0 -4387
  581. package/dist/chunk-YI3WLXEN.js.map +0 -1
  582. package/dist/chunk-ZBKFSPD3.js +0 -29
  583. package/dist/chunk-ZBKFSPD3.js.map +0 -1
  584. package/dist/chunk-ZOERRQ6A.js +0 -79
  585. package/dist/chunk-ZOERRQ6A.js.map +0 -1
  586. package/dist/chunk-ZSTGUKHU.js +0 -10
  587. package/dist/chunk-ZSTGUKHU.js.map +0 -1
  588. package/dist/chunk-ZUEHDL27.js +0 -65
  589. package/dist/chunk-ZUEHDL27.js.map +0 -1
  590. package/dist/constants-D3gaMY-W.d.ts +0 -39
  591. package/dist/icons.js.map +0 -1
  592. package/dist/index.js.map +0 -1
  593. package/dist/internal/blocks/AIKit.js.map +0 -1
  594. package/dist/internal/blocks/AppShell.js.map +0 -1
  595. package/dist/internal/blocks/AutoSaveTextarea.js.map +0 -1
  596. package/dist/internal/blocks/BrandEditor.js.map +0 -1
  597. package/dist/internal/blocks/ClipboardButton.js.map +0 -1
  598. package/dist/internal/blocks/ColorInput.js.map +0 -1
  599. package/dist/internal/blocks/ColorModeSwitch.js.map +0 -1
  600. package/dist/internal/blocks/Command.js.map +0 -1
  601. package/dist/internal/blocks/CopyField.js.map +0 -1
  602. package/dist/internal/blocks/DateInput.js.map +0 -1
  603. package/dist/internal/blocks/DateRangeInput.js.map +0 -1
  604. package/dist/internal/blocks/Form.js.map +0 -1
  605. package/dist/internal/blocks/FormGroup.js.map +0 -1
  606. package/dist/internal/blocks/MultiActionButtonGroup.js.map +0 -1
  607. package/dist/internal/blocks/OtpInput.js.map +0 -1
  608. package/dist/internal/blocks/PageHeader.js.map +0 -1
  609. package/dist/internal/blocks/PageLayout.js.map +0 -1
  610. package/dist/internal/blocks/PageToolbar.js.map +0 -1
  611. package/dist/internal/blocks/SearchInput.js.map +0 -1
  612. package/dist/internal/blocks/SectionNav.js.map +0 -1
  613. package/dist/internal/blocks/TextInput.js.map +0 -1
  614. package/dist/internal/components/Alert.js.map +0 -1
  615. package/dist/internal/components/AlertModal.js.map +0 -1
  616. package/dist/internal/components/Badge.js.map +0 -1
  617. package/dist/internal/components/BrandLogo.js.map +0 -1
  618. package/dist/internal/components/Breadcrumb.js.map +0 -1
  619. package/dist/internal/components/Button.js.map +0 -1
  620. package/dist/internal/components/Calendar.js.map +0 -1
  621. package/dist/internal/components/Card.js.map +0 -1
  622. package/dist/internal/components/Checkbox.js.map +0 -1
  623. package/dist/internal/components/Clipboard.js.map +0 -1
  624. package/dist/internal/components/Collapsible.js.map +0 -1
  625. package/dist/internal/components/Combobox.js.map +0 -1
  626. package/dist/internal/components/DatePicker.js.map +0 -1
  627. package/dist/internal/components/DateRangePicker.js.map +0 -1
  628. package/dist/internal/components/DiffView.js.map +0 -1
  629. package/dist/internal/components/DropdownMenu.js.map +0 -1
  630. package/dist/internal/components/FileUpload.js.map +0 -1
  631. package/dist/internal/components/FullScreenModal.js.map +0 -1
  632. package/dist/internal/components/HoverCard.js.map +0 -1
  633. package/dist/internal/components/InputGroup.js.map +0 -1
  634. package/dist/internal/components/Kbd.js.map +0 -1
  635. package/dist/internal/components/MarkedText.js.map +0 -1
  636. package/dist/internal/components/MergeEditor/useMergeDiff.js.map +0 -1
  637. package/dist/internal/components/Modal.js.map +0 -1
  638. package/dist/internal/components/Navbar.js.map +0 -1
  639. package/dist/internal/components/Pagination.js.map +0 -1
  640. package/dist/internal/components/Popconfirm.js.map +0 -1
  641. package/dist/internal/components/Popover.js.map +0 -1
  642. package/dist/internal/components/RadioGroup.js.map +0 -1
  643. package/dist/internal/components/Resizable.js.map +0 -1
  644. package/dist/internal/components/Search.js.map +0 -1
  645. package/dist/internal/components/Select.js.map +0 -1
  646. package/dist/internal/components/Sheet.js.map +0 -1
  647. package/dist/internal/components/Sidebar.js.map +0 -1
  648. package/dist/internal/components/Slider.js.map +0 -1
  649. package/dist/internal/components/Stepper.js.map +0 -1
  650. package/dist/internal/components/Switch.js.map +0 -1
  651. package/dist/internal/components/Table.js.map +0 -1
  652. package/dist/internal/components/Tabs.js.map +0 -1
  653. package/dist/internal/components/ThemeProvider.js.map +0 -1
  654. package/dist/internal/components/TimePicker.js.map +0 -1
  655. package/dist/internal/components/Timeline.js.map +0 -1
  656. package/dist/internal/components/Toast.js.map +0 -1
  657. package/dist/internal/components/ToggleGroup.js.map +0 -1
  658. package/dist/internal/components/Tooltip.js.map +0 -1
  659. package/dist/internal/components/Workbench.js.map +0 -1
  660. package/dist/internal/components/ZoomableSvg.js.map +0 -1
  661. package/dist/internal/utils.js.map +0 -1
  662. package/dist/mermaid.js.map +0 -1
@@ -0,0 +1,61 @@
1
+ import { DEFAULT_BRAND_ID, DEFAULT_COLOR_SCHEME } from "./context-KxxeMHbR.js";
2
+ import { useCallback, useEffect, useState } from "react";
3
+ //#region src/components/ThemeProvider/useBrandState.ts
4
+ const BRAND_ATTRIBUTE = "data-brand";
5
+ const useBrandState = ({ defaultBrandId: defaultBrand = DEFAULT_BRAND_ID, brandId: controlledBrand, onBrandIdChange: onBrandChange } = {}) => {
6
+ const [uncontrolledBrand, setUncontrolledBrand] = useState(defaultBrand);
7
+ const isControlled = controlledBrand !== void 0;
8
+ const brandId = isControlled ? controlledBrand : uncontrolledBrand;
9
+ const setBrand = useCallback((next) => {
10
+ if (!isControlled) setUncontrolledBrand(next);
11
+ onBrandChange?.(next);
12
+ }, [isControlled, onBrandChange]);
13
+ useEffect(() => {
14
+ if (typeof document === "undefined") return;
15
+ document.documentElement.setAttribute(BRAND_ATTRIBUTE, brandId);
16
+ }, [brandId]);
17
+ return {
18
+ brandId,
19
+ setBrand
20
+ };
21
+ };
22
+ //#endregion
23
+ //#region src/components/ThemeProvider/useColorSchemeState.ts
24
+ const DARK_QUERY = "(prefers-color-scheme: dark)";
25
+ const THEME_ATTRIBUTE = "data-theme";
26
+ const getSystemColorScheme = () => {
27
+ if (typeof window === "undefined" || typeof window.matchMedia !== "function") return "light";
28
+ return window.matchMedia(DARK_QUERY).matches ? "dark" : "light";
29
+ };
30
+ const useColorSchemeState = ({ defaultScheme = DEFAULT_COLOR_SCHEME, scheme: propScheme, onSchemeChange } = {}) => {
31
+ const [uncontrolledScheme, setUncontrolledScheme] = useState(defaultScheme);
32
+ const [systemScheme, setSystemScheme] = useState(getSystemColorScheme);
33
+ const isControlled = propScheme !== void 0;
34
+ const scheme = isControlled ? propScheme : uncontrolledScheme;
35
+ const setScheme = useCallback((next) => {
36
+ if (!isControlled) setUncontrolledScheme(next);
37
+ onSchemeChange?.(next);
38
+ }, [isControlled, onSchemeChange]);
39
+ useEffect(() => {
40
+ if (typeof window === "undefined" || typeof window.matchMedia !== "function") return;
41
+ const mq = window.matchMedia(DARK_QUERY);
42
+ const onChange = () => setSystemScheme(mq.matches ? "dark" : "light");
43
+ onChange();
44
+ mq.addEventListener("change", onChange);
45
+ return () => mq.removeEventListener("change", onChange);
46
+ }, []);
47
+ const resolvedScheme = scheme === "system" ? systemScheme : scheme;
48
+ useEffect(() => {
49
+ if (typeof document === "undefined") return;
50
+ document.documentElement.setAttribute(THEME_ATTRIBUTE, resolvedScheme);
51
+ }, [resolvedScheme]);
52
+ return {
53
+ scheme,
54
+ resolvedScheme,
55
+ setScheme
56
+ };
57
+ };
58
+ //#endregion
59
+ export { BRAND_ATTRIBUTE, THEME_ATTRIBUTE, useBrandState, useColorSchemeState };
60
+
61
+ //# sourceMappingURL=useColorSchemeState-CYqcUfSH.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"useColorSchemeState-CYqcUfSH.js","names":[],"sources":["../src/components/ThemeProvider/useBrandState.ts","../src/components/ThemeProvider/useColorSchemeState.ts"],"sourcesContent":["import { useCallback, useEffect, useState } from 'react';\n\nimport { DEFAULT_BRAND_ID } from './defaults';\nimport type { BrandId } from './types';\n\nexport const BRAND_ATTRIBUTE = 'data-brand';\n\nexport type UseBrandOptions = {\n /** Initial active brand id for uncontrolled use. Defaults to the design-system sentinel (`DEFAULT_BRAND_ID`) — no brand tokens injected, so the stylesheet defaults apply. */\n defaultBrandId?: BrandId;\n /** Controlled active brand id. When set, the parent owns the value and `setBrand` only notifies via `onBrandIdChange` (it does not mutate internal state). */\n brandId?: BrandId;\n /** Called with the next id whenever `setBrand` runs — required to persist the choice in controlled mode. */\n onBrandIdChange?: (brandId: BrandId) => void;\n};\n\nexport const useBrandState = ({\n defaultBrandId: defaultBrand = DEFAULT_BRAND_ID,\n brandId: controlledBrand,\n onBrandIdChange: onBrandChange,\n}: UseBrandOptions = {}) => {\n const [uncontrolledBrand, setUncontrolledBrand] = useState(defaultBrand);\n\n const isControlled = controlledBrand !== undefined;\n const brandId = isControlled ? controlledBrand : uncontrolledBrand;\n\n const setBrand = useCallback(\n (next: BrandId) => {\n if (!isControlled) setUncontrolledBrand(next);\n onBrandChange?.(next);\n },\n [isControlled, onBrandChange],\n );\n\n useEffect(() => {\n if (typeof document === 'undefined') return;\n document.documentElement.setAttribute(BRAND_ATTRIBUTE, brandId);\n }, [brandId]);\n\n return { brandId, setBrand };\n};\n","import { useCallback, useEffect, useState } from 'react';\n\nimport { DEFAULT_COLOR_SCHEME } from './defaults';\nimport type { ColorScheme, ResolvedColorScheme } from './types';\n\nconst DARK_QUERY = '(prefers-color-scheme: dark)';\nexport const THEME_ATTRIBUTE = 'data-theme';\n\nconst getSystemColorScheme = (): ResolvedColorScheme => {\n if (typeof window === 'undefined' || typeof window.matchMedia !== 'function') return 'light';\n return window.matchMedia(DARK_QUERY).matches ? 'dark' : 'light';\n};\n\nexport type UseColorSchemeOptions = {\n /** Initial colour scheme for uncontrolled use. Defaults to `light` (`DEFAULT_COLOR_SCHEME`). */\n defaultScheme?: ColorScheme;\n /** Controlled colour scheme (`light` / `dark` / `system`). When set, the parent owns the value and `setScheme` only notifies via `onSchemeChange`. `system` follows `prefers-color-scheme` and resolves reactively. */\n scheme?: ColorScheme;\n /** Called with the next scheme whenever `setScheme` runs — required to persist the choice in controlled mode. */\n onSchemeChange?: (theme: ColorScheme) => void;\n};\n\nexport const useColorSchemeState = ({\n defaultScheme = DEFAULT_COLOR_SCHEME,\n scheme: propScheme,\n onSchemeChange,\n}: UseColorSchemeOptions = {}) => {\n const [uncontrolledScheme, setUncontrolledScheme] = useState(defaultScheme);\n const [systemScheme, setSystemScheme] = useState<ResolvedColorScheme>(getSystemColorScheme);\n\n const isControlled = propScheme !== undefined;\n const scheme = isControlled ? propScheme : uncontrolledScheme;\n\n const setScheme = useCallback(\n (next: ColorScheme) => {\n if (!isControlled) setUncontrolledScheme(next);\n onSchemeChange?.(next);\n },\n [isControlled, onSchemeChange],\n );\n\n // Track the OS preference so `system` stays live as the user flips it.\n useEffect(() => {\n if (typeof window === 'undefined' || typeof window.matchMedia !== 'function') return;\n const mq = window.matchMedia(DARK_QUERY);\n const onChange = () => setSystemScheme(mq.matches ? 'dark' : 'light');\n onChange();\n mq.addEventListener('change', onChange);\n return () => mq.removeEventListener('change', onChange);\n }, []);\n\n const resolvedScheme: ResolvedColorScheme = scheme === 'system' ? systemScheme : scheme;\n\n useEffect(() => {\n if (typeof document === 'undefined') return;\n document.documentElement.setAttribute(THEME_ATTRIBUTE, resolvedScheme);\n }, [resolvedScheme]);\n\n return { scheme, resolvedScheme, setScheme };\n};\n"],"mappings":";;;AAKA,MAAa,kBAAkB;AAW/B,MAAa,iBAAiB,EAC5B,gBAAgB,eAAe,kBAC/B,SAAS,iBACT,iBAAiB,kBACE,CAAC,MAAM;CAC1B,MAAM,CAAC,mBAAmB,wBAAwB,SAAS,YAAY;CAEvE,MAAM,eAAe,oBAAoB,KAAA;CACzC,MAAM,UAAU,eAAe,kBAAkB;CAEjD,MAAM,WAAW,aACd,SAAkB;EACjB,IAAI,CAAC,cAAc,qBAAqB,IAAI;EAC5C,gBAAgB,IAAI;CACtB,GACA,CAAC,cAAc,aAAa,CAC9B;CAEA,gBAAgB;EACd,IAAI,OAAO,aAAa,aAAa;EACrC,SAAS,gBAAgB,aAAa,iBAAiB,OAAO;CAChE,GAAG,CAAC,OAAO,CAAC;CAEZ,OAAO;EAAE;EAAS;CAAS;AAC7B;;;ACnCA,MAAM,aAAa;AACnB,MAAa,kBAAkB;AAE/B,MAAM,6BAAkD;CACtD,IAAI,OAAO,WAAW,eAAe,OAAO,OAAO,eAAe,YAAY,OAAO;CACrF,OAAO,OAAO,WAAW,UAAU,CAAC,CAAC,UAAU,SAAS;AAC1D;AAWA,MAAa,uBAAuB,EAClC,gBAAgB,sBAChB,QAAQ,YACR,mBACyB,CAAC,MAAM;CAChC,MAAM,CAAC,oBAAoB,yBAAyB,SAAS,aAAa;CAC1E,MAAM,CAAC,cAAc,mBAAmB,SAA8B,oBAAoB;CAE1F,MAAM,eAAe,eAAe,KAAA;CACpC,MAAM,SAAS,eAAe,aAAa;CAE3C,MAAM,YAAY,aACf,SAAsB;EACrB,IAAI,CAAC,cAAc,sBAAsB,IAAI;EAC7C,iBAAiB,IAAI;CACvB,GACA,CAAC,cAAc,cAAc,CAC/B;CAGA,gBAAgB;EACd,IAAI,OAAO,WAAW,eAAe,OAAO,OAAO,eAAe,YAAY;EAC9E,MAAM,KAAK,OAAO,WAAW,UAAU;EACvC,MAAM,iBAAiB,gBAAgB,GAAG,UAAU,SAAS,OAAO;EACpE,SAAS;EACT,GAAG,iBAAiB,UAAU,QAAQ;EACtC,aAAa,GAAG,oBAAoB,UAAU,QAAQ;CACxD,GAAG,CAAC,CAAC;CAEL,MAAM,iBAAsC,WAAW,WAAW,eAAe;CAEjF,gBAAgB;EACd,IAAI,OAAO,aAAa,aAAa;EACrC,SAAS,gBAAgB,aAAa,iBAAiB,cAAc;CACvE,GAAG,CAAC,cAAc,CAAC;CAEnB,OAAO;EAAE;EAAQ;EAAgB;CAAU;AAC7C"}
@@ -0,0 +1,31 @@
1
+ import { useCallback, useRef, useState } from "react";
2
+ //#region src/hooks/useControllableState.ts
3
+ /**
4
+ * Controlled/uncontrolled state, à la Radix's `useControllableState`.
5
+ *
6
+ * Returns a `[value, setValue]` tuple where `setValue` accepts a value or an updater
7
+ * function (`SetStateAction<T>`). In controlled mode (`prop !== undefined`) the hook never
8
+ * owns state — `setValue` resolves the next value and calls `onChange`; the parent is
9
+ * responsible for feeding the new `prop` back. In uncontrolled mode the hook owns the value
10
+ * in internal state and still calls `onChange`. `onChange` fires on every `setValue` call
11
+ * (it is not deduped against the previous value).
12
+ */
13
+ const useControllableState = ({ prop, defaultProp, onChange }) => {
14
+ const [uncontrolled, setUncontrolled] = useState(defaultProp);
15
+ const isControlled = prop !== void 0;
16
+ const value = prop !== void 0 ? prop : uncontrolled;
17
+ const valueRef = useRef(value);
18
+ valueRef.current = value;
19
+ const onChangeRef = useRef(onChange);
20
+ onChangeRef.current = onChange;
21
+ return [value, useCallback((next) => {
22
+ const nextValue = typeof next === "function" ? next(valueRef.current) : next;
23
+ valueRef.current = nextValue;
24
+ if (!isControlled) setUncontrolled(nextValue);
25
+ onChangeRef.current?.(nextValue);
26
+ }, [isControlled])];
27
+ };
28
+ //#endregion
29
+ export { useControllableState };
30
+
31
+ //# sourceMappingURL=useControllableState-M6494mCT.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"useControllableState-M6494mCT.js","names":[],"sources":["../src/hooks/useControllableState.ts"],"sourcesContent":["import { useCallback, useRef, useState } from 'react';\nimport type { Dispatch, SetStateAction } from 'react';\n\ntype UseControllableStateParams<T> = {\n /** The controlled value. When defined, the hook operates in controlled mode. */\n prop: T | undefined;\n /** The initial value used in uncontrolled mode. */\n defaultProp: T;\n /** Called with the next value whenever `setValue` runs (controlled and uncontrolled). */\n onChange?: (value: T) => void;\n};\n\n/**\n * Controlled/uncontrolled state, à la Radix's `useControllableState`.\n *\n * Returns a `[value, setValue]` tuple where `setValue` accepts a value or an updater\n * function (`SetStateAction<T>`). In controlled mode (`prop !== undefined`) the hook never\n * owns state — `setValue` resolves the next value and calls `onChange`; the parent is\n * responsible for feeding the new `prop` back. In uncontrolled mode the hook owns the value\n * in internal state and still calls `onChange`. `onChange` fires on every `setValue` call\n * (it is not deduped against the previous value).\n */\nexport const useControllableState = <T>({\n prop,\n defaultProp,\n onChange,\n}: UseControllableStateParams<T>): readonly [T, Dispatch<SetStateAction<T>>] => {\n const [uncontrolled, setUncontrolled] = useState<T>(defaultProp);\n const isControlled = prop !== undefined;\n // Inline the `!== undefined` check (rather than reusing `isControlled`) so TypeScript\n // narrows `prop` from `T | undefined` to `T` here.\n const value = prop !== undefined ? prop : uncontrolled;\n\n // Read the latest value/onChange without widening `setValue`'s dependency list,\n // keeping its identity stable across renders.\n const valueRef = useRef(value);\n valueRef.current = value;\n const onChangeRef = useRef(onChange);\n onChangeRef.current = onChange;\n\n const setValue = useCallback<Dispatch<SetStateAction<T>>>(\n (next) => {\n const nextValue =\n typeof next === 'function' ? (next as (prev: T) => T)(valueRef.current) : next;\n // Advance the ref immediately so multiple functional-updater calls in the same tick\n // compose (each resolves against the previous result, not the stale render value).\n valueRef.current = nextValue;\n if (!isControlled) setUncontrolled(nextValue);\n onChangeRef.current?.(nextValue);\n },\n [isControlled],\n );\n\n return [value, setValue] as const;\n};\n"],"mappings":";;;;;;;;;;;;AAsBA,MAAa,wBAA2B,EACtC,MACA,aACA,eAC8E;CAC9E,MAAM,CAAC,cAAc,mBAAmB,SAAY,WAAW;CAC/D,MAAM,eAAe,SAAS,KAAA;CAG9B,MAAM,QAAQ,SAAS,KAAA,IAAY,OAAO;CAI1C,MAAM,WAAW,OAAO,KAAK;CAC7B,SAAS,UAAU;CACnB,MAAM,cAAc,OAAO,QAAQ;CACnC,YAAY,UAAU;CAetB,OAAO,CAAC,OAbS,aACd,SAAS;EACR,MAAM,YACJ,OAAO,SAAS,aAAc,KAAwB,SAAS,OAAO,IAAI;EAG5E,SAAS,UAAU;EACnB,IAAI,CAAC,cAAc,gBAAgB,SAAS;EAC5C,YAAY,UAAU,SAAS;CACjC,GACA,CAAC,YAAY,CAGO,CAAC;AACzB"}
@@ -0,0 +1,15 @@
1
+ import { useCallback, useState } from "react";
2
+ //#region src/hooks/useElement.ts
3
+ const useElement = () => {
4
+ const [element, _setElement] = useState(null);
5
+ return [element, useCallback((node) => {
6
+ _setElement((prev) => {
7
+ if (prev !== null) return prev;
8
+ return node;
9
+ });
10
+ }, [])];
11
+ };
12
+ //#endregion
13
+ export { useElement };
14
+
15
+ //# sourceMappingURL=useElement-DkF6esWL.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"useElement-DkF6esWL.js","names":[],"sources":["../src/hooks/useElement.ts"],"sourcesContent":["import { useCallback, useState } from 'react';\n\n// This hook is used to set an element reference and ensure that it only updates once, when element is first set.\nexport const useElement = () => {\n const [element, _setElement] = useState<HTMLElement | null>(null);\n\n const setElement = useCallback((node: HTMLElement | null) => {\n _setElement((prev) => {\n // Only update if not already set\n if (prev !== null) return prev;\n return node;\n });\n }, []);\n\n return [element, setElement] as const;\n};\n"],"mappings":";;AAGA,MAAa,mBAAmB;CAC9B,MAAM,CAAC,SAAS,eAAe,SAA6B,IAAI;CAUhE,OAAO,CAAC,SARW,aAAa,SAA6B;EAC3D,aAAa,SAAS;GAEpB,IAAI,SAAS,MAAM,OAAO;GAC1B,OAAO;EACT,CAAC;CACH,GAAG,CAAC,CAEsB,CAAC;AAC7B"}
@@ -0,0 +1,465 @@
1
+ import { CHANGE_CLASS, CHUNK_TYPE } from "./internal/components/MergeEditor/constants.js";
2
+ import { useCallback, useEffect, useLayoutEffect, useMemo, useRef, useState } from "react";
3
+ import { diffLines } from "diff";
4
+ import { diff3Merge } from "node-diff3";
5
+ //#region src/components/MergeEditor/helpers.ts
6
+ /**
7
+ * Computes diff chunks between oldText and newText using line-level diffing.
8
+ * Adjacent removed+added pairs are kept as separate chunks so the consumer
9
+ * can pair them into "modifications" for accept controls.
10
+ */
11
+ const computeDiffChunks = (oldText, newText) => {
12
+ const changes = diffLines(oldText, newText);
13
+ const chunks = [];
14
+ let oldLine = 1;
15
+ let newLine = 1;
16
+ for (const change of changes) {
17
+ if (change.value === "") continue;
18
+ const lineCount = change.count || change.value.replace(/\n$/, "").split("\n").length;
19
+ if (change.removed) {
20
+ chunks.push({
21
+ type: CHUNK_TYPE.REMOVED,
22
+ value: change.value,
23
+ oldStart: oldLine,
24
+ oldEnd: oldLine + lineCount - 1,
25
+ newStart: newLine,
26
+ newEnd: newLine
27
+ });
28
+ oldLine += lineCount;
29
+ } else if (change.added) {
30
+ chunks.push({
31
+ type: CHUNK_TYPE.ADDED,
32
+ value: change.value,
33
+ oldStart: oldLine,
34
+ oldEnd: oldLine,
35
+ newStart: newLine,
36
+ newEnd: newLine + lineCount - 1
37
+ });
38
+ newLine += lineCount;
39
+ } else {
40
+ chunks.push({
41
+ type: CHUNK_TYPE.UNCHANGED,
42
+ value: change.value,
43
+ oldStart: oldLine,
44
+ oldEnd: oldLine + lineCount - 1,
45
+ newStart: newLine,
46
+ newEnd: newLine + lineCount - 1
47
+ });
48
+ oldLine += lineCount;
49
+ newLine += lineCount;
50
+ }
51
+ }
52
+ return chunks;
53
+ };
54
+ /**
55
+ * Collects 1-indexed line numbers that are marked as changed (added or removed)
56
+ * from a set of diff chunks. `side` determines which line range to use.
57
+ */
58
+ const getChangedLineNumbers = (chunks, side) => {
59
+ const lines = /* @__PURE__ */ new Set();
60
+ for (const chunk of chunks) {
61
+ if (chunk.type === CHUNK_TYPE.UNCHANGED) continue;
62
+ if (side === "old" && chunk.type === CHUNK_TYPE.REMOVED) for (let i = chunk.oldStart; i <= chunk.oldEnd; i++) lines.add(i);
63
+ if (side === "new" && chunk.type === CHUNK_TYPE.ADDED) for (let i = chunk.newStart; i <= chunk.newEnd; i++) lines.add(i);
64
+ }
65
+ return lines;
66
+ };
67
+ /**
68
+ * Filters changed line numbers, keeping only those that are classified
69
+ * and not suppressed (resolved/dismissed).
70
+ *
71
+ * `classification` and `suppressedLines` must be keyed by line numbers
72
+ * from the same `side` (old-side lines for 'old', new-side lines for 'new').
73
+ */
74
+ const filterHighlightedLines = (chunks, side, classification, suppressedLines) => {
75
+ const filtered = /* @__PURE__ */ new Set();
76
+ for (const line of getChangedLineNumbers(chunks, side)) if (classification.has(line) && !suppressedLines.has(line)) filtered.add(line);
77
+ return filtered;
78
+ };
79
+ /**
80
+ * Replaces lines in `text` between `startLine` and `endLine` (1-indexed, inclusive)
81
+ * with `replacementLines`. If startLine > endLine, inserts before startLine.
82
+ */
83
+ const replaceLines = (text, startLine, endLine, replacement) => {
84
+ const lines = text.split("\n");
85
+ const before = lines.slice(0, startLine - 1);
86
+ const after = startLine > endLine ? lines.slice(startLine - 1) : lines.slice(endLine);
87
+ const replacementArr = replacement === "" ? [] : replacement.replace(/\n$/, "").split("\n");
88
+ return [
89
+ ...before,
90
+ ...replacementArr,
91
+ ...after
92
+ ].join("\n");
93
+ };
94
+ //#endregion
95
+ //#region src/components/MergeEditor/useMergeDiff.ts
96
+ const DEBOUNCE_MS = 150;
97
+ const rangesOverlap = (s1, e1, s2, e2) => s1 <= e2 && e1 >= s2;
98
+ const computeSuppressedLines = (dismissedLines, pairs, resolvedIds, getRange) => {
99
+ const lines = new Set(dismissedLines);
100
+ for (const pair of pairs) if (resolvedIds.has(pair.id)) {
101
+ const [start, end] = getRange(pair);
102
+ for (let i = start; i <= end; i++) lines.add(i);
103
+ }
104
+ return lines;
105
+ };
106
+ const filterVisibleConflicts = (conflicts, classification, dismissedLines, getRange, findPair, fullyResolvedPairIds) => conflicts.filter((c) => {
107
+ const [start, end] = getRange(c);
108
+ let hasClassifiedLine = false;
109
+ let allDismissed = true;
110
+ for (let i = start; i <= end; i++) {
111
+ if (classification.has(i)) hasClassifiedLine = true;
112
+ if (!dismissedLines.has(i)) allDismissed = false;
113
+ }
114
+ if (!hasClassifiedLine || allDismissed) return false;
115
+ const pair = findPair(c);
116
+ return !pair || !fullyResolvedPairIds.has(pair.id);
117
+ });
118
+ const useMergeDiff = (baseText, leftText, rightText) => {
119
+ const [mergeValue, setMergeValue] = useState(baseText);
120
+ const debounceRef = useRef(null);
121
+ const [debouncedMergeValue, setDebouncedMergeValue] = useState(mergeValue);
122
+ const [acceptedPairSides, setAcceptedPairSides] = useState(() => /* @__PURE__ */ new Map());
123
+ const [dismissedLeftLines, setDismissedLeftLines] = useState(() => /* @__PURE__ */ new Set());
124
+ const [dismissedRightLines, setDismissedRightLines] = useState(() => /* @__PURE__ */ new Set());
125
+ const reset = useCallback(() => {
126
+ if (debounceRef.current) {
127
+ clearTimeout(debounceRef.current);
128
+ debounceRef.current = null;
129
+ }
130
+ setMergeValue(baseText);
131
+ setDebouncedMergeValue(baseText);
132
+ setAcceptedPairSides(/* @__PURE__ */ new Map());
133
+ setDismissedLeftLines(/* @__PURE__ */ new Set());
134
+ setDismissedRightLines(/* @__PURE__ */ new Set());
135
+ }, [baseText]);
136
+ useLayoutEffect(() => {
137
+ reset();
138
+ }, [
139
+ baseText,
140
+ leftText,
141
+ rightText
142
+ ]);
143
+ useEffect(() => {
144
+ return () => {
145
+ if (debounceRef.current) clearTimeout(debounceRef.current);
146
+ };
147
+ }, []);
148
+ const handleMergeChange = useCallback((value) => {
149
+ setMergeValue(value);
150
+ if (debounceRef.current) clearTimeout(debounceRef.current);
151
+ debounceRef.current = setTimeout(() => {
152
+ setDebouncedMergeValue(value);
153
+ }, DEBOUNCE_MS);
154
+ }, []);
155
+ const leftDiffChunks = useMemo(() => computeDiffChunks(leftText, debouncedMergeValue), [leftText, debouncedMergeValue]);
156
+ const rightDiffChunks = useMemo(() => computeDiffChunks(debouncedMergeValue, rightText), [debouncedMergeValue, rightText]);
157
+ const leftConflicts = useMemo(() => pairChunksIntoConflicts(leftDiffChunks), [leftDiffChunks]);
158
+ const rightConflicts = useMemo(() => pairChunksIntoConflicts(rightDiffChunks), [rightDiffChunks]);
159
+ const leftVsBase = useMemo(() => computeDiffChunks(baseText, leftText), [baseText, leftText]);
160
+ const rightVsBase = useMemo(() => computeDiffChunks(baseText, rightText), [baseText, rightText]);
161
+ const { leftClassification, rightClassification, conflictPairs } = useMemo(() => {
162
+ const baseLines = baseText.split("\n");
163
+ const leftLines = leftText.split("\n");
164
+ const rightLines = rightText.split("\n");
165
+ const result = diff3Merge(leftLines, baseLines, rightLines);
166
+ const leftConflictLineSet = /* @__PURE__ */ new Set();
167
+ const rightConflictLineSet = /* @__PURE__ */ new Set();
168
+ const pairs = [];
169
+ for (const block of result) if ("conflict" in block && block.conflict) {
170
+ const { a, aIndex, b, bIndex } = block.conflict;
171
+ for (let i = 0; i < a.length; i++) leftConflictLineSet.add(aIndex + i + 1);
172
+ for (let i = 0; i < b.length; i++) rightConflictLineSet.add(bIndex + i + 1);
173
+ pairs.push({
174
+ id: `pair-${aIndex}-${bIndex}`,
175
+ leftStart: aIndex + 1,
176
+ leftEnd: aIndex + a.length,
177
+ rightStart: bIndex + 1,
178
+ rightEnd: bIndex + b.length
179
+ });
180
+ }
181
+ const leftChanged = getChangedLineNumbers(leftVsBase, "new");
182
+ const rightChanged = getChangedLineNumbers(rightVsBase, "new");
183
+ const leftMap = /* @__PURE__ */ new Map();
184
+ for (const line of leftChanged) leftMap.set(line, leftConflictLineSet.has(line) ? CHANGE_CLASS.CONFLICT : CHANGE_CLASS.SAFE);
185
+ const rightMap = /* @__PURE__ */ new Map();
186
+ for (const line of rightChanged) rightMap.set(line, rightConflictLineSet.has(line) ? CHANGE_CLASS.CONFLICT : CHANGE_CLASS.SAFE);
187
+ return {
188
+ leftClassification: leftMap,
189
+ rightClassification: rightMap,
190
+ conflictPairs: pairs
191
+ };
192
+ }, [
193
+ baseText,
194
+ leftText,
195
+ rightText,
196
+ leftVsBase,
197
+ rightVsBase
198
+ ]);
199
+ const findPairForLeft = useCallback((conflict) => conflictPairs.find((p) => rangesOverlap(conflict.oldStartLine, conflict.oldEndLine, p.leftStart, p.leftEnd)), [conflictPairs]);
200
+ const findPairForRight = useCallback((conflict) => conflictPairs.find((p) => rangesOverlap(conflict.newStartLine, conflict.newEndLine, p.rightStart, p.rightEnd)), [conflictPairs]);
201
+ const markSideAccepted = useCallback((pair, side) => {
202
+ if (!pair) return;
203
+ setAcceptedPairSides((prev) => {
204
+ const next = new Map(prev);
205
+ const sides = new Set(prev.get(pair.id) ?? []);
206
+ sides.add(side);
207
+ next.set(pair.id, sides);
208
+ return next;
209
+ });
210
+ }, []);
211
+ const isOtherSideAccepted = useCallback((pair, side) => {
212
+ if (!pair) return false;
213
+ const otherSide = side === "left" ? "right" : "left";
214
+ return acceptedPairSides.get(pair.id)?.has(otherSide) ?? false;
215
+ }, [acceptedPairSides]);
216
+ const acceptSide = useCallback((conflict, side) => {
217
+ const pair = (side === "left" ? findPairForLeft : findPairForRight)(conflict);
218
+ const otherAccepted = isOtherSideAccepted(pair, side);
219
+ const sourceValue = side === "left" ? conflict.oldValue : conflict.newValue;
220
+ const targetStart = side === "left" ? conflict.newStartLine : conflict.oldStartLine;
221
+ const targetEnd = side === "left" ? conflict.newEndLine : conflict.oldEndLine;
222
+ if (debounceRef.current) {
223
+ clearTimeout(debounceRef.current);
224
+ debounceRef.current = null;
225
+ }
226
+ const mergeTargetEmpty = side === "left" ? conflict.newValue === "" : conflict.oldValue === "";
227
+ const newValue = otherAccepted ? replaceLines(mergeValue, targetEnd + 1, targetEnd, sourceValue) : mergeTargetEmpty ? replaceLines(mergeValue, targetStart, targetStart - 1, sourceValue) : replaceLines(mergeValue, targetStart, targetEnd, sourceValue);
228
+ setMergeValue(newValue);
229
+ setDebouncedMergeValue(newValue);
230
+ markSideAccepted(pair, side);
231
+ if (!pair) {
232
+ const setDismissedSide = side === "left" ? setDismissedLeftLines : setDismissedRightLines;
233
+ const [sideStart, sideEnd] = side === "left" ? [conflict.oldStartLine, conflict.oldEndLine] : [conflict.newStartLine, conflict.newEndLine];
234
+ setDismissedSide((prev) => {
235
+ const next = new Set(prev);
236
+ for (let i = sideStart; i <= sideEnd; i++) next.add(i);
237
+ return next;
238
+ });
239
+ }
240
+ }, [
241
+ mergeValue,
242
+ findPairForLeft,
243
+ findPairForRight,
244
+ isOtherSideAccepted,
245
+ markSideAccepted
246
+ ]);
247
+ const acceptLeft = useCallback((conflict) => acceptSide(conflict, "left"), [acceptSide]);
248
+ const acceptRight = useCallback((conflict) => acceptSide(conflict, "right"), [acceptSide]);
249
+ const dismissSide = useCallback((conflict, side) => {
250
+ const setDismissed = side === "left" ? setDismissedLeftLines : setDismissedRightLines;
251
+ const [sideStart, sideEnd] = side === "left" ? [conflict.oldStartLine, conflict.oldEndLine] : [conflict.newStartLine, conflict.newEndLine];
252
+ setDismissed((prev) => {
253
+ const next = new Set(prev);
254
+ for (let i = sideStart; i <= sideEnd; i++) next.add(i);
255
+ return next;
256
+ });
257
+ }, []);
258
+ const dismissLeft = useCallback((conflict) => dismissSide(conflict, "left"), [dismissSide]);
259
+ const dismissRight = useCallback((conflict) => dismissSide(conflict, "right"), [dismissSide]);
260
+ const fullyResolvedPairIds = useMemo(() => {
261
+ const ids = /* @__PURE__ */ new Set();
262
+ for (const pair of conflictPairs) {
263
+ const leftAccepted = acceptedPairSides.get(pair.id)?.has("left") ?? false;
264
+ const rightAccepted = acceptedPairSides.get(pair.id)?.has("right") ?? false;
265
+ let leftDismissed = true;
266
+ for (let i = pair.leftStart; i <= pair.leftEnd; i++) if (!dismissedLeftLines.has(i)) {
267
+ leftDismissed = false;
268
+ break;
269
+ }
270
+ let rightDismissed = true;
271
+ for (let i = pair.rightStart; i <= pair.rightEnd; i++) if (!dismissedRightLines.has(i)) {
272
+ rightDismissed = false;
273
+ break;
274
+ }
275
+ if ((leftAccepted || leftDismissed) && (rightAccepted || rightDismissed)) ids.add(pair.id);
276
+ }
277
+ return ids;
278
+ }, [
279
+ conflictPairs,
280
+ acceptedPairSides,
281
+ dismissedLeftLines,
282
+ dismissedRightLines
283
+ ]);
284
+ const visibleLeftConflicts = useMemo(() => filterVisibleConflicts(leftConflicts, leftClassification, dismissedLeftLines, (c) => [c.oldStartLine, c.oldEndLine], findPairForLeft, fullyResolvedPairIds), [
285
+ leftConflicts,
286
+ leftClassification,
287
+ dismissedLeftLines,
288
+ findPairForLeft,
289
+ fullyResolvedPairIds
290
+ ]);
291
+ const visibleRightConflicts = useMemo(() => filterVisibleConflicts(rightConflicts, rightClassification, dismissedRightLines, (c) => [c.newStartLine, c.newEndLine], findPairForRight, fullyResolvedPairIds), [
292
+ rightConflicts,
293
+ rightClassification,
294
+ dismissedRightLines,
295
+ findPairForRight,
296
+ fullyResolvedPairIds
297
+ ]);
298
+ const suppressedLeftLines = useMemo(() => computeSuppressedLines(dismissedLeftLines, conflictPairs, fullyResolvedPairIds, (p) => [p.leftStart, p.leftEnd]), [
299
+ conflictPairs,
300
+ fullyResolvedPairIds,
301
+ dismissedLeftLines
302
+ ]);
303
+ const suppressedRightLines = useMemo(() => computeSuppressedLines(dismissedRightLines, conflictPairs, fullyResolvedPairIds, (p) => [p.rightStart, p.rightEnd]), [
304
+ conflictPairs,
305
+ fullyResolvedPairIds,
306
+ dismissedRightLines
307
+ ]);
308
+ const { mergeHighlightedLines, mergeClassification } = useMemo(() => {
309
+ const mergeLeftLines = getChangedLineNumbers(leftDiffChunks, "new");
310
+ const mergeRightLines = getChangedLineNumbers(rightDiffChunks, "old");
311
+ const mergeLineToPair = /* @__PURE__ */ new Map();
312
+ for (const conflict of leftConflicts) {
313
+ const pair = findPairForLeft(conflict);
314
+ if (pair) for (let i = conflict.newStartLine; i <= conflict.newEndLine; i++) mergeLineToPair.set(i, pair.id);
315
+ }
316
+ for (const conflict of rightConflicts) {
317
+ const pair = findPairForRight(conflict);
318
+ if (pair) for (let i = conflict.oldStartLine; i <= conflict.oldEndLine; i++) mergeLineToPair.set(i, pair.id);
319
+ }
320
+ const suppressedMergeLines = /* @__PURE__ */ new Set();
321
+ for (const conflict of leftConflicts) {
322
+ if (findPairForLeft(conflict)) continue;
323
+ if (conflict.oldStartLine > conflict.oldEndLine) continue;
324
+ let allDismissed = true;
325
+ for (let i = conflict.oldStartLine; i <= conflict.oldEndLine; i++) if (!dismissedLeftLines.has(i)) {
326
+ allDismissed = false;
327
+ break;
328
+ }
329
+ if (allDismissed) for (let i = conflict.newStartLine; i <= conflict.newEndLine; i++) suppressedMergeLines.add(i);
330
+ }
331
+ for (const conflict of rightConflicts) {
332
+ if (findPairForRight(conflict)) continue;
333
+ if (conflict.newStartLine > conflict.newEndLine) continue;
334
+ let allDismissed = true;
335
+ for (let i = conflict.newStartLine; i <= conflict.newEndLine; i++) if (!dismissedRightLines.has(i)) {
336
+ allDismissed = false;
337
+ break;
338
+ }
339
+ if (allDismissed) for (let i = conflict.oldStartLine; i <= conflict.oldEndLine; i++) suppressedMergeLines.add(i);
340
+ }
341
+ const allMergeLines = /* @__PURE__ */ new Set();
342
+ for (const line of mergeLeftLines) allMergeLines.add(line);
343
+ for (const line of mergeRightLines) allMergeLines.add(line);
344
+ const highlighted = /* @__PURE__ */ new Set();
345
+ const classification = /* @__PURE__ */ new Map();
346
+ for (const line of allMergeLines) {
347
+ if (suppressedMergeLines.has(line)) continue;
348
+ const pairId = mergeLineToPair.get(line);
349
+ if (pairId && fullyResolvedPairIds.has(pairId)) continue;
350
+ highlighted.add(line);
351
+ classification.set(line, pairId ? CHANGE_CLASS.CONFLICT : CHANGE_CLASS.SAFE);
352
+ }
353
+ return {
354
+ mergeHighlightedLines: highlighted,
355
+ mergeClassification: classification
356
+ };
357
+ }, [
358
+ leftDiffChunks,
359
+ rightDiffChunks,
360
+ leftConflicts,
361
+ rightConflicts,
362
+ findPairForLeft,
363
+ findPairForRight,
364
+ fullyResolvedPairIds,
365
+ dismissedLeftLines,
366
+ dismissedRightLines
367
+ ]);
368
+ const leftHighlightedLines = useMemo(() => filterHighlightedLines(leftDiffChunks, "old", leftClassification, suppressedLeftLines), [
369
+ leftDiffChunks,
370
+ leftClassification,
371
+ suppressedLeftLines
372
+ ]);
373
+ const rightHighlightedLines = useMemo(() => filterHighlightedLines(rightDiffChunks, "new", rightClassification, suppressedRightLines), [
374
+ rightDiffChunks,
375
+ rightClassification,
376
+ suppressedRightLines
377
+ ]);
378
+ const remainingSafeChanges = useMemo(() => {
379
+ return visibleLeftConflicts.filter((c) => !findPairForLeft(c)).length + visibleRightConflicts.filter((c) => !findPairForRight(c)).length;
380
+ }, [
381
+ visibleLeftConflicts,
382
+ visibleRightConflicts,
383
+ findPairForLeft,
384
+ findPairForRight
385
+ ]);
386
+ return {
387
+ mergeValue,
388
+ handleMergeChange,
389
+ leftConflicts: visibleLeftConflicts,
390
+ rightConflicts: visibleRightConflicts,
391
+ leftHighlightedLines,
392
+ rightHighlightedLines,
393
+ leftClassification,
394
+ rightClassification,
395
+ mergeHighlightedLines,
396
+ mergeClassification,
397
+ acceptLeft,
398
+ acceptRight,
399
+ dismissLeft,
400
+ dismissRight,
401
+ totalConflicts: conflictPairs.length,
402
+ resolvedConflicts: fullyResolvedPairIds.size,
403
+ remainingSafeChanges,
404
+ isDirty: mergeValue !== baseText || dismissedLeftLines.size > 0 || dismissedRightLines.size > 0,
405
+ reset
406
+ };
407
+ };
408
+ /**
409
+ * Pairs adjacent removed+added chunks into MergeConflicts.
410
+ * A standalone REMOVED or ADDED chunk becomes a conflict with
411
+ * the other side empty.
412
+ */
413
+ const pairChunksIntoConflicts = (chunks) => {
414
+ const conflicts = [];
415
+ let i = 0;
416
+ while (i < chunks.length) {
417
+ const chunk = chunks[i];
418
+ if (chunk.type === CHUNK_TYPE.UNCHANGED) {
419
+ i++;
420
+ continue;
421
+ }
422
+ if (chunk.type === CHUNK_TYPE.REMOVED) {
423
+ const next = chunks[i + 1];
424
+ if (next?.type === CHUNK_TYPE.ADDED) {
425
+ conflicts.push({
426
+ id: `${chunk.oldStart}-${next.newStart}`,
427
+ oldValue: chunk.value,
428
+ oldStartLine: chunk.oldStart,
429
+ oldEndLine: chunk.oldEnd,
430
+ newValue: next.value,
431
+ newStartLine: next.newStart,
432
+ newEndLine: next.newEnd
433
+ });
434
+ i += 2;
435
+ } else {
436
+ conflicts.push({
437
+ id: `${chunk.oldStart}-del`,
438
+ oldValue: chunk.value,
439
+ oldStartLine: chunk.oldStart,
440
+ oldEndLine: chunk.oldEnd,
441
+ newValue: "",
442
+ newStartLine: chunk.newStart,
443
+ newEndLine: chunk.newStart
444
+ });
445
+ i++;
446
+ }
447
+ } else {
448
+ conflicts.push({
449
+ id: `add-${chunk.newStart}`,
450
+ oldValue: "",
451
+ oldStartLine: chunk.oldStart,
452
+ oldEndLine: chunk.oldStart,
453
+ newValue: chunk.value,
454
+ newStartLine: chunk.newStart,
455
+ newEndLine: chunk.newEnd
456
+ });
457
+ i++;
458
+ }
459
+ }
460
+ return conflicts;
461
+ };
462
+ //#endregion
463
+ export { useMergeDiff };
464
+
465
+ //# sourceMappingURL=useMergeDiff-CvowEXJ1.js.map