@@ -6,28 +6,48 @@ const Right = Either.Right
6
6
const Left = Either . Left
7
7
8
8
const Placeload = {
9
- $ : ( x ) => place ( IO ( ( ) => {
10
- const container = document . querySelector ( x )
11
- if ( container ) {
9
+ $ : ( x ) => utils ( getHoldersElements ( x ) , selector ( x ) )
10
+ }
11
+
12
+ // selector :: String -> Either
13
+ const selector = ( x ) => {
14
+ const element = document . querySelector ( x )
15
+ if ( element )
16
+ return Right ( element )
17
+ return Left ( `Don\' found ${ x } element` )
18
+ }
19
+
20
+ // getHoldersElements :: String -> Either
21
+ const getHoldersElements = ( x ) => {
22
+ return IO ( ( ) => {
23
+ return selector ( x ) . chain ( ( container ) => {
12
24
const elementPlaceload = styl ( document . createElement ( 'div' ) ) . addClass ( 'placeload-background' ) . toDOM ( )
13
25
container . appendChild ( elementPlaceload )
14
26
return Right ( {
15
27
container : container ,
16
28
placeload : elementPlaceload ,
17
29
elems : [ ]
18
30
} )
19
- }
20
- return Left ( `Don\' found ${ x } element` )
21
- } ) )
31
+ } )
32
+ } )
22
33
}
23
34
24
35
// place :: IO -> Object
25
- const place = ( _IO ) => {
36
+ const utils = ( _IO , container ) => {
26
37
return ( {
27
- config : ( configs ) => place ( configIO ( _IO , configs ) ) ,
28
- line : f => place ( drawIO ( f , _IO ) ) ,
29
- spaceBetween : size => place ( drawIO ( { spaceBetween : size } , _IO ) ) ,
30
- fold : ( err , succ ) => _IO . runIO ( ) . either ( err , succ ) ,
38
+ config : ( configs ) => utils ( configIO ( _IO , configs ) , container ) ,
39
+ line : f => utils ( drawIO ( f , _IO ) , container ) ,
40
+ spaceBetween : size => utils ( drawIO ( { spaceBetween : size } , _IO ) , container ) ,
41
+ fold : ( err , succ ) => {
42
+ _IO . runIO ( ) . either ( err , succ )
43
+ return {
44
+ remove : ( ) => {
45
+ container . map ( element => {
46
+ element . parentNode . removeChild ( element ) ;
47
+ } )
48
+ }
49
+ }
50
+ } ,
31
51
inspect : ( ) => console . log ( 'IO: ' , _IO . toString ( ) )
32
52
} )
33
53
}
@@ -58,10 +78,10 @@ const configIO = (_IO, config) => {
58
78
const placeloadHeight = elem . placeload . style . height || 0
59
79
const newHeightToPlaceload = parseInt ( placeloadHeight ) + parseInt ( stylWithDefault . spaceBetween )
60
80
const newElement = styl ( document . createElement ( 'div' ) )
61
- . width ( '100%' )
62
- . height ( stylWithDefault . spaceBetween )
63
- . marginTop ( placeloadHeight )
64
- . addClass ( 'placeload-masker' ) . toDOM ( )
81
+ . width ( '100%' )
82
+ . height ( stylWithDefault . spaceBetween )
83
+ . marginTop ( placeloadHeight )
84
+ . addClass ( 'placeload-masker' ) . toDOM ( )
65
85
66
86
if ( stylWithDefault . right ) {
67
87
runDrawRightLine ( elem , stylWithDefault ) . runIO ( )
@@ -80,11 +100,11 @@ const runDrawRightLine = (elem, stylWithDefault) => {
80
100
const lastChild = elem . elems [ elem . elems . length - 2 ]
81
101
const itemToRight = elem . elems [ elem . elems . length - 1 ]
82
102
const elementRow = styl ( document . createElement ( 'div' ) )
83
- . addClass ( 'placeload-masker' )
84
- . width ( '100%' )
85
- . height ( '10px' )
86
- . marginTop ( '20px' )
87
- . marginLeft ( lastChild . style . marginLeft ) . toDOM ( )
103
+ . addClass ( 'placeload-masker' )
104
+ . width ( '100%' )
105
+ . height ( '10px' )
106
+ . marginTop ( '20px' )
107
+ . marginLeft ( lastChild . style . marginLeft ) . toDOM ( )
88
108
89
109
styl ( lastChild ) . hide ( )
90
110
styl ( itemToRight )
@@ -103,13 +123,13 @@ const createElemFolk = (elements, newElement, prop, value) => {
103
123
return elements . map ( elem => {
104
124
const height = elem . placeload . style . height || 0
105
125
switch ( prop ) {
106
- case 'width' :
107
- styl ( newElement ) . width ( `100%` ) . marginLeft ( `${ value } %` ) . marginTop ( height )
108
- break
109
- case 'height' :
110
- styl ( newElement ) . height ( `${ value } px` )
111
- styl ( elem . placeload ) . height ( `${ parseInt ( height ) + value } px` )
112
- break
126
+ case 'width' :
127
+ styl ( newElement ) . width ( `100%` ) . marginLeft ( `${ value } %` ) . marginTop ( height )
128
+ break
129
+ case 'height' :
130
+ styl ( newElement ) . height ( `${ value } px` )
131
+ styl ( elem . placeload ) . height ( `${ parseInt ( height ) + value } px` )
132
+ break
113
133
}
114
134
elem . placeload . appendChild ( newElement )
115
135
return elem
0 commit comments