@jupyterlab/toc 5.3.0-alpha.7 → 6.0.0-alpha.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (39) hide show
  1. package/lib/generators/markdown/options_manager.d.ts +1 -1
  2. package/lib/generators/markdown/options_manager.js +1 -3
  3. package/lib/generators/markdown/options_manager.js.map +1 -1
  4. package/lib/generators/markdown/render.d.ts +0 -1
  5. package/lib/generators/notebook/append_heading.d.ts +1 -5
  6. package/lib/generators/notebook/append_heading.js +1 -5
  7. package/lib/generators/notebook/append_heading.js.map +1 -1
  8. package/lib/generators/notebook/get_code_cell_heading.d.ts +2 -2
  9. package/lib/generators/notebook/get_code_cell_heading.js +4 -2
  10. package/lib/generators/notebook/get_code_cell_heading.js.map +1 -1
  11. package/lib/generators/notebook/get_markdown_heading.d.ts +2 -2
  12. package/lib/generators/notebook/get_markdown_heading.js +4 -1
  13. package/lib/generators/notebook/get_markdown_heading.js.map +1 -1
  14. package/lib/generators/notebook/get_rendered_html_heading.d.ts +2 -2
  15. package/lib/generators/notebook/get_rendered_html_heading.js +6 -3
  16. package/lib/generators/notebook/get_rendered_html_heading.js.map +1 -1
  17. package/lib/generators/notebook/index.d.ts +1 -6
  18. package/lib/generators/notebook/index.js +155 -119
  19. package/lib/generators/notebook/index.js.map +1 -1
  20. package/lib/generators/notebook/options_manager.d.ts +1 -1
  21. package/lib/generators/notebook/options_manager.js +1 -3
  22. package/lib/generators/notebook/options_manager.js.map +1 -1
  23. package/lib/generators/notebook/render.d.ts +2 -7
  24. package/lib/generators/notebook/render.js +39 -61
  25. package/lib/generators/notebook/render.js.map +1 -1
  26. package/lib/generators/notebook/tagstool/index.js.map +1 -1
  27. package/lib/generators/notebook/toolbar_generator.d.ts +1 -1
  28. package/lib/generators/python/render.d.ts +0 -1
  29. package/lib/registry.d.ts +1 -2
  30. package/lib/registry.js +0 -11
  31. package/lib/registry.js.map +1 -1
  32. package/lib/toc.js +4 -0
  33. package/lib/toc.js.map +1 -1
  34. package/lib/toc_item.js.map +1 -1
  35. package/lib/utils/headings.d.ts +25 -17
  36. package/lib/utils/headings.js +20 -4
  37. package/lib/utils/headings.js.map +1 -1
  38. package/package.json +20 -19
  39. package/style/base.css +29 -2
@@ -30,7 +30,7 @@ interface IOptions {
30
30
  *
31
31
  * @private
32
32
  */
33
- declare class OptionsManager extends Registry.IOptionsManager {
33
+ declare class OptionsManager implements Registry.IOptionsManager {
34
34
  /**
35
35
  * Returns an options manager.
36
36
  *
@@ -1,13 +1,12 @@
1
1
  // Copyright (c) Jupyter Development Team.
2
2
  // Distributed under the terms of the Modified BSD License.
3
3
  import { nullTranslator } from '@jupyterlab/translation';
4
- import { TableOfContentsRegistry as Registry } from '../../registry';
5
4
  /**
6
5
  * Class for managing Markdown ToC generator options.
7
6
  *
8
7
  * @private
9
8
  */
10
- class OptionsManager extends Registry.IOptionsManager {
9
+ class OptionsManager {
11
10
  /**
12
11
  * Returns an options manager.
13
12
  *
@@ -16,7 +15,6 @@ class OptionsManager extends Registry.IOptionsManager {
16
15
  * @returns options manager
17
16
  */
18
17
  constructor(widget, options) {
19
- super();
20
18
  this._numbering = options.numbering;
21
19
  this._numberingH1 = options.numberingH1;
22
20
  this._widget = widget;
@@ -1 +1 @@
1
- {"version":3,"file":"options_manager.js","sourceRoot":"","sources":["../../../src/generators/markdown/options_manager.ts"],"names":[],"mappings":"AAAA,0CAA0C;AAC1C,2DAA2D;AAG3D,OAAO,EAAe,cAAc,EAAE,MAAM,yBAAyB,CAAC;AACtE,OAAO,EAAE,uBAAuB,IAAI,QAAQ,EAAE,MAAM,gBAAgB,CAAC;AA8BrE;;;;GAIG;AACH,MAAM,cAAe,SAAQ,QAAQ,CAAC,eAAe;IACnD;;;;;;OAMG;IACH,YAAY,MAAuB,EAAE,OAAiB;QACpD,KAAK,EAAE,CAAC;QACR,IAAI,CAAC,UAAU,GAAG,OAAO,CAAC,SAAS,CAAC;QACpC,IAAI,CAAC,YAAY,GAAG,OAAO,CAAC,WAAW,CAAC;QACxC,IAAI,CAAC,OAAO,GAAG,MAAM,CAAC;QACtB,IAAI,CAAC,UAAU,GAAG,OAAO,CAAC,UAAU,IAAI,cAAc,CAAC;QACvD,IAAI,CAAC,SAAS,GAAG,OAAO,CAAC,SAAS,CAAC;IACrC,CAAC;IAOD;;OAEG;IACH,IAAI,SAAS,CAAC,KAAc;QAC1B,IAAI,CAAC,UAAU,GAAG,KAAK,CAAC;QACxB,IAAI,CAAC,OAAO,CAAC,MAAM,EAAE,CAAC;IACxB,CAAC;IAED,IAAI,SAAS;QACX,OAAO,IAAI,CAAC,UAAU,CAAC;IACzB,CAAC;IAED;;OAEG;IACH,IAAI,WAAW,CAAC,KAAc;QAC5B,IAAI,IAAI,CAAC,YAAY,IAAI,KAAK,EAAE;YAC9B,IAAI,CAAC,YAAY,GAAG,KAAK,CAAC;YAC1B,IAAI,CAAC,OAAO,CAAC,MAAM,EAAE,CAAC;SACvB;IACH,CAAC;IAED,IAAI,WAAW;QACb,OAAO,IAAI,CAAC,YAAY,CAAC;IAC3B,CAAC;IAED;;;;;;;;OAQG;IACH,iBAAiB,CAAC,SAAkB,EAAE,WAAoB;QACxD,IAAI,CAAC,UAAU,GAAG,SAAS,CAAC;QAC5B,IAAI,CAAC,YAAY,GAAG,WAAW,CAAC;QAChC,IAAI,CAAC,OAAO,CAAC,MAAM,EAAE,CAAC;IACxB,CAAC;CAMF;AAED;;GAEG;AACH,OAAO,EAAE,cAAc,EAAE,CAAC"}
1
+ {"version":3,"file":"options_manager.js","sourceRoot":"","sources":["../../../src/generators/markdown/options_manager.ts"],"names":[],"mappings":"AAAA,0CAA0C;AAC1C,2DAA2D;AAG3D,OAAO,EAAe,cAAc,EAAE,MAAM,yBAAyB,CAAC;AA+BtE;;;;GAIG;AACH,MAAM,cAAc;IAClB;;;;;;OAMG;IACH,YAAY,MAAuB,EAAE,OAAiB;QACpD,IAAI,CAAC,UAAU,GAAG,OAAO,CAAC,SAAS,CAAC;QACpC,IAAI,CAAC,YAAY,GAAG,OAAO,CAAC,WAAW,CAAC;QACxC,IAAI,CAAC,OAAO,GAAG,MAAM,CAAC;QACtB,IAAI,CAAC,UAAU,GAAG,OAAO,CAAC,UAAU,IAAI,cAAc,CAAC;QACvD,IAAI,CAAC,SAAS,GAAG,OAAO,CAAC,SAAS,CAAC;IACrC,CAAC;IAOD;;OAEG;IACH,IAAI,SAAS,CAAC,KAAc;QAC1B,IAAI,CAAC,UAAU,GAAG,KAAK,CAAC;QACxB,IAAI,CAAC,OAAO,CAAC,MAAM,EAAE,CAAC;IACxB,CAAC;IAED,IAAI,SAAS;QACX,OAAO,IAAI,CAAC,UAAU,CAAC;IACzB,CAAC;IAED;;OAEG;IACH,IAAI,WAAW,CAAC,KAAc;QAC5B,IAAI,IAAI,CAAC,YAAY,IAAI,KAAK,EAAE;YAC9B,IAAI,CAAC,YAAY,GAAG,KAAK,CAAC;YAC1B,IAAI,CAAC,OAAO,CAAC,MAAM,EAAE,CAAC;SACvB;IACH,CAAC;IAED,IAAI,WAAW;QACb,OAAO,IAAI,CAAC,YAAY,CAAC;IAC3B,CAAC;IAED;;;;;;;;OAQG;IACH,iBAAiB,CAAC,SAAkB,EAAE,WAAoB;QACxD,IAAI,CAAC,UAAU,GAAG,SAAS,CAAC;QAC5B,IAAI,CAAC,YAAY,GAAG,WAAW,CAAC;QAChC,IAAI,CAAC,OAAO,CAAC,MAAM,EAAE,CAAC;IACxB,CAAC;CAMF;AAED;;GAEG;AACH,OAAO,EAAE,cAAc,EAAE,CAAC"}
@@ -1,4 +1,3 @@
1
- /// <reference types="react" />
2
1
  import { INumberedHeading } from '../../utils/headings';
3
2
  import { OptionsManager } from './options_manager';
4
3
  /**
@@ -10,8 +10,4 @@ import { INotebookHeading } from '../../utils/headings';
10
10
  * @param tags - filter tags
11
11
  * @returns result tuple
12
12
  */
13
- declare function appendHeading(headings: INotebookHeading[], heading: INotebookHeading, prev: INotebookHeading | null, collapseLevel: number, tags: string[]): [INotebookHeading[], INotebookHeading | null];
14
- /**
15
- * Exports.
16
- */
17
- export { appendHeading };
13
+ export declare function appendHeading(headings: INotebookHeading[], heading: INotebookHeading, prev: INotebookHeading | null, collapseLevel: number, tags: string[]): [INotebookHeading[], INotebookHeading | null];
@@ -12,7 +12,7 @@ import { isHeadingFiltered } from './is_heading_filtered';
12
12
  * @param tags - filter tags
13
13
  * @returns result tuple
14
14
  */
15
- function appendHeading(headings, heading, prev, collapseLevel, tags) {
15
+ export function appendHeading(headings, heading, prev, collapseLevel, tags) {
16
16
  if (heading && !isHeadingFiltered(heading, tags) && heading.text) {
17
17
  // Determine whether this heading is a child of a "header" notebook heading...
18
18
  if (prev && prev.type === 'header') {
@@ -30,8 +30,4 @@ function appendHeading(headings, heading, prev, collapseLevel, tags) {
30
30
  }
31
31
  return [headings, prev];
32
32
  }
33
- /**
34
- * Exports.
35
- */
36
- export { appendHeading };
37
33
  //# sourceMappingURL=append_heading.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"append_heading.js","sourceRoot":"","sources":["../../../src/generators/notebook/append_heading.ts"],"names":[],"mappings":"AAAA,0CAA0C;AAC1C,2DAA2D;AAG3D,OAAO,EAAE,iBAAiB,EAAE,MAAM,uBAAuB,CAAC;AAE1D;;;;;;;;;;GAUG;AACH,SAAS,aAAa,CACpB,QAA4B,EAC5B,OAAyB,EACzB,IAA6B,EAC7B,aAAqB,EACrB,IAAc;IAEd,IAAI,OAAO,IAAI,CAAC,iBAAiB,CAAC,OAAO,EAAE,IAAI,CAAC,IAAI,OAAO,CAAC,IAAI,EAAE;QAChE,8EAA8E;QAC9E,IAAI,IAAI,IAAI,IAAI,CAAC,IAAI,KAAK,QAAQ,EAAE;YAClC,KAAK,IAAI,CAAC,GAAG,QAAQ,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC,IAAI,CAAC,EAAE,CAAC,EAAE,EAAE;gBAC7C,IAAI,QAAQ,CAAC,CAAC,CAAC,KAAK,IAAI,EAAE;oBACxB,oKAAoK;oBACpK,QAAQ,CAAC,CAAC,CAAC,CAAC,QAAQ,GAAG,IAAI,CAAC;iBAC7B;aACF;SACF;QACD,IAAI,aAAa,GAAG,CAAC,EAAE;YACrB,QAAQ,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;SACxB;QACD,IAAI,GAAG,OAAO,CAAC;KAChB;IACD,OAAO,CAAC,QAAQ,EAAE,IAAI,CAAC,CAAC;AAC1B,CAAC;AAED;;GAEG;AACH,OAAO,EAAE,aAAa,EAAE,CAAC"}
1
+ {"version":3,"file":"append_heading.js","sourceRoot":"","sources":["../../../src/generators/notebook/append_heading.ts"],"names":[],"mappings":"AAAA,0CAA0C;AAC1C,2DAA2D;AAG3D,OAAO,EAAE,iBAAiB,EAAE,MAAM,uBAAuB,CAAC;AAE1D;;;;;;;;;;GAUG;AACH,MAAM,UAAU,aAAa,CAC3B,QAA4B,EAC5B,OAAyB,EACzB,IAA6B,EAC7B,aAAqB,EACrB,IAAc;IAEd,IAAI,OAAO,IAAI,CAAC,iBAAiB,CAAC,OAAO,EAAE,IAAI,CAAC,IAAI,OAAO,CAAC,IAAI,EAAE;QAChE,8EAA8E;QAC9E,IAAI,IAAI,IAAI,IAAI,CAAC,IAAI,KAAK,QAAQ,EAAE;YAClC,KAAK,IAAI,CAAC,GAAG,QAAQ,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC,IAAI,CAAC,EAAE,CAAC,EAAE,EAAE;gBAC7C,IAAI,QAAQ,CAAC,CAAC,CAAC,KAAK,IAAI,EAAE;oBACxB,oKAAoK;oBACpK,QAAQ,CAAC,CAAC,CAAC,CAAC,QAAQ,GAAG,IAAI,CAAC;iBAC7B;aACF;SACF;QACD,IAAI,aAAa,GAAG,CAAC,EAAE;YACrB,QAAQ,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;SACxB;QACD,IAAI,GAAG,OAAO,CAAC;KAChB;IACD,OAAO,CAAC,QAAQ,EAAE,IAAI,CAAC,CAAC;AAC1B,CAAC"}
@@ -1,5 +1,5 @@
1
1
  import { Cell } from '@jupyterlab/cells';
2
- import { INotebookHeading } from '../../utils/headings';
2
+ import { INotebookHeading, RunningStatus } from '../../utils/headings';
3
3
  /**
4
4
  * Returns a "click" handler.
5
5
  *
@@ -20,7 +20,7 @@ declare type onClickFactory = (line: number) => () => void;
20
20
  * @param index - index of referenced cell relative to other cells in the notebook
21
21
  * @returns notebook heading
22
22
  */
23
- declare function getCodeCellHeading(text: string, onClick: onClickFactory, executionCount: string, lastLevel: number, cellRef: Cell, index?: number): INotebookHeading;
23
+ declare function getCodeCellHeading(text: string, onClick: onClickFactory, executionCount: string, lastLevel: number, cellRef: Cell, index?: number, isRunning?: RunningStatus): INotebookHeading;
24
24
  /**
25
25
  * Exports.
26
26
  */
@@ -1,5 +1,6 @@
1
1
  // Copyright (c) Jupyter Development Team.
2
2
  // Distributed under the terms of the Modified BSD License.
3
+ import { RunningStatus } from '../../utils/headings';
3
4
  /**
4
5
  * Returns a code entry notebook heading from a code string.
5
6
  *
@@ -12,7 +13,7 @@
12
13
  * @param index - index of referenced cell relative to other cells in the notebook
13
14
  * @returns notebook heading
14
15
  */
15
- function getCodeCellHeading(text, onClick, executionCount, lastLevel, cellRef, index = -1) {
16
+ function getCodeCellHeading(text, onClick, executionCount, lastLevel, cellRef, index = -1, isRunning = RunningStatus.Idle) {
16
17
  let headings = [];
17
18
  if (index === -1) {
18
19
  console.warn('Deprecation warning! index argument will become mandatory in the next version');
@@ -34,7 +35,8 @@ function getCodeCellHeading(text, onClick, executionCount, lastLevel, cellRef, i
34
35
  prompt: executionCount,
35
36
  cellRef: cellRef,
36
37
  hasChild: false,
37
- index: index
38
+ index: index,
39
+ isRunning
38
40
  });
39
41
  }
40
42
  return headings[0];
@@ -1 +1 @@
1
- {"version":3,"file":"get_code_cell_heading.js","sourceRoot":"","sources":["../../../src/generators/notebook/get_code_cell_heading.ts"],"names":[],"mappings":"AAAA,0CAA0C;AAC1C,2DAA2D;AAc3D;;;;;;;;;;;GAWG;AACH,SAAS,kBAAkB,CACzB,IAAY,EACZ,OAAuB,EACvB,cAAsB,EACtB,SAAiB,EACjB,OAAa,EACb,QAAgB,CAAC,CAAC;IAElB,IAAI,QAAQ,GAAuB,EAAE,CAAC;IACtC,IAAI,KAAK,KAAK,CAAC,CAAC,EAAE;QAChB,OAAO,CAAC,IAAI,CACV,+EAA+E,CAChF,CAAC;KACH;IACD,IAAI,IAAI,EAAE;QACR,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;QAC/B,MAAM,GAAG,GAAG,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC;QACtC,IAAI,GAAG,GAAG,EAAE,CAAC;QACb,IAAI,CAAC,GAAG,CAAC,CAAC;QACV,OAAO,CAAC,GAAG,GAAG,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE;YACvB,GAAG,IAAI,KAAK,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC;SACxB;QACD,GAAG,IAAI,KAAK,CAAC,CAAC,CAAC,CAAC;QAChB,QAAQ,CAAC,IAAI,CAAC;YACZ,IAAI,EAAE,GAAG;YACT,KAAK,EAAE,SAAS,GAAG,CAAC;YACpB,OAAO,EAAE,OAAO,CAAC,CAAC,CAAC;YACnB,IAAI,EAAE,MAAM;YACZ,MAAM,EAAE,cAAc;YACtB,OAAO,EAAE,OAAO;YAChB,QAAQ,EAAE,KAAK;YACf,KAAK,EAAE,KAAK;SACb,CAAC,CAAC;KACJ;IACD,OAAO,QAAQ,CAAC,CAAC,CAAC,CAAC;AACrB,CAAC;AAED;;GAEG;AACH,OAAO,EAAE,kBAAkB,EAAE,CAAC"}
1
+ {"version":3,"file":"get_code_cell_heading.js","sourceRoot":"","sources":["../../../src/generators/notebook/get_code_cell_heading.ts"],"names":[],"mappings":"AAAA,0CAA0C;AAC1C,2DAA2D;AAG3D,OAAO,EAAoB,aAAa,EAAE,MAAM,sBAAsB,CAAC;AAWvE;;;;;;;;;;;GAWG;AACH,SAAS,kBAAkB,CACzB,IAAY,EACZ,OAAuB,EACvB,cAAsB,EACtB,SAAiB,EACjB,OAAa,EACb,QAAgB,CAAC,CAAC,EAClB,SAAS,GAAG,aAAa,CAAC,IAAI;IAE9B,IAAI,QAAQ,GAAuB,EAAE,CAAC;IACtC,IAAI,KAAK,KAAK,CAAC,CAAC,EAAE;QAChB,OAAO,CAAC,IAAI,CACV,+EAA+E,CAChF,CAAC;KACH;IACD,IAAI,IAAI,EAAE;QACR,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;QAC/B,MAAM,GAAG,GAAG,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC;QACtC,IAAI,GAAG,GAAG,EAAE,CAAC;QACb,IAAI,CAAC,GAAG,CAAC,CAAC;QACV,OAAO,CAAC,GAAG,GAAG,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE;YACvB,GAAG,IAAI,KAAK,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC;SACxB;QACD,GAAG,IAAI,KAAK,CAAC,CAAC,CAAC,CAAC;QAChB,QAAQ,CAAC,IAAI,CAAC;YACZ,IAAI,EAAE,GAAG;YACT,KAAK,EAAE,SAAS,GAAG,CAAC;YACpB,OAAO,EAAE,OAAO,CAAC,CAAC,CAAC;YACnB,IAAI,EAAE,MAAM;YACZ,MAAM,EAAE,cAAc;YACtB,OAAO,EAAE,OAAO;YAChB,QAAQ,EAAE,KAAK;YACf,KAAK,EAAE,KAAK;YACZ,SAAS;SACV,CAAC,CAAC;KACJ;IACD,OAAO,QAAQ,CAAC,CAAC,CAAC,CAAC;AACrB,CAAC;AAED;;GAEG;AACH,OAAO,EAAE,kBAAkB,EAAE,CAAC"}
@@ -1,5 +1,5 @@
1
1
  import { Cell } from '@jupyterlab/cells';
2
- import { INotebookHeading } from '../../utils/headings';
2
+ import { INotebookHeading, RunningStatus } from '../../utils/headings';
3
3
  import { INumberingDictionary } from '../../utils/numbering_dictionary';
4
4
  /**
5
5
  * Returns a "click" handler.
@@ -21,7 +21,7 @@ declare type onClickFactory = (line: number) => () => void;
21
21
  * @param index - index of referenced cell relative to other cells in the notebook
22
22
  * @returns notebook heading
23
23
  */
24
- declare function getMarkdownHeadings(text: string, onClick: onClickFactory, dict: INumberingDictionary, lastLevel: number, cellRef: Cell, index?: number): INotebookHeading[];
24
+ declare function getMarkdownHeadings(text: string, onClick: onClickFactory, dict: INumberingDictionary, lastLevel: number, cellRef: Cell, index?: number, isRunning?: RunningStatus): INotebookHeading[];
25
25
  /**
26
26
  * Exports.
27
27
  */
@@ -1,6 +1,7 @@
1
1
  // Copyright (c) Jupyter Development Team.
2
2
  // Distributed under the terms of the Modified BSD License.
3
3
  import { generateNumbering } from '../../utils/generate_numbering';
4
+ import { RunningStatus } from '../../utils/headings';
4
5
  import { parseHeading } from '../../utils/parse_heading';
5
6
  /**
6
7
  * Parses a Markdown string and returns a notebook heading.
@@ -14,7 +15,7 @@ import { parseHeading } from '../../utils/parse_heading';
14
15
  * @param index - index of referenced cell relative to other cells in the notebook
15
16
  * @returns notebook heading
16
17
  */
17
- function getMarkdownHeadings(text, onClick, dict, lastLevel, cellRef, index = -1) {
18
+ function getMarkdownHeadings(text, onClick, dict, lastLevel, cellRef, index = -1, isRunning = RunningStatus.Idle) {
18
19
  const callback = onClick(0);
19
20
  let headings = [];
20
21
  if (index === -1) {
@@ -31,6 +32,7 @@ function getMarkdownHeadings(text, onClick, dict, lastLevel, cellRef, index = -1
31
32
  type: 'header',
32
33
  cellRef: cellRef,
33
34
  hasChild: false,
35
+ isRunning,
34
36
  index
35
37
  });
36
38
  }
@@ -42,6 +44,7 @@ function getMarkdownHeadings(text, onClick, dict, lastLevel, cellRef, index = -1
42
44
  type: 'markdown',
43
45
  cellRef: cellRef,
44
46
  hasChild: false,
47
+ isRunning,
45
48
  index
46
49
  });
47
50
  }
@@ -1 +1 @@
1
- {"version":3,"file":"get_markdown_heading.js","sourceRoot":"","sources":["../../../src/generators/notebook/get_markdown_heading.ts"],"names":[],"mappings":"AAAA,0CAA0C;AAC1C,2DAA2D;AAG3D,OAAO,EAAE,iBAAiB,EAAE,MAAM,gCAAgC,CAAC;AAGnE,OAAO,EAAE,YAAY,EAAE,MAAM,2BAA2B,CAAC;AAWzD;;;;;;;;;;;GAWG;AACH,SAAS,mBAAmB,CAC1B,IAAY,EACZ,OAAuB,EACvB,IAA0B,EAC1B,SAAiB,EACjB,OAAa,EACb,QAAgB,CAAC,CAAC;IAElB,MAAM,QAAQ,GAAG,OAAO,CAAC,CAAC,CAAC,CAAC;IAC5B,IAAI,QAAQ,GAAuB,EAAE,CAAC;IACtC,IAAI,KAAK,KAAK,CAAC,CAAC,EAAE;QAChB,OAAO,CAAC,IAAI,CACV,+EAA+E,CAChF,CAAC;KACH;IACD,KAAK,MAAM,IAAI,IAAI,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,EAAE;QACnC,MAAM,OAAO,GAAG,YAAY,CAAC,IAAI,CAAC,CAAC;QACnC,IAAI,OAAO,EAAE;YACX,QAAQ,CAAC,IAAI,CAAC;gBACZ,IAAI,EAAE,OAAO,CAAC,IAAI;gBAClB,KAAK,EAAE,OAAO,CAAC,KAAK;gBACpB,SAAS,EAAE,iBAAiB,CAAC,IAAI,EAAE,OAAO,CAAC,KAAK,CAAC;gBACjD,OAAO,EAAE,QAAQ;gBACjB,IAAI,EAAE,QAAQ;gBACd,OAAO,EAAE,OAAO;gBAChB,QAAQ,EAAE,KAAK;gBACf,KAAK;aACN,CAAC,CAAC;SACJ;aAAM;YACL,QAAQ,CAAC,IAAI,CAAC;gBACZ,IAAI,EAAE,IAAI;gBACV,KAAK,EAAE,SAAS,GAAG,CAAC;gBACpB,OAAO,EAAE,QAAQ;gBACjB,IAAI,EAAE,UAAU;gBAChB,OAAO,EAAE,OAAO;gBAChB,QAAQ,EAAE,KAAK;gBACf,KAAK;aACN,CAAC,CAAC;SACJ;KACF;IACD,OAAO,QAAQ,CAAC;AAClB,CAAC;AAED;;GAEG;AACH,OAAO,EAAE,mBAAmB,EAAE,CAAC"}
1
+ {"version":3,"file":"get_markdown_heading.js","sourceRoot":"","sources":["../../../src/generators/notebook/get_markdown_heading.ts"],"names":[],"mappings":"AAAA,0CAA0C;AAC1C,2DAA2D;AAG3D,OAAO,EAAE,iBAAiB,EAAE,MAAM,gCAAgC,CAAC;AACnE,OAAO,EAAoB,aAAa,EAAE,MAAM,sBAAsB,CAAC;AAEvE,OAAO,EAAE,YAAY,EAAE,MAAM,2BAA2B,CAAC;AAWzD;;;;;;;;;;;GAWG;AACH,SAAS,mBAAmB,CAC1B,IAAY,EACZ,OAAuB,EACvB,IAA0B,EAC1B,SAAiB,EACjB,OAAa,EACb,QAAgB,CAAC,CAAC,EAClB,SAAS,GAAG,aAAa,CAAC,IAAI;IAE9B,MAAM,QAAQ,GAAG,OAAO,CAAC,CAAC,CAAC,CAAC;IAC5B,IAAI,QAAQ,GAAuB,EAAE,CAAC;IACtC,IAAI,KAAK,KAAK,CAAC,CAAC,EAAE;QAChB,OAAO,CAAC,IAAI,CACV,+EAA+E,CAChF,CAAC;KACH;IACD,KAAK,MAAM,IAAI,IAAI,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,EAAE;QACnC,MAAM,OAAO,GAAG,YAAY,CAAC,IAAI,CAAC,CAAC;QACnC,IAAI,OAAO,EAAE;YACX,QAAQ,CAAC,IAAI,CAAC;gBACZ,IAAI,EAAE,OAAO,CAAC,IAAI;gBAClB,KAAK,EAAE,OAAO,CAAC,KAAK;gBACpB,SAAS,EAAE,iBAAiB,CAAC,IAAI,EAAE,OAAO,CAAC,KAAK,CAAC;gBACjD,OAAO,EAAE,QAAQ;gBACjB,IAAI,EAAE,QAAQ;gBACd,OAAO,EAAE,OAAO;gBAChB,QAAQ,EAAE,KAAK;gBACf,SAAS;gBACT,KAAK;aACN,CAAC,CAAC;SACJ;aAAM;YACL,QAAQ,CAAC,IAAI,CAAC;gBACZ,IAAI,EAAE,IAAI;gBACV,KAAK,EAAE,SAAS,GAAG,CAAC;gBACpB,OAAO,EAAE,QAAQ;gBACjB,IAAI,EAAE,UAAU;gBAChB,OAAO,EAAE,OAAO;gBAChB,QAAQ,EAAE,KAAK;gBACf,SAAS;gBACT,KAAK;aACN,CAAC,CAAC;SACJ;KACF;IACD,OAAO,QAAQ,CAAC;AAClB,CAAC;AAED;;GAEG;AACH,OAAO,EAAE,mBAAmB,EAAE,CAAC"}
@@ -1,6 +1,6 @@
1
1
  import { ISanitizer } from '@jupyterlab/apputils';
2
2
  import { Cell } from '@jupyterlab/cells';
3
- import { INotebookHeading } from '../../utils/headings';
3
+ import { INotebookHeading, RunningStatus } from '../../utils/headings';
4
4
  import { INumberingDictionary } from '../../utils/numbering_dictionary';
5
5
  /**
6
6
  * Returns a "click" handler.
@@ -24,7 +24,7 @@ declare type onClickFactory = (el: Element) => () => void;
24
24
  * @param index - index of referenced cell relative to other cells in the notebook
25
25
  * @returns notebook heading
26
26
  */
27
- declare function getRenderedHTMLHeadings(node: HTMLElement, onClick: onClickFactory, sanitizer: ISanitizer, dict: INumberingDictionary, lastLevel: number, numbering: boolean | undefined, numberingH1: boolean | undefined, cellRef: Cell, index?: number): INotebookHeading[];
27
+ declare function getRenderedHTMLHeadings(node: HTMLElement, onClick: onClickFactory, sanitizer: ISanitizer, dict: INumberingDictionary, lastLevel: number, numbering: boolean | undefined, numberingH1: boolean | undefined, cellRef: Cell, index?: number, isRunning?: RunningStatus): INotebookHeading[];
28
28
  /**
29
29
  * Exports.
30
30
  */
@@ -1,6 +1,7 @@
1
1
  // Copyright (c) Jupyter Development Team.
2
2
  // Distributed under the terms of the Modified BSD License.
3
3
  import { generateNumbering } from '../../utils/generate_numbering';
4
+ import { RunningStatus } from '../../utils/headings';
4
5
  import { sanitizerOptions } from '../../utils/sanitizer_options';
5
6
  /**
6
7
  * Returns a notebook heading from an HTML element.
@@ -16,7 +17,7 @@ import { sanitizerOptions } from '../../utils/sanitizer_options';
16
17
  * @param index - index of referenced cell relative to other cells in the notebook
17
18
  * @returns notebook heading
18
19
  */
19
- function getRenderedHTMLHeadings(node, onClick, sanitizer, dict, lastLevel, numbering = false, numberingH1 = true, cellRef, index = -1) {
20
+ function getRenderedHTMLHeadings(node, onClick, sanitizer, dict, lastLevel, numbering = false, numberingH1 = true, cellRef, index = -1, isRunning = RunningStatus.Idle) {
20
21
  let nodes = node.querySelectorAll('h1, h2, h3, h4, h5, h6, p');
21
22
  if (index === -1) {
22
23
  console.warn('Deprecation warning! index argument will become mandatory in the next version');
@@ -38,7 +39,8 @@ function getRenderedHTMLHeadings(node, onClick, sanitizer, dict, lastLevel, numb
38
39
  type: 'markdown',
39
40
  cellRef: cellRef,
40
41
  hasChild: false,
41
- index: index
42
+ index: index,
43
+ isRunning
42
44
  });
43
45
  }
44
46
  continue;
@@ -68,7 +70,8 @@ function getRenderedHTMLHeadings(node, onClick, sanitizer, dict, lastLevel, numb
68
70
  type: 'header',
69
71
  cellRef: cellRef,
70
72
  hasChild: false,
71
- index: index
73
+ index: index,
74
+ isRunning
72
75
  });
73
76
  }
74
77
  return headings;
@@ -1 +1 @@
1
- {"version":3,"file":"get_rendered_html_heading.js","sourceRoot":"","sources":["../../../src/generators/notebook/get_rendered_html_heading.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"get_rendered_html_heading.js","sourceRoot":"","sources":["../../../src/generators/notebook/get_rendered_html_heading.ts"],"names":[],"mappings":"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"}
@@ -7,7 +7,6 @@ import { ISettingRegistry } from '@jupyterlab/settingregistry';
7
7
  /**
8
8
  * Returns a ToC generator for notebooks.
9
9
  *
10
- * @private
11
10
  * @param tracker - notebook tracker
12
11
  * @param widget - table of contents widget
13
12
  * @param sanitizer - HTML sanitizer
@@ -15,8 +14,4 @@ import { ISettingRegistry } from '@jupyterlab/settingregistry';
15
14
  * @param settings - advanced settings for toc extension
16
15
  * @returns ToC generator capable of parsing notebooks
17
16
  */
18
- declare function createNotebookGenerator(tracker: INotebookTracker, widget: TableOfContents, sanitizer: ISanitizer, translator?: ITranslator, settings?: ISettingRegistry.ISettings): Registry.IGenerator<NotebookPanel>;
19
- /**
20
- * Exports.
21
- */
22
- export { createNotebookGenerator };
17
+ export declare function createNotebookGenerator(tracker: INotebookTracker, widget: TableOfContents, sanitizer: ISanitizer, translator?: ITranslator, settings?: ISettingRegistry.ISettings): Registry.IGenerator<NotebookPanel>;
@@ -1,6 +1,7 @@
1
1
  // Copyright (c) Jupyter Development Team.
2
2
  // Distributed under the terms of the Modified BSD License.
3
3
  import { MARKDOWN_HEADING_COLLAPSED } from '@jupyterlab/cells';
4
+ import { NotebookActions } from '@jupyterlab/notebook';
4
5
  import { nullTranslator } from '@jupyterlab/translation';
5
6
  import { isDOM } from '../../utils/is_dom';
6
7
  import { isMarkdown } from '../../utils/is_markdown';
@@ -13,10 +14,10 @@ import { getRenderedHTMLHeadings } from './get_rendered_html_heading';
13
14
  import { OptionsManager } from './options_manager';
14
15
  import { render } from './render';
15
16
  import { toolbar } from './toolbar_generator';
17
+ import { RunningStatus } from '../../utils/headings';
16
18
  /**
17
19
  * Returns a ToC generator for notebooks.
18
20
  *
19
- * @private
20
21
  * @param tracker - notebook tracker
21
22
  * @param widget - table of contents widget
22
23
  * @param sanitizer - HTML sanitizer
@@ -24,71 +25,97 @@ import { toolbar } from './toolbar_generator';
24
25
  * @param settings - advanced settings for toc extension
25
26
  * @returns ToC generator capable of parsing notebooks
26
27
  */
27
- function createNotebookGenerator(tracker, widget, sanitizer, translator, settings) {
28
- let numberingH1 = true;
29
- let includeOutput = true;
30
- let syncCollapseState = false;
31
- if (settings) {
32
- numberingH1 = settings.composite.numberingH1;
33
- includeOutput = settings.composite.includeOutput;
34
- syncCollapseState = settings.composite.syncCollapseState;
35
- }
36
- const options = new OptionsManager(widget, tracker, {
37
- numbering: false,
38
- numberingH1: numberingH1,
39
- includeOutput: includeOutput,
40
- syncCollapseState: syncCollapseState,
41
- sanitizer: sanitizer,
42
- translator: translator || nullTranslator
43
- });
44
- if (settings) {
45
- settings.changed.connect(() => {
46
- options.numberingH1 = settings.composite.numberingH1;
47
- options.includeOutput = settings.composite.includeOutput;
48
- options.syncCollapseState = settings.composite
49
- .syncCollapseState;
28
+ export function createNotebookGenerator(tracker, widget, sanitizer, translator, settings) {
29
+ return new NotebookGenerator(tracker, widget, sanitizer, translator, settings);
30
+ }
31
+ class NotebookGenerator {
32
+ /**
33
+ * Notebook Table of Content Generator constructor
34
+ *
35
+ * @param tracker - notebook tracker
36
+ * @param widget - table of contents widget
37
+ * @param sanitizer - HTML sanitizer
38
+ * @param translator - Language translator
39
+ * @param settings - advanced settings for toc extension
40
+ */
41
+ constructor(tracker, widget, sanitizer, translator, settings) {
42
+ /**
43
+ * Renders a table of contents item.
44
+ *
45
+ * @param item - heading to render
46
+ * @param toc - list of all headers to render
47
+ * @returns rendered item
48
+ */
49
+ this.itemRenderer = (item, toc = []) => {
50
+ return render(this.options, this.tracker, this.widget, item, toc);
51
+ };
52
+ this.sanitizer = sanitizer;
53
+ this.tracker = tracker;
54
+ this.widget = widget;
55
+ this._runningCells = new Array();
56
+ let numberingH1 = true;
57
+ let includeOutput = true;
58
+ let syncCollapseState = false;
59
+ if (settings) {
60
+ numberingH1 = settings.composite.numberingH1;
61
+ includeOutput = settings.composite.includeOutput;
62
+ syncCollapseState = settings.composite.syncCollapseState;
63
+ }
64
+ const options = (this.options = new OptionsManager(widget, tracker, {
65
+ numbering: false,
66
+ numberingH1: numberingH1,
67
+ includeOutput: includeOutput,
68
+ syncCollapseState: syncCollapseState,
69
+ sanitizer: sanitizer,
70
+ translator: translator || nullTranslator
71
+ }));
72
+ if (settings) {
73
+ settings.changed.connect(() => {
74
+ options.numberingH1 = settings.composite.numberingH1;
75
+ options.includeOutput = settings.composite.includeOutput;
76
+ options.syncCollapseState = settings.composite
77
+ .syncCollapseState;
78
+ });
79
+ }
80
+ tracker.activeCellChanged.connect((sender, args) => {
81
+ widget.update();
82
+ });
83
+ NotebookActions.executionScheduled.connect((_, args) => {
84
+ if (!this._runningCells.includes(args.cell)) {
85
+ this._runningCells.push(args.cell);
86
+ }
87
+ });
88
+ NotebookActions.executed.connect((_, args) => {
89
+ this._runningCells.forEach((cell, index) => {
90
+ if (cell === args.cell) {
91
+ this._runningCells.splice(index, 1);
92
+ }
93
+ });
50
94
  });
51
95
  }
52
- tracker.activeCellChanged.connect((sender, args) => {
53
- widget.update();
54
- });
55
- return {
56
- tracker,
57
- usesLatex: true,
58
- options: options,
59
- toolbarGenerator: generateToolbar,
60
- itemRenderer: renderItem,
61
- generate: generate,
62
- collapseChanged: options.collapseChanged
63
- };
64
96
  /**
65
- * Returns a toolbar generator.
66
- *
67
- * @private
68
- * @returns toolbar generator
97
+ * Signal to indicate that a collapse event happened to this heading
98
+ * within the ToC.
69
99
  */
70
- function generateToolbar() {
71
- return toolbar(options, tracker);
100
+ get collapseChanged() {
101
+ return this.options.collapseChanged;
72
102
  }
73
103
  /**
74
- * Renders a table of contents item.
104
+ * Returns a toolbar generator.
75
105
  *
76
- * @private
77
- * @param item - heading to render
78
- * @param toc - list of all headers to render
79
- * @returns rendered item
106
+ * @returns toolbar generator
80
107
  */
81
- function renderItem(item, toc = []) {
82
- return render(options, tracker, item, toc);
108
+ toolbarGenerator() {
109
+ return toolbar(this.options, this.tracker);
83
110
  }
84
111
  /**
85
112
  * Generates a table of contents.
86
113
  *
87
- * @private
88
114
  * @param panel - notebook widget
89
115
  * @returns a list of headings
90
116
  */
91
- function generate(panel) {
117
+ generate(panel) {
118
+ var _a;
92
119
  let headings = [];
93
120
  let collapseLevel = -1;
94
121
  let dict = {};
@@ -98,92 +125,101 @@ function createNotebookGenerator(tracker, widget, sanitizer, translator, setting
98
125
  for (let i = 0; i < panel.content.widgets.length; i++) {
99
126
  let cell = panel.content.widgets[i];
100
127
  let model = cell.model;
101
- let cellCollapseMetadata = options.syncCollapseState
128
+ let cellCollapseMetadata = this.options.syncCollapseState
102
129
  ? MARKDOWN_HEADING_COLLAPSED
103
130
  : 'toc-hr-collapsed';
104
- let collapsed = model.metadata.get(cellCollapseMetadata);
105
- collapsed = collapsed || false;
106
- if (model.type === 'code') {
107
- if (!widget || (widget && options.showCode)) {
108
- const onClick = (line) => {
109
- return () => {
110
- panel.content.activeCellIndex = i;
111
- cell.node.scrollIntoView();
131
+ const collapsed = (_a = model.metadata.get(cellCollapseMetadata)) !== null && _a !== void 0 ? _a : false;
132
+ const isRunning = this._runningCells.includes(cell)
133
+ ? this._runningCells[0] === cell
134
+ ? RunningStatus.Running
135
+ : RunningStatus.Scheduled
136
+ : RunningStatus.Idle;
137
+ switch (model.type) {
138
+ case 'code': {
139
+ if (!this.widget || (this.widget && this.options.showCode)) {
140
+ const onClick = (line) => {
141
+ return () => {
142
+ panel.content.activeCellIndex = i;
143
+ cell.node.scrollIntoView();
144
+ };
112
145
  };
113
- };
114
- let count = cell.model.executionCount;
115
- let executionCount = count !== null ? '[' + count + ']: ' : '[ ]: ';
116
- let heading = getCodeCellHeading(model.value.text, onClick, executionCount, getLastHeadingLevel(headings), cell, i);
117
- [headings, prev] = appendHeading(headings, heading, prev, collapseLevel, options.filtered);
118
- }
119
- if (options.includeOutput) {
120
- // Iterate over the code cell outputs to check for Markdown or HTML from which we can generate ToC headings...
121
- for (let j = 0; j < model.outputs.length; j++) {
122
- const m = model.outputs.get(j);
123
- let dtypes = Object.keys(m.data);
124
- dtypes = dtypes.filter(t => isMarkdown(t) || isDOM(t));
125
- if (!dtypes.length) {
126
- continue;
146
+ const count = cell.model.executionCount;
147
+ const executionIndicator = count !== null && count !== void 0 ? count : (isRunning !== RunningStatus.Idle ? '*' : ' ');
148
+ let executionCount = `[${executionIndicator}]: `;
149
+ let heading = getCodeCellHeading(model.value.text, onClick, executionCount, getLastHeadingLevel(headings), cell, i, isRunning);
150
+ [headings, prev] = appendHeading(headings, heading, prev, collapseLevel, this.options.filtered);
151
+ }
152
+ if (this.options.includeOutput) {
153
+ // Iterate over the code cell outputs to check for Markdown or HTML from which we can generate ToC headings...
154
+ for (let j = 0; j < model.outputs.length; j++) {
155
+ const m = model.outputs.get(j);
156
+ let dtypes = Object.keys(m.data);
157
+ dtypes = dtypes.filter(t => isMarkdown(t) || isDOM(t));
158
+ if (!dtypes.length) {
159
+ continue;
160
+ }
161
+ const onClick = (el) => {
162
+ return () => {
163
+ panel.content.activeCellIndex = i;
164
+ panel.content.mode = 'command';
165
+ el.scrollIntoView();
166
+ };
167
+ };
168
+ let htmlHeadings = getRenderedHTMLHeadings(cell.outputArea.widgets[j].node, onClick, this.sanitizer, dict, getLastHeadingLevel(headings), this.options.numbering, this.options.numberingH1, cell, i, isRunning);
169
+ for (const heading of htmlHeadings) {
170
+ [headings, prev, collapseLevel] = appendMarkdownHeading(heading, headings, prev, collapseLevel, this.options.filtered, collapsed, this.options.showMarkdown, cellCollapseMetadata);
171
+ }
127
172
  }
173
+ }
174
+ break;
175
+ }
176
+ case 'markdown': {
177
+ let mcell = cell;
178
+ let heading;
179
+ let lastLevel = getLastHeadingLevel(headings);
180
+ // If the cell is rendered, generate the ToC items from the HTML...
181
+ if (mcell.rendered && !mcell.inputHidden) {
128
182
  const onClick = (el) => {
129
183
  return () => {
130
- panel.content.activeCellIndex = i;
131
- panel.content.mode = 'command';
132
- el.scrollIntoView();
184
+ if (!mcell.rendered) {
185
+ panel.content.activeCellIndex = i;
186
+ el.scrollIntoView();
187
+ }
188
+ else {
189
+ panel.content.mode = 'command';
190
+ cell.node.scrollIntoView();
191
+ panel.content.activeCellIndex = i;
192
+ }
133
193
  };
134
194
  };
135
- let htmlHeadings = getRenderedHTMLHeadings(cell.outputArea.widgets[j].node, onClick, sanitizer, dict, getLastHeadingLevel(headings), options.numbering, options.numberingH1, cell, i);
136
- for (const heading of htmlHeadings) {
137
- [headings, prev, collapseLevel] = appendMarkdownHeading(heading, headings, prev, collapseLevel, options.filtered, collapsed, options.showMarkdown, cellCollapseMetadata);
195
+ const htmlHeadings = getRenderedHTMLHeadings(cell.node, onClick, this.sanitizer, dict, lastLevel, this.options.numbering, this.options.numberingH1, cell, i, isRunning);
196
+ for (heading of htmlHeadings) {
197
+ [headings, prev, collapseLevel] = appendMarkdownHeading(heading, headings, prev, collapseLevel, this.options.filtered, collapsed, this.options.showMarkdown, cellCollapseMetadata);
138
198
  }
199
+ // If not rendered, generate ToC items from the cell text...
139
200
  }
140
- }
141
- continue;
142
- }
143
- if (model.type === 'markdown') {
144
- let mcell = cell;
145
- let heading;
146
- let lastLevel = getLastHeadingLevel(headings);
147
- // If the cell is rendered, generate the ToC items from the HTML...
148
- if (mcell.rendered && !mcell.inputHidden) {
149
- const onClick = (el) => {
150
- return () => {
151
- if (!mcell.rendered) {
201
+ else {
202
+ const onClick = (line) => {
203
+ return () => {
152
204
  panel.content.activeCellIndex = i;
153
- el.scrollIntoView();
154
- }
155
- else {
156
- panel.content.mode = 'command';
157
205
  cell.node.scrollIntoView();
158
- panel.content.activeCellIndex = i;
159
- }
160
- };
161
- };
162
- const htmlHeadings = getRenderedHTMLHeadings(cell.node, onClick, sanitizer, dict, lastLevel, options.numbering, options.numberingH1, cell, i);
163
- for (heading of htmlHeadings) {
164
- [headings, prev, collapseLevel] = appendMarkdownHeading(heading, headings, prev, collapseLevel, options.filtered, collapsed, options.showMarkdown, cellCollapseMetadata);
165
- }
166
- // If not rendered, generate ToC items from the cell text...
167
- }
168
- else {
169
- const onClick = (line) => {
170
- return () => {
171
- panel.content.activeCellIndex = i;
172
- cell.node.scrollIntoView();
206
+ };
173
207
  };
174
- };
175
- const markdownHeadings = getMarkdownHeadings(model.value.text, onClick, dict, lastLevel, cell, i);
176
- for (heading of markdownHeadings) {
177
- [headings, prev, collapseLevel] = appendMarkdownHeading(heading, headings, prev, collapseLevel, options.filtered, collapsed, options.showMarkdown, cellCollapseMetadata);
208
+ const markdownHeadings = getMarkdownHeadings(model.value.text, onClick, dict, lastLevel, cell, i, isRunning);
209
+ for (heading of markdownHeadings) {
210
+ [headings, prev, collapseLevel] = appendMarkdownHeading(heading, headings, prev, collapseLevel, this.options.filtered, collapsed, this.options.showMarkdown, cellCollapseMetadata);
211
+ }
178
212
  }
213
+ break;
179
214
  }
180
215
  }
216
+ // Must be done afterwards as `heading.hasChild` needs to be up to date.
217
+ const lastHeading = headings[headings.length - 1];
218
+ if (lastHeading) {
219
+ lastHeading.isRunning = Math.max(lastHeading.isRunning, isRunning);
220
+ }
181
221
  }
182
222
  return headings;
183
223
  }
184
224
  }
185
- /**
186
- * Exports.
187
- */
188
- export { createNotebookGenerator };
189
225
  //# sourceMappingURL=index.js.map