1jQuery(function () {
2    const $buttons = jQuery('.dokuwiki .secedit.editbutton_section .btn_secedit button');
3
4    $buttons
5        /**
6         * Set selected button on context click
7         */
8        .on('contextmenu', (event) => {
9            event.stopPropagation();
10            event.preventDefault();
11
12            const target = event.target;
13            $buttons.not(target).removeClass('selected');
14            jQuery(target).toggleClass('selected');
15        })
16        /**
17         * Adjust range if selection exists
18         */
19        .on('click', (event) => {
20            const target = event.target;
21            const selected = $buttons.filter('.selected').get(0);
22            if (selected !== null) { // multi edit
23                // if other section comes first, use its hid and summary
24                if (selected.form.elements['range'].value < target.form.elements['range'].value) {
25                    target.form.elements['hid'].value = selected.form.elements['hid'].value;
26                    target.form.elements['summary'].value = selected.form.elements['summary'].value;
27                }
28                // replace the range
29                target.form.elements['range'].value = newRange(
30                    target.form.elements['range'].value,
31                    selected.form.elements['range'].value
32                );
33            }
34        })
35    ;
36
37    /**
38     * Parse the given range strings and return the new range string
39     *
40     * @param {string} r1
41     * @param {string} r2
42     * @return {string}
43     */
44    function newRange(r1, r2) {
45        const [r1min, r1max] = r1.split('-');
46        const [r2min, r2max] = r2.split('-');
47
48        let min = Math.min(parseInt(r1min), parseInt(r2min));
49        let max = 0;
50        if (r1max !== '' && r2max !== '') max = Math.max(parseInt(r1max), parseInt(r2max));
51
52        return `${min}-${max}`;
53    }
54});
55