"use strict";

Liferay.Loader.define("@frontend-taglib-clay$clayui/link@3.56.0/lib/index", ['module', 'exports', 'require', 'frontend-taglib-clay$classnames', 'frontend-js-react-web$react', './Context'], function (module, exports, require) {
  var define = undefined;
  var global = window;
  {
    Object.defineProperty(exports, "__esModule", {
      value: true
    });
    Object.defineProperty(exports, "ClayLinkContext", {
      enumerable: true,
      get: function get() {
        return _Context.default;
      }
    });
    exports.default = void 0;

    var _classnames = _interopRequireDefault(require("frontend-taglib-clay$classnames"));

    var _react = _interopRequireDefault(require("frontend-js-react-web$react"));

    var _Context = _interopRequireDefault(require("./Context"));

    var _excluded = ["block", "borderless", "button", "children", "className", "displayType", "monospaced", "outline", "rel", "small", "target"];

    function _interopRequireDefault(obj) {
      return obj && obj.__esModule ? obj : { default: obj };
    }

    function _extends() {
      _extends = Object.assign || function (target) {
        for (var i = 1; i < arguments.length; i++) {
          var source = arguments[i];for (var key in source) {
            if (Object.prototype.hasOwnProperty.call(source, key)) {
              target[key] = source[key];
            }
          }
        }return target;
      };return _extends.apply(this, arguments);
    }

    function _defineProperty(obj, key, value) {
      if (key in obj) {
        Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true });
      } else {
        obj[key] = value;
      }return obj;
    }

    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;
    }

    var ClayLink = /*#__PURE__*/_react.default.forwardRef(function (_ref, ref) {
      var block = _ref.block,
          borderless = _ref.borderless,
          button = _ref.button,
          children = _ref.children,
          className = _ref.className,
          displayType = _ref.displayType,
          monospaced = _ref.monospaced,
          outline = _ref.outline,
          rel = _ref.rel,
          small = _ref.small,
          target = _ref.target,
          otherProps = _objectWithoutProperties(_ref, _excluded);

      var TagOrComponent = _react.default.useContext(_Context.default);

      var classes;

      if (button) {
        var _classes;

        button = button === true ? {} : button;
        classes = (_classes = {
          btn: !!button,
          'btn-block': button.block || block,
          'btn-monospaced': button.monospaced || monospaced,
          'btn-outline-borderless': borderless,
          'btn-sm': button.small || small
        }, _defineProperty(_classes, "btn-".concat(displayType), displayType && !outline && !borderless), _defineProperty(_classes, "btn-outline-".concat(displayType), displayType && (outline || borderless)), _classes);
      } else {
        var _classes2;

        classes = (_classes2 = {
          'link-monospaced': monospaced,
          'link-outline': outline,
          'link-outline-borderless': borderless
        }, _defineProperty(_classes2, "link-".concat(displayType), displayType && !outline), _defineProperty(_classes2, "link-outline-".concat(displayType), displayType && outline), _classes2);
      }

      if (target && !rel) {
        rel = 'noreferrer noopener';
      }

      return (/*#__PURE__*/_react.default.createElement(TagOrComponent, _extends({
          className: (0, _classnames.default)(className, classes),
          ref: ref,
          rel: rel,
          target: target
        }, otherProps), children)
      );
    });

    ClayLink.displayName = 'ClayLink';
    var _default = ClayLink;
    exports.default = _default;
  }
});
//# sourceMappingURL=index.js.map