UNPKG

@shopify/polaris

Version:

Shopify’s product component library

29 lines (22 loc) 654 B
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 };