{"version":3,"file":"types.mjs","sources":["../../../../src/querybuilder/shared/types.ts"],"sourcesContent":["// Core Grafana history https://github.com/grafana/grafana/blob/v11.0.0-preview/public/app/plugins/datasource/prometheus/querybuilder/shared/types.ts\n/**\n * Shared types that can be reused by Loki and other data sources\n */\nimport { type ComponentType } from 'react';\n\nimport { type DataSourceApi, type RegistryItem, type SelectableValue, type TimeRange } from '@grafana/data';\n\nimport { type PromVisualQuery } from '../types';\n\nexport interface QueryBuilderLabelFilter {\n  label: string;\n  op: string;\n  value: string;\n}\n\nexport interface QueryBuilderOperation {\n  id: string;\n  params: QueryBuilderOperationParamValue[];\n}\n\nexport interface QueryWithOperations {\n  operations: QueryBuilderOperation[];\n}\n\nexport interface QueryBuilderOperationDef<T = any> extends RegistryItem {\n  documentation?: string;\n  params: QueryBuilderOperationParamDef[];\n  defaultParams: QueryBuilderOperationParamValue[];\n  category: string;\n  hideFromList?: boolean;\n  alternativesKey?: string;\n  /** Can be used to control operation placement when adding a new operations, lower are placed first */\n  orderRank?: number;\n  renderer: QueryBuilderOperationRenderer;\n  addOperationHandler: QueryBuilderAddOperationHandler<T>;\n  paramChangedHandler?: QueryBuilderOnParamChangedHandler;\n  explainHandler?: QueryBuilderExplainOperationHandler;\n  changeTypeHandler?: (op: QueryBuilderOperation, newDef: QueryBuilderOperationDef<T>) => QueryBuilderOperation;\n}\n\ntype QueryBuilderAddOperationHandler<T> = (def: QueryBuilderOperationDef, query: T, modeller: VisualQueryModeller) => T;\n\ntype QueryBuilderExplainOperationHandler = (op: QueryBuilderOperation, def?: QueryBuilderOperationDef) => string;\n\ntype QueryBuilderOnParamChangedHandler = (\n  index: number,\n  operation: QueryBuilderOperation,\n  operationDef: QueryBuilderOperationDef\n) => QueryBuilderOperation;\n\ntype QueryBuilderOperationRenderer = (\n  model: QueryBuilderOperation,\n  def: QueryBuilderOperationDef,\n  innerExpr: string\n) => string;\n\nexport type QueryBuilderOperationParamValue = string | number | boolean;\n\nexport interface QueryBuilderOperationParamDef {\n  name: string;\n  type: 'string' | 'number' | 'boolean';\n  options?: string[] | number[] | Array<SelectableValue<string>>;\n  hideName?: boolean;\n  restParam?: boolean;\n  optional?: boolean;\n  placeholder?: string;\n  description?: string;\n  minWidth?: number;\n  editor?: ComponentType<QueryBuilderOperationParamEditorProps> | string;\n  runQueryOnEnter?: boolean;\n}\n\nexport interface QueryBuilderOperationParamEditorProps {\n  onChange: (index: number, value: QueryBuilderOperationParamValue) => void;\n  onRunQuery: () => void;\n  /** Parameter index */\n  index: number;\n  operationId: string;\n  query: PromVisualQuery;\n  datasource: DataSourceApi;\n  timeRange: TimeRange;\n  paramDef: QueryBuilderOperationParamDef;\n  queryModeller: VisualQueryModeller;\n  value?: QueryBuilderOperationParamValue;\n}\n\nexport enum QueryEditorMode {\n  Code = 'code',\n  Builder = 'builder',\n}\n\nexport interface VisualQueryModeller {\n  getOperationsForCategory(category: string): QueryBuilderOperationDef[];\n\n  getAlternativeOperations(key: string): QueryBuilderOperationDef[];\n\n  getCategories(): string[];\n\n  getOperationDef(id: string): QueryBuilderOperationDef | undefined;\n}\n\nexport interface VisualQueryBinary<T> {\n  operator: string;\n  vectorMatchesType?: 'on' | 'ignoring';\n  vectorMatches?: string;\n  query: T;\n}\n\nexport interface PrometheusVisualQuery {\n  metric?: string;\n  labels: QueryBuilderLabelFilter[];\n  operations: QueryBuilderOperation[];\n  binaryQueries?: Array<VisualQueryBinary<PrometheusVisualQuery>>;\n}\n"],"names":["QueryEditorMode"],"mappings":";AAuFO,IAAK,eAAA,qBAAAA,gBAAAA,KAAL;AACL,EAAAA,iBAAA,MAAA,CAAA,GAAO,MAAA;AACP,EAAAA,iBAAA,SAAA,CAAA,GAAU,SAAA;AAFA,EAAA,OAAAA,gBAAAA;AAAA,CAAA,EAAA,eAAA,IAAA,EAAA;;;;"}