Repository URL to install this package:
|
Version:
3.12.16 ▾
|
var _excluded = ["filesMetaFields", "metadataValues", "setMetadataValues", "index", "checkUserPermissions", "isFocused", "generateTags", "generateDescription", "isLoading", "setIsFocused", "isShowGenerateBtn", "baseClassName", "values", "onChangeMetadataFilter", "field", "value", "error", "metaRegionalGroups", "iconPrimaryColor", "submitCount", "disabled", "i18n", "containerHeight", "metaRegionalFilters", "enableAIDescription", "isFilterOptions", "allTags", "isDescriptionLoading", "setIsDescriptionLoading", "isDescripeBtnHidden"];
var _this = this;
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); }
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 _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 _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 _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 _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; }
import { useState, useEffect, useMemo } from 'react';
import { FormHint } from '@scaleflex/ui/core';
import { FormControl } from '@filerobot/common';
import { PERMISSIONS } from '@filerobot/utils/lib/constants';
import { useExplorer, usePrevious } from '@filerobot/explorer/lib/hooks';
import { getMetaRegionalLanguagesGroupUuid } from '@filerobot/explorer/lib/components/metadata.adapter';
import isFolder from '@filerobot/utils/lib/isFolder';
import { MetaDataFieldTextType, MetaDataFieldNumericType, MetaDataFieldTextareaType, MetaDataFieldSelectType, MetaDataFieldTagsType, MetaDataFieldDateType, MetaDataFieldBooleanType } from './MetaDataFieldTypes';
// TODO: Check if we should move the place of the this component to FileCard or not.
// TODO: Refactor this component to fit the new v3 metadata and avoid un-necessary code.
import { jsx as _jsx } from "react/jsx-runtime";
import { jsxs as _jsxs } from "react/jsx-runtime";
var MetaDataField = function MetaDataField(_ref) {
var _regionalVariants$;
var filesMetaFields = _ref.filesMetaFields,
metadataValues = _ref.metadataValues,
setMetadataValues = _ref.setMetadataValues,
index = _ref.index,
_ref$checkUserPermiss = _ref.checkUserPermissions,
checkUserPermissions = _ref$checkUserPermiss === void 0 ? function () {} : _ref$checkUserPermiss,
isFocused = _ref.isFocused,
generateTags = _ref.generateTags,
generateDescription = _ref.generateDescription,
isLoading = _ref.isLoading,
setIsFocused = _ref.setIsFocused,
isShowGenerateBtn = _ref.isShowGenerateBtn,
baseClassName = _ref.baseClassName,
values = _ref.values,
onChangeMetadataFilter = _ref.onChangeMetadataFilter,
field = _ref.field,
value = _ref.value,
error = _ref.error,
metaRegionalGroups = _ref.metaRegionalGroups,
iconPrimaryColor = _ref.iconPrimaryColor,
submitCount = _ref.submitCount,
disabled = _ref.disabled,
i18n = _ref.i18n,
containerHeight = _ref.containerHeight,
metaRegionalFilters = _ref.metaRegionalFilters,
enableAIDescription = _ref.enableAIDescription,
isFilterOptions = _ref.isFilterOptions,
allTags = _ref.allTags,
isDescriptionLoading = _ref.isDescriptionLoading,
setIsDescriptionLoading = _ref.setIsDescriptionLoading,
isDescripeBtnHidden = _ref.isDescripeBtnHidden,
props = _objectWithoutProperties(_ref, _excluded);
var _useExplorer = useExplorer(),
_useExplorer$opts = _useExplorer.opts,
_useExplorer$opts2 = _useExplorer$opts === void 0 ? {} : _useExplorer$opts,
config = _useExplorer$opts2.config;
var prevProps = usePrevious({
field: field,
metaRegionalFilters: metaRegionalFilters,
metaRegionalGroups: metaRegionalGroups
});
var getFieldRegionalGroup = function getFieldRegionalGroup() {
return metaRegionalGroups === null || metaRegionalGroups === void 0 ? void 0 : metaRegionalGroups.find(function (group) {
return group.uuid === (field === null || field === void 0 ? void 0 : field.regional_variants_group_uuid);
});
};
var languagesRegVariantGroupUuid = useMemo(function () {
return getMetaRegionalLanguagesGroupUuid(metaRegionalGroups);
}, [metaRegionalGroups]);
var currentLanguage = useMemo(function () {
return (metaRegionalFilters === null || metaRegionalFilters === void 0 ? void 0 : metaRegionalFilters[languagesRegVariantGroupUuid]) || 'en';
}, [metaRegionalFilters, languagesRegVariantGroupUuid]);
var getFieldRegionalVariants = function getFieldRegionalVariants() {
var _getFieldRegionalGrou;
return (_getFieldRegionalGrou = getFieldRegionalGroup()) === null || _getFieldRegionalGrou === void 0 ? void 0 : _getFieldRegionalGrou.variants;
};
var _useState = useState(function () {
var _getFieldRegionalVari, _getFieldRegionalVari2;
return ((_getFieldRegionalVari = getFieldRegionalVariants()) === null || _getFieldRegionalVari === void 0 ? void 0 : (_getFieldRegionalVari2 = _getFieldRegionalVari[0]) === null || _getFieldRegionalVari2 === void 0 ? void 0 : _getFieldRegionalVari2.api_value) || null;
}),
_useState2 = _slicedToArray(_useState, 2),
activeRegionalKey = _useState2[0],
setActiveRegionalKey = _useState2[1];
useEffect(function () {
if ((prevProps === null || prevProps === void 0 ? void 0 : prevProps.field) !== props.field || (prevProps === null || prevProps === void 0 ? void 0 : prevProps.metaRegionalFilters) !== props.metaRegionalFilters || (prevProps === null || prevProps === void 0 ? void 0 : prevProps.metaRegionalGroups) !== props.metaRegionalGroups) {
initActiveRegionalKey();
}
}, [field, metaRegionalFilters, metaRegionalGroups]);
useEffect(function () {
initActiveRegionalKey();
}, [submitCount]);
var initActiveRegionalKey = function initActiveRegionalKey() {
var _Object$keys, _getFieldRegionalVari3, _getFieldRegionalVari4;
var firstErrorApiKey = _typeof(error) === 'object' ? (_Object$keys = Object.keys(error)) === null || _Object$keys === void 0 ? void 0 : _Object$keys[0] : null;
setActiveRegionalKey(firstErrorApiKey || (metaRegionalFilters === null || metaRegionalFilters === void 0 ? void 0 : metaRegionalFilters[field === null || field === void 0 ? void 0 : field.regional_variants_group_uuid]) || ((_getFieldRegionalVari3 = getFieldRegionalVariants()) === null || _getFieldRegionalVari3 === void 0 ? void 0 : (_getFieldRegionalVari4 = _getFieldRegionalVari3[0]) === null || _getFieldRegionalVari4 === void 0 ? void 0 : _getFieldRegionalVari4.api_value) || null);
};
useEffect(initActiveRegionalKey, []);
useEffect(initActiveRegionalKey, [field, metaRegionalFilters, metaRegionalGroups]);
var handleFieldChange = function handleFieldChange(regionalVariantFieldKey, newValue) {
props.onChange(newValue, field.key, regionalVariantFieldKey, field);
};
var getFieldByType = function getFieldByType() {
var _field$can_edit;
var regionalVariantKey = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : null;
var regionalVariantKeyValue = arguments.length > 1 ? arguments[1] : undefined;
var regionalVariantKeyError = arguments.length > 2 ? arguments[2] : undefined;
var item = props.item,
isEditing = props.isEditing,
renameItemFromContextMenu = props.renameItemFromContextMenu;
var type = field.type,
possibleValues = field.possible_values,
placeholder = field.placeholder,
key = field.key;
var hasEditPerms = checkUserPermissions([PERMISSIONS[isFolder(item) ? 'FOLDER_META' : 'FILE_META']]);
var canEdit = hasEditPerms === true && (regionalVariantKey && Array.isArray(field === null || field === void 0 ? void 0 : field.can_edit) && field.can_edit.indexOf(regionalVariantKey) > -1 || ((_field$can_edit = field === null || field === void 0 ? void 0 : field.can_edit) !== null && _field$can_edit !== void 0 ? _field$can_edit : true));
var getFieldValue = function getFieldValue() {
if (regionalVariantKey) return regionalVariantKeyValue;
if (value !== null && value !== void 0 && value[currentLanguage]) {
return value[currentLanguage];
}
return value || '';
};
var fieldProps = {
onChange: handleFieldChange.bind(_this, regionalVariantKey),
value: getFieldValue(),
required: field === null || field === void 0 ? void 0 : field.required,
focusOnMount: key === 'name' && isEditing && renameItemFromContextMenu,
placeholder: placeholder,
readOnly: !canEdit,
disabled: !canEdit || disabled,
error: !!(regionalVariantKey ? regionalVariantKeyError : error),
// saveOnEnter: props.saveOnEnter,
containerHeight: containerHeight,
i18n: i18n,
activeRegionalKey: activeRegionalKey,
fieldKey: key,
numberFormatLocale: config === null || config === void 0 ? void 0 : config.numberFormatLocale
};
switch (type) {
case 'text':
return /*#__PURE__*/_jsx(MetaDataFieldTextType, _objectSpread({}, fieldProps));
case 'numeric':
return /*#__PURE__*/_jsx(MetaDataFieldNumericType, _objectSpread({}, fieldProps));
case 'textarea':
return /*#__PURE__*/_jsx(MetaDataFieldTextareaType, _objectSpread(_objectSpread({}, fieldProps), {}, {
generateDescription: generateDescription,
isDescriptionLoading: isDescriptionLoading,
setIsDescriptionLoading: setIsDescriptionLoading,
isDescripeBtnHidden: isDescripeBtnHidden,
enableAIDescription: enableAIDescription
}));
case 'select-one':
return /*#__PURE__*/_jsx(MetaDataFieldSelectType, _objectSpread(_objectSpread({}, fieldProps), {}, {
i18n: i18n,
options: possibleValues,
isFilterOptions: isFilterOptions
}));
case 'multi-select':
return /*#__PURE__*/_jsx(MetaDataFieldSelectType, _objectSpread(_objectSpread({}, fieldProps), {}, {
i18n: i18n,
multiple: true,
options: possibleValues,
isFilterOptions: isFilterOptions
}));
case 'tags':
return /*#__PURE__*/_jsx(MetaDataFieldTagsType, _objectSpread(_objectSpread({}, fieldProps), {}, {
item: item,
isFocused: isFocused,
isLoading: isLoading,
setIsFocused: setIsFocused,
isShowGenerateBtn: isShowGenerateBtn && checkUserPermissions([PERMISSIONS.FILE_PROCESS_AUTOTAGGING]),
generateTags: generateTags,
config: config,
allTags: allTags
}));
case 'date':
return /*#__PURE__*/_jsx(MetaDataFieldDateType, _objectSpread({}, fieldProps));
case 'boolean':
return /*#__PURE__*/_jsx(MetaDataFieldBooleanType, _objectSpread({}, fieldProps));
default:
return /*#__PURE__*/_jsx(FormHint, {
children: "Field type: \"".concat(type, "\" is not supported!")
});
}
};
var renderField = function renderField(regionalVariantKey, regionalVariantKeyValue, regionalVariantKeyError) {
var metaRegionalHint = field.metaRegionalHint,
key = field.key;
var currentError = regionalVariantKey ? regionalVariantKeyError : error;
return /*#__PURE__*/_jsxs(FormControl, {
id: "meta-field-".concat(key),
error: !!currentError,
withHelperText: !!metaRegionalHint,
style: {
width: '100%'
},
children: [getFieldByType(regionalVariantKey, regionalVariantKeyValue, regionalVariantKeyError), (metaRegionalHint || currentError && typeof currentError === 'string') && !isFilterOptions && /*#__PURE__*/_jsx(FormHint, {
style: {
marginTop: 4
},
children: currentError || metaRegionalHint
})]
});
};
var regionalVariants = getFieldRegionalVariants();
if (!field.key) {
return /*#__PURE__*/_jsx(FormHint, {
children: i18n('metadataNoFieldKey')
});
}
if (!regionalVariants || !Array.isArray(regionalVariants)) {
return renderField();
}
var anActiveRegionalKey = activeRegionalKey || (regionalVariants === null || regionalVariants === void 0 ? void 0 : (_regionalVariants$ = regionalVariants[0]) === null || _regionalVariants$ === void 0 ? void 0 : _regionalVariants$.api_value);
return renderField(anActiveRegionalKey, (value || {})[anActiveRegionalKey], (error || {})[anActiveRegionalKey]);
};
export default MetaDataField;