Why Gemfury? Push, build, and install  RubyGems npm packages Python packages Maven artifacts PHP packages Go Modules Debian packages RPM packages NuGet packages

Repository URL to install this package:

Details    
@filerobot/common / lib / MetaData / MetaDataField.js
Size: Mime:
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;