Uname: Linux premium294.web-hosting.com 4.18.0-553.45.1.lve.el8.x86_64 #1 SMP Wed Mar 26 12:08:09 UTC 2025 x86_64
Software: LiteSpeed
PHP version: 8.1.32 [ PHP INFO ] PHP os: Linux
Server Ip: 104.21.96.1
Your Ip: 216.73.216.223
User: mjbynoyq (1574) | Group: mjbynoyq (1570)
Safe Mode: OFF
Disable Function:
NONE

name : promotion-widget.js.map
{"version":3,"file":"promotion-widget.js","mappings":"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","sources":["webpack://header-footer-elementor/webpack/bootstrap","webpack://header-footer-elementor/webpack/runtime/compat get default export","webpack://header-footer-elementor/webpack/runtime/define property getters","webpack://header-footer-elementor/webpack/runtime/hasOwnProperty shorthand","webpack://header-footer-elementor/external window [\"wp\",\"domReady\"]","webpack://header-footer-elementor/external window [\"wp\",\"element\"]","webpack://header-footer-elementor/./src/Components/PromotionWidget.jsx","webpack://header-footer-elementor/./src/promotion-widget.js"],"sourcesContent":["// The require scope\nvar __webpack_require__ = {};\n\n","// getDefaultExport function for compatibility with non-harmony modules\n__webpack_require__.n = (module) => {\n\tvar getter = module && module.__esModule ?\n\t\t() => (module['default']) :\n\t\t() => (module);\n\t__webpack_require__.d(getter, { a: getter });\n\treturn getter;\n};","// define getter functions for harmony exports\n__webpack_require__.d = (exports, definition) => {\n\tfor(var key in definition) {\n\t\tif(__webpack_require__.o(definition, key) && !__webpack_require__.o(exports, key)) {\n\t\t\tObject.defineProperty(exports, key, { enumerable: true, get: definition[key] });\n\t\t}\n\t}\n};","__webpack_require__.o = (obj, prop) => (Object.prototype.hasOwnProperty.call(obj, prop))","const __WEBPACK_NAMESPACE_OBJECT__ = window[\"wp\"][\"domReady\"];","const __WEBPACK_NAMESPACE_OBJECT__ = window[\"wp\"][\"element\"];","import { useEffect } from '@wordpress/element';\n\nconst PromotionWidget = () => {\n    useEffect(() => {\n        // Global variables to track state\n        let lastClickedWidgetType = null;\n        let continuousCheckInterval = null;\n        let searchObserver = null;\n        \n        // Function to customize the promotion dialog\n        const customizePromotionDialog = (forceUaeWidget = false) => {\n            const dialog = parent.document.querySelector('#elementor-element--promotion__dialog');\n            if (!dialog) return false;\n            \n            const defaultBtn = dialog.querySelector('.dialog-buttons-action:not(.uae-upgrade-button)');\n            if (!defaultBtn) return false;\n            \n            // Always show our button in search results or if forced\n            const shouldShowUaeButton = forceUaeWidget || lastClickedWidgetType === 'uae';\n            \n            // Clean up any previous custom buttons to avoid duplicates\n            const existingCustomBtns = dialog.querySelectorAll('.uae-upgrade-button');\n            existingCustomBtns.forEach(btn => btn.remove());\n            \n            if (shouldShowUaeButton) {\n                // Hide the default button\n                defaultBtn.style.display = 'none';\n                \n                // Create our custom button\n                const button = document.createElement('a');\n                button.textContent = 'Upgrade Now';\n                \n                // Get widget name from the dialog title\n                const dialogTitle = dialog.querySelector('.dialog-header');\n                let widgetTitle = 'widget';\n                \n                if (dialogTitle && dialogTitle.textContent) {\n                    widgetTitle = dialogTitle.textContent.trim().toLowerCase().replace(/\\s+/g, '-');\n                }\n                \n                // Set href with dynamic widget title in utm_medium\n                button.setAttribute('href', `https://ultimateelementor.com/pricing/?utm_source=plugin-editor&utm_medium=${widgetTitle}-promo&utm_campaign=uae-upgrade`);\n                button.setAttribute('target', '_blank');\n                button.classList.add(\n                    'dialog-button', \n                    'dialog-action', \n                    'dialog-buttons-action', \n                    'elementor-button', \n                    'go-pro', \n                    'elementor-button-success', \n                    'uae-upgrade-button'\n                );\n                \n                // Insert our button\n                defaultBtn.insertAdjacentElement('afterend', button);\n                \n                // Add event listener to prevent default behavior\n                button.addEventListener('click', (e) => {\n                    e.stopPropagation();\n                });\n                \n                // Mark the dialog as customized\n                dialog.setAttribute('data-uae-customized', 'true');\n                \n                return true;\n            } else {\n                // Not our widget, make sure default button is visible\n                defaultBtn.style.display = '';\n                dialog.removeAttribute('data-uae-customized');\n                return true;\n            }\n        };\n        \n        // Function to check if a widget is a UAE widget\n        const isUaeWidget = (widget) => {\n            if (!widget) return false;\n            \n            // Check if it has the hfe class in the icon\n            const icon = widget.querySelector('.icon > i');\n            const hasHfeClass = icon && icon.className.includes('hfe');\n            \n            // Check if it's in our category\n            const isInUaeCategory = widget.closest('#elementor-panel-category-hfe-widgets') !== null;\n            \n            return hasHfeClass || isInUaeCategory;\n        };\n        \n        // Function to start continuous checking for dialog changes\n        const startContinuousCheck = () => {\n            // Clear any existing interval\n            if (continuousCheckInterval) {\n                clearInterval(continuousCheckInterval);\n            }\n            \n            // Set up a new interval to check every 100ms\n            continuousCheckInterval = setInterval(() => {\n                const dialog = parent.document.querySelector('#elementor-element--promotion__dialog');\n                if (!dialog) return;\n                \n                if (lastClickedWidgetType === 'uae') {\n                    const defaultBtn = dialog.querySelector('.dialog-buttons-action:not(.uae-upgrade-button)');\n                    const customBtn = dialog.querySelector('.uae-upgrade-button');\n                    \n                    // If default button is visible or our button is missing, fix it\n                    if ((defaultBtn && defaultBtn.style.display !== 'none') || !customBtn) {\n                        customizePromotionDialog(true);\n                    }\n                }\n            }, 100);\n            \n            // Safety timeout to stop checking after 10 seconds\n            setTimeout(() => {\n                if (continuousCheckInterval) {\n                    clearInterval(continuousCheckInterval);\n                    continuousCheckInterval = null;\n                }\n            }, 10000);\n        };\n        \n        // Handle clicks on promotion widgets\n        const handleProWidgetClick = (e) => {\n            // Find the clicked promotion widget\n            let clickedWidget = null;\n            const allProWidgets = parent.document.querySelectorAll('.elementor-element--promotion');\n            \n            for (let i = 0; i < allProWidgets.length; i++) {\n                if (allProWidgets[i].contains(e.target)) {\n                    clickedWidget = allProWidgets[i];\n                    break;\n                }\n            }\n            \n            if (!clickedWidget) return;\n            \n            // Check if it's our widget\n            const isUae = isUaeWidget(clickedWidget);\n            \n            // Update the last clicked widget type\n            lastClickedWidgetType = isUae ? 'uae' : 'other';\n            \n            // Start continuous checking for dialog changes\n            startContinuousCheck();\n            \n            // Also set up multiple immediate checks with increasing delays\n            const delays = [10, 30, 50, 100, 200, 300, 500, 1000, 1500, 2000];\n            delays.forEach(delay => {\n                setTimeout(() => {\n                    const dialog = parent.document.querySelector('#elementor-element--promotion__dialog');\n                    if (dialog) {\n                        customizePromotionDialog(isUae);\n                    }\n                }, delay);\n            });\n        };\n        \n        // Create a mutation observer to watch for dialog changes\n        const createDialogObserver = () => {\n            const observer = new MutationObserver((mutations) => {\n                for (const mutation of mutations) {\n                    // Look for added nodes that might be the dialog\n                    if (mutation.addedNodes.length) {\n                        for (const node of mutation.addedNodes) {\n                            if (node.id === 'elementor-element--promotion__dialog') {\n                                // Dialog was just added, customize it\n                                customizePromotionDialog(lastClickedWidgetType === 'uae');\n                                startContinuousCheck();\n                            }\n                        }\n                    }\n                    \n                    // Also check for attribute changes on the dialog\n                    if (mutation.type === 'attributes' && \n                        mutation.target.id === 'elementor-element--promotion__dialog') {\n                        if (lastClickedWidgetType === 'uae') {\n                            customizePromotionDialog(true);\n                        }\n                    }\n                }\n                \n                // Always check if dialog exists and needs customization\n                const dialog = parent.document.querySelector('#elementor-element--promotion__dialog');\n                if (dialog && lastClickedWidgetType === 'uae') {\n                    const defaultBtn = dialog.querySelector('.dialog-buttons-action:not(.uae-upgrade-button)');\n                    const customBtn = dialog.querySelector('.uae-upgrade-button');\n                    \n                    // If default button is visible or our button is missing, fix it\n                    if ((defaultBtn && defaultBtn.style.display !== 'none') || !customBtn) {\n                        customizePromotionDialog(true);\n                    }\n                }\n            });\n            \n            // Observe the body for changes\n            if (parent.document.body) {\n                observer.observe(parent.document.body, { \n                    childList: true, \n                    subtree: true,\n                    attributes: true,\n                    attributeFilter: ['style', 'class', 'id']\n                });\n            }\n            \n            return observer;\n        };\n        \n        // Special function to handle search results\n        const setupSearchResultsHandler = () => {\n            // If we already have an observer, disconnect it\n            if (searchObserver) {\n                searchObserver.disconnect();\n                searchObserver = null;\n            }\n            \n            // Create a new observer specifically for search results\n            searchObserver = new MutationObserver((mutations) => {\n                // Check if search results are visible\n                const searchWrapper = parent.document.querySelector('#elementor-panel-elements-search-wrapper');\n                if (!searchWrapper) return;\n                \n                // Process all promotion widgets in search results\n                const searchPromoWidgets = searchWrapper.querySelectorAll('.elementor-element--promotion');\n                if (searchPromoWidgets.length === 0) return;\n                                \n                // Add click handlers to all promotion widgets in search results\n                searchPromoWidgets.forEach(widget => {\n                    // Remove any existing click handlers\n                    widget.removeEventListener('click', handleSearchWidgetClick);\n                    \n                    // Add our click handler\n                    widget.addEventListener('click', handleSearchWidgetClick);\n                    \n                    // Mark this widget as processed\n                    widget.setAttribute('data-uae-processed', 'true');\n                });\n            });\n            \n            // Observe the panel for changes\n            const panelElements = parent.document.querySelector('#elementor-panel-elements');\n            if (panelElements) {\n                searchObserver.observe(panelElements, {\n                    childList: true,\n                    subtree: true,\n                    attributes: false\n                });\n            }\n            \n            // Also observe the search input\n            const searchInput = parent.document.querySelector('#elementor-panel-elements-search-input');\n            if (searchInput) {\n                // Add input event listener\n                searchInput.addEventListener('input', handleSearchInput);\n            }\n        };\n        \n        // Handle search input changes\n        const handleSearchInput = () => {\n            // Wait a bit for search results to render\n            setTimeout(() => {\n                const searchWrapper = parent.document.querySelector('#elementor-panel-elements-search-wrapper');\n                if (!searchWrapper) return;\n                \n                const searchPromoWidgets = searchWrapper.querySelectorAll('.elementor-element--promotion');\n                \n                searchPromoWidgets.forEach(widget => {\n                    // Remove any existing click handlers\n                    widget.removeEventListener('click', handleSearchWidgetClick);\n                    \n                    // Add our click handler\n                    widget.addEventListener('click', handleSearchWidgetClick);\n                    \n                    // Mark this widget as processed\n                    widget.setAttribute('data-uae-processed', 'true');\n                });\n            }, 300);\n        };\n        \n        // Handle clicks on widgets in search results\n        const handleSearchWidgetClick = (e) => {\n            \n            // Set all widgets in search results to be treated as UAE widgets\n            lastClickedWidgetType = 'uae';\n            \n            // Start continuous checking\n            startContinuousCheck();\n            \n            // Set up immediate checks with increasing delays\n            const delays = [10, 30, 50, 100, 200, 300, 500, 1000];\n            delays.forEach(delay => {\n                setTimeout(() => {\n                    const dialog = parent.document.querySelector('#elementor-element--promotion__dialog');\n                    if (dialog) {\n                        customizePromotionDialog(true);\n                    }\n                }, delay);\n            });\n            \n            // Don't stop propagation - we want the dialog to open\n        };\n        \n        // Initialize everything\n        const initProWidgets = () => {\n            if (typeof parent.document === 'undefined') return;\n            \n            // Remove any existing event listeners to prevent duplicates\n            parent.document.removeEventListener('mousedown', handleProWidgetClick, true);\n            \n            // Add our event listener with capture phase to ensure it runs first\n            parent.document.addEventListener('mousedown', handleProWidgetClick, true);\n            \n            // Set up search results handler\n            setupSearchResultsHandler();\n            \n            // Create the observer\n            const observer = createDialogObserver();\n            \n            // Check if dialog already exists\n            const existingDialog = parent.document.querySelector('#elementor-element--promotion__dialog');\n            if (existingDialog) {\n                customizePromotionDialog();\n            }\n            \n            return observer;\n        };\n        \n        // Initialize when Elementor is ready\n        let observer = null;\n        if (window.elementor) {\n            elementor.on('preview:loaded', () => {\n                observer = initProWidgets();\n            });\n        } else {\n            window.addEventListener('elementor/frontend/init', () => {\n                observer = initProWidgets();\n            });\n        }\n        \n        // Cleanup function\n        return () => {\n            if (continuousCheckInterval) {\n                clearInterval(continuousCheckInterval);\n            }\n            \n            if (observer) {\n                observer.disconnect();\n            }\n            \n            if (searchObserver) {\n                searchObserver.disconnect();\n            }\n            \n            if (typeof parent.document !== 'undefined') {\n                parent.document.removeEventListener('mousedown', handleProWidgetClick, true);\n                \n                // Remove search input event listeners\n                const searchInput = parent.document.querySelector('#elementor-panel-elements-search-input');\n                if (searchInput) {\n                    searchInput.removeEventListener('input', handleSearchInput);\n                }\n                \n                // Remove click handlers from search widgets\n                const searchPromoWidgets = parent.document.querySelectorAll('#elementor-panel-elements-search-wrapper .elementor-element--promotion');\n                searchPromoWidgets.forEach(widget => {\n                    widget.removeEventListener('click', handleSearchWidgetClick);\n                });\n            }\n            \n            if (window.elementor && elementor.off) {\n                elementor.off('preview:loaded', initProWidgets);\n            } else {\n                window.removeEventListener('elementor/frontend/init', initProWidgets);\n            }\n        };\n    }, []);\n\n    return null;\n};\n\nexport default PromotionWidget;\n","import domReady from '@wordpress/dom-ready';\nimport { render } from '@wordpress/element';\nimport PromotionWidget from './Components/PromotionWidget';\n\ndomReady(() => {\n    const container = document.createElement('div');\n    document.body.appendChild(container);\n    render(<PromotionWidget />, container);\n});\n"],"names":["__webpack_require__","module","getter","__esModule","d","a","exports","definition","key","o","Object","defineProperty","enumerable","get","obj","prop","prototype","hasOwnProperty","call","window","useEffect","lastClickedWidgetType","continuousCheckInterval","searchObserver","customizePromotionDialog","forceUaeWidget","arguments","length","undefined","dialog","parent","document","querySelector","defaultBtn","shouldShowUaeButton","querySelectorAll","forEach","btn","remove","style","display","button","createElement","textContent","dialogTitle","widgetTitle","trim","toLowerCase","replace","setAttribute","concat","classList","add","insertAdjacentElement","addEventListener","e","stopPropagation","removeAttribute","startContinuousCheck","clearInterval","setInterval","customBtn","setTimeout","handleProWidgetClick","clickedWidget","allProWidgets","i","contains","target","isUae","widget","icon","hasHfeClass","className","includes","isInUaeCategory","closest","isUaeWidget","delay","handleSearchInput","searchWrapper","removeEventListener","handleSearchWidgetClick","initProWidgets","disconnect","MutationObserver","mutations","searchPromoWidgets","panelElements","observe","childList","subtree","attributes","searchInput","setupSearchResultsHandler","observer","_step","_iterator","_createForOfIteratorHelper","s","n","done","mutation","value","addedNodes","_step2","_iterator2","id","err","f","type","body","attributeFilter","createDialogObserver","elementor","on","off","domReady","container","appendChild","render","React","PromotionWidget"],"sourceRoot":""}
© 2025 XylotrechusZ