UNPKG

storybook-amp

Version:

Storybook addon for AMP Html. Allows to display in your stories AMP Html components generated with React.

66 lines (63 loc) 2.44 kB
"use strict"; var _global = require("global"); var _react = _interopRequireDefault(require("react")); var _addons = require("@storybook/addons"); var _constants = require("../constants"); var _Tool = require("../Tool"); var _Panel = require("../Panel"); function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { "default": obj }; } _addons.addons.register(_constants.ADDON_ID, function () { prepareAddonInWindow(); _addons.addons.add(_constants.TOOL_ID, { type: _addons.types.TOOL, title: "Amp", match: function match(_ref) { var viewMode = _ref.viewMode; return viewMode === "story"; }, render: function render() { return /*#__PURE__*/_react["default"].createElement(_Tool.Tool, null); } }); _addons.addons.add(_constants.PANEL_ID, { type: _addons.types.PANEL, title: _constants.PANEL_TITLE, match: function match(_ref2) { var viewMode = _ref2.viewMode; return viewMode === "story"; }, render: function render(props) { return /*#__PURE__*/_react["default"].createElement(_Panel.Panel, props); } }); }); var prepareAddonInWindow = function prepareAddonInWindow() { if (_global.window.__STORYBOOK_AMP__) { return; } _global.window.__STORYBOOK_AMP__ = { validator: { isReady: false, init: function init() { return new Promise(function (resolve, reject) { var script = _global.document.createElement("script"), head = _global.document.head || _global.document.getElementsByTagName("head")[0]; script.addEventListener("load", function (event) { var _window$amp, _window$amp$validator; if (_global.window !== null && _global.window !== void 0 && (_window$amp = _global.window.amp) !== null && _window$amp !== void 0 && (_window$amp$validator = _window$amp.validator) !== null && _window$amp$validator !== void 0 && _window$amp$validator.init) { _global.window.amp.validator.init().then(function () { _global.window.__STORYBOOK_AMP__.validator.isReady = true; resolve(); }); } // reject error }); script.src = "https://cdn.ampproject.org/v0/validator_wasm.js"; script.id = "storybook-amp-validator-script"; script.async = false; head.insertBefore(script, head.firstChild); }); } } }; };