{"version":3,"file":"admin-6794f515.js","sources":["../../../../node_modules/vanilla-nested/app/assets/javascripts/vanilla_nested.js"],"sourcesContent":["(function(){\n // Get the html from the data attribute and insert the new fields on the container\n // \"event\" is the click event of the link created by the rails helper\n window.addVanillaNestedFields = function(element) {\n if (!element.classList.contains('vanilla-nested-add'))\n element = element.closest('.vanilla-nested-add')\n\n const data = element.dataset;\n const container = document.querySelector(data.containerSelector);\n const newHtml = data.html.replace(/_idx_placeholder_/g, Date.now());\n\n // insert and store reference\n let inserted;\n switch (data.methodForInsert) {\n case ('append'):\n container.insertAdjacentHTML('beforeend', newHtml);\n inserted = container.lastElementChild;\n break;\n case ('prepend'):\n container.insertAdjacentHTML('afterbegin', newHtml);\n inserted = container.firstElementChild;\n break;\n }\n\n // add a class to show it was added dynamically\n inserted.classList.add('added-by-vanilla-nested');\n\n _dispatchEvent(container, 'vanilla-nested:fields-added', element, {added: inserted})\n\n // dispatch an event if we reached the limit configured on the model\n if (data.limit) {\n let nestedElements = container.querySelectorAll('[name$=\"[_destroy]\"][value=\"0\"]').length;\n if (nestedElements >= data.limit)\n _dispatchEvent(container, 'vanilla-nested:fields-limit-reached', element)\n }\n }\n\n // Removes the fields or hides them until the undo timer times out\n // \"event\" is the click event of the link created by the rails helper\n window.removeVanillaNestedFields = function(element) {\n if (!element.classList.contains('vanilla-nested-remove'))\n element = element.closest('.vanilla-nested-remove')\n\n const data = element.dataset;\n let wrapper = element.parentElement;\n const sel = data.fieldsWrapperSelector;\n if (sel) wrapper = element.closest(sel);\n\n if (data.undoTimeout) {\n hideFieldsWithUndo(wrapper, element);\n _dispatchEvent(wrapper, 'vanilla-nested:fields-hidden', element);\n } else {\n hideWrapper(wrapper);\n unhideFields(wrapper);\n _dispatchEvent(wrapper, 'vanilla-nested:fields-removed', element);\n }\n wrapper.querySelector('[name$=\"[_destroy]\"]').value = '1';\n }\n\n // Hides an element, mainly the wrapper of a group of fields\n // \"wrapper\" is the wrapper of the link to remove fields\n function hideWrapper(wrapper) {\n if (wrapper.classList.contains('added-by-vanilla-nested')) {\n wrapper.remove();\n } else {\n wrapper.classList.add('removed-by-vanilla-nested');\n const destroyInput = wrapper.querySelector('[name$=\"[_destroy]\"');\n wrapper.innerHTML = '';\n wrapper.insertAdjacentElement('afterbegin', destroyInput);\n }\n }\n\n // Unhides the children given a fields wrapper\n // \"wrapper\" is the wrapper of the link to remove fields\n function unhideFields(wrapper) {\n [...wrapper.children].forEach(child => {\n if (child.dataset.hasAttributeStyle) {\n child.style.display = child.dataset.originalDisplay;\n } else {\n child.removeAttribute(\"style\");\n }\n });\n }\n\n // Hides an element and adds an \"undo\" link to unhide it\n // \"wrapper\" is the wrapper to hide\n // \"element\" is the link to remove the wrapper\n function hideFieldsWithUndo(wrapper, element) {\n wrapper.classList.add('hidden-by-vanilla-nested');\n [...wrapper.children].forEach(child => {\n // store original style for after undo\n if (child.getAttribute(\"style\")) {\n child.dataset.hasAttributeStyle = true;\n child.dataset.originalDisplay = child.style.display;\n }\n\n child.style.display = 'none';\n });\n\n // add the 'undo' link with it's callback\n const undoLink = _createUndoWithElementsData(element.dataset);\n wrapper.appendChild(undoLink);\n\n const _onUndoClicked = function(e) {\n e.preventDefault();\n clearTimeout(timer);\n unhideFields(wrapper);\n wrapper.querySelector('[name$=\"[_destroy]\"]').value = '0';\n wrapper.classList.remove('hidden-by-vanilla-nested');\n _dispatchEvent(wrapper, 'vanilla-nested:fields-hidden-undo', undoLink);\n undoLink.remove();\n }\n\n undoLink.addEventListener('click', _onUndoClicked);\n\n // start the timer\n const _onTimerCompleted = function() {\n hideWrapper(wrapper);\n wrapper.classList.remove('hidden-by-vanilla-nested');\n unhideFields(wrapper);\n _dispatchEvent(wrapper, 'vanilla-nested:fields-removed', undoLink);\n undoLink.remove();\n }\n\n let ms = element.dataset.undoTimeout;\n let timer = setTimeout(_onTimerCompleted, ms);\n }\n\n function _dispatchEvent(element, eventName, triggeredBy, details) {\n if (!details) details = {};\n details.triggeredBy = triggeredBy;\n\n let event = new CustomEvent(eventName, {bubbles: true, detail: details})\n element.dispatchEvent(event);\n }\n\n function _createUndoWithElementsData(data) {\n const undo = document.createElement('A');\n\n undo.classList.add('vanilla-nested-undo');\n const classes = data.undoLinkClasses;\n if (classes)\n undo.classList.add(...classes.split(' '));\n\n undo.innerText = data.undoText;\n\n return undo;\n }\n\n function initVanillaNested() {\n document.addEventListener('click', ev => {\n const addVanillaNested =\n ev.target.classList.contains('vanilla-nested-add') ||\n ev.target.closest('.vanilla-nested-add');\n\n if (addVanillaNested) {\n ev.preventDefault();\n addVanillaNestedFields(ev.target);\n }\n })\n\n document.addEventListener('click', ev => {\n const removeVanillaNested =\n ev.target.classList.contains('vanilla-nested-remove') ||\n ev.target.closest('.vanilla-nested-remove');\n\n if (removeVanillaNested) {\n ev.preventDefault();\n removeVanillaNestedFields(ev.target);\n }\n })\n }\n\n let vanillaNestedInitialized = false\n const initOnce = () => {\n if (!vanillaNestedInitialized) {\n vanillaNestedInitialized = true\n initVanillaNested()\n }\n }\n\n if ([\"complete\", \"interactive\"].includes(document.readyState)) {\n // if DOMContentLoaded was already fired\n initOnce()\n } else {\n // else wait for it\n document.addEventListener(\"DOMContentLoaded\", () => initOnce())\n }\n})()\n"],"names":["element","data","container","newHtml","inserted","_dispatchEvent","wrapper","sel","hideFieldsWithUndo","hideWrapper","unhideFields","destroyInput","child","undoLink","_createUndoWithElementsData","_onUndoClicked","e","timer","_onTimerCompleted","ms","eventName","triggeredBy","details","event","undo","classes","initVanillaNested","ev","vanillaNestedInitialized","initOnce"],"mappings":"8CAAC,UAAU,CAGT,OAAO,uBAAyB,SAASA,EAAS,CAC3CA,EAAQ,UAAU,SAAS,oBAAoB,IAClDA,EAAUA,EAAQ,QAAQ,qBAAqB,GAEjD,MAAMC,EAAOD,EAAQ,QACfE,EAAY,SAAS,cAAcD,EAAK,iBAAiB,EACzDE,EAAUF,EAAK,KAAK,QAAQ,qBAAsB,KAAK,IAAG,CAAE,EAGlE,IAAIG,EACJ,OAAQH,EAAK,gBAAe,CAC1B,IAAM,SACJC,EAAU,mBAAmB,YAAaC,CAAO,EACjDC,EAAWF,EAAU,iBACrB,MACF,IAAM,UACJA,EAAU,mBAAmB,aAAcC,CAAO,EAClDC,EAAWF,EAAU,kBACrB,KACH,CAGDE,EAAS,UAAU,IAAI,yBAAyB,EAEhDC,EAAeH,EAAW,8BAA+BF,EAAS,CAAC,MAAOI,CAAQ,CAAC,EAG/EH,EAAK,OACcC,EAAU,iBAAiB,iCAAiC,EAAE,QAC7DD,EAAK,OACzBI,EAAeH,EAAW,sCAAuCF,CAAO,CAE7E,EAID,OAAO,0BAA4B,SAASA,EAAS,CAC9CA,EAAQ,UAAU,SAAS,uBAAuB,IACrDA,EAAUA,EAAQ,QAAQ,wBAAwB,GAEpD,MAAMC,EAAOD,EAAQ,QACrB,IAAIM,EAAUN,EAAQ,cACtB,MAAMO,EAAMN,EAAK,sBACbM,IAAKD,EAAUN,EAAQ,QAAQO,CAAG,GAElCN,EAAK,aACPO,EAAmBF,EAASN,CAAO,EACnCK,EAAeC,EAAS,+BAAgCN,CAAO,IAE/DS,EAAYH,CAAO,EACnBI,EAAaJ,CAAO,EACpBD,EAAeC,EAAS,gCAAiCN,CAAO,GAElEM,EAAQ,cAAc,sBAAsB,EAAE,MAAQ,GACvD,EAID,SAASG,EAAYH,EAAS,CAC5B,GAAIA,EAAQ,UAAU,SAAS,yBAAyB,EACtDA,EAAQ,OAAM,MACT,CACLA,EAAQ,UAAU,IAAI,2BAA2B,EACjD,MAAMK,EAAeL,EAAQ,cAAc,qBAAqB,EAChEA,EAAQ,UAAY,GACpBA,EAAQ,sBAAsB,aAAcK,CAAY,CACzD,CACF,CAID,SAASD,EAAaJ,EAAS,CAC7B,CAAC,GAAGA,EAAQ,QAAQ,EAAE,QAAQM,GAAS,CACjCA,EAAM,QAAQ,kBAChBA,EAAM,MAAM,QAAUA,EAAM,QAAQ,gBAEpCA,EAAM,gBAAgB,OAAO,CAErC,CAAK,CACF,CAKD,SAASJ,EAAmBF,EAASN,EAAS,CAC5CM,EAAQ,UAAU,IAAI,0BAA0B,EAChD,CAAC,GAAGA,EAAQ,QAAQ,EAAE,QAAQM,GAAS,CAEjCA,EAAM,aAAa,OAAO,IAC5BA,EAAM,QAAQ,kBAAoB,GAClCA,EAAM,QAAQ,gBAAkBA,EAAM,MAAM,SAG9CA,EAAM,MAAM,QAAU,MAC5B,CAAK,EAGD,MAAMC,EAAWC,EAA4Bd,EAAQ,OAAO,EAC5DM,EAAQ,YAAYO,CAAQ,EAE5B,MAAME,EAAiB,SAASC,EAAG,CACjCA,EAAE,eAAc,EAChB,aAAaC,CAAK,EAClBP,EAAaJ,CAAO,EACpBA,EAAQ,cAAc,sBAAsB,EAAE,MAAQ,IACtDA,EAAQ,UAAU,OAAO,0BAA0B,EACnDD,EAAeC,EAAS,oCAAqCO,CAAQ,EACrEA,EAAS,OAAM,CAChB,EAEDA,EAAS,iBAAiB,QAASE,CAAc,EAGjD,MAAMG,EAAoB,UAAW,CACnCT,EAAYH,CAAO,EACnBA,EAAQ,UAAU,OAAO,0BAA0B,EACnDI,EAAaJ,CAAO,EACpBD,EAAeC,EAAS,gCAAiCO,CAAQ,EACjEA,EAAS,OAAM,CAChB,EAED,IAAIM,EAAKnB,EAAQ,QAAQ,YACrBiB,EAAQ,WAAWC,EAAmBC,CAAE,CAC7C,CAED,SAASd,EAAeL,EAASoB,EAAWC,EAAaC,EAAS,CAC3DA,IAASA,EAAU,IACxBA,EAAQ,YAAcD,EAEtB,IAAIE,EAAQ,IAAI,YAAYH,EAAW,CAAC,QAAS,GAAM,OAAQE,CAAO,CAAC,EACvEtB,EAAQ,cAAcuB,CAAK,CAC5B,CAED,SAAST,EAA4Bb,EAAM,CACzC,MAAMuB,EAAO,SAAS,cAAc,GAAG,EAEvCA,EAAK,UAAU,IAAI,qBAAqB,EACxC,MAAMC,EAAUxB,EAAK,gBACrB,OAAIwB,GACFD,EAAK,UAAU,IAAI,GAAGC,EAAQ,MAAM,GAAG,CAAC,EAE1CD,EAAK,UAAYvB,EAAK,SAEfuB,CACR,CAED,SAASE,GAAoB,CAC3B,SAAS,iBAAiB,QAASC,GAAM,EAErCA,EAAG,OAAO,UAAU,SAAS,oBAAoB,GACjDA,EAAG,OAAO,QAAQ,qBAAqB,KAGvCA,EAAG,eAAc,EACjB,uBAAuBA,EAAG,MAAM,EAExC,CAAK,EAED,SAAS,iBAAiB,QAASA,GAAM,EAErCA,EAAG,OAAO,UAAU,SAAS,uBAAuB,GACpDA,EAAG,OAAO,QAAQ,wBAAwB,KAG1CA,EAAG,eAAc,EACjB,0BAA0BA,EAAG,MAAM,EAE3C,CAAK,CACF,CAED,IAAIC,EAA2B,GAC/B,MAAMC,EAAW,IAAM,CAChBD,IACHA,EAA2B,GAC3BF,EAAmB,EAEtB,EAEG,CAAC,WAAY,aAAa,EAAE,SAAS,SAAS,UAAU,EAE1DG,EAAU,EAGV,SAAS,iBAAiB,mBAAoB,IAAMA,EAAQ,CAAE,CAElE,GAAC","x_google_ignoreList":[0]}