{"version":3,"file":"jena-utilities.esm.js","sources":["../lib/instruments.js","../lib/form/fillForm.js","../lib/form/getStyle.js","../lib/form/getForm.js","../node_modules/screening/lib/generateIconNMRFile.js","../lib/form/updateIconNMR.js","../lib/form/ExperimentForm.js"],"sourcesContent":["export const instruments = {\n    instrument1: {\n        solventMapping: {\n            CDCl3: 'CDCl3',\n            'DMSO-d6': 'DMSO-d6',\n        },\n        defaultExperiments: {\n            '1h': 'N proton',\n            '13c': 'N carbon',\n            cosy: 'N COSY',\n        },\n        experiments: [\n            {\n                experiment: 'N proton',\n                enabled: true,\n                parameters: [\n                    { label: 'd1', value: '' },\n                    { label: 'd9', value: '' },\n                ],\n            },\n            {\n                experiment: 'N carbon',\n                parameters: [\n                    { label: 'ds', value: '' },\n                    { label: 'ns', value: '' },\n                    { label: 'd1', value: '' },\n                ],\n            },\n            {\n                experiment: 'N COSY',\n                parameters: [],\n            },\n        ],\n    },\n    instrument2: {\n        solventMapping: {\n            CDCl3: 'Chloroform-d',\n            'DMSO-d6': 'Dimethyl sulfoxide-d6',\n        },\n        defaultExperiments: {\n            '1h': 'H1 NMR',\n            '13c': 'C13 NMR',\n            hsqc: 'HSQC',\n        },\n        experiments: [\n            {\n                experiment: 'H1 NMR',\n                parameters: [\n                    { label: 'd1', value: '' },\n                    { label: 'number of scans', value: '' },\n                ],\n            },\n            {\n                experiment: 'C13 NMR',\n                parameters: [\n                    { label: 'ds', value: '' },\n                    { label: 'ns', value: '' },\n                    { label: 'd1', value: '' },\n                ],\n            },\n            {\n                experiment: 'HSQC',\n                parameters: [],\n            },\n        ],\n    },\n};\n//# sourceMappingURL=instruments.js.map","import { instruments } from \"../instruments.js\";\nfunction collectFormData(form) {\n    const formData = {};\n    const experimentsDiv = form.document.querySelector(`#${form.id}`);\n    const activeTab = experimentsDiv.querySelector('.tab-content.active');\n    const instrumentId = activeTab?.dataset.instrument;\n    if (!instrumentId)\n        return formData;\n    formData.instrument = instrumentId;\n    formData.experiments = [];\n    const experiments = activeTab.querySelectorAll('.experiment-item');\n    for (const exp of experiments) {\n        const checkbox = exp.querySelector('.experiment-toggle');\n        const experimentData = {\n            name: checkbox.dataset.experiment,\n            enabled: checkbox.checked,\n            parameters: {},\n        };\n        for (const input of exp.querySelectorAll('.parameter-input')) {\n            experimentData.parameters[input.dataset.label] = input.value;\n        }\n        formData.experiments.push(experimentData);\n    }\n    return formData;\n}\nfunction createExperimentElement(document, experiment) {\n    const div = document.createElement('div');\n    div.className = 'experiment-item';\n    const header = document.createElement('div');\n    header.className = 'experiment-header';\n    const checkbox = document.createElement('input');\n    checkbox.type = 'checkbox';\n    checkbox.className = 'experiment-toggle';\n    checkbox.dataset.experiment = experiment.experiment;\n    checkbox.checked = experiment.enabled || false;\n    const label = document.createElement('label');\n    label.textContent = experiment.experiment;\n    label.style.cursor = 'pointer';\n    header.append(checkbox);\n    header.append(label);\n    const paramsDiv = document.createElement('div');\n    paramsDiv.className = 'experiment-parameters';\n    paramsDiv.style.display = experiment.enabled || false ? 'block' : 'none';\n    for (const param of experiment.parameters) {\n        const paramDiv = document.createElement('div');\n        paramDiv.className = 'parameter-item';\n        const paramLabel = document.createElement('label');\n        paramLabel.textContent = param.label;\n        const input = document.createElement('input');\n        input.type = 'text';\n        input.className = 'parameter-input';\n        input.dataset.label = param.label;\n        input.value = param.value;\n        paramDiv.append(paramLabel);\n        paramDiv.append(input);\n        paramsDiv.append(paramDiv);\n    }\n    div.append(header);\n    div.append(paramsDiv);\n    return div;\n}\nfunction createTabContent(form, instrumentId, instrumentData) {\n    const content = form.document.createElement('div');\n    content.className = 'tab-content';\n    content.dataset.instrument = instrumentId;\n    for (const experiment of instrumentData.experiments) {\n        content.append(createExperimentElement(form.document, experiment));\n    }\n    return content;\n}\nfunction switchTab(form, instrumentId) {\n    const experimentsDiv = form.document.querySelector(`#${form.id}`);\n    for (const tab of experimentsDiv.querySelectorAll('.tab')) {\n        tab.classList.toggle('active', tab.dataset.instrument === instrumentId);\n    }\n    for (const content of experimentsDiv.querySelectorAll('.tab-content')) {\n        content.classList.toggle('active', content.dataset.instrument === instrumentId);\n    }\n    form.onFormChange(collectFormData(form));\n}\nexport function fillForm(form) {\n    const experimentsDiv = form.document.querySelector(`#${form.id}`);\n    const tabsContainer = experimentsDiv.querySelector('#tabs');\n    const formContainer = experimentsDiv.querySelector('#form-container');\n    // Clear existing content\n    tabsContainer.innerHTML = '';\n    formContainer.innerHTML = '';\n    const instrumentIds = Object.keys(instruments);\n    for (const [index, instrumentId] of instrumentIds.entries()) {\n        const tab = form.document.createElement('button');\n        tab.className = 'tab';\n        tab.dataset.instrument = instrumentId;\n        tab.textContent = instrumentId;\n        if (index === 0)\n            tab.classList.add('active');\n        tabsContainer.append(tab);\n        const content = createTabContent(form, instrumentId, instruments[instrumentId]);\n        if (index === 0)\n            content.classList.add('active');\n        formContainer.append(content);\n    }\n    // Event delegation at experiments div level\n    experimentsDiv.addEventListener('click', (e) => {\n        if (e.target.classList.contains('tab')) {\n            switchTab(form, e.target.dataset.instrument);\n        }\n        else if (e.target.classList.contains('experiment-header') ||\n            e.target.closest('.experiment-header label')) {\n            const checkbox = e.currentTarget\n                .querySelector('.experiment-item')\n                ?.querySelector('.experiment-toggle');\n            if (checkbox &&\n                (e.target.tagName === 'LABEL' || e.target.closest('.experiment-header'))) {\n                const experimentItem = e.target.closest('.experiment-item');\n                if (experimentItem) {\n                    const checkboxInItem = experimentItem.querySelector('.experiment-toggle');\n                    if (checkboxInItem) {\n                        checkboxInItem.click();\n                    }\n                }\n            }\n        }\n    });\n    experimentsDiv.addEventListener('change', (e) => {\n        if (e.target.classList.contains('experiment-toggle')) {\n            const experimentItem = e.target.closest('.experiment-item');\n            const params = experimentItem.querySelector('.experiment-parameters');\n            params.style.display = e.target.checked ? 'block' : 'none';\n            form.onFormChange(collectFormData(form));\n        }\n    });\n    experimentsDiv.addEventListener('input', (e) => {\n        if (e.target.classList.contains('parameter-input')) {\n            form.onFormChange(collectFormData(form));\n        }\n    });\n}\n//# sourceMappingURL=fillForm.js.map","export function getStyle(id) {\n    return `#${id} {\n  max-width: 800px;\n  margin: 0 auto;\n  background-color: white;\n  padding: 20px;\n  border-radius: 8px;\n  box-shadow: 0 2px 4px rgba(0, 0, 0, 0.1);\n  box-sizing: border-box;\n}\n\n#${id} .tabs {\n  display: flex;\n  gap: 5px;\n  border-bottom: 2px solid #ddd;\n  margin-bottom: 20px;\n}\n\n#${id} .tab {\n  padding: 10px 20px;\n  background-color: #f0f0f0;\n  border: none;\n  border-radius: 5px 5px 0 0;\n  cursor: pointer;\n  font-size: 14px;\n  transition: background-color 0.3s;\n}\n\n#${id} .tab:hover {\n  background-color: #e0e0e0;\n}\n\n#${id} .tab.active {\n  background-color: #007bff;\n  color: white;\n}\n\n#${id} .tab-content {\n  display: none;\n}\n\n#${id} .tab-content.active {\n  display: block;\n}\n\n#${id} .experiment-item {\n  border: 1px solid #ddd;\n  border-radius: 5px;\n  padding: 15px;\n  margin-bottom: 10px;\n  background-color: #fafafa;\n}\n\n#${id} .experiment-header {\n  display: flex;\n  align-items: center;\n  gap: 10px;\n}\n\n#${id} .experiment-toggle {\n  width: 18px;\n  height: 18px;\n  cursor: pointer;\n}\n\n#${id} .experiment-header label {\n  font-weight: bold;\n  color: #333;\n  user-select: none;\n}\n\n#${id} .experiment-parameters {\n  margin-top: 15px;\n  padding-left: 28px;\n}\n\n#${id} .parameter-item {\n  display: flex;\n  align-items: center;\n  gap: 10px;\n  margin-bottom: 10px;\n}\n\n#${id} .parameter-item label {\n  min-width: 150px;\n  color: #555;\n}\n\n#${id} .parameter-input {\n  flex: 1;\n  padding: 8px;\n  border: 1px solid #ccc;\n  border-radius: 4px;\n  font-size: 14px;\n}\n\n#${id} .parameter-input:focus {\n  outline: none;\n  border-color: #007bff;\n}\n`;\n}\n//# sourceMappingURL=getStyle.js.map","import { getStyle } from \"./getStyle.js\";\nexport function getForm(options = {}) {\n    const { id = `instrument-${crypto.randomUUID()}` } = options;\n    return {\n        id,\n        html: `<style>${getStyle(id)}</style>\n<div id=\"${id}\">\n  <div id=\"tabs\" class=\"tabs\"></div>\n  <div id=\"form-container\" class=\"form-container\"></div>\n</div>`,\n    };\n}\n//# sourceMappingURL=getForm.js.map","/**\n * Generate iconNMR text file from requests\n * @param requests - array of PlateRequest objects\n * @param options - options for generating the file\n * @returns iconNMR text file\n */\nexport function generateIconNMRFile(requests, options = {}) {\n    const { eol = '\\r\\n', deleteExistingHolder = false, autoSubmit = false, } = options;\n    const textFile = [];\n    for (const request of requests) {\n        let experimentNumberCounter = 1;\n        const { holder } = request;\n        if (deleteExistingHolder) {\n            textFile.push(`USER ${request.user}`, `HOLDER ${holder}`, 'DELETE'); // this is required to delete already existing entries\n        }\n        textFile.push(`USER ${request.user}`, `HOLDER ${holder}`);\n        if (!autoSubmit)\n            textFile.push('NO_SUBMIT');\n        textFile.push(`NAME ${request.name}`, `TITLE ${request.title}`);\n        for (const experiment of request.experiments) {\n            let experimentNumber = experiment.experimentNumber || experimentNumberCounter++;\n            textFile.push(`EXPNO ${experimentNumber++}`, `SOLVENT ${experiment.solvent}`, `EXPERIMENT ${experiment.experiment}`);\n            if (experiment.parameters && experiment.parameters.length > 0) {\n                const parameters = [];\n                for (const parameter of experiment.parameters) {\n                    parameters.push(parameter.label, parameter.value);\n                }\n                textFile.push(`PARAMETERS ${parameters.join(',')}`);\n            }\n        }\n        textFile.push('');\n    }\n    return textFile.join(eol);\n}\n//# sourceMappingURL=generateIconNMRFile.js.map","import { generateIconNMRFile } from 'screening';\nexport function updateIconNMR(form) {\n    const { experiments, iconNMROptions } = form;\n    const { user, name, title, holder, solvent, deleteExistingHolder, autoSubmit, } = iconNMROptions;\n    const data = {\n        user,\n        name,\n        title,\n        holder,\n        experiments: [],\n    };\n    for (const experiment of experiments) {\n        const parameters = [];\n        for (const key in experiment.parameters) {\n            parameters.push({ label: key, value: experiment.parameters[key] });\n        }\n        data.experiments.push({\n            experiment: experiment.name,\n            solvent,\n            parameters,\n        });\n    }\n    form.iconNMR = generateIconNMRFile([data], {\n        deleteExistingHolder,\n        autoSubmit,\n    });\n}\n//# sourceMappingURL=updateIconNMR.js.map","/* eslint-disable unicorn/prefer-structured-clone */\nimport { fillForm } from './fillForm.js';\nimport { getForm } from \"./getForm.js\";\nimport { updateIconNMR } from \"./updateIconNMR.js\";\nexport class ExperimentForm {\n    document;\n    id;\n    html;\n    instrument = null;\n    experiments = [];\n    iconNMR;\n    iconNMROptions;\n    onFormChange;\n    constructor(document, options = {}) {\n        this.document = document;\n        const form = getForm(options);\n        this.id = options.id ?? form.id;\n        this.html = form.html;\n        this.iconNMR = '';\n        this.iconNMROptions = {\n            user: 'defaultUser',\n            name: 'defaultName',\n            title: 'defaultTitle',\n            holder: 0,\n            solvent: 'defaultSolvent',\n            deleteExistingHolder: false,\n            autoSubmit: false,\n        };\n        updateIconNMR(this);\n        this.onFormChange = (formData) => {\n            this.instrument = formData.instrument;\n            this.experiments = JSON.parse(JSON.stringify(formData.experiments)).filter((experiment) => experiment.enabled);\n            updateIconNMR(this);\n            if (options.onFormChange) {\n                options.onFormChange(formData);\n            }\n            else {\n                console.log('Form changed:', formData);\n            }\n        };\n    }\n    updateIconNMROptions(options) {\n        this.iconNMROptions = options;\n        updateIconNMR(this);\n    }\n    fillForm() {\n        fillForm(this);\n    }\n}\n//# sourceMappingURL=ExperimentForm.js.map"],"names":["instruments","instrument1","solventMapping","CDCl3","defaultExperiments","cosy","experiments","experiment","enabled","parameters","label","value","instrument2","hsqc","collectFormData","form","formData","experimentsDiv","document","querySelector","id","activeTab","instrumentId","dataset","instrument","querySelectorAll","exp","checkbox","experimentData","name","checked","input","push","createExperimentElement","div","createElement","className","header","type","textContent","style","cursor","append","paramsDiv","display","param","paramDiv","paramLabel","createTabContent","instrumentData","content","switchTab","tab","classList","toggle","onFormChange","fillForm","tabsContainer","formContainer","innerHTML","instrumentIds","Object","keys","index","entries","add","addEventListener","e","target","contains","closest","currentTarget","tagName","experimentItem","checkboxInItem","click","params","getStyle","getForm","options","crypto","randomUUID","html","generateIconNMRFile","requests","eol","deleteExistingHolder","autoSubmit","textFile","request","experimentNumberCounter","holder","user","title","experimentNumber","solvent","length","parameter","join","updateIconNMR","iconNMROptions","data","key","iconNMR","ExperimentForm","constructor","JSON","parse","stringify","filter","console","log","updateIconNMROptions"],"mappings":"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","x_google_ignoreList":[4]}