{"version":3,"file":"variables.cjs","sources":["../../../src/types/variables.ts"],"sourcesContent":["import { ComponentType } from 'react';\nimport { Observable } from 'rxjs';\n\nimport {\n  DataQueryRequest,\n  DataQueryResponse,\n  DataSourceApi,\n  DataSourceJsonData,\n  DataSourceOptionsType,\n  DataSourceQueryType,\n  QueryEditorProps,\n} from './datasource';\nimport { DataQuery } from './query';\n\n/**\n * Enum with the different variable support types\n */\nexport enum VariableSupportType {\n  Legacy = 'legacy',\n  Standard = 'standard',\n  Custom = 'custom',\n  Datasource = 'datasource',\n}\n\n/**\n * Base class for VariableSupport classes\n */\nexport abstract class VariableSupportBase<\n  DSType extends DataSourceApi<TQuery, TOptions>,\n  TQuery extends DataQuery = DataSourceQueryType<DSType>,\n  TOptions extends DataSourceJsonData = DataSourceOptionsType<DSType>,\n> {\n  abstract getType(): VariableSupportType;\n\n  /**\n   * Define this method in the config if you want to pre-populate the editor with a default query.\n   */\n  getDefaultQuery?(): Partial<TQuery>;\n}\n\n/**\n * Extend this class in a data source plugin to use the standard query editor for Query variables\n */\nexport abstract class StandardVariableSupport<\n  DSType extends DataSourceApi<TQuery, TOptions>,\n  TQuery extends DataQuery = DataSourceQueryType<DSType>,\n  TOptions extends DataSourceJsonData = DataSourceOptionsType<DSType>,\n> extends VariableSupportBase<DSType, TQuery, TOptions> {\n  getType(): VariableSupportType {\n    return VariableSupportType.Standard;\n  }\n\n  abstract toDataQuery(query: StandardVariableQuery): TQuery;\n  query?(request: DataQueryRequest<TQuery>): Observable<DataQueryResponse>;\n}\n\n/**\n * Extend this class in a data source plugin to use a customized query editor for Query variables\n */\nexport abstract class CustomVariableSupport<\n  DSType extends DataSourceApi<TQuery, TOptions>,\n  VariableQuery extends DataQuery = any,\n  TQuery extends DataQuery = DataSourceQueryType<DSType>,\n  TOptions extends DataSourceJsonData = DataSourceOptionsType<DSType>,\n> extends VariableSupportBase<DSType, TQuery, TOptions> {\n  getType(): VariableSupportType {\n    return VariableSupportType.Custom;\n  }\n\n  abstract editor: ComponentType<QueryEditorProps<DSType, TQuery, TOptions, VariableQuery>>;\n\n  /**\n   * This can return data in various formats as DataQueryResponse allows multiple types. In general though the\n   * assumption is that there will be a string Field or value in an Array of objects that will be taken as the possible\n   * variable values. You can also use this type directly MetricFindValue or just use text/value/expendable fields/keys\n   * in the response.\n   * @param request\n   */\n  abstract query(request: DataQueryRequest<VariableQuery>): Observable<DataQueryResponse>;\n}\n\n/**\n * Extend this class in a data source plugin to use the query editor in the data source plugin for Query variables\n */\nexport abstract class DataSourceVariableSupport<\n  DSType extends DataSourceApi<TQuery, TOptions>,\n  TQuery extends DataQuery = DataSourceQueryType<DSType>,\n  TOptions extends DataSourceJsonData = DataSourceOptionsType<DSType>,\n> extends VariableSupportBase<DSType, TQuery, TOptions> {\n  getType(): VariableSupportType {\n    return VariableSupportType.Datasource;\n  }\n}\n\n/**\n * Defines the standard DatQuery used by data source plugins that implement StandardVariableSupport\n */\nexport interface StandardVariableQuery extends DataQuery {\n  query: string;\n}\n"],"names":["VariableSupportType"],"mappings":";;;;;AAiBO,IAAK,mBAAA,qBAAAA,oBAAAA,KAAL;AACL,EAAAA,qBAAA,QAAA,CAAA,GAAS,QAAA;AACT,EAAAA,qBAAA,UAAA,CAAA,GAAW,UAAA;AACX,EAAAA,qBAAA,QAAA,CAAA,GAAS,QAAA;AACT,EAAAA,qBAAA,YAAA,CAAA,GAAa,YAAA;AAJH,EAAA,OAAAA,oBAAAA;AAAA,CAAA,EAAA,mBAAA,IAAA,EAAA;AAUL,MAAe,mBAAA,CAIpB;AAOF;AAKO,MAAe,gCAIZ,mBAAA,CAA8C;AAAA,EACtD,OAAA,GAA+B;AAC7B,IAAA,OAAO,UAAA;AAAA,EACT;AAIF;AAKO,MAAe,8BAKZ,mBAAA,CAA8C;AAAA,EACtD,OAAA,GAA+B;AAC7B,IAAA,OAAO,QAAA;AAAA,EACT;AAYF;AAKO,MAAe,kCAIZ,mBAAA,CAA8C;AAAA,EACtD,OAAA,GAA+B;AAC7B,IAAA,OAAO,YAAA;AAAA,EACT;AACF;;;;;;;;"}