@adview/react 1.0.13 → 1.0.14

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 (101) hide show
  1. package/dist/AdViewUnit/AdViewUnit.cjs +106 -298
  2. package/dist/AdViewUnit/AdViewUnit.cjs.map +1 -1
  3. package/dist/AdViewUnit/AdViewUnit.client.cjs +86 -256
  4. package/dist/AdViewUnit/AdViewUnit.client.cjs.map +1 -1
  5. package/dist/AdViewUnit/AdViewUnit.client.d.cts +2 -2
  6. package/dist/AdViewUnit/AdViewUnit.client.d.ts +2 -2
  7. package/dist/AdViewUnit/AdViewUnit.client.js +69 -239
  8. package/dist/AdViewUnit/AdViewUnit.client.js.map +1 -1
  9. package/dist/AdViewUnit/AdViewUnit.d.cts +1 -1
  10. package/dist/AdViewUnit/AdViewUnit.d.ts +1 -1
  11. package/dist/AdViewUnit/AdViewUnit.js +85 -277
  12. package/dist/AdViewUnit/AdViewUnit.js.map +1 -1
  13. package/dist/AdViewUnit/AdViewUnit.server.cjs +82 -214
  14. package/dist/AdViewUnit/AdViewUnit.server.cjs.map +1 -1
  15. package/dist/AdViewUnit/AdViewUnit.server.d.cts +2 -2
  16. package/dist/AdViewUnit/AdViewUnit.server.d.ts +2 -2
  17. package/dist/AdViewUnit/AdViewUnit.server.js +72 -204
  18. package/dist/AdViewUnit/AdViewUnit.server.js.map +1 -1
  19. package/dist/AdViewUnit/{AdViewUnitBanner.cjs → AdViewUnitBannerTemplate.cjs} +17 -14
  20. package/dist/AdViewUnit/AdViewUnitBannerTemplate.cjs.map +1 -0
  21. package/dist/AdViewUnit/AdViewUnitBannerTemplate.d.cts +12 -0
  22. package/dist/AdViewUnit/AdViewUnitBannerTemplate.d.ts +12 -0
  23. package/dist/AdViewUnit/AdViewUnitBannerTemplate.js +32 -0
  24. package/dist/AdViewUnit/AdViewUnitBannerTemplate.js.map +1 -0
  25. package/dist/AdViewUnit/AdViewUnitDefaultTemplate.cjs +48 -0
  26. package/dist/AdViewUnit/AdViewUnitDefaultTemplate.cjs.map +1 -0
  27. package/dist/AdViewUnit/AdViewUnitDefaultTemplate.d.cts +17 -0
  28. package/dist/AdViewUnit/AdViewUnitDefaultTemplate.d.ts +17 -0
  29. package/dist/AdViewUnit/AdViewUnitDefaultTemplate.js +17 -0
  30. package/dist/AdViewUnit/AdViewUnitDefaultTemplate.js.map +1 -0
  31. package/dist/AdViewUnit/{AdViewUnitNative.cjs → AdViewUnitNativeTemplate.cjs} +12 -13
  32. package/dist/AdViewUnit/AdViewUnitNativeTemplate.cjs.map +1 -0
  33. package/dist/AdViewUnit/AdViewUnitNativeTemplate.d.cts +11 -0
  34. package/dist/AdViewUnit/AdViewUnitNativeTemplate.d.ts +11 -0
  35. package/dist/AdViewUnit/{AdViewUnitNative.js → AdViewUnitNativeTemplate.js} +9 -10
  36. package/dist/AdViewUnit/AdViewUnitNativeTemplate.js.map +1 -0
  37. package/dist/AdViewUnit/{AdViewUnitProxy.cjs → AdViewUnitProxyTemplate.cjs} +14 -13
  38. package/dist/AdViewUnit/AdViewUnitProxyTemplate.cjs.map +1 -0
  39. package/dist/AdViewUnit/AdViewUnitProxyTemplate.d.cts +12 -0
  40. package/dist/AdViewUnit/AdViewUnitProxyTemplate.d.ts +12 -0
  41. package/dist/AdViewUnit/AdViewUnitProxyTemplate.js +33 -0
  42. package/dist/AdViewUnit/AdViewUnitProxyTemplate.js.map +1 -0
  43. package/dist/AdViewUnit/AdViewUnitTemplate.cjs +114 -0
  44. package/dist/AdViewUnit/AdViewUnitTemplate.cjs.map +1 -1
  45. package/dist/AdViewUnit/AdViewUnitTemplate.d.cts +14 -1
  46. package/dist/AdViewUnit/AdViewUnitTemplate.d.ts +14 -1
  47. package/dist/AdViewUnit/AdViewUnitTemplate.js +77 -0
  48. package/dist/AdViewUnit/AdViewUnitTemplate.js.map +1 -1
  49. package/dist/AdViewUnit/useAdViewController.cjs +5 -1
  50. package/dist/AdViewUnit/useAdViewController.cjs.map +1 -1
  51. package/dist/AdViewUnit/useAdViewController.d.cts +2 -2
  52. package/dist/AdViewUnit/useAdViewController.d.ts +2 -2
  53. package/dist/AdViewUnit/useAdViewController.js +5 -1
  54. package/dist/AdViewUnit/useAdViewController.js.map +1 -1
  55. package/dist/index.cjs +250 -232
  56. package/dist/index.cjs.map +1 -1
  57. package/dist/index.d.cts +8 -7
  58. package/dist/index.d.ts +8 -7
  59. package/dist/index.js +232 -222
  60. package/dist/index.js.map +1 -1
  61. package/dist/server.cjs +216 -162
  62. package/dist/server.cjs.map +1 -1
  63. package/dist/server.d.cts +7 -6
  64. package/dist/server.d.ts +7 -6
  65. package/dist/server.js +196 -149
  66. package/dist/server.js.map +1 -1
  67. package/dist/{types-BaV07oMT.d.cts → types-B65WDsgh.d.cts} +29 -25
  68. package/dist/{types-BaV07oMT.d.ts → types-B65WDsgh.d.ts} +29 -25
  69. package/package.json +1 -1
  70. package/dist/AdViewUnit/AdViewUnitBanner.cjs.map +0 -1
  71. package/dist/AdViewUnit/AdViewUnitBanner.d.cts +0 -10
  72. package/dist/AdViewUnit/AdViewUnitBanner.d.ts +0 -10
  73. package/dist/AdViewUnit/AdViewUnitBanner.js +0 -29
  74. package/dist/AdViewUnit/AdViewUnitBanner.js.map +0 -1
  75. package/dist/AdViewUnit/AdViewUnitNative.cjs.map +0 -1
  76. package/dist/AdViewUnit/AdViewUnitNative.d.cts +0 -10
  77. package/dist/AdViewUnit/AdViewUnitNative.d.ts +0 -10
  78. package/dist/AdViewUnit/AdViewUnitNative.js.map +0 -1
  79. package/dist/AdViewUnit/AdViewUnitProxy.cjs.map +0 -1
  80. package/dist/AdViewUnit/AdViewUnitProxy.d.cts +0 -10
  81. package/dist/AdViewUnit/AdViewUnitProxy.d.ts +0 -10
  82. package/dist/AdViewUnit/AdViewUnitProxy.js +0 -32
  83. package/dist/AdViewUnit/AdViewUnitProxy.js.map +0 -1
  84. package/dist/AdViewUnit/AdViewUnitTypeSwitch.cjs +0 -203
  85. package/dist/AdViewUnit/AdViewUnitTypeSwitch.cjs.map +0 -1
  86. package/dist/AdViewUnit/AdViewUnitTypeSwitch.d.cts +0 -12
  87. package/dist/AdViewUnit/AdViewUnitTypeSwitch.d.ts +0 -12
  88. package/dist/AdViewUnit/AdViewUnitTypeSwitch.js +0 -170
  89. package/dist/AdViewUnit/AdViewUnitTypeSwitch.js.map +0 -1
  90. package/dist/AdViewUnit/AdViewUnitWrapper.client.cjs +0 -250
  91. package/dist/AdViewUnit/AdViewUnitWrapper.client.cjs.map +0 -1
  92. package/dist/AdViewUnit/AdViewUnitWrapper.client.d.cts +0 -11
  93. package/dist/AdViewUnit/AdViewUnitWrapper.client.d.ts +0 -11
  94. package/dist/AdViewUnit/AdViewUnitWrapper.client.js +0 -220
  95. package/dist/AdViewUnit/AdViewUnitWrapper.client.js.map +0 -1
  96. package/dist/AdViewUnit/AdViewUnitWrapper.server.cjs +0 -232
  97. package/dist/AdViewUnit/AdViewUnitWrapper.server.cjs.map +0 -1
  98. package/dist/AdViewUnit/AdViewUnitWrapper.server.d.cts +0 -11
  99. package/dist/AdViewUnit/AdViewUnitWrapper.server.d.ts +0 -11
  100. package/dist/AdViewUnit/AdViewUnitWrapper.server.js +0 -201
  101. package/dist/AdViewUnit/AdViewUnitWrapper.server.js.map +0 -1
package/dist/server.js CHANGED
@@ -1,12 +1,83 @@
1
1
  'use client';
2
2
 
3
3
  // src/AdViewUnit/AdViewUnit.server.tsx
4
- import React7 from "react";
4
+ import React3 from "react";
5
5
  import { adViewFetcher, getAdRequestUrl, getResolveConfig } from "@adview/core/utils";
6
6
 
7
+ // src/AdViewUnit/AdViewUnitTemplate.tsx
8
+ import React from "react";
9
+ var templateFromListRender = (tmpls, data, wrap) => {
10
+ let renderedRemplates = tmpls.map((tmpl, index) => {
11
+ let tmp = renderTemplate(tmpl, data);
12
+ return !!tmp && React.isValidElement(tmp) ? /* @__PURE__ */ React.createElement(React.Fragment, { key: index }, !!wrap ? wrap(tmp) : tmp) : null;
13
+ }).filter((it) => !!it);
14
+ if (!renderedRemplates.length) {
15
+ renderedRemplates = tmpls.map((tmpl, index) => {
16
+ let tmp = renderTemplate(tmpl, { ...data, type: "default" });
17
+ return !!tmp && React.isValidElement(tmp) ? /* @__PURE__ */ React.createElement(React.Fragment, { key: index }, !!wrap ? wrap(tmp) : tmp) : null;
18
+ }).filter((it) => !!it);
19
+ }
20
+ return /* @__PURE__ */ React.createElement(React.Fragment, null, renderedRemplates);
21
+ };
22
+ var renderTemplate = (tmpl, data) => {
23
+ const isFunction = typeof tmpl === "function";
24
+ const isReactElement = React.isValidElement(tmpl);
25
+ if (isReactElement) {
26
+ const { type, children } = tmpl.props;
27
+ console.log("=====>\nrenderTemplate: React element detected, type:", type, "data:", data.type, data.type !== type);
28
+ if (data.type !== type) {
29
+ return null;
30
+ }
31
+ if (typeof children === "function") {
32
+ return children(data);
33
+ }
34
+ console.log("CLONE ELEMENT", tmpl);
35
+ return React.cloneElement(tmpl, {
36
+ ...data,
37
+ children
38
+ });
39
+ }
40
+ if (isFunction) {
41
+ return tmpl(data);
42
+ }
43
+ return null;
44
+ };
45
+ var renderTemplates = (tmpls, data, listRender) => {
46
+ return listRender ? listRender(tmpls) : templateFromListRender(tmpls, data);
47
+ };
48
+ var renderAnyTemplates = (tmpls, data, listRender) => {
49
+ if (!tmpls) {
50
+ return null;
51
+ }
52
+ if (Array.isArray(tmpls)) {
53
+ return renderTemplates(tmpls, data, listRender);
54
+ }
55
+ if (typeof tmpls === "function") {
56
+ return tmpls(data);
57
+ }
58
+ if (React.isValidElement(tmpls)) {
59
+ return templateFromListRender([tmpls], data);
60
+ }
61
+ return null;
62
+ };
63
+ var AdViewUnitTemplate = ({ type, children, ...data }) => {
64
+ const tmplProps = {
65
+ type,
66
+ ...data
67
+ };
68
+ if (typeof children === "function") {
69
+ return children(tmplProps);
70
+ }
71
+ if (React.isValidElement(children)) {
72
+ return React.cloneElement(children, tmplProps);
73
+ }
74
+ return /* @__PURE__ */ React.createElement(React.Fragment, null);
75
+ };
76
+ var AdViewUnitTemplate_default = AdViewUnitTemplate;
77
+
7
78
  // src/AdViewUnit/AdViewUnitTracking.tsx
8
79
  import { executeImpressionsTracking } from "@adview/core/utils";
9
- import React, { useCallback, useEffect, useMemo, useRef } from "react";
80
+ import React2, { useCallback, useEffect, useMemo, useRef } from "react";
10
81
  function AdViewUnitTracking({
11
82
  impressions,
12
83
  views,
@@ -55,113 +126,187 @@ function AdViewUnitTracking({
55
126
  executeImpressionsTrackingHandler,
56
127
  clickTrackerHandler
57
128
  ]);
58
- return /* @__PURE__ */ React.createElement("div", { ref: wrapperRef }, children);
129
+ return /* @__PURE__ */ React2.createElement("div", { ref: wrapperRef }, children);
59
130
  }
60
131
  var AdViewUnitTracking_default = AdViewUnitTracking;
61
132
 
62
- // src/AdViewUnit/AdViewUnitWrapper.server.tsx
63
- import React6 from "react";
133
+ // src/AdViewUnit/AdViewUnit.server.tsx
134
+ async function AdViewUnitServer({
135
+ unitId,
136
+ format,
137
+ children,
138
+ ...config
139
+ }) {
140
+ const baseConfig = getResolveConfig(config);
141
+ const requestUrl = getAdRequestUrl(baseConfig, unitId, format);
142
+ const response = await adViewFetcher(requestUrl);
143
+ const isLoadingError = response instanceof Error;
144
+ const error = isLoadingError ? response : void 0;
145
+ const responseGroup = response instanceof Error ? null : response?.groups?.[0];
146
+ const customTracker = responseGroup?.custom_tracker ?? {};
147
+ const groupItems = responseGroup?.items;
148
+ if (groupItems && groupItems.length) {
149
+ return groupItems.map(({ tracker, ...data }) => {
150
+ return /* @__PURE__ */ React3.createElement(AdViewUnitTracking_default, { key: data.id, ...tracker }, renderAnyTemplates(children, { data, type: data.type || "default", error, state: {
151
+ isLoading: true,
152
+ isComplete: true,
153
+ isInitial: false,
154
+ isError: isLoadingError
155
+ } }));
156
+ });
157
+ }
158
+ return /* @__PURE__ */ React3.createElement(AdViewUnitTracking_default, { ...customTracker }, renderAnyTemplates(children, { data: null, type: "default", error, state: {
159
+ isLoading: true,
160
+ isComplete: true,
161
+ isInitial: false,
162
+ isError: isLoadingError
163
+ } }));
164
+ }
165
+ var AdViewUnit_server_default = AdViewUnitServer;
64
166
 
65
- // src/AdViewUnit/AdViewUnitNative.tsx
167
+ // src/AdViewUnit/AdViewUnitBannerTemplate.tsx
66
168
  import { getAssetByName, getPrepareURL, getSrcSetCSSThumbs } from "@adview/core/utils";
67
- import React2 from "react";
68
- function AdViewUnitNative({
69
- assets,
70
- fields,
71
- url,
72
- classNames
73
- }) {
74
- const asset = getAssetByName("main", assets);
169
+ import React4 from "react";
170
+ function AdViewUnitBannerTemplate({ className = "banner", style, data, state }) {
171
+ if (!data || !data.assets || !data.assets.length || !state?.isComplete) {
172
+ return null;
173
+ }
174
+ const asset = getAssetByName("main", data.assets);
175
+ return /* @__PURE__ */ React4.createElement(
176
+ "a",
177
+ {
178
+ target: "_blank",
179
+ rel: "noopener noreferrer",
180
+ href: getPrepareURL(data.url),
181
+ className,
182
+ style: { fontSize: 0, ...style }
183
+ },
184
+ asset && /* @__PURE__ */ React4.createElement(
185
+ "img",
186
+ {
187
+ alt: "main",
188
+ src: asset.path,
189
+ srcSet: asset.thumbs ? getSrcSetCSSThumbs(asset.thumbs) : ""
190
+ }
191
+ )
192
+ );
193
+ }
194
+ var AdViewUnitBannerTemplate_default = AdViewUnitBannerTemplate;
195
+
196
+ // src/AdViewUnit/AdViewUnitDefaultTemplate.tsx
197
+ import React5 from "react";
198
+ function AdViewUnitDefaultTemplate({ type = "default", data, state, children, ...props }) {
199
+ if (typeof children === "function") {
200
+ return /* @__PURE__ */ React5.createElement(React5.Fragment, null, children({ data, state, ...props }));
201
+ }
202
+ return children ? /* @__PURE__ */ React5.createElement(React5.Fragment, null, children) : /* @__PURE__ */ React5.createElement("div", { style: { padding: "1rem", textAlign: "center", color: "#666" } }, /* @__PURE__ */ React5.createElement("p", null, "\u{1F504} Default content for ad unit"), /* @__PURE__ */ React5.createElement("p", null, "Data: ", JSON.stringify(data)), /* @__PURE__ */ React5.createElement("p", null, "State: ", JSON.stringify(state)));
203
+ }
204
+ AdViewUnitDefaultTemplate.defaultProps = {
205
+ type: "default",
206
+ children: null
207
+ };
208
+ var AdViewUnitDefaultTemplate_default = AdViewUnitDefaultTemplate;
209
+
210
+ // src/AdViewUnit/AdViewUnitNativeTemplate.tsx
211
+ import { getAssetByName as getAssetByName2, getPrepareURL as getPrepareURL2, getSrcSetCSSThumbs as getSrcSetCSSThumbs2 } from "@adview/core/utils";
212
+ import React6 from "react";
213
+ function AdViewUnitNativeTemplate({ classNames, data, state }) {
214
+ if (!data || !data.assets || !data.assets.length || !state?.isComplete) {
215
+ return null;
216
+ }
217
+ const { assets, url, fields } = data;
218
+ const asset = getAssetByName2("main", assets);
75
219
  if (!url) {
76
220
  return null;
77
221
  }
78
- return /* @__PURE__ */ React2.createElement("div", { className: classNames?.container }, /* @__PURE__ */ React2.createElement(
222
+ return /* @__PURE__ */ React6.createElement("div", { className: classNames?.container }, /* @__PURE__ */ React6.createElement(
79
223
  "a",
80
224
  {
81
225
  target: "_blank",
82
226
  rel: "noopener noreferrer",
83
- href: getPrepareURL(url),
227
+ href: getPrepareURL2(url),
84
228
  className: classNames?.imageLink
85
229
  },
86
- asset && /* @__PURE__ */ React2.createElement(
230
+ asset && /* @__PURE__ */ React6.createElement(
87
231
  "img",
88
232
  {
89
233
  alt: fields?.title,
90
234
  title: fields?.title,
91
235
  src: asset.path,
92
- srcSet: asset.thumbs ? getSrcSetCSSThumbs(asset.thumbs) : void 0,
236
+ srcSet: asset.thumbs ? getSrcSetCSSThumbs2(asset.thumbs) : void 0,
93
237
  className: classNames?.image,
94
238
  style: { objectFit: "cover", width: "100%", height: "100%" }
95
239
  }
96
240
  )
97
- ), /* @__PURE__ */ React2.createElement("div", { className: classNames?.label }, fields?.title && /* @__PURE__ */ React2.createElement(
241
+ ), /* @__PURE__ */ React6.createElement("div", { className: classNames?.label }, fields?.title && /* @__PURE__ */ React6.createElement(
98
242
  "a",
99
243
  {
100
244
  target: "_blank",
101
245
  rel: "noopener noreferrer",
102
- href: getPrepareURL(url),
246
+ href: getPrepareURL2(url),
103
247
  "data-class": "titleLink",
104
248
  className: classNames?.titleLink
105
249
  },
106
250
  fields.title
107
- ), fields?.description && /* @__PURE__ */ React2.createElement(
251
+ ), fields?.description && /* @__PURE__ */ React6.createElement(
108
252
  "a",
109
253
  {
110
254
  target: "_blank",
111
255
  rel: "noopener noreferrer",
112
- href: getPrepareURL(url),
256
+ href: getPrepareURL2(url),
113
257
  "data-class": "descriptionLink",
114
258
  className: classNames?.descriptionLink
115
259
  },
116
260
  fields.description
117
- ), fields?.brandname && /* @__PURE__ */ React2.createElement(
261
+ ), fields?.brandname && /* @__PURE__ */ React6.createElement(
118
262
  "a",
119
263
  {
120
264
  target: "_blank",
121
265
  rel: "noopener noreferrer",
122
- href: getPrepareURL(url),
266
+ href: getPrepareURL2(url),
123
267
  "data-class": "brandNameLink",
124
268
  className: classNames?.brandNameLink
125
269
  },
126
270
  fields.brandname
127
- ), fields?.phone && /* @__PURE__ */ React2.createElement(
271
+ ), fields?.phone && /* @__PURE__ */ React6.createElement(
128
272
  "a",
129
273
  {
130
274
  target: "_blank",
131
275
  rel: "noopener noreferrer",
132
- href: getPrepareURL(url),
276
+ href: getPrepareURL2(url),
133
277
  "data-class": "phoneLink",
134
278
  className: classNames?.phoneLink
135
279
  },
136
280
  fields.phone
137
- ), fields?.url && /* @__PURE__ */ React2.createElement(
281
+ ), fields?.url && /* @__PURE__ */ React6.createElement(
138
282
  "a",
139
283
  {
140
284
  target: "_blank",
141
285
  rel: "noopener noreferrer",
142
- href: getPrepareURL(url),
286
+ href: getPrepareURL2(url),
143
287
  "data-class": "urlLink",
144
288
  className: classNames?.urlLink
145
289
  },
146
290
  fields?.url
147
291
  )));
148
292
  }
149
- var AdViewUnitNative_default = AdViewUnitNative;
293
+ var AdViewUnitNativeTemplate_default = AdViewUnitNativeTemplate;
150
294
 
151
- // src/AdViewUnit/AdViewUnitProxy.tsx
152
- import React3 from "react";
153
- function AdViewUnitProxy({
154
- // assets,
155
- fields,
156
- url
157
- }) {
295
+ // src/AdViewUnit/AdViewUnitProxyTemplate.tsx
296
+ import React7 from "react";
297
+ function AdViewUnitProxyTemplate({ className, style, data, state }) {
298
+ if (!data || !state?.isComplete) {
299
+ return null;
300
+ }
301
+ const { url, fields } = data;
158
302
  const iframeSrc = fields?.url || url;
159
303
  if (!iframeSrc) {
160
304
  return null;
161
305
  }
162
- return /* @__PURE__ */ React3.createElement(
306
+ return /* @__PURE__ */ React7.createElement(
163
307
  "iframe",
164
308
  {
309
+ className,
165
310
  width: "100%",
166
311
  height: "100%",
167
312
  frameBorder: "0",
@@ -170,122 +315,24 @@ function AdViewUnitProxy({
170
315
  allowTransparency: true,
171
316
  scrolling: "no",
172
317
  allowFullScreen: true,
173
- style: { width: "100%", height: "100%" },
318
+ style: { width: "100%", height: "100%", border: "none", ...style },
174
319
  src: iframeSrc
175
320
  }
176
321
  );
177
322
  }
178
- var AdViewUnitProxy_default = AdViewUnitProxy;
179
-
180
- // src/AdViewUnit/AdViewUnitBanner.tsx
181
- import { getAssetByName as getAssetByName2, getPrepareURL as getPrepareURL2, getSrcSetCSSThumbs as getSrcSetCSSThumbs2 } from "@adview/core/utils";
182
- import React4 from "react";
183
- function AdViewUnitBanner({ assets, url }) {
184
- const asset = getAssetByName2("main", assets);
185
- return /* @__PURE__ */ React4.createElement("center", null, /* @__PURE__ */ React4.createElement(
186
- "a",
187
- {
188
- target: "_blank",
189
- rel: "noopener noreferrer",
190
- href: getPrepareURL2(url),
191
- className: "banner",
192
- style: { fontSize: 0 }
193
- },
194
- asset && /* @__PURE__ */ React4.createElement(
195
- "img",
196
- {
197
- alt: "main",
198
- src: asset.path,
199
- srcSet: asset.thumbs ? getSrcSetCSSThumbs2(asset.thumbs) : ""
200
- }
201
- )
202
- ));
203
- }
204
- var AdViewUnitBanner_default = AdViewUnitBanner;
205
-
206
- // src/AdViewUnit/AdViewUnitTypeSwitch.tsx
207
- import React5 from "react";
208
- function AdViewUnitTypeSwitch({
209
- data,
210
- classNames,
211
- onDefault
212
- }) {
213
- switch (data?.type) {
214
- case "native":
215
- return /* @__PURE__ */ React5.createElement(AdViewUnitNative_default, { ...data, classNames: classNames?.native });
216
- case "proxy":
217
- return /* @__PURE__ */ React5.createElement(AdViewUnitProxy_default, { ...data, classNames: classNames?.proxy });
218
- case "banner":
219
- return /* @__PURE__ */ React5.createElement(AdViewUnitBanner_default, { ...data, classNames: classNames?.banner });
220
- default:
221
- if (React5.isValidElement(onDefault)) {
222
- return React5.cloneElement(onDefault);
223
- }
224
- if (typeof onDefault === "function") {
225
- return onDefault();
226
- }
227
- return null;
228
- }
229
- }
230
- var AdViewUnitTypeSwitch_default = AdViewUnitTypeSwitch;
231
-
232
- // src/AdViewUnit/AdViewUnitWrapper.server.tsx
233
- async function AdViewUnitWrapperServer({
234
- data,
235
- children,
236
- onDefault
237
- }) {
238
- const isChildrenReactNode = React6.isValidElement(children);
239
- const isChildrenFunction = typeof children === "function";
240
- const isLoadingError = data instanceof Error;
241
- if (isChildrenReactNode) {
242
- return React6.cloneElement(children, { data, onDefault });
243
- }
244
- if (isChildrenFunction) {
245
- return children({ data, onDefault });
246
- }
247
- if (!children && !isLoadingError) {
248
- return /* @__PURE__ */ React6.createElement(AdViewUnitTypeSwitch_default, { data, onDefault });
249
- }
250
- if (React6.isValidElement(onDefault)) {
251
- return React6.cloneElement(onDefault);
252
- }
253
- if (typeof onDefault === "function") {
254
- return onDefault();
255
- }
256
- return null;
257
- }
258
- var AdViewUnitWrapper_server_default = AdViewUnitWrapperServer;
259
-
260
- // src/AdViewUnit/AdViewUnit.server.tsx
261
- async function AdViewUnitServer({
262
- unitId,
263
- format,
264
- children,
265
- onDefault = () => null,
266
- ...config
267
- }) {
268
- const baseConfig = getResolveConfig(config);
269
- const requestUrl = getAdRequestUrl(baseConfig, unitId, format);
270
- const response = await adViewFetcher(requestUrl);
271
- const isLoadingError = response instanceof Error;
272
- const error = isLoadingError ? response : void 0;
273
- const responseGroup = response instanceof Error ? null : response?.groups?.[0];
274
- const customTracker = responseGroup?.custom_tracker ?? {};
275
- const groupItems = responseGroup?.items;
276
- if (groupItems && groupItems.length) {
277
- return groupItems.map(({ tracker, ...data }) => {
278
- return /* @__PURE__ */ React7.createElement(AdViewUnitTracking_default, { key: data.id, ...tracker }, /* @__PURE__ */ React7.createElement(AdViewUnitWrapper_server_default, { data, onDefault }, children));
279
- });
280
- }
281
- return /* @__PURE__ */ React7.createElement(AdViewUnitTracking_default, { ...customTracker }, /* @__PURE__ */ React7.createElement(AdViewUnitWrapper_server_default, { data: error, onDefault }, children));
282
- }
283
- var AdViewUnit_server_default = AdViewUnitServer;
323
+ var AdViewUnitProxyTemplate_default = AdViewUnitProxyTemplate;
284
324
  export {
285
- AdViewUnitBanner_default as Banner,
286
- AdViewUnitNative_default as Native,
287
- AdViewUnitProxy_default as Proxy,
288
- AdViewUnit_server_default as Server,
289
- AdViewUnitTypeSwitch_default as TypeSwitch
325
+ AdViewUnitBannerTemplate_default as AdViewUnitBannerTemplate,
326
+ AdViewUnitDefaultTemplate_default as AdViewUnitDefaultTemplate,
327
+ AdViewUnitNativeTemplate_default as AdViewUnitNativeTemplate,
328
+ AdViewUnitProxyTemplate_default as AdViewUnitProxyTemplate,
329
+ AdViewUnit_server_default as AdViewUnitServer,
330
+ AdViewUnitTemplate_default as AdViewUnitTemplate,
331
+ AdViewUnitBannerTemplate_default as BannerTemplate,
332
+ AdViewUnitDefaultTemplate_default as DefaultTemplate,
333
+ AdViewUnitNativeTemplate_default as NativeTemplate,
334
+ AdViewUnitProxyTemplate_default as ProxyTemplate,
335
+ AdViewUnitTemplate_default as Template,
336
+ AdViewUnit_server_default as Unit
290
337
  };
291
338
  //# sourceMappingURL=server.js.map
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/AdViewUnit/AdViewUnit.server.tsx","../src/AdViewUnit/AdViewUnitTracking.tsx","../src/AdViewUnit/AdViewUnitWrapper.server.tsx","../src/AdViewUnit/AdViewUnitNative.tsx","../src/AdViewUnit/AdViewUnitProxy.tsx","../src/AdViewUnit/AdViewUnitBanner.tsx","../src/AdViewUnit/AdViewUnitTypeSwitch.tsx"],"sourcesContent":["import React from 'react';\n\nimport { AdViewGroupItem } from '@adview/core/typings';\nimport { adViewFetcher, getAdRequestUrl, getResolveConfig } from '@adview/core/utils';\nimport { AdViewUnitPropsBase, AdViewUnitServerChildren } from '../types';\nimport AdViewUnitTracking from './AdViewUnitTracking';\nimport AdViewUnitWrapperServer from './AdViewUnitWrapper.server';\n\nexport type AdViewUnitServerProps = AdViewUnitPropsBase & {\n children?: AdViewUnitServerChildren;\n};\n\nasync function AdViewUnitServer({\n unitId,\n format,\n children,\n onDefault = () => null,\n ...config\n}: AdViewUnitServerProps) {\n const baseConfig = getResolveConfig(config);\n const requestUrl = getAdRequestUrl(baseConfig, unitId, format);\n const response = await adViewFetcher(requestUrl);\n const isLoadingError = response instanceof Error;\n const error = isLoadingError ? response : undefined;\n const responseGroup =\n response instanceof Error ? null : response?.groups?.[0];\n const customTracker = responseGroup?.custom_tracker ?? {};\n const groupItems = responseGroup?.items;\n\n if (groupItems && groupItems.length) {\n return groupItems.map(({ tracker, ...data }: AdViewGroupItem) => {\n return (\n <AdViewUnitTracking key={data.id} {...tracker}>\n <AdViewUnitWrapperServer data={data} onDefault={onDefault}>\n {children}\n </AdViewUnitWrapperServer>\n </AdViewUnitTracking>\n );\n });\n }\n\n return (\n <AdViewUnitTracking {...customTracker}>\n <AdViewUnitWrapperServer data={error} onDefault={onDefault}>\n {children}\n </AdViewUnitWrapperServer>\n </AdViewUnitTracking>\n );\n}\n\nexport default AdViewUnitServer;\n","'use client';\n\nimport { executeImpressionsTracking } from '@adview/core/utils';\nimport React, { useCallback, useEffect, useMemo, useRef } from 'react';\n\ntype AdViewUnitTrackingProps = {\n impressions?: string[];\n views?: string[];\n clicks?: string[];\n children: React.ReactNode;\n};\n\nfunction AdViewUnitTracking({\n impressions,\n views,\n clicks,\n children,\n}: AdViewUnitTrackingProps) {\n const isServer = typeof window === 'undefined';\n const wrapperRef = useRef<HTMLDivElement>(null);\n const executeImpressionsTrackingHandler = useCallback(\n () => executeImpressionsTracking(impressions),\n [impressions],\n );\n const trackingObserverInstanceHandler = useCallback(\n (entries: IntersectionObserverEntry[]) => {\n entries.forEach(entry => {\n if (entry.isIntersecting) {\n executeImpressionsTracking(views);\n trackingObserverInstance?.unobserve(wrapperRef.current!);\n }\n });\n },\n [views],\n );\n const trackingObserverInstance = useMemo<IntersectionObserver | null>(() => {\n return !isServer\n ? new IntersectionObserver(trackingObserverInstanceHandler)\n : null;\n }, [isServer, trackingObserverInstanceHandler]);\n const clickTrackerHandler = useCallback(() => {\n executeImpressionsTracking(clicks);\n\n wrapperRef.current?.removeEventListener('click', clickTrackerHandler);\n }, [clicks]);\n\n useEffect(() => {\n if (wrapperRef.current && trackingObserverInstance) {\n executeImpressionsTrackingHandler();\n wrapperRef.current?.addEventListener('click', clickTrackerHandler);\n trackingObserverInstance?.observe(wrapperRef.current);\n\n return () => {\n wrapperRef.current?.removeEventListener('click', clickTrackerHandler);\n if (wrapperRef.current)\n trackingObserverInstance?.unobserve(wrapperRef.current);\n };\n }\n\n return () => {};\n }, [\n trackingObserverInstance,\n executeImpressionsTrackingHandler,\n clickTrackerHandler,\n ]);\n\n return <div ref={wrapperRef}>{children}</div>;\n}\n\nexport default AdViewUnitTracking;\n","import React from 'react';\nimport AdViewUnitTypeSwitch from './/AdViewUnitTypeSwitch';\n\nimport {\n AdViewUnitDefault,\n AdViewUnitServerChildren,\n AdViewUnitServerChildrenProps,\n} from '../types';\n\nexport type AdViewUnitWrapperServerProps = AdViewUnitServerChildrenProps & {\n children?: AdViewUnitServerChildren;\n onDefault?: AdViewUnitDefault;\n};\n\nasync function AdViewUnitWrapperServer({\n data,\n children,\n onDefault,\n}: AdViewUnitWrapperServerProps) {\n const isChildrenReactNode = React.isValidElement(children);\n const isChildrenFunction = typeof children === 'function';\n const isLoadingError = data instanceof Error;\n\n if (isChildrenReactNode) {\n return React.cloneElement(children, { data, onDefault });\n }\n\n if (isChildrenFunction) {\n return children({ data, onDefault });\n }\n\n if (!children && !isLoadingError) {\n return <AdViewUnitTypeSwitch data={data} onDefault={onDefault} />;\n }\n\n if (React.isValidElement(onDefault)) {\n return React.cloneElement(onDefault);\n }\n\n if (typeof onDefault === 'function') {\n return onDefault();\n }\n\n return null;\n}\n\nexport default AdViewUnitWrapperServer;\n","import { getAssetByName, getPrepareURL, getSrcSetCSSThumbs } from '@adview/core/utils';\nimport React from 'react';\nimport { AdViewDataClient, AdViewStyleTokensNative } from '../types';\n\ntype AdViewUnitNativeProps = AdViewDataClient & {\n classNames?: AdViewStyleTokensNative;\n};\n\nfunction AdViewUnitNative({\n assets,\n fields,\n url,\n classNames,\n}: AdViewUnitNativeProps) {\n const asset = getAssetByName('main', assets);\n\n if (!url) {\n return null;\n }\n\n return (\n <div className={classNames?.container}>\n <a\n target=\"_blank\"\n rel=\"noopener noreferrer\"\n href={getPrepareURL(url)}\n className={classNames?.imageLink}\n >\n {asset && (\n <img\n alt={fields?.title}\n title={fields?.title}\n src={asset.path}\n srcSet={asset.thumbs ? getSrcSetCSSThumbs(asset.thumbs) : undefined}\n className={classNames?.image}\n style={{ objectFit: 'cover', width: '100%', height: '100%' }}\n />\n )}\n </a>\n <div className={classNames?.label}>\n {fields?.title && (\n <a\n target=\"_blank\"\n rel=\"noopener noreferrer\"\n href={getPrepareURL(url)}\n data-class=\"titleLink\"\n className={classNames?.titleLink}\n >\n {fields.title}\n </a>\n )}\n {fields?.description && (\n <a\n target=\"_blank\"\n rel=\"noopener noreferrer\"\n href={getPrepareURL(url)}\n data-class=\"descriptionLink\"\n className={classNames?.descriptionLink}\n >\n {fields.description}\n </a>\n )}\n {fields?.brandname && (\n <a\n target=\"_blank\"\n rel=\"noopener noreferrer\"\n href={getPrepareURL(url)}\n data-class=\"brandNameLink\"\n className={classNames?.brandNameLink}\n >\n {fields.brandname}\n </a>\n )}\n {fields?.phone && (\n <a\n target=\"_blank\"\n rel=\"noopener noreferrer\"\n href={getPrepareURL(url)}\n data-class=\"phoneLink\"\n className={classNames?.phoneLink}\n >\n {fields.phone}\n </a>\n )}\n {fields?.url && (\n <a\n target=\"_blank\"\n rel=\"noopener noreferrer\"\n href={getPrepareURL(url)}\n data-class=\"urlLink\"\n className={classNames?.urlLink}\n >\n {fields?.url}\n </a>\n )}\n </div>\n </div>\n );\n}\n\nexport default AdViewUnitNative;\n","import React from 'react';\nimport { AdViewDataClient, AdViewStyleTokensNative } from '../types';\n\ntype AdViewUnitProxyProps = AdViewDataClient & {\n classNames?: AdViewStyleTokensNative;\n};\n\nfunction AdViewUnitProxy({\n // assets,\n fields,\n url,\n}: AdViewUnitProxyProps) {\n const iframeSrc = fields?.url || url;\n\n if (!iframeSrc) {\n return null;\n }\n\n return (\n <iframe\n width=\"100%\"\n height=\"100%\"\n frameBorder=\"0\"\n marginWidth={0}\n marginHeight={0}\n allowTransparency={true}\n scrolling=\"no\"\n allowFullScreen={true}\n style={{ width: '100%', height: '100%' }}\n src={iframeSrc}\n ></iframe>\n );\n}\n\nexport default AdViewUnitProxy;\n","import { getAssetByName, getPrepareURL, getSrcSetCSSThumbs } from '@adview/core/utils';\nimport React from 'react';\nimport { AdViewDataClient, AdViewStyleTokensNative } from '../types';\n\ntype AdViewUnitBannerProps = AdViewDataClient & {\n classNames?: AdViewStyleTokensNative;\n};\n\nfunction AdViewUnitBanner({ assets, url }: AdViewUnitBannerProps) {\n const asset = getAssetByName('main', assets);\n\n return (\n <center>\n <a\n target=\"_blank\"\n rel=\"noopener noreferrer\"\n href={getPrepareURL(url)}\n className=\"banner\"\n style={{ fontSize: 0 }}\n >\n {asset && (\n <img\n alt=\"main\"\n src={asset.path}\n srcSet={asset.thumbs ? getSrcSetCSSThumbs(asset.thumbs) : ''}\n />\n )}\n </a>\n </center>\n );\n}\n\nexport default AdViewUnitBanner;\n","import {\n AdViewDataClient,\n AdViewStyleTokens,\n AdViewUnitDefault,\n} from '../types';\nimport AdViewUnitNative from './AdViewUnitNative';\nimport AdViewUnitProxy from './AdViewUnitProxy';\nimport AdViewUnitBanner from './AdViewUnitBanner';\nimport React from 'react';\n\ntype AdViewUnitDefaultProps = {\n data?: AdViewDataClient;\n classNames?: AdViewStyleTokens;\n onDefault?: AdViewUnitDefault;\n};\n\nfunction AdViewUnitTypeSwitch({\n data,\n classNames,\n onDefault,\n}: AdViewUnitDefaultProps) {\n switch (data?.type) {\n case 'native':\n return <AdViewUnitNative {...data} classNames={classNames?.native} />;\n case 'proxy':\n return <AdViewUnitProxy {...data} classNames={classNames?.proxy} />;\n case 'banner':\n return <AdViewUnitBanner {...data} classNames={classNames?.banner} />;\n default:\n if (React.isValidElement(onDefault)) {\n return React.cloneElement(onDefault);\n }\n\n if (typeof onDefault === 'function') {\n return onDefault();\n }\n\n return null;\n }\n}\n\nexport default AdViewUnitTypeSwitch;\n"],"mappings":"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","names":["React","React","React","React","getAssetByName","getPrepareURL","getSrcSetCSSThumbs","React","React","React","React"]}
1
+ {"version":3,"sources":["../src/AdViewUnit/AdViewUnit.server.tsx","../src/AdViewUnit/AdViewUnitTemplate.tsx","../src/AdViewUnit/AdViewUnitTracking.tsx","../src/AdViewUnit/AdViewUnitBannerTemplate.tsx","../src/AdViewUnit/AdViewUnitDefaultTemplate.tsx","../src/AdViewUnit/AdViewUnitNativeTemplate.tsx","../src/AdViewUnit/AdViewUnitProxyTemplate.tsx"],"sourcesContent":["import React from 'react';\n\nimport { AdViewGroupItem } from '@adview/core/typings';\nimport { adViewFetcher, getAdRequestUrl, getResolveConfig } from '@adview/core/utils';\nimport { AdViewUnitPropsBase, AdViewUnitServerChildren } from '../types';\nimport { renderAnyTemplates } from './AdViewUnitTemplate';\nimport AdViewUnitTracking from './AdViewUnitTracking';\n\nexport type AdViewUnitServerProps = AdViewUnitPropsBase & {\n children?: AdViewUnitServerChildren;\n};\n\nasync function AdViewUnitServer({\n unitId,\n format,\n children,\n ...config\n}: AdViewUnitServerProps) {\n const baseConfig = getResolveConfig(config);\n const requestUrl = getAdRequestUrl(baseConfig, unitId, format);\n const response = await adViewFetcher(requestUrl);\n const isLoadingError = response instanceof Error;\n const error = isLoadingError ? response : undefined;\n const responseGroup =\n response instanceof Error ? null : response?.groups?.[0];\n const customTracker = responseGroup?.custom_tracker ?? {};\n const groupItems = responseGroup?.items;\n\n if (groupItems && groupItems.length) {\n return groupItems.map(({ tracker, ...data }: AdViewGroupItem) => {\n return (\n <AdViewUnitTracking key={data.id} {...tracker}>\n {renderAnyTemplates(children, {data, type: data.type || 'default', error, state: {\n isLoading: true,\n isComplete: true,\n isInitial: false,\n isError: isLoadingError,\n }})}\n </AdViewUnitTracking>\n );\n });\n }\n\n return (\n <AdViewUnitTracking {...customTracker}>\n {renderAnyTemplates(children, {data: null, type: 'default', error, state: {\n isLoading: true,\n isComplete: true,\n isInitial: false,\n isError: isLoadingError,\n }})}\n </AdViewUnitTracking>\n );\n}\n\nexport default AdViewUnitServer;\n","//\n// Example\n// <AdView.Unit>\n// <AdView.Template type=\"banner\">\n// <...>\n// </AdView.Template>\n// </AdView.Unit>\n//\n\nimport React, { JSX } from 'react';\nimport { AdViewUnitClientChildrenProps, AdViewUnitTemplateProps, AdViewUnitTemplateTypeProps } from '../types';\n\n// TemplateListRender is a function that takes a list of TemplateType and returns a React element\nexport type TemplateListRender = (tmpls: TemplateElement[]) => React.ReactElement | JSX.Element;\n\n// TemplateType is a React component that can be used to render ad templates\nexport type TemplateType = React.Component<AdViewUnitTemplateProps>;\nexport type TemplateElement = React.ReactElement<AdViewUnitTemplateProps>;\n\n// TemplateTypeFunction is a function that takes AdViewUnitTemplateTypeProps and returns a React node or element\nexport type TemplateTypeFunction = (props: AdViewUnitTemplateTypeProps) => React.ReactNode | React.ReactElement;\n\n// templateFromListRender is a function that takes a list of TemplateType and returns a React element\nexport const templateFromListRender = (tmpls: TemplateElement[], data: AdViewUnitTemplateTypeProps, wrap?: (children: React.ReactNode) => React.ReactNode): JSX.Element | React.ReactElement => {\n let renderedRemplates = tmpls.map((tmpl, index) => {\n let tmp = renderTemplate(tmpl, data);\n return !!tmp && React.isValidElement(tmp)\n ? <React.Fragment key={index}>{!!wrap ? wrap(tmp) : tmp}</React.Fragment>\n : null;\n }).filter(it => !!it);\n\n if (!renderedRemplates.length) {\n renderedRemplates = tmpls.map((tmpl, index) => {\n let tmp = renderTemplate(tmpl, {...data, type: 'default'});\n return !!tmp && React.isValidElement(tmp)\n ? <React.Fragment key={index}>{!!wrap ? wrap(tmp) : tmp}</React.Fragment>\n : null;\n }).filter(it => !!it);\n }\n\n return (<>{renderedRemplates}</>);\n};\n\n// renderTemplate is a function that takes a TemplateType or a function and returns a React node\nexport const renderTemplate = (tmpl: TemplateElement | TemplateTypeFunction, data: AdViewUnitTemplateTypeProps): React.ReactNode => {\n const isFunction = typeof tmpl === 'function';\n const isReactElement = React.isValidElement(tmpl);\n\n if (isReactElement) {\n // Extract type and children from the React element\n const { type, children } = (tmpl as TemplateElement).props;\n console.log('=====>\\nrenderTemplate: React element detected, type:', type, 'data:', data.type, data.type !== type);\n // If the type does not match, return null\n if (data.type !== type) {\n return null;\n }\n // If children is a function, call it with the data\n if (typeof children === 'function') {\n return children(data as AdViewUnitClientChildrenProps);\n }\n console.log('CLONE ELEMENT', tmpl);\n // If children is a React element, clone it with the new props\n return React.cloneElement((tmpl as TemplateElement), {\n ...data,\n children: children,\n });\n }\n\n if (isFunction) {\n return tmpl(data);\n }\n\n return null;\n}\n\n// renderTemplates is a function that takes a list of TemplateType and returns a React element\nexport const renderTemplates = (tmpls: TemplateElement[], data: AdViewUnitTemplateTypeProps, listRender?: TemplateListRender): React.ReactNode | React.ReactElement | JSX.Element => {\n return listRender ? listRender(tmpls) : templateFromListRender(tmpls, data);\n};\n\nexport const renderAnyTemplates = (tmpls: any, data: AdViewUnitTemplateTypeProps, listRender?: TemplateListRender): React.ReactNode | React.ReactElement | JSX.Element | null => {\n if (!tmpls) {\n return null;\n }\n\n if (Array.isArray(tmpls)) {\n return renderTemplates(tmpls as TemplateElement[], data, listRender);\n }\n\n if (typeof tmpls === 'function') {\n return tmpls(data);\n }\n\n if (React.isValidElement(tmpls)) {\n return templateFromListRender([tmpls as TemplateElement], data);\n }\n\n return null;\n}\n\n// Template is a React component that renders a template based on the type and data provided\n// Example usage:\n// <AdView.Unit>\n// <AdView.Template type=\"banner\" data={{...}}>\n// </AdView.Unit>\nconst AdViewUnitTemplate = ({ type, children, ...data }: AdViewUnitTemplateProps) => {\n const tmplProps: AdViewUnitTemplateTypeProps = {\n type,\n ...data,\n };\n\n // If children is a function, call it with the data\n if (typeof children === 'function') {\n return children(tmplProps as AdViewUnitClientChildrenProps) as React.ReactElement;\n }\n\n // If children is a React element, clone it with the new props\n if (React.isValidElement(children)) {\n return React.cloneElement(children, tmplProps);\n }\n\n // If no children are provided, return an empty fragment\n return <></>;\n}\n\nexport default AdViewUnitTemplate;\n","'use client';\n\nimport { executeImpressionsTracking } from '@adview/core/utils';\nimport React, { useCallback, useEffect, useMemo, useRef } from 'react';\n\ntype AdViewUnitTrackingProps = {\n impressions?: string[];\n views?: string[];\n clicks?: string[];\n children: React.ReactNode;\n};\n\nfunction AdViewUnitTracking({\n impressions,\n views,\n clicks,\n children,\n}: AdViewUnitTrackingProps) {\n const isServer = typeof window === 'undefined';\n const wrapperRef = useRef<HTMLDivElement>(null);\n const executeImpressionsTrackingHandler = useCallback(\n () => executeImpressionsTracking(impressions),\n [impressions],\n );\n const trackingObserverInstanceHandler = useCallback(\n (entries: IntersectionObserverEntry[]) => {\n entries.forEach(entry => {\n if (entry.isIntersecting) {\n executeImpressionsTracking(views);\n trackingObserverInstance?.unobserve(wrapperRef.current!);\n }\n });\n },\n [views],\n );\n const trackingObserverInstance = useMemo<IntersectionObserver | null>(() => {\n return !isServer\n ? new IntersectionObserver(trackingObserverInstanceHandler)\n : null;\n }, [isServer, trackingObserverInstanceHandler]);\n const clickTrackerHandler = useCallback(() => {\n executeImpressionsTracking(clicks);\n\n wrapperRef.current?.removeEventListener('click', clickTrackerHandler);\n }, [clicks]);\n\n useEffect(() => {\n if (wrapperRef.current && trackingObserverInstance) {\n executeImpressionsTrackingHandler();\n wrapperRef.current?.addEventListener('click', clickTrackerHandler);\n trackingObserverInstance?.observe(wrapperRef.current);\n\n return () => {\n wrapperRef.current?.removeEventListener('click', clickTrackerHandler);\n if (wrapperRef.current)\n trackingObserverInstance?.unobserve(wrapperRef.current);\n };\n }\n\n return () => {};\n }, [\n trackingObserverInstance,\n executeImpressionsTrackingHandler,\n clickTrackerHandler,\n ]);\n\n return <div ref={wrapperRef}>{children}</div>;\n}\n\nexport default AdViewUnitTracking;\n","import { getAssetByName, getPrepareURL, getSrcSetCSSThumbs } from '@adview/core/utils';\nimport React from 'react';\nimport { AdViewUnitTemplateTypeProps } from '../types';\n\ntype AdViewUnitBannerTemplateProps = Omit<AdViewUnitTemplateTypeProps, 'type'> & {\n type?: 'banner';\n className?: string;\n style?: React.CSSProperties;\n};\n\nfunction AdViewUnitBannerTemplate({className=\"banner\", style, data, state}: AdViewUnitBannerTemplateProps) {\n if (!data || !data.assets || !data.assets.length || !state?.isComplete) {\n return null;\n }\n const asset = getAssetByName('main', data.assets);\n\n return (\n <a\n target=\"_blank\"\n rel=\"noopener noreferrer\"\n href={getPrepareURL(data.url)}\n className={className}\n style={{ fontSize: 0, ...style }}\n >\n {asset && (\n <img\n alt=\"main\"\n src={asset.path}\n srcSet={asset.thumbs ? getSrcSetCSSThumbs(asset.thumbs) : ''}\n />\n )}\n </a>\n );\n}\n\nexport default AdViewUnitBannerTemplate;\n","import React from \"react\";\nimport { AdViewOptionalDataProps, AdViewUnitTemplateTypeProps } from \"../types\";\n\ntype AdViewUnitDefaultTemplateProps = Omit<AdViewUnitTemplateTypeProps, 'type'> & {\n type?: 'default';\n children?: React.ReactNode | ((props: AdViewOptionalDataProps) => React.ReactNode);\n};\n\nfunction AdViewUnitDefaultTemplate({ type='default', data, state, children, ...props }: AdViewUnitDefaultTemplateProps) {\n if (typeof children === 'function') {\n return <>{children({ data, state, ...props })}</>;\n }\n\n return (\n children ? <>{children}</> : (\n <div style={{ padding: '1rem', textAlign: 'center', color: '#666' }}>\n <p>🔄 Default content for ad unit</p>\n <p>Data: {JSON.stringify(data)}</p>\n <p>State: {JSON.stringify(state)}</p>\n </div>\n )\n );\n}\n\nAdViewUnitDefaultTemplate.defaultProps = {\n type: 'default',\n children: null,\n};\n\nexport default AdViewUnitDefaultTemplate;\n","import { getAssetByName, getPrepareURL, getSrcSetCSSThumbs } from '@adview/core/utils';\nimport React from 'react';\nimport { AdViewStyleTokensNative, AdViewUnitTemplateTypeProps } from '../types';\n\ntype AdViewUnitNativeTemplateProps = Omit<AdViewUnitTemplateTypeProps, 'type'> & {\n type?: 'native';\n classNames?: AdViewStyleTokensNative;\n};\n\nfunction AdViewUnitNativeTemplate({classNames, data, state}: AdViewUnitNativeTemplateProps) {\n if (!data || !data.assets || !data.assets.length || !state?.isComplete) {\n return null;\n }\n const { assets, url, fields } = data;\n const asset = getAssetByName('main', assets);\n\n if (!url) {\n return null;\n }\n\n return (\n <div className={classNames?.container}>\n <a\n target=\"_blank\"\n rel=\"noopener noreferrer\"\n href={getPrepareURL(url)}\n className={classNames?.imageLink}\n >\n {asset && (\n <img\n alt={fields?.title}\n title={fields?.title}\n src={asset.path}\n srcSet={asset.thumbs ? getSrcSetCSSThumbs(asset.thumbs) : undefined}\n className={classNames?.image}\n style={{ objectFit: 'cover', width: '100%', height: '100%' }}\n />\n )}\n </a>\n <div className={classNames?.label}>\n {fields?.title && (\n <a\n target=\"_blank\"\n rel=\"noopener noreferrer\"\n href={getPrepareURL(url)}\n data-class=\"titleLink\"\n className={classNames?.titleLink}\n >\n {fields.title}\n </a>\n )}\n {fields?.description && (\n <a\n target=\"_blank\"\n rel=\"noopener noreferrer\"\n href={getPrepareURL(url)}\n data-class=\"descriptionLink\"\n className={classNames?.descriptionLink}\n >\n {fields.description}\n </a>\n )}\n {fields?.brandname && (\n <a\n target=\"_blank\"\n rel=\"noopener noreferrer\"\n href={getPrepareURL(url)}\n data-class=\"brandNameLink\"\n className={classNames?.brandNameLink}\n >\n {fields.brandname}\n </a>\n )}\n {fields?.phone && (\n <a\n target=\"_blank\"\n rel=\"noopener noreferrer\"\n href={getPrepareURL(url)}\n data-class=\"phoneLink\"\n className={classNames?.phoneLink}\n >\n {fields.phone}\n </a>\n )}\n {fields?.url && (\n <a\n target=\"_blank\"\n rel=\"noopener noreferrer\"\n href={getPrepareURL(url)}\n data-class=\"urlLink\"\n className={classNames?.urlLink}\n >\n {fields?.url}\n </a>\n )}\n </div>\n </div>\n );\n}\n\nexport default AdViewUnitNativeTemplate;\n","import React from 'react';\nimport { AdViewUnitTemplateTypeProps } from '../types';\n\ntype AdViewUnitProxyTemplateProps = Omit<AdViewUnitTemplateTypeProps, 'type'> & {\n type?: 'proxy';\n className?: string;\n style?: React.CSSProperties;\n};\n\nfunction AdViewUnitProxyTemplate({className, style, data, state}: AdViewUnitProxyTemplateProps) {\n if (!data || !state?.isComplete) {\n return null;\n }\n const { url, fields } = data;\n const iframeSrc = fields?.url || url;\n\n if (!iframeSrc) {\n return null;\n }\n\n return (\n <iframe\n className={className}\n width=\"100%\"\n height=\"100%\"\n frameBorder=\"0\"\n marginWidth={0}\n marginHeight={0}\n allowTransparency={true}\n scrolling=\"no\"\n allowFullScreen={true}\n style={{ width: '100%', height: '100%', border: 'none', ...style }}\n src={iframeSrc}\n ></iframe>\n );\n}\n\nexport default AdViewUnitProxyTemplate;\n"],"mappings":"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","names":["React","React","React","React","React","getAssetByName","getPrepareURL","getSrcSetCSSThumbs","React","React"]}
@@ -1,5 +1,5 @@
1
- import { AdViewGroupItem, AdViewAdFormat, AdViewConfig } from '@adview/core/typings';
2
- import { ReactNode, ReactElement } from 'react';
1
+ import { AdViewGroupItem, AdViewConfig } from '@adview/core/typings';
2
+ import { ReactNode, JSX, ReactElement } from 'react';
3
3
 
4
4
  /**
5
5
  * CSS class name tokens for styling native ad components.
@@ -25,21 +25,6 @@ type AdViewStyleTokensNative = {
25
25
  /** Call-to-action URL link */
26
26
  urlLink?: string;
27
27
  };
28
- /**
29
- * CSS class name tokens for styling banner ad components.
30
- * Banner ads typically only need container styling.
31
- */
32
- type AdViewStyleTokensBanner = {
33
- /** Container wrapper for the banner ad */
34
- container?: string;
35
- };
36
- /**
37
- * Conditional style tokens based on ad format.
38
- * Provides type-safe styling options for different ad types.
39
- */
40
- type AdViewStyleTokens = {
41
- [K in AdViewAdFormat]?: K extends 'native' ? AdViewStyleTokensNative : K extends 'banner' ? AdViewStyleTokensBanner : K extends 'proxy' ? AdViewStyleTokensNative : never;
42
- };
43
28
  /**
44
29
  * Client-side version of AdViewGroupItem without tracking data.
45
30
  * Used in components where tracking is handled separately.
@@ -56,14 +41,35 @@ type AdViewUnitClientChildrenProps = {
56
41
  state: AdLoadState;
57
42
  /** Error object if ad loading failed */
58
43
  error: Error | null;
59
- /** Optional fallback content function */
60
- onDefault?: AdViewUnitDefault;
44
+ };
45
+ /**
46
+ * AdViewOptionalDataProps is the type for the optional data props of the AdViewUnitTemplate component
47
+ */
48
+ type AdViewOptionalDataProps = {
49
+ /** Ad data from the server, or null if not loaded */
50
+ data?: AdViewDataClient | null;
51
+ /** Detailed loading state object with boolean flags */
52
+ state?: AdLoadState;
53
+ /** Error object if ad loading failed */
54
+ error?: Error | null;
55
+ };
56
+ /**
57
+ * AdViewUnitTemplateTypeProps is the type for the props of the AdViewUnitTemplate component
58
+ */
59
+ type AdViewUnitTemplateTypeProps = AdViewOptionalDataProps & {
60
+ type: string;
61
+ };
62
+ /**
63
+ * AdViewUnitTemplateProps is the type for the props of the AdViewUnitTemplate component
64
+ */
65
+ type AdViewUnitTemplateProps = AdViewUnitTemplateTypeProps & {
66
+ children?: (data: AdViewUnitClientChildrenProps) => (React.ReactNode | JSX.Element | null);
61
67
  };
62
68
  /**
63
69
  * Custom render function or component for client-side ad rendering.
64
70
  * Allows complete control over ad display and loading states.
65
71
  */
66
- type AdViewUnitClientChildren = ((props: AdViewUnitClientChildrenProps) => ReactNode) | ReactElement<AdViewUnitClientChildrenProps>;
72
+ type AdViewUnitClientChildren = ((props: AdViewUnitClientChildrenProps) => ReactNode | JSX.Element) | ReactElement<AdViewUnitTemplateTypeProps> | ReactElement<AdViewUnitTemplateTypeProps>[] | any[];
67
73
  /**
68
74
  * Props passed to server-side custom render functions.
69
75
  * Simplified version without loading states since SSR is synchronous.
@@ -78,7 +84,7 @@ type AdViewUnitServerChildrenProps = {
78
84
  * Custom render function or component for server-side ad rendering.
79
85
  * Used in SSR contexts where loading states are not applicable.
80
86
  */
81
- type AdViewUnitServerChildren = ((props: AdViewUnitServerChildrenProps) => ReactNode) | ReactElement<AdViewUnitServerChildrenProps>;
87
+ type AdViewUnitServerChildren = ((props: AdViewUnitServerChildrenProps) => ReactNode | JSX.Element) | ReactElement<AdViewUnitServerChildrenProps>;
82
88
  /**
83
89
  * Fallback content displayed when no ads are available.
84
90
  * Can be a static React node or a function that returns content.
@@ -92,9 +98,7 @@ type AdViewUnitPropsBase = {
92
98
  /** Unique identifier for the ad unit */
93
99
  unitId: string;
94
100
  /** Optional ad format specification */
95
- format?: AdViewAdFormat;
96
- /** Optional fallback content when no ads available */
97
- onDefault?: AdViewUnitDefault;
101
+ format?: string | string[];
98
102
  } & AdViewConfig;
99
103
  /**
100
104
  * Detailed loading state for ad requests.
@@ -111,4 +115,4 @@ type AdLoadState = {
111
115
  isComplete: boolean;
112
116
  };
113
117
 
114
- export type { AdViewUnitPropsBase as A, AdViewUnitClientChildren as a, AdViewUnitServerChildren as b, AdViewDataClient as c, AdViewStyleTokensNative as d, AdViewStyleTokens as e, AdViewUnitDefault as f, AdViewUnitClientChildrenProps as g, AdViewUnitServerChildrenProps as h, AdLoadState as i };
118
+ export type { AdViewUnitPropsBase as A, AdViewUnitClientChildren as a, AdViewUnitServerChildren as b, AdViewUnitTemplateTypeProps as c, AdViewOptionalDataProps as d, AdViewStyleTokensNative as e, AdViewUnitTemplateProps as f, AdLoadState as g };