@newskit-render/standalone-components 1.10.3 → 1.11.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +145 -1
- package/dist/cjs/article-recommendations/components/ArticleRecommendationsProvider.d.ts +4 -0
- package/dist/cjs/article-recommendations/components/ArticleRecommendationsProvider.js +66 -0
- package/dist/cjs/article-recommendations/components/ArticleRecommendationsProvider.js.map +1 -0
- package/dist/cjs/article-recommendations/components/RecommendedArticleList.d.ts +5 -0
- package/dist/cjs/article-recommendations/components/RecommendedArticleList.js +43 -0
- package/dist/cjs/article-recommendations/components/RecommendedArticleList.js.map +1 -0
- package/dist/cjs/article-recommendations/components/index.d.ts +3 -1
- package/dist/cjs/article-recommendations/components/index.js +5 -1
- package/dist/cjs/article-recommendations/components/index.js.map +1 -1
- package/dist/cjs/article-recommendations/context/index.d.ts +3 -0
- package/dist/cjs/article-recommendations/context/index.js +9 -0
- package/dist/cjs/article-recommendations/context/index.js.map +1 -0
- package/dist/cjs/article-recommendations/index.d.ts +1 -0
- package/dist/cjs/article-recommendations/index.js +1 -0
- package/dist/cjs/article-recommendations/index.js.map +1 -1
- package/dist/cjs/article-recommendations/provider/recommendationsProvider.d.ts +3 -1
- package/dist/cjs/article-recommendations/provider/recommendationsProvider.js +20 -3
- package/dist/cjs/article-recommendations/provider/recommendationsProvider.js.map +1 -1
- package/dist/cjs/article-recommendations/types/index.d.ts +37 -0
- package/dist/cjs/article-recommendations/types/index.js +5 -0
- package/dist/cjs/article-recommendations/types/index.js.map +1 -1
- package/dist/esm/article-recommendations/components/ArticleRecommendationsProvider.d.ts +4 -0
- package/dist/esm/article-recommendations/components/ArticleRecommendationsProvider.js +61 -0
- package/dist/esm/article-recommendations/components/ArticleRecommendationsProvider.js.map +1 -0
- package/dist/esm/article-recommendations/components/RecommendedArticleList.d.ts +5 -0
- package/dist/esm/article-recommendations/components/RecommendedArticleList.js +15 -0
- package/dist/esm/article-recommendations/components/RecommendedArticleList.js.map +1 -0
- package/dist/esm/article-recommendations/components/index.d.ts +3 -1
- package/dist/esm/article-recommendations/components/index.js +3 -1
- package/dist/esm/article-recommendations/components/index.js.map +1 -1
- package/dist/esm/article-recommendations/context/index.d.ts +3 -0
- package/dist/esm/article-recommendations/context/index.js +3 -0
- package/dist/esm/article-recommendations/context/index.js.map +1 -0
- package/dist/esm/article-recommendations/index.d.ts +1 -0
- package/dist/esm/article-recommendations/index.js +1 -0
- package/dist/esm/article-recommendations/index.js.map +1 -1
- package/dist/esm/article-recommendations/provider/recommendationsProvider.d.ts +3 -1
- package/dist/esm/article-recommendations/provider/recommendationsProvider.js +19 -3
- package/dist/esm/article-recommendations/provider/recommendationsProvider.js.map +1 -1
- package/dist/esm/article-recommendations/types/index.d.ts +37 -0
- package/dist/esm/article-recommendations/types/index.js +4 -1
- package/dist/esm/article-recommendations/types/index.js.map +1 -1
- package/package.json +2 -2
package/README.md
CHANGED
|
@@ -157,7 +157,151 @@ const ArticleList: React.FC<{
|
|
|
157
157
|
)
|
|
158
158
|
```
|
|
159
159
|
|
|
160
|
-
## 3.
|
|
160
|
+
## 3. Article Recommendations Provider
|
|
161
|
+
|
|
162
|
+
The purpose of this component is to hold the dpaTemplates in the context, fetch the recommended articles and map them to the appropriate templates.
|
|
163
|
+
|
|
164
|
+
The component takes the following props.
|
|
165
|
+
|
|
166
|
+
```typescript
|
|
167
|
+
export type ArticleRecommendationsProviderProps = {
|
|
168
|
+
articleId?: string
|
|
169
|
+
context?: ArticleRecommendationsProviderBaseContextType
|
|
170
|
+
children: ReactNode
|
|
171
|
+
config: Config
|
|
172
|
+
}
|
|
173
|
+
```
|
|
174
|
+
|
|
175
|
+
`articleId` is required to get the recommended articles for the given article
|
|
176
|
+
|
|
177
|
+
`config` is required to access NewsKit API to be able to fetch the recommended articles
|
|
178
|
+
|
|
179
|
+
```typescript
|
|
180
|
+
export type Config = {
|
|
181
|
+
newskitApiEnvUrl: string
|
|
182
|
+
newskitApiXApiKey: string
|
|
183
|
+
}
|
|
184
|
+
```
|
|
185
|
+
|
|
186
|
+
The `context` holds the `dpaTemplates`. The default context can be overridden or extended.
|
|
187
|
+
|
|
188
|
+
```typescript
|
|
189
|
+
const defaultContext: ArticleRecommendationsProviderContextType = {
|
|
190
|
+
dpaTemplates: [
|
|
191
|
+
{
|
|
192
|
+
templateId: 'list-1',
|
|
193
|
+
columnCount: '1',
|
|
194
|
+
size: 'small',
|
|
195
|
+
recommendedArticles: { totalArticlesCount: 4 },
|
|
196
|
+
adlibraryMPU: { totalArticlesCount: 0 },
|
|
197
|
+
},
|
|
198
|
+
{
|
|
199
|
+
templateId: 'list-2',
|
|
200
|
+
columnCount: { xs: '1', sm: '2', lg: '4' },
|
|
201
|
+
size: 'large',
|
|
202
|
+
recommendedArticles: { totalArticlesCount: 8 },
|
|
203
|
+
adlibraryMPU: { totalArticlesCount: 0 },
|
|
204
|
+
},
|
|
205
|
+
],
|
|
206
|
+
}
|
|
207
|
+
```
|
|
208
|
+
|
|
209
|
+
Template props:
|
|
210
|
+
|
|
211
|
+
`templateId` template identifier used to uniquely identify the template
|
|
212
|
+
|
|
213
|
+
`columnCount` together with the `totalArticlesCount` will determine the layout. Example: `list-1` will result in a 1x4 article grid, while `list-2` will result in a 4x2 grid on a large screen.
|
|
214
|
+
|
|
215
|
+
`size` the size of the articles
|
|
216
|
+
|
|
217
|
+
`recommendedArticles` and `adlibraryMPU` are the types of articles. These can be extended as well. Note the data fetching currently is done only for `recommendedArticles`
|
|
218
|
+
|
|
219
|
+
### Usage
|
|
220
|
+
|
|
221
|
+
```typescript
|
|
222
|
+
const Article: React.FC<ArticleSlug> = ({
|
|
223
|
+
universalArticle,
|
|
224
|
+
articleURL,
|
|
225
|
+
twitterUsername,
|
|
226
|
+
siteHost,
|
|
227
|
+
gscId,
|
|
228
|
+
user,
|
|
229
|
+
articleId,
|
|
230
|
+
config,
|
|
231
|
+
}) => (
|
|
232
|
+
<ArticleRecommendationsProvider articleId={articleId} config={config}>
|
|
233
|
+
<Highlights>
|
|
234
|
+
</ArticleRecommendationsProvider>
|
|
235
|
+
)
|
|
236
|
+
|
|
237
|
+
export async function getServerSideProps(context) {
|
|
238
|
+
return {
|
|
239
|
+
props: {
|
|
240
|
+
config: {
|
|
241
|
+
newskitApiEnvUrl,
|
|
242
|
+
newskitApiXApiKey,
|
|
243
|
+
},
|
|
244
|
+
articleId,
|
|
245
|
+
},
|
|
246
|
+
}
|
|
247
|
+
}
|
|
248
|
+
```
|
|
249
|
+
|
|
250
|
+
The `ArticleRecommendationsProvider` will fetch the recommended articles. Once the fetch is complete it will slice and map the articles to the dpaTemplates.
|
|
251
|
+
|
|
252
|
+
Example: The default context after the mapping will look like below
|
|
253
|
+
|
|
254
|
+
```typescript
|
|
255
|
+
const defaultContext: ArticleRecommendationsProviderContextType = {
|
|
256
|
+
dpaTemplates: [
|
|
257
|
+
{
|
|
258
|
+
templateId: 'list-1',
|
|
259
|
+
columnCount: '1',
|
|
260
|
+
size: 'small',
|
|
261
|
+
recommendedArticles: [{ article }, ...], // 4 articles
|
|
262
|
+
adlibraryMPU: [],
|
|
263
|
+
},
|
|
264
|
+
{
|
|
265
|
+
templateId: 'list-2',
|
|
266
|
+
columnCount: { xs: '1', sm: '2', lg: '4' },
|
|
267
|
+
size: 'large',
|
|
268
|
+
recommendedArticles: [{ article }, ...], //8 articles
|
|
269
|
+
adlibraryMPU: [],
|
|
270
|
+
},
|
|
271
|
+
],
|
|
272
|
+
}
|
|
273
|
+
```
|
|
274
|
+
|
|
275
|
+
The `ArticleList` component based on the `templateId` will get the correct article data from the context and it will use the `ArticleGrid` component to render the layout.
|
|
276
|
+
|
|
277
|
+
```typescript
|
|
278
|
+
const ArticleList: React.FC<{ templateId: string }> = ({ templateId }) => {
|
|
279
|
+
const context = useContext(
|
|
280
|
+
ArticleRecommendationsProviderContext
|
|
281
|
+
) as ArticleRecommendationsProviderContextTypeWithArticles
|
|
282
|
+
|
|
283
|
+
const dpaTemplate = context.dpaTemplates.find(
|
|
284
|
+
(dpaTemplate) => dpaTemplate.templateId === templateId
|
|
285
|
+
)
|
|
286
|
+
|
|
287
|
+
if (!dpaTemplate) {
|
|
288
|
+
return null
|
|
289
|
+
}
|
|
290
|
+
|
|
291
|
+
const { recommendedArticles, columnCount, size } = dpaTemplate
|
|
292
|
+
return (
|
|
293
|
+
<AricleGrid
|
|
294
|
+
articles={recommendedArticles}
|
|
295
|
+
columnCount={columnCount}
|
|
296
|
+
size={size}
|
|
297
|
+
/>
|
|
298
|
+
)
|
|
299
|
+
}
|
|
300
|
+
|
|
301
|
+
const Highlights: React.FC = () => <ArticleList templateId="list-1" />
|
|
302
|
+
```
|
|
303
|
+
|
|
304
|
+
## 4. Help-hub:
|
|
161
305
|
|
|
162
306
|
Help-Hub is a section of a website on which your customers can search for a specific problem and find some help to resolve it. It consists of three parts:
|
|
163
307
|
|
|
@@ -0,0 +1,66 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __assign = (this && this.__assign) || function () {
|
|
3
|
+
__assign = Object.assign || function(t) {
|
|
4
|
+
for (var s, i = 1, n = arguments.length; i < n; i++) {
|
|
5
|
+
s = arguments[i];
|
|
6
|
+
for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))
|
|
7
|
+
t[p] = s[p];
|
|
8
|
+
}
|
|
9
|
+
return t;
|
|
10
|
+
};
|
|
11
|
+
return __assign.apply(this, arguments);
|
|
12
|
+
};
|
|
13
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
14
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
15
|
+
};
|
|
16
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
17
|
+
var react_1 = __importDefault(require("react"));
|
|
18
|
+
var lodash_merge_1 = __importDefault(require("lodash.merge"));
|
|
19
|
+
var context_1 = require("../context");
|
|
20
|
+
var swr_1 = __importDefault(require("swr"));
|
|
21
|
+
var provider_1 = require("../provider");
|
|
22
|
+
var defaultContext = {
|
|
23
|
+
dpaTemplates: [
|
|
24
|
+
{
|
|
25
|
+
templateId: 'list-1',
|
|
26
|
+
columnCount: '1',
|
|
27
|
+
size: 'small',
|
|
28
|
+
recommendedArticles: { totalArticlesCount: 4 },
|
|
29
|
+
adlibraryMPU: { totalArticlesCount: 0 },
|
|
30
|
+
},
|
|
31
|
+
{
|
|
32
|
+
templateId: 'list-2',
|
|
33
|
+
columnCount: { xs: '1', sm: '2', lg: '4' },
|
|
34
|
+
size: 'large',
|
|
35
|
+
recommendedArticles: { totalArticlesCount: 8 },
|
|
36
|
+
adlibraryMPU: { totalArticlesCount: 0 },
|
|
37
|
+
},
|
|
38
|
+
],
|
|
39
|
+
};
|
|
40
|
+
var mapDpaTemplates = function (articles, dpaTemplates) {
|
|
41
|
+
var articleTypeNames = Object.keys(dpaTemplates[0]).slice(3);
|
|
42
|
+
return articleTypeNames.reduce(function (acc, articleTypeName) {
|
|
43
|
+
var startCount = 0;
|
|
44
|
+
var dpaTemplatesWithArticles = acc.map(function (dpaTemplate) {
|
|
45
|
+
var _a;
|
|
46
|
+
var totalArticlesCount = dpaTemplate[articleTypeName].totalArticlesCount;
|
|
47
|
+
var slicedArticles = articles[articleTypeName].slice(startCount, startCount + totalArticlesCount);
|
|
48
|
+
startCount += totalArticlesCount;
|
|
49
|
+
return __assign(__assign({}, dpaTemplate), (_a = {}, _a[articleTypeName] = slicedArticles, _a));
|
|
50
|
+
});
|
|
51
|
+
startCount = 0;
|
|
52
|
+
return dpaTemplatesWithArticles;
|
|
53
|
+
}, dpaTemplates);
|
|
54
|
+
};
|
|
55
|
+
var ArticleRecommendationsProvider = function (_a) {
|
|
56
|
+
var articleId = _a.articleId, context = _a.context, config = _a.config, children = _a.children;
|
|
57
|
+
var enhancedContext = (0, lodash_merge_1.default)({}, defaultContext, context);
|
|
58
|
+
var articles = (0, swr_1.default)([articleId, config], provider_1.fetcher).data;
|
|
59
|
+
var mapedDpaTemplates = articles
|
|
60
|
+
? mapDpaTemplates({ recommendedArticles: articles, adlibraryMPU: [] }, enhancedContext.dpaTemplates)
|
|
61
|
+
: [];
|
|
62
|
+
var contextWithArticles = __assign(__assign({}, enhancedContext), { dpaTemplates: mapedDpaTemplates, articleId: articleId });
|
|
63
|
+
return (react_1.default.createElement(context_1.ArticleRecommendationsProviderContext.Provider, { value: contextWithArticles }, children));
|
|
64
|
+
};
|
|
65
|
+
exports.default = ArticleRecommendationsProvider;
|
|
66
|
+
//# sourceMappingURL=ArticleRecommendationsProvider.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ArticleRecommendationsProvider.js","sourceRoot":"","sources":["../../../../src/article-recommendations/components/ArticleRecommendationsProvider.tsx"],"names":[],"mappings":";;;;;;;;;;;;;;;;AAAA,gDAAyB;AACzB,8DAAgC;AAChC,sCAAkE;AASlE,4CAAwB;AACxB,wCAAqC;AAErC,IAAM,cAAc,GAA8C;IAChE,YAAY,EAAE;QACZ;YACE,UAAU,EAAE,QAAQ;YACpB,WAAW,EAAE,GAAG;YAChB,IAAI,EAAE,OAAO;YACb,mBAAmB,EAAE,EAAE,kBAAkB,EAAE,CAAC,EAAE;YAC9C,YAAY,EAAE,EAAE,kBAAkB,EAAE,CAAC,EAAE;SACxC;QACD;YACE,UAAU,EAAE,QAAQ;YACpB,WAAW,EAAE,EAAE,EAAE,EAAE,GAAG,EAAE,EAAE,EAAE,GAAG,EAAE,EAAE,EAAE,GAAG,EAAE;YAC1C,IAAI,EAAE,OAAO;YACb,mBAAmB,EAAE,EAAE,kBAAkB,EAAE,CAAC,EAAE;YAC9C,YAAY,EAAE,EAAE,kBAAkB,EAAE,CAAC,EAAE;SACxC;KACF;CACF,CAAA;AAED,IAAM,eAAe,GAAG,UACtB,QAAyB,EACzB,YAA2B;IAE3B,IAAM,gBAAgB,GAAG,MAAM,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAA;IAC9D,OAAO,gBAAgB,CAAC,MAAM,CAAC,UAAC,GAAG,EAAE,eAAe;QAClD,IAAI,UAAU,GAAG,CAAC,CAAA;QAClB,IAAM,wBAAwB,GAA8B,GAAG,CAAC,GAAG,CACjE,UAAC,WAAW;;YACF,IAAA,kBAAkB,GAAK,WAAW,CAAC,eAAe,CAAC,mBAAjC,CAAiC;YAC3D,IAAM,cAAc,GAAG,QAAQ,CAAC,eAAe,CAAC,CAAC,KAAK,CACpD,UAAU,EACV,UAAU,GAAI,kBAA6B,CAC5C,CAAA;YAED,UAAU,IAAI,kBAA4B,CAAA;YAC1C,6BACK,WAAW,gBACb,eAAe,IAAG,cAAc,OAClC;QACH,CAAC,CACF,CAAA;QACD,UAAU,GAAG,CAAC,CAAA;QACd,OAAO,wBAAwB,CAAA;IACjC,CAAC,EAAE,YAAmB,CAAC,CAAA;AACzB,CAAC,CAAA;AAED,IAAM,8BAA8B,GAAkD,UAAC,EAKtF;QAJC,SAAS,eAAA,EACT,OAAO,aAAA,EACP,MAAM,YAAA,EACN,QAAQ,cAAA;IAER,IAAM,eAAe,GAAG,IAAA,sBAAK,EAAC,EAAE,EAAE,cAAc,EAAE,OAAO,CAAC,CAAA;IAClD,IAAM,QAAQ,GAAK,IAAA,aAAM,EAAY,CAAC,SAAS,EAAE,MAAM,CAAC,EAAE,kBAAO,CAAC,KAApD,CAAoD;IAE1E,IAAM,iBAAiB,GAAG,QAAQ;QAChC,CAAC,CAAC,eAAe,CACb,EAAE,mBAAmB,EAAE,QAAQ,EAAE,YAAY,EAAE,EAAE,EAAE,EACnD,eAAe,CAAC,YAAY,CAC7B;QACH,CAAC,CAAC,EAAE,CAAA;IAEN,IAAM,mBAAmB,yBACpB,eAAe,KAClB,YAAY,EAAE,iBAAiB,EAC/B,SAAS,WAAA,GACV,CAAA;IAED,OAAO,CACL,8BAAC,+CAAqC,CAAC,QAAQ,IAAC,KAAK,EAAE,mBAAmB,IACvE,QAAQ,CACsC,CAClD,CAAA;AACH,CAAC,CAAA;AAED,kBAAe,8BAA8B,CAAA"}
|
|
@@ -0,0 +1,43 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
3
|
+
if (k2 === undefined) k2 = k;
|
|
4
|
+
var desc = Object.getOwnPropertyDescriptor(m, k);
|
|
5
|
+
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
|
6
|
+
desc = { enumerable: true, get: function() { return m[k]; } };
|
|
7
|
+
}
|
|
8
|
+
Object.defineProperty(o, k2, desc);
|
|
9
|
+
}) : (function(o, m, k, k2) {
|
|
10
|
+
if (k2 === undefined) k2 = k;
|
|
11
|
+
o[k2] = m[k];
|
|
12
|
+
}));
|
|
13
|
+
var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
|
|
14
|
+
Object.defineProperty(o, "default", { enumerable: true, value: v });
|
|
15
|
+
}) : function(o, v) {
|
|
16
|
+
o["default"] = v;
|
|
17
|
+
});
|
|
18
|
+
var __importStar = (this && this.__importStar) || function (mod) {
|
|
19
|
+
if (mod && mod.__esModule) return mod;
|
|
20
|
+
var result = {};
|
|
21
|
+
if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
|
|
22
|
+
__setModuleDefault(result, mod);
|
|
23
|
+
return result;
|
|
24
|
+
};
|
|
25
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
26
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
27
|
+
};
|
|
28
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
29
|
+
var react_1 = __importStar(require("react"));
|
|
30
|
+
var ArticleGrid_1 = __importDefault(require("./ArticleGrid"));
|
|
31
|
+
var context_1 = require("../context");
|
|
32
|
+
var RecommendedArticleList = function (_a) {
|
|
33
|
+
var templateId = _a.templateId;
|
|
34
|
+
var context = (0, react_1.useContext)(context_1.ArticleRecommendationsProviderContext);
|
|
35
|
+
var dpaTemplate = context.dpaTemplates.find(function (dpaTemplate) { return dpaTemplate.templateId === templateId; });
|
|
36
|
+
if (!dpaTemplate) {
|
|
37
|
+
return null;
|
|
38
|
+
}
|
|
39
|
+
var recommendedArticles = dpaTemplate.recommendedArticles, columnCount = dpaTemplate.columnCount, size = dpaTemplate.size;
|
|
40
|
+
return (react_1.default.createElement(ArticleGrid_1.default, { articles: recommendedArticles, columnCount: columnCount, size: size }));
|
|
41
|
+
};
|
|
42
|
+
exports.default = RecommendedArticleList;
|
|
43
|
+
//# sourceMappingURL=RecommendedArticleList.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"RecommendedArticleList.js","sourceRoot":"","sources":["../../../../src/article-recommendations/components/RecommendedArticleList.tsx"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA,6CAAyC;AACzC,8DAAsC;AACtC,sCAAkE;AAGlE,IAAM,sBAAsB,GAAqC,UAAC,EAEjE;QADC,UAAU,gBAAA;IAEV,IAAM,OAAO,GAAG,IAAA,kBAAU,EACxB,+CAAqC,CACmB,CAAA;IAE1D,IAAM,WAAW,GAAG,OAAO,CAAC,YAAY,CAAC,IAAI,CAC3C,UAAC,WAAW,IAAK,OAAA,WAAW,CAAC,UAAU,KAAK,UAAU,EAArC,CAAqC,CACvD,CAAA;IAED,IAAI,CAAC,WAAW,EAAE;QAChB,OAAO,IAAI,CAAA;KACZ;IAEO,IAAA,mBAAmB,GAAwB,WAAW,oBAAnC,EAAE,WAAW,GAAW,WAAW,YAAtB,EAAE,IAAI,GAAK,WAAW,KAAhB,CAAgB;IAC9D,OAAO,CACL,8BAAC,qBAAU,IACT,QAAQ,EAAE,mBAAmB,EAC7B,WAAW,EAAE,WAAW,EACxB,IAAI,EAAE,IAAI,GACV,CACH,CAAA;AACH,CAAC,CAAA;AAED,kBAAe,sBAAsB,CAAA"}
|
|
@@ -1,4 +1,6 @@
|
|
|
1
1
|
import AricleGrid from './ArticleGrid';
|
|
2
2
|
import ArticleRecommendation from './ArticleRecommendation';
|
|
3
|
+
import ArticleRecommendationsProvider from './ArticleRecommendationsProvider';
|
|
4
|
+
import RecommendedArticleList from './RecommendedArticleList';
|
|
3
5
|
export * from './baseProps';
|
|
4
|
-
export { ArticleRecommendation, AricleGrid };
|
|
6
|
+
export { ArticleRecommendation, AricleGrid, ArticleRecommendationsProvider, RecommendedArticleList, };
|
|
@@ -17,10 +17,14 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
|
17
17
|
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
18
18
|
};
|
|
19
19
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
20
|
-
exports.AricleGrid = exports.ArticleRecommendation = void 0;
|
|
20
|
+
exports.RecommendedArticleList = exports.ArticleRecommendationsProvider = exports.AricleGrid = exports.ArticleRecommendation = void 0;
|
|
21
21
|
var ArticleGrid_1 = __importDefault(require("./ArticleGrid"));
|
|
22
22
|
exports.AricleGrid = ArticleGrid_1.default;
|
|
23
23
|
var ArticleRecommendation_1 = __importDefault(require("./ArticleRecommendation"));
|
|
24
24
|
exports.ArticleRecommendation = ArticleRecommendation_1.default;
|
|
25
|
+
var ArticleRecommendationsProvider_1 = __importDefault(require("./ArticleRecommendationsProvider"));
|
|
26
|
+
exports.ArticleRecommendationsProvider = ArticleRecommendationsProvider_1.default;
|
|
27
|
+
var RecommendedArticleList_1 = __importDefault(require("./RecommendedArticleList"));
|
|
28
|
+
exports.RecommendedArticleList = RecommendedArticleList_1.default;
|
|
25
29
|
__exportStar(require("./baseProps"), exports);
|
|
26
30
|
//# sourceMappingURL=index.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../src/article-recommendations/components/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;AAAA,8DAAsC;
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../src/article-recommendations/components/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;AAAA,8DAAsC;AAQpC,qBARK,qBAAU,CAQL;AAPZ,kFAA2D;AAMzD,gCANK,+BAAqB,CAML;AALvB,oGAA6E;AAO3E,yCAPK,wCAA8B,CAOL;AANhC,oFAA6D;AAO3D,iCAPK,gCAAsB,CAOL;AALxB,8CAA2B"}
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
3
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
4
|
+
};
|
|
5
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
|
+
exports.ArticleRecommendationsProviderContext = void 0;
|
|
7
|
+
var react_1 = __importDefault(require("react"));
|
|
8
|
+
exports.ArticleRecommendationsProviderContext = react_1.default.createContext(null);
|
|
9
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../src/article-recommendations/context/index.tsx"],"names":[],"mappings":";;;;;;AACA,gDAAyB;AAEZ,QAAA,qCAAqC,GAAG,eAAK,CAAC,aAAa,CACtE,IAAI,CACL,CAAA"}
|
|
@@ -17,4 +17,5 @@ Object.defineProperty(exports, "__esModule", { value: true });
|
|
|
17
17
|
__exportStar(require("./components"), exports);
|
|
18
18
|
__exportStar(require("./provider"), exports);
|
|
19
19
|
__exportStar(require("./types"), exports);
|
|
20
|
+
__exportStar(require("./context"), exports);
|
|
20
21
|
//# sourceMappingURL=index.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/article-recommendations/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;AAAA,+CAA4B;AAC5B,6CAA0B;AAC1B,0CAAuB"}
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/article-recommendations/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;AAAA,+CAA4B;AAC5B,6CAA0B;AAC1B,0CAAuB;AACvB,4CAAyB"}
|
|
@@ -1,2 +1,4 @@
|
|
|
1
1
|
import { ProviderArgs, Article } from '../index';
|
|
2
|
-
|
|
2
|
+
import { Fetcher } from 'swr';
|
|
3
|
+
export declare const fetcher: Fetcher<Article[]>;
|
|
4
|
+
export declare const recommendationsProvider: ({ articleId, publisher, userId, config, }: ProviderArgs) => Promise<Article[]>;
|
|
@@ -36,16 +36,33 @@ var __generator = (this && this.__generator) || function (thisArg, body) {
|
|
|
36
36
|
}
|
|
37
37
|
};
|
|
38
38
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
39
|
-
exports.recommendationsProvider = void 0;
|
|
39
|
+
exports.recommendationsProvider = exports.fetcher = void 0;
|
|
40
40
|
var api_1 = require("@newskit-render/api");
|
|
41
41
|
var queries_1 = require("./queries");
|
|
42
|
+
var fetcher = function (articleId, config) { return __awaiter(void 0, void 0, void 0, function () {
|
|
43
|
+
var userId;
|
|
44
|
+
var _a;
|
|
45
|
+
return __generator(this, function (_b) {
|
|
46
|
+
if (typeof window !== 'undefined') {
|
|
47
|
+
//@ts-ignore
|
|
48
|
+
userId = (_a = window.utag) === null || _a === void 0 ? void 0 : _a.data['cp.utag_main_v_id'];
|
|
49
|
+
}
|
|
50
|
+
return [2 /*return*/, (0, exports.recommendationsProvider)({
|
|
51
|
+
articleId: articleId,
|
|
52
|
+
config: config,
|
|
53
|
+
userId: userId,
|
|
54
|
+
publisher: api_1.Publisher.SUN_UK,
|
|
55
|
+
})];
|
|
56
|
+
});
|
|
57
|
+
}); };
|
|
58
|
+
exports.fetcher = fetcher;
|
|
42
59
|
var recommendationsProvider = function (_a) {
|
|
43
|
-
var articleId = _a.articleId, publisher = _a.publisher, userId = _a.userId;
|
|
60
|
+
var articleId = _a.articleId, publisher = _a.publisher, userId = _a.userId, config = _a.config;
|
|
44
61
|
return __awaiter(void 0, void 0, void 0, function () {
|
|
45
62
|
var apolloClient, response, recommendedArticles;
|
|
46
63
|
return __generator(this, function (_b) {
|
|
47
64
|
switch (_b.label) {
|
|
48
|
-
case 0: return [4 /*yield*/, (0, api_1.createApolloClient)(api_1.ClientTypes.nkapi)];
|
|
65
|
+
case 0: return [4 /*yield*/, (0, api_1.createApolloClient)(api_1.ClientTypes.nkapi, undefined, undefined, undefined, config)];
|
|
49
66
|
case 1:
|
|
50
67
|
apolloClient = _b.sent();
|
|
51
68
|
return [4 /*yield*/, apolloClient.query({
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"recommendationsProvider.js","sourceRoot":"","sources":["../../../../src/article-recommendations/provider/recommendationsProvider.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA,
|
|
1
|
+
{"version":3,"file":"recommendationsProvider.js","sourceRoot":"","sources":["../../../../src/article-recommendations/provider/recommendationsProvider.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA,2CAAgF;AAChF,qCAA+C;AAIxC,IAAM,OAAO,GAAuB,UACzC,SAAS,EACT,MAAM;;;;QAGN,IAAI,OAAO,MAAM,KAAK,WAAW,EAAE;YACjC,YAAY;YACZ,MAAM,GAAG,MAAA,MAAM,CAAC,IAAI,0CAAE,IAAI,CAAC,mBAAmB,CAAC,CAAA;SAChD;QAED,sBAAO,IAAA,+BAAuB,EAAC;gBAC7B,SAAS,WAAA;gBACT,MAAM,EAAE,MAAgB;gBACxB,MAAM,QAAA;gBACN,SAAS,EAAE,eAAS,CAAC,MAAM;aAC5B,CAAC,EAAA;;KACH,CAAA;AAhBY,QAAA,OAAO,WAgBnB;AAEM,IAAM,uBAAuB,GAAG,UAAO,EAK/B;QAJb,SAAS,eAAA,EACT,SAAS,eAAA,EACT,MAAM,YAAA,EACN,MAAM,YAAA;;;;;wBAEe,qBAAM,IAAA,wBAAkB,EAC3C,iBAAW,CAAC,KAAK,EACjB,SAAS,EACT,SAAS,EACT,SAAS,EACT,MAAM,CACP,EAAA;;oBANK,YAAY,GAAG,SAMpB;oBACgB,qBAAM,YAAY,CAAC,KAAK,CAAC;4BACxC,KAAK,EAAE,6BAAmB;4BAC1B,SAAS,EAAE,EAAE,SAAS,WAAA,EAAE,SAAS,EAAE,EAAE,SAAS,WAAA,EAAE,MAAM,QAAA,EAAE,EAAE;yBAC3D,CAAC,EAAA;;oBAHI,QAAQ,GAAG,SAGf;oBAEI,mBAAmB,GAAG,QAAQ,CAAC,IAAI,CAAC,eAAe,CAAC,QAAQ,CAAC,GAAG,CACpE,UAAC,OAAO;;wBAAK,OAAA,CAAC;4BACZ,KAAK,EAAE,OAAO,CAAC,MAAM;4BACrB,GAAG,EAAE,OAAO,CAAC,MAAM;4BACnB,IAAI,EAAE,OAAO,CAAC,QAAQ;4BACtB,IAAI,EACF,CAAA,MAAA,MAAA,MAAA,MAAA,OAAO,CAAC,KAAK,0CAAE,WAAW,0CAAE,KAAK,0CAAG,CAAC,CAAC,0CAAE,GAAG;iCAC3C,MAAA,MAAA,MAAA,OAAO,CAAC,KAAK,0CAAE,KAAK,0CAAG,CAAC,CAAC,0CAAE,GAAG,CAAA;gCAC9B,IAAI;yBACP,CAAC,CAAA;qBAAA,CACH,CAAA;oBAED,sBAAO,mBAAmB,EAAA;;;;CAC3B,CAAA;AA/BY,QAAA,uBAAuB,2BA+BnC"}
|
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
import { Publisher } from '@newskit-render/api';
|
|
2
2
|
import { MQ } from 'newskit';
|
|
3
|
+
import { ReactNode } from 'react';
|
|
3
4
|
export declare type Article = {
|
|
4
5
|
href: string;
|
|
5
6
|
title: string;
|
|
@@ -19,10 +20,15 @@ export declare type ArticleRecommendationProps = {
|
|
|
19
20
|
size: 'large' | 'small';
|
|
20
21
|
overrides?: ArticleRecommendationOverrides;
|
|
21
22
|
};
|
|
23
|
+
export declare type Config = {
|
|
24
|
+
newskitApiEnvUrl: string;
|
|
25
|
+
newskitApiXApiKey: string;
|
|
26
|
+
};
|
|
22
27
|
export declare type ProviderArgs = {
|
|
23
28
|
userId?: string;
|
|
24
29
|
publisher: Publisher;
|
|
25
30
|
articleId: string;
|
|
31
|
+
config?: Config;
|
|
26
32
|
};
|
|
27
33
|
export declare type ArticleRecommendationOverrides = {
|
|
28
34
|
spaceStack?: MQ<string>;
|
|
@@ -54,3 +60,34 @@ export declare type ArticleRecommendationOverrides = {
|
|
|
54
60
|
};
|
|
55
61
|
};
|
|
56
62
|
};
|
|
63
|
+
export declare type ArticleTemplate = Record<string, Article[]>;
|
|
64
|
+
export declare type ArticleTypeName = 'recommendedArticles' | 'adlibraryMPU';
|
|
65
|
+
export declare type ArticleTypes = Record<ArticleTypeName, {
|
|
66
|
+
totalArticlesCount: number;
|
|
67
|
+
}>;
|
|
68
|
+
export declare type DpaTemplate = ArticleTypes & {
|
|
69
|
+
templateId: string;
|
|
70
|
+
columnCount: MQ<string>;
|
|
71
|
+
size: 'small' | 'large';
|
|
72
|
+
};
|
|
73
|
+
export declare type DpaTemplateWithArticles = {
|
|
74
|
+
templateId: string;
|
|
75
|
+
columnCount: MQ<string>;
|
|
76
|
+
size: 'small' | 'large';
|
|
77
|
+
} & Record<string, Article[]>;
|
|
78
|
+
export declare type ArticleRecommendationsProviderBaseContextType = {
|
|
79
|
+
dpaTemplates: DpaTemplate[];
|
|
80
|
+
};
|
|
81
|
+
export declare type ArticleRecommendationsProviderContextTypeWithArticles = {
|
|
82
|
+
dpaTemplates: DpaTemplateWithArticles[];
|
|
83
|
+
};
|
|
84
|
+
export declare type ArticleRecommendationsProviderContextType = ArticleRecommendationsProviderBaseContextType | ArticleRecommendationsProviderContextTypeWithArticles;
|
|
85
|
+
export declare type ArticleRecommendationsProviderProps = {
|
|
86
|
+
articleId: string;
|
|
87
|
+
context?: ArticleRecommendationsProviderBaseContextType;
|
|
88
|
+
children: ReactNode;
|
|
89
|
+
config: Config;
|
|
90
|
+
};
|
|
91
|
+
export declare enum ContextNameMap {
|
|
92
|
+
'articleRecommendationProvider' = "articleRecommendationProvider"
|
|
93
|
+
}
|
|
@@ -1,3 +1,8 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.ContextNameMap = void 0;
|
|
4
|
+
var ContextNameMap;
|
|
5
|
+
(function (ContextNameMap) {
|
|
6
|
+
ContextNameMap["articleRecommendationProvider"] = "articleRecommendationProvider";
|
|
7
|
+
})(ContextNameMap = exports.ContextNameMap || (exports.ContextNameMap = {}));
|
|
3
8
|
//# sourceMappingURL=index.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../src/article-recommendations/types/index.ts"],"names":[],"mappings":""}
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../src/article-recommendations/types/index.ts"],"names":[],"mappings":";;;AA2GA,IAAY,cAEX;AAFD,WAAY,cAAc;IACxB,iFAAiE,CAAA;AACnE,CAAC,EAFW,cAAc,GAAd,sBAAc,KAAd,sBAAc,QAEzB"}
|
|
@@ -0,0 +1,61 @@
|
|
|
1
|
+
var __assign = (this && this.__assign) || function () {
|
|
2
|
+
__assign = Object.assign || function(t) {
|
|
3
|
+
for (var s, i = 1, n = arguments.length; i < n; i++) {
|
|
4
|
+
s = arguments[i];
|
|
5
|
+
for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))
|
|
6
|
+
t[p] = s[p];
|
|
7
|
+
}
|
|
8
|
+
return t;
|
|
9
|
+
};
|
|
10
|
+
return __assign.apply(this, arguments);
|
|
11
|
+
};
|
|
12
|
+
import React from 'react';
|
|
13
|
+
import merge from 'lodash.merge';
|
|
14
|
+
import { ArticleRecommendationsProviderContext } from '../context';
|
|
15
|
+
import useSWR from 'swr';
|
|
16
|
+
import { fetcher } from '../provider';
|
|
17
|
+
var defaultContext = {
|
|
18
|
+
dpaTemplates: [
|
|
19
|
+
{
|
|
20
|
+
templateId: 'list-1',
|
|
21
|
+
columnCount: '1',
|
|
22
|
+
size: 'small',
|
|
23
|
+
recommendedArticles: { totalArticlesCount: 4 },
|
|
24
|
+
adlibraryMPU: { totalArticlesCount: 0 },
|
|
25
|
+
},
|
|
26
|
+
{
|
|
27
|
+
templateId: 'list-2',
|
|
28
|
+
columnCount: { xs: '1', sm: '2', lg: '4' },
|
|
29
|
+
size: 'large',
|
|
30
|
+
recommendedArticles: { totalArticlesCount: 8 },
|
|
31
|
+
adlibraryMPU: { totalArticlesCount: 0 },
|
|
32
|
+
},
|
|
33
|
+
],
|
|
34
|
+
};
|
|
35
|
+
var mapDpaTemplates = function (articles, dpaTemplates) {
|
|
36
|
+
var articleTypeNames = Object.keys(dpaTemplates[0]).slice(3);
|
|
37
|
+
return articleTypeNames.reduce(function (acc, articleTypeName) {
|
|
38
|
+
var startCount = 0;
|
|
39
|
+
var dpaTemplatesWithArticles = acc.map(function (dpaTemplate) {
|
|
40
|
+
var _a;
|
|
41
|
+
var totalArticlesCount = dpaTemplate[articleTypeName].totalArticlesCount;
|
|
42
|
+
var slicedArticles = articles[articleTypeName].slice(startCount, startCount + totalArticlesCount);
|
|
43
|
+
startCount += totalArticlesCount;
|
|
44
|
+
return __assign(__assign({}, dpaTemplate), (_a = {}, _a[articleTypeName] = slicedArticles, _a));
|
|
45
|
+
});
|
|
46
|
+
startCount = 0;
|
|
47
|
+
return dpaTemplatesWithArticles;
|
|
48
|
+
}, dpaTemplates);
|
|
49
|
+
};
|
|
50
|
+
var ArticleRecommendationsProvider = function (_a) {
|
|
51
|
+
var articleId = _a.articleId, context = _a.context, config = _a.config, children = _a.children;
|
|
52
|
+
var enhancedContext = merge({}, defaultContext, context);
|
|
53
|
+
var articles = useSWR([articleId, config], fetcher).data;
|
|
54
|
+
var mapedDpaTemplates = articles
|
|
55
|
+
? mapDpaTemplates({ recommendedArticles: articles, adlibraryMPU: [] }, enhancedContext.dpaTemplates)
|
|
56
|
+
: [];
|
|
57
|
+
var contextWithArticles = __assign(__assign({}, enhancedContext), { dpaTemplates: mapedDpaTemplates, articleId: articleId });
|
|
58
|
+
return (React.createElement(ArticleRecommendationsProviderContext.Provider, { value: contextWithArticles }, children));
|
|
59
|
+
};
|
|
60
|
+
export default ArticleRecommendationsProvider;
|
|
61
|
+
//# sourceMappingURL=ArticleRecommendationsProvider.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ArticleRecommendationsProvider.js","sourceRoot":"","sources":["../../../../src/article-recommendations/components/ArticleRecommendationsProvider.tsx"],"names":[],"mappings":";;;;;;;;;;;AAAA,OAAO,KAAK,MAAM,OAAO,CAAA;AACzB,OAAO,KAAK,MAAM,cAAc,CAAA;AAChC,OAAO,EAAE,qCAAqC,EAAE,MAAM,YAAY,CAAA;AASlE,OAAO,MAAM,MAAM,KAAK,CAAA;AACxB,OAAO,EAAE,OAAO,EAAE,MAAM,aAAa,CAAA;AAErC,IAAM,cAAc,GAA8C;IAChE,YAAY,EAAE;QACZ;YACE,UAAU,EAAE,QAAQ;YACpB,WAAW,EAAE,GAAG;YAChB,IAAI,EAAE,OAAO;YACb,mBAAmB,EAAE,EAAE,kBAAkB,EAAE,CAAC,EAAE;YAC9C,YAAY,EAAE,EAAE,kBAAkB,EAAE,CAAC,EAAE;SACxC;QACD;YACE,UAAU,EAAE,QAAQ;YACpB,WAAW,EAAE,EAAE,EAAE,EAAE,GAAG,EAAE,EAAE,EAAE,GAAG,EAAE,EAAE,EAAE,GAAG,EAAE;YAC1C,IAAI,EAAE,OAAO;YACb,mBAAmB,EAAE,EAAE,kBAAkB,EAAE,CAAC,EAAE;YAC9C,YAAY,EAAE,EAAE,kBAAkB,EAAE,CAAC,EAAE;SACxC;KACF;CACF,CAAA;AAED,IAAM,eAAe,GAAG,UACtB,QAAyB,EACzB,YAA2B;IAE3B,IAAM,gBAAgB,GAAG,MAAM,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAA;IAC9D,OAAO,gBAAgB,CAAC,MAAM,CAAC,UAAC,GAAG,EAAE,eAAe;QAClD,IAAI,UAAU,GAAG,CAAC,CAAA;QAClB,IAAM,wBAAwB,GAA8B,GAAG,CAAC,GAAG,CACjE,UAAC,WAAW;;YACF,IAAA,kBAAkB,GAAK,WAAW,CAAC,eAAe,CAAC,mBAAjC,CAAiC;YAC3D,IAAM,cAAc,GAAG,QAAQ,CAAC,eAAe,CAAC,CAAC,KAAK,CACpD,UAAU,EACV,UAAU,GAAI,kBAA6B,CAC5C,CAAA;YAED,UAAU,IAAI,kBAA4B,CAAA;YAC1C,6BACK,WAAW,gBACb,eAAe,IAAG,cAAc,OAClC;QACH,CAAC,CACF,CAAA;QACD,UAAU,GAAG,CAAC,CAAA;QACd,OAAO,wBAAwB,CAAA;IACjC,CAAC,EAAE,YAAmB,CAAC,CAAA;AACzB,CAAC,CAAA;AAED,IAAM,8BAA8B,GAAkD,UAAC,EAKtF;QAJC,SAAS,eAAA,EACT,OAAO,aAAA,EACP,MAAM,YAAA,EACN,QAAQ,cAAA;IAER,IAAM,eAAe,GAAG,KAAK,CAAC,EAAE,EAAE,cAAc,EAAE,OAAO,CAAC,CAAA;IAClD,IAAM,QAAQ,GAAK,MAAM,CAAY,CAAC,SAAS,EAAE,MAAM,CAAC,EAAE,OAAO,CAAC,KAApD,CAAoD;IAE1E,IAAM,iBAAiB,GAAG,QAAQ;QAChC,CAAC,CAAC,eAAe,CACb,EAAE,mBAAmB,EAAE,QAAQ,EAAE,YAAY,EAAE,EAAE,EAAE,EACnD,eAAe,CAAC,YAAY,CAC7B;QACH,CAAC,CAAC,EAAE,CAAA;IAEN,IAAM,mBAAmB,yBACpB,eAAe,KAClB,YAAY,EAAE,iBAAiB,EAC/B,SAAS,WAAA,GACV,CAAA;IAED,OAAO,CACL,oBAAC,qCAAqC,CAAC,QAAQ,IAAC,KAAK,EAAE,mBAAmB,IACvE,QAAQ,CACsC,CAClD,CAAA;AACH,CAAC,CAAA;AAED,eAAe,8BAA8B,CAAA"}
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
import React, { useContext } from 'react';
|
|
2
|
+
import AricleGrid from './ArticleGrid';
|
|
3
|
+
import { ArticleRecommendationsProviderContext } from '../context';
|
|
4
|
+
var RecommendedArticleList = function (_a) {
|
|
5
|
+
var templateId = _a.templateId;
|
|
6
|
+
var context = useContext(ArticleRecommendationsProviderContext);
|
|
7
|
+
var dpaTemplate = context.dpaTemplates.find(function (dpaTemplate) { return dpaTemplate.templateId === templateId; });
|
|
8
|
+
if (!dpaTemplate) {
|
|
9
|
+
return null;
|
|
10
|
+
}
|
|
11
|
+
var recommendedArticles = dpaTemplate.recommendedArticles, columnCount = dpaTemplate.columnCount, size = dpaTemplate.size;
|
|
12
|
+
return (React.createElement(AricleGrid, { articles: recommendedArticles, columnCount: columnCount, size: size }));
|
|
13
|
+
};
|
|
14
|
+
export default RecommendedArticleList;
|
|
15
|
+
//# sourceMappingURL=RecommendedArticleList.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"RecommendedArticleList.js","sourceRoot":"","sources":["../../../../src/article-recommendations/components/RecommendedArticleList.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,EAAE,UAAU,EAAE,MAAM,OAAO,CAAA;AACzC,OAAO,UAAU,MAAM,eAAe,CAAA;AACtC,OAAO,EAAE,qCAAqC,EAAE,MAAM,YAAY,CAAA;AAGlE,IAAM,sBAAsB,GAAqC,UAAC,EAEjE;QADC,UAAU,gBAAA;IAEV,IAAM,OAAO,GAAG,UAAU,CACxB,qCAAqC,CACmB,CAAA;IAE1D,IAAM,WAAW,GAAG,OAAO,CAAC,YAAY,CAAC,IAAI,CAC3C,UAAC,WAAW,IAAK,OAAA,WAAW,CAAC,UAAU,KAAK,UAAU,EAArC,CAAqC,CACvD,CAAA;IAED,IAAI,CAAC,WAAW,EAAE;QAChB,OAAO,IAAI,CAAA;KACZ;IAEO,IAAA,mBAAmB,GAAwB,WAAW,oBAAnC,EAAE,WAAW,GAAW,WAAW,YAAtB,EAAE,IAAI,GAAK,WAAW,KAAhB,CAAgB;IAC9D,OAAO,CACL,oBAAC,UAAU,IACT,QAAQ,EAAE,mBAAmB,EAC7B,WAAW,EAAE,WAAW,EACxB,IAAI,EAAE,IAAI,GACV,CACH,CAAA;AACH,CAAC,CAAA;AAED,eAAe,sBAAsB,CAAA"}
|
|
@@ -1,4 +1,6 @@
|
|
|
1
1
|
import AricleGrid from './ArticleGrid';
|
|
2
2
|
import ArticleRecommendation from './ArticleRecommendation';
|
|
3
|
+
import ArticleRecommendationsProvider from './ArticleRecommendationsProvider';
|
|
4
|
+
import RecommendedArticleList from './RecommendedArticleList';
|
|
3
5
|
export * from './baseProps';
|
|
4
|
-
export { ArticleRecommendation, AricleGrid };
|
|
6
|
+
export { ArticleRecommendation, AricleGrid, ArticleRecommendationsProvider, RecommendedArticleList, };
|
|
@@ -1,5 +1,7 @@
|
|
|
1
1
|
import AricleGrid from './ArticleGrid';
|
|
2
2
|
import ArticleRecommendation from './ArticleRecommendation';
|
|
3
|
+
import ArticleRecommendationsProvider from './ArticleRecommendationsProvider';
|
|
4
|
+
import RecommendedArticleList from './RecommendedArticleList';
|
|
3
5
|
export * from './baseProps';
|
|
4
|
-
export { ArticleRecommendation, AricleGrid };
|
|
6
|
+
export { ArticleRecommendation, AricleGrid, ArticleRecommendationsProvider, RecommendedArticleList, };
|
|
5
7
|
//# sourceMappingURL=index.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../src/article-recommendations/components/index.ts"],"names":[],"mappings":"AAAA,OAAO,UAAU,MAAM,eAAe,CAAA;AACtC,OAAO,qBAAqB,MAAM,yBAAyB,CAAA;
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../src/article-recommendations/components/index.ts"],"names":[],"mappings":"AAAA,OAAO,UAAU,MAAM,eAAe,CAAA;AACtC,OAAO,qBAAqB,MAAM,yBAAyB,CAAA;AAC3D,OAAO,8BAA8B,MAAM,kCAAkC,CAAA;AAC7E,OAAO,sBAAsB,MAAM,0BAA0B,CAAA;AAE7D,cAAc,aAAa,CAAA;AAC3B,OAAO,EACL,qBAAqB,EACrB,UAAU,EACV,8BAA8B,EAC9B,sBAAsB,GACvB,CAAA"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../src/article-recommendations/context/index.tsx"],"names":[],"mappings":"AACA,OAAO,KAAK,MAAM,OAAO,CAAA;AAEzB,MAAM,CAAC,IAAM,qCAAqC,GAAG,KAAK,CAAC,aAAa,CACtE,IAAI,CACL,CAAA"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/article-recommendations/index.ts"],"names":[],"mappings":"AAAA,cAAc,cAAc,CAAA;AAC5B,cAAc,YAAY,CAAA;AAC1B,cAAc,SAAS,CAAA"}
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/article-recommendations/index.ts"],"names":[],"mappings":"AAAA,cAAc,cAAc,CAAA;AAC5B,cAAc,YAAY,CAAA;AAC1B,cAAc,SAAS,CAAA;AACvB,cAAc,WAAW,CAAA"}
|
|
@@ -1,2 +1,4 @@
|
|
|
1
1
|
import { ProviderArgs, Article } from '../index';
|
|
2
|
-
|
|
2
|
+
import { Fetcher } from 'swr';
|
|
3
|
+
export declare const fetcher: Fetcher<Article[]>;
|
|
4
|
+
export declare const recommendationsProvider: ({ articleId, publisher, userId, config, }: ProviderArgs) => Promise<Article[]>;
|
|
@@ -34,15 +34,31 @@ var __generator = (this && this.__generator) || function (thisArg, body) {
|
|
|
34
34
|
if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };
|
|
35
35
|
}
|
|
36
36
|
};
|
|
37
|
-
import { createApolloClient, ClientTypes } from '@newskit-render/api';
|
|
37
|
+
import { createApolloClient, ClientTypes, Publisher } from '@newskit-render/api';
|
|
38
38
|
import { GET_RECOMMENDATIONS } from './queries';
|
|
39
|
+
export var fetcher = function (articleId, config) { return __awaiter(void 0, void 0, void 0, function () {
|
|
40
|
+
var userId;
|
|
41
|
+
var _a;
|
|
42
|
+
return __generator(this, function (_b) {
|
|
43
|
+
if (typeof window !== 'undefined') {
|
|
44
|
+
//@ts-ignore
|
|
45
|
+
userId = (_a = window.utag) === null || _a === void 0 ? void 0 : _a.data['cp.utag_main_v_id'];
|
|
46
|
+
}
|
|
47
|
+
return [2 /*return*/, recommendationsProvider({
|
|
48
|
+
articleId: articleId,
|
|
49
|
+
config: config,
|
|
50
|
+
userId: userId,
|
|
51
|
+
publisher: Publisher.SUN_UK,
|
|
52
|
+
})];
|
|
53
|
+
});
|
|
54
|
+
}); };
|
|
39
55
|
export var recommendationsProvider = function (_a) {
|
|
40
|
-
var articleId = _a.articleId, publisher = _a.publisher, userId = _a.userId;
|
|
56
|
+
var articleId = _a.articleId, publisher = _a.publisher, userId = _a.userId, config = _a.config;
|
|
41
57
|
return __awaiter(void 0, void 0, void 0, function () {
|
|
42
58
|
var apolloClient, response, recommendedArticles;
|
|
43
59
|
return __generator(this, function (_b) {
|
|
44
60
|
switch (_b.label) {
|
|
45
|
-
case 0: return [4 /*yield*/, createApolloClient(ClientTypes.nkapi)];
|
|
61
|
+
case 0: return [4 /*yield*/, createApolloClient(ClientTypes.nkapi, undefined, undefined, undefined, config)];
|
|
46
62
|
case 1:
|
|
47
63
|
apolloClient = _b.sent();
|
|
48
64
|
return [4 /*yield*/, apolloClient.query({
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"recommendationsProvider.js","sourceRoot":"","sources":["../../../../src/article-recommendations/provider/recommendationsProvider.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA,OAAO,EAAE,kBAAkB,EAAE,WAAW,EAAE,MAAM,qBAAqB,CAAA;
|
|
1
|
+
{"version":3,"file":"recommendationsProvider.js","sourceRoot":"","sources":["../../../../src/article-recommendations/provider/recommendationsProvider.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA,OAAO,EAAE,kBAAkB,EAAE,WAAW,EAAE,SAAS,EAAE,MAAM,qBAAqB,CAAA;AAChF,OAAO,EAAE,mBAAmB,EAAE,MAAM,WAAW,CAAA;AAI/C,MAAM,CAAC,IAAM,OAAO,GAAuB,UACzC,SAAS,EACT,MAAM;;;;QAGN,IAAI,OAAO,MAAM,KAAK,WAAW,EAAE;YACjC,YAAY;YACZ,MAAM,GAAG,MAAA,MAAM,CAAC,IAAI,0CAAE,IAAI,CAAC,mBAAmB,CAAC,CAAA;SAChD;QAED,sBAAO,uBAAuB,CAAC;gBAC7B,SAAS,WAAA;gBACT,MAAM,EAAE,MAAgB;gBACxB,MAAM,QAAA;gBACN,SAAS,EAAE,SAAS,CAAC,MAAM;aAC5B,CAAC,EAAA;;KACH,CAAA;AAED,MAAM,CAAC,IAAM,uBAAuB,GAAG,UAAO,EAK/B;QAJb,SAAS,eAAA,EACT,SAAS,eAAA,EACT,MAAM,YAAA,EACN,MAAM,YAAA;;;;;wBAEe,qBAAM,kBAAkB,CAC3C,WAAW,CAAC,KAAK,EACjB,SAAS,EACT,SAAS,EACT,SAAS,EACT,MAAM,CACP,EAAA;;oBANK,YAAY,GAAG,SAMpB;oBACgB,qBAAM,YAAY,CAAC,KAAK,CAAC;4BACxC,KAAK,EAAE,mBAAmB;4BAC1B,SAAS,EAAE,EAAE,SAAS,WAAA,EAAE,SAAS,EAAE,EAAE,SAAS,WAAA,EAAE,MAAM,QAAA,EAAE,EAAE;yBAC3D,CAAC,EAAA;;oBAHI,QAAQ,GAAG,SAGf;oBAEI,mBAAmB,GAAG,QAAQ,CAAC,IAAI,CAAC,eAAe,CAAC,QAAQ,CAAC,GAAG,CACpE,UAAC,OAAO;;wBAAK,OAAA,CAAC;4BACZ,KAAK,EAAE,OAAO,CAAC,MAAM;4BACrB,GAAG,EAAE,OAAO,CAAC,MAAM;4BACnB,IAAI,EAAE,OAAO,CAAC,QAAQ;4BACtB,IAAI,EACF,CAAA,MAAA,MAAA,MAAA,MAAA,OAAO,CAAC,KAAK,0CAAE,WAAW,0CAAE,KAAK,0CAAG,CAAC,CAAC,0CAAE,GAAG;iCAC3C,MAAA,MAAA,MAAA,OAAO,CAAC,KAAK,0CAAE,KAAK,0CAAG,CAAC,CAAC,0CAAE,GAAG,CAAA;gCAC9B,IAAI;yBACP,CAAC,CAAA;qBAAA,CACH,CAAA;oBAED,sBAAO,mBAAmB,EAAA;;;;CAC3B,CAAA"}
|
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
import { Publisher } from '@newskit-render/api';
|
|
2
2
|
import { MQ } from 'newskit';
|
|
3
|
+
import { ReactNode } from 'react';
|
|
3
4
|
export declare type Article = {
|
|
4
5
|
href: string;
|
|
5
6
|
title: string;
|
|
@@ -19,10 +20,15 @@ export declare type ArticleRecommendationProps = {
|
|
|
19
20
|
size: 'large' | 'small';
|
|
20
21
|
overrides?: ArticleRecommendationOverrides;
|
|
21
22
|
};
|
|
23
|
+
export declare type Config = {
|
|
24
|
+
newskitApiEnvUrl: string;
|
|
25
|
+
newskitApiXApiKey: string;
|
|
26
|
+
};
|
|
22
27
|
export declare type ProviderArgs = {
|
|
23
28
|
userId?: string;
|
|
24
29
|
publisher: Publisher;
|
|
25
30
|
articleId: string;
|
|
31
|
+
config?: Config;
|
|
26
32
|
};
|
|
27
33
|
export declare type ArticleRecommendationOverrides = {
|
|
28
34
|
spaceStack?: MQ<string>;
|
|
@@ -54,3 +60,34 @@ export declare type ArticleRecommendationOverrides = {
|
|
|
54
60
|
};
|
|
55
61
|
};
|
|
56
62
|
};
|
|
63
|
+
export declare type ArticleTemplate = Record<string, Article[]>;
|
|
64
|
+
export declare type ArticleTypeName = 'recommendedArticles' | 'adlibraryMPU';
|
|
65
|
+
export declare type ArticleTypes = Record<ArticleTypeName, {
|
|
66
|
+
totalArticlesCount: number;
|
|
67
|
+
}>;
|
|
68
|
+
export declare type DpaTemplate = ArticleTypes & {
|
|
69
|
+
templateId: string;
|
|
70
|
+
columnCount: MQ<string>;
|
|
71
|
+
size: 'small' | 'large';
|
|
72
|
+
};
|
|
73
|
+
export declare type DpaTemplateWithArticles = {
|
|
74
|
+
templateId: string;
|
|
75
|
+
columnCount: MQ<string>;
|
|
76
|
+
size: 'small' | 'large';
|
|
77
|
+
} & Record<string, Article[]>;
|
|
78
|
+
export declare type ArticleRecommendationsProviderBaseContextType = {
|
|
79
|
+
dpaTemplates: DpaTemplate[];
|
|
80
|
+
};
|
|
81
|
+
export declare type ArticleRecommendationsProviderContextTypeWithArticles = {
|
|
82
|
+
dpaTemplates: DpaTemplateWithArticles[];
|
|
83
|
+
};
|
|
84
|
+
export declare type ArticleRecommendationsProviderContextType = ArticleRecommendationsProviderBaseContextType | ArticleRecommendationsProviderContextTypeWithArticles;
|
|
85
|
+
export declare type ArticleRecommendationsProviderProps = {
|
|
86
|
+
articleId: string;
|
|
87
|
+
context?: ArticleRecommendationsProviderBaseContextType;
|
|
88
|
+
children: ReactNode;
|
|
89
|
+
config: Config;
|
|
90
|
+
};
|
|
91
|
+
export declare enum ContextNameMap {
|
|
92
|
+
'articleRecommendationProvider' = "articleRecommendationProvider"
|
|
93
|
+
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../src/article-recommendations/types/index.ts"],"names":[],"mappings":""}
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../src/article-recommendations/types/index.ts"],"names":[],"mappings":"AA2GA,MAAM,CAAN,IAAY,cAEX;AAFD,WAAY,cAAc;IACxB,iFAAiE,CAAA;AACnE,CAAC,EAFW,cAAc,KAAd,cAAc,QAEzB"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@newskit-render/standalone-components",
|
|
3
|
-
"version": "1.
|
|
3
|
+
"version": "1.11.0",
|
|
4
4
|
"description": "Newskit Render Standalone Components",
|
|
5
5
|
"author": "",
|
|
6
6
|
"license": "UNLICENSED",
|
|
@@ -34,7 +34,7 @@
|
|
|
34
34
|
"@emotion-icons/material-outlined": "3.14.0",
|
|
35
35
|
"@emotion/react": "11.10.4",
|
|
36
36
|
"@emotion/styled": "11.10.4",
|
|
37
|
-
"@newskit-render/api": "^1.
|
|
37
|
+
"@newskit-render/api": "^1.3.0",
|
|
38
38
|
"@newskit-render/shared-components": "^1.18.0",
|
|
39
39
|
"algoliasearch": "4.13.1",
|
|
40
40
|
"cross-fetch": "3.1.5",
|