@temple-wallet/extension-ads 20.0.0-beta.0 → 20.0.0-beta.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 (129) hide show
  1. package/dist/index.d.ts +5 -4
  2. package/dist/index.js +36 -25
  3. package/package.json +2 -1
  4. package/src/ads-actions/process-chatgpt-chat-ads.ts +3 -0
  5. package/src/ads-flows/chatgpt-chat.ts +54 -7
  6. package/src/execute-ads-actions/index.ts +4 -12
  7. package/src/execute-ads-actions/process-insert-ad-action.ts +17 -7
  8. package/src/tippy.ts +18 -0
  9. package/src/types/ads-actions.ts +0 -1
  10. package/dist/ads-actions/crypto-keywords.json +0 -1
  11. package/dist/ads-actions/helpers.d.ts +0 -22
  12. package/dist/ads-actions/helpers.js +0 -213
  13. package/dist/ads-actions/helpers.js.map +0 -1
  14. package/dist/ads-actions/index.d.ts +0 -4
  15. package/dist/ads-actions/index.js +0 -64
  16. package/dist/ads-actions/index.js.map +0 -1
  17. package/dist/ads-actions/process-elements-to-hide-or-remove-rule.d.ts +0 -3
  18. package/dist/ads-actions/process-elements-to-hide-or-remove-rule.js +0 -19
  19. package/dist/ads-actions/process-elements-to-hide-or-remove-rule.js.map +0 -1
  20. package/dist/ads-actions/process-permanent-rule.d.ts +0 -3
  21. package/dist/ads-actions/process-permanent-rule.js +0 -145
  22. package/dist/ads-actions/process-permanent-rule.js.map +0 -1
  23. package/dist/ads-actions/process-providers-ads.d.ts +0 -3
  24. package/dist/ads-actions/process-providers-ads.js +0 -156
  25. package/dist/ads-actions/process-providers-ads.js.map +0 -1
  26. package/dist/ads-actions/process-rule.d.ts +0 -3
  27. package/dist/ads-actions/process-rule.js +0 -103
  28. package/dist/ads-actions/process-rule.js.map +0 -1
  29. package/dist/ads-actions/process-youtube-home-ads.d.ts +0 -20
  30. package/dist/ads-actions/process-youtube-home-ads.js +0 -140
  31. package/dist/ads-actions/process-youtube-home-ads.js.map +0 -1
  32. package/dist/ads-actions/process-youtube-search-ads.d.ts +0 -3
  33. package/dist/ads-actions/process-youtube-search-ads.js +0 -115
  34. package/dist/ads-actions/process-youtube-search-ads.js.map +0 -1
  35. package/dist/ads-actions/process-youtube-watch-ads.d.ts +0 -3
  36. package/dist/ads-actions/process-youtube-watch-ads.js +0 -120
  37. package/dist/ads-actions/process-youtube-watch-ads.js.map +0 -1
  38. package/dist/ads-configuration.d.ts +0 -56
  39. package/dist/ads-configuration.js +0 -40
  40. package/dist/ads-configuration.js.map +0 -1
  41. package/dist/ads-flows/youtube-home.d.ts +0 -2
  42. package/dist/ads-flows/youtube-home.js +0 -24
  43. package/dist/ads-flows/youtube-home.js.map +0 -1
  44. package/dist/ads-flows/youtube-search.d.ts +0 -2
  45. package/dist/ads-flows/youtube-search.js +0 -20
  46. package/dist/ads-flows/youtube-search.js.map +0 -1
  47. package/dist/ads-flows/youtube-watch.d.ts +0 -2
  48. package/dist/ads-flows/youtube-watch.js +0 -20
  49. package/dist/ads-flows/youtube-watch.js.map +0 -1
  50. package/dist/constants.d.ts +0 -16
  51. package/dist/constants.js +0 -17
  52. package/dist/constants.js.map +0 -1
  53. package/dist/execute-ads-actions/ads-views/index.d.ts +0 -2
  54. package/dist/execute-ads-actions/ads-views/index.js +0 -3
  55. package/dist/execute-ads-actions/ads-views/index.js.map +0 -1
  56. package/dist/execute-ads-actions/ads-views/make-ads-tw-view.d.ts +0 -13
  57. package/dist/execute-ads-actions/ads-views/make-ads-tw-view.js +0 -68
  58. package/dist/execute-ads-actions/ads-views/make-ads-tw-view.js.map +0 -1
  59. package/dist/execute-ads-actions/ads-views/make-tkey-ad.d.ts +0 -3
  60. package/dist/execute-ads-actions/ads-views/make-tkey-ad.js +0 -38
  61. package/dist/execute-ads-actions/ads-views/make-tkey-ad.js.map +0 -1
  62. package/dist/execute-ads-actions/children-add-or-remove-changes.d.ts +0 -13
  63. package/dist/execute-ads-actions/children-add-or-remove-changes.js +0 -34
  64. package/dist/execute-ads-actions/children-add-or-remove-changes.js.map +0 -1
  65. package/dist/execute-ads-actions/index.d.ts +0 -2
  66. package/dist/execute-ads-actions/index.js +0 -34
  67. package/dist/execute-ads-actions/index.js.map +0 -1
  68. package/dist/execute-ads-actions/observing.d.ts +0 -3
  69. package/dist/execute-ads-actions/observing.js +0 -168
  70. package/dist/execute-ads-actions/observing.js.map +0 -1
  71. package/dist/execute-ads-actions/override-element-styles.d.ts +0 -2
  72. package/dist/execute-ads-actions/override-element-styles.js +0 -6
  73. package/dist/execute-ads-actions/override-element-styles.js.map +0 -1
  74. package/dist/execute-ads-actions/process-insert-ad-action.d.ts +0 -3
  75. package/dist/execute-ads-actions/process-insert-ad-action.js +0 -278
  76. package/dist/execute-ads-actions/process-insert-ad-action.js.map +0 -1
  77. package/dist/execute-ads-actions/theming-params.d.ts +0 -16
  78. package/dist/execute-ads-actions/theming-params.js +0 -51
  79. package/dist/execute-ads-actions/theming-params.js.map +0 -1
  80. package/dist/index.js.map +0 -1
  81. package/dist/referrals/common.d.ts +0 -18
  82. package/dist/referrals/common.js +0 -97
  83. package/dist/referrals/common.js.map +0 -1
  84. package/dist/referrals/index.js.map +0 -1
  85. package/dist/referrals/replace-takeads.d.ts +0 -3
  86. package/dist/referrals/replace-takeads.js +0 -40
  87. package/dist/referrals/replace-takeads.js.map +0 -1
  88. package/dist/referrals/replace-temple.d.ts +0 -8
  89. package/dist/referrals/replace-temple.js +0 -30
  90. package/dist/referrals/replace-temple.js.map +0 -1
  91. package/dist/referrals/takeads.d.ts +0 -21
  92. package/dist/referrals/takeads.js +0 -39
  93. package/dist/referrals/takeads.js.map +0 -1
  94. package/dist/referrals/utils.d.ts +0 -11
  95. package/dist/referrals/utils.js +0 -12
  96. package/dist/referrals/utils.js.map +0 -1
  97. package/dist/render-ads-stack.d.ts +0 -19
  98. package/dist/render-ads-stack.js +0 -282
  99. package/dist/render-ads-stack.js.map +0 -1
  100. package/dist/temple-ads-api.d.ts +0 -25
  101. package/dist/temple-ads-api.js +0 -69
  102. package/dist/temple-ads-api.js.map +0 -1
  103. package/dist/transform-raw-rules.d.ts +0 -3
  104. package/dist/transform-raw-rules.js +0 -143
  105. package/dist/transform-raw-rules.js.map +0 -1
  106. package/dist/types/ad-theme-params.d.ts +0 -6
  107. package/dist/types/ad-theme-params.js +0 -2
  108. package/dist/types/ad-theme-params.js.map +0 -1
  109. package/dist/types/ad-view.d.ts +0 -7
  110. package/dist/types/ad-view.js +0 -2
  111. package/dist/types/ad-view.js.map +0 -1
  112. package/dist/types/ads-actions.d.ts +0 -82
  113. package/dist/types/ads-actions.js +0 -16
  114. package/dist/types/ads-actions.js.map +0 -1
  115. package/dist/types/ads-meta.d.ts +0 -19
  116. package/dist/types/ads-meta.js +0 -2
  117. package/dist/types/ads-meta.js.map +0 -1
  118. package/dist/types/ads-provider.d.ts +0 -6
  119. package/dist/types/ads-provider.js +0 -7
  120. package/dist/types/ads-provider.js.map +0 -1
  121. package/dist/types/ads-rules.d.ts +0 -27
  122. package/dist/types/ads-rules.js +0 -2
  123. package/dist/types/ads-rules.js.map +0 -1
  124. package/dist/types/temple-ads-api.d.ts +0 -121
  125. package/dist/types/temple-ads-api.js +0 -2
  126. package/dist/types/temple-ads-api.js.map +0 -1
  127. package/dist/utils.d.ts +0 -9
  128. package/dist/utils.js +0 -28
  129. package/dist/utils.js.map +0 -1
@@ -1,156 +0,0 @@
1
- var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
2
- function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
3
- return new (P || (P = Promise))(function (resolve, reject) {
4
- function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
5
- function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
6
- function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
7
- step((generator = generator.apply(thisArg, _arguments || [])).next());
8
- });
9
- };
10
- import { memoize } from 'lodash';
11
- import { AdsConfiguration } from 'src/ads-configuration';
12
- import { SIBLING_REPLACEMENT_ATTRIBUTE_NAME } from 'src/constants';
13
- import { AdActionType, AdType } from 'src/types/ads-actions';
14
- import { delay } from 'src/utils';
15
- import { applyQuerySelector, elementIsOurAd, getFinalSize, ourAdQuerySelector, getParentOfDepth, PX_VALUE_REGEX } from './helpers';
16
- const styleToAdjustProps = [
17
- 'align-items',
18
- 'align-self',
19
- 'bottom',
20
- 'display',
21
- 'flex',
22
- 'flex-grow',
23
- 'flex-shrink',
24
- 'float',
25
- 'justify-content',
26
- 'justify-self',
27
- 'left',
28
- 'margin',
29
- 'max-block-size',
30
- 'max-height',
31
- 'max-inline-size',
32
- 'max-width',
33
- 'min-block-size',
34
- 'min-height',
35
- 'min-inline-size',
36
- 'min-width',
37
- 'padding',
38
- 'position',
39
- 'right',
40
- 'top',
41
- 'vertical-align',
42
- 'z-index'
43
- ];
44
- /** Returns such a minimal subset of ads dimensions that we can use to filter containers that cannot place any of our ads */
45
- const getSmallestBannersDimensions = memoize((bannerAdsMeta) => bannerAdsMeta.reduce((acc, { dimensions }) => {
46
- const result = acc.filter(({ width, height }) => width < dimensions.width || height < dimensions.height);
47
- if (result.length === 0 ||
48
- result.some(({ width, height }) => width > dimensions.width || height > dimensions.height)) {
49
- result.push(dimensions);
50
- }
51
- return result;
52
- }, []));
53
- export const processProvidersAds = (providersSelectors, providersNegativeSelectors, addActionsIfAdResolutionAvailable, result) => __awaiter(void 0, void 0, void 0, function* () {
54
- const smallestBannersDimensions = getSmallestBannersDimensions(AdsConfiguration.bannerAdsMeta);
55
- let bannersFromProviders = providersSelectors
56
- .map(({ selector: providersSelector, parentDepth, categories }) => applyQuerySelector(providersSelector, true).reduce((acc, foundElement) => {
57
- var _a;
58
- const newBanner = (_a = getParentOfDepth(foundElement, parentDepth)) !== null && _a !== void 0 ? _a : foundElement;
59
- const parentElementIndex = acc.findIndex(({ element }) => element.contains(newBanner));
60
- const parentStyles = newBanner.parentElement && window.getComputedStyle(newBanner.parentElement);
61
- const { width, height } = getFinalSize(newBanner);
62
- const bannerIsTouchedByOtherActions = result.some(action => {
63
- var _a;
64
- if (action.type === AdActionType.ReplaceAllChildren || action.type === AdActionType.SimpleInsertAd) {
65
- const parent = 'prevSibling' in action && action.prevSibling ? action.prevSibling.parentElement : action.parent;
66
- return parent && (parent.contains(newBanner) || newBanner.contains(parent));
67
- }
68
- return ((_a = action.element.parentElement) === null || _a === void 0 ? void 0 : _a.contains(newBanner)) || newBanner.contains(action.element);
69
- });
70
- const bannerIsHiddenByParent = (parentStyles === null || parentStyles === void 0 ? void 0 : parentStyles.display) === 'none' || (parentStyles === null || parentStyles === void 0 ? void 0 : parentStyles.visibility) === 'hidden';
71
- const hasAnchorParent = parentElementIndex >= 0 && acc[parentElementIndex] instanceof HTMLAnchorElement;
72
- const canPlaceAds = smallestBannersDimensions.some(({ width: minWidth, height: minHeight }) => width >= minWidth && height >= minHeight);
73
- if (bannerIsTouchedByOtherActions || !canPlaceAds || bannerIsHiddenByParent || hasAnchorParent) {
74
- return acc;
75
- }
76
- const newEntry = { element: newBanner, categories };
77
- if (parentElementIndex >= 0) {
78
- acc.splice(parentElementIndex, 1, newEntry);
79
- }
80
- else if (!acc.some(({ element: ancestorCandidate }) => ancestorCandidate.contains(newBanner))) {
81
- acc.push(newEntry);
82
- }
83
- return acc;
84
- }, []))
85
- .flat();
86
- const bannersFromProvidersToExclude = providersNegativeSelectors
87
- .map(({ selector, parentDepth }) => applyQuerySelector(selector, true)
88
- .map(foundElement => getParentOfDepth(foundElement, parentDepth))
89
- .filter((value) => Boolean(value)))
90
- .flat();
91
- bannersFromProviders = bannersFromProviders.filter(({ element }) => !bannersFromProvidersToExclude.includes(element));
92
- yield Promise.all(bannersFromProviders.map((_a) => __awaiter(void 0, [_a], void 0, function* ({ element: banner, categories }) {
93
- var _b, _c, _d, _e, _f, _g, _h, _j;
94
- yield delay(0);
95
- const parent = banner.parentElement;
96
- const { width: bannerStyleWidth, height: bannerStyleHeight } = window.getComputedStyle(banner);
97
- const elementToMeasure = PX_VALUE_REGEX.test(bannerStyleWidth) && PX_VALUE_REGEX.test(bannerStyleHeight)
98
- ? banner
99
- : (_c = (_b = parent === null || parent === void 0 ? void 0 : parent.closest('div, article, aside, footer, header')) !== null && _b !== void 0 ? _b : ((parent === null || parent === void 0 ? void 0 : parent.tagName.toLowerCase()) === 'body' ? undefined : parent)) !== null && _c !== void 0 ? _c : banner;
100
- if (!elementIsOurAd(banner) &&
101
- !banner.querySelector(ourAdQuerySelector) &&
102
- !result.some(action => action.type === AdActionType.SimpleInsertAd
103
- ? false
104
- : action.type === AdActionType.ReplaceAllChildren
105
- ? action.parent.contains(banner)
106
- : action.element === banner)) {
107
- const bannerStyleAttribute = (_d = banner.getAttribute('style')) !== null && _d !== void 0 ? _d : '';
108
- const bannerStyleFromAttribute = Object.fromEntries(bannerStyleAttribute
109
- .split(';')
110
- .filter(Boolean)
111
- .map(style => style.split(':').map(part => part.trim())));
112
- if (((_e = bannerStyleFromAttribute.width) === null || _e === void 0 ? void 0 : _e.match(/^0[a-z]/)) || ((_f = bannerStyleFromAttribute.height) === null || _f === void 0 ? void 0 : _f.match(/^0[a-z]/))) {
113
- return;
114
- }
115
- const bannerStyle = window.getComputedStyle(banner);
116
- const wrapperStyle = Object.assign(Object.assign({}, Object.fromEntries(styleToAdjustProps.map(propName => [propName, bannerStyle.getPropertyValue(propName)]))), bannerStyleFromAttribute);
117
- if (wrapperStyle.display === 'none') {
118
- delete wrapperStyle.display;
119
- }
120
- const hideAction = {
121
- type: AdActionType.HideElement,
122
- element: banner
123
- };
124
- const insertAdAction = {
125
- type: AdActionType.SimpleInsertAd,
126
- wrapperStyle,
127
- parent: (_g = banner.parentElement) !== null && _g !== void 0 ? _g : document.body,
128
- insertionIndex: Array.from((_j = (_h = banner.parentElement) === null || _h === void 0 ? void 0 : _h.children) !== null && _j !== void 0 ? _j : []).indexOf(banner),
129
- isSiblingReplacement: true,
130
- shouldUseBlurredBackground: true,
131
- adCategories: categories
132
- };
133
- let actions;
134
- const closestElementWithSiblingReplacement = banner.closest(`[${SIBLING_REPLACEMENT_ATTRIBUTE_NAME}] + *`);
135
- if (closestElementWithSiblingReplacement && closestElementWithSiblingReplacement !== banner) {
136
- // This approach should improve ads alignment
137
- actions = [
138
- {
139
- type: AdActionType.RemoveElement,
140
- element: closestElementWithSiblingReplacement.previousElementSibling
141
- },
142
- hideAction,
143
- insertAdAction
144
- ];
145
- }
146
- else if (closestElementWithSiblingReplacement) {
147
- actions = window.getComputedStyle(banner).display === 'none' ? [] : [hideAction];
148
- }
149
- else {
150
- actions = [hideAction, insertAdAction];
151
- }
152
- addActionsIfAdResolutionAvailable({ width: elementToMeasure, height: elementToMeasure }, AdType.ProviderReplacement, false, categories, ...actions);
153
- }
154
- })));
155
- });
156
- //# sourceMappingURL=process-providers-ads.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"process-providers-ads.js","sourceRoot":"","sources":["../../src/ads-actions/process-providers-ads.ts"],"names":[],"mappings":"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"}
@@ -1,3 +0,0 @@
1
- import { AddActionsIfAdResolutionAvailable } from 'src/types/ads-actions';
2
- import { AdsRules } from 'src/types/ads-rules';
3
- export declare const processAdPlacesRule: (rule: AdsRules['adPlacesRules'][number], permanentAdsParents: HTMLElement[], addActionsIfAdResolutionAvailable: AddActionsIfAdResolutionAvailable) => Promise<void>;
@@ -1,103 +0,0 @@
1
- var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
2
- function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
3
- return new (P || (P = Promise))(function (resolve, reject) {
4
- function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
5
- function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
6
- function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
7
- step((generator = generator.apply(thisArg, _arguments || [])).next());
8
- });
9
- };
10
- var __rest = (this && this.__rest) || function (s, e) {
11
- var t = {};
12
- for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)
13
- t[p] = s[p];
14
- if (s != null && typeof Object.getOwnPropertySymbols === "function")
15
- for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {
16
- if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))
17
- t[p[i]] = s[p[i]];
18
- }
19
- return t;
20
- };
21
- import { CRYPTO_CATEGORY_NAME } from 'src/constants';
22
- import { AdActionType, AdType } from 'src/types/ads-actions';
23
- import { delay } from 'src/utils';
24
- import { applyQuerySelector, elementIsOurAd, getParentOfDepth, prevBannerSiblingIsReplacement, ourAdQuerySelector } from './helpers';
25
- export const processAdPlacesRule = (rule, permanentAdsParents, addActionsIfAdResolutionAvailable) => __awaiter(void 0, void 0, void 0, function* () {
26
- const { cssString, isMultiple } = rule.selector;
27
- const selectedElements = applyQuerySelector(cssString, isMultiple);
28
- yield Promise.all(selectedElements.map((selectedElement) => __awaiter(void 0, void 0, void 0, function* () {
29
- yield delay(0);
30
- processSelectedElement(selectedElement, rule, permanentAdsParents, addActionsIfAdResolutionAvailable);
31
- })));
32
- });
33
- const processSelectedElement = (selectedElement, rule, permanentAdsParents, addActionsIfAdResolutionAvailable) => {
34
- const { selector: { shouldUseDivWrapper, parentDepth, divWrapperStyle, elementStyle }, stylesOverrides, shouldHideOriginal, isNative = false, supportsTheming = false, fontSampleSelector } = rule;
35
- const banner = getParentOfDepth(selectedElement, parentDepth);
36
- if (!banner ||
37
- permanentAdsParents.some(parent => parent.contains(banner)) ||
38
- elementIsOurAd(banner) ||
39
- banner.querySelector(ourAdQuerySelector)) {
40
- return;
41
- }
42
- const actionBaseCommonProps = {
43
- shouldUseDivWrapper,
44
- wrapperStyle: divWrapperStyle,
45
- elementStyle,
46
- supportsTheming,
47
- fontSampleSelector
48
- };
49
- let actionsBases;
50
- if (shouldUseDivWrapper && shouldHideOriginal) {
51
- const parent = banner.parentElement;
52
- const bannerIsHidden = window.getComputedStyle(banner).display === 'none';
53
- const insertAdAction = Object.assign({ type: AdActionType.SimpleInsertAd, parent, insertionIndex: Array.from(parent.children).indexOf(banner), stylesOverrides: stylesOverrides === null || stylesOverrides === void 0 ? void 0 : stylesOverrides.map((_a) => {
54
- var { parentDepth } = _a, restProps = __rest(_a, ["parentDepth"]);
55
- return (Object.assign(Object.assign({}, restProps), { parentDepth: parentDepth - 1 }));
56
- }), isSiblingReplacement: true, adCategories: [CRYPTO_CATEGORY_NAME] }, actionBaseCommonProps);
57
- actionsBases = [];
58
- if (!bannerIsHidden) {
59
- actionsBases.push({ type: AdActionType.HideElement, element: banner });
60
- }
61
- if (!prevBannerSiblingIsReplacement(banner)) {
62
- actionsBases.push(insertAdAction);
63
- }
64
- }
65
- else if (shouldUseDivWrapper) {
66
- const replaceElementActionBase = Object.assign({ type: AdActionType.ReplaceElement, element: banner, stylesOverrides: stylesOverrides === null || stylesOverrides === void 0 ? void 0 : stylesOverrides.map((_a) => {
67
- var { parentDepth } = _a, restProps = __rest(_a, ["parentDepth"]);
68
- return (Object.assign(Object.assign({}, restProps), { parentDepth: parentDepth - 1 }));
69
- }), adCategories: [CRYPTO_CATEGORY_NAME] }, actionBaseCommonProps);
70
- actionsBases = [replaceElementActionBase];
71
- }
72
- else if (shouldHideOriginal) {
73
- const insertAdAction = {
74
- type: AdActionType.SimpleInsertAd,
75
- parent: banner,
76
- insertionIndex: 0,
77
- stylesOverrides,
78
- isSiblingReplacement: true,
79
- adCategories: [CRYPTO_CATEGORY_NAME],
80
- wrapperStyle: { display: 'contents' }
81
- };
82
- actionsBases = Array.from(banner.children)
83
- .filter(child => window.getComputedStyle(child).display !== 'none')
84
- .map((child) => ({ type: AdActionType.HideElement, element: child }));
85
- if (!banner.querySelector(ourAdQuerySelector)) {
86
- actionsBases.push(insertAdAction);
87
- }
88
- }
89
- else {
90
- const replaceAllChildrenActionBase = {
91
- type: AdActionType.ReplaceAllChildren,
92
- parent: banner,
93
- stylesOverrides,
94
- adCategories: [CRYPTO_CATEGORY_NAME],
95
- wrapperStyle: { display: 'contents' }
96
- };
97
- actionsBases = [replaceAllChildrenActionBase];
98
- }
99
- if (actionsBases.length > 0) {
100
- addActionsIfAdResolutionAvailable({ width: banner, height: banner }, AdType.SlotReplacement, isNative, [CRYPTO_CATEGORY_NAME], ...actionsBases);
101
- }
102
- };
103
- //# sourceMappingURL=process-rule.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"process-rule.js","sourceRoot":"","sources":["../../src/ads-actions/process-rule.ts"],"names":[],"mappings":"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"}
@@ -1,20 +0,0 @@
1
- import { AdAction, AddActionsIfAdResolutionAvailable } from 'src/types/ads-actions';
2
- /**
3
- * Handles ad insertion into the YouTube Home page grid.
4
- *
5
- * The grid (`#contents` inside `ytd-rich-grid-renderer`) contains a flat sequence of
6
- * `ytd-rich-item-renderer` elements (video/ad cards) and `ytd-rich-section-renderer`
7
- * elements (full-width shelf rows). Each item card occupies 1/N of the row width, where
8
- * N = `--ytd-rich-grid-items-per-row` (1–3 depending on screen width).
9
- *
10
- * Strategy:
11
- * 1. Find the first original YouTube ad slot (`ytd-ad-slot-renderer`).
12
- * 2. Insert our native HypeLab ad immediately after it.
13
- * 3. Cascade row-balancing: inserting one item may push a partial item past a section
14
- * boundary. For each fully-filled segment (item count divisible by N) that gains an
15
- * extra item, move the overflow item to the start of the next segment. The cascade
16
- * continues until a non-full segment absorbs the extra item or sections run out.
17
- */
18
- export declare const isYoutubeHomePage: () => boolean;
19
- export declare const processYoutubeHomeAds: (addActionsIfAdResolutionAvailable: AddActionsIfAdResolutionAvailable, result: AdAction[]) => void;
20
- export declare const rebalanceYoutubeHomeRows: (result: AdAction[]) => void;
@@ -1,140 +0,0 @@
1
- import { CRYPTO_CATEGORY_NAME } from 'src/constants';
2
- import { AdActionType, AdType } from 'src/types/ads-actions';
3
- import { isYoutubePage, ourNativeAdQuerySelector } from './helpers';
4
- const GRID_RENDERER_SELECTOR = 'ytd-rich-grid-renderer';
5
- const CONTENTS_SELECTOR = '#contents';
6
- const RICH_ITEM_SELECTOR = 'ytd-rich-item-renderer';
7
- const YOUTUBE_AD_SLOT_SELECTOR = 'ytd-ad-slot-renderer';
8
- const SECTION_SELECTOR = 'ytd-rich-section-renderer';
9
- const ITEMS_PER_ROW_CSS_VAR = '--ytd-rich-grid-items-per-row';
10
- const ITEM_MARGIN_CSS_VAR = '--ytd-rich-grid-item-margin';
11
- /**
12
- * Handles ad insertion into the YouTube Home page grid.
13
- *
14
- * The grid (`#contents` inside `ytd-rich-grid-renderer`) contains a flat sequence of
15
- * `ytd-rich-item-renderer` elements (video/ad cards) and `ytd-rich-section-renderer`
16
- * elements (full-width shelf rows). Each item card occupies 1/N of the row width, where
17
- * N = `--ytd-rich-grid-items-per-row` (1–3 depending on screen width).
18
- *
19
- * Strategy:
20
- * 1. Find the first original YouTube ad slot (`ytd-ad-slot-renderer`).
21
- * 2. Insert our native HypeLab ad immediately after it.
22
- * 3. Cascade row-balancing: inserting one item may push a partial item past a section
23
- * boundary. For each fully-filled segment (item count divisible by N) that gains an
24
- * extra item, move the overflow item to the start of the next segment. The cascade
25
- * continues until a non-full segment absorbs the extra item or sections run out.
26
- */
27
- export const isYoutubeHomePage = () => isYoutubePage() && globalThis.location.pathname === '/';
28
- const parseYoutubeHomePage = () => {
29
- const gridRenderer = document.querySelector(GRID_RENDERER_SELECTOR);
30
- if (!gridRenderer)
31
- return;
32
- const itemsPerRow = Number.parseInt(getComputedStyle(gridRenderer).getPropertyValue(ITEMS_PER_ROW_CSS_VAR).trim(), 10);
33
- if (Number.isNaN(itemsPerRow) || itemsPerRow < 1)
34
- return;
35
- const contentsEl = gridRenderer.querySelector(CONTENTS_SELECTOR);
36
- if (!contentsEl)
37
- return;
38
- const children = [...contentsEl.children].filter((el) => el instanceof HTMLElement);
39
- // Locate the first original YouTube ad card.
40
- const firstAdItem = children.find(el => el.matches(RICH_ITEM_SELECTOR) && Boolean(el.querySelector(YOUTUBE_AD_SLOT_SELECTOR)));
41
- if (!firstAdItem)
42
- return;
43
- const firstAdIndex = children.indexOf(firstAdItem);
44
- // Collect indices of all sections that follow the first ad — they are the segment
45
- // boundaries used for cascade row-balancing below.
46
- const sectionIndices = children.flatMap((el, i) => (el.matches(SECTION_SELECTOR) ? [i] : []));
47
- const sectionsBeforeAdCount = sectionIndices.length === 0 ? 0 : sectionIndices.findIndex(i => i > firstAdIndex);
48
- return { itemsPerRow, contentsEl, children, firstAdItem, firstAdIndex, sectionIndices, sectionsBeforeAdCount };
49
- };
50
- export const processYoutubeHomeAds = (addActionsIfAdResolutionAvailable, result) => {
51
- var _a;
52
- const parseResult = parseYoutubeHomePage();
53
- if (!parseResult)
54
- return;
55
- const { itemsPerRow, contentsEl, children, firstAdItem, firstAdIndex, sectionIndices, sectionsBeforeAdCount } = parseResult;
56
- // Skip if our native ad is already present in the grid.
57
- if (contentsEl.querySelector(ourNativeAdQuerySelector))
58
- return;
59
- const insertActionBase = {
60
- type: AdActionType.SimpleInsertAd,
61
- parent: contentsEl,
62
- prevSibling: firstAdItem,
63
- isSiblingReplacement: false,
64
- // Make the wrapper fill exactly one grid column so it fits naturally in the row.
65
- wrapperStyle: {
66
- width: `calc(100% / var(${ITEMS_PER_ROW_CSS_VAR}) - var(${ITEM_MARGIN_CSS_VAR}))`,
67
- margin: `0 calc(var(${ITEM_MARGIN_CSS_VAR}) / 2) var(--ytd-rich-grid-row-margin)`,
68
- display: 'flex',
69
- 'flex-direction': 'column'
70
- },
71
- elementStyle: { width: 'auto', margin: '-11px -11px 0' },
72
- adCategories: [CRYPTO_CATEGORY_NAME],
73
- supportsTheming: true,
74
- showAdBeforeLoaded: true,
75
- backgroundColor: '#00000000'
76
- };
77
- // `addActionsIfAdResolutionAvailable` measures `firstAdItem`, calls `buildNativeAdsMeta`,
78
- // and — if metadata is available — appends the fully-resolved `SimpleInsertAdAction`.
79
- const inserted = addActionsIfAdResolutionAvailable({ width: firstAdItem, height: firstAdItem }, AdType.Permanent, true, // native HypeLab ad
80
- [CRYPTO_CATEGORY_NAME], insertActionBase);
81
- if (!inserted)
82
- return;
83
- // Cascade: our insertion adds 1 item to segment0. For each fully-filled segment
84
- // (original count divisible by N), that extra item cannot fit in a complete row and
85
- // must be moved to the start of the next segment, potentially triggering the same
86
- // check there. The cascade stops as soon as a non-full segment absorbs the overflow.
87
- //
88
- // Each `MoveElementAction` captures stable DOM references from the original `children`
89
- // array. The overflow item at index `sectionIdx - 1` is the last card of the segment
90
- // (in the original layout); `insertBeforeElement` is the first card after the section.
91
- // Both references remain valid during execution because `SimpleInsertAdAction` inserts
92
- // before the section, leaving everything after it untouched.
93
- //
94
- // Edge case for segment0: when firstAdItem is the last original item before the first
95
- // section, OUR_AD itself becomes the overflow item — it has no entry in `children` yet,
96
- // so we stop the cascade there.
97
- for (let s = sectionsBeforeAdCount; s < sectionIndices.length; s++) {
98
- const sectionIdx = sectionIndices[s];
99
- const segStart = s === sectionsBeforeAdCount && sectionsBeforeAdCount === 0 ? 0 : sectionIndices[s - 1] + 1;
100
- const segSize = sectionIdx - segStart;
101
- if (segSize % itemsPerRow !== 0) {
102
- // Already-partial segment absorbs the overflow; cascade ends.
103
- break;
104
- }
105
- const overflowIdx = sectionIdx - 1;
106
- if (s === sectionsBeforeAdCount && firstAdIndex >= overflowIdx) {
107
- // OUR_AD is the overflow item — cannot reference it; cascade ends.
108
- break;
109
- }
110
- result.push({
111
- type: AdActionType.MoveElement,
112
- element: children[overflowIdx],
113
- parent: contentsEl,
114
- // `insertBefore(el, null)` appends when there is no next sibling.
115
- insertBeforeElement: (_a = children[sectionIdx + 1]) !== null && _a !== void 0 ? _a : null
116
- });
117
- }
118
- };
119
- export const rebalanceYoutubeHomeRows = (result) => {
120
- var _a;
121
- const parseResult = parseYoutubeHomePage();
122
- if (!parseResult)
123
- return;
124
- const { itemsPerRow, contentsEl, children, sectionIndices, sectionsBeforeAdCount } = parseResult;
125
- for (let s = sectionsBeforeAdCount; s < sectionIndices.length; s++) {
126
- const sectionIdx = sectionIndices[s];
127
- const segStart = s === sectionsBeforeAdCount && sectionsBeforeAdCount === 0 ? 0 : sectionIndices[s - 1] + 1;
128
- const segSize = sectionIdx - segStart - 1;
129
- if (segSize % itemsPerRow === 0 || !children[sectionIdx + 1]) {
130
- break;
131
- }
132
- result.push({
133
- type: AdActionType.MoveElement,
134
- element: children[sectionIdx + 1],
135
- parent: contentsEl,
136
- insertBeforeElement: (_a = children[sectionIdx]) !== null && _a !== void 0 ? _a : null
137
- });
138
- }
139
- };
140
- //# sourceMappingURL=process-youtube-home-ads.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"process-youtube-home-ads.js","sourceRoot":"","sources":["../../src/ads-actions/process-youtube-home-ads.ts"],"names":[],"mappings":"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"}
@@ -1,3 +0,0 @@
1
- import { AddActionsIfAdResolutionAvailable } from 'src/types/ads-actions';
2
- export declare const isYoutubeSearchPage: () => boolean;
3
- export declare const processYoutubeSearchAds: (addActionsIfAdResolutionAvailable: AddActionsIfAdResolutionAvailable) => Promise<void>;
@@ -1,115 +0,0 @@
1
- var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
2
- function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
3
- return new (P || (P = Promise))(function (resolve, reject) {
4
- function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
5
- function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
6
- function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
7
- step((generator = generator.apply(thisArg, _arguments || [])).next());
8
- });
9
- };
10
- import memoizee from 'memoizee';
11
- import { AdsConfiguration } from 'src/ads-configuration';
12
- import { CRYPTO_CATEGORY_NAME } from 'src/constants';
13
- import { AdActionType, AdType } from 'src/types/ads-actions';
14
- import { isYoutubeLoadingComplete, isYoutubePage, ourNativeAdQuerySelector, textIsCryptoRelated } from './helpers';
15
- export const isYoutubeSearchPage = () => isYoutubePage() && globalThis.location.pathname.startsWith('/results');
16
- const DESCRIPTION_TEXT_SELECTOR = '#description-text:not([hidden]) yt-attributed-string, #description-text[hidden] + * > yt-formatted-string';
17
- const GRID_RENDERER_SELECTOR = 'ytd-two-column-search-results-renderer[page-subtype="search"]';
18
- const parseYoutubeSearchPage = (contentsEl) => {
19
- var _a, _b;
20
- const query = (_b = (_a = new URLSearchParams(globalThis.location.search).get('search_query')) === null || _a === void 0 ? void 0 : _a.replace('+', ' ').slice(0, 500)) !== null && _b !== void 0 ? _b : '';
21
- const items = contentsEl.querySelectorAll('ytd-channel-renderer, ytd-video-renderer');
22
- if (items.length === 0)
23
- return;
24
- const rawSearchResults = Array.from(items).map((item) => {
25
- var _a, _b, _c, _d, _e, _f, _g, _h, _j, _k;
26
- if (item.tagName === 'YTD-CHANNEL-RENDERER') {
27
- return {
28
- name: (_a = item.querySelector('ytd-channel-name yt-formatted-string')) === null || _a === void 0 ? void 0 : _a.innerText.slice(0, 200),
29
- id: (_b = item.querySelector('#metadata > *:first-child')) === null || _b === void 0 ? void 0 : _b.innerText.slice(0, 100),
30
- description: (_d = (_c = item.querySelector('#description')) === null || _c === void 0 ? void 0 : _c.innerText.slice(0, 500)) !== null && _d !== void 0 ? _d : ''
31
- };
32
- }
33
- const videoTitleElement = item.querySelector('#video-title');
34
- const channelNameElement = item.querySelector('ytd-channel-name a');
35
- return {
36
- title: (_e = ((videoTitleElement === null || videoTitleElement === void 0 ? void 0 : videoTitleElement.title) || (videoTitleElement === null || videoTitleElement === void 0 ? void 0 : videoTitleElement.innerText))) === null || _e === void 0 ? void 0 : _e.slice(0, 500),
37
- channelName: (_f = channelNameElement === null || channelNameElement === void 0 ? void 0 : channelNameElement.innerText) === null || _f === void 0 ? void 0 : _f.slice(0, 200),
38
- channelId: (_g = channelNameElement === null || channelNameElement === void 0 ? void 0 : channelNameElement.href.split('/').pop()) === null || _g === void 0 ? void 0 : _g.slice(0, 100),
39
- description: (_k = (_j = (_h = item.querySelector(DESCRIPTION_TEXT_SELECTOR)) === null || _h === void 0 ? void 0 : _h.innerText) === null || _j === void 0 ? void 0 : _j.slice(0, 500)) !== null && _k !== void 0 ? _k : ''
40
- };
41
- });
42
- const results = rawSearchResults
43
- .filter((item) => {
44
- if ('name' in item) {
45
- const { name, id, description } = item;
46
- return Boolean(name && id && description);
47
- }
48
- if ('title' in item) {
49
- const { title, channelName, channelId, description } = item;
50
- return Boolean(title && channelName && channelId && description);
51
- }
52
- return false;
53
- })
54
- .slice(0, 20);
55
- return results.length > 0 ? { query, results } : undefined;
56
- };
57
- const pageIsCryptoRelated = memoizee((parseResult) => __awaiter(void 0, void 0, void 0, function* () {
58
- const { query, results } = parseResult;
59
- const cryptoKeywordsSearchText = query +
60
- '\n' +
61
- results
62
- .map(result => {
63
- if ('name' in result) {
64
- const { name, id, description } = result;
65
- return `${name} (${id}) ${description}`;
66
- }
67
- const { title, channelName, channelId, description } = result;
68
- return `${title} (${channelName}, ${channelId}) ${description}`;
69
- })
70
- .join('\n');
71
- if (!textIsCryptoRelated(cryptoKeywordsSearchText))
72
- return false;
73
- try {
74
- const analysisResponse = yield AdsConfiguration.analyzeYoutubeSearchPage(parseResult);
75
- const { confidence, isCryptoRelated } = analysisResponse;
76
- return isCryptoRelated && confidence > 0.5;
77
- }
78
- catch (error) {
79
- console.error(error);
80
- return true;
81
- }
82
- }), {
83
- max: 100,
84
- normalizer: args => [args[0].query].concat(args[0].results.map(res => ('title' in res ? res.title : res.id))).join('')
85
- });
86
- export const processYoutubeSearchAds = (addActionsIfAdResolutionAvailable) => __awaiter(void 0, void 0, void 0, function* () {
87
- if (!isYoutubeLoadingComplete())
88
- return;
89
- const gridRenderer = document.querySelector(GRID_RENDERER_SELECTOR);
90
- if (!gridRenderer)
91
- return;
92
- const contentsEl = gridRenderer.querySelector('ytd-section-list-renderer #contents');
93
- if (!contentsEl)
94
- return;
95
- if (contentsEl.querySelector(ourNativeAdQuerySelector))
96
- return;
97
- const adElement = contentsEl.querySelector('ytd-ad-slot-renderer');
98
- if (!adElement)
99
- return;
100
- const parseResult = parseYoutubeSearchPage(contentsEl);
101
- if (parseResult && (yield pageIsCryptoRelated(parseResult))) {
102
- addActionsIfAdResolutionAvailable({ width: adElement, height: adElement }, AdType.Permanent, true, [CRYPTO_CATEGORY_NAME], {
103
- type: AdActionType.SimpleInsertAd,
104
- parent: undefined,
105
- prevSibling: adElement,
106
- isSiblingReplacement: false,
107
- wrapperStyle: { width: '100%', 'margin-top': 'var(--ytd-item-section-item-margin, 16px)' },
108
- elementStyle: { width: '100%' },
109
- adCategories: [CRYPTO_CATEGORY_NAME],
110
- supportsTheming: true,
111
- backgroundColor: '#00000000'
112
- });
113
- }
114
- });
115
- //# sourceMappingURL=process-youtube-search-ads.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"process-youtube-search-ads.js","sourceRoot":"","sources":["../../src/ads-actions/process-youtube-search-ads.ts"],"names":[],"mappings":"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"}
@@ -1,3 +0,0 @@
1
- import { AddActionsIfAdResolutionAvailable } from 'src/types/ads-actions';
2
- export declare const isYoutubeWatchPage: () => boolean;
3
- export declare const processYoutubeWatchAds: (addActionsIfAdResolutionAvailable: AddActionsIfAdResolutionAvailable) => Promise<void>;