mirror of
https://github.com/hanzoai/sentinel.git
synced 2026-09-29 22:34:33 +00:00
34 lines
1.2 KiB
TypeScript
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;
|
|
};
|