UNPKG

storybook-addon-variants

Version:
52 lines (40 loc) 2.81 kB
var _templateObject; function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (enumerableOnly) { symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; }); } keys.push.apply(keys, symbols); } return keys; } function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; if (i % 2) { ownKeys(Object(source), true).forEach(function (key) { _defineProperty(target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } } return target; } 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 _taggedTemplateLiteral(strings, raw) { if (!raw) { raw = strings.slice(0); } return Object.freeze(Object.defineProperties(strings, { raw: { value: Object.freeze(raw) } })); } import React, { useMemo } from "react"; import { styled } from "@storybook/theming"; import { getCombinations } from "./getCombinations"; var Grid = styled.ul(_templateObject || (_templateObject = _taggedTemplateLiteral(["\n margin: 0;\n padding: 0;\n list-style: none;\n display: flex;\n flex-wrap: wrap;\n gap: 30px;\n align-items: center;\n"]))); function CombinationGrid(_ref) { var StoryFn = _ref.StoryFn, context = _ref.context; var combinations = useMemo(function () { return getCombinations(context.argTypes); }, [context.argTypes]); if (combinations.length === 0) { return StoryFn(); } return /*#__PURE__*/React.createElement(Grid, null, combinations.map(function (combination, index) { return /*#__PURE__*/React.createElement("li", { key: index, title: JSON.stringify(combination, null, 2) }, StoryFn({ args: _objectSpread(_objectSpread({}, context.args), combination) })); })); } export var withVariants = function withVariants(StoryFn, context) { var _parameters$variants; var globals = context.globals, parameters = context.parameters; var shouldShowVariants = globals.variantsAddon === true || ((_parameters$variants = parameters.variants) === null || _parameters$variants === void 0 ? void 0 : _parameters$variants.enable) === true; if (shouldShowVariants) { return /*#__PURE__*/React.createElement(CombinationGrid, { StoryFn: StoryFn, context: context }); } return StoryFn(); };