@grafana/plugin-ui 0.2.0 โ 0.3.0
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/dist/src/unreleasedComponents/SecretInput.d.ts +15 -0
- package/dist/src/unreleasedComponents/SecretTextarea.d.ts +19 -0
- package/dist/src/unreleasedComponents/index.d.ts +2 -1
- package/dist/src/utils/changeset/index.d.ts +2 -0
- package/dist/unreleasedComponents/SecretInput.js +21 -0
- package/dist/unreleasedComponents/SecretInput.js.map +1 -0
- package/dist/unreleasedComponents/SecretTextarea.js +36 -0
- package/dist/unreleasedComponents/SecretTextarea.js.map +1 -0
- package/dist/unreleasedComponents/index.js +6 -0
- package/dist/unreleasedComponents/index.js.map +1 -1
- package/dist/utils/changeset/index.js +90 -0
- package/dist/utils/changeset/index.js.map +1 -0
- package/package.json +11 -1
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Copy & paste from https://github.com/grafana/grafana/blob/main/packages/grafana-ui/src/components/SecretInput/SecretInput.tsx
|
|
3
|
+
* Available starting from @grafana/ui 9.2
|
|
4
|
+
*/
|
|
5
|
+
import * as React from "react";
|
|
6
|
+
import { Input } from "@grafana/ui";
|
|
7
|
+
export declare type Props = React.ComponentProps<typeof Input> & {
|
|
8
|
+
/** TRUE if the secret was already configured. (It is needed as often the backend doesn't send back the actual secret, only the information that it was configured) */
|
|
9
|
+
isConfigured: boolean;
|
|
10
|
+
/** Called when the user clicks on the "Reset" button in order to clear the secret */
|
|
11
|
+
onReset: () => void;
|
|
12
|
+
};
|
|
13
|
+
export declare const CONFIGURED_TEXT = "configured";
|
|
14
|
+
export declare const RESET_BUTTON_TEXT = "Reset";
|
|
15
|
+
export declare const SecretInput: ({ isConfigured, onReset, ...props }: Props) => JSX.Element;
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Copy & paste from https://github.com/grafana/grafana/blob/main/packages/grafana-ui/src/components/SecretTextArea/SecretTextArea.tsx
|
|
3
|
+
* Available starting from @grafana/ui 9.2
|
|
4
|
+
*/
|
|
5
|
+
import * as React from "react";
|
|
6
|
+
import { TextArea } from "@grafana/ui";
|
|
7
|
+
export declare type Props = React.ComponentProps<typeof TextArea> & {
|
|
8
|
+
/** TRUE if the secret was already configured. (It is needed as often the backend doesn't send back the actual secret, only the information that it was configured) */
|
|
9
|
+
isConfigured: boolean;
|
|
10
|
+
/** Called when the user clicks on the "Reset" button in order to clear the secret */
|
|
11
|
+
onReset: () => void;
|
|
12
|
+
};
|
|
13
|
+
export declare const CONFIGURED_TEXT = "configured";
|
|
14
|
+
export declare const RESET_BUTTON_TEXT = "Reset";
|
|
15
|
+
/**
|
|
16
|
+
* Text area that does not disclose an already configured value but lets the user reset the current value and enter a new one.
|
|
17
|
+
* Typically useful for asymmetric cryptography keys.
|
|
18
|
+
*/
|
|
19
|
+
export declare const SecretTextArea: ({ isConfigured, onReset, ...props }: Props) => JSX.Element;
|
|
@@ -1 +1,2 @@
|
|
|
1
|
-
export {};
|
|
1
|
+
export { SecretInput } from "./SecretInput";
|
|
2
|
+
export { SecretTextArea } from "./SecretTextarea";
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
/**
|
|
3
|
+
* Copy & paste from https://github.com/grafana/grafana/blob/main/packages/grafana-ui/src/components/SecretInput/SecretInput.tsx
|
|
4
|
+
* Available starting from @grafana/ui 9.2
|
|
5
|
+
*/
|
|
6
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
7
|
+
exports.SecretInput = exports.RESET_BUTTON_TEXT = exports.CONFIGURED_TEXT = void 0;
|
|
8
|
+
const tslib_1 = require("tslib");
|
|
9
|
+
const React = tslib_1.__importStar(require("react"));
|
|
10
|
+
const ui_1 = require("@grafana/ui");
|
|
11
|
+
exports.CONFIGURED_TEXT = "configured";
|
|
12
|
+
exports.RESET_BUTTON_TEXT = "Reset";
|
|
13
|
+
const SecretInput = (_a) => {
|
|
14
|
+
var { isConfigured, onReset } = _a, props = tslib_1.__rest(_a, ["isConfigured", "onReset"]);
|
|
15
|
+
return (React.createElement(ui_1.HorizontalGroup, null,
|
|
16
|
+
!isConfigured && React.createElement(ui_1.Input, Object.assign({}, props, { type: "password" })),
|
|
17
|
+
isConfigured && (React.createElement(ui_1.Input, Object.assign({}, props, { type: "text", disabled: true, value: exports.CONFIGURED_TEXT }))),
|
|
18
|
+
isConfigured && (React.createElement(ui_1.Button, { onClick: onReset, variant: "secondary" }, exports.RESET_BUTTON_TEXT))));
|
|
19
|
+
};
|
|
20
|
+
exports.SecretInput = SecretInput;
|
|
21
|
+
//# sourceMappingURL=SecretInput.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"SecretInput.js","sourceRoot":"","sources":["../../src/unreleasedComponents/SecretInput.tsx"],"names":[],"mappings":";AAAA;;;GAGG;;;;AAEH,qDAA+B;AAC/B,oCAA6D;AAShD,QAAA,eAAe,GAAG,YAAY,CAAC;AAC/B,QAAA,iBAAiB,GAAG,OAAO,CAAC;AAElC,MAAM,WAAW,GAAG,CAAC,EAA0C,EAAE,EAAE;QAA9C,EAAE,YAAY,EAAE,OAAO,OAAmB,EAAd,KAAK,sBAAjC,2BAAmC,CAAF;IAAc,OAAA,CACzE,oBAAC,oBAAe;QACb,CAAC,YAAY,IAAI,oBAAC,UAAK,oBAAK,KAAK,IAAE,IAAI,EAAC,UAAU,IAAG;QACrD,YAAY,IAAI,CACf,oBAAC,UAAK,oBAAK,KAAK,IAAE,IAAI,EAAC,MAAM,EAAC,QAAQ,EAAE,IAAI,EAAE,KAAK,EAAE,uBAAe,IAAI,CACzE;QACA,YAAY,IAAI,CACf,oBAAC,WAAM,IAAC,OAAO,EAAE,OAAO,EAAE,OAAO,EAAC,WAAW,IAC1C,yBAAiB,CACX,CACV,CACe,CACnB,CAAA;CAAA,CAAC;AAZW,QAAA,WAAW,eAYtB"}
|
|
@@ -0,0 +1,36 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
/**
|
|
3
|
+
* Copy & paste from https://github.com/grafana/grafana/blob/main/packages/grafana-ui/src/components/SecretTextArea/SecretTextArea.tsx
|
|
4
|
+
* Available starting from @grafana/ui 9.2
|
|
5
|
+
*/
|
|
6
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
7
|
+
exports.SecretTextArea = exports.RESET_BUTTON_TEXT = exports.CONFIGURED_TEXT = void 0;
|
|
8
|
+
const tslib_1 = require("tslib");
|
|
9
|
+
const css_1 = require("@emotion/css");
|
|
10
|
+
const React = tslib_1.__importStar(require("react"));
|
|
11
|
+
const ui_1 = require("@grafana/ui");
|
|
12
|
+
exports.CONFIGURED_TEXT = "configured";
|
|
13
|
+
exports.RESET_BUTTON_TEXT = "Reset";
|
|
14
|
+
const getStyles = (theme) => {
|
|
15
|
+
return {
|
|
16
|
+
configuredStyle: (0, css_1.css) `
|
|
17
|
+
min-height: ${theme.spacing(theme.components.height.md)};
|
|
18
|
+
padding-top: ${theme.spacing(0.5) /** Needed to mimic vertically centered text in an input box */};
|
|
19
|
+
resize: none;
|
|
20
|
+
`,
|
|
21
|
+
};
|
|
22
|
+
};
|
|
23
|
+
/**
|
|
24
|
+
* Text area that does not disclose an already configured value but lets the user reset the current value and enter a new one.
|
|
25
|
+
* Typically useful for asymmetric cryptography keys.
|
|
26
|
+
*/
|
|
27
|
+
const SecretTextArea = (_a) => {
|
|
28
|
+
var { isConfigured, onReset } = _a, props = tslib_1.__rest(_a, ["isConfigured", "onReset"]);
|
|
29
|
+
const styles = (0, ui_1.useStyles2)(getStyles);
|
|
30
|
+
return (React.createElement(ui_1.HorizontalGroup, null,
|
|
31
|
+
!isConfigured && React.createElement(ui_1.TextArea, Object.assign({}, props)),
|
|
32
|
+
isConfigured && (React.createElement(ui_1.TextArea, Object.assign({}, props, { rows: 1, disabled: true, value: exports.CONFIGURED_TEXT, className: (0, css_1.cx)(styles.configuredStyle) }))),
|
|
33
|
+
isConfigured && (React.createElement(ui_1.Button, { onClick: onReset, variant: "secondary" }, exports.RESET_BUTTON_TEXT))));
|
|
34
|
+
};
|
|
35
|
+
exports.SecretTextArea = SecretTextArea;
|
|
36
|
+
//# sourceMappingURL=SecretTextarea.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"SecretTextarea.js","sourceRoot":"","sources":["../../src/unreleasedComponents/SecretTextarea.tsx"],"names":[],"mappings":";AAAA;;;GAGG;;;;AAEH,sCAAuC;AACvC,qDAA+B;AAG/B,oCAA4E;AAS/D,QAAA,eAAe,GAAG,YAAY,CAAC;AAC/B,QAAA,iBAAiB,GAAG,OAAO,CAAC;AAEzC,MAAM,SAAS,GAAG,CAAC,KAAoB,EAAE,EAAE;IACzC,OAAO;QACL,eAAe,EAAE,IAAA,SAAG,EAAA;oBACJ,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,UAAU,CAAC,MAAM,CAAC,EAAE,CAAC;qBAErD,KAAK,CAAC,OAAO,CACX,GAAG,CACJ,CAAC,+DACJ;;KAED;KACF,CAAC;AACJ,CAAC,CAAC;AAEF;;;GAGG;AACI,MAAM,cAAc,GAAG,CAAC,EAA0C,EAAE,EAAE;QAA9C,EAAE,YAAY,EAAE,OAAO,OAAmB,EAAd,KAAK,sBAAjC,2BAAmC,CAAF;IAC9D,MAAM,MAAM,GAAG,IAAA,eAAU,EAAC,SAAS,CAAC,CAAC;IACrC,OAAO,CACL,oBAAC,oBAAe;QACb,CAAC,YAAY,IAAI,oBAAC,aAAQ,oBAAK,KAAK,EAAI;QACxC,YAAY,IAAI,CACf,oBAAC,aAAQ,oBACH,KAAK,IACT,IAAI,EAAE,CAAC,EACP,QAAQ,EAAE,IAAI,EACd,KAAK,EAAE,uBAAe,EACtB,SAAS,EAAE,IAAA,QAAE,EAAC,MAAM,CAAC,eAAe,CAAC,IACrC,CACH;QACA,YAAY,IAAI,CACf,oBAAC,WAAM,IAAC,OAAO,EAAE,OAAO,EAAE,OAAO,EAAC,WAAW,IAC1C,yBAAiB,CACX,CACV,CACe,CACnB,CAAC;AACJ,CAAC,CAAC;AArBW,QAAA,cAAc,kBAqBzB"}
|
|
@@ -1,3 +1,9 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.SecretTextArea = exports.SecretInput = void 0;
|
|
4
|
+
// noop for when there are no components here
|
|
5
|
+
var SecretInput_1 = require("./SecretInput");
|
|
6
|
+
Object.defineProperty(exports, "SecretInput", { enumerable: true, get: function () { return SecretInput_1.SecretInput; } });
|
|
7
|
+
var SecretTextarea_1 = require("./SecretTextarea");
|
|
8
|
+
Object.defineProperty(exports, "SecretTextArea", { enumerable: true, get: function () { return SecretTextarea_1.SecretTextArea; } });
|
|
3
9
|
//# sourceMappingURL=index.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/unreleasedComponents/index.ts"],"names":[],"mappings":""}
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/unreleasedComponents/index.ts"],"names":[],"mappings":";;;AAAA,6CAA6C;AAC7C,6CAA4C;AAAnC,0GAAA,WAAW,OAAA;AACpB,mDAAkD;AAAzC,gHAAA,cAAc,OAAA"}
|
|
@@ -0,0 +1,90 @@
|
|
|
1
|
+
#!/usr/bin/env node
|
|
2
|
+
"use strict";
|
|
3
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
4
|
+
const tslib_1 = require("tslib");
|
|
5
|
+
const node_child_process_1 = require("node:child_process");
|
|
6
|
+
const promises_1 = require("node:fs/promises");
|
|
7
|
+
const node_path_1 = require("node:path");
|
|
8
|
+
const prompts_1 = tslib_1.__importDefault(require("prompts"));
|
|
9
|
+
const read_1 = tslib_1.__importDefault(require("@changesets/read"));
|
|
10
|
+
const write_1 = tslib_1.__importDefault(require("@changesets/write"));
|
|
11
|
+
const changeTypes = {
|
|
12
|
+
feature: { icon: "๐", prefix: "Feature" },
|
|
13
|
+
fix: { icon: "๐", prefix: "Fix" },
|
|
14
|
+
docs: { icon: "๐", prefix: "Documentation" },
|
|
15
|
+
chore: { icon: "โ๏ธ", prefix: "Chore" },
|
|
16
|
+
tests: { icon: "๐งช", prefix: "Tests" },
|
|
17
|
+
refactor: { icon: "โ๏ธ", prefix: "Chore" },
|
|
18
|
+
};
|
|
19
|
+
const dir = process.cwd();
|
|
20
|
+
// First two arguments are `ts-node` and this file name.
|
|
21
|
+
// Actual changeset arguments start from the 3rd item.
|
|
22
|
+
const args = process.argv.slice(2);
|
|
23
|
+
(() => tslib_1.__awaiter(void 0, void 0, void 0, function* () {
|
|
24
|
+
if (args[0] === "version") {
|
|
25
|
+
// If this is a version change we only need to update CHANGELOG.md
|
|
26
|
+
yield runChangesetCmd(args);
|
|
27
|
+
updateChangelogFile();
|
|
28
|
+
return;
|
|
29
|
+
}
|
|
30
|
+
const changeSetIdsBefore = (yield (0, read_1.default)(dir)).map((c) => c.id);
|
|
31
|
+
yield runChangesetCmd(args);
|
|
32
|
+
const changeSetsAfter = yield (0, read_1.default)(dir);
|
|
33
|
+
if (changeSetsAfter.length <= changeSetIdsBefore.length) {
|
|
34
|
+
// There are no new changes, no need to continue
|
|
35
|
+
return;
|
|
36
|
+
}
|
|
37
|
+
// Asking what's the change type
|
|
38
|
+
const { changeType } = yield (0, prompts_1.default)({
|
|
39
|
+
name: "changeType",
|
|
40
|
+
type: "select",
|
|
41
|
+
message: "What kind of change have you added?",
|
|
42
|
+
choices: Object.entries(changeTypes).map(([key, { icon }]) => ({
|
|
43
|
+
title: `${icon} ${key}`,
|
|
44
|
+
value: key,
|
|
45
|
+
})),
|
|
46
|
+
});
|
|
47
|
+
const { icon, prefix } = changeTypes[changeType];
|
|
48
|
+
// Adding change type to the changeset summary
|
|
49
|
+
const newChangeset = changeSetsAfter
|
|
50
|
+
.filter((change) => !changeSetIdsBefore.includes(change.id))
|
|
51
|
+
.map((changeset) => (Object.assign(Object.assign({}, changeset), { summary: `${icon} **${prefix}**: ${changeset.summary}` })))[0];
|
|
52
|
+
// Remove the original changeset file
|
|
53
|
+
yield (0, promises_1.rm)((0, node_path_1.join)(dir, ".changeset", `${newChangeset.id}.md`));
|
|
54
|
+
// Write a new changeset file (includes change type), returns the new id
|
|
55
|
+
const id = yield (0, write_1.default)(newChangeset, dir);
|
|
56
|
+
// Rename new file to previous name
|
|
57
|
+
yield (0, promises_1.rename)((0, node_path_1.join)(dir, ".changeset", `${id}.md`), (0, node_path_1.join)(dir, ".changeset", `${newChangeset.id}.md`));
|
|
58
|
+
}))();
|
|
59
|
+
function runChangesetCmd(args) {
|
|
60
|
+
return new Promise((resolve, reject) => {
|
|
61
|
+
const child = (0, node_child_process_1.fork)((0, node_path_1.join)(dir, "node_modules/.bin/changeset"), args);
|
|
62
|
+
child.on("error", reject);
|
|
63
|
+
child.on("close", (exitCode) => {
|
|
64
|
+
if (exitCode === 0) {
|
|
65
|
+
resolve();
|
|
66
|
+
}
|
|
67
|
+
else {
|
|
68
|
+
reject(new Error(`Changeset process exited with exit code ${exitCode}`));
|
|
69
|
+
}
|
|
70
|
+
});
|
|
71
|
+
});
|
|
72
|
+
}
|
|
73
|
+
function updateChangelogFile() {
|
|
74
|
+
return tslib_1.__awaiter(this, void 0, void 0, function* () {
|
|
75
|
+
const filePath = (0, node_path_1.join)(dir, "CHANGELOG.md");
|
|
76
|
+
const content = yield (0, promises_1.readFile)(filePath, { encoding: "utf-8" });
|
|
77
|
+
const today = new Date();
|
|
78
|
+
const date = `0${today.getDate()}`.slice(-2);
|
|
79
|
+
const month = `0${today.getMonth() + 1}`.slice(-2);
|
|
80
|
+
const year = today.getFullYear();
|
|
81
|
+
const formattedDate = `${year}-${month}-${date}`;
|
|
82
|
+
const updatedChangeLog = content
|
|
83
|
+
// Remove unnecessary titles
|
|
84
|
+
.replace(/\s### (Patch|Minor|Major) Changes\s+/gi, "")
|
|
85
|
+
// Add `v` prefix to the version and add date
|
|
86
|
+
.replace(/## (\d+\.\d+.\d+)\s+/, `## v$1 - ${formattedDate}\n\n`);
|
|
87
|
+
yield (0, promises_1.writeFile)(filePath, updatedChangeLog);
|
|
88
|
+
});
|
|
89
|
+
}
|
|
90
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/utils/changeset/index.ts"],"names":[],"mappings":";;;;AAEA,2DAA0C;AAC1C,+CAAmE;AACnE,yCAAiC;AACjC,8DAA8B;AAC9B,oEAA6C;AAC7C,sEAAgD;AAEhD,MAAM,WAAW,GAAG;IAClB,OAAO,EAAE,EAAE,IAAI,EAAE,IAAI,EAAE,MAAM,EAAE,SAAS,EAAE;IAC1C,GAAG,EAAE,EAAE,IAAI,EAAE,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE;IAClC,IAAI,EAAE,EAAE,IAAI,EAAE,IAAI,EAAE,MAAM,EAAE,eAAe,EAAE;IAC7C,KAAK,EAAE,EAAE,IAAI,EAAE,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE;IACtC,KAAK,EAAE,EAAE,IAAI,EAAE,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE;IACtC,QAAQ,EAAE,EAAE,IAAI,EAAE,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE;CAC1C,CAAC;AACF,MAAM,GAAG,GAAG,OAAO,CAAC,GAAG,EAAE,CAAC;AAE1B,wDAAwD;AACxD,sDAAsD;AACtD,MAAM,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;AAEnC,CAAC,GAAS,EAAE;IACV,IAAI,IAAI,CAAC,CAAC,CAAC,KAAK,SAAS,EAAE;QACzB,kEAAkE;QAClE,MAAM,eAAe,CAAC,IAAI,CAAC,CAAC;QAC5B,mBAAmB,EAAE,CAAC;QACtB,OAAO;KACR;IAED,MAAM,kBAAkB,GAAG,CAAC,MAAM,IAAA,cAAa,EAAC,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC;IAEvE,MAAM,eAAe,CAAC,IAAI,CAAC,CAAC;IAE5B,MAAM,eAAe,GAAG,MAAM,IAAA,cAAa,EAAC,GAAG,CAAC,CAAC;IAEjD,IAAI,eAAe,CAAC,MAAM,IAAI,kBAAkB,CAAC,MAAM,EAAE;QACvD,gDAAgD;QAChD,OAAO;KACR;IAED,gCAAgC;IAChC,MAAM,EAAE,UAAU,EAAE,GAAG,MAAM,IAAA,iBAAO,EAAC;QACnC,IAAI,EAAE,YAAY;QAClB,IAAI,EAAE,QAAQ;QACd,OAAO,EAAE,qCAAqC;QAC9C,OAAO,EAAE,MAAM,CAAC,OAAO,CAAC,WAAW,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,EAAE,EAAE,IAAI,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC;YAC7D,KAAK,EAAE,GAAG,IAAI,IAAI,GAAG,EAAE;YACvB,KAAK,EAAE,GAAG;SACX,CAAC,CAAC;KACJ,CAAC,CAAC;IACH,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,GAAG,WAAW,CAAC,UAAsC,CAAC,CAAC;IAE7E,8CAA8C;IAC9C,MAAM,YAAY,GAAG,eAAe;SACjC,MAAM,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC,kBAAkB,CAAC,QAAQ,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC;SAC3D,GAAG,CAAC,CAAC,SAAS,EAAE,EAAE,CAAC,iCACf,SAAS,KACZ,OAAO,EAAE,GAAG,IAAI,MAAM,MAAM,OAAO,SAAS,CAAC,OAAO,EAAE,IACtD,CAAC,CAAC,CAAC,CAAC,CAAC;IAET,qCAAqC;IACrC,MAAM,IAAA,aAAE,EAAC,IAAA,gBAAI,EAAC,GAAG,EAAE,YAAY,EAAE,GAAG,YAAY,CAAC,EAAE,KAAK,CAAC,CAAC,CAAC;IAE3D,wEAAwE;IACxE,MAAM,EAAE,GAAG,MAAM,IAAA,eAAe,EAAC,YAAY,EAAE,GAAG,CAAC,CAAC;IAEpD,mCAAmC;IACnC,MAAM,IAAA,iBAAM,EACV,IAAA,gBAAI,EAAC,GAAG,EAAE,YAAY,EAAE,GAAG,EAAE,KAAK,CAAC,EACnC,IAAA,gBAAI,EAAC,GAAG,EAAE,YAAY,EAAE,GAAG,YAAY,CAAC,EAAE,KAAK,CAAC,CACjD,CAAC;AACJ,CAAC,CAAA,CAAC,EAAE,CAAC;AAEL,SAAS,eAAe,CAAC,IAAc;IACrC,OAAO,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,MAAM,EAAE,EAAE;QACrC,MAAM,KAAK,GAAG,IAAA,yBAAI,EAAC,IAAA,gBAAI,EAAC,GAAG,EAAE,6BAA6B,CAAC,EAAE,IAAI,CAAC,CAAC;QACnE,KAAK,CAAC,EAAE,CAAC,OAAO,EAAE,MAAM,CAAC,CAAC;QAC1B,KAAK,CAAC,EAAE,CAAC,OAAO,EAAE,CAAC,QAAQ,EAAE,EAAE;YAC7B,IAAI,QAAQ,KAAK,CAAC,EAAE;gBAClB,OAAO,EAAE,CAAC;aACX;iBAAM;gBACL,MAAM,CACJ,IAAI,KAAK,CAAC,2CAA2C,QAAQ,EAAE,CAAC,CACjE,CAAC;aACH;QACH,CAAC,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;AACL,CAAC;AAED,SAAe,mBAAmB;;QAChC,MAAM,QAAQ,GAAG,IAAA,gBAAI,EAAC,GAAG,EAAE,cAAc,CAAC,CAAC;QAC3C,MAAM,OAAO,GAAG,MAAM,IAAA,mBAAQ,EAAC,QAAQ,EAAE,EAAE,QAAQ,EAAE,OAAO,EAAE,CAAC,CAAC;QAChE,MAAM,KAAK,GAAG,IAAI,IAAI,EAAE,CAAC;QACzB,MAAM,IAAI,GAAG,IAAI,KAAK,CAAC,OAAO,EAAE,EAAE,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC;QAC7C,MAAM,KAAK,GAAG,IAAI,KAAK,CAAC,QAAQ,EAAE,GAAG,CAAC,EAAE,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC;QACnD,MAAM,IAAI,GAAG,KAAK,CAAC,WAAW,EAAE,CAAC;QACjC,MAAM,aAAa,GAAG,GAAG,IAAI,IAAI,KAAK,IAAI,IAAI,EAAE,CAAC;QACjD,MAAM,gBAAgB,GAAG,OAAO;YAC9B,4BAA4B;aAC3B,OAAO,CAAC,wCAAwC,EAAE,EAAE,CAAC;YACtD,6CAA6C;aAC5C,OAAO,CAAC,sBAAsB,EAAE,YAAY,aAAa,MAAM,CAAC,CAAC;QAEpE,MAAM,IAAA,oBAAS,EAAC,QAAQ,EAAE,gBAAgB,CAAC,CAAC;IAC9C,CAAC;CAAA"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@grafana/plugin-ui",
|
|
3
|
-
"version": "0.
|
|
3
|
+
"version": "0.3.0",
|
|
4
4
|
"repository": "git@github.com:grafana/plugin-ui.git",
|
|
5
5
|
"author": "Grafana Labs",
|
|
6
6
|
"main": "dist/index.js",
|
|
@@ -12,7 +12,12 @@
|
|
|
12
12
|
"storybook": "start-storybook -p 6006",
|
|
13
13
|
"storybook:build": "build-storybook"
|
|
14
14
|
},
|
|
15
|
+
"bin": {
|
|
16
|
+
"changeset-improved": "./dist/utils/changeset/index.js"
|
|
17
|
+
},
|
|
15
18
|
"dependencies": {
|
|
19
|
+
"@changesets/read": "^0.5.9",
|
|
20
|
+
"@changesets/write": "^0.2.3",
|
|
16
21
|
"@grafana/data": "^8.4.7",
|
|
17
22
|
"@grafana/experimental": "^0.0.2-canary.39",
|
|
18
23
|
"@grafana/runtime": "^8.4.7",
|
|
@@ -25,6 +30,7 @@
|
|
|
25
30
|
"copyfiles": "^2.4.1",
|
|
26
31
|
"lodash": "^4.17.21",
|
|
27
32
|
"memoize-one": "^5.1.1",
|
|
33
|
+
"prompts": "^2.4.2",
|
|
28
34
|
"rc-cascader": "1.0.1",
|
|
29
35
|
"react-awesome-query-builder": "^5.3.1",
|
|
30
36
|
"react-use": "17.3.1",
|
|
@@ -50,6 +56,7 @@
|
|
|
50
56
|
"@testing-library/react": "^11.2.2",
|
|
51
57
|
"@testing-library/user-event": "^12.8.3",
|
|
52
58
|
"@types/lodash": "^4.14.194",
|
|
59
|
+
"@types/prompts": "^2.4.4",
|
|
53
60
|
"@types/react": "17.0.38",
|
|
54
61
|
"@types/semver": "^7.5.0",
|
|
55
62
|
"@types/testing-library__jest-dom": "^5.9.5",
|
|
@@ -58,6 +65,9 @@
|
|
|
58
65
|
"mockdate": "^3.0.2",
|
|
59
66
|
"ts-jest": "^26.4.4"
|
|
60
67
|
},
|
|
68
|
+
"peerDependencies": {
|
|
69
|
+
"@changesets/cli": ">=2.x"
|
|
70
|
+
},
|
|
61
71
|
"files": [
|
|
62
72
|
"dist/**/*",
|
|
63
73
|
"package.json"
|