@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,429 @@
|
|
|
1
|
+
import { cn } from "./classNames-BzrkDnOD.js";
|
|
2
|
+
import { useState } from "react";
|
|
3
|
+
import { cva } from "class-variance-authority";
|
|
4
|
+
import { jsx, jsxs } from "react/jsx-runtime";
|
|
5
|
+
import { diffLines, diffWords } from "diff";
|
|
6
|
+
//#region src/components/DiffView/DiffViewMark.tsx
|
|
7
|
+
const variants$1 = cva([
|
|
8
|
+
"tw:p-0.5",
|
|
9
|
+
"tw:text-inherit",
|
|
10
|
+
"tw:inline-flex"
|
|
11
|
+
], { variants: { diff: {
|
|
12
|
+
added: ["tw:bg-green-200", "tw:[[data-theme=dark]_&]:bg-green-500/40"],
|
|
13
|
+
removed: ["tw:bg-error-300", "tw:[[data-theme=dark]_&]:bg-error-500/40"]
|
|
14
|
+
} } });
|
|
15
|
+
const DiffViewMark = ({ diff, children, className, ...props }) => /* @__PURE__ */ jsx("mark", {
|
|
16
|
+
...props,
|
|
17
|
+
className: cn(variants$1({
|
|
18
|
+
diff,
|
|
19
|
+
className
|
|
20
|
+
})),
|
|
21
|
+
children
|
|
22
|
+
});
|
|
23
|
+
//#endregion
|
|
24
|
+
//#region src/components/DiffView/DiffViewTd.tsx
|
|
25
|
+
const variants = cva([
|
|
26
|
+
"tw:[&_pre]:p-0",
|
|
27
|
+
"tw:[&_pre]:m-0",
|
|
28
|
+
"tw:[&_pre]:border-none",
|
|
29
|
+
"tw:[&_pre]:rounded-none",
|
|
30
|
+
"tw:align-top",
|
|
31
|
+
"tw:[&_pre]:bg-transparent",
|
|
32
|
+
"tw:[&_pre]:text-inherit",
|
|
33
|
+
"tw:[&_pre]:px-2",
|
|
34
|
+
"tw:[&_pre]:!leading-7",
|
|
35
|
+
"tw:[&_pre]:text-sm",
|
|
36
|
+
"tw:[&_pre]:whitespace-pre-wrap"
|
|
37
|
+
], {
|
|
38
|
+
defaultVariants: {
|
|
39
|
+
variant: "default",
|
|
40
|
+
diff: "default"
|
|
41
|
+
},
|
|
42
|
+
variants: {
|
|
43
|
+
variant: {
|
|
44
|
+
default: [],
|
|
45
|
+
gutter: [
|
|
46
|
+
"tw:w-14",
|
|
47
|
+
"tw:text-right",
|
|
48
|
+
"tw:whitespace-nowrap",
|
|
49
|
+
"tw:select-none"
|
|
50
|
+
],
|
|
51
|
+
code: []
|
|
52
|
+
},
|
|
53
|
+
diff: {
|
|
54
|
+
default: [],
|
|
55
|
+
added: [],
|
|
56
|
+
removed: []
|
|
57
|
+
}
|
|
58
|
+
},
|
|
59
|
+
compoundVariants: [
|
|
60
|
+
{
|
|
61
|
+
variant: "gutter",
|
|
62
|
+
diff: "default",
|
|
63
|
+
className: ["tw:bg-muted", "tw:text-muted-foreground"]
|
|
64
|
+
},
|
|
65
|
+
{
|
|
66
|
+
variant: "gutter",
|
|
67
|
+
diff: "added",
|
|
68
|
+
className: ["tw:bg-green-200 tw:text-green-900", "tw:[[data-theme=dark]_&]:bg-green-500/25 tw:[[data-theme=dark]_&]:text-green-300"]
|
|
69
|
+
},
|
|
70
|
+
{
|
|
71
|
+
variant: "gutter",
|
|
72
|
+
diff: "removed",
|
|
73
|
+
className: ["tw:bg-error-200 tw:text-error-700", "tw:[[data-theme=dark]_&]:bg-error-500/25 tw:[[data-theme=dark]_&]:text-error-300"]
|
|
74
|
+
},
|
|
75
|
+
{
|
|
76
|
+
variant: "code",
|
|
77
|
+
diff: "default",
|
|
78
|
+
className: ["tw:bg-background", "tw:text-foreground"]
|
|
79
|
+
},
|
|
80
|
+
{
|
|
81
|
+
variant: "code",
|
|
82
|
+
diff: "added",
|
|
83
|
+
className: ["tw:bg-green-100 tw:text-foreground", "tw:[[data-theme=dark]_&]:bg-green-500/15"]
|
|
84
|
+
},
|
|
85
|
+
{
|
|
86
|
+
variant: "code",
|
|
87
|
+
diff: "removed",
|
|
88
|
+
className: ["tw:bg-error-100 tw:text-foreground", "tw:[[data-theme=dark]_&]:bg-error-500/15"]
|
|
89
|
+
}
|
|
90
|
+
]
|
|
91
|
+
});
|
|
92
|
+
const DiffViewTd = ({ diff, variant = "default", children, className, ...props }) => {
|
|
93
|
+
const needsCodeFormatting = variant === "code" || variant === "gutter";
|
|
94
|
+
return /* @__PURE__ */ jsx("td", {
|
|
95
|
+
...props,
|
|
96
|
+
className: cn(variants({
|
|
97
|
+
variant,
|
|
98
|
+
className,
|
|
99
|
+
diff
|
|
100
|
+
})),
|
|
101
|
+
children: needsCodeFormatting ? /* @__PURE__ */ jsx("pre", { children }) : children
|
|
102
|
+
});
|
|
103
|
+
};
|
|
104
|
+
//#endregion
|
|
105
|
+
//#region src/components/DiffView/DiffViewTh.tsx
|
|
106
|
+
const DiffViewTh = ({ variant = "default", children, className, ...props }) => /* @__PURE__ */ jsx("th", {
|
|
107
|
+
...props,
|
|
108
|
+
className: cn("tw:bg-background", "tw:py-3", "tw:border-b", "tw:border-border", { "tw:w-14": variant === "gutter" }, { "tw:last:pr-8": variant === "default" }, className),
|
|
109
|
+
children
|
|
110
|
+
});
|
|
111
|
+
//#endregion
|
|
112
|
+
//#region src/components/DiffView/util.ts
|
|
113
|
+
const DiffType = {
|
|
114
|
+
DEFAULT: "default",
|
|
115
|
+
ADDED: "added",
|
|
116
|
+
REMOVED: "removed"
|
|
117
|
+
};
|
|
118
|
+
const EXTRA_LINES = 3;
|
|
119
|
+
const TAIL_BLOCK = Number.POSITIVE_INFINITY;
|
|
120
|
+
const splitLines = (value) => {
|
|
121
|
+
if (value === "") return [];
|
|
122
|
+
return value.replace(/\n$/, "").split("\n");
|
|
123
|
+
};
|
|
124
|
+
const computeWordDiff = (oldValue, newValue) => {
|
|
125
|
+
const result = {
|
|
126
|
+
left: [],
|
|
127
|
+
right: []
|
|
128
|
+
};
|
|
129
|
+
diffWords(oldValue, newValue).forEach(({ added, removed, value }) => {
|
|
130
|
+
if (added) {
|
|
131
|
+
result.right.push({
|
|
132
|
+
type: DiffType.ADDED,
|
|
133
|
+
value,
|
|
134
|
+
lineNumber: 0
|
|
135
|
+
});
|
|
136
|
+
return;
|
|
137
|
+
}
|
|
138
|
+
if (removed) {
|
|
139
|
+
result.left.push({
|
|
140
|
+
type: DiffType.REMOVED,
|
|
141
|
+
value,
|
|
142
|
+
lineNumber: 0
|
|
143
|
+
});
|
|
144
|
+
return;
|
|
145
|
+
}
|
|
146
|
+
const unchanged = {
|
|
147
|
+
type: DiffType.DEFAULT,
|
|
148
|
+
value,
|
|
149
|
+
lineNumber: 0
|
|
150
|
+
};
|
|
151
|
+
result.right.push(unchanged);
|
|
152
|
+
result.left.push(unchanged);
|
|
153
|
+
});
|
|
154
|
+
return result;
|
|
155
|
+
};
|
|
156
|
+
const findPairedAddedLine = (diffArray, blockIndex, lineIndex) => {
|
|
157
|
+
const nextBlock = diffArray[blockIndex + 1];
|
|
158
|
+
if (!nextBlock?.added) return null;
|
|
159
|
+
return splitLines(nextBlock.value)[lineIndex] ?? null;
|
|
160
|
+
};
|
|
161
|
+
const buildUnchangedLine = (value, counters) => {
|
|
162
|
+
counters.left += 1;
|
|
163
|
+
counters.right += 1;
|
|
164
|
+
return {
|
|
165
|
+
left: {
|
|
166
|
+
type: DiffType.DEFAULT,
|
|
167
|
+
value,
|
|
168
|
+
lineNumber: counters.left
|
|
169
|
+
},
|
|
170
|
+
right: {
|
|
171
|
+
type: DiffType.DEFAULT,
|
|
172
|
+
value,
|
|
173
|
+
lineNumber: counters.right
|
|
174
|
+
}
|
|
175
|
+
};
|
|
176
|
+
};
|
|
177
|
+
const buildAddedLine = (value, counters) => {
|
|
178
|
+
counters.right += 1;
|
|
179
|
+
return {
|
|
180
|
+
left: {},
|
|
181
|
+
right: {
|
|
182
|
+
type: DiffType.ADDED,
|
|
183
|
+
value,
|
|
184
|
+
lineNumber: counters.right
|
|
185
|
+
}
|
|
186
|
+
};
|
|
187
|
+
};
|
|
188
|
+
const buildRemovedLine = (value, counters) => {
|
|
189
|
+
counters.left += 1;
|
|
190
|
+
return {
|
|
191
|
+
left: {
|
|
192
|
+
type: DiffType.REMOVED,
|
|
193
|
+
value: value || " ",
|
|
194
|
+
lineNumber: counters.left
|
|
195
|
+
},
|
|
196
|
+
right: {}
|
|
197
|
+
};
|
|
198
|
+
};
|
|
199
|
+
const buildModifiedLine = (leftValue, rightValue, counters) => {
|
|
200
|
+
counters.left += 1;
|
|
201
|
+
counters.right += 1;
|
|
202
|
+
if ((leftValue || " ") === rightValue) return {
|
|
203
|
+
line: {
|
|
204
|
+
left: {
|
|
205
|
+
type: DiffType.DEFAULT,
|
|
206
|
+
value: rightValue,
|
|
207
|
+
lineNumber: counters.left
|
|
208
|
+
},
|
|
209
|
+
right: {
|
|
210
|
+
type: DiffType.DEFAULT,
|
|
211
|
+
value: rightValue,
|
|
212
|
+
lineNumber: counters.right
|
|
213
|
+
}
|
|
214
|
+
},
|
|
215
|
+
isActualChange: false
|
|
216
|
+
};
|
|
217
|
+
const { left, right } = computeWordDiff(leftValue, rightValue);
|
|
218
|
+
return {
|
|
219
|
+
line: {
|
|
220
|
+
left: {
|
|
221
|
+
type: DiffType.REMOVED,
|
|
222
|
+
value: left,
|
|
223
|
+
lineNumber: counters.left
|
|
224
|
+
},
|
|
225
|
+
right: {
|
|
226
|
+
type: DiffType.ADDED,
|
|
227
|
+
value: right,
|
|
228
|
+
lineNumber: counters.right
|
|
229
|
+
}
|
|
230
|
+
},
|
|
231
|
+
isActualChange: true
|
|
232
|
+
};
|
|
233
|
+
};
|
|
234
|
+
const computeLineInformation = (oldString, newString, ignoreWhitespace) => {
|
|
235
|
+
const diffArray = diffLines(oldString.trimEnd(), newString.trimEnd(), { ignoreWhitespace });
|
|
236
|
+
const counters = {
|
|
237
|
+
left: 0,
|
|
238
|
+
right: 0,
|
|
239
|
+
global: 0
|
|
240
|
+
};
|
|
241
|
+
const lineInformation = [];
|
|
242
|
+
const diffLineSet = /* @__PURE__ */ new Set();
|
|
243
|
+
const consumedAddedLines = /* @__PURE__ */ new Set();
|
|
244
|
+
diffArray.forEach((block, blockIndex) => {
|
|
245
|
+
splitLines(block.value).forEach((value, lineIndex) => {
|
|
246
|
+
if (consumedAddedLines.has(`${blockIndex}-${lineIndex}`)) return;
|
|
247
|
+
if (block.removed) {
|
|
248
|
+
const paired = findPairedAddedLine(diffArray, blockIndex, lineIndex);
|
|
249
|
+
if (paired !== null) {
|
|
250
|
+
consumedAddedLines.add(`${blockIndex + 1}-${lineIndex}`);
|
|
251
|
+
const { line, isActualChange } = buildModifiedLine(value, paired, counters);
|
|
252
|
+
lineInformation.push(line);
|
|
253
|
+
if (isActualChange) diffLineSet.add(counters.global);
|
|
254
|
+
} else {
|
|
255
|
+
lineInformation.push(buildRemovedLine(value, counters));
|
|
256
|
+
diffLineSet.add(counters.global);
|
|
257
|
+
}
|
|
258
|
+
} else if (block.added) {
|
|
259
|
+
lineInformation.push(buildAddedLine(value, counters));
|
|
260
|
+
diffLineSet.add(counters.global);
|
|
261
|
+
} else lineInformation.push(buildUnchangedLine(value, counters));
|
|
262
|
+
counters.global += 1;
|
|
263
|
+
});
|
|
264
|
+
});
|
|
265
|
+
return {
|
|
266
|
+
lineInformation,
|
|
267
|
+
diffLines: [...diffLineSet].sort((a, b) => a - b)
|
|
268
|
+
};
|
|
269
|
+
};
|
|
270
|
+
const toSegments = (lineInformation, diffLineSet) => {
|
|
271
|
+
const segments = [];
|
|
272
|
+
let current = null;
|
|
273
|
+
lineInformation.forEach((line, index) => {
|
|
274
|
+
const isChange = diffLineSet.has(index);
|
|
275
|
+
if (current === null || current.kind === "change" !== isChange) {
|
|
276
|
+
current = isChange ? {
|
|
277
|
+
kind: "change",
|
|
278
|
+
lines: [line],
|
|
279
|
+
firstIndex: index
|
|
280
|
+
} : {
|
|
281
|
+
kind: "context",
|
|
282
|
+
lines: [line],
|
|
283
|
+
firstIndex: index
|
|
284
|
+
};
|
|
285
|
+
segments.push(current);
|
|
286
|
+
} else current.lines.push(line);
|
|
287
|
+
});
|
|
288
|
+
return segments;
|
|
289
|
+
};
|
|
290
|
+
const normalizeSide = (side) => {
|
|
291
|
+
const raw = Array.isArray(side.value) ? side.value : [{
|
|
292
|
+
value: side.value,
|
|
293
|
+
type: DiffType.DEFAULT,
|
|
294
|
+
lineNumber: 0
|
|
295
|
+
}];
|
|
296
|
+
return {
|
|
297
|
+
type: side.type,
|
|
298
|
+
lineNumber: side.lineNumber,
|
|
299
|
+
words: raw.filter((w) => typeof w.value === "string")
|
|
300
|
+
};
|
|
301
|
+
};
|
|
302
|
+
const renderLineRow = (line) => ({
|
|
303
|
+
kind: "line",
|
|
304
|
+
left: normalizeSide(line.left),
|
|
305
|
+
right: normalizeSide(line.right),
|
|
306
|
+
key: `${line.left.lineNumber}-${line.right.lineNumber}`
|
|
307
|
+
});
|
|
308
|
+
const renderContextSegment = (segment, nextChangeIndex, hasPrevChange, hasNextChange, expanded) => {
|
|
309
|
+
if (expanded.has(nextChangeIndex)) return segment.lines.map(renderLineRow);
|
|
310
|
+
const total = segment.lines.length;
|
|
311
|
+
const trail = hasPrevChange ? Math.min(EXTRA_LINES, total) : 0;
|
|
312
|
+
let lead = hasNextChange ? Math.min(EXTRA_LINES, total - trail) : 0;
|
|
313
|
+
let foldCount = total - trail - lead;
|
|
314
|
+
if (!hasNextChange && foldCount === 1) {
|
|
315
|
+
foldCount = 0;
|
|
316
|
+
lead = 1;
|
|
317
|
+
}
|
|
318
|
+
const rows = [];
|
|
319
|
+
if (trail > 0) rows.push(...segment.lines.slice(0, trail).map(renderLineRow));
|
|
320
|
+
if (foldCount > 0) rows.push({
|
|
321
|
+
kind: "fold",
|
|
322
|
+
blockStart: nextChangeIndex,
|
|
323
|
+
lineCount: foldCount,
|
|
324
|
+
key: hasNextChange ? `fold-${nextChangeIndex}` : `fold-tail-${segment.firstIndex + total - 1}`
|
|
325
|
+
});
|
|
326
|
+
if (lead > 0) rows.push(...segment.lines.slice(trail + foldCount).map(renderLineRow));
|
|
327
|
+
return rows;
|
|
328
|
+
};
|
|
329
|
+
const computeDiffRows = (lineInformation, diffLines, expandedBlocks) => {
|
|
330
|
+
const diffLineSet = new Set(diffLines);
|
|
331
|
+
const expanded = new Set(expandedBlocks);
|
|
332
|
+
const segments = toSegments(lineInformation, diffLineSet);
|
|
333
|
+
const rows = [];
|
|
334
|
+
let hasPrevChange = false;
|
|
335
|
+
segments.forEach((segment, i) => {
|
|
336
|
+
if (segment.kind === "change") {
|
|
337
|
+
rows.push(...segment.lines.map(renderLineRow));
|
|
338
|
+
hasPrevChange = true;
|
|
339
|
+
return;
|
|
340
|
+
}
|
|
341
|
+
const nextChange = segments.slice(i + 1).find((s) => s.kind === "change");
|
|
342
|
+
const nextStart = nextChange?.firstIndex ?? TAIL_BLOCK;
|
|
343
|
+
rows.push(...renderContextSegment(segment, nextStart, hasPrevChange, !!nextChange, expanded));
|
|
344
|
+
});
|
|
345
|
+
return rows;
|
|
346
|
+
};
|
|
347
|
+
//#endregion
|
|
348
|
+
//#region src/components/DiffView/DiffView.tsx
|
|
349
|
+
const DiffView = ({ leftTitle, leftTitleGutter, rightTitle, rightTitleGutter, oldValue, newValue, ignoreWhitespace, className }) => {
|
|
350
|
+
const [expandedBlocks, setExpandedBlocks] = useState([]);
|
|
351
|
+
const { lineInformation, diffLines } = computeLineInformation(oldValue, newValue, ignoreWhitespace);
|
|
352
|
+
const rows = computeDiffRows(lineInformation, diffLines, expandedBlocks);
|
|
353
|
+
const handleExpand = (blockNumber) => {
|
|
354
|
+
setExpandedBlocks((curr) => [...curr, blockNumber]);
|
|
355
|
+
};
|
|
356
|
+
return /* @__PURE__ */ jsx("div", {
|
|
357
|
+
className: cn("tailwindcss-preflight", "tw:bg-muted", "tw:text-foreground", "tw:border", "tw:border-border", "tw:rounded-2xl", "tw:overflow-auto", className),
|
|
358
|
+
children: /* @__PURE__ */ jsxs("table", {
|
|
359
|
+
className: "tw:w-full tw:table-fixed tw:bg-background",
|
|
360
|
+
children: [/* @__PURE__ */ jsx("thead", {
|
|
361
|
+
className: "tw:sticky tw:top-0 tw:z-10 tw:shadow-sm",
|
|
362
|
+
children: /* @__PURE__ */ jsxs("tr", { children: [
|
|
363
|
+
/* @__PURE__ */ jsx(DiffViewTh, {
|
|
364
|
+
variant: "gutter",
|
|
365
|
+
children: leftTitleGutter
|
|
366
|
+
}),
|
|
367
|
+
/* @__PURE__ */ jsx(DiffViewTh, { children: leftTitle }),
|
|
368
|
+
/* @__PURE__ */ jsx(DiffViewTh, {
|
|
369
|
+
variant: "gutter",
|
|
370
|
+
children: rightTitleGutter
|
|
371
|
+
}),
|
|
372
|
+
/* @__PURE__ */ jsx(DiffViewTh, { children: rightTitle })
|
|
373
|
+
] })
|
|
374
|
+
}), /* @__PURE__ */ jsx("tbody", { children: rows.map((row) => {
|
|
375
|
+
if (row.kind === "fold") return /* @__PURE__ */ jsx("tr", { children: /* @__PURE__ */ jsx(DiffViewTd, {
|
|
376
|
+
colSpan: 4,
|
|
377
|
+
children: /* @__PURE__ */ jsxs("button", {
|
|
378
|
+
type: "button",
|
|
379
|
+
onClick: () => handleExpand(row.blockStart),
|
|
380
|
+
className: cn("tw:w-full", "tw:text-center", "tw:bg-muted", "tw:text-foreground", "tw:hover:bg-accent", "tw:underline", "tw:p-2"),
|
|
381
|
+
children: [
|
|
382
|
+
"Expand ",
|
|
383
|
+
row.lineCount,
|
|
384
|
+
" lines ..."
|
|
385
|
+
]
|
|
386
|
+
})
|
|
387
|
+
}) }, row.key);
|
|
388
|
+
return /* @__PURE__ */ jsxs("tr", { children: [
|
|
389
|
+
/* @__PURE__ */ jsx(DiffViewTd, {
|
|
390
|
+
variant: "gutter",
|
|
391
|
+
diff: row.left.type,
|
|
392
|
+
children: row.left.lineNumber
|
|
393
|
+
}),
|
|
394
|
+
/* @__PURE__ */ jsx(DiffViewTd, {
|
|
395
|
+
variant: "code",
|
|
396
|
+
diff: row.left.type,
|
|
397
|
+
children: row.left.words.map((val, index) => {
|
|
398
|
+
if (val.type === "default") return val.value;
|
|
399
|
+
return /* @__PURE__ */ jsx(DiffViewMark, {
|
|
400
|
+
diff: val.type,
|
|
401
|
+
children: val.value
|
|
402
|
+
}, `${val.value}-${val.type}-${index}`);
|
|
403
|
+
})
|
|
404
|
+
}),
|
|
405
|
+
/* @__PURE__ */ jsx(DiffViewTd, {
|
|
406
|
+
variant: "gutter",
|
|
407
|
+
diff: row.right.type,
|
|
408
|
+
children: row.right.lineNumber
|
|
409
|
+
}),
|
|
410
|
+
/* @__PURE__ */ jsx(DiffViewTd, {
|
|
411
|
+
variant: "code",
|
|
412
|
+
diff: row.right.type,
|
|
413
|
+
children: row.right.words.map((val, index) => {
|
|
414
|
+
if (val.type === "default") return val.value;
|
|
415
|
+
return /* @__PURE__ */ jsx(DiffViewMark, {
|
|
416
|
+
diff: val.type,
|
|
417
|
+
children: val.value
|
|
418
|
+
}, `${val.value}-${val.type}-${index}`);
|
|
419
|
+
})
|
|
420
|
+
})
|
|
421
|
+
] }, row.key);
|
|
422
|
+
}) })]
|
|
423
|
+
})
|
|
424
|
+
});
|
|
425
|
+
};
|
|
426
|
+
//#endregion
|
|
427
|
+
export { DiffType, DiffView, computeDiffRows, computeLineInformation };
|
|
428
|
+
|
|
429
|
+
//# sourceMappingURL=DiffView-ppTIzh2h.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"DiffView-ppTIzh2h.js","names":["variants"],"sources":["../src/components/DiffView/DiffViewMark.tsx","../src/components/DiffView/DiffViewTd.tsx","../src/components/DiffView/DiffViewTh.tsx","../src/components/DiffView/util.ts","../src/components/DiffView/DiffView.tsx"],"sourcesContent":["import type { ComponentProps } from 'react';\nimport { cva, type VariantProps } from 'class-variance-authority';\n\nimport { cn } from '../../utils';\n\n// `text-inherit` overrides the UA `mark` colour so the word highlight takes the\n// cell's text colour. That only works if the fill flips with the scheme too —\n// the light pastels are opaque, so under dark they put near-white text on a\n// light slab. Dark mode tints the same hue at a stronger alpha than the line\n// fill behind it, keeping the word-level mark the more prominent of the two.\nconst variants = cva(['tw:p-0.5', 'tw:text-inherit', 'tw:inline-flex'], {\n variants: {\n diff: {\n added: ['tw:bg-green-200', 'tw:[[data-theme=dark]_&]:bg-green-500/40'],\n removed: ['tw:bg-error-300', 'tw:[[data-theme=dark]_&]:bg-error-500/40'],\n },\n },\n});\n\ntype Props = ComponentProps<'span'> & VariantProps<typeof variants>;\n\nexport const DiffViewMark = ({ diff, children, className, ...props }: Props) => (\n <mark {...props} className={cn(variants({ diff, className }))}>\n {children}\n </mark>\n);\n","import type { ComponentProps } from 'react';\nimport { cva, type VariantProps } from 'class-variance-authority';\n\nimport { cn } from '../../utils';\n\nconst variants = cva(\n [\n // reset global styles\n 'tw:[&_pre]:p-0',\n 'tw:[&_pre]:m-0',\n 'tw:[&_pre]:border-none',\n 'tw:[&_pre]:rounded-none',\n\n 'tw:align-top',\n // `bg-transparent`, not `bg-inherit`: the cell tints are translucent under\n // the dark scheme, and an inherited `background-color` repaints the same\n // rgba over the already-composited cell — doubling the tint.\n 'tw:[&_pre]:bg-transparent',\n 'tw:[&_pre]:text-inherit',\n 'tw:[&_pre]:px-2',\n 'tw:[&_pre]:!leading-7',\n 'tw:[&_pre]:text-sm',\n 'tw:[&_pre]:whitespace-pre-wrap',\n ],\n {\n defaultVariants: {\n variant: 'default',\n diff: 'default',\n },\n variants: {\n variant: {\n default: [],\n gutter: ['tw:w-14', 'tw:text-right', 'tw:whitespace-nowrap', 'tw:select-none'],\n code: [],\n },\n diff: {\n default: [],\n added: [],\n removed: [],\n },\n },\n // Added/removed rows are meaning-encoding, so they keep the fixed green /\n // error ramps rather than a brand-overridable status token. Both need an\n // explicit light/dark pair: the light pastel washes (`-100`/`-200`) are\n // opaque, so under the dark scheme they stranded the near-white\n // `foreground` on a light slab. Dark mode tints the same hue at low alpha\n // over the pane surface instead, and every cell pins its own text colour —\n // inheriting it left the added/removed code cells invisible in dark mode.\n compoundVariants: [\n {\n variant: 'gutter',\n diff: 'default',\n className: ['tw:bg-muted', 'tw:text-muted-foreground'],\n },\n {\n variant: 'gutter',\n diff: 'added',\n className: [\n // `green-900` (6.1:1 on `green-200`), not `green-600` — that was 2.3:1.\n 'tw:bg-green-200 tw:text-green-900',\n 'tw:[[data-theme=dark]_&]:bg-green-500/25 tw:[[data-theme=dark]_&]:text-green-300',\n ],\n },\n {\n variant: 'gutter',\n diff: 'removed',\n className: [\n // `error-700` (5.4:1 on `error-200`), not `error-500` — that was 3.3:1.\n 'tw:bg-error-200 tw:text-error-700',\n 'tw:[[data-theme=dark]_&]:bg-error-500/25 tw:[[data-theme=dark]_&]:text-error-300',\n ],\n },\n {\n variant: 'code',\n diff: 'default',\n className: ['tw:bg-background', 'tw:text-foreground'],\n },\n {\n variant: 'code',\n diff: 'added',\n className: [\n 'tw:bg-green-100 tw:text-foreground',\n 'tw:[[data-theme=dark]_&]:bg-green-500/15',\n ],\n },\n {\n variant: 'code',\n diff: 'removed',\n className: [\n 'tw:bg-error-100 tw:text-foreground',\n 'tw:[[data-theme=dark]_&]:bg-error-500/15',\n ],\n },\n ],\n },\n);\n\ntype Props = ComponentProps<'td'> & VariantProps<typeof variants>;\n\nexport const DiffViewTd = ({ diff, variant = 'default', children, className, ...props }: Props) => {\n const needsCodeFormatting = variant === 'code' || variant === 'gutter';\n\n return (\n <td {...props} className={cn(variants({ variant, className, diff }))}>\n {needsCodeFormatting ? <pre>{children}</pre> : children}\n </td>\n );\n};\n","import type { ComponentProps } from 'react';\n\nimport { cn } from '../../utils';\n\ntype Props = ComponentProps<'th'> & {\n variant?: 'default' | 'gutter';\n};\n\nexport const DiffViewTh = ({ variant = 'default', children, className, ...props }: Props) => (\n <th\n {...props}\n className={cn(\n 'tw:bg-background',\n 'tw:py-3',\n // explicit `border-border`: v4 changed the default border color from gray-200 to\n // `currentColor`, so a bare `border-b` rendered a dark divider (the th's text colour)\n // instead of the light-grey header rule.\n 'tw:border-b',\n 'tw:border-border',\n { 'tw:w-14': variant === 'gutter' },\n { 'tw:last:pr-8': variant === 'default' },\n className,\n )}\n >\n {children}\n </th>\n);\n","import { diffLines, diffWords } from 'diff';\n\nexport const DiffType = {\n DEFAULT: 'default',\n ADDED: 'added',\n REMOVED: 'removed',\n} as const;\n\ntype DiffTypeValue = (typeof DiffType)[keyof typeof DiffType];\n\nexport type DiffInformation = {\n value: string | DiffInformation[];\n lineNumber: number;\n type: DiffTypeValue;\n};\n\nexport type LineInformation = {\n left: DiffInformation;\n right: DiffInformation;\n};\n\ntype ComputedLineInformation = {\n lineInformation: LineInformation[];\n diffLines: number[];\n};\n\ntype SidedDiffInformation = {\n left: DiffInformation[];\n right: DiffInformation[];\n};\n\nexport type WordInformation = {\n value: string;\n type: DiffTypeValue;\n lineNumber: number;\n};\n\nexport type SideInformation = {\n type: DiffTypeValue;\n lineNumber: number;\n words: WordInformation[];\n};\n\nexport type DiffRow =\n | { kind: 'fold'; blockStart: number; lineCount: number; key: string }\n | { kind: 'line'; left: SideInformation; right: SideInformation; key: string };\n\nconst EXTRA_LINES = 3;\n\n// Sentinel blockStart for the region after the last diff; keeps distance checks\n// inert and lets `expandedBlocks` key on a real value.\nconst TAIL_BLOCK = Number.POSITIVE_INFINITY;\n\ntype Counters = {\n left: number;\n right: number;\n global: number;\n};\n\ntype DiffChunk = ReturnType<typeof diffLines>[number];\n\nconst splitLines = (value: string): string[] => {\n if (value === '') return [];\n return value.replace(/\\n$/, '').split('\\n');\n};\n\nconst computeWordDiff = (oldValue: string, newValue: string): SidedDiffInformation => {\n const result: SidedDiffInformation = { left: [], right: [] };\n\n diffWords(oldValue, newValue).forEach(({ added, removed, value }) => {\n if (added) {\n result.right.push({ type: DiffType.ADDED, value, lineNumber: 0 });\n return;\n }\n if (removed) {\n result.left.push({ type: DiffType.REMOVED, value, lineNumber: 0 });\n return;\n }\n const unchanged: DiffInformation = { type: DiffType.DEFAULT, value, lineNumber: 0 };\n result.right.push(unchanged);\n result.left.push(unchanged);\n });\n\n return result;\n};\n\n// Look ahead one chunk in the diff array and return the paired added-line string,\n// or null if there isn't one at the same lineIndex position.\nconst findPairedAddedLine = (\n diffArray: DiffChunk[],\n blockIndex: number,\n lineIndex: number,\n): string | null => {\n const nextBlock = diffArray[blockIndex + 1];\n if (!nextBlock?.added) return null;\n return splitLines(nextBlock.value)[lineIndex] ?? null;\n};\n\nconst buildUnchangedLine = (value: string, counters: Counters): LineInformation => {\n counters.left += 1;\n counters.right += 1;\n return {\n left: { type: DiffType.DEFAULT, value, lineNumber: counters.left },\n right: { type: DiffType.DEFAULT, value, lineNumber: counters.right },\n };\n};\n\nconst buildAddedLine = (value: string, counters: Counters): LineInformation => {\n counters.right += 1;\n return {\n left: {} as DiffInformation,\n right: { type: DiffType.ADDED, value, lineNumber: counters.right },\n };\n};\n\nconst buildRemovedLine = (value: string, counters: Counters): LineInformation => {\n counters.left += 1;\n return {\n left: { type: DiffType.REMOVED, value: value || ' ', lineNumber: counters.left },\n right: {} as DiffInformation,\n };\n};\n\n// Removed + paired added → one modification row with word-level diff.\n// Returns `isActualChange: false` for the quirky case where the two sides\n// resolve to the same string; the caller then omits it from diffLines.\nconst buildModifiedLine = (\n leftValue: string,\n rightValue: string,\n counters: Counters,\n): { line: LineInformation; isActualChange: boolean } => {\n counters.left += 1;\n counters.right += 1;\n const displayLeft = leftValue || ' ';\n\n if (displayLeft === rightValue) {\n return {\n line: {\n left: { type: DiffType.DEFAULT, value: rightValue, lineNumber: counters.left },\n right: { type: DiffType.DEFAULT, value: rightValue, lineNumber: counters.right },\n },\n isActualChange: false,\n };\n }\n\n const { left, right } = computeWordDiff(leftValue, rightValue);\n return {\n line: {\n left: { type: DiffType.REMOVED, value: left, lineNumber: counters.left },\n right: { type: DiffType.ADDED, value: right, lineNumber: counters.right },\n },\n isActualChange: true,\n };\n};\n\nexport const computeLineInformation = (\n oldString: string,\n newString: string,\n ignoreWhitespace?: boolean,\n): ComputedLineInformation => {\n const diffArray = diffLines(oldString.trimEnd(), newString.trimEnd(), { ignoreWhitespace });\n const counters: Counters = { left: 0, right: 0, global: 0 };\n const lineInformation: LineInformation[] = [];\n const diffLineSet = new Set<number>();\n const consumedAddedLines = new Set<string>();\n\n diffArray.forEach((block, blockIndex) => {\n splitLines(block.value).forEach((value, lineIndex) => {\n if (consumedAddedLines.has(`${blockIndex}-${lineIndex}`)) return;\n\n if (block.removed) {\n const paired = findPairedAddedLine(diffArray, blockIndex, lineIndex);\n if (paired !== null) {\n consumedAddedLines.add(`${blockIndex + 1}-${lineIndex}`);\n const { line, isActualChange } = buildModifiedLine(value, paired, counters);\n lineInformation.push(line);\n if (isActualChange) diffLineSet.add(counters.global);\n } else {\n lineInformation.push(buildRemovedLine(value, counters));\n diffLineSet.add(counters.global);\n }\n } else if (block.added) {\n lineInformation.push(buildAddedLine(value, counters));\n diffLineSet.add(counters.global);\n } else {\n lineInformation.push(buildUnchangedLine(value, counters));\n }\n\n counters.global += 1;\n });\n });\n\n return {\n lineInformation,\n diffLines: [...diffLineSet].sort((a, b) => a - b),\n };\n};\n\ntype ContextSegment = { kind: 'context'; lines: LineInformation[]; firstIndex: number };\ntype ChangeSegment = { kind: 'change'; lines: LineInformation[]; firstIndex: number };\ntype Segment = ContextSegment | ChangeSegment;\n\nconst toSegments = (\n lineInformation: LineInformation[],\n diffLineSet: ReadonlySet<number>,\n): Segment[] => {\n const segments: Segment[] = [];\n let current: Segment | null = null;\n\n lineInformation.forEach((line, index) => {\n const isChange = diffLineSet.has(index);\n if (current === null || (current.kind === 'change') !== isChange) {\n current = isChange\n ? { kind: 'change', lines: [line], firstIndex: index }\n : { kind: 'context', lines: [line], firstIndex: index };\n segments.push(current);\n } else {\n current.lines.push(line);\n }\n });\n\n return segments;\n};\n\nconst normalizeSide = (side: DiffInformation): SideInformation => {\n const raw = Array.isArray(side.value)\n ? side.value\n : [{ value: side.value, type: DiffType.DEFAULT, lineNumber: 0 }];\n\n return {\n type: side.type,\n lineNumber: side.lineNumber,\n words: raw.filter((w): w is WordInformation => typeof w.value === 'string'),\n };\n};\n\nconst renderLineRow = (line: LineInformation): DiffRow => ({\n kind: 'line',\n left: normalizeSide(line.left),\n right: normalizeSide(line.right),\n key: `${line.left.lineNumber}-${line.right.lineNumber}`,\n});\n\nconst renderContextSegment = (\n segment: ContextSegment,\n nextChangeIndex: number,\n hasPrevChange: boolean,\n hasNextChange: boolean,\n expanded: ReadonlySet<number>,\n): DiffRow[] => {\n if (expanded.has(nextChangeIndex)) {\n return segment.lines.map(renderLineRow);\n }\n\n const total = segment.lines.length;\n const trail = hasPrevChange ? Math.min(EXTRA_LINES, total) : 0;\n let lead = hasNextChange ? Math.min(EXTRA_LINES, total - trail) : 0;\n let foldCount = total - trail - lead;\n\n // Quirk from the original: a single trailing unchanged line is always rendered\n // (no one-line fold at the tail). Absorb it into the lead slice.\n if (!hasNextChange && foldCount === 1) {\n foldCount = 0;\n lead = 1;\n }\n\n const rows: DiffRow[] = [];\n if (trail > 0) {\n rows.push(...segment.lines.slice(0, trail).map(renderLineRow));\n }\n if (foldCount > 0) {\n rows.push({\n kind: 'fold',\n blockStart: nextChangeIndex,\n lineCount: foldCount,\n key: hasNextChange\n ? `fold-${nextChangeIndex}`\n : `fold-tail-${segment.firstIndex + total - 1}`,\n });\n }\n if (lead > 0) {\n rows.push(...segment.lines.slice(trail + foldCount).map(renderLineRow));\n }\n return rows;\n};\n\nexport const computeDiffRows = (\n lineInformation: LineInformation[],\n diffLines: number[],\n expandedBlocks: number[],\n): DiffRow[] => {\n const diffLineSet = new Set(diffLines);\n const expanded = new Set(expandedBlocks);\n const segments = toSegments(lineInformation, diffLineSet);\n\n const rows: DiffRow[] = [];\n let hasPrevChange = false;\n\n segments.forEach((segment, i) => {\n if (segment.kind === 'change') {\n rows.push(...segment.lines.map(renderLineRow));\n hasPrevChange = true;\n return;\n }\n const nextChange = segments.slice(i + 1).find((s) => s.kind === 'change');\n const nextStart = nextChange?.firstIndex ?? TAIL_BLOCK;\n rows.push(...renderContextSegment(segment, nextStart, hasPrevChange, !!nextChange, expanded));\n });\n\n return rows;\n};\n","import { useState } from 'react';\nimport type { ReactNode } from 'react';\n\nimport { cn } from '../../utils';\n\nimport { DiffViewMark } from './DiffViewMark';\nimport { DiffViewTd } from './DiffViewTd';\nimport { DiffViewTh } from './DiffViewTh';\nimport { computeDiffRows, computeLineInformation } from './util';\n\ntype Props = {\n oldValue: string;\n newValue: string;\n ignoreWhitespace?: boolean;\n className?: string;\n\n leftTitleGutter?: ReactNode;\n leftTitle: ReactNode;\n rightTitle: ReactNode;\n rightTitleGutter?: ReactNode;\n};\n\nexport const DiffView = ({\n leftTitle,\n leftTitleGutter,\n rightTitle,\n rightTitleGutter,\n oldValue,\n newValue,\n ignoreWhitespace,\n className,\n}: Props) => {\n const [expandedBlocks, setExpandedBlocks] = useState<number[]>([]);\n const { lineInformation, diffLines } = computeLineInformation(\n oldValue,\n newValue,\n ignoreWhitespace,\n );\n const rows = computeDiffRows(lineInformation, diffLines, expandedBlocks);\n\n const handleExpand = (blockNumber: number) => {\n setExpandedBlocks((curr) => [...curr, blockNumber]);\n };\n\n return (\n <div\n className={cn(\n 'tailwindcss-preflight',\n 'tw:bg-muted',\n // Pin the text colour rather than inheriting it: the diff is routinely\n // portalled into a Modal, where an inherited colour comes from whatever\n // sits above the portal root instead of this surface.\n 'tw:text-foreground',\n // explicit `border-border` — v4's default border colour is `currentColor`, so a bare\n // `border` drew a dark frame instead of the light-grey outline.\n 'tw:border',\n 'tw:border-border',\n 'tw:rounded-2xl',\n 'tw:overflow-auto',\n className,\n )}\n >\n <table className=\"tw:w-full tw:table-fixed tw:bg-background\">\n {/* Not v4's `shadow-xs`: `tailwind-config`'s `boxShadow.sm` fallback still carries\n the v3 value, and only `shadow-sm` reads `--shadow-sm` from a brand's\n `theme.shadows` — `shadow-xs` has no token and would opt this header out. */}\n <thead className=\"tw:sticky tw:top-0 tw:z-10 tw:shadow-sm\">\n <tr>\n <DiffViewTh variant=\"gutter\">{leftTitleGutter}</DiffViewTh>\n <DiffViewTh>{leftTitle}</DiffViewTh>\n <DiffViewTh variant=\"gutter\">{rightTitleGutter}</DiffViewTh>\n <DiffViewTh>{rightTitle}</DiffViewTh>\n </tr>\n </thead>\n\n <tbody>\n {rows.map((row) => {\n if (row.kind === 'fold')\n return (\n <tr key={row.key}>\n <DiffViewTd colSpan={4}>\n <button\n type=\"button\"\n onClick={() => handleExpand(row.blockStart)}\n className={cn(\n 'tw:w-full',\n 'tw:text-center',\n 'tw:bg-muted',\n 'tw:text-foreground',\n 'tw:hover:bg-accent',\n 'tw:underline',\n 'tw:p-2',\n )}\n >\n Expand {row.lineCount} lines ...\n </button>\n </DiffViewTd>\n </tr>\n );\n\n return (\n <tr key={row.key}>\n <DiffViewTd variant=\"gutter\" diff={row.left.type}>\n {row.left.lineNumber}\n </DiffViewTd>\n\n <DiffViewTd variant=\"code\" diff={row.left.type}>\n {row.left.words.map((val, index) => {\n if (val.type === 'default') return val.value;\n return (\n // oxlint-disable-next-line react/no-array-index-key\n <DiffViewMark key={`${val.value}-${val.type}-${index}`} diff={val.type}>\n {val.value}\n </DiffViewMark>\n );\n })}\n </DiffViewTd>\n\n <DiffViewTd variant=\"gutter\" diff={row.right.type}>\n {row.right.lineNumber}\n </DiffViewTd>\n\n <DiffViewTd variant=\"code\" diff={row.right.type}>\n {row.right.words.map((val, index) => {\n if (val.type === 'default') return val.value;\n\n return (\n // oxlint-disable-next-line react/no-array-index-key\n <DiffViewMark key={`${val.value}-${val.type}-${index}`} diff={val.type}>\n {val.value}\n </DiffViewMark>\n );\n })}\n </DiffViewTd>\n </tr>\n );\n })}\n </tbody>\n </table>\n </div>\n );\n};\n"],"mappings":"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"}
|