Skip to content

Commit e74ac2e

Browse files
committed
Updated imports for better tree shaking support
Also updated folder structures a bit
1 parent 5fac1d4 commit e74ac2e

File tree

9 files changed

+106
-34
lines changed

9 files changed

+106
-34
lines changed

.changeset/fast-mirrors-hug.md

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,5 @@
1+
---
2+
"@plexinc/react-lightning-components": patch
3+
---
4+
5+
Updated imports for better tree shaking

packages/react-lightning-components/package.json

Lines changed: 29 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -19,7 +19,11 @@
1919
"dist"
2020
],
2121
"exports": {
22-
".": "./src/index.ts"
22+
".": "./src/index.ts",
23+
"./layout/Row": "./src/exports/layout/Row.tsx",
24+
"./layout/Column": "./src/exports/layout/Column.tsx",
25+
"./text/StyledText": "./src/exports/text/StyledText.tsx",
26+
"./util/FPSMonitor": "./src/exports/util/FPSMonitor.tsx"
2327
},
2428
"publishConfig": {
2529
"provenance": true,
@@ -30,6 +34,30 @@
3034
"require": "./dist/cjs/index.js",
3135
"default": "./dist/cjs/index.js",
3236
"types": "./dist/types/index.d.ts"
37+
},
38+
"./layout/Row": {
39+
"import": "./dist/esm/layout/Row.mjs",
40+
"require": "./dist/cjs/layout/Row.js",
41+
"default": "./dist/cjs/layout/Row.js",
42+
"types": "./dist/types/layout/Row.d.ts"
43+
},
44+
"./layout/Column": {
45+
"import": "./dist/esm/layout/Column.mjs",
46+
"require": "./dist/cjs/layout/Column.js",
47+
"default": "./dist/cjs/layout/Column.js",
48+
"types": "./dist/types/layout/Column.d.ts"
49+
},
50+
"./text/StyledText": {
51+
"import": "./dist/esm/text/StyledText.mjs",
52+
"require": "./dist/cjs/text/StyledText.js",
53+
"default": "./dist/cjs/text/StyledText.js",
54+
"types": "./dist/types/text/StyledText.d.ts"
55+
},
56+
"./util/FPSMonitor": {
57+
"import": "./dist/esm/util/FPSMonitor.mjs",
58+
"require": "./dist/cjs/util/FPSMonitor.js",
59+
"default": "./dist/cjs/util/FPSMonitor.js",
60+
"types": "./dist/types/util/FPSMonitor.d.ts"
3361
}
3462
}
3563
},
Lines changed: 30 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,33 @@
1+
import { dirname } from 'node:path';
12
import createRollupConfig from '@repo/rollup-config';
3+
import { globSync } from 'glob';
24

3-
export default createRollupConfig({
4-
useClient: true,
5-
external: ['@plexinc/react-lightning', 'react', 'react/jsx-runtime'],
5+
const exportFiles = globSync('./src/exports/*/*.{tsx,ts}');
6+
7+
const configs = exportFiles.map((file) => {
8+
const outputDir = dirname(file.replace('src/exports', ''));
9+
10+
return createRollupConfig({
11+
useClient: true,
12+
input: file,
13+
output: [
14+
{
15+
dir: `./dist/esm${outputDir}`,
16+
entryFileNames: '[name].mjs',
17+
assetFileNames: ({ name }) => name?.replace(/^src\//, '') ?? '',
18+
format: 'esm',
19+
exports: 'auto',
20+
},
21+
{
22+
dir: `./dist/cjs${outputDir}`,
23+
entryFileNames: '[name].js',
24+
assetFileNames: ({ name }) => name?.replace(/^src\//, '') ?? '',
25+
format: 'cjs',
26+
exports: 'auto',
27+
},
28+
],
29+
external: ['@plexinc/react-lightning', 'react', 'react/jsx-runtime'],
30+
});
631
});
32+
33+
export default configs;

packages/react-lightning-components/src/components/Column.tsx renamed to packages/react-lightning-components/src/exports/layout/Column.tsx

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,7 @@ import {
66
} from '@plexinc/react-lightning';
77
import { forwardRef } from 'react';
88

9-
interface Props extends LightningViewElementProps {
9+
export interface ColumnProps extends LightningViewElementProps {
1010
focusable?: boolean;
1111
focusedStyle?: LightningViewElementStyle;
1212
autoFocus?: boolean;
@@ -16,7 +16,7 @@ interface Props extends LightningViewElementProps {
1616
trapFocusLeft?: boolean;
1717
}
1818

19-
export const Column = forwardRef<LightningViewElement, Props>(
19+
const Column = forwardRef<LightningViewElement, ColumnProps>(
2020
(
2121
{
2222
style,
@@ -59,3 +59,5 @@ export const Column = forwardRef<LightningViewElement, Props>(
5959
);
6060

6161
Column.displayName = 'Column';
62+
63+
export default Column;

packages/react-lightning-components/src/components/Row.tsx renamed to packages/react-lightning-components/src/exports/layout/Row.tsx

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,7 @@ import {
66
} from '@plexinc/react-lightning';
77
import { forwardRef } from 'react';
88

9-
interface Props extends LightningViewElementProps {
9+
export interface RowProps extends LightningViewElementProps {
1010
focusable?: boolean;
1111
focusedStyle?: LightningViewElementStyle;
1212
autoFocus?: boolean;
@@ -16,7 +16,7 @@ interface Props extends LightningViewElementProps {
1616
trapFocusLeft?: boolean;
1717
}
1818

19-
export const Row = forwardRef<LightningViewElement, Props>(
19+
const Row = forwardRef<LightningViewElement, RowProps>(
2020
(
2121
{
2222
style,
@@ -59,3 +59,5 @@ export const Row = forwardRef<LightningViewElement, Props>(
5959
);
6060

6161
Row.displayName = 'Row';
62+
63+
export default Row;

packages/react-lightning-components/src/components/StyledText.tsx renamed to packages/react-lightning-components/src/exports/text/StyledText.tsx

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -21,7 +21,7 @@ const BASE_STYLE = {
2121

2222
let wordWrapErrorShown = false;
2323

24-
type StyledTextProps = LightningViewElementProps & {
24+
export type StyledTextProps = LightningViewElementProps & {
2525
/**
2626
* Input text with placeholders and custom tags.
2727
*/
@@ -227,4 +227,4 @@ const StyledText: React.FC<StyledTextProps> = ({
227227

228228
StyledText.displayName = 'StyledText';
229229

230-
export { StyledText };
230+
export default StyledText;

packages/react-lightning-components/src/components/FPSMonitor.tsx renamed to packages/react-lightning-components/src/exports/util/FPSMonitor.tsx

Lines changed: 26 additions & 19 deletions
Original file line numberDiff line numberDiff line change
@@ -4,17 +4,25 @@ import {
44
} from '@plexinc/react-lightning';
55
import { useCallback, useContext, useEffect, useState } from 'react';
66

7-
interface Props {
7+
export interface FPSMonitorProps {
8+
prefix?: string;
89
style?: LightningTextElementStyle;
10+
highColor?: number;
11+
mediumColor?: number;
12+
lowColor?: number;
13+
mediumCutoff?: number;
14+
lowCutoff?: number;
915
}
1016

11-
const HIGH_COLOR = 0x00ff00ff;
12-
const MEDIUM_COLOR = 0xffff00ff;
13-
const MEDIUM_CUTOFF = 30;
14-
const LOW_COLOR = 0xff0000ff;
15-
const LOW_CUTOFF = 15;
16-
17-
const FPSMonitor = ({ style }: Props) => {
17+
const FPSMonitor = ({
18+
style,
19+
prefix = 'FPS:',
20+
highColor = 0x00ff00ff,
21+
mediumColor = 0xffff00ff,
22+
mediumCutoff = 30,
23+
lowColor = 0xff0000ff,
24+
lowCutoff = 15,
25+
}: FPSMonitorProps) => {
1826
const lngContext = useContext(LightningRootContext);
1927
const [fps, setFps] = useState(0);
2028
const [color, setColor] = useState(0);
@@ -23,15 +31,15 @@ const FPSMonitor = ({ style }: Props) => {
2331
(_: unknown, { fps: value }: { fps: number }) => {
2432
setFps(value);
2533

26-
if (value > MEDIUM_CUTOFF) {
27-
setColor(HIGH_COLOR);
28-
} else if (value > LOW_CUTOFF) {
29-
setColor(MEDIUM_COLOR);
34+
if (value > mediumCutoff) {
35+
setColor(highColor);
36+
} else if (value > lowCutoff) {
37+
setColor(mediumColor);
3038
} else {
31-
setColor(LOW_COLOR);
39+
setColor(lowColor);
3240
}
3341
},
34-
[],
42+
[highColor, mediumColor, mediumCutoff, lowColor, lowCutoff],
3543
);
3644

3745
useEffect(() => {
@@ -46,17 +54,16 @@ const FPSMonitor = ({ style }: Props) => {
4654
color,
4755
display: 'flex',
4856
fontSize: 20,
49-
mountX: 1,
5057
position: 'absolute',
51-
x: 1900,
52-
y: 20,
5358
zIndex: 9999,
5459
...style,
5560
}}
5661
>
57-
FPS: {fps}
62+
{prefix} {fps}
5863
</lng-text>
5964
);
6065
};
6166

62-
export { FPSMonitor };
67+
FPSMonitor.displayName = 'FPSMonitor';
68+
69+
export default FPSMonitor;
Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
export { Column } from './components/Column';
2-
export { FPSMonitor } from './components/FPSMonitor';
3-
export { Row } from './components/Row';
4-
export { StyledText } from './components/StyledText';
1+
export { default as Column } from './exports/layout/Column';
2+
export { default as Row } from './exports/layout/Row';
3+
export { default as StyledText } from './exports/text/StyledText';
4+
export { default as FPSMonitor } from './exports/util/FPSMonitor';

packages/rollup-config/index.js

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -77,6 +77,7 @@ export default ({
7777
input = ['./src/index.ts'],
7878
external = [],
7979
options = {},
80+
output,
8081
plugins = [],
8182
} = {}) => {
8283
/**
@@ -85,7 +86,7 @@ export default ({
8586
const commonOptions = {
8687
...options,
8788
input,
88-
output: [
89+
output: output ?? [
8990
{
9091
dir: './dist/esm',
9192
entryFileNames: '[name].mjs',

0 commit comments

Comments
 (0)