preview.js 3.13 KB
"use strict";

require("core-js/modules/es6.object.define-property");

Object.defineProperty(exports, "__esModule", {
  value: true
});
exports.withLinks = exports.hrefTo = exports.linkTo = exports.openLink = void 0;

require("core-js/modules/es6.string.iterator");

require("core-js/modules/es6.array.from");

require("core-js/modules/es6.regexp.to-string");

require("core-js/modules/es6.date.to-string");

require("core-js/modules/es7.symbol.async-iterator");

require("core-js/modules/es6.symbol");

require("core-js/modules/web.dom.iterable");

require("core-js/modules/es6.array.is-array");

require("core-js/modules/es6.promise");

var _global = require("global");

var _addons = _interopRequireDefault(require("@storybook/addons"));

var _coreEvents = _interopRequireDefault(require("@storybook/core-events"));

var _events = require("./events");

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

function _toConsumableArray(arr) { return _arrayWithoutHoles(arr) || _iterableToArray(arr) || _nonIterableSpread(); }

function _nonIterableSpread() { throw new TypeError("Invalid attempt to spread non-iterable instance"); }

function _iterableToArray(iter) { if (Symbol.iterator in Object(iter) || Object.prototype.toString.call(iter) === "[object Arguments]") return Array.from(iter); }

function _arrayWithoutHoles(arr) { if (Array.isArray(arr)) { for (var i = 0, arr2 = new Array(arr.length); i < arr.length; i++) { arr2[i] = arr[i]; } return arr2; } }

var openLink = function openLink(params) {
  return _addons.default.getChannel().emit(_events.EVENT_ID, params);
};

exports.openLink = openLink;

var valueOrCall = function valueOrCall(args) {
  return function (value) {
    return typeof value === 'function' ? value.apply(void 0, _toConsumableArray(args)) : value;
  };
};

var linkTo = function linkTo(kind, story) {
  return function () {
    for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {
      args[_key] = arguments[_key];
    }

    var resolver = valueOrCall(args);
    openLink({
      kind: resolver(kind),
      story: resolver(story)
    });
  };
};

exports.linkTo = linkTo;

var hrefTo = function hrefTo(kind, story) {
  return new Promise(function (resolve) {
    var channel = _addons.default.getChannel();

    channel.on(_events.RECEIVE_HREF_EVENT_ID, resolve);
    channel.emit(_events.REQUEST_HREF_EVENT_ID, {
      kind: kind,
      story: story
    });
  });
};

exports.hrefTo = hrefTo;

var linksListener = function linksListener(e) {
  var _e$target$dataset = e.target.dataset,
      sbKind = _e$target$dataset.sbKind,
      sbStory = _e$target$dataset.sbStory;

  if (sbKind || sbStory) {
    e.preventDefault();
    linkTo(sbKind, sbStory)();
  }
};

var linkSubscribtion = function linkSubscribtion() {
  _global.document.addEventListener('click', linksListener);

  return function () {
    return _global.document.removeEventListener('click', linksListener);
  };
};

var withLinks = function withLinks(story) {
  _addons.default.getChannel().emit(_coreEvents.default.REGISTER_SUBSCRIPTION, linkSubscribtion);

  return story();
};

exports.withLinks = withLinks;