@folklore/ads 0.0.28 → 0.0.30

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 +35 -19
  2. package/dist/es.js +35 -19
  3. package/package.json +2 -2
package/dist/cjs.js CHANGED
@@ -637,6 +637,7 @@ const propTypes$2 = {
637
637
  refreshOnResize: PropTypes__default["default"].bool,
638
638
  slots: adSlots,
639
639
  viewports: adViewports,
640
+ disabled: PropTypes__default["default"].bool,
640
641
  trackingDisabled: PropTypes__default["default"].bool
641
642
  };
642
643
  const defaultProps$2 = {
@@ -648,6 +649,7 @@ const defaultProps$2 = {
648
649
  refreshOnResize: false,
649
650
  slots: slots,
650
651
  viewports: viewports,
652
+ disabled: false,
651
653
  trackingDisabled: false
652
654
  };
653
655
  function AdsProvider(_ref) {
@@ -661,6 +663,7 @@ function AdsProvider(_ref) {
661
663
  refreshOnResize,
662
664
  viewports,
663
665
  slots,
666
+ disabled,
664
667
  trackingDisabled
665
668
  } = _ref;
666
669
  const [ready, setReady] = React.useState(false);
@@ -669,11 +672,14 @@ function AdsProvider(_ref) {
669
672
  if (adsRef.current === null) {
670
673
  adsRef.current = new AdsManager({
671
674
  enableSingleRequest,
672
- autoInit
675
+ autoInit,
676
+ disabled
673
677
  });
678
+ } else {
679
+ adsRef.current.setDisabled(disabled);
674
680
  }
675
681
  return adsRef.current;
676
- }, [enableSingleRequest, autoInit]);
682
+ }, [enableSingleRequest, autoInit, disabled]);
677
683
  React.useEffect(() => {
678
684
  let onReady = null;
679
685
  if (!ads.isReady()) {
@@ -723,7 +729,7 @@ function AdsProvider(_ref) {
723
729
  ...slotsPath
724
730
  },
725
731
  trackingDisabled
726
- }), [ready, ads, viewports, slots, slotsPath, defaultSlotPath, trackingDisabled]);
732
+ }), [ready, ads, viewports, slots, slotsPath, defaultSlotPath, trackingDisabled, disabled]);
727
733
  return /*#__PURE__*/jsxRuntime.jsx(AdsContext.Provider, {
728
734
  value: value,
729
735
  children: children
@@ -996,13 +1002,23 @@ function Ad(_ref) {
996
1002
 
997
1003
  // Targeting
998
1004
  const contextTargeting = useAdsTargeting();
999
- const allTargeting = React.useMemo(() => ({
1000
- ...(slotName !== null ? {
1001
- slot: slotName
1002
- } : null),
1003
- ...contextTargeting,
1004
- ...targeting
1005
- }), [contextTargeting, targeting, slotName]);
1005
+ const {
1006
+ disabled: targetingDisabled = false
1007
+ } = contextTargeting || {};
1008
+ const finalDisabled = disabled || targetingDisabled;
1009
+ const allTargeting = React.useMemo(() => {
1010
+ const {
1011
+ disabled: removedDisabled,
1012
+ ...otherTargeting
1013
+ } = contextTargeting || {};
1014
+ return {
1015
+ ...(slotName !== null ? {
1016
+ slot: slotName
1017
+ } : null),
1018
+ ...otherTargeting,
1019
+ ...targeting
1020
+ };
1021
+ }, [contextTargeting, targeting, slotName]);
1006
1022
  const finalAdTargeting = React.useMemo(() => {
1007
1023
  const {
1008
1024
  refreshAds = null,
@@ -1014,16 +1030,16 @@ function Ad(_ref) {
1014
1030
  };
1015
1031
  }, [allTargeting, refreshInterval]);
1016
1032
  const lastRenderedSize = React.useRef(null);
1017
- const wasDisabled = React.useRef(disabled);
1033
+ const wasDisabled = React.useRef(finalDisabled);
1018
1034
  const onAdRender = React.useCallback(event => {
1019
1035
  const {
1020
1036
  isEmpty: newIsEmpty = true,
1021
1037
  width: newWidth,
1022
1038
  height: newHeight
1023
1039
  } = event || {};
1024
- if (disabled) {
1040
+ if (finalDisabled) {
1025
1041
  wasDisabled.current = true;
1026
- } else if (!disabled && !newIsEmpty) {
1042
+ } else if (!finalDisabled && !newIsEmpty) {
1027
1043
  wasDisabled.current = false;
1028
1044
  }
1029
1045
  lastRenderedSize.current = !newIsEmpty ? {
@@ -1033,7 +1049,7 @@ function Ad(_ref) {
1033
1049
  if (onRender !== null) {
1034
1050
  onRender(event);
1035
1051
  }
1036
- }, [onRender, shouldKeepSize, disabled]);
1052
+ }, [onRender, shouldKeepSize, finalDisabled]);
1037
1053
 
1038
1054
  // useEffect(() => {
1039
1055
  // if (!disabled) {
@@ -1064,7 +1080,7 @@ function Ad(_ref) {
1064
1080
  refreshInterval: finalAdTargeting.refreshInterval,
1065
1081
  alwaysRender,
1066
1082
  onRender: onAdRender,
1067
- disabled,
1083
+ disabled: finalDisabled,
1068
1084
  trackingDisabled
1069
1085
  });
1070
1086
  if (slotRef !== null && isFunction__default["default"](slotRef)) {
@@ -1073,13 +1089,13 @@ function Ad(_ref) {
1073
1089
  // eslint-disable-next-line no-param-reassign
1074
1090
  slotRef.current = slotObject;
1075
1091
  }
1076
- if (disabled) {
1092
+ if (finalDisabled) {
1077
1093
  wasDisabled.current = true;
1078
- } else if (!disabled && isRendered) {
1094
+ } else if (!finalDisabled && isRendered) {
1079
1095
  wasDisabled.current = false;
1080
1096
  }
1081
1097
  const waitingNextRender = wasDisabled.current && !isRendered;
1082
- const keepSize = shouldKeepSize && (disabled || waitingNextRender) && lastRenderedSize.current !== null;
1098
+ const keepSize = shouldKeepSize && (finalDisabled || waitingNextRender) && lastRenderedSize.current !== null;
1083
1099
  if (id === null && !keepSize) {
1084
1100
  return null;
1085
1101
  }
@@ -1089,7 +1105,7 @@ function Ad(_ref) {
1089
1105
  width,
1090
1106
  height
1091
1107
  };
1092
- } else if (shouldKeepSize && (disabled || waitingNextRender)) {
1108
+ } else if (shouldKeepSize && (finalDisabled || waitingNextRender)) {
1093
1109
  adStyle = lastRenderedSize.current;
1094
1110
  } else if (!withoutMinimumSize) {
1095
1111
  adStyle = minimumSize;
package/dist/es.js CHANGED
@@ -619,6 +619,7 @@ const propTypes$2 = {
619
619
  refreshOnResize: PropTypes.bool,
620
620
  slots: adSlots,
621
621
  viewports: adViewports,
622
+ disabled: PropTypes.bool,
622
623
  trackingDisabled: PropTypes.bool
623
624
  };
624
625
  const defaultProps$2 = {
@@ -630,6 +631,7 @@ const defaultProps$2 = {
630
631
  refreshOnResize: false,
631
632
  slots: slots,
632
633
  viewports: viewports,
634
+ disabled: false,
633
635
  trackingDisabled: false
634
636
  };
635
637
  function AdsProvider(_ref) {
@@ -643,6 +645,7 @@ function AdsProvider(_ref) {
643
645
  refreshOnResize,
644
646
  viewports,
645
647
  slots,
648
+ disabled,
646
649
  trackingDisabled
647
650
  } = _ref;
648
651
  const [ready, setReady] = useState(false);
@@ -651,11 +654,14 @@ function AdsProvider(_ref) {
651
654
  if (adsRef.current === null) {
652
655
  adsRef.current = new AdsManager({
653
656
  enableSingleRequest,
654
- autoInit
657
+ autoInit,
658
+ disabled
655
659
  });
660
+ } else {
661
+ adsRef.current.setDisabled(disabled);
656
662
  }
657
663
  return adsRef.current;
658
- }, [enableSingleRequest, autoInit]);
664
+ }, [enableSingleRequest, autoInit, disabled]);
659
665
  useEffect(() => {
660
666
  let onReady = null;
661
667
  if (!ads.isReady()) {
@@ -705,7 +711,7 @@ function AdsProvider(_ref) {
705
711
  ...slotsPath
706
712
  },
707
713
  trackingDisabled
708
- }), [ready, ads, viewports, slots, slotsPath, defaultSlotPath, trackingDisabled]);
714
+ }), [ready, ads, viewports, slots, slotsPath, defaultSlotPath, trackingDisabled, disabled]);
709
715
  return /*#__PURE__*/jsx(AdsContext.Provider, {
710
716
  value: value,
711
717
  children: children
@@ -978,13 +984,23 @@ function Ad(_ref) {
978
984
 
979
985
  // Targeting
980
986
  const contextTargeting = useAdsTargeting();
981
- const allTargeting = useMemo(() => ({
982
- ...(slotName !== null ? {
983
- slot: slotName
984
- } : null),
985
- ...contextTargeting,
986
- ...targeting
987
- }), [contextTargeting, targeting, slotName]);
987
+ const {
988
+ disabled: targetingDisabled = false
989
+ } = contextTargeting || {};
990
+ const finalDisabled = disabled || targetingDisabled;
991
+ const allTargeting = useMemo(() => {
992
+ const {
993
+ disabled: removedDisabled,
994
+ ...otherTargeting
995
+ } = contextTargeting || {};
996
+ return {
997
+ ...(slotName !== null ? {
998
+ slot: slotName
999
+ } : null),
1000
+ ...otherTargeting,
1001
+ ...targeting
1002
+ };
1003
+ }, [contextTargeting, targeting, slotName]);
988
1004
  const finalAdTargeting = useMemo(() => {
989
1005
  const {
990
1006
  refreshAds = null,
@@ -996,16 +1012,16 @@ function Ad(_ref) {
996
1012
  };
997
1013
  }, [allTargeting, refreshInterval]);
998
1014
  const lastRenderedSize = useRef(null);
999
- const wasDisabled = useRef(disabled);
1015
+ const wasDisabled = useRef(finalDisabled);
1000
1016
  const onAdRender = useCallback(event => {
1001
1017
  const {
1002
1018
  isEmpty: newIsEmpty = true,
1003
1019
  width: newWidth,
1004
1020
  height: newHeight
1005
1021
  } = event || {};
1006
- if (disabled) {
1022
+ if (finalDisabled) {
1007
1023
  wasDisabled.current = true;
1008
- } else if (!disabled && !newIsEmpty) {
1024
+ } else if (!finalDisabled && !newIsEmpty) {
1009
1025
  wasDisabled.current = false;
1010
1026
  }
1011
1027
  lastRenderedSize.current = !newIsEmpty ? {
@@ -1015,7 +1031,7 @@ function Ad(_ref) {
1015
1031
  if (onRender !== null) {
1016
1032
  onRender(event);
1017
1033
  }
1018
- }, [onRender, shouldKeepSize, disabled]);
1034
+ }, [onRender, shouldKeepSize, finalDisabled]);
1019
1035
 
1020
1036
  // useEffect(() => {
1021
1037
  // if (!disabled) {
@@ -1046,7 +1062,7 @@ function Ad(_ref) {
1046
1062
  refreshInterval: finalAdTargeting.refreshInterval,
1047
1063
  alwaysRender,
1048
1064
  onRender: onAdRender,
1049
- disabled,
1065
+ disabled: finalDisabled,
1050
1066
  trackingDisabled
1051
1067
  });
1052
1068
  if (slotRef !== null && isFunction(slotRef)) {
@@ -1055,13 +1071,13 @@ function Ad(_ref) {
1055
1071
  // eslint-disable-next-line no-param-reassign
1056
1072
  slotRef.current = slotObject;
1057
1073
  }
1058
- if (disabled) {
1074
+ if (finalDisabled) {
1059
1075
  wasDisabled.current = true;
1060
- } else if (!disabled && isRendered) {
1076
+ } else if (!finalDisabled && isRendered) {
1061
1077
  wasDisabled.current = false;
1062
1078
  }
1063
1079
  const waitingNextRender = wasDisabled.current && !isRendered;
1064
- const keepSize = shouldKeepSize && (disabled || waitingNextRender) && lastRenderedSize.current !== null;
1080
+ const keepSize = shouldKeepSize && (finalDisabled || waitingNextRender) && lastRenderedSize.current !== null;
1065
1081
  if (id === null && !keepSize) {
1066
1082
  return null;
1067
1083
  }
@@ -1071,7 +1087,7 @@ function Ad(_ref) {
1071
1087
  width,
1072
1088
  height
1073
1089
  };
1074
- } else if (shouldKeepSize && (disabled || waitingNextRender)) {
1090
+ } else if (shouldKeepSize && (finalDisabled || waitingNextRender)) {
1075
1091
  adStyle = lastRenderedSize.current;
1076
1092
  } else if (!withoutMinimumSize) {
1077
1093
  adStyle = minimumSize;
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@folklore/ads",
3
- "version": "0.0.28",
3
+ "version": "0.0.30",
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": "76f400a041038b006a93161398d46ba0c921c12e",
53
+ "gitHead": "af57f5d2a4d695deb8f676557d66e0cc24540e49",
54
54
  "dependencies": {
55
55
  "@folklore/hooks": "^0.0.43",
56
56
  "@folklore/tracking": "^0.0.21",