7
7
stringifyDOM
8
8
} from 'web-utility' ;
9
9
10
- import { Defer } from './utility' ;
11
-
12
10
export interface ComponentMeta
13
11
extends ElementDefinitionOptions ,
14
12
Partial < ShadowRootInit > {
@@ -24,7 +22,7 @@ export interface WebCell<P = {}> extends CustomElement {
24
22
internals : ElementInternals ;
25
23
renderer : DOMRenderer ;
26
24
root : ParentNode ;
27
- mounted : Defer ;
25
+ mounted : boolean ;
28
26
update : ( ) => void ;
29
27
/**
30
28
* Called at DOM tree updated
@@ -64,7 +62,7 @@ export function component(meta: ComponentMeta) {
64
62
get root ( ) : ParentNode {
65
63
return this . internals . shadowRoot || this ;
66
64
}
67
- mounted = new Defer ( ) ;
65
+ mounted = false ;
68
66
declare mountedCallback ?: ( ) => any ;
69
67
70
68
constructor ( ) {
@@ -75,8 +73,6 @@ export function component(meta: ComponentMeta) {
75
73
}
76
74
77
75
connectedCallback ( ) {
78
- this . update ( ) ;
79
-
80
76
const { mode } = meta ;
81
77
const renderChildren = ! ( mode != null ) ;
82
78
@@ -93,8 +89,12 @@ export function component(meta: ComponentMeta) {
93
89
94
90
super [ 'connectedCallback' ] ?.( ) ;
95
91
96
- this . mounted . promise . then ( this . mountedCallback ) ;
97
- this . mounted . resolve ( ) ;
92
+ if ( this . mounted ) return ;
93
+
94
+ this . update ( ) ;
95
+
96
+ this . mounted = true ;
97
+ this . mountedCallback ?.( ) ;
98
98
}
99
99
100
100
declare render ?: ( ) => VNode ;
@@ -103,11 +103,18 @@ export function component(meta: ComponentMeta) {
103
103
update ( ) {
104
104
const vNode = this . render ?.( ) ;
105
105
106
- this . renderer . render (
107
- isEmpty ( vNode ) ? meta . mode ? < slot /> : < > </ > : vNode ,
108
- this . root
106
+ const content = isEmpty ( vNode ) ? (
107
+ meta . mode ? (
108
+ < slot />
109
+ ) : null
110
+ ) : (
111
+ vNode
109
112
) ;
110
- this . updatedCallback ?.( ) ;
113
+
114
+ if ( content != null ) {
115
+ this . renderer . render ( content , this . root ) ;
116
+ this . updatedCallback ?.( ) ;
117
+ }
111
118
}
112
119
113
120
disconnectedCallback ( ) {
0 commit comments