define('@cardstack/tools/helpers/cs-field-editor-for', ['exports', '@cardstack/rendering/helpers/cs-field-type', '@cardstack/rendering/-private/meta-for-field'], function (exports, _csFieldType, _metaForField) {
  'use strict';

  Object.defineProperty(exports, "__esModule", {
    value: true
  });
  exports.csFieldEditorFor = csFieldEditorFor;

  var _slicedToArray = function () {
    function sliceIterator(arr, i) {
      var _arr = [];
      var _n = true;
      var _d = false;
      var _e = undefined;

      try {
        for (var _i = arr[Symbol.iterator](), _s; !(_n = (_s = _i.next()).done); _n = true) {
          _arr.push(_s.value);

          if (i && _arr.length === i) break;
        }
      } catch (err) {
        _d = true;
        _e = err;
      } finally {
        try {
          if (!_n && _i["return"]) _i["return"]();
        } finally {
          if (_d) throw _e;
        }
      }

      return _arr;
    }

    return function (arr, i) {
      if (Array.isArray(arr)) {
        return arr;
      } else if (Symbol.iterator in Object(arr)) {
        return sliceIterator(arr, i);
      } else {
        throw new TypeError("Invalid attempt to destructure non-iterable instance");
      }
    };
  }();

  function csFieldEditorFor(_ref, _ref2) {
    var _ref3 = _slicedToArray(_ref, 2),
        content = _ref3[0],
        fieldName = _ref3[1];

    var variant = _ref2.variant;

    var type = (0, _csFieldType.fieldType)(content, fieldName);
    var options = fieldOptions(content, fieldName);

    if (options.editorComponent && !variant) {
      return options.editorComponent;
    } else if (options.inlineEditorComponent && variant == 'inline') {
      return options.inlineEditorComponent;
    }

    if (!type) {
      return;
    }

    var prefix = '';
    if (variant === 'inline') {
      prefix = 'inline-';
    }
    return prefix + 'field-editors/' + type + '-editor';
  }

  exports.default = Ember.Helper.helper(csFieldEditorFor);


  function fieldOptions(content, fieldName) {
    var meta = (0, _metaForField.default)(content, fieldName);
    return meta && meta.options ? meta.options : {};
  }
});