gatsby-plugin-algolia-docsearch-appid
Version:
A Gatsby plugin for integrating with Algolia DocSearch. Includes parameter for appId if you run your own instance.
59 lines (48 loc) • 2.72 kB
JavaScript
"use strict";
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
var _taggedTemplateLiteralLoose2 = _interopRequireDefault(require("@babel/runtime/helpers/taggedTemplateLiteralLoose"));
var _react = _interopRequireDefault(require("react"));
var _commonTags = require("common-tags");
function _templateObject() {
var data = (0, _taggedTemplateLiteralLoose2["default"])(["\n var observer = new MutationObserver(function (mutations, instance) {\n var docuSearchElem = document.querySelector('", "');\n if (docsearch && docuSearchElem) {\n docsearch({\n apiKey: \"", "\",\n indexName: \"", "\",\n ", "\n inputSelector: \"", "\",\n debug: ", "\n });\n instance.disconnect(); // stop observing\n return;\n }\n });\n\n // start observing\n document.addEventListener(\"DOMContentLoaded\", function() {\n observer.observe(document, {\n childList: true,\n subtree: true\n });\n });\n "]);
_templateObject = function _templateObject() {
return data;
};
return data;
}
exports.onRenderBody = function (_ref, _ref2) {
var setHeadComponents = _ref.setHeadComponents,
setPostBodyComponents = _ref.setPostBodyComponents;
var apiKey = _ref2.apiKey,
appId = _ref2.appId,
indexName = _ref2.indexName,
inputSelector = _ref2.inputSelector,
_ref2$debug = _ref2.debug,
debug = _ref2$debug === void 0 ? false : _ref2$debug,
_ref2$loadCss = _ref2.loadCss,
loadCss = _ref2$loadCss === void 0 ? true : _ref2$loadCss,
_ref2$deferJs = _ref2.deferJs,
deferJs = _ref2$deferJs === void 0 ? false : _ref2$deferJs;
if (!apiKey || !indexName || !inputSelector) {
return;
}
if (loadCss) {
setHeadComponents([_react["default"].createElement("link", {
key: "plugin-docsearch-css",
rel: "stylesheet",
href: "https://cdn.jsdelivr.net/npm/docsearch.js@2/dist/cdn/docsearch.min.css"
})]);
}
setPostBodyComponents([_react["default"].createElement("script", {
key: "plugin-docsearch-js",
type: "text/javascript",
src: "https://cdn.jsdelivr.net/npm/docsearch.js@2/dist/cdn/docsearch.min.js",
defer: deferJs || undefined
}), _react["default"].createElement("script", {
key: "plugin-docsearch-initiate",
type: "text/javascript",
dangerouslySetInnerHTML: {
__html: (0, _commonTags.stripIndent)(_templateObject(), inputSelector, apiKey, indexName, appId && "appId: \"" + appId + "\",", inputSelector, debug === true ? "true" : "false")
}
})]);
};