{"version":3,"file":"LibraryPanelsPage.4a952d4aa9c21984995a.js","mappings":"yMAQO,MAAMA,EAAoB,IAAM,CACrC,KAAM,CAACC,EAAUC,CAAW,KAAI,YAAwC,MAAS,EAEjF,OACE,gBAAC,IAAI,CAAC,MAAM,6BACV,gBAAC,IAAK,SAAL,KACC,gBAAC,IAAmB,CAAC,QAASA,EAAa,qBAAoB,GAAC,SAAQ,GAAC,gBAAe,GAAC,iBAAgB,GAAC,EACzGD,EAAW,gBAAC,IAAqB,CAAC,UAAW,IAAMC,EAAY,MAAS,EAAG,aAAcD,CAAA,CAAU,EAAK,IAC3G,CACF,CAEJ,EAEA,EAAeD,C,yKCHR,SAASG,EAAsB,CAAE,aAAAC,EAAc,UAAAC,CAAU,EAA4C,CAC1G,MAAMC,KAAS,MAAWC,CAAS,EAC7B,CAACC,EAASC,CAAU,KAAI,YAAS,EAAK,EACtC,CAACC,EAAWC,CAAY,KAAI,YAAS,CAAC,EACtC,CAACC,EAAQC,CAAS,KAAI,YAA2D,MAAS,KAChG,aAAU,IAAM,EACO,SAAY,CAC/B,MAAMC,EAAsB,QAAM,MAAmCV,EAAa,GAAG,EACrFO,EAAaG,EAAoB,MAAM,CACzC,GACa,CACf,EAAG,CAACV,EAAa,GAAG,CAAC,EACrB,MAAMW,KAAc,eACjBC,GAAyBC,EAAiBb,EAAa,IAAKY,EAAcP,CAAU,EACrF,CAACL,EAAa,GAAG,CACnB,EACMc,KAAuB,WAAQ,IAAM,IAASH,EAAa,IAAK,CAAE,QAAS,EAAK,CAAC,EAAG,CAACA,CAAW,CAAC,EACjGI,EAAeC,GAAqC,CACxDA,EAAE,eAAe,EACjB,KAAgB,KAAK,KAAQ,UAAU,MAAMR,GAAQ,OAAO,MAAO,CAAC,CAAC,CAAC,CACxE,EAEA,OACE,gBAAC,KACC,SAAO,KAAE,6BAA8B,yBAAyB,EAChE,UAAAP,EACA,gBAAiBA,EACjB,OAAM,IAEN,gBAAC,OAAI,UAAWC,EAAO,WACpBI,IAAc,EACb,gBAAC,YACC,gBAAC,KAAK,CAAC,QAAS,yCAAyC,6EAEzD,CACF,EACE,KACHA,EAAY,EACX,gCACE,gBAAC,SACC,gBAAC,KAAK,CAAC,QAAQ,4BAA4B,MAAOA,CAAA,EAAW,+BAC9B,CAAE,MAAOA,CAAU,EAAE,iEAEpD,CACF,EACA,gBAAC,MACC,YAAW,GACX,UAAWF,EACX,eAAgB,GAChB,YAAaU,EACb,SAAUL,EACV,eAAa,KAAE,0CAA2C,sCAAsC,EAChG,oBAAkB,KAAE,iDAAkD,qBAAqB,EAC7F,CACF,EACE,IACN,EACA,gBAAC,IAAM,UAAN,KACC,gBAAC,KAAM,CAAC,QAAQ,YAAY,QAASR,EAAW,KAAK,WACnD,gBAAC,KAAK,CAAC,QAAS,sCAAsC,QAAM,CAC9D,EACA,gBAAC,KAAM,CAAC,QAASc,EAAa,SAAU,CAASP,CAAM,EACpDA,KACG,KAAE,0CAA2C,6BAA8B,CAAE,MAAOA,GAAQ,KAAM,CAAC,KACnG,KAAE,0CAA2C,4BAA4B,CAC/E,CACF,CACF,CAEJ,CAEA,eAAeK,EAAiBI,EAAaL,EAAsBP,EAAwC,CACzGA,EAAW,EAAI,EAEf,MAAMa,GADa,QAAM,MAAuBD,CAAG,GAEhD,OAAQE,GAAMA,EAAE,MAAM,YAAY,EAAE,SAASP,EAAa,YAAY,CAAC,CAAC,EACxE,IAAKO,IAAO,CAAE,MAAOA,EAAE,MAAO,MAAOA,CAAE,EAAE,EAC5C,OAAAd,EAAW,EAAK,EAETa,CACT,CAEA,SAASf,EAAUiB,EAAsB,CACvC,MAAO,CACL,aAAW,QACb,CACF,C","sources":["webpack://grafana/./public/app/features/library-panels/LibraryPanelsPage.tsx","webpack://grafana/./public/app/features/library-panels/components/OpenLibraryPanelModal/OpenLibraryPanelModal.tsx"],"sourcesContent":["import React, { useState } from 'react';\n\nimport { Page } from 'app/core/components/Page/Page';\n\nimport { LibraryPanelsSearch } from './components/LibraryPanelsSearch/LibraryPanelsSearch';\nimport { OpenLibraryPanelModal } from './components/OpenLibraryPanelModal/OpenLibraryPanelModal';\nimport { LibraryElementDTO } from './types';\n\nexport const LibraryPanelsPage = () => {\n const [selected, setSelected] = useState(undefined);\n\n return (\n \n \n \n {selected ? setSelected(undefined)} libraryPanel={selected} /> : null}\n \n \n );\n};\n\nexport default LibraryPanelsPage;\n","import { css } from '@emotion/css';\nimport debounce from 'debounce-promise';\nimport React, { MouseEvent, useCallback, useEffect, useMemo, useState } from 'react';\n\nimport { GrafanaTheme2, SelectableValue, urlUtil } from '@grafana/data';\nimport { locationService } from '@grafana/runtime';\nimport { AsyncSelect, Button, Modal, useStyles2 } from '@grafana/ui';\nimport { t, Trans } from 'app/core/internationalization';\n\nimport { DashboardSearchItem } from '../../../search/types';\nimport { getConnectedDashboards, getLibraryPanelConnectedDashboards } from '../../state/api';\nimport { LibraryElementDTO } from '../../types';\n\nexport interface OpenLibraryPanelModalProps {\n onDismiss: () => void;\n libraryPanel: LibraryElementDTO;\n}\n\nexport function OpenLibraryPanelModal({ libraryPanel, onDismiss }: OpenLibraryPanelModalProps): JSX.Element {\n const styles = useStyles2(getStyles);\n const [loading, setLoading] = useState(false);\n const [connected, setConnected] = useState(0);\n const [option, setOption] = useState | undefined>(undefined);\n useEffect(() => {\n const getConnected = async () => {\n const connectedDashboards = await getLibraryPanelConnectedDashboards(libraryPanel.uid);\n setConnected(connectedDashboards.length);\n };\n getConnected();\n }, [libraryPanel.uid]);\n const loadOptions = useCallback(\n (searchString: string) => loadOptionsAsync(libraryPanel.uid, searchString, setLoading),\n [libraryPanel.uid]\n );\n const debouncedLoadOptions = useMemo(() => debounce(loadOptions, 300, { leading: true }), [loadOptions]);\n const onViewPanel = (e: MouseEvent) => {\n e.preventDefault();\n locationService.push(urlUtil.renderUrl(`/d/${option?.value?.uid}`, {}));\n };\n\n return (\n \n
\n {connected === 0 ? (\n \n \n Panel is not linked to a dashboard. Add the panel to a dashboard and retry.\n \n \n ) : null}\n {connected > 0 ? (\n <>\n

\n \n This panel is being used in {{ count: connected }} dashboard. Please choose which dashboard to view the\n panel in:\n \n

\n \n \n ) : null}\n
\n \n \n \n \n \n );\n}\n\nasync function loadOptionsAsync(uid: string, searchString: string, setLoading: (loading: boolean) => void) {\n setLoading(true);\n const searchHits = await getConnectedDashboards(uid);\n const options = searchHits\n .filter((d) => d.title.toLowerCase().includes(searchString.toLowerCase()))\n .map((d) => ({ label: d.title, value: d }));\n setLoading(false);\n\n return options;\n}\n\nfunction getStyles(theme: GrafanaTheme2) {\n return {\n container: css``,\n };\n}\n"],"names":["LibraryPanelsPage","selected","setSelected","OpenLibraryPanelModal","libraryPanel","onDismiss","styles","getStyles","loading","setLoading","connected","setConnected","option","setOption","connectedDashboards","loadOptions","searchString","loadOptionsAsync","debouncedLoadOptions","onViewPanel","e","uid","options","d","theme"],"sourceRoot":""}