diff --git a/src/js/core/game_state.ts b/src/js/core/game_state.ts index 9d58c380..1a452ca1 100644 --- a/src/js/core/game_state.ts +++ b/src/js/core/game_state.ts @@ -200,10 +200,12 @@ export class GameState { /** * Should return the element(s) to be displayed in the state. - * If null, {@link getInnerHTML} will be used instead. + * If not overridden, {@link getInnerHTML} will be used to provide the layout. */ protected getContentLayout(): Node { - return null; + const template = document.createElement("template"); + template.innerHTML = this.getInnerHTML(); + return template.content; } /** @@ -320,9 +322,6 @@ export class GameState { */ internalGetWrappedContent(): Node { const elements = this.getContentLayout(); - if (elements instanceof Node) { - return elements; - } if (Array.isArray(elements)) { const fragment = document.createDocumentFragment(); @@ -330,10 +329,7 @@ export class GameState { return fragment; } - // Fall back to deprecated HTML strings solution - const template = document.createElement("template"); - template.innerHTML = this.getInnerHTML(); - return template.content; + return elements; } /** diff --git a/src/js/core/textual_game_state.tsx b/src/js/core/textual_game_state.tsx index 95755223..7462769e 100644 --- a/src/js/core/textual_game_state.tsx +++ b/src/js/core/textual_game_state.tsx @@ -30,6 +30,11 @@ export abstract class TextualGameState extends GameState { return ""; } + /** + * Should return the element(s) to be displayed in the state. + * If not overridden, a default layout consisting of a back button, + * title, and content returned by {@link getInitialContent}. + */ protected override getContentLayout(): Node { let content = this.getInitialContent(); @@ -44,9 +49,7 @@ export abstract class TextualGameState extends GameState { `; } - const template = document.createElement("template"); - template.innerHTML = html; - content = template.content; + content = super.getContentLayout(); } return (