UNPKG

@adaptabletools/adaptable-cjs

Version:

Powerful data-agnostic HTML5 AG Grid extension which provides advanced, cutting-edge functionality to meet all DataGrid requirements

123 lines (122 loc) 5.01 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.AdaptableHelper = exports.isAdaptableObject = exports.removeAdaptableObjectPrimitives = exports.removeAdaptableObjectPrimitivesInline = exports.removeAdaptableObjectPrimitivesInlineDeep = exports.addAdaptableObjectPrimitives = exports.getAccessLevelForObject = exports.addUuidsToInitialState = void 0; const tslib_1 = require("tslib"); const cloneDeepWith_1 = tslib_1.__importDefault(require("lodash/cloneDeepWith")); const isPlainObject_1 = tslib_1.__importDefault(require("lodash/isPlainObject")); const Uuid_1 = require("../../AdaptableState/Uuid"); const package_json_1 = tslib_1.__importDefault(require("../../../package.json")); const GET_CURRENT_VERSION = () => { const globalObject = typeof globalThis !== 'undefined' ? globalThis : window; return ((typeof globalObject['GET_CURRENT_ADAPTABLE_VERSION'] === 'function' ? globalObject['GET_CURRENT_ADAPTABLE_VERSION']() : package_json_1.default.version) ?? package_json_1.default.version); }; function addUuidsToInitialState(initialState) { const customizer = (value) => { // so whenever we clone a plain object, // we add a Uuid property // jw added 9/8/20: unless there is on there already if ((0, isPlainObject_1.default)(value) && value != initialState) { if (value.Uuid == null || value.Uuid == undefined) { value.Uuid = (0, Uuid_1.createUuid)(); } if (value.AdaptableVersion == null) { value.AdaptableVersion = GET_CURRENT_VERSION(); } } }; return (0, cloneDeepWith_1.default)(initialState, customizer); } exports.addUuidsToInitialState = addUuidsToInitialState; function getAccessLevelForObject(adaptableObject, moduleAccessLevel) { // we always return the Module Access Level unless the following condition is met: // the object prpoerty has been set and set to true and the Module entitlement is full if (moduleAccessLevel == 'Full' && adaptableObject && adaptableObject.IsReadOnly && adaptableObject.IsReadOnly == true) { return 'ReadOnly'; } return moduleAccessLevel; } exports.getAccessLevelForObject = getAccessLevelForObject; function addAdaptableObjectPrimitives(adaptableObject) { if (!adaptableObject.Uuid) { adaptableObject.Uuid = (0, Uuid_1.createUuid)(); } adaptableObject.Source = 'User'; adaptableObject.AdaptableVersion = GET_CURRENT_VERSION(); return adaptableObject; } exports.addAdaptableObjectPrimitives = addAdaptableObjectPrimitives; function removeAdaptableObjectPrimitivesInlineDeep(target) { if (!target) { return target; } if (Array.isArray(target)) { target.forEach(removeAdaptableObjectPrimitivesInlineDeep); return target; } if (typeof target !== 'object') { return target; } delete target.Source; delete target.Uuid; delete target.AdaptableVersion; for (const key in target) { removeAdaptableObjectPrimitivesInlineDeep(target[key]); } return target; } exports.removeAdaptableObjectPrimitivesInlineDeep = removeAdaptableObjectPrimitivesInlineDeep; function removeAdaptableObjectPrimitivesInline(target) { if (!target) { return target; } if (Array.isArray(target)) { target.forEach(removeAdaptableObjectPrimitivesInline); return target; } if (typeof target !== 'object') { return target; } delete target.Source; delete target.Uuid; delete target.AdaptableVersion; return target; } exports.removeAdaptableObjectPrimitivesInline = removeAdaptableObjectPrimitivesInline; function removeAdaptableObjectPrimitives(adaptableObject) { const clonedObject = structuredClone(adaptableObject); const sanitiseObject = (object) => { for (const key in object) { if (key === 'Source' || key === 'Uuid' || key === 'AdaptableVersion') { delete object[key]; } else if (Array.isArray(object[key])) { object[key].forEach((item) => sanitiseObject(item)); } else if (typeof object[key] === 'object') { sanitiseObject(object[key]); } } }; sanitiseObject(clonedObject); return clonedObject; } exports.removeAdaptableObjectPrimitives = removeAdaptableObjectPrimitives; // pretty primitive type guard for AdaptableObject, but currently there is no better/safer way function isAdaptableObject(object) { return object != undefined && typeof object['Uuid'] === 'string'; } exports.isAdaptableObject = isAdaptableObject; exports.AdaptableHelper = { addUuidsToInitialState: addUuidsToInitialState, getAccessLevelForObject, addAdaptableObjectPrimitives, removeAdaptableObjectPrimitives, removeAdaptableObjectPrimitivesInline, isAdaptableObject, }; exports.default = exports.AdaptableHelper;