@temple-wallet/extension-ads 8.1.0-dev.1 → 8.1.0-dev.3
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.
- package/dist/ads-actions/helpers.d.ts +17 -0
- package/dist/ads-actions/helpers.js +96 -0
- package/dist/ads-actions/helpers.js.map +1 -0
- package/dist/ads-actions/index.d.ts +3 -0
- package/dist/ads-actions/index.js +63 -0
- package/dist/ads-actions/index.js.map +1 -0
- package/dist/ads-actions/process-elements-to-hide-or-remove-rule.d.ts +3 -0
- package/dist/ads-actions/process-elements-to-hide-or-remove-rule.js +19 -0
- package/dist/ads-actions/process-elements-to-hide-or-remove-rule.js.map +1 -0
- package/dist/ads-actions/process-permanent-rule.d.ts +3 -0
- package/dist/ads-actions/process-permanent-rule.js +143 -0
- package/dist/ads-actions/process-permanent-rule.js.map +1 -0
- package/dist/ads-actions/process-providers-ads.d.ts +3 -0
- package/dist/ads-actions/process-providers-ads.js +137 -0
- package/dist/ads-actions/process-providers-ads.js.map +1 -0
- package/dist/ads-actions/process-rule.d.ts +3 -0
- package/dist/ads-actions/process-rule.js +98 -0
- package/dist/ads-actions/process-rule.js.map +1 -0
- package/dist/ads-configuration.d.ts +31 -0
- package/dist/ads-configuration.js +30 -0
- package/dist/ads-configuration.js.map +1 -0
- package/dist/constants.d.ts +11 -0
- package/dist/constants.js +12 -0
- package/dist/constants.js.map +1 -0
- package/dist/execute-ads-actions/ads-views/index.d.ts +3 -0
- package/dist/execute-ads-actions/ads-views/index.js +4 -0
- package/dist/execute-ads-actions/ads-views/index.js.map +1 -0
- package/dist/execute-ads-actions/ads-views/make-ads-tw-view.d.ts +3 -0
- package/dist/execute-ads-actions/ads-views/make-ads-tw-view.js +40 -0
- package/dist/execute-ads-actions/ads-views/make-ads-tw-view.js.map +1 -0
- package/dist/execute-ads-actions/ads-views/make-extension-iframe-view.d.ts +3 -0
- package/dist/execute-ads-actions/ads-views/make-extension-iframe-view.js +22 -0
- package/dist/execute-ads-actions/ads-views/make-extension-iframe-view.js.map +1 -0
- package/dist/execute-ads-actions/ads-views/make-tkey-ad.d.ts +3 -0
- package/dist/execute-ads-actions/ads-views/make-tkey-ad.js +38 -0
- package/dist/execute-ads-actions/ads-views/make-tkey-ad.js.map +1 -0
- package/dist/execute-ads-actions/index.d.ts +2 -0
- package/dist/execute-ads-actions/index.js +23 -0
- package/dist/execute-ads-actions/index.js.map +1 -0
- package/dist/execute-ads-actions/observing.d.ts +1 -0
- package/dist/execute-ads-actions/observing.js +129 -0
- package/dist/execute-ads-actions/observing.js.map +1 -0
- package/dist/execute-ads-actions/override-element-styles.d.ts +2 -0
- package/dist/execute-ads-actions/override-element-styles.js +6 -0
- package/dist/execute-ads-actions/override-element-styles.js.map +1 -0
- package/dist/execute-ads-actions/process-insert-ad-action.d.ts +2 -0
- package/dist/execute-ads-actions/process-insert-ad-action.js +153 -0
- package/dist/execute-ads-actions/process-insert-ad-action.js.map +1 -0
- package/dist/index.d.ts +55 -41
- package/dist/index.js +11 -12
- package/dist/index.js.map +1 -0
- package/dist/render-ads-stack.d.ts +7 -0
- package/dist/render-ads-stack.js +156 -0
- package/dist/render-ads-stack.js.map +1 -0
- package/dist/temple-wallet-api.d.ts +23 -0
- package/dist/temple-wallet-api.js +67 -0
- package/dist/temple-wallet-api.js.map +1 -0
- package/dist/transform-raw-rules.d.ts +3 -0
- package/dist/transform-raw-rules.js +137 -0
- package/dist/transform-raw-rules.js.map +1 -0
- package/dist/types/ad-view.d.ts +7 -0
- package/dist/types/ad-view.js +2 -0
- package/dist/types/ad-view.js.map +1 -0
- package/dist/types/ads-actions.d.ts +56 -0
- package/dist/types/ads-actions.js +15 -0
- package/dist/types/ads-actions.js.map +1 -0
- package/dist/types/ads-meta.d.ts +19 -0
- package/dist/types/ads-meta.js +2 -0
- package/dist/types/ads-meta.js.map +1 -0
- package/dist/types/ads-provider.d.ts +8 -0
- package/dist/types/ads-provider.js +9 -0
- package/dist/types/ads-provider.js.map +1 -0
- package/dist/types/ads-rules.d.ts +26 -0
- package/dist/types/ads-rules.js +2 -0
- package/dist/types/ads-rules.js.map +1 -0
- package/dist/types/temple-wallet-api.d.ts +78 -0
- package/dist/types/temple-wallet-api.js +2 -0
- package/dist/types/temple-wallet-api.js.map +1 -0
- package/dist/utils.d.ts +6 -0
- package/dist/utils.js +4 -0
- package/dist/utils.js.map +1 -0
- package/package.json +1 -1
- package/src/ads-actions/helpers.ts +17 -2
- package/src/execute-ads-actions/observing.ts +3 -1
- package/src/render-ads-stack.ts +9 -1
- package/src/execute-ads-actions/utils.ts +0 -24
|
@@ -0,0 +1,78 @@
|
|
|
1
|
+
export interface AdStylesOverrides {
|
|
2
|
+
parentDepth: number;
|
|
3
|
+
style: Record<string, string>;
|
|
4
|
+
}
|
|
5
|
+
export interface RawAdPlacesRule {
|
|
6
|
+
urlRegexes: string[];
|
|
7
|
+
selector: {
|
|
8
|
+
isMultiple: boolean;
|
|
9
|
+
cssString: string;
|
|
10
|
+
parentDepth: number;
|
|
11
|
+
shouldUseDivWrapper: boolean;
|
|
12
|
+
divWrapperStyle?: Record<string, string>;
|
|
13
|
+
};
|
|
14
|
+
stylesOverrides?: AdStylesOverrides[];
|
|
15
|
+
shouldHideOriginal?: boolean;
|
|
16
|
+
isNative?: boolean;
|
|
17
|
+
}
|
|
18
|
+
export type ElementsToMeasure = Record<'width' | 'height', string>;
|
|
19
|
+
export interface RawPermanentAdPlacesRule {
|
|
20
|
+
urlRegexes: string[];
|
|
21
|
+
adSelector: {
|
|
22
|
+
isMultiple: boolean;
|
|
23
|
+
cssString: string;
|
|
24
|
+
parentDepth: number;
|
|
25
|
+
};
|
|
26
|
+
parentSelector: {
|
|
27
|
+
isMultiple: boolean;
|
|
28
|
+
cssString: string;
|
|
29
|
+
parentDepth: number;
|
|
30
|
+
};
|
|
31
|
+
insertionIndex?: number;
|
|
32
|
+
insertBeforeSelector?: string;
|
|
33
|
+
insertAfterSelector?: string;
|
|
34
|
+
insertionsCount?: number;
|
|
35
|
+
shouldUseDivWrapper?: boolean;
|
|
36
|
+
wrapperType?: 'div' | 'tbody';
|
|
37
|
+
colsBefore?: number;
|
|
38
|
+
colspan?: number;
|
|
39
|
+
colsAfter?: number;
|
|
40
|
+
divWrapperStyle?: Record<string, string>;
|
|
41
|
+
wrapperStyle?: Record<string, string>;
|
|
42
|
+
elementStyle?: Record<string, string>;
|
|
43
|
+
elementToMeasureSelector?: string;
|
|
44
|
+
elementsToMeasureSelectors?: ElementsToMeasure;
|
|
45
|
+
stylesOverrides?: AdStylesOverrides[];
|
|
46
|
+
shouldHideOriginal?: boolean;
|
|
47
|
+
displayWidth?: string;
|
|
48
|
+
}
|
|
49
|
+
export interface RawAdProvidersRule {
|
|
50
|
+
urlRegexes: string[];
|
|
51
|
+
providers: string[];
|
|
52
|
+
}
|
|
53
|
+
export interface RawElementsToHideOrRemoveEntry {
|
|
54
|
+
cssString: string;
|
|
55
|
+
parentDepth: number;
|
|
56
|
+
isMultiple: boolean;
|
|
57
|
+
urlRegexes: string[];
|
|
58
|
+
shouldHide: boolean;
|
|
59
|
+
}
|
|
60
|
+
export interface RawAllAdsRules {
|
|
61
|
+
adPlacesRulesForAllDomains: Record<string, RawAdPlacesRule[]>;
|
|
62
|
+
providersCategories: Record<string, string[]>;
|
|
63
|
+
providersRulesForAllDomains: Record<string, RawAdProvidersRule[]>;
|
|
64
|
+
providersSelectors: Record<string, (string | {
|
|
65
|
+
selector: string;
|
|
66
|
+
parentDepth: number;
|
|
67
|
+
})[]>;
|
|
68
|
+
providersNegativeSelectors: Record<string, (string | {
|
|
69
|
+
selector: string;
|
|
70
|
+
parentDepth: number;
|
|
71
|
+
})[]>;
|
|
72
|
+
providersToReplaceAtAllSites: string[];
|
|
73
|
+
permanentAdPlacesRulesForAllDomains: Record<string, RawPermanentAdPlacesRule[]>;
|
|
74
|
+
permanentNativeAdPlacesRulesForAllDomains: Record<string, RawPermanentAdPlacesRule[]>;
|
|
75
|
+
adsReplaceUrlsBlacklist: string[];
|
|
76
|
+
elementsToHideOrRemoveRules: Record<string, RawElementsToHideOrRemoveEntry[]>;
|
|
77
|
+
timestamp: number;
|
|
78
|
+
}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"temple-wallet-api.js","sourceRoot":"","sources":["../../src/types/temple-wallet-api.ts"],"names":[],"mappings":""}
|
package/dist/utils.d.ts
ADDED
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
/** From lodash */
|
|
2
|
+
type Truthy<T> = T extends null | undefined | void | false | '' | 0 | 0n ? never : T;
|
|
3
|
+
export declare const isTruthy: <T>(value: T) => value is Truthy<T>;
|
|
4
|
+
export declare const delay: (ms?: number) => Promise<unknown>;
|
|
5
|
+
export type StringRecord<T = string> = Record<string, T>;
|
|
6
|
+
export {};
|
package/dist/utils.js
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"utils.js","sourceRoot":"","sources":["../src/utils.ts"],"names":[],"mappings":"AAGA,MAAM,CAAC,MAAM,QAAQ,GAAG,CAAI,KAAQ,EAAsB,EAAE,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC;AAE5E,MAAM,aAAa,GAAG,GAAG,CAAC;AAE1B,MAAM,CAAC,MAAM,KAAK,GAAG,CAAC,EAAE,GAAG,aAAa,EAAE,EAAE,CAAC,IAAI,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,UAAU,CAAC,GAAG,EAAE,EAAE,CAAC,CAAC,CAAC"}
|
package/package.json
CHANGED
|
@@ -102,6 +102,19 @@ export const pickAdsToDisplay = (
|
|
|
102
102
|
return AdsConfiguration.buildNativeAdsMeta(containerWidth, containerHeight);
|
|
103
103
|
}
|
|
104
104
|
|
|
105
|
+
const fallbackAdsFullMeta =
|
|
106
|
+
adType === AdType.Permanent || adType === AdType.SlotReplacement
|
|
107
|
+
? AdsConfiguration.bannerAdsMeta.filter(({ source }) => source.shouldNotUseStrictContainerLimits)
|
|
108
|
+
: [];
|
|
109
|
+
const containerWithFallbackWidth = Math.max(
|
|
110
|
+
containerWidth,
|
|
111
|
+
...fallbackAdsFullMeta.map(({ dimensions }) => dimensions.width)
|
|
112
|
+
);
|
|
113
|
+
const containerWithFallbackHeight = Math.max(
|
|
114
|
+
containerHeight,
|
|
115
|
+
...fallbackAdsFullMeta.map(({ dimensions }) => dimensions.height)
|
|
116
|
+
);
|
|
117
|
+
|
|
105
118
|
return AdsConfiguration.bannerAdsMeta.reduce<number[]>((acc, { dimensions, source }, i) => {
|
|
106
119
|
const { shouldNotUseStrictContainerLimits = false, categories = [CRYPTO_CATEGORY_NAME] } = source;
|
|
107
120
|
|
|
@@ -116,12 +129,14 @@ export const pickAdsToDisplay = (
|
|
|
116
129
|
case AdType.Permanent:
|
|
117
130
|
matches =
|
|
118
131
|
shouldNotUseStrictContainerLimits ||
|
|
119
|
-
(
|
|
132
|
+
(containerWithFallbackWidth >= width &&
|
|
133
|
+
(containerWithFallbackHeight >= minContainerHeight || containerWithFallbackHeight < 2));
|
|
120
134
|
break;
|
|
121
135
|
case AdType.SlotReplacement:
|
|
122
136
|
matches =
|
|
123
137
|
shouldNotUseStrictContainerLimits ||
|
|
124
|
-
(
|
|
138
|
+
(containerWithFallbackWidth >= minContainerWidth &&
|
|
139
|
+
(containerWithFallbackHeight >= minContainerHeight || containerWithFallbackHeight < 2));
|
|
125
140
|
break;
|
|
126
141
|
default:
|
|
127
142
|
matches =
|
|
@@ -26,6 +26,7 @@ export const subscribeToAdsStackIframeLoadIfNecessary = async (element: HTMLIFra
|
|
|
26
26
|
loadingAdsIds.add(adId);
|
|
27
27
|
|
|
28
28
|
return new Promise<AdMetadata['source']['providerName']>((resolve, reject) => {
|
|
29
|
+
let adIsNative = false;
|
|
29
30
|
const messageListener = (event: MessageEvent<any>) => {
|
|
30
31
|
if (event.source !== element.contentWindow) return;
|
|
31
32
|
|
|
@@ -48,6 +49,7 @@ export const subscribeToAdsStackIframeLoadIfNecessary = async (element: HTMLIFra
|
|
|
48
49
|
break;
|
|
49
50
|
case AD_RENDER_START_MESSAGE_TYPE:
|
|
50
51
|
const { dimensions, source }: AdMetadata = data.adMetadata;
|
|
52
|
+
adIsNative = source.native ?? false;
|
|
51
53
|
const { width, height } = dimensions;
|
|
52
54
|
if (width > 0 && height > 0) {
|
|
53
55
|
if (source.native) {
|
|
@@ -61,7 +63,7 @@ export const subscribeToAdsStackIframeLoadIfNecessary = async (element: HTMLIFra
|
|
|
61
63
|
case AD_RESIZE_MESSAGE_TYPE:
|
|
62
64
|
const { width: newWidth, height: newHeight } = data;
|
|
63
65
|
|
|
64
|
-
if (
|
|
66
|
+
if (adIsNative) {
|
|
65
67
|
element.style.height = `${newHeight + verticalBordersWidth}px`;
|
|
66
68
|
} else {
|
|
67
69
|
extendOrKeepDimension(element, 'width', newWidth + horizontalBordersWidth);
|
package/src/render-ads-stack.ts
CHANGED
|
@@ -58,9 +58,17 @@ export const renderAdsStack = async (
|
|
|
58
58
|
else templeLabelElement.removeAttribute('active');
|
|
59
59
|
|
|
60
60
|
const updateBackground = (creativeSet: CreativeSet = {}) => {
|
|
61
|
+
const prevBackgroundElement = document.getElementById(BACKGROUND_ELEMENT_ID);
|
|
62
|
+
if (source.native && prevBackgroundElement) {
|
|
63
|
+
rootElement.removeChild(prevBackgroundElement);
|
|
64
|
+
}
|
|
65
|
+
|
|
66
|
+
if (source.native) {
|
|
67
|
+
return;
|
|
68
|
+
}
|
|
69
|
+
|
|
61
70
|
try {
|
|
62
71
|
const { image, video } = creativeSet;
|
|
63
|
-
const prevBackgroundElement = document.getElementById(BACKGROUND_ELEMENT_ID);
|
|
64
72
|
let backgroundElement: HTMLImageElement | HTMLVideoElement | undefined;
|
|
65
73
|
if (image) {
|
|
66
74
|
backgroundElement = document.createElement('img');
|
|
@@ -1,24 +0,0 @@
|
|
|
1
|
-
export const stripDimentionsLimits = (wrapperElement: HTMLDivElement, width: number, height: number) => {
|
|
2
|
-
const predefinedStyles = wrapperElement.style;
|
|
3
|
-
// If needed in future, try `getComputedStyle(wrapperElement)` - though would have to not remove but override
|
|
4
|
-
|
|
5
|
-
stripOneDimensionLimit(predefinedStyles, width, ['width']);
|
|
6
|
-
stripOneDimensionLimit(predefinedStyles, height, ['height', 'maxHeight']);
|
|
7
|
-
};
|
|
8
|
-
|
|
9
|
-
const stripOneDimensionLimit = (
|
|
10
|
-
predefinedStyles: CSSStyleDeclaration,
|
|
11
|
-
value: number,
|
|
12
|
-
dimensionNames: ('width' | 'height' | 'maxWidth' | 'maxHeight')[]
|
|
13
|
-
) => {
|
|
14
|
-
for (const dimensionName of dimensionNames) {
|
|
15
|
-
const predefinedStyleValue = predefinedStyles[dimensionName] ?? '';
|
|
16
|
-
|
|
17
|
-
if (/^\d+(px)?$/.test(predefinedStyleValue)) {
|
|
18
|
-
const predefinedSize = parseInt(predefinedStyleValue, 10);
|
|
19
|
-
if (predefinedSize < value) {
|
|
20
|
-
predefinedStyles.removeProperty(dimensionName);
|
|
21
|
-
}
|
|
22
|
-
}
|
|
23
|
-
}
|
|
24
|
-
};
|