@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/index.js CHANGED
@@ -11,11 +11,82 @@ var AdViewProvider = ({ children, ...props }) => {
11
11
  var AdViewProvider_default = AdViewProvider;
12
12
 
13
13
  // src/AdViewUnit/AdViewUnit.client.tsx
14
- import React8 from "react";
14
+ import React4 from "react";
15
+
16
+ // src/AdViewUnit/AdViewUnitTemplate.tsx
17
+ import React2 from "react";
18
+ var templateFromListRender = (tmpls, data, wrap) => {
19
+ let renderedRemplates = tmpls.map((tmpl, index) => {
20
+ let tmp = renderTemplate(tmpl, data);
21
+ return !!tmp && React2.isValidElement(tmp) ? /* @__PURE__ */ React2.createElement(React2.Fragment, { key: index }, !!wrap ? wrap(tmp) : tmp) : null;
22
+ }).filter((it) => !!it);
23
+ if (!renderedRemplates.length) {
24
+ renderedRemplates = tmpls.map((tmpl, index) => {
25
+ let tmp = renderTemplate(tmpl, { ...data, type: "default" });
26
+ return !!tmp && React2.isValidElement(tmp) ? /* @__PURE__ */ React2.createElement(React2.Fragment, { key: index }, !!wrap ? wrap(tmp) : tmp) : null;
27
+ }).filter((it) => !!it);
28
+ }
29
+ return /* @__PURE__ */ React2.createElement(React2.Fragment, null, renderedRemplates);
30
+ };
31
+ var renderTemplate = (tmpl, data) => {
32
+ const isFunction = typeof tmpl === "function";
33
+ const isReactElement = React2.isValidElement(tmpl);
34
+ if (isReactElement) {
35
+ const { type, children } = tmpl.props;
36
+ console.log("=====>\nrenderTemplate: React element detected, type:", type, "data:", data.type, data.type !== type);
37
+ if (data.type !== type) {
38
+ return null;
39
+ }
40
+ if (typeof children === "function") {
41
+ return children(data);
42
+ }
43
+ console.log("CLONE ELEMENT", tmpl);
44
+ return React2.cloneElement(tmpl, {
45
+ ...data,
46
+ children
47
+ });
48
+ }
49
+ if (isFunction) {
50
+ return tmpl(data);
51
+ }
52
+ return null;
53
+ };
54
+ var renderTemplates = (tmpls, data, listRender) => {
55
+ return listRender ? listRender(tmpls) : templateFromListRender(tmpls, data);
56
+ };
57
+ var renderAnyTemplates = (tmpls, data, listRender) => {
58
+ if (!tmpls) {
59
+ return null;
60
+ }
61
+ if (Array.isArray(tmpls)) {
62
+ return renderTemplates(tmpls, data, listRender);
63
+ }
64
+ if (typeof tmpls === "function") {
65
+ return tmpls(data);
66
+ }
67
+ if (React2.isValidElement(tmpls)) {
68
+ return templateFromListRender([tmpls], data);
69
+ }
70
+ return null;
71
+ };
72
+ var AdViewUnitTemplate = ({ type, children, ...data }) => {
73
+ const tmplProps = {
74
+ type,
75
+ ...data
76
+ };
77
+ if (typeof children === "function") {
78
+ return children(tmplProps);
79
+ }
80
+ if (React2.isValidElement(children)) {
81
+ return React2.cloneElement(children, tmplProps);
82
+ }
83
+ return /* @__PURE__ */ React2.createElement(React2.Fragment, null);
84
+ };
85
+ var AdViewUnitTemplate_default = AdViewUnitTemplate;
15
86
 
16
87
  // src/AdViewUnit/AdViewUnitTracking.tsx
17
88
  import { executeImpressionsTracking } from "@adview/core/utils";
18
- import React2, { useCallback, useEffect, useMemo, useRef } from "react";
89
+ import React3, { useCallback, useEffect, useMemo, useRef } from "react";
19
90
  function AdViewUnitTracking({
20
91
  impressions,
21
92
  views,
@@ -64,113 +135,223 @@ function AdViewUnitTracking({
64
135
  executeImpressionsTrackingHandler,
65
136
  clickTrackerHandler
66
137
  ]);
67
- return /* @__PURE__ */ React2.createElement("div", { ref: wrapperRef }, children);
138
+ return /* @__PURE__ */ React3.createElement("div", { ref: wrapperRef }, children);
68
139
  }
69
140
  var AdViewUnitTracking_default = AdViewUnitTracking;
70
141
 
71
- // src/AdViewUnit/AdViewUnitWrapper.client.tsx
72
- import React7 from "react";
142
+ // src/AdViewUnit/useAdViewController.ts
143
+ import { adViewFetcher, getAdRequestUrl, getResolveConfig } from "@adview/core/utils";
144
+ import { useContext, useEffect as useEffect2, useState } from "react";
145
+ function useAdViewController(adUnitConfig, unitId, format) {
146
+ const [adLoadState, setAdLoadState] = useState("initial");
147
+ const [adData, setAdData] = useState(null);
148
+ const [errorMessage, setErrorMessage] = useState(null);
149
+ const globalConfig = useContext(AdViewProviderContext);
150
+ const baseConfig = getResolveConfig({ ...adUnitConfig, ...globalConfig });
151
+ const requestUrl = getAdRequestUrl(
152
+ baseConfig,
153
+ unitId,
154
+ typeof format === "string" ? format : format?.join(",") || ""
155
+ );
156
+ const loadAd = async () => {
157
+ setAdLoadState("loading");
158
+ try {
159
+ console.log("Requesting ad data from:", adViewFetcher, "with URL:", requestUrl);
160
+ const response = await adViewFetcher(requestUrl, baseConfig.defaultAdData);
161
+ console.log("AdViewController response:", response);
162
+ if (response instanceof Error) {
163
+ setAdLoadState("error");
164
+ setErrorMessage(response);
165
+ } else {
166
+ setAdData(response);
167
+ }
168
+ setAdLoadState("complete");
169
+ } catch (error) {
170
+ setAdLoadState("error");
171
+ setAdLoadState("complete");
172
+ setErrorMessage(error);
173
+ }
174
+ };
175
+ const loadState = {
176
+ isInitial: adLoadState === "initial",
177
+ isLoading: adLoadState === "loading",
178
+ isComplete: adLoadState === "complete",
179
+ isError: adLoadState === "error"
180
+ };
181
+ useEffect2(() => {
182
+ loadAd();
183
+ }, []);
184
+ return [adData, errorMessage, loadState];
185
+ }
186
+ var useAdViewController_default = useAdViewController;
73
187
 
74
- // src/AdViewUnit/AdViewUnitNative.tsx
75
- import { getAssetByName, getPrepareURL, getSrcSetCSSThumbs } from "@adview/core/utils";
76
- import React3 from "react";
77
- function AdViewUnitNative({
78
- assets,
79
- fields,
80
- url,
81
- classNames
188
+ // src/AdViewUnit/AdViewUnit.client.tsx
189
+ function AdViewUnitClient({
190
+ unitId,
191
+ format,
192
+ children,
193
+ ...config
82
194
  }) {
83
- const asset = getAssetByName("main", assets);
195
+ const [response, error, loadState] = useAdViewController_default(
196
+ config,
197
+ unitId,
198
+ format
199
+ );
200
+ const responseGroup = error ? null : response?.groups?.[0];
201
+ const customTracker = responseGroup?.custom_tracker ?? {};
202
+ const groupItems = responseGroup?.items;
203
+ if (groupItems && groupItems?.length > 0) {
204
+ return groupItems.map(({ tracker, ...data }) => {
205
+ return /* @__PURE__ */ React4.createElement(AdViewUnitTracking_default, { key: data.id, ...tracker }, renderAnyTemplates(children, { data, type: data.type || "default", error, state: loadState }));
206
+ });
207
+ }
208
+ return /* @__PURE__ */ React4.createElement(AdViewUnitTracking_default, { ...customTracker }, renderAnyTemplates(children, { data: null, type: "default", error, state: loadState }));
209
+ }
210
+ var AdViewUnit_client_default = AdViewUnitClient;
211
+
212
+ // src/AdViewUnit/AdViewUnitBannerTemplate.tsx
213
+ import { getAssetByName, getPrepareURL, getSrcSetCSSThumbs } from "@adview/core/utils";
214
+ import React5 from "react";
215
+ function AdViewUnitBannerTemplate({ className = "banner", style, data, state }) {
216
+ if (!data || !data.assets || !data.assets.length || !state?.isComplete) {
217
+ return null;
218
+ }
219
+ const asset = getAssetByName("main", data.assets);
220
+ return /* @__PURE__ */ React5.createElement(
221
+ "a",
222
+ {
223
+ target: "_blank",
224
+ rel: "noopener noreferrer",
225
+ href: getPrepareURL(data.url),
226
+ className,
227
+ style: { fontSize: 0, ...style }
228
+ },
229
+ asset && /* @__PURE__ */ React5.createElement(
230
+ "img",
231
+ {
232
+ alt: "main",
233
+ src: asset.path,
234
+ srcSet: asset.thumbs ? getSrcSetCSSThumbs(asset.thumbs) : ""
235
+ }
236
+ )
237
+ );
238
+ }
239
+ var AdViewUnitBannerTemplate_default = AdViewUnitBannerTemplate;
240
+
241
+ // src/AdViewUnit/AdViewUnitDefaultTemplate.tsx
242
+ import React6 from "react";
243
+ function AdViewUnitDefaultTemplate({ type = "default", data, state, children, ...props }) {
244
+ if (typeof children === "function") {
245
+ return /* @__PURE__ */ React6.createElement(React6.Fragment, null, children({ data, state, ...props }));
246
+ }
247
+ return children ? /* @__PURE__ */ React6.createElement(React6.Fragment, null, children) : /* @__PURE__ */ React6.createElement("div", { style: { padding: "1rem", textAlign: "center", color: "#666" } }, /* @__PURE__ */ React6.createElement("p", null, "\u{1F504} Default content for ad unit"), /* @__PURE__ */ React6.createElement("p", null, "Data: ", JSON.stringify(data)), /* @__PURE__ */ React6.createElement("p", null, "State: ", JSON.stringify(state)));
248
+ }
249
+ AdViewUnitDefaultTemplate.defaultProps = {
250
+ type: "default",
251
+ children: null
252
+ };
253
+ var AdViewUnitDefaultTemplate_default = AdViewUnitDefaultTemplate;
254
+
255
+ // src/AdViewUnit/AdViewUnitNativeTemplate.tsx
256
+ import { getAssetByName as getAssetByName2, getPrepareURL as getPrepareURL2, getSrcSetCSSThumbs as getSrcSetCSSThumbs2 } from "@adview/core/utils";
257
+ import React7 from "react";
258
+ function AdViewUnitNativeTemplate({ classNames, data, state }) {
259
+ if (!data || !data.assets || !data.assets.length || !state?.isComplete) {
260
+ return null;
261
+ }
262
+ const { assets, url, fields } = data;
263
+ const asset = getAssetByName2("main", assets);
84
264
  if (!url) {
85
265
  return null;
86
266
  }
87
- return /* @__PURE__ */ React3.createElement("div", { className: classNames?.container }, /* @__PURE__ */ React3.createElement(
267
+ return /* @__PURE__ */ React7.createElement("div", { className: classNames?.container }, /* @__PURE__ */ React7.createElement(
88
268
  "a",
89
269
  {
90
270
  target: "_blank",
91
271
  rel: "noopener noreferrer",
92
- href: getPrepareURL(url),
272
+ href: getPrepareURL2(url),
93
273
  className: classNames?.imageLink
94
274
  },
95
- asset && /* @__PURE__ */ React3.createElement(
275
+ asset && /* @__PURE__ */ React7.createElement(
96
276
  "img",
97
277
  {
98
278
  alt: fields?.title,
99
279
  title: fields?.title,
100
280
  src: asset.path,
101
- srcSet: asset.thumbs ? getSrcSetCSSThumbs(asset.thumbs) : void 0,
281
+ srcSet: asset.thumbs ? getSrcSetCSSThumbs2(asset.thumbs) : void 0,
102
282
  className: classNames?.image,
103
283
  style: { objectFit: "cover", width: "100%", height: "100%" }
104
284
  }
105
285
  )
106
- ), /* @__PURE__ */ React3.createElement("div", { className: classNames?.label }, fields?.title && /* @__PURE__ */ React3.createElement(
286
+ ), /* @__PURE__ */ React7.createElement("div", { className: classNames?.label }, fields?.title && /* @__PURE__ */ React7.createElement(
107
287
  "a",
108
288
  {
109
289
  target: "_blank",
110
290
  rel: "noopener noreferrer",
111
- href: getPrepareURL(url),
291
+ href: getPrepareURL2(url),
112
292
  "data-class": "titleLink",
113
293
  className: classNames?.titleLink
114
294
  },
115
295
  fields.title
116
- ), fields?.description && /* @__PURE__ */ React3.createElement(
296
+ ), fields?.description && /* @__PURE__ */ React7.createElement(
117
297
  "a",
118
298
  {
119
299
  target: "_blank",
120
300
  rel: "noopener noreferrer",
121
- href: getPrepareURL(url),
301
+ href: getPrepareURL2(url),
122
302
  "data-class": "descriptionLink",
123
303
  className: classNames?.descriptionLink
124
304
  },
125
305
  fields.description
126
- ), fields?.brandname && /* @__PURE__ */ React3.createElement(
306
+ ), fields?.brandname && /* @__PURE__ */ React7.createElement(
127
307
  "a",
128
308
  {
129
309
  target: "_blank",
130
310
  rel: "noopener noreferrer",
131
- href: getPrepareURL(url),
311
+ href: getPrepareURL2(url),
132
312
  "data-class": "brandNameLink",
133
313
  className: classNames?.brandNameLink
134
314
  },
135
315
  fields.brandname
136
- ), fields?.phone && /* @__PURE__ */ React3.createElement(
316
+ ), fields?.phone && /* @__PURE__ */ React7.createElement(
137
317
  "a",
138
318
  {
139
319
  target: "_blank",
140
320
  rel: "noopener noreferrer",
141
- href: getPrepareURL(url),
321
+ href: getPrepareURL2(url),
142
322
  "data-class": "phoneLink",
143
323
  className: classNames?.phoneLink
144
324
  },
145
325
  fields.phone
146
- ), fields?.url && /* @__PURE__ */ React3.createElement(
326
+ ), fields?.url && /* @__PURE__ */ React7.createElement(
147
327
  "a",
148
328
  {
149
329
  target: "_blank",
150
330
  rel: "noopener noreferrer",
151
- href: getPrepareURL(url),
331
+ href: getPrepareURL2(url),
152
332
  "data-class": "urlLink",
153
333
  className: classNames?.urlLink
154
334
  },
155
335
  fields?.url
156
336
  )));
157
337
  }
158
- var AdViewUnitNative_default = AdViewUnitNative;
338
+ var AdViewUnitNativeTemplate_default = AdViewUnitNativeTemplate;
159
339
 
160
- // src/AdViewUnit/AdViewUnitProxy.tsx
161
- import React4 from "react";
162
- function AdViewUnitProxy({
163
- // assets,
164
- fields,
165
- url
166
- }) {
340
+ // src/AdViewUnit/AdViewUnitProxyTemplate.tsx
341
+ import React8 from "react";
342
+ function AdViewUnitProxyTemplate({ className, style, data, state }) {
343
+ if (!data || !state?.isComplete) {
344
+ return null;
345
+ }
346
+ const { url, fields } = data;
167
347
  const iframeSrc = fields?.url || url;
168
348
  if (!iframeSrc) {
169
349
  return null;
170
350
  }
171
- return /* @__PURE__ */ React4.createElement(
351
+ return /* @__PURE__ */ React8.createElement(
172
352
  "iframe",
173
353
  {
354
+ className,
174
355
  width: "100%",
175
356
  height: "100%",
176
357
  frameBorder: "0",
@@ -179,197 +360,26 @@ function AdViewUnitProxy({
179
360
  allowTransparency: true,
180
361
  scrolling: "no",
181
362
  allowFullScreen: true,
182
- style: { width: "100%", height: "100%" },
363
+ style: { width: "100%", height: "100%", border: "none", ...style },
183
364
  src: iframeSrc
184
365
  }
185
366
  );
186
367
  }
187
- var AdViewUnitProxy_default = AdViewUnitProxy;
188
-
189
- // src/AdViewUnit/AdViewUnitBanner.tsx
190
- import { getAssetByName as getAssetByName2, getPrepareURL as getPrepareURL2, getSrcSetCSSThumbs as getSrcSetCSSThumbs2 } from "@adview/core/utils";
191
- import React5 from "react";
192
- function AdViewUnitBanner({ assets, url }) {
193
- const asset = getAssetByName2("main", assets);
194
- return /* @__PURE__ */ React5.createElement("center", null, /* @__PURE__ */ React5.createElement(
195
- "a",
196
- {
197
- target: "_blank",
198
- rel: "noopener noreferrer",
199
- href: getPrepareURL2(url),
200
- className: "banner",
201
- style: { fontSize: 0 }
202
- },
203
- asset && /* @__PURE__ */ React5.createElement(
204
- "img",
205
- {
206
- alt: "main",
207
- src: asset.path,
208
- srcSet: asset.thumbs ? getSrcSetCSSThumbs2(asset.thumbs) : ""
209
- }
210
- )
211
- ));
212
- }
213
- var AdViewUnitBanner_default = AdViewUnitBanner;
214
-
215
- // src/AdViewUnit/AdViewUnitTypeSwitch.tsx
216
- import React6 from "react";
217
- function AdViewUnitTypeSwitch({
218
- data,
219
- classNames,
220
- onDefault
221
- }) {
222
- switch (data?.type) {
223
- case "native":
224
- return /* @__PURE__ */ React6.createElement(AdViewUnitNative_default, { ...data, classNames: classNames?.native });
225
- case "proxy":
226
- return /* @__PURE__ */ React6.createElement(AdViewUnitProxy_default, { ...data, classNames: classNames?.proxy });
227
- case "banner":
228
- return /* @__PURE__ */ React6.createElement(AdViewUnitBanner_default, { ...data, classNames: classNames?.banner });
229
- default:
230
- if (React6.isValidElement(onDefault)) {
231
- return React6.cloneElement(onDefault);
232
- }
233
- if (typeof onDefault === "function") {
234
- return onDefault();
235
- }
236
- return null;
237
- }
238
- }
239
- var AdViewUnitTypeSwitch_default = AdViewUnitTypeSwitch;
240
-
241
- // src/AdViewUnit/AdViewUnitWrapper.client.tsx
242
- function AdViewUnitWrapperClient({
243
- data,
244
- state,
245
- error,
246
- children,
247
- onDefault
248
- }) {
249
- const { isLoading, isError } = state;
250
- const isChildrenReactNode = React7.isValidElement(children);
251
- const isChildrenFunction = typeof children === "function";
252
- if (isChildrenReactNode) {
253
- return React7.cloneElement(children, {
254
- data,
255
- state,
256
- error,
257
- onDefault
258
- });
259
- }
260
- if (isChildrenFunction) {
261
- return children({
262
- data,
263
- state,
264
- error,
265
- onDefault
266
- });
267
- }
268
- if (isLoading) {
269
- return null;
270
- }
271
- if (!children && !isError && data) {
272
- return /* @__PURE__ */ React7.createElement(AdViewUnitTypeSwitch_default, { data, onDefault });
273
- }
274
- if (React7.isValidElement(onDefault)) {
275
- return React7.cloneElement(onDefault);
276
- }
277
- if (typeof onDefault === "function") {
278
- return onDefault();
279
- }
280
- return null;
281
- }
282
- var AdViewUnitWrapper_client_default = AdViewUnitWrapperClient;
283
-
284
- // src/AdViewUnit/useAdViewController.ts
285
- import { adViewFetcher, getAdRequestUrl, getResolveConfig } from "@adview/core/utils";
286
- import { useContext, useEffect as useEffect2, useState } from "react";
287
- function useAdViewController(adUnitConfig, unitId, format) {
288
- const [adLoadState, setAdLoadState] = useState("initial");
289
- const [adData, setAdData] = useState(null);
290
- const [errorMessage, setErrorMessage] = useState(null);
291
- const globalConfig = useContext(AdViewProviderContext);
292
- const baseConfig = getResolveConfig({ ...adUnitConfig, ...globalConfig });
293
- const requestUrl = getAdRequestUrl(baseConfig, unitId, format);
294
- const loadAd = async () => {
295
- setAdLoadState("loading");
296
- try {
297
- console.log("Requesting ad data from:", adViewFetcher, "with URL:", requestUrl);
298
- const response = await adViewFetcher(requestUrl, baseConfig.defaultAdData);
299
- console.log("AdViewController response:", response);
300
- if (response instanceof Error) {
301
- setAdLoadState("error");
302
- setErrorMessage(response);
303
- } else {
304
- setAdData(response);
305
- }
306
- setAdLoadState("complete");
307
- } catch (error) {
308
- setAdLoadState("error");
309
- setAdLoadState("complete");
310
- setErrorMessage(error);
311
- }
312
- };
313
- const loadState = {
314
- isInitial: adLoadState === "initial",
315
- isLoading: adLoadState === "loading",
316
- isComplete: adLoadState === "complete",
317
- isError: adLoadState === "error"
318
- };
319
- useEffect2(() => {
320
- loadAd();
321
- }, []);
322
- return [adData, errorMessage, loadState];
323
- }
324
- var useAdViewController_default = useAdViewController;
325
-
326
- // src/AdViewUnit/AdViewUnit.client.tsx
327
- function AdViewUnitClient({
328
- unitId,
329
- format,
330
- children,
331
- onDefault = () => null,
332
- ...config
333
- }) {
334
- const [response, error, loadState] = useAdViewController_default(
335
- config,
336
- unitId,
337
- format
338
- );
339
- const responseGroup = error ? null : response?.groups?.[0];
340
- const customTracker = responseGroup?.custom_tracker ?? {};
341
- const groupItems = responseGroup?.items;
342
- if (groupItems && groupItems?.length) {
343
- return groupItems.map(({ tracker, ...data }) => {
344
- return /* @__PURE__ */ React8.createElement(AdViewUnitTracking_default, { key: data.id, ...tracker }, /* @__PURE__ */ React8.createElement(
345
- AdViewUnitWrapper_client_default,
346
- {
347
- state: loadState,
348
- error,
349
- data,
350
- onDefault
351
- },
352
- children
353
- ));
354
- });
355
- }
356
- return /* @__PURE__ */ React8.createElement(AdViewUnitTracking_default, { ...customTracker }, /* @__PURE__ */ React8.createElement(
357
- AdViewUnitWrapper_client_default,
358
- {
359
- state: loadState,
360
- error,
361
- onDefault
362
- },
363
- children
364
- ));
365
- }
366
- var AdViewUnit_client_default = AdViewUnitClient;
368
+ var AdViewUnitProxyTemplate_default = AdViewUnitProxyTemplate;
367
369
  export {
368
- AdViewUnitBanner_default as Banner,
369
- AdViewUnitNative_default as Native,
370
+ AdViewProvider_default as AdViewProvider,
371
+ AdViewUnitBannerTemplate_default as AdViewUnitBannerTemplate,
372
+ AdViewUnit_client_default as AdViewUnitClient,
373
+ AdViewUnitDefaultTemplate_default as AdViewUnitDefaultTemplate,
374
+ AdViewUnitNativeTemplate_default as AdViewUnitNativeTemplate,
375
+ AdViewUnitProxyTemplate_default as AdViewUnitProxyTemplate,
376
+ AdViewUnitTemplate_default as AdViewUnitTemplate,
377
+ AdViewUnitBannerTemplate_default as BannerTemplate,
378
+ AdViewUnitDefaultTemplate_default as DefaultTemplate,
379
+ AdViewUnitNativeTemplate_default as NativeTemplate,
370
380
  AdViewProvider_default as Provider,
371
- AdViewUnitProxy_default as Proxy,
372
- AdViewUnitTypeSwitch_default as TypeSwitch,
381
+ AdViewUnitProxyTemplate_default as ProxyTemplate,
382
+ AdViewUnitTemplate_default as Template,
373
383
  AdViewUnit_client_default as Unit
374
384
  };
375
385
  //# sourceMappingURL=index.js.map
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/AdViewUnit/AdViewProvider.tsx","../src/AdViewUnit/AdViewUnit.client.tsx","../src/AdViewUnit/AdViewUnitTracking.tsx","../src/AdViewUnit/AdViewUnitWrapper.client.tsx","../src/AdViewUnit/AdViewUnitNative.tsx","../src/AdViewUnit/AdViewUnitProxy.tsx","../src/AdViewUnit/AdViewUnitBanner.tsx","../src/AdViewUnit/AdViewUnitTypeSwitch.tsx","../src/AdViewUnit/useAdViewController.ts"],"sourcesContent":["'use client';\n\nimport React, { createContext } from 'react';\nimport { type AdViewConfig } from '../types';\n\ntype AdViewProviderContextProps = AdViewConfig;\n\nexport const AdViewProviderContext = createContext<AdViewProviderContextProps>(\n {} as AdViewProviderContextProps,\n);\n\ntype AdViewProviderProps = {\n children: React.ReactNode;\n} & AdViewProviderContextProps;\n\nconst AdViewProvider = ({ children, ...props }: AdViewProviderProps) => {\n return (\n <AdViewProviderContext.Provider value={props}>\n {children}\n </AdViewProviderContext.Provider>\n );\n};\n\nexport default AdViewProvider;\n","'use client';\n\nimport React from 'react';\nimport { AdViewUnitClientChildren, AdViewUnitPropsBase } from '../types';\nimport AdViewUnitTracking from './AdViewUnitTracking';\nimport AdViewUnitWrapperClient from './AdViewUnitWrapper.client';\nimport useAdViewController from './useAdViewController';\n\nexport type AdViewUnitClientProps = AdViewUnitPropsBase & {\n children?: AdViewUnitClientChildren;\n};\n\nfunction AdViewUnitClient({\n unitId,\n format,\n children,\n onDefault = () => null,\n ...config\n}: AdViewUnitClientProps) {\n const [response, error, loadState] = useAdViewController(\n config,\n unitId,\n format,\n );\n const responseGroup = 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 }) => {\n return (\n <AdViewUnitTracking key={data.id} {...tracker}>\n <AdViewUnitWrapperClient\n state={loadState}\n error={error}\n data={data}\n onDefault={onDefault}\n >\n {children}\n </AdViewUnitWrapperClient>\n </AdViewUnitTracking>\n );\n });\n }\n\n return (\n <AdViewUnitTracking {...customTracker}>\n <AdViewUnitWrapperClient\n state={loadState}\n error={error}\n onDefault={onDefault}\n >\n {children}\n </AdViewUnitWrapperClient>\n </AdViewUnitTracking>\n );\n}\n\nexport default AdViewUnitClient;\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","'use client';\n\nimport React from 'react';\nimport AdViewUnitTypeSwitch from './AdViewUnitTypeSwitch';\nimport {\n AdViewUnitClientChildren,\n AdViewUnitClientChildrenProps,\n AdViewUnitDefault,\n} from '../types';\n\nexport type AdViewUnitWrapperClientProps = AdViewUnitClientChildrenProps & {\n children?: AdViewUnitClientChildren;\n onDefault: AdViewUnitDefault;\n};\n\nfunction AdViewUnitWrapperClient({\n data,\n state,\n error,\n children,\n onDefault,\n}: AdViewUnitWrapperClientProps) {\n const { isLoading, isError } = state;\n const isChildrenReactNode = React.isValidElement(children);\n const isChildrenFunction = typeof children === 'function';\n\n if (isChildrenReactNode) {\n return React.cloneElement(children, {\n data,\n state,\n error,\n onDefault,\n });\n }\n\n if (isChildrenFunction) {\n return children({\n data,\n state,\n error,\n onDefault,\n });\n }\n\n if (isLoading) {\n return null;\n }\n\n if (!children && !isError && data) {\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 AdViewUnitWrapperClient;\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","'use client';\n\nimport { AdViewData } from '@adview/core/typings';\nimport { adViewFetcher, getAdRequestUrl, getResolveConfig } from '@adview/core/utils';\nimport { useContext, useEffect, useState } from 'react';\nimport { AdLoadState, AdViewConfig } from '../types';\nimport { AdViewProviderContext } from './AdViewProvider';\n\ntype UseAdViewControllerProps = [AdViewData | null, Error | null, AdLoadState];\n\nfunction useAdViewController(\n adUnitConfig: AdViewConfig,\n unitId: string,\n format?: string,\n): UseAdViewControllerProps {\n const [adLoadState, setAdLoadState] = useState<string>('initial');\n const [adData, setAdData] = useState<AdViewData | null>(null);\n const [errorMessage, setErrorMessage] = useState<Error | null>(null);\n const globalConfig = useContext(AdViewProviderContext);\n const baseConfig = getResolveConfig({ ...adUnitConfig, ...globalConfig });\n const requestUrl = getAdRequestUrl(baseConfig, unitId, format);\n const loadAd = async () => {\n setAdLoadState('loading');\n\n try {\n console.log('Requesting ad data from:', adViewFetcher, 'with URL:', requestUrl);\n const response = await adViewFetcher(requestUrl, baseConfig.defaultAdData);\n console.log('AdViewController response:', response);\n\n if (response instanceof Error) {\n setAdLoadState('error');\n setErrorMessage(response);\n } else {\n setAdData(response);\n }\n setAdLoadState('complete');\n } catch (error) {\n setAdLoadState('error');\n setAdLoadState('complete');\n setErrorMessage(error as Error);\n }\n };\n const loadState = {\n isInitial: adLoadState === 'initial',\n isLoading: adLoadState === 'loading',\n isComplete: adLoadState === 'complete',\n isError: adLoadState === 'error',\n };\n\n useEffect(() => {\n loadAd();\n }, []);\n\n return [adData, errorMessage, loadState];\n}\n\nexport default useAdViewController;\n"],"mappings":";AAEA,OAAO,SAAS,qBAAqB;AAK9B,IAAM,wBAAwB;AAAA,EACnC,CAAC;AACH;AAMA,IAAM,iBAAiB,CAAC,EAAE,UAAU,GAAG,MAAM,MAA2B;AACtE,SACE,oCAAC,sBAAsB,UAAtB,EAA+B,OAAO,SACpC,QACH;AAEJ;AAEA,IAAO,yBAAQ;;;ACrBf,OAAOA,YAAW;;;ACAlB,SAAS,kCAAkC;AAC3C,OAAOC,UAAS,aAAa,WAAW,SAAS,cAAc;AAS/D,SAAS,mBAAmB;AAAA,EAC1B;AAAA,EACA;AAAA,EACA;AAAA,EACA;AACF,GAA4B;AAC1B,QAAM,WAAW,OAAO,WAAW;AACnC,QAAM,aAAa,OAAuB,IAAI;AAC9C,QAAM,oCAAoC;AAAA,IACxC,MAAM,2BAA2B,WAAW;AAAA,IAC5C,CAAC,WAAW;AAAA,EACd;AACA,QAAM,kCAAkC;AAAA,IACtC,CAAC,YAAyC;AACxC,cAAQ,QAAQ,WAAS;AACvB,YAAI,MAAM,gBAAgB;AACxB,qCAA2B,KAAK;AAChC,oCAA0B,UAAU,WAAW,OAAQ;AAAA,QACzD;AAAA,MACF,CAAC;AAAA,IACH;AAAA,IACA,CAAC,KAAK;AAAA,EACR;AACA,QAAM,2BAA2B,QAAqC,MAAM;AAC1E,WAAO,CAAC,WACJ,IAAI,qBAAqB,+BAA+B,IACxD;AAAA,EACN,GAAG,CAAC,UAAU,+BAA+B,CAAC;AAC9C,QAAM,sBAAsB,YAAY,MAAM;AAC5C,+BAA2B,MAAM;AAEjC,eAAW,SAAS,oBAAoB,SAAS,mBAAmB;AAAA,EACtE,GAAG,CAAC,MAAM,CAAC;AAEX,YAAU,MAAM;AACd,QAAI,WAAW,WAAW,0BAA0B;AAClD,wCAAkC;AAClC,iBAAW,SAAS,iBAAiB,SAAS,mBAAmB;AACjE,gCAA0B,QAAQ,WAAW,OAAO;AAEpD,aAAO,MAAM;AACX,mBAAW,SAAS,oBAAoB,SAAS,mBAAmB;AACpE,YAAI,WAAW;AACb,oCAA0B,UAAU,WAAW,OAAO;AAAA,MAC1D;AAAA,IACF;AAEA,WAAO,MAAM;AAAA,IAAC;AAAA,EAChB,GAAG;AAAA,IACD;AAAA,IACA;AAAA,IACA;AAAA,EACF,CAAC;AAED,SAAO,gBAAAA,OAAA,cAAC,SAAI,KAAK,cAAa,QAAS;AACzC;AAEA,IAAO,6BAAQ;;;ACnEf,OAAOC,YAAW;;;ACFlB,SAAS,gBAAgB,eAAe,0BAA0B;AAClE,OAAOC,YAAW;AAOlB,SAAS,iBAAiB;AAAA,EACxB;AAAA,EACA;AAAA,EACA;AAAA,EACA;AACF,GAA0B;AACxB,QAAM,QAAQ,eAAe,QAAQ,MAAM;AAE3C,MAAI,CAAC,KAAK;AACR,WAAO;AAAA,EACT;AAEA,SACE,gBAAAA,OAAA,cAAC,SAAI,WAAW,YAAY,aAC1B,gBAAAA,OAAA;AAAA,IAAC;AAAA;AAAA,MACC,QAAO;AAAA,MACP,KAAI;AAAA,MACJ,MAAM,cAAc,GAAG;AAAA,MACvB,WAAW,YAAY;AAAA;AAAA,IAEtB,SACC,gBAAAA,OAAA;AAAA,MAAC;AAAA;AAAA,QACC,KAAK,QAAQ;AAAA,QACb,OAAO,QAAQ;AAAA,QACf,KAAK,MAAM;AAAA,QACX,QAAQ,MAAM,SAAS,mBAAmB,MAAM,MAAM,IAAI;AAAA,QAC1D,WAAW,YAAY;AAAA,QACvB,OAAO,EAAE,WAAW,SAAS,OAAO,QAAQ,QAAQ,OAAO;AAAA;AAAA,IAC7D;AAAA,EAEJ,GACA,gBAAAA,OAAA,cAAC,SAAI,WAAW,YAAY,SACzB,QAAQ,SACP,gBAAAA,OAAA;AAAA,IAAC;AAAA;AAAA,MACC,QAAO;AAAA,MACP,KAAI;AAAA,MACJ,MAAM,cAAc,GAAG;AAAA,MACvB,cAAW;AAAA,MACX,WAAW,YAAY;AAAA;AAAA,IAEtB,OAAO;AAAA,EACV,GAED,QAAQ,eACP,gBAAAA,OAAA;AAAA,IAAC;AAAA;AAAA,MACC,QAAO;AAAA,MACP,KAAI;AAAA,MACJ,MAAM,cAAc,GAAG;AAAA,MACvB,cAAW;AAAA,MACX,WAAW,YAAY;AAAA;AAAA,IAEtB,OAAO;AAAA,EACV,GAED,QAAQ,aACP,gBAAAA,OAAA;AAAA,IAAC;AAAA;AAAA,MACC,QAAO;AAAA,MACP,KAAI;AAAA,MACJ,MAAM,cAAc,GAAG;AAAA,MACvB,cAAW;AAAA,MACX,WAAW,YAAY;AAAA;AAAA,IAEtB,OAAO;AAAA,EACV,GAED,QAAQ,SACP,gBAAAA,OAAA;AAAA,IAAC;AAAA;AAAA,MACC,QAAO;AAAA,MACP,KAAI;AAAA,MACJ,MAAM,cAAc,GAAG;AAAA,MACvB,cAAW;AAAA,MACX,WAAW,YAAY;AAAA;AAAA,IAEtB,OAAO;AAAA,EACV,GAED,QAAQ,OACP,gBAAAA,OAAA;AAAA,IAAC;AAAA;AAAA,MACC,QAAO;AAAA,MACP,KAAI;AAAA,MACJ,MAAM,cAAc,GAAG;AAAA,MACvB,cAAW;AAAA,MACX,WAAW,YAAY;AAAA;AAAA,IAEtB,QAAQ;AAAA,EACX,CAEJ,CACF;AAEJ;AAEA,IAAO,2BAAQ;;;ACpGf,OAAOC,YAAW;AAOlB,SAAS,gBAAgB;AAAA;AAAA,EAEvB;AAAA,EACA;AACF,GAAyB;AACvB,QAAM,YAAY,QAAQ,OAAO;AAEjC,MAAI,CAAC,WAAW;AACd,WAAO;AAAA,EACT;AAEA,SACE,gBAAAA,OAAA;AAAA,IAAC;AAAA;AAAA,MACC,OAAM;AAAA,MACN,QAAO;AAAA,MACP,aAAY;AAAA,MACZ,aAAa;AAAA,MACb,cAAc;AAAA,MACd,mBAAmB;AAAA,MACnB,WAAU;AAAA,MACV,iBAAiB;AAAA,MACjB,OAAO,EAAE,OAAO,QAAQ,QAAQ,OAAO;AAAA,MACvC,KAAK;AAAA;AAAA,EACN;AAEL;AAEA,IAAO,0BAAQ;;;AClCf,SAAS,kBAAAC,iBAAgB,iBAAAC,gBAAe,sBAAAC,2BAA0B;AAClE,OAAOC,YAAW;AAOlB,SAAS,iBAAiB,EAAE,QAAQ,IAAI,GAA0B;AAChE,QAAM,QAAQH,gBAAe,QAAQ,MAAM;AAE3C,SACE,gBAAAG,OAAA,cAAC,gBACC,gBAAAA,OAAA;AAAA,IAAC;AAAA;AAAA,MACC,QAAO;AAAA,MACP,KAAI;AAAA,MACJ,MAAMF,eAAc,GAAG;AAAA,MACvB,WAAU;AAAA,MACV,OAAO,EAAE,UAAU,EAAE;AAAA;AAAA,IAEpB,SACC,gBAAAE,OAAA;AAAA,MAAC;AAAA;AAAA,QACC,KAAI;AAAA,QACJ,KAAK,MAAM;AAAA,QACX,QAAQ,MAAM,SAASD,oBAAmB,MAAM,MAAM,IAAI;AAAA;AAAA,IAC5D;AAAA,EAEJ,CACF;AAEJ;AAEA,IAAO,2BAAQ;;;ACxBf,OAAOE,YAAW;AAQlB,SAAS,qBAAqB;AAAA,EAC5B;AAAA,EACA;AAAA,EACA;AACF,GAA2B;AACzB,UAAQ,MAAM,MAAM;AAAA,IAClB,KAAK;AACH,aAAO,gBAAAA,OAAA,cAAC,4BAAkB,GAAG,MAAM,YAAY,YAAY,QAAQ;AAAA,IACrE,KAAK;AACH,aAAO,gBAAAA,OAAA,cAAC,2BAAiB,GAAG,MAAM,YAAY,YAAY,OAAO;AAAA,IACnE,KAAK;AACH,aAAO,gBAAAA,OAAA,cAAC,4BAAkB,GAAG,MAAM,YAAY,YAAY,QAAQ;AAAA,IACrE;AACE,UAAIA,OAAM,eAAe,SAAS,GAAG;AACnC,eAAOA,OAAM,aAAa,SAAS;AAAA,MACrC;AAEA,UAAI,OAAO,cAAc,YAAY;AACnC,eAAO,UAAU;AAAA,MACnB;AAEA,aAAO;AAAA,EACX;AACF;AAEA,IAAO,+BAAQ;;;AJ1Bf,SAAS,wBAAwB;AAAA,EAC/B;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AACF,GAAiC;AAC/B,QAAM,EAAE,WAAW,QAAQ,IAAI;AAC/B,QAAM,sBAAsBC,OAAM,eAAe,QAAQ;AACzD,QAAM,qBAAqB,OAAO,aAAa;AAE/C,MAAI,qBAAqB;AACvB,WAAOA,OAAM,aAAa,UAAU;AAAA,MAClC;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,IACF,CAAC;AAAA,EACH;AAEA,MAAI,oBAAoB;AACtB,WAAO,SAAS;AAAA,MACd;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,IACF,CAAC;AAAA,EACH;AAEA,MAAI,WAAW;AACb,WAAO;AAAA,EACT;AAEA,MAAI,CAAC,YAAY,CAAC,WAAW,MAAM;AACjC,WAAO,gBAAAA,OAAA,cAAC,gCAAqB,MAAY,WAAsB;AAAA,EACjE;AAEA,MAAIA,OAAM,eAAe,SAAS,GAAG;AACnC,WAAOA,OAAM,aAAa,SAAS;AAAA,EACrC;AAEA,MAAI,OAAO,cAAc,YAAY;AACnC,WAAO,UAAU;AAAA,EACnB;AAEA,SAAO;AACT;AAEA,IAAO,mCAAQ;;;AK5Df,SAAS,eAAe,iBAAiB,wBAAwB;AACjE,SAAS,YAAY,aAAAC,YAAW,gBAAgB;AAMhD,SAAS,oBACP,cACA,QACA,QAC0B;AAC1B,QAAM,CAAC,aAAa,cAAc,IAAI,SAAiB,SAAS;AAChE,QAAM,CAAC,QAAQ,SAAS,IAAI,SAA4B,IAAI;AAC5D,QAAM,CAAC,cAAc,eAAe,IAAI,SAAuB,IAAI;AACnE,QAAM,eAAe,WAAW,qBAAqB;AACrD,QAAM,aAAa,iBAAiB,EAAE,GAAG,cAAc,GAAG,aAAa,CAAC;AACxE,QAAM,aAAa,gBAAgB,YAAY,QAAQ,MAAM;AAC7D,QAAM,SAAS,YAAY;AACzB,mBAAe,SAAS;AAExB,QAAI;AACF,cAAQ,IAAI,4BAA4B,eAAe,aAAa,UAAU;AAC9E,YAAM,WAAW,MAAM,cAAc,YAAY,WAAW,aAAa;AACzE,cAAQ,IAAI,8BAA8B,QAAQ;AAElD,UAAI,oBAAoB,OAAO;AAC7B,uBAAe,OAAO;AACtB,wBAAgB,QAAQ;AAAA,MAC1B,OAAO;AACL,kBAAU,QAAQ;AAAA,MACpB;AACA,qBAAe,UAAU;AAAA,IAC3B,SAAS,OAAO;AACd,qBAAe,OAAO;AACtB,qBAAe,UAAU;AACzB,sBAAgB,KAAc;AAAA,IAChC;AAAA,EACF;AACA,QAAM,YAAY;AAAA,IAChB,WAAW,gBAAgB;AAAA,IAC3B,WAAW,gBAAgB;AAAA,IAC3B,YAAY,gBAAgB;AAAA,IAC5B,SAAS,gBAAgB;AAAA,EAC3B;AAEA,EAAAC,WAAU,MAAM;AACd,WAAO;AAAA,EACT,GAAG,CAAC,CAAC;AAEL,SAAO,CAAC,QAAQ,cAAc,SAAS;AACzC;AAEA,IAAO,8BAAQ;;;AP5Cf,SAAS,iBAAiB;AAAA,EACxB;AAAA,EACA;AAAA,EACA;AAAA,EACA,YAAY,MAAM;AAAA,EAClB,GAAG;AACL,GAA0B;AACxB,QAAM,CAAC,UAAU,OAAO,SAAS,IAAI;AAAA,IACnC;AAAA,IACA;AAAA,IACA;AAAA,EACF;AACA,QAAM,gBAAgB,QAAQ,OAAO,UAAU,SAAS,CAAC;AACzD,QAAM,gBAAgB,eAAe,kBAAkB,CAAC;AACxD,QAAM,aAAa,eAAe;AAElC,MAAI,cAAc,YAAY,QAAQ;AACpC,WAAO,WAAW,IAAI,CAAC,EAAE,SAAS,GAAG,KAAK,MAAM;AAC9C,aACE,gBAAAC,OAAA,cAAC,8BAAmB,KAAK,KAAK,IAAK,GAAG,WACpC,gBAAAA,OAAA;AAAA,QAAC;AAAA;AAAA,UACC,OAAO;AAAA,UACP;AAAA,UACA;AAAA,UACA;AAAA;AAAA,QAEC;AAAA,MACH,CACF;AAAA,IAEJ,CAAC;AAAA,EACH;AAEA,SACE,gBAAAA,OAAA,cAAC,8BAAoB,GAAG,iBACtB,gBAAAA,OAAA;AAAA,IAAC;AAAA;AAAA,MACC,OAAO;AAAA,MACP;AAAA,MACA;AAAA;AAAA,IAEC;AAAA,EACH,CACF;AAEJ;AAEA,IAAO,4BAAQ;","names":["React","React","React","React","React","getAssetByName","getPrepareURL","getSrcSetCSSThumbs","React","React","React","useEffect","useEffect","React"]}
1
+ {"version":3,"sources":["../src/AdViewUnit/AdViewProvider.tsx","../src/AdViewUnit/AdViewUnit.client.tsx","../src/AdViewUnit/AdViewUnitTemplate.tsx","../src/AdViewUnit/AdViewUnitTracking.tsx","../src/AdViewUnit/useAdViewController.ts","../src/AdViewUnit/AdViewUnitBannerTemplate.tsx","../src/AdViewUnit/AdViewUnitDefaultTemplate.tsx","../src/AdViewUnit/AdViewUnitNativeTemplate.tsx","../src/AdViewUnit/AdViewUnitProxyTemplate.tsx"],"sourcesContent":["'use client';\n\nimport React, { createContext } from 'react';\nimport { type AdViewConfig } from '../types';\n\ntype AdViewProviderContextProps = AdViewConfig;\n\nexport const AdViewProviderContext = createContext<AdViewProviderContextProps>(\n {} as AdViewProviderContextProps,\n);\n\ntype AdViewProviderProps = {\n children: React.ReactNode;\n} & AdViewProviderContextProps;\n\nconst AdViewProvider = ({ children, ...props }: AdViewProviderProps) => {\n return (\n <AdViewProviderContext.Provider value={props}>\n {children}\n </AdViewProviderContext.Provider>\n );\n};\n\nexport default AdViewProvider;\n","'use client';\n\nimport React from 'react';\nimport { AdViewUnitClientChildren, AdViewUnitPropsBase } from '../types';\nimport { renderAnyTemplates } from './AdViewUnitTemplate';\nimport AdViewUnitTracking from './AdViewUnitTracking';\nimport useAdViewController from './useAdViewController';\n\nexport type AdViewUnitClientProps = AdViewUnitPropsBase & {\n children?: AdViewUnitClientChildren;\n};\n\n// AdViewUnitClient is a client-side component that fetches ad data and renders it\n// using the provided children function. It handles loading, error states, and\n// tracks ad interactions.\n//\n// Example usage:\n// <AdView.Unit unitId=\"my-unit\" format=\"banner\" srcURL=\"https://api.example.com/ads/{<id>}\">\n// {({ data, state, error }) => (\n// <div>\n// {state.isLoading && <span>Loading...</span>}\n// {error && <span>Error: {error.message}</span>}\n// {data && <img src={data.imageUrl} alt={data.title} />\n// </div>\n// )}\n// </AdView.Unit>\n//\n// Note: This component is designed to be used in a client-side environment where\n// ad data can be fetched dynamically. It is not suitable for server-side rendering.\n// It uses the AdViewUnitTracking component to handle ad tracking and interactions.\nfunction AdViewUnitClient({\n unitId,\n format,\n children,\n ...config\n}: AdViewUnitClientProps) {\n const [response, error, loadState] = useAdViewController(\n config,\n unitId,\n format,\n );\n const responseGroup = error ? null : response?.groups?.[0];\n const customTracker = responseGroup?.custom_tracker ?? {};\n const groupItems = responseGroup?.items;\n\n if (groupItems && groupItems?.length > 0) {\n return groupItems.map(({ tracker, ...data }) => {\n return (\n <AdViewUnitTracking key={data.id} {...tracker}>\n {renderAnyTemplates(children, {data, type: data.type || 'default', error, state: loadState})}\n </AdViewUnitTracking>\n );\n });\n }\n\n return (\n <AdViewUnitTracking {...customTracker}>\n {renderAnyTemplates(children, {data: null, type: 'default', error, state: loadState})}\n </AdViewUnitTracking>\n );\n}\n\nexport default AdViewUnitClient;\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","'use client';\n\nimport { AdViewData } from '@adview/core/typings';\nimport { adViewFetcher, getAdRequestUrl, getResolveConfig } from '@adview/core/utils';\nimport { useContext, useEffect, useState } from 'react';\nimport { AdLoadState, AdViewConfig } from '../types';\nimport { AdViewProviderContext } from './AdViewProvider';\n\ntype UseAdViewControllerProps = [AdViewData | null, Error | null, AdLoadState];\n\nfunction useAdViewController(\n adUnitConfig: AdViewConfig,\n unitId: string,\n format?: string | string[],\n): UseAdViewControllerProps {\n const [adLoadState, setAdLoadState] = useState<string>('initial');\n const [adData, setAdData] = useState<AdViewData | null>(null);\n const [errorMessage, setErrorMessage] = useState<Error | null>(null);\n const globalConfig = useContext(AdViewProviderContext);\n const baseConfig = getResolveConfig({ ...adUnitConfig, ...globalConfig });\n const requestUrl = getAdRequestUrl(baseConfig, unitId,\n typeof format === 'string' ? format : format?.join(',') || '');\n\n const loadAd = async () => {\n setAdLoadState('loading');\n\n try {\n console.log('Requesting ad data from:', adViewFetcher, 'with URL:', requestUrl);\n const response = await adViewFetcher(requestUrl, baseConfig.defaultAdData);\n console.log('AdViewController response:', response);\n\n if (response instanceof Error) {\n setAdLoadState('error');\n setErrorMessage(response);\n } else {\n setAdData(response);\n }\n setAdLoadState('complete');\n } catch (error) {\n setAdLoadState('error');\n setAdLoadState('complete');\n setErrorMessage(error as Error);\n }\n };\n\n const loadState = {\n isInitial: adLoadState === 'initial',\n isLoading: adLoadState === 'loading',\n isComplete: adLoadState === 'complete',\n isError: adLoadState === 'error',\n };\n\n useEffect(() => {loadAd()}, []);\n\n return [adData, errorMessage, loadState];\n}\n\nexport default useAdViewController;\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","useEffect","useEffect","React","React","React","getAssetByName","getPrepareURL","getSrcSetCSSThumbs","React","React"]}