2017-07-30 20:07:11 +03:00

33 lines
1.0 KiB
JavaScript

import addons from '@storybook/addons';
import { EVENT_ID } from '../shared';
// init function will be executed once when the storybook loads for the
// first time. This is a good place to add global listeners on channel.
export function init() {
// NOTE nothing to do here
}
function regExpStringify(exp) {
if (!exp) return null;
if (Object.prototype.toString.call(exp) === '[object String]') return exp;
if (Object.prototype.toString.call(exp) !== '[object RegExp]') return null;
return exp.source;
}
// setOptions function will send Storybook UI options when the channel is
// ready. If called before, options will be cached until it can be sent.
export function setOptions(newOptions) {
const channel = addons.getChannel();
if (!channel) {
throw new Error(
'Failed to find addon channel. This may be due to https://github.com/storybooks/storybook/issues/1192.'
);
}
const options = {
...newOptions,
hierarchySeparator: regExpStringify(newOptions.hierarchySeparator),
};
channel.emit(EVENT_ID, { options });
}