{"version":3,"file":"QueryToolbox.mjs","sources":["../../../../src/components/query-editor-raw/QueryToolbox.tsx"],"sourcesContent":["import { css } from '@emotion/css';\nimport { useMemo, useState } from 'react';\n\nimport { t } from '@grafana/i18n';\nimport { reportInteraction } from '@grafana/runtime';\nimport { Stack, Icon, IconButton, Tooltip, useTheme2 } from '@grafana/ui';\n\nimport { QueryValidator, type QueryValidatorProps } from './QueryValidator';\n\ninterface QueryToolboxProps extends Omit<QueryValidatorProps, 'onValidate'> {\n  showTools?: boolean;\n  isExpanded?: boolean;\n  onFormatCode?: () => void;\n  onExpand?: (expand: boolean) => void;\n  onValidate?: (isValid: boolean) => void;\n}\n\nexport function QueryToolbox({ showTools, onFormatCode, onExpand, isExpanded, ...validatorProps }: QueryToolboxProps) {\n  const theme = useTheme2();\n  const [validationResult, setValidationResult] = useState<boolean>();\n\n  const styles = useMemo(() => {\n    return {\n      container: css({\n        border: `1px solid ${theme.colors.border.medium}`,\n        borderTop: 'none',\n        padding: theme.spacing(0.5, 0.5, 0.5, 0.5),\n        display: 'flex',\n        flexGrow: 1,\n        justifyContent: 'space-between',\n        fontSize: theme.typography.bodySmall.fontSize,\n      }),\n      error: css({\n        color: theme.colors.error.text,\n        fontSize: theme.typography.bodySmall.fontSize,\n        fontFamily: theme.typography.fontFamilyMonospace,\n      }),\n      valid: css({\n        color: theme.colors.success.text,\n      }),\n      info: css({\n        color: theme.colors.text.secondary,\n      }),\n      hint: css({\n        color: theme.colors.text.disabled,\n        whiteSpace: 'nowrap',\n        cursor: 'help',\n      }),\n    };\n  }, [theme]);\n\n  let style = {};\n\n  if (!showTools && validationResult === undefined) {\n    style = { height: 0, padding: 0, visibility: 'hidden' };\n  }\n\n  return (\n    <div className={styles.container} style={style}>\n      <div>\n        {validatorProps.onValidate && (\n          <QueryValidator\n            {...validatorProps}\n            onValidate={(result: boolean) => {\n              setValidationResult(result);\n              validatorProps.onValidate!(result);\n            }}\n          />\n        )}\n      </div>\n      {showTools && (\n        <div>\n          <Stack gap={1}>\n            {onFormatCode && (\n              <IconButton\n                onClick={() => {\n                  reportInteraction('grafana_sql_query_formatted', {\n                    datasource: validatorProps.query.datasource?.type,\n                  });\n                  onFormatCode();\n                }}\n                name=\"brackets-curly\"\n                size=\"xs\"\n                tooltip={t('grafana-sql.components.query-toolbox.tooltip-format-query', 'Format query')}\n              />\n            )}\n            {onExpand && (\n              <IconButton\n                onClick={() => {\n                  reportInteraction('grafana_sql_editor_expand', {\n                    datasource: validatorProps.query.datasource?.type,\n                    expanded: !isExpanded,\n                  });\n\n                  onExpand(!isExpanded);\n                }}\n                name={isExpanded ? 'angle-up' : 'angle-down'}\n                size=\"xs\"\n                tooltip={\n                  isExpanded\n                    ? t('grafana-sql.components.query-toolbox.tooltip-collapse', 'Collapse editor')\n                    : t('grafana-sql.components.query-toolbox.tooltip-expand', 'Expand editor')\n                }\n              />\n            )}\n            <Tooltip\n              content={t(\n                'grafana-sql.components.query-toolbox.content-hit-ctrlcmdreturn-to-run-query',\n                'Hit CTRL/CMD+Return to run query'\n              )}\n            >\n              <Icon className={styles.hint} name=\"keyboard\" />\n            </Tooltip>\n          </Stack>\n        </div>\n      )}\n    </div>\n  );\n}\n"],"names":[],"mappings":"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"}