@@ -76,10 +76,22 @@ export const enum StyleSegmentIndex {
7676type composedContext = composedBackend . Context | domlikeBackend . Context
7777type composedElement = composedBackend . Element | domlikeBackend . Element
7878
79- type DestroyedBackendContext = { mode : BackendMode ; destroyed : true }
80- const DESTROYED_SHADOW_BACKEND_CONTEXT = { mode : BackendMode . Shadow , destroyed : true } as const
81- const DESTROYED_COMPOSED_BACKEND_CONTEXT = { mode : BackendMode . Composed , destroyed : true } as const
82- const DESTROYED_DOMLIKE_BACKEND_CONTEXT = { mode : BackendMode . Domlike , destroyed : true } as const
79+ type DestroyedBackendContext = { mode : BackendMode ; destroyed : true ; dropBackendAfterRelease : true }
80+ const DESTROYED_SHADOW_BACKEND_CONTEXT = {
81+ mode : BackendMode . Shadow ,
82+ destroyed : true ,
83+ dropBackendAfterRelease : true ,
84+ } as const
85+ const DESTROYED_COMPOSED_BACKEND_CONTEXT = {
86+ mode : BackendMode . Composed ,
87+ destroyed : true ,
88+ dropBackendAfterRelease : true ,
89+ } as const
90+ const DESTROYED_DOMLIKE_BACKEND_CONTEXT = {
91+ mode : BackendMode . Domlike ,
92+ destroyed : true ,
93+ dropBackendAfterRelease : true ,
94+ } as const
8395
8496export type DoubleLinkedList < T > = {
8597 value : T
@@ -410,14 +422,16 @@ export class Element implements NodeCast {
410422 ; ( this . _$backendElement as backend . Element | composedBackend . Element ) . release ( )
411423 if ( ENV . DEV ) performanceMeasureEnd ( )
412424 }
413- this . _$backendElement = null
414425 }
415- if ( BM . COMPOSED || ( BM . DYNAMIC && this . getBackendMode ( ) === BackendMode . Composed ) ) {
416- this . _$nodeTreeContext = DESTROYED_COMPOSED_BACKEND_CONTEXT
417- } else if ( BM . DOMLIKE || ( BM . DYNAMIC && this . getBackendMode ( ) === BackendMode . Domlike ) ) {
418- this . _$nodeTreeContext = DESTROYED_DOMLIKE_BACKEND_CONTEXT
419- } else {
420- this . _$nodeTreeContext = DESTROYED_SHADOW_BACKEND_CONTEXT
426+ if ( this . _$nodeTreeContext . dropBackendAfterRelease ) {
427+ this . _$backendElement = null
428+ if ( BM . COMPOSED || ( BM . DYNAMIC && this . getBackendMode ( ) === BackendMode . Composed ) ) {
429+ this . _$nodeTreeContext = DESTROYED_COMPOSED_BACKEND_CONTEXT
430+ } else if ( BM . DOMLIKE || ( BM . DYNAMIC && this . getBackendMode ( ) === BackendMode . Domlike ) ) {
431+ this . _$nodeTreeContext = DESTROYED_DOMLIKE_BACKEND_CONTEXT
432+ } else {
433+ this . _$nodeTreeContext = DESTROYED_SHADOW_BACKEND_CONTEXT
434+ }
421435 }
422436 }
423437
0 commit comments