@keboola/design 10.1.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/AGENTS.md +2 -0
- 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/AutoSaveTextarea-BeuWuszr.js.map +1 -0
- 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 +124 -111
- package/dist/charts.js +303 -249
- 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 -420
- 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 -4
- package/dist/index-m-kQEWiY.d.ts +54 -0
- package/dist/index.d.ts +6192 -9904
- package/dist/index.js +112 -15803
- package/dist/internal/blocks/AIKit.js +2 -0
- package/dist/internal/blocks/AppShell.js +2 -0
- package/dist/internal/blocks/AutoSaveTextarea.js +2 -0
- package/dist/internal/blocks/BrandEditor.js +2 -0
- package/dist/internal/blocks/ChartPanel.js +46 -0
- package/dist/internal/blocks/ChartPanel.js.map +1 -0
- package/dist/internal/blocks/ClipboardButton.js +2 -0
- package/dist/internal/blocks/ColorInput.js +2 -0
- package/dist/internal/blocks/ColorModeSwitch.js +2 -0
- package/dist/internal/blocks/Command.js +2 -0
- package/dist/internal/blocks/CopyField.js +2 -0
- package/dist/internal/blocks/DashboardHero.js +59 -0
- package/dist/internal/blocks/DashboardHero.js.map +1 -0
- package/dist/internal/blocks/DateInput.js +2 -0
- package/dist/internal/blocks/DateRangeInput.js +2 -0
- package/dist/internal/blocks/EmptyConfigurationActionCard.js +16 -0
- package/dist/internal/blocks/EmptyConfigurationActionCard.js.map +1 -0
- package/dist/internal/blocks/EmptyState.js +142 -0
- package/dist/internal/blocks/EmptyState.js.map +1 -0
- package/dist/internal/blocks/ErrorState.js +179 -0
- package/dist/internal/blocks/ErrorState.js.map +1 -0
- package/dist/internal/blocks/ExportMenu.js +41 -0
- package/dist/internal/blocks/ExportMenu.js.map +1 -0
- package/dist/internal/blocks/Form.js +2 -0
- package/dist/internal/blocks/FormGroup.js +2 -0
- package/dist/internal/blocks/GoogleButton.js +95 -0
- package/dist/internal/blocks/GoogleButton.js.map +1 -0
- package/dist/internal/blocks/MicrosoftButton.js +64 -0
- package/dist/internal/blocks/MicrosoftButton.js.map +1 -0
- package/dist/internal/blocks/MultiActionButtonGroup.js +2 -0
- package/dist/internal/blocks/MultiCombobox.js +188 -0
- package/dist/internal/blocks/MultiCombobox.js.map +1 -0
- package/dist/internal/blocks/NumberInput.js +44 -0
- package/dist/internal/blocks/NumberInput.js.map +1 -0
- package/dist/internal/blocks/OtpInput.js +2 -0
- package/dist/internal/blocks/PageHeader.js +2 -0
- package/dist/internal/blocks/PageLayout.js +2 -0
- package/dist/internal/blocks/PageToolbar.js +2 -0
- package/dist/internal/blocks/PasswordInput.js +97 -0
- package/dist/internal/blocks/PasswordInput.js.map +1 -0
- package/dist/internal/blocks/SearchInput.js +2 -0
- package/dist/internal/blocks/SearchInputWithNavigation.js +65 -0
- package/dist/internal/blocks/SearchInputWithNavigation.js.map +1 -0
- package/dist/internal/blocks/SectionNav.js +2 -0
- package/dist/internal/blocks/SplitButton.js +46 -0
- package/dist/internal/blocks/SplitButton.js.map +1 -0
- package/dist/internal/blocks/StatCard.js +97 -0
- package/dist/internal/blocks/StatCard.js.map +1 -0
- package/dist/internal/blocks/TextInput.js +2 -0
- package/dist/internal/blocks/Textarea.js +32 -0
- package/dist/internal/blocks/Textarea.js.map +1 -0
- package/dist/internal/blocks/TimeInput.js +77 -0
- package/dist/internal/blocks/TimeInput.js.map +1 -0
- package/dist/internal/components/Alert.js +2 -0
- package/dist/internal/components/AlertModal.js +2 -0
- package/dist/internal/components/Avatar.js +53 -0
- package/dist/internal/components/Avatar.js.map +1 -0
- package/dist/internal/components/Badge.js +2 -0
- package/dist/internal/components/BrandLogo.js +2 -0
- package/dist/internal/components/Breadcrumb.js +2 -0
- package/dist/internal/components/Button.js +2 -0
- package/dist/internal/components/ButtonGroup.js +66 -0
- package/dist/internal/components/ButtonGroup.js.map +1 -0
- package/dist/internal/components/Calendar.js +2 -0
- package/dist/internal/components/Card.js +2 -0
- package/dist/internal/components/Checkbox.js +2 -0
- package/dist/internal/components/Clipboard.js +2 -0
- package/dist/internal/components/Collapsible.js +2 -0
- package/dist/internal/components/CollapsiblePanel.js +87 -0
- package/dist/internal/components/CollapsiblePanel.js.map +1 -0
- package/dist/internal/components/Combobox.js +2 -0
- package/dist/internal/components/DatePicker.js +2 -0
- package/dist/internal/components/DateRangePicker.js +2 -0
- package/dist/internal/components/DiffView.js +2 -0
- package/dist/internal/components/DotsLoader.js +18 -0
- package/dist/internal/components/DotsLoader.js.map +1 -0
- package/dist/internal/components/DropdownMenu.js +2 -0
- package/dist/internal/components/EmptySearchContent.js +12 -0
- package/dist/internal/components/EmptySearchContent.js.map +1 -0
- package/dist/internal/components/FileUpload.js +2 -0
- package/dist/internal/components/FullScreenModal.js +2 -0
- package/dist/internal/components/HelpBlock.js +25 -0
- package/dist/internal/components/HelpBlock.js.map +1 -0
- package/dist/internal/components/HoverCard.js +2 -0
- package/dist/internal/components/InputGroup.js +2 -0
- package/dist/internal/components/Kbd.js +2 -0
- package/dist/internal/components/Label.js +39 -0
- package/dist/internal/components/Label.js.map +1 -0
- package/dist/internal/components/Link.js +22 -0
- package/dist/internal/components/Link.js.map +1 -0
- package/dist/internal/components/MarkedText.js +2 -0
- package/dist/internal/components/MergeEditor/ConflictStatus/ConflictStatusIndicator.js +20 -0
- package/dist/internal/components/MergeEditor/ConflictStatus/ConflictStatusIndicator.js.map +1 -0
- package/dist/internal/components/MergeEditor/PaneHeader.js +13 -0
- package/dist/internal/components/MergeEditor/PaneHeader.js.map +1 -0
- package/dist/internal/components/MergeEditor/constants.js +18 -0
- package/dist/internal/components/MergeEditor/constants.js.map +1 -0
- package/dist/internal/components/MergeEditor/useMergeDiff.js +2 -0
- package/dist/internal/components/Modal.js +2 -0
- package/dist/internal/components/Navbar.js +2 -0
- package/dist/internal/components/Pagination.js +2 -0
- package/dist/internal/components/PanelWithDetails.js +31 -0
- package/dist/internal/components/PanelWithDetails.js.map +1 -0
- package/dist/internal/components/Popconfirm.js +2 -0
- package/dist/internal/components/Popover.js +2 -0
- package/dist/internal/components/Progress.js +47 -0
- package/dist/internal/components/Progress.js.map +1 -0
- package/dist/internal/components/RadioGroup.js +2 -0
- package/dist/internal/components/Resizable.js +2 -0
- package/dist/internal/components/ScrollArea.js +42 -0
- package/dist/internal/components/ScrollArea.js.map +1 -0
- package/dist/internal/components/Search.js +2 -0
- package/dist/internal/components/Select.js +2 -0
- package/dist/internal/components/Separator.js +84 -0
- package/dist/internal/components/Separator.js.map +1 -0
- package/dist/internal/components/Sheet.js +2 -0
- package/dist/internal/components/Sidebar.js +2 -0
- package/dist/internal/components/Skeleton/Skeleton.js +39 -0
- package/dist/internal/components/Skeleton/Skeleton.js.map +1 -0
- package/dist/internal/components/Skeleton/SkeletonList.js +41 -0
- package/dist/internal/components/Skeleton/SkeletonList.js.map +1 -0
- package/dist/internal/components/Slider.js +2 -0
- package/dist/internal/components/SpotlightBackdrop.js +132 -0
- package/dist/internal/components/SpotlightBackdrop.js.map +1 -0
- package/dist/internal/components/Stepper.js +2 -0
- package/dist/internal/components/Switch.js +2 -0
- package/dist/internal/components/Table.js +2 -0
- package/dist/internal/components/Tabs.js +2 -0
- package/dist/internal/components/ThemeProvider.js +3 -0
- package/dist/internal/components/TimePicker.js +2 -0
- package/dist/internal/components/Timeline.js +2 -0
- package/dist/internal/components/Toast.js +3 -0
- package/dist/internal/components/Toggle.js +169 -0
- package/dist/internal/components/Toggle.js.map +1 -0
- package/dist/internal/components/ToggleGroup.js +2 -0
- package/dist/internal/components/Tooltip.js +2 -0
- package/dist/internal/components/Truncated.js +45 -0
- package/dist/internal/components/Truncated.js.map +1 -0
- package/dist/internal/components/Workbench.js +2 -0
- package/dist/internal/components/ZoomableSvg.js +2 -0
- package/dist/internal/hooks/useAutosizeInput.js +77 -0
- package/dist/internal/hooks/useAutosizeInput.js.map +1 -0
- package/dist/internal/hooks/useScrollbarPosition.js +45 -0
- package/dist/internal/hooks/useScrollbarPosition.js.map +1 -0
- package/dist/internal/hooks/useStableCallback.js +29 -0
- package/dist/internal/hooks/useStableCallback.js.map +1 -0
- package/dist/internal/utils/mergeRefs.js +20 -0
- package/dist/internal/utils/mergeRefs.js.map +1 -0
- package/dist/internal/utils.js +5 -0
- package/dist/markdown-editor.d.ts +72 -72
- package/dist/markdown-editor.js +1122 -1193
- package/dist/markdown-editor.js.map +1 -1
- package/dist/mermaid.d.ts +12 -12
- package/dist/mermaid.js +2 -10
- package/dist/rjsf.d.ts +33 -34
- package/dist/rjsf.js +1543 -1600
- 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/styles.css +1 -1
- package/dist/testing.d.ts +8 -7
- package/dist/testing.js +36 -16
- 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 +10 -9
- package/src/styles.css +35 -7
- package/src/theme.css +64 -0
- package/dist/MermaidDiagram-EOKJHQQV.js +0 -10
- package/dist/MermaidDiagram-EOKJHQQV.js.map +0 -1
- package/dist/chunk-63NSN2VL.js +0 -274
- package/dist/chunk-63NSN2VL.js.map +0 -1
- package/dist/chunk-6FPEI4EM.js +0 -6683
- package/dist/chunk-6FPEI4EM.js.map +0 -1
- package/dist/chunk-7PUUHEJQ.js +0 -1313
- package/dist/chunk-7PUUHEJQ.js.map +0 -1
- package/dist/chunk-BOHNXTMM.js +0 -606
- package/dist/chunk-BOHNXTMM.js.map +0 -1
- package/dist/chunk-C3L3TBBT.js +0 -242
- package/dist/chunk-C3L3TBBT.js.map +0 -1
- package/dist/chunk-CTCFYWJC.js +0 -407
- package/dist/chunk-CTCFYWJC.js.map +0 -1
- package/dist/chunk-ESBL3IPF.js +0 -23
- package/dist/chunk-ESBL3IPF.js.map +0 -1
- package/dist/chunk-IJTHFNNJ.js +0 -261
- package/dist/chunk-IJTHFNNJ.js.map +0 -1
- package/dist/chunk-JP7PNHLH.js +0 -40
- package/dist/chunk-JP7PNHLH.js.map +0 -1
- package/dist/chunk-KPNAW5MU.js +0 -229
- package/dist/chunk-KPNAW5MU.js.map +0 -1
- package/dist/chunk-L37JJ6MR.js +0 -152
- package/dist/chunk-L37JJ6MR.js.map +0 -1
- package/dist/chunk-Q7NWXLCT.js +0 -90
- package/dist/chunk-Q7NWXLCT.js.map +0 -1
- package/dist/chunk-SYIEF644.js +0 -1016
- package/dist/chunk-SYIEF644.js.map +0 -1
- package/dist/chunk-VMFSRV5H.js +0 -16
- package/dist/chunk-VMFSRV5H.js.map +0 -1
- package/dist/chunk-VPPM7UUQ.js +0 -47
- package/dist/chunk-VPPM7UUQ.js.map +0 -1
- package/dist/chunk-XV3UUOYF.js +0 -845
- package/dist/chunk-XV3UUOYF.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/mermaid.js.map +0 -1
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"Truncated.js","names":[],"sources":["../../../src/components/Truncated.tsx"],"sourcesContent":["import { useState } from 'react';\nimport type { ComponentProps, ReactNode } from 'react';\n\nimport { cn } from '../utils';\n\nimport { type Props as TooltipProps, Tooltip } from './Tooltip';\n\nconst OFFSET_TOLERANCE = 2;\n\ntype Props = {\n text: ReactNode;\n tooltip?: ReactNode;\n twoLines?: boolean;\n noTooltip?: boolean;\n tooltipVariant?: TooltipProps['variant'];\n tooltipPlacement?: TooltipProps['placement'];\n} & Omit<ComponentProps<'span'>, 'children'>;\n\nexport const Truncated = ({\n ref,\n text,\n tooltip = text,\n className,\n twoLines = false,\n noTooltip = false,\n tooltipVariant = 'explanatory',\n tooltipPlacement = 'top',\n ...rest\n}: Props) => {\n const tooltipText = typeof tooltip === 'string' ? tooltip : '';\n const [showTooltip, setShowTooltip] = useState(false);\n\n const isScrollableTarget = (e: HTMLElement): boolean => {\n return e.scrollHeight - OFFSET_TOLERANCE >= e.clientHeight;\n };\n\n // v4's native `line-clamp-*` emits the full `-webkit-box` recipe (display,\n // box-orient, line-clamp, overflow). The old hand-rolled `[display:-webkit-box!important]`\n // arbitrary property produced NO rule under v4 — it doesn't support `!important` inside\n // arbitrary-property brackets (v3 did) — so the clamp silently stopped applying and long\n // text wrapped instead of truncating.\n const truncatedClasses = cn(\n className,\n 'tw:[word-break:break-all]',\n twoLines ? 'tw:line-clamp-2 tw:[word-break:break-word]' : 'tw:line-clamp-1',\n );\n\n if (noTooltip || !tooltipText) {\n return (\n <span ref={ref} className={truncatedClasses} {...rest}>\n {text}\n </span>\n );\n }\n\n return (\n <Tooltip\n placement={tooltipPlacement}\n variant={tooltipVariant}\n forceHide={!showTooltip}\n tooltip={<div>{tooltipText}</div>}\n triggerAsChild\n >\n <span\n ref={ref}\n className={truncatedClasses}\n {...rest}\n onMouseOver={(e) => {\n setShowTooltip(isScrollableTarget(e.currentTarget));\n rest.onMouseOver?.(e);\n }}\n onFocus={(e) => {\n setShowTooltip(isScrollableTarget(e.currentTarget));\n rest.onFocus?.(e);\n }}\n >\n {text}\n </span>\n </Tooltip>\n );\n};\n"],"mappings":";;;;;AAOA,MAAM,mBAAmB;AAWzB,MAAa,aAAa,EACxB,KACA,MACA,UAAU,MACV,WACA,WAAW,OACX,YAAY,OACZ,iBAAiB,eACjB,mBAAmB,OACnB,GAAG,WACQ;CACX,MAAM,cAAc,OAAO,YAAY,WAAW,UAAU;CAC5D,MAAM,CAAC,aAAa,kBAAkB,SAAS,KAAK;CAEpD,MAAM,sBAAsB,MAA4B;EACtD,OAAO,EAAE,eAAe,oBAAoB,EAAE;CAChD;CAOA,MAAM,mBAAmB,GACvB,WACA,6BACA,WAAW,+CAA+C,iBAC5D;CAEA,IAAI,aAAa,CAAC,aAChB,OACE,oBAAC,QAAD;EAAW;EAAK,WAAW;EAAkB,GAAI;EAC9C,UAAA;CACG,CAAA;CAIV,OACE,oBAAC,SAAD;EACE,WAAW;EACX,SAAS;EACT,WAAW,CAAC;EACZ,SAAS,oBAAC,OAAD,EAAA,UAAM,YAAiB,CAAA;EAChC,gBAAA;EAEA,UAAA,oBAAC,QAAD;GACO;GACL,WAAW;GACX,GAAI;GACJ,cAAc,MAAM;IAClB,eAAe,mBAAmB,EAAE,aAAa,CAAC;IAClD,KAAK,cAAc,CAAC;GACtB;GACA,UAAU,MAAM;IACd,eAAe,mBAAmB,EAAE,aAAa,CAAC;IAClD,KAAK,UAAU,CAAC;GAClB;GAEC,UAAA;EACG,CAAA;CACC,CAAA;AAEb"}
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
import { DEFAULT_WORKBENCH_BAR_HEIGHT_IN_REM, DEFAULT_WORKBENCH_PANEL_HEIGHT_IN_PX, MIN_WORKBENCH_PANEL_HEIGHT_IN_PX, Workbench, useWorkbench } from "../../Workbench-BzE-Vvd9.js";
|
|
2
|
+
export { DEFAULT_WORKBENCH_BAR_HEIGHT_IN_REM, DEFAULT_WORKBENCH_PANEL_HEIGHT_IN_PX, MIN_WORKBENCH_PANEL_HEIGHT_IN_PX, Workbench, useWorkbench };
|
|
@@ -0,0 +1,77 @@
|
|
|
1
|
+
import { useLayoutEffect, useMemo, useRef, useState } from "react";
|
|
2
|
+
import { Fragment as Fragment$1, jsx, jsxs } from "react/jsx-runtime";
|
|
3
|
+
//#region src/hooks/useAutosizeInput.tsx
|
|
4
|
+
const SIZER_STYLE = {
|
|
5
|
+
position: "absolute",
|
|
6
|
+
top: 0,
|
|
7
|
+
left: 0,
|
|
8
|
+
visibility: "hidden",
|
|
9
|
+
height: 0,
|
|
10
|
+
overflow: "scroll",
|
|
11
|
+
whiteSpace: "pre"
|
|
12
|
+
};
|
|
13
|
+
const CARET_BUFFER_PX = 2;
|
|
14
|
+
const FONT_PROPERTIES = [
|
|
15
|
+
"fontSize",
|
|
16
|
+
"fontFamily",
|
|
17
|
+
"fontWeight",
|
|
18
|
+
"fontStyle",
|
|
19
|
+
"letterSpacing",
|
|
20
|
+
"textTransform"
|
|
21
|
+
];
|
|
22
|
+
function syncFontStyles(source, ...targets) {
|
|
23
|
+
const computed = window.getComputedStyle(source);
|
|
24
|
+
for (const target of targets) {
|
|
25
|
+
if (!target) continue;
|
|
26
|
+
for (const prop of FONT_PROPERTIES) target.style[prop] = computed[prop];
|
|
27
|
+
}
|
|
28
|
+
}
|
|
29
|
+
/**
|
|
30
|
+
* Render `sizerElement` inside a positioned ancestor (e.g. `position: relative`,
|
|
31
|
+
* `inline-flex`, or `InputGroup`) so the absolutely-positioned measurement spans
|
|
32
|
+
* don't anchor to the viewport.
|
|
33
|
+
*/
|
|
34
|
+
function useAutosizeInput({ value = "", placeholder, minWidth = 1 }) {
|
|
35
|
+
const inputRef = useRef(null);
|
|
36
|
+
const [sizerNode, setSizerNode] = useState(null);
|
|
37
|
+
const [placeholderSizerNode, setPlaceholderSizerNode] = useState(null);
|
|
38
|
+
const [width, setWidth] = useState(minWidth);
|
|
39
|
+
useLayoutEffect(() => {
|
|
40
|
+
if (inputRef.current) syncFontStyles(inputRef.current, sizerNode, placeholderSizerNode);
|
|
41
|
+
}, [sizerNode, placeholderSizerNode]);
|
|
42
|
+
useLayoutEffect(() => {
|
|
43
|
+
if (!sizerNode) return;
|
|
44
|
+
let next = sizerNode.scrollWidth;
|
|
45
|
+
if (placeholderSizerNode) next = Math.max(next, placeholderSizerNode.scrollWidth);
|
|
46
|
+
setWidth(Math.max(next + CARET_BUFFER_PX, minWidth));
|
|
47
|
+
}, [
|
|
48
|
+
value,
|
|
49
|
+
placeholder,
|
|
50
|
+
minWidth,
|
|
51
|
+
sizerNode,
|
|
52
|
+
placeholderSizerNode
|
|
53
|
+
]);
|
|
54
|
+
return {
|
|
55
|
+
inputRef,
|
|
56
|
+
inputStyle: useMemo(() => ({
|
|
57
|
+
width,
|
|
58
|
+
boxSizing: "content-box",
|
|
59
|
+
flex: "none"
|
|
60
|
+
}), [width]),
|
|
61
|
+
sizerElement: /* @__PURE__ */ jsxs(Fragment$1, { children: [/* @__PURE__ */ jsx("span", {
|
|
62
|
+
ref: setSizerNode,
|
|
63
|
+
"data-slot": "autosize-sizer",
|
|
64
|
+
style: SIZER_STYLE,
|
|
65
|
+
children: value
|
|
66
|
+
}), placeholder && /* @__PURE__ */ jsx("span", {
|
|
67
|
+
ref: setPlaceholderSizerNode,
|
|
68
|
+
"data-slot": "autosize-placeholder-sizer",
|
|
69
|
+
style: SIZER_STYLE,
|
|
70
|
+
children: placeholder
|
|
71
|
+
})] })
|
|
72
|
+
};
|
|
73
|
+
}
|
|
74
|
+
//#endregion
|
|
75
|
+
export { useAutosizeInput };
|
|
76
|
+
|
|
77
|
+
//# sourceMappingURL=useAutosizeInput.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"useAutosizeInput.js","names":[],"sources":["../../../src/hooks/useAutosizeInput.tsx"],"sourcesContent":["import {\n type CSSProperties,\n type ReactNode,\n type RefObject,\n useLayoutEffect,\n useMemo,\n useRef,\n useState,\n} from 'react';\n\nconst SIZER_STYLE = {\n position: 'absolute',\n top: 0,\n left: 0,\n visibility: 'hidden',\n height: 0,\n overflow: 'scroll',\n whiteSpace: 'pre',\n} satisfies CSSProperties;\n\nconst CARET_BUFFER_PX = 2;\n\nconst FONT_PROPERTIES = [\n 'fontSize',\n 'fontFamily',\n 'fontWeight',\n 'fontStyle',\n 'letterSpacing',\n 'textTransform',\n] as const;\n\nfunction syncFontStyles(source: HTMLElement, ...targets: (HTMLElement | null)[]) {\n const computed = window.getComputedStyle(source);\n for (const target of targets) {\n if (!target) continue;\n for (const prop of FONT_PROPERTIES) {\n target.style[prop] = computed[prop];\n }\n }\n}\n\nexport type UseAutosizeInputOptions = {\n value?: string;\n placeholder?: string;\n minWidth?: number;\n};\n\nexport type UseAutosizeInputReturn = {\n inputRef: RefObject<HTMLInputElement | null>;\n inputStyle: CSSProperties;\n sizerElement: ReactNode;\n};\n\n/**\n * Render `sizerElement` inside a positioned ancestor (e.g. `position: relative`,\n * `inline-flex`, or `InputGroup`) so the absolutely-positioned measurement spans\n * don't anchor to the viewport.\n */\nexport function useAutosizeInput({\n value = '',\n placeholder,\n minWidth = 1,\n}: UseAutosizeInputOptions): UseAutosizeInputReturn {\n const inputRef = useRef<HTMLInputElement>(null);\n const [sizerNode, setSizerNode] = useState<HTMLSpanElement | null>(null);\n const [placeholderSizerNode, setPlaceholderSizerNode] = useState<HTMLSpanElement | null>(null);\n const [width, setWidth] = useState(minWidth);\n\n useLayoutEffect(() => {\n if (inputRef.current) {\n syncFontStyles(inputRef.current, sizerNode, placeholderSizerNode);\n }\n }, [sizerNode, placeholderSizerNode]);\n\n useLayoutEffect(() => {\n if (!sizerNode) return;\n let next = sizerNode.scrollWidth;\n if (placeholderSizerNode) {\n next = Math.max(next, placeholderSizerNode.scrollWidth);\n }\n setWidth(Math.max(next + CARET_BUFFER_PX, minWidth));\n }, [value, placeholder, minWidth, sizerNode, placeholderSizerNode]);\n\n const inputStyle = useMemo<CSSProperties>(\n () => ({ width, boxSizing: 'content-box', flex: 'none' }),\n [width],\n );\n\n const sizerElement = (\n <>\n <span ref={setSizerNode} data-slot=\"autosize-sizer\" style={SIZER_STYLE}>\n {value}\n </span>\n {placeholder && (\n <span\n ref={setPlaceholderSizerNode}\n data-slot=\"autosize-placeholder-sizer\"\n style={SIZER_STYLE}\n >\n {placeholder}\n </span>\n )}\n </>\n );\n\n return { inputRef, inputStyle, sizerElement };\n}\n"],"mappings":";;;AAUA,MAAM,cAAc;CAClB,UAAU;CACV,KAAK;CACL,MAAM;CACN,YAAY;CACZ,QAAQ;CACR,UAAU;CACV,YAAY;AACd;AAEA,MAAM,kBAAkB;AAExB,MAAM,kBAAkB;CACtB;CACA;CACA;CACA;CACA;CACA;AACF;AAEA,SAAS,eAAe,QAAqB,GAAG,SAAiC;CAC/E,MAAM,WAAW,OAAO,iBAAiB,MAAM;CAC/C,KAAK,MAAM,UAAU,SAAS;EAC5B,IAAI,CAAC,QAAQ;EACb,KAAK,MAAM,QAAQ,iBACjB,OAAO,MAAM,QAAQ,SAAS;CAElC;AACF;;;;;;AAmBA,SAAgB,iBAAiB,EAC/B,QAAQ,IACR,aACA,WAAW,KACuC;CAClD,MAAM,WAAW,OAAyB,IAAI;CAC9C,MAAM,CAAC,WAAW,gBAAgB,SAAiC,IAAI;CACvE,MAAM,CAAC,sBAAsB,2BAA2B,SAAiC,IAAI;CAC7F,MAAM,CAAC,OAAO,YAAY,SAAS,QAAQ;CAE3C,sBAAsB;EACpB,IAAI,SAAS,SACX,eAAe,SAAS,SAAS,WAAW,oBAAoB;CAEpE,GAAG,CAAC,WAAW,oBAAoB,CAAC;CAEpC,sBAAsB;EACpB,IAAI,CAAC,WAAW;EAChB,IAAI,OAAO,UAAU;EACrB,IAAI,sBACF,OAAO,KAAK,IAAI,MAAM,qBAAqB,WAAW;EAExD,SAAS,KAAK,IAAI,OAAO,iBAAiB,QAAQ,CAAC;CACrD,GAAG;EAAC;EAAO;EAAa;EAAU;EAAW;CAAoB,CAAC;CAwBlE,OAAO;EAAE;EAAU,YAtBA,eACV;GAAE;GAAO,WAAW;GAAe,MAAM;EAAO,IACvD,CAAC,KAAK,CAoBoB;EAAG,cAAA,qBAAA,YAhB7B,EAAA,UAAA,CACE,oBAAC,QAAD;GAAM,KAAK;GAAc,aAAU;GAAiB,OAAO;GACxD,UAAA;EACG,CAAA,GACL,eACC,oBAAC,QAAD;GACE,KAAK;GACL,aAAU;GACV,OAAO;GAEN,UAAA;EACG,CAAA,CAER,EAAA,CAGsC;CAAE;AAC9C"}
|
|
@@ -0,0 +1,45 @@
|
|
|
1
|
+
import { useElement } from "../../useElement-DkF6esWL.js";
|
|
2
|
+
import { useEffect, useState } from "react";
|
|
3
|
+
//#region src/hooks/useScrollbarPosition.ts
|
|
4
|
+
const calcPosition = ({ scrollHeight, clientHeight, scrollTop }) => {
|
|
5
|
+
if (scrollHeight <= clientHeight) return "none";
|
|
6
|
+
if (scrollTop === 0) return "top";
|
|
7
|
+
if (scrollTop + clientHeight >= scrollHeight - 1) return "bottom";
|
|
8
|
+
return "middle";
|
|
9
|
+
};
|
|
10
|
+
const useScrollbarPosition = () => {
|
|
11
|
+
const [element, setElement] = useElement();
|
|
12
|
+
const [scrollbarPosition, setPosition] = useState("none");
|
|
13
|
+
useEffect(() => {
|
|
14
|
+
if (element === null) return;
|
|
15
|
+
const updatePosition = () => {
|
|
16
|
+
if (element === null) return;
|
|
17
|
+
const position = calcPosition({
|
|
18
|
+
scrollHeight: element.scrollHeight,
|
|
19
|
+
clientHeight: element.clientHeight,
|
|
20
|
+
scrollTop: element.scrollTop
|
|
21
|
+
});
|
|
22
|
+
setPosition(position);
|
|
23
|
+
};
|
|
24
|
+
const rafId = requestAnimationFrame(updatePosition);
|
|
25
|
+
element.addEventListener("scroll", updatePosition);
|
|
26
|
+
const resizeObserver = new ResizeObserver(updatePosition);
|
|
27
|
+
resizeObserver.observe(element);
|
|
28
|
+
return () => {
|
|
29
|
+
cancelAnimationFrame(rafId);
|
|
30
|
+
element.removeEventListener("scroll", updatePosition);
|
|
31
|
+
resizeObserver.disconnect();
|
|
32
|
+
};
|
|
33
|
+
}, [element]);
|
|
34
|
+
return {
|
|
35
|
+
setElement,
|
|
36
|
+
isTop: scrollbarPosition === "top",
|
|
37
|
+
isBottom: scrollbarPosition === "bottom",
|
|
38
|
+
isMiddle: scrollbarPosition === "middle",
|
|
39
|
+
isNone: scrollbarPosition === "none"
|
|
40
|
+
};
|
|
41
|
+
};
|
|
42
|
+
//#endregion
|
|
43
|
+
export { useScrollbarPosition };
|
|
44
|
+
|
|
45
|
+
//# sourceMappingURL=useScrollbarPosition.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"useScrollbarPosition.js","names":[],"sources":["../../../src/hooks/useScrollbarPosition.ts"],"sourcesContent":["import { useEffect, useState } from 'react';\n\nimport { useElement } from './useElement';\n\nconst calcPosition = ({\n scrollHeight,\n clientHeight,\n scrollTop,\n}: {\n scrollHeight: number;\n clientHeight: number;\n scrollTop: number;\n}) => {\n // If content doesn't overflow, no scrollbar\n if (scrollHeight <= clientHeight) return 'none';\n\n if (scrollTop === 0) return 'top';\n\n // At the bottom (with small tolerance for precision issues)\n if (scrollTop + clientHeight >= scrollHeight - 1) return 'bottom';\n\n return 'middle';\n};\n\nexport const useScrollbarPosition = () => {\n const [element, setElement] = useElement();\n const [scrollbarPosition, setPosition] = useState<ReturnType<typeof calcPosition>>('none');\n\n useEffect(() => {\n if (element === null) return;\n\n const updatePosition = () => {\n if (element === null) return;\n\n const position = calcPosition({\n scrollHeight: element.scrollHeight,\n clientHeight: element.clientHeight,\n scrollTop: element.scrollTop,\n });\n\n setPosition(position);\n };\n\n // Initial check.\n const rafId = requestAnimationFrame(updatePosition);\n\n // Listening for scroll events.\n element.addEventListener('scroll', updatePosition);\n\n // Listen for the resize event that might affect scrollbar visibility.\n const resizeObserver = new ResizeObserver(updatePosition);\n resizeObserver.observe(element);\n\n return () => {\n cancelAnimationFrame(rafId);\n element.removeEventListener('scroll', updatePosition);\n resizeObserver.disconnect();\n };\n }, [element]);\n\n return {\n setElement,\n isTop: scrollbarPosition === 'top',\n isBottom: scrollbarPosition === 'bottom',\n isMiddle: scrollbarPosition === 'middle',\n isNone: scrollbarPosition === 'none',\n };\n};\n"],"mappings":";;;AAIA,MAAM,gBAAgB,EACpB,cACA,cACA,gBAKI;CAEJ,IAAI,gBAAgB,cAAc,OAAO;CAEzC,IAAI,cAAc,GAAG,OAAO;CAG5B,IAAI,YAAY,gBAAgB,eAAe,GAAG,OAAO;CAEzD,OAAO;AACT;AAEA,MAAa,6BAA6B;CACxC,MAAM,CAAC,SAAS,cAAc,WAAW;CACzC,MAAM,CAAC,mBAAmB,eAAe,SAA0C,MAAM;CAEzF,gBAAgB;EACd,IAAI,YAAY,MAAM;EAEtB,MAAM,uBAAuB;GAC3B,IAAI,YAAY,MAAM;GAEtB,MAAM,WAAW,aAAa;IAC5B,cAAc,QAAQ;IACtB,cAAc,QAAQ;IACtB,WAAW,QAAQ;GACrB,CAAC;GAED,YAAY,QAAQ;EACtB;EAGA,MAAM,QAAQ,sBAAsB,cAAc;EAGlD,QAAQ,iBAAiB,UAAU,cAAc;EAGjD,MAAM,iBAAiB,IAAI,eAAe,cAAc;EACxD,eAAe,QAAQ,OAAO;EAE9B,aAAa;GACX,qBAAqB,KAAK;GAC1B,QAAQ,oBAAoB,UAAU,cAAc;GACpD,eAAe,WAAW;EAC5B;CACF,GAAG,CAAC,OAAO,CAAC;CAEZ,OAAO;EACL;EACA,OAAO,sBAAsB;EAC7B,UAAU,sBAAsB;EAChC,UAAU,sBAAsB;EAChC,QAAQ,sBAAsB;CAChC;AACF"}
|
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
import { useCallback, useLayoutEffect, useRef } from "react";
|
|
2
|
+
//#region src/hooks/useStableCallback.ts
|
|
3
|
+
/**
|
|
4
|
+
* A callback with a permanently stable identity that always sees the latest
|
|
5
|
+
* render's values — for any consumer that keys off the handler's identity: a
|
|
6
|
+
* third-party component that redoes expensive work when it changes, or a
|
|
7
|
+
* memoized context value.
|
|
8
|
+
*
|
|
9
|
+
* React 19.2's `useEffectEvent` does this in one line, but it is scoped to
|
|
10
|
+
* Effects and explicitly not to be passed to another component, which is the
|
|
11
|
+
* whole point here.
|
|
12
|
+
*
|
|
13
|
+
* The swap is a layout effect rather than a passive one so it lands before the
|
|
14
|
+
* browser can paint and accept input against the previous render's handler. It
|
|
15
|
+
* is still an effect, and a child's runs before its parent's — so a consumer
|
|
16
|
+
* calling the returned function from its own layout effect can still see the
|
|
17
|
+
* previous render's closure.
|
|
18
|
+
*/
|
|
19
|
+
const useStableCallback = (callback) => {
|
|
20
|
+
const latestRef = useRef(callback);
|
|
21
|
+
useLayoutEffect(() => {
|
|
22
|
+
latestRef.current = callback;
|
|
23
|
+
}, [callback]);
|
|
24
|
+
return useCallback((...args) => latestRef.current(...args), []);
|
|
25
|
+
};
|
|
26
|
+
//#endregion
|
|
27
|
+
export { useStableCallback };
|
|
28
|
+
|
|
29
|
+
//# sourceMappingURL=useStableCallback.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"useStableCallback.js","names":[],"sources":["../../../src/hooks/useStableCallback.ts"],"sourcesContent":["import { useCallback, useLayoutEffect, useRef } from 'react';\n\n/**\n * A callback with a permanently stable identity that always sees the latest\n * render's values — for any consumer that keys off the handler's identity: a\n * third-party component that redoes expensive work when it changes, or a\n * memoized context value.\n *\n * React 19.2's `useEffectEvent` does this in one line, but it is scoped to\n * Effects and explicitly not to be passed to another component, which is the\n * whole point here.\n *\n * The swap is a layout effect rather than a passive one so it lands before the\n * browser can paint and accept input against the previous render's handler. It\n * is still an effect, and a child's runs before its parent's — so a consumer\n * calling the returned function from its own layout effect can still see the\n * previous render's closure.\n */\nexport const useStableCallback = <Args extends unknown[], Result>(\n callback: (...args: Args) => Result,\n): ((...args: Args) => Result) => {\n const latestRef = useRef(callback);\n\n useLayoutEffect(() => {\n latestRef.current = callback;\n }, [callback]);\n\n return useCallback((...args: Args) => latestRef.current(...args), []);\n};\n"],"mappings":";;;;;;;;;;;;;;;;;;AAkBA,MAAa,qBACX,aACgC;CAChC,MAAM,YAAY,OAAO,QAAQ;CAEjC,sBAAsB;EACpB,UAAU,UAAU;CACtB,GAAG,CAAC,QAAQ,CAAC;CAEb,OAAO,aAAa,GAAG,SAAe,UAAU,QAAQ,GAAG,IAAI,GAAG,CAAC,CAAC;AACtE"}
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
//#region src/utils/mergeRefs.ts
|
|
2
|
+
/**
|
|
3
|
+
* Set a given ref to a given value
|
|
4
|
+
* This utility takes care of different types of refs: callback refs and RefObject(s)
|
|
5
|
+
*/
|
|
6
|
+
function setRef(ref, value) {
|
|
7
|
+
if (typeof ref === "function") ref(value);
|
|
8
|
+
else if (ref != null) ref.current = value;
|
|
9
|
+
}
|
|
10
|
+
/**
|
|
11
|
+
* A utility to compose multiple refs together
|
|
12
|
+
* Accepts callback refs and RefObject(s)
|
|
13
|
+
*/
|
|
14
|
+
const mergeRefs = (...refs) => {
|
|
15
|
+
return (node) => refs.forEach((ref) => setRef(ref, node));
|
|
16
|
+
};
|
|
17
|
+
//#endregion
|
|
18
|
+
export { mergeRefs };
|
|
19
|
+
|
|
20
|
+
//# sourceMappingURL=mergeRefs.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"mergeRefs.js","names":[],"sources":["../../../src/utils/mergeRefs.ts"],"sourcesContent":["import type { MutableRefObject, RefCallback } from 'react';\n\ntype PossibleRef<T> = MutableRefObject<T> | RefCallback<T> | null;\n\n/**\n * Set a given ref to a given value\n * This utility takes care of different types of refs: callback refs and RefObject(s)\n */\nfunction setRef<T>(ref: PossibleRef<T>, value: T) {\n if (typeof ref === 'function') {\n ref(value);\n } else if (ref != null) {\n ref.current = value;\n }\n}\n\n/**\n * A utility to compose multiple refs together\n * Accepts callback refs and RefObject(s)\n */\nexport const mergeRefs = <T>(...refs: PossibleRef<T>[]) => {\n return (node: T) => refs.forEach((ref) => setRef(ref, node));\n};\n"],"mappings":";;;;;AAQA,SAAS,OAAU,KAAqB,OAAU;CAChD,IAAI,OAAO,QAAQ,YACjB,IAAI,KAAK;MACJ,IAAI,OAAO,MAChB,IAAI,UAAU;AAElB;;;;;AAMA,MAAa,aAAgB,GAAG,SAA2B;CACzD,QAAQ,SAAY,KAAK,SAAS,QAAQ,OAAO,KAAK,IAAI,CAAC;AAC7D"}
|
|
@@ -0,0 +1,5 @@
|
|
|
1
|
+
import { cn } from "../classNames-BzrkDnOD.js";
|
|
2
|
+
import { copyToClipboard, createChangeInputEvent, createPrefixedString, debounce, isMac, noop, useSHA256, withHiddenFullscreen, withTooltipProvider } from "../utils-D0c5VAyF.js";
|
|
3
|
+
import { escapeStringRegexp } from "../escapeStringRegexp-8MxP2knR.js";
|
|
4
|
+
import { mergeRefs } from "./utils/mergeRefs.js";
|
|
5
|
+
export { cn, copyToClipboard, createChangeInputEvent, createPrefixedString, debounce, escapeStringRegexp, isMac, mergeRefs, noop, useSHA256, withHiddenFullscreen, withTooltipProvider };
|
|
@@ -1,75 +1,75 @@
|
|
|
1
|
-
import
|
|
2
|
-
|
|
3
|
-
|
|
1
|
+
import { ReactNode } from "react";
|
|
2
|
+
//#region src/blocks/MarkdownEditor/MarkdownEditor.d.ts
|
|
4
3
|
type MarkdownEditorProps = {
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
4
|
+
/** Markdown string (controlled) */
|
|
5
|
+
value: string;
|
|
6
|
+
onChange?: (markdown: string) => void;
|
|
7
|
+
/**
|
|
8
|
+
* Renders content but never accepts input. Use for permanent view-only contexts
|
|
9
|
+
* (e.g. a current user lacks edit permission). Toolbar is hidden.
|
|
10
|
+
*/
|
|
11
|
+
readOnly?: boolean;
|
|
12
|
+
/**
|
|
13
|
+
* Temporarily blocks input but signals intent to re-enable
|
|
14
|
+
* (e.g. while a save is in flight). Functionally identical to `readOnly` today.
|
|
15
|
+
*/
|
|
16
|
+
disabled?: boolean;
|
|
17
|
+
placeholder?: string;
|
|
18
|
+
autoFocus?: boolean;
|
|
19
|
+
/** Invoked on Cmd/Ctrl+Enter — typically used to commit a form. */
|
|
20
|
+
onSave?: () => void;
|
|
21
|
+
/**
|
|
22
|
+
* Invoked on Escape in inline-edit mode (`singleLine || saveOnBlur`). Per the
|
|
23
|
+
* inline-editable-text pattern spec, Esc reverts the in-progress edit — callers
|
|
24
|
+
* reset `value` to the last-committed state inside this handler.
|
|
25
|
+
*/
|
|
26
|
+
onCancel?: () => void;
|
|
27
|
+
/**
|
|
28
|
+
* Async image upload. Resolved URL is embedded as the image src
|
|
29
|
+
* (`` in the underlying markdown).
|
|
30
|
+
*/
|
|
31
|
+
onImageUpload?: (file: File) => Promise<{
|
|
32
|
+
url: string;
|
|
33
|
+
}>;
|
|
34
|
+
className?: string;
|
|
35
|
+
imageRenderer?: (props: {
|
|
36
|
+
src: string;
|
|
37
|
+
alt: string;
|
|
38
|
+
}) => ReactNode;
|
|
39
|
+
showToolbar?: boolean;
|
|
40
|
+
/**
|
|
41
|
+
* Strips the prose typography wrapper, removes the min-height, and tightens padding so
|
|
42
|
+
* the editor visually blends with surrounding text. Use for inline / Linear-style edit
|
|
43
|
+
* affordances inside headings, list rows, or table cells. Pair with `className` to set
|
|
44
|
+
* the caller's typography.
|
|
45
|
+
*/
|
|
46
|
+
compact?: boolean;
|
|
47
|
+
/**
|
|
48
|
+
* Calls `onSave` when focus leaves the editor (and is not moved into the toolbar).
|
|
49
|
+
* `onChange` already keeps the caller's value in sync — `onSave` is the "commit" signal.
|
|
50
|
+
*/
|
|
51
|
+
saveOnBlur?: boolean;
|
|
52
|
+
/**
|
|
53
|
+
* Disables block-level markdown (lists, headings, code blocks, HR) and makes a plain
|
|
54
|
+
* Enter press trigger `onSave` and blur the editor. Shift+Enter still inserts a soft
|
|
55
|
+
* line break. Use for editable titles.
|
|
56
|
+
*/
|
|
57
|
+
singleLine?: boolean;
|
|
58
|
+
/**
|
|
59
|
+
* Clamps content to 2 lines (truncating with an ellipsis) in the display (not-focused)
|
|
60
|
+
* state; focus expands the editor to full height (no clamp). `line-clamp` is self-gating,
|
|
61
|
+
* so short/empty content renders fully with no truncation. Per the inline-editable-text
|
|
62
|
+
* pattern spec for description-style slots.
|
|
63
|
+
*/
|
|
64
|
+
clampDisplay?: boolean;
|
|
65
|
+
/**
|
|
66
|
+
* Minimum visible height in lines. `1` renders as a single line that grows with
|
|
67
|
+
* content (Linear/Slack/GitHub-PR-comment pattern); `0` removes the floor entirely.
|
|
68
|
+
* Omit to keep the default ~4-line floor. Ignored in `compact` mode (which has no floor).
|
|
69
|
+
*/
|
|
70
|
+
minRows?: number;
|
|
72
71
|
};
|
|
73
|
-
declare const MarkdownEditor: ({ value, onChange, readOnly, placeholder, autoFocus, disabled, onSave, onCancel, onImageUpload, className, imageRenderer, showToolbar, compact, saveOnBlur, singleLine, clampDisplay, minRows
|
|
74
|
-
|
|
72
|
+
declare const MarkdownEditor: ({ value, onChange, readOnly, placeholder, autoFocus, disabled, onSave, onCancel, onImageUpload, className, imageRenderer, showToolbar, compact, saveOnBlur, singleLine, clampDisplay, minRows }: MarkdownEditorProps) => import("react/jsx-runtime").JSX.Element;
|
|
73
|
+
//#endregion
|
|
75
74
|
export { MarkdownEditor, type MarkdownEditorProps };
|
|
75
|
+
//# sourceMappingURL=markdown-editor.d.ts.map
|