redux-devtools/packages/react-dock/src/autoprefix.ts
renovate[bot] bd463b19ec
chore(deps): update typescript-eslint monorepo to v8 (major) (#1710)
* chore(deps): update typescript-eslint monorepo to v8

* instrument

* react-base16-styling

* Disable react/prop-types

* react-json-tree

* redux-devtools-ui

* inspector-monitor

* react-dock

* log-monitor

* map2tree

* d3-state-visualizer

* test-tab

* rtk-query-monitor

* slider-monitor

* trace-tab

* chart-monitor

* app-core

* utils

* test-tab-demo

* inspector-monitor-demo

* redux-devtools-counter-demo

* redux-devtools-todomvc-demo

* remote

* cli

* react-dock-demo

---------

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
Co-authored-by: Nathan Bierema <nbierema@gmail.com>
2024-08-05 00:38:28 +00:00

60 lines
1.3 KiB
TypeScript

// Same as https://github.com/SimenB/react-vendor-prefixes/blob/master/src/index.js,
// but dumber
import { CSSProperties } from 'react';
const vendorSpecificProperties = [
'animation',
'animationDelay',
'animationDirection',
'animationDuration',
'animationFillMode',
'animationIterationCount',
'animationName',
'animationPlayState',
'animationTimingFunction',
'appearance',
'backfaceVisibility',
'backgroundClip',
'borderImage',
'borderImageSlice',
'boxSizing',
'boxShadow',
'contentColumns',
'transform',
'transformOrigin',
'transformStyle',
'transition',
'transitionDelay',
'transitionDuration',
'transitionProperty',
'transitionTimingFunction',
'perspective',
'perspectiveOrigin',
'userSelect',
];
const prefixes = ['Moz', 'Webkit', 'ms', 'O'];
function prefixProp<Value>(key: string, value: Value) {
return prefixes.reduce<{ [key: string]: Value }>(
(obj, pre) => (
(obj[pre + key[0].toUpperCase() + key.substr(1)] = value), obj
),
{},
);
}
export default function autoprefix(style: CSSProperties) {
return Object.keys(style).reduce(
(obj, key) =>
vendorSpecificProperties.includes(key)
? {
...obj,
...prefixProp(key, style[key as keyof CSSProperties]),
}
: obj,
style,
);
}