UNPKG

@lonelyplanet/dotcom-core

Version:

This package is meant to house some of our more common UI and shared libs across dotcom applications.

20 lines (19 loc) 1.56 kB
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; }; import * as withSideEffect from "react-side-effect"; var legacyDataLayerInitPayloadIndex = 0; export var reducePropsToState = function (propsList) { return propsList.reduce(function (memo, m) { return (__assign({}, memo, m.data)); }, {}); }; export var handleStateChangeOnClient = function (state) { if (typeof window !== "undefined" && window.lp && window.lp.analytics && window.lp.analytics.dataLayer) { window.lp.analytics.dataLayer[legacyDataLayerInitPayloadIndex] = state; } }; export var 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 createDataLayerScript(state); }; export default withSideEffect(reducePropsToState, handleStateChangeOnClient, mapStateOnServer)(function () { return null; });