Skip to content

Commit

Permalink
Also compile textkit package as ES6 module and fix imports
Browse files Browse the repository at this point in the history
  • Loading branch information
carlobeltrame committed Jun 16, 2022
1 parent 52251bb commit 9e4c7d8
Show file tree
Hide file tree
Showing 10 changed files with 131 additions and 31 deletions.
17 changes: 9 additions & 8 deletions packages/layout/src/svg/layoutText.js
Original file line number Diff line number Diff line change
@@ -1,12 +1,13 @@
import * as P from '@react-pdf/primitives';
import layoutEngine from '@react-pdf/textkit/lib/layout';
import linebreaker from '@react-pdf/textkit/lib/engines/linebreaker';
import justification from '@react-pdf/textkit/lib/engines/justification';
import scriptItemizer from '@react-pdf/textkit/lib/engines/scriptItemizer';
import wordHyphenation from '@react-pdf/textkit/lib/engines/wordHyphenation';
import decorationEngine from '@react-pdf/textkit/lib/engines/textDecoration';
import fromFragments from '@react-pdf/textkit/lib/attributedString/fromFragments';

import {
layoutEngine,
linebreaker,
justification,
scriptItemizer,
wordHyphenation,
textDecoration as decorationEngine,
attributedStringFromFragments as fromFragments,
} from '@react-pdf/textkit';
import transformText from '../text/transformText';
import fontSubstitution from '../text/fontSubstitution';

Expand Down
3 changes: 1 addition & 2 deletions packages/layout/src/text/getAttributedString.js
Original file line number Diff line number Diff line change
@@ -1,6 +1,5 @@
import * as P from '@react-pdf/primitives';
import fromFragments from '@react-pdf/textkit/lib/attributedString/fromFragments';

import { attributedStringFromFragments as fromFragments } from '@react-pdf/textkit';
import { embedEmojis } from './emoji';
import ignoreChars from './ignoreChars';
import transformText from './transformText';
Expand Down
15 changes: 8 additions & 7 deletions packages/layout/src/text/layoutText.js
Original file line number Diff line number Diff line change
@@ -1,10 +1,11 @@
import layoutEngine from '@react-pdf/textkit/lib/layout';
import linebreaker from '@react-pdf/textkit/lib/engines/linebreaker';
import justification from '@react-pdf/textkit/lib/engines/justification';
import textDecoration from '@react-pdf/textkit/lib/engines/textDecoration';
import scriptItemizer from '@react-pdf/textkit/lib/engines/scriptItemizer';
import wordHyphenation from '@react-pdf/textkit/lib/engines/wordHyphenation';

import {
layoutEngine,
linebreaker,
justification,
scriptItemizer,
wordHyphenation,
textDecoration,
} from '@react-pdf/textkit';
import fontSubstitution from './fontSubstitution';
import getAttributedString from './getAttributedString';

Expand Down
2 changes: 1 addition & 1 deletion packages/layout/src/text/linesWidth.js
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
import advanceWidth from '@react-pdf/textkit/lib/attributedString/advanceWidth';
import { attributedStringAdvanceWidth as advanceWidth } from '@react-pdf/textkit';

/**
* Get lines width (if any)
Expand Down
3 changes: 1 addition & 2 deletions packages/layout/tests/text/layoutText.test.js
Original file line number Diff line number Diff line change
@@ -1,6 +1,5 @@
import * as P from '@react-pdf/primitives';
import runWidth from '@react-pdf/textkit/lib/run/advanceWidth';

import { runAdvanceWidth as runWidth } from '@react-pdf/textkit';
import layoutText from '../../src/text/layoutText';

const TEXT =
Expand Down
7 changes: 4 additions & 3 deletions packages/render/src/primitives/renderSvgText.js
Original file line number Diff line number Diff line change
@@ -1,6 +1,7 @@
import runWidth from '@react-pdf/textkit/lib/run/advanceWidth';
import lineWidth from '@react-pdf/textkit/lib/attributedString/advanceWidth';

import {
runAdvanceWidth as runWidth,
attributedStringAdvanceWidth as lineWidth,
} from '@react-pdf/textkit';
import renderGlyphs from './renderGlyphs';

const renderRun = (ctx, run) => {
Expand Down
11 changes: 6 additions & 5 deletions packages/render/src/primitives/renderText.js
Original file line number Diff line number Diff line change
@@ -1,10 +1,11 @@
/* eslint-disable no-param-reassign */
import { isNil } from '@react-pdf/fns';
import runHeight from '@react-pdf/textkit/lib/run/height';
import runDescent from '@react-pdf/textkit/lib/run/descent';
import advanceWidth from '@react-pdf/textkit/lib/run/advanceWidth';
import ascent from '@react-pdf/textkit/lib/attributedString/ascent';

import {
runHeight,
runDescent,
runAdvanceWidth as advanceWidth,
attributedStringAscent as ascent,
} from '@react-pdf/textkit';
import renderGlyphs from './renderGlyphs';
import parseColor from '../utils/parseColor';

Expand Down
11 changes: 8 additions & 3 deletions packages/textkit/package.json
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,12 @@
"license": "MIT",
"version": "3.0.0",
"description": "An advanced text layout framework",
"main": "./lib/index.js",
"main": "lib/textkit.cjs.js",
"module": "lib/textkit.es.js",
"browser": {
"./lib/textkit.es.js": "./lib/textkit.browser.es.js",
"./lib/textkit.cjs.js": "./lib/textkit.browser.cjs.js"
},
"repository": {
"type": "git",
"url": "https://github.com/diegomura/react-pdf.git",
Expand All @@ -15,8 +20,8 @@
],
"scripts": {
"test": "jest",
"build": "rimraf ./lib && babel src --out-dir lib",
"watch": "rimraf ./lib && babel src --out-dir lib --watch"
"build": "rimraf ./lib && rollup -c",
"watch": "rimraf ./lib && rollup -c -w"
},
"files": [
"lib"
Expand Down
72 changes: 72 additions & 0 deletions packages/textkit/rollup.config.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,72 @@
import babel from '@rollup/plugin-babel';
import localResolve from 'rollup-plugin-local-resolve'
import pkg from './package.json';

const cjs = {
format: 'cjs',
exports: 'named',
};

const esm = {
format: 'es',
};

const getCJS = override => Object.assign({}, cjs, override);
const getESM = override => Object.assign({}, esm, override);

const babelConfig = ({ browser }) => ({
babelrc: false,
exclude: 'node_modules/**',
babelHelpers: 'runtime',
presets: [
[
'@babel/preset-env',
{
loose: true,
modules: false,
...(browser
? { targets: { browsers: 'last 2 versions' } }
: { targets: { node: '12' } }),
},
],
],
plugins: [
['@babel/plugin-transform-runtime', { version: '^7.16.4' }],
],
});

const input = './src/index.js';

const getExternal = ({ browser }) => [
...(Object.keys(pkg.dependencies)),
];

const getPlugins = ({ browser }) => [
localResolve(),
babel(babelConfig({ browser })),
];

const serverConfig = {
input,
output: [
getESM({ file: 'lib/textkit.es.js' }),
getCJS({ file: 'lib/textkit.cjs.js' }),
],
external: getExternal({ browser: false }),
plugins: getPlugins({ browser: false }),
};

const browserConfig = {
input,
output: [
getESM({ file: 'lib/textkit.browser.es.js' }),
getCJS({ file: 'lib/textkit.browser.cjs.js' }),
],
external: getExternal({ browser: true }),
plugins: getPlugins({ browser: true }),
};

export default [
serverConfig,
browserConfig,
];
21 changes: 21 additions & 0 deletions packages/textkit/src/index.js
Original file line number Diff line number Diff line change
Expand Up @@ -5,6 +5,12 @@ import textDecoration from './engines/textDecoration';
import scriptItemizer from './engines/scriptItemizer';
import wordHyphenation from './engines/wordHyphenation';
import fontSubstitution from './engines/fontSubstitution';
import attributedStringFromFragments from './attributedString/fromFragments';
import attributedStringAdvanceWidth from './attributedString/advanceWidth';
import runAdvanceWidth from './run/advanceWidth';
import runHeight from './run/height';
import runDescent from './run/descent';
import attributedStringAscent from './attributedString/ascent';

const engines = {
linebreaker,
Expand All @@ -18,3 +24,18 @@ const engines = {
const engine = layoutEngine(engines);

export default engine;
export {
layoutEngine,
linebreaker,
justification,
textDecoration,
scriptItemizer,
wordHyphenation,
fontSubstitution,
attributedStringFromFragments,
attributedStringAdvanceWidth,
runAdvanceWidth,
runHeight,
runDescent,
attributedStringAscent,
};

0 comments on commit 9e4c7d8

Please sign in to comment.