"use strict";

Object.defineProperty(exports, "__esModule", {
  value: true
});
exports.Skinnable = exports["default"] = void 0;

var _hoc = _interopRequireDefault(require("@enact/core/hoc"));

var _Skinnable = _interopRequireDefault(require("@enact/ui/Skinnable"));

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

/**
 * Exports the {@link agate/Skinnable.Skinnable} Higher-order Component (HOC).
 *
 * @module agate/Skinnable
 * @exports Skinnable
 * @public
 */
var defaultConfig = {
  skins: {
    carbon: 'carbon',
    cobalt: 'cobalt',
    copper: 'copper',
    electro: 'electro',
    gallium: 'gallium',
    silicon: 'silicon',
    titanium: 'titanium'
  },
  allowedVariants: ['night', 'highContrast'],
  defaultVariants: null
};
/**
 * This Higher-order Component is based on [ui/Skinnable]{@link ui/Skinnable.Skinnable} and comes
 * pre-configured for Agate's supported skins: 'carbon', 'cobalt', 'copper', 'electro', 'gallium',
 * 'silicon', and 'titanium'. It is used to apply the relevant skinning classes to each component
 * and has been used to pre-select specific skins for some components.
 *
 * @class Skinnable
 * @hoc
 * @memberof agate/Skinnable
 * @public
 */

var Skinnable = (0, _hoc["default"])(defaultConfig, _Skinnable["default"]);
/**
 * Select a skin by name by specifying this property. This may be changed at runtime. All components
 * already use their defaults, but a skin may be changed via this prop or by using
 * {@link agate/Skinnable} directly and a config object.
 *
 * Example:
 * ```
 * <Button skin="gallium" />
 * ```
 *
 * @name skin
 * @type {String}
 * @memberof agate/Skinnable.Skinnable
 * @instance
 * @public
 */

exports.Skinnable = Skinnable;
var _default = Skinnable;
exports["default"] = _default;