@times-components/article-skeleton 1.85.42 → 1.86.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (40) hide show
  1. package/CHANGELOG.md +27 -0
  2. package/babel.config.js +13 -2
  3. package/dist/article-body/article-body-paragraph.js +101 -1
  4. package/dist/article-body/article-body.js +657 -1
  5. package/dist/article-body/article-link-tracking-events.js +28 -1
  6. package/dist/article-body/article-link.js +51 -1
  7. package/dist/article-body/drop-cap.js +70 -1
  8. package/dist/article-body/inline-paragraph.js +142 -1
  9. package/dist/article-body/inset-caption.js +44 -1
  10. package/dist/article-body/simple-paragraph.js +99 -1
  11. package/dist/article-skeleton-prop-types.js +38 -1
  12. package/dist/article-skeleton.js +265 -1
  13. package/dist/article-topics/index.js +43 -1
  14. package/dist/body-utils.js +81 -1
  15. package/dist/contentModifiers/dropcap-util-common.js +117 -1
  16. package/dist/contentModifiers/dropcap-util.js +28 -1
  17. package/dist/contentModifiers/inline-ad.js +46 -1
  18. package/dist/contentModifiers/inline-related-article.js +71 -1
  19. package/dist/contentModifiers/native-ad.js +56 -1
  20. package/dist/contentModifiers/newsletter-puff.js +143 -1
  21. package/dist/data-helper.js +106 -1
  22. package/dist/gutter.js +43 -1
  23. package/dist/head.js +472 -1
  24. package/dist/keylines.js +24 -1
  25. package/dist/paywall-portal.js +47 -1
  26. package/dist/sticky-save-and-share-bar.js +60 -1
  27. package/dist/styles/article-body/article-link.js +18 -1
  28. package/dist/styles/article-body/index.js +41 -1
  29. package/dist/styles/article-body/responsive.js +143 -1
  30. package/dist/styles/article-body/shared.js +124 -1
  31. package/dist/styles/article-topics/index.js +21 -1
  32. package/dist/styles/article-topics/responsive.js +21 -1
  33. package/dist/styles/article-topics/shared.js +24 -1
  34. package/dist/styles/responsive.js +45 -1
  35. package/dist/styles/shared.js +20 -1
  36. package/dist/tracking/article-tracking-context.js +71 -1
  37. package/dist/tracking/article-tracking-last-paragraph.js +33 -1
  38. package/package.json +36 -44
  39. package/rnw.js +1 -1
  40. package/tsconfig.jest.json +11 -0
@@ -1 +1,71 @@
1
- var _interopRequireDefault=require("@babel/runtime/helpers/interopRequireDefault");Object.defineProperty(exports,"__esModule",{value:true});exports.default=void 0;var _defineProperty2=_interopRequireDefault(require("@babel/runtime/helpers/defineProperty"));var _toConsumableArray2=_interopRequireDefault(require("@babel/runtime/helpers/toConsumableArray"));var _tsComponents=require("@times-components/ts-components");function ownKeys(object,enumerableOnly){var keys=Object.keys(object);if(Object.getOwnPropertySymbols){var symbols=Object.getOwnPropertySymbols(object);if(enumerableOnly){symbols=symbols.filter(function(sym){return Object.getOwnPropertyDescriptor(object,sym).enumerable;});}keys.push.apply(keys,symbols);}return keys;}function _objectSpread(target){for(var i=1;i<arguments.length;i++){var source=arguments[i]!=null?arguments[i]:{};if(i%2){ownKeys(Object(source),true).forEach(function(key){(0,_defineProperty2.default)(target,key,source[key]);});}else if(Object.getOwnPropertyDescriptors){Object.defineProperties(target,Object.getOwnPropertyDescriptors(source));}else{ownKeys(Object(source)).forEach(function(key){Object.defineProperty(target,key,Object.getOwnPropertyDescriptor(source,key));});}}return target;}var getInlineRelatedArticles=function getInlineRelatedArticles(){var attributes=arguments.length>0&&arguments[0]!==undefined?arguments[0]:{};return{name:"autoInlineRelatedArticles",attributes:{element:{value:"inline-related-articles",attributes:attributes}},children:[]};};var insertInlineRelatedArticles=function insertInlineRelatedArticles(relatedArticleSlice){var _ref=arguments.length>1&&arguments[1]!==undefined?arguments[1]:{},_ref$afterParagraph=_ref.afterParagraph,afterParagraph=_ref$afterParagraph===void 0?7:_ref$afterParagraph,_ref$paragraphPadding=_ref.paragraphPadding,paragraphPadding=_ref$paragraphPadding===void 0?2:_ref$paragraphPadding;return function(articleContent){if(!relatedArticleSlice||!relatedArticleSlice.items)return articleContent;var paywall=articleContent.find(function(item){return item.name==="paywall";});if(!paywall)return articleContent;var allArticleContent=[].concat((0,_toConsumableArray2.default)(articleContent),(0,_toConsumableArray2.default)(paywall.children)).filter(function(item){return item.name!=="paywall";});var nthParagraph=allArticleContent.filter(function(item){return item.name==="paragraph";})[afterParagraph-1];var allArticleContentIndex=allArticleContent.indexOf(nthParagraph);var enoughParagraphPadding=allArticleContent.slice(allArticleContentIndex-paragraphPadding+1,allArticleContentIndex+paragraphPadding+1).filter(function(item){return item.name==="paragraph";}).length===2*paragraphPadding;if(enoughParagraphPadding){if(articleContent.includes(nthParagraph)){var outsidePaywallIndex=articleContent.indexOf(nthParagraph);return[].concat((0,_toConsumableArray2.default)(articleContent.slice(0,outsidePaywallIndex+1)),[getInlineRelatedArticles({relatedArticles:(0,_tsComponents.formatRelatedArticles)(relatedArticleSlice)})],(0,_toConsumableArray2.default)(articleContent.slice(outsidePaywallIndex+1)));}var insidePaywallIndex=paywall.children.indexOf(nthParagraph);return articleContent.map(function(item){return item!==paywall?item:_objectSpread(_objectSpread({},paywall),{},{children:[].concat((0,_toConsumableArray2.default)(paywall.children.slice(0,insidePaywallIndex+1)),[getInlineRelatedArticles({relatedArticles:(0,_tsComponents.formatRelatedArticles)(relatedArticleSlice)})],(0,_toConsumableArray2.default)(paywall.children.slice(insidePaywallIndex+1)))});});}return articleContent.map(function(item){return item!==paywall?item:_objectSpread(_objectSpread({},paywall),{},{children:[].concat((0,_toConsumableArray2.default)(paywall.children),[getInlineRelatedArticles({relatedArticles:(0,_tsComponents.formatRelatedArticles)(relatedArticleSlice)})])});});};};var _default=insertInlineRelatedArticles;exports.default=_default;
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports.default = void 0;
7
+
8
+ var _tsComponents = require("@times-components/ts-components");
9
+
10
+ function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (enumerableOnly) { symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; }); } keys.push.apply(keys, symbols); } return keys; }
11
+
12
+ function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; if (i % 2) { ownKeys(Object(source), true).forEach(function (key) { _defineProperty(target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } } return target; }
13
+
14
+ function _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }
15
+
16
+ const getInlineRelatedArticles = function getInlineRelatedArticles() {
17
+ let attributes = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};
18
+ return {
19
+ name: "autoInlineRelatedArticles",
20
+ attributes: {
21
+ element: {
22
+ value: "inline-related-articles",
23
+ attributes
24
+ }
25
+ },
26
+ children: []
27
+ };
28
+ };
29
+
30
+ const insertInlineRelatedArticles = function insertInlineRelatedArticles(relatedArticleSlice) {
31
+ let _ref = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {},
32
+ _ref$afterParagraph = _ref.afterParagraph,
33
+ afterParagraph = _ref$afterParagraph === void 0 ? 7 : _ref$afterParagraph,
34
+ _ref$paragraphPadding = _ref.paragraphPadding,
35
+ paragraphPadding = _ref$paragraphPadding === void 0 ? 2 : _ref$paragraphPadding;
36
+
37
+ return articleContent => {
38
+ if (!relatedArticleSlice || !relatedArticleSlice.items) return articleContent;
39
+ const paywall = articleContent.find(item => item.name === "paywall");
40
+ if (!paywall) return articleContent;
41
+ const allArticleContent = [...articleContent, ...paywall.children].filter(item => item.name !== "paywall");
42
+ const nthParagraph = allArticleContent.filter(item => item.name === "paragraph")[afterParagraph - 1];
43
+ const allArticleContentIndex = allArticleContent.indexOf(nthParagraph);
44
+ const enoughParagraphPadding = allArticleContent.slice(allArticleContentIndex - paragraphPadding + 1, allArticleContentIndex + paragraphPadding + 1).filter(item => item.name === "paragraph").length === 2 * paragraphPadding;
45
+
46
+ if (enoughParagraphPadding) {
47
+ if (articleContent.includes(nthParagraph)) {
48
+ const outsidePaywallIndex = articleContent.indexOf(nthParagraph);
49
+ return [...articleContent.slice(0, outsidePaywallIndex + 1), getInlineRelatedArticles({
50
+ relatedArticles: (0, _tsComponents.formatRelatedArticles)(relatedArticleSlice)
51
+ }), ...articleContent.slice(outsidePaywallIndex + 1)];
52
+ }
53
+
54
+ const insidePaywallIndex = paywall.children.indexOf(nthParagraph);
55
+ return articleContent.map(item => item !== paywall ? item : _objectSpread(_objectSpread({}, paywall), {}, {
56
+ children: [...paywall.children.slice(0, insidePaywallIndex + 1), getInlineRelatedArticles({
57
+ relatedArticles: (0, _tsComponents.formatRelatedArticles)(relatedArticleSlice)
58
+ }), ...paywall.children.slice(insidePaywallIndex + 1)]
59
+ }));
60
+ }
61
+
62
+ return articleContent.map(item => item !== paywall ? item : _objectSpread(_objectSpread({}, paywall), {}, {
63
+ children: [...paywall.children, getInlineRelatedArticles({
64
+ relatedArticles: (0, _tsComponents.formatRelatedArticles)(relatedArticleSlice)
65
+ })]
66
+ }));
67
+ };
68
+ };
69
+
70
+ var _default = insertInlineRelatedArticles;
71
+ exports.default = _default;
@@ -1 +1,56 @@
1
- var _interopRequireDefault=require("@babel/runtime/helpers/interopRequireDefault");Object.defineProperty(exports,"__esModule",{value:true});exports.default=void 0;var _defineProperty2=_interopRequireDefault(require("@babel/runtime/helpers/defineProperty"));var _toConsumableArray2=_interopRequireDefault(require("@babel/runtime/helpers/toConsumableArray"));function ownKeys(object,enumerableOnly){var keys=Object.keys(object);if(Object.getOwnPropertySymbols){var symbols=Object.getOwnPropertySymbols(object);if(enumerableOnly){symbols=symbols.filter(function(sym){return Object.getOwnPropertyDescriptor(object,sym).enumerable;});}keys.push.apply(keys,symbols);}return keys;}function _objectSpread(target){for(var i=1;i<arguments.length;i++){var source=arguments[i]!=null?arguments[i]:{};if(i%2){ownKeys(Object(source),true).forEach(function(key){(0,_defineProperty2.default)(target,key,source[key]);});}else if(Object.getOwnPropertyDescriptors){Object.defineProperties(target,Object.getOwnPropertyDescriptors(source));}else{ownKeys(Object(source)).forEach(function(key){Object.defineProperty(target,key,Object.getOwnPropertyDescriptor(source,key));});}}return target;}var insertNativeAd=function insertNativeAd(children){var clonedChildren=(0,_toConsumableArray2.default)(children);var child=clonedChildren.find(function(item){return item.name==="paywall";});var paragraph=clonedChildren.filter(function(x){return x.name==="paragraph";});if(!child){var nativeAdExists=clonedChildren.find(function(item){return item.name==="nativeAd";});if(!nativeAdExists){clonedChildren.splice(2,0,{name:"nativeAd",children:[]});}return clonedChildren;}var paragraphCount=Number(9-paragraph.length);var paywallChildren=child.children;var paragraphItems=paywallChildren.map(function(item,index){return _objectSpread(_objectSpread({},item),{},{index:index});}).filter(function(item){return item.name==="paragraph";});var indexToAdd=paragraphItems[paragraphCount]?paragraphItems[paragraphCount].index:null;var nativeAd=paywallChildren.find(function(item){return item.name==="nativeAd";});if(nativeAd){return clonedChildren;}if(indexToAdd&&indexToAdd!==null){paywallChildren.splice(indexToAdd,0,{name:"nativeAd",children:[]});}return clonedChildren;};var _default=insertNativeAd;exports.default=_default;
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports.default = void 0;
7
+
8
+ function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (enumerableOnly) { symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; }); } keys.push.apply(keys, symbols); } return keys; }
9
+
10
+ function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; if (i % 2) { ownKeys(Object(source), true).forEach(function (key) { _defineProperty(target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } } return target; }
11
+
12
+ function _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }
13
+
14
+ const insertNativeAd = children => {
15
+ const clonedChildren = [...children];
16
+ const child = clonedChildren.find(item => item.name === "paywall");
17
+ const paragraph = clonedChildren.filter(x => x.name === "paragraph");
18
+
19
+ if (!child) {
20
+ const nativeAdExists = clonedChildren.find(item => item.name === "nativeAd");
21
+
22
+ if (!nativeAdExists) {
23
+ clonedChildren.splice(2, 0, {
24
+ name: "nativeAd",
25
+ children: []
26
+ });
27
+ }
28
+
29
+ return clonedChildren;
30
+ }
31
+
32
+ const paragraphCount = Number(9 - paragraph.length);
33
+ const paywallChildren = child.children;
34
+ const paragraphItems = paywallChildren.map((item, index) => _objectSpread(_objectSpread({}, item), {}, {
35
+ index
36
+ })).filter(item => item.name === "paragraph");
37
+ const indexToAdd = paragraphItems[paragraphCount] ? paragraphItems[paragraphCount].index : null; // checks if nativeAd only renders once
38
+
39
+ const nativeAd = paywallChildren.find(item => item.name === "nativeAd");
40
+
41
+ if (nativeAd) {
42
+ return clonedChildren;
43
+ }
44
+
45
+ if (indexToAdd && indexToAdd !== null) {
46
+ paywallChildren.splice(indexToAdd, 0, {
47
+ name: "nativeAd",
48
+ children: []
49
+ });
50
+ }
51
+
52
+ return clonedChildren;
53
+ };
54
+
55
+ var _default = insertNativeAd;
56
+ exports.default = _default;
@@ -1 +1,143 @@
1
- var _interopRequireDefault=require("@babel/runtime/helpers/interopRequireDefault");Object.defineProperty(exports,"__esModule",{value:true});exports.default=void 0;var _toConsumableArray2=_interopRequireDefault(require("@babel/runtime/helpers/toConsumableArray"));var _defineProperty2=_interopRequireDefault(require("@babel/runtime/helpers/defineProperty"));var _dataHelper=require("../data-helper");function ownKeys(object,enumerableOnly){var keys=Object.keys(object);if(Object.getOwnPropertySymbols){var symbols=Object.getOwnPropertySymbols(object);if(enumerableOnly){symbols=symbols.filter(function(sym){return Object.getOwnPropertyDescriptor(object,sym).enumerable;});}keys.push.apply(keys,symbols);}return keys;}function _objectSpread(target){for(var i=1;i<arguments.length;i++){var source=arguments[i]!=null?arguments[i]:{};if(i%2){ownKeys(Object(source),true).forEach(function(key){(0,_defineProperty2.default)(target,key,source[key]);});}else if(Object.getOwnPropertyDescriptors){Object.defineProperties(target,Object.getOwnPropertyDescriptors(source));}else{ownKeys(Object(source)).forEach(function(key){Object.defineProperty(target,key,Object.getOwnPropertyDescriptor(source,key));});}}return target;}var setNewsletterPayload=function setNewsletterPayload(attributes){return{name:"autoNewsletterPuff",attributes:{element:{value:"newsletter-puff",attributes:_objectSpread({label:"In your inbox"},attributes)}},children:[]};};var newslettersBySection=[{section:"news",payload:setNewsletterPayload({code:"TNL-101",headline:"Best of Times",copy:"We’ll send you our top stories, across all sections, straight to your inbox. Simple as that.",imageUri:"https://www.thetimes.co.uk/imageserver/image/methode%2Ftimes%2Fprod%2Fweb%2Fbin%2F728c3e68-5311-4533-809a-b313a6503789.jpg?resize=800"})},{section:"business",payload:setNewsletterPayload({code:"TNL-103",headline:"Business briefing",copy:"In-depth analysis and comment on the latest financial and economic news from our award-winning Business teams.",imageUri:"https://www.thetimes.co.uk/imageserver/image/methode%2Ftimes%2Fprod%2Fweb%2Fbin%2F306637af-2b6f-48fc-b264-d661b2067818.jpg?resize=800"})},{section:"scotland",payload:setNewsletterPayload({code:"TNL-134",headline:"Editor’s Choice – Scotland",copy:"The biggest stories of the week from The Times and The Sunday Times Scotland, delivered directly to you every Saturday morning.",imageUri:"https://www.thetimes.co.uk/imageserver/image/methode%2Ftimes%2Fprod%2Fweb%2Fbin%2F5777acf9-363f-4aa3-8176-1ea09cdae7d6.jpg?resize=800"})},{section:"money",payload:setNewsletterPayload({code:"TNL-107",headline:"Money newsletter",copy:"We'll send you the latest personal finance and investment news to make your money go further.",imageUri:"https://www.thetimes.co.uk/imageserver/image/methode%2Ftimes%2Fprod%2Fweb%2Fbin%2Ffd44b15f-2fb8-4e5d-b409-315648b10646.jpg?resize=800"})},{section:"law",payload:setNewsletterPayload({code:"TNL-121",headline:"The Brief",copy:"A weekly overview of the significant issues in Law, drawing attention to expert analysis and exclusive commentary.",imageUri:"https://www.thetimes.co.uk/imageserver/image/methode%2Ftimes%2Fprod%2Fweb%2Fbin%2F27a231b4-5658-4852-a603-37c5210a946e.jpg?resize=800"})},{section:"home",payload:setNewsletterPayload({code:"TNL-113",headline:"Property newsletter",copy:"Get expert advice and find out what's really happening in the property market.",imageUri:"https://www.thetimes.co.uk/imageserver/image/methode%2Ftimes%2Fprod%2Fweb%2Fbin%2F42a688ec-f9ba-4684-90ce-17a9d1c19d8a.jpg?resize=800"})},{section:"bricks & mortar",payload:setNewsletterPayload({code:"TNL-113",headline:"Property newsletter",copy:"Get expert advice and find out what's really happening in the property market.",imageUri:"https://www.thetimes.co.uk/imageserver/image/methode%2Ftimes%2Fprod%2Fweb%2Fbin%2F42a688ec-f9ba-4684-90ce-17a9d1c19d8a.jpg?resize=800"})}];var getNewsletterPuff=function getNewsletterPuff(section){var newsletter=newslettersBySection.find(function(item){return item.section===section.toLowerCase();});return newsletter?newsletter.payload:undefined;};var newsletterPuffExists=function newsletterPuffExists(children){return children.find(function(item){return item.name==="interactive"&&item.attributes.element.value==="newsletter-puff";});};var insertPaywall=function insertPaywall(paywall,insertBefore,newsletterPuff){return _objectSpread(_objectSpread({},paywall),{},{children:paywall.children.reduce(function(acc,item,index){return index===insertBefore?[].concat((0,_toConsumableArray2.default)(acc),[newsletterPuff,item]):[].concat((0,_toConsumableArray2.default)(acc),[item]);},[])});};var consecutiveParagraphs=function consecutiveParagraphs(children){var index=children.findIndex(function(item){return item.name!=="paragraph";});return index===-1?children.length:index;};var checkParagraphs=function checkParagraphs(children,paywall){var paywallIndex=children.findIndex(function(item){return item.name==="paywall";});var paragraphs=consecutiveParagraphs(children);var paywallParagraphs=consecutiveParagraphs(paywall.children);if(paragraphs>=5){return true;}if(paywallIndex!==paragraphs){return false;}return paragraphs+paywallParagraphs>=5;};var insertNewsletterPuff=function insertNewsletterPuff(section,isPreview,flags){return function(children){if(isPreview||(0,_dataHelper.getIsLiveOrBreakingFlag)(flags))return children;var newsletterPuff=getNewsletterPuff(section);if(!newsletterPuff)return children;var paywall=children.find(function(item){return item.name==="paywall";});if(!paywall)return children;if(newsletterPuffExists(children)||newsletterPuffExists(paywall.children)){return children;}if(!checkParagraphs(children,paywall)){return children;}var insertIndex=3;return children.reduce(function(acc,item,index){if(index===insertIndex)return[].concat((0,_toConsumableArray2.default)(acc),[newsletterPuff,item]);if(item.name==="paywall")return[].concat((0,_toConsumableArray2.default)(acc),[insertPaywall(item,insertIndex-index,newsletterPuff)]);return[].concat((0,_toConsumableArray2.default)(acc),[item]);},[]);};};var _default=insertNewsletterPuff;exports.default=_default;
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports.default = void 0;
7
+
8
+ var _dataHelper = require("../data-helper");
9
+
10
+ function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (enumerableOnly) { symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; }); } keys.push.apply(keys, symbols); } return keys; }
11
+
12
+ function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; if (i % 2) { ownKeys(Object(source), true).forEach(function (key) { _defineProperty(target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } } return target; }
13
+
14
+ function _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }
15
+
16
+ const setNewsletterPayload = attributes => ({
17
+ name: "autoNewsletterPuff",
18
+ attributes: {
19
+ element: {
20
+ value: "newsletter-puff",
21
+ attributes: _objectSpread({
22
+ label: "In your inbox"
23
+ }, attributes)
24
+ }
25
+ },
26
+ children: []
27
+ });
28
+
29
+ const newslettersBySection = [{
30
+ section: "news",
31
+ payload: setNewsletterPayload({
32
+ code: "TNL-101",
33
+ headline: "Best of Times",
34
+ copy: "We’ll send you our top stories, across all sections, straight to your inbox. Simple as that.",
35
+ imageUri: "https://www.thetimes.co.uk/imageserver/image/methode%2Ftimes%2Fprod%2Fweb%2Fbin%2F728c3e68-5311-4533-809a-b313a6503789.jpg?resize=800"
36
+ })
37
+ }, {
38
+ section: "business",
39
+ payload: setNewsletterPayload({
40
+ code: "TNL-103",
41
+ headline: "Business briefing",
42
+ copy: "In-depth analysis and comment on the latest financial and economic news from our award-winning Business teams.",
43
+ imageUri: "https://www.thetimes.co.uk/imageserver/image/methode%2Ftimes%2Fprod%2Fweb%2Fbin%2F306637af-2b6f-48fc-b264-d661b2067818.jpg?resize=800"
44
+ })
45
+ }, {
46
+ section: "scotland",
47
+ payload: setNewsletterPayload({
48
+ code: "TNL-134",
49
+ headline: "Editor’s Choice – Scotland",
50
+ copy: "The biggest stories of the week from The Times and The Sunday Times Scotland, delivered directly to you every Saturday morning.",
51
+ imageUri: "https://www.thetimes.co.uk/imageserver/image/methode%2Ftimes%2Fprod%2Fweb%2Fbin%2F5777acf9-363f-4aa3-8176-1ea09cdae7d6.jpg?resize=800"
52
+ })
53
+ }, {
54
+ section: "money",
55
+ payload: setNewsletterPayload({
56
+ code: "TNL-107",
57
+ headline: "Money newsletter",
58
+ copy: "We'll send you the latest personal finance and investment news to make your money go further.",
59
+ imageUri: "https://www.thetimes.co.uk/imageserver/image/methode%2Ftimes%2Fprod%2Fweb%2Fbin%2Ffd44b15f-2fb8-4e5d-b409-315648b10646.jpg?resize=800"
60
+ })
61
+ }, {
62
+ section: "law",
63
+ payload: setNewsletterPayload({
64
+ code: "TNL-121",
65
+ headline: "The Brief",
66
+ copy: "A weekly overview of the significant issues in Law, drawing attention to expert analysis and exclusive commentary.",
67
+ imageUri: "https://www.thetimes.co.uk/imageserver/image/methode%2Ftimes%2Fprod%2Fweb%2Fbin%2F27a231b4-5658-4852-a603-37c5210a946e.jpg?resize=800"
68
+ })
69
+ }, {
70
+ section: "home",
71
+ payload: setNewsletterPayload({
72
+ code: "TNL-113",
73
+ headline: "Property newsletter",
74
+ copy: "Get expert advice and find out what's really happening in the property market.",
75
+ imageUri: "https://www.thetimes.co.uk/imageserver/image/methode%2Ftimes%2Fprod%2Fweb%2Fbin%2F42a688ec-f9ba-4684-90ce-17a9d1c19d8a.jpg?resize=800"
76
+ })
77
+ }, {
78
+ section: "bricks & mortar",
79
+ payload: setNewsletterPayload({
80
+ code: "TNL-113",
81
+ headline: "Property newsletter",
82
+ copy: "Get expert advice and find out what's really happening in the property market.",
83
+ imageUri: "https://www.thetimes.co.uk/imageserver/image/methode%2Ftimes%2Fprod%2Fweb%2Fbin%2F42a688ec-f9ba-4684-90ce-17a9d1c19d8a.jpg?resize=800"
84
+ })
85
+ }];
86
+
87
+ const getNewsletterPuff = section => {
88
+ const newsletter = newslettersBySection.find(item => item.section === section.toLowerCase());
89
+ return newsletter ? newsletter.payload : undefined;
90
+ };
91
+
92
+ const newsletterPuffExists = children => children.find(item => item.name === "interactive" && item.attributes.element.value === "newsletter-puff");
93
+
94
+ const insertPaywall = (paywall, insertBefore, newsletterPuff) => _objectSpread(_objectSpread({}, paywall), {}, {
95
+ children: paywall.children.reduce((acc, item, index) => index === insertBefore ? [...acc, newsletterPuff, item] : [...acc, item], [])
96
+ });
97
+
98
+ const consecutiveParagraphs = children => {
99
+ const index = children.findIndex(item => item.name !== "paragraph");
100
+ return index === -1 ? children.length : index;
101
+ };
102
+
103
+ const checkParagraphs = (children, paywall) => {
104
+ const paywallIndex = children.findIndex(item => item.name === "paywall");
105
+ const paragraphs = consecutiveParagraphs(children);
106
+ const paywallParagraphs = consecutiveParagraphs(paywall.children);
107
+
108
+ if (paragraphs >= 5) {
109
+ return true;
110
+ }
111
+
112
+ if (paywallIndex !== paragraphs) {
113
+ return false;
114
+ }
115
+
116
+ return paragraphs + paywallParagraphs >= 5;
117
+ };
118
+
119
+ const insertNewsletterPuff = (section, isPreview, flags) => children => {
120
+ if (isPreview || (0, _dataHelper.getIsLiveOrBreakingFlag)(flags)) return children;
121
+ const newsletterPuff = getNewsletterPuff(section);
122
+ if (!newsletterPuff) return children;
123
+ const paywall = children.find(item => item.name === "paywall");
124
+ if (!paywall) return children;
125
+
126
+ if (newsletterPuffExists(children) || newsletterPuffExists(paywall.children)) {
127
+ return children;
128
+ }
129
+
130
+ if (!checkParagraphs(children, paywall)) {
131
+ return children;
132
+ }
133
+
134
+ const insertIndex = 3;
135
+ return children.reduce((acc, item, index) => {
136
+ if (index === insertIndex) return [...acc, newsletterPuff, item];
137
+ if (item.name === "paywall") return [...acc, insertPaywall(item, insertIndex - index, newsletterPuff)];
138
+ return [...acc, item];
139
+ }, []);
140
+ };
141
+
142
+ var _default = insertNewsletterPuff;
143
+ exports.default = _default;
@@ -1 +1,106 @@
1
- var _interopRequireDefault=require("@babel/runtime/helpers/interopRequireDefault");Object.defineProperty(exports,"__esModule",{value:true});exports.default=exports.getActiveArticleFlags=exports.getIsLiveOrBreakingFlag=exports.getSharedStatus=exports.getRegistrationType=void 0;var _defineProperty2=_interopRequireDefault(require("@babel/runtime/helpers/defineProperty"));var _extends2=_interopRequireDefault(require("@babel/runtime/helpers/extends"));var _toConsumableArray2=_interopRequireDefault(require("@babel/runtime/helpers/toConsumableArray"));function ownKeys(object,enumerableOnly){var keys=Object.keys(object);if(Object.getOwnPropertySymbols){var symbols=Object.getOwnPropertySymbols(object);if(enumerableOnly){symbols=symbols.filter(function(sym){return Object.getOwnPropertyDescriptor(object,sym).enumerable;});}keys.push.apply(keys,symbols);}return keys;}function _objectSpread(target){for(var i=1;i<arguments.length;i++){var source=arguments[i]!=null?arguments[i]:{};if(i%2){ownKeys(Object(source),true).forEach(function(key){(0,_defineProperty2.default)(target,key,source[key]);});}else if(Object.getOwnPropertyDescriptors){Object.defineProperties(target,Object.getOwnPropertyDescriptors(source));}else{ownKeys(Object(source)).forEach(function(key){Object.defineProperty(target,key,Object.getOwnPropertyDescriptor(source,key));});}}return target;}var append=function append(_ref,list){var data=_ref.data,type=_ref.type;if(!data){return list;}return[].concat((0,_toConsumableArray2.default)(list),[{data:data,type:type}]);};var prepareDataForListView=function prepareDataForListView(articleData){var relatedArticleSliceData=articleData.relatedArticleSlice?{relatedArticleSlice:articleData.relatedArticleSlice}:null;var commentsData={articleId:articleData.id,commentsEnabled:articleData.commentsEnabled,url:articleData.url};var data=articleData.content?[].concat((0,_toConsumableArray2.default)(articleData.content.map(function(rowData,index){var item={data:(0,_extends2.default)({},rowData),index:index,type:"articleBodyRow"};if(rowData.name==="ad"){item.data.attributes=_objectSpread(_objectSpread({},item.data.attributes),{contextUrl:articleData.url,section:articleData.section});}return item;})),[{data:{topics:articleData.topics},type:"topics"}]):[];return append({data:{articleId:articleData.id,articleUrl:articleData.url},type:"articleExtrasRow"},append({data:commentsData,type:"comments"},append({data:relatedArticleSliceData,type:"relatedArticleSlice"},data)));};var getRegistrationType=function getRegistrationType(){var user=global.nuk&&global.nuk.user||{};return user&&user.registrationType?user.registrationType:"";};exports.getRegistrationType=getRegistrationType;var getSharedStatus=function getSharedStatus(){var user=global.nuk&&global.nuk.user||{};return user&&user.isShared?"yes":"no";};exports.getSharedStatus=getSharedStatus;var getIsLiveOrBreakingFlag=function getIsLiveOrBreakingFlag(flags){var liveOrBreaking=["LIVE","BREAKING"];var findFlag=flags&&flags.find(function(flag){return liveOrBreaking.includes(flag.type.toUpperCase());});return findFlag&&findFlag.type;};exports.getIsLiveOrBreakingFlag=getIsLiveOrBreakingFlag;var getActiveArticleFlags=function getActiveArticleFlags(flags){if(!flags){return[];}var findFlag=flags.find(function(flag){return flag.expiryTime===null||new Date().getTime()<new Date(flag.expiryTime).getTime();});return findFlag&&findFlag.type&&findFlag.type.toLowerCase();};exports.getActiveArticleFlags=getActiveArticleFlags;var _default=prepareDataForListView;exports.default=_default;
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports.default = exports.getActiveArticleFlags = exports.getIsLiveOrBreakingFlag = exports.getSharedStatus = exports.getRegistrationType = void 0;
7
+
8
+ function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (enumerableOnly) { symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; }); } keys.push.apply(keys, symbols); } return keys; }
9
+
10
+ function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; if (i % 2) { ownKeys(Object(source), true).forEach(function (key) { _defineProperty(target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } } return target; }
11
+
12
+ function _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }
13
+
14
+ const append = (_ref, list) => {
15
+ let data = _ref.data,
16
+ type = _ref.type;
17
+
18
+ if (!data) {
19
+ return list;
20
+ }
21
+
22
+ return [...list, {
23
+ data,
24
+ type
25
+ }];
26
+ };
27
+
28
+ const prepareDataForListView = articleData => {
29
+ const relatedArticleSliceData = articleData.relatedArticleSlice ? {
30
+ relatedArticleSlice: articleData.relatedArticleSlice
31
+ } : null;
32
+ const commentsData = {
33
+ articleId: articleData.id,
34
+ commentsEnabled: articleData.commentsEnabled,
35
+ url: articleData.url
36
+ };
37
+ const data = articleData.content ? [...articleData.content.map((rowData, index) => {
38
+ const item = {
39
+ data: Object.assign({}, rowData),
40
+ index,
41
+ type: "articleBodyRow"
42
+ };
43
+
44
+ if (rowData.name === "ad") {
45
+ item.data.attributes = _objectSpread(_objectSpread({}, item.data.attributes), {
46
+ contextUrl: articleData.url,
47
+ section: articleData.section
48
+ });
49
+ }
50
+
51
+ return item;
52
+ }), {
53
+ data: {
54
+ topics: articleData.topics
55
+ },
56
+ type: "topics"
57
+ }] : [];
58
+ return append({
59
+ data: {
60
+ articleId: articleData.id,
61
+ articleUrl: articleData.url
62
+ },
63
+ type: "articleExtrasRow"
64
+ }, append({
65
+ data: commentsData,
66
+ type: "comments"
67
+ }, append({
68
+ data: relatedArticleSliceData,
69
+ type: "relatedArticleSlice"
70
+ }, data)));
71
+ };
72
+
73
+ const getRegistrationType = () => {
74
+ const user = global.nuk && global.nuk.user || {};
75
+ return user && user.registrationType ? user.registrationType : "";
76
+ };
77
+
78
+ exports.getRegistrationType = getRegistrationType;
79
+
80
+ const getSharedStatus = () => {
81
+ const user = global.nuk && global.nuk.user || {};
82
+ return user && user.isShared ? "yes" : "no";
83
+ };
84
+
85
+ exports.getSharedStatus = getSharedStatus;
86
+
87
+ const getIsLiveOrBreakingFlag = flags => {
88
+ const liveOrBreaking = ["LIVE", "BREAKING"];
89
+ const findFlag = flags && flags.find(flag => liveOrBreaking.includes(flag.type.toUpperCase()));
90
+ return findFlag && findFlag.type;
91
+ };
92
+
93
+ exports.getIsLiveOrBreakingFlag = getIsLiveOrBreakingFlag;
94
+
95
+ const getActiveArticleFlags = flags => {
96
+ if (!flags) {
97
+ return [];
98
+ }
99
+
100
+ const findFlag = flags.find(flag => flag.expiryTime === null || new Date().getTime() < new Date(flag.expiryTime).getTime());
101
+ return findFlag && findFlag.type && findFlag.type.toLowerCase();
102
+ };
103
+
104
+ exports.getActiveArticleFlags = getActiveArticleFlags;
105
+ var _default = prepareDataForListView;
106
+ exports.default = _default;
package/dist/gutter.js CHANGED
@@ -1 +1,43 @@
1
- var _interopRequireDefault=require("@babel/runtime/helpers/interopRequireDefault");Object.defineProperty(exports,"__esModule",{value:true});exports.default=exports.maxWidth=void 0;var _react=_interopRequireDefault(require("react"));var _propTypes=_interopRequireDefault(require("prop-types"));var _utils=require("@times-components/utils");var _tsStyleguide=require("@times-components/ts-styleguide");var _shared=_interopRequireDefault(require("./styles/shared"));var _jsxFileName="/home/circleci/project/packages/article-skeleton/src/gutter.js";var maxWidth=_tsStyleguide.tabletWidthMax;exports.maxWidth=maxWidth;var Gutter=function Gutter(_ref){var children=_ref.children,style=_ref.style;return _react.default.createElement(_utils.TcView,{style:[style,_shared.default.gutter],__source:{fileName:_jsxFileName,lineNumber:10,columnNumber:3}},children);};Gutter.propTypes={children:_propTypes.default.node.isRequired,style:_propTypes.default.objectOf({overflow:_propTypes.default.string})};Gutter.defaultProps={style:{overflow:"hidden"}};var _default=Gutter;exports.default=_default;
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports.default = exports.maxWidth = void 0;
7
+
8
+ var _react = _interopRequireDefault(require("react"));
9
+
10
+ var _propTypes = _interopRequireDefault(require("prop-types"));
11
+
12
+ var _utils = require("@times-components/utils");
13
+
14
+ var _tsStyleguide = require("@times-components/ts-styleguide");
15
+
16
+ var _shared = _interopRequireDefault(require("./styles/shared"));
17
+
18
+ function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
19
+
20
+ const maxWidth = _tsStyleguide.tabletWidthMax;
21
+ exports.maxWidth = maxWidth;
22
+
23
+ const Gutter = _ref => {
24
+ let children = _ref.children,
25
+ style = _ref.style;
26
+ return /*#__PURE__*/_react.default.createElement(_utils.TcView, {
27
+ style: [style, _shared.default.gutter]
28
+ }, children);
29
+ };
30
+
31
+ Gutter.propTypes = {
32
+ children: _propTypes.default.node.isRequired,
33
+ style: _propTypes.default.objectOf({
34
+ overflow: _propTypes.default.string
35
+ })
36
+ };
37
+ Gutter.defaultProps = {
38
+ style: {
39
+ overflow: "hidden"
40
+ }
41
+ };
42
+ var _default = Gutter;
43
+ exports.default = _default;