@storybook/addon-ondevice-backgrounds
Version:
A react-native storybook addon to show different backgrounds for your preview
33 lines (32 loc) • 1.57 kB
JavaScript
;
var __importDefault = (this && this.__importDefault) || function (mod) {
return (mod && mod.__esModule) ? mod : { "default": mod };
};
Object.defineProperty(exports, "__esModule", { value: true });
exports.withBackgrounds = void 0;
const jsx_runtime_1 = require("react/jsx-runtime");
const preview_api_1 = require("storybook/internal/preview-api");
const manager_api_1 = require("storybook/internal/manager-api");
const constants_1 = __importDefault(require("./constants"));
const container_1 = __importDefault(require("./container"));
exports.withBackgrounds = (0, preview_api_1.makeDecorator)({
name: 'withBackgrounds',
parameterName: 'backgrounds',
skipIfNoParametersOrOptions: true,
wrapper: (getStory, context, { options, parameters }) => {
const data = (parameters || options || { values: [] });
const backgrounds = data.values;
let background = 'transparent';
if (backgrounds.length !== 0) {
manager_api_1.addons.getChannel().emit(constants_1.default.SET, backgrounds);
const defaultValue = data.default
? backgrounds.find((b) => b.name === data.default)
: undefined;
const defaultOrFirst = defaultValue ? defaultValue : backgrounds[0];
if (defaultOrFirst) {
background = defaultOrFirst.value;
}
}
return ((0, jsx_runtime_1.jsx)(container_1.default, { initialBackground: background, channel: manager_api_1.addons.getChannel(), children: getStory(context) }));
},
});