PluginProbe
Elementor Website Builder – more than just a page builder / trunk
Elementor Website Builder – more than just a page builder vtrunk
4.3.4 4.3.3 4.3.2 4.3.1 4.3.0 4.3.0-beta3 4.3.0-beta2 4.3.0-beta1 4.2.4 4.2.3 4.2.2 4.2.1 4.2.0 4.1.5 4.2.0-beta2 4.2.0-dev2 4.2.0-beta1 4.1.4 4.1.3 4.1.2 4.1.1 4.1.0 4.1.0-beta3 4.1.0-dev3 4.0.9 All 457 releases
← All changes | assets/js/packages/editor-site-navigation/editor-site-navigation.js +1212 -2 4.1.2 → trunk View file →
@@ -1,3 +1,1213 @@
1 -/*! For license information please see editor-site-navigation.js.LICENSE.txt */
2 -!function(){"use strict";var e={"./packages/packages/core/editor-site-navigation/src/api/post.ts":function(e,t,n){n.r(t),n.d(t,{POST_PER_PAGE:function(){return i},createRequest:function(){return createRequest},deleteRequest:function(){return deleteRequest},duplicateRequest:function(){return duplicateRequest},getRequest:function(){return getRequest},postTypesMap:function(){return r},updateRequest:function(){return updateRequest}});var o=n("@wordpress/api-fetch"),a=n.n(o),s=n("@wordpress/i18n");const r={page:{labels:{singular_name:(0,s.__)("Page","elementor"),plural_name:(0,s.__)("Pages","elementor")},rest_base:"pages"}},i=10,getRequest=async(e,t)=>{const n=`/wp/v2/${r[e].rest_base}`+"?"+new URLSearchParams({status:"any",order:"asc",page:t.toString(),per_page:i.toString(),_fields:["id","type","title","link","status","user_can"].join(",")}).toString(),o=await a()({path:n,parse:!1});return{data:await o.json(),totalPages:Number(o.headers.get("x-wp-totalpages")),totalPosts:Number(o.headers.get("x-wp-total")),currentPage:t}},createRequest=(e,t)=>{const n=`/wp/v2/${r[e].rest_base}`;return a()({path:n,method:"POST",data:t})},updateRequest=(e,t)=>{const n=`/wp/v2/${r[e].rest_base}`,{id:o,...s}=t;return a()({path:`${n}/${o}`,method:"POST",data:s})},deleteRequest=(e,t)=>{const n=`/wp/v2/${r[e].rest_base}`;return a()({path:`${n}/${t}`,method:"DELETE"})},duplicateRequest=e=>a()({path:"/elementor/v1/site-navigation/duplicate-post",method:"POST",data:{post_id:e.id,title:e.title}})},"./packages/packages/core/editor-site-navigation/src/api/recent-posts.ts":function(e,t,n){n.r(t),n.d(t,{NUMBER_OF_RECENT_POSTS:function(){return r},baseUrl:function(){return s},getRequest:function(){return getRequest}});var o=n("@wordpress/api-fetch"),a=n.n(o);const s="/elementor/v1/site-navigation/recent-posts",r=6,getRequest=()=>{const e=new URLSearchParams({posts_per_page:`${r}`}),t=`${s}?${e.toString()}`;return a()({path:t})}},"./packages/packages/core/editor-site-navigation/src/api/settings.ts":function(e,t,n){n.r(t),n.d(t,{getSettings:function(){return getSettings},updateSettings:function(){return updateSettings}});var o=n("@wordpress/api-fetch"),a=n.n(o);const getSettings=()=>a()({path:"/elementor/v1/site-navigation/homepage"}),updateSettings=e=>a()({path:"/wp/v2/settings",method:"POST",data:e})},"./packages/packages/core/editor-site-navigation/src/api/user.ts":function(e,t,n){n.r(t),n.d(t,{getUser:function(){return getUser}});var o=n("@wordpress/api-fetch"),a=n.n(o);const getUser=()=>{const e="/wp/v2/users/me?"+new URLSearchParams({_fields:["capabilities"].join(","),context:"edit"}).toString();return a()({path:e})}},"./packages/packages/core/editor-site-navigation/src/components/panel/actions-menu/action-menu-item.tsx":function(e,t,n){n.r(t),n.d(t,{default:function(){return ActionMenuItem}});var o=n("react"),a=n("@elementor/ui");function ActionMenuItem({title:e,icon:t,MenuItemProps:n}){return o.createElement(a.MenuItem,n,o.createElement(a.ListItemIcon,{sx:{color:"inherit"}},o.createElement(t,null)),o.createElement(a.ListItemText,{primary:e}))}},"./packages/packages/core/editor-site-navigation/src/components/panel/actions-menu/actions/delete.tsx":function(e,t,n){n.r(t),n.d(t,{default:function(){return Delete}});var o=n("react"),a=n("@elementor/editor-documents"),s=n("@elementor/icons"),r=n("@elementor/ui"),i=n("@wordpress/i18n"),c=n("./packages/packages/core/editor-site-navigation/src/contexts/post-list-context.tsx"),l=n("./packages/packages/core/editor-site-navigation/src/hooks/use-posts-actions.ts"),p=n("./packages/packages/core/editor-site-navigation/src/components/panel/actions-menu/action-menu-item.tsx");function Delete({post:e}){const[t,n]=(0,o.useState)(!1),r=(0,a.__useActiveDocument)(),c=r?.id===e.id,l=!e.user_can.delete||e.isHome||c;return o.createElement(o.Fragment,null,o.createElement(p.default,{title:(0,i.__)("Delete","elementor"),icon:s.TrashIcon,MenuItemProps:{disabled:l,onClick:()=>n(!0),sx:{"&:hover":{color:"error.main"}}}}),t&&o.createElement(DeleteDialog,{post:e,setIsDialogOpen:n}))}function DeleteDialog({post:e,setIsDialogOpen:t}){const{type:n}=(0,c.usePostListContext)(),{deletePost:a}=(0,l.usePostActions)(n),{setError:s}=(0,c.usePostListContext)(),p=(0,i.sprintf)((0,i.__)('Delete "%s"?',"elementor"),e.title.rendered),handleCancel=()=>{a.isPending||t(!1)};return o.createElement(r.Dialog,{open:!0,onClose:handleCancel,"aria-labelledby":"delete-dialog"},o.createElement(r.DialogTitle,{noWrap:!0},p),o.createElement(r.Divider,null),o.createElement(r.DialogContent,null,o.createElement(r.DialogContentText,null,(0,i.__)("The page and its content will be deleted forever and we won’t be able to recover them.","elementor"))),o.createElement(r.DialogActions,null,o.createElement(r.Button,{variant:"contained",color:"secondary",onClick:handleCancel,disabled:a.isPending},(0,i.__)("Cancel","elementor")),o.createElement(r.Button,{variant:"contained",color:"error",onClick:async()=>{try{await a.mutateAsync(e.id)}catch{s(),t(!1)}},disabled:a.isPending},a.isPending?o.createElement(r.CircularProgress,null):(0,i.__)("Delete","elementor"))))}},"./packages/packages/core/editor-site-navigation/src/components/panel/actions-menu/actions/duplicate.tsx":function(e,t,n){n.r(t),n.d(t,{default:function(){return Duplicate}});var o=n("react"),a=n("@elementor/icons"),s=n("@wordpress/i18n"),r=n("./packages/packages/core/editor-site-navigation/src/contexts/post-list-context.tsx"),i=n("./packages/packages/core/editor-site-navigation/src/hooks/use-user.ts"),c=n("./packages/packages/core/editor-site-navigation/src/components/panel/actions-menu/action-menu-item.tsx");function Duplicate({post:e,popupState:t}){const{setEditMode:n}=(0,r.usePostListContext)(),{data:l}=(0,i.default)(),p=!l?.capabilities?.edit_pages;return o.createElement(c.default,{title:(0,s.__)("Duplicate","elementor"),icon:a.CopyIcon,MenuItemProps:{disabled:p,onClick:()=>{t.close(),n({mode:"duplicate",details:{postId:e.id,title:e.title.rendered}})}}})}},"./packages/packages/core/editor-site-navigation/src/components/panel/actions-menu/actions/rename.tsx":function(e,t,n){n.r(t),n.d(t,{default:function(){return Rename}});var o=n("react"),a=n("@elementor/icons"),s=n("@wordpress/i18n"),r=n("./packages/packages/core/editor-site-navigation/src/contexts/post-list-context.tsx"),i=n("./packages/packages/core/editor-site-navigation/src/components/panel/actions-menu/action-menu-item.tsx");function Rename({post:e}){const{setEditMode:t}=(0,r.usePostListContext)();return o.createElement(i.default,{title:(0,s.__)("Rename","elementor"),icon:a.EraseIcon,MenuItemProps:{disabled:!e.user_can.edit,onClick:()=>{t({mode:"rename",details:{postId:e.id}})}}})}},"./packages/packages/core/editor-site-navigation/src/components/panel/actions-menu/actions/set-home.tsx":function(e,t,n){n.r(t),n.d(t,{default:function(){return SetHome}});var o=n("react"),a=n("@elementor/icons"),s=n("@elementor/ui"),r=n("@wordpress/i18n"),i=n("./packages/packages/core/editor-site-navigation/src/contexts/post-list-context.tsx"),c=n("./packages/packages/core/editor-site-navigation/src/hooks/use-homepage-actions.ts"),l=n("./packages/packages/core/editor-site-navigation/src/hooks/use-user.ts"),p=n("./packages/packages/core/editor-site-navigation/src/components/panel/actions-menu/action-menu-item.tsx");function SetHome({post:e,closeMenu:t}){const{updateSettingsMutation:n}=(0,c.useHomepageActions)(),{setError:u}=(0,i.usePostListContext)(),{data:d}=(0,l.default)(),m=!!d?.capabilities?.manage_options,g="publish"===e.status,f=!!e.isHome,k=!m||f||!g||n.isPending;return o.createElement(p.default,{title:(0,r.__)("Set as homepage","elementor"),icon:n.isPending?s.CircularProgress:a.HomeIcon,MenuItemProps:{disabled:k,onClick:async()=>{try{await n.mutateAsync({show_on_front:"page",page_on_front:e.id})}catch{u()}finally{t()}}}})}},"./packages/packages/core/editor-site-navigation/src/components/panel/actions-menu/actions/view.tsx":function(e,t,n){n.r(t),n.d(t,{default:function(){return View}});var o=n("react"),a=n("@elementor/icons"),s=n("@wordpress/i18n"),r=n("./packages/packages/core/editor-site-navigation/src/api/post.ts"),i=n("./packages/packages/core/editor-site-navigation/src/contexts/post-list-context.tsx"),c=n("./packages/packages/core/editor-site-navigation/src/components/panel/actions-menu/action-menu-item.tsx");function View({post:e}){const{type:t}=(0,i.usePostListContext)(),n=(0,s.__)("View %s","elementor").replace("%s",r.postTypesMap[t].labels.singular_name);return o.createElement(c.default,{title:n,icon:a.EyeIcon,MenuItemProps:{onClick:()=>window.open(e.link,"_blank")}})}},"./packages/packages/core/editor-site-navigation/src/components/panel/add-new-button.tsx":function(e,t,n){n.r(t),n.d(t,{default:function(){return AddNewButton}});var o=n("react"),a=n("@elementor/icons"),s=n("@elementor/ui"),r=n("@wordpress/i18n"),i=n("./packages/packages/core/editor-site-navigation/src/contexts/post-list-context.tsx"),c=n("./packages/packages/core/editor-site-navigation/src/hooks/use-user.ts");function AddNewButton(){const{setEditMode:e}=(0,i.usePostListContext)(),{data:t}=(0,c.default)();return o.createElement(s.Button,{size:"small",startIcon:o.createElement(a.PlusIcon,null),disabled:!t?.capabilities?.edit_pages,onClick:()=>{e({mode:"create",details:{}})},sx:{px:1.5}},(0,r.__)("Add New","elementor"))}},"./packages/packages/core/editor-site-navigation/src/components/panel/error-snackbar.tsx":function(e,t,n){n.r(t);var o=n("react"),a=n("@elementor/ui");t.default=({open:e,onClose:t})=>o.createElement(a.Snackbar,{open:e,onClose:t,anchorOrigin:{vertical:"bottom",horizontal:"left"}},o.createElement(a.Alert,{onClose:t,severity:"error",sx:{width:"100%"}},o.createElement(a.Typography,{component:"span",sx:{fontWeight:"bold"}},"We couldn’t complete the action.")," ","Please try again"))},"./packages/packages/core/editor-site-navigation/src/components/panel/panel.ts":function(e,t,n){n.r(t),n.d(t,{panel:function(){return s},usePanelActions:function(){return i},usePanelStatus:function(){return r}});var o=n("@elementor/editor-panels"),a=n("./packages/packages/core/editor-site-navigation/src/components/panel/shell.tsx");const{panel:s,usePanelStatus:r,usePanelActions:i}=(0,o.__createPanel)({id:"site-navigation-panel",component:a.default})},"./packages/packages/core/editor-site-navigation/src/components/panel/posts-list/collapsible-list.tsx":function(e,t,n){n.r(t),n.d(t,{default:function(){return CollapsibleList}});var o=n("react"),a=n("@elementor/icons"),s=n("@elementor/ui");const r=(0,s.styled)(a.ChevronDownIcon,{shouldForwardProp:e=>"isOpen"!==e})(({theme:e,isOpen:t})=>({transform:t?"rotate(0deg)":"rotate(-90deg)",transition:e.transitions.create("transform",{duration:e.transitions.duration.standard})})),i=(0,s.styled)(s.ListItemIcon)(({theme:e})=>({minWidth:e.spacing(4)}));function CollapsibleList({label:e,Icon:t,isOpenByDefault:n=!1,children:a}){const[c,l]=(0,o.useState)(n);return o.createElement(o.Fragment,null,o.createElement(s.ListItem,null,o.createElement(i,{sx:{color:"text.secondary"}},o.createElement(s.IconButton,{onClick:()=>l(e=>!e),size:"small",sx:{color:"inherit"}},o.createElement(r,{fontSize:"small",isOpen:c}))),o.createElement(i,{size:"small",sx:{color:"inherit"}},o.createElement(t,{fontSize:"small"})),o.createElement(s.ListItemText,{primaryTypographyProps:{variant:"subtitle2",component:"span"},primary:e})),o.createElement(s.Collapse,{in:c,timeout:"auto",unmountOnExit:!0},o.createElement(s.List,{dense:!0},a)),o.createElement(s.Divider,{sx:{mt:1}}))}},"./packages/packages/core/editor-site-navigation/src/components/panel/posts-list/error-state.tsx":function(e,t,n){n.r(t),n.d(t,{default:function(){return ErrorState}});var o=n("react"),a=n("@elementor/icons"),s=n("@elementor/ui"),r=n("@wordpress/i18n");function ErrorState(){return o.createElement(s.Box,{sx:{display:"flex",flexDirection:"column",justifyContent:"center",alignItems:"center",pt:"40px",gap:"16px"}},o.createElement(a.Error404TemplateIcon,null),o.createElement(s.Box,{sx:{display:"flex",flexDirection:"column",justifyContent:"center",alignItems:"center",gap:"8px"}},o.createElement(s.Typography,{variant:"body1",color:"text.primary"},(0,r.__)("We couldn’t display your pages.","elementor")),o.createElement(s.Box,null,o.createElement(s.Typography,{variant:"body2",color:"text.primary",sx:{textAlign:"center"}},(0,r.__)("It’s probably a temporary issue.","elementor")),o.createElement(s.Typography,{variant:"body2",color:"text.primary",sx:{textAlign:"center"}},(0,r.__)("If the problem persists,","elementor")," ",o.createElement(s.Link,{target:"_blank",href:"https://go.elementor.com/wp-editor-support-open-ticket/"},"Notify support")))))}},"./packages/packages/core/editor-site-navigation/src/components/panel/posts-list/list-items/edit-mode-template.tsx":function(e,t,n){n.r(t),n.d(t,{default:function(){return EditModeTemplate}});var o=n("react"),a=n("@elementor/icons"),s=n("@elementor/ui"),r=n("@wordpress/i18n"),i=n("./packages/packages/core/editor-site-navigation/src/contexts/post-list-context.tsx");function EditModeTemplate({postTitle:e,isLoading:t,callback:n}){const[a,i]=(0,o.useState)(e),[c,l]=(0,o.useState)(!1),[p,u]=(0,o.useState)(null),d=(0,o.useRef)(),validateInput=e=>""!==e.trim(),runCallback=()=>{validateInput(a)&&n(a)};return o.createElement(o.Fragment,null,o.createElement(s.ListItem,{secondaryAction:o.createElement(CloseButton,{isLoading:t,closeButton:d})},o.createElement(s.Box,{width:"100%",component:"form",onSubmit:e=>{e.preventDefault(),runCallback()}},o.createElement(s.TextField,{autoFocus:!0,fullWidth:!0,value:a,onChange:e=>{c||l(!0);const t=e.target.value;validateInput(t)?u(null):u((0,r.__)("Name is required","elementor")),i(t)},disabled:t,error:!!p,onBlur:e=>{d.current!==e.relatedTarget&&runCallback()},variant:"outlined",color:"secondary",size:"small"}))),p&&o.createElement(s.ListItem,null,o.createElement(s.ListItemText,{sx:{color:"error.main"}},p)))}function CloseButton({isLoading:e,closeButton:t}){const{resetEditMode:n}=(0,i.usePostListContext)();return o.createElement(s.IconButton,{size:"small",color:"secondary",onClick:n,ref:t,disabled:e},e?o.createElement(s.CircularProgress,null):o.createElement(a.XIcon,{fontSize:"small"}))}},"./packages/packages/core/editor-site-navigation/src/components/panel/posts-list/list-items/list-item-create.tsx":function(e,t,n){n.r(t),n.d(t,{default:function(){return ListItemCreate}});var o=n("react"),a=n("@elementor/editor-documents"),s=n("@wordpress/i18n"),r=n("./packages/packages/core/editor-site-navigation/src/contexts/post-list-context.tsx"),i=n("./packages/packages/core/editor-site-navigation/src/hooks/use-posts-actions.ts"),c=n("./packages/packages/core/editor-site-navigation/src/components/panel/posts-list/list-items/edit-mode-template.tsx");function ListItemCreate(){const{type:e,resetEditMode:t}=(0,r.usePostListContext)(),{createPost:n}=(0,i.usePostActions)(e),l=(0,a.__useNavigateToDocument)(),{setError:p}=(0,r.usePostListContext)();return o.createElement(c.default,{postTitle:(0,s.__)("New Page","elementor"),isLoading:n.isPending,callback:async e=>{try{const{id:t}=await n.mutateAsync({title:e,status:"draft"});l(t)}catch{p()}finally{t()}}})}},"./packages/packages/core/editor-site-navigation/src/components/panel/posts-list/list-items/list-item-duplicate.tsx":function(e,t,n){n.r(t),n.d(t,{default:function(){return ListItemDuplicate}});var o=n("react"),a=n("@elementor/editor-documents"),s=n("@wordpress/i18n"),r=n("./packages/packages/core/editor-site-navigation/src/contexts/post-list-context.tsx"),i=n("./packages/packages/core/editor-site-navigation/src/hooks/use-posts-actions.ts"),c=n("./packages/packages/core/editor-site-navigation/src/components/panel/posts-list/list-items/edit-mode-template.tsx");function ListItemDuplicate(){const{type:e,editMode:t,resetEditMode:n}=(0,r.usePostListContext)(),l=(0,a.__useNavigateToDocument)(),{duplicatePost:p}=(0,i.usePostActions)(e),{setError:u}=(0,r.usePostListContext)();if("duplicate"!==t.mode)return null;return o.createElement(c.default,{postTitle:`${t.details.title} ${(0,s.__)("copy","elementor")}`,isLoading:p.isPending,callback:async e=>{try{const{post_id:n}=await p.mutateAsync({id:t.details.postId,title:e});l(n)}catch{u()}finally{n()}}})}},"./packages/packages/core/editor-site-navigation/src/components/panel/posts-list/list-items/list-item-rename.tsx":function(e,t,n){n.r(t),n.d(t,{default:function(){return ListItemRename}});var o=n("react"),a=n("@elementor/editor-documents"),s=n("./packages/packages/core/editor-site-navigation/src/contexts/post-list-context.tsx"),r=n("./packages/packages/core/editor-site-navigation/src/hooks/use-posts-actions.ts"),i=n("./packages/packages/core/editor-site-navigation/src/hooks/use-rename-active-document.ts"),c=n("./packages/packages/core/editor-site-navigation/src/components/panel/posts-list/list-items/edit-mode-template.tsx");function ListItemRename({post:e}){const{type:t,resetEditMode:n}=(0,s.usePostListContext)(),{updatePost:l}=(0,r.usePostActions)(t),{setError:p}=(0,s.usePostListContext)(),u=(0,a.__useActiveDocument)(),d=(0,i.default)(),m=u?.id===e.id,g=m?u?.title:e.title.rendered;return o.createElement(c.default,{postTitle:g,isLoading:l.isPending,callback:async t=>{t===g&&n();try{m?await d(t):await l.mutateAsync({id:e.id,title:t})}catch{p()}finally{n()}}})}},"./packages/packages/core/editor-site-navigation/src/components/panel/posts-list/list-items/list-item-view.tsx":function(e,t,n){n.r(t),n.d(t,{default:function(){return ListItemView}});var o=n("react"),a=n("@elementor/editor-documents"),s=n("@elementor/icons"),r=n("@elementor/ui"),i=n("@wordpress/i18n"),c=n("./packages/packages/core/editor-site-navigation/src/components/shared/page-title-and-status.tsx"),l=n("./packages/packages/core/editor-site-navigation/src/components/panel/actions-menu/actions/delete.tsx"),p=n("./packages/packages/core/editor-site-navigation/src/components/panel/actions-menu/actions/duplicate.tsx"),u=n("./packages/packages/core/editor-site-navigation/src/components/panel/actions-menu/actions/rename.tsx"),d=n("./packages/packages/core/editor-site-navigation/src/components/panel/actions-menu/actions/set-home.tsx"),m=n("./packages/packages/core/editor-site-navigation/src/components/panel/actions-menu/actions/view.tsx");function _extends(){return _extends=Object.assign?Object.assign.bind():function(e){for(var t=1;t<arguments.length;t++){var n=arguments[t];for(var o in n)({}).hasOwnProperty.call(n,o)&&(e[o]=n[o])}return e},_extends.apply(null,arguments)}const DisabledPostTooltip=({children:e,isDisabled:t})=>{if(t){const t=o.createElement(r.Typography,{variant:"caption"},"You cannot edit this page.",o.createElement("br",null),"To edit it directly, contact the site owner");return o.createElement(r.Tooltip,{title:t,placement:"bottom",arrow:!1},e)}return o.createElement(o.Fragment,null,e)};function ListItemView({post:e}){const t=(0,a.__useActiveDocument)(),n=(0,a.__useNavigateToDocument)(),g=(0,r.usePopupState)({variant:"popover",popupId:"post-actions",disableAutoFocus:!0}),f=t?.id===e.id,k=f?t?.status.value:e.status,v=f?t?.title:e.title.rendered,x=!e.user_can.edit;return o.createElement(o.Fragment,null,o.createElement(DisabledPostTooltip,{isDisabled:x},o.createElement(r.ListItem,{disablePadding:!0,secondaryAction:o.createElement(r.IconButton,_extends({value:!0,size:"small"},(0,r.bindTrigger)(g)),o.createElement(s.DotsVerticalIcon,{fontSize:"small"}))},o.createElement(r.ListItemButton,{selected:f,disabled:x,onClick:()=>{f||n(e.id)},dense:!0},o.createElement(r.ListItemText,{disableTypography:!0},o.createElement(c.default,{title:v,status:k})),e.isHome&&o.createElement(s.HomeIcon,{titleAccess:(0,i.__)("Homepage","elementor"),color:"disabled"})))),o.createElement(r.Menu,_extends({PaperProps:{sx:{mt:2,width:200}},MenuListProps:{dense:!0}},(0,r.bindMenu)(g)),o.createElement(u.default,{post:e}),o.createElement(p.default,{post:e,popupState:g}),o.createElement(l.default,{post:e}),o.createElement(m.default,{post:e}),o.createElement(r.Divider,null),o.createElement(d.default,{post:e,closeMenu:()=>g.close()})))}},"./packages/packages/core/editor-site-navigation/src/components/panel/posts-list/post-list-item.tsx":function(e,t,n){n.r(t),n.d(t,{default:function(){return PostListItem}});var o=n("react"),a=n("./packages/packages/core/editor-site-navigation/src/contexts/post-list-context.tsx"),s=n("./packages/packages/core/editor-site-navigation/src/components/panel/posts-list/list-items/list-item-create.tsx"),r=n("./packages/packages/core/editor-site-navigation/src/components/panel/posts-list/list-items/list-item-duplicate.tsx"),i=n("./packages/packages/core/editor-site-navigation/src/components/panel/posts-list/list-items/list-item-rename.tsx"),c=n("./packages/packages/core/editor-site-navigation/src/components/panel/posts-list/list-items/list-item-view.tsx");function PostListItem({post:e}){const{editMode:t}=(0,a.usePostListContext)();return"rename"===t.mode&&e?.id&&e?.id===t.details.postId?o.createElement(i.default,{post:e}):"create"!==t.mode||e?"duplicate"!==t.mode||e?e?o.createElement(c.default,{post:e}):null:o.createElement(r.default,null):o.createElement(s.default,null)}},"./packages/packages/core/editor-site-navigation/src/components/panel/posts-list/posts-collapsible-list.tsx":function(e,t,n){n.r(t),n.d(t,{default:function(){return PostsCollapsibleList}});var o=n("react"),a=n("@elementor/icons"),s=n("@elementor/ui"),r=n("./packages/packages/core/editor-site-navigation/src/api/post.ts"),i=n("./packages/packages/core/editor-site-navigation/src/contexts/post-list-context.tsx"),c=n("./packages/packages/core/editor-site-navigation/src/hooks/use-homepage.ts"),l=n("./packages/packages/core/editor-site-navigation/src/hooks/use-posts.ts"),p=n("./packages/packages/core/editor-site-navigation/src/components/panel/add-new-button.tsx"),u=n("./packages/packages/core/editor-site-navigation/src/components/panel/posts-list/collapsible-list.tsx"),d=n("./packages/packages/core/editor-site-navigation/src/components/panel/posts-list/error-state.tsx"),m=n("./packages/packages/core/editor-site-navigation/src/components/panel/posts-list/post-list-item.tsx");function PostsCollapsibleList({isOpenByDefault:e=!1}){const{type:t,editMode:n}=(0,i.usePostListContext)(),{data:{posts:g,total:f},isLoading:k,isError:v,fetchNextPage:x,hasNextPage:y,isFetchingNextPage:_}=(0,l.usePosts)(t),{data:E}=(0,c.useHomepage)();if(v)return o.createElement(d.default,null);if(!g||k)return o.createElement(s.Box,{sx:{px:5}},o.createElement(s.Box,{display:"flex",justifyContent:"flex-end",alignItems:"center"},o.createElement(s.Skeleton,{sx:{my:4},animation:"wave",variant:"rounded",width:"110px",height:"28px"})),o.createElement(s.Box,null,o.createElement(s.Skeleton,{sx:{my:3},animation:"wave",variant:"rounded",width:"100%",height:"24px"}),o.createElement(s.Skeleton,{sx:{my:3},animation:"wave",variant:"rounded",width:"70%",height:"24px"}),o.createElement(s.Skeleton,{sx:{my:3},animation:"wave",variant:"rounded",width:"70%",height:"24px"}),o.createElement(s.Skeleton,{sx:{my:3},animation:"wave",variant:"rounded",width:"70%",height:"24px"})));const h=`${r.postTypesMap[t].labels.plural_name} (${f.toString()})`,P=g.map(e=>e.id===E?{...e,isHome:!0}:e).sort((e,t)=>e.id===E?-1:t.id===E?1:0);return o.createElement(o.Fragment,null,o.createElement(s.Box,{display:"flex",justifyContent:"flex-end",alignItems:"center",sx:{py:1,px:2}},o.createElement(p.default,null)),o.createElement(s.List,{dense:!0},o.createElement(u.default,{label:h,Icon:a.PageTypeIcon,isOpenByDefault:e||!1},P.map(e=>o.createElement(m.default,{key:e.id,post:e})),["duplicate","create"].includes(n.mode)&&o.createElement(m.default,null),y&&o.createElement(s.Box,{sx:{display:"flex",justifyContent:"center"}},o.createElement(s.Button,{onClick:x,color:"secondary"},_?o.createElement(s.CircularProgress,null):"Load More")))))}},"./packages/packages/core/editor-site-navigation/src/components/panel/shell.tsx":function(e,t,n){n.r(t);var o=n("react"),a=n("@elementor/editor-panels"),s=n("@wordpress/i18n"),r=n("./packages/packages/core/editor-site-navigation/src/contexts/post-list-context.tsx"),i=n("./packages/packages/core/editor-site-navigation/src/components/panel/error-snackbar.tsx"),c=n("./packages/packages/core/editor-site-navigation/src/components/panel/posts-list/posts-collapsible-list.tsx");t.default=()=>{const[e,t]=(0,o.useState)(!1);return o.createElement(a.Panel,null,o.createElement(a.PanelHeader,null,o.createElement(a.PanelHeaderTitle,null,(0,s.__)("Pages","elementor"))),o.createElement(a.PanelBody,null,o.createElement(r.PostListContextProvider,{type:"page",setError:()=>t(!0)},o.createElement(c.default,{isOpenByDefault:!0})),o.createElement(i.default,{open:e,onClose:()=>t(!1)})))}},"./packages/packages/core/editor-site-navigation/src/components/shared/page-title-and-status.tsx":function(e,t,n){n.r(t),n.d(t,{default:function(){return PageTitleAndStatus}});var o=n("react"),a=n("@elementor/ui"),s=n("./packages/packages/core/editor-site-navigation/src/hooks/use-reverse-html-entities.ts");const PageStatus=({status:e})=>"publish"===e?null:o.createElement(a.Typography,{component:"span",variant:"body2",color:"text.secondary",sx:{textTransform:"capitalize",fontStyle:"italic",whiteSpace:"nowrap",flexBasis:"content"}},"(",e,")"),PageTitle=({title:e})=>{const t=(0,s.useReverseHtmlEntities)(e);return o.createElement(a.Typography,{component:"span",variant:"body2",color:"text.secondary",noWrap:!0,sx:{flexBasis:"auto"}},t)};function PageTitleAndStatus({title:e,status:t}){return o.createElement(a.Box,{display:"flex"},o.createElement(PageTitle,{title:e})," ",o.createElement(PageStatus,{status:t}))}},"./packages/packages/core/editor-site-navigation/src/components/top-bar/chip-doc-type.tsx":function(e,t,n){n.r(t),n.d(t,{default:function(){return DocTypeChip}});var o=n("react"),a=n("@elementor/icons"),s=n("@elementor/ui");const r=(0,n("./packages/packages/core/editor-site-navigation/src/icons-map.ts").getIconsMap)();function DocTypeChip({postType:e,docType:t,label:n}){const i="elementor_library"===e?"global":"primary",c=r[t]||a.PostTypeIcon;return o.createElement(s.Chip,{component:"span",size:"small",variant:"outlined",label:n,"data-value":t,color:i,icon:o.createElement(c,null),sx:{ml:1,cursor:"inherit"}})}},"./packages/packages/core/editor-site-navigation/src/components/top-bar/create-post-list-item.tsx":function(e,t,n){n.r(t),n.d(t,{CreatePostListItem:function(){return CreatePostListItem}});var o=n("react"),a=n("@elementor/editor-documents"),s=n("@elementor/events"),r=n("@elementor/icons"),i=n("@elementor/ui"),c=n("@wordpress/i18n"),l=n("./packages/packages/core/editor-site-navigation/src/hooks/use-create-page.ts"),p=n("./packages/packages/core/editor-site-navigation/src/hooks/use-user.ts");function _extends(){return _extends=Object.assign?Object.assign.bind():function(e){for(var t=1;t<arguments.length;t++){var n=arguments[t];for(var o in n)({}).hasOwnProperty.call(n,o)&&(e[o]=n[o])}return e},_extends.apply(null,arguments)}function CreatePostListItem({closePopup:e,...t}){const{create:n,isLoading:u}=(0,l.default)(),d=(0,a.__useNavigateToDocument)(),{data:m}=(0,p.default)(),{dispatchEvent:g,config:f}=(0,s.useMixpanel)();return o.createElement(i.MenuItem,_extends({disabled:u||!m?.capabilities?.edit_pages,onClick:async()=>{const t=f?.names?.editorOne?.topBarPageList;t&&g?.(t,{app_type:f?.appTypes?.editor,window_name:f?.appTypes?.editor,interaction_type:f?.triggers?.click?.toLowerCase(),target_type:f?.targetTypes?.dropdownItem,target_name:f?.targetNames?.pageList?.addNewPage,interaction_result:f?.interactionResults?.create,target_location:f?.locations?.topBar?.replace(/\s+/g,"_").toLowerCase(),location_l1:f?.secondaryLocations?.pageListDropdown?.replace(/\s+/g,"_").toLowerCase(),location_l2:f?.targetTypes?.dropdownItem});const{id:o}=await n();e(),await d(o)}},t),o.createElement(i.ListItemIcon,null,u?o.createElement(i.CircularProgress,{size:"1.25rem"}):o.createElement(r.PlusIcon,{fontSize:"small"})),o.createElement(i.ListItemText,{primaryTypographyProps:{variant:"body2"},primary:(0,c.__)("Add new page","elementor")}))}},"./packages/packages/core/editor-site-navigation/src/components/top-bar/indicator.tsx":function(e,t,n){n.r(t),n.d(t,{default:function(){return Indicator}});var o=n("react"),a=n("@elementor/ui");function _extends(){return _extends=Object.assign?Object.assign.bind():function(e){for(var t=1;t<arguments.length;t++){var n=arguments[t];for(var o in n)({}).hasOwnProperty.call(n,o)&&(e[o]=n[o])}return e},_extends.apply(null,arguments)}function Indicator({title:e,status:t}){return o.createElement(Tooltip,{title:e},o.createElement(a.Stack,{component:"span",direction:"row",alignItems:"center",spacing:.5},o.createElement(a.Typography,{component:"span",variant:"body2",sx:{maxWidth:"120px"},noWrap:!0},e),"publish"!==t.value&&o.createElement(a.Typography,{component:"span",variant:"body2",sx:{fontStyle:"italic"}},"(",t.label,")")))}function Tooltip(e){return o.createElement(a.Tooltip,_extends({PopperProps:{sx:{"&.MuiTooltip-popper .MuiTooltip-tooltip.MuiTooltip-tooltipPlacementBottom":{mt:2.7}}}},e))}},"./packages/packages/core/editor-site-navigation/src/components/top-bar/post-list-item.tsx":function(e,t,n){n.r(t),n.d(t,{PostListItem:function(){return PostListItem}});var o=n("react"),a=n("@elementor/editor-documents"),s=n("@elementor/events"),r=n("@elementor/ui"),i=n("./packages/packages/core/editor-site-navigation/src/hooks/use-reverse-html-entities.ts"),c=n("./packages/packages/core/editor-site-navigation/src/components/top-bar/chip-doc-type.tsx");function _extends(){return _extends=Object.assign?Object.assign.bind():function(e){for(var t=1;t<arguments.length;t++){var n=arguments[t];for(var o in n)({}).hasOwnProperty.call(n,o)&&(e[o]=n[o])}return e},_extends.apply(null,arguments)}function PostListItem({post:e,closePopup:t,...n}){const l=(0,a.__useNavigateToDocument)(),p=(0,i.useReverseHtmlEntities)(e.title),{dispatchEvent:u,config:d}=(0,s.useMixpanel)();return o.createElement(r.MenuItem,_extends({disabled:!e.user_can.edit,onClick:async()=>{const n=d?.names?.editorOne?.topBarPageList;n&&u?.(n,{app_type:d?.appTypes?.editor,window_name:d?.appTypes?.editor,interaction_type:d?.triggers?.click?.toLowerCase(),target_type:d?.targetTypes?.dropdownItem,target_name:p,interaction_result:d?.interactionResults?.navigate,target_location:d?.locations?.topBar?.replace(/\s+/g,"_").toLowerCase(),location_l1:d?.secondaryLocations?.pageListDropdown?.replace(/\s+/g,"_").toLowerCase(),location_l2:d?.targetTypes?.dropdownItem}),t(),await l(e.id)}},n),o.createElement(r.ListItemText,{sx:{flexGrow:0},primaryTypographyProps:{variant:"body2",noWrap:!0},primary:p}),o.createElement(c.default,{postType:e.type.post_type,docType:e.type.doc_type,label:e.type.label}))}},"./packages/packages/core/editor-site-navigation/src/components/top-bar/recently-edited.tsx":function(e,t,n){n.r(t),n.d(t,{default:function(){return RecentlyEdited}});var o=n("react"),a=n("@elementor/editor-documents"),s=n("@elementor/icons"),r=n("@elementor/ui"),i=n("@wordpress/i18n"),c=n("./packages/packages/core/editor-site-navigation/src/api/recent-posts.ts"),l=n("./packages/packages/core/editor-site-navigation/src/hooks/use-recent-posts.ts"),p=n("./packages/packages/core/editor-site-navigation/src/hooks/use-reverse-html-entities.ts"),u=n("./packages/packages/core/editor-site-navigation/src/components/top-bar/create-post-list-item.tsx"),d=n("./packages/packages/core/editor-site-navigation/src/components/top-bar/indicator.tsx"),m=n("./packages/packages/core/editor-site-navigation/src/components/top-bar/post-list-item.tsx");function _extends(){return _extends=Object.assign?Object.assign.bind():function(e){for(var t=1;t<arguments.length;t++){var n=arguments[t];for(var o in n)({}).hasOwnProperty.call(n,o)&&(e[o]=n[o])}return e},_extends.apply(null,arguments)}function RecentlyEdited(){const e=(0,a.__useActiveDocument)(),t=(0,a.__useHostDocument)(),n=e&&"kit"!==e.type.value?e:t,{data:g}=(0,l.default)(),f=g?g.filter(e=>e.id!==n?.id).splice(0,c.NUMBER_OF_RECENT_POSTS-1):[],k=(0,r.usePopupState)({variant:"popover",popupId:"elementor-v2-top-bar-recently-edited"}),v=(0,p.useReverseHtmlEntities)(n?.title);if(!n)return null;const x=(0,r.bindTrigger)(k);return o.createElement(o.Fragment,null,o.createElement(r.Button,_extends({color:"inherit",size:"small",endIcon:o.createElement(s.ChevronDownIcon,{fontSize:"small"})},x,{onClick:e=>{const t=window,n=t?.elementorCommon?.eventsManager?.config;n&&t.elementorCommon.eventsManager.dispatchEvent(n.names.topBar.documentNameDropdown,{location:n.locations.topBar,secondaryLocation:n.secondaryLocations.documentNameDropdown,trigger:n.triggers.dropdownClick,element:n.elements.dropdown}),x.onClick(e)}}),o.createElement(d.default,{title:v,status:n.status})),o.createElement(r.Menu,_extends({MenuListProps:{subheader:o.createElement(r.ListSubheader,{color:"primary",sx:{fontStyle:"italic",fontWeight:"300"}},(0,i.__)("Recent","elementor"))},PaperProps:{sx:{mt:2.5,width:320}}},(0,r.bindMenu)(k)),f.map(e=>o.createElement(m.PostListItem,{key:e.id,post:e,closePopup:k.close})),0===f.length&&o.createElement(r.MenuItem,{disabled:!0},o.createElement(r.ListItemText,{primaryTypographyProps:{variant:"caption",fontStyle:"italic"},primary:(0,i.__)("There are no other pages or templates on this site yet.","elementor")})),o.createElement(r.Divider,{disabled:0===f.length}),o.createElement(u.CreatePostListItem,{closePopup:k.close})))}},"./packages/packages/core/editor-site-navigation/src/contexts/post-list-context.tsx":function(e,t,n){n.r(t),n.d(t,{PostListContextProvider:function(){return PostListContextProvider},usePostListContext:function(){return usePostListContext}});var o=n("react");const a={type:"page",editMode:{mode:"none",details:{}},setEditMode:()=>null,resetEditMode:()=>null,setError:()=>null},s=(0,o.createContext)(a),PostListContextProvider=({type:e,setError:t,children:n})=>{const[r,i]=(0,o.useState)(a.editMode);return o.createElement(s.Provider,{value:{type:e,editMode:r,setEditMode:i,resetEditMode:()=>{i(a.editMode)},setError:t}},n)};function usePostListContext(){const e=(0,o.useContext)(s);if(!e)throw new Error("The `usePostListContext()` hook must be used within an `<PostListContextProvider />`");return e}},"./packages/packages/core/editor-site-navigation/src/env.ts":function(e,t,n){n.r(t),n.d(t,{env:function(){return a}});var o=n("@elementor/env");const{env:a}=(0,o.parseEnv)("@elementor/editor-site-navigation",e=>e)},"./packages/packages/core/editor-site-navigation/src/hooks/use-create-page.ts":function(e,t,n){n.r(t),n.d(t,{default:function(){return useCreatePage},endpointPath:function(){return r}});var o=n("react"),a=n("@wordpress/api-fetch"),s=n.n(a);const r="/elementor/v1/site-navigation/add-new-post";function useCreatePage(){const[e,t]=(0,o.useState)(!1);return{create:()=>(t(!0),async function addNewPage(){return await s()({path:r,method:"POST",data:{post_type:"page"}})}().then(e=>e).finally(()=>t(!1))),isLoading:e}}},"./packages/packages/core/editor-site-navigation/src/hooks/use-homepage-actions.ts":function(e,t,n){n.r(t),n.d(t,{useHomepageActions:function(){return useHomepageActions}});var o=n("@elementor/query"),a=n("./packages/packages/core/editor-site-navigation/src/api/settings.ts"),s=n("./packages/packages/core/editor-site-navigation/src/hooks/use-homepage.ts");function useHomepageActions(){const e=function useInvalidateSettings(){const e=(0,o.useQueryClient)();return(t={})=>{const n=(0,s.settingsQueryKey)();return e.invalidateQueries({queryKey:n},t)}}();return{updateSettingsMutation:(0,o.useMutation)({mutationFn:e=>(0,a.updateSettings)(e),onSuccess:async()=>e({exact:!0})})}}},"./packages/packages/core/editor-site-navigation/src/hooks/use-homepage.ts":function(e,t,n){n.r(t),n.d(t,{settingsQueryKey:function(){return settingsQueryKey},useHomepage:function(){return useHomepage}});var o=n("@elementor/query"),a=n("./packages/packages/core/editor-site-navigation/src/api/settings.ts");const settingsQueryKey=()=>["site-navigation","homepage"];function useHomepage(){return(0,o.useQuery)({queryKey:settingsQueryKey(),queryFn:()=>(0,a.getSettings)()})}},"./packages/packages/core/editor-site-navigation/src/hooks/use-posts-actions.ts":function(e,t,n){n.r(t),n.d(t,{usePostActions:function(){return usePostActions}});var o=n("@elementor/query"),a=n("./packages/packages/core/editor-site-navigation/src/api/post.ts"),s=n("./packages/packages/core/editor-site-navigation/src/hooks/use-posts.ts"),r=n("./packages/packages/core/editor-site-navigation/src/hooks/use-recent-posts.ts");function usePostActions(e){const t=function useInvalidatePosts(e){const t=(0,o.useQueryClient)();return(n={})=>{const o=(0,s.postsQueryKey)(e);return t.invalidateQueries({queryKey:r.recentPostsQueryKey},n),t.invalidateQueries({queryKey:o},n)}}(e),onSuccess=()=>t({exact:!0});return{createPost:(0,o.useMutation)({mutationFn:t=>(0,a.createRequest)(e,t),onSuccess:onSuccess}),updatePost:(0,o.useMutation)({mutationFn:t=>(0,a.updateRequest)(e,t),onSuccess:onSuccess}),deletePost:(0,o.useMutation)({mutationFn:t=>(0,a.deleteRequest)(e,t),onSuccess:onSuccess}),duplicatePost:(0,o.useMutation)({mutationFn:e=>(0,a.duplicateRequest)(e),onSuccess:onSuccess})}}},"./packages/packages/core/editor-site-navigation/src/hooks/use-posts.ts":function(e,t,n){n.r(t),n.d(t,{postsQueryKey:function(){return postsQueryKey},usePosts:function(){return usePosts}});var o=n("@elementor/query"),a=n("./packages/packages/core/editor-site-navigation/src/api/post.ts");const postsQueryKey=e=>["site-navigation","posts",e],flattenData=e=>{if(!e)return e;const t=[];return e.pages.forEach(e=>{t.push(...e.data)}),t};function usePosts(e){const t=(0,o.useInfiniteQuery)({queryKey:postsQueryKey(e),queryFn:({pageParam:t=1})=>(0,a.getRequest)(e,t),initialPageParam:1,getNextPageParam:e=>e.currentPage<e.totalPages?e.currentPage+1:void 0});return{...t,data:{posts:flattenData(t.data),total:t.data?.pages[0]?.totalPosts??0}}}},"./packages/packages/core/editor-site-navigation/src/hooks/use-recent-posts.ts":function(e,t,n){n.r(t),n.d(t,{default:function(){return useRecentPosts},recentPostsQueryKey:function(){return s}});var o=n("@elementor/query"),a=n("./packages/packages/core/editor-site-navigation/src/api/recent-posts.ts");const s=["site-navigation","recent-posts"];function useRecentPosts(){return(0,o.useQuery)({queryKey:s,queryFn:()=>(0,a.getRequest)()})}},"./packages/packages/core/editor-site-navigation/src/hooks/use-rename-active-document.ts":function(e,t,n){n.r(t),n.d(t,{default:function(){return useRenameActiveDocument}});var o=n("@elementor/editor-v1-adapters");function useRenameActiveDocument(){return async e=>{const t=function getV1DocumentsManager(){const e=window.elementor?.documents;if(!e)throw new Error("Elementor Editor V1 documents manager not found");return e}().getCurrent().container;await(0,o.__privateRunCommand)("document/elements/settings",{container:t,settings:{post_title:e}})}}},"./packages/packages/core/editor-site-navigation/src/hooks/use-reverse-html-entities.ts":function(e,t,n){n.r(t),n.d(t,{useReverseHtmlEntities:function(){return useReverseHtmlEntities}});var o=n("react");function useReverseHtmlEntities(e=""){return(0,o.useMemo)(()=>{const t=document.createElement("textarea");t.innerHTML=e;const{value:n}=t;return t.remove(),n},[e])}},"./packages/packages/core/editor-site-navigation/src/hooks/use-toggle-button-props.ts":function(e,t,n){n.r(t),n.d(t,{useToggleButtonProps:function(){return useToggleButtonProps}});var o=n("@elementor/icons"),a=n("@wordpress/i18n"),s=n("./packages/packages/core/editor-site-navigation/src/components/panel/panel.ts");function useToggleButtonProps(){const{isOpen:e,isBlocked:t}=(0,s.usePanelStatus)(),{open:n,close:r}=(0,s.usePanelActions)();return{title:(0,a.__)("Pages","elementor"),icon:o.PagesIcon,onClick:()=>{const t=window,o=t?.elementorCommon?.eventsManager?.config;return o&&t.elementorCommon.eventsManager.dispatchEvent("top_bar_pages",{location:o.locations.topBar,secondaryLocation:o.secondaryLocations.elementorLogo,trigger:o.triggers.click,element:o.elements.buttonIcon}),e?r():n()},selected:e,disabled:t}}},"./packages/packages/core/editor-site-navigation/src/hooks/use-user.ts":function(e,t,n){n.r(t),n.d(t,{default:function(){return useUser}});var o=n("@elementor/query"),a=n("./packages/packages/core/editor-site-navigation/src/api/user.ts");const userQueryKey=()=>["site-navigation","user"];function useUser(){return(0,o.useQuery)({queryKey:userQueryKey(),queryFn:a.getUser,staleTime:18e5})}},"./packages/packages/core/editor-site-navigation/src/icons-map.ts":function(e,t,n){n.r(t),n.d(t,{extendIconsMap:function(){return extendIconsMap},getIconsMap:function(){return getIconsMap},resetIconsMap:function(){return resetIconsMap}});var o=n("@elementor/icons");const a={page:o.PageTemplateIcon,section:o.SectionTemplateIcon,container:o.ContainerTemplateIcon,"wp-page":o.PageTypeIcon,"wp-post":o.PostTypeIcon};let s={...a};function extendIconsMap(e){Object.assign(s,e)}function getIconsMap(){return s}function resetIconsMap(){s={...a}}},"./packages/packages/core/editor-site-navigation/src/init.ts":function(e,t,n){n.r(t),n.d(t,{init:function(){return init}});var o=n("@elementor/editor-app-bar"),a=n("@elementor/editor-panels"),s=n("./packages/packages/core/editor-site-navigation/src/components/panel/panel.ts"),r=n("./packages/packages/core/editor-site-navigation/src/components/top-bar/recently-edited.tsx"),i=n("./packages/packages/core/editor-site-navigation/src/env.ts"),c=n("./packages/packages/core/editor-site-navigation/src/hooks/use-toggle-button-props.ts");function init(){!function registerTopBarMenuItems(){(0,o.injectIntoPageIndication)({id:"document-recently-edited",component:r.default})}(),i.env.is_pages_panel_active&&((0,a.__registerPanel)(s.panel),function registerButton(){o.toolsMenu.registerToggleAction({id:"toggle-site-navigation-panel",priority:20,useProps:c.useToggleButtonProps})}())}},"@elementor/editor-app-bar":function(e){e.exports=window.elementorV2.editorAppBar},"@elementor/editor-documents":function(e){e.exports=window.elementorV2.editorDocuments},"@elementor/editor-panels":function(e){e.exports=window.elementorV2.editorPanels},"@elementor/editor-v1-adapters":function(e){e.exports=window.elementorV2.editorV1Adapters},"@elementor/env":function(e){e.exports=window.elementorV2.env},"@elementor/events":function(e){e.exports=window.elementorV2.events},"@elementor/icons":function(e){e.exports=window.elementorV2.icons},"@elementor/query":function(e){e.exports=window.elementorV2.query},"@elementor/ui":function(e){e.exports=window.elementorV2.ui},"@wordpress/api-fetch":function(e){e.exports=window.wp.apiFetch},"@wordpress/i18n":function(e){e.exports=window.wp.i18n},react:function(e){e.exports=window.React}},t={};function __webpack_require__(n){var o=t[n];if(void 0!==o)return o.exports;var a=t[n]={exports:{}};return e[n](a,a.exports,__webpack_require__),a.exports}__webpack_require__.n=function(e){var t=e&&e.__esModule?function(){return e.default}:function(){return e};return __webpack_require__.d(t,{a:t}),t},__webpack_require__.d=function(e,t){for(var n in t)__webpack_require__.o(t,n)&&!__webpack_require__.o(e,n)&&Object.defineProperty(e,n,{enumerable:!0,get:t[n]})},__webpack_require__.o=function(e,t){return Object.prototype.hasOwnProperty.call(e,t)},__webpack_require__.r=function(e){"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})};var n={};!function(){__webpack_require__.r(n),__webpack_require__.d(n,{extendIconsMap:function(){return e.extendIconsMap},init:function(){return t.init}});var e=__webpack_require__("./packages/packages/core/editor-site-navigation/src/icons-map.ts"),t=__webpack_require__("./packages/packages/core/editor-site-navigation/src/init.ts")}(),(window.elementorV2=window.elementorV2||{}).editorSiteNavigation=n}(),window.elementorV2.editorSiteNavigation?.init?.();
1 +(function(_elementor_icons, _elementor_editor_app_bar, _elementor_editor_panels, react, _wordpress_i18n, _elementor_ui, _wordpress_api_fetch, _elementor_query, _elementor_editor_documents, _elementor_editor_v1_adapters, _elementor_events, _elementor_env) {
2 +
3 +//#region \0rolldown/runtime.js
4 + var __create = Object.create;
5 + var __defProp = Object.defineProperty;
6 + var __name = (target, value) => __defProp(target, "name", {
7 + value,
8 + configurable: true
9 + });
10 + var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
11 + var __getOwnPropNames = Object.getOwnPropertyNames;
12 + var __getProtoOf = Object.getPrototypeOf;
13 + var __hasOwnProp = Object.prototype.hasOwnProperty;
14 + var __exportAll = (all, no_symbols) => {
15 + let target = {};
16 + for (var name in all) {
17 + __defProp(target, name, {
18 + get: all[name],
19 + enumerable: true
20 + });
21 + }
22 + if (!no_symbols) {
23 + __defProp(target, Symbol.toStringTag, { value: "Module" });
24 + }
25 + return target;
26 + };
27 + var __copyProps = (to, from, except, desc) => {
28 + if (from && typeof from === "object" || typeof from === "function") {
29 + for (var keys = __getOwnPropNames(from), i = 0, n = keys.length, key; i < n; i++) {
30 + key = keys[i];
31 + if (!__hasOwnProp.call(to, key) && key !== except) {
32 + __defProp(to, key, {
33 + get: ((k) => from[k]).bind(null, key),
34 + enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable
35 + });
36 + }
37 + }
38 + }
39 + return to;
40 + };
41 + var __toESM = (mod, isNodeMode, target) => (target = mod != null ? __create(__getProtoOf(mod)) : {}, __copyProps(isNodeMode || !mod || !mod.__esModule ? __defProp(target, "default", {
42 + value: mod,
43 + enumerable: true
44 + }) : target, mod));
45 +
46 +//#endregion
47 +react = __toESM(react);
48 +_wordpress_api_fetch = __toESM(_wordpress_api_fetch);
49 +
50 +//#region packages/packages/core/editor-site-navigation/src/icons-map.ts
51 + var initialIconsMap = {
52 + page: _elementor_icons.PageTemplateIcon,
53 + section: _elementor_icons.SectionTemplateIcon,
54 + container: _elementor_icons.ContainerTemplateIcon,
55 + "wp-page": _elementor_icons.PageTypeIcon,
56 + "wp-post": _elementor_icons.PostTypeIcon
57 + };
58 + var iconsMap$1 = { ...initialIconsMap };
59 + function extendIconsMap(additionalIcons) {
60 + Object.assign(iconsMap$1, additionalIcons);
61 + }
62 + function getIconsMap() {
63 + return iconsMap$1;
64 + }
65 +
66 +//#endregion
67 +//#region packages/packages/core/editor-site-navigation/src/contexts/post-list-context.tsx
68 + var defaultValues = {
69 + type: "page",
70 + editMode: {
71 + mode: "none",
72 + details: {}
73 + },
74 + setEditMode: () => null,
75 + resetEditMode: () => null,
76 + setError: () => null
77 + };
78 + var PostListContext = (0, react.createContext)(defaultValues);
79 + var PostListContextProvider = ({ type, setError, children }) => {
80 + const [editMode, setEditMode] = (0, react.useState)(defaultValues.editMode);
81 + const resetEditMode = () => {
82 + setEditMode(defaultValues.editMode);
83 + };
84 + return /* @__PURE__ */ react.createElement(PostListContext.Provider, { value: {
85 + type,
86 + editMode,
87 + setEditMode,
88 + resetEditMode,
89 + setError
90 + } }, children);
91 + };
92 + function usePostListContext() {
93 + const context = (0, react.useContext)(PostListContext);
94 + if (!context) throw new Error("The `usePostListContext()` hook must be used within an `<PostListContextProvider />`");
95 + return context;
96 + }
97 +
98 +//#endregion
99 +//#region packages/packages/core/editor-site-navigation/src/components/panel/error-snackbar.tsx
100 + var ErrorSnackbar = ({ open, onClose }) => {
101 + return /* @__PURE__ */ react.createElement(_elementor_ui.Snackbar, {
102 + open,
103 + onClose,
104 + anchorOrigin: {
105 + vertical: "bottom",
106 + horizontal: "left"
107 + }
108 + }, /* @__PURE__ */ react.createElement(_elementor_ui.Alert, {
109 + onClose,
110 + severity: "error",
111 + sx: { width: "100%" }
112 + }, /* @__PURE__ */ react.createElement(_elementor_ui.Typography, {
113 + component: "span",
114 + sx: { fontWeight: "bold" }
115 + }, "We couldn’t complete the action."), " ", "Please try again"));
116 + };
117 +
118 +//#endregion
119 +//#region packages/packages/core/editor-site-navigation/src/api/post.ts
120 + var postTypesMap = { page: {
121 + labels: {
122 + singular_name: (0, _wordpress_i18n.__)("Page", "elementor"),
123 + plural_name: (0, _wordpress_i18n.__)("Pages", "elementor")
124 + },
125 + rest_base: "pages"
126 + } };
127 + var POST_PER_PAGE = 10;
128 + var getRequest$1 = /* @__PURE__ */ __name(async (postTypeSlug, page) => {
129 + const baseUri = `/wp/v2/${postTypesMap[postTypeSlug].rest_base}`;
130 + const queryParams = new URLSearchParams({
131 + status: "any",
132 + order: "asc",
133 + page: page.toString(),
134 + per_page: 10 .toString(),
135 + _fields: [
136 + "id",
137 + "type",
138 + "title",
139 + "link",
140 + "status",
141 + "user_can"
142 + ].join(",")
143 + });
144 + const result = await (0, _wordpress_api_fetch.default)({
145 + path: baseUri + "?" + queryParams.toString(),
146 + parse: false
147 + });
148 + return {
149 + data: await result.json(),
150 + totalPages: Number(result.headers.get("x-wp-totalpages")),
151 + totalPosts: Number(result.headers.get("x-wp-total")),
152 + currentPage: page
153 + };
154 + }, "getRequest");
155 + var createRequest = (postTypeSlug, newPost) => {
156 + return (0, _wordpress_api_fetch.default)({
157 + path: `/wp/v2/${postTypesMap[postTypeSlug].rest_base}`,
158 + method: "POST",
159 + data: newPost
160 + });
161 + };
162 + var updateRequest = (postTypeSlug, updatedPost) => {
163 + const path = `/wp/v2/${postTypesMap[postTypeSlug].rest_base}`;
164 + const { id, ...data } = updatedPost;
165 + return (0, _wordpress_api_fetch.default)({
166 + path: `${path}/${id}`,
167 + method: "POST",
168 + data
169 + });
170 + };
171 + var deleteRequest = (postTypeSlug, postId) => {
172 + return (0, _wordpress_api_fetch.default)({
173 + path: `${`/wp/v2/${postTypesMap[postTypeSlug].rest_base}`}/${postId}`,
174 + method: "DELETE"
175 + });
176 + };
177 + var duplicateRequest = (originalPost) => {
178 + return (0, _wordpress_api_fetch.default)({
179 + path: `/elementor/v1/site-navigation/duplicate-post`,
180 + method: "POST",
181 + data: {
182 + post_id: originalPost.id,
183 + title: originalPost.title
184 + }
185 + });
186 + };
187 +
188 +//#endregion
189 +//#region packages/packages/core/editor-site-navigation/src/api/settings.ts
190 + var getSettings = () => {
191 + return (0, _wordpress_api_fetch.default)({ path: "/elementor/v1/site-navigation/homepage" });
192 + };
193 + var updateSettings = (settings) => {
194 + return (0, _wordpress_api_fetch.default)({
195 + path: "/wp/v2/settings",
196 + method: "POST",
197 + data: settings
198 + });
199 + };
200 +
201 +//#endregion
202 +//#region packages/packages/core/editor-site-navigation/src/hooks/use-homepage.ts
203 + var settingsQueryKey = () => ["site-navigation", "homepage"];
204 + function useHomepage() {
205 + return (0, _elementor_query.useQuery)({
206 + queryKey: settingsQueryKey(),
207 + queryFn: () => getSettings()
208 + });
209 + }
210 +
211 +//#endregion
212 +//#region packages/packages/core/editor-site-navigation/src/hooks/use-posts.ts
213 + var postsQueryKey = (postTypeSlug) => [
214 + "site-navigation",
215 + "posts",
216 + postTypeSlug
217 + ];
218 + var flattenData = (data) => {
219 + if (!data) return data;
220 + const flattened = [];
221 + data.pages.forEach((page) => {
222 + flattened.push(...page.data);
223 + });
224 + return flattened;
225 + };
226 + function usePosts(postTypeSlug) {
227 + const query = (0, _elementor_query.useInfiniteQuery)({
228 + queryKey: postsQueryKey(postTypeSlug),
229 + queryFn: ({ pageParam = 1 }) => getRequest$1(postTypeSlug, pageParam),
230 + initialPageParam: 1,
231 + getNextPageParam: (lastPage) => {
232 + return lastPage.currentPage < lastPage.totalPages ? lastPage.currentPage + 1 : void 0;
233 + }
234 + });
235 + return {
236 + ...query,
237 + data: {
238 + posts: flattenData(query.data),
239 + total: query.data?.pages[0]?.totalPosts ?? 0
240 + }
241 + };
242 + }
243 +
244 +//#endregion
245 +//#region packages/packages/core/editor-site-navigation/src/api/user.ts
246 + var getUser = () => {
247 + return (0, _wordpress_api_fetch.default)({ path: "/wp/v2/users/me?" + new URLSearchParams({
248 + _fields: ["capabilities"].join(","),
249 + context: "edit"
250 + }).toString() });
251 + };
252 +
253 +//#endregion
254 +//#region packages/packages/core/editor-site-navigation/src/hooks/use-user.ts
255 + var userQueryKey = () => ["site-navigation", "user"];
256 + function useUser() {
257 + return (0, _elementor_query.useQuery)({
258 + queryKey: userQueryKey(),
259 + queryFn: getUser,
260 + staleTime: 1800 * 1e3
261 + });
262 + }
263 +
264 +//#endregion
265 +//#region packages/packages/core/editor-site-navigation/src/components/panel/add-new-button.tsx
266 + function AddNewButton() {
267 + const { setEditMode } = usePostListContext();
268 + const { data: user } = useUser();
269 + return /* @__PURE__ */ react.createElement(_elementor_ui.Button, {
270 + size: "small",
271 + startIcon: /* @__PURE__ */ react.createElement(_elementor_icons.PlusIcon, null),
272 + disabled: !user?.capabilities?.edit_pages,
273 + onClick: () => {
274 + setEditMode({
275 + mode: "create",
276 + details: {}
277 + });
278 + },
279 + sx: { px: 1.5 }
280 + }, (0, _wordpress_i18n.__)("Add New", "elementor"));
281 + }
282 +
283 +//#endregion
284 +//#region packages/packages/core/editor-site-navigation/src/components/panel/posts-list/collapsible-list.tsx
285 + var RotateIcon = (0, _elementor_ui.styled)(_elementor_icons.ChevronDownIcon, { shouldForwardProp: (prop) => prop !== "isOpen" })(({ theme, isOpen }) => ({
286 + transform: isOpen ? "rotate(0deg)" : "rotate(-90deg)",
287 + transition: theme.transitions.create("transform", { duration: theme.transitions.duration.standard })
288 + }));
289 + var StyledListItemIcon = (0, _elementor_ui.styled)(_elementor_ui.ListItemIcon)(({ theme }) => ({ minWidth: theme.spacing(4) }));
290 + function CollapsibleList({ label, Icon, isOpenByDefault = false, children }) {
291 + const [isOpen, setIsOpen] = (0, react.useState)(isOpenByDefault);
292 + return /* @__PURE__ */ react.createElement(react.Fragment, null, /* @__PURE__ */ react.createElement(_elementor_ui.ListItem, null, /* @__PURE__ */ react.createElement(StyledListItemIcon, { sx: { color: "text.secondary" } }, /* @__PURE__ */ react.createElement(_elementor_ui.IconButton, {
293 + onClick: () => setIsOpen((prev) => !prev),
294 + size: "small",
295 + sx: { color: "inherit" }
296 + }, /* @__PURE__ */ react.createElement(RotateIcon, {
297 + fontSize: "small",
298 + isOpen
299 + }))), /* @__PURE__ */ react.createElement(StyledListItemIcon, {
300 + size: "small",
301 + sx: { color: "inherit" }
302 + }, /* @__PURE__ */ react.createElement(Icon, { fontSize: "small" })), /* @__PURE__ */ react.createElement(_elementor_ui.ListItemText, {
303 + primaryTypographyProps: {
304 + variant: "subtitle2",
305 + component: "span"
306 + },
307 + primary: label
308 + })), /* @__PURE__ */ react.createElement(_elementor_ui.Collapse, {
309 + in: isOpen,
310 + timeout: "auto",
311 + unmountOnExit: true
312 + }, /* @__PURE__ */ react.createElement(_elementor_ui.List, { dense: true }, children)), /* @__PURE__ */ react.createElement(_elementor_ui.Divider, { sx: { mt: 1 } }));
313 + }
314 +
315 +//#endregion
316 +//#region packages/packages/core/editor-site-navigation/src/components/panel/posts-list/error-state.tsx
317 + function ErrorState() {
318 + return /* @__PURE__ */ react.createElement(_elementor_ui.Box, { sx: {
319 + display: "flex",
320 + flexDirection: "column",
321 + justifyContent: "center",
322 + alignItems: "center",
323 + pt: "40px",
324 + gap: "16px"
325 + } }, /* @__PURE__ */ react.createElement(_elementor_icons.Error404TemplateIcon, null), /* @__PURE__ */ react.createElement(_elementor_ui.Box, { sx: {
326 + display: "flex",
327 + flexDirection: "column",
328 + justifyContent: "center",
329 + alignItems: "center",
330 + gap: "8px"
331 + } }, /* @__PURE__ */ react.createElement(_elementor_ui.Typography, {
332 + variant: "body1",
333 + color: "text.primary"
334 + }, (0, _wordpress_i18n.__)("We couldn’t display your pages.", "elementor")), /* @__PURE__ */ react.createElement(_elementor_ui.Box, null, /* @__PURE__ */ react.createElement(_elementor_ui.Typography, {
335 + variant: "body2",
336 + color: "text.primary",
337 + sx: { textAlign: "center" }
338 + }, (0, _wordpress_i18n.__)("It’s probably a temporary issue.", "elementor")), /* @__PURE__ */ react.createElement(_elementor_ui.Typography, {
339 + variant: "body2",
340 + color: "text.primary",
341 + sx: { textAlign: "center" }
342 + }, (0, _wordpress_i18n.__)("If the problem persists,", "elementor"), " ", /* @__PURE__ */ react.createElement(_elementor_ui.Link, {
343 + target: "_blank",
344 + href: "https://go.elementor.com/wp-editor-support-open-ticket/"
345 + }, "Notify support")))));
346 + }
347 +
348 +//#endregion
349 +//#region packages/packages/core/editor-site-navigation/src/api/recent-posts.ts
350 + var baseUrl = "/elementor/v1/site-navigation/recent-posts";
351 + var NUMBER_OF_RECENT_POSTS = 6;
352 + var getRequest = () => {
353 + const queryParams = new URLSearchParams({ posts_per_page: `${6}` });
354 + return (0, _wordpress_api_fetch.default)({ path: `${baseUrl}?${queryParams.toString()}` });
355 + };
356 +
357 +//#endregion
358 +//#region packages/packages/core/editor-site-navigation/src/hooks/use-recent-posts.ts
359 + var recentPostsQueryKey = ["site-navigation", "recent-posts"];
360 + function useRecentPosts() {
361 + return (0, _elementor_query.useQuery)({
362 + queryKey: recentPostsQueryKey,
363 + queryFn: () => getRequest()
364 + });
365 + }
366 +
367 +//#endregion
368 +//#region packages/packages/core/editor-site-navigation/src/hooks/use-posts-actions.ts
369 + function usePostActions(postTypeSlug) {
370 + const invalidatePosts = useInvalidatePosts(postTypeSlug);
371 + const onSuccess = () => invalidatePosts({ exact: true });
372 + return {
373 + createPost: (0, _elementor_query.useMutation)({
374 + mutationFn: (newPost) => createRequest(postTypeSlug, newPost),
375 + onSuccess
376 + }),
377 + updatePost: (0, _elementor_query.useMutation)({
378 + mutationFn: (updatedPost) => updateRequest(postTypeSlug, updatedPost),
379 + onSuccess
380 + }),
381 + deletePost: (0, _elementor_query.useMutation)({
382 + mutationFn: (postId) => deleteRequest(postTypeSlug, postId),
383 + onSuccess
384 + }),
385 + duplicatePost: (0, _elementor_query.useMutation)({
386 + mutationFn: (originalPost) => duplicateRequest(originalPost),
387 + onSuccess
388 + })
389 + };
390 + }
391 + function useInvalidatePosts(postTypeSlug) {
392 + const queryClient = (0, _elementor_query.useQueryClient)();
393 + return (options = {}) => {
394 + const queryKey = postsQueryKey(postTypeSlug);
395 + queryClient.invalidateQueries({ queryKey: recentPostsQueryKey }, options);
396 + return queryClient.invalidateQueries({ queryKey }, options);
397 + };
398 + }
399 +
400 +//#endregion
401 +//#region packages/packages/core/editor-site-navigation/src/components/panel/posts-list/list-items/edit-mode-template.tsx
402 + function EditModeTemplate({ postTitle, isLoading, callback }) {
403 + const [title, setTitle] = (0, react.useState)(postTitle);
404 + const [touched, setTouched] = (0, react.useState)(false);
405 + const [inputError, setInputError] = (0, react.useState)(null);
406 + const closeButton = (0, react.useRef)();
407 + const onBlur = (e) => {
408 + if (closeButton.current === e.relatedTarget) return;
409 + runCallback();
410 + };
411 + const onFormSubmit = (e) => {
412 + e.preventDefault();
413 + runCallback();
414 + };
415 + const validateInput = (input) => {
416 + return input.trim() !== "";
417 + };
418 + const runCallback = () => {
419 + if (!validateInput(title)) return;
420 + callback(title);
421 + };
422 + const onChange = (e) => {
423 + if (!touched) setTouched(true);
424 + const value = e.target.value;
425 + if (!validateInput(value)) setInputError((0, _wordpress_i18n.__)("Name is required", "elementor"));
426 + else setInputError(null);
427 + setTitle(value);
428 + };
429 + return /* @__PURE__ */ react.createElement(react.Fragment, null, /* @__PURE__ */ react.createElement(_elementor_ui.ListItem, { secondaryAction: /* @__PURE__ */ react.createElement(CloseButton, {
430 + isLoading,
431 + closeButton
432 + }) }, /* @__PURE__ */ react.createElement(_elementor_ui.Box, {
433 + width: "100%",
434 + component: "form",
435 + onSubmit: onFormSubmit
436 + }, /* @__PURE__ */ react.createElement(_elementor_ui.TextField, {
437 + autoFocus: true,
438 + fullWidth: true,
439 + value: title,
440 + onChange,
441 + disabled: isLoading,
442 + error: !!inputError,
443 + onBlur,
444 + variant: "outlined",
445 + color: "secondary",
446 + size: "small"
447 + }))), inputError && /* @__PURE__ */ react.createElement(_elementor_ui.ListItem, null, /* @__PURE__ */ react.createElement(_elementor_ui.ListItemText, { sx: { color: "error.main" } }, inputError)));
448 + }
449 + function CloseButton({ isLoading, closeButton }) {
450 + const { resetEditMode } = usePostListContext();
451 + return /* @__PURE__ */ react.createElement(_elementor_ui.IconButton, {
452 + size: "small",
453 + color: "secondary",
454 + onClick: resetEditMode,
455 + ref: closeButton,
456 + disabled: isLoading
457 + }, isLoading ? /* @__PURE__ */ react.createElement(_elementor_ui.CircularProgress, null) : /* @__PURE__ */ react.createElement(_elementor_icons.XIcon, { fontSize: "small" }));
458 + }
459 +
460 +//#endregion
461 +//#region packages/packages/core/editor-site-navigation/src/components/panel/posts-list/list-items/list-item-create.tsx
462 + function ListItemCreate() {
463 + const { type, resetEditMode } = usePostListContext();
464 + const { createPost } = usePostActions(type);
465 + const navigateToDocument = (0, _elementor_editor_documents.__useNavigateToDocument)();
466 + const { setError } = usePostListContext();
467 + const createPostCallback = async (inputValue) => {
468 + try {
469 + const { id } = await createPost.mutateAsync({
470 + title: inputValue,
471 + status: "draft"
472 + });
473 + navigateToDocument(id);
474 + } catch {
475 + setError();
476 + } finally {
477 + resetEditMode();
478 + }
479 + };
480 + return /* @__PURE__ */ react.createElement(EditModeTemplate, {
481 + postTitle: (0, _wordpress_i18n.__)("New Page", "elementor"),
482 + isLoading: createPost.isPending,
483 + callback: createPostCallback
484 + });
485 + }
486 +
487 +//#endregion
488 +//#region packages/packages/core/editor-site-navigation/src/components/panel/posts-list/list-items/list-item-duplicate.tsx
489 + function ListItemDuplicate() {
490 + const { type, editMode, resetEditMode } = usePostListContext();
491 + const navigateToDocument = (0, _elementor_editor_documents.__useNavigateToDocument)();
492 + const { duplicatePost } = usePostActions(type);
493 + const { setError } = usePostListContext();
494 + if ("duplicate" !== editMode.mode) return null;
495 + const duplicatePostCallback = async (inputValue) => {
496 + try {
497 + const { post_id: postId } = await duplicatePost.mutateAsync({
498 + id: editMode.details.postId,
499 + title: inputValue
500 + });
501 + navigateToDocument(postId);
502 + } catch {
503 + setError();
504 + } finally {
505 + resetEditMode();
506 + }
507 + };
508 + return /* @__PURE__ */ react.createElement(EditModeTemplate, {
509 + postTitle: `${editMode.details.title} ${(0, _wordpress_i18n.__)("copy", "elementor")}`,
510 + isLoading: duplicatePost.isPending,
511 + callback: duplicatePostCallback
512 + });
513 + }
514 +
515 +//#endregion
516 +//#region packages/packages/core/editor-site-navigation/src/hooks/use-rename-active-document.ts
517 + function getV1DocumentsManager() {
518 + const documentsManager = window.elementor?.documents;
519 + if (!documentsManager) throw new Error("Elementor Editor V1 documents manager not found");
520 + return documentsManager;
521 + }
522 + function useRenameActiveDocument() {
523 + return async (title) => {
524 + const container = getV1DocumentsManager().getCurrent().container;
525 + await (0, _elementor_editor_v1_adapters.__privateRunCommand)("document/elements/settings", {
526 + container,
527 + settings: { post_title: title }
528 + });
529 + };
530 + }
531 +
532 +//#endregion
533 +//#region packages/packages/core/editor-site-navigation/src/components/panel/posts-list/list-items/list-item-rename.tsx
534 + function ListItemRename({ post }) {
535 + const { type, resetEditMode } = usePostListContext();
536 + const { updatePost } = usePostActions(type);
537 + const { setError } = usePostListContext();
538 + const activeDocument = (0, _elementor_editor_documents.__useActiveDocument)();
539 + const rename = useRenameActiveDocument();
540 + const isActive = activeDocument?.id === post.id;
541 + const title = isActive ? activeDocument?.title : post.title.rendered;
542 + const renamePostCallback = async (inputValue) => {
543 + if (inputValue === title) resetEditMode();
544 + try {
545 + if (isActive) await rename(inputValue);
546 + else await updatePost.mutateAsync({
547 + id: post.id,
548 + title: inputValue
549 + });
550 + } catch {
551 + setError();
552 + } finally {
553 + resetEditMode();
554 + }
555 + };
556 + return /* @__PURE__ */ react.createElement(EditModeTemplate, {
557 + postTitle: title,
558 + isLoading: updatePost.isPending,
559 + callback: renamePostCallback
560 + });
561 + }
562 +
563 +//#endregion
564 +//#region packages/packages/core/editor-site-navigation/src/hooks/use-reverse-html-entities.ts
565 + function useReverseHtmlEntities(escapedHTML = "") {
566 + return (0, react.useMemo)(() => {
567 + const textarea = document.createElement("textarea");
568 + textarea.innerHTML = escapedHTML;
569 + const { value } = textarea;
570 + textarea.remove();
571 + return value;
572 + }, [escapedHTML]);
573 + }
574 +
575 +//#endregion
576 +//#region packages/packages/core/editor-site-navigation/src/components/shared/page-title-and-status.tsx
577 + var PageStatus = ({ status }) => {
578 + if ("publish" === status) return null;
579 + return /* @__PURE__ */ react.createElement(_elementor_ui.Typography, {
580 + component: "span",
581 + variant: "body2",
582 + color: "text.secondary",
583 + sx: {
584 + textTransform: "capitalize",
585 + fontStyle: "italic",
586 + whiteSpace: "nowrap",
587 + flexBasis: "content"
588 + }
589 + }, "(", status, ")");
590 + };
591 + var PageTitle = ({ title }) => {
592 + const modifiedTitle = useReverseHtmlEntities(title);
593 + return /* @__PURE__ */ react.createElement(_elementor_ui.Typography, {
594 + component: "span",
595 + variant: "body2",
596 + color: "text.secondary",
597 + noWrap: true,
598 + sx: { flexBasis: "auto" }
599 + }, modifiedTitle);
600 + };
601 + function PageTitleAndStatus({ title, status }) {
602 + return /* @__PURE__ */ react.createElement(_elementor_ui.Box, { display: "flex" }, /* @__PURE__ */ react.createElement(PageTitle, { title }), "\xA0", /* @__PURE__ */ react.createElement(PageStatus, { status }));
603 + }
604 +
605 +//#endregion
606 +//#region packages/packages/core/editor-site-navigation/src/components/panel/actions-menu/action-menu-item.tsx
607 + function ActionMenuItem({ title, icon: Icon, MenuItemProps }) {
608 + return /* @__PURE__ */ react.createElement(_elementor_ui.MenuItem, { ...MenuItemProps }, /* @__PURE__ */ react.createElement(_elementor_ui.ListItemIcon, { sx: { color: "inherit" } }, /* @__PURE__ */ react.createElement(Icon, null)), /* @__PURE__ */ react.createElement(_elementor_ui.ListItemText, { primary: title }));
609 + }
610 +
611 +//#endregion
612 +//#region packages/packages/core/editor-site-navigation/src/components/panel/actions-menu/actions/delete.tsx
613 + function Delete({ post }) {
614 + const [isDialogOpen, setIsDialogOpen] = (0, react.useState)(false);
615 + const isPostActive = (0, _elementor_editor_documents.__useActiveDocument)()?.id === post.id;
616 + const isDisabled = !post.user_can.delete || post.isHome || isPostActive;
617 + return /* @__PURE__ */ react.createElement(react.Fragment, null, /* @__PURE__ */ react.createElement(ActionMenuItem, {
618 + title: (0, _wordpress_i18n.__)("Delete", "elementor"),
619 + icon: _elementor_icons.TrashIcon,
620 + MenuItemProps: {
621 + disabled: isDisabled,
622 + onClick: () => setIsDialogOpen(true),
623 + sx: { "&:hover": { color: "error.main" } }
624 + }
625 + }), isDialogOpen && /* @__PURE__ */ react.createElement(DeleteDialog, {
626 + post,
627 + setIsDialogOpen
628 + }));
629 + }
630 + function DeleteDialog({ post, setIsDialogOpen }) {
631 + const { type } = usePostListContext();
632 + const { deletePost } = usePostActions(type);
633 + const { setError } = usePostListContext();
634 + const dialogTitle = (0, _wordpress_i18n.sprintf)((0, _wordpress_i18n.__)("Delete \"%s\"?", "elementor"), post.title.rendered);
635 + const deletePage = async () => {
636 + try {
637 + await deletePost.mutateAsync(post.id);
638 + } catch {
639 + setError();
640 + setIsDialogOpen(false);
641 + }
642 + };
643 + const handleCancel = () => {
644 + if (deletePost.isPending) return;
645 + setIsDialogOpen(false);
646 + };
647 + return /* @__PURE__ */ react.createElement(_elementor_ui.Dialog, {
648 + open: true,
649 + onClose: handleCancel,
650 + "aria-labelledby": "delete-dialog"
651 + }, /* @__PURE__ */ react.createElement(_elementor_ui.DialogTitle, { noWrap: true }, dialogTitle), /* @__PURE__ */ react.createElement(_elementor_ui.Divider, null), /* @__PURE__ */ react.createElement(_elementor_ui.DialogContent, null, /* @__PURE__ */ react.createElement(_elementor_ui.DialogContentText, null, (0, _wordpress_i18n.__)("The page and its content will be deleted forever and we won’t be able to recover them.", "elementor"))), /* @__PURE__ */ react.createElement(_elementor_ui.DialogActions, null, /* @__PURE__ */ react.createElement(_elementor_ui.Button, {
652 + variant: "contained",
653 + color: "secondary",
654 + onClick: handleCancel,
655 + disabled: deletePost.isPending
656 + }, (0, _wordpress_i18n.__)("Cancel", "elementor")), /* @__PURE__ */ react.createElement(_elementor_ui.Button, {
657 + variant: "contained",
658 + color: "error",
659 + onClick: deletePage,
660 + disabled: deletePost.isPending
661 + }, !deletePost.isPending ? (0, _wordpress_i18n.__)("Delete", "elementor") : /* @__PURE__ */ react.createElement(_elementor_ui.CircularProgress, null))));
662 + }
663 +
664 +//#endregion
665 +//#region packages/packages/core/editor-site-navigation/src/components/panel/actions-menu/actions/duplicate.tsx
666 + function Duplicate({ post, popupState }) {
667 + const { setEditMode } = usePostListContext();
668 + const { data: user } = useUser();
669 + const onClick = () => {
670 + popupState.close();
671 + setEditMode({
672 + mode: "duplicate",
673 + details: {
674 + postId: post.id,
675 + title: post.title.rendered
676 + }
677 + });
678 + };
679 + const isDisabled = !user?.capabilities?.edit_pages;
680 + return /* @__PURE__ */ react.createElement(ActionMenuItem, {
681 + title: (0, _wordpress_i18n.__)("Duplicate", "elementor"),
682 + icon: _elementor_icons.CopyIcon,
683 + MenuItemProps: {
684 + disabled: isDisabled,
685 + onClick
686 + }
687 + });
688 + }
689 +
690 +//#endregion
691 +//#region packages/packages/core/editor-site-navigation/src/components/panel/actions-menu/actions/rename.tsx
692 + function Rename({ post }) {
693 + const { setEditMode } = usePostListContext();
694 + return /* @__PURE__ */ react.createElement(ActionMenuItem, {
695 + title: (0, _wordpress_i18n.__)("Rename", "elementor"),
696 + icon: _elementor_icons.EraseIcon,
697 + MenuItemProps: {
698 + disabled: !post.user_can.edit,
699 + onClick: () => {
700 + setEditMode({
701 + mode: "rename",
702 + details: { postId: post.id }
703 + });
704 + }
705 + }
706 + });
707 + }
708 +
709 +//#endregion
710 +//#region packages/packages/core/editor-site-navigation/src/hooks/use-homepage-actions.ts
711 + function useHomepageActions() {
712 + const invalidateSettings = useInvalidateSettings();
713 + const onSuccess = async () => invalidateSettings({ exact: true });
714 + return { updateSettingsMutation: (0, _elementor_query.useMutation)({
715 + mutationFn: (settings) => updateSettings(settings),
716 + onSuccess
717 + }) };
718 + }
719 + function useInvalidateSettings() {
720 + const queryClient = (0, _elementor_query.useQueryClient)();
721 + return (options = {}) => {
722 + const queryKey = settingsQueryKey();
723 + return queryClient.invalidateQueries({ queryKey }, options);
724 + };
725 + }
726 +
727 +//#endregion
728 +//#region packages/packages/core/editor-site-navigation/src/components/panel/actions-menu/actions/set-home.tsx
729 + function SetHome({ post, closeMenu }) {
730 + const { updateSettingsMutation } = useHomepageActions();
731 + const { setError } = usePostListContext();
732 + const { data: user } = useUser();
733 + const handleClick = async () => {
734 + try {
735 + await updateSettingsMutation.mutateAsync({
736 + show_on_front: "page",
737 + page_on_front: post.id
738 + });
739 + } catch {
740 + setError();
741 + } finally {
742 + closeMenu();
743 + }
744 + };
745 + const canManageOptions = !!user?.capabilities?.manage_options;
746 + const isPostPublished = post.status === "publish";
747 + const isPostHomepage = !!post.isHome;
748 + const isDisabled = !canManageOptions || isPostHomepage || !isPostPublished || updateSettingsMutation.isPending;
749 + return /* @__PURE__ */ react.createElement(ActionMenuItem, {
750 + title: (0, _wordpress_i18n.__)("Set as homepage", "elementor"),
751 + icon: !updateSettingsMutation.isPending ? _elementor_icons.HomeIcon : _elementor_ui.CircularProgress,
752 + MenuItemProps: {
753 + disabled: isDisabled,
754 + onClick: handleClick
755 + }
756 + });
757 + }
758 +
759 +//#endregion
760 +//#region packages/packages/core/editor-site-navigation/src/components/panel/actions-menu/actions/view.tsx
761 + function View({ post }) {
762 + const { type } = usePostListContext();
763 + const title = (0, _wordpress_i18n.__)("View %s", "elementor").replace("%s", postTypesMap[type].labels.singular_name);
764 + return /* @__PURE__ */ react.createElement(ActionMenuItem, {
765 + title,
766 + icon: _elementor_icons.EyeIcon,
767 + MenuItemProps: { onClick: () => window.open(post.link, "_blank") }
768 + });
769 + }
770 +
771 +//#endregion
772 +//#region packages/packages/core/editor-site-navigation/src/components/panel/posts-list/list-items/list-item-view.tsx
773 + var DisabledPostTooltip = ({ children, isDisabled }) => {
774 + if (isDisabled) {
775 + const title = /* @__PURE__ */ react.createElement(_elementor_ui.Typography, { variant: "caption" }, "You cannot edit this page.", /* @__PURE__ */ react.createElement("br", null), "To edit it directly, contact the site owner");
776 + return /* @__PURE__ */ react.createElement(_elementor_ui.Tooltip, {
777 + title,
778 + placement: "bottom",
779 + arrow: false
780 + }, children);
781 + }
782 + return /* @__PURE__ */ react.createElement(react.Fragment, null, children);
783 + };
784 + function ListItemView({ post }) {
785 + const activeDocument = (0, _elementor_editor_documents.__useActiveDocument)();
786 + const navigateToDocument = (0, _elementor_editor_documents.__useNavigateToDocument)();
787 + const popupState = (0, _elementor_ui.usePopupState)({
788 + variant: "popover",
789 + popupId: "post-actions",
790 + disableAutoFocus: true
791 + });
792 + const isActive = activeDocument?.id === post.id;
793 + const status = isActive ? activeDocument?.status.value : post.status;
794 + const title = isActive ? activeDocument?.title : post.title.rendered;
795 + const isDisabled = !post.user_can.edit;
796 + return /* @__PURE__ */ react.createElement(react.Fragment, null, /* @__PURE__ */ react.createElement(DisabledPostTooltip, { isDisabled }, /* @__PURE__ */ react.createElement(_elementor_ui.ListItem, {
797 + disablePadding: true,
798 + secondaryAction: /* @__PURE__ */ react.createElement(_elementor_ui.IconButton, {
799 + value: true,
800 + size: "small",
801 + ...(0, _elementor_ui.bindTrigger)(popupState)
802 + }, /* @__PURE__ */ react.createElement(_elementor_icons.DotsVerticalIcon, { fontSize: "small" }))
803 + }, /* @__PURE__ */ react.createElement(_elementor_ui.ListItemButton, {
804 + selected: isActive,
805 + disabled: isDisabled,
806 + onClick: () => {
807 + if (!isActive) navigateToDocument(post.id);
808 + },
809 + dense: true
810 + }, /* @__PURE__ */ react.createElement(_elementor_ui.ListItemText, { disableTypography: true }, /* @__PURE__ */ react.createElement(PageTitleAndStatus, {
811 + title,
812 + status
813 + })), post.isHome && /* @__PURE__ */ react.createElement(_elementor_icons.HomeIcon, {
814 + titleAccess: (0, _wordpress_i18n.__)("Homepage", "elementor"),
815 + color: "disabled"
816 + })))), /* @__PURE__ */ react.createElement(_elementor_ui.Menu, {
817 + PaperProps: { sx: {
818 + mt: 2,
819 + width: 200
820 + } },
821 + MenuListProps: { dense: true },
822 + ...(0, _elementor_ui.bindMenu)(popupState)
823 + }, /* @__PURE__ */ react.createElement(Rename, { post }), /* @__PURE__ */ react.createElement(Duplicate, {
824 + post,
825 + popupState
826 + }), /* @__PURE__ */ react.createElement(Delete, { post }), /* @__PURE__ */ react.createElement(View, { post }), /* @__PURE__ */ react.createElement(_elementor_ui.Divider, null), /* @__PURE__ */ react.createElement(SetHome, {
827 + post,
828 + closeMenu: () => popupState.close()
829 + })));
830 + }
831 +
832 +//#endregion
833 +//#region packages/packages/core/editor-site-navigation/src/components/panel/posts-list/post-list-item.tsx
834 + function PostListItem$1({ post }) {
835 + const { editMode } = usePostListContext();
836 + if ("rename" === editMode.mode && post?.id && post?.id === editMode.details.postId) return /* @__PURE__ */ react.createElement(ListItemRename, { post });
837 + if ("create" === editMode.mode && !post) return /* @__PURE__ */ react.createElement(ListItemCreate, null);
838 + if ("duplicate" === editMode.mode && !post) return /* @__PURE__ */ react.createElement(ListItemDuplicate, null);
839 + if (!post) return null;
840 + return /* @__PURE__ */ react.createElement(ListItemView, { post });
841 + }
842 + __name(PostListItem$1, "PostListItem");
843 +
844 +//#endregion
845 +//#region packages/packages/core/editor-site-navigation/src/components/panel/posts-list/posts-collapsible-list.tsx
846 + function PostsCollapsibleList({ isOpenByDefault = false }) {
847 + const { type, editMode } = usePostListContext();
848 + const { data: { posts, total }, isLoading: postsLoading, isError: postsError, fetchNextPage, hasNextPage, isFetchingNextPage } = usePosts(type);
849 + const { data: homepageId } = useHomepage();
850 + if (postsError) return /* @__PURE__ */ react.createElement(ErrorState, null);
851 + if (!posts || postsLoading) return /* @__PURE__ */ react.createElement(_elementor_ui.Box, { sx: { px: 5 } }, /* @__PURE__ */ react.createElement(_elementor_ui.Box, {
852 + display: "flex",
853 + justifyContent: "flex-end",
854 + alignItems: "center"
855 + }, /* @__PURE__ */ react.createElement(_elementor_ui.Skeleton, {
856 + sx: { my: 4 },
857 + animation: "wave",
858 + variant: "rounded",
859 + width: "110px",
860 + height: "28px"
861 + })), /* @__PURE__ */ react.createElement(_elementor_ui.Box, null, /* @__PURE__ */ react.createElement(_elementor_ui.Skeleton, {
862 + sx: { my: 3 },
863 + animation: "wave",
864 + variant: "rounded",
865 + width: "100%",
866 + height: "24px"
867 + }), /* @__PURE__ */ react.createElement(_elementor_ui.Skeleton, {
868 + sx: { my: 3 },
869 + animation: "wave",
870 + variant: "rounded",
871 + width: "70%",
872 + height: "24px"
873 + }), /* @__PURE__ */ react.createElement(_elementor_ui.Skeleton, {
874 + sx: { my: 3 },
875 + animation: "wave",
876 + variant: "rounded",
877 + width: "70%",
878 + height: "24px"
879 + }), /* @__PURE__ */ react.createElement(_elementor_ui.Skeleton, {
880 + sx: { my: 3 },
881 + animation: "wave",
882 + variant: "rounded",
883 + width: "70%",
884 + height: "24px"
885 + })));
886 + const label = `${postTypesMap[type].labels.plural_name} (${total.toString()})`;
887 + const sortedPosts = posts.map((post) => {
888 + if (post.id === homepageId) return {
889 + ...post,
890 + isHome: true
891 + };
892 + return post;
893 + }).sort((a, b) => {
894 + if (a.id === homepageId) return -1;
895 + if (b.id === homepageId) return 1;
896 + return 0;
897 + });
898 + return /* @__PURE__ */ react.createElement(react.Fragment, null, /* @__PURE__ */ react.createElement(_elementor_ui.Box, {
899 + display: "flex",
900 + justifyContent: "flex-end",
901 + alignItems: "center",
902 + sx: {
903 + py: 1,
904 + px: 2
905 + }
906 + }, /* @__PURE__ */ react.createElement(AddNewButton, null)), /* @__PURE__ */ react.createElement(_elementor_ui.List, { dense: true }, /* @__PURE__ */ react.createElement(CollapsibleList, {
907 + label,
908 + Icon: _elementor_icons.PageTypeIcon,
909 + isOpenByDefault: isOpenByDefault || false
910 + }, sortedPosts.map((post) => {
911 + return /* @__PURE__ */ react.createElement(PostListItem$1, {
912 + key: post.id,
913 + post
914 + });
915 + }), ["duplicate", "create"].includes(editMode.mode) && /* @__PURE__ */ react.createElement(PostListItem$1, null), hasNextPage && /* @__PURE__ */ react.createElement(_elementor_ui.Box, { sx: {
916 + display: "flex",
917 + justifyContent: "center"
918 + } }, /* @__PURE__ */ react.createElement(_elementor_ui.Button, {
919 + onClick: fetchNextPage,
920 + color: "secondary"
921 + }, isFetchingNextPage ? /* @__PURE__ */ react.createElement(_elementor_ui.CircularProgress, null) : "Load More")))));
922 + }
923 +
924 +//#endregion
925 +//#region packages/packages/core/editor-site-navigation/src/components/panel/shell.tsx
926 + var Shell = () => {
927 + const [isErrorSnackbarOpen, setIsErrorSnackbarOpen] = (0, react.useState)(false);
928 + return /* @__PURE__ */ react.createElement(_elementor_editor_panels.Panel, null, /* @__PURE__ */ react.createElement(_elementor_editor_panels.PanelHeader, null, /* @__PURE__ */ react.createElement(_elementor_editor_panels.PanelHeaderTitle, null, (0, _wordpress_i18n.__)("Pages", "elementor"))), /* @__PURE__ */ react.createElement(_elementor_editor_panels.PanelBody, null, /* @__PURE__ */ react.createElement(PostListContextProvider, {
929 + type: "page",
930 + setError: () => setIsErrorSnackbarOpen(true)
931 + }, /* @__PURE__ */ react.createElement(PostsCollapsibleList, { isOpenByDefault: true })), /* @__PURE__ */ react.createElement(ErrorSnackbar, {
932 + open: isErrorSnackbarOpen,
933 + onClose: () => setIsErrorSnackbarOpen(false)
934 + })));
935 + };
936 +
937 +//#endregion
938 +//#region packages/packages/core/editor-site-navigation/src/components/panel/panel.ts
939 + var { panel, usePanelStatus, usePanelActions } = (0, _elementor_editor_panels.createPanel)({
940 + id: "site-navigation-panel",
941 + component: Shell
942 + });
943 +
944 +//#endregion
945 +//#region packages/packages/core/editor-site-navigation/src/hooks/use-create-page.ts
946 + var endpointPath = "/elementor/v1/site-navigation/add-new-post";
947 + function useCreatePage() {
948 + const [isLoading, setIsLoading] = (0, react.useState)(false);
949 + return {
950 + create: () => {
951 + setIsLoading(true);
952 + return addNewPage().then((newPost) => newPost).finally(() => setIsLoading(false));
953 + },
954 + isLoading
955 + };
956 + }
957 + async function addNewPage() {
958 + return await (0, _wordpress_api_fetch.default)({
959 + path: endpointPath,
960 + method: "POST",
961 + data: { post_type: "page" }
962 + });
963 + }
964 +
965 +//#endregion
966 +//#region packages/packages/core/editor-site-navigation/src/components/top-bar/create-post-list-item.tsx
967 + function CreatePostListItem({ closePopup, ...props }) {
968 + const { create, isLoading } = useCreatePage();
969 + const navigateToDocument = (0, _elementor_editor_documents.__useNavigateToDocument)();
970 + const { data: user } = useUser();
971 + const { dispatchEvent, config } = (0, _elementor_events.useMixpanel)();
972 + return /* @__PURE__ */ react.createElement(_elementor_ui.MenuItem, {
973 + disabled: isLoading || !user?.capabilities?.edit_pages,
974 + onClick: async () => {
975 + const eventName = config?.names?.editorOne?.topBarPageList;
976 + if (eventName) dispatchEvent?.(eventName, {
977 + window_name: config?.appTypes?.editor,
978 + interaction_type: config?.triggers?.click?.toLowerCase(),
979 + target_type: config?.targetTypes?.dropdownItem,
980 + target_name: config?.targetNames?.pageList?.addNewPage,
981 + interaction_result: config?.interactionResults?.create,
982 + target_location: config?.locations?.topBar?.replace(/\s+/g, "_").toLowerCase(),
983 + location_l1: config?.secondaryLocations?.pageListDropdown?.replace(/\s+/g, "_").toLowerCase(),
984 + location_l2: config?.targetTypes?.dropdownItem
985 + });
986 + const { id } = await create();
987 + closePopup();
988 + await navigateToDocument(id);
989 + },
990 + ...props
991 + }, /* @__PURE__ */ react.createElement(_elementor_ui.ListItemIcon, null, isLoading ? /* @__PURE__ */ react.createElement(_elementor_ui.CircularProgress, { size: "1.25rem" }) : /* @__PURE__ */ react.createElement(_elementor_icons.PlusIcon, { fontSize: "small" })), /* @__PURE__ */ react.createElement(_elementor_ui.ListItemText, {
992 + primaryTypographyProps: { variant: "body2" },
993 + primary: (0, _wordpress_i18n.__)("Add new page", "elementor")
994 + }));
995 + }
996 +
997 +//#endregion
998 +//#region packages/packages/core/editor-site-navigation/src/components/top-bar/indicator.tsx
999 + function Indicator({ title, status }) {
1000 + return /* @__PURE__ */ react.createElement(Tooltip, { title }, /* @__PURE__ */ react.createElement(_elementor_ui.Stack, {
1001 + component: "span",
1002 + direction: "row",
1003 + alignItems: "center",
1004 + spacing: .5
1005 + }, /* @__PURE__ */ react.createElement(_elementor_ui.Typography, {
1006 + component: "span",
1007 + variant: "body2",
1008 + sx: { maxWidth: "120px" },
1009 + noWrap: true
1010 + }, title), status.value !== "publish" && /* @__PURE__ */ react.createElement(_elementor_ui.Typography, {
1011 + component: "span",
1012 + variant: "body2",
1013 + sx: { fontStyle: "italic" }
1014 + }, "(", status.label, ")")));
1015 + }
1016 + function Tooltip(props) {
1017 + return /* @__PURE__ */ react.createElement(_elementor_ui.Tooltip, {
1018 + PopperProps: { sx: { "&.MuiTooltip-popper .MuiTooltip-tooltip.MuiTooltip-tooltipPlacementBottom": { mt: 2.7 } } },
1019 + ...props
1020 + });
1021 + }
1022 +
1023 +//#endregion
1024 +//#region packages/packages/core/editor-site-navigation/src/components/top-bar/chip-doc-type.tsx
1025 + var iconsMap = getIconsMap();
1026 + function DocTypeChip({ postType, docType, label }) {
1027 + const color = "elementor_library" === postType ? "global" : "primary";
1028 + const Icon = iconsMap[docType] || _elementor_icons.PostTypeIcon;
1029 + return /* @__PURE__ */ react.createElement(_elementor_ui.Chip, {
1030 + component: "span",
1031 + size: "small",
1032 + variant: "outlined",
1033 + label,
1034 + "data-value": docType,
1035 + color,
1036 + icon: /* @__PURE__ */ react.createElement(Icon, null),
1037 + sx: {
1038 + ml: 1,
1039 + cursor: "inherit"
1040 + }
1041 + });
1042 + }
1043 +
1044 +//#endregion
1045 +//#region packages/packages/core/editor-site-navigation/src/components/top-bar/post-list-item.tsx
1046 + function PostListItem({ post, closePopup, ...props }) {
1047 + const navigateToDocument = (0, _elementor_editor_documents.__useNavigateToDocument)();
1048 + const postTitle = useReverseHtmlEntities(post.title);
1049 + const { dispatchEvent, config } = (0, _elementor_events.useMixpanel)();
1050 + return /* @__PURE__ */ react.createElement(_elementor_ui.MenuItem, {
1051 + disabled: !post.user_can.edit,
1052 + onClick: async () => {
1053 + const eventName = config?.names?.editorOne?.topBarPageList;
1054 + if (eventName) dispatchEvent?.(eventName, {
1055 + window_name: config?.appTypes?.editor,
1056 + interaction_type: config?.triggers?.click?.toLowerCase(),
1057 + target_type: config?.targetTypes?.dropdownItem,
1058 + target_name: postTitle,
1059 + interaction_result: config?.interactionResults?.navigate,
1060 + target_location: config?.locations?.topBar?.replace(/\s+/g, "_").toLowerCase(),
1061 + location_l1: config?.secondaryLocations?.pageListDropdown?.replace(/\s+/g, "_").toLowerCase(),
1062 + location_l2: config?.targetTypes?.dropdownItem
1063 + });
1064 + closePopup();
1065 + await navigateToDocument(post.id);
1066 + },
1067 + ...props
1068 + }, /* @__PURE__ */ react.createElement(_elementor_ui.ListItemText, {
1069 + sx: { flexGrow: 0 },
1070 + primaryTypographyProps: {
1071 + variant: "body2",
1072 + noWrap: true
1073 + },
1074 + primary: postTitle
1075 + }), /* @__PURE__ */ react.createElement(DocTypeChip, {
1076 + postType: post.type.post_type,
1077 + docType: post.type.doc_type,
1078 + label: post.type.label
1079 + }));
1080 + }
1081 +
1082 +//#endregion
1083 +//#region packages/packages/core/editor-site-navigation/src/components/top-bar/recently-edited.tsx
1084 + function RecentlyEdited() {
1085 + const activeDocument = (0, _elementor_editor_documents.__useActiveDocument)();
1086 + const hostDocument = (0, _elementor_editor_documents.__useHostDocument)();
1087 + const document = activeDocument && activeDocument.type.value !== "kit" ? activeDocument : hostDocument;
1088 + const { data } = useRecentPosts();
1089 + const getRecentPosts = () => {
1090 + if (!data) return [];
1091 + return data.filter((post) => post.id !== document?.id).splice(0, 6 - 1);
1092 + };
1093 + const recentPosts = getRecentPosts();
1094 + const popupState = (0, _elementor_ui.usePopupState)({
1095 + variant: "popover",
1096 + popupId: "elementor-v2-top-bar-recently-edited"
1097 + });
1098 + const documentTitle = useReverseHtmlEntities(document?.title);
1099 + if (!document) return null;
1100 + const buttonProps = (0, _elementor_ui.bindTrigger)(popupState);
1101 + return /* @__PURE__ */ react.createElement(react.Fragment, null, /* @__PURE__ */ react.createElement(_elementor_ui.Button, {
1102 + color: "inherit",
1103 + size: "small",
1104 + endIcon: /* @__PURE__ */ react.createElement(_elementor_icons.ChevronDownIcon, { fontSize: "small" }),
1105 + ...buttonProps,
1106 + onClick: (e) => {
1107 + const extendedWindow = window;
1108 + const config = extendedWindow?.elementorCommon?.eventsManager?.config;
1109 + if (config) extendedWindow.elementorCommon.eventsManager.dispatchEvent(config.names.topBar.documentNameDropdown, {
1110 + location: config.locations.topBar,
1111 + secondaryLocation: config.secondaryLocations.documentNameDropdown,
1112 + trigger: config.triggers.dropdownClick,
1113 + element: config.elements.dropdown
1114 + });
1115 + buttonProps.onClick(e);
1116 + }
1117 + }, /* @__PURE__ */ react.createElement(Indicator, {
1118 + title: documentTitle,
1119 + status: document.status
1120 + })), /* @__PURE__ */ react.createElement(_elementor_ui.Menu, {
1121 + MenuListProps: { subheader: /* @__PURE__ */ react.createElement(_elementor_ui.ListSubheader, {
1122 + color: "primary",
1123 + sx: {
1124 + fontStyle: "italic",
1125 + fontWeight: "300"
1126 + }
1127 + }, (0, _wordpress_i18n.__)("Recent", "elementor")) },
1128 + PaperProps: { sx: {
1129 + mt: 2.5,
1130 + width: 320
1131 + } },
1132 + ...(0, _elementor_ui.bindMenu)(popupState)
1133 + }, recentPosts.map((post) => /* @__PURE__ */ react.createElement(PostListItem, {
1134 + key: post.id,
1135 + post,
1136 + closePopup: popupState.close
1137 + })), recentPosts.length === 0 && /* @__PURE__ */ react.createElement(_elementor_ui.MenuItem, { disabled: true }, /* @__PURE__ */ react.createElement(_elementor_ui.ListItemText, {
1138 + primaryTypographyProps: {
1139 + variant: "caption",
1140 + fontStyle: "italic"
1141 + },
1142 + primary: (0, _wordpress_i18n.__)("There are no other pages or templates on this site yet.", "elementor")
1143 + })), /* @__PURE__ */ react.createElement(_elementor_ui.Divider, { disabled: recentPosts.length === 0 }), /* @__PURE__ */ react.createElement(CreatePostListItem, { closePopup: popupState.close })));
1144 + }
1145 +
1146 +//#endregion
1147 +//#region packages/packages/core/editor-site-navigation/src/env.ts
1148 + var { env } = (0, _elementor_env.parseEnv)("@elementor/editor-site-navigation", (envData) => {
1149 + return envData;
1150 + });
1151 +
1152 +//#endregion
1153 +//#region packages/packages/core/editor-site-navigation/src/hooks/use-toggle-button-props.ts
1154 + function useToggleButtonProps() {
1155 + const { isOpen: selectedState, isBlocked } = usePanelStatus();
1156 + const { open, close } = usePanelActions();
1157 + return {
1158 + title: (0, _wordpress_i18n.__)("Pages", "elementor"),
1159 + icon: _elementor_icons.PagesIcon,
1160 + onClick: () => {
1161 + const extendedWindow = window;
1162 + const config = extendedWindow?.elementorCommon?.eventsManager?.config;
1163 + if (config) extendedWindow.elementorCommon.eventsManager.dispatchEvent("top_bar_pages", {
1164 + location: config.locations.topBar,
1165 + secondaryLocation: config.secondaryLocations.elementorLogo,
1166 + trigger: config.triggers.click,
1167 + element: config.elements.buttonIcon
1168 + });
1169 + return selectedState ? close() : open();
1170 + },
1171 + selected: selectedState,
1172 + disabled: isBlocked
1173 + };
1174 + }
1175 +
1176 +//#endregion
1177 +//#region packages/packages/core/editor-site-navigation/src/init.ts
1178 + function init() {
1179 + registerTopBarMenuItems();
1180 + if (env.is_pages_panel_active) {
1181 + (0, _elementor_editor_panels.registerPanel)(panel);
1182 + registerButton();
1183 + }
1184 + }
1185 + function registerTopBarMenuItems() {
1186 + (0, _elementor_editor_app_bar.injectIntoPageIndication)({
1187 + id: "document-recently-edited",
1188 + component: RecentlyEdited
1189 + });
1190 + }
1191 + function registerButton() {
1192 + _elementor_editor_app_bar.toolsMenu.registerToggleAction({
1193 + id: "toggle-site-navigation-panel",
1194 + priority: 6,
1195 + useProps: useToggleButtonProps
1196 + });
1197 + }
1198 +
1199 +//#endregion
1200 +//#region packages/packages/core/editor-site-navigation/src/index.ts
1201 + var src_exports = /* @__PURE__ */ __exportAll({
1202 + extendIconsMap: () => extendIconsMap,
1203 + init: () => init
1204 + });
1205 +
1206 +//#endregion
1207 +//#region \0elementor-package-library-entry
1208 + (window.elementorV2 = window.elementorV2 || {}).editorSiteNavigation = src_exports;
1209 +
1210 +//#endregion
1211 +})(elementorV2.icons, elementorV2.editorAppBar, elementorV2.editorPanels, React, wp.i18n, elementorV2.ui, wp.apiFetch, elementorV2.query, elementorV2.editorDocuments, elementorV2.editorV1Adapters, elementorV2.events, elementorV2.env);
1212 +window.elementorV2.editorSiteNavigation?.init?.();
3 1213 //# sourceMappingURL=editor-site-navigation.js.map