feat(annotation): add serialization support
All checks were successful
Package component / package (push) Successful in 6m3s

This commit is contained in:
李启源
2026-07-21 23:15:06 +08:00
parent 4643a2dbfe
commit 21bf0d803e
12 changed files with 307 additions and 174 deletions

View File

@@ -5,7 +5,6 @@ import { ColorPicker } from 'vue3-colorpicker'
import WaveformAnnotationContextMenu from './WaveformAnnotationContextMenu.vue'
import WaveformAnnotationEditor from './WaveformAnnotationEditor.vue'
import WaveformAnnotationLayer from './WaveformAnnotationLayer.vue'
import WaveformAnnotationToolbar from './WaveformAnnotationToolbar.vue'
describe('waveform annotation controls', () => {
it('keeps dialog title ids unique across editor instances', () => {
@@ -76,18 +75,6 @@ describe('waveform annotation controls', () => {
expect(wrapper.get('.waveform-annotation-editor__series').text()).toContain('通道 A')
})
it('emits controlled toolbar changes', async () => {
const wrapper = mount(WaveformAnnotationToolbar, {
props: { interactionMode: 'zoom', annotationsVisible: true },
})
await wrapper.get('button[aria-label="添加标注"]').trigger('click')
await wrapper.get('button[aria-label="隐藏标注"]').trigger('click')
expect(wrapper.emitted('update:interaction-mode')).toEqual([['annotation']])
expect(wrapper.emitted('update:annotations-visible')).toEqual([[false]])
})
it('validates text and emits an immutable edited annotation with style defaults', async () => {
const annotation = { id: 'note', seriesId: 'a', x: 1, y: 2, text: '' }
const wrapper = mount(WaveformAnnotationEditor, {