@backstage-community/plugin-cost-insights 0.12.24
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +2017 -0
- package/README.md +244 -0
- package/config.d.ts +148 -0
- package/dist/esm/index-BA6m_qFS.esm.js +109 -0
- package/dist/esm/index-BA6m_qFS.esm.js.map +1 -0
- package/dist/esm/index-BFM2mP6Z.esm.js +4084 -0
- package/dist/esm/index-BFM2mP6Z.esm.js.map +1 -0
- package/dist/esm/index-BPzWHt3A.esm.js +169 -0
- package/dist/esm/index-BPzWHt3A.esm.js.map +1 -0
- package/dist/esm/index-BTIHr4n_.esm.js +83 -0
- package/dist/esm/index-BTIHr4n_.esm.js.map +1 -0
- package/dist/esm/index-DaitkcPN.esm.js +1136 -0
- package/dist/esm/index-DaitkcPN.esm.js.map +1 -0
- package/dist/esm/selector-D7iXJwd9.esm.js +594 -0
- package/dist/esm/selector-D7iXJwd9.esm.js.map +1 -0
- package/dist/index.d.ts +655 -0
- package/dist/index.esm.js +83 -0
- package/dist/index.esm.js.map +1 -0
- package/package.json +90 -0
|
@@ -0,0 +1,169 @@
|
|
|
1
|
+
import React, { useCallback, useState, useEffect } from 'react';
|
|
2
|
+
import { C as CostOverviewCard, m as mapLoadingToProps } from './selector-D7iXJwd9.esm.js';
|
|
3
|
+
import { c as costInsightsApiRef, C as CostInsightsThemeProvider, a as ConfigProvider, L as LoadingProvider, G as GroupsProvider, B as BillingDateProvider, F as FilterProvider, S as ScrollProvider, b as CurrencyProvider, u as useLoading, d as useLastCompleteBillingDate, e as useFilters, i as intervalsOf } from './index-BFM2mP6Z.esm.js';
|
|
4
|
+
import { WarningPanel, Progress } from '@backstage/core-components';
|
|
5
|
+
import Alert from '@material-ui/lab/Alert';
|
|
6
|
+
import { useApi } from '@backstage/core-plugin-api';
|
|
7
|
+
import { useEntity } from '@backstage/plugin-catalog-react';
|
|
8
|
+
import { stringifyEntityRef } from '@backstage/catalog-model';
|
|
9
|
+
import '@material-ui/core/Box';
|
|
10
|
+
import '@material-ui/core/utils';
|
|
11
|
+
import '@material-ui/core/Card';
|
|
12
|
+
import '@material-ui/core/CardContent';
|
|
13
|
+
import '@material-ui/core/Divider';
|
|
14
|
+
import '@material-ui/core/Tab';
|
|
15
|
+
import '@material-ui/core/Tabs';
|
|
16
|
+
import '@material-ui/core/styles';
|
|
17
|
+
import 'luxon';
|
|
18
|
+
import 'recharts';
|
|
19
|
+
import '@material-ui/core/Typography';
|
|
20
|
+
import '@material-ui/core/Paper';
|
|
21
|
+
import '@material-ui/core/Slide';
|
|
22
|
+
import '@material-ui/icons/ChevronLeft';
|
|
23
|
+
import '@material-ui/icons/ChevronRight';
|
|
24
|
+
import '@material-ui/core/ButtonBase';
|
|
25
|
+
import 'pluralize';
|
|
26
|
+
import '@material-ui/core/Tooltip';
|
|
27
|
+
import '@material-ui/icons/Lens';
|
|
28
|
+
import '@material-ui/icons/HelpOutlineOutlined';
|
|
29
|
+
import 'classnames';
|
|
30
|
+
import '@material-ui/icons/ArrowDropUp';
|
|
31
|
+
import '@material-ui/icons/ArrowDropDown';
|
|
32
|
+
import '@material-ui/core/styles/colorManipulator';
|
|
33
|
+
import '@material-ui/icons/Fullscreen';
|
|
34
|
+
import '@material-ui/core/InputLabel';
|
|
35
|
+
import '@material-ui/core/FormControl';
|
|
36
|
+
import '@material-ui/core/Select';
|
|
37
|
+
import '@material-ui/core/MenuItem';
|
|
38
|
+
import '@material-ui/core/Avatar';
|
|
39
|
+
import '@material-ui/core/IconButton';
|
|
40
|
+
import '@material-ui/core/Badge';
|
|
41
|
+
import '@material-ui/icons/AccessTime';
|
|
42
|
+
import '@material-ui/icons/Check';
|
|
43
|
+
import '@material-ui/icons/Delete';
|
|
44
|
+
import '@material-ui/core/CardHeader';
|
|
45
|
+
import '@material-ui/icons/MonetizationOn';
|
|
46
|
+
import '@material-ui/icons/Whatshot';
|
|
47
|
+
import '@material-ui/icons/Settings';
|
|
48
|
+
import '@material-ui/icons/AccountTree';
|
|
49
|
+
import '@material-ui/icons/Storage';
|
|
50
|
+
import '@material-ui/icons/Search';
|
|
51
|
+
import '@material-ui/icons/CloudQueue';
|
|
52
|
+
import '@material-ui/icons/School';
|
|
53
|
+
import '@material-ui/icons/ViewHeadline';
|
|
54
|
+
import 'react-router-dom';
|
|
55
|
+
import 'qs';
|
|
56
|
+
import 'yup';
|
|
57
|
+
import '@material-ui/core/Backdrop';
|
|
58
|
+
import '@material-ui/core/CircularProgress';
|
|
59
|
+
import '@material-ui/core/Grid';
|
|
60
|
+
import '@material-ui/core/Snackbar';
|
|
61
|
+
import '@material-ui/core/Button';
|
|
62
|
+
import '@material-ui/core/Dialog';
|
|
63
|
+
import '@material-ui/core/DialogActions';
|
|
64
|
+
import '@material-ui/core/DialogContent';
|
|
65
|
+
import '@material-ui/icons/Close';
|
|
66
|
+
import '@material-ui/core/Checkbox';
|
|
67
|
+
import '@material-ui/core/FormControlLabel';
|
|
68
|
+
import '@material-ui/core/RadioGroup';
|
|
69
|
+
import '@material-ui/core/Radio';
|
|
70
|
+
import '@material-ui/core/Collapse';
|
|
71
|
+
import '@material-ui/core/TextField';
|
|
72
|
+
import '@material-ui/icons/ExpandMore';
|
|
73
|
+
import '@material-ui/core/Container';
|
|
74
|
+
import 'react-use/esm/useCopyToClipboard';
|
|
75
|
+
import '@material-ui/icons/AssignmentOutlined';
|
|
76
|
+
import '@material-ui/icons/AssignmentTurnedInOutlined';
|
|
77
|
+
import '@material-ui/icons/SentimentVeryDissatisfied';
|
|
78
|
+
import 'react-use/esm/useAsync';
|
|
79
|
+
import '@material-ui/core/Menu';
|
|
80
|
+
import '@material-ui/core/MenuList';
|
|
81
|
+
import '@material-ui/core/ListItemIcon';
|
|
82
|
+
import '@material-ui/core/ListItemText';
|
|
83
|
+
import '@material-ui/core/FormGroup';
|
|
84
|
+
import 'regression';
|
|
85
|
+
|
|
86
|
+
const EntityCostsCard = () => {
|
|
87
|
+
const client = useApi(costInsightsApiRef);
|
|
88
|
+
const { entity } = useEntity();
|
|
89
|
+
const {
|
|
90
|
+
loadingActions,
|
|
91
|
+
loadingGroups,
|
|
92
|
+
loadingBillingDate,
|
|
93
|
+
loadingInitial,
|
|
94
|
+
dispatchInitial,
|
|
95
|
+
dispatchInsights,
|
|
96
|
+
dispatchNone
|
|
97
|
+
} = useLoading(mapLoadingToProps);
|
|
98
|
+
const dispatchLoadingInitial = useCallback(dispatchInitial, []);
|
|
99
|
+
const dispatchLoadingInsights = useCallback(dispatchInsights, []);
|
|
100
|
+
const dispatchLoadingNone = useCallback(dispatchNone, []);
|
|
101
|
+
const lastCompleteBillingDate = useLastCompleteBillingDate();
|
|
102
|
+
const [dailyCost, setDailyCost] = useState(null);
|
|
103
|
+
const [error, setError] = useState(null);
|
|
104
|
+
const { pageFilters } = useFilters((p) => p);
|
|
105
|
+
useEffect(() => {
|
|
106
|
+
async function getInsights() {
|
|
107
|
+
setError(null);
|
|
108
|
+
try {
|
|
109
|
+
dispatchLoadingInsights(true);
|
|
110
|
+
const intervals = intervalsOf(
|
|
111
|
+
pageFilters.duration,
|
|
112
|
+
lastCompleteBillingDate
|
|
113
|
+
);
|
|
114
|
+
const fetchedDailyCost = await client.getCatalogEntityDailyCost(
|
|
115
|
+
stringifyEntityRef(entity),
|
|
116
|
+
intervals
|
|
117
|
+
);
|
|
118
|
+
setDailyCost(fetchedDailyCost);
|
|
119
|
+
} catch (e) {
|
|
120
|
+
setError(e);
|
|
121
|
+
dispatchLoadingNone(loadingActions);
|
|
122
|
+
} finally {
|
|
123
|
+
dispatchLoadingNone(loadingActions);
|
|
124
|
+
dispatchLoadingInitial(false);
|
|
125
|
+
dispatchLoadingInsights(false);
|
|
126
|
+
}
|
|
127
|
+
}
|
|
128
|
+
if (!loadingBillingDate) {
|
|
129
|
+
getInsights();
|
|
130
|
+
}
|
|
131
|
+
}, [
|
|
132
|
+
client,
|
|
133
|
+
entity,
|
|
134
|
+
pageFilters,
|
|
135
|
+
loadingActions,
|
|
136
|
+
loadingGroups,
|
|
137
|
+
loadingBillingDate,
|
|
138
|
+
dispatchLoadingInsights,
|
|
139
|
+
dispatchLoadingInitial,
|
|
140
|
+
dispatchLoadingNone,
|
|
141
|
+
lastCompleteBillingDate
|
|
142
|
+
]);
|
|
143
|
+
if (loadingInitial) {
|
|
144
|
+
return /* @__PURE__ */ React.createElement(Progress, null);
|
|
145
|
+
}
|
|
146
|
+
if (error) {
|
|
147
|
+
return /* @__PURE__ */ React.createElement(Alert, { severity: "error" }, error.message);
|
|
148
|
+
}
|
|
149
|
+
if (!dailyCost || !dailyCost.aggregation.length) {
|
|
150
|
+
return /* @__PURE__ */ React.createElement(Alert, { severity: "error" }, "No daily costs");
|
|
151
|
+
}
|
|
152
|
+
return /* @__PURE__ */ React.createElement(CostOverviewCard, { dailyCostData: dailyCost, metricData: null });
|
|
153
|
+
};
|
|
154
|
+
const EntityCosts = () => {
|
|
155
|
+
const client = useApi(costInsightsApiRef);
|
|
156
|
+
if (!client.getCatalogEntityDailyCost) {
|
|
157
|
+
return /* @__PURE__ */ React.createElement(
|
|
158
|
+
WarningPanel,
|
|
159
|
+
{
|
|
160
|
+
title: "Could display costs for entity",
|
|
161
|
+
message: "The getCatalogEntityDailyCost() method is not implemented by the costInsightsApi."
|
|
162
|
+
}
|
|
163
|
+
);
|
|
164
|
+
}
|
|
165
|
+
return /* @__PURE__ */ React.createElement(CostInsightsThemeProvider, null, /* @__PURE__ */ React.createElement(ConfigProvider, null, /* @__PURE__ */ React.createElement(LoadingProvider, null, /* @__PURE__ */ React.createElement(GroupsProvider, null, /* @__PURE__ */ React.createElement(BillingDateProvider, null, /* @__PURE__ */ React.createElement(FilterProvider, null, /* @__PURE__ */ React.createElement(ScrollProvider, null, /* @__PURE__ */ React.createElement(CurrencyProvider, null, /* @__PURE__ */ React.createElement(EntityCostsCard, null)))))))));
|
|
166
|
+
};
|
|
167
|
+
|
|
168
|
+
export { EntityCosts };
|
|
169
|
+
//# sourceMappingURL=index-BPzWHt3A.esm.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index-BPzWHt3A.esm.js","sources":["../../src/components/EntityCosts/EntityCosts.tsx"],"sourcesContent":["/*\n * Copyright 2022 The Backstage Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport React, { useCallback, useEffect, useState } from 'react';\nimport { CostOverviewCard } from '../CostOverviewCard';\nimport {\n BillingDateProvider,\n ConfigProvider,\n CurrencyProvider,\n FilterProvider,\n GroupsProvider,\n LoadingProvider,\n ScrollProvider,\n useFilters,\n useLastCompleteBillingDate,\n useLoading,\n} from '../../hooks';\nimport { CostInsightsThemeProvider } from '../CostInsightsPage/CostInsightsThemeProvider';\nimport { Progress, WarningPanel } from '@backstage/core-components';\nimport { default as MaterialAlert } from '@material-ui/lab/Alert';\nimport { mapLoadingToProps } from '../CostInsightsPage/selector';\nimport { intervalsOf } from '../../utils/duration';\nimport { costInsightsApiRef } from '../../api';\nimport { useApi } from '@backstage/core-plugin-api';\nimport { useEntity } from '@backstage/plugin-catalog-react';\nimport { Cost, Maybe } from '@backstage-community/plugin-cost-insights-common';\nimport { stringifyEntityRef } from '@backstage/catalog-model';\n\nexport const EntityCostsCard = () => {\n const client = useApi(costInsightsApiRef);\n const { entity } = useEntity();\n\n const {\n loadingActions,\n loadingGroups,\n loadingBillingDate,\n loadingInitial,\n dispatchInitial,\n dispatchInsights,\n dispatchNone,\n } = useLoading(mapLoadingToProps);\n\n /* eslint-disable react-hooks/exhaustive-deps */\n // The dispatchLoading functions are derived from loading state using mapLoadingToProps, to\n // provide nicer props for the component. These are re-derived whenever loading state changes,\n // which causes an infinite loop as product panels load and re-trigger the useEffect below.\n // Since the functions don't change, we can memoize - but we trigger the same loop if we satisfy\n // exhaustive-deps by including the function itself in dependencies.\n\n const dispatchLoadingInitial = useCallback(dispatchInitial, []);\n const dispatchLoadingInsights = useCallback(dispatchInsights, []);\n const dispatchLoadingNone = useCallback(dispatchNone, []);\n /* eslint-enable react-hooks/exhaustive-deps */\n\n const lastCompleteBillingDate = useLastCompleteBillingDate();\n const [dailyCost, setDailyCost] = useState<Maybe<Cost>>(null);\n const [error, setError] = useState<Maybe<Error>>(null);\n const { pageFilters } = useFilters(p => p);\n\n useEffect(() => {\n async function getInsights() {\n setError(null);\n try {\n dispatchLoadingInsights(true);\n const intervals = intervalsOf(\n pageFilters.duration,\n lastCompleteBillingDate,\n );\n\n const fetchedDailyCost = await client.getCatalogEntityDailyCost!(\n stringifyEntityRef(entity),\n intervals,\n );\n setDailyCost(fetchedDailyCost);\n } catch (e) {\n setError(e);\n dispatchLoadingNone(loadingActions);\n } finally {\n dispatchLoadingNone(loadingActions);\n dispatchLoadingInitial(false);\n dispatchLoadingInsights(false);\n }\n }\n\n // Wait for metadata to finish loading\n if (!loadingBillingDate) {\n getInsights();\n }\n }, [\n client,\n entity,\n pageFilters,\n loadingActions,\n loadingGroups,\n loadingBillingDate,\n dispatchLoadingInsights,\n dispatchLoadingInitial,\n dispatchLoadingNone,\n lastCompleteBillingDate,\n ]);\n\n if (loadingInitial) {\n return <Progress />;\n }\n\n if (error) {\n return <MaterialAlert severity=\"error\">{error.message}</MaterialAlert>;\n }\n\n if (!dailyCost || !dailyCost.aggregation.length) {\n return <MaterialAlert severity=\"error\">No daily costs</MaterialAlert>;\n }\n\n return <CostOverviewCard dailyCostData={dailyCost} metricData={null} />;\n};\n\nexport const EntityCosts = () => {\n const client = useApi(costInsightsApiRef);\n\n if (!client.getCatalogEntityDailyCost) {\n return (\n <WarningPanel\n title=\"Could display costs for entity\"\n message=\"The getCatalogEntityDailyCost() method is not implemented by the costInsightsApi.\"\n />\n );\n }\n\n return (\n <CostInsightsThemeProvider>\n <ConfigProvider>\n <LoadingProvider>\n <GroupsProvider>\n <BillingDateProvider>\n <FilterProvider>\n <ScrollProvider>\n <CurrencyProvider>\n <EntityCostsCard />\n </CurrencyProvider>\n </ScrollProvider>\n </FilterProvider>\n </BillingDateProvider>\n </GroupsProvider>\n </LoadingProvider>\n </ConfigProvider>\n </CostInsightsThemeProvider>\n );\n};\n"],"names":["MaterialAlert"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAyCO,MAAM,kBAAkB,MAAM;AACnC,EAAM,MAAA,MAAA,GAAS,OAAO,kBAAkB,CAAA,CAAA;AACxC,EAAM,MAAA,EAAE,MAAO,EAAA,GAAI,SAAU,EAAA,CAAA;AAE7B,EAAM,MAAA;AAAA,IACJ,cAAA;AAAA,IACA,aAAA;AAAA,IACA,kBAAA;AAAA,IACA,cAAA;AAAA,IACA,eAAA;AAAA,IACA,gBAAA;AAAA,IACA,YAAA;AAAA,GACF,GAAI,WAAW,iBAAiB,CAAA,CAAA;AAShC,EAAA,MAAM,sBAAyB,GAAA,WAAA,CAAY,eAAiB,EAAA,EAAE,CAAA,CAAA;AAC9D,EAAA,MAAM,uBAA0B,GAAA,WAAA,CAAY,gBAAkB,EAAA,EAAE,CAAA,CAAA;AAChE,EAAA,MAAM,mBAAsB,GAAA,WAAA,CAAY,YAAc,EAAA,EAAE,CAAA,CAAA;AAGxD,EAAA,MAAM,0BAA0B,0BAA2B,EAAA,CAAA;AAC3D,EAAA,MAAM,CAAC,SAAA,EAAW,YAAY,CAAA,GAAI,SAAsB,IAAI,CAAA,CAAA;AAC5D,EAAA,MAAM,CAAC,KAAA,EAAO,QAAQ,CAAA,GAAI,SAAuB,IAAI,CAAA,CAAA;AACrD,EAAA,MAAM,EAAE,WAAA,EAAgB,GAAA,UAAA,CAAW,OAAK,CAAC,CAAA,CAAA;AAEzC,EAAA,SAAA,CAAU,MAAM;AACd,IAAA,eAAe,WAAc,GAAA;AAC3B,MAAA,QAAA,CAAS,IAAI,CAAA,CAAA;AACb,MAAI,IAAA;AACF,QAAA,uBAAA,CAAwB,IAAI,CAAA,CAAA;AAC5B,QAAA,MAAM,SAAY,GAAA,WAAA;AAAA,UAChB,WAAY,CAAA,QAAA;AAAA,UACZ,uBAAA;AAAA,SACF,CAAA;AAEA,QAAM,MAAA,gBAAA,GAAmB,MAAM,MAAO,CAAA,yBAAA;AAAA,UACpC,mBAAmB,MAAM,CAAA;AAAA,UACzB,SAAA;AAAA,SACF,CAAA;AACA,QAAA,YAAA,CAAa,gBAAgB,CAAA,CAAA;AAAA,eACtB,CAAG,EAAA;AACV,QAAA,QAAA,CAAS,CAAC,CAAA,CAAA;AACV,QAAA,mBAAA,CAAoB,cAAc,CAAA,CAAA;AAAA,OAClC,SAAA;AACA,QAAA,mBAAA,CAAoB,cAAc,CAAA,CAAA;AAClC,QAAA,sBAAA,CAAuB,KAAK,CAAA,CAAA;AAC5B,QAAA,uBAAA,CAAwB,KAAK,CAAA,CAAA;AAAA,OAC/B;AAAA,KACF;AAGA,IAAA,IAAI,CAAC,kBAAoB,EAAA;AACvB,MAAY,WAAA,EAAA,CAAA;AAAA,KACd;AAAA,GACC,EAAA;AAAA,IACD,MAAA;AAAA,IACA,MAAA;AAAA,IACA,WAAA;AAAA,IACA,cAAA;AAAA,IACA,aAAA;AAAA,IACA,kBAAA;AAAA,IACA,uBAAA;AAAA,IACA,sBAAA;AAAA,IACA,mBAAA;AAAA,IACA,uBAAA;AAAA,GACD,CAAA,CAAA;AAED,EAAA,IAAI,cAAgB,EAAA;AAClB,IAAA,2CAAQ,QAAS,EAAA,IAAA,CAAA,CAAA;AAAA,GACnB;AAEA,EAAA,IAAI,KAAO,EAAA;AACT,IAAA,uBAAQ,KAAA,CAAA,aAAA,CAAAA,KAAA,EAAA,EAAc,QAAS,EAAA,OAAA,EAAA,EAAS,MAAM,OAAQ,CAAA,CAAA;AAAA,GACxD;AAEA,EAAA,IAAI,CAAC,SAAA,IAAa,CAAC,SAAA,CAAU,YAAY,MAAQ,EAAA;AAC/C,IAAA,uBAAQ,KAAA,CAAA,aAAA,CAAAA,KAAA,EAAA,EAAc,QAAS,EAAA,OAAA,EAAA,EAAQ,gBAAc,CAAA,CAAA;AAAA,GACvD;AAEA,EAAA,uBAAQ,KAAA,CAAA,aAAA,CAAA,gBAAA,EAAA,EAAiB,aAAe,EAAA,SAAA,EAAW,YAAY,IAAM,EAAA,CAAA,CAAA;AACvE,CAAA,CAAA;AAEO,MAAM,cAAc,MAAM;AAC/B,EAAM,MAAA,MAAA,GAAS,OAAO,kBAAkB,CAAA,CAAA;AAExC,EAAI,IAAA,CAAC,OAAO,yBAA2B,EAAA;AACrC,IACE,uBAAA,KAAA,CAAA,aAAA;AAAA,MAAC,YAAA;AAAA,MAAA;AAAA,QACC,KAAM,EAAA,gCAAA;AAAA,QACN,OAAQ,EAAA,mFAAA;AAAA,OAAA;AAAA,KACV,CAAA;AAAA,GAEJ;AAEA,EACE,uBAAA,KAAA,CAAA,aAAA,CAAC,yBACC,EAAA,IAAA,kBAAA,KAAA,CAAA,aAAA,CAAC,cACC,EAAA,IAAA,kBAAA,KAAA,CAAA,aAAA,CAAC,uCACE,KAAA,CAAA,aAAA,CAAA,cAAA,EAAA,IAAA,kBACE,KAAA,CAAA,aAAA,CAAA,mBAAA,EAAA,IAAA,kBACE,KAAA,CAAA,aAAA,CAAA,cAAA,EAAA,IAAA,sCACE,cACC,EAAA,IAAA,kBAAA,KAAA,CAAA,aAAA,CAAC,gBACC,EAAA,IAAA,kBAAA,KAAA,CAAA,aAAA,CAAC,eAAgB,EAAA,IAAA,CACnB,CACF,CACF,CACF,CACF,CACF,CACF,CACF,CAAA,CAAA;AAEJ;;;;"}
|
|
@@ -0,0 +1,83 @@
|
|
|
1
|
+
export { P as ProjectGrowthInstructionsPage } from './index-BFM2mP6Z.esm.js';
|
|
2
|
+
import '@backstage/core-plugin-api';
|
|
3
|
+
import 'react';
|
|
4
|
+
import 'pluralize';
|
|
5
|
+
import '@material-ui/core/Typography';
|
|
6
|
+
import '@material-ui/core/Box';
|
|
7
|
+
import '@material-ui/core/styles';
|
|
8
|
+
import '@material-ui/core/Avatar';
|
|
9
|
+
import '@material-ui/core/Tooltip';
|
|
10
|
+
import '@material-ui/core/IconButton';
|
|
11
|
+
import '@material-ui/core/Badge';
|
|
12
|
+
import '@material-ui/core/Paper';
|
|
13
|
+
import '@material-ui/core/Divider';
|
|
14
|
+
import '@material-ui/icons/AccessTime';
|
|
15
|
+
import '@material-ui/icons/Check';
|
|
16
|
+
import '@material-ui/icons/Delete';
|
|
17
|
+
import 'classnames';
|
|
18
|
+
import '@material-ui/core/Card';
|
|
19
|
+
import '@material-ui/core/CardHeader';
|
|
20
|
+
import '@material-ui/icons/MonetizationOn';
|
|
21
|
+
import '@material-ui/icons/Whatshot';
|
|
22
|
+
import '@material-ui/icons/Settings';
|
|
23
|
+
import '@material-ui/icons/AccountTree';
|
|
24
|
+
import '@material-ui/icons/Storage';
|
|
25
|
+
import '@material-ui/icons/Search';
|
|
26
|
+
import '@material-ui/icons/CloudQueue';
|
|
27
|
+
import '@material-ui/icons/School';
|
|
28
|
+
import '@material-ui/icons/ViewHeadline';
|
|
29
|
+
import '@material-ui/lab/Alert';
|
|
30
|
+
import 'react-router-dom';
|
|
31
|
+
import 'qs';
|
|
32
|
+
import 'yup';
|
|
33
|
+
import '@material-ui/core/Backdrop';
|
|
34
|
+
import '@material-ui/core/CircularProgress';
|
|
35
|
+
import 'luxon';
|
|
36
|
+
import '@material-ui/core/styles/colorManipulator';
|
|
37
|
+
import '@backstage/catalog-model';
|
|
38
|
+
import '@material-ui/core/Grid';
|
|
39
|
+
import '@material-ui/core/Snackbar';
|
|
40
|
+
import '@material-ui/core/utils';
|
|
41
|
+
import '@material-ui/core/Button';
|
|
42
|
+
import '@material-ui/core/Dialog';
|
|
43
|
+
import '@material-ui/core/DialogActions';
|
|
44
|
+
import '@material-ui/core/DialogContent';
|
|
45
|
+
import '@material-ui/icons/Close';
|
|
46
|
+
import '@material-ui/core/Checkbox';
|
|
47
|
+
import '@material-ui/core/FormControl';
|
|
48
|
+
import '@material-ui/core/FormControlLabel';
|
|
49
|
+
import '@material-ui/core/RadioGroup';
|
|
50
|
+
import '@material-ui/core/Radio';
|
|
51
|
+
import '@material-ui/core/Collapse';
|
|
52
|
+
import '@material-ui/core/TextField';
|
|
53
|
+
import '@material-ui/icons/ExpandMore';
|
|
54
|
+
import '@material-ui/core/Container';
|
|
55
|
+
import '@material-ui/icons/ChevronLeft';
|
|
56
|
+
import '@backstage/core-components';
|
|
57
|
+
import 'recharts';
|
|
58
|
+
import '@material-ui/core/Slide';
|
|
59
|
+
import '@material-ui/icons/ChevronRight';
|
|
60
|
+
import '@material-ui/core/ButtonBase';
|
|
61
|
+
import '@material-ui/icons/Lens';
|
|
62
|
+
import '@material-ui/icons/HelpOutlineOutlined';
|
|
63
|
+
import 'react-use/esm/useCopyToClipboard';
|
|
64
|
+
import '@material-ui/icons/AssignmentOutlined';
|
|
65
|
+
import '@material-ui/icons/AssignmentTurnedInOutlined';
|
|
66
|
+
import '@material-ui/icons/SentimentVeryDissatisfied';
|
|
67
|
+
import '@material-ui/icons/ArrowDropUp';
|
|
68
|
+
import '@material-ui/icons/ArrowDropDown';
|
|
69
|
+
import 'react-use/esm/useAsync';
|
|
70
|
+
import '@material-ui/core/Menu';
|
|
71
|
+
import '@material-ui/core/MenuItem';
|
|
72
|
+
import '@material-ui/core/Tab';
|
|
73
|
+
import '@material-ui/core/Tabs';
|
|
74
|
+
import '@material-ui/core/MenuList';
|
|
75
|
+
import '@material-ui/core/ListItemIcon';
|
|
76
|
+
import '@material-ui/core/ListItemText';
|
|
77
|
+
import '@material-ui/core/InputLabel';
|
|
78
|
+
import '@material-ui/core/Select';
|
|
79
|
+
import '@material-ui/core/CardContent';
|
|
80
|
+
import '@material-ui/icons/Fullscreen';
|
|
81
|
+
import '@material-ui/core/FormGroup';
|
|
82
|
+
import 'regression';
|
|
83
|
+
//# sourceMappingURL=index-BTIHr4n_.esm.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index-BTIHr4n_.esm.js","sources":[],"sourcesContent":[],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;"}
|