Files
2024-02-15 17:01:50 +00:00

34 lines
1.2 KiB
TypeScript

export type UserSelectValues = {
MozUserSelect: string | null;
msUserSelect: string | null;
userSelect: string | null;
webkitUserSelect: string | null;
};
export const setBodyUserSelect = (nextValues: UserSelectValues): UserSelectValues => {
// NOTE: Vendor prefixes other than `ms` should begin with a capital letter.
// ref: https://reactjs.org/docs/dom-elements.html#style
const previousValues = {
userSelect: document.body.style.userSelect,
// MozUserSelect is not typed in TS
// @ts-expect-error
MozUserSelect: document.body.style.MozUserSelect,
// msUserSelect is not typed in TS
// @ts-expect-error
msUserSelect: document.body.style.msUserSelect,
webkitUserSelect: document.body.style.webkitUserSelect,
};
document.body.style.userSelect = nextValues.userSelect || '';
// MozUserSelect is not typed in TS
// @ts-expect-error
document.body.style.MozUserSelect = nextValues.MozUserSelect || '';
// msUserSelect is not typed in TS
// @ts-expect-error
document.body.style.msUserSelect = nextValues.msUserSelect || '';
document.body.style.webkitUserSelect = nextValues.webkitUserSelect || '';
return previousValues;
};