Skip to content

Commit

Permalink
refactor: convert stylesheet package to TS
Browse files Browse the repository at this point in the history
  • Loading branch information
diegomura committed Feb 17, 2025
1 parent 0ffada3 commit 42db07f
Show file tree
Hide file tree
Showing 47 changed files with 989 additions and 693 deletions.
27 changes: 21 additions & 6 deletions packages/fns/src/compose.ts
Original file line number Diff line number Diff line change
@@ -1,4 +1,18 @@
import reverse from './reverse';
type Fn = (arg: any, ...args: any[]) => any;

type FirstFnParameterType<T extends Fn[]> = T extends [
...any,
(arg: infer A, ...args: any[]) => any,
]
? A
: never;

type LastFnReturnType<T extends Fn[]> = T extends [
(arg: any, ...args: any[]) => infer R,
...any,
]
? R
: never;

/**
* Performs right-to-left function composition
Expand All @@ -7,17 +21,18 @@ import reverse from './reverse';
* @returns Composed function
*/
const compose =
(...fns: any[]) =>
(value: any, ...args: any[]) => {
let result = value;
const reversedFns = reverse(fns);
<T extends Fn[]>(...fns: T) =>
(value: FirstFnParameterType<T>, ...args: any[]): LastFnReturnType<T> => {
let result: unknown = value;

const reversedFns = fns.slice().reverse();

for (let i = 0; i < reversedFns.length; i += 1) {
const fn = reversedFns[i];
result = fn(result, ...args);
}

return result;
return result as LastFnReturnType<T>;
};

export default compose;
8 changes: 6 additions & 2 deletions packages/layout/src/steps/resolveSvg.js
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
import * as P from '@react-pdf/primitives';
import { transformColor, processTransform } from '@react-pdf/stylesheet';
import resolveStyle, { transformColor } from '@react-pdf/stylesheet';
import { pick, evolve, compose, mapValues, matchPercent } from '@react-pdf/fns';

import layoutText from '../svg/layoutText';
Expand Down Expand Up @@ -59,6 +59,10 @@ const parsePercent = (value) => {
return match ? match.percent : parseFloat(value);
};

const parseTransform = (container) => (value) => {
return resolveStyle(container, { transform: value }).transform;
};

const parseProps = (container) => (node) => {
let props = transformPercent(container)(node.props);

Expand All @@ -83,7 +87,7 @@ const parseProps = (container) => (node) => {
stroke: transformColor,
stopOpacity: parsePercent,
stopColor: transformColor,
transform: processTransform,
transform: parseTransform(container),
},
props,
);
Expand Down
1 change: 0 additions & 1 deletion packages/stylesheet/babel.config.js

This file was deleted.

77 changes: 0 additions & 77 deletions packages/stylesheet/src/expand/borders.js

This file was deleted.

29 changes: 0 additions & 29 deletions packages/stylesheet/src/expand/flex.js

This file was deleted.

10 changes: 0 additions & 10 deletions packages/stylesheet/src/expand/gap.js

This file was deleted.

97 changes: 0 additions & 97 deletions packages/stylesheet/src/expand/index.ts

This file was deleted.

41 changes: 0 additions & 41 deletions packages/stylesheet/src/expand/margins.js

This file was deleted.

10 changes: 0 additions & 10 deletions packages/stylesheet/src/expand/objectPosition.js

This file was deleted.

36 changes: 0 additions & 36 deletions packages/stylesheet/src/expand/paddings.js

This file was deleted.

Loading

0 comments on commit 42db07f

Please sign in to comment.