Repository URL to install this package:
|
Version:
3.12.20 ▾
|
var _excluded = ["regional_variants", "possible_values", "permissions"];
function _typeof(o) { "@babel/helpers - typeof"; return _typeof = "function" == typeof Symbol && "symbol" == typeof Symbol.iterator ? function (o) { return typeof o; } : function (o) { return o && "function" == typeof Symbol && o.constructor === Symbol && o !== Symbol.prototype ? "symbol" : typeof o; }, _typeof(o); }
function _slicedToArray(arr, i) { return _arrayWithHoles(arr) || _iterableToArrayLimit(arr, i) || _unsupportedIterableToArray(arr, i) || _nonIterableRest(); }
function _nonIterableRest() { throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); }
function _iterableToArrayLimit(r, l) { var t = null == r ? null : "undefined" != typeof Symbol && r[Symbol.iterator] || r["@@iterator"]; if (null != t) { var e, n, i, u, a = [], f = !0, o = !1; try { if (i = (t = t.call(r)).next, 0 === l) { if (Object(t) !== t) return; f = !1; } else for (; !(f = (e = i.call(t)).done) && (a.push(e.value), a.length !== l); f = !0); } catch (r) { o = !0, n = r; } finally { try { if (!f && null != t["return"] && (u = t["return"](), Object(u) !== u)) return; } finally { if (o) throw n; } } return a; } }
function _arrayWithHoles(arr) { if (Array.isArray(arr)) return arr; }
function _toConsumableArray(arr) { return _arrayWithoutHoles(arr) || _iterableToArray(arr) || _unsupportedIterableToArray(arr) || _nonIterableSpread(); }
function _nonIterableSpread() { throw new TypeError("Invalid attempt to spread non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); }
function _unsupportedIterableToArray(o, minLen) { if (!o) return; if (typeof o === "string") return _arrayLikeToArray(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === "Object" && o.constructor) n = o.constructor.name; if (n === "Map" || n === "Set") return Array.from(o); if (n === "Arguments" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); }
function _iterableToArray(iter) { if (typeof Symbol !== "undefined" && iter[Symbol.iterator] != null || iter["@@iterator"] != null) return Array.from(iter); }
function _arrayWithoutHoles(arr) { if (Array.isArray(arr)) return _arrayLikeToArray(arr); }
function _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) arr2[i] = arr[i]; return arr2; }
function _objectWithoutProperties(source, excluded) { if (source == null) return {}; var target = _objectWithoutPropertiesLoose(source, excluded); var key, i; if (Object.getOwnPropertySymbols) { var sourceSymbolKeys = Object.getOwnPropertySymbols(source); for (i = 0; i < sourceSymbolKeys.length; i++) { key = sourceSymbolKeys[i]; if (excluded.indexOf(key) >= 0) continue; if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue; target[key] = source[key]; } } return target; }
function _objectWithoutPropertiesLoose(source, excluded) { if (source == null) return {}; var target = {}; var sourceKeys = Object.keys(source); var key, i; for (i = 0; i < sourceKeys.length; i++) { key = sourceKeys[i]; if (excluded.indexOf(key) >= 0) continue; target[key] = source[key]; } return target; }
function ownKeys(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e); r && (o = o.filter(function (r) { return Object.getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; }
function _objectSpread(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys(Object(t), !0).forEach(function (r) { _defineProperty(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; }
function _defineProperty(obj, key, value) { key = _toPropertyKey(key); if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }
function _toPropertyKey(arg) { var key = _toPrimitive(arg, "string"); return _typeof(key) === "symbol" ? key : String(key); }
function _toPrimitive(input, hint) { if (_typeof(input) !== "object" || input === null) return input; var prim = input[Symbol.toPrimitive]; if (prim !== undefined) { var res = prim.call(input, hint || "default"); if (_typeof(res) !== "object") return res; throw new TypeError("@@toPrimitive must return a primitive value."); } return (hint === "string" ? String : Number)(input); }
import cuid from 'cuid';
/**
* Connected with ticket -- http://sk.fl3x.cc/?i=8KJIbM0d51zOLt
* We need to adapt metadata to new format which support Regional variants groups
*/
var generateFieldPossibleValue = function generateFieldPossibleValue(posValue) {
return {
internal_unique_value: (posValue === null || posValue === void 0 ? void 0 : posValue.internal_unique_value) || "@itm_v1_".concat(cuid().slice(0, 10).replaceAll('-', '_'), "@"),
api_value: (posValue === null || posValue === void 0 ? void 0 : posValue.api_value) || (posValue === null || posValue === void 0 ? void 0 : posValue.label) || (posValue === null || posValue === void 0 ? void 0 : posValue.key) || '',
// "key" and "title" are old format props, added just for support
label: (posValue === null || posValue === void 0 ? void 0 : posValue.label) || (posValue === null || posValue === void 0 ? void 0 : posValue.title) || ''
};
};
var generateFieldPermission = function generateFieldPermission(permission) {
return {
permission_uuid: (permission === null || permission === void 0 ? void 0 : permission.uuid) || cuid(),
scope: (permission === null || permission === void 0 ? void 0 : permission.scope) || PERMISSION_SCOPE.COMPANY,
uuids: ((permission === null || permission === void 0 ? void 0 : permission.uuids) || []).filter(function (uuidItem) {
return uuidItem && uuidItem !== ' ';
}),
can_view: (permission === null || permission === void 0 ? void 0 : permission.can_view) || null,
can_edit: (permission === null || permission === void 0 ? void 0 : permission.can_edit) || null // Edit + View
};
};
var generateField = function generateField(field) {
return _objectSpread({
uuid: cuid(),
// ckey: '',
key: '',
type: 'text',
title: '',
hint: '',
icon: '',
// inject: 'something inside fields',
can_edit: true,
required: false,
permissions: [],
placeholder: '',
possible_values: [],
permission_delivery: 'MD_HIDE',
regional_variants_group_uuid: null
}, field);
};
var PERMISSION_SCOPE = {
COMPANY: 'company',
TEAM: 'team',
USER: 'user'
};
var REGIONAL_VARIANT_TYPE = {
LANGUAGES: 'FTYPE_LANGUAGES',
CUSTOM: 'FTYPE_CUSTOM',
CURRENCIES: 'FTYPE_CURRENCIES'
};
var ROOT_FIELDS_GROUP = {
uuid: cuid(),
name: 'Root fields',
isRoot: true,
// Not editable/deletable. Fields has some restrictions.
fields: [generateField({
key: 'title',
title: 'Title',
regional_variants_group_uuid: null
}), generateField({
key: 'description',
title: 'Description',
regional_variants_group_uuid: null
})]
};
var adaptMetadata = function adaptMetadata(metadata) {
var _metadata$store;
if (!metadata) {
return metadata;
}
// New format, adaption is not necessary
if (metadata !== null && metadata !== void 0 && (_metadata$store = metadata.store) !== null && _metadata$store !== void 0 && _metadata$store.regional_variants_groups) {
var _metadata$store2, _metadata$store3;
return Array.isArray(metadata === null || metadata === void 0 ? void 0 : (_metadata$store2 = metadata.store) === null || _metadata$store2 === void 0 ? void 0 : _metadata$store2.regional_variants_groups) ? metadata : _objectSpread(_objectSpread({}, metadata), {}, {
store: _objectSpread(_objectSpread({
force_filling_metadata_on_upload: false
}, (metadata === null || metadata === void 0 ? void 0 : metadata.store) || {}), {}, {
regional_variants_groups: regionalGroupsToArray(metadata === null || metadata === void 0 ? void 0 : (_metadata$store3 = metadata.store) === null || _metadata$store3 === void 0 ? void 0 : _metadata$store3.regional_variants_groups)
})
});
}
var adaptedMetadata = _objectSpread(_objectSpread({}, metadata), {}, {
model: [],
store: _objectSpread(_objectSpread({
force_filling_metadata_on_upload: false
}, (metadata === null || metadata === void 0 ? void 0 : metadata.store) || {}), {}, {
regional_variants_groups: []
})
});
var oldMetaModel = metadata === null || metadata === void 0 ? void 0 : metadata.model;
/**
* Generate regionalVariantsGroups and update model fields regional_variants params, to use group uuid instead of string[]
*/
// Regional variants group hash buffer
var rvGroupHashBuffer = {};
adaptedMetadata.model = (oldMetaModel || []).map(function (item) {
return _objectSpread(_objectSpread({}, item), {}, {
groups: ((item === null || item === void 0 ? void 0 : item.groups) || []).map(function (group) {
return _objectSpread(_objectSpread({}, group), {}, {
uuid: (group === null || group === void 0 ? void 0 : group.uuid) || cuid(),
// Add uuid when it's not exist
fields: ((group === null || group === void 0 ? void 0 : group.fields) || []).map(function (field) {
var fieldRegionalVariants = field.regional_variants,
possibleValues = field.possible_values,
permissions = field.permissions,
fieldRest = _objectWithoutProperties(field, _excluded);
/**
* For select types we can't use regional variants. (Disscussed with Julian)
* Bad file metadata:
* which_colors: { default: [@item1, @item2] }
* Good file metadata:
* which_colors: [@item1, @item2]
*/
var needRemoveRegionalVariants = ['select-one', 'multi-select'].indexOf(fieldRest === null || fieldRest === void 0 ? void 0 : fieldRest.type) > -1;
var adaptedField = _objectSpread(_objectSpread({}, fieldRest), {}, {
possible_values: (possibleValues || []).map(function (val) {
return generateFieldPossibleValue(val);
}),
permissions: (Array.isArray(permissions) ? permissions : []).map(function (val) {
return generateFieldPermission(val);
}),
uuid: (field === null || field === void 0 ? void 0 : field.uuid) || cuid() // Add uuid when it's not exist
});
if (!needRemoveRegionalVariants && fieldRegionalVariants !== null && fieldRegionalVariants !== void 0 && fieldRegionalVariants.length) {
var rvGroupPropName = (fieldRegionalVariants || []).sort().join('_');
if (!rvGroupHashBuffer[rvGroupPropName]) {
// Add group
rvGroupHashBuffer[rvGroupPropName] = generateNewRegionalVariantGroup(rvGroupHashBuffer, fieldRegionalVariants);
}
adaptedField.permissions = (adaptedField.permissions || []).map(function (permission) {
return _objectSpread(_objectSpread({}, permission), {}, {
can_edit: (permission.can_edit || []).map(function (label) {
var _rvGroupHashBuffer$rv;
var variant = (_rvGroupHashBuffer$rv = rvGroupHashBuffer[rvGroupPropName].variants) === null || _rvGroupHashBuffer$rv === void 0 ? void 0 : _rvGroupHashBuffer$rv.find(function (v) {
return (v === null || v === void 0 ? void 0 : v.label) === label;
});
return (variant === null || variant === void 0 ? void 0 : variant.internal_unique_value) || label; // TODO Vitaly: figure out what use here: internal_unique_value or api_value
}),
can_view: (permission.can_view || []).map(function (label) {
var _rvGroupHashBuffer$rv2;
var variant = (_rvGroupHashBuffer$rv2 = rvGroupHashBuffer[rvGroupPropName].variants) === null || _rvGroupHashBuffer$rv2 === void 0 ? void 0 : _rvGroupHashBuffer$rv2.find(function (v) {
return (v === null || v === void 0 ? void 0 : v.label) === label;
});
return (variant === null || variant === void 0 ? void 0 : variant.internal_unique_value) || label; // TODO Vitaly: figure out what use here: internal_unique_value or api_value
})
});
});
adaptedField.regional_variants_group_uuid = rvGroupHashBuffer[rvGroupPropName].uuid;
}
return adaptedField;
})
});
})
});
});
var rvGroupsArray = Object.values(rvGroupHashBuffer);
// It's required to have root (permanent) LANGUAGES rv group! We need to use it in "Root fields".
// No root language group
if (!rvGroupsArray.some(function (_ref) {
var isRoot = _ref.isRoot,
type = _ref.type;
return isRoot === true && type === REGIONAL_VARIANT_TYPE.LANGUAGES;
})) {
var firstLanguageRvGroupIndex = rvGroupsArray === null || rvGroupsArray === void 0 ? void 0 : rvGroupsArray.find(function (_ref2) {
var type = _ref2.type;
return type === REGIONAL_VARIANT_TYPE.LANGUAGES;
});
if (firstLanguageRvGroupIndex > -1) {
// group with languages type exists, mark it as "root"
rvGroupsArray[rvGroupsArray] = _objectSpread(_objectSpread({}, rvGroupsArray[rvGroupsArray]), {}, {
isRoot: true
});
} else {
// Add languages root rv group because it's not exist
rvGroupsArray.unshift(generateNewRegionalVariantGroup(rvGroupHashBuffer, ['en'], true));
}
}
adaptedMetadata.store.regional_variants_groups = rvGroupsArray;
/**
* Add default "Root fields" group.
* We wait what regional_variants_groups list is generated, to find language regional group
*/
adaptedMetadata.model = adaptedMetadata.model.map(function (item) {
var _ref3;
if (item.applies_to !== 'FILES') {
// For now need to add Root fields group only for files
return item;
}
if ((_ref3 = item.groups || []) !== null && _ref3 !== void 0 && _ref3.find(function (group) {
return group.isRoot;
})) {
// Do nothing if we already have Root fields group
return item;
}
return _objectSpread(_objectSpread({}, item), {}, {
groups: [_objectSpread(_objectSpread({}, ROOT_FIELDS_GROUP), {}, {
fields: ROOT_FIELDS_GROUP.fields.map(function (field) {
var _adaptedMetadata$stor;
var rvLanguageRootGroup = (_adaptedMetadata$stor = adaptedMetadata.store.regional_variants_groups) === null || _adaptedMetadata$stor === void 0 ? void 0 : _adaptedMetadata$stor.find(function (rvGroup) {
return rvGroup.type === REGIONAL_VARIANT_TYPE.LANGUAGES && rvGroup.isRoot;
});
if (!rvLanguageRootGroup) {
return field;
}
return rvLanguageRootGroup ? _objectSpread(_objectSpread({}, field), {}, {
regional_variants_group_uuid: rvLanguageRootGroup.uuid
}) : field;
})
})].concat(_toConsumableArray(item.groups || []))
});
});
return adaptedMetadata;
};
/**
* @param {object} groupsObj
* @param {string[]} variants
* @param {boolean} [isRoot=false] - Flag to mark group as root. TRUE is mean that this group is not deletable. Added for meta "Root fields" group
*/
var generateNewRegionalVariantGroup = function generateNewRegionalVariantGroup(groupsObj, variants) {
var _adaptedVariants;
var isRoot = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : false;
var groupsReservedLabels = Object.values(groupsObj).map(function (group) {
return group.label;
});
var label = 'Regional group';
var labelIndex = 1;
var icon = '';
var type = REGIONAL_VARIANT_TYPE.CUSTOM;
var generateLabel = function generateLabel() {
return "".concat(label).concat(labelIndex > 1 ? " ".concat(labelIndex) : '');
};
if (variants.length === 1 && variants[0] === 'default') {
label = 'Default';
} else if (variants !== null && variants !== void 0 && variants.some(function (variant) {
return new RegExp('^(eur|usd)$', 'i').test(variant);
})) {
label = 'Currency';
type = REGIONAL_VARIANT_TYPE.CURRENCIES;
icon = 'https://www.openpix.net/v1/icon.svg?id=112949';
} else if (variants !== null && variants !== void 0 && variants.some(function (variant) {
return new RegExp('^(de|en|fr|bg)$', 'i').test(variant);
})) {
label = 'Language';
type = REGIONAL_VARIANT_TYPE.LANGUAGES;
icon = 'https://www.openpix.net/v1/icon.svg?id=1631767';
}
// Check is name is already used and add suffix with index
while (groupsReservedLabels.indexOf(generateLabel()) > -1) {
labelIndex += 1;
}
var bufferValSet = new Set((variants || []).filter(function (variant) {
return variant === null || variant === void 0 ? void 0 : variant.internal_unique_value;
}).map(function (variant) {
return variant === null || variant === void 0 ? void 0 : variant.internal_unique_value;
}));
var adaptedVariants = (variants || []).map(function (variantLabel) {
var apiValue = generateSlug(variantLabel);
return {
internal_unique_value: generateUniqValue(bufferValSet, apiValue),
api_value: apiValue,
label: variantLabel
};
});
// "default" must be first in list, if exists
var defaultIndex = (_adaptedVariants = adaptedVariants) === null || _adaptedVariants === void 0 ? void 0 : _adaptedVariants.findIndex(function (variant) {
return variant.label === 'default';
});
if (defaultIndex > -1) {
var _adaptedVariants$spli = adaptedVariants.splice(defaultIndex, 1),
_adaptedVariants$spli2 = _slicedToArray(_adaptedVariants$spli, 1),
defaultVariant = _adaptedVariants$spli2[0];
adaptedVariants = [defaultVariant].concat(_toConsumableArray(adaptedVariants));
}
return {
uuid: cuid(),
icon: icon,
type: type,
label: generateLabel(),
variants: adaptedVariants,
isRoot: isRoot
};
};
var generateSlug = function generateSlug(string) {
return (string || '').toLowerCase().replace(/\s/g, '_');
};
var generateUniqValue = function generateUniqValue(bufferValSet, string) {
var length = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : 3;
var num = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : 0;
var value = "~".concat((string || '').substr(0, length).toUpperCase()).concat(num > 0 ? num : '');
if (bufferValSet.has(value)) {
return generateUniqValue(bufferValSet, string, length, num + 1);
}
bufferValSet.add(value);
return value;
};
var getMetaRegionalLanguagesGroupUuid = function getMetaRegionalLanguagesGroupUuid(metaRegionalGroups) {
var _ref4, _ref4$find;
return (_ref4 = metaRegionalGroups || []) === null || _ref4 === void 0 ? void 0 : (_ref4$find = _ref4.find(function (group) {
return (group === null || group === void 0 ? void 0 : group.type) === REGIONAL_VARIANT_TYPE.LANGUAGES;
})) === null || _ref4$find === void 0 ? void 0 : _ref4$find.uuid;
};
var getMetaRegionalGroupsLanguages = function getMetaRegionalGroupsLanguages(metaRegionalGroups) {
var _ref5, _ref5$find;
return ((_ref5 = metaRegionalGroups || []) === null || _ref5 === void 0 ? void 0 : (_ref5$find = _ref5.find(function (group) {
return (group === null || group === void 0 ? void 0 : group.type) === REGIONAL_VARIANT_TYPE.LANGUAGES;
})) === null || _ref5$find === void 0 ? void 0 : _ref5$find.variants) || [];
};
var getMetaRegionalGroupsLanguagesApiValues = function getMetaRegionalGroupsLanguagesApiValues(metaRegionalGroups) {
return getMetaRegionalGroupsLanguages(metaRegionalGroups).map(function (variant) {
return variant === null || variant === void 0 ? void 0 : variant.api_value;
});
};
var isMetaRegionalLanguagesGroupExists = function isMetaRegionalLanguagesGroupExists(metaRegionalGroups) {
return Boolean(getMetaRegionalLanguagesGroupUuid(metaRegionalGroups));
};
// Fn to cover BE issue when returned stringified array
var regionalGroupsToArray = function regionalGroupsToArray(metaRegionalGroups) {
if (Array.isArray(metaRegionalGroups)) {
return metaRegionalGroups;
}
if (typeof metaRegionalGroups === 'string' && metaRegionalGroups !== '[]') {
try {
var parsedGroups = JSON.parse(metaRegionalGroups);
if (Array.isArray(parsedGroups)) {
return parsedGroups;
}
} catch (error) {}
}
return [];
};
export { adaptMetadata, getMetaRegionalLanguagesGroupUuid, getMetaRegionalGroupsLanguages, getMetaRegionalGroupsLanguagesApiValues, isMetaRegionalLanguagesGroupExists, regionalGroupsToArray, REGIONAL_VARIANT_TYPE };