diff --git a/packages/ckeditor5-math/package.json b/packages/ckeditor5-math/package.json index 34f845f91..0f3e8a37a 100644 --- a/packages/ckeditor5-math/package.json +++ b/packages/ckeditor5-math/package.json @@ -71,7 +71,6 @@ ] }, "dependencies": { - "@ckeditor/ckeditor5-icons": "47.2.0", "mathlive": "0.108.2" } } diff --git a/packages/ckeditor5-math/src/mathui.ts b/packages/ckeditor5-math/src/mathui.ts index 2ac4c79cd..76290626f 100644 --- a/packages/ckeditor5-math/src/mathui.ts +++ b/packages/ckeditor5-math/src/mathui.ts @@ -57,7 +57,7 @@ export default class MathUI extends Plugin { this._balloon.showStack( 'main' ); requestAnimationFrame(() => { - this.formView?.mathInputView.focus(); + this.formView?.mathLiveInputView.focus(); }); } @@ -90,13 +90,22 @@ export default class MathUI extends Plugin { mathConfig.katexRenderOptions! ); - formView.mathInputView.bind( 'value' ).to( mathCommand, value => value ?? '' ); + formView.mathLiveInputView.bind( 'value' ).to( mathCommand, 'value' ); formView.displayButtonView.bind( 'isOn' ).to( mathCommand, 'display' ); // Form elements should be read-only when corresponding commands are disabled. - formView.mathInputView.bind( 'isReadOnly' ).to( mathCommand, 'isEnabled', value => !value ); - formView.saveButtonView.bind( 'isEnabled' ).to( mathCommand ); - formView.displayButtonView.bind( 'isEnabled' ).to( mathCommand ); + formView.mathLiveInputView.bind( 'isReadOnly' ).to( mathCommand, 'isEnabled', value => !value ); + formView.saveButtonView.bind( 'isEnabled' ).to( + mathCommand, + 'isEnabled', + formView.mathLiveInputView, + 'value', + ( commandEnabled, equation ) => { + const normalizedEquation = ( equation ?? '' ).trim(); + return commandEnabled && normalizedEquation.length > 0; + } + ); + formView.displayButtonView.bind( 'isEnabled' ).to( mathCommand, 'isEnabled' ); // Listen to submit button click this.listenTo( formView, 'submit', () => { @@ -151,7 +160,7 @@ export default class MathUI extends Plugin { } ); if ( this._balloon.visibleView === this.formView ) { - this.formView.mathInputView.focus(); + this.formView.mathLiveInputView.focus(); } // Show preview element diff --git a/packages/ckeditor5-math/src/ui/mainformview.ts b/packages/ckeditor5-math/src/ui/mainformview.ts index ef818e203..7c57fce8f 100644 --- a/packages/ckeditor5-math/src/ui/mainformview.ts +++ b/packages/ckeditor5-math/src/ui/mainformview.ts @@ -10,7 +10,7 @@ import type { KatexOptions } from '../typings-external.js'; export default class MainFormView extends View { public saveButtonView: ButtonView; - public mathInputView: MathLiveInputView; + public mathLiveInputView: MathLiveInputView; public rawLatexInputView: RawLatexInputView; public rawLatexLabel: LabelView; public displayButtonView: SwitchButtonView; @@ -46,8 +46,8 @@ export default class MainFormView extends View { this.saveButtonView = this._createButton( t( 'Save' ), IconCheck, 'ck-button-save', null ); this.saveButtonView.type = 'submit'; - // Equation input - this.mathInputView = this._createMathInput(); + // MathLive visual equation editor + this.mathLiveInputView = this._createMathLiveInput(); // Raw LaTeX input this.rawLatexInputView = this._createRawLatexInput(); @@ -75,7 +75,7 @@ export default class MainFormView extends View { this.mathView.bind( 'display' ).to( this.displayButtonView, 'isOn' ); children = [ - this.mathInputView, + this.mathLiveInputView, this.rawLatexLabel, this.rawLatexInputView, this.displayButtonView, @@ -84,7 +84,7 @@ export default class MainFormView extends View { ]; } else { children = [ - this.mathInputView, + this.mathLiveInputView, this.rawLatexLabel, this.rawLatexInputView, this.displayButtonView @@ -143,7 +143,7 @@ export default class MainFormView extends View { // Register form elements to focusable elements const childViews = [ - this.mathInputView, + this.mathLiveInputView, this.rawLatexInputView, this.displayButtonView, this.saveButtonView, @@ -168,14 +168,15 @@ export default class MainFormView extends View { } public get equation(): string { - return this.mathInputView.value ?? ''; + return this.mathLiveInputView.value ?? ''; } public set equation( equation: string ) { - this.mathInputView.value = equation; - this.rawLatexInputView.value = equation; + const normalizedEquation = equation.trim(); + this.mathLiveInputView.value = normalizedEquation.length ? normalizedEquation : null; + this.rawLatexInputView.value = normalizedEquation; if ( this.previewEnabled && this.mathView ) { - this.mathView.value = equation; + this.mathView.value = normalizedEquation; } } @@ -195,13 +196,13 @@ export default class MainFormView extends View { /** * Creates the MathLive visual equation editor. * - * Handles bidirectional synchronization with the raw LaTeX input and preview. + * Handles bidirectional synchronization with the raw LaTeX textarea and preview. */ - private _createMathInput() { - const mathInput = new MathLiveInputView( this.locale ); + private _createMathLiveInput() { + const mathLiveInput = new MathLiveInputView( this.locale ); const onInput = () => { - const rawValue = mathInput.value ?? ''; + const rawValue = mathLiveInput.value ?? ''; let equationInput = rawValue.trim(); // If input has delimiters @@ -210,56 +211,58 @@ export default class MainFormView extends View { const params = extractDelimiters( equationInput ); // Remove delimiters from input field - mathInput.value = params.equation; + mathLiveInput.value = params.equation; equationInput = params.equation; - // update display button and preview + // Update display button and preview this.displayButtonView.isOn = params.display; } - // Sync to raw LaTeX input + const normalizedEquation = equationInput.length ? equationInput : null; + if ( mathLiveInput.value !== normalizedEquation ) { + mathLiveInput.value = normalizedEquation; + } + + // Sync to raw LaTeX textarea this.rawLatexInputView.value = equationInput; if ( this.previewEnabled && this.mathView ) { - // Update preview view + // Update preview this.mathView.value = equationInput; } - - this.saveButtonView.isEnabled = !!equationInput; }; - mathInput.on( 'change:value', onInput ); + mathLiveInput.on( 'change:value', onInput ); - return mathInput; + return mathLiveInput; } /** - * Creates the raw LaTeX code textarea editor. + * Creates the raw LaTeX textarea editor. * - * Provides direct LaTeX editing and synchronizes changes with the MathLive visual editor. + * Provides direct LaTeX code editing and synchronizes changes with the MathLive visual editor. */ private _createRawLatexInput() { const t = this.locale.t; const rawLatexInput = new RawLatexInputView( this.locale ); rawLatexInput.label = t( 'LaTeX' ); - // Sync raw LaTeX changes to MathLive visual editor + // Sync raw LaTeX textarea changes to MathLive visual editor rawLatexInput.on( 'change:value', () => { const rawValue = rawLatexInput.value ?? ''; const equationInput = rawValue.trim(); - // Update MathLive field - if ( this.mathInputView.value !== equationInput ) { - this.mathInputView.value = equationInput; + // Update MathLive visual editor + const normalizedEquation = equationInput.length ? equationInput : null; + if ( this.mathLiveInputView.value !== normalizedEquation ) { + this.mathLiveInputView.value = normalizedEquation; } - // Update preview if enabled + // Update preview if ( this.previewEnabled && this.mathView ) { this.mathView.value = equationInput; } - - this.saveButtonView.isEnabled = !!equationInput; } ); return rawLatexInput; diff --git a/packages/ckeditor5-math/src/ui/mathliveinputview.ts b/packages/ckeditor5-math/src/ui/mathliveinputview.ts index 340314dc3..148ae7f14 100644 --- a/packages/ckeditor5-math/src/ui/mathliveinputview.ts +++ b/packages/ckeditor5-math/src/ui/mathliveinputview.ts @@ -14,7 +14,7 @@ export default class MathLiveInputView extends View { * * @observable */ - public declare value: string; + public declare value: string | null; /** * Whether the input is in read-only mode. @@ -31,7 +31,7 @@ export default class MathLiveInputView extends View { constructor( locale: Locale ) { super( locale ); - this.set( 'value', '' ); + this.set( 'value', null ); this.set( 'isReadOnly', false ); this.setTemplate( { @@ -56,8 +56,9 @@ export default class MathLiveInputView extends View { mathfield.setAttribute( 'virtual-keyboard-mode', 'manual' ); // Set initial value - if ( this.value ) { - ( mathfield as any ).value = this.value; + const initialValue = this.value ?? ''; + if ( initialValue ) { + ( mathfield as any ).value = initialValue; } // Bind readonly state @@ -67,13 +68,15 @@ export default class MathLiveInputView extends View { // Sync math-field changes to observable value mathfield.addEventListener( 'input', () => { - this.value = ( mathfield as any ).value; + const nextValue: string = ( mathfield as any ).value; + this.value = nextValue.length ? nextValue : null; } ); // Sync observable value changes back to math-field this.on( 'change:value', () => { - if ( ( mathfield as any ).value !== this.value ) { - ( mathfield as any ).value = this.value; + const nextValue = this.value ?? ''; + if ( ( mathfield as any ).value !== nextValue ) { + ( mathfield as any ).value = nextValue; } } ); diff --git a/packages/ckeditor5-math/tests/__screenshots__/mathui.ts/MathUI--showUI---math-form-view-binding-should-bind-mainFormView-mathInputView-value-to-math-command-value-1.png b/packages/ckeditor5-math/tests/__screenshots__/mathui.ts/MathUI--showUI---math-form-view-binding-should-bind-mainFormView-mathInputView-value-to-math-command-value-1.png new file mode 100644 index 000000000..30a255f4a Binary files /dev/null and b/packages/ckeditor5-math/tests/__screenshots__/mathui.ts/MathUI--showUI---math-form-view-binding-should-bind-mainFormView-mathInputView-value-to-math-command-value-1.png differ diff --git a/packages/ckeditor5-math/tests/__screenshots__/mathui.ts/MathUI--showUI---should-disable--mainFormView-element-when-math-command-is-disabled-1.png b/packages/ckeditor5-math/tests/__screenshots__/mathui.ts/MathUI--showUI---should-disable--mainFormView-element-when-math-command-is-disabled-1.png new file mode 100644 index 000000000..d1a052617 Binary files /dev/null and b/packages/ckeditor5-math/tests/__screenshots__/mathui.ts/MathUI--showUI---should-disable--mainFormView-element-when-math-command-is-disabled-1.png differ diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index aacb56ee4..903192f4f 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -641,7 +641,7 @@ importers: version: 3.0.0 debug: specifier: 4.4.3 - version: 4.4.3(supports-color@8.1.1) + version: 4.4.3(supports-color@6.0.0) ejs: specifier: 3.1.10 version: 3.1.10 @@ -15356,7 +15356,7 @@ snapshots: '@babel/traverse': 7.28.4 '@babel/types': 7.28.4 convert-source-map: 2.0.0 - debug: 4.4.3(supports-color@8.1.1) + debug: 4.4.3(supports-color@6.0.0) gensync: 1.0.0-beta.2 json5: 2.2.3 semver: 6.3.1 @@ -15479,7 +15479,7 @@ snapshots: '@babel/parser': 7.28.4 '@babel/template': 7.27.2 '@babel/types': 7.28.4 - debug: 4.4.3(supports-color@8.1.1) + debug: 4.4.3(supports-color@6.0.0) globals: 11.12.0 transitivePeerDependencies: - supports-color @@ -15492,7 +15492,7 @@ snapshots: '@babel/parser': 7.28.4 '@babel/template': 7.27.2 '@babel/types': 7.28.4 - debug: 4.4.3(supports-color@8.1.1) + debug: 4.4.3(supports-color@6.0.0) transitivePeerDependencies: - supports-color @@ -15504,7 +15504,7 @@ snapshots: '@babel/parser': 7.28.4 '@babel/template': 7.27.2 '@babel/types': 7.28.4 - debug: 4.4.3(supports-color@8.1.1) + debug: 4.4.3(supports-color@6.0.0) transitivePeerDependencies: - supports-color @@ -16498,8 +16498,6 @@ snapshots: '@ckeditor/ckeditor5-ui': 47.2.0 '@ckeditor/ckeditor5-utils': 47.2.0 ckeditor5: 47.2.0(patch_hash=8331a09d41443b39ea1c784daaccfeb0da4f9065ed556e7de92e9c77edd9eb41) - transitivePeerDependencies: - - supports-color '@ckeditor/ckeditor5-restricted-editing@47.2.0': dependencies: @@ -16978,7 +16976,7 @@ snapshots: '@listr2/prompt-adapter-inquirer': 2.0.22(@inquirer/prompts@6.0.1) chalk: 4.1.2 commander: 11.1.0 - debug: 4.4.3(supports-color@8.1.1) + debug: 4.4.3(supports-color@6.0.0) fs-extra: 10.1.0 listr2: 7.0.2 log-symbols: 4.1.0 @@ -16998,7 +16996,7 @@ snapshots: '@electron/rebuild': 3.7.2 '@malept/cross-spawn-promise': 2.0.0 chalk: 4.1.2 - debug: 4.4.3(supports-color@8.1.1) + debug: 4.4.3(supports-color@6.0.0) find-up: 5.0.0 fs-extra: 10.1.0 log-symbols: 4.1.0 @@ -17027,7 +17025,7 @@ snapshots: '@malept/cross-spawn-promise': 2.0.0 '@vscode/sudo-prompt': 9.3.1 chalk: 4.1.2 - debug: 4.4.3(supports-color@8.1.1) + debug: 4.4.3(supports-color@6.0.0) fast-glob: 3.3.3 filenamify: 4.3.0 find-up: 5.0.0 @@ -17163,7 +17161,7 @@ snapshots: '@electron-forge/core-utils': 7.10.2 '@electron-forge/shared-types': 7.10.2 '@malept/cross-spawn-promise': 2.0.0 - debug: 4.4.3(supports-color@8.1.1) + debug: 4.4.3(supports-color@6.0.0) fs-extra: 10.1.0 semver: 7.7.3 username: 5.1.0 @@ -17225,7 +17223,7 @@ snapshots: '@electron/get@2.0.3': dependencies: - debug: 4.4.3(supports-color@8.1.1) + debug: 4.4.3(supports-color@6.0.0) env-paths: 2.2.1 fs-extra: 8.1.0 got: 11.8.6 @@ -17239,7 +17237,7 @@ snapshots: '@electron/get@3.1.0': dependencies: - debug: 4.4.3(supports-color@8.1.1) + debug: 4.4.3(supports-color@6.0.0) env-paths: 2.2.1 fs-extra: 8.1.0 got: 11.8.6 @@ -17269,7 +17267,7 @@ snapshots: '@electron/notarize@2.5.0': dependencies: - debug: 4.4.3(supports-color@8.1.1) + debug: 4.4.3(supports-color@6.0.0) fs-extra: 9.1.0 promise-retry: 2.0.1 transitivePeerDependencies: @@ -17278,7 +17276,7 @@ snapshots: '@electron/osx-sign@1.3.3': dependencies: compare-version: 0.1.2 - debug: 4.4.3(supports-color@8.1.1) + debug: 4.4.3(supports-color@6.0.0) fs-extra: 10.1.0 isbinaryfile: 4.0.10 minimist: 1.2.8 @@ -17294,7 +17292,7 @@ snapshots: '@electron/osx-sign': 1.3.3 '@electron/universal': 2.0.2 '@electron/windows-sign': 1.2.1 - debug: 4.4.3(supports-color@8.1.1) + debug: 4.4.3(supports-color@6.0.0) extract-zip: 2.0.1 filenamify: 4.3.0 fs-extra: 11.3.2 @@ -17315,7 +17313,7 @@ snapshots: '@electron/node-gyp': https://codeload.github.com/electron/node-gyp/tar.gz/06b29aafb7708acef8b3669835c8a7857ebc92d2 '@malept/cross-spawn-promise': 2.0.0 chalk: 4.1.2 - debug: 4.4.3(supports-color@8.1.1) + debug: 4.4.3(supports-color@6.0.0) detect-libc: 2.1.1 fs-extra: 10.1.0 got: 11.8.6 @@ -17334,7 +17332,7 @@ snapshots: dependencies: '@malept/cross-spawn-promise': 2.0.0 chalk: 4.1.2 - debug: 4.4.3(supports-color@8.1.1) + debug: 4.4.3(supports-color@6.0.0) detect-libc: 2.0.4 got: 11.8.6 graceful-fs: 4.2.11 @@ -17357,7 +17355,7 @@ snapshots: dependencies: '@electron/asar': 3.4.1 '@malept/cross-spawn-promise': 2.0.0 - debug: 4.4.3(supports-color@8.1.1) + debug: 4.4.3(supports-color@6.0.0) dir-compare: 4.2.0 fs-extra: 11.3.2 minimatch: 9.0.5 @@ -17368,7 +17366,7 @@ snapshots: '@electron/windows-sign@1.2.1': dependencies: cross-dirname: 0.1.0 - debug: 4.4.3(supports-color@8.1.1) + debug: 4.4.3(supports-color@6.0.0) fs-extra: 11.3.2 minimist: 1.2.8 postject: 1.0.0-alpha.6 @@ -17655,7 +17653,7 @@ snapshots: '@eslint/config-array@0.21.1': dependencies: '@eslint/object-schema': 2.1.7 - debug: 4.4.3(supports-color@8.1.1) + debug: 4.4.3(supports-color@6.0.0) minimatch: 3.1.2 transitivePeerDependencies: - supports-color @@ -17679,7 +17677,7 @@ snapshots: '@eslint/eslintrc@3.3.1': dependencies: ajv: 6.12.6 - debug: 4.4.3(supports-color@8.1.1) + debug: 4.4.3(supports-color@6.0.0) espree: 10.4.0 globals: 14.0.0 ignore: 5.3.2 @@ -18039,7 +18037,7 @@ snapshots: '@antfu/install-pkg': 1.1.0 '@antfu/utils': 9.2.0 '@iconify/types': 2.0.0 - debug: 4.4.3(supports-color@8.1.1) + debug: 4.4.3(supports-color@6.0.0) globals: 15.15.0 kolorist: 1.8.0 local-pkg: 1.1.1 @@ -18457,7 +18455,7 @@ snapshots: '@kwsites/file-exists@1.1.1': dependencies: - debug: 4.4.3(supports-color@8.1.1) + debug: 4.4.3(supports-color@6.0.0) transitivePeerDependencies: - supports-color @@ -18541,7 +18539,7 @@ snapshots: '@malept/electron-installer-flatpak@0.11.4': dependencies: '@malept/flatpak-bundler': 0.4.0 - debug: 4.4.3(supports-color@8.1.1) + debug: 4.4.3(supports-color@6.0.0) electron-installer-common: 0.10.4 lodash: 4.17.21 semver: 7.7.3 @@ -18552,7 +18550,7 @@ snapshots: '@malept/flatpak-bundler@0.4.0': dependencies: - debug: 4.4.3(supports-color@8.1.1) + debug: 4.4.3(supports-color@6.0.0) fs-extra: 9.1.0 lodash: 4.17.21 tmp-promise: 3.0.3 @@ -19011,7 +19009,7 @@ snapshots: '@puppeteer/browsers@2.10.10': dependencies: - debug: 4.4.3(supports-color@8.1.1) + debug: 4.4.3(supports-color@6.0.0) extract-zip: 2.0.1 progress: 2.0.3 proxy-agent: 6.5.0 @@ -20279,7 +20277,7 @@ snapshots: '@tokenizer/inflate@0.2.7': dependencies: - debug: 4.4.3(supports-color@8.1.1) + debug: 4.4.3(supports-color@6.0.0) fflate: 0.8.2 token-types: 6.0.0 transitivePeerDependencies: @@ -20905,7 +20903,7 @@ snapshots: '@typescript-eslint/types': 8.46.4 '@typescript-eslint/typescript-estree': 8.46.4(typescript@5.9.3) '@typescript-eslint/visitor-keys': 8.46.4 - debug: 4.4.3(supports-color@8.1.1) + debug: 4.4.3(supports-color@6.0.0) eslint: 9.39.1(jiti@2.6.1) typescript: 5.9.3 transitivePeerDependencies: @@ -20927,7 +20925,7 @@ snapshots: dependencies: '@typescript-eslint/tsconfig-utils': 8.46.4(typescript@5.9.3) '@typescript-eslint/types': 8.46.4 - debug: 4.4.3(supports-color@8.1.1) + debug: 4.4.3(supports-color@6.0.0) typescript: 5.9.3 transitivePeerDependencies: - supports-color @@ -20964,7 +20962,7 @@ snapshots: '@typescript-eslint/types': 8.46.4 '@typescript-eslint/typescript-estree': 8.46.4(typescript@5.9.3) '@typescript-eslint/utils': 8.46.4(eslint@9.39.1(jiti@2.6.1))(typescript@5.9.3) - debug: 4.4.3(supports-color@8.1.1) + debug: 4.4.3(supports-color@6.0.0) eslint: 9.39.1(jiti@2.6.1) ts-api-utils: 2.1.0(typescript@5.9.3) typescript: 5.9.3 @@ -20993,7 +20991,7 @@ snapshots: '@typescript-eslint/tsconfig-utils': 8.46.4(typescript@5.9.3) '@typescript-eslint/types': 8.46.4 '@typescript-eslint/visitor-keys': 8.46.4 - debug: 4.4.3(supports-color@8.1.1) + debug: 4.4.3(supports-color@6.0.0) fast-glob: 3.3.3 is-glob: 4.0.3 minimatch: 9.0.5 @@ -21115,7 +21113,7 @@ snapshots: '@vitest/coverage-istanbul@4.0.10(vitest@4.0.10)': dependencies: '@istanbuljs/schema': 0.1.3 - debug: 4.4.3(supports-color@8.1.1) + debug: 4.4.3(supports-color@6.0.0) istanbul-lib-coverage: 3.2.2 istanbul-lib-instrument: 6.0.3 istanbul-lib-report: 3.0.1 @@ -21130,7 +21128,8 @@ snapshots: '@vitest/coverage-v8@4.0.10(@vitest/browser@4.0.10(bufferutil@4.0.9)(msw@2.7.5(@types/node@24.10.1)(typescript@5.9.3))(utf-8-validate@6.0.5)(vite@7.2.2(@types/node@24.10.1)(jiti@2.6.1)(less@4.1.3)(lightningcss@1.30.1)(sass-embedded@1.91.0)(sass@1.91.0)(terser@5.44.0)(tsx@4.20.6)(yaml@2.8.1))(vitest@4.0.10))(vitest@4.0.10)': dependencies: '@bcoe/v8-coverage': 1.0.2 - ast-v8-to-istanbul: 0.3.3 + '@vitest/utils': 4.0.10 + ast-v8-to-istanbul: 0.3.8 debug: 4.4.3(supports-color@6.0.0) istanbul-lib-coverage: 3.2.2 istanbul-lib-report: 3.0.1 @@ -21436,7 +21435,7 @@ snapshots: agent-base@6.0.2: dependencies: - debug: 4.4.3(supports-color@8.1.1) + debug: 4.4.3(supports-color@6.0.0) transitivePeerDependencies: - supports-color @@ -21872,7 +21871,7 @@ snapshots: dependencies: bytes: 3.1.2 content-type: 1.0.5 - debug: 4.4.3(supports-color@8.1.1) + debug: 4.4.3(supports-color@6.0.0) http-errors: 2.0.0 iconv-lite: 0.6.3 on-finished: 2.4.1 @@ -23618,7 +23617,7 @@ snapshots: dependencies: '@electron/asar': 3.4.1 '@malept/cross-spawn-promise': 1.1.1 - debug: 4.4.3(supports-color@8.1.1) + debug: 4.4.3(supports-color@6.0.0) fs-extra: 9.1.0 glob: 7.2.3 lodash: 4.17.21 @@ -23634,7 +23633,7 @@ snapshots: electron-installer-debian@3.2.0: dependencies: '@malept/cross-spawn-promise': 1.1.1 - debug: 4.4.3(supports-color@8.1.1) + debug: 4.4.3(supports-color@6.0.0) electron-installer-common: 0.10.4 fs-extra: 9.1.0 get-folder-size: 2.0.1 @@ -23648,7 +23647,7 @@ snapshots: electron-installer-dmg@5.0.1: dependencies: '@types/appdmg': 0.5.5 - debug: 4.4.3(supports-color@8.1.1) + debug: 4.4.3(supports-color@6.0.0) minimist: 1.2.8 optionalDependencies: appdmg: 0.6.6 @@ -23659,7 +23658,7 @@ snapshots: electron-installer-redhat@3.4.0: dependencies: '@malept/cross-spawn-promise': 1.1.1 - debug: 4.4.3(supports-color@8.1.1) + debug: 4.4.3(supports-color@6.0.0) electron-installer-common: 0.10.4 fs-extra: 9.1.0 lodash: 4.17.21 @@ -23675,7 +23674,7 @@ snapshots: electron-localshortcut@3.2.1: dependencies: - debug: 4.4.3(supports-color@8.1.1) + debug: 4.4.3(supports-color@6.0.0) electron-is-accelerator: 0.1.2 keyboardevent-from-electron-accelerator: 2.0.0 keyboardevents-areequal: 0.2.2 @@ -23700,7 +23699,7 @@ snapshots: electron-winstaller@5.4.0: dependencies: '@electron/asar': 3.4.1 - debug: 4.4.3(supports-color@8.1.1) + debug: 4.4.3(supports-color@6.0.0) fs-extra: 7.0.1 lodash: 4.17.21 temp: 0.9.4 @@ -24248,7 +24247,7 @@ snapshots: ajv: 6.12.6 chalk: 4.1.2 cross-spawn: 7.0.6 - debug: 4.4.3(supports-color@8.1.1) + debug: 4.4.3(supports-color@6.0.0) escape-string-regexp: 4.0.0 eslint-scope: 8.4.0 eslint-visitor-keys: 4.2.1 @@ -24358,7 +24357,7 @@ snapshots: express-http-proxy@2.1.2: dependencies: - debug: 4.4.3(supports-color@8.1.1) + debug: 4.4.3(supports-color@6.0.0) es6-promise: 4.2.8 raw-body: 2.5.2 transitivePeerDependencies: @@ -24369,7 +24368,7 @@ snapshots: base64url: 3.0.1 clone: 2.1.2 cookie: 0.7.2 - debug: 4.4.3(supports-color@8.1.1) + debug: 4.4.3(supports-color@6.0.0) express: 5.1.0 futoin-hkdf: 1.5.3 http-errors: 1.8.1 @@ -24443,7 +24442,7 @@ snapshots: content-type: 1.0.5 cookie: 0.7.2 cookie-signature: 1.2.2 - debug: 4.4.3(supports-color@8.1.1) + debug: 4.4.3(supports-color@6.0.0) encodeurl: 2.0.0 escape-html: 1.0.3 etag: 1.8.1 @@ -24492,7 +24491,7 @@ snapshots: extract-zip@2.0.1: dependencies: - debug: 4.4.3(supports-color@8.1.1) + debug: 4.4.3(supports-color@6.0.0) get-stream: 5.2.0 yauzl: 2.10.0 optionalDependencies: @@ -24634,7 +24633,7 @@ snapshots: finalhandler@2.1.0: dependencies: - debug: 4.4.3(supports-color@8.1.1) + debug: 4.4.3(supports-color@6.0.0) encodeurl: 2.0.0 escape-html: 1.0.3 on-finished: 2.4.1 @@ -24690,7 +24689,7 @@ snapshots: flora-colossus@2.0.0: dependencies: - debug: 4.4.3(supports-color@8.1.1) + debug: 4.4.3(supports-color@6.0.0) fs-extra: 10.1.0 transitivePeerDependencies: - supports-color @@ -24702,7 +24701,7 @@ snapshots: follow-redirects@1.15.9(debug@4.4.3): optionalDependencies: - debug: 4.4.3(supports-color@8.1.1) + debug: 4.4.3(supports-color@6.0.0) for-each@0.3.5: dependencies: @@ -24843,7 +24842,7 @@ snapshots: galactus@1.0.0: dependencies: - debug: 4.4.3(supports-color@8.1.1) + debug: 4.4.3(supports-color@6.0.0) flora-colossus: 2.0.0 fs-extra: 10.1.0 transitivePeerDependencies: @@ -24959,7 +24958,7 @@ snapshots: dependencies: basic-ftp: 5.0.5 data-uri-to-buffer: 6.0.2 - debug: 4.4.3(supports-color@8.1.1) + debug: 4.4.3(supports-color@6.0.0) transitivePeerDependencies: - supports-color @@ -25436,7 +25435,7 @@ snapshots: dependencies: '@tootallnate/once': 1.1.2 agent-base: 6.0.2 - debug: 4.4.3(supports-color@8.1.1) + debug: 4.4.3(supports-color@6.0.0) transitivePeerDependencies: - supports-color @@ -25444,14 +25443,14 @@ snapshots: dependencies: '@tootallnate/once': 2.0.0 agent-base: 6.0.2 - debug: 4.4.3(supports-color@8.1.1) + debug: 4.4.3(supports-color@6.0.0) transitivePeerDependencies: - supports-color http-proxy-agent@7.0.2: dependencies: agent-base: 7.1.3 - debug: 4.4.3(supports-color@8.1.1) + debug: 4.4.3(supports-color@6.0.0) transitivePeerDependencies: - supports-color @@ -25504,14 +25503,14 @@ snapshots: https-proxy-agent@5.0.1: dependencies: agent-base: 6.0.2 - debug: 4.4.3(supports-color@8.1.1) + debug: 4.4.3(supports-color@6.0.0) transitivePeerDependencies: - supports-color https-proxy-agent@7.0.6: dependencies: agent-base: 7.1.3 - debug: 4.4.3(supports-color@8.1.1) + debug: 4.4.3(supports-color@6.0.0) transitivePeerDependencies: - supports-color @@ -25906,7 +25905,7 @@ snapshots: istanbul-lib-source-maps@5.0.6: dependencies: '@jridgewell/trace-mapping': 0.3.31 - debug: 4.4.3(supports-color@8.1.1) + debug: 4.4.3(supports-color@6.0.0) istanbul-lib-coverage: 3.2.2 transitivePeerDependencies: - supports-color @@ -26520,7 +26519,7 @@ snapshots: log4js@6.9.1: dependencies: date-format: 4.0.14 - debug: 4.4.3(supports-color@8.1.1) + debug: 4.4.3(supports-color@6.0.0) flatted: 3.3.3 rfdc: 1.4.1 streamroller: 3.1.5 @@ -27119,7 +27118,7 @@ snapshots: micromark@4.0.2: dependencies: '@types/debug': 4.1.12 - debug: 4.4.3(supports-color@8.1.1) + debug: 4.4.3(supports-color@6.0.0) decode-named-character-reference: 1.2.0 devlop: 1.1.0 micromark-core-commonmark: 2.0.3 @@ -27957,7 +27956,7 @@ snapshots: dependencies: '@tootallnate/quickjs-emscripten': 0.23.0 agent-base: 7.1.4 - debug: 4.4.3(supports-color@8.1.1) + debug: 4.4.3(supports-color@6.0.0) get-uri: 6.0.5 http-proxy-agent: 7.0.2 https-proxy-agent: 7.0.6 @@ -28235,7 +28234,7 @@ snapshots: portfinder@1.0.36: dependencies: async: 3.2.6 - debug: 4.4.3(supports-color@8.1.1) + debug: 4.4.3(supports-color@6.0.0) transitivePeerDependencies: - supports-color @@ -29074,7 +29073,7 @@ snapshots: proxy-agent@6.5.0: dependencies: agent-base: 7.1.4 - debug: 4.4.3(supports-color@8.1.1) + debug: 4.4.3(supports-color@6.0.0) http-proxy-agent: 7.0.2 https-proxy-agent: 7.0.6 lru-cache: 7.18.3 @@ -29290,7 +29289,7 @@ snapshots: read-binary-file-arch@1.0.6: dependencies: - debug: 4.4.3(supports-color@8.1.1) + debug: 4.4.3(supports-color@6.0.0) transitivePeerDependencies: - supports-color @@ -29733,7 +29732,7 @@ snapshots: router@2.2.0: dependencies: - debug: 4.4.3(supports-color@8.1.1) + debug: 4.4.3(supports-color@6.0.0) depd: 2.0.0 is-promise: 4.0.0 parseurl: 1.3.3 @@ -29994,7 +29993,7 @@ snapshots: send@1.2.0: dependencies: - debug: 4.4.3(supports-color@8.1.1) + debug: 4.4.3(supports-color@6.0.0) encodeurl: 2.0.0 escape-html: 1.0.3 etag: 1.8.1 @@ -30211,13 +30210,13 @@ snapshots: dependencies: '@kwsites/file-exists': 1.1.1 '@kwsites/promise-deferred': 1.1.1 - debug: 4.4.3(supports-color@8.1.1) + debug: 4.4.3(supports-color@6.0.0) transitivePeerDependencies: - supports-color simple-websocket@9.1.0(bufferutil@4.0.9)(utf-8-validate@6.0.5): dependencies: - debug: 4.4.3(supports-color@8.1.1) + debug: 4.4.3(supports-color@6.0.0) queue-microtask: 1.2.3 randombytes: 2.1.0 readable-stream: 3.6.2 @@ -30311,7 +30310,7 @@ snapshots: socks-proxy-agent@6.2.1: dependencies: agent-base: 6.0.2 - debug: 4.4.3(supports-color@8.1.1) + debug: 4.4.3(supports-color@6.0.0) socks: 2.8.4 transitivePeerDependencies: - supports-color @@ -30320,7 +30319,7 @@ snapshots: socks-proxy-agent@7.0.0: dependencies: agent-base: 6.0.2 - debug: 4.4.3(supports-color@8.1.1) + debug: 4.4.3(supports-color@6.0.0) socks: 2.8.7 transitivePeerDependencies: - supports-color @@ -30328,7 +30327,7 @@ snapshots: socks-proxy-agent@8.0.5: dependencies: agent-base: 7.1.4 - debug: 4.4.3(supports-color@8.1.1) + debug: 4.4.3(supports-color@6.0.0) socks: 2.8.7 transitivePeerDependencies: - supports-color @@ -30389,7 +30388,7 @@ snapshots: spdy-transport@3.0.0: dependencies: - debug: 4.4.3(supports-color@8.1.1) + debug: 4.4.3(supports-color@6.0.0) detect-node: 2.1.0 hpack.js: 2.1.6 obuf: 1.1.2 @@ -30400,7 +30399,7 @@ snapshots: spdy@4.0.2: dependencies: - debug: 4.4.3(supports-color@8.1.1) + debug: 4.4.3(supports-color@6.0.0) handle-thing: 2.0.1 http-deceiver: 1.2.7 select-hose: 2.0.0 @@ -30484,7 +30483,7 @@ snapshots: streamroller@3.1.5: dependencies: date-format: 4.0.14 - debug: 4.4.3(supports-color@8.1.1) + debug: 4.4.3(supports-color@6.0.0) fs-extra: 8.1.0 transitivePeerDependencies: - supports-color @@ -30731,7 +30730,7 @@ snapshots: cosmiconfig: 9.0.0(typescript@5.0.4) css-functions-list: 3.2.3 css-tree: 3.1.0 - debug: 4.4.3(supports-color@8.1.1) + debug: 4.4.3(supports-color@6.0.0) fast-glob: 3.3.3 fastest-levenshtein: 1.0.16 file-entry-cache: 10.1.4 @@ -30775,7 +30774,7 @@ snapshots: cosmiconfig: 9.0.0(typescript@5.9.3) css-functions-list: 3.2.3 css-tree: 3.1.0 - debug: 4.4.3(supports-color@8.1.1) + debug: 4.4.3(supports-color@6.0.0) fast-glob: 3.3.3 fastest-levenshtein: 1.0.16 file-entry-cache: 10.1.4 @@ -30821,7 +30820,7 @@ snapshots: sumchecker@3.0.1: dependencies: - debug: 4.4.3(supports-color@8.1.1) + debug: 4.4.3(supports-color@6.0.0) transitivePeerDependencies: - supports-color @@ -30829,7 +30828,7 @@ snapshots: dependencies: component-emitter: 1.3.1 cookiejar: 2.1.4 - debug: 4.4.3(supports-color@8.1.1) + debug: 4.4.3(supports-color@6.0.0) fast-safe-stringify: 2.1.1 form-data: 4.0.4 formidable: 3.5.4 @@ -31276,7 +31275,7 @@ snapshots: tuf-js@4.0.0: dependencies: '@tufjs/models': 4.0.0 - debug: 4.4.3(supports-color@8.1.1) + debug: 4.4.3(supports-color@6.0.0) make-fetch-happen: 15.0.3 transitivePeerDependencies: - supports-color @@ -31654,27 +31653,6 @@ snapshots: '@types/unist': 3.0.3 vfile-message: 4.0.2 - vite-node@3.2.4(@types/node@24.10.1)(jiti@2.6.1)(less@4.1.3)(lightningcss@1.30.1)(sass-embedded@1.91.0)(sass@1.91.0)(terser@5.44.0)(tsx@4.20.6)(yaml@2.8.1): - dependencies: - cac: 6.7.14 - debug: 4.4.3(supports-color@6.0.0) - es-module-lexer: 1.7.0 - pathe: 2.0.3 - vite: 7.2.2(@types/node@24.10.1)(jiti@2.6.1)(less@4.1.3)(lightningcss@1.30.1)(sass-embedded@1.91.0)(sass@1.91.0)(terser@5.44.0)(tsx@4.20.6)(yaml@2.8.1) - transitivePeerDependencies: - - '@types/node' - - jiti - - less - - lightningcss - - sass - - sass-embedded - - stylus - - sugarss - - supports-color - - terser - - tsx - - yaml - vite-plugin-dts@4.5.4(@types/node@24.10.1)(rollup@4.52.0)(typescript@5.9.3)(vite@7.2.2(@types/node@24.10.1)(jiti@2.6.1)(less@4.1.3)(lightningcss@1.30.1)(sass-embedded@1.91.0)(sass@1.91.0)(terser@5.44.0)(tsx@4.20.6)(yaml@2.8.1)): dependencies: '@microsoft/api-extractor': 7.52.8(@types/node@24.10.1) @@ -31682,7 +31660,7 @@ snapshots: '@volar/typescript': 2.4.13 '@vue/language-core': 2.2.0(typescript@5.9.3) compare-versions: 6.1.1 - debug: 4.4.3(supports-color@8.1.1) + debug: 4.4.3(supports-color@6.0.0) kolorist: 1.8.0 local-pkg: 1.1.1 magic-string: 0.30.21 @@ -31740,18 +31718,17 @@ snapshots: vitest@4.0.10(@types/debug@4.1.12)(@types/node@24.10.1)(@vitest/browser-webdriverio@4.0.10)(@vitest/ui@4.0.10)(happy-dom@20.0.10)(jiti@2.6.1)(jsdom@26.1.0(bufferutil@4.0.9)(utf-8-validate@6.0.5))(less@4.1.3)(lightningcss@1.30.1)(msw@2.7.5(@types/node@24.10.1)(typescript@5.9.3))(sass-embedded@1.91.0)(sass@1.91.0)(terser@5.44.0)(tsx@4.20.6)(yaml@2.8.1): dependencies: - '@types/chai': 5.2.2 - '@vitest/expect': 3.2.4 - '@vitest/mocker': 3.2.4(msw@2.7.5(@types/node@24.10.1)(typescript@5.9.3))(vite@7.2.2(@types/node@24.10.1)(jiti@2.6.1)(less@4.1.3)(lightningcss@1.30.1)(sass-embedded@1.91.0)(sass@1.91.0)(terser@5.44.0)(tsx@4.20.6)(yaml@2.8.1)) - '@vitest/pretty-format': 3.2.4 - '@vitest/runner': 3.2.4 - '@vitest/snapshot': 3.2.4 - '@vitest/spy': 3.2.4 - '@vitest/utils': 3.2.4 - chai: 5.2.0 + '@vitest/expect': 4.0.10 + '@vitest/mocker': 4.0.10(msw@2.7.5(@types/node@24.10.1)(typescript@5.9.3))(vite@7.2.2(@types/node@24.10.1)(jiti@2.6.1)(less@4.1.3)(lightningcss@1.30.1)(sass-embedded@1.91.0)(sass@1.91.0)(terser@5.44.0)(tsx@4.20.6)(yaml@2.8.1)) + '@vitest/pretty-format': 4.0.10 + '@vitest/runner': 4.0.10 + '@vitest/snapshot': 4.0.10 + '@vitest/spy': 4.0.10 + '@vitest/utils': 4.0.10 debug: 4.4.3(supports-color@6.0.0) - expect-type: 1.2.1 - magic-string: 0.30.18 + es-module-lexer: 1.7.0 + expect-type: 1.2.2 + magic-string: 0.30.21 pathe: 2.0.3 picomatch: 4.0.3 std-env: 3.10.0 @@ -31830,7 +31807,7 @@ snapshots: dependencies: chalk: 4.1.2 commander: 9.5.0 - debug: 4.4.3(supports-color@8.1.1) + debug: 4.4.3(supports-color@6.0.0) transitivePeerDependencies: - supports-color