sample2
unknown
typescript
2 years ago
1.4 kB
8
Indexable
type ComponentState = {
provider: ProviderKind | undefined;
selectedTPMRGs: TPMRG[];
tpmrgs: TPMRG[];
};
const useComponentState = (initial?: {
provider: ProviderKind;
selectedTPMRGs: TPMRG[];
tpmrgs: TPMRG[];
}) => {
return useMultiQueryParameterState<ComponentState>()(
["rprovider", "rtpmrg", "rselectedTPMRG"] as const,
{ provider: undefined, selectedTPMRGs: [], tpmrgs: [] },
// deserialize
(v) => {
const rprovider = (() => {
if (initial?.provider != null) {
return initial.provider;
}
if (typeof v.rprovider === "string" && isProviderKind(v.rprovider)) {
return v.rprovider;
} else {
return undefined;
}
})();
const rtpmrg = (() => {
if (v.rtpmrg instanceof TPMRG) {
return [v.rtpmrg];
} else if (v.rtpmrg != null) {
return v.rtpmrg;
} else {
return [];
}
})();
const rselectedTPMRG = (() => {
if (v.rtpmrg instanceof TPMRG) {
return [v.rtpmrg];
} else if (v.rtpmrg != null) {
return v.rtpmrg;
} else {
return [];
}
})();
return {
tpmrgs: rtpmrg,
provider: rprovider,
selectedTPMRGs: rselectedTPMRG,
};
},
// serialize
(v) => {
return {
rtpmrg: v.tpmrgs,
rprovider: v.provider || [],
};
},
);
};Editor is loading...
Leave a Comment