@folklore/ads 0.0.34 → 0.0.36

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 +58 -25
  2. package/dist/es.js +57 -24
  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]))]);
@@ -260,7 +260,8 @@ class AdSlot extends EventEmitter__default["default"] {
260
260
  } = this.renderEvent;
261
261
  return size !== null ? {
262
262
  width: size[0],
263
- height: size[1]
263
+ height: size[1],
264
+ isFluid: size[0] === 0 && size[1] === 0
264
265
  } : null;
265
266
  }
266
267
  }
@@ -320,7 +321,9 @@ class AdsManager extends EventEmitter__default["default"] {
320
321
  this.options = {
321
322
  disabled: false,
322
323
  disablePersonnalizedAds: false,
323
- enableSingleRequest: false,
324
+ disableSingleRequest: false,
325
+ disableLazyLoad: false,
326
+ disableVideoAds: false,
324
327
  autoInit: false,
325
328
  ...opts
326
329
  };
@@ -351,30 +354,39 @@ class AdsManager extends EventEmitter__default["default"] {
351
354
  personnalizedAdsDisabled
352
355
  } = this;
353
356
  const {
354
- enableSingleRequest
357
+ disableSingleRequest = false,
358
+ disableLazyLoad = false,
359
+ disableVideoAds = false,
360
+ mobileScaling = 1.0,
361
+ renderMarginPercent = 100,
362
+ fetchMarginPercent = 300
355
363
  } = this.options;
356
364
  if (disabled) {
357
365
  debug('Disable initial load');
358
366
  googletag.pubads().disableInitialLoad();
359
367
  }
360
- if (enableSingleRequest) {
368
+ if (!disableSingleRequest) {
361
369
  debug('Enable single request');
362
- googletag.pubads().enableSingleRequest();
370
+ googletag.pubads().disableSingleRequest();
363
371
  }
364
372
  if (personnalizedAdsDisabled) {
365
373
  debug('Disable personalized ads');
366
374
  googletag.pubads().setRequestNonPersonalizedAds(1);
367
375
  }
368
- googletag.pubads().enableLazyLoad({
369
- // Fetch slots within 5 viewports.
370
- fetchMarginPercent: 300,
371
- // Render slots within 2 viewports.
372
- renderMarginPercent: 100,
373
- // Double the above values on mobile, where viewports are smaller
374
- // and users tend to scroll faster.
375
- mobileScaling: 1.0
376
- });
377
- 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
+ }
378
390
  googletag.pubads().addEventListener('slotRenderEnded', this.onSlotRenderEnded);
379
391
  googletag.pubads().addEventListener('impressionViewable', this.onSlotImpressionViewable);
380
392
  googletag.enableServices();
@@ -633,10 +645,15 @@ const propTypes$2 = {
633
645
  children: PropTypes__default["default"].node.isRequired,
634
646
  defaultSlotPath: PropTypes__default["default"].string,
635
647
  slotsPath: PropTypes__default["default"].objectOf(PropTypes__default["default"].string),
636
- enableSingleRequest: PropTypes__default["default"].bool,
648
+ disableSingleRequest: PropTypes__default["default"].bool,
649
+ disableVideoAds: PropTypes__default["default"].bool,
650
+ disableLazyLoad: PropTypes__default["default"].bool,
637
651
  autoInit: PropTypes__default["default"].bool,
638
652
  resizeDebounceDelay: PropTypes__default["default"].number,
639
653
  refreshOnResize: PropTypes__default["default"].bool,
654
+ mobileScaling: PropTypes__default["default"].number,
655
+ renderMarginPercent: PropTypes__default["default"].number,
656
+ fetchMarginPercent: PropTypes__default["default"].number,
640
657
  slots: adSlots,
641
658
  viewports: adViewports,
642
659
  disabled: PropTypes__default["default"].bool,
@@ -645,10 +662,15 @@ const propTypes$2 = {
645
662
  const defaultProps$2 = {
646
663
  defaultSlotPath: null,
647
664
  slotsPath: null,
648
- enableSingleRequest: true,
665
+ disableSingleRequest: false,
666
+ disableVideoAds: false,
667
+ disableLazyLoad: false,
649
668
  autoInit: true,
650
669
  resizeDebounceDelay: 500,
651
670
  refreshOnResize: false,
671
+ mobileScaling: 1.0,
672
+ renderMarginPercent: 100,
673
+ fetchMarginPercent: 300,
652
674
  slots: slots,
653
675
  viewports: viewports,
654
676
  disabled: false,
@@ -659,10 +681,15 @@ function AdsProvider(_ref) {
659
681
  children,
660
682
  defaultSlotPath,
661
683
  slotsPath,
662
- enableSingleRequest,
684
+ disableSingleRequest,
685
+ disableVideoAds,
686
+ disableLazyLoad,
663
687
  autoInit,
664
688
  resizeDebounceDelay,
665
689
  refreshOnResize,
690
+ mobileScaling,
691
+ renderMarginPercent,
692
+ fetchMarginPercent,
666
693
  viewports,
667
694
  slots,
668
695
  disabled,
@@ -673,15 +700,20 @@ function AdsProvider(_ref) {
673
700
  const ads = React.useMemo(() => {
674
701
  if (adsRef.current === null) {
675
702
  adsRef.current = new AdsManager({
676
- enableSingleRequest,
677
703
  autoInit,
678
- disabled
704
+ disabled,
705
+ disableSingleRequest,
706
+ disableVideoAds,
707
+ disableLazyLoad,
708
+ mobileScaling,
709
+ renderMarginPercent,
710
+ fetchMarginPercent
679
711
  });
680
712
  } else {
681
713
  adsRef.current.setDisabled(disabled);
682
714
  }
683
715
  return adsRef.current;
684
- }, [enableSingleRequest, autoInit, disabled]);
716
+ }, [autoInit, disabled, disableSingleRequest, disableVideoAds, disableLazyLoad, mobileScaling, renderMarginPercent, fetchMarginPercent]);
685
717
  React.useEffect(() => {
686
718
  let onReady = null;
687
719
  if (!ads.isReady()) {
@@ -1072,6 +1104,7 @@ function Ad(_ref) {
1072
1104
  id,
1073
1105
  width,
1074
1106
  height,
1107
+ isFluid = false,
1075
1108
  isEmpty,
1076
1109
  isRendered,
1077
1110
  refObserver,
@@ -1103,10 +1136,10 @@ function Ad(_ref) {
1103
1136
  }
1104
1137
  let adStyle = null;
1105
1138
  if (isRendered) {
1106
- adStyle = {
1139
+ adStyle = !isFluid ? {
1107
1140
  width,
1108
1141
  height
1109
- };
1142
+ } : null;
1110
1143
  } else if (shouldKeepSize && (finalDisabled || waitingNextRender)) {
1111
1144
  adStyle = lastRenderedSize.current;
1112
1145
  } else if (!withoutMinimumSize) {
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';
@@ -242,7 +242,8 @@ class AdSlot extends EventEmitter {
242
242
  } = this.renderEvent;
243
243
  return size !== null ? {
244
244
  width: size[0],
245
- height: size[1]
245
+ height: size[1],
246
+ isFluid: size[0] === 0 && size[1] === 0
246
247
  } : null;
247
248
  }
248
249
  }
@@ -302,7 +303,9 @@ class AdsManager extends EventEmitter {
302
303
  this.options = {
303
304
  disabled: false,
304
305
  disablePersonnalizedAds: false,
305
- enableSingleRequest: false,
306
+ disableSingleRequest: false,
307
+ disableLazyLoad: false,
308
+ disableVideoAds: false,
306
309
  autoInit: false,
307
310
  ...opts
308
311
  };
@@ -333,30 +336,39 @@ class AdsManager extends EventEmitter {
333
336
  personnalizedAdsDisabled
334
337
  } = this;
335
338
  const {
336
- enableSingleRequest
339
+ disableSingleRequest = false,
340
+ disableLazyLoad = false,
341
+ disableVideoAds = false,
342
+ mobileScaling = 1.0,
343
+ renderMarginPercent = 100,
344
+ fetchMarginPercent = 300
337
345
  } = this.options;
338
346
  if (disabled) {
339
347
  debug('Disable initial load');
340
348
  googletag.pubads().disableInitialLoad();
341
349
  }
342
- if (enableSingleRequest) {
350
+ if (!disableSingleRequest) {
343
351
  debug('Enable single request');
344
- googletag.pubads().enableSingleRequest();
352
+ googletag.pubads().disableSingleRequest();
345
353
  }
346
354
  if (personnalizedAdsDisabled) {
347
355
  debug('Disable personalized ads');
348
356
  googletag.pubads().setRequestNonPersonalizedAds(1);
349
357
  }
350
- googletag.pubads().enableLazyLoad({
351
- // Fetch slots within 5 viewports.
352
- fetchMarginPercent: 300,
353
- // Render slots within 2 viewports.
354
- renderMarginPercent: 100,
355
- // Double the above values on mobile, where viewports are smaller
356
- // and users tend to scroll faster.
357
- mobileScaling: 1.0
358
- });
359
- 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
+ }
360
372
  googletag.pubads().addEventListener('slotRenderEnded', this.onSlotRenderEnded);
361
373
  googletag.pubads().addEventListener('impressionViewable', this.onSlotImpressionViewable);
362
374
  googletag.enableServices();
@@ -615,10 +627,15 @@ const propTypes$2 = {
615
627
  children: PropTypes.node.isRequired,
616
628
  defaultSlotPath: PropTypes.string,
617
629
  slotsPath: PropTypes.objectOf(PropTypes.string),
618
- enableSingleRequest: PropTypes.bool,
630
+ disableSingleRequest: PropTypes.bool,
631
+ disableVideoAds: PropTypes.bool,
632
+ disableLazyLoad: PropTypes.bool,
619
633
  autoInit: PropTypes.bool,
620
634
  resizeDebounceDelay: PropTypes.number,
621
635
  refreshOnResize: PropTypes.bool,
636
+ mobileScaling: PropTypes.number,
637
+ renderMarginPercent: PropTypes.number,
638
+ fetchMarginPercent: PropTypes.number,
622
639
  slots: adSlots,
623
640
  viewports: adViewports,
624
641
  disabled: PropTypes.bool,
@@ -627,10 +644,15 @@ const propTypes$2 = {
627
644
  const defaultProps$2 = {
628
645
  defaultSlotPath: null,
629
646
  slotsPath: null,
630
- enableSingleRequest: true,
647
+ disableSingleRequest: false,
648
+ disableVideoAds: false,
649
+ disableLazyLoad: false,
631
650
  autoInit: true,
632
651
  resizeDebounceDelay: 500,
633
652
  refreshOnResize: false,
653
+ mobileScaling: 1.0,
654
+ renderMarginPercent: 100,
655
+ fetchMarginPercent: 300,
634
656
  slots: slots,
635
657
  viewports: viewports,
636
658
  disabled: false,
@@ -641,10 +663,15 @@ function AdsProvider(_ref) {
641
663
  children,
642
664
  defaultSlotPath,
643
665
  slotsPath,
644
- enableSingleRequest,
666
+ disableSingleRequest,
667
+ disableVideoAds,
668
+ disableLazyLoad,
645
669
  autoInit,
646
670
  resizeDebounceDelay,
647
671
  refreshOnResize,
672
+ mobileScaling,
673
+ renderMarginPercent,
674
+ fetchMarginPercent,
648
675
  viewports,
649
676
  slots,
650
677
  disabled,
@@ -655,15 +682,20 @@ function AdsProvider(_ref) {
655
682
  const ads = useMemo(() => {
656
683
  if (adsRef.current === null) {
657
684
  adsRef.current = new AdsManager({
658
- enableSingleRequest,
659
685
  autoInit,
660
- disabled
686
+ disabled,
687
+ disableSingleRequest,
688
+ disableVideoAds,
689
+ disableLazyLoad,
690
+ mobileScaling,
691
+ renderMarginPercent,
692
+ fetchMarginPercent
661
693
  });
662
694
  } else {
663
695
  adsRef.current.setDisabled(disabled);
664
696
  }
665
697
  return adsRef.current;
666
- }, [enableSingleRequest, autoInit, disabled]);
698
+ }, [autoInit, disabled, disableSingleRequest, disableVideoAds, disableLazyLoad, mobileScaling, renderMarginPercent, fetchMarginPercent]);
667
699
  useEffect(() => {
668
700
  let onReady = null;
669
701
  if (!ads.isReady()) {
@@ -1054,6 +1086,7 @@ function Ad(_ref) {
1054
1086
  id,
1055
1087
  width,
1056
1088
  height,
1089
+ isFluid = false,
1057
1090
  isEmpty,
1058
1091
  isRendered,
1059
1092
  refObserver,
@@ -1085,10 +1118,10 @@ function Ad(_ref) {
1085
1118
  }
1086
1119
  let adStyle = null;
1087
1120
  if (isRendered) {
1088
- adStyle = {
1121
+ adStyle = !isFluid ? {
1089
1122
  width,
1090
1123
  height
1091
- };
1124
+ } : null;
1092
1125
  } else if (shouldKeepSize && (finalDisabled || waitingNextRender)) {
1093
1126
  adStyle = lastRenderedSize.current;
1094
1127
  } else if (!withoutMinimumSize) {
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@folklore/ads",
3
- "version": "0.0.34",
3
+ "version": "0.0.36",
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": "d17ece8ec14646ba798b01cc8e022d4b8f6bc9f1",
53
+ "gitHead": "95d101938ccd8aa13a418623d38f30793191e0a7",
54
54
  "dependencies": {
55
55
  "@folklore/hooks": "^0.0.44",
56
56
  "@folklore/tracking": "^0.0.23",