@k8slens/details-panel-components 1.0.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/README.md +11 -0
- package/dist/index.d.ts +9 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +214 -0
- package/dist/src/condition-badge.d.ts +13 -0
- package/dist/src/condition-badge.d.ts.map +1 -0
- package/dist/src/condition-tooltip-content.d.ts +10 -0
- package/dist/src/condition-tooltip-content.d.ts.map +1 -0
- package/dist/src/condition.d.ts +12 -0
- package/dist/src/condition.d.ts.map +1 -0
- package/dist/src/drawer-item-labels.d.ts +13 -0
- package/dist/src/drawer-item-labels.d.ts.map +1 -0
- package/dist/src/drawer-item-parts.d.ts +12 -0
- package/dist/src/drawer-item-parts.d.ts.map +1 -0
- package/dist/src/drawer-item.d.ts +14 -0
- package/dist/src/drawer-item.d.ts.map +1 -0
- package/dist/src/drawer-sub-title.d.ts +8 -0
- package/dist/src/drawer-sub-title.d.ts.map +1 -0
- package/dist/src/expandable-drawer-item.d.ts +34 -0
- package/dist/src/expandable-drawer-item.d.ts.map +1 -0
- package/dist/src/get-di-for-testing.d.ts +2 -0
- package/dist/src/get-di-for-testing.d.ts.map +1 -0
- package/dist/src/no-items-detail-item.d.ts +9 -0
- package/dist/src/no-items-detail-item.d.ts.map +1 -0
- package/dist/tsconfig.tsbuildinfo +1 -0
- package/package.json +66 -0
package/README.md
ADDED
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
# @k8slens/details-panel-components
|
|
2
|
+
|
|
3
|
+
The presentational parts a details panel section is made of: `DrawerItem` for a name and value row, `DrawerItemLabels` for a row of labels, `ExpandableDrawerItem` for a row that collapses, `DrawerSubTitle` for a heading inside a section, `NoItemsDetailItem` for the empty case and `ConditionBadge` for a Kubernetes condition. They are props in and JSX out, register nothing, and are what the sections of Lens itself render, so a section built from them looks native.
|
|
4
|
+
|
|
5
|
+
Several components share this package on purpose: they are one section's vocabulary and only make sense together.
|
|
6
|
+
|
|
7
|
+
# Usage
|
|
8
|
+
|
|
9
|
+
```bash
|
|
10
|
+
$ npm install @k8slens/details-panel-components
|
|
11
|
+
```
|
package/dist/index.d.ts
ADDED
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
export { DrawerItem, type DrawerItemProps } from "./src/drawer-item";
|
|
2
|
+
export { DrawerSubTitle, type DrawerSubTitleProps } from "./src/drawer-sub-title";
|
|
3
|
+
export { ExpandableDrawerItem, type ExpandableDrawerItemProps } from "./src/expandable-drawer-item";
|
|
4
|
+
export { DrawerItemLabels, type DrawerItemLabelsProps } from "./src/drawer-item-labels";
|
|
5
|
+
export { NoItemsDetailItem, type NoItemsDetailItemProps } from "./src/no-items-detail-item";
|
|
6
|
+
export { ConditionBadge, type ConditionBadgeProps } from "./src/condition-badge";
|
|
7
|
+
export { ConditionTooltipContent, type ConditionTooltipContentProps } from "./src/condition-tooltip-content";
|
|
8
|
+
export type { Condition } from "./src/condition";
|
|
9
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,KAAK,eAAe,EAAE,MAAM,mBAAmB,CAAC;AACrE,OAAO,EAAE,cAAc,EAAE,KAAK,mBAAmB,EAAE,MAAM,wBAAwB,CAAC;AAClF,OAAO,EAAE,oBAAoB,EAAE,KAAK,yBAAyB,EAAE,MAAM,8BAA8B,CAAC;AACpG,OAAO,EAAE,gBAAgB,EAAE,KAAK,qBAAqB,EAAE,MAAM,0BAA0B,CAAC;AACxF,OAAO,EAAE,iBAAiB,EAAE,KAAK,sBAAsB,EAAE,MAAM,4BAA4B,CAAC;AAC5F,OAAO,EAAE,cAAc,EAAE,KAAK,mBAAmB,EAAE,MAAM,uBAAuB,CAAC;AACjF,OAAO,EAAE,uBAAuB,EAAE,KAAK,4BAA4B,EAAE,MAAM,iCAAiC,CAAC;AAC7G,YAAY,EAAE,SAAS,EAAE,MAAM,iBAAiB,CAAC"}
|
package/dist/index.js
ADDED
|
@@ -0,0 +1,214 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __defProp = Object.defineProperty;
|
|
3
|
+
var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
|
|
4
|
+
var __getOwnPropNames = Object.getOwnPropertyNames;
|
|
5
|
+
var __hasOwnProp = Object.prototype.hasOwnProperty;
|
|
6
|
+
var __export = (target, all) => {
|
|
7
|
+
for (var name in all)
|
|
8
|
+
__defProp(target, name, { get: all[name], enumerable: true });
|
|
9
|
+
};
|
|
10
|
+
var __copyProps = (to, from, except, desc) => {
|
|
11
|
+
if (from && typeof from === "object" || typeof from === "function") {
|
|
12
|
+
for (let key of __getOwnPropNames(from))
|
|
13
|
+
if (!__hasOwnProp.call(to, key) && key !== except)
|
|
14
|
+
__defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
|
|
15
|
+
}
|
|
16
|
+
return to;
|
|
17
|
+
};
|
|
18
|
+
var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
|
|
19
|
+
|
|
20
|
+
// index.ts
|
|
21
|
+
var index_exports = {};
|
|
22
|
+
__export(index_exports, {
|
|
23
|
+
ConditionBadge: () => ConditionBadge,
|
|
24
|
+
ConditionTooltipContent: () => ConditionTooltipContent,
|
|
25
|
+
DrawerItem: () => DrawerItem,
|
|
26
|
+
DrawerItemLabels: () => DrawerItemLabels,
|
|
27
|
+
DrawerSubTitle: () => DrawerSubTitle,
|
|
28
|
+
ExpandableDrawerItem: () => ExpandableDrawerItem,
|
|
29
|
+
NoItemsDetailItem: () => NoItemsDetailItem
|
|
30
|
+
});
|
|
31
|
+
module.exports = __toCommonJS(index_exports);
|
|
32
|
+
|
|
33
|
+
// src/drawer-item-parts.tsx
|
|
34
|
+
var import_react = require("react");
|
|
35
|
+
var import_element_components = require("@k8slens/element-components");
|
|
36
|
+
var import_jsx_runtime = require("react/jsx-runtime");
|
|
37
|
+
var DrawerItemRow = ({ children, ...rest }) => /* @__PURE__ */ (0, import_jsx_runtime.jsx)(
|
|
38
|
+
import_element_components.Div,
|
|
39
|
+
{
|
|
40
|
+
$flex: { direction: "horizontal", wrap: true },
|
|
41
|
+
$padding: { vertical: "xs", right: "xs", left: "s" },
|
|
42
|
+
$backgroundColor: "backgroundPrimary",
|
|
43
|
+
$border: { bottom: { width: "xxs", color: "grey60" }, exceptLast: true },
|
|
44
|
+
...rest,
|
|
45
|
+
children
|
|
46
|
+
}
|
|
47
|
+
);
|
|
48
|
+
var DrawerItemName = ({ children, ...rest }) => /* @__PURE__ */ (0, import_jsx_runtime.jsx)(
|
|
49
|
+
import_element_components.Span,
|
|
50
|
+
{
|
|
51
|
+
"data-drawer-item-name-test": true,
|
|
52
|
+
$flexChild: "fixed",
|
|
53
|
+
$width: { min: "30%" },
|
|
54
|
+
$padding: { right: "xs" },
|
|
55
|
+
$overflow: "hidden",
|
|
56
|
+
$font: { textOverflow: "ellipsis" },
|
|
57
|
+
...rest,
|
|
58
|
+
children
|
|
59
|
+
}
|
|
60
|
+
);
|
|
61
|
+
var DrawerItemValue = ({ labelsOnly, children, ...rest }) => /* @__PURE__ */ (0, import_jsx_runtime.jsx)(
|
|
62
|
+
import_element_components.Span,
|
|
63
|
+
{
|
|
64
|
+
"data-drawer-item-value-test": true,
|
|
65
|
+
$flexChild: "shrinkable",
|
|
66
|
+
$font: { forceWrap: true },
|
|
67
|
+
$flex: labelsOnly ? { direction: "horizontal", wrap: true, gap: "xs" } : void 0,
|
|
68
|
+
...rest,
|
|
69
|
+
children: hasContent(children) ? children : "\u2014"
|
|
70
|
+
}
|
|
71
|
+
);
|
|
72
|
+
var hasContent = (children) => import_react.Children.toArray(children).some((child) => child !== "" && child !== null && child !== void 0);
|
|
73
|
+
|
|
74
|
+
// src/drawer-item.tsx
|
|
75
|
+
var import_jsx_runtime2 = require("react/jsx-runtime");
|
|
76
|
+
var DrawerItem = ({ name, labelsOnly, children, ...rest }) => /* @__PURE__ */ (0, import_jsx_runtime2.jsxs)(DrawerItemRow, { ...rest, children: [
|
|
77
|
+
/* @__PURE__ */ (0, import_jsx_runtime2.jsx)(DrawerItemName, { children: name }),
|
|
78
|
+
/* @__PURE__ */ (0, import_jsx_runtime2.jsx)(DrawerItemValue, { labelsOnly, children })
|
|
79
|
+
] });
|
|
80
|
+
|
|
81
|
+
// src/drawer-sub-title.tsx
|
|
82
|
+
var import_element_components2 = require("@k8slens/element-components");
|
|
83
|
+
var import_jsx_runtime3 = require("react/jsx-runtime");
|
|
84
|
+
var DrawerSubTitle = ({ children, ...rest }) => /* @__PURE__ */ (0, import_jsx_runtime3.jsx)(import_element_components2.Div, { $padding: "s", $font: { bold: true }, ...rest, children });
|
|
85
|
+
|
|
86
|
+
// src/expandable-drawer-item.tsx
|
|
87
|
+
var import_react2 = require("react");
|
|
88
|
+
var import_element_components3 = require("@k8slens/element-components");
|
|
89
|
+
var import_icon = require("@k8slens/icon");
|
|
90
|
+
var import_jsx_runtime4 = require("react/jsx-runtime");
|
|
91
|
+
var ExpandableDrawerItem = ({
|
|
92
|
+
name,
|
|
93
|
+
children,
|
|
94
|
+
collapsedContent,
|
|
95
|
+
isExpandable = true,
|
|
96
|
+
fullWidthContent,
|
|
97
|
+
labelsOnly,
|
|
98
|
+
buttonProps = {},
|
|
99
|
+
expanded: controlledExpanded,
|
|
100
|
+
onToggle,
|
|
101
|
+
...rest
|
|
102
|
+
}) => {
|
|
103
|
+
const [ownExpanded, setOwnExpanded] = (0, import_react2.useState)(false);
|
|
104
|
+
const isControlled = controlledExpanded !== void 0;
|
|
105
|
+
const expanded = isControlled ? controlledExpanded : ownExpanded;
|
|
106
|
+
const toggle = () => {
|
|
107
|
+
onToggle == null ? void 0 : onToggle();
|
|
108
|
+
if (!isControlled) {
|
|
109
|
+
setOwnExpanded((value) => !value);
|
|
110
|
+
}
|
|
111
|
+
};
|
|
112
|
+
const content = !isExpandable || expanded ? children : collapsedContent;
|
|
113
|
+
return /* @__PURE__ */ (0, import_jsx_runtime4.jsxs)(DrawerItemRow, { ...rest, children: [
|
|
114
|
+
isExpandable ? /* @__PURE__ */ (0, import_jsx_runtime4.jsxs)(
|
|
115
|
+
import_element_components3.Button,
|
|
116
|
+
{
|
|
117
|
+
...buttonProps,
|
|
118
|
+
$onClick: toggle,
|
|
119
|
+
$flexChild: "fixed",
|
|
120
|
+
$width: { min: "30%" },
|
|
121
|
+
$padding: { right: "xs" },
|
|
122
|
+
$textAlign: "left",
|
|
123
|
+
$flex: { direction: "horizontal", verticalAlign: "center", gap: "xxs" },
|
|
124
|
+
children: [
|
|
125
|
+
name,
|
|
126
|
+
/* @__PURE__ */ (0, import_jsx_runtime4.jsx)(import_icon.Icon, { material: expanded ? "unfold_less" : "unfold_more", smallest: true })
|
|
127
|
+
]
|
|
128
|
+
}
|
|
129
|
+
) : /* @__PURE__ */ (0, import_jsx_runtime4.jsx)(DrawerItemName, { children: name }),
|
|
130
|
+
/* @__PURE__ */ (0, import_jsx_runtime4.jsx)(DrawerItemValue, { labelsOnly, $width: fullWidthContent && expanded ? "full" : void 0, children: content })
|
|
131
|
+
] });
|
|
132
|
+
};
|
|
133
|
+
|
|
134
|
+
// src/drawer-item-labels.tsx
|
|
135
|
+
var import_badge = require("@k8slens/badge");
|
|
136
|
+
var import_jsx_runtime5 = require("react/jsx-runtime");
|
|
137
|
+
var expandableLabelsCharLengthLimit = 40;
|
|
138
|
+
var stringifyLabels = (labels) => Object.entries(labels).map(([name, value]) => `${name}=${value}`);
|
|
139
|
+
var DrawerItemLabels = ({ labels, name, ...rest }) => {
|
|
140
|
+
if (!labels || typeof labels !== "object") {
|
|
141
|
+
return null;
|
|
142
|
+
}
|
|
143
|
+
const labelStrings = Array.isArray(labels) ? labels : stringifyLabels(labels);
|
|
144
|
+
if (labelStrings.length === 0) {
|
|
145
|
+
return null;
|
|
146
|
+
}
|
|
147
|
+
const isExpandable = labelStrings.length > 1 && labelStrings.join().length > expandableLabelsCharLengthLimit;
|
|
148
|
+
return /* @__PURE__ */ (0, import_jsx_runtime5.jsx)(
|
|
149
|
+
ExpandableDrawerItem,
|
|
150
|
+
{
|
|
151
|
+
...rest,
|
|
152
|
+
name,
|
|
153
|
+
labelsOnly: true,
|
|
154
|
+
collapsedContent: `${labelStrings.length} ${name}`,
|
|
155
|
+
isExpandable,
|
|
156
|
+
children: labelStrings.map((label) => /* @__PURE__ */ (0, import_jsx_runtime5.jsx)(import_badge.Badge, { label, title: label }, label))
|
|
157
|
+
}
|
|
158
|
+
);
|
|
159
|
+
};
|
|
160
|
+
|
|
161
|
+
// src/no-items-detail-item.tsx
|
|
162
|
+
var import_element_components4 = require("@k8slens/element-components");
|
|
163
|
+
var import_jsx_runtime6 = require("react/jsx-runtime");
|
|
164
|
+
var NoItemsDetailItem = ({ children, ...rest }) => /* @__PURE__ */ (0, import_jsx_runtime6.jsx)(import_element_components4.Div, { $padding: { vertical: "xs", right: "xs", left: "s" }, ...rest, children });
|
|
165
|
+
|
|
166
|
+
// src/condition-badge.tsx
|
|
167
|
+
var import_badge2 = require("@k8slens/badge");
|
|
168
|
+
var import_element_components5 = require("@k8slens/element-components");
|
|
169
|
+
|
|
170
|
+
// src/condition-tooltip-content.tsx
|
|
171
|
+
var import_jsx_runtime7 = require("react/jsx-runtime");
|
|
172
|
+
var ConditionTooltipContent = ({ condition }) => /* @__PURE__ */ (0, import_jsx_runtime7.jsxs)(import_jsx_runtime7.Fragment, { children: [
|
|
173
|
+
/* @__PURE__ */ (0, import_jsx_runtime7.jsx)("p", { children: condition.message }),
|
|
174
|
+
condition.lastTransitionTime ? /* @__PURE__ */ (0, import_jsx_runtime7.jsx)("p", { children: `Last transition time: ${condition.lastTransitionTime}` }) : null
|
|
175
|
+
] });
|
|
176
|
+
|
|
177
|
+
// src/condition-badge.tsx
|
|
178
|
+
var import_jsx_runtime8 = require("react/jsx-runtime");
|
|
179
|
+
var conditionTypeToColor = {
|
|
180
|
+
Available: "success",
|
|
181
|
+
Accepted: "success",
|
|
182
|
+
Ready: "success",
|
|
183
|
+
Progressing: "notice",
|
|
184
|
+
Programmed: "success",
|
|
185
|
+
ResolvedRefs: "success",
|
|
186
|
+
Reconciled: "success",
|
|
187
|
+
ReplicaFailure: "critical"
|
|
188
|
+
};
|
|
189
|
+
var ConditionBadge = ({ condition, label, ...rest }) => {
|
|
190
|
+
const { type, status } = condition;
|
|
191
|
+
const color = status === "True" ? conditionTypeToColor[type] : void 0;
|
|
192
|
+
return /* @__PURE__ */ (0, import_jsx_runtime8.jsx)(
|
|
193
|
+
import_badge2.Badge,
|
|
194
|
+
{
|
|
195
|
+
label: label ?? type,
|
|
196
|
+
$disabled: status !== "True",
|
|
197
|
+
$backgroundColor: color,
|
|
198
|
+
$color: color ? "white" : void 0,
|
|
199
|
+
$tooltip: (0, import_element_components5.getTooltipProps)({ Content: ConditionTooltipContent, contentProps: { condition } }),
|
|
200
|
+
...rest
|
|
201
|
+
}
|
|
202
|
+
);
|
|
203
|
+
};
|
|
204
|
+
// Annotate the CommonJS export names for ESM import in node:
|
|
205
|
+
0 && (module.exports = {
|
|
206
|
+
ConditionBadge,
|
|
207
|
+
ConditionTooltipContent,
|
|
208
|
+
DrawerItem,
|
|
209
|
+
DrawerItemLabels,
|
|
210
|
+
DrawerSubTitle,
|
|
211
|
+
ExpandableDrawerItem,
|
|
212
|
+
NoItemsDetailItem
|
|
213
|
+
});
|
|
214
|
+
//# sourceMappingURL=data:application/json;base64,ewogICJ2ZXJzaW9uIjogMywKICAic291cmNlcyI6IFsiLi4vaW5kZXgudHMiLCAiLi4vc3JjL2RyYXdlci1pdGVtLXBhcnRzLnRzeCIsICIuLi9zcmMvZHJhd2VyLWl0ZW0udHN4IiwgIi4uL3NyYy9kcmF3ZXItc3ViLXRpdGxlLnRzeCIsICIuLi9zcmMvZXhwYW5kYWJsZS1kcmF3ZXItaXRlbS50c3giLCAiLi4vc3JjL2RyYXdlci1pdGVtLWxhYmVscy50c3giLCAiLi4vc3JjL25vLWl0ZW1zLWRldGFpbC1pdGVtLnRzeCIsICIuLi9zcmMvY29uZGl0aW9uLWJhZGdlLnRzeCIsICIuLi9zcmMvY29uZGl0aW9uLXRvb2x0aXAtY29udGVudC50c3giXSwKICAic291cmNlc0NvbnRlbnQiOiBbImV4cG9ydCB7IERyYXdlckl0ZW0sIHR5cGUgRHJhd2VySXRlbVByb3BzIH0gZnJvbSBcIi4vc3JjL2RyYXdlci1pdGVtXCI7XG5leHBvcnQgeyBEcmF3ZXJTdWJUaXRsZSwgdHlwZSBEcmF3ZXJTdWJUaXRsZVByb3BzIH0gZnJvbSBcIi4vc3JjL2RyYXdlci1zdWItdGl0bGVcIjtcbmV4cG9ydCB7IEV4cGFuZGFibGVEcmF3ZXJJdGVtLCB0eXBlIEV4cGFuZGFibGVEcmF3ZXJJdGVtUHJvcHMgfSBmcm9tIFwiLi9zcmMvZXhwYW5kYWJsZS1kcmF3ZXItaXRlbVwiO1xuZXhwb3J0IHsgRHJhd2VySXRlbUxhYmVscywgdHlwZSBEcmF3ZXJJdGVtTGFiZWxzUHJvcHMgfSBmcm9tIFwiLi9zcmMvZHJhd2VyLWl0ZW0tbGFiZWxzXCI7XG5leHBvcnQgeyBOb0l0ZW1zRGV0YWlsSXRlbSwgdHlwZSBOb0l0ZW1zRGV0YWlsSXRlbVByb3BzIH0gZnJvbSBcIi4vc3JjL25vLWl0ZW1zLWRldGFpbC1pdGVtXCI7XG5leHBvcnQgeyBDb25kaXRpb25CYWRnZSwgdHlwZSBDb25kaXRpb25CYWRnZVByb3BzIH0gZnJvbSBcIi4vc3JjL2NvbmRpdGlvbi1iYWRnZVwiO1xuZXhwb3J0IHsgQ29uZGl0aW9uVG9vbHRpcENvbnRlbnQsIHR5cGUgQ29uZGl0aW9uVG9vbHRpcENvbnRlbnRQcm9wcyB9IGZyb20gXCIuL3NyYy9jb25kaXRpb24tdG9vbHRpcC1jb250ZW50XCI7XG5leHBvcnQgdHlwZSB7IENvbmRpdGlvbiB9IGZyb20gXCIuL3NyYy9jb25kaXRpb25cIjtcbiIsICJpbXBvcnQgeyBDaGlsZHJlbiB9IGZyb20gXCJyZWFjdFwiO1xuaW1wb3J0IHsgRGl2LCB0eXBlIERpdlByb3BzLCBTcGFuLCB0eXBlIFNwYW5Qcm9wcyB9IGZyb20gXCJAazhzbGVucy9lbGVtZW50LWNvbXBvbmVudHNcIjtcblxuLyoqIFRoZSBsb29rIGV2ZXJ5IHJvdyBvZiBhIHNlY3Rpb24gc2hhcmVzOiBpdHMgcGFkZGluZywgYmFja2dyb3VuZCBhbmQgdGhlIGxpbmUgdW5kZXIgaXQuICovXG5leHBvcnQgY29uc3QgRHJhd2VySXRlbVJvdyA9ICh7IGNoaWxkcmVuLCAuLi5yZXN0IH06IERpdlByb3BzKSA9PiAoXG4gIDxEaXZcbiAgICAkZmxleD17eyBkaXJlY3Rpb246IFwiaG9yaXpvbnRhbFwiLCB3cmFwOiB0cnVlIH19XG4gICAgJHBhZGRpbmc9e3sgdmVydGljYWw6IFwieHNcIiwgcmlnaHQ6IFwieHNcIiwgbGVmdDogXCJzXCIgfX1cbiAgICAkYmFja2dyb3VuZENvbG9yPVwiYmFja2dyb3VuZFByaW1hcnlcIlxuICAgICRib3JkZXI9e3sgYm90dG9tOiB7IHdpZHRoOiBcInh4c1wiLCBjb2xvcjogXCJncmV5NjBcIiB9LCBleGNlcHRMYXN0OiB0cnVlIH19XG4gICAgey4uLnJlc3R9XG4gID5cbiAgICB7Y2hpbGRyZW59XG4gIDwvRGl2PlxuKTtcblxuLyoqIFRoZSBuYW1lIGNvbHVtbiBvZiBhIHJvdzogYXQgbGVhc3QgYSBzaGFyZSBvZiB0aGUgcm93LCB3aWRlciBpZiB0aGUgbmFtZSBuZWVkcyBpdC4gKi9cbmV4cG9ydCBjb25zdCBEcmF3ZXJJdGVtTmFtZSA9ICh7IGNoaWxkcmVuLCAuLi5yZXN0IH06IFNwYW5Qcm9wcykgPT4gKFxuICA8U3BhblxuICAgIGRhdGEtZHJhd2VyLWl0ZW0tbmFtZS10ZXN0XG4gICAgJGZsZXhDaGlsZD1cImZpeGVkXCJcbiAgICAkd2lkdGg9e3sgbWluOiBcIjMwJVwiIH19XG4gICAgJHBhZGRpbmc9e3sgcmlnaHQ6IFwieHNcIiB9fVxuICAgICRvdmVyZmxvdz1cImhpZGRlblwiXG4gICAgJGZvbnQ9e3sgdGV4dE92ZXJmbG93OiBcImVsbGlwc2lzXCIgfX1cbiAgICB7Li4ucmVzdH1cbiAgPlxuICAgIHtjaGlsZHJlbn1cbiAgPC9TcGFuPlxuKTtcblxuZXhwb3J0IGludGVyZmFjZSBEcmF3ZXJJdGVtVmFsdWVQcm9wcyBleHRlbmRzIFNwYW5Qcm9wcyB7XG4gIC8qKiBMYXlzIHRoZSB2YWx1ZSBvdXQgYXMgYSB3cmFwcGluZyByb3cgb2YgbGFiZWxzLiAqL1xuICBsYWJlbHNPbmx5PzogYm9vbGVhbjtcbn1cblxuLyoqIFRoZSB2YWx1ZSBjb2x1bW4gb2YgYSByb3csIHRha2luZyB0aGUgcmVzdCBvZiBpdDsgYSBkYXNoIHdoZW4gdGhlcmUgaXMgbm90aGluZyB0byBzaG93LiAqL1xuZXhwb3J0IGNvbnN0IERyYXdlckl0ZW1WYWx1ZSA9ICh7IGxhYmVsc09ubHksIGNoaWxkcmVuLCAuLi5yZXN0IH06IERyYXdlckl0ZW1WYWx1ZVByb3BzKSA9PiAoXG4gIDxTcGFuXG4gICAgZGF0YS1kcmF3ZXItaXRlbS12YWx1ZS10ZXN0XG4gICAgJGZsZXhDaGlsZD1cInNocmlua2FibGVcIlxuICAgICRmb250PXt7IGZvcmNlV3JhcDogdHJ1ZSB9fVxuICAgICRmbGV4PXtsYWJlbHNPbmx5ID8geyBkaXJlY3Rpb246IFwiaG9yaXpvbnRhbFwiLCB3cmFwOiB0cnVlLCBnYXA6IFwieHNcIiB9IDogdW5kZWZpbmVkfVxuICAgIHsuLi5yZXN0fVxuICA+XG4gICAge2hhc0NvbnRlbnQoY2hpbGRyZW4pID8gY2hpbGRyZW4gOiBcIlx1MjAxNFwifVxuICA8L1NwYW4+XG4pO1xuXG5jb25zdCBoYXNDb250ZW50ID0gKGNoaWxkcmVuOiBSZWFjdC5SZWFjdE5vZGUpID0+XG4gIENoaWxkcmVuLnRvQXJyYXkoY2hpbGRyZW4pLnNvbWUoKGNoaWxkKSA9PiBjaGlsZCAhPT0gXCJcIiAmJiBjaGlsZCAhPT0gbnVsbCAmJiBjaGlsZCAhPT0gdW5kZWZpbmVkKTtcbiIsICJpbXBvcnQgdHlwZSB7IERpdlByb3BzIH0gZnJvbSBcIkBrOHNsZW5zL2VsZW1lbnQtY29tcG9uZW50c1wiO1xuaW1wb3J0IHsgRHJhd2VySXRlbU5hbWUsIERyYXdlckl0ZW1Sb3csIERyYXdlckl0ZW1WYWx1ZSB9IGZyb20gXCIuL2RyYXdlci1pdGVtLXBhcnRzXCI7XG5cbmV4cG9ydCBpbnRlcmZhY2UgRHJhd2VySXRlbVByb3BzIGV4dGVuZHMgRGl2UHJvcHMge1xuICAvKiogV2hhdCB0aGUgcm93IGlzIGFib3V0LCBzaG93biBpbiB0aGUgbmFtZSBjb2x1bW4uICovXG4gIG5hbWU6IFJlYWN0LlJlYWN0Tm9kZTtcbiAgLyoqIExheXMgdGhlIHZhbHVlIG91dCBhcyBhIHJvdyBvZiBsYWJlbHMuICovXG4gIGxhYmVsc09ubHk/OiBib29sZWFuO1xufVxuXG4vKipcbiAqIEEgcm93IG9mIGEgZGV0YWlscyBwYW5lbCBzZWN0aW9uOiBhIG5hbWUgYW5kLCBuZXh0IHRvIGl0LCBhIHZhbHVlLiBUaGUgcm93XG4gKiBpcyBhIGBEaXZgLCBzbyBpdCB0YWtlcyB0aGUgYCRwcm9wc2Agb2Ygb25lIGFuZCBwYXNzZXMgZXZlcnl0aGluZyBlbHNlIHRvXG4gKiB0aGUgZWxlbWVudCBpdCByZW5kZXJzLlxuICovXG5leHBvcnQgY29uc3QgRHJhd2VySXRlbSA9ICh7IG5hbWUsIGxhYmVsc09ubHksIGNoaWxkcmVuLCAuLi5yZXN0IH06IERyYXdlckl0ZW1Qcm9wcykgPT4gKFxuICA8RHJhd2VySXRlbVJvdyB7Li4ucmVzdH0+XG4gICAgPERyYXdlckl0ZW1OYW1lPntuYW1lfTwvRHJhd2VySXRlbU5hbWU+XG4gICAgPERyYXdlckl0ZW1WYWx1ZSBsYWJlbHNPbmx5PXtsYWJlbHNPbmx5fT57Y2hpbGRyZW59PC9EcmF3ZXJJdGVtVmFsdWU+XG4gIDwvRHJhd2VySXRlbVJvdz5cbik7XG4iLCAiaW1wb3J0IHsgRGl2LCB0eXBlIERpdlByb3BzIH0gZnJvbSBcIkBrOHNsZW5zL2VsZW1lbnQtY29tcG9uZW50c1wiO1xuXG5leHBvcnQgaW50ZXJmYWNlIERyYXdlclN1YlRpdGxlUHJvcHMgZXh0ZW5kcyBEaXZQcm9wcyB7fVxuXG4vKipcbiAqIEEgaGVhZGluZyBpbnNpZGUgYSBkZXRhaWxzIHBhbmVsIHNlY3Rpb24sIGZvciBncm91cGluZyBpdHMgcm93cy5cbiAqL1xuZXhwb3J0IGNvbnN0IERyYXdlclN1YlRpdGxlID0gKHsgY2hpbGRyZW4sIC4uLnJlc3QgfTogRHJhd2VyU3ViVGl0bGVQcm9wcykgPT4gKFxuICA8RGl2ICRwYWRkaW5nPVwic1wiICRmb250PXt7IGJvbGQ6IHRydWUgfX0gey4uLnJlc3R9PlxuICAgIHtjaGlsZHJlbn1cbiAgPC9EaXY+XG4pO1xuIiwgImltcG9ydCB7IHVzZVN0YXRlIH0gZnJvbSBcInJlYWN0XCI7XG5pbXBvcnQgeyBCdXR0b24sIHR5cGUgRGl2UHJvcHMgfSBmcm9tIFwiQGs4c2xlbnMvZWxlbWVudC1jb21wb25lbnRzXCI7XG5pbXBvcnQgeyBJY29uIH0gZnJvbSBcIkBrOHNsZW5zL2ljb25cIjtcbmltcG9ydCB7IERyYXdlckl0ZW1OYW1lLCBEcmF3ZXJJdGVtUm93LCBEcmF3ZXJJdGVtVmFsdWUgfSBmcm9tIFwiLi9kcmF3ZXItaXRlbS1wYXJ0c1wiO1xuXG50eXBlIFRlc3RBdHRyaWJ1dGVWYWx1ZSA9IHN0cmluZyB8IG51bWJlciB8IGJvb2xlYW4gfCBudWxsIHwgdW5kZWZpbmVkO1xuXG5leHBvcnQgaW50ZXJmYWNlIEV4cGFuZGFibGVEcmF3ZXJJdGVtUHJvcHMgZXh0ZW5kcyBEaXZQcm9wcyB7XG4gIC8qKiBXaGF0IHRoZSByb3cgaXMgYWJvdXQsIHNob3duIGluIHRoZSBuYW1lIGNvbHVtbiBhbmQgb24gdGhlIHRvZ2dsZS4gKi9cbiAgbmFtZTogUmVhY3QuUmVhY3ROb2RlO1xuICAvKiogVGhlIHZhbHVlLCBzaG93biB3aGVuIHRoZSByb3cgaXMgZXhwYW5kZWQgb3IgY2Fubm90IGNvbGxhcHNlLiAqL1xuICBjaGlsZHJlbjogUmVhY3QuUmVhY3ROb2RlO1xuICAvKiogV2hhdCBzdGFuZHMgaW4gZm9yIHRoZSB2YWx1ZSB3aGlsZSB0aGUgcm93IGlzIGNvbGxhcHNlZC4gKi9cbiAgY29sbGFwc2VkQ29udGVudDogUmVhY3QuUmVhY3ROb2RlO1xuICAvKiogV2hldGhlciB0aGUgcm93IGNvbGxhcHNlcyBhdCBhbGwuIEEgcm93IHRoYXQgZG9lcyBub3Qgc2hvd3MgaXRzIGNoaWxkcmVuLiAqL1xuICBpc0V4cGFuZGFibGU/OiBib29sZWFuO1xuICAvKiogR2l2ZSB0aGUgZXhwYW5kZWQgdmFsdWUgdGhlIHdob2xlIHdpZHRoIG9mIHRoZSByb3csIGJlbG93IHRoZSBuYW1lLiAqL1xuICBmdWxsV2lkdGhDb250ZW50PzogYm9vbGVhbjtcbiAgLyoqIExheXMgdGhlIHZhbHVlIG91dCBhcyBhIHJvdyBvZiBsYWJlbHMuICovXG4gIGxhYmVsc09ubHk/OiBib29sZWFuO1xuICAvKipcbiAgICogV2hldGhlciB0aGUgcm93IGlzIGV4cGFuZGVkLiBMZWF2ZSBpdCBvdXQgYW5kIHRoZSByb3cgcmVtZW1iZXJzIGl0cyBvd25cbiAgICogc3RhdGU7IHBhc3MgaXQsIHRvZ2V0aGVyIHdpdGggYG9uVG9nZ2xlYCwgYW5kIHdob2V2ZXIgcmVuZGVycyB0aGUgcm93XG4gICAqIGRlY2lkZXMuIFN3aXRjaGluZyBiZXR3ZWVuIHRoZSB0d28gd2hpbGUgdGhlIHJvdyBpcyBtb3VudGVkIGlzIG5vdFxuICAgKiBzdXBwb3J0ZWQuXG4gICAqL1xuICBleHBhbmRlZD86IGJvb2xlYW47XG4gIC8qKiBDYWxsZWQgd2hlbiB0aGUgdG9nZ2xlIGlzIGNsaWNrZWQsIGluIGJvdGggbW9kZXMuICovXG4gIG9uVG9nZ2xlPzogKCkgPT4gdm9pZDtcbiAgLyoqIEF0dHJpYnV0ZXMgZm9yIHRoZSB0b2dnbGU7IGl0IGlzIGEgYEJ1dHRvbmAgb2YgYEBrOHNsZW5zL2VsZW1lbnQtY29tcG9uZW50c2AsIHNvIGRpc2FibGUgaXQgd2l0aCBgJGVuYWJsZWRgLiAqL1xuICBidXR0b25Qcm9wcz86IE9taXQ8UmVhY3QuQnV0dG9uSFRNTEF0dHJpYnV0ZXM8SFRNTEJ1dHRvbkVsZW1lbnQ+LCBcImRpc2FibGVkXCI+ICZcbiAgICBQYXJ0aWFsPFJlY29yZDxgZGF0YS0ke3N0cmluZ30tdGVzdGAsIFRlc3RBdHRyaWJ1dGVWYWx1ZT4+O1xufVxuXG4vKipcbiAqIEEgcm93IG9mIGEgZGV0YWlscyBwYW5lbCBzZWN0aW9uIHdob3NlIHZhbHVlIGNvbGxhcHNlcyB0byBhIHN1bW1hcnkgdW50aWxcbiAqIHRoZSB1c2VyIGV4cGFuZHMgaXQuIFVuY29udHJvbGxlZCBieSBkZWZhdWx0OiB0aGUgcm93IGtlZXBzIGl0cyBvd24gc3RhdGUuXG4gKi9cbmV4cG9ydCBjb25zdCBFeHBhbmRhYmxlRHJhd2VySXRlbSA9ICh7XG4gIG5hbWUsXG4gIGNoaWxkcmVuLFxuICBjb2xsYXBzZWRDb250ZW50LFxuICBpc0V4cGFuZGFibGUgPSB0cnVlLFxuICBmdWxsV2lkdGhDb250ZW50LFxuICBsYWJlbHNPbmx5LFxuICBidXR0b25Qcm9wcyA9IHt9LFxuICBleHBhbmRlZDogY29udHJvbGxlZEV4cGFuZGVkLFxuICBvblRvZ2dsZSxcbiAgLi4ucmVzdFxufTogRXhwYW5kYWJsZURyYXdlckl0ZW1Qcm9wcykgPT4ge1xuICBjb25zdCBbb3duRXhwYW5kZWQsIHNldE93bkV4cGFuZGVkXSA9IHVzZVN0YXRlKGZhbHNlKTtcbiAgY29uc3QgaXNDb250cm9sbGVkID0gY29udHJvbGxlZEV4cGFuZGVkICE9PSB1bmRlZmluZWQ7XG4gIGNvbnN0IGV4cGFuZGVkID0gaXNDb250cm9sbGVkID8gY29udHJvbGxlZEV4cGFuZGVkIDogb3duRXhwYW5kZWQ7XG5cbiAgY29uc3QgdG9nZ2xlID0gKCkgPT4ge1xuICAgIG9uVG9nZ2xlPy4oKTtcblxuICAgIGlmICghaXNDb250cm9sbGVkKSB7XG4gICAgICBzZXRPd25FeHBhbmRlZCgodmFsdWUpID0+ICF2YWx1ZSk7XG4gICAgfVxuICB9O1xuXG4gIGNvbnN0IGNvbnRlbnQgPSAhaXNFeHBhbmRhYmxlIHx8IGV4cGFuZGVkID8gY2hpbGRyZW4gOiBjb2xsYXBzZWRDb250ZW50O1xuXG4gIHJldHVybiAoXG4gICAgPERyYXdlckl0ZW1Sb3cgey4uLnJlc3R9PlxuICAgICAge2lzRXhwYW5kYWJsZSA/IChcbiAgICAgICAgPEJ1dHRvblxuICAgICAgICAgIHsuLi5idXR0b25Qcm9wc31cbiAgICAgICAgICAkb25DbGljaz17dG9nZ2xlfVxuICAgICAgICAgICRmbGV4Q2hpbGQ9XCJmaXhlZFwiXG4gICAgICAgICAgJHdpZHRoPXt7IG1pbjogXCIzMCVcIiB9fVxuICAgICAgICAgICRwYWRkaW5nPXt7IHJpZ2h0OiBcInhzXCIgfX1cbiAgICAgICAgICAkdGV4dEFsaWduPVwibGVmdFwiXG4gICAgICAgICAgJGZsZXg9e3sgZGlyZWN0aW9uOiBcImhvcml6b250YWxcIiwgdmVydGljYWxBbGlnbjogXCJjZW50ZXJcIiwgZ2FwOiBcInh4c1wiIH19XG4gICAgICAgID5cbiAgICAgICAgICB7bmFtZX1cbiAgICAgICAgICA8SWNvbiBtYXRlcmlhbD17ZXhwYW5kZWQgPyBcInVuZm9sZF9sZXNzXCIgOiBcInVuZm9sZF9tb3JlXCJ9IHNtYWxsZXN0IC8+XG4gICAgICAgIDwvQnV0dG9uPlxuICAgICAgKSA6IChcbiAgICAgICAgPERyYXdlckl0ZW1OYW1lPntuYW1lfTwvRHJhd2VySXRlbU5hbWU+XG4gICAgICApfVxuICAgICAgPERyYXdlckl0ZW1WYWx1ZSBsYWJlbHNPbmx5PXtsYWJlbHNPbmx5fSAkd2lkdGg9e2Z1bGxXaWR0aENvbnRlbnQgJiYgZXhwYW5kZWQgPyBcImZ1bGxcIiA6IHVuZGVmaW5lZH0+XG4gICAgICAgIHtjb250ZW50fVxuICAgICAgPC9EcmF3ZXJJdGVtVmFsdWU+XG4gICAgPC9EcmF3ZXJJdGVtUm93PlxuICApO1xufTtcbiIsICJpbXBvcnQgeyBCYWRnZSB9IGZyb20gXCJAazhzbGVucy9iYWRnZVwiO1xuaW1wb3J0IHsgRXhwYW5kYWJsZURyYXdlckl0ZW0sIHR5cGUgRXhwYW5kYWJsZURyYXdlckl0ZW1Qcm9wcyB9IGZyb20gXCIuL2V4cGFuZGFibGUtZHJhd2VyLWl0ZW1cIjtcblxuY29uc3QgZXhwYW5kYWJsZUxhYmVsc0NoYXJMZW5ndGhMaW1pdCA9IDQwO1xuXG5leHBvcnQgaW50ZXJmYWNlIERyYXdlckl0ZW1MYWJlbHNQcm9wc1xuICBleHRlbmRzIE9taXQ8RXhwYW5kYWJsZURyYXdlckl0ZW1Qcm9wcywgXCJjaGlsZHJlblwiIHwgXCJjb2xsYXBzZWRDb250ZW50XCIgfCBcImlzRXhwYW5kYWJsZVwiIHwgXCJsYWJlbHNPbmx5XCI+IHtcbiAgLyoqIFRoZSBsYWJlbHMsIGVpdGhlciBhcyBgbmFtZT12YWx1ZWAgc3RyaW5ncyBvciBhcyB0aGUgbWFwIGEgcmVzb3VyY2UgY2Fycmllcy4gKi9cbiAgbGFiZWxzOiBzdHJpbmdbXSB8IFBhcnRpYWw8UmVjb3JkPHN0cmluZywgc3RyaW5nPj47XG59XG5cbmNvbnN0IHN0cmluZ2lmeUxhYmVscyA9IChsYWJlbHM6IFBhcnRpYWw8UmVjb3JkPHN0cmluZywgc3RyaW5nPj4pID0+XG4gIE9iamVjdC5lbnRyaWVzKGxhYmVscykubWFwKChbbmFtZSwgdmFsdWVdKSA9PiBgJHtuYW1lfT0ke3ZhbHVlfWApO1xuXG4vKipcbiAqIEEgcm93IG9mIGEgZGV0YWlscyBwYW5lbCBzZWN0aW9uIHNob3dpbmcgbGFiZWxzIGFzIGJhZGdlcy4gTWFueSBsb25nIGxhYmVsc1xuICogY29sbGFwc2UgdG8gdGhlaXIgY291bnQgdW50aWwgZXhwYW5kZWQ7IHRoZSByb3cgcmVtZW1iZXJzIHRoZSBleHBhbnNpb25cbiAqIGl0c2VsZiB1bmxlc3MgYGV4cGFuZGVkYCBhbmQgYG9uVG9nZ2xlYCBhcmUgZ2l2ZW4uIFJlbmRlcnMgbm90aGluZyB3aXRob3V0XG4gKiBsYWJlbHMuXG4gKi9cbmV4cG9ydCBjb25zdCBEcmF3ZXJJdGVtTGFiZWxzID0gKHsgbGFiZWxzLCBuYW1lLCAuLi5yZXN0IH06IERyYXdlckl0ZW1MYWJlbHNQcm9wcykgPT4ge1xuICBpZiAoIWxhYmVscyB8fCB0eXBlb2YgbGFiZWxzICE9PSBcIm9iamVjdFwiKSB7XG4gICAgcmV0dXJuIG51bGw7XG4gIH1cblxuICBjb25zdCBsYWJlbFN0cmluZ3MgPSBBcnJheS5pc0FycmF5KGxhYmVscykgPyBsYWJlbHMgOiBzdHJpbmdpZnlMYWJlbHMobGFiZWxzKTtcblxuICBpZiAobGFiZWxTdHJpbmdzLmxlbmd0aCA9PT0gMCkge1xuICAgIHJldHVybiBudWxsO1xuICB9XG5cbiAgY29uc3QgaXNFeHBhbmRhYmxlID0gbGFiZWxTdHJpbmdzLmxlbmd0aCA+IDEgJiYgbGFiZWxTdHJpbmdzLmpvaW4oKS5sZW5ndGggPiBleHBhbmRhYmxlTGFiZWxzQ2hhckxlbmd0aExpbWl0O1xuXG4gIHJldHVybiAoXG4gICAgPEV4cGFuZGFibGVEcmF3ZXJJdGVtXG4gICAgICB7Li4ucmVzdH1cbiAgICAgIG5hbWU9e25hbWV9XG4gICAgICBsYWJlbHNPbmx5XG4gICAgICBjb2xsYXBzZWRDb250ZW50PXtgJHtsYWJlbFN0cmluZ3MubGVuZ3RofSAke25hbWV9YH1cbiAgICAgIGlzRXhwYW5kYWJsZT17aXNFeHBhbmRhYmxlfVxuICAgID5cbiAgICAgIHtsYWJlbFN0cmluZ3MubWFwKChsYWJlbCkgPT4gKFxuICAgICAgICA8QmFkZ2Uga2V5PXtsYWJlbH0gbGFiZWw9e2xhYmVsfSB0aXRsZT17bGFiZWx9IC8+XG4gICAgICApKX1cbiAgICA8L0V4cGFuZGFibGVEcmF3ZXJJdGVtPlxuICApO1xufTtcbiIsICJpbXBvcnQgeyBEaXYsIHR5cGUgRGl2UHJvcHMgfSBmcm9tIFwiQGs4c2xlbnMvZWxlbWVudC1jb21wb25lbnRzXCI7XG5cbmV4cG9ydCBpbnRlcmZhY2UgTm9JdGVtc0RldGFpbEl0ZW1Qcm9wcyBleHRlbmRzIERpdlByb3BzIHt9XG5cbi8qKlxuICogV2hhdCBhIGRldGFpbHMgcGFuZWwgc2VjdGlvbiBzaG93cyB3aGVuIGl0IGhhcyBub3RoaW5nIHRvIGxpc3QsIHBhZGRlZCBsaWtlXG4gKiB0aGUgcm93cyBpdCBzdGFuZHMgaW4gZm9yLlxuICovXG5leHBvcnQgY29uc3QgTm9JdGVtc0RldGFpbEl0ZW0gPSAoeyBjaGlsZHJlbiwgLi4ucmVzdCB9OiBOb0l0ZW1zRGV0YWlsSXRlbVByb3BzKSA9PiAoXG4gIDxEaXYgJHBhZGRpbmc9e3sgdmVydGljYWw6IFwieHNcIiwgcmlnaHQ6IFwieHNcIiwgbGVmdDogXCJzXCIgfX0gey4uLnJlc3R9PlxuICAgIHtjaGlsZHJlbn1cbiAgPC9EaXY+XG4pO1xuIiwgImltcG9ydCB7IEJhZGdlLCB0eXBlIEJhZGdlUHJvcHMgfSBmcm9tIFwiQGs4c2xlbnMvYmFkZ2VcIjtcbmltcG9ydCB7IHR5cGUgQmFja2dyb3VuZENvbG9yLCBnZXRUb29sdGlwUHJvcHMgfSBmcm9tIFwiQGs4c2xlbnMvZWxlbWVudC1jb21wb25lbnRzXCI7XG5pbXBvcnQgdHlwZSB7IENvbmRpdGlvbiB9IGZyb20gXCIuL2NvbmRpdGlvblwiO1xuaW1wb3J0IHsgQ29uZGl0aW9uVG9vbHRpcENvbnRlbnQgfSBmcm9tIFwiLi9jb25kaXRpb24tdG9vbHRpcC1jb250ZW50XCI7XG5cbmNvbnN0IGNvbmRpdGlvblR5cGVUb0NvbG9yOiBSZWNvcmQ8c3RyaW5nLCBCYWNrZ3JvdW5kQ29sb3I+ID0ge1xuICBBdmFpbGFibGU6IFwic3VjY2Vzc1wiLFxuICBBY2NlcHRlZDogXCJzdWNjZXNzXCIsXG4gIFJlYWR5OiBcInN1Y2Nlc3NcIixcbiAgUHJvZ3Jlc3Npbmc6IFwibm90aWNlXCIsXG4gIFByb2dyYW1tZWQ6IFwic3VjY2Vzc1wiLFxuICBSZXNvbHZlZFJlZnM6IFwic3VjY2Vzc1wiLFxuICBSZWNvbmNpbGVkOiBcInN1Y2Nlc3NcIixcbiAgUmVwbGljYUZhaWx1cmU6IFwiY3JpdGljYWxcIixcbn07XG5cbmV4cG9ydCBpbnRlcmZhY2UgQ29uZGl0aW9uQmFkZ2VQcm9wcyBleHRlbmRzIEJhZGdlUHJvcHMge1xuICAvKiogVGhlIGNvbmRpdGlvbiB0byBzaG93OyBpdHMgdHlwZSBpcyB0aGUgbGFiZWwgdW5sZXNzIG9uZSBpcyBnaXZlbi4gKi9cbiAgY29uZGl0aW9uOiBDb25kaXRpb247XG59XG5cbi8qKlxuICogQSBiYWRnZSBmb3Igb25lIEt1YmVybmV0ZXMgY29uZGl0aW9uOiBjb2xvdXJlZCBieSB3aGF0IGEgdHJ1ZSBjb25kaXRpb24gb2ZcbiAqIHRoYXQgdHlwZSBtZWFucywgZGltbWVkIHdoaWxlIHRoZSBjb25kaXRpb24gaXMgbm90IHRydWUsIHdpdGggdGhlXG4gKiBjb25kaXRpb24ncyBtZXNzYWdlIGFzIGl0cyB0b29sdGlwLlxuICovXG5leHBvcnQgY29uc3QgQ29uZGl0aW9uQmFkZ2UgPSAoeyBjb25kaXRpb24sIGxhYmVsLCAuLi5yZXN0IH06IENvbmRpdGlvbkJhZGdlUHJvcHMpID0+IHtcbiAgY29uc3QgeyB0eXBlLCBzdGF0dXMgfSA9IGNvbmRpdGlvbjtcbiAgY29uc3QgY29sb3IgPSBzdGF0dXMgPT09IFwiVHJ1ZVwiID8gY29uZGl0aW9uVHlwZVRvQ29sb3JbdHlwZV0gOiB1bmRlZmluZWQ7XG5cbiAgcmV0dXJuIChcbiAgICA8QmFkZ2VcbiAgICAgIGxhYmVsPXtsYWJlbCA/PyB0eXBlfVxuICAgICAgJGRpc2FibGVkPXtzdGF0dXMgIT09IFwiVHJ1ZVwifVxuICAgICAgJGJhY2tncm91bmRDb2xvcj17Y29sb3J9XG4gICAgICAkY29sb3I9e2NvbG9yID8gXCJ3aGl0ZVwiIDogdW5kZWZpbmVkfVxuICAgICAgJHRvb2x0aXA9e2dldFRvb2x0aXBQcm9wcyh7IENvbnRlbnQ6IENvbmRpdGlvblRvb2x0aXBDb250ZW50LCBjb250ZW50UHJvcHM6IHsgY29uZGl0aW9uIH0gfSl9XG4gICAgICB7Li4ucmVzdH1cbiAgICAvPlxuICApO1xufTtcbiIsICJpbXBvcnQgdHlwZSB7IENvbmRpdGlvbiB9IGZyb20gXCIuL2NvbmRpdGlvblwiO1xuXG5leHBvcnQgaW50ZXJmYWNlIENvbmRpdGlvblRvb2x0aXBDb250ZW50UHJvcHMge1xuICByZWFkb25seSBjb25kaXRpb246IENvbmRpdGlvbjtcbn1cblxuLyoqXG4gKiBXaGF0IHRoZSB0b29sdGlwIG9mIGEgY29uZGl0aW9uIGJhZGdlIHNheXM6IHRoZSBjb25kaXRpb24ncyBtZXNzYWdlIGFuZCxcbiAqIHdoZW4ga25vd24sIHdoZW4gaXQgbGFzdCBjaGFuZ2VkLlxuICovXG5leHBvcnQgY29uc3QgQ29uZGl0aW9uVG9vbHRpcENvbnRlbnQgPSAoeyBjb25kaXRpb24gfTogQ29uZGl0aW9uVG9vbHRpcENvbnRlbnRQcm9wcykgPT4gKFxuICA8PlxuICAgIDxwPntjb25kaXRpb24ubWVzc2FnZX08L3A+XG4gICAge2NvbmRpdGlvbi5sYXN0VHJhbnNpdGlvblRpbWUgPyA8cD57YExhc3QgdHJhbnNpdGlvbiB0aW1lOiAke2NvbmRpdGlvbi5sYXN0VHJhbnNpdGlvblRpbWV9YH08L3A+IDogbnVsbH1cbiAgPC8+XG4pO1xuIl0sCiAgIm1hcHBpbmdzIjogIjs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBOzs7QUNBQSxtQkFBeUI7QUFDekIsZ0NBQXlEO0FBSXZEO0FBREssSUFBTSxnQkFBZ0IsQ0FBQyxFQUFFLFVBQVUsR0FBRyxLQUFLLE1BQ2hEO0FBQUEsRUFBQztBQUFBO0FBQUEsSUFDQyxPQUFPLEVBQUUsV0FBVyxjQUFjLE1BQU0sS0FBSztBQUFBLElBQzdDLFVBQVUsRUFBRSxVQUFVLE1BQU0sT0FBTyxNQUFNLE1BQU0sSUFBSTtBQUFBLElBQ25ELGtCQUFpQjtBQUFBLElBQ2pCLFNBQVMsRUFBRSxRQUFRLEVBQUUsT0FBTyxPQUFPLE9BQU8s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QkFBMEIsQ0FBQyxFQUFFLFVBQVUsTUFDbEQsOEVBQ0U7QUFBQSwrQ0FBQyxPQUFHLG9CQUFVLFNBQVE7QUFBQSxFQUNyQixVQUFVLHFCQUFxQiw2Q0FBQyxPQUFHLG1DQUF5QixVQUFVLGtCQUFrQixJQUFHLElBQU87QUFBQSxHQUNyRzs7O0FEaUJFLElBQUFDLHNCQUFBO0FBMUJKLElBQU0sdUJBQXdEO0FBQUEsRUFDNUQsV0FBVztBQUFBLEVBQ1gsVUFBVTtBQUFBLEVBQ1YsT0FBTztBQUFBLEVBQ1AsYUFBYTtBQUFBLEVBQ2IsWUFBWTtBQUFBLEVBQ1osY0FBYztBQUFBLEVBQ2QsWUFBWTtBQUFBLEVBQ1osZ0JBQWdCO0FBQ2xCO0FBWU8sSUFBTSxpQkFBaUIsQ0FBQyxFQUFFLFdBQVcsT0FBTyxHQUFHLEtBQUssTUFBMkI7QUFDcEYsUUFBTSxFQUFFLE1BQU0sT0FBTyxJQUFJO0FBQ3pCLFFBQU0sUUFBUSxXQUFXLFNBQVMscUJBQXFCLElBQUksSUFBSTtBQUUvRCxTQUNFO0FBQUEsSUFBQztBQUFBO0FBQUEsTUFDQyxPQUFPLFNBQVM7QUFBQSxNQUNoQixXQUFXLFdBQVc7QUFBQSxNQUN0QixrQkFBa0I7QUFBQSxNQUNsQixRQUFRLFFBQVEsVUFBVTtBQUFBLE1BQzFCLGNBQVUsNENBQWdCLEVBQUUsU0FBUyx5QkFBeUIsY0FBYyxFQUFFLFVBQVUsRUFBRSxDQUFDO0FBQUEsTUFDMUYsR0FBRztBQUFBO0FBQUEsRUFDTjtBQUVKOyIsCiAgIm5hbWVzIjogWyJpbXBvcnRfanN4X3J1bnRpbWUiLCAiaW1wb3J0X2VsZW1lbnRfY29tcG9uZW50cyIsICJpbXBvcnRfanN4X3J1bnRpbWUiLCAiaW1wb3J0X3JlYWN0IiwgImltcG9ydF9lbGVtZW50X2NvbXBvbmVudHMiLCAiaW1wb3J0X2pzeF9ydW50aW1lIiwgImltcG9ydF9qc3hfcnVudGltZSIsICJpbXBvcnRfZWxlbWVudF9jb21wb25lbnRzIiwgImltcG9ydF9qc3hfcnVudGltZSIsICJpbXBvcnRfYmFkZ2UiLCAiaW1wb3J0X2VsZW1lbnRfY29tcG9uZW50cyIsICJpbXBvcnRfanN4X3J1bnRpbWUiLCAiaW1wb3J0X2pzeF9ydW50aW1lIl0KfQo=
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
import { type BadgeProps } from "@k8slens/badge";
|
|
2
|
+
import type { Condition } from "./condition";
|
|
3
|
+
export interface ConditionBadgeProps extends BadgeProps {
|
|
4
|
+
/** The condition to show; its type is the label unless one is given. */
|
|
5
|
+
condition: Condition;
|
|
6
|
+
}
|
|
7
|
+
/**
|
|
8
|
+
* A badge for one Kubernetes condition: coloured by what a true condition of
|
|
9
|
+
* that type means, dimmed while the condition is not true, with the
|
|
10
|
+
* condition's message as its tooltip.
|
|
11
|
+
*/
|
|
12
|
+
export declare const ConditionBadge: ({ condition, label, ...rest }: ConditionBadgeProps) => import("react/jsx-runtime").JSX.Element;
|
|
13
|
+
//# sourceMappingURL=condition-badge.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"condition-badge.d.ts","sourceRoot":"","sources":["../../src/condition-badge.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAS,KAAK,UAAU,EAAE,MAAM,gBAAgB,CAAC;AAExD,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,aAAa,CAAC;AAc7C,MAAM,WAAW,mBAAoB,SAAQ,UAAU;IACrD,wEAAwE;IACxE,SAAS,EAAE,SAAS,CAAC;CACtB;AAED;;;;GAIG;AACH,eAAO,MAAM,cAAc,kCAAmC,mBAAmB,4CAchF,CAAC"}
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
import type { Condition } from "./condition";
|
|
2
|
+
export interface ConditionTooltipContentProps {
|
|
3
|
+
readonly condition: Condition;
|
|
4
|
+
}
|
|
5
|
+
/**
|
|
6
|
+
* What the tooltip of a condition badge says: the condition's message and,
|
|
7
|
+
* when known, when it last changed.
|
|
8
|
+
*/
|
|
9
|
+
export declare const ConditionTooltipContent: ({ condition }: ConditionTooltipContentProps) => import("react/jsx-runtime").JSX.Element;
|
|
10
|
+
//# sourceMappingURL=condition-tooltip-content.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"condition-tooltip-content.d.ts","sourceRoot":"","sources":["../../src/condition-tooltip-content.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,aAAa,CAAC;AAE7C,MAAM,WAAW,4BAA4B;IAC3C,QAAQ,CAAC,SAAS,EAAE,SAAS,CAAC;CAC/B;AAED;;;GAGG;AACH,eAAO,MAAM,uBAAuB,kBAAmB,4BAA4B,4CAKlF,CAAC"}
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* What the condition badge reads of a Kubernetes condition. Any entry of a
|
|
3
|
+
* resource's `status.conditions` qualifies, whichever API version typed it.
|
|
4
|
+
*/
|
|
5
|
+
export interface Condition {
|
|
6
|
+
readonly type: string;
|
|
7
|
+
readonly status: string;
|
|
8
|
+
readonly message?: string;
|
|
9
|
+
readonly reason?: string;
|
|
10
|
+
readonly lastTransitionTime?: string;
|
|
11
|
+
}
|
|
12
|
+
//# sourceMappingURL=condition.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"condition.d.ts","sourceRoot":"","sources":["../../src/condition.ts"],"names":[],"mappings":"AAAA;;;GAGG;AACH,MAAM,WAAW,SAAS;IACxB,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;IACxB,QAAQ,CAAC,OAAO,CAAC,EAAE,MAAM,CAAC;IAC1B,QAAQ,CAAC,MAAM,CAAC,EAAE,MAAM,CAAC;IACzB,QAAQ,CAAC,kBAAkB,CAAC,EAAE,MAAM,CAAC;CACtC"}
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
import { type ExpandableDrawerItemProps } from "./expandable-drawer-item";
|
|
2
|
+
export interface DrawerItemLabelsProps extends Omit<ExpandableDrawerItemProps, "children" | "collapsedContent" | "isExpandable" | "labelsOnly"> {
|
|
3
|
+
/** The labels, either as `name=value` strings or as the map a resource carries. */
|
|
4
|
+
labels: string[] | Partial<Record<string, string>>;
|
|
5
|
+
}
|
|
6
|
+
/**
|
|
7
|
+
* A row of a details panel section showing labels as badges. Many long labels
|
|
8
|
+
* collapse to their count until expanded; the row remembers the expansion
|
|
9
|
+
* itself unless `expanded` and `onToggle` are given. Renders nothing without
|
|
10
|
+
* labels.
|
|
11
|
+
*/
|
|
12
|
+
export declare const DrawerItemLabels: ({ labels, name, ...rest }: DrawerItemLabelsProps) => import("react/jsx-runtime").JSX.Element | null;
|
|
13
|
+
//# sourceMappingURL=drawer-item-labels.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"drawer-item-labels.d.ts","sourceRoot":"","sources":["../../src/drawer-item-labels.tsx"],"names":[],"mappings":"AACA,OAAO,EAAwB,KAAK,yBAAyB,EAAE,MAAM,0BAA0B,CAAC;AAIhG,MAAM,WAAW,qBACf,SAAQ,IAAI,CAAC,yBAAyB,EAAE,UAAU,GAAG,kBAAkB,GAAG,cAAc,GAAG,YAAY,CAAC;IACxG,mFAAmF;IACnF,MAAM,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC,CAAC;CACpD;AAKD;;;;;GAKG;AACH,eAAO,MAAM,gBAAgB,8BAA+B,qBAAqB,mDA0BhF,CAAC"}
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
import { type DivProps, type SpanProps } from "@k8slens/element-components";
|
|
2
|
+
/** The look every row of a section shares: its padding, background and the line under it. */
|
|
3
|
+
export declare const DrawerItemRow: ({ children, ...rest }: DivProps) => import("react/jsx-runtime").JSX.Element;
|
|
4
|
+
/** The name column of a row: at least a share of the row, wider if the name needs it. */
|
|
5
|
+
export declare const DrawerItemName: ({ children, ...rest }: SpanProps) => import("react/jsx-runtime").JSX.Element;
|
|
6
|
+
export interface DrawerItemValueProps extends SpanProps {
|
|
7
|
+
/** Lays the value out as a wrapping row of labels. */
|
|
8
|
+
labelsOnly?: boolean;
|
|
9
|
+
}
|
|
10
|
+
/** The value column of a row, taking the rest of it; a dash when there is nothing to show. */
|
|
11
|
+
export declare const DrawerItemValue: ({ labelsOnly, children, ...rest }: DrawerItemValueProps) => import("react/jsx-runtime").JSX.Element;
|
|
12
|
+
//# sourceMappingURL=drawer-item-parts.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"drawer-item-parts.d.ts","sourceRoot":"","sources":["../../src/drawer-item-parts.tsx"],"names":[],"mappings":"AACA,OAAO,EAAO,KAAK,QAAQ,EAAQ,KAAK,SAAS,EAAE,MAAM,6BAA6B,CAAC;AAEvF,6FAA6F;AAC7F,eAAO,MAAM,aAAa,0BAA2B,QAAQ,4CAU5D,CAAC;AAEF,yFAAyF;AACzF,eAAO,MAAM,cAAc,0BAA2B,SAAS,4CAY9D,CAAC;AAEF,MAAM,WAAW,oBAAqB,SAAQ,SAAS;IACrD,sDAAsD;IACtD,UAAU,CAAC,EAAE,OAAO,CAAC;CACtB;AAED,8FAA8F;AAC9F,eAAO,MAAM,eAAe,sCAAuC,oBAAoB,4CAUtF,CAAC"}
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
import type { DivProps } from "@k8slens/element-components";
|
|
2
|
+
export interface DrawerItemProps extends DivProps {
|
|
3
|
+
/** What the row is about, shown in the name column. */
|
|
4
|
+
name: React.ReactNode;
|
|
5
|
+
/** Lays the value out as a row of labels. */
|
|
6
|
+
labelsOnly?: boolean;
|
|
7
|
+
}
|
|
8
|
+
/**
|
|
9
|
+
* A row of a details panel section: a name and, next to it, a value. The row
|
|
10
|
+
* is a `Div`, so it takes the `$props` of one and passes everything else to
|
|
11
|
+
* the element it renders.
|
|
12
|
+
*/
|
|
13
|
+
export declare const DrawerItem: ({ name, labelsOnly, children, ...rest }: DrawerItemProps) => import("react/jsx-runtime").JSX.Element;
|
|
14
|
+
//# sourceMappingURL=drawer-item.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"drawer-item.d.ts","sourceRoot":"","sources":["../../src/drawer-item.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,6BAA6B,CAAC;AAG5D,MAAM,WAAW,eAAgB,SAAQ,QAAQ;IAC/C,uDAAuD;IACvD,IAAI,EAAE,KAAK,CAAC,SAAS,CAAC;IACtB,6CAA6C;IAC7C,UAAU,CAAC,EAAE,OAAO,CAAC;CACtB;AAED;;;;GAIG;AACH,eAAO,MAAM,UAAU,4CAA6C,eAAe,4CAKlF,CAAC"}
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
import { type DivProps } from "@k8slens/element-components";
|
|
2
|
+
export interface DrawerSubTitleProps extends DivProps {
|
|
3
|
+
}
|
|
4
|
+
/**
|
|
5
|
+
* A heading inside a details panel section, for grouping its rows.
|
|
6
|
+
*/
|
|
7
|
+
export declare const DrawerSubTitle: ({ children, ...rest }: DrawerSubTitleProps) => import("react/jsx-runtime").JSX.Element;
|
|
8
|
+
//# sourceMappingURL=drawer-sub-title.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"drawer-sub-title.d.ts","sourceRoot":"","sources":["../../src/drawer-sub-title.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAO,KAAK,QAAQ,EAAE,MAAM,6BAA6B,CAAC;AAEjE,MAAM,WAAW,mBAAoB,SAAQ,QAAQ;CAAG;AAExD;;GAEG;AACH,eAAO,MAAM,cAAc,0BAA2B,mBAAmB,4CAIxE,CAAC"}
|
|
@@ -0,0 +1,34 @@
|
|
|
1
|
+
import { type DivProps } from "@k8slens/element-components";
|
|
2
|
+
type TestAttributeValue = string | number | boolean | null | undefined;
|
|
3
|
+
export interface ExpandableDrawerItemProps extends DivProps {
|
|
4
|
+
/** What the row is about, shown in the name column and on the toggle. */
|
|
5
|
+
name: React.ReactNode;
|
|
6
|
+
/** The value, shown when the row is expanded or cannot collapse. */
|
|
7
|
+
children: React.ReactNode;
|
|
8
|
+
/** What stands in for the value while the row is collapsed. */
|
|
9
|
+
collapsedContent: React.ReactNode;
|
|
10
|
+
/** Whether the row collapses at all. A row that does not shows its children. */
|
|
11
|
+
isExpandable?: boolean;
|
|
12
|
+
/** Give the expanded value the whole width of the row, below the name. */
|
|
13
|
+
fullWidthContent?: boolean;
|
|
14
|
+
/** Lays the value out as a row of labels. */
|
|
15
|
+
labelsOnly?: boolean;
|
|
16
|
+
/**
|
|
17
|
+
* Whether the row is expanded. Leave it out and the row remembers its own
|
|
18
|
+
* state; pass it, together with `onToggle`, and whoever renders the row
|
|
19
|
+
* decides. Switching between the two while the row is mounted is not
|
|
20
|
+
* supported.
|
|
21
|
+
*/
|
|
22
|
+
expanded?: boolean;
|
|
23
|
+
/** Called when the toggle is clicked, in both modes. */
|
|
24
|
+
onToggle?: () => void;
|
|
25
|
+
/** Attributes for the toggle; it is a `Button` of `@k8slens/element-components`, so disable it with `$enabled`. */
|
|
26
|
+
buttonProps?: Omit<React.ButtonHTMLAttributes<HTMLButtonElement>, "disabled"> & Partial<Record<`data-${string}-test`, TestAttributeValue>>;
|
|
27
|
+
}
|
|
28
|
+
/**
|
|
29
|
+
* A row of a details panel section whose value collapses to a summary until
|
|
30
|
+
* the user expands it. Uncontrolled by default: the row keeps its own state.
|
|
31
|
+
*/
|
|
32
|
+
export declare const ExpandableDrawerItem: ({ name, children, collapsedContent, isExpandable, fullWidthContent, labelsOnly, buttonProps, expanded: controlledExpanded, onToggle, ...rest }: ExpandableDrawerItemProps) => import("react/jsx-runtime").JSX.Element;
|
|
33
|
+
export {};
|
|
34
|
+
//# sourceMappingURL=expandable-drawer-item.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"expandable-drawer-item.d.ts","sourceRoot":"","sources":["../../src/expandable-drawer-item.tsx"],"names":[],"mappings":"AACA,OAAO,EAAU,KAAK,QAAQ,EAAE,MAAM,6BAA6B,CAAC;AAIpE,KAAK,kBAAkB,GAAG,MAAM,GAAG,MAAM,GAAG,OAAO,GAAG,IAAI,GAAG,SAAS,CAAC;AAEvE,MAAM,WAAW,yBAA0B,SAAQ,QAAQ;IACzD,yEAAyE;IACzE,IAAI,EAAE,KAAK,CAAC,SAAS,CAAC;IACtB,oEAAoE;IACpE,QAAQ,EAAE,KAAK,CAAC,SAAS,CAAC;IAC1B,+DAA+D;IAC/D,gBAAgB,EAAE,KAAK,CAAC,SAAS,CAAC;IAClC,gFAAgF;IAChF,YAAY,CAAC,EAAE,OAAO,CAAC;IACvB,0EAA0E;IAC1E,gBAAgB,CAAC,EAAE,OAAO,CAAC;IAC3B,6CAA6C;IAC7C,UAAU,CAAC,EAAE,OAAO,CAAC;IACrB;;;;;OAKG;IACH,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,wDAAwD;IACxD,QAAQ,CAAC,EAAE,MAAM,IAAI,CAAC;IACtB,mHAAmH;IACnH,WAAW,CAAC,EAAE,IAAI,CAAC,KAAK,CAAC,oBAAoB,CAAC,iBAAiB,CAAC,EAAE,UAAU,CAAC,GAC3E,OAAO,CAAC,MAAM,CAAC,QAAQ,MAAM,OAAO,EAAE,kBAAkB,CAAC,CAAC,CAAC;CAC9D;AAED;;;GAGG;AACH,eAAO,MAAM,oBAAoB,mJAW9B,yBAAyB,4CAsC3B,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"get-di-for-testing.d.ts","sourceRoot":"","sources":["../../src/get-di-for-testing.ts"],"names":[],"mappings":"AAKA,eAAO,MAAM,eAAe,iDAO3B,CAAC"}
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
import { type DivProps } from "@k8slens/element-components";
|
|
2
|
+
export interface NoItemsDetailItemProps extends DivProps {
|
|
3
|
+
}
|
|
4
|
+
/**
|
|
5
|
+
* What a details panel section shows when it has nothing to list, padded like
|
|
6
|
+
* the rows it stands in for.
|
|
7
|
+
*/
|
|
8
|
+
export declare const NoItemsDetailItem: ({ children, ...rest }: NoItemsDetailItemProps) => import("react/jsx-runtime").JSX.Element;
|
|
9
|
+
//# sourceMappingURL=no-items-detail-item.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"no-items-detail-item.d.ts","sourceRoot":"","sources":["../../src/no-items-detail-item.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAO,KAAK,QAAQ,EAAE,MAAM,6BAA6B,CAAC;AAEjE,MAAM,WAAW,sBAAuB,SAAQ,QAAQ;CAAG;AAE3D;;;GAGG;AACH,eAAO,MAAM,iBAAiB,0BAA2B,sBAAsB,4CAI9E,CAAC"}
|