@genspectrum/dashboard-components 0.18.5 → 0.18.6
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 +12 -0
- package/custom-elements.json +1 -1
- package/dist/components.d.ts +16 -16
- package/dist/components.js +765 -315
- package/dist/components.js.map +1 -1
- package/dist/style.css +2 -2
- package/dist/util.d.ts +16 -16
- package/package.json +2 -2
- package/src/preact/MutationAnnotationsContext.tsx +34 -27
- package/src/preact/components/dropdown.tsx +1 -1
- package/src/preact/components/info.tsx +1 -1
- package/src/preact/components/mutations-over-time-text-filter.stories.tsx +57 -0
- package/src/preact/components/mutations-over-time-text-filter.tsx +63 -0
- package/src/preact/components/segment-selector.tsx +1 -1
- package/src/preact/mutationFilter/mutation-filter.stories.tsx +169 -50
- package/src/preact/mutationFilter/mutation-filter.tsx +239 -234
- package/src/preact/mutationFilter/parseAndValidateMutation.ts +62 -10
- package/src/preact/mutationFilter/parseMutation.spec.ts +62 -47
- package/src/preact/mutationsOverTime/getFilteredMutationsOverTime.spec.ts +128 -0
- package/src/preact/mutationsOverTime/getFilteredMutationsOverTimeData.ts +39 -2
- package/src/preact/mutationsOverTime/mutations-over-time-grid.tsx +8 -11
- package/src/preact/mutationsOverTime/mutations-over-time.stories.tsx +27 -0
- package/src/preact/mutationsOverTime/mutations-over-time.tsx +26 -5
- package/src/preact/shared/tanstackTable/pagination-context.tsx +30 -0
- package/src/preact/shared/tanstackTable/pagination.tsx +19 -6
- package/src/preact/shared/tanstackTable/tanstackTable.tsx +17 -3
- package/src/preact/wastewater/mutationsOverTime/wastewater-mutations-over-time.stories.tsx +19 -1
- package/src/preact/wastewater/mutationsOverTime/wastewater-mutations-over-time.tsx +6 -1
- package/src/web-components/input/gs-mutation-filter.stories.ts +4 -4
- package/src/web-components/visualization/gs-prevalence-over-time.stories.ts +1 -1
- package/standalone-bundle/dashboard-components.js +12896 -13366
- package/standalone-bundle/dashboard-components.js.map +1 -1
- package/standalone-bundle/style.css +1 -1
package/dist/components.js
CHANGED
|
@@ -843,7 +843,7 @@ const InfoHeadline2 = ({ children }) => {
|
|
|
843
843
|
return /* @__PURE__ */ u$1("h2", { className: "text-justify text-base font-bold mt-4", children });
|
|
844
844
|
};
|
|
845
845
|
const InfoParagraph = ({ children }) => {
|
|
846
|
-
return /* @__PURE__ */ u$1("p", { className: "text-justify text-base font-normal my-1", children });
|
|
846
|
+
return /* @__PURE__ */ u$1("p", { className: "text-justify text-base font-normal my-1 text-wrap", children });
|
|
847
847
|
};
|
|
848
848
|
const InfoLink = ({ children, href }) => {
|
|
849
849
|
return /* @__PURE__ */ u$1("a", { className: "text-blue-600 hover:text-blue-800", href, target: "_blank", rel: "noopener noreferrer", children });
|
|
@@ -1069,43 +1069,46 @@ const MutationAnnotationsContextProvider = ({ value, children }) => {
|
|
|
1069
1069
|
if (!parseResult2.success) {
|
|
1070
1070
|
return parseResult2;
|
|
1071
1071
|
}
|
|
1072
|
-
|
|
1073
|
-
const nucleotidePositions = /* @__PURE__ */ new Map();
|
|
1074
|
-
const aminoAcidMap = /* @__PURE__ */ new Map();
|
|
1075
|
-
const aminoAcidPositions = /* @__PURE__ */ new Map();
|
|
1076
|
-
value.forEach((annotation) => {
|
|
1077
|
-
new Set(annotation.nucleotideMutations).forEach((code) => {
|
|
1078
|
-
addAnnotationToMap(nucleotideMap, code, annotation);
|
|
1079
|
-
});
|
|
1080
|
-
new Set(annotation.aminoAcidMutations).forEach((code) => {
|
|
1081
|
-
addAnnotationToMap(aminoAcidMap, code, annotation);
|
|
1082
|
-
});
|
|
1083
|
-
new Set(annotation.nucleotidePositions).forEach((position) => {
|
|
1084
|
-
addAnnotationToMap(nucleotidePositions, position, annotation);
|
|
1085
|
-
});
|
|
1086
|
-
new Set(annotation.aminoAcidPositions).forEach((position) => {
|
|
1087
|
-
addAnnotationToMap(aminoAcidPositions, position, annotation);
|
|
1088
|
-
});
|
|
1089
|
-
});
|
|
1090
|
-
return {
|
|
1091
|
-
success: true,
|
|
1092
|
-
value: {
|
|
1093
|
-
nucleotide: { mutation: nucleotideMap, position: nucleotidePositions },
|
|
1094
|
-
"amino acid": { mutation: aminoAcidMap, position: aminoAcidPositions }
|
|
1095
|
-
}
|
|
1096
|
-
};
|
|
1072
|
+
return { success: true, value: getMutationAnnotationsContext(value) };
|
|
1097
1073
|
}, [value]);
|
|
1098
1074
|
if (!parseResult.success) {
|
|
1099
1075
|
return /* @__PURE__ */ u$1(ResizeContainer, { size: { width: "100%" }, children: /* @__PURE__ */ u$1(ErrorDisplay, { error: parseResult.error, layout: "vertical" }) });
|
|
1100
1076
|
}
|
|
1101
1077
|
return /* @__PURE__ */ u$1(MutationAnnotationsContext.Provider, { value: parseResult.value, children });
|
|
1102
1078
|
};
|
|
1079
|
+
function getMutationAnnotationsContext(value) {
|
|
1080
|
+
const nucleotideMap = /* @__PURE__ */ new Map();
|
|
1081
|
+
const nucleotidePositions = /* @__PURE__ */ new Map();
|
|
1082
|
+
const aminoAcidMap = /* @__PURE__ */ new Map();
|
|
1083
|
+
const aminoAcidPositions = /* @__PURE__ */ new Map();
|
|
1084
|
+
value.forEach((annotation) => {
|
|
1085
|
+
new Set(annotation.nucleotideMutations).forEach((code) => {
|
|
1086
|
+
addAnnotationToMap(nucleotideMap, code, annotation);
|
|
1087
|
+
});
|
|
1088
|
+
new Set(annotation.aminoAcidMutations).forEach((code) => {
|
|
1089
|
+
addAnnotationToMap(aminoAcidMap, code, annotation);
|
|
1090
|
+
});
|
|
1091
|
+
new Set(annotation.nucleotidePositions).forEach((position) => {
|
|
1092
|
+
addAnnotationToMap(nucleotidePositions, position, annotation);
|
|
1093
|
+
});
|
|
1094
|
+
new Set(annotation.aminoAcidPositions).forEach((position) => {
|
|
1095
|
+
addAnnotationToMap(aminoAcidPositions, position, annotation);
|
|
1096
|
+
});
|
|
1097
|
+
});
|
|
1098
|
+
return {
|
|
1099
|
+
nucleotide: { mutation: nucleotideMap, position: nucleotidePositions },
|
|
1100
|
+
"amino acid": { mutation: aminoAcidMap, position: aminoAcidPositions }
|
|
1101
|
+
};
|
|
1102
|
+
}
|
|
1103
1103
|
function addAnnotationToMap(map2, code, annotation) {
|
|
1104
1104
|
const oldAnnotations = map2.get(code.toUpperCase()) ?? [];
|
|
1105
1105
|
map2.set(code.toUpperCase(), [...oldAnnotations, annotation]);
|
|
1106
1106
|
}
|
|
1107
1107
|
function useMutationAnnotationsProvider() {
|
|
1108
1108
|
const mutationAnnotations = x$1(MutationAnnotationsContext);
|
|
1109
|
+
return getMutationAnnotationsProvider(mutationAnnotations);
|
|
1110
|
+
}
|
|
1111
|
+
function getMutationAnnotationsProvider(mutationAnnotations) {
|
|
1109
1112
|
return (mutation, sequenceType) => {
|
|
1110
1113
|
const position = mutation.segment === void 0 ? `${mutation.position}` : `${mutation.segment.toUpperCase()}:${mutation.position}`;
|
|
1111
1114
|
const possiblePositionAnnotations = mutationAnnotations[sequenceType].position.get(position);
|
|
@@ -1912,7 +1915,7 @@ const Dropdown = ({ children, buttonTitle, placement }) => {
|
|
|
1912
1915
|
setShowContent(!showContent);
|
|
1913
1916
|
};
|
|
1914
1917
|
return /* @__PURE__ */ u$1(Fragment, { children: [
|
|
1915
|
-
/* @__PURE__ */ u$1("button", { type: "button", className: "btn btn-xs whitespace-nowrap w-full", onClick: toggle, ref: referenceRef, children: buttonTitle }),
|
|
1918
|
+
/* @__PURE__ */ u$1("button", { type: "button", className: "btn btn-xs whitespace-nowrap w-full", onClick: toggle, ref: referenceRef, children: /* @__PURE__ */ u$1("span", { className: "w-full truncate", children: buttonTitle }) }),
|
|
1916
1919
|
/* @__PURE__ */ u$1("div", { ref: floatingRef, className: `${dropdownClass} ${showContent ? "" : "hidden"}`, children })
|
|
1917
1920
|
] });
|
|
1918
1921
|
};
|
|
@@ -2207,7 +2210,7 @@ const SegmentSelector = ({
|
|
|
2207
2210
|
if (displayedSegments.length <= 1) {
|
|
2208
2211
|
return null;
|
|
2209
2212
|
}
|
|
2210
|
-
return /* @__PURE__ */ u$1("div", { className: "w-
|
|
2213
|
+
return /* @__PURE__ */ u$1("div", { className: "w-24 inline-flex", children: /* @__PURE__ */ u$1(
|
|
2211
2214
|
CheckboxSelector,
|
|
2212
2215
|
{
|
|
2213
2216
|
items: displayedSegments,
|
|
@@ -2461,8 +2464,8 @@ const MutationComparisonInfo = ({ originalComponentProps }) => {
|
|
|
2461
2464
|
};
|
|
2462
2465
|
const gridJsStyle = '.gridjs-head button, .gridjs-footer button {\n cursor: pointer;\n background-color: transparent;\n background-image: none;\n padding: 0;\n margin: 0;\n border: none;\n outline: none;\n}\n\n.gridjs-temp {\n position: relative;\n}\n\n.gridjs-head {\n width: 100%;\n margin-bottom: 5px;\n padding: 5px 1px;\n}\n.gridjs-head::after {\n content: "";\n display: block;\n clear: both;\n}\n.gridjs-head:empty {\n padding: 0;\n border: none;\n}\n\n.gridjs-container {\n overflow: hidden;\n display: inline-block;\n padding: 2px;\n color: #000;\n position: relative;\n z-index: 0;\n}\n\n.gridjs-footer {\n display: block;\n position: relative;\n width: 100%;\n z-index: 5;\n padding: 12px 24px;\n border-top: 1px solid #e5e7eb;\n background-color: #fff;\n box-shadow: 0 1px 3px 0 rgba(0, 0, 0, 0.1), 0 1px 2px 0 rgba(0, 0, 0, 0.26);\n border-radius: 0 0 8px 8px;\n border-bottom-width: 1px;\n border-color: #e5e7eb;\n}\n.gridjs-footer:empty {\n padding: 0;\n border: none;\n}\n\ninput.gridjs-input {\n outline: none;\n background-color: #fff;\n border: 1px solid #d2d6dc;\n border-radius: 5px;\n padding: 10px 13px;\n font-size: 14px;\n line-height: 1.45;\n -webkit-appearance: none;\n -moz-appearance: none;\n appearance: none;\n}\ninput.gridjs-input:focus {\n box-shadow: 0 0 0 3px rgba(149, 189, 243, 0.5);\n border-color: #9bc2f7;\n}\n\n.gridjs-pagination {\n color: #3d4044;\n}\n.gridjs-pagination::after {\n content: "";\n display: block;\n clear: both;\n}\n.gridjs-pagination .gridjs-summary {\n float: left;\n margin-top: 5px;\n}\n.gridjs-pagination .gridjs-pages {\n float: right;\n}\n.gridjs-pagination .gridjs-pages button {\n padding: 5px 14px;\n border: 1px solid #d2d6dc;\n background-color: #fff;\n border-right: none;\n outline: none;\n -webkit-user-select: none;\n -moz-user-select: none;\n user-select: none;\n}\n.gridjs-pagination .gridjs-pages button:focus {\n box-shadow: 0 0 0 2px rgba(149, 189, 243, 0.5);\n position: relative;\n margin-right: -1px;\n border-right: 1px solid #d2d6dc;\n}\n.gridjs-pagination .gridjs-pages button:hover {\n background-color: #f7f7f7;\n color: rgb(60, 66, 87);\n outline: none;\n}\n.gridjs-pagination .gridjs-pages button:disabled,\n.gridjs-pagination .gridjs-pages button[disabled],\n.gridjs-pagination .gridjs-pages button:hover:disabled {\n cursor: default;\n background-color: #fff;\n color: #6b7280;\n}\n.gridjs-pagination .gridjs-pages button.gridjs-spread {\n cursor: default;\n box-shadow: none;\n background-color: #fff;\n}\n.gridjs-pagination .gridjs-pages button.gridjs-currentPage {\n background-color: #f7f7f7;\n font-weight: bold;\n}\n.gridjs-pagination .gridjs-pages button:last-child {\n border-bottom-right-radius: 6px;\n border-top-right-radius: 6px;\n border-right: 1px solid #d2d6dc;\n}\n.gridjs-pagination .gridjs-pages button:first-child {\n border-bottom-left-radius: 6px;\n border-top-left-radius: 6px;\n}\n.gridjs-pagination .gridjs-pages button:last-child:focus {\n margin-right: 0;\n}\n\nbutton.gridjs-sort {\n float: right;\n height: 24px;\n width: 13px;\n background-color: transparent;\n background-repeat: no-repeat;\n background-position-x: center;\n cursor: pointer;\n padding: 0;\n margin: 0;\n border: none;\n outline: none;\n background-size: contain;\n}\nbutton.gridjs-sort-neutral {\n opacity: 0.3;\n background-image: url("data:image/svg+xml;base64,PHN2ZyB2ZXJzaW9uPSIxLjEiIGlkPSJDYXBhXzEiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiIHg9IjBweCIgeT0iMHB4IgoJIHdpZHRoPSI0MDEuOTk4cHgiIGhlaWdodD0iNDAxLjk5OHB4IiB2aWV3Qm94PSIwIDAgNDAxLjk5OCA0MDEuOTk4IiBzdHlsZT0iZW5hYmxlLWJhY2tncm91bmQ6bmV3IDAgMCA0MDEuOTk4IDQwMS45OTg7IgoJIHhtbDpzcGFjZT0icHJlc2VydmUiPgo8Zz4KCTxnPgoJCTxwYXRoIGQ9Ik03My4wOTIsMTY0LjQ1MmgyNTUuODEzYzQuOTQ5LDAsOS4yMzMtMS44MDcsMTIuODQ4LTUuNDI0YzMuNjEzLTMuNjE2LDUuNDI3LTcuODk4LDUuNDI3LTEyLjg0NwoJCQljMC00Ljk0OS0xLjgxMy05LjIyOS01LjQyNy0xMi44NUwyMTMuODQ2LDUuNDI0QzIxMC4yMzIsMS44MTIsMjA1Ljk1MSwwLDIwMC45OTksMHMtOS4yMzMsMS44MTItMTIuODUsNS40MjRMNjAuMjQyLDEzMy4zMzEKCQkJYy0zLjYxNywzLjYxNy01LjQyNCw3LjkwMS01LjQyNCwxMi44NWMwLDQuOTQ4LDEuODA3LDkuMjMxLDUuNDI0LDEyLjg0N0M2My44NjMsMTYyLjY0NSw2OC4xNDQsMTY0LjQ1Miw3My4wOTIsMTY0LjQ1MnoiLz4KCQk8cGF0aCBkPSJNMzI4LjkwNSwyMzcuNTQ5SDczLjA5MmMtNC45NTIsMC05LjIzMywxLjgwOC0xMi44NSw1LjQyMWMtMy42MTcsMy42MTctNS40MjQsNy44OTgtNS40MjQsMTIuODQ3CgkJCWMwLDQuOTQ5LDEuODA3LDkuMjMzLDUuNDI0LDEyLjg0OEwxODguMTQ5LDM5Ni41N2MzLjYyMSwzLjYxNyw3LjkwMiw1LjQyOCwxMi44NSw1LjQyOHM5LjIzMy0xLjgxMSwxMi44NDctNS40MjhsMTI3LjkwNy0xMjcuOTA2CgkJCWMzLjYxMy0zLjYxNCw1LjQyNy03Ljg5OCw1LjQyNy0xMi44NDhjMC00Ljk0OC0xLjgxMy05LjIyOS01LjQyNy0xMi44NDdDMzM4LjEzOSwyMzkuMzUzLDMzMy44NTQsMjM3LjU0OSwzMjguOTA1LDIzNy41NDl6Ii8+Cgk8L2c+CjwvZz4KPGc+CjwvZz4KPGc+CjwvZz4KPGc+CjwvZz4KPGc+CjwvZz4KPGc+CjwvZz4KPGc+CjwvZz4KPGc+CjwvZz4KPGc+CjwvZz4KPGc+CjwvZz4KPGc+CjwvZz4KPGc+CjwvZz4KPGc+CjwvZz4KPGc+CjwvZz4KPGc+CjwvZz4KPGc+CjwvZz4KPC9zdmc+");\n background-position-y: center;\n}\nbutton.gridjs-sort-asc {\n background-image: url("data:image/svg+xml;base64,PHN2ZyB2ZXJzaW9uPSIxLjEiIGlkPSJDYXBhXzEiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiIHg9IjBweCIgeT0iMHB4IgoJIHdpZHRoPSIyOTIuMzYycHgiIGhlaWdodD0iMjkyLjM2MXB4IiB2aWV3Qm94PSIwIDAgMjkyLjM2MiAyOTIuMzYxIiBzdHlsZT0iZW5hYmxlLWJhY2tncm91bmQ6bmV3IDAgMCAyOTIuMzYyIDI5Mi4zNjE7IgoJIHhtbDpzcGFjZT0icHJlc2VydmUiPgo8Zz4KCTxwYXRoIGQ9Ik0yODYuOTM1LDE5Ny4yODdMMTU5LjAyOCw2OS4zODFjLTMuNjEzLTMuNjE3LTcuODk1LTUuNDI0LTEyLjg0Ny01LjQyNHMtOS4yMzMsMS44MDctMTIuODUsNS40MjRMNS40MjQsMTk3LjI4NwoJCUMxLjgwNywyMDAuOTA0LDAsMjA1LjE4NiwwLDIxMC4xMzRzMS44MDcsOS4yMzMsNS40MjQsMTIuODQ3YzMuNjIxLDMuNjE3LDcuOTAyLDUuNDI1LDEyLjg1LDUuNDI1aDI1NS44MTMKCQljNC45NDksMCw5LjIzMy0xLjgwOCwxMi44NDgtNS40MjVjMy42MTMtMy42MTMsNS40MjctNy44OTgsNS40MjctMTIuODQ3UzI5MC41NDgsMjAwLjkwNCwyODYuOTM1LDE5Ny4yODd6Ii8+CjwvZz4KPGc+CjwvZz4KPGc+CjwvZz4KPGc+CjwvZz4KPGc+CjwvZz4KPGc+CjwvZz4KPGc+CjwvZz4KPGc+CjwvZz4KPGc+CjwvZz4KPGc+CjwvZz4KPGc+CjwvZz4KPGc+CjwvZz4KPGc+CjwvZz4KPGc+CjwvZz4KPGc+CjwvZz4KPGc+CjwvZz4KPC9zdmc+");\n background-position-y: 35%;\n background-size: 10px;\n}\nbutton.gridjs-sort-desc {\n background-image: url("data:image/svg+xml;base64,PHN2ZyB2ZXJzaW9uPSIxLjEiIGlkPSJDYXBhXzEiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiIHg9IjBweCIgeT0iMHB4IgoJIHdpZHRoPSIyOTIuMzYycHgiIGhlaWdodD0iMjkyLjM2MnB4IiB2aWV3Qm94PSIwIDAgMjkyLjM2MiAyOTIuMzYyIiBzdHlsZT0iZW5hYmxlLWJhY2tncm91bmQ6bmV3IDAgMCAyOTIuMzYyIDI5Mi4zNjI7IgoJIHhtbDpzcGFjZT0icHJlc2VydmUiPgo8Zz4KCTxwYXRoIGQ9Ik0yODYuOTM1LDY5LjM3N2MtMy42MTQtMy42MTctNy44OTgtNS40MjQtMTIuODQ4LTUuNDI0SDE4LjI3NGMtNC45NTIsMC05LjIzMywxLjgwNy0xMi44NSw1LjQyNAoJCUMxLjgwNyw3Mi45OTgsMCw3Ny4yNzksMCw4Mi4yMjhjMCw0Ljk0OCwxLjgwNyw5LjIyOSw1LjQyNCwxMi44NDdsMTI3LjkwNywxMjcuOTA3YzMuNjIxLDMuNjE3LDcuOTAyLDUuNDI4LDEyLjg1LDUuNDI4CgkJczkuMjMzLTEuODExLDEyLjg0Ny01LjQyOEwyODYuOTM1LDk1LjA3NGMzLjYxMy0zLjYxNyw1LjQyNy03Ljg5OCw1LjQyNy0xMi44NDdDMjkyLjM2Miw3Ny4yNzksMjkwLjU0OCw3Mi45OTgsMjg2LjkzNSw2OS4zNzd6Ii8+CjwvZz4KPGc+CjwvZz4KPGc+CjwvZz4KPGc+CjwvZz4KPGc+CjwvZz4KPGc+CjwvZz4KPGc+CjwvZz4KPGc+CjwvZz4KPGc+CjwvZz4KPGc+CjwvZz4KPGc+CjwvZz4KPGc+CjwvZz4KPGc+CjwvZz4KPGc+CjwvZz4KPGc+CjwvZz4KPGc+CjwvZz4KPC9zdmc+");\n background-position-y: 65%;\n background-size: 10px;\n}\nbutton.gridjs-sort:focus {\n outline: none;\n}\n\ntable.gridjs-table {\n width: 100%;\n max-width: 100%;\n border-collapse: collapse;\n text-align: left;\n display: table;\n margin: 0;\n padding: 0;\n overflow: auto;\n table-layout: fixed;\n}\n\n.gridjs-tbody {\n background-color: #fff;\n}\n\ntd.gridjs-td {\n border: 1px solid #e5e7eb;\n padding: 12px 24px;\n background-color: #fff;\n box-sizing: content-box;\n}\ntd.gridjs-td:first-child {\n border-left: none;\n}\ntd.gridjs-td:last-child {\n border-right: none;\n}\ntd.gridjs-message {\n text-align: center;\n}\n\nth.gridjs-th {\n position: relative;\n color: #6b7280;\n background-color: #f9fafb;\n border: 1px solid #e5e7eb;\n border-top: none;\n padding: 14px 24px;\n -webkit-user-select: none;\n -moz-user-select: none;\n user-select: none;\n box-sizing: border-box;\n white-space: nowrap;\n outline: none;\n vertical-align: middle;\n}\nth.gridjs-th .gridjs-th-content {\n text-overflow: ellipsis;\n overflow: hidden;\n width: 100%;\n float: left;\n}\nth.gridjs-th-sort {\n cursor: pointer;\n}\nth.gridjs-th-sort .gridjs-th-content {\n width: calc(100% - 15px);\n}\nth.gridjs-th-sort:hover {\n background-color: #e5e7eb;\n}\nth.gridjs-th-sort:focus {\n background-color: #e5e7eb;\n}\nth.gridjs-th-fixed {\n position: sticky;\n box-shadow: 0 1px 0 0 #e5e7eb;\n}\n@supports (-moz-appearance: none) {\n th.gridjs-th-fixed {\n box-shadow: 0 0 0 1px #e5e7eb;\n }\n}\nth.gridjs-th:first-child {\n border-left: none;\n}\nth.gridjs-th:last-child {\n border-right: none;\n}\n\n.gridjs-tr {\n border: none;\n}\n.gridjs-tr-selected td {\n background-color: #ebf5ff;\n}\n.gridjs-tr:last-child td {\n border-bottom: 0;\n}\n\n.gridjs *,\n.gridjs :after,\n.gridjs :before {\n box-sizing: border-box;\n}\n\n.gridjs-wrapper {\n position: relative;\n z-index: 1;\n overflow: auto;\n width: 100%;\n -webkit-font-smoothing: antialiased;\n -moz-osx-font-smoothing: grayscale;\n box-shadow: 0 1px 3px 0 rgba(0, 0, 0, 0.1), 0 1px 2px 0 rgba(0, 0, 0, 0.26);\n border-radius: 8px 8px 0 0;\n display: block;\n border-top-width: 1px;\n border-color: #e5e7eb;\n}\n.gridjs-wrapper:nth-last-of-type(2) {\n border-radius: 8px;\n border-bottom-width: 1px;\n}\n\n.gridjs-search {\n float: left;\n}\n.gridjs-search-input {\n width: 250px;\n}\n\n.gridjs-loading-bar {\n z-index: 10;\n position: absolute;\n left: 0;\n right: 0;\n top: 0;\n bottom: 0;\n background-color: #fff;\n opacity: 0.5;\n}\n.gridjs-loading-bar::after {\n position: absolute;\n top: 0;\n right: 0;\n bottom: 0;\n left: 0;\n transform: translateX(-100%);\n background-image: linear-gradient(90deg, rgba(204, 204, 204, 0) 0, rgba(204, 204, 204, 0.2) 20%, rgba(204, 204, 204, 0.5) 60%, rgba(204, 204, 204, 0));\n animation: shimmer 2s infinite;\n content: "";\n}\n@keyframes shimmer {\n 100% {\n transform: translateX(100%);\n }\n}\n\n.gridjs-td .gridjs-checkbox {\n display: block;\n margin: auto;\n cursor: pointer;\n}\n\n.gridjs-resizable {\n position: absolute;\n top: 0;\n bottom: 0;\n right: 0;\n width: 5px;\n}\n.gridjs-resizable:hover {\n cursor: ew-resize;\n background-color: #9bc2f7;\n}\n/*# sourceMappingURL=mermaid.css?inline.map */';
|
|
2463
2466
|
const minMaxPercentSliderCss = 'input[type=range]::-webkit-slider-thumb {\n -webkit-appearance: none;\n pointer-events: all;\n width: 24px;\n height: 24px;\n background-color: #fff;\n border-radius: 50%;\n box-shadow: 0 0 0 1px #C6C6C6;\n cursor: pointer;\n}\n\ninput[type=range]::-moz-range-thumb {\n -webkit-appearance: none;\n pointer-events: all;\n width: 24px;\n height: 24px;\n background-color: #fff;\n border-radius: 50%;\n box-shadow: 0 0 0 1px #C6C6C6;\n cursor: pointer;\n}\n\ninput[type=range]::-webkit-slider-thumb:hover {\n background: #f7f7f7;\n}\n\ninput[type=range]::-webkit-slider-thumb:active {\n box-shadow: inset 0 0 3px #387bbe, 0 0 9px #387bbe;\n -webkit-box-shadow: inset 0 0 3px #387bbe, 0 0 9px #387bbe;\n}\n\ninput[type="range"] {\n -webkit-appearance: none;\n -moz-appearance: none;\n appearance: none;\n height: 2px;\n width: 100%;\n position: absolute;\n background-color: #C6C6C6;\n pointer-events: none;\n}';
|
|
2464
|
-
const tailwindStyle = `/*! tailwindcss v4.0.
|
|
2465
|
-
@layer theme{:root,:host{--font-sans:ui-sans-serif,system-ui,sans-serif,"Apple Color Emoji","Segoe UI Emoji","Segoe UI Symbol","Noto Color Emoji";--font-mono:ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,"Liberation Mono","Courier New",monospace;--color-red-200:oklch(.885 .062 18.334);--color-red-600:oklch(.577 .245 27.325);--color-red-700:oklch(.505 .213 27.518);--color-blue-300:oklch(.809 .105 251.813);--color-blue-600:oklch(.546 .245 262.881);--color-blue-700:oklch(.488 .243 264.376);--color-blue-800:oklch(.424 .199 265.638);--color-slate-200:oklch(.929 .013 255.508);--color-slate-500:oklch(.554 .046 257.417);--color-gray-100:oklch(.967 .003 264.542);--color-gray-200:oklch(.928 .006 264.531);--color-gray-300:oklch(.872 .01 258.338);--color-gray-400:oklch(.707 .022 261.325);--color-gray-500:oklch(.551 .027 264.364);--color-gray-600:oklch(.446 .03 256.802);--color-gray-700:oklch(.373 .034 259.733);--color-neutral-500:oklch(.556 0 0);--color-black:#000;--color-white:#fff;--spacing:.25rem;--breakpoint-lg:64rem;--container-5xl:64rem;--text-xs:.75rem;--text-xs--line-height:calc(1/.75);--text-sm:.875rem;--text-sm--line-height:calc(1.25/.875);--text-base:1rem;--text-base--line-height:calc(1.5/1);--text-lg:1.125rem;--text-lg--line-height:calc(1.75/1.125);--text-xl:1.25rem;--text-xl--line-height:calc(1.75/1.25);--text-2xl:1.5rem;--text-2xl--line-height:calc(2/1.5);--text-4xl:2.25rem;--text-4xl--line-height:calc(2.5/2.25);--font-weight-normal:400;--font-weight-medium:500;--font-weight-bold:700;--radius-sm:.25rem;--radius-md:.375rem;--radius-lg:.5rem;--default-transition-duration:.15s;--default-transition-timing-function:cubic-bezier(.4,0,.2,1);--default-font-family:var(--font-sans);--default-font-feature-settings:var(--font-sans--font-feature-settings);--default-font-variation-settings:var(--font-sans--font-variation-settings);--default-mono-font-family:var(--font-mono);--default-mono-font-feature-settings:var(--font-mono--font-feature-settings);--default-mono-font-variation-settings:var(--font-mono--font-variation-settings)}}@layer base{*,:after,:before,::backdrop{box-sizing:border-box;border:0 solid;margin:0;padding:0}::file-selector-button{box-sizing:border-box;border:0 solid;margin:0;padding:0}html,:host{-webkit-text-size-adjust:100%;-moz-tab-size:4;-o-tab-size:4;tab-size:4;line-height:1.5;font-family:var(--default-font-family,ui-sans-serif,system-ui,sans-serif,"Apple Color Emoji","Segoe UI Emoji","Segoe UI Symbol","Noto Color Emoji");font-feature-settings:var(--default-font-feature-settings,normal);font-variation-settings:var(--default-font-variation-settings,normal);-webkit-tap-highlight-color:transparent}body{line-height:inherit}hr{height:0;color:inherit;border-top-width:1px}abbr:where([title]){-webkit-text-decoration:underline dotted;text-decoration:underline dotted}h1,h2,h3,h4,h5,h6{font-size:inherit;font-weight:inherit}a{color:inherit;-webkit-text-decoration:inherit;-webkit-text-decoration:inherit;-webkit-text-decoration:inherit;text-decoration:inherit}b,strong{font-weight:bolder}code,kbd,samp,pre{font-family:var(--default-mono-font-family,ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,"Liberation Mono","Courier New",monospace);font-feature-settings:var(--default-mono-font-feature-settings,normal);font-variation-settings:var(--default-mono-font-variation-settings,normal);font-size:1em}small{font-size:80%}sub,sup{vertical-align:baseline;font-size:75%;line-height:0;position:relative}sub{bottom:-.25em}sup{top:-.5em}table{text-indent:0;border-color:inherit;border-collapse:collapse}:-moz-focusring{outline:auto}progress{vertical-align:baseline}summary{display:list-item}ol,ul,menu{list-style:none}img,svg,video,canvas,audio,iframe,embed,object{vertical-align:middle;display:block}img,video{max-width:100%;height:auto}button,input,select,optgroup,textarea{font:inherit;font-feature-settings:inherit;font-variation-settings:inherit;letter-spacing:inherit;color:inherit;opacity:1;background-color:#0000;border-radius:0}::file-selector-button{font:inherit;font-feature-settings:inherit;font-variation-settings:inherit;letter-spacing:inherit;color:inherit;opacity:1;background-color:#0000;border-radius:0}:where(select:is([multiple],[size])) optgroup{font-weight:bolder}:where(select:is([multiple],[size])) optgroup option{padding-inline-start:20px}::file-selector-button{margin-inline-end:4px}::-moz-placeholder{opacity:1;color:color-mix(in oklab,currentColor 50%,transparent)}::placeholder{opacity:1;color:color-mix(in oklab,currentColor 50%,transparent)}textarea{resize:vertical}::-webkit-search-decoration{-webkit-appearance:none}::-webkit-date-and-time-value{min-height:1lh;text-align:inherit}::-webkit-datetime-edit{display:inline-flex}::-webkit-datetime-edit-fields-wrapper{padding:0}::-webkit-datetime-edit{padding-block:0}::-webkit-datetime-edit-year-field{padding-block:0}::-webkit-datetime-edit-month-field{padding-block:0}::-webkit-datetime-edit-day-field{padding-block:0}::-webkit-datetime-edit-hour-field{padding-block:0}::-webkit-datetime-edit-minute-field{padding-block:0}::-webkit-datetime-edit-second-field{padding-block:0}::-webkit-datetime-edit-millisecond-field{padding-block:0}::-webkit-datetime-edit-meridiem-field{padding-block:0}:-moz-ui-invalid{box-shadow:none}button,input:where([type=button],[type=reset],[type=submit]){-webkit-appearance:button;-moz-appearance:button;appearance:button}::file-selector-button{-webkit-appearance:button;-moz-appearance:button;appearance:button}::-webkit-inner-spin-button{height:auto}::-webkit-outer-spin-button{height:auto}[hidden]:where(:not([hidden=until-found])){display:none!important}:where(:root),:root:has(input.theme-controller[value=light]:checked),[data-theme=light]{color-scheme:light;--color-base-100:oklch(100% 0 0);--color-base-200:oklch(98% 0 0);--color-base-300:oklch(95% 0 0);--color-base-content:oklch(21% .006 285.885);--color-primary:oklch(45% .24 277.023);--color-primary-content:oklch(93% .034 272.788);--color-secondary:oklch(65% .241 354.308);--color-secondary-content:oklch(94% .028 342.258);--color-accent:oklch(77% .152 181.912);--color-accent-content:oklch(38% .063 188.416);--color-neutral:oklch(14% .005 285.823);--color-neutral-content:oklch(92% .004 286.32);--color-info:oklch(74% .16 232.661);--color-info-content:oklch(29% .066 243.157);--color-success:oklch(76% .177 163.223);--color-success-content:oklch(37% .077 168.94);--color-warning:oklch(82% .189 84.429);--color-warning-content:oklch(41% .112 45.904);--color-error:oklch(71% .194 13.428);--color-error-content:oklch(27% .105 12.094);--radius-selector:.5rem;--radius-field:.25rem;--radius-box:.5rem;--size-selector:.25rem;--size-field:.25rem;--border:1px;--depth:1;--noise:0}@property --radialprogress{syntax: "<percentage>"; inherits: true; initial-value: 0%;}:root{scrollbar-color:color-mix(in oklch,currentColor 35%,#0000)#0000}:root:has(.modal-open,.modal[open],.modal:target,.modal-toggle:checked,.drawer:not([class*=drawer-open])>.drawer-toggle:checked){overflow:hidden}:root,[data-theme]{background-color:var(--root-bg,var(--color-base-100));color:var(--color-base-content)}:root{--fx-noise:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg'%3E%3Cfilter id='a'%3E%3CfeTurbulence type='fractalNoise' baseFrequency='1.34' numOctaves='4' stitchTiles='stitch'%3E%3C/feTurbulence%3E%3C/filter%3E%3Crect width='100%25' height='100%25' filter='url(%23a)' opacity='0.2'%3E%3C/rect%3E%3C/svg%3E")}.chat{--mask-chat:url("data:image/svg+xml,%3csvg width='13' height='13' xmlns='http://www.w3.org/2000/svg'%3e%3cpath fill='black' d='M0 11.5004C0 13.0004 2 13.0004 2 13.0004H12H13V0.00036329L12.5 0C12.5 0 11.977 2.09572 11.8581 2.50033C11.6075 3.35237 10.9149 4.22374 9 5.50036C6 7.50036 0 10.0004 0 11.5004Z'/%3e%3c/svg%3e")}:where(:root:has(.modal-open,.modal[open],.modal:target,.modal-toggle:checked,.drawer:not(.drawer-open)>.drawer-toggle:checked)){scrollbar-gutter:stable;background-image:linear-gradient(var(--color-base-100),var(--color-base-100));--root-bg:color-mix(in srgb,var(--color-base-100),oklch(0% 0 0) 40%)}}@layer components;@layer utilities{.diff{webkit-user-select:none;-webkit-user-select:none;-moz-user-select:none;user-select:none;direction:ltr;grid-template-columns:auto 1fr;width:100%;display:grid;position:relative;overflow:hidden;container-type:inline-size}.diff:focus-visible,.diff:has(.diff-item-1:focus),.diff:focus-visible{outline-style:var(--tw-outline-style);outline-offset:1px;outline-width:2px;outline-color:var(--color-base-content)}.diff:focus-visible .diff-resizer{min-width:90cqi;max-width:90cqi}.diff:has(.diff-item-2:focus-visible){outline-style:var(--tw-outline-style);outline-offset:1px;outline-width:2px}.diff:has(.diff-item-2:focus-visible) .diff-resizer{min-width:10cqi;max-width:10cqi}@supports (-webkit-overflow-scrolling:touch) and (overflow:-webkit-paged-x){.diff:focus .diff-resizer{min-width:10cqi;max-width:10cqi}.diff:has(.diff-item-1:focus) .diff-resizer{min-width:90cqi;max-width:90cqi}}.\\@container{container-type:inline-size}.modal{pointer-events:none;visibility:hidden;width:100%;max-width:none;height:100%;max-height:none;color:inherit;transition:transform .3s ease-out,visibility .3s allow-discrete,background-color .3s ease-out,opacity .1s ease-out;overscroll-behavior:contain;z-index:999;background-color:#0000;place-items:center;margin:0;padding:0;display:grid;position:fixed;inset:0;overflow:hidden}.modal::backdrop{display:none}.modal.modal-open,.modal[open],.modal:target{pointer-events:auto;visibility:visible;opacity:1;background-color:oklch(0% 0 0/.4);transition:transform .3s ease-out,background-color .3s ease-out,opacity .1s ease-out}:is(.modal.modal-open,.modal[open],.modal:target) .modal-box{opacity:1;translate:0;scale:1}@starting-style{.modal.modal-open,.modal[open],.modal:target{visibility:hidden;opacity:0}}.tooltip{--tt-bg:var(--color-neutral);--tt-off:calc(100% + .5rem);--tt-tail:calc(100% + 1px + .25rem);display:inline-block;position:relative}.tooltip>:where(.tooltip-content),.tooltip[data-tip]:before{border-radius:var(--radius-field);text-align:center;white-space:normal;max-width:20rem;color:var(--color-neutral-content);opacity:0;background-color:var(--tt-bg);pointer-events:none;z-index:1;--tw-content:attr(data-tip);content:var(--tw-content);width:-moz-max-content;width:max-content;padding-block:.25rem;padding-inline:.5rem;font-size:.875rem;line-height:1.25em;transition:opacity .2s cubic-bezier(.4,0,.2,1) 75ms,transform .2s cubic-bezier(.4,0,.2,1) 75ms;position:absolute}.tooltip:after{opacity:0;background-color:var(--tt-bg);content:"";pointer-events:none;--mask-tooltip:url("data:image/svg+xml,%3Csvg width='10' height='4' viewBox='0 0 8 4' fill='none' xmlns='http://www.w3.org/2000/svg'%3E%3Cpath d='M0.500009 1C3.5 1 3.00001 4 5.00001 4C7 4 6.5 1 9.5 1C10 1 10 0.499897 10 0H0C-1.99338e-08 0.5 0 1 0.500009 1Z' fill='black'/%3E%3C/svg%3E%0A");width:.625rem;height:.25rem;-webkit-mask-position:-1px 0;mask-position:-1px 0;-webkit-mask-repeat:no-repeat;mask-repeat:no-repeat;-webkit-mask-image:var(--mask-tooltip);-webkit-mask-image:var(--mask-tooltip);mask-image:var(--mask-tooltip);transition:opacity .2s cubic-bezier(.4,0,.2,1) 75ms,transform .2s cubic-bezier(.4,0,.2,1) 75ms;display:block;position:absolute}:is(.tooltip.tooltip-open,.tooltip[data-tip]:hover,.tooltip:hover,.tooltip:has(:focus-visible))>.tooltip-content,:is(.tooltip.tooltip-open,.tooltip[data-tip]:hover,.tooltip:hover,.tooltip:has(:focus-visible))[data-tip]:before,:is(.tooltip.tooltip-open,.tooltip[data-tip]:hover,.tooltip:hover,.tooltip:has(:focus-visible)):after{opacity:1;--tt-pos:0rem;transition:opacity .2s cubic-bezier(.4,0,.2,1),transform .2s cubic-bezier(.4,0,.2,1)}.tooltip>.tooltip-content,.tooltip[data-tip]:before{transform:translateX(-50%)translateY(var(--tt-pos,.25rem));inset:auto auto var(--tt-off)50%}.tooltip:after{transform:translateX(-50%)translateY(var(--tt-pos,.25rem));inset:auto auto var(--tt-tail)50%}.tab{cursor:pointer;-webkit-appearance:none;-moz-appearance:none;appearance:none;text-align:center;webkit-user-select:none;-webkit-user-select:none;-moz-user-select:none;user-select:none;--tab-p:1rem;--tab-bg:var(--color-base-100);--tab-border-color:var(--color-base-300);--tab-radius-ss:0;--tab-radius-se:0;--tab-radius-es:0;--tab-radius-ee:0;--tab-order:0;--tab-radius-min:calc(.75rem - var(--border));flex-wrap:wrap;order:var(--tab-order);height:calc(var(--size-field,.25rem)*10);border-color:#0000;justify-content:center;align-items:center;padding-inline-start:var(--tab-p);padding-inline-end:var(--tab-p);font-size:.875rem;display:inline-flex;position:relative}@media (hover:hover){.tab:hover{color:var(--color-base-content)}}.tab:is(input[type=radio]){min-width:-moz-fit-content;min-width:fit-content}.tab:is(input[type=radio]):after{content:attr(aria-label)}.tab:is(label){position:relative}.tab:is(label) input{cursor:pointer;-webkit-appearance:none;-moz-appearance:none;appearance:none;opacity:0;position:absolute;inset:0}:is(.tab:checked,.tab:is(label:has(:checked)),.tab:is(.tab-active,[aria-selected=true]))+.tab-content{height:100%;display:block}.tab:not(:checked,label:has(:checked),:hover,.tab-active,[aria-selected=true]){color:color-mix(in oklab,var(--color-base-content)50%,transparent)}.tab:not(input):empty{cursor:default;flex-grow:1}.tab:focus{--tw-outline-style:none;outline-style:none}@media (forced-colors:active){.tab:focus{outline-offset:2px;outline:2px solid #0000}}.tab:focus-visible,.tab:is(label:has(:checked:focus-visible)){outline-offset:-5px;outline:2px solid}.tab[disabled]{pointer-events:none;opacity:.4}.menu{--menu-active-fg:var(--color-neutral-content);--menu-active-bg:var(--color-neutral);flex-flow:column wrap;width:-moz-fit-content;width:fit-content;padding:.5rem;font-size:.875rem;display:flex}.menu :where(li ul){white-space:nowrap;margin-inline-start:1rem;padding-inline-start:.5rem;position:relative}.menu :where(li ul):before{background-color:var(--color-base-content);opacity:.1;width:var(--border);content:"";inset-inline-start:0;position:absolute;top:.75rem;bottom:.75rem}.menu :where(li>.menu-dropdown:not(.menu-dropdown-show)){display:none}.menu :where(li:not(.menu-title)>:not(ul,details,.menu-title,.btn)),.menu :where(li:not(.menu-title)>details>summary:not(.menu-title)){border-radius:var(--radius-field);text-align:start;text-wrap:balance;-webkit-user-select:none;-moz-user-select:none;user-select:none;grid-auto-columns:minmax(auto,max-content) auto max-content;grid-auto-flow:column;align-content:flex-start;align-items:center;gap:.5rem;padding-block:.375rem;padding-inline:.75rem;transition-property:color,background-color,box-shadow;transition-duration:.2s;transition-timing-function:cubic-bezier(0,0,.2,1);display:grid}.menu :where(li>details>summary){--tw-outline-style:none;outline-style:none}@media (forced-colors:active){.menu :where(li>details>summary){outline-offset:2px;outline:2px solid #0000}}.menu :where(li>details>summary)::-webkit-details-marker{display:none}:is(.menu :where(li>details>summary),.menu :where(li>.menu-dropdown-toggle)):after{content:"";transform-origin:50%;pointer-events:none;justify-self:flex-end;width:.375rem;height:.375rem;transition-property:rotate,translate;transition-duration:.2s;display:block;translate:0 -1px;rotate:-135deg;box-shadow:inset 2px 2px}.menu :where(li>details[open]>summary):after,.menu :where(li>.menu-dropdown-toggle.menu-dropdown-show):after{translate:0 1px;rotate:45deg}.menu :where(li:not(.menu-title,.disabled)>:not(ul,details,.menu-title),li:not(.menu-title,.disabled)>details>summary:not(.menu-title)):not(.menu-active,:active,.btn).menu-focus,.menu :where(li:not(.menu-title,.disabled)>:not(ul,details,.menu-title),li:not(.menu-title,.disabled)>details>summary:not(.menu-title)):not(.menu-active,:active,.btn):focus-visible{cursor:pointer;background-color:color-mix(in oklab,var(--color-base-content)10%,transparent);color:var(--color-base-content);--tw-outline-style:none;outline-style:none}@media (forced-colors:active){:is(.menu :where(li:not(.menu-title,.disabled)>:not(ul,details,.menu-title),li:not(.menu-title,.disabled)>details>summary:not(.menu-title)):not(.menu-active,:active,.btn).menu-focus,.menu :where(li:not(.menu-title,.disabled)>:not(ul,details,.menu-title),li:not(.menu-title,.disabled)>details>summary:not(.menu-title)):not(.menu-active,:active,.btn):focus-visible){outline-offset:2px;outline:2px solid #0000}}.menu :where(li:not(.menu-title,.disabled)>:not(ul,details,.menu-title):not(.menu-active,:active,.btn):hover,li:not(.menu-title,.disabled)>details>summary:not(.menu-title):not(.menu-active,:active,.btn):hover){cursor:pointer;background-color:color-mix(in oklab,var(--color-base-content)10%,transparent);--tw-outline-style:none;outline-style:none;box-shadow:inset 0 1px oklch(0% 0 0/.01),inset 0 -1px oklch(100% 0 0/.01)}@media (forced-colors:active){.menu :where(li:not(.menu-title,.disabled)>:not(ul,details,.menu-title):not(.menu-active,:active,.btn):hover,li:not(.menu-title,.disabled)>details>summary:not(.menu-title):not(.menu-active,:active,.btn):hover){outline-offset:2px;outline:2px solid #0000}}.menu :where(li:empty){background-color:var(--color-base-content);opacity:.1;height:1px;margin:.5rem 1rem}.menu :where(li){flex-flow:column wrap;flex-shrink:0;align-items:stretch;display:flex;position:relative}.menu :where(li) .badge{justify-self:flex-end}.menu :where(li)>:not(ul,.menu-title,details,.btn):active,.menu :where(li)>:not(ul,.menu-title,details,.btn).menu-active,.menu :where(li)>details>summary:active{--tw-outline-style:none;color:var(--menu-active-fg);background-color:var(--menu-active-bg);background-size:auto,calc(var(--noise)*100%);background-image:none,var(--fx-noise);outline-style:none}@media (forced-colors:active){:is(.menu :where(li)>:not(ul,.menu-title,details,.btn):active,.menu :where(li)>:not(ul,.menu-title,details,.btn).menu-active,.menu :where(li)>details>summary:active){outline-offset:2px;outline:2px solid #0000}}:is(.menu :where(li)>:not(ul,.menu-title,details,.btn):active,.menu :where(li)>:not(ul,.menu-title,details,.btn).menu-active,.menu :where(li)>details>summary:active):not(:is(.menu :where(li)>:not(ul,.menu-title,details,.btn):active,.menu :where(li)>:not(ul,.menu-title,details,.btn).menu-active,.menu :where(li)>details>summary:active):active){box-shadow:0 2px calc(var(--depth)*3px)-2px var(--menu-active-bg)}.menu :where(li).menu-disabled{pointer-events:none;color:color-mix(in oklab,var(--color-base-content)20%,transparent)}.menu .dropdown:focus-within .menu-dropdown-toggle:after{translate:0 1px;rotate:45deg}.menu .dropdown-content{margin-top:.5rem;padding:.5rem}.menu .dropdown-content:before{display:none}.dropdown{position-area:var(--anchor-v,bottom)var(--anchor-h,span-right);display:inline-block;position:relative}.dropdown>:not(summary):focus{--tw-outline-style:none;outline-style:none}@media (forced-colors:active){.dropdown>:not(summary):focus{outline-offset:2px;outline:2px solid #0000}}.dropdown .dropdown-content{position:absolute}.dropdown:not(details,.dropdown-open,.dropdown-hover:hover,:focus-within) .dropdown-content{transform-origin:top;opacity:0;display:none;scale:95%}.dropdown[popover],.dropdown .dropdown-content{z-index:999;transition-behavior:allow-discrete;transition-property:opacity,scale,display;transition-duration:.2s;transition-timing-function:cubic-bezier(.4,0,.2,1);animation:.2s dropdown}@starting-style{.dropdown[popover],.dropdown .dropdown-content{opacity:0;scale:95%}}:is(.dropdown.dropdown-open,.dropdown:not(.dropdown-hover):focus,.dropdown:focus-within)>[tabindex]:first-child{pointer-events:none}:is(.dropdown.dropdown-open,.dropdown:not(.dropdown-hover):focus,.dropdown:focus-within) .dropdown-content{opacity:1}.dropdown.dropdown-hover:hover .dropdown-content{opacity:1;scale:100%}.dropdown:is(details) summary::-webkit-details-marker{display:none}:is(.dropdown.dropdown-open,.dropdown:focus,.dropdown:focus-within) .dropdown-content{scale:100%}.dropdown:where([popover]){background:0 0}.dropdown[popover]{color:inherit;position:fixed}@supports not (position-area:bottom){.dropdown[popover]{margin:auto}.dropdown[popover].dropdown-open:not(:popover-open){transform-origin:top;opacity:0;display:none;scale:95%}.dropdown[popover]::backdrop{background-color:oklab(0% none none/.3)}}.dropdown[popover]:not(.dropdown-open,:popover-open){transform-origin:top;opacity:0;display:none;scale:95%}.btn{cursor:pointer;text-align:center;vertical-align:middle;outline-offset:2px;webkit-user-select:none;-webkit-user-select:none;-moz-user-select:none;user-select:none;padding-inline:var(--btn-p);color:var(--btn-fg);--tw-prose-links:var(--btn-fg);height:var(--size);font-size:var(--fontsize,.875rem);outline-color:var(--btn-color,var(--color-base-content));background-color:var(--btn-bg);background-size:auto,calc(var(--noise)*100%);background-image:none,var(--btn-noise);border-width:var(--border);border-style:solid;border-color:var(--btn-border);text-shadow:0 .5px oklch(100% 0 0/calc(var(--depth)*.15));box-shadow:0 .5px 0 .5px oklch(100% 0 0/calc(var(--depth)*6%))inset,var(--btn-shadow);--size:calc(var(--size-field,.25rem)*10);--btn-bg:var(--btn-color,var(--color-base-200));--btn-fg:var(--color-base-content);--btn-p:1rem;--btn-border:color-mix(in oklab,var(--btn-bg),#000 calc(var(--depth)*5%));--btn-shadow:0 3px 2px -2px color-mix(in oklab,var(--btn-bg)calc(var(--depth)*30%),#0000),0 4px 3px -2px color-mix(in oklab,var(--btn-bg)calc(var(--depth)*30%),#0000);--btn-noise:var(--fx-noise);border-start-start-radius:var(--join-ss,var(--radius-field));border-start-end-radius:var(--join-se,var(--radius-field));border-end-end-radius:var(--join-ee,var(--radius-field));border-end-start-radius:var(--join-es,var(--radius-field));flex-wrap:nowrap;flex-shrink:0;justify-content:center;align-items:center;gap:.375rem;font-weight:600;transition-property:color,background-color,border-color,box-shadow;transition-duration:.2s;transition-timing-function:cubic-bezier(0,0,.2,1);display:inline-flex}.prose .btn{text-decoration-line:none}@media (hover:hover){.btn:hover{--btn-bg:color-mix(in oklab,var(--btn-color,var(--color-base-200)),#000 7%)}}.btn:focus-visible{outline-width:2px;outline-style:solid}.btn:active:not(.btn-active){--btn-bg:color-mix(in oklab,var(--btn-color,var(--color-base-200)),#000 5%);--btn-border:color-mix(in oklab,var(--btn-color,var(--color-base-200)),#000 7%);--btn-shadow:0 0 0 0 oklch(0% 0 0/0),0 0 0 0 oklch(0% 0 0/0);translate:0 .5px}.btn:is(:disabled,[disabled],.btn-disabled){pointer-events:none;--btn-border:#0000;--btn-noise:none;--btn-fg:color-mix(in oklch,var(--color-base-content)20%,#0000)}.btn:is(:disabled,[disabled],.btn-disabled):not(.btn-link,.btn-ghost){background-color:color-mix(in oklab,var(--color-base-content)10%,transparent);box-shadow:none}@media (hover:hover){.btn:is(:disabled,[disabled],.btn-disabled):hover{pointer-events:none;background-color:color-mix(in oklab,var(--color-neutral)20%,transparent);--btn-border:#0000;--btn-fg:color-mix(in oklch,var(--color-base-content)20%,#0000)}}.btn:is(input[type=checkbox],input[type=radio]){-webkit-appearance:none;-moz-appearance:none;appearance:none}.btn:is(input[type=checkbox],input[type=radio]):after{content:attr(aria-label)}.btn:where(input:checked:not(.filter .btn)){--btn-color:var(--color-primary);--btn-fg:var(--color-primary-content);isolation:isolate}.loading{pointer-events:none;aspect-ratio:1;vertical-align:middle;width:calc(var(--size-selector,.25rem)*6);background-color:currentColor;display:inline-block;-webkit-mask-image:url("data:image/svg+xml,%3Csvg width='24' height='24' stroke='black' viewBox='0 0 24 24' xmlns='http://www.w3.org/2000/svg'%3E%3Cg transform-origin='center'%3E%3Ccircle cx='12' cy='12' r='9.5' fill='none' stroke-width='3' stroke-linecap='round'%3E%3CanimateTransform attributeName='transform' type='rotate' from='0 12 12' to='360 12 12' dur='2s' repeatCount='indefinite'/%3E%3Canimate attributeName='stroke-dasharray' values='0,150;42,150;42,150' keyTimes='0;0.475;1' dur='1.5s' repeatCount='indefinite'/%3E%3Canimate attributeName='stroke-dashoffset' values='0;-16;-59' keyTimes='0;0.475;1' dur='1.5s' repeatCount='indefinite'/%3E%3C/circle%3E%3C/g%3E%3C/svg%3E");mask-image:url("data:image/svg+xml,%3Csvg width='24' height='24' stroke='black' viewBox='0 0 24 24' xmlns='http://www.w3.org/2000/svg'%3E%3Cg transform-origin='center'%3E%3Ccircle cx='12' cy='12' r='9.5' fill='none' stroke-width='3' stroke-linecap='round'%3E%3CanimateTransform attributeName='transform' type='rotate' from='0 12 12' to='360 12 12' dur='2s' repeatCount='indefinite'/%3E%3Canimate attributeName='stroke-dasharray' values='0,150;42,150;42,150' keyTimes='0;0.475;1' dur='1.5s' repeatCount='indefinite'/%3E%3Canimate attributeName='stroke-dashoffset' values='0;-16;-59' keyTimes='0;0.475;1' dur='1.5s' repeatCount='indefinite'/%3E%3C/circle%3E%3C/g%3E%3C/svg%3E");-webkit-mask-position:50%;mask-position:50%;-webkit-mask-size:100%;mask-size:100%;-webkit-mask-repeat:no-repeat;mask-repeat:no-repeat}.invisible{visibility:hidden}.visible{visibility:visible}.list{flex-direction:column;font-size:.875rem;display:flex}.list :where(.list-row){--list-grid-cols:minmax(0,auto)1fr;border-radius:var(--radius-box);word-break:break-word;grid-auto-flow:column;grid-template-columns:var(--list-grid-cols);gap:1rem;padding:1rem;display:grid;position:relative}.list :where(.list-row):has(.list-col-grow:first-child){--list-grid-cols:1fr}.list :where(.list-row):has(.list-col-grow:nth-child(2)){--list-grid-cols:minmax(0,auto)1fr}.list :where(.list-row):has(.list-col-grow:nth-child(3)){--list-grid-cols:minmax(0,auto)minmax(0,auto)1fr}.list :where(.list-row):has(.list-col-grow:nth-child(4)){--list-grid-cols:minmax(0,auto)minmax(0,auto)minmax(0,auto)1fr}.list :where(.list-row):has(.list-col-grow:nth-child(5)){--list-grid-cols:minmax(0,auto)minmax(0,auto)minmax(0,auto)minmax(0,auto)1fr}.list :where(.list-row):has(.list-col-grow:nth-child(6)){--list-grid-cols:minmax(0,auto)minmax(0,auto)minmax(0,auto)minmax(0,auto)minmax(0,auto)1fr}.list :where(.list-row) :not(.list-col-wrap){grid-row-start:1}:is(.list>:not(:last-child).list-row,.list>:not(:last-child) .list-row):after{content:"";border-bottom:var(--border)solid;inset-inline:var(--radius-box);border-color:color-mix(in oklab,var(--color-base-content)5%,transparent);position:absolute;bottom:0}.toggle{border:var(--border)solid currentColor;color:var(--input-color);cursor:pointer;-webkit-appearance:none;-moz-appearance:none;appearance:none;vertical-align:middle;webkit-user-select:none;-webkit-user-select:none;-moz-user-select:none;user-select:none;--radius-selector-max:calc(var(--radius-selector) + var(--radius-selector) + var(--radius-selector));border-radius:calc(var(--radius-selector) + min(var(--toggle-p),var(--radius-selector-max)) + min(var(--border),var(--radius-selector-max)));padding:var(--toggle-p);box-shadow:0 1px color-mix(in oklab,currentColor calc(var(--depth)*10%),#0000)inset;--input-color:color-mix(in oklab,var(--color-base-content)50%,#0000);--toggle-p:.1875rem;--size:calc(var(--size-selector,.25rem)*6);width:calc((var(--size)*2) - (var(--border) + var(--toggle-p))*2);height:var(--size);flex-shrink:0;grid-template-columns:0fr 1fr 1fr;place-content:center;transition:color .3s,grid-template-columns .2s;display:inline-grid;position:relative}.toggle>*{z-index:1;cursor:pointer;-webkit-appearance:none;-moz-appearance:none;appearance:none;background-color:#0000;border:none;grid-column:2/span 1;grid-row-start:1;height:100%;padding:.125rem;transition:opacity .2s,rotate .4s}.toggle>:focus{--tw-outline-style:none;outline-style:none}@media (forced-colors:active){.toggle>:focus{outline-offset:2px;outline:2px solid #0000}}.toggle>:nth-child(2){color:var(--color-base-100);rotate:none}.toggle>:nth-child(3){color:var(--color-base-100);opacity:0;rotate:-15deg}.toggle:has(:checked)>:nth-child(2){opacity:0;rotate:15deg}.toggle:has(:checked)>:nth-child(3){opacity:1;rotate:none}.toggle:before{aspect-ratio:1;border-radius:var(--radius-selector);--tw-content:"";content:var(--tw-content);height:100%;box-shadow:0 -1px oklch(0% 0 0/calc(var(--depth)*.1))inset,0 8px 0 -4px oklch(100% 0 0/calc(var(--depth)*.1))inset,0 1px color-mix(in oklab,currentColor calc(var(--depth)*10%),#0000);background-color:currentColor;background-size:auto,calc(var(--noise)*100%);background-image:none,var(--fx-noise);grid-row-start:1;grid-column-start:2;transition:background-color .1s,translate .2s,inset-inline-start .2s;position:relative;inset-inline-start:0;translate:0}@media (forced-colors:active){.toggle:before{outline-style:var(--tw-outline-style);outline-offset:calc(1px*-1);outline-width:1px}}@media print{.toggle:before{outline-offset:-1rem;outline:.25rem solid}}.toggle:focus-visible,.toggle:has(:focus-visible){outline-offset:2px;outline:2px solid}.toggle:checked,.toggle[aria-checked=true],.toggle:has(>input:checked){background-color:var(--color-base-100);--input-color:var(--color-base-content);grid-template-columns:1fr 1fr 0fr}:is(.toggle:checked,.toggle[aria-checked=true],.toggle:has(>input:checked)):before{background-color:currentColor}@starting-style{:is(.toggle:checked,.toggle[aria-checked=true],.toggle:has(>input:checked)):before{opacity:0}}.toggle:indeterminate{grid-template-columns:.5fr 1fr .5fr}.toggle:disabled{cursor:not-allowed;opacity:.3}.toggle:disabled:before{border:var(--border)solid currentColor;background-color:#0000}.input{cursor:text;border:var(--border)solid #0000;-webkit-appearance:none;-moz-appearance:none;appearance:none;background-color:var(--color-base-100);vertical-align:middle;white-space:nowrap;width:clamp(3rem,20rem,100%);height:var(--size);border-color:var(--input-color);box-shadow:0 1px color-mix(in oklab,var(--input-color)calc(var(--depth)*10%),#0000)inset,0 -1px oklch(100% 0 0/calc(var(--depth)*.1))inset;--size:calc(var(--size-field,.25rem)*10);--input-color:color-mix(in oklab,var(--color-base-content)20%,#0000);border-start-start-radius:var(--join-ss,var(--radius-field));border-start-end-radius:var(--join-se,var(--radius-field));border-end-end-radius:var(--join-ee,var(--radius-field));border-end-start-radius:var(--join-es,var(--radius-field));flex-shrink:1;align-items:center;gap:.5rem;padding-inline:.75rem;font-size:.875rem;display:inline-flex;position:relative}.input:where(input){display:inline-flex}.input :where(input){-webkit-appearance:none;-moz-appearance:none;appearance:none;background-color:#0000;border:none;width:100%;height:100%;display:inline-flex}.input :where(input):focus,.input :where(input):focus-within{--tw-outline-style:none;outline-style:none}@media (forced-colors:active){:is(.input :where(input):focus,.input :where(input):focus-within){outline-offset:2px;outline:2px solid #0000}}.input:focus,.input:focus-within{--input-color:var(--color-base-content);box-shadow:0 1px color-mix(in oklab,var(--input-color)calc(var(--depth)*10%),#0000);outline:2px solid var(--input-color);outline-offset:2px;isolation:isolate}.input:has(>input[disabled]),.input:is(:disabled,[disabled]){cursor:not-allowed;border-color:var(--color-base-200);background-color:var(--color-base-200);color:color-mix(in oklab,var(--color-base-content)40%,transparent);box-shadow:none}:is(.input:has(>input[disabled]),.input:is(:disabled,[disabled]))::-moz-placeholder{color:color-mix(in oklab,var(--color-base-content)20%,transparent)}:is(.input:has(>input[disabled]),.input:is(:disabled,[disabled]))::placeholder{color:color-mix(in oklab,var(--color-base-content)20%,transparent)}.input:has(>input[disabled])>input[disabled]{cursor:not-allowed}.input::-webkit-date-and-time-value{text-align:inherit}.input[type=number]::-webkit-inner-spin-button{margin-block:-.75rem;margin-inline-end:-.75rem}.input::-webkit-calendar-picker-indicator{position:absolute;inset-inline-end:.75em}.indicator{width:-moz-max-content;width:max-content;display:inline-flex;position:relative}.indicator :where(.indicator-item){z-index:1;white-space:nowrap;top:var(--inidicator-t,0);bottom:var(--inidicator-b,auto);left:var(--inidicator-s,auto);right:var(--inidicator-e,0);translate:var(--inidicator-x,50%)var(--indicator-y,-50%);position:absolute}.table{border-radius:var(--radius-box);text-align:left;width:100%;font-size:.875rem;position:relative}.table:where(:dir(rtl),[dir=rtl],[dir=rtl] *){text-align:right}@media (hover:hover){:is(.table tr.row-hover,.table tr.row-hover:nth-child(2n)):hover{background-color:var(--color-base-200)}}.table :where(th,td){vertical-align:middle;padding-block:.75rem;padding-inline:1rem}.table :where(thead,tfoot){white-space:nowrap;color:color-mix(in oklab,var(--color-base-content)60%,transparent);font-size:.875rem;font-weight:600}.table :where(tfoot){border-top:var(--border)solid color-mix(in oklch,var(--color-base-content)5%,#0000)}.table :where(.table-pin-rows thead tr){z-index:1;background-color:var(--color-base-100);position:sticky;top:0}.table :where(.table-pin-rows tfoot tr){z-index:1;background-color:var(--color-base-100);position:sticky;bottom:0}.table :where(.table-pin-cols tr th){background-color:var(--color-base-100);position:sticky;left:0;right:0}.table :where(thead tr,tbody tr:not(:last-child)){border-bottom:var(--border)solid color-mix(in oklch,var(--color-base-content)5%,#0000)}.steps{counter-reset:step;grid-auto-columns:1fr;grid-auto-flow:column;display:inline-grid;overflow:auto hidden}.steps .step{text-align:center;--step-bg:var(--color-base-300);--step-fg:var(--color-base-content);grid-template-rows:40px 1fr;grid-template-columns:auto;place-items:center;min-width:4rem;display:grid}.steps .step:before{width:100%;height:.5rem;color:var(--step-bg);background-color:var(--step-bg);--tw-content:"";content:var(--tw-content);border:1px solid;grid-row-start:1;grid-column-start:1;margin-inline-start:-100%;top:0}.steps .step>.step-icon,.steps .step:not(:has(.step-icon)):after{content:counter(step);counter-increment:step;z-index:1;color:var(--step-fg);background-color:var(--step-bg);border:1px solid var(--step-bg);border-radius:3.40282e38px;grid-row-start:1;grid-column-start:1;place-self:center;place-items:center;width:2rem;height:2rem;display:grid;position:relative}.steps .step:first-child:before{content:none}.steps .step[data-content]:after{content:attr(data-content)}.steps .step-neutral+.step-neutral:before,.steps .step-neutral:after,.steps .step-neutral>.step-icon{--step-bg:var(--color-neutral);--step-fg:var(--color-neutral-content)}.steps .step-primary+.step-primary:before,.steps .step-primary:after,.steps .step-primary>.step-icon{--step-bg:var(--color-primary);--step-fg:var(--color-primary-content)}.steps .step-secondary+.step-secondary:before,.steps .step-secondary:after,.steps .step-secondary>.step-icon{--step-bg:var(--color-secondary);--step-fg:var(--color-secondary-content)}.steps .step-accent+.step-accent:before,.steps .step-accent:after,.steps .step-accent>.step-icon{--step-bg:var(--color-accent);--step-fg:var(--color-accent-content)}.steps .step-info+.step-info:before,.steps .step-info:after,.steps .step-info>.step-icon{--step-bg:var(--color-info);--step-fg:var(--color-info-content)}.steps .step-success+.step-success:before,.steps .step-success:after,.steps .step-success>.step-icon{--step-bg:var(--color-success);--step-fg:var(--color-success-content)}.steps .step-warning+.step-warning:before,.steps .step-warning:after,.steps .step-warning>.step-icon{--step-bg:var(--color-warning);--step-fg:var(--color-warning-content)}.steps .step-error+.step-error:before,.steps .step-error:after,.steps .step-error>.step-icon{--step-bg:var(--color-error);--step-fg:var(--color-error-content)}.range{-webkit-appearance:none;-moz-appearance:none;appearance:none;webkit-appearance:none;--range-thumb:var(--color-base-100);--range-thumb-size:calc(var(--size-selector,.25rem)*6);--range-progress:currentColor;--range-fill:1;--range-p:.25rem;--range-bg:color-mix(in oklab,currentColor 10%,#0000);cursor:pointer;vertical-align:middle;--radius-selector-max:calc(var(--radius-selector) + var(--radius-selector) + var(--radius-selector));border-radius:calc(var(--radius-selector) + min(var(--range-p),var(--radius-selector-max)));width:clamp(3rem,20rem,100%);height:var(--range-thumb-size);background-color:#0000;border:none;overflow:hidden}[dir=rtl] .range{--range-dir:-1}.range:focus{outline:none}.range:focus-visible{outline-offset:2px;outline:2px solid}.range::-webkit-slider-runnable-track{background-color:var(--range-bg);border-radius:var(--radius-selector);width:100%;height:calc(var(--range-thumb-size)*.5)}@media (forced-colors:active){.range::-webkit-slider-runnable-track{border:1px solid}.range::-moz-range-track{border:1px solid}}.range::-webkit-slider-thumb{box-sizing:border-box;border-radius:calc(var(--radius-selector) + min(var(--range-p),var(--radius-selector-max)));height:var(--range-thumb-size);width:var(--range-thumb-size);border:var(--range-p)solid;-webkit-appearance:none;appearance:none;webkit-appearance:none;color:var(--range-progress);box-shadow:0 -1px oklch(0% 0 0/calc(var(--depth)*.1))inset,0 8px 0 -4px oklch(100% 0 0/calc(var(--depth)*.1))inset,0 1px color-mix(in oklab,currentColor calc(var(--depth)*10%),#0000),0 0 0 2rem var(--range-thumb)inset,calc((var(--range-dir,1)*-100rem) - (var(--range-dir,1)*var(--range-thumb-size)/2))0 0 calc(100rem*var(--range-fill));background-color:currentColor;position:relative;top:50%;transform:translateY(-50%)}.range::-moz-range-track{background-color:var(--range-bg);border-radius:var(--radius-selector);width:100%;height:calc(var(--range-thumb-size)*.5)}.range::-moz-range-thumb{box-sizing:border-box;border-radius:calc(var(--radius-selector) + min(var(--range-p),var(--radius-selector-max)));height:var(--range-thumb-size);width:var(--range-thumb-size);border:var(--range-p)solid;color:var(--range-progress);box-shadow:0 -1px oklch(0% 0 0/calc(var(--depth)*.1))inset,0 8px 0 -4px oklch(100% 0 0/calc(var(--depth)*.1))inset,0 1px color-mix(in oklab,currentColor calc(var(--depth)*10%),#0000),0 0 0 2rem var(--range-thumb)inset,calc((var(--range-dir,1)*-100rem) - (var(--range-dir,1)*var(--range-thumb-size)/2))0 0 calc(100rem*var(--range-fill));background-color:currentColor;position:relative;top:50%}.range:disabled{cursor:not-allowed;opacity:.3}.select{border:var(--border)solid #0000;-webkit-appearance:none;-moz-appearance:none;appearance:none;background-color:var(--color-base-100);vertical-align:middle;width:clamp(3rem,20rem,100%);height:var(--size);text-overflow:ellipsis;box-shadow:0 1px color-mix(in oklab,var(--input-color)calc(var(--depth)*10%),#0000)inset,0 -1px oklch(100% 0 0/calc(var(--depth)*.1))inset;border-color:var(--input-color);--input-color:color-mix(in oklab,var(--color-base-content)20%,#0000);--size:calc(var(--size-field,.25rem)*10);background-image:linear-gradient(45deg,#0000 50%,currentColor 50%),linear-gradient(135deg,currentColor 50%,#0000 50%);background-position:calc(100% - 20px) calc(1px + 50%),calc(100% - 16.1px) calc(1px + 50%);background-repeat:no-repeat;background-size:4px 4px,4px 4px;border-start-start-radius:var(--join-ss,var(--radius-field));border-start-end-radius:var(--join-se,var(--radius-field));border-end-end-radius:var(--join-ee,var(--radius-field));border-end-start-radius:var(--join-es,var(--radius-field));flex-shrink:1;align-items:center;gap:.375rem;padding-inline:1rem 1.75rem;font-size:.875rem;display:inline-flex;position:relative}[dir=rtl] .select{background-position:12px calc(1px + 50%),16px calc(1px + 50%)}.select select{-webkit-appearance:none;-moz-appearance:none;appearance:none;background:inherit;border-radius:inherit;border-style:none;width:calc(100% + 2.75rem);height:calc(100% - 2px);margin-inline:-1rem -1.75rem;padding-inline:1rem 1.75rem}.select select:focus,.select select:focus-within{--tw-outline-style:none;outline-style:none}@media (forced-colors:active){:is(.select select:focus,.select select:focus-within){outline-offset:2px;outline:2px solid #0000}}.select select:not(:last-child){background-image:none;margin-inline-end:-1.375rem}.select:focus,.select:focus-within{--input-color:var(--color-base-content);box-shadow:0 1px color-mix(in oklab,var(--input-color)calc(var(--depth)*10%),#0000);outline:2px solid var(--input-color);outline-offset:2px}.select:has(>select[disabled]),.select:is(:disabled,[disabled]){cursor:not-allowed;border-color:var(--color-base-200);background-color:var(--color-base-200);color:color-mix(in oklab,var(--color-base-content)40%,transparent)}:is(.select:has(>select[disabled]),.select:is(:disabled,[disabled]))::-moz-placeholder{color:color-mix(in oklab,var(--color-base-content)20%,transparent)}:is(.select:has(>select[disabled]),.select:is(:disabled,[disabled]))::placeholder{color:color-mix(in oklab,var(--color-base-content)20%,transparent)}.select:has(>select[disabled])>select[disabled]{cursor:not-allowed}.checkbox{border:var(--border)solid var(--input-color,color-mix(in oklab,var(--color-base-content)20%,#0000));cursor:pointer;-webkit-appearance:none;-moz-appearance:none;appearance:none;border-radius:var(--radius-selector);vertical-align:middle;color:var(--color-base-content);box-shadow:0 1px oklch(0% 0 0/calc(var(--depth)*.1))inset,0 0 #0000 inset,0 0 #0000;--size:calc(var(--size-selector,.25rem)*6);width:var(--size);height:var(--size);background-size:auto,calc(var(--noise)*100%);background-image:none,var(--fx-noise);flex-shrink:0;padding:.25rem;transition:background-color .2s,box-shadow .2s;position:relative}.checkbox:before{--tw-content:"";content:var(--tw-content);opacity:0;clip-path:polygon(20% 100%,20% 80%,50% 80%,50% 80%,70% 80%,70% 100%);width:100%;height:100%;box-shadow:0px 3px 0 0px oklch(100% 0 0/calc(var(--depth)*.1))inset;background-color:currentColor;font-size:1rem;line-height:.75;transition:clip-path .3s .1s,opacity .1s .1s,rotate .3s .1s,translate .3s .1s;display:block;rotate:45deg}.checkbox:focus-visible{outline:2px solid var(--input-color,currentColor);outline-offset:2px}.checkbox:checked,.checkbox[aria-checked=true]{background-color:var(--input-color,#0000);box-shadow:0 0 #0000 inset,0 8px 0 -4px oklch(100% 0 0/calc(var(--depth)*.1))inset,0 1px oklch(0% 0 0/calc(var(--depth)*.1))}:is(.checkbox:checked,.checkbox[aria-checked=true]):before{clip-path:polygon(20% 100%,20% 80%,50% 80%,50% 0%,70% 0%,70% 100%);opacity:1}@media (forced-colors:active){:is(.checkbox:checked,.checkbox[aria-checked=true]):before{--tw-content:"✔︎";clip-path:none;background-color:#0000;rotate:none}}@media print{:is(.checkbox:checked,.checkbox[aria-checked=true]):before{--tw-content:"✔︎";clip-path:none;background-color:#0000;rotate:none}}.checkbox:indeterminate:before{opacity:1;clip-path:polygon(20% 100%,20% 80%,50% 80%,50% 80%,80% 80%,80% 100%);translate:0 -35%;rotate:none}.checkbox:disabled{cursor:not-allowed;opacity:.2}.radio{cursor:pointer;-webkit-appearance:none;-moz-appearance:none;appearance:none;vertical-align:middle;border:var(--border)solid var(--input-color,color-mix(in srgb,currentColor 20%,#0000));box-shadow:0 1px oklch(0% 0 0/calc(var(--depth)*.1))inset;--size:calc(var(--size-selector,.25rem)*6);width:var(--size);height:var(--size);color:var(--input-color,currentColor);border-radius:3.40282e38px;flex-shrink:0;padding:.25rem;position:relative}.radio:before{--tw-content:"";content:var(--tw-content);background-size:auto,calc(var(--noise)*100%);background-image:none,var(--fx-noise);border-radius:3.40282e38px;width:100%;height:100%;display:block}.radio:focus-visible{outline:2px solid}.radio:checked,.radio[aria-checked=true]{background-color:var(--color-base-100);border-color:currentColor;animation:.2s ease-out radio}:is(.radio:checked,.radio[aria-checked=true]):before{box-shadow:0 -1px oklch(0% 0 0/calc(var(--depth)*.1))inset,0 8px 0 -4px oklch(100% 0 0/calc(var(--depth)*.1))inset,0 1px oklch(0% 0 0/calc(var(--depth)*.1));background-color:currentColor}@media (forced-colors:active){:is(.radio:checked,.radio[aria-checked=true]):before{outline-style:var(--tw-outline-style);outline-offset:calc(1px*-1);outline-width:1px}}@media print{:is(.radio:checked,.radio[aria-checked=true]):before{outline-offset:-1rem;outline:.25rem solid}}.radio:disabled{cursor:not-allowed;opacity:.2}.absolute{position:absolute}.fixed{position:fixed}.relative{position:relative}.static{position:static}.inset-0{inset:calc(var(--spacing)*0)}.-top-3{top:calc(var(--spacing)*-3)}.top-0{top:calc(var(--spacing)*0)}.top-1\\/2{top:50%}.top-2{top:calc(var(--spacing)*2)}.top-full{top:100%}.-right-3{right:calc(var(--spacing)*-3)}.right-0{right:calc(var(--spacing)*0)}.right-2{right:calc(var(--spacing)*2)}.right-10{right:calc(var(--spacing)*10)}.right-full{right:100%}.bottom-0{bottom:calc(var(--spacing)*0)}.bottom-full{bottom:100%}.left-0{left:calc(var(--spacing)*0)}.left-1\\/2{left:50%}.left-full{left:100%}.modal-backdrop{color:#0000;z-index:-1;grid-row-start:1;grid-column-start:1;place-self:stretch stretch;display:grid}.modal-backdrop button{cursor:pointer}.z-10{z-index:10}.z-1001{z-index:1001}.modal-box{background-color:var(--color-base-100);border-top-left-radius:var(--modal-tl,var(--radius-box));border-top-right-radius:var(--modal-tr,var(--radius-box));border-bottom-left-radius:var(--modal-bl,var(--radius-box));border-bottom-right-radius:var(--modal-br,var(--radius-box));opacity:0;overscroll-behavior:contain;grid-row-start:1;grid-column-start:1;width:91.6667%;max-width:32rem;max-height:100vh;padding:1.5rem;transition:translate .3s ease-out,scale .3s ease-out,opacity .2s ease-out 50ms,box-shadow .3s ease-out;overflow-y:auto;scale:95%;box-shadow:0 25px 50px -12px oklch(0% 0 0/.25)}.stat-value{white-space:nowrap;grid-column-start:1;font-size:2rem;font-weight:800}.stat-desc,.stat-title{white-space:nowrap;color:color-mix(in oklab,var(--color-base-content)60%,transparent);grid-column-start:1;font-size:.75rem}.float-right{float:right}.container{width:100%}@media (width>=40rem){.container{max-width:40rem}}@media (width>=48rem){.container{max-width:48rem}}@media (width>=64rem){.container{max-width:64rem}}@media (width>=80rem){.container{max-width:80rem}}@media (width>=96rem){.container{max-width:96rem}}.divider{white-space:nowrap;height:1rem;margin:var(--divider-m,1rem 0);flex-direction:row;align-self:stretch;align-items:center;display:flex}.divider:before,.divider:after{content:"";background-color:color-mix(in oklab,var(--color-base-content)10%,transparent);flex-grow:1;width:100%;height:.125rem}@media print{.divider:before,.divider:after{border:.5px solid}}.divider:not(:empty){gap:1rem}.m-1{margin:calc(var(--spacing)*1)}.m-2{margin:calc(var(--spacing)*2)}.m-4{margin:calc(var(--spacing)*4)}.filter{flex-wrap:wrap;display:flex}.filter input[type=radio]{width:auto}.filter input{opacity:1;transition:margin .1s,opacity .3s,padding .3s,border-width .1s;overflow:hidden;scale:1}.filter input:not(:last-child){margin-inline-end:.25rem}.filter input.filter-reset{aspect-ratio:1}.filter input.filter-reset:after{content:"×"}.filter:not(:has(input:checked:not(.filter-reset))) .filter-reset,.filter:not(:has(input:checked:not(.filter-reset))) input[type=reset],.filter:has(input:checked:not(.filter-reset)) input:not(:checked,.filter-reset,input[type=reset]){opacity:0;border-width:0;width:0;margin-inline:0;padding-inline:0;scale:0}.mx-2{margin-inline:calc(var(--spacing)*2)}.mx-auto{margin-inline:auto}.input-sm{--size:calc(var(--size-field,.25rem)*8);font-size:.75rem}.input-sm[type=number]::-webkit-inner-spin-button{margin-block:-.5rem;margin-inline-end:-.75rem}.my-1{margin-block:calc(var(--spacing)*1)}.my-4{margin-block:calc(var(--spacing)*4)}.label{white-space:nowrap;color:color-mix(in oklab,currentColor 60%,transparent);align-items:center;gap:.375rem;display:inline-flex}.label:has(input){cursor:pointer}.label:is(.input>*,.select>*){white-space:nowrap;height:calc(100% - .5rem);font-size:inherit;align-items:center;padding-inline:.75rem;display:flex}.label:is(.input>*,.select>*):first-child{border-inline-end:var(--border)solid color-mix(in oklab,currentColor 10%,#0000);margin-inline:-.75rem .75rem}.label:is(.input>*,.select>*):last-child{border-inline-start:var(--border)solid color-mix(in oklab,currentColor 10%,#0000);margin-inline:.75rem -.75rem}.join-item:where(:not(:first-child)){margin-block-start:0;margin-inline-start:calc(var(--border,1px)*-1)}.modal-action{justify-content:flex-end;gap:.5rem;margin-top:1.5rem;display:flex}.mt-0{margin-top:calc(var(--spacing)*0)}.mt-1{margin-top:calc(var(--spacing)*1)}.mt-2{margin-top:calc(var(--spacing)*2)}.mt-4{margin-top:calc(var(--spacing)*4)}.mr-1{margin-right:calc(var(--spacing)*1)}.mr-2{margin-right:calc(var(--spacing)*2)}.mb-0{margin-bottom:calc(var(--spacing)*0)}.mb-1{margin-bottom:calc(var(--spacing)*1)}.mb-2{margin-bottom:calc(var(--spacing)*2)}.ml-1{margin-left:calc(var(--spacing)*1)}.ml-2{margin-left:calc(var(--spacing)*2)}.ml-2\\.5{margin-left:calc(var(--spacing)*2.5)}.ml-3{margin-left:calc(var(--spacing)*3)}.status{aspect-ratio:1;border-radius:var(--radius-selector);background-color:color-mix(in oklab,var(--color-base-content)20%,transparent);vertical-align:middle;width:.5rem;height:.5rem;color:color-mix(in oklab,var(--color-black)30%,transparent);background-position:50%;background-repeat:no-repeat;background-image:radial-gradient(circle at 35% 30%,oklch(1 0 0/calc(var(--depth)*.5)),#0000);box-shadow:0 2px 3px -1px color-mix(in oklab,currentColor calc(var(--depth)*100%),#0000);display:inline-block}.iconify{width:1em;height:1em;-webkit-mask-image:var(--svg);-webkit-mask-image:var(--svg);-webkit-mask-image:var(--svg);mask-image:var(--svg);background-color:currentColor;display:inline-block;-webkit-mask-size:100% 100%;mask-size:100% 100%;-webkit-mask-repeat:no-repeat;mask-repeat:no-repeat}.tabs{--tabs-height:auto;--tabs-direction:row;height:var(--tabs-height);flex-wrap:wrap;flex-direction:var(--tabs-direction);display:flex}.footer{grid-auto-flow:row;place-items:start;gap:2.5rem 1rem;width:100%;font-size:.875rem;line-height:1.25rem;display:grid}.footer>*{place-items:start;gap:.5rem;display:grid}.footer.footer-center{text-align:center;grid-auto-flow:column dense;place-items:center}.footer.footer-center>*{place-items:center}.stat{grid-template-columns:repeat(1,1fr);-moz-column-gap:1rem;column-gap:1rem;width:100%;padding-block:1rem;padding-inline:1.5rem;display:inline-grid}.stat:not(:last-child){border-inline-end:var(--border)dashed color-mix(in oklab,currentColor 10%,#0000);border-block-end:none}.alert{border-radius:var(--radius-box);color:var(--color-base-content);background-color:var(--alert-color,var(--color-base-200));text-align:start;border:var(--border)solid var(--color-base-200);background-size:auto,calc(var(--noise)*100%);background-image:none,var(--fx-noise);box-shadow:0 3px 0 -2px oklch(100% 0 0/calc(var(--depth)*.08))inset,0 1px color-mix(in oklab,color-mix(in oklab,#000 20%,var(--alert-color,var(--color-base-200)))calc(var(--depth)*20%),#0000),0 4px 3px -2px oklch(0% 0 0/calc(var(--depth)*.08));grid-template-columns:auto minmax(auto,1fr);grid-auto-flow:column;justify-content:start;place-items:center start;gap:1rem;padding-block:.75rem;padding-inline:1rem;font-size:.875rem;line-height:1.25rem;display:grid}.alert.alert-outline{color:var(--alert-color);box-shadow:none;background-color:#0000;background-image:none}.alert.alert-dash{color:var(--alert-color);box-shadow:none;background-color:#0000;background-image:none;border-style:dashed}.alert.alert-soft{color:var(--alert-color,var(--color-base-content));background:color-mix(in oklab,var(--alert-color,var(--color-base-content))8%,var(--color-base-100));border-color:color-mix(in oklab,var(--alert-color,var(--color-base-content))10%,var(--color-base-100));box-shadow:none;background-image:none}.join{--join-ss:0;--join-se:0;--join-es:0;--join-ee:0;align-items:stretch;display:inline-flex}.join :where(.join-item){border-start-start-radius:var(--join-ss,0);border-start-end-radius:var(--join-se,0);border-end-end-radius:var(--join-ee,0);border-end-start-radius:var(--join-es,0)}.join :where(.join-item) *{--join-ss:var(--radius-field);--join-se:var(--radius-field);--join-es:var(--radius-field);--join-ee:var(--radius-field)}.join>.join-item:where(:first-child),.join :first-child:not(:last-child) :where(.join-item){--join-ss:var(--radius-field);--join-se:0;--join-es:var(--radius-field);--join-ee:0}.join>.join-item:where(:last-child),.join :last-child:not(:first-child) :where(.join-item){--join-ss:0;--join-se:var(--radius-field);--join-es:0;--join-ee:var(--radius-field)}.join>.join-item:where(:only-child),.join :only-child :where(.join-item){--join-ss:var(--radius-field);--join-se:var(--radius-field);--join-es:var(--radius-field);--join-ee:var(--radius-field)}.block{display:block}.contents{display:contents}.flex{display:flex}.grid{display:grid}.hidden{display:none}.inline{display:inline}.inline-flex{display:inline-flex}.table{display:table}.modal-bottom{place-items:end}.modal-bottom :where(.modal-box){--modal-tl:var(--radius-box);--modal-tr:var(--radius-box);--modal-bl:0;--modal-br:0;width:100%;max-width:none;height:auto;max-height:calc(100vh - 5em);translate:0 100%;scale:1}.btn-circle{width:var(--size);height:var(--size);border-radius:3.40282e38px;padding-inline:0}.h-8{height:calc(var(--spacing)*8)}.h-\\[calc\\(var\\(--size\\)\\*0\\.7\\)\\]{height:calc(var(--size)*.7)}.h-full{height:100%}.max-h-80{max-height:calc(var(--spacing)*80)}.loading-md{width:calc(var(--size-selector,.25rem)*6)}.w-10{width:calc(var(--spacing)*10)}.w-12{width:calc(var(--spacing)*12)}.w-20{width:calc(var(--spacing)*20)}.w-32{width:calc(var(--spacing)*32)}.w-64{width:calc(var(--spacing)*64)}.w-\\[6rem\\]{width:6rem}.w-fit{width:-moz-fit-content;width:fit-content}.w-full{width:100%}.w-max{width:-moz-max-content;width:max-content}.max-w-\\(--breakpoint-lg\\){max-width:var(--breakpoint-lg)}.min-w-24{min-width:calc(var(--spacing)*24)}.min-w-32{min-width:calc(var(--spacing)*32)}.min-w-\\[0\\.05rem\\]{min-width:.05rem}.min-w-\\[7\\.5rem\\]{min-width:7.5rem}.min-w-\\[180px\\]{min-width:180px}.flex-1{flex:1}.grow{flex-grow:1}.translate-x-\\[-50\\%\\]{--tw-translate-x:-50%;translate:var(--tw-translate-x)var(--tw-translate-y)}.-translate-y-1\\/2{--tw-translate-y:calc(calc(1/2*100%)*-1);translate:var(--tw-translate-x)var(--tw-translate-y)}.translate-y-\\[-50\\%\\]{--tw-translate-y:-50%;translate:var(--tw-translate-x)var(--tw-translate-y)}.transform{transform:var(--tw-rotate-x)var(--tw-rotate-y)var(--tw-rotate-z)var(--tw-skew-x)var(--tw-skew-y)}.skeleton{border-radius:var(--radius-box);background-color:var(--color-base-300);will-change:background-position;background-image:linear-gradient(105deg,#0000 0% 40%,var(--color-base-100)50%,#0000 60% 100%);background-position-x:-50%;background-repeat:no-repeat;background-size:200%;animation:1.8s ease-in-out infinite skeleton}@media (prefers-reduced-motion:reduce){.skeleton{transition-duration:15s}}.link{cursor:pointer;text-decoration-line:underline}.link:focus{--tw-outline-style:none;outline-style:none}@media (forced-colors:active){.link:focus{outline-offset:2px;outline:2px solid #0000}}.link:focus-visible{outline-offset:2px;outline:2px solid}.cursor-pointer{cursor:pointer}.resize{resize:both}.list-inside{list-style-position:inside}.list-outside{list-style-position:outside}.list-disc{list-style-type:disc}.flex-col{flex-direction:column}.flex-row{flex-direction:row}.flex-wrap{flex-wrap:wrap}.items-center{align-items:center}.items-end{align-items:flex-end}.justify-between{justify-content:space-between}.justify-center{justify-content:center}.gap-0\\.5{gap:calc(var(--spacing)*.5)}.gap-1{gap:calc(var(--spacing)*1)}.gap-x-6{-moz-column-gap:calc(var(--spacing)*6);column-gap:calc(var(--spacing)*6)}.gap-y-1{row-gap:calc(var(--spacing)*1)}.gap-y-2{row-gap:calc(var(--spacing)*2)}.overflow-scroll{overflow:scroll}.overflow-visible{overflow:visible}.overflow-x-auto{overflow-x:auto}.rounded-lg{border-radius:var(--radius-lg)}.rounded-md{border-radius:var(--radius-md)}.rounded-none{border-radius:0}.rounded-sm{border-radius:var(--radius-sm)}.rounded-t-md{border-top-left-radius:var(--radius-md);border-top-right-radius:var(--radius-md)}.rounded-t-none{border-top-left-radius:0;border-top-right-radius:0}.rounded-tr-md{border-top-right-radius:var(--radius-md)}.rounded-b-md{border-bottom-right-radius:var(--radius-md);border-bottom-left-radius:var(--radius-md)}.rounded-b-none{border-bottom-right-radius:0;border-bottom-left-radius:0}.border{border-style:var(--tw-border-style);border-width:1px}.border-0{border-style:var(--tw-border-style);border-width:0}.border-1{border-style:var(--tw-border-style);border-width:1px}.border-2{border-style:var(--tw-border-style);border-width:2px}.border-b{border-bottom-style:var(--tw-border-style);border-bottom-width:1px}.border-b-2{border-bottom-style:var(--tw-border-style);border-bottom-width:2px}.select-ghost{box-shadow:none;background-color:#0000;border-color:#0000;transition:background-color .2s}.select-ghost:focus,.select-ghost:focus-within{background-color:var(--color-base-100);color:var(--color-base-content);box-shadow:none;border-color:#0000}.input-ghost{box-shadow:none;background-color:#0000;border-color:#0000}.input-ghost:focus,.input-ghost:focus-within{background-color:var(--color-base-100);color:var(--color-base-content);box-shadow:none;border-color:#0000}.alert-error{border-color:var(--color-error);color:var(--color-error-content);--alert-color:var(--color-error)}.border-gray-100{border-color:var(--color-gray-100)}.border-gray-200{border-color:var(--color-gray-200)}.border-gray-300{border-color:var(--color-gray-300)}.border-gray-500{border-color:var(--color-gray-500)}.border-slate-500{border-color:var(--color-slate-500)}.bg-blue-300{background-color:var(--color-blue-300)}.bg-red-200{background-color:var(--color-red-200)}.bg-slate-200{background-color:var(--color-slate-200)}.bg-transparent{background-color:#0000}.bg-white{background-color:var(--color-white)}.p-1{padding:calc(var(--spacing)*1)}.p-1\\.5{padding:calc(var(--spacing)*1.5)}.p-2{padding:calc(var(--spacing)*2)}.p-4{padding:calc(var(--spacing)*4)}.px-1{padding-inline:calc(var(--spacing)*1)}.px-2{padding-inline:calc(var(--spacing)*2)}.px-3{padding-inline:calc(var(--spacing)*3)}.px-4{padding-inline:calc(var(--spacing)*4)}.py-1{padding-block:calc(var(--spacing)*1)}.py-2{padding-block:calc(var(--spacing)*2)}.py-16{padding-block:calc(var(--spacing)*16)}.pr-14{padding-right:calc(var(--spacing)*14)}.text-center{text-align:center}.text-justify{text-align:justify}.text-2xl{font-size:var(--text-2xl);line-height:var(--tw-leading,var(--text-2xl--line-height))}.text-base{font-size:var(--text-base);line-height:var(--tw-leading,var(--text-base--line-height))}.text-lg{font-size:var(--text-lg);line-height:var(--tw-leading,var(--text-lg--line-height))}.text-sm{font-size:var(--text-sm);line-height:var(--tw-leading,var(--text-sm--line-height))}.text-xl{font-size:var(--text-xl);line-height:var(--tw-leading,var(--text-xl--line-height))}.text-xs{font-size:var(--text-xs);line-height:var(--tw-leading,var(--text-xs--line-height))}.select-sm{--size:calc(var(--size-field,.25rem)*8);font-size:.75rem}.select-xs{--size:calc(var(--size-field,.25rem)*6);font-size:.6875rem}.leading-5{--tw-leading:calc(var(--spacing)*5);line-height:calc(var(--spacing)*5)}.font-bold{--tw-font-weight:var(--font-weight-bold);font-weight:var(--font-weight-bold)}.font-medium{--tw-font-weight:var(--font-weight-medium);font-weight:var(--font-weight-medium)}.font-normal{--tw-font-weight:var(--font-weight-normal);font-weight:var(--font-weight-normal)}.text-nowrap{text-wrap:nowrap}.text-wrap{text-wrap:wrap}.break-words{overflow-wrap:break-word}.whitespace-nowrap{white-space:nowrap}.text-\\[\\#606060\\]{color:#606060}.text-black{color:var(--color-black)}.text-blue-600{color:var(--color-blue-600)}.text-gray-500{color:var(--color-gray-500)}.text-gray-600{color:var(--color-gray-600)}.text-neutral-500{color:var(--color-neutral-500)}.text-red-600{color:var(--color-red-600)}.text-red-700{color:var(--color-red-700)}.underline{text-decoration-line:underline}.shadow{--tw-shadow:0 1px 3px 0 var(--tw-shadow-color,#0000001a),0 1px 2px -1px var(--tw-shadow-color,#0000001a);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.shadow-lg{--tw-shadow:0 10px 15px -3px var(--tw-shadow-color,#0000001a),0 4px 6px -4px var(--tw-shadow-color,#0000001a);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.shadow-md{--tw-shadow:0 4px 6px -1px var(--tw-shadow-color,#0000001a),0 2px 4px -2px var(--tw-shadow-color,#0000001a);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.shadow-xs{--tw-shadow:0 1px 2px 0 var(--tw-shadow-color,#0000000d);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.outline{outline-style:var(--tw-outline-style);outline-width:1px}.btn-ghost:not(.btn-active,:hover,:active:focus,:focus-visible){--btn-shadow:"";--btn-bg:#0000;--btn-border:#0000;--btn-noise:none}.btn-ghost:not(.btn-active,:hover,:active:focus,:focus-visible):not(:disabled,[disabled],.btn-disabled){--btn-fg:currentColor;outline-color:currentColor}.blur{--tw-blur:blur(8px);filter:var(--tw-blur,)var(--tw-brightness,)var(--tw-contrast,)var(--tw-grayscale,)var(--tw-hue-rotate,)var(--tw-invert,)var(--tw-saturate,)var(--tw-sepia,)var(--tw-drop-shadow,)}.filter{filter:var(--tw-blur,)var(--tw-brightness,)var(--tw-contrast,)var(--tw-grayscale,)var(--tw-hue-rotate,)var(--tw-invert,)var(--tw-saturate,)var(--tw-sepia,)var(--tw-drop-shadow,)}.transition-colors{transition-property:color,background-color,border-color,outline-color,text-decoration-color,fill,stroke,--tw-gradient-from,--tw-gradient-via,--tw-gradient-to;transition-timing-function:var(--tw-ease,var(--default-transition-timing-function));transition-duration:var(--tw-duration,var(--default-transition-duration))}.duration-150{--tw-duration:.15s;transition-duration:.15s}.btn-outline:not(.btn-active,:hover,:active:focus,:focus-visible,:disabled,[disabled],.btn-disabled,:checked){--btn-shadow:"";--btn-bg:#0000;--btn-fg:var(--btn-color);--btn-border:var(--btn-color);--btn-noise:none}.btn-sm{--fontsize:.75rem;--btn-p:.75rem;--size:calc(var(--size-field,.25rem)*8)}.btn-xs{--fontsize:.6875rem;--btn-p:.5rem;--size:calc(var(--size-field,.25rem)*6)}.select-text{-webkit-user-select:text;-moz-user-select:text;user-select:text}.input-error,.input-error:focus,.input-error:focus-within{--input-color:var(--color-error)}.loading-spinner{-webkit-mask-image:url("data:image/svg+xml,%3Csvg width='24' height='24' stroke='black' viewBox='0 0 24 24' xmlns='http://www.w3.org/2000/svg'%3E%3Cg transform-origin='center'%3E%3Ccircle cx='12' cy='12' r='9.5' fill='none' stroke-width='3' stroke-linecap='round'%3E%3CanimateTransform attributeName='transform' type='rotate' from='0 12 12' to='360 12 12' dur='2s' repeatCount='indefinite'/%3E%3Canimate attributeName='stroke-dasharray' values='0,150;42,150;42,150' keyTimes='0;0.475;1' dur='1.5s' repeatCount='indefinite'/%3E%3Canimate attributeName='stroke-dashoffset' values='0;-16;-59' keyTimes='0;0.475;1' dur='1.5s' repeatCount='indefinite'/%3E%3C/circle%3E%3C/g%3E%3C/svg%3E");mask-image:url("data:image/svg+xml,%3Csvg width='24' height='24' stroke='black' viewBox='0 0 24 24' xmlns='http://www.w3.org/2000/svg'%3E%3Cg transform-origin='center'%3E%3Ccircle cx='12' cy='12' r='9.5' fill='none' stroke-width='3' stroke-linecap='round'%3E%3CanimateTransform attributeName='transform' type='rotate' from='0 12 12' to='360 12 12' dur='2s' repeatCount='indefinite'/%3E%3Canimate attributeName='stroke-dasharray' values='0,150;42,150;42,150' keyTimes='0;0.475;1' dur='1.5s' repeatCount='indefinite'/%3E%3Canimate attributeName='stroke-dashoffset' values='0;-16;-59' keyTimes='0;0.475;1' dur='1.5s' repeatCount='indefinite'/%3E%3C/circle%3E%3C/g%3E%3C/svg%3E")}.mdi--chevron-left{--svg:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' width='24' height='24'%3E%3Cpath fill='black' d='M15.41 16.58L10.83 12l4.58-4.59L14 6l-6 6l6 6z'/%3E%3C/svg%3E")}.mdi--chevron-left-first{--svg:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' width='24' height='24'%3E%3Cpath fill='black' d='M18.41 16.59L13.82 12l4.59-4.59L17 6l-6 6l6 6zM6 6h2v12H6z'/%3E%3C/svg%3E")}.mdi--chevron-right{--svg:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' width='24' height='24'%3E%3Cpath fill='black' d='M8.59 16.58L13.17 12L8.59 7.41L10 6l6 6l-6 6z'/%3E%3C/svg%3E")}.mdi--chevron-right-last{--svg:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' width='24' height='24'%3E%3Cpath fill='black' d='M5.59 7.41L10.18 12l-4.59 4.59L7 18l6-6l-6-6zM16 6h2v12h-2z'/%3E%3C/svg%3E")}.mdi--fullscreen{--svg:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' width='24' height='24'%3E%3Cpath fill='black' d='M5 5h5v2H7v3H5zm9 0h5v5h-2V7h-3zm3 9h2v5h-5v-2h3zm-7 3v2H5v-5h2v3z'/%3E%3C/svg%3E")}.mdi--fullscreen-exit{--svg:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' width='24' height='24'%3E%3Cpath fill='black' d='M14 14h5v2h-3v3h-2zm-9 0h5v5H8v-3H5zm3-9h2v5H5V8h3zm11 3v2h-5V5h2v3z'/%3E%3C/svg%3E")}.mdi--reload{--svg:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' width='24' height='24'%3E%3Cpath fill='black' d='M2 12a9 9 0 0 0 9 9c2.39 0 4.68-.94 6.4-2.6l-1.5-1.5A6.7 6.7 0 0 1 11 19c-6.24 0-9.36-7.54-4.95-11.95S18 5.77 18 12h-3l4 4h.1l3.9-4h-3a9 9 0 0 0-18 0'/%3E%3C/svg%3E")}@media (hover:hover){.peer-hover\\:visible:is(:where(.peer):hover~*){visibility:visible}.hover\\:scale-90:hover{--tw-scale-x:90%;--tw-scale-y:90%;--tw-scale-z:90%;scale:var(--tw-scale-x)var(--tw-scale-y)}.hover\\:scale-110:hover{--tw-scale-x:110%;--tw-scale-y:110%;--tw-scale-z:110%;scale:var(--tw-scale-x)var(--tw-scale-y)}.hover\\:bg-gray-100:hover{background-color:var(--color-gray-100)}.hover\\:bg-gray-300:hover{background-color:var(--color-gray-300)}.hover\\:font-bold:hover{--tw-font-weight:var(--font-weight-bold);font-weight:var(--font-weight-bold)}.hover\\:text-blue-700:hover{color:var(--color-blue-700)}.hover\\:text-blue-800:hover{color:var(--color-blue-800)}.hover\\:text-gray-400:hover{color:var(--color-gray-400)}.hover\\:text-gray-700:hover{color:var(--color-gray-700)}}@media (width>=40rem){.sm\\:modal-middle{place-items:center}.sm\\:modal-middle :where(.modal-box){--modal-tl:var(--radius-box);--modal-tr:var(--radius-box);--modal-bl:var(--radius-box);--modal-br:var(--radius-box);width:91.6667%;max-width:32rem;height:auto;max-height:calc(100vh - 5em);translate:0 2%;scale:98%}.sm\\:max-w-5xl{max-width:var(--container-5xl)}.sm\\:flex-row{flex-direction:row}.sm\\:text-4xl{font-size:var(--text-4xl);line-height:var(--tw-leading,var(--text-4xl--line-height))}}@container (width>=2rem){.\\@\\[2rem\\]\\:visible{visibility:visible}}@container (width>=6rem){.\\@\\[6rem\\]\\:visible{visibility:visible}}@container (width>=14rem){.\\@4xs\\:flex-row{flex-direction:row}.\\@4xs\\:rounded-l-none{border-top-left-radius:0;border-bottom-left-radius:0}.\\@4xs\\:rounded-tr-none{border-top-right-radius:0}.\\@4xs\\:rounded-bl-md{border-bottom-left-radius:var(--radius-md)}}@container (width>=28rem){.\\@md\\:flex-row{flex-direction:row}.\\@md\\:rounded-l-md{border-top-left-radius:var(--radius-md);border-bottom-left-radius:var(--radius-md)}.\\@md\\:rounded-l-none{border-top-left-radius:0;border-bottom-left-radius:0}.\\@md\\:rounded-r-md{border-top-right-radius:var(--radius-md);border-bottom-right-radius:var(--radius-md)}.\\@md\\:rounded-r-none{border-top-right-radius:0;border-bottom-right-radius:0}}@container (width>=36rem){.\\@xl\\:block{display:block}.\\@xl\\:justify-end{justify-content:flex-end}}}@keyframes skeleton{0%{background-position:150%}to{background-position:-50%}}@keyframes progress{50%{background-position-x:-115%}}@keyframes radio{0%{padding:5px}50%{padding:3px}}@keyframes dropdown{0%{opacity:0}}@keyframes rating{0%,40%{filter:brightness(1.05)contrast(1.05);scale:1.1}}@keyframes toast{0%{opacity:0;scale:.9}to{opacity:1;scale:1}}@property --tw-translate-x{syntax:"*";inherits:false;initial-value:0}@property --tw-translate-y{syntax:"*";inherits:false;initial-value:0}@property --tw-translate-z{syntax:"*";inherits:false;initial-value:0}@property --tw-rotate-x{syntax:"*";inherits:false;initial-value:rotateX(0)}@property --tw-rotate-y{syntax:"*";inherits:false;initial-value:rotateY(0)}@property --tw-rotate-z{syntax:"*";inherits:false;initial-value:rotateZ(0)}@property --tw-skew-x{syntax:"*";inherits:false;initial-value:skewX(0)}@property --tw-skew-y{syntax:"*";inherits:false;initial-value:skewY(0)}@property --tw-border-style{syntax:"*";inherits:false;initial-value:solid}@property --tw-leading{syntax:"*";inherits:false}@property --tw-font-weight{syntax:"*";inherits:false}@property --tw-shadow{syntax:"*";inherits:false;initial-value:0 0 #0000}@property --tw-shadow-color{syntax:"*";inherits:false}@property --tw-inset-shadow{syntax:"*";inherits:false;initial-value:0 0 #0000}@property --tw-inset-shadow-color{syntax:"*";inherits:false}@property --tw-ring-color{syntax:"*";inherits:false}@property --tw-ring-shadow{syntax:"*";inherits:false;initial-value:0 0 #0000}@property --tw-inset-ring-color{syntax:"*";inherits:false}@property --tw-inset-ring-shadow{syntax:"*";inherits:false;initial-value:0 0 #0000}@property --tw-ring-inset{syntax:"*";inherits:false}@property --tw-ring-offset-width{syntax:"<length>";inherits:false;initial-value:0}@property --tw-ring-offset-color{syntax:"*";inherits:false;initial-value:#fff}@property --tw-ring-offset-shadow{syntax:"*";inherits:false;initial-value:0 0 #0000}@property --tw-outline-style{syntax:"*";inherits:false;initial-value:solid}@property --tw-blur{syntax:"*";inherits:false}@property --tw-brightness{syntax:"*";inherits:false}@property --tw-contrast{syntax:"*";inherits:false}@property --tw-grayscale{syntax:"*";inherits:false}@property --tw-hue-rotate{syntax:"*";inherits:false}@property --tw-invert{syntax:"*";inherits:false}@property --tw-opacity{syntax:"*";inherits:false}@property --tw-saturate{syntax:"*";inherits:false}@property --tw-sepia{syntax:"*";inherits:false}@property --tw-drop-shadow{syntax:"*";inherits:false}@property --tw-duration{syntax:"*";inherits:false}@property --tw-scale-x{syntax:"*";inherits:false;initial-value:1}@property --tw-scale-y{syntax:"*";inherits:false;initial-value:1}@property --tw-scale-z{syntax:"*";inherits:false;initial-value:1}
|
|
2467
|
+
const tailwindStyle = `/*! tailwindcss v4.0.17 | MIT License | https://tailwindcss.com */
|
|
2468
|
+
@layer theme{:root,:host{--color-red-200:oklch(.885 .062 18.334);--color-red-600:oklch(.577 .245 27.325);--color-red-700:oklch(.505 .213 27.518);--color-blue-300:oklch(.809 .105 251.813);--color-blue-600:oklch(.546 .245 262.881);--color-blue-700:oklch(.488 .243 264.376);--color-blue-800:oklch(.424 .199 265.638);--color-gray-100:oklch(.967 .003 264.542);--color-gray-200:oklch(.928 .006 264.531);--color-gray-300:oklch(.872 .01 258.338);--color-gray-400:oklch(.707 .022 261.325);--color-gray-500:oklch(.551 .027 264.364);--color-gray-600:oklch(.446 .03 256.802);--color-gray-700:oklch(.373 .034 259.733);--color-neutral-500:oklch(.556 0 0);--color-black:#000;--color-white:#fff;--spacing:.25rem;--breakpoint-lg:64rem;--container-5xl:64rem;--text-xs:.75rem;--text-xs--line-height:calc(1/.75);--text-sm:.875rem;--text-sm--line-height:calc(1.25/.875);--text-base:1rem;--text-base--line-height:calc(1.5/1);--text-lg:1.125rem;--text-lg--line-height:calc(1.75/1.125);--text-xl:1.25rem;--text-xl--line-height:calc(1.75/1.25);--text-2xl:1.5rem;--text-2xl--line-height:calc(2/1.5);--text-4xl:2.25rem;--text-4xl--line-height:calc(2.5/2.25);--font-weight-normal:400;--font-weight-medium:500;--font-weight-bold:700;--radius-sm:.25rem;--radius-md:.375rem;--radius-lg:.5rem;--default-transition-duration:.15s;--default-transition-timing-function:cubic-bezier(.4,0,.2,1)}}@layer base{*,:after,:before,::backdrop{box-sizing:border-box;border:0 solid;margin:0;padding:0}::file-selector-button{box-sizing:border-box;border:0 solid;margin:0;padding:0}html,:host{-webkit-text-size-adjust:100%;-moz-tab-size:4;-o-tab-size:4;tab-size:4;font-feature-settings:initial;font-variation-settings:initial;-webkit-tap-highlight-color:transparent;font-family:ui-sans-serif,system-ui,sans-serif,Apple Color Emoji,Segoe UI Emoji,Segoe UI Symbol,Noto Color Emoji;line-height:1.5}hr{height:0;color:inherit;border-top-width:1px}abbr:where([title]){-webkit-text-decoration:underline dotted;text-decoration:underline dotted}h1,h2,h3,h4,h5,h6{font-size:inherit;font-weight:inherit}a{color:inherit;-webkit-text-decoration:inherit;-webkit-text-decoration:inherit;-webkit-text-decoration:inherit;text-decoration:inherit}b,strong{font-weight:bolder}code,kbd,samp,pre{font-feature-settings:initial;font-variation-settings:initial;font-family:ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,Liberation Mono,Courier New,monospace;font-size:1em}small{font-size:80%}sub,sup{vertical-align:baseline;font-size:75%;line-height:0;position:relative}sub{bottom:-.25em}sup{top:-.5em}table{text-indent:0;border-color:inherit;border-collapse:collapse}:-moz-focusring{outline:auto}progress{vertical-align:baseline}summary{display:list-item}ol,ul,menu{list-style:none}img,svg,video,canvas,audio,iframe,embed,object{vertical-align:middle;display:block}img,video{max-width:100%;height:auto}button,input,select,optgroup,textarea{font:inherit;font-feature-settings:inherit;font-variation-settings:inherit;letter-spacing:inherit;color:inherit;opacity:1;background-color:#0000;border-radius:0}::file-selector-button{font:inherit;font-feature-settings:inherit;font-variation-settings:inherit;letter-spacing:inherit;color:inherit;opacity:1;background-color:#0000;border-radius:0}:where(select:is([multiple],[size])) optgroup{font-weight:bolder}:where(select:is([multiple],[size])) optgroup option{padding-inline-start:20px}::file-selector-button{margin-inline-end:4px}::-moz-placeholder{opacity:1}::placeholder{opacity:1}@supports (not (-webkit-appearance:-apple-pay-button)) or (contain-intrinsic-size:1px){::-moz-placeholder{color:color-mix(in oklab,currentColor 50%,transparent)}::placeholder{color:color-mix(in oklab,currentColor 50%,transparent)}}textarea{resize:vertical}::-webkit-search-decoration{-webkit-appearance:none}::-webkit-date-and-time-value{min-height:1lh;text-align:inherit}::-webkit-datetime-edit{display:inline-flex}::-webkit-datetime-edit-fields-wrapper{padding:0}::-webkit-datetime-edit{padding-block:0}::-webkit-datetime-edit-year-field{padding-block:0}::-webkit-datetime-edit-month-field{padding-block:0}::-webkit-datetime-edit-day-field{padding-block:0}::-webkit-datetime-edit-hour-field{padding-block:0}::-webkit-datetime-edit-minute-field{padding-block:0}::-webkit-datetime-edit-second-field{padding-block:0}::-webkit-datetime-edit-millisecond-field{padding-block:0}::-webkit-datetime-edit-meridiem-field{padding-block:0}:-moz-ui-invalid{box-shadow:none}button,input:where([type=button],[type=reset],[type=submit]){-webkit-appearance:button;-moz-appearance:button;appearance:button}::file-selector-button{-webkit-appearance:button;-moz-appearance:button;appearance:button}::-webkit-inner-spin-button{height:auto}::-webkit-outer-spin-button{height:auto}[hidden]:where(:not([hidden=until-found])){display:none!important}:where(:root),:root:has(input.theme-controller[value=light]:checked),[data-theme=light]{color-scheme:light;--color-base-100:oklch(100% 0 0);--color-base-200:oklch(98% 0 0);--color-base-300:oklch(95% 0 0);--color-base-content:oklch(21% .006 285.885);--color-primary:oklch(45% .24 277.023);--color-primary-content:oklch(93% .034 272.788);--color-secondary:oklch(65% .241 354.308);--color-secondary-content:oklch(94% .028 342.258);--color-accent:oklch(77% .152 181.912);--color-accent-content:oklch(38% .063 188.416);--color-neutral:oklch(14% .005 285.823);--color-neutral-content:oklch(92% .004 286.32);--color-info:oklch(74% .16 232.661);--color-info-content:oklch(29% .066 243.157);--color-success:oklch(76% .177 163.223);--color-success-content:oklch(37% .077 168.94);--color-warning:oklch(82% .189 84.429);--color-warning-content:oklch(41% .112 45.904);--color-error:oklch(71% .194 13.428);--color-error-content:oklch(27% .105 12.094);--radius-selector:.5rem;--radius-field:.25rem;--radius-box:.5rem;--size-selector:.25rem;--size-field:.25rem;--border:1px;--depth:1;--noise:0}@property --radialprogress{syntax: "<percentage>"; inherits: true; initial-value: 0%;}:root{scrollbar-color:color-mix(in oklch,currentColor 35%,#0000)#0000}:root:has(.modal-open,.modal[open],.modal:target,.modal-toggle:checked,.drawer:not([class*=drawer-open])>.drawer-toggle:checked){overflow:hidden}:root,[data-theme]{background-color:var(--root-bg,var(--color-base-100));color:var(--color-base-content)}:root{--fx-noise:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg'%3E%3Cfilter id='a'%3E%3CfeTurbulence type='fractalNoise' baseFrequency='1.34' numOctaves='4' stitchTiles='stitch'%3E%3C/feTurbulence%3E%3C/filter%3E%3Crect width='100%25' height='100%25' filter='url(%23a)' opacity='0.2'%3E%3C/rect%3E%3C/svg%3E")}.chat{--mask-chat:url("data:image/svg+xml,%3csvg width='13' height='13' xmlns='http://www.w3.org/2000/svg'%3e%3cpath fill='black' d='M0 11.5004C0 13.0004 2 13.0004 2 13.0004H12H13V0.00036329L12.5 0C12.5 0 11.977 2.09572 11.8581 2.50033C11.6075 3.35237 10.9149 4.22374 9 5.50036C6 7.50036 0 10.0004 0 11.5004Z'/%3e%3c/svg%3e")}:where(:root:has(.modal-open,.modal[open],.modal:target,.modal-toggle:checked,.drawer:not(.drawer-open)>.drawer-toggle:checked)){scrollbar-gutter:stable;background-image:linear-gradient(var(--color-base-100),var(--color-base-100));--root-bg:color-mix(in srgb,var(--color-base-100),oklch(0% 0 0) 40%)}}@layer components;@layer utilities{.diff{webkit-user-select:none;-webkit-user-select:none;-moz-user-select:none;user-select:none;direction:ltr;grid-template-columns:auto 1fr;width:100%;display:grid;position:relative;overflow:hidden;container-type:inline-size}.diff:focus-visible,.diff:has(.diff-item-1:focus),.diff:focus-visible{outline-style:var(--tw-outline-style);outline-offset:1px;outline-width:2px;outline-color:var(--color-base-content)}.diff:focus-visible .diff-resizer{min-width:90cqi;max-width:90cqi}.diff:has(.diff-item-2:focus-visible){outline-style:var(--tw-outline-style);outline-offset:1px;outline-width:2px}.diff:has(.diff-item-2:focus-visible) .diff-resizer{min-width:10cqi;max-width:10cqi}@supports (-webkit-overflow-scrolling:touch) and (overflow:-webkit-paged-x){.diff:focus .diff-resizer{min-width:10cqi;max-width:10cqi}.diff:has(.diff-item-1:focus) .diff-resizer{min-width:90cqi;max-width:90cqi}}.\\@container{container-type:inline-size}.modal{pointer-events:none;visibility:hidden;width:100%;max-width:none;height:100%;max-height:none;color:inherit;transition:transform .3s ease-out,visibility .3s allow-discrete,background-color .3s ease-out,opacity .1s ease-out;overscroll-behavior:contain;z-index:999;background-color:#0000;place-items:center;margin:0;padding:0;display:grid;position:fixed;inset:0;overflow:hidden}.modal::backdrop{display:none}.modal.modal-open,.modal[open],.modal:target{pointer-events:auto;visibility:visible;opacity:1;background-color:oklch(0% 0 0/.4);transition:transform .3s ease-out,background-color .3s ease-out,opacity .1s ease-out}:is(.modal.modal-open,.modal[open],.modal:target) .modal-box{opacity:1;translate:0;scale:1}@starting-style{.modal.modal-open,.modal[open],.modal:target{visibility:hidden;opacity:0}}.tooltip{--tt-bg:var(--color-neutral);--tt-off:calc(100% + .5rem);--tt-tail:calc(100% + 1px + .25rem);display:inline-block;position:relative}.tooltip>:where(.tooltip-content),.tooltip[data-tip]:before{border-radius:var(--radius-field);text-align:center;white-space:normal;max-width:20rem;color:var(--color-neutral-content);opacity:0;background-color:var(--tt-bg);pointer-events:none;z-index:1;--tw-content:attr(data-tip);content:var(--tw-content);width:-moz-max-content;width:max-content;padding-block:.25rem;padding-inline:.5rem;font-size:.875rem;line-height:1.25em;transition:opacity .2s cubic-bezier(.4,0,.2,1) 75ms,transform .2s cubic-bezier(.4,0,.2,1) 75ms;position:absolute}.tooltip:after{opacity:0;background-color:var(--tt-bg);content:"";pointer-events:none;--mask-tooltip:url("data:image/svg+xml,%3Csvg width='10' height='4' viewBox='0 0 8 4' fill='none' xmlns='http://www.w3.org/2000/svg'%3E%3Cpath d='M0.500009 1C3.5 1 3.00001 4 5.00001 4C7 4 6.5 1 9.5 1C10 1 10 0.499897 10 0H0C-1.99338e-08 0.5 0 1 0.500009 1Z' fill='black'/%3E%3C/svg%3E%0A");width:.625rem;height:.25rem;-webkit-mask-position:-1px 0;mask-position:-1px 0;-webkit-mask-repeat:no-repeat;mask-repeat:no-repeat;-webkit-mask-image:var(--mask-tooltip);-webkit-mask-image:var(--mask-tooltip);mask-image:var(--mask-tooltip);transition:opacity .2s cubic-bezier(.4,0,.2,1) 75ms,transform .2s cubic-bezier(.4,0,.2,1) 75ms;display:block;position:absolute}:is(.tooltip.tooltip-open,.tooltip[data-tip]:hover,.tooltip:hover,.tooltip:has(:focus-visible))>.tooltip-content,:is(.tooltip.tooltip-open,.tooltip[data-tip]:hover,.tooltip:hover,.tooltip:has(:focus-visible))[data-tip]:before,:is(.tooltip.tooltip-open,.tooltip[data-tip]:hover,.tooltip:hover,.tooltip:has(:focus-visible)):after{opacity:1;--tt-pos:0rem;transition:opacity .2s cubic-bezier(.4,0,.2,1),transform .2s cubic-bezier(.4,0,.2,1)}.tooltip>.tooltip-content,.tooltip[data-tip]:before{transform:translateX(-50%)translateY(var(--tt-pos,.25rem));inset:auto auto var(--tt-off)50%}.tooltip:after{transform:translateX(-50%)translateY(var(--tt-pos,.25rem));inset:auto auto var(--tt-tail)50%}.tab{cursor:pointer;-webkit-appearance:none;-moz-appearance:none;appearance:none;text-align:center;webkit-user-select:none;-webkit-user-select:none;-moz-user-select:none;user-select:none;--tab-p:1rem;--tab-bg:var(--color-base-100);--tab-border-color:var(--color-base-300);--tab-radius-ss:0;--tab-radius-se:0;--tab-radius-es:0;--tab-radius-ee:0;--tab-order:0;--tab-radius-min:calc(.75rem - var(--border));flex-wrap:wrap;order:var(--tab-order);height:calc(var(--size-field,.25rem)*10);border-color:#0000;justify-content:center;align-items:center;padding-inline-start:var(--tab-p);padding-inline-end:var(--tab-p);font-size:.875rem;display:inline-flex;position:relative}@media (hover:hover){.tab:hover{color:var(--color-base-content)}}.tab:is(input[type=radio]){min-width:-moz-fit-content;min-width:fit-content}.tab:is(input[type=radio]):after{content:attr(aria-label)}.tab:is(label){position:relative}.tab:is(label) input{cursor:pointer;-webkit-appearance:none;-moz-appearance:none;appearance:none;opacity:0;position:absolute;inset:0}:is(.tab:checked,.tab:is(label:has(:checked)),.tab:is(.tab-active,[aria-selected=true]))+.tab-content{height:100%;display:block}.tab:not(:checked,label:has(:checked),:hover,.tab-active,[aria-selected=true]){color:color-mix(in oklab,var(--color-base-content)50%,transparent)}.tab:not(input):empty{cursor:default;flex-grow:1}.tab:focus{--tw-outline-style:none;outline-style:none}@media (forced-colors:active){.tab:focus{outline-offset:2px;outline:2px solid #0000}}.tab:focus-visible,.tab:is(label:has(:checked:focus-visible)){outline-offset:-5px;outline:2px solid}.tab[disabled]{pointer-events:none;opacity:.4}.menu{--menu-active-fg:var(--color-neutral-content);--menu-active-bg:var(--color-neutral);flex-flow:column wrap;width:-moz-fit-content;width:fit-content;padding:.5rem;font-size:.875rem;display:flex}.menu :where(li ul){white-space:nowrap;margin-inline-start:1rem;padding-inline-start:.5rem;position:relative}.menu :where(li ul):before{background-color:var(--color-base-content);opacity:.1;width:var(--border);content:"";inset-inline-start:0;position:absolute;top:.75rem;bottom:.75rem}.menu :where(li>.menu-dropdown:not(.menu-dropdown-show)){display:none}.menu :where(li:not(.menu-title)>:not(ul,details,.menu-title,.btn)),.menu :where(li:not(.menu-title)>details>summary:not(.menu-title)){border-radius:var(--radius-field);text-align:start;text-wrap:balance;-webkit-user-select:none;-moz-user-select:none;user-select:none;grid-auto-columns:minmax(auto,max-content) auto max-content;grid-auto-flow:column;align-content:flex-start;align-items:center;gap:.5rem;padding-block:.375rem;padding-inline:.75rem;transition-property:color,background-color,box-shadow;transition-duration:.2s;transition-timing-function:cubic-bezier(0,0,.2,1);display:grid}.menu :where(li>details>summary){--tw-outline-style:none;outline-style:none}@media (forced-colors:active){.menu :where(li>details>summary){outline-offset:2px;outline:2px solid #0000}}.menu :where(li>details>summary)::-webkit-details-marker{display:none}:is(.menu :where(li>details>summary),.menu :where(li>.menu-dropdown-toggle)):after{content:"";transform-origin:50%;pointer-events:none;justify-self:flex-end;width:.375rem;height:.375rem;transition-property:rotate,translate;transition-duration:.2s;display:block;translate:0 -1px;rotate:-135deg;box-shadow:inset 2px 2px}.menu :where(li>details[open]>summary):after,.menu :where(li>.menu-dropdown-toggle.menu-dropdown-show):after{translate:0 1px;rotate:45deg}.menu :where(li:not(.menu-title,.disabled)>:not(ul,details,.menu-title),li:not(.menu-title,.disabled)>details>summary:not(.menu-title)):not(.menu-active,:active,.btn).menu-focus,.menu :where(li:not(.menu-title,.disabled)>:not(ul,details,.menu-title),li:not(.menu-title,.disabled)>details>summary:not(.menu-title)):not(.menu-active,:active,.btn):focus-visible{cursor:pointer;background-color:color-mix(in oklab,var(--color-base-content)10%,transparent);color:var(--color-base-content);--tw-outline-style:none;outline-style:none}@media (forced-colors:active){:is(.menu :where(li:not(.menu-title,.disabled)>:not(ul,details,.menu-title),li:not(.menu-title,.disabled)>details>summary:not(.menu-title)):not(.menu-active,:active,.btn).menu-focus,.menu :where(li:not(.menu-title,.disabled)>:not(ul,details,.menu-title),li:not(.menu-title,.disabled)>details>summary:not(.menu-title)):not(.menu-active,:active,.btn):focus-visible){outline-offset:2px;outline:2px solid #0000}}.menu :where(li:not(.menu-title,.disabled)>:not(ul,details,.menu-title):not(.menu-active,:active,.btn):hover,li:not(.menu-title,.disabled)>details>summary:not(.menu-title):not(.menu-active,:active,.btn):hover){cursor:pointer;background-color:color-mix(in oklab,var(--color-base-content)10%,transparent);--tw-outline-style:none;outline-style:none;box-shadow:inset 0 1px oklch(0% 0 0/.01),inset 0 -1px oklch(100% 0 0/.01)}@media (forced-colors:active){.menu :where(li:not(.menu-title,.disabled)>:not(ul,details,.menu-title):not(.menu-active,:active,.btn):hover,li:not(.menu-title,.disabled)>details>summary:not(.menu-title):not(.menu-active,:active,.btn):hover){outline-offset:2px;outline:2px solid #0000}}.menu :where(li:empty){background-color:var(--color-base-content);opacity:.1;height:1px;margin:.5rem 1rem}.menu :where(li){flex-flow:column wrap;flex-shrink:0;align-items:stretch;display:flex;position:relative}.menu :where(li) .badge{justify-self:flex-end}.menu :where(li)>:not(ul,.menu-title,details,.btn):active,.menu :where(li)>:not(ul,.menu-title,details,.btn).menu-active,.menu :where(li)>details>summary:active{--tw-outline-style:none;color:var(--menu-active-fg);background-color:var(--menu-active-bg);background-size:auto,calc(var(--noise)*100%);background-image:none,var(--fx-noise);outline-style:none}@media (forced-colors:active){:is(.menu :where(li)>:not(ul,.menu-title,details,.btn):active,.menu :where(li)>:not(ul,.menu-title,details,.btn).menu-active,.menu :where(li)>details>summary:active){outline-offset:2px;outline:2px solid #0000}}:is(.menu :where(li)>:not(ul,.menu-title,details,.btn):active,.menu :where(li)>:not(ul,.menu-title,details,.btn).menu-active,.menu :where(li)>details>summary:active):not(:is(.menu :where(li)>:not(ul,.menu-title,details,.btn):active,.menu :where(li)>:not(ul,.menu-title,details,.btn).menu-active,.menu :where(li)>details>summary:active):active){box-shadow:0 2px calc(var(--depth)*3px)-2px var(--menu-active-bg)}.menu :where(li).menu-disabled{pointer-events:none;color:color-mix(in oklab,var(--color-base-content)20%,transparent)}.menu .dropdown:focus-within .menu-dropdown-toggle:after{translate:0 1px;rotate:45deg}.menu .dropdown-content{margin-top:.5rem;padding:.5rem}.menu .dropdown-content:before{display:none}.dropdown{position-area:var(--anchor-v,bottom)var(--anchor-h,span-right);display:inline-block;position:relative}.dropdown>:not(summary):focus{--tw-outline-style:none;outline-style:none}@media (forced-colors:active){.dropdown>:not(summary):focus{outline-offset:2px;outline:2px solid #0000}}.dropdown .dropdown-content{position:absolute}.dropdown:not(details,.dropdown-open,.dropdown-hover:hover,:focus-within) .dropdown-content{transform-origin:top;opacity:0;display:none;scale:95%}.dropdown[popover],.dropdown .dropdown-content{z-index:999;transition-behavior:allow-discrete;transition-property:opacity,scale,display;transition-duration:.2s;transition-timing-function:cubic-bezier(.4,0,.2,1);animation:.2s dropdown}@starting-style{.dropdown[popover],.dropdown .dropdown-content{opacity:0;scale:95%}}:is(.dropdown.dropdown-open,.dropdown:not(.dropdown-hover):focus,.dropdown:focus-within)>[tabindex]:first-child{pointer-events:none}:is(.dropdown.dropdown-open,.dropdown:not(.dropdown-hover):focus,.dropdown:focus-within) .dropdown-content{opacity:1}.dropdown.dropdown-hover:hover .dropdown-content{opacity:1;scale:100%}.dropdown:is(details) summary::-webkit-details-marker{display:none}:is(.dropdown.dropdown-open,.dropdown:focus,.dropdown:focus-within) .dropdown-content{scale:100%}.dropdown:where([popover]){background:0 0}.dropdown[popover]{color:inherit;position:fixed}@supports not (position-area:bottom){.dropdown[popover]{margin:auto}.dropdown[popover].dropdown-open:not(:popover-open){transform-origin:top;opacity:0;display:none;scale:95%}.dropdown[popover]::backdrop{background-color:oklab(0% none none/.3)}}.dropdown[popover]:not(.dropdown-open,:popover-open){transform-origin:top;opacity:0;display:none;scale:95%}.btn{cursor:pointer;text-align:center;vertical-align:middle;outline-offset:2px;webkit-user-select:none;-webkit-user-select:none;-moz-user-select:none;user-select:none;padding-inline:var(--btn-p);color:var(--btn-fg);--tw-prose-links:var(--btn-fg);height:var(--size);font-size:var(--fontsize,.875rem);outline-color:var(--btn-color,var(--color-base-content));background-color:var(--btn-bg);background-size:auto,calc(var(--noise)*100%);background-image:none,var(--btn-noise);border-width:var(--border);border-style:solid;border-color:var(--btn-border);text-shadow:0 .5px oklch(100% 0 0/calc(var(--depth)*.15));box-shadow:0 .5px 0 .5px oklch(100% 0 0/calc(var(--depth)*6%))inset,var(--btn-shadow);--size:calc(var(--size-field,.25rem)*10);--btn-bg:var(--btn-color,var(--color-base-200));--btn-fg:var(--color-base-content);--btn-p:1rem;--btn-border:color-mix(in oklab,var(--btn-bg),#000 calc(var(--depth)*5%));--btn-shadow:0 3px 2px -2px color-mix(in oklab,var(--btn-bg)calc(var(--depth)*30%),#0000),0 4px 3px -2px color-mix(in oklab,var(--btn-bg)calc(var(--depth)*30%),#0000);--btn-noise:var(--fx-noise);border-start-start-radius:var(--join-ss,var(--radius-field));border-start-end-radius:var(--join-se,var(--radius-field));border-end-end-radius:var(--join-ee,var(--radius-field));border-end-start-radius:var(--join-es,var(--radius-field));flex-wrap:nowrap;flex-shrink:0;justify-content:center;align-items:center;gap:.375rem;font-weight:600;transition-property:color,background-color,border-color,box-shadow;transition-duration:.2s;transition-timing-function:cubic-bezier(0,0,.2,1);display:inline-flex}:where(.btn){width:unset}.prose .btn{text-decoration-line:none}@media (hover:hover){.btn:hover{--btn-bg:color-mix(in oklab,var(--btn-color,var(--color-base-200)),#000 7%)}}.btn:focus-visible{outline-width:2px;outline-style:solid}.btn:active:not(.btn-active){--btn-bg:color-mix(in oklab,var(--btn-color,var(--color-base-200)),#000 5%);--btn-border:color-mix(in oklab,var(--btn-color,var(--color-base-200)),#000 7%);--btn-shadow:0 0 0 0 oklch(0% 0 0/0),0 0 0 0 oklch(0% 0 0/0);translate:0 .5px}.btn:is(:disabled,[disabled],.btn-disabled){pointer-events:none;--btn-border:#0000;--btn-noise:none;--btn-fg:color-mix(in oklch,var(--color-base-content)20%,#0000)}.btn:is(:disabled,[disabled],.btn-disabled):not(.btn-link,.btn-ghost){background-color:color-mix(in oklab,var(--color-base-content)10%,transparent);box-shadow:none}@media (hover:hover){.btn:is(:disabled,[disabled],.btn-disabled):hover{pointer-events:none;background-color:color-mix(in oklab,var(--color-neutral)20%,transparent);--btn-border:#0000;--btn-fg:color-mix(in oklch,var(--color-base-content)20%,#0000)}}.btn:is(input[type=checkbox],input[type=radio]){-webkit-appearance:none;-moz-appearance:none;appearance:none}.btn:is(input[type=checkbox],input[type=radio]):after{content:attr(aria-label)}.btn:where(input:checked:not(.filter .btn)){--btn-color:var(--color-primary);--btn-fg:var(--color-primary-content);isolation:isolate}.loading{pointer-events:none;aspect-ratio:1;vertical-align:middle;width:calc(var(--size-selector,.25rem)*6);background-color:currentColor;display:inline-block;-webkit-mask-image:url("data:image/svg+xml,%3Csvg width='24' height='24' stroke='black' viewBox='0 0 24 24' xmlns='http://www.w3.org/2000/svg'%3E%3Cg transform-origin='center'%3E%3Ccircle cx='12' cy='12' r='9.5' fill='none' stroke-width='3' stroke-linecap='round'%3E%3CanimateTransform attributeName='transform' type='rotate' from='0 12 12' to='360 12 12' dur='2s' repeatCount='indefinite'/%3E%3Canimate attributeName='stroke-dasharray' values='0,150;42,150;42,150' keyTimes='0;0.475;1' dur='1.5s' repeatCount='indefinite'/%3E%3Canimate attributeName='stroke-dashoffset' values='0;-16;-59' keyTimes='0;0.475;1' dur='1.5s' repeatCount='indefinite'/%3E%3C/circle%3E%3C/g%3E%3C/svg%3E");mask-image:url("data:image/svg+xml,%3Csvg width='24' height='24' stroke='black' viewBox='0 0 24 24' xmlns='http://www.w3.org/2000/svg'%3E%3Cg transform-origin='center'%3E%3Ccircle cx='12' cy='12' r='9.5' fill='none' stroke-width='3' stroke-linecap='round'%3E%3CanimateTransform attributeName='transform' type='rotate' from='0 12 12' to='360 12 12' dur='2s' repeatCount='indefinite'/%3E%3Canimate attributeName='stroke-dasharray' values='0,150;42,150;42,150' keyTimes='0;0.475;1' dur='1.5s' repeatCount='indefinite'/%3E%3Canimate attributeName='stroke-dashoffset' values='0;-16;-59' keyTimes='0;0.475;1' dur='1.5s' repeatCount='indefinite'/%3E%3C/circle%3E%3C/g%3E%3C/svg%3E");-webkit-mask-position:50%;mask-position:50%;-webkit-mask-size:100%;mask-size:100%;-webkit-mask-repeat:no-repeat;mask-repeat:no-repeat}.invisible{visibility:hidden}.visible{visibility:visible}.list{flex-direction:column;font-size:.875rem;display:flex}.list :where(.list-row){--list-grid-cols:minmax(0,auto)1fr;border-radius:var(--radius-box);word-break:break-word;grid-auto-flow:column;grid-template-columns:var(--list-grid-cols);gap:1rem;padding:1rem;display:grid;position:relative}.list :where(.list-row):has(.list-col-grow:first-child){--list-grid-cols:1fr}.list :where(.list-row):has(.list-col-grow:nth-child(2)){--list-grid-cols:minmax(0,auto)1fr}.list :where(.list-row):has(.list-col-grow:nth-child(3)){--list-grid-cols:minmax(0,auto)minmax(0,auto)1fr}.list :where(.list-row):has(.list-col-grow:nth-child(4)){--list-grid-cols:minmax(0,auto)minmax(0,auto)minmax(0,auto)1fr}.list :where(.list-row):has(.list-col-grow:nth-child(5)){--list-grid-cols:minmax(0,auto)minmax(0,auto)minmax(0,auto)minmax(0,auto)1fr}.list :where(.list-row):has(.list-col-grow:nth-child(6)){--list-grid-cols:minmax(0,auto)minmax(0,auto)minmax(0,auto)minmax(0,auto)minmax(0,auto)1fr}.list :where(.list-row) :not(.list-col-wrap){grid-row-start:1}:is(.list>:not(:last-child).list-row,.list>:not(:last-child) .list-row):after{content:"";border-bottom:var(--border)solid;inset-inline:var(--radius-box);border-color:color-mix(in oklab,var(--color-base-content)5%,transparent);position:absolute;bottom:0}.toggle{border:var(--border)solid currentColor;color:var(--input-color);cursor:pointer;-webkit-appearance:none;-moz-appearance:none;appearance:none;vertical-align:middle;webkit-user-select:none;-webkit-user-select:none;-moz-user-select:none;user-select:none;--radius-selector-max:calc(var(--radius-selector) + var(--radius-selector) + var(--radius-selector));border-radius:calc(var(--radius-selector) + min(var(--toggle-p),var(--radius-selector-max)) + min(var(--border),var(--radius-selector-max)));padding:var(--toggle-p);box-shadow:0 1px color-mix(in oklab,currentColor calc(var(--depth)*10%),#0000)inset;--input-color:color-mix(in oklab,var(--color-base-content)50%,#0000);--toggle-p:.1875rem;--size:calc(var(--size-selector,.25rem)*6);width:calc((var(--size)*2) - (var(--border) + var(--toggle-p))*2);height:var(--size);flex-shrink:0;grid-template-columns:0fr 1fr 1fr;place-content:center;transition:color .3s,grid-template-columns .2s;display:inline-grid;position:relative}.toggle>*{z-index:1;cursor:pointer;-webkit-appearance:none;-moz-appearance:none;appearance:none;background-color:#0000;border:none;grid-column:2/span 1;grid-row-start:1;height:100%;padding:.125rem;transition:opacity .2s,rotate .4s}.toggle>:focus{--tw-outline-style:none;outline-style:none}@media (forced-colors:active){.toggle>:focus{outline-offset:2px;outline:2px solid #0000}}.toggle>:nth-child(2){color:var(--color-base-100);rotate:none}.toggle>:nth-child(3){color:var(--color-base-100);opacity:0;rotate:-15deg}.toggle:has(:checked)>:nth-child(2){opacity:0;rotate:15deg}.toggle:has(:checked)>:nth-child(3){opacity:1;rotate:none}.toggle:before{aspect-ratio:1;border-radius:var(--radius-selector);--tw-content:"";content:var(--tw-content);height:100%;box-shadow:0 -1px oklch(0% 0 0/calc(var(--depth)*.1))inset,0 8px 0 -4px oklch(100% 0 0/calc(var(--depth)*.1))inset,0 1px color-mix(in oklab,currentColor calc(var(--depth)*10%),#0000);background-color:currentColor;background-size:auto,calc(var(--noise)*100%);background-image:none,var(--fx-noise);grid-row-start:1;grid-column-start:2;transition:background-color .1s,translate .2s,inset-inline-start .2s;position:relative;inset-inline-start:0;translate:0}@media (forced-colors:active){.toggle:before{outline-style:var(--tw-outline-style);outline-offset:calc(1px*-1);outline-width:1px}}@media print{.toggle:before{outline-offset:-1rem;outline:.25rem solid}}.toggle:focus-visible,.toggle:has(:focus-visible){outline-offset:2px;outline:2px solid}.toggle:checked,.toggle[aria-checked=true],.toggle:has(>input:checked){background-color:var(--color-base-100);--input-color:var(--color-base-content);grid-template-columns:1fr 1fr 0fr}:is(.toggle:checked,.toggle[aria-checked=true],.toggle:has(>input:checked)):before{background-color:currentColor}@starting-style{:is(.toggle:checked,.toggle[aria-checked=true],.toggle:has(>input:checked)):before{opacity:0}}.toggle:indeterminate{grid-template-columns:.5fr 1fr .5fr}.toggle:disabled{cursor:not-allowed;opacity:.3}.toggle:disabled:before{border:var(--border)solid currentColor;background-color:#0000}.input{cursor:text;border:var(--border)solid #0000;-webkit-appearance:none;-moz-appearance:none;appearance:none;background-color:var(--color-base-100);vertical-align:middle;white-space:nowrap;width:clamp(3rem,20rem,100%);height:var(--size);border-color:var(--input-color);box-shadow:0 1px color-mix(in oklab,var(--input-color)calc(var(--depth)*10%),#0000)inset,0 -1px oklch(100% 0 0/calc(var(--depth)*.1))inset;--size:calc(var(--size-field,.25rem)*10);--input-color:color-mix(in oklab,var(--color-base-content)20%,#0000);border-start-start-radius:var(--join-ss,var(--radius-field));border-start-end-radius:var(--join-se,var(--radius-field));border-end-end-radius:var(--join-ee,var(--radius-field));border-end-start-radius:var(--join-es,var(--radius-field));flex-shrink:1;align-items:center;gap:.5rem;padding-inline:.75rem;font-size:.875rem;display:inline-flex;position:relative}.input:where(input){display:inline-flex}.input :where(input){-webkit-appearance:none;-moz-appearance:none;appearance:none;background-color:#0000;border:none;width:100%;height:100%;display:inline-flex}.input :where(input):focus,.input :where(input):focus-within{--tw-outline-style:none;outline-style:none}@media (forced-colors:active){:is(.input :where(input):focus,.input :where(input):focus-within){outline-offset:2px;outline:2px solid #0000}}.input:focus,.input:focus-within{--input-color:var(--color-base-content);box-shadow:0 1px color-mix(in oklab,var(--input-color)calc(var(--depth)*10%),#0000);outline:2px solid var(--input-color);outline-offset:2px;isolation:isolate}.input:has(>input[disabled]),.input:is(:disabled,[disabled]){cursor:not-allowed;border-color:var(--color-base-200);background-color:var(--color-base-200);color:color-mix(in oklab,var(--color-base-content)40%,transparent);box-shadow:none}:is(.input:has(>input[disabled]),.input:is(:disabled,[disabled]))::-moz-placeholder{color:color-mix(in oklab,var(--color-base-content)20%,transparent)}:is(.input:has(>input[disabled]),.input:is(:disabled,[disabled]))::placeholder{color:color-mix(in oklab,var(--color-base-content)20%,transparent)}.input:has(>input[disabled])>input[disabled]{cursor:not-allowed}.input::-webkit-date-and-time-value{text-align:inherit}.input[type=number]::-webkit-inner-spin-button{margin-block:-.75rem;margin-inline-end:-.75rem}.input::-webkit-calendar-picker-indicator{position:absolute;inset-inline-end:.75em}.indicator{width:-moz-max-content;width:max-content;display:inline-flex;position:relative}.indicator :where(.indicator-item){z-index:1;white-space:nowrap;top:var(--inidicator-t,0);bottom:var(--inidicator-b,auto);left:var(--inidicator-s,auto);right:var(--inidicator-e,0);translate:var(--inidicator-x,50%)var(--indicator-y,-50%);position:absolute}.table{border-radius:var(--radius-box);text-align:left;width:100%;font-size:.875rem;position:relative}.table:where(:dir(rtl),[dir=rtl],[dir=rtl] *){text-align:right}@media (hover:hover){:is(.table tr.row-hover,.table tr.row-hover:nth-child(2n)):hover{background-color:var(--color-base-200)}}.table :where(th,td){vertical-align:middle;padding-block:.75rem;padding-inline:1rem}.table :where(thead,tfoot){white-space:nowrap;color:color-mix(in oklab,var(--color-base-content)60%,transparent);font-size:.875rem;font-weight:600}.table :where(tfoot){border-top:var(--border)solid color-mix(in oklch,var(--color-base-content)5%,#0000)}.table :where(.table-pin-rows thead tr){z-index:1;background-color:var(--color-base-100);position:sticky;top:0}.table :where(.table-pin-rows tfoot tr){z-index:1;background-color:var(--color-base-100);position:sticky;bottom:0}.table :where(.table-pin-cols tr th){background-color:var(--color-base-100);position:sticky;left:0;right:0}.table :where(thead tr,tbody tr:not(:last-child)){border-bottom:var(--border)solid color-mix(in oklch,var(--color-base-content)5%,#0000)}.steps{counter-reset:step;grid-auto-columns:1fr;grid-auto-flow:column;display:inline-grid;overflow:auto hidden}.steps .step{text-align:center;--step-bg:var(--color-base-300);--step-fg:var(--color-base-content);grid-template-rows:40px 1fr;grid-template-columns:auto;place-items:center;min-width:4rem;display:grid}.steps .step:before{width:100%;height:.5rem;color:var(--step-bg);background-color:var(--step-bg);--tw-content:"";content:var(--tw-content);border:1px solid;grid-row-start:1;grid-column-start:1;margin-inline-start:-100%;top:0}.steps .step>.step-icon,.steps .step:not(:has(.step-icon)):after{content:counter(step);counter-increment:step;z-index:1;color:var(--step-fg);background-color:var(--step-bg);border:1px solid var(--step-bg);border-radius:3.40282e38px;grid-row-start:1;grid-column-start:1;place-self:center;place-items:center;width:2rem;height:2rem;display:grid;position:relative}.steps .step:first-child:before{content:none}.steps .step[data-content]:after{content:attr(data-content)}.steps .step-neutral+.step-neutral:before,.steps .step-neutral:after,.steps .step-neutral>.step-icon{--step-bg:var(--color-neutral);--step-fg:var(--color-neutral-content)}.steps .step-primary+.step-primary:before,.steps .step-primary:after,.steps .step-primary>.step-icon{--step-bg:var(--color-primary);--step-fg:var(--color-primary-content)}.steps .step-secondary+.step-secondary:before,.steps .step-secondary:after,.steps .step-secondary>.step-icon{--step-bg:var(--color-secondary);--step-fg:var(--color-secondary-content)}.steps .step-accent+.step-accent:before,.steps .step-accent:after,.steps .step-accent>.step-icon{--step-bg:var(--color-accent);--step-fg:var(--color-accent-content)}.steps .step-info+.step-info:before,.steps .step-info:after,.steps .step-info>.step-icon{--step-bg:var(--color-info);--step-fg:var(--color-info-content)}.steps .step-success+.step-success:before,.steps .step-success:after,.steps .step-success>.step-icon{--step-bg:var(--color-success);--step-fg:var(--color-success-content)}.steps .step-warning+.step-warning:before,.steps .step-warning:after,.steps .step-warning>.step-icon{--step-bg:var(--color-warning);--step-fg:var(--color-warning-content)}.steps .step-error+.step-error:before,.steps .step-error:after,.steps .step-error>.step-icon{--step-bg:var(--color-error);--step-fg:var(--color-error-content)}.range{-webkit-appearance:none;-moz-appearance:none;appearance:none;webkit-appearance:none;--range-thumb:var(--color-base-100);--range-thumb-size:calc(var(--size-selector,.25rem)*6);--range-progress:currentColor;--range-fill:1;--range-p:.25rem;--range-bg:color-mix(in oklab,currentColor 10%,#0000);cursor:pointer;vertical-align:middle;--radius-selector-max:calc(var(--radius-selector) + var(--radius-selector) + var(--radius-selector));border-radius:calc(var(--radius-selector) + min(var(--range-p),var(--radius-selector-max)));width:clamp(3rem,20rem,100%);height:var(--range-thumb-size);background-color:#0000;border:none;overflow:hidden}[dir=rtl] .range{--range-dir:-1}.range:focus{outline:none}.range:focus-visible{outline-offset:2px;outline:2px solid}.range::-webkit-slider-runnable-track{background-color:var(--range-bg);border-radius:var(--radius-selector);width:100%;height:calc(var(--range-thumb-size)*.5)}@media (forced-colors:active){.range::-webkit-slider-runnable-track{border:1px solid}.range::-moz-range-track{border:1px solid}}.range::-webkit-slider-thumb{box-sizing:border-box;border-radius:calc(var(--radius-selector) + min(var(--range-p),var(--radius-selector-max)));height:var(--range-thumb-size);width:var(--range-thumb-size);border:var(--range-p)solid;-webkit-appearance:none;appearance:none;webkit-appearance:none;color:var(--range-progress);box-shadow:0 -1px oklch(0% 0 0/calc(var(--depth)*.1))inset,0 8px 0 -4px oklch(100% 0 0/calc(var(--depth)*.1))inset,0 1px color-mix(in oklab,currentColor calc(var(--depth)*10%),#0000),0 0 0 2rem var(--range-thumb)inset,calc((var(--range-dir,1)*-100rem) - (var(--range-dir,1)*var(--range-thumb-size)/2))0 0 calc(100rem*var(--range-fill));background-color:currentColor;position:relative;top:50%;transform:translateY(-50%)}.range::-moz-range-track{background-color:var(--range-bg);border-radius:var(--radius-selector);width:100%;height:calc(var(--range-thumb-size)*.5)}.range::-moz-range-thumb{box-sizing:border-box;border-radius:calc(var(--radius-selector) + min(var(--range-p),var(--radius-selector-max)));height:var(--range-thumb-size);width:var(--range-thumb-size);border:var(--range-p)solid;color:var(--range-progress);box-shadow:0 -1px oklch(0% 0 0/calc(var(--depth)*.1))inset,0 8px 0 -4px oklch(100% 0 0/calc(var(--depth)*.1))inset,0 1px color-mix(in oklab,currentColor calc(var(--depth)*10%),#0000),0 0 0 2rem var(--range-thumb)inset,calc((var(--range-dir,1)*-100rem) - (var(--range-dir,1)*var(--range-thumb-size)/2))0 0 calc(100rem*var(--range-fill));background-color:currentColor;position:relative;top:50%}.range:disabled{cursor:not-allowed;opacity:.3}.select{border:var(--border)solid #0000;-webkit-appearance:none;-moz-appearance:none;appearance:none;background-color:var(--color-base-100);vertical-align:middle;width:clamp(3rem,20rem,100%);height:var(--size);text-overflow:ellipsis;box-shadow:0 1px color-mix(in oklab,var(--input-color)calc(var(--depth)*10%),#0000)inset,0 -1px oklch(100% 0 0/calc(var(--depth)*.1))inset;border-color:var(--input-color);--input-color:color-mix(in oklab,var(--color-base-content)20%,#0000);--size:calc(var(--size-field,.25rem)*10);background-image:linear-gradient(45deg,#0000 50%,currentColor 50%),linear-gradient(135deg,currentColor 50%,#0000 50%);background-position:calc(100% - 20px) calc(1px + 50%),calc(100% - 16.1px) calc(1px + 50%);background-repeat:no-repeat;background-size:4px 4px,4px 4px;border-start-start-radius:var(--join-ss,var(--radius-field));border-start-end-radius:var(--join-se,var(--radius-field));border-end-end-radius:var(--join-ee,var(--radius-field));border-end-start-radius:var(--join-es,var(--radius-field));flex-shrink:1;align-items:center;gap:.375rem;padding-inline:1rem 1.75rem;font-size:.875rem;display:inline-flex;position:relative}[dir=rtl] .select{background-position:12px calc(1px + 50%),16px calc(1px + 50%)}.select select{-webkit-appearance:none;-moz-appearance:none;appearance:none;background:inherit;border-radius:inherit;border-style:none;width:calc(100% + 2.75rem);height:calc(100% - 2px);margin-inline:-1rem -1.75rem;padding-inline:1rem 1.75rem}.select select:focus,.select select:focus-within{--tw-outline-style:none;outline-style:none}@media (forced-colors:active){:is(.select select:focus,.select select:focus-within){outline-offset:2px;outline:2px solid #0000}}.select select:not(:last-child){background-image:none;margin-inline-end:-1.375rem}.select:focus,.select:focus-within{--input-color:var(--color-base-content);box-shadow:0 1px color-mix(in oklab,var(--input-color)calc(var(--depth)*10%),#0000);outline:2px solid var(--input-color);outline-offset:2px}.select:has(>select[disabled]),.select:is(:disabled,[disabled]){cursor:not-allowed;border-color:var(--color-base-200);background-color:var(--color-base-200);color:color-mix(in oklab,var(--color-base-content)40%,transparent)}:is(.select:has(>select[disabled]),.select:is(:disabled,[disabled]))::-moz-placeholder{color:color-mix(in oklab,var(--color-base-content)20%,transparent)}:is(.select:has(>select[disabled]),.select:is(:disabled,[disabled]))::placeholder{color:color-mix(in oklab,var(--color-base-content)20%,transparent)}.select:has(>select[disabled])>select[disabled]{cursor:not-allowed}.checkbox{border:var(--border)solid var(--input-color,color-mix(in oklab,var(--color-base-content)20%,#0000));cursor:pointer;-webkit-appearance:none;-moz-appearance:none;appearance:none;border-radius:var(--radius-selector);vertical-align:middle;color:var(--color-base-content);box-shadow:0 1px oklch(0% 0 0/calc(var(--depth)*.1))inset,0 0 #0000 inset,0 0 #0000;--size:calc(var(--size-selector,.25rem)*6);width:var(--size);height:var(--size);background-size:auto,calc(var(--noise)*100%);background-image:none,var(--fx-noise);flex-shrink:0;padding:.25rem;transition:background-color .2s,box-shadow .2s;position:relative}.checkbox:before{--tw-content:"";content:var(--tw-content);opacity:0;clip-path:polygon(20% 100%,20% 80%,50% 80%,50% 80%,70% 80%,70% 100%);width:100%;height:100%;box-shadow:0px 3px 0 0px oklch(100% 0 0/calc(var(--depth)*.1))inset;background-color:currentColor;font-size:1rem;line-height:.75;transition:clip-path .3s .1s,opacity .1s .1s,rotate .3s .1s,translate .3s .1s;display:block;rotate:45deg}.checkbox:focus-visible{outline:2px solid var(--input-color,currentColor);outline-offset:2px}.checkbox:checked,.checkbox[aria-checked=true]{background-color:var(--input-color,#0000);box-shadow:0 0 #0000 inset,0 8px 0 -4px oklch(100% 0 0/calc(var(--depth)*.1))inset,0 1px oklch(0% 0 0/calc(var(--depth)*.1))}:is(.checkbox:checked,.checkbox[aria-checked=true]):before{clip-path:polygon(20% 100%,20% 80%,50% 80%,50% 0%,70% 0%,70% 100%);opacity:1}@media (forced-colors:active){:is(.checkbox:checked,.checkbox[aria-checked=true]):before{--tw-content:"✔︎";clip-path:none;background-color:#0000;rotate:none}}@media print{:is(.checkbox:checked,.checkbox[aria-checked=true]):before{--tw-content:"✔︎";clip-path:none;background-color:#0000;rotate:none}}.checkbox:indeterminate:before{opacity:1;clip-path:polygon(20% 100%,20% 80%,50% 80%,50% 80%,80% 80%,80% 100%);translate:0 -35%;rotate:none}.checkbox:disabled{cursor:not-allowed;opacity:.2}.radio{cursor:pointer;-webkit-appearance:none;-moz-appearance:none;appearance:none;vertical-align:middle;border:var(--border)solid var(--input-color,color-mix(in srgb,currentColor 20%,#0000));box-shadow:0 1px oklch(0% 0 0/calc(var(--depth)*.1))inset;--size:calc(var(--size-selector,.25rem)*6);width:var(--size);height:var(--size);color:var(--input-color,currentColor);border-radius:3.40282e38px;flex-shrink:0;padding:.25rem;position:relative}.radio:before{--tw-content:"";content:var(--tw-content);background-size:auto,calc(var(--noise)*100%);background-image:none,var(--fx-noise);border-radius:3.40282e38px;width:100%;height:100%;display:block}.radio:focus-visible{outline:2px solid}.radio:checked,.radio[aria-checked=true]{background-color:var(--color-base-100);border-color:currentColor;animation:.2s ease-out radio}:is(.radio:checked,.radio[aria-checked=true]):before{box-shadow:0 -1px oklch(0% 0 0/calc(var(--depth)*.1))inset,0 8px 0 -4px oklch(100% 0 0/calc(var(--depth)*.1))inset,0 1px oklch(0% 0 0/calc(var(--depth)*.1));background-color:currentColor}@media (forced-colors:active){:is(.radio:checked,.radio[aria-checked=true]):before{outline-style:var(--tw-outline-style);outline-offset:calc(1px*-1);outline-width:1px}}@media print{:is(.radio:checked,.radio[aria-checked=true]):before{outline-offset:-1rem;outline:.25rem solid}}.radio:disabled{cursor:not-allowed;opacity:.2}.absolute{position:absolute}.fixed{position:fixed}.relative{position:relative}.static{position:static}.inset-0{inset:calc(var(--spacing)*0)}.top-0{top:calc(var(--spacing)*0)}.top-1\\/2{top:50%}.top-2{top:calc(var(--spacing)*2)}.top-full{top:100%}.right-0{right:calc(var(--spacing)*0)}.right-2{right:calc(var(--spacing)*2)}.right-10{right:calc(var(--spacing)*10)}.right-full{right:100%}.bottom-0{bottom:calc(var(--spacing)*0)}.bottom-full{bottom:100%}.left-0{left:calc(var(--spacing)*0)}.left-1\\/2{left:50%}.left-full{left:100%}.modal-backdrop{color:#0000;z-index:-1;grid-row-start:1;grid-column-start:1;place-self:stretch stretch;display:grid}.modal-backdrop button{cursor:pointer}.z-10{z-index:10}.z-1001{z-index:1001}.modal-box{background-color:var(--color-base-100);border-top-left-radius:var(--modal-tl,var(--radius-box));border-top-right-radius:var(--modal-tr,var(--radius-box));border-bottom-left-radius:var(--modal-bl,var(--radius-box));border-bottom-right-radius:var(--modal-br,var(--radius-box));opacity:0;overscroll-behavior:contain;grid-row-start:1;grid-column-start:1;width:91.6667%;max-width:32rem;max-height:100vh;padding:1.5rem;transition:translate .3s ease-out,scale .3s ease-out,opacity .2s ease-out 50ms,box-shadow .3s ease-out;overflow-y:auto;scale:95%;box-shadow:0 25px 50px -12px oklch(0% 0 0/.25)}.stat-value{white-space:nowrap;grid-column-start:1;font-size:2rem;font-weight:800}.stat-desc,.stat-title{white-space:nowrap;color:color-mix(in oklab,var(--color-base-content)60%,transparent);grid-column-start:1;font-size:.75rem}.float-right{float:right}.container{width:100%}@media (width>=40rem){.container{max-width:40rem}}@media (width>=48rem){.container{max-width:48rem}}@media (width>=64rem){.container{max-width:64rem}}@media (width>=80rem){.container{max-width:80rem}}@media (width>=96rem){.container{max-width:96rem}}.divider{white-space:nowrap;height:1rem;margin:var(--divider-m,1rem 0);flex-direction:row;align-self:stretch;align-items:center;display:flex}.divider:before,.divider:after{content:"";background-color:color-mix(in oklab,var(--color-base-content)10%,transparent);flex-grow:1;width:100%;height:.125rem}@media print{.divider:before,.divider:after{border:.5px solid}}.divider:not(:empty){gap:1rem}.m-2{margin:calc(var(--spacing)*2)}.m-4{margin:calc(var(--spacing)*4)}.filter{flex-wrap:wrap;display:flex}.filter input[type=radio]{width:auto}.filter input{opacity:1;transition:margin .1s,opacity .3s,padding .3s,border-width .1s;overflow:hidden;scale:1}.filter input:not(:last-child){margin-inline-end:.25rem}.filter input.filter-reset{aspect-ratio:1}.filter input.filter-reset:after{content:"×"}.filter:not(:has(input:checked:not(.filter-reset))) .filter-reset,.filter:not(:has(input:checked:not(.filter-reset))) input[type=reset],.filter:has(input:checked:not(.filter-reset)) input:not(:checked,.filter-reset,input[type=reset]){opacity:0;border-width:0;width:0;margin-inline:0;padding-inline:0;scale:0}.mx-2{margin-inline:calc(var(--spacing)*2)}.mx-auto{margin-inline:auto}.input-sm{--size:calc(var(--size-field,.25rem)*8);font-size:.75rem}.input-sm[type=number]::-webkit-inner-spin-button{margin-block:-.5rem;margin-inline-end:-.75rem}.input-xs{--size:calc(var(--size-field,.25rem)*6);font-size:.6875rem}.input-xs[type=number]::-webkit-inner-spin-button{margin-block:-.25rem;margin-inline-end:-.75rem}.my-1{margin-block:calc(var(--spacing)*1)}.my-4{margin-block:calc(var(--spacing)*4)}.label{white-space:nowrap;color:color-mix(in oklab,currentColor 60%,transparent);align-items:center;gap:.375rem;display:inline-flex}.label:has(input){cursor:pointer}.label:is(.input>*,.select>*){white-space:nowrap;height:calc(100% - .5rem);font-size:inherit;align-items:center;padding-inline:.75rem;display:flex}.label:is(.input>*,.select>*):first-child{border-inline-end:var(--border)solid color-mix(in oklab,currentColor 10%,#0000);margin-inline:-.75rem .75rem}.label:is(.input>*,.select>*):last-child{border-inline-start:var(--border)solid color-mix(in oklab,currentColor 10%,#0000);margin-inline:.75rem -.75rem}.join-item:where(:not(:first-child)){margin-block-start:0;margin-inline-start:calc(var(--border,1px)*-1)}.modal-action{justify-content:flex-end;gap:.5rem;margin-top:1.5rem;display:flex}.mt-0{margin-top:calc(var(--spacing)*0)}.mt-1{margin-top:calc(var(--spacing)*1)}.mt-2{margin-top:calc(var(--spacing)*2)}.mt-4{margin-top:calc(var(--spacing)*4)}.mr-1{margin-right:calc(var(--spacing)*1)}.mr-2{margin-right:calc(var(--spacing)*2)}.mb-0{margin-bottom:calc(var(--spacing)*0)}.mb-1{margin-bottom:calc(var(--spacing)*1)}.mb-2{margin-bottom:calc(var(--spacing)*2)}.ml-1{margin-left:calc(var(--spacing)*1)}.ml-2{margin-left:calc(var(--spacing)*2)}.ml-2\\.5{margin-left:calc(var(--spacing)*2.5)}.ml-3{margin-left:calc(var(--spacing)*3)}.status{aspect-ratio:1;border-radius:var(--radius-selector);background-color:color-mix(in oklab,var(--color-base-content)20%,transparent);vertical-align:middle;width:.5rem;height:.5rem;color:color-mix(in oklab,var(--color-black)30%,transparent);background-position:50%;background-repeat:no-repeat;background-image:radial-gradient(circle at 35% 30%,oklch(1 0 0/calc(var(--depth)*.5)),#0000);box-shadow:0 2px 3px -1px color-mix(in oklab,currentColor calc(var(--depth)*100%),#0000);display:inline-block}.iconify{width:1em;height:1em;-webkit-mask-image:var(--svg);-webkit-mask-image:var(--svg);-webkit-mask-image:var(--svg);mask-image:var(--svg);background-color:currentColor;display:inline-block;-webkit-mask-size:100% 100%;mask-size:100% 100%;-webkit-mask-repeat:no-repeat;mask-repeat:no-repeat}.tabs{--tabs-height:auto;--tabs-direction:row;height:var(--tabs-height);flex-wrap:wrap;flex-direction:var(--tabs-direction);display:flex}.footer{grid-auto-flow:row;place-items:start;gap:2.5rem 1rem;width:100%;font-size:.875rem;line-height:1.25rem;display:grid}.footer>*{place-items:start;gap:.5rem;display:grid}.footer.footer-center{text-align:center;grid-auto-flow:column dense;place-items:center}.footer.footer-center>*{place-items:center}.stat{grid-template-columns:repeat(1,1fr);-moz-column-gap:1rem;column-gap:1rem;width:100%;padding-block:1rem;padding-inline:1.5rem;display:inline-grid}.stat:not(:last-child){border-inline-end:var(--border)dashed color-mix(in oklab,currentColor 10%,#0000);border-block-end:none}.alert{border-radius:var(--radius-box);color:var(--color-base-content);background-color:var(--alert-color,var(--color-base-200));text-align:start;border:var(--border)solid var(--color-base-200);background-size:auto,calc(var(--noise)*100%);background-image:none,var(--fx-noise);box-shadow:0 3px 0 -2px oklch(100% 0 0/calc(var(--depth)*.08))inset,0 1px color-mix(in oklab,color-mix(in oklab,#000 20%,var(--alert-color,var(--color-base-200)))calc(var(--depth)*20%),#0000),0 4px 3px -2px oklch(0% 0 0/calc(var(--depth)*.08));grid-template-columns:auto;grid-auto-flow:column;justify-content:start;place-items:center start;gap:1rem;padding-block:.75rem;padding-inline:1rem;font-size:.875rem;line-height:1.25rem;display:grid}.alert:has(:nth-child(2)){grid-template-columns:auto minmax(auto,1fr)}.alert.alert-outline{color:var(--alert-color);box-shadow:none;background-color:#0000;background-image:none}.alert.alert-dash{color:var(--alert-color);box-shadow:none;background-color:#0000;background-image:none;border-style:dashed}.alert.alert-soft{color:var(--alert-color,var(--color-base-content));background:color-mix(in oklab,var(--alert-color,var(--color-base-content))8%,var(--color-base-100));border-color:color-mix(in oklab,var(--alert-color,var(--color-base-content))10%,var(--color-base-100));box-shadow:none;background-image:none}.join{--join-ss:0;--join-se:0;--join-es:0;--join-ee:0;align-items:stretch;display:inline-flex}.join :where(.join-item){border-start-start-radius:var(--join-ss,0);border-start-end-radius:var(--join-se,0);border-end-end-radius:var(--join-ee,0);border-end-start-radius:var(--join-es,0)}.join :where(.join-item) *{--join-ss:var(--radius-field);--join-se:var(--radius-field);--join-es:var(--radius-field);--join-ee:var(--radius-field)}.join>.join-item:where(:first-child),.join :first-child:not(:last-child) :where(.join-item){--join-ss:var(--radius-field);--join-se:0;--join-es:var(--radius-field);--join-ee:0}.join>.join-item:where(:last-child),.join :last-child:not(:first-child) :where(.join-item){--join-ss:0;--join-se:var(--radius-field);--join-es:0;--join-ee:var(--radius-field)}.join>.join-item:where(:only-child),.join :only-child :where(.join-item){--join-ss:var(--radius-field);--join-se:var(--radius-field);--join-es:var(--radius-field);--join-ee:var(--radius-field)}.block{display:block}.contents{display:contents}.flex{display:flex}.grid{display:grid}.hidden{display:none}.inline{display:inline}.inline-flex{display:inline-flex}.table{display:table}.modal-bottom{place-items:end}.modal-bottom :where(.modal-box){--modal-tl:var(--radius-box);--modal-tr:var(--radius-box);--modal-bl:0;--modal-br:0;width:100%;max-width:none;height:auto;max-height:calc(100vh - 5em);translate:0 100%;scale:1}.btn-circle{width:var(--size);height:var(--size);border-radius:3.40282e38px;padding-inline:0}.h-8{height:calc(var(--spacing)*8)}.h-\\[calc\\(var\\(--size\\)\\*0\\.7\\)\\]{height:calc(var(--size)*.7)}.h-fit{height:-moz-fit-content;height:fit-content}.h-full{height:100%}.max-h-80{max-height:calc(var(--spacing)*80)}.loading-md{width:calc(var(--size-selector,.25rem)*6)}.w-10{width:calc(var(--spacing)*10)}.w-12{width:calc(var(--spacing)*12)}.w-20{width:calc(var(--spacing)*20)}.w-24{width:calc(var(--spacing)*24)}.w-28{width:calc(var(--spacing)*28)}.w-32{width:calc(var(--spacing)*32)}.w-64{width:calc(var(--spacing)*64)}.w-\\[6rem\\]{width:6rem}.w-fit{width:-moz-fit-content;width:fit-content}.w-full{width:100%}.w-max{width:-moz-max-content;width:max-content}.max-w-\\(--breakpoint-lg\\){max-width:var(--breakpoint-lg)}.min-w-8{min-width:calc(var(--spacing)*8)}.min-w-24{min-width:calc(var(--spacing)*24)}.min-w-32{min-width:calc(var(--spacing)*32)}.min-w-\\[0\\.05rem\\]{min-width:.05rem}.min-w-\\[7\\.5rem\\]{min-width:7.5rem}.min-w-\\[180px\\]{min-width:180px}.flex-1{flex:1}.grow{flex-grow:1}.translate-x-\\[-50\\%\\]{--tw-translate-x:-50%;translate:var(--tw-translate-x)var(--tw-translate-y)}.-translate-y-1\\/2{--tw-translate-y:calc(calc(1/2*100%)*-1);translate:var(--tw-translate-x)var(--tw-translate-y)}.translate-y-\\[-50\\%\\]{--tw-translate-y:-50%;translate:var(--tw-translate-x)var(--tw-translate-y)}.transform{transform:var(--tw-rotate-x)var(--tw-rotate-y)var(--tw-rotate-z)var(--tw-skew-x)var(--tw-skew-y)}.skeleton{border-radius:var(--radius-box);background-color:var(--color-base-300);will-change:background-position;background-image:linear-gradient(105deg,#0000 0% 40%,var(--color-base-100)50%,#0000 60% 100%);background-position-x:-50%;background-repeat:no-repeat;background-size:200%;animation:1.8s ease-in-out infinite skeleton}@media (prefers-reduced-motion:reduce){.skeleton{transition-duration:15s}}.link{cursor:pointer;text-decoration-line:underline}.link:focus{--tw-outline-style:none;outline-style:none}@media (forced-colors:active){.link:focus{outline-offset:2px;outline:2px solid #0000}}.link:focus-visible{outline-offset:2px;outline:2px solid}.cursor-pointer{cursor:pointer}.resize{resize:both}.list-inside{list-style-position:inside}.list-outside{list-style-position:outside}.list-disc{list-style-type:disc}.flex-col{flex-direction:column}.flex-row{flex-direction:row}.flex-wrap{flex-wrap:wrap}.items-center{align-items:center}.items-end{align-items:flex-end}.justify-between{justify-content:space-between}.justify-center{justify-content:center}.gap-0\\.5{gap:calc(var(--spacing)*.5)}.gap-1{gap:calc(var(--spacing)*1)}.gap-x-1{-moz-column-gap:calc(var(--spacing)*1);column-gap:calc(var(--spacing)*1)}.gap-x-6{-moz-column-gap:calc(var(--spacing)*6);column-gap:calc(var(--spacing)*6)}.gap-y-1{row-gap:calc(var(--spacing)*1)}.gap-y-2{row-gap:calc(var(--spacing)*2)}.truncate{text-overflow:ellipsis;white-space:nowrap;overflow:hidden}.overflow-scroll{overflow:scroll}.overflow-visible{overflow:visible}.overflow-x-auto{overflow-x:auto}.rounded-lg{border-radius:var(--radius-lg)}.rounded-md{border-radius:var(--radius-md)}.rounded-none{border-radius:0}.rounded-sm{border-radius:var(--radius-sm)}.rounded-t-md{border-top-left-radius:var(--radius-md);border-top-right-radius:var(--radius-md)}.rounded-t-none{border-top-left-radius:0;border-top-right-radius:0}.rounded-tr-md{border-top-right-radius:var(--radius-md)}.rounded-b-md{border-bottom-right-radius:var(--radius-md);border-bottom-left-radius:var(--radius-md)}.rounded-b-none{border-bottom-right-radius:0;border-bottom-left-radius:0}.border{border-style:var(--tw-border-style);border-width:1px}.border-0{border-style:var(--tw-border-style);border-width:0}.border-2{border-style:var(--tw-border-style);border-width:2px}.border-b{border-bottom-style:var(--tw-border-style);border-bottom-width:1px}.border-b-2{border-bottom-style:var(--tw-border-style);border-bottom-width:2px}.select-ghost{box-shadow:none;background-color:#0000;border-color:#0000;transition:background-color .2s}.select-ghost:focus,.select-ghost:focus-within{background-color:var(--color-base-100);color:var(--color-base-content);box-shadow:none;border-color:#0000}.input-ghost{box-shadow:none;background-color:#0000;border-color:#0000}.input-ghost:focus,.input-ghost:focus-within{background-color:var(--color-base-100);color:var(--color-base-content);box-shadow:none;border-color:#0000}.alert-error{border-color:var(--color-error);color:var(--color-error-content);--alert-color:var(--color-error)}.border-gray-100{border-color:var(--color-gray-100)}.border-gray-200{border-color:var(--color-gray-200)}.border-gray-300{border-color:var(--color-gray-300)}.border-gray-500{border-color:var(--color-gray-500)}.bg-blue-300{background-color:var(--color-blue-300)}.bg-red-200{background-color:var(--color-red-200)}.bg-transparent{background-color:#0000}.bg-white{background-color:var(--color-white)}.p-0{padding:calc(var(--spacing)*0)}.p-1{padding:calc(var(--spacing)*1)}.p-1\\.5{padding:calc(var(--spacing)*1.5)}.p-2{padding:calc(var(--spacing)*2)}.p-4{padding:calc(var(--spacing)*4)}.px-1{padding-inline:calc(var(--spacing)*1)}.px-2{padding-inline:calc(var(--spacing)*2)}.px-3{padding-inline:calc(var(--spacing)*3)}.px-4{padding-inline:calc(var(--spacing)*4)}.py-1{padding-block:calc(var(--spacing)*1)}.py-2{padding-block:calc(var(--spacing)*2)}.py-16{padding-block:calc(var(--spacing)*16)}.pr-14{padding-right:calc(var(--spacing)*14)}.text-center{text-align:center}.text-justify{text-align:justify}.text-2xl{font-size:var(--text-2xl);line-height:var(--tw-leading,var(--text-2xl--line-height))}.text-base{font-size:var(--text-base);line-height:var(--tw-leading,var(--text-base--line-height))}.text-lg{font-size:var(--text-lg);line-height:var(--tw-leading,var(--text-lg--line-height))}.text-sm{font-size:var(--text-sm);line-height:var(--tw-leading,var(--text-sm--line-height))}.text-xl{font-size:var(--text-xl);line-height:var(--tw-leading,var(--text-xl--line-height))}.text-xs{font-size:var(--text-xs);line-height:var(--tw-leading,var(--text-xs--line-height))}.select-sm{--size:calc(var(--size-field,.25rem)*8);font-size:.75rem}.select-xs{--size:calc(var(--size-field,.25rem)*6);font-size:.6875rem}.leading-5{--tw-leading:calc(var(--spacing)*5);line-height:calc(var(--spacing)*5)}.font-bold{--tw-font-weight:var(--font-weight-bold);font-weight:var(--font-weight-bold)}.font-medium{--tw-font-weight:var(--font-weight-medium);font-weight:var(--font-weight-medium)}.font-normal{--tw-font-weight:var(--font-weight-normal);font-weight:var(--font-weight-normal)}.text-nowrap{text-wrap:nowrap}.text-wrap{text-wrap:wrap}.break-words{overflow-wrap:break-word}.whitespace-nowrap{white-space:nowrap}.text-\\[\\#606060\\]{color:#606060}.text-black{color:var(--color-black)}.text-blue-600{color:var(--color-blue-600)}.text-gray-500{color:var(--color-gray-500)}.text-gray-600{color:var(--color-gray-600)}.text-neutral-500{color:var(--color-neutral-500)}.text-red-600{color:var(--color-red-600)}.text-red-700{color:var(--color-red-700)}.underline{text-decoration-line:underline}.shadow{--tw-shadow:0 1px 3px 0 var(--tw-shadow-color,#0000001a),0 1px 2px -1px var(--tw-shadow-color,#0000001a);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.shadow-lg{--tw-shadow:0 10px 15px -3px var(--tw-shadow-color,#0000001a),0 4px 6px -4px var(--tw-shadow-color,#0000001a);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.shadow-md{--tw-shadow:0 4px 6px -1px var(--tw-shadow-color,#0000001a),0 2px 4px -2px var(--tw-shadow-color,#0000001a);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.shadow-sm{--tw-shadow:0 1px 3px 0 var(--tw-shadow-color,#0000001a),0 1px 2px -1px var(--tw-shadow-color,#0000001a);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.shadow-xs{--tw-shadow:0 1px 2px 0 var(--tw-shadow-color,#0000000d);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.outline{outline-style:var(--tw-outline-style);outline-width:1px}.btn-ghost:not(.btn-active,:hover,:active:focus,:focus-visible){--btn-shadow:"";--btn-bg:#0000;--btn-border:#0000;--btn-noise:none}.btn-ghost:not(.btn-active,:hover,:active:focus,:focus-visible):not(:disabled,[disabled],.btn-disabled){--btn-fg:currentColor;outline-color:currentColor}.blur{--tw-blur:blur(8px);filter:var(--tw-blur,)var(--tw-brightness,)var(--tw-contrast,)var(--tw-grayscale,)var(--tw-hue-rotate,)var(--tw-invert,)var(--tw-saturate,)var(--tw-sepia,)var(--tw-drop-shadow,)}.filter{filter:var(--tw-blur,)var(--tw-brightness,)var(--tw-contrast,)var(--tw-grayscale,)var(--tw-hue-rotate,)var(--tw-invert,)var(--tw-saturate,)var(--tw-sepia,)var(--tw-drop-shadow,)}.transition-colors{transition-property:color,background-color,border-color,outline-color,text-decoration-color,fill,stroke,--tw-gradient-from,--tw-gradient-via,--tw-gradient-to;transition-timing-function:var(--tw-ease,var(--default-transition-timing-function));transition-duration:var(--tw-duration,var(--default-transition-duration))}.duration-150{--tw-duration:.15s;transition-duration:.15s}.btn-outline:not(.btn-active,:hover,:active:focus,:focus-visible,:disabled,[disabled],.btn-disabled,:checked){--btn-shadow:"";--btn-bg:#0000;--btn-fg:var(--btn-color);--btn-border:var(--btn-color);--btn-noise:none}.btn-sm{--fontsize:.75rem;--btn-p:.75rem;--size:calc(var(--size-field,.25rem)*8)}.btn-xs{--fontsize:.6875rem;--btn-p:.5rem;--size:calc(var(--size-field,.25rem)*6)}.select-text{-webkit-user-select:text;-moz-user-select:text;user-select:text}.input-error,.input-error:focus,.input-error:focus-within{--input-color:var(--color-error)}.loading-spinner{-webkit-mask-image:url("data:image/svg+xml,%3Csvg width='24' height='24' stroke='black' viewBox='0 0 24 24' xmlns='http://www.w3.org/2000/svg'%3E%3Cg transform-origin='center'%3E%3Ccircle cx='12' cy='12' r='9.5' fill='none' stroke-width='3' stroke-linecap='round'%3E%3CanimateTransform attributeName='transform' type='rotate' from='0 12 12' to='360 12 12' dur='2s' repeatCount='indefinite'/%3E%3Canimate attributeName='stroke-dasharray' values='0,150;42,150;42,150' keyTimes='0;0.475;1' dur='1.5s' repeatCount='indefinite'/%3E%3Canimate attributeName='stroke-dashoffset' values='0;-16;-59' keyTimes='0;0.475;1' dur='1.5s' repeatCount='indefinite'/%3E%3C/circle%3E%3C/g%3E%3C/svg%3E");mask-image:url("data:image/svg+xml,%3Csvg width='24' height='24' stroke='black' viewBox='0 0 24 24' xmlns='http://www.w3.org/2000/svg'%3E%3Cg transform-origin='center'%3E%3Ccircle cx='12' cy='12' r='9.5' fill='none' stroke-width='3' stroke-linecap='round'%3E%3CanimateTransform attributeName='transform' type='rotate' from='0 12 12' to='360 12 12' dur='2s' repeatCount='indefinite'/%3E%3Canimate attributeName='stroke-dasharray' values='0,150;42,150;42,150' keyTimes='0;0.475;1' dur='1.5s' repeatCount='indefinite'/%3E%3Canimate attributeName='stroke-dashoffset' values='0;-16;-59' keyTimes='0;0.475;1' dur='1.5s' repeatCount='indefinite'/%3E%3C/circle%3E%3C/g%3E%3C/svg%3E")}.mdi--chevron-left{--svg:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' width='24' height='24'%3E%3Cpath fill='black' d='M15.41 16.58L10.83 12l4.58-4.59L14 6l-6 6l6 6z'/%3E%3C/svg%3E")}.mdi--chevron-left-first{--svg:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' width='24' height='24'%3E%3Cpath fill='black' d='M18.41 16.59L13.82 12l4.59-4.59L17 6l-6 6l6 6zM6 6h2v12H6z'/%3E%3C/svg%3E")}.mdi--chevron-right{--svg:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' width='24' height='24'%3E%3Cpath fill='black' d='M8.59 16.58L13.17 12L8.59 7.41L10 6l6 6l-6 6z'/%3E%3C/svg%3E")}.mdi--chevron-right-last{--svg:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' width='24' height='24'%3E%3Cpath fill='black' d='M5.59 7.41L10.18 12l-4.59 4.59L7 18l6-6l-6-6zM16 6h2v12h-2z'/%3E%3C/svg%3E")}.mdi--fullscreen{--svg:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' width='24' height='24'%3E%3Cpath fill='black' d='M5 5h5v2H7v3H5zm9 0h5v5h-2V7h-3zm3 9h2v5h-5v-2h3zm-7 3v2H5v-5h2v3z'/%3E%3C/svg%3E")}.mdi--fullscreen-exit{--svg:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' width='24' height='24'%3E%3Cpath fill='black' d='M14 14h5v2h-3v3h-2zm-9 0h5v5H8v-3H5zm3-9h2v5H5V8h3zm11 3v2h-5V5h2v3z'/%3E%3C/svg%3E")}.mdi--reload{--svg:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' width='24' height='24'%3E%3Cpath fill='black' d='M2 12a9 9 0 0 0 9 9c2.39 0 4.68-.94 6.4-2.6l-1.5-1.5A6.7 6.7 0 0 1 11 19c-6.24 0-9.36-7.54-4.95-11.95S18 5.77 18 12h-3l4 4h.1l3.9-4h-3a9 9 0 0 0-18 0'/%3E%3C/svg%3E")}@media (hover:hover){.peer-hover\\:visible:is(:where(.peer):hover~*){visibility:visible}.hover\\:scale-90:hover{--tw-scale-x:90%;--tw-scale-y:90%;--tw-scale-z:90%;scale:var(--tw-scale-x)var(--tw-scale-y)}.hover\\:scale-110:hover{--tw-scale-x:110%;--tw-scale-y:110%;--tw-scale-z:110%;scale:var(--tw-scale-x)var(--tw-scale-y)}.hover\\:bg-gray-100:hover{background-color:var(--color-gray-100)}.hover\\:font-bold:hover{--tw-font-weight:var(--font-weight-bold);font-weight:var(--font-weight-bold)}.hover\\:text-blue-700:hover{color:var(--color-blue-700)}.hover\\:text-blue-800:hover{color:var(--color-blue-800)}.hover\\:text-gray-400:hover{color:var(--color-gray-400)}.hover\\:text-gray-700:hover{color:var(--color-gray-700)}}.focus\\:outline-none:focus{--tw-outline-style:none;outline-style:none}@media (width>=40rem){.sm\\:modal-middle{place-items:center}.sm\\:modal-middle :where(.modal-box){--modal-tl:var(--radius-box);--modal-tr:var(--radius-box);--modal-bl:var(--radius-box);--modal-br:var(--radius-box);width:91.6667%;max-width:32rem;height:auto;max-height:calc(100vh - 5em);translate:0 2%;scale:98%}.sm\\:max-w-5xl{max-width:var(--container-5xl)}.sm\\:flex-row{flex-direction:row}.sm\\:text-4xl{font-size:var(--text-4xl);line-height:var(--tw-leading,var(--text-4xl--line-height))}}@container (width>=2rem){.\\@\\[2rem\\]\\:visible{visibility:visible}}@container (width>=6rem){.\\@\\[6rem\\]\\:visible{visibility:visible}}@container (width>=14rem){.\\@4xs\\:flex-row{flex-direction:row}.\\@4xs\\:rounded-l-none{border-top-left-radius:0;border-bottom-left-radius:0}.\\@4xs\\:rounded-tr-none{border-top-right-radius:0}.\\@4xs\\:rounded-bl-md{border-bottom-left-radius:var(--radius-md)}}@container (width>=28rem){.\\@md\\:flex-row{flex-direction:row}.\\@md\\:rounded-l-md{border-top-left-radius:var(--radius-md);border-bottom-left-radius:var(--radius-md)}.\\@md\\:rounded-l-none{border-top-left-radius:0;border-bottom-left-radius:0}.\\@md\\:rounded-r-md{border-top-right-radius:var(--radius-md);border-bottom-right-radius:var(--radius-md)}.\\@md\\:rounded-r-none{border-top-right-radius:0;border-bottom-right-radius:0}}@container (width>=36rem){.\\@xl\\:block{display:block}.\\@xl\\:justify-end{justify-content:flex-end}}}@keyframes skeleton{0%{background-position:150%}to{background-position:-50%}}@keyframes progress{50%{background-position-x:-115%}}@keyframes radio{0%{padding:5px}50%{padding:3px}}@keyframes dropdown{0%{opacity:0}}@keyframes rating{0%,40%{filter:brightness(1.05)contrast(1.05);scale:1.1}}@keyframes toast{0%{opacity:0;scale:.9}to{opacity:1;scale:1}}@property --tw-translate-x{syntax:"*";inherits:false;initial-value:0}@property --tw-translate-y{syntax:"*";inherits:false;initial-value:0}@property --tw-translate-z{syntax:"*";inherits:false;initial-value:0}@property --tw-rotate-x{syntax:"*";inherits:false;initial-value:rotateX(0)}@property --tw-rotate-y{syntax:"*";inherits:false;initial-value:rotateY(0)}@property --tw-rotate-z{syntax:"*";inherits:false;initial-value:rotateZ(0)}@property --tw-skew-x{syntax:"*";inherits:false;initial-value:skewX(0)}@property --tw-skew-y{syntax:"*";inherits:false;initial-value:skewY(0)}@property --tw-border-style{syntax:"*";inherits:false;initial-value:solid}@property --tw-leading{syntax:"*";inherits:false}@property --tw-font-weight{syntax:"*";inherits:false}@property --tw-shadow{syntax:"*";inherits:false;initial-value:0 0 #0000}@property --tw-shadow-color{syntax:"*";inherits:false}@property --tw-inset-shadow{syntax:"*";inherits:false;initial-value:0 0 #0000}@property --tw-inset-shadow-color{syntax:"*";inherits:false}@property --tw-ring-color{syntax:"*";inherits:false}@property --tw-ring-shadow{syntax:"*";inherits:false;initial-value:0 0 #0000}@property --tw-inset-ring-color{syntax:"*";inherits:false}@property --tw-inset-ring-shadow{syntax:"*";inherits:false;initial-value:0 0 #0000}@property --tw-ring-inset{syntax:"*";inherits:false}@property --tw-ring-offset-width{syntax:"<length>";inherits:false;initial-value:0}@property --tw-ring-offset-color{syntax:"*";inherits:false;initial-value:#fff}@property --tw-ring-offset-shadow{syntax:"*";inherits:false;initial-value:0 0 #0000}@property --tw-outline-style{syntax:"*";inherits:false;initial-value:solid}@property --tw-blur{syntax:"*";inherits:false}@property --tw-brightness{syntax:"*";inherits:false}@property --tw-contrast{syntax:"*";inherits:false}@property --tw-grayscale{syntax:"*";inherits:false}@property --tw-hue-rotate{syntax:"*";inherits:false}@property --tw-invert{syntax:"*";inherits:false}@property --tw-opacity{syntax:"*";inherits:false}@property --tw-saturate{syntax:"*";inherits:false}@property --tw-sepia{syntax:"*";inherits:false}@property --tw-drop-shadow{syntax:"*";inherits:false}@property --tw-duration{syntax:"*";inherits:false}@property --tw-scale-x{syntax:"*";inherits:false;initial-value:1}@property --tw-scale-y{syntax:"*";inherits:false;initial-value:1}@property --tw-scale-z{syntax:"*";inherits:false;initial-value:1}
|
|
2466
2469
|
`;
|
|
2467
2470
|
var __defProp$f = Object.defineProperty;
|
|
2468
2471
|
var __decorateClass$f = (decorators, target, key, kind) => {
|
|
@@ -6438,7 +6441,10 @@ function getFilteredMutationOverTimeData$1({
|
|
|
6438
6441
|
displayedSegments,
|
|
6439
6442
|
displayedMutationTypes,
|
|
6440
6443
|
proportionInterval,
|
|
6441
|
-
displayMutations
|
|
6444
|
+
displayMutations,
|
|
6445
|
+
mutationFilterValue,
|
|
6446
|
+
sequenceType,
|
|
6447
|
+
annotationProvider
|
|
6442
6448
|
}) {
|
|
6443
6449
|
const filteredData = new Map2dView(data);
|
|
6444
6450
|
const displayMutationsSet = displayMutations === void 0 ? null : new Set(displayMutations.map((it) => it.toUpperCase()));
|
|
@@ -6452,6 +6458,9 @@ function getFilteredMutationOverTimeData$1({
|
|
|
6452
6458
|
if (displayMutationsSet !== null && !displayMutationsSet.has(entry.mutation.code)) {
|
|
6453
6459
|
return true;
|
|
6454
6460
|
}
|
|
6461
|
+
if (applySearchFilter(entry.mutation, sequenceType, mutationFilterValue, annotationProvider)) {
|
|
6462
|
+
return true;
|
|
6463
|
+
}
|
|
6455
6464
|
return displayedMutationTypes.some(
|
|
6456
6465
|
(mutationType) => mutationType.type === entry.mutation.type && !mutationType.checked
|
|
6457
6466
|
);
|
|
@@ -6461,6 +6470,21 @@ function getFilteredMutationOverTimeData$1({
|
|
|
6461
6470
|
});
|
|
6462
6471
|
return filteredData;
|
|
6463
6472
|
}
|
|
6473
|
+
function applySearchFilter(mutation, sequenceType, filterValue, annotationProvider) {
|
|
6474
|
+
if (filterValue === "") {
|
|
6475
|
+
return false;
|
|
6476
|
+
}
|
|
6477
|
+
if (mutation.code.includes(filterValue)) {
|
|
6478
|
+
return false;
|
|
6479
|
+
}
|
|
6480
|
+
const mutationAnnotations = annotationProvider(mutation, sequenceType);
|
|
6481
|
+
if (mutationAnnotations === void 0 || mutationAnnotations.length === 0) {
|
|
6482
|
+
return true;
|
|
6483
|
+
}
|
|
6484
|
+
return !mutationAnnotations.some(
|
|
6485
|
+
(annotation) => annotation.description.includes(filterValue) || annotation.name.includes(filterValue) || annotation.symbol.includes(filterValue)
|
|
6486
|
+
);
|
|
6487
|
+
}
|
|
6464
6488
|
const MutationsOverTimeGridTooltip = ({
|
|
6465
6489
|
mutation,
|
|
6466
6490
|
date,
|
|
@@ -6628,6 +6652,19 @@ const Tooltip = ({ children, content, position = "bottom" }) => {
|
|
|
6628
6652
|
)
|
|
6629
6653
|
] });
|
|
6630
6654
|
};
|
|
6655
|
+
const pageSizeContext = createContext$1({
|
|
6656
|
+
pageSize: -1,
|
|
6657
|
+
setPageSize: () => {
|
|
6658
|
+
throw new Error("pageSizeContext not initialized");
|
|
6659
|
+
}
|
|
6660
|
+
});
|
|
6661
|
+
function usePageSizeContext() {
|
|
6662
|
+
return x$1(pageSizeContext);
|
|
6663
|
+
}
|
|
6664
|
+
const PageSizeContextProvider = ({ children, pageSizes }) => {
|
|
6665
|
+
const [pageSize, setPageSize] = d(typeof pageSizes === "number" ? pageSizes : pageSizes.at(0) ?? 10);
|
|
6666
|
+
return /* @__PURE__ */ u$1(pageSizeContext.Provider, { value: { pageSize, setPageSize }, children });
|
|
6667
|
+
};
|
|
6631
6668
|
const pageSizesSchema = z$2.union([z$2.array(z$2.number()), z$2.number()]);
|
|
6632
6669
|
function Pagination({
|
|
6633
6670
|
table,
|
|
@@ -6660,6 +6697,7 @@ function PageSizeSelector({
|
|
|
6660
6697
|
table,
|
|
6661
6698
|
pageSizes
|
|
6662
6699
|
}) {
|
|
6700
|
+
const { pageSize, setPageSize } = usePageSizeContext();
|
|
6663
6701
|
if (typeof pageSizes === "number" || pageSizes.length <= 1) {
|
|
6664
6702
|
return null;
|
|
6665
6703
|
}
|
|
@@ -6669,13 +6707,20 @@ function PageSizeSelector({
|
|
|
6669
6707
|
"select",
|
|
6670
6708
|
{
|
|
6671
6709
|
className: `select select-ghost select-sm ${heightForSmallerLines}`,
|
|
6672
|
-
value:
|
|
6710
|
+
value: pageSize,
|
|
6673
6711
|
onChange: (e2) => {
|
|
6674
|
-
var _a;
|
|
6675
|
-
|
|
6712
|
+
var _a, _b;
|
|
6713
|
+
const pageSize2 = Number((_a = e2.currentTarget) == null ? void 0 : _a.value);
|
|
6714
|
+
if (Number.isNaN(pageSize2)) {
|
|
6715
|
+
throw new Error(
|
|
6716
|
+
`Invalid page size selected: The value ${(_b = e2.currentTarget) == null ? void 0 : _b.value} could not be parsed as a number.`
|
|
6717
|
+
);
|
|
6718
|
+
}
|
|
6719
|
+
setPageSize(pageSize2);
|
|
6720
|
+
table.setPageSize(pageSize2);
|
|
6676
6721
|
},
|
|
6677
6722
|
"aria-label": "Select number of rows per page",
|
|
6678
|
-
children: pageSizes.map((
|
|
6723
|
+
children: pageSizes.map((pageSize2) => /* @__PURE__ */ u$1("option", { value: pageSize2, children: pageSize2 }, pageSize2))
|
|
6679
6724
|
}
|
|
6680
6725
|
)
|
|
6681
6726
|
] });
|
|
@@ -6695,7 +6740,7 @@ function GotoPageSelector({ table }) {
|
|
|
6695
6740
|
defaultValue: table.getState().pagination.pageIndex + 1,
|
|
6696
6741
|
onChange: (e2) => {
|
|
6697
6742
|
const page = e2.currentTarget.value ? Number(e2.currentTarget.value) - 1 : 0;
|
|
6698
|
-
table.setPageIndex(page);
|
|
6743
|
+
table.setPageIndex(Math.min(page, table.getPageCount() - 1));
|
|
6699
6744
|
},
|
|
6700
6745
|
className: `input input-ghost input-sm ${heightForSmallerLines}`,
|
|
6701
6746
|
"aria-label": "Enter page number to go to"
|
|
@@ -6775,6 +6820,14 @@ function usePreactTable(options2) {
|
|
|
6775
6820
|
(_a = options2.onStateChange) == null ? void 0 : _a.call(options2, updater);
|
|
6776
6821
|
}
|
|
6777
6822
|
}));
|
|
6823
|
+
const { pageSize } = usePageSizeContext();
|
|
6824
|
+
y(
|
|
6825
|
+
() => {
|
|
6826
|
+
tableRef.current.setPageSize(pageSize);
|
|
6827
|
+
},
|
|
6828
|
+
[pageSize]
|
|
6829
|
+
// eslint-disable-line react-hooks/exhaustive-deps -- only run this when the pageSize changes
|
|
6830
|
+
);
|
|
6778
6831
|
return tableRef.current;
|
|
6779
6832
|
}
|
|
6780
6833
|
const MutationsOverTimeGrid = ({
|
|
@@ -6789,10 +6842,6 @@ const MutationsOverTimeGrid = ({
|
|
|
6789
6842
|
return { mutation: allMutations[index], values: [...row] };
|
|
6790
6843
|
});
|
|
6791
6844
|
}, [data]);
|
|
6792
|
-
const [pagination, setPagination] = d({
|
|
6793
|
-
pageIndex: 0,
|
|
6794
|
-
pageSize: typeof pageSizes === "number" ? pageSizes : pageSizes.at(0) ?? 10
|
|
6795
|
-
});
|
|
6796
6845
|
const columns = T$1(() => {
|
|
6797
6846
|
const columnHelper = createColumnHelper();
|
|
6798
6847
|
const dates = data.getSecondAxisKeys();
|
|
@@ -6834,15 +6883,17 @@ const MutationsOverTimeGrid = ({
|
|
|
6834
6883
|
});
|
|
6835
6884
|
return [mutationHeader, ...dateHeaders];
|
|
6836
6885
|
}, [colorScale, data, sequenceType]);
|
|
6886
|
+
const { pageSize } = usePageSizeContext();
|
|
6837
6887
|
const table = usePreactTable({
|
|
6838
6888
|
data: tableData,
|
|
6839
6889
|
columns,
|
|
6840
6890
|
getCoreRowModel: getCoreRowModel(),
|
|
6841
6891
|
getPaginationRowModel: getPaginationRowModel(),
|
|
6842
|
-
|
|
6843
|
-
|
|
6844
|
-
|
|
6845
|
-
|
|
6892
|
+
initialState: {
|
|
6893
|
+
pagination: {
|
|
6894
|
+
pageIndex: 0,
|
|
6895
|
+
pageSize
|
|
6896
|
+
}
|
|
6846
6897
|
}
|
|
6847
6898
|
});
|
|
6848
6899
|
return /* @__PURE__ */ u$1("div", { className: "w-full", children: [
|
|
@@ -6897,6 +6948,40 @@ const ColorScaleSelectorDropdown = ({
|
|
|
6897
6948
|
}) => {
|
|
6898
6949
|
return /* @__PURE__ */ u$1("div", { className: "w-20 inline-flex", children: /* @__PURE__ */ u$1(Dropdown, { buttonTitle: `Color scale`, placement: "bottom-start", children: /* @__PURE__ */ u$1(ColorScaleSelector, { colorScale, setColorScale }) }) });
|
|
6899
6950
|
};
|
|
6951
|
+
function DeleteIcon() {
|
|
6952
|
+
return /* @__PURE__ */ u$1(Fragment, { children: "×" });
|
|
6953
|
+
}
|
|
6954
|
+
function MutationsOverTimeTextFilter({ setFilterValue, value }) {
|
|
6955
|
+
const onInput = (newValue) => {
|
|
6956
|
+
setFilterValue(newValue);
|
|
6957
|
+
};
|
|
6958
|
+
const onDeleteClick = () => setFilterValue("");
|
|
6959
|
+
return /* @__PURE__ */ u$1("div", { className: "w-28 inline-flex", children: /* @__PURE__ */ u$1(Dropdown, { buttonTitle: value === "" ? `Filter mutations` : value, placement: "bottom-start", children: /* @__PURE__ */ u$1("div", { children: /* @__PURE__ */ u$1("label", { className: "flex gap-1 input input-xs", children: [
|
|
6960
|
+
/* @__PURE__ */ u$1(DebouncedInput, { placeholder: "Filter", onInput, value, type: "text" }),
|
|
6961
|
+
value !== void 0 && value !== "" && /* @__PURE__ */ u$1("button", { className: "cursor-pointer", onClick: onDeleteClick, children: /* @__PURE__ */ u$1(DeleteIcon, {}) })
|
|
6962
|
+
] }) }) }) });
|
|
6963
|
+
}
|
|
6964
|
+
function DebouncedInput({
|
|
6965
|
+
value: initialValue,
|
|
6966
|
+
onInput,
|
|
6967
|
+
debounce: debounce2 = 500,
|
|
6968
|
+
...props
|
|
6969
|
+
}) {
|
|
6970
|
+
const [value, setValue] = d(initialValue);
|
|
6971
|
+
y(() => {
|
|
6972
|
+
setValue(initialValue);
|
|
6973
|
+
}, [initialValue]);
|
|
6974
|
+
y(() => {
|
|
6975
|
+
const timeout = setTimeout(() => {
|
|
6976
|
+
onInput(value ?? "");
|
|
6977
|
+
}, debounce2);
|
|
6978
|
+
return () => clearTimeout(timeout);
|
|
6979
|
+
}, [value, debounce2, onInput]);
|
|
6980
|
+
const onChangeInput = q$1((event) => {
|
|
6981
|
+
setValue(event.currentTarget.value);
|
|
6982
|
+
}, []);
|
|
6983
|
+
return /* @__PURE__ */ u$1("input", { ...props, value, onInput: onChangeInput });
|
|
6984
|
+
}
|
|
6900
6985
|
function useWebWorker(messageToWorker, WorkerConstructor) {
|
|
6901
6986
|
const [data, setData] = d(void 0);
|
|
6902
6987
|
const [error, setError] = d(void 0);
|
|
@@ -6999,6 +7084,8 @@ const MutationsOverTimeTabs$1 = ({
|
|
|
6999
7084
|
originalComponentProps,
|
|
7000
7085
|
overallMutationData
|
|
7001
7086
|
}) => {
|
|
7087
|
+
const [mutationFilterValue, setMutationFilterValue] = d("");
|
|
7088
|
+
const annotationProvider = useMutationAnnotationsProvider();
|
|
7002
7089
|
const [proportionInterval, setProportionInterval] = d(originalComponentProps.initialMeanProportionInterval);
|
|
7003
7090
|
const [colorScale, setColorScale] = d({ min: 0, max: 1, color: "indigo" });
|
|
7004
7091
|
const [displayedSegments, setDisplayedSegments] = useDisplayedSegments$1(originalComponentProps.sequenceType);
|
|
@@ -7006,7 +7093,6 @@ const MutationsOverTimeTabs$1 = ({
|
|
|
7006
7093
|
{ label: "Substitutions", checked: true, type: "substitution" },
|
|
7007
7094
|
{ label: "Deletions", checked: true, type: "deletion" }
|
|
7008
7095
|
]);
|
|
7009
|
-
const displayMutations = originalComponentProps.displayMutations;
|
|
7010
7096
|
const filteredData = T$1(() => {
|
|
7011
7097
|
return getFilteredMutationOverTimeData$1({
|
|
7012
7098
|
data: mutationOverTimeData,
|
|
@@ -7014,7 +7100,10 @@ const MutationsOverTimeTabs$1 = ({
|
|
|
7014
7100
|
displayedSegments,
|
|
7015
7101
|
displayedMutationTypes,
|
|
7016
7102
|
proportionInterval,
|
|
7017
|
-
displayMutations
|
|
7103
|
+
displayMutations: originalComponentProps.displayMutations,
|
|
7104
|
+
mutationFilterValue,
|
|
7105
|
+
sequenceType: originalComponentProps.sequenceType,
|
|
7106
|
+
annotationProvider
|
|
7018
7107
|
});
|
|
7019
7108
|
}, [
|
|
7020
7109
|
mutationOverTimeData,
|
|
@@ -7022,7 +7111,10 @@ const MutationsOverTimeTabs$1 = ({
|
|
|
7022
7111
|
displayedSegments,
|
|
7023
7112
|
displayedMutationTypes,
|
|
7024
7113
|
proportionInterval,
|
|
7025
|
-
displayMutations
|
|
7114
|
+
originalComponentProps.displayMutations,
|
|
7115
|
+
originalComponentProps.sequenceType,
|
|
7116
|
+
mutationFilterValue,
|
|
7117
|
+
annotationProvider
|
|
7026
7118
|
]);
|
|
7027
7119
|
const getTab = (view) => {
|
|
7028
7120
|
if (filteredData === void 0) {
|
|
@@ -7061,10 +7153,12 @@ const MutationsOverTimeTabs$1 = ({
|
|
|
7061
7153
|
filteredData,
|
|
7062
7154
|
colorScale,
|
|
7063
7155
|
setColorScale,
|
|
7064
|
-
originalComponentProps
|
|
7156
|
+
originalComponentProps,
|
|
7157
|
+
setFilterValue: setMutationFilterValue,
|
|
7158
|
+
mutationFilterValue
|
|
7065
7159
|
}
|
|
7066
7160
|
);
|
|
7067
|
-
return /* @__PURE__ */ u$1(Tabs, { tabs, toolbar });
|
|
7161
|
+
return /* @__PURE__ */ u$1(PageSizeContextProvider, { pageSizes: originalComponentProps.pageSizes, children: /* @__PURE__ */ u$1(Tabs, { tabs, toolbar }) });
|
|
7068
7162
|
};
|
|
7069
7163
|
const Toolbar$2 = ({
|
|
7070
7164
|
activeTab,
|
|
@@ -7077,9 +7171,12 @@ const Toolbar$2 = ({
|
|
|
7077
7171
|
filteredData,
|
|
7078
7172
|
colorScale,
|
|
7079
7173
|
setColorScale,
|
|
7080
|
-
originalComponentProps
|
|
7174
|
+
originalComponentProps,
|
|
7175
|
+
setFilterValue,
|
|
7176
|
+
mutationFilterValue
|
|
7081
7177
|
}) => {
|
|
7082
7178
|
return /* @__PURE__ */ u$1(Fragment, { children: [
|
|
7179
|
+
/* @__PURE__ */ u$1(MutationsOverTimeTextFilter, { setFilterValue, value: mutationFilterValue }),
|
|
7083
7180
|
activeTab === "Grid" && /* @__PURE__ */ u$1(ColorScaleSelectorDropdown, { colorScale, setColorScale }),
|
|
7084
7181
|
/* @__PURE__ */ u$1(
|
|
7085
7182
|
SegmentSelector,
|
|
@@ -8647,7 +8744,7 @@ const MutationsOverTimeTabs = ({
|
|
|
8647
8744
|
setDisplayedSegments
|
|
8648
8745
|
}
|
|
8649
8746
|
);
|
|
8650
|
-
return /* @__PURE__ */ u$1(Tabs, { tabs, toolbar });
|
|
8747
|
+
return /* @__PURE__ */ u$1(PageSizeContextProvider, { pageSizes: originalComponentProps.pageSizes, children: /* @__PURE__ */ u$1(Tabs, { tabs, toolbar }) });
|
|
8651
8748
|
};
|
|
8652
8749
|
const Toolbar = ({
|
|
8653
8750
|
colorScale,
|
|
@@ -8859,9 +8956,6 @@ function DatePicker({
|
|
|
8859
8956
|
}
|
|
8860
8957
|
);
|
|
8861
8958
|
}
|
|
8862
|
-
function DeleteIcon() {
|
|
8863
|
-
return /* @__PURE__ */ u$1(Fragment, { children: "×" });
|
|
8864
|
-
}
|
|
8865
8959
|
const undefinedValue = "__undefined__";
|
|
8866
8960
|
function ClearableSelect({
|
|
8867
8961
|
items,
|
|
@@ -9896,7 +9990,7 @@ const t = (t2) => "object" == typeof t2 && null != t2 && 1 === t2.nodeType, e =
|
|
|
9896
9990
|
}
|
|
9897
9991
|
return L2;
|
|
9898
9992
|
};
|
|
9899
|
-
var propTypes = { exports: {} };
|
|
9993
|
+
var propTypes$2 = { exports: {} };
|
|
9900
9994
|
var reactIs = { exports: {} };
|
|
9901
9995
|
var reactIs_production_min = {};
|
|
9902
9996
|
/** @license React v16.13.1
|
|
@@ -10828,16 +10922,16 @@ function requireFactoryWithThrowingShims() {
|
|
|
10828
10922
|
}
|
|
10829
10923
|
var hasRequiredPropTypes;
|
|
10830
10924
|
function requirePropTypes() {
|
|
10831
|
-
if (hasRequiredPropTypes) return propTypes.exports;
|
|
10925
|
+
if (hasRequiredPropTypes) return propTypes$2.exports;
|
|
10832
10926
|
hasRequiredPropTypes = 1;
|
|
10833
10927
|
if (process.env.NODE_ENV !== "production") {
|
|
10834
10928
|
var ReactIs = requireReactIs();
|
|
10835
10929
|
var throwOnDirectAccess = true;
|
|
10836
|
-
propTypes.exports = /* @__PURE__ */ requireFactoryWithTypeCheckers()(ReactIs.isElement, throwOnDirectAccess);
|
|
10930
|
+
propTypes$2.exports = /* @__PURE__ */ requireFactoryWithTypeCheckers()(ReactIs.isElement, throwOnDirectAccess);
|
|
10837
10931
|
} else {
|
|
10838
|
-
propTypes.exports = /* @__PURE__ */ requireFactoryWithThrowingShims()();
|
|
10932
|
+
propTypes$2.exports = /* @__PURE__ */ requireFactoryWithThrowingShims()();
|
|
10839
10933
|
}
|
|
10840
|
-
return propTypes.exports;
|
|
10934
|
+
return propTypes$2.exports;
|
|
10841
10935
|
}
|
|
10842
10936
|
var propTypesExports = /* @__PURE__ */ requirePropTypes();
|
|
10843
10937
|
const PropTypes = /* @__PURE__ */ getDefaultExportFromCjs(propTypesExports);
|
|
@@ -11157,7 +11251,7 @@ function useLatestRef(val) {
|
|
|
11157
11251
|
ref.current = val;
|
|
11158
11252
|
return ref;
|
|
11159
11253
|
}
|
|
11160
|
-
function useEnhancedReducer(reducer, props, createInitialState,
|
|
11254
|
+
function useEnhancedReducer(reducer, props, createInitialState, isStateEqual2) {
|
|
11161
11255
|
var prevStateRef = A$1();
|
|
11162
11256
|
var actionRef = A$1();
|
|
11163
11257
|
var enhancedReducer = q$1(function(state2, action2) {
|
|
@@ -11179,14 +11273,18 @@ function useEnhancedReducer(reducer, props, createInitialState, isStateEqual) {
|
|
|
11179
11273
|
var action = actionRef.current;
|
|
11180
11274
|
y(function() {
|
|
11181
11275
|
var prevState = getState(prevStateRef.current, action == null ? void 0 : action.props);
|
|
11182
|
-
var shouldCallOnChangeProps = action && prevStateRef.current && !
|
|
11276
|
+
var shouldCallOnChangeProps = action && prevStateRef.current && !isStateEqual2(prevState, state);
|
|
11183
11277
|
if (shouldCallOnChangeProps) {
|
|
11184
11278
|
callOnChangeProps(action, prevState, state);
|
|
11185
11279
|
}
|
|
11186
11280
|
prevStateRef.current = state;
|
|
11187
|
-
}, [state, action,
|
|
11281
|
+
}, [state, action, isStateEqual2]);
|
|
11188
11282
|
return [state, dispatchWithProps];
|
|
11189
11283
|
}
|
|
11284
|
+
function useControlledReducer$1(reducer, props, createInitialState, isStateEqual2) {
|
|
11285
|
+
var _useEnhancedReducer = useEnhancedReducer(reducer, props, createInitialState, isStateEqual2), state = _useEnhancedReducer[0], dispatch = _useEnhancedReducer[1];
|
|
11286
|
+
return [getState(state, props), dispatch];
|
|
11287
|
+
}
|
|
11190
11288
|
var defaultProps$3 = {
|
|
11191
11289
|
itemToString: function itemToString(item) {
|
|
11192
11290
|
return item ? String(item) : "";
|
|
@@ -11201,19 +11299,19 @@ var defaultProps$3 = {
|
|
|
11201
11299
|
typeof window === "undefined" || false ? void 0 : window
|
|
11202
11300
|
)
|
|
11203
11301
|
};
|
|
11204
|
-
function getDefaultValue$1(props, propKey,
|
|
11205
|
-
if (
|
|
11206
|
-
|
|
11302
|
+
function getDefaultValue$1(props, propKey, defaultStateValues2) {
|
|
11303
|
+
if (defaultStateValues2 === void 0) {
|
|
11304
|
+
defaultStateValues2 = dropdownDefaultStateValues;
|
|
11207
11305
|
}
|
|
11208
11306
|
var defaultValue = props["default" + capitalizeString(propKey)];
|
|
11209
11307
|
if (defaultValue !== void 0) {
|
|
11210
11308
|
return defaultValue;
|
|
11211
11309
|
}
|
|
11212
|
-
return
|
|
11310
|
+
return defaultStateValues2[propKey];
|
|
11213
11311
|
}
|
|
11214
|
-
function getInitialValue$1(props, propKey,
|
|
11215
|
-
if (
|
|
11216
|
-
|
|
11312
|
+
function getInitialValue$1(props, propKey, defaultStateValues2) {
|
|
11313
|
+
if (defaultStateValues2 === void 0) {
|
|
11314
|
+
defaultStateValues2 = dropdownDefaultStateValues;
|
|
11217
11315
|
}
|
|
11218
11316
|
var value = props[propKey];
|
|
11219
11317
|
if (value !== void 0) {
|
|
@@ -11223,7 +11321,7 @@ function getInitialValue$1(props, propKey, defaultStateValues) {
|
|
|
11223
11321
|
if (initialValue !== void 0) {
|
|
11224
11322
|
return initialValue;
|
|
11225
11323
|
}
|
|
11226
|
-
return getDefaultValue$1(props, propKey,
|
|
11324
|
+
return getDefaultValue$1(props, propKey, defaultStateValues2);
|
|
11227
11325
|
}
|
|
11228
11326
|
function getInitialState$2(props) {
|
|
11229
11327
|
var selectedItem = getInitialValue$1(props, "selectedItem");
|
|
@@ -11485,49 +11583,49 @@ var commonDropdownPropTypes = _extends({}, commonPropTypes, {
|
|
|
11485
11583
|
onIsOpenChange: PropTypes.func,
|
|
11486
11584
|
scrollIntoView: PropTypes.func
|
|
11487
11585
|
});
|
|
11488
|
-
function downshiftCommonReducer(state, action,
|
|
11586
|
+
function downshiftCommonReducer(state, action, stateChangeTypes2) {
|
|
11489
11587
|
var type = action.type, props = action.props;
|
|
11490
11588
|
var changes;
|
|
11491
11589
|
switch (type) {
|
|
11492
|
-
case
|
|
11590
|
+
case stateChangeTypes2.ItemMouseMove:
|
|
11493
11591
|
changes = {
|
|
11494
11592
|
highlightedIndex: action.disabled ? -1 : action.index
|
|
11495
11593
|
};
|
|
11496
11594
|
break;
|
|
11497
|
-
case
|
|
11595
|
+
case stateChangeTypes2.MenuMouseLeave:
|
|
11498
11596
|
changes = {
|
|
11499
11597
|
highlightedIndex: -1
|
|
11500
11598
|
};
|
|
11501
11599
|
break;
|
|
11502
|
-
case
|
|
11503
|
-
case
|
|
11600
|
+
case stateChangeTypes2.ToggleButtonClick:
|
|
11601
|
+
case stateChangeTypes2.FunctionToggleMenu:
|
|
11504
11602
|
changes = {
|
|
11505
11603
|
isOpen: !state.isOpen,
|
|
11506
11604
|
highlightedIndex: state.isOpen ? -1 : getHighlightedIndexOnOpen(props, state, 0)
|
|
11507
11605
|
};
|
|
11508
11606
|
break;
|
|
11509
|
-
case
|
|
11607
|
+
case stateChangeTypes2.FunctionOpenMenu:
|
|
11510
11608
|
changes = {
|
|
11511
11609
|
isOpen: true,
|
|
11512
11610
|
highlightedIndex: getHighlightedIndexOnOpen(props, state, 0)
|
|
11513
11611
|
};
|
|
11514
11612
|
break;
|
|
11515
|
-
case
|
|
11613
|
+
case stateChangeTypes2.FunctionCloseMenu:
|
|
11516
11614
|
changes = {
|
|
11517
11615
|
isOpen: false
|
|
11518
11616
|
};
|
|
11519
11617
|
break;
|
|
11520
|
-
case
|
|
11618
|
+
case stateChangeTypes2.FunctionSetHighlightedIndex:
|
|
11521
11619
|
changes = {
|
|
11522
11620
|
highlightedIndex: props.isItemDisabled(props.items[action.highlightedIndex], action.highlightedIndex) ? -1 : action.highlightedIndex
|
|
11523
11621
|
};
|
|
11524
11622
|
break;
|
|
11525
|
-
case
|
|
11623
|
+
case stateChangeTypes2.FunctionSetInputValue:
|
|
11526
11624
|
changes = {
|
|
11527
11625
|
inputValue: action.inputValue
|
|
11528
11626
|
};
|
|
11529
11627
|
break;
|
|
11530
|
-
case
|
|
11628
|
+
case stateChangeTypes2.FunctionReset:
|
|
11531
11629
|
changes = {
|
|
11532
11630
|
highlightedIndex: getDefaultHighlightedIndex(props),
|
|
11533
11631
|
isOpen: getDefaultValue$1(props, "isOpen"),
|
|
@@ -11636,9 +11734,9 @@ var propTypes$1 = _extends({}, commonDropdownPropTypes, {
|
|
|
11636
11734
|
inputId: PropTypes.string,
|
|
11637
11735
|
onInputValueChange: PropTypes.func
|
|
11638
11736
|
});
|
|
11639
|
-
function useControlledReducer(reducer, props, createInitialState,
|
|
11737
|
+
function useControlledReducer(reducer, props, createInitialState, isStateEqual2) {
|
|
11640
11738
|
var previousSelectedItemRef = A$1();
|
|
11641
|
-
var _useEnhancedReducer = useEnhancedReducer(reducer, props, createInitialState,
|
|
11739
|
+
var _useEnhancedReducer = useEnhancedReducer(reducer, props, createInitialState, isStateEqual2), state = _useEnhancedReducer[0], dispatch = _useEnhancedReducer[1];
|
|
11642
11740
|
var isInitialMount = useIsInitialMount();
|
|
11643
11741
|
y(function() {
|
|
11644
11742
|
if (!isControlledProp(props, "selectedItem")) {
|
|
@@ -11659,7 +11757,7 @@ function useControlledReducer(reducer, props, createInitialState, isStateEqual)
|
|
|
11659
11757
|
}
|
|
11660
11758
|
var validatePropTypes$1 = noop;
|
|
11661
11759
|
if (process.env.NODE_ENV !== "production") {
|
|
11662
|
-
validatePropTypes$1 = function
|
|
11760
|
+
validatePropTypes$1 = function validatePropTypes2(options2, caller) {
|
|
11663
11761
|
PropTypes.checkPropTypes(propTypes$1, options2, "prop", caller.name);
|
|
11664
11762
|
};
|
|
11665
11763
|
}
|
|
@@ -12106,7 +12204,41 @@ function useCombobox(userProps) {
|
|
|
12106
12204
|
inputValue
|
|
12107
12205
|
};
|
|
12108
12206
|
}
|
|
12109
|
-
|
|
12207
|
+
var defaultStateValues = {
|
|
12208
|
+
activeIndex: -1,
|
|
12209
|
+
selectedItems: []
|
|
12210
|
+
};
|
|
12211
|
+
function getInitialValue(props, propKey) {
|
|
12212
|
+
return getInitialValue$1(props, propKey, defaultStateValues);
|
|
12213
|
+
}
|
|
12214
|
+
function getDefaultValue(props, propKey) {
|
|
12215
|
+
return getDefaultValue$1(props, propKey, defaultStateValues);
|
|
12216
|
+
}
|
|
12217
|
+
function getInitialState$3(props) {
|
|
12218
|
+
var activeIndex = getInitialValue(props, "activeIndex");
|
|
12219
|
+
var selectedItems = getInitialValue(props, "selectedItems");
|
|
12220
|
+
return {
|
|
12221
|
+
activeIndex,
|
|
12222
|
+
selectedItems
|
|
12223
|
+
};
|
|
12224
|
+
}
|
|
12225
|
+
function isKeyDownOperationPermitted(event) {
|
|
12226
|
+
if (event.shiftKey || event.metaKey || event.ctrlKey || event.altKey) {
|
|
12227
|
+
return false;
|
|
12228
|
+
}
|
|
12229
|
+
var element = event.target;
|
|
12230
|
+
if (element instanceof HTMLInputElement && // if element is a text input
|
|
12231
|
+
element.value !== "" && // and we have text in it
|
|
12232
|
+
// and cursor is either not at the start or is currently highlighting text.
|
|
12233
|
+
(element.selectionStart !== 0 || element.selectionEnd !== 0)) {
|
|
12234
|
+
return false;
|
|
12235
|
+
}
|
|
12236
|
+
return true;
|
|
12237
|
+
}
|
|
12238
|
+
function isStateEqual(prevState, newState) {
|
|
12239
|
+
return prevState.selectedItems === newState.selectedItems && prevState.activeIndex === newState.activeIndex;
|
|
12240
|
+
}
|
|
12241
|
+
var propTypes = {
|
|
12110
12242
|
stateReducer: commonPropTypes.stateReducer,
|
|
12111
12243
|
itemToKey: commonPropTypes.itemToKey,
|
|
12112
12244
|
environment: commonPropTypes.environment,
|
|
@@ -12121,26 +12253,312 @@ function useCombobox(userProps) {
|
|
|
12121
12253
|
onSelectedItemsChange: PropTypes.func,
|
|
12122
12254
|
keyNavigationNext: PropTypes.string,
|
|
12123
12255
|
keyNavigationPrevious: PropTypes.string
|
|
12124
|
-
}
|
|
12125
|
-
|
|
12256
|
+
};
|
|
12257
|
+
var defaultProps = {
|
|
12126
12258
|
itemToKey: defaultProps$3.itemToKey,
|
|
12127
12259
|
stateReducer: defaultProps$3.stateReducer,
|
|
12128
|
-
environment: defaultProps$3.environment
|
|
12260
|
+
environment: defaultProps$3.environment,
|
|
12261
|
+
keyNavigationNext: "ArrowRight",
|
|
12262
|
+
keyNavigationPrevious: "ArrowLeft"
|
|
12263
|
+
};
|
|
12264
|
+
var validatePropTypes = noop;
|
|
12265
|
+
if (process.env.NODE_ENV !== "production") {
|
|
12266
|
+
validatePropTypes = function validatePropTypes2(options2, caller) {
|
|
12267
|
+
PropTypes.checkPropTypes(propTypes, options2, "prop", caller.name);
|
|
12268
|
+
};
|
|
12269
|
+
}
|
|
12270
|
+
var SelectedItemClick = process.env.NODE_ENV !== "production" ? "__selected_item_click__" : 0;
|
|
12271
|
+
var SelectedItemKeyDownDelete = process.env.NODE_ENV !== "production" ? "__selected_item_keydown_delete__" : 1;
|
|
12272
|
+
var SelectedItemKeyDownBackspace = process.env.NODE_ENV !== "production" ? "__selected_item_keydown_backspace__" : 2;
|
|
12273
|
+
var SelectedItemKeyDownNavigationNext = process.env.NODE_ENV !== "production" ? "__selected_item_keydown_navigation_next__" : 3;
|
|
12274
|
+
var SelectedItemKeyDownNavigationPrevious = process.env.NODE_ENV !== "production" ? "__selected_item_keydown_navigation_previous__" : 4;
|
|
12275
|
+
var DropdownKeyDownNavigationPrevious = process.env.NODE_ENV !== "production" ? "__dropdown_keydown_navigation_previous__" : 5;
|
|
12276
|
+
var DropdownKeyDownBackspace = process.env.NODE_ENV !== "production" ? "__dropdown_keydown_backspace__" : 6;
|
|
12277
|
+
var DropdownClick = process.env.NODE_ENV !== "production" ? "__dropdown_click__" : 7;
|
|
12278
|
+
var FunctionAddSelectedItem = process.env.NODE_ENV !== "production" ? "__function_add_selected_item__" : 8;
|
|
12279
|
+
var FunctionRemoveSelectedItem = process.env.NODE_ENV !== "production" ? "__function_remove_selected_item__" : 9;
|
|
12280
|
+
var FunctionSetSelectedItems = process.env.NODE_ENV !== "production" ? "__function_set_selected_items__" : 10;
|
|
12281
|
+
var FunctionSetActiveIndex = process.env.NODE_ENV !== "production" ? "__function_set_active_index__" : 11;
|
|
12282
|
+
var FunctionReset = process.env.NODE_ENV !== "production" ? "__function_reset__" : 12;
|
|
12283
|
+
var stateChangeTypes = /* @__PURE__ */ Object.freeze({
|
|
12284
|
+
__proto__: null,
|
|
12285
|
+
DropdownClick,
|
|
12286
|
+
DropdownKeyDownBackspace,
|
|
12287
|
+
DropdownKeyDownNavigationPrevious,
|
|
12288
|
+
FunctionAddSelectedItem,
|
|
12289
|
+
FunctionRemoveSelectedItem,
|
|
12290
|
+
FunctionReset,
|
|
12291
|
+
FunctionSetActiveIndex,
|
|
12292
|
+
FunctionSetSelectedItems,
|
|
12293
|
+
SelectedItemClick,
|
|
12294
|
+
SelectedItemKeyDownBackspace,
|
|
12295
|
+
SelectedItemKeyDownDelete,
|
|
12296
|
+
SelectedItemKeyDownNavigationNext,
|
|
12297
|
+
SelectedItemKeyDownNavigationPrevious
|
|
12129
12298
|
});
|
|
12130
|
-
|
|
12131
|
-
|
|
12132
|
-
|
|
12133
|
-
|
|
12134
|
-
|
|
12135
|
-
|
|
12136
|
-
|
|
12137
|
-
|
|
12138
|
-
|
|
12139
|
-
|
|
12140
|
-
|
|
12141
|
-
|
|
12142
|
-
|
|
12143
|
-
|
|
12299
|
+
function downshiftMultipleSelectionReducer(state, action) {
|
|
12300
|
+
var type = action.type, index = action.index, props = action.props, selectedItem = action.selectedItem;
|
|
12301
|
+
var activeIndex = state.activeIndex, selectedItems = state.selectedItems;
|
|
12302
|
+
var changes;
|
|
12303
|
+
switch (type) {
|
|
12304
|
+
case SelectedItemClick:
|
|
12305
|
+
changes = {
|
|
12306
|
+
activeIndex: index
|
|
12307
|
+
};
|
|
12308
|
+
break;
|
|
12309
|
+
case SelectedItemKeyDownNavigationPrevious:
|
|
12310
|
+
changes = {
|
|
12311
|
+
activeIndex: activeIndex - 1 < 0 ? 0 : activeIndex - 1
|
|
12312
|
+
};
|
|
12313
|
+
break;
|
|
12314
|
+
case SelectedItemKeyDownNavigationNext:
|
|
12315
|
+
changes = {
|
|
12316
|
+
activeIndex: activeIndex + 1 >= selectedItems.length ? -1 : activeIndex + 1
|
|
12317
|
+
};
|
|
12318
|
+
break;
|
|
12319
|
+
case SelectedItemKeyDownBackspace:
|
|
12320
|
+
case SelectedItemKeyDownDelete: {
|
|
12321
|
+
if (activeIndex < 0) {
|
|
12322
|
+
break;
|
|
12323
|
+
}
|
|
12324
|
+
var newActiveIndex = activeIndex;
|
|
12325
|
+
if (selectedItems.length === 1) {
|
|
12326
|
+
newActiveIndex = -1;
|
|
12327
|
+
} else if (activeIndex === selectedItems.length - 1) {
|
|
12328
|
+
newActiveIndex = selectedItems.length - 2;
|
|
12329
|
+
}
|
|
12330
|
+
changes = _extends({
|
|
12331
|
+
selectedItems: [].concat(selectedItems.slice(0, activeIndex), selectedItems.slice(activeIndex + 1))
|
|
12332
|
+
}, {
|
|
12333
|
+
activeIndex: newActiveIndex
|
|
12334
|
+
});
|
|
12335
|
+
break;
|
|
12336
|
+
}
|
|
12337
|
+
case DropdownKeyDownNavigationPrevious:
|
|
12338
|
+
changes = {
|
|
12339
|
+
activeIndex: selectedItems.length - 1
|
|
12340
|
+
};
|
|
12341
|
+
break;
|
|
12342
|
+
case DropdownKeyDownBackspace:
|
|
12343
|
+
changes = {
|
|
12344
|
+
selectedItems: selectedItems.slice(0, selectedItems.length - 1)
|
|
12345
|
+
};
|
|
12346
|
+
break;
|
|
12347
|
+
case FunctionAddSelectedItem:
|
|
12348
|
+
changes = {
|
|
12349
|
+
selectedItems: [].concat(selectedItems, [selectedItem])
|
|
12350
|
+
};
|
|
12351
|
+
break;
|
|
12352
|
+
case DropdownClick:
|
|
12353
|
+
changes = {
|
|
12354
|
+
activeIndex: -1
|
|
12355
|
+
};
|
|
12356
|
+
break;
|
|
12357
|
+
case FunctionRemoveSelectedItem: {
|
|
12358
|
+
var _newActiveIndex = activeIndex;
|
|
12359
|
+
var selectedItemIndex = selectedItems.findIndex(function(item) {
|
|
12360
|
+
return props.itemToKey(item) === props.itemToKey(selectedItem);
|
|
12361
|
+
});
|
|
12362
|
+
if (selectedItemIndex < 0) {
|
|
12363
|
+
break;
|
|
12364
|
+
}
|
|
12365
|
+
if (selectedItems.length === 1) {
|
|
12366
|
+
_newActiveIndex = -1;
|
|
12367
|
+
} else if (selectedItemIndex === selectedItems.length - 1) {
|
|
12368
|
+
_newActiveIndex = selectedItems.length - 2;
|
|
12369
|
+
}
|
|
12370
|
+
changes = {
|
|
12371
|
+
selectedItems: [].concat(selectedItems.slice(0, selectedItemIndex), selectedItems.slice(selectedItemIndex + 1)),
|
|
12372
|
+
activeIndex: _newActiveIndex
|
|
12373
|
+
};
|
|
12374
|
+
break;
|
|
12375
|
+
}
|
|
12376
|
+
case FunctionSetSelectedItems: {
|
|
12377
|
+
var newSelectedItems = action.selectedItems;
|
|
12378
|
+
changes = {
|
|
12379
|
+
selectedItems: newSelectedItems
|
|
12380
|
+
};
|
|
12381
|
+
break;
|
|
12382
|
+
}
|
|
12383
|
+
case FunctionSetActiveIndex: {
|
|
12384
|
+
var _newActiveIndex2 = action.activeIndex;
|
|
12385
|
+
changes = {
|
|
12386
|
+
activeIndex: _newActiveIndex2
|
|
12387
|
+
};
|
|
12388
|
+
break;
|
|
12389
|
+
}
|
|
12390
|
+
case FunctionReset:
|
|
12391
|
+
changes = {
|
|
12392
|
+
activeIndex: getDefaultValue(props, "activeIndex"),
|
|
12393
|
+
selectedItems: getDefaultValue(props, "selectedItems")
|
|
12394
|
+
};
|
|
12395
|
+
break;
|
|
12396
|
+
default:
|
|
12397
|
+
throw new Error("Reducer called without proper action type.");
|
|
12398
|
+
}
|
|
12399
|
+
return _extends({}, state, changes);
|
|
12400
|
+
}
|
|
12401
|
+
var _excluded = ["refKey", "ref", "onClick", "onKeyDown", "selectedItem", "index"], _excluded2 = ["refKey", "ref", "onKeyDown", "onClick", "preventKeyAction"];
|
|
12402
|
+
useMultipleSelection.stateChangeTypes = stateChangeTypes;
|
|
12403
|
+
function useMultipleSelection(userProps) {
|
|
12404
|
+
if (userProps === void 0) {
|
|
12405
|
+
userProps = {};
|
|
12406
|
+
}
|
|
12407
|
+
validatePropTypes(userProps, useMultipleSelection);
|
|
12408
|
+
var props = _extends({}, defaultProps, userProps);
|
|
12409
|
+
var getA11yStatusMessage = props.getA11yStatusMessage, environment = props.environment, keyNavigationNext = props.keyNavigationNext, keyNavigationPrevious = props.keyNavigationPrevious;
|
|
12410
|
+
var _useControlledReducer = useControlledReducer$1(downshiftMultipleSelectionReducer, props, getInitialState$3, isStateEqual), state = _useControlledReducer[0], dispatch = _useControlledReducer[1];
|
|
12411
|
+
var activeIndex = state.activeIndex, selectedItems = state.selectedItems;
|
|
12412
|
+
var isInitialMount = useIsInitialMount();
|
|
12413
|
+
var dropdownRef = A$1(null);
|
|
12414
|
+
var selectedItemRefs = A$1();
|
|
12415
|
+
selectedItemRefs.current = [];
|
|
12416
|
+
var latest = useLatestRef({
|
|
12417
|
+
state,
|
|
12418
|
+
props
|
|
12419
|
+
});
|
|
12420
|
+
useA11yMessageStatus(getA11yStatusMessage, state, [activeIndex, selectedItems], environment);
|
|
12421
|
+
y(function() {
|
|
12422
|
+
if (isInitialMount) {
|
|
12423
|
+
return;
|
|
12424
|
+
}
|
|
12425
|
+
if (activeIndex === -1 && dropdownRef.current) {
|
|
12426
|
+
dropdownRef.current.focus();
|
|
12427
|
+
} else if (selectedItemRefs.current[activeIndex]) {
|
|
12428
|
+
selectedItemRefs.current[activeIndex].focus();
|
|
12429
|
+
}
|
|
12430
|
+
}, [activeIndex]);
|
|
12431
|
+
useControlPropsValidator({
|
|
12432
|
+
props,
|
|
12433
|
+
state
|
|
12434
|
+
});
|
|
12435
|
+
var setGetterPropCallInfo = useGetterPropsCalledChecker("getDropdownProps");
|
|
12436
|
+
var selectedItemKeyDownHandlers = T$1(function() {
|
|
12437
|
+
var _ref;
|
|
12438
|
+
return _ref = {}, _ref[keyNavigationPrevious] = function() {
|
|
12439
|
+
dispatch({
|
|
12440
|
+
type: SelectedItemKeyDownNavigationPrevious
|
|
12441
|
+
});
|
|
12442
|
+
}, _ref[keyNavigationNext] = function() {
|
|
12443
|
+
dispatch({
|
|
12444
|
+
type: SelectedItemKeyDownNavigationNext
|
|
12445
|
+
});
|
|
12446
|
+
}, _ref.Delete = function Delete() {
|
|
12447
|
+
dispatch({
|
|
12448
|
+
type: SelectedItemKeyDownDelete
|
|
12449
|
+
});
|
|
12450
|
+
}, _ref.Backspace = function Backspace() {
|
|
12451
|
+
dispatch({
|
|
12452
|
+
type: SelectedItemKeyDownBackspace
|
|
12453
|
+
});
|
|
12454
|
+
}, _ref;
|
|
12455
|
+
}, [dispatch, keyNavigationNext, keyNavigationPrevious]);
|
|
12456
|
+
var dropdownKeyDownHandlers = T$1(function() {
|
|
12457
|
+
var _ref2;
|
|
12458
|
+
return _ref2 = {}, _ref2[keyNavigationPrevious] = function(event) {
|
|
12459
|
+
if (isKeyDownOperationPermitted(event)) {
|
|
12460
|
+
dispatch({
|
|
12461
|
+
type: DropdownKeyDownNavigationPrevious
|
|
12462
|
+
});
|
|
12463
|
+
}
|
|
12464
|
+
}, _ref2.Backspace = function Backspace(event) {
|
|
12465
|
+
if (isKeyDownOperationPermitted(event)) {
|
|
12466
|
+
dispatch({
|
|
12467
|
+
type: DropdownKeyDownBackspace
|
|
12468
|
+
});
|
|
12469
|
+
}
|
|
12470
|
+
}, _ref2;
|
|
12471
|
+
}, [dispatch, keyNavigationPrevious]);
|
|
12472
|
+
var getSelectedItemProps = q$1(function(_temp) {
|
|
12473
|
+
var _extends2;
|
|
12474
|
+
var _ref3 = _temp === void 0 ? {} : _temp, _ref3$refKey = _ref3.refKey, refKey = _ref3$refKey === void 0 ? "ref" : _ref3$refKey, ref = _ref3.ref, onClick = _ref3.onClick, onKeyDown = _ref3.onKeyDown, selectedItemProp = _ref3.selectedItem, indexProp = _ref3.index, rest = _objectWithoutPropertiesLoose(_ref3, _excluded);
|
|
12475
|
+
var latestState = latest.current.state;
|
|
12476
|
+
var _getItemAndIndex = getItemAndIndex(selectedItemProp, indexProp, latestState.selectedItems, "Pass either item or index to getSelectedItemProps!"), index = _getItemAndIndex[1];
|
|
12477
|
+
var isFocusable = index > -1 && index === latestState.activeIndex;
|
|
12478
|
+
var selectedItemHandleClick = function selectedItemHandleClick2() {
|
|
12479
|
+
dispatch({
|
|
12480
|
+
type: SelectedItemClick,
|
|
12481
|
+
index
|
|
12482
|
+
});
|
|
12483
|
+
};
|
|
12484
|
+
var selectedItemHandleKeyDown = function selectedItemHandleKeyDown2(event) {
|
|
12485
|
+
var key = normalizeArrowKey(event);
|
|
12486
|
+
if (key && selectedItemKeyDownHandlers[key]) {
|
|
12487
|
+
selectedItemKeyDownHandlers[key](event);
|
|
12488
|
+
}
|
|
12489
|
+
};
|
|
12490
|
+
return _extends((_extends2 = {}, _extends2[refKey] = handleRefs(ref, function(selectedItemNode) {
|
|
12491
|
+
if (selectedItemNode) {
|
|
12492
|
+
selectedItemRefs.current.push(selectedItemNode);
|
|
12493
|
+
}
|
|
12494
|
+
}), _extends2.tabIndex = isFocusable ? 0 : -1, _extends2.onClick = callAllEventHandlers(onClick, selectedItemHandleClick), _extends2.onKeyDown = callAllEventHandlers(onKeyDown, selectedItemHandleKeyDown), _extends2), rest);
|
|
12495
|
+
}, [dispatch, latest, selectedItemKeyDownHandlers]);
|
|
12496
|
+
var getDropdownProps = q$1(function(_temp2, _temp3) {
|
|
12497
|
+
var _extends3;
|
|
12498
|
+
var _ref4 = _temp2 === void 0 ? {} : _temp2, _ref4$refKey = _ref4.refKey, refKey = _ref4$refKey === void 0 ? "ref" : _ref4$refKey, ref = _ref4.ref, onKeyDown = _ref4.onKeyDown, onClick = _ref4.onClick, _ref4$preventKeyActio = _ref4.preventKeyAction, preventKeyAction = _ref4$preventKeyActio === void 0 ? false : _ref4$preventKeyActio, rest = _objectWithoutPropertiesLoose(_ref4, _excluded2);
|
|
12499
|
+
var _ref5 = _temp3 === void 0 ? {} : _temp3, _ref5$suppressRefErro = _ref5.suppressRefError, suppressRefError = _ref5$suppressRefErro === void 0 ? false : _ref5$suppressRefErro;
|
|
12500
|
+
setGetterPropCallInfo("getDropdownProps", suppressRefError, refKey, dropdownRef);
|
|
12501
|
+
var dropdownHandleKeyDown = function dropdownHandleKeyDown2(event) {
|
|
12502
|
+
var key = normalizeArrowKey(event);
|
|
12503
|
+
if (key && dropdownKeyDownHandlers[key]) {
|
|
12504
|
+
dropdownKeyDownHandlers[key](event);
|
|
12505
|
+
}
|
|
12506
|
+
};
|
|
12507
|
+
var dropdownHandleClick = function dropdownHandleClick2() {
|
|
12508
|
+
dispatch({
|
|
12509
|
+
type: DropdownClick
|
|
12510
|
+
});
|
|
12511
|
+
};
|
|
12512
|
+
return _extends((_extends3 = {}, _extends3[refKey] = handleRefs(ref, function(dropdownNode) {
|
|
12513
|
+
if (dropdownNode) {
|
|
12514
|
+
dropdownRef.current = dropdownNode;
|
|
12515
|
+
}
|
|
12516
|
+
}), _extends3), !preventKeyAction && {
|
|
12517
|
+
onKeyDown: callAllEventHandlers(onKeyDown, dropdownHandleKeyDown),
|
|
12518
|
+
onClick: callAllEventHandlers(onClick, dropdownHandleClick)
|
|
12519
|
+
}, rest);
|
|
12520
|
+
}, [dispatch, dropdownKeyDownHandlers, setGetterPropCallInfo]);
|
|
12521
|
+
var addSelectedItem = q$1(function(selectedItem) {
|
|
12522
|
+
dispatch({
|
|
12523
|
+
type: FunctionAddSelectedItem,
|
|
12524
|
+
selectedItem
|
|
12525
|
+
});
|
|
12526
|
+
}, [dispatch]);
|
|
12527
|
+
var removeSelectedItem = q$1(function(selectedItem) {
|
|
12528
|
+
dispatch({
|
|
12529
|
+
type: FunctionRemoveSelectedItem,
|
|
12530
|
+
selectedItem
|
|
12531
|
+
});
|
|
12532
|
+
}, [dispatch]);
|
|
12533
|
+
var setSelectedItems = q$1(function(newSelectedItems) {
|
|
12534
|
+
dispatch({
|
|
12535
|
+
type: FunctionSetSelectedItems,
|
|
12536
|
+
selectedItems: newSelectedItems
|
|
12537
|
+
});
|
|
12538
|
+
}, [dispatch]);
|
|
12539
|
+
var setActiveIndex = q$1(function(newActiveIndex) {
|
|
12540
|
+
dispatch({
|
|
12541
|
+
type: FunctionSetActiveIndex,
|
|
12542
|
+
activeIndex: newActiveIndex
|
|
12543
|
+
});
|
|
12544
|
+
}, [dispatch]);
|
|
12545
|
+
var reset = q$1(function() {
|
|
12546
|
+
dispatch({
|
|
12547
|
+
type: FunctionReset
|
|
12548
|
+
});
|
|
12549
|
+
}, [dispatch]);
|
|
12550
|
+
return {
|
|
12551
|
+
getSelectedItemProps,
|
|
12552
|
+
getDropdownProps,
|
|
12553
|
+
addSelectedItem,
|
|
12554
|
+
removeSelectedItem,
|
|
12555
|
+
setSelectedItems,
|
|
12556
|
+
setActiveIndex,
|
|
12557
|
+
reset,
|
|
12558
|
+
selectedItems,
|
|
12559
|
+
activeIndex
|
|
12560
|
+
};
|
|
12561
|
+
}
|
|
12144
12562
|
function DownshiftCombobox({
|
|
12145
12563
|
allItems,
|
|
12146
12564
|
value,
|
|
@@ -12934,12 +13352,35 @@ const sequenceTypeFromSegment = (possibleSegment, referenceGenome) => {
|
|
|
12934
13352
|
return void 0;
|
|
12935
13353
|
};
|
|
12936
13354
|
const parseAndValidateMutation = (value, referenceGenome) => {
|
|
13355
|
+
const possibleMutation = parseMutation(value, referenceGenome);
|
|
13356
|
+
if (possibleMutation === null) {
|
|
13357
|
+
return null;
|
|
13358
|
+
}
|
|
13359
|
+
const sequenceType = getSequenceType(possibleMutation.type);
|
|
13360
|
+
const isOutside = isOutsideReferenceGenome(possibleMutation.value, referenceGenome, sequenceType);
|
|
13361
|
+
if (isOutside) {
|
|
13362
|
+
return null;
|
|
13363
|
+
}
|
|
13364
|
+
return possibleMutation;
|
|
13365
|
+
};
|
|
13366
|
+
const getSequenceType = (type) => {
|
|
13367
|
+
switch (type) {
|
|
13368
|
+
case "nucleotideInsertions":
|
|
13369
|
+
case "nucleotideMutations":
|
|
13370
|
+
return "nucleotide";
|
|
13371
|
+
case "aminoAcidInsertions":
|
|
13372
|
+
case "aminoAcidMutations":
|
|
13373
|
+
return "amino acid";
|
|
13374
|
+
}
|
|
13375
|
+
};
|
|
13376
|
+
const parseMutation = (value, referenceGenome) => {
|
|
12937
13377
|
const possibleInsertion = InsertionClass.parse(value);
|
|
12938
13378
|
if (possibleInsertion !== null) {
|
|
12939
13379
|
const sequenceType = sequenceTypeFromSegment(possibleInsertion.segment, referenceGenome);
|
|
12940
13380
|
switch (sequenceType) {
|
|
12941
|
-
case "nucleotide":
|
|
13381
|
+
case "nucleotide": {
|
|
12942
13382
|
return { type: "nucleotideInsertions", value: possibleInsertion };
|
|
13383
|
+
}
|
|
12943
13384
|
case "amino acid":
|
|
12944
13385
|
return { type: "aminoAcidInsertions", value: possibleInsertion };
|
|
12945
13386
|
case void 0:
|
|
@@ -12962,16 +13403,41 @@ const parseAndValidateMutation = (value, referenceGenome) => {
|
|
|
12962
13403
|
if (possibleSubstitution !== null) {
|
|
12963
13404
|
const sequenceType = sequenceTypeFromSegment(possibleSubstitution.segment, referenceGenome);
|
|
12964
13405
|
switch (sequenceType) {
|
|
12965
|
-
case "nucleotide":
|
|
13406
|
+
case "nucleotide": {
|
|
12966
13407
|
return { type: "nucleotideMutations", value: possibleSubstitution };
|
|
12967
|
-
|
|
13408
|
+
}
|
|
13409
|
+
case "amino acid": {
|
|
12968
13410
|
return { type: "aminoAcidMutations", value: possibleSubstitution };
|
|
13411
|
+
}
|
|
12969
13412
|
case void 0:
|
|
12970
13413
|
return null;
|
|
12971
13414
|
}
|
|
12972
13415
|
}
|
|
12973
13416
|
return null;
|
|
12974
13417
|
};
|
|
13418
|
+
function isOutsideReferenceGenome(mutation, referenceGenome, sequenceType) {
|
|
13419
|
+
const lengthOfSegment = getLengthOfSegment(mutation.segment, referenceGenome, sequenceType);
|
|
13420
|
+
if (lengthOfSegment === void 0) {
|
|
13421
|
+
return true;
|
|
13422
|
+
}
|
|
13423
|
+
return mutation.position >= lengthOfSegment;
|
|
13424
|
+
}
|
|
13425
|
+
function getLengthOfSegment(segment, referenceGenome, sequenceType) {
|
|
13426
|
+
var _a, _b, _c;
|
|
13427
|
+
switch (sequenceType) {
|
|
13428
|
+
case "nucleotide": {
|
|
13429
|
+
if (referenceGenome.nucleotideSequences.length === 1) {
|
|
13430
|
+
return (_a = referenceGenome.nucleotideSequences.at(0)) == null ? void 0 : _a.sequence.length;
|
|
13431
|
+
}
|
|
13432
|
+
return (_b = referenceGenome.nucleotideSequences.find(
|
|
13433
|
+
(sequence) => sequence.name.toUpperCase() === (segment == null ? void 0 : segment.toUpperCase())
|
|
13434
|
+
)) == null ? void 0 : _b.sequence.length;
|
|
13435
|
+
}
|
|
13436
|
+
case "amino acid": {
|
|
13437
|
+
return (_c = referenceGenome.genes.find((gene) => gene.name.toUpperCase() === (segment == null ? void 0 : segment.toUpperCase()))) == null ? void 0 : _c.sequence.length;
|
|
13438
|
+
}
|
|
13439
|
+
}
|
|
13440
|
+
}
|
|
12975
13441
|
const mutationFilterInnerPropsSchema = z$2.object({
|
|
12976
13442
|
initialValue: z$2.union([mutationsFilterSchema.optional(), z$2.array(z$2.string()), z$2.undefined()])
|
|
12977
13443
|
});
|
|
@@ -12983,38 +13449,30 @@ const MutationFilter = (props) => {
|
|
|
12983
13449
|
return /* @__PURE__ */ u$1(
|
|
12984
13450
|
ErrorBoundary,
|
|
12985
13451
|
{
|
|
12986
|
-
size: { height: "
|
|
13452
|
+
size: { height: "40px", width },
|
|
12987
13453
|
layout: "horizontal",
|
|
12988
13454
|
schema: mutationFilterPropsSchema,
|
|
12989
13455
|
componentProps: props,
|
|
12990
|
-
children: /* @__PURE__ */ u$1("div", { style: width, children: /* @__PURE__ */ u$1(MutationFilterInner, { initialValue }) })
|
|
13456
|
+
children: /* @__PURE__ */ u$1("div", { style: { width }, children: /* @__PURE__ */ u$1(MutationFilterInner, { initialValue }) })
|
|
12991
13457
|
}
|
|
12992
13458
|
);
|
|
12993
13459
|
};
|
|
12994
|
-
|
|
13460
|
+
function MutationFilterInner({ initialValue }) {
|
|
13461
|
+
var _a;
|
|
12995
13462
|
const referenceGenome = x$1(ReferenceGenomeContext);
|
|
12996
|
-
const [selectedFilters, setSelectedFilters] = d(
|
|
12997
|
-
getInitialState(initialValue, referenceGenome)
|
|
12998
|
-
);
|
|
12999
13463
|
const filterRef = A$1(null);
|
|
13000
|
-
|
|
13001
|
-
|
|
13002
|
-
|
|
13003
|
-
|
|
13004
|
-
|
|
13005
|
-
|
|
13006
|
-
const
|
|
13007
|
-
|
|
13008
|
-
|
|
13009
|
-
|
|
13010
|
-
|
|
13011
|
-
|
|
13012
|
-
fireChangeEvent(newSelectedFilters);
|
|
13013
|
-
};
|
|
13014
|
-
const fireChangeEvent = (selectedFilters2) => {
|
|
13015
|
-
var _a;
|
|
13016
|
-
const detail = mapToMutationFilterStrings(selectedFilters2);
|
|
13017
|
-
(_a = filterRef.current) == null ? void 0 : _a.dispatchEvent(
|
|
13464
|
+
const [inputValue, setInputValue] = d("");
|
|
13465
|
+
const initialState = T$1(() => {
|
|
13466
|
+
return getInitialState(initialValue, referenceGenome);
|
|
13467
|
+
}, [initialValue, referenceGenome]);
|
|
13468
|
+
const [selectedItems, setSelectedItems] = d(initialState);
|
|
13469
|
+
const [itemCandidate, setItemCandidate] = d(null);
|
|
13470
|
+
const [showErrorIndicator, setShowErrorIndicator] = d(false);
|
|
13471
|
+
const items = itemCandidate ? [itemCandidate] : [];
|
|
13472
|
+
const fireChangeEvent = (selectedFilters) => {
|
|
13473
|
+
var _a2;
|
|
13474
|
+
const detail = mapToMutationFilterStrings(selectedFilters);
|
|
13475
|
+
(_a2 = filterRef.current) == null ? void 0 : _a2.dispatchEvent(
|
|
13018
13476
|
new CustomEvent("gs-mutation-filter-changed", {
|
|
13019
13477
|
detail,
|
|
13020
13478
|
bubbles: true,
|
|
@@ -13022,152 +13480,155 @@ const MutationFilterInner = ({ initialValue }) => {
|
|
|
13022
13480
|
})
|
|
13023
13481
|
);
|
|
13024
13482
|
};
|
|
13025
|
-
|
|
13026
|
-
|
|
13027
|
-
|
|
13028
|
-
|
|
13029
|
-
|
|
13030
|
-
|
|
13031
|
-
|
|
13032
|
-
|
|
13033
|
-
|
|
13034
|
-
|
|
13035
|
-
},
|
|
13036
|
-
selectedFilters
|
|
13037
|
-
}
|
|
13038
|
-
),
|
|
13039
|
-
/* @__PURE__ */ u$1(
|
|
13040
|
-
SelectedMutationFilterDisplay,
|
|
13041
|
-
{
|
|
13042
|
-
selectedFilters,
|
|
13043
|
-
handleRemoveValue
|
|
13044
|
-
}
|
|
13045
|
-
)
|
|
13046
|
-
] })
|
|
13047
|
-
] });
|
|
13048
|
-
};
|
|
13049
|
-
function getInitialState(initialValue, referenceGenome) {
|
|
13050
|
-
if (initialValue === void 0) {
|
|
13051
|
-
return {
|
|
13052
|
-
nucleotideMutations: [],
|
|
13053
|
-
aminoAcidMutations: [],
|
|
13054
|
-
nucleotideInsertions: [],
|
|
13055
|
-
aminoAcidInsertions: []
|
|
13056
|
-
};
|
|
13057
|
-
}
|
|
13058
|
-
const values = Array.isArray(initialValue) ? initialValue : Object.values(initialValue).flatMap((it) => it);
|
|
13059
|
-
return values.reduce(
|
|
13060
|
-
(selectedFilters, value) => {
|
|
13061
|
-
const parsedMutation = parseAndValidateMutation(value, referenceGenome);
|
|
13062
|
-
if (parsedMutation === null) {
|
|
13063
|
-
return selectedFilters;
|
|
13064
|
-
}
|
|
13065
|
-
return {
|
|
13066
|
-
...selectedFilters,
|
|
13067
|
-
[parsedMutation.type]: [...selectedFilters[parsedMutation.type], parsedMutation.value]
|
|
13068
|
-
};
|
|
13069
|
-
},
|
|
13070
|
-
{
|
|
13071
|
-
nucleotideMutations: [],
|
|
13072
|
-
aminoAcidMutations: [],
|
|
13073
|
-
nucleotideInsertions: [],
|
|
13074
|
-
aminoAcidInsertions: []
|
|
13483
|
+
const handleSelectedItemsChanged = (newSelectedItems) => {
|
|
13484
|
+
fireChangeEvent(newSelectedItems);
|
|
13485
|
+
setSelectedItems(newSelectedItems);
|
|
13486
|
+
};
|
|
13487
|
+
const handleNewSelectedItem = (selectedItem2) => {
|
|
13488
|
+
if (selectedItem2) {
|
|
13489
|
+
handleSelectedItemsChanged([...selectedItems, selectedItem2]);
|
|
13490
|
+
setInputValue("");
|
|
13491
|
+
setItemCandidate(null);
|
|
13492
|
+
setShowErrorIndicator(false);
|
|
13075
13493
|
}
|
|
13076
|
-
|
|
13077
|
-
|
|
13078
|
-
|
|
13079
|
-
|
|
13080
|
-
|
|
13081
|
-
|
|
13082
|
-
|
|
13083
|
-
|
|
13084
|
-
|
|
13494
|
+
};
|
|
13495
|
+
const handleInputChange = (newInputValue) => {
|
|
13496
|
+
setShowErrorIndicator(false);
|
|
13497
|
+
if (newInputValue == null ? void 0 : newInputValue.includes(",")) {
|
|
13498
|
+
const values = newInputValue == null ? void 0 : newInputValue.split(",").map((value) => {
|
|
13499
|
+
return { value, parsedValue: parseAndValidateMutation(value.trim(), referenceGenome) };
|
|
13500
|
+
});
|
|
13501
|
+
const validEntries = values.map((value) => value.parsedValue).filter((value) => value !== null);
|
|
13502
|
+
const invalidInput = values.filter((value) => value.parsedValue === null).map((value) => value.value.trim()).join(",");
|
|
13503
|
+
const selectedItemCandidates = [...selectedItems, ...validEntries];
|
|
13504
|
+
handleSelectedItemsChanged(extractUniqueValues(selectedItemCandidates));
|
|
13505
|
+
setInputValue(invalidInput);
|
|
13506
|
+
setItemCandidate(null);
|
|
13085
13507
|
} else {
|
|
13086
|
-
setInputValue(
|
|
13087
|
-
|
|
13088
|
-
|
|
13089
|
-
|
|
13090
|
-
|
|
13091
|
-
|
|
13092
|
-
|
|
13093
|
-
|
|
13094
|
-
let updated = false;
|
|
13095
|
-
const invalidQueries = [];
|
|
13096
|
-
for (const value of inputValues) {
|
|
13097
|
-
const trimmedValue = value.trim();
|
|
13098
|
-
const parsedMutation = parseAndValidateMutation(trimmedValue, referenceGenome);
|
|
13099
|
-
if (parsedMutation) {
|
|
13100
|
-
const type = parsedMutation.type;
|
|
13101
|
-
if (!selectedFilters[type].some((i2) => parsedMutation.value.toString() === i2.toString())) {
|
|
13102
|
-
newSelectedOptions = {
|
|
13103
|
-
...newSelectedOptions,
|
|
13104
|
-
[parsedMutation.type]: [...newSelectedOptions[parsedMutation.type], parsedMutation.value]
|
|
13105
|
-
};
|
|
13106
|
-
updated = true;
|
|
13508
|
+
setInputValue(newInputValue ?? "");
|
|
13509
|
+
if (newInputValue !== void 0) {
|
|
13510
|
+
const candidate = parseAndValidateMutation(newInputValue, referenceGenome);
|
|
13511
|
+
const alreadyExists = selectedItems.find(
|
|
13512
|
+
(selectedItem2) => selectedItem2.value.code === (candidate == null ? void 0 : candidate.value.code)
|
|
13513
|
+
);
|
|
13514
|
+
if (!alreadyExists) {
|
|
13515
|
+
setItemCandidate(candidate);
|
|
13107
13516
|
}
|
|
13108
|
-
} else {
|
|
13109
|
-
invalidQueries.push(trimmedValue);
|
|
13110
13517
|
}
|
|
13111
13518
|
}
|
|
13112
|
-
setInputValue(invalidQueries.join(","));
|
|
13113
|
-
if (updated) {
|
|
13114
|
-
setSelectedFilters(newSelectedOptions);
|
|
13115
|
-
setOption(null);
|
|
13116
|
-
}
|
|
13117
13519
|
};
|
|
13118
|
-
const
|
|
13119
|
-
|
|
13120
|
-
|
|
13121
|
-
|
|
13122
|
-
|
|
13123
|
-
|
|
13124
|
-
|
|
13125
|
-
|
|
13126
|
-
|
|
13127
|
-
|
|
13128
|
-
|
|
13129
|
-
|
|
13130
|
-
|
|
13131
|
-
|
|
13132
|
-
};
|
|
13133
|
-
const handleEnterPress = (event) => {
|
|
13134
|
-
if (event.key === "Enter" && option !== null) {
|
|
13135
|
-
handleOptionClick();
|
|
13136
|
-
}
|
|
13137
|
-
};
|
|
13138
|
-
const handleBlur = (event) => {
|
|
13139
|
-
var _a;
|
|
13140
|
-
if (!((_a = selectorRef.current) == null ? void 0 : _a.contains(event.relatedTarget))) {
|
|
13141
|
-
setOption(null);
|
|
13142
|
-
}
|
|
13143
|
-
};
|
|
13144
|
-
return /* @__PURE__ */ u$1("div", { ref: selectorRef, tabIndex: -1, children: [
|
|
13145
|
-
/* @__PURE__ */ u$1(
|
|
13146
|
-
"input",
|
|
13147
|
-
{
|
|
13148
|
-
type: "text",
|
|
13149
|
-
className: "w-full p-2 border-gray-300 border rounded-md",
|
|
13150
|
-
placeholder: getPlaceholder(referenceGenome),
|
|
13151
|
-
value: inputValue,
|
|
13152
|
-
onInput: (e2) => {
|
|
13153
|
-
handleInputChange(e2.target.value);
|
|
13154
|
-
},
|
|
13155
|
-
onKeyDown: (e2) => handleEnterPress(e2),
|
|
13156
|
-
onFocus: () => handleInputChange(inputValue),
|
|
13157
|
-
onBlur: handleBlur
|
|
13520
|
+
const shadowRoot = ((_a = filterRef.current) == null ? void 0 : _a.shadowRoot) ?? void 0;
|
|
13521
|
+
const environment = shadowRoot !== void 0 ? {
|
|
13522
|
+
addEventListener: window.addEventListener.bind(window),
|
|
13523
|
+
removeEventListener: window.removeEventListener.bind(window),
|
|
13524
|
+
document: shadowRoot.ownerDocument,
|
|
13525
|
+
Node: window.Node
|
|
13526
|
+
} : void 0;
|
|
13527
|
+
const { getDropdownProps, removeSelectedItem } = useMultipleSelection({
|
|
13528
|
+
selectedItems,
|
|
13529
|
+
onStateChange({ selectedItems: newSelectedItems, type }) {
|
|
13530
|
+
switch (type) {
|
|
13531
|
+
case useMultipleSelection.stateChangeTypes.FunctionRemoveSelectedItem:
|
|
13532
|
+
handleSelectedItemsChanged(newSelectedItems ?? []);
|
|
13533
|
+
break;
|
|
13158
13534
|
}
|
|
13159
|
-
|
|
13160
|
-
|
|
13161
|
-
|
|
13535
|
+
},
|
|
13536
|
+
environment
|
|
13537
|
+
});
|
|
13538
|
+
const { isOpen, getMenuProps, getInputProps, highlightedIndex, getItemProps, selectedItem } = useCombobox({
|
|
13539
|
+
items,
|
|
13540
|
+
itemToString(item) {
|
|
13541
|
+
return item ? item.value.code : "";
|
|
13542
|
+
},
|
|
13543
|
+
defaultHighlightedIndex: 0,
|
|
13544
|
+
inputValue,
|
|
13545
|
+
onStateChange({ inputValue: newInputValue, type, selectedItem: newSelectedItem }) {
|
|
13546
|
+
switch (type) {
|
|
13547
|
+
case useCombobox.stateChangeTypes.InputKeyDownEnter:
|
|
13548
|
+
case useCombobox.stateChangeTypes.ItemClick:
|
|
13549
|
+
case useCombobox.stateChangeTypes.InputBlur:
|
|
13550
|
+
handleNewSelectedItem(newSelectedItem);
|
|
13551
|
+
break;
|
|
13552
|
+
case useCombobox.stateChangeTypes.InputChange: {
|
|
13553
|
+
handleInputChange(newInputValue);
|
|
13554
|
+
break;
|
|
13555
|
+
}
|
|
13556
|
+
}
|
|
13557
|
+
},
|
|
13558
|
+
environment
|
|
13559
|
+
});
|
|
13560
|
+
if (referenceGenome.nucleotideSequences.length === 0 && referenceGenome.genes.length === 0) {
|
|
13561
|
+
throw new UserFacingError(
|
|
13562
|
+
"No reference sequences available",
|
|
13563
|
+
"This organism has neither nucleotide nor amino acid sequences configured in its reference genome. You cannot filter by mutations."
|
|
13564
|
+
);
|
|
13565
|
+
}
|
|
13566
|
+
return /* @__PURE__ */ u$1("div", { className: "w-full", ref: filterRef, children: [
|
|
13567
|
+
/* @__PURE__ */ u$1("div", { className: `flex gap-x-1 flex-wrap p-1 input h-fit w-full ${showErrorIndicator ? "input-error" : ""}`, children: [
|
|
13568
|
+
selectedItems.map((selectedItemForRender, index) => {
|
|
13569
|
+
return /* @__PURE__ */ u$1("div", { className: "my-1", children: /* @__PURE__ */ u$1(
|
|
13570
|
+
SelectedFilter,
|
|
13571
|
+
{
|
|
13572
|
+
handleRemoveValue: () => {
|
|
13573
|
+
removeSelectedItem(selectedItemForRender);
|
|
13574
|
+
},
|
|
13575
|
+
mutationFilter: selectedItemForRender
|
|
13576
|
+
}
|
|
13577
|
+
) }, `selected-item-${index}`);
|
|
13578
|
+
}),
|
|
13579
|
+
/* @__PURE__ */ u$1("div", { className: "flex gap-0.5 grow p-1", children: [
|
|
13580
|
+
/* @__PURE__ */ u$1(
|
|
13581
|
+
"input",
|
|
13582
|
+
{
|
|
13583
|
+
placeholder: getPlaceholder(referenceGenome),
|
|
13584
|
+
className: "w-full focus:outline-none min-w-8",
|
|
13585
|
+
...getInputProps(getDropdownProps({ preventKeyAction: isOpen })),
|
|
13586
|
+
onBlur: () => {
|
|
13587
|
+
setShowErrorIndicator(inputValue !== "");
|
|
13588
|
+
},
|
|
13589
|
+
size: 10
|
|
13590
|
+
}
|
|
13591
|
+
),
|
|
13592
|
+
/* @__PURE__ */ u$1(MutationFilterInfo, {})
|
|
13593
|
+
] })
|
|
13594
|
+
] }),
|
|
13595
|
+
/* @__PURE__ */ u$1(
|
|
13596
|
+
"ul",
|
|
13162
13597
|
{
|
|
13163
|
-
|
|
13164
|
-
|
|
13165
|
-
|
|
13166
|
-
|
|
13598
|
+
className: `absolute w-inherit bg-white mt-1 shadow-md max-h-80 overflow-scroll p-0 z-10 ${!isOpen && "hidden"}`,
|
|
13599
|
+
...getMenuProps(),
|
|
13600
|
+
children: items.map((item, index) => /* @__PURE__ */ u$1(
|
|
13601
|
+
"li",
|
|
13602
|
+
{
|
|
13603
|
+
className: `${highlightedIndex === index && "bg-blue-300"} ${selectedItem === item && "font-bold"} py-2 px-3 shadow-sm flex flex-col cursor-pointer`,
|
|
13604
|
+
...getItemProps({ item, index }),
|
|
13605
|
+
style: {
|
|
13606
|
+
backgroundColor: backgroundColorMap(item, highlightedIndex === index ? 0.4 : 0.2)
|
|
13607
|
+
},
|
|
13608
|
+
children: /* @__PURE__ */ u$1("span", { children: item.value.code })
|
|
13609
|
+
},
|
|
13610
|
+
`${item.value.code}${index}`
|
|
13611
|
+
))
|
|
13167
13612
|
}
|
|
13168
13613
|
)
|
|
13169
13614
|
] });
|
|
13170
|
-
}
|
|
13615
|
+
}
|
|
13616
|
+
function extractUniqueValues(newSelectedItems) {
|
|
13617
|
+
const uniqueMutationsMap = /* @__PURE__ */ new Map();
|
|
13618
|
+
for (const mutation of newSelectedItems) {
|
|
13619
|
+
if (!uniqueMutationsMap.has(mutation.value.code)) {
|
|
13620
|
+
uniqueMutationsMap.set(mutation.value.code, mutation);
|
|
13621
|
+
}
|
|
13622
|
+
}
|
|
13623
|
+
return Array.from(uniqueMutationsMap.values());
|
|
13624
|
+
}
|
|
13625
|
+
function getInitialState(initialValue, referenceGenome) {
|
|
13626
|
+
if (initialValue === void 0) {
|
|
13627
|
+
return [];
|
|
13628
|
+
}
|
|
13629
|
+
const values = Array.isArray(initialValue) ? initialValue : Object.values(initialValue).flatMap((it) => it);
|
|
13630
|
+
return values.map((value) => parseAndValidateMutation(value, referenceGenome)).filter((parsedMutation) => parsedMutation !== null);
|
|
13631
|
+
}
|
|
13171
13632
|
function getPlaceholder(referenceGenome) {
|
|
13172
13633
|
const nucleotideSubstitution = getExampleMutation(referenceGenome, "nucleotide", "substitution");
|
|
13173
13634
|
const nucleotideInsertion = getExampleMutation(referenceGenome, "nucleotide", "insertion");
|
|
@@ -13176,74 +13637,63 @@ function getPlaceholder(referenceGenome) {
|
|
|
13176
13637
|
const exampleMutations = [nucleotideSubstitution, nucleotideInsertion, aminoAcidSubstitution, aminoAcidInsertion].filter((example) => example !== "").join(", ");
|
|
13177
13638
|
return `Enter a mutation (e.g. ${exampleMutations})`;
|
|
13178
13639
|
}
|
|
13179
|
-
const
|
|
13180
|
-
|
|
13181
|
-
|
|
13182
|
-
|
|
13183
|
-
|
|
13184
|
-
|
|
13185
|
-
|
|
13186
|
-
|
|
13187
|
-
|
|
13188
|
-
|
|
13189
|
-
|
|
13190
|
-
selectedFilters.nucleotideMutations.map((mutation) => /* @__PURE__ */ u$1(
|
|
13191
|
-
SelectedFilter,
|
|
13192
|
-
{
|
|
13193
|
-
handleRemoveValue,
|
|
13194
|
-
mutationFilter: { type: "nucleotideMutations", value: mutation }
|
|
13195
|
-
},
|
|
13196
|
-
mutation.toString()
|
|
13197
|
-
)),
|
|
13198
|
-
selectedFilters.aminoAcidMutations.map((mutation) => /* @__PURE__ */ u$1(
|
|
13199
|
-
SelectedFilter,
|
|
13200
|
-
{
|
|
13201
|
-
handleRemoveValue,
|
|
13202
|
-
mutationFilter: { type: "aminoAcidMutations", value: mutation }
|
|
13203
|
-
},
|
|
13204
|
-
mutation.toString()
|
|
13205
|
-
)),
|
|
13206
|
-
selectedFilters.nucleotideInsertions.map((mutation) => /* @__PURE__ */ u$1(
|
|
13207
|
-
SelectedFilter,
|
|
13208
|
-
{
|
|
13209
|
-
handleRemoveValue,
|
|
13210
|
-
mutationFilter: { type: "nucleotideInsertions", value: mutation }
|
|
13211
|
-
},
|
|
13212
|
-
mutation.toString()
|
|
13213
|
-
)),
|
|
13214
|
-
selectedFilters.aminoAcidInsertions.map((mutation) => /* @__PURE__ */ u$1(
|
|
13215
|
-
SelectedFilter,
|
|
13216
|
-
{
|
|
13217
|
-
handleRemoveValue,
|
|
13218
|
-
mutationFilter: { type: "aminoAcidInsertions", value: mutation }
|
|
13219
|
-
},
|
|
13220
|
-
mutation.toString()
|
|
13221
|
-
))
|
|
13222
|
-
] });
|
|
13640
|
+
const backgroundColorMap = (data, alpha = 0.4) => {
|
|
13641
|
+
switch (data.type) {
|
|
13642
|
+
case "nucleotideMutations":
|
|
13643
|
+
return singleGraphColorRGBByName("green", alpha);
|
|
13644
|
+
case "aminoAcidMutations":
|
|
13645
|
+
return singleGraphColorRGBByName("teal", alpha);
|
|
13646
|
+
case "nucleotideInsertions":
|
|
13647
|
+
return singleGraphColorRGBByName("indigo", alpha);
|
|
13648
|
+
case "aminoAcidInsertions":
|
|
13649
|
+
return singleGraphColorRGBByName("purple", alpha);
|
|
13650
|
+
}
|
|
13223
13651
|
};
|
|
13224
13652
|
const SelectedFilter = ({ handleRemoveValue, mutationFilter }) => {
|
|
13225
13653
|
return /* @__PURE__ */ u$1(
|
|
13226
13654
|
"span",
|
|
13227
13655
|
{
|
|
13228
|
-
className: "center
|
|
13656
|
+
className: "center px-2 py-1 inline-flex text-black rounded-md",
|
|
13229
13657
|
style: {
|
|
13230
13658
|
backgroundColor: backgroundColorMap(mutationFilter)
|
|
13231
13659
|
},
|
|
13232
13660
|
children: [
|
|
13233
13661
|
mutationFilter.value.toString(),
|
|
13234
|
-
/* @__PURE__ */ u$1(
|
|
13662
|
+
/* @__PURE__ */ u$1(
|
|
13663
|
+
"button",
|
|
13664
|
+
{
|
|
13665
|
+
className: "ml-1 cursor-pointer",
|
|
13666
|
+
"aria-label": `remove mutation filter ${mutationFilter.value.code}`,
|
|
13667
|
+
onClick: () => handleRemoveValue(mutationFilter),
|
|
13668
|
+
children: "×"
|
|
13669
|
+
}
|
|
13670
|
+
)
|
|
13235
13671
|
]
|
|
13236
13672
|
},
|
|
13237
13673
|
mutationFilter.value.toString()
|
|
13238
13674
|
);
|
|
13239
13675
|
};
|
|
13240
13676
|
function mapToMutationFilterStrings(selectedFilters) {
|
|
13241
|
-
return
|
|
13242
|
-
|
|
13243
|
-
|
|
13244
|
-
|
|
13245
|
-
|
|
13246
|
-
|
|
13677
|
+
return selectedFilters.reduce(
|
|
13678
|
+
(acc, filter) => {
|
|
13679
|
+
switch (filter.type) {
|
|
13680
|
+
case "nucleotideMutations":
|
|
13681
|
+
return { ...acc, nucleotideMutations: [...acc.nucleotideMutations, filter.value.toString()] };
|
|
13682
|
+
case "aminoAcidMutations":
|
|
13683
|
+
return { ...acc, aminoAcidMutations: [...acc.aminoAcidMutations, filter.value.toString()] };
|
|
13684
|
+
case "nucleotideInsertions":
|
|
13685
|
+
return { ...acc, nucleotideInsertions: [...acc.nucleotideInsertions, filter.value.toString()] };
|
|
13686
|
+
case "aminoAcidInsertions":
|
|
13687
|
+
return { ...acc, aminoAcidInsertions: [...acc.aminoAcidInsertions, filter.value.toString()] };
|
|
13688
|
+
}
|
|
13689
|
+
},
|
|
13690
|
+
{
|
|
13691
|
+
aminoAcidMutations: [],
|
|
13692
|
+
nucleotideMutations: [],
|
|
13693
|
+
aminoAcidInsertions: [],
|
|
13694
|
+
nucleotideInsertions: []
|
|
13695
|
+
}
|
|
13696
|
+
);
|
|
13247
13697
|
}
|
|
13248
13698
|
var __defProp$1 = Object.defineProperty;
|
|
13249
13699
|
var __getOwnPropDesc$1 = Object.getOwnPropertyDescriptor;
|