react-pdf-html-flabs-2 1.0.6 → 1.0.9

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.
@@ -0,0 +1 @@
1
+ export declare function replaceText(input: string): string;
@@ -0,0 +1,17 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.replaceText = void 0;
4
+ function replaceText(input) {
5
+ const replaceProps = [
6
+ {
7
+ _p: '·',
8
+ _v: '<span style="font-weight:600;">.</span>',
9
+ },
10
+ ];
11
+ replaceProps.forEach((prop) => {
12
+ input = input.replace(new RegExp(prop._p, 'g'), prop._v);
13
+ });
14
+ return input;
15
+ }
16
+ exports.replaceText = replaceText;
17
+ //# sourceMappingURL=htmlOverrides.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"htmlOverrides.js","sourceRoot":"","sources":["../src/htmlOverrides.ts"],"names":[],"mappings":";;;AAAA,SAAgB,WAAW,CAAC,KAAa;IACvC,MAAM,YAAY,GAAG;QACnB;YACE,EAAE,EAAE,UAAU;YACd,EAAE,EAAE,yCAAyC;SAC9C;KACF,CAAC;IACF,YAAY,CAAC,OAAO,CAAC,CAAC,IAAI,EAAE,EAAE;QAC5B,KAAK,GAAG,KAAK,CAAC,OAAO,CAAC,IAAI,MAAM,CAAC,IAAI,CAAC,EAAE,EAAE,GAAG,CAAC,EAAE,IAAI,CAAC,EAAE,CAAC,CAAC;IAC3D,CAAC,CAAC,CAAC;IACH,OAAO,KAAK,CAAC;AACf,CAAC;AAXD,kCAWC","sourcesContent":["export function replaceText(input: string): string {\n const replaceProps = [\n {\n _p: '&middot;',\n _v: '<span style=\"font-weight:600;\">.</span>',\n },\n ];\n replaceProps.forEach((prop) => {\n input = input.replace(new RegExp(prop._p, 'g'), prop._v);\n });\n return input;\n}\n"]}
package/dist/parse.js CHANGED
@@ -7,6 +7,7 @@ exports.convertNode = exports.convertElementStyle = exports.convertStylesheet =
7
7
  const node_html_parser_1 = require("node-html-parser");
8
8
  const css_tree_1 = __importDefault(require("css-tree"));
9
9
  const supportedStyles_1 = __importDefault(require("./supportedStyles"));
10
+ const htmlOverrides_1 = require("./htmlOverrides");
10
11
  const camelize = require('camelize');
11
12
  const convertRule = (rule, source = 'style') => {
12
13
  const declarations = rule.children
@@ -160,7 +161,8 @@ const convertNode = (node) => {
160
161
  };
161
162
  exports.convertNode = convertNode;
162
163
  const parseHtml = (text) => {
163
- const html = (0, node_html_parser_1.parse)(text, { comment: false });
164
+ const overideText = (0, htmlOverrides_1.replaceText)(text);
165
+ const html = (0, node_html_parser_1.parse)(overideText, { comment: false });
164
166
  const stylesheets = html
165
167
  .querySelectorAll('style')
166
168
  .map((styleNode) => styleNode.childNodes.map((textNode) => textNode.rawText.trim()).join('\n'))
package/dist/parse.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"parse.js","sourceRoot":"","sources":["../src/parse.ts"],"names":[],"mappings":"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","sourcesContent":["import {\n HTMLElement,\n Node as HTMLNode,\n NodeType,\n parse,\n TextNode,\n} from 'node-html-parser';\nimport { Tag } from './tags';\nimport cssTree, { Block, Declaration, List, Rule, StyleSheet } from 'css-tree';\nimport supportedStyles from './supportedStyles';\nimport { HtmlStyle, HtmlStyles } from './styles';\nconst camelize = require('camelize');\n\nexport type HtmlContent = (HtmlElement | string)[];\n\nexport type HtmlElement = HTMLElement & {\n tag: Tag | 'string';\n parentNode: HtmlElement;\n style: HtmlStyle[];\n content: HtmlContent;\n indexOfType: number;\n querySelectorAll: (selector: string) => HtmlElement[];\n querySelector: (selector: string) => HtmlElement;\n};\n\nexport const convertRule = (\n rule: Block,\n source: string = 'style'\n): HtmlStyle => {\n const declarations = rule.children\n .filter((declaration) => declaration.type === 'Declaration')\n .toArray() as Declaration[];\n\n return declarations\n .map((entry) => ({\n ...entry,\n property: camelize(entry.property as string),\n }))\n .reduce((style, { property, value }: Declaration) => {\n let valueString = cssTree.generate(value);\n if (property && value !== undefined) {\n if (property == 'fontFamily') {\n valueString = valueString.replace(/[\"']+/g, '');\n if (valueString.includes(',')) {\n const reduced = valueString.split(',', 2)[0];\n // console.warn(\n // `react-pdf doesn't support fontFamily lists like \"${valueString}\". Reducing to \"${reduced}\".`\n // );\n }\n return style;\n } else if (!supportedStyles.includes(property)) {\n if (\n (property === 'background' &&\n /^#?[a-zA-Z0-9]+$/.test(valueString)) ||\n /^rgba?\\([0-9, ]+\\)$/i.test(valueString) ||\n /^hsla?\\([0-9.%, ]+\\)$/i.test(valueString)\n ) {\n property = 'backgroundColor';\n } else {\n // console.warn(`${source}: Found unsupported style \"${property}\"`, {\n // property,\n // value,\n // });\n return style;\n }\n }\n if (property.startsWith('border')) {\n if (typeof valueString === 'string' && valueString.trim() !== '') {\n const borderParts = valueString.split(' ').filter(Boolean);\n const widthRegex = /^\\d+(\\.\\d+)?(px|pt|em|rem|%)?$/i;\n const styleRegex =\n /^(solid|dashed|dotted|double|groove|ridge|inset|outset|none|hidden)$/i;\n const colorRegex = /^#|rgb|rgba|hsl|hsla|[a-zA-Z]+$/;\n\n let width = '1px';\n let style = 'solid';\n let color = 'black';\n\n let explicitNone = false;\n\n if (borderParts.length === 3) {\n borderParts.forEach((part) => {\n const partLower = part.toLowerCase();\n if (widthRegex.test(partLower)) {\n width = part;\n } else if (styleRegex.test(partLower)) {\n if (partLower === 'none' || partLower === 'hidden') {\n explicitNone = true;\n } else {\n style = partLower;\n }\n } else if (colorRegex.test(part)) {\n color = part;\n }\n });\n valueString = `${width} ${style} ${color}`;\n }\n {\n console.warn(\n `${source}: Unexpected border format \"${valueString}\"`\n );\n }\n\n if (explicitNone) {\n return style; // ✅ do not apply this style at all\n }\n } else {\n console.warn(`${source}: Invalid border value \"${valueString}\"`);\n return style;\n }\n }\n\n if (property == 'border' && valueString == 'none') valueString = '0px';\n style[property as keyof HtmlStyle] = valueString;\n }\n return style;\n }, {} as HtmlStyle);\n};\n\nexport const convertStylesheet = (stylesheet: string): HtmlStyles => {\n const response = {} as HtmlStyles;\n try {\n const parsed = cssTree.parse(stylesheet) as StyleSheet;\n const rules = parsed.children.filter(\n (rule) => rule.type === 'Rule' && rule.prelude?.type === 'SelectorList'\n ) as List<Rule>;\n rules.forEach((rule) => {\n const style = convertRule(rule.block);\n if (rule.prelude.type !== 'SelectorList') {\n return;\n }\n rule.prelude.children.forEach((selector) => {\n const selectorString = cssTree.generate(selector);\n response[selectorString] = style;\n });\n });\n } catch (e) {\n console.error(`Error parsing stylesheet: \"${stylesheet}\"`, e);\n }\n return response;\n};\n\nexport const convertElementStyle = (\n styleAttr: string,\n tag: string\n): HtmlStyle | undefined => {\n try {\n const parsed = cssTree.parse(`${tag} { ${styleAttr} }`) as StyleSheet;\n const rules = parsed.children.filter(\n (rule) => rule.type === 'Rule' && rule.prelude?.type === 'SelectorList'\n ) as List<Rule>;\n const firstRule = rules.first();\n return firstRule ? convertRule(firstRule.block, tag) : undefined;\n } catch (e) {\n console.error(\n `Error parsing style attribute \"${styleAttr}\" for tag: ${tag}`,\n e\n );\n }\n};\n\nexport const convertNode = (node: HTMLNode): HtmlElement | string => {\n if (node.nodeType === NodeType.TEXT_NODE) {\n return (node as TextNode).rawText;\n }\n if (node.nodeType === NodeType.COMMENT_NODE) {\n return '';\n }\n if (node.nodeType !== NodeType.ELEMENT_NODE) {\n throw new Error('Not sure what this is');\n }\n const html = node as HTMLElement;\n const content = html.childNodes.map(convertNode);\n const kindCounters: Record<string, number> = {};\n content.forEach((child) => {\n if (typeof child !== 'string') {\n child.indexOfType =\n child.tag in kindCounters\n ? (kindCounters[child.tag] = kindCounters[child.tag] + 1)\n : (kindCounters[child.tag] = 0);\n }\n });\n\n let style: HtmlStyle | undefined;\n if (html.attributes.style && html.attributes.style.trim()) {\n style = convertElementStyle(html.attributes.style, html.tagName);\n }\n\n return Object.assign(html, {\n tag: (html.tagName || '').toLowerCase() as Tag | string,\n style: style ? [style] : [],\n content,\n indexOfType: 0,\n }) as HtmlElement;\n};\n\nconst parseHtml = (\n text: string\n): { stylesheets: HtmlStyles[]; rootElement: HtmlElement } => {\n const html = parse(text, { comment: false });\n const stylesheets = html\n .querySelectorAll('style')\n .map((styleNode) =>\n styleNode.childNodes.map((textNode) => textNode.rawText.trim()).join('\\n')\n )\n .filter((styleText) => !!styleText)\n .map(convertStylesheet);\n return {\n stylesheets,\n rootElement: convertNode(html) as HtmlElement,\n };\n};\n\nexport default parseHtml;\n"]}
1
+ {"version":3,"file":"parse.js","sourceRoot":"","sources":["../src/parse.ts"],"names":[],"mappings":"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","sourcesContent":["import {\n HTMLElement,\n Node as HTMLNode,\n NodeType,\n parse,\n TextNode,\n} from 'node-html-parser';\nimport { Tag } from './tags';\nimport cssTree, { Block, Declaration, List, Rule, StyleSheet } from 'css-tree';\nimport supportedStyles from './supportedStyles';\nimport { HtmlStyle, HtmlStyles } from './styles';\nimport { replaceText } from './htmlOverrides';\nconst camelize = require('camelize');\n\nexport type HtmlContent = (HtmlElement | string)[];\n\nexport type HtmlElement = HTMLElement & {\n tag: Tag | 'string';\n parentNode: HtmlElement;\n style: HtmlStyle[];\n content: HtmlContent;\n indexOfType: number;\n querySelectorAll: (selector: string) => HtmlElement[];\n querySelector: (selector: string) => HtmlElement;\n};\n\nexport const convertRule = (\n rule: Block,\n source: string = 'style'\n): HtmlStyle => {\n const declarations = rule.children\n .filter((declaration) => declaration.type === 'Declaration')\n .toArray() as Declaration[];\n\n return declarations\n .map((entry) => ({\n ...entry,\n property: camelize(entry.property as string),\n }))\n .reduce((style, { property, value }: Declaration) => {\n let valueString = cssTree.generate(value);\n if (property && value !== undefined) {\n if (property == 'fontFamily') {\n valueString = valueString.replace(/[\"']+/g, '');\n if (valueString.includes(',')) {\n const reduced = valueString.split(',', 2)[0];\n // console.warn(\n // `react-pdf doesn't support fontFamily lists like \"${valueString}\". Reducing to \"${reduced}\".`\n // );\n }\n return style;\n } else if (!supportedStyles.includes(property)) {\n if (\n (property === 'background' &&\n /^#?[a-zA-Z0-9]+$/.test(valueString)) ||\n /^rgba?\\([0-9, ]+\\)$/i.test(valueString) ||\n /^hsla?\\([0-9.%, ]+\\)$/i.test(valueString)\n ) {\n property = 'backgroundColor';\n } else {\n // console.warn(`${source}: Found unsupported style \"${property}\"`, {\n // property,\n // value,\n // });\n return style;\n }\n }\n if (property.startsWith('border')) {\n if (typeof valueString === 'string' && valueString.trim() !== '') {\n const borderParts = valueString.split(' ').filter(Boolean);\n const widthRegex = /^\\d+(\\.\\d+)?(px|pt|em|rem|%)?$/i;\n const styleRegex =\n /^(solid|dashed|dotted|double|groove|ridge|inset|outset|none|hidden)$/i;\n const colorRegex = /^#|rgb|rgba|hsl|hsla|[a-zA-Z]+$/;\n\n let width = '1px';\n let style = 'solid';\n let color = 'black';\n\n let explicitNone = false;\n\n if (borderParts.length === 3) {\n borderParts.forEach((part) => {\n const partLower = part.toLowerCase();\n if (widthRegex.test(partLower)) {\n width = part;\n } else if (styleRegex.test(partLower)) {\n if (partLower === 'none' || partLower === 'hidden') {\n explicitNone = true;\n } else {\n style = partLower;\n }\n } else if (colorRegex.test(part)) {\n color = part;\n }\n });\n valueString = `${width} ${style} ${color}`;\n }\n {\n console.warn(\n `${source}: Unexpected border format \"${valueString}\"`\n );\n }\n\n if (explicitNone) {\n return style; // ✅ do not apply this style at all\n }\n } else {\n console.warn(`${source}: Invalid border value \"${valueString}\"`);\n return style;\n }\n }\n\n if (property == 'border' && valueString == 'none') valueString = '0px';\n style[property as keyof HtmlStyle] = valueString;\n }\n return style;\n }, {} as HtmlStyle);\n};\n\nexport const convertStylesheet = (stylesheet: string): HtmlStyles => {\n const response = {} as HtmlStyles;\n try {\n const parsed = cssTree.parse(stylesheet) as StyleSheet;\n const rules = parsed.children.filter(\n (rule) => rule.type === 'Rule' && rule.prelude?.type === 'SelectorList'\n ) as List<Rule>;\n rules.forEach((rule) => {\n const style = convertRule(rule.block);\n if (rule.prelude.type !== 'SelectorList') {\n return;\n }\n rule.prelude.children.forEach((selector) => {\n const selectorString = cssTree.generate(selector);\n response[selectorString] = style;\n });\n });\n } catch (e) {\n console.error(`Error parsing stylesheet: \"${stylesheet}\"`, e);\n }\n return response;\n};\n\nexport const convertElementStyle = (\n styleAttr: string,\n tag: string\n): HtmlStyle | undefined => {\n try {\n const parsed = cssTree.parse(`${tag} { ${styleAttr} }`) as StyleSheet;\n const rules = parsed.children.filter(\n (rule) => rule.type === 'Rule' && rule.prelude?.type === 'SelectorList'\n ) as List<Rule>;\n const firstRule = rules.first();\n return firstRule ? convertRule(firstRule.block, tag) : undefined;\n } catch (e) {\n console.error(\n `Error parsing style attribute \"${styleAttr}\" for tag: ${tag}`,\n e\n );\n }\n};\n\nexport const convertNode = (node: HTMLNode): HtmlElement | string => {\n if (node.nodeType === NodeType.TEXT_NODE) {\n return (node as TextNode).rawText;\n }\n if (node.nodeType === NodeType.COMMENT_NODE) {\n return '';\n }\n if (node.nodeType !== NodeType.ELEMENT_NODE) {\n throw new Error('Not sure what this is');\n }\n const html = node as HTMLElement;\n const content = html.childNodes.map(convertNode);\n const kindCounters: Record<string, number> = {};\n content.forEach((child) => {\n if (typeof child !== 'string') {\n child.indexOfType =\n child.tag in kindCounters\n ? (kindCounters[child.tag] = kindCounters[child.tag] + 1)\n : (kindCounters[child.tag] = 0);\n }\n });\n\n let style: HtmlStyle | undefined;\n if (html.attributes.style && html.attributes.style.trim()) {\n style = convertElementStyle(html.attributes.style, html.tagName);\n }\n\n return Object.assign(html, {\n tag: (html.tagName || '').toLowerCase() as Tag | string,\n style: style ? [style] : [],\n content,\n indexOfType: 0,\n }) as HtmlElement;\n};\n\nconst parseHtml = (\n text: string\n): { stylesheets: HtmlStyles[]; rootElement: HtmlElement } => {\n const overideText = replaceText(text);\n const html = parse(overideText, { comment: false });\n const stylesheets = html\n .querySelectorAll('style')\n .map((styleNode) =>\n styleNode.childNodes.map((textNode) => textNode.rawText.trim()).join('\\n')\n )\n .filter((styleText) => !!styleText)\n .map(convertStylesheet);\n return {\n stylesheets,\n rootElement: convertNode(html) as HtmlElement,\n };\n};\n\nexport default parseHtml;\n"]}
package/dist/renderers.js CHANGED
@@ -131,7 +131,15 @@ const renderers = {
131
131
  dimensions.height = height;
132
132
  }
133
133
  const finalStyles = Object.assign({}, ...style, dimensions);
134
- return react_1.default.createElement(renderer_1.Image, { style: finalStyles, src: element.attributes.src });
134
+ return (react_1.default.createElement(renderer_1.Image, { style: finalStyles, source: {
135
+ uri: element.attributes.src,
136
+ body: null,
137
+ method: 'GET',
138
+ headers: {
139
+ 'Cache-Control': 'no-cache',
140
+ 'Access-Control-Allow-Origin': '*',
141
+ },
142
+ } }));
135
143
  },
136
144
  table: ({ element, style, children }) => {
137
145
  var _a;
@@ -1 +1 @@
1
- {"version":3,"file":"renderers.js","sourceRoot":"","sources":["../src/renderers.tsx"],"names":[],"mappings":"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","sourcesContent":["import React from 'react';\nimport { Link, Text, View, Image } from '@react-pdf/renderer';\nimport { HtmlRenderer, HtmlRenderers } from './render';\nimport { HtmlElement } from './parse';\nimport { HtmlStyle } from './styles';\nimport { lowerAlpha, orderedAlpha, upperAlpha } from './ordered.type';\n\nexport const renderNoop: HtmlRenderer = ({ children }) => <></>;\n\nexport const renderPassThrough: React.FC<React.PropsWithChildren<any>> = ({\n children,\n}) => children;\n\nexport const renderBlock: HtmlRenderer = ({ style, children }) => (\n <View style={style}>{children}</View>\n);\n\nexport const renderInline: HtmlRenderer = ({ style, children }) => (\n <Text style={style}>{children}</Text>\n);\n\nexport const renderCell: HtmlRenderer = ({ style, element, children }) => {\n const table = element.closest('table') as HtmlElement | undefined;\n const tableAttributes = table?.attributes as any;\n if (!table) {\n throw new Error('td element rendered outside of a table');\n }\n const combinedStyle = style.reduce(\n (acc, current) => Object.assign(acc, current),\n {} as HtmlStyle\n );\n const tableStyles = table.style.reduce(\n (combined, tableStyle) => Object.assign(combined, tableStyle),\n {} as HtmlStyle\n );\n\n const baseStyles: HtmlStyle = {\n border: tableStyles.border,\n borderColor: tableStyles.borderColor,\n borderWidth: tableStyles.borderWidth,\n borderStyle: tableStyles.borderStyle,\n };\n if (\n (tableStyles as any).borderSpacing &&\n (tableStyles as any).borderCollapse !== 'collapse'\n ) {\n baseStyles.borderWidth = tableStyles.borderWidth;\n baseStyles.margin = (tableStyles as any).borderSpacing;\n } else {\n baseStyles.borderRightWidth = 0;\n baseStyles.borderBottomWidth = 0;\n if (element.indexOfType !== 0) {\n baseStyles.borderLeftWidth = tableStyles.borderWidth;\n baseStyles.borderTopWidth = tableStyles.borderWidth;\n }\n }\n\n if (tableAttributes?.border == 0) {\n baseStyles.borderRightWidth = '0px';\n baseStyles.borderBottomWidth = '0px';\n baseStyles.borderTopWidth = '0px';\n baseStyles.borderLeftWidth = '0px';\n }\n const overrides: HtmlStyle = {};\n // if (element.attributes && element.attributes.colspan) {\n // const colspan = parseInt(element.attributes.colspan, 10);\n // if (!isNaN(colspan)) {\n // overrides.flexBasis = colspan;\n // }\n // }\n if (combinedStyle.textAlign == 'center') {\n overrides.alignItems = 'center';\n }\n\n if (combinedStyle.verticalAlign == 'center') {\n overrides.justifyContent = 'center';\n }\n\n const finalStyles = Object.assign({}, baseStyles, combinedStyle, overrides);\n if (!finalStyles.width) finalStyles.flex = 1;\n delete finalStyles.height;\n\n return <View style={finalStyles}>{children}</View>;\n};\n\nconst renderers: HtmlRenderers = {\n style: renderNoop,\n script: renderNoop,\n html: renderPassThrough,\n li: ({ element, stylesheets, style, children }) => {\n const bulletStyles = stylesheets.map((stylesheet) => stylesheet.li_bullet);\n const contentStyles = stylesheets.map(\n (stylesheet) => stylesheet.li_content\n );\n const list: HtmlElement = element.closest('ol, ul') as HtmlElement;\n const ordered = list?.tag === 'ol' || element.parentNode.tag === 'ol';\n const listStyle =\n list?.style?.reduce(\n (combined, listStyle) => Object.assign(combined, listStyle),\n {} as HtmlStyle\n ) || {};\n const itemStyle = element.style.reduce(\n (combined, itemStyle) => Object.assign(combined, itemStyle),\n {} as HtmlStyle\n );\n const listStyleType =\n itemStyle.listStyleType ||\n itemStyle.listStyle ||\n listStyle.listStyleType ||\n listStyle.listStyle ||\n '';\n\n let bullet;\n if (listStyleType.includes('none')) {\n bullet = false;\n } else if (listStyleType.includes('url(')) {\n bullet = (\n <Image\n src={listStyleType.match(/\\((.*?)\\)/)[1].replace(/(['\"])/g, '')}\n />\n );\n } else if (ordered) {\n if (lowerAlpha.includes(listStyleType)) {\n bullet = (\n <Text>{orderedAlpha[element.indexOfType].toLowerCase()}.</Text>\n );\n } else if (upperAlpha.includes(listStyleType)) {\n bullet = (\n <Text>{orderedAlpha[element.indexOfType].toUpperCase()}.</Text>\n );\n } else {\n bullet = <Text>{element.indexOfType + 1}.</Text>;\n }\n } else {\n // if (listStyleType.includes('square')) {\n // bullet = <Text>■</Text>;\n // } else {\n bullet = <Text>•</Text>;\n // }\n }\n return (\n <View style={style}>\n {bullet && <View style={bulletStyles}>{bullet}</View>}\n <View style={contentStyles}>{children}</View>\n </View>\n );\n },\n a: ({ style, element, children }) => (\n <Link style={style} src={element.attributes.href}>\n {children}\n </Link>\n ),\n img: ({ style, element }) => {\n const { width, height } = element.attributes;\n const dimensions: any = {};\n if (width) {\n dimensions.width = width;\n }\n if (height) {\n dimensions.height = height;\n }\n const finalStyles = Object.assign({}, ...style, dimensions);\n return <Image style={finalStyles} src={element.attributes.src} />;\n },\n table: ({ element, style, children }) => {\n const tableStyles = element.style.reduce(\n (combined, tableStyle) => Object.assign(combined, tableStyle),\n {} as HtmlStyle\n );\n const { border } = element.attributes as any;\n const overrides: HtmlStyle = {};\n if (\n !(tableStyles as any).borderSpacing ||\n (tableStyles as any).borderCollapse === 'collapse'\n ) {\n overrides.borderLeftWidth = 0;\n overrides.borderTopWidth = 0;\n }\n\n if (border == 0) {\n overrides.borderWidth = '0px';\n overrides.borderStyle = 'none';\n }\n const borderColor = style.find(\n (s) => s.borderColor && s.borderColor !== 'gray'\n )?.borderColor;\n if (borderColor) {\n overrides.borderColor = borderColor;\n }\n const finalStyles = Object.assign({}, ...style, overrides);\n delete finalStyles.height;\n return <View style={finalStyles}>{children}</View>;\n },\n tr: ({ style, children }) => {\n const finalStyles = Object.assign({}, ...style);\n delete finalStyles.height;\n return (\n <View wrap={true} style={finalStyles}>\n {children}\n </View>\n );\n },\n br: ({ style }) => (\n <Text wrap={true} style={style}>\n {'\\n'}\n </Text>\n ),\n td: renderCell,\n th: renderCell,\n};\n\nexport default renderers;\n"]}
1
+ {"version":3,"file":"renderers.js","sourceRoot":"","sources":["../src/renderers.tsx"],"names":[],"mappings":"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","sourcesContent":["import React from 'react';\nimport { Link, Text, View, Image } from '@react-pdf/renderer';\nimport { HtmlRenderer, HtmlRenderers } from './render';\nimport { HtmlElement } from './parse';\nimport { HtmlStyle } from './styles';\nimport { lowerAlpha, orderedAlpha, upperAlpha } from './ordered.type';\n\nexport const renderNoop: HtmlRenderer = ({ children }) => <></>;\n\nexport const renderPassThrough: React.FC<React.PropsWithChildren<any>> = ({\n children,\n}) => children;\n\nexport const renderBlock: HtmlRenderer = ({ style, children }) => (\n <View style={style}>{children}</View>\n);\n\nexport const renderInline: HtmlRenderer = ({ style, children }) => (\n <Text style={style}>{children}</Text>\n);\n\nexport const renderCell: HtmlRenderer = ({ style, element, children }) => {\n const table = element.closest('table') as HtmlElement | undefined;\n const tableAttributes = table?.attributes as any;\n if (!table) {\n throw new Error('td element rendered outside of a table');\n }\n const combinedStyle = style.reduce(\n (acc, current) => Object.assign(acc, current),\n {} as HtmlStyle\n );\n const tableStyles = table.style.reduce(\n (combined, tableStyle) => Object.assign(combined, tableStyle),\n {} as HtmlStyle\n );\n\n const baseStyles: HtmlStyle = {\n border: tableStyles.border,\n borderColor: tableStyles.borderColor,\n borderWidth: tableStyles.borderWidth,\n borderStyle: tableStyles.borderStyle,\n };\n if (\n (tableStyles as any).borderSpacing &&\n (tableStyles as any).borderCollapse !== 'collapse'\n ) {\n baseStyles.borderWidth = tableStyles.borderWidth;\n baseStyles.margin = (tableStyles as any).borderSpacing;\n } else {\n baseStyles.borderRightWidth = 0;\n baseStyles.borderBottomWidth = 0;\n if (element.indexOfType !== 0) {\n baseStyles.borderLeftWidth = tableStyles.borderWidth;\n baseStyles.borderTopWidth = tableStyles.borderWidth;\n }\n }\n\n if (tableAttributes?.border == 0) {\n baseStyles.borderRightWidth = '0px';\n baseStyles.borderBottomWidth = '0px';\n baseStyles.borderTopWidth = '0px';\n baseStyles.borderLeftWidth = '0px';\n }\n const overrides: HtmlStyle = {};\n // if (element.attributes && element.attributes.colspan) {\n // const colspan = parseInt(element.attributes.colspan, 10);\n // if (!isNaN(colspan)) {\n // overrides.flexBasis = colspan;\n // }\n // }\n if (combinedStyle.textAlign == 'center') {\n overrides.alignItems = 'center';\n }\n\n if (combinedStyle.verticalAlign == 'center') {\n overrides.justifyContent = 'center';\n }\n\n const finalStyles = Object.assign({}, baseStyles, combinedStyle, overrides);\n if (!finalStyles.width) finalStyles.flex = 1;\n delete finalStyles.height;\n\n return <View style={finalStyles}>{children}</View>;\n};\n\nconst renderers: HtmlRenderers = {\n style: renderNoop,\n script: renderNoop,\n html: renderPassThrough,\n li: ({ element, stylesheets, style, children }) => {\n const bulletStyles = stylesheets.map((stylesheet) => stylesheet.li_bullet);\n const contentStyles = stylesheets.map(\n (stylesheet) => stylesheet.li_content\n );\n const list: HtmlElement = element.closest('ol, ul') as HtmlElement;\n const ordered = list?.tag === 'ol' || element.parentNode.tag === 'ol';\n const listStyle =\n list?.style?.reduce(\n (combined, listStyle) => Object.assign(combined, listStyle),\n {} as HtmlStyle\n ) || {};\n const itemStyle = element.style.reduce(\n (combined, itemStyle) => Object.assign(combined, itemStyle),\n {} as HtmlStyle\n );\n const listStyleType =\n itemStyle.listStyleType ||\n itemStyle.listStyle ||\n listStyle.listStyleType ||\n listStyle.listStyle ||\n '';\n\n let bullet;\n if (listStyleType.includes('none')) {\n bullet = false;\n } else if (listStyleType.includes('url(')) {\n bullet = (\n <Image\n src={listStyleType.match(/\\((.*?)\\)/)[1].replace(/(['\"])/g, '')}\n />\n );\n } else if (ordered) {\n if (lowerAlpha.includes(listStyleType)) {\n bullet = (\n <Text>{orderedAlpha[element.indexOfType].toLowerCase()}.</Text>\n );\n } else if (upperAlpha.includes(listStyleType)) {\n bullet = (\n <Text>{orderedAlpha[element.indexOfType].toUpperCase()}.</Text>\n );\n } else {\n bullet = <Text>{element.indexOfType + 1}.</Text>;\n }\n } else {\n // if (listStyleType.includes('square')) {\n // bullet = <Text>■</Text>;\n // } else {\n bullet = <Text>•</Text>;\n // }\n }\n return (\n <View style={style}>\n {bullet && <View style={bulletStyles}>{bullet}</View>}\n <View style={contentStyles}>{children}</View>\n </View>\n );\n },\n a: ({ style, element, children }) => (\n <Link style={style} src={element.attributes.href}>\n {children}\n </Link>\n ),\n img: ({ style, element }) => {\n const { width, height } = element.attributes;\n const dimensions: any = {};\n if (width) {\n dimensions.width = width;\n }\n if (height) {\n dimensions.height = height;\n }\n const finalStyles = Object.assign({}, ...style, dimensions);\n return (\n <Image\n style={finalStyles}\n source={{\n uri: element.attributes.src,\n body: null,\n method: 'GET',\n headers: {\n 'Cache-Control': 'no-cache',\n 'Access-Control-Allow-Origin': '*',\n },\n }}\n />\n );\n },\n table: ({ element, style, children }) => {\n const tableStyles = element.style.reduce(\n (combined, tableStyle) => Object.assign(combined, tableStyle),\n {} as HtmlStyle\n );\n const { border } = element.attributes as any;\n const overrides: HtmlStyle = {};\n if (\n !(tableStyles as any).borderSpacing ||\n (tableStyles as any).borderCollapse === 'collapse'\n ) {\n overrides.borderLeftWidth = 0;\n overrides.borderTopWidth = 0;\n }\n\n if (border == 0) {\n overrides.borderWidth = '0px';\n overrides.borderStyle = 'none';\n }\n const borderColor = style.find(\n (s) => s.borderColor && s.borderColor !== 'gray'\n )?.borderColor;\n if (borderColor) {\n overrides.borderColor = borderColor;\n }\n const finalStyles = Object.assign({}, ...style, overrides);\n delete finalStyles.height;\n return <View style={finalStyles}>{children}</View>;\n },\n tr: ({ style, children }) => {\n const finalStyles = Object.assign({}, ...style);\n delete finalStyles.height;\n return (\n <View wrap={true} style={finalStyles}>\n {children}\n </View>\n );\n },\n br: ({ style }) => (\n <Text wrap={true} style={style}>\n {'\\n'}\n </Text>\n ),\n td: renderCell,\n th: renderCell,\n};\n\nexport default renderers;\n"]}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "react-pdf-html-flabs-2",
3
- "version": "1.0.6",
3
+ "version": "1.0.9",
4
4
  "author": "Harsh",
5
5
  "description": "Html component for react-pdf with CSS support optimized",
6
6
  "keywords": [