prefix.js 884 B

12345678910111213141516171819202122232425
  1. const hyphenPattern = /-(.)/g;
  2. function camelize(str) {
  3. return str.replace(hyphenPattern, (_, char) => char.toUpperCase());
  4. }
  5. const memoized = {};
  6. const prefixes = ['webkit', 'ms', 'moz', 'o'];
  7. const testStyle = typeof document !== 'undefined' ? document.createElement('div').style : {};
  8. function getWithPrefix(name) {
  9. for (let i = 0; i < prefixes.length; i += 1) {
  10. const prefixedName = prefixes[i] + name;
  11. if (prefixedName in testStyle) {
  12. return prefixedName;
  13. }
  14. }
  15. return null;
  16. }
  17. export function getVendorPrefixedName(property) {
  18. const name = camelize(property);
  19. if (memoized[name] == null) {
  20. const capitalizedName = name.charAt(0).toUpperCase() + name.slice(1);
  21. memoized[name] = name in testStyle ? name : getWithPrefix(capitalizedName);
  22. }
  23. return memoized[name];
  24. }
  25. //# sourceMappingURL=prefix.js.map