@folklore/ads 0.0.35 → 0.0.37

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 (3) hide show
  1. package/dist/cjs.js +65 -34
  2. package/dist/es.js +64 -33
  3. package/package.json +2 -2
package/dist/cjs.js CHANGED
@@ -11,8 +11,8 @@ var isArray = require('lodash/isArray');
11
11
  var sortBy = require('lodash/sortBy');
12
12
  var uniqBy = require('lodash/uniqBy');
13
13
  var debounce = require('lodash/debounce');
14
- var EventEmitter = require('wolfy87-eventemitter');
15
14
  var createDebug = require('debug');
15
+ var EventEmitter = require('wolfy87-eventemitter');
16
16
  var jsxRuntime = require('react/jsx-runtime');
17
17
  var hooks = require('@folklore/hooks');
18
18
  var tracking = require('@folklore/tracking');
@@ -28,8 +28,8 @@ var isArray__default = /*#__PURE__*/_interopDefaultLegacy(isArray);
28
28
  var sortBy__default = /*#__PURE__*/_interopDefaultLegacy(sortBy);
29
29
  var uniqBy__default = /*#__PURE__*/_interopDefaultLegacy(uniqBy);
30
30
  var debounce__default = /*#__PURE__*/_interopDefaultLegacy(debounce);
31
- var EventEmitter__default = /*#__PURE__*/_interopDefaultLegacy(EventEmitter);
32
31
  var createDebug__default = /*#__PURE__*/_interopDefaultLegacy(createDebug);
32
+ var EventEmitter__default = /*#__PURE__*/_interopDefaultLegacy(EventEmitter);
33
33
 
34
34
  const adPath = PropTypes__default["default"].string;
35
35
  const adSize = PropTypes__default["default"].oneOfType([PropTypes__default["default"].arrayOf(PropTypes__default["default"].number), PropTypes__default["default"].arrayOf(PropTypes__default["default"].string), PropTypes__default["default"].string, PropTypes__default["default"].arrayOf(PropTypes__default["default"].oneOfType([PropTypes__default["default"].arrayOf(PropTypes__default["default"].number), PropTypes__default["default"].arrayOf(PropTypes__default["default"].string), PropTypes__default["default"].string]))]);
@@ -321,7 +321,9 @@ class AdsManager extends EventEmitter__default["default"] {
321
321
  this.options = {
322
322
  disabled: false,
323
323
  disablePersonnalizedAds: false,
324
- enableSingleRequest: false,
324
+ disableSingleRequest: false,
325
+ disableLazyLoad: false,
326
+ disableVideoAds: false,
325
327
  autoInit: false,
326
328
  ...opts
327
329
  };
@@ -352,30 +354,39 @@ class AdsManager extends EventEmitter__default["default"] {
352
354
  personnalizedAdsDisabled
353
355
  } = this;
354
356
  const {
355
- enableSingleRequest
357
+ disableSingleRequest = false,
358
+ disableLazyLoad = false,
359
+ disableVideoAds = false,
360
+ mobileScaling = 1.0,
361
+ renderMarginPercent = 100,
362
+ fetchMarginPercent = 300
356
363
  } = this.options;
357
364
  if (disabled) {
358
365
  debug('Disable initial load');
359
366
  googletag.pubads().disableInitialLoad();
360
367
  }
361
- if (enableSingleRequest) {
368
+ if (!disableSingleRequest) {
362
369
  debug('Enable single request');
363
- googletag.pubads().enableSingleRequest();
370
+ googletag.pubads().disableSingleRequest();
364
371
  }
365
372
  if (personnalizedAdsDisabled) {
366
373
  debug('Disable personalized ads');
367
374
  googletag.pubads().setRequestNonPersonalizedAds(1);
368
375
  }
369
- googletag.pubads().enableLazyLoad({
370
- // Fetch slots within 5 viewports.
371
- fetchMarginPercent: 300,
372
- // Render slots within 2 viewports.
373
- renderMarginPercent: 100,
374
- // Double the above values on mobile, where viewports are smaller
375
- // and users tend to scroll faster.
376
- mobileScaling: 1.0
377
- });
378
- googletag.pubads().enableVideoAds();
376
+ if (!disableLazyLoad) {
377
+ googletag.pubads().enableLazyLoad({
378
+ // Fetch slots within 5 viewports.
379
+ fetchMarginPercent,
380
+ // Render slots within 2 viewports.
381
+ renderMarginPercent,
382
+ // Double the above values on mobile, where viewports are smaller
383
+ // and users tend to scroll faster.
384
+ mobileScaling
385
+ });
386
+ }
387
+ if (!disableVideoAds) {
388
+ googletag.pubads().enableVideoAds();
389
+ }
379
390
  googletag.pubads().addEventListener('slotRenderEnded', this.onSlotRenderEnded);
380
391
  googletag.pubads().addEventListener('impressionViewable', this.onSlotImpressionViewable);
381
392
  googletag.enableServices();
@@ -634,55 +645,75 @@ const propTypes$2 = {
634
645
  children: PropTypes__default["default"].node.isRequired,
635
646
  defaultSlotPath: PropTypes__default["default"].string,
636
647
  slotsPath: PropTypes__default["default"].objectOf(PropTypes__default["default"].string),
637
- enableSingleRequest: PropTypes__default["default"].bool,
648
+ disableSingleRequest: PropTypes__default["default"].bool,
649
+ disableVideoAds: PropTypes__default["default"].bool,
650
+ disableLazyLoad: PropTypes__default["default"].bool,
638
651
  autoInit: PropTypes__default["default"].bool,
639
652
  resizeDebounceDelay: PropTypes__default["default"].number,
640
653
  refreshOnResize: PropTypes__default["default"].bool,
654
+ mobileScaling: PropTypes__default["default"].number,
655
+ renderMarginPercent: PropTypes__default["default"].number,
656
+ fetchMarginPercent: PropTypes__default["default"].number,
641
657
  slots: adSlots,
642
658
  viewports: adViewports,
643
659
  disabled: PropTypes__default["default"].bool,
644
- trackingDisabled: PropTypes__default["default"].bool
660
+ disableTracking: PropTypes__default["default"].bool
645
661
  };
646
662
  const defaultProps$2 = {
647
663
  defaultSlotPath: null,
648
664
  slotsPath: null,
649
- enableSingleRequest: true,
665
+ disableSingleRequest: false,
666
+ disableVideoAds: false,
667
+ disableLazyLoad: false,
650
668
  autoInit: true,
651
669
  resizeDebounceDelay: 500,
652
670
  refreshOnResize: false,
671
+ mobileScaling: 1.0,
672
+ renderMarginPercent: 100,
673
+ fetchMarginPercent: 300,
653
674
  slots: slots,
654
675
  viewports: viewports,
655
676
  disabled: false,
656
- trackingDisabled: false
677
+ disableTracking: false
657
678
  };
658
679
  function AdsProvider(_ref) {
659
680
  let {
660
681
  children,
661
682
  defaultSlotPath,
662
683
  slotsPath,
663
- enableSingleRequest,
684
+ disableSingleRequest,
685
+ disableVideoAds,
686
+ disableLazyLoad,
664
687
  autoInit,
665
688
  resizeDebounceDelay,
666
689
  refreshOnResize,
690
+ mobileScaling,
691
+ renderMarginPercent,
692
+ fetchMarginPercent,
667
693
  viewports,
668
694
  slots,
669
695
  disabled,
670
- trackingDisabled
696
+ disableTracking
671
697
  } = _ref;
672
698
  const [ready, setReady] = React.useState(false);
673
699
  const adsRef = React.useRef(null);
674
700
  const ads = React.useMemo(() => {
675
701
  if (adsRef.current === null) {
676
702
  adsRef.current = new AdsManager({
677
- enableSingleRequest,
678
703
  autoInit,
679
- disabled
704
+ disabled,
705
+ disableSingleRequest,
706
+ disableVideoAds,
707
+ disableLazyLoad,
708
+ mobileScaling,
709
+ renderMarginPercent,
710
+ fetchMarginPercent
680
711
  });
681
712
  } else {
682
713
  adsRef.current.setDisabled(disabled);
683
714
  }
684
715
  return adsRef.current;
685
- }, [enableSingleRequest, autoInit, disabled]);
716
+ }, [autoInit, disabled, disableSingleRequest, disableVideoAds, disableLazyLoad, mobileScaling, renderMarginPercent, fetchMarginPercent]);
686
717
  React.useEffect(() => {
687
718
  let onReady = null;
688
719
  if (!ads.isReady()) {
@@ -731,8 +762,8 @@ function AdsProvider(_ref) {
731
762
  } : {
732
763
  ...slotsPath
733
764
  },
734
- trackingDisabled
735
- }), [ready, ads, viewports, slots, slotsPath, defaultSlotPath, trackingDisabled, disabled]);
765
+ trackingDisabled: disableTracking
766
+ }), [ready, ads, viewports, slots, slotsPath, defaultSlotPath, disableTracking, disabled]);
736
767
  return /*#__PURE__*/jsxRuntime.jsx(AdsContext.Provider, {
737
768
  value: value,
738
769
  children: children
@@ -793,7 +824,7 @@ function useAd(path, size) {
793
824
  alwaysRender = false,
794
825
  onRender = null,
795
826
  disabled = false,
796
- trackingDisabled = false,
827
+ disableTracking = false,
797
828
  rootMargin = '300px'
798
829
  } = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {};
799
830
  const {
@@ -803,10 +834,10 @@ function useAd(path, size) {
803
834
  } = useAdsContext();
804
835
  const trackAd = useAdsTracking();
805
836
  const track = React.useCallback(function () {
806
- if (!trackingDisabled && !globalTrackingDisabled) {
837
+ if (!disableTracking && !globalTrackingDisabled) {
807
838
  trackAd(...arguments);
808
839
  }
809
- }, [trackingDisabled, globalTrackingDisabled, trackAd]);
840
+ }, [disableTracking, globalTrackingDisabled, trackAd]);
810
841
 
811
842
  // Check for visibility
812
843
  const {
@@ -945,7 +976,7 @@ const propTypes = {
945
976
  refreshInterval: PropTypes__default["default"].number,
946
977
  alwaysRender: PropTypes__default["default"].bool,
947
978
  disabled: PropTypes__default["default"].bool,
948
- trackingDisabled: PropTypes__default["default"].bool,
979
+ disableTracking: PropTypes__default["default"].bool,
949
980
  shouldKeepSize: PropTypes__default["default"].bool,
950
981
  withoutStyle: PropTypes__default["default"].bool,
951
982
  withoutMinimumSize: PropTypes__default["default"].bool,
@@ -963,7 +994,7 @@ const defaultProps = {
963
994
  refreshInterval: null,
964
995
  alwaysRender: true,
965
996
  disabled: false,
966
- trackingDisabled: false,
997
+ disableTracking: false,
967
998
  shouldKeepSize: false,
968
999
  withoutStyle: false,
969
1000
  withoutMinimumSize: false,
@@ -983,7 +1014,7 @@ function Ad(_ref) {
983
1014
  refreshInterval,
984
1015
  alwaysRender,
985
1016
  disabled,
986
- trackingDisabled,
1017
+ disableTracking,
987
1018
  shouldKeepSize,
988
1019
  withoutStyle,
989
1020
  withoutMinimumSize,
@@ -1085,7 +1116,7 @@ function Ad(_ref) {
1085
1116
  alwaysRender,
1086
1117
  onRender: onAdRender,
1087
1118
  disabled: finalDisabled,
1088
- trackingDisabled
1119
+ disableTracking
1089
1120
  });
1090
1121
  if (slotRef !== null && isFunction__default["default"](slotRef)) {
1091
1122
  slotRef(slotObject);
package/dist/es.js CHANGED
@@ -7,8 +7,8 @@ import isArray from 'lodash/isArray';
7
7
  import sortBy from 'lodash/sortBy';
8
8
  import uniqBy from 'lodash/uniqBy';
9
9
  import debounce from 'lodash/debounce';
10
- import EventEmitter from 'wolfy87-eventemitter';
11
10
  import createDebug from 'debug';
11
+ import EventEmitter from 'wolfy87-eventemitter';
12
12
  import { jsx } from 'react/jsx-runtime';
13
13
  import { useIntersectionObserver, useWindowEvent } from '@folklore/hooks';
14
14
  import { useTracking } from '@folklore/tracking';
@@ -303,7 +303,9 @@ class AdsManager extends EventEmitter {
303
303
  this.options = {
304
304
  disabled: false,
305
305
  disablePersonnalizedAds: false,
306
- enableSingleRequest: false,
306
+ disableSingleRequest: false,
307
+ disableLazyLoad: false,
308
+ disableVideoAds: false,
307
309
  autoInit: false,
308
310
  ...opts
309
311
  };
@@ -334,30 +336,39 @@ class AdsManager extends EventEmitter {
334
336
  personnalizedAdsDisabled
335
337
  } = this;
336
338
  const {
337
- enableSingleRequest
339
+ disableSingleRequest = false,
340
+ disableLazyLoad = false,
341
+ disableVideoAds = false,
342
+ mobileScaling = 1.0,
343
+ renderMarginPercent = 100,
344
+ fetchMarginPercent = 300
338
345
  } = this.options;
339
346
  if (disabled) {
340
347
  debug('Disable initial load');
341
348
  googletag.pubads().disableInitialLoad();
342
349
  }
343
- if (enableSingleRequest) {
350
+ if (!disableSingleRequest) {
344
351
  debug('Enable single request');
345
- googletag.pubads().enableSingleRequest();
352
+ googletag.pubads().disableSingleRequest();
346
353
  }
347
354
  if (personnalizedAdsDisabled) {
348
355
  debug('Disable personalized ads');
349
356
  googletag.pubads().setRequestNonPersonalizedAds(1);
350
357
  }
351
- googletag.pubads().enableLazyLoad({
352
- // Fetch slots within 5 viewports.
353
- fetchMarginPercent: 300,
354
- // Render slots within 2 viewports.
355
- renderMarginPercent: 100,
356
- // Double the above values on mobile, where viewports are smaller
357
- // and users tend to scroll faster.
358
- mobileScaling: 1.0
359
- });
360
- googletag.pubads().enableVideoAds();
358
+ if (!disableLazyLoad) {
359
+ googletag.pubads().enableLazyLoad({
360
+ // Fetch slots within 5 viewports.
361
+ fetchMarginPercent,
362
+ // Render slots within 2 viewports.
363
+ renderMarginPercent,
364
+ // Double the above values on mobile, where viewports are smaller
365
+ // and users tend to scroll faster.
366
+ mobileScaling
367
+ });
368
+ }
369
+ if (!disableVideoAds) {
370
+ googletag.pubads().enableVideoAds();
371
+ }
361
372
  googletag.pubads().addEventListener('slotRenderEnded', this.onSlotRenderEnded);
362
373
  googletag.pubads().addEventListener('impressionViewable', this.onSlotImpressionViewable);
363
374
  googletag.enableServices();
@@ -616,55 +627,75 @@ const propTypes$2 = {
616
627
  children: PropTypes.node.isRequired,
617
628
  defaultSlotPath: PropTypes.string,
618
629
  slotsPath: PropTypes.objectOf(PropTypes.string),
619
- enableSingleRequest: PropTypes.bool,
630
+ disableSingleRequest: PropTypes.bool,
631
+ disableVideoAds: PropTypes.bool,
632
+ disableLazyLoad: PropTypes.bool,
620
633
  autoInit: PropTypes.bool,
621
634
  resizeDebounceDelay: PropTypes.number,
622
635
  refreshOnResize: PropTypes.bool,
636
+ mobileScaling: PropTypes.number,
637
+ renderMarginPercent: PropTypes.number,
638
+ fetchMarginPercent: PropTypes.number,
623
639
  slots: adSlots,
624
640
  viewports: adViewports,
625
641
  disabled: PropTypes.bool,
626
- trackingDisabled: PropTypes.bool
642
+ disableTracking: PropTypes.bool
627
643
  };
628
644
  const defaultProps$2 = {
629
645
  defaultSlotPath: null,
630
646
  slotsPath: null,
631
- enableSingleRequest: true,
647
+ disableSingleRequest: false,
648
+ disableVideoAds: false,
649
+ disableLazyLoad: false,
632
650
  autoInit: true,
633
651
  resizeDebounceDelay: 500,
634
652
  refreshOnResize: false,
653
+ mobileScaling: 1.0,
654
+ renderMarginPercent: 100,
655
+ fetchMarginPercent: 300,
635
656
  slots: slots,
636
657
  viewports: viewports,
637
658
  disabled: false,
638
- trackingDisabled: false
659
+ disableTracking: false
639
660
  };
640
661
  function AdsProvider(_ref) {
641
662
  let {
642
663
  children,
643
664
  defaultSlotPath,
644
665
  slotsPath,
645
- enableSingleRequest,
666
+ disableSingleRequest,
667
+ disableVideoAds,
668
+ disableLazyLoad,
646
669
  autoInit,
647
670
  resizeDebounceDelay,
648
671
  refreshOnResize,
672
+ mobileScaling,
673
+ renderMarginPercent,
674
+ fetchMarginPercent,
649
675
  viewports,
650
676
  slots,
651
677
  disabled,
652
- trackingDisabled
678
+ disableTracking
653
679
  } = _ref;
654
680
  const [ready, setReady] = useState(false);
655
681
  const adsRef = useRef(null);
656
682
  const ads = useMemo(() => {
657
683
  if (adsRef.current === null) {
658
684
  adsRef.current = new AdsManager({
659
- enableSingleRequest,
660
685
  autoInit,
661
- disabled
686
+ disabled,
687
+ disableSingleRequest,
688
+ disableVideoAds,
689
+ disableLazyLoad,
690
+ mobileScaling,
691
+ renderMarginPercent,
692
+ fetchMarginPercent
662
693
  });
663
694
  } else {
664
695
  adsRef.current.setDisabled(disabled);
665
696
  }
666
697
  return adsRef.current;
667
- }, [enableSingleRequest, autoInit, disabled]);
698
+ }, [autoInit, disabled, disableSingleRequest, disableVideoAds, disableLazyLoad, mobileScaling, renderMarginPercent, fetchMarginPercent]);
668
699
  useEffect(() => {
669
700
  let onReady = null;
670
701
  if (!ads.isReady()) {
@@ -713,8 +744,8 @@ function AdsProvider(_ref) {
713
744
  } : {
714
745
  ...slotsPath
715
746
  },
716
- trackingDisabled
717
- }), [ready, ads, viewports, slots, slotsPath, defaultSlotPath, trackingDisabled, disabled]);
747
+ trackingDisabled: disableTracking
748
+ }), [ready, ads, viewports, slots, slotsPath, defaultSlotPath, disableTracking, disabled]);
718
749
  return /*#__PURE__*/jsx(AdsContext.Provider, {
719
750
  value: value,
720
751
  children: children
@@ -775,7 +806,7 @@ function useAd(path, size) {
775
806
  alwaysRender = false,
776
807
  onRender = null,
777
808
  disabled = false,
778
- trackingDisabled = false,
809
+ disableTracking = false,
779
810
  rootMargin = '300px'
780
811
  } = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {};
781
812
  const {
@@ -785,10 +816,10 @@ function useAd(path, size) {
785
816
  } = useAdsContext();
786
817
  const trackAd = useAdsTracking();
787
818
  const track = useCallback(function () {
788
- if (!trackingDisabled && !globalTrackingDisabled) {
819
+ if (!disableTracking && !globalTrackingDisabled) {
789
820
  trackAd(...arguments);
790
821
  }
791
- }, [trackingDisabled, globalTrackingDisabled, trackAd]);
822
+ }, [disableTracking, globalTrackingDisabled, trackAd]);
792
823
 
793
824
  // Check for visibility
794
825
  const {
@@ -927,7 +958,7 @@ const propTypes = {
927
958
  refreshInterval: PropTypes.number,
928
959
  alwaysRender: PropTypes.bool,
929
960
  disabled: PropTypes.bool,
930
- trackingDisabled: PropTypes.bool,
961
+ disableTracking: PropTypes.bool,
931
962
  shouldKeepSize: PropTypes.bool,
932
963
  withoutStyle: PropTypes.bool,
933
964
  withoutMinimumSize: PropTypes.bool,
@@ -945,7 +976,7 @@ const defaultProps = {
945
976
  refreshInterval: null,
946
977
  alwaysRender: true,
947
978
  disabled: false,
948
- trackingDisabled: false,
979
+ disableTracking: false,
949
980
  shouldKeepSize: false,
950
981
  withoutStyle: false,
951
982
  withoutMinimumSize: false,
@@ -965,7 +996,7 @@ function Ad(_ref) {
965
996
  refreshInterval,
966
997
  alwaysRender,
967
998
  disabled,
968
- trackingDisabled,
999
+ disableTracking,
969
1000
  shouldKeepSize,
970
1001
  withoutStyle,
971
1002
  withoutMinimumSize,
@@ -1067,7 +1098,7 @@ function Ad(_ref) {
1067
1098
  alwaysRender,
1068
1099
  onRender: onAdRender,
1069
1100
  disabled: finalDisabled,
1070
- trackingDisabled
1101
+ disableTracking
1071
1102
  });
1072
1103
  if (slotRef !== null && isFunction(slotRef)) {
1073
1104
  slotRef(slotObject);
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@folklore/ads",
3
- "version": "0.0.35",
3
+ "version": "0.0.37",
4
4
  "description": "Ads library",
5
5
  "keywords": [
6
6
  "javascript",
@@ -50,7 +50,7 @@
50
50
  "publishConfig": {
51
51
  "access": "public"
52
52
  },
53
- "gitHead": "157dafbef47cbe22779e58c62da89a0c46c06bc8",
53
+ "gitHead": "eb4be4e6692164f0fb4a7fc881cdac855698a2e7",
54
54
  "dependencies": {
55
55
  "@folklore/hooks": "^0.0.44",
56
56
  "@folklore/tracking": "^0.0.23",