-
Notifications
You must be signed in to change notification settings - Fork 0
/
popup-actions.ts
66 lines (57 loc) · 1.86 KB
/
popup-actions.ts
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
import { AudioBlotValue, IQuillAudioEmbed } from "../types/types";
import { setStyles } from "../helpers";
import QuillAudioEmbed from "../quill-audio-embed";
// Inserts blot at the selection position or at the top of quill
export function insertAudioBlot(audioEmbed: QuillAudioEmbed, data: AudioBlotValue) {
const selection = audioEmbed.quill.getSelection();
audioEmbed.quill.insertEmbed(selection?.index ?? 0, 'ql-audio-blot', data);
}
// Fires when you click add button
export function popupSubmit(e: Event, audioEmbed: QuillAudioEmbed) {
const { inputs } = audioEmbed;
const label = inputs.label.value;
const url = inputs.url.value;
const alignment = inputs.alignment.value;
if (!url.length) {
return setStyles(inputs.url, {
borderColor: 'red',
});
} else {
setStyles(inputs.url, {
borderColor: 'black',
});
}
insertAudioBlot(audioEmbed, { label, url, alignment });
audioEmbed.popupToggle(audioEmbed.popup);
}
export async function fileChange(e: Event, audioEmbed: QuillAudioEmbed) {
const fileInput = e.target as HTMLInputElement;
if (audioEmbed.options.validate) {
const res = await audioEmbed.options.validate(audioEmbed.inputs, audioEmbed);
if (!res) {
return setStyles(fileInput as HTMLElement, {
border: '1px solid red'
});
} else {
setStyles(fileInput as HTMLElement, {
border: '1px solid green'
});
}
}
fileInput.disabled = true;
let value: AudioBlotValue | false = false;
if (audioEmbed.options.onUpload) {
value = await audioEmbed.options.onUpload(audioEmbed.inputs, audioEmbed);
}
if (!value) {
return setStyles(fileInput as HTMLElement, {
border: '1px solid red'
});
} else {
setStyles(fileInput as HTMLElement, {
border: '1px solid green'
});
}
insertAudioBlot(audioEmbed, value);
fileInput.disabled = false;
}