@langchain/macaw-components 1.0.0-beta.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/LICENSE +21 -0
- package/README.md +27 -0
- package/dist/_chunks/ErrorState-CmPX01HV.js +13361 -0
- package/dist/_chunks/ErrorState-CmPX01HV.js.map +1 -0
- package/dist/_chunks/LoadingIndicator-DgtU9aqD.js +80 -0
- package/dist/_chunks/LoadingIndicator-DgtU9aqD.js.map +1 -0
- package/dist/base.css +305 -0
- package/dist/catalog.json +1675 -0
- package/dist/components/Avatar/Avatar.d.ts +28 -0
- package/dist/components/Avatar/Avatar.js +47 -0
- package/dist/components/Avatar/Avatar.js.map +1 -0
- package/dist/components/Avatar/index.d.ts +2 -0
- package/dist/components/Avatar/index.js +2 -0
- package/dist/components/Badge/Badge.d.ts +25 -0
- package/dist/components/Badge/Badge.js +82 -0
- package/dist/components/Badge/Badge.js.map +1 -0
- package/dist/components/Badge/index.d.ts +2 -0
- package/dist/components/Badge/index.js +2 -0
- package/dist/components/Banner/Banner.d.ts +15 -0
- package/dist/components/Banner/Banner.js +102 -0
- package/dist/components/Banner/Banner.js.map +1 -0
- package/dist/components/Banner/index.d.ts +2 -0
- package/dist/components/Banner/index.js +2 -0
- package/dist/components/BarChart/AnimatedBar.d.ts +20 -0
- package/dist/components/BarChart/AnimatedBar.js +65 -0
- package/dist/components/BarChart/AnimatedBar.js.map +1 -0
- package/dist/components/BarChart/BarChart.d.ts +25 -0
- package/dist/components/BarChart/BarChart.js +248 -0
- package/dist/components/BarChart/BarChart.js.map +1 -0
- package/dist/components/BarChart/BarChart.types.d.ts +239 -0
- package/dist/components/BarChart/BarChart.types.js +0 -0
- package/dist/components/BarChart/BarChart.utils.d.ts +51 -0
- package/dist/components/BarChart/BarChart.utils.js +215 -0
- package/dist/components/BarChart/BarChart.utils.js.map +1 -0
- package/dist/components/BarChart/BarChartAxes.d.ts +22 -0
- package/dist/components/BarChart/BarChartAxes.js +144 -0
- package/dist/components/BarChart/BarChartAxes.js.map +1 -0
- package/dist/components/BarChart/BarChartGuides.d.ts +22 -0
- package/dist/components/BarChart/BarChartGuides.js +83 -0
- package/dist/components/BarChart/BarChartGuides.js.map +1 -0
- package/dist/components/BarChart/BarChartPlot.d.ts +40 -0
- package/dist/components/BarChart/BarChartPlot.js +262 -0
- package/dist/components/BarChart/BarChartPlot.js.map +1 -0
- package/dist/components/BarChart/constants.d.ts +21 -0
- package/dist/components/BarChart/constants.js +26 -0
- package/dist/components/BarChart/constants.js.map +1 -0
- package/dist/components/BarChart/index.d.ts +3 -0
- package/dist/components/BarChart/index.js +3 -0
- package/dist/components/Button/Button.d.ts +36 -0
- package/dist/components/Button/Button.js +99 -0
- package/dist/components/Button/Button.js.map +1 -0
- package/dist/components/Button/constants.d.ts +26 -0
- package/dist/components/Button/constants.js +31 -0
- package/dist/components/Button/constants.js.map +1 -0
- package/dist/components/Button/index.d.ts +2 -0
- package/dist/components/Button/index.js +2 -0
- package/dist/components/ButtonGroup/ButtonGroup.d.ts +30 -0
- package/dist/components/ButtonGroup/ButtonGroup.js +26 -0
- package/dist/components/ButtonGroup/ButtonGroup.js.map +1 -0
- package/dist/components/ButtonGroup/index.d.ts +2 -0
- package/dist/components/ButtonGroup/index.js +2 -0
- package/dist/components/Card/Card.d.ts +10 -0
- package/dist/components/Card/Card.js +23 -0
- package/dist/components/Card/Card.js.map +1 -0
- package/dist/components/Card/index.d.ts +2 -0
- package/dist/components/Card/index.js +2 -0
- package/dist/components/ChartCard/ChartCard.d.ts +53 -0
- package/dist/components/ChartCard/ChartCard.js +172 -0
- package/dist/components/ChartCard/ChartCard.js.map +1 -0
- package/dist/components/ChartCard/ChartCardSkeleton.d.ts +7 -0
- package/dist/components/ChartCard/ChartCardSkeleton.js +61 -0
- package/dist/components/ChartCard/ChartCardSkeleton.js.map +1 -0
- package/dist/components/ChartCard/index.d.ts +4 -0
- package/dist/components/ChartCard/index.js +3 -0
- package/dist/components/ChartLegend/ChartLegend.d.ts +19 -0
- package/dist/components/ChartLegend/ChartLegend.js +195 -0
- package/dist/components/ChartLegend/ChartLegend.js.map +1 -0
- package/dist/components/ChartLegend/ChartLegendItemRenderer.d.ts +14 -0
- package/dist/components/ChartLegend/ChartLegendItemRenderer.js +90 -0
- package/dist/components/ChartLegend/ChartLegendItemRenderer.js.map +1 -0
- package/dist/components/ChartLegend/index.d.ts +3 -0
- package/dist/components/ChartLegend/index.js +3 -0
- package/dist/components/ChartLegend/useChartLegendActiveItem.d.ts +7 -0
- package/dist/components/ChartLegend/useChartLegendActiveItem.js +35 -0
- package/dist/components/ChartLegend/useChartLegendActiveItem.js.map +1 -0
- package/dist/components/ChartLegend/utils.d.ts +20 -0
- package/dist/components/ChartLegend/utils.js +33 -0
- package/dist/components/ChartLegend/utils.js.map +1 -0
- package/dist/components/ChartTooltip/ChartTooltip.d.ts +23 -0
- package/dist/components/ChartTooltip/ChartTooltip.js +83 -0
- package/dist/components/ChartTooltip/ChartTooltip.js.map +1 -0
- package/dist/components/ChartTooltip/index.d.ts +2 -0
- package/dist/components/ChartTooltip/index.js +2 -0
- package/dist/components/Checkbox/Checkbox.d.ts +58 -0
- package/dist/components/Checkbox/Checkbox.js +50 -0
- package/dist/components/Checkbox/Checkbox.js.map +1 -0
- package/dist/components/Checkbox/constants.d.ts +28 -0
- package/dist/components/Checkbox/constants.js +57 -0
- package/dist/components/Checkbox/constants.js.map +1 -0
- package/dist/components/Checkbox/getCheckedState.d.ts +6 -0
- package/dist/components/Checkbox/getCheckedState.js +14 -0
- package/dist/components/Checkbox/getCheckedState.js.map +1 -0
- package/dist/components/Checkbox/index.d.ts +3 -0
- package/dist/components/Checkbox/index.js +3 -0
- package/dist/components/CircularProgress/CircularProgress.d.ts +54 -0
- package/dist/components/CircularProgress/CircularProgress.js +85 -0
- package/dist/components/CircularProgress/CircularProgress.js.map +1 -0
- package/dist/components/CircularProgress/index.d.ts +2 -0
- package/dist/components/CircularProgress/index.js +2 -0
- package/dist/components/Code/Code.utils.d.ts +24 -0
- package/dist/components/Code/Code.utils.js +160 -0
- package/dist/components/Code/Code.utils.js.map +1 -0
- package/dist/components/Code/CodeLite.d.ts +19 -0
- package/dist/components/Code/CodeLite.js +146 -0
- package/dist/components/Code/CodeLite.js.map +1 -0
- package/dist/components/Code/CodeLite.utils.d.ts +24 -0
- package/dist/components/Code/CodeLite.utils.js +273 -0
- package/dist/components/Code/CodeLite.utils.js.map +1 -0
- package/dist/components/Code/ImageReplacerExtension.d.ts +9 -0
- package/dist/components/Code/ImageReplacerExtension.js +227 -0
- package/dist/components/Code/ImageReplacerExtension.js.map +1 -0
- package/dist/components/Code/JsonHighlighterExtension.d.ts +4 -0
- package/dist/components/Code/JsonHighlighterExtension.js +172 -0
- package/dist/components/Code/JsonHighlighterExtension.js.map +1 -0
- package/dist/components/Code/constants.d.ts +6 -0
- package/dist/components/Code/constants.js +11 -0
- package/dist/components/Code/constants.js.map +1 -0
- package/dist/components/Code/index.d.ts +30 -0
- package/dist/components/Code/index.js +140 -0
- package/dist/components/Code/index.js.map +1 -0
- package/dist/components/Code/languages/json.d.ts +1 -0
- package/dist/components/Code/languages/json.js +7 -0
- package/dist/components/Code/languages/json.js.map +1 -0
- package/dist/components/Code/languages/languages.d.ts +7 -0
- package/dist/components/Code/languages/languages.js +12 -0
- package/dist/components/Code/languages/languages.js.map +1 -0
- package/dist/components/Code/languages/python.d.ts +1 -0
- package/dist/components/Code/languages/python.js +7 -0
- package/dist/components/Code/languages/python.js.map +1 -0
- package/dist/components/Code/languages/shell.d.ts +7 -0
- package/dist/components/Code/languages/shell.js +241 -0
- package/dist/components/Code/languages/shell.js.map +1 -0
- package/dist/components/Code/languages/typescript.d.ts +1 -0
- package/dist/components/Code/languages/typescript.js +7 -0
- package/dist/components/Code/languages/typescript.js.map +1 -0
- package/dist/components/Code/languages/yaml.d.ts +2 -0
- package/dist/components/Code/languages/yaml.js +44 -0
- package/dist/components/Code/languages/yaml.js.map +1 -0
- package/dist/components/Code/types.d.ts +8 -0
- package/dist/components/Code/types.js +0 -0
- package/dist/components/Code/utils.d.ts +4 -0
- package/dist/components/Code/utils.js +27 -0
- package/dist/components/Code/utils.js.map +1 -0
- package/dist/components/Command/Command.d.ts +78 -0
- package/dist/components/Command/Command.js +78 -0
- package/dist/components/Command/Command.js.map +1 -0
- package/dist/components/Command/CommandMenu.d.ts +65 -0
- package/dist/components/Command/CommandMenu.js +101 -0
- package/dist/components/Command/CommandMenu.js.map +1 -0
- package/dist/components/Command/index.d.ts +4 -0
- package/dist/components/Command/index.js +3 -0
- package/dist/components/ContextMenu/ContextMenu.d.ts +9 -0
- package/dist/components/ContextMenu/ContextMenu.js +43 -0
- package/dist/components/ContextMenu/ContextMenu.js.map +1 -0
- package/dist/components/ContextMenu/index.d.ts +1 -0
- package/dist/components/ContextMenu/index.js +2 -0
- package/dist/components/CopyButton/CopyButton.d.ts +24 -0
- package/dist/components/CopyButton/CopyButton.js +121 -0
- package/dist/components/CopyButton/CopyButton.js.map +1 -0
- package/dist/components/CopyButton/copyToClipboard.d.ts +1 -0
- package/dist/components/CopyButton/copyToClipboard.js +29 -0
- package/dist/components/CopyButton/copyToClipboard.js.map +1 -0
- package/dist/components/CopyButton/index.d.ts +4 -0
- package/dist/components/CopyButton/index.js +4 -0
- package/dist/components/CopyButton/useCopy.d.ts +10 -0
- package/dist/components/CopyButton/useCopy.js +46 -0
- package/dist/components/CopyButton/useCopy.js.map +1 -0
- package/dist/components/Dialog/index.d.ts +49 -0
- package/dist/components/Dialog/index.js +130 -0
- package/dist/components/Dialog/index.js.map +1 -0
- package/dist/components/Divider/Divider.d.ts +9 -0
- package/dist/components/Divider/Divider.js +27 -0
- package/dist/components/Divider/Divider.js.map +1 -0
- package/dist/components/Divider/index.d.ts +2 -0
- package/dist/components/Divider/index.js +2 -0
- package/dist/components/DonutChart/DonutChart.d.ts +101 -0
- package/dist/components/DonutChart/DonutChart.js +197 -0
- package/dist/components/DonutChart/DonutChart.js.map +1 -0
- package/dist/components/DonutChart/DonutChart.utils.d.ts +38 -0
- package/dist/components/DonutChart/DonutChart.utils.js +93 -0
- package/dist/components/DonutChart/DonutChart.utils.js.map +1 -0
- package/dist/components/DonutChart/constants.d.ts +7 -0
- package/dist/components/DonutChart/constants.js +12 -0
- package/dist/components/DonutChart/constants.js.map +1 -0
- package/dist/components/DonutChart/index.d.ts +4 -0
- package/dist/components/DonutChart/index.js +4 -0
- package/dist/components/DropdownMenu/DropdownMenu.d.ts +24 -0
- package/dist/components/DropdownMenu/DropdownMenu.js +149 -0
- package/dist/components/DropdownMenu/DropdownMenu.js.map +1 -0
- package/dist/components/DropdownMenu/index.d.ts +1 -0
- package/dist/components/DropdownMenu/index.js +2 -0
- package/dist/components/EmptyState/EmptyState.d.ts +26 -0
- package/dist/components/EmptyState/EmptyState.js +85 -0
- package/dist/components/EmptyState/EmptyState.js.map +1 -0
- package/dist/components/EmptyState/index.d.ts +2 -0
- package/dist/components/EmptyState/index.js +2 -0
- package/dist/components/ErrorBoundary.d.ts +35 -0
- package/dist/components/ErrorBoundary.js +41 -0
- package/dist/components/ErrorBoundary.js.map +1 -0
- package/dist/components/ErrorMessage/ErrorMessage.d.ts +17 -0
- package/dist/components/ErrorMessage/ErrorMessage.js +146 -0
- package/dist/components/ErrorMessage/ErrorMessage.js.map +1 -0
- package/dist/components/ErrorMessage/index.d.ts +2 -0
- package/dist/components/ErrorMessage/index.js +2 -0
- package/dist/components/ErrorState/ErrorState.d.ts +23 -0
- package/dist/components/ErrorState/ErrorState.js +2 -0
- package/dist/components/ErrorState/index.d.ts +2 -0
- package/dist/components/ErrorState/index.js +2 -0
- package/dist/components/GroupedTabs/GroupedTabs.d.ts +31 -0
- package/dist/components/GroupedTabs/GroupedTabs.js +92 -0
- package/dist/components/GroupedTabs/GroupedTabs.js.map +1 -0
- package/dist/components/GroupedTabs/index.d.ts +2 -0
- package/dist/components/GroupedTabs/index.js +2 -0
- package/dist/components/HoverCard.d.ts +4 -0
- package/dist/components/HoverCard.js +34 -0
- package/dist/components/HoverCard.js.map +1 -0
- package/dist/components/Icon/Icon.d.ts +25 -0
- package/dist/components/Icon/Icon.js +57 -0
- package/dist/components/Icon/Icon.js.map +1 -0
- package/dist/components/Icon/index.d.ts +2 -0
- package/dist/components/Icon/index.js +2 -0
- package/dist/components/IconButton/IconButton.d.ts +35 -0
- package/dist/components/IconButton/IconButton.js +73 -0
- package/dist/components/IconButton/IconButton.js.map +1 -0
- package/dist/components/IconButton/index.d.ts +2 -0
- package/dist/components/IconButton/index.js +2 -0
- package/dist/components/Input/Input.d.ts +72 -0
- package/dist/components/Input/Input.js +221 -0
- package/dist/components/Input/Input.js.map +1 -0
- package/dist/components/Input/index.d.ts +2 -0
- package/dist/components/Input/index.js +2 -0
- package/dist/components/Input/inputStyles.d.ts +28 -0
- package/dist/components/Input/inputStyles.js +45 -0
- package/dist/components/Input/inputStyles.js.map +1 -0
- package/dist/components/Kbd/Kbd.d.ts +15 -0
- package/dist/components/Kbd/Kbd.js +30 -0
- package/dist/components/Kbd/Kbd.js.map +1 -0
- package/dist/components/Kbd/index.d.ts +2 -0
- package/dist/components/Kbd/index.js +2 -0
- package/dist/components/LineChart/LineChart.d.ts +8 -0
- package/dist/components/LineChart/LineChart.js +194 -0
- package/dist/components/LineChart/LineChart.js.map +1 -0
- package/dist/components/LineChart/LineChart.types.d.ts +138 -0
- package/dist/components/LineChart/LineChart.types.js +0 -0
- package/dist/components/LineChart/LineChart.utils.d.ts +29 -0
- package/dist/components/LineChart/LineChart.utils.js +123 -0
- package/dist/components/LineChart/LineChart.utils.js.map +1 -0
- package/dist/components/LineChart/LineChartPlot.d.ts +43 -0
- package/dist/components/LineChart/LineChartPlot.js +306 -0
- package/dist/components/LineChart/LineChartPlot.js.map +1 -0
- package/dist/components/LineChart/constants.d.ts +3 -0
- package/dist/components/LineChart/constants.js +8 -0
- package/dist/components/LineChart/constants.js.map +1 -0
- package/dist/components/LineChart/index.d.ts +2 -0
- package/dist/components/LineChart/index.js +2 -0
- package/dist/components/LinearProgress/LinearProgress.d.ts +16 -0
- package/dist/components/LinearProgress/LinearProgress.js +42 -0
- package/dist/components/LinearProgress/LinearProgress.js.map +1 -0
- package/dist/components/LinearProgress/index.d.ts +2 -0
- package/dist/components/LinearProgress/index.js +2 -0
- package/dist/components/Link/Link.d.ts +30 -0
- package/dist/components/Link/Link.js +51 -0
- package/dist/components/Link/Link.js.map +1 -0
- package/dist/components/Link/index.d.ts +2 -0
- package/dist/components/Link/index.js +2 -0
- package/dist/components/Logo/index.d.ts +17 -0
- package/dist/components/Logo/index.js +705 -0
- package/dist/components/Logo/index.js.map +1 -0
- package/dist/components/MetricChart/MetricChart.d.ts +9 -0
- package/dist/components/MetricChart/MetricChart.js +42 -0
- package/dist/components/MetricChart/MetricChart.js.map +1 -0
- package/dist/components/MetricChart/formatters.d.ts +18 -0
- package/dist/components/MetricChart/formatters.js +34 -0
- package/dist/components/MetricChart/formatters.js.map +1 -0
- package/dist/components/MetricChart/index.d.ts +4 -0
- package/dist/components/MetricChart/index.js +3 -0
- package/dist/components/Pane/Pane.d.ts +29 -0
- package/dist/components/Pane/Pane.js +171 -0
- package/dist/components/Pane/Pane.js.map +1 -0
- package/dist/components/Pane/Pane.utils.d.ts +10 -0
- package/dist/components/Pane/Pane.utils.js +7 -0
- package/dist/components/Pane/Pane.utils.js.map +1 -0
- package/dist/components/Pane/index.d.ts +3 -0
- package/dist/components/Pane/index.js +3 -0
- package/dist/components/PlainTextEditor/hooks/useResizeTextEditor.d.ts +9 -0
- package/dist/components/PlainTextEditor/hooks/useResizeTextEditor.js +76 -0
- package/dist/components/PlainTextEditor/hooks/useResizeTextEditor.js.map +1 -0
- package/dist/components/PlainTextEditor/index.d.ts +18 -0
- package/dist/components/PlainTextEditor/index.js +71 -0
- package/dist/components/PlainTextEditor/index.js.map +1 -0
- package/dist/components/Popover/Popover.d.ts +13 -0
- package/dist/components/Popover/Popover.js +48 -0
- package/dist/components/Popover/Popover.js.map +1 -0
- package/dist/components/Popover/constants.d.ts +1 -0
- package/dist/components/Popover/constants.js +6 -0
- package/dist/components/Popover/constants.js.map +1 -0
- package/dist/components/Popover/index.d.ts +1 -0
- package/dist/components/Popover/index.js +2 -0
- package/dist/components/PortalSlot.d.ts +11 -0
- package/dist/components/PortalSlot.js +41 -0
- package/dist/components/PortalSlot.js.map +1 -0
- package/dist/components/ProgressBar/ProgressBar.d.ts +38 -0
- package/dist/components/ProgressBar/ProgressBar.js +82 -0
- package/dist/components/ProgressBar/ProgressBar.js.map +1 -0
- package/dist/components/ProgressBar/index.d.ts +2 -0
- package/dist/components/ProgressBar/index.js +2 -0
- package/dist/components/RadioButton/RadioButton.d.ts +62 -0
- package/dist/components/RadioButton/RadioButton.js +38 -0
- package/dist/components/RadioButton/RadioButton.js.map +1 -0
- package/dist/components/RadioButton/constants.d.ts +30 -0
- package/dist/components/RadioButton/constants.js +55 -0
- package/dist/components/RadioButton/constants.js.map +1 -0
- package/dist/components/RadioButton/index.d.ts +2 -0
- package/dist/components/RadioButton/index.js +2 -0
- package/dist/components/RadioCard/RadioCard.d.ts +26 -0
- package/dist/components/RadioCard/RadioCard.js +43 -0
- package/dist/components/RadioCard/RadioCard.js.map +1 -0
- package/dist/components/RadioCard/index.d.ts +2 -0
- package/dist/components/RadioCard/index.js +2 -0
- package/dist/components/RadioGroup/RadioGroup.d.ts +5 -0
- package/dist/components/RadioGroup/RadioGroup.js +17 -0
- package/dist/components/RadioGroup/RadioGroup.js.map +1 -0
- package/dist/components/RadioGroup/RadioGroupItem.d.ts +5 -0
- package/dist/components/RadioGroup/RadioGroupItem.js +22 -0
- package/dist/components/RadioGroup/RadioGroupItem.js.map +1 -0
- package/dist/components/RadioGroup/index.d.ts +4 -0
- package/dist/components/RadioGroup/index.js +3 -0
- package/dist/components/Select/Select.d.ts +84 -0
- package/dist/components/Select/Select.js +120 -0
- package/dist/components/Select/Select.js.map +1 -0
- package/dist/components/Select/SelectPrimitive.d.ts +17 -0
- package/dist/components/Select/SelectPrimitive.js +126 -0
- package/dist/components/Select/SelectPrimitive.js.map +1 -0
- package/dist/components/Select/index.d.ts +4 -0
- package/dist/components/Select/index.js +3 -0
- package/dist/components/Skeleton/Skeleton.d.ts +13 -0
- package/dist/components/Skeleton/Skeleton.js +25 -0
- package/dist/components/Skeleton/Skeleton.js.map +1 -0
- package/dist/components/Skeleton/index.d.ts +1 -0
- package/dist/components/Skeleton/index.js +2 -0
- package/dist/components/Slider/Slider.d.ts +33 -0
- package/dist/components/Slider/Slider.js +64 -0
- package/dist/components/Slider/Slider.js.map +1 -0
- package/dist/components/Slider/index.d.ts +2 -0
- package/dist/components/Slider/index.js +2 -0
- package/dist/components/SparkLineChart/SparkLineChart.d.ts +14 -0
- package/dist/components/SparkLineChart/SparkLineChart.js +112 -0
- package/dist/components/SparkLineChart/SparkLineChart.js.map +1 -0
- package/dist/components/SparkLineChart/index.d.ts +2 -0
- package/dist/components/SparkLineChart/index.js +2 -0
- package/dist/components/Spinner/Spinner.d.ts +12 -0
- package/dist/components/Spinner/Spinner.js +33 -0
- package/dist/components/Spinner/Spinner.js.map +1 -0
- package/dist/components/Spinner/index.d.ts +1 -0
- package/dist/components/Spinner/index.js +2 -0
- package/dist/components/SplitViewPane/SplitViewPane.d.ts +41 -0
- package/dist/components/SplitViewPane/SplitViewPane.js +314 -0
- package/dist/components/SplitViewPane/SplitViewPane.js.map +1 -0
- package/dist/components/SplitViewPane/SplitViewPaneHeader.d.ts +22 -0
- package/dist/components/SplitViewPane/SplitViewPaneHeader.js +105 -0
- package/dist/components/SplitViewPane/SplitViewPaneHeader.js.map +1 -0
- package/dist/components/SplitViewPane/index.d.ts +2 -0
- package/dist/components/SplitViewPane/index.js +3 -0
- package/dist/components/SplitViewPane/openPaneRegistry.d.ts +2 -0
- package/dist/components/SplitViewPane/openPaneRegistry.js +49 -0
- package/dist/components/SplitViewPane/openPaneRegistry.js.map +1 -0
- package/dist/components/Switch/Switch.d.ts +35 -0
- package/dist/components/Switch/Switch.js +65 -0
- package/dist/components/Switch/Switch.js.map +1 -0
- package/dist/components/Switch/index.d.ts +2 -0
- package/dist/components/Switch/index.js +2 -0
- package/dist/components/Tabs/index.d.ts +27 -0
- package/dist/components/Tabs/index.js +45 -0
- package/dist/components/Tabs/index.js.map +1 -0
- package/dist/components/Text/Text.d.ts +13 -0
- package/dist/components/Text/Text.js +58 -0
- package/dist/components/Text/Text.js.map +1 -0
- package/dist/components/Text/index.d.ts +2 -0
- package/dist/components/Text/index.js +2 -0
- package/dist/components/TextVirtualizer.d.ts +8 -0
- package/dist/components/TextVirtualizer.js +53 -0
- package/dist/components/TextVirtualizer.js.map +1 -0
- package/dist/components/TextWithLinks.d.ts +6 -0
- package/dist/components/TextWithLinks.js +61 -0
- package/dist/components/TextWithLinks.js.map +1 -0
- package/dist/components/Textarea/Textarea.d.ts +47 -0
- package/dist/components/Textarea/Textarea.js +150 -0
- package/dist/components/Textarea/Textarea.js.map +1 -0
- package/dist/components/Textarea/index.d.ts +2 -0
- package/dist/components/Textarea/index.js +2 -0
- package/dist/components/ThinkingState/LoadingIndicator.d.ts +19 -0
- package/dist/components/ThinkingState/LoadingIndicator.js +2 -0
- package/dist/components/ThinkingState/NOTICE +25 -0
- package/dist/components/ThinkingState/ThinkingState.d.ts +21 -0
- package/dist/components/ThinkingState/ThinkingState.js +42 -0
- package/dist/components/ThinkingState/ThinkingState.js.map +1 -0
- package/dist/components/ThinkingState/ThinkingStateTimer.d.ts +9 -0
- package/dist/components/ThinkingState/ThinkingStateTimer.js +43 -0
- package/dist/components/ThinkingState/ThinkingStateTimer.js.map +1 -0
- package/dist/components/ThinkingState/index.d.ts +4 -0
- package/dist/components/ThinkingState/index.js +3 -0
- package/dist/components/Toast/ToastContext.d.ts +5 -0
- package/dist/components/Toast/ToastContext.js +9 -0
- package/dist/components/Toast/ToastContext.js.map +1 -0
- package/dist/components/Toast/index.d.ts +13 -0
- package/dist/components/Toast/index.js +166 -0
- package/dist/components/Toast/index.js.map +1 -0
- package/dist/components/Toast/useToast.d.ts +3 -0
- package/dist/components/Toast/useToast.js +11 -0
- package/dist/components/Toast/useToast.js.map +1 -0
- package/dist/components/Tooltip/Tooltip.d.ts +19 -0
- package/dist/components/Tooltip/Tooltip.js +57 -0
- package/dist/components/Tooltip/Tooltip.js.map +1 -0
- package/dist/components/Tooltip/index.d.ts +3 -0
- package/dist/components/Tooltip/index.js +3 -0
- package/dist/components/TopList/TopList.d.ts +3 -0
- package/dist/components/TopList/TopList.js +186 -0
- package/dist/components/TopList/TopList.js.map +1 -0
- package/dist/components/TopList/TopList.types.d.ts +34 -0
- package/dist/components/TopList/TopList.types.js +0 -0
- package/dist/components/TopList/TopList.utils.d.ts +3 -0
- package/dist/components/TopList/TopList.utils.js +16 -0
- package/dist/components/TopList/TopList.utils.js.map +1 -0
- package/dist/components/TopList/index.d.ts +2 -0
- package/dist/components/TopList/index.js +2 -0
- package/dist/components/Typeahead/Typeahead.d.ts +5 -0
- package/dist/components/Typeahead/Typeahead.js +305 -0
- package/dist/components/Typeahead/Typeahead.js.map +1 -0
- package/dist/components/Typeahead/Typeahead.types.d.ts +99 -0
- package/dist/components/Typeahead/Typeahead.types.js +0 -0
- package/dist/components/Typeahead/Typeahead.utils.d.ts +25 -0
- package/dist/components/Typeahead/Typeahead.utils.js +73 -0
- package/dist/components/Typeahead/Typeahead.utils.js.map +1 -0
- package/dist/components/Typeahead/TypeaheadParts.d.ts +25 -0
- package/dist/components/Typeahead/TypeaheadParts.js +109 -0
- package/dist/components/Typeahead/TypeaheadParts.js.map +1 -0
- package/dist/components/Typeahead/TypeaheadView.d.ts +81 -0
- package/dist/components/Typeahead/TypeaheadView.js +228 -0
- package/dist/components/Typeahead/TypeaheadView.js.map +1 -0
- package/dist/components/Typeahead/index.d.ts +2 -0
- package/dist/components/Typeahead/index.js +2 -0
- package/dist/components/Typeahead/useTypeaheadDomSync.d.ts +15 -0
- package/dist/components/Typeahead/useTypeaheadDomSync.js +43 -0
- package/dist/components/Typeahead/useTypeaheadDomSync.js.map +1 -0
- package/dist/components/Typeahead/useTypeaheadUncontrolledInput.d.ts +11 -0
- package/dist/components/Typeahead/useTypeaheadUncontrolledInput.js +32 -0
- package/dist/components/Typeahead/useTypeaheadUncontrolledInput.js.map +1 -0
- package/dist/components/UnsavedChangesDialog.d.ts +14 -0
- package/dist/components/UnsavedChangesDialog.js +67 -0
- package/dist/components/UnsavedChangesDialog.js.map +1 -0
- package/dist/components/index.d.ts +58 -0
- package/dist/components/index.js +35 -0
- package/dist/components.css +102 -0
- package/dist/contexts/ErrorReporterContext.d.ts +6 -0
- package/dist/contexts/ErrorReporterContext.js +7 -0
- package/dist/contexts/ErrorReporterContext.js.map +1 -0
- package/dist/hooks/AppThemeProvider.d.ts +8 -0
- package/dist/hooks/AppThemeProvider.js +52 -0
- package/dist/hooks/AppThemeProvider.js.map +1 -0
- package/dist/hooks/useColorScheme.d.ts +20 -0
- package/dist/hooks/useColorScheme.js +50 -0
- package/dist/hooks/useColorScheme.js.map +1 -0
- package/dist/icons/LongTailPhosphorIcons.d.ts +51 -0
- package/dist/icons/LongTailPhosphorIcons.js +102 -0
- package/dist/icons/LongTailPhosphorIcons.js.map +1 -0
- package/dist/icons/PaddedPhosphorIcons.d.ts +17 -0
- package/dist/icons/PaddedPhosphorIcons.js +55 -0
- package/dist/icons/PaddedPhosphorIcons.js.map +1 -0
- package/dist/icons/WeightedPhosphorIcons.d.ts +45 -0
- package/dist/icons/WeightedPhosphorIcons.js +96 -0
- package/dist/icons/WeightedPhosphorIcons.js.map +1 -0
- package/dist/icons/index.d.ts +2 -0
- package/dist/icons/index.js +4 -0
- package/dist/index.d.ts +1 -0
- package/dist/index.js +36 -0
- package/dist/styles.css +10 -0
- package/dist/utilities.css +2 -0
- package/dist/utils/VirtuosoCustomScrollParentContext/index.d.ts +7 -0
- package/dist/utils/VirtuosoCustomScrollParentContext/index.js +15 -0
- package/dist/utils/VirtuosoCustomScrollParentContext/index.js.map +1 -0
- package/dist/utils/VirtuosoCustomScrollParentContext/useScrollParent.d.ts +4 -0
- package/dist/utils/VirtuosoCustomScrollParentContext/useScrollParent.js +10 -0
- package/dist/utils/VirtuosoCustomScrollParentContext/useScrollParent.js.map +1 -0
- package/dist/utils/ZIndexContext.d.ts +5 -0
- package/dist/utils/ZIndexContext.js +13 -0
- package/dist/utils/ZIndexContext.js.map +1 -0
- package/dist/utils/animation.d.ts +37 -0
- package/dist/utils/animation.js +42 -0
- package/dist/utils/animation.js.map +1 -0
- package/dist/utils/chartAxisLayout.d.ts +6 -0
- package/dist/utils/chartAxisLayout.js +8 -0
- package/dist/utils/chartAxisLayout.js.map +1 -0
- package/dist/utils/chartColors.d.ts +38 -0
- package/dist/utils/chartColors.js +78 -0
- package/dist/utils/chartColors.js.map +1 -0
- package/dist/utils/chartConstants.d.ts +10 -0
- package/dist/utils/chartConstants.js +15 -0
- package/dist/utils/chartConstants.js.map +1 -0
- package/dist/utils/chartValues.d.ts +2 -0
- package/dist/utils/chartValues.js +36 -0
- package/dist/utils/chartValues.js.map +1 -0
- package/dist/utils/clamp.d.ts +2 -0
- package/dist/utils/clamp.js +7 -0
- package/dist/utils/clamp.js.map +1 -0
- package/dist/utils/cn.d.ts +2 -0
- package/dist/utils/cn.js +191 -0
- package/dist/utils/cn.js.map +1 -0
- package/dist/utils/componentSizes.d.ts +104 -0
- package/dist/utils/componentSizes.js +104 -0
- package/dist/utils/componentSizes.js.map +1 -0
- package/dist/utils/controlIconSizes.d.ts +10 -0
- package/dist/utils/controlIconSizes.js +32 -0
- package/dist/utils/controlIconSizes.js.map +1 -0
- package/dist/utils/csp-nonce.d.ts +11 -0
- package/dist/utils/csp-nonce.js +17 -0
- package/dist/utils/csp-nonce.js.map +1 -0
- package/dist/utils/get-closest-scroll-parent.d.ts +1 -0
- package/dist/utils/get-closest-scroll-parent.js +16 -0
- package/dist/utils/get-closest-scroll-parent.js.map +1 -0
- package/dist/utils/get-color-by-string.d.ts +1 -0
- package/dist/utils/get-color-by-string.js +10 -0
- package/dist/utils/get-color-by-string.js.map +1 -0
- package/dist/utils/getYAxisLeftMargin.d.ts +10 -0
- package/dist/utils/getYAxisLeftMargin.js +20 -0
- package/dist/utils/getYAxisLeftMargin.js.map +1 -0
- package/dist/utils/icon-types.d.ts +8 -0
- package/dist/utils/icon-types.js +0 -0
- package/dist/utils/lazy-codemirror-loader.d.ts +70 -0
- package/dist/utils/lazy-codemirror-loader.js +79 -0
- package/dist/utils/lazy-codemirror-loader.js.map +1 -0
- package/dist/utils/merge-refs.d.ts +2 -0
- package/dist/utils/merge-refs.js +13 -0
- package/dist/utils/merge-refs.js.map +1 -0
- package/dist/utils/parseTextLinks.d.ts +7 -0
- package/dist/utils/parseTextLinks.js +46 -0
- package/dist/utils/parseTextLinks.js.map +1 -0
- package/dist/utils/prettify-error-payload.d.ts +7 -0
- package/dist/utils/prettify-error-payload.js +188 -0
- package/dist/utils/prettify-error-payload.js.map +1 -0
- package/dist/utils/spacing.d.ts +30 -0
- package/dist/utils/spacing.js +34 -0
- package/dist/utils/spacing.js.map +1 -0
- package/dist/utils/useCodeMirror.d.ts +7 -0
- package/dist/utils/useCodeMirror.js +28 -0
- package/dist/utils/useCodeMirror.js.map +1 -0
- package/dist/utils/useZIndex.d.ts +52 -0
- package/dist/utils/useZIndex.js +62 -0
- package/dist/utils/useZIndex.js.map +1 -0
- package/dist/utils/zIndices.d.ts +42 -0
- package/dist/utils/zIndices.js +46 -0
- package/dist/utils/zIndices.js.map +1 -0
- package/docs/DESIGN.md +134 -0
- package/docs/STYLES.md +568 -0
- package/package.json +619 -0
- package/tailwind.preset.cjs +738 -0
- package/tailwind.preset.d.cts +5 -0
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
import { type ReactNode } from 'react';
|
|
2
|
+
import type { LANGUAGES } from './languages/languages.js';
|
|
3
|
+
export interface CodeLiteProps {
|
|
4
|
+
value: string | undefined;
|
|
5
|
+
language: keyof typeof LANGUAGES;
|
|
6
|
+
virtualize?: boolean;
|
|
7
|
+
className?: string;
|
|
8
|
+
children?: ReactNode;
|
|
9
|
+
showGutter?: boolean;
|
|
10
|
+
wrapLines?: boolean;
|
|
11
|
+
highlightText?: string;
|
|
12
|
+
}
|
|
13
|
+
/**
|
|
14
|
+
* The preferred component for read-only syntax-highlighted code. It avoids
|
|
15
|
+
* mounting a full CodeMirror editor, making it more performant when rendering
|
|
16
|
+
* multiple code blocks, while retaining folding and optional virtualization.
|
|
17
|
+
* Use `Code` only when editing or custom CodeMirror extensions are required.
|
|
18
|
+
*/
|
|
19
|
+
export declare const CodeLite: import("react").MemoExoticComponent<(props: CodeLiteProps) => import("react").JSX.Element>;
|
|
@@ -0,0 +1,146 @@
|
|
|
1
|
+
import { cn } from "../../utils/cn.js";
|
|
2
|
+
import { CaretDownIcon } from "../../icons/PaddedPhosphorIcons.js";
|
|
3
|
+
import { useCodeMirror } from "../../utils/useCodeMirror.js";
|
|
4
|
+
import { convertFile, getVisibleLines, parseFile } from "./CodeLite.utils.js";
|
|
5
|
+
import { memo, useEffect, useRef, useState } from "react";
|
|
6
|
+
import { Fragment as Fragment$1, jsx, jsxs } from "react/jsx-runtime";
|
|
7
|
+
import { TableVirtuoso } from "react-virtuoso";
|
|
8
|
+
//#region packages/components/src/components/Code/CodeLite.tsx
|
|
9
|
+
/**
|
|
10
|
+
* The preferred component for read-only syntax-highlighted code. It avoids
|
|
11
|
+
* mounting a full CodeMirror editor, making it more performant when rendering
|
|
12
|
+
* multiple code blocks, while retaining folding and optional virtualization.
|
|
13
|
+
* Use `Code` only when editing or custom CodeMirror extensions are required.
|
|
14
|
+
*/
|
|
15
|
+
var CodeLite = memo((props) => {
|
|
16
|
+
const cm = useCodeMirror();
|
|
17
|
+
const reqCount = useRef(0);
|
|
18
|
+
const [parse, setParse] = useState({
|
|
19
|
+
id: -1,
|
|
20
|
+
data: null,
|
|
21
|
+
error: null
|
|
22
|
+
});
|
|
23
|
+
const mountedRef = useRef(true);
|
|
24
|
+
useEffect(() => () => void (mountedRef.current = false), []);
|
|
25
|
+
useEffect(() => {
|
|
26
|
+
if (!cm) return;
|
|
27
|
+
const controller = new AbortController();
|
|
28
|
+
const signal = controller.signal;
|
|
29
|
+
const requestId = ++reqCount.current;
|
|
30
|
+
setParse({
|
|
31
|
+
id: requestId,
|
|
32
|
+
data: null,
|
|
33
|
+
error: null
|
|
34
|
+
});
|
|
35
|
+
parseFile(cm, props.language, props.value, { signal }).then((data) => {
|
|
36
|
+
if (!mountedRef.current) return;
|
|
37
|
+
setParse((prev) => {
|
|
38
|
+
if (prev.id !== requestId) return prev;
|
|
39
|
+
return {
|
|
40
|
+
id: requestId,
|
|
41
|
+
data,
|
|
42
|
+
error: null
|
|
43
|
+
};
|
|
44
|
+
});
|
|
45
|
+
}, (error) => {
|
|
46
|
+
if (!mountedRef.current) return;
|
|
47
|
+
setParse((prev) => {
|
|
48
|
+
if (prev.id !== requestId) return prev;
|
|
49
|
+
return {
|
|
50
|
+
id: requestId,
|
|
51
|
+
data: null,
|
|
52
|
+
error
|
|
53
|
+
};
|
|
54
|
+
});
|
|
55
|
+
});
|
|
56
|
+
return () => controller.abort();
|
|
57
|
+
}, [
|
|
58
|
+
cm,
|
|
59
|
+
props.language,
|
|
60
|
+
props.value
|
|
61
|
+
]);
|
|
62
|
+
const data = parse.data ?? convertFile(props.value);
|
|
63
|
+
const [foldIdx, setFoldIdx] = useState(/* @__PURE__ */ new Set());
|
|
64
|
+
const visibleLines = getVisibleLines(data, foldIdx);
|
|
65
|
+
const showGutter = props.showGutter ?? true;
|
|
66
|
+
const wrapLines = props.wrapLines ?? true;
|
|
67
|
+
const toggleFold = (n) => {
|
|
68
|
+
setFoldIdx((prev) => {
|
|
69
|
+
const curr = new Set(prev);
|
|
70
|
+
if (curr.has(n)) curr.delete(n);
|
|
71
|
+
else curr.add(n);
|
|
72
|
+
return curr;
|
|
73
|
+
});
|
|
74
|
+
};
|
|
75
|
+
const itemContent = (_index, line) => /* @__PURE__ */ jsxs(Fragment$1, { children: [showGutter && /* @__PURE__ */ jsx("td", {
|
|
76
|
+
className: "select-none py-0 align-top",
|
|
77
|
+
children: /* @__PURE__ */ jsxs("div", {
|
|
78
|
+
className: "flex items-center justify-between gap-space-1 whitespace-pre font-mono text-quaternary",
|
|
79
|
+
children: [/* @__PURE__ */ jsx("span", {
|
|
80
|
+
className: "min-w-8 pl-2.5 text-right",
|
|
81
|
+
children: line.n
|
|
82
|
+
}), line.fold ? /* @__PURE__ */ jsx("button", {
|
|
83
|
+
type: "button",
|
|
84
|
+
"aria-expanded": !foldIdx.has(line.n),
|
|
85
|
+
onClick: () => toggleFold(line.n),
|
|
86
|
+
className: "-rotate-90 transition-transform aria-expanded:rotate-0",
|
|
87
|
+
children: /* @__PURE__ */ jsx(CaretDownIcon, {
|
|
88
|
+
"aria-hidden": true,
|
|
89
|
+
size: 16,
|
|
90
|
+
weight: "regular"
|
|
91
|
+
})
|
|
92
|
+
}) : /* @__PURE__ */ jsx("span", { className: "size-4" })]
|
|
93
|
+
})
|
|
94
|
+
}), /* @__PURE__ */ jsxs("td", {
|
|
95
|
+
className: cn("px-1.5 py-0 font-mono", wrapLines ? "whitespace-pre-wrap" : "whitespace-pre"),
|
|
96
|
+
children: [
|
|
97
|
+
line.line.map((token, index) => {
|
|
98
|
+
const tokenText = data.code.slice(token.from, token.to);
|
|
99
|
+
const highlightText = props.highlightText;
|
|
100
|
+
const highlightIndex = highlightText ? tokenText.indexOf(highlightText) : -1;
|
|
101
|
+
return /* @__PURE__ */ jsx("span", {
|
|
102
|
+
className: cn(token.classes || "text-tertiary"),
|
|
103
|
+
children: highlightIndex === -1 || !highlightText ? tokenText : /* @__PURE__ */ jsxs(Fragment$1, { children: [
|
|
104
|
+
tokenText.slice(0, highlightIndex),
|
|
105
|
+
/* @__PURE__ */ jsx("span", {
|
|
106
|
+
"data-code-highlight": true,
|
|
107
|
+
className: "rounded-xs bg-brand-subtle text-brand-primary",
|
|
108
|
+
children: highlightText
|
|
109
|
+
}),
|
|
110
|
+
tokenText.slice(highlightIndex + highlightText.length)
|
|
111
|
+
] })
|
|
112
|
+
}, index);
|
|
113
|
+
}),
|
|
114
|
+
line.line.length === 0 && /* @__PURE__ */ jsx("span", {
|
|
115
|
+
className: "text-tertiary",
|
|
116
|
+
children: "\n"
|
|
117
|
+
}),
|
|
118
|
+
foldIdx.has(line.n) && /* @__PURE__ */ jsx("button", {
|
|
119
|
+
type: "button",
|
|
120
|
+
className: "rounded-xs border border-subtle bg-surface-level-2 py-px text-xs leading-none text-quaternary transition-colors hover:bg-surface-level-2-hover",
|
|
121
|
+
onClick: () => toggleFold(line.n),
|
|
122
|
+
children: /* @__PURE__ */ jsx("span", {
|
|
123
|
+
className: "-mx-0.5",
|
|
124
|
+
children: "..."
|
|
125
|
+
})
|
|
126
|
+
})
|
|
127
|
+
]
|
|
128
|
+
})] });
|
|
129
|
+
const className = cn("font-mono text-xs", props.className);
|
|
130
|
+
if (!props.virtualize) return /* @__PURE__ */ jsxs(Fragment$1, { children: [/* @__PURE__ */ jsx("table", {
|
|
131
|
+
className: cn("w-fit border-spacing-0 [overflow-anchor:none]", className),
|
|
132
|
+
children: /* @__PURE__ */ jsx("tbody", { children: visibleLines.map((line, index) => /* @__PURE__ */ jsx("tr", {
|
|
133
|
+
className: "[overflow-anchor:none]",
|
|
134
|
+
children: itemContent(index, line)
|
|
135
|
+
}, index)) })
|
|
136
|
+
}), props.children] });
|
|
137
|
+
return /* @__PURE__ */ jsxs(Fragment$1, { children: [/* @__PURE__ */ jsx(TableVirtuoso, {
|
|
138
|
+
data: visibleLines,
|
|
139
|
+
className,
|
|
140
|
+
itemContent
|
|
141
|
+
}), props.children] });
|
|
142
|
+
});
|
|
143
|
+
//#endregion
|
|
144
|
+
export { CodeLite };
|
|
145
|
+
|
|
146
|
+
//# sourceMappingURL=CodeLite.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"CodeLite.js","names":[],"sources":["../../../src/components/Code/CodeLite.tsx"],"sourcesContent":["import { type ReactNode, memo, useEffect, useRef, useState } from 'react';\n\nimport { TableVirtuoso } from 'react-virtuoso';\n\nimport { CaretDownIcon } from '../../icons/PaddedPhosphorIcons';\nimport { cn } from '../../utils/cn';\nimport { useCodeMirror } from '../../utils/useCodeMirror';\nimport {\n type ParsedFile,\n convertFile,\n getVisibleLines,\n parseFile,\n} from './CodeLite.utils';\nimport type { LANGUAGES } from './languages/languages';\n\nexport interface CodeLiteProps {\n value: string | undefined;\n language: keyof typeof LANGUAGES;\n virtualize?: boolean;\n className?: string;\n children?: ReactNode;\n showGutter?: boolean;\n wrapLines?: boolean;\n highlightText?: string;\n}\n\n/**\n * The preferred component for read-only syntax-highlighted code. It avoids\n * mounting a full CodeMirror editor, making it more performant when rendering\n * multiple code blocks, while retaining folding and optional virtualization.\n * Use `Code` only when editing or custom CodeMirror extensions are required.\n */\nexport const CodeLite = memo((props: CodeLiteProps) => {\n const cm = useCodeMirror();\n const reqCount = useRef(0);\n const [parse, setParse] = useState<{\n id: number;\n data: Awaited<ReturnType<typeof parseFile>> | null;\n error: unknown | null;\n }>({ id: -1, data: null, error: null });\n\n const mountedRef = useRef(true);\n useEffect(() => () => void (mountedRef.current = false), []);\n\n useEffect(() => {\n if (!cm) return;\n\n const controller = new AbortController();\n const signal = controller.signal;\n const requestId = ++reqCount.current;\n\n setParse({ id: requestId, data: null, error: null });\n\n parseFile(cm, props.language, props.value, { signal }).then(\n (data) => {\n if (!mountedRef.current) return;\n setParse((prev) => {\n if (prev.id !== requestId) return prev;\n return { id: requestId, data, error: null };\n });\n },\n (error) => {\n if (!mountedRef.current) return;\n setParse((prev) => {\n if (prev.id !== requestId) return prev;\n return { id: requestId, data: null, error };\n });\n }\n );\n\n return () => controller.abort();\n }, [cm, props.language, props.value]);\n\n const data = parse.data ?? convertFile(props.value);\n\n const [foldIdx, setFoldIdx] = useState<Set<number>>(new Set());\n\n const visibleLines = getVisibleLines(data, foldIdx);\n const showGutter = props.showGutter ?? true;\n const wrapLines = props.wrapLines ?? true;\n\n const toggleFold = (n: number) => {\n setFoldIdx((prev) => {\n const curr = new Set(prev);\n if (curr.has(n)) curr.delete(n);\n else curr.add(n);\n return curr;\n });\n };\n\n const itemContent = (_index: number, line: ParsedFile['file'][number]) => (\n <>\n {showGutter && (\n <td className=\"select-none py-0 align-top\">\n <div className=\"flex items-center justify-between gap-space-1 whitespace-pre font-mono text-quaternary\">\n <span className=\"min-w-8 pl-2.5 text-right\">{line.n}</span>\n\n {line.fold ? (\n <button\n type=\"button\"\n aria-expanded={!foldIdx.has(line.n)}\n onClick={() => toggleFold(line.n)}\n className=\"-rotate-90 transition-transform aria-expanded:rotate-0\"\n >\n <CaretDownIcon aria-hidden size={16} weight=\"regular\" />\n </button>\n ) : (\n <span className=\"size-4\" />\n )}\n </div>\n </td>\n )}\n\n <td\n className={cn(\n 'px-1.5 py-0 font-mono',\n wrapLines ? 'whitespace-pre-wrap' : 'whitespace-pre'\n )}\n >\n {line.line.map((token, index) => {\n const tokenText = data.code.slice(token.from, token.to);\n const highlightText = props.highlightText;\n const highlightIndex = highlightText\n ? tokenText.indexOf(highlightText)\n : -1;\n\n return (\n <span key={index} className={cn(token.classes || 'text-tertiary')}>\n {highlightIndex === -1 || !highlightText ? (\n tokenText\n ) : (\n <>\n {tokenText.slice(0, highlightIndex)}\n <span\n data-code-highlight\n className=\"rounded-xs bg-brand-subtle text-brand-primary\"\n >\n {highlightText}\n </span>\n {tokenText.slice(highlightIndex + highlightText.length)}\n </>\n )}\n </span>\n );\n })}\n\n {line.line.length === 0 && (\n <span className=\"text-tertiary\">{'\\n'}</span>\n )}\n\n {foldIdx.has(line.n) && (\n <button\n type=\"button\"\n className=\"rounded-xs border border-subtle bg-surface-level-2 py-px text-xs leading-none text-quaternary transition-colors hover:bg-surface-level-2-hover\"\n onClick={() => toggleFold(line.n)}\n >\n <span className=\"-mx-0.5\">...</span>\n </button>\n )}\n </td>\n </>\n );\n\n const className = cn('font-mono text-xs', props.className);\n\n if (!props.virtualize) {\n return (\n <>\n <table\n className={cn(\n 'w-fit border-spacing-0 [overflow-anchor:none]',\n className\n )}\n >\n <tbody>\n {visibleLines.map((line, index) => (\n <tr key={index} className=\"[overflow-anchor:none]\">\n {itemContent(index, line)}\n </tr>\n ))}\n </tbody>\n </table>\n {props.children}\n </>\n );\n }\n\n return (\n <>\n <TableVirtuoso\n data={visibleLines}\n className={className}\n itemContent={itemContent}\n />\n {props.children}\n </>\n );\n});\n"],"mappings":"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"}
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
import type { CMBundle } from '../../utils/lazy-codemirror-loader.js';
|
|
2
|
+
import { LANGUAGES } from './languages/languages.js';
|
|
3
|
+
export type FoldRange = {
|
|
4
|
+
from: number;
|
|
5
|
+
to: number;
|
|
6
|
+
};
|
|
7
|
+
export interface ParsedFile {
|
|
8
|
+
file: {
|
|
9
|
+
line: {
|
|
10
|
+
from: number;
|
|
11
|
+
to: number;
|
|
12
|
+
classes: string;
|
|
13
|
+
}[];
|
|
14
|
+
n: number;
|
|
15
|
+
fold: FoldRange | null;
|
|
16
|
+
}[];
|
|
17
|
+
code: string;
|
|
18
|
+
}
|
|
19
|
+
export declare const EMPTY_FILE: ParsedFile;
|
|
20
|
+
export declare function convertFile(code: string | undefined): ParsedFile;
|
|
21
|
+
export declare function parseFile(cm: CMBundle, language: keyof typeof LANGUAGES, code: string | undefined, options?: {
|
|
22
|
+
signal?: AbortSignal;
|
|
23
|
+
}): Promise<ParsedFile>;
|
|
24
|
+
export declare function getVisibleLines(data: ParsedFile, foldIdx: Set<number>): ParsedFile['file'];
|
|
@@ -0,0 +1,273 @@
|
|
|
1
|
+
import { LANGUAGES } from "./languages/languages.js";
|
|
2
|
+
//#region packages/components/src/components/Code/CodeLite.utils.tsx
|
|
3
|
+
function isUnfinished(node) {
|
|
4
|
+
const ch = node.lastChild;
|
|
5
|
+
return !!(ch && ch.to === node.to && ch.type.isError);
|
|
6
|
+
}
|
|
7
|
+
var getOrCreateClassHighlighter = (() => {
|
|
8
|
+
let classHighlighter = null;
|
|
9
|
+
return (cm) => {
|
|
10
|
+
if (classHighlighter != null) return classHighlighter;
|
|
11
|
+
const { lezerTagHighlighter: tagHighlighter, lezerHighlightTags: tags } = cm;
|
|
12
|
+
classHighlighter = tagHighlighter([
|
|
13
|
+
{
|
|
14
|
+
tag: tags.keyword,
|
|
15
|
+
class: "text-[#007197] dark:text-[#bb9af7]"
|
|
16
|
+
},
|
|
17
|
+
{
|
|
18
|
+
tag: [
|
|
19
|
+
tags.name,
|
|
20
|
+
tags.deleted,
|
|
21
|
+
tags.character,
|
|
22
|
+
tags.macroName
|
|
23
|
+
],
|
|
24
|
+
class: "text-[#3760bf] dark:text-[#c0caf5]"
|
|
25
|
+
},
|
|
26
|
+
{
|
|
27
|
+
tag: [tags.propertyName],
|
|
28
|
+
class: "text-[#3760bf] dark:text-[#7aa2f7]"
|
|
29
|
+
},
|
|
30
|
+
{
|
|
31
|
+
tag: [
|
|
32
|
+
tags.processingInstruction,
|
|
33
|
+
tags.string,
|
|
34
|
+
tags.inserted,
|
|
35
|
+
tags.content,
|
|
36
|
+
tags.special(tags.string)
|
|
37
|
+
],
|
|
38
|
+
class: "text-[#587539] dark:text-[#9ece6a]"
|
|
39
|
+
},
|
|
40
|
+
{
|
|
41
|
+
tag: [tags.function(tags.variableName), tags.labelName],
|
|
42
|
+
class: "text-[#3760bf] dark:text-[#7aa2f7]"
|
|
43
|
+
},
|
|
44
|
+
{
|
|
45
|
+
tag: [
|
|
46
|
+
tags.color,
|
|
47
|
+
tags.constant(tags.name),
|
|
48
|
+
tags.standard(tags.name)
|
|
49
|
+
],
|
|
50
|
+
class: "text-[#3760bf] dark:text-[#bb9af7]"
|
|
51
|
+
},
|
|
52
|
+
{
|
|
53
|
+
tag: [tags.definition(tags.name), tags.separator],
|
|
54
|
+
class: "text-[#3760bf] dark:text-[#c0caf5]"
|
|
55
|
+
},
|
|
56
|
+
{
|
|
57
|
+
tag: [tags.className],
|
|
58
|
+
class: "text-[#3760bf] dark:text-[#c0caf5]"
|
|
59
|
+
},
|
|
60
|
+
{
|
|
61
|
+
tag: [
|
|
62
|
+
tags.number,
|
|
63
|
+
tags.changed,
|
|
64
|
+
tags.annotation,
|
|
65
|
+
tags.modifier,
|
|
66
|
+
tags.self,
|
|
67
|
+
tags.namespace
|
|
68
|
+
],
|
|
69
|
+
class: "text-[#b15c00] dark:text-[#ff9e64]"
|
|
70
|
+
},
|
|
71
|
+
{
|
|
72
|
+
tag: [tags.typeName],
|
|
73
|
+
class: "text-[#007197] dark:text-[#2ac3de]"
|
|
74
|
+
},
|
|
75
|
+
{
|
|
76
|
+
tag: [tags.operator, tags.operatorKeyword],
|
|
77
|
+
class: "text-[#007197] dark:text-[#bb9af7]"
|
|
78
|
+
},
|
|
79
|
+
{
|
|
80
|
+
tag: [
|
|
81
|
+
tags.url,
|
|
82
|
+
tags.escape,
|
|
83
|
+
tags.regexp,
|
|
84
|
+
tags.link
|
|
85
|
+
],
|
|
86
|
+
class: "text-[#587539] dark:text-[#b4f9f8]"
|
|
87
|
+
},
|
|
88
|
+
{
|
|
89
|
+
tag: [tags.meta, tags.comment],
|
|
90
|
+
class: "text-[#848cb5] dark:text-[#565f89]"
|
|
91
|
+
},
|
|
92
|
+
{
|
|
93
|
+
tag: tags.strong,
|
|
94
|
+
class: "font-bold"
|
|
95
|
+
},
|
|
96
|
+
{
|
|
97
|
+
tag: tags.emphasis,
|
|
98
|
+
class: "italic"
|
|
99
|
+
},
|
|
100
|
+
{
|
|
101
|
+
tag: tags.link,
|
|
102
|
+
class: "underline"
|
|
103
|
+
},
|
|
104
|
+
{
|
|
105
|
+
tag: tags.heading,
|
|
106
|
+
class: "text-[#b15c00] font-semibold dark:text-[#89ddff]"
|
|
107
|
+
},
|
|
108
|
+
{
|
|
109
|
+
tag: [
|
|
110
|
+
tags.atom,
|
|
111
|
+
tags.bool,
|
|
112
|
+
tags.special(tags.variableName)
|
|
113
|
+
],
|
|
114
|
+
class: "text-[#3760bf] dark:text-[#c0caf5]"
|
|
115
|
+
},
|
|
116
|
+
{
|
|
117
|
+
tag: tags.invalid,
|
|
118
|
+
class: "text-[#f52a65] dark:text-[#ff5370]"
|
|
119
|
+
},
|
|
120
|
+
{
|
|
121
|
+
tag: tags.strikethrough,
|
|
122
|
+
class: "line-through"
|
|
123
|
+
}
|
|
124
|
+
]);
|
|
125
|
+
return classHighlighter;
|
|
126
|
+
};
|
|
127
|
+
})();
|
|
128
|
+
function syntaxFolding(tree, text, editorState, foldProp, start, end) {
|
|
129
|
+
if (tree.length < end) return null;
|
|
130
|
+
const stack = tree.resolveInner(end, 1);
|
|
131
|
+
let found = null;
|
|
132
|
+
for (let cur = stack; cur; cur = cur.parent) {
|
|
133
|
+
if (cur.to <= end || cur.from > end) continue;
|
|
134
|
+
if (found && cur.from < start) break;
|
|
135
|
+
const prop = cur.type.prop(foldProp);
|
|
136
|
+
if (prop && (cur.to < tree.length - 50 || tree.length === text.length || !isUnfinished(cur))) {
|
|
137
|
+
const value = prop(cur, editorState);
|
|
138
|
+
if (value && value.from <= end && value.from >= start && value.to > end) found = value;
|
|
139
|
+
}
|
|
140
|
+
}
|
|
141
|
+
return found;
|
|
142
|
+
}
|
|
143
|
+
var EMPTY_FILE = {
|
|
144
|
+
file: [],
|
|
145
|
+
code: ""
|
|
146
|
+
};
|
|
147
|
+
var yieldToUI = () => new Promise((resolve) => setTimeout(resolve, 0));
|
|
148
|
+
var EditorAbortError = class extends Error {
|
|
149
|
+
constructor() {
|
|
150
|
+
super("Aborted");
|
|
151
|
+
this.name = "AbortError";
|
|
152
|
+
}
|
|
153
|
+
};
|
|
154
|
+
async function parseNonBlocking(pkg, code, options) {
|
|
155
|
+
const parse = "language" in pkg ? pkg.language.parser.startParse(code) : pkg.parser.startParse(code);
|
|
156
|
+
let tree = null;
|
|
157
|
+
let now = performance.now();
|
|
158
|
+
for (;;) {
|
|
159
|
+
tree = parse.advance();
|
|
160
|
+
if (tree) break;
|
|
161
|
+
if (options?.signal?.aborted) throw new EditorAbortError();
|
|
162
|
+
if (performance.now() - now > 16) {
|
|
163
|
+
await yieldToUI();
|
|
164
|
+
now = performance.now();
|
|
165
|
+
}
|
|
166
|
+
}
|
|
167
|
+
return tree;
|
|
168
|
+
}
|
|
169
|
+
var parseNonBlockingQueue = Promise.resolve(null);
|
|
170
|
+
function queueParse(pkg, code, options) {
|
|
171
|
+
const p = parseNonBlockingQueue.then(() => parseNonBlocking(pkg, code, options));
|
|
172
|
+
parseNonBlockingQueue = p.catch(() => null);
|
|
173
|
+
return p;
|
|
174
|
+
}
|
|
175
|
+
function convertFile(code) {
|
|
176
|
+
if (!code) return EMPTY_FILE;
|
|
177
|
+
const file = [];
|
|
178
|
+
let curr = 0;
|
|
179
|
+
for (const line of code.split("\n")) {
|
|
180
|
+
file.push({
|
|
181
|
+
line: [{
|
|
182
|
+
from: curr,
|
|
183
|
+
to: curr + line.length,
|
|
184
|
+
classes: ""
|
|
185
|
+
}],
|
|
186
|
+
n: file.length + 1,
|
|
187
|
+
fold: null
|
|
188
|
+
});
|
|
189
|
+
curr += line.length + 1;
|
|
190
|
+
}
|
|
191
|
+
return {
|
|
192
|
+
file,
|
|
193
|
+
code
|
|
194
|
+
};
|
|
195
|
+
}
|
|
196
|
+
async function parseFile(cm, language, code, options) {
|
|
197
|
+
if (!code) return EMPTY_FILE;
|
|
198
|
+
const { lezerHighlighTree: highlightTree, EditorState, foldNodeProp } = cm;
|
|
199
|
+
const tree = await queueParse(await LANGUAGES[language], code, options);
|
|
200
|
+
const editorState = EditorState.create({ doc: code });
|
|
201
|
+
const file = [];
|
|
202
|
+
let line = [];
|
|
203
|
+
let pos = 0;
|
|
204
|
+
const pushToken = (from, to, classes) => {
|
|
205
|
+
line.push({
|
|
206
|
+
from: pos + from,
|
|
207
|
+
to: pos + to,
|
|
208
|
+
classes
|
|
209
|
+
});
|
|
210
|
+
};
|
|
211
|
+
const pushBreak = () => {
|
|
212
|
+
let fold = null;
|
|
213
|
+
if (line.length > 0) {
|
|
214
|
+
const startLine = line.at(0)?.from ?? 0;
|
|
215
|
+
let endLine = (line.at(-1)?.to ?? startLine) + 1;
|
|
216
|
+
endLine = Math.min(endLine, code.length);
|
|
217
|
+
fold = syntaxFolding(tree, code, editorState, foldNodeProp, startLine, endLine);
|
|
218
|
+
}
|
|
219
|
+
file.push({
|
|
220
|
+
line,
|
|
221
|
+
n: file.length + 1,
|
|
222
|
+
fold
|
|
223
|
+
});
|
|
224
|
+
line = [];
|
|
225
|
+
};
|
|
226
|
+
function writeTo(p, classes) {
|
|
227
|
+
if (p <= pos) return;
|
|
228
|
+
for (let text = code.slice(pos, p), i = 0;;) {
|
|
229
|
+
const nextBreak = text.indexOf("\n", i);
|
|
230
|
+
const upto = nextBreak < 0 ? text.length : nextBreak;
|
|
231
|
+
if (upto > i) pushToken(i, upto, classes);
|
|
232
|
+
if (nextBreak < 0) break;
|
|
233
|
+
pushBreak();
|
|
234
|
+
i = nextBreak + 1;
|
|
235
|
+
}
|
|
236
|
+
pos = p;
|
|
237
|
+
}
|
|
238
|
+
highlightTree(tree, getOrCreateClassHighlighter(cm), (from, to, classes) => {
|
|
239
|
+
writeTo(from, "");
|
|
240
|
+
writeTo(to, classes);
|
|
241
|
+
}, 0, code.length);
|
|
242
|
+
writeTo(code.length, "");
|
|
243
|
+
pushBreak();
|
|
244
|
+
return {
|
|
245
|
+
file,
|
|
246
|
+
code
|
|
247
|
+
};
|
|
248
|
+
}
|
|
249
|
+
function getVisibleLines(data, foldIdx) {
|
|
250
|
+
const ranges = [];
|
|
251
|
+
for (const index of foldIdx) {
|
|
252
|
+
const fold = data.file.at(index - 1)?.fold;
|
|
253
|
+
if (!fold) continue;
|
|
254
|
+
ranges.push({
|
|
255
|
+
from: fold.from,
|
|
256
|
+
to: fold.to
|
|
257
|
+
});
|
|
258
|
+
}
|
|
259
|
+
const visibleLines = [];
|
|
260
|
+
let pos = 0;
|
|
261
|
+
data.file.forEach((item) => {
|
|
262
|
+
const start = item.line.at(0)?.from ?? pos;
|
|
263
|
+
const end = item.line.at(-1)?.to ?? start;
|
|
264
|
+
if (!ranges.some((range) => start >= range.from && end <= range.to)) visibleLines.push(item);
|
|
265
|
+
pos = end + 1;
|
|
266
|
+
});
|
|
267
|
+
if (visibleLines.length === 0 && data.file.length > 0) visibleLines.push(data.file[0]);
|
|
268
|
+
return visibleLines;
|
|
269
|
+
}
|
|
270
|
+
//#endregion
|
|
271
|
+
export { EMPTY_FILE, convertFile, getVisibleLines, parseFile };
|
|
272
|
+
|
|
273
|
+
//# sourceMappingURL=CodeLite.utils.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"CodeLite.utils.js","names":[],"sources":["../../../src/components/Code/CodeLite.utils.tsx"],"sourcesContent":["import type {\n Language,\n LanguageSupport,\n foldNodeProp,\n} from '@codemirror/language';\nimport type { EditorState } from '@codemirror/state';\nimport type { SyntaxNode, Tree } from '@lezer/common';\nimport type { Highlighter } from '@lezer/highlight';\n\nimport type { CMBundle } from '../../utils/lazy-codemirror-loader';\nimport { LANGUAGES } from './languages/languages';\n\nexport type FoldRange = { from: number; to: number };\n\nexport interface ParsedFile {\n file: {\n line: { from: number; to: number; classes: string }[];\n n: number;\n fold: FoldRange | null;\n }[];\n code: string;\n}\n\nfunction isUnfinished(node: SyntaxNode): boolean {\n const ch = node.lastChild;\n return !!(ch && ch.to === node.to && ch.type.isError);\n}\n\nconst getOrCreateClassHighlighter = (() => {\n let classHighlighter: Highlighter | null = null;\n\n return (cm: CMBundle) => {\n if (classHighlighter != null) return classHighlighter;\n\n const { lezerTagHighlighter: tagHighlighter, lezerHighlightTags: tags } =\n cm;\n\n // Tailwind-friendly version of codemirror-theme-tokyo-night\n classHighlighter = tagHighlighter([\n {\n tag: tags.keyword,\n class: 'text-[#007197] dark:text-[#bb9af7]',\n },\n {\n tag: [tags.name, tags.deleted, tags.character, tags.macroName],\n class: 'text-[#3760bf] dark:text-[#c0caf5]',\n },\n {\n tag: [tags.propertyName],\n class: 'text-[#3760bf] dark:text-[#7aa2f7]',\n },\n {\n tag: [\n tags.processingInstruction,\n tags.string,\n tags.inserted,\n tags.content,\n tags.special(tags.string),\n ],\n class: 'text-[#587539] dark:text-[#9ece6a]',\n },\n {\n tag: [tags.function(tags.variableName), tags.labelName],\n class: 'text-[#3760bf] dark:text-[#7aa2f7]',\n },\n {\n tag: [tags.color, tags.constant(tags.name), tags.standard(tags.name)],\n class: 'text-[#3760bf] dark:text-[#bb9af7]',\n },\n {\n tag: [tags.definition(tags.name), tags.separator],\n class: 'text-[#3760bf] dark:text-[#c0caf5]',\n },\n {\n tag: [tags.className],\n class: 'text-[#3760bf] dark:text-[#c0caf5]',\n },\n {\n tag: [\n tags.number,\n tags.changed,\n tags.annotation,\n tags.modifier,\n tags.self,\n tags.namespace,\n ],\n class: 'text-[#b15c00] dark:text-[#ff9e64]',\n },\n {\n tag: [tags.typeName],\n class: 'text-[#007197] dark:text-[#2ac3de]',\n },\n {\n tag: [tags.operator, tags.operatorKeyword],\n class: 'text-[#007197] dark:text-[#bb9af7]',\n },\n {\n tag: [tags.url, tags.escape, tags.regexp, tags.link],\n class: 'text-[#587539] dark:text-[#b4f9f8]',\n },\n {\n tag: [tags.meta, tags.comment],\n class: 'text-[#848cb5] dark:text-[#565f89]',\n },\n {\n tag: tags.strong,\n class: 'font-bold',\n },\n {\n tag: tags.emphasis,\n class: 'italic',\n },\n {\n tag: tags.link,\n class: 'underline',\n },\n {\n tag: tags.heading,\n class: 'text-[#b15c00] font-semibold dark:text-[#89ddff]',\n },\n {\n tag: [tags.atom, tags.bool, tags.special(tags.variableName)],\n class: 'text-[#3760bf] dark:text-[#c0caf5]',\n },\n {\n tag: tags.invalid,\n class: 'text-[#f52a65] dark:text-[#ff5370]',\n },\n {\n tag: tags.strikethrough,\n class: 'line-through',\n },\n ]);\n\n return classHighlighter;\n };\n})();\n\nfunction syntaxFolding(\n tree: Tree,\n text: string,\n editorState: EditorState,\n foldProp: typeof foldNodeProp,\n start: number,\n end: number\n): FoldRange | null {\n if (tree.length < end) return null;\n\n const stack = tree.resolveInner(end, 1);\n let found: FoldRange | null = null;\n\n for (let cur: SyntaxNode | null = stack; cur; cur = cur.parent) {\n if (cur.to <= end || cur.from > end) continue;\n if (found && cur.from < start) break;\n\n const prop = cur.type.prop(foldProp) as (\n node: SyntaxNode,\n state: EditorState\n ) => FoldRange | null;\n\n if (\n prop &&\n (cur.to < tree.length - 50 ||\n tree.length === text.length ||\n !isUnfinished(cur))\n ) {\n const value = prop(cur, editorState);\n if (value && value.from <= end && value.from >= start && value.to > end) {\n found = value;\n }\n }\n }\n\n return found;\n}\n\nexport const EMPTY_FILE: ParsedFile = { file: [], code: '' };\n\nconst yieldToUI = () => new Promise((resolve) => setTimeout(resolve, 0));\n\nclass EditorAbortError extends Error {\n constructor() {\n super('Aborted');\n this.name = 'AbortError';\n }\n}\n\nasync function parseNonBlocking(\n pkg: LanguageSupport | Language,\n code: string,\n options?: { signal?: AbortSignal }\n) {\n const parse =\n 'language' in pkg\n ? pkg.language.parser.startParse(code)\n : pkg.parser.startParse(code);\n\n let tree: Tree | null = null;\n let now = performance.now();\n for (;;) {\n tree = parse.advance();\n if (tree) break;\n\n if (options?.signal?.aborted) throw new EditorAbortError();\n if (performance.now() - now > 16) {\n await yieldToUI();\n now = performance.now();\n }\n }\n\n return tree;\n}\n\n// Serialize parses so CodeMirror parser state is never advanced concurrently.\nlet parseNonBlockingQueue: Promise<Tree> = Promise.resolve(null!);\n\nfunction queueParse(\n pkg: LanguageSupport | Language,\n code: string,\n options?: {\n signal?: AbortSignal;\n }\n) {\n const p = parseNonBlockingQueue.then(() =>\n parseNonBlocking(pkg, code, options)\n );\n // Keep the queue usable after a failed parse.\n parseNonBlockingQueue = p.catch(() => null!);\n return p;\n}\n\nexport function convertFile(code: string | undefined): ParsedFile {\n if (!code) return EMPTY_FILE;\n\n const file: ParsedFile['file'] = [];\n let curr = 0;\n for (const line of code.split('\\n')) {\n file.push({\n line: [{ from: curr, to: curr + line.length, classes: '' }],\n n: file.length + 1,\n fold: null,\n });\n\n curr += line.length + 1;\n }\n\n return { file, code };\n}\n\nexport async function parseFile(\n cm: CMBundle,\n language: keyof typeof LANGUAGES,\n code: string | undefined,\n options?: {\n signal?: AbortSignal;\n }\n): Promise<ParsedFile> {\n if (!code) return EMPTY_FILE;\n\n const { lezerHighlighTree: highlightTree, EditorState, foldNodeProp } = cm;\n // TODO: Make language loading, queueing, and highlighting cancellable; the\n // signal currently only interrupts Lezer parsing cooperatively.\n const pkg = await LANGUAGES[language];\n const tree = await queueParse(pkg, code, options);\n\n const editorState = EditorState.create({ doc: code });\n type Line = { from: number; to: number; classes: string }[];\n const file: { line: Line; n: number; fold: FoldRange | null }[] = [];\n let line: Line = [];\n\n let pos = 0;\n\n const pushToken = (from: number, to: number, classes: string) => {\n line.push({ from: pos + from, to: pos + to, classes });\n };\n const pushBreak = () => {\n let fold: FoldRange | null = null;\n if (line.length > 0) {\n const startLine = line.at(0)?.from ?? 0;\n let endLine = (line.at(-1)?.to ?? startLine) + 1;\n endLine = Math.min(endLine, code.length);\n fold = syntaxFolding(\n tree,\n code,\n editorState,\n foldNodeProp,\n startLine,\n endLine\n );\n }\n\n file.push({ line, n: file.length + 1, fold });\n line = [];\n };\n\n function writeTo(p: number, classes: string) {\n if (p <= pos) return;\n for (let text = code!.slice(pos, p), i = 0; ; ) {\n const nextBreak = text.indexOf('\\n', i);\n const upto = nextBreak < 0 ? text.length : nextBreak;\n if (upto > i) pushToken(i, upto, classes);\n if (nextBreak < 0) break;\n pushBreak();\n i = nextBreak + 1;\n }\n pos = p;\n }\n\n highlightTree(\n tree,\n getOrCreateClassHighlighter(cm),\n (from, to, classes) => {\n writeTo(from, '');\n writeTo(to, classes);\n },\n 0,\n code.length\n );\n writeTo(code.length, '');\n pushBreak();\n\n return { file, code };\n}\n\nexport function getVisibleLines(\n data: ParsedFile,\n foldIdx: Set<number>\n): ParsedFile['file'] {\n const ranges: FoldRange[] = [];\n\n for (const index of foldIdx) {\n const fold = data.file.at(index - 1)?.fold;\n if (!fold) continue;\n ranges.push({ from: fold.from, to: fold.to });\n }\n\n const visibleLines: ParsedFile['file'] = [];\n\n let pos = 0;\n data.file.forEach((item) => {\n const start = item.line.at(0)?.from ?? pos;\n const end = item.line.at(-1)?.to ?? start;\n\n const isRangeHit = ranges.some(\n (range) => start >= range.from && end <= range.to\n );\n\n if (!isRangeHit) visibleLines.push(item);\n pos = end + 1;\n });\n\n // Make sure that we don't hide everything\n if (visibleLines.length === 0 && data.file.length > 0) {\n visibleLines.push(data.file[0]);\n }\n\n return visibleLines;\n}\n"],"mappings":"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"}
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
import type { DecorationSet, ViewUpdate } from '@codemirror/view';
|
|
2
|
+
import type { CMBundle } from '../../utils/lazy-codemirror-loader.js';
|
|
3
|
+
export declare function getImageReplacerExtensions(cm: CMBundle): {
|
|
4
|
+
decorationStateField: import("@codemirror/state").StateField<Map<any, any>>;
|
|
5
|
+
imageReplacerPlugin: import("@codemirror/view").ViewPlugin<{
|
|
6
|
+
decorations: DecorationSet;
|
|
7
|
+
update(update: ViewUpdate): void;
|
|
8
|
+
}, undefined>;
|
|
9
|
+
};
|