{"version":3,"file":"data-wireup-BotcVeCk.js","sources":["../src/lib/data-wireup.js"],"sourcesContent":["/**\r\n * Function to process an event firing. May optionally return true to preserve the loading state (ie for redirect).\r\n * @callback listenerFunction\r\n * @param {Event} e}\r\n * @returns {boolean | object} true if the loading state should be preserved (ie for redirect), or {disable: \"text\"} to leave disabled with new text\r\n */\r\n/**\r\n * Connect an event handler to any and all elements tagged with data-wireup-\r\n * @param {string} dataWireupTarget Element data tag to search for\r\n * @param {string} type Event handler type\r\n * @param {listenerFunction} listener Event handler function\r\n * @param {string} loadingTarget Loader element data tag to search for\r\n */\r\nexport function WireupHandlers(dataWireupTarget, type, listener, loadingTarget) {\r\n for (const element of document.querySelectorAll(\"[data-wireup-\" + dataWireupTarget + \"]\")) {\r\n element.addEventListener(type, async (e) => {\r\n let loader = element;\r\n let preserveLoader = false;\r\n try {\r\n // We can optionally set a different target for the loading text / disable / class\r\n if (loadingTarget) loader = element.querySelector(\"[data-wireup-\" + loadingTarget + \"]\");\r\n // If tagged with data-wireup-loading, we'll set the element (button) class, disabled, and content while processing the click\r\n if (loader.dataset[\"wireupLoading\"]) {\r\n loader.classList.add(\"button-loading\");\r\n loader.oldText = loader.innerHTML;\r\n loader.setAttribute(\"disabled\", \"disabled\");\r\n loader.innerText = loader.dataset[\"wireupLoading\"];\r\n }\r\n // The listener can preserve the loading state after completion if it returns true (ie for redirect)\r\n preserveLoader = await listener(e);\r\n } finally {\r\n if (preserveLoader && preserveLoader.disable) {\r\n // Change to completed text and leave button disabled\r\n loader.classList.remove(\"button-loading\");\r\n loader.innerHTML = preserveLoader.disable;\r\n } else if (!preserveLoader && loader.dataset[\"wireupLoading\"]) {\r\n loader.classList.remove(\"button-loading\");\r\n loader.removeAttribute(\"disabled\");\r\n if (loader.dataset[\"wireupLoading\"]) loader.innerHTML = loader.oldText;\r\n }\r\n }\r\n });\r\n }\r\n}\r\n\r\n/**\r\n * Clears the loading state. Useful if the loader has been left active by returning true.\r\n * @param {string} loadingTarget Loader element data tag to search for\r\n * @param {boolean} loadingState true if loading, false if done\r\n */\r\nexport function SetLoadingState(loadingTarget, loadingState) {\r\n for (const loader of document.querySelectorAll(\"[data-wireup-\" + loadingTarget + \"]\")) {\r\n if (loader.dataset[\"wireupLoading\"]) {\r\n if (loadingState) {\r\n loader.classList.add(\"button-loading\");\r\n loader.oldText = loader.innerHTML;\r\n loader.setAttribute(\"disabled\", \"disabled\");\r\n loader.innerText = loader.dataset[\"wireupLoading\"] ?? \"Loading\";\r\n } else {\r\n loader.classList.remove(\"button-loading\");\r\n loader.removeAttribute(\"disabled\");\r\n if (loader.oldText) loader.innerHTML = loader.oldText;\r\n }\r\n }\r\n }\r\n}\r\n\r\n/**\r\n * Sets contents of all elements tagged with data-contains-\r\n * @param {string} dataWireupTarget Element data tag to search for\r\n * @param {string} content Text to fill element with\r\n */\r\nexport function SetTextContent(dataWireupTarget, content) {\r\n Array.from(document.querySelectorAll(\"[data-contains-\" + dataWireupTarget + \"]\")).map(item => item.innerText = content);\r\n}\r\n\r\n/**\r\n * Show / hide any elements tagged with data-show-\r\n * @param {string} dataWireupTarget Element data tag to search for\r\n */\r\nexport function SetElementsVisible(dataWireupTarget, visible = true) {\r\n if (visible) {\r\n Array.from(document.querySelectorAll(\"[data-show-\" + dataWireupTarget + \"]\")).map(item => item.classList.remove(\"hidden\"));\r\n } else {\r\n Array.from(document.querySelectorAll(\"[data-show-\" + dataWireupTarget + \"]\")).map(item => item.classList.add(\"hidden\"));\r\n }\r\n}\r\n\r\n/**\r\n * Disable / enable any elements tagged with data-disable-\r\n * @param {string} dataWireupTarget Element data tag to search for\r\n */\r\nexport function SetElementsDisabled(dataWireupTarget, disabled = true) {\r\n if (disabled) {\r\n Array.from(document.querySelectorAll(\"[data-disable-\" + dataWireupTarget + \"]\")).map(item => item.setAttribute(\"disabled\", \"disabled\"));\r\n } else {\r\n Array.from(document.querySelectorAll(\"[data-disable-\" + dataWireupTarget + \"]\")).map(item => item.removeAttribute(\"disabled\"));\r\n }\r\n}"],"names":["WireupHandlers","dataWireupTarget","type","listener","loadingTarget","_step","_iterator","_createForOfIteratorHelper","document","querySelectorAll","_loop","element","value","addEventListener","_ref","_asyncToGenerator","_regeneratorRuntime","mark","_callee","e","loader","preserveLoader","wrap","_context","prev","next","querySelector","dataset","classList","add","oldText","innerHTML","setAttribute","innerText","sent","disable","remove","removeAttribute","finish","stop","_x","apply","this","arguments","s","n","done","err","f","SetLoadingState","loadingState","_step2","_iterator2","_loader$dataset$wireu","SetTextContent","content","Array","from","map","item","SetElementsVisible","length","undefined","SetElementsDisabled"],"mappings":"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"}