{"version":3,"sources":["jsdelivr-header.js","/npm/morse-decoder@4.0.1/src/index.js"],"names":[],"mappings":"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","file":"/npm/morse-decoder@4.0.1/src/index.js","sourceRoot":"","sourcesContent":["/**\n * Minified by jsDelivr using Terser v5.37.0.\n * Original file: /npm/morse-decoder@4.0.1/src/index.js\n *\n * Do NOT use SRI with dynamically generated files! More information: https://www.jsdelivr.com/using-sri-with-dynamic-files\n */\n","'use strict';\n\nconst baseCharacters = {\n    '1': {\n        'A': '01', 'B': '1000', 'C': '1010', 'D': '100', 'E': '0', 'F': '0010',\n        'G': '110', 'H': '0000', 'I': '00', 'J': '0111', 'K': '101', 'L': '0100',\n        'M': '11', 'N': '10', 'O': '111', 'P': '0110', 'Q': '1101', 'R': '010',\n        'S': '000', 'T': '1', 'U': '001', 'V': '0001', 'W': '011', 'X': '1001',\n        'Y': '1011', 'Z': '1100'\n    },\n    '2': {\n        '0': '11111', '1': '01111', '2': '00111', '3': '00011', '4': '00001',\n        '5': '00000', '6': '10000', '7': '11000', '8': '11100', '9': '11110'\n    },\n    '3': {\n        '.': '010101', ',': '110011', '?': '001100', '\\'': '011110', '!': '101011', '/': '10010',\n        '(': '10110', ')': '101101', '&': '01000', ':': '111000', ';': '101010', '=': '10001',\n        '+': '01010', '-': '100001', '_': '001101', '\"': '010010', '$': '0001001', '@': '011010',\n        '¿': '00101', '¡': '110001'\n    },\n    '4': {\n        'Ã': '01101', 'Á': '01101', 'Å': '01101', 'À': '01101', 'Â': '01101', 'Ä': '0101',\n        'Ą': '0101', 'Æ': '0101', 'Ç': '10100', 'Ć': '10100', 'Ĉ': '10100', 'Č': '110',\n        'Ð': '00110', 'È': '01001', 'Ę': '00100', 'Ë': '00100', 'É': '00100',\n        'Ê': '10010', 'Ğ': '11010', 'Ĝ': '11010', 'Ĥ': '1111', 'İ': '01001', 'Ï': '10011',\n        'Ì': '01110', 'Ĵ': '01110', 'Ł': '01001', 'Ń': '11011', 'Ñ': '11011', 'Ó': '1110',\n        'Ò': '1110', 'Ö': '1110', 'Ô': '1110', 'Ø': '1110', 'Ś': '0001000', 'Ş': '01100',\n        'Ș': '1111', 'Š': '1111', 'Ŝ': '00010', 'ß': '000000', 'Þ': '01100', 'Ü': '0011',\n        'Ù': '0011', 'Ŭ': '0011', 'Ž': '11001', 'Ź': '110010', 'Ż': '11001'\n    },\n    '5': {\n        'А': '01', 'Б': '1000', 'В': '011', 'Г': '110', 'Д': '100', 'Е': '0',\n        'Ж': '0001', 'З': '1100', 'И': '00', 'Й': '0111', 'К': '101', 'Л': '0100',\n        'М': '11', 'Н': '10', 'О': '111', 'П': '0110', 'Р': '010', 'С': '000',\n        'Т': '1', 'У': '001', 'Ф': '0010', 'Х': '0000', 'Ц': '1010', 'Ч': '1110',\n        'Ш': '1111', 'Щ': '1101', 'Ъ': '11011', 'Ы': '1011', 'Ь': '1001', 'Э': '00100',\n        'Ю': '0011', 'Я': '0101', 'Ї': '01110', 'Є': '00100', 'І': '00', 'Ґ': '110'\n    },\n    '6': {\n        'Α': '01', 'Β': '1000', 'Γ': '110', 'Δ': '100', 'Ε': '0', 'Ζ': '1100',\n        'Η': '0000', 'Θ': '1010', 'Ι': '00', 'Κ': '101', 'Λ': '0100', 'Μ': '11',\n        'Ν': '10', 'Ξ': '1001', 'Ο': '111', 'Π': '0110', 'Ρ': '010', 'Σ': '000',\n        'Τ': '1', 'Υ': '1011', 'Φ': '0010', 'Χ': '1111', 'Ψ': '1101', 'Ω': '011'\n    },\n    '7': {\n        'א': '01', 'ב': '1000', 'ג': '110', 'ד': '100', 'ה': '111', 'ו': '0',\n        'ז': '1100', 'ח': '0000', 'ט': '001', 'י': '00', 'כ': '101', 'ל': '0100',\n        'מ': '11', 'נ': '10', 'ס': '1010', 'ע': '0111', 'פ': '0110', 'צ': '011',\n        'ק': '1101', 'ר': '010', 'ש': '000', 'ת': '1'\n    },\n    '8': {\n        'ا': '01', 'ب': '1000', 'ت': '1', 'ث': '1010', 'ج': '0111', 'ح': '0000',\n        'خ': '111', 'د': '100', 'ذ': '1100', 'ر': '010', 'ز': '1110', 'س': '000',\n        'ش': '1111', 'ص': '1001', 'ض': '0001', 'ط': '001', 'ظ': '1011', 'ع': '0101',\n        'غ': '110', 'ف': '0010', 'ق': '1101', 'ك': '101', 'ل': '0100', 'م': '11',\n        'ن': '10', 'ه': '00100', 'و': '011', 'ي': '00', 'ﺀ': '0'\n    },\n    '9': {\n        'ا': '01', 'ب': '1000', 'پ': '0110', 'ت': '1', 'ث': '1010', 'ج': '0111',\n        'چ': '1110', 'ح': '0000', 'خ': '1001', 'د': '100', 'ذ': '0001', 'ر': '010',\n        'ز': '1100', 'ژ': '110', 'س': '000', 'ش': '1111', 'ص': '0101', 'ض': '00100',\n        'ط': '001', 'ظ': '1011', 'ع': '111', 'غ': '0011', 'ف': '0010', 'ق': '111000',\n        'ک': '101', 'گ': '1101', 'ل': '0100', 'م': '11', 'ن': '10', 'و': '011',\n        'ه': '0', 'ی': '00'\n    },\n    '10': {\n        'ア': '11011', 'カ': '0100', 'サ': '10101', 'タ': '10', 'ナ': '010', 'ハ': '1000',\n        'マ': '1001', 'ヤ': '011', 'ラ': '000', 'ワ': '101', 'イ': '01', 'キ': '10100',\n        'シ': '11010', 'チ': '0010', 'ニ': '1010', 'ヒ': '11001', 'ミ': '00101', 'リ': '110',\n        'ヰ': '01001', 'ウ': '001', 'ク': '0001', 'ス': '11101', 'ツ': '0110', 'ヌ': '0000',\n        'フ': '1100', 'ム': '1', 'ユ': '10011', 'ル': '10110', 'ン': '01010', 'エ': '10111',\n        'ケ': '1011', 'セ': '01110', 'テ': '01011', 'ネ': '1101', 'ヘ': '0', 'メ': '10001',\n        'レ': '111', 'ヱ': '01100', 'オ': '01000', 'コ': '1111', 'ソ': '1110', 'ト': '00100',\n        'ノ': '0011', 'ホ': '100', 'モ': '10010', 'ヨ': '11', 'ロ': '0101', 'ヲ': '0111',\n        '゛': '00', '゜': '00110', '。': '010100', 'ー': '01101', '、': '010101',\n        '（': '101101', '）': '010010'\n    },\n    '11': {\n        'ㄱ': '0100', 'ㄴ': '0010', 'ㄷ': '1000', 'ㄹ': '0001', 'ㅁ': '11', 'ㅂ': '011',\n        'ㅅ': '110', 'ㅇ': '101', 'ㅈ': '0110', 'ㅊ': '1010', 'ㅋ': '1001', 'ㅌ': '1100',\n        'ㅍ': '111', 'ㅎ': '0111', 'ㅏ': '0', 'ㅑ': '00', 'ㅓ': '1', 'ㅕ': '000',\n        'ㅗ': '01', 'ㅛ': '10', 'ㅜ': '0000', 'ㅠ': '010', 'ㅡ': '100', 'ㅣ': '001'\n    },\n    '12': {\n        'ก': '110', 'ข': '1010', 'ค': '101', 'ง': '10110', 'จ': '10010',\n        'ฉ': '1111', 'ช': '1001', 'ซ': '1100', 'ญ': '0111', 'ด': '100',\n        'ต': '1', 'ถ': '10100', 'ท': '10011', 'น': '10', 'บ': '1000',\n        'ป': '0110', 'ผ': '1101', 'ฝ': '10101', 'พ': '01100', 'ฟ': '0010',\n        'ม': '11', 'ย': '1011', 'ร': '010', 'ล': '0100', 'ว': '011',\n        'ส': '000', 'ห': '0000', 'อ': '10001', 'ฮ': '11011', 'ฤ': '01011',\n        'ะ': '01000', 'า': '01', 'ิ': '00100', 'ี': '00', 'ึ': '00110',\n        'ื': '0011', 'ุ': '00101', 'ู': '1110', 'เ': '0', 'แ': '0101',\n        'ไ': '01001', 'โ': '111', 'ำ': '00010', '่': '001', '้': '0001',\n        '๊': '11000', '๋': '01010', 'ั': '01101', '็': '11100', '์': '11001',\n        'ๆ': '10111', 'ฯ': '11010'\n    }\n};\nconst getCharacters = (options) => (Object.assign(Object.assign({}, baseCharacters), { '0': baseCharacters[options.priority], '1': Object.assign(Object.assign({}, baseCharacters['1']), { [options.separator]: options.space }) }));\nconst getMappedCharacters = (options, usePriority) => {\n    const mapped = {};\n    const characters = getCharacters(options);\n    for (const set in characters) {\n        mapped[set] = {};\n        for (const key in characters[set]) {\n            mapped[set][key] = characters[set][key].replace(/0/g, options.dot).replace(/1/g, options.dash);\n        }\n    }\n    if (!usePriority) {\n        delete mapped['0'];\n    }\n    return mapped;\n};\nconst swapCharacters = (options) => {\n    const swapped = {};\n    const mappedCharacters = getMappedCharacters(options, true);\n    for (const set in mappedCharacters) {\n        for (const key in mappedCharacters[set]) {\n            if (typeof swapped[mappedCharacters[set][key]] === 'undefined') {\n                swapped[mappedCharacters[set][key]] = key;\n            }\n        }\n    }\n    return swapped;\n};\n\nconst getOptions = (opts = {}) => {\n    var _a, _b, _c;\n    const options = Object.assign(Object.assign({}, opts), { dash: opts.dash || '-', dot: opts.dot || '.', space: opts.space || '/', separator: opts.separator || ' ', invalid: opts.invalid || '#', priority: opts.priority || 1, wpm: opts.wpm, unit: opts.unit || 0.08, fwUnit: opts.fwUnit || opts.unit || 0.08, volume: opts.volume || 100, oscillator: Object.assign(Object.assign({}, opts.oscillator), { type: ((_a = opts.oscillator) === null || _a === void 0 ? void 0 : _a.type) || 'sine', frequency: ((_b = opts.oscillator) === null || _b === void 0 ? void 0 : _b.frequency) || 500, onended: ((_c = opts.oscillator) === null || _c === void 0 ? void 0 : _c.onended) || null // event that fires when the tone has stopped playing\n         }) });\n    return options;\n};\n\nconst getGainTimings = (morse, opts, currentTime = 0) => {\n    const timings = [];\n    let { unit, fwUnit } = opts;\n    let time = 0;\n    if (opts.wpm) {\n        // wpm mode uses standardised units\n        unit = fwUnit = 60 / (opts.wpm * 50);\n    }\n    timings.push([0, time]);\n    const tone = (i) => {\n        timings.push([1 * (opts.volume / 100.0), currentTime + time]);\n        time += i * unit;\n    };\n    const silence = (i) => {\n        timings.push([0, currentTime + time]);\n        time += i * unit;\n    };\n    const gap = (i) => {\n        timings.push([0, currentTime + time]);\n        time += i * fwUnit;\n    };\n    for (let i = 0, addSilence = false; i <= morse.length; i++) {\n        if (morse[i] === opts.space) {\n            gap(7);\n            addSilence = false;\n        }\n        else if (morse[i] === opts.dot) {\n            if (addSilence)\n                silence(1);\n            else\n                addSilence = true;\n            tone(1);\n        }\n        else if (morse[i] === opts.dash) {\n            if (addSilence)\n                silence(1);\n            else\n                addSilence = true;\n            tone(3);\n        }\n        else if ((typeof morse[i + 1] !== 'undefined' && morse[i + 1] !== opts.space) &&\n            (typeof morse[i - 1] !== 'undefined' && morse[i - 1] !== opts.space)) {\n            gap(3);\n            addSilence = false;\n        }\n    }\n    return [timings, time];\n};\n// Source: https://github.com/mattdiamond/Recorderjs/blob/master/src/recorder.js#L155\nconst encodeWAV = (sampleRate, samples) => {\n    const buffer = new ArrayBuffer(44 + samples.length * 2);\n    const view = new DataView(buffer);\n    const writeString = (view, offset, string) => {\n        for (let i = 0; i < string.length; i++) {\n            view.setUint8(offset + i, string.charCodeAt(i));\n        }\n    };\n    // RIFF identifier\n    writeString(view, 0, 'RIFF');\n    // RIFF chunk length\n    view.setUint32(4, 36 + samples.length * 2, true);\n    // RIFF type\n    writeString(view, 8, 'WAVE');\n    // format chunk identifier\n    writeString(view, 12, 'fmt ');\n    // format chunk length\n    view.setUint32(16, 16, true);\n    // sample format (raw)\n    view.setUint16(20, 1, true);\n    // channel count\n    view.setUint16(22, 1, true);\n    // sample rate\n    view.setUint32(24, sampleRate, true);\n    // byte rate (sample rate * block align)\n    view.setUint32(28, sampleRate * 4, true);\n    // block align (channel count * bytes per sample)\n    view.setUint16(32, 2, true);\n    // bits per sample\n    view.setUint16(34, 16, true);\n    // data chunk identifier\n    writeString(view, 36, 'data');\n    // data chunk length\n    view.setUint32(40, samples.length * 2, true);\n    // to PCM\n    const floatTo16BitPCM = (output, offset, input) => {\n        for (let i = 0; i < input.length; i++, offset += 2) {\n            const s = Math.max(-1, Math.min(1, input[i]));\n            output.setInt16(offset, s < 0 ? s * 0x8000 : s * 0x7FFF, true);\n        }\n    };\n    floatTo16BitPCM(view, 44, samples);\n    return view;\n};\nconst audio = (morse, options) => {\n    let AudioContext = null;\n    let OfflineAudioContext = null;\n    let context = null;\n    let offlineContext = null;\n    let source;\n    const [gainValues, totalTime] = getGainTimings(morse, options);\n    if (AudioContext === null && typeof window !== 'undefined') {\n        AudioContext = window.AudioContext || window.webkitAudioContext;\n        context = new AudioContext();\n        source = context.createBufferSource();\n        source.connect(context.destination);\n    }\n    if (OfflineAudioContext === null && typeof window !== 'undefined') {\n        OfflineAudioContext = window.OfflineAudioContext || window.webkitOfflineAudioContext;\n        offlineContext = new OfflineAudioContext(1, 44100 * totalTime, 44100);\n    }\n    const oscillator = offlineContext.createOscillator();\n    const gainNode = offlineContext.createGain();\n    oscillator.type = options.oscillator.type;\n    oscillator.frequency.value = options.oscillator.frequency;\n    gainValues.forEach(([value, time]) => gainNode.gain.setValueAtTime(value, time));\n    oscillator.connect(gainNode);\n    gainNode.connect(offlineContext.destination);\n    source.onended = options.oscillator.onended;\n    // Inspired by: http://joesul.li/van/tale-of-no-clocks/\n    const render = new Promise(resolve => {\n        oscillator.start(0);\n        offlineContext.startRendering();\n        offlineContext.oncomplete = (e) => {\n            source.buffer = e.renderedBuffer;\n            resolve();\n        };\n    });\n    let timeout;\n    const play = async () => {\n        await render;\n        source.start(context.currentTime);\n        timeout = setTimeout(() => { stop(); }, totalTime * 1000);\n    };\n    const stop = () => {\n        clearTimeout(timeout);\n        timeout = 0;\n        source.stop(0);\n    };\n    const getWaveBlob = async () => {\n        await render;\n        const waveData = encodeWAV(offlineContext.sampleRate, source.buffer.getChannelData(0));\n        return new Blob([waveData], { 'type': 'audio/wav' });\n    };\n    const getWaveUrl = async () => {\n        const audioBlob = await getWaveBlob();\n        return URL.createObjectURL(audioBlob);\n    };\n    const exportWave = async (filename) => {\n        const waveUrl = await getWaveUrl();\n        const anchor = document.createElement('a');\n        anchor.href = waveUrl;\n        anchor.target = '_blank';\n        anchor.download = filename || 'morse.wav';\n        anchor.click();\n    };\n    return {\n        play,\n        stop,\n        getWaveBlob,\n        getWaveUrl,\n        exportWave,\n        context,\n        oscillator,\n        gainNode\n    };\n};\n\n(((name, root, factory) => {\n    if (typeof exports === 'object') {\n        module.exports = factory();\n    }\n    else if (typeof define === 'function' && define.amd) {\n        define(factory);\n    }\n    else if (root !== undefined) {\n        root[name] = factory();\n    }\n})('morse-decoder', globalThis, () => {\n    const encode = (text, opts) => {\n        const options = getOptions(opts);\n        const characters = getCharacters(options);\n        return [...text.replace(/\\s+/g, options.separator).trim().toLocaleUpperCase()].map(function (character) {\n            for (const set in characters) {\n                if (typeof characters[set] !== 'undefined' && typeof characters[set][character] !== 'undefined') {\n                    return characters[set][character];\n                }\n            }\n            return options.invalid;\n        }).join(options.separator).replace(/0/g, options.dot).replace(/1/g, options.dash);\n    };\n    const decode = (morse, opts) => {\n        const options = getOptions(opts);\n        const swapped = swapCharacters(options);\n        return morse.replace(/\\s+/g, options.separator).trim().split(options.separator).map(function (characters) {\n            if (typeof swapped[characters] !== 'undefined') {\n                return swapped[characters];\n            }\n            return options.invalid;\n        }).join('');\n    };\n    const characters = (options, usePriority) => getMappedCharacters(getOptions(options), usePriority);\n    const audio$1 = (text, opts, morseString) => {\n        const morse = morseString || encode(text, opts);\n        const options = getOptions(opts);\n        return audio(morse, options);\n    };\n    return {\n        characters,\n        decode,\n        encode,\n        audio: audio$1\n    };\n}));\n"]}