@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.
Files changed (52) hide show
  1. package/lib-es/GoogleTagManager/GTMFactory.js +55 -0
  2. package/lib-es/GoogleTagManager/GTMFactory.js.map +1 -0
  3. package/lib-es/GoogleTagManager/GTMRender.js +72 -0
  4. package/lib-es/GoogleTagManager/GTMRender.js.map +1 -0
  5. package/lib-es/GoogleTagManager/index.js +3 -0
  6. package/lib-es/GoogleTagManager/index.js.map +1 -0
  7. package/lib-es/GoogleTagManagerEvent/GTMClickEvent.js +55 -0
  8. package/lib-es/GoogleTagManagerEvent/GTMClickEvent.js.map +1 -0
  9. package/lib-es/GoogleTagManagerEvent/GTMClickEvents.js +32 -0
  10. package/lib-es/GoogleTagManagerEvent/GTMClickEvents.js.map +1 -0
  11. package/lib-es/GoogleTagManagerEvent/GTMEvent.js +38 -0
  12. package/lib-es/GoogleTagManagerEvent/GTMEvent.js.map +1 -0
  13. package/lib-es/GoogleTagManagerEvent/GTMEventFactory.js +92 -0
  14. package/lib-es/GoogleTagManagerEvent/GTMEventFactory.js.map +1 -0
  15. package/lib-es/GoogleTagManagerEvent/GTMEventRender.js +81 -0
  16. package/lib-es/GoogleTagManagerEvent/GTMEventRender.js.map +1 -0
  17. package/lib-es/GoogleTagManagerEvent/GTMEventSwitch.js +40 -0
  18. package/lib-es/GoogleTagManagerEvent/GTMEventSwitch.js.map +1 -0
  19. package/lib-es/GoogleTagManagerEvent/index.js +3 -0
  20. package/lib-es/GoogleTagManagerEvent/index.js.map +1 -0
  21. package/lib-es/constants.js +28 -0
  22. package/lib-es/constants.js.map +1 -0
  23. package/lib-es/helpers/build-and-push-web-vitals.js +24 -0
  24. package/lib-es/helpers/build-and-push-web-vitals.js.map +1 -0
  25. package/lib-es/helpers/build-data-layer.js +34 -0
  26. package/lib-es/helpers/build-data-layer.js.map +1 -0
  27. package/lib-es/helpers/build-nested-event.js +69 -0
  28. package/lib-es/helpers/build-nested-event.js.map +1 -0
  29. package/lib-es/helpers/build-props-to-display-array.js +5 -0
  30. package/lib-es/helpers/build-props-to-display-array.js.map +1 -0
  31. package/lib-es/helpers/build-user-layer.js +45 -0
  32. package/lib-es/helpers/build-user-layer.js.map +1 -0
  33. package/lib-es/helpers/build-user-query-props.js +25 -0
  34. package/lib-es/helpers/build-user-query-props.js.map +1 -0
  35. package/lib-es/helpers/filter-gtm-events.js +14 -0
  36. package/lib-es/helpers/filter-gtm-events.js.map +1 -0
  37. package/lib-es/helpers/get-ids-to-use.js +8 -0
  38. package/lib-es/helpers/get-ids-to-use.js.map +1 -0
  39. package/lib-es/helpers/get-render-props.js +25 -0
  40. package/lib-es/helpers/get-render-props.js.map +1 -0
  41. package/lib-es/helpers/index.js +11 -0
  42. package/lib-es/helpers/index.js.map +1 -0
  43. package/lib-es/helpers/push-to-data-layer.js +9 -0
  44. package/lib-es/helpers/push-to-data-layer.js.map +1 -0
  45. package/lib-es/helpers/reset-data-layer.js +17 -0
  46. package/lib-es/helpers/reset-data-layer.js.map +1 -0
  47. package/lib-es/index.js +21 -0
  48. package/lib-es/index.js.map +1 -0
  49. package/package.json +13 -8
  50. package/CHANGELOG.md +0 -1746
  51. package/babel.config.js +0 -3
  52. 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,3 @@
1
+ import GTMFactory from './GTMFactory';
2
+ export default GTMFactory;
3
+ //# sourceMappingURL=index.js.map
@@ -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":";;;;;AAAA,OAAOA,KAAK,IAAIC,QAAQ,QAAQ,OAAO;AACvC,OAAOC,SAAS,MAAM,YAAY;AAClC,SAASC,QAAQ,QAAQ,gBAAgB;AACzC,SAASC,cAAc,QAAQ,+BAA+B;AAC9D,SAASC,UAAU,QAAQ,aAAa;AACxC,OAAOC,QAAQ,MAAM,YAAY;AACjC,SAASC,cAAc,EAAEC,gBAAgB,EAAEC,mBAAmB,EAAEC,cAAc,QAAQ,YAAY;AAElG,MAAMC,cAAc,GAAGC,IAAA,IASjB;EAAA,IATkB;MACtBC,MAAM;MACNC,MAAM;MACNC,SAAS;MACTC,cAAc;MACdC,eAAe;MACfC,kBAAkB;MAClBC;IAEF,CAAC,GAAAP,IAAA;IADIQ,UAAU,GAAAC,wBAAA,CAAAT,IAAA,EAAAU,SAAA;EAEb,MAAM;IAAEC;EAAO,CAAC,GAAGV,MAAM;EACzB,MAAM,CAACW,eAAe,EAAEC,kBAAkB,CAAC,GAAGxB,QAAQ,CAAC,EAAE,CAAC;EAC1D,MAAM;IAAEyB,IAAI,GAAG,CAAC,CAAC;IAAEC,KAAK;IAAEC;EAAQ,CAAC,GAAGzB,QAAQ,CAACW,MAAM,EAAEE,cAAc,CAAC;EACtE,MAAMa,YAAY,GAAGX,kBAAkB,IAAIA,kBAAkB,CAACY,MAAM;EACpE,MAAMC,SAAS,GAAGF,YAAY,GAAGpB,mBAAmB,CAACS,kBAAkB,CAAC,GAAG,EAAE;EAC7E,MAAM;IAAEQ,IAAI,EAAEM,QAAQ;IAAEJ,OAAO,EAAEK;EAAY,CAAC,GAAG9B,QAAQ,CAACC,cAAc,CAAC2B,SAAS,CAAC,EAAE;IACnFG,SAAS,EAAE,CAAC,CAAC;IACbC,IAAI,EAAE,CAACN;EACT,CAAC,CAAC;EAEF,IAAID,OAAO,IAAIK,WAAW,IAAIN,KAAK,EAAE,OAAO,IAAI;EAChD,MAAMS,OAAO,GAAGV,IAAI,CAACW,UAAU,IAAIX,IAAI,CAACX,SAAS,CAAC;EAElD,IAAIS,eAAe,KAAKD,MAAM,EAAE;IAC9BE,kBAAkB,CAACF,MAAM,CAAC;IAC1B,OAAO,IAAI;EACb;EAEA,MAAM;IAAEe,YAAY;IAAEC,cAAc;IAAEC;EAAe,CAAC,GAAGpB,UAAU;EACnE,MAAMqB,cAAc,GAAGlC,cAAc,CAAC6B,OAAO,EAAEG,cAAc,CAAC;EAE9D,MAAMG,eAAe,GAAGlC,gBAAgB,CACtCgC,cAAc,EACdpB,UAAU,EACVqB,cAAc,EACdxB,eACF,CAAC;EACD,MAAM0B,eAAe,GAAGjC,cAAc,CAACsB,QAAQ,EAAEd,kBAAkB,CAAC;EACpE,MAAM0B,iBAAiB,GAAAC,aAAA,CAAAA,aAAA,KAAQH,eAAe,GAAKC,eAAe,CAAE;EAEpE,oBACE3C,KAAA,CAAA8C,aAAA,CAACxC,QAAQ;IACPoC,eAAe,EAAEE,iBAAkB;IACnCN,YAAY,EAAEA,YAAa;IAC3Bd,eAAe,EAAEA,eAAgB;IACjCL,eAAe,EAAEA;EAAgB,CAClC,CAAC;AAEN,CAAC;AAEDR,cAAc,CAACoC,SAAS,GAAG;EACzB7B,kBAAkB,EAAEhB,SAAS,CAAC8C,KAAK;EACnCnC,MAAM,EAAEX,SAAS,CAAC+C,MAAM,CAACC,UAAU;EACnCpC,MAAM,EAAEZ,SAAS,CAAC+C,MAAM,CAACC,UAAU;EACnCnC,SAAS,EAAEb,SAAS,CAACiD,MAAM,CAACD,UAAU;EACtClC,cAAc,EAAEd,SAAS,CAAC+C,MAAM,CAACC,UAAU;EAC3CjC,eAAe,EAAEf,SAAS,CAAC+C,MAAM,CAACC,UAAU;EAC5C/B,eAAe,EAAEjB,SAAS,CAACkD;AAC7B,CAAC;AAEDzC,cAAc,CAAC0C,YAAY,GAAG;EAC5BnC,kBAAkB,EAAE,EAAE;EACtBC,eAAe,EAAEA,CAAA,KAAM,CAAC;AAC1B,CAAC;AAEDR,cAAc,CAAC0C,YAAY,GAAG;EAC5BnC,kBAAkB,EAAE;AACtB,CAAC;AAED,eAAeb,UAAU,CAACM,cAAc,CAAC","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,3 @@
1
+ import GTMEventSwitch from './GTMEventSwitch';
2
+ export default GTMEventSwitch;
3
+ //# sourceMappingURL=index.js.map
@@ -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