| 1234567891011121314151617181920212223242526272829303132333435363738 |
- "use strict";
- var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
- Object.defineProperty(exports, "__esModule", {
- value: true
- });
- exports.default = set;
- var _extends2 = _interopRequireDefault(require("@babel/runtime/helpers/extends"));
- var _get = _interopRequireDefault(require("./get"));
- function internalSet(entity, paths, value, removeIfUndefined) {
- if (!paths.length) {
- return value;
- }
- const [path, ...restPath] = paths;
- let clone;
- if (!entity && typeof path === 'number') {
- clone = [];
- } else if (Array.isArray(entity)) {
- clone = [...entity];
- } else {
- clone = (0, _extends2.default)({}, entity);
- }
- // Delete prop if `removeIfUndefined` and value is undefined
- if (removeIfUndefined && value === undefined && restPath.length === 1) {
- delete clone[path][restPath[0]];
- } else {
- clone[path] = internalSet(clone[path], restPath, value, removeIfUndefined);
- }
- return clone;
- }
- function set(entity, paths, value) {
- let removeIfUndefined = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : false;
- // Do nothing if `removeIfUndefined` and parent object not exist
- if (paths.length && removeIfUndefined && value === undefined && !(0, _get.default)(entity, paths.slice(0, -1))) {
- return entity;
- }
- return internalSet(entity, paths, value, removeIfUndefined);
- }
|