@progress/kendo-angular-scheduler
Version:
Kendo UI Scheduler Angular - Outlook or Google-style angular scheduler calendar. Full-featured and customizable embedded scheduling from the creator developers trust for professional UI components.
31 lines (30 loc) • 1.17 kB
JavaScript
/**-----------------------------------------------------------------------------------------
* Copyright © 2025 Progress Software Corporation. All rights reserved.
* Licensed under commercial license. See LICENSE.md in the project root for more information
*-------------------------------------------------------------------------------------------*/
const FIELD_REGEX = /\[(?:(\d+)|['"](.*?)['"])\]|((?:(?!\[.*?\]|\.).)+)/g;
const setterCache = {};
setterCache['undefined'] = obj => obj;
/**
* @hidden
*
* TODO: Move to @progress/kendo-common
*/
export function setter(field) {
if (setterCache[field]) {
return setterCache[field];
}
const fields = [];
field.replace(FIELD_REGEX, function (_match, index, indexAccessor, fieldName) {
fields.push(index !== undefined ? index : (indexAccessor || fieldName));
});
setterCache[field] = function (obj, value) {
let root = obj;
const depth = fields.length - 1;
for (let idx = 0; idx < depth && root; idx++) {
root = root[fields[idx]] = root[fields[idx]] || {};
}
root[fields[depth]] = value;
};
return setterCache[field];
}