- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
- 13
- 14
- 15
- 16
- 17
- 18
- 19
- 20
- 21
- 22
- 23
- 24
- 25
- 26
- 27
- 28
- 29
- 30
- 31
- 32
- 33
- 34
- 35
- 36
- 37
- 38
- 39
- 40
- 41
- 42
- 43
- 44
- 45
- 46
- 47
- 48
- 49
- 50
- 51
- 52
- 53
- 54
- 55
- 56
- 57
- 58
- 59
- 60
- 61
- 62
- 63
- 64
- 65
- 66
- 67
- 68
import { capitalize } from "./string.js";
/**
* a collection of utility functons to ease porting between different user agents.
* @namespace utils.agent
*/
/**
* Known agent vendors
* @ignore
*/
const vendors = [ "ms", "MS", "moz", "webkit", "o" ];
/**
* Get a vendor-prefixed property
* @public
* @name prefixed
* @param {string} name - Property name
* @param {object} [obj=globalThis] - Object or element reference to access
* @returns {string} Value of property
* @memberof utils.agent
*/
export function prefixed(name, obj) {
obj = obj || globalThis;
if (name in obj) {
return obj[name];
}
let uc_name = capitalize(name);
let result;
vendors.some((vendor) => {
let name = vendor + uc_name;
return (result = (name in obj) ? obj[name] : undefined);
});
return result;
}
/**
* Set a vendor-prefixed property
* @public
* @name setPrefixed
* @param {string} name - Property name
* @param {string} value - Property value
* @param {object} [obj=globalThis] - Object or element reference to access
* @returns {boolean} true if one of the vendor-prefixed property was found
* @memberof utils.agent
*/
export function setPrefixed(name, value, obj) {
obj = obj || globalThis;
if (name in obj) {
obj[name] = value;
return;
}
let uc_name = capitalize(name);
vendors.some((vendor) => {
let name = vendor + uc_name;
if (name in obj) {
obj[name] = value;
return true;
}
});
return false;
}