@k8slens/details-panel-contracts 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/dist/index.d.ts +3 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +73 -0
- package/dist/src/build-details-panel-section-bunch.d.ts +64 -0
- package/dist/src/build-details-panel-section-bunch.d.ts.map +1 -0
- package/dist/src/details-panel-section-injection-token.d.ts +71 -0
- package/dist/src/details-panel-section-injection-token.d.ts.map +1 -0
- package/dist/tsconfig.tsbuildinfo +1 -0
- package/package.json +60 -0
package/dist/index.d.ts
ADDED
|
@@ -0,0 +1,3 @@
|
|
|
1
|
+
export { buildDetailsPanelSectionBunch, type DetailsPanelSectionBunchParams, } from "./src/build-details-panel-section-bunch";
|
|
2
|
+
export { detailsPanelSectionInjectionToken, type DetailsPanelSection, type DetailsPanelSectionProps, } from "./src/details-panel-section-injection-token";
|
|
3
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../index.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,6BAA6B,EAC7B,KAAK,8BAA8B,GACpC,MAAM,yCAAyC,CAAC;AACjD,OAAO,EACL,iCAAiC,EACjC,KAAK,mBAAmB,EACxB,KAAK,wBAAwB,GAC9B,MAAM,6CAA6C,CAAC"}
|
package/dist/index.js
ADDED
|
@@ -0,0 +1,73 @@
|
|
|
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
|
+
buildDetailsPanelSectionBunch: () => buildDetailsPanelSectionBunch,
|
|
24
|
+
detailsPanelSectionInjectionToken: () => detailsPanelSectionInjectionToken
|
|
25
|
+
});
|
|
26
|
+
module.exports = __toCommonJS(index_exports);
|
|
27
|
+
|
|
28
|
+
// src/build-details-panel-section-bunch.ts
|
|
29
|
+
var import_injectable2 = require("@k8slens/injectable");
|
|
30
|
+
|
|
31
|
+
// src/details-panel-section-injection-token.ts
|
|
32
|
+
var import_injectable = require("@k8slens/injectable");
|
|
33
|
+
var detailsPanelSectionInjectionToken = (0, import_injectable.getInjectionToken2)({
|
|
34
|
+
id: "details-panel-section",
|
|
35
|
+
cardinality: "zero-or-many"
|
|
36
|
+
})(
|
|
37
|
+
(kind) => (0, import_injectable.getInjectionToken2)({
|
|
38
|
+
id: `details-panel-section-${kind}`,
|
|
39
|
+
speciality: kind,
|
|
40
|
+
cardinality: "zero-or-many"
|
|
41
|
+
})(
|
|
42
|
+
(apiVersion) => (0, import_injectable.getInjectionToken2)({
|
|
43
|
+
id: `details-panel-section-${kind}-${apiVersion}`,
|
|
44
|
+
speciality: apiVersion,
|
|
45
|
+
cardinality: "zero-or-many"
|
|
46
|
+
})()
|
|
47
|
+
)
|
|
48
|
+
);
|
|
49
|
+
|
|
50
|
+
// src/build-details-panel-section-bunch.ts
|
|
51
|
+
var buildDetailsPanelSectionBunch = ({
|
|
52
|
+
id,
|
|
53
|
+
kind,
|
|
54
|
+
apiVersion,
|
|
55
|
+
title,
|
|
56
|
+
orderNumber,
|
|
57
|
+
Component
|
|
58
|
+
}) => (0, import_injectable2.getInjectableBunch)({
|
|
59
|
+
section: (0, import_injectable2.getInjectable2)({
|
|
60
|
+
id: `details-panel-section-${id}-${kind}-${apiVersion}`,
|
|
61
|
+
instantiate: () => {
|
|
62
|
+
const section = { id, title, orderNumber, Component };
|
|
63
|
+
return () => section;
|
|
64
|
+
},
|
|
65
|
+
injectionToken: detailsPanelSectionInjectionToken.for(kind).for(apiVersion)
|
|
66
|
+
})
|
|
67
|
+
});
|
|
68
|
+
// Annotate the CommonJS export names for ESM import in node:
|
|
69
|
+
0 && (module.exports = {
|
|
70
|
+
buildDetailsPanelSectionBunch,
|
|
71
|
+
detailsPanelSectionInjectionToken
|
|
72
|
+
});
|
|
73
|
+
//# sourceMappingURL=data:application/json;base64,ewogICJ2ZXJzaW9uIjogMywKICAic291cmNlcyI6IFsiLi4vaW5kZXgudHMiLCAiLi4vc3JjL2J1aWxkLWRldGFpbHMtcGFuZWwtc2VjdGlvbi1idW5jaC50cyIsICIuLi9zcmMvZGV0YWlscy1wYW5lbC1zZWN0aW9uLWluamVjdGlvbi10b2tlbi50cyJdLAogICJzb3VyY2VzQ29udGVudCI6IFsiZXhwb3J0IHtcbiAgYnVpbGREZXRhaWxzUGFuZWxTZWN0aW9uQnVuY2gsXG4gIHR5cGUgRGV0YWlsc1BhbmVsU2VjdGlvbkJ1bmNoUGFyYW1zLFxufSBmcm9tIFwiLi9zcmMvYnVpbGQtZGV0YWlscy1wYW5lbC1zZWN0aW9uLWJ1bmNoXCI7XG5leHBvcnQge1xuICBkZXRhaWxzUGFuZWxTZWN0aW9uSW5qZWN0aW9uVG9rZW4sXG4gIHR5cGUgRGV0YWlsc1BhbmVsU2VjdGlvbixcbiAgdHlwZSBEZXRhaWxzUGFuZWxTZWN0aW9uUHJvcHMsXG59IGZyb20gXCIuL3NyYy9kZXRhaWxzLXBhbmVsLXNlY3Rpb24taW5qZWN0aW9uLXRva2VuXCI7XG4iLCAiaW1wb3J0IHsgZ2V0SW5qZWN0YWJsZTIsIGdldEluamVjdGFibGVCdW5jaCB9IGZyb20gXCJAazhzbGVucy9pbmplY3RhYmxlXCI7XG5pbXBvcnQgdHlwZSB7IEt1YmVSZXNvdXJjZUFwaVZlcnNpb24sIEt1YmVSZXNvdXJjZUtpbmQgfSBmcm9tIFwiQGs4c2xlbnMva3ViZXJuZXRlcy1jb250cmFjdHNcIjtcbmltcG9ydCB0eXBlIFJlYWN0IGZyb20gXCJyZWFjdFwiO1xuaW1wb3J0IHtcbiAgdHlwZSBEZXRhaWxzUGFuZWxTZWN0aW9uLFxuICB0eXBlIERldGFpbHNQYW5lbFNlY3Rpb25Qcm9wcyxcbiAgZGV0YWlsc1BhbmVsU2VjdGlvbkluamVjdGlvblRva2VuLFxufSBmcm9tIFwiLi9kZXRhaWxzLXBhbmVsLXNlY3Rpb24taW5qZWN0aW9uLXRva2VuXCI7XG5cbmV4cG9ydCBpbnRlcmZhY2UgRGV0YWlsc1BhbmVsU2VjdGlvbkJ1bmNoUGFyYW1zPFxuICBUS2luZCBleHRlbmRzIEt1YmVSZXNvdXJjZUtpbmQsXG4gIFRBcGlWZXJzaW9uIGV4dGVuZHMgS3ViZVJlc291cmNlQXBpVmVyc2lvbjxUS2luZD4sXG4+IHtcbiAgLyoqIFN0YWJsZSBpZGVudGl0eSBvZiB0aGUgc2VjdGlvbi4gV2l0aCB0aGUga2luZCBhbmQgQVBJIHZlcnNpb24sIGl0IGRlcml2ZXMgdGhlIGlkIG9mIHRoZSByZWdpc3RlcmVkIGluamVjdGFibGUuICovXG4gIHJlYWRvbmx5IGlkOiBzdHJpbmc7XG4gIC8qKiBUaGUga2luZCB0aGUgc2VjdGlvbiBpcyBmb3I7IHdpdGggdGhlIEFQSSB2ZXJzaW9uLCBpdCB0eXBlcyB0aGUgY29tcG9uZW50J3MgYHJlc291cmNlYC4gKi9cbiAgcmVhZG9ubHkga2luZDogVEtpbmQ7XG4gIC8qKiBUaGUgQVBJIHZlcnNpb24gb2YgdGhlIGtpbmQgdGhlIHNlY3Rpb24gaXMgZm9yLCBvbmUgdGhlIGtpbmQgaXMgZGVjbGFyZWQgZm9yLiBBIHNlY3Rpb24gZm9yIHNldmVyYWwgQVBJIHZlcnNpb25zIGlzIHNldmVyYWwgcmVxdWVzdHMuICovXG4gIHJlYWRvbmx5IGFwaVZlcnNpb246IFRBcGlWZXJzaW9uO1xuICAvKiogVGhlIHRpdGxlIG9mIHRoZSBzZWN0aW9uLiAqL1xuICByZWFkb25seSB0aXRsZTogc3RyaW5nO1xuICAvKiogUG9zaXRpb24gYW1vbmcgYWxsIHNlY3Rpb25zIG9mIHRoZSBwYW5lbCwgYnVpbHQtaW4gb25lcyBpbmNsdWRlZC4gTG93ZXIgY29tZXMgZmlyc3QsIGFic2VudCBjb21lcyBsYXN0LiAqL1xuICByZWFkb25seSBvcmRlck51bWJlcj86IG51bWJlcjtcbiAgLyoqIFJlbmRlcnMgdGhlIGNvbnRlbnQuIE11c3QgYmUgZGVmaW5lZCBhdCBtb2R1bGUgc2NvcGUgc28gaXRzIHJlZmVyZW5jZSBzdGF5cyBzdGFibGUuICovXG4gIHJlYWRvbmx5IENvbXBvbmVudDogUmVhY3QuQ29tcG9uZW50VHlwZTxEZXRhaWxzUGFuZWxTZWN0aW9uUHJvcHM8VEtpbmQsIFRBcGlWZXJzaW9uPj47XG59XG5cbi8qKlxuICogQ29udHJpYnV0ZSBvbmUgdGl0bGVkIHNlY3Rpb24gdG8gdGhlIGRldGFpbHMgcGFuZWwgb2YgZXZlcnkgcmVzb3VyY2Ugb2YgdGhlXG4gKiBnaXZlbiBraW5kIGFuZCBBUEkgdmVyc2lvbi4gRXhwb3J0IHRoZSByZXN1bHQgZnJvbSBhIGAqLmluamVjdGFibGUudHNgIGZpbGU7XG4gKiBgcmVnaXN0ZXJJbmplY3RhYmxlc0Zyb21Nb2R1bGVzYCByZWdpc3RlcnMgdGhlIGNvbnRhaW5lZCBpbmplY3RhYmxlcy5cbiAqXG4gKiBPbmUgcmVxdWVzdCBjb3ZlcnMgb25lIEFQSSB2ZXJzaW9uLiBBIHNlY3Rpb24gdGhhdCBhcHBsaWVzIHRvIHNldmVyYWwgQVBJXG4gKiB2ZXJzaW9ucyBvZiBpdHMga2luZCBpcyByZXF1ZXN0ZWQgb25jZSBwZXIgQVBJIHZlcnNpb24sIHdpdGggdGhlIHNhbWUgYGlkYC5cbiAqXG4gKiBAZXhhbXBsZVxuICogYGBgdHN4XG4gKiBpbXBvcnQgeyBnZXRLdWJlcm5ldGVzQXBpVmVyc2lvbiB9IGZyb20gXCJAazhzbGVucy9rdWJlcm5ldGVzLWNvbnRyYWN0c1wiO1xuICogaW1wb3J0IHsgZ2V0S3ViZVJlc291cmNlS2luZCB9IGZyb20gXCJAazhzbGVucy9rdWJlcm5ldGVzLWNvbnRyYWN0c1wiO1xuICogaW1wb3J0IHsgYnVpbGREZXRhaWxzUGFuZWxTZWN0aW9uQnVuY2gsIHR5cGUgRGV0YWlsc1BhbmVsU2VjdGlvblByb3BzIH0gZnJvbSBcIkBrOHNsZW5zL2RldGFpbHMtcGFuZWwtY29udHJhY3RzXCI7XG4gKlxuICogY29uc3QgYmFja3Vwc1YxID0gZ2V0S3ViZXJuZXRlc0FwaVZlcnNpb24oXCJiYWNrdXBzLmV4YW1wbGUuY29tL3YxXCIpO1xuICpcbiAqIGNvbnN0IGJhY2t1cEtpbmQgPSBnZXRLdWJlUmVzb3VyY2VLaW5kPHtcbiAqICAgXCJiYWNrdXBzLmV4YW1wbGUuY29tL3YxXCI6IHtcbiAqICAgICBraW5kOiBcIkJhY2t1cFwiO1xuICogICAgIG1ldGFkYXRhOiB7IG5hbWU6IHN0cmluZzsgbmFtZXNwYWNlOiBzdHJpbmcgfTtcbiAqICAgICBzcGVjOiB7IHNjaGVkdWxlOiBzdHJpbmcgfTtcbiAqICAgfTtcbiAqIH0+KFwiQmFja3VwXCIpO1xuICpcbiAqIGNvbnN0IEJhY2t1cFNjaGVkdWxlID0gKHsgcmVzb3VyY2UsIGNsdXN0ZXJJZCB9OiBEZXRhaWxzUGFuZWxTZWN0aW9uUHJvcHM8dHlwZW9mIGJhY2t1cEtpbmQsIHR5cGVvZiBiYWNrdXBzVjE+KSA9PiAoXG4gKiAgIDxkbD5cbiAqICAgICA8ZHQ+U2NoZWR1bGU8L2R0PlxuICogICAgIDxkZD57cmVzb3VyY2Uuc3BlYy5zY2hlZHVsZX08L2RkPlxuICogICAgIDxkdD5DbHVzdGVyPC9kdD5cbiAqICAgICA8ZGQ+e2NsdXN0ZXJJZH08L2RkPlxuICogICA8L2RsPlxuICogKTtcbiAqXG4gKiBleHBvcnQgY29uc3QgYmFja3VwU2NoZWR1bGVTZWN0aW9uQnVuY2ggPSBidWlsZERldGFpbHNQYW5lbFNlY3Rpb25CdW5jaCh7XG4gKiAgIGlkOiBcImJhY2t1cC1zY2hlZHVsZVwiLFxuICogICBraW5kOiBiYWNrdXBLaW5kLFxuICogICBhcGlWZXJzaW9uOiBiYWNrdXBzVjEsXG4gKiAgIHRpdGxlOiBcIlNjaGVkdWxlXCIsXG4gKiAgIG9yZGVyTnVtYmVyOiA1MCxcbiAqICAgQ29tcG9uZW50OiBCYWNrdXBTY2hlZHVsZSxcbiAqIH0pO1xuICogYGBgXG4gKi9cbmV4cG9ydCBjb25zdCBidWlsZERldGFpbHNQYW5lbFNlY3Rpb25CdW5jaCA9IDxcbiAgVEtpbmQgZXh0ZW5kcyBLdWJlUmVzb3VyY2VLaW5kLFxuICBUQXBpVmVyc2lvbiBleHRlbmRzIEt1YmVSZXNvdXJjZUFwaVZlcnNpb248VEtpbmQ+LFxuPih7XG4gIGlkLFxuICBraW5kLFxuICBhcGlWZXJzaW9uLFxuICB0aXRsZSxcbiAgb3JkZXJOdW1iZXIsXG4gIENvbXBvbmVudCxcbn06IERldGFpbHNQYW5lbFNlY3Rpb25CdW5jaFBhcmFtczxUS2luZCwgVEFwaVZlcnNpb24+KSA9PlxuICBnZXRJbmplY3RhYmxlQnVuY2goe1xuICAgIHNlY3Rpb246IGdldEluamVjdGFibGUyKHtcbiAgICAgIGlkOiBgZGV0YWlscy1wYW5lbC1zZWN0aW9uLSR7aWR9LSR7a2luZH0tJHthcGlWZXJzaW9ufWAsXG5cbiAgICAgIGluc3RhbnRpYXRlOiAoKSA9PiB7XG4gICAgICAgIGNvbnN0IHNlY3Rpb246IERldGFpbHNQYW5lbFNlY3Rpb248VEtpbmQsIFRBcGlWZXJzaW9uPiA9IHsgaWQsIHRpdGxlLCBvcmRlck51bWJlciwgQ29tcG9uZW50IH07XG5cbiAgICAgICAgcmV0dXJuICgpID0+IHNlY3Rpb247XG4gICAgICB9LFxuXG4gICAgICBpbmplY3Rpb25Ub2tlbjogZGV0YWlsc1BhbmVsU2VjdGlvbkluamVjdGlvblRva2VuLmZvcihraW5kKS5mb3IoYXBpVmVyc2lvbiksXG4gICAgfSksXG4gIH0pO1xuIiwgImltcG9ydCB7IGdldEluamVjdGlvblRva2VuMiwgdHlwZSBNYW55RmFjdG9yeSwgdHlwZSBTcGVjaWZpY0luamVjdGlvblRva2VuMiB9IGZyb20gXCJAazhzbGVucy9pbmplY3RhYmxlXCI7XG5pbXBvcnQgdHlwZSB7IElkZW50aWZpYWJsZSwgTWF5YmVPcmRlcmFibGUgfSBmcm9tIFwiQGs4c2xlbnMvY29tcG9zYWJsZS1yZXNwb25zaWJpbGl0aWVzXCI7XG5pbXBvcnQgdHlwZSB7XG4gIEt1YmVSZXNvdXJjZSxcbiAgS3ViZVJlc291cmNlQXBpVmVyc2lvbixcbiAgS3ViZVJlc291cmNlS2luZCxcbiAgS3ViZVJlc291cmNlU2hhcGVzT2YsXG59IGZyb20gXCJAazhzbGVucy9rdWJlcm5ldGVzLWNvbnRyYWN0c1wiO1xuaW1wb3J0IHR5cGUgUmVhY3QgZnJvbSBcInJlYWN0XCI7XG5cbi8qKlxuICogV2hhdCBhIHNlY3Rpb24ncyBjb21wb25lbnQgaXMgZ2l2ZW46IHRoZSByZXNvdXJjZSB3aG9zZSBkZXRhaWxzIGFyZSBzaG93bixcbiAqIHR5cGVkIGJ5IHRoZSBraW5kIGFuZCBBUEkgdmVyc2lvbiB0aGUgc2VjdGlvbiB3YXMgY29udHJpYnV0ZWQgZm9yLCBhbmQgdGhlXG4gKiBjbHVzdGVyIGl0IGxpdmVzIGluLlxuICovXG5leHBvcnQgaW50ZXJmYWNlIERldGFpbHNQYW5lbFNlY3Rpb25Qcm9wczxcbiAgVEtpbmQgZXh0ZW5kcyBLdWJlUmVzb3VyY2VLaW5kID0gS3ViZVJlc291cmNlS2luZCxcbiAgVEFwaVZlcnNpb24gZXh0ZW5kcyBrZXlvZiBLdWJlUmVzb3VyY2VTaGFwZXNPZjxUS2luZD4gPSBrZXlvZiBLdWJlUmVzb3VyY2VTaGFwZXNPZjxUS2luZD4sXG4+IHtcbiAgcmVhZG9ubHkgcmVzb3VyY2U6IEt1YmVSZXNvdXJjZTxUS2luZCwgVEFwaVZlcnNpb24+O1xuICByZWFkb25seSBjbHVzdGVySWQ6IHN0cmluZztcbn1cblxuLyoqXG4gKiBPbmUgc2VjdGlvbiBvZiB0aGUgZGV0YWlscyBwYW5lbDogYSB0aXRsZWQgYmxvY2sgb2YgY29udGVudCBzaG93biBmb3IgZXZlcnlcbiAqIHJlc291cmNlIG9mIHRoZSBraW5kIGFuZCBBUEkgdmVyc2lvbiBpdCB3YXMgY29udHJpYnV0ZWQgZm9yLlxuICpcbiAqIC0gYGlkYDogc3RhYmxlIGlkZW50aXR5IG9mIHRoZSBzZWN0aW9uLlxuICogLSBgdGl0bGVgOiB0aGUgdGl0bGUgb2YgdGhlIHNlY3Rpb24sIHNob3duIHRvIHRoZSB1c2VyLlxuICogLSBgb3JkZXJOdW1iZXJgICh2aWEgYE1heWJlT3JkZXJhYmxlYCk6IHBvc2l0aW9uIGFtb25nIGFsbCBzZWN0aW9ucyBvZiB0aGVcbiAqICAgcGFuZWwsIGJ1aWx0LWluIG9uZXMgaW5jbHVkZWQ7IGxvd2VyIGNvbWVzIGZpcnN0LCBhYnNlbnQgY29tZXMgbGFzdC5cbiAqIC0gYENvbXBvbmVudGA6IHJlbmRlcnMgdGhlIGNvbnRlbnQsIGdpdmVuIHRoZSByZXNvdXJjZSBhbmQgaXRzIGNsdXN0ZXIuXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgRGV0YWlsc1BhbmVsU2VjdGlvbjxcbiAgVEtpbmQgZXh0ZW5kcyBLdWJlUmVzb3VyY2VLaW5kID0gS3ViZVJlc291cmNlS2luZCxcbiAgVEFwaVZlcnNpb24gZXh0ZW5kcyBrZXlvZiBLdWJlUmVzb3VyY2VTaGFwZXNPZjxUS2luZD4gPSBrZXlvZiBLdWJlUmVzb3VyY2VTaGFwZXNPZjxUS2luZD4sXG4+IGV4dGVuZHMgSWRlbnRpZmlhYmxlLFxuICAgIE1heWJlT3JkZXJhYmxlIHtcbiAgcmVhZG9ubHkgdGl0bGU6IHN0cmluZztcbiAgcmVhZG9ubHkgQ29tcG9uZW50OiBSZWFjdC5Db21wb25lbnRUeXBlPERldGFpbHNQYW5lbFNlY3Rpb25Qcm9wczxUS2luZCwgVEFwaVZlcnNpb24+Pjtcbn1cblxuLyoqIFByb2R1Y2VzIG9uZSBzZWN0aW9uLiAqL1xuZXhwb3J0IHR5cGUgRGV0YWlsc1BhbmVsU2VjdGlvbkZhY3Rvcnk8XG4gIFRLaW5kIGV4dGVuZHMgS3ViZVJlc291cmNlS2luZCA9IEt1YmVSZXNvdXJjZUtpbmQsXG4gIFRBcGlWZXJzaW9uIGV4dGVuZHMga2V5b2YgS3ViZVJlc291cmNlU2hhcGVzT2Y8VEtpbmQ+ID0ga2V5b2YgS3ViZVJlc291cmNlU2hhcGVzT2Y8VEtpbmQ+LFxuPiA9ICgpID0+IERldGFpbHNQYW5lbFNlY3Rpb248VEtpbmQsIFRBcGlWZXJzaW9uPjtcblxuLyoqXG4gKiBUaGUgc3BlY2lmaWMgdG9rZW4gYC5mb3Ioa2luZCkuZm9yKGFwaVZlcnNpb24pYCB5aWVsZHM6IHRoZSBzZWN0aW9ucyBjb250cmlidXRlZFxuICogZm9yIG9uZSBBUEkgdmVyc2lvbiBvZiBvbmUga2luZC4gQW55IG51bWJlciBvZiB0aGVtLCBpbmNsdWRpbmcgbm9uZS5cbiAqL1xuZXhwb3J0IHR5cGUgRGV0YWlsc1BhbmVsU2VjdGlvblRva2VuRm9yPFxuICBUS2luZCBleHRlbmRzIEt1YmVSZXNvdXJjZUtpbmQsXG4gIFRBcGlWZXJzaW9uIGV4dGVuZHMga2V5b2YgS3ViZVJlc291cmNlU2hhcGVzT2Y8VEtpbmQ+LFxuPiA9IFNwZWNpZmljSW5qZWN0aW9uVG9rZW4yPHtcbiAgc2luZ2xlRmFjdG9yeTogRGV0YWlsc1BhbmVsU2VjdGlvbkZhY3Rvcnk8VEtpbmQsIFRBcGlWZXJzaW9uPjtcbiAgbWFueUZhY3Rvcnk6IE1hbnlGYWN0b3J5PERldGFpbHNQYW5lbFNlY3Rpb25GYWN0b3J5PFRLaW5kLCBUQXBpVmVyc2lvbj4+O1xuICBzcGVjaWZpY1Rva2VuRmFjdG9yeTogdW5kZWZpbmVkO1xuICBjYXJkaW5hbGl0eTogXCJ6ZXJvLW9yLW1hbnlcIjtcbn0+O1xuXG4vKipcbiAqIFRoZSBjb250cmlidXRpb24gc3VyZmFjZSBvZiB0aGUgZGV0YWlscyBwYW5lbDogc2VjdGlvbnMsIHJlZ2lzdGVyZWQgYWdhaW5zdCB0aGVcbiAqIGtpbmQgYW5kIEFQSSB2ZXJzaW9uIG9mIHRoZSByZXNvdXJjZXMgdGhleSBhcmUgZm9yIHZpYSBgLmZvcihraW5kKS5mb3IoYXBpVmVyc2lvbilgLlxuICogVGhlIGtpbmQgaXMgYSBgS3ViZVJlc291cmNlS2luZGAgYW5kIHRoZSBBUEkgdmVyc2lvbiBvbmUgaXQgaXMgZGVjbGFyZWQgZm9yLCBzbyBhXG4gKiBzZWN0aW9uIGlzIHR5cGVkIHdpdGggdGhlIGV4YWN0IHJlc291cmNlIGl0IHJlY2VpdmVzLiBUaGUgcGFuZWwgcmVzb2x2ZXMgdGhlXG4gKiBzZWN0aW9ucyBvZiB0aGUgcmVzb3VyY2UgaXQgc2hvd3MgZnJvbSB0aGF0IHJlc291cmNlJ3Mgb3duIGBraW5kYCBhbmQgYGFwaVZlcnNpb25gLlxuICpcbiAqIFByZWZlciB7QGxpbmsgYnVpbGREZXRhaWxzUGFuZWxTZWN0aW9uQnVuY2h9IG92ZXIgcmVnaXN0ZXJpbmcgYnkgaGFuZDogaXQgb3ducyB0aGVcbiAqIHJlZ2lzdHJhdGlvbiBzaGFwZSBhbmQga2VlcHMgYSBjb250cmlidXRpb24gdG8gb25lIGNhbGwuXG4gKlxuICogQGV4YW1wbGVcbiAqIGBgYHRzeFxuICogZXhwb3J0IGNvbnN0IGJhY2t1cFNjaGVkdWxlU2VjdGlvbkJ1bmNoID0gYnVpbGREZXRhaWxzUGFuZWxTZWN0aW9uQnVuY2goe1xuICogICBpZDogXCJiYWNrdXAtc2NoZWR1bGVcIixcbiAqICAga2luZDogYmFja3VwS2luZCxcbiAqICAgYXBpVmVyc2lvbjogYmFja3Vwc1YxLFxuICogICB0aXRsZTogXCJTY2hlZHVsZVwiLFxuICogICBvcmRlck51bWJlcjogNTAsXG4gKiAgIENvbXBvbmVudDogQmFja3VwU2NoZWR1bGUsXG4gKiB9KTtcbiAqIGBgYFxuICovXG5leHBvcnQgY29uc3QgZGV0YWlsc1BhbmVsU2VjdGlvbkluamVjdGlvblRva2VuID0gZ2V0SW5qZWN0aW9uVG9rZW4yPHtcbiAgc2luZ2xlRmFjdG9yeTogRGV0YWlsc1BhbmVsU2VjdGlvbkZhY3Rvcnk8YW55LCBhbnk+O1xuICBtYW55RmFjdG9yeTogTWFueUZhY3Rvcnk8RGV0YWlsc1BhbmVsU2VjdGlvbkZhY3Rvcnk8YW55LCBhbnk+Pjtcbn0+KHtcbiAgaWQ6IFwiZGV0YWlscy1wYW5lbC1zZWN0aW9uXCIsXG4gIGNhcmRpbmFsaXR5OiBcInplcm8tb3ItbWFueVwiLFxufSkoPFRLaW5kIGV4dGVuZHMgS3ViZVJlc291cmNlS2luZD4oa2luZDogVEtpbmQpID0+XG4gIGdldEluamVjdGlvblRva2VuMjx7XG4gICAgc2luZ2xlRmFjdG9yeTogRGV0YWlsc1BhbmVsU2VjdGlvbkZhY3Rvcnk8YW55LCBhbnk+O1xuICAgIG1hbnlGYWN0b3J5OiBNYW55RmFjdG9yeTxEZXRhaWxzUGFuZWxTZWN0aW9uRmFjdG9yeTxhbnksIGFueT4+O1xuICB9Pih7XG4gICAgaWQ6IGBkZXRhaWxzLXBhbmVsLXNlY3Rpb24tJHtraW5kfWAsXG4gICAgc3BlY2lhbGl0eToga2luZCxcbiAgICBjYXJkaW5hbGl0eTogXCJ6ZXJvLW9yLW1hbnlcIixcbiAgfSkoXG4gICAgPFRBcGlWZXJzaW9uIGV4dGVuZHMgS3ViZVJlc291cmNlQXBpVmVyc2lvbjxUS2luZD4+KFxuICAgICAgYXBpVmVyc2lvbjogVEFwaVZlcnNpb24sXG4gICAgKTogRGV0YWlsc1BhbmVsU2VjdGlvblRva2VuRm9yPFRLaW5kLCBUQXBpVmVyc2lvbj4gPT5cbiAgICAgIGdldEluamVjdGlvblRva2VuMjx7XG4gICAgICAgIHNpbmdsZUZhY3Rvcnk6IERldGFpbHNQYW5lbFNlY3Rpb25GYWN0b3J5PFRLaW5kLCBUQXBpVmVyc2lvbj47XG4gICAgICAgIG1hbnlGYWN0b3J5OiBNYW55RmFjdG9yeTxEZXRhaWxzUGFuZWxTZWN0aW9uRmFjdG9yeTxUS2luZCwgVEFwaVZlcnNpb24+PjtcbiAgICAgIH0+KHtcbiAgICAgICAgaWQ6IGBkZXRhaWxzLXBhbmVsLXNlY3Rpb24tJHtraW5kfS0ke2FwaVZlcnNpb259YCxcbiAgICAgICAgc3BlY2lhbGl0eTogYXBpVmVyc2lvbixcbiAgICAgICAgY2FyZGluYWxpdHk6IFwiemVyby1vci1tYW55XCIsXG4gICAgICB9KSgpLFxuICApLFxuKTtcbiJdLAogICJtYXBwaW5ncyI6ICI7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBOzs7QUNBQSxJQUFBQSxxQkFBbUQ7OztBQ0FuRCx3QkFBbUY7QUFvRjVFLElBQU0sd0NBQW9DLHNDQUc5QztBQUFBLEVBQ0QsSUFBSTtBQUFBLEVBQ0osYUFBYTtBQUNmLENBQUM7QUFBQSxFQUFFLENBQWlDLGFBQ2xDLHNDQUdHO0FBQUEsSUFDRCxJQUFJLHlCQUF5QixJQUFJO0FBQUEsSUFDakMsWUFBWTtBQUFBLElBQ1osYUFBYTtBQUFBLEVBQ2YsQ0FBQztBQUFBLElBQ0MsQ0FDRSxtQkFFQSxzQ0FHRztBQUFBLE1BQ0QsSUFBSSx5QkFBeUIsSUFBSSxJQUFJLFVBQVU7QUFBQSxNQUMvQyxZQUFZO0FBQUEsTUFDWixhQUFhO0FBQUEsSUFDZixDQUFDLEVBQUU7QUFBQSxFQUNQO0FBQ0Y7OztBRHpDTyxJQUFNLGdDQUFnQyxDQUczQztBQUFBLEVBQ0E7QUFBQSxFQUNBO0FBQUEsRUFDQTtBQUFBLEVBQ0E7QUFBQSxFQUNBO0FBQUEsRUFDQTtBQUNGLFVBQ0UsdUNBQW1CO0FBQUEsRUFDakIsYUFBUyxtQ0FBZTtBQUFBLElBQ3RCLElBQUkseUJBQXlCLEVBQUUsSUFBSSxJQUFJLElBQUksVUFBVTtBQUFBLElBRXJELGFBQWEsTUFBTTtBQUNqQixZQUFNLFVBQW1ELEVBQUUsSUFBSSxPQUFPLGFBQWEsVUFBVTtBQUU3RixhQUFPLE1BQU07QUFBQSxJQUNmO0FBQUEsSUFFQSxnQkFBZ0Isa0NBQWtDLElBQUksSUFBSSxFQUFFLElBQUksVUFBVTtBQUFBLEVBQzVFLENBQUM7QUFDSCxDQUFDOyIsCiAgIm5hbWVzIjogWyJpbXBvcnRfaW5qZWN0YWJsZSJdCn0K
|
|
@@ -0,0 +1,64 @@
|
|
|
1
|
+
import type { KubeResourceApiVersion, KubeResourceKind } from "@k8slens/kubernetes-contracts";
|
|
2
|
+
import type React from "react";
|
|
3
|
+
import { type DetailsPanelSection, type DetailsPanelSectionProps } from "./details-panel-section-injection-token";
|
|
4
|
+
export interface DetailsPanelSectionBunchParams<TKind extends KubeResourceKind, TApiVersion extends KubeResourceApiVersion<TKind>> {
|
|
5
|
+
/** Stable identity of the section. With the kind and API version, it derives the id of the registered injectable. */
|
|
6
|
+
readonly id: string;
|
|
7
|
+
/** The kind the section is for; with the API version, it types the component's `resource`. */
|
|
8
|
+
readonly kind: TKind;
|
|
9
|
+
/** The API version of the kind the section is for, one the kind is declared for. A section for several API versions is several requests. */
|
|
10
|
+
readonly apiVersion: TApiVersion;
|
|
11
|
+
/** The title of the section. */
|
|
12
|
+
readonly title: string;
|
|
13
|
+
/** Position among all sections of the panel, built-in ones included. Lower comes first, absent comes last. */
|
|
14
|
+
readonly orderNumber?: number;
|
|
15
|
+
/** Renders the content. Must be defined at module scope so its reference stays stable. */
|
|
16
|
+
readonly Component: React.ComponentType<DetailsPanelSectionProps<TKind, TApiVersion>>;
|
|
17
|
+
}
|
|
18
|
+
/**
|
|
19
|
+
* Contribute one titled section to the details panel of every resource of the
|
|
20
|
+
* given kind and API version. Export the result from a `*.injectable.ts` file;
|
|
21
|
+
* `registerInjectablesFromModules` registers the contained injectables.
|
|
22
|
+
*
|
|
23
|
+
* One request covers one API version. A section that applies to several API
|
|
24
|
+
* versions of its kind is requested once per API version, with the same `id`.
|
|
25
|
+
*
|
|
26
|
+
* @example
|
|
27
|
+
* ```tsx
|
|
28
|
+
* import { getKubernetesApiVersion } from "@k8slens/kubernetes-contracts";
|
|
29
|
+
* import { getKubeResourceKind } from "@k8slens/kubernetes-contracts";
|
|
30
|
+
* import { buildDetailsPanelSectionBunch, type DetailsPanelSectionProps } from "@k8slens/details-panel-contracts";
|
|
31
|
+
*
|
|
32
|
+
* const backupsV1 = getKubernetesApiVersion("backups.example.com/v1");
|
|
33
|
+
*
|
|
34
|
+
* const backupKind = getKubeResourceKind<{
|
|
35
|
+
* "backups.example.com/v1": {
|
|
36
|
+
* kind: "Backup";
|
|
37
|
+
* metadata: { name: string; namespace: string };
|
|
38
|
+
* spec: { schedule: string };
|
|
39
|
+
* };
|
|
40
|
+
* }>("Backup");
|
|
41
|
+
*
|
|
42
|
+
* const BackupSchedule = ({ resource, clusterId }: DetailsPanelSectionProps<typeof backupKind, typeof backupsV1>) => (
|
|
43
|
+
* <dl>
|
|
44
|
+
* <dt>Schedule</dt>
|
|
45
|
+
* <dd>{resource.spec.schedule}</dd>
|
|
46
|
+
* <dt>Cluster</dt>
|
|
47
|
+
* <dd>{clusterId}</dd>
|
|
48
|
+
* </dl>
|
|
49
|
+
* );
|
|
50
|
+
*
|
|
51
|
+
* export const backupScheduleSectionBunch = buildDetailsPanelSectionBunch({
|
|
52
|
+
* id: "backup-schedule",
|
|
53
|
+
* kind: backupKind,
|
|
54
|
+
* apiVersion: backupsV1,
|
|
55
|
+
* title: "Schedule",
|
|
56
|
+
* orderNumber: 50,
|
|
57
|
+
* Component: BackupSchedule,
|
|
58
|
+
* });
|
|
59
|
+
* ```
|
|
60
|
+
*/
|
|
61
|
+
export declare const buildDetailsPanelSectionBunch: <TKind extends KubeResourceKind, TApiVersion extends KubeResourceApiVersion<TKind>>({ id, kind, apiVersion, title, orderNumber, Component, }: DetailsPanelSectionBunchParams<TKind, TApiVersion>) => {
|
|
62
|
+
section: import("@k8slens/injectable").Injectable2<() => DetailsPanelSection<TKind, TApiVersion>>;
|
|
63
|
+
};
|
|
64
|
+
//# sourceMappingURL=build-details-panel-section-bunch.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"build-details-panel-section-bunch.d.ts","sourceRoot":"","sources":["../../src/build-details-panel-section-bunch.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,sBAAsB,EAAE,gBAAgB,EAAE,MAAM,+BAA+B,CAAC;AAC9F,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAC/B,OAAO,EACL,KAAK,mBAAmB,EACxB,KAAK,wBAAwB,EAE9B,MAAM,yCAAyC,CAAC;AAEjD,MAAM,WAAW,8BAA8B,CAC7C,KAAK,SAAS,gBAAgB,EAC9B,WAAW,SAAS,sBAAsB,CAAC,KAAK,CAAC;IAEjD,qHAAqH;IACrH,QAAQ,CAAC,EAAE,EAAE,MAAM,CAAC;IACpB,8FAA8F;IAC9F,QAAQ,CAAC,IAAI,EAAE,KAAK,CAAC;IACrB,4IAA4I;IAC5I,QAAQ,CAAC,UAAU,EAAE,WAAW,CAAC;IACjC,gCAAgC;IAChC,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;IACvB,8GAA8G;IAC9G,QAAQ,CAAC,WAAW,CAAC,EAAE,MAAM,CAAC;IAC9B,0FAA0F;IAC1F,QAAQ,CAAC,SAAS,EAAE,KAAK,CAAC,aAAa,CAAC,wBAAwB,CAAC,KAAK,EAAE,WAAW,CAAC,CAAC,CAAC;CACvF;AAED;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA0CG;AACH,eAAO,MAAM,6BAA6B,GACxC,KAAK,SAAS,gBAAgB,EAC9B,WAAW,SAAS,sBAAsB,CAAC,KAAK,CAAC,4DAQhD,8BAA8B,CAAC,KAAK,EAAE,WAAW,CAAC;;CAajD,CAAC"}
|
|
@@ -0,0 +1,71 @@
|
|
|
1
|
+
import { type ManyFactory, type SpecificInjectionToken2 } from "@k8slens/injectable";
|
|
2
|
+
import type { Identifiable, MaybeOrderable } from "@k8slens/composable-responsibilities";
|
|
3
|
+
import type { KubeResource, KubeResourceApiVersion, KubeResourceKind, KubeResourceShapesOf } from "@k8slens/kubernetes-contracts";
|
|
4
|
+
import type React from "react";
|
|
5
|
+
/**
|
|
6
|
+
* What a section's component is given: the resource whose details are shown,
|
|
7
|
+
* typed by the kind and API version the section was contributed for, and the
|
|
8
|
+
* cluster it lives in.
|
|
9
|
+
*/
|
|
10
|
+
export interface DetailsPanelSectionProps<TKind extends KubeResourceKind = KubeResourceKind, TApiVersion extends keyof KubeResourceShapesOf<TKind> = keyof KubeResourceShapesOf<TKind>> {
|
|
11
|
+
readonly resource: KubeResource<TKind, TApiVersion>;
|
|
12
|
+
readonly clusterId: string;
|
|
13
|
+
}
|
|
14
|
+
/**
|
|
15
|
+
* One section of the details panel: a titled block of content shown for every
|
|
16
|
+
* resource of the kind and API version it was contributed for.
|
|
17
|
+
*
|
|
18
|
+
* - `id`: stable identity of the section.
|
|
19
|
+
* - `title`: the title of the section, shown to the user.
|
|
20
|
+
* - `orderNumber` (via `MaybeOrderable`): position among all sections of the
|
|
21
|
+
* panel, built-in ones included; lower comes first, absent comes last.
|
|
22
|
+
* - `Component`: renders the content, given the resource and its cluster.
|
|
23
|
+
*/
|
|
24
|
+
export interface DetailsPanelSection<TKind extends KubeResourceKind = KubeResourceKind, TApiVersion extends keyof KubeResourceShapesOf<TKind> = keyof KubeResourceShapesOf<TKind>> extends Identifiable, MaybeOrderable {
|
|
25
|
+
readonly title: string;
|
|
26
|
+
readonly Component: React.ComponentType<DetailsPanelSectionProps<TKind, TApiVersion>>;
|
|
27
|
+
}
|
|
28
|
+
/** Produces one section. */
|
|
29
|
+
export type DetailsPanelSectionFactory<TKind extends KubeResourceKind = KubeResourceKind, TApiVersion extends keyof KubeResourceShapesOf<TKind> = keyof KubeResourceShapesOf<TKind>> = () => DetailsPanelSection<TKind, TApiVersion>;
|
|
30
|
+
/**
|
|
31
|
+
* The specific token `.for(kind).for(apiVersion)` yields: the sections contributed
|
|
32
|
+
* for one API version of one kind. Any number of them, including none.
|
|
33
|
+
*/
|
|
34
|
+
export type DetailsPanelSectionTokenFor<TKind extends KubeResourceKind, TApiVersion extends keyof KubeResourceShapesOf<TKind>> = SpecificInjectionToken2<{
|
|
35
|
+
singleFactory: DetailsPanelSectionFactory<TKind, TApiVersion>;
|
|
36
|
+
manyFactory: ManyFactory<DetailsPanelSectionFactory<TKind, TApiVersion>>;
|
|
37
|
+
specificTokenFactory: undefined;
|
|
38
|
+
cardinality: "zero-or-many";
|
|
39
|
+
}>;
|
|
40
|
+
/**
|
|
41
|
+
* The contribution surface of the details panel: sections, registered against the
|
|
42
|
+
* kind and API version of the resources they are for via `.for(kind).for(apiVersion)`.
|
|
43
|
+
* The kind is a `KubeResourceKind` and the API version one it is declared for, so a
|
|
44
|
+
* section is typed with the exact resource it receives. The panel resolves the
|
|
45
|
+
* sections of the resource it shows from that resource's own `kind` and `apiVersion`.
|
|
46
|
+
*
|
|
47
|
+
* Prefer {@link buildDetailsPanelSectionBunch} over registering by hand: it owns the
|
|
48
|
+
* registration shape and keeps a contribution to one call.
|
|
49
|
+
*
|
|
50
|
+
* @example
|
|
51
|
+
* ```tsx
|
|
52
|
+
* export const backupScheduleSectionBunch = buildDetailsPanelSectionBunch({
|
|
53
|
+
* id: "backup-schedule",
|
|
54
|
+
* kind: backupKind,
|
|
55
|
+
* apiVersion: backupsV1,
|
|
56
|
+
* title: "Schedule",
|
|
57
|
+
* orderNumber: 50,
|
|
58
|
+
* Component: BackupSchedule,
|
|
59
|
+
* });
|
|
60
|
+
* ```
|
|
61
|
+
*/
|
|
62
|
+
export declare const detailsPanelSectionInjectionToken: import("@k8slens/injectable").InjectionToken2Base<DetailsPanelSectionFactory<any, any>, () => DetailsPanelSection<any, any>[], "zero-or-many", () => import("@k8slens/injectable").InjectionInstanceWithMeta<DetailsPanelSection<any, any>>, () => import("@k8slens/injectable").InjectionInstanceWithMeta<DetailsPanelSection<any, any>>[]> & {
|
|
63
|
+
readonly __abstract: true;
|
|
64
|
+
for: <TKind extends KubeResourceKind>(kind: TKind) => import("@k8slens/injectable").InjectionToken2Base<DetailsPanelSectionFactory<any, any>, () => DetailsPanelSection<any, any>[], "zero-or-many", () => import("@k8slens/injectable").InjectionInstanceWithMeta<DetailsPanelSection<any, any>>, () => import("@k8slens/injectable").InjectionInstanceWithMeta<DetailsPanelSection<any, any>>[]> & {
|
|
65
|
+
readonly __abstract: true;
|
|
66
|
+
for: <TApiVersion extends KubeResourceApiVersion<TKind>>(apiVersion: TApiVersion) => DetailsPanelSectionTokenFor<TKind, TApiVersion>;
|
|
67
|
+
} & {
|
|
68
|
+
speciality: any;
|
|
69
|
+
};
|
|
70
|
+
};
|
|
71
|
+
//# sourceMappingURL=details-panel-section-injection-token.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"details-panel-section-injection-token.d.ts","sourceRoot":"","sources":["../../src/details-panel-section-injection-token.ts"],"names":[],"mappings":"AAAA,OAAO,EAAsB,KAAK,WAAW,EAAE,KAAK,uBAAuB,EAAE,MAAM,qBAAqB,CAAC;AACzG,OAAO,KAAK,EAAE,YAAY,EAAE,cAAc,EAAE,MAAM,sCAAsC,CAAC;AACzF,OAAO,KAAK,EACV,YAAY,EACZ,sBAAsB,EACtB,gBAAgB,EAChB,oBAAoB,EACrB,MAAM,+BAA+B,CAAC;AACvC,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAE/B;;;;GAIG;AACH,MAAM,WAAW,wBAAwB,CACvC,KAAK,SAAS,gBAAgB,GAAG,gBAAgB,EACjD,WAAW,SAAS,MAAM,oBAAoB,CAAC,KAAK,CAAC,GAAG,MAAM,oBAAoB,CAAC,KAAK,CAAC;IAEzF,QAAQ,CAAC,QAAQ,EAAE,YAAY,CAAC,KAAK,EAAE,WAAW,CAAC,CAAC;IACpD,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAC;CAC5B;AAED;;;;;;;;;GASG;AACH,MAAM,WAAW,mBAAmB,CAClC,KAAK,SAAS,gBAAgB,GAAG,gBAAgB,EACjD,WAAW,SAAS,MAAM,oBAAoB,CAAC,KAAK,CAAC,GAAG,MAAM,oBAAoB,CAAC,KAAK,CAAC,CACzF,SAAQ,YAAY,EAClB,cAAc;IAChB,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;IACvB,QAAQ,CAAC,SAAS,EAAE,KAAK,CAAC,aAAa,CAAC,wBAAwB,CAAC,KAAK,EAAE,WAAW,CAAC,CAAC,CAAC;CACvF;AAED,4BAA4B;AAC5B,MAAM,MAAM,0BAA0B,CACpC,KAAK,SAAS,gBAAgB,GAAG,gBAAgB,EACjD,WAAW,SAAS,MAAM,oBAAoB,CAAC,KAAK,CAAC,GAAG,MAAM,oBAAoB,CAAC,KAAK,CAAC,IACvF,MAAM,mBAAmB,CAAC,KAAK,EAAE,WAAW,CAAC,CAAC;AAElD;;;GAGG;AACH,MAAM,MAAM,2BAA2B,CACrC,KAAK,SAAS,gBAAgB,EAC9B,WAAW,SAAS,MAAM,oBAAoB,CAAC,KAAK,CAAC,IACnD,uBAAuB,CAAC;IAC1B,aAAa,EAAE,0BAA0B,CAAC,KAAK,EAAE,WAAW,CAAC,CAAC;IAC9D,WAAW,EAAE,WAAW,CAAC,0BAA0B,CAAC,KAAK,EAAE,WAAW,CAAC,CAAC,CAAC;IACzE,oBAAoB,EAAE,SAAS,CAAC;IAChC,WAAW,EAAE,cAAc,CAAC;CAC7B,CAAC,CAAC;AAEH;;;;;;;;;;;;;;;;;;;;;GAqBG;AACH,eAAO,MAAM,iCAAiC;;UAM1C,KAAK,SAAS,gBAAgB,QAAQ,KAAK;;cAS1C,WAAW,SAAS,sBAAsB,CAAC,KAAK,CAAC,cACpC,WAAW,KACtB,2BAA2B,CAAC,KAAK,EAAE,WAAW,CAAC;;;;CAUrD,CAAC"}
|