@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,227 @@
|
|
|
1
|
+
import { getMimeTypeFromDataUrl, isValidUrl } from "./utils.js";
|
|
2
|
+
//#region packages/components/src/components/Code/ImageReplacerExtension.ts
|
|
3
|
+
function getImageReplacerExtensions(cm) {
|
|
4
|
+
const { StateEffect, StateField, Decoration, EditorView, ViewPlugin, WidgetType: WidgetTypeBase, syntaxTree } = cm;
|
|
5
|
+
class DataUrlWidget extends WidgetTypeBase {
|
|
6
|
+
src;
|
|
7
|
+
mimeType;
|
|
8
|
+
constructor(src, mimeType) {
|
|
9
|
+
super();
|
|
10
|
+
this.src = src;
|
|
11
|
+
this.mimeType = mimeType;
|
|
12
|
+
}
|
|
13
|
+
toDOM() {
|
|
14
|
+
if (this.mimeType.startsWith("image/")) {
|
|
15
|
+
const img = document.createElement("img");
|
|
16
|
+
img.src = this.src;
|
|
17
|
+
img.style.maxWidth = "100%";
|
|
18
|
+
return img;
|
|
19
|
+
}
|
|
20
|
+
if (this.mimeType === "application/pdf") {
|
|
21
|
+
const iframe = document.createElement("iframe");
|
|
22
|
+
iframe.src = this.src;
|
|
23
|
+
iframe.style.width = "100%";
|
|
24
|
+
iframe.style.maxWidth = "100%";
|
|
25
|
+
iframe.style.height = "480px";
|
|
26
|
+
iframe.style.border = "0";
|
|
27
|
+
return iframe;
|
|
28
|
+
}
|
|
29
|
+
if (this.mimeType.startsWith("audio/")) {
|
|
30
|
+
const audio = document.createElement("audio");
|
|
31
|
+
audio.controls = true;
|
|
32
|
+
audio.style.width = "100%";
|
|
33
|
+
const source = document.createElement("source");
|
|
34
|
+
source.src = this.src;
|
|
35
|
+
source.type = this.mimeType;
|
|
36
|
+
audio.appendChild(source);
|
|
37
|
+
return audio;
|
|
38
|
+
}
|
|
39
|
+
const fallback = document.createElement("span");
|
|
40
|
+
fallback.textContent = this.src;
|
|
41
|
+
return fallback;
|
|
42
|
+
}
|
|
43
|
+
}
|
|
44
|
+
class UrlImageWidget extends WidgetTypeBase {
|
|
45
|
+
params;
|
|
46
|
+
constructor(params) {
|
|
47
|
+
super();
|
|
48
|
+
this.params = params;
|
|
49
|
+
}
|
|
50
|
+
positionTooltip(parent, tooltip) {
|
|
51
|
+
const rect = parent.getBoundingClientRect();
|
|
52
|
+
const parentRect = parent.offsetParent?.getBoundingClientRect() || {
|
|
53
|
+
left: 0,
|
|
54
|
+
right: window.innerWidth
|
|
55
|
+
};
|
|
56
|
+
if (rect.left - parentRect.left > parentRect.right - rect.right) {
|
|
57
|
+
tooltip.style.left = "100%";
|
|
58
|
+
tooltip.style.transform = "translateX(-100%)";
|
|
59
|
+
tooltip.style.right = "";
|
|
60
|
+
} else {
|
|
61
|
+
tooltip.style.right = "100%";
|
|
62
|
+
tooltip.style.transform = "translateX(100%)";
|
|
63
|
+
tooltip.style.left = "";
|
|
64
|
+
}
|
|
65
|
+
tooltip.style.bottom = "100%";
|
|
66
|
+
}
|
|
67
|
+
createTooltipElement() {
|
|
68
|
+
const tooltip = document.createElement("div");
|
|
69
|
+
tooltip.textContent = "Click to render image";
|
|
70
|
+
tooltip.style.position = "absolute";
|
|
71
|
+
tooltip.style.backgroundColor = "black";
|
|
72
|
+
tooltip.style.color = "white";
|
|
73
|
+
tooltip.style.padding = "5px";
|
|
74
|
+
tooltip.style.zIndex = "201";
|
|
75
|
+
tooltip.style.whiteSpace = "nowrap";
|
|
76
|
+
tooltip.style.visibility = "hidden";
|
|
77
|
+
tooltip.style.display = "block";
|
|
78
|
+
tooltip.style.fontFamily = "\"Inter\", -apple-system, \"system-ui\", \"Segoe UI\", Roboto, Helvetica, Arial, sans-serif, \"Apple Color Emoji\", \"Segoe UI Emoji\", \"Segoe UI Symbol\"";
|
|
79
|
+
tooltip.style.borderRadius = "8px";
|
|
80
|
+
return tooltip;
|
|
81
|
+
}
|
|
82
|
+
createIconElement() {
|
|
83
|
+
const imageIconElement = document.createElementNS("http://www.w3.org/2000/svg", "svg");
|
|
84
|
+
imageIconElement.setAttribute("width", "24");
|
|
85
|
+
imageIconElement.setAttribute("height", "24");
|
|
86
|
+
imageIconElement.setAttribute("viewBox", "0 0 24 24");
|
|
87
|
+
imageIconElement.setAttribute("fill", "none");
|
|
88
|
+
const pathElement = document.createElementNS("http://www.w3.org/2000/svg", "path");
|
|
89
|
+
pathElement.setAttribute("d", "M21 19V5C21 3.9 20.1 3 19 3H5C3.9 3 3 3.9 3 5V19C3 20.1 3.9 21 5 21H19C20.1 21 21 20.1 21 19ZM19 19H5V5H19V19ZM8.5 13.5L11 17L14.5 12.5L18 17H6L8.5 13.5Z");
|
|
90
|
+
pathElement.setAttribute("fill", "currentColor");
|
|
91
|
+
imageIconElement.appendChild(pathElement);
|
|
92
|
+
imageIconElement.style.display = "inline";
|
|
93
|
+
const tooltip = this.createTooltipElement();
|
|
94
|
+
const iconContainer = document.createElement("span");
|
|
95
|
+
iconContainer.appendChild(imageIconElement);
|
|
96
|
+
iconContainer.appendChild(tooltip);
|
|
97
|
+
iconContainer.style.cursor = "pointer";
|
|
98
|
+
iconContainer.style.position = "relative";
|
|
99
|
+
iconContainer.onmouseover = () => {
|
|
100
|
+
this.positionTooltip(iconContainer, tooltip);
|
|
101
|
+
tooltip.style.visibility = "visible";
|
|
102
|
+
};
|
|
103
|
+
iconContainer.onmouseout = () => {
|
|
104
|
+
tooltip.style.visibility = "hidden";
|
|
105
|
+
};
|
|
106
|
+
return iconContainer;
|
|
107
|
+
}
|
|
108
|
+
createImageElement() {
|
|
109
|
+
const imgElement = document.createElement("img");
|
|
110
|
+
imgElement.src = this.params.src;
|
|
111
|
+
imgElement.style.maxWidth = "100%";
|
|
112
|
+
imgElement.style.display = this.params.isOpen ? "block" : "none";
|
|
113
|
+
imgElement.style.cursor = "pointer";
|
|
114
|
+
imgElement.referrerPolicy = "no-referrer";
|
|
115
|
+
imgElement.onclick = (e) => {
|
|
116
|
+
e.preventDefault();
|
|
117
|
+
e.stopPropagation();
|
|
118
|
+
const imageEl = e.target;
|
|
119
|
+
if (imageEl.style.display === "none") {
|
|
120
|
+
imageEl.style.display = "block";
|
|
121
|
+
this.params.setOpen(true, this.params.position);
|
|
122
|
+
} else {
|
|
123
|
+
imageEl.style.display = "none";
|
|
124
|
+
this.params.setOpen(false, this.params.position);
|
|
125
|
+
}
|
|
126
|
+
};
|
|
127
|
+
return imgElement;
|
|
128
|
+
}
|
|
129
|
+
toDOM() {
|
|
130
|
+
const container = document.createElement("span");
|
|
131
|
+
container.className = "cm-image-widget";
|
|
132
|
+
const iconContainer = this.createIconElement();
|
|
133
|
+
const imgElement = this.createImageElement();
|
|
134
|
+
iconContainer.onclick = (e) => {
|
|
135
|
+
e.preventDefault();
|
|
136
|
+
e.stopPropagation();
|
|
137
|
+
this.toggleImage(container);
|
|
138
|
+
};
|
|
139
|
+
container.appendChild(iconContainer);
|
|
140
|
+
container.appendChild(imgElement);
|
|
141
|
+
return container;
|
|
142
|
+
}
|
|
143
|
+
toggleImage(container) {
|
|
144
|
+
const imgElement = container.querySelector("img");
|
|
145
|
+
if (imgElement) {
|
|
146
|
+
if (imgElement.style.display === "none") {
|
|
147
|
+
imgElement.style.display = "block";
|
|
148
|
+
this.params.setOpen(true, this.params.position);
|
|
149
|
+
} else {
|
|
150
|
+
imgElement.style.display = "none";
|
|
151
|
+
this.params.setOpen(false, this.params.position);
|
|
152
|
+
}
|
|
153
|
+
}
|
|
154
|
+
}
|
|
155
|
+
}
|
|
156
|
+
const updateDecorationState = StateEffect.define();
|
|
157
|
+
const decorationStateField = StateField.define({
|
|
158
|
+
create() {
|
|
159
|
+
return /* @__PURE__ */ new Map();
|
|
160
|
+
},
|
|
161
|
+
update(map, tr) {
|
|
162
|
+
for (const effect of tr.effects) if (effect.is(updateDecorationState)) map.set(effect.value.id, effect.value.state);
|
|
163
|
+
return map;
|
|
164
|
+
}
|
|
165
|
+
});
|
|
166
|
+
function images(view) {
|
|
167
|
+
const widgets = [];
|
|
168
|
+
const state = view.state.field(decorationStateField);
|
|
169
|
+
for (const { from, to } of view.visibleRanges) syntaxTree(view.state).iterate({
|
|
170
|
+
from,
|
|
171
|
+
to,
|
|
172
|
+
enter: (node) => {
|
|
173
|
+
if (node.name === "String" || node.name === "Literal") {
|
|
174
|
+
const start = node.name === "Literal" ? node.from : node.from + 1;
|
|
175
|
+
const end = node.name === "Literal" ? node.to : node.to - 1;
|
|
176
|
+
const text = view.state.doc.sliceString(start, end);
|
|
177
|
+
const mimeType = getMimeTypeFromDataUrl(text);
|
|
178
|
+
if (mimeType != null && (mimeType.startsWith("image/") || mimeType === "application/pdf" || mimeType.startsWith("audio/"))) {
|
|
179
|
+
const deco = Decoration.replace({
|
|
180
|
+
widget: new DataUrlWidget(text, mimeType),
|
|
181
|
+
inclusive: true
|
|
182
|
+
});
|
|
183
|
+
widgets.push(deco.range(node.from, node.to));
|
|
184
|
+
} else if (isValidUrl(text)) {
|
|
185
|
+
const deco = Decoration.widget({
|
|
186
|
+
widget: new UrlImageWidget({
|
|
187
|
+
src: text,
|
|
188
|
+
isOpen: state.get(`${node.to}`),
|
|
189
|
+
setOpen: (newState, nodePosition) => {
|
|
190
|
+
view.dispatch({ effects: updateDecorationState.of({
|
|
191
|
+
id: `${nodePosition}`,
|
|
192
|
+
state: newState
|
|
193
|
+
}) });
|
|
194
|
+
},
|
|
195
|
+
position: node.to
|
|
196
|
+
}),
|
|
197
|
+
inclusive: true
|
|
198
|
+
});
|
|
199
|
+
widgets.push(deco.range(node.to));
|
|
200
|
+
}
|
|
201
|
+
}
|
|
202
|
+
}
|
|
203
|
+
});
|
|
204
|
+
return Decoration.set(widgets);
|
|
205
|
+
}
|
|
206
|
+
return {
|
|
207
|
+
decorationStateField,
|
|
208
|
+
imageReplacerPlugin: ViewPlugin.fromClass(class {
|
|
209
|
+
decorations;
|
|
210
|
+
constructor(view) {
|
|
211
|
+
this.decorations = images(view);
|
|
212
|
+
}
|
|
213
|
+
update(update) {
|
|
214
|
+
if (update.docChanged || update.viewportChanged || syntaxTree(update.startState) !== syntaxTree(update.state)) this.decorations = images(update.view);
|
|
215
|
+
}
|
|
216
|
+
}, {
|
|
217
|
+
decorations: (v) => v.decorations,
|
|
218
|
+
provide: (plugin) => EditorView.atomicRanges.of((view) => {
|
|
219
|
+
return view.plugin(plugin)?.decorations || Decoration.none;
|
|
220
|
+
})
|
|
221
|
+
})
|
|
222
|
+
};
|
|
223
|
+
}
|
|
224
|
+
//#endregion
|
|
225
|
+
export { getImageReplacerExtensions };
|
|
226
|
+
|
|
227
|
+
//# sourceMappingURL=ImageReplacerExtension.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ImageReplacerExtension.js","names":[],"sources":["../../../src/components/Code/ImageReplacerExtension.ts"],"sourcesContent":["import type { Range } from '@codemirror/state';\nimport type {\n Decoration,\n DecorationSet,\n EditorView,\n ViewUpdate,\n} from '@codemirror/view';\n\nimport type { CMBundle } from '../../utils/lazy-codemirror-loader';\nimport { getMimeTypeFromDataUrl, isValidUrl } from './utils';\n\nexport function getImageReplacerExtensions(cm: CMBundle) {\n const {\n StateEffect,\n StateField,\n Decoration,\n EditorView,\n ViewPlugin,\n WidgetType: WidgetTypeBase,\n syntaxTree,\n } = cm;\n\n class DataUrlWidget extends WidgetTypeBase {\n constructor(\n private src: string,\n private mimeType: string\n ) {\n super();\n }\n\n toDOM() {\n if (this.mimeType.startsWith('image/')) {\n const img = document.createElement('img');\n img.src = this.src;\n img.style.maxWidth = '100%';\n return img;\n }\n\n if (this.mimeType === 'application/pdf') {\n const iframe = document.createElement('iframe');\n iframe.src = this.src;\n iframe.style.width = '100%';\n iframe.style.maxWidth = '100%';\n iframe.style.height = '480px';\n iframe.style.border = '0';\n return iframe;\n }\n\n if (this.mimeType.startsWith('audio/')) {\n const audio = document.createElement('audio');\n audio.controls = true;\n audio.style.width = '100%';\n\n const source = document.createElement('source');\n source.src = this.src;\n source.type = this.mimeType;\n audio.appendChild(source);\n return audio;\n }\n\n const fallback = document.createElement('span');\n fallback.textContent = this.src;\n return fallback;\n }\n }\n\n class UrlImageWidget extends WidgetTypeBase {\n constructor(\n private params: {\n src: string;\n isOpen: boolean;\n setOpen: (newState: boolean, nodePosition: number) => void;\n position: number;\n }\n ) {\n super();\n }\n\n positionTooltip(parent: HTMLElement, tooltip: HTMLElement) {\n const rect = parent.getBoundingClientRect();\n const parentRect = parent.offsetParent?.getBoundingClientRect() || {\n left: 0,\n right: window.innerWidth,\n };\n\n const leftSpace = rect.left - parentRect.left;\n const rightSpace = parentRect.right - rect.right;\n\n if (leftSpace > rightSpace) {\n tooltip.style.left = '100%';\n tooltip.style.transform = 'translateX(-100%)';\n tooltip.style.right = '';\n } else {\n tooltip.style.right = '100%';\n tooltip.style.transform = 'translateX(100%)';\n tooltip.style.left = '';\n }\n\n tooltip.style.bottom = '100%';\n }\n\n createTooltipElement() {\n const tooltip = document.createElement('div');\n tooltip.textContent = 'Click to render image';\n tooltip.style.position = 'absolute';\n tooltip.style.backgroundColor = 'black';\n tooltip.style.color = 'white';\n tooltip.style.padding = '5px';\n tooltip.style.zIndex = '201';\n tooltip.style.whiteSpace = 'nowrap';\n tooltip.style.visibility = 'hidden';\n tooltip.style.display = 'block';\n tooltip.style.fontFamily =\n '\"Inter\", -apple-system, \"system-ui\", \"Segoe UI\", Roboto, Helvetica, Arial, sans-serif, \"Apple Color Emoji\", \"Segoe UI Emoji\", \"Segoe UI Symbol\"';\n tooltip.style.borderRadius = '8px';\n return tooltip;\n }\n\n createIconElement() {\n const imageIconElement = document.createElementNS(\n 'http://www.w3.org/2000/svg',\n 'svg'\n );\n imageIconElement.setAttribute('width', '24');\n imageIconElement.setAttribute('height', '24');\n imageIconElement.setAttribute('viewBox', '0 0 24 24');\n imageIconElement.setAttribute('fill', 'none');\n\n const pathElement = document.createElementNS(\n 'http://www.w3.org/2000/svg',\n 'path'\n );\n pathElement.setAttribute(\n 'd',\n 'M21 19V5C21 3.9 20.1 3 19 3H5C3.9 3 3 3.9 3 5V19C3 20.1 3.9 21 5 21H19C20.1 21 21 20.1 21 19ZM19 19H5V5H19V19ZM8.5 13.5L11 17L14.5 12.5L18 17H6L8.5 13.5Z'\n );\n pathElement.setAttribute('fill', 'currentColor');\n imageIconElement.appendChild(pathElement);\n imageIconElement.style.display = 'inline';\n\n const tooltip = this.createTooltipElement();\n\n const iconContainer = document.createElement('span');\n iconContainer.appendChild(imageIconElement);\n iconContainer.appendChild(tooltip);\n iconContainer.style.cursor = 'pointer';\n iconContainer.style.position = 'relative';\n\n iconContainer.onmouseover = () => {\n this.positionTooltip(iconContainer, tooltip);\n tooltip.style.visibility = 'visible';\n };\n iconContainer.onmouseout = () => {\n tooltip.style.visibility = 'hidden';\n };\n return iconContainer;\n }\n\n createImageElement() {\n const imgElement = document.createElement('img');\n imgElement.src = this.params.src;\n imgElement.style.maxWidth = '100%';\n imgElement.style.display = this.params.isOpen ? 'block' : 'none';\n imgElement.style.cursor = 'pointer';\n imgElement.referrerPolicy = 'no-referrer';\n\n imgElement.onclick = (e) => {\n e.preventDefault();\n e.stopPropagation();\n const imageEl = e.target as HTMLImageElement;\n if (imageEl.style.display === 'none') {\n imageEl.style.display = 'block';\n this.params.setOpen(true, this.params.position);\n } else {\n imageEl.style.display = 'none';\n this.params.setOpen(false, this.params.position);\n }\n };\n return imgElement;\n }\n\n toDOM() {\n const container = document.createElement('span');\n container.className = 'cm-image-widget';\n\n const iconContainer = this.createIconElement();\n const imgElement = this.createImageElement();\n iconContainer.onclick = (e) => {\n e.preventDefault();\n e.stopPropagation();\n this.toggleImage(container);\n };\n\n container.appendChild(iconContainer);\n container.appendChild(imgElement);\n return container;\n }\n\n toggleImage(container: HTMLElement) {\n const imgElement = container.querySelector('img');\n if (imgElement) {\n if (imgElement.style.display === 'none') {\n imgElement.style.display = 'block';\n this.params.setOpen(true, this.params.position);\n } else {\n imgElement.style.display = 'none';\n this.params.setOpen(false, this.params.position);\n }\n }\n }\n }\n\n const updateDecorationState = StateEffect.define<{\n id: string;\n state: boolean;\n }>();\n\n const decorationStateField = StateField.define({\n create() {\n return new Map();\n },\n update(map, tr) {\n for (const effect of tr.effects) {\n if (effect.is(updateDecorationState)) {\n map.set(effect.value.id, effect.value.state);\n }\n }\n return map;\n },\n });\n\n function images(view: EditorView) {\n const widgets: Range<Decoration>[] = [];\n const state = view.state.field(decorationStateField);\n for (const { from, to } of view.visibleRanges) {\n syntaxTree(view.state).iterate({\n from,\n to,\n enter: (node) => {\n if (node.name === 'String' || node.name === 'Literal') {\n const start = node.name === 'Literal' ? node.from : node.from + 1;\n const end = node.name === 'Literal' ? node.to : node.to - 1;\n const text = view.state.doc.sliceString(start, end);\n const mimeType = getMimeTypeFromDataUrl(text);\n const shouldRenderDataUrl =\n mimeType != null &&\n (mimeType.startsWith('image/') ||\n mimeType === 'application/pdf' ||\n mimeType.startsWith('audio/'));\n\n if (shouldRenderDataUrl) {\n const deco = Decoration.replace({\n widget: new DataUrlWidget(text, mimeType),\n inclusive: true,\n });\n widgets.push(deco.range(node.from, node.to));\n } else if (isValidUrl(text)) {\n const deco = Decoration.widget({\n widget: new UrlImageWidget({\n src: text,\n isOpen: state.get(`${node.to}`),\n setOpen: (newState: boolean, nodePosition: number) => {\n view.dispatch({\n effects: updateDecorationState.of({\n id: `${nodePosition}`,\n state: newState,\n }),\n });\n },\n position: node.to,\n }),\n inclusive: true,\n });\n widgets.push(deco.range(node.to));\n }\n }\n },\n });\n }\n return Decoration.set(widgets);\n }\n\n const imageReplacerPlugin = ViewPlugin.fromClass(\n class {\n decorations: DecorationSet;\n\n constructor(view: EditorView) {\n this.decorations = images(view);\n }\n\n update(update: ViewUpdate) {\n if (\n update.docChanged ||\n update.viewportChanged ||\n syntaxTree(update.startState) !== syntaxTree(update.state)\n ) {\n this.decorations = images(update.view);\n }\n }\n },\n {\n decorations: (v) => v.decorations,\n provide: (plugin) =>\n EditorView.atomicRanges.of((view) => {\n return view.plugin(plugin)?.decorations || Decoration.none;\n }),\n }\n );\n\n return { decorationStateField, imageReplacerPlugin };\n}\n"],"mappings":";;AAWA,SAAgB,2BAA2B,IAAc;CACvD,MAAM,EACJ,aACA,YACA,YACA,YACA,YACA,YAAY,gBACZ,eACE;CAEJ,MAAM,sBAAsB,eAAe;EAE/B;EACA;EAFV,YACE,KACA,UACA;GACA,MAAM;GAHE,KAAA,MAAA;GACA,KAAA,WAAA;EAGV;EAEA,QAAQ;GACN,IAAI,KAAK,SAAS,WAAW,QAAQ,GAAG;IACtC,MAAM,MAAM,SAAS,cAAc,KAAK;IACxC,IAAI,MAAM,KAAK;IACf,IAAI,MAAM,WAAW;IACrB,OAAO;GACT;GAEA,IAAI,KAAK,aAAa,mBAAmB;IACvC,MAAM,SAAS,SAAS,cAAc,QAAQ;IAC9C,OAAO,MAAM,KAAK;IAClB,OAAO,MAAM,QAAQ;IACrB,OAAO,MAAM,WAAW;IACxB,OAAO,MAAM,SAAS;IACtB,OAAO,MAAM,SAAS;IACtB,OAAO;GACT;GAEA,IAAI,KAAK,SAAS,WAAW,QAAQ,GAAG;IACtC,MAAM,QAAQ,SAAS,cAAc,OAAO;IAC5C,MAAM,WAAW;IACjB,MAAM,MAAM,QAAQ;IAEpB,MAAM,SAAS,SAAS,cAAc,QAAQ;IAC9C,OAAO,MAAM,KAAK;IAClB,OAAO,OAAO,KAAK;IACnB,MAAM,YAAY,MAAM;IACxB,OAAO;GACT;GAEA,MAAM,WAAW,SAAS,cAAc,MAAM;GAC9C,SAAS,cAAc,KAAK;GAC5B,OAAO;EACT;CACF;CAEA,MAAM,uBAAuB,eAAe;EAEhC;EADV,YACE,QAMA;GACA,MAAM;GAPE,KAAA,SAAA;EAQV;EAEA,gBAAgB,QAAqB,SAAsB;GACzD,MAAM,OAAO,OAAO,sBAAsB;GAC1C,MAAM,aAAa,OAAO,cAAc,sBAAsB,KAAK;IACjE,MAAM;IACN,OAAO,OAAO;GAChB;GAKA,IAHkB,KAAK,OAAO,WAAW,OACtB,WAAW,QAAQ,KAAK,OAEf;IAC1B,QAAQ,MAAM,OAAO;IACrB,QAAQ,MAAM,YAAY;IAC1B,QAAQ,MAAM,QAAQ;GACxB,OAAO;IACL,QAAQ,MAAM,QAAQ;IACtB,QAAQ,MAAM,YAAY;IAC1B,QAAQ,MAAM,OAAO;GACvB;GAEA,QAAQ,MAAM,SAAS;EACzB;EAEA,uBAAuB;GACrB,MAAM,UAAU,SAAS,cAAc,KAAK;GAC5C,QAAQ,cAAc;GACtB,QAAQ,MAAM,WAAW;GACzB,QAAQ,MAAM,kBAAkB;GAChC,QAAQ,MAAM,QAAQ;GACtB,QAAQ,MAAM,UAAU;GACxB,QAAQ,MAAM,SAAS;GACvB,QAAQ,MAAM,aAAa;GAC3B,QAAQ,MAAM,aAAa;GAC3B,QAAQ,MAAM,UAAU;GACxB,QAAQ,MAAM,aACZ;GACF,QAAQ,MAAM,eAAe;GAC7B,OAAO;EACT;EAEA,oBAAoB;GAClB,MAAM,mBAAmB,SAAS,gBAChC,8BACA,KACF;GACA,iBAAiB,aAAa,SAAS,IAAI;GAC3C,iBAAiB,aAAa,UAAU,IAAI;GAC5C,iBAAiB,aAAa,WAAW,WAAW;GACpD,iBAAiB,aAAa,QAAQ,MAAM;GAE5C,MAAM,cAAc,SAAS,gBAC3B,8BACA,MACF;GACA,YAAY,aACV,KACA,2JACF;GACA,YAAY,aAAa,QAAQ,cAAc;GAC/C,iBAAiB,YAAY,WAAW;GACxC,iBAAiB,MAAM,UAAU;GAEjC,MAAM,UAAU,KAAK,qBAAqB;GAE1C,MAAM,gBAAgB,SAAS,cAAc,MAAM;GACnD,cAAc,YAAY,gBAAgB;GAC1C,cAAc,YAAY,OAAO;GACjC,cAAc,MAAM,SAAS;GAC7B,cAAc,MAAM,WAAW;GAE/B,cAAc,oBAAoB;IAChC,KAAK,gBAAgB,eAAe,OAAO;IAC3C,QAAQ,MAAM,aAAa;GAC7B;GACA,cAAc,mBAAmB;IAC/B,QAAQ,MAAM,aAAa;GAC7B;GACA,OAAO;EACT;EAEA,qBAAqB;GACnB,MAAM,aAAa,SAAS,cAAc,KAAK;GAC/C,WAAW,MAAM,KAAK,OAAO;GAC7B,WAAW,MAAM,WAAW;GAC5B,WAAW,MAAM,UAAU,KAAK,OAAO,SAAS,UAAU;GAC1D,WAAW,MAAM,SAAS;GAC1B,WAAW,iBAAiB;GAE5B,WAAW,WAAW,MAAM;IAC1B,EAAE,eAAe;IACjB,EAAE,gBAAgB;IAClB,MAAM,UAAU,EAAE;IAClB,IAAI,QAAQ,MAAM,YAAY,QAAQ;KACpC,QAAQ,MAAM,UAAU;KACxB,KAAK,OAAO,QAAQ,MAAM,KAAK,OAAO,QAAQ;IAChD,OAAO;KACL,QAAQ,MAAM,UAAU;KACxB,KAAK,OAAO,QAAQ,OAAO,KAAK,OAAO,QAAQ;IACjD;GACF;GACA,OAAO;EACT;EAEA,QAAQ;GACN,MAAM,YAAY,SAAS,cAAc,MAAM;GAC/C,UAAU,YAAY;GAEtB,MAAM,gBAAgB,KAAK,kBAAkB;GAC7C,MAAM,aAAa,KAAK,mBAAmB;GAC3C,cAAc,WAAW,MAAM;IAC7B,EAAE,eAAe;IACjB,EAAE,gBAAgB;IAClB,KAAK,YAAY,SAAS;GAC5B;GAEA,UAAU,YAAY,aAAa;GACnC,UAAU,YAAY,UAAU;GAChC,OAAO;EACT;EAEA,YAAY,WAAwB;GAClC,MAAM,aAAa,UAAU,cAAc,KAAK;GAChD,IAAI,YAAY;IACd,IAAI,WAAW,MAAM,YAAY,QAAQ;KACvC,WAAW,MAAM,UAAU;KAC3B,KAAK,OAAO,QAAQ,MAAM,KAAK,OAAO,QAAQ;IAChD,OAAO;KACL,WAAW,MAAM,UAAU;KAC3B,KAAK,OAAO,QAAQ,OAAO,KAAK,OAAO,QAAQ;IACjD;GACF;EACF;CACF;CAEA,MAAM,wBAAwB,YAAY,OAGvC;CAEH,MAAM,uBAAuB,WAAW,OAAO;EAC7C,SAAS;GACP,uBAAO,IAAI,IAAI;EACjB;EACA,OAAO,KAAK,IAAI;GACd,KAAK,MAAM,UAAU,GAAG,SACtB,IAAI,OAAO,GAAG,qBAAqB,GACjC,IAAI,IAAI,OAAO,MAAM,IAAI,OAAO,MAAM,KAAK;GAG/C,OAAO;EACT;CACF,CAAC;CAED,SAAS,OAAO,MAAkB;EAChC,MAAM,UAA+B,CAAC;EACtC,MAAM,QAAQ,KAAK,MAAM,MAAM,oBAAoB;EACnD,KAAK,MAAM,EAAE,MAAM,QAAQ,KAAK,eAC9B,WAAW,KAAK,KAAK,CAAC,CAAC,QAAQ;GAC7B;GACA;GACA,QAAQ,SAAS;IACf,IAAI,KAAK,SAAS,YAAY,KAAK,SAAS,WAAW;KACrD,MAAM,QAAQ,KAAK,SAAS,YAAY,KAAK,OAAO,KAAK,OAAO;KAChE,MAAM,MAAM,KAAK,SAAS,YAAY,KAAK,KAAK,KAAK,KAAK;KAC1D,MAAM,OAAO,KAAK,MAAM,IAAI,YAAY,OAAO,GAAG;KAClD,MAAM,WAAW,uBAAuB,IAAI;KAO5C,IALE,YAAY,SACX,SAAS,WAAW,QAAQ,KAC3B,aAAa,qBACb,SAAS,WAAW,QAAQ,IAEP;MACvB,MAAM,OAAO,WAAW,QAAQ;OAC9B,QAAQ,IAAI,cAAc,MAAM,QAAQ;OACxC,WAAW;MACb,CAAC;MACD,QAAQ,KAAK,KAAK,MAAM,KAAK,MAAM,KAAK,EAAE,CAAC;KAC7C,OAAO,IAAI,WAAW,IAAI,GAAG;MAC3B,MAAM,OAAO,WAAW,OAAO;OAC7B,QAAQ,IAAI,eAAe;QACzB,KAAK;QACL,QAAQ,MAAM,IAAI,GAAG,KAAK,IAAI;QAC9B,UAAU,UAAmB,iBAAyB;SACpD,KAAK,SAAS,EACZ,SAAS,sBAAsB,GAAG;UAChC,IAAI,GAAG;UACP,OAAO;SACT,CAAC,EACH,CAAC;QACH;QACA,UAAU,KAAK;OACjB,CAAC;OACD,WAAW;MACb,CAAC;MACD,QAAQ,KAAK,KAAK,MAAM,KAAK,EAAE,CAAC;KAClC;IACF;GACF;EACF,CAAC;EAEH,OAAO,WAAW,IAAI,OAAO;CAC/B;CA6BA,OAAO;EAAE;EAAsB,qBA3BH,WAAW,UACrC,MAAM;GACJ;GAEA,YAAY,MAAkB;IAC5B,KAAK,cAAc,OAAO,IAAI;GAChC;GAEA,OAAO,QAAoB;IACzB,IACE,OAAO,cACP,OAAO,mBACP,WAAW,OAAO,UAAU,MAAM,WAAW,OAAO,KAAK,GAEzD,KAAK,cAAc,OAAO,OAAO,IAAI;GAEzC;EACF,GACA;GACE,cAAc,MAAM,EAAE;GACtB,UAAU,WACR,WAAW,aAAa,IAAI,SAAS;IACnC,OAAO,KAAK,OAAO,MAAM,CAAC,EAAE,eAAe,WAAW;GACxD,CAAC;EACL,CAG6B;CAAoB;AACrD"}
|
|
@@ -0,0 +1,4 @@
|
|
|
1
|
+
import type { Extension } from '@codemirror/state';
|
|
2
|
+
import type { CMBundle } from '../../utils/lazy-codemirror-loader.js';
|
|
3
|
+
/** Highlights JSON values referenced by variable mappings. */
|
|
4
|
+
export declare function createJsonHighlighterExtension(cm: CMBundle, variableMapping: Record<string, string | null>, dataType: 'input' | 'output' | 'referenceOutput', activeVariable: string | null): Extension;
|
|
@@ -0,0 +1,172 @@
|
|
|
1
|
+
//#region packages/components/src/components/Code/JsonHighlighterExtension.ts
|
|
2
|
+
/** Highlights JSON values referenced by variable mappings. */
|
|
3
|
+
function createJsonHighlighterExtension(cm, variableMapping, dataType, activeVariable) {
|
|
4
|
+
const { Decoration, ViewPlugin, syntaxTree } = cm;
|
|
5
|
+
return ViewPlugin.fromClass(class {
|
|
6
|
+
decorations;
|
|
7
|
+
constructor(view) {
|
|
8
|
+
this.decorations = this.getDecorations(view);
|
|
9
|
+
}
|
|
10
|
+
getDecorations(view) {
|
|
11
|
+
const relevantMappings = Object.entries(variableMapping).filter(([, path]) => path === dataType || path?.startsWith(`${dataType}.`));
|
|
12
|
+
if (relevantMappings.length === 0) return Decoration.none;
|
|
13
|
+
const ranges = [];
|
|
14
|
+
for (const [variableName, path] of relevantMappings) {
|
|
15
|
+
if (!path) continue;
|
|
16
|
+
const highlightClass = activeVariable === variableName ? "bg-yellow-200 dark:bg-yellow-800" : "bg-green-100 dark:bg-green-950";
|
|
17
|
+
if (path === dataType) {
|
|
18
|
+
this.addDecoration(ranges, 0, view.state.doc.length, highlightClass);
|
|
19
|
+
continue;
|
|
20
|
+
}
|
|
21
|
+
const actualPath = path.substring(dataType.length + 1);
|
|
22
|
+
const pathSegments = this.parseJsonPath(actualPath);
|
|
23
|
+
this.findMatchingNodes(view, pathSegments, ranges, highlightClass);
|
|
24
|
+
}
|
|
25
|
+
return Decoration.set(ranges.map(({ from, to, decoration }) => Decoration.mark({ class: decoration.spec.class }).range(from, to)));
|
|
26
|
+
}
|
|
27
|
+
/** Parses property, array-index, and wildcard path segments. */
|
|
28
|
+
parseJsonPath(path) {
|
|
29
|
+
const segments = [];
|
|
30
|
+
let currentSegment = "";
|
|
31
|
+
let inBracket = false;
|
|
32
|
+
for (let i = 0; i < path.length; i++) {
|
|
33
|
+
const char = path[i];
|
|
34
|
+
if (char === "." && !inBracket) {
|
|
35
|
+
if (currentSegment) {
|
|
36
|
+
segments.push({
|
|
37
|
+
type: "property",
|
|
38
|
+
value: currentSegment
|
|
39
|
+
});
|
|
40
|
+
currentSegment = "";
|
|
41
|
+
}
|
|
42
|
+
} else if (char === "[") {
|
|
43
|
+
if (currentSegment) {
|
|
44
|
+
segments.push({
|
|
45
|
+
type: "property",
|
|
46
|
+
value: currentSegment
|
|
47
|
+
});
|
|
48
|
+
currentSegment = "";
|
|
49
|
+
}
|
|
50
|
+
inBracket = true;
|
|
51
|
+
} else if (char === "]" && inBracket) {
|
|
52
|
+
if (currentSegment) {
|
|
53
|
+
if (currentSegment === "*") segments.push({
|
|
54
|
+
type: "wildcard",
|
|
55
|
+
value: "*"
|
|
56
|
+
});
|
|
57
|
+
else {
|
|
58
|
+
const index = parseInt(currentSegment, 10);
|
|
59
|
+
segments.push({
|
|
60
|
+
type: "index",
|
|
61
|
+
value: isNaN(index) ? currentSegment : index
|
|
62
|
+
});
|
|
63
|
+
}
|
|
64
|
+
currentSegment = "";
|
|
65
|
+
}
|
|
66
|
+
inBracket = false;
|
|
67
|
+
} else currentSegment += char;
|
|
68
|
+
}
|
|
69
|
+
if (currentSegment) {
|
|
70
|
+
const numericIndex = parseInt(currentSegment, 10);
|
|
71
|
+
if (currentSegment === "*") segments.push({
|
|
72
|
+
type: "wildcard",
|
|
73
|
+
value: "*"
|
|
74
|
+
});
|
|
75
|
+
else if (!isNaN(numericIndex) && numericIndex.toString() === currentSegment) segments.push({
|
|
76
|
+
type: "index",
|
|
77
|
+
value: numericIndex
|
|
78
|
+
});
|
|
79
|
+
else segments.push({
|
|
80
|
+
type: "property",
|
|
81
|
+
value: currentSegment
|
|
82
|
+
});
|
|
83
|
+
}
|
|
84
|
+
return segments;
|
|
85
|
+
}
|
|
86
|
+
findMatchingNodes(view, pathSegments, ranges, highlightClass, currentDepth = 0, parentFrom = 0, parentTo = view.state.doc.length) {
|
|
87
|
+
const currentSegment = pathSegments[currentDepth];
|
|
88
|
+
if (!currentSegment) return;
|
|
89
|
+
syntaxTree(view.state).iterate({
|
|
90
|
+
from: parentFrom,
|
|
91
|
+
to: parentTo,
|
|
92
|
+
enter: (node) => {
|
|
93
|
+
if (currentSegment.type === "property" && node.name === "Property") {
|
|
94
|
+
const { keyNode, valueNode } = this.extractPropertyNodes(node);
|
|
95
|
+
if (!keyNode) return;
|
|
96
|
+
if (this.extractKeyName(view, keyNode) !== currentSegment.value) return;
|
|
97
|
+
if (currentDepth === pathSegments.length - 1 && valueNode) this.addDecoration(ranges, valueNode.from, valueNode.to, highlightClass);
|
|
98
|
+
else if (currentDepth < pathSegments.length - 1 && valueNode) {
|
|
99
|
+
if (valueNode.name === "Object" || valueNode.name === "Array") this.findMatchingNodes(view, pathSegments, ranges, highlightClass, currentDepth + 1, valueNode.from, valueNode.to);
|
|
100
|
+
}
|
|
101
|
+
} else if ((currentSegment.type === "index" || currentSegment.type === "wildcard") && node.name === "Array") {
|
|
102
|
+
const elements = this.extractArrayElements(node);
|
|
103
|
+
if (currentSegment.type === "index") {
|
|
104
|
+
const targetIndex = currentSegment.value;
|
|
105
|
+
const resolvedIndex = targetIndex >= 0 ? targetIndex : elements.length + targetIndex;
|
|
106
|
+
if (resolvedIndex < 0 || resolvedIndex >= elements.length) return;
|
|
107
|
+
const targetElement = elements[resolvedIndex];
|
|
108
|
+
if (currentDepth === pathSegments.length - 1) this.addDecoration(ranges, targetElement.from, targetElement.to, highlightClass);
|
|
109
|
+
else if (currentDepth < pathSegments.length - 1) this.findMatchingNodes(view, pathSegments, ranges, highlightClass, currentDepth + 1, targetElement.from, targetElement.to);
|
|
110
|
+
} else if (currentSegment.type === "wildcard") elements.forEach((element) => {
|
|
111
|
+
if (currentDepth === pathSegments.length - 1) this.addDecoration(ranges, element.from, element.to, highlightClass);
|
|
112
|
+
else if (currentDepth < pathSegments.length - 1) this.findMatchingNodes(view, pathSegments, ranges, highlightClass, currentDepth + 1, element.from, element.to);
|
|
113
|
+
});
|
|
114
|
+
}
|
|
115
|
+
}
|
|
116
|
+
});
|
|
117
|
+
}
|
|
118
|
+
extractArrayElements(arrayNode) {
|
|
119
|
+
const elements = [];
|
|
120
|
+
const cursor = arrayNode.node.cursor();
|
|
121
|
+
if (cursor.firstChild()) {
|
|
122
|
+
if (cursor.nextSibling()) do
|
|
123
|
+
if (cursor.name === "Expression" || cursor.name === "Number" || cursor.name === "String" || cursor.name === "True" || cursor.name === "False" || cursor.name === "Null" || cursor.name === "Array" || cursor.name === "Object") elements.push({
|
|
124
|
+
from: cursor.from,
|
|
125
|
+
to: cursor.to,
|
|
126
|
+
name: cursor.name
|
|
127
|
+
});
|
|
128
|
+
while (cursor.nextSibling());
|
|
129
|
+
}
|
|
130
|
+
return elements;
|
|
131
|
+
}
|
|
132
|
+
extractPropertyNodes(node) {
|
|
133
|
+
let keyNode;
|
|
134
|
+
let valueNode;
|
|
135
|
+
const cursor = node.node.cursor();
|
|
136
|
+
if (cursor.firstChild()) do
|
|
137
|
+
if (cursor.name === "PropertyName") keyNode = {
|
|
138
|
+
from: cursor.from,
|
|
139
|
+
to: cursor.to,
|
|
140
|
+
name: cursor.name
|
|
141
|
+
};
|
|
142
|
+
else if (cursor.name === "Expression" || cursor.name === "Number" || cursor.name === "String" || cursor.name === "True" || cursor.name === "False" || cursor.name === "Null" || cursor.name === "Array" || cursor.name === "Object") valueNode = {
|
|
143
|
+
from: cursor.from,
|
|
144
|
+
to: cursor.to,
|
|
145
|
+
name: cursor.name
|
|
146
|
+
};
|
|
147
|
+
while (cursor.nextSibling());
|
|
148
|
+
return {
|
|
149
|
+
keyNode,
|
|
150
|
+
valueNode
|
|
151
|
+
};
|
|
152
|
+
}
|
|
153
|
+
extractKeyName(view, keyNode) {
|
|
154
|
+
return view.state.doc.sliceString(keyNode.from, keyNode.to).replace(/^["'](.*)["']$/, "$1");
|
|
155
|
+
}
|
|
156
|
+
addDecoration(ranges, from, to, highlightClass) {
|
|
157
|
+
const decoration = Decoration.mark({ class: highlightClass });
|
|
158
|
+
ranges.push({
|
|
159
|
+
from,
|
|
160
|
+
to,
|
|
161
|
+
decoration
|
|
162
|
+
});
|
|
163
|
+
}
|
|
164
|
+
update(update) {
|
|
165
|
+
if (update.docChanged || update.viewportChanged) this.decorations = this.getDecorations(update.view);
|
|
166
|
+
}
|
|
167
|
+
}, { decorations: (v) => v.decorations });
|
|
168
|
+
}
|
|
169
|
+
//#endregion
|
|
170
|
+
export { createJsonHighlighterExtension };
|
|
171
|
+
|
|
172
|
+
//# sourceMappingURL=JsonHighlighterExtension.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"JsonHighlighterExtension.js","names":[],"sources":["../../../src/components/Code/JsonHighlighterExtension.ts"],"sourcesContent":["import type { Extension } from '@codemirror/state';\nimport type {\n Decoration,\n DecorationSet,\n EditorView,\n ViewUpdate,\n} from '@codemirror/view';\nimport type { SyntaxNodeRef } from '@lezer/common';\n\nimport type { CMBundle } from '../../utils/lazy-codemirror-loader';\n\ntype NodeInfo = { from: number; to: number; name: string };\ntype DecoratedRange = { from: number; to: number; decoration: Decoration };\n\ntype PathSegment = {\n type: 'property' | 'index' | 'wildcard';\n value: string | number;\n};\n\n/** Highlights JSON values referenced by variable mappings. */\nexport function createJsonHighlighterExtension(\n cm: CMBundle,\n variableMapping: Record<string, string | null>,\n dataType: 'input' | 'output' | 'referenceOutput',\n activeVariable: string | null\n): Extension {\n const { Decoration, ViewPlugin, syntaxTree } = cm;\n return ViewPlugin.fromClass(\n class {\n decorations: DecorationSet;\n\n constructor(view: EditorView) {\n this.decorations = this.getDecorations(view);\n }\n\n getDecorations(view: EditorView): DecorationSet {\n // Match the full data type or a path nested beneath it.\n const relevantMappings = Object.entries(variableMapping).filter(\n ([, path]) => path === dataType || path?.startsWith(`${dataType}.`)\n );\n\n if (relevantMappings.length === 0) {\n return Decoration.none;\n }\n\n const ranges: DecoratedRange[] = [];\n\n for (const [variableName, path] of relevantMappings) {\n if (!path) continue;\n\n const isActiveVariable = activeVariable === variableName;\n\n const highlightClass = isActiveVariable\n ? 'bg-yellow-200 dark:bg-yellow-800'\n : 'bg-green-100 dark:bg-green-950';\n\n if (path === dataType) {\n this.addDecoration(\n ranges,\n 0,\n view.state.doc.length,\n highlightClass\n );\n continue;\n }\n\n // Strip the data type and separator from the stored path.\n const actualPath = path.substring(dataType.length + 1);\n const pathSegments = this.parseJsonPath(actualPath);\n\n this.findMatchingNodes(view, pathSegments, ranges, highlightClass);\n }\n\n return Decoration.set(\n ranges.map(({ from, to, decoration }) =>\n Decoration.mark({\n class: decoration.spec.class as string,\n }).range(from, to)\n )\n );\n }\n\n /** Parses property, array-index, and wildcard path segments. */\n parseJsonPath(path: string): PathSegment[] {\n const segments: PathSegment[] = [];\n let currentSegment = '';\n let inBracket = false;\n\n for (let i = 0; i < path.length; i++) {\n const char = path[i];\n\n if (char === '.' && !inBracket) {\n if (currentSegment) {\n segments.push({ type: 'property', value: currentSegment });\n currentSegment = '';\n }\n } else if (char === '[') {\n if (currentSegment) {\n segments.push({ type: 'property', value: currentSegment });\n currentSegment = '';\n }\n inBracket = true;\n } else if (char === ']' && inBracket) {\n if (currentSegment) {\n if (currentSegment === '*') {\n segments.push({ type: 'wildcard', value: '*' });\n } else {\n const index = parseInt(currentSegment, 10);\n segments.push({\n type: 'index',\n value: isNaN(index) ? currentSegment : index,\n });\n }\n currentSegment = '';\n }\n inBracket = false;\n } else {\n currentSegment += char;\n }\n }\n\n if (currentSegment) {\n const numericIndex = parseInt(currentSegment, 10);\n if (currentSegment === '*') {\n segments.push({ type: 'wildcard', value: '*' });\n } else if (\n !isNaN(numericIndex) &&\n numericIndex.toString() === currentSegment\n ) {\n segments.push({ type: 'index', value: numericIndex });\n } else {\n segments.push({ type: 'property', value: currentSegment });\n }\n }\n\n return segments;\n }\n\n findMatchingNodes(\n view: EditorView,\n pathSegments: PathSegment[],\n ranges: DecoratedRange[],\n highlightClass: string,\n currentDepth = 0,\n parentFrom = 0,\n parentTo = view.state.doc.length\n ): void {\n const currentSegment = pathSegments[currentDepth];\n if (!currentSegment) return;\n\n const tree = syntaxTree(view.state);\n\n tree.iterate({\n from: parentFrom,\n to: parentTo,\n enter: (node) => {\n if (\n currentSegment.type === 'property' &&\n node.name === 'Property'\n ) {\n const { keyNode, valueNode } = this.extractPropertyNodes(node);\n\n if (!keyNode) return;\n\n const keyName = this.extractKeyName(view, keyNode);\n\n if (keyName !== currentSegment.value) return;\n\n if (currentDepth === pathSegments.length - 1 && valueNode) {\n this.addDecoration(\n ranges,\n valueNode.from,\n valueNode.to,\n highlightClass\n );\n } else if (currentDepth < pathSegments.length - 1 && valueNode) {\n if (valueNode.name === 'Object' || valueNode.name === 'Array') {\n this.findMatchingNodes(\n view,\n pathSegments,\n ranges,\n highlightClass,\n currentDepth + 1,\n valueNode.from,\n valueNode.to\n );\n }\n }\n } else if (\n (currentSegment.type === 'index' ||\n currentSegment.type === 'wildcard') &&\n node.name === 'Array'\n ) {\n const elements = this.extractArrayElements(node);\n if (currentSegment.type === 'index') {\n const targetIndex = currentSegment.value as number;\n\n // Negative indices address elements from the end of the array.\n const resolvedIndex =\n targetIndex >= 0\n ? targetIndex\n : elements.length + targetIndex;\n\n if (resolvedIndex < 0 || resolvedIndex >= elements.length) {\n return;\n }\n\n const targetElement = elements[resolvedIndex];\n\n if (currentDepth === pathSegments.length - 1) {\n this.addDecoration(\n ranges,\n targetElement.from,\n targetElement.to,\n highlightClass\n );\n } else if (currentDepth < pathSegments.length - 1) {\n this.findMatchingNodes(\n view,\n pathSegments,\n ranges,\n highlightClass,\n currentDepth + 1,\n targetElement.from,\n targetElement.to\n );\n }\n } else if (currentSegment.type === 'wildcard') {\n elements.forEach((element) => {\n if (currentDepth === pathSegments.length - 1) {\n this.addDecoration(\n ranges,\n element.from,\n element.to,\n highlightClass\n );\n } else if (currentDepth < pathSegments.length - 1) {\n this.findMatchingNodes(\n view,\n pathSegments,\n ranges,\n highlightClass,\n currentDepth + 1,\n element.from,\n element.to\n );\n }\n });\n }\n }\n },\n });\n }\n\n private extractArrayElements(arrayNode: SyntaxNodeRef): NodeInfo[] {\n const elements: NodeInfo[] = [];\n\n const cursor = arrayNode.node.cursor();\n\n if (cursor.firstChild()) {\n if (cursor.nextSibling()) {\n do {\n if (\n cursor.name === 'Expression' ||\n cursor.name === 'Number' ||\n cursor.name === 'String' ||\n cursor.name === 'True' ||\n cursor.name === 'False' ||\n cursor.name === 'Null' ||\n cursor.name === 'Array' ||\n cursor.name === 'Object'\n ) {\n elements.push({\n from: cursor.from,\n to: cursor.to,\n name: cursor.name,\n });\n }\n } while (cursor.nextSibling());\n }\n }\n\n return elements;\n }\n\n private extractPropertyNodes(node: SyntaxNodeRef): {\n keyNode?: NodeInfo;\n valueNode?: NodeInfo;\n } {\n let keyNode: NodeInfo | undefined;\n let valueNode: NodeInfo | undefined;\n\n const cursor = node.node.cursor();\n if (cursor.firstChild()) {\n do {\n if (cursor.name === 'PropertyName') {\n keyNode = {\n from: cursor.from,\n to: cursor.to,\n name: cursor.name,\n };\n } else if (\n cursor.name === 'Expression' ||\n cursor.name === 'Number' ||\n cursor.name === 'String' ||\n cursor.name === 'True' ||\n cursor.name === 'False' ||\n cursor.name === 'Null' ||\n cursor.name === 'Array' ||\n cursor.name === 'Object'\n ) {\n valueNode = {\n from: cursor.from,\n to: cursor.to,\n name: cursor.name,\n };\n }\n } while (cursor.nextSibling());\n }\n\n return { keyNode, valueNode };\n }\n\n private extractKeyName(view: EditorView, keyNode: NodeInfo): string {\n const keyText = view.state.doc.sliceString(keyNode.from, keyNode.to);\n return keyText.replace(/^[\"'](.*)[\"']$/, '$1');\n }\n\n private addDecoration(\n ranges: DecoratedRange[],\n from: number,\n to: number,\n highlightClass: string\n ): void {\n const decoration = Decoration.mark({\n class: highlightClass,\n });\n\n ranges.push({\n from,\n to,\n decoration,\n });\n }\n\n update(update: ViewUpdate) {\n if (update.docChanged || update.viewportChanged) {\n this.decorations = this.getDecorations(update.view);\n }\n }\n },\n {\n decorations: (v) => v.decorations,\n }\n );\n}\n"],"mappings":"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"}
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
//#region packages/components/src/components/Code/constants.tsx
|
|
2
|
+
var MAX_CODE_LENGTH = 5e3;
|
|
3
|
+
var MAX_LINE_LENGTH = 1e3;
|
|
4
|
+
var MAX_TEXT_LENGTH = 2e4;
|
|
5
|
+
var MAX_CODE_HEIGHT = 450;
|
|
6
|
+
var ROW_WIDTH = 80;
|
|
7
|
+
var ROW_HEIGHT = 20;
|
|
8
|
+
//#endregion
|
|
9
|
+
export { MAX_CODE_HEIGHT, MAX_CODE_LENGTH, MAX_LINE_LENGTH, MAX_TEXT_LENGTH, ROW_HEIGHT, ROW_WIDTH };
|
|
10
|
+
|
|
11
|
+
//# sourceMappingURL=constants.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"constants.js","names":[],"sources":["../../../src/components/Code/constants.tsx"],"sourcesContent":["export const MAX_CODE_LENGTH = 5_000;\nexport const MAX_LINE_LENGTH = 1_000;\nexport const MAX_TEXT_LENGTH = 20_000;\n\nexport const MAX_CODE_HEIGHT = 450;\n\nexport const ROW_WIDTH = 80;\nexport const ROW_HEIGHT = 20;\n"],"mappings":";AAAA,IAAa,kBAAkB;AAC/B,IAAa,kBAAkB;AAC/B,IAAa,kBAAkB;AAE/B,IAAa,kBAAkB;AAE/B,IAAa,YAAY;AACzB,IAAa,aAAa"}
|
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
import type { Extension } from '@codemirror/state';
|
|
2
|
+
import type { EditorView } from '@codemirror/view';
|
|
3
|
+
import type { CodeLanguageType } from './types.js';
|
|
4
|
+
/** Props for the syntax-highlighted CodeMirror block. */
|
|
5
|
+
export interface CodeProps {
|
|
6
|
+
language: CodeLanguageType;
|
|
7
|
+
extensions?: Extension[];
|
|
8
|
+
value: string | undefined;
|
|
9
|
+
onChange?: (code: string) => void;
|
|
10
|
+
readOnly?: boolean;
|
|
11
|
+
autoFocus?: boolean;
|
|
12
|
+
height?: string;
|
|
13
|
+
maxHeight?: string;
|
|
14
|
+
omitMaxHeight?: boolean;
|
|
15
|
+
width?: string;
|
|
16
|
+
fontSize?: string;
|
|
17
|
+
placeholder?: string;
|
|
18
|
+
showCopyButton?: boolean;
|
|
19
|
+
testId?: string;
|
|
20
|
+
variant?: 'plain' | 'full';
|
|
21
|
+
onCreateEditor?: (view: EditorView) => void;
|
|
22
|
+
converterExtensions?: Extension[];
|
|
23
|
+
}
|
|
24
|
+
/**
|
|
25
|
+
* Renders syntax-highlighted code with optional editing and copy support.
|
|
26
|
+
*
|
|
27
|
+
* Import directly from `@langchain/macaw-components/Code` so the CodeMirror
|
|
28
|
+
* dependency is only loaded by surfaces that use it.
|
|
29
|
+
*/
|
|
30
|
+
export declare const Code: ({ value, readOnly, onChange, autoFocus, placeholder, language, extensions, converterExtensions, height, maxHeight, omitMaxHeight, width, fontSize, onCreateEditor, variant, testId, showCopyButton, }: CodeProps) => import("react").JSX.Element | null;
|