@lonelyplanet/dotcom-core
Version:
This package is meant to house some of our more common UI and shared libs across dotcom applications.
43 lines (32 loc) • 1.65 kB
JavaScript
;
var __assign = this && this.__assign || Object.assign || function (t) {
for (var s, i = 1, n = arguments.length; i < n; i++) {
s = arguments[i];
for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p];
}
return t;
};
Object.defineProperty(exports, "__esModule", {
value: true
});
var withSideEffect = require("react-side-effect");
var legacyDataLayerInitPayloadIndex = 0;
exports.reducePropsToState = function (propsList) {
return propsList.reduce(function (memo, m) {
return __assign({}, memo, m.data);
}, {});
};
exports.handleStateChangeOnClient = function (state) {
if (typeof window !== "undefined" && window.lp && window.lp.analytics && window.lp.analytics.dataLayer) {
window.lp.analytics.dataLayer[legacyDataLayerInitPayloadIndex] = state;
}
};
exports.createDataLayerScript = function (state) {
return "\n window.lp = window.lp || {};\n window.lp.analytics = window.lp.analytics || {};\n window.lp.analytics.dataLayer = window.lp.analytics.dataLayer || [];\n window.lp.analytics.dataLayer[" + legacyDataLayerInitPayloadIndex + "] = " + JSON.stringify(state) + ";\n " + (process.env.NODE_ENV !== "production" ? "window.lp.analytics.send = function(options) {\n console.group(\"GTM\"); console.info(options); console.groupEnd(\"GTM\");\n }" : "") + "\n window.dataLayer = window.lp.analytics.dataLayer;\n";
};
var mapStateOnServer = function (state) {
return exports.createDataLayerScript(state);
};
exports.default = withSideEffect(exports.reducePropsToState, exports.handleStateChangeOnClient, mapStateOnServer)(function () {
return null;
});