@@ -6,10 +6,11 @@ import { WorkElement } from "../export/objects";
6
6
* @param document Document the works belong to
7
7
*/
8
8
export function hideWorks ( works : WorkElement [ ] , document : Document , settings : { [ key : string ] : any } ) {
9
+ let parser = new DOMParser ( ) ;
9
10
works . forEach ( w => {
10
11
var reason = shouldHide ( w , settings ) ;
11
12
if ( reason != null )
12
- hideWork ( w , reason , document ) ;
13
+ hideWork ( w , reason , document , parser ) ;
13
14
} ) ;
14
15
}
15
16
@@ -33,13 +34,17 @@ function shouldHide(work: WorkElement, settings: { [key: string]: any }): string
33
34
* @param work Work to be hidden
34
35
* @param reason Reason why work should be hidden (from shouldHide method)
35
36
* @param document Document the work belongs to
37
+ * @param parser DOMParser to safely parse the work HTML
36
38
*/
37
- function hideWork ( work : WorkElement , reason : string , document : Document ) : void {
39
+ function hideWork ( work : WorkElement , reason : string , document : Document , parser : DOMParser ) : void {
38
40
let workElement = work . element ! ;
39
41
40
42
let cut = document . createElement ( 'div' ) ;
41
43
cut . className = 'cut display-on-show' ;
42
- cut . innerHTML = work . element ! . innerHTML ;
44
+ let workNodes = parser . parseFromString ( work . element ! . innerHTML , 'text/html' ) . body . childNodes ;
45
+ workNodes . forEach ( element => {
46
+ cut . append ( element ) ;
47
+ } ) ;
43
48
44
49
let fold : HTMLElement = document . createElement ( "div" ) ;
45
50
fold . innerHTML = `
@@ -68,8 +73,8 @@ function hideWork(work: WorkElement, reason: string, document: Document): void {
68
73
` ;
69
74
fold = fold . firstElementChild as HTMLElement ;
70
75
71
- let reasonContainer = fold . querySelector ( '.reason-hidden' ) ! ;
72
- reasonContainer . innerHTML = reason ;
76
+ let reasonContainer = fold . querySelector ( '.reason-hidden' ) as HTMLElement ;
77
+ reasonContainer . innerText = reason ;
73
78
workElement . replaceChildren ( ) ;
74
79
workElement . classList . add ( 'work-hidden' ) ;
75
80
workElement . append ( fold , cut ) ;
0 commit comments