{"version":3,"file":"QueryEditorWithMigration.cjs","sources":["../../../src/components/QueryEditorWithMigration.tsx"],"sourcesContent":["import React, { useEffect, useState } from 'react';\nimport Skeleton from 'react-loading-skeleton';\n\nimport {\n  type DataSourceApi,\n  type DataSourceOptionsType,\n  type DataSourceQueryType,\n  type QueryEditorProps,\n} from '@grafana/data';\nimport { type DataQuery, type DataSourceJsonData } from '@grafana/schema';\n\nimport { isMigrationHandler, migrateQuery } from '../utils/migrationHandler';\n\n/**\n * @alpha Experimental: QueryEditorWithMigration is a higher order component that wraps the QueryEditor component\n * and ensures that the query is migrated before being passed to the QueryEditor.\n */\nexport function QueryEditorWithMigration<\n  DSType extends DataSourceApi<TQuery, TOptions>,\n  TQuery extends DataQuery = DataSourceQueryType<DSType>,\n  TOptions extends DataSourceJsonData = DataSourceOptionsType<DSType>,\n>(QueryEditor: React.ComponentType<QueryEditorProps<DSType, TQuery, TOptions>>) {\n  const WithExtra = (props: QueryEditorProps<DSType, TQuery, TOptions>) => {\n    const [migrated, setMigrated] = useState(false);\n    const [query, setQuery] = useState(props.query);\n\n    useEffect(() => {\n      if (props.query && isMigrationHandler(props.datasource)) {\n        migrateQuery(props.datasource, props.query).then((migrated) => {\n          props.onChange(migrated);\n          setQuery(migrated);\n          setMigrated(true);\n        });\n      } else {\n        setMigrated(true);\n      }\n    }, []); // eslint-disable-line react-hooks/exhaustive-deps\n\n    useEffect(() => {\n      setQuery(props.query);\n    }, [props.query]);\n\n    if (!migrated) {\n      return <Skeleton containerTestId=\"react-loading-skeleton-testid\" height={75} />;\n    }\n    return <QueryEditor {...props} query={query} />;\n  };\n  return WithExtra;\n}\n"],"names":["useState","useEffect","isMigrationHandler","migrateQuery","migrated","jsx","Skeleton"],"mappings":";;;;;;;;;;;;;;AAiBO,SAAS,yBAId,WAAA,EAA8E;AAC9E,EAAA,MAAM,SAAA,GAAY,CAAC,KAAA,KAAsD;AACvE,IAAA,MAAM,CAAC,QAAA,EAAU,WAAW,CAAA,GAAIA,eAAS,KAAK,CAAA;AAC9C,IAAA,MAAM,CAAC,KAAA,EAAO,QAAQ,CAAA,GAAIA,cAAA,CAAS,MAAM,KAAK,CAAA;AAE9C,IAAAC,eAAA,CAAU,MAAM;AACd,MAAA,IAAI,KAAA,CAAM,KAAA,IAASC,mCAAA,CAAmB,KAAA,CAAM,UAAU,CAAA,EAAG;AACvD,QAAAC,6BAAA,CAAa,MAAM,UAAA,EAAY,KAAA,CAAM,KAAK,CAAA,CAAE,IAAA,CAAK,CAACC,SAAAA,KAAa;AAC7D,UAAA,KAAA,CAAM,SAASA,SAAQ,CAAA;AACvB,UAAA,QAAA,CAASA,SAAQ,CAAA;AACjB,UAAA,WAAA,CAAY,IAAI,CAAA;AAAA,QAClB,CAAC,CAAA;AAAA,MACH,CAAA,MAAO;AACL,QAAA,WAAA,CAAY,IAAI,CAAA;AAAA,MAClB;AAAA,IACF,CAAA,EAAG,EAAE,CAAA;AAEL,IAAAH,eAAA,CAAU,MAAM;AACd,MAAA,QAAA,CAAS,MAAM,KAAK,CAAA;AAAA,IACtB,CAAA,EAAG,CAAC,KAAA,CAAM,KAAK,CAAC,CAAA;AAEhB,IAAA,IAAI,CAAC,QAAA,EAAU;AACb,MAAA,uBAAOI,cAAA,CAACC,yBAAA,EAAA,EAAS,eAAA,EAAgB,+BAAA,EAAgC,QAAQ,EAAA,EAAI,CAAA;AAAA,IAC/E;AACA,IAAA,uBAAOD,cAAA,CAAC,WAAA,EAAA,EAAa,GAAG,KAAA,EAAO,KAAA,EAAc,CAAA;AAAA,EAC/C,CAAA;AACA,EAAA,OAAO,SAAA;AACT;;;;"}