77 stringifyDOM
88} from 'web-utility' ;
99
10- import { Defer } from './utility' ;
11-
1210export interface ComponentMeta
1311 extends ElementDefinitionOptions ,
1412 Partial < ShadowRootInit > {
@@ -24,7 +22,7 @@ export interface WebCell<P = {}> extends CustomElement {
2422 internals : ElementInternals ;
2523 renderer : DOMRenderer ;
2624 root : ParentNode ;
27- mounted : Defer ;
25+ mounted : boolean ;
2826 update : ( ) => void ;
2927 /**
3028 * Called at DOM tree updated
@@ -64,7 +62,7 @@ export function component(meta: ComponentMeta) {
6462 get root ( ) : ParentNode {
6563 return this . internals . shadowRoot || this ;
6664 }
67- mounted = new Defer ( ) ;
65+ mounted = false ;
6866 declare mountedCallback ?: ( ) => any ;
6967
7068 constructor ( ) {
@@ -75,8 +73,6 @@ export function component(meta: ComponentMeta) {
7573 }
7674
7775 connectedCallback ( ) {
78- this . update ( ) ;
79-
8076 const { mode } = meta ;
8177 const renderChildren = ! ( mode != null ) ;
8278
@@ -93,8 +89,12 @@ export function component(meta: ComponentMeta) {
9389
9490 super [ 'connectedCallback' ] ?.( ) ;
9591
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 ?.( ) ;
9898 }
9999
100100 declare render ?: ( ) => VNode ;
@@ -103,11 +103,18 @@ export function component(meta: ComponentMeta) {
103103 update ( ) {
104104 const vNode = this . render ?.( ) ;
105105
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
109112 ) ;
110- this . updatedCallback ?.( ) ;
113+
114+ if ( content != null ) {
115+ this . renderer . render ( content , this . root ) ;
116+ this . updatedCallback ?.( ) ;
117+ }
111118 }
112119
113120 disconnectedCallback ( ) {
0 commit comments