aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authoreug-vs <eug-vs@keemail.me>2020-11-14 12:56:20 +0300
committereug-vs <eug-vs@keemail.me>2020-11-14 12:56:48 +0300
commitb9d7793ff4c419fd6d8fd139eb6ae33b2f6c2e43 (patch)
tree9dece0e0f04c2722579cb3926b44f23120116789
parent9a2c9656988eb52976543ea981ac33aba78bb3eb (diff)
downloadreact-benzin-b9d7793ff4c419fd6d8fd139eb6ae33b2f6c2e43.tar.gz
fix: resolve eslint errors
-rw-r--r--src/index.tsx5
-rw-r--r--src/lib/Markdown/Section.tsx29
2 files changed, 18 insertions, 16 deletions
diff --git a/src/index.tsx b/src/index.tsx
index 5ba33a0..63f7938 100644
--- a/src/index.tsx
+++ b/src/index.tsx
@@ -16,11 +16,6 @@ import Header from './demo/Header/Header';
import Window from './demo/Window/Window';
import icon from './assets/icon.svg';
-interface RenderPropTypes {
- index: number;
- style: React.CSSProperties;
-}
-
const useStyles = makeStyles(theme => ({
window: {
padding: theme.spacing(4),
diff --git a/src/lib/Markdown/Section.tsx b/src/lib/Markdown/Section.tsx
index fc208b1..fb2933d 100644
--- a/src/lib/Markdown/Section.tsx
+++ b/src/lib/Markdown/Section.tsx
@@ -8,6 +8,10 @@ interface PropTypes extends ParserPropTypes {
level?: number;
}
+interface MapperPropTypes extends PropTypes {
+ SectionComponent: React.FC<PropTypes>;
+}
+
const getHeaderLevel = (header: string): number => {
if (!header) return 0;
let level = 0;
@@ -15,18 +19,21 @@ const getHeaderLevel = (header: string): number => {
return level;
};
-const ChildrenSections: React.FC<PropTypes> = ({ rawLines, level = 0 }) => {
- const childrenSectionLines = rawLines.reduce((sections: string[][], line: string) => {
- if (line) {
- if (getHeaderLevel(line) === level) sections.push([]);
- if (sections.length) sections[sections.length - 1].push(line);
- }
- return sections;
- }, []);
- const children = childrenSectionLines.map(sectionLines => <Section rawLines={sectionLines} level={level} />);
+const SectionMapper: React.FC<MapperPropTypes> = ({ rawLines, level = 0, SectionComponent }) => {
+ const children = rawLines
+ .reduce((sections: string[][], line: string) => {
+ if (line) {
+ if (getHeaderLevel(line) === level) sections.push([]);
+ if (sections.length) sections[sections.length - 1].push(line);
+ }
+ return sections;
+ }, [])
+ .map(sectionLines => <SectionComponent rawLines={sectionLines} level={level} />);
+
return <>{children}</>;
};
+
const Section: React.FC<PropTypes> = ({ rawLines, level = 0 }) => {
const deeperLevelIndex = rawLines.findIndex(line => line.match(`^#{${level + 1},} .*$`));
const rawContent = rawLines.splice(0, (deeperLevelIndex < 0) ? rawLines.length : deeperLevelIndex);
@@ -35,7 +42,7 @@ const Section: React.FC<PropTypes> = ({ rawLines, level = 0 }) => {
return (
<>
<Typography><Content rawLines={rawContent} /></Typography>
- <ChildrenSections rawLines={rawLines} level={getHeaderLevel(rawLines[0])} />
+ <SectionMapper rawLines={rawLines} level={getHeaderLevel(rawLines[0])} SectionComponent={Section} />
</>
);
}
@@ -45,7 +52,7 @@ const Section: React.FC<PropTypes> = ({ rawLines, level = 0 }) => {
return (
<ContentSection sectionName={sectionName} level={level}>
<Content rawLines={rawContent} />
- <ChildrenSections rawLines={rawLines} level={deeperLevel} />
+ <SectionMapper rawLines={rawLines} level={deeperLevel} SectionComponent={Section} />
</ContentSection>
);
};