PluginProbe
Adminify – White Label, Admin Menu Editor, Login Customizer / 4.3.2
Adminify – White Label, Admin Menu Editor, Login Customizer v4.3.2
4.3.2 4.3.1 4.3.0 4.2.26 4.2.25 4.2.24 4.2.23 4.2.22 4.2.21 4.2.20 4.2.19 4.2.18 4.2.17 4.2.16 4.2.15 4.2.14 4.2.13 4.2.12 4.2.11 4.2.10 4.2.9 4.2.8 4.2.7 4.2.6 4.2.5 All 165 releases
← All changes | assets/admin/js/frame.js +8 -8 4.2.264.3.2 View file →
@@ -15,9 +15,9 @@
15 15 !*** ./dev/admin/frame/App.jsx ***!
16 16 \*********************************/
17 17 /***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
18 18
19 -eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"default\": () => (__WEBPACK_DEFAULT_EXPORT__)\n/* harmony export */ });\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! react */ \"./node_modules/react/index.js\");\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(react__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var _Sidebar_Sidebar__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./Sidebar/Sidebar */ \"./dev/admin/frame/Sidebar/Sidebar.jsx\");\n/* harmony import */ var _Topbar_Topbar__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./Topbar/Topbar */ \"./dev/admin/frame/Topbar/Topbar.jsx\");\n/* harmony import */ var _utils_uitls__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./utils/uitls */ \"./dev/admin/frame/utils/uitls.js\");\n/* harmony import */ var _Topbar_components_SearchForm__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ./Topbar/components/SearchForm */ \"./dev/admin/frame/Topbar/components/SearchForm.jsx\");\n/* harmony import */ var _HorizontalMenu_HorizontalMenu__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ./HorizontalMenu/HorizontalMenu */ \"./dev/admin/frame/HorizontalMenu/HorizontalMenu.jsx\");\n/* harmony import */ var _FrameGuard__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ./FrameGuard */ \"./dev/admin/frame/FrameGuard.js\");\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\n\n\n\n\n\n\nvar PRELOADER_ID = \"Adminify-PreLoaderBar\";\nvar IFRAME_ID = \"frame-adminify-app--iframe\";\nvar togglePreloader = function togglePreloader(show) {\n var bar = document.getElementById(PRELOADER_ID);\n if (bar) bar.style.display = show ? \"block\" : \"none\";\n};\n\n// Path the admin lives under, e.g. \"/wp-admin/\" or \"/blog/wp-admin/\".\nvar getAdminBasePath = function getAdminBasePath() {\n try {\n return new URL(adminify_admin_bar_data.admin_url, window.location.origin).pathname;\n } catch (e) {\n return \"/wp-admin/\";\n }\n};\n\n// Front-end URLs (Preview, View, permalinks, logout) must take over the whole\n// window the way they do in the default admin. Loading them into the iframe\n// leaves the browser URL on the shell page and traps the front end in the frame.\nvar isAdminURL = function isAdminURL(targetUrl) {\n return targetUrl.pathname.startsWith(getAdminBasePath());\n};\n\n// Anchors the frame should take over: real links (not \"#\", not javascript:),\n// not ARIA widgets, not already handled, and not explicitly targeting a new tab.\nvar isNavigableAnchor = function isNavigableAnchor(e) {\n var el = e.target;\n var href = el.tagName === \"A\" ? el.getAttribute(\"href\") : null;\n return !!href && href.charAt(0) !== \"#\" && !href.startsWith(\"javascript:\") && !el.hasAttribute(\"role\") && !e.defaultPrevented && el.getAttribute(\"target\") !== \"_blank\" && href !== \"about:blank\";\n};\n\n// Same-page hash navigation must stay with client-side routers (SPA plugins\n// like Fluent Support / FluentCRM). Their top-bar links are ABSOLUTE urls such\n// as `admin.php?page=fluent-support#/tickets`, so a raw \"#\" prefix check misses\n// them. Re-assigning the iframe src for these would fight the SPA router and\n// leave it stuck loading.\nvar isSamePageHashNav = function isSamePageHashNav(href, iframeWindow) {\n try {\n var targetUrl = new URL(href, iframeWindow.location.href);\n var current = iframeWindow.location;\n return !!targetUrl.hash && targetUrl.pathname === current.pathname && targetUrl.search === current.search;\n } catch (err) {\n return false; // Invalid URL - continue with normal handling\n }\n};\nfunction App() {\n var _frame_adminify_menu, _Object$values;\n var _useState = (0,react__WEBPACK_IMPORTED_MODULE_0__.useState)(frame_adminify_menu.light_dark_mode),\n _useState2 = _slicedToArray(_useState, 2),\n adminifyColorMode = _useState2[0],\n setAdminifyColorMode = _useState2[1];\n // Settings Data\n var lightDarkMode = frame_adminify_menu.light_dark_mode;\n var menuLayoutSettings = frame_adminify_menu.menu_layout_settings;\n var isPro = !!((_frame_adminify_menu = frame_adminify_menu) !== null && _frame_adminify_menu !== void 0 && _frame_adminify_menu.is_pro);\n var isVertical = (menuLayoutSettings === null || menuLayoutSettings === void 0 ? void 0 : menuLayoutSettings.layout_type) === \"vertical\";\n var isHorizontal = (menuLayoutSettings === null || menuLayoutSettings === void 0 ? void 0 : menuLayoutSettings.layout_type) === \"horizontal\";\n var isHorizontalPro = isHorizontal && isPro;\n var showSidebar = isVertical || isHorizontal && !isPro;\n\n // States\n var _useState3 = (0,react__WEBPACK_IMPORTED_MODULE_0__.useState)(document.body.classList.contains(\"folded\")),\n _useState4 = _slicedToArray(_useState3, 2),\n folded = _useState4[0],\n setFolded = _useState4[1];\n var _useState5 = (0,react__WEBPACK_IMPORTED_MODULE_0__.useState)((0,_utils_uitls__WEBPACK_IMPORTED_MODULE_3__.setDefaultURL)((_Object$values = Object.values(frame_adminify_menu.menu)) === null || _Object$values === void 0 || (_Object$values = _Object$values[0]) === null || _Object$values === void 0 ? void 0 : _Object$values.url)),\n _useState6 = _slicedToArray(_useState5, 2),\n url = _useState6[0],\n setUrl = _useState6[1];\n var _useState7 = (0,react__WEBPACK_IMPORTED_MODULE_0__.useState)(url),\n _useState8 = _slicedToArray(_useState7, 2),\n frameURL = _useState8[0],\n setFrameURL = _useState8[1];\n var _useState9 = (0,react__WEBPACK_IMPORTED_MODULE_0__.useState)(false),\n _useState10 = _slicedToArray(_useState9, 2),\n iframeFullReady = _useState10[0],\n setIframeFullReady = _useState10[1];\n var _useState11 = (0,react__WEBPACK_IMPORTED_MODULE_0__.useState)(true),\n _useState12 = _slicedToArray(_useState11, 2),\n iframeLoading = _useState12[0],\n setIframeLoading = _useState12[1];\n var _useState13 = (0,react__WEBPACK_IMPORTED_MODULE_0__.useState)(false),\n _useState14 = _slicedToArray(_useState13, 2),\n showSearch = _useState14[0],\n setShowSearch = _useState14[1];\n var _useState15 = (0,react__WEBPACK_IMPORTED_MODULE_0__.useState)(false),\n _useState16 = _slicedToArray(_useState15, 2),\n getWidth = _useState16[0],\n setGetWidth = _useState16[1];\n var _useState17 = (0,react__WEBPACK_IMPORTED_MODULE_0__.useState)(false),\n _useState18 = _slicedToArray(_useState17, 2),\n collapse = _useState18[0],\n setCollapse = _useState18[1];\n var _useState19 = (0,react__WEBPACK_IMPORTED_MODULE_0__.useState)(\"\"),\n _useState20 = _slicedToArray(_useState19, 2),\n topbarHeight = _useState20[0],\n setTopbarHeight = _useState20[1];\n var _useState21 = (0,react__WEBPACK_IMPORTED_MODULE_0__.useState)({\n menu: [],\n submenu: \"\"\n }),\n _useState22 = _slicedToArray(_useState21, 2),\n iframeClickedActiveMenu = _useState22[0],\n setIframeClickedActiveMenu = _useState22[1];\n var frameGuard = (0,react__WEBPACK_IMPORTED_MODULE_0__.useMemo)(function () {\n return new _FrameGuard__WEBPACK_IMPORTED_MODULE_6__[\"default\"]();\n }, []);\n var showLoading = function showLoading() {\n setIframeLoading(true);\n togglePreloader(true);\n };\n var hideLoading = function hideLoading() {\n setIframeFullReady(true);\n setIframeLoading(false);\n togglePreloader(false);\n };\n\n // External or front-end link — leave the frame. Returns true when handled.\n var leaveFrameIfOutside = function leaveFrameIfOutside(e, href) {\n try {\n var linkUrl = new URL(href);\n\n // External link (different origin) - open in new tab\n if (linkUrl.origin !== window.location.origin) {\n e.preventDefault();\n window.open(href, \"_blank\");\n return true;\n }\n\n // Same origin but outside wp-admin - leave the frame\n if (!isAdminURL(linkUrl)) {\n e.preventDefault();\n window.location.href = linkUrl.href;\n return true;\n }\n } catch (err) {\n // Invalid URL - continue with normal handling\n }\n return false;\n };\n\n /**\n * Anchor click with pre-loader. `iframeWindow` is a live reference so the\n * clicked link can be compared against the page CURRENTLY in the iframe.\n */\n var handleIframeClick = function handleIframeClick(iframeWindow) {\n return function (e) {\n // Ctrl+Click (Win/Linux), Cmd+Click (macOS), Shift+Click or middle\n // click — let the browser open the link in a new tab/window natively\n // instead of loading it into the iframe.\n if ((0,_utils_uitls__WEBPACK_IMPORTED_MODULE_3__.isNewTabClick)(e)) return;\n if (!isNavigableAnchor(e)) return;\n\n // Capture URL and href immediately before they become stale\n var rawHref = e.target.getAttribute(\"href\");\n var href = e.target.href;\n if (isSamePageHashNav(href, iframeWindow)) return;\n if (leaveFrameIfOutside(e, href)) return;\n\n // Show loading overlay immediately when link is clicked\n showLoading();\n\n // Prevent default for non-trash actions to avoid double navigation;\n // trash links must submit natively so WordPress runs the action.\n var isTrashAction = !!(rawHref !== null && rawHref !== void 0 && rawHref.includes(\"action=trash\"));\n if (!isTrashAction) {\n e.preventDefault();\n }\n\n // Plugin upload Overwrite not reload iframe\n if (rawHref !== null && rawHref !== void 0 && rawHref.includes(\"action=upload-plugin\") && e.target.className.includes(\"update-from-upload-overwrite\")) {\n e.preventDefault();\n }\n\n // Use setTimeout for state updates\n setTimeout(function () {\n parent.postMessage({\n link: href\n }, \"*\");\n if (!isTrashAction) {\n (0,_utils_uitls__WEBPACK_IMPORTED_MODULE_3__.handleURLChange)(rawHref);\n setUrl(rawHref);\n }\n setIframeClickedActiveMenu({\n menu: (0,_utils_uitls__WEBPACK_IMPORTED_MODULE_3__.getActiveMenu)(frame_adminify_menu.menu, false, rawHref),\n submenu: (0,_utils_uitls__WEBPACK_IMPORTED_MODULE_3__.getActiveMenu)(frame_adminify_menu.menu, true, rawHref)\n });\n }, 50);\n };\n };\n var handleLoadIframe = function handleLoadIframe(e) {\n var iframe = e.target;\n\n // Hide progress bar and loading overlay - this fires reliably when iframe loads\n hideLoading();\n\n // Wrap in try-catch to handle cross-origin iframe errors\n try {\n var iframeWindow = iframe.contentWindow;\n (0,_utils_uitls__WEBPACK_IMPORTED_MODULE_3__.handleURLChange)(iframeWindow.location.href);\n\n // Title\n var title = iframe.contentDocument.title;\n if (title) document.title = title;\n\n // Handle Hash Change\n iframeWindow.addEventListener(\"hashchange\", function (ev) {\n return (0,_utils_uitls__WEBPACK_IMPORTED_MODULE_3__.handleURLChange)(ev.newURL);\n });\n iframeWindow.addEventListener(\"click\", handleIframeClick(iframeWindow));\n } catch (error) {\n // Cross-origin iframe - cannot access content\n console.log(\"Cross-origin iframe detected, cannot access content\");\n }\n };\n\n // Unfold sidebar/toolbar on small screens and measure the topbar once.\n (0,react__WEBPACK_IMPORTED_MODULE_0__.useEffect)(function () {\n var _document$querySelect3;\n if (window.innerWidth <= 992) {\n var _document$querySelect, _document$querySelect2;\n (_document$querySelect = document.querySelector(\".frame-adminify-sidebar-wrap\")) === null || _document$querySelect === void 0 || (_document$querySelect = _document$querySelect.classList) === null || _document$querySelect === void 0 || _document$querySelect.remove(\"adminify-sidebar-folded\");\n (_document$querySelect2 = document.querySelector(\".adminify-toolbar-wrapper\")) === null || _document$querySelect2 === void 0 || (_document$querySelect2 = _document$querySelect2.classList) === null || _document$querySelect2 === void 0 || _document$querySelect2.remove(\"adminify-toolbar-folded\");\n setGetWidth(true);\n }\n setTopbarHeight((_document$querySelect3 = document.querySelector(\".adminify-toolbar-wrapper\")) === null || _document$querySelect3 === void 0 ? void 0 : _document$querySelect3.offsetHeight);\n }, []);\n (0,react__WEBPACK_IMPORTED_MODULE_0__.useEffect)(function () {\n if (frameGuard.isAllowed()) {\n setFrameURL(url);\n } else {\n parent.location.reload();\n }\n showLoading();\n (0,_utils_uitls__WEBPACK_IMPORTED_MODULE_3__.waitForElm)(\"#\".concat(IFRAME_ID)).then(function (elm) {\n try {\n var _elm$contentDocument, _elm$contentDocument2, _elm$contentWindow;\n // Check if document is already loaded\n if (((_elm$contentDocument = elm.contentDocument) === null || _elm$contentDocument === void 0 ? void 0 : _elm$contentDocument.readyState) === \"complete\") {\n hideLoading();\n return;\n }\n\n // Attach to contentDocument and contentWindow if same-origin\n (_elm$contentDocument2 = elm.contentDocument) === null || _elm$contentDocument2 === void 0 || _elm$contentDocument2.addEventListener(\"DOMContentLoaded\", hideLoading);\n (_elm$contentWindow = elm.contentWindow) === null || _elm$contentWindow === void 0 || _elm$contentWindow.addEventListener(\"load\", hideLoading);\n } catch (e) {\n console.log(\"Cannot access contentDocument (cross-origin or error):\", e.message);\n }\n\n // Always attach to iframe element itself - most reliable\n elm.addEventListener(\"load\", hideLoading);\n });\n }, [url]);\n return /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement((react__WEBPACK_IMPORTED_MODULE_0___default().Fragment), null, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(\"div\", {\n className: \"adminify-progress\",\n id: PRELOADER_ID\n }, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(\"div\", {\n className: \"adminify-indeterminate\"\n })), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_Topbar_Topbar__WEBPACK_IMPORTED_MODULE_2__[\"default\"], {\n lightDarkMode: lightDarkMode,\n setAdminifyColorMode: setAdminifyColorMode,\n adminifyColorMode: adminifyColorMode,\n setFolded: setFolded,\n setShowSearch: setShowSearch,\n getWidth: getWidth,\n setCollapse: setCollapse,\n collapse: collapse,\n setUrl: setUrl,\n iframeFullReady: iframeFullReady,\n folded: folded\n }), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(\"div\", {\n className: \"adminify-frame-wrapper \".concat(isHorizontalPro ? \"adminify-horizontal-menu\" : \"adminify-vertical-menu\", \" \").concat(folded && isVertical ? \"adminify-folded\" : \"\")\n }, showSidebar ? /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_Sidebar_Sidebar__WEBPACK_IMPORTED_MODULE_1__[\"default\"], {\n lightDarkMode: lightDarkMode,\n folded: folded,\n url: url,\n iframeClickedActiveMenu: iframeClickedActiveMenu,\n setUrl: setUrl,\n getWidth: getWidth,\n collapse: collapse,\n setCollapse: setCollapse,\n topbarHeight: topbarHeight\n }) : null, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(\"div\", {\n className: \"adminify-frame-content\",\n style: {\n \"--adminify-topbar-height\": \"\".concat(topbarHeight || 56, \"px\")\n }\n }, isHorizontalPro ? /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_HorizontalMenu_HorizontalMenu__WEBPACK_IMPORTED_MODULE_5__[\"default\"], {\n setUrl: setUrl,\n collapse: collapse,\n setCollapse: setCollapse,\n getWidth: getWidth\n }) : null, showSearch ? /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_Topbar_components_SearchForm__WEBPACK_IMPORTED_MODULE_4__[\"default\"], {\n setShowSearch: setShowSearch,\n setUrl: setUrl\n }) : null, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(\"div\", {\n className: \"adminify-iframe-loading-overlay \".concat(iframeLoading ? \"is-loading\" : \"\")\n }, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(\"div\", {\n className: \"adminify-loading-spinner\"\n })), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(\"iframe\", {\n onLoad: handleLoadIframe,\n width: \"100%\",\n height: \"100%\",\n id: IFRAME_ID,\n src: frameURL,\n frameBorder: \"0\"\n }))));\n}\n/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (App);\n\n//# sourceURL=webpack://adminify/./dev/admin/frame/App.jsx?");
19 +eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"default\": () => (__WEBPACK_DEFAULT_EXPORT__)\n/* harmony export */ });\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! react */ \"./node_modules/react/index.js\");\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(react__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var _Sidebar_Sidebar__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./Sidebar/Sidebar */ \"./dev/admin/frame/Sidebar/Sidebar.jsx\");\n/* harmony import */ var _Topbar_Topbar__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./Topbar/Topbar */ \"./dev/admin/frame/Topbar/Topbar.jsx\");\n/* harmony import */ var _utils_uitls__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./utils/uitls */ \"./dev/admin/frame/utils/uitls.js\");\n/* harmony import */ var _Topbar_components_SearchForm__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ./Topbar/components/SearchForm */ \"./dev/admin/frame/Topbar/components/SearchForm.jsx\");\n/* harmony import */ var _HorizontalMenu_HorizontalMenu__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ./HorizontalMenu/HorizontalMenu */ \"./dev/admin/frame/HorizontalMenu/HorizontalMenu.jsx\");\n/* harmony import */ var _FrameGuard__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ./FrameGuard */ \"./dev/admin/frame/FrameGuard.js\");\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\n\n\n\n\n\n\nvar PRELOADER_ID = \"Adminify-PreLoaderBar\";\nvar IFRAME_ID = \"frame-adminify-app--iframe\";\nvar togglePreloader = function togglePreloader(show) {\n var bar = document.getElementById(PRELOADER_ID);\n if (bar) bar.style.display = show ? \"block\" : \"none\";\n};\n\n// Path the admin lives under, e.g. \"/wp-admin/\" or \"/blog/wp-admin/\".\nvar getAdminBasePath = function getAdminBasePath() {\n try {\n return new URL(adminify_admin_bar_data.admin_url, window.location.origin).pathname;\n } catch (e) {\n return \"/wp-admin/\";\n }\n};\n\n// Front-end URLs (Preview, View, permalinks, logout) must take over the whole\n// window the way they do in the default admin. Loading them into the iframe\n// leaves the browser URL on the shell page and traps the front end in the frame.\nvar isAdminURL = function isAdminURL(targetUrl) {\n return targetUrl.pathname.startsWith(getAdminBasePath());\n};\n\n// The anchor a click belongs to, or null when the frame should keep its hands\n// off: not a real link (\"#\", javascript:), an ARIA widget, already handled, or\n// explicitly targeting a new tab.\n//\n// Resolved from the click target UPWARDS. Plenty of admin links are icon-only -\n// the block editor's \"View Posts\" back button is an `<a>` wrapping nothing but\n// an `<svg>` - so the click target is the icon, and testing `e.target` alone\n// left every one of them invisible to the frame.\nvar getNavigableAnchor = function getNavigableAnchor(e) {\n var _e$target;\n // Duck-typed: `e.target` belongs to the iframe's document, so an\n // `instanceof Element` check against the shell's realm would fail.\n var el = typeof ((_e$target = e.target) === null || _e$target === void 0 ? void 0 : _e$target.closest) === \"function\" ? e.target.closest(\"a\") : null;\n var href = el === null || el === void 0 ? void 0 : el.getAttribute(\"href\");\n if (!href || href.charAt(0) === \"#\" || href.startsWith(\"javascript:\") || el.hasAttribute(\"role\") || e.defaultPrevented || el.getAttribute(\"target\") === \"_blank\" || href === \"about:blank\") {\n return null;\n }\n return el;\n};\n\n// Same-page hash navigation must stay with client-side routers (SPA plugins\n// like Fluent Support / FluentCRM). Their top-bar links are ABSOLUTE urls such\n// as `admin.php?page=fluent-support#/tickets`, so a raw \"#\" prefix check misses\n// them. Re-assigning the iframe src for these would fight the SPA router and\n// leave it stuck loading.\nvar isSamePageHashNav = function isSamePageHashNav(href, iframeWindow) {\n try {\n var targetUrl = new URL(href, iframeWindow.location.href);\n var current = iframeWindow.location;\n return !!targetUrl.hash && targetUrl.pathname === current.pathname && targetUrl.search === current.search;\n } catch (err) {\n return false; // Invalid URL - continue with normal handling\n }\n};\nfunction App() {\n var _frame_adminify_menu, _Object$values;\n var _useState = (0,react__WEBPACK_IMPORTED_MODULE_0__.useState)(frame_adminify_menu.light_dark_mode),\n _useState2 = _slicedToArray(_useState, 2),\n adminifyColorMode = _useState2[0],\n setAdminifyColorMode = _useState2[1];\n // Settings Data\n var lightDarkMode = frame_adminify_menu.light_dark_mode;\n var menuLayoutSettings = frame_adminify_menu.menu_layout_settings;\n var isPro = !!((_frame_adminify_menu = frame_adminify_menu) !== null && _frame_adminify_menu !== void 0 && _frame_adminify_menu.is_pro);\n var isVertical = (menuLayoutSettings === null || menuLayoutSettings === void 0 ? void 0 : menuLayoutSettings.layout_type) === \"vertical\";\n var isHorizontal = (menuLayoutSettings === null || menuLayoutSettings === void 0 ? void 0 : menuLayoutSettings.layout_type) === \"horizontal\";\n var isHorizontalPro = isHorizontal && isPro;\n var showSidebar = isVertical || isHorizontal && !isPro;\n\n // States\n var _useState3 = (0,react__WEBPACK_IMPORTED_MODULE_0__.useState)(document.body.classList.contains(\"folded\")),\n _useState4 = _slicedToArray(_useState3, 2),\n folded = _useState4[0],\n setFolded = _useState4[1];\n var _useState5 = (0,react__WEBPACK_IMPORTED_MODULE_0__.useState)((0,_utils_uitls__WEBPACK_IMPORTED_MODULE_3__.setDefaultURL)((_Object$values = Object.values(frame_adminify_menu.menu)) === null || _Object$values === void 0 || (_Object$values = _Object$values[0]) === null || _Object$values === void 0 ? void 0 : _Object$values.url)),\n _useState6 = _slicedToArray(_useState5, 2),\n url = _useState6[0],\n setUrl = _useState6[1];\n var _useState7 = (0,react__WEBPACK_IMPORTED_MODULE_0__.useState)(url),\n _useState8 = _slicedToArray(_useState7, 2),\n frameURL = _useState8[0],\n setFrameURL = _useState8[1];\n var _useState9 = (0,react__WEBPACK_IMPORTED_MODULE_0__.useState)(false),\n _useState10 = _slicedToArray(_useState9, 2),\n iframeFullReady = _useState10[0],\n setIframeFullReady = _useState10[1];\n var _useState11 = (0,react__WEBPACK_IMPORTED_MODULE_0__.useState)(true),\n _useState12 = _slicedToArray(_useState11, 2),\n iframeLoading = _useState12[0],\n setIframeLoading = _useState12[1];\n var _useState13 = (0,react__WEBPACK_IMPORTED_MODULE_0__.useState)(false),\n _useState14 = _slicedToArray(_useState13, 2),\n showSearch = _useState14[0],\n setShowSearch = _useState14[1];\n var _useState15 = (0,react__WEBPACK_IMPORTED_MODULE_0__.useState)(false),\n _useState16 = _slicedToArray(_useState15, 2),\n getWidth = _useState16[0],\n setGetWidth = _useState16[1];\n var _useState17 = (0,react__WEBPACK_IMPORTED_MODULE_0__.useState)(false),\n _useState18 = _slicedToArray(_useState17, 2),\n collapse = _useState18[0],\n setCollapse = _useState18[1];\n var _useState19 = (0,react__WEBPACK_IMPORTED_MODULE_0__.useState)(\"\"),\n _useState20 = _slicedToArray(_useState19, 2),\n topbarHeight = _useState20[0],\n setTopbarHeight = _useState20[1];\n var _useState21 = (0,react__WEBPACK_IMPORTED_MODULE_0__.useState)({\n menu: [],\n submenu: \"\"\n }),\n _useState22 = _slicedToArray(_useState21, 2),\n iframeClickedActiveMenu = _useState22[0],\n setIframeClickedActiveMenu = _useState22[1];\n var frameGuard = (0,react__WEBPACK_IMPORTED_MODULE_0__.useMemo)(function () {\n return new _FrameGuard__WEBPACK_IMPORTED_MODULE_6__[\"default\"]();\n }, []);\n var showLoading = function showLoading() {\n setIframeLoading(true);\n togglePreloader(true);\n };\n var hideLoading = function hideLoading() {\n setIframeFullReady(true);\n setIframeLoading(false);\n togglePreloader(false);\n };\n\n // External or front-end link — leave the frame. Returns true when handled.\n var leaveFrameIfOutside = function leaveFrameIfOutside(e, href) {\n try {\n var linkUrl = new URL(href);\n\n // External link (different origin) - open in new tab\n if (linkUrl.origin !== window.location.origin) {\n e.preventDefault();\n window.open(href, \"_blank\");\n return true;\n }\n\n // Same origin but outside wp-admin - leave the frame\n if (!isAdminURL(linkUrl)) {\n e.preventDefault();\n window.location.href = linkUrl.href;\n return true;\n }\n } catch (err) {\n // Invalid URL - continue with normal handling\n }\n return false;\n };\n\n /**\n * Anchor click with pre-loader. `iframeWindow` is a live reference so the\n * clicked link can be compared against the page CURRENTLY in the iframe.\n */\n var handleIframeClick = function handleIframeClick(iframeWindow) {\n return function (e) {\n // Ctrl+Click (Win/Linux), Cmd+Click (macOS), Shift+Click or middle\n // click — let the browser open the link in a new tab/window natively\n // instead of loading it into the iframe.\n if ((0,_utils_uitls__WEBPACK_IMPORTED_MODULE_3__.isNewTabClick)(e)) return;\n var anchor = getNavigableAnchor(e);\n if (!anchor) return;\n\n // Capture URL and href immediately before they become stale\n var rawHref = anchor.getAttribute(\"href\");\n var href = anchor.href;\n if (isSamePageHashNav(href, iframeWindow)) return;\n if (leaveFrameIfOutside(e, href)) return;\n\n // Show loading overlay immediately when link is clicked\n showLoading();\n\n // Prevent default for non-trash actions to avoid double navigation;\n // trash links must submit natively so WordPress runs the action.\n var isTrashAction = !!(rawHref !== null && rawHref !== void 0 && rawHref.includes(\"action=trash\"));\n if (!isTrashAction) {\n e.preventDefault();\n }\n\n // Plugin upload Overwrite not reload iframe\n if (rawHref !== null && rawHref !== void 0 && rawHref.includes(\"action=upload-plugin\") && anchor.className.includes(\"update-from-upload-overwrite\")) {\n e.preventDefault();\n }\n\n // Use setTimeout for state updates\n setTimeout(function () {\n parent.postMessage({\n link: href\n }, \"*\");\n if (!isTrashAction) {\n // Absolute, so it resolves against the page the IFRAME is on -\n // a relative href like `edit.php?post_type=post` would otherwise\n // be resolved against the shell document, which sits on its own\n // URL once an editor screen has rewritten its history.\n (0,_utils_uitls__WEBPACK_IMPORTED_MODULE_3__.handleURLChange)(href);\n setUrl(href);\n\n // React re-renders the iframe only when `src` actually changes.\n // When the frame is already pointing at this URL as far as React\n // is concerned - it was sent here once and the page then moved on\n // by itself, the editor's post-publish `replaceState` being the\n // everyday case - the click just cancelled above would be\n // swallowed. Send the frame back there directly.\n var iframe = document.getElementById(IFRAME_ID);\n if (iframe && iframe.src === href) {\n iframe.contentWindow.location.href = href;\n }\n }\n setIframeClickedActiveMenu({\n menu: (0,_utils_uitls__WEBPACK_IMPORTED_MODULE_3__.getActiveMenu)(frame_adminify_menu.menu, false, rawHref),\n submenu: (0,_utils_uitls__WEBPACK_IMPORTED_MODULE_3__.getActiveMenu)(frame_adminify_menu.menu, true, rawHref)\n });\n }, 50);\n };\n };\n var handleLoadIframe = function handleLoadIframe(e) {\n var iframe = e.target;\n\n // Hide progress bar and loading overlay - this fires reliably when iframe loads\n hideLoading();\n\n // Wrap in try-catch to handle cross-origin iframe errors\n try {\n var iframeWindow = iframe.contentWindow;\n (0,_utils_uitls__WEBPACK_IMPORTED_MODULE_3__.handleURLChange)(iframeWindow.location.href);\n\n // Title\n var title = iframe.contentDocument.title;\n if (title) document.title = title;\n\n // Handle Hash Change\n iframeWindow.addEventListener(\"hashchange\", function (ev) {\n return (0,_utils_uitls__WEBPACK_IMPORTED_MODULE_3__.handleURLChange)(ev.newURL);\n });\n\n // Screens that route client-side - the block editor swapping\n // `post-new.php` for `post.php?post=<id>` on publish, above all -\n // change URL without ever loading a document, so mirror the iframe's\n // own history calls onto the shell.\n (0,_utils_uitls__WEBPACK_IMPORTED_MODULE_3__.syncIframeHistory)(iframeWindow, _utils_uitls__WEBPACK_IMPORTED_MODULE_3__.handleURLChange);\n iframeWindow.addEventListener(\"click\", handleIframeClick(iframeWindow));\n } catch (error) {\n // Cross-origin iframe - cannot access content\n console.log(\"Cross-origin iframe detected, cannot access content\");\n }\n };\n\n // Unfold sidebar/toolbar on small screens and measure the topbar once.\n (0,react__WEBPACK_IMPORTED_MODULE_0__.useEffect)(function () {\n var _document$querySelect3;\n if (window.innerWidth <= 992) {\n var _document$querySelect, _document$querySelect2;\n (_document$querySelect = document.querySelector(\".frame-adminify-sidebar-wrap\")) === null || _document$querySelect === void 0 || (_document$querySelect = _document$querySelect.classList) === null || _document$querySelect === void 0 || _document$querySelect.remove(\"adminify-sidebar-folded\");\n (_document$querySelect2 = document.querySelector(\".adminify-toolbar-wrapper\")) === null || _document$querySelect2 === void 0 || (_document$querySelect2 = _document$querySelect2.classList) === null || _document$querySelect2 === void 0 || _document$querySelect2.remove(\"adminify-toolbar-folded\");\n setGetWidth(true);\n }\n setTopbarHeight((_document$querySelect3 = document.querySelector(\".adminify-toolbar-wrapper\")) === null || _document$querySelect3 === void 0 ? void 0 : _document$querySelect3.offsetHeight);\n }, []);\n (0,react__WEBPACK_IMPORTED_MODULE_0__.useEffect)(function () {\n if (frameGuard.isAllowed()) {\n setFrameURL(url);\n } else {\n parent.location.reload();\n }\n showLoading();\n (0,_utils_uitls__WEBPACK_IMPORTED_MODULE_3__.waitForElm)(\"#\".concat(IFRAME_ID)).then(function (elm) {\n try {\n var _elm$contentDocument, _elm$contentDocument2, _elm$contentWindow;\n // Check if document is already loaded\n if (((_elm$contentDocument = elm.contentDocument) === null || _elm$contentDocument === void 0 ? void 0 : _elm$contentDocument.readyState) === \"complete\") {\n hideLoading();\n return;\n }\n\n // Attach to contentDocument and contentWindow if same-origin\n (_elm$contentDocument2 = elm.contentDocument) === null || _elm$contentDocument2 === void 0 || _elm$contentDocument2.addEventListener(\"DOMContentLoaded\", hideLoading);\n (_elm$contentWindow = elm.contentWindow) === null || _elm$contentWindow === void 0 || _elm$contentWindow.addEventListener(\"load\", hideLoading);\n } catch (e) {\n console.log(\"Cannot access contentDocument (cross-origin or error):\", e.message);\n }\n\n // Always attach to iframe element itself - most reliable\n elm.addEventListener(\"load\", hideLoading);\n });\n }, [url]);\n return /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement((react__WEBPACK_IMPORTED_MODULE_0___default().Fragment), null, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(\"div\", {\n className: \"adminify-progress\",\n id: PRELOADER_ID\n }, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(\"div\", {\n className: \"adminify-indeterminate\"\n })), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_Topbar_Topbar__WEBPACK_IMPORTED_MODULE_2__[\"default\"], {\n lightDarkMode: lightDarkMode,\n setAdminifyColorMode: setAdminifyColorMode,\n adminifyColorMode: adminifyColorMode,\n setFolded: setFolded,\n setShowSearch: setShowSearch,\n getWidth: getWidth,\n setCollapse: setCollapse,\n collapse: collapse,\n setUrl: setUrl,\n iframeFullReady: iframeFullReady,\n folded: folded\n }), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(\"div\", {\n className: \"adminify-frame-wrapper \".concat(isHorizontalPro ? \"adminify-horizontal-menu\" : \"adminify-vertical-menu\", \" \").concat(folded && isVertical ? \"adminify-folded\" : \"\")\n }, showSidebar ? /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_Sidebar_Sidebar__WEBPACK_IMPORTED_MODULE_1__[\"default\"], {\n lightDarkMode: lightDarkMode,\n folded: folded,\n url: url,\n iframeClickedActiveMenu: iframeClickedActiveMenu,\n setUrl: setUrl,\n getWidth: getWidth,\n collapse: collapse,\n setCollapse: setCollapse,\n topbarHeight: topbarHeight\n }) : null, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(\"div\", {\n className: \"adminify-frame-content\",\n style: {\n \"--adminify-topbar-height\": \"\".concat(topbarHeight || 56, \"px\")\n }\n }, isHorizontalPro ? /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_HorizontalMenu_HorizontalMenu__WEBPACK_IMPORTED_MODULE_5__[\"default\"], {\n setUrl: setUrl,\n collapse: collapse,\n setCollapse: setCollapse,\n getWidth: getWidth\n }) : null, showSearch ? /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_Topbar_components_SearchForm__WEBPACK_IMPORTED_MODULE_4__[\"default\"], {\n setShowSearch: setShowSearch,\n setUrl: setUrl\n }) : null, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(\"div\", {\n className: \"adminify-iframe-loading-overlay \".concat(iframeLoading ? \"is-loading\" : \"\")\n }, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(\"div\", {\n className: \"adminify-loading-spinner\"\n })), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(\"iframe\", {\n onLoad: handleLoadIframe,\n width: \"100%\",\n height: \"100%\",\n id: IFRAME_ID,\n src: frameURL,\n frameBorder: \"0\"\n }))));\n}\n/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (App);\n\n//# sourceURL=webpack://adminify/./dev/admin/frame/App.jsx?");
20 20
21 21 /***/ }),
22 22
23 23 /***/ "./dev/admin/frame/FrameGuard.js":
@@ -45,9 +45,9 @@
45 45 !*** ./dev/admin/frame/Sidebar/Sidebar.jsx ***!
46 46 \*********************************************/
47 47 /***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
48 48
49 -eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"default\": () => (__WEBPACK_DEFAULT_EXPORT__)\n/* harmony export */ });\n/* harmony import */ var _wordpress_element__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! @wordpress/element */ \"./node_modules/react/index.js\");\n/* harmony import */ var _wordpress_element__WEBPACK_IMPORTED_MODULE_3___default = /*#__PURE__*/__webpack_require__.n(_wordpress_element__WEBPACK_IMPORTED_MODULE_3__);\n/* harmony import */ var _utils_uitls__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../utils/uitls */ \"./dev/admin/frame/utils/uitls.js\");\n/* harmony import */ var _components_UserInfo__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./components/UserInfo */ \"./dev/admin/frame/Sidebar/components/UserInfo.jsx\");\n/* harmony import */ var _components_MenuSearch__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./components/MenuSearch */ \"./dev/admin/frame/Sidebar/components/MenuSearch.jsx\");\nfunction _typeof(o) { \"@babel/helpers - typeof\"; return _typeof = \"function\" == typeof Symbol && \"symbol\" == typeof Symbol.iterator ? function (o) { return typeof o; } : function (o) { return o && \"function\" == typeof Symbol && o.constructor === Symbol && o !== Symbol.prototype ? \"symbol\" : typeof o; }, _typeof(o); }\nfunction _extends() { return _extends = Object.assign ? Object.assign.bind() : function (n) { for (var e = 1; e < arguments.length; e++) { var t = arguments[e]; for (var r in t) ({}).hasOwnProperty.call(t, r) && (n[r] = t[r]); } return n; }, _extends.apply(null, arguments); }\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; }\nfunction ownKeys(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e); r && (o = o.filter(function (r) { return Object.getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; }\nfunction _objectSpread(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys(Object(t), !0).forEach(function (r) { _defineProperty(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; }\nfunction _defineProperty(e, r, t) { return (r = _toPropertyKey(r)) in e ? Object.defineProperty(e, r, { value: t, enumerable: !0, configurable: !0, writable: !0 }) : e[r] = t, e; }\nfunction _toPropertyKey(t) { var i = _toPrimitive(t, \"string\"); return \"symbol\" == _typeof(i) ? i : i + \"\"; }\nfunction _toPrimitive(t, r) { if (\"object\" != _typeof(t) || !t) return t; var e = t[Symbol.toPrimitive]; if (void 0 !== e) { var i = e.call(t, r || \"default\"); if (\"object\" != _typeof(i)) return i; throw new TypeError(\"@@toPrimitive must return a primitive value.\"); } return (\"string\" === r ? String : Number)(t); }\n\n\n\n\nfunction Sidebar(_ref) {\n var _menuLayoutSettings, _menuLayoutSettings2, _menuLayoutSettings3, _menuLayoutSettings4, _menuLayoutSettings5, _menuLayoutSettings13, _menuLayoutSettings14, _menuLayoutSettings15, _menuLayoutSettings16, _menuLayoutSettings17, _menuLayoutSettings18, _menuLayoutSettings19, _frame_adminify_menu$;\n var setUrl = _ref.setUrl,\n iframeClickedActiveMenu = _ref.iframeClickedActiveMenu,\n folded = _ref.folded,\n collapse = _ref.collapse,\n setCollapse = _ref.setCollapse,\n topbarHeight = _ref.topbarHeight;\n // Settings Data\n var sidebarData = frame_adminify_menu.menu;\n var userInfo = frame_adminify_menu.user_info;\n var menuLayoutSettings = frame_adminify_menu.menu_layout_settings;\n var isPro = !!frame_adminify_menu.is_pro;\n var menuSearch = isPro && (_menuLayoutSettings = menuLayoutSettings) !== null && _menuLayoutSettings !== void 0 && _menuLayoutSettings.menu_search ? !!Number((_menuLayoutSettings2 = menuLayoutSettings) === null || _menuLayoutSettings2 === void 0 ? void 0 : _menuLayoutSettings2.menu_search) : false;\n var userInfoFields = (_menuLayoutSettings3 = menuLayoutSettings) === null || _menuLayoutSettings3 === void 0 ? void 0 : _menuLayoutSettings3.user_info_fields;\n if (((_menuLayoutSettings4 = menuLayoutSettings) === null || _menuLayoutSettings4 === void 0 ? void 0 : _menuLayoutSettings4.menu_hover_submenu) === \"classic\" || !((_menuLayoutSettings5 = menuLayoutSettings) !== null && _menuLayoutSettings5 !== void 0 && _menuLayoutSettings5.menu_hover_submenu)) {\n menuLayoutSettings = _objectSpread(_objectSpread({}, menuLayoutSettings), {}, {\n menu_hover_submenu: \"two_step\"\n });\n }\n var _useState = (0,_wordpress_element__WEBPACK_IMPORTED_MODULE_3__.useState)({}),\n _useState2 = _slicedToArray(_useState, 2),\n submenuHeight = _useState2[0],\n setSubmenuHeight = _useState2[1];\n var _useState3 = (0,_wordpress_element__WEBPACK_IMPORTED_MODULE_3__.useState)({}),\n _useState4 = _slicedToArray(_useState3, 2),\n thirdLevelHeight = _useState4[0],\n setThirdLevelHeight = _useState4[1];\n\n // States\n var _useState5 = (0,_wordpress_element__WEBPACK_IMPORTED_MODULE_3__.useState)((0,_utils_uitls__WEBPACK_IMPORTED_MODULE_0__.getActiveMenu)(sidebarData) || []),\n _useState6 = _slicedToArray(_useState5, 2),\n activeMenu = _useState6[0],\n setActiveMenu = _useState6[1];\n var _useState7 = (0,_wordpress_element__WEBPACK_IMPORTED_MODULE_3__.useState)((0,_utils_uitls__WEBPACK_IMPORTED_MODULE_0__.getActiveMenu)(sidebarData, true) || \"\"),\n _useState8 = _slicedToArray(_useState7, 2),\n activeSubmenu = _useState8[0],\n setActiveSubmenu = _useState8[1];\n var _useState9 = (0,_wordpress_element__WEBPACK_IMPORTED_MODULE_3__.useState)(\"\"),\n _useState10 = _slicedToArray(_useState9, 2),\n activeThirdLevel = _useState10[0],\n setActiveThirdLevel = _useState10[1];\n var _useState11 = (0,_wordpress_element__WEBPACK_IMPORTED_MODULE_3__.useState)([]),\n _useState12 = _slicedToArray(_useState11, 2),\n showSubmenu = _useState12[0],\n setShowSubmenu = _useState12[1];\n var _useState13 = (0,_wordpress_element__WEBPACK_IMPORTED_MODULE_3__.useState)([]),\n _useState14 = _slicedToArray(_useState13, 2),\n showThirdLevel = _useState14[0],\n setShowThirdLevel = _useState14[1];\n var _useState15 = (0,_wordpress_element__WEBPACK_IMPORTED_MODULE_3__.useState)(\"\"),\n _useState16 = _slicedToArray(_useState15, 2),\n searchText = _useState16[0],\n setSearchText = _useState16[1];\n\n // For Two Step mode: track which 3rd level panel is showing\n var _useState17 = (0,_wordpress_element__WEBPACK_IMPORTED_MODULE_3__.useState)(null),\n _useState18 = _slicedToArray(_useState17, 2),\n twoStepThirdLevel = _useState18[0],\n setTwoStepThirdLevel = _useState18[1];\n\n // The two step panels are absolutely positioned inside the scrolling menu\n // wrapper, so `top: 0` means the top of the scrolled *content* - after the\n // menu had been scrolled down the panel header (\"back to main menu\") sat\n // above the visible strip. The wrapper cannot report its own scroll offset to\n // CSS, so it is published as custom properties the stylesheet reads.\n var menuWrapperRef = (0,_wordpress_element__WEBPACK_IMPORTED_MODULE_3__.useRef)();\n var syncMenuViewport = function syncMenuViewport() {\n var wrapper = menuWrapperRef.current;\n if (!wrapper) return;\n wrapper.style.setProperty(\"--adminify-menu-scroll-top\", \"\".concat(wrapper.scrollTop, \"px\"));\n wrapper.style.setProperty(\"--adminify-menu-viewport-height\", \"\".concat(wrapper.clientHeight, \"px\"));\n };\n (0,_wordpress_element__WEBPACK_IMPORTED_MODULE_3__.useEffect)(function () {\n syncMenuViewport();\n window.addEventListener(\"resize\", syncMenuViewport);\n return function () {\n return window.removeEventListener(\"resize\", syncMenuViewport);\n };\n }, []);\n var handleActiveMenu = function handleActiveMenu(id) {\n setActiveMenu([id]);\n };\n\n // Show Or Hide Submenu\n var handleShowSubmenu = function handleShowSubmenu(id) {\n var _menuLayoutSettings6, _menuLayoutSettings7;\n // Measured before the panel opens: opening switches the wrapper to\n // `overflow: hidden`, which is why the offset has to be captured first.\n syncMenuViewport();\n\n // Reset third level when changing submenu\n setShowThirdLevel([]);\n setTwoStepThirdLevel(null);\n if (((_menuLayoutSettings6 = menuLayoutSettings) === null || _menuLayoutSettings6 === void 0 ? void 0 : _menuLayoutSettings6.menu_hover_submenu) === \"toggle\" || ((_menuLayoutSettings7 = menuLayoutSettings) === null || _menuLayoutSettings7 === void 0 ? void 0 : _menuLayoutSettings7.menu_hover_submenu) === \"accordion\") {\n if (showSubmenu.includes(id)) {\n var index = showSubmenu.indexOf(id);\n var newMenu = _toConsumableArray(showSubmenu);\n newMenu.splice(index, 1);\n setShowSubmenu(newMenu);\n } else {\n var _menuLayoutSettings8;\n if (((_menuLayoutSettings8 = menuLayoutSettings) === null || _menuLayoutSettings8 === void 0 ? void 0 : _menuLayoutSettings8.menu_hover_submenu) === \"accordion\") {\n setShowSubmenu([id]);\n } else {\n setShowSubmenu([].concat(_toConsumableArray(showSubmenu), [id]));\n }\n }\n } else {\n setShowSubmenu([id]);\n }\n };\n\n // Show Or Hide Third Level Menu (for Elementor flyout items etc.)\n var handleShowThirdLevel = function handleShowThirdLevel(id, e, submenuData, parentMenuKey) {\n var _menuLayoutSettings9, _menuLayoutSettings10, _menuLayoutSettings11;\n // For Two Step mode: show as separate panel\n if (((_menuLayoutSettings9 = menuLayoutSettings) === null || _menuLayoutSettings9 === void 0 ? void 0 : _menuLayoutSettings9.menu_hover_submenu) === \"two_step\") {\n setTwoStepThirdLevel({\n key: id,\n title: submenuData === null || submenuData === void 0 ? void 0 : submenuData.title,\n children: submenuData === null || submenuData === void 0 ? void 0 : submenuData.children\n });\n return;\n }\n\n // For Accordion/Toggle modes: use height animation\n if (((_menuLayoutSettings10 = menuLayoutSettings) === null || _menuLayoutSettings10 === void 0 ? void 0 : _menuLayoutSettings10.menu_hover_submenu) === \"toggle\" || ((_menuLayoutSettings11 = menuLayoutSettings) === null || _menuLayoutSettings11 === void 0 ? void 0 : _menuLayoutSettings11.menu_hover_submenu) === \"accordion\") {\n var _e$currentTarget;\n var isClosing = showThirdLevel.includes(id);\n var thirdLevelEl = e === null || e === void 0 || (_e$currentTarget = e.currentTarget) === null || _e$currentTarget === void 0 ? void 0 : _e$currentTarget.nextElementSibling;\n var thirdLevelScrollHeight = (thirdLevelEl === null || thirdLevelEl === void 0 ? void 0 : thirdLevelEl.scrollHeight) || thirdLevelHeight[id] || 0;\n if (isClosing) {\n // Closing: subtract third level height from parent submenu\n setShowThirdLevel(showThirdLevel.filter(function (item) {\n return item !== id;\n }));\n if (parentMenuKey && submenuHeight[parentMenuKey]) {\n setSubmenuHeight(_objectSpread(_objectSpread({}, submenuHeight), {}, _defineProperty({}, parentMenuKey, submenuHeight[parentMenuKey] - thirdLevelScrollHeight)));\n }\n } else {\n var _menuLayoutSettings12;\n if (((_menuLayoutSettings12 = menuLayoutSettings) === null || _menuLayoutSettings12 === void 0 ? void 0 : _menuLayoutSettings12.menu_hover_submenu) === \"accordion\") {\n // Accordion: only one open at a time\n // First, subtract any previously open third level heights\n var newSubmenuHeight = _objectSpread({}, submenuHeight);\n showThirdLevel.forEach(function (openId) {\n if (thirdLevelHeight[openId] && parentMenuKey) {\n newSubmenuHeight[parentMenuKey] = (newSubmenuHeight[parentMenuKey] || 0) - thirdLevelHeight[openId];\n }\n });\n setShowThirdLevel([id]);\n\n // Add new third level height\n if (parentMenuKey) {\n newSubmenuHeight[parentMenuKey] = (newSubmenuHeight[parentMenuKey] || submenuHeight[parentMenuKey] || 0) + thirdLevelScrollHeight;\n setSubmenuHeight(newSubmenuHeight);\n }\n } else {\n // Toggle: multiple can be open\n setShowThirdLevel([].concat(_toConsumableArray(showThirdLevel), [id]));\n\n // Add third level height to parent submenu\n if (parentMenuKey && submenuHeight[parentMenuKey]) {\n setSubmenuHeight(_objectSpread(_objectSpread({}, submenuHeight), {}, _defineProperty({}, parentMenuKey, submenuHeight[parentMenuKey] + thirdLevelScrollHeight)));\n }\n }\n\n // Store height for animation\n if (thirdLevelEl && !thirdLevelHeight.hasOwnProperty(id)) {\n setThirdLevelHeight(_objectSpread(_objectSpread({}, thirdLevelHeight), {}, _defineProperty({}, id, thirdLevelScrollHeight)));\n }\n }\n } else {\n // Default toggle behavior\n if (showThirdLevel.includes(id)) {\n setShowThirdLevel([]);\n } else {\n setShowThirdLevel([id]);\n }\n }\n };\n\n // Go back from third level panel (Two Step mode)\n var handleBackFromThirdLevel = function handleBackFromThirdLevel() {\n setTwoStepThirdLevel(null);\n };\n\n // Below this width the sidebar is an overlay drawer over the frame (see the\n // `max-width: 992px` block in sidebar.scss). Once a link is followed the user\n // wants the page behind it, so the drawer slides back out of the way.\n var MOBILE_BREAKPOINT = 992;\n var closeSidebarOnSmallScreen = function closeSidebarOnSmallScreen() {\n if (window.innerWidth <= MOBILE_BREAKPOINT) {\n setCollapse(false);\n }\n };\n var ref = (0,_wordpress_element__WEBPACK_IMPORTED_MODULE_3__.useRef)();\n (0,_wordpress_element__WEBPACK_IMPORTED_MODULE_3__.useEffect)(function () {\n function handleClickOutside(event) {\n if (ref.current && !ref.current.contains(event.target)) {\n setCollapse(false);\n }\n }\n // Bind the event listener\n document.addEventListener(\"mousedown\", handleClickOutside);\n document.querySelector(\"#frame-adminify-app--iframe\").contentWindow.addEventListener(\"mousedown\", handleClickOutside);\n return function () {\n // Unbind the event listener on clean up\n document.removeEventListener(\"mousedown\", handleClickOutside);\n document.querySelector(\"#frame-adminify-app--iframe\").contentWindow.removeEventListener(\"mousedown\", handleClickOutside);\n };\n }, [ref]);\n (0,_wordpress_element__WEBPACK_IMPORTED_MODULE_3__.useEffect)(function () {\n var _iframeClickedActiveM;\n if ((iframeClickedActiveMenu === null || iframeClickedActiveMenu === void 0 || (_iframeClickedActiveM = iframeClickedActiveMenu.menu) === null || _iframeClickedActiveM === void 0 ? void 0 : _iframeClickedActiveM.length) > 0) {\n setActiveMenu(_toConsumableArray(iframeClickedActiveMenu === null || iframeClickedActiveMenu === void 0 ? void 0 : iframeClickedActiveMenu.menu));\n }\n if (!!(iframeClickedActiveMenu !== null && iframeClickedActiveMenu !== void 0 && iframeClickedActiveMenu.submenu)) {\n setActiveSubmenu(iframeClickedActiveMenu === null || iframeClickedActiveMenu === void 0 ? void 0 : iframeClickedActiveMenu.submenu);\n }\n }, [iframeClickedActiveMenu]);\n\n // Filter menu items by search text\n var stripHtml = function stripHtml(html) {\n var tmp = document.createElement(\"div\");\n tmp.innerHTML = html;\n return tmp.textContent || tmp.innerText || \"\";\n };\n var filterMenuBySearch = function filterMenuBySearch(menuData) {\n if (!menuSearch) return menuData;\n if (!searchText.trim()) return menuData;\n var query = searchText.toLowerCase().trim();\n var filtered = {};\n Object.entries(menuData).forEach(function (_ref2) {\n var _ref3 = _slicedToArray(_ref2, 2),\n key = _ref3[0],\n menu = _ref3[1];\n var menuTitle = stripHtml((menu === null || menu === void 0 ? void 0 : menu.title) || \"\").toLowerCase();\n if (menuTitle.includes(query)) {\n filtered[key] = menu;\n return;\n }\n if (menu !== null && menu !== void 0 && menu.children && Object.keys(menu.children).length > 0) {\n var matchedChildren = {};\n Object.entries(menu.children).forEach(function (_ref4) {\n var _ref5 = _slicedToArray(_ref4, 2),\n childKey = _ref5[0],\n child = _ref5[1];\n var childTitle = stripHtml((child === null || child === void 0 ? void 0 : child.title) || \"\").toLowerCase();\n if (childTitle.includes(query)) {\n matchedChildren[childKey] = child;\n }\n });\n if (Object.keys(matchedChildren).length > 0) {\n filtered[key] = _objectSpread(_objectSpread({}, menu), {}, {\n children: matchedChildren\n });\n }\n }\n });\n return filtered;\n };\n var filteredSidebarData = filterMenuBySearch(sidebarData);\n\n // Helper function to check if menu mode is two_step\n var isTwoStepMode = ((_menuLayoutSettings13 = menuLayoutSettings) === null || _menuLayoutSettings13 === void 0 ? void 0 : _menuLayoutSettings13.menu_hover_submenu) === \"two_step\";\n var isAccordionOrToggle = ((_menuLayoutSettings14 = menuLayoutSettings) === null || _menuLayoutSettings14 === void 0 ? void 0 : _menuLayoutSettings14.menu_hover_submenu) === \"accordion\" || ((_menuLayoutSettings15 = menuLayoutSettings) === null || _menuLayoutSettings15 === void 0 ? void 0 : _menuLayoutSettings15.menu_hover_submenu) === \"toggle\";\n return /*#__PURE__*/React.createElement(\"div\", {\n ref: ref,\n \"data-menu-mode\": (_menuLayoutSettings16 = menuLayoutSettings) === null || _menuLayoutSettings16 === void 0 ? void 0 : _menuLayoutSettings16.menu_hover_submenu,\n className: \"frame-adminify-sidebar-wrap frame-adminify-menu-mode-\".concat((_menuLayoutSettings17 = menuLayoutSettings) === null || _menuLayoutSettings17 === void 0 ? void 0 : _menuLayoutSettings17.menu_mode, \" \").concat(folded ? \"adminify-sidebar-folded \".concat(((_menuLayoutSettings18 = menuLayoutSettings) === null || _menuLayoutSettings18 === void 0 ? void 0 : _menuLayoutSettings18.menu_mode) === \"rounded\" ? \"\" : ((_menuLayoutSettings19 = menuLayoutSettings) === null || _menuLayoutSettings19 === void 0 ? void 0 : _menuLayoutSettings19.icon_style) === \"rounded\" ? \"adminify-icon-style-rounded\" : \"\") : \"\", \" \").concat(collapse ? \"adminify-sidebar-collapse\" : \"\")\n }, /*#__PURE__*/React.createElement(\"div\", {\n className: \"frame-adminify-admin-menu-wrapper\",\n ref: menuWrapperRef,\n onScroll: syncMenuViewport\n }, /*#__PURE__*/React.createElement(\"div\", {\n className: \"frame-adminify-admin-main-menu\",\n style: {\n \"--adminify-sidebar-offset\": \"\".concat((Number(topbarHeight) || 56) + 20, \"px\")\n }\n }, /*#__PURE__*/React.createElement(\"ul\", {\n className: \"frame-adminify-admin-menu\"\n }, !!(userInfoFields !== null && userInfoFields !== void 0 && userInfoFields.enable_user_info) && (userInfoFields === null || userInfoFields === void 0 ? void 0 : userInfoFields.enable_user_info) != \"0\" && !folded ? /*#__PURE__*/React.createElement(_components_UserInfo__WEBPACK_IMPORTED_MODULE_1__[\"default\"], {\n userInfo: _objectSpread(_objectSpread(_objectSpread({}, userInfo), userInfoFields), (_frame_adminify_menu$ = frame_adminify_menu.menu_layout_settings) === null || _frame_adminify_menu$ === void 0 ? void 0 : _frame_adminify_menu$.user_info_style)\n }) : null, menuSearch ? /*#__PURE__*/React.createElement(\"li\", {\n className: \"frame-adminify-menu-item\"\n }, /*#__PURE__*/React.createElement(_components_MenuSearch__WEBPACK_IMPORTED_MODULE_2__[\"default\"], {\n onSearch: setSearchText\n })) : null, Object.values(filteredSidebarData).map(function (menu, index) {\n var menuStr = \"<div class=\\\"frame-adminify-menu-item-wrap\\\">\".concat((0,_utils_uitls__WEBPACK_IMPORTED_MODULE_0__.getIcon)(menu), \" <span class=\\\"frame-adminify-menu-item-name\\\">\").concat((0,_utils_uitls__WEBPACK_IMPORTED_MODULE_0__.normalizeCopyDeletePostsMenu)(menu === null || menu === void 0 ? void 0 : menu.title), \"</span></div>\");\n if ((menu === null || menu === void 0 ? void 0 : menu.children.length) === 0) {\n // Menu Without Submenu, Refresh the Frame\n return /*#__PURE__*/React.createElement(_wordpress_element__WEBPACK_IMPORTED_MODULE_3__.Fragment, {\n key: menu === null || menu === void 0 ? void 0 : menu.key\n }, !!(menu !== null && menu !== void 0 && menu.title) ? /*#__PURE__*/React.createElement(\"li\", {\n className: \"frame-adminify-menu-item \".concat(activeMenu.includes(menu === null || menu === void 0 ? void 0 : menu.key) ? \"frame-adminify--menu-active\" : \"\"),\n id: (menu === null || menu === void 0 ? void 0 : menu.name) || (menu === null || menu === void 0 ? void 0 : menu.key)\n }, /*#__PURE__*/React.createElement(\"a\", _extends({\n href: menu === null || menu === void 0 ? void 0 : menu.url\n }, !(0,_utils_uitls__WEBPACK_IMPORTED_MODULE_0__.checkAdminUrl)(menu === null || menu === void 0 ? void 0 : menu.url) || menu !== null && menu !== void 0 && menu.external_link ? {\n target: \"_blank\"\n } : {}, {\n onClick: function onClick(e) {\n // Allow Ctrl/Cmd/Shift/middle click to open in new tab\n if ((0,_utils_uitls__WEBPACK_IMPORTED_MODULE_0__.isNewTabClick)(e)) {\n return;\n }\n if (menu !== null && menu !== void 0 && menu.external_link) {\n e.preventDefault();\n window.open(menu === null || menu === void 0 ? void 0 : menu.url, \"_blank\");\n closeSidebarOnSmallScreen();\n return;\n }\n if (!!(0,_utils_uitls__WEBPACK_IMPORTED_MODULE_0__.checkAdminUrl)(menu === null || menu === void 0 ? void 0 : menu.url)) {\n e.preventDefault();\n (0,_utils_uitls__WEBPACK_IMPORTED_MODULE_0__.handleURLChange)(menu === null || menu === void 0 ? void 0 : menu.url);\n setUrl(menu === null || menu === void 0 ? void 0 : menu.url);\n handleActiveMenu(menu === null || menu === void 0 ? void 0 : menu.key);\n closeSidebarOnSmallScreen();\n }\n },\n dangerouslySetInnerHTML: {\n __html: menuStr\n }\n }))) : null, !!(menu !== null && menu !== void 0 && menu.separator) && (menu === null || menu === void 0 ? void 0 : menu.separator) != \"0\" ? /*#__PURE__*/React.createElement(\"li\", {\n className: \"frame-adminify-menu-item\"\n }, /*#__PURE__*/React.createElement(\"hr\", {\n className: \"frame-adminify-menu-separator\"\n })) : null);\n } else {\n var _menuLayoutSettings21, _menuLayoutSettings22;\n return (\n /*#__PURE__*/\n // Menu With Submenu, Do not Refresh the Frame\n React.createElement(_wordpress_element__WEBPACK_IMPORTED_MODULE_3__.Fragment, {\n key: menu === null || menu === void 0 ? void 0 : menu.key\n }, /*#__PURE__*/React.createElement(\"li\", {\n className: \"frame-adminify-menu-item frame-adminify-has-submenu\".concat(showSubmenu !== null && showSubmenu !== void 0 && showSubmenu.includes(menu === null || menu === void 0 ? void 0 : menu.key) ? \" frame-adminify--menu-show\" : \"\").concat(activeMenu.includes(menu === null || menu === void 0 ? void 0 : menu.key) ? \" frame-adminify--menu-active\" : \"\"),\n id: (menu === null || menu === void 0 ? void 0 : menu.name) || (menu === null || menu === void 0 ? void 0 : menu.key)\n }, /*#__PURE__*/React.createElement(\"a\", {\n href: menu !== null && menu !== void 0 && menu.url ? menu === null || menu === void 0 ? void 0 : menu.url : \"#\",\n dangerouslySetInnerHTML: {\n __html: menuStr + '<span class=\"dashicons dashicons-arrow-right-alt2\"></span>'\n },\n onClick: function onClick(e) {\n var _menuLayoutSettings20;\n // Allow Ctrl/Cmd/Shift/middle click to open in new tab\n if ((0,_utils_uitls__WEBPACK_IMPORTED_MODULE_0__.isNewTabClick)(e) && menu !== null && menu !== void 0 && menu.url) {\n return;\n }\n e.preventDefault();\n handleShowSubmenu(menu === null || menu === void 0 ? void 0 : menu.key);\n if (((_menuLayoutSettings20 = menuLayoutSettings) === null || _menuLayoutSettings20 === void 0 ? void 0 : _menuLayoutSettings20.menu_hover_submenu) !== \"two_step\" && !submenuHeight.hasOwnProperty(menu === null || menu === void 0 ? void 0 : menu.key)) {\n var _e$currentTarget$next;\n setSubmenuHeight(_objectSpread(_objectSpread({}, submenuHeight), {}, _defineProperty({}, menu === null || menu === void 0 ? void 0 : menu.key, (_e$currentTarget$next = e.currentTarget.nextElementSibling) === null || _e$currentTarget$next === void 0 ? void 0 : _e$currentTarget$next.scrollHeight)));\n }\n }\n }), /*#__PURE__*/React.createElement(\"div\", _extends({\n className: \"frame-adminify-submenu-wrapper\".concat(twoStepThirdLevel && showSubmenu !== null && showSubmenu !== void 0 && showSubmenu.includes(menu === null || menu === void 0 ? void 0 : menu.key) ? \" frame-adminify-third-level-active\" : \"\")\n }, ((_menuLayoutSettings21 = menuLayoutSettings) === null || _menuLayoutSettings21 === void 0 ? void 0 : _menuLayoutSettings21.menu_hover_submenu) !== \"two_step\" ? {\n style: showSubmenu !== null && showSubmenu !== void 0 && showSubmenu.includes(menu === null || menu === void 0 ? void 0 : menu.key) ? {\n height: submenuHeight === null || submenuHeight === void 0 ? void 0 : submenuHeight[menu === null || menu === void 0 ? void 0 : menu.key]\n } : {\n height: \"0px\"\n }\n } : {}), isTwoStepMode && /*#__PURE__*/React.createElement(\"div\", {\n className: \"frame-adminify-third-level-panel-container\".concat(twoStepThirdLevel && showSubmenu !== null && showSubmenu !== void 0 && showSubmenu.includes(menu === null || menu === void 0 ? void 0 : menu.key) ? \" frame-adminify-third-level-visible\" : \"\")\n }, twoStepThirdLevel && /*#__PURE__*/React.createElement(\"ul\", {\n className: \"frame-adminify-submenu frame-adminify-third-level-panel\"\n }, /*#__PURE__*/React.createElement(\"li\", {\n className: \"frame-adminify-submenu-item frame-adminify-two-step\"\n }, /*#__PURE__*/React.createElement(\"div\", {\n className: \"frame-adminify-two-step-title\",\n onClick: handleBackFromThirdLevel\n }, /*#__PURE__*/React.createElement(\"span\", {\n className: \"frame-adminify-arrow dashicons dashicons-arrow-left-alt2\"\n }), /*#__PURE__*/React.createElement(\"h2\", {\n dangerouslySetInnerHTML: {\n __html: twoStepThirdLevel.title\n }\n }))), twoStepThirdLevel.children && Object.values(twoStepThirdLevel.children).map(function (thirdLevel) {\n return /*#__PURE__*/React.createElement(\"li\", {\n key: thirdLevel === null || thirdLevel === void 0 ? void 0 : thirdLevel.key,\n className: \"frame-adminify-submenu-item frame-adminify-third-level-item \".concat((thirdLevel === null || thirdLevel === void 0 ? void 0 : thirdLevel.key) === activeThirdLevel ? \"frame-adminify--third-level-active\" : \"\")\n }, /*#__PURE__*/React.createElement(\"a\", _extends({\n href: thirdLevel === null || thirdLevel === void 0 ? void 0 : thirdLevel.url\n }, !(0,_utils_uitls__WEBPACK_IMPORTED_MODULE_0__.checkAdminUrl)(thirdLevel === null || thirdLevel === void 0 ? void 0 : thirdLevel.url) || thirdLevel !== null && thirdLevel !== void 0 && thirdLevel.external_link ? {\n target: \"_blank\"\n } : {}, {\n dangerouslySetInnerHTML: {\n __html: thirdLevel === null || thirdLevel === void 0 ? void 0 : thirdLevel.title\n },\n onClick: function onClick(e) {\n // Allow Ctrl/Cmd/Shift/middle click to open in new tab\n if ((0,_utils_uitls__WEBPACK_IMPORTED_MODULE_0__.isNewTabClick)(e)) {\n return;\n }\n if (thirdLevel !== null && thirdLevel !== void 0 && thirdLevel.external_link) {\n e.preventDefault();\n window.open(thirdLevel === null || thirdLevel === void 0 ? void 0 : thirdLevel.url, \"_blank\");\n closeSidebarOnSmallScreen();\n return;\n }\n if (!!(0,_utils_uitls__WEBPACK_IMPORTED_MODULE_0__.checkAdminUrl)(thirdLevel === null || thirdLevel === void 0 ? void 0 : thirdLevel.url)) {\n e.preventDefault();\n handleActiveMenu(menu === null || menu === void 0 ? void 0 : menu.key);\n setActiveSubmenu(twoStepThirdLevel.key);\n setActiveThirdLevel(thirdLevel === null || thirdLevel === void 0 ? void 0 : thirdLevel.key);\n (0,_utils_uitls__WEBPACK_IMPORTED_MODULE_0__.handleURLChange)(thirdLevel === null || thirdLevel === void 0 ? void 0 : thirdLevel.url);\n setUrl(thirdLevel === null || thirdLevel === void 0 ? void 0 : thirdLevel.url);\n closeSidebarOnSmallScreen();\n }\n }\n })));\n }))), /*#__PURE__*/React.createElement(\"ul\", {\n className: \"frame-adminify-submenu\".concat(isTwoStepMode && twoStepThirdLevel ? \" frame-adminify-submenu-slide-left\" : \"\")\n }, ((_menuLayoutSettings22 = menuLayoutSettings) === null || _menuLayoutSettings22 === void 0 ? void 0 : _menuLayoutSettings22.menu_hover_submenu) === \"two_step\" ? /*#__PURE__*/React.createElement(\"li\", {\n className: \"frame-adminify-submenu-item frame-adminify-two-step\"\n }, /*#__PURE__*/React.createElement(\"div\", {\n className: \"frame-adminify-two-step-title\",\n onClick: function onClick() {\n setShowSubmenu([]);\n setTwoStepThirdLevel(null);\n }\n }, /*#__PURE__*/React.createElement(\"span\", {\n className: \"frame-adminify-arrow dashicons dashicons-arrow-left-alt2\"\n }), /*#__PURE__*/React.createElement(\"h2\", {\n dangerouslySetInnerHTML: {\n __html: menu === null || menu === void 0 ? void 0 : menu.title\n }\n }))) : null, Object.values(menu === null || menu === void 0 ? void 0 : menu.children).map(function (submenu) {\n // Check if submenu has 3rd level children (e.g., Elementor flyout)\n var hasThirdLevel = (submenu === null || submenu === void 0 ? void 0 : submenu.has_flyout_children) && (submenu === null || submenu === void 0 ? void 0 : submenu.children) && Object.keys(submenu.children).length > 0;\n\n // Menu With Submenu, Refresh the Frame\n return /*#__PURE__*/React.createElement(\"li\", {\n key: submenu === null || submenu === void 0 ? void 0 : submenu.key,\n className: \"frame-adminify-submenu-item \".concat((submenu === null || submenu === void 0 ? void 0 : submenu.key) === activeSubmenu ? \"frame-adminify--submenu-active\" : \"\").concat(hasThirdLevel ? \" frame-adminify-has-third-level\" : \"\").concat(showThirdLevel.includes(submenu === null || submenu === void 0 ? void 0 : submenu.key) ? \" frame-adminify--third-level-show\" : \"\")\n }, /*#__PURE__*/React.createElement(\"a\", _extends({\n href: submenu === null || submenu === void 0 ? void 0 : submenu.url\n }, !(0,_utils_uitls__WEBPACK_IMPORTED_MODULE_0__.checkAdminUrl)(submenu === null || submenu === void 0 ? void 0 : submenu.url) || submenu !== null && submenu !== void 0 && submenu.external_link ? {\n target: \"_blank\"\n } : {}, {\n dangerouslySetInnerHTML: {\n __html: hasThirdLevel ? (submenu === null || submenu === void 0 ? void 0 : submenu.title) + '<span class=\"dashicons dashicons-arrow-right-alt2 frame-adminify-third-level-arrow\"></span>' : submenu === null || submenu === void 0 ? void 0 : submenu.title\n },\n onClick: function onClick(e) {\n // Allow Ctrl/Cmd/Shift/middle click to open in new tab\n if ((0,_utils_uitls__WEBPACK_IMPORTED_MODULE_0__.isNewTabClick)(e)) {\n return;\n }\n\n // If has 3rd level, handle based on menu mode\n if (hasThirdLevel) {\n e.preventDefault();\n handleShowThirdLevel(submenu === null || submenu === void 0 ? void 0 : submenu.key, e, submenu, menu === null || menu === void 0 ? void 0 : menu.key);\n return;\n }\n if (submenu !== null && submenu !== void 0 && submenu.external_link) {\n e.preventDefault();\n window.open(submenu === null || submenu === void 0 ? void 0 : submenu.url, \"_blank\");\n closeSidebarOnSmallScreen();\n return;\n }\n if (!!(0,_utils_uitls__WEBPACK_IMPORTED_MODULE_0__.checkAdminUrl)(submenu === null || submenu === void 0 ? void 0 : submenu.url)) {\n e.preventDefault();\n // Main Menu Active\n handleActiveMenu(menu === null || menu === void 0 ? void 0 : menu.key);\n // SubMenu Active\n (0,_utils_uitls__WEBPACK_IMPORTED_MODULE_0__.handleURLChange)(submenu === null || submenu === void 0 ? void 0 : submenu.url);\n setUrl(submenu === null || submenu === void 0 ? void 0 : submenu.url);\n setActiveSubmenu(submenu === null || submenu === void 0 ? void 0 : submenu.key);\n closeSidebarOnSmallScreen();\n }\n }\n })), hasThirdLevel && isAccordionOrToggle && /*#__PURE__*/React.createElement(\"div\", {\n className: \"frame-adminify-third-level-wrapper\",\n style: showThirdLevel.includes(submenu === null || submenu === void 0 ? void 0 : submenu.key) ? {\n height: (thirdLevelHeight === null || thirdLevelHeight === void 0 ? void 0 : thirdLevelHeight[submenu === null || submenu === void 0 ? void 0 : submenu.key]) || 'auto'\n } : {\n height: \"0px\"\n }\n }, /*#__PURE__*/React.createElement(\"ul\", {\n className: \"frame-adminify-third-level-menu\"\n }, Object.values(submenu.children).map(function (thirdLevel) {\n return /*#__PURE__*/React.createElement(\"li\", {\n key: thirdLevel === null || thirdLevel === void 0 ? void 0 : thirdLevel.key,\n className: \"frame-adminify-third-level-item \".concat((thirdLevel === null || thirdLevel === void 0 ? void 0 : thirdLevel.key) === activeThirdLevel ? \"frame-adminify--third-level-active\" : \"\").concat(thirdLevel !== null && thirdLevel !== void 0 && thirdLevel.is_flyout_child ? \" frame-adminify-flyout-child\" : \"\")\n }, /*#__PURE__*/React.createElement(\"a\", _extends({\n href: thirdLevel === null || thirdLevel === void 0 ? void 0 : thirdLevel.url\n }, !(0,_utils_uitls__WEBPACK_IMPORTED_MODULE_0__.checkAdminUrl)(thirdLevel === null || thirdLevel === void 0 ? void 0 : thirdLevel.url) || thirdLevel !== null && thirdLevel !== void 0 && thirdLevel.external_link ? {\n target: \"_blank\"\n } : {}, {\n dangerouslySetInnerHTML: {\n __html: thirdLevel === null || thirdLevel === void 0 ? void 0 : thirdLevel.title\n },\n onClick: function onClick(e) {\n // Allow Ctrl/Cmd/Shift/middle click to open in new tab\n if ((0,_utils_uitls__WEBPACK_IMPORTED_MODULE_0__.isNewTabClick)(e)) {\n return;\n }\n if (thirdLevel !== null && thirdLevel !== void 0 && thirdLevel.external_link) {\n e.preventDefault();\n window.open(thirdLevel === null || thirdLevel === void 0 ? void 0 : thirdLevel.url, \"_blank\");\n closeSidebarOnSmallScreen();\n return;\n }\n if (!!(0,_utils_uitls__WEBPACK_IMPORTED_MODULE_0__.checkAdminUrl)(thirdLevel === null || thirdLevel === void 0 ? void 0 : thirdLevel.url)) {\n e.preventDefault();\n handleActiveMenu(menu === null || menu === void 0 ? void 0 : menu.key);\n setActiveSubmenu(submenu === null || submenu === void 0 ? void 0 : submenu.key);\n setActiveThirdLevel(thirdLevel === null || thirdLevel === void 0 ? void 0 : thirdLevel.key);\n (0,_utils_uitls__WEBPACK_IMPORTED_MODULE_0__.handleURLChange)(thirdLevel === null || thirdLevel === void 0 ? void 0 : thirdLevel.url);\n setUrl(thirdLevel === null || thirdLevel === void 0 ? void 0 : thirdLevel.url);\n closeSidebarOnSmallScreen();\n }\n }\n })));\n }))));\n })))), !!(menu !== null && menu !== void 0 && menu.separator) && (menu === null || menu === void 0 ? void 0 : menu.separator) != \"0\" ? /*#__PURE__*/React.createElement(\"li\", {\n className: \"frame-adminify-menu-item \"\n }, /*#__PURE__*/React.createElement(\"hr\", {\n className: \"frame-adminify-menu-separator\"\n })) : null)\n );\n }\n })))));\n}\n/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (Sidebar);\n\n//# sourceURL=webpack://adminify/./dev/admin/frame/Sidebar/Sidebar.jsx?");
49 +eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"default\": () => (__WEBPACK_DEFAULT_EXPORT__)\n/* harmony export */ });\n/* harmony import */ var _wordpress_element__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! @wordpress/element */ \"./node_modules/react/index.js\");\n/* harmony import */ var _wordpress_element__WEBPACK_IMPORTED_MODULE_3___default = /*#__PURE__*/__webpack_require__.n(_wordpress_element__WEBPACK_IMPORTED_MODULE_3__);\n/* harmony import */ var _utils_uitls__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../utils/uitls */ \"./dev/admin/frame/utils/uitls.js\");\n/* harmony import */ var _components_UserInfo__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./components/UserInfo */ \"./dev/admin/frame/Sidebar/components/UserInfo.jsx\");\n/* harmony import */ var _components_MenuSearch__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./components/MenuSearch */ \"./dev/admin/frame/Sidebar/components/MenuSearch.jsx\");\nfunction _typeof(o) { \"@babel/helpers - typeof\"; return _typeof = \"function\" == typeof Symbol && \"symbol\" == typeof Symbol.iterator ? function (o) { return typeof o; } : function (o) { return o && \"function\" == typeof Symbol && o.constructor === Symbol && o !== Symbol.prototype ? \"symbol\" : typeof o; }, _typeof(o); }\nfunction _extends() { return _extends = Object.assign ? Object.assign.bind() : function (n) { for (var e = 1; e < arguments.length; e++) { var t = arguments[e]; for (var r in t) ({}).hasOwnProperty.call(t, r) && (n[r] = t[r]); } return n; }, _extends.apply(null, arguments); }\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; }\nfunction ownKeys(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e); r && (o = o.filter(function (r) { return Object.getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; }\nfunction _objectSpread(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys(Object(t), !0).forEach(function (r) { _defineProperty(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; }\nfunction _defineProperty(e, r, t) { return (r = _toPropertyKey(r)) in e ? Object.defineProperty(e, r, { value: t, enumerable: !0, configurable: !0, writable: !0 }) : e[r] = t, e; }\nfunction _toPropertyKey(t) { var i = _toPrimitive(t, \"string\"); return \"symbol\" == _typeof(i) ? i : i + \"\"; }\nfunction _toPrimitive(t, r) { if (\"object\" != _typeof(t) || !t) return t; var e = t[Symbol.toPrimitive]; if (void 0 !== e) { var i = e.call(t, r || \"default\"); if (\"object\" != _typeof(i)) return i; throw new TypeError(\"@@toPrimitive must return a primitive value.\"); } return (\"string\" === r ? String : Number)(t); }\n\n\n\n\nfunction Sidebar(_ref) {\n var _menuLayoutSettings, _menuLayoutSettings2, _menuLayoutSettings3, _menuLayoutSettings4, _menuLayoutSettings5, _menuLayoutSettings7, _menuLayoutSettings15, _menuLayoutSettings16, _menuLayoutSettings17, _menuLayoutSettings18, _menuLayoutSettings19, _menuLayoutSettings20, _menuLayoutSettings21, _frame_adminify_menu$;\n var setUrl = _ref.setUrl,\n iframeClickedActiveMenu = _ref.iframeClickedActiveMenu,\n folded = _ref.folded,\n collapse = _ref.collapse,\n setCollapse = _ref.setCollapse,\n topbarHeight = _ref.topbarHeight;\n // Settings Data\n var sidebarData = frame_adminify_menu.menu;\n var userInfo = frame_adminify_menu.user_info;\n var menuLayoutSettings = frame_adminify_menu.menu_layout_settings;\n var isPro = !!frame_adminify_menu.is_pro;\n var menuSearch = isPro && (_menuLayoutSettings = menuLayoutSettings) !== null && _menuLayoutSettings !== void 0 && _menuLayoutSettings.menu_search ? !!Number((_menuLayoutSettings2 = menuLayoutSettings) === null || _menuLayoutSettings2 === void 0 ? void 0 : _menuLayoutSettings2.menu_search) : false;\n var userInfoFields = (_menuLayoutSettings3 = menuLayoutSettings) === null || _menuLayoutSettings3 === void 0 ? void 0 : _menuLayoutSettings3.user_info_fields;\n if (((_menuLayoutSettings4 = menuLayoutSettings) === null || _menuLayoutSettings4 === void 0 ? void 0 : _menuLayoutSettings4.menu_hover_submenu) === \"classic\" || !((_menuLayoutSettings5 = menuLayoutSettings) !== null && _menuLayoutSettings5 !== void 0 && _menuLayoutSettings5.menu_hover_submenu)) {\n menuLayoutSettings = _objectSpread(_objectSpread({}, menuLayoutSettings), {}, {\n menu_hover_submenu: \"two_step\"\n });\n }\n var _useState = (0,_wordpress_element__WEBPACK_IMPORTED_MODULE_3__.useState)({}),\n _useState2 = _slicedToArray(_useState, 2),\n submenuHeight = _useState2[0],\n setSubmenuHeight = _useState2[1];\n var _useState3 = (0,_wordpress_element__WEBPACK_IMPORTED_MODULE_3__.useState)({}),\n _useState4 = _slicedToArray(_useState3, 2),\n thirdLevelHeight = _useState4[0],\n setThirdLevelHeight = _useState4[1];\n\n // States\n var _useState5 = (0,_wordpress_element__WEBPACK_IMPORTED_MODULE_3__.useState)((0,_utils_uitls__WEBPACK_IMPORTED_MODULE_0__.getActiveMenu)(sidebarData) || []),\n _useState6 = _slicedToArray(_useState5, 2),\n activeMenu = _useState6[0],\n setActiveMenu = _useState6[1];\n var _useState7 = (0,_wordpress_element__WEBPACK_IMPORTED_MODULE_3__.useState)((0,_utils_uitls__WEBPACK_IMPORTED_MODULE_0__.getActiveMenu)(sidebarData, true) || \"\"),\n _useState8 = _slicedToArray(_useState7, 2),\n activeSubmenu = _useState8[0],\n setActiveSubmenu = _useState8[1];\n var _useState9 = (0,_wordpress_element__WEBPACK_IMPORTED_MODULE_3__.useState)(\"\"),\n _useState10 = _slicedToArray(_useState9, 2),\n activeThirdLevel = _useState10[0],\n setActiveThirdLevel = _useState10[1];\n var _useState11 = (0,_wordpress_element__WEBPACK_IMPORTED_MODULE_3__.useState)([]),\n _useState12 = _slicedToArray(_useState11, 2),\n showSubmenu = _useState12[0],\n setShowSubmenu = _useState12[1];\n var _useState13 = (0,_wordpress_element__WEBPACK_IMPORTED_MODULE_3__.useState)([]),\n _useState14 = _slicedToArray(_useState13, 2),\n showThirdLevel = _useState14[0],\n setShowThirdLevel = _useState14[1];\n var _useState15 = (0,_wordpress_element__WEBPACK_IMPORTED_MODULE_3__.useState)(\"\"),\n _useState16 = _slicedToArray(_useState15, 2),\n searchText = _useState16[0],\n setSearchText = _useState16[1];\n\n // For Two Step mode: track which 3rd level panel is showing\n var _useState17 = (0,_wordpress_element__WEBPACK_IMPORTED_MODULE_3__.useState)(null),\n _useState18 = _slicedToArray(_useState17, 2),\n twoStepThirdLevel = _useState18[0],\n setTwoStepThirdLevel = _useState18[1];\n\n // The two step panels are absolutely positioned inside the scrolling menu\n // wrapper, so `top: 0` means the top of the scrolled *content* - after the\n // menu had been scrolled down the panel header (\"back to main menu\") sat\n // above the visible strip. The wrapper cannot report its own scroll offset to\n // CSS, so it is published as custom properties the stylesheet reads.\n var menuWrapperRef = (0,_wordpress_element__WEBPACK_IMPORTED_MODULE_3__.useRef)();\n\n // Submenu wrappers, keyed by menu key, so the active one can be measured and\n // opened on load without going through a click.\n var submenuRefs = (0,_wordpress_element__WEBPACK_IMPORTED_MODULE_3__.useRef)({});\n var didOpenActiveSubmenu = (0,_wordpress_element__WEBPACK_IMPORTED_MODULE_3__.useRef)(false);\n\n // Reloading a page under an open menu used to come back with every submenu\n // collapsed, even though the parent was still highlighted. Open the active\n // one so the sidebar keeps showing where you are.\n //\n // Only for the modes that expand in place: two step swaps the whole menu for\n // a panel, and doing that on every page load would hide the rest of the menu.\n (0,_wordpress_element__WEBPACK_IMPORTED_MODULE_3__.useEffect)(function () {\n var _menuLayoutSettings6;\n if (didOpenActiveSubmenu.current) return;\n var mode = (_menuLayoutSettings6 = menuLayoutSettings) === null || _menuLayoutSettings6 === void 0 ? void 0 : _menuLayoutSettings6.menu_hover_submenu;\n if (mode !== \"accordion\" && mode !== \"toggle\") return;\n var activeKey = activeMenu === null || activeMenu === void 0 ? void 0 : activeMenu[0];\n if (!activeKey) return;\n var wrapper = submenuRefs.current[activeKey];\n if (!wrapper) return;\n didOpenActiveSubmenu.current = true;\n setSubmenuHeight(function (prev) {\n return _objectSpread(_objectSpread({}, prev), {}, _defineProperty({}, activeKey, wrapper.scrollHeight));\n });\n setShowSubmenu([activeKey]);\n }, [activeMenu, (_menuLayoutSettings7 = menuLayoutSettings) === null || _menuLayoutSettings7 === void 0 ? void 0 : _menuLayoutSettings7.menu_hover_submenu]);\n var syncMenuViewport = function syncMenuViewport() {\n var wrapper = menuWrapperRef.current;\n if (!wrapper) return;\n wrapper.style.setProperty(\"--adminify-menu-scroll-top\", \"\".concat(wrapper.scrollTop, \"px\"));\n wrapper.style.setProperty(\"--adminify-menu-viewport-height\", \"\".concat(wrapper.clientHeight, \"px\"));\n };\n (0,_wordpress_element__WEBPACK_IMPORTED_MODULE_3__.useEffect)(function () {\n syncMenuViewport();\n window.addEventListener(\"resize\", syncMenuViewport);\n return function () {\n return window.removeEventListener(\"resize\", syncMenuViewport);\n };\n }, []);\n var handleActiveMenu = function handleActiveMenu(id) {\n setActiveMenu([id]);\n };\n\n // Show Or Hide Submenu\n var handleShowSubmenu = function handleShowSubmenu(id) {\n var _menuLayoutSettings8, _menuLayoutSettings9;\n // Measured before the panel opens: opening switches the wrapper to\n // `overflow: hidden`, which is why the offset has to be captured first.\n syncMenuViewport();\n\n // Reset third level when changing submenu\n setShowThirdLevel([]);\n setTwoStepThirdLevel(null);\n if (((_menuLayoutSettings8 = menuLayoutSettings) === null || _menuLayoutSettings8 === void 0 ? void 0 : _menuLayoutSettings8.menu_hover_submenu) === \"toggle\" || ((_menuLayoutSettings9 = menuLayoutSettings) === null || _menuLayoutSettings9 === void 0 ? void 0 : _menuLayoutSettings9.menu_hover_submenu) === \"accordion\") {\n if (showSubmenu.includes(id)) {\n var index = showSubmenu.indexOf(id);\n var newMenu = _toConsumableArray(showSubmenu);\n newMenu.splice(index, 1);\n setShowSubmenu(newMenu);\n } else {\n var _menuLayoutSettings10;\n if (((_menuLayoutSettings10 = menuLayoutSettings) === null || _menuLayoutSettings10 === void 0 ? void 0 : _menuLayoutSettings10.menu_hover_submenu) === \"accordion\") {\n setShowSubmenu([id]);\n } else {\n setShowSubmenu([].concat(_toConsumableArray(showSubmenu), [id]));\n }\n }\n } else {\n setShowSubmenu([id]);\n }\n };\n\n // Show Or Hide Third Level Menu (for Elementor flyout items etc.)\n var handleShowThirdLevel = function handleShowThirdLevel(id, e, submenuData, parentMenuKey) {\n var _menuLayoutSettings11, _menuLayoutSettings12, _menuLayoutSettings13;\n // For Two Step mode: show as separate panel\n if (((_menuLayoutSettings11 = menuLayoutSettings) === null || _menuLayoutSettings11 === void 0 ? void 0 : _menuLayoutSettings11.menu_hover_submenu) === \"two_step\") {\n setTwoStepThirdLevel({\n key: id,\n title: submenuData === null || submenuData === void 0 ? void 0 : submenuData.title,\n children: submenuData === null || submenuData === void 0 ? void 0 : submenuData.children\n });\n return;\n }\n\n // For Accordion/Toggle modes: use height animation\n if (((_menuLayoutSettings12 = menuLayoutSettings) === null || _menuLayoutSettings12 === void 0 ? void 0 : _menuLayoutSettings12.menu_hover_submenu) === \"toggle\" || ((_menuLayoutSettings13 = menuLayoutSettings) === null || _menuLayoutSettings13 === void 0 ? void 0 : _menuLayoutSettings13.menu_hover_submenu) === \"accordion\") {\n var _e$currentTarget;\n var isClosing = showThirdLevel.includes(id);\n var thirdLevelEl = e === null || e === void 0 || (_e$currentTarget = e.currentTarget) === null || _e$currentTarget === void 0 ? void 0 : _e$currentTarget.nextElementSibling;\n var thirdLevelScrollHeight = (thirdLevelEl === null || thirdLevelEl === void 0 ? void 0 : thirdLevelEl.scrollHeight) || thirdLevelHeight[id] || 0;\n if (isClosing) {\n // Closing: subtract third level height from parent submenu\n setShowThirdLevel(showThirdLevel.filter(function (item) {\n return item !== id;\n }));\n if (parentMenuKey && submenuHeight[parentMenuKey]) {\n setSubmenuHeight(_objectSpread(_objectSpread({}, submenuHeight), {}, _defineProperty({}, parentMenuKey, submenuHeight[parentMenuKey] - thirdLevelScrollHeight)));\n }\n } else {\n var _menuLayoutSettings14;\n if (((_menuLayoutSettings14 = menuLayoutSettings) === null || _menuLayoutSettings14 === void 0 ? void 0 : _menuLayoutSettings14.menu_hover_submenu) === \"accordion\") {\n // Accordion: only one open at a time\n // First, subtract any previously open third level heights\n var newSubmenuHeight = _objectSpread({}, submenuHeight);\n showThirdLevel.forEach(function (openId) {\n if (thirdLevelHeight[openId] && parentMenuKey) {\n newSubmenuHeight[parentMenuKey] = (newSubmenuHeight[parentMenuKey] || 0) - thirdLevelHeight[openId];\n }\n });\n setShowThirdLevel([id]);\n\n // Add new third level height\n if (parentMenuKey) {\n newSubmenuHeight[parentMenuKey] = (newSubmenuHeight[parentMenuKey] || submenuHeight[parentMenuKey] || 0) + thirdLevelScrollHeight;\n setSubmenuHeight(newSubmenuHeight);\n }\n } else {\n // Toggle: multiple can be open\n setShowThirdLevel([].concat(_toConsumableArray(showThirdLevel), [id]));\n\n // Add third level height to parent submenu\n if (parentMenuKey && submenuHeight[parentMenuKey]) {\n setSubmenuHeight(_objectSpread(_objectSpread({}, submenuHeight), {}, _defineProperty({}, parentMenuKey, submenuHeight[parentMenuKey] + thirdLevelScrollHeight)));\n }\n }\n\n // Store height for animation\n if (thirdLevelEl && !thirdLevelHeight.hasOwnProperty(id)) {\n setThirdLevelHeight(_objectSpread(_objectSpread({}, thirdLevelHeight), {}, _defineProperty({}, id, thirdLevelScrollHeight)));\n }\n }\n } else {\n // Default toggle behavior\n if (showThirdLevel.includes(id)) {\n setShowThirdLevel([]);\n } else {\n setShowThirdLevel([id]);\n }\n }\n };\n\n // Go back from third level panel (Two Step mode)\n var handleBackFromThirdLevel = function handleBackFromThirdLevel() {\n setTwoStepThirdLevel(null);\n };\n\n // Below this width the sidebar is an overlay drawer over the frame (see the\n // `max-width: 992px` block in sidebar.scss). Once a link is followed the user\n // wants the page behind it, so the drawer slides back out of the way.\n var MOBILE_BREAKPOINT = 992;\n var closeSidebarOnSmallScreen = function closeSidebarOnSmallScreen() {\n if (window.innerWidth <= MOBILE_BREAKPOINT) {\n setCollapse(false);\n }\n };\n var ref = (0,_wordpress_element__WEBPACK_IMPORTED_MODULE_3__.useRef)();\n (0,_wordpress_element__WEBPACK_IMPORTED_MODULE_3__.useEffect)(function () {\n function handleClickOutside(event) {\n if (ref.current && !ref.current.contains(event.target)) {\n setCollapse(false);\n }\n }\n // Bind the event listener\n document.addEventListener(\"mousedown\", handleClickOutside);\n document.querySelector(\"#frame-adminify-app--iframe\").contentWindow.addEventListener(\"mousedown\", handleClickOutside);\n return function () {\n // Unbind the event listener on clean up\n document.removeEventListener(\"mousedown\", handleClickOutside);\n document.querySelector(\"#frame-adminify-app--iframe\").contentWindow.removeEventListener(\"mousedown\", handleClickOutside);\n };\n }, [ref]);\n (0,_wordpress_element__WEBPACK_IMPORTED_MODULE_3__.useEffect)(function () {\n var _iframeClickedActiveM;\n if ((iframeClickedActiveMenu === null || iframeClickedActiveMenu === void 0 || (_iframeClickedActiveM = iframeClickedActiveMenu.menu) === null || _iframeClickedActiveM === void 0 ? void 0 : _iframeClickedActiveM.length) > 0) {\n setActiveMenu(_toConsumableArray(iframeClickedActiveMenu === null || iframeClickedActiveMenu === void 0 ? void 0 : iframeClickedActiveMenu.menu));\n }\n if (!!(iframeClickedActiveMenu !== null && iframeClickedActiveMenu !== void 0 && iframeClickedActiveMenu.submenu)) {\n setActiveSubmenu(iframeClickedActiveMenu === null || iframeClickedActiveMenu === void 0 ? void 0 : iframeClickedActiveMenu.submenu);\n }\n }, [iframeClickedActiveMenu]);\n\n // Filter menu items by search text\n var stripHtml = function stripHtml(html) {\n var tmp = document.createElement(\"div\");\n tmp.innerHTML = html;\n return tmp.textContent || tmp.innerText || \"\";\n };\n var filterMenuBySearch = function filterMenuBySearch(menuData) {\n if (!menuSearch) return menuData;\n if (!searchText.trim()) return menuData;\n var query = searchText.toLowerCase().trim();\n var filtered = {};\n Object.entries(menuData).forEach(function (_ref2) {\n var _ref3 = _slicedToArray(_ref2, 2),\n key = _ref3[0],\n menu = _ref3[1];\n var menuTitle = stripHtml((menu === null || menu === void 0 ? void 0 : menu.title) || \"\").toLowerCase();\n if (menuTitle.includes(query)) {\n filtered[key] = menu;\n return;\n }\n if (menu !== null && menu !== void 0 && menu.children && Object.keys(menu.children).length > 0) {\n var matchedChildren = {};\n Object.entries(menu.children).forEach(function (_ref4) {\n var _ref5 = _slicedToArray(_ref4, 2),\n childKey = _ref5[0],\n child = _ref5[1];\n var childTitle = stripHtml((child === null || child === void 0 ? void 0 : child.title) || \"\").toLowerCase();\n if (childTitle.includes(query)) {\n matchedChildren[childKey] = child;\n }\n });\n if (Object.keys(matchedChildren).length > 0) {\n filtered[key] = _objectSpread(_objectSpread({}, menu), {}, {\n children: matchedChildren\n });\n }\n }\n });\n return filtered;\n };\n var filteredSidebarData = filterMenuBySearch(sidebarData);\n\n // Helper function to check if menu mode is two_step\n var isTwoStepMode = ((_menuLayoutSettings15 = menuLayoutSettings) === null || _menuLayoutSettings15 === void 0 ? void 0 : _menuLayoutSettings15.menu_hover_submenu) === \"two_step\";\n var isAccordionOrToggle = ((_menuLayoutSettings16 = menuLayoutSettings) === null || _menuLayoutSettings16 === void 0 ? void 0 : _menuLayoutSettings16.menu_hover_submenu) === \"accordion\" || ((_menuLayoutSettings17 = menuLayoutSettings) === null || _menuLayoutSettings17 === void 0 ? void 0 : _menuLayoutSettings17.menu_hover_submenu) === \"toggle\";\n return /*#__PURE__*/React.createElement(\"div\", {\n ref: ref,\n \"data-menu-mode\": (_menuLayoutSettings18 = menuLayoutSettings) === null || _menuLayoutSettings18 === void 0 ? void 0 : _menuLayoutSettings18.menu_hover_submenu,\n className: \"frame-adminify-sidebar-wrap frame-adminify-menu-mode-\".concat((_menuLayoutSettings19 = menuLayoutSettings) === null || _menuLayoutSettings19 === void 0 ? void 0 : _menuLayoutSettings19.menu_mode, \" \").concat(folded ? \"adminify-sidebar-folded \".concat(((_menuLayoutSettings20 = menuLayoutSettings) === null || _menuLayoutSettings20 === void 0 ? void 0 : _menuLayoutSettings20.menu_mode) === \"rounded\" ? \"\" : ((_menuLayoutSettings21 = menuLayoutSettings) === null || _menuLayoutSettings21 === void 0 ? void 0 : _menuLayoutSettings21.icon_style) === \"rounded\" ? \"adminify-icon-style-rounded\" : \"\") : \"\", \" \").concat(collapse ? \"adminify-sidebar-collapse\" : \"\")\n }, /*#__PURE__*/React.createElement(\"div\", {\n className: \"frame-adminify-admin-menu-wrapper\",\n ref: menuWrapperRef,\n onScroll: syncMenuViewport\n }, /*#__PURE__*/React.createElement(\"div\", {\n className: \"frame-adminify-admin-main-menu\",\n style: {\n \"--adminify-sidebar-offset\": \"\".concat((Number(topbarHeight) || 56) + 20, \"px\")\n }\n }, /*#__PURE__*/React.createElement(\"ul\", {\n className: \"frame-adminify-admin-menu\"\n }, !!(userInfoFields !== null && userInfoFields !== void 0 && userInfoFields.enable_user_info) && (userInfoFields === null || userInfoFields === void 0 ? void 0 : userInfoFields.enable_user_info) != \"0\" && !folded ? /*#__PURE__*/React.createElement(_components_UserInfo__WEBPACK_IMPORTED_MODULE_1__[\"default\"], {\n userInfo: _objectSpread(_objectSpread(_objectSpread({}, userInfo), userInfoFields), (_frame_adminify_menu$ = frame_adminify_menu.menu_layout_settings) === null || _frame_adminify_menu$ === void 0 ? void 0 : _frame_adminify_menu$.user_info_style)\n }) : null, menuSearch ? /*#__PURE__*/React.createElement(\"li\", {\n className: \"frame-adminify-menu-item\"\n }, /*#__PURE__*/React.createElement(_components_MenuSearch__WEBPACK_IMPORTED_MODULE_2__[\"default\"], {\n onSearch: setSearchText\n })) : null, Object.values(filteredSidebarData).map(function (menu, index) {\n var menuStr = \"<div class=\\\"frame-adminify-menu-item-wrap\\\">\".concat((0,_utils_uitls__WEBPACK_IMPORTED_MODULE_0__.getIcon)(menu), \" <span class=\\\"frame-adminify-menu-item-name\\\">\").concat((0,_utils_uitls__WEBPACK_IMPORTED_MODULE_0__.normalizeCopyDeletePostsMenu)(menu === null || menu === void 0 ? void 0 : menu.title), \"</span></div>\");\n if ((menu === null || menu === void 0 ? void 0 : menu.children.length) === 0) {\n // Menu Without Submenu, Refresh the Frame\n return /*#__PURE__*/React.createElement(_wordpress_element__WEBPACK_IMPORTED_MODULE_3__.Fragment, {\n key: menu === null || menu === void 0 ? void 0 : menu.key\n }, !!(menu !== null && menu !== void 0 && menu.title) ? /*#__PURE__*/React.createElement(\"li\", {\n className: \"frame-adminify-menu-item \".concat(activeMenu.includes(menu === null || menu === void 0 ? void 0 : menu.key) ? \"frame-adminify--menu-active\" : \"\"),\n id: (menu === null || menu === void 0 ? void 0 : menu.name) || (menu === null || menu === void 0 ? void 0 : menu.key)\n }, /*#__PURE__*/React.createElement(\"a\", _extends({\n href: menu === null || menu === void 0 ? void 0 : menu.url\n }, !(0,_utils_uitls__WEBPACK_IMPORTED_MODULE_0__.checkAdminUrl)(menu === null || menu === void 0 ? void 0 : menu.url) || menu !== null && menu !== void 0 && menu.external_link ? {\n target: \"_blank\"\n } : {}, {\n onClick: function onClick(e) {\n // Allow Ctrl/Cmd/Shift/middle click to open in new tab\n if ((0,_utils_uitls__WEBPACK_IMPORTED_MODULE_0__.isNewTabClick)(e)) {\n return;\n }\n if (menu !== null && menu !== void 0 && menu.external_link) {\n e.preventDefault();\n window.open(menu === null || menu === void 0 ? void 0 : menu.url, \"_blank\");\n closeSidebarOnSmallScreen();\n return;\n }\n if (!!(0,_utils_uitls__WEBPACK_IMPORTED_MODULE_0__.checkAdminUrl)(menu === null || menu === void 0 ? void 0 : menu.url)) {\n e.preventDefault();\n (0,_utils_uitls__WEBPACK_IMPORTED_MODULE_0__.handleURLChange)(menu === null || menu === void 0 ? void 0 : menu.url);\n setUrl(menu === null || menu === void 0 ? void 0 : menu.url);\n handleActiveMenu(menu === null || menu === void 0 ? void 0 : menu.key);\n closeSidebarOnSmallScreen();\n }\n },\n dangerouslySetInnerHTML: {\n __html: menuStr\n }\n }))) : null, !!(menu !== null && menu !== void 0 && menu.separator) && (menu === null || menu === void 0 ? void 0 : menu.separator) != \"0\" ? /*#__PURE__*/React.createElement(\"li\", {\n className: \"frame-adminify-menu-item\"\n }, /*#__PURE__*/React.createElement(\"hr\", {\n className: \"frame-adminify-menu-separator\"\n })) : null);\n } else {\n var _menuLayoutSettings23, _menuLayoutSettings24;\n return (\n /*#__PURE__*/\n // Menu With Submenu, Do not Refresh the Frame\n React.createElement(_wordpress_element__WEBPACK_IMPORTED_MODULE_3__.Fragment, {\n key: menu === null || menu === void 0 ? void 0 : menu.key\n }, /*#__PURE__*/React.createElement(\"li\", {\n className: \"frame-adminify-menu-item frame-adminify-has-submenu\".concat(showSubmenu !== null && showSubmenu !== void 0 && showSubmenu.includes(menu === null || menu === void 0 ? void 0 : menu.key) ? \" frame-adminify--menu-show\" : \"\").concat(activeMenu.includes(menu === null || menu === void 0 ? void 0 : menu.key) ? \" frame-adminify--menu-active\" : \"\"),\n id: (menu === null || menu === void 0 ? void 0 : menu.name) || (menu === null || menu === void 0 ? void 0 : menu.key)\n }, /*#__PURE__*/React.createElement(\"a\", {\n href: menu !== null && menu !== void 0 && menu.url ? menu === null || menu === void 0 ? void 0 : menu.url : \"#\",\n dangerouslySetInnerHTML: {\n __html: menuStr + '<span class=\"dashicons dashicons-arrow-right-alt2\"></span>'\n },\n onClick: function onClick(e) {\n var _menuLayoutSettings22;\n // Allow Ctrl/Cmd/Shift/middle click to open in new tab\n if ((0,_utils_uitls__WEBPACK_IMPORTED_MODULE_0__.isNewTabClick)(e) && menu !== null && menu !== void 0 && menu.url) {\n return;\n }\n e.preventDefault();\n handleShowSubmenu(menu === null || menu === void 0 ? void 0 : menu.key);\n if (((_menuLayoutSettings22 = menuLayoutSettings) === null || _menuLayoutSettings22 === void 0 ? void 0 : _menuLayoutSettings22.menu_hover_submenu) !== \"two_step\" && !submenuHeight.hasOwnProperty(menu === null || menu === void 0 ? void 0 : menu.key)) {\n var _e$currentTarget$next;\n setSubmenuHeight(_objectSpread(_objectSpread({}, submenuHeight), {}, _defineProperty({}, menu === null || menu === void 0 ? void 0 : menu.key, (_e$currentTarget$next = e.currentTarget.nextElementSibling) === null || _e$currentTarget$next === void 0 ? void 0 : _e$currentTarget$next.scrollHeight)));\n }\n }\n }), /*#__PURE__*/React.createElement(\"div\", _extends({\n ref: function ref(el) {\n submenuRefs.current[menu === null || menu === void 0 ? void 0 : menu.key] = el;\n },\n className: \"frame-adminify-submenu-wrapper\".concat(twoStepThirdLevel && showSubmenu !== null && showSubmenu !== void 0 && showSubmenu.includes(menu === null || menu === void 0 ? void 0 : menu.key) ? \" frame-adminify-third-level-active\" : \"\")\n }, ((_menuLayoutSettings23 = menuLayoutSettings) === null || _menuLayoutSettings23 === void 0 ? void 0 : _menuLayoutSettings23.menu_hover_submenu) !== \"two_step\" ? {\n style: showSubmenu !== null && showSubmenu !== void 0 && showSubmenu.includes(menu === null || menu === void 0 ? void 0 : menu.key) ? {\n height: submenuHeight === null || submenuHeight === void 0 ? void 0 : submenuHeight[menu === null || menu === void 0 ? void 0 : menu.key]\n } : {\n height: \"0px\"\n }\n } : {}), isTwoStepMode && /*#__PURE__*/React.createElement(\"div\", {\n className: \"frame-adminify-third-level-panel-container\".concat(twoStepThirdLevel && showSubmenu !== null && showSubmenu !== void 0 && showSubmenu.includes(menu === null || menu === void 0 ? void 0 : menu.key) ? \" frame-adminify-third-level-visible\" : \"\")\n }, twoStepThirdLevel && /*#__PURE__*/React.createElement(\"ul\", {\n className: \"frame-adminify-submenu frame-adminify-third-level-panel\"\n }, /*#__PURE__*/React.createElement(\"li\", {\n className: \"frame-adminify-submenu-item frame-adminify-two-step\"\n }, /*#__PURE__*/React.createElement(\"div\", {\n className: \"frame-adminify-two-step-title\",\n onClick: handleBackFromThirdLevel\n }, /*#__PURE__*/React.createElement(\"span\", {\n className: \"frame-adminify-arrow dashicons dashicons-arrow-left-alt2\"\n }), /*#__PURE__*/React.createElement(\"h2\", {\n dangerouslySetInnerHTML: {\n __html: twoStepThirdLevel.title\n }\n }))), twoStepThirdLevel.children && Object.values(twoStepThirdLevel.children).map(function (thirdLevel) {\n return /*#__PURE__*/React.createElement(\"li\", {\n key: thirdLevel === null || thirdLevel === void 0 ? void 0 : thirdLevel.key,\n className: \"frame-adminify-submenu-item frame-adminify-third-level-item \".concat((thirdLevel === null || thirdLevel === void 0 ? void 0 : thirdLevel.key) === activeThirdLevel ? \"frame-adminify--third-level-active\" : \"\")\n }, /*#__PURE__*/React.createElement(\"a\", _extends({\n href: thirdLevel === null || thirdLevel === void 0 ? void 0 : thirdLevel.url\n }, !(0,_utils_uitls__WEBPACK_IMPORTED_MODULE_0__.checkAdminUrl)(thirdLevel === null || thirdLevel === void 0 ? void 0 : thirdLevel.url) || thirdLevel !== null && thirdLevel !== void 0 && thirdLevel.external_link ? {\n target: \"_blank\"\n } : {}, {\n dangerouslySetInnerHTML: {\n __html: thirdLevel === null || thirdLevel === void 0 ? void 0 : thirdLevel.title\n },\n onClick: function onClick(e) {\n // Allow Ctrl/Cmd/Shift/middle click to open in new tab\n if ((0,_utils_uitls__WEBPACK_IMPORTED_MODULE_0__.isNewTabClick)(e)) {\n return;\n }\n if (thirdLevel !== null && thirdLevel !== void 0 && thirdLevel.external_link) {\n e.preventDefault();\n window.open(thirdLevel === null || thirdLevel === void 0 ? void 0 : thirdLevel.url, \"_blank\");\n closeSidebarOnSmallScreen();\n return;\n }\n if (!!(0,_utils_uitls__WEBPACK_IMPORTED_MODULE_0__.checkAdminUrl)(thirdLevel === null || thirdLevel === void 0 ? void 0 : thirdLevel.url)) {\n e.preventDefault();\n handleActiveMenu(menu === null || menu === void 0 ? void 0 : menu.key);\n setActiveSubmenu(twoStepThirdLevel.key);\n setActiveThirdLevel(thirdLevel === null || thirdLevel === void 0 ? void 0 : thirdLevel.key);\n (0,_utils_uitls__WEBPACK_IMPORTED_MODULE_0__.handleURLChange)(thirdLevel === null || thirdLevel === void 0 ? void 0 : thirdLevel.url);\n setUrl(thirdLevel === null || thirdLevel === void 0 ? void 0 : thirdLevel.url);\n closeSidebarOnSmallScreen();\n }\n }\n })));\n }))), /*#__PURE__*/React.createElement(\"ul\", {\n className: \"frame-adminify-submenu\".concat(isTwoStepMode && twoStepThirdLevel ? \" frame-adminify-submenu-slide-left\" : \"\")\n }, ((_menuLayoutSettings24 = menuLayoutSettings) === null || _menuLayoutSettings24 === void 0 ? void 0 : _menuLayoutSettings24.menu_hover_submenu) === \"two_step\" ? /*#__PURE__*/React.createElement(\"li\", {\n className: \"frame-adminify-submenu-item frame-adminify-two-step\"\n }, /*#__PURE__*/React.createElement(\"div\", {\n className: \"frame-adminify-two-step-title\",\n onClick: function onClick() {\n setShowSubmenu([]);\n setTwoStepThirdLevel(null);\n }\n }, /*#__PURE__*/React.createElement(\"span\", {\n className: \"frame-adminify-arrow dashicons dashicons-arrow-left-alt2\"\n }), /*#__PURE__*/React.createElement(\"h2\", {\n dangerouslySetInnerHTML: {\n __html: menu === null || menu === void 0 ? void 0 : menu.title\n }\n }))) : null, Object.values(menu === null || menu === void 0 ? void 0 : menu.children).map(function (submenu) {\n // Check if submenu has 3rd level children (e.g., Elementor flyout)\n var hasThirdLevel = (submenu === null || submenu === void 0 ? void 0 : submenu.has_flyout_children) && (submenu === null || submenu === void 0 ? void 0 : submenu.children) && Object.keys(submenu.children).length > 0;\n\n // Menu With Submenu, Refresh the Frame\n return /*#__PURE__*/React.createElement(\"li\", {\n key: submenu === null || submenu === void 0 ? void 0 : submenu.key,\n className: \"frame-adminify-submenu-item \".concat((submenu === null || submenu === void 0 ? void 0 : submenu.key) === activeSubmenu ? \"frame-adminify--submenu-active\" : \"\").concat(hasThirdLevel ? \" frame-adminify-has-third-level\" : \"\").concat(showThirdLevel.includes(submenu === null || submenu === void 0 ? void 0 : submenu.key) ? \" frame-adminify--third-level-show\" : \"\")\n }, /*#__PURE__*/React.createElement(\"a\", _extends({\n href: submenu === null || submenu === void 0 ? void 0 : submenu.url\n }, !(0,_utils_uitls__WEBPACK_IMPORTED_MODULE_0__.checkAdminUrl)(submenu === null || submenu === void 0 ? void 0 : submenu.url) || submenu !== null && submenu !== void 0 && submenu.external_link ? {\n target: \"_blank\"\n } : {}, {\n dangerouslySetInnerHTML: {\n __html: hasThirdLevel ? (submenu === null || submenu === void 0 ? void 0 : submenu.title) + '<span class=\"dashicons dashicons-arrow-right-alt2 frame-adminify-third-level-arrow\"></span>' : submenu === null || submenu === void 0 ? void 0 : submenu.title\n },\n onClick: function onClick(e) {\n // Allow Ctrl/Cmd/Shift/middle click to open in new tab\n if ((0,_utils_uitls__WEBPACK_IMPORTED_MODULE_0__.isNewTabClick)(e)) {\n return;\n }\n\n // If has 3rd level, handle based on menu mode\n if (hasThirdLevel) {\n e.preventDefault();\n handleShowThirdLevel(submenu === null || submenu === void 0 ? void 0 : submenu.key, e, submenu, menu === null || menu === void 0 ? void 0 : menu.key);\n return;\n }\n if (submenu !== null && submenu !== void 0 && submenu.external_link) {\n e.preventDefault();\n window.open(submenu === null || submenu === void 0 ? void 0 : submenu.url, \"_blank\");\n closeSidebarOnSmallScreen();\n return;\n }\n if (!!(0,_utils_uitls__WEBPACK_IMPORTED_MODULE_0__.checkAdminUrl)(submenu === null || submenu === void 0 ? void 0 : submenu.url)) {\n e.preventDefault();\n // Main Menu Active\n handleActiveMenu(menu === null || menu === void 0 ? void 0 : menu.key);\n // SubMenu Active\n (0,_utils_uitls__WEBPACK_IMPORTED_MODULE_0__.handleURLChange)(submenu === null || submenu === void 0 ? void 0 : submenu.url);\n setUrl(submenu === null || submenu === void 0 ? void 0 : submenu.url);\n setActiveSubmenu(submenu === null || submenu === void 0 ? void 0 : submenu.key);\n closeSidebarOnSmallScreen();\n }\n }\n })), hasThirdLevel && isAccordionOrToggle && /*#__PURE__*/React.createElement(\"div\", {\n className: \"frame-adminify-third-level-wrapper\",\n style: showThirdLevel.includes(submenu === null || submenu === void 0 ? void 0 : submenu.key) ? {\n height: (thirdLevelHeight === null || thirdLevelHeight === void 0 ? void 0 : thirdLevelHeight[submenu === null || submenu === void 0 ? void 0 : submenu.key]) || 'auto'\n } : {\n height: \"0px\"\n }\n }, /*#__PURE__*/React.createElement(\"ul\", {\n className: \"frame-adminify-third-level-menu\"\n }, Object.values(submenu.children).map(function (thirdLevel) {\n return /*#__PURE__*/React.createElement(\"li\", {\n key: thirdLevel === null || thirdLevel === void 0 ? void 0 : thirdLevel.key,\n className: \"frame-adminify-third-level-item \".concat((thirdLevel === null || thirdLevel === void 0 ? void 0 : thirdLevel.key) === activeThirdLevel ? \"frame-adminify--third-level-active\" : \"\").concat(thirdLevel !== null && thirdLevel !== void 0 && thirdLevel.is_flyout_child ? \" frame-adminify-flyout-child\" : \"\")\n }, /*#__PURE__*/React.createElement(\"a\", _extends({\n href: thirdLevel === null || thirdLevel === void 0 ? void 0 : thirdLevel.url\n }, !(0,_utils_uitls__WEBPACK_IMPORTED_MODULE_0__.checkAdminUrl)(thirdLevel === null || thirdLevel === void 0 ? void 0 : thirdLevel.url) || thirdLevel !== null && thirdLevel !== void 0 && thirdLevel.external_link ? {\n target: \"_blank\"\n } : {}, {\n dangerouslySetInnerHTML: {\n __html: thirdLevel === null || thirdLevel === void 0 ? void 0 : thirdLevel.title\n },\n onClick: function onClick(e) {\n // Allow Ctrl/Cmd/Shift/middle click to open in new tab\n if ((0,_utils_uitls__WEBPACK_IMPORTED_MODULE_0__.isNewTabClick)(e)) {\n return;\n }\n if (thirdLevel !== null && thirdLevel !== void 0 && thirdLevel.external_link) {\n e.preventDefault();\n window.open(thirdLevel === null || thirdLevel === void 0 ? void 0 : thirdLevel.url, \"_blank\");\n closeSidebarOnSmallScreen();\n return;\n }\n if (!!(0,_utils_uitls__WEBPACK_IMPORTED_MODULE_0__.checkAdminUrl)(thirdLevel === null || thirdLevel === void 0 ? void 0 : thirdLevel.url)) {\n e.preventDefault();\n handleActiveMenu(menu === null || menu === void 0 ? void 0 : menu.key);\n setActiveSubmenu(submenu === null || submenu === void 0 ? void 0 : submenu.key);\n setActiveThirdLevel(thirdLevel === null || thirdLevel === void 0 ? void 0 : thirdLevel.key);\n (0,_utils_uitls__WEBPACK_IMPORTED_MODULE_0__.handleURLChange)(thirdLevel === null || thirdLevel === void 0 ? void 0 : thirdLevel.url);\n setUrl(thirdLevel === null || thirdLevel === void 0 ? void 0 : thirdLevel.url);\n closeSidebarOnSmallScreen();\n }\n }\n })));\n }))));\n })))), !!(menu !== null && menu !== void 0 && menu.separator) && (menu === null || menu === void 0 ? void 0 : menu.separator) != \"0\" ? /*#__PURE__*/React.createElement(\"li\", {\n className: \"frame-adminify-menu-item \"\n }, /*#__PURE__*/React.createElement(\"hr\", {\n className: \"frame-adminify-menu-separator\"\n })) : null)\n );\n }\n })))));\n}\n/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (Sidebar);\n\n//# sourceURL=webpack://adminify/./dev/admin/frame/Sidebar/Sidebar.jsx?");
50 50
51 51 /***/ }),
52 52
53 53 /***/ "./dev/admin/frame/Sidebar/components/Logo.jsx":
@@ -85,9 +85,9 @@
85 85 !*** ./dev/admin/frame/Topbar/Topbar.jsx ***!
86 86 \*******************************************/
87 87 /***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
88 88
89 -eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"default\": () => (__WEBPACK_DEFAULT_EXPORT__)\n/* harmony export */ });\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! react */ \"./node_modules/react/index.js\");\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(react__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var _components_TopSecondary__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./components/TopSecondary */ \"./dev/admin/frame/Topbar/components/TopSecondary.jsx\");\n/* harmony import */ var _Sidebar_components_Logo__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../Sidebar/components/Logo */ \"./dev/admin/frame/Sidebar/components/Logo.jsx\");\n/* harmony import */ var _components_MenuItems__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./components/MenuItems */ \"./dev/admin/frame/Topbar/components/MenuItems.jsx\");\n\n\n\n\nfunction Topbar(_ref) {\n var _adminify_admin_bar_d;\n var lightDarkMode = _ref.lightDarkMode,\n setAdminifyColorMode = _ref.setAdminifyColorMode,\n adminifyColorMode = _ref.adminifyColorMode,\n setFolded = _ref.setFolded,\n setShowSearch = _ref.setShowSearch,\n getWidth = _ref.getWidth,\n setCollapse = _ref.setCollapse,\n collapse = _ref.collapse,\n setUrl = _ref.setUrl,\n iframeFullReady = _ref.iframeFullReady,\n folded = _ref.folded;\n var menuLayoutSettings = frame_adminify_menu.menu_layout_settings;\n return /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(\"div\", {\n className: \"adminify-toolbar-wrapper \".concat((menuLayoutSettings === null || menuLayoutSettings === void 0 ? void 0 : menuLayoutSettings.layout_type) === \"horizontal\" ? \"adminify-horizontal-toolbar\" : \"\", \" \").concat(folded ? \"adminify-toolbar-collapse\" : \"\")\n }, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_Sidebar_components_Logo__WEBPACK_IMPORTED_MODULE_2__[\"default\"], {\n lightDarkMode: lightDarkMode,\n adminifyColorMode: adminifyColorMode,\n folded: folded,\n getWidth: getWidth\n }), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(\"div\", {\n className: \"adminify-toolbar\"\n }, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(\"ul\", {\n className: \"adminify-top-menu\"\n }, (menuLayoutSettings === null || menuLayoutSettings === void 0 ? void 0 : menuLayoutSettings.layout_type) === \"vertical\" || getWidth ? /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(\"li\", {\n className: \"adminify-top-menu-item adminify-hambuger\"\n }, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(\"button\", {\n onClick: function onClick() {\n getWidth ? setCollapse(!collapse) : setFolded(function (prev) {\n return !prev;\n });\n },\n className: \"adminify-hambuger-menu\",\n id: \"collapse-button\"\n }, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(\"svg\", {\n width: \"11\",\n height: \"8\",\n viewBox: \"0 0 11 8\",\n fill: \"none\",\n xmlns: \"http://www.w3.org/2000/svg\"\n }, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(\"path\", {\n d: \"M7 0H0V1H7V0Z\",\n fill: \"var(--adminify-menu-text-color)\"\n }), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(\"path\", {\n d: \"M7 7H0V8H7V7Z\",\n fill: \"var(--adminify-menu-text-color)\"\n }), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(\"path\", {\n d: \"M4.67 3.5H0V4.5H4.67V3.5Z\",\n fill: \"var(--adminify-menu-text-color)\"\n }), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(\"path\", {\n d: \"M9.65 7.35L6.29 4L9.65 0.65L10.35 1.35L7.71 4L10.35 6.65L9.65 7.35Z\",\n fill: \"var(--adminify-menu-text-color)\"\n })))) : null, getWidth ? null : /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(react__WEBPACK_IMPORTED_MODULE_0__.Fragment, null, (_adminify_admin_bar_d = adminify_admin_bar_data) === null || _adminify_admin_bar_d === void 0 || (_adminify_admin_bar_d = _adminify_admin_bar_d.data) === null || _adminify_admin_bar_d === void 0 || (_adminify_admin_bar_d = _adminify_admin_bar_d.filter(function (item) {\n return item.id !== \"top-secondary\";\n })) === null || _adminify_admin_bar_d === void 0 || (_adminify_admin_bar_d = _adminify_admin_bar_d.filter(function (item) {\n return !!(item !== null && item !== void 0 && item.menu_status);\n })) === null || _adminify_admin_bar_d === void 0 ? void 0 : _adminify_admin_bar_d.map(function (menu, i) {\n var depthLevel = 0;\n return /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_components_MenuItems__WEBPACK_IMPORTED_MODULE_3__[\"default\"], {\n setUrl: setUrl,\n items: menu,\n key: menu.key || i,\n depthLevel: depthLevel\n });\n }))), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_components_TopSecondary__WEBPACK_IMPORTED_MODULE_1__[\"default\"], {\n setUrl: setUrl,\n setShowSearch: setShowSearch,\n getWidth: getWidth,\n iframeFullReady: iframeFullReady,\n setAdminifyColorMode: setAdminifyColorMode\n })));\n}\n/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (Topbar);\n\n//# sourceURL=webpack://adminify/./dev/admin/frame/Topbar/Topbar.jsx?");
89 +eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"default\": () => (__WEBPACK_DEFAULT_EXPORT__)\n/* harmony export */ });\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! react */ \"./node_modules/react/index.js\");\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(react__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var _components_TopSecondary__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./components/TopSecondary */ \"./dev/admin/frame/Topbar/components/TopSecondary.jsx\");\n/* harmony import */ var _Sidebar_components_Logo__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../Sidebar/components/Logo */ \"./dev/admin/frame/Sidebar/components/Logo.jsx\");\n/* harmony import */ var _components_MenuItems__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./components/MenuItems */ \"./dev/admin/frame/Topbar/components/MenuItems.jsx\");\n/* harmony import */ var _utils_uitls__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ../utils/uitls */ \"./dev/admin/frame/utils/uitls.js\");\n\n\n\n\n\nfunction Topbar(_ref) {\n var _adminify_admin_bar_d, _adminify_admin_bar_d2, _adminify_admin_bar_d3, _adminify_admin_bar_d4;\n var lightDarkMode = _ref.lightDarkMode,\n setAdminifyColorMode = _ref.setAdminifyColorMode,\n adminifyColorMode = _ref.adminifyColorMode,\n setFolded = _ref.setFolded,\n setShowSearch = _ref.setShowSearch,\n getWidth = _ref.getWidth,\n setCollapse = _ref.setCollapse,\n collapse = _ref.collapse,\n setUrl = _ref.setUrl,\n iframeFullReady = _ref.iframeFullReady,\n folded = _ref.folded;\n var menuLayoutSettings = frame_adminify_menu.menu_layout_settings;\n return /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(\"div\", {\n className: \"adminify-toolbar-wrapper \".concat((menuLayoutSettings === null || menuLayoutSettings === void 0 ? void 0 : menuLayoutSettings.layout_type) === \"horizontal\" ? \"adminify-horizontal-toolbar\" : \"\", \" \").concat(folded ? \"adminify-toolbar-collapse\" : \"\")\n }, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_Sidebar_components_Logo__WEBPACK_IMPORTED_MODULE_2__[\"default\"], {\n lightDarkMode: lightDarkMode,\n adminifyColorMode: adminifyColorMode,\n folded: folded,\n getWidth: getWidth\n }), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(\"div\", {\n className: \"adminify-toolbar\"\n }, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(\"ul\", {\n className: \"adminify-top-menu\"\n }, (menuLayoutSettings === null || menuLayoutSettings === void 0 ? void 0 : menuLayoutSettings.layout_type) === \"vertical\" || getWidth ? /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(\"li\", {\n className: \"adminify-top-menu-item adminify-hambuger\"\n }, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(\"button\", {\n onClick: function onClick() {\n getWidth ? setCollapse(!collapse) : setFolded(function (prev) {\n return !prev;\n });\n },\n className: \"adminify-hambuger-menu\",\n id: \"collapse-button\"\n }, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(\"svg\", {\n width: \"11\",\n height: \"8\",\n viewBox: \"0 0 11 8\",\n fill: \"none\",\n xmlns: \"http://www.w3.org/2000/svg\"\n }, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(\"path\", {\n d: \"M7 0H0V1H7V0Z\",\n fill: \"var(--adminify-menu-text-color)\"\n }), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(\"path\", {\n d: \"M7 7H0V8H7V7Z\",\n fill: \"var(--adminify-menu-text-color)\"\n }), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(\"path\", {\n d: \"M4.67 3.5H0V4.5H4.67V3.5Z\",\n fill: \"var(--adminify-menu-text-color)\"\n }), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(\"path\", {\n d: \"M9.65 7.35L6.29 4L9.65 0.65L10.35 1.35L7.71 4L10.35 6.65L9.65 7.35Z\",\n fill: \"var(--adminify-menu-text-color)\"\n })))) : null, getWidth ? null : /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(react__WEBPACK_IMPORTED_MODULE_0__.Fragment, null, (_adminify_admin_bar_d = adminify_admin_bar_data) === null || _adminify_admin_bar_d === void 0 || (_adminify_admin_bar_d = _adminify_admin_bar_d.data) === null || _adminify_admin_bar_d === void 0 || (_adminify_admin_bar_d = _adminify_admin_bar_d.filter(function (item) {\n return item.id !== \"top-secondary\";\n })) === null || _adminify_admin_bar_d === void 0 || (_adminify_admin_bar_d = _adminify_admin_bar_d.filter(function (item) {\n return !!(item !== null && item !== void 0 && item.menu_status);\n })) === null || _adminify_admin_bar_d === void 0 ? void 0 : _adminify_admin_bar_d.map(function (menu, i) {\n var depthLevel = 0;\n return /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_components_MenuItems__WEBPACK_IMPORTED_MODULE_3__[\"default\"], {\n setUrl: setUrl,\n items: menu,\n key: menu.key || i,\n depthLevel: depthLevel\n });\n }))), Array.isArray((_adminify_admin_bar_d2 = adminify_admin_bar_data) === null || _adminify_admin_bar_d2 === void 0 ? void 0 : _adminify_admin_bar_d2.data) && (_adminify_admin_bar_d3 = adminify_admin_bar_data) !== null && _adminify_admin_bar_d3 !== void 0 && (_adminify_admin_bar_d3 = _adminify_admin_bar_d3.data.find(function (item) {\n return item.id === \"top-secondary\";\n })) !== null && _adminify_admin_bar_d3 !== void 0 && _adminify_admin_bar_d3.menu_status ? /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_components_TopSecondary__WEBPACK_IMPORTED_MODULE_1__[\"default\"], {\n setUrl: setUrl,\n setShowSearch: setShowSearch,\n getWidth: getWidth,\n iframeFullReady: iframeFullReady,\n setAdminifyColorMode: setAdminifyColorMode\n }) : /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(\"a\", {\n href: \"\".concat((_adminify_admin_bar_d4 = adminify_admin_bar_data) !== null && _adminify_admin_bar_d4 !== void 0 && _adminify_admin_bar_d4.logout_url ? (0,_utils_uitls__WEBPACK_IMPORTED_MODULE_4__.getLogoutURL)() : \"#\"),\n title: \"Log Out\",\n \"class\": \"adminify-logout-btn\"\n }, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(\"svg\", {\n width: \"20\",\n height: \"20\",\n viewBox: \"0 0 20 20\",\n fill: \"none\",\n xmlns: \"http://www.w3.org/2000/svg\",\n style: {\n width: \"16px\"\n }\n }, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default().createElement(\"path\", {\n fillRule: \"evenodd\",\n clipRule: \"evenodd\",\n d: \"M5.7587 4.31292e-07L7 9.08129e-07C7.55229 9.08129e-07 8 0.447716 8 1C8 1.55229 7.55229 2 7 2H5.8C4.94342 2 4.36113 2.00078 3.91104 2.03755C3.47262 2.07337 3.24842 2.1383 3.09202 2.21799C2.7157 2.40973 2.40974 2.7157 2.21799 3.09202C2.1383 3.24842 2.07337 3.47262 2.03755 3.91104C2.00078 4.36113 2 4.94342 2 5.8V14.2C2 15.0566 2.00078 15.6389 2.03755 16.089C2.07337 16.5274 2.1383 16.7516 2.21799 16.908C2.40973 17.2843 2.7157 17.5903 3.09202 17.782C3.24842 17.8617 3.47262 17.9266 3.91104 17.9624C4.36113 17.9992 4.94342 18 5.8 18H7C7.55229 18 8 18.4477 8 19C8 19.5523 7.55229 20 7 20H5.75868C4.95372 20 4.28937 20 3.74818 19.9558C3.18608 19.9099 2.66937 19.8113 2.18404 19.564C1.43139 19.1805 0.819468 18.5686 0.435975 17.816C0.188684 17.3306 0.0901197 16.8139 0.0441946 16.2518C-2.28137e-05 15.7106 -1.23241e-05 15.0463 4.31291e-07 14.2413V5.7587C-1.23241e-05 4.95373 -2.28137e-05 4.28937 0.0441947 3.74817C0.09012 3.18608 0.188685 2.66937 0.435976 2.18404C0.81947 1.43139 1.43139 0.819468 2.18404 0.435975C2.66938 0.188684 3.18608 0.0901197 3.74818 0.0441945C4.28937 -2.28137e-05 4.95373 -1.23241e-05 5.7587 4.31292e-07ZM13.2929 4.29289C13.6834 3.90237 14.3166 3.90237 14.7071 4.29289L19.7071 9.29289C20.0976 9.68342 20.0976 10.3166 19.7071 10.7071L14.7071 15.7071C14.3166 16.0976 13.6834 16.0976 13.2929 15.7071C12.9024 15.3166 12.9024 14.6834 13.2929 14.2929L16.5858 11H7C6.44772 11 6 10.5523 6 10C6 9.44772 6.44772 9 7 9H16.5858L13.2929 5.70711C12.9024 5.31658 12.9024 4.68342 13.2929 4.29289Z\",\n fill: \"var(--adminify-menu-text-color)\"\n })))));\n}\n/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (Topbar);\n\n//# sourceURL=webpack://adminify/./dev/admin/frame/Topbar/Topbar.jsx?");
90 90
91 91 /***/ }),
92 92
93 93 /***/ "./dev/admin/frame/Topbar/components/Comments.jsx":
@@ -95,9 +95,9 @@
95 95 !*** ./dev/admin/frame/Topbar/components/Comments.jsx ***!
96 96 \********************************************************/
97 97 /***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
98 98
99 -eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"default\": () => (__WEBPACK_DEFAULT_EXPORT__)\n/* harmony export */ });\n/* harmony import */ var _wordpress_element__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! @wordpress/element */ \"./node_modules/react/index.js\");\n/* harmony import */ var _wordpress_element__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(_wordpress_element__WEBPACK_IMPORTED_MODULE_1__);\n/* harmony import */ var _utils_uitls__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../../utils/uitls */ \"./dev/admin/frame/utils/uitls.js\");\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\n\nfunction Comments(_ref) {\n var iframeFullReady = _ref.iframeFullReady;\n var _useState = (0,_wordpress_element__WEBPACK_IMPORTED_MODULE_1__.useState)(0),\n _useState2 = _slicedToArray(_useState, 2),\n count = _useState2[0],\n setCount = _useState2[1];\n var handleClick = function handleClick(e) {\n setTimeout(function () {\n var notificationDiv = document.getElementById(\"adminify-container-slide-in\");\n if (notificationDiv) {\n notificationDiv.classList.add(\"show\");\n }\n }, 1);\n };\n (0,_wordpress_element__WEBPACK_IMPORTED_MODULE_1__.useEffect)(function () {\n function handleClickOutside(e) {\n if (jQuery(e.target).closest(\"#adminify-container-slide-in\").length === 0) {\n jQuery(\"#adminify-container-slide-in\").removeClass(\"show\");\n }\n }\n // Bind the event listener\n document.addEventListener(\"mousedown\", handleClickOutside);\n (0,_utils_uitls__WEBPACK_IMPORTED_MODULE_0__.waitForElm)(\"#frame-adminify-app--iframe\").then(function (elm) {\n setCount(window.notif_count);\n elm.contentWindow.addEventListener(\"mousedown\", handleClickOutside);\n // elm.contentWindow.onload = (event) => {};\n });\n return function () {\n // Unbind the event listener on clean up\n document.removeEventListener(\"mousedown\", handleClickOutside);\n (0,_utils_uitls__WEBPACK_IMPORTED_MODULE_0__.waitForElm)(\"#frame-adminify-app--iframe\").then(function (elm) {\n elm.contentWindow.addEventListener(\"mousedown\", handleClickOutside);\n // elm.contentWindow.onload = (event) => {};\n });\n };\n }, [iframeFullReady]);\n return /*#__PURE__*/React.createElement(\"div\", {\n className: \"wp-adminify--top--comment\"\n }, /*#__PURE__*/React.createElement(\"button\", {\n className: \"adminify-comment-trigger\",\n onClick: handleClick\n }, /*#__PURE__*/React.createElement(\"div\", {\n className: \"topbar-icon\"\n }, /*#__PURE__*/React.createElement(\"svg\", {\n width: \"16\",\n height: \"16\",\n viewBox: \"0 0 16 16\",\n fill: \"none\",\n xmlns: \"http://www.w3.org/2000/svg\"\n }, /*#__PURE__*/React.createElement(\"g\", {\n clipPath: \"url(#clip0_2208_1278)\"\n }, /*#__PURE__*/React.createElement(\"path\", {\n d: \"M9.41009 13C9.21009 13.58 8.65009 14 8.00009 14C7.35009 14 6.79009 13.58 6.59009 13H9.41009Z\",\n fill: \"#322F41\"\n }), /*#__PURE__*/React.createElement(\"path\", {\n d: \"M14 12H2V13H14V12Z\",\n fill: \"#322F41\"\n }), /*#__PURE__*/React.createElement(\"path\", {\n d: \"M9.47003 3.22C9.00003 3.08 8.51003 3 8.00003 3C7.49003 3 7.00003 3.08 6.53003 3.22C6.66003 2.52 7.27003 2 8.00003 2C8.73003 2 9.34003 2.52 9.47003 3.22Z\",\n fill: \"#322F41\"\n }), /*#__PURE__*/React.createElement(\"path\", {\n d: \"M13 8V12H12V8C12 6.25 10.87 4.76 9.3 4.22C8.89 4.08 8.45 4 8 4C7.55 4 7.11 4.08 6.7 4.22C5.13 4.76 4 6.25 4 8V12H3V8C3 5.75 4.49 3.85 6.53 3.22C7 3.08 7.49 3 8 3C8.51 3 9 3.08 9.47 3.22C11.51 3.85 13 5.75 13 8Z\",\n fill: \"#322F41\"\n })), /*#__PURE__*/React.createElement(\"defs\", null, /*#__PURE__*/React.createElement(\"clipPath\", {\n id: \"clip0_2208_1278\"\n }, /*#__PURE__*/React.createElement(\"rect\", {\n width: \"12\",\n height: \"12\",\n fill: \"white\",\n transform: \"translate(2 2)\"\n }))))), /*#__PURE__*/React.createElement(\"span\", {\n className: \"comment-counter\"\n }, count || 0)));\n}\n/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (Comments);\n\n//# sourceURL=webpack://adminify/./dev/admin/frame/Topbar/components/Comments.jsx?");
99 +eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"default\": () => (__WEBPACK_DEFAULT_EXPORT__)\n/* harmony export */ });\n/* harmony import */ var _wordpress_element__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! @wordpress/element */ \"./node_modules/react/index.js\");\n/* harmony import */ var _wordpress_element__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(_wordpress_element__WEBPACK_IMPORTED_MODULE_1__);\n/* harmony import */ var _utils_uitls__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../../utils/uitls */ \"./dev/admin/frame/utils/uitls.js\");\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\n\nfunction Comments(_ref) {\n var iframeFullReady = _ref.iframeFullReady;\n var _useState = (0,_wordpress_element__WEBPACK_IMPORTED_MODULE_1__.useState)(0),\n _useState2 = _slicedToArray(_useState, 2),\n count = _useState2[0],\n setCount = _useState2[1];\n var handleClick = function handleClick(e) {\n setTimeout(function () {\n var notificationDiv = document.getElementById(\"adminify-container-slide-in\");\n if (notificationDiv) {\n notificationDiv.classList.add(\"show\");\n }\n }, 1);\n };\n (0,_wordpress_element__WEBPACK_IMPORTED_MODULE_1__.useEffect)(function () {\n function handleClickOutside(e) {\n if (jQuery(e.target).closest(\"#adminify-container-slide-in\").length === 0) {\n jQuery(\"#adminify-container-slide-in\").removeClass(\"show\");\n }\n }\n // Bind the event listener\n document.addEventListener(\"mousedown\", handleClickOutside);\n (0,_utils_uitls__WEBPACK_IMPORTED_MODULE_0__.waitForElm)(\"#frame-adminify-app--iframe\").then(function (elm) {\n setCount(window.notif_count);\n elm.contentWindow.addEventListener(\"mousedown\", handleClickOutside);\n // elm.contentWindow.onload = (event) => {};\n });\n return function () {\n // Unbind the event listener on clean up\n document.removeEventListener(\"mousedown\", handleClickOutside);\n (0,_utils_uitls__WEBPACK_IMPORTED_MODULE_0__.waitForElm)(\"#frame-adminify-app--iframe\").then(function (elm) {\n elm.contentWindow.addEventListener(\"mousedown\", handleClickOutside);\n // elm.contentWindow.onload = (event) => {};\n });\n };\n }, [iframeFullReady]);\n return /*#__PURE__*/React.createElement(\"div\", {\n className: \"wp-adminify--top--comment\",\n style: {\n marginRight: \"8px\"\n }\n }, /*#__PURE__*/React.createElement(\"button\", {\n className: \"adminify-comment-trigger\",\n onClick: handleClick\n }, /*#__PURE__*/React.createElement(\"div\", {\n className: \"topbar-icon\"\n }, /*#__PURE__*/React.createElement(\"svg\", {\n width: \"16\",\n height: \"16\",\n viewBox: \"0 0 16 16\",\n fill: \"none\",\n xmlns: \"http://www.w3.org/2000/svg\"\n }, /*#__PURE__*/React.createElement(\"g\", {\n clipPath: \"url(#clip0_2208_1278)\"\n }, /*#__PURE__*/React.createElement(\"path\", {\n d: \"M9.41009 13C9.21009 13.58 8.65009 14 8.00009 14C7.35009 14 6.79009 13.58 6.59009 13H9.41009Z\",\n fill: \"#322F41\"\n }), /*#__PURE__*/React.createElement(\"path\", {\n d: \"M14 12H2V13H14V12Z\",\n fill: \"#322F41\"\n }), /*#__PURE__*/React.createElement(\"path\", {\n d: \"M9.47003 3.22C9.00003 3.08 8.51003 3 8.00003 3C7.49003 3 7.00003 3.08 6.53003 3.22C6.66003 2.52 7.27003 2 8.00003 2C8.73003 2 9.34003 2.52 9.47003 3.22Z\",\n fill: \"#322F41\"\n }), /*#__PURE__*/React.createElement(\"path\", {\n d: \"M13 8V12H12V8C12 6.25 10.87 4.76 9.3 4.22C8.89 4.08 8.45 4 8 4C7.55 4 7.11 4.08 6.7 4.22C5.13 4.76 4 6.25 4 8V12H3V8C3 5.75 4.49 3.85 6.53 3.22C7 3.08 7.49 3 8 3C8.51 3 9 3.08 9.47 3.22C11.51 3.85 13 5.75 13 8Z\",\n fill: \"#322F41\"\n })), /*#__PURE__*/React.createElement(\"defs\", null, /*#__PURE__*/React.createElement(\"clipPath\", {\n id: \"clip0_2208_1278\"\n }, /*#__PURE__*/React.createElement(\"rect\", {\n width: \"12\",\n height: \"12\",\n fill: \"white\",\n transform: \"translate(2 2)\"\n }))))), /*#__PURE__*/React.createElement(\"span\", {\n className: \"comment-counter\"\n }, count || 0)));\n}\n/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (Comments);\n\n//# sourceURL=webpack://adminify/./dev/admin/frame/Topbar/components/Comments.jsx?");
100 100
101 101 /***/ }),
102 102
103 103 /***/ "./dev/admin/frame/Topbar/components/Dropdown.jsx":
@@ -115,9 +115,9 @@
115 115 !*** ./dev/admin/frame/Topbar/components/LightDarkSwitcher.jsx ***!
116 116 \*****************************************************************/
117 117 /***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
118 118
119 -eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"default\": () => (__WEBPACK_DEFAULT_EXPORT__)\n/* harmony export */ });\n/* harmony import */ var _wordpress_element__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! @wordpress/element */ \"./node_modules/react/index.js\");\n/* harmony import */ var _wordpress_element__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(_wordpress_element__WEBPACK_IMPORTED_MODULE_2__);\n/* harmony import */ var _utils_uitls__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../../utils/uitls */ \"./dev/admin/frame/utils/uitls.js\");\n/* harmony import */ var _hooks_useOutsideClick__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../../hooks/useOutsideClick */ \"./dev/admin/frame/hooks/useOutsideClick.js\");\nfunction _typeof(o) { \"@babel/helpers - typeof\"; return _typeof = \"function\" == typeof Symbol && \"symbol\" == typeof Symbol.iterator ? function (o) { return typeof o; } : function (o) { return o && \"function\" == typeof Symbol && o.constructor === Symbol && o !== Symbol.prototype ? \"symbol\" : typeof o; }, _typeof(o); }\nfunction _extends() { return _extends = Object.assign ? Object.assign.bind() : function (n) { for (var e = 1; e < arguments.length; e++) { var t = arguments[e]; for (var r in t) ({}).hasOwnProperty.call(t, r) && (n[r] = t[r]); } return n; }, _extends.apply(null, arguments); }\nfunction ownKeys(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e); r && (o = o.filter(function (r) { return Object.getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; }\nfunction _objectSpread(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys(Object(t), !0).forEach(function (r) { _defineProperty(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; }\nfunction _defineProperty(e, r, t) { return (r = _toPropertyKey(r)) in e ? Object.defineProperty(e, r, { value: t, enumerable: !0, configurable: !0, writable: !0 }) : e[r] = t, e; }\nfunction _toPropertyKey(t) { var i = _toPrimitive(t, \"string\"); return \"symbol\" == _typeof(i) ? i : i + \"\"; }\nfunction _toPrimitive(t, r) { if (\"object\" != _typeof(t) || !t) return t; var e = t[Symbol.toPrimitive]; if (void 0 !== e) { var i = e.call(t, r || \"default\"); if (\"object\" != _typeof(i)) return i; throw new TypeError(\"@@toPrimitive must return a primitive value.\"); } return (\"string\" === r ? String : Number)(t); }\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\n\n\nfunction LightDarkSwitcher(_ref) {\n var _frame_adminify_menu$;\n var setAdminifyColorMode = _ref.setAdminifyColorMode;\n // const mode = frame_adminify_menu.light_dark_mode?.admin_ui_mode;\n var _useState = (0,_wordpress_element__WEBPACK_IMPORTED_MODULE_2__.useState)((_frame_adminify_menu$ = frame_adminify_menu.light_dark_mode) === null || _frame_adminify_menu$ === void 0 ? void 0 : _frame_adminify_menu$.admin_ui_mode),\n _useState2 = _slicedToArray(_useState, 2),\n mode = _useState2[0],\n setMode = _useState2[1];\n var _useState3 = (0,_wordpress_element__WEBPACK_IMPORTED_MODULE_2__.useState)(false),\n _useState4 = _slicedToArray(_useState3, 2),\n showDropdown = _useState4[0],\n setShowDropdown = _useState4[1];\n var ref = (0,_wordpress_element__WEBPACK_IMPORTED_MODULE_2__.useRef)(null);\n\n // // Outside Click to hide dropdown\n (0,_hooks_useOutsideClick__WEBPACK_IMPORTED_MODULE_1__.useOutsideClick)(ref, function () {\n return setShowDropdown(false);\n });\n var setColorMode = function setColorMode(mode) {\n setMode(mode);\n\n // Safely get iframe and check if AdminifyDarkMode is available\n var iframeElement = document.querySelector(\"#frame-adminify-app--iframe\");\n var __iframe = iframeElement === null || iframeElement === void 0 ? void 0 : iframeElement.contentWindow;\n\n // Check if AdminifyDarkMode exists before using it\n if (!window.AdminifyDarkMode || !(__iframe !== null && __iframe !== void 0 && __iframe.AdminifyDarkMode)) {\n console.warn(\"AdminifyDarkMode not fully loaded yet\");\n // Try again after a short delay\n setTimeout(function () {\n return setColorMode(mode);\n }, 500);\n return;\n }\n try {\n if (mode === \"dark\") {\n window.AdminifyDarkMode.enable({\n brightness: 120\n });\n __iframe.AdminifyDarkMode.enable({\n brightness: 120\n });\n setAdminifyColorMode(function (prev) {\n return _objectSpread(_objectSpread({}, prev), {}, {\n admin_ui_mode: \"dark\"\n });\n });\n (0,_utils_uitls__WEBPACK_IMPORTED_MODULE_0__.changeLightDarkMode)(\"dark\");\n\n // Add body dark class \n window.document.body.classList.add(\"adminify-dark-mode\");\n __iframe.document.body.classList.add(\"adminify-dark-mode\");\n // Remove body light class\n window.document.body.classList.remove(\"adminify-light-mode\");\n __iframe.document.body.classList.remove(\"adminify-light-mode\");\n } else if (mode === \"light\") {\n window.AdminifyDarkMode.disable();\n __iframe.AdminifyDarkMode.disable();\n setAdminifyColorMode(function (prev) {\n return _objectSpread(_objectSpread({}, prev), {}, {\n admin_ui_mode: \"light\"\n });\n });\n (0,_utils_uitls__WEBPACK_IMPORTED_MODULE_0__.changeLightDarkMode)(\"light\");\n\n // Add body light class \n window.document.body.classList.add(\"adminify-light-mode\");\n __iframe.document.body.classList.add(\"adminify-light-mode\");\n // Remove body light class\n window.document.body.classList.remove(\"adminify-dark-mode\");\n __iframe.document.body.classList.remove(\"adminify-dark-mode\");\n } else {\n var isDark = window.matchMedia(\"(prefers-color-scheme: dark)\").matches;\n if (isDark) {\n window.AdminifyDarkMode.enable({\n brightness: 120\n });\n __iframe.AdminifyDarkMode.enable({\n brightness: 120\n });\n\n // Add body dark class \n window.document.body.classList.add(\"adminify-dark-mode\");\n __iframe.document.body.classList.add(\"adminify-dark-mode\");\n // Remove body light class\n window.document.body.classList.remove(\"adminify-light-mode\");\n __iframe.document.body.classList.remove(\"adminify-light-mode\");\n } else {\n window.AdminifyDarkMode.disable();\n __iframe.AdminifyDarkMode.disable();\n\n // Add body dark class \n window.document.body.classList.add(\"adminify-light-mode\");\n __iframe.document.body.classList.add(\"adminify-light-mode\");\n // Remove body light class\n window.document.body.classList.remove(\"adminify-dark-mode\");\n __iframe.document.body.classList.remove(\"adminify-dark-mode\");\n }\n setAdminifyColorMode(function (prev) {\n return _objectSpread(_objectSpread({}, prev), {}, {\n admin_ui_mode: \"system\"\n });\n });\n (0,_utils_uitls__WEBPACK_IMPORTED_MODULE_0__.changeLightDarkMode)(\"system\");\n }\n } catch (error) {\n console.error(\"Error setting color mode:\", error);\n // Fallback: just set the mode without dark mode library\n setAdminifyColorMode(function (prev) {\n return _objectSpread(_objectSpread({}, prev), {}, {\n admin_ui_mode: \"light\"\n });\n });\n (0,_utils_uitls__WEBPACK_IMPORTED_MODULE_0__.changeLightDarkMode)(mode);\n }\n };\n return /*#__PURE__*/React.createElement(\"div\", {\n id: \"adminify-color-mode-wrapper\"\n }, /*#__PURE__*/React.createElement(\"div\", {\n onClick: function onClick() {\n return setShowDropdown(true);\n },\n className: \"adminify-mode-icon\"\n }, _utils_uitls__WEBPACK_IMPORTED_MODULE_0__.switcherIcons[mode]), /*#__PURE__*/React.createElement(\"div\", _extends({\n ref: ref,\n className: \"light-dark-dropdown\"\n }, !!showDropdown ? {\n style: {\n visibility: \"visible\",\n opacity: 1,\n transform: \"none\"\n }\n } : {}), /*#__PURE__*/React.createElement(\"div\", {\n className: \"light\",\n onClick: function onClick() {\n return setColorMode(\"light\");\n }\n }, /*#__PURE__*/React.createElement(\"svg\", {\n viewBox: \"0 0 24 24\",\n width: \"24\",\n height: \"24\",\n className: \"lightIcon\"\n }, /*#__PURE__*/React.createElement(\"path\", {\n fill: \"var(--adminify-menu-text-color)\",\n d: \"M12,9c1.65,0,3,1.35,3,3s-1.35,3-3,3s-3-1.35-3-3S10.35,9,12,9 M12,7c-2.76,0-5,2.24-5,5s2.24,5,5,5s5-2.24,5-5 S14.76,7,12,7L12,7z M2,13l2,0c0.55,0,1-0.45,1-1s-0.45-1-1-1l-2,0c-0.55,0-1,0.45-1,1S1.45,13,2,13z M20,13l2,0c0.55,0,1-0.45,1-1 s-0.45-1-1-1l-2,0c-0.55,0-1,0.45-1,1S19.45,13,20,13z M11,2v2c0,0.55,0.45,1,1,1s1-0.45,1-1V2c0-0.55-0.45-1-1-1S11,1.45,11,2z M11,20v2c0,0.55,0.45,1,1,1s1-0.45,1-1v-2c0-0.55-0.45-1-1-1C11.45,19,11,19.45,11,20z M5.99,4.58c-0.39-0.39-1.03-0.39-1.41,0 c-0.39,0.39-0.39,1.03,0,1.41l1.06,1.06c0.39,0.39,1.03,0.39,1.41,0s0.39-1.03,0-1.41L5.99,4.58z M18.36,16.95 c-0.39-0.39-1.03-0.39-1.41,0c-0.39,0.39-0.39,1.03,0,1.41l1.06,1.06c0.39,0.39,1.03,0.39,1.41,0c0.39-0.39,0.39-1.03,0-1.41 L18.36,16.95z M19.42,5.99c0.39-0.39,0.39-1.03,0-1.41c-0.39-0.39-1.03-0.39-1.41,0l-1.06,1.06c-0.39,0.39-0.39,1.03,0,1.41 s1.03,0.39,1.41,0L19.42,5.99z M7.05,18.36c0.39-0.39,0.39-1.03,0-1.41c-0.39-0.39-1.03-0.39-1.41,0l-1.06,1.06 c-0.39,0.39-0.39,1.03,0,1.41s1.03,0.39,1.41,0L7.05,18.36z\"\n })), /*#__PURE__*/React.createElement(\"span\", null, \"Light\")), /*#__PURE__*/React.createElement(\"div\", {\n className: \"dark\",\n onClick: function onClick() {\n return setColorMode(\"dark\");\n }\n }, /*#__PURE__*/React.createElement(\"svg\", {\n viewBox: \"0 0 24 24\",\n width: \"24\",\n height: \"24\",\n className: \"darkIcon\"\n }, /*#__PURE__*/React.createElement(\"path\", {\n fill: \"var(--adminify-menu-text-color)\",\n d: \"M9.37,5.51C9.19,6.15,9.1,6.82,9.1,7.5c0,4.08,3.32,7.4,7.4,7.4c0.68,0,1.35-0.09,1.99-0.27C17.45,17.19,14.93,19,12,19 c-3.86,0-7-3.14-7-7C5,9.07,6.81,6.55,9.37,5.51z M12,3c-4.97,0-9,4.03-9,9s4.03,9,9,9s9-4.03,9-9c0-0.46-0.04-0.92-0.1-1.36 c-0.98,1.37-2.58,2.26-4.4,2.26c-2.98,0-5.4-2.42-5.4-5.4c0-1.81,0.89-3.42,2.26-4.4C12.92,3.04,12.46,3,12,3L12,3z\"\n })), /*#__PURE__*/React.createElement(\"span\", null, \"Dark\")), /*#__PURE__*/React.createElement(\"div\", {\n className: \"system\",\n onClick: function onClick() {\n return setColorMode(\"system\");\n }\n }, /*#__PURE__*/React.createElement(\"svg\", {\n width: \"16\",\n height: \"16\",\n viewBox: \"0 0 22 18\",\n fill: \"none\",\n xmlns: \"http://www.w3.org/2000/svg\",\n className: \"systemIcon\"\n }, /*#__PURE__*/React.createElement(\"path\", {\n d: \"M20 13V4.2C20 3.0799 20 2.51984 19.782 2.09202C19.5903 1.71569 19.2843 1.40973 18.908 1.21799C18.4802 1 17.9201 1 16.8 1H5.2C4.07989 1 3.51984 1 3.09202 1.21799C2.71569 1.40973 2.40973 1.71569 2.21799 2.09202C2 2.51984 2 3.0799 2 4.2V13M3.66667 17H18.3333C18.9533 17 19.2633 17 19.5176 16.9319C20.2078 16.7469 20.7469 16.2078 20.9319 15.5176C21 15.2633 21 14.9533 21 14.3333C21 14.0233 21 13.8683 20.9659 13.7412C20.8735 13.3961 20.6039 13.1265 20.2588 13.0341C20.1317 13 19.9767 13 19.6667 13H2.33333C2.02334 13 1.86835 13 1.74118 13.0341C1.39609 13.1265 1.12654 13.3961 1.03407 13.7412C1 13.8683 1 14.0233 1 14.3333C1 14.9533 1 15.2633 1.06815 15.5176C1.25308 16.2078 1.79218 16.7469 2.48236 16.9319C2.73669 17 3.04669 17 3.66667 17Z\",\n stroke: \"var(--adminify-menu-text-color)\",\n strokeWidth: \"2\",\n strokeLinecap: \"round\",\n strokeLinejoin: \"round\"\n })), /*#__PURE__*/React.createElement(\"span\", null, \"System\"))));\n}\n/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (LightDarkSwitcher);\n\n//# sourceURL=webpack://adminify/./dev/admin/frame/Topbar/components/LightDarkSwitcher.jsx?");
119 +eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"default\": () => (__WEBPACK_DEFAULT_EXPORT__)\n/* harmony export */ });\n/* harmony import */ var _wordpress_element__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! @wordpress/element */ \"./node_modules/react/index.js\");\n/* harmony import */ var _wordpress_element__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(_wordpress_element__WEBPACK_IMPORTED_MODULE_2__);\n/* harmony import */ var _utils_uitls__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../../utils/uitls */ \"./dev/admin/frame/utils/uitls.js\");\n/* harmony import */ var _hooks_useOutsideClick__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../../hooks/useOutsideClick */ \"./dev/admin/frame/hooks/useOutsideClick.js\");\nfunction _typeof(o) { \"@babel/helpers - typeof\"; return _typeof = \"function\" == typeof Symbol && \"symbol\" == typeof Symbol.iterator ? function (o) { return typeof o; } : function (o) { return o && \"function\" == typeof Symbol && o.constructor === Symbol && o !== Symbol.prototype ? \"symbol\" : typeof o; }, _typeof(o); }\nfunction _extends() { return _extends = Object.assign ? Object.assign.bind() : function (n) { for (var e = 1; e < arguments.length; e++) { var t = arguments[e]; for (var r in t) ({}).hasOwnProperty.call(t, r) && (n[r] = t[r]); } return n; }, _extends.apply(null, arguments); }\nfunction ownKeys(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e); r && (o = o.filter(function (r) { return Object.getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; }\nfunction _objectSpread(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys(Object(t), !0).forEach(function (r) { _defineProperty(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; }\nfunction _defineProperty(e, r, t) { return (r = _toPropertyKey(r)) in e ? Object.defineProperty(e, r, { value: t, enumerable: !0, configurable: !0, writable: !0 }) : e[r] = t, e; }\nfunction _toPropertyKey(t) { var i = _toPrimitive(t, \"string\"); return \"symbol\" == _typeof(i) ? i : i + \"\"; }\nfunction _toPrimitive(t, r) { if (\"object\" != _typeof(t) || !t) return t; var e = t[Symbol.toPrimitive]; if (void 0 !== e) { var i = e.call(t, r || \"default\"); if (\"object\" != _typeof(i)) return i; throw new TypeError(\"@@toPrimitive must return a primitive value.\"); } return (\"string\" === r ? String : Number)(t); }\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\n\n\nfunction LightDarkSwitcher(_ref) {\n var _frame_adminify_menu$;\n var setAdminifyColorMode = _ref.setAdminifyColorMode;\n // const mode = frame_adminify_menu.light_dark_mode?.admin_ui_mode;\n var _useState = (0,_wordpress_element__WEBPACK_IMPORTED_MODULE_2__.useState)((_frame_adminify_menu$ = frame_adminify_menu.light_dark_mode) === null || _frame_adminify_menu$ === void 0 ? void 0 : _frame_adminify_menu$.admin_ui_mode),\n _useState2 = _slicedToArray(_useState, 2),\n mode = _useState2[0],\n setMode = _useState2[1];\n var _useState3 = (0,_wordpress_element__WEBPACK_IMPORTED_MODULE_2__.useState)(false),\n _useState4 = _slicedToArray(_useState3, 2),\n showDropdown = _useState4[0],\n setShowDropdown = _useState4[1];\n var ref = (0,_wordpress_element__WEBPACK_IMPORTED_MODULE_2__.useRef)(null);\n\n // // Outside Click to hide dropdown\n (0,_hooks_useOutsideClick__WEBPACK_IMPORTED_MODULE_1__.useOutsideClick)(ref, function () {\n return setShowDropdown(false);\n });\n\n // The dark-mode bundle only ships up front to users already in dark mode, so\n // enabling it from a light page means fetching it first. window.PXLBSADMINIFYDarkMode\n // (printed by Assets::header_scripts) loads it into whichever window is asked\n // for and is a no-op once it is there. Disabling never needs a fetch: a window\n // without the bundle has nothing to undo.\n var enableDarkMode = function enableDarkMode(win) {\n if (!win) return;\n if (window.PXLBSADMINIFYDarkMode) {\n window.PXLBSADMINIFYDarkMode.enable(win);\n } else if (win.AdminifyDarkMode) {\n win.AdminifyDarkMode.enable({\n brightness: 120\n });\n }\n };\n var disableDarkMode = function disableDarkMode(win) {\n if (!win) return;\n if (window.PXLBSADMINIFYDarkMode) {\n window.PXLBSADMINIFYDarkMode.disable(win);\n } else if (win.AdminifyDarkMode) {\n win.AdminifyDarkMode.disable();\n }\n };\n var setColorMode = function setColorMode(mode) {\n setMode(mode);\n var iframeElement = document.querySelector(\"#frame-adminify-app--iframe\");\n var __iframe = iframeElement === null || iframeElement === void 0 ? void 0 : iframeElement.contentWindow;\n var applyMode = function applyMode(isDark) {\n [window, __iframe].forEach(function (win) {\n var _win$document;\n if (isDark) {\n enableDarkMode(win);\n } else {\n disableDarkMode(win);\n }\n var body = win === null || win === void 0 || (_win$document = win.document) === null || _win$document === void 0 ? void 0 : _win$document.body;\n if (!body) return;\n body.classList.toggle(\"adminify-dark-mode\", isDark);\n body.classList.toggle(\"adminify-light-mode\", !isDark);\n });\n };\n try {\n if (mode === \"dark\") {\n applyMode(true);\n setAdminifyColorMode(function (prev) {\n return _objectSpread(_objectSpread({}, prev), {}, {\n admin_ui_mode: \"dark\"\n });\n });\n (0,_utils_uitls__WEBPACK_IMPORTED_MODULE_0__.changeLightDarkMode)(\"dark\");\n } else if (mode === \"light\") {\n applyMode(false);\n setAdminifyColorMode(function (prev) {\n return _objectSpread(_objectSpread({}, prev), {}, {\n admin_ui_mode: \"light\"\n });\n });\n (0,_utils_uitls__WEBPACK_IMPORTED_MODULE_0__.changeLightDarkMode)(\"light\");\n } else {\n applyMode(window.matchMedia(\"(prefers-color-scheme: dark)\").matches);\n setAdminifyColorMode(function (prev) {\n return _objectSpread(_objectSpread({}, prev), {}, {\n admin_ui_mode: \"system\"\n });\n });\n (0,_utils_uitls__WEBPACK_IMPORTED_MODULE_0__.changeLightDarkMode)(\"system\");\n }\n } catch (error) {\n console.error(\"Error setting color mode:\", error);\n // Fallback: just set the mode without dark mode library\n setAdminifyColorMode(function (prev) {\n return _objectSpread(_objectSpread({}, prev), {}, {\n admin_ui_mode: \"light\"\n });\n });\n (0,_utils_uitls__WEBPACK_IMPORTED_MODULE_0__.changeLightDarkMode)(mode);\n }\n };\n return /*#__PURE__*/React.createElement(\"div\", {\n id: \"adminify-color-mode-wrapper\"\n }, /*#__PURE__*/React.createElement(\"div\", {\n onClick: function onClick() {\n return setShowDropdown(true);\n },\n className: \"adminify-mode-icon\"\n }, _utils_uitls__WEBPACK_IMPORTED_MODULE_0__.switcherIcons[mode]), /*#__PURE__*/React.createElement(\"div\", _extends({\n ref: ref,\n className: \"light-dark-dropdown\"\n }, !!showDropdown ? {\n style: {\n visibility: \"visible\",\n opacity: 1,\n transform: \"none\"\n }\n } : {}), /*#__PURE__*/React.createElement(\"div\", {\n className: \"light\",\n onClick: function onClick() {\n return setColorMode(\"light\");\n }\n }, /*#__PURE__*/React.createElement(\"svg\", {\n viewBox: \"0 0 24 24\",\n width: \"24\",\n height: \"24\",\n className: \"lightIcon\"\n }, /*#__PURE__*/React.createElement(\"path\", {\n fill: \"var(--adminify-menu-text-color)\",\n d: \"M12,9c1.65,0,3,1.35,3,3s-1.35,3-3,3s-3-1.35-3-3S10.35,9,12,9 M12,7c-2.76,0-5,2.24-5,5s2.24,5,5,5s5-2.24,5-5 S14.76,7,12,7L12,7z M2,13l2,0c0.55,0,1-0.45,1-1s-0.45-1-1-1l-2,0c-0.55,0-1,0.45-1,1S1.45,13,2,13z M20,13l2,0c0.55,0,1-0.45,1-1 s-0.45-1-1-1l-2,0c-0.55,0-1,0.45-1,1S19.45,13,20,13z M11,2v2c0,0.55,0.45,1,1,1s1-0.45,1-1V2c0-0.55-0.45-1-1-1S11,1.45,11,2z M11,20v2c0,0.55,0.45,1,1,1s1-0.45,1-1v-2c0-0.55-0.45-1-1-1C11.45,19,11,19.45,11,20z M5.99,4.58c-0.39-0.39-1.03-0.39-1.41,0 c-0.39,0.39-0.39,1.03,0,1.41l1.06,1.06c0.39,0.39,1.03,0.39,1.41,0s0.39-1.03,0-1.41L5.99,4.58z M18.36,16.95 c-0.39-0.39-1.03-0.39-1.41,0c-0.39,0.39-0.39,1.03,0,1.41l1.06,1.06c0.39,0.39,1.03,0.39,1.41,0c0.39-0.39,0.39-1.03,0-1.41 L18.36,16.95z M19.42,5.99c0.39-0.39,0.39-1.03,0-1.41c-0.39-0.39-1.03-0.39-1.41,0l-1.06,1.06c-0.39,0.39-0.39,1.03,0,1.41 s1.03,0.39,1.41,0L19.42,5.99z M7.05,18.36c0.39-0.39,0.39-1.03,0-1.41c-0.39-0.39-1.03-0.39-1.41,0l-1.06,1.06 c-0.39,0.39-0.39,1.03,0,1.41s1.03,0.39,1.41,0L7.05,18.36z\"\n })), /*#__PURE__*/React.createElement(\"span\", null, \"Light\")), /*#__PURE__*/React.createElement(\"div\", {\n className: \"dark\",\n onClick: function onClick() {\n return setColorMode(\"dark\");\n }\n }, /*#__PURE__*/React.createElement(\"svg\", {\n viewBox: \"0 0 24 24\",\n width: \"24\",\n height: \"24\",\n className: \"darkIcon\"\n }, /*#__PURE__*/React.createElement(\"path\", {\n fill: \"var(--adminify-menu-text-color)\",\n d: \"M9.37,5.51C9.19,6.15,9.1,6.82,9.1,7.5c0,4.08,3.32,7.4,7.4,7.4c0.68,0,1.35-0.09,1.99-0.27C17.45,17.19,14.93,19,12,19 c-3.86,0-7-3.14-7-7C5,9.07,6.81,6.55,9.37,5.51z M12,3c-4.97,0-9,4.03-9,9s4.03,9,9,9s9-4.03,9-9c0-0.46-0.04-0.92-0.1-1.36 c-0.98,1.37-2.58,2.26-4.4,2.26c-2.98,0-5.4-2.42-5.4-5.4c0-1.81,0.89-3.42,2.26-4.4C12.92,3.04,12.46,3,12,3L12,3z\"\n })), /*#__PURE__*/React.createElement(\"span\", null, \"Dark\")), /*#__PURE__*/React.createElement(\"div\", {\n className: \"system\",\n onClick: function onClick() {\n return setColorMode(\"system\");\n }\n }, /*#__PURE__*/React.createElement(\"svg\", {\n width: \"16\",\n height: \"16\",\n viewBox: \"0 0 22 18\",\n fill: \"none\",\n xmlns: \"http://www.w3.org/2000/svg\",\n className: \"systemIcon\"\n }, /*#__PURE__*/React.createElement(\"path\", {\n d: \"M20 13V4.2C20 3.0799 20 2.51984 19.782 2.09202C19.5903 1.71569 19.2843 1.40973 18.908 1.21799C18.4802 1 17.9201 1 16.8 1H5.2C4.07989 1 3.51984 1 3.09202 1.21799C2.71569 1.40973 2.40973 1.71569 2.21799 2.09202C2 2.51984 2 3.0799 2 4.2V13M3.66667 17H18.3333C18.9533 17 19.2633 17 19.5176 16.9319C20.2078 16.7469 20.7469 16.2078 20.9319 15.5176C21 15.2633 21 14.9533 21 14.3333C21 14.0233 21 13.8683 20.9659 13.7412C20.8735 13.3961 20.6039 13.1265 20.2588 13.0341C20.1317 13 19.9767 13 19.6667 13H2.33333C2.02334 13 1.86835 13 1.74118 13.0341C1.39609 13.1265 1.12654 13.3961 1.03407 13.7412C1 13.8683 1 14.0233 1 14.3333C1 14.9533 1 15.2633 1.06815 15.5176C1.25308 16.2078 1.79218 16.7469 2.48236 16.9319C2.73669 17 3.04669 17 3.66667 17Z\",\n stroke: \"var(--adminify-menu-text-color)\",\n strokeWidth: \"2\",\n strokeLinecap: \"round\",\n strokeLinejoin: \"round\"\n })), /*#__PURE__*/React.createElement(\"span\", null, \"System\"))));\n}\n/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (LightDarkSwitcher);\n\n//# sourceURL=webpack://adminify/./dev/admin/frame/Topbar/components/LightDarkSwitcher.jsx?");
120 120
121 121 /***/ }),
122 122
123 123 /***/ "./dev/admin/frame/Topbar/components/MenuItems.jsx":
@@ -125,9 +125,9 @@
125 125 !*** ./dev/admin/frame/Topbar/components/MenuItems.jsx ***!
126 126 \*********************************************************/
127 127 /***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
128 128
129 -eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"default\": () => (__WEBPACK_DEFAULT_EXPORT__)\n/* harmony export */ });\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! react */ \"./node_modules/react/index.js\");\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(react__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var _Dropdown__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./Dropdown */ \"./dev/admin/frame/Topbar/components/Dropdown.jsx\");\n/* harmony import */ var _utils_uitls__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../../utils/uitls */ \"./dev/admin/frame/utils/uitls.js\");\nfunction _extends() { return _extends = Object.assign ? Object.assign.bind() : function (n) { for (var e = 1; e < arguments.length; e++) { var t = arguments[e]; for (var r in t) ({}).hasOwnProperty.call(t, r) && (n[r] = t[r]); } return n; }, _extends.apply(null, arguments); }\nfunction _typeof(o) { \"@babel/helpers - typeof\"; return _typeof = \"function\" == typeof Symbol && \"symbol\" == typeof Symbol.iterator ? function (o) { return typeof o; } : function (o) { return o && \"function\" == typeof Symbol && o.constructor === Symbol && o !== Symbol.prototype ? \"symbol\" : typeof o; }, _typeof(o); }\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\n\n\nvar MenuItems = function MenuItems(_ref) {\n var _items$meta, _items$meta2, _Object$values;\n var items = _ref.items,\n depthLevel = _ref.depthLevel,\n setUrl = _ref.setUrl;\n var _useState = (0,react__WEBPACK_IMPORTED_MODULE_0__.useState)(false),\n _useState2 = _slicedToArray(_useState, 2),\n dropdown = _useState2[0],\n setDropdown = _useState2[1];\n var ref = (0,react__WEBPACK_IMPORTED_MODULE_0__.useRef)();\n (0,react__WEBPACK_IMPORTED_MODULE_0__.useEffect)(function () {\n var handler = function handler(event) {\n if (dropdown && ref.current && !ref.current.contains(event.target)) {\n setDropdown(false);\n }\n };\n document.addEventListener(\"mousedown\", handler);\n document.addEventListener(\"touchstart\", handler);\n return function () {\n // Cleanup the event listener\n document.removeEventListener(\"mousedown\", handler);\n document.removeEventListener(\"touchstart\", handler);\n };\n }, [dropdown]);\n var onMouseEnter = function onMouseEnter() {\n window.innerWidth > 960 && setDropdown(true);\n };\n var onMouseLeave = function onMouseLeave() {\n window.innerWidth > 960 && setDropdown(false);\n };\n return /*#__PURE__*/React.createElement(\"li\", {\n // className=\"menu-items\"\n className: \"adminify-top-menu-item adminify-top-menu-\".concat(items === null || items === void 0 ? void 0 : items.id).concat(items !== null && items !== void 0 && (_items$meta = items.meta) !== null && _items$meta !== void 0 && _items$meta[\"class\"] ? \" \".concat(items === null || items === void 0 || (_items$meta2 = items.meta) === null || _items$meta2 === void 0 ? void 0 : _items$meta2[\"class\"]) : \"\"),\n id: \"adminify-top-menu-\".concat(items === null || items === void 0 ? void 0 : items.id),\n ref: ref,\n onMouseEnter: onMouseEnter,\n onMouseLeave: onMouseLeave\n }, _typeof(items === null || items === void 0 ? void 0 : items.submenu) === \"object\" && Object.values(items === null || items === void 0 ? void 0 : items.submenu).length > 0 ? /*#__PURE__*/React.createElement(React.Fragment, null, !(items !== null && items !== void 0 && items.title) && depthLevel > 0 ? /*#__PURE__*/React.createElement(React.Fragment, null, (_Object$values = Object.values(items === null || items === void 0 ? void 0 : items.submenu)) === null || _Object$values === void 0 ? void 0 : _Object$values.map(function (submenu, index) {\n if ((submenu === null || submenu === void 0 ? void 0 : submenu.menu_status) === false) return null;\n return /*#__PURE__*/React.createElement(\"ul\", {\n key: index\n }, /*#__PURE__*/React.createElement(MenuItems, {\n items: submenu,\n depthLevel: depthLevel + 1,\n setUrl: setUrl\n }));\n })) : /*#__PURE__*/React.createElement(React.Fragment, null, items.menu_status === false ? null : function () {\n var isExternal = (0,_utils_uitls__WEBPACK_IMPORTED_MODULE_2__.isExternalUrl)(items === null || items === void 0 ? void 0 : items.href);\n return /*#__PURE__*/React.createElement(React.Fragment, null, /*#__PURE__*/React.createElement(\"a\", _extends({\n href: items !== null && items !== void 0 && items.href ? isExternal ? items === null || items === void 0 ? void 0 : items.href : (0,_utils_uitls__WEBPACK_IMPORTED_MODULE_2__.getPath)(items === null || items === void 0 ? void 0 : items.href) : \"#\",\n \"aria-haspopup\": \"menu\",\n \"aria-expanded\": dropdown ? \"true\" : \"false\"\n }, isExternal ? {\n target: \"_blank\"\n } : {}, {\n onClick: function onClick(e) {\n // Allow Ctrl/Cmd/Shift/middle click to open in new tab\n if ((0,_utils_uitls__WEBPACK_IMPORTED_MODULE_2__.isNewTabClick)(e)) {\n return;\n }\n\n // External URLs - let browser handle with target=\"_blank\"\n if (isExternal) {\n return;\n }\n e.preventDefault();\n if (items !== null && items !== void 0 && items.href) {\n setUrl((0,_utils_uitls__WEBPACK_IMPORTED_MODULE_2__.getPath)(items === null || items === void 0 ? void 0 : items.href));\n (0,_utils_uitls__WEBPACK_IMPORTED_MODULE_2__.handleURLChange)((0,_utils_uitls__WEBPACK_IMPORTED_MODULE_2__.getPath)(items === null || items === void 0 ? void 0 : items.href));\n }\n setDropdown(function (prev) {\n return !prev;\n });\n },\n dangerouslySetInnerHTML: {\n __html: (0,_utils_uitls__WEBPACK_IMPORTED_MODULE_2__.generateTopBarMenuDOM)({\n icon: items === null || items === void 0 ? void 0 : items.icon,\n title: items === null || items === void 0 ? void 0 : items.title\n })\n }\n })), /*#__PURE__*/React.createElement(_Dropdown__WEBPACK_IMPORTED_MODULE_1__[\"default\"], {\n depthLevel: depthLevel,\n submenus: Object.values(items === null || items === void 0 ? void 0 : items.submenu),\n dropdown: dropdown,\n setUrl: setUrl\n }));\n }())) : function () {\n var isJsVoid = (0,_utils_uitls__WEBPACK_IMPORTED_MODULE_2__.checkJsVoid)(items === null || items === void 0 ? void 0 : items.href);\n var isExternal = (0,_utils_uitls__WEBPACK_IMPORTED_MODULE_2__.isExternalUrl)(items === null || items === void 0 ? void 0 : items.href);\n return /*#__PURE__*/React.createElement(\"a\", _extends({\n href: items !== null && items !== void 0 && items.href && !isJsVoid ? isExternal ? items === null || items === void 0 ? void 0 : items.href : (0,_utils_uitls__WEBPACK_IMPORTED_MODULE_2__.getPath)(items === null || items === void 0 ? void 0 : items.href) : \"#\",\n dangerouslySetInnerHTML: {\n __html: (0,_utils_uitls__WEBPACK_IMPORTED_MODULE_2__.generateTopBarMenuDOM)({\n icon: items === null || items === void 0 ? void 0 : items.icon,\n title: items === null || items === void 0 ? void 0 : items.title\n })\n }\n }, isExternal ? {\n target: \"_blank\"\n } : {}, {\n onClick: function onClick(e) {\n // Allow Ctrl/Cmd/Shift/middle click to open in new tab\n if ((0,_utils_uitls__WEBPACK_IMPORTED_MODULE_2__.isNewTabClick)(e)) {\n return;\n }\n\n // External URLs - let browser handle with target=\"_blank\"\n if (isExternal && !isJsVoid) {\n return;\n }\n e.preventDefault();\n\n // Javascript void - trigger original element click\n if (isJsVoid) {\n return (0,_utils_uitls__WEBPACK_IMPORTED_MODULE_2__.triggerJsVoidClick)(items === null || items === void 0 ? void 0 : items.id);\n }\n\n // Internal URL - update iframe\n if (items !== null && items !== void 0 && items.href) {\n setUrl((0,_utils_uitls__WEBPACK_IMPORTED_MODULE_2__.getPath)(items === null || items === void 0 ? void 0 : items.href));\n (0,_utils_uitls__WEBPACK_IMPORTED_MODULE_2__.handleURLChange)((0,_utils_uitls__WEBPACK_IMPORTED_MODULE_2__.getPath)(items === null || items === void 0 ? void 0 : items.href));\n }\n }\n }));\n }());\n};\n/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (MenuItems);\n\n//# sourceURL=webpack://adminify/./dev/admin/frame/Topbar/components/MenuItems.jsx?");
129 +eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"default\": () => (__WEBPACK_DEFAULT_EXPORT__)\n/* harmony export */ });\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! react */ \"./node_modules/react/index.js\");\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(react__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var _Dropdown__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./Dropdown */ \"./dev/admin/frame/Topbar/components/Dropdown.jsx\");\n/* harmony import */ var _utils_uitls__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../../utils/uitls */ \"./dev/admin/frame/utils/uitls.js\");\nfunction _extends() { return _extends = Object.assign ? Object.assign.bind() : function (n) { for (var e = 1; e < arguments.length; e++) { var t = arguments[e]; for (var r in t) ({}).hasOwnProperty.call(t, r) && (n[r] = t[r]); } return n; }, _extends.apply(null, arguments); }\nfunction _typeof(o) { \"@babel/helpers - typeof\"; return _typeof = \"function\" == typeof Symbol && \"symbol\" == typeof Symbol.iterator ? function (o) { return typeof o; } : function (o) { return o && \"function\" == typeof Symbol && o.constructor === Symbol && o !== Symbol.prototype ? \"symbol\" : typeof o; }, _typeof(o); }\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\n\n\nvar MenuItems = function MenuItems(_ref) {\n var _items$meta, _items$meta2, _Object$values;\n var items = _ref.items,\n depthLevel = _ref.depthLevel,\n setUrl = _ref.setUrl;\n var _useState = (0,react__WEBPACK_IMPORTED_MODULE_0__.useState)(false),\n _useState2 = _slicedToArray(_useState, 2),\n dropdown = _useState2[0],\n setDropdown = _useState2[1];\n var ref = (0,react__WEBPACK_IMPORTED_MODULE_0__.useRef)();\n (0,react__WEBPACK_IMPORTED_MODULE_0__.useEffect)(function () {\n var handler = function handler(event) {\n if (dropdown && ref.current && !ref.current.contains(event.target)) {\n setDropdown(false);\n }\n };\n document.addEventListener(\"mousedown\", handler);\n document.addEventListener(\"touchstart\", handler);\n return function () {\n // Cleanup the event listener\n document.removeEventListener(\"mousedown\", handler);\n document.removeEventListener(\"touchstart\", handler);\n };\n }, [dropdown]);\n var onMouseEnter = function onMouseEnter() {\n window.innerWidth > 960 && setDropdown(true);\n };\n var onMouseLeave = function onMouseLeave() {\n window.innerWidth > 960 && setDropdown(false);\n };\n return /*#__PURE__*/React.createElement(\"li\", {\n // className=\"menu-items\"\n className: \"adminify-top-menu-item adminify-top-menu-\".concat(items === null || items === void 0 ? void 0 : items.id).concat(items !== null && items !== void 0 && (_items$meta = items.meta) !== null && _items$meta !== void 0 && _items$meta[\"class\"] ? \" \".concat(items === null || items === void 0 || (_items$meta2 = items.meta) === null || _items$meta2 === void 0 ? void 0 : _items$meta2[\"class\"]) : \"\"),\n id: \"adminify-top-menu-\".concat(items === null || items === void 0 ? void 0 : items.id),\n ref: ref,\n onMouseEnter: onMouseEnter,\n onMouseLeave: onMouseLeave\n }, _typeof(items === null || items === void 0 ? void 0 : items.submenu) === \"object\" && Object.values(items === null || items === void 0 ? void 0 : items.submenu).length > 0 ? /*#__PURE__*/React.createElement(React.Fragment, null, !(items !== null && items !== void 0 && items.title) && depthLevel > 0 ? /*#__PURE__*/React.createElement(React.Fragment, null, (_Object$values = Object.values(items === null || items === void 0 ? void 0 : items.submenu)) === null || _Object$values === void 0 ? void 0 : _Object$values.map(function (submenu, index) {\n if ((submenu === null || submenu === void 0 ? void 0 : submenu.menu_status) === false) return null;\n return /*#__PURE__*/React.createElement(\"ul\", {\n key: index\n }, /*#__PURE__*/React.createElement(MenuItems, {\n items: submenu,\n depthLevel: depthLevel + 1,\n setUrl: setUrl\n }));\n })) : /*#__PURE__*/React.createElement(React.Fragment, null, items.menu_status === false ? null : function () {\n var isExternal = (0,_utils_uitls__WEBPACK_IMPORTED_MODULE_2__.isExternalUrl)(items);\n return /*#__PURE__*/React.createElement(React.Fragment, null, /*#__PURE__*/React.createElement(\"a\", _extends({\n href: items !== null && items !== void 0 && items.href ? isExternal ? items === null || items === void 0 ? void 0 : items.href : (0,_utils_uitls__WEBPACK_IMPORTED_MODULE_2__.getPath)(items === null || items === void 0 ? void 0 : items.href) : \"#\",\n \"aria-haspopup\": \"menu\",\n \"aria-expanded\": dropdown ? \"true\" : \"false\"\n }, isExternal ? {\n target: \"_blank\"\n } : {}, {\n onClick: function onClick(e) {\n // Allow Ctrl/Cmd/Shift/middle click to open in new tab\n if ((0,_utils_uitls__WEBPACK_IMPORTED_MODULE_2__.isNewTabClick)(e)) {\n return;\n }\n\n // External URLs - let browser handle with target=\"_blank\"\n if (isExternal) {\n return;\n }\n e.preventDefault();\n if (items !== null && items !== void 0 && items.href) {\n setUrl((0,_utils_uitls__WEBPACK_IMPORTED_MODULE_2__.getPath)(items === null || items === void 0 ? void 0 : items.href));\n (0,_utils_uitls__WEBPACK_IMPORTED_MODULE_2__.handleURLChange)((0,_utils_uitls__WEBPACK_IMPORTED_MODULE_2__.getPath)(items === null || items === void 0 ? void 0 : items.href));\n }\n setDropdown(function (prev) {\n return !prev;\n });\n },\n dangerouslySetInnerHTML: {\n __html: (0,_utils_uitls__WEBPACK_IMPORTED_MODULE_2__.generateTopBarMenuDOM)({\n icon: items === null || items === void 0 ? void 0 : items.icon,\n title: items === null || items === void 0 ? void 0 : items.title\n })\n }\n })), /*#__PURE__*/React.createElement(_Dropdown__WEBPACK_IMPORTED_MODULE_1__[\"default\"], {\n depthLevel: depthLevel,\n submenus: Object.values(items === null || items === void 0 ? void 0 : items.submenu),\n dropdown: dropdown,\n setUrl: setUrl\n }));\n }())) : function () {\n var isJsVoid = (0,_utils_uitls__WEBPACK_IMPORTED_MODULE_2__.checkJsVoid)(items === null || items === void 0 ? void 0 : items.href);\n var isExternal = (0,_utils_uitls__WEBPACK_IMPORTED_MODULE_2__.isExternalUrl)(items);\n return /*#__PURE__*/React.createElement(\"a\", _extends({\n href: items !== null && items !== void 0 && items.href && !isJsVoid ? isExternal ? items === null || items === void 0 ? void 0 : items.href : (0,_utils_uitls__WEBPACK_IMPORTED_MODULE_2__.getPath)(items === null || items === void 0 ? void 0 : items.href) : \"#\",\n dangerouslySetInnerHTML: {\n __html: (0,_utils_uitls__WEBPACK_IMPORTED_MODULE_2__.generateTopBarMenuDOM)({\n icon: items === null || items === void 0 ? void 0 : items.icon,\n title: items === null || items === void 0 ? void 0 : items.title\n })\n }\n }, isExternal ? {\n target: \"_blank\"\n } : {}, {\n onClick: function onClick(e) {\n // Allow Ctrl/Cmd/Shift/middle click to open in new tab\n if ((0,_utils_uitls__WEBPACK_IMPORTED_MODULE_2__.isNewTabClick)(e)) {\n return;\n }\n\n // External URLs - let browser handle with target=\"_blank\"\n if (isExternal && !isJsVoid) {\n return;\n }\n e.preventDefault();\n\n // Javascript void - trigger original element click\n if (isJsVoid) {\n return (0,_utils_uitls__WEBPACK_IMPORTED_MODULE_2__.triggerJsVoidClick)(items === null || items === void 0 ? void 0 : items.id);\n }\n\n // Internal URL - update iframe\n if (items !== null && items !== void 0 && items.href) {\n setUrl((0,_utils_uitls__WEBPACK_IMPORTED_MODULE_2__.getPath)(items === null || items === void 0 ? void 0 : items.href));\n (0,_utils_uitls__WEBPACK_IMPORTED_MODULE_2__.handleURLChange)((0,_utils_uitls__WEBPACK_IMPORTED_MODULE_2__.getPath)(items === null || items === void 0 ? void 0 : items.href));\n }\n }\n }));\n }());\n};\n/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (MenuItems);\n\n//# sourceURL=webpack://adminify/./dev/admin/frame/Topbar/components/MenuItems.jsx?");
130 130
131 131 /***/ }),
132 132
133 133 /***/ "./dev/admin/frame/Topbar/components/Search.jsx":
@@ -155,9 +155,9 @@
155 155 !*** ./dev/admin/frame/Topbar/components/TopSecondary.jsx ***!
156 156 \************************************************************/
157 157 /***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
158 158
159 -eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"default\": () => (__WEBPACK_DEFAULT_EXPORT__)\n/* harmony export */ });\n/* harmony import */ var _LightDarkSwitcher__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./LightDarkSwitcher */ \"./dev/admin/frame/Topbar/components/LightDarkSwitcher.jsx\");\n/* harmony import */ var _UserAccount__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./UserAccount */ \"./dev/admin/frame/Topbar/components/UserAccount.jsx\");\n/* harmony import */ var _Search__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./Search */ \"./dev/admin/frame/Topbar/components/Search.jsx\");\n/* harmony import */ var _Comments__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./Comments */ \"./dev/admin/frame/Topbar/components/Comments.jsx\");\n/* harmony import */ var _MenuItems__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ./MenuItems */ \"./dev/admin/frame/Topbar/components/MenuItems.jsx\");\nfunction _typeof(o) { \"@babel/helpers - typeof\"; return _typeof = \"function\" == typeof Symbol && \"symbol\" == typeof Symbol.iterator ? function (o) { return typeof o; } : function (o) { return o && \"function\" == typeof Symbol && o.constructor === Symbol && o !== Symbol.prototype ? \"symbol\" : typeof o; }, _typeof(o); }\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 _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 _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 _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; }\n\n\n\n\n\n\n// Check top secondary values\nfunction getTopSecondaryItems(topSecondarySubmenu) {\n var _ref;\n return (_ref = _toConsumableArray(_typeof(topSecondarySubmenu) === \"object\" ? Object.values(topSecondarySubmenu) : topSecondarySubmenu)) === null || _ref === void 0 || (_ref = _ref.filter(function (item) {\n return item.id !== \"my-account\";\n })) === null || _ref === void 0 || (_ref = _ref.filter(function (item) {\n return item.id !== \"wp-adminify-admin-bar-switcher\";\n })) === null || _ref === void 0 ? void 0 : _ref.filter(function (item) {\n return item.id !== \"adminify_notification_count\";\n });\n}\nfunction TopSecondary(_ref2) {\n var _adminify_admin_bar_d, _getTopSecondaryItems, _getTopSecondaryItems2, _adminify_admin_bar_d2;\n var setShowSearch = _ref2.setShowSearch,\n getWidth = _ref2.getWidth,\n iframeFullReady = _ref2.iframeFullReady,\n setAdminifyColorMode = _ref2.setAdminifyColorMode,\n setUrl = _ref2.setUrl;\n var topSecondarySubmenu = (_adminify_admin_bar_d = adminify_admin_bar_data) === null || _adminify_admin_bar_d === void 0 || (_adminify_admin_bar_d = _adminify_admin_bar_d.data) === null || _adminify_admin_bar_d === void 0 || (_adminify_admin_bar_d = _adminify_admin_bar_d.find(function (menu) {\n return (menu === null || menu === void 0 ? void 0 : menu.id) === \"top-secondary\";\n })) === null || _adminify_admin_bar_d === void 0 ? void 0 : _adminify_admin_bar_d.submenu;\n return /*#__PURE__*/React.createElement(\"div\", {\n className: \"adminify-admin-bar-top-secondary\"\n }, getWidth ? null : /*#__PURE__*/React.createElement(React.Fragment, null, (_getTopSecondaryItems = getTopSecondaryItems(topSecondarySubmenu)) !== null && _getTopSecondaryItems !== void 0 && _getTopSecondaryItems.length ? /*#__PURE__*/React.createElement(\"ul\", {\n className: \"adminify-top-menu\"\n }, (_getTopSecondaryItems2 = getTopSecondaryItems(topSecondarySubmenu)) === null || _getTopSecondaryItems2 === void 0 ? void 0 : _getTopSecondaryItems2.map(function (item, i) {\n var depthLevel = 0;\n if (item.menu_status === false) {\n return null;\n }\n return /*#__PURE__*/React.createElement(_MenuItems__WEBPACK_IMPORTED_MODULE_4__[\"default\"], {\n setUrl: setUrl,\n items: item,\n key: item.key || i,\n depthLevel: depthLevel\n });\n })) : null), !!adminify_admin_bar_data.search && adminify_admin_bar_data.search !== \"0\" ? /*#__PURE__*/React.createElement(_Search__WEBPACK_IMPORTED_MODULE_2__[\"default\"], {\n setShowSearch: setShowSearch\n }) : null, !!adminify_admin_bar_data.notification && adminify_admin_bar_data.notification !== \"0\" ? /*#__PURE__*/React.createElement(_Comments__WEBPACK_IMPORTED_MODULE_3__[\"default\"], {\n iframeFullReady: iframeFullReady\n }) : null, !!adminify_admin_bar_data.light_dark_switcher && adminify_admin_bar_data.light_dark_switcher !== \"0\" ? /*#__PURE__*/React.createElement(_LightDarkSwitcher__WEBPACK_IMPORTED_MODULE_0__[\"default\"], {\n setAdminifyColorMode: setAdminifyColorMode\n }) : null, /*#__PURE__*/React.createElement(\"div\", {\n className: \"wp-adminify--preview\"\n }, /*#__PURE__*/React.createElement(\"a\", {\n className: \"wp-adminify-preview-trigger\",\n href: (_adminify_admin_bar_d2 = adminify_admin_bar_data) === null || _adminify_admin_bar_d2 === void 0 ? void 0 : _adminify_admin_bar_d2.site_url,\n target: \"_blank\"\n }, /*#__PURE__*/React.createElement(\"i\", {\n className: \"dashicons dashicons-visibility\"\n }))), /*#__PURE__*/React.createElement(_UserAccount__WEBPACK_IMPORTED_MODULE_1__[\"default\"], null));\n}\n/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (TopSecondary);\n\n//# sourceURL=webpack://adminify/./dev/admin/frame/Topbar/components/TopSecondary.jsx?");
159 +eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"default\": () => (__WEBPACK_DEFAULT_EXPORT__)\n/* harmony export */ });\n/* harmony import */ var _LightDarkSwitcher__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./LightDarkSwitcher */ \"./dev/admin/frame/Topbar/components/LightDarkSwitcher.jsx\");\n/* harmony import */ var _UserAccount__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./UserAccount */ \"./dev/admin/frame/Topbar/components/UserAccount.jsx\");\n/* harmony import */ var _Search__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./Search */ \"./dev/admin/frame/Topbar/components/Search.jsx\");\n/* harmony import */ var _Comments__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./Comments */ \"./dev/admin/frame/Topbar/components/Comments.jsx\");\n/* harmony import */ var _MenuItems__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ./MenuItems */ \"./dev/admin/frame/Topbar/components/MenuItems.jsx\");\n/* harmony import */ var _utils_uitls__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ../../utils/uitls */ \"./dev/admin/frame/utils/uitls.js\");\nfunction _typeof(o) { \"@babel/helpers - typeof\"; return _typeof = \"function\" == typeof Symbol && \"symbol\" == typeof Symbol.iterator ? function (o) { return typeof o; } : function (o) { return o && \"function\" == typeof Symbol && o.constructor === Symbol && o !== Symbol.prototype ? \"symbol\" : typeof o; }, _typeof(o); }\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 _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 _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 _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; }\n\n\n\n\n\n\n\n// Check top secondary values\nfunction getTopSecondaryItems(topSecondarySubmenu) {\n var _ref;\n return (_ref = _toConsumableArray(_typeof(topSecondarySubmenu) === \"object\" ? Object.values(topSecondarySubmenu) : topSecondarySubmenu)) === null || _ref === void 0 || (_ref = _ref.filter(function (item) {\n return item.id !== \"my-account\";\n })) === null || _ref === void 0 || (_ref = _ref.filter(function (item) {\n return item.id !== \"wp-adminify-admin-bar-switcher\";\n })) === null || _ref === void 0 || (_ref = _ref.filter(function (item) {\n return item.id !== \"adminify_notification_count\";\n })) === null || _ref === void 0 ? void 0 : _ref.filter(function (item) {\n return item.id !== \"adminify-frontend-site-preview\";\n });\n}\nfunction TopSecondary(_ref2) {\n var _adminify_admin_bar_d, _getTopSecondaryItems, _getTopSecondaryItems2, _adminify_admin_bar_d2;\n var setShowSearch = _ref2.setShowSearch,\n getWidth = _ref2.getWidth,\n iframeFullReady = _ref2.iframeFullReady,\n setAdminifyColorMode = _ref2.setAdminifyColorMode,\n setUrl = _ref2.setUrl;\n var topSecondarySubmenu = (_adminify_admin_bar_d = adminify_admin_bar_data) === null || _adminify_admin_bar_d === void 0 || (_adminify_admin_bar_d = _adminify_admin_bar_d.data) === null || _adminify_admin_bar_d === void 0 || (_adminify_admin_bar_d = _adminify_admin_bar_d.find(function (menu) {\n return (menu === null || menu === void 0 ? void 0 : menu.id) === \"top-secondary\";\n })) === null || _adminify_admin_bar_d === void 0 ? void 0 : _adminify_admin_bar_d.submenu;\n return /*#__PURE__*/React.createElement(\"div\", {\n className: \"adminify-admin-bar-top-secondary\"\n }, getWidth ? null : /*#__PURE__*/React.createElement(React.Fragment, null, (_getTopSecondaryItems = getTopSecondaryItems(topSecondarySubmenu)) !== null && _getTopSecondaryItems !== void 0 && _getTopSecondaryItems.length ? /*#__PURE__*/React.createElement(\"ul\", {\n className: \"adminify-top-menu\"\n }, (_getTopSecondaryItems2 = getTopSecondaryItems(topSecondarySubmenu)) === null || _getTopSecondaryItems2 === void 0 ? void 0 : _getTopSecondaryItems2.map(function (item, i) {\n var depthLevel = 0;\n if (item.menu_status === false) {\n return null;\n }\n return /*#__PURE__*/React.createElement(_MenuItems__WEBPACK_IMPORTED_MODULE_4__[\"default\"], {\n setUrl: setUrl,\n items: item,\n key: item.key || i,\n depthLevel: depthLevel\n });\n })) : null), !!adminify_admin_bar_data.search && adminify_admin_bar_data.search !== \"0\" ? /*#__PURE__*/React.createElement(_Search__WEBPACK_IMPORTED_MODULE_2__[\"default\"], {\n setShowSearch: setShowSearch\n }) : null, !!adminify_admin_bar_data.notification && adminify_admin_bar_data.notification !== \"0\" ? /*#__PURE__*/React.createElement(_Comments__WEBPACK_IMPORTED_MODULE_3__[\"default\"], {\n iframeFullReady: iframeFullReady\n }) : null, !!adminify_admin_bar_data.light_dark_switcher && adminify_admin_bar_data.light_dark_switcher !== \"0\" && checkMenuStatus(topSecondarySubmenu, \"wp-adminify-admin-bar-switcher\") ? /*#__PURE__*/React.createElement(_LightDarkSwitcher__WEBPACK_IMPORTED_MODULE_0__[\"default\"], {\n setAdminifyColorMode: setAdminifyColorMode\n }) : null, checkMenuStatus(topSecondarySubmenu, \"adminify-frontend-site-preview\") ? /*#__PURE__*/React.createElement(\"div\", {\n className: \"wp-adminify--preview\"\n }, /*#__PURE__*/React.createElement(\"a\", {\n className: \"wp-adminify-preview-trigger\",\n href: (_adminify_admin_bar_d2 = adminify_admin_bar_data) === null || _adminify_admin_bar_d2 === void 0 ? void 0 : _adminify_admin_bar_d2.site_url,\n target: \"_blank\"\n }, /*#__PURE__*/React.createElement(\"i\", {\n className: \"dashicons dashicons-visibility\"\n }))) : null, checkMenuStatus(topSecondarySubmenu, \"my-account\") ? /*#__PURE__*/React.createElement(_UserAccount__WEBPACK_IMPORTED_MODULE_1__[\"default\"], null) : null);\n}\n/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (TopSecondary);\n\n// For Admin Bar Editor & Default adminify support\nvar checkMenuStatus = function checkMenuStatus(topSecondarySubmenu, menuId) {\n if (Array.isArray(topSecondarySubmenu)) {\n var _topSecondarySubmenu$;\n return (_topSecondarySubmenu$ = topSecondarySubmenu.find(function (item) {\n return item.id === menuId;\n })) !== null && _topSecondarySubmenu$ !== void 0 && _topSecondarySubmenu$.menu_status ? true : false;\n }\n if (topSecondarySubmenu !== null && topSecondarySubmenu !== void 0 && topSecondarySubmenu[menuId]) {\n var _topSecondarySubmenu$2;\n return topSecondarySubmenu !== null && topSecondarySubmenu !== void 0 && (_topSecondarySubmenu$2 = topSecondarySubmenu[menuId]) !== null && _topSecondarySubmenu$2 !== void 0 && _topSecondarySubmenu$2.menu_status ? true : false;\n }\n return true;\n};\n\n//# sourceURL=webpack://adminify/./dev/admin/frame/Topbar/components/TopSecondary.jsx?");
160 160
161 161 /***/ }),
162 162
163 163 /***/ "./dev/admin/frame/Topbar/components/UserAccount.jsx":
@@ -325,9 +325,9 @@
325 325 !*** ./dev/admin/frame/utils/uitls.js ***!
326 326 \****************************************/
327 327 /***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
328 328
329 -eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ changeLightDarkMode: () => (/* binding */ changeLightDarkMode),\n/* harmony export */ checkAdminUrl: () => (/* binding */ checkAdminUrl),\n/* harmony export */ checkJsVoid: () => (/* binding */ checkJsVoid),\n/* harmony export */ findAdminBarNode: () => (/* binding */ findAdminBarNode),\n/* harmony export */ generateTopBarMenuDOM: () => (/* binding */ generateTopBarMenuDOM),\n/* harmony export */ getActiveMenu: () => (/* binding */ getActiveMenu),\n/* harmony export */ getEditProfileMenu: () => (/* binding */ getEditProfileMenu),\n/* harmony export */ getIcon: () => (/* binding */ getIcon),\n/* harmony export */ getLogo: () => (/* binding */ getLogo),\n/* harmony export */ getLogoStyles: () => (/* binding */ getLogoStyles),\n/* harmony export */ getLogoutURL: () => (/* binding */ getLogoutURL),\n/* harmony export */ getPath: () => (/* binding */ getPath),\n/* harmony export */ getUserActionMenu: () => (/* binding */ getUserActionMenu),\n/* harmony export */ handleClick: () => (/* binding */ handleClick),\n/* harmony export */ handleLogout: () => (/* binding */ handleLogout),\n/* harmony export */ handleMenuItemClick: () => (/* binding */ handleMenuItemClick),\n/* harmony export */ handleURLChange: () => (/* binding */ handleURLChange),\n/* harmony export */ isExternalUrl: () => (/* binding */ isExternalUrl),\n/* harmony export */ isImageUrl: () => (/* binding */ isImageUrl),\n/* harmony export */ isNewTabClick: () => (/* binding */ isNewTabClick),\n/* harmony export */ isSubdomain: () => (/* binding */ isSubdomain),\n/* harmony export */ loadGoogleFont: () => (/* binding */ loadGoogleFont),\n/* harmony export */ normalizeCopyDeletePostsMenu: () => (/* binding */ normalizeCopyDeletePostsMenu),\n/* harmony export */ replaceAmpInUrl: () => (/* binding */ replaceAmpInUrl),\n/* harmony export */ setDefaultURL: () => (/* binding */ setDefaultURL),\n/* harmony export */ switcherIcons: () => (/* binding */ switcherIcons),\n/* harmony export */ triggerJsVoidClick: () => (/* binding */ triggerJsVoidClick),\n/* harmony export */ waitForElm: () => (/* binding */ waitForElm)\n/* harmony export */ });\n/* harmony import */ var _icons__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./icons */ \"./dev/admin/frame/utils/icons/index.js\");\nfunction _typeof(o) { \"@babel/helpers - typeof\"; return _typeof = \"function\" == typeof Symbol && \"symbol\" == typeof Symbol.iterator ? function (o) { return typeof o; } : function (o) { return o && \"function\" == typeof Symbol && o.constructor === Symbol && o !== Symbol.prototype ? \"symbol\" : typeof o; }, _typeof(o); }\nfunction _createForOfIteratorHelper(r, e) { var t = \"undefined\" != typeof Symbol && r[Symbol.iterator] || r[\"@@iterator\"]; if (!t) { if (Array.isArray(r) || (t = _unsupportedIterableToArray(r)) || e && r && \"number\" == typeof r.length) { t && (r = t); var _n = 0, F = function F() {}; return { s: F, n: function n() { return _n >= r.length ? { done: !0 } : { done: !1, value: r[_n++] }; }, e: function e(r) { throw r; }, f: F }; } throw new TypeError(\"Invalid attempt to iterate non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\"); } var o, a = !0, u = !1; return { s: function s() { t = t.call(r); }, n: function n() { var r = t.next(); return a = r.done, r; }, e: function e(r) { u = !0, o = r; }, f: function f() { try { a || null == t[\"return\"] || t[\"return\"](); } finally { if (u) throw o; } } }; }\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; }\n\n\n/**\n * Ctrl+Click (Windows/Linux), Cmd+Click (macOS), Shift+Click or middle-button\n * click — the user wants the link in a new tab/window, so handlers must not\n * preventDefault and must let the browser handle the click natively.\n * @param {MouseEvent} e\n * @returns {boolean}\n */\nvar isNewTabClick = function isNewTabClick(e) {\n return !!e && (e.ctrlKey || e.metaKey || e.shiftKey || e.button === 1);\n};\n\n// Navigation Menu\nvar handleMenuItemClick = function handleMenuItemClick(e, href) {\n var refreshFrame = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : false;\n // Allow Ctrl/Cmd/Shift/middle click to open in new tab natively\n if (isNewTabClick(e)) {\n return;\n }\n e.preventDefault();\n if (refreshFrame) {\n document.getElementById(\"frame-adminify-app--iframe\").contentWindow.location.href = href;\n window.history.pushState({}, \"\", href);\n }\n};\n\n// URL Change\nvar handleURLChange = function handleURLChange(href) {\n try {\n // Only pushState for same-origin URLs\n var url = new URL(href, window.location.origin);\n if (url.origin === window.location.origin) {\n window.history.pushState({}, \"\", href);\n }\n } catch (e) {\n // Invalid URL or cross-origin - ignore\n }\n};\n\n// Logo out\nvar handleLogout = function handleLogout() {\n var _adminify_admin_bar_d, _adminify_admin_bar_d2;\n window.location.href = (_adminify_admin_bar_d = adminify_admin_bar_data) === null || _adminify_admin_bar_d === void 0 ? void 0 : _adminify_admin_bar_d.logout_url;\n var url = new URL((_adminify_admin_bar_d2 = adminify_admin_bar_data) === null || _adminify_admin_bar_d2 === void 0 ? void 0 : _adminify_admin_bar_d2.logout_url);\n window.location.href = \"\".concat(url.origin).concat(url.pathname);\n};\nvar getLogoutURL = function getLogoutURL() {\n var _adminify_admin_bar_d3;\n var rawUrl = (_adminify_admin_bar_d3 = adminify_admin_bar_data) === null || _adminify_admin_bar_d3 === void 0 ? void 0 : _adminify_admin_bar_d3.logout_url;\n var solidURL = rawUrl.replace(/&amp;/g, \"&\");\n return solidURL;\n};\n\n// Get Logo\nvar getLogo = function getLogo(data) {\n var imagePath = frame_adminify_menu.image_path;\n var logo = {\n full: \"\",\n mini: \"\",\n text: \"\",\n width: 120,\n height: 32,\n styles: {}\n };\n if ((data === null || data === void 0 ? void 0 : data.admin_ui_mode) === \"dark\") {\n // Dark Logo\n if ((data === null || data === void 0 ? void 0 : data.admin_ui_logo_type) === \"image_logo\") {\n var _data$admin_ui_dark_m, _data$admin_ui_dark_m3, _data$admin_ui_dark_m5, _data$admin_ui_dark_m7;\n if (data !== null && data !== void 0 && (_data$admin_ui_dark_m = data.admin_ui_dark_mode.admin_ui_dark_logo) !== null && _data$admin_ui_dark_m !== void 0 && _data$admin_ui_dark_m.url) {\n var _data$admin_ui_dark_m2;\n logo.full = data === null || data === void 0 || (_data$admin_ui_dark_m2 = data.admin_ui_dark_mode.admin_ui_dark_logo) === null || _data$admin_ui_dark_m2 === void 0 ? void 0 : _data$admin_ui_dark_m2.url;\n } else {\n logo.full = \"\".concat(imagePath, \"logos/logo-text-dark.svg\");\n }\n if (data !== null && data !== void 0 && (_data$admin_ui_dark_m3 = data.admin_ui_dark_mode.mini_admin_ui_dark_logo) !== null && _data$admin_ui_dark_m3 !== void 0 && _data$admin_ui_dark_m3.url) {\n var _data$admin_ui_dark_m4;\n logo.mini = data === null || data === void 0 || (_data$admin_ui_dark_m4 = data.admin_ui_dark_mode.mini_admin_ui_dark_logo) === null || _data$admin_ui_dark_m4 === void 0 ? void 0 : _data$admin_ui_dark_m4.url;\n } else {\n logo.mini = \"\".concat(imagePath, \"logos/mini-logo-dark.svg\");\n }\n if (data !== null && data !== void 0 && (_data$admin_ui_dark_m5 = data.admin_ui_dark_mode) !== null && _data$admin_ui_dark_m5 !== void 0 && (_data$admin_ui_dark_m5 = _data$admin_ui_dark_m5.dark_logo_size) !== null && _data$admin_ui_dark_m5 !== void 0 && _data$admin_ui_dark_m5.width) {\n var _data$admin_ui_dark_m6;\n logo.width = data === null || data === void 0 || (_data$admin_ui_dark_m6 = data.admin_ui_dark_mode) === null || _data$admin_ui_dark_m6 === void 0 || (_data$admin_ui_dark_m6 = _data$admin_ui_dark_m6.dark_logo_size) === null || _data$admin_ui_dark_m6 === void 0 ? void 0 : _data$admin_ui_dark_m6.width;\n }\n if (data !== null && data !== void 0 && (_data$admin_ui_dark_m7 = data.admin_ui_dark_mode) !== null && _data$admin_ui_dark_m7 !== void 0 && (_data$admin_ui_dark_m7 = _data$admin_ui_dark_m7.dark_logo_size) !== null && _data$admin_ui_dark_m7 !== void 0 && _data$admin_ui_dark_m7.height) {\n var _data$admin_ui_dark_m8;\n logo.height = data === null || data === void 0 || (_data$admin_ui_dark_m8 = data.admin_ui_dark_mode) === null || _data$admin_ui_dark_m8 === void 0 || (_data$admin_ui_dark_m8 = _data$admin_ui_dark_m8.dark_logo_size) === null || _data$admin_ui_dark_m8 === void 0 ? void 0 : _data$admin_ui_dark_m8.height;\n }\n } else {\n var _data$admin_ui_dark_m9, _data$admin_ui_dark_m10, _data$admin_ui_dark_m11;\n logo.text = data === null || data === void 0 || (_data$admin_ui_dark_m9 = data.admin_ui_dark_mode) === null || _data$admin_ui_dark_m9 === void 0 ? void 0 : _data$admin_ui_dark_m9.admin_ui_dark_logo_text;\n var logo_style = data === null || data === void 0 || (_data$admin_ui_dark_m10 = data.admin_ui_dark_mode) === null || _data$admin_ui_dark_m10 === void 0 ? void 0 : _data$admin_ui_dark_m10.admin_ui_dark_logo_text_typo;\n logo.styles = getLogoStyles(logo_style);\n if (data !== null && data !== void 0 && (_data$admin_ui_dark_m11 = data.admin_ui_dark_mode.mini_admin_ui_dark_logo) !== null && _data$admin_ui_dark_m11 !== void 0 && _data$admin_ui_dark_m11.url) {\n var _data$admin_ui_dark_m12;\n logo.mini = data === null || data === void 0 || (_data$admin_ui_dark_m12 = data.admin_ui_dark_mode.mini_admin_ui_dark_logo) === null || _data$admin_ui_dark_m12 === void 0 ? void 0 : _data$admin_ui_dark_m12.url;\n } else {\n logo.mini = \"\".concat(imagePath, \"logos/mini-logo-dark.svg\");\n }\n }\n } else {\n // Light Logo\n if ((data === null || data === void 0 ? void 0 : data.admin_ui_logo_type) === \"image_logo\") {\n var _data$admin_ui_light_, _data$admin_ui_light_3, _data$admin_ui_light_5, _data$admin_ui_light_7;\n if (data !== null && data !== void 0 && (_data$admin_ui_light_ = data.admin_ui_light_mode.admin_ui_light_logo) !== null && _data$admin_ui_light_ !== void 0 && _data$admin_ui_light_.url) {\n var _data$admin_ui_light_2;\n logo.full = data === null || data === void 0 || (_data$admin_ui_light_2 = data.admin_ui_light_mode.admin_ui_light_logo) === null || _data$admin_ui_light_2 === void 0 ? void 0 : _data$admin_ui_light_2.url;\n } else {\n logo.full = \"\".concat(imagePath, \"logos/logo-text-light.svg\");\n }\n if (data !== null && data !== void 0 && (_data$admin_ui_light_3 = data.admin_ui_light_mode.mini_admin_ui_light_logo) !== null && _data$admin_ui_light_3 !== void 0 && _data$admin_ui_light_3.url) {\n var _data$admin_ui_light_4;\n logo.mini = data === null || data === void 0 || (_data$admin_ui_light_4 = data.admin_ui_light_mode.mini_admin_ui_light_logo) === null || _data$admin_ui_light_4 === void 0 ? void 0 : _data$admin_ui_light_4.url;\n } else {\n logo.mini = \"\".concat(imagePath, \"logos/mini-logo-light.svg\");\n }\n if (data !== null && data !== void 0 && (_data$admin_ui_light_5 = data.admin_ui_light_mode) !== null && _data$admin_ui_light_5 !== void 0 && (_data$admin_ui_light_5 = _data$admin_ui_light_5.light_logo_size) !== null && _data$admin_ui_light_5 !== void 0 && _data$admin_ui_light_5.width) {\n var _data$admin_ui_light_6;\n logo.width = data === null || data === void 0 || (_data$admin_ui_light_6 = data.admin_ui_light_mode) === null || _data$admin_ui_light_6 === void 0 || (_data$admin_ui_light_6 = _data$admin_ui_light_6.light_logo_size) === null || _data$admin_ui_light_6 === void 0 ? void 0 : _data$admin_ui_light_6.width;\n }\n if (data !== null && data !== void 0 && (_data$admin_ui_light_7 = data.admin_ui_light_mode) !== null && _data$admin_ui_light_7 !== void 0 && (_data$admin_ui_light_7 = _data$admin_ui_light_7.light_logo_size) !== null && _data$admin_ui_light_7 !== void 0 && _data$admin_ui_light_7.height) {\n var _data$admin_ui_light_8;\n logo.height = data === null || data === void 0 || (_data$admin_ui_light_8 = data.admin_ui_light_mode) === null || _data$admin_ui_light_8 === void 0 || (_data$admin_ui_light_8 = _data$admin_ui_light_8.light_logo_size) === null || _data$admin_ui_light_8 === void 0 ? void 0 : _data$admin_ui_light_8.height;\n }\n } else {\n var _data$admin_ui_light_9, _data$admin_ui_light_10, _data$admin_ui_light_11;\n logo.text = data === null || data === void 0 || (_data$admin_ui_light_9 = data.admin_ui_light_mode) === null || _data$admin_ui_light_9 === void 0 ? void 0 : _data$admin_ui_light_9.admin_ui_light_logo_text;\n var _logo_style = data === null || data === void 0 || (_data$admin_ui_light_10 = data.admin_ui_light_mode) === null || _data$admin_ui_light_10 === void 0 ? void 0 : _data$admin_ui_light_10.admin_ui_light_logo_text_typo;\n logo.styles = getLogoStyles(_logo_style);\n if (data !== null && data !== void 0 && (_data$admin_ui_light_11 = data.admin_ui_light_mode.mini_admin_ui_light_logo) !== null && _data$admin_ui_light_11 !== void 0 && _data$admin_ui_light_11.url) {\n var _data$admin_ui_light_12;\n logo.mini = data === null || data === void 0 || (_data$admin_ui_light_12 = data.admin_ui_light_mode.mini_admin_ui_light_logo) === null || _data$admin_ui_light_12 === void 0 ? void 0 : _data$admin_ui_light_12.url;\n } else {\n logo.mini = \"\".concat(imagePath, \"logos/mini-logo-light.svg\");\n }\n }\n }\n return logo;\n};\n\n/**\n * Web-safe fonts that don't need to be loaded from Google\n */\nvar WEB_SAFE_FONTS = [\"Arial\", \"Helvetica\", \"Times New Roman\", \"Times\", \"Courier New\", \"Courier\", \"Verdana\", \"Georgia\", \"Palatino\", \"Garamond\", \"Bookman\", \"Trebuchet MS\", \"Arial Black\", \"Impact\", \"Comic Sans MS\", \"system-ui\", \"sans-serif\", \"serif\", \"monospace\"];\n\n/**\n * Convert font weight string to numeric value for Google Fonts\n * @param {string|number} weight - The font weight\n * @returns {string} - Numeric font weight\n */\nfunction normalizeFontWeight(weight) {\n if (!weight) return \"400\";\n\n // If already a number or numeric string, return it\n if (!isNaN(weight)) return String(weight);\n\n // Map common weight names to numeric values\n var weightMap = {\n \"thin\": \"100\",\n \"hairline\": \"100\",\n \"extra-light\": \"200\",\n \"extralight\": \"200\",\n \"ultra-light\": \"200\",\n \"light\": \"300\",\n \"normal\": \"400\",\n \"regular\": \"400\",\n \"medium\": \"500\",\n \"semi-bold\": \"600\",\n \"semibold\": \"600\",\n \"demi-bold\": \"600\",\n \"bold\": \"700\",\n \"extra-bold\": \"800\",\n \"extrabold\": \"800\",\n \"ultra-bold\": \"800\",\n \"black\": \"900\",\n \"heavy\": \"900\"\n };\n return weightMap[String(weight).toLowerCase()] || \"400\";\n}\n\n/**\n * Load Google Font dynamically - uses local font URLs provided by PHP\n * PHP handles font download on page load, JS just creates link tags\n * @param {string} fontFamily - The font family name to load\n * @param {string} fontWeight - The font weight (optional)\n */\nfunction loadGoogleFont(fontFamily) {\n var _window$PXLBSADMINIFY;\n var fontWeight = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : \"400\";\n if (!fontFamily || fontFamily === \"\") return;\n\n // Skip web-safe fonts\n if (WEB_SAFE_FONTS.some(function (f) {\n return fontFamily.toLowerCase() === f.toLowerCase();\n })) {\n return;\n }\n\n // Create a unique ID for this font\n var fontSlug = fontFamily.replace(/\\s+/g, \"-\").toLowerCase();\n var fontId = \"adminify-local-font-\".concat(fontSlug);\n\n // Check if font is already loaded\n if (document.getElementById(fontId)) return;\n\n // Get local font URL from PHP-provided config\n var localFontsConfig = (_window$PXLBSADMINIFY = window.PXLBSADMINIFY_ADMIN) === null || _window$PXLBSADMINIFY === void 0 ? void 0 : _window$PXLBSADMINIFY.local_fonts;\n if (localFontsConfig !== null && localFontsConfig !== void 0 && localFontsConfig.base_url) {\n var localFontUrl = \"\".concat(localFontsConfig.base_url, \"/\").concat(fontSlug, \"/\").concat(fontSlug, \".css\");\n\n // Create and append the link element\n var link = document.createElement(\"link\");\n link.id = fontId;\n link.rel = \"stylesheet\";\n link.href = localFontUrl;\n document.head.appendChild(link);\n }\n}\n\n/**\n * Get Logo Styles\n */\nfunction getLogoStyles(logo_style) {\n // Load the Google Font if font-family is specified\n // The loadGoogleFont function will skip web-safe fonts automatically\n if (logo_style !== null && logo_style !== void 0 && logo_style[\"font-family\"]) {\n loadGoogleFont(logo_style[\"font-family\"], (logo_style === null || logo_style === void 0 ? void 0 : logo_style[\"font-weight\"]) || \"400\");\n }\n return {\n fontFamily: logo_style === null || logo_style === void 0 ? void 0 : logo_style[\"font-family\"],\n fontWeight: logo_style === null || logo_style === void 0 ? void 0 : logo_style[\"font-weight\"],\n fontSize: logo_style !== null && logo_style !== void 0 && logo_style[\"font-size\"] ? (logo_style === null || logo_style === void 0 ? void 0 : logo_style[\"font-size\"]) + (logo_style === null || logo_style === void 0 ? void 0 : logo_style[\"unit\"]) : \"\",\n letterSpacing: logo_style === null || logo_style === void 0 ? void 0 : logo_style[\"letter-spacing\"],\n color: logo_style === null || logo_style === void 0 ? void 0 : logo_style[\"color\"]\n };\n}\n\n/**\n * Handle click\n * @param {css selector} el\n * @param {function} callback\n * @returns\n */\nfunction handleClick(el, callback) {\n return el.addEventListener(\"click\", callback);\n}\n\n// Switcher icons\nvar switcherIcons = {\n light: /*#__PURE__*/React.createElement(\"svg\", {\n viewBox: \"0 0 24 24\",\n width: \"20\",\n height: \"24\",\n className: \"lightIcon\"\n }, /*#__PURE__*/React.createElement(\"path\", {\n fill: \"var(--adminify-menu-text-color)\",\n d: \"M12,9c1.65,0,3,1.35,3,3s-1.35,3-3,3s-3-1.35-3-3S10.35,9,12,9 M12,7c-2.76,0-5,2.24-5,5s2.24,5,5,5s5-2.24,5-5 S14.76,7,12,7L12,7z M2,13l2,0c0.55,0,1-0.45,1-1s-0.45-1-1-1l-2,0c-0.55,0-1,0.45-1,1S1.45,13,2,13z M20,13l2,0c0.55,0,1-0.45,1-1 s-0.45-1-1-1l-2,0c-0.55,0-1,0.45-1,1S19.45,13,20,13z M11,2v2c0,0.55,0.45,1,1,1s1-0.45,1-1V2c0-0.55-0.45-1-1-1S11,1.45,11,2z M11,20v2c0,0.55,0.45,1,1,1s1-0.45,1-1v-2c0-0.55-0.45-1-1-1C11.45,19,11,19.45,11,20z M5.99,4.58c-0.39-0.39-1.03-0.39-1.41,0 c-0.39,0.39-0.39,1.03,0,1.41l1.06,1.06c0.39,0.39,1.03,0.39,1.41,0s0.39-1.03,0-1.41L5.99,4.58z M18.36,16.95 c-0.39-0.39-1.03-0.39-1.41,0c-0.39,0.39-0.39,1.03,0,1.41l1.06,1.06c0.39,0.39,1.03,0.39,1.41,0c0.39-0.39,0.39-1.03,0-1.41 L18.36,16.95z M19.42,5.99c0.39-0.39,0.39-1.03,0-1.41c-0.39-0.39-1.03-0.39-1.41,0l-1.06,1.06c-0.39,0.39-0.39,1.03,0,1.41 s1.03,0.39,1.41,0L19.42,5.99z M7.05,18.36c0.39-0.39,0.39-1.03,0-1.41c-0.39-0.39-1.03-0.39-1.41,0l-1.06,1.06 c-0.39,0.39-0.39,1.03,0,1.41s1.03,0.39,1.41,0L7.05,18.36z\"\n })),\n dark: /*#__PURE__*/React.createElement(\"svg\", {\n viewBox: \"0 0 24 24\",\n width: \"20\",\n height: \"24\",\n className: \"darkIcon\"\n }, /*#__PURE__*/React.createElement(\"path\", {\n fill: \"var(--adminify-menu-text-color)\",\n d: \"M9.37,5.51C9.19,6.15,9.1,6.82,9.1,7.5c0,4.08,3.32,7.4,7.4,7.4c0.68,0,1.35-0.09,1.99-0.27C17.45,17.19,14.93,19,12,19 c-3.86,0-7-3.14-7-7C5,9.07,6.81,6.55,9.37,5.51z M12,3c-4.97,0-9,4.03-9,9s4.03,9,9,9s9-4.03,9-9c0-0.46-0.04-0.92-0.1-1.36 c-0.98,1.37-2.58,2.26-4.4,2.26c-2.98,0-5.4-2.42-5.4-5.4c0-1.81,0.89-3.42,2.26-4.4C12.92,3.04,12.46,3,12,3L12,3z\"\n })),\n system: /*#__PURE__*/React.createElement(\"svg\", {\n width: \"16\",\n height: \"16\",\n viewBox: \"0 0 22 18\",\n fill: \"none\",\n xmlns: \"http://www.w3.org/2000/svg\",\n className: \"systemIcon\"\n }, /*#__PURE__*/React.createElement(\"path\", {\n d: \"M20 13V4.2C20 3.0799 20 2.51984 19.782 2.09202C19.5903 1.71569 19.2843 1.40973 18.908 1.21799C18.4802 1 17.9201 1 16.8 1H5.2C4.07989 1 3.51984 1 3.09202 1.21799C2.71569 1.40973 2.40973 1.71569 2.21799 2.09202C2 2.51984 2 3.0799 2 4.2V13M3.66667 17H18.3333C18.9533 17 19.2633 17 19.5176 16.9319C20.2078 16.7469 20.7469 16.2078 20.9319 15.5176C21 15.2633 21 14.9533 21 14.3333C21 14.0233 21 13.8683 20.9659 13.7412C20.8735 13.3961 20.6039 13.1265 20.2588 13.0341C20.1317 13 19.9767 13 19.6667 13H2.33333C2.02334 13 1.86835 13 1.74118 13.0341C1.39609 13.1265 1.12654 13.3961 1.03407 13.7412C1 13.8683 1 14.0233 1 14.3333C1 14.9533 1 15.2633 1.06815 15.5176C1.25308 16.2078 1.79218 16.7469 2.48236 16.9319C2.73669 17 3.04669 17 3.66667 17Z\",\n stroke: \"var(--adminify-menu-text-color)\",\n strokeWidth: \"2\",\n strokeLinecap: \"round\",\n strokeLinejoin: \"round\"\n }))\n};\n\n// Set Light Dark Mode\nvar changeLightDarkMode = function changeLightDarkMode(mode) {\n jQuery.ajax({\n url: PXLBSADMINIFY_FRAME.ajax_url,\n type: \"post\",\n data: {\n action: \"pxlbsadminify_color_mode\",\n security: PXLBSADMINIFY_FRAME.security_nonce,\n key: \"color_mode\",\n value: mode\n }\n });\n};\n\n/**\n * Retrieves the appropriate icon for a given menu item based on its properties.\n * - If the layout type is horizontal and the menu type is text-only, returns an empty string.\n * - Supports various icon formats: base64 data URIs, image file extensions, dashicons, and font awesome icons.\n * - Defaults to displaying the first character of the menu title if no icon is specified.\n *\n * @param {Object} menu - The menu item containing icon and title properties.\n * @param {boolean} getWidth - A flag indicating if width should be considered.\n * @returns {string} - The HTML string representing the menu icon.\n */\nfunction getIcon(menu, getWidth) {\n var menuLayoutSettings = frame_adminify_menu.menu_layout_settings;\n\n // Check if icon rendering is skipped for text-only horizontal menu type\n if ((menuLayoutSettings === null || menuLayoutSettings === void 0 ? void 0 : menuLayoutSettings.horz_menu_type) === \"text_only\" && (menuLayoutSettings === null || menuLayoutSettings === void 0 ? void 0 : menuLayoutSettings.layout_type) === \"horizontal\" && getWidth === false) {\n return \"\";\n }\n var _ref = menu || {},\n icon = _ref.icon,\n title = _ref.title;\n // Determine the icon type and return corresponding HTML\n if (/data:image/g.test(icon)) {\n // Handle base64 data URIs\n return \"<span class=\\\"frame-adminify-menu-image\\\" style=\\\"mask-image: url(\".concat(icon, \")\\\"></span>\");\n } else if (/\\.(jpg|jpeg|png|gif|bmp|webp|svg)$/i.test(icon)) {\n // Handle image file extensions\n return \"<span class=\\\"frame-adminify-menu-image\\\">\\n <img src=\\\"\".concat(icon, \"\\\" alt=\\\"menu icon\\\" />\\n </span>\");\n } else if (/dashicons/g.test(icon)) {\n // Handle dashicons\n return _icons__WEBPACK_IMPORTED_MODULE_0__.dashboardIcons !== null && _icons__WEBPACK_IMPORTED_MODULE_0__.dashboardIcons !== void 0 && _icons__WEBPACK_IMPORTED_MODULE_0__.dashboardIcons[icon] ? \"<span class=\\\"frame-adminify-menu-icon\\\">\".concat(_icons__WEBPACK_IMPORTED_MODULE_0__.dashboardIcons[icon], \"</span>\") : \"<span class=\\\"frame-adminify-menu-icon dashicons \".concat(icon, \"\\\"></span>\");\n } else if (/fa-/g.test(menu === null || menu === void 0 ? void 0 : menu.icon)) {\n // Handle FontAwesome icons (fa-)\n return \"<span class=\\\"frame-adminify-menu-icon fas \".concat(menu.icon, \"\\\"></span>\");\n } else if (/icon-/g.test(menu === null || menu === void 0 ? void 0 : menu.icon)) {\n // Handle Simple Line Icons (icon-)\n return \"<span class=\\\"frame-adminify-menu-icon \".concat(menu.icon, \"\\\"></span>\");\n }\n\n // Default: Display the first character of the menu title\n return \"<span class=\\\"frame-adminify-menu-icon-symbol\\\">\".concat((title === null || title === void 0 ? void 0 : title.charAt(0)) || '', \"</span>\");\n}\n\n// get Active Menu\nvar getActiveMenu = function getActiveMenu(menus, isSub, isURL) {\n var url = isURL ? isURL : window.location.href;\n var menuId = \"\";\n var submenuId = \"\";\n for (var menuKey in menus) {\n if (Object.hasOwnProperty.call(menus, menuKey)) {\n var _menu$children;\n var menu = menus[menuKey];\n if ((menu === null || menu === void 0 || (_menu$children = menu.children) === null || _menu$children === void 0 ? void 0 : _menu$children.length) === 0 && (menu === null || menu === void 0 ? void 0 : menu.url) === url) {\n // Active menu without Submenu\n menuId = menu === null || menu === void 0 ? void 0 : menu.key;\n } else {\n // Active Menu With Submenu\n for (var submenuKey in menu === null || menu === void 0 ? void 0 : menu.children) {\n if (Object.hasOwnProperty.call(menu === null || menu === void 0 ? void 0 : menu.children, submenuKey)) {\n var submenu = menu === null || menu === void 0 ? void 0 : menu.children[submenuKey];\n var clean_url = url.substring(0, url.indexOf(\"#\"));\n if ((submenu === null || submenu === void 0 ? void 0 : submenu.url) === url || (submenu === null || submenu === void 0 ? void 0 : submenu.url) === clean_url) {\n menuId = menu === null || menu === void 0 ? void 0 : menu.key;\n submenuId = submenu === null || submenu === void 0 ? void 0 : submenu.key;\n }\n }\n }\n }\n }\n }\n if (!!isSub) {\n return submenuId;\n }\n return [menuId];\n};\n\n// Set Default URL\nvar setDefaultURL = function setDefaultURL(href) {\n var existing_href = window.location.href;\n var url = new URL(existing_href);\n if (!href.includes(url.origin) || url.pathname.length > 10) {\n window.history.pushState({}, \"\", existing_href);\n return existing_href;\n } else {\n window.history.pushState({}, \"\", href);\n return href;\n }\n};\n\n// Decode URL\nfunction replaceAmpInUrl(fullUrl) {\n var url = new URL(fullUrl);\n var queryString = url.search;\n var decodedQueryString = decodeURIComponent(queryString).replace(/&amp;/g, \"&\");\n url.search = decodedQueryString;\n return url.toString();\n}\nvar isSubdomain = function isSubdomain(url) {\n if (/(?:(http(s?))?:\\/\\/)?(?:www\\.)?([a-zA-Z0-9-]+\\.)[a-zA-Z0-9-]+\\.[a-zA-Z]{2,}/i.test(url)) {\n return true;\n }\n return false;\n};\nvar getPath = function getPath(url) {\n if (/(http(s?)):\\/\\//i.test(url)) {\n if (isSubdomain(url)) return url;\n var decodedURL = sanitizeURL(url);\n var urlObj = new URL(decodedURL);\n return \"\".concat(urlObj === null || urlObj === void 0 ? void 0 : urlObj.pathname).concat(urlObj === null || urlObj === void 0 ? void 0 : urlObj.search);\n }\n return url;\n};\n\n// Recommended approach\nfunction sanitizeURL(url) {\n // Decode HTML entities\n var textArea = document.createElement('textarea');\n textArea.innerHTML = url;\n var decoded = textArea.value;\n\n // Validate and return\n try {\n new URL(decoded);\n return decoded;\n } catch (_unused) {\n // If still invalid, try to fix common issues\n return decoded.replace(/&#038;/g, '&').replace(/&amp;/g, '&');\n }\n}\n\n/**\n *\n * @param {CSS} selector\n * @returns exits DOM\n */\nfunction waitForElm(selector) {\n return new Promise(function (resolve) {\n if (document.querySelector(selector)) {\n return resolve(document.querySelector(selector));\n }\n var observer = new MutationObserver(function (mutations) {\n if (document.querySelector(selector)) {\n observer.disconnect();\n resolve(document.querySelector(selector));\n }\n });\n observer.observe(document.body, {\n childList: true,\n subtree: true\n });\n });\n}\nvar checkAdminUrl = function checkAdminUrl() {\n var _adminify_admin_bar_d4;\n var url = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : \"\";\n var admin_url = (_adminify_admin_bar_d4 = adminify_admin_bar_data) === null || _adminify_admin_bar_d4 === void 0 ? void 0 : _adminify_admin_bar_d4.admin_url;\n return url.includes(admin_url);\n};\n\n/**\n * Normalize Menu Title\n * @param {*} title \n * @returns string\n */\nfunction normalizeCopyDeletePostsMenu(title) {\n if (!title || typeof title !== 'string') return title;\n var temp = document.createElement('div');\n temp.innerHTML = title;\n\n // Check if there's direct text + span together (like \"Plugins <span>...</span>\")\n var hasDirectText = Array.from(temp.childNodes).some(function (node) {\n return node.nodeType === Node.TEXT_NODE && node.textContent.trim() !== '';\n });\n var hasSpan = temp.querySelector('span') !== null;\n\n // If both direct text and span exist, return original\n if (hasDirectText && hasSpan) {\n return title;\n }\n\n // If only a span with text inside, extract the text\n if (temp.children.length === 1 && temp.children[0].tagName === 'SPAN') {\n var span = temp.children[0];\n if (span.children.length === 0) {\n return span.textContent;\n }\n }\n return title;\n}\nfunction checkJsVoid() {\n var href = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : \"\";\n if (!href) return false;\n if (href.includes(\"avascript:void\")) return true;\n return false;\n}\n\n/**\n * Trigger click on original WordPress admin bar element for javascript:void links\n * This enables compatibility with plugins that use javascript:void(0) hrefs\n * @param {string} itemId - The menu item ID (e.g., 'wpdn-add-note')\n * @returns {boolean} - Returns true if click was triggered successfully\n */\nfunction triggerJsVoidClick(itemId) {\n var _iframe$contentWindow;\n if (!itemId) return false;\n var iframe = document.getElementById(\"frame-adminify-app--iframe\");\n var iframeDoc = (iframe === null || iframe === void 0 ? void 0 : iframe.contentDocument) || (iframe === null || iframe === void 0 || (_iframe$contentWindow = iframe.contentWindow) === null || _iframe$contentWindow === void 0 ? void 0 : _iframe$contentWindow.document);\n\n // Try to find and click the element inside the iframe first\n if (iframeDoc) {\n var iframeElement = iframeDoc.querySelector(\"#wp-admin-bar-\".concat(itemId, \" a\"));\n if (iframeElement) {\n // Click the element inside iframe\n iframeElement.click();\n\n // Handle AJAX-based actions: wait for completion, refresh iframe, scroll to new content\n handleJsVoidAjaxAction(iframe, itemId);\n return true;\n }\n }\n\n // Fallback: Find the original WordPress admin bar element in parent\n var originalElement = document.querySelector(\"#wp-admin-bar-\".concat(itemId, \" a\"));\n if (originalElement) {\n originalElement.click();\n return true;\n }\n return false;\n}\n\n/**\n * Handle javascript:void AJAX actions generically\n * Waits for AJAX to complete, refreshes iframe, and scrolls to new content\n * @param {HTMLIFrameElement} iframe - The iframe element\n * @param {string} itemId - The menu item ID for context\n */\nfunction handleJsVoidAjaxAction(iframe, itemId) {\n var iframeWindow = iframe === null || iframe === void 0 ? void 0 : iframe.contentWindow;\n if (!iframeWindow || !iframeWindow.jQuery) return;\n\n // Use jQuery's ajaxStop to detect when all AJAX requests complete\n iframeWindow.jQuery(document).one('ajaxStop', function () {\n // Small delay to ensure DOM is updated\n setTimeout(function () {\n // Store scroll target info before refresh\n var scrollTarget = getScrollTargetSelector(itemId, iframeWindow.document);\n\n // Refresh the iframe\n iframe.contentWindow.location.reload();\n\n // After iframe loads, scroll to the new content\n iframe.onload = function () {\n setTimeout(function () {\n scrollToNewContent(iframe, scrollTarget);\n }, 300);\n };\n }, 100);\n });\n}\n\n/**\n * Get selector for scroll target based on plugin/action type\n * @param {string} itemId - The menu item ID\n * @param {Document} doc - The document to search in\n * @returns {object} - Scroll target info\n */\nfunction getScrollTargetSelector(itemId, doc) {\n // Map of known plugins and their new content selectors\n var pluginSelectors = {\n 'wpdn-add-note': {\n container: '#postbox-container-1 #normal-sortables',\n itemPrefix: 'note_',\n findLatest: true\n }\n // add more plugin support...\n };\n var config = pluginSelectors[itemId];\n if (config && config.findLatest) {\n // Find the latest item ID before refresh\n var container = doc.querySelector(config.container);\n if (container) {\n var items = container.querySelectorAll(\"[id^=\\\"\".concat(config.itemPrefix, \"\\\"]\"));\n if (items.length > 0) {\n // Get the highest ID (newest item)\n var maxId = 0;\n items.forEach(function (item) {\n var id = parseInt(item.id.replace(config.itemPrefix, ''), 10);\n if (id > maxId) maxId = id;\n });\n return {\n selector: \"#\".concat(config.itemPrefix).concat(maxId),\n isNew: true,\n prefix: config.itemPrefix\n };\n }\n }\n }\n return {\n selector: null,\n itemId: itemId\n };\n}\n\n/**\n * Scroll to newly added content in iframe after refresh\n * @param {HTMLIFrameElement} iframe - The iframe element\n * @param {object} scrollTarget - The scroll target info\n */\nfunction scrollToNewContent(iframe, scrollTarget) {\n var _iframe$contentWindow2;\n var iframeDoc = (iframe === null || iframe === void 0 ? void 0 : iframe.contentDocument) || (iframe === null || iframe === void 0 || (_iframe$contentWindow2 = iframe.contentWindow) === null || _iframe$contentWindow2 === void 0 ? void 0 : _iframe$contentWindow2.document);\n if (!iframeDoc) return;\n if (scrollTarget.isNew && scrollTarget.prefix) {\n // Find the newest item (highest ID) after refresh\n var items = iframeDoc.querySelectorAll(\"[id^=\\\"\".concat(scrollTarget.prefix, \"\\\"]\"));\n var newestElement = null;\n var maxId = 0;\n items.forEach(function (item) {\n var id = parseInt(item.id.replace(scrollTarget.prefix, ''), 10);\n if (id > maxId) {\n maxId = id;\n newestElement = item;\n }\n });\n if (newestElement) {\n newestElement.scrollIntoView({\n behavior: 'smooth',\n block: 'center'\n });\n // Add highlight effect\n newestElement.style.transition = 'box-shadow 0.3s ease';\n newestElement.style.boxShadow = '0 0 10px 3px rgba(0, 123, 255, 0.5)';\n setTimeout(function () {\n newestElement.style.boxShadow = '';\n }, 2000);\n return;\n }\n }\n\n // Fallback: scroll to specific selector if provided\n if (scrollTarget.selector) {\n var element = iframeDoc.querySelector(scrollTarget.selector);\n if (element) {\n element.scrollIntoView({\n behavior: 'smooth',\n block: 'center'\n });\n }\n }\n}\n\n/**\n * Check if a string is an image URL\n * @param {string} str - The string to check\n * @returns {boolean} - True if string is an image URL\n */\nfunction isImageUrl(str) {\n if (!str || typeof str !== 'string') return false;\n\n // Check for base64 data URI\n if (/^data:image\\//i.test(str)) return true;\n\n // Check for image file extensions\n if (/\\.(jpg|jpeg|png|gif|bmp|webp|svg|ico)(\\?.*)?$/i.test(str)) return true;\n\n // Check for URL patterns that look like images\n if (/^(https?:)?\\/\\/.+\\.(jpg|jpeg|png|gif|bmp|webp|svg|ico)(\\?.*)?$/i.test(str)) return true;\n return false;\n}\n\n/**\n * Generate icon HTML based on icon type\n * @param {string} icon - Icon class name or image URL\n * @returns {string} - HTML string for the icon\n */\nfunction generateIconHTML(icon) {\n if (!icon) return '';\n\n // Check if icon is an image URL\n if (isImageUrl(icon)) {\n return \"<img width=\\\"20\\\" height=\\\"20\\\" src=\\\"\".concat(icon, \"\\\" alt=\\\"menu icon\\\" style=\\\"width: 20px; height: 20px; object-fit: contain;\\\" />\");\n }\n\n // Otherwise treat as icon class\n return \"<span class=\\\"\".concat(icon, \"\\\"></span>\");\n}\n\n/**\n * Generate TopBar Menu DOM HTML\n * @param {Object} options - Menu options\n * @param {string|null} options.icon - Icon class name or image URL\n * @param {string} options.title - Menu title (can contain HTML)\n * @returns {string} - Generated HTML string\n */\nfunction generateTopBarMenuDOM(_ref2) {\n var _ref2$icon = _ref2.icon,\n icon = _ref2$icon === void 0 ? null : _ref2$icon,\n _ref2$title = _ref2.title,\n title = _ref2$title === void 0 ? \"\" : _ref2$title;\n var safeTitle = title || \"\";\n var trimmedTitle = safeTitle.trim();\n\n // Generate icon HTML from icon property\n var iconHTML = generateIconHTML(icon);\n var hasIconProperty = iconHTML !== '';\n\n // Check if title is a complete block-level element (div) from plugins like Yoast\n // These should be rendered as-is to preserve plugin CSS styling\n var isCompleteBlockElement = /^<div\\b[^>]*>[\\s\\S]*<\\/div>$/i.test(trimmedTitle);\n\n // Check if title contains inline HTML elements (span, img, etc.) mixed with text\n var hasInlineHTMLInTitle = /<(span|img|svg|i|a)\\b/i.test(safeTitle);\n\n // Generate title HTML\n var titleHTML;\n if (isCompleteBlockElement) {\n // Plugin HTML like Yoast - render as-is to preserve their CSS classes\n titleHTML = trimmedTitle;\n } else if (hasInlineHTMLInTitle) {\n // Mixed content like \"<span class='ab-icon'></span><span>Text</span>\"\n var cleanedTitle = safeTitle.replaceAll('&nbsp;', '');\n\n // If icon property exists, remove ab-icon and img tags from title to avoid duplicates\n if (hasIconProperty) {\n // Remove ab-icon spans\n cleanedTitle = cleanedTitle.replace(/<span[^>]*class=[\"'][^\"']*ab-icon[^\"']*[\"'][^>]*>[\\s\\S]*?<\\/span>/gi, '');\n // Remove img tags\n cleanedTitle = cleanedTitle.replace(/<img[^>]*>/gi, '');\n }\n titleHTML = \"<div class=\\\"adminify-top-menu-item-has-icon\\\" style=\\\"display: inline-flex; align-items: center; flex-wrap: wrap; gap: 8px;\\\">\".concat(cleanedTitle, \"</div>\");\n } else {\n titleHTML = \"<span>\".concat(safeTitle, \"</span>\");\n }\n return \"\".concat(iconHTML).concat(titleHTML);\n}\n\n/**\n * Recursively find an admin bar node by its id.\n * Submenus may be either arrays or keyed objects, so normalize both.\n * @param {Array|Object} nodes - Admin bar nodes / submenu\n * @param {string} id - Node id to find\n * @returns {Object|null} - Matching node or null\n */\nfunction findAdminBarNode(nodes, id) {\n if (!nodes) return null;\n var list = Array.isArray(nodes) ? nodes : Object.values(nodes);\n var _iterator = _createForOfIteratorHelper(list),\n _step;\n try {\n for (_iterator.s(); !(_step = _iterator.n()).done;) {\n var node = _step.value;\n if (!node || _typeof(node) !== \"object\") continue;\n if (node.id === id) return node;\n var found = findAdminBarNode(node.submenu, id);\n if (found) return found;\n }\n } catch (err) {\n _iterator.e(err);\n } finally {\n _iterator.f();\n }\n return null;\n}\n\n/**\n * Resolve the \"Edit Profile\" menu from the Admin Bar Editor.\n * Mirrors the editor for the profile (my-account > user-info) node:\n * - visibility: hidden nodes are removed from the tree or have menu_status === false.\n * - title: a custom title (e.g. \"Profile Editing\") is used when set; the default\n * WordPress title is an avatar/name HTML block, so fall back to \"Edit Profile\".\n * Falls back to the default label/visibility when the my-account tree is unavailable.\n * @returns {{ visible: boolean, title: string }}\n */\nfunction getEditProfileMenu() {\n var _adminify_admin_bar_d5;\n var defaultLabel = \"Edit Profile\";\n var myAccount = findAdminBarNode((_adminify_admin_bar_d5 = adminify_admin_bar_data) === null || _adminify_admin_bar_d5 === void 0 ? void 0 : _adminify_admin_bar_d5.data, \"my-account\");\n\n // No my-account data available, keep default behavior.\n if (!myAccount) return {\n visible: true,\n title: defaultLabel\n };\n var userInfo = findAdminBarNode(myAccount.submenu, \"user-info\");\n if (!userInfo || userInfo.menu_status === false) {\n return {\n visible: false,\n title: defaultLabel\n };\n }\n var rawTitle = typeof userInfo.title === \"string\" ? userInfo.title.trim() : \"\";\n // Default title is an avatar/name HTML block; use the standard label for it.\n var isDefaultHtmlTitle = /<(img|span)\\b/i.test(rawTitle);\n var title = rawTitle && !isDefaultHtmlTitle ? rawTitle : defaultLabel;\n return {\n visible: true,\n title: title\n };\n}\n\n/**\n * Get the visible items of the account menu (my-account > user-actions group).\n * Includes core items (user-info, logout) and any custom items added in the\n * Admin Bar Editor, in their saved order. Hidden items (removed from the tree\n * or menu_status === false) are excluded.\n * Returns null when the my-account/user-actions tree is unavailable so callers\n * can fall back to the default UI.\n * @returns {Array|null}\n */\nfunction getUserActionMenu() {\n var _adminify_admin_bar_d6;\n var myAccount = findAdminBarNode((_adminify_admin_bar_d6 = adminify_admin_bar_data) === null || _adminify_admin_bar_d6 === void 0 ? void 0 : _adminify_admin_bar_d6.data, \"my-account\");\n if (!myAccount) return null;\n var userActions = findAdminBarNode(myAccount.submenu, \"user-actions\");\n if (!userActions) return null;\n var submenu = userActions.submenu;\n var list = Array.isArray(submenu) ? submenu : Object.values(submenu || {});\n return list.filter(function (item) {\n return item && item.menu_status !== false;\n });\n}\n\n// Check if URL has different origin than current page\nvar isExternalUrl = function isExternalUrl(url) {\n if (!url) return false;\n try {\n var linkUrl = new URL(url, window.location.origin);\n return linkUrl.origin !== window.location.origin;\n } catch (e) {\n return false;\n }\n};\n\n//# sourceURL=webpack://adminify/./dev/admin/frame/utils/uitls.js?");
329 +eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ changeLightDarkMode: () => (/* binding */ changeLightDarkMode),\n/* harmony export */ checkAdminUrl: () => (/* binding */ checkAdminUrl),\n/* harmony export */ checkJsVoid: () => (/* binding */ checkJsVoid),\n/* harmony export */ findAdminBarNode: () => (/* binding */ findAdminBarNode),\n/* harmony export */ generateTopBarMenuDOM: () => (/* binding */ generateTopBarMenuDOM),\n/* harmony export */ getActiveMenu: () => (/* binding */ getActiveMenu),\n/* harmony export */ getEditProfileMenu: () => (/* binding */ getEditProfileMenu),\n/* harmony export */ getIcon: () => (/* binding */ getIcon),\n/* harmony export */ getLogo: () => (/* binding */ getLogo),\n/* harmony export */ getLogoStyles: () => (/* binding */ getLogoStyles),\n/* harmony export */ getLogoutURL: () => (/* binding */ getLogoutURL),\n/* harmony export */ getPath: () => (/* binding */ getPath),\n/* harmony export */ getUserActionMenu: () => (/* binding */ getUserActionMenu),\n/* harmony export */ handleClick: () => (/* binding */ handleClick),\n/* harmony export */ handleLogout: () => (/* binding */ handleLogout),\n/* harmony export */ handleMenuItemClick: () => (/* binding */ handleMenuItemClick),\n/* harmony export */ handleURLChange: () => (/* binding */ handleURLChange),\n/* harmony export */ isExternalUrl: () => (/* binding */ isExternalUrl),\n/* harmony export */ isImageUrl: () => (/* binding */ isImageUrl),\n/* harmony export */ isNewTabClick: () => (/* binding */ isNewTabClick),\n/* harmony export */ isSubdomain: () => (/* binding */ isSubdomain),\n/* harmony export */ loadGoogleFont: () => (/* binding */ loadGoogleFont),\n/* harmony export */ normalizeCopyDeletePostsMenu: () => (/* binding */ normalizeCopyDeletePostsMenu),\n/* harmony export */ replaceAmpInUrl: () => (/* binding */ replaceAmpInUrl),\n/* harmony export */ setDefaultURL: () => (/* binding */ setDefaultURL),\n/* harmony export */ switcherIcons: () => (/* binding */ switcherIcons),\n/* harmony export */ syncIframeHistory: () => (/* binding */ syncIframeHistory),\n/* harmony export */ triggerJsVoidClick: () => (/* binding */ triggerJsVoidClick),\n/* harmony export */ waitForElm: () => (/* binding */ waitForElm)\n/* harmony export */ });\n/* harmony import */ var _icons__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./icons */ \"./dev/admin/frame/utils/icons/index.js\");\nfunction _typeof(o) { \"@babel/helpers - typeof\"; return _typeof = \"function\" == typeof Symbol && \"symbol\" == typeof Symbol.iterator ? function (o) { return typeof o; } : function (o) { return o && \"function\" == typeof Symbol && o.constructor === Symbol && o !== Symbol.prototype ? \"symbol\" : typeof o; }, _typeof(o); }\nfunction _createForOfIteratorHelper(r, e) { var t = \"undefined\" != typeof Symbol && r[Symbol.iterator] || r[\"@@iterator\"]; if (!t) { if (Array.isArray(r) || (t = _unsupportedIterableToArray(r)) || e && r && \"number\" == typeof r.length) { t && (r = t); var _n = 0, F = function F() {}; return { s: F, n: function n() { return _n >= r.length ? { done: !0 } : { done: !1, value: r[_n++] }; }, e: function e(r) { throw r; }, f: F }; } throw new TypeError(\"Invalid attempt to iterate non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\"); } var o, a = !0, u = !1; return { s: function s() { t = t.call(r); }, n: function n() { var r = t.next(); return a = r.done, r; }, e: function e(r) { u = !0, o = r; }, f: function f() { try { a || null == t[\"return\"] || t[\"return\"](); } finally { if (u) throw o; } } }; }\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; }\n\n\n/**\n * Ctrl+Click (Windows/Linux), Cmd+Click (macOS), Shift+Click or middle-button\n * click — the user wants the link in a new tab/window, so handlers must not\n * preventDefault and must let the browser handle the click natively.\n * @param {MouseEvent} e\n * @returns {boolean}\n */\nvar isNewTabClick = function isNewTabClick(e) {\n return !!e && (e.ctrlKey || e.metaKey || e.shiftKey || e.button === 1);\n};\n\n// Navigation Menu\nvar handleMenuItemClick = function handleMenuItemClick(e, href) {\n var refreshFrame = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : false;\n // Allow Ctrl/Cmd/Shift/middle click to open in new tab natively\n if (isNewTabClick(e)) {\n return;\n }\n e.preventDefault();\n if (refreshFrame) {\n document.getElementById(\"frame-adminify-app--iframe\").contentWindow.location.href = href;\n window.history.pushState({}, \"\", href);\n }\n};\n\n// URL Change\nvar handleURLChange = function handleURLChange(href) {\n var replace = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : false;\n try {\n // Only push/replaceState for same-origin URLs\n var url = new URL(href, window.location.origin);\n if (url.origin === window.location.origin) {\n window.history[replace ? \"replaceState\" : \"pushState\"]({}, \"\", href);\n }\n } catch (e) {\n // Invalid URL or cross-origin - ignore\n }\n};\nvar HISTORY_SYNCED = \"__adminifyHistorySynced\";\n\n/**\n * Mirror history moves made INSIDE the iframe onto the shell window.\n *\n * Admin screens that behave like SPAs change URL with the History API instead of\n * loading a document. The block editor is the visible case: the moment a draft is\n * published core calls `replaceState` to swap `post-new.php` for\n * `post.php?post=<id>&action=edit`. No `load` and no `hashchange` fires for that,\n * so the shell keeps showing the URL the frame started on - reloading then reopens\n * an empty new post instead of the published one. Same for anything the editor\n * routes client-side afterwards, e.g. the \"View Posts\" back button.\n *\n * Patch the iframe's own `pushState`/`replaceState` and listen for `popstate` so\n * every such move reaches the shell. A real navigation gives the iframe a fresh\n * `window` - and a fresh `history` - so the guard flag resets by itself and this\n * re-patches on each load.\n *\n * @param {Window} iframeWindow Same-origin iframe window.\n * @param {Function} onChange Receives (href, isReplace).\n */\nvar syncIframeHistory = function syncIframeHistory(iframeWindow, onChange) {\n try {\n var iframeHistory = iframeWindow === null || iframeWindow === void 0 ? void 0 : iframeWindow.history;\n if (!iframeHistory || iframeHistory[HISTORY_SYNCED]) return;\n\n // Never let a shell error escape into the iframe's own navigation.\n var notify = function notify(isReplace) {\n try {\n onChange(iframeWindow.location.href, isReplace);\n } catch (err) {\n // Shell-side failure - the iframe must still navigate.\n }\n };\n [\"pushState\", \"replaceState\"].forEach(function (method) {\n var original = iframeHistory[method];\n if (typeof original !== \"function\") return;\n iframeHistory[method] = function () {\n for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n var result = original.apply(this, args);\n notify(method === \"replaceState\");\n return result;\n };\n });\n iframeHistory[HISTORY_SYNCED] = true;\n\n // Back/forward inside the iframe - replace so the shell does not stack a\n // duplicate entry on top of the one the user just moved to.\n iframeWindow.addEventListener(\"popstate\", function () {\n return notify(true);\n });\n } catch (e) {\n // Cross-origin iframe - nothing to patch.\n }\n};\n\n// Logo out\nvar handleLogout = function handleLogout() {\n var _adminify_admin_bar_d, _adminify_admin_bar_d2;\n window.location.href = (_adminify_admin_bar_d = adminify_admin_bar_data) === null || _adminify_admin_bar_d === void 0 ? void 0 : _adminify_admin_bar_d.logout_url;\n var url = new URL((_adminify_admin_bar_d2 = adminify_admin_bar_data) === null || _adminify_admin_bar_d2 === void 0 ? void 0 : _adminify_admin_bar_d2.logout_url);\n window.location.href = \"\".concat(url.origin).concat(url.pathname);\n};\nvar getLogoutURL = function getLogoutURL() {\n var _adminify_admin_bar_d3;\n var rawUrl = (_adminify_admin_bar_d3 = adminify_admin_bar_data) === null || _adminify_admin_bar_d3 === void 0 ? void 0 : _adminify_admin_bar_d3.logout_url;\n var solidURL = rawUrl.replace(/&amp;/g, \"&\");\n return solidURL;\n};\n\n// Get Logo\nvar getLogo = function getLogo(data) {\n var imagePath = frame_adminify_menu.image_path;\n var logo = {\n full: \"\",\n mini: \"\",\n text: \"\",\n width: 120,\n height: 32,\n styles: {}\n };\n if ((data === null || data === void 0 ? void 0 : data.admin_ui_mode) === \"dark\") {\n // Dark Logo\n if ((data === null || data === void 0 ? void 0 : data.admin_ui_logo_type) === \"image_logo\") {\n var _data$admin_ui_dark_m, _data$admin_ui_dark_m3, _data$admin_ui_dark_m5, _data$admin_ui_dark_m7;\n if (data !== null && data !== void 0 && (_data$admin_ui_dark_m = data.admin_ui_dark_mode.admin_ui_dark_logo) !== null && _data$admin_ui_dark_m !== void 0 && _data$admin_ui_dark_m.url) {\n var _data$admin_ui_dark_m2;\n logo.full = data === null || data === void 0 || (_data$admin_ui_dark_m2 = data.admin_ui_dark_mode.admin_ui_dark_logo) === null || _data$admin_ui_dark_m2 === void 0 ? void 0 : _data$admin_ui_dark_m2.url;\n } else {\n logo.full = \"\".concat(imagePath, \"logos/logo-text-dark.svg\");\n }\n if (data !== null && data !== void 0 && (_data$admin_ui_dark_m3 = data.admin_ui_dark_mode.mini_admin_ui_dark_logo) !== null && _data$admin_ui_dark_m3 !== void 0 && _data$admin_ui_dark_m3.url) {\n var _data$admin_ui_dark_m4;\n logo.mini = data === null || data === void 0 || (_data$admin_ui_dark_m4 = data.admin_ui_dark_mode.mini_admin_ui_dark_logo) === null || _data$admin_ui_dark_m4 === void 0 ? void 0 : _data$admin_ui_dark_m4.url;\n } else {\n logo.mini = \"\".concat(imagePath, \"logos/mini-logo-dark.svg\");\n }\n if (data !== null && data !== void 0 && (_data$admin_ui_dark_m5 = data.admin_ui_dark_mode) !== null && _data$admin_ui_dark_m5 !== void 0 && (_data$admin_ui_dark_m5 = _data$admin_ui_dark_m5.dark_logo_size) !== null && _data$admin_ui_dark_m5 !== void 0 && _data$admin_ui_dark_m5.width) {\n var _data$admin_ui_dark_m6;\n logo.width = data === null || data === void 0 || (_data$admin_ui_dark_m6 = data.admin_ui_dark_mode) === null || _data$admin_ui_dark_m6 === void 0 || (_data$admin_ui_dark_m6 = _data$admin_ui_dark_m6.dark_logo_size) === null || _data$admin_ui_dark_m6 === void 0 ? void 0 : _data$admin_ui_dark_m6.width;\n }\n if (data !== null && data !== void 0 && (_data$admin_ui_dark_m7 = data.admin_ui_dark_mode) !== null && _data$admin_ui_dark_m7 !== void 0 && (_data$admin_ui_dark_m7 = _data$admin_ui_dark_m7.dark_logo_size) !== null && _data$admin_ui_dark_m7 !== void 0 && _data$admin_ui_dark_m7.height) {\n var _data$admin_ui_dark_m8;\n logo.height = data === null || data === void 0 || (_data$admin_ui_dark_m8 = data.admin_ui_dark_mode) === null || _data$admin_ui_dark_m8 === void 0 || (_data$admin_ui_dark_m8 = _data$admin_ui_dark_m8.dark_logo_size) === null || _data$admin_ui_dark_m8 === void 0 ? void 0 : _data$admin_ui_dark_m8.height;\n }\n } else {\n var _data$admin_ui_dark_m9, _data$admin_ui_dark_m10, _data$admin_ui_dark_m11;\n logo.text = data === null || data === void 0 || (_data$admin_ui_dark_m9 = data.admin_ui_dark_mode) === null || _data$admin_ui_dark_m9 === void 0 ? void 0 : _data$admin_ui_dark_m9.admin_ui_dark_logo_text;\n var logo_style = data === null || data === void 0 || (_data$admin_ui_dark_m10 = data.admin_ui_dark_mode) === null || _data$admin_ui_dark_m10 === void 0 ? void 0 : _data$admin_ui_dark_m10.admin_ui_dark_logo_text_typo;\n logo.styles = getLogoStyles(logo_style);\n if (data !== null && data !== void 0 && (_data$admin_ui_dark_m11 = data.admin_ui_dark_mode.mini_admin_ui_dark_logo) !== null && _data$admin_ui_dark_m11 !== void 0 && _data$admin_ui_dark_m11.url) {\n var _data$admin_ui_dark_m12;\n logo.mini = data === null || data === void 0 || (_data$admin_ui_dark_m12 = data.admin_ui_dark_mode.mini_admin_ui_dark_logo) === null || _data$admin_ui_dark_m12 === void 0 ? void 0 : _data$admin_ui_dark_m12.url;\n } else {\n logo.mini = \"\".concat(imagePath, \"logos/mini-logo-dark.svg\");\n }\n }\n } else {\n // Light Logo\n if ((data === null || data === void 0 ? void 0 : data.admin_ui_logo_type) === \"image_logo\") {\n var _data$admin_ui_light_, _data$admin_ui_light_3, _data$admin_ui_light_5, _data$admin_ui_light_7;\n if (data !== null && data !== void 0 && (_data$admin_ui_light_ = data.admin_ui_light_mode.admin_ui_light_logo) !== null && _data$admin_ui_light_ !== void 0 && _data$admin_ui_light_.url) {\n var _data$admin_ui_light_2;\n logo.full = data === null || data === void 0 || (_data$admin_ui_light_2 = data.admin_ui_light_mode.admin_ui_light_logo) === null || _data$admin_ui_light_2 === void 0 ? void 0 : _data$admin_ui_light_2.url;\n } else {\n logo.full = \"\".concat(imagePath, \"logos/logo-text-light.svg\");\n }\n if (data !== null && data !== void 0 && (_data$admin_ui_light_3 = data.admin_ui_light_mode.mini_admin_ui_light_logo) !== null && _data$admin_ui_light_3 !== void 0 && _data$admin_ui_light_3.url) {\n var _data$admin_ui_light_4;\n logo.mini = data === null || data === void 0 || (_data$admin_ui_light_4 = data.admin_ui_light_mode.mini_admin_ui_light_logo) === null || _data$admin_ui_light_4 === void 0 ? void 0 : _data$admin_ui_light_4.url;\n } else {\n logo.mini = \"\".concat(imagePath, \"logos/mini-logo-light.svg\");\n }\n if (data !== null && data !== void 0 && (_data$admin_ui_light_5 = data.admin_ui_light_mode) !== null && _data$admin_ui_light_5 !== void 0 && (_data$admin_ui_light_5 = _data$admin_ui_light_5.light_logo_size) !== null && _data$admin_ui_light_5 !== void 0 && _data$admin_ui_light_5.width) {\n var _data$admin_ui_light_6;\n logo.width = data === null || data === void 0 || (_data$admin_ui_light_6 = data.admin_ui_light_mode) === null || _data$admin_ui_light_6 === void 0 || (_data$admin_ui_light_6 = _data$admin_ui_light_6.light_logo_size) === null || _data$admin_ui_light_6 === void 0 ? void 0 : _data$admin_ui_light_6.width;\n }\n if (data !== null && data !== void 0 && (_data$admin_ui_light_7 = data.admin_ui_light_mode) !== null && _data$admin_ui_light_7 !== void 0 && (_data$admin_ui_light_7 = _data$admin_ui_light_7.light_logo_size) !== null && _data$admin_ui_light_7 !== void 0 && _data$admin_ui_light_7.height) {\n var _data$admin_ui_light_8;\n logo.height = data === null || data === void 0 || (_data$admin_ui_light_8 = data.admin_ui_light_mode) === null || _data$admin_ui_light_8 === void 0 || (_data$admin_ui_light_8 = _data$admin_ui_light_8.light_logo_size) === null || _data$admin_ui_light_8 === void 0 ? void 0 : _data$admin_ui_light_8.height;\n }\n } else {\n var _data$admin_ui_light_9, _data$admin_ui_light_10, _data$admin_ui_light_11;\n logo.text = data === null || data === void 0 || (_data$admin_ui_light_9 = data.admin_ui_light_mode) === null || _data$admin_ui_light_9 === void 0 ? void 0 : _data$admin_ui_light_9.admin_ui_light_logo_text;\n var _logo_style = data === null || data === void 0 || (_data$admin_ui_light_10 = data.admin_ui_light_mode) === null || _data$admin_ui_light_10 === void 0 ? void 0 : _data$admin_ui_light_10.admin_ui_light_logo_text_typo;\n logo.styles = getLogoStyles(_logo_style);\n if (data !== null && data !== void 0 && (_data$admin_ui_light_11 = data.admin_ui_light_mode.mini_admin_ui_light_logo) !== null && _data$admin_ui_light_11 !== void 0 && _data$admin_ui_light_11.url) {\n var _data$admin_ui_light_12;\n logo.mini = data === null || data === void 0 || (_data$admin_ui_light_12 = data.admin_ui_light_mode.mini_admin_ui_light_logo) === null || _data$admin_ui_light_12 === void 0 ? void 0 : _data$admin_ui_light_12.url;\n } else {\n logo.mini = \"\".concat(imagePath, \"logos/mini-logo-light.svg\");\n }\n }\n }\n return logo;\n};\n\n/**\n * Web-safe fonts that don't need to be loaded from Google\n */\nvar WEB_SAFE_FONTS = [\"Arial\", \"Helvetica\", \"Times New Roman\", \"Times\", \"Courier New\", \"Courier\", \"Verdana\", \"Georgia\", \"Palatino\", \"Garamond\", \"Bookman\", \"Trebuchet MS\", \"Arial Black\", \"Impact\", \"Comic Sans MS\", \"system-ui\", \"sans-serif\", \"serif\", \"monospace\"];\n\n/**\n * Convert font weight string to numeric value for Google Fonts\n * @param {string|number} weight - The font weight\n * @returns {string} - Numeric font weight\n */\nfunction normalizeFontWeight(weight) {\n if (!weight) return \"400\";\n\n // If already a number or numeric string, return it\n if (!isNaN(weight)) return String(weight);\n\n // Map common weight names to numeric values\n var weightMap = {\n \"thin\": \"100\",\n \"hairline\": \"100\",\n \"extra-light\": \"200\",\n \"extralight\": \"200\",\n \"ultra-light\": \"200\",\n \"light\": \"300\",\n \"normal\": \"400\",\n \"regular\": \"400\",\n \"medium\": \"500\",\n \"semi-bold\": \"600\",\n \"semibold\": \"600\",\n \"demi-bold\": \"600\",\n \"bold\": \"700\",\n \"extra-bold\": \"800\",\n \"extrabold\": \"800\",\n \"ultra-bold\": \"800\",\n \"black\": \"900\",\n \"heavy\": \"900\"\n };\n return weightMap[String(weight).toLowerCase()] || \"400\";\n}\n\n/**\n * Load Google Font dynamically - uses local font URLs provided by PHP\n * PHP handles font download on page load, JS just creates link tags\n * @param {string} fontFamily - The font family name to load\n * @param {string} fontWeight - The font weight (optional)\n */\nfunction loadGoogleFont(fontFamily) {\n var _window$PXLBSADMINIFY;\n var fontWeight = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : \"400\";\n if (!fontFamily || fontFamily === \"\") return;\n\n // Skip web-safe fonts\n if (WEB_SAFE_FONTS.some(function (f) {\n return fontFamily.toLowerCase() === f.toLowerCase();\n })) {\n return;\n }\n\n // Create a unique ID for this font\n var fontSlug = fontFamily.replace(/\\s+/g, \"-\").toLowerCase();\n var fontId = \"adminify-local-font-\".concat(fontSlug);\n\n // Check if font is already loaded\n if (document.getElementById(fontId)) return;\n\n // Get local font URL from PHP-provided config\n var localFontsConfig = (_window$PXLBSADMINIFY = window.PXLBSADMINIFY_ADMIN) === null || _window$PXLBSADMINIFY === void 0 ? void 0 : _window$PXLBSADMINIFY.local_fonts;\n if (localFontsConfig !== null && localFontsConfig !== void 0 && localFontsConfig.base_url) {\n var localFontUrl = \"\".concat(localFontsConfig.base_url, \"/\").concat(fontSlug, \"/\").concat(fontSlug, \".css\");\n\n // Create and append the link element\n var link = document.createElement(\"link\");\n link.id = fontId;\n link.rel = \"stylesheet\";\n link.href = localFontUrl;\n document.head.appendChild(link);\n }\n}\n\n/**\n * Get Logo Styles\n */\nfunction getLogoStyles(logo_style) {\n // Load the Google Font if font-family is specified\n // The loadGoogleFont function will skip web-safe fonts automatically\n if (logo_style !== null && logo_style !== void 0 && logo_style[\"font-family\"]) {\n loadGoogleFont(logo_style[\"font-family\"], (logo_style === null || logo_style === void 0 ? void 0 : logo_style[\"font-weight\"]) || \"400\");\n }\n return {\n fontFamily: logo_style === null || logo_style === void 0 ? void 0 : logo_style[\"font-family\"],\n fontWeight: logo_style === null || logo_style === void 0 ? void 0 : logo_style[\"font-weight\"],\n fontSize: logo_style !== null && logo_style !== void 0 && logo_style[\"font-size\"] ? (logo_style === null || logo_style === void 0 ? void 0 : logo_style[\"font-size\"]) + (logo_style === null || logo_style === void 0 ? void 0 : logo_style[\"unit\"]) : \"\",\n letterSpacing: logo_style === null || logo_style === void 0 ? void 0 : logo_style[\"letter-spacing\"],\n color: logo_style === null || logo_style === void 0 ? void 0 : logo_style[\"color\"]\n };\n}\n\n/**\n * Handle click\n * @param {css selector} el\n * @param {function} callback\n * @returns\n */\nfunction handleClick(el, callback) {\n return el.addEventListener(\"click\", callback);\n}\n\n// Switcher icons\nvar switcherIcons = {\n light: /*#__PURE__*/React.createElement(\"svg\", {\n viewBox: \"0 0 24 24\",\n width: \"20\",\n height: \"24\",\n className: \"lightIcon\"\n }, /*#__PURE__*/React.createElement(\"path\", {\n fill: \"var(--adminify-menu-text-color)\",\n d: \"M12,9c1.65,0,3,1.35,3,3s-1.35,3-3,3s-3-1.35-3-3S10.35,9,12,9 M12,7c-2.76,0-5,2.24-5,5s2.24,5,5,5s5-2.24,5-5 S14.76,7,12,7L12,7z M2,13l2,0c0.55,0,1-0.45,1-1s-0.45-1-1-1l-2,0c-0.55,0-1,0.45-1,1S1.45,13,2,13z M20,13l2,0c0.55,0,1-0.45,1-1 s-0.45-1-1-1l-2,0c-0.55,0-1,0.45-1,1S19.45,13,20,13z M11,2v2c0,0.55,0.45,1,1,1s1-0.45,1-1V2c0-0.55-0.45-1-1-1S11,1.45,11,2z M11,20v2c0,0.55,0.45,1,1,1s1-0.45,1-1v-2c0-0.55-0.45-1-1-1C11.45,19,11,19.45,11,20z M5.99,4.58c-0.39-0.39-1.03-0.39-1.41,0 c-0.39,0.39-0.39,1.03,0,1.41l1.06,1.06c0.39,0.39,1.03,0.39,1.41,0s0.39-1.03,0-1.41L5.99,4.58z M18.36,16.95 c-0.39-0.39-1.03-0.39-1.41,0c-0.39,0.39-0.39,1.03,0,1.41l1.06,1.06c0.39,0.39,1.03,0.39,1.41,0c0.39-0.39,0.39-1.03,0-1.41 L18.36,16.95z M19.42,5.99c0.39-0.39,0.39-1.03,0-1.41c-0.39-0.39-1.03-0.39-1.41,0l-1.06,1.06c-0.39,0.39-0.39,1.03,0,1.41 s1.03,0.39,1.41,0L19.42,5.99z M7.05,18.36c0.39-0.39,0.39-1.03,0-1.41c-0.39-0.39-1.03-0.39-1.41,0l-1.06,1.06 c-0.39,0.39-0.39,1.03,0,1.41s1.03,0.39,1.41,0L7.05,18.36z\"\n })),\n dark: /*#__PURE__*/React.createElement(\"svg\", {\n viewBox: \"0 0 24 24\",\n width: \"20\",\n height: \"24\",\n className: \"darkIcon\"\n }, /*#__PURE__*/React.createElement(\"path\", {\n fill: \"var(--adminify-menu-text-color)\",\n d: \"M9.37,5.51C9.19,6.15,9.1,6.82,9.1,7.5c0,4.08,3.32,7.4,7.4,7.4c0.68,0,1.35-0.09,1.99-0.27C17.45,17.19,14.93,19,12,19 c-3.86,0-7-3.14-7-7C5,9.07,6.81,6.55,9.37,5.51z M12,3c-4.97,0-9,4.03-9,9s4.03,9,9,9s9-4.03,9-9c0-0.46-0.04-0.92-0.1-1.36 c-0.98,1.37-2.58,2.26-4.4,2.26c-2.98,0-5.4-2.42-5.4-5.4c0-1.81,0.89-3.42,2.26-4.4C12.92,3.04,12.46,3,12,3L12,3z\"\n })),\n system: /*#__PURE__*/React.createElement(\"svg\", {\n width: \"16\",\n height: \"16\",\n viewBox: \"0 0 22 18\",\n fill: \"none\",\n xmlns: \"http://www.w3.org/2000/svg\",\n className: \"systemIcon\"\n }, /*#__PURE__*/React.createElement(\"path\", {\n d: \"M20 13V4.2C20 3.0799 20 2.51984 19.782 2.09202C19.5903 1.71569 19.2843 1.40973 18.908 1.21799C18.4802 1 17.9201 1 16.8 1H5.2C4.07989 1 3.51984 1 3.09202 1.21799C2.71569 1.40973 2.40973 1.71569 2.21799 2.09202C2 2.51984 2 3.0799 2 4.2V13M3.66667 17H18.3333C18.9533 17 19.2633 17 19.5176 16.9319C20.2078 16.7469 20.7469 16.2078 20.9319 15.5176C21 15.2633 21 14.9533 21 14.3333C21 14.0233 21 13.8683 20.9659 13.7412C20.8735 13.3961 20.6039 13.1265 20.2588 13.0341C20.1317 13 19.9767 13 19.6667 13H2.33333C2.02334 13 1.86835 13 1.74118 13.0341C1.39609 13.1265 1.12654 13.3961 1.03407 13.7412C1 13.8683 1 14.0233 1 14.3333C1 14.9533 1 15.2633 1.06815 15.5176C1.25308 16.2078 1.79218 16.7469 2.48236 16.9319C2.73669 17 3.04669 17 3.66667 17Z\",\n stroke: \"var(--adminify-menu-text-color)\",\n strokeWidth: \"2\",\n strokeLinecap: \"round\",\n strokeLinejoin: \"round\"\n }))\n};\n\n// Set Light Dark Mode\nvar changeLightDarkMode = function changeLightDarkMode(mode) {\n jQuery.ajax({\n url: PXLBSADMINIFY_FRAME.ajax_url,\n type: \"post\",\n data: {\n action: \"pxlbsadminify_color_mode\",\n security: PXLBSADMINIFY_FRAME.security_nonce,\n key: \"color_mode\",\n value: mode\n }\n });\n};\n\n/**\n * Retrieves the appropriate icon for a given menu item based on its properties.\n * - If the layout type is horizontal and the menu type is text-only, returns an empty string.\n * - Supports various icon formats: base64 data URIs, image file extensions, dashicons, and font awesome icons.\n * - Defaults to displaying the first character of the menu title if no icon is specified.\n *\n * @param {Object} menu - The menu item containing icon and title properties.\n * @param {boolean} getWidth - A flag indicating if width should be considered.\n * @returns {string} - The HTML string representing the menu icon.\n */\nfunction getIcon(menu, getWidth) {\n var menuLayoutSettings = frame_adminify_menu.menu_layout_settings;\n\n // Check if icon rendering is skipped for text-only horizontal menu type\n if ((menuLayoutSettings === null || menuLayoutSettings === void 0 ? void 0 : menuLayoutSettings.horz_menu_type) === \"text_only\" && (menuLayoutSettings === null || menuLayoutSettings === void 0 ? void 0 : menuLayoutSettings.layout_type) === \"horizontal\" && getWidth === false) {\n return \"\";\n }\n var _ref = menu || {},\n icon = _ref.icon,\n title = _ref.title;\n // Determine the icon type and return corresponding HTML\n if (/data:image/g.test(icon)) {\n // Handle base64 data URIs\n return \"<span class=\\\"frame-adminify-menu-image\\\" style=\\\"mask-image: url(\".concat(icon, \")\\\"></span>\");\n } else if (/\\.(jpg|jpeg|png|gif|bmp|webp|svg)$/i.test(icon)) {\n // Handle image file extensions\n return \"<span class=\\\"frame-adminify-menu-image\\\">\\n <img src=\\\"\".concat(icon, \"\\\" alt=\\\"menu icon\\\" />\\n </span>\");\n } else if (/dashicons/g.test(icon)) {\n // Handle dashicons\n return _icons__WEBPACK_IMPORTED_MODULE_0__.dashboardIcons !== null && _icons__WEBPACK_IMPORTED_MODULE_0__.dashboardIcons !== void 0 && _icons__WEBPACK_IMPORTED_MODULE_0__.dashboardIcons[icon] ? \"<span class=\\\"frame-adminify-menu-icon\\\">\".concat(_icons__WEBPACK_IMPORTED_MODULE_0__.dashboardIcons[icon], \"</span>\") : \"<span class=\\\"frame-adminify-menu-icon dashicons \".concat(icon, \"\\\"></span>\");\n } else if (/fa-/g.test(menu === null || menu === void 0 ? void 0 : menu.icon)) {\n // Handle FontAwesome icons (fa-)\n return \"<span class=\\\"frame-adminify-menu-icon fas \".concat(menu.icon, \"\\\"></span>\");\n } else if (/icon-/g.test(menu === null || menu === void 0 ? void 0 : menu.icon)) {\n // Handle Simple Line Icons (icon-)\n return \"<span class=\\\"frame-adminify-menu-icon \".concat(menu.icon, \"\\\"></span>\");\n }\n\n // Default: Display the first character of the menu title\n return \"<span class=\\\"frame-adminify-menu-icon-symbol\\\">\".concat((title === null || title === void 0 ? void 0 : title.charAt(0)) || '', \"</span>\");\n}\n\n// get Active Menu\nvar getActiveMenu = function getActiveMenu(menus, isSub, isURL) {\n var url = isURL ? isURL : window.location.href;\n var menuId = \"\";\n var submenuId = \"\";\n for (var menuKey in menus) {\n if (Object.hasOwnProperty.call(menus, menuKey)) {\n var _menu$children;\n var menu = menus[menuKey];\n if ((menu === null || menu === void 0 || (_menu$children = menu.children) === null || _menu$children === void 0 ? void 0 : _menu$children.length) === 0 && (menu === null || menu === void 0 ? void 0 : menu.url) === url) {\n // Active menu without Submenu\n menuId = menu === null || menu === void 0 ? void 0 : menu.key;\n } else {\n // Active Menu With Submenu\n for (var submenuKey in menu === null || menu === void 0 ? void 0 : menu.children) {\n if (Object.hasOwnProperty.call(menu === null || menu === void 0 ? void 0 : menu.children, submenuKey)) {\n var submenu = menu === null || menu === void 0 ? void 0 : menu.children[submenuKey];\n var clean_url = url.substring(0, url.indexOf(\"#\"));\n if ((submenu === null || submenu === void 0 ? void 0 : submenu.url) === url || (submenu === null || submenu === void 0 ? void 0 : submenu.url) === clean_url) {\n menuId = menu === null || menu === void 0 ? void 0 : menu.key;\n submenuId = submenu === null || submenu === void 0 ? void 0 : submenu.key;\n }\n }\n }\n }\n }\n }\n if (!!isSub) {\n return submenuId;\n }\n return [menuId];\n};\n\n// Set Default URL\nvar setDefaultURL = function setDefaultURL(href) {\n var existing_href = window.location.href;\n var url = new URL(existing_href);\n if (!href.includes(url.origin) || url.pathname.length > 10) {\n window.history.pushState({}, \"\", existing_href);\n return existing_href;\n } else {\n window.history.pushState({}, \"\", href);\n return href;\n }\n};\n\n// Decode URL\nfunction replaceAmpInUrl(fullUrl) {\n var url = new URL(fullUrl);\n var queryString = url.search;\n var decodedQueryString = decodeURIComponent(queryString).replace(/&amp;/g, \"&\");\n url.search = decodedQueryString;\n return url.toString();\n}\nvar isSubdomain = function isSubdomain(url) {\n if (/(?:(http(s?))?:\\/\\/)?(?:www\\.)?([a-zA-Z0-9-]+\\.)[a-zA-Z0-9-]+\\.[a-zA-Z]{2,}/i.test(url)) {\n return true;\n }\n return false;\n};\nvar getPath = function getPath(url) {\n if (/(http(s?)):\\/\\//i.test(url)) {\n if (isSubdomain(url)) return url;\n var decodedURL = sanitizeURL(url);\n var urlObj = new URL(decodedURL);\n return \"\".concat(urlObj === null || urlObj === void 0 ? void 0 : urlObj.pathname).concat(urlObj === null || urlObj === void 0 ? void 0 : urlObj.search);\n }\n return url;\n};\n\n// Recommended approach\nfunction sanitizeURL(url) {\n // Decode HTML entities\n var textArea = document.createElement('textarea');\n textArea.innerHTML = url;\n var decoded = textArea.value;\n\n // Validate and return\n try {\n new URL(decoded);\n return decoded;\n } catch (_unused) {\n // If still invalid, try to fix common issues\n return decoded.replace(/&#038;/g, '&').replace(/&amp;/g, '&');\n }\n}\n\n/**\n *\n * @param {CSS} selector\n * @returns exits DOM\n */\nfunction waitForElm(selector) {\n return new Promise(function (resolve) {\n if (document.querySelector(selector)) {\n return resolve(document.querySelector(selector));\n }\n var observer = new MutationObserver(function (mutations) {\n if (document.querySelector(selector)) {\n observer.disconnect();\n resolve(document.querySelector(selector));\n }\n });\n observer.observe(document.body, {\n childList: true,\n subtree: true\n });\n });\n}\nvar checkAdminUrl = function checkAdminUrl() {\n var _adminify_admin_bar_d4;\n var url = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : \"\";\n var admin_url = (_adminify_admin_bar_d4 = adminify_admin_bar_data) === null || _adminify_admin_bar_d4 === void 0 ? void 0 : _adminify_admin_bar_d4.admin_url;\n return url.includes(admin_url);\n};\n\n/**\n * Normalize Menu Title\n * @param {*} title \n * @returns string\n */\nfunction normalizeCopyDeletePostsMenu(title) {\n if (!title || typeof title !== 'string') return title;\n var temp = document.createElement('div');\n temp.innerHTML = title;\n\n // Check if there's direct text + span together (like \"Plugins <span>...</span>\")\n var hasDirectText = Array.from(temp.childNodes).some(function (node) {\n return node.nodeType === Node.TEXT_NODE && node.textContent.trim() !== '';\n });\n var hasSpan = temp.querySelector('span') !== null;\n\n // If both direct text and span exist, return original\n if (hasDirectText && hasSpan) {\n return title;\n }\n\n // If only a span with text inside, extract the text\n if (temp.children.length === 1 && temp.children[0].tagName === 'SPAN') {\n var span = temp.children[0];\n if (span.children.length === 0) {\n return span.textContent;\n }\n }\n return title;\n}\nfunction checkJsVoid() {\n var href = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : \"\";\n if (!href) return false;\n if (href.includes(\"avascript:void\")) return true;\n return false;\n}\n\n/**\n * Trigger click on original WordPress admin bar element for javascript:void links\n * This enables compatibility with plugins that use javascript:void(0) hrefs\n * @param {string} itemId - The menu item ID (e.g., 'wpdn-add-note')\n * @returns {boolean} - Returns true if click was triggered successfully\n */\nfunction triggerJsVoidClick(itemId) {\n var _iframe$contentWindow;\n if (!itemId) return false;\n var iframe = document.getElementById(\"frame-adminify-app--iframe\");\n var iframeDoc = (iframe === null || iframe === void 0 ? void 0 : iframe.contentDocument) || (iframe === null || iframe === void 0 || (_iframe$contentWindow = iframe.contentWindow) === null || _iframe$contentWindow === void 0 ? void 0 : _iframe$contentWindow.document);\n\n // Try to find and click the element inside the iframe first\n if (iframeDoc) {\n var iframeElement = iframeDoc.querySelector(\"#wp-admin-bar-\".concat(itemId, \" a\"));\n if (iframeElement) {\n // Click the element inside iframe\n iframeElement.click();\n\n // Handle AJAX-based actions: wait for completion, refresh iframe, scroll to new content\n handleJsVoidAjaxAction(iframe, itemId);\n return true;\n }\n }\n\n // Fallback: Find the original WordPress admin bar element in parent\n var originalElement = document.querySelector(\"#wp-admin-bar-\".concat(itemId, \" a\"));\n if (originalElement) {\n originalElement.click();\n return true;\n }\n return false;\n}\n\n/**\n * Handle javascript:void AJAX actions generically\n * Waits for AJAX to complete, refreshes iframe, and scrolls to new content\n * @param {HTMLIFrameElement} iframe - The iframe element\n * @param {string} itemId - The menu item ID for context\n */\nfunction handleJsVoidAjaxAction(iframe, itemId) {\n var iframeWindow = iframe === null || iframe === void 0 ? void 0 : iframe.contentWindow;\n if (!iframeWindow || !iframeWindow.jQuery) return;\n\n // Use jQuery's ajaxStop to detect when all AJAX requests complete\n iframeWindow.jQuery(document).one('ajaxStop', function () {\n // Small delay to ensure DOM is updated\n setTimeout(function () {\n // Store scroll target info before refresh\n var scrollTarget = getScrollTargetSelector(itemId, iframeWindow.document);\n\n // Refresh the iframe\n iframe.contentWindow.location.reload();\n\n // After iframe loads, scroll to the new content\n iframe.onload = function () {\n setTimeout(function () {\n scrollToNewContent(iframe, scrollTarget);\n }, 300);\n };\n }, 100);\n });\n}\n\n/**\n * Get selector for scroll target based on plugin/action type\n * @param {string} itemId - The menu item ID\n * @param {Document} doc - The document to search in\n * @returns {object} - Scroll target info\n */\nfunction getScrollTargetSelector(itemId, doc) {\n // Map of known plugins and their new content selectors\n var pluginSelectors = {\n 'wpdn-add-note': {\n container: '#postbox-container-1 #normal-sortables',\n itemPrefix: 'note_',\n findLatest: true\n }\n // add more plugin support...\n };\n var config = pluginSelectors[itemId];\n if (config && config.findLatest) {\n // Find the latest item ID before refresh\n var container = doc.querySelector(config.container);\n if (container) {\n var items = container.querySelectorAll(\"[id^=\\\"\".concat(config.itemPrefix, \"\\\"]\"));\n if (items.length > 0) {\n // Get the highest ID (newest item)\n var maxId = 0;\n items.forEach(function (item) {\n var id = parseInt(item.id.replace(config.itemPrefix, ''), 10);\n if (id > maxId) maxId = id;\n });\n return {\n selector: \"#\".concat(config.itemPrefix).concat(maxId),\n isNew: true,\n prefix: config.itemPrefix\n };\n }\n }\n }\n return {\n selector: null,\n itemId: itemId\n };\n}\n\n/**\n * Scroll to newly added content in iframe after refresh\n * @param {HTMLIFrameElement} iframe - The iframe element\n * @param {object} scrollTarget - The scroll target info\n */\nfunction scrollToNewContent(iframe, scrollTarget) {\n var _iframe$contentWindow2;\n var iframeDoc = (iframe === null || iframe === void 0 ? void 0 : iframe.contentDocument) || (iframe === null || iframe === void 0 || (_iframe$contentWindow2 = iframe.contentWindow) === null || _iframe$contentWindow2 === void 0 ? void 0 : _iframe$contentWindow2.document);\n if (!iframeDoc) return;\n if (scrollTarget.isNew && scrollTarget.prefix) {\n // Find the newest item (highest ID) after refresh\n var items = iframeDoc.querySelectorAll(\"[id^=\\\"\".concat(scrollTarget.prefix, \"\\\"]\"));\n var newestElement = null;\n var maxId = 0;\n items.forEach(function (item) {\n var id = parseInt(item.id.replace(scrollTarget.prefix, ''), 10);\n if (id > maxId) {\n maxId = id;\n newestElement = item;\n }\n });\n if (newestElement) {\n newestElement.scrollIntoView({\n behavior: 'smooth',\n block: 'center'\n });\n // Add highlight effect\n newestElement.style.transition = 'box-shadow 0.3s ease';\n newestElement.style.boxShadow = '0 0 10px 3px rgba(0, 123, 255, 0.5)';\n setTimeout(function () {\n newestElement.style.boxShadow = '';\n }, 2000);\n return;\n }\n }\n\n // Fallback: scroll to specific selector if provided\n if (scrollTarget.selector) {\n var element = iframeDoc.querySelector(scrollTarget.selector);\n if (element) {\n element.scrollIntoView({\n behavior: 'smooth',\n block: 'center'\n });\n }\n }\n}\n\n/**\n * Check if a string is an image URL\n * @param {string} str - The string to check\n * @returns {boolean} - True if string is an image URL\n */\nfunction isImageUrl(str) {\n if (!str || typeof str !== 'string') return false;\n\n // Check for base64 data URI\n if (/^data:image\\//i.test(str)) return true;\n\n // Check for image file extensions\n if (/\\.(jpg|jpeg|png|gif|bmp|webp|svg|ico)(\\?.*)?$/i.test(str)) return true;\n\n // Check for URL patterns that look like images\n if (/^(https?:)?\\/\\/.+\\.(jpg|jpeg|png|gif|bmp|webp|svg|ico)(\\?.*)?$/i.test(str)) return true;\n return false;\n}\n\n/**\n * Generate icon HTML based on icon type\n * @param {string} icon - Icon class name or image URL\n * @returns {string} - HTML string for the icon\n */\nfunction generateIconHTML(icon) {\n if (!icon) return '';\n\n // Check if icon is an image URL\n if (isImageUrl(icon)) {\n return \"<img width=\\\"20\\\" height=\\\"20\\\" src=\\\"\".concat(icon, \"\\\" alt=\\\"menu icon\\\" style=\\\"width: 20px; height: 20px; object-fit: contain;\\\" />\");\n }\n\n // Otherwise treat as icon class\n return \"<span class=\\\"\".concat(icon, \"\\\"></span>\");\n}\n\n/**\n * Generate TopBar Menu DOM HTML\n * @param {Object} options - Menu options\n * @param {string|null} options.icon - Icon class name or image URL\n * @param {string} options.title - Menu title (can contain HTML)\n * @returns {string} - Generated HTML string\n */\nfunction generateTopBarMenuDOM(_ref2) {\n var _ref2$icon = _ref2.icon,\n icon = _ref2$icon === void 0 ? null : _ref2$icon,\n _ref2$title = _ref2.title,\n title = _ref2$title === void 0 ? \"\" : _ref2$title;\n var safeTitle = title || \"\";\n var trimmedTitle = safeTitle.trim();\n\n // Generate icon HTML from icon property\n var iconHTML = generateIconHTML(icon);\n var hasIconProperty = iconHTML !== '';\n\n // Check if title is a complete block-level element (div) from plugins like Yoast\n // These should be rendered as-is to preserve plugin CSS styling\n var isCompleteBlockElement = /^<div\\b[^>]*>[\\s\\S]*<\\/div>$/i.test(trimmedTitle);\n\n // Check if title contains inline HTML elements (span, img, etc.) mixed with text\n var hasInlineHTMLInTitle = /<(span|img|svg|i|a)\\b/i.test(safeTitle);\n\n // Generate title HTML\n var titleHTML;\n if (isCompleteBlockElement) {\n // Plugin HTML like Yoast - render as-is to preserve their CSS classes\n titleHTML = trimmedTitle;\n } else if (hasInlineHTMLInTitle) {\n // Mixed content like \"<span class='ab-icon'></span><span>Text</span>\"\n var cleanedTitle = safeTitle.replaceAll('&nbsp;', '');\n\n // If icon property exists, remove ab-icon and img tags from title to avoid duplicates\n if (hasIconProperty) {\n // Remove ab-icon spans\n cleanedTitle = cleanedTitle.replace(/<span[^>]*class=[\"'][^\"']*ab-icon[^\"']*[\"'][^>]*>[\\s\\S]*?<\\/span>/gi, '');\n // Remove img tags\n cleanedTitle = cleanedTitle.replace(/<img[^>]*>/gi, '');\n }\n titleHTML = \"<div class=\\\"adminify-top-menu-item-has-icon\\\" style=\\\"display: inline-flex; align-items: center; flex-wrap: wrap; gap: 8px;\\\">\".concat(cleanedTitle, \"</div>\");\n } else {\n titleHTML = \"<span>\".concat(safeTitle, \"</span>\");\n }\n return \"\".concat(iconHTML).concat(titleHTML);\n}\n\n/**\n * Recursively find an admin bar node by its id.\n * Submenus may be either arrays or keyed objects, so normalize both.\n * @param {Array|Object} nodes - Admin bar nodes / submenu\n * @param {string} id - Node id to find\n * @returns {Object|null} - Matching node or null\n */\nfunction findAdminBarNode(nodes, id) {\n if (!nodes) return null;\n var list = Array.isArray(nodes) ? nodes : Object.values(nodes);\n var _iterator = _createForOfIteratorHelper(list),\n _step;\n try {\n for (_iterator.s(); !(_step = _iterator.n()).done;) {\n var node = _step.value;\n if (!node || _typeof(node) !== \"object\") continue;\n if (node.id === id) return node;\n var found = findAdminBarNode(node.submenu, id);\n if (found) return found;\n }\n } catch (err) {\n _iterator.e(err);\n } finally {\n _iterator.f();\n }\n return null;\n}\n\n/**\n * Resolve the \"Edit Profile\" menu from the Admin Bar Editor.\n * Mirrors the editor for the profile (my-account > user-info) node:\n * - visibility: hidden nodes are removed from the tree or have menu_status === false.\n * - title: a custom title (e.g. \"Profile Editing\") is used when set; the default\n * WordPress title is an avatar/name HTML block, so fall back to \"Edit Profile\".\n * Falls back to the default label/visibility when the my-account tree is unavailable.\n * @returns {{ visible: boolean, title: string }}\n */\nfunction getEditProfileMenu() {\n var _adminify_admin_bar_d5;\n var defaultLabel = \"Edit Profile\";\n var myAccount = findAdminBarNode((_adminify_admin_bar_d5 = adminify_admin_bar_data) === null || _adminify_admin_bar_d5 === void 0 ? void 0 : _adminify_admin_bar_d5.data, \"my-account\");\n\n // No my-account data available, keep default behavior.\n if (!myAccount) return {\n visible: true,\n title: defaultLabel\n };\n var userInfo = findAdminBarNode(myAccount.submenu, \"user-info\");\n if (!userInfo || userInfo.menu_status === false) {\n return {\n visible: false,\n title: defaultLabel\n };\n }\n var rawTitle = typeof userInfo.title === \"string\" ? userInfo.title.trim() : \"\";\n // Default title is an avatar/name HTML block; use the standard label for it.\n var isDefaultHtmlTitle = /<(img|span)\\b/i.test(rawTitle);\n var title = rawTitle && !isDefaultHtmlTitle ? rawTitle : defaultLabel;\n return {\n visible: true,\n title: title\n };\n}\n\n/**\n * Get the visible items of the account menu (my-account > user-actions group).\n * Includes core items (user-info, logout) and any custom items added in the\n * Admin Bar Editor, in their saved order. Hidden items (removed from the tree\n * or menu_status === false) are excluded.\n * Returns null when the my-account/user-actions tree is unavailable so callers\n * can fall back to the default UI.\n * @returns {Array|null}\n */\nfunction getUserActionMenu() {\n var _adminify_admin_bar_d6;\n var myAccount = findAdminBarNode((_adminify_admin_bar_d6 = adminify_admin_bar_data) === null || _adminify_admin_bar_d6 === void 0 ? void 0 : _adminify_admin_bar_d6.data, \"my-account\");\n if (!myAccount) return null;\n var userActions = findAdminBarNode(myAccount.submenu, \"user-actions\");\n if (!userActions) return null;\n var submenu = userActions.submenu;\n var list = Array.isArray(submenu) ? submenu : Object.values(submenu || {});\n return list.filter(function (item) {\n return item && item.menu_status !== false;\n });\n}\n\n// Check if URL has different origin than current page\nvar isExternalUrl = function isExternalUrl(item) {\n var _item$meta;\n if (!item) return false;\n\n // check meta\n if ((item === null || item === void 0 || (_item$meta = item.meta) === null || _item$meta === void 0 ? void 0 : _item$meta.target) === \"_blank\") return true;\n var url = item === null || item === void 0 ? void 0 : item.href;\n try {\n var linkUrl = new URL(url, window.location.origin);\n return linkUrl.origin !== window.location.origin;\n } catch (e) {\n return false;\n }\n};\n\n//# sourceURL=webpack://adminify/./dev/admin/frame/utils/uitls.js?");
330 330
331 331 /***/ }),
332 332
333 333 /***/ "./node_modules/react-dom/cjs/react-dom.development.js":