@shopify/polaris
Version:
Shopify’s product component library
29 lines (22 loc) • 654 B
JavaScript
var OBJECT_NOTATION_MATCHER = /\[(.*?)\]|(\w+)/g;
function get(obj, keypath, defaultValue) {
if (obj == null) return undefined;
var keys = Array.isArray(keypath) ? keypath : getKeypath(keypath);
var acc = obj; // eslint-disable-next-line @typescript-eslint/prefer-for-of
for (var i = 0; i < keys.length; i++) {
var val = acc[keys[i]];
if (val === undefined) return defaultValue;
acc = val;
}
return acc;
}
function getKeypath(str) {
var path = [];
var result;
while (result = OBJECT_NOTATION_MATCHER.exec(str)) {
var [, first, second] = result;
path.push(first || second);
}
return path;
}
export { get };