diff --git a/contentcuration/contentcuration/dev_urls.py b/contentcuration/contentcuration/dev_urls.py index 003cac87a3..77cbddfbac 100644 --- a/contentcuration/contentcuration/dev_urls.py +++ b/contentcuration/contentcuration/dev_urls.py @@ -8,6 +8,7 @@ from django.urls import include from django.urls import path from django.urls import re_path +from django.views.generic import TemplateView from drf_yasg import openapi from drf_yasg.views import get_schema_view from rest_framework import permissions @@ -75,3 +76,10 @@ def file_server(request, storage_path=None): re_path(r"^api-auth/", include("rest_framework.urls", namespace="rest_framework")), re_path(r"^content/(?P.+)$", file_server), ] + +urlpatterns += [ + re_path( + r"^editor-dev(?:/.*)?$", + TemplateView.as_view(template_name="contentcuration/editor_dev.html"), + ), +] diff --git a/contentcuration/contentcuration/frontend/channelEdit/router.js b/contentcuration/contentcuration/frontend/channelEdit/router.js index 1336a434b8..3d362cbb59 100644 --- a/contentcuration/contentcuration/frontend/channelEdit/router.js +++ b/contentcuration/contentcuration/frontend/channelEdit/router.js @@ -11,10 +11,16 @@ import ReviewSelectionsPage from './views/ImportFromChannels/ReviewSelectionsPag import EditModal from './components/edit/EditModal'; import ChannelDetailsModal from 'shared/views/channel/ChannelDetailsModal'; import ChannelModal from 'shared/views/channel/ChannelModal'; +import TipTapEditor from 'shared/views/TipTapEditor/TipTapEditor/TipTapEditor.vue'; import { RouteNames as ChannelRouteNames } from 'frontend/channelList/constants'; const router = new VueRouter({ routes: [ + { + path: '/editor-dev', + name: 'TipTapEditorDev', + component: TipTapEditor, + }, { name: RouteNames.TREE_ROOT_VIEW, path: '/', diff --git a/contentcuration/contentcuration/frontend/channelEdit/views/trash/TrashModal.vue b/contentcuration/contentcuration/frontend/channelEdit/views/trash/TrashModal.vue index e9dce6b9bf..dde813b877 100644 --- a/contentcuration/contentcuration/frontend/channelEdit/views/trash/TrashModal.vue +++ b/contentcuration/contentcuration/frontend/channelEdit/views/trash/TrashModal.vue @@ -277,9 +277,9 @@ }, }, created() { - this.loadContentNodes({ parent__in: [this.rootId] }), - this.loadAncestors({ id: this.nodeId }), - this.loadNodes(); + (this.loadContentNodes({ parent__in: [this.rootId] }), + this.loadAncestors({ id: this.nodeId }), + this.loadNodes()); }, mounted() { this.updateTabTitle(this.$store.getters.appendChannelName(this.$tr('trashModalTitle'))); diff --git a/contentcuration/contentcuration/frontend/editorDev/index.js b/contentcuration/contentcuration/frontend/editorDev/index.js new file mode 100644 index 0000000000..ef9a10c8db --- /dev/null +++ b/contentcuration/contentcuration/frontend/editorDev/index.js @@ -0,0 +1,24 @@ +import Vue from 'vue'; +import Vuex from 'vuex'; +import VueRouter from 'vue-router'; +import TipTapEditor from '../shared/views/TipTapEditor/TipTapEditor/TipTapEditor.vue'; +import startApp from 'shared/app'; +import storeFactory from 'shared/vuex/baseStore'; + +Vue.use(VueRouter); +Vue.use(Vuex); + +// Create a minimal store that has the required methods +const store = storeFactory(); + +startApp({ + store, // Provide the store - this is required Althought not needed + router: new VueRouter({ + routes: [ + { + path: '/', + component: TipTapEditor, + }, + ], + }), +}); diff --git a/contentcuration/contentcuration/frontend/editorDev/router.js b/contentcuration/contentcuration/frontend/editorDev/router.js new file mode 100644 index 0000000000..1bb8ee6838 --- /dev/null +++ b/contentcuration/contentcuration/frontend/editorDev/router.js @@ -0,0 +1,10 @@ +import Vue from 'vue'; +import Router from 'vue-router'; +import TipTapEditor from '../shared/views/TipTapEditor/TipTapEditor/TipTapEditor.vue'; + +Vue.use(Router); +export default new Router({ + mode: 'history', + base: '/editor-dev/', + routes: [{ path: '/', component: TipTapEditor }], +}); diff --git a/contentcuration/contentcuration/frontend/shared/views/MarkdownEditor/mathquill/mathquill.js b/contentcuration/contentcuration/frontend/shared/views/MarkdownEditor/mathquill/mathquill.js index 0ae86eb6d2..f020feddd5 100644 --- a/contentcuration/contentcuration/frontend/shared/views/MarkdownEditor/mathquill/mathquill.js +++ b/contentcuration/contentcuration/frontend/shared/views/MarkdownEditor/mathquill/mathquill.js @@ -2794,7 +2794,7 @@ JS environment could actually contain many instances. */ // skip matching top-level close tag and all tag pairs in between var nesting = 1; do { - (i += 1), (token = tokens[i]); + ((i += 1), (token = tokens[i])); pray('no missing close tags', token); // close tags if (token.slice(0, 2) === ' + +
+ + +
+ + + + + + + + + + + + diff --git a/contentcuration/contentcuration/frontend/shared/views/TipTapEditor/TipTapEditor/TipTapEditorStrings.js b/contentcuration/contentcuration/frontend/shared/views/TipTapEditor/TipTapEditor/TipTapEditorStrings.js new file mode 100644 index 0000000000..8d8e9ef20d --- /dev/null +++ b/contentcuration/contentcuration/frontend/shared/views/TipTapEditor/TipTapEditor/TipTapEditorStrings.js @@ -0,0 +1,160 @@ +import { createTranslator } from 'shared/i18n'; + +const NAMESPACE = 'TipTapEditorStrings'; + +const MESSAGES = { + // Toolbar button labels & alt text + undo: { + message: 'Undo', + context: 'Button to undo the last action in the text editor', + }, + redo: { + message: 'Redo', + context: 'Button to redo the last undone action in the text editor', + }, + bold: { + message: 'Strong', + context: 'Button to make text bold/strong', + }, + italic: { + message: 'Italic', + context: 'Button to italicize the selected text', + }, + underline: { + message: 'Underline', + context: 'Button to underline the selected text', + }, + strikethrough: { + message: 'Strikethrough', + context: 'Button to strikethrough the selected text', + }, + copy: { + message: 'Copy', + context: 'Button to copy the selected text', + }, + paste: { + message: 'Paste', + context: 'Button to paste text from clipboard', + }, + pasteWithoutFormatting: { + message: 'Paste without formatting', + context: 'Button to paste text without any formatting', + }, + bulletList: { + message: 'Bullet list', + context: 'Button to create a bullet list', + }, + numberedList: { + message: 'Numbered list', + context: 'Button to create a numbered list', + }, + subscript: { + message: 'Subscript', + context: 'Button to make text subscript', + }, + superscript: { + message: 'Superscript', + context: 'Button to make text superscript', + }, + insertImage: { + message: 'Insert image', + context: 'Button to insert an image', + }, + insertLink: { + message: 'Insert link', + context: 'Button to insert a hyperlink', + }, + mathFormula: { + message: 'Math formula', + context: 'Button to insert a mathematical formula', + }, + codeBlock: { + message: 'Code block', + context: 'Button to insert a block of code', + }, + + // Format dropdown options + formatNormal: { + message: 'Normal', + context: 'Option to set text format to normal', + }, + formatSmall: { + message: 'Small', + context: 'Option to set text format to small', + }, + formatHeader1: { + message: 'Header 1', + context: 'Option to set text format to header 1', + }, + formatHeader2: { + message: 'Header 2', + context: 'Option to set text format to header 2', + }, + formatHeader3: { + message: 'Header 3', + context: 'Option to set text format to header 3', + }, + + // Accessibility labels + textFormattingToolbar: { + message: 'Text formatting toolbar', + context: 'Toolbar for text formatting options', + }, + historyActions: { + message: 'History actions', + context: 'Actions for managing history of changes', + }, + textFormattingOptions: { + message: 'Text formatting options', + context: 'Options for formatting text', + }, + textStyleFormatting: { + message: 'Text style formatting', + context: 'Formatting options for text styles', + }, + copyAndPasteActions: { + message: 'Copy and paste actions', + context: 'Actions for copying and pasting text', + }, + listFormatting: { + message: 'List formatting', + context: 'Options for formatting lists', + }, + scriptFormatting: { + message: 'Script formatting', + context: 'Options for formatting scripts', + }, + insertTools: { + message: 'Insert tools', + context: 'Tools for inserting elements into the text', + }, + textFormatOptions: { + message: 'Text format options', + context: 'Options for text formatting', + }, + formatOptions: { + message: 'Format options', + context: 'General options for formatting', + }, + pasteOptions: { + message: 'Paste options', + context: 'Options for pasting text', + }, + pasteOptionsMenu: { + message: 'Paste options menu', + context: 'Menu for selecting paste options', + }, + clipboardAccessFailed: { + message: 'Clipboard access failed. Try copying again.', + context: 'Message shown when clipboard access fails during paste operation', + }, +}; + +let TipTapEditorStrings = null; + +export function getTipTapEditorStrings() { + if (!TipTapEditorStrings) { + TipTapEditorStrings = createTranslator(NAMESPACE, MESSAGES); + } + return TipTapEditorStrings; +} diff --git a/contentcuration/contentcuration/frontend/shared/views/TipTapEditor/TipTapEditor/components/EditorContentWrapper.vue b/contentcuration/contentcuration/frontend/shared/views/TipTapEditor/TipTapEditor/components/EditorContentWrapper.vue new file mode 100644 index 0000000000..75ca8bc98e --- /dev/null +++ b/contentcuration/contentcuration/frontend/shared/views/TipTapEditor/TipTapEditor/components/EditorContentWrapper.vue @@ -0,0 +1,86 @@ + + + + + + + + + + + diff --git a/contentcuration/contentcuration/frontend/shared/views/TipTapEditor/TipTapEditor/components/EditorToolbar.vue b/contentcuration/contentcuration/frontend/shared/views/TipTapEditor/TipTapEditor/components/EditorToolbar.vue new file mode 100644 index 0000000000..44f8c23a40 --- /dev/null +++ b/contentcuration/contentcuration/frontend/shared/views/TipTapEditor/TipTapEditor/components/EditorToolbar.vue @@ -0,0 +1,196 @@ + + + + + + + diff --git a/contentcuration/contentcuration/frontend/shared/views/TipTapEditor/TipTapEditor/components/toolbar/FormatDropdown.vue b/contentcuration/contentcuration/frontend/shared/views/TipTapEditor/TipTapEditor/components/toolbar/FormatDropdown.vue new file mode 100644 index 0000000000..a55ecd43ec --- /dev/null +++ b/contentcuration/contentcuration/frontend/shared/views/TipTapEditor/TipTapEditor/components/toolbar/FormatDropdown.vue @@ -0,0 +1,295 @@ + + + + + + + diff --git a/contentcuration/contentcuration/frontend/shared/views/TipTapEditor/TipTapEditor/components/toolbar/PasteDropdown.vue b/contentcuration/contentcuration/frontend/shared/views/TipTapEditor/TipTapEditor/components/toolbar/PasteDropdown.vue new file mode 100644 index 0000000000..d8072183a3 --- /dev/null +++ b/contentcuration/contentcuration/frontend/shared/views/TipTapEditor/TipTapEditor/components/toolbar/PasteDropdown.vue @@ -0,0 +1,370 @@ + + + + + + + diff --git a/contentcuration/contentcuration/frontend/shared/views/TipTapEditor/TipTapEditor/components/toolbar/ToolbarButton.vue b/contentcuration/contentcuration/frontend/shared/views/TipTapEditor/TipTapEditor/components/toolbar/ToolbarButton.vue new file mode 100644 index 0000000000..97af38d3ec --- /dev/null +++ b/contentcuration/contentcuration/frontend/shared/views/TipTapEditor/TipTapEditor/components/toolbar/ToolbarButton.vue @@ -0,0 +1,156 @@ + + + + + + + diff --git a/contentcuration/contentcuration/frontend/shared/views/TipTapEditor/TipTapEditor/components/toolbar/ToolbarDivider.vue b/contentcuration/contentcuration/frontend/shared/views/TipTapEditor/TipTapEditor/components/toolbar/ToolbarDivider.vue new file mode 100644 index 0000000000..57917ffa58 --- /dev/null +++ b/contentcuration/contentcuration/frontend/shared/views/TipTapEditor/TipTapEditor/components/toolbar/ToolbarDivider.vue @@ -0,0 +1,28 @@ + + + + + + + diff --git a/contentcuration/contentcuration/frontend/shared/views/TipTapEditor/TipTapEditor/composables/useDropdowns.js b/contentcuration/contentcuration/frontend/shared/views/TipTapEditor/TipTapEditor/composables/useDropdowns.js new file mode 100644 index 0000000000..7e0201e623 --- /dev/null +++ b/contentcuration/contentcuration/frontend/shared/views/TipTapEditor/TipTapEditor/composables/useDropdowns.js @@ -0,0 +1,141 @@ +import { ref, onMounted, onUnmounted, inject, watch, computed } from 'vue'; +import { getTipTapEditorStrings } from '../TipTapEditorStrings'; +import { useToolbarActions } from './useToolbarActions'; + +export function useDropdowns() { + const selectedFormat = ref('Normal'); + const showHeadersDropdown = ref(false); + const showPasteDropdown = ref(false); + const editor = inject('editor', null); + + const { + formatSmall$, + formatNormal$, + formatHeader1$, + formatHeader2$, + formatHeader3$, + paste$, + pasteWithoutFormatting$, + } = getTipTapEditorStrings(); + + // Format detection function + const updateSelectedFormat = () => { + if (!editor?.value) return; + + // Check current active format at cursor position + if (editor.value.isActive('heading', { level: 1 })) { + selectedFormat.value = formatHeader1$(); + } else if (editor.value.isActive('heading', { level: 2 })) { + selectedFormat.value = formatHeader2$(); + } else if (editor.value.isActive('heading', { level: 3 })) { + selectedFormat.value = formatHeader3$(); + } else if (editor.value.isActive('small')) { + selectedFormat.value = formatSmall$(); + } else { + selectedFormat.value = formatNormal$(); + } + }; + + watch( + () => editor?.value?.state.selection, + () => { + if (editor?.value) { + updateSelectedFormat(); + } + }, + { deep: true }, + ); + + let offTransaction = null; + + const setupEditorListener = () => { + if (editor?.value) { + const handler = () => updateSelectedFormat(); + editor.value.on('transaction', handler); + offTransaction = () => editor.value.off('transaction', handler); + } + }; + + // Dropdown management + const toggleHeadersDropdown = () => { + showHeadersDropdown.value = !showHeadersDropdown.value; + showPasteDropdown.value = false; + }; + + const togglePasteDropdown = () => { + showPasteDropdown.value = !showPasteDropdown.value; + showHeadersDropdown.value = false; + }; + + const closeAllDropdowns = () => { + showHeadersDropdown.value = false; + showPasteDropdown.value = false; + }; + + const selectFormat = format => { + selectedFormat.value = format.label; + }; + + const handleClickOutside = event => { + const dropdownContainers = document.querySelectorAll('.dropdown-container'); + let isOutside = true; + + dropdownContainers.forEach(container => { + if (container.contains(event.target)) { + isOutside = false; + } + }); + + if (isOutside) { + closeAllDropdowns(); + } + }; + + onMounted(() => { + document.addEventListener('click', handleClickOutside); + // Setup editor listener when component mounts + setupEditorListener(); + // Initial format detection + updateSelectedFormat(); + }); + + onUnmounted(() => { + document.removeEventListener('click', handleClickOutside); + if (offTransaction) offTransaction(); + }); + + const formatOptions = computed(() => [ + { value: 'small', label: formatSmall$(), tag: 'small' }, + { value: 'normal', label: formatNormal$(), tag: 'p' }, + { value: 'h3', label: formatHeader3$(), tag: 'h3' }, + { value: 'h2', label: formatHeader2$(), tag: 'h2' }, + { value: 'h1', label: formatHeader1$(), tag: 'h1' }, + ]); + + const pasteOptions = computed(() => [ + { + name: 'paste', + title: paste$(), + icon: require('../../assets/icon-paste.svg'), + handler: useToolbarActions().handlePaste, + }, + { + name: 'pasteNoFormat', + title: pasteWithoutFormatting$(), + icon: require('../../assets/icon-pasteNoFormat.svg'), + handler: useToolbarActions().handlePasteNoFormat, + }, + ]); + + return { + selectedFormat, + showHeadersDropdown, + showPasteDropdown, + formatOptions, + pasteOptions, + toggleHeadersDropdown, + togglePasteDropdown, + selectFormat, + updateSelectedFormat, + }; +} diff --git a/contentcuration/contentcuration/frontend/shared/views/TipTapEditor/TipTapEditor/composables/useEditor.js b/contentcuration/contentcuration/frontend/shared/views/TipTapEditor/TipTapEditor/composables/useEditor.js new file mode 100644 index 0000000000..95375cbda0 --- /dev/null +++ b/contentcuration/contentcuration/frontend/shared/views/TipTapEditor/TipTapEditor/composables/useEditor.js @@ -0,0 +1,48 @@ +import { ref, onMounted, onUnmounted } from 'vue'; +import { Editor } from '@tiptap/vue-2'; +import StarterKitExtension from '@tiptap/starter-kit'; +import UnderlineExtension from '@tiptap/extension-underline'; +import { Small } from '../extensions/SmallTextExtension'; + +export function useEditor() { + const editor = ref(null); + const isReady = ref(false); + + const initializeEditor = () => { + editor.value = new Editor({ + extensions: [StarterKitExtension, UnderlineExtension, Small], + content: '

', + editorProps: { + attributes: { + class: 'prose prose-sm sm:prose lg:prose-lg xl:prose-2xl focus:outline-none', + dir: 'auto', + }, + }, + }); + + isReady.value = true; + }; + + const destroyEditor = () => { + if (editor.value) { + editor.value.destroy(); + editor.value = null; + isReady.value = false; + } + }; + + onMounted(() => { + initializeEditor(); + }); + + onUnmounted(() => { + destroyEditor(); + }); + + return { + editor, + isReady, + initializeEditor, + destroyEditor, + }; +} diff --git a/contentcuration/contentcuration/frontend/shared/views/TipTapEditor/TipTapEditor/composables/useToolbarActions.js b/contentcuration/contentcuration/frontend/shared/views/TipTapEditor/TipTapEditor/composables/useToolbarActions.js new file mode 100644 index 0000000000..1eeacf871b --- /dev/null +++ b/contentcuration/contentcuration/frontend/shared/views/TipTapEditor/TipTapEditor/composables/useToolbarActions.js @@ -0,0 +1,350 @@ +import { computed, inject } from 'vue'; +import { getTipTapEditorStrings } from '../TipTapEditorStrings'; + +export function useToolbarActions() { + const editor = inject('editor', null); + + const { + undo$, + redo$, + bold$, + italic$, + underline$, + strikethrough$, + bulletList$, + numberedList$, + subscript$, + superscript$, + insertImage$, + insertLink$, + mathFormula$, + codeBlock$, + clipboardAccessFailed$, + } = getTipTapEditorStrings(); + + // Action handlers + const handleUndo = () => { + if (editor?.value) { + editor.value.chain().focus().undo().run(); + } + }; + + const handleRedo = () => { + if (editor?.value) { + editor.value.chain().focus().redo().run(); + } + }; + + const handleBold = () => { + if (editor?.value) { + editor.value.chain().focus().toggleBold().run(); + } + }; + + const handleItalic = () => { + if (editor?.value) { + editor.value.chain().focus().toggleItalic().run(); + } + }; + + const handleUnderline = () => { + if (editor?.value) { + editor.value.chain().focus().toggleUnderline().run(); + } + }; + + const handleStrikethrough = () => { + if (editor?.value) { + editor.value.chain().focus().toggleStrike().run(); + } + }; + + // Copy with formatting + const handleCopy = async () => { + if (editor.value) { + const { state } = editor.value; + const { from, to } = state.selection; + + if (from === to) return; // No selection + + // Get selected text + const selectedText = state.doc.textBetween(from, to, '\n'); + + // Use browser's native selection to get the actual selected HTML + const selection = window.getSelection(); + let selectedHtml = ''; + + if (selection.rangeCount > 0) { + const range = selection.getRangeAt(0); + const contents = range.cloneContents(); + const tempDiv = document.createElement('div'); + tempDiv.appendChild(contents); + selectedHtml = tempDiv.innerHTML; + } + + try { + await navigator.clipboard.write([ + new ClipboardItem({ + 'text/html': new Blob([selectedHtml], { type: 'text/html' }), + 'text/plain': new Blob([selectedText], { type: 'text/plain' }), + }), + ]); + } catch (err) { + // Fallback to plain text + await navigator.clipboard.writeText(selectedText); + } + } + }; + + const handlePaste = async () => { + if (editor.value) { + try { + // Try HTML first + const clipboardData = await navigator.clipboard.read(); + const htmlType = clipboardData[0].types.find(type => type === 'text/html'); + + if (htmlType) { + const htmlBlob = await clipboardData[0].getType('text/html'); + const html = await htmlBlob.text(); + editor.value.chain().focus().insertContent(html).run(); + } else { + // Fall back to plain text + handlePasteNoFormat(); + } + } catch (err) { + editor.value.chain().focus().insertContent(clipboardAccessFailed$()).run(); + } + } + }; + + const handlePasteNoFormat = async () => { + if (editor.value) { + try { + // Read plain text from clipboard + const text = await navigator.clipboard.readText(); + editor.value.chain().focus().insertContent(text).run(); + } catch (err) { + editor.value.chain().focus().insertContent(clipboardAccessFailed$()).run(); + } + } + }; + + const handleBulletList = () => { + if (editor?.value) { + editor.value.chain().focus().toggleBulletList().run(); + } + }; + + const handleNumberList = () => { + if (editor?.value) { + editor.value.chain().focus().toggleOrderedList().run(); + } + }; + + const handleSubscript = () => { + // TipTap subscript logic will be added here + }; + + const handleSuperscript = () => { + // TipTap superscript logic will be added here + }; + + const handleInsertImage = () => { + // TipTap insert image logic will be added here + }; + + const handleInsertLink = () => { + // TipTap insert link logic will be added here + }; + + const handleMath = () => { + // TipTap math formula logic may be added here + }; + + const handleCodeBlock = () => { + // TipTap code block logic may be added here + }; + + const handleFormatChange = format => { + if (!editor?.value) return; + + switch (format) { + case 'normal': + // Clear any existing formatting and set to paragraph + editor.value.chain().focus().clearNodes().setParagraph().run(); + break; + case 'h1': + editor.value.chain().focus().toggleHeading({ level: 1 }).run(); + break; + case 'h2': + editor.value.chain().focus().toggleHeading({ level: 2 }).run(); + break; + case 'h3': + editor.value.chain().focus().toggleHeading({ level: 3 }).run(); + break; + case 'small': + // Convert to paragraph first, then apply small mark + editor.value.chain().focus().setSmall().run(); + break; + default: + break; + } + }; + + // Helper function to check if a mark is active + const isMarkActive = markName => { + return editor?.value?.isActive(markName) || false; + }; + + // Helper function to check if a button is clickable + const isButtonAvailable = action => { + if (!editor?.value) return false; + + switch (action) { + case 'undo': + return editor.value.can().undo(); + case 'redo': + return editor.value.can().redo(); + default: + return true; // Default to true for other actions + } + }; + + // Computed arrays for toolbar actions + const historyActions = computed(() => [ + { + name: 'undo', + title: undo$(), + icon: require('../../assets/icon-undo.svg'), + handler: handleUndo, + isAvailable: isButtonAvailable('undo'), + }, + { + name: 'redo', + title: redo$(), + icon: require('../../assets/icon-redo.svg'), + handler: handleRedo, + isAvailable: isButtonAvailable('redo'), + }, + ]); + + const textActions = computed(() => [ + { + name: 'bold', + title: bold$(), + icon: require('../../assets/icon-bold.svg'), + handler: handleBold, + isActive: isMarkActive('bold'), + }, + { + name: 'italic', + title: italic$(), + icon: require('../../assets/icon-italic.svg'), + handler: handleItalic, + isActive: isMarkActive('italic'), + }, + { + name: 'underline', + title: underline$(), + icon: require('../../assets/icon-underline.svg'), + handler: handleUnderline, + isActive: isMarkActive('underline'), + }, + { + name: 'strikethrough', + title: strikethrough$(), + icon: require('../../assets/icon-strikethrough.svg'), + handler: handleStrikethrough, + isActive: isMarkActive('strike'), + }, + ]); + + const listActions = computed(() => [ + { + name: 'bulletList', + title: bulletList$(), + icon: require('../../assets/icon-bulletList.svg'), + handler: handleBulletList, + isActive: isMarkActive('bulletList'), + }, + { + name: 'numberList', + title: numberedList$(), + icon: require('../../assets/icon-numberList.svg'), + rtlIcon: require('../../assets/icon-numberListRTL.svg'), + handler: handleNumberList, + isActive: isMarkActive('orderedList'), + }, + ]); + + const scriptActions = computed(() => [ + { + name: 'subscript', + title: subscript$(), + icon: require('../../assets/icon-subscript.svg'), + handler: handleSubscript, + }, + { + name: 'superscript', + title: superscript$(), + icon: require('../../assets/icon-superscript.svg'), + handler: handleSuperscript, + }, + ]); + + const insertTools = computed(() => [ + { + name: 'image', + title: insertImage$(), + icon: require('../../assets/icon-insertImage.svg'), + handler: handleInsertImage, + }, + { + name: 'link', + title: insertLink$(), + icon: require('../../assets/icon-link.svg'), + handler: handleInsertLink, + }, + { + name: 'math', + title: mathFormula$(), + icon: require('../../assets/icon-formula.svg'), + handler: handleMath, + }, + { + name: 'code', + title: codeBlock$(), + icon: require('../../assets/icon-codeblock.svg'), + handler: handleCodeBlock, + }, + ]); + + return { + // Individual handlers + handleUndo, + handleRedo, + handleBold, + handleItalic, + handleUnderline, + handleStrikethrough, + handleCopy, + handlePaste, + handlePasteNoFormat, + handleBulletList, + handleNumberList, + handleSubscript, + handleSuperscript, + handleInsertImage, + handleInsertLink, + handleMath, + handleCodeBlock, + handleFormatChange, + + // Action arrays + historyActions, + textActions, + listActions, + scriptActions, + insertTools, + }; +} diff --git a/contentcuration/contentcuration/frontend/shared/views/TipTapEditor/TipTapEditor/extensions/SmallTextExtension.js b/contentcuration/contentcuration/frontend/shared/views/TipTapEditor/TipTapEditor/extensions/SmallTextExtension.js new file mode 100644 index 0000000000..b52a27e53e --- /dev/null +++ b/contentcuration/contentcuration/frontend/shared/views/TipTapEditor/TipTapEditor/extensions/SmallTextExtension.js @@ -0,0 +1,69 @@ +import { Node, mergeAttributes } from '@tiptap/core'; + +export const Small = Node.create({ + name: 'small', + + priority: 1000, + + addOptions() { + return { + HTMLAttributes: {}, + }; + }, + + group: 'block', + + content: 'inline*', + + parseHTML() { + return [ + { + tag: 'small', + }, + ]; + }, + + renderHTML({ HTMLAttributes }) { + return [ + 'small', + mergeAttributes(this.options.HTMLAttributes, HTMLAttributes, { + class: 'small-text', + }), + 0, + ]; + }, + + addAttributes() { + return { + class: { + default: 'small-text', + }, + }; + }, + + addCommands() { + return { + setSmall: + () => + ({ commands }) => { + return commands.setNode(this.name); + }, + toggleSmall: + () => + ({ commands }) => { + return commands.toggleNode(this.name, 'paragraph'); + }, + unsetSmall: + () => + ({ commands }) => { + return commands.setNode('paragraph'); // Convert back to paragraph + }, + }; + }, + + addKeyboardShortcuts() { + return { + 'Mod-Shift-S': () => this.editor.commands.toggleSmall(), + }; + }, +}); diff --git a/contentcuration/contentcuration/frontend/shared/views/TipTapEditor/assets/icon-bold.svg b/contentcuration/contentcuration/frontend/shared/views/TipTapEditor/assets/icon-bold.svg new file mode 100644 index 0000000000..1f98e5d62c --- /dev/null +++ b/contentcuration/contentcuration/frontend/shared/views/TipTapEditor/assets/icon-bold.svg @@ -0,0 +1 @@ + diff --git a/contentcuration/contentcuration/frontend/shared/views/TipTapEditor/assets/icon-bulletList.svg b/contentcuration/contentcuration/frontend/shared/views/TipTapEditor/assets/icon-bulletList.svg new file mode 100644 index 0000000000..15e17847a7 --- /dev/null +++ b/contentcuration/contentcuration/frontend/shared/views/TipTapEditor/assets/icon-bulletList.svg @@ -0,0 +1,3 @@ + + + diff --git a/contentcuration/contentcuration/frontend/shared/views/TipTapEditor/assets/icon-chevron-down.svg b/contentcuration/contentcuration/frontend/shared/views/TipTapEditor/assets/icon-chevron-down.svg new file mode 100644 index 0000000000..3a861a2508 --- /dev/null +++ b/contentcuration/contentcuration/frontend/shared/views/TipTapEditor/assets/icon-chevron-down.svg @@ -0,0 +1 @@ + diff --git a/contentcuration/contentcuration/frontend/shared/views/TipTapEditor/assets/icon-codeblock.svg b/contentcuration/contentcuration/frontend/shared/views/TipTapEditor/assets/icon-codeblock.svg new file mode 100644 index 0000000000..f9d48830b8 --- /dev/null +++ b/contentcuration/contentcuration/frontend/shared/views/TipTapEditor/assets/icon-codeblock.svg @@ -0,0 +1,3 @@ + + + diff --git a/contentcuration/contentcuration/frontend/shared/views/TipTapEditor/assets/icon-copy.svg b/contentcuration/contentcuration/frontend/shared/views/TipTapEditor/assets/icon-copy.svg new file mode 100644 index 0000000000..ce9b8becb8 --- /dev/null +++ b/contentcuration/contentcuration/frontend/shared/views/TipTapEditor/assets/icon-copy.svg @@ -0,0 +1 @@ + diff --git a/contentcuration/contentcuration/frontend/shared/views/TipTapEditor/assets/icon-formula.svg b/contentcuration/contentcuration/frontend/shared/views/TipTapEditor/assets/icon-formula.svg new file mode 100644 index 0000000000..ca6c8f2f15 --- /dev/null +++ b/contentcuration/contentcuration/frontend/shared/views/TipTapEditor/assets/icon-formula.svg @@ -0,0 +1,3 @@ + + + diff --git a/contentcuration/contentcuration/frontend/shared/views/TipTapEditor/assets/icon-insertImage.svg b/contentcuration/contentcuration/frontend/shared/views/TipTapEditor/assets/icon-insertImage.svg new file mode 100644 index 0000000000..02ba5b9f53 --- /dev/null +++ b/contentcuration/contentcuration/frontend/shared/views/TipTapEditor/assets/icon-insertImage.svg @@ -0,0 +1,3 @@ + + + diff --git a/contentcuration/contentcuration/frontend/shared/views/TipTapEditor/assets/icon-italic.svg b/contentcuration/contentcuration/frontend/shared/views/TipTapEditor/assets/icon-italic.svg new file mode 100644 index 0000000000..5f3b172475 --- /dev/null +++ b/contentcuration/contentcuration/frontend/shared/views/TipTapEditor/assets/icon-italic.svg @@ -0,0 +1 @@ + diff --git a/contentcuration/contentcuration/frontend/shared/views/TipTapEditor/assets/icon-link.svg b/contentcuration/contentcuration/frontend/shared/views/TipTapEditor/assets/icon-link.svg new file mode 100644 index 0000000000..3601f03dd7 --- /dev/null +++ b/contentcuration/contentcuration/frontend/shared/views/TipTapEditor/assets/icon-link.svg @@ -0,0 +1,3 @@ + + + diff --git a/contentcuration/contentcuration/frontend/shared/views/TipTapEditor/assets/icon-numberList.svg b/contentcuration/contentcuration/frontend/shared/views/TipTapEditor/assets/icon-numberList.svg new file mode 100644 index 0000000000..7a284893bc --- /dev/null +++ b/contentcuration/contentcuration/frontend/shared/views/TipTapEditor/assets/icon-numberList.svg @@ -0,0 +1,3 @@ + + + diff --git a/contentcuration/contentcuration/frontend/shared/views/TipTapEditor/assets/icon-numberListRTL.svg b/contentcuration/contentcuration/frontend/shared/views/TipTapEditor/assets/icon-numberListRTL.svg new file mode 100644 index 0000000000..7d44f4c45f --- /dev/null +++ b/contentcuration/contentcuration/frontend/shared/views/TipTapEditor/assets/icon-numberListRTL.svg @@ -0,0 +1 @@ + diff --git a/contentcuration/contentcuration/frontend/shared/views/TipTapEditor/assets/icon-paste.svg b/contentcuration/contentcuration/frontend/shared/views/TipTapEditor/assets/icon-paste.svg new file mode 100644 index 0000000000..bfd0ae5e6f --- /dev/null +++ b/contentcuration/contentcuration/frontend/shared/views/TipTapEditor/assets/icon-paste.svg @@ -0,0 +1 @@ + diff --git a/contentcuration/contentcuration/frontend/shared/views/TipTapEditor/assets/icon-pasteNoFormat.svg b/contentcuration/contentcuration/frontend/shared/views/TipTapEditor/assets/icon-pasteNoFormat.svg new file mode 100644 index 0000000000..817a5d55d2 --- /dev/null +++ b/contentcuration/contentcuration/frontend/shared/views/TipTapEditor/assets/icon-pasteNoFormat.svg @@ -0,0 +1,3 @@ + + + diff --git a/contentcuration/contentcuration/frontend/shared/views/TipTapEditor/assets/icon-redo.svg b/contentcuration/contentcuration/frontend/shared/views/TipTapEditor/assets/icon-redo.svg new file mode 100644 index 0000000000..ab910de246 --- /dev/null +++ b/contentcuration/contentcuration/frontend/shared/views/TipTapEditor/assets/icon-redo.svg @@ -0,0 +1,3 @@ + + + diff --git a/contentcuration/contentcuration/frontend/shared/views/TipTapEditor/assets/icon-strikethrough.svg b/contentcuration/contentcuration/frontend/shared/views/TipTapEditor/assets/icon-strikethrough.svg new file mode 100644 index 0000000000..157cbd361a --- /dev/null +++ b/contentcuration/contentcuration/frontend/shared/views/TipTapEditor/assets/icon-strikethrough.svg @@ -0,0 +1 @@ + diff --git a/contentcuration/contentcuration/frontend/shared/views/TipTapEditor/assets/icon-subscript.svg b/contentcuration/contentcuration/frontend/shared/views/TipTapEditor/assets/icon-subscript.svg new file mode 100644 index 0000000000..c615beaefa --- /dev/null +++ b/contentcuration/contentcuration/frontend/shared/views/TipTapEditor/assets/icon-subscript.svg @@ -0,0 +1,3 @@ + + + diff --git a/contentcuration/contentcuration/frontend/shared/views/TipTapEditor/assets/icon-superscript.svg b/contentcuration/contentcuration/frontend/shared/views/TipTapEditor/assets/icon-superscript.svg new file mode 100644 index 0000000000..733c653c0a --- /dev/null +++ b/contentcuration/contentcuration/frontend/shared/views/TipTapEditor/assets/icon-superscript.svg @@ -0,0 +1,3 @@ + + + diff --git a/contentcuration/contentcuration/frontend/shared/views/TipTapEditor/assets/icon-underline.svg b/contentcuration/contentcuration/frontend/shared/views/TipTapEditor/assets/icon-underline.svg new file mode 100644 index 0000000000..f3e99f25f2 --- /dev/null +++ b/contentcuration/contentcuration/frontend/shared/views/TipTapEditor/assets/icon-underline.svg @@ -0,0 +1 @@ + diff --git a/contentcuration/contentcuration/frontend/shared/views/TipTapEditor/assets/icon-undo.svg b/contentcuration/contentcuration/frontend/shared/views/TipTapEditor/assets/icon-undo.svg new file mode 100644 index 0000000000..08539a0467 --- /dev/null +++ b/contentcuration/contentcuration/frontend/shared/views/TipTapEditor/assets/icon-undo.svg @@ -0,0 +1,3 @@ + + + diff --git a/contentcuration/contentcuration/templates/contentcuration/editor_dev.html b/contentcuration/contentcuration/templates/contentcuration/editor_dev.html new file mode 100644 index 0000000000..d41b1410e6 --- /dev/null +++ b/contentcuration/contentcuration/templates/contentcuration/editor_dev.html @@ -0,0 +1,8 @@ +{% extends "base.html" %} + +{% block content %} +
+ + + +{% endblock %} diff --git a/docs/rich_text_editor.md b/docs/rich_text_editor.md new file mode 100644 index 0000000000..a924925da9 --- /dev/null +++ b/docs/rich_text_editor.md @@ -0,0 +1,277 @@ +# Rich Text Editor Documentation + +This Component replaces Studio’s text editor with a future-ready implementation, deliberately scoped to immediate needs: +-​ Swap Toast UI while preserving Markdown storage +-​ Support for core formatting +-​ Support for more advanced formats (code and math blocks, image uploading) + +It uses TipTap which is a headless, framework-agnostic rich-text editor built on top of ProseMirror. +[https://tiptap.dev/docs](https://tiptap.dev/docs) + +--- + +Currently the editor is accessible through hidden routes: +- `http://localhost:8080/en/channels//#/editor-dev` which requires a valid channel id first +- `http://localhost:8080/#editor-dev` + +## Current Folder Structure + +``` +TipTapEditor/ +├── assets/ +│ └── # icons +└── TipTapEditor/ +| ├── components/ +| │ ├── toolbar/ +| │ ├── ToolbarButton.vue +| │ ├── FormatDropdown.vue +| │ ├── PasteDropdown.vue +| │ └── ToolbarDivider.vue +| │ ├── EditorToolbar.vue +| | └── EditorContentWrapper.vue +| ├── composables/ +| │ ├── useDropdowns.js +| │ ├── useEditor.js +| │ └── useToolbarActions.js +| ├── extensions/ +| │ ├── SmallTextExtension.js +| └── TipTapEditor.vue # Main container +└── TipTapEditorStrings.js +``` +## Current Key Features + +- **Rich Text Formatting**: Bold, italic, underline, strikethrough +- **Typography**: Multiple heading levels (H1, H2, H3), normal text, and small text +- **Lists**: Bullet lists and numbered lists +- **Advanced Clipboard**: Copy with formatting, paste with/without formatting +- **History**: Undo/redo functionality +- **Accessibility**: Full keyboard navigation and ARIA support +- **RTL Support**: Right-to-left text direction support +- **Internationalization**: Built-in string management system +- **Custom Extensions**: Extensible architecture for additional features + +## Core Components + +### 1. TipTapEditor.vue + +**Main container component that orchestrates the entire editor** + +- **Purpose**: Acts as the root component that provides editor context to all child components +- **Key Features**: + - Uses composition API with `useEditor` composable + - Provides editor instance and ready state to child components via Vue's provide/inject + - Contains global typography styles for the editor content +- **Dependencies**: + - `EditorToolbar.vue` + - `EditorContentWrapper.vue` + - `useEditor` composable + +```vue +// Example usage + +``` + +### 2. EditorToolbar.vue + +**Main toolbar component containing all editing controls** + +- **Purpose**: Renders the complete toolbar with all formatting options +- **Structure**: Organized into logical groups with dividers: + - History actions (undo/redo) + - Format dropdown + - Text formatting (bold, italic, underline, strikethrough) + - Copy/paste controls + - List formatting + - Script formatting (subscript, superscript) + - Insert tools (image, link, math, code) +- **Accessibility**: Full ARIA support with role groups and labels +- **Dependencies**: Uses `useToolbarActions` composable for all action handlers + +### 3. EditorContentWrapper.vue + +**Wrapper for the actual editor content area** + +- **Purpose**: Provides the editable content area with proper styling +- **Features**: + - Proper padding and spacing + - Typography styles for all content types + - RTL text direction support +- **Styling**: Deep selectors for ProseMirror content styling + +## Toolbar Components + +### 4. ToolbarButton.vue + +**Reusable button component for toolbar actions** + +- **Props**: + - `title`: Button tooltip and accessibility label + - `icon`: Path to button icon + - `rtlIcon`: Optional RTL-specific icon + - `isActive`: Boolean indicating if button is in active state + - `isAvailable`: Boolean controlling button availability + - `shouldFlipInRtl`: Boolean for RTL icon flipping +- **Features**: + - Automatic RTL icon switching + - Disabled state handling + - Keyboard navigation (Enter/Space) + - Focus management with outline styles + - Active state styling + +### 5. FormatDropdown.vue + +**Dropdown for text format selection (Normal, Small, H1, H2, H3)** + +- **Features**: + - Dynamic format detection and display + - Live preview of formats in dropdown + - Full keyboard navigation (arrows, Enter, Escape, Home, End) + - Focus management + - ARIA menu implementation +- **Format Options**: + - Small text (12px) + - Normal paragraph (16px) + - Header 3 (18px) + - Header 2 (24px) + - Header 1 (32px) + +### 6. PasteDropdown.vue + +**Split button for paste operations** + +- **Structure**: + - Main paste button (standard paste with formatting) + - Dropdown arrow for paste options +- **Options**: + - Paste (with formatting) + - Paste without formatting (plain text) +- **Features**: + - Clipboard API integration + - HTML and plain text handling + - Keyboard navigation + - Split button interaction pattern + +### 7. ToolbarDivider.vue + +**Visual separator between toolbar groups** + +- Simple component providing consistent spacing and visual separation +- Helps organize toolbar into logical sections + +## Composables (Business Logic) + +### 8. useEditor.js + +**Core editor initialization and lifecycle management** + +- **Purpose**: Creates and manages the TipTap editor instance +- **Extensions Used**: + - StarterKit (basic functionality) + - Underline extension + - Custom Small text extension +- **Lifecycle**: Handles editor creation on mount and cleanup on unmount +- **Returns**: Editor instance and ready state + +```javascript +const { editor, isReady } = useEditor() +``` + +### 9. useToolbarActions.js + +**All toolbar action handlers and state management** + +- **Individual Handlers**: Each formatting action (bold, italic, etc.) +- **Action Groups**: Organized arrays of related actions +- **Features**: + - Copy with HTML and plain text formats + - Intelligent paste handling + - Active state detection for buttons + - Button availability checking (undo/redo) + - Format application logic +- **Internationalization**: Uses translator function for button labels + +### 10. useDropdowns.js + +**Dropdown state management and interaction logic** + +- **State Management**: + - Current format detection + - Dropdown open/close states + - Format options configuration +- **Format Detection**: Real-time monitoring of cursor position to update selected format +- **Event Handling**: Click outside detection for dropdown closing +- **Editor Integration**: Listens to editor transactions for format updates + +## Extensions + +### 11. SmallTextExtension.js + +**Custom TipTap extension for small text formatting** + +- **Type**: Block node extension +- **Features**: + - Creates `` HTML elements + - Block-level content with inline children + - Custom CSS class (`small-text`) + - Keyboard shortcut (Mod+Shift+S) +- **Commands**: + - `setSmall()`: Convert current block to small text + - `toggleSmall()`: Toggle between small text and paragraph + - `unsetSmall()`: Convert back to paragraph +- **Priority**: High priority (1000) for proper node precedence + +>[!NOTE] +> Why a Node instead of a Mark? +> - Semantic structure: ` `is semantically a block-level structure in our context, representing a complete unit of small text rather than just formatted text spans. +> - Content integrity: As a Node, we can ensure the entire content maintains consistent styling and behavior. +> - Block-level control: Using a Node allows us to treat small text as a distinct content block that can be manipulated as a whole unit in the editor. +> - DOM structure: We want a proper `` element in the output HTML rather than just applying a class or style to spans of text. + + +### 12. TipTapEditorStrings.js + +**Centralized string management for internationalization** + +- **Structure**: + - Namespace-based organization + - Message key-value pairs + - Translator factory function +- **Coverage**: All user-facing strings including: + - Button labels and tooltips + - Format options + - Accessibility labels + - Dropdown options +- **Usage**: Provides `getTranslator()` function for components + +>[!NOTE] +>Uses Lazy Loading pattern to be able to use it without the need for it to be inside a vue lie cycle hook. +## Styling Architecture + +asheres to [the suggested figma design](https://www.figma.com/design/uw8lx88ZKZU8X7kN9SdLeo/Rich-text-editor---GSOC-2025?node-id=377-633&t=0XAXleYjjGY2Fxzc-0) +### Component Styles + +- Scoped styles for component isolation +- Deep selectors for ProseMirror content +- CSS custom properties for theming +- Focus management with outline styles + +### Accessibility Features + +- High contrast focus indicators +- ARIA roles and properties +- Keyboard navigation support +- Screen reader friendly labels + +## Technical Specifications + +### Dependencies + +- **TipTap**: Core editor framework +- **TipTap Extensions**: StarterKit, Underline +- **Clipboard API**: Modern clipboard operations + +### Browser Support + +- Modern browsers with Clipboard API support +- RTL text direction support +- Keyboard navigation compatibility diff --git a/package.json b/package.json index 72f806ecd0..366ee8e8e6 100644 --- a/package.json +++ b/package.json @@ -54,6 +54,10 @@ "homepage": "https://github.com/learningequality/studio#readme", "dependencies": { "@sentry/vue": "^7.112.2", + "@tiptap/core": "^2.14.0", + "@tiptap/extension-underline": "^2.14.0", + "@tiptap/starter-kit": "^2.13.0", + "@tiptap/vue-2": "^2.13.0", "@toast-ui/editor": "^2.3.1", "ajv": "^8.12.0", "axios": "^1.10.0", diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 314085a2ca..526d34b208 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -11,6 +11,18 @@ importers: '@sentry/vue': specifier: ^7.112.2 version: 7.120.3(vue@2.7.16) + '@tiptap/core': + specifier: ^2.14.0 + version: 2.22.3(@tiptap/pm@2.22.3) + '@tiptap/extension-underline': + specifier: ^2.14.0 + version: 2.22.3(@tiptap/core@2.22.3(@tiptap/pm@2.22.3)) + '@tiptap/starter-kit': + specifier: ^2.13.0 + version: 2.22.3 + '@tiptap/vue-2': + specifier: ^2.13.0 + version: 2.22.3(@tiptap/core@2.22.3(@tiptap/pm@2.22.3))(@tiptap/pm@2.22.3)(vue@2.7.16) '@toast-ui/editor': specifier: ^2.3.1 version: 2.5.4 @@ -85,7 +97,7 @@ importers: version: 2.1.0 papaparse: specifier: ^5.4.1 - version: 5.5.2 + version: 5.5.3 pdfjs-dist: specifier: ^2.16.105 version: 2.16.105 @@ -176,7 +188,7 @@ importers: version: https://codeload.github.com/learningequality/aphrodite/tar.gz/fdc8d7be8912a5cf17f74ff10f124013c52c3e32 autoprefixer: specifier: ^10.4.19 - version: 10.4.21(postcss@8.5.3) + version: 10.4.21(postcss@8.5.6) babel-core: specifier: 7.0.0-bridge.0 version: 7.0.0-bridge.0(@babel/core@7.27.4) @@ -197,16 +209,16 @@ importers: version: 8.57.1 eslint-config-prettier: specifier: ^10.0.1 - version: 10.0.2(eslint@8.57.1) + version: 10.1.5(eslint@8.57.1) eslint-import-resolver-webpack: specifier: 0.13.8 - version: 0.13.8(eslint-plugin-import@2.31.0)(webpack@5.99.7) + version: 0.13.8(eslint-plugin-import@2.32.0)(webpack@5.99.7) eslint-plugin-import: specifier: ^2.31.0 - version: 2.31.0(eslint-import-resolver-webpack@0.13.8)(eslint@8.57.1) + version: 2.32.0(eslint-import-resolver-webpack@0.13.8)(eslint@8.57.1) eslint-plugin-jest: specifier: ^28.11.0 - version: 28.11.0(eslint@8.57.1)(jest@29.7.0(@types/node@22.15.3))(typescript@5.7.3) + version: 28.14.0(eslint@8.57.1)(jest@29.7.0(@types/node@24.0.4))(typescript@5.8.3) eslint-plugin-jest-dom: specifier: ^5.5.0 version: 5.5.0(@testing-library/dom@9.3.4)(eslint@8.57.1) @@ -215,7 +227,7 @@ importers: version: 0.18.0 eslint-plugin-vue: specifier: ^9.32.0 - version: 9.32.0(eslint@8.57.1) + version: 9.33.0(eslint@8.57.1) fake-indexeddb: specifier: ^5.0.2 version: 5.0.2 @@ -230,10 +242,10 @@ importers: version: 3.0.0 jest: specifier: ^29.7.0 - version: 29.7.0(@types/node@22.15.3) + version: 29.7.0(@types/node@24.0.4) jest-cli: specifier: ^29.7.0 - version: 29.7.0(@types/node@22.15.3) + version: 29.7.0(@types/node@24.0.4) jest-each: specifier: ^29.7.0 version: 29.7.0 @@ -245,10 +257,10 @@ importers: version: 3.1.0 kolibri-format: specifier: 1.0.1 - version: 1.0.1(@testing-library/dom@9.3.4)(eslint-import-resolver-webpack@0.13.8)(jest@29.7.0(@types/node@22.15.3))(postcss@8.5.3)(typescript@5.7.3) + version: 1.0.1(@testing-library/dom@9.3.4)(eslint-import-resolver-webpack@0.13.8)(jest@29.7.0(@types/node@24.0.4))(postcss@8.5.6)(typescript@5.8.3) kolibri-tools: specifier: 0.18.2 - version: 0.18.2(@testing-library/dom@9.3.4)(@types/node@22.15.3)(ejs@3.1.10)(eslint-import-resolver-webpack@0.13.8)(file-loader@6.2.0(webpack@5.99.7))(postcss@8.5.3)(typescript@5.7.3)(vue@2.7.16) + version: 0.18.2(@testing-library/dom@9.3.4)(@types/node@24.0.4)(ejs@3.1.10)(eslint-import-resolver-webpack@0.13.8)(file-loader@6.2.0(webpack@5.99.7))(postcss@8.5.6)(typescript@5.8.3)(vue@2.7.16) mini-css-extract-plugin: specifier: ^2.8.1 version: 2.9.2(webpack@5.99.7) @@ -263,16 +275,16 @@ importers: version: 1.8.0 postcss-less: specifier: ^6.0.0 - version: 6.0.0(postcss@8.5.3) + version: 6.0.0(postcss@8.5.6) postcss-loader: specifier: ^8.1.1 - version: 8.1.1(postcss@8.5.3)(typescript@5.7.3)(webpack@5.99.7) + version: 8.1.1(postcss@8.5.6)(typescript@5.8.3)(webpack@5.99.7) postcss-sass: specifier: ^0.5.0 version: 0.5.0 postcss-scss: specifier: ^4.0.9 - version: 4.0.9(postcss@8.5.3) + version: 4.0.9(postcss@8.5.6) sass-loader: specifier: 16.0.4 version: 16.0.4(node-sass@9.0.0)(webpack@5.99.7) @@ -281,31 +293,31 @@ importers: version: 4.0.0(webpack@5.99.7) stylelint: specifier: ^15.11.0 - version: 15.11.0(typescript@5.7.3) + version: 15.11.0(typescript@5.8.3) stylelint-config-html: specifier: ^1.1.0 - version: 1.1.0(postcss-html@1.8.0)(stylelint@15.11.0(typescript@5.7.3)) + version: 1.1.0(postcss-html@1.8.0)(stylelint@15.11.0(typescript@5.8.3)) stylelint-config-prettier: specifier: 9.0.5 - version: 9.0.5(stylelint@15.11.0(typescript@5.7.3)) + version: 9.0.5(stylelint@15.11.0(typescript@5.8.3)) stylelint-config-recess-order: specifier: 4.6.0 - version: 4.6.0(stylelint@15.11.0(typescript@5.7.3)) + version: 4.6.0(stylelint@15.11.0(typescript@5.8.3)) stylelint-config-recommended-scss: specifier: 14.1.0 - version: 14.1.0(postcss@8.5.3)(stylelint@15.11.0(typescript@5.7.3)) + version: 14.1.0(postcss@8.5.6)(stylelint@15.11.0(typescript@5.8.3)) stylelint-config-sass-guidelines: specifier: 11.1.0 - version: 11.1.0(postcss@8.5.3)(stylelint@15.11.0(typescript@5.7.3)) + version: 11.1.0(postcss@8.5.6)(stylelint@15.11.0(typescript@5.8.3)) stylelint-config-standard: specifier: 34.0.0 - version: 34.0.0(stylelint@15.11.0(typescript@5.7.3)) + version: 34.0.0(stylelint@15.11.0(typescript@5.8.3)) stylelint-csstree-validator: specifier: 3.0.0 - version: 3.0.0(stylelint@15.11.0(typescript@5.7.3)) + version: 3.0.0(stylelint@15.11.0(typescript@5.8.3)) stylelint-scss: specifier: 5.3.2 - version: 5.3.2(stylelint@15.11.0(typescript@5.7.3)) + version: 5.3.2(stylelint@15.11.0(typescript@5.8.3)) stylus: specifier: ^0.63.0 version: 0.63.0 @@ -348,8 +360,8 @@ packages: '@adobe/css-tools@4.3.3': resolution: {integrity: sha512-rE0Pygv0sEZ4vBWHlAgJLGDU7Pm8xoO6p3wsEceb7GYAjScrOHpEo8KK/eVkAcnSM+slAEtXjA2JpdjLp4fJQQ==} - '@adobe/css-tools@4.4.2': - resolution: {integrity: sha512-baYZExFpsdkBNuvGKTKWCwKH57HRZLVtycZS05WTQNVOiXVSeAki3nU35zlRbToeMW8aHlJfyS+1C4BOv27q0A==} + '@adobe/css-tools@4.4.3': + resolution: {integrity: sha512-VQKMkwriZbaOgVCby1UDY/LDk5fIjhQicCvVPFqfe+69fWaPWydbWJ3wRt59/YzIwda1I81loas3oCoHxnqvdA==} '@ampproject/remapping@2.3.0': resolution: {integrity: sha512-30iZtAPgz+LTIYoeivqYo853f02jBYSd5uGnGpkFV0M3xOt9aN73erkgYAmZU43x4VfqcnLxW9Kpg3R5LC4YYw==} @@ -529,8 +541,8 @@ packages: peerDependencies: '@babel/core': ^7.0.0-0 - '@babel/plugin-syntax-flow@7.26.0': - resolution: {integrity: sha512-B+O2DnPc0iG+YXFqOxv2WNuNU97ToWjOomUQ78DouOENWUaM5sVrmet9mcomUGQFwpJd//gvUagXBSdzO1fRKg==} + '@babel/plugin-syntax-flow@7.27.1': + resolution: {integrity: sha512-p9OkPbZ5G7UT1MofwYFigGebnrzGJacoBSQM0/6bi/PUMVE+qlWDD/OalvQKbwgQzU6dl0xAv6r4X7Jme0RYxA==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 @@ -557,8 +569,8 @@ packages: peerDependencies: '@babel/core': ^7.0.0-0 - '@babel/plugin-syntax-jsx@7.25.9': - resolution: {integrity: sha512-ld6oezHQMZsZfp6pWtbjaNDF2tiiCYYDqQszHt5VV437lewP9aSi2Of99CK0D0XB21k7FLgnLcmQKyKzynfeAA==} + '@babel/plugin-syntax-jsx@7.27.1': + resolution: {integrity: sha512-y8YTNIeKoyhGd9O0Jiyzyyqk8gdjnumGTQPsz0xOZOQ2RmkVJeZ1vmmfIvFEKqucBG6axJGBZDE/7iI5suUI/w==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 @@ -605,8 +617,8 @@ packages: peerDependencies: '@babel/core': ^7.0.0-0 - '@babel/plugin-syntax-typescript@7.25.9': - resolution: {integrity: sha512-hjMgRy5hb8uJJjUcdWunWVcoi9bGpJp8p5Ol1229PoN6aytsLwNMgmdftO23wnCLMfVmTwZDWMPNq/D1SY60JQ==} + '@babel/plugin-syntax-typescript@7.27.1': + resolution: {integrity: sha512-xfYCBMxveHrRMnAWl1ZlPXOZjzkN82THFvLhQhFXFt81Z5HnN+EtUkZhv/zcKpmT3fzmWZB0ywiBrbC3vogbwQ==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 @@ -713,8 +725,8 @@ packages: peerDependencies: '@babel/core': ^7.0.0-0 - '@babel/plugin-transform-flow-strip-types@7.26.5': - resolution: {integrity: sha512-eGK26RsbIkYUns3Y8qKl362juDDYK+wEdPGHGrhzUl6CewZFo55VZ7hg+CyMFU4dd5QQakBN86nBMpRsFpRvbQ==} + '@babel/plugin-transform-flow-strip-types@7.27.1': + resolution: {integrity: sha512-G5eDKsu50udECw7DL2AcsysXiQyB7Nfg521t2OAJ4tbfTJ27doHLeF/vlI1NZGlLdbb/v+ibvtL1YBQqYOwJGg==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 @@ -905,8 +917,8 @@ packages: peerDependencies: '@babel/core': ^7.0.0-0 - '@babel/plugin-transform-typescript@7.27.0': - resolution: {integrity: sha512-fRGGjO2UEGPjvEcyAZXRXAS8AfdaQoq7HnxAbJoAoW10B9xOKesmmndJv+Sym2a+9FHWZ9KbyyLCe9s0Sn5jtg==} + '@babel/plugin-transform-typescript@7.27.1': + resolution: {integrity: sha512-Q5sT5+O4QUebHdbwKedFBEwRLb02zJ7r4A5Gg2hUoLuU3FjdMcyqcywqUrLCaDsFCxzokf7u9kuy7qz51YUuAg==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 @@ -941,8 +953,8 @@ packages: peerDependencies: '@babel/core': ^7.0.0-0 - '@babel/preset-flow@7.25.9': - resolution: {integrity: sha512-EASHsAhE+SSlEzJ4bzfusnXSHiU+JfAYzj+jbw2vgQKgq5HrUr8qs+vgtiEL5dOH6sEweI+PNt2D7AqrDSHyqQ==} + '@babel/preset-flow@7.27.1': + resolution: {integrity: sha512-ez3a2it5Fn6P54W8QkbfIyyIbxlXvcxyWHHvno1Wg0Ej5eiJY5hBb8ExttoIOJJk7V2dZE6prP7iby5q2aQ0Lg==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 @@ -952,14 +964,14 @@ packages: peerDependencies: '@babel/core': ^7.0.0-0 || ^8.0.0-0 <8.0.0 - '@babel/preset-typescript@7.27.0': - resolution: {integrity: sha512-vxaPFfJtHhgeOVXRKuHpHPAOgymmy8V8I65T1q53R7GCZlefKeCaTyDs3zOPHTTbmquvNlQYC5klEvWsBAtrBQ==} + '@babel/preset-typescript@7.27.1': + resolution: {integrity: sha512-l7WfQfX0WK4M0v2RudjuQK4u99BS6yLHYEmdtVPP7lKV013zr9DygFuWNlnbvQ9LR+LS0Egz/XAvGx5U9MX0fQ==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 - '@babel/register@7.25.9': - resolution: {integrity: sha512-8D43jXtGsYmEeDvm4MWHYUpWf8iiXgWYx3fW7E7Wb7Oe6FWqJPl5K6TuFW0dOwNZzEE5rjlaSJYH9JjrUKJszA==} + '@babel/register@7.27.1': + resolution: {integrity: sha512-K13lQpoV54LATKkzBpBAEu1GGSIRzxR9f4IN4V8DCDgiUMo2UDGagEZr3lPeVNJPLkWUi5JE4hCHKneVTwQlYQ==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 @@ -968,8 +980,8 @@ packages: resolution: {integrity: sha512-mM8eg4yl5D6i3lu2QKPuPH4FArvJ8KhTofbE7jwMUv9KX5mBvwPAqnV3MlyBNqdp9RyRKP6Yck8TrfYrPvX3bg==} engines: {node: '>=6.9.0'} - '@babel/runtime@7.26.9': - resolution: {integrity: sha512-aA63XwOkcl4xxQa3HjPMqOP6LiK0ZDv3mUPYEFXkpHbaFjtGggE1A61FjFzJnB+p7/oy2gA8E+rcBNl/zC1tMg==} + '@babel/runtime@7.27.6': + resolution: {integrity: sha512-vbavdySgbTTrmFE+EsiqUTzlOr5bzlnJtUv9PynGCAKvfQqjIXbvFdumPM/GxMDfyuGMJaJAU6TO4zc1Jf1i8Q==} engines: {node: '>=6.9.0'} '@babel/template@7.27.2': @@ -1014,8 +1026,8 @@ packages: resolution: {integrity: sha512-4B4OijXeVNOPZlYA2oEwWOTkzyltLao+xbotHQeqN++Rv27Y6s818+n2Qkp8q+Fxhn0t/5lA5X1Mxktud8eayQ==} engines: {node: '>=14.17.0'} - '@eslint-community/eslint-utils@4.4.1': - resolution: {integrity: sha512-s3O3waFUrMV8P/XaF/+ZTp1X9XBZW1a4B97ZnjQF2KYWaFD2A8KyFBsrsfSjEmjn3RGWAIuvlneuZm3CUK3jbA==} + '@eslint-community/eslint-utils@4.7.0': + resolution: {integrity: sha512-dyybb3AcajC7uha6CvhdVRJqaKyn7w2YKqKyAN37NKYgZT36w+iRb0Dymmc5qEJ549c/S31cMMSFd75bteCpCw==} engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} peerDependencies: eslint: ^6.0.0 || ^7.0.0 || >=8.0.0 @@ -1261,6 +1273,12 @@ packages: resolution: {integrity: sha512-+1VkjdD0QBLPodGrJUeqarH8VAIvQODIbwh9XpP5Syisf7YoQgsJKPNFoqqLQlu+VQ/tVSshMR6loPMn8U+dPg==} engines: {node: '>=14'} + '@popperjs/core@2.11.8': + resolution: {integrity: sha512-P1st0aksCrn9sGZhp8GMYwBnQsbvAWsZAX44oXNNvLHGqAOcoVxmjZiohstwQ7SqKnbR47akdNi+uleWD8+g6A==} + + '@remirror/core-constants@3.0.0': + resolution: {integrity: sha512-42aWfPrimMfDKDi4YegyS7x+/0tlzaqwPQCULLanv3DMIlu96KTJR0fM5isWX2UViOqlGnX6YFgqWepcX+XMNg==} + '@rollup/plugin-babel@5.3.1': resolution: {integrity: sha512-WFfdLWU/xVWKeRQnKmIAQULUI7Il0gZnBIH/ZFO069wYIfPu+8zrfp/KMW0atmELoRDq8FbiP3VCss9MhCut7Q==} engines: {node: '>= 10.0.0'} @@ -1301,8 +1319,8 @@ packages: peerDependencies: rollup: ^1.20.0||^2.0.0 - '@rollup/pluginutils@5.1.4': - resolution: {integrity: sha512-USm05zrsFxYLPdWWq+K3STlWiT/3ELn3RcV5hJMghpeAIhxfsUIg6mt12CBJBInWMV4VneoV7SfGv8xIwo2qNQ==} + '@rollup/pluginutils@5.2.0': + resolution: {integrity: sha512-qWJ2ZTbmumwiLFomfzTyt5Kng4hwPi9rwCYN4SHb6eaRU1KNO4ccxINHr/VhH4GgPlt1XfSTLX2LBTme8ne4Zw==} engines: {node: '>=14.0.0'} peerDependencies: rollup: ^1.20.0||^2.0.0||^3.0.0||^4.0.0 @@ -1391,6 +1409,141 @@ packages: vue: ^2.6.10 vue-template-compiler: ^2.6.10 + '@tiptap/core@2.22.3': + resolution: {integrity: sha512-czyBPXZG/ZFyObZEF1kyusGf58Ai3X8TnaxlUUn3gqLLWPy0idXZg85NETCidzi/gAxWxL9j6Pcy+zwS4pbZYQ==} + peerDependencies: + '@tiptap/pm': ^2.7.0 + + '@tiptap/extension-blockquote@2.22.3': + resolution: {integrity: sha512-HvTXvqeGaANg0owk0Xxkgyc4lJMO5CZES2Lc3JJp8u5kV+HZIwd78eJ7fbKBMtkpKb4zOk4xQsHQ/TuhghJaeA==} + peerDependencies: + '@tiptap/core': ^2.7.0 + + '@tiptap/extension-bold@2.22.3': + resolution: {integrity: sha512-J3GxKwijD42eqCwU1SS7PK5aSgnp0wgQDetLz9izAD0RQBrKj5WZA13GnPoTTlzLU4qwjcPRV+6mvF+llH6b6A==} + peerDependencies: + '@tiptap/core': ^2.7.0 + + '@tiptap/extension-bubble-menu@2.22.3': + resolution: {integrity: sha512-8iQLNrRf3iBPKqI3dQnfvMxMfgp6y9TAbO803LihvzbIGqBaX264ES7fHtoyFIIeVjy2xFruVsTZCZofWTupGg==} + peerDependencies: + '@tiptap/core': ^2.7.0 + '@tiptap/pm': ^2.7.0 + + '@tiptap/extension-bullet-list@2.22.3': + resolution: {integrity: sha512-SYvLIxqmuV0kTj4/3ZFlnZ1fr9Y233qX00BKuIpGnczeFsWQmzBJo8vGm3d1IlKPCQN+jTRtDdDE1aSum8Kv2w==} + peerDependencies: + '@tiptap/core': ^2.7.0 + + '@tiptap/extension-code-block@2.22.3': + resolution: {integrity: sha512-twPCBpb/ygNixlSBAXgvfo+t56Ucpb8lvPDiZn+cH8OjmmO0ayBoSfSrjKWgaEWGPcXBrFAfsBRbYHyoHj7pXg==} + peerDependencies: + '@tiptap/core': ^2.7.0 + '@tiptap/pm': ^2.7.0 + + '@tiptap/extension-code@2.22.3': + resolution: {integrity: sha512-s+W6jHezq+n9cC40xZ3hZF6cGGSl+fBELik1b2x8+cb0WoIlqmcdWin1dgeMNrWlRZUw1aD2DNwy/PdXI5vn2g==} + peerDependencies: + '@tiptap/core': ^2.7.0 + + '@tiptap/extension-document@2.22.3': + resolution: {integrity: sha512-7MnILbhRZRyROlMUgyntzRZ/EZlqNB8fO761RNjJxR2WMb49R4yc04fz7/+f/QH/hwxoS13bKfsNUDAsDxA5Aw==} + peerDependencies: + '@tiptap/core': ^2.7.0 + + '@tiptap/extension-dropcursor@2.22.3': + resolution: {integrity: sha512-yQxSfTWjdUQS+bh6KiNLR9KIMsn1SElzycQe4XE+0eoaetapGtKqxfwkTbbQdNgQOU5wQG1KOda221mnPvkpAA==} + peerDependencies: + '@tiptap/core': ^2.7.0 + '@tiptap/pm': ^2.7.0 + + '@tiptap/extension-floating-menu@2.22.3': + resolution: {integrity: sha512-GeJRRdulxpwsshxzBkpOf/xJkLD2fa+49o+3FqRCmrm7AioC8oUcZZmzuzjLj5a3ZNGKPuJ9xxDkYWUjH4tE1g==} + peerDependencies: + '@tiptap/core': ^2.7.0 + '@tiptap/pm': ^2.7.0 + + '@tiptap/extension-gapcursor@2.22.3': + resolution: {integrity: sha512-6Q8TLL4PVGcZLn27eQazCC+be8LP8uzuz5Z5e4TpIeswPAju49cerQOdEGNFKkuYv/FelWIhXNtkWFMf4eSmyw==} + peerDependencies: + '@tiptap/core': ^2.7.0 + '@tiptap/pm': ^2.7.0 + + '@tiptap/extension-hard-break@2.22.3': + resolution: {integrity: sha512-tbEji/V4Za3UhxYwB36amYhyonwe5j66iYTNRWzgjNixjrcGDbWk6cfaF9jMAgPgIDBmmtQLJY+moKskwgpnZg==} + peerDependencies: + '@tiptap/core': ^2.7.0 + + '@tiptap/extension-heading@2.22.3': + resolution: {integrity: sha512-+MexJD+kXtNwMDbNTFa7jCFipx1DqAdT+n9GgInqebAN9bK+CWjC+SskzZNRqeMrQ0Er7QTsi6YC09M+74sevA==} + peerDependencies: + '@tiptap/core': ^2.7.0 + + '@tiptap/extension-history@2.22.3': + resolution: {integrity: sha512-F9sC45zPw7vbjKrwSKuSLZ0ODyc/X3bGPeCa6HYLEHKfgqsdt2v2fQLvxjpmlwO2ZMrnkBkg76KDxHfVyrZ2zQ==} + peerDependencies: + '@tiptap/core': ^2.7.0 + '@tiptap/pm': ^2.7.0 + + '@tiptap/extension-horizontal-rule@2.22.3': + resolution: {integrity: sha512-3GvY798p9pCXUBbCebIdSmi1q80l7VZz/B6NN4uUMQ9iwxWopd8yaZ0O7xx2hM2UBzPEtY3M4FAhhpYUTXNFgQ==} + peerDependencies: + '@tiptap/core': ^2.7.0 + '@tiptap/pm': ^2.7.0 + + '@tiptap/extension-italic@2.22.3': + resolution: {integrity: sha512-W/rQDo7qFL7MfwfaYEcdtbk862fOmBv30qIEwVdqElBye7BFJYKtRuWBzNbG2BwKanjwMbVc/tBXF5W1sqfT7Q==} + peerDependencies: + '@tiptap/core': ^2.7.0 + + '@tiptap/extension-list-item@2.22.3': + resolution: {integrity: sha512-B7Fze+eM1sYbGOZtDDAwAivnj1ow2wN5RqaQPC1la3wdTK4Wgp7bdzGjvUbrN6gp3zMFCEWlqP2toc/mRAHCtA==} + peerDependencies: + '@tiptap/core': ^2.7.0 + + '@tiptap/extension-ordered-list@2.22.3': + resolution: {integrity: sha512-pHGkuZhV/uAAHI9vzk/lpAkbdpMT4wUR1FI17/GE3zNrogfzx0VopCQrXq4+sQVsLUW4I6Cj6VeBjm9wB6qlIw==} + peerDependencies: + '@tiptap/core': ^2.7.0 + + '@tiptap/extension-paragraph@2.22.3': + resolution: {integrity: sha512-TYvgS7CweNFo/xVxsKWSt0wnm46Y8OtsfDSjnLbSC4Pj4ZNa6PU3zpvDTW+UxYakr+8zIPvI2WgLBkyTHq6oQA==} + peerDependencies: + '@tiptap/core': ^2.7.0 + + '@tiptap/extension-strike@2.22.3': + resolution: {integrity: sha512-I+s2Csw2cTHae2vFJiojnHK+NnQjDr6441mSlAd+e7kEly1kjZ4g7J+JMj02ajNQhr/ob8/hb5r6EdIyv2xtoA==} + peerDependencies: + '@tiptap/core': ^2.7.0 + + '@tiptap/extension-text-style@2.22.3': + resolution: {integrity: sha512-M3FLOUPcO8fR+rM97mR2gQ54KFkdlAUQtEPKQpO1f312gtcVdBNxgq0WgqTnBY7thWLyqQSKiAsL6y88+JddSA==} + peerDependencies: + '@tiptap/core': ^2.7.0 + + '@tiptap/extension-text@2.22.3': + resolution: {integrity: sha512-07cymWkPTfq6nuum88Yf90YYArbowed8nNiu0Tw3jCvwpzf9J9TDaovT+LAKuSKtrOsnNpFB/9IqUwFxZepOGw==} + peerDependencies: + '@tiptap/core': ^2.7.0 + + '@tiptap/extension-underline@2.22.3': + resolution: {integrity: sha512-floLjh1UbQ2pKgdwfw7qCAJ5VojvH1uqj7xW2RCv79aWYUuJCPD6UBpaBOt/jv7gXDJJ9EeV3m2Hga49CXBrEQ==} + peerDependencies: + '@tiptap/core': ^2.7.0 + + '@tiptap/pm@2.22.3': + resolution: {integrity: sha512-uWPeIScnpQVCYdTnL140XgcvbT1qH288CstMJ6S0Y11lC5PclPK9CxfAipsqgWWrIK7yatxKUVCg6TzfG9zpmA==} + + '@tiptap/starter-kit@2.22.3': + resolution: {integrity: sha512-GkvheaR2ORnHJ9g9R6xIT38w2uppGja/iAIrXLZ9vY1QuR+0cya/ZZ5vKU6r9C2PeyBs3aKYxRD1/j3HDhuGXw==} + + '@tiptap/vue-2@2.22.3': + resolution: {integrity: sha512-x2sv+3JbupXTdoBvgTMLexi7VLbXgDE0FoJssjfa5FsZqDw+qO1e0DG2/sUKuGCbDVTT0vm8ac/7sfgTS4WXvg==} + peerDependencies: + '@tiptap/core': ^2.7.0 + '@tiptap/pm': ^2.7.0 + vue: ^2.6.0 + '@toast-ui/editor@2.5.4': resolution: {integrity: sha512-XsuYlPQxhec9dHQREFAigjE4enHSuGMF7D0YQ6wW7phmusvAu0FnJfZUPjJBoU/GKz7WP5U6fKU9/P+8j65D8A==} @@ -1415,14 +1568,14 @@ packages: '@types/babel__core@7.20.5': resolution: {integrity: sha512-qoQprZvz5wQFJwMDqeseRXWv3rqMvhgpbXFfVyWhbx9X47POIA6i/+dXefEmZKoAgOaTdaIgNSMqMIU61yRyzA==} - '@types/babel__generator@7.6.8': - resolution: {integrity: sha512-ASsj+tpEDsEiFr1arWrlN6V3mdfjRMZt6LtK/Vp/kreFLnr5QH5+DhvD5nINYZXzwJvXeGq+05iUXcAzVrqWtw==} + '@types/babel__generator@7.27.0': + resolution: {integrity: sha512-ufFd2Xi92OAVPYsy+P4n7/U7e68fex0+Ee8gSG9KX7eo084CWiQ4sdxktvdl0bOPupXtVJPY19zk6EwWqUQ8lg==} '@types/babel__template@7.4.4': resolution: {integrity: sha512-h/NUaSyG5EyxBIp8YRxo4RMe2/qQgvyowRwVMzhYhBCONbW8PUsg4lkFMrhgZhUe5z3L3MiLDuvyJ/CaPa2A8A==} - '@types/babel__traverse@7.20.6': - resolution: {integrity: sha512-r1bzfrm0tomOI8g1SzvCaQHo6Lcv6zu0EA+W2kHrt8dyrHQxGzBBL4kdkzIS+jBMV+EYcMAEAqXqYaLJq5rOZg==} + '@types/babel__traverse@7.20.7': + resolution: {integrity: sha512-dkO5fhS7+/oos4ciWxyEyjWe48zmG6wbCheo/G2ZnHx4fs3EU6YC6UM8rk56gAjNJ9P3MTH2jo5jb92/K6wbng==} '@types/body-parser@1.19.6': resolution: {integrity: sha512-HLFeCYgz89uk22N5Qg3dvGvsv46B8GLvKKo1zKG4NybA8U2DiEO3w9lqGg29t/tfLRJpJ6iQxnVw4OnB7MoM9g==} @@ -1448,8 +1601,8 @@ packages: '@types/estree@0.0.39': resolution: {integrity: sha512-EYNwp3bU+98cpU4lAWYYL7Zz+2gryWH1qbdDTidVd6hkiR6weksdbMadyXKXNPEkQFhXM+hVO9ZygomHXp+AIw==} - '@types/estree@1.0.7': - resolution: {integrity: sha512-w28IoSUCJpidD/TGviZwwMJckNESJZXFu7NBZ5YJ4mEUnNraUn9Pm8HSZm/jDF1pDWYKspWE7oVphigUPRakIQ==} + '@types/estree@1.0.8': + resolution: {integrity: sha512-dWHzHa2WqEXI/O1E9OjrocMTKJl2mSrEolh1Iomrv6U+JuNwaHXsXx9bLu5gG7BUWFIN0skIQJQ/L1rIex4X6w==} '@types/express-serve-static-core@4.19.6': resolution: {integrity: sha512-N4LZ2xG7DatVqhCZzOGb1Yi5lMbXSZcmdLDe9EzSndPV2HpWYWzRbaerl2n27irrm94EPpprqa8KpskPT085+A==} @@ -1484,12 +1637,21 @@ packages: '@types/json5@0.0.29': resolution: {integrity: sha512-dRLjCWHYg4oaA77cxO64oO+7JwCwnIzkZPdrrC71jQmQtlhM556pwKo5bUzqvZndkVbeFLIIi+9TC40JNF5hNQ==} + '@types/linkify-it@5.0.0': + resolution: {integrity: sha512-sVDA58zAw4eWAffKOaQH5/5j3XeayukzDk+ewSsnv3p4yJEZHCCzMDiZM8e0OUrRvmpGZ85jf4yDHkHsgBNr9Q==} + '@types/localforage@0.0.34': resolution: {integrity: sha512-tJxahnjm9dEI1X+hQSC5f2BSd/coZaqbIl1m3TCl0q9SVuC52XcXfV0XmoCU1+PmjyucuVITwoTnN8OlTbEXXA==} deprecated: This is a stub types definition for localforage (https://github.com/localForage/localForage). localforage provides its own type definitions, so you don't need @types/localforage installed! - '@types/lodash@4.17.15': - resolution: {integrity: sha512-w/P33JFeySuhN6JLkysYUK2gEmy9kHHFN7E8ro0tkfmlDOgxBDzWEZ/J8cWA+fHqFevpswDTFZnDx+R9lbL6xw==} + '@types/lodash@4.17.18': + resolution: {integrity: sha512-KJ65INaxqxmU6EoCiJmRPZC9H9RVWCRd349tXM2M3O5NA7cY6YL7c0bHAHQ93NOfTObEQ004kd2QVHs/r0+m4g==} + + '@types/markdown-it@14.1.2': + resolution: {integrity: sha512-promo4eFwuiW+TfGxhi+0x3czqTYJkG8qB17ZUJiVF10Xm7NLVRSLUsfRTU/6h1e24VvRnXCx+hG7li58lkzog==} + + '@types/mdurl@2.0.0': + resolution: {integrity: sha512-RGdgjQUZba5p6QEFAVx2OGb8rQDL/cPRG7GiedRzMcJ1tYnUANBncjbSB1NRGwbvjcPeikRABz2nshyPk1bhWg==} '@types/mime@1.3.5': resolution: {integrity: sha512-/pyBZWSLD2n0dcHE3hq8s8ZvcETHtEuF+3E7XVt0Ig2nvsVQXdghHVcEkIWjy9A0wKfTn97a/PSDYohKIlnP/w==} @@ -1506,11 +1668,8 @@ packages: '@types/node@16.9.1': resolution: {integrity: sha512-QpLcX9ZSsq3YYUUnD3nFDY8H7wctAhQj/TFKL8Ya8v5fMm3CFXxo8zStsLAl780ltoYoo1WvKUVGBQK+1ifr7g==} - '@types/node@22.15.3': - resolution: {integrity: sha512-lX7HFZeHf4QG/J7tBZqrCAXwz9J5RD56Y6MpP0eJkka8p+K0RY/yBTW7CYFJ4VGCclxqOLKmiGP5juQc6MKgcw==} - - '@types/node@24.0.1': - resolution: {integrity: sha512-MX4Zioh39chHlDJbKmEgydJDS3tspMP/lnQC67G3SWsTnb9NeYVWOjkxpOSy4oMfPs4StcWHwBrvUb4ybfnuaw==} + '@types/node@24.0.4': + resolution: {integrity: sha512-ulyqAkrhnuNq9pB76DRBTkcS6YsmDALy6Ua63V8OhrOBgbcYt6IOdzpw5P1+dyRIyMerzLkeYWBeOXPpA9GMAA==} '@types/normalize-package-data@2.4.4': resolution: {integrity: sha512-37i+OaWTh9qeK4LSHPsyRC7NahnGotNuZvjLSgcPzblpHB3rrCJxAOgI5gCdKm7coonsaX1Of0ILiTcnZjbfxA==} @@ -1569,29 +1728,41 @@ packages: '@types/yargs@17.0.33': resolution: {integrity: sha512-WpxBCKWPLr4xSsHgz511rFJAM+wS28w2zEO1QDNY5zM/S8ok70NNfztH0xwhqKyaK0OHCbN98LDAZuy1ctxDkA==} - '@typescript-eslint/scope-manager@8.25.0': - resolution: {integrity: sha512-6PPeiKIGbgStEyt4NNXa2ru5pMzQ8OYKO1hX1z53HMomrmiSB+R5FmChgQAP1ro8jMtNawz+TRQo/cSXrauTpg==} + '@typescript-eslint/project-service@8.35.0': + resolution: {integrity: sha512-41xatqRwWZuhUMF/aZm2fcUsOFKNcG28xqRSS6ZVr9BVJtGExosLAm5A1OxTjRMagx8nJqva+P5zNIGt8RIgbQ==} + engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} + peerDependencies: + typescript: '>=4.8.4 <5.9.0' + + '@typescript-eslint/scope-manager@8.35.0': + resolution: {integrity: sha512-+AgL5+mcoLxl1vGjwNfiWq5fLDZM1TmTPYs2UkyHfFhgERxBbqHlNjRzhThJqz+ktBqTChRYY6zwbMwy0591AA==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} - '@typescript-eslint/types@8.25.0': - resolution: {integrity: sha512-+vUe0Zb4tkNgznQwicsvLUJgZIRs6ITeWSCclX1q85pR1iOiaj+4uZJIUp//Z27QWu5Cseiw3O3AR8hVpax7Aw==} + '@typescript-eslint/tsconfig-utils@8.35.0': + resolution: {integrity: sha512-04k/7247kZzFraweuEirmvUj+W3bJLI9fX6fbo1Qm2YykuBvEhRTPl8tcxlYO8kZZW+HIXfkZNoasVb8EV4jpA==} + engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} + peerDependencies: + typescript: '>=4.8.4 <5.9.0' + + '@typescript-eslint/types@8.35.0': + resolution: {integrity: sha512-0mYH3emanku0vHw2aRLNGqe7EXh9WHEhi7kZzscrMDf6IIRUQ5Jk4wp1QrledE/36KtdZrVfKnE32eZCf/vaVQ==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} - '@typescript-eslint/typescript-estree@8.25.0': - resolution: {integrity: sha512-ZPaiAKEZ6Blt/TPAx5Ot0EIB/yGtLI2EsGoY6F7XKklfMxYQyvtL+gT/UCqkMzO0BVFHLDlzvFqQzurYahxv9Q==} + '@typescript-eslint/typescript-estree@8.35.0': + resolution: {integrity: sha512-F+BhnaBemgu1Qf8oHrxyw14wq6vbL8xwWKKMwTMwYIRmFFY/1n/9T/jpbobZL8vp7QyEUcC6xGrnAO4ua8Kp7w==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} peerDependencies: - typescript: '>=4.8.4 <5.8.0' + typescript: '>=4.8.4 <5.9.0' - '@typescript-eslint/utils@8.25.0': - resolution: {integrity: sha512-syqRbrEv0J1wywiLsK60XzHnQe/kRViI3zwFALrNEgnntn1l24Ra2KvOAWwWbWZ1lBZxZljPDGOq967dsl6fkA==} + '@typescript-eslint/utils@8.35.0': + resolution: {integrity: sha512-nqoMu7WWM7ki5tPgLVsmPM8CkqtoPUG6xXGeefM5t4x3XumOEKMoUZPdi+7F+/EotukN4R9OWdmDxN80fqoZeg==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} peerDependencies: eslint: ^8.57.0 || ^9.0.0 - typescript: '>=4.8.4 <5.8.0' + typescript: '>=4.8.4 <5.9.0' - '@typescript-eslint/visitor-keys@8.25.0': - resolution: {integrity: sha512-kCYXKAum9CecGVHGij7muybDfTS2sD3t0L4bJsEZLkyrXUImiCTq1M3LG2SRtOhiHFwMR9wAFplpT6XHYjTkwQ==} + '@typescript-eslint/visitor-keys@8.35.0': + resolution: {integrity: sha512-zTh2+1Y8ZpmeQaQVIc/ZZxsx8UzgKJyNg1PTvjzC7WMhPSVS8bfDX34k1SrwOf016qd5RU3az2UxUNue3IfQ5g==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} '@ungap/structured-clone@1.3.0': @@ -1710,9 +1881,9 @@ packages: abbrev@1.1.1: resolution: {integrity: sha512-nne9/IiQ/hzIhY6pdDnbBtz7DjPTKrY00P/zvPSm5pOFkl6xuGrGnXn/VtTNNfNtAfZ9/1RtehkszU9qcTii0Q==} - abbrev@3.0.0: - resolution: {integrity: sha512-+/kfrslGQ7TNV2ecmQwMJj/B65g5KVq1/L3SGVZ3tCYGqlzFuFCGBZJtMP99wH3NpEUyAjn0zPdPUg0D+DwrOA==} - engines: {node: ^18.17.0 || >=20.5.0} + abbrev@2.0.0: + resolution: {integrity: sha512-6/mh1E2u2YgEsCHdY0Yx5oW+61gZU+1vXaoiHHrpKeuRNNgFvS+/jrwHiQhB5apAf5oB7UB7E19ol2R2LKH8hQ==} + engines: {node: ^14.17.0 || ^16.13.0 || >=18.0.0} abort-controller@3.0.0: resolution: {integrity: sha512-h8lQ8tacZYnR3vNQTgibj+tODHI5/+l06Au2Pcriv/Gmet0eaj4TwWH41sO9wnHDiQsEj19q0drzdWdeAHtweg==} @@ -1751,8 +1922,8 @@ packages: engines: {node: '>=0.4.0'} hasBin: true - acorn@8.14.1: - resolution: {integrity: sha512-OvQ/2pUDKmgfCg++xsTX1wGxfTaszcHVcTctW4UJB4hibJx2HXxxO5UmVgyjMa+ZDsiaf5wWLXYpRWMmBI0QHg==} + acorn@8.15.0: + resolution: {integrity: sha512-NZyJarBfL7nWwIq+FDL6Zp/yHEhePMNnnJ0y3qfieCrmNvYct8uvtiV41UvlSe6apAfk0fY1FbWx+NwfmpvtTg==} engines: {node: '>=0.4.0'} hasBin: true @@ -1879,8 +2050,8 @@ packages: array-flatten@1.1.1: resolution: {integrity: sha512-PCVAQswWemu6UdxsDFFX/+gVeYqKAod3D3UVm91jHwynguOwAvYPhx8nNlM++NqRcK6CxxpUafjmhIdKiHibqg==} - array-includes@3.1.8: - resolution: {integrity: sha512-itaWrbYbqpGXkGhZPGUulwnhVf5Hpy1xiCFsGqyIGglbBxmG5vSjxQen3/WGOjPpNEv1RtBLKxbmVXm8HpJStQ==} + array-includes@3.1.9: + resolution: {integrity: sha512-FmeCCAenzH0KH381SPT5FZmiA/TmpndpcaShhfgEN9eCVjnFBqq3l1xrI42y8+PPLI6hypzou4GXw00WHmPBLQ==} engines: {node: '>= 0.4'} array-union@2.1.0: @@ -1891,8 +2062,8 @@ packages: resolution: {integrity: sha512-fO/ORdOELvjbbeIfZfzrXFMhYHGofRGqd+am9zm3tZ4GlJINj/pA2eITyfd65Vg6+ZbHd/Cys7stpoRSWtQFdA==} engines: {node: '>= 0.4'} - array.prototype.findlastindex@1.2.5: - resolution: {integrity: sha512-zfETvRFA8o7EiNn++N5f/kaCw221hrpGsDmcpndVupkPzEc1Wuf3VgC0qby1BbHs7f5DVYjgtEU2LLh5bqeGfQ==} + array.prototype.findlastindex@1.2.6: + resolution: {integrity: sha512-F/TKATkzseUExPlfvmwQKGITM3DGTK+vkAsCZoDc5daVygbJBnjEUCbgkAvVFsgfXfX4YIqZ/27G3k3tdXrTxQ==} engines: {node: '>= 0.4'} array.prototype.flat@1.3.3: @@ -2119,11 +2290,11 @@ packages: bowser@1.9.4: resolution: {integrity: sha512-9IdMmj2KjigRq6oWhmwv1W36pDuA4STQZ8q6YO9um+x07xgYNCD3Oou+WP/3L1HNz7iqythGet3/p4wvc8AAwQ==} - brace-expansion@1.1.11: - resolution: {integrity: sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==} + brace-expansion@1.1.12: + resolution: {integrity: sha512-9T9UjW3r0UW5c1Q7GTwllptXwhvYmEzFhzMfZ9H7FQWt+uZePjZPjBP/W1ZEyZ1twGWom5/56TF4lPcqjnDHcg==} - brace-expansion@2.0.1: - resolution: {integrity: sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==} + brace-expansion@2.0.2: + resolution: {integrity: sha512-Jt0vHyM+jmUBqojB7E1NIYadt0vI0Qxjxd2TErW94wDz+E2LAm5vKMXXwg6ZZBTHPuUlDgQHKXvjGBdfcF1ZDQ==} braces@3.0.3: resolution: {integrity: sha512-yQbXgO/OSZVD2IsiLlro+7Hf6Q18EJrKSEsdoMzKePKXct3gvD8oLcOQdIzGupr5Fj+EDe8gO/lxc1BzfMpxvA==} @@ -2135,13 +2306,8 @@ packages: browserslist-config-kolibri@0.18.0: resolution: {integrity: sha512-d8JCoLUG8XlgfaE/wB7P58ok6ddiGGjChm6dVsL3W2702ibgFjOx+NtFHrLKCpkSuiaR2/gevvaQsIFwkVNNiA==} - browserslist@4.24.4: - resolution: {integrity: sha512-KDi1Ny1gSePi1vm0q4oxSF8b4DR44GF4BbmS2YdhPLOEqd8pDviZOGH/GsmRwoWJ2+5Lr085X7naowMwKHDG1A==} - engines: {node: ^6 || ^7 || ^8 || ^9 || ^10 || ^11 || ^12 || >=13.7} - hasBin: true - - browserslist@4.25.0: - resolution: {integrity: sha512-PJ8gYKeS5e/whHBh8xrwYK+dAvEj7JXtz6uTucnMRB8OiGTsKccFekoRrjajPBHV8oOY+2tI4uxeceSimKwMFA==} + browserslist@4.25.1: + resolution: {integrity: sha512-KGj0KoOMXLpSNkkEI6Z6mShmQy0bc1I+T7K9N81k4WWMrfz+6fQ6es80B/YLAeRoKvjYE1YSHHOW1qe9xIVzHw==} engines: {node: ^6 || ^7 || ^8 || ^9 || ^10 || ^11 || ^12 || >=13.7} hasBin: true @@ -2190,8 +2356,8 @@ packages: resolution: {integrity: sha512-oKlSFMcMwpUg2ednkhQ454wfWiU/ul3CkJe/PEHcTKuiX6RpbehUiFMXu13HalGZxfUwCQzZG747YXBn1im9ww==} engines: {node: '>= 0.4'} - call-bound@1.0.3: - resolution: {integrity: sha512-YTd+6wGlNlPxSuri7Y6X8tY2dmm12UMH66RpKMhiX6rsk5wXXnYgbUcOt8kiS31/AjfoTOvCsE+w8nZQLQnzHA==} + call-bound@1.0.4: + resolution: {integrity: sha512-+ys997U96po4Kx/ABpBCqhA9EuxJaQWDQg7295H4hBphv3IZg0boBKuwYpt4YXp6MZ5AmZQnU/tyMTlRpaSejg==} engines: {node: '>= 0.4'} callsites@3.1.0: @@ -2217,11 +2383,8 @@ packages: caniuse-api@3.0.0: resolution: {integrity: sha512-bsTwuIg/BZZK/vreVTYYbSWoe2F+71P7K5QGEX+pT250DZbfU1MQ5prOKpPR+LL6uWKK3KMwMCAS74QB3Um1uw==} - caniuse-lite@1.0.30001716: - resolution: {integrity: sha512-49/c1+x3Kwz7ZIWt+4DvK3aMJy9oYXXG6/97JKsnjdCk/6n9vVyWL8NAwVt95Lwt9eigI10Hl782kDfZUUlRXw==} - - caniuse-lite@1.0.30001721: - resolution: {integrity: sha512-cOuvmUVtKrtEaoKiO0rSc29jcjwMwX5tOHDy4MgVFEWiUXj4uBMJkwI8MDySkgXidpMiHUcviogAvFi4pA2hDQ==} + caniuse-lite@1.0.30001726: + resolution: {integrity: sha512-VQAUIUzBiZ/UnlM28fSp2CRF3ivUn1BWEvxMcVTNwpw91Py1pGbPIyIKtd+tzct9C3ouceCVdGAXxZOpZAsgdw==} canvas-exif-orientation@0.4.0: resolution: {integrity: sha512-1NjYRG+44oKnY5Ou6NtaRoHchLHYlIzxfzTNBAToTiWOO7BkCW4ays709sYIdD+Wg6DReDAAAcHzfrMgZjyiRg==} @@ -2651,6 +2814,9 @@ packages: engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} hasBin: true + crelt@1.0.6: + resolution: {integrity: sha512-VQ2MBenTq1fWZUH9DJNGti7kKv6EeAuYr3cLwxUWhIu1baTaXh4Ib5W2CqHVqib4/MqbYGJqiL3Zb8GJZr3l4g==} + cross-spawn@6.0.6: resolution: {integrity: sha512-VqCUuhcd1iB+dsv8gxPttb5iZh/D0iubSP21g36KXdEuf6I5JiioesUVjpCdHV9MZRUfVFlvwtIUyPfxo5trtw==} engines: {node: '>=4.8'} @@ -2749,23 +2915,23 @@ packages: engines: {node: '>=4'} hasBin: true - cssnano-preset-default@7.0.6: - resolution: {integrity: sha512-ZzrgYupYxEvdGGuqL+JKOY70s7+saoNlHSCK/OGn1vB2pQK8KSET8jvenzItcY+kA7NoWvfbb/YhlzuzNKjOhQ==} + cssnano-preset-default@7.0.7: + resolution: {integrity: sha512-jW6CG/7PNB6MufOrlovs1TvBTEVmhY45yz+bd0h6nw3h6d+1e+/TX+0fflZ+LzvZombbT5f+KC063w9VoHeHow==} engines: {node: ^18.12.0 || ^20.9.0 || >=22.0} peerDependencies: - postcss: ^8.4.31 + postcss: ^8.4.32 - cssnano-utils@5.0.0: - resolution: {integrity: sha512-Uij0Xdxc24L6SirFr25MlwC2rCFX6scyUmuKpzI+JQ7cyqDEwD42fJ0xfB3yLfOnRDU5LKGgjQ9FA6LYh76GWQ==} + cssnano-utils@5.0.1: + resolution: {integrity: sha512-ZIP71eQgG9JwjVZsTPSqhc6GHgEr53uJ7tK5///VfyWj6Xp2DBmixWHqJgPno+PqATzn48pL42ww9x5SSGmhZg==} engines: {node: ^18.12.0 || ^20.9.0 || >=22.0} peerDependencies: - postcss: ^8.4.31 + postcss: ^8.4.32 - cssnano@7.0.6: - resolution: {integrity: sha512-54woqx8SCbp8HwvNZYn68ZFAepuouZW4lTwiMVnBErM3VkO7/Sd4oTOt3Zz3bPx3kxQ36aISppyXj2Md4lg8bw==} + cssnano@7.0.7: + resolution: {integrity: sha512-evKu7yiDIF7oS+EIpwFlMF730ijRyLFaM2o5cTxRGJR9OKHKkc+qP443ZEVR9kZG0syaAJJCPJyfv5pbrxlSng==} engines: {node: ^18.12.0 || ^20.9.0 || >=22.0} peerDependencies: - postcss: ^8.4.31 + postcss: ^8.4.32 csso@5.0.5: resolution: {integrity: sha512-0LrrStPOdJj+SPCCrGhzryycLjwcgUSHBtxNA8aIDxf0GLsRh1cKYhB00Gd1lDOS4yGH69+SNn13+TWbVHETFQ==} @@ -2843,15 +3009,6 @@ packages: supports-color: optional: true - debug@4.4.0: - resolution: {integrity: sha512-6WTZ/IxCY/T6BALoZHaE4ctp9xm+Z5kY/pzYaCHRFeyVhojxlrm+46y68HA6hr0TcwEssoxNiDEUJQjfPZ/RYA==} - engines: {node: '>=6.0'} - peerDependencies: - supports-color: '*' - peerDependenciesMeta: - supports-color: - optional: true - debug@4.4.1: resolution: {integrity: sha512-KcKCqiftBJcZr++7ykoDIEwSa3XWowTfNPo92BYxjXiyYEVrUQh2aLyhxBCwww+heortUFxEJYcRzosstTEBYQ==} engines: {node: '>=6.0'} @@ -2880,8 +3037,8 @@ packages: resolution: {integrity: sha512-FqUYQ+8o158GyGTrMFJms9qh3CqTKvAqgqsTnkLI8sKu0028orqBhxNMFkFen0zGyg6epACD32pjVk58ngIErQ==} engines: {node: '>=0.10'} - dedent@1.5.3: - resolution: {integrity: sha512-NHQtfOOW68WD8lgypbLA5oT+Bt0xXJhiYvoR6SmmNXZfpzOGXwdKWmcwG8N7PwVVWV3eF/68nmD9BaJSsTBhyQ==} + dedent@1.6.0: + resolution: {integrity: sha512-F1Z+5UCFpmQUzJa11agbyPVMbpgT/qA3/SKyJ1jyBgm7dUcUEa8v9JwDkerSQXfakBwFljIxhOJqGkjUwZ9FSA==} peerDependencies: babel-plugin-macros: ^3.1.0 peerDependenciesMeta: @@ -3038,11 +3195,8 @@ packages: engines: {node: '>=0.10.0'} hasBin: true - electron-to-chromium@1.5.104: - resolution: {integrity: sha512-Us9M2L4cO/zMBqVkJtnj353nQhMju9slHm62NprKTmdF3HH8wYOtNvDFq/JB2+ZRoGLzdvYDiATlMHs98XBM1g==} - - electron-to-chromium@1.5.166: - resolution: {integrity: sha512-QPWqHL0BglzPYyJJ1zSSmwFFL6MFXhbACOCcsCdUMCkzPdS9/OIBVxg516X/Ado2qwAq8k0nJJ7phQPCqiaFAw==} + electron-to-chromium@1.5.174: + resolution: {integrity: sha512-HE43yYdUUiJVjewV2A9EP8o89Kb4AqMKplMQP2IxEPUws1Etu/ZkdsgUDabUZ/WmbP4ZbvJDOcunvbBUPPIfmw==} emittery@0.13.1: resolution: {integrity: sha512-DeWwawk6r5yR9jFgnDKYt4sLS0LmHJJi3ZOnb5/JdbYwj3nW+FxQnHIjhBKz8YLC7oRNPVM9NQ47I3CVx34eqQ==} @@ -3073,8 +3227,8 @@ packages: resolution: {integrity: sha512-kxpoMgrdtkXZ5h0SeraBS1iRntpTpQ3R8ussdb38+UAFnMGX5DDyJXePm+OCHOcoXvHDw7mc2erbJBpDnl7TPw==} engines: {node: '>=0.6'} - enhanced-resolve@5.18.1: - resolution: {integrity: sha512-ZSW3ma5GkcQBIpwZTSRAI8N71Uuwgs93IezB7mf7R60tC8ZbJideoDNKjHn2O9KIlx6rkGTTEk1xUCK2E1Y2Yg==} + enhanced-resolve@5.18.2: + resolution: {integrity: sha512-6Jw4sE1maoRJo3q8MsSIn2onJFbLTOjY9hlx4DZXmOKvLRd1Ok2kXmAGXaafL2+ijsJZ1ClYbl/pmqr9+k4iUQ==} engines: {node: '>=10.13.0'} enquirer@2.4.1: @@ -3085,6 +3239,10 @@ packages: resolution: {integrity: sha512-V0hjH4dGPh9Ao5p0MoRY6BVqtwCjhz6vI5LT8AJ55H+4g9/4vbHx1I54fS0XuclLhDHArPQCiMjDxjaL8fPxhw==} engines: {node: '>=0.12'} + entities@6.0.1: + resolution: {integrity: sha512-aN97NXWF6AWBTahfVOIrB/NShkzi5H7F9r1s9mD3cDj4Ko5f2qhhVoYMibXF7GlLveb/D2ioWay8lxI97Ven3g==} + engines: {node: '>=0.12'} + env-paths@2.2.1: resolution: {integrity: sha512-+h1lkLKhZMTYjog1VEpJNG7NZJWcuc2DDk/qsqSTRRCOXiLjeQ1d1/udrUGhqMxUgAlwKNZ0cf2uqan5GLuS2A==} engines: {node: '>=6'} @@ -3103,8 +3261,8 @@ packages: error-ex@1.3.2: resolution: {integrity: sha512-7dFHNmqeFSEt2ZBsCriorKnn3Z2pj+fd9kmI6QoWw4//DL+icEBfc0U7qJCisqrTsKTjw4fNFy2pW9OqStD84g==} - es-abstract@1.23.9: - resolution: {integrity: sha512-py07lI0wjxAC/DcfK1S6G7iANonniZwTISvdPzk9hzeH0IZIshbuuFxLIU96OyF89Yb9hiqWn8M/bY83KY5vzA==} + es-abstract@1.24.0: + resolution: {integrity: sha512-WSzPgsdLtTcQwm4CROfS5ju2Wa1QQcVeT37jFjYzdFz1r9ahadC8B8/a4qxJxM+09F18iumCdRmlr96ZYkQvEg==} engines: {node: '>= 0.4'} es-define-property@1.0.1: @@ -3180,8 +3338,8 @@ packages: engines: {node: '>=6.0'} hasBin: true - eslint-config-prettier@10.0.2: - resolution: {integrity: sha512-1105/17ZIMjmCOJOPNfVdbXafLCLj3hPmkmB7dLgt7XsQ/zkxSuDerE/xgO3RxoHysR1N1whmquY0lSn2O0VLg==} + eslint-config-prettier@10.1.5: + resolution: {integrity: sha512-zc1UmCpNltmVY34vuLRV61r1K27sWuX39E+uyUnY8xS2Bex88VV9cugG+UZbRSRGtGyFboj+D8JODyme1plMpw==} hasBin: true peerDependencies: eslint: '>=7.0.0' @@ -3196,8 +3354,8 @@ packages: eslint-plugin-import: '>=1.4.0' webpack: '>=1.11.0' - eslint-module-utils@2.12.0: - resolution: {integrity: sha512-wALZ0HFoytlyh/1+4wuZ9FJCD/leWHQzzrxJ8+rebyReSLk7LApMyd3WJaLVoN+D5+WIdJyDK1c6JnE65V4Zyg==} + eslint-module-utils@2.12.1: + resolution: {integrity: sha512-L8jSWTze7K2mTg0vos/RuLRS5soomksDPoJLXIslC7c8Wmut3bx7CPpJijDcBZtxQ5lrbUdM+s0OlNbz0DCDNw==} engines: {node: '>=4'} peerDependencies: '@typescript-eslint/parser': '*' @@ -3217,8 +3375,8 @@ packages: eslint-import-resolver-webpack: optional: true - eslint-plugin-import@2.31.0: - resolution: {integrity: sha512-ixmkI62Rbc2/w8Vfxyh1jQRTdRTF52VxwRVHl/ykPAmqG+Nb7/kNn+byLP0LxPgI7zWA16Jt82SybJInmMia3A==} + eslint-plugin-import@2.32.0: + resolution: {integrity: sha512-whOE1HFo/qJDyX4SnXzP4N6zOWn79WhnCUY/iDR0mPfQZO8wcYE4JClzI2oZrhBnnMUCBCHZhO6VQyoBU95mZA==} engines: {node: '>=4'} peerDependencies: '@typescript-eslint/parser': '*' @@ -3237,8 +3395,8 @@ packages: '@testing-library/dom': optional: true - eslint-plugin-jest@28.11.0: - resolution: {integrity: sha512-QAfipLcNCWLVocVbZW8GimKn5p5iiMcgGbRzz8z/P5q7xw+cNEpYqyzFMtIF/ZgF2HLOyy+dYBut+DoYolvqig==} + eslint-plugin-jest@28.14.0: + resolution: {integrity: sha512-P9s/qXSMTpRTerE2FQ0qJet2gKbcGyFTPAJipoKxmWqR6uuFqIqk8FuEfg5yBieOezVrEfAMZrEwJ6yEp+1MFQ==} engines: {node: ^16.10.0 || ^18.12.0 || >=20.0.0} peerDependencies: '@typescript-eslint/eslint-plugin': ^6.0.0 || ^7.0.0 || ^8.0.0 @@ -3254,8 +3412,8 @@ packages: resolution: {integrity: sha512-gAWycVvKBxc+uSCckt7luKxoPLFZ0yK9623hAeZhyn5CE47ACBLCUMGiYg34LtxO46AMJGP6ZS6Y02X6zCW9FQ==} engines: {node: '>=0.10.0'} - eslint-plugin-vue@9.32.0: - resolution: {integrity: sha512-b/Y05HYmnB/32wqVcjxjHZzNpwxj1onBOvqW89W+V+XNG1dRuaFbNd3vT9CLbr2LXjEoq+3vn8DanWf7XU22Ug==} + eslint-plugin-vue@9.33.0: + resolution: {integrity: sha512-174lJKuNsuDIlLpjeXc5E2Tss8P44uIimAfGD0b90k0NoirJqpG7stLuU9Vp/9ioTOrQdWVREc4mRd1BD+CvGw==} engines: {node: ^14.17.0 || >=16.0.0} peerDependencies: eslint: ^6.2.0 || ^7.0.0 || ^8.0.0 || ^9.0.0 @@ -3284,8 +3442,8 @@ packages: resolution: {integrity: sha512-wpc+LXeiyiisxPlEkUzU6svyS1frIO3Mgxj1fdy7Pm8Ygzguax2N3Fa/D/ag1WqbOprdI+uY6wMUl8/a2G+iag==} engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} - eslint-visitor-keys@4.2.0: - resolution: {integrity: sha512-UyLnSehNt62FFhSwjZlHmeokpRK59rcz29j+F1/aDgbkbRTk7wIc9XzdoasMUbRNKDM0qQt/+BJ4BrpFeABemw==} + eslint-visitor-keys@4.2.1: + resolution: {integrity: sha512-Uhdk5sfqcee/9H/rCOJikYz67o0a2Tw2hGRPOG2Y1R2dg7brRe1uG0yaNQDHu+TO/uQPF/5eCapvYSmHUjt7JQ==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} eslint@7.32.0: @@ -3426,8 +3584,8 @@ packages: resolution: {integrity: sha512-eRnCtTTtGZFpQCwhJiUOuxPQWRXVKYDn0b2PeHfXL6/Zi53SLAzAHfVhVWK2AryC/WH05kGfxhFIPvTF0SXQzg==} engines: {node: '>= 4.9.1'} - fastq@1.19.0: - resolution: {integrity: sha512-7SFSRCNjBQIZH/xZR3iy5iQYR8aGBE0h3VG6/cwlbrpdciNYBMotQav8c1XI3HjHH+NikUpP53nPdlZSdWmFzA==} + fastq@1.19.1: + resolution: {integrity: sha512-GwLTyxkCXjXbxqIhTsMI2Nui8huMPtnxg7krajPJAjnEG/iiOS7i+zCtWGZR9G0NBKbXKh6X9m9UIsYX/N6vvQ==} faye-websocket@0.11.4: resolution: {integrity: sha512-CzbClwlXAuiRQAlUyfqPgvPoNKTckTPGfwZV4ZdAhVcP2lh9KUxJg2b5GkE7XbjKQ3YJnQ9z6D9ntLAlB+tP8g==} @@ -3520,8 +3678,8 @@ packages: flatted@3.3.3: resolution: {integrity: sha512-GX+ysw4PBCz0PzosHDepZGANEuFCMLrnRTiEy9McGjmkCQYwRq4A/X786G/fjM/+OjsWSU1ZrY5qyARZmO/uwg==} - flow-parser@0.269.1: - resolution: {integrity: sha512-2Yr0kqvT7RwaGL192nT78O5AWJeECQjl0NEzBkMsx8OJt63BvNl5yvSIbE4qZ1VDSjEkhbUgaWYdwX354bVNjw==} + flow-parser@0.274.0: + resolution: {integrity: sha512-pwmoGcWUSyamhv1DWhSFBROYqBfVJ/XAjqAdcrKSaisn5vI5dQ0Ni0Lawrp03TE2ZPC69vseFdeWkYlpCAqxtw==} engines: {node: '>=0.4.0'} flush-promises@1.0.2: @@ -3820,8 +3978,8 @@ packages: resolution: {integrity: sha512-oWv4T4yJ52iKrufjnyZPkrN0CH3QnrUqdB6In1g5Fe1mia8GmF36gnfNySxoZtxD5+NmYw1EElVXiBk93UeskA==} engines: {node: '>=12'} - html-entities@2.5.2: - resolution: {integrity: sha512-K//PSRMQk4FZ78Kyau+mZurHn3FH0Vwr+H36eE0rPbeYkRRi9YxceYPhuN60UwWorxyKHhqoAJl2OFKa4BVtaA==} + html-entities@2.6.0: + resolution: {integrity: sha512-kig+rMn/QOVRvr7c86gQ8lWXq+Hkv6CbAH1hLu+RG338StTpE8Z0b44SDVaqVu7HGKf27frdmUYEs9hTUX/cLQ==} html-escaper@2.0.2: resolution: {integrity: sha512-H2iMtd0I4Mt5eYiapRdIDjp+XzelXQ0tFE4JS7YFwFevXXMmOp9myNrUvCg0D6ws8iqkRPBfKHgbwig1SmlLfg==} @@ -3837,8 +3995,8 @@ packages: htmlparser2@8.0.2: resolution: {integrity: sha512-GYdjWKDkbRLkZ5geuHs5NY1puJ+PXwP7+fHPRz06Eirsb9ugf6d8kkXav6ADhcODhFFPMIXyxkxSuMf3D6NCFA==} - http-cache-semantics@4.1.1: - resolution: {integrity: sha512-er295DKPVsV82j5kw1Gjt+ADA/XYHsajl82cGNQG2eyoPkvgUhX+nDIyelzhIWbbsXP39EHcI6l5tYs2FYqYXQ==} + http-cache-semantics@4.2.0: + resolution: {integrity: sha512-dTxcvPXqPvXBQpq5dUr6mEMJX4oIEFv6bwom3FDwKRDsuIjjJGANqhBuoAn9c1RQJIdAKav33ED65E2ys+87QQ==} http-deceiver@1.2.7: resolution: {integrity: sha512-LmpOGxTfbpgtGVxJrj5k7asXHCgNZp5nLfp+hWc8QQRqtb7fUy6kRY3BO1h9ddF6yIPYUARgxGOwB42DnxIaNw==} @@ -4135,6 +4293,10 @@ packages: is-module@1.0.0: resolution: {integrity: sha512-51ypPSPCoTEIN9dy5Oy+h4pShgJmPCygKfyRCISBI+JoWT/2oJvK8QPxmwv7b/p239jXrm9M1mlQbyKJ5A152g==} + is-negative-zero@2.0.3: + resolution: {integrity: sha512-5KoIu2Ngpyek75jXodFvnafB6DJgr3u8uuK0LEZJjrU19DrMD3EVERaR8sjz8CCGgpZvxPl9SuE1GMVPFHx1mw==} + engines: {node: '>= 0.4'} + is-network-error@1.1.0: resolution: {integrity: sha512-tUdRRAnhT+OtCZR/LxZelH/C7QtjtFrTu5tXCA8pl55eTUElUHT+GPYV8MBMBvea/j+NxQqVt3LbWMRir7Gx9g==} engines: {node: '>=16'} @@ -4446,8 +4608,8 @@ packages: js-base64@2.6.4: resolution: {integrity: sha512-pZe//GGmwJndub7ZghVHz7vjb2LgC1m8B07Au3eYqeqv9emhESByMXxaEgkUkEqJe87oBbSniGYoQNIBklc7IQ==} - js-beautify@1.15.3: - resolution: {integrity: sha512-rKKGuyTxGNlyN4EQKWzNndzXpi0bOl8Gl8YQAW1as/oMz0XhD6sHJO1hTvoBDOSzKuJb9WkwoAb34FfdkKMv2A==} + js-beautify@1.15.4: + resolution: {integrity: sha512-9/KXeZUKKJwqCXUdBxFJ3vPh467OCckSBmYDwSK/EtV090K+iMJ7zx2S3HLVDIWFQdqMIsZWbnaGiba18aWhaA==} engines: {node: '>=14'} hasBin: true @@ -4580,8 +4742,11 @@ packages: known-css-properties@0.29.0: resolution: {integrity: sha512-Ne7wqW7/9Cz54PDt4I3tcV+hAyat8ypyOGzYRJQfdxnnjeWsTxt1cy8pjvvKeI5kfXuyvULyeeAvwvvtAX3ayQ==} - known-css-properties@0.35.0: - resolution: {integrity: sha512-a/RAk2BfKk+WFGhhOCAYqSiFLc34k8Mt/6NWRI4joER0EYUzXIcFivjjnoD3+XU1DggLn/tZc3DOAgke7l8a4A==} + known-css-properties@0.36.0: + resolution: {integrity: sha512-A+9jP+IUmuQsNdsLdcg6Yt7voiMF/D4K83ew0OpJtpu+l34ef7LaohWV0Rc6KNvzw6ZDizkqfyB5JznZnzuKQA==} + + kolibri-constants@0.2.11: + resolution: {integrity: sha512-dHF5g40OQbMjrNuY1CWMck2M53KACCXtXQ1Enw1oJOQgfEERP+CWqkv1NmEXO2WlxoH9TOf2MNFA5FF84kgjzw==} kolibri-constants@0.2.12: resolution: {integrity: sha512-ApVc/KLwEaDJohqKhQTdao4UdWmoyq2pQ5lk8ra+1rDpJvsFWsAOGVC4RTv4YEDlAYJzj2/QZlJQ91u5yUURSQ==} @@ -4642,6 +4807,9 @@ packages: lines-and-columns@1.2.4: resolution: {integrity: sha512-7ylylesZQ/PV29jhEDl3Ufjo6ZX7gCqJr5F7PKrqc93v7fzSymt1BpwEU8nAUXs8qzzvqhbjhK5QZg6Mt/HkBg==} + linkify-it@5.0.0: + resolution: {integrity: sha512-5aHCbzQRADcdP+ATqnDuhhJ/MRIqDkZX5pyjFHRRysS8vZ5AbqGEoFIb6pYHPZ+L/OC2Lc+xT8uHVVR5CAK/wQ==} + load-bmfont@1.4.2: resolution: {integrity: sha512-qElWkmjW9Oq1F9EI5Gt7aD9zcdHb9spJCW1L/dmPf7KzCCEJxq8nhHz5eCgI9aMf7vrG/wyaCqdsI+Iy9ZTlog==} @@ -4779,6 +4947,10 @@ packages: map-values@1.0.1: resolution: {integrity: sha512-BbShUnr5OartXJe1GeccAWtfro11hhgNJg6G9/UtWKjVGvV5U4C09cg5nk8JUevhXODaXY+hQ3xxMUKSs62ONQ==} + markdown-it@14.1.0: + resolution: {integrity: sha512-a54IwgWPaeBCAAsv13YgmALOF1elABB08FxO9i+r4VFk5Vl4pKokRPeX8u5TCgSsPi6ec1otfLjdOpVcgbpshg==} + hasBin: true + marks-pane@1.0.9: resolution: {integrity: sha512-Ahs4oeG90tbdPWwAJkAAoHg2lRR8lAs9mZXETNPO9hYg3AkjUJBKi1NQ4aaIQZVGrig7c/3NUV1jANl8rFTeMg==} @@ -4801,8 +4973,11 @@ packages: mdn-data@2.12.2: resolution: {integrity: sha512-IEn+pegP1aManZuckezWCO+XZQDplx1366JoVhTpMpBB1sPey/SbveZQUosKiKiGYjg1wH4pMlNgXbCiYgihQA==} - mdn-data@2.16.0: - resolution: {integrity: sha512-FYRGKJUm9JD7JMUXwIi0dPkIozBqiSlz7Cx458FpEhTT3rQieI4sPL1LhY80FS3MIC6AJ/FWNJ2039GnIBJySg==} + mdn-data@2.21.0: + resolution: {integrity: sha512-+ZKPQezM5vYJIkCxaC+4DTnRrVZR1CgsKLu5zsQERQx6Tea8Y+wMx5A24rq8A8NepCeatIQufVAekKNgiBMsGQ==} + + mdurl@2.0.0: + resolution: {integrity: sha512-Lf+9+2r+Tdp5wXDXC4PcIBjTDtq4UKjCPMQhKIuzpJNW0b96kVqSwW0bT7FhRSfmAiFYgP+SCRvdrDozfh0U5w==} media-typer@0.3.0: resolution: {integrity: sha512-dq+qelQ9akHpcOl/gUVRTxVIOkAJ1wR3QAvb4RsVjS8oVoFjDGTc679wJYmUmknUF5HwMLOgb5O+a3KxfWapPQ==} @@ -4984,11 +5159,11 @@ packages: mutex-js@1.1.5: resolution: {integrity: sha512-e0PCNr2q4Er5SNrRwE/1yDFe8ILOk0yS4xFuDbO0KOfr3/5VmUcWB6SaTFaxRPqC/MWiGkfBuTRgIGz5EJtlcA==} - nan@2.22.1: - resolution: {integrity: sha512-pfRR4ZcNTSm2ZFHaztuvbICf+hyiG6ecA06SfAxoPmuHjvMu0KUIae7Y8GyVkbBqeEIidsmXeYooWIX9+qjfRQ==} + nan@2.22.2: + resolution: {integrity: sha512-DANghxFkS1plDdRsX0X9pm0Z6SJNN6gBdtXfanwoZ8hooC5gosGFSBGRYHUVPz1asKA/kMRqDRdHrluZ61SpBQ==} - nanoid@3.3.8: - resolution: {integrity: sha512-WNLf5Sd8oZxOm+TzppcYk8gVOgP+l58xNy58D0nbUnOxOWRWvlcCV4kUF7ltmI6PsrLl/BgKEyS4mqsGChFN0w==} + nanoid@3.3.11: + resolution: {integrity: sha512-N8SpfPUnUp1bK+PMYW8qSWdl9U+wwNWI4QKxOYDy9JAro3WMX7p2OeVRF9v+347pnakNevPmiHhNmZ2HbFA76w==} engines: {node: ^10 || ^12 || ^13.7 || ^14 || >=15.0.1} hasBin: true @@ -5055,9 +5230,9 @@ packages: engines: {node: '>=6'} hasBin: true - nopt@8.1.0: - resolution: {integrity: sha512-ieGu42u/Qsa4TFktmaKEwM6MQH0pOWnaB3htzh0JRtx84+Mebc0cbZYN5bC+6WTZ4+77xrL9Pn5m7CV6VIkV7A==} - engines: {node: ^18.17.0 || >=20.5.0} + nopt@7.2.1: + resolution: {integrity: sha512-taM24ViiimT/XntxbPyJQzCG+p4EKOpgD3mxFwW38mGjVUrfERQOeY4EDHjdnptttfHuHQXFx+lTP08Q+mLa/w==} + engines: {node: ^14.17.0 || ^16.13.0 || >=18.0.0} hasBin: true normalize-package-data@2.5.0: @@ -5095,8 +5270,8 @@ packages: nwmatcher@1.4.4: resolution: {integrity: sha512-3iuY4N5dhgMpCUrOVnuAdGrgxVqV2cJpM+XNccjR2DKOB1RUP0aA+wGXEiNziG/UKboFyGBIoKOaNlJxx8bciQ==} - nwsapi@2.2.16: - resolution: {integrity: sha512-F1I/bimDpj3ncaNDhfyMWuFqmQDBwDB0Fogc2qpL3BWvkQteFD/8BzWuIRl83rq0DXfm8SGt/HFhLXZyljTXcQ==} + nwsapi@2.2.20: + resolution: {integrity: sha512-/ieB+mDe4MrrKMT8z+mQL8klXydZWGR5Dowt4RAGKbJ3kIGEx3X4ljUo+6V73IXtUPWgfOlU5B9MlGxFO5T+cA==} oauth-sign@0.9.0: resolution: {integrity: sha512-fexhUFFPTGV8ybAtSIGbV6gOkSv8UtRbDBnAyLQw4QPKkgNlsH2ByPGtMUqdWkos6YCRmAqViwgZrJc/mRDzZQ==} @@ -5175,6 +5350,9 @@ packages: resolution: {integrity: sha512-6IpQ7mKUxRcZNLIObR0hz7lxsapSSIYNZJwXPGeF0mTVqGKFIXj1DQcMoT22S3ROcLyY/rz0PWaWZ9ayWmad9g==} engines: {node: '>= 0.8.0'} + orderedmap@2.1.1: + resolution: {integrity: sha512-TvAWxi0nDe1j/rtMcWcIj94+Ffe6n7zhow33h40SKxmsmozs6dz/e+EajymfoFcHd7sxNn8yHM8839uixMOV6g==} + own-keys@1.0.1: resolution: {integrity: sha512-qFOyK5PjiWZd+QQIh+1jhdb9LpxTF0qs7Pm8o5QHYZ0M3vKqSqzsZaEB6oWlxZ+q2sJBMI/Ktgd2N5ZwQoRHfg==} engines: {node: '>= 0.4'} @@ -5240,8 +5418,8 @@ packages: pako@2.1.0: resolution: {integrity: sha512-w+eufiZ1WuJYgPXbV/PO3NCMEc3xqylkKHzp8bxp1uW4qaSNQUkwmLLEc3kKsfz8lpV1F8Ht3U1Cm+9Srog2ug==} - papaparse@5.5.2: - resolution: {integrity: sha512-PZXg8UuAc4PcVwLosEEDYjPyfWnTEhOrUfdv+3Bx+NuAb+5NhDmXzg5fHWmdCh1mP5p7JAZfFr3IMQfcntNAdA==} + papaparse@5.5.3: + resolution: {integrity: sha512-5QvjGxYVjxO59MGU2lHVYpRWBBtKHnlIAcSe1uNFCkkptUh63NFRj0FJQm7nR67puEruUci/ZkjmEFrjCAyP4A==} parent-module@1.0.1: resolution: {integrity: sha512-GQ2EWRpQV8/o+Aw8YqtfZZPfNRWZYkbidE9k5rpl/hC3vtHHBfGm2Ifi6qWV+coDGkrUKZAxE3Lot5kcsRlh+g==} @@ -5256,8 +5434,8 @@ packages: parse-bmfont-xml@1.1.6: resolution: {integrity: sha512-0cEliVMZEhrFDwMh4SxIyVJpqYoOWDJ9P895tFuS+XuNzI5UBmBk5U5O4KuJdTnZpSBI4LFA2+ZiJaiwfSwlMA==} - parse-headers@2.0.5: - resolution: {integrity: sha512-ft3iAoLOB/MlwbNXgzy43SWGP6sQki2jQvAyBg/zDFAgr9bfNWZIUj42Kw2eJIl8kEi4PbgE6U1Zau/HwI75HA==} + parse-headers@2.0.6: + resolution: {integrity: sha512-Tz11t3uKztEW5FEVZnj1ox8GKblWn+PvHY9TmJV5Mll2uHEwRdR/5Li1OlXoECjLYkApdhWy44ocONwXLiKO5A==} parse-json@4.0.0: resolution: {integrity: sha512-aOIos8bujGN93/8Ox/jPLh7RwVnPEysynVFE+fQZyg6jKELEHwzgKdLRFHUgXJL6kylijVSBC4BvN9OmsB48Rw==} @@ -5270,8 +5448,8 @@ packages: parse5@1.5.1: resolution: {integrity: sha512-w2jx/0tJzvgKwZa58sj2vAYq/S/K1QJfIB3cWYea/Iu1scFPDQQ3IQiVZTHWtRBwAjv2Yd7S/xeZf3XqLDb3bA==} - parse5@7.2.1: - resolution: {integrity: sha512-BuBYQYlv1ckiPdQi/ohiivi9Sagc9JG+Ozs0r7b/0iK3sKmrb0b9FdWdBbOdx6hBCM/F9Ir82ofnBhtZOjCRPQ==} + parse5@7.3.0: + resolution: {integrity: sha512-IInvU7fabl34qmi9gY8XOVxhYyMyuH2xUNpb2q8/Y+7552KlejkRvqvD19nMoUW/uQGGbqNpA6Tufu5FL5BZgw==} parseurl@1.3.3: resolution: {integrity: sha512-CiyeOxFT/JZyN5m0z9PfXw4SCBJ6Sygz1Dpl0wqjlhDEGGBP1GnsUVEL0p63hoG1fcj3fHynXi9NYO4nWOL+qQ==} @@ -5417,41 +5595,41 @@ packages: peerDependencies: postcss: ^8.4.38 - postcss-colormin@7.0.2: - resolution: {integrity: sha512-YntRXNngcvEvDbEjTdRWGU606eZvB5prmHG4BF0yLmVpamXbpsRJzevyy6MZVyuecgzI2AWAlvFi8DAeCqwpvA==} + postcss-colormin@7.0.3: + resolution: {integrity: sha512-xZxQcSyIVZbSsl1vjoqZAcMYYdnJsIyG8OvqShuuqf12S88qQboxxEy0ohNCOLwVPXTU+hFHvJPACRL2B5ohTA==} engines: {node: ^18.12.0 || ^20.9.0 || >=22.0} peerDependencies: - postcss: ^8.4.31 + postcss: ^8.4.32 - postcss-convert-values@7.0.4: - resolution: {integrity: sha512-e2LSXPqEHVW6aoGbjV9RsSSNDO3A0rZLCBxN24zvxF25WknMPpX8Dm9UxxThyEbaytzggRuZxaGXqaOhxQ514Q==} + postcss-convert-values@7.0.5: + resolution: {integrity: sha512-0VFhH8nElpIs3uXKnVtotDJJNX0OGYSZmdt4XfSfvOMrFw1jKfpwpZxfC4iN73CTM/MWakDEmsHQXkISYj4BXw==} engines: {node: ^18.12.0 || ^20.9.0 || >=22.0} peerDependencies: - postcss: ^8.4.31 + postcss: ^8.4.32 - postcss-discard-comments@7.0.3: - resolution: {integrity: sha512-q6fjd4WU4afNhWOA2WltHgCbkRhZPgQe7cXF74fuVB/ge4QbM9HEaOIzGSiMvM+g/cOsNAUGdf2JDzqA2F8iLA==} + postcss-discard-comments@7.0.4: + resolution: {integrity: sha512-6tCUoql/ipWwKtVP/xYiFf1U9QgJ0PUvxN7pTcsQ8Ns3Fnwq1pU5D5s1MhT/XySeLq6GXNvn37U46Ded0TckWg==} engines: {node: ^18.12.0 || ^20.9.0 || >=22.0} peerDependencies: - postcss: ^8.4.31 + postcss: ^8.4.32 - postcss-discard-duplicates@7.0.1: - resolution: {integrity: sha512-oZA+v8Jkpu1ct/xbbrntHRsfLGuzoP+cpt0nJe5ED2FQF8n8bJtn7Bo28jSmBYwqgqnqkuSXJfSUEE7if4nClQ==} + postcss-discard-duplicates@7.0.2: + resolution: {integrity: sha512-eTonaQvPZ/3i1ASDHOKkYwAybiM45zFIc7KXils4mQmHLqIswXD9XNOKEVxtTFnsmwYzF66u4LMgSr0abDlh5w==} engines: {node: ^18.12.0 || ^20.9.0 || >=22.0} peerDependencies: - postcss: ^8.4.31 + postcss: ^8.4.32 - postcss-discard-empty@7.0.0: - resolution: {integrity: sha512-e+QzoReTZ8IAwhnSdp/++7gBZ/F+nBq9y6PomfwORfP7q9nBpK5AMP64kOt0bA+lShBFbBDcgpJ3X4etHg4lzA==} + postcss-discard-empty@7.0.1: + resolution: {integrity: sha512-cFrJKZvcg/uxB6Ijr4l6qmn3pXQBna9zyrPC+sK0zjbkDUZew+6xDltSF7OeB7rAtzaaMVYSdbod+sZOCWnMOg==} engines: {node: ^18.12.0 || ^20.9.0 || >=22.0} peerDependencies: - postcss: ^8.4.31 + postcss: ^8.4.32 - postcss-discard-overridden@7.0.0: - resolution: {integrity: sha512-GmNAzx88u3k2+sBTZrJSDauR0ccpE24omTQCVmaTTZFz1du6AasspjaUPMJ2ud4RslZpoFKyf+6MSPETLojc6w==} + postcss-discard-overridden@7.0.1: + resolution: {integrity: sha512-7c3MMjjSZ/qYrx3uc1940GSOzN1Iqjtlqe8uoSg+qdVPYyRb0TILSqqmtlSFuE4mTDECwsm397Ya7iXGzfF7lg==} engines: {node: ^18.12.0 || ^20.9.0 || >=22.0} peerDependencies: - postcss: ^8.4.31 + postcss: ^8.4.32 postcss-html@1.8.0: resolution: {integrity: sha512-5mMeb1TgLWoRKxZ0Xh9RZDfwUUIqRrcxO2uXO+Ezl1N5lqpCiSU5Gk6+1kZediBfBHFtPCdopr2UZ2SgUsKcgQ==} @@ -5479,41 +5657,41 @@ packages: postcss-media-query-parser@0.2.3: resolution: {integrity: sha512-3sOlxmbKcSHMjlUXQZKQ06jOswE7oVkXPxmZdoB1r5l0q6gTFTQSHxNxOrCccElbW7dxNytifNEo8qidX2Vsig==} - postcss-merge-longhand@7.0.4: - resolution: {integrity: sha512-zer1KoZA54Q8RVHKOY5vMke0cCdNxMP3KBfDerjH/BYHh4nCIh+1Yy0t1pAEQF18ac/4z3OFclO+ZVH8azjR4A==} + postcss-merge-longhand@7.0.5: + resolution: {integrity: sha512-Kpu5v4Ys6QI59FxmxtNB/iHUVDn9Y9sYw66D6+SZoIk4QTz1prC4aYkhIESu+ieG1iylod1f8MILMs1Em3mmIw==} engines: {node: ^18.12.0 || ^20.9.0 || >=22.0} peerDependencies: - postcss: ^8.4.31 + postcss: ^8.4.32 - postcss-merge-rules@7.0.4: - resolution: {integrity: sha512-ZsaamiMVu7uBYsIdGtKJ64PkcQt6Pcpep/uO90EpLS3dxJi6OXamIobTYcImyXGoW0Wpugh7DSD3XzxZS9JCPg==} + postcss-merge-rules@7.0.5: + resolution: {integrity: sha512-ZonhuSwEaWA3+xYbOdJoEReKIBs5eDiBVLAGpYZpNFPzXZcEE5VKR7/qBEQvTZpiwjqhhqEQ+ax5O3VShBj9Wg==} engines: {node: ^18.12.0 || ^20.9.0 || >=22.0} peerDependencies: - postcss: ^8.4.31 + postcss: ^8.4.32 - postcss-minify-font-values@7.0.0: - resolution: {integrity: sha512-2ckkZtgT0zG8SMc5aoNwtm5234eUx1GGFJKf2b1bSp8UflqaeFzR50lid4PfqVI9NtGqJ2J4Y7fwvnP/u1cQog==} + postcss-minify-font-values@7.0.1: + resolution: {integrity: sha512-2m1uiuJeTplll+tq4ENOQSzB8LRnSUChBv7oSyFLsJRtUgAAJGP6LLz0/8lkinTgxrmJSPOEhgY1bMXOQ4ZXhQ==} engines: {node: ^18.12.0 || ^20.9.0 || >=22.0} peerDependencies: - postcss: ^8.4.31 + postcss: ^8.4.32 - postcss-minify-gradients@7.0.0: - resolution: {integrity: sha512-pdUIIdj/C93ryCHew0UgBnL2DtUS3hfFa5XtERrs4x+hmpMYGhbzo6l/Ir5de41O0GaKVpK1ZbDNXSY6GkXvtg==} + postcss-minify-gradients@7.0.1: + resolution: {integrity: sha512-X9JjaysZJwlqNkJbUDgOclyG3jZEpAMOfof6PUZjPnPrePnPG62pS17CjdM32uT1Uq1jFvNSff9l7kNbmMSL2A==} engines: {node: ^18.12.0 || ^20.9.0 || >=22.0} peerDependencies: - postcss: ^8.4.31 + postcss: ^8.4.32 - postcss-minify-params@7.0.2: - resolution: {integrity: sha512-nyqVLu4MFl9df32zTsdcLqCFfE/z2+f8GE1KHPxWOAmegSo6lpV2GNy5XQvrzwbLmiU7d+fYay4cwto1oNdAaQ==} + postcss-minify-params@7.0.3: + resolution: {integrity: sha512-vUKV2+f5mtjewYieanLX0xemxIp1t0W0H/D11u+kQV/MWdygOO7xPMkbK+r9P6Lhms8MgzKARF/g5OPXhb8tgg==} engines: {node: ^18.12.0 || ^20.9.0 || >=22.0} peerDependencies: - postcss: ^8.4.31 + postcss: ^8.4.32 - postcss-minify-selectors@7.0.4: - resolution: {integrity: sha512-JG55VADcNb4xFCf75hXkzc1rNeURhlo7ugf6JjiiKRfMsKlDzN9CXHZDyiG6x/zGchpjQS+UAgb1d4nqXqOpmA==} + postcss-minify-selectors@7.0.5: + resolution: {integrity: sha512-x2/IvofHcdIrAm9Q+p06ZD1h6FPcQ32WtCRVodJLDR+WMn8EVHI1kvLxZuGKz/9EY5nAmI6lIQIrpo4tBy5+ug==} engines: {node: ^18.12.0 || ^20.9.0 || >=22.0} peerDependencies: - postcss: ^8.4.31 + postcss: ^8.4.32 postcss-modules-extract-imports@3.1.0: resolution: {integrity: sha512-k3kNe0aNFQDAZGbin48pL2VNidTF0w4/eASDsxlyspobzU3wZQLOGj7L9gfRe0Jo9/4uud09DsjFNH7winGv8Q==} @@ -5539,77 +5717,77 @@ packages: peerDependencies: postcss: ^8.1.0 - postcss-normalize-charset@7.0.0: - resolution: {integrity: sha512-ABisNUXMeZeDNzCQxPxBCkXexvBrUHV+p7/BXOY+ulxkcjUZO0cp8ekGBwvIh2LbCwnWbyMPNJVtBSdyhM2zYQ==} + postcss-normalize-charset@7.0.1: + resolution: {integrity: sha512-sn413ofhSQHlZFae//m9FTOfkmiZ+YQXsbosqOWRiVQncU2BA3daX3n0VF3cG6rGLSFVc5Di/yns0dFfh8NFgQ==} engines: {node: ^18.12.0 || ^20.9.0 || >=22.0} peerDependencies: - postcss: ^8.4.31 + postcss: ^8.4.32 - postcss-normalize-display-values@7.0.0: - resolution: {integrity: sha512-lnFZzNPeDf5uGMPYgGOw7v0BfB45+irSRz9gHQStdkkhiM0gTfvWkWB5BMxpn0OqgOQuZG/mRlZyJxp0EImr2Q==} + postcss-normalize-display-values@7.0.1: + resolution: {integrity: sha512-E5nnB26XjSYz/mGITm6JgiDpAbVuAkzXwLzRZtts19jHDUBFxZ0BkXAehy0uimrOjYJbocby4FVswA/5noOxrQ==} engines: {node: ^18.12.0 || ^20.9.0 || >=22.0} peerDependencies: - postcss: ^8.4.31 + postcss: ^8.4.32 - postcss-normalize-positions@7.0.0: - resolution: {integrity: sha512-I0yt8wX529UKIGs2y/9Ybs2CelSvItfmvg/DBIjTnoUSrPxSV7Z0yZ8ShSVtKNaV/wAY+m7bgtyVQLhB00A1NQ==} + postcss-normalize-positions@7.0.1: + resolution: {integrity: sha512-pB/SzrIP2l50ZIYu+yQZyMNmnAcwyYb9R1fVWPRxm4zcUFCY2ign7rcntGFuMXDdd9L2pPNUgoODDk91PzRZuQ==} engines: {node: ^18.12.0 || ^20.9.0 || >=22.0} peerDependencies: - postcss: ^8.4.31 + postcss: ^8.4.32 - postcss-normalize-repeat-style@7.0.0: - resolution: {integrity: sha512-o3uSGYH+2q30ieM3ppu9GTjSXIzOrRdCUn8UOMGNw7Af61bmurHTWI87hRybrP6xDHvOe5WlAj3XzN6vEO8jLw==} + postcss-normalize-repeat-style@7.0.1: + resolution: {integrity: sha512-NsSQJ8zj8TIDiF0ig44Byo3Jk9e4gNt9x2VIlJudnQQ5DhWAHJPF4Tr1ITwyHio2BUi/I6Iv0HRO7beHYOloYQ==} engines: {node: ^18.12.0 || ^20.9.0 || >=22.0} peerDependencies: - postcss: ^8.4.31 + postcss: ^8.4.32 - postcss-normalize-string@7.0.0: - resolution: {integrity: sha512-w/qzL212DFVOpMy3UGyxrND+Kb0fvCiBBujiaONIihq7VvtC7bswjWgKQU/w4VcRyDD8gpfqUiBQ4DUOwEJ6Qg==} + postcss-normalize-string@7.0.1: + resolution: {integrity: sha512-QByrI7hAhsoze992kpbMlJSbZ8FuCEc1OT9EFbZ6HldXNpsdpZr+YXC5di3UEv0+jeZlHbZcoCADgb7a+lPmmQ==} engines: {node: ^18.12.0 || ^20.9.0 || >=22.0} peerDependencies: - postcss: ^8.4.31 + postcss: ^8.4.32 - postcss-normalize-timing-functions@7.0.0: - resolution: {integrity: sha512-tNgw3YV0LYoRwg43N3lTe3AEWZ66W7Dh7lVEpJbHoKOuHc1sLrzMLMFjP8SNULHaykzsonUEDbKedv8C+7ej6g==} + postcss-normalize-timing-functions@7.0.1: + resolution: {integrity: sha512-bHifyuuSNdKKsnNJ0s8fmfLMlvsQwYVxIoUBnowIVl2ZAdrkYQNGVB4RxjfpvkMjipqvbz0u7feBZybkl/6NJg==} engines: {node: ^18.12.0 || ^20.9.0 || >=22.0} peerDependencies: - postcss: ^8.4.31 + postcss: ^8.4.32 - postcss-normalize-unicode@7.0.2: - resolution: {integrity: sha512-ztisabK5C/+ZWBdYC+Y9JCkp3M9qBv/XFvDtSw0d/XwfT3UaKeW/YTm/MD/QrPNxuecia46vkfEhewjwcYFjkg==} + postcss-normalize-unicode@7.0.3: + resolution: {integrity: sha512-EcoA29LvG3F+EpOh03iqu+tJY3uYYKzArqKJHxDhUYLa2u58aqGq16K6/AOsXD9yqLN8O6y9mmePKN5cx6krOw==} engines: {node: ^18.12.0 || ^20.9.0 || >=22.0} peerDependencies: - postcss: ^8.4.31 + postcss: ^8.4.32 - postcss-normalize-url@7.0.0: - resolution: {integrity: sha512-+d7+PpE+jyPX1hDQZYG+NaFD+Nd2ris6r8fPTBAjE8z/U41n/bib3vze8x7rKs5H1uEw5ppe9IojewouHk0klQ==} + postcss-normalize-url@7.0.1: + resolution: {integrity: sha512-sUcD2cWtyK1AOL/82Fwy1aIVm/wwj5SdZkgZ3QiUzSzQQofrbq15jWJ3BA7Z+yVRwamCjJgZJN0I9IS7c6tgeQ==} engines: {node: ^18.12.0 || ^20.9.0 || >=22.0} peerDependencies: - postcss: ^8.4.31 + postcss: ^8.4.32 - postcss-normalize-whitespace@7.0.0: - resolution: {integrity: sha512-37/toN4wwZErqohedXYqWgvcHUGlT8O/m2jVkAfAe9Bd4MzRqlBmXrJRePH0e9Wgnz2X7KymTgTOaaFizQe3AQ==} + postcss-normalize-whitespace@7.0.1: + resolution: {integrity: sha512-vsbgFHMFQrJBJKrUFJNZ2pgBeBkC2IvvoHjz1to0/0Xk7sII24T0qFOiJzG6Fu3zJoq/0yI4rKWi7WhApW+EFA==} engines: {node: ^18.12.0 || ^20.9.0 || >=22.0} peerDependencies: - postcss: ^8.4.31 + postcss: ^8.4.32 - postcss-ordered-values@7.0.1: - resolution: {integrity: sha512-irWScWRL6nRzYmBOXReIKch75RRhNS86UPUAxXdmW/l0FcAsg0lvAXQCby/1lymxn/o0gVa6Rv/0f03eJOwHxw==} + postcss-ordered-values@7.0.2: + resolution: {integrity: sha512-AMJjt1ECBffF7CEON/Y0rekRLS6KsePU6PRP08UqYW4UGFRnTXNrByUzYK1h8AC7UWTZdQ9O3Oq9kFIhm0SFEw==} engines: {node: ^18.12.0 || ^20.9.0 || >=22.0} peerDependencies: - postcss: ^8.4.31 + postcss: ^8.4.32 - postcss-reduce-initial@7.0.2: - resolution: {integrity: sha512-pOnu9zqQww7dEKf62Nuju6JgsW2V0KRNBHxeKohU+JkHd/GAH5uvoObqFLqkeB2n20mr6yrlWDvo5UBU5GnkfA==} + postcss-reduce-initial@7.0.3: + resolution: {integrity: sha512-RFvkZaqiWtGMlVjlUHpaxGqEL27lgt+Q2Ixjf83CRAzqdo+TsDyGPtJUbPx2MuYIJ+sCQc2TrOvRnhcXQfgIVA==} engines: {node: ^18.12.0 || ^20.9.0 || >=22.0} peerDependencies: - postcss: ^8.4.31 + postcss: ^8.4.32 - postcss-reduce-transforms@7.0.0: - resolution: {integrity: sha512-pnt1HKKZ07/idH8cpATX/ujMbtOGhUfE+m8gbqwJE05aTaNw8gbo34a2e3if0xc0dlu75sUOiqvwCGY3fzOHew==} + postcss-reduce-transforms@7.0.1: + resolution: {integrity: sha512-MhyEbfrm+Mlp/36hvZ9mT9DaO7dbncU0CvWI8V93LRkY6IYlu38OPg3FObnuKTUxJ4qA8HpurdQOo5CyqqO76g==} engines: {node: ^18.12.0 || ^20.9.0 || >=22.0} peerDependencies: - postcss: ^8.4.31 + postcss: ^8.4.32 postcss-resolve-nested-selector@0.1.6: resolution: {integrity: sha512-0sglIs9Wmkzbr8lQwEyIzlDOOC9bGmfVKcJTaxv3vMmd3uo4o4DerC3En0bnmgceeql9BfC8hRkp7cg0fjdVqw==} @@ -5643,17 +5821,17 @@ packages: peerDependencies: postcss: ^8.4.20 - postcss-svgo@7.0.1: - resolution: {integrity: sha512-0WBUlSL4lhD9rA5k1e5D8EN5wCEyZD6HJk0jIvRxl+FDVOMlJ7DePHYWGGVc5QRqrJ3/06FTXM0bxjmJpmTPSA==} + postcss-svgo@7.0.2: + resolution: {integrity: sha512-5Dzy66JlnRM6pkdOTF8+cGsB1fnERTE8Nc+Eed++fOWo1hdsBptCsbG8UuJkgtZt75bRtMJIrPeZmtfANixdFA==} engines: {node: ^18.12.0 || ^20.9.0 || >= 18} peerDependencies: - postcss: ^8.4.31 + postcss: ^8.4.32 - postcss-unique-selectors@7.0.3: - resolution: {integrity: sha512-J+58u5Ic5T1QjP/LDV9g3Cx4CNOgB5vz+kM6+OxHHhFACdcDeKhBXjQmB7fnIZM12YSTvsL0Opwco83DmacW2g==} + postcss-unique-selectors@7.0.4: + resolution: {integrity: sha512-pmlZjsmEAG7cHd7uK3ZiNSW6otSZ13RHuZ/4cDN/bVglS5EpF2r2oxY99SuOHa8m7AWoBCelTS3JPpzsIs8skQ==} engines: {node: ^18.12.0 || ^20.9.0 || >=22.0} peerDependencies: - postcss: ^8.4.31 + postcss: ^8.4.32 postcss-value-parser@4.2.0: resolution: {integrity: sha512-1NNCs6uurfkVbeXG4S8JFT9t19m45ICnif8zWLd5oPSZ50QnwMfK+H3jv408d4jw/7Bttv5axS5IiHoLaVNHeQ==} @@ -5662,8 +5840,8 @@ packages: resolution: {integrity: sha512-yioayjNbHn6z1/Bywyb2Y4s3yvDAeXGOyxqD+LnVOinq6Mdmd++SW2wUNVzavyyHxd6+DxzWGIuosg6P1Rj8uA==} engines: {node: '>=6.0.0'} - postcss@8.5.3: - resolution: {integrity: sha512-dle9A3yYxlBSrt8Fu+IpjGT8SY8hN0mlaA6GY8t0P5PjIOZemULz/E2Bnm/2dcUOena75OTNkHI76uZBNUUq3A==} + postcss@8.5.6: + resolution: {integrity: sha512-3Ybi1tAuwAP9s0r1UQ2J4n5Y0G05bJkpUIO0/bI9MhwmD70S5aTWbXGBwxHrelT+XM1k6dM0pk+SwNkpTRN7Pg==} engines: {node: ^10 || ^12 || >=14} prelude-ls@1.1.2: @@ -5679,8 +5857,8 @@ packages: engines: {node: '>=10.13.0'} hasBin: true - prettier@3.5.3: - resolution: {integrity: sha512-QQtaxnoDJeAkDvDKWCLiwIXkTgRhwYDEQCghU9Z6q03iyek/rxRh/2lC3HB7P8sWT2xC/y5JDctPLBIGzHKbhw==} + prettier@3.6.1: + resolution: {integrity: sha512-5xGWRa90Sp2+x1dQtNpIpeOQpTDBs9cZDmA/qs2vDNN2i18PdapqY7CmBeyLlMuGqXJRIOPaCaVZTLNQRWUH/A==} engines: {node: '>=14'} hasBin: true @@ -5727,6 +5905,64 @@ packages: resolution: {integrity: sha512-NxNv/kLguCA7p3jE8oL2aEBsrJWgAakBpgmgK6lpPWV+WuOmY6r2/zbAVnP+T8bQlA0nzHXSJSJW0Hq7ylaD2Q==} engines: {node: '>= 6'} + prosemirror-changeset@2.3.1: + resolution: {integrity: sha512-j0kORIBm8ayJNl3zQvD1TTPHJX3g042et6y/KQhZhnPrruO8exkTgG8X+NRpj7kIyMMEx74Xb3DyMIBtO0IKkQ==} + + prosemirror-collab@1.3.1: + resolution: {integrity: sha512-4SnynYR9TTYaQVXd/ieUvsVV4PDMBzrq2xPUWutHivDuOshZXqQ5rGbZM84HEaXKbLdItse7weMGOUdDVcLKEQ==} + + prosemirror-commands@1.7.1: + resolution: {integrity: sha512-rT7qZnQtx5c0/y/KlYaGvtG411S97UaL6gdp6RIZ23DLHanMYLyfGBV5DtSnZdthQql7W+lEVbpSfwtO8T+L2w==} + + prosemirror-dropcursor@1.8.2: + resolution: {integrity: sha512-CCk6Gyx9+Tt2sbYk5NK0nB1ukHi2ryaRgadV/LvyNuO3ena1payM2z6Cg0vO1ebK8cxbzo41ku2DE5Axj1Zuiw==} + + prosemirror-gapcursor@1.3.2: + resolution: {integrity: sha512-wtjswVBd2vaQRrnYZaBCbyDqr232Ed4p2QPtRIUK5FuqHYKGWkEwl08oQM4Tw7DOR0FsasARV5uJFvMZWxdNxQ==} + + prosemirror-history@1.4.1: + resolution: {integrity: sha512-2JZD8z2JviJrboD9cPuX/Sv/1ChFng+xh2tChQ2X4bB2HeK+rra/bmJ3xGntCcjhOqIzSDG6Id7e8RJ9QPXLEQ==} + + prosemirror-inputrules@1.5.0: + resolution: {integrity: sha512-K0xJRCmt+uSw7xesnHmcn72yBGTbY45vm8gXI4LZXbx2Z0jwh5aF9xrGQgrVPu0WbyFVFF3E/o9VhJYz6SQWnA==} + + prosemirror-keymap@1.2.3: + resolution: {integrity: sha512-4HucRlpiLd1IPQQXNqeo81BGtkY8Ai5smHhKW9jjPKRc2wQIxksg7Hl1tTI2IfT2B/LgX6bfYvXxEpJl7aKYKw==} + + prosemirror-markdown@1.13.2: + resolution: {integrity: sha512-FPD9rHPdA9fqzNmIIDhhnYQ6WgNoSWX9StUZ8LEKapaXU9i6XgykaHKhp6XMyXlOWetmaFgGDS/nu/w9/vUc5g==} + + prosemirror-menu@1.2.5: + resolution: {integrity: sha512-qwXzynnpBIeg1D7BAtjOusR+81xCp53j7iWu/IargiRZqRjGIlQuu1f3jFi+ehrHhWMLoyOQTSRx/IWZJqOYtQ==} + + prosemirror-model@1.25.1: + resolution: {integrity: sha512-AUvbm7qqmpZa5d9fPKMvH1Q5bqYQvAZWOGRvxsB6iFLyycvC9MwNemNVjHVrWgjaoxAfY8XVg7DbvQ/qxvI9Eg==} + + prosemirror-schema-basic@1.2.4: + resolution: {integrity: sha512-ELxP4TlX3yr2v5rM7Sb70SqStq5NvI15c0j9j/gjsrO5vaw+fnnpovCLEGIcpeGfifkuqJwl4fon6b+KdrODYQ==} + + prosemirror-schema-list@1.5.1: + resolution: {integrity: sha512-927lFx/uwyQaGwJxLWCZRkjXG0p48KpMj6ueoYiu4JX05GGuGcgzAy62dfiV8eFZftgyBUvLx76RsMe20fJl+Q==} + + prosemirror-state@1.4.3: + resolution: {integrity: sha512-goFKORVbvPuAQaXhpbemJFRKJ2aixr+AZMGiquiqKxaucC6hlpHNZHWgz5R7dS4roHiwq9vDctE//CZ++o0W1Q==} + + prosemirror-tables@1.7.1: + resolution: {integrity: sha512-eRQ97Bf+i9Eby99QbyAiyov43iOKgWa7QCGly+lrDt7efZ1v8NWolhXiB43hSDGIXT1UXgbs4KJN3a06FGpr1Q==} + + prosemirror-trailing-node@3.0.0: + resolution: {integrity: sha512-xiun5/3q0w5eRnGYfNlW1uU9W6x5MoFKWwq/0TIRgt09lv7Hcser2QYV8t4muXbEr+Fwo0geYn79Xs4GKywrRQ==} + peerDependencies: + prosemirror-model: ^1.22.1 + prosemirror-state: ^1.4.2 + prosemirror-view: ^1.33.8 + + prosemirror-transform@1.10.4: + resolution: {integrity: sha512-pwDy22nAnGqNR1feOQKHxoFkkUtepoFAd3r2hbEDsnf4wp57kKA36hXsB3njA9FtONBEwSDnDeCiJe+ItD+ykw==} + + prosemirror-view@1.40.0: + resolution: {integrity: sha512-2G3svX0Cr1sJjkD/DYWSe3cfV5VPVTBOxI9XQEGWJDFEpsZb/gh4MV29ctv+OJx2RFX4BLt09i+6zaGM/ldkCw==} + proto-list@1.2.4: resolution: {integrity: sha512-vtK/94akxsTMhe0/cbfpR+syPuszcuwhqVjJq26CuNDgFGj682oRBXOP5MJpv2r7JtE8MsiepGIqvvOTBwn2vA==} @@ -5743,6 +5979,10 @@ packages: psl@1.15.0: resolution: {integrity: sha512-JZd3gMVBAVQkSs6HdNZo9Sdo0LNcQeMNP3CozBJb3JYC/QUYZTnKxP+f8oWRX4rHP5EurWxqAHTSwUCjlNKa1w==} + punycode.js@2.3.1: + resolution: {integrity: sha512-uxFIHU0YlHYhDQtV4R9J6a52SLx28BCjT+4ieh7IGbgwVJWO+km431c4yRlREUAsAmt/uMjQUyQHNEPf0M39CA==} + engines: {node: '>=6'} + punycode@1.4.1: resolution: {integrity: sha512-jmYNElW7yvO7TV33CjSmvSiE2yco3bV2czu/OzDKdMNVZQWfxCblURLhf+47syQRBntjfLdd/H0egrzIG+oaFQ==} @@ -5973,8 +6213,8 @@ packages: resolution: {integrity: sha512-XQBQ3I8W1Cge0Seh+6gjj03LbmRFWuoszgK9ooCpwYIrhhoO80pfq4cUkU5DkknwfOfFteRwlZ56PYOGYyFWdg==} engines: {node: '>= 4'} - reusify@1.0.4: - resolution: {integrity: sha512-U9nH88a3fc/ekCF1l0/UP1IosiuIjyTh7hBvXVMHYgVcfGvt897Xguj2UOLDeI5BG2m7/uwyaLVT6fbtCwTyzw==} + reusify@1.1.0: + resolution: {integrity: sha512-g6QUff04oZpHs0eG5p83rFLhHeV00ug/Yf9nZM6fLeUrPguBTkTQOdpAWWspMh55TZfVQDPaN3NQJfbVRAxdIw==} engines: {iojs: '>=1.0.0', node: '>=0.10.0'} rewire@6.0.0: @@ -5999,6 +6239,9 @@ packages: engines: {node: '>=10.0.0'} hasBin: true + rope-sequence@1.3.4: + resolution: {integrity: sha512-UT5EDe2cu2E/6O4igUr5PSFs23nvvukicWHx6GnOPlHAiiYbzNuCRQCuiUdHJQcqKalLKlrYJnjY0ySGsXNQXQ==} + router@2.2.0: resolution: {integrity: sha512-nLTrUKm2UyiL7rlhapu/Zl45FwNgkZGaCpZbIHajDYgwlJCOzLSk+cIPAnsEqV955GjILJnKbdQC1nVPz+gAYQ==} engines: {node: '>= 18'} @@ -6119,11 +6362,6 @@ packages: resolution: {integrity: sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==} hasBin: true - semver@7.7.1: - resolution: {integrity: sha512-hlq8tAfn0m/61p4BVRcPzIGr6LKiMwo4VM6dGi6pt4qcRkmNzTcWq6eCEjEh+qXjkMDvPlOFFSGwQjoEa6gyMA==} - engines: {node: '>=10'} - hasBin: true - semver@7.7.2: resolution: {integrity: sha512-RF0Fw+rO5AMf9MAyaRXI4AV0Ulj5lMHqVxxdSgiVbixSCXoEmmX/jk0CuJw4+3SqroYO9VoUh+HcuJivvtJemA==} engines: {node: '>=10'} @@ -6196,10 +6434,6 @@ packages: resolution: {integrity: sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==} engines: {node: '>=8'} - shell-quote@1.8.2: - resolution: {integrity: sha512-AzqKpGKjrj7EM6rKVQEPpB288oCfnrEIuyoT9cyF4nmGa7V8Zk6f7RRqYisX8X9m+Q7bd632aZW4ky7EhbQztA==} - engines: {node: '>= 0.4'} - shell-quote@1.8.3: resolution: {integrity: sha512-ObmnIF4hXNg1BqhnHmgbDETF8dLPCggZWBjkQfhZpbszZnYur5DUljTcCHii5LC3J5E0yeO/1LIMyH+UvHQgyw==} engines: {node: '>= 0.4'} @@ -6263,8 +6497,8 @@ packages: resolution: {integrity: sha512-Fgl0YPZ902wEsAyiQ+idGd1A7rSFx/ayC1CQVMw5P+EQx2V0SgpGtf6OKFhVjPflPUl9YMmEOnmfjCdMUsygww==} engines: {node: '>= 10'} - socks@2.8.4: - resolution: {integrity: sha512-D3YaD0aRxR3mEcqnidIs7ReYJFVzWdd6fXJYUM8ixcQcJRGTka/b3saV0KflYhyVJXKhb947GndU35SxYNResQ==} + socks@2.8.5: + resolution: {integrity: sha512-iF+tNDQla22geJdTyJB1wM/qrX9DMRwWrciEPwWLPRWAUEM8sQiyxgckLxWT1f7+9VabJS0jTGGr4QgBuvi6Ww==} engines: {node: '>= 10.0.0', npm: '>= 3.0.0'} source-list-map@2.0.1: @@ -6367,6 +6601,10 @@ packages: resolution: {integrity: sha512-RwNA9Z/7PrK06rYLIzFMlaF+l73iwpzsqRIFgbMLbTcLD6cOao82TaWefPXQvB2fOC4AjuYSEndS7N/mTCbkdQ==} engines: {node: '>= 0.8'} + statuses@2.0.2: + resolution: {integrity: sha512-DvEy55V3DB7uknRo+4iOGT5fP1slR8wQohVdknigZPMpMstaKJQWhwiYBACJE3Ul2pTnATihhBYnRhZQHGBiRw==} + engines: {node: '>= 0.8'} + stdout-stream@1.4.1: resolution: {integrity: sha512-j4emi03KXqJWcIeF8eIXkjMFN1Cmb8gUlDYGeBALLPo5qdyTfA9bOtl8m33lRoC+vFMkP3gl0WsDr6+gzxbbTA==} @@ -6491,11 +6729,11 @@ packages: style-search@0.1.0: resolution: {integrity: sha512-Dj1Okke1C3uKKwQcetra4jSuk0DqbzbYtXipzFlFMZtowbF1x7BKJwB9AayVMyFARvU8EDrZdcax4At/452cAg==} - stylehacks@7.0.4: - resolution: {integrity: sha512-i4zfNrGMt9SB4xRK9L83rlsFCgdGANfeDAYacO1pkqcE7cRHPdWHwnKZVz7WY17Veq/FvyYsRAU++Ga+qDFIww==} + stylehacks@7.0.5: + resolution: {integrity: sha512-5kNb7V37BNf0Q3w+1pxfa+oiNPS++/b4Jil9e/kPDgrk1zjEd6uR7SZeJiYaLYH6RRSC1XX2/37OTeU/4FvuIA==} engines: {node: ^18.12.0 || ^20.9.0 || >=22.0} peerDependencies: - postcss: ^8.4.31 + postcss: ^8.4.32 stylelint-config-html@1.1.0: resolution: {integrity: sha512-IZv4IVESjKLumUGi+HWeb7skgO6/g4VMuAYrJdlqQFndgbj6WJAXPhaysvBiXefX79upBdQVumgYcdd17gCpjQ==} @@ -6567,8 +6805,8 @@ packages: peerDependencies: stylelint: ^14.5.1 || ^15.0.0 - stylelint-scss@6.11.1: - resolution: {integrity: sha512-e4rYo0UY+BIMtGeGanghrvHTjcryxgZbyFxUedp8dLFqC4P70aawNdYjRrQxbnKhu3BNr4+lt5e/53tcKXiwFA==} + stylelint-scss@6.12.1: + resolution: {integrity: sha512-UJUfBFIvXfly8WKIgmqfmkGKPilKB4L5j38JfsDd+OCg2GBdU0vGUV08Uw82tsRZzd4TbsUURVVNGeOhJVF7pA==} engines: {node: '>=18.12.0'} peerDependencies: stylelint: ^16.0.2 @@ -6638,8 +6876,8 @@ packages: resolution: {integrity: sha512-jX8Et4hHg57mug1/079yitEKWGB3LCwoxByLsNim89LABq8NqgiX+6iYVOsq0vX8uJHkU+DZ5fnq95f800bEsQ==} engines: {node: '>=0.6'} - tapable@2.2.1: - resolution: {integrity: sha512-GNzQvQTOIP6RyTfE2Qxb8ZVlNmw0n88vp1szwWRimP02mnTsx3Wtn5qRdqY9w2XduFNUgvOwhNnQsjwCp+kqaQ==} + tapable@2.2.2: + resolution: {integrity: sha512-Re10+NauLTMCudc7T5WLFLAwDhQ0JWdrMK+9B2M8zR5hRExKmsRDCBA7/aV/pNJFltmBFO5BAMlQFi/vq3nKOg==} engines: {node: '>=6'} tar@6.2.1: @@ -6674,8 +6912,8 @@ packages: uglify-js: optional: true - terser@5.39.0: - resolution: {integrity: sha512-LBAhFyLho16harJoWMg/nZsQYgTrg5jXOn2nCYjRUcZZEdE3qa2zb8QEDRUGVZBW4rlazf2fxkg8tztybTaqWw==} + terser@5.43.1: + resolution: {integrity: sha512-+6erLbBm0+LROX2sPXlUYx/ux5PyE9K/a92Wrt6oA+WDAoFTdpHE5tCYCI5PNzq2y8df4rA+QgHLJuR4jNymsg==} engines: {node: '>=10'} hasBin: true @@ -6710,6 +6948,9 @@ packages: tippy.js@4.3.5: resolution: {integrity: sha512-NDq3efte8nGK6BOJ1dDN1/WelAwfmh3UtIYXXck6+SxLzbIQNZE/cmRSnwScZ/FyiKdIcvFHvYUgqmoGx8CcyA==} + tippy.js@6.3.7: + resolution: {integrity: sha512-E1d3oP2emgJ9dRQZdf3Kkn0qJgI6ZLpyS5z6ZkY1DF3kaQaBsGZsndEpHwx+eC+tYM41HaSNvNtLx8tU57FzTQ==} + tmp@0.2.3: resolution: {integrity: sha512-nZD7m9iCPC5g0pYmcaxogYKggSfLsdxl8of3Q/oIbqCqLLIO9IAF0GWjX1z9NZRHPiXv8Wex4yDCaZsgEw0Y8w==} engines: {node: '>=14.14'} @@ -6771,8 +7012,8 @@ packages: true-case-path@2.2.1: resolution: {integrity: sha512-0z3j8R7MCjy10kc/g+qg7Ln3alJTodw9aDuVWZa3uiWqfuBMKeAeP2ocWcxoyM3D73yz3Jt/Pu4qPr4wHSdB/Q==} - ts-api-utils@2.0.1: - resolution: {integrity: sha512-dnlgjFSVetynI8nzgJ+qF62efpglpWRk8isUEWZGWlJYySCTD6aKvbUDu+zbPeDakk3bg5H4XpitHukgfL1m9w==} + ts-api-utils@2.1.0: + resolution: {integrity: sha512-CUgTZL1irw8u29bzrOD/nH85jqyc74D6SshFgujOIA7osm2Rz7dYH77agkx7H4FBNxDq7Cjf+IjaX/8zwFW+ZQ==} engines: {node: '>=18.12'} peerDependencies: typescript: '>=4.8.4' @@ -6859,8 +7100,8 @@ packages: resolution: {integrity: sha512-3KS2b+kL7fsuk/eJZ7EQdnEmQoaho/r6KUef7hxvltNA5DR8NAUM+8wJMbJyZ4G9/7i3v5zPBIMN5aybAh2/Jg==} engines: {node: '>= 0.4'} - typescript@5.7.3: - resolution: {integrity: sha512-84MVSjMEHP+FQRPy3pX9sTVV/INIex71s9TL2Gm5FG/WG1SqXeKyZ0k7/blY/4FdOzI12CBy1vGc4og/eus0fw==} + typescript@5.8.3: + resolution: {integrity: sha512-p1diW6TqL9L07nNxvRMM7hMMw4c5XOo/1ibL4aAIGmSAt9slTE1Xgw5KWuof2uTOvCg9BY7ZRi+GaF+7sfgPeQ==} engines: {node: '>=14.17'} hasBin: true @@ -6868,13 +7109,13 @@ packages: resolution: {integrity: sha512-z6PJ8Lml+v3ichVojCiB8toQJBuwR42ySM4ezjXIqXK3M0HczmKQ3LF4rhU55PfD99KEEXQG6yb7iOMyvYuHew==} hasBin: true + uc.micro@2.1.0: + resolution: {integrity: sha512-ARDJmphmdvUk6Glw7y9DQ2bFkKBHwQHLi2lsaH6PPmz/Ka9sFOBsBluozhDltWmnv9u/cF6Rt87znRTPV+yp/A==} + unbox-primitive@1.1.0: resolution: {integrity: sha512-nWJ91DjeOkej/TA8pXQ3myruKpKEYgqvpw9lz4OPHj/NWFNluYrjbz9j01CJ8yKQd2g4jFoOkINCTW2I5LEEyw==} engines: {node: '>= 0.4'} - undici-types@6.21.0: - resolution: {integrity: sha512-iwDZqg0QAGrg9Rav5H4n0M64c3mkR59cJ6wQp+7C4nI0gsmExaedaYLNO44eT4AtBBwjbTiGPMlt2Md0T9H9JQ==} - undici-types@7.8.0: resolution: {integrity: sha512-9UJ2xGDvQ43tYyVMpuHlsgApydB8ZKfVYTsLDhXkFL/6gfkp+U8xTGdh8pMJv1SpZna0zxG1DwsKZsreLbXBxw==} @@ -6931,12 +7172,6 @@ packages: resolution: {integrity: sha512-aZwGpamFO61g3OlfT7OQCHqhGnW43ieH9WZeP7QxN/G/jS4jfqUkZxoryvJgVPEcrl5NL/ggHsSmLMHuH64Lhg==} engines: {node: '>=4'} - update-browserslist-db@1.1.2: - resolution: {integrity: sha512-PPypAm5qvlD7XMZC3BujecnaOxwhrtoFR+Dqkk5Aa/6DssiH0ibKoketaj9w8LP7Bont1rYeoV5plxD7RTEPRg==} - hasBin: true - peerDependencies: - browserslist: '>= 4.21.0' - update-browserslist-db@1.1.3: resolution: {integrity: sha512-UxhIZQ+QInVdunkDAaiazvvT/+fXL5Osr0JZlJulepYu6Jd7qJtDZjlur0emRlT71EN3ScPoE7gvsuIKKNavKw==} hasBin: true @@ -7091,6 +7326,11 @@ packages: vue-template-es2015-compiler@1.9.1: resolution: {integrity: sha512-4gDntzrifFnCEvyoO8PqyJDmguXgVPxKiIxrBKjIowvL9l+N66196+72XVYR8BBf1Uv1Fgt3bGevJ+sEmxfZzw==} + vue-ts-types@1.6.2: + resolution: {integrity: sha512-iOBe4oMoTeISs+Wxlt5E6q3W6lEX6UtkwWCPu6727IoweBE3O3Vp/2/BtO+Kf5pISQU7WpX71hXTeMGqHsmecA==} + peerDependencies: + vue: ^2.6 || ^3.2 + vue2-teleport@1.1.4: resolution: {integrity: sha512-mGTszyQP6k3sSSk7MBq+PZdVojHYLwg5772hl3UVpu5uaLBqWIZ5eNP6/TjkDrf1XUTTxybvpXC6inpjwO+i/Q==} @@ -7109,6 +7349,9 @@ packages: peerDependencies: vue: ^2.0.0 + w3c-keyname@2.2.8: + resolution: {integrity: sha512-dpojBhNsCNN7T82Tm7k26A6G9ML3NkhDsnw9n/eoxSRlVBB4CEtIQ/KTCLI2Fwf3ataSXRhYFkQi3SlnFwPvPQ==} + w3c-xmlserializer@4.0.0: resolution: {integrity: sha512-d+BFHzbiCx6zGfz0HyQ6Rg69w9k19nviJspaj4yNscGjrHu94sVP+aRm75yEbCh+r2/yR+7q6hux9LVtbuTGBw==} engines: {node: '>=14'} @@ -7116,8 +7359,8 @@ packages: walker@1.0.8: resolution: {integrity: sha512-ts/8E8l5b7kY0vlWLewOkDXMmPdLcVV4GmOQLyxuSswIJsweeFZtAsMF7k1Nszz+TYBQrlYRmzOnr398y1JemQ==} - watchpack@2.4.2: - resolution: {integrity: sha512-TnbFSbcOCcDgjZ4piURLCbJ3nJhznVh9kw6F6iokjiFPl8ONxe9A6nMDVXDiNbrSfLILs6vB07F7wLBrwPYzJw==} + watchpack@2.4.4: + resolution: {integrity: sha512-c5EGNOiyxxV5qmTtAB7rbiXxi1ooX1pQKMLX/MIabJjRA0SJBQOjKF+KSVfHkr9U1cADPon0mRiVe/riyaiDUA==} engines: {node: '>=10.13.0'} wbuf@1.7.3: @@ -7184,8 +7427,8 @@ packages: webpack-sources@1.4.3: resolution: {integrity: sha512-lgTS3Xhv1lCOKo7SA5TjKXMjpSM4sBjNV5+q2bqesbSPs5FjGmU6jjtBSkX9b4qW87vDIsCIlUPOEhbZrMdjeQ==} - webpack-sources@3.2.3: - resolution: {integrity: sha512-/DyMEOrDgLKKIG0fmvtz+4dUX/3Ghozwgm6iPp8KRhvn+eQf9+Q7GWxVNMk3+uCPWfdXYC4ExGBckIXdFEfH1w==} + webpack-sources@3.3.3: + resolution: {integrity: sha512-yd1RBzSGanHkitROoPFd6qsrxt+oFhg/129YzheDGqeustzX0vTZJZsSsQjVQC4yzBQ56K55XU8gaNCtIzOnTg==} engines: {node: '>=10.13.0'} webpack@5.99.7: @@ -7236,8 +7479,8 @@ packages: resolution: {integrity: sha512-K4jVyjnBdgvc86Y6BkaLZEN933SwYOuBFkdmBu9ZfkcAbdVbpITnDmjvZ/aQjRXQrv5EPkTnD1s39GiiqbngCw==} engines: {node: '>= 0.4'} - which-typed-array@1.1.18: - resolution: {integrity: sha512-qEcY+KJYlWyLH9vNbsr6/5j59AXk5ni5aakf8ldzBvGde6Iz4sxZGkJyWSAueTG7QhOvNRYb1lDdFmL5Td0QKA==} + which-typed-array@1.1.19: + resolution: {integrity: sha512-rEvr90Bck4WZt9HHFC4DJMsjvu7x+r6bImz0/BrbWb7A2djJ8hnZMrWnHo9F8ssv0OMErasDhftrfROTyqSDrw==} engines: {node: '>= 0.4'} which@1.3.1: @@ -7410,15 +7653,15 @@ packages: resolution: {integrity: sha512-rVksvsnNCdJ/ohGc6xgPwyN8eheCxsiLM8mxuE/t/mOVqJewPuO1miLpTHQiRgTKCLexL4MeAFVagts7HmNZ2Q==} engines: {node: '>=10'} - yocto-queue@1.1.1: - resolution: {integrity: sha512-b4JR1PFR10y1mKjhHY9LaGo6tmrgjit7hxVIeAmyMw3jegXR4dhYqLaQF5zMXZxY7tLpMyJeLjr1C4rLmkVe8g==} + yocto-queue@1.2.1: + resolution: {integrity: sha512-AyeEbWOu/TAXdxlV9wmGcR0+yh2j3vYPGOECcIj2S7MkrLyC7ne+oye2BKTItt0ii2PHk4cDy+95+LshzbXnGg==} engines: {node: '>=12.20'} snapshots: '@adobe/css-tools@4.3.3': {} - '@adobe/css-tools@4.4.2': {} + '@adobe/css-tools@4.4.3': {} '@ampproject/remapping@2.3.0': dependencies: @@ -7480,7 +7723,7 @@ snapshots: dependencies: '@babel/compat-data': 7.27.5 '@babel/helper-validator-option': 7.27.1 - browserslist: 4.25.0 + browserslist: 4.25.1 lru-cache: 5.1.1 semver: 6.3.1 @@ -7658,7 +7901,7 @@ snapshots: '@babel/core': 7.27.4 '@babel/helper-plugin-utils': 7.27.1 - '@babel/plugin-syntax-flow@7.26.0(@babel/core@7.27.4)': + '@babel/plugin-syntax-flow@7.27.1(@babel/core@7.27.4)': dependencies: '@babel/core': 7.27.4 '@babel/helper-plugin-utils': 7.27.1 @@ -7683,7 +7926,7 @@ snapshots: '@babel/core': 7.27.4 '@babel/helper-plugin-utils': 7.27.1 - '@babel/plugin-syntax-jsx@7.25.9(@babel/core@7.27.4)': + '@babel/plugin-syntax-jsx@7.27.1(@babel/core@7.27.4)': dependencies: '@babel/core': 7.27.4 '@babel/helper-plugin-utils': 7.27.1 @@ -7728,7 +7971,7 @@ snapshots: '@babel/core': 7.27.4 '@babel/helper-plugin-utils': 7.27.1 - '@babel/plugin-syntax-typescript@7.25.9(@babel/core@7.27.4)': + '@babel/plugin-syntax-typescript@7.27.1(@babel/core@7.27.4)': dependencies: '@babel/core': 7.27.4 '@babel/helper-plugin-utils': 7.27.1 @@ -7843,11 +8086,11 @@ snapshots: '@babel/core': 7.27.4 '@babel/helper-plugin-utils': 7.27.1 - '@babel/plugin-transform-flow-strip-types@7.26.5(@babel/core@7.27.4)': + '@babel/plugin-transform-flow-strip-types@7.27.1(@babel/core@7.27.4)': dependencies: '@babel/core': 7.27.4 '@babel/helper-plugin-utils': 7.27.1 - '@babel/plugin-syntax-flow': 7.26.0(@babel/core@7.27.4) + '@babel/plugin-syntax-flow': 7.27.1(@babel/core@7.27.4) '@babel/plugin-transform-for-of@7.27.1(@babel/core@7.27.4)': dependencies: @@ -8053,14 +8296,14 @@ snapshots: '@babel/core': 7.27.4 '@babel/helper-plugin-utils': 7.27.1 - '@babel/plugin-transform-typescript@7.27.0(@babel/core@7.27.4)': + '@babel/plugin-transform-typescript@7.27.1(@babel/core@7.27.4)': dependencies: '@babel/core': 7.27.4 '@babel/helper-annotate-as-pure': 7.27.3 '@babel/helper-create-class-features-plugin': 7.27.1(@babel/core@7.27.4) '@babel/helper-plugin-utils': 7.27.1 '@babel/helper-skip-transparent-expression-wrappers': 7.27.1 - '@babel/plugin-syntax-typescript': 7.25.9(@babel/core@7.27.4) + '@babel/plugin-syntax-typescript': 7.27.1(@babel/core@7.27.4) transitivePeerDependencies: - supports-color @@ -8162,12 +8405,12 @@ snapshots: transitivePeerDependencies: - supports-color - '@babel/preset-flow@7.25.9(@babel/core@7.27.4)': + '@babel/preset-flow@7.27.1(@babel/core@7.27.4)': dependencies: '@babel/core': 7.27.4 '@babel/helper-plugin-utils': 7.27.1 '@babel/helper-validator-option': 7.27.1 - '@babel/plugin-transform-flow-strip-types': 7.26.5(@babel/core@7.27.4) + '@babel/plugin-transform-flow-strip-types': 7.27.1(@babel/core@7.27.4) '@babel/preset-modules@0.1.6-no-external-plugins(@babel/core@7.27.4)': dependencies: @@ -8176,18 +8419,18 @@ snapshots: '@babel/types': 7.27.6 esutils: 2.0.3 - '@babel/preset-typescript@7.27.0(@babel/core@7.27.4)': + '@babel/preset-typescript@7.27.1(@babel/core@7.27.4)': dependencies: '@babel/core': 7.27.4 '@babel/helper-plugin-utils': 7.27.1 '@babel/helper-validator-option': 7.27.1 - '@babel/plugin-syntax-jsx': 7.25.9(@babel/core@7.27.4) + '@babel/plugin-syntax-jsx': 7.27.1(@babel/core@7.27.4) '@babel/plugin-transform-modules-commonjs': 7.27.1(@babel/core@7.27.4) - '@babel/plugin-transform-typescript': 7.27.0(@babel/core@7.27.4) + '@babel/plugin-transform-typescript': 7.27.1(@babel/core@7.27.4) transitivePeerDependencies: - supports-color - '@babel/register@7.25.9(@babel/core@7.27.4)': + '@babel/register@7.27.1(@babel/core@7.27.4)': dependencies: '@babel/core': 7.27.4 clone-deep: 4.0.1 @@ -8200,9 +8443,7 @@ snapshots: dependencies: regenerator-runtime: 0.14.1 - '@babel/runtime@7.26.9': - dependencies: - regenerator-runtime: 0.14.1 + '@babel/runtime@7.27.6': {} '@babel/template@7.27.2': dependencies: @@ -8246,7 +8487,7 @@ snapshots: '@discoveryjs/json-ext@0.6.3': {} - '@eslint-community/eslint-utils@4.4.1(eslint@8.57.1)': + '@eslint-community/eslint-utils@4.7.0(eslint@8.57.1)': dependencies: eslint: 8.57.1 eslint-visitor-keys: 3.4.3 @@ -8270,7 +8511,7 @@ snapshots: '@eslint/eslintrc@2.1.4': dependencies: ajv: 6.12.6 - debug: 4.4.0 + debug: 4.4.1 espree: 9.6.1 globals: 13.24.0 ignore: 5.3.2 @@ -8288,7 +8529,7 @@ snapshots: '@humanwhocodes/config-array@0.13.0': dependencies: '@humanwhocodes/object-schema': 2.0.3 - debug: 4.4.0 + debug: 4.4.1 minimatch: 3.1.2 transitivePeerDependencies: - supports-color @@ -8329,7 +8570,7 @@ snapshots: '@jest/console@29.7.0': dependencies: '@jest/types': 29.6.3 - '@types/node': 22.15.3 + '@types/node': 24.0.4 chalk: 4.1.2 jest-message-util: 29.7.0 jest-util: 29.7.0 @@ -8342,14 +8583,14 @@ snapshots: '@jest/test-result': 29.7.0 '@jest/transform': 29.7.0 '@jest/types': 29.6.3 - '@types/node': 22.15.3 + '@types/node': 24.0.4 ansi-escapes: 4.3.2 chalk: 4.1.2 ci-info: 3.9.0 exit: 0.1.2 graceful-fs: 4.2.11 jest-changed-files: 29.7.0 - jest-config: 29.7.0(@types/node@22.15.3) + jest-config: 29.7.0(@types/node@24.0.4) jest-haste-map: 29.7.0 jest-message-util: 29.7.0 jest-regex-util: 29.6.3 @@ -8374,7 +8615,7 @@ snapshots: dependencies: '@jest/fake-timers': 29.7.0 '@jest/types': 29.6.3 - '@types/node': 22.15.3 + '@types/node': 24.0.4 jest-mock: 29.7.0 '@jest/expect-utils@29.7.0': @@ -8392,7 +8633,7 @@ snapshots: dependencies: '@jest/types': 29.6.3 '@sinonjs/fake-timers': 10.3.0 - '@types/node': 22.15.3 + '@types/node': 24.0.4 jest-message-util: 29.7.0 jest-mock: 29.7.0 jest-util: 29.7.0 @@ -8414,7 +8655,7 @@ snapshots: '@jest/transform': 29.7.0 '@jest/types': 29.6.3 '@jridgewell/trace-mapping': 0.3.25 - '@types/node': 22.15.3 + '@types/node': 24.0.4 chalk: 4.1.2 collect-v8-coverage: 1.0.2 exit: 0.1.2 @@ -8484,20 +8725,20 @@ snapshots: '@jest/schemas': 29.6.3 '@types/istanbul-lib-coverage': 2.0.6 '@types/istanbul-reports': 3.0.4 - '@types/node': 22.15.3 + '@types/node': 24.0.4 '@types/yargs': 17.0.33 chalk: 4.1.2 '@jimp/bmp@0.16.13(@jimp/custom@0.16.13)': dependencies: - '@babel/runtime': 7.26.9 + '@babel/runtime': 7.27.6 '@jimp/custom': 0.16.13 '@jimp/utils': 0.16.13 bmp-js: 0.1.0 '@jimp/core@0.16.13': dependencies: - '@babel/runtime': 7.26.9 + '@babel/runtime': 7.27.6 '@jimp/utils': 0.16.13 any-base: 1.1.0 buffer: 5.7.1 @@ -8513,14 +8754,14 @@ snapshots: '@jimp/custom@0.16.13': dependencies: - '@babel/runtime': 7.26.9 + '@babel/runtime': 7.27.6 '@jimp/core': 0.16.13 transitivePeerDependencies: - debug '@jimp/gif@0.16.13(@jimp/custom@0.16.13)': dependencies: - '@babel/runtime': 7.26.9 + '@babel/runtime': 7.27.6 '@jimp/custom': 0.16.13 '@jimp/utils': 0.16.13 gifwrap: 0.9.4 @@ -8528,33 +8769,33 @@ snapshots: '@jimp/jpeg@0.16.13(@jimp/custom@0.16.13)': dependencies: - '@babel/runtime': 7.26.9 + '@babel/runtime': 7.27.6 '@jimp/custom': 0.16.13 '@jimp/utils': 0.16.13 jpeg-js: 0.4.4 '@jimp/plugin-resize@0.16.13(@jimp/custom@0.16.13)': dependencies: - '@babel/runtime': 7.26.9 + '@babel/runtime': 7.27.6 '@jimp/custom': 0.16.13 '@jimp/utils': 0.16.13 '@jimp/png@0.16.13(@jimp/custom@0.16.13)': dependencies: - '@babel/runtime': 7.26.9 + '@babel/runtime': 7.27.6 '@jimp/custom': 0.16.13 '@jimp/utils': 0.16.13 pngjs: 3.4.0 '@jimp/tiff@0.16.13(@jimp/custom@0.16.13)': dependencies: - '@babel/runtime': 7.26.9 + '@babel/runtime': 7.27.6 '@jimp/custom': 0.16.13 utif: 2.0.1 '@jimp/types@0.16.13(@jimp/custom@0.16.13)': dependencies: - '@babel/runtime': 7.26.9 + '@babel/runtime': 7.27.6 '@jimp/bmp': 0.16.13(@jimp/custom@0.16.13) '@jimp/custom': 0.16.13 '@jimp/gif': 0.16.13(@jimp/custom@0.16.13) @@ -8565,7 +8806,7 @@ snapshots: '@jimp/utils@0.16.13': dependencies: - '@babel/runtime': 7.26.9 + '@babel/runtime': 7.27.6 regenerator-runtime: 0.13.11 '@jridgewell/gen-mapping@0.3.8': @@ -8618,7 +8859,7 @@ snapshots: '@nodelib/fs.walk@1.2.8': dependencies: '@nodelib/fs.scandir': 2.1.5 - fastq: 1.19.0 + fastq: 1.19.1 '@npmcli/fs@1.1.1': dependencies: @@ -8645,6 +8886,10 @@ snapshots: '@pkgjs/parseargs@0.11.0': optional: true + '@popperjs/core@2.11.8': {} + + '@remirror/core-constants@3.0.0': {} + '@rollup/plugin-babel@5.3.1(@babel/core@7.27.4)(@types/babel__core@7.20.5)(rollup@2.79.2)': dependencies: '@babel/core': 7.27.4 @@ -8658,7 +8903,7 @@ snapshots: '@rollup/plugin-node-resolve@15.3.1(rollup@2.79.2)': dependencies: - '@rollup/pluginutils': 5.1.4(rollup@2.79.2) + '@rollup/pluginutils': 5.2.0(rollup@2.79.2) '@types/resolve': 1.20.2 deepmerge: 4.3.1 is-module: 1.0.0 @@ -8676,7 +8921,7 @@ snapshots: dependencies: serialize-javascript: 6.0.2 smob: 1.5.0 - terser: 5.39.0 + terser: 5.43.1 optionalDependencies: rollup: 2.79.2 @@ -8687,9 +8932,9 @@ snapshots: picomatch: 2.3.1 rollup: 2.79.2 - '@rollup/pluginutils@5.1.4(rollup@2.79.2)': + '@rollup/pluginutils@5.2.0(rollup@2.79.2)': dependencies: - '@types/estree': 1.0.7 + '@types/estree': 1.0.8 estree-walker: 2.0.2 picomatch: 4.0.2 optionalDependencies: @@ -8782,7 +9027,7 @@ snapshots: '@testing-library/dom@9.3.4': dependencies: '@babel/code-frame': 7.27.1 - '@babel/runtime': 7.26.9 + '@babel/runtime': 7.27.6 '@types/aria-query': 5.0.4 aria-query: 5.1.3 chalk: 4.1.2 @@ -8792,7 +9037,7 @@ snapshots: '@testing-library/jest-dom@6.6.3': dependencies: - '@adobe/css-tools': 4.4.2 + '@adobe/css-tools': 4.4.3 aria-query: 5.3.2 chalk: 3.0.0 css.escape: 1.5.1 @@ -8806,12 +9051,167 @@ snapshots: '@testing-library/vue@5.9.0(vue-template-compiler@2.7.16)(vue@2.7.16)': dependencies: - '@babel/runtime': 7.26.9 + '@babel/runtime': 7.27.6 '@testing-library/dom': 9.3.4 '@vue/test-utils': 1.3.6(vue-template-compiler@2.7.16)(vue@2.7.16) vue: 2.7.16 vue-template-compiler: 2.7.16 + '@tiptap/core@2.22.3(@tiptap/pm@2.22.3)': + dependencies: + '@tiptap/pm': 2.22.3 + + '@tiptap/extension-blockquote@2.22.3(@tiptap/core@2.22.3(@tiptap/pm@2.22.3))': + dependencies: + '@tiptap/core': 2.22.3(@tiptap/pm@2.22.3) + + '@tiptap/extension-bold@2.22.3(@tiptap/core@2.22.3(@tiptap/pm@2.22.3))': + dependencies: + '@tiptap/core': 2.22.3(@tiptap/pm@2.22.3) + + '@tiptap/extension-bubble-menu@2.22.3(@tiptap/core@2.22.3(@tiptap/pm@2.22.3))(@tiptap/pm@2.22.3)': + dependencies: + '@tiptap/core': 2.22.3(@tiptap/pm@2.22.3) + '@tiptap/pm': 2.22.3 + tippy.js: 6.3.7 + + '@tiptap/extension-bullet-list@2.22.3(@tiptap/core@2.22.3(@tiptap/pm@2.22.3))': + dependencies: + '@tiptap/core': 2.22.3(@tiptap/pm@2.22.3) + + '@tiptap/extension-code-block@2.22.3(@tiptap/core@2.22.3(@tiptap/pm@2.22.3))(@tiptap/pm@2.22.3)': + dependencies: + '@tiptap/core': 2.22.3(@tiptap/pm@2.22.3) + '@tiptap/pm': 2.22.3 + + '@tiptap/extension-code@2.22.3(@tiptap/core@2.22.3(@tiptap/pm@2.22.3))': + dependencies: + '@tiptap/core': 2.22.3(@tiptap/pm@2.22.3) + + '@tiptap/extension-document@2.22.3(@tiptap/core@2.22.3(@tiptap/pm@2.22.3))': + dependencies: + '@tiptap/core': 2.22.3(@tiptap/pm@2.22.3) + + '@tiptap/extension-dropcursor@2.22.3(@tiptap/core@2.22.3(@tiptap/pm@2.22.3))(@tiptap/pm@2.22.3)': + dependencies: + '@tiptap/core': 2.22.3(@tiptap/pm@2.22.3) + '@tiptap/pm': 2.22.3 + + '@tiptap/extension-floating-menu@2.22.3(@tiptap/core@2.22.3(@tiptap/pm@2.22.3))(@tiptap/pm@2.22.3)': + dependencies: + '@tiptap/core': 2.22.3(@tiptap/pm@2.22.3) + '@tiptap/pm': 2.22.3 + tippy.js: 6.3.7 + + '@tiptap/extension-gapcursor@2.22.3(@tiptap/core@2.22.3(@tiptap/pm@2.22.3))(@tiptap/pm@2.22.3)': + dependencies: + '@tiptap/core': 2.22.3(@tiptap/pm@2.22.3) + '@tiptap/pm': 2.22.3 + + '@tiptap/extension-hard-break@2.22.3(@tiptap/core@2.22.3(@tiptap/pm@2.22.3))': + dependencies: + '@tiptap/core': 2.22.3(@tiptap/pm@2.22.3) + + '@tiptap/extension-heading@2.22.3(@tiptap/core@2.22.3(@tiptap/pm@2.22.3))': + dependencies: + '@tiptap/core': 2.22.3(@tiptap/pm@2.22.3) + + '@tiptap/extension-history@2.22.3(@tiptap/core@2.22.3(@tiptap/pm@2.22.3))(@tiptap/pm@2.22.3)': + dependencies: + '@tiptap/core': 2.22.3(@tiptap/pm@2.22.3) + '@tiptap/pm': 2.22.3 + + '@tiptap/extension-horizontal-rule@2.22.3(@tiptap/core@2.22.3(@tiptap/pm@2.22.3))(@tiptap/pm@2.22.3)': + dependencies: + '@tiptap/core': 2.22.3(@tiptap/pm@2.22.3) + '@tiptap/pm': 2.22.3 + + '@tiptap/extension-italic@2.22.3(@tiptap/core@2.22.3(@tiptap/pm@2.22.3))': + dependencies: + '@tiptap/core': 2.22.3(@tiptap/pm@2.22.3) + + '@tiptap/extension-list-item@2.22.3(@tiptap/core@2.22.3(@tiptap/pm@2.22.3))': + dependencies: + '@tiptap/core': 2.22.3(@tiptap/pm@2.22.3) + + '@tiptap/extension-ordered-list@2.22.3(@tiptap/core@2.22.3(@tiptap/pm@2.22.3))': + dependencies: + '@tiptap/core': 2.22.3(@tiptap/pm@2.22.3) + + '@tiptap/extension-paragraph@2.22.3(@tiptap/core@2.22.3(@tiptap/pm@2.22.3))': + dependencies: + '@tiptap/core': 2.22.3(@tiptap/pm@2.22.3) + + '@tiptap/extension-strike@2.22.3(@tiptap/core@2.22.3(@tiptap/pm@2.22.3))': + dependencies: + '@tiptap/core': 2.22.3(@tiptap/pm@2.22.3) + + '@tiptap/extension-text-style@2.22.3(@tiptap/core@2.22.3(@tiptap/pm@2.22.3))': + dependencies: + '@tiptap/core': 2.22.3(@tiptap/pm@2.22.3) + + '@tiptap/extension-text@2.22.3(@tiptap/core@2.22.3(@tiptap/pm@2.22.3))': + dependencies: + '@tiptap/core': 2.22.3(@tiptap/pm@2.22.3) + + '@tiptap/extension-underline@2.22.3(@tiptap/core@2.22.3(@tiptap/pm@2.22.3))': + dependencies: + '@tiptap/core': 2.22.3(@tiptap/pm@2.22.3) + + '@tiptap/pm@2.22.3': + dependencies: + prosemirror-changeset: 2.3.1 + prosemirror-collab: 1.3.1 + prosemirror-commands: 1.7.1 + prosemirror-dropcursor: 1.8.2 + prosemirror-gapcursor: 1.3.2 + prosemirror-history: 1.4.1 + prosemirror-inputrules: 1.5.0 + prosemirror-keymap: 1.2.3 + prosemirror-markdown: 1.13.2 + prosemirror-menu: 1.2.5 + prosemirror-model: 1.25.1 + prosemirror-schema-basic: 1.2.4 + prosemirror-schema-list: 1.5.1 + prosemirror-state: 1.4.3 + prosemirror-tables: 1.7.1 + prosemirror-trailing-node: 3.0.0(prosemirror-model@1.25.1)(prosemirror-state@1.4.3)(prosemirror-view@1.40.0) + prosemirror-transform: 1.10.4 + prosemirror-view: 1.40.0 + + '@tiptap/starter-kit@2.22.3': + dependencies: + '@tiptap/core': 2.22.3(@tiptap/pm@2.22.3) + '@tiptap/extension-blockquote': 2.22.3(@tiptap/core@2.22.3(@tiptap/pm@2.22.3)) + '@tiptap/extension-bold': 2.22.3(@tiptap/core@2.22.3(@tiptap/pm@2.22.3)) + '@tiptap/extension-bullet-list': 2.22.3(@tiptap/core@2.22.3(@tiptap/pm@2.22.3)) + '@tiptap/extension-code': 2.22.3(@tiptap/core@2.22.3(@tiptap/pm@2.22.3)) + '@tiptap/extension-code-block': 2.22.3(@tiptap/core@2.22.3(@tiptap/pm@2.22.3))(@tiptap/pm@2.22.3) + '@tiptap/extension-document': 2.22.3(@tiptap/core@2.22.3(@tiptap/pm@2.22.3)) + '@tiptap/extension-dropcursor': 2.22.3(@tiptap/core@2.22.3(@tiptap/pm@2.22.3))(@tiptap/pm@2.22.3) + '@tiptap/extension-gapcursor': 2.22.3(@tiptap/core@2.22.3(@tiptap/pm@2.22.3))(@tiptap/pm@2.22.3) + '@tiptap/extension-hard-break': 2.22.3(@tiptap/core@2.22.3(@tiptap/pm@2.22.3)) + '@tiptap/extension-heading': 2.22.3(@tiptap/core@2.22.3(@tiptap/pm@2.22.3)) + '@tiptap/extension-history': 2.22.3(@tiptap/core@2.22.3(@tiptap/pm@2.22.3))(@tiptap/pm@2.22.3) + '@tiptap/extension-horizontal-rule': 2.22.3(@tiptap/core@2.22.3(@tiptap/pm@2.22.3))(@tiptap/pm@2.22.3) + '@tiptap/extension-italic': 2.22.3(@tiptap/core@2.22.3(@tiptap/pm@2.22.3)) + '@tiptap/extension-list-item': 2.22.3(@tiptap/core@2.22.3(@tiptap/pm@2.22.3)) + '@tiptap/extension-ordered-list': 2.22.3(@tiptap/core@2.22.3(@tiptap/pm@2.22.3)) + '@tiptap/extension-paragraph': 2.22.3(@tiptap/core@2.22.3(@tiptap/pm@2.22.3)) + '@tiptap/extension-strike': 2.22.3(@tiptap/core@2.22.3(@tiptap/pm@2.22.3)) + '@tiptap/extension-text': 2.22.3(@tiptap/core@2.22.3(@tiptap/pm@2.22.3)) + '@tiptap/extension-text-style': 2.22.3(@tiptap/core@2.22.3(@tiptap/pm@2.22.3)) + '@tiptap/pm': 2.22.3 + + '@tiptap/vue-2@2.22.3(@tiptap/core@2.22.3(@tiptap/pm@2.22.3))(@tiptap/pm@2.22.3)(vue@2.7.16)': + dependencies: + '@tiptap/core': 2.22.3(@tiptap/pm@2.22.3) + '@tiptap/extension-bubble-menu': 2.22.3(@tiptap/core@2.22.3(@tiptap/pm@2.22.3))(@tiptap/pm@2.22.3) + '@tiptap/extension-floating-menu': 2.22.3(@tiptap/core@2.22.3(@tiptap/pm@2.22.3))(@tiptap/pm@2.22.3) + '@tiptap/pm': 2.22.3 + vue: 2.7.16 + vue-ts-types: 1.6.2(vue@2.7.16) + '@toast-ui/editor@2.5.4': dependencies: '@types/codemirror': 0.0.71 @@ -8831,11 +9231,11 @@ snapshots: dependencies: '@babel/parser': 7.27.5 '@babel/types': 7.27.6 - '@types/babel__generator': 7.6.8 + '@types/babel__generator': 7.27.0 '@types/babel__template': 7.4.4 - '@types/babel__traverse': 7.20.6 + '@types/babel__traverse': 7.20.7 - '@types/babel__generator@7.6.8': + '@types/babel__generator@7.27.0': dependencies: '@babel/types': 7.27.6 @@ -8844,18 +9244,18 @@ snapshots: '@babel/parser': 7.27.5 '@babel/types': 7.27.6 - '@types/babel__traverse@7.20.6': + '@types/babel__traverse@7.20.7': dependencies: '@babel/types': 7.27.6 '@types/body-parser@1.19.6': dependencies: '@types/connect': 3.4.38 - '@types/node': 24.0.1 + '@types/node': 24.0.4 '@types/bonjour@3.5.13': dependencies: - '@types/node': 24.0.1 + '@types/node': 24.0.4 '@types/codemirror@0.0.71': dependencies: @@ -8864,29 +9264,29 @@ snapshots: '@types/connect-history-api-fallback@1.5.4': dependencies: '@types/express-serve-static-core': 4.19.6 - '@types/node': 24.0.1 + '@types/node': 24.0.4 '@types/connect@3.4.38': dependencies: - '@types/node': 24.0.1 + '@types/node': 24.0.4 '@types/eslint-scope@3.7.7': dependencies: '@types/eslint': 9.6.1 - '@types/estree': 1.0.7 + '@types/estree': 1.0.8 '@types/eslint@9.6.1': dependencies: - '@types/estree': 1.0.7 + '@types/estree': 1.0.8 '@types/json-schema': 7.0.15 '@types/estree@0.0.39': {} - '@types/estree@1.0.7': {} + '@types/estree@1.0.8': {} '@types/express-serve-static-core@4.19.6': dependencies: - '@types/node': 24.0.1 + '@types/node': 24.0.4 '@types/qs': 6.14.0 '@types/range-parser': 1.2.7 '@types/send': 0.17.5 @@ -8900,13 +9300,13 @@ snapshots: '@types/graceful-fs@4.1.9': dependencies: - '@types/node': 24.0.1 + '@types/node': 24.0.4 '@types/http-errors@2.0.5': {} '@types/http-proxy@1.17.16': dependencies: - '@types/node': 24.0.1 + '@types/node': 24.0.4 '@types/istanbul-lib-coverage@2.0.6': {} @@ -8920,19 +9320,28 @@ snapshots: '@types/jsdom@20.0.1': dependencies: - '@types/node': 22.15.3 + '@types/node': 24.0.4 '@types/tough-cookie': 4.0.5 - parse5: 7.2.1 + parse5: 7.3.0 '@types/json-schema@7.0.15': {} '@types/json5@0.0.29': {} + '@types/linkify-it@5.0.0': {} + '@types/localforage@0.0.34': dependencies: localforage: 1.10.0 - '@types/lodash@4.17.15': {} + '@types/lodash@4.17.18': {} + + '@types/markdown-it@14.1.2': + dependencies: + '@types/linkify-it': 5.0.0 + '@types/mdurl': 2.0.0 + + '@types/mdurl@2.0.0': {} '@types/mime@1.3.5': {} @@ -8940,17 +9349,13 @@ snapshots: '@types/node-forge@1.3.11': dependencies: - '@types/node': 24.0.1 + '@types/node': 24.0.4 '@types/node@10.17.60': {} '@types/node@16.9.1': {} - '@types/node@22.15.3': - dependencies: - undici-types: 6.21.0 - - '@types/node@24.0.1': + '@types/node@24.0.4': dependencies: undici-types: 7.8.0 @@ -8967,7 +9372,7 @@ snapshots: '@types/send@0.17.5': dependencies: '@types/mime': 1.3.5 - '@types/node': 24.0.1 + '@types/node': 24.0.4 '@types/serve-index@1.9.4': dependencies: @@ -8976,12 +9381,12 @@ snapshots: '@types/serve-static@1.15.8': dependencies: '@types/http-errors': 2.0.5 - '@types/node': 24.0.1 + '@types/node': 24.0.4 '@types/send': 0.17.5 '@types/sockjs@0.3.36': dependencies: - '@types/node': 24.0.1 + '@types/node': 24.0.4 '@types/stack-utils@2.0.3': {} @@ -8991,7 +9396,7 @@ snapshots: '@types/tern@0.23.9': dependencies: - '@types/estree': 1.0.7 + '@types/estree': 1.0.8 '@types/tough-cookie@4.0.5': {} @@ -9001,7 +9406,7 @@ snapshots: '@types/ws@8.18.1': dependencies: - '@types/node': 24.0.1 + '@types/node': 24.0.4 '@types/yargs-parser@21.0.3': {} @@ -9009,49 +9414,64 @@ snapshots: dependencies: '@types/yargs-parser': 21.0.3 - '@typescript-eslint/scope-manager@8.25.0': + '@typescript-eslint/project-service@8.35.0(typescript@5.8.3)': + dependencies: + '@typescript-eslint/tsconfig-utils': 8.35.0(typescript@5.8.3) + '@typescript-eslint/types': 8.35.0 + debug: 4.4.1 + typescript: 5.8.3 + transitivePeerDependencies: + - supports-color + + '@typescript-eslint/scope-manager@8.35.0': + dependencies: + '@typescript-eslint/types': 8.35.0 + '@typescript-eslint/visitor-keys': 8.35.0 + + '@typescript-eslint/tsconfig-utils@8.35.0(typescript@5.8.3)': dependencies: - '@typescript-eslint/types': 8.25.0 - '@typescript-eslint/visitor-keys': 8.25.0 + typescript: 5.8.3 - '@typescript-eslint/types@8.25.0': {} + '@typescript-eslint/types@8.35.0': {} - '@typescript-eslint/typescript-estree@8.25.0(typescript@5.7.3)': + '@typescript-eslint/typescript-estree@8.35.0(typescript@5.8.3)': dependencies: - '@typescript-eslint/types': 8.25.0 - '@typescript-eslint/visitor-keys': 8.25.0 + '@typescript-eslint/project-service': 8.35.0(typescript@5.8.3) + '@typescript-eslint/tsconfig-utils': 8.35.0(typescript@5.8.3) + '@typescript-eslint/types': 8.35.0 + '@typescript-eslint/visitor-keys': 8.35.0 debug: 4.4.1 fast-glob: 3.3.3 is-glob: 4.0.3 minimatch: 9.0.5 semver: 7.7.2 - ts-api-utils: 2.0.1(typescript@5.7.3) - typescript: 5.7.3 + ts-api-utils: 2.1.0(typescript@5.8.3) + typescript: 5.8.3 transitivePeerDependencies: - supports-color - '@typescript-eslint/utils@8.25.0(eslint@8.57.1)(typescript@5.7.3)': + '@typescript-eslint/utils@8.35.0(eslint@8.57.1)(typescript@5.8.3)': dependencies: - '@eslint-community/eslint-utils': 4.4.1(eslint@8.57.1) - '@typescript-eslint/scope-manager': 8.25.0 - '@typescript-eslint/types': 8.25.0 - '@typescript-eslint/typescript-estree': 8.25.0(typescript@5.7.3) + '@eslint-community/eslint-utils': 4.7.0(eslint@8.57.1) + '@typescript-eslint/scope-manager': 8.35.0 + '@typescript-eslint/types': 8.35.0 + '@typescript-eslint/typescript-estree': 8.35.0(typescript@5.8.3) eslint: 8.57.1 - typescript: 5.7.3 + typescript: 5.8.3 transitivePeerDependencies: - supports-color - '@typescript-eslint/visitor-keys@8.25.0': + '@typescript-eslint/visitor-keys@8.35.0': dependencies: - '@typescript-eslint/types': 8.25.0 - eslint-visitor-keys: 4.2.0 + '@typescript-eslint/types': 8.35.0 + eslint-visitor-keys: 4.2.1 '@ungap/structured-clone@1.3.0': {} '@vue/compiler-sfc@2.7.16': dependencies: '@babel/parser': 7.27.5 - postcss: 8.5.3 + postcss: 8.5.6 source-map: 0.6.1 optionalDependencies: prettier: 2.8.8 @@ -9255,7 +9675,7 @@ snapshots: abbrev@1.1.1: {} - abbrev@3.0.0: {} + abbrev@2.0.0: {} abort-controller@3.0.0: dependencies: @@ -9277,26 +9697,26 @@ snapshots: acorn-globals@7.0.1: dependencies: - acorn: 8.14.1 + acorn: 8.15.0 acorn-walk: 8.3.4 acorn-jsx@5.3.2(acorn@7.4.1): dependencies: acorn: 7.4.1 - acorn-jsx@5.3.2(acorn@8.14.1): + acorn-jsx@5.3.2(acorn@8.15.0): dependencies: - acorn: 8.14.1 + acorn: 8.15.0 acorn-walk@8.3.4: dependencies: - acorn: 8.14.1 + acorn: 8.15.0 acorn@2.7.0: {} acorn@7.4.1: {} - acorn@8.14.1: {} + acorn@8.15.0: {} agent-base@6.0.2: dependencies: @@ -9402,21 +9822,23 @@ snapshots: array-buffer-byte-length@1.0.2: dependencies: - call-bound: 1.0.3 + call-bound: 1.0.4 is-array-buffer: 3.0.5 array-equal@1.0.2: {} array-flatten@1.1.1: {} - array-includes@3.1.8: + array-includes@3.1.9: dependencies: call-bind: 1.0.8 + call-bound: 1.0.4 define-properties: 1.2.1 - es-abstract: 1.23.9 + es-abstract: 1.24.0 es-object-atoms: 1.1.1 get-intrinsic: 1.3.0 is-string: 1.1.1 + math-intrinsics: 1.1.0 array-union@2.1.0: {} @@ -9424,15 +9846,16 @@ snapshots: dependencies: call-bind: 1.0.8 define-properties: 1.2.1 - es-abstract: 1.23.9 + es-abstract: 1.24.0 es-object-atoms: 1.1.1 es-shim-unscopables: 1.1.0 - array.prototype.findlastindex@1.2.5: + array.prototype.findlastindex@1.2.6: dependencies: call-bind: 1.0.8 + call-bound: 1.0.4 define-properties: 1.2.1 - es-abstract: 1.23.9 + es-abstract: 1.24.0 es-errors: 1.3.0 es-object-atoms: 1.1.1 es-shim-unscopables: 1.1.0 @@ -9441,14 +9864,14 @@ snapshots: dependencies: call-bind: 1.0.8 define-properties: 1.2.1 - es-abstract: 1.23.9 + es-abstract: 1.24.0 es-shim-unscopables: 1.1.0 array.prototype.flatmap@1.3.3: dependencies: call-bind: 1.0.8 define-properties: 1.2.1 - es-abstract: 1.23.9 + es-abstract: 1.24.0 es-shim-unscopables: 1.1.0 arraybuffer.prototype.slice@1.0.4: @@ -9456,7 +9879,7 @@ snapshots: array-buffer-byte-length: 1.0.2 call-bind: 1.0.8 define-properties: 1.2.1 - es-abstract: 1.23.9 + es-abstract: 1.24.0 es-errors: 1.3.0 get-intrinsic: 1.3.0 is-array-buffer: 3.0.5 @@ -9493,14 +9916,14 @@ snapshots: atob@2.1.2: {} - autoprefixer@10.4.21(postcss@8.5.3): + autoprefixer@10.4.21(postcss@8.5.6): dependencies: - browserslist: 4.24.4 - caniuse-lite: 1.0.30001716 + browserslist: 4.25.1 + caniuse-lite: 1.0.30001726 fraction.js: 4.3.7 normalize-range: 0.1.2 picocolors: 1.1.1 - postcss: 8.5.3 + postcss: 8.5.6 postcss-value-parser: 4.2.0 autosize@3.0.21: {} @@ -9576,7 +9999,7 @@ snapshots: '@babel/template': 7.27.2 '@babel/types': 7.27.6 '@types/babel__core': 7.20.5 - '@types/babel__traverse': 7.20.6 + '@types/babel__traverse': 7.20.7 babel-plugin-polyfill-corejs2@0.4.13(@babel/core@7.27.4): dependencies: @@ -9745,12 +10168,12 @@ snapshots: bowser@1.9.4: {} - brace-expansion@1.1.11: + brace-expansion@1.1.12: dependencies: balanced-match: 1.0.2 concat-map: 0.0.1 - brace-expansion@2.0.1: + brace-expansion@2.0.2: dependencies: balanced-match: 1.0.2 @@ -9767,19 +10190,12 @@ snapshots: browserslist-config-kolibri@0.18.0: {} - browserslist@4.24.4: + browserslist@4.25.1: dependencies: - caniuse-lite: 1.0.30001716 - electron-to-chromium: 1.5.104 + caniuse-lite: 1.0.30001726 + electron-to-chromium: 1.5.174 node-releases: 2.0.19 - update-browserslist-db: 1.1.2(browserslist@4.24.4) - - browserslist@4.25.0: - dependencies: - caniuse-lite: 1.0.30001721 - electron-to-chromium: 1.5.166 - node-releases: 2.0.19 - update-browserslist-db: 1.1.3(browserslist@4.25.0) + update-browserslist-db: 1.1.3(browserslist@4.25.1) bser@2.1.1: dependencies: @@ -9865,7 +10281,7 @@ snapshots: get-intrinsic: 1.3.0 set-function-length: 1.2.2 - call-bound@1.0.3: + call-bound@1.0.4: dependencies: call-bind-apply-helpers: 1.0.2 get-intrinsic: 1.3.0 @@ -9891,14 +10307,12 @@ snapshots: caniuse-api@3.0.0: dependencies: - browserslist: 4.25.0 - caniuse-lite: 1.0.30001721 + browserslist: 4.25.1 + caniuse-lite: 1.0.30001726 lodash.memoize: 4.1.2 lodash.uniq: 4.5.0 - caniuse-lite@1.0.30001716: {} - - caniuse-lite@1.0.30001721: {} + caniuse-lite@1.0.30001726: {} canvas-exif-orientation@0.4.0: {} @@ -10117,7 +10531,7 @@ snapshots: core-js-compat@3.43.0: dependencies: - browserslist: 4.25.0 + browserslist: 4.25.1 core-js@2.6.12: {} @@ -10127,33 +10541,33 @@ snapshots: core-util-is@1.0.3: {} - cosmiconfig@8.3.6(typescript@5.7.3): + cosmiconfig@8.3.6(typescript@5.8.3): dependencies: import-fresh: 3.3.1 js-yaml: 4.1.0 parse-json: 5.2.0 path-type: 4.0.0 optionalDependencies: - typescript: 5.7.3 + typescript: 5.8.3 - cosmiconfig@9.0.0(typescript@5.7.3): + cosmiconfig@9.0.0(typescript@5.8.3): dependencies: env-paths: 2.2.1 import-fresh: 3.3.1 js-yaml: 4.1.0 parse-json: 5.2.0 optionalDependencies: - typescript: 5.7.3 + typescript: 5.8.3 crc-32@1.2.2: {} - create-jest@29.7.0(@types/node@22.15.3): + create-jest@29.7.0(@types/node@24.0.4): dependencies: '@jest/types': 29.6.3 chalk: 4.1.2 exit: 0.1.2 graceful-fs: 4.2.11 - jest-config: 29.7.0(@types/node@22.15.3) + jest-config: 29.7.0(@types/node@24.0.4) jest-util: 29.7.0 prompts: 2.4.2 transitivePeerDependencies: @@ -10162,6 +10576,8 @@ snapshots: - supports-color - ts-node + crelt@1.0.6: {} + cross-spawn@6.0.6: dependencies: nice-try: 1.0.5 @@ -10178,9 +10594,9 @@ snapshots: crypto-random-string@2.0.0: {} - css-declaration-sorter@7.2.0(postcss@8.5.3): + css-declaration-sorter@7.2.0(postcss@8.5.6): dependencies: - postcss: 8.5.3 + postcss: 8.5.6 css-element-queries@1.2.0: {} @@ -10197,23 +10613,23 @@ snapshots: css-loader@7.1.2(webpack@5.99.7): dependencies: - icss-utils: 5.1.0(postcss@8.5.3) - postcss: 8.5.3 - postcss-modules-extract-imports: 3.1.0(postcss@8.5.3) - postcss-modules-local-by-default: 4.2.0(postcss@8.5.3) - postcss-modules-scope: 3.2.1(postcss@8.5.3) - postcss-modules-values: 4.0.0(postcss@8.5.3) + icss-utils: 5.1.0(postcss@8.5.6) + postcss: 8.5.6 + postcss-modules-extract-imports: 3.1.0(postcss@8.5.6) + postcss-modules-local-by-default: 4.2.0(postcss@8.5.6) + postcss-modules-scope: 3.2.1(postcss@8.5.6) + postcss-modules-values: 4.0.0(postcss@8.5.6) postcss-value-parser: 4.2.0 - semver: 7.7.1 + semver: 7.7.2 optionalDependencies: webpack: 5.99.7(webpack-cli@6.0.1) css-minimizer-webpack-plugin@7.0.2(webpack@5.99.7): dependencies: '@jridgewell/trace-mapping': 0.3.25 - cssnano: 7.0.6(postcss@8.5.3) + cssnano: 7.0.7(postcss@8.5.6) jest-worker: 29.7.0 - postcss: 8.5.3 + postcss: 8.5.6 schema-utils: 4.3.2 serialize-javascript: 6.0.2 webpack: 5.99.7(webpack-cli@6.0.1) @@ -10254,49 +10670,49 @@ snapshots: cssesc@3.0.0: {} - cssnano-preset-default@7.0.6(postcss@8.5.3): - dependencies: - browserslist: 4.25.0 - css-declaration-sorter: 7.2.0(postcss@8.5.3) - cssnano-utils: 5.0.0(postcss@8.5.3) - postcss: 8.5.3 - postcss-calc: 10.1.1(postcss@8.5.3) - postcss-colormin: 7.0.2(postcss@8.5.3) - postcss-convert-values: 7.0.4(postcss@8.5.3) - postcss-discard-comments: 7.0.3(postcss@8.5.3) - postcss-discard-duplicates: 7.0.1(postcss@8.5.3) - postcss-discard-empty: 7.0.0(postcss@8.5.3) - postcss-discard-overridden: 7.0.0(postcss@8.5.3) - postcss-merge-longhand: 7.0.4(postcss@8.5.3) - postcss-merge-rules: 7.0.4(postcss@8.5.3) - postcss-minify-font-values: 7.0.0(postcss@8.5.3) - postcss-minify-gradients: 7.0.0(postcss@8.5.3) - postcss-minify-params: 7.0.2(postcss@8.5.3) - postcss-minify-selectors: 7.0.4(postcss@8.5.3) - postcss-normalize-charset: 7.0.0(postcss@8.5.3) - postcss-normalize-display-values: 7.0.0(postcss@8.5.3) - postcss-normalize-positions: 7.0.0(postcss@8.5.3) - postcss-normalize-repeat-style: 7.0.0(postcss@8.5.3) - postcss-normalize-string: 7.0.0(postcss@8.5.3) - postcss-normalize-timing-functions: 7.0.0(postcss@8.5.3) - postcss-normalize-unicode: 7.0.2(postcss@8.5.3) - postcss-normalize-url: 7.0.0(postcss@8.5.3) - postcss-normalize-whitespace: 7.0.0(postcss@8.5.3) - postcss-ordered-values: 7.0.1(postcss@8.5.3) - postcss-reduce-initial: 7.0.2(postcss@8.5.3) - postcss-reduce-transforms: 7.0.0(postcss@8.5.3) - postcss-svgo: 7.0.1(postcss@8.5.3) - postcss-unique-selectors: 7.0.3(postcss@8.5.3) - - cssnano-utils@5.0.0(postcss@8.5.3): - dependencies: - postcss: 8.5.3 - - cssnano@7.0.6(postcss@8.5.3): - dependencies: - cssnano-preset-default: 7.0.6(postcss@8.5.3) + cssnano-preset-default@7.0.7(postcss@8.5.6): + dependencies: + browserslist: 4.25.1 + css-declaration-sorter: 7.2.0(postcss@8.5.6) + cssnano-utils: 5.0.1(postcss@8.5.6) + postcss: 8.5.6 + postcss-calc: 10.1.1(postcss@8.5.6) + postcss-colormin: 7.0.3(postcss@8.5.6) + postcss-convert-values: 7.0.5(postcss@8.5.6) + postcss-discard-comments: 7.0.4(postcss@8.5.6) + postcss-discard-duplicates: 7.0.2(postcss@8.5.6) + postcss-discard-empty: 7.0.1(postcss@8.5.6) + postcss-discard-overridden: 7.0.1(postcss@8.5.6) + postcss-merge-longhand: 7.0.5(postcss@8.5.6) + postcss-merge-rules: 7.0.5(postcss@8.5.6) + postcss-minify-font-values: 7.0.1(postcss@8.5.6) + postcss-minify-gradients: 7.0.1(postcss@8.5.6) + postcss-minify-params: 7.0.3(postcss@8.5.6) + postcss-minify-selectors: 7.0.5(postcss@8.5.6) + postcss-normalize-charset: 7.0.1(postcss@8.5.6) + postcss-normalize-display-values: 7.0.1(postcss@8.5.6) + postcss-normalize-positions: 7.0.1(postcss@8.5.6) + postcss-normalize-repeat-style: 7.0.1(postcss@8.5.6) + postcss-normalize-string: 7.0.1(postcss@8.5.6) + postcss-normalize-timing-functions: 7.0.1(postcss@8.5.6) + postcss-normalize-unicode: 7.0.3(postcss@8.5.6) + postcss-normalize-url: 7.0.1(postcss@8.5.6) + postcss-normalize-whitespace: 7.0.1(postcss@8.5.6) + postcss-ordered-values: 7.0.2(postcss@8.5.6) + postcss-reduce-initial: 7.0.3(postcss@8.5.6) + postcss-reduce-transforms: 7.0.1(postcss@8.5.6) + postcss-svgo: 7.0.2(postcss@8.5.6) + postcss-unique-selectors: 7.0.4(postcss@8.5.6) + + cssnano-utils@5.0.1(postcss@8.5.6): + dependencies: + postcss: 8.5.6 + + cssnano@7.0.7(postcss@8.5.6): + dependencies: + cssnano-preset-default: 7.0.7(postcss@8.5.6) lilconfig: 3.1.3 - postcss: 8.5.3 + postcss: 8.5.6 csso@5.0.5: dependencies: @@ -10337,19 +10753,19 @@ snapshots: data-view-buffer@1.0.2: dependencies: - call-bound: 1.0.3 + call-bound: 1.0.4 es-errors: 1.3.0 is-data-view: 1.0.2 data-view-byte-length@1.0.2: dependencies: - call-bound: 1.0.3 + call-bound: 1.0.4 es-errors: 1.3.0 is-data-view: 1.0.2 data-view-byte-offset@1.0.1: dependencies: - call-bound: 1.0.3 + call-bound: 1.0.4 es-errors: 1.3.0 is-data-view: 1.0.2 @@ -10370,10 +10786,6 @@ snapshots: dependencies: ms: 2.1.3 - debug@4.4.0: - dependencies: - ms: 2.1.3 - debug@4.4.1: dependencies: ms: 2.1.3 @@ -10391,7 +10803,7 @@ snapshots: decode-uri-component@0.2.2: {} - dedent@1.5.3: {} + dedent@1.6.0: {} deep-equal@2.2.3: dependencies: @@ -10412,7 +10824,7 @@ snapshots: side-channel: 1.1.0 which-boxed-primitive: 1.1.1 which-collection: 1.0.2 - which-typed-array: 1.1.18 + which-typed-array: 1.1.19 deep-is@0.1.4: {} @@ -10548,9 +10960,7 @@ snapshots: dependencies: jake: 10.9.2 - electron-to-chromium@1.5.104: {} - - electron-to-chromium@1.5.166: {} + electron-to-chromium@1.5.174: {} emittery@0.13.1: {} @@ -10575,10 +10985,10 @@ snapshots: memory-fs: 0.2.0 tapable: 0.1.10 - enhanced-resolve@5.18.1: + enhanced-resolve@5.18.2: dependencies: graceful-fs: 4.2.11 - tapable: 2.2.1 + tapable: 2.2.2 enquirer@2.4.1: dependencies: @@ -10587,6 +10997,8 @@ snapshots: entities@4.5.0: {} + entities@6.0.1: {} + env-paths@2.2.1: {} envinfo@7.14.0: {} @@ -10609,13 +11021,13 @@ snapshots: dependencies: is-arrayish: 0.2.1 - es-abstract@1.23.9: + es-abstract@1.24.0: dependencies: array-buffer-byte-length: 1.0.2 arraybuffer.prototype.slice: 1.0.4 available-typed-arrays: 1.0.7 call-bind: 1.0.8 - call-bound: 1.0.3 + call-bound: 1.0.4 data-view-buffer: 1.0.2 data-view-byte-length: 1.0.2 data-view-byte-offset: 1.0.1 @@ -10638,7 +11050,9 @@ snapshots: is-array-buffer: 3.0.5 is-callable: 1.2.7 is-data-view: 1.0.2 + is-negative-zero: 2.0.3 is-regex: 1.2.1 + is-set: 2.0.3 is-shared-array-buffer: 1.0.4 is-string: 1.1.1 is-typed-array: 1.1.15 @@ -10653,6 +11067,7 @@ snapshots: safe-push-apply: 1.0.0 safe-regex-test: 1.1.0 set-proto: 1.0.0 + stop-iteration-iterator: 1.1.0 string.prototype.trim: 1.2.10 string.prototype.trimend: 1.0.9 string.prototype.trimstart: 1.0.8 @@ -10661,7 +11076,7 @@ snapshots: typed-array-byte-offset: 1.0.4 typed-array-length: 1.0.7 unbox-primitive: 1.1.0 - which-typed-array: 1.1.18 + which-typed-array: 1.1.19 es-define-property@1.0.1: {} @@ -10749,7 +11164,7 @@ snapshots: optionalDependencies: source-map: 0.6.1 - eslint-config-prettier@10.0.2(eslint@8.57.1): + eslint-config-prettier@10.1.5(eslint@8.57.1): dependencies: eslint: 8.57.1 @@ -10761,12 +11176,12 @@ snapshots: transitivePeerDependencies: - supports-color - eslint-import-resolver-webpack@0.13.8(eslint-plugin-import@2.31.0)(webpack@5.99.7): + eslint-import-resolver-webpack@0.13.8(eslint-plugin-import@2.32.0)(webpack@5.99.7): dependencies: array.prototype.find: 2.2.3 debug: 3.2.7 enhanced-resolve: 0.9.1 - eslint-plugin-import: 2.31.0(eslint-import-resolver-webpack@0.13.8)(eslint@8.57.1) + eslint-plugin-import: 2.32.0(eslint-import-resolver-webpack@0.13.8)(eslint@8.57.1) find-root: 1.1.0 hasown: 2.0.2 interpret: 1.4.0 @@ -10779,28 +11194,28 @@ snapshots: transitivePeerDependencies: - supports-color - eslint-module-utils@2.12.0(eslint-import-resolver-node@0.3.9)(eslint-import-resolver-webpack@0.13.8)(eslint@8.57.1): + eslint-module-utils@2.12.1(eslint-import-resolver-node@0.3.9)(eslint-import-resolver-webpack@0.13.8)(eslint@8.57.1): dependencies: debug: 3.2.7 optionalDependencies: eslint: 8.57.1 eslint-import-resolver-node: 0.3.9 - eslint-import-resolver-webpack: 0.13.8(eslint-plugin-import@2.31.0)(webpack@5.99.7) + eslint-import-resolver-webpack: 0.13.8(eslint-plugin-import@2.32.0)(webpack@5.99.7) transitivePeerDependencies: - supports-color - eslint-plugin-import@2.31.0(eslint-import-resolver-webpack@0.13.8)(eslint@8.57.1): + eslint-plugin-import@2.32.0(eslint-import-resolver-webpack@0.13.8)(eslint@8.57.1): dependencies: '@rtsao/scc': 1.1.0 - array-includes: 3.1.8 - array.prototype.findlastindex: 1.2.5 + array-includes: 3.1.9 + array.prototype.findlastindex: 1.2.6 array.prototype.flat: 1.3.3 array.prototype.flatmap: 1.3.3 debug: 3.2.7 doctrine: 2.1.0 eslint: 8.57.1 eslint-import-resolver-node: 0.3.9 - eslint-module-utils: 2.12.0(eslint-import-resolver-node@0.3.9)(eslint-import-resolver-webpack@0.13.8)(eslint@8.57.1) + eslint-module-utils: 2.12.1(eslint-import-resolver-node@0.3.9)(eslint-import-resolver-webpack@0.13.8)(eslint@8.57.1) hasown: 2.0.2 is-core-module: 2.16.1 is-glob: 4.0.3 @@ -10818,18 +11233,18 @@ snapshots: eslint-plugin-jest-dom@5.5.0(@testing-library/dom@9.3.4)(eslint@8.57.1): dependencies: - '@babel/runtime': 7.26.9 + '@babel/runtime': 7.27.6 eslint: 8.57.1 requireindex: 1.2.0 optionalDependencies: '@testing-library/dom': 9.3.4 - eslint-plugin-jest@28.11.0(eslint@8.57.1)(jest@29.7.0(@types/node@22.15.3))(typescript@5.7.3): + eslint-plugin-jest@28.14.0(eslint@8.57.1)(jest@29.7.0(@types/node@24.0.4))(typescript@5.8.3): dependencies: - '@typescript-eslint/utils': 8.25.0(eslint@8.57.1)(typescript@5.7.3) + '@typescript-eslint/utils': 8.35.0(eslint@8.57.1)(typescript@5.8.3) eslint: 8.57.1 optionalDependencies: - jest: 29.7.0(@types/node@22.15.3) + jest: 29.7.0(@types/node@24.0.4) transitivePeerDependencies: - supports-color - typescript @@ -10838,15 +11253,15 @@ snapshots: dependencies: requireindex: 1.2.0 - eslint-plugin-vue@9.32.0(eslint@8.57.1): + eslint-plugin-vue@9.33.0(eslint@8.57.1): dependencies: - '@eslint-community/eslint-utils': 4.4.1(eslint@8.57.1) + '@eslint-community/eslint-utils': 4.7.0(eslint@8.57.1) eslint: 8.57.1 globals: 13.24.0 natural-compare: 1.4.0 nth-check: 2.1.1 postcss-selector-parser: 6.1.2 - semver: 7.7.1 + semver: 7.7.2 vue-eslint-parser: 9.4.3(eslint@8.57.1) xml-name-validator: 4.0.0 transitivePeerDependencies: @@ -10872,7 +11287,7 @@ snapshots: eslint-visitor-keys@3.4.3: {} - eslint-visitor-keys@4.2.0: {} + eslint-visitor-keys@4.2.1: {} eslint@7.32.0: dependencies: @@ -10910,7 +11325,7 @@ snapshots: optionator: 0.9.4 progress: 2.0.3 regexpp: 3.2.0 - semver: 7.7.1 + semver: 7.7.2 strip-ansi: 6.0.1 strip-json-comments: 3.1.1 table: 6.9.0 @@ -10921,7 +11336,7 @@ snapshots: eslint@8.57.1: dependencies: - '@eslint-community/eslint-utils': 4.4.1(eslint@8.57.1) + '@eslint-community/eslint-utils': 4.7.0(eslint@8.57.1) '@eslint-community/regexpp': 4.12.1 '@eslint/eslintrc': 2.1.4 '@eslint/js': 8.57.1 @@ -10932,7 +11347,7 @@ snapshots: ajv: 6.12.6 chalk: 4.1.2 cross-spawn: 7.0.6 - debug: 4.4.0 + debug: 4.4.1 doctrine: 3.0.0 escape-string-regexp: 4.0.0 eslint-scope: 7.2.2 @@ -10977,8 +11392,8 @@ snapshots: espree@9.6.1: dependencies: - acorn: 8.14.1 - acorn-jsx: 5.3.2(acorn@8.14.1) + acorn: 8.15.0 + acorn-jsx: 5.3.2(acorn@8.15.0) eslint-visitor-keys: 3.4.3 esprima@4.0.1: {} @@ -11100,7 +11515,7 @@ snapshots: router: 2.2.0 send: 1.2.0 serve-static: 2.2.0 - statuses: 2.0.1 + statuses: 2.0.2 type-is: 2.0.1 vary: 1.1.2 transitivePeerDependencies: @@ -11142,9 +11557,9 @@ snapshots: fastest-levenshtein@1.0.16: {} - fastq@1.19.0: + fastq@1.19.1: dependencies: - reusify: 1.0.4 + reusify: 1.1.0 faye-websocket@0.11.4: dependencies: @@ -11207,7 +11622,7 @@ snapshots: escape-html: 1.0.3 on-finished: 2.4.1 parseurl: 1.3.3 - statuses: 2.0.1 + statuses: 2.0.2 transitivePeerDependencies: - supports-color @@ -11258,7 +11673,7 @@ snapshots: flatted@3.3.3: {} - flow-parser@0.269.1: {} + flow-parser@0.274.0: {} flush-promises@1.0.2: {} @@ -11322,7 +11737,7 @@ snapshots: function.prototype.name@1.1.8: dependencies: call-bind: 1.0.8 - call-bound: 1.0.3 + call-bound: 1.0.4 define-properties: 1.2.1 functions-have-names: 1.2.3 hasown: 2.0.2 @@ -11381,7 +11796,7 @@ snapshots: get-symbol-description@1.1.0: dependencies: - call-bound: 1.0.3 + call-bound: 1.0.4 es-errors: 1.3.0 get-intrinsic: 1.3.0 @@ -11420,7 +11835,7 @@ snapshots: fs.realpath: 1.0.0 inflight: 1.0.6 inherits: 2.0.4 - minimatch: 3.1.2 + minimatch: 3.0.8 once: 1.4.0 path-is-absolute: 1.0.1 @@ -11560,7 +11975,7 @@ snapshots: dependencies: whatwg-encoding: 2.0.0 - html-entities@2.5.2: {} + html-entities@2.6.0: {} html-escaper@2.0.2: {} @@ -11578,7 +11993,7 @@ snapshots: domutils: 3.2.2 entities: 4.5.0 - http-cache-semantics@4.1.1: {} + http-cache-semantics@4.2.0: {} http-deceiver@1.2.7: {} @@ -11670,9 +12085,9 @@ snapshots: dependencies: safer-buffer: 2.1.2 - icss-utils@5.1.0(postcss@8.5.3): + icss-utils@5.1.0(postcss@8.5.6): dependencies: - postcss: 8.5.3 + postcss: 8.5.6 idb@7.1.1: {} @@ -11771,13 +12186,13 @@ snapshots: is-arguments@1.2.0: dependencies: - call-bound: 1.0.3 + call-bound: 1.0.4 has-tostringtag: 1.0.2 is-array-buffer@3.0.5: dependencies: call-bind: 1.0.8 - call-bound: 1.0.3 + call-bound: 1.0.4 get-intrinsic: 1.3.0 is-arrayish@0.2.1: {} @@ -11787,7 +12202,7 @@ snapshots: is-async-function@2.1.1: dependencies: async-function: 1.0.0 - call-bound: 1.0.3 + call-bound: 1.0.4 get-proto: 1.0.1 has-tostringtag: 1.0.2 safe-regex-test: 1.1.0 @@ -11802,7 +12217,7 @@ snapshots: is-boolean-object@1.2.2: dependencies: - call-bound: 1.0.3 + call-bound: 1.0.4 has-tostringtag: 1.0.2 is-buffer@1.1.6: {} @@ -11815,13 +12230,13 @@ snapshots: is-data-view@1.0.2: dependencies: - call-bound: 1.0.3 + call-bound: 1.0.4 get-intrinsic: 1.3.0 is-typed-array: 1.1.15 is-date-object@1.1.0: dependencies: - call-bound: 1.0.3 + call-bound: 1.0.4 has-tostringtag: 1.0.2 is-docker@3.0.0: {} @@ -11832,7 +12247,7 @@ snapshots: is-finalizationregistry@1.1.1: dependencies: - call-bound: 1.0.3 + call-bound: 1.0.4 is-fullwidth-code-point@3.0.0: {} @@ -11842,7 +12257,7 @@ snapshots: is-generator-function@1.1.0: dependencies: - call-bound: 1.0.3 + call-bound: 1.0.4 get-proto: 1.0.1 has-tostringtag: 1.0.2 safe-regex-test: 1.1.0 @@ -11861,11 +12276,13 @@ snapshots: is-module@1.0.0: {} + is-negative-zero@2.0.3: {} + is-network-error@1.1.0: {} is-number-object@1.1.1: dependencies: - call-bound: 1.0.3 + call-bound: 1.0.4 has-tostringtag: 1.0.2 is-number@7.0.0: {} @@ -11892,7 +12309,7 @@ snapshots: is-regex@1.2.1: dependencies: - call-bound: 1.0.3 + call-bound: 1.0.4 gopd: 1.2.0 has-tostringtag: 1.0.2 hasown: 2.0.2 @@ -11903,24 +12320,24 @@ snapshots: is-shared-array-buffer@1.0.4: dependencies: - call-bound: 1.0.3 + call-bound: 1.0.4 is-stream@2.0.1: {} is-string@1.1.1: dependencies: - call-bound: 1.0.3 + call-bound: 1.0.4 has-tostringtag: 1.0.2 is-symbol@1.1.1: dependencies: - call-bound: 1.0.3 + call-bound: 1.0.4 has-symbols: 1.1.0 safe-regex-test: 1.1.0 is-typed-array@1.1.15: dependencies: - which-typed-array: 1.1.18 + which-typed-array: 1.1.19 is-typedarray@1.0.0: {} @@ -11928,11 +12345,11 @@ snapshots: is-weakref@1.1.1: dependencies: - call-bound: 1.0.3 + call-bound: 1.0.4 is-weakset@2.0.4: dependencies: - call-bound: 1.0.3 + call-bound: 1.0.4 get-intrinsic: 1.3.0 is-whitespace@0.3.0: {} @@ -12019,10 +12436,10 @@ snapshots: '@jest/expect': 29.7.0 '@jest/test-result': 29.7.0 '@jest/types': 29.6.3 - '@types/node': 24.0.1 + '@types/node': 24.0.4 chalk: 4.1.2 co: 4.6.0 - dedent: 1.5.3 + dedent: 1.6.0 is-generator-fn: 2.1.0 jest-each: 29.7.0 jest-matcher-utils: 29.7.0 @@ -12039,16 +12456,16 @@ snapshots: - babel-plugin-macros - supports-color - jest-cli@29.7.0(@types/node@22.15.3): + jest-cli@29.7.0(@types/node@24.0.4): dependencies: '@jest/core': 29.7.0 '@jest/test-result': 29.7.0 '@jest/types': 29.6.3 chalk: 4.1.2 - create-jest: 29.7.0(@types/node@22.15.3) + create-jest: 29.7.0(@types/node@24.0.4) exit: 0.1.2 import-local: 3.2.0 - jest-config: 29.7.0(@types/node@22.15.3) + jest-config: 29.7.0(@types/node@24.0.4) jest-util: 29.7.0 jest-validate: 29.7.0 yargs: 17.7.2 @@ -12058,7 +12475,7 @@ snapshots: - supports-color - ts-node - jest-config@29.7.0(@types/node@22.15.3): + jest-config@29.7.0(@types/node@24.0.4): dependencies: '@babel/core': 7.27.4 '@jest/test-sequencer': 29.7.0 @@ -12083,7 +12500,7 @@ snapshots: slash: 3.0.0 strip-json-comments: 3.1.1 optionalDependencies: - '@types/node': 22.15.3 + '@types/node': 24.0.4 transitivePeerDependencies: - babel-plugin-macros - supports-color @@ -12113,7 +12530,7 @@ snapshots: '@jest/fake-timers': 29.7.0 '@jest/types': 29.6.3 '@types/jsdom': 20.0.1 - '@types/node': 22.15.3 + '@types/node': 24.0.4 jest-mock: 29.7.0 jest-util: 29.7.0 jsdom: 20.0.3 @@ -12127,7 +12544,7 @@ snapshots: '@jest/environment': 29.7.0 '@jest/fake-timers': 29.7.0 '@jest/types': 29.6.3 - '@types/node': 24.0.1 + '@types/node': 24.0.4 jest-mock: 29.7.0 jest-util: 29.7.0 @@ -12137,7 +12554,7 @@ snapshots: dependencies: '@jest/types': 29.6.3 '@types/graceful-fs': 4.1.9 - '@types/node': 24.0.1 + '@types/node': 24.0.4 anymatch: 3.1.3 fb-watchman: 2.0.2 graceful-fs: 4.2.11 @@ -12176,7 +12593,7 @@ snapshots: jest-mock@29.7.0: dependencies: '@jest/types': 29.6.3 - '@types/node': 22.15.3 + '@types/node': 24.0.4 jest-util: 29.7.0 jest-pnp-resolver@1.2.3(jest-resolve@29.7.0): @@ -12211,7 +12628,7 @@ snapshots: '@jest/test-result': 29.7.0 '@jest/transform': 29.7.0 '@jest/types': 29.6.3 - '@types/node': 22.15.3 + '@types/node': 24.0.4 chalk: 4.1.2 emittery: 0.13.1 graceful-fs: 4.2.11 @@ -12239,7 +12656,7 @@ snapshots: '@jest/test-result': 29.7.0 '@jest/transform': 29.7.0 '@jest/types': 29.6.3 - '@types/node': 22.15.3 + '@types/node': 24.0.4 chalk: 4.1.2 cjs-module-lexer: 1.4.3 collect-v8-coverage: 1.0.2 @@ -12265,8 +12682,8 @@ snapshots: dependencies: '@babel/core': 7.27.4 '@babel/generator': 7.27.5 - '@babel/plugin-syntax-jsx': 7.25.9(@babel/core@7.27.4) - '@babel/plugin-syntax-typescript': 7.25.9(@babel/core@7.27.4) + '@babel/plugin-syntax-jsx': 7.27.1(@babel/core@7.27.4) + '@babel/plugin-syntax-typescript': 7.27.1(@babel/core@7.27.4) '@babel/types': 7.27.6 '@jest/expect-utils': 29.7.0 '@jest/transform': 29.7.0 @@ -12289,7 +12706,7 @@ snapshots: jest-util@29.7.0: dependencies: '@jest/types': 29.6.3 - '@types/node': 22.15.3 + '@types/node': 24.0.4 chalk: 4.1.2 ci-info: 3.9.0 graceful-fs: 4.2.11 @@ -12308,7 +12725,7 @@ snapshots: dependencies: '@jest/test-result': 29.7.0 '@jest/types': 29.6.3 - '@types/node': 22.15.3 + '@types/node': 24.0.4 ansi-escapes: 4.3.2 chalk: 4.1.2 emittery: 0.13.1 @@ -12317,23 +12734,23 @@ snapshots: jest-worker@27.5.1: dependencies: - '@types/node': 24.0.1 + '@types/node': 24.0.4 merge-stream: 2.0.0 supports-color: 8.1.1 jest-worker@29.7.0: dependencies: - '@types/node': 24.0.1 + '@types/node': 24.0.4 jest-util: 29.7.0 merge-stream: 2.0.0 supports-color: 8.1.1 - jest@29.7.0(@types/node@22.15.3): + jest@29.7.0(@types/node@24.0.4): dependencies: '@jest/core': 29.7.0 '@jest/types': 29.6.3 import-local: 3.2.0 - jest-cli: 29.7.0(@types/node@22.15.3) + jest-cli: 29.7.0(@types/node@24.0.4) transitivePeerDependencies: - '@types/node' - babel-plugin-macros @@ -12348,13 +12765,13 @@ snapshots: js-base64@2.6.4: {} - js-beautify@1.15.3: + js-beautify@1.15.4: dependencies: config-chain: 1.1.13 editorconfig: 1.0.4 glob: 10.4.5 js-cookie: 3.0.5 - nopt: 8.1.0 + nopt: 7.2.1 js-cookie@3.0.5: {} @@ -12386,10 +12803,10 @@ snapshots: '@babel/plugin-transform-nullish-coalescing-operator': 7.27.1(@babel/core@7.27.4) '@babel/plugin-transform-optional-chaining': 7.27.1(@babel/core@7.27.4) '@babel/plugin-transform-private-methods': 7.27.1(@babel/core@7.27.4) - '@babel/preset-flow': 7.25.9(@babel/core@7.27.4) - '@babel/preset-typescript': 7.27.0(@babel/core@7.27.4) - '@babel/register': 7.25.9(@babel/core@7.27.4) - flow-parser: 0.269.1 + '@babel/preset-flow': 7.27.1(@babel/core@7.27.4) + '@babel/preset-typescript': 7.27.1(@babel/core@7.27.4) + '@babel/register': 7.27.1(@babel/core@7.27.4) + flow-parser: 0.274.0 graceful-fs: 4.2.11 micromatch: 4.0.8 neo-async: 2.6.2 @@ -12405,7 +12822,7 @@ snapshots: jsdom@20.0.3: dependencies: abab: 2.0.6 - acorn: 8.14.1 + acorn: 8.15.0 acorn-globals: 7.0.1 cssom: 0.5.0 cssstyle: 2.3.0 @@ -12418,8 +12835,8 @@ snapshots: http-proxy-agent: 5.0.0 https-proxy-agent: 5.0.1 is-potential-custom-element-name: 1.0.1 - nwsapi: 2.2.16 - parse5: 7.2.1 + nwsapi: 2.2.20 + parse5: 7.3.0 saxes: 6.0.0 symbol-tree: 3.2.4 tough-cookie: 4.1.4 @@ -12528,7 +12945,9 @@ snapshots: known-css-properties@0.29.0: {} - known-css-properties@0.35.0: {} + known-css-properties@0.36.0: {} + + kolibri-constants@0.2.11: {} kolibri-constants@0.2.12: {} @@ -12572,33 +12991,33 @@ snapshots: vue2-teleport: 1.1.4 xstate: 4.38.3 - kolibri-format@1.0.1(@testing-library/dom@9.3.4)(eslint-import-resolver-webpack@0.13.8)(jest@29.7.0(@types/node@22.15.3))(postcss@8.5.3)(typescript@5.7.3): + kolibri-format@1.0.1(@testing-library/dom@9.3.4)(eslint-import-resolver-webpack@0.13.8)(jest@29.7.0(@types/node@24.0.4))(postcss@8.5.6)(typescript@5.8.3): dependencies: chalk: 4.1.2 commander: 13.1.0 eslint: 8.57.1 - eslint-config-prettier: 10.0.2(eslint@8.57.1) - eslint-plugin-import: 2.31.0(eslint-import-resolver-webpack@0.13.8)(eslint@8.57.1) - eslint-plugin-jest: 28.11.0(eslint@8.57.1)(jest@29.7.0(@types/node@22.15.3))(typescript@5.7.3) + eslint-config-prettier: 10.1.5(eslint@8.57.1) + eslint-plugin-import: 2.32.0(eslint-import-resolver-webpack@0.13.8)(eslint@8.57.1) + eslint-plugin-jest: 28.14.0(eslint@8.57.1)(jest@29.7.0(@types/node@24.0.4))(typescript@5.8.3) eslint-plugin-jest-dom: 5.5.0(@testing-library/dom@9.3.4)(eslint@8.57.1) eslint-plugin-kolibri: 0.18.0 - eslint-plugin-vue: 9.32.0(eslint@8.57.1) + eslint-plugin-vue: 9.33.0(eslint@8.57.1) fast-glob: 3.3.3 kolibri-logging: 1.0.0 postcss-html: 1.8.0 - postcss-less: 6.0.0(postcss@8.5.3) + postcss-less: 6.0.0(postcss@8.5.6) postcss-sass: 0.5.0 - postcss-scss: 4.0.9(postcss@8.5.3) - prettier: 3.5.3 - stylelint: 15.11.0(typescript@5.7.3) - stylelint-config-html: 1.1.0(postcss-html@1.8.0)(stylelint@15.11.0(typescript@5.7.3)) - stylelint-config-prettier: 9.0.5(stylelint@15.11.0(typescript@5.7.3)) - stylelint-config-recess-order: 4.6.0(stylelint@15.11.0(typescript@5.7.3)) - stylelint-config-recommended-scss: 14.1.0(postcss@8.5.3)(stylelint@15.11.0(typescript@5.7.3)) - stylelint-config-sass-guidelines: 11.1.0(postcss@8.5.3)(stylelint@15.11.0(typescript@5.7.3)) - stylelint-config-standard: 34.0.0(stylelint@15.11.0(typescript@5.7.3)) - stylelint-csstree-validator: 3.0.0(stylelint@15.11.0(typescript@5.7.3)) - stylelint-scss: 5.3.2(stylelint@15.11.0(typescript@5.7.3)) + postcss-scss: 4.0.9(postcss@8.5.6) + prettier: 3.6.1 + stylelint: 15.11.0(typescript@5.8.3) + stylelint-config-html: 1.1.0(postcss-html@1.8.0)(stylelint@15.11.0(typescript@5.8.3)) + stylelint-config-prettier: 9.0.5(stylelint@15.11.0(typescript@5.8.3)) + stylelint-config-recess-order: 4.6.0(stylelint@15.11.0(typescript@5.8.3)) + stylelint-config-recommended-scss: 14.1.0(postcss@8.5.6)(stylelint@15.11.0(typescript@5.8.3)) + stylelint-config-sass-guidelines: 11.1.0(postcss@8.5.6)(stylelint@15.11.0(typescript@5.8.3)) + stylelint-config-standard: 34.0.0(stylelint@15.11.0(typescript@5.8.3)) + stylelint-csstree-validator: 3.0.0(stylelint@15.11.0(typescript@5.8.3)) + stylelint-scss: 5.3.2(stylelint@15.11.0(typescript@5.8.3)) transitivePeerDependencies: - '@testing-library/dom' - '@typescript-eslint/eslint-plugin' @@ -12615,7 +13034,7 @@ snapshots: chalk: 4.1.2 loglevel: 1.9.2 - kolibri-tools@0.18.2(@testing-library/dom@9.3.4)(@types/node@22.15.3)(ejs@3.1.10)(eslint-import-resolver-webpack@0.13.8)(file-loader@6.2.0(webpack@5.99.7))(postcss@8.5.3)(typescript@5.7.3)(vue@2.7.16): + kolibri-tools@0.18.2(@testing-library/dom@9.3.4)(@types/node@24.0.4)(ejs@3.1.10)(eslint-import-resolver-webpack@0.13.8)(file-loader@6.2.0(webpack@5.99.7))(postcss@8.5.6)(typescript@5.8.3)(vue@2.7.16): dependencies: '@babel/core': 7.27.4 '@babel/plugin-syntax-import-assertions': 7.27.1(@babel/core@7.27.4) @@ -12627,7 +13046,7 @@ snapshots: '@testing-library/vue': 5.9.0(vue-template-compiler@2.7.16)(vue@2.7.16) '@vue/test-utils': 1.3.6(vue-template-compiler@2.7.16)(vue@2.7.16) ast-traverse: 0.1.1 - autoprefixer: 10.4.21(postcss@8.5.3) + autoprefixer: 10.4.21(postcss@8.5.6) babel-core: 7.0.0-bridge.0(@babel/core@7.27.4) babel-jest: 29.7.0(@babel/core@7.27.4) babel-loader: 10.0.0(@babel/core@7.27.4)(webpack@5.99.7) @@ -12642,21 +13061,21 @@ snapshots: csv-parse: 5.6.0 csv-writer: 1.6.0 del: 6.1.1 - enhanced-resolve: 5.18.1 + enhanced-resolve: 5.18.2 express: 5.1.0 fast-glob: 3.3.3 ini: 5.0.0 - jest: 29.7.0(@types/node@22.15.3) + jest: 29.7.0(@types/node@24.0.4) jest-environment-jsdom: 29.7.0 jest-serializer-vue: 3.1.0 jscodeshift: 17.3.0(@babel/preset-env@7.27.2(@babel/core@7.27.4)) kolibri: 0.18.0 - kolibri-format: 1.0.1(@testing-library/dom@9.3.4)(eslint-import-resolver-webpack@0.13.8)(jest@29.7.0(@types/node@22.15.3))(postcss@8.5.3)(typescript@5.7.3) + kolibri-format: 1.0.1(@testing-library/dom@9.3.4)(eslint-import-resolver-webpack@0.13.8)(jest@29.7.0(@types/node@24.0.4))(postcss@8.5.6)(typescript@5.8.3) launch-editor-middleware: 2.10.0 lodash: 4.17.21 mini-css-extract-plugin: 2.9.2(webpack@5.99.7) node-sass: 9.0.0 - postcss-loader: 8.1.1(postcss@8.5.3)(typescript@5.7.3)(webpack@5.99.7) + postcss-loader: 8.1.1(postcss@8.5.6)(typescript@5.8.3)(webpack@5.99.7) process: 0.11.10 query-ast: 1.0.5 readline-sync: 1.4.10 @@ -12664,7 +13083,7 @@ snapshots: rewire: 6.0.0 rtlcss: 4.3.0 sass-loader: 16.0.5(node-sass@9.0.0)(webpack@5.99.7) - semver: 7.7.1 + semver: 7.7.2 strip-ansi: 6.0.1 style-loader: 4.0.0(webpack@5.99.7) temp: 0.8.4 @@ -12823,6 +13242,10 @@ snapshots: lines-and-columns@1.2.4: {} + linkify-it@5.0.0: + dependencies: + uc.micro: 2.1.0 + load-bmfont@1.4.2: dependencies: buffer-equal: 0.0.1 @@ -12944,7 +13367,7 @@ snapshots: dependencies: agentkeepalive: 4.6.0 cacache: 16.1.3 - http-cache-semantics: 4.1.1 + http-cache-semantics: 4.2.0 http-proxy-agent: 5.0.0 https-proxy-agent: 5.0.1 is-lambda: 1.0.1 @@ -12966,7 +13389,7 @@ snapshots: dependencies: agentkeepalive: 4.6.0 cacache: 15.3.0 - http-cache-semantics: 4.1.1 + http-cache-semantics: 4.2.0 http-proxy-agent: 4.0.1 https-proxy-agent: 5.0.1 is-lambda: 1.0.1 @@ -12994,6 +13417,15 @@ snapshots: map-values@1.0.1: {} + markdown-it@14.1.0: + dependencies: + argparse: 2.0.1 + entities: 4.5.0 + linkify-it: 5.0.0 + mdurl: 2.0.0 + punycode.js: 2.3.1 + uc.micro: 2.1.0 + marks-pane@1.0.9: {} material-icons@0.3.1: {} @@ -13008,7 +13440,9 @@ snapshots: mdn-data@2.12.2: {} - mdn-data@2.16.0: {} + mdn-data@2.21.0: {} + + mdurl@2.0.0: {} media-typer@0.3.0: {} @@ -13099,30 +13533,30 @@ snapshots: mini-css-extract-plugin@2.9.2(webpack@5.99.7): dependencies: schema-utils: 4.3.2 - tapable: 2.2.1 + tapable: 2.2.2 webpack: 5.99.7(webpack-cli@6.0.1) minimalistic-assert@1.0.1: {} minimatch@3.0.8: dependencies: - brace-expansion: 1.1.11 + brace-expansion: 1.1.12 minimatch@3.1.2: dependencies: - brace-expansion: 1.1.11 + brace-expansion: 1.1.12 minimatch@5.1.6: dependencies: - brace-expansion: 2.0.1 + brace-expansion: 2.0.2 minimatch@9.0.1: dependencies: - brace-expansion: 2.0.1 + brace-expansion: 2.0.2 minimatch@9.0.5: dependencies: - brace-expansion: 2.0.1 + brace-expansion: 2.0.2 minimist-options@4.1.0: dependencies: @@ -13194,9 +13628,9 @@ snapshots: mutex-js@1.1.5: {} - nan@2.22.1: {} + nan@2.22.2: {} - nanoid@3.3.8: {} + nanoid@3.3.11: {} natural-compare@1.4.0: {} @@ -13257,7 +13691,7 @@ snapshots: lodash: 4.17.21 make-fetch-happen: 10.2.1 meow: 9.0.0 - nan: 2.22.1 + nan: 2.22.2 node-gyp: 8.4.1 sass-graph: 4.0.1 stdout-stream: 1.4.1 @@ -13271,7 +13705,7 @@ snapshots: '@jimp/custom': 0.16.13 '@jimp/plugin-resize': 0.16.13(@jimp/custom@0.16.13) '@jimp/types': 0.16.13(@jimp/custom@0.16.13) - '@types/lodash': 4.17.15 + '@types/lodash': 4.17.18 '@types/node': 10.17.60 lodash: 4.17.21 url: 0.11.4 @@ -13282,9 +13716,9 @@ snapshots: dependencies: abbrev: 1.1.1 - nopt@8.1.0: + nopt@7.2.1: dependencies: - abbrev: 3.0.0 + abbrev: 2.0.0 normalize-package-data@2.5.0: dependencies: @@ -13313,7 +13747,7 @@ snapshots: minimatch: 3.1.2 pidtree: 0.3.1 read-pkg: 3.0.0 - shell-quote: 1.8.2 + shell-quote: 1.8.3 string.prototype.padend: 3.1.6 npm-run-path@4.0.1: @@ -13333,7 +13767,7 @@ snapshots: nwmatcher@1.4.4: {} - nwsapi@2.2.16: {} + nwsapi@2.2.20: {} oauth-sign@0.9.0: {} @@ -13353,7 +13787,7 @@ snapshots: object.assign@4.1.7: dependencies: call-bind: 1.0.8 - call-bound: 1.0.3 + call-bound: 1.0.4 define-properties: 1.2.1 es-object-atoms: 1.1.1 has-symbols: 1.1.0 @@ -13363,19 +13797,19 @@ snapshots: dependencies: call-bind: 1.0.8 define-properties: 1.2.1 - es-abstract: 1.23.9 + es-abstract: 1.24.0 es-object-atoms: 1.1.1 object.groupby@1.0.3: dependencies: call-bind: 1.0.8 define-properties: 1.2.1 - es-abstract: 1.23.9 + es-abstract: 1.24.0 object.values@1.2.1: dependencies: call-bind: 1.0.8 - call-bound: 1.0.3 + call-bound: 1.0.4 define-properties: 1.2.1 es-object-atoms: 1.1.1 @@ -13426,6 +13860,8 @@ snapshots: type-check: 0.4.0 word-wrap: 1.2.5 + orderedmap@2.1.1: {} + own-keys@1.0.1: dependencies: get-intrinsic: 1.3.0 @@ -13444,7 +13880,7 @@ snapshots: p-limit@4.0.0: dependencies: - yocto-queue: 1.1.1 + yocto-queue: 1.2.1 p-locate@3.0.0: dependencies: @@ -13489,7 +13925,7 @@ snapshots: pako@2.1.0: {} - papaparse@5.5.2: {} + papaparse@5.5.3: {} parent-module@1.0.1: dependencies: @@ -13504,7 +13940,7 @@ snapshots: xml-parse-from-string: 1.0.1 xml2js: 0.5.0 - parse-headers@2.0.5: {} + parse-headers@2.0.6: {} parse-json@4.0.0: dependencies: @@ -13520,9 +13956,9 @@ snapshots: parse5@1.5.1: {} - parse5@7.2.1: + parse5@7.3.0: dependencies: - entities: 4.5.0 + entities: 6.0.1 parseurl@1.3.3: {} @@ -13616,60 +14052,60 @@ snapshots: possible-typed-array-names@1.1.0: {} - postcss-calc@10.1.1(postcss@8.5.3): + postcss-calc@10.1.1(postcss@8.5.6): dependencies: - postcss: 8.5.3 + postcss: 8.5.6 postcss-selector-parser: 7.1.0 postcss-value-parser: 4.2.0 - postcss-colormin@7.0.2(postcss@8.5.3): + postcss-colormin@7.0.3(postcss@8.5.6): dependencies: - browserslist: 4.25.0 + browserslist: 4.25.1 caniuse-api: 3.0.0 colord: 2.9.3 - postcss: 8.5.3 + postcss: 8.5.6 postcss-value-parser: 4.2.0 - postcss-convert-values@7.0.4(postcss@8.5.3): + postcss-convert-values@7.0.5(postcss@8.5.6): dependencies: - browserslist: 4.25.0 - postcss: 8.5.3 + browserslist: 4.25.1 + postcss: 8.5.6 postcss-value-parser: 4.2.0 - postcss-discard-comments@7.0.3(postcss@8.5.3): + postcss-discard-comments@7.0.4(postcss@8.5.6): dependencies: - postcss: 8.5.3 - postcss-selector-parser: 6.1.2 + postcss: 8.5.6 + postcss-selector-parser: 7.1.0 - postcss-discard-duplicates@7.0.1(postcss@8.5.3): + postcss-discard-duplicates@7.0.2(postcss@8.5.6): dependencies: - postcss: 8.5.3 + postcss: 8.5.6 - postcss-discard-empty@7.0.0(postcss@8.5.3): + postcss-discard-empty@7.0.1(postcss@8.5.6): dependencies: - postcss: 8.5.3 + postcss: 8.5.6 - postcss-discard-overridden@7.0.0(postcss@8.5.3): + postcss-discard-overridden@7.0.1(postcss@8.5.6): dependencies: - postcss: 8.5.3 + postcss: 8.5.6 postcss-html@1.8.0: dependencies: htmlparser2: 8.0.2 js-tokens: 9.0.1 - postcss: 8.5.3 - postcss-safe-parser: 6.0.0(postcss@8.5.3) + postcss: 8.5.6 + postcss-safe-parser: 6.0.0(postcss@8.5.6) - postcss-less@6.0.0(postcss@8.5.3): + postcss-less@6.0.0(postcss@8.5.6): dependencies: - postcss: 8.5.3 + postcss: 8.5.6 - postcss-loader@8.1.1(postcss@8.5.3)(typescript@5.7.3)(webpack@5.99.7): + postcss-loader@8.1.1(postcss@8.5.6)(typescript@5.8.3)(webpack@5.99.7): dependencies: - cosmiconfig: 9.0.0(typescript@5.7.3) + cosmiconfig: 9.0.0(typescript@5.8.3) jiti: 1.21.7 - postcss: 8.5.3 - semver: 7.7.1 + postcss: 8.5.6 + semver: 7.7.2 optionalDependencies: webpack: 5.99.7(webpack-cli@6.0.1) transitivePeerDependencies: @@ -13677,142 +14113,142 @@ snapshots: postcss-media-query-parser@0.2.3: {} - postcss-merge-longhand@7.0.4(postcss@8.5.3): + postcss-merge-longhand@7.0.5(postcss@8.5.6): dependencies: - postcss: 8.5.3 + postcss: 8.5.6 postcss-value-parser: 4.2.0 - stylehacks: 7.0.4(postcss@8.5.3) + stylehacks: 7.0.5(postcss@8.5.6) - postcss-merge-rules@7.0.4(postcss@8.5.3): + postcss-merge-rules@7.0.5(postcss@8.5.6): dependencies: - browserslist: 4.25.0 + browserslist: 4.25.1 caniuse-api: 3.0.0 - cssnano-utils: 5.0.0(postcss@8.5.3) - postcss: 8.5.3 - postcss-selector-parser: 6.1.2 + cssnano-utils: 5.0.1(postcss@8.5.6) + postcss: 8.5.6 + postcss-selector-parser: 7.1.0 - postcss-minify-font-values@7.0.0(postcss@8.5.3): + postcss-minify-font-values@7.0.1(postcss@8.5.6): dependencies: - postcss: 8.5.3 + postcss: 8.5.6 postcss-value-parser: 4.2.0 - postcss-minify-gradients@7.0.0(postcss@8.5.3): + postcss-minify-gradients@7.0.1(postcss@8.5.6): dependencies: colord: 2.9.3 - cssnano-utils: 5.0.0(postcss@8.5.3) - postcss: 8.5.3 + cssnano-utils: 5.0.1(postcss@8.5.6) + postcss: 8.5.6 postcss-value-parser: 4.2.0 - postcss-minify-params@7.0.2(postcss@8.5.3): + postcss-minify-params@7.0.3(postcss@8.5.6): dependencies: - browserslist: 4.25.0 - cssnano-utils: 5.0.0(postcss@8.5.3) - postcss: 8.5.3 + browserslist: 4.25.1 + cssnano-utils: 5.0.1(postcss@8.5.6) + postcss: 8.5.6 postcss-value-parser: 4.2.0 - postcss-minify-selectors@7.0.4(postcss@8.5.3): + postcss-minify-selectors@7.0.5(postcss@8.5.6): dependencies: cssesc: 3.0.0 - postcss: 8.5.3 - postcss-selector-parser: 6.1.2 + postcss: 8.5.6 + postcss-selector-parser: 7.1.0 - postcss-modules-extract-imports@3.1.0(postcss@8.5.3): + postcss-modules-extract-imports@3.1.0(postcss@8.5.6): dependencies: - postcss: 8.5.3 + postcss: 8.5.6 - postcss-modules-local-by-default@4.2.0(postcss@8.5.3): + postcss-modules-local-by-default@4.2.0(postcss@8.5.6): dependencies: - icss-utils: 5.1.0(postcss@8.5.3) - postcss: 8.5.3 + icss-utils: 5.1.0(postcss@8.5.6) + postcss: 8.5.6 postcss-selector-parser: 7.1.0 postcss-value-parser: 4.2.0 - postcss-modules-scope@3.2.1(postcss@8.5.3): + postcss-modules-scope@3.2.1(postcss@8.5.6): dependencies: - postcss: 8.5.3 + postcss: 8.5.6 postcss-selector-parser: 7.1.0 - postcss-modules-values@4.0.0(postcss@8.5.3): + postcss-modules-values@4.0.0(postcss@8.5.6): dependencies: - icss-utils: 5.1.0(postcss@8.5.3) - postcss: 8.5.3 + icss-utils: 5.1.0(postcss@8.5.6) + postcss: 8.5.6 - postcss-normalize-charset@7.0.0(postcss@8.5.3): + postcss-normalize-charset@7.0.1(postcss@8.5.6): dependencies: - postcss: 8.5.3 + postcss: 8.5.6 - postcss-normalize-display-values@7.0.0(postcss@8.5.3): + postcss-normalize-display-values@7.0.1(postcss@8.5.6): dependencies: - postcss: 8.5.3 + postcss: 8.5.6 postcss-value-parser: 4.2.0 - postcss-normalize-positions@7.0.0(postcss@8.5.3): + postcss-normalize-positions@7.0.1(postcss@8.5.6): dependencies: - postcss: 8.5.3 + postcss: 8.5.6 postcss-value-parser: 4.2.0 - postcss-normalize-repeat-style@7.0.0(postcss@8.5.3): + postcss-normalize-repeat-style@7.0.1(postcss@8.5.6): dependencies: - postcss: 8.5.3 + postcss: 8.5.6 postcss-value-parser: 4.2.0 - postcss-normalize-string@7.0.0(postcss@8.5.3): + postcss-normalize-string@7.0.1(postcss@8.5.6): dependencies: - postcss: 8.5.3 + postcss: 8.5.6 postcss-value-parser: 4.2.0 - postcss-normalize-timing-functions@7.0.0(postcss@8.5.3): + postcss-normalize-timing-functions@7.0.1(postcss@8.5.6): dependencies: - postcss: 8.5.3 + postcss: 8.5.6 postcss-value-parser: 4.2.0 - postcss-normalize-unicode@7.0.2(postcss@8.5.3): + postcss-normalize-unicode@7.0.3(postcss@8.5.6): dependencies: - browserslist: 4.25.0 - postcss: 8.5.3 + browserslist: 4.25.1 + postcss: 8.5.6 postcss-value-parser: 4.2.0 - postcss-normalize-url@7.0.0(postcss@8.5.3): + postcss-normalize-url@7.0.1(postcss@8.5.6): dependencies: - postcss: 8.5.3 + postcss: 8.5.6 postcss-value-parser: 4.2.0 - postcss-normalize-whitespace@7.0.0(postcss@8.5.3): + postcss-normalize-whitespace@7.0.1(postcss@8.5.6): dependencies: - postcss: 8.5.3 + postcss: 8.5.6 postcss-value-parser: 4.2.0 - postcss-ordered-values@7.0.1(postcss@8.5.3): + postcss-ordered-values@7.0.2(postcss@8.5.6): dependencies: - cssnano-utils: 5.0.0(postcss@8.5.3) - postcss: 8.5.3 + cssnano-utils: 5.0.1(postcss@8.5.6) + postcss: 8.5.6 postcss-value-parser: 4.2.0 - postcss-reduce-initial@7.0.2(postcss@8.5.3): + postcss-reduce-initial@7.0.3(postcss@8.5.6): dependencies: - browserslist: 4.25.0 + browserslist: 4.25.1 caniuse-api: 3.0.0 - postcss: 8.5.3 + postcss: 8.5.6 - postcss-reduce-transforms@7.0.0(postcss@8.5.3): + postcss-reduce-transforms@7.0.1(postcss@8.5.6): dependencies: - postcss: 8.5.3 + postcss: 8.5.6 postcss-value-parser: 4.2.0 postcss-resolve-nested-selector@0.1.6: {} - postcss-safe-parser@6.0.0(postcss@8.5.3): + postcss-safe-parser@6.0.0(postcss@8.5.6): dependencies: - postcss: 8.5.3 + postcss: 8.5.6 postcss-sass@0.5.0: dependencies: gonzales-pe: 4.3.0 - postcss: 8.5.3 + postcss: 8.5.6 - postcss-scss@4.0.9(postcss@8.5.3): + postcss-scss@4.0.9(postcss@8.5.6): dependencies: - postcss: 8.5.3 + postcss: 8.5.6 postcss-selector-parser@6.1.2: dependencies: @@ -13824,20 +14260,20 @@ snapshots: cssesc: 3.0.0 util-deprecate: 1.0.2 - postcss-sorting@8.0.2(postcss@8.5.3): + postcss-sorting@8.0.2(postcss@8.5.6): dependencies: - postcss: 8.5.3 + postcss: 8.5.6 - postcss-svgo@7.0.1(postcss@8.5.3): + postcss-svgo@7.0.2(postcss@8.5.6): dependencies: - postcss: 8.5.3 + postcss: 8.5.6 postcss-value-parser: 4.2.0 svgo: 3.3.2 - postcss-unique-selectors@7.0.3(postcss@8.5.3): + postcss-unique-selectors@7.0.4(postcss@8.5.6): dependencies: - postcss: 8.5.3 - postcss-selector-parser: 6.1.2 + postcss: 8.5.6 + postcss-selector-parser: 7.1.0 postcss-value-parser@4.2.0: {} @@ -13846,9 +14282,9 @@ snapshots: picocolors: 0.2.1 source-map: 0.6.1 - postcss@8.5.3: + postcss@8.5.6: dependencies: - nanoid: 3.3.8 + nanoid: 3.3.11 picocolors: 1.1.1 source-map-js: 1.2.1 @@ -13859,7 +14295,7 @@ snapshots: prettier@2.8.8: optional: true - prettier@3.5.3: {} + prettier@3.6.1: {} pretty-bytes@5.6.0: {} @@ -13879,7 +14315,7 @@ snapshots: dependencies: condense-newlines: 0.2.1 extend-shallow: 2.0.1 - js-beautify: 1.15.3 + js-beautify: 1.15.4 process-nextick-args@2.0.1: {} @@ -13899,6 +14335,109 @@ snapshots: kleur: 3.0.3 sisteransi: 1.0.5 + prosemirror-changeset@2.3.1: + dependencies: + prosemirror-transform: 1.10.4 + + prosemirror-collab@1.3.1: + dependencies: + prosemirror-state: 1.4.3 + + prosemirror-commands@1.7.1: + dependencies: + prosemirror-model: 1.25.1 + prosemirror-state: 1.4.3 + prosemirror-transform: 1.10.4 + + prosemirror-dropcursor@1.8.2: + dependencies: + prosemirror-state: 1.4.3 + prosemirror-transform: 1.10.4 + prosemirror-view: 1.40.0 + + prosemirror-gapcursor@1.3.2: + dependencies: + prosemirror-keymap: 1.2.3 + prosemirror-model: 1.25.1 + prosemirror-state: 1.4.3 + prosemirror-view: 1.40.0 + + prosemirror-history@1.4.1: + dependencies: + prosemirror-state: 1.4.3 + prosemirror-transform: 1.10.4 + prosemirror-view: 1.40.0 + rope-sequence: 1.3.4 + + prosemirror-inputrules@1.5.0: + dependencies: + prosemirror-state: 1.4.3 + prosemirror-transform: 1.10.4 + + prosemirror-keymap@1.2.3: + dependencies: + prosemirror-state: 1.4.3 + w3c-keyname: 2.2.8 + + prosemirror-markdown@1.13.2: + dependencies: + '@types/markdown-it': 14.1.2 + markdown-it: 14.1.0 + prosemirror-model: 1.25.1 + + prosemirror-menu@1.2.5: + dependencies: + crelt: 1.0.6 + prosemirror-commands: 1.7.1 + prosemirror-history: 1.4.1 + prosemirror-state: 1.4.3 + + prosemirror-model@1.25.1: + dependencies: + orderedmap: 2.1.1 + + prosemirror-schema-basic@1.2.4: + dependencies: + prosemirror-model: 1.25.1 + + prosemirror-schema-list@1.5.1: + dependencies: + prosemirror-model: 1.25.1 + prosemirror-state: 1.4.3 + prosemirror-transform: 1.10.4 + + prosemirror-state@1.4.3: + dependencies: + prosemirror-model: 1.25.1 + prosemirror-transform: 1.10.4 + prosemirror-view: 1.40.0 + + prosemirror-tables@1.7.1: + dependencies: + prosemirror-keymap: 1.2.3 + prosemirror-model: 1.25.1 + prosemirror-state: 1.4.3 + prosemirror-transform: 1.10.4 + prosemirror-view: 1.40.0 + + prosemirror-trailing-node@3.0.0(prosemirror-model@1.25.1)(prosemirror-state@1.4.3)(prosemirror-view@1.40.0): + dependencies: + '@remirror/core-constants': 3.0.0 + escape-string-regexp: 4.0.0 + prosemirror-model: 1.25.1 + prosemirror-state: 1.4.3 + prosemirror-view: 1.40.0 + + prosemirror-transform@1.10.4: + dependencies: + prosemirror-model: 1.25.1 + + prosemirror-view@1.40.0: + dependencies: + prosemirror-model: 1.25.1 + prosemirror-state: 1.4.3 + prosemirror-transform: 1.10.4 + proto-list@1.2.4: {} proxy-addr@2.0.7: @@ -13914,6 +14453,8 @@ snapshots: dependencies: punycode: 2.3.1 + punycode.js@2.3.1: {} + punycode@1.4.1: {} punycode@2.3.1: {} @@ -13953,25 +14494,25 @@ snapshots: ranges-apply@5.1.0: dependencies: - '@babel/runtime': 7.26.9 + '@babel/runtime': 7.27.6 ranges-merge: 7.1.0 ranges-merge@7.1.0: dependencies: - '@babel/runtime': 7.26.9 + '@babel/runtime': 7.27.6 ranges-push: 5.1.0 ranges-sort: 4.1.0 ranges-push@5.1.0: dependencies: - '@babel/runtime': 7.26.9 + '@babel/runtime': 7.27.6 ranges-merge: 7.1.0 string-collapse-leading-whitespace: 5.1.0 string-trim-spaces-only: 3.1.0 ranges-sort@4.1.0: dependencies: - '@babel/runtime': 7.26.9 + '@babel/runtime': 7.27.6 raw-body@2.5.2: dependencies: @@ -14083,7 +14624,7 @@ snapshots: dependencies: call-bind: 1.0.8 define-properties: 1.2.1 - es-abstract: 1.23.9 + es-abstract: 1.24.0 es-errors: 1.3.0 es-object-atoms: 1.1.1 get-intrinsic: 1.3.0 @@ -14187,7 +14728,7 @@ snapshots: retry@0.13.1: {} - reusify@1.0.4: {} + reusify@1.1.0: {} rewire@6.0.0: dependencies: @@ -14209,6 +14750,8 @@ snapshots: optionalDependencies: fsevents: 2.3.3 + rope-sequence@1.3.4: {} + router@2.2.0: dependencies: debug: 4.4.1 @@ -14223,7 +14766,7 @@ snapshots: dependencies: escalade: 3.2.0 picocolors: 1.1.1 - postcss: 8.5.3 + postcss: 8.5.6 strip-json-comments: 3.1.1 run-applescript@7.0.0: {} @@ -14235,7 +14778,7 @@ snapshots: safe-array-concat@1.1.3: dependencies: call-bind: 1.0.8 - call-bound: 1.0.3 + call-bound: 1.0.4 get-intrinsic: 1.3.0 has-symbols: 1.1.0 isarray: 2.0.5 @@ -14251,7 +14794,7 @@ snapshots: safe-regex-test@1.1.0: dependencies: - call-bound: 1.0.3 + call-bound: 1.0.4 es-errors: 1.3.0 is-regex: 1.2.1 @@ -14315,8 +14858,6 @@ snapshots: semver@6.3.1: {} - semver@7.7.1: {} - semver@7.7.2: {} send@0.19.0: @@ -14349,7 +14890,7 @@ snapshots: ms: 2.1.3 on-finished: 2.4.1 range-parser: 1.2.1 - statuses: 2.0.1 + statuses: 2.0.2 transitivePeerDependencies: - supports-color @@ -14433,8 +14974,6 @@ snapshots: shebang-regex@3.0.0: {} - shell-quote@1.8.2: {} - shell-quote@1.8.3: {} showdown@2.1.0: @@ -14448,14 +14987,14 @@ snapshots: side-channel-map@1.0.1: dependencies: - call-bound: 1.0.3 + call-bound: 1.0.4 es-errors: 1.3.0 get-intrinsic: 1.3.0 object-inspect: 1.13.4 side-channel-weakmap@1.0.2: dependencies: - call-bound: 1.0.3 + call-bound: 1.0.4 es-errors: 1.3.0 get-intrinsic: 1.3.0 object-inspect: 1.13.4 @@ -14501,7 +15040,7 @@ snapshots: dependencies: agent-base: 6.0.2 debug: 4.4.1 - socks: 2.8.4 + socks: 2.8.5 transitivePeerDependencies: - supports-color @@ -14509,11 +15048,11 @@ snapshots: dependencies: agent-base: 6.0.2 debug: 4.4.1 - socks: 2.8.4 + socks: 2.8.5 transitivePeerDependencies: - supports-color - socks@2.8.4: + socks@2.8.5: dependencies: ip-address: 9.0.5 smart-buffer: 4.2.0 @@ -14627,6 +15166,8 @@ snapshots: statuses@2.0.1: {} + statuses@2.0.2: {} + stdout-stream@1.4.1: dependencies: readable-stream: 2.3.8 @@ -14640,13 +15181,13 @@ snapshots: string-collapse-leading-whitespace@5.1.0: dependencies: - '@babel/runtime': 7.26.9 + '@babel/runtime': 7.27.6 string-hash@1.1.3: {} string-left-right@4.1.0: dependencies: - '@babel/runtime': 7.26.9 + '@babel/runtime': 7.27.6 lodash.clonedeep: 4.5.0 lodash.isplainobject: 4.0.6 @@ -14657,8 +15198,8 @@ snapshots: string-strip-html@8.3.0: dependencies: - '@babel/runtime': 7.26.9 - html-entities: 2.5.2 + '@babel/runtime': 7.27.6 + html-entities: 2.6.0 lodash.isplainobject: 4.0.6 lodash.trim: 4.5.1 lodash.without: 4.4.0 @@ -14668,7 +15209,7 @@ snapshots: string-trim-spaces-only@3.1.0: dependencies: - '@babel/runtime': 7.26.9 + '@babel/runtime': 7.27.6 string-width@4.2.3: dependencies: @@ -14685,9 +15226,9 @@ snapshots: string.prototype.matchall@4.0.12: dependencies: call-bind: 1.0.8 - call-bound: 1.0.3 + call-bound: 1.0.4 define-properties: 1.2.1 - es-abstract: 1.23.9 + es-abstract: 1.24.0 es-errors: 1.3.0 es-object-atoms: 1.1.1 get-intrinsic: 1.3.0 @@ -14702,23 +15243,23 @@ snapshots: dependencies: call-bind: 1.0.8 define-properties: 1.2.1 - es-abstract: 1.23.9 + es-abstract: 1.24.0 es-object-atoms: 1.1.1 string.prototype.trim@1.2.10: dependencies: call-bind: 1.0.8 - call-bound: 1.0.3 + call-bound: 1.0.4 define-data-property: 1.1.4 define-properties: 1.2.1 - es-abstract: 1.23.9 + es-abstract: 1.24.0 es-object-atoms: 1.1.1 has-property-descriptors: 1.0.2 string.prototype.trimend@1.0.9: dependencies: call-bind: 1.0.8 - call-bound: 1.0.3 + call-bound: 1.0.4 define-properties: 1.2.1 es-object-atoms: 1.1.1 @@ -14785,88 +15326,88 @@ snapshots: style-search@0.1.0: {} - stylehacks@7.0.4(postcss@8.5.3): + stylehacks@7.0.5(postcss@8.5.6): dependencies: - browserslist: 4.25.0 - postcss: 8.5.3 - postcss-selector-parser: 6.1.2 + browserslist: 4.25.1 + postcss: 8.5.6 + postcss-selector-parser: 7.1.0 - stylelint-config-html@1.1.0(postcss-html@1.8.0)(stylelint@15.11.0(typescript@5.7.3)): + stylelint-config-html@1.1.0(postcss-html@1.8.0)(stylelint@15.11.0(typescript@5.8.3)): dependencies: postcss-html: 1.8.0 - stylelint: 15.11.0(typescript@5.7.3) + stylelint: 15.11.0(typescript@5.8.3) - stylelint-config-prettier@9.0.5(stylelint@15.11.0(typescript@5.7.3)): + stylelint-config-prettier@9.0.5(stylelint@15.11.0(typescript@5.8.3)): dependencies: - stylelint: 15.11.0(typescript@5.7.3) + stylelint: 15.11.0(typescript@5.8.3) - stylelint-config-recess-order@4.6.0(stylelint@15.11.0(typescript@5.7.3)): + stylelint-config-recess-order@4.6.0(stylelint@15.11.0(typescript@5.8.3)): dependencies: - stylelint: 15.11.0(typescript@5.7.3) - stylelint-order: 6.0.4(stylelint@15.11.0(typescript@5.7.3)) + stylelint: 15.11.0(typescript@5.8.3) + stylelint-order: 6.0.4(stylelint@15.11.0(typescript@5.8.3)) - stylelint-config-recommended-scss@14.1.0(postcss@8.5.3)(stylelint@15.11.0(typescript@5.7.3)): + stylelint-config-recommended-scss@14.1.0(postcss@8.5.6)(stylelint@15.11.0(typescript@5.8.3)): dependencies: - postcss-scss: 4.0.9(postcss@8.5.3) - stylelint: 15.11.0(typescript@5.7.3) - stylelint-config-recommended: 14.0.1(stylelint@15.11.0(typescript@5.7.3)) - stylelint-scss: 6.11.1(stylelint@15.11.0(typescript@5.7.3)) + postcss-scss: 4.0.9(postcss@8.5.6) + stylelint: 15.11.0(typescript@5.8.3) + stylelint-config-recommended: 14.0.1(stylelint@15.11.0(typescript@5.8.3)) + stylelint-scss: 6.12.1(stylelint@15.11.0(typescript@5.8.3)) optionalDependencies: - postcss: 8.5.3 + postcss: 8.5.6 - stylelint-config-recommended@13.0.0(stylelint@15.11.0(typescript@5.7.3)): + stylelint-config-recommended@13.0.0(stylelint@15.11.0(typescript@5.8.3)): dependencies: - stylelint: 15.11.0(typescript@5.7.3) + stylelint: 15.11.0(typescript@5.8.3) - stylelint-config-recommended@14.0.1(stylelint@15.11.0(typescript@5.7.3)): + stylelint-config-recommended@14.0.1(stylelint@15.11.0(typescript@5.8.3)): dependencies: - stylelint: 15.11.0(typescript@5.7.3) + stylelint: 15.11.0(typescript@5.8.3) - stylelint-config-sass-guidelines@11.1.0(postcss@8.5.3)(stylelint@15.11.0(typescript@5.7.3)): + stylelint-config-sass-guidelines@11.1.0(postcss@8.5.6)(stylelint@15.11.0(typescript@5.8.3)): dependencies: - postcss: 8.5.3 - postcss-scss: 4.0.9(postcss@8.5.3) - stylelint: 15.11.0(typescript@5.7.3) - stylelint-scss: 6.11.1(stylelint@15.11.0(typescript@5.7.3)) + postcss: 8.5.6 + postcss-scss: 4.0.9(postcss@8.5.6) + stylelint: 15.11.0(typescript@5.8.3) + stylelint-scss: 6.12.1(stylelint@15.11.0(typescript@5.8.3)) - stylelint-config-standard@34.0.0(stylelint@15.11.0(typescript@5.7.3)): + stylelint-config-standard@34.0.0(stylelint@15.11.0(typescript@5.8.3)): dependencies: - stylelint: 15.11.0(typescript@5.7.3) - stylelint-config-recommended: 13.0.0(stylelint@15.11.0(typescript@5.7.3)) + stylelint: 15.11.0(typescript@5.8.3) + stylelint-config-recommended: 13.0.0(stylelint@15.11.0(typescript@5.8.3)) - stylelint-csstree-validator@3.0.0(stylelint@15.11.0(typescript@5.7.3)): + stylelint-csstree-validator@3.0.0(stylelint@15.11.0(typescript@5.8.3)): dependencies: css-tree: 2.3.1 - stylelint: 15.11.0(typescript@5.7.3) + stylelint: 15.11.0(typescript@5.8.3) - stylelint-order@6.0.4(stylelint@15.11.0(typescript@5.7.3)): + stylelint-order@6.0.4(stylelint@15.11.0(typescript@5.8.3)): dependencies: - postcss: 8.5.3 - postcss-sorting: 8.0.2(postcss@8.5.3) - stylelint: 15.11.0(typescript@5.7.3) + postcss: 8.5.6 + postcss-sorting: 8.0.2(postcss@8.5.6) + stylelint: 15.11.0(typescript@5.8.3) - stylelint-scss@5.3.2(stylelint@15.11.0(typescript@5.7.3)): + stylelint-scss@5.3.2(stylelint@15.11.0(typescript@5.8.3)): dependencies: known-css-properties: 0.29.0 postcss-media-query-parser: 0.2.3 postcss-resolve-nested-selector: 0.1.6 postcss-selector-parser: 6.1.2 postcss-value-parser: 4.2.0 - stylelint: 15.11.0(typescript@5.7.3) + stylelint: 15.11.0(typescript@5.8.3) - stylelint-scss@6.11.1(stylelint@15.11.0(typescript@5.7.3)): + stylelint-scss@6.12.1(stylelint@15.11.0(typescript@5.8.3)): dependencies: css-tree: 3.1.0 is-plain-object: 5.0.0 - known-css-properties: 0.35.0 - mdn-data: 2.16.0 + known-css-properties: 0.36.0 + mdn-data: 2.21.0 postcss-media-query-parser: 0.2.3 postcss-resolve-nested-selector: 0.1.6 postcss-selector-parser: 7.1.0 postcss-value-parser: 4.2.0 - stylelint: 15.11.0(typescript@5.7.3) + stylelint: 15.11.0(typescript@5.8.3) - stylelint@15.11.0(typescript@5.7.3): + stylelint@15.11.0(typescript@5.8.3): dependencies: '@csstools/css-parser-algorithms': 2.7.1(@csstools/css-tokenizer@2.4.1) '@csstools/css-tokenizer': 2.4.1 @@ -14874,10 +15415,10 @@ snapshots: '@csstools/selector-specificity': 3.1.1(postcss-selector-parser@6.1.2) balanced-match: 2.0.0 colord: 2.9.3 - cosmiconfig: 8.3.6(typescript@5.7.3) + cosmiconfig: 8.3.6(typescript@5.8.3) css-functions-list: 3.2.3 css-tree: 2.3.1 - debug: 4.4.0 + debug: 4.4.1 fast-glob: 3.3.3 fastest-levenshtein: 1.0.16 file-entry-cache: 7.0.2 @@ -14895,9 +15436,9 @@ snapshots: micromatch: 4.0.8 normalize-path: 3.0.0 picocolors: 1.1.1 - postcss: 8.5.3 + postcss: 8.5.6 postcss-resolve-nested-selector: 0.1.6 - postcss-safe-parser: 6.0.0(postcss@8.5.3) + postcss-safe-parser: 6.0.0(postcss@8.5.6) postcss-selector-parser: 6.1.2 postcss-value-parser: 4.2.0 resolve-from: 5.0.0 @@ -14923,7 +15464,7 @@ snapshots: stylus@0.63.0: dependencies: '@adobe/css-tools': 4.3.3 - debug: 4.4.0 + debug: 4.4.1 glob: 7.2.3 sax: 1.3.0 source-map: 0.7.4 @@ -14975,7 +15516,7 @@ snapshots: tapable@0.1.10: {} - tapable@2.2.1: {} + tapable@2.2.2: {} tar@6.2.1: dependencies: @@ -15005,13 +15546,13 @@ snapshots: jest-worker: 27.5.1 schema-utils: 4.3.2 serialize-javascript: 6.0.2 - terser: 5.39.0 + terser: 5.43.1 webpack: 5.99.7(webpack-cli@6.0.1) - terser@5.39.0: + terser@5.43.1: dependencies: '@jridgewell/source-map': 0.3.6 - acorn: 8.14.1 + acorn: 8.15.0 commander: 2.20.3 source-map-support: 0.5.21 @@ -15043,6 +15584,10 @@ snapshots: dependencies: popper.js: 1.16.1 + tippy.js@6.3.7: + dependencies: + '@popperjs/core': 2.11.8 + tmp@0.2.3: {} tmpl@1.0.5: {} @@ -15094,9 +15639,9 @@ snapshots: true-case-path@2.2.1: {} - ts-api-utils@2.0.1(typescript@5.7.3): + ts-api-utils@2.1.0(typescript@5.8.3): dependencies: - typescript: 5.7.3 + typescript: 5.8.3 tsconfig-paths@3.15.0: dependencies: @@ -15159,7 +15704,7 @@ snapshots: typed-array-buffer@1.0.3: dependencies: - call-bound: 1.0.3 + call-bound: 1.0.4 es-errors: 1.3.0 is-typed-array: 1.1.15 @@ -15190,19 +15735,19 @@ snapshots: possible-typed-array-names: 1.1.0 reflect.getprototypeof: 1.0.10 - typescript@5.7.3: {} + typescript@5.8.3: {} ua-parser-js@1.0.40: {} + uc.micro@2.1.0: {} + unbox-primitive@1.1.0: dependencies: - call-bound: 1.0.3 + call-bound: 1.0.4 has-bigints: 1.1.0 has-symbols: 1.1.0 which-boxed-primitive: 1.1.1 - undici-types@6.21.0: {} - undici-types@7.8.0: {} unicode-canonical-property-names-ecmascript@2.0.1: {} @@ -15246,15 +15791,9 @@ snapshots: upath@1.2.0: {} - update-browserslist-db@1.1.2(browserslist@4.24.4): + update-browserslist-db@1.1.3(browserslist@4.25.1): dependencies: - browserslist: 4.24.4 - escalade: 3.2.0 - picocolors: 1.1.1 - - update-browserslist-db@1.1.3(browserslist@4.25.0): - dependencies: - browserslist: 4.25.0 + browserslist: 4.25.1 escalade: 3.2.0 picocolors: 1.1.1 @@ -15342,7 +15881,7 @@ snapshots: espree: 9.6.1 esquery: 1.6.0 lodash: 4.17.21 - semver: 7.7.1 + semver: 7.7.2 transitivePeerDependencies: - supports-color @@ -15364,7 +15903,7 @@ snapshots: deasync: 0.1.30 extract-from-css: 0.4.4 find-babel-config: 1.2.2 - js-beautify: 1.15.3 + js-beautify: 1.15.4 node-cache: 4.2.1 object-assign: 4.1.1 source-map: 0.5.7 @@ -15465,6 +16004,10 @@ snapshots: vue-template-es2015-compiler@1.9.1: {} + vue-ts-types@1.6.2(vue@2.7.16): + dependencies: + vue: 2.7.16 + vue2-teleport@1.1.4: {} vue@2.7.16: @@ -15480,6 +16023,8 @@ snapshots: dependencies: vue: 2.7.16 + w3c-keyname@2.2.8: {} + w3c-xmlserializer@4.0.0: dependencies: xml-name-validator: 4.0.0 @@ -15488,7 +16033,7 @@ snapshots: dependencies: makeerror: 1.0.12 - watchpack@2.4.2: + watchpack@2.4.4: dependencies: glob-to-regexp: 0.4.1 graceful-fs: 4.2.11 @@ -15587,20 +16132,20 @@ snapshots: source-list-map: 2.0.1 source-map: 0.6.1 - webpack-sources@3.2.3: {} + webpack-sources@3.3.3: {} webpack@5.99.7(webpack-cli@6.0.1): dependencies: '@types/eslint-scope': 3.7.7 - '@types/estree': 1.0.7 + '@types/estree': 1.0.8 '@types/json-schema': 7.0.15 '@webassemblyjs/ast': 1.14.1 '@webassemblyjs/wasm-edit': 1.14.1 '@webassemblyjs/wasm-parser': 1.14.1 - acorn: 8.14.1 - browserslist: 4.24.4 + acorn: 8.15.0 + browserslist: 4.25.1 chrome-trace-event: 1.0.4 - enhanced-resolve: 5.18.1 + enhanced-resolve: 5.18.2 es-module-lexer: 1.7.0 eslint-scope: 5.1.1 events: 3.3.0 @@ -15611,10 +16156,10 @@ snapshots: mime-types: 2.1.35 neo-async: 2.6.2 schema-utils: 4.3.2 - tapable: 2.2.1 + tapable: 2.2.2 terser-webpack-plugin: 5.3.14(webpack@5.99.7) - watchpack: 2.4.2 - webpack-sources: 3.2.3 + watchpack: 2.4.4 + webpack-sources: 3.3.3 optionalDependencies: webpack-cli: 6.0.1(webpack-dev-server@5.2.2)(webpack@5.99.7) transitivePeerDependencies: @@ -15662,7 +16207,7 @@ snapshots: which-builtin-type@1.2.1: dependencies: - call-bound: 1.0.3 + call-bound: 1.0.4 function.prototype.name: 1.1.8 has-tostringtag: 1.0.2 is-async-function: 2.1.1 @@ -15674,7 +16219,7 @@ snapshots: isarray: 2.0.5 which-boxed-primitive: 1.1.1 which-collection: 1.0.2 - which-typed-array: 1.1.18 + which-typed-array: 1.1.19 which-collection@1.0.2: dependencies: @@ -15683,12 +16228,13 @@ snapshots: is-weakmap: 2.0.2 is-weakset: 2.0.4 - which-typed-array@1.1.18: + which-typed-array@1.1.19: dependencies: available-typed-arrays: 1.0.7 call-bind: 1.0.8 - call-bound: 1.0.3 + call-bound: 1.0.4 for-each: 0.3.5 + get-proto: 1.0.1 gopd: 1.2.0 has-tostringtag: 1.0.2 @@ -15722,7 +16268,7 @@ snapshots: '@apideck/better-ajv-errors': 0.3.6(ajv@8.17.1) '@babel/core': 7.27.4 '@babel/preset-env': 7.27.2(@babel/core@7.27.4) - '@babel/runtime': 7.26.9 + '@babel/runtime': 7.27.6 '@rollup/plugin-babel': 5.3.1(@babel/core@7.27.4)(@types/babel__core@7.20.5)(rollup@2.79.2) '@rollup/plugin-node-resolve': 15.3.1(rollup@2.79.2) '@rollup/plugin-replace': 2.4.2(rollup@2.79.2) @@ -15863,7 +16409,7 @@ snapshots: dependencies: global: 4.4.0 is-function: 1.0.2 - parse-headers: 2.0.5 + parse-headers: 2.0.6 xtend: 4.0.2 xml-name-validator@2.0.1: {} @@ -15911,4 +16457,4 @@ snapshots: yocto-queue@0.1.0: {} - yocto-queue@1.1.1: {} + yocto-queue@1.2.1: {} diff --git a/webpack.config.js b/webpack.config.js index 9889aa6a80..cca2abe8c2 100644 --- a/webpack.config.js +++ b/webpack.config.js @@ -103,6 +103,7 @@ module.exports = (env = {}) => { pdfJSWorker: ['pdfjs-dist/build/pdf.worker.entry.js'], // Utility for taking screenshots inside an iframe sandbox htmlScreenshot: ['./shared/utils/htmlScreenshot.js'], + editorDev: './editorDev/index.js', }, output: { filename: dev ? '[name].js' : '[name]-[fullhash].js',