@@ -42,6 +42,8 @@ export class HtmlQueryResultsRenderer {
4242 // TODO access this via getContent() for now
4343 public content : HTMLDivElement | null = null ;
4444
45+ private readonly taskLineRenderer : TaskLineRenderer ;
46+
4547 private readonly ulElementStack : HTMLUListElement [ ] = [ ] ;
4648 private readonly renderedListItems : Set < ListItem > = new Set < ListItem > ( ) ;
4749
@@ -63,6 +65,14 @@ export class HtmlQueryResultsRenderer {
6365 this . obsidianApp = obsidianApp ;
6466 this . textRenderer = textRenderer ;
6567 this . getters = getters ;
68+
69+ this . taskLineRenderer = new TaskLineRenderer ( {
70+ textRenderer : this . textRenderer ,
71+ obsidianApp : this . obsidianApp ,
72+ obsidianComponent : this . obsidianComponent ,
73+ taskLayoutOptions : this . getters . query ( ) . taskLayoutOptions ,
74+ queryLayoutOptions : this . getters . query ( ) . queryLayoutOptions ,
75+ } ) ;
6676 }
6777
6878 public get filePath ( ) : string | undefined {
@@ -213,15 +223,6 @@ export class HtmlQueryResultsRenderer {
213223 const groupingAttribute = this . getGroupingAttribute ( ) ;
214224 if ( groupingAttribute && groupingAttribute . length > 0 ) taskList . dataset . taskGroupBy = groupingAttribute ;
215225
216- const taskLineRenderer = new TaskLineRenderer ( {
217- textRenderer : this . textRenderer ,
218- obsidianApp : this . obsidianApp ,
219- obsidianComponent : this . obsidianComponent ,
220- parentUlElement : taskList ,
221- taskLayoutOptions : this . getters . query ( ) . taskLayoutOptions ,
222- queryLayoutOptions : this . getters . query ( ) . queryLayoutOptions ,
223- } ) ;
224-
225226 for ( const [ listItemIndex , listItem ] of listItems . entries ( ) ) {
226227 if ( this . getters . query ( ) . queryLayoutOptions . hideTree ) {
227228 /* Old-style rendering of tasks:
@@ -231,7 +232,7 @@ export class HtmlQueryResultsRenderer {
231232 * - Tasks are rendered in the order specified in 'sort by' instructions and default sort order.
232233 */
233234 if ( listItem instanceof Task ) {
234- await this . addTask ( taskLineRenderer , listItem , listItemIndex , queryRendererParameters , [ ] ) ;
235+ await this . addTask ( listItem , listItemIndex , queryRendererParameters , [ ] ) ;
235236 }
236237 } else {
237238 /* New-style rendering of tasks:
@@ -244,13 +245,7 @@ export class HtmlQueryResultsRenderer {
244245 * instructions and default sort order.
245246 * - Child tasks (and list items) are shown in their original order in their Markdown file.
246247 */
247- await this . addTaskOrListItemAndChildren (
248- taskLineRenderer ,
249- listItem ,
250- listItemIndex ,
251- queryRendererParameters ,
252- listItems ,
253- ) ;
248+ await this . addTaskOrListItemAndChildren ( listItem , listItemIndex , queryRendererParameters , listItems ) ;
254249 }
255250 }
256251 }
@@ -277,7 +272,6 @@ export class HtmlQueryResultsRenderer {
277272 }
278273
279274 private async addTaskOrListItemAndChildren (
280- taskLineRenderer : TaskLineRenderer ,
281275 listItem : ListItem ,
282276 taskIndex : number ,
283277 queryRendererParameters : QueryRendererParameters ,
@@ -291,7 +285,7 @@ export class HtmlQueryResultsRenderer {
291285 return ;
292286 }
293287
294- await this . createTaskOrListItem ( taskLineRenderer , listItem , taskIndex , queryRendererParameters ) ;
288+ await this . createTaskOrListItem ( listItem , taskIndex , queryRendererParameters ) ;
295289 this . renderedListItems . add ( listItem ) ;
296290
297291 for ( const childTask of listItem . children ) {
@@ -300,26 +294,28 @@ export class HtmlQueryResultsRenderer {
300294 }
301295
302296 private async createTaskOrListItem (
303- taskLineRenderer : TaskLineRenderer ,
304297 listItem : ListItem ,
305298 taskIndex : number ,
306299 queryRendererParameters : QueryRendererParameters ,
307300 ) : Promise < void > {
308301 if ( listItem instanceof Task ) {
309- await this . addTask ( taskLineRenderer , listItem , taskIndex , queryRendererParameters , listItem . children ) ;
302+ await this . addTask ( listItem , taskIndex , queryRendererParameters , listItem . children ) ;
310303 } else {
311- await this . addListItem ( taskLineRenderer , listItem , taskIndex , listItem . children , queryRendererParameters ) ;
304+ await this . addListItem ( listItem , taskIndex , listItem . children , queryRendererParameters ) ;
312305 }
313306 }
314307
315308 private async addListItem (
316- taskLineRenderer : TaskLineRenderer ,
317309 listItem : ListItem ,
318310 listItemIndex : number ,
319311 children : ListItem [ ] ,
320312 queryRendererParameters : QueryRendererParameters ,
321313 ) : Promise < void > {
322- const listItemElement = await taskLineRenderer . renderListItem ( this . currentULElement ( ) , listItem , listItemIndex ) ;
314+ const listItemElement = await this . taskLineRenderer . renderListItem (
315+ this . currentULElement ( ) ,
316+ listItem ,
317+ listItemIndex ,
318+ ) ;
323319
324320 if ( children . length > 0 ) {
325321 // TODO re-extract the method to include this back
@@ -334,14 +330,14 @@ export class HtmlQueryResultsRenderer {
334330 }
335331
336332 private async addTask (
337- taskLineRenderer : TaskLineRenderer ,
338333 task : Task ,
339334 taskIndex : number ,
340335 queryRendererParameters : QueryRendererParameters ,
341336 children : ListItem [ ] ,
342337 ) : Promise < void > {
343338 const isFilenameUnique = this . isFilenameUnique ( { task } , queryRendererParameters . allMarkdownFiles ) ;
344- const listItem = await taskLineRenderer . renderTaskLine ( {
339+ const listItem = await this . taskLineRenderer . renderTaskLine ( {
340+ parentUlElement : this . currentULElement ( ) ,
345341 task,
346342 taskIndex,
347343 isTaskInQueryFile : this . filePath === task . path ,
0 commit comments