{"version":3,"file":"binaryScalarOperations.cjs","sources":["../../../src/querybuilder/binaryScalarOperations.ts"],"sourcesContent":["// Core Grafana history https://github.com/grafana/grafana/blob/v11.0.0-preview/public/app/plugins/datasource/prometheus/querybuilder/binaryScalarOperations.ts\nimport { defaultAddOperationHandler } from './operationUtils';\nimport {\n  type QueryBuilderOperation,\n  type QueryBuilderOperationDef,\n  type QueryBuilderOperationParamDef,\n} from './shared/types';\nimport { PromOperationId, PromVisualQueryOperationCategory } from './types';\n\nexport const binaryScalarDefs = [\n  {\n    id: PromOperationId.Addition,\n    name: 'Add scalar',\n    sign: '+',\n  },\n  {\n    id: PromOperationId.Subtraction,\n    name: 'Subtract scalar',\n    sign: '-',\n  },\n  {\n    id: PromOperationId.MultiplyBy,\n    name: 'Multiply by scalar',\n    sign: '*',\n  },\n  {\n    id: PromOperationId.DivideBy,\n    name: 'Divide by scalar',\n    sign: '/',\n  },\n  {\n    id: PromOperationId.Modulo,\n    name: 'Modulo by scalar',\n    sign: '%',\n  },\n  {\n    id: PromOperationId.Exponent,\n    name: 'Exponent',\n    sign: '^',\n  },\n  {\n    id: PromOperationId.EqualTo,\n    name: 'Equal to',\n    sign: '==',\n    comparison: true,\n  },\n  {\n    id: PromOperationId.NotEqualTo,\n    name: 'Not equal to',\n    sign: '!=',\n    comparison: true,\n  },\n  {\n    id: PromOperationId.GreaterThan,\n    name: 'Greater than',\n    sign: '>',\n    comparison: true,\n  },\n  {\n    id: PromOperationId.LessThan,\n    name: 'Less than',\n    sign: '<',\n    comparison: true,\n  },\n  {\n    id: PromOperationId.GreaterOrEqual,\n    name: 'Greater or equal to',\n    sign: '>=',\n    comparison: true,\n  },\n  {\n    id: PromOperationId.LessOrEqual,\n    name: 'Less or equal to',\n    sign: '<=',\n    comparison: true,\n  },\n];\n\nexport const binaryScalarOperatorToOperatorName = binaryScalarDefs.reduce<\n  Record<string, { id: string; comparison?: boolean }>\n>((acc, def) => {\n  acc[def.sign] = {\n    id: def.id,\n    comparison: def.comparison,\n  };\n  return acc;\n}, {});\n\n// Not sure about this one. It could also be a more generic 'Simple math operation' where user specifies\n// both the operator and the operand in a single input\nexport const binaryScalarOperations: QueryBuilderOperationDef[] = binaryScalarDefs.map((opDef) => {\n  const params: QueryBuilderOperationParamDef[] = [{ name: 'Value', type: 'number' }];\n  let defaultParams: [number] | [number, boolean] = [2];\n  if (opDef.comparison) {\n    params.push({\n      name: 'Bool',\n      type: 'boolean',\n      description: 'If checked comparison will return 0 or 1 for the value rather than filtering.',\n    });\n    defaultParams = [2, false];\n  }\n\n  return {\n    id: opDef.id,\n    name: opDef.name,\n    params,\n    defaultParams,\n    alternativesKey: 'binary scalar operations',\n    category: PromVisualQueryOperationCategory.BinaryOps,\n    renderer: getSimpleBinaryRenderer(opDef.sign),\n    addOperationHandler: defaultAddOperationHandler,\n  };\n});\n\nfunction getSimpleBinaryRenderer(operator: string) {\n  return function binaryRenderer(model: QueryBuilderOperation, def: QueryBuilderOperationDef, innerExpr: string) {\n    let param = model.params[0];\n    let bool = '';\n    if (model.params.length === 2) {\n      bool = model.params[1] ? ' bool' : '';\n    }\n\n    return `${innerExpr} ${operator}${bool} ${param}`;\n  };\n}\n"],"names":["PromOperationId","PromVisualQueryOperationCategory","defaultAddOperationHandler"],"mappings":"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"}