From b1533b92399395187199d6c50833d777acac7a8f Mon Sep 17 00:00:00 2001 From: Reocin Date: Sun, 13 Jun 2021 01:21:50 +0200 Subject: [PATCH] Expandable and orderable rows --- README.md | 12 +- assets/OrderableAndExpandableRows.gif | Bin 0 -> 100617 bytes build/manifest.json | 2 +- build/versions.json | 3 +- components/SidePane/Colors.ts | 228 ++++++++++++++++ components/SidePane/GreekLetters.ts | 0 components/SidePane/Header.ts | 180 ++++++++++++ components/SidePane/Html.ts | 0 components/SidePane/Latex.ts | 0 components/SidePane/TextEditor.ts | 0 {src => formatters}/colorFormatter.ts | 2 +- manifest.json | 2 +- package.json | 2 +- src/SidePanelControlView.ts | 378 +++++++++++++++++--------- src/icons.ts | 3 + src/latexFormatter.ts | 12 +- src/main.ts | 107 ++++++++ versions.json | 3 +- 18 files changed, 792 insertions(+), 142 deletions(-) create mode 100644 assets/OrderableAndExpandableRows.gif create mode 100644 components/SidePane/Colors.ts create mode 100644 components/SidePane/GreekLetters.ts create mode 100644 components/SidePane/Header.ts create mode 100644 components/SidePane/Html.ts create mode 100644 components/SidePane/Latex.ts create mode 100644 components/SidePane/TextEditor.ts rename {src => formatters}/colorFormatter.ts (90%) diff --git a/README.md b/README.md index dc0b670..50a785e 100644 --- a/README.md +++ b/README.md @@ -9,7 +9,13 @@ ## Side Panel -The Side Panel can be opened by the Ribbon Icon on the left side. If you changed the side of the panel in the settings, just hit this butten/icon again and it will reload on the right side. +The Side Panel can be opened by the Ribbon Icon on the left side. If you changed the side (left or right) of the panel in the settings, just hit this butten/icon again and it will reload on the right side. + +### Order and expansion of the Sections + +It is possible to change the order of the sections according to the personal wishes. Furthermore it is possible to expand and shrink every section to keep the overview. + +![](assets/OrderableAndExpandableRows.gif) ### Markdown Section @@ -82,6 +88,10 @@ To delete a saved or last used color just click it with the right mouse button. ## Changelog +- Version 0.3.1 + - Changeable order of the sections + - Expandable sections + - Corrected the latex `\$\$` and `\$\$\$\$` buttons as they was switched - Version 0.3.0 - added a Latex and Greek Letters section - Version 0.2.2 diff --git a/assets/OrderableAndExpandableRows.gif b/assets/OrderableAndExpandableRows.gif new file mode 100644 index 0000000000000000000000000000000000000000..180979558705678ccb5c2c2f1622e2a94fba1ded GIT binary patch literal 100617 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 literal 0 HcmV?d00001 diff --git a/build/manifest.json b/build/manifest.json index 71ef7f7..e74b92c 100644 --- a/build/manifest.json +++ b/build/manifest.json @@ -1,7 +1,7 @@ { "id": "obsidian-markdown-formatting-assistant-plugin", "name": "Markdown Formatting Assistant", - "version": "0.3.0", + "version": "0.3.1", "minAppVersion": "0.10.9", "description": "This Plugin provides a simple Editor for Markdown, HTML and Colors and in addition a command line interface. The command line interface facilitate a faster workflow.", "author": "Reocin", diff --git a/build/versions.json b/build/versions.json index 22875b5..7cda63a 100644 --- a/build/versions.json +++ b/build/versions.json @@ -5,5 +5,6 @@ "0.2.0": "0.10.9", "0.2.1": "0.10.9", "0.2.2": "0.10.9", - "0.3.0": "0.10.9" + "0.3.0": "0.10.9", + "0.3.1": "0.10.9" } diff --git a/components/SidePane/Colors.ts b/components/SidePane/Colors.ts new file mode 100644 index 0000000..74dacd7 --- /dev/null +++ b/components/SidePane/Colors.ts @@ -0,0 +1,228 @@ +// import { checkIfMarkdownSource } from '../../src/generalFunctions'; +// import { colorFormatter } from '../../formatters/colorFormatter'; + +// import { +// ButtonComponent, +// ItemView, +// Notice, +// TFile, +// WorkspaceLeaf, +// } from 'obsidian'; + +// export function addColorBody(mainDiv: HTMLElement, SidePanelControlView: ItemView ) { +// const insertColor = (color: string) => { +// const leaf = this.app.workspace.activeLeaf; +// let editor = null; +// if (checkIfMarkdownSource(leaf)) { +// // @ts-ignore +// editor = leaf.view.sourceMode.cmEditor; +// colorFormatter(editor, color); +// editor.focus(); +// } +// }; + +// const drawLastSelectedColorIcons = (container: HTMLElement = null) => { +// if (!container) +// container = document.getElementById('lastSelectedColorsDiv'); +// container.textContent = ''; + +// const table = container.createEl('table'); +// const tbody = table.createEl('tbody'); +// let row: HTMLElement; +// R.reverse(SidePanelControlView.lastColors).forEach((color, index) => { +// if (index % 10 === 0) row = tbody.createEl('tr'); +// const colorBox = row.createEl('td'); +// colorBox.classList.add('color-icon'); +// colorBox.style.backgroundColor = color; + +// colorBox.onClickEvent((ev) => { +// if (ev.type === 'click') { +// insertColor(color); +// } else { +// SidePanelControlView.lastColors = R.without( +// [color], +// SidePanelControlView.lastColors, +// ); +// drawLastSelectedColorIcons(); +// } +// }); +// }); +// }; + +// const drawLastSavedColorIcons = (container: HTMLElement = null) => { +// if (!container) container = document.getElementById('lastSavedColorsDiv'); + +// container.textContent = ''; +// const table = container.createEl('table'); +// const tbody = table.createEl('tbody'); +// let row: HTMLElement; + +// R.reverse(this.plugin.settings.savedColors).forEach((color, index) => { +// if (index % 10 === 0) row = tbody.createEl('tr'); +// const colorBox = row.createEl('td'); +// colorBox.id = 'lastSavedColorsDiv' + color; +// colorBox.classList.add('color-icon'); +// colorBox.style.backgroundColor = color; +// colorBox.draggable = true; + +// colorBox.onClickEvent(async (ev) => { +// if (ev.type === 'click') { +// insertColor(color); +// } else { +// this.plugin.settings.savedColors = R.without( +// [color], +// this.plugin.settings.savedColors, +// ); +// await this.plugin.saveSettings(); +// drawLastSavedColorIcons(); +// } +// }); +// colorBox.ondragstart = (event) => { +// // @ts-ignore +// this.dragStartColor = event.target.id.replace( +// 'lastSavedColorsDiv', +// '', +// ); +// }; +// colorBox.ondrop = async (event) => { +// if (event && event.target) { +// // @ts-ignore +// const id = event.target.id; +// if (id.indexOf('lastSavedColorsDiv') === 0) { +// const startColor = this.dragStartColor; +// const endColor = id.replace('lastSavedColorsDiv', ''); + +// const startIndex = R.indexOf( +// startColor, +// this.plugin.settings.savedColors, +// ); +// const endIndex = R.indexOf( +// endColor, +// this.plugin.settings.savedColors, +// ); +// this.plugin.settings.savedColors[startIndex] = endColor; +// this.plugin.settings.savedColors[endIndex] = startColor; +// await this.plugin.saveSettings(); +// drawLastSavedColorIcons(); +// } +// } +// }; +// colorBox.ondragover = (event) => { +// event.preventDefault(); +// }; +// }); +// }; + +// const colorSection = mainDiv.createDiv(); +// const colorSelector = colorSection.createDiv(); +// colorSelector.style.backgroundColor = R.last( +// SidePanelControlView.lastColors, +// ); +// colorSelector.style.height = '16px'; +// colorSelector.style.borderRadius = '8px'; +// colorSelector.style.padding = '5px'; +// colorSelector.style.margin = '4px'; +// colorSelector.style.marginBottom = '10px'; +// const colorInput = colorSelector.createEl('input'); +// colorInput.id = 'colorInput'; +// colorInput.type = 'color'; +// colorInput.value = R.last(SidePanelControlView.lastColors); +// colorInput.style.visibility = 'hidden'; +// colorInput.style.padding = '0'; +// colorInput.style.margin = '0'; +// // colorInput.style.display = 'block'; +// // colorInput.style.opacity = '0'; +// colorInput.addEventListener('input', (ev) => { +// // @ts-ignore +// const color = ev.target.value; +// colorSelector.style.backgroundColor = color; +// }); +// colorInput.addEventListener( +// 'change', +// (ev) => { +// // @ts-ignore +// const color = ev.target.value; +// // @ts-ignore +// SidePanelControlView.lastColors = R.pipe( +// R.without([color]), +// R.append(color), +// R.takeLast(10), +// )(SidePanelControlView.lastColors); +// drawLastSelectedColorIcons(); +// insertColor(color); +// colorSelector.style.backgroundColor = color; + +// navigator.clipboard.writeText(color).then( +// () => { +// // @ts-ignore +// new Notice('Copied ' + color + ' to clipboard'); +// }, +// () => { +// new Notice('Could not copy the color to clipboard'); +// }, +// ); +// }, +// false, +// ); + +// const colorButton = colorSection.createEl('label'); +// colorButton.classList.add('nav-action-text-button'); +// colorButton.appendText('Select a Color'); +// colorButton.style.display = 'block'; +// colorButton.htmlFor = 'colorInput'; + +// const colorSaveButton = colorSection.createEl('div'); +// colorSaveButton.classList.add('nav-action-text-button'); +// colorSaveButton.appendText('Save Color'); +// colorSaveButton.style.display = 'block'; +// colorSaveButton.onClickEvent(async (ev) => { +// const color = R.last(SidePanelControlView.lastColors); +// this.plugin.settings.savedColors = R.pipe( +// R.without([color]), +// R.append(color), +// )(this.plugin.settings.savedColors); +// drawLastSavedColorIcons(); +// await this.plugin.saveSettings(); +// }); + +// const lastSelectedColorsTitle = colorSection.createEl('p'); +// lastSelectedColorsTitle.appendText('Last used colors:'); +// lastSelectedColorsTitle.style.marginBottom = '0px'; + +// const lastSelectedColors = colorSection.createEl('div'); +// lastSelectedColors.id = 'lastSelectedColorsDiv'; +// lastSelectedColors.style.display = 'flex'; + +// drawLastSelectedColorIcons(lastSelectedColors); + +// const lastSavedColorsTitle = colorSection.createEl('p'); +// lastSavedColorsTitle.appendText('Saved Colors:'); +// lastSavedColorsTitle.style.marginBottom = '0px'; + +// const settingsInfo = colorSection.createEl('p'); +// settingsInfo.appendText( +// 'Saved colors can be directly edited in the settings.', +// ); +// settingsInfo.style.textAlign = 'left'; +// settingsInfo.style.fontSize = '10px'; +// settingsInfo.style.marginTop = '0px'; + +// const lastSavedColors = colorSection.createEl('div'); +// lastSavedColors.id = 'lastSavedColorsDiv'; +// lastSavedColors.style.display = 'flex'; + +// drawLastSavedColorIcons(lastSavedColors); + +// const info = colorSection.createEl('p'); +// info.style.textAlign = 'center'; +// info.style.marginTop = '10px'; +// info.style.marginBottom = '10px'; + +// const link = info.createEl('a'); +// link.appendText('Do you need some Help?'); +// link.style.textAlign = 'center'; + +// link.style.fontSize = '10px'; +// link.href = +// 'https://github.com/Reocin/obsidian-markdown-formatting-assistant-plugin#color-picker'; +// } diff --git a/components/SidePane/GreekLetters.ts b/components/SidePane/GreekLetters.ts new file mode 100644 index 0000000..e69de29 diff --git a/components/SidePane/Header.ts b/components/SidePane/Header.ts new file mode 100644 index 0000000..6c3454d --- /dev/null +++ b/components/SidePane/Header.ts @@ -0,0 +1,180 @@ +import MarkdownAutocompletePlugin from '../../src/main'; +import * as R from 'ramda'; +import { svgToElement } from '../../src/icons'; + +const getRegion = (name: string, plugin: MarkdownAutocompletePlugin) => { + return plugin.settings.regionSettings.find((item) => item.name === name); +}; + +const createHeaderDiv = (mainDiv: HTMLElement, regionName: string) => { + let header = mainDiv.createEl('div'); + header.id = 'lastSavedHeaderDiv' + regionName; + + header.style.width = '100%'; + // header.style.border = '2px solid white'; + header.style.display = 'flex'; + header.style.flexWrap = 'nowrap'; + header.style.alignContent = 'center'; + header.style.position = 'relative'; + header.style.cursor = 'move'; + header.draggable = true; + + return header; +}; + +const addDragAndDropForHeader = ( + header: HTMLElement, + plugin: MarkdownAutocompletePlugin, + drawContentOfRootElement: any, +) => { + header.ondragstart = (event) => { + console.log('ondragstart'); + // @ts-ignore + const sectionId = event.target.id.replace('lastSavedHeaderDiv', ''); + + event.dataTransfer.setData('sectionHeaderMoveId', sectionId); + }; + + const onDrop = async (event: DragEvent) => { + const getId = R.pipe( + R.find(R.pipe(R.prop('id'), R.contains('lastSavedHeaderDiv'))), + R.prop('id'), + R.replace('lastSavedHeaderDiv', ''), + ); + + const start = event.dataTransfer.getData('sectionHeaderMoveId'); + // @ts-ignore + const end = getId(event.path); + + console.log(start, end); + + if (end && plugin.settings.aviabileRegions.contains(end) && start !== end) { + const startIndex = R.findIndex( + R.propEq('name', start), + plugin.settings.regionSettings, + ); + const endIndex = R.findIndex( + R.propEq('name', end), + plugin.settings.regionSettings, + ); + + console.log(startIndex, endIndex); + + const startRegion = plugin.settings.regionSettings[startIndex]; + plugin.settings.regionSettings[startIndex] = + plugin.settings.regionSettings[endIndex]; + plugin.settings.regionSettings[endIndex] = startRegion; + await plugin.saveSettings(); + drawContentOfRootElement(); + } + event.preventDefault(); + }; + + header.ondragover = async (event) => { + event.preventDefault(); + }; + + header.ondrop = onDrop; +}; + +const addBurgerButton = (header: HTMLElement) => { + const burgerButton = header.createDiv({ cls: 'nav-action-button' }); + burgerButton.appendChild(svgToElement('menu')); + burgerButton.style.display = 'flex'; + burgerButton.style.flexWrap = 'nowrap'; + burgerButton.style.alignContent = 'center'; + burgerButton.style.transform = 'scale(0.8,0.8)'; + burgerButton.style.cursor = 'move'; + + return burgerButton; +}; + +const addTitle = (header: HTMLElement, sectionTitle: string) => { + const title = header.createEl('h4'); + title.appendText(sectionTitle); + title.style.flexDirection = 'column'; + title.style.textAlign = 'left'; + title.style.margin = '0px'; + title.style.display = 'flex'; + title.style.flexWrap = 'nowrap'; + title.style.justifyContent = 'center'; + return title; +}; + +const addArrowButton = (div: HTMLElement) => { + let arrowButton = div.createDiv({ cls: 'nav-action-button' }); + arrowButton.appendChild(svgToElement('expandArrowDown')); + arrowButton.style.position = 'absolute'; + arrowButton.style.right = '0px'; + arrowButton.style.top = '0px'; + arrowButton.style.bottom = '0px'; + arrowButton.style.marginTop = 'auto'; + arrowButton.style.marginBottom = 'auto'; + arrowButton.style.width = '24px'; + arrowButton.style.height = '24px'; + + return arrowButton; +}; + +const addArrowButtonEvent = ( + arrowButton: HTMLElement, + content: HTMLElement, + regionName: string, + plugin: MarkdownAutocompletePlugin, +) => { + arrowButton.onClickEvent(async (e) => { + const region = getRegion(regionName, plugin); + + if (region && region.active) { + if (!region.visible) { + content.style.display = 'block'; + arrowButton.innerHTML = null; + arrowButton.appendChild(svgToElement('expandArrowUp')); + region.visible = true; + } else { + content.style.display = 'none'; + arrowButton.innerHTML = null; + arrowButton.appendChild(svgToElement('expandArrowDown')); + region.visible = false; + } + + return await plugin.saveSettings(); + } + }); +}; + +const addHorizontalRule = (div: HTMLElement) => { + let hr = div.createEl('hr'); + hr.style.marginTop = '0px'; + hr.style.marginBottom = '10px'; + + return hr; +}; + +export function addSelectableHeader( + mainDiv: HTMLElement, + regionName: string, + sectionTitle: string, + plugin: MarkdownAutocompletePlugin, + drawContentOfRootElement: any, +) { + const header = createHeaderDiv(mainDiv, regionName); + addHorizontalRule(mainDiv); + addDragAndDropForHeader(header, plugin, drawContentOfRootElement); + addBurgerButton(header); + addTitle(header, sectionTitle); + const arrowButton = addArrowButton(header); + + let content = mainDiv.createEl('div'); + + const region = getRegion(regionName, plugin); + if (region && region.active && region.visible) { + content.style.display = 'block'; + } else { + content.style.display = 'none'; + } + + addArrowButtonEvent(arrowButton, content, regionName, plugin); + + return content; +} diff --git a/components/SidePane/Html.ts b/components/SidePane/Html.ts new file mode 100644 index 0000000..e69de29 diff --git a/components/SidePane/Latex.ts b/components/SidePane/Latex.ts new file mode 100644 index 0000000..e69de29 diff --git a/components/SidePane/TextEditor.ts b/components/SidePane/TextEditor.ts new file mode 100644 index 0000000..e69de29 diff --git a/src/colorFormatter.ts b/formatters/colorFormatter.ts similarity index 90% rename from src/colorFormatter.ts rename to formatters/colorFormatter.ts index e859c3a..f147772 100644 --- a/src/colorFormatter.ts +++ b/formatters/colorFormatter.ts @@ -1,4 +1,4 @@ -import { checkIfSelection } from './generalFunctions'; +import { checkIfSelection } from '../src/generalFunctions'; export function colorFormatter(editor: CodeMirror.Editor, color: string) { if (editor) { diff --git a/manifest.json b/manifest.json index 71ef7f7..e74b92c 100644 --- a/manifest.json +++ b/manifest.json @@ -1,7 +1,7 @@ { "id": "obsidian-markdown-formatting-assistant-plugin", "name": "Markdown Formatting Assistant", - "version": "0.3.0", + "version": "0.3.1", "minAppVersion": "0.10.9", "description": "This Plugin provides a simple Editor for Markdown, HTML and Colors and in addition a command line interface. The command line interface facilitate a faster workflow.", "author": "Reocin", diff --git a/package.json b/package.json index cc20931..0878dab 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "obsidian-markdown-formatting-assistant-plugin", - "version": "0.3.0", + "version": "0.3.1", "description": "This plugin improves the writing of MarkDown files", "homepage": "https://github.com/Reocin/obsidian-markdown-formatting-assistant-plugin", "main": "main.js", diff --git a/src/SidePanelControlView.ts b/src/SidePanelControlView.ts index ed6c9b6..9dfc7b9 100644 --- a/src/SidePanelControlView.ts +++ b/src/SidePanelControlView.ts @@ -16,7 +16,7 @@ import { latexFormatterSettings, latexFormatterSetting, } from './latexFormatter'; -import { colorFormatter } from './colorFormatter'; +import { colorFormatter } from '../formatters/colorFormatter'; import { ButtonComponent, ItemView, @@ -61,6 +61,23 @@ export class SidePanelControlView extends ItemView { const container = this.containerEl.children[1]; const rootEl = document.createElement('div'); + rootEl.id = 'SidePaneRootElement'; + + this.drawContentOfRootElement(rootEl); + + container.empty(); + container.appendChild(rootEl); + } + + private drawContentOfRootElement(rootEl: HTMLElement = null): void { + if (!rootEl) rootEl = document.getElementById('SidePaneRootElement'); + rootEl.textContent = ''; + + const getRegion = (name: string) => { + return this.plugin.settings.regionSettings.find( + (item) => item.name === name, + ); + }; const mainDiv = rootEl.createDiv({ cls: 'nav-header' }); mainDiv.style.maxWidth = '300px'; @@ -69,156 +86,134 @@ export class SidePanelControlView extends ItemView { // -------------- // Text Edit Section // -------------- - let header = mainDiv.createEl('h4'); - header.appendText('Text Edit'); - header.style.textAlign = 'center'; - header.style.marginTop = '10px'; - header.style.marginBottom = '5px'; - - let hr = mainDiv.createEl('hr'); - hr.style.marginTop = '0px'; - hr.style.marginBottom = '10px'; - this.addTextEditButtons(mainDiv); + const addTextEditSection = () => { + let content = this.addSelectableHeader(mainDiv, 'textEdit', 'Text Edit'); + this.addTextEditButtons(content); + }; // -------------- // Table Section // -------------- - header = mainDiv.createEl('h4'); - header.appendText('Tables'); - header.style.textAlign = 'center'; - header.style.marginTop = '20px'; - header.style.marginBottom = '5px'; + const addTabelsSection = () => { + const content = this.addSelectableHeader(mainDiv, 'tables', 'Tables'); - hr = mainDiv.createEl('hr'); - hr.style.marginTop = '0px'; - hr.style.marginBottom = '10px'; - - let info = mainDiv.createEl('p'); - info.appendText('upcoming ...'); - info.style.textAlign = 'center'; + const info = content.createEl('p'); + info.appendText('upcoming ...'); + info.style.textAlign = 'center'; + }; // -------------- // HTML Section // -------------- - header = mainDiv.createEl('h4'); - header.appendText('HTML'); - header.style.textAlign = 'center'; - header.style.marginTop = '20px'; - header.style.marginBottom = '5px'; - - hr = mainDiv.createEl('hr'); - hr.style.marginTop = '0px'; - hr.style.marginBottom = '10px'; - - this.addHtmlButtons(mainDiv); - - info = mainDiv.createEl('p'); - info.style.textAlign = 'center'; - info.style.marginTop = '10px'; - info.style.marginBottom = '10px'; - let link = info.createEl('a'); - link.appendText('Do you miss a Tag? report it!'); - link.style.textAlign = 'center'; - - link.style.fontSize = '10px'; - link.href = - 'https://github.com/Reocin/obsidian-markdown-formatting-assistant-plugin/issues'; + const addHtmlSection = () => { + const content = this.addSelectableHeader(mainDiv, 'html', 'HTML'); + + this.addHtmlButtons(content); + + const info = content.createEl('p'); + info.style.textAlign = 'center'; + info.style.marginTop = '10px'; + info.style.marginBottom = '10px'; + const link = info.createEl('a'); + link.appendText('Do you miss a Tag? report it!'); + link.style.textAlign = 'center'; + + link.style.fontSize = '10px'; + link.href = + 'https://github.com/Reocin/obsidian-markdown-formatting-assistant-plugin/issues'; + }; // -------------- // Latex Section // -------------- - header = mainDiv.createEl('h4'); - header.appendText('Latex'); - header.style.textAlign = 'center'; - header.style.marginTop = '20px'; - header.style.marginBottom = '5px'; - - hr = mainDiv.createEl('hr'); - hr.style.marginTop = '0px'; - hr.style.marginBottom = '10px'; - - this.addLatexButtons(mainDiv); - - info = mainDiv.createEl('p'); - info.style.textAlign = 'center'; - info.style.marginTop = '10px'; - info.style.marginBottom = '10px'; - link = info.createEl('a'); - link.appendText('Introduction into latex mathematics'); - link.style.textAlign = 'center'; - link.style.fontSize = '10px'; - link.href = 'https://en.wikibooks.org/wiki/LaTeX/Mathematics'; - - info = mainDiv.createEl('p'); - info.style.textAlign = 'center'; - info.style.marginTop = '10px'; - info.style.marginBottom = '10px'; - link = info.createEl('a'); - link.appendText('Do you miss a latex function? report it!'); - link.style.textAlign = 'center'; - - link.style.fontSize = '10px'; - link.href = - 'https://github.com/Reocin/obsidian-markdown-formatting-assistant-plugin/issues'; - + const addLatexSection = () => { + const content = this.addSelectableHeader(mainDiv, 'latex', 'Latex'); + + this.addLatexButtons(content); + + let info = content.createEl('p'); + info.style.textAlign = 'center'; + info.style.marginTop = '10px'; + info.style.marginBottom = '10px'; + let link = info.createEl('a'); + link.appendText('Introduction into latex mathematics'); + link.style.textAlign = 'center'; + link.style.fontSize = '10px'; + link.href = 'https://en.wikibooks.org/wiki/LaTeX/Mathematics'; + + info = content.createEl('p'); + info.style.textAlign = 'center'; + info.style.marginTop = '10px'; + info.style.marginBottom = '10px'; + link = info.createEl('a'); + link.appendText('Do you miss a latex function? report it!'); + link.style.textAlign = 'center'; + + link.style.fontSize = '10px'; + link.href = + 'https://github.com/Reocin/obsidian-markdown-formatting-assistant-plugin/issues'; + }; // -------------- // Greek Section // -------------- - header = mainDiv.createEl('h4'); - header.appendText('Greek Letters'); - header.style.textAlign = 'center'; - header.style.marginTop = '20px'; - header.style.marginBottom = '5px'; - - hr = mainDiv.createEl('hr'); - hr.style.marginTop = '0px'; - hr.style.marginBottom = '10px'; - - header = mainDiv.createEl('h5'); - header.appendText('Lower Case'); - header.style.textAlign = 'center'; - header.style.marginTop = '0px'; - header.style.marginBottom = '5px'; - - this.addGreekLowerCaseLetters(mainDiv); - - header = mainDiv.createEl('h5'); - header.appendText('Upper Case'); - header.style.textAlign = 'center'; - header.style.marginTop = '10px'; - header.style.marginBottom = '5px'; - - this.addGreekUpperCaseLetters(mainDiv); - - info = mainDiv.createEl('p'); - info.style.textAlign = 'center'; - info.style.marginTop = '10px'; - info.style.marginBottom = '10px'; - link = info.createEl('a'); - link.appendText('Overview of greek letters'); - link.style.textAlign = 'center'; - - link.style.fontSize = '10px'; - link.href = 'https://en.wikipedia.org/wiki/Greek_alphabet'; + const addGreekLettersSection = () => { + const content = this.addSelectableHeader( + mainDiv, + 'greekLetters', + 'Greek Letters', + ); + + let header = content.createEl('h5'); + header.appendText('Lower Case'); + header.style.textAlign = 'center'; + header.style.marginTop = '0px'; + header.style.marginBottom = '5px'; + + this.addGreekLowerCaseLetters(content); + + header = content.createEl('h5'); + header.appendText('Upper Case'); + header.style.textAlign = 'center'; + header.style.marginTop = '10px'; + header.style.marginBottom = '5px'; + + this.addGreekUpperCaseLetters(content); + + const info = content.createEl('p'); + info.style.textAlign = 'center'; + info.style.marginTop = '10px'; + info.style.marginBottom = '10px'; + const link = info.createEl('a'); + link.appendText('Overview of greek letters'); + link.style.textAlign = 'center'; + + link.style.fontSize = '10px'; + link.href = 'https://en.wikipedia.org/wiki/Greek_alphabet'; + }; // -------------- // Colors // -------------- - header = mainDiv.createEl('h4'); - header.appendText('Colors'); - header.style.textAlign = 'center'; - header.style.marginTop = '20px'; - header.style.marginBottom = '5px'; - - hr = mainDiv.createEl('hr'); - hr.style.marginTop = '0px'; - hr.style.marginBottom = '10px'; + const addColorsSection = () => { + const content = this.addSelectableHeader(mainDiv, 'colors', 'Colors'); + this.addColorBody(content); + }; - this.addColorSection(mainDiv); + const regions = { + textEdit: addTextEditSection, + tables: addTabelsSection, + html: addHtmlSection, + latex: addLatexSection, + greekLetters: addGreekLettersSection, + colors: addColorsSection, + }; - container.empty(); - container.appendChild(rootEl); + this.plugin.settings.regionSettings.map((item) => { + // @ts-ignore + const regionFunction = regions[item.name]; + if (regionFunction && getRegion(item.name).active) regionFunction(); + }); } private addHtmlButtons(mainDiv: HTMLElement) { @@ -448,7 +443,7 @@ export class SidePanelControlView extends ItemView { button.appendChild(svgToElement('checkList')); } - private addColorSection(mainDiv: HTMLElement) { + private addColorBody(mainDiv: HTMLElement) { const insertColor = (color: string) => { const leaf = this.app.workspace.activeLeaf; let editor = null; @@ -665,4 +660,129 @@ export class SidePanelControlView extends ItemView { link.href = 'https://github.com/Reocin/obsidian-markdown-formatting-assistant-plugin#color-picker'; } + + private addSelectableHeader( + mainDiv: HTMLElement, + regionName: string, + sectionTitle: string, + ) { + const getRegion = (name: string) => { + return this.plugin.settings.regionSettings.find( + (item) => item.name === name, + ); + }; + + let header = mainDiv.createEl('div'); + header.id = 'lastSavedHeaderDiv' + regionName; + let hr = mainDiv.createEl('hr'); + let title = header.createEl('h4'); + let arrowButton = header.createDiv({ cls: 'nav-action-button' }); + let content = mainDiv.createEl('div'); + + header.style.width = '100%'; + // header.style.border = '2px solid white'; + header.style.display = 'flex'; + header.style.flexWrap = 'nowrap'; + header.style.alignContent = 'center'; + header.style.position = 'relative'; + header.style.cursor = 'move'; + header.draggable = true; + + header.ondragstart = (event) => { + // @ts-ignore + const sectionId = event.target.id.replace('lastSavedHeaderDiv', ''); + + event.dataTransfer.setData('sectionHeaderMoveId', sectionId); + }; + + const onDrop = async (event: DragEvent) => { + const getId = R.pipe( + R.find(R.pipe(R.prop('id'), R.contains('lastSavedHeaderDiv'))), + R.prop('id'), + R.replace('lastSavedHeaderDiv', ''), + ); + + const start = event.dataTransfer.getData('sectionHeaderMoveId'); + // @ts-ignore + const end = getId(event.path); + + if ( + end && + this.plugin.settings.aviabileRegions.contains(end) && + start !== end + ) { + const startIndex = R.findIndex( + R.propEq('name', start), + this.plugin.settings.regionSettings, + ); + const endIndex = R.findIndex( + R.propEq('name', end), + this.plugin.settings.regionSettings, + ); + + const startRegion = this.plugin.settings.regionSettings[startIndex]; + this.plugin.settings.regionSettings[startIndex] = + this.plugin.settings.regionSettings[endIndex]; + this.plugin.settings.regionSettings[endIndex] = startRegion; + await this.plugin.saveSettings(); + this.drawContentOfRootElement(); + } + event.preventDefault(); + }; + + header.ondragover = async (event) => { + event.preventDefault(); + }; + + header.ondrop = onDrop; + + title.appendText(sectionTitle); + title.style.flexDirection = 'column'; + title.style.textAlign = 'left'; + title.style.margin = '0px'; + title.style.display = 'flex'; + title.style.flexWrap = 'nowrap'; + title.style.justifyContent = 'center'; + + arrowButton.appendChild(svgToElement('expandArrowDown')); + arrowButton.style.position = 'absolute'; + arrowButton.style.right = '0px'; + arrowButton.style.top = '0px'; + arrowButton.style.bottom = '0px'; + arrowButton.style.marginTop = 'auto'; + arrowButton.style.marginBottom = 'auto'; + arrowButton.style.width = '24px'; + arrowButton.style.height = '24px'; + const region = getRegion(regionName); + if (region && region.active && region.visible) { + content.style.display = 'block'; + } else { + content.style.display = 'none'; + } + + arrowButton.onClickEvent(async (e) => { + const region = getRegion(regionName); + + if (region && region.active) { + if (!region.visible) { + content.style.display = 'block'; + arrowButton.innerHTML = null; + arrowButton.appendChild(svgToElement('expandArrowUp')); + region.visible = true; + } else { + content.style.display = 'none'; + arrowButton.innerHTML = null; + arrowButton.appendChild(svgToElement('expandArrowDown')); + region.visible = false; + } + + return await this.plugin.saveSettings(); + } + }); + + hr.style.marginTop = '0px'; + hr.style.marginBottom = '10px'; + + return content; + } } diff --git a/src/icons.ts b/src/icons.ts index 5d7368c..b40a454 100644 --- a/src/icons.ts +++ b/src/icons.ts @@ -46,6 +46,9 @@ export const icons: Record = { checkList: pathToSvg(mdiIcons.mdiFormatListBulletedSquare), viewIcon: pathToSvg(mdiIcons.mdiLanguageMarkdown), underline: pathToSvg(mdiIcons.mdiFormatUnderline), + menu: pathToSvg(mdiIcons.mdiMenu), + expandArrowDown: pathToSvg(mdiIcons.mdiChevronDown), + expandArrowUp: pathToSvg(mdiIcons.mdiChevronUp), }; export const addIcons = (): void => { diff --git a/src/latexFormatter.ts b/src/latexFormatter.ts index ffbea8c..7ed42d8 100644 --- a/src/latexFormatter.ts +++ b/src/latexFormatter.ts @@ -14,18 +14,18 @@ export const latexFormatterSettings = { inlineEquation: { des: 'inline equation', text: '$$x$$', - symbol: '$$', - shift: 1, - selectionInput: 1, + symbol: '$$$$', + shift: 2, + selectionInput: 2, type: 'text', newLine: false, }, equation: { des: 'equation', text: '$x$', - symbol: '$$$$', - shift: 2, - selectionInput: 2, + symbol: '$$', + shift: 1, + selectionInput: 1, type: 'text', newLine: false, }, diff --git a/src/main.ts b/src/main.ts index ba8af00..5136bed 100644 --- a/src/main.ts +++ b/src/main.ts @@ -16,16 +16,39 @@ import { import { CommandListView } from './CommandListView'; import plugin from 'rollup-plugin-import-css'; +interface RegionSetting { + name: string; + active: boolean; + visible: boolean; +} export interface PluginSettings { triggerChar: string; sidePaneSideLeft: Boolean; savedColors: string[]; + aviabileRegions: string[]; + regionSettings: Array; } const DEFAULT_SETTINGS: PluginSettings = { triggerChar: '\\', sidePaneSideLeft: false, savedColors: ['#ff0000'], + aviabileRegions: [ + 'textEdit', + 'tabels', + 'html', + 'latex', + 'greekLetters', + 'colors', + ], + regionSettings: [ + { name: 'textEdit', active: true, visible: false }, + { name: 'tables', active: true, visible: false }, + { name: 'html', active: true, visible: false }, + { name: 'latex', active: true, visible: false }, + { name: 'greekLetters', active: true, visible: false }, + { name: 'colors', active: true, visible: false }, + ], }; export default class MarkdownAutocompletePlugin extends Plugin { @@ -196,6 +219,90 @@ class SettingsTab extends PluginSettingTab { }), ); + const getRegion = (name: string) => { + return this.plugin.settings.regionSettings.find( + (item) => item.name === name, + ); + }; + + new Setting(containerEl) + .setName('Toggle Text Section') + .setDesc( + 'Activate or deactivate the Text Editor section. (restart required)', + ) + .addToggle((comp) => { + comp.setValue(getRegion('textEdit').active).onChange(async (e) => { + const region = getRegion('textEdit'); + + region.active = e; + await this.plugin.saveSettings(); + }); + }); + + new Setting(containerEl) + .setName('Toggle Tabels Section') + .setDesc( + 'Activate or deactivate the Greek Letters section. (restart required)', + ) + .addToggle((comp) => { + comp.setValue(getRegion('tables').active).onChange(async (e) => { + const region = getRegion('tables'); + + region.active = e; + await this.plugin.saveSettings(); + }); + }); + + new Setting(containerEl) + .setName('Toggle HTML Section') + .setDesc('Activate or deactivate the HTML section. (restart required)') + .addToggle((comp) => { + comp.setValue(getRegion('html').active).onChange(async (e) => { + const region = getRegion('html'); + + region.active = e; + await this.plugin.saveSettings(); + }); + }); + + new Setting(containerEl) + .setName('Toggle Colors Section') + .setDesc('Activate or deactivate the Colors section. (restart required)') + .addToggle((comp) => { + comp.setValue(getRegion('colors').active).onChange(async (e) => { + const region = getRegion('colors'); + + region.active = e; + await this.plugin.saveSettings(); + }); + }); + + new Setting(containerEl) + .setName('Toggle Latex Section') + .setDesc('Activate or deactivate the Latex section. (restart required)') + .addToggle((comp) => { + comp.setValue(getRegion('latex').active).onChange(async (e) => { + const region = getRegion('latex'); + + region.active = e; + await this.plugin.saveSettings(); + }); + }); + + new Setting(containerEl) + .setName('Toggle Greek Letters Section') + .setDesc( + 'Activate or deactivate the Greek Letters section. (restart required)', + ) + .addToggle((comp) => { + comp.setValue(getRegion('greekLetters').active).onChange(async (e) => { + const region = getRegion('greekLetters'); + + region.active = e; + await this.plugin.saveSettings(); + }); + }); + new Setting(containerEl) .setName('Saved Colors') .setDesc( diff --git a/versions.json b/versions.json index 22875b5..7cda63a 100644 --- a/versions.json +++ b/versions.json @@ -5,5 +5,6 @@ "0.2.0": "0.10.9", "0.2.1": "0.10.9", "0.2.2": "0.10.9", - "0.3.0": "0.10.9" + "0.3.0": "0.10.9", + "0.3.1": "0.10.9" }