@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,140 @@
|
|
|
1
|
+
import { cn } from "../../utils/cn.js";
|
|
2
|
+
import zIndices from "../../utils/zIndices.js";
|
|
3
|
+
import { useZIndex } from "../../utils/useZIndex.js";
|
|
4
|
+
import { Banner } from "../Banner/Banner.js";
|
|
5
|
+
import "../Banner/index.js";
|
|
6
|
+
import { useColorScheme } from "../../hooks/useColorScheme.js";
|
|
7
|
+
import { Button } from "../Button/Button.js";
|
|
8
|
+
import { getLanguageExtension, getSyntaxTheme, useEditorTheme } from "./Code.utils.js";
|
|
9
|
+
import { useCodeMirror } from "../../utils/useCodeMirror.js";
|
|
10
|
+
import "./constants.js";
|
|
11
|
+
import { getImageReplacerExtensions } from "./ImageReplacerExtension.js";
|
|
12
|
+
import { getNonce } from "../../utils/csp-nonce.js";
|
|
13
|
+
import { CopyButton } from "../CopyButton/CopyButton.js";
|
|
14
|
+
import { ErrorBoundary } from "../ErrorBoundary.js";
|
|
15
|
+
import { PlainTextEditor } from "../PlainTextEditor/index.js";
|
|
16
|
+
import { useMemo, useState } from "react";
|
|
17
|
+
import { jsx, jsxs } from "react/jsx-runtime";
|
|
18
|
+
//#region packages/components/src/components/Code/index.tsx
|
|
19
|
+
/**
|
|
20
|
+
* Renders syntax-highlighted code with optional editing and copy support.
|
|
21
|
+
*
|
|
22
|
+
* Import directly from `@langchain/macaw-components/Code` so the CodeMirror
|
|
23
|
+
* dependency is only loaded by surfaces that use it.
|
|
24
|
+
*/
|
|
25
|
+
var Code = ({ value, readOnly, onChange, autoFocus, placeholder, language, extensions, converterExtensions, height, maxHeight, omitMaxHeight, width, fontSize, onCreateEditor, variant = "full", testId, showCopyButton }) => {
|
|
26
|
+
const cm = useCodeMirror();
|
|
27
|
+
const { isDarkMode } = useColorScheme();
|
|
28
|
+
const copyButtonZIndex = useZIndex(zIndices.floatingBar);
|
|
29
|
+
const [ignoreWarning, setIgnoreWarning] = useState(false);
|
|
30
|
+
const lineCount = value?.split("\n").length ?? 0;
|
|
31
|
+
const imageReplacerExtensions = useMemo(() => cm ? getImageReplacerExtensions(cm) : null, [cm]);
|
|
32
|
+
const editorTheme = useEditorTheme(cm, { variant });
|
|
33
|
+
const langExt = useMemo(() => cm ? getLanguageExtension(cm, language) : null, [cm, language]);
|
|
34
|
+
const syntaxTheme = useMemo(() => cm ? getSyntaxTheme(cm, isDarkMode) : null, [cm, isDarkMode]);
|
|
35
|
+
const nonce = getNonce();
|
|
36
|
+
const mExtensions = useMemo(() => {
|
|
37
|
+
if (!cm || !imageReplacerExtensions || !langExt || !editorTheme) return [];
|
|
38
|
+
const { keymap, defaultKeymap, EditorView } = cm;
|
|
39
|
+
const { decorationStateField, imageReplacerPlugin } = imageReplacerExtensions;
|
|
40
|
+
return [
|
|
41
|
+
keymap.of([{
|
|
42
|
+
key: "Mod-Enter",
|
|
43
|
+
run: () => true
|
|
44
|
+
}, ...defaultKeymap]),
|
|
45
|
+
langExt.language,
|
|
46
|
+
...extensions ?? [],
|
|
47
|
+
...lineCount <= 500 ? converterExtensions ?? langExt.extensions ?? [] : [],
|
|
48
|
+
imageReplacerPlugin,
|
|
49
|
+
decorationStateField,
|
|
50
|
+
EditorView.lineWrapping,
|
|
51
|
+
editorTheme,
|
|
52
|
+
...readOnly ? [EditorView.editable.of(false)] : [],
|
|
53
|
+
...nonce ? [EditorView.cspNonce.of(nonce)] : []
|
|
54
|
+
];
|
|
55
|
+
}, [
|
|
56
|
+
cm,
|
|
57
|
+
imageReplacerExtensions,
|
|
58
|
+
langExt,
|
|
59
|
+
editorTheme,
|
|
60
|
+
extensions,
|
|
61
|
+
converterExtensions,
|
|
62
|
+
lineCount,
|
|
63
|
+
readOnly,
|
|
64
|
+
nonce
|
|
65
|
+
]);
|
|
66
|
+
if (value == null) return null;
|
|
67
|
+
if (lineCount > 5e3 && !ignoreWarning) return /* @__PURE__ */ jsx(Banner, {
|
|
68
|
+
intent: "warning",
|
|
69
|
+
action: /* @__PURE__ */ jsx(Button, {
|
|
70
|
+
variant: "underlined",
|
|
71
|
+
color: "secondary",
|
|
72
|
+
size: "sm",
|
|
73
|
+
onClick: () => setIgnoreWarning(true),
|
|
74
|
+
children: "Open anyway"
|
|
75
|
+
}),
|
|
76
|
+
children: "This content might be too long to display in the editor."
|
|
77
|
+
});
|
|
78
|
+
if (!cm || !syntaxTheme) return /* @__PURE__ */ jsx("div", {
|
|
79
|
+
"data-testid": testId,
|
|
80
|
+
className: cn("group relative text-xs", height && "h-full"),
|
|
81
|
+
children: /* @__PURE__ */ jsx(PlainTextEditor, {
|
|
82
|
+
value,
|
|
83
|
+
readOnly: true,
|
|
84
|
+
placeholder,
|
|
85
|
+
className: cn("font-mono text-xs", height && "h-full overflow-auto", maxHeight && !omitMaxHeight && `max-h-[${maxHeight}]`)
|
|
86
|
+
})
|
|
87
|
+
});
|
|
88
|
+
const { CodeMirror } = cm;
|
|
89
|
+
return /* @__PURE__ */ jsxs("div", {
|
|
90
|
+
"data-testid": testId,
|
|
91
|
+
className: cn("group relative text-xs", height && "h-full"),
|
|
92
|
+
children: [/* @__PURE__ */ jsx(ErrorBoundary, {
|
|
93
|
+
fallback: () => /* @__PURE__ */ jsx("div", { children: "Error showing code" }),
|
|
94
|
+
children: /* @__PURE__ */ jsx(CodeMirror, {
|
|
95
|
+
value,
|
|
96
|
+
readOnly,
|
|
97
|
+
autoFocus,
|
|
98
|
+
placeholder,
|
|
99
|
+
height,
|
|
100
|
+
maxHeight: omitMaxHeight ? void 0 : maxHeight ?? "50vh",
|
|
101
|
+
width,
|
|
102
|
+
style: {
|
|
103
|
+
fontSize,
|
|
104
|
+
backgroundColor: "var(--bg-surface-level-2)",
|
|
105
|
+
borderRadius: "8px",
|
|
106
|
+
cursor: readOnly ? "default" : "text",
|
|
107
|
+
...height ? { height } : {},
|
|
108
|
+
...width ? { width } : {}
|
|
109
|
+
},
|
|
110
|
+
extensions: mExtensions,
|
|
111
|
+
onCreateEditor,
|
|
112
|
+
onChange: (code) => {
|
|
113
|
+
if (!readOnly) onChange?.(code);
|
|
114
|
+
},
|
|
115
|
+
theme: syntaxTheme,
|
|
116
|
+
basicSetup: {
|
|
117
|
+
highlightActiveLine: false,
|
|
118
|
+
highlightActiveLineGutter: false,
|
|
119
|
+
defaultKeymap: false,
|
|
120
|
+
...variant === "plain" && {
|
|
121
|
+
lineNumbers: false,
|
|
122
|
+
highlightSelectionMatches: false
|
|
123
|
+
}
|
|
124
|
+
}
|
|
125
|
+
})
|
|
126
|
+
}), showCopyButton && value && /* @__PURE__ */ jsx("div", {
|
|
127
|
+
onMouseDown: (e) => e.preventDefault(),
|
|
128
|
+
className: "absolute right-1 top-1 opacity-0 transition-opacity duration-300 group-hover:opacity-100",
|
|
129
|
+
style: { zIndex: copyButtonZIndex },
|
|
130
|
+
children: /* @__PURE__ */ jsx(CopyButton, {
|
|
131
|
+
copy: value,
|
|
132
|
+
variant: "icon"
|
|
133
|
+
})
|
|
134
|
+
})]
|
|
135
|
+
});
|
|
136
|
+
};
|
|
137
|
+
//#endregion
|
|
138
|
+
export { Code };
|
|
139
|
+
|
|
140
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","names":[],"sources":["../../../src/components/Code/index.tsx"],"sourcesContent":["import { useMemo, useState } from 'react';\n\nimport type { Extension } from '@codemirror/state';\nimport type { EditorView } from '@codemirror/view';\n\nimport { useColorScheme } from '../../hooks/useColorScheme';\nimport { cn } from '../../utils/cn';\nimport { getNonce } from '../../utils/csp-nonce';\nimport { useCodeMirror } from '../../utils/useCodeMirror';\nimport { useZIndex } from '../../utils/useZIndex';\nimport zIndices from '../../utils/zIndices';\nimport { Banner } from '../Banner';\nimport { Button } from '../Button';\nimport { CopyButton } from '../CopyButton';\nimport { ErrorBoundary } from '../ErrorBoundary';\nimport { PlainTextEditor } from '../PlainTextEditor';\nimport {\n getLanguageExtension,\n getSyntaxTheme,\n useEditorTheme,\n} from './Code.utils';\nimport { MAX_CODE_LENGTH } from './constants';\nimport { getImageReplacerExtensions } from './ImageReplacerExtension';\nimport type { CodeLanguageType } from './types';\n\n/** Props for the syntax-highlighted CodeMirror block. */\nexport interface CodeProps {\n language: CodeLanguageType;\n extensions?: Extension[];\n value: string | undefined;\n onChange?: (code: string) => void;\n readOnly?: boolean;\n autoFocus?: boolean;\n height?: string;\n maxHeight?: string;\n omitMaxHeight?: boolean;\n width?: string;\n fontSize?: string;\n placeholder?: string;\n showCopyButton?: boolean;\n testId?: string;\n variant?: 'plain' | 'full';\n onCreateEditor?: (view: EditorView) => void;\n converterExtensions?: Extension[];\n}\n\n/**\n * Renders syntax-highlighted code with optional editing and copy support.\n *\n * Import directly from `@langchain/macaw-components/Code` so the CodeMirror\n * dependency is only loaded by surfaces that use it.\n */\nexport const Code = ({\n value,\n readOnly,\n onChange,\n autoFocus,\n placeholder,\n language,\n extensions,\n converterExtensions,\n height,\n maxHeight,\n omitMaxHeight,\n width,\n fontSize,\n onCreateEditor,\n variant = 'full',\n testId,\n showCopyButton,\n}: CodeProps) => {\n const cm = useCodeMirror();\n const { isDarkMode } = useColorScheme();\n const copyButtonZIndex = useZIndex(zIndices.floatingBar);\n\n const [ignoreWarning, setIgnoreWarning] = useState(false);\n\n const lineCount = value?.split('\\n').length ?? 0;\n\n // Stable CM-derived values — memoized so StateField/ViewPlugin instances are\n // created once and not recreated on every render (which resets editor state).\n const imageReplacerExtensions = useMemo(\n () => (cm ? getImageReplacerExtensions(cm) : null),\n [cm]\n );\n const editorTheme = useEditorTheme(cm, { variant });\n const langExt = useMemo(\n () => (cm ? getLanguageExtension(cm, language) : null),\n [cm, language]\n );\n const syntaxTheme = useMemo(\n () => (cm ? getSyntaxTheme(cm, isDarkMode) : null),\n [cm, isDarkMode]\n );\n\n const nonce = getNonce();\n\n const mExtensions = useMemo(() => {\n if (!cm || !imageReplacerExtensions || !langExt || !editorTheme) return [];\n const { keymap, defaultKeymap, EditorView } = cm;\n const { decorationStateField, imageReplacerPlugin } =\n imageReplacerExtensions;\n return [\n keymap.of([{ key: 'Mod-Enter', run: () => true }, ...defaultKeymap]),\n langExt.language,\n ...(extensions ?? []),\n // YAML folding blocks rendering for large files, so cap it at 500 lines.\n ...(lineCount <= 500\n ? (converterExtensions ?? langExt.extensions ?? [])\n : []),\n imageReplacerPlugin,\n decorationStateField,\n EditorView.lineWrapping,\n editorTheme,\n ...(readOnly ? [EditorView.editable.of(false)] : []),\n ...(nonce ? [EditorView.cspNonce.of(nonce)] : []),\n ];\n // extensions/converterExtensions are caller-provided arrays. Include them\n // directly so changes propagate.\n }, [\n cm,\n imageReplacerExtensions,\n langExt,\n editorTheme,\n extensions,\n converterExtensions,\n lineCount,\n readOnly,\n nonce,\n ]);\n\n if (value == null) return null;\n\n // Avoid mounting CodeMirror by default when style recomputation could block rendering.\n if (lineCount > MAX_CODE_LENGTH && !ignoreWarning)\n return (\n <Banner\n intent=\"warning\"\n action={\n <Button\n variant=\"underlined\"\n color=\"secondary\"\n size=\"sm\"\n onClick={() => setIgnoreWarning(true)}\n >\n Open anyway\n </Button>\n }\n >\n This content might be too long to display in the editor.\n </Banner>\n );\n\n if (!cm || !syntaxTheme) {\n return (\n <div\n data-testid={testId}\n className={cn('group relative text-xs', height && 'h-full')}\n >\n <PlainTextEditor\n value={value}\n readOnly={true}\n placeholder={placeholder}\n className={cn(\n 'font-mono text-xs',\n height && 'h-full overflow-auto',\n maxHeight && !omitMaxHeight && `max-h-[${maxHeight}]`\n )}\n />\n </div>\n );\n }\n\n const { CodeMirror } = cm;\n\n return (\n <div\n data-testid={testId}\n className={cn('group relative text-xs', height && 'h-full')}\n >\n <ErrorBoundary fallback={() => <div>Error showing code</div>}>\n <CodeMirror\n value={value}\n readOnly={readOnly}\n autoFocus={autoFocus}\n placeholder={placeholder}\n height={height}\n maxHeight={omitMaxHeight ? undefined : (maxHeight ?? '50vh')}\n width={width}\n style={{\n fontSize,\n backgroundColor: 'var(--bg-surface-level-2)',\n borderRadius: '8px',\n cursor: readOnly ? 'default' : 'text',\n ...(height ? { height } : {}),\n ...(width ? { width } : {}),\n }}\n extensions={mExtensions}\n onCreateEditor={onCreateEditor}\n onChange={(code) => {\n if (!readOnly) {\n onChange?.(code);\n }\n }}\n theme={syntaxTheme}\n basicSetup={{\n highlightActiveLine: false,\n highlightActiveLineGutter: false,\n defaultKeymap: false,\n ...(variant === 'plain' && {\n lineNumbers: false,\n highlightSelectionMatches: false,\n }),\n }}\n />\n </ErrorBoundary>\n {showCopyButton && value && (\n <div\n onMouseDown={(e) => e.preventDefault()}\n className=\"absolute right-1 top-1 opacity-0 transition-opacity duration-300 group-hover:opacity-100\"\n style={{ zIndex: copyButtonZIndex }}\n >\n <CopyButton copy={value} variant=\"icon\" />\n </div>\n )}\n </div>\n );\n};\n"],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export declare const jsonLanguage: import("@codemirror/language").LanguageSupport;
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"json.js","names":[],"sources":["../../../../src/components/Code/languages/json.tsx"],"sourcesContent":["import { json as jsonFn } from '@codemirror/lang-json';\n\nexport const jsonLanguage = jsonFn();\n"],"mappings":";;AAEA,IAAa,eAAe,KAAO"}
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
export declare const LANGUAGES: {
|
|
2
|
+
readonly typescript: Promise<import("@codemirror/language").LanguageSupport>;
|
|
3
|
+
readonly python: Promise<import("@codemirror/language").LanguageSupport>;
|
|
4
|
+
readonly shell: Promise<import("@codemirror/language").StreamLanguage<import("./shell.js").ShellState>>;
|
|
5
|
+
readonly yaml: Promise<import("@codemirror/language").LanguageSupport>;
|
|
6
|
+
readonly json: Promise<import("@codemirror/language").LanguageSupport>;
|
|
7
|
+
};
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
//#region packages/components/src/components/Code/languages/languages.tsx
|
|
2
|
+
var LANGUAGES = {
|
|
3
|
+
typescript: import("./typescript.js").then((module) => module.typescriptLanguage),
|
|
4
|
+
python: import("./python.js").then((module) => module.pythonLanguage),
|
|
5
|
+
shell: import("./shell.js").then((module) => module.shellLanguage),
|
|
6
|
+
yaml: import("./yaml.js").then((module) => module.yamlLanguage),
|
|
7
|
+
json: import("./json.js").then((module) => module.jsonLanguage)
|
|
8
|
+
};
|
|
9
|
+
//#endregion
|
|
10
|
+
export { LANGUAGES };
|
|
11
|
+
|
|
12
|
+
//# sourceMappingURL=languages.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"languages.js","names":[],"sources":["../../../../src/components/Code/languages/languages.tsx"],"sourcesContent":["export const LANGUAGES = {\n typescript: import('./typescript').then(\n (module) => module.typescriptLanguage\n ),\n python: import('./python').then((module) => module.pythonLanguage),\n shell: import('./shell').then((module) => module.shellLanguage),\n yaml: import('./yaml').then((module) => module.yamlLanguage),\n json: import('./json').then((module) => module.jsonLanguage),\n} as const;\n"],"mappings":";AAAA,IAAa,YAAY;CACvB,YAAY,OAAO,kBAAe,CAAC,MAChC,WAAW,OAAO,kBACrB;CACA,QAAQ,OAAO,cAAW,CAAC,MAAM,WAAW,OAAO,cAAc;CACjE,OAAO,OAAO,aAAU,CAAC,MAAM,WAAW,OAAO,aAAa;CAC9D,MAAM,OAAO,YAAS,CAAC,MAAM,WAAW,OAAO,YAAY;CAC3D,MAAM,OAAO,YAAS,CAAC,MAAM,WAAW,OAAO,YAAY;AAC7D"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export declare const pythonLanguage: import("@codemirror/language").LanguageSupport;
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"python.js","names":[],"sources":["../../../../src/components/Code/languages/python.tsx"],"sourcesContent":["import { python as pythonFn } from '@codemirror/lang-python';\n\nexport const pythonLanguage = pythonFn();\n"],"mappings":";;AAEA,IAAa,iBAAiB,OAAS"}
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
import { StreamLanguage, type StringStream } from '@codemirror/language';
|
|
2
|
+
export type ShellState = {
|
|
3
|
+
tokens: Tokenizer[];
|
|
4
|
+
};
|
|
5
|
+
type Tokenizer = (stream: StringStream, state: ShellState) => string | null;
|
|
6
|
+
export declare const shellLanguage: StreamLanguage<ShellState>;
|
|
7
|
+
export {};
|
|
@@ -0,0 +1,241 @@
|
|
|
1
|
+
import { StreamLanguage } from "@codemirror/language";
|
|
2
|
+
//#region packages/components/src/components/Code/languages/shell.tsx
|
|
3
|
+
var words = {};
|
|
4
|
+
function define(style, dict) {
|
|
5
|
+
for (let i = 0; i < dict.length; i++) words[dict[i]] = style;
|
|
6
|
+
}
|
|
7
|
+
var commonAtoms = ["true", "false"];
|
|
8
|
+
var commonKeywords = [
|
|
9
|
+
"if",
|
|
10
|
+
"then",
|
|
11
|
+
"do",
|
|
12
|
+
"else",
|
|
13
|
+
"elif",
|
|
14
|
+
"while",
|
|
15
|
+
"until",
|
|
16
|
+
"for",
|
|
17
|
+
"in",
|
|
18
|
+
"esac",
|
|
19
|
+
"fi",
|
|
20
|
+
"fin",
|
|
21
|
+
"fil",
|
|
22
|
+
"done",
|
|
23
|
+
"exit",
|
|
24
|
+
"set",
|
|
25
|
+
"unset",
|
|
26
|
+
"export",
|
|
27
|
+
"function"
|
|
28
|
+
];
|
|
29
|
+
var commonCommands = [
|
|
30
|
+
"ab",
|
|
31
|
+
"awk",
|
|
32
|
+
"bash",
|
|
33
|
+
"beep",
|
|
34
|
+
"cat",
|
|
35
|
+
"cc",
|
|
36
|
+
"cd",
|
|
37
|
+
"chown",
|
|
38
|
+
"chmod",
|
|
39
|
+
"chroot",
|
|
40
|
+
"clear",
|
|
41
|
+
"cp",
|
|
42
|
+
"curl",
|
|
43
|
+
"cut",
|
|
44
|
+
"diff",
|
|
45
|
+
"echo",
|
|
46
|
+
"find",
|
|
47
|
+
"gawk",
|
|
48
|
+
"gcc",
|
|
49
|
+
"get",
|
|
50
|
+
"git",
|
|
51
|
+
"grep",
|
|
52
|
+
"hg",
|
|
53
|
+
"kill",
|
|
54
|
+
"killall",
|
|
55
|
+
"ln",
|
|
56
|
+
"ls",
|
|
57
|
+
"make",
|
|
58
|
+
"mkdir",
|
|
59
|
+
"openssl",
|
|
60
|
+
"mv",
|
|
61
|
+
"nc",
|
|
62
|
+
"nl",
|
|
63
|
+
"node",
|
|
64
|
+
"npm",
|
|
65
|
+
"ping",
|
|
66
|
+
"ps",
|
|
67
|
+
"restart",
|
|
68
|
+
"rm",
|
|
69
|
+
"rmdir",
|
|
70
|
+
"sed",
|
|
71
|
+
"service",
|
|
72
|
+
"sh",
|
|
73
|
+
"shopt",
|
|
74
|
+
"shred",
|
|
75
|
+
"source",
|
|
76
|
+
"sort",
|
|
77
|
+
"sleep",
|
|
78
|
+
"ssh",
|
|
79
|
+
"start",
|
|
80
|
+
"stop",
|
|
81
|
+
"su",
|
|
82
|
+
"sudo",
|
|
83
|
+
"svn",
|
|
84
|
+
"tee",
|
|
85
|
+
"telnet",
|
|
86
|
+
"top",
|
|
87
|
+
"touch",
|
|
88
|
+
"vi",
|
|
89
|
+
"vim",
|
|
90
|
+
"wall",
|
|
91
|
+
"wc",
|
|
92
|
+
"wget",
|
|
93
|
+
"who",
|
|
94
|
+
"write",
|
|
95
|
+
"yes",
|
|
96
|
+
"zsh",
|
|
97
|
+
"uv",
|
|
98
|
+
"poetry",
|
|
99
|
+
"pip",
|
|
100
|
+
"pipenv",
|
|
101
|
+
"pipx",
|
|
102
|
+
"pnpm",
|
|
103
|
+
"bun",
|
|
104
|
+
"yarn",
|
|
105
|
+
"deno"
|
|
106
|
+
];
|
|
107
|
+
define("atom", commonAtoms);
|
|
108
|
+
define("keyword", commonKeywords);
|
|
109
|
+
define("builtin", commonCommands);
|
|
110
|
+
function tokenBase(stream, state) {
|
|
111
|
+
if (stream.eatSpace()) return null;
|
|
112
|
+
const sol = stream.sol();
|
|
113
|
+
const ch = stream.next();
|
|
114
|
+
if (ch == null) return null;
|
|
115
|
+
if (ch === "\\") {
|
|
116
|
+
stream.next();
|
|
117
|
+
return null;
|
|
118
|
+
}
|
|
119
|
+
if (ch === "'" || ch === "\"" || ch === "`") {
|
|
120
|
+
state.tokens.unshift(tokenString(ch, ch === "`" ? "quote" : "string"));
|
|
121
|
+
return tokenize(stream, state);
|
|
122
|
+
}
|
|
123
|
+
if (ch === "#") {
|
|
124
|
+
if (sol && stream.eat("!")) {
|
|
125
|
+
stream.skipToEnd();
|
|
126
|
+
return "meta";
|
|
127
|
+
}
|
|
128
|
+
stream.skipToEnd();
|
|
129
|
+
return "comment";
|
|
130
|
+
}
|
|
131
|
+
if (ch === "$") {
|
|
132
|
+
state.tokens.unshift(tokenDollar);
|
|
133
|
+
return tokenize(stream, state);
|
|
134
|
+
}
|
|
135
|
+
if (ch === "+" || ch === "=") return "operator";
|
|
136
|
+
if (ch === "-") {
|
|
137
|
+
stream.eat("-");
|
|
138
|
+
stream.eatWhile(/\w/);
|
|
139
|
+
return "attribute";
|
|
140
|
+
}
|
|
141
|
+
if (ch == "<") {
|
|
142
|
+
if (stream.match("<<")) return "operator";
|
|
143
|
+
const heredoc = stream.match(/^<-?\s*(?:['"]([^'"]*)['"]|([^'"\s]*))/);
|
|
144
|
+
if (Array.isArray(heredoc)) {
|
|
145
|
+
state.tokens.unshift(tokenHeredoc(heredoc[1] || heredoc[2]));
|
|
146
|
+
return "string.special";
|
|
147
|
+
}
|
|
148
|
+
}
|
|
149
|
+
if (/\d/.test(ch)) {
|
|
150
|
+
stream.eatWhile(/\d/);
|
|
151
|
+
const next = stream.peek();
|
|
152
|
+
if (stream.eol() || next === void 0 || !/\w/.test(next)) return "number";
|
|
153
|
+
}
|
|
154
|
+
stream.eatWhile(/[\w-]/);
|
|
155
|
+
const cur = stream.current();
|
|
156
|
+
if (stream.peek() === "=" && /\w+/.test(cur)) return "def";
|
|
157
|
+
return Object.prototype.hasOwnProperty.call(words, cur) ? words[cur] : null;
|
|
158
|
+
}
|
|
159
|
+
function tokenString(quote, style) {
|
|
160
|
+
const close = quote === "(" ? ")" : quote === "{" ? "}" : quote;
|
|
161
|
+
return function(stream, state) {
|
|
162
|
+
let next, escaped = false;
|
|
163
|
+
while ((next = stream.next()) != null) {
|
|
164
|
+
if (next === close && !escaped) {
|
|
165
|
+
state.tokens.shift();
|
|
166
|
+
break;
|
|
167
|
+
} else if (next === "$" && !escaped && quote !== "'" && stream.peek() != close) {
|
|
168
|
+
escaped = true;
|
|
169
|
+
stream.backUp(1);
|
|
170
|
+
state.tokens.unshift(tokenDollar);
|
|
171
|
+
break;
|
|
172
|
+
} else if (!escaped && quote !== close && next === quote) {
|
|
173
|
+
state.tokens.unshift(tokenString(quote, style));
|
|
174
|
+
return tokenize(stream, state);
|
|
175
|
+
} else if (!escaped && /['"]/.test(next) && !/['"]/.test(quote)) {
|
|
176
|
+
state.tokens.unshift(tokenStringStart(next, "string"));
|
|
177
|
+
stream.backUp(1);
|
|
178
|
+
break;
|
|
179
|
+
}
|
|
180
|
+
escaped = !escaped && next === "\\";
|
|
181
|
+
}
|
|
182
|
+
return style;
|
|
183
|
+
};
|
|
184
|
+
}
|
|
185
|
+
function tokenStringStart(quote, style) {
|
|
186
|
+
return function(stream, state) {
|
|
187
|
+
state.tokens[0] = tokenString(quote, style);
|
|
188
|
+
stream.next();
|
|
189
|
+
return tokenize(stream, state);
|
|
190
|
+
};
|
|
191
|
+
}
|
|
192
|
+
var tokenDollar = function(stream, state) {
|
|
193
|
+
if (state.tokens.length > 1) stream.eat("$");
|
|
194
|
+
const ch = stream.next();
|
|
195
|
+
if (ch == null) {
|
|
196
|
+
state.tokens.shift();
|
|
197
|
+
return "def";
|
|
198
|
+
}
|
|
199
|
+
if (/['"({]/.test(ch)) {
|
|
200
|
+
state.tokens[0] = tokenString(ch, ch === "(" ? "quote" : ch === "{" ? "def" : "string");
|
|
201
|
+
return tokenize(stream, state);
|
|
202
|
+
}
|
|
203
|
+
if (!/\d/.test(ch)) stream.eatWhile(/\w/);
|
|
204
|
+
state.tokens.shift();
|
|
205
|
+
return "def";
|
|
206
|
+
};
|
|
207
|
+
function tokenHeredoc(delim) {
|
|
208
|
+
return function(stream, state) {
|
|
209
|
+
if (stream.sol() && stream.string === delim) state.tokens.shift();
|
|
210
|
+
stream.skipToEnd();
|
|
211
|
+
return "string.special";
|
|
212
|
+
};
|
|
213
|
+
}
|
|
214
|
+
function tokenize(stream, state) {
|
|
215
|
+
return (state.tokens[0] || tokenBase)(stream, state);
|
|
216
|
+
}
|
|
217
|
+
var shellLanguage = StreamLanguage.define({
|
|
218
|
+
name: "shell",
|
|
219
|
+
startState() {
|
|
220
|
+
return { tokens: [] };
|
|
221
|
+
},
|
|
222
|
+
token(stream, state) {
|
|
223
|
+
return tokenize(stream, state);
|
|
224
|
+
},
|
|
225
|
+
languageData: {
|
|
226
|
+
autocomplete: commonAtoms.concat(commonKeywords, commonCommands),
|
|
227
|
+
closeBrackets: { brackets: [
|
|
228
|
+
"(",
|
|
229
|
+
"[",
|
|
230
|
+
"{",
|
|
231
|
+
"'",
|
|
232
|
+
"\"",
|
|
233
|
+
"`"
|
|
234
|
+
] },
|
|
235
|
+
commentTokens: { line: "#" }
|
|
236
|
+
}
|
|
237
|
+
});
|
|
238
|
+
//#endregion
|
|
239
|
+
export { shellLanguage };
|
|
240
|
+
|
|
241
|
+
//# sourceMappingURL=shell.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"shell.js","names":[],"sources":["../../../../src/components/Code/languages/shell.tsx"],"sourcesContent":["// Inline of `@codemirror/legacy-modes/mode/shell` to add additional common commands\nimport { StreamLanguage, type StringStream } from '@codemirror/language';\n\nexport type ShellState = {\n tokens: Tokenizer[];\n};\n\ntype Tokenizer = (stream: StringStream, state: ShellState) => string | null;\n\nconst words: Record<string, string> = {};\nfunction define(style: string, dict: readonly string[]) {\n for (let i = 0; i < dict.length; i++) {\n words[dict[i]] = style;\n }\n}\n\nconst commonAtoms = ['true', 'false'];\nconst commonKeywords = [\n 'if',\n 'then',\n 'do',\n 'else',\n 'elif',\n 'while',\n 'until',\n 'for',\n 'in',\n 'esac',\n 'fi',\n 'fin',\n 'fil',\n 'done',\n 'exit',\n 'set',\n 'unset',\n 'export',\n 'function',\n];\nconst commonCommands = [\n 'ab',\n 'awk',\n 'bash',\n 'beep',\n 'cat',\n 'cc',\n 'cd',\n 'chown',\n 'chmod',\n 'chroot',\n 'clear',\n 'cp',\n 'curl',\n 'cut',\n 'diff',\n 'echo',\n 'find',\n 'gawk',\n 'gcc',\n 'get',\n 'git',\n 'grep',\n 'hg',\n 'kill',\n 'killall',\n 'ln',\n 'ls',\n 'make',\n 'mkdir',\n 'openssl',\n 'mv',\n 'nc',\n 'nl',\n 'node',\n 'npm',\n 'ping',\n 'ps',\n 'restart',\n 'rm',\n 'rmdir',\n 'sed',\n 'service',\n 'sh',\n 'shopt',\n 'shred',\n 'source',\n 'sort',\n 'sleep',\n 'ssh',\n 'start',\n 'stop',\n 'su',\n 'sudo',\n 'svn',\n 'tee',\n 'telnet',\n 'top',\n 'touch',\n 'vi',\n 'vim',\n 'wall',\n 'wc',\n 'wget',\n 'who',\n 'write',\n 'yes',\n 'zsh',\n\n 'uv',\n 'poetry',\n 'pip',\n 'pipenv',\n 'pipx',\n\n 'pnpm',\n 'bun',\n 'yarn',\n 'deno',\n];\n\ndefine('atom', commonAtoms);\ndefine('keyword', commonKeywords);\ndefine('builtin', commonCommands);\n\nfunction tokenBase(stream: StringStream, state: ShellState): string | null {\n if (stream.eatSpace()) return null;\n\n const sol = stream.sol();\n const ch = stream.next();\n if (ch == null) return null;\n\n if (ch === '\\\\') {\n stream.next();\n return null;\n }\n if (ch === \"'\" || ch === '\"' || ch === '`') {\n state.tokens.unshift(tokenString(ch, ch === '`' ? 'quote' : 'string'));\n return tokenize(stream, state);\n }\n if (ch === '#') {\n if (sol && stream.eat('!')) {\n stream.skipToEnd();\n return 'meta';\n }\n stream.skipToEnd();\n return 'comment';\n }\n if (ch === '$') {\n state.tokens.unshift(tokenDollar);\n return tokenize(stream, state);\n }\n if (ch === '+' || ch === '=') {\n return 'operator';\n }\n if (ch === '-') {\n stream.eat('-');\n stream.eatWhile(/\\w/);\n return 'attribute';\n }\n if (ch == '<') {\n if (stream.match('<<')) return 'operator';\n const heredoc = stream.match(/^<-?\\s*(?:['\"]([^'\"]*)['\"]|([^'\"\\s]*))/);\n if (Array.isArray(heredoc)) {\n state.tokens.unshift(tokenHeredoc(heredoc[1] || heredoc[2]));\n return 'string.special';\n }\n }\n if (/\\d/.test(ch)) {\n stream.eatWhile(/\\d/);\n const next = stream.peek();\n if (stream.eol() || next === undefined || !/\\w/.test(next)) {\n return 'number';\n }\n }\n stream.eatWhile(/[\\w-]/);\n const cur = stream.current();\n if (stream.peek() === '=' && /\\w+/.test(cur)) return 'def';\n return Object.prototype.hasOwnProperty.call(words, cur) ? words[cur] : null;\n}\n\nfunction tokenString(quote: string, style: string): Tokenizer {\n const close = quote === '(' ? ')' : quote === '{' ? '}' : quote;\n return function (stream: StringStream, state: ShellState) {\n let next,\n escaped = false;\n while ((next = stream.next()) != null) {\n if (next === close && !escaped) {\n state.tokens.shift();\n break;\n } else if (\n next === '$' &&\n !escaped &&\n quote !== \"'\" &&\n stream.peek() != close\n ) {\n escaped = true;\n stream.backUp(1);\n state.tokens.unshift(tokenDollar);\n break;\n } else if (!escaped && quote !== close && next === quote) {\n state.tokens.unshift(tokenString(quote, style));\n return tokenize(stream, state);\n } else if (!escaped && /['\"]/.test(next) && !/['\"]/.test(quote)) {\n state.tokens.unshift(tokenStringStart(next, 'string'));\n stream.backUp(1);\n break;\n }\n escaped = !escaped && next === '\\\\';\n }\n return style;\n };\n}\n\nfunction tokenStringStart(quote: string, style: string): Tokenizer {\n return function (stream: StringStream, state: ShellState) {\n state.tokens[0] = tokenString(quote, style);\n stream.next();\n return tokenize(stream, state);\n };\n}\n\nconst tokenDollar: Tokenizer = function (stream, state) {\n if (state.tokens.length > 1) stream.eat('$');\n const ch = stream.next();\n if (ch == null) {\n state.tokens.shift();\n return 'def';\n }\n if (/['\"({]/.test(ch)) {\n state.tokens[0] = tokenString(\n ch,\n ch === '(' ? 'quote' : ch === '{' ? 'def' : 'string'\n );\n return tokenize(stream, state);\n }\n if (!/\\d/.test(ch)) stream.eatWhile(/\\w/);\n state.tokens.shift();\n return 'def';\n};\n\nfunction tokenHeredoc(delim: string | undefined): Tokenizer {\n return function (stream: StringStream, state: ShellState) {\n if (stream.sol() && stream.string === delim) state.tokens.shift();\n stream.skipToEnd();\n return 'string.special';\n };\n}\n\nfunction tokenize(stream: StringStream, state: ShellState): string | null {\n return (state.tokens[0] || tokenBase)(stream, state);\n}\n\nexport const shellLanguage = StreamLanguage.define<ShellState>({\n name: 'shell',\n startState() {\n return { tokens: [] };\n },\n token(stream, state) {\n return tokenize(stream, state);\n },\n languageData: {\n autocomplete: commonAtoms.concat(commonKeywords, commonCommands),\n closeBrackets: { brackets: ['(', '[', '{', \"'\", '\"', '`'] },\n commentTokens: { line: '#' },\n },\n});\n"],"mappings":";;AASA,IAAM,QAAgC,CAAC;AACvC,SAAS,OAAO,OAAe,MAAyB;CACtD,KAAK,IAAI,IAAI,GAAG,IAAI,KAAK,QAAQ,KAC/B,MAAM,KAAK,MAAM;AAErB;AAEA,IAAM,cAAc,CAAC,QAAQ,OAAO;AACpC,IAAM,iBAAiB;CACrB;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;AACF;AACA,IAAM,iBAAiB;CACrB;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CAEA;CACA;CACA;CACA;CACA;CAEA;CACA;CACA;CACA;AACF;AAEA,OAAO,QAAQ,WAAW;AAC1B,OAAO,WAAW,cAAc;AAChC,OAAO,WAAW,cAAc;AAEhC,SAAS,UAAU,QAAsB,OAAkC;CACzE,IAAI,OAAO,SAAS,GAAG,OAAO;CAE9B,MAAM,MAAM,OAAO,IAAI;CACvB,MAAM,KAAK,OAAO,KAAK;CACvB,IAAI,MAAM,MAAM,OAAO;CAEvB,IAAI,OAAO,MAAM;EACf,OAAO,KAAK;EACZ,OAAO;CACT;CACA,IAAI,OAAO,OAAO,OAAO,QAAO,OAAO,KAAK;EAC1C,MAAM,OAAO,QAAQ,YAAY,IAAI,OAAO,MAAM,UAAU,QAAQ,CAAC;EACrE,OAAO,SAAS,QAAQ,KAAK;CAC/B;CACA,IAAI,OAAO,KAAK;EACd,IAAI,OAAO,OAAO,IAAI,GAAG,GAAG;GAC1B,OAAO,UAAU;GACjB,OAAO;EACT;EACA,OAAO,UAAU;EACjB,OAAO;CACT;CACA,IAAI,OAAO,KAAK;EACd,MAAM,OAAO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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export declare const typescriptLanguage: import("@codemirror/language").LanguageSupport;
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
import { javascript } from "@codemirror/lang-javascript";
|
|
2
|
+
//#region packages/components/src/components/Code/languages/typescript.tsx
|
|
3
|
+
var typescriptLanguage = javascript({ typescript: true });
|
|
4
|
+
//#endregion
|
|
5
|
+
export { typescriptLanguage };
|
|
6
|
+
|
|
7
|
+
//# sourceMappingURL=typescript.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"typescript.js","names":[],"sources":["../../../../src/components/Code/languages/typescript.tsx"],"sourcesContent":["import { javascript as javascriptFn } from '@codemirror/lang-javascript';\n\nexport const typescriptLanguage = javascriptFn({ typescript: true });\n"],"mappings":";;AAEA,IAAa,qBAAqB,WAAa,EAAE,YAAY,KAAK,CAAC"}
|
|
@@ -0,0 +1,44 @@
|
|
|
1
|
+
import { LRLanguage, LanguageSupport, delimitedIndent, foldInside, foldNodeProp, indentNodeProp } from "@codemirror/language";
|
|
2
|
+
import { parser } from "@lezer/yaml";
|
|
3
|
+
//#region packages/components/src/components/Code/languages/yaml.tsx
|
|
4
|
+
var yamlLanguage = new LanguageSupport(LRLanguage.define({
|
|
5
|
+
name: "yaml",
|
|
6
|
+
parser: parser.configure({ props: [indentNodeProp.add({
|
|
7
|
+
Stream: (cx) => {
|
|
8
|
+
for (let before = cx.node.resolve(cx.pos, -1); before && before.to >= cx.pos; before = before.parent) {
|
|
9
|
+
if (before.name == "BlockLiteralContent" && before.from < before.to) return cx.baseIndentFor(before);
|
|
10
|
+
if (before.name == "BlockLiteral") return cx.baseIndentFor(before) + cx.unit;
|
|
11
|
+
if (before.name == "BlockSequence" || before.name == "BlockMapping") return cx.column(before.from, 1);
|
|
12
|
+
if (before.name == "QuotedLiteral") return null;
|
|
13
|
+
if (before.name == "Literal") {
|
|
14
|
+
const col = cx.column(before.from, 1);
|
|
15
|
+
if (col == cx.lineIndent(before.from, 1)) return col;
|
|
16
|
+
if (before.to > cx.pos) return null;
|
|
17
|
+
}
|
|
18
|
+
}
|
|
19
|
+
return null;
|
|
20
|
+
},
|
|
21
|
+
FlowMapping: delimitedIndent({ closing: "}" }),
|
|
22
|
+
FlowSequence: delimitedIndent({ closing: "]" })
|
|
23
|
+
}), foldNodeProp.add({
|
|
24
|
+
"FlowMapping FlowSequence": foldInside,
|
|
25
|
+
"Item Pair BlockLiteral": (node, state) => {
|
|
26
|
+
if (state == null) return {
|
|
27
|
+
from: node.from,
|
|
28
|
+
to: node.to
|
|
29
|
+
};
|
|
30
|
+
return {
|
|
31
|
+
from: state.doc.lineAt(node.from).to,
|
|
32
|
+
to: node.to
|
|
33
|
+
};
|
|
34
|
+
}
|
|
35
|
+
})] }),
|
|
36
|
+
languageData: {
|
|
37
|
+
commentTokens: { line: "#" },
|
|
38
|
+
indentOnInput: /^\s*[\]}]$/
|
|
39
|
+
}
|
|
40
|
+
}));
|
|
41
|
+
//#endregion
|
|
42
|
+
export { yamlLanguage };
|
|
43
|
+
|
|
44
|
+
//# sourceMappingURL=yaml.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"yaml.js","names":[],"sources":["../../../../src/components/Code/languages/yaml.tsx"],"sourcesContent":["import {\n LRLanguage,\n LanguageSupport,\n delimitedIndent,\n foldInside,\n foldNodeProp,\n indentNodeProp,\n} from '@codemirror/language';\nimport type { SyntaxNode } from '@lezer/common';\nimport { parser as yamlParser } from '@lezer/yaml';\n\nexport const yamlLanguage = new LanguageSupport(\n LRLanguage.define({\n name: 'yaml',\n parser: yamlParser.configure({\n props: [\n indentNodeProp.add({\n Stream: (cx) => {\n for (\n let before = cx.node.resolve(cx.pos, -1) as SyntaxNode | null;\n before && before.to >= cx.pos;\n before = before.parent\n ) {\n if (\n before.name == 'BlockLiteralContent' &&\n before.from < before.to\n )\n return cx.baseIndentFor(before);\n if (before.name == 'BlockLiteral')\n return cx.baseIndentFor(before) + cx.unit;\n if (\n before.name == 'BlockSequence' ||\n before.name == 'BlockMapping'\n )\n return cx.column(before.from, 1);\n if (before.name == 'QuotedLiteral') return null;\n if (before.name == 'Literal') {\n const col = cx.column(before.from, 1);\n if (col == cx.lineIndent(before.from, 1)) return col; // Start on own line\n if (before.to > cx.pos) return null;\n }\n }\n return null;\n },\n FlowMapping: delimitedIndent({ closing: '}' }),\n FlowSequence: delimitedIndent({ closing: ']' }),\n }),\n foldNodeProp.add({\n 'FlowMapping FlowSequence': foldInside,\n 'Item Pair BlockLiteral': (node, state) => {\n // Only applies when running with EditorLite\n if (state == null) return { from: node.from, to: node.to };\n return { from: state.doc.lineAt(node.from).to, to: node.to };\n },\n }),\n ],\n }),\n languageData: {\n commentTokens: { line: '#' },\n indentOnInput: /^\\s*[\\]}]$/,\n },\n })\n);\n"],"mappings":";;;AAWA,IAAa,eAAe,IAAI,gBAC9B,WAAW,OAAO;CAChB,MAAM;CACN,QAAQ,OAAW,UAAU,EAC3B,OAAO,CACL,eAAe,IAAI;EACjB,SAAS,OAAO;GACd,KACE,IAAI,SAAS,GAAG,KAAK,QAAQ,GAAG,KAAK,EAAE,GACvC,UAAU,OAAO,MAAM,GAAG,KAC1B,SAAS,OAAO,QAChB;IACA,IACE,OAAO,QAAQ,yBACf,OAAO,OAAO,OAAO,IAErB,OAAO,GAAG,cAAc,MAAM;IAChC,IAAI,OAAO,QAAQ,gBACjB,OAAO,GAAG,cAAc,MAAM,IAAI,GAAG;IACvC,IACE,OAAO,QAAQ,mBACf,OAAO,QAAQ,gBAEf,OAAO,GAAG,OAAO,OAAO,MAAM,CAAC;IACjC,IAAI,OAAO,QAAQ,iBAAiB,OAAO;IAC3C,IAAI,OAAO,QAAQ,WAAW;KAC5B,MAAM,MAAM,GAAG,OAAO,OAAO,MAAM,CAAC;KACpC,IAAI,OAAO,GAAG,WAAW,OAAO,MAAM,CAAC,GAAG,OAAO;KACjD,IAAI,OAAO,KAAK,GAAG,KAAK,OAAO;IACjC;GACF;GACA,OAAO;EACT;EACA,aAAa,gBAAgB,EAAE,SAAS,IAAI,CAAC;EAC7C,cAAc,gBAAgB,EAAE,SAAS,IAAI,CAAC;CAChD,CAAC,GACD,aAAa,IAAI;EACf,4BAA4B;EAC5B,2BAA2B,MAAM,UAAU;GAEzC,IAAI,SAAS,MAAM,OAAO;IAAE,MAAM,KAAK;IAAM,IAAI,KAAK;GAAG;GACzD,OAAO;IAAE,MAAM,MAAM,IAAI,OAAO,KAAK,IAAI,CAAC,CAAC;IAAI,IAAI,KAAK;GAAG;EAC7D;CACF,CAAC,CACH,EACF,CAAC;CACD,cAAc;EACZ,eAAe,EAAE,MAAM,IAAI;EAC3B,eAAe;CACjB;AACF,CAAC,CACH"}
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
export type CodeLanguageType = 'yaml' | 'json' | 'javascript' | 'typescript' | 'python' | 'shell' | 'markdown';
|
|
2
|
+
export type SyntaxHighlighterRow = {
|
|
3
|
+
type: string;
|
|
4
|
+
tagName: string;
|
|
5
|
+
children: SyntaxHighlighterRow[];
|
|
6
|
+
properties: Record<string, unknown>;
|
|
7
|
+
value?: string;
|
|
8
|
+
};
|
|
File without changes
|
|
@@ -0,0 +1,4 @@
|
|
|
1
|
+
import type { SyntaxHighlighterRow } from './types.js';
|
|
2
|
+
export declare function isValidUrl(string: string): boolean;
|
|
3
|
+
export declare function getMimeTypeFromDataUrl(string: string): string | null;
|
|
4
|
+
export declare function calculateTotalHeight(rows: SyntaxHighlighterRow[], containerWidth?: number): number;
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
import "./constants.js";
|
|
2
|
+
//#region packages/components/src/components/Code/utils.tsx
|
|
3
|
+
var DATA_URL_BASE64_REGEX = /^data:([^;,]+);base64,/i;
|
|
4
|
+
function isValidUrl(string) {
|
|
5
|
+
try {
|
|
6
|
+
const path = new URL(string).pathname.toLowerCase();
|
|
7
|
+
return /\/[^/]+\.(jpg|jpeg|png|gif|svg|webp)$/i.test(path);
|
|
8
|
+
} catch {
|
|
9
|
+
return false;
|
|
10
|
+
}
|
|
11
|
+
}
|
|
12
|
+
function getMimeTypeFromDataUrl(string) {
|
|
13
|
+
return string.match(DATA_URL_BASE64_REGEX)?.[1] ?? null;
|
|
14
|
+
}
|
|
15
|
+
function calculateTotalHeight(rows, containerWidth) {
|
|
16
|
+
const height = rows.reduce((sum, row) => {
|
|
17
|
+
const text = row.children.map((child) => child.children?.[0]?.value || "").join("");
|
|
18
|
+
const charsPerLine = containerWidth ? Math.floor(containerWidth / 8) : 80;
|
|
19
|
+
const additionalRows = Math.floor(text.length / charsPerLine);
|
|
20
|
+
return sum + 1 + additionalRows;
|
|
21
|
+
}, 0) * 20;
|
|
22
|
+
return Math.min(height, 450);
|
|
23
|
+
}
|
|
24
|
+
//#endregion
|
|
25
|
+
export { calculateTotalHeight, getMimeTypeFromDataUrl, isValidUrl };
|
|
26
|
+
|
|
27
|
+
//# sourceMappingURL=utils.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"utils.js","names":[],"sources":["../../../src/components/Code/utils.tsx"],"sourcesContent":["import { MAX_CODE_HEIGHT, ROW_HEIGHT, ROW_WIDTH } from './constants';\nimport type { SyntaxHighlighterRow } from './types';\n\nconst DATA_URL_BASE64_REGEX = /^data:([^;,]+);base64,/i;\n\nexport function isValidUrl(string: string) {\n try {\n const url = new URL(string);\n const path = url.pathname.toLowerCase();\n return /\\/[^/]+\\.(jpg|jpeg|png|gif|svg|webp)$/i.test(path);\n } catch {\n return false;\n }\n}\n\nexport function getMimeTypeFromDataUrl(string: string): string | null {\n const match = string.match(DATA_URL_BASE64_REGEX);\n return match?.[1] ?? null;\n}\n\nexport function calculateTotalHeight(\n rows: SyntaxHighlighterRow[],\n containerWidth?: number\n) {\n const totalRows = rows.reduce((sum, row) => {\n const text = row.children\n .map((child) => child.children?.[0]?.value || '')\n .join('');\n\n const charsPerLine = containerWidth\n ? Math.floor(containerWidth / 8)\n : ROW_WIDTH;\n const additionalRows = Math.floor(text.length / charsPerLine);\n return sum + 1 + additionalRows;\n }, 0);\n\n const height = totalRows * ROW_HEIGHT;\n\n return Math.min(height, MAX_CODE_HEIGHT);\n}\n"],"mappings":";;AAGA,IAAM,wBAAwB;AAE9B,SAAgB,WAAW,QAAgB;CACzC,IAAI;EAEF,MAAM,OAAO,IADG,IAAI,MACP,CAAA,CAAI,SAAS,YAAY;EACtC,OAAO,yCAAyC,KAAK,IAAI;CAC3D,QAAQ;EACN,OAAO;CACT;AACF;AAEA,SAAgB,uBAAuB,QAA+B;CAEpE,OADc,OAAO,MAAM,qBACpB,CAAA,GAAQ,MAAM;AACvB;AAEA,SAAgB,qBACd,MACA,gBACA;CAaA,MAAM,SAZY,KAAK,QAAQ,KAAK,QAAQ;EAC1C,MAAM,OAAO,IAAI,SACd,KAAK,UAAU,MAAM,WAAW,EAAE,EAAE,SAAS,EAAE,CAAC,CAChD,KAAK,EAAE;EAEV,MAAM,eAAe,iBACjB,KAAK,MAAM,iBAAiB,CAAC,IAAA;EAEjC,MAAM,iBAAiB,KAAK,MAAM,KAAK,SAAS,YAAY;EAC5D,OAAO,MAAM,IAAI;CACnB,GAAG,CAEY,IAAA;CAEf,OAAO,KAAK,IAAI,QAAA,GAAuB;AACzC"}
|