@darth-knoppix/gatsby-plugin-amp-light
Version:
A gatsby plugin for creating AMP pages
86 lines (70 loc) • 4.29 kB
JavaScript
;
var _interopRequireWildcard = require("@babel/runtime/helpers/interopRequireWildcard");
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
Object.defineProperty(exports, "__esModule", {
value: true
});
exports.onRenderBody = exports.onPreRenderHTML = void 0;
var _defineProperty2 = _interopRequireDefault(require("@babel/runtime/helpers/defineProperty"));
var _react = _interopRequireWildcard(require("react"));
var _jsxRuntime = require("react/jsx-runtime");
function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (enumerableOnly) symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; }); keys.push.apply(keys, symbols); } return keys; }
function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; if (i % 2) { ownKeys(Object(source), true).forEach(function (key) { (0, _defineProperty2["default"])(target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } } return target; }
function shouldAMPlify(pathname, pathIdentifier) {
return pathname.startsWith(pathIdentifier || "/amp");
}
var onPreRenderHTML = function onPreRenderHTML(_ref, _ref2) {
var pathname = _ref.pathname,
replacePostBodyComponents = _ref.replacePostBodyComponents,
getPostBodyComponents = _ref.getPostBodyComponents;
var pathIdentifier = _ref2.pathIdentifier;
if (shouldAMPlify(pathname, pathIdentifier)) {
var postBodyComponents = getPostBodyComponents(); // AMP doesn't allow extra JS
replacePostBodyComponents(postBodyComponents.filter(function (x) {
return x.type !== "script";
}));
}
};
exports.onPreRenderHTML = onPreRenderHTML;
var onRenderBody = function onRenderBody(_ref3, _ref4) {
var setHtmlAttributes = _ref3.setHtmlAttributes,
setHeadComponents = _ref3.setHeadComponents,
pathname = _ref3.pathname;
var language = _ref4.language,
pathIdentifier = _ref4.pathIdentifier;
// Only modify page for AMP
if (shouldAMPlify(pathname, pathIdentifier)) {
console.info("\u26A1\uFE0F Making ".concat(pathname, " AMP ready"));
setHtmlAttributes({
lang: language,
amp: ""
});
setHeadComponents([/*#__PURE__*/(0, _jsxRuntime.jsx)("link", {
rel: "preload",
as: "script",
href: "https://cdn.ampproject.org/v0.js"
}, "amp-script-preload"), /*#__PURE__*/(0, _react.createElement)("style", _objectSpread(_objectSpread({}, {
"amp-custom": ""
}), {}, {
key: "amp-custom-style"
})), /*#__PURE__*/(0, _jsxRuntime.jsx)("script", {
async: true,
src: "https://cdn.ampproject.org/v0.js"
}, "amp-script"), /*#__PURE__*/(0, _jsxRuntime.jsx)("style", _objectSpread(_objectSpread({}, {
"amp-boilerplate": ""
}), {}, {
dangerouslySetInnerHTML: {
__html: "body{-webkit-animation:-amp-start 8s steps(1,end) 0s 1 normal both;-moz-animation:-amp-start 8s steps(1,end) 0s 1 normal both;-ms-animation:-amp-start 8s steps(1,end) 0s 1 normal both;animation:-amp-start 8s steps(1,end) 0s 1 normal both}@-webkit-keyframes -amp-start{from{visibility:hidden}to{visibility:visible}}@-moz-keyframes -amp-start{from{visibility:hidden}to{visibility:visible}}@-ms-keyframes -amp-start{from{visibility:hidden}to{visibility:visible}}@-o-keyframes -amp-start{from{visibility:hidden}to{visibility:visible}}@keyframes -amp-start{from{visibility:hidden}to{visibility:visible}}"
}
}), "amp-boilerplate"), /*#__PURE__*/(0, _jsxRuntime.jsx)("noscript", {
children: /*#__PURE__*/(0, _jsxRuntime.jsx)("style", _objectSpread(_objectSpread({}, {
"amp-boilerplate": ""
}), {}, {
dangerouslySetInnerHTML: {
__html: "body{-webkit-animation:none;-moz-animation:none;-ms-animation:none;animation:none}"
}
}))
}, "amp-boilerplate-noscript")]);
}
};
exports.onRenderBody = onRenderBody;