{
  "version": 3,
  "sources": ["../src/captcha.js"],
  "sourcesContent": ["(function () {\n    'use strict';\n\n    var WIDGET_SELECTOR = '[data-smartcaptcha-widget]';\n    var TOKEN_SELECTOR = '[data-smartcaptcha-token]';\n    var ERROR_SELECTOR = '[data-smartcaptcha-error]';\n    var SDK_URL = 'https://smartcaptcha.cloud.yandex.ru/captcha.js?render=onload&onload=__aliisSmartCaptchaOnload';\n    var sdkPromise = null;\n    var formStates = new WeakMap();\n    var idCounter = 0;\n\n    function ensureWidgetId(element) {\n        if (!element.id) {\n            idCounter += 1;\n            element.id = 'aliis-smartcaptcha-' + idCounter;\n        }\n        return element.id;\n    }\n\n    function getFormWidget(form) {\n        return form ? form.querySelector(WIDGET_SELECTOR) : null;\n    }\n\n    function findWidgets(scope) {\n        var root = scope || document;\n        var widgets = [];\n        if (root.matches && root.matches(WIDGET_SELECTOR)) {\n            widgets.push(root);\n        }\n        if (root.querySelectorAll) {\n            widgets = widgets.concat(Array.prototype.slice.call(root.querySelectorAll(WIDGET_SELECTOR)));\n        }\n        return widgets;\n    }\n\n    function getTokenInput(widget) {\n        var form = widget.closest('form');\n        var inputName = widget.dataset.inputName || 'captcha_token';\n        var scope = form || widget.parentElement || document;\n        if (scope.querySelector && window.CSS && typeof window.CSS.escape === 'function') {\n            return scope.querySelector('input[name=\"' + window.CSS.escape(inputName) + '\"]');\n        }\n        return scope.querySelector ? scope.querySelector(TOKEN_SELECTOR) : null;\n    }\n\n    function getErrorNode(widget) {\n        var wrapper = widget.closest('[data-smartcaptcha-wrapper]');\n        return wrapper ? wrapper.querySelector(ERROR_SELECTOR) : null;\n    }\n\n    function showError(widget, message) {\n        var errorNode = getErrorNode(widget);\n        if (!errorNode) {\n            return;\n        }\n        errorNode.textContent = message;\n        errorNode.classList.remove('hidden');\n    }\n\n    function clearError(widget) {\n        var errorNode = getErrorNode(widget);\n        if (!errorNode) {\n            return;\n        }\n        errorNode.textContent = '';\n        errorNode.classList.add('hidden');\n    }\n\n    function clearToken(widget) {\n        var input = getTokenInput(widget);\n        if (input) {\n            input.value = '';\n        }\n    }\n\n    function loadSdk() {\n        if (window.smartCaptcha) {\n            return Promise.resolve(window.smartCaptcha);\n        }\n        if (sdkPromise) {\n            return sdkPromise;\n        }\n\n        sdkPromise = new Promise(function (resolve, reject) {\n            var existing = document.querySelector('script[data-aliis-smartcaptcha-sdk]');\n\n            window.__aliisSmartCaptchaOnload = function () {\n                if (window.smartCaptcha) {\n                    resolve(window.smartCaptcha);\n                } else {\n                    reject(new Error('SmartCaptcha SDK loaded without window.smartCaptcha'));\n                }\n                try {\n                    delete window.__aliisSmartCaptchaOnload;\n                } catch (e) {\n                    window.__aliisSmartCaptchaOnload = undefined;\n                }\n            };\n\n            if (existing) {\n                existing.addEventListener('error', function () {\n                    reject(new Error('SmartCaptcha SDK failed to load'));\n                });\n                return;\n            }\n\n            var script = document.createElement('script');\n            script.src = SDK_URL;\n            script.async = true;\n            script.defer = true;\n            script.dataset.aliisSmartcaptchaSdk = 'true';\n            script.onerror = function () {\n                reject(new Error('SmartCaptcha SDK failed to load'));\n            };\n            document.head.appendChild(script);\n        });\n\n        return sdkPromise;\n    }\n\n    function getState(form) {\n        var state = formStates.get(form);\n        if (!state) {\n            state = {\n                pending: false,\n                bypassNextSubmit: false,\n                submitter: null,\n            };\n            formStates.set(form, state);\n        }\n        return state;\n    }\n\n    function continueSubmit(form, state) {\n        state.pending = false;\n        state.bypassNextSubmit = true;\n\n        if (typeof form.requestSubmit === 'function') {\n            if (state.submitter) {\n                form.requestSubmit(state.submitter);\n            } else {\n                form.requestSubmit();\n            }\n        } else {\n            form.submit();\n        }\n    }\n\n    function handleSubmit(event) {\n        var form = event.currentTarget;\n        var state = getState(form);\n        if (state.bypassNextSubmit) {\n            state.bypassNextSubmit = false;\n            return;\n        }\n\n        var widget = getFormWidget(form);\n        if (!widget) {\n            return;\n        }\n\n        var input = getTokenInput(widget);\n        if (input && input.value) {\n            return;\n        }\n\n        event.preventDefault();\n        state.submitter = event.submitter || null;\n\n        if (state.pending) {\n            return;\n        }\n\n        var widgetId = widget.dataset.widgetId;\n        if (!window.smartCaptcha || !widgetId) {\n            showError(widget, '\u041A\u0430\u043F\u0447\u0430 \u0437\u0430\u0433\u0440\u0443\u0436\u0430\u0435\u0442\u0441\u044F. \u041F\u043E\u0432\u0442\u043E\u0440\u0438\u0442\u0435 \u043F\u043E\u043F\u044B\u0442\u043A\u0443 \u0447\u0435\u0440\u0435\u0437 \u043D\u0435\u0441\u043A\u043E\u043B\u044C\u043A\u043E \u0441\u0435\u043A\u0443\u043D\u0434.');\n            return;\n        }\n\n        if (widget.dataset.invisible !== 'true') {\n            showError(widget, '\u041F\u043E\u0434\u0442\u0432\u0435\u0440\u0434\u0438\u0442\u0435, \u0447\u0442\u043E \u0432\u044B \u043D\u0435 \u0440\u043E\u0431\u043E\u0442.');\n            return;\n        }\n\n        state.pending = true;\n        clearError(widget);\n        window.smartCaptcha.execute(widgetId);\n    }\n\n    function attachFormHandler(widget) {\n        var form = widget.closest('form');\n        if (!form || form.dataset.smartcaptchaSubmitHandler === 'true') {\n            return;\n        }\n        form.addEventListener('submit', handleSubmit);\n        form.dataset.smartcaptchaSubmitHandler = 'true';\n    }\n\n    function subscribe(widget, eventName, handler) {\n        var widgetId = widget.dataset.widgetId;\n        if (!window.smartCaptcha || !widgetId || typeof window.smartCaptcha.subscribe !== 'function') {\n            return null;\n        }\n        try {\n            return window.smartCaptcha.subscribe(widgetId, eventName, handler);\n        } catch (e) {\n            return null;\n        }\n    }\n\n    function renderWidget(widget) {\n        if (widget.dataset.captchaInitialized === 'true' || widget.dataset.captchaInitialized === 'loading') {\n            return;\n        }\n\n        var sitekey = widget.dataset.sitekey;\n        if (!sitekey) {\n            return;\n        }\n\n        widget.dataset.captchaInitialized = 'loading';\n\n        loadSdk().then(function (smartCaptcha) {\n            var form = widget.closest('form');\n            var containerId = ensureWidgetId(widget);\n            var widgetId = smartCaptcha.render(containerId, {\n                sitekey: sitekey,\n                hl: widget.dataset.hl || 'ru',\n                invisible: widget.dataset.invisible === 'true',\n                shieldPosition: widget.dataset.shieldPosition || 'bottom-right',\n                callback: function (token) {\n                    var input = getTokenInput(widget);\n                    if (input) {\n                        input.value = token || '';\n                    }\n                    clearError(widget);\n\n                    if (form) {\n                        var state = getState(form);\n                        if (state.pending && token) {\n                            continueSubmit(form, state);\n                        }\n                    }\n                },\n            });\n\n            widget.dataset.widgetId = String(widgetId);\n            widget.dataset.captchaInitialized = 'true';\n            attachFormHandler(widget);\n\n            subscribe(widget, 'token-expired', function () {\n                clearToken(widget);\n            });\n            subscribe(widget, 'network-error', function () {\n                var state = form ? getState(form) : null;\n                if (state) {\n                    state.pending = false;\n                }\n                showError(widget, '\u041D\u0435 \u0443\u0434\u0430\u043B\u043E\u0441\u044C \u0437\u0430\u0433\u0440\u0443\u0437\u0438\u0442\u044C \u043A\u0430\u043F\u0447\u0443. \u041F\u0440\u043E\u0432\u0435\u0440\u044C\u0442\u0435 \u0441\u043E\u0435\u0434\u0438\u043D\u0435\u043D\u0438\u0435 \u0438 \u043F\u043E\u043F\u0440\u043E\u0431\u0443\u0439\u0442\u0435 \u0441\u043D\u043E\u0432\u0430.');\n            });\n            subscribe(widget, 'javascript-error', function () {\n                var state = form ? getState(form) : null;\n                if (state) {\n                    state.pending = false;\n                }\n                showError(widget, '\u041A\u0430\u043F\u0447\u0430 \u0432\u0440\u0435\u043C\u0435\u043D\u043D\u043E \u043D\u0435\u0434\u043E\u0441\u0442\u0443\u043F\u043D\u0430. \u041E\u0431\u043D\u043E\u0432\u0438\u0442\u0435 \u0441\u0442\u0440\u0430\u043D\u0438\u0446\u0443 \u0438 \u043F\u043E\u043F\u0440\u043E\u0431\u0443\u0439\u0442\u0435 \u0441\u043D\u043E\u0432\u0430.');\n            });\n        }).catch(function () {\n            widget.dataset.captchaInitialized = 'error';\n            showError(widget, '\u041D\u0435 \u0443\u0434\u0430\u043B\u043E\u0441\u044C \u0437\u0430\u0433\u0440\u0443\u0437\u0438\u0442\u044C \u043A\u0430\u043F\u0447\u0443. \u041E\u0431\u043D\u043E\u0432\u0438\u0442\u0435 \u0441\u0442\u0440\u0430\u043D\u0438\u0446\u0443 \u0438 \u043F\u043E\u043F\u0440\u043E\u0431\u0443\u0439\u0442\u0435 \u0441\u043D\u043E\u0432\u0430.');\n        });\n    }\n\n    function init(root) {\n        var widgets = findWidgets(root);\n        for (var i = 0; i < widgets.length; i += 1) {\n            renderWidget(widgets[i]);\n        }\n    }\n\n    function reset(root) {\n        var widgets = findWidgets(root);\n        for (var i = 0; i < widgets.length; i += 1) {\n            clearToken(widgets[i]);\n            clearError(widgets[i]);\n            if (window.smartCaptcha && widgets[i].dataset.widgetId) {\n                window.smartCaptcha.reset(widgets[i].dataset.widgetId);\n            }\n        }\n    }\n\n    function destroy(root) {\n        var widgets = findWidgets(root);\n        for (var i = 0; i < widgets.length; i += 1) {\n            if (window.smartCaptcha && widgets[i].dataset.widgetId) {\n                window.smartCaptcha.destroy(widgets[i].dataset.widgetId);\n            }\n            delete widgets[i].dataset.widgetId;\n            delete widgets[i].dataset.captchaInitialized;\n        }\n    }\n\n    window.aliisCaptcha = {\n        init: init,\n        reset: reset,\n        destroy: destroy,\n    };\n\n    document.addEventListener('DOMContentLoaded', function () {\n        init(document);\n    });\n\n    document.body.addEventListener('htmx:beforeSwap', function (event) {\n        destroy(event.detail && event.detail.target ? event.detail.target : document);\n    });\n\n    document.body.addEventListener('htmx:afterSwap', function (event) {\n        init(event.detail && event.detail.target ? event.detail.target : document);\n    });\n})();\n"],
  "mappings": "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",
  "names": ["WIDGET_SELECTOR", "TOKEN_SELECTOR", "ERROR_SELECTOR", "SDK_URL", "sdkPromise", "formStates", "idCounter", "ensureWidgetId", "element", "getFormWidget", "form", "findWidgets", "scope", "root", "widgets", "getTokenInput", "widget", "inputName", "getErrorNode", "wrapper", "showError", "message", "errorNode", "clearError", "clearToken", "input", "loadSdk", "resolve", "reject", "existing", "script", "getState", "state", "continueSubmit", "handleSubmit", "event", "widgetId", "attachFormHandler", "subscribe", "eventName", "handler", "renderWidget", "sitekey", "smartCaptcha", "containerId", "token", "init", "i", "reset", "destroy"]
}
