leaner 0.1.0 → 0.1.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/web.js +40 -10
- package/package.json +14 -5
- package/types/web.d.ts +5 -5
package/dist/web.js
CHANGED
|
@@ -43,6 +43,7 @@ function createContext( parent ) {
|
|
|
43
43
|
scope: [],
|
|
44
44
|
mount: null,
|
|
45
45
|
destroy: null,
|
|
46
|
+
refs: null,
|
|
46
47
|
services: null,
|
|
47
48
|
};
|
|
48
49
|
}
|
|
@@ -94,12 +95,27 @@ function onDestroy( callback ) {
|
|
|
94
95
|
current.destroy.push( callback );
|
|
95
96
|
}
|
|
96
97
|
|
|
98
|
+
function createRef( callback, element ) {
|
|
99
|
+
if ( current != null ) {
|
|
100
|
+
if ( current.refs == null )
|
|
101
|
+
current.refs = [];
|
|
102
|
+
current.refs.push( { callback, element } );
|
|
103
|
+
} else {
|
|
104
|
+
callback( element );
|
|
105
|
+
}
|
|
106
|
+
}
|
|
107
|
+
|
|
97
108
|
function mountContext( context ) {
|
|
98
109
|
if ( context.children != null ) {
|
|
99
110
|
for ( const child of context.children )
|
|
100
111
|
mountContext( child );
|
|
101
112
|
}
|
|
102
113
|
|
|
114
|
+
if ( context.refs != null ) {
|
|
115
|
+
for ( const ref of context.refs )
|
|
116
|
+
ref.callback( ref.element );
|
|
117
|
+
}
|
|
118
|
+
|
|
103
119
|
if ( context.mount != null ) {
|
|
104
120
|
for ( const callback of context.mount )
|
|
105
121
|
callback();
|
|
@@ -113,7 +129,13 @@ function destroyContext( context ) {
|
|
|
113
129
|
context.destroy = null;
|
|
114
130
|
}
|
|
115
131
|
|
|
116
|
-
context.
|
|
132
|
+
context.mount = null;
|
|
133
|
+
|
|
134
|
+
if ( context.refs != null ) {
|
|
135
|
+
for ( const ref of context.refs )
|
|
136
|
+
ref.callback( null );
|
|
137
|
+
context.refs = null;
|
|
138
|
+
}
|
|
117
139
|
|
|
118
140
|
if ( context.scope.length > 0 ) {
|
|
119
141
|
destroyScope( context.scope );
|
|
@@ -125,6 +147,8 @@ function destroyContext( context ) {
|
|
|
125
147
|
destroyContext( child );
|
|
126
148
|
context.children = null;
|
|
127
149
|
}
|
|
150
|
+
|
|
151
|
+
context.services = null;
|
|
128
152
|
}
|
|
129
153
|
|
|
130
154
|
function provide( key, value ) {
|
|
@@ -150,15 +174,17 @@ function setClasses( element, classes ) {
|
|
|
150
174
|
if ( Array.isArray( value ) ) {
|
|
151
175
|
element.className = '';
|
|
152
176
|
element.classList.add( ...value );
|
|
153
|
-
} else {
|
|
177
|
+
} else if ( value != null ) {
|
|
154
178
|
element.className = value;
|
|
179
|
+
} else {
|
|
180
|
+
element.removeAttribute( 'class' );
|
|
155
181
|
}
|
|
156
182
|
} );
|
|
157
183
|
} else if ( isPlainObject( classes ) ) {
|
|
158
184
|
setClassesObject( element, classes );
|
|
159
185
|
} else if ( Array.isArray( classes ) ) {
|
|
160
186
|
setClassesArray( element, classes );
|
|
161
|
-
} else {
|
|
187
|
+
} else if ( classes != null ) {
|
|
162
188
|
element.className = classes;
|
|
163
189
|
}
|
|
164
190
|
}
|
|
@@ -197,7 +223,7 @@ function setClassesArray( element, classes ) {
|
|
|
197
223
|
} );
|
|
198
224
|
} else if ( isPlainObject( item ) ) {
|
|
199
225
|
setClassesObject( element, item );
|
|
200
|
-
} else {
|
|
226
|
+
} else if ( item != null ) {
|
|
201
227
|
element.classList.add( item );
|
|
202
228
|
}
|
|
203
229
|
}
|
|
@@ -626,13 +652,15 @@ function setStyles( element, styles ) {
|
|
|
626
652
|
element.style = '';
|
|
627
653
|
for ( const [ key, value ] of Object.entries( value ) )
|
|
628
654
|
setStyleProperty( element, key, value );
|
|
629
|
-
} else {
|
|
655
|
+
} else if ( value != null ) {
|
|
630
656
|
element.style = value;
|
|
657
|
+
} else {
|
|
658
|
+
element.removeAttribute( 'style' );
|
|
631
659
|
}
|
|
632
660
|
} );
|
|
633
661
|
} else if ( isPlainObject( styles ) ) {
|
|
634
662
|
setStylesObject( element, styles );
|
|
635
|
-
} else {
|
|
663
|
+
} else if ( styles != null ) {
|
|
636
664
|
element.style = styles;
|
|
637
665
|
}
|
|
638
666
|
}
|
|
@@ -640,13 +668,15 @@ function setStyles( element, styles ) {
|
|
|
640
668
|
function setStylesObject( element, styles ) {
|
|
641
669
|
for ( const [ key, value ] of Object.entries( styles ) ) {
|
|
642
670
|
if ( typeof value == 'function' )
|
|
643
|
-
reactive( value, value => element
|
|
671
|
+
reactive( value, value => setStyleProperty( element, key, value ) );
|
|
644
672
|
else
|
|
645
673
|
setStyleProperty( element, key, value );
|
|
646
674
|
}
|
|
647
675
|
}
|
|
648
676
|
|
|
649
677
|
function setStyleProperty( element, key, value ) {
|
|
678
|
+
if ( value == null )
|
|
679
|
+
value = '';
|
|
650
680
|
if ( key.startsWith( '--' ) )
|
|
651
681
|
element.style.setProperty( key, value );
|
|
652
682
|
else
|
|
@@ -728,7 +758,7 @@ function setElementProperties( element, properties ) {
|
|
|
728
758
|
setStyles( element, value );
|
|
729
759
|
break;
|
|
730
760
|
case 'ref':
|
|
731
|
-
|
|
761
|
+
createRef( value, element );
|
|
732
762
|
break;
|
|
733
763
|
default:
|
|
734
764
|
setElementProperty( element, key, value );
|
|
@@ -742,9 +772,9 @@ function setElementProperty( element, key, value ) {
|
|
|
742
772
|
element.addEventListener( key.substring( 2 ), value );
|
|
743
773
|
} else if ( Properties.has( key ) ) {
|
|
744
774
|
if ( typeof value == 'function' )
|
|
745
|
-
reactive( value, value => element[ key ] = value );
|
|
775
|
+
reactive( value, value => element[ key ] = value != null ? value : '' );
|
|
746
776
|
else
|
|
747
|
-
element[ key ] = value;
|
|
777
|
+
element[ key ] = value != null ? value : '';
|
|
748
778
|
} else {
|
|
749
779
|
if ( typeof value == 'function' )
|
|
750
780
|
reactive( value, value => setElementAttribute( element, key, value ) );
|
package/package.json
CHANGED
|
@@ -1,20 +1,29 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "leaner",
|
|
3
|
-
"version": "0.1.
|
|
3
|
+
"version": "0.1.2",
|
|
4
4
|
"description": "Thin, reactive wrapper for DOM",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"files": [
|
|
7
7
|
"dist",
|
|
8
8
|
"types"
|
|
9
9
|
],
|
|
10
|
+
"module": "./dist/core.js",
|
|
11
|
+
"types": "./types/core.d.ts",
|
|
12
|
+
"typesVersions": {
|
|
13
|
+
"*": {
|
|
14
|
+
"web": [
|
|
15
|
+
"./types/web.d.ts"
|
|
16
|
+
]
|
|
17
|
+
}
|
|
18
|
+
},
|
|
10
19
|
"exports": {
|
|
11
20
|
".": {
|
|
12
|
-
"
|
|
13
|
-
"
|
|
21
|
+
"import": "./dist/core.js",
|
|
22
|
+
"types": "./types/core.d.ts"
|
|
14
23
|
},
|
|
15
24
|
"./web": {
|
|
16
|
-
"
|
|
17
|
-
"
|
|
25
|
+
"import": "./dist/web.js",
|
|
26
|
+
"types": "./types/web.d.ts"
|
|
18
27
|
},
|
|
19
28
|
"./dist/*": "./dist/*",
|
|
20
29
|
"./package.json": "./package.json"
|
package/types/web.d.ts
CHANGED
|
@@ -5,12 +5,12 @@ interface App {
|
|
|
5
5
|
use( callback: () => void ): void;
|
|
6
6
|
}
|
|
7
7
|
|
|
8
|
-
export declare function createApp( component: ( props: object, children: any[] ) => any )
|
|
8
|
+
export declare function createApp( component: ( props: object, children: any[] ) => any ): App;
|
|
9
9
|
|
|
10
|
-
export declare function inject( key: string | symbol )
|
|
10
|
+
export declare function inject( key: string | symbol ): any;
|
|
11
11
|
|
|
12
|
-
export declare function provide( key: string | symbol, value: any );
|
|
12
|
+
export declare function provide( key: string | symbol, value: any ): void;
|
|
13
13
|
|
|
14
|
-
export declare function onMount( callback: () => void );
|
|
14
|
+
export declare function onMount( callback: () => void ): void;
|
|
15
15
|
|
|
16
|
-
export declare function onDestroy( callback: () => void );
|
|
16
|
+
export declare function onDestroy( callback: () => void ): void;
|