Merge branch 'MDL-79264-MOODLE_401_STABLE' of https://github.com/geichelberger/moodle into MOODLE_401_STABLE

This commit is contained in:
Andrew Nicols 2023-09-07 22:30:47 +08:00 committed by Jun Pataleta
commit c28639acd9
No known key found for this signature in database
GPG Key ID: F83510526D99E2C7
3 changed files with 16 additions and 12 deletions

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

View File

@ -24,7 +24,7 @@
import EquationModal from 'tiny_equation/modal'; import EquationModal from 'tiny_equation/modal';
import ModalFactory from 'core/modal_factory'; import ModalFactory from 'core/modal_factory';
import ModalEvents from 'core/modal_events'; import ModalEvents from 'core/modal_events';
import {getLibraries, getTexDocsUrl} from 'tiny_equation/options'; import {getContextId, getLibraries, getTexDocsUrl} from 'tiny_equation/options';
import {notifyFilterContentUpdated} from 'core/event'; import {notifyFilterContentUpdated} from 'core/event';
import * as TinyEquationRepository from 'tiny_equation/repository'; import * as TinyEquationRepository from 'tiny_equation/repository';
import {exception as displayException} from 'core/notification'; import {exception as displayException} from 'core/notification';
@ -65,15 +65,17 @@ const displayDialogue = async(editor) => {
const root = $root[0]; const root = $root[0];
currentForm = root.querySelector(Selectors.elements.form); currentForm = root.querySelector(Selectors.elements.form);
const contextId = getContextId(editor);
$root.on(ModalEvents.hidden, () => { $root.on(ModalEvents.hidden, () => {
modalPromises.destroy(); modalPromises.destroy();
}); });
$root.on(ModalEvents.shown, () => { $root.on(ModalEvents.shown, () => {
const library = root.querySelector(Selectors.elements.library); const library = root.querySelector(Selectors.elements.library);
TinyEquationRepository.filterEquation(1, library.innerHTML).then(async data => { TinyEquationRepository.filterEquation(contextId, library.innerHTML).then(async data => {
library.innerHTML = data.content; library.innerHTML = data.content;
updatePreview(); updatePreview(contextId);
notifyFilter(library); notifyFilter(library);
return data; return data;
}).catch(displayException); }).catch(displayException);
@ -85,7 +87,7 @@ const displayDialogue = async(editor) => {
const textArea = e.target.closest('.tiny_equation_equation'); const textArea = e.target.closest('.tiny_equation_equation');
if (libraryItem) { if (libraryItem) {
e.preventDefault(); e.preventDefault();
selectLibraryItem(libraryItem); selectLibraryItem(libraryItem, contextId);
} }
if (submitAction) { if (submitAction) {
e.preventDefault(); e.preventDefault();
@ -93,14 +95,14 @@ const displayDialogue = async(editor) => {
modalPromises.destroy(); modalPromises.destroy();
} }
if (textArea) { if (textArea) {
debounce(updatePreview(), 500); debounce(updatePreview(contextId), 500);
} }
}); });
root.addEventListener('keyup', (e) => { root.addEventListener('keyup', (e) => {
const textArea = e.target.closest(Selectors.elements.equationTextArea); const textArea = e.target.closest(Selectors.elements.equationTextArea);
if (textArea) { if (textArea) {
debounce(updatePreview(), 500); debounce(updatePreview(contextId), 500);
} }
}); });
@ -135,8 +137,9 @@ const getTemplateContext = (editor, data) => {
/** /**
* Handle select library item. * Handle select library item.
* @param {Object} libraryItem * @param {Object} libraryItem
* @param {number} contextId
*/ */
const selectLibraryItem = (libraryItem) => { const selectLibraryItem = (libraryItem, contextId) => {
const tex = libraryItem.getAttribute('data-tex'); const tex = libraryItem.getAttribute('data-tex');
const input = currentForm.querySelector(Selectors.elements.equationTextArea); const input = currentForm.querySelector(Selectors.elements.equationTextArea);
let oldValue; let oldValue;
@ -162,13 +165,14 @@ const selectLibraryItem = (libraryItem) => {
input.selectionStart = input.selectionEnd = focusPoint; input.selectionStart = input.selectionEnd = focusPoint;
updatePreview(); updatePreview(contextId);
}; };
/** /**
* Update the preview section. * Update the preview section.
* @param {number} contextId
*/ */
const updatePreview = () => { const updatePreview = (contextId) => {
const textarea = currentForm.querySelector(Selectors.elements.equationTextArea); const textarea = currentForm.querySelector(Selectors.elements.equationTextArea);
const preview = currentForm.querySelector(Selectors.elements.preview); const preview = currentForm.querySelector(Selectors.elements.preview);
const prefix = ''; const prefix = '';
@ -206,7 +210,7 @@ const updatePreview = () => {
equation = prefix + equation.substring(0, currentPos) + cursorLatex + equation.substring(currentPos); equation = prefix + equation.substring(0, currentPos) + cursorLatex + equation.substring(currentPos);
equation = Selectors.delimiters.start + ' ' + equation + ' ' + Selectors.delimiters.end; equation = Selectors.delimiters.start + ' ' + equation + ' ' + Selectors.delimiters.end;
TinyEquationRepository.filterEquation(1, equation).then((data) => { TinyEquationRepository.filterEquation(contextId, equation).then((data) => {
preview.innerHTML = data.content; preview.innerHTML = data.content;
notifyFilter(preview); notifyFilter(preview);