@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.
- package/dist/AIKit-Dre37SJr.js +1320 -0
- package/dist/AIKit-Dre37SJr.js.map +1 -0
- package/dist/Alert-DfZq9kGe.js +133 -0
- package/dist/Alert-DfZq9kGe.js.map +1 -0
- package/dist/AlertModal-BUC4Es8o.js +222 -0
- package/dist/AlertModal-BUC4Es8o.js.map +1 -0
- package/dist/AppShell-B5GQN6Zs.js +143 -0
- package/dist/AppShell-B5GQN6Zs.js.map +1 -0
- package/dist/AutoSaveTextarea-BeuWuszr.js +58 -0
- package/dist/{chunk-UGT6DKWM.js.map → AutoSaveTextarea-BeuWuszr.js.map} +1 -1
- package/dist/Badge-Ch26CXoP.js +195 -0
- package/dist/Badge-Ch26CXoP.js.map +1 -0
- package/dist/BrandEditor-B8o9zdZO.js +903 -0
- package/dist/BrandEditor-B8o9zdZO.js.map +1 -0
- package/dist/BrandLogo-CJkRd0F8.js +46 -0
- package/dist/BrandLogo-CJkRd0F8.js.map +1 -0
- package/dist/Breadcrumb-DJp7WwSv.js +330 -0
- package/dist/Breadcrumb-DJp7WwSv.js.map +1 -0
- package/dist/Button-nzmDNS2q.js +391 -0
- package/dist/Button-nzmDNS2q.js.map +1 -0
- package/dist/Calendar-cG5NIJ4O.js +6768 -0
- package/dist/Calendar-cG5NIJ4O.js.map +1 -0
- package/dist/Card-BAoZ35CV.js +105 -0
- package/dist/Card-BAoZ35CV.js.map +1 -0
- package/dist/Checkbox-GJ8-srt4.js +97 -0
- package/dist/Checkbox-GJ8-srt4.js.map +1 -0
- package/dist/Clipboard-CBJZiviP.js +58 -0
- package/dist/Clipboard-CBJZiviP.js.map +1 -0
- package/dist/ClipboardButton-ez5V3fkk.js +43 -0
- package/dist/ClipboardButton-ez5V3fkk.js.map +1 -0
- package/dist/CodeEditor-BfQJfbhL.js +952 -0
- package/dist/CodeEditor-BfQJfbhL.js.map +1 -0
- package/dist/Collapsible-BQXWEOBC.js +34 -0
- package/dist/Collapsible-BQXWEOBC.js.map +1 -0
- package/dist/ColorInput-Dx8Dsv7Y.js +180 -0
- package/dist/ColorInput-Dx8Dsv7Y.js.map +1 -0
- package/dist/ColorModeSwitch-CCqj7tjE.js +77 -0
- package/dist/ColorModeSwitch-CCqj7tjE.js.map +1 -0
- package/dist/Combobox-c_xBjf0P.js +439 -0
- package/dist/Combobox-c_xBjf0P.js.map +1 -0
- package/dist/Command-CQ_bQsJp.js +102 -0
- package/dist/Command-CQ_bQsJp.js.map +1 -0
- package/dist/CopyField-BJ96zvXs.js +322 -0
- package/dist/CopyField-BJ96zvXs.js.map +1 -0
- package/dist/DateInput-CMD3dY-T.js +141 -0
- package/dist/DateInput-CMD3dY-T.js.map +1 -0
- package/dist/DatePicker-BbFbmsGl.js +24 -0
- package/dist/DatePicker-BbFbmsGl.js.map +1 -0
- package/dist/DateRangeInput-D3BhiKyk.js +139 -0
- package/dist/DateRangeInput-D3BhiKyk.js.map +1 -0
- package/dist/DateRangePicker-BiUgtt_M.js +159 -0
- package/dist/DateRangePicker-BiUgtt_M.js.map +1 -0
- package/dist/DiagramSkeleton-lwBS2YBa.js +11 -0
- package/dist/DiagramSkeleton-lwBS2YBa.js.map +1 -0
- package/dist/DiffView-ppTIzh2h.js +429 -0
- package/dist/DiffView-ppTIzh2h.js.map +1 -0
- package/dist/DropdownMenu-B6ZbYvaM.js +327 -0
- package/dist/DropdownMenu-B6ZbYvaM.js.map +1 -0
- package/dist/FieldBox-D7DYtX_m.js +70 -0
- package/dist/FieldBox-D7DYtX_m.js.map +1 -0
- package/dist/FileUpload-sXRv7JiY.js +2527 -0
- package/dist/FileUpload-sXRv7JiY.js.map +1 -0
- package/dist/Form-BDCef6O9.js +371 -0
- package/dist/Form-BDCef6O9.js.map +1 -0
- package/dist/FormGroup-S9mPNHKH.js +124 -0
- package/dist/FormGroup-S9mPNHKH.js.map +1 -0
- package/dist/FullScreenModal-CJa2VkJ2.js +96 -0
- package/dist/FullScreenModal-CJa2VkJ2.js.map +1 -0
- package/dist/HoverCard-WfDkLK1s.js +31 -0
- package/dist/HoverCard-WfDkLK1s.js.map +1 -0
- package/dist/InputGroup-BJWsI35s.js +292 -0
- package/dist/InputGroup-BJWsI35s.js.map +1 -0
- package/dist/Kbd-CxHAo1oo.js +111 -0
- package/dist/Kbd-CxHAo1oo.js.map +1 -0
- package/dist/MarkedText-Ckbft5mw.js +44 -0
- package/dist/MarkedText-Ckbft5mw.js.map +1 -0
- package/dist/MermaidDiagram-BB06gymm.js +399 -0
- package/dist/MermaidDiagram-BB06gymm.js.map +1 -0
- package/dist/Modal-BA5Wc3sx.js +185 -0
- package/dist/Modal-BA5Wc3sx.js.map +1 -0
- package/dist/ModalTitle-C76ke2eo.js +28 -0
- package/dist/ModalTitle-C76ke2eo.js.map +1 -0
- package/dist/MultiActionButtonGroup-CiBHxsSk.js +33 -0
- package/dist/MultiActionButtonGroup-CiBHxsSk.js.map +1 -0
- package/dist/Navbar-t16usFZQ.js +322 -0
- package/dist/Navbar-t16usFZQ.js.map +1 -0
- package/dist/OtpInput-CbbymqYs.js +93 -0
- package/dist/OtpInput-CbbymqYs.js.map +1 -0
- package/dist/PageHeader-Q3IpCnQd.js +177 -0
- package/dist/PageHeader-Q3IpCnQd.js.map +1 -0
- package/dist/PageLayout-DSVM-ASz.js +176 -0
- package/dist/PageLayout-DSVM-ASz.js.map +1 -0
- package/dist/PageToolbar-0_1OBzaZ.js +153 -0
- package/dist/PageToolbar-0_1OBzaZ.js.map +1 -0
- package/dist/Pagination-CM_Rszz-.js +70 -0
- package/dist/Pagination-CM_Rszz-.js.map +1 -0
- package/dist/Popconfirm-BGe1jLov.js +170 -0
- package/dist/Popconfirm-BGe1jLov.js.map +1 -0
- package/dist/Popover-Ca0V6AD1.js +92 -0
- package/dist/Popover-Ca0V6AD1.js.map +1 -0
- package/dist/RadioGroup-sIveSsNa.js +233 -0
- package/dist/RadioGroup-sIveSsNa.js.map +1 -0
- package/dist/Resizable-D3vYToZH.js +52 -0
- package/dist/Resizable-D3vYToZH.js.map +1 -0
- package/dist/Search-3UiqNZRj.js +184 -0
- package/dist/Search-3UiqNZRj.js.map +1 -0
- package/dist/SearchInput-D2fcOv7E.js +102 -0
- package/dist/SearchInput-D2fcOv7E.js.map +1 -0
- package/dist/SectionNav--7bw2b6u.js +276 -0
- package/dist/SectionNav--7bw2b6u.js.map +1 -0
- package/dist/Select-4YX38G5h.js +181 -0
- package/dist/Select-4YX38G5h.js.map +1 -0
- package/dist/Sheet-BQrX8-h5.js +169 -0
- package/dist/Sheet-BQrX8-h5.js.map +1 -0
- package/dist/Sidebar-ROaR_AqC.js +799 -0
- package/dist/Sidebar-ROaR_AqC.js.map +1 -0
- package/dist/Slider-Da_3mS5v.js +127 -0
- package/dist/Slider-Da_3mS5v.js.map +1 -0
- package/dist/Stepper-C8sm9ZFM.js +325 -0
- package/dist/Stepper-C8sm9ZFM.js.map +1 -0
- package/dist/Switch-CX2A0v50.js +201 -0
- package/dist/Switch-CX2A0v50.js.map +1 -0
- package/dist/Table-CvYuTuNU.js +104 -0
- package/dist/Table-CvYuTuNU.js.map +1 -0
- package/dist/Tabs-EAihyqCt.js +74 -0
- package/dist/Tabs-EAihyqCt.js.map +1 -0
- package/dist/TextInput-BGed-V13.js +110 -0
- package/dist/TextInput-BGed-V13.js.map +1 -0
- package/dist/ThemeProvider-QncUrfJn.js +203 -0
- package/dist/ThemeProvider-QncUrfJn.js.map +1 -0
- package/dist/TimePicker-B_NegL-7.js +98 -0
- package/dist/TimePicker-B_NegL-7.js.map +1 -0
- package/dist/Timeline-6btyJl4D.js +154 -0
- package/dist/Timeline-6btyJl4D.js.map +1 -0
- package/dist/Toast-DQSbs3oA.js +49 -0
- package/dist/Toast-DQSbs3oA.js.map +1 -0
- package/dist/ToggleGroup-Cy_10Mvu.js +47 -0
- package/dist/ToggleGroup-Cy_10Mvu.js.map +1 -0
- package/dist/Workbench-BzE-Vvd9.js +293 -0
- package/dist/Workbench-BzE-Vvd9.js.map +1 -0
- package/dist/ZoomableSvg-DG9PnAm8.js +248 -0
- package/dist/ZoomableSvg-DG9PnAm8.js.map +1 -0
- package/dist/charts.d.ts +110 -103
- package/dist/charts.js +303 -254
- package/dist/charts.js.map +1 -1
- package/dist/classNames-BzrkDnOD.js +9 -0
- package/dist/classNames-BzrkDnOD.js.map +1 -0
- package/dist/constants-D6JcsD4_.d.ts +41 -0
- package/dist/context-KxxeMHbR.js +62 -0
- package/dist/context-KxxeMHbR.js.map +1 -0
- package/dist/editors.d.ts +180 -173
- package/dist/editors.js +747 -428
- package/dist/editors.js.map +1 -1
- package/dist/escapeStringRegexp-8MxP2knR.js +6 -0
- package/dist/escapeStringRegexp-8MxP2knR.js.map +1 -0
- package/dist/icons-Cek151jC.js +640 -0
- package/dist/icons-Cek151jC.js.map +1 -0
- package/dist/icons.d.ts +2 -41
- package/dist/icons.js +2 -9
- package/dist/index-m-kQEWiY.d.ts +54 -0
- package/dist/index.d.ts +6183 -9885
- package/dist/index.js +112 -124
- package/dist/internal/blocks/AIKit.js +2 -30
- package/dist/internal/blocks/AppShell.js +2 -11
- package/dist/internal/blocks/AutoSaveTextarea.js +2 -14
- package/dist/internal/blocks/BrandEditor.js +2 -23
- package/dist/internal/blocks/ChartPanel.js +45 -9
- package/dist/internal/blocks/ChartPanel.js.map +1 -1
- package/dist/internal/blocks/ClipboardButton.js +2 -12
- package/dist/internal/blocks/ColorInput.js +2 -13
- package/dist/internal/blocks/ColorModeSwitch.js +2 -13
- package/dist/internal/blocks/Command.js +2 -15
- package/dist/internal/blocks/CopyField.js +2 -11
- package/dist/internal/blocks/DashboardHero.js +58 -8
- package/dist/internal/blocks/DashboardHero.js.map +1 -1
- package/dist/internal/blocks/DateInput.js +2 -16
- package/dist/internal/blocks/DateRangeInput.js +2 -16
- package/dist/internal/blocks/EmptyConfigurationActionCard.js +15 -9
- package/dist/internal/blocks/EmptyConfigurationActionCard.js.map +1 -1
- package/dist/internal/blocks/EmptyState.js +141 -3
- package/dist/internal/blocks/EmptyState.js.map +1 -1
- package/dist/internal/blocks/ErrorState.js +178 -4
- package/dist/internal/blocks/ErrorState.js.map +1 -1
- package/dist/internal/blocks/ExportMenu.js +40 -12
- package/dist/internal/blocks/ExportMenu.js.map +1 -1
- package/dist/internal/blocks/Form.js +2 -29
- package/dist/internal/blocks/FormGroup.js +2 -18
- package/dist/internal/blocks/GoogleButton.js +94 -9
- package/dist/internal/blocks/GoogleButton.js.map +1 -1
- package/dist/internal/blocks/MicrosoftButton.js +63 -9
- package/dist/internal/blocks/MicrosoftButton.js.map +1 -1
- package/dist/internal/blocks/MultiActionButtonGroup.js +2 -12
- package/dist/internal/blocks/MultiCombobox.js +187 -13
- package/dist/internal/blocks/MultiCombobox.js.map +1 -1
- package/dist/internal/blocks/NumberInput.js +43 -11
- package/dist/internal/blocks/NumberInput.js.map +1 -1
- package/dist/internal/blocks/OtpInput.js +2 -10
- package/dist/internal/blocks/PageHeader.js +2 -9
- package/dist/internal/blocks/PageLayout.js +2 -9
- package/dist/internal/blocks/PageToolbar.js +2 -13
- package/dist/internal/blocks/PasswordInput.js +96 -12
- package/dist/internal/blocks/PasswordInput.js.map +1 -1
- package/dist/internal/blocks/SearchInput.js +2 -12
- package/dist/internal/blocks/SearchInputWithNavigation.js +64 -15
- package/dist/internal/blocks/SearchInputWithNavigation.js.map +1 -1
- package/dist/internal/blocks/SectionNav.js +2 -15
- package/dist/internal/blocks/SplitButton.js +45 -13
- package/dist/internal/blocks/SplitButton.js.map +1 -1
- package/dist/internal/blocks/StatCard.js +96 -9
- package/dist/internal/blocks/StatCard.js.map +1 -1
- package/dist/internal/blocks/TextInput.js +2 -13
- package/dist/internal/blocks/Textarea.js +31 -12
- package/dist/internal/blocks/Textarea.js.map +1 -1
- package/dist/internal/blocks/TimeInput.js +76 -16
- package/dist/internal/blocks/TimeInput.js.map +1 -1
- package/dist/internal/components/Alert.js +2 -11
- package/dist/internal/components/AlertModal.js +2 -11
- package/dist/internal/components/Avatar.js +52 -8
- package/dist/internal/components/Avatar.js.map +1 -1
- package/dist/internal/components/Badge.js +2 -9
- package/dist/internal/components/BrandLogo.js +2 -11
- package/dist/internal/components/Breadcrumb.js +2 -14
- package/dist/internal/components/Button.js +2 -10
- package/dist/internal/components/ButtonGroup.js +65 -8
- package/dist/internal/components/ButtonGroup.js.map +1 -1
- package/dist/internal/components/Calendar.js +2 -9
- package/dist/internal/components/Card.js +2 -9
- package/dist/internal/components/Checkbox.js +2 -11
- package/dist/internal/components/Clipboard.js +2 -9
- package/dist/internal/components/Collapsible.js +2 -9
- package/dist/internal/components/CollapsiblePanel.js +86 -10
- package/dist/internal/components/CollapsiblePanel.js.map +1 -1
- package/dist/internal/components/Combobox.js +2 -13
- package/dist/internal/components/DatePicker.js +2 -11
- package/dist/internal/components/DateRangePicker.js +2 -17
- package/dist/internal/components/DiffView.js +2 -9
- package/dist/internal/components/DotsLoader.js +17 -4
- package/dist/internal/components/DotsLoader.js.map +1 -1
- package/dist/internal/components/DropdownMenu.js +2 -11
- package/dist/internal/components/EmptySearchContent.js +11 -3
- package/dist/internal/components/EmptySearchContent.js.map +1 -1
- package/dist/internal/components/FileUpload.js +2 -11
- package/dist/internal/components/FullScreenModal.js +2 -12
- package/dist/internal/components/HelpBlock.js +24 -3
- package/dist/internal/components/HelpBlock.js.map +1 -1
- package/dist/internal/components/HoverCard.js +2 -9
- package/dist/internal/components/InputGroup.js +2 -11
- package/dist/internal/components/Kbd.js +2 -9
- package/dist/internal/components/Label.js +38 -8
- package/dist/internal/components/Label.js.map +1 -1
- package/dist/internal/components/Link.js +21 -8
- package/dist/internal/components/Link.js.map +1 -1
- package/dist/internal/components/MarkedText.js +2 -5
- package/dist/internal/components/MergeEditor/ConflictStatus/ConflictStatusIndicator.js +19 -9
- package/dist/internal/components/MergeEditor/ConflictStatus/ConflictStatusIndicator.js.map +1 -1
- package/dist/internal/components/MergeEditor/PaneHeader.js +12 -3
- package/dist/internal/components/MergeEditor/PaneHeader.js.map +1 -1
- package/dist/internal/components/MergeEditor/constants.js +17 -3
- package/dist/internal/components/MergeEditor/constants.js.map +1 -1
- package/dist/internal/components/MergeEditor/useMergeDiff.js +2 -5
- package/dist/internal/components/Modal.js +2 -13
- package/dist/internal/components/Navbar.js +2 -14
- package/dist/internal/components/Pagination.js +2 -11
- package/dist/internal/components/PanelWithDetails.js +30 -10
- package/dist/internal/components/PanelWithDetails.js.map +1 -1
- package/dist/internal/components/Popconfirm.js +2 -12
- package/dist/internal/components/Popover.js +2 -9
- package/dist/internal/components/Progress.js +46 -8
- package/dist/internal/components/Progress.js.map +1 -1
- package/dist/internal/components/RadioGroup.js +2 -12
- package/dist/internal/components/Resizable.js +2 -9
- package/dist/internal/components/ScrollArea.js +41 -8
- package/dist/internal/components/ScrollArea.js.map +1 -1
- package/dist/internal/components/Search.js +2 -10
- package/dist/internal/components/Select.js +2 -12
- package/dist/internal/components/Separator.js +83 -8
- package/dist/internal/components/Separator.js.map +1 -1
- package/dist/internal/components/Sheet.js +2 -12
- package/dist/internal/components/Sidebar.js +2 -20
- package/dist/internal/components/Skeleton/Skeleton.js +38 -8
- package/dist/internal/components/Skeleton/Skeleton.js.map +1 -1
- package/dist/internal/components/Skeleton/SkeletonList.js +40 -9
- package/dist/internal/components/Skeleton/SkeletonList.js.map +1 -1
- package/dist/internal/components/Slider.js +2 -11
- package/dist/internal/components/SpotlightBackdrop.js +131 -8
- package/dist/internal/components/SpotlightBackdrop.js.map +1 -1
- package/dist/internal/components/Stepper.js +2 -10
- package/dist/internal/components/Switch.js +2 -10
- package/dist/internal/components/Table.js +2 -10
- package/dist/internal/components/Tabs.js +2 -12
- package/dist/internal/components/ThemeProvider.js +3 -10
- package/dist/internal/components/TimePicker.js +2 -12
- package/dist/internal/components/Timeline.js +2 -10
- package/dist/internal/components/Toast.js +3 -11
- package/dist/internal/components/Toggle.js +168 -8
- package/dist/internal/components/Toggle.js.map +1 -1
- package/dist/internal/components/ToggleGroup.js +2 -9
- package/dist/internal/components/Tooltip.js +2 -8
- package/dist/internal/components/Truncated.js +44 -8
- package/dist/internal/components/Truncated.js.map +1 -1
- package/dist/internal/components/Workbench.js +2 -11
- package/dist/internal/components/ZoomableSvg.js +2 -13
- package/dist/internal/hooks/useAutosizeInput.js +76 -3
- package/dist/internal/hooks/useAutosizeInput.js.map +1 -1
- package/dist/internal/hooks/useScrollbarPosition.js +44 -4
- package/dist/internal/hooks/useScrollbarPosition.js.map +1 -1
- package/dist/internal/hooks/useStableCallback.js +28 -3
- package/dist/internal/hooks/useStableCallback.js.map +1 -1
- package/dist/internal/utils/mergeRefs.js +19 -3
- package/dist/internal/utils/mergeRefs.js.map +1 -1
- package/dist/internal/utils.js +5 -8
- package/dist/markdown-editor.d.ts +72 -72
- package/dist/markdown-editor.js +1122 -1207
- package/dist/markdown-editor.js.map +1 -1
- package/dist/mermaid.d.ts +12 -12
- package/dist/mermaid.js +2 -18
- package/dist/rjsf.d.ts +33 -34
- package/dist/rjsf.js +1541 -1671
- package/dist/rjsf.js.map +1 -1
- package/dist/rolldown-runtime-Bdc48AWt.js +33 -0
- package/dist/styles-DSUP_-9Z.js +158 -0
- package/dist/styles-DSUP_-9Z.js.map +1 -0
- package/dist/testing.d.ts +8 -7
- package/dist/testing.js +36 -21
- package/dist/testing.js.map +1 -1
- package/dist/themeTokens-BNg98Mu9.js +85 -0
- package/dist/themeTokens-BNg98Mu9.js.map +1 -0
- package/dist/toast-CjkURw0M.js +184 -0
- package/dist/toast-CjkURw0M.js.map +1 -0
- package/dist/useColorSchemeState-CYqcUfSH.js +61 -0
- package/dist/useColorSchemeState-CYqcUfSH.js.map +1 -0
- package/dist/useControllableState-M6494mCT.js +31 -0
- package/dist/useControllableState-M6494mCT.js.map +1 -0
- package/dist/useElement-DkF6esWL.js +15 -0
- package/dist/useElement-DkF6esWL.js.map +1 -0
- package/dist/useMergeDiff-CvowEXJ1.js +465 -0
- package/dist/useMergeDiff-CvowEXJ1.js.map +1 -0
- package/dist/utils-D0c5VAyF.js +308 -0
- package/dist/utils-D0c5VAyF.js.map +1 -0
- package/package.json +8 -8
- package/dist/MermaidDiagram-ZU5KAVRT.js +0 -18
- package/dist/MermaidDiagram-ZU5KAVRT.js.map +0 -1
- package/dist/chunk-2YYJDKSP.js +0 -51
- package/dist/chunk-2YYJDKSP.js.map +0 -1
- package/dist/chunk-3P5UUCFI.js +0 -385
- package/dist/chunk-3P5UUCFI.js.map +0 -1
- package/dist/chunk-3QDFDDWZ.js +0 -99
- package/dist/chunk-3QDFDDWZ.js.map +0 -1
- package/dist/chunk-3W27OLK5.js +0 -15
- package/dist/chunk-3W27OLK5.js.map +0 -1
- package/dist/chunk-4FIZZONW.js +0 -40
- package/dist/chunk-4FIZZONW.js.map +0 -1
- package/dist/chunk-4GIAXOJG.js +0 -133
- package/dist/chunk-4GIAXOJG.js.map +0 -1
- package/dist/chunk-52NDNMK7.js +0 -99
- package/dist/chunk-52NDNMK7.js.map +0 -1
- package/dist/chunk-576G5OES.js +0 -201
- package/dist/chunk-576G5OES.js.map +0 -1
- package/dist/chunk-5AIE6SET.js +0 -659
- package/dist/chunk-5AIE6SET.js.map +0 -1
- package/dist/chunk-5FTNAZRW.js +0 -327
- package/dist/chunk-5FTNAZRW.js.map +0 -1
- package/dist/chunk-5IG2S7ZY.js +0 -70
- package/dist/chunk-5IG2S7ZY.js.map +0 -1
- package/dist/chunk-5QCXHNCW.js +0 -404
- package/dist/chunk-5QCXHNCW.js.map +0 -1
- package/dist/chunk-6DUMGC7Y.js +0 -105
- package/dist/chunk-6DUMGC7Y.js.map +0 -1
- package/dist/chunk-6J25CVST.js +0 -174
- package/dist/chunk-6J25CVST.js.map +0 -1
- package/dist/chunk-6NN35XOP.js +0 -120
- package/dist/chunk-6NN35XOP.js.map +0 -1
- package/dist/chunk-6NZBVA4T.js +0 -24
- package/dist/chunk-6NZBVA4T.js.map +0 -1
- package/dist/chunk-6W5BHRCL.js +0 -295
- package/dist/chunk-6W5BHRCL.js.map +0 -1
- package/dist/chunk-72BKRCEG.js +0 -409
- package/dist/chunk-72BKRCEG.js.map +0 -1
- package/dist/chunk-7GTI3PPI.js +0 -95
- package/dist/chunk-7GTI3PPI.js.map +0 -1
- package/dist/chunk-7P6PLZ4B.js +0 -74
- package/dist/chunk-7P6PLZ4B.js.map +0 -1
- package/dist/chunk-7WZWY5IA.js +0 -46
- package/dist/chunk-7WZWY5IA.js.map +0 -1
- package/dist/chunk-AIYO2632.js +0 -489
- package/dist/chunk-AIYO2632.js.map +0 -1
- package/dist/chunk-ANFZWPNE.js +0 -112
- package/dist/chunk-ANFZWPNE.js.map +0 -1
- package/dist/chunk-ANZTVAJU.js +0 -73
- package/dist/chunk-ANZTVAJU.js.map +0 -1
- package/dist/chunk-BD5BTJKX.js +0 -166
- package/dist/chunk-BD5BTJKX.js.map +0 -1
- package/dist/chunk-BHGIDSRJ.js +0 -140
- package/dist/chunk-BHGIDSRJ.js.map +0 -1
- package/dist/chunk-BSQWZITZ.js +0 -507
- package/dist/chunk-BSQWZITZ.js.map +0 -1
- package/dist/chunk-D3LAIK62.js +0 -23
- package/dist/chunk-D3LAIK62.js.map +0 -1
- package/dist/chunk-DODCR43C.js +0 -155
- package/dist/chunk-DODCR43C.js.map +0 -1
- package/dist/chunk-EEK5NGZF.js +0 -40
- package/dist/chunk-EEK5NGZF.js.map +0 -1
- package/dist/chunk-ENRG7TXA.js +0 -11
- package/dist/chunk-ENRG7TXA.js.map +0 -1
- package/dist/chunk-EQRMGIGY.js +0 -239
- package/dist/chunk-EQRMGIGY.js.map +0 -1
- package/dist/chunk-ERAHK5YQ.js +0 -495
- package/dist/chunk-ERAHK5YQ.js.map +0 -1
- package/dist/chunk-F3FOFY2P.js +0 -124
- package/dist/chunk-F3FOFY2P.js.map +0 -1
- package/dist/chunk-F6BTWFOC.js +0 -507
- package/dist/chunk-F6BTWFOC.js.map +0 -1
- package/dist/chunk-F6J6NNAL.js +0 -34
- package/dist/chunk-F6J6NNAL.js.map +0 -1
- package/dist/chunk-FCHJ7D5O.js +0 -59
- package/dist/chunk-FCHJ7D5O.js.map +0 -1
- package/dist/chunk-FFJTEQCC.js +0 -80
- package/dist/chunk-FFJTEQCC.js.map +0 -1
- package/dist/chunk-FUFMVW7O.js +0 -64
- package/dist/chunk-FUFMVW7O.js.map +0 -1
- package/dist/chunk-FVPGQ6UE.js +0 -25
- package/dist/chunk-FVPGQ6UE.js.map +0 -1
- package/dist/chunk-G3PMV62Z.js +0 -33
- package/dist/chunk-G3PMV62Z.js.map +0 -1
- package/dist/chunk-GACFOW3E.js +0 -51
- package/dist/chunk-GACFOW3E.js.map +0 -1
- package/dist/chunk-GDT6HQMK.js +0 -42
- package/dist/chunk-GDT6HQMK.js.map +0 -1
- package/dist/chunk-HLGU22C6.js +0 -2589
- package/dist/chunk-HLGU22C6.js.map +0 -1
- package/dist/chunk-HPMYYGP7.js +0 -134
- package/dist/chunk-HPMYYGP7.js.map +0 -1
- package/dist/chunk-I2UCOD45.js +0 -197
- package/dist/chunk-I2UCOD45.js.map +0 -1
- package/dist/chunk-IEGDZUVM.js +0 -75
- package/dist/chunk-IEGDZUVM.js.map +0 -1
- package/dist/chunk-IIS7INHF.js +0 -47
- package/dist/chunk-IIS7INHF.js.map +0 -1
- package/dist/chunk-ITELSEFU.js +0 -256
- package/dist/chunk-ITELSEFU.js.map +0 -1
- package/dist/chunk-IXAYNBOY.js +0 -407
- package/dist/chunk-IXAYNBOY.js.map +0 -1
- package/dist/chunk-JUW2ETEI.js +0 -191
- package/dist/chunk-JUW2ETEI.js.map +0 -1
- package/dist/chunk-K65C7CVE.js +0 -127
- package/dist/chunk-K65C7CVE.js.map +0 -1
- package/dist/chunk-KDI64MCY.js +0 -189
- package/dist/chunk-KDI64MCY.js.map +0 -1
- package/dist/chunk-KN4ASMH5.js +0 -160
- package/dist/chunk-KN4ASMH5.js.map +0 -1
- package/dist/chunk-KQW7QNTU.js +0 -1549
- package/dist/chunk-KQW7QNTU.js.map +0 -1
- package/dist/chunk-KR7NXXHC.js +0 -66
- package/dist/chunk-KR7NXXHC.js.map +0 -1
- package/dist/chunk-KRZKIVMA.js +0 -142
- package/dist/chunk-KRZKIVMA.js.map +0 -1
- package/dist/chunk-KTTLLKGQ.js +0 -185
- package/dist/chunk-KTTLLKGQ.js.map +0 -1
- package/dist/chunk-KWKSHPDP.js +0 -234
- package/dist/chunk-KWKSHPDP.js.map +0 -1
- package/dist/chunk-KZVC7OYG.js +0 -57
- package/dist/chunk-KZVC7OYG.js.map +0 -1
- package/dist/chunk-L5DHUN2V.js +0 -204
- package/dist/chunk-L5DHUN2V.js.map +0 -1
- package/dist/chunk-LCTGEH57.js +0 -1376
- package/dist/chunk-LCTGEH57.js.map +0 -1
- package/dist/chunk-LXLIQ2D6.js +0 -12
- package/dist/chunk-LXLIQ2D6.js.map +0 -1
- package/dist/chunk-M4CTURKX.js +0 -84
- package/dist/chunk-M4CTURKX.js.map +0 -1
- package/dist/chunk-M6LTUPVP.js +0 -301
- package/dist/chunk-M6LTUPVP.js.map +0 -1
- package/dist/chunk-MA6RRHDT.js +0 -291
- package/dist/chunk-MA6RRHDT.js.map +0 -1
- package/dist/chunk-MODE4QIA.js +0 -6
- package/dist/chunk-MODE4QIA.js.map +0 -1
- package/dist/chunk-MVILMVGG.js +0 -118
- package/dist/chunk-MVILMVGG.js.map +0 -1
- package/dist/chunk-MWS4VCLV.js +0 -17
- package/dist/chunk-MWS4VCLV.js.map +0 -1
- package/dist/chunk-NEUX74SO.js +0 -315
- package/dist/chunk-NEUX74SO.js.map +0 -1
- package/dist/chunk-NFHKYBRD.js +0 -156
- package/dist/chunk-NFHKYBRD.js.map +0 -1
- package/dist/chunk-NHJNNXD3.js +0 -89
- package/dist/chunk-NHJNNXD3.js.map +0 -1
- package/dist/chunk-O2BF3HZL.js +0 -33
- package/dist/chunk-O2BF3HZL.js.map +0 -1
- package/dist/chunk-OANXCZYD.js +0 -212
- package/dist/chunk-OANXCZYD.js.map +0 -1
- package/dist/chunk-ODJF7YIP.js +0 -230
- package/dist/chunk-ODJF7YIP.js.map +0 -1
- package/dist/chunk-ON4BJTHI.js +0 -101
- package/dist/chunk-ON4BJTHI.js.map +0 -1
- package/dist/chunk-OTL5WXIJ.js +0 -16
- package/dist/chunk-OTL5WXIJ.js.map +0 -1
- package/dist/chunk-PACNBKJV.js +0 -47
- package/dist/chunk-PACNBKJV.js.map +0 -1
- package/dist/chunk-PROCA7K7.js +0 -23
- package/dist/chunk-PROCA7K7.js.map +0 -1
- package/dist/chunk-QGMIPA67.js +0 -85
- package/dist/chunk-QGMIPA67.js.map +0 -1
- package/dist/chunk-QQA37LFB.js +0 -190
- package/dist/chunk-QQA37LFB.js.map +0 -1
- package/dist/chunk-QZAWRSEB.js +0 -61
- package/dist/chunk-QZAWRSEB.js.map +0 -1
- package/dist/chunk-R74KGWNS.js +0 -699
- package/dist/chunk-R74KGWNS.js.map +0 -1
- package/dist/chunk-RFDLHMKL.js +0 -110
- package/dist/chunk-RFDLHMKL.js.map +0 -1
- package/dist/chunk-RL64HN7S.js +0 -40
- package/dist/chunk-RL64HN7S.js.map +0 -1
- package/dist/chunk-RMRQKPL7.js +0 -115
- package/dist/chunk-RMRQKPL7.js.map +0 -1
- package/dist/chunk-RQVK4IYC.js +0 -606
- package/dist/chunk-RQVK4IYC.js.map +0 -1
- package/dist/chunk-RTW56PWZ.js +0 -59
- package/dist/chunk-RTW56PWZ.js.map +0 -1
- package/dist/chunk-RUTPQNLR.js +0 -266
- package/dist/chunk-RUTPQNLR.js.map +0 -1
- package/dist/chunk-S6TAF63G.js +0 -25
- package/dist/chunk-S6TAF63G.js.map +0 -1
- package/dist/chunk-SBGAUGXY.js +0 -224
- package/dist/chunk-SBGAUGXY.js.map +0 -1
- package/dist/chunk-SC275NHZ.js +0 -407
- package/dist/chunk-SC275NHZ.js.map +0 -1
- package/dist/chunk-SCQPU4UE.js +0 -97
- package/dist/chunk-SCQPU4UE.js.map +0 -1
- package/dist/chunk-SFFF2WQP.js +0 -8
- package/dist/chunk-SFFF2WQP.js.map +0 -1
- package/dist/chunk-SJYMHZKA.js +0 -36
- package/dist/chunk-SJYMHZKA.js.map +0 -1
- package/dist/chunk-SLCCUJVN.js +0 -125
- package/dist/chunk-SLCCUJVN.js.map +0 -1
- package/dist/chunk-SVBSNSD4.js +0 -259
- package/dist/chunk-SVBSNSD4.js.map +0 -1
- package/dist/chunk-SVPLTL35.js +0 -62
- package/dist/chunk-SVPLTL35.js.map +0 -1
- package/dist/chunk-SWQFYNYG.js +0 -338
- package/dist/chunk-SWQFYNYG.js.map +0 -1
- package/dist/chunk-THHB4EWS.js +0 -72
- package/dist/chunk-THHB4EWS.js.map +0 -1
- package/dist/chunk-TUCDD33E.js +0 -246
- package/dist/chunk-TUCDD33E.js.map +0 -1
- package/dist/chunk-TV4WAP2R.js +0 -14
- package/dist/chunk-TV4WAP2R.js.map +0 -1
- package/dist/chunk-U3A6YBTZ.js +0 -134
- package/dist/chunk-U3A6YBTZ.js.map +0 -1
- package/dist/chunk-UGT6DKWM.js +0 -95
- package/dist/chunk-VSERHUWD.js +0 -212
- package/dist/chunk-VSERHUWD.js.map +0 -1
- package/dist/chunk-VYG7BDXC.js +0 -49
- package/dist/chunk-VYG7BDXC.js.map +0 -1
- package/dist/chunk-WETKNYZX.js +0 -52
- package/dist/chunk-WETKNYZX.js.map +0 -1
- package/dist/chunk-WGG4AML3.js +0 -216
- package/dist/chunk-WGG4AML3.js.map +0 -1
- package/dist/chunk-WKAUEL6I.js +0 -30
- package/dist/chunk-WKAUEL6I.js.map +0 -1
- package/dist/chunk-WPOLA5CG.js +0 -81
- package/dist/chunk-WPOLA5CG.js.map +0 -1
- package/dist/chunk-WPVETCGJ.js +0 -254
- package/dist/chunk-WPVETCGJ.js.map +0 -1
- package/dist/chunk-WTSM3A7E.js +0 -13
- package/dist/chunk-WTSM3A7E.js.map +0 -1
- package/dist/chunk-WU3F2K3T.js +0 -148
- package/dist/chunk-WU3F2K3T.js.map +0 -1
- package/dist/chunk-WZZK2DTZ.js +0 -39
- package/dist/chunk-WZZK2DTZ.js.map +0 -1
- package/dist/chunk-X4IHLKRD.js +0 -42
- package/dist/chunk-X4IHLKRD.js.map +0 -1
- package/dist/chunk-XAHEXZJC.js +0 -80
- package/dist/chunk-XAHEXZJC.js.map +0 -1
- package/dist/chunk-XCYGJDUX.js +0 -31
- package/dist/chunk-XCYGJDUX.js.map +0 -1
- package/dist/chunk-Y4W3JORC.js +0 -104
- package/dist/chunk-Y4W3JORC.js.map +0 -1
- package/dist/chunk-YFZJ3ZLG.js +0 -1297
- package/dist/chunk-YFZJ3ZLG.js.map +0 -1
- package/dist/chunk-YI3WLXEN.js +0 -4387
- package/dist/chunk-YI3WLXEN.js.map +0 -1
- package/dist/chunk-ZBKFSPD3.js +0 -29
- package/dist/chunk-ZBKFSPD3.js.map +0 -1
- package/dist/chunk-ZOERRQ6A.js +0 -79
- package/dist/chunk-ZOERRQ6A.js.map +0 -1
- package/dist/chunk-ZSTGUKHU.js +0 -10
- package/dist/chunk-ZSTGUKHU.js.map +0 -1
- package/dist/chunk-ZUEHDL27.js +0 -65
- package/dist/chunk-ZUEHDL27.js.map +0 -1
- package/dist/constants-D3gaMY-W.d.ts +0 -39
- package/dist/icons.js.map +0 -1
- package/dist/index.js.map +0 -1
- package/dist/internal/blocks/AIKit.js.map +0 -1
- package/dist/internal/blocks/AppShell.js.map +0 -1
- package/dist/internal/blocks/AutoSaveTextarea.js.map +0 -1
- package/dist/internal/blocks/BrandEditor.js.map +0 -1
- package/dist/internal/blocks/ClipboardButton.js.map +0 -1
- package/dist/internal/blocks/ColorInput.js.map +0 -1
- package/dist/internal/blocks/ColorModeSwitch.js.map +0 -1
- package/dist/internal/blocks/Command.js.map +0 -1
- package/dist/internal/blocks/CopyField.js.map +0 -1
- package/dist/internal/blocks/DateInput.js.map +0 -1
- package/dist/internal/blocks/DateRangeInput.js.map +0 -1
- package/dist/internal/blocks/Form.js.map +0 -1
- package/dist/internal/blocks/FormGroup.js.map +0 -1
- package/dist/internal/blocks/MultiActionButtonGroup.js.map +0 -1
- package/dist/internal/blocks/OtpInput.js.map +0 -1
- package/dist/internal/blocks/PageHeader.js.map +0 -1
- package/dist/internal/blocks/PageLayout.js.map +0 -1
- package/dist/internal/blocks/PageToolbar.js.map +0 -1
- package/dist/internal/blocks/SearchInput.js.map +0 -1
- package/dist/internal/blocks/SectionNav.js.map +0 -1
- package/dist/internal/blocks/TextInput.js.map +0 -1
- package/dist/internal/components/Alert.js.map +0 -1
- package/dist/internal/components/AlertModal.js.map +0 -1
- package/dist/internal/components/Badge.js.map +0 -1
- package/dist/internal/components/BrandLogo.js.map +0 -1
- package/dist/internal/components/Breadcrumb.js.map +0 -1
- package/dist/internal/components/Button.js.map +0 -1
- package/dist/internal/components/Calendar.js.map +0 -1
- package/dist/internal/components/Card.js.map +0 -1
- package/dist/internal/components/Checkbox.js.map +0 -1
- package/dist/internal/components/Clipboard.js.map +0 -1
- package/dist/internal/components/Collapsible.js.map +0 -1
- package/dist/internal/components/Combobox.js.map +0 -1
- package/dist/internal/components/DatePicker.js.map +0 -1
- package/dist/internal/components/DateRangePicker.js.map +0 -1
- package/dist/internal/components/DiffView.js.map +0 -1
- package/dist/internal/components/DropdownMenu.js.map +0 -1
- package/dist/internal/components/FileUpload.js.map +0 -1
- package/dist/internal/components/FullScreenModal.js.map +0 -1
- package/dist/internal/components/HoverCard.js.map +0 -1
- package/dist/internal/components/InputGroup.js.map +0 -1
- package/dist/internal/components/Kbd.js.map +0 -1
- package/dist/internal/components/MarkedText.js.map +0 -1
- package/dist/internal/components/MergeEditor/useMergeDiff.js.map +0 -1
- package/dist/internal/components/Modal.js.map +0 -1
- package/dist/internal/components/Navbar.js.map +0 -1
- package/dist/internal/components/Pagination.js.map +0 -1
- package/dist/internal/components/Popconfirm.js.map +0 -1
- package/dist/internal/components/Popover.js.map +0 -1
- package/dist/internal/components/RadioGroup.js.map +0 -1
- package/dist/internal/components/Resizable.js.map +0 -1
- package/dist/internal/components/Search.js.map +0 -1
- package/dist/internal/components/Select.js.map +0 -1
- package/dist/internal/components/Sheet.js.map +0 -1
- package/dist/internal/components/Sidebar.js.map +0 -1
- package/dist/internal/components/Slider.js.map +0 -1
- package/dist/internal/components/Stepper.js.map +0 -1
- package/dist/internal/components/Switch.js.map +0 -1
- package/dist/internal/components/Table.js.map +0 -1
- package/dist/internal/components/Tabs.js.map +0 -1
- package/dist/internal/components/ThemeProvider.js.map +0 -1
- package/dist/internal/components/TimePicker.js.map +0 -1
- package/dist/internal/components/Timeline.js.map +0 -1
- package/dist/internal/components/Toast.js.map +0 -1
- package/dist/internal/components/ToggleGroup.js.map +0 -1
- package/dist/internal/components/Tooltip.js.map +0 -1
- package/dist/internal/components/Workbench.js.map +0 -1
- package/dist/internal/components/ZoomableSvg.js.map +0 -1
- package/dist/internal/utils.js.map +0 -1
- 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
|