|
@@ -13,11 +13,12 @@ import { TableOfContentsRegistry as Registry } from '../../registry';
|
|
|
import { TableOfContents } from '../../toc';
|
|
|
import { INumberedHeading } from '../../utils/headings';
|
|
|
import { isMarkdown } from '../../utils/is_markdown';
|
|
|
-import { getHeadings } from './get_headings';
|
|
|
-import { getRenderedHeadings } from './get_rendered_headings';
|
|
|
import { OptionsManager } from './options_manager';
|
|
|
import { render } from './render';
|
|
|
import { toolbar } from './toolbar_generator';
|
|
|
+import { getHeadings } from './get_headings';
|
|
|
+import { getRenderedHeadings } from './get_rendered_headings';
|
|
|
+import { ISettingRegistry } from '@jupyterlab/settingregistry';
|
|
|
|
|
|
/**
|
|
|
* Returns a boolean indicating whether this ToC generator is enabled.
|
|
@@ -36,11 +37,24 @@ function isEnabled(editor: IDocumentWidget<FileEditor>) {
|
|
|
*
|
|
|
* @private
|
|
|
* @param editor - editor widget
|
|
|
+ * @param options - manage Markdown ToC generator options
|
|
|
* @returns a list of headings
|
|
|
*/
|
|
|
-function generate(editor: IDocumentWidget<FileEditor>): INumberedHeading[] {
|
|
|
+function generate(
|
|
|
+ editor: IDocumentWidget<FileEditor>,
|
|
|
+ options?: OptionsManager
|
|
|
+): INumberedHeading[] {
|
|
|
let dict = {};
|
|
|
- return getHeadings(editor.content.model.value.text, onClick, dict);
|
|
|
+ let numberingH1 = true;
|
|
|
+ if (options !== undefined) {
|
|
|
+ numberingH1 = options.numberingH1;
|
|
|
+ }
|
|
|
+ return getHeadings(
|
|
|
+ editor.content.model.value.text,
|
|
|
+ onClick,
|
|
|
+ dict,
|
|
|
+ numberingH1
|
|
|
+ );
|
|
|
|
|
|
/**
|
|
|
* Returns a "click" handler.
|
|
@@ -66,19 +80,31 @@ function generate(editor: IDocumentWidget<FileEditor>): INumberedHeading[] {
|
|
|
* @param tracker - file editor tracker
|
|
|
* @param widget - table of contents widget
|
|
|
* @param sanitizer - HTML sanitizer
|
|
|
+ * @param settings - advanced settings for toc extension
|
|
|
* @returns ToC generator capable of parsing Markdown files
|
|
|
*/
|
|
|
function createMarkdownGenerator(
|
|
|
tracker: IEditorTracker,
|
|
|
widget: TableOfContents,
|
|
|
sanitizer: ISanitizer,
|
|
|
- translator?: ITranslator
|
|
|
+ translator?: ITranslator,
|
|
|
+ settings?: ISettingRegistry.ISettings
|
|
|
): Registry.IGenerator<IDocumentWidget<FileEditor>> {
|
|
|
+ let numberingH1 = true;
|
|
|
+ if (settings) {
|
|
|
+ numberingH1 = settings.composite.numberingH1 as boolean;
|
|
|
+ }
|
|
|
const options = new OptionsManager(widget, {
|
|
|
numbering: true,
|
|
|
+ numberingH1: numberingH1,
|
|
|
sanitizer,
|
|
|
translator: translator || nullTranslator
|
|
|
});
|
|
|
+ if (settings) {
|
|
|
+ settings.changed.connect(() => {
|
|
|
+ options.numberingH1 = settings.composite.numberingH1 as boolean;
|
|
|
+ });
|
|
|
+ }
|
|
|
return {
|
|
|
tracker,
|
|
|
usesLatex: true,
|
|
@@ -117,19 +143,31 @@ function createMarkdownGenerator(
|
|
|
* @param tracker - Markdown viewer tracker
|
|
|
* @param sanitizer - HTML sanitizer
|
|
|
* @param widget - table of contents widget
|
|
|
+ * @param settings - advanced settings for toc extension
|
|
|
* @returns ToC generator capable of parsing rendered Markdown files
|
|
|
*/
|
|
|
function createRenderedMarkdownGenerator(
|
|
|
tracker: IMarkdownViewerTracker,
|
|
|
widget: TableOfContents,
|
|
|
sanitizer: ISanitizer,
|
|
|
- translator?: ITranslator
|
|
|
+ translator?: ITranslator,
|
|
|
+ settings?: ISettingRegistry.ISettings
|
|
|
): Registry.IGenerator<MarkdownDocument> {
|
|
|
+ let numberingH1 = true;
|
|
|
+ if (settings) {
|
|
|
+ numberingH1 = settings.composite.numberingH1 as boolean;
|
|
|
+ }
|
|
|
const options = new OptionsManager(widget, {
|
|
|
numbering: true,
|
|
|
+ numberingH1: numberingH1,
|
|
|
sanitizer,
|
|
|
translator: translator || nullTranslator
|
|
|
});
|
|
|
+ if (settings) {
|
|
|
+ settings.changed.connect(() => {
|
|
|
+ options.numberingH1 = settings.composite.numberingH1 as boolean;
|
|
|
+ });
|
|
|
+ }
|
|
|
return {
|
|
|
tracker,
|
|
|
usesLatex: true,
|
|
@@ -173,7 +211,8 @@ function createRenderedMarkdownGenerator(
|
|
|
widget.content.node,
|
|
|
sanitizer,
|
|
|
dict,
|
|
|
- options.numbering
|
|
|
+ options.numbering,
|
|
|
+ options.numberingH1
|
|
|
);
|
|
|
}
|
|
|
}
|