storybook-chrome-screenshot
Version:
A Storybook addon, Save the screenshot image of your stories! via puppeteer.
151 lines • 5.58 kB
JavaScript
;
var __importStar = (this && this.__importStar) || function (mod) {
if (mod && mod.__esModule) return mod;
var result = {};
if (mod != null) for (var k in mod) if (Object.hasOwnProperty.call(mod, k)) result[k] = mod[k];
result["default"] = mod;
return result;
};
var __importDefault = (this && this.__importDefault) || function (mod) {
return (mod && mod.__esModule) ? mod : { "default": mod };
};
Object.defineProperty(exports, "__esModule", { value: true });
var _ = __importStar(require("lodash"));
var sanitize_filename_1 = __importDefault(require("sanitize-filename"));
var DEFAULT_FILE_PATTERN = '{kind}-{story}-{knobs}_{ns}-{vp}';
// tslint:disable-next-line: no-string-based-set-timeout
exports.sleep = function (ms) { return new Promise(function (resolve) { return setTimeout(resolve, ms); }); };
exports.getWaitForFn = function (waitFor) {
// tslint:disable-next-line: strict-boolean-expressions
if (waitFor && typeof window[waitFor] === 'function') {
return window[waitFor];
}
return function () { return Promise.resolve(); };
};
exports.nextIdle = function () {
return new Promise(function (resolve) {
var ricFn = window.requestIdleCallback;
// tslint:disable-next-line: strict-boolean-expressions
if (ricFn) {
ricFn(resolve, { timeout: 10000 });
}
resolve();
});
};
exports.parser = {
identity: function (v) { return v; },
number: function (v) { return (v != null ? parseInt(v, 10) : 0); },
list: function (v) { return (v != null ? v.split(',').map(function (o) { return o.trim(); }) : null); },
regexp: function (v) { return (v != null ? new RegExp(v) : null); }
};
exports.filenamify = function (filename) {
return sanitize_filename_1.default(filename.trim())
.replace(/\s{2,}/g, ' ')
.replace(/\s/g, '-');
};
exports.permutationKnobs = function (knobs) {
var keys = Object.keys(knobs).sort();
if (keys.length === 0) {
return [];
}
var total = keys.reduce(function (previous, current) { return previous * knobs[current].length; }, 1);
var result = [];
var q = 0;
var r = 0;
for (var i = 0; i < total; i += 1) {
result[i] = {};
q = i;
for (var _i = 0, keys_1 = keys; _i < keys_1.length; _i++) {
var key = keys_1[_i];
r = q % knobs[key].length;
q = Math.floor(q / knobs[key].length);
result[i][key] = knobs[key][r];
}
}
return result;
};
exports.knobsQueryObject = function (knobs) {
var queryObject = {};
for (var _i = 0, _a = Object.entries(knobs); _i < _a.length; _i++) {
var _b = _a[_i], name_1 = _b[0], knob = _b[1];
queryObject["knob-" + name_1] = knob;
}
return queryObject;
};
exports.viewport2string = function (viewport) {
return [
viewport.width + "x" + viewport.height,
"" + (viewport.isMobile ? '-mobile' : ''),
"" + (viewport.hasTouch ? '-touch' : ''),
"" + (viewport.isLandscape ? '-landscape' : ''),
"" + (viewport.deviceScaleFactor > 1 ? "@" + viewport.deviceScaleFactor + "x" : '')
].join('');
};
exports.knobs2string = function (knobs) {
return Object.keys(knobs)
.sort()
.map(function (key) { return key + "-" + knobs[key]; })
.join('_');
};
exports.story2filename = function (params) {
var ns = params.namespace != null ? "" + params.namespace : '_';
var vp = params.viewport != null ? "" + exports.viewport2string(params.viewport) : '_';
var knobs = params.knobs != null ? "" + exports.knobs2string(params.knobs) : '_';
var replacements = {
kind: params.kind,
story: params.story,
knobs: knobs,
ns: ns,
vp: vp
};
var filename = (params.filePattern != null ? params.filePattern : DEFAULT_FILE_PATTERN)
.replace(/\{(\w+)\}/g, function (_, key) { return exports.filenamify(replacements[key]); })
.replace(/-_/g, '')
.replace(/__/g, '')
.replace(/\/_/g, '');
return filename + ".png";
};
exports.pascalize = function (v) { return "" + v.charAt(0).toUpperCase() + _.camelCase(v.slice(1)); };
var Time = {
MINUTES: 1000 * 60,
SECONDS: 1000
};
exports.humanizeDuration = function (timestamp) {
var arr = [];
var ts = timestamp;
if (timestamp > Time.MINUTES) {
var min = Math.floor(ts / Time.MINUTES);
ts = ts - min * Time.MINUTES;
arr.push(min + "min");
}
var sec = (ts / Time.SECONDS)
.toString()
.split('.')
.map(function (s) { return s.slice(0, 2); })
.join('.');
arr.push(sec + "s");
return arr.join(' ');
};
exports.execParalell = function (tasks, p) {
if (p === void 0) { p = 1; }
var copied = tasks.slice();
var results = [];
return Promise.all(_.range(p).map(function (i) {
return new Promise(function (res, rej) {
function next() {
var t = copied.shift();
// tslint:disable: no-void-expression
return t == null
? Promise.resolve(res())
: t(i)
.then(function (r) { return results.push(r); })
.then(next)
.catch(rej);
// tslint:enable
}
return next();
});
})).then(function () { return results; });
};
exports.getStorybookEnv = function () { return window.STORYBOOK_ENV; };
//# sourceMappingURL=utils.js.map