import { css } from '@emotion/css'; import { saveAs } from 'file-saver'; import React, { useCallback, useMemo } from 'react'; import AutoSizer from 'react-virtualized-auto-sizer'; import { Button, ClipboardButton, Stack, CodeEditor, Box } from '@grafana/ui'; import { DashboardScene } from '../scene/DashboardScene'; import { SaveDashboardDrawer } from './SaveDashboardDrawer'; import { SaveDashboardFormCommonOptions } from './SaveDashboardForm'; import { DashboardChangeInfo } from './shared'; export interface Props { dashboard: DashboardScene; drawer: SaveDashboardDrawer; changeInfo: DashboardChangeInfo; } export function SaveProvisionedDashboardForm({ dashboard, drawer, changeInfo }: Props) { const dashboardJSON = useMemo(() => JSON.stringify(changeInfo.changedSaveModel, null, 2), [changeInfo]); const saveToFile = useCallback(() => { const blob = new Blob([dashboardJSON], { type: 'application/json;charset=utf-8', }); saveAs(blob, changeInfo.changedSaveModel.title + '-' + new Date().getTime() + '.json'); }, [changeInfo.changedSaveModel, dashboardJSON]); return (