/*
* ATTENTION: The "eval" devtool has been used (maybe by default in mode: "development").
* This devtool is neither made for production nor for readable output files.
* It uses "eval()" calls to create a separate source file in the browser devtools.
* If you are trying to read the output file, select a different devtool (https://webpack.js.org/configuration/devtool/)
* or disable the default devtool with "devtool: false".
* If you are looking for production-ready output files, see mode: "production" (https://webpack.js.org/configuration/mode/).
*/
/******/ (() => { // webpackBootstrap
/******/ "use strict";
/******/ var __webpack_modules__ = ({
/***/ "./dev/admin/wp-adminify-menu-editor.js":
/*!**********************************************!*\
!*** ./dev/admin/wp-adminify-menu-editor.js ***!
\**********************************************/
/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _shared_icon_libraries__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../shared/icon-libraries */ \"./dev/shared/icon-libraries.js\");\nfunction _toConsumableArray(r) { return _arrayWithoutHoles(r) || _iterableToArray(r) || _unsupportedIterableToArray(r) || _nonIterableSpread(); }\nfunction _nonIterableSpread() { throw new TypeError(\"Invalid attempt to spread non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\"); }\nfunction _iterableToArray(r) { if (\"undefined\" != typeof Symbol && null != r[Symbol.iterator] || null != r[\"@@iterator\"]) return Array.from(r); }\nfunction _arrayWithoutHoles(r) { if (Array.isArray(r)) return _arrayLikeToArray(r); }\nfunction _slicedToArray(r, e) { return _arrayWithHoles(r) || _iterableToArrayLimit(r, e) || _unsupportedIterableToArray(r, e) || _nonIterableRest(); }\nfunction _nonIterableRest() { throw new TypeError(\"Invalid attempt to destructure non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\"); }\nfunction _unsupportedIterableToArray(r, a) { if (r) { if (\"string\" == typeof r) return _arrayLikeToArray(r, a); var t = {}.toString.call(r).slice(8, -1); return \"Object\" === t && r.constructor && (t = r.constructor.name), \"Map\" === t || \"Set\" === t ? Array.from(r) : \"Arguments\" === t || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(t) ? _arrayLikeToArray(r, a) : void 0; } }\nfunction _arrayLikeToArray(r, a) { (null == a || a > r.length) && (a = r.length); for (var e = 0, n = Array(a); e < a; e++) n[e] = r[e]; return n; }\nfunction _iterableToArrayLimit(r, l) { var t = null == r ? null : \"undefined\" != typeof Symbol && r[Symbol.iterator] || r[\"@@iterator\"]; if (null != t) { var e, n, i, u, a = [], f = !0, o = !1; try { if (i = (t = t.call(r)).next, 0 === l) { if (Object(t) !== t) return; f = !1; } else for (; !(f = (e = i.call(t)).done) && (a.push(e.value), a.length !== l); f = !0); } catch (r) { o = !0, n = r; } finally { try { if (!f && null != t[\"return\"] && (u = t[\"return\"](), Object(u) !== u)) return; } finally { if (o) throw n; } } return a; } }\nfunction _arrayWithHoles(r) { if (Array.isArray(r)) return r; }\n// JS codes by WP Adminify\n\n\njQuery(function ($) {\n \"use strict\";\n\n // Shared with the other icon pickers — see dev/shared/icon-libraries.js.\n // Copied so the assets-manager removal below cannot mutate the shared object.\n var MenuEditonIconsLibrary = Object.assign({}, _shared_icon_libraries__WEBPACK_IMPORTED_MODULE_0__.ICON_LIBRARIES);\n var icons_libraries = {\n \"wp-adminify-simple-line-icons\": \"Simple Line Icons\"\n };\n Object.entries(icons_libraries).forEach(function (_ref) {\n var _ref2 = _slicedToArray(_ref, 2),\n key = _ref2[0],\n value = _ref2[1];\n if (PXLBSADMINIFY_MENU_EDITOR.assets_manager.includes(key)) {\n delete MenuEditonIconsLibrary[value];\n }\n });\n $(\".icon-picker-wrap\").ai_icon_picker({\n iconLibrary: MenuEditonIconsLibrary\n });\n\n // Store global roles data (loaded once from first select)\n var globalRolesData = [];\n $('select[name=\"hidden_for\"]').first().find('optgroup:first option').each(function () {\n var val = $(this).val();\n var txt = $(this).text();\n if (val && txt) {\n globalRolesData.push({\n id: val,\n text: txt\n });\n }\n });\n\n // Initialize Select2 for role/user multiselect with AJAX user search\n function initSelect2($elements) {\n var $selects = $elements || $('select[name=\"hidden_for\"]');\n $selects.each(function () {\n var $select = $(this);\n\n // Skip if already initialized\n if ($select.hasClass('select2-hidden-accessible')) {\n return;\n }\n\n // Use global roles data for all selects\n var rolesData = globalRolesData.length > 0 ? globalRolesData : [];\n\n // If globalRolesData is empty, try to get from this select\n if (rolesData.length === 0) {\n $select.find('optgroup:first option').each(function () {\n var val = $(this).val();\n var txt = $(this).text();\n if (val && txt) {\n rolesData.push({\n id: val,\n text: txt\n });\n }\n });\n }\n $select.select2({\n placeholder: 'Select roles or users...',\n allowClear: true,\n width: '100%',\n dropdownParent: $select.closest('.column, .adminify_sub_menu_item, .adminify_menu_item').length ? $select.closest('.column, .adminify_sub_menu_item, .adminify_menu_item') : $(document.body),\n ajax: {\n url: PXLBSADMINIFY_MENU_EDITOR.ajax_url,\n dataType: 'json',\n delay: 300,\n data: function data(params) {\n return {\n action: 'pxlbsadminify_search_users',\n security: PXLBSADMINIFY_MENU_EDITOR.security,\n search: params.term || ''\n };\n },\n processResults: function processResults(data, params) {\n var searchTerm = (params.term || '').toLowerCase();\n var results = [];\n\n // Get currently selected values\n var selectedValues = $select.val() || [];\n\n // Always filter and show matching roles from loaded data\n var matchedRoles = rolesData.filter(function (role) {\n return searchTerm === '' || role.text.toLowerCase().indexOf(searchTerm) !== -1;\n }).map(function (role) {\n return {\n id: role.id,\n text: role.text,\n disabled: selectedValues.indexOf(role.id) !== -1\n };\n });\n if (matchedRoles.length > 0) {\n results.push({\n text: 'Roles',\n children: matchedRoles\n });\n }\n\n // Add users from AJAX response (only returned when 3+ characters typed)\n if (data.results && data.results.length > 0) {\n var usersWithDisabled = data.results.map(function (user) {\n return {\n id: user.id,\n text: user.text,\n disabled: selectedValues.indexOf(user.id) !== -1\n };\n });\n results.push({\n text: \"Users (\".concat((data === null || data === void 0 ? void 0 : data.total_users) || 1, \")\"),\n children: usersWithDisabled\n });\n }\n\n // Show hint if 1-2 characters typed (to search more users)\n if (searchTerm.length > 0 && searchTerm.length < 3) {\n results.push({\n text: 'Type ' + (3 - searchTerm.length) + ' more character(s) to search more users...',\n children: [],\n disabled: true,\n isHint: true\n });\n }\n return {\n results: results\n };\n },\n cache: false // Disable cache to always check selected state\n },\n minimumInputLength: 0,\n templateResult: function templateResult(item) {\n if (item.loading) {\n return 'Searching...';\n }\n // Check if this is a hint message\n if (item.isHint) {\n return $('' + item.text + '');\n }\n // Disabled selected items with 50% opacity\n if (item.disabled) {\n return $('' + item.text + '');\n }\n return item.text;\n },\n templateSelection: function templateSelection(item) {\n return item.text || item.id;\n }\n });\n });\n }\n initSelect2();\n\n // Reset Menu Settings\n $(\".adminify_reset_menu_settings\").on(\"click\", function (e) {\n e.preventDefault();\n $.ajax({\n url: PXLBSADMINIFY_MENU_EDITOR.ajax_url,\n type: \"post\",\n data: {\n action: \"pxlbsadminify_reset_menu_settings\",\n security: PXLBSADMINIFY_MENU_EDITOR.security\n },\n success: function success(response) {\n if (response) {\n var data = JSON.parse(response);\n if (data.error) {\n $(\"#adminify-data-saved-message\").addClass(\"notification is-warning\");\n $(\"#adminify-data-saved-message\").css(\"display\", \"block\");\n $(\"#adminify-data-saved-message\").text(data.message);\n setTimeout(function () {\n $(\"#adminify-data-saved-message\").fadeOut(\"fast\");\n $(\"#adminify-data-saved-message\").removeClass(\"notification is-warning\");\n $(\"#adminify-data-saved-message\").css(\"display\", \"none\");\n }, 1500);\n } else {\n $(\"#adminify-data-saved-message\").addClass(\"notification is-primary\");\n $(\"#adminify-data-saved-message\").css(\"display\", \"block\");\n $(\"#adminify-data-saved-message\").text(data.message);\n setTimeout(function () {\n $(\"#adminify-data-saved-message\").fadeOut(\"fast\");\n $(\"#adminify-data-saved-message\").removeClass(\"notification is-primary\");\n $(\"#adminify-data-saved-message\").css(\"display\", \"none\");\n location.reload();\n }, 1500);\n }\n }\n }\n });\n });\n\n // Export Menu Settings\n $(\".adminify_export_menu_settings\").on(\"click\", function (e) {\n $.ajax({\n url: PXLBSADMINIFY_MENU_EDITOR.ajax_url,\n type: \"post\",\n data: {\n action: \"pxlbsadminify_export_menu_settings\",\n security: PXLBSADMINIFY_MENU_EDITOR.security\n },\n success: function success(response) {\n var data = response;\n var today = new Date();\n var dd = String(today.getDate()).padStart(2, \"0\");\n var mm = String(today.getMonth() + 1).padStart(2, \"0\"); // January is 0!\n var yyyy = today.getFullYear();\n var date_today = mm + \"_\" + dd + \"_\" + yyyy;\n var filename = \"wpadminify_menu_settings_\" + date_today + \".json\";\n var dataStr = \"data:text/json;charset=utf-8,\" + encodeURIComponent(data);\n var dlAnchorElem = document.getElementById(\"adminify_download_settings\");\n dlAnchorElem.setAttribute(\"href\", dataStr);\n dlAnchorElem.setAttribute(\"download\", filename);\n dlAnchorElem.click();\n }\n });\n });\n $(\".adminify_import_menu_settings\").on(\"click\", function (e) {\n e.preventDefault();\n $(\"#adminify_import_menu\").trigger(\"click\");\n });\n\n // Import Menu Settings\n $(\"#adminify_import_menu\").on(\"change\", function (e) {\n e.preventDefault();\n var thefile = $(\"#adminify_import_menu\")[0].files[0];\n if (thefile.type != \"application/json\") {\n window.alert(\"Please select a valid JSON file.\");\n return;\n }\n if (thefile.size > 100000) {\n window.alert(\"File is to big.\");\n return;\n }\n var file = document.getElementById(\"adminify_import_menu\").files[0];\n var reader = new FileReader();\n reader.readAsText(file, \"UTF-8\");\n reader.onload = function (evt) {\n var json_settings = evt.target.result,\n parsed = JSON.parse(json_settings);\n if (parsed != null) {\n $.ajax({\n url: PXLBSADMINIFY_MENU_EDITOR.ajax_url,\n type: \"post\",\n data: {\n action: \"pxlbsadminify_import_menu_settings\",\n security: PXLBSADMINIFY_MENU_EDITOR.security,\n settings: parsed\n },\n success: function success(response) {\n // var message = response;\n if (response) {\n var data = JSON.parse(response);\n if (data.error) {\n $(\"#adminify-data-saved-message\").addClass(\"notification is-warning\");\n $(\"#adminify-data-saved-message\").css(\"display\", \"block\");\n $(\"#adminify-data-saved-message\").text(data.message);\n setTimeout(function () {\n $(\"#adminify-data-saved-message\").fadeOut(\"fast\");\n $(\"#adminify-data-saved-message\").removeClass(\"notification is-warning\");\n $(\"#adminify-data-saved-message\").css(\"display\", \"none\");\n }, 1500);\n } else {\n $(\"#adminify-data-saved-message\").addClass(\"notification is-primary\");\n $(\"#adminify-data-saved-message\").css(\"display\", \"block\");\n $(\"#adminify-data-saved-message\").text(data.message);\n setTimeout(function () {\n $(\"#adminify-data-saved-message\").fadeOut(\"fast\");\n $(\"#adminify-data-saved-message\").removeClass(\"notification is-primary\");\n $(\"#adminify-data-saved-message\").css(\"display\", \"none\");\n location.reload();\n }, 1500);\n }\n }\n }\n });\n }\n };\n });\n\n // menu editor accordin title design conflict by third plugin (instagram-feed)) issue fixed\n $(\".adminify_menu_item, .adminify_sub_menu_item\").each(function (index, element) {\n if (!$(element).find(\"> a\").is(\".menu-editor-title, .accordion-button, .p-4\")) {\n $(element).find(\"> a\").attr({\n \"class\": \"menu-editor-title accordion-button p-4\"\n });\n }\n });\n var menuSettings = {};\n var removed_items = [];\n function adminify_menu_items_object() {\n // Menu Items\n $(\".adminify_menu_item\").each(function (index, element) {\n var menu_name = $(element).attr(\"name\");\n var menu_object = menuSettings[menu_name] = {};\n menuSettings[menu_name][\"order\"] = $(element).index();\n // menu_object[\"order\"] = $(element).index();\n $(element).find(\".adminify_top_level_settings .menu_setting\").each(function (index, item) {\n var setting_name = $(item).attr(\"name\"),\n value = \"\";\n if (setting_name === \"separator\") {\n if ($(item).prop(\"checked\") == true) {\n value = 1;\n } else {\n value = 0;\n }\n } else if (setting_name === \"external_link\") {\n if ($(item).prop(\"checked\") == true) {\n value = 1;\n } else {\n value = 0;\n }\n } else {\n value = $(item).val();\n }\n menu_object[setting_name] = value;\n });\n if (menu_name.includes(\"adminify-custom-menu-\")) {\n if (menu_object.link === \"\") {\n menu_object.link = \"#\".concat(menu_name);\n }\n }\n\n // pro code start\n // Top Level Live Text Changes\n var menu_id = $(element).attr(\"id\");\n $(\"#\" + menu_id + ' input[name=\"name\"]').on(\"keyup\", function () {\n var data_menu_id = $(this).data(\"top-menu-id\");\n $(\"#adminify-main-topmenu-\" + data_menu_id).text($(this).val());\n });\n // pro code end\n\n // Sub Level Menu Items\n if ($(element).find(\".adminify_sub_menu_item\").length > 0) {\n var submenu_object = menu_object[\"submenu\"] = {};\n $(element).find(\".adminify_sub_menu_item\").each(function (index, subitem) {\n var sub_menu_name = $(subitem).attr(\"name\");\n var submenu_item = submenu_object[sub_menu_name] = {};\n submenu_item[\"order\"] = $(subitem).index();\n $(subitem).find(\".sub_menu_setting\").each(function (index, subsubitem) {\n var sub_setting_name = $(subsubitem).attr(\"name\");\n var sub_value = $(subsubitem).val();\n if (sub_setting_name === \"external_link\") {\n if ($(subsubitem).prop(\"checked\") == true) {\n sub_value = 1;\n } else {\n sub_value = 0;\n }\n }\n submenu_item[sub_setting_name] = sub_value;\n });\n if (sub_menu_name.includes(\"adminify-custom-submenu-\")) {\n if (submenu_item.link === \"\") {\n submenu_item.link = \"#\".concat(sub_menu_name);\n }\n }\n });\n\n // pro code start\n // Sub Menu Level Live Text Changes\n var sub_menu_id = $(element).attr(\"id\");\n $(\"#\" + sub_menu_id + ' input[name=\"name\"]').on(\"keyup\", function () {\n var data_sub_menu_id = $(this).data(\"sub-menu-id\");\n $(\"#adminify-main-submenu-\" + data_sub_menu_id).text($(this).val());\n });\n // pro code end\n }\n });\n\n // removed parent menu items, `parent.remove()` actually doesn't remove item from this menuSettings object.\n if (removed_items.length) {\n removed_items.forEach(function (item) {\n if (item in menuSettings) {\n delete menuSettings[item];\n }\n });\n }\n }\n\n // Live Changes\n adminify_menu_items_object();\n\n // Save Settings\n $(\".adminify_menu_save_settings, .adminify-save-ajax\").on(\"click\", function (e) {\n e.preventDefault();\n adminify_menu_items_object();\n $.ajax({\n url: PXLBSADMINIFY_MENU_EDITOR.ajax_url,\n type: \"POST\",\n dataType: \"json\",\n data: {\n action: \"pxlbsadminify_save_menu_settings\",\n security: PXLBSADMINIFY_MENU_EDITOR.security,\n options: menuSettings\n },\n success: function success(response) {\n if (response) {\n var data = response;\n if (data.error) {\n $(\"#adminify-data-saved-message\").addClass(\"notification is-warning\");\n $(\"#adminify-data-saved-message\").css(\"display\", \"block\");\n $(\"#adminify-data-saved-message\").text(data.message);\n setTimeout(function () {\n $(\"#adminify-data-saved-message\").fadeOut(\"fast\");\n $(\"#adminify-data-saved-message\").removeClass(\"notification is-warning\");\n $(\"#adminify-data-saved-message\").css(\"display\", \"none\");\n }, 1500);\n } else {\n $(\"#adminify-data-saved-message\").addClass(\"notification is-primary\");\n $(\"#adminify-data-saved-message\").css(\"display\", \"block\");\n $(\"#adminify-data-saved-message\").text(data.message);\n setTimeout(function () {\n $(\"#adminify-data-saved-message\").fadeOut(\"fast\");\n $(\"#adminify-data-saved-message\").removeClass(\"notification is-primary\");\n $(\"#adminify-data-saved-message\").css(\"display\", \"none\");\n }, 1500);\n }\n }\n }\n });\n });\n\n // Menu Item Sort\n $(\".wp-adminify--menu--editor--settings\").sortable({\n handle: \".menu-editor-title svg\"\n });\n\n // Menu Item Submenu Sort\n $(\".wp-adminify--menu--editor--settings > .adminify_menu_item > .accordion-body > .tab-content > .tab-pane--submenu\").sortable({\n handle: \".menu-editor-title svg\"\n });\n\n // Submenu Item Tabs\n $(\".tab-content > div:not(.wp-adminify-page-speed-wrapper > div,.remove-add-new-menu)\").hide();\n $(\".tab-content > div:first-of-type\").show();\n $(\"body\").on(\"click\", \".nav-tabs a:not(.wp-adminify-page-speed-wrapper a)\", function (e // $('.nav-tabs a:not(.wp-adminify-page-speed-wrapper a)').click(function (e)\n ) {\n e.preventDefault();\n var $this = $(this),\n tabgroup = \"#\" + $this.parents(\".nav-tabs\").data(\"tab-content\"),\n others = $this.closest(\"li\").siblings().children(\"a\"),\n target = $this.attr(\"href\");\n others.removeClass(\"active\");\n $this.addClass(\"active\");\n $(tabgroup).children(\"div\").hide();\n $(target).show();\n $(target).siblings().hide();\n\n // Reinitialize Select2 on visible tab if not already initialized\n setTimeout(function () {\n $(target).find('select[name=\"hidden_for\"]').each(function () {\n var $sel = $(this);\n if (!$sel.hasClass('select2-hidden-accessible')) {\n initSelect2($sel);\n }\n });\n }, 50);\n });\n\n /**\n * Add New Menu Item to Menu Editor\n */\n if (PXLBSADMINIFY_MENU_EDITOR.can_use_premium) {\n $(\".wp-adminify--menu--editor--settings\").on(\"click\", \".adminify-add-new-menu-editor-item\", function (e) {\n e.preventDefault();\n var $this = $(this),\n $submenu = $(this).hasClass(\"submenu\") || false,\n $repeater = $this.closest(\".wp-adminify--menu--editor--settings\").find(\".adminify_menu_item\"),\n count = $repeater.length,\n $clone = $repeater.first().clone();\n\n // var randomNumber = Math.floor(Math.random() * 26) + Date.now();\n var randomNumber = Math.floor((1 + Math.random()) * 0x10000).toString(16).substring(2);\n\n // Set name, id attribute for newly created custom menu item\n var uniqueId = \"adminify-custom-menu-\" + randomNumber;\n var menuNewId = $clone.attr(\"id\").slice(0, 25) + uniqueId;\n if ($submenu) {\n $clone.attr(\"class\", \"adminify-accordion adminify_sub_menu_item\");\n $clone.find(\".accordion-body\").attr(\"class\", \"accordion-body\");\n $clone.find(\".menu_setting\").attr(\"class\", \"sub_menu_setting\");\n $clone.find(\".tabs.tabbable,.tab-pane--submenu\").remove();\n $clone.find(\".tab-content .tab-pane:nth-child(1)\").show();\n $clone.find(\"select.sub_menu_setting\").addClass(\"adminify-menu-settings\");\n $clone.find(\".icon-picker-wrap\").siblings(\"label\").html(\"Set Custom Icon (Not available for Submenu.)\");\n $clone.find(\".icon-picker-wrap\").removeClass(\"is-clickable\").addClass(\"is-clickable-no\");\n $clone.find(\".menu-editor-form .columns:nth-child(3)\").remove();\n count += $(this).siblings().length + 2;\n uniqueId = \"adminify-custom-submenu-\" + randomNumber;\n menuNewId = \"wp-adminify-sub-menu-menu\" + uniqueId;\n }\n $this.siblings().find(\".menu-editor-title\").removeClass(\"show\");\n $this.siblings().find(\".accordion-body\").removeClass(\"show\").hide();\n var newTitle = \"Custom Menu\";\n $clone.attr({\n id: menuNewId,\n name: uniqueId\n });\n var svg_drag_icon = $(\"\");\n $clone.find(\"> .menu-editor-title\").html(svg_drag_icon).append(newTitle);\n $clone.find(\".nav-tabs li\").each(function (index) {\n var id = \"#tab-\" + uniqueId + \"-\" + index;\n $(this).find(\".nav-link\").attr(\"href\", id);\n });\n var default_icon = $(\" \"));\n $clone.find(\".icon-picker .select-icon\").addClass(\"custom-icon\");\n $clone.find(\".icon-picker .select-icon i\").attr(\"class\", \"\").html(default_icon);\n $clone.find(\".tab-content .tab-pane\").each(function (index) {\n if ($(this).attr(\"id\") !== undefined) {\n var id = \"tab-\" + uniqueId + \"-\" + index;\n $(this).attr(\"id\", id);\n }\n if ($(this).hasClass(\"tab-pane--submenu\") == true) {\n $(this).find(\".adminify_sub_menu_item\").each(function () {\n $(this).remove();\n });\n $(this).prepend($(\"No submenu items are left.\"));\n }\n });\n $clone.find(\".menu-editor-form .column\").each(function () {\n $(this).find(\"label\").attr(\"for\", uniqueId);\n $(this).find('[name=\"name\"]').attr({\n \"data-top-menu-id\": uniqueId,\n placeholder: newTitle,\n value: newTitle\n });\n $(this).find('[name=\"separator\"]').attr({\n id: uniqueId\n });\n });\n $clone.find('[name=\"separator\"]').prop(\"checked\", false).val(0);\n $clone.find(\".adminify-menu-settings.menu_setting\").prop('selectedIndex', -1);\n\n // Reinitialize Select2 for the cloned element with AJAX\n var $clonedSelect = $clone.find('select[name=\"hidden_for\"]');\n\n // Remove ALL Select2 related elements and attributes from the clone\n // This prevents conflicts with the original Select2 instances\n $clone.find('.select2-container').remove();\n $clone.find('[data-select2-id]').removeAttr('data-select2-id');\n $clone.find('.select2').removeClass('select2');\n\n // Clean up the select element specifically\n $clonedSelect.removeClass('select2-hidden-accessible');\n $clonedSelect.removeAttr('data-select2-id');\n $clonedSelect.removeAttr('aria-hidden');\n $clonedSelect.removeAttr('tabindex');\n $clonedSelect.css('display', ''); // Reset display\n\n // Clear selections and options in Users optgroup\n $clonedSelect.find('option:selected').prop('selected', false);\n $clonedSelect.find('.adminify-users-optgroup').empty();\n\n // Small delay to ensure DOM is ready before initializing Select2\n setTimeout(function () {\n initSelect2($clonedSelect);\n }, 10);\n var remove_icon = $(\"