Skip to content

Commit b3f10f8

Browse files
author
Daniel Harvey
committed
Rename and tidy up
1 parent 1901a7f commit b3f10f8

19 files changed

+1653
-539
lines changed

README.md

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -10,10 +10,11 @@ Broadly, yes. Whether it's performant or not is yet to be seen.
1010

1111
### Can I try it?
1212

13-
Uhh. Sure.
13+
Uhh. Sure. To see a somewhat terrible looking proof of concept, crack open the
14+
following incantations:
1415

1516
`git clone https://github.com/danieljharvey/purescript-stylesheet`
1617

1718
`spago install`
1819

19-
`yarn start` and then `open index.html`. Joy!
20+
`yarn build` and then `open index.html`. Joy!

package.json

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -7,8 +7,8 @@
77
"license": "MIT",
88
"scripts": {
99
"pscid:build": "spago build",
10-
"build:test": "spago bundle-app --main Testing --to index.js",
11-
"build:test:watch": "spago bundle-app --main Testing -w --to index.js"
10+
"build": "spago bundle-app --main Testing --to index.js",
11+
"build:watch": "spago bundle-app --main Testing -w --to index.js"
1212
},
1313
"dependencies": {
1414
"purescript": "^0.13.2"

src/Main.purs

Lines changed: 11 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -1,11 +1,13 @@
1-
module PursUI (module Types, module Internal) where
1+
module Stylesheet (module Types, module Internal) where
22

3-
import PursUI.Types.Primitives (CSSSelector(..), CSSText(..), InsertMediaRule(..), InsertRule(..), MediaQueryText(..), StyleSheetId(..), UnpackedMediaRule, UnpackedRule) as Types
4-
import PursUI.Types.VirtualStyleSheet (VirtualStyleSheet(..), getStyleSheetId) as Types
5-
import PursUI.Types.PursUI (PursUI, createBlankStyleSheet, getCSSStyleSheet, readVirtualStyleSheet) as Types
6-
import PursUI.Types.CSSRuleSet (CSSRule(..), CSSRuleSet(..), Props, fun, makeStyle, media, str, testProps) as Types
7-
import PursUI.Types.StyleRuleSet (ClassRule(..), MediaRule(..), RuleType(..), StyleRuleSet(..), classRule, mediaRule, wrapInRuleSet) as Types
3+
import Stylesheet.Types.Primitives (CSSSelector(..), CSSText(..),
4+
InsertMediaRule(..), InsertRule(..), MediaQueryText(..), StylesheetId(..), UnpackedMediaRule, UnpackedRule) as Types
5+
import Stylesheet.Types.VirtualStylesheet (VirtualStylesheet(..), getStylesheetId) as Types
6+
import Stylesheet.Types.Stylesheet (Stylesheet(..), createBlankStylesheet,
7+
getCSSStylesheet, readVirtualStylesheet) as Types
8+
import Stylesheet.Types.CSSRuleSet (CSSRule(..), CSSRuleSet(..), fun, media, str) as Types
9+
import Stylesheet.Types.StyleRuleSet (ClassRule(..), MediaRule(..), RuleType(..), StyleRuleSet(..), classRule, mediaRule, wrapInRuleSet) as Types
810

9-
import PursUI.DomActions (createAndReturnCSSMediaRule, createStyleTag, findMediaQueryByQuery, findRuleBySelector, getFilteredRuleList, getMediaRuleMediaText, getStyleRuleDeclarationText, getStyleRuleSelectorText, getUnpackedMediaRules, getUnpackedStyleRules, insertRecursive, insertRule, unpackMediaRule, unpackRule) as Internal
10-
import PursUI.StyleLens (createHashedInsertRule, getClasses, keep, processStyle) as Internal
11-
import PursUI.AddStyle (addStyle) as Internal
11+
import Stylesheet.Internal.DomActions (createAndReturnCSSMediaRule, createStyleTag, findMediaQueryByQuery, findRuleBySelector, getFilteredRuleList, getMediaRuleMediaText, getStyleRuleDeclarationText, getStyleRuleSelectorText, getUnpackedMediaRules, getUnpackedStyleRules, insertRecursive, insertRule, unpackMediaRule, unpackRule) as Internal
12+
import Stylesheet.Internal.ProcessStyles (createHashedInsertRule, getClasses, keep, processStyle) as Internal
13+
import Stylesheet.Internal.AddStyle (addStyle) as Internal

src/PursUI/AddStyle.purs

Lines changed: 0 additions & 30 deletions
This file was deleted.

src/PursUI/Types/CSSRuleSet.purs

Lines changed: 0 additions & 61 deletions
This file was deleted.

src/PursUI/Types/PursUI.purs

Lines changed: 0 additions & 54 deletions
This file was deleted.

src/PursUI/Types/VirtualStyleSheet.purs

Lines changed: 0 additions & 51 deletions
This file was deleted.
Lines changed: 30 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,30 @@
1+
module Stylesheet.Internal.AddStyle where
2+
3+
import Prelude (discard, pure)
4+
import Effect (Effect)
5+
import Data.Foldable (foldMap)
6+
7+
import Stylesheet.Types.Stylesheet (Stylesheet(..), addVirtualStylesheet)
8+
import Stylesheet.Types.CSSRuleSet (CSSRuleSet)
9+
import Stylesheet.Types.Primitives (CSSSelector)
10+
import Stylesheet.Types.VirtualStylesheet
11+
12+
import Stylesheet.Internal.ProcessStyles (getClasses, keep, processStyle)
13+
14+
-- | This is the top level big dog of a function, as such
15+
-- | We provide the big Stylesheet doing-things-lump
16+
-- | a function from props -> Styles
17+
-- | some props
18+
-- | and we get back a bunch of CSSSelectors (classes)
19+
addStyle
20+
:: forall p props
21+
. Stylesheet p
22+
-> CSSRuleSet props
23+
-> props
24+
-> Effect (Array CSSSelector)
25+
addStyle stylesheet styleRule props = do
26+
let rules = keep (processStyle styleRule props)
27+
virtualStylesheet = foldMap (fromItem) rules
28+
classes = foldMap (getClasses) rules
29+
addVirtualStylesheet stylesheet virtualStylesheet
30+
pure classes
Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,20 +1,20 @@
1-
module PursUI.DomActions where
1+
module Stylesheet.Internal.DomActions where
22

33
import Prelude
44
import Data.Maybe (Maybe(..))
55
import Data.Traversable (find, traverse, traverse_)
66
import Effect (Effect)
77
import Effect.Uncurried (runEffectFn1)
8-
import PursUI.Types.Primitives (CSSSelector(..), CSSText(..), InsertMediaRule(..), InsertRule(..), MediaQueryText(..), StyleSheetId(..), UnpackedMediaRule, UnpackedRule)
8+
import Stylesheet.Types.Primitives
99
import CSSOM.Main (class HasRuleList, CSSMediaRule, CSSRuleList, CSSRules, CSSStyleRule, CSSStyleSheet, IndexedRule, createStyleTagJS, deleteRule', getFilteredRuleListJS, getMediaRuleMediaTextJS, getRuleList', getStyleRuleDeclarationTextJS, getStyleRuleSelectorTextJS, insertRule')
1010

1111
-- this takes all the raw calls and builds up a few actually useful functions
1212
-- for CSSOM manipulation
1313

1414
createStyleTag
15-
:: StyleSheetId
15+
:: StylesheetId
1616
-> Effect CSSStyleSheet
17-
createStyleTag (StyleSheetId s)
17+
createStyleTag (StylesheetId s)
1818
= runEffectFn1 createStyleTagJS s
1919

2020
-- | Get all the rules of a stylesheet, split by type

src/PursUI/StyleLens.purs renamed to src/Stylesheet/Internal/ProcessStyles.purs

Lines changed: 9 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -1,9 +1,9 @@
1-
module PursUI.StyleLens where
1+
module Stylesheet.Internal.ProcessStyles where
22

33
import Prelude (flap, map, pure, show, ($), (<<<), (<>))
4-
import PursUI.Types.CSSRuleSet (CSSRule(..), CSSRuleSet(..))
5-
import PursUI.Types.StyleRuleSet
6-
import PursUI.Types.Primitives (CSSSelector(..), CSSText, InsertMediaRule(..), InsertRule(..))
4+
import Stylesheet.Types.CSSRuleSet (CSSRule(..), CSSRuleSet(..))
5+
import Stylesheet.Types.StyleRuleSet
6+
import Stylesheet.Types.Primitives (CSSSelector(..), CSSText, InsertMediaRule(..), InsertRule(..))
77
import Data.Array (concatMap)
88
import Data.Foldable (foldr)
99
import Data.Hashable (hash)
@@ -26,9 +26,7 @@ processStyle ruleSet props
2626
Lens f -> classRule (f props')
2727
MediaQuery s as -> mediaRule s (process as)
2828

29-
-- for now we'll discard media query ones
30-
-- and just output the basic bullshit
31-
29+
-- | This creates a unique hash of the CSS that we'll use to make the classname
3230
createHashedInsertRule :: CSSText -> InsertRule
3331
createHashedInsertRule css
3432
= InsertRule selector css
@@ -39,6 +37,8 @@ createHashedInsertRule css
3937
selector
4038
= CSSClassSelector <<< appendPrefix <<< show <<< hash $ css
4139

40+
-- | This commits the rendered StyleRuleSet into InsertMediaRules that we can
41+
-- | store and apply to the CSSOM
4242
keep :: StyleRuleSet -> Array InsertMediaRule
4343
keep (StyleRuleSet rules)
4444
= foldr fold [] rules
@@ -53,6 +53,8 @@ keep (StyleRuleSet rules)
5353
MediaType (MediaRule query rules')
5454
-> pure (InsertMediaQuery query (keep (StyleRuleSet rules')))
5555

56+
-- | Get the generated CSS classes from the CSS. These are generated from
57+
-- | hashes of the content
5658
getClasses :: InsertMediaRule -> Array CSSSelector
5759
getClasses (InsertStyleRule (InsertRule selector _))
5860
= pure selector

0 commit comments

Comments
 (0)