Skip to content

Commit eea1f47

Browse files
authored
Only export foreign (#2)
* Less code, short types, but output larger * Only export foreign react components * Drop explicit exports Downside: User has to type `element` Upside: Drastically improves compile times and output size.
1 parent fbe1868 commit eea1f47

48 files changed

Lines changed: 44546 additions & 133495 deletions

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

README.md

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -19,9 +19,10 @@ Search for an icon on [`react-icons`](https://react-icons.github.io/react-icons)
1919
and see these examples on how to import in PureScript.
2020

2121
```purescript
22+
import React.Basic (element)
2223
import React.Icons.Fa (faGithub)
2324
import React.Icons.Md (mdCrop)
2425
25-
faGithub {}
26-
mdCrop { size: "24px", className: "my-class" }
26+
element faGithub {}
27+
element mdCrop { size: "24px", className: "my-class" }
2728
```

codegen/codegen.sh

Lines changed: 3 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -25,13 +25,13 @@ allLibsFile="$libDir/all.d.ts"
2525
}
2626

2727
toPureScript() {
28-
outputPs+="\n$(sed -e "s/\${icon}/${1,}/g" "$dir/templateIcon.txt")\n"
28+
outputPs+="\n$(sed -e "s/\${icon}/${1,}/g" "$dir/templateIcon.txt")"
2929
}
3030

3131
toJavaScript() {
3232
nameLib="$1"
3333
nameImport="$2"
34-
nameExport="_${2,}"
34+
nameExport="${2,}"
3535

3636
outputJs+=$(
3737
sed -e "s/\${nameImport}/$nameImport/g" \
@@ -50,11 +50,8 @@ for lib in $libs; do
5050
regex='s/export declare const ([A-Za-z]+): IconType;/\1/p'
5151
iconNames=$(sed -nr "$regex" "$iconFile" | sort -u)
5252

53-
# PureScript exports
54-
exportsPs="$(printf "%b" "$iconNames" | sed -e 's/\(.\)/\L\1/' | xargs | sed -e 's/ /, /g')"
55-
5653
# PureScript and JS defintions
57-
outputPs="$(sed -e "s/\${lib}/${lib^}/" -e "s/\${exports}/${exportsPs}/" "$dir/templateModule.txt")\n"
54+
outputPs="$(sed -e "s/\${lib}/${lib^}/" "$dir/templateModule.txt")\n"
5855
outputJs=""
5956
for name in $iconNames; do
6057
echo "- $name"

codegen/templateIcon.txt

Lines changed: 1 addition & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1 @@
1-
foreign import _${icon} :: ReactIcon
2-
3-
${icon} :: forall a b. Union a b PropsIcon => Record a -> JSX
4-
${icon} = element (unsafeCoerce _${icon})
1+
foreign import ${icon} :: ReactIcon

codegen/templateModule.txt

Lines changed: 2 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,3 @@
1-
module React.Icons.${lib} (${exports}) where
1+
module React.Icons.${lib} where
22

3-
import Prim.Row (class Union)
4-
import React.Basic (JSX, element)
5-
import React.Icons.Types (ReactIcon, PropsIcon)
6-
import Unsafe.Coerce (unsafeCoerce)
3+
import React.Icons.Types (ReactIcon)

spago.dhall

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
{ name = "react-icons"
2-
, dependencies = [ "react-basic", "react-basic-dom", "unsafe-coerce" ]
2+
, dependencies = [ "react-basic", "react-basic-dom" ]
33
, packages = ./packages.dhall
44
, sources = [ "src/**/*.purs" ]
55
, license = "MIT-0"

src/React/Icons/Ai.js

Lines changed: 785 additions & 785 deletions
Large diffs are not rendered by default.

src/React/Icons/Ai.purs

Lines changed: 789 additions & 3931 deletions
Large diffs are not rendered by default.

src/React/Icons/Bi.js

Lines changed: 742 additions & 742 deletions
Large diffs are not rendered by default.

src/React/Icons/Bi.purs

Lines changed: 746 additions & 3716 deletions
Large diffs are not rendered by default.

src/React/Icons/Bs.js

Lines changed: 1668 additions & 1668 deletions
Large diffs are not rendered by default.

0 commit comments

Comments
 (0)