@blaze-cms/plugin-gtm-fe 0.146.0-rc-eagle.0 → 0.146.0-rc-eagle-3.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/lib-es/GoogleTagManager/GTMFactory.js +55 -0
- package/lib-es/GoogleTagManager/GTMFactory.js.map +1 -0
- package/lib-es/GoogleTagManager/GTMRender.js +72 -0
- package/lib-es/GoogleTagManager/GTMRender.js.map +1 -0
- package/lib-es/GoogleTagManager/index.js +3 -0
- package/lib-es/GoogleTagManager/index.js.map +1 -0
- package/lib-es/GoogleTagManagerEvent/GTMClickEvent.js +55 -0
- package/lib-es/GoogleTagManagerEvent/GTMClickEvent.js.map +1 -0
- package/lib-es/GoogleTagManagerEvent/GTMClickEvents.js +32 -0
- package/lib-es/GoogleTagManagerEvent/GTMClickEvents.js.map +1 -0
- package/lib-es/GoogleTagManagerEvent/GTMEvent.js +38 -0
- package/lib-es/GoogleTagManagerEvent/GTMEvent.js.map +1 -0
- package/lib-es/GoogleTagManagerEvent/GTMEventFactory.js +92 -0
- package/lib-es/GoogleTagManagerEvent/GTMEventFactory.js.map +1 -0
- package/lib-es/GoogleTagManagerEvent/GTMEventRender.js +81 -0
- package/lib-es/GoogleTagManagerEvent/GTMEventRender.js.map +1 -0
- package/lib-es/GoogleTagManagerEvent/GTMEventSwitch.js +40 -0
- package/lib-es/GoogleTagManagerEvent/GTMEventSwitch.js.map +1 -0
- package/lib-es/GoogleTagManagerEvent/index.js +3 -0
- package/lib-es/GoogleTagManagerEvent/index.js.map +1 -0
- package/lib-es/constants.js +28 -0
- package/lib-es/constants.js.map +1 -0
- package/lib-es/helpers/build-and-push-web-vitals.js +24 -0
- package/lib-es/helpers/build-and-push-web-vitals.js.map +1 -0
- package/lib-es/helpers/build-data-layer.js +34 -0
- package/lib-es/helpers/build-data-layer.js.map +1 -0
- package/lib-es/helpers/build-nested-event.js +69 -0
- package/lib-es/helpers/build-nested-event.js.map +1 -0
- package/lib-es/helpers/build-props-to-display-array.js +5 -0
- package/lib-es/helpers/build-props-to-display-array.js.map +1 -0
- package/lib-es/helpers/build-user-layer.js +45 -0
- package/lib-es/helpers/build-user-layer.js.map +1 -0
- package/lib-es/helpers/build-user-query-props.js +25 -0
- package/lib-es/helpers/build-user-query-props.js.map +1 -0
- package/lib-es/helpers/filter-gtm-events.js +14 -0
- package/lib-es/helpers/filter-gtm-events.js.map +1 -0
- package/lib-es/helpers/get-ids-to-use.js +8 -0
- package/lib-es/helpers/get-ids-to-use.js.map +1 -0
- package/lib-es/helpers/get-render-props.js +25 -0
- package/lib-es/helpers/get-render-props.js.map +1 -0
- package/lib-es/helpers/index.js +11 -0
- package/lib-es/helpers/index.js.map +1 -0
- package/lib-es/helpers/push-to-data-layer.js +9 -0
- package/lib-es/helpers/push-to-data-layer.js.map +1 -0
- package/lib-es/helpers/reset-data-layer.js +17 -0
- package/lib-es/helpers/reset-data-layer.js.map +1 -0
- package/lib-es/index.js +21 -0
- package/lib-es/index.js.map +1 -0
- package/package.json +13 -8
- package/CHANGELOG.md +0 -1746
- package/babel.config.js +0 -3
- package/jest.config.js +0 -3
|
@@ -0,0 +1,55 @@
|
|
|
1
|
+
import React, { useContext } from 'react';
|
|
2
|
+
import PropTypes from 'prop-types';
|
|
3
|
+
import { useQuery } from '@apollo/client';
|
|
4
|
+
import { getSingleEntitySchema, buildPropsQuery } from '@blaze-cms/react-page-builder';
|
|
5
|
+
import { MainContext } from '@blaze-cms/nextjs-components';
|
|
6
|
+
import GTMRender from './GTMRender';
|
|
7
|
+
import { getRenderProps, buildPropsToDisplayArray } from '../helpers';
|
|
8
|
+
const GTMFactory = ({
|
|
9
|
+
propsToDisplay,
|
|
10
|
+
userPropsToDisplay,
|
|
11
|
+
parent,
|
|
12
|
+
gtmWebVitals
|
|
13
|
+
}) => {
|
|
14
|
+
const {
|
|
15
|
+
isPreview
|
|
16
|
+
} = useContext(MainContext);
|
|
17
|
+
const {
|
|
18
|
+
data,
|
|
19
|
+
error,
|
|
20
|
+
loading
|
|
21
|
+
} = useQuery(getSingleEntitySchema, {
|
|
22
|
+
variables: {
|
|
23
|
+
id: parent.itemEntity
|
|
24
|
+
}
|
|
25
|
+
});
|
|
26
|
+
if (typeof window === 'undefined') return null;
|
|
27
|
+
if (loading || error || !data) return null;
|
|
28
|
+
const propsToDisplayArr = buildPropsToDisplayArray(propsToDisplay);
|
|
29
|
+
const extraProps = buildPropsQuery(data, propsToDisplayArr) || '';
|
|
30
|
+
const {
|
|
31
|
+
action,
|
|
32
|
+
actionKey
|
|
33
|
+
} = getRenderProps(extraProps, isPreview, data);
|
|
34
|
+
return /*#__PURE__*/React.createElement(GTMRender, {
|
|
35
|
+
action: action,
|
|
36
|
+
actionKey: actionKey,
|
|
37
|
+
userPropsToDisplay: userPropsToDisplay,
|
|
38
|
+
propsToDisplay: propsToDisplay,
|
|
39
|
+
parentId: parent.itemId,
|
|
40
|
+
webVitals: gtmWebVitals
|
|
41
|
+
});
|
|
42
|
+
};
|
|
43
|
+
GTMFactory.propTypes = {
|
|
44
|
+
propsToDisplay: PropTypes.array,
|
|
45
|
+
userPropsToDisplay: PropTypes.array,
|
|
46
|
+
parent: PropTypes.object.isRequired,
|
|
47
|
+
gtmWebVitals: PropTypes.bool
|
|
48
|
+
};
|
|
49
|
+
GTMFactory.defaultProps = {
|
|
50
|
+
propsToDisplay: [],
|
|
51
|
+
userPropsToDisplay: [],
|
|
52
|
+
gtmWebVitals: false
|
|
53
|
+
};
|
|
54
|
+
export default GTMFactory;
|
|
55
|
+
//# sourceMappingURL=GTMFactory.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"GTMFactory.js","names":["React","useContext","PropTypes","useQuery","getSingleEntitySchema","buildPropsQuery","MainContext","GTMRender","getRenderProps","buildPropsToDisplayArray","GTMFactory","propsToDisplay","userPropsToDisplay","parent","gtmWebVitals","isPreview","data","error","loading","variables","id","itemEntity","window","propsToDisplayArr","extraProps","action","actionKey","createElement","parentId","itemId","webVitals","propTypes","array","object","isRequired","bool","defaultProps"],"sources":["../../src/GoogleTagManager/GTMFactory.js"],"sourcesContent":["import React, { useContext } from 'react';\nimport PropTypes from 'prop-types';\nimport { useQuery } from '@apollo/client';\nimport { getSingleEntitySchema, buildPropsQuery } from '@blaze-cms/react-page-builder';\nimport { MainContext } from '@blaze-cms/nextjs-components';\nimport GTMRender from './GTMRender';\nimport { getRenderProps, buildPropsToDisplayArray } from '../helpers';\n\nconst GTMFactory = ({ propsToDisplay, userPropsToDisplay, parent, gtmWebVitals }) => {\n const { isPreview } = useContext(MainContext);\n const { data, error, loading } = useQuery(getSingleEntitySchema, {\n variables: { id: parent.itemEntity }\n });\n\n if (typeof window === 'undefined') return null;\n if (loading || error || !data) return null;\n\n const propsToDisplayArr = buildPropsToDisplayArray(propsToDisplay);\n const extraProps = buildPropsQuery(data, propsToDisplayArr) || '';\n const { action, actionKey } = getRenderProps(extraProps, isPreview, data);\n\n return (\n <GTMRender\n action={action}\n actionKey={actionKey}\n userPropsToDisplay={userPropsToDisplay}\n propsToDisplay={propsToDisplay}\n parentId={parent.itemId}\n webVitals={gtmWebVitals}\n />\n );\n};\n\nGTMFactory.propTypes = {\n propsToDisplay: PropTypes.array,\n userPropsToDisplay: PropTypes.array,\n parent: PropTypes.object.isRequired,\n gtmWebVitals: PropTypes.bool\n};\n\nGTMFactory.defaultProps = {\n propsToDisplay: [],\n userPropsToDisplay: [],\n gtmWebVitals: false\n};\n\nexport default GTMFactory;\n"],"mappings":"AAAA,OAAOA,KAAK,IAAIC,UAAU,QAAQ,OAAO;AACzC,OAAOC,SAAS,MAAM,YAAY;AAClC,SAASC,QAAQ,QAAQ,gBAAgB;AACzC,SAASC,qBAAqB,EAAEC,eAAe,QAAQ,+BAA+B;AACtF,SAASC,WAAW,QAAQ,8BAA8B;AAC1D,OAAOC,SAAS,MAAM,aAAa;AACnC,SAASC,cAAc,EAAEC,wBAAwB,QAAQ,YAAY;AAErE,MAAMC,UAAU,GAAGA,CAAC;EAAEC,cAAc;EAAEC,kBAAkB;EAAEC,MAAM;EAAEC;AAAa,CAAC,KAAK;EACnF,MAAM;IAAEC;EAAU,CAAC,GAAGd,UAAU,CAACK,WAAW,CAAC;EAC7C,MAAM;IAAEU,IAAI;IAAEC,KAAK;IAAEC;EAAQ,CAAC,GAAGf,QAAQ,CAACC,qBAAqB,EAAE;IAC/De,SAAS,EAAE;MAAEC,EAAE,EAAEP,MAAM,CAACQ;IAAW;EACrC,CAAC,CAAC;EAEF,IAAI,OAAOC,MAAM,KAAK,WAAW,EAAE,OAAO,IAAI;EAC9C,IAAIJ,OAAO,IAAID,KAAK,IAAI,CAACD,IAAI,EAAE,OAAO,IAAI;EAE1C,MAAMO,iBAAiB,GAAGd,wBAAwB,CAACE,cAAc,CAAC;EAClE,MAAMa,UAAU,GAAGnB,eAAe,CAACW,IAAI,EAAEO,iBAAiB,CAAC,IAAI,EAAE;EACjE,MAAM;IAAEE,MAAM;IAAEC;EAAU,CAAC,GAAGlB,cAAc,CAACgB,UAAU,EAAET,SAAS,EAAEC,IAAI,CAAC;EAEzE,oBACEhB,KAAA,CAAA2B,aAAA,CAACpB,SAAS;IACRkB,MAAM,EAAEA,MAAO;IACfC,SAAS,EAAEA,SAAU;IACrBd,kBAAkB,EAAEA,kBAAmB;IACvCD,cAAc,EAAEA,cAAe;IAC/BiB,QAAQ,EAAEf,MAAM,CAACgB,MAAO;IACxBC,SAAS,EAAEhB;EAAa,CACzB,CAAC;AAEN,CAAC;AAEDJ,UAAU,CAACqB,SAAS,GAAG;EACrBpB,cAAc,EAAET,SAAS,CAAC8B,KAAK;EAC/BpB,kBAAkB,EAAEV,SAAS,CAAC8B,KAAK;EACnCnB,MAAM,EAAEX,SAAS,CAAC+B,MAAM,CAACC,UAAU;EACnCpB,YAAY,EAAEZ,SAAS,CAACiC;AAC1B,CAAC;AAEDzB,UAAU,CAAC0B,YAAY,GAAG;EACxBzB,cAAc,EAAE,EAAE;EAClBC,kBAAkB,EAAE,EAAE;EACtBE,YAAY,EAAE;AAChB,CAAC;AAED,eAAeJ,UAAU","ignoreList":[]}
|
|
@@ -0,0 +1,72 @@
|
|
|
1
|
+
import _defineProperty from "@babel/runtime/helpers/defineProperty";
|
|
2
|
+
function ownKeys(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e); r && (o = o.filter(function (r) { return Object.getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; }
|
|
3
|
+
function _objectSpread(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys(Object(t), !0).forEach(function (r) { _defineProperty(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; }
|
|
4
|
+
import { useState } from 'react';
|
|
5
|
+
import PropTypes from 'prop-types';
|
|
6
|
+
import { useQuery } from '@apollo/client';
|
|
7
|
+
import { withRouter } from 'next/router';
|
|
8
|
+
import { getCurrentUser } from '@blaze-cms/react-page-builder';
|
|
9
|
+
import { buildDataLayer, buildAndPushWebVitals, pushToDataLayer, buildUserQueryProps, buildUserLayer } from '../helpers';
|
|
10
|
+
const GTMRender = ({
|
|
11
|
+
router,
|
|
12
|
+
action,
|
|
13
|
+
propsToDisplay,
|
|
14
|
+
parentId,
|
|
15
|
+
webVitals,
|
|
16
|
+
userPropsToDisplay
|
|
17
|
+
}) => {
|
|
18
|
+
const {
|
|
19
|
+
asPath
|
|
20
|
+
} = router;
|
|
21
|
+
const [currentLocation, setCurrentLocation] = useState({
|
|
22
|
+
url: '',
|
|
23
|
+
shouldPushLayer: false
|
|
24
|
+
});
|
|
25
|
+
const {
|
|
26
|
+
data,
|
|
27
|
+
error,
|
|
28
|
+
loading
|
|
29
|
+
} = useQuery(action, {
|
|
30
|
+
variables: {
|
|
31
|
+
id: parentId
|
|
32
|
+
}
|
|
33
|
+
});
|
|
34
|
+
const hasUserProps = userPropsToDisplay && userPropsToDisplay.length;
|
|
35
|
+
const userProps = hasUserProps ? buildUserQueryProps(userPropsToDisplay) : '';
|
|
36
|
+
const {
|
|
37
|
+
data: userData,
|
|
38
|
+
loading: userLoading
|
|
39
|
+
} = useQuery(getCurrentUser(userProps), {
|
|
40
|
+
variables: {},
|
|
41
|
+
skip: !hasUserProps
|
|
42
|
+
});
|
|
43
|
+
if (loading || userLoading || !data || !data.entityData) return null;
|
|
44
|
+
if (data.entityData.id !== parentId) return null;
|
|
45
|
+
if (error) return error.message;
|
|
46
|
+
if (currentLocation.url !== asPath) setCurrentLocation({
|
|
47
|
+
url: asPath,
|
|
48
|
+
shouldPushLayer: true
|
|
49
|
+
});
|
|
50
|
+
if (!currentLocation.shouldPushLayer) return null;
|
|
51
|
+
const {
|
|
52
|
+
entityData
|
|
53
|
+
} = data;
|
|
54
|
+
const dataLayerObject = buildDataLayer(entityData, propsToDisplay, currentLocation.url);
|
|
55
|
+
const userLayerObject = buildUserLayer(userData, userPropsToDisplay);
|
|
56
|
+
const extendedDataLayer = _objectSpread(_objectSpread({}, dataLayerObject), userLayerObject);
|
|
57
|
+
if (webVitals) buildAndPushWebVitals();
|
|
58
|
+
pushToDataLayer(extendedDataLayer, true);
|
|
59
|
+
setCurrentLocation(_objectSpread(_objectSpread({}, currentLocation), {}, {
|
|
60
|
+
shouldPushLayer: false
|
|
61
|
+
}));
|
|
62
|
+
return null;
|
|
63
|
+
};
|
|
64
|
+
GTMRender.propTypes = {
|
|
65
|
+
userPropsToDisplay: PropTypes.array.isRequired,
|
|
66
|
+
action: PropTypes.object.isRequired,
|
|
67
|
+
propsToDisplay: PropTypes.array.isRequired,
|
|
68
|
+
parentId: PropTypes.string.isRequired,
|
|
69
|
+
webVitals: PropTypes.bool.isRequired
|
|
70
|
+
};
|
|
71
|
+
export default withRouter(GTMRender);
|
|
72
|
+
//# sourceMappingURL=GTMRender.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"GTMRender.js","names":["useState","PropTypes","useQuery","withRouter","getCurrentUser","buildDataLayer","buildAndPushWebVitals","pushToDataLayer","buildUserQueryProps","buildUserLayer","GTMRender","router","action","propsToDisplay","parentId","webVitals","userPropsToDisplay","asPath","currentLocation","setCurrentLocation","url","shouldPushLayer","data","error","loading","variables","id","hasUserProps","length","userProps","userData","userLoading","skip","entityData","message","dataLayerObject","userLayerObject","extendedDataLayer","_objectSpread","propTypes","array","isRequired","object","string","bool"],"sources":["../../src/GoogleTagManager/GTMRender.js"],"sourcesContent":["import { useState } from 'react';\nimport PropTypes from 'prop-types';\nimport { useQuery } from '@apollo/client';\nimport { withRouter } from 'next/router';\nimport { getCurrentUser } from '@blaze-cms/react-page-builder';\nimport {\n buildDataLayer,\n buildAndPushWebVitals,\n pushToDataLayer,\n buildUserQueryProps,\n buildUserLayer\n} from '../helpers';\n\nconst GTMRender = ({ router, action, propsToDisplay, parentId, webVitals, userPropsToDisplay }) => {\n const { asPath } = router;\n const [currentLocation, setCurrentLocation] = useState({ url: '', shouldPushLayer: false });\n\n const { data, error, loading } = useQuery(action, {\n variables: { id: parentId }\n });\n const hasUserProps = userPropsToDisplay && userPropsToDisplay.length;\n const userProps = hasUserProps ? buildUserQueryProps(userPropsToDisplay) : '';\n const { data: userData, loading: userLoading } = useQuery(getCurrentUser(userProps), {\n variables: {},\n skip: !hasUserProps\n });\n\n if (loading || userLoading || !data || !data.entityData) return null;\n if (data.entityData.id !== parentId) return null;\n if (error) return error.message;\n if (currentLocation.url !== asPath) setCurrentLocation({ url: asPath, shouldPushLayer: true });\n if (!currentLocation.shouldPushLayer) return null;\n\n const { entityData } = data;\n const dataLayerObject = buildDataLayer(entityData, propsToDisplay, currentLocation.url);\n const userLayerObject = buildUserLayer(userData, userPropsToDisplay);\n const extendedDataLayer = { ...dataLayerObject, ...userLayerObject };\n\n if (webVitals) buildAndPushWebVitals();\n pushToDataLayer(extendedDataLayer, true);\n setCurrentLocation({ ...currentLocation, shouldPushLayer: false });\n\n return null;\n};\n\nGTMRender.propTypes = {\n userPropsToDisplay: PropTypes.array.isRequired,\n action: PropTypes.object.isRequired,\n propsToDisplay: PropTypes.array.isRequired,\n parentId: PropTypes.string.isRequired,\n webVitals: PropTypes.bool.isRequired\n};\n\nexport default withRouter(GTMRender);\n"],"mappings":";;;AAAA,SAASA,QAAQ,QAAQ,OAAO;AAChC,OAAOC,SAAS,MAAM,YAAY;AAClC,SAASC,QAAQ,QAAQ,gBAAgB;AACzC,SAASC,UAAU,QAAQ,aAAa;AACxC,SAASC,cAAc,QAAQ,+BAA+B;AAC9D,SACEC,cAAc,EACdC,qBAAqB,EACrBC,eAAe,EACfC,mBAAmB,EACnBC,cAAc,QACT,YAAY;AAEnB,MAAMC,SAAS,GAAGA,CAAC;EAAEC,MAAM;EAAEC,MAAM;EAAEC,cAAc;EAAEC,QAAQ;EAAEC,SAAS;EAAEC;AAAmB,CAAC,KAAK;EACjG,MAAM;IAAEC;EAAO,CAAC,GAAGN,MAAM;EACzB,MAAM,CAACO,eAAe,EAAEC,kBAAkB,CAAC,GAAGnB,QAAQ,CAAC;IAAEoB,GAAG,EAAE,EAAE;IAAEC,eAAe,EAAE;EAAM,CAAC,CAAC;EAE3F,MAAM;IAAEC,IAAI;IAAEC,KAAK;IAAEC;EAAQ,CAAC,GAAGtB,QAAQ,CAACU,MAAM,EAAE;IAChDa,SAAS,EAAE;MAAEC,EAAE,EAAEZ;IAAS;EAC5B,CAAC,CAAC;EACF,MAAMa,YAAY,GAAGX,kBAAkB,IAAIA,kBAAkB,CAACY,MAAM;EACpE,MAAMC,SAAS,GAAGF,YAAY,GAAGnB,mBAAmB,CAACQ,kBAAkB,CAAC,GAAG,EAAE;EAC7E,MAAM;IAAEM,IAAI,EAAEQ,QAAQ;IAAEN,OAAO,EAAEO;EAAY,CAAC,GAAG7B,QAAQ,CAACE,cAAc,CAACyB,SAAS,CAAC,EAAE;IACnFJ,SAAS,EAAE,CAAC,CAAC;IACbO,IAAI,EAAE,CAACL;EACT,CAAC,CAAC;EAEF,IAAIH,OAAO,IAAIO,WAAW,IAAI,CAACT,IAAI,IAAI,CAACA,IAAI,CAACW,UAAU,EAAE,OAAO,IAAI;EACpE,IAAIX,IAAI,CAACW,UAAU,CAACP,EAAE,KAAKZ,QAAQ,EAAE,OAAO,IAAI;EAChD,IAAIS,KAAK,EAAE,OAAOA,KAAK,CAACW,OAAO;EAC/B,IAAIhB,eAAe,CAACE,GAAG,KAAKH,MAAM,EAAEE,kBAAkB,CAAC;IAAEC,GAAG,EAAEH,MAAM;IAAEI,eAAe,EAAE;EAAK,CAAC,CAAC;EAC9F,IAAI,CAACH,eAAe,CAACG,eAAe,EAAE,OAAO,IAAI;EAEjD,MAAM;IAAEY;EAAW,CAAC,GAAGX,IAAI;EAC3B,MAAMa,eAAe,GAAG9B,cAAc,CAAC4B,UAAU,EAAEpB,cAAc,EAAEK,eAAe,CAACE,GAAG,CAAC;EACvF,MAAMgB,eAAe,GAAG3B,cAAc,CAACqB,QAAQ,EAAEd,kBAAkB,CAAC;EACpE,MAAMqB,iBAAiB,GAAAC,aAAA,CAAAA,aAAA,KAAQH,eAAe,GAAKC,eAAe,CAAE;EAEpE,IAAIrB,SAAS,EAAET,qBAAqB,CAAC,CAAC;EACtCC,eAAe,CAAC8B,iBAAiB,EAAE,IAAI,CAAC;EACxClB,kBAAkB,CAAAmB,aAAA,CAAAA,aAAA,KAAMpB,eAAe;IAAEG,eAAe,EAAE;EAAK,EAAE,CAAC;EAElE,OAAO,IAAI;AACb,CAAC;AAEDX,SAAS,CAAC6B,SAAS,GAAG;EACpBvB,kBAAkB,EAAEf,SAAS,CAACuC,KAAK,CAACC,UAAU;EAC9C7B,MAAM,EAAEX,SAAS,CAACyC,MAAM,CAACD,UAAU;EACnC5B,cAAc,EAAEZ,SAAS,CAACuC,KAAK,CAACC,UAAU;EAC1C3B,QAAQ,EAAEb,SAAS,CAAC0C,MAAM,CAACF,UAAU;EACrC1B,SAAS,EAAEd,SAAS,CAAC2C,IAAI,CAACH;AAC5B,CAAC;AAED,eAAetC,UAAU,CAACO,SAAS,CAAC","ignoreList":[]}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","names":["GTMFactory"],"sources":["../../src/GoogleTagManager/index.js"],"sourcesContent":["import GTMFactory from './GTMFactory';\n\nexport default GTMFactory;\n"],"mappings":"AAAA,OAAOA,UAAU,MAAM,cAAc;AAErC,eAAeA,UAAU","ignoreList":[]}
|
|
@@ -0,0 +1,55 @@
|
|
|
1
|
+
import _defineProperty from "@babel/runtime/helpers/defineProperty";
|
|
2
|
+
function ownKeys(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e); r && (o = o.filter(function (r) { return Object.getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; }
|
|
3
|
+
function _objectSpread(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys(Object(t), !0).forEach(function (r) { _defineProperty(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; }
|
|
4
|
+
import React from 'react';
|
|
5
|
+
import PropTypes from 'prop-types';
|
|
6
|
+
import { useQuery } from '@apollo/client';
|
|
7
|
+
import { checkIfLoggedIn } from '@blaze-cms/core-auth-ui';
|
|
8
|
+
import { getCurrentUser } from '@blaze-cms/react-page-builder';
|
|
9
|
+
import GTMEvent from './GTMEvent';
|
|
10
|
+
import { buildDataLayer, buildNestedEvent, buildUserQueryProps, buildUserLayer } from '../helpers';
|
|
11
|
+
const GTMClickEvent = ({
|
|
12
|
+
event,
|
|
13
|
+
componentProps,
|
|
14
|
+
parentComponent
|
|
15
|
+
}) => {
|
|
16
|
+
const {
|
|
17
|
+
eventTrigger,
|
|
18
|
+
propsToDisplay,
|
|
19
|
+
userPropsToDisplay,
|
|
20
|
+
eventEcommerce
|
|
21
|
+
} = event;
|
|
22
|
+
const {
|
|
23
|
+
id: userId
|
|
24
|
+
} = checkIfLoggedIn();
|
|
25
|
+
const userProps = userId ? buildUserQueryProps(userPropsToDisplay) : '';
|
|
26
|
+
const {
|
|
27
|
+
data: userData,
|
|
28
|
+
loading
|
|
29
|
+
} = useQuery(getCurrentUser(userProps), {
|
|
30
|
+
variables: {
|
|
31
|
+
id: userId
|
|
32
|
+
},
|
|
33
|
+
skip: !userId
|
|
34
|
+
});
|
|
35
|
+
if (loading) return null;
|
|
36
|
+
const dataLayerProps = buildDataLayer(componentProps, propsToDisplay);
|
|
37
|
+
const dataLayerObject = buildNestedEvent(eventEcommerce, event, dataLayerProps, parentComponent);
|
|
38
|
+
const userLayerObject = buildUserLayer(userData, userPropsToDisplay);
|
|
39
|
+
const extendedDataLayer = _objectSpread(_objectSpread({}, dataLayerObject), userLayerObject);
|
|
40
|
+
return /*#__PURE__*/React.createElement(GTMEvent, {
|
|
41
|
+
dataLayerObject: extendedDataLayer,
|
|
42
|
+
eventTrigger: eventTrigger
|
|
43
|
+
});
|
|
44
|
+
};
|
|
45
|
+
GTMClickEvent.propTypes = {
|
|
46
|
+
event: PropTypes.object.isRequired,
|
|
47
|
+
componentProps: PropTypes.oneOfType([PropTypes.object, PropTypes.array]),
|
|
48
|
+
parentComponent: PropTypes.object
|
|
49
|
+
};
|
|
50
|
+
GTMClickEvent.defaultProps = {
|
|
51
|
+
componentProps: {},
|
|
52
|
+
parentComponent: {}
|
|
53
|
+
};
|
|
54
|
+
export default GTMClickEvent;
|
|
55
|
+
//# sourceMappingURL=GTMClickEvent.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"GTMClickEvent.js","names":["React","PropTypes","useQuery","checkIfLoggedIn","getCurrentUser","GTMEvent","buildDataLayer","buildNestedEvent","buildUserQueryProps","buildUserLayer","GTMClickEvent","event","componentProps","parentComponent","eventTrigger","propsToDisplay","userPropsToDisplay","eventEcommerce","id","userId","userProps","data","userData","loading","variables","skip","dataLayerProps","dataLayerObject","userLayerObject","extendedDataLayer","_objectSpread","createElement","propTypes","object","isRequired","oneOfType","array","defaultProps"],"sources":["../../src/GoogleTagManagerEvent/GTMClickEvent.js"],"sourcesContent":["import React from 'react';\nimport PropTypes from 'prop-types';\nimport { useQuery } from '@apollo/client';\nimport { checkIfLoggedIn } from '@blaze-cms/core-auth-ui';\nimport { getCurrentUser } from '@blaze-cms/react-page-builder';\n\nimport GTMEvent from './GTMEvent';\nimport { buildDataLayer, buildNestedEvent, buildUserQueryProps, buildUserLayer } from '../helpers';\n\nconst GTMClickEvent = ({ event, componentProps, parentComponent }) => {\n const { eventTrigger, propsToDisplay, userPropsToDisplay, eventEcommerce } = event;\n const { id: userId } = checkIfLoggedIn();\n const userProps = userId ? buildUserQueryProps(userPropsToDisplay) : '';\n const { data: userData, loading } = useQuery(getCurrentUser(userProps), {\n variables: { id: userId },\n skip: !userId\n });\n if (loading) return null;\n const dataLayerProps = buildDataLayer(componentProps, propsToDisplay);\n const dataLayerObject = buildNestedEvent(eventEcommerce, event, dataLayerProps, parentComponent);\n const userLayerObject = buildUserLayer(userData, userPropsToDisplay);\n\n const extendedDataLayer = { ...dataLayerObject, ...userLayerObject };\n\n return <GTMEvent dataLayerObject={extendedDataLayer} eventTrigger={eventTrigger} />;\n};\n\nGTMClickEvent.propTypes = {\n event: PropTypes.object.isRequired,\n componentProps: PropTypes.oneOfType([PropTypes.object, PropTypes.array]),\n parentComponent: PropTypes.object\n};\n\nGTMClickEvent.defaultProps = {\n componentProps: {},\n parentComponent: {}\n};\n\nexport default GTMClickEvent;\n"],"mappings":";;;AAAA,OAAOA,KAAK,MAAM,OAAO;AACzB,OAAOC,SAAS,MAAM,YAAY;AAClC,SAASC,QAAQ,QAAQ,gBAAgB;AACzC,SAASC,eAAe,QAAQ,yBAAyB;AACzD,SAASC,cAAc,QAAQ,+BAA+B;AAE9D,OAAOC,QAAQ,MAAM,YAAY;AACjC,SAASC,cAAc,EAAEC,gBAAgB,EAAEC,mBAAmB,EAAEC,cAAc,QAAQ,YAAY;AAElG,MAAMC,aAAa,GAAGA,CAAC;EAAEC,KAAK;EAAEC,cAAc;EAAEC;AAAgB,CAAC,KAAK;EACpE,MAAM;IAAEC,YAAY;IAAEC,cAAc;IAAEC,kBAAkB;IAAEC;EAAe,CAAC,GAAGN,KAAK;EAClF,MAAM;IAAEO,EAAE,EAAEC;EAAO,CAAC,GAAGhB,eAAe,CAAC,CAAC;EACxC,MAAMiB,SAAS,GAAGD,MAAM,GAAGX,mBAAmB,CAACQ,kBAAkB,CAAC,GAAG,EAAE;EACvE,MAAM;IAAEK,IAAI,EAAEC,QAAQ;IAAEC;EAAQ,CAAC,GAAGrB,QAAQ,CAACE,cAAc,CAACgB,SAAS,CAAC,EAAE;IACtEI,SAAS,EAAE;MAAEN,EAAE,EAAEC;IAAO,CAAC;IACzBM,IAAI,EAAE,CAACN;EACT,CAAC,CAAC;EACF,IAAII,OAAO,EAAE,OAAO,IAAI;EACxB,MAAMG,cAAc,GAAGpB,cAAc,CAACM,cAAc,EAAEG,cAAc,CAAC;EACrE,MAAMY,eAAe,GAAGpB,gBAAgB,CAACU,cAAc,EAAEN,KAAK,EAAEe,cAAc,EAAEb,eAAe,CAAC;EAChG,MAAMe,eAAe,GAAGnB,cAAc,CAACa,QAAQ,EAAEN,kBAAkB,CAAC;EAEpE,MAAMa,iBAAiB,GAAAC,aAAA,CAAAA,aAAA,KAAQH,eAAe,GAAKC,eAAe,CAAE;EAEpE,oBAAO5B,KAAA,CAAA+B,aAAA,CAAC1B,QAAQ;IAACsB,eAAe,EAAEE,iBAAkB;IAACf,YAAY,EAAEA;EAAa,CAAE,CAAC;AACrF,CAAC;AAEDJ,aAAa,CAACsB,SAAS,GAAG;EACxBrB,KAAK,EAAEV,SAAS,CAACgC,MAAM,CAACC,UAAU;EAClCtB,cAAc,EAAEX,SAAS,CAACkC,SAAS,CAAC,CAAClC,SAAS,CAACgC,MAAM,EAAEhC,SAAS,CAACmC,KAAK,CAAC,CAAC;EACxEvB,eAAe,EAAEZ,SAAS,CAACgC;AAC7B,CAAC;AAEDvB,aAAa,CAAC2B,YAAY,GAAG;EAC3BzB,cAAc,EAAE,CAAC,CAAC;EAClBC,eAAe,EAAE,CAAC;AACpB,CAAC;AAED,eAAeH,aAAa","ignoreList":[]}
|
|
@@ -0,0 +1,32 @@
|
|
|
1
|
+
import _extends from "@babel/runtime/helpers/extends";
|
|
2
|
+
import React from 'react';
|
|
3
|
+
import PropTypes from 'prop-types';
|
|
4
|
+
import GTMClickEvent from './GTMClickEvent';
|
|
5
|
+
const GTMClickEvents = ({
|
|
6
|
+
gtmEvents,
|
|
7
|
+
componentProps,
|
|
8
|
+
parentComponent
|
|
9
|
+
}) => gtmEvents.map((event, index) => {
|
|
10
|
+
const {
|
|
11
|
+
eventName
|
|
12
|
+
} = event;
|
|
13
|
+
const dynamicKey = [eventName, index].join('-');
|
|
14
|
+
return /*#__PURE__*/React.createElement(GTMClickEvent, _extends({
|
|
15
|
+
key: dynamicKey,
|
|
16
|
+
event: event,
|
|
17
|
+
componentProps: componentProps,
|
|
18
|
+
parentComponent: parentComponent
|
|
19
|
+
}, event));
|
|
20
|
+
});
|
|
21
|
+
GTMClickEvents.propTypes = {
|
|
22
|
+
gtmEvents: PropTypes.array,
|
|
23
|
+
componentProps: PropTypes.oneOfType([PropTypes.object, PropTypes.array]),
|
|
24
|
+
parentComponent: PropTypes.object
|
|
25
|
+
};
|
|
26
|
+
GTMClickEvents.defaultProps = {
|
|
27
|
+
gtmEvents: [],
|
|
28
|
+
componentProps: {},
|
|
29
|
+
parentComponent: {}
|
|
30
|
+
};
|
|
31
|
+
export default GTMClickEvents;
|
|
32
|
+
//# sourceMappingURL=GTMClickEvents.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"GTMClickEvents.js","names":["React","PropTypes","GTMClickEvent","GTMClickEvents","gtmEvents","componentProps","parentComponent","map","event","index","eventName","dynamicKey","join","createElement","_extends","key","propTypes","array","oneOfType","object","defaultProps"],"sources":["../../src/GoogleTagManagerEvent/GTMClickEvents.js"],"sourcesContent":["import React from 'react';\nimport PropTypes from 'prop-types';\nimport GTMClickEvent from './GTMClickEvent';\n\nconst GTMClickEvents = ({ gtmEvents, componentProps, parentComponent }) =>\n gtmEvents.map((event, index) => {\n const { eventName } = event;\n const dynamicKey = [eventName, index].join('-');\n\n return (\n <GTMClickEvent\n key={dynamicKey}\n event={event}\n componentProps={componentProps}\n parentComponent={parentComponent}\n {...event}\n />\n );\n });\n\nGTMClickEvents.propTypes = {\n gtmEvents: PropTypes.array,\n componentProps: PropTypes.oneOfType([PropTypes.object, PropTypes.array]),\n parentComponent: PropTypes.object\n};\n\nGTMClickEvents.defaultProps = {\n gtmEvents: [],\n componentProps: {},\n parentComponent: {}\n};\n\nexport default GTMClickEvents;\n"],"mappings":";AAAA,OAAOA,KAAK,MAAM,OAAO;AACzB,OAAOC,SAAS,MAAM,YAAY;AAClC,OAAOC,aAAa,MAAM,iBAAiB;AAE3C,MAAMC,cAAc,GAAGA,CAAC;EAAEC,SAAS;EAAEC,cAAc;EAAEC;AAAgB,CAAC,KACpEF,SAAS,CAACG,GAAG,CAAC,CAACC,KAAK,EAAEC,KAAK,KAAK;EAC9B,MAAM;IAAEC;EAAU,CAAC,GAAGF,KAAK;EAC3B,MAAMG,UAAU,GAAG,CAACD,SAAS,EAAED,KAAK,CAAC,CAACG,IAAI,CAAC,GAAG,CAAC;EAE/C,oBACEZ,KAAA,CAAAa,aAAA,CAACX,aAAa,EAAAY,QAAA;IACZC,GAAG,EAAEJ,UAAW;IAChBH,KAAK,EAAEA,KAAM;IACbH,cAAc,EAAEA,cAAe;IAC/BC,eAAe,EAAEA;EAAgB,GAC7BE,KAAK,CACV,CAAC;AAEN,CAAC,CAAC;AAEJL,cAAc,CAACa,SAAS,GAAG;EACzBZ,SAAS,EAAEH,SAAS,CAACgB,KAAK;EAC1BZ,cAAc,EAAEJ,SAAS,CAACiB,SAAS,CAAC,CAACjB,SAAS,CAACkB,MAAM,EAAElB,SAAS,CAACgB,KAAK,CAAC,CAAC;EACxEX,eAAe,EAAEL,SAAS,CAACkB;AAC7B,CAAC;AAEDhB,cAAc,CAACiB,YAAY,GAAG;EAC5BhB,SAAS,EAAE,EAAE;EACbC,cAAc,EAAE,CAAC,CAAC;EAClBC,eAAe,EAAE,CAAC;AACpB,CAAC;AAED,eAAeH,cAAc","ignoreList":[]}
|
|
@@ -0,0 +1,38 @@
|
|
|
1
|
+
import React, { useState, useEffect } from 'react';
|
|
2
|
+
import PropTypes from 'prop-types';
|
|
3
|
+
import { Waypoint } from 'react-waypoint';
|
|
4
|
+
import { pushToDataLayer } from '../helpers';
|
|
5
|
+
import { IN_VIEW, ON_SUCCESS } from '../constants';
|
|
6
|
+
const GTMEvent = ({
|
|
7
|
+
dataLayerObject,
|
|
8
|
+
eventTrigger,
|
|
9
|
+
currentLocation,
|
|
10
|
+
handleOnSuccess
|
|
11
|
+
}) => {
|
|
12
|
+
const [shouldPushLayer, setShouldPushLayer] = useState(false);
|
|
13
|
+
const isViewEvent = eventTrigger === IN_VIEW;
|
|
14
|
+
const isOnSuccess = eventTrigger === ON_SUCCESS && !!handleOnSuccess;
|
|
15
|
+
useEffect(() => {
|
|
16
|
+
setShouldPushLayer(true);
|
|
17
|
+
}, [currentLocation]);
|
|
18
|
+
const pushDataLayer = () => {
|
|
19
|
+
pushToDataLayer(dataLayerObject);
|
|
20
|
+
setShouldPushLayer(false);
|
|
21
|
+
if (isOnSuccess) handleOnSuccess();
|
|
22
|
+
};
|
|
23
|
+
if (!isViewEvent && shouldPushLayer) {
|
|
24
|
+
pushDataLayer();
|
|
25
|
+
return null;
|
|
26
|
+
}
|
|
27
|
+
return isViewEvent && shouldPushLayer ? /*#__PURE__*/React.createElement(Waypoint, {
|
|
28
|
+
onEnter: pushDataLayer
|
|
29
|
+
}) : null;
|
|
30
|
+
};
|
|
31
|
+
GTMEvent.propTypes = {
|
|
32
|
+
handleOnSuccess: PropTypes.func.isRequired,
|
|
33
|
+
dataLayerObject: PropTypes.object.isRequired,
|
|
34
|
+
eventTrigger: PropTypes.string.isRequired,
|
|
35
|
+
currentLocation: PropTypes.string.isRequired
|
|
36
|
+
};
|
|
37
|
+
export default GTMEvent;
|
|
38
|
+
//# sourceMappingURL=GTMEvent.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"GTMEvent.js","names":["React","useState","useEffect","PropTypes","Waypoint","pushToDataLayer","IN_VIEW","ON_SUCCESS","GTMEvent","dataLayerObject","eventTrigger","currentLocation","handleOnSuccess","shouldPushLayer","setShouldPushLayer","isViewEvent","isOnSuccess","pushDataLayer","createElement","onEnter","propTypes","func","isRequired","object","string"],"sources":["../../src/GoogleTagManagerEvent/GTMEvent.js"],"sourcesContent":["import React, { useState, useEffect } from 'react';\nimport PropTypes from 'prop-types';\nimport { Waypoint } from 'react-waypoint';\nimport { pushToDataLayer } from '../helpers';\nimport { IN_VIEW, ON_SUCCESS } from '../constants';\n\nconst GTMEvent = ({ dataLayerObject, eventTrigger, currentLocation, handleOnSuccess }) => {\n const [shouldPushLayer, setShouldPushLayer] = useState(false);\n const isViewEvent = eventTrigger === IN_VIEW;\n const isOnSuccess = eventTrigger === ON_SUCCESS && !!handleOnSuccess;\n\n useEffect(() => {\n setShouldPushLayer(true);\n }, [currentLocation]);\n\n const pushDataLayer = () => {\n pushToDataLayer(dataLayerObject);\n setShouldPushLayer(false);\n if (isOnSuccess) handleOnSuccess();\n };\n\n if (!isViewEvent && shouldPushLayer) {\n pushDataLayer();\n return null;\n }\n\n return isViewEvent && shouldPushLayer ? <Waypoint onEnter={pushDataLayer} /> : null;\n};\n\nGTMEvent.propTypes = {\n handleOnSuccess: PropTypes.func.isRequired,\n dataLayerObject: PropTypes.object.isRequired,\n eventTrigger: PropTypes.string.isRequired,\n currentLocation: PropTypes.string.isRequired\n};\n\nexport default GTMEvent;\n"],"mappings":"AAAA,OAAOA,KAAK,IAAIC,QAAQ,EAAEC,SAAS,QAAQ,OAAO;AAClD,OAAOC,SAAS,MAAM,YAAY;AAClC,SAASC,QAAQ,QAAQ,gBAAgB;AACzC,SAASC,eAAe,QAAQ,YAAY;AAC5C,SAASC,OAAO,EAAEC,UAAU,QAAQ,cAAc;AAElD,MAAMC,QAAQ,GAAGA,CAAC;EAAEC,eAAe;EAAEC,YAAY;EAAEC,eAAe;EAAEC;AAAgB,CAAC,KAAK;EACxF,MAAM,CAACC,eAAe,EAAEC,kBAAkB,CAAC,GAAGb,QAAQ,CAAC,KAAK,CAAC;EAC7D,MAAMc,WAAW,GAAGL,YAAY,KAAKJ,OAAO;EAC5C,MAAMU,WAAW,GAAGN,YAAY,KAAKH,UAAU,IAAI,CAAC,CAACK,eAAe;EAEpEV,SAAS,CAAC,MAAM;IACdY,kBAAkB,CAAC,IAAI,CAAC;EAC1B,CAAC,EAAE,CAACH,eAAe,CAAC,CAAC;EAErB,MAAMM,aAAa,GAAGA,CAAA,KAAM;IAC1BZ,eAAe,CAACI,eAAe,CAAC;IAChCK,kBAAkB,CAAC,KAAK,CAAC;IACzB,IAAIE,WAAW,EAAEJ,eAAe,CAAC,CAAC;EACpC,CAAC;EAED,IAAI,CAACG,WAAW,IAAIF,eAAe,EAAE;IACnCI,aAAa,CAAC,CAAC;IACf,OAAO,IAAI;EACb;EAEA,OAAOF,WAAW,IAAIF,eAAe,gBAAGb,KAAA,CAAAkB,aAAA,CAACd,QAAQ;IAACe,OAAO,EAAEF;EAAc,CAAE,CAAC,GAAG,IAAI;AACrF,CAAC;AAEDT,QAAQ,CAACY,SAAS,GAAG;EACnBR,eAAe,EAAET,SAAS,CAACkB,IAAI,CAACC,UAAU;EAC1Cb,eAAe,EAAEN,SAAS,CAACoB,MAAM,CAACD,UAAU;EAC5CZ,YAAY,EAAEP,SAAS,CAACqB,MAAM,CAACF,UAAU;EACzCX,eAAe,EAAER,SAAS,CAACqB,MAAM,CAACF;AACpC,CAAC;AAED,eAAed,QAAQ","ignoreList":[]}
|
|
@@ -0,0 +1,92 @@
|
|
|
1
|
+
import _extends from "@babel/runtime/helpers/extends";
|
|
2
|
+
import _objectWithoutProperties from "@babel/runtime/helpers/objectWithoutProperties";
|
|
3
|
+
const _excluded = ["propsToDisplay"];
|
|
4
|
+
import React, { useContext } from 'react';
|
|
5
|
+
import PropTypes from 'prop-types';
|
|
6
|
+
import { useQuery } from '@apollo/client';
|
|
7
|
+
import { getSingleEntitySchema, buildPropsQuery } from '@blaze-cms/react-page-builder';
|
|
8
|
+
import { MainContext } from '@blaze-cms/nextjs-components';
|
|
9
|
+
import GTMEventRender from './GTMEventRender';
|
|
10
|
+
import { getRenderProps, getIdsToUse, buildPropsToDisplayArray } from '../helpers';
|
|
11
|
+
import { GTM_EVENT_FACTORY } from '../constants';
|
|
12
|
+
const GTMEventFactory = ({
|
|
13
|
+
parent,
|
|
14
|
+
gtmEvents,
|
|
15
|
+
parentData,
|
|
16
|
+
clickId,
|
|
17
|
+
parentComponent
|
|
18
|
+
}) => {
|
|
19
|
+
const {
|
|
20
|
+
isPreview
|
|
21
|
+
} = useContext(MainContext);
|
|
22
|
+
const [{
|
|
23
|
+
itemEntity = parent.itemEntity
|
|
24
|
+
} = {}] = parentData || [];
|
|
25
|
+
const {
|
|
26
|
+
data,
|
|
27
|
+
error,
|
|
28
|
+
loading
|
|
29
|
+
} = useQuery(getSingleEntitySchema, {
|
|
30
|
+
variables: {
|
|
31
|
+
id: itemEntity
|
|
32
|
+
}
|
|
33
|
+
});
|
|
34
|
+
if (loading || error || !data) return null;
|
|
35
|
+
return gtmEvents.map((_ref, i) => {
|
|
36
|
+
let {
|
|
37
|
+
propsToDisplay
|
|
38
|
+
} = _ref,
|
|
39
|
+
eventProps = _objectWithoutProperties(_ref, _excluded);
|
|
40
|
+
const hasNoPropsToDisplay = !propsToDisplay || !propsToDisplay.length;
|
|
41
|
+
const propsToDisplayArr = buildPropsToDisplayArray(propsToDisplay);
|
|
42
|
+
const extraProps = hasNoPropsToDisplay ? '' : buildPropsQuery(data, propsToDisplayArr);
|
|
43
|
+
const shouldUseParentData = !clickId && parentData && parentData.length;
|
|
44
|
+
const itemIdToUse = clickId || parent.itemId;
|
|
45
|
+
const itemId = shouldUseParentData ? getIdsToUse(parentData) : itemIdToUse;
|
|
46
|
+
const shouldUseMultiQuery = Array.isArray(itemId);
|
|
47
|
+
const {
|
|
48
|
+
action,
|
|
49
|
+
actionKey
|
|
50
|
+
} = getRenderProps(extraProps, isPreview, data, shouldUseMultiQuery);
|
|
51
|
+
const dynamicKey = `${GTM_EVENT_FACTORY}${i}`;
|
|
52
|
+
const queryVariables = shouldUseMultiQuery ? {
|
|
53
|
+
variables: {
|
|
54
|
+
where: {
|
|
55
|
+
id: {
|
|
56
|
+
_in: itemId
|
|
57
|
+
}
|
|
58
|
+
}
|
|
59
|
+
},
|
|
60
|
+
skip: hasNoPropsToDisplay
|
|
61
|
+
} : {
|
|
62
|
+
variables: {
|
|
63
|
+
id: itemId
|
|
64
|
+
},
|
|
65
|
+
skip: hasNoPropsToDisplay
|
|
66
|
+
};
|
|
67
|
+
return /*#__PURE__*/React.createElement(GTMEventRender, _extends({
|
|
68
|
+
key: dynamicKey,
|
|
69
|
+
action: action,
|
|
70
|
+
actionKey: actionKey,
|
|
71
|
+
propsToDisplay: propsToDisplay,
|
|
72
|
+
id: itemId,
|
|
73
|
+
queryVariables: queryVariables,
|
|
74
|
+
parentComponent: parentComponent
|
|
75
|
+
}, eventProps));
|
|
76
|
+
});
|
|
77
|
+
};
|
|
78
|
+
GTMEventFactory.propTypes = {
|
|
79
|
+
parent: PropTypes.object.isRequired,
|
|
80
|
+
clickId: PropTypes.string,
|
|
81
|
+
gtmEvents: PropTypes.array,
|
|
82
|
+
parentData: PropTypes.oneOfType([PropTypes.object, PropTypes.array]),
|
|
83
|
+
parentComponent: PropTypes.object
|
|
84
|
+
};
|
|
85
|
+
GTMEventFactory.defaultProps = {
|
|
86
|
+
clickId: null,
|
|
87
|
+
gtmEvents: [],
|
|
88
|
+
parentData: null,
|
|
89
|
+
parentComponent: {}
|
|
90
|
+
};
|
|
91
|
+
export default GTMEventFactory;
|
|
92
|
+
//# sourceMappingURL=GTMEventFactory.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"GTMEventFactory.js","names":["React","useContext","PropTypes","useQuery","getSingleEntitySchema","buildPropsQuery","MainContext","GTMEventRender","getRenderProps","getIdsToUse","buildPropsToDisplayArray","GTM_EVENT_FACTORY","GTMEventFactory","parent","gtmEvents","parentData","clickId","parentComponent","isPreview","itemEntity","data","error","loading","variables","id","map","_ref","i","propsToDisplay","eventProps","_objectWithoutProperties","_excluded","hasNoPropsToDisplay","length","propsToDisplayArr","extraProps","shouldUseParentData","itemIdToUse","itemId","shouldUseMultiQuery","Array","isArray","action","actionKey","dynamicKey","queryVariables","where","_in","skip","createElement","_extends","key","propTypes","object","isRequired","string","array","oneOfType","defaultProps"],"sources":["../../src/GoogleTagManagerEvent/GTMEventFactory.js"],"sourcesContent":["import React, { useContext } from 'react';\nimport PropTypes from 'prop-types';\nimport { useQuery } from '@apollo/client';\nimport { getSingleEntitySchema, buildPropsQuery } from '@blaze-cms/react-page-builder';\nimport { MainContext } from '@blaze-cms/nextjs-components';\nimport GTMEventRender from './GTMEventRender';\nimport { getRenderProps, getIdsToUse, buildPropsToDisplayArray } from '../helpers';\nimport { GTM_EVENT_FACTORY } from '../constants';\n\nconst GTMEventFactory = ({ parent, gtmEvents, parentData, clickId, parentComponent }) => {\n const { isPreview } = useContext(MainContext);\n const [{ itemEntity = parent.itemEntity } = {}] = parentData || [];\n const { data, error, loading } = useQuery(getSingleEntitySchema, {\n variables: { id: itemEntity }\n });\n\n if (loading || error || !data) return null;\n\n return gtmEvents.map(({ propsToDisplay, ...eventProps }, i) => {\n const hasNoPropsToDisplay = !propsToDisplay || !propsToDisplay.length;\n const propsToDisplayArr = buildPropsToDisplayArray(propsToDisplay);\n const extraProps = hasNoPropsToDisplay ? '' : buildPropsQuery(data, propsToDisplayArr);\n const shouldUseParentData = !clickId && parentData && parentData.length;\n const itemIdToUse = clickId || parent.itemId;\n const itemId = shouldUseParentData ? getIdsToUse(parentData) : itemIdToUse;\n const shouldUseMultiQuery = Array.isArray(itemId);\n const { action, actionKey } = getRenderProps(extraProps, isPreview, data, shouldUseMultiQuery);\n const dynamicKey = `${GTM_EVENT_FACTORY}${i}`;\n const queryVariables = shouldUseMultiQuery\n ? {\n variables: { where: { id: { _in: itemId } } },\n skip: hasNoPropsToDisplay\n }\n : {\n variables: { id: itemId },\n skip: hasNoPropsToDisplay\n };\n\n return (\n <GTMEventRender\n key={dynamicKey}\n action={action}\n actionKey={actionKey}\n propsToDisplay={propsToDisplay}\n id={itemId}\n queryVariables={queryVariables}\n parentComponent={parentComponent}\n {...eventProps}\n />\n );\n });\n};\n\nGTMEventFactory.propTypes = {\n parent: PropTypes.object.isRequired,\n clickId: PropTypes.string,\n gtmEvents: PropTypes.array,\n parentData: PropTypes.oneOfType([PropTypes.object, PropTypes.array]),\n parentComponent: PropTypes.object\n};\n\nGTMEventFactory.defaultProps = {\n clickId: null,\n gtmEvents: [],\n parentData: null,\n parentComponent: {}\n};\n\nexport default GTMEventFactory;\n"],"mappings":"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","ignoreList":[]}
|
|
@@ -0,0 +1,81 @@
|
|
|
1
|
+
import _defineProperty from "@babel/runtime/helpers/defineProperty";
|
|
2
|
+
import _objectWithoutProperties from "@babel/runtime/helpers/objectWithoutProperties";
|
|
3
|
+
const _excluded = ["router", "action", "actionKey", "queryVariables", "parentComponent", "userPropsToDisplay", "handleOnSuccess"];
|
|
4
|
+
function ownKeys(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e); r && (o = o.filter(function (r) { return Object.getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; }
|
|
5
|
+
function _objectSpread(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys(Object(t), !0).forEach(function (r) { _defineProperty(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; }
|
|
6
|
+
import React, { useState } from 'react';
|
|
7
|
+
import PropTypes from 'prop-types';
|
|
8
|
+
import { useQuery } from '@apollo/client';
|
|
9
|
+
import { getCurrentUser } from '@blaze-cms/react-page-builder';
|
|
10
|
+
import { withRouter } from 'next/router';
|
|
11
|
+
import GTMEvent from './GTMEvent';
|
|
12
|
+
import { buildDataLayer, buildNestedEvent, buildUserQueryProps, buildUserLayer } from '../helpers';
|
|
13
|
+
const GTMEventRender = _ref => {
|
|
14
|
+
let {
|
|
15
|
+
router,
|
|
16
|
+
action,
|
|
17
|
+
actionKey,
|
|
18
|
+
queryVariables,
|
|
19
|
+
parentComponent,
|
|
20
|
+
userPropsToDisplay,
|
|
21
|
+
handleOnSuccess
|
|
22
|
+
} = _ref,
|
|
23
|
+
eventProps = _objectWithoutProperties(_ref, _excluded);
|
|
24
|
+
const {
|
|
25
|
+
asPath
|
|
26
|
+
} = router;
|
|
27
|
+
const [currentLocation, setCurrentLocation] = useState('');
|
|
28
|
+
const {
|
|
29
|
+
data = {},
|
|
30
|
+
error,
|
|
31
|
+
loading
|
|
32
|
+
} = useQuery(action, queryVariables);
|
|
33
|
+
const hasUserProps = userPropsToDisplay && userPropsToDisplay.length;
|
|
34
|
+
const userProps = hasUserProps ? buildUserQueryProps(userPropsToDisplay) : '';
|
|
35
|
+
const {
|
|
36
|
+
data: userData,
|
|
37
|
+
loading: userLoading
|
|
38
|
+
} = useQuery(getCurrentUser(userProps), {
|
|
39
|
+
variables: {},
|
|
40
|
+
skip: !hasUserProps
|
|
41
|
+
});
|
|
42
|
+
if (loading || userLoading || error) return null;
|
|
43
|
+
const gtmData = data.entityData || data[actionKey];
|
|
44
|
+
if (currentLocation !== asPath) {
|
|
45
|
+
setCurrentLocation(asPath);
|
|
46
|
+
return null;
|
|
47
|
+
}
|
|
48
|
+
const {
|
|
49
|
+
eventTrigger,
|
|
50
|
+
propsToDisplay,
|
|
51
|
+
eventEcommerce
|
|
52
|
+
} = eventProps;
|
|
53
|
+
const dataLayerProps = buildDataLayer(gtmData, propsToDisplay);
|
|
54
|
+
const dataLayerObject = buildNestedEvent(eventEcommerce, eventProps, dataLayerProps, parentComponent);
|
|
55
|
+
const userLayerObject = buildUserLayer(userData, userPropsToDisplay);
|
|
56
|
+
const extendedDataLayer = _objectSpread(_objectSpread({}, dataLayerObject), userLayerObject);
|
|
57
|
+
return /*#__PURE__*/React.createElement(GTMEvent, {
|
|
58
|
+
dataLayerObject: extendedDataLayer,
|
|
59
|
+
eventTrigger: eventTrigger,
|
|
60
|
+
currentLocation: currentLocation,
|
|
61
|
+
handleOnSuccess: handleOnSuccess
|
|
62
|
+
});
|
|
63
|
+
};
|
|
64
|
+
GTMEventRender.propTypes = {
|
|
65
|
+
userPropsToDisplay: PropTypes.array,
|
|
66
|
+
router: PropTypes.object.isRequired,
|
|
67
|
+
action: PropTypes.object.isRequired,
|
|
68
|
+
actionKey: PropTypes.string.isRequired,
|
|
69
|
+
queryVariables: PropTypes.object.isRequired,
|
|
70
|
+
parentComponent: PropTypes.object.isRequired,
|
|
71
|
+
handleOnSuccess: PropTypes.func
|
|
72
|
+
};
|
|
73
|
+
GTMEventRender.defaultProps = {
|
|
74
|
+
userPropsToDisplay: [],
|
|
75
|
+
handleOnSuccess: () => {}
|
|
76
|
+
};
|
|
77
|
+
GTMEventRender.defaultProps = {
|
|
78
|
+
userPropsToDisplay: []
|
|
79
|
+
};
|
|
80
|
+
export default withRouter(GTMEventRender);
|
|
81
|
+
//# sourceMappingURL=GTMEventRender.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"GTMEventRender.js","names":["React","useState","PropTypes","useQuery","getCurrentUser","withRouter","GTMEvent","buildDataLayer","buildNestedEvent","buildUserQueryProps","buildUserLayer","GTMEventRender","_ref","router","action","actionKey","queryVariables","parentComponent","userPropsToDisplay","handleOnSuccess","eventProps","_objectWithoutProperties","_excluded","asPath","currentLocation","setCurrentLocation","data","error","loading","hasUserProps","length","userProps","userData","userLoading","variables","skip","gtmData","entityData","eventTrigger","propsToDisplay","eventEcommerce","dataLayerProps","dataLayerObject","userLayerObject","extendedDataLayer","_objectSpread","createElement","propTypes","array","object","isRequired","string","func","defaultProps"],"sources":["../../src/GoogleTagManagerEvent/GTMEventRender.js"],"sourcesContent":["import React, { useState } from 'react';\nimport PropTypes from 'prop-types';\nimport { useQuery } from '@apollo/client';\nimport { getCurrentUser } from '@blaze-cms/react-page-builder';\nimport { withRouter } from 'next/router';\nimport GTMEvent from './GTMEvent';\nimport { buildDataLayer, buildNestedEvent, buildUserQueryProps, buildUserLayer } from '../helpers';\n\nconst GTMEventRender = ({\n router,\n action,\n actionKey,\n queryVariables,\n parentComponent,\n userPropsToDisplay,\n handleOnSuccess,\n ...eventProps\n}) => {\n const { asPath } = router;\n const [currentLocation, setCurrentLocation] = useState('');\n const { data = {}, error, loading } = useQuery(action, queryVariables);\n const hasUserProps = userPropsToDisplay && userPropsToDisplay.length;\n const userProps = hasUserProps ? buildUserQueryProps(userPropsToDisplay) : '';\n const { data: userData, loading: userLoading } = useQuery(getCurrentUser(userProps), {\n variables: {},\n skip: !hasUserProps\n });\n\n if (loading || userLoading || error) return null;\n const gtmData = data.entityData || data[actionKey];\n\n if (currentLocation !== asPath) {\n setCurrentLocation(asPath);\n return null;\n }\n\n const { eventTrigger, propsToDisplay, eventEcommerce } = eventProps;\n const dataLayerProps = buildDataLayer(gtmData, propsToDisplay);\n\n const dataLayerObject = buildNestedEvent(\n eventEcommerce,\n eventProps,\n dataLayerProps,\n parentComponent\n );\n const userLayerObject = buildUserLayer(userData, userPropsToDisplay);\n const extendedDataLayer = { ...dataLayerObject, ...userLayerObject };\n\n return (\n <GTMEvent\n dataLayerObject={extendedDataLayer}\n eventTrigger={eventTrigger}\n currentLocation={currentLocation}\n handleOnSuccess={handleOnSuccess}\n />\n );\n};\n\nGTMEventRender.propTypes = {\n userPropsToDisplay: PropTypes.array,\n router: PropTypes.object.isRequired,\n action: PropTypes.object.isRequired,\n actionKey: PropTypes.string.isRequired,\n queryVariables: PropTypes.object.isRequired,\n parentComponent: PropTypes.object.isRequired,\n handleOnSuccess: PropTypes.func\n};\n\nGTMEventRender.defaultProps = {\n userPropsToDisplay: [],\n handleOnSuccess: () => {}\n};\n\nGTMEventRender.defaultProps = {\n userPropsToDisplay: []\n};\n\nexport default withRouter(GTMEventRender);\n"],"mappings":"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","ignoreList":[]}
|
|
@@ -0,0 +1,40 @@
|
|
|
1
|
+
import _extends from "@babel/runtime/helpers/extends";
|
|
2
|
+
import _objectWithoutProperties from "@babel/runtime/helpers/objectWithoutProperties";
|
|
3
|
+
const _excluded = ["gtmEvents", "clickState", "clickId"];
|
|
4
|
+
import React from 'react';
|
|
5
|
+
import PropTypes from 'prop-types';
|
|
6
|
+
import GTMClickEvents from './GTMClickEvents';
|
|
7
|
+
import GTMEventFactory from './GTMEventFactory';
|
|
8
|
+
import { filterGtmEvents } from '../helpers';
|
|
9
|
+
const GTMEventSwitch = _ref => {
|
|
10
|
+
let {
|
|
11
|
+
gtmEvents,
|
|
12
|
+
clickState,
|
|
13
|
+
clickId
|
|
14
|
+
} = _ref,
|
|
15
|
+
props = _objectWithoutProperties(_ref, _excluded);
|
|
16
|
+
if (typeof window === 'undefined' || !gtmEvents.length) return null;
|
|
17
|
+
const {
|
|
18
|
+
clickEvents,
|
|
19
|
+
regularEvents
|
|
20
|
+
} = filterGtmEvents(gtmEvents);
|
|
21
|
+
const GTMClickFactory = clickId ? GTMEventFactory : GTMClickEvents;
|
|
22
|
+
return clickState ? /*#__PURE__*/React.createElement(GTMClickFactory, _extends({
|
|
23
|
+
gtmEvents: clickEvents,
|
|
24
|
+
clickId: clickId
|
|
25
|
+
}, props)) : /*#__PURE__*/React.createElement(GTMEventFactory, _extends({
|
|
26
|
+
gtmEvents: regularEvents
|
|
27
|
+
}, props));
|
|
28
|
+
};
|
|
29
|
+
GTMEventSwitch.propTypes = {
|
|
30
|
+
clickId: PropTypes.string,
|
|
31
|
+
gtmEvents: PropTypes.array,
|
|
32
|
+
clickState: PropTypes.bool
|
|
33
|
+
};
|
|
34
|
+
GTMEventSwitch.defaultProps = {
|
|
35
|
+
clickId: null,
|
|
36
|
+
gtmEvents: [],
|
|
37
|
+
clickState: false
|
|
38
|
+
};
|
|
39
|
+
export default GTMEventSwitch;
|
|
40
|
+
//# sourceMappingURL=GTMEventSwitch.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"GTMEventSwitch.js","names":["React","PropTypes","GTMClickEvents","GTMEventFactory","filterGtmEvents","GTMEventSwitch","_ref","gtmEvents","clickState","clickId","props","_objectWithoutProperties","_excluded","window","length","clickEvents","regularEvents","GTMClickFactory","createElement","_extends","propTypes","string","array","bool","defaultProps"],"sources":["../../src/GoogleTagManagerEvent/GTMEventSwitch.js"],"sourcesContent":["import React from 'react';\nimport PropTypes from 'prop-types';\nimport GTMClickEvents from './GTMClickEvents';\nimport GTMEventFactory from './GTMEventFactory';\nimport { filterGtmEvents } from '../helpers';\n\nconst GTMEventSwitch = ({ gtmEvents, clickState, clickId, ...props }) => {\n if (typeof window === 'undefined' || !gtmEvents.length) return null;\n const { clickEvents, regularEvents } = filterGtmEvents(gtmEvents);\n const GTMClickFactory = clickId ? GTMEventFactory : GTMClickEvents;\n\n return clickState ? (\n <GTMClickFactory gtmEvents={clickEvents} clickId={clickId} {...props} />\n ) : (\n <GTMEventFactory gtmEvents={regularEvents} {...props} />\n );\n};\n\nGTMEventSwitch.propTypes = {\n clickId: PropTypes.string,\n gtmEvents: PropTypes.array,\n clickState: PropTypes.bool\n};\n\nGTMEventSwitch.defaultProps = {\n clickId: null,\n gtmEvents: [],\n clickState: false\n};\n\nexport default GTMEventSwitch;\n"],"mappings":";;;AAAA,OAAOA,KAAK,MAAM,OAAO;AACzB,OAAOC,SAAS,MAAM,YAAY;AAClC,OAAOC,cAAc,MAAM,kBAAkB;AAC7C,OAAOC,eAAe,MAAM,mBAAmB;AAC/C,SAASC,eAAe,QAAQ,YAAY;AAE5C,MAAMC,cAAc,GAAGC,IAAA,IAAkD;EAAA,IAAjD;MAAEC,SAAS;MAAEC,UAAU;MAAEC;IAAkB,CAAC,GAAAH,IAAA;IAAPI,KAAK,GAAAC,wBAAA,CAAAL,IAAA,EAAAM,SAAA;EAChE,IAAI,OAAOC,MAAM,KAAK,WAAW,IAAI,CAACN,SAAS,CAACO,MAAM,EAAE,OAAO,IAAI;EACnE,MAAM;IAAEC,WAAW;IAAEC;EAAc,CAAC,GAAGZ,eAAe,CAACG,SAAS,CAAC;EACjE,MAAMU,eAAe,GAAGR,OAAO,GAAGN,eAAe,GAAGD,cAAc;EAElE,OAAOM,UAAU,gBACfR,KAAA,CAAAkB,aAAA,CAACD,eAAe,EAAAE,QAAA;IAACZ,SAAS,EAAEQ,WAAY;IAACN,OAAO,EAAEA;EAAQ,GAAKC,KAAK,CAAG,CAAC,gBAExEV,KAAA,CAAAkB,aAAA,CAACf,eAAe,EAAAgB,QAAA;IAACZ,SAAS,EAAES;EAAc,GAAKN,KAAK,CAAG,CACxD;AACH,CAAC;AAEDL,cAAc,CAACe,SAAS,GAAG;EACzBX,OAAO,EAAER,SAAS,CAACoB,MAAM;EACzBd,SAAS,EAAEN,SAAS,CAACqB,KAAK;EAC1Bd,UAAU,EAAEP,SAAS,CAACsB;AACxB,CAAC;AAEDlB,cAAc,CAACmB,YAAY,GAAG;EAC5Bf,OAAO,EAAE,IAAI;EACbF,SAAS,EAAE,EAAE;EACbC,UAAU,EAAE;AACd,CAAC;AAED,eAAeH,cAAc","ignoreList":[]}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","names":["GTMEventSwitch"],"sources":["../../src/GoogleTagManagerEvent/index.js"],"sourcesContent":["import GTMEventSwitch from './GTMEventSwitch';\n\nexport default GTMEventSwitch;\n"],"mappings":"AAAA,OAAOA,cAAc,MAAM,kBAAkB;AAE7C,eAAeA,cAAc","ignoreList":[]}
|
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
const EVENT = 'event';
|
|
2
|
+
const ON_LOAD = 'onLoad';
|
|
3
|
+
const ON_CLICK = 'onClick';
|
|
4
|
+
const IN_VIEW = 'inView';
|
|
5
|
+
const ON_SUCCESS = 'onSuccess';
|
|
6
|
+
const PAGE_VIEW = 'pageView';
|
|
7
|
+
const ECOMMERCE = 'ecommerce';
|
|
8
|
+
const GTM_PROPS = [{
|
|
9
|
+
key: 'eventAction'
|
|
10
|
+
}, {
|
|
11
|
+
key: 'eventLabel'
|
|
12
|
+
}, {
|
|
13
|
+
key: 'eventCategory'
|
|
14
|
+
}, {
|
|
15
|
+
key: 'eventName',
|
|
16
|
+
label: 'event'
|
|
17
|
+
}];
|
|
18
|
+
const GTM_EVENT_NAMES = {
|
|
19
|
+
productImpresion: 'impressions',
|
|
20
|
+
productDetailImpression: 'detail',
|
|
21
|
+
productClick: 'click',
|
|
22
|
+
promotionClick: 'promotionClick'
|
|
23
|
+
};
|
|
24
|
+
const GTM_EVENT_FACTORY = 'GtmEventFactory';
|
|
25
|
+
const PLUGIN_NAME = 'gtm-fe';
|
|
26
|
+
const PRODUCTS = 'products';
|
|
27
|
+
export { PLUGIN_NAME, EVENT, ECOMMERCE, GTM_PROPS, GTM_EVENT_NAMES, GTM_EVENT_FACTORY, ON_CLICK, IN_VIEW, ON_SUCCESS, ON_LOAD, PRODUCTS, PAGE_VIEW };
|
|
28
|
+
//# sourceMappingURL=constants.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"constants.js","names":["EVENT","ON_LOAD","ON_CLICK","IN_VIEW","ON_SUCCESS","PAGE_VIEW","ECOMMERCE","GTM_PROPS","key","label","GTM_EVENT_NAMES","productImpresion","productDetailImpression","productClick","promotionClick","GTM_EVENT_FACTORY","PLUGIN_NAME","PRODUCTS"],"sources":["../src/constants.js"],"sourcesContent":["const EVENT = 'event';\nconst ON_LOAD = 'onLoad';\nconst ON_CLICK = 'onClick';\nconst IN_VIEW = 'inView';\nconst ON_SUCCESS = 'onSuccess';\nconst PAGE_VIEW = 'pageView';\nconst ECOMMERCE = 'ecommerce';\nconst GTM_PROPS = [\n { key: 'eventAction' },\n { key: 'eventLabel' },\n { key: 'eventCategory' },\n { key: 'eventName', label: 'event' }\n];\nconst GTM_EVENT_NAMES = {\n productImpresion: 'impressions',\n productDetailImpression: 'detail',\n productClick: 'click',\n promotionClick: 'promotionClick'\n};\n\nconst GTM_EVENT_FACTORY = 'GtmEventFactory';\nconst PLUGIN_NAME = 'gtm-fe';\nconst PRODUCTS = 'products';\n\nexport {\n PLUGIN_NAME,\n EVENT,\n ECOMMERCE,\n GTM_PROPS,\n GTM_EVENT_NAMES,\n GTM_EVENT_FACTORY,\n ON_CLICK,\n IN_VIEW,\n ON_SUCCESS,\n ON_LOAD,\n PRODUCTS,\n PAGE_VIEW\n};\n"],"mappings":"AAAA,MAAMA,KAAK,GAAG,OAAO;AACrB,MAAMC,OAAO,GAAG,QAAQ;AACxB,MAAMC,QAAQ,GAAG,SAAS;AAC1B,MAAMC,OAAO,GAAG,QAAQ;AACxB,MAAMC,UAAU,GAAG,WAAW;AAC9B,MAAMC,SAAS,GAAG,UAAU;AAC5B,MAAMC,SAAS,GAAG,WAAW;AAC7B,MAAMC,SAAS,GAAG,CAChB;EAAEC,GAAG,EAAE;AAAc,CAAC,EACtB;EAAEA,GAAG,EAAE;AAAa,CAAC,EACrB;EAAEA,GAAG,EAAE;AAAgB,CAAC,EACxB;EAAEA,GAAG,EAAE,WAAW;EAAEC,KAAK,EAAE;AAAQ,CAAC,CACrC;AACD,MAAMC,eAAe,GAAG;EACtBC,gBAAgB,EAAE,aAAa;EAC/BC,uBAAuB,EAAE,QAAQ;EACjCC,YAAY,EAAE,OAAO;EACrBC,cAAc,EAAE;AAClB,CAAC;AAED,MAAMC,iBAAiB,GAAG,iBAAiB;AAC3C,MAAMC,WAAW,GAAG,QAAQ;AAC5B,MAAMC,QAAQ,GAAG,UAAU;AAE3B,SACED,WAAW,EACXhB,KAAK,EACLM,SAAS,EACTC,SAAS,EACTG,eAAe,EACfK,iBAAiB,EACjBb,QAAQ,EACRC,OAAO,EACPC,UAAU,EACVH,OAAO,EACPgB,QAAQ,EACRZ,SAAS","ignoreList":[]}
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
import { getCLS, getFID, getLCP } from 'web-vitals';
|
|
2
|
+
import pushToDataLayer from './push-to-data-layer';
|
|
3
|
+
const buildAndPushWebVitals = () => {
|
|
4
|
+
getCLS(reportHandler);
|
|
5
|
+
getFID(reportHandler);
|
|
6
|
+
getLCP(reportHandler);
|
|
7
|
+
};
|
|
8
|
+
const reportHandler = ({
|
|
9
|
+
name,
|
|
10
|
+
delta,
|
|
11
|
+
id
|
|
12
|
+
}) => {
|
|
13
|
+
const metrics = {
|
|
14
|
+
event: 'web-vitals',
|
|
15
|
+
event_category: 'Web Vitals',
|
|
16
|
+
event_action: name,
|
|
17
|
+
event_value: Math.round(name === 'CLS' ? delta * 1000 : delta),
|
|
18
|
+
event_label: id,
|
|
19
|
+
nonInteraction: true
|
|
20
|
+
};
|
|
21
|
+
pushToDataLayer(metrics);
|
|
22
|
+
};
|
|
23
|
+
export default buildAndPushWebVitals;
|
|
24
|
+
//# sourceMappingURL=build-and-push-web-vitals.js.map
|