@linid-dm/directory-manager-client-core
Version:
Core package by providing a set of angular components for the Directory Manager app.
87 lines • 11.7 kB
JavaScript
/**
* Copyright (C) 2020-2024 Linagora
*
* This program is free software: you can redistribute it and/or modify it under
* the terms of the GNU Affero General Public License as published by the Free
* Software Foundation, either version 3 of the License, or (at your option) any
* later version, provided you comply with the Additional Terms applicable for
* LinID Directory Manager software by LINAGORA pursuant to Section 7 of the GNU
* Affero General Public License, subsections (b), (c), and (e), pursuant to
* which these Appropriate Legal Notices must notably (i) retain the display of
* the "LinID™" trademark/logo at the top of the interface window, the display
* of the “You are using the Open Source and free version of LinID™, powered by
* Linagora © 2009–2013. Contribute to LinID R&D by subscribing to an Enterprise
* offer!” infobox and in the e-mails sent with the Program, notice appended to
* any type of outbound messages (e.g. e-mail and meeting requests) as well as
* in the LinID Directory Manager user interface, (ii) retain all hypertext
* links between LinID Directory Manager and https://linid.org/, as well as
* between LINAGORA and LINAGORA.com, and (iii) refrain from infringing LINAGORA
* intellectual property rights over its trademarks and commercial brands. Other
* Additional Terms apply, see <http://www.linagora.com/licenses/> for more
* details.
*
* This program is distributed in the hope that it will be useful, but WITHOUT
* ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
* FOR A PARTICULAR PURPOSE. See the GNU Affero General Public License for more
* details.
*
* You should have received a copy of the GNU Affero General Public License and
* its applicable Additional Terms for LinID Directory Manager along with this
* program. If not, see <http://www.gnu.org/licenses/> for the GNU Affero
* General Public License version 3 and <http://www.linagora.com/licenses/> for
* the Additional Terms applicable to the LinID Directory Manager software.
*/
export function emptyJsTable() {
return {
byId: {},
allIds: [],
};
}
export function toJsTable(obj) {
const allIds = Object.keys(obj);
const byId = {};
allIds.forEach((id) => {
byId[id] = Object.assign({}, obj[id]);
});
return { byId, allIds };
}
/**
* This merge value into table.byId[id]
*/
export function updateById(table, id, value) {
return Object.assign({}, table, {
byId: {
...table.byId,
[id]: Object.assign({}, table.byId[id], value),
},
});
}
/**
* This put value in table.byId[id] and adds id to allIds.
*/
export function putById(table, id, value, initializer) {
return Object.assign({}, table, {
allIds: table.byId[id]
? [...Array.from(new Set([...table.allIds, id]))]
: [...table.allIds, id],
byId: {
...table.byId,
[id]: Object.assign({}, table.byId[id] ? table.byId[id] : initializer(), value),
},
});
}
/**
* This merges all the elements of toMerge.byId
* into table.byId elements and toMerge.allIds into table.allIds.
* And also ensure elements are fully initialised.
*/
export function mergeInto(table, toMerge) {
return Object.assign({}, table, {
allIds: [...Array.from(new Set([...table.allIds, ...toMerge.allIds]))],
byId: toMerge.allIds.reduce((acc, id) => ({
...acc,
[id]: Object.assign({}, acc[id], toMerge.byId[id]),
}), table.byId),
});
}
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoianN0YWJsZS5oZWxwZXIuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9wYWNrYWdlcy9saWJzL2NsaWVudC1jb3JlL3NyYy9saWIvc2hhcmVkL2hlbHBlcnMvanN0YWJsZS5oZWxwZXIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0dBZ0NHO0FBT0gsTUFBTSxVQUFVLFlBQVk7SUFDMUIsT0FBTztRQUNMLElBQUksRUFBRSxFQUFFO1FBQ1IsTUFBTSxFQUFFLEVBQUU7S0FDWCxDQUFDO0FBQ0osQ0FBQztBQUVELE1BQU0sVUFBVSxTQUFTLENBQUksR0FBd0I7SUFDbkQsTUFBTSxNQUFNLEdBQWEsTUFBTSxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQztJQUUxQyxNQUFNLElBQUksR0FBd0IsRUFBRSxDQUFDO0lBRXJDLE1BQU0sQ0FBQyxPQUFPLENBQUMsQ0FBQyxFQUFFLEVBQUUsRUFBRTtRQUNwQixJQUFJLENBQUMsRUFBRSxDQUFDLEdBQUcsTUFBTSxDQUFDLE1BQU0sQ0FBQyxFQUFFLEVBQUUsR0FBRyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUM7SUFDeEMsQ0FBQyxDQUFDLENBQUM7SUFFSCxPQUFPLEVBQUUsSUFBSSxFQUFFLE1BQU0sRUFBRSxDQUFDO0FBQzFCLENBQUM7QUFFRDs7R0FFRztBQUNILE1BQU0sVUFBVSxVQUFVLENBQ3hCLEtBQVEsRUFDUixFQUFVLEVBQ1YsS0FBaUI7SUFFakIsT0FBTyxNQUFNLENBQUMsTUFBTSxDQUFDLEVBQUUsRUFBRSxLQUFLLEVBQUU7UUFDOUIsSUFBSSxFQUFFO1lBQ0osR0FBRyxLQUFLLENBQUMsSUFBSTtZQUNiLENBQUMsRUFBRSxDQUFDLEVBQUUsTUFBTSxDQUFDLE1BQU0sQ0FBQyxFQUFFLEVBQUUsS0FBSyxDQUFDLElBQUksQ0FBQyxFQUFFLENBQUMsRUFBRSxLQUFLLENBQUM7U0FDL0M7S0FDRixDQUFDLENBQUM7QUFDTCxDQUFDO0FBRUQ7O0dBRUc7QUFDSCxNQUFNLFVBQVUsT0FBTyxDQUNyQixLQUFRLEVBQ1IsRUFBVSxFQUNWLEtBQWlCLEVBQ2pCLFdBQW9CO0lBRXBCLE9BQU8sTUFBTSxDQUFDLE1BQU0sQ0FBQyxFQUFFLEVBQUUsS0FBSyxFQUFFO1FBQzlCLE1BQU0sRUFBRSxLQUFLLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQztZQUNwQixDQUFDLENBQUMsQ0FBQyxHQUFHLEtBQUssQ0FBQyxJQUFJLENBQUMsSUFBSSxHQUFHLENBQUMsQ0FBQyxHQUFHLEtBQUssQ0FBQyxNQUFNLEVBQUUsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDO1lBQ2pELENBQUMsQ0FBQyxDQUFDLEdBQUcsS0FBSyxDQUFDLE1BQU0sRUFBRSxFQUFFLENBQUM7UUFDekIsSUFBSSxFQUFFO1lBQ0osR0FBRyxLQUFLLENBQUMsSUFBSTtZQUNiLENBQUMsRUFBRSxDQUFDLEVBQUUsTUFBTSxDQUFDLE1BQU0sQ0FDakIsRUFBRSxFQUNGLEtBQUssQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLFdBQVcsRUFBRSxFQUMvQyxLQUFLLENBQ047U0FDRjtLQUNGLENBQUMsQ0FBQztBQUNMLENBQUM7QUFFRDs7OztHQUlHO0FBQ0gsTUFBTSxVQUFVLFNBQVMsQ0FDdkIsS0FBUSxFQUNSLE9BQW1CO0lBRW5CLE9BQU8sTUFBTSxDQUFDLE1BQU0sQ0FBQyxFQUFFLEVBQUUsS0FBSyxFQUFFO1FBQzlCLE1BQU0sRUFBRSxDQUFDLEdBQUcsS0FBSyxDQUFDLElBQUksQ0FBQyxJQUFJLEdBQUcsQ0FBQyxDQUFDLEdBQUcsS0FBSyxDQUFDLE1BQU0sRUFBRSxHQUFHLE9BQU8sQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLENBQUM7UUFDdEUsSUFBSSxFQUFFLE9BQU8sQ0FBQyxNQUFNLENBQUMsTUFBTSxDQUN6QixDQUFDLEdBQUcsRUFBRSxFQUFFLEVBQUUsRUFBRSxDQUFDLENBQUM7WUFDWixHQUFHLEdBQUc7WUFDTixDQUFDLEVBQUUsQ0FBQyxFQUFFLE1BQU0sQ0FBQyxNQUFNLENBQUMsRUFBRSxFQUFFLEdBQUcsQ0FBQyxFQUFFLENBQUMsRUFBRSxPQUFPLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQyxDQUFDO1NBQ25ELENBQUMsRUFDRixLQUFLLENBQUMsSUFBSSxDQUNYO0tBQ0YsQ0FBQyxDQUFDO0FBQ0wsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbIi8qKlxuICogQ29weXJpZ2h0IChDKSAyMDIwLTIwMjQgTGluYWdvcmFcbiAqXG4gKiBUaGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTogeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeSBpdCB1bmRlclxuICogdGhlIHRlcm1zIG9mIHRoZSBHTlUgQWZmZXJvIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5IHRoZSBGcmVlXG4gKiBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBlaXRoZXIgdmVyc2lvbiAzIG9mIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFueVxuICogbGF0ZXIgdmVyc2lvbiwgcHJvdmlkZWQgeW91IGNvbXBseSB3aXRoIHRoZSBBZGRpdGlvbmFsIFRlcm1zIGFwcGxpY2FibGUgZm9yXG4gKiBMaW5JRCBEaXJlY3RvcnkgTWFuYWdlciBzb2Z0d2FyZSBieSBMSU5BR09SQSBwdXJzdWFudCB0byBTZWN0aW9uIDcgb2YgdGhlIEdOVVxuICogQWZmZXJvIEdlbmVyYWwgUHVibGljIExpY2Vuc2UsIHN1YnNlY3Rpb25zIChiKSwgKGMpLCBhbmQgKGUpLCBwdXJzdWFudCB0b1xuICogd2hpY2ggdGhlc2UgQXBwcm9wcmlhdGUgTGVnYWwgTm90aWNlcyBtdXN0IG5vdGFibHkgKGkpIHJldGFpbiB0aGUgZGlzcGxheSBvZlxuICogdGhlIFwiTGluSUTihKJcIiB0cmFkZW1hcmsvbG9nbyBhdCB0aGUgdG9wIG9mIHRoZSBpbnRlcmZhY2Ugd2luZG93LCB0aGUgZGlzcGxheVxuICogb2YgdGhlIOKAnFlvdSBhcmUgdXNpbmcgdGhlIE9wZW4gU291cmNlIGFuZCBmcmVlIHZlcnNpb24gb2YgTGluSUTihKIsIHBvd2VyZWQgYnlcbiAqIExpbmFnb3JhIMKpIDIwMDnigJMyMDEzLiBDb250cmlidXRlIHRvIExpbklEIFImRCBieSBzdWJzY3JpYmluZyB0byBhbiBFbnRlcnByaXNlXG4gKiBvZmZlciHigJ0gaW5mb2JveCBhbmQgaW4gdGhlIGUtbWFpbHMgc2VudCB3aXRoIHRoZSBQcm9ncmFtLCBub3RpY2UgYXBwZW5kZWQgdG9cbiAqIGFueSB0eXBlIG9mIG91dGJvdW5kIG1lc3NhZ2VzIChlLmcuIGUtbWFpbCBhbmQgbWVldGluZyByZXF1ZXN0cykgYXMgd2VsbCBhc1xuICogaW4gdGhlIExpbklEIERpcmVjdG9yeSBNYW5hZ2VyIHVzZXIgaW50ZXJmYWNlLCAoaWkpIHJldGFpbiBhbGwgaHlwZXJ0ZXh0XG4gKiBsaW5rcyBiZXR3ZWVuIExpbklEIERpcmVjdG9yeSBNYW5hZ2VyIGFuZCBodHRwczovL2xpbmlkLm9yZy8sIGFzIHdlbGwgYXNcbiAqIGJldHdlZW4gTElOQUdPUkEgYW5kIExJTkFHT1JBLmNvbSwgYW5kIChpaWkpIHJlZnJhaW4gZnJvbSBpbmZyaW5naW5nIExJTkFHT1JBXG4gKiBpbnRlbGxlY3R1YWwgcHJvcGVydHkgcmlnaHRzIG92ZXIgaXRzIHRyYWRlbWFya3MgYW5kIGNvbW1lcmNpYWwgYnJhbmRzLiBPdGhlclxuICogQWRkaXRpb25hbCBUZXJtcyBhcHBseSwgc2VlIDxodHRwOi8vd3d3LmxpbmFnb3JhLmNvbS9saWNlbnNlcy8+IGZvciBtb3JlXG4gKiBkZXRhaWxzLlxuICpcbiAqIFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLCBidXQgV0lUSE9VVFxuICogQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1NcbiAqIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gU2VlIHRoZSBHTlUgQWZmZXJvIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmVcbiAqIGRldGFpbHMuXG4gKlxuICogWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIEFmZmVybyBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFuZFxuICogaXRzIGFwcGxpY2FibGUgQWRkaXRpb25hbCBUZXJtcyBmb3IgTGluSUQgRGlyZWN0b3J5IE1hbmFnZXIgYWxvbmcgd2l0aCB0aGlzXG4gKiBwcm9ncmFtLiBJZiBub3QsIHNlZSA8aHR0cDovL3d3dy5nbnUub3JnL2xpY2Vuc2VzLz4gZm9yIHRoZSBHTlUgQWZmZXJvXG4gKiBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIHZlcnNpb24gMyBhbmQgPGh0dHA6Ly93d3cubGluYWdvcmEuY29tL2xpY2Vuc2VzLz4gZm9yXG4gKiB0aGUgQWRkaXRpb25hbCBUZXJtcyBhcHBsaWNhYmxlIHRvIHRoZSBMaW5JRCBEaXJlY3RvcnkgTWFuYWdlciBzb2Z0d2FyZS5cbiAqL1xuXG5leHBvcnQgaW50ZXJmYWNlIEpzVGFibGU8ST4ge1xuICByZWFkb25seSBieUlkOiB7IHJlYWRvbmx5IFtpZDogc3RyaW5nXTogSSB9O1xuICByZWFkb25seSBhbGxJZHM6IHN0cmluZ1tdO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gZW1wdHlKc1RhYmxlPEk+KCk6IEpzVGFibGU8ST4ge1xuICByZXR1cm4ge1xuICAgIGJ5SWQ6IHt9LFxuICAgIGFsbElkczogW10sXG4gIH07XG59XG5cbmV4cG9ydCBmdW5jdGlvbiB0b0pzVGFibGU8ST4ob2JqOiB7IFtpZDogc3RyaW5nXTogSSB9KTogSnNUYWJsZTxJPiB7XG4gIGNvbnN0IGFsbElkczogc3RyaW5nW10gPSBPYmplY3Qua2V5cyhvYmopO1xuXG4gIGNvbnN0IGJ5SWQ6IHsgW2lkOiBzdHJpbmddOiBJIH0gPSB7fTtcblxuICBhbGxJZHMuZm9yRWFjaCgoaWQpID0+IHtcbiAgICBieUlkW2lkXSA9IE9iamVjdC5hc3NpZ24oe30sIG9ialtpZF0pO1xuICB9KTtcblxuICByZXR1cm4geyBieUlkLCBhbGxJZHMgfTtcbn1cblxuLyoqXG4gKiBUaGlzIG1lcmdlIHZhbHVlIGludG8gdGFibGUuYnlJZFtpZF1cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHVwZGF0ZUJ5SWQ8SSwgTSBleHRlbmRzIEpzVGFibGU8ST4gPSBKc1RhYmxlPEk+PihcbiAgdGFibGU6IE0sXG4gIGlkOiBzdHJpbmcsXG4gIHZhbHVlOiBQYXJ0aWFsPEk+XG4pOiBNIHtcbiAgcmV0dXJuIE9iamVjdC5hc3NpZ24oe30sIHRhYmxlLCB7XG4gICAgYnlJZDoge1xuICAgICAgLi4udGFibGUuYnlJZCxcbiAgICAgIFtpZF06IE9iamVjdC5hc3NpZ24oe30sIHRhYmxlLmJ5SWRbaWRdLCB2YWx1ZSksXG4gICAgfSxcbiAgfSk7XG59XG5cbi8qKlxuICogVGhpcyBwdXQgdmFsdWUgaW4gdGFibGUuYnlJZFtpZF0gYW5kIGFkZHMgaWQgdG8gYWxsSWRzLlxuICovXG5leHBvcnQgZnVuY3Rpb24gcHV0QnlJZDxJLCBNIGV4dGVuZHMgSnNUYWJsZTxJPiA9IEpzVGFibGU8ST4+KFxuICB0YWJsZTogTSxcbiAgaWQ6IHN0cmluZyxcbiAgdmFsdWU6IFBhcnRpYWw8ST4sXG4gIGluaXRpYWxpemVyOiAoKSA9PiBJXG4pOiBNIHtcbiAgcmV0dXJuIE9iamVjdC5hc3NpZ24oe30sIHRhYmxlLCB7XG4gICAgYWxsSWRzOiB0YWJsZS5ieUlkW2lkXVxuICAgICAgPyBbLi4uQXJyYXkuZnJvbShuZXcgU2V0KFsuLi50YWJsZS5hbGxJZHMsIGlkXSkpXVxuICAgICAgOiBbLi4udGFibGUuYWxsSWRzLCBpZF0sXG4gICAgYnlJZDoge1xuICAgICAgLi4udGFibGUuYnlJZCxcbiAgICAgIFtpZF06IE9iamVjdC5hc3NpZ24oXG4gICAgICAgIHt9LFxuICAgICAgICB0YWJsZS5ieUlkW2lkXSA/IHRhYmxlLmJ5SWRbaWRdIDogaW5pdGlhbGl6ZXIoKSxcbiAgICAgICAgdmFsdWVcbiAgICAgICksXG4gICAgfSxcbiAgfSk7XG59XG5cbi8qKlxuICogVGhpcyBtZXJnZXMgYWxsIHRoZSBlbGVtZW50cyBvZiB0b01lcmdlLmJ5SWRcbiAqIGludG8gdGFibGUuYnlJZCBlbGVtZW50cyBhbmQgdG9NZXJnZS5hbGxJZHMgaW50byB0YWJsZS5hbGxJZHMuXG4gKiBBbmQgYWxzbyBlbnN1cmUgZWxlbWVudHMgYXJlIGZ1bGx5IGluaXRpYWxpc2VkLlxuICovXG5leHBvcnQgZnVuY3Rpb24gbWVyZ2VJbnRvPEksIE0gZXh0ZW5kcyBKc1RhYmxlPEk+PihcbiAgdGFibGU6IE0sXG4gIHRvTWVyZ2U6IEpzVGFibGU8ST5cbik6IE0ge1xuICByZXR1cm4gT2JqZWN0LmFzc2lnbih7fSwgdGFibGUsIHtcbiAgICBhbGxJZHM6IFsuLi5BcnJheS5mcm9tKG5ldyBTZXQoWy4uLnRhYmxlLmFsbElkcywgLi4udG9NZXJnZS5hbGxJZHNdKSldLFxuICAgIGJ5SWQ6IHRvTWVyZ2UuYWxsSWRzLnJlZHVjZShcbiAgICAgIChhY2MsIGlkKSA9PiAoe1xuICAgICAgICAuLi5hY2MsXG4gICAgICAgIFtpZF06IE9iamVjdC5hc3NpZ24oe30sIGFjY1tpZF0sIHRvTWVyZ2UuYnlJZFtpZF0pLFxuICAgICAgfSksXG4gICAgICB0YWJsZS5ieUlkXG4gICAgKSxcbiAgfSk7XG59XG4iXX0=