@lighthouse/common 4.22.1-canary.109.1383 → 4.23.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/CHANGELOG.md +12 -0
- package/dist/constants.js +1 -1
- package/dist/pdf/helpers/html-transformer/index.js +7 -0
- package/lib/constants.js +1 -1
- package/lib/constants.js.map +1 -1
- package/lib/pdf/helpers/html-transformer/index.js +7 -1
- package/lib/pdf/helpers/html-transformer/index.js.map +1 -1
- package/package.json +1 -1
package/CHANGELOG.md
CHANGED
|
@@ -1,3 +1,15 @@
|
|
|
1
|
+
# 4.23.0 (Wed Jan 18 2023)
|
|
2
|
+
|
|
3
|
+
#### 🚀 Enhancement
|
|
4
|
+
|
|
5
|
+
- 🌳 Feature - PDF HTML Links [#110](https://github.com/Lighthouse-io/common/pull/110) ([@willmcclellan](https://github.com/willmcclellan))
|
|
6
|
+
|
|
7
|
+
#### Authors: 1
|
|
8
|
+
|
|
9
|
+
- Will McClellan ([@willmcclellan](https://github.com/willmcclellan))
|
|
10
|
+
|
|
11
|
+
---
|
|
12
|
+
|
|
1
13
|
# 4.22.0 (Wed Jul 13 2022)
|
|
2
14
|
|
|
3
15
|
#### 🚀 Enhancement
|
package/dist/constants.js
CHANGED
|
@@ -15,5 +15,5 @@ const DEFAULT_PAGE_ORIENTATION = 'portrait';
|
|
|
15
15
|
exports.DEFAULT_PAGE_ORIENTATION = DEFAULT_PAGE_ORIENTATION;
|
|
16
16
|
const DEFAULT_PAGE_SIZE = 'A4';
|
|
17
17
|
exports.DEFAULT_PAGE_SIZE = DEFAULT_PAGE_SIZE;
|
|
18
|
-
const LIGHTHOUSE_LOGO_URL = 'https://
|
|
18
|
+
const LIGHTHOUSE_LOGO_URL = 'https://s3.amazonaws.com/assets-lighthouse-io/img/logo-medium.png';
|
|
19
19
|
exports.LIGHTHOUSE_LOGO_URL = LIGHTHOUSE_LOGO_URL;
|
|
@@ -45,8 +45,10 @@ function convertToPdfMake(obj) {
|
|
|
45
45
|
// the string, so that the styles can be applied
|
|
46
46
|
|
|
47
47
|
const text = (0, _lodash.isArray)(parsed) && parsed.length === 1 && (0, _lodash.isString)(parsed[0]) ? parsed[0] : parsed;
|
|
48
|
+
const link = type === 'tag' && name === 'a' ? obj.attribs.href : undefined;
|
|
48
49
|
return { ...getStyleAttributes(obj),
|
|
49
50
|
[key]: text,
|
|
51
|
+
link,
|
|
50
52
|
preserveLeadingSpaces: true
|
|
51
53
|
};
|
|
52
54
|
}
|
|
@@ -59,6 +61,11 @@ function getStyleAttributes({
|
|
|
59
61
|
if (name === 'ins') result.decoration = 'underline';
|
|
60
62
|
if (name === 'strong') result.bold = true;
|
|
61
63
|
|
|
64
|
+
if (name === 'a') {
|
|
65
|
+
result.decoration = 'underline';
|
|
66
|
+
result.color = 'blue';
|
|
67
|
+
}
|
|
68
|
+
|
|
62
69
|
if (!result.bold && !result.decoration && !result.italics) {
|
|
63
70
|
result.style = name;
|
|
64
71
|
}
|
package/lib/constants.js
CHANGED
|
@@ -4,5 +4,5 @@ export var DEFAULT_SUMMARY_FIELDS_COLUMN_LENGTH = 3;
|
|
|
4
4
|
export var DEFAULT_PAGE_MARGINS = [60, 130, 60, 80];
|
|
5
5
|
export var DEFAULT_PAGE_ORIENTATION = 'portrait';
|
|
6
6
|
export var DEFAULT_PAGE_SIZE = 'A4';
|
|
7
|
-
export var LIGHTHOUSE_LOGO_URL = 'https://
|
|
7
|
+
export var LIGHTHOUSE_LOGO_URL = 'https://s3.amazonaws.com/assets-lighthouse-io/img/logo-medium.png';
|
|
8
8
|
//# sourceMappingURL=constants.js.map
|
package/lib/constants.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/constants.js"],"names":["DEFAULT_IMAGE_COLUMN_LENGTH","DEFAULT_SUMMARY_FIELDS_COLUMN_LENGTH","DEFAULT_PAGE_MARGINS","DEFAULT_PAGE_ORIENTATION","DEFAULT_PAGE_SIZE","LIGHTHOUSE_LOGO_URL"],"mappings":"AAAA;AACA,OAAO,IAAMA,2BAA2B,GAAG,CAApC;AACP,OAAO,IAAMC,oCAAoC,GAAG,CAA7C;AACP,OAAO,IAAMC,oBAAoB,GAAG,CAAC,EAAD,EAAK,GAAL,EAAU,EAAV,EAAc,EAAd,CAA7B;AACP,OAAO,IAAMC,wBAAwB,GAAG,UAAjC;AACP,OAAO,IAAMC,iBAAiB,GAAG,IAA1B;AACP,OAAO,IAAMC,mBAAmB,GAC9B,
|
|
1
|
+
{"version":3,"sources":["../src/constants.js"],"names":["DEFAULT_IMAGE_COLUMN_LENGTH","DEFAULT_SUMMARY_FIELDS_COLUMN_LENGTH","DEFAULT_PAGE_MARGINS","DEFAULT_PAGE_ORIENTATION","DEFAULT_PAGE_SIZE","LIGHTHOUSE_LOGO_URL"],"mappings":"AAAA;AACA,OAAO,IAAMA,2BAA2B,GAAG,CAApC;AACP,OAAO,IAAMC,oCAAoC,GAAG,CAA7C;AACP,OAAO,IAAMC,oBAAoB,GAAG,CAAC,EAAD,EAAK,GAAL,EAAU,EAAV,EAAc,EAAd,CAA7B;AACP,OAAO,IAAMC,wBAAwB,GAAG,UAAjC;AACP,OAAO,IAAMC,iBAAiB,GAAG,IAA1B;AACP,OAAO,IAAMC,mBAAmB,GAC9B,mEADK","sourcesContent":["// pdf\nexport const DEFAULT_IMAGE_COLUMN_LENGTH = 2\nexport const DEFAULT_SUMMARY_FIELDS_COLUMN_LENGTH = 3\nexport const DEFAULT_PAGE_MARGINS = [60, 130, 60, 80]\nexport const DEFAULT_PAGE_ORIENTATION = 'portrait'\nexport const DEFAULT_PAGE_SIZE = 'A4'\nexport const LIGHTHOUSE_LOGO_URL =\n 'https://s3.amazonaws.com/assets-lighthouse-io/img/logo-medium.png'\n"],"file":"constants.js"}
|
|
@@ -41,7 +41,8 @@ export function convertToPdfMake(obj) {
|
|
|
41
41
|
// the string, so that the styles can be applied
|
|
42
42
|
|
|
43
43
|
var text = isArray(parsed) && parsed.length === 1 && isString(parsed[0]) ? parsed[0] : parsed;
|
|
44
|
-
|
|
44
|
+
var link = type === 'tag' && name === 'a' ? obj.attribs.href : undefined;
|
|
45
|
+
return _objectSpread(_objectSpread({}, getStyleAttributes(obj)), {}, (_objectSpread2 = {}, _defineProperty(_objectSpread2, key, text), _defineProperty(_objectSpread2, "link", link), _defineProperty(_objectSpread2, "preserveLeadingSpaces", true), _objectSpread2));
|
|
45
46
|
}
|
|
46
47
|
export function getStyleAttributes(_ref) {
|
|
47
48
|
var _ref$name = _ref.name,
|
|
@@ -51,6 +52,11 @@ export function getStyleAttributes(_ref) {
|
|
|
51
52
|
if (name === 'ins') result.decoration = 'underline';
|
|
52
53
|
if (name === 'strong') result.bold = true;
|
|
53
54
|
|
|
55
|
+
if (name === 'a') {
|
|
56
|
+
result.decoration = 'underline';
|
|
57
|
+
result.color = 'blue';
|
|
58
|
+
}
|
|
59
|
+
|
|
54
60
|
if (!result.bold && !result.decoration && !result.italics) {
|
|
55
61
|
result.style = name;
|
|
56
62
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../../src/pdf/helpers/html-transformer/index.js"],"names":["compact","includes","isArray","isEmpty","isPlainObject","isString","map","reject","htmlparser2","LIST_KEY_MATCHER","NEW_LINE_MATCHER","WHITSPACE_MATCHER","convertToPdfMake","obj","children","data","name","type","trimmed","replace","filtered","parsed","key","text","length","getStyleAttributes","result","italics","decoration","bold","style","parseHtml","html","parseDOM","decodeEntities","toPdf","htmlString","arr"],"mappings":";;;;;;AAAA,SACEA,OADF,EAEEC,QAFF,EAGEC,OAHF,EAIEC,OAJF,EAKEC,aALF,EAMEC,QANF,EAOEC,GAPF,EAQEC,MARF,QASO,QATP;AAUA,SAASC,WAAT,QAA4B,mBAA5B;AAEA,IAAMC,gBAAgB,GAAG,CAAC,IAAD,EAAO,IAAP,CAAzB;AACA,IAAMC,gBAAgB,GAAG,QAAzB,C,CACA;;AACA,IAAMC,iBAAiB,GAAG,aAA1B;AAEA,OAAO,SAASC,gBAAT,CAA0BC,GAA1B,EAA+B;AAAA;;AACpC,MAAI,CAACT,aAAa,CAACS,GAAD,CAAlB,EAAyB;AACvB,WAAO,EAAP;AACD;;AAHmC,sBAKkBA,GALlB,CAK5BC,QAL4B;AAAA,MAK5BA,QAL4B,8BAKjB,EALiB;AAAA,kBAKkBD,GALlB,CAKbE,IALa;AAAA,MAKbA,IALa,0BAKN,EALM;AAAA,kBAKkBF,GALlB,CAKFG,IALE;AAAA,MAKFA,IALE,0BAKK,EALL;AAAA,MAKSC,IALT,GAKkBJ,GALlB,CAKSI,IALT;;AAOpC,MAAIA,IAAI,KAAK,MAAT,IAAmBF,IAAvB,EAA6B;AAC3B,QAAMG,OAAO,GAAGH,IAAI,CAACI,OAAL,CAAaR,iBAAb,EAAgC,EAAhC,CAAhB,CAD2B,CAG3B;AACA;AACA;AACA;;AACA,WAAOO,OAAP;AACD,GAfmC,CAiBpC;;;AACA,MAAME,QAAQ,GAAGb,MAAM,CAACO,QAAD,EAAW,CAAC,MAAD,EAASJ,gBAAT,CAAX,CAAvB;AACA,MAAMW,MAAM,GAAGrB,OAAO,CAACM,GAAG,CAACc,QAAD,EAAWR,gBAAX,CAAJ,CAAtB;AAEA,MAAMU,GAAG,GAAGrB,QAAQ,CAACQ,gBAAD,EAAmBO,IAAnB,CAAR,GAAmCA,IAAnC,GAA0C,MAAtD,CArBoC,CAsBpC;AACA;;AACA,MAAMO,IAAI,GACRrB,OAAO,CAACmB,MAAD,CAAP,IAAmBA,MAAM,CAACG,MAAP,KAAkB,CAArC,IAA0CnB,QAAQ,CAACgB,MAAM,CAAC,CAAD,CAAP,CAAlD,GACIA,MAAM,CAAC,CAAD,CADV,GAEIA,MAHN;AAKA,
|
|
1
|
+
{"version":3,"sources":["../../../../src/pdf/helpers/html-transformer/index.js"],"names":["compact","includes","isArray","isEmpty","isPlainObject","isString","map","reject","htmlparser2","LIST_KEY_MATCHER","NEW_LINE_MATCHER","WHITSPACE_MATCHER","convertToPdfMake","obj","children","data","name","type","trimmed","replace","filtered","parsed","key","text","length","link","attribs","href","undefined","getStyleAttributes","result","italics","decoration","bold","color","style","parseHtml","html","parseDOM","decodeEntities","toPdf","htmlString","arr"],"mappings":"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","sourcesContent":["import {\n compact,\n includes,\n isArray,\n isEmpty,\n isPlainObject,\n isString,\n map,\n reject,\n} from 'lodash'\nimport { htmlparser2 } from 'react-html-parser'\n\nconst LIST_KEY_MATCHER = ['ol', 'ul']\nconst NEW_LINE_MATCHER = /.*\\n.*/\n// NOTE: this will remove all whitespace except spaces\nconst WHITSPACE_MATCHER = /[\\t\\r\\n\\f]/g\n\nexport function convertToPdfMake(obj) {\n if (!isPlainObject(obj)) {\n return ''\n }\n\n const { children = [], data = '', name = '', type } = obj\n\n if (type === 'text' && data) {\n const trimmed = data.replace(WHITSPACE_MATCHER, '')\n\n // NOTE: Originally tried to achieve this by using inline styles, however PDFMake\n // does not support adding margins or padding when applying inline styles\n // (bold/italics/underline). The easiest way to get around this was to add\n // an extra space after text.\n return trimmed\n }\n\n // NOTE: Reject any children that are WYSIWYG carriage returns\n const filtered = reject(children, ['data', NEW_LINE_MATCHER])\n const parsed = compact(map(filtered, convertToPdfMake))\n\n const key = includes(LIST_KEY_MATCHER, name) ? name : 'text'\n // NOTE: If the child is an array with a single text string, we just need to return\n // the string, so that the styles can be applied\n const text =\n isArray(parsed) && parsed.length === 1 && isString(parsed[0])\n ? parsed[0]\n : parsed\n\n const link = type === 'tag' && name === 'a' ? obj.attribs.href : undefined\n\n return {\n ...getStyleAttributes(obj),\n [key]: text,\n link,\n preserveLeadingSpaces: true,\n }\n}\n\nexport function getStyleAttributes({ name = '' }) {\n const result = {}\n if (name === 'em') result.italics = true\n if (name === 'ins') result.decoration = 'underline'\n if (name === 'strong') result.bold = true\n if (name === 'a') {\n result.decoration = 'underline'\n result.color = 'blue'\n }\n\n if (!result.bold && !result.decoration && !result.italics) {\n result.style = name\n }\n\n return result\n}\n\nexport function parseHtml(html) {\n if (isEmpty(html) || !isString(html)) {\n return ''\n }\n\n return htmlparser2.parseDOM(html, { decodeEntities: true })\n}\n\nexport function toPdf(htmlString) {\n if (isEmpty(htmlString) || !isString(htmlString)) {\n return []\n }\n\n const arr = parseHtml(htmlString)\n return compact(map(arr, convertToPdfMake))\n}\n"],"file":"index.js"}
|