@wordpress/block-editor
Version:
35 lines (34 loc) • 1 kB
JavaScript
// packages/block-editor/src/utils/object.js
function setImmutably(object, path, value) {
path = Array.isArray(path) ? [...path] : [path];
object = Array.isArray(object) ? [...object] : { ...object };
const leaf = path.pop();
let prev = object;
for (const key of path) {
const lvl = prev[key];
prev = prev[key] = Array.isArray(lvl) ? [...lvl] : { ...lvl };
}
prev[leaf] = value;
return object;
}
var getValueFromObjectPath = (object, path, defaultValue) => {
const arrayPath = Array.isArray(path) ? path : path.split(".");
let value = object;
arrayPath.forEach((fieldName) => {
value = value?.[fieldName];
});
return value ?? defaultValue;
};
function uniqByProperty(array, property) {
const seen = /* @__PURE__ */ new Set();
return array.filter((item) => {
const value = item[property];
return seen.has(value) ? false : seen.add(value);
});
}
export {
getValueFromObjectPath,
setImmutably,
uniqByProperty
};
//# sourceMappingURL=object.js.map