Changeset 3377715
- Timestamp:
- 10/13/2025 07:23:40 PM (6 months ago)
- Location:
- sidebar-navigation-for-wpbakery
- Files:
-
- 16 added
- 7 edited
-
tags/2.3.1 (added)
-
tags/2.3.1/assets (added)
-
tags/2.3.1/assets/dist (added)
-
tags/2.3.1/assets/dist/css (added)
-
tags/2.3.1/assets/dist/css/admin.min.css (added)
-
tags/2.3.1/assets/dist/css/editor.min.css (added)
-
tags/2.3.1/assets/dist/js (added)
-
tags/2.3.1/assets/dist/js/admin.min.js (added)
-
tags/2.3.1/assets/dist/js/editor.min.js (added)
-
tags/2.3.1/includes (added)
-
tags/2.3.1/includes/page-structure-panel.php (added)
-
tags/2.3.1/includes/settings.php (added)
-
tags/2.3.1/languages (added)
-
tags/2.3.1/languages/sidebar-navigation-for-wpbakery.pot (added)
-
tags/2.3.1/readme.txt (added)
-
tags/2.3.1/sidebar-navigation-for-wpbakery.php (added)
-
trunk/assets/dist/css/editor.min.css (modified) (1 diff)
-
trunk/assets/dist/js/editor.min.js (modified) (1 diff)
-
trunk/includes/page-structure-panel.php (modified) (1 diff)
-
trunk/includes/settings.php (modified) (2 diffs)
-
trunk/languages/sidebar-navigation-for-wpbakery.pot (modified) (3 diffs)
-
trunk/readme.txt (modified) (2 diffs)
-
trunk/sidebar-navigation-for-wpbakery.php (modified) (5 diffs)
Legend:
- Unmodified
- Added
- Removed
-
sidebar-navigation-for-wpbakery/trunk/assets/dist/css/editor.min.css
r3336131 r3377715 1 @media screen and (min-width:961px){:root{--vc-navbar-width:50px;--vc-min-panel-width:440px}#wpbody,#wpcontent{height:0;padding:0}#vc_navbar{bottom:0;box-shadow:1px 1px 4px rgba(0,0,0,.25);left:0;position:fixed;right:auto;top:0;width:var(--vc-navbar-width);z-index:99999}#vc_navbar .vc_navbar-header,#vc_navbar li{float:none!important;height:auto}#vc_navbar .vc_navbar-brand{padding:25px}#vc_navbar .vc_save-buttons{flex-direction:column;gap:4px;margin:0 2px}#vc_navbar .vc_save-buttons .vc_btn{margin:2px;width:70%}#vc_navbar .vc_save-buttons .vc_btn p{font-size:10px}#vc_navbar a.vc_icon-btn{font-size:20px;height:45px;padding:24px;width:var(--vc-navbar-width)}#vc_navbar .vc_navbar-nav{align-items:center;bottom:0;display:flex;flex-direction:column;left:0;position:absolute;top:56px;width:100%}#vc_navbar .vc_navbar-nav>li:not(.vc_save-buttons){height:48px}#vc_navbar .vc_dropdown-list{left:100%;right:auto;top:-75px;z-index:999999}#vc_navbar #vc_screen-size-control .vc_dropdown-list{top:-145px}#vc_navbar .vc_icon-btn.vc_active{background-color:#00447f}.ui-resizable-handle,.vc_hide-description .vc_element-description{display:none!important}.vc_resizable-handle{cursor:ew-resize;height:100%;position:absolute;top:0;width:10px;z-index:9999}.vc_resizable-handle--left{right:-5px}.vc_resizable-handle--right{left:-5px}#vc_inline-frame-wrapper{height:100vh!important;left:var(--vc-navbar-width);right:0;top:0!important;width:auto!important}#vc_inline-frame{height:100%!important}.vc_ui-panel.vc_ui-panel-window{bottom:0!important;height:100%!important;left:var(--vc-navbar-width)!important;margin:0!important;max-height:100%!important;padding:0!important;top:0!important;width:var(--vc-min-panel-width)!important}.vc_ui-minimize-button{display:none!important}.vc_ui-panel-header-actions,.vc_ui-search-box{width:100%}.vc_message{top:0!important;z-index:99999!important}.vc_add-element-container .wpb-content-layouts{gap:1px}.vc_ui-panel-content{margin-top:0!important}.vc_ui-panel-content.vc_properties-list-init{margin:auto!important}.sidebar-position-right #vc_inline-frame-wrapper{left:0;right:var(--vc-navbar-width)}.sidebar-position-right #vc_navbar{left:auto;right:0}.sidebar-position-right .vc_ui-panel.vc_ui-panel-window{left:auto!important;right:var(--vc-navbar-width)!important}.sidebar-position-right #vc_navbar .vc_dropdown-list{left:auto;right:100%}}@media screen and (min-width:961px)and (max-height:625px){.vc_pull-right.vc_show-mobile{display:block!important;margin-top:auto!important}.vc_pull-right.vc_show-mobile .vc_dropdown-list{bottom:0!important;top:auto!important;width:270px}.vc_hide-mobile{display:none!important}.vc_save-buttons{margin:0!important}.vc_show-mobile .vc_dropdown-list .vc_hide-desktop,.vc_show-mobile .vc_dropdown-list .vc_hide-desktop-more,.vc_show-mobile .vc_dropdown-list .vc_hide-desktop-more .vc_hide-mobile{display:block!important}#vc_navbar-redo.vc_icon-btn,#vc_navbar-undo.vc_icon-btn,.vc_dropdown-list .vc_dropdown-list-item a,.vc_dropdown-list .vc_hide-mobile a.vc_icon-btn,.vc_save-buttons a.vc_icon-btn{align-items:center;display:flex!important;height:56px!important;justify-content:flex-start;padding:18px!important;width:100%!important}.vc_dropdown-list .vc_dropdown-list-item .vc-composer-icon,.vc_dropdown-list a.vc_icon-btn .vc-composer-icon{font-size:24px;left:unset;position:relative;top:unset;transform:unset}.vc_dropdown-list .vc_dropdown-list-item p,.vc_dropdown-list a.vc_icon-btn p{margin:0 0 0 18px!important}}@media screen and (min-width:961px){.vc_frame-size-helper{height:auto;position:absolute;top:10px;width:100%}.vc_frame-size-helper--left{left:calc(100% + 10px)}.vc_frame-size-helper--right{right:calc(100% + 10px);text-align:right}.vc_frame-size-helper-text{align-items:center;background:rgba(0,68,127,.9);border-radius:3px;color:#fff;display:inline-flex;font-size:12px;height:auto;justify-content:center;min-width:70px;padding:1px 6px;width:auto}}.vc_compact-view .wpb-content-layouts-container h4{margin:0 0 10px!important}.vc_compact-view .wpb-content-layouts{grid-template-columns:repeat(auto-fit,96px)!important;margin:0!important}.vc_compact-view .vc_element-description{font-size:12px!important}.vc_compact-view .vc_shortcode-link{font-size:13px}.vc_compact-view .vc_element-icon{margin-bottom:10px}.vc_compact-view .vc_css-editor .vc_settings label,.vc_compact-view .wpb_element_label{font-size:13px;font-weight:500}.vc_compact-view .vc_description{font-size:12px;margin-top:5px}.vc_compact-view .wpb-param-heading{margin-bottom:3px}.vc_compact-view .vc_edit_form_elements input,.vc_compact-view .vc_edit_form_elements select{font-size:13px;height:34px;line-height:1}.vc_compact-view .vc_checkbox input[type=checkbox]:checked:before,.vc_compact-view .vc_edit_form_elements input[type=checkbox],.vc_compact-view .vc_edit_form_elements input[type=radio]{height:16px;width:16px}.vc_compact-view .vc_edit_form_elements .vc_ui-button.vc_param-animation-style-trigger{height:34px;line-height:34px;margin-top:8px}.vc_compact-view .vc_css-editor input{font-size:10px;height:20px;line-height:1;width:30px}.vc_compact-view .gallery_widget_add_images,.vc_compact-view .gallery_widget_attached_images_list .added,.vc_compact-view .gallery_widget_attached_images_list .inner,.vc_compact-view .vc_css-editor .vc_settings .vc_background-image .vc_add-image{height:60px!important;width:60px!important}.vc_compact-view .gallery_widget_attached_images_list li img{max-height:60px!important;vertical-align:initial}.vc_compact-view .wpb_el_type_attach_image .vc_icon-remove{right:12px;width:12px}.vc_compact-view .title-label,.vc_compact-view .url-label,.vc_compact-view .vc_link_label,.vc_compact-view .wpb_el_type_attach_image .vc_icon-remove .vc-c-icon-close,.vc_compact-view .wpb_el_type_attach_images .vc_icon-remove .vc-composer-icon{font-size:12px}.vc_compact-view .vc-icons-selector .selector{height:30px;width:90px}.vc_compact-view .vc-icons-selector .selected-icon{width:50px}.vc_compact-view .vc-icons-selector .selected-icon i,.vc_compact-view .vc-icons-selector .selector-button i,.vc_compact-view .vc_shortcode-param[data-param_type=iconpicker] .vc-icons-selector .selected-icon{font-size:16px;line-height:32px}.vc_compact-view .vc-icons-selector .selector-button i{font-size:12px}.vc_compact-view .vc_simplified .vc_layout-onion label{left:38px}.vc_compact-view .vc_css-editor .vc_layout-onion .vc_border,.vc_compact-view .vc_css-editor .vc_layout-onion .vc_content,.vc_compact-view .vc_css-editor .vc_layout-onion .vc_padding{margin:36px}.vc_compact-view .vc_css-editor .vc_layout-onion input.vc_bottom{bottom:3px}.vc_compact-view .vc_css-editor .vc_layout-onion input.vc_top{top:3px}.vc_compact-view .vc_css-editor .vc_layout-onion input.vc_left{left:3px}.vc_compact-view .vc_css-editor .vc_layout-onion input.vc_right{right:3px}.vc_compact-view .pickr .pcr-button{height:26px;width:26px}.vc_navbar.vc_navbar-frontend:not(.vc_post-custom-layout-selected) #vc_page-structure{opacity:.2;pointer-events:none}#vc_ui-panel-page-structure{height:auto;left:0;margin-left:auto;margin-right:auto;max-height:90vh;right:0;top:5vh;width:80%}.page-structure-list{margin:0}.page-structure-item{background:#fff;border-radius:3px;padding:5px 12px 12px 5px}#page-structure-container>.page-structure-list>.page-structure-item{margin:0 0 10px}.page-structure-item--section{background:#f8f8f8}.page-structure-item-- inner-row,.page-structure-item--row{background:#eee}.page-structure-item--column,.page-structure-item--inner-column{background:#e7e7e7}.page-structure-children{margin:10px 0 0 10px}.element-controls{margin-left:auto;opacity:0;transition:opacity .2s ease-in-out;visibility:hidden}.element-controls .vc_btn-content{padding:3px}.element-controls .vc_control-btn .vc-composer-icon{color:#5e5e5e}.element-controls .vc_control-btn .vc_btn-content:hover{background:transparent}.element-controls .vc-c-icon-search{font-size:18px}.page-structure-label{align-items:center;cursor:default;display:flex;font-size:14px;font-weight:500;padding:7px 5px 0}.page-structure-label:before{content:"";display:inline-block;font-family:vcpb-plugin-icons,sans-serif!important;width:16px;speak:never;font-style:normal;font-variant:normal;font-weight:400;line-height:1;text-transform:none;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;margin-right:5px}.page-structure-label:hover .element-controls{opacity:1;visibility:visible}.page-structure-label>span{display:-webkit-box;overflow:hidden;-webkit-line-clamp:1;-webkit-box-orient:vertical}.page-structure-children:hover{position:relative}.page-structure-label--children{cursor:pointer}.page-structure-label--children:before{content:""}.page-structure-label--children.expanded:before{content:""}.vc_message-close{align-items:center;background-color:transparent;border:none;border-radius:30px;cursor:pointer;display:inline-flex;font-size:12px;height:8px;justify-content:center;margin:0;padding:5px;position:absolute;right:6px;top:9px;width:8px}1 @media screen and (min-width:961px){:root{--vc-navbar-width:50px;--vc-min-panel-width:440px}#wpbody,#wpcontent{height:0;padding:0}#vc_navbar{bottom:0;box-shadow:1px 1px 4px rgba(0,0,0,.25);left:0;position:fixed;right:auto;top:0;width:var(--vc-navbar-width);z-index:99999}#vc_navbar .vc_navbar-header,#vc_navbar li{float:none!important;height:auto}#vc_navbar .vc_navbar-brand{padding:25px}#vc_navbar .vc_save-buttons{flex-direction:column;gap:4px;margin:0 2px}#vc_navbar .vc_save-buttons .vc_btn{margin:2px;width:70%}#vc_navbar .vc_save-buttons .vc_btn p{font-size:10px}#vc_navbar a.vc_icon-btn{font-size:20px;height:45px;padding:24px;width:var(--vc-navbar-width)}#vc_navbar .vc_navbar-nav{align-items:center;bottom:0;display:flex;flex-direction:column;left:0;position:absolute;top:56px;width:100%}#vc_navbar .vc_navbar-nav>li:not(.vc_save-buttons){height:48px}#vc_navbar .vc_dropdown-list{left:100%;right:auto;top:-75px;z-index:999999}#vc_navbar #vc_screen-size-control .vc_dropdown-list{top:-145px}#vc_navbar .vc_icon-btn.vc_active{background-color:#00447f}.ui-resizable-handle,.vc_hide-description .vc_element-description{display:none!important}.vc_resizable-handle{cursor:ew-resize;height:100%;position:absolute;top:0;width:10px;z-index:9999}.vc_resizable-handle--left{right:-5px}.vc_resizable-handle--right{left:-5px}#vc_inline-frame-wrapper{height:100vh!important;left:var(--vc-navbar-width);right:0;top:0!important;width:auto!important}#vc_inline-frame{height:100%!important}.vc_ui-panel.vc_ui-panel-window{bottom:0!important;height:100%!important;left:var(--vc-navbar-width)!important;margin:0!important;max-height:100%!important;padding:0!important;top:0!important;width:var(--vc-min-panel-width)!important}.vc_ui-minimize-button{display:none!important}.vc_ui-panel-header-actions,.vc_ui-search-box{width:100%}.vc_message{top:0!important;z-index:99999!important}.vc_add-element-container .wpb-content-layouts{gap:1px}.vc_ui-panel-content{margin-top:0!important}.vc_ui-panel-content.vc_properties-list-init{margin:auto!important}.sidebar-position-right #vc_inline-frame-wrapper{left:0;right:var(--vc-navbar-width)}.sidebar-position-right #vc_navbar{left:auto;right:0}.sidebar-position-right .vc_ui-panel.vc_ui-panel-window{left:auto!important;right:var(--vc-navbar-width)!important}.sidebar-position-right #vc_navbar .vc_dropdown-list{left:auto;right:100%}}@media screen and (min-width:961px)and (max-height:625px){.vc_pull-right.vc_show-mobile{display:block!important;margin-top:auto!important}.vc_pull-right.vc_show-mobile .vc_dropdown-list{bottom:0!important;top:auto!important;width:270px}.vc_hide-mobile{display:none!important}.vc_save-buttons{margin:0!important}.vc_show-mobile .vc_dropdown-list .vc_hide-desktop,.vc_show-mobile .vc_dropdown-list .vc_hide-desktop-more,.vc_show-mobile .vc_dropdown-list .vc_hide-desktop-more .vc_hide-mobile{display:block!important}#vc_navbar-redo.vc_icon-btn,#vc_navbar-undo.vc_icon-btn,.vc_dropdown-list .vc_dropdown-list-item a,.vc_dropdown-list .vc_hide-mobile a.vc_icon-btn,.vc_save-buttons a.vc_icon-btn{align-items:center;display:flex!important;height:56px!important;justify-content:flex-start;padding:18px!important;width:100%!important}.vc_dropdown-list .vc_dropdown-list-item .vc-composer-icon,.vc_dropdown-list a.vc_icon-btn .vc-composer-icon{font-size:24px;left:unset;position:relative;top:unset;transform:unset}.vc_dropdown-list .vc_dropdown-list-item p,.vc_dropdown-list a.vc_icon-btn p{margin:0 0 0 18px!important}}@media screen and (min-width:961px){.vc_frame-size-helper{height:auto;position:absolute;top:10px;width:100%}.vc_frame-size-helper--left{left:calc(100% + 10px)}.vc_frame-size-helper--right{right:calc(100% + 10px);text-align:right}.vc_frame-size-helper-text{align-items:center;background:rgba(0,68,127,.9);border-radius:3px;color:#fff;display:inline-flex;font-size:12px;height:auto;justify-content:center;min-width:70px;padding:1px 6px;width:auto}}.vc_compact-view .wpb-content-layouts-container h4{margin:0 0 10px!important}.vc_compact-view .wpb-content-layouts{grid-template-columns:repeat(auto-fit,96px)!important;margin:0!important}.vc_compact-view .vc_element-description{font-size:12px!important}.vc_compact-view .vc_shortcode-link{font-size:13px}.vc_compact-view .vc_element-icon{margin-bottom:10px}.vc_compact-view .vc_css-editor .vc_settings label,.vc_compact-view .wpb_element_label{font-size:13px;font-weight:500}.vc_compact-view .vc_description{font-size:12px;margin-top:5px}.vc_compact-view .wpb-param-heading{margin-bottom:3px}.vc_compact-view .vc_edit_form_elements input,.vc_compact-view .vc_edit_form_elements select{font-size:13px;height:34px;line-height:1}.vc_compact-view .vc_checkbox input[type=checkbox]:checked:before,.vc_compact-view .vc_edit_form_elements input[type=checkbox],.vc_compact-view .vc_edit_form_elements input[type=radio]{height:16px;width:16px}.vc_compact-view .vc_edit_form_elements .vc_ui-button.vc_param-animation-style-trigger{height:34px;line-height:34px;margin-top:8px}.vc_compact-view .vc_css-editor input{font-size:10px;height:20px;line-height:1;width:30px}.vc_compact-view .gallery_widget_add_images,.vc_compact-view .gallery_widget_attached_images_list .added,.vc_compact-view .gallery_widget_attached_images_list .inner,.vc_compact-view .vc_css-editor .vc_settings .vc_background-image .vc_add-image{height:60px!important;width:60px!important}.vc_compact-view .gallery_widget_attached_images_list li img{max-height:60px!important;vertical-align:initial}.vc_compact-view .wpb_el_type_attach_image .vc_icon-remove{right:12px;width:12px}.vc_compact-view .title-label,.vc_compact-view .url-label,.vc_compact-view .vc_link_label,.vc_compact-view .wpb_el_type_attach_image .vc_icon-remove .vc-c-icon-close,.vc_compact-view .wpb_el_type_attach_images .vc_icon-remove .vc-composer-icon{font-size:12px}.vc_compact-view .vc-icons-selector .selector{height:30px;width:90px}.vc_compact-view .vc-icons-selector .selected-icon{width:50px}.vc_compact-view .vc-icons-selector .selected-icon i,.vc_compact-view .vc-icons-selector .selector-button i,.vc_compact-view .vc_shortcode-param[data-param_type=iconpicker] .vc-icons-selector .selected-icon{font-size:16px;line-height:32px}.vc_compact-view .vc-icons-selector .selector-button i{font-size:12px}.vc_compact-view .vc_simplified .vc_layout-onion label{left:38px}.vc_compact-view .vc_css-editor .vc_layout-onion .vc_border,.vc_compact-view .vc_css-editor .vc_layout-onion .vc_content,.vc_compact-view .vc_css-editor .vc_layout-onion .vc_padding{margin:36px}.vc_compact-view .vc_css-editor .vc_layout-onion input.vc_bottom{bottom:3px}.vc_compact-view .vc_css-editor .vc_layout-onion input.vc_top{top:3px}.vc_compact-view .vc_css-editor .vc_layout-onion input.vc_left{left:3px}.vc_compact-view .vc_css-editor .vc_layout-onion input.vc_right{right:3px}.vc_compact-view .pickr .pcr-button{height:26px;width:26px}.vc_navbar.vc_navbar-frontend:not(.vc_post-custom-layout-selected) #vc_page-structure{opacity:.2;pointer-events:none}#vc_ui-panel-page-structure{height:auto;left:0;margin-left:auto;margin-right:auto;max-height:90vh;right:0;top:5vh;width:80%}.page-structure-list{margin:0}.page-structure-item{background:#fff;border-radius:3px;padding:5px 12px 12px 5px}#page-structure-container>.page-structure-list>.page-structure-item{margin:0 0 10px}.page-structure-item--section{background:#f8f8f8}.page-structure-item--flexbox-container,.page-structure-item--grid-container,.page-structure-item--inner-row,.page-structure-item--row{background:#eee}.page-structure-item--column,.page-structure-item--flexbox-item,.page-structure-item--grid-item,.page-structure-item--inner-column{background:#e7e7e7}.page-structure-children{margin:10px 0 0 10px}.element-controls{margin-left:auto;opacity:0;transition:opacity .2s ease-in-out;visibility:hidden}.element-controls .vc_btn-content{padding:3px}.element-controls .vc_control-btn .vc-composer-icon{color:#5e5e5e}.element-controls .vc_control-btn .vc_btn-content:hover{background:transparent}.element-controls .vc-c-icon-search{font-size:18px}.page-structure-label{align-items:center;cursor:default;display:flex;font-size:14px;font-weight:500;padding:7px 5px 0}.page-structure-label:before{content:"";display:inline-block;font-family:vcpb-plugin-icons,sans-serif!important;width:16px;speak:never;font-style:normal;font-variant:normal;font-weight:400;line-height:1;text-transform:none;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;margin-right:5px}.page-structure-label:hover .element-controls{opacity:1;visibility:visible}.page-structure-label>span{display:-webkit-box;overflow:hidden;-webkit-line-clamp:1;-webkit-box-orient:vertical}.page-structure-children:hover{position:relative}.page-structure-label--children{cursor:pointer}.page-structure-label--children:before{content:""}.page-structure-label--children.expanded:before{content:""}.vc_message-close{align-items:center;background-color:transparent;border:none;border-radius:30px;cursor:pointer;display:inline-flex;font-size:12px;height:8px;justify-content:center;margin:0;padding:5px;position:absolute;right:6px;top:9px;width:8px} -
sidebar-navigation-for-wpbakery/trunk/assets/dist/js/editor.min.js
r3336131 r3377715 1 (()=>{"use strict";const{vc:e}=window;const t=jQuery,{vc:i}=window;let s=null;function n(e){const t=i.$frame_body.find(`[data-model-id="${e}"]`);t.length&&function(e,t){if(!e)return;new IntersectionObserver(((e,i)=>{e.forEach((e=>{e.isIntersecting&&(i.unobserve(e.target),t(e.target))}))}),{threshold:.1}).observe(e),e.scrollIntoView({behavior:"smooth",block:"start"})}(t[0],(()=>{!function(e){e.append(s),s.css({zIndex:9999,opacity:"1",visibility:"visible",top:0,left:0,width:"100%",height:"100%"}),setTimeout((()=>s.css({opacity:"0",visibility:"hidden",zIndex:-1})),1800)}(t)}))}t(document).ready((()=>{i.events.on("app.render",(()=>{!s&&i.$frame_body&&function(){const e=t('<div class="sfw-element-helper"><div>');e.css({position:"absolute",opacity:"0",visibility:"hidden",zIndex:-1,boxShadow:"0 0 4px 2px rgb(10, 130, 240, 0.5)",background:"rgba(10, 130, 240, 0.2)",pointerEvents:"none",transition:"box-shadow 0.8s ease-in-out, background 0.8s ease-in-out"}),i.$frame_body.append(e),s=i.$frame_body.find(".sfw-element-helper")}()}))}));const a=window.jQuery,{vc:r}=window;class o{constructor(){this.panelMinWidth=440,this.navbarWidth=50,this.currentPanelWidth=this.panelMinWidth,this.pluginUrl=window.sidebar_for_wpb_js.pluginUrl,this.disableDescription=window.sidebar_for_wpb_js.disableDescription,this.compactView=window.sidebar_for_wpb_js.compactView,this.compactViewEditForm=window.sidebar_for_wpb_js.compactViewEditForm,this.responsiveView=window.sidebar_for_wpb_js.responsiveView,this.sidebarPostion=window.sidebar_for_wpb_js.sidebarPostion,this.pageStructureFind=window.sidebar_for_wpb_js.pageStructureFind,this.$window=a(window),this.$body=a("body"),this.$screenSizeControls=a("#vc_screen-size-control .vc_screen-width"),this.$addElementPanel=a("#vc_ui-panel-add-element"),this.$editElementPanel=a("#vc_ui-panel-edit-element"),this.$settingsPanel=a("#vc_ui-panel-post-settings"),this.$navbar=a("#vc_navbar"),this.$frameWrapper=a("#vc_inline-frame-wrapper"),this.$iframe=a("#vc_inline-frame"),this.$navbarItems=this.$navbar.find(".vc_navbar-nav li"),this.$panelWindow=a(".vc_ui-panel-window"),this.$navbarBtns=this.$navbar.find(".vc_icon-btn"),this.$frameSizeHelper=null,this.isPanelResizing=!1,this.panelsSettings=[{panelId:"panel-add-element",navbarBtnId:"vc_add-new-element"},{panelId:"panel-templates",navbarBtnId:"vc_templates-editor-button"},{panelId:"panel-post-seo",navbarBtnId:"vc_seo-button"},{panelId:"panel-post-settings",navbarBtnId:"vc_post-settings-button"},{panelId:"panel-page-structure",navbarBtnId:"vc_page-structure"},{panelId:"panel-custom-code",navbarBtnId:"vc_custom-code-button"}],this.init()}init(){this.$body.addClass(`sidebar-position-${this.sidebarPostion}`),a.each(this.$navbarItems,this.setNavbarItems.bind(this)),this.$body.append(`<link rel="stylesheet" href="${this.pluginUrl}/assets/dist/css/editor.min.css" type="text/css" />`);const e=new MutationObserver(this.mutationHandler.bind(this)),t={attributes:!0};this.$panelWindow.append(`<div class="vc_resizable-handle vc_resizable-handle--${this.sidebarPostion}"></div>`),this.$panelWindow.each((function(){e.observe(this,t)})),this.setActiveBtn(this.$panelWindow.filter(".vc_active")),this.handleWindowResize(),this.setSettings(),this.addLocateIconToEditForm(),this.$window.on("resize",this.handleWindowResize.bind(this)),this.$panelWindow.on("mousedown",".vc_resizable-handle",this.handlePanelResize.bind(this))}mutationHandler(e){e.forEach((e=>{window.innerWidth>960&&"attributes"===e.type&&"class"===e.attributeName&&(this.setFrameWrapperPosition(),this.setActiveBtn(a(e.target)))}))}handleWindowResize(e){!this.isPanelResizing&&e&&e.target&&e.target===window&&this.setFrameWrapperPosition()}setFrameWrapperPosition(){const e=this.getCurrentView();if(window.innerWidth>960){const t=this.$panelWindow.filter(".vc_active");t.length?(this.$frameWrapper.css(this.sidebarPostion,`${this.currentPanelWidth+this.navbarWidth}px`),this.setIframeWidth(e,`${window.innerWidth}px`,"auto"),t.attr("style",`width: ${this.currentPanelWidth}px !important;`),t.is("#vc_ui-panel-templates")&&t.hasClass("vc_media-xs")&&(t.removeClass("vc_media-xs"),t.addClass("vc_media-sm"))):(this.$frameWrapper.css(this.sidebarPostion,this.navbarWidth),this.setIframeWidth(e,"100%","none"))}else this.$frameWrapper.css(this.sidebarPostion,"0"),this.setIframeWidth(e,"100%","none"),this.$panelWindow.attr("style","")}setIframeWidth(e,t,i){"0"===this.responsiveView&&(100===e?(this.$frameWrapper.css("overflow-x",i),this.$iframe.css("width",t)):(this.$frameWrapper.css("overflow-x","auto"),this.$iframe.css("width",`${e}px`)))}getCurrentView(){return parseInt(this.$screenSizeControls.filter(".active").attr("data-size"))}setActiveBtn(e){if(this.$navbarBtns.removeClass("vc_active"),e.hasClass("vc_active")){const t=e.attr("data-vc-ui-element"),i=this.panelsSettings.find((e=>e.panelId===t));if(i){const e=i.navbarBtnId;this.$navbar.find(`.vc_navbar-nav > li > #${e}`).addClass("vc_active")}}}setSettings(){"1"===this.disableDescription&&this.$addElementPanel.find(".wpb-elements-list").addClass("vc_hide-description"),"1"===this.compactView&&this.$addElementPanel.find(".wpb-elements-list").addClass("vc_compact-view"),"1"===this.compactViewEditForm&&(this.$editElementPanel.find(".vc_ui-panel-content").addClass("vc_compact-view"),this.$settingsPanel.find(".vc_ui-panel-content-container").addClass("vc_compact-view"))}setNavbarItems(e,t){const i=a(t),s=i.children();s.hasClass("vc_back-button")?i.css("order","11"):s.hasClass("vc_dropdown-more")?i.css("order","10"):s.hasClass("vc_btn-save")?i.css("order","9"):"vc_screen-size-control"===s.attr("id")?i.css("order","8"):s.hasClass("vc_post-settings")?i.css("order","7"):"vc_custom-code-button"===s.attr("id")?i.css("order","6"):s.hasClass("vc_seo-button")&&i.css({order:"5","margin-top":"auto"})}handlePanelResize(e){const t=a(e.target).closest(".vc_ui-panel-window"),i=this.panelMinWidth;let s="";s="left"===this.sidebarPostion?t.position().left:t.position().left+t.width(),this.$iframe.css("pointer-events","none"),this.$body.css({cursor:"ew-resize","user-select":"none"}),this.$body.on("mousemove",(e=>{const n=e.pageX;this.isPanelResizing=!0;const a=this.getCurrentView();if("left"===this.sidebarPostion&&n>s+i){const e=n-s,i=n;this.setFrameSizeOnPanelResize(e,a,t,i)}else if("right"===this.sidebarPostion&&n<s-i){const e=s-n,i=e+this.navbarWidth+"px";this.setFrameSizeOnPanelResize(e,a,t,i)}})),this.$body.on("mouseup",(()=>{this.isPanelResizing=!1,this.$frameSizeHelper.hide(),this.$body.off("mousemove"),this.$body.css({cursor:"auto","user-select":"auto"}),this.$iframe.css("pointer-events","auto")}))}showFrameSizeHelper(e){let t=e.find(".vc_frame-size-helper");0===t.length?(t=a(`<div class="vc_frame-size-helper vc_frame-size-helper--${this.sidebarPostion}"></div>`),t.append('<span class="vc_frame-size-helper-text"></span>'),this.$frameSizeHelper=t,e.append(t)):t.show(),this.$frameSizeHelper=t;const i=this.$frameSizeHelper.find(".vc_frame-size-helper-text"),s=this.$iframe[0].contentWindow.innerWidth,n=this.$iframe[0].contentWindow.innerHeight;i.text(`${s}px × ${n}px`)}setFrameSizeOnPanelResize(e,t,i){this.currentPanelWidth=e,this.$panelWindow.attr("style",`width: ${e}px !important;`),this.$frameWrapper.css(this.sidebarPostion,e+this.navbarWidth+"px"),this.showFrameSizeHelper(i),"0"===this.responsiveView?this.setIframeWidth(t,`${window.innerWidth}px`,"auto"):this.$window.trigger("resize")}addLocateIconToEditForm(){if(this.$editElementPanel.length>0){const e=a(`<button class="vc_general vc_ui-control-button" title="${this.pageStructureFind} element on page"><i class="vc-composer-icon vc-c-icon-search"></i></button>`);this.$editElementPanel.find(".vc_ui-panel-header-controls").prepend(e),e.on("click",(()=>{n(r.active_panel.model.get("id"))}))}}}const{vc:c,_:d,jQuery:l}=window,h=l;class p{constructor(){this.$wpbodyContent=h("#wpbody-content"),this.$navbar=h("#vc_navbar"),this.$navbarItems=this.$navbar.find(".vc_navbar-nav li"),this.structureIconHtml='\n <svg width="27" height="27" viewBox="0 0 64 64" fill="none" xmlns="http://www.w3.org/2000/svg">\n <rect x="10" y="40" width="44" height="12" rx="2" stroke="white" stroke-width="2" fill="transparent"/>\n <rect x="10" y="26" width="44" height="12" rx="2" stroke="white" stroke-width="2" fill="transparent"/>\n <rect x="10" y="12" width="44" height="12" rx="2" stroke="white" stroke-width="2" fill="transparent"/>\n </svg>\n ',this.pageStructureHtml=window.sidebar_for_wpb_js.pageStructureHtml,this.pageStructureTitle=window.sidebar_for_wpb_js.pageStructureTitle,this.pageStructureFind=window.sidebar_for_wpb_js.pageStructureFind,this.$pageStructurePanel=null,this.pageStructurePanel=null,this.$pageStructureContainer=null,this.structuredData=[],this.expandedNodes={},this.debouncedRender=d.debounce(this.renderPageStructure.bind(this),500),this.init()}init(){this.addPageStructurePanel(),this.addNavbarIcon()}addNavbarIcon(){const e=h("<li></li>");e.html(`\n <a class="vc_icon-btn" id="vc_page-structure" title="Page Structure">\n <i class="vc-composer-icon vc-icon-structure">${this.structureIconHtml}</i>\n </a>\n `),this.$navbarItems.eq(1).after(e);const t=h("#vc_page-structure");t.length&&t.on("click",this.handlePageStructureClick.bind(this))}addPageStructurePanel(){this.$wpbodyContent.append(this.pageStructureHtml),this.$pageStructurePanel=h("#vc_ui-panel-page-structure"),this.$pageStructureContainer=this.$pageStructurePanel.find("#page-structure-container"),this.$pageStructurePanel.length&&this.$pageStructurePanel.find("h3").text(this.pageStructureTitle),this.createPanelView()}handlePageStructureClick(){this.pageStructurePanel.render()}createPanelView(){c.PageStructurePanel||(c.PageStructurePanelView=c.PanelView.extend({}),c.PageStructurePanel=c.PageStructurePanelView.vcExtendUI(c.HelperPanelViewHeaderFooter).extend({panelName:"page_structure",isRendered:!1,initialize:()=>{this.isRendered||(this.isRendered=!0,this.renderPageStructure(),c.events.on("afterLoadShortcode",this.debouncedRender),c.events.on("afterRemoveShortcode",this.debouncedRender))},render:function(){this.$el.is(":hidden")&&c.closeActivePanel(),c.active_panel=this,this.show()},show:function(){this.$el.hasClass("vc_active")||(this.$el.addClass("vc_active"),this.trigger("show"))}}),this.pageStructurePanel=new c.PageStructurePanel({el:"#vc_ui-panel-page-structure"}))}buildTree(e){const t=new Map,i=[];return e.forEach((e=>t.set(e.id,{...e,children:[]}))),e.forEach((e=>{if(e.attributes.parent_id){const i=t.get(e.attributes.parent_id);i&&i.children.push(t.get(e.id))}else i.push(t.get(e.id))})),i}renderPageStructure(){this.structuredData=this.buildTree(c.shortcodes.models),this.$pageStructureContainer.empty(),this.$pageStructureContainer.append(this.createTreeHTML(this.structuredData)),this.$pageStructureContainer.off("click mouseenter mouseleave",".page-structure-label"),this.$pageStructureContainer.off("click",".vc_control-btn"),this.$pageStructureContainer.on("click",".page-structure-label",(e=>{if(h(e.target).closest(".element-controls").length)return;const t=h(e.currentTarget),i=`node-${t.attr("id")}`;this.expandedNodes[i]=!Object.prototype.hasOwnProperty.call(this.expandedNodes,i)||!this.expandedNodes[i],t.toggleClass("expanded"),t.next().slideToggle(200)})),this.$pageStructurePanel.on("click",".vc_control-btn",(e=>{e.preventDefault(),e.stopPropagation();const t=h(e.currentTarget),i=t.closest(".page-structure-label").attr("id");switch(t.data("control")){case"inspect":n(i);break;case"edit":this.editElement(i)}}))}createTreeHTML(e){if(!e?.length)return"";const t=h('<ul class="page-structure-list"></ul>');return e.forEach((e=>{const i=e?.id||"",s=`node-${i}`,n=this.expandedNodes[s]||!1;let a=e?.settings?.name;if("Row"===a){const t=e?.attributes?.params?.row_title;a+=t?` (${t})`:""}a=a||"Unnamed Element";const r=h(`\n <li class="page-structure-item ${this.createNodeClasses(e)||""}">\n <div class="page-structure-label" title="${a}" id="${i}">\n <span>\n ${a}\n </span>\n <div class="element-controls">\n <a class="vc_control-btn vc_control-btn-inspect" data-control="inspect" href="#" title="${this.pageStructureFind} ${a}" target="_blank"><span class="vc_btn-content"><i class="vc-composer-icon vc-c-icon-search"></i></span></a>\n <a class="vc_control-btn vc_control-btn-edit" data-control="edit" href="#" title="${window.i18nLocale.edit} ${a}" target="_blank"><span class="vc_btn-content"><i class="vc-composer-icon vc-c-icon-mode_edit"></i></span></a>\n </div>\n </div>\n </li>\n `);if(e?.children?.length){const t=h('<div class="page-structure-children"></div>').append(this.createTreeHTML(e.children));n||t.hide(),r.find(".page-structure-label").addClass("page-structure-label--children"),r.append(t)}t.append(r)})),t}createNodeClasses(e){switch(e?.settings?.name){case"Section":return"page-structure-item--section";case"Row":return"page-structure-item--row";case"Column":return"page-structure-item--column";case"Inner Row":return"page-structure-item--inner-row";case"Inner Column":return"page-structure-item--inner-column";default:return}}editElement(e){if("edit_element"!==c.activePanelName()||!c.active_panel.model||c.active_panel.model.get("id")!==e){const t=c.shortcodes.get(e);c.closeActivePanel(),c.edit_element_block_view.render(t)}}}const u=jQuery,{vc:v}=window;class w{constructor(){this.$message=null,this.showNotification=this.showNotification.bind(this),this.hideNotification=this.hideNotification.bind(this),this.init()}init(){v.showMessage=this.showNotification,window.vc_user_access&&!window.vc_user_access().partAccess("unfiltered_html")&&v.showMessage(window.i18nLocale.unfiltered_html_access,"type-error",15e3)}hideNotification(){this.$message.slideUp(500,(function(){u(this).remove()})),v.message_timeout&&this.$message&&(window.clearTimeout(v.message_timeout),v.message_timeout=!1)}showNotification(e,t,i,s){v.message_timeout&&(u(".vc_message").remove(),window.clearTimeout(v.message_timeout)),t||(t="success"),i||(i=1e4);const n=window.vc_mode&&"admin_page"===window.vc_mode?".metabox-composer-content":"body",a=s||n,r=u('<span class="vc_message-close"><i class="vc-composer-icon vc-c-icon-close"></i></span>');this.$message=u('<div class="vc_message '+t+'" style="z-index: 999;">'+e+"</div>"),r.on("click",this.hideNotification),this.$message.append(r),this.$message.prependTo(u(a)),this.$message.fadeIn(500),v.message_timeout=window.setTimeout(this.hideNotification,i)}}const m=jQuery;m(document).ready((()=>{!function(){const t=window.InlineShortcodeView.prototype.removeView;window.InlineShortcodeView.prototype.removeView=function(i){t.call(this,i),e.events.trigger("afterRemoveShortcode")}}(),m(window).on("vc_build",(()=>{"1"===window.sidebar_for_wpb_js.pageStructure&&new p,new w,new o}))}))})();1 (()=>{"use strict";const{vc:e}=window;const{vc:t,jQuery:i}=window,s=i;let n=null;function a(e){const i=t.$frame_body.find(`[data-model-id="${e}"]`);i.length&&function(e,t){if(!e)return;new IntersectionObserver(((e,i)=>{e.forEach((e=>{e.isIntersecting&&(i.unobserve(e.target),t(e.target))}))}),{threshold:.1}).observe(e),e.scrollIntoView({behavior:"smooth",block:"start"})}(i[0],(()=>{!function(e){e.append(n),n.css({zIndex:9999,opacity:"1",visibility:"visible",top:0,left:0,width:"100%",height:"100%"}),setTimeout((()=>n.css({opacity:"0",visibility:"hidden",zIndex:-1})),1800)}(i)}))}s(document).ready((()=>{t.events.on("app.render",(()=>{!n&&t.$frame_body&&function(){const e=s('<div class="sfw-element-helper"><div>');e.css({position:"absolute",opacity:"0",visibility:"hidden",zIndex:-1,boxShadow:"0 0 4px 2px rgb(10, 130, 240, 0.5)",background:"rgba(10, 130, 240, 0.2)",pointerEvents:"none",transition:"box-shadow 0.8s ease-in-out, background 0.8s ease-in-out"}),t.$frame_body.append(e),n=t.$frame_body.find(".sfw-element-helper")}()}))}));const r=window.jQuery,{vc:o}=window;class c{constructor(){this.panelMinWidth=440,this.navbarWidth=50,this.currentPanelWidth=this.panelMinWidth,this.pluginUrl=window.sidebar_for_wpb_js.pluginUrl,this.disableDescription=window.sidebar_for_wpb_js.disableDescription,this.compactView=window.sidebar_for_wpb_js.compactView,this.compactViewEditForm=window.sidebar_for_wpb_js.compactViewEditForm,this.responsiveView=window.sidebar_for_wpb_js.responsiveView,this.sidebarPostion=window.sidebar_for_wpb_js.sidebarPostion,this.pageStructureFind=window.sidebar_for_wpb_js.pageStructureFind,this.$window=r(window),this.$body=r("body"),this.$screenSizeControls=r("#vc_screen-size-control .vc_screen-width"),this.$addElementPanel=r("#vc_ui-panel-add-element"),this.$editElementPanel=r("#vc_ui-panel-edit-element"),this.$settingsPanel=r("#vc_ui-panel-post-settings"),this.$navbar=r("#vc_navbar"),this.$frameWrapper=r("#vc_inline-frame-wrapper"),this.$iframe=r("#vc_inline-frame"),this.$navbarItems=this.$navbar.find(".vc_navbar-nav li"),this.$panelWindow=r(".vc_ui-panel-window"),this.$navbarBtns=this.$navbar.find(".vc_icon-btn"),this.$frameSizeHelper=null,this.isPanelResizing=!1,this.isPanelAsSidebar=!1,this.panelsSettings=[{panelId:"panel-add-element",navbarBtnId:"vc_add-new-element"},{panelId:"panel-templates",navbarBtnId:"vc_templates-editor-button"},{panelId:"panel-post-seo",navbarBtnId:"vc_seo-button"},{panelId:"panel-post-settings",navbarBtnId:"vc_post-settings-button"},{panelId:"panel-page-structure",navbarBtnId:"vc_page-structure"},{panelId:"panel-custom-code",navbarBtnId:"vc_custom-code-button"}],this.init()}init(){this.$body.addClass(`sidebar-position-${this.sidebarPostion}`),r.each(this.$navbarItems,this.setNavbarItems.bind(this)),this.$body.append(`<link rel="stylesheet" href="${this.pluginUrl}/assets/dist/css/editor.min.css" type="text/css" />`);const e=new MutationObserver(this.mutationHandler.bind(this)),t={attributes:!0};this.$panelWindow.append(`<div class="vc_resizable-handle vc_resizable-handle--${this.sidebarPostion}"></div>`),this.$panelWindow.each((function(){e.observe(this,t)})),this.setActiveBtn(this.$panelWindow.filter(".vc_active")),this.handleWindowResize(),this.setSettings(),this.addLocateIconToEditForm(),this.$window.on("resize",this.handleWindowResize.bind(this)),this.$panelWindow.on("mousedown",".vc_resizable-handle",this.handlePanelResize.bind(this))}mutationHandler(e){e.forEach((e=>{const t="attributes"===e.type&&"style"===e.attributeName&&""!==e.target.style.visibility,i="attributes"===e.type&&"class"===e.attributeName;window.innerWidth>960&&(t||i)&&(this.setFrameWrapperPosition(),this.setActiveBtn(r(e.target)))}))}handleWindowResize(e){const t=e&&e.target&&e.target===window,i=this.isActivePanelVisible()&&window.innerWidth>960;this.isPanelResizing||!t&&!i||this.setFrameWrapperPosition()}setFrameWrapperPosition(){const e=this.getCurrentView();if(window.innerWidth>960){const t=this.$panelWindow.filter(".vc_active");t.length&&this.isActivePanelVisible()?(this.$frameWrapper.css(this.sidebarPostion,`${this.currentPanelWidth+this.navbarWidth}px`),this.setIframeWidth(e,`${window.innerWidth}px`,"auto"),t.attr("style",`width: ${this.currentPanelWidth}px !important;`),t.is("#vc_ui-panel-templates")&&t.hasClass("vc_media-xs")&&(t.removeClass("vc_media-xs"),t.addClass("vc_media-sm"))):(this.$frameWrapper.css(this.sidebarPostion,this.navbarWidth),this.setIframeWidth(e,"100%","none")),this.isPanelAsSidebar=!0}else this.isPanelAsSidebar&&(this.isPanelAsSidebar=!1,this.$frameWrapper.css(this.sidebarPostion,"0"),this.setIframeWidth(e,"100%","none"),this.$panelWindow.attr("style",""))}setIframeWidth(e,t,i){"0"===this.responsiveView&&(100===e?(this.$frameWrapper.css("overflow-x",i),this.$iframe.css("width",t)):(this.$frameWrapper.css("overflow-x","auto"),this.$iframe.css("width",`${e}px`)))}getCurrentView(){return parseInt(this.$screenSizeControls.filter(".active").attr("data-size"))}setActiveBtn(e){if(this.$navbarBtns.removeClass("vc_active"),e.hasClass("vc_active")){const t=e.attr("data-vc-ui-element"),i=this.panelsSettings.find((e=>e.panelId===t));if(i){const e=i.navbarBtnId;this.$navbar.find(`.vc_navbar-nav > li > #${e}`).addClass("vc_active")}}}setSettings(){"1"===this.disableDescription&&this.$addElementPanel.find(".wpb-elements-list").addClass("vc_hide-description"),"1"===this.compactView&&this.$addElementPanel.find(".wpb-elements-list").addClass("vc_compact-view"),"1"===this.compactViewEditForm&&(this.$editElementPanel.find(".vc_ui-panel-content").addClass("vc_compact-view"),this.$settingsPanel.find(".vc_ui-panel-content-container").addClass("vc_compact-view"))}setNavbarItems(e,t){const i=r(t),s=i.children();s.hasClass("vc_back-button")?i.css("order","11"):s.hasClass("vc_dropdown-more")?i.css("order","10"):s.hasClass("vc_btn-save")?i.css("order","9"):"vc_screen-size-control"===s.attr("id")?i.css("order","8"):s.hasClass("vc_post-settings")?i.css("order","7"):"vc_custom-code-button"===s.attr("id")?i.css("order","6"):s.hasClass("vc_seo-button")&&i.css({order:"5","margin-top":"auto"})}handlePanelResize(e){const t=r(e.target).closest(".vc_ui-panel-window"),i=this.panelMinWidth;let s="";s="left"===this.sidebarPostion?t.position().left:t.position().left+t.width(),this.$iframe.css("pointer-events","none"),this.$body.css({cursor:"ew-resize","user-select":"none"}),this.$body.on("mousemove",(e=>{const n=e.pageX;this.isPanelResizing=!0;const a=this.getCurrentView();if("left"===this.sidebarPostion&&n>s+i){const e=n-s,i=n;this.setFrameSizeOnPanelResize(e,a,t,i)}else if("right"===this.sidebarPostion&&n<s-i){const e=s-n,i=e+this.navbarWidth+"px";this.setFrameSizeOnPanelResize(e,a,t,i)}})),this.$body.on("mouseup",(()=>{this.isPanelResizing=!1,this.$frameSizeHelper.hide(),this.$body.off("mousemove"),this.$body.css({cursor:"auto","user-select":"auto"}),this.$iframe.css("pointer-events","auto")}))}showFrameSizeHelper(e){let t=e.find(".vc_frame-size-helper");0===t.length?(t=r(`<div class="vc_frame-size-helper vc_frame-size-helper--${this.sidebarPostion}"></div>`),t.append('<span class="vc_frame-size-helper-text"></span>'),this.$frameSizeHelper=t,e.append(t)):t.show(),this.$frameSizeHelper=t;const i=this.$frameSizeHelper.find(".vc_frame-size-helper-text"),s=this.$iframe[0].contentWindow.innerWidth,n=this.$iframe[0].contentWindow.innerHeight;i.text(`${s}px × ${n}px`)}setFrameSizeOnPanelResize(e,t,i){this.currentPanelWidth=e,this.$panelWindow.attr("style",`width: ${e}px !important;`),this.$frameWrapper.css(this.sidebarPostion,e+this.navbarWidth+"px"),this.showFrameSizeHelper(i),"0"===this.responsiveView?this.setIframeWidth(t,`${window.innerWidth}px`,"auto"):this.$window.trigger("resize")}addLocateIconToEditForm(){if(this.$editElementPanel.length>0){const e=r(`<button class="vc_general vc_ui-control-button" title="${this.pageStructureFind} element on page"><i class="vc-composer-icon vc-c-icon-search"></i></button>`);this.$editElementPanel.find(".vc_ui-panel-header-controls").prepend(e),e.on("click",(()=>{a(o.active_panel.model.get("id"))}))}}isActivePanelVisible(){const e=this.$panelWindow.filter(".vc_active");return e.length&&"hidden"!==e.css("visibility")&&"none"!==e.css("display")}}const{vc:d,_:l,jQuery:h}=window,u=h;class p{constructor(){this.$wpbodyContent=u("#wpbody-content"),this.$navbar=u("#vc_navbar"),this.$navbarItems=this.$navbar.find(".vc_navbar-nav li"),this.structureIconHtml='\n <svg width="27" height="27" viewBox="0 0 64 64" fill="none" xmlns="http://www.w3.org/2000/svg">\n <rect x="10" y="40" width="44" height="12" rx="2" stroke="white" stroke-width="2" fill="transparent"/>\n <rect x="10" y="26" width="44" height="12" rx="2" stroke="white" stroke-width="2" fill="transparent"/>\n <rect x="10" y="12" width="44" height="12" rx="2" stroke="white" stroke-width="2" fill="transparent"/>\n </svg>\n ',this.pageStructureHtml=window.sidebar_for_wpb_js.pageStructureHtml,this.pageStructureTitle=window.sidebar_for_wpb_js.pageStructureTitle,this.pageStructureFind=window.sidebar_for_wpb_js.pageStructureFind,this.$pageStructurePanel=null,this.pageStructurePanel=null,this.$pageStructureContainer=null,this.structuredData=[],this.expandedNodes={},this.debouncedRender=l.debounce(this.renderPageStructure.bind(this),500),this.init()}init(){this.addPageStructurePanel(),this.addNavbarIcon()}addNavbarIcon(){const e=u("<li></li>");e.html(`\n <a class="vc_icon-btn" id="vc_page-structure" title="Page Structure">\n <i class="vc-composer-icon vc-icon-structure">${this.structureIconHtml}</i>\n </a>\n `),this.$navbarItems.eq(1).after(e);const t=u("#vc_page-structure");t.length&&t.on("click",this.handlePageStructureClick.bind(this))}addPageStructurePanel(){this.$wpbodyContent.append(this.pageStructureHtml),this.$pageStructurePanel=u("#vc_ui-panel-page-structure"),this.$pageStructureContainer=this.$pageStructurePanel.find("#page-structure-container"),this.$pageStructurePanel.length&&this.$pageStructurePanel.find("h3").text(this.pageStructureTitle),this.createPanelView()}handlePageStructureClick(){this.pageStructurePanel.render()}createPanelView(){d.PageStructurePanel||(d.PageStructurePanelView=d.PanelView.extend({}),d.PageStructurePanel=d.PageStructurePanelView.vcExtendUI(d.HelperPanelViewHeaderFooter).extend({panelName:"page_structure",isRendered:!1,initialize:()=>{this.isRendered||(this.isRendered=!0,this.renderPageStructure(),d.events.on("afterLoadShortcode",this.debouncedRender),d.events.on("afterRemoveShortcode",this.debouncedRender))},render:function(){this.$el.is(":hidden")&&d.closeActivePanel(),d.active_panel=this,this.show()},show:function(){this.$el.hasClass("vc_active")||(this.$el.addClass("vc_active"),this.trigger("show"))}}),this.pageStructurePanel=new d.PageStructurePanel({el:"#vc_ui-panel-page-structure"}))}buildTree(e){const t=new Map,i=[];return e.forEach((e=>t.set(e.id,{...e,children:[]}))),e.forEach((e=>{if(e.attributes.parent_id){const i=t.get(e.attributes.parent_id);i&&i.children.push(t.get(e.id))}else i.push(t.get(e.id))})),i}renderPageStructure(){this.structuredData=this.buildTree(d.shortcodes.models),this.$pageStructureContainer.empty(),this.$pageStructureContainer.append(this.createTreeHTML(this.structuredData)),this.$pageStructureContainer.off("click mouseenter mouseleave",".page-structure-label"),this.$pageStructureContainer.off("click",".vc_control-btn"),this.$pageStructureContainer.on("click",".page-structure-label",(e=>{if(u(e.target).closest(".element-controls").length)return;const t=u(e.currentTarget),i=`node-${t.attr("id")}`;this.expandedNodes[i]=!Object.prototype.hasOwnProperty.call(this.expandedNodes,i)||!this.expandedNodes[i],t.toggleClass("expanded"),t.next().slideToggle(200)})),this.$pageStructurePanel.on("click",".vc_control-btn",(e=>{e.preventDefault(),e.stopPropagation();const t=u(e.currentTarget),i=t.closest(".page-structure-label").attr("id");switch(t.data("control")){case"inspect":a(i);break;case"edit":this.editElement(i)}}))}createTreeHTML(e){if(!e?.length)return"";const t=u('<ul class="page-structure-list"></ul>');return e.forEach((e=>{const i=e?.id||"",s=`node-${i}`,n=this.expandedNodes[s]||!1;let a=e?.settings?.name;if("Row"===a){const t=e?.attributes?.params?.row_title;a+=t?` (${t})`:""}a=a||"Unnamed Element";const r=u(`\n <li class="page-structure-item ${this.createNodeClasses(e)||""}">\n <div class="page-structure-label" title="${a}" id="${i}">\n <span>\n ${a}\n </span>\n <div class="element-controls">\n <a class="vc_control-btn vc_control-btn-inspect" data-control="inspect" href="#" title="${this.pageStructureFind} ${a}" target="_blank"><span class="vc_btn-content"><i class="vc-composer-icon vc-c-icon-search"></i></span></a>\n <a class="vc_control-btn vc_control-btn-edit" data-control="edit" href="#" title="${window.i18nLocale.edit} ${a}" target="_blank"><span class="vc_btn-content"><i class="vc-composer-icon vc-c-icon-mode_edit"></i></span></a>\n </div>\n </div>\n </li>\n `);if(e?.children?.length){const t=u('<div class="page-structure-children"></div>').append(this.createTreeHTML(e.children)),i=r.find(".page-structure-label");n?i.addClass("expanded"):t.hide(),i.addClass("page-structure-label--children"),r.append(t)}t.append(r)})),t}createNodeClasses(e){switch(e?.settings?.name){case"Section":return"page-structure-item--section";case"Row":return"page-structure-item--row";case"Column":return"page-structure-item--column";case"Inner Row":return"page-structure-item--inner-row";case"Inner Column":return"page-structure-item--inner-column";case"Grid container":return"page-structure-item--grid-container";case"Grid item":return"page-structure-item--grid-item";case"Flexbox container":return"page-structure-item--flexbox-container";case"Flexbox item":return"page-structure-item--flexbox-item";default:return}}editElement(e){if("edit_element"!==d.activePanelName()||!d.active_panel.model||d.active_panel.model.get("id")!==e){const t=d.shortcodes.get(e);d.closeActivePanel(),d.edit_element_block_view.render(t)}}}const{vc:v,jQuery:w}=window,m=w;class b{constructor(){this.$message=null,this.showNotification=this.showNotification.bind(this),this.hideNotification=this.hideNotification.bind(this),this.init()}init(){v.showMessage=this.showNotification,window.vc_user_access&&!window.vc_user_access().partAccess("unfiltered_html")&&v.showMessage(window.i18nLocale.unfiltered_html_access,"type-error",15e3)}hideNotification(){this.$message.slideUp(500,(function(){m(this).remove()})),v.message_timeout&&this.$message&&(window.clearTimeout(v.message_timeout),v.message_timeout=!1)}showNotification(e,t,i,s){v.message_timeout&&(m(".vc_message").remove(),window.clearTimeout(v.message_timeout)),t||(t="success"),i||(i=1e4);const n=window.vc_mode&&"admin_page"===window.vc_mode?".metabox-composer-content":"body",a=s||n,r=m('<span class="vc_message-close"><i class="vc-composer-icon vc-c-icon-close"></i></span>');this.$message=m('<div class="vc_message '+t+'" style="z-index: 999;">'+e+"</div>"),r.on("click",this.hideNotification),this.$message.append(r),this.$message.prependTo(m(a)),this.$message.fadeIn(500),v.message_timeout=window.setTimeout(this.hideNotification,i)}}const g=window.jQuery;g(document).ready((()=>{!function(){const t=window.InlineShortcodeView.prototype.removeView;window.InlineShortcodeView.prototype.removeView=function(i){t.call(this,i),e.events.trigger("afterRemoveShortcode")}}(),g(window).on("vc_build",(()=>{"1"===window?.sidebar_for_wpb_js?.pageStructure&&new p,new b,new c}))}))})(); -
sidebar-navigation-for-wpbakery/trunk/includes/page-structure-panel.php
r3263404 r3377715 1 <?php 2 // Silence is golden. 3 ?> 1 4 <div class="vc_ui-font-open-sans vc_ui-panel-window vc_media-xs vc_ui-panel" data-vc-panel=".vc_ui-panel-header-header" data-vc-ui-element="panel-page-structure" id="vc_ui-panel-page-structure"> 2 5 <div class="vc_ui-panel-window-inner"> -
sidebar-navigation-for-wpbakery/trunk/includes/settings.php
r3263404 r3377715 62 62 function sidebar_nav_for_wpbakery_settings_init() { 63 63 // Register settings 64 register_setting( 'sidebar_nav_for_wpbakery_options_group', 'sidebar_nav_for_wpbakery_disable_description' ); 65 register_setting( 'sidebar_nav_for_wpbakery_options_group', 'sidebar_nav_for_wpbakery_compact_view' ); 66 register_setting( 'sidebar_nav_for_wpbakery_options_group', 'sidebar_nav_for_wpbakery_compact_view_edit_form' ); 67 register_setting( 'sidebar_nav_for_wpbakery_options_group', 'sidebar_nav_for_wpbakery_responsive_view', [ 64 register_setting( 'sidebar_nav_for_wpbakery_options_group', 'sidebar_nav_for_wpbakery_disable_description', [ 65 'sanitize_callback' => 'absint', 66 ] ); 67 register_setting( 'sidebar_nav_for_wpbakery_options_group', 'sidebar_nav_for_wpbakery_compact_view', [ 68 'sanitize_callback' => 'absint', 69 ] ); 70 register_setting( 'sidebar_nav_for_wpbakery_options_group', 'sidebar_nav_for_wpbakery_compact_view_edit_form', [ 71 'sanitize_callback' => 'absint', 72 ] ); 73 register_setting( 'sidebar_nav_for_wpbakery_options_group', 'sidebar_nav_for_wpbakery_responsive_view', [ 68 74 'sanitize_callback' => function( $value ) { 69 75 return $value === '1' ? '1' : '0'; // Ensures checkbox properly saves '1' or '0' 70 76 }, 71 77 ] ); 72 register_setting( 'sidebar_nav_for_wpbakery_options_group', 'sidebar_nav_for_wpbakery_page_structure' ); 73 register_setting( 'sidebar_nav_for_wpbakery_options_group', 'sidebar_nav_for_wpbakery_sidebar_position' ); 74 78 register_setting( 'sidebar_nav_for_wpbakery_options_group', 'sidebar_nav_for_wpbakery_page_structure', [ 79 'sanitize_callback' => 'absint', 80 ] ); 81 register_setting( 'sidebar_nav_for_wpbakery_options_group', 'sidebar_nav_for_wpbakery_sidebar_position', [ 82 'sanitize_callback' => function( $value ) { 83 return in_array( $value, [ 'left', 'right' ], true ) ? $value : 'left'; 84 }, 85 ] ); 75 86 // Add settings section 76 87 add_settings_section( … … 210 221 <input type="checkbox" name="sidebar_nav_for_wpbakery_responsive_view" 211 222 id="sidebar_nav_for_wpbakery_responsive_view" value="1" 212 <?php echo $checked; ?> />223 <?php echo esc_attr( $checked ); ?> /> 213 224 <?php 214 225 } -
sidebar-navigation-for-wpbakery/trunk/languages/sidebar-navigation-for-wpbakery.pot
r3315281 r3377715 3 3 msgid "" 4 4 msgstr "" 5 "Project-Id-Version: Sidebar for WPBakery Page Builder 2. 2.1\n"5 "Project-Id-Version: Sidebar for WPBakery Page Builder 2.3.1\n" 6 6 "Report-Msgid-Bugs-To: https://wordpress.org/support/plugin/sidebar-navigation-for-wpbakery\n" 7 7 "Last-Translator: FULL NAME <EMAIL@ADDRESS>\n" … … 10 10 "Content-Type: text/plain; charset=UTF-8\n" 11 11 "Content-Transfer-Encoding: 8bit\n" 12 "POT-Creation-Date: 2025-0 6-12T13:57:23+00:00\n"12 "POT-Creation-Date: 2025-09-05T19:53:00+00:00\n" 13 13 "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" 14 14 "X-Generator: WP-CLI 2.4.0\n" … … 40 40 msgstr "" 41 41 42 #: includes/settings.php: 8742 #: includes/settings.php:98 43 43 msgid "Disable elements' description" 44 44 msgstr "" 45 45 46 #: includes/settings.php: 8846 #: includes/settings.php:99 47 47 msgid "Hides the descriptions under WPBakery elements in the Add Element panel." 48 48 msgstr "" 49 49 50 #: includes/settings.php: 9950 #: includes/settings.php:110 51 51 msgid "Elements compact view" 52 52 msgstr "" 53 53 54 #: includes/settings.php:1 0054 #: includes/settings.php:111 55 55 msgid "Reduces spacing between elements in the Add Element panel for a more compact view." 56 56 msgstr "" 57 57 58 #: includes/settings.php:1 1158 #: includes/settings.php:122 59 59 msgid "Edit Form compact view" 60 60 msgstr "" 61 61 62 #: includes/settings.php:1 1262 #: includes/settings.php:123 63 63 msgid "Reduces fields size and spacing in the Edit Element panel for a more compact view." 64 64 msgstr "" 65 65 66 #: includes/settings.php:1 2366 #: includes/settings.php:134 67 67 msgid "Responsive view" 68 68 msgstr "" 69 69 70 #: includes/settings.php:1 2470 #: includes/settings.php:135 71 71 msgid "Makes the page view area shrink when the sidebar is opened." 72 72 msgstr "" 73 73 74 #: includes/settings.php:1 3574 #: includes/settings.php:146 75 75 msgid "Page Structure icon" 76 76 msgstr "" 77 77 78 #: includes/settings.php:1 3678 #: includes/settings.php:147 79 79 msgid "Adds a Page Structure icon to the navbar. Displays a Page Structure in a panel." 80 80 msgstr "" 81 81 82 #: includes/settings.php:1 4782 #: includes/settings.php:158 83 83 msgid "Sidebar Position" 84 84 msgstr "" 85 85 86 #: includes/settings.php:1 4886 #: includes/settings.php:159 87 87 msgid "Choose the position of the sidebar." 88 88 msgstr "" 89 89 90 #: includes/settings.php:2 4290 #: includes/settings.php:253 91 91 msgid "Left" 92 92 msgstr "" 93 93 94 #: includes/settings.php:2 4794 #: includes/settings.php:258 95 95 msgid "Right" 96 96 msgstr "" 97 97 98 #: sidebar-navigation-for-wpbakery.php: 3898 #: sidebar-navigation-for-wpbakery.php:44 99 99 msgid "Page Structure" 100 100 msgstr "" 101 101 102 #: sidebar-navigation-for-wpbakery.php: 39102 #: sidebar-navigation-for-wpbakery.php:45 103 103 msgid "Find" 104 104 msgstr "" 105 105 106 #: sidebar-navigation-for-wpbakery.php: 68106 #: sidebar-navigation-for-wpbakery.php:74 107 107 msgid "Settings" 108 108 msgstr "" 109 110 #: sidebar-navigation-for-wpbakery.php:90 111 msgid "Sidebar for WPBakery requires WPBakery Page Builder to be installed and active." 112 msgstr "" -
sidebar-navigation-for-wpbakery/trunk/readme.txt
r3336131 r3377715 5 5 Requires at least: 6.4 6 6 Tested up to: 6.8.1 7 Stable tag: 2.3 7 Stable tag: 2.3.1 8 8 Requires PHP: 7.0 9 9 License: GPLv3 or later 10 10 License URI: http://www.gnu.org/licenses/gpl-3.0.html 11 11 12 Customizable UI for WPBakery Page Builder with sidebar navigation and panels.12 Enhance WPBakery Page Builder experience with user-friendly sidebar for navigation, page structure and customizable settings. 13 13 14 14 == Description == 15 15 16 Enhance your WPBakery Page Builder experience with a sleek, customizable sidebar for effortless navigation and improved workflow.16 Take your WPBakery Page Builder workflow to the next level with a modern, customizable sidebar designed for faster navigation and smoother editing. 17 17 18 This lightweight and user-friendly plugin adds a persistent navigation bar and panels as a sidebar, ensuring quick access to essential WPBakery features without obstructing your content. No more dragging or resizing panels—just a seamless editing experience.18 This lightweight plugin adds a persistent sidebar with navigation and panels, giving you instant access to WPBakery elements, settings, and page structure—without blocking your content or cluttering the editor. No more dragging, resizing, or hunting for options—everything you need stays neatly organized in one place. 19 19 20 With intuitive controls, the sidebar streamlines access to elements, settings, and the page structure, making the Frontend Editor more efficient. Plus, a dedicated settings page lets you tailor the sidebar’s appearance and behavior to suit your preferences.20 With simple controls and flexible settings, you can tailor the sidebar to match your workflow. Whether you want a compact layout, resizable panels, or a cleaner editor interface, this plugin makes WPBakery easier and more efficient to use. 21 21 22 Boost your productivity and enjoy a cleaner, more efficient WPBakery Page Builder interface.22 Perfect for designers, developers, and content creators who want to boost productivity and enjoy a cleaner WPBakery editing experience. 23 23 24 24 == Features == 25 25 26 * Sidebar navigation bar for quick access to panels.27 * Panels as a sidebar for easy access to settings.28 * Resizable sidebar panels width for a personalized experience.29 * Ability to close notification messages for a cleaner interface.30 * Ability to scroll to the element in the Edit Form panel for quick navigation.31 * Settings page for customizing the sidebar's appearance and behavior.32 * Hide the description under elements in the Add Element panel.33 * Reduce spacing between elements in the Add Element panel for a more compact view.34 * Reduce fields size and spacing in the Edit Form/Settings panel for a more compact view.35 * Make the page view area shrink or stay the same width when the sidebar is opened.36 * Set sidebar position to the right.37 * Page Structure panel for a quick overview of the page's structure.26 * Persistent sidebar navigation bar for quick access to WPBakery panels 27 * Panels displayed as a sidebar for easy access to settings and tools 28 * Resizable sidebar width for a personalized layout 29 * Dismissible notifications for a distraction-free interface 30 * Scroll directly to selected elements in the Edit Form panel 31 * Customizable settings page to adjust sidebar appearance and behavior: 32 * Hide element descriptions in the Add Element panel 33 * Reduce spacing between elements for a compact view 34 * Optimize field size and spacing in the Edit Form/Settings panel 35 * Choose whether the page view area shrinks when the sidebar is open 36 * Option to position the sidebar on the right side 37 * Page Structure panel for a clear overview of your page layout 38 38 39 39 == Requirements == … … 88 88 == Changelog == 89 89 90 = 2.3.1 = 91 * Fix: Fixed issue with the sidebar opening on edit control hover. 92 * Fix: Fixed issue with the opened sidebar panel and iframe resize on page load. 93 * Fix: Fixed Grid container appearance in the Page Structure panel. 94 * Fix: Fixed Flexbox container appearance in the Page Structure panel. 95 * Fix: Fixed issue with sidebar structure item expand state. 96 * Fix: Fixed issue with panel resize on smaller screen widths. 97 90 98 = 2.3 = 91 99 * Update: Added the ability to close notification messages. -
sidebar-navigation-for-wpbakery/trunk/sidebar-navigation-for-wpbakery.php
r3336131 r3377715 3 3 * Plugin Name: Sidebar for WPBakery Page Builder 4 4 * Description: Customizable UI for WPBakery Page Builder with sidebar navigation and panels. 5 * Version: 2.3 5 * Version: 2.3.1 6 6 * Author: Nikita Hlopov 7 7 * Author URI: https://nikitahl.com … … 10 10 * License: GPLv3 11 11 * License URI: http://www.gnu.org/licenses/gpl-3.0.html 12 */12 */ 13 13 14 14 if ( ! defined( 'ABSPATH' ) ) { … … 16 16 } 17 17 18 define('SIDEBAR_NAVIGATION_FOR_WPBAKERY_VERSION', '2.2.1'); 18 define('SIDEBAR_NAVIGATION_FOR_WPBAKERY_VERSION', '2.3.1'); 19 define('SIDEBAR_NAVIGATION_FOR_WPBAKERY_TD', 'sidebar-navigation-for-wpbakery'); 19 20 20 21 require_once plugin_dir_path(__FILE__) . 'includes/settings.php'; 21 22 22 23 add_action( 'vc_frontend_editor_enqueue_js_css', 'sidebar_for_wpb_enqueue_frontend', 999 ); 23 add_action( 'plugins_loaded', 'sidebar_nav_for_wpbakery_load_textdomain' );24 24 25 25 // Add "Settings" link on the Plugins page 26 26 add_filter('plugin_action_links_sidebar-navigation-for-wpbakery/sidebar-navigation-for-wpbakery.php', 'sidebar_nav_for_wpbakery_settings_link'); 27 28 // Admin dependency notice if WPBakery is missing. 29 if ( ! function_exists( 'vc_map' ) ) { 30 add_action( 'admin_notices', 'sidebar_nav_for_wpbakery_missing_wpbakery_notice' ); 31 return; // Do not proceed without WPBakery. 32 } 27 33 28 34 /** … … 32 38 // Check if we are in inline editor mode and only then load the script 33 39 if ( vc_is_inline() ) { 34 wp_register_script( 'sidebar-for-wpb-js', plugins_url( '/assets/dist/js/editor.min.js', __FILE__ ), array(), WPB_VC_VERSION, true );40 wp_register_script( 'sidebar-for-wpb-js', plugins_url( '/assets/dist/js/editor.min.js', __FILE__ ), array(), SIDEBAR_NAVIGATION_FOR_WPBAKERY_VERSION, true ); 35 41 wp_enqueue_script( 'sidebar-for-wpb-js' ); 36 42 … … 75 81 76 82 /** 77 * Load the plugin's text domain for localization. 83 * Shows admin notice if WPBakery Page Builder is not active. 84 * 85 * @since 2.3.1 86 * @return void 78 87 */ 79 function sidebar_nav_for_wpbakery_load_textdomain() { 80 load_plugin_textdomain( 'sidebar-navigation-for-wpbakery', false, dirname( plugin_basename( __FILE__ ) ) . '/languages/' ); 88 function sidebar_nav_for_wpbakery_missing_wpbakery_notice() { 89 if ( current_user_can( 'activate_plugins' ) ) { 90 echo '<div class="notice notice-error"><p>' . esc_html__('Sidebar for WPBakery requires WPBakery Page Builder to be installed and active.', 'sidebar-navigation-for-wpbakery') . '</p></div>'; 91 } 81 92 }
Note: See TracChangeset
for help on using the changeset viewer.