@sweepypanda/wp-elementor-mcp 1.7.2 → 1.7.4
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +18 -2
- package/dist/elementor-widget-types.d.ts +8196 -0
- package/dist/elementor-widget-types.d.ts.map +1 -0
- package/dist/elementor-widget-types.js +7 -0
- package/dist/elementor-widget-types.js.map +1 -0
- package/dist/index.js +8 -0
- package/dist/index.js.map +1 -1
- package/dist/server-config.d.ts +5 -0
- package/dist/server-config.d.ts.map +1 -1
- package/dist/server-config.js +9 -0
- package/dist/server-config.js.map +1 -1
- package/dist/tool-handlers.d.ts +13 -0
- package/dist/tool-handlers.d.ts.map +1 -1
- package/dist/tool-handlers.js +568 -12
- package/dist/tool-handlers.js.map +1 -1
- package/dist/tool-schemas.d.ts +214 -0
- package/dist/tool-schemas.d.ts.map +1 -1
- package/dist/tool-schemas.js +217 -1
- package/dist/tool-schemas.js.map +1 -1
- package/dist/types/common.d.ts +59 -0
- package/dist/types/common.d.ts.map +1 -0
- package/dist/types/common.js +6 -0
- package/dist/types/common.js.map +1 -0
- package/dist/types/elements.d.ts +54 -0
- package/dist/types/elements.d.ts.map +1 -0
- package/dist/types/elements.js +6 -0
- package/dist/types/elements.js.map +1 -0
- package/dist/types/index.d.ts +124 -0
- package/dist/types/index.d.ts.map +1 -0
- package/dist/types/index.js +125 -0
- package/dist/types/index.js.map +1 -0
- package/dist/types/widget-type-map.d.ts +240 -0
- package/dist/types/widget-type-map.d.ts.map +1 -0
- package/dist/types/widget-type-map.js +6 -0
- package/dist/types/widget-type-map.js.map +1 -0
- package/dist/types/widgets/accordion.d.ts +32 -0
- package/dist/types/widgets/accordion.d.ts.map +1 -0
- package/dist/types/widgets/accordion.js +2 -0
- package/dist/types/widgets/accordion.js.map +1 -0
- package/dist/types/widgets/alert.d.ts +25 -0
- package/dist/types/widgets/alert.d.ts.map +1 -0
- package/dist/types/widgets/alert.js +2 -0
- package/dist/types/widgets/alert.js.map +1 -0
- package/dist/types/widgets/animated-headline.d.ts +39 -0
- package/dist/types/widgets/animated-headline.d.ts.map +1 -0
- package/dist/types/widgets/animated-headline.js +2 -0
- package/dist/types/widgets/animated-headline.js.map +1 -0
- package/dist/types/widgets/archive-posts.d.ts +8 -0
- package/dist/types/widgets/archive-posts.d.ts.map +1 -0
- package/dist/types/widgets/archive-posts.js +2 -0
- package/dist/types/widgets/archive-posts.js.map +1 -0
- package/dist/types/widgets/audio.d.ts +26 -0
- package/dist/types/widgets/audio.d.ts.map +1 -0
- package/dist/types/widgets/audio.js +2 -0
- package/dist/types/widgets/audio.js.map +1 -0
- package/dist/types/widgets/author-box.d.ts +55 -0
- package/dist/types/widgets/author-box.d.ts.map +1 -0
- package/dist/types/widgets/author-box.js +2 -0
- package/dist/types/widgets/author-box.js.map +1 -0
- package/dist/types/widgets/blockquote.d.ts +71 -0
- package/dist/types/widgets/blockquote.d.ts.map +1 -0
- package/dist/types/widgets/blockquote.js +2 -0
- package/dist/types/widgets/blockquote.js.map +1 -0
- package/dist/types/widgets/breadcrumbs.d.ts +10 -0
- package/dist/types/widgets/breadcrumbs.d.ts.map +1 -0
- package/dist/types/widgets/breadcrumbs.js +2 -0
- package/dist/types/widgets/breadcrumbs.js.map +1 -0
- package/dist/types/widgets/button.d.ts +26 -0
- package/dist/types/widgets/button.d.ts.map +1 -0
- package/dist/types/widgets/button.js +2 -0
- package/dist/types/widgets/button.js.map +1 -0
- package/dist/types/widgets/call-to-action.d.ts +105 -0
- package/dist/types/widgets/call-to-action.d.ts.map +1 -0
- package/dist/types/widgets/call-to-action.js +2 -0
- package/dist/types/widgets/call-to-action.js.map +1 -0
- package/dist/types/widgets/code-highlight.d.ts +19 -0
- package/dist/types/widgets/code-highlight.d.ts.map +1 -0
- package/dist/types/widgets/code-highlight.js +2 -0
- package/dist/types/widgets/code-highlight.js.map +1 -0
- package/dist/types/widgets/countdown.d.ts +63 -0
- package/dist/types/widgets/countdown.d.ts.map +1 -0
- package/dist/types/widgets/countdown.js +2 -0
- package/dist/types/widgets/countdown.js.map +1 -0
- package/dist/types/widgets/counter.d.ts +32 -0
- package/dist/types/widgets/counter.d.ts.map +1 -0
- package/dist/types/widgets/counter.js +2 -0
- package/dist/types/widgets/counter.js.map +1 -0
- package/dist/types/widgets/divider.d.ts +41 -0
- package/dist/types/widgets/divider.d.ts.map +1 -0
- package/dist/types/widgets/divider.js +2 -0
- package/dist/types/widgets/divider.js.map +1 -0
- package/dist/types/widgets/facebook-button.d.ts +17 -0
- package/dist/types/widgets/facebook-button.d.ts.map +1 -0
- package/dist/types/widgets/facebook-button.js +2 -0
- package/dist/types/widgets/facebook-button.js.map +1 -0
- package/dist/types/widgets/facebook-comments.d.ts +11 -0
- package/dist/types/widgets/facebook-comments.d.ts.map +1 -0
- package/dist/types/widgets/facebook-comments.js +2 -0
- package/dist/types/widgets/facebook-comments.js.map +1 -0
- package/dist/types/widgets/facebook-embed.d.ts +18 -0
- package/dist/types/widgets/facebook-embed.d.ts.map +1 -0
- package/dist/types/widgets/facebook-embed.js +2 -0
- package/dist/types/widgets/facebook-embed.js.map +1 -0
- package/dist/types/widgets/facebook-page.d.ts +17 -0
- package/dist/types/widgets/facebook-page.d.ts.map +1 -0
- package/dist/types/widgets/facebook-page.js +2 -0
- package/dist/types/widgets/facebook-page.js.map +1 -0
- package/dist/types/widgets/flip-box.d.ts +127 -0
- package/dist/types/widgets/flip-box.d.ts.map +1 -0
- package/dist/types/widgets/flip-box.js +2 -0
- package/dist/types/widgets/flip-box.js.map +1 -0
- package/dist/types/widgets/form.d.ts +132 -0
- package/dist/types/widgets/form.d.ts.map +1 -0
- package/dist/types/widgets/form.js +2 -0
- package/dist/types/widgets/form.js.map +1 -0
- package/dist/types/widgets/gallery.d.ts +100 -0
- package/dist/types/widgets/gallery.d.ts.map +1 -0
- package/dist/types/widgets/gallery.js +2 -0
- package/dist/types/widgets/gallery.js.map +1 -0
- package/dist/types/widgets/global.d.ts +5 -0
- package/dist/types/widgets/global.d.ts.map +1 -0
- package/dist/types/widgets/global.js +2 -0
- package/dist/types/widgets/global.js.map +1 -0
- package/dist/types/widgets/google-maps.d.ts +24 -0
- package/dist/types/widgets/google-maps.d.ts.map +1 -0
- package/dist/types/widgets/google-maps.js +2 -0
- package/dist/types/widgets/google-maps.js.map +1 -0
- package/dist/types/widgets/heading.d.ts +18 -0
- package/dist/types/widgets/heading.d.ts.map +1 -0
- package/dist/types/widgets/heading.js +2 -0
- package/dist/types/widgets/heading.js.map +1 -0
- package/dist/types/widgets/hotspot.d.ts +53 -0
- package/dist/types/widgets/hotspot.d.ts.map +1 -0
- package/dist/types/widgets/hotspot.js +2 -0
- package/dist/types/widgets/hotspot.js.map +1 -0
- package/dist/types/widgets/html.d.ts +5 -0
- package/dist/types/widgets/html.d.ts.map +1 -0
- package/dist/types/widgets/html.js +2 -0
- package/dist/types/widgets/html.js.map +1 -0
- package/dist/types/widgets/icon-box.d.ts +39 -0
- package/dist/types/widgets/icon-box.d.ts.map +1 -0
- package/dist/types/widgets/icon-box.js +2 -0
- package/dist/types/widgets/icon-box.js.map +1 -0
- package/dist/types/widgets/icon-list.d.ts +35 -0
- package/dist/types/widgets/icon-list.d.ts.map +1 -0
- package/dist/types/widgets/icon-list.js +2 -0
- package/dist/types/widgets/icon-list.js.map +1 -0
- package/dist/types/widgets/icon.d.ts +22 -0
- package/dist/types/widgets/icon.d.ts.map +1 -0
- package/dist/types/widgets/icon.js +2 -0
- package/dist/types/widgets/icon.js.map +1 -0
- package/dist/types/widgets/image-box.d.ts +60 -0
- package/dist/types/widgets/image-box.d.ts.map +1 -0
- package/dist/types/widgets/image-box.js +2 -0
- package/dist/types/widgets/image-box.js.map +1 -0
- package/dist/types/widgets/image-carousel.d.ts +72 -0
- package/dist/types/widgets/image-carousel.d.ts.map +1 -0
- package/dist/types/widgets/image-carousel.js +2 -0
- package/dist/types/widgets/image-carousel.js.map +1 -0
- package/dist/types/widgets/image-gallery.d.ts +36 -0
- package/dist/types/widgets/image-gallery.d.ts.map +1 -0
- package/dist/types/widgets/image-gallery.js +2 -0
- package/dist/types/widgets/image-gallery.js.map +1 -0
- package/dist/types/widgets/image.d.ts +55 -0
- package/dist/types/widgets/image.d.ts.map +1 -0
- package/dist/types/widgets/image.js +2 -0
- package/dist/types/widgets/image.js.map +1 -0
- package/dist/types/widgets/login.d.ts +65 -0
- package/dist/types/widgets/login.d.ts.map +1 -0
- package/dist/types/widgets/login.js +2 -0
- package/dist/types/widgets/login.js.map +1 -0
- package/dist/types/widgets/loop-carousel.d.ts +10 -0
- package/dist/types/widgets/loop-carousel.d.ts.map +1 -0
- package/dist/types/widgets/loop-carousel.js +2 -0
- package/dist/types/widgets/loop-carousel.js.map +1 -0
- package/dist/types/widgets/loop-grid.d.ts +34 -0
- package/dist/types/widgets/loop-grid.d.ts.map +1 -0
- package/dist/types/widgets/loop-grid.js +2 -0
- package/dist/types/widgets/loop-grid.js.map +1 -0
- package/dist/types/widgets/lottie.d.ts +55 -0
- package/dist/types/widgets/lottie.d.ts.map +1 -0
- package/dist/types/widgets/lottie.js +2 -0
- package/dist/types/widgets/lottie.js.map +1 -0
- package/dist/types/widgets/media-carousel.d.ts +36 -0
- package/dist/types/widgets/media-carousel.d.ts.map +1 -0
- package/dist/types/widgets/media-carousel.js +2 -0
- package/dist/types/widgets/media-carousel.js.map +1 -0
- package/dist/types/widgets/mega-menu.d.ts +177 -0
- package/dist/types/widgets/mega-menu.d.ts.map +1 -0
- package/dist/types/widgets/mega-menu.js +2 -0
- package/dist/types/widgets/mega-menu.js.map +1 -0
- package/dist/types/widgets/menu-anchor.d.ts +6 -0
- package/dist/types/widgets/menu-anchor.d.ts.map +1 -0
- package/dist/types/widgets/menu-anchor.js +2 -0
- package/dist/types/widgets/menu-anchor.js.map +1 -0
- package/dist/types/widgets/nav-menu.d.ts +92 -0
- package/dist/types/widgets/nav-menu.d.ts.map +1 -0
- package/dist/types/widgets/nav-menu.js +2 -0
- package/dist/types/widgets/nav-menu.js.map +1 -0
- package/dist/types/widgets/nested-carousel.d.ts +24 -0
- package/dist/types/widgets/nested-carousel.d.ts.map +1 -0
- package/dist/types/widgets/nested-carousel.js +2 -0
- package/dist/types/widgets/nested-carousel.js.map +1 -0
- package/dist/types/widgets/off-canvas.d.ts +39 -0
- package/dist/types/widgets/off-canvas.d.ts.map +1 -0
- package/dist/types/widgets/off-canvas.js +2 -0
- package/dist/types/widgets/off-canvas.js.map +1 -0
- package/dist/types/widgets/paypal-button.d.ts +8 -0
- package/dist/types/widgets/paypal-button.d.ts.map +1 -0
- package/dist/types/widgets/paypal-button.js +2 -0
- package/dist/types/widgets/paypal-button.js.map +1 -0
- package/dist/types/widgets/portfolio.d.ts +30 -0
- package/dist/types/widgets/portfolio.d.ts.map +1 -0
- package/dist/types/widgets/portfolio.js +2 -0
- package/dist/types/widgets/portfolio.js.map +1 -0
- package/dist/types/widgets/post-comments.d.ts +8 -0
- package/dist/types/widgets/post-comments.d.ts.map +1 -0
- package/dist/types/widgets/post-comments.js +2 -0
- package/dist/types/widgets/post-comments.js.map +1 -0
- package/dist/types/widgets/post-info.d.ts +47 -0
- package/dist/types/widgets/post-info.d.ts.map +1 -0
- package/dist/types/widgets/post-info.js +2 -0
- package/dist/types/widgets/post-info.js.map +1 -0
- package/dist/types/widgets/post-navigation.d.ts +36 -0
- package/dist/types/widgets/post-navigation.d.ts.map +1 -0
- package/dist/types/widgets/post-navigation.js +2 -0
- package/dist/types/widgets/post-navigation.js.map +1 -0
- package/dist/types/widgets/posts.d.ts +5 -0
- package/dist/types/widgets/posts.d.ts.map +1 -0
- package/dist/types/widgets/posts.js +2 -0
- package/dist/types/widgets/posts.js.map +1 -0
- package/dist/types/widgets/price-list.d.ts +30 -0
- package/dist/types/widgets/price-list.d.ts.map +1 -0
- package/dist/types/widgets/price-list.js +2 -0
- package/dist/types/widgets/price-list.js.map +1 -0
- package/dist/types/widgets/price-table.d.ts +101 -0
- package/dist/types/widgets/price-table.d.ts.map +1 -0
- package/dist/types/widgets/price-table.js +2 -0
- package/dist/types/widgets/price-table.js.map +1 -0
- package/dist/types/widgets/progress-tracker.d.ts +36 -0
- package/dist/types/widgets/progress-tracker.d.ts.map +1 -0
- package/dist/types/widgets/progress-tracker.js +2 -0
- package/dist/types/widgets/progress-tracker.js.map +1 -0
- package/dist/types/widgets/progress.d.ts +24 -0
- package/dist/types/widgets/progress.d.ts.map +1 -0
- package/dist/types/widgets/progress.js +2 -0
- package/dist/types/widgets/progress.js.map +1 -0
- package/dist/types/widgets/rating.d.ts +13 -0
- package/dist/types/widgets/rating.d.ts.map +1 -0
- package/dist/types/widgets/rating.js +2 -0
- package/dist/types/widgets/rating.js.map +1 -0
- package/dist/types/widgets/read-more.d.ts +6 -0
- package/dist/types/widgets/read-more.d.ts.map +1 -0
- package/dist/types/widgets/read-more.js +2 -0
- package/dist/types/widgets/read-more.js.map +1 -0
- package/dist/types/widgets/reviews.d.ts +40 -0
- package/dist/types/widgets/reviews.d.ts.map +1 -0
- package/dist/types/widgets/reviews.js +2 -0
- package/dist/types/widgets/reviews.js.map +1 -0
- package/dist/types/widgets/search-form.d.ts +46 -0
- package/dist/types/widgets/search-form.d.ts.map +1 -0
- package/dist/types/widgets/search-form.js +2 -0
- package/dist/types/widgets/search-form.js.map +1 -0
- package/dist/types/widgets/search.d.ts +96 -0
- package/dist/types/widgets/search.d.ts.map +1 -0
- package/dist/types/widgets/search.js +2 -0
- package/dist/types/widgets/search.js.map +1 -0
- package/dist/types/widgets/share-buttons.d.ts +30 -0
- package/dist/types/widgets/share-buttons.d.ts.map +1 -0
- package/dist/types/widgets/share-buttons.js +2 -0
- package/dist/types/widgets/share-buttons.js.map +1 -0
- package/dist/types/widgets/shortcode.d.ts +5 -0
- package/dist/types/widgets/shortcode.d.ts.map +1 -0
- package/dist/types/widgets/shortcode.js +2 -0
- package/dist/types/widgets/shortcode.js.map +1 -0
- package/dist/types/widgets/sidebar.d.ts +5 -0
- package/dist/types/widgets/sidebar.d.ts.map +1 -0
- package/dist/types/widgets/sidebar.js +2 -0
- package/dist/types/widgets/sidebar.js.map +1 -0
- package/dist/types/widgets/sitemap.d.ts +40 -0
- package/dist/types/widgets/sitemap.d.ts.map +1 -0
- package/dist/types/widgets/sitemap.js +2 -0
- package/dist/types/widgets/sitemap.js.map +1 -0
- package/dist/types/widgets/slides.d.ts +91 -0
- package/dist/types/widgets/slides.d.ts.map +1 -0
- package/dist/types/widgets/slides.js +2 -0
- package/dist/types/widgets/slides.js.map +1 -0
- package/dist/types/widgets/social-icons.d.ts +39 -0
- package/dist/types/widgets/social-icons.d.ts.map +1 -0
- package/dist/types/widgets/social-icons.js +2 -0
- package/dist/types/widgets/social-icons.js.map +1 -0
- package/dist/types/widgets/spacer.d.ts +6 -0
- package/dist/types/widgets/spacer.d.ts.map +1 -0
- package/dist/types/widgets/spacer.js +2 -0
- package/dist/types/widgets/spacer.js.map +1 -0
- package/dist/types/widgets/star-rating.d.ts +20 -0
- package/dist/types/widgets/star-rating.d.ts.map +1 -0
- package/dist/types/widgets/star-rating.js +2 -0
- package/dist/types/widgets/star-rating.js.map +1 -0
- package/dist/types/widgets/stripe-button.d.ts +14 -0
- package/dist/types/widgets/stripe-button.d.ts.map +1 -0
- package/dist/types/widgets/stripe-button.js +2 -0
- package/dist/types/widgets/stripe-button.js.map +1 -0
- package/dist/types/widgets/table-of-contents.d.ts +54 -0
- package/dist/types/widgets/table-of-contents.d.ts.map +1 -0
- package/dist/types/widgets/table-of-contents.js +2 -0
- package/dist/types/widgets/table-of-contents.js.map +1 -0
- package/dist/types/widgets/tabs.d.ts +27 -0
- package/dist/types/widgets/tabs.d.ts.map +1 -0
- package/dist/types/widgets/tabs.js +2 -0
- package/dist/types/widgets/tabs.js.map +1 -0
- package/dist/types/widgets/taxonomy-filter.d.ts +74 -0
- package/dist/types/widgets/taxonomy-filter.d.ts.map +1 -0
- package/dist/types/widgets/taxonomy-filter.js +2 -0
- package/dist/types/widgets/taxonomy-filter.js.map +1 -0
- package/dist/types/widgets/template.d.ts +5 -0
- package/dist/types/widgets/template.d.ts.map +1 -0
- package/dist/types/widgets/template.js +2 -0
- package/dist/types/widgets/template.js.map +1 -0
- package/dist/types/widgets/testimonial-carousel.d.ts +40 -0
- package/dist/types/widgets/testimonial-carousel.d.ts.map +1 -0
- package/dist/types/widgets/testimonial-carousel.js +2 -0
- package/dist/types/widgets/testimonial-carousel.js.map +1 -0
- package/dist/types/widgets/testimonial.d.ts +35 -0
- package/dist/types/widgets/testimonial.d.ts.map +1 -0
- package/dist/types/widgets/testimonial.js +2 -0
- package/dist/types/widgets/testimonial.js.map +1 -0
- package/dist/types/widgets/text-editor.d.ts +28 -0
- package/dist/types/widgets/text-editor.d.ts.map +1 -0
- package/dist/types/widgets/text-editor.js +2 -0
- package/dist/types/widgets/text-editor.js.map +1 -0
- package/dist/types/widgets/theme-archive-title.d.ts +5 -0
- package/dist/types/widgets/theme-archive-title.d.ts.map +1 -0
- package/dist/types/widgets/theme-archive-title.js +2 -0
- package/dist/types/widgets/theme-archive-title.js.map +1 -0
- package/dist/types/widgets/theme-page-title.d.ts +5 -0
- package/dist/types/widgets/theme-page-title.d.ts.map +1 -0
- package/dist/types/widgets/theme-page-title.js +2 -0
- package/dist/types/widgets/theme-page-title.js.map +1 -0
- package/dist/types/widgets/theme-post-content.d.ts +7 -0
- package/dist/types/widgets/theme-post-content.d.ts.map +1 -0
- package/dist/types/widgets/theme-post-content.js +2 -0
- package/dist/types/widgets/theme-post-content.js.map +1 -0
- package/dist/types/widgets/theme-post-excerpt.d.ts +14 -0
- package/dist/types/widgets/theme-post-excerpt.d.ts.map +1 -0
- package/dist/types/widgets/theme-post-excerpt.js +2 -0
- package/dist/types/widgets/theme-post-excerpt.js.map +1 -0
- package/dist/types/widgets/theme-post-featured-image.d.ts +5 -0
- package/dist/types/widgets/theme-post-featured-image.d.ts.map +1 -0
- package/dist/types/widgets/theme-post-featured-image.js +2 -0
- package/dist/types/widgets/theme-post-featured-image.js.map +1 -0
- package/dist/types/widgets/theme-post-title.d.ts +5 -0
- package/dist/types/widgets/theme-post-title.d.ts.map +1 -0
- package/dist/types/widgets/theme-post-title.js +2 -0
- package/dist/types/widgets/theme-post-title.js.map +1 -0
- package/dist/types/widgets/theme-site-logo.d.ts +4 -0
- package/dist/types/widgets/theme-site-logo.d.ts.map +1 -0
- package/dist/types/widgets/theme-site-logo.js +2 -0
- package/dist/types/widgets/theme-site-logo.js.map +1 -0
- package/dist/types/widgets/theme-site-title.d.ts +5 -0
- package/dist/types/widgets/theme-site-title.d.ts.map +1 -0
- package/dist/types/widgets/theme-site-title.js +2 -0
- package/dist/types/widgets/theme-site-title.js.map +1 -0
- package/dist/types/widgets/toggle.d.ts +33 -0
- package/dist/types/widgets/toggle.d.ts.map +1 -0
- package/dist/types/widgets/toggle.js +2 -0
- package/dist/types/widgets/toggle.js.map +1 -0
- package/dist/types/widgets/video-playlist.d.ts +101 -0
- package/dist/types/widgets/video-playlist.d.ts.map +1 -0
- package/dist/types/widgets/video-playlist.js +2 -0
- package/dist/types/widgets/video-playlist.js.map +1 -0
- package/dist/types/widgets/video.d.ts +65 -0
- package/dist/types/widgets/video.d.ts.map +1 -0
- package/dist/types/widgets/video.js +2 -0
- package/dist/types/widgets/video.js.map +1 -0
- package/dist/types/widgets/wc-add-to-cart.d.ts +9 -0
- package/dist/types/widgets/wc-add-to-cart.d.ts.map +1 -0
- package/dist/types/widgets/wc-add-to-cart.js +2 -0
- package/dist/types/widgets/wc-add-to-cart.js.map +1 -0
- package/dist/types/widgets/wc-archive-products.d.ts +11 -0
- package/dist/types/widgets/wc-archive-products.d.ts.map +1 -0
- package/dist/types/widgets/wc-archive-products.js +2 -0
- package/dist/types/widgets/wc-archive-products.js.map +1 -0
- package/dist/types/widgets/wc-categories.d.ts +37 -0
- package/dist/types/widgets/wc-categories.d.ts.map +1 -0
- package/dist/types/widgets/wc-categories.js +2 -0
- package/dist/types/widgets/wc-categories.js.map +1 -0
- package/dist/types/widgets/wc-elements.d.ts +6 -0
- package/dist/types/widgets/wc-elements.d.ts.map +1 -0
- package/dist/types/widgets/wc-elements.js +2 -0
- package/dist/types/widgets/wc-elements.js.map +1 -0
- package/dist/types/widgets/wc-single-elements.d.ts +5 -0
- package/dist/types/widgets/wc-single-elements.d.ts.map +1 -0
- package/dist/types/widgets/wc-single-elements.js +2 -0
- package/dist/types/widgets/wc-single-elements.js.map +1 -0
- package/dist/types/widgets/woocommerce-archive-description.d.ts +8 -0
- package/dist/types/widgets/woocommerce-archive-description.d.ts.map +1 -0
- package/dist/types/widgets/woocommerce-archive-description.js +2 -0
- package/dist/types/widgets/woocommerce-archive-description.js.map +1 -0
- package/dist/types/widgets/woocommerce-breadcrumb.d.ts +9 -0
- package/dist/types/widgets/woocommerce-breadcrumb.d.ts.map +1 -0
- package/dist/types/widgets/woocommerce-breadcrumb.js +2 -0
- package/dist/types/widgets/woocommerce-breadcrumb.js.map +1 -0
- package/dist/types/widgets/woocommerce-cart.d.ts +157 -0
- package/dist/types/widgets/woocommerce-cart.d.ts.map +1 -0
- package/dist/types/widgets/woocommerce-cart.js +2 -0
- package/dist/types/widgets/woocommerce-cart.js.map +1 -0
- package/dist/types/widgets/woocommerce-category-image.d.ts +5 -0
- package/dist/types/widgets/woocommerce-category-image.d.ts.map +1 -0
- package/dist/types/widgets/woocommerce-category-image.js +2 -0
- package/dist/types/widgets/woocommerce-category-image.js.map +1 -0
- package/dist/types/widgets/woocommerce-checkout-page.d.ts +247 -0
- package/dist/types/widgets/woocommerce-checkout-page.d.ts.map +1 -0
- package/dist/types/widgets/woocommerce-checkout-page.js +2 -0
- package/dist/types/widgets/woocommerce-checkout-page.js.map +1 -0
- package/dist/types/widgets/woocommerce-menu-cart.d.ts +136 -0
- package/dist/types/widgets/woocommerce-menu-cart.d.ts.map +1 -0
- package/dist/types/widgets/woocommerce-menu-cart.js +2 -0
- package/dist/types/widgets/woocommerce-menu-cart.js.map +1 -0
- package/dist/types/widgets/woocommerce-my-account.d.ts +132 -0
- package/dist/types/widgets/woocommerce-my-account.d.ts.map +1 -0
- package/dist/types/widgets/woocommerce-my-account.js +2 -0
- package/dist/types/widgets/woocommerce-my-account.js.map +1 -0
- package/dist/types/widgets/woocommerce-notices.d.ts +5 -0
- package/dist/types/widgets/woocommerce-notices.d.ts.map +1 -0
- package/dist/types/widgets/woocommerce-notices.js +2 -0
- package/dist/types/widgets/woocommerce-notices.js.map +1 -0
- package/dist/types/widgets/woocommerce-product-add-to-cart.d.ts +64 -0
- package/dist/types/widgets/woocommerce-product-add-to-cart.d.ts.map +1 -0
- package/dist/types/widgets/woocommerce-product-add-to-cart.js +2 -0
- package/dist/types/widgets/woocommerce-product-add-to-cart.js.map +1 -0
- package/dist/types/widgets/woocommerce-product-additional-information.d.ts +10 -0
- package/dist/types/widgets/woocommerce-product-additional-information.d.ts.map +1 -0
- package/dist/types/widgets/woocommerce-product-additional-information.js +2 -0
- package/dist/types/widgets/woocommerce-product-additional-information.js.map +1 -0
- package/dist/types/widgets/woocommerce-product-content.d.ts +5 -0
- package/dist/types/widgets/woocommerce-product-content.d.ts.map +1 -0
- package/dist/types/widgets/woocommerce-product-content.js +2 -0
- package/dist/types/widgets/woocommerce-product-content.js.map +1 -0
- package/dist/types/widgets/woocommerce-product-data-tabs.d.ts +21 -0
- package/dist/types/widgets/woocommerce-product-data-tabs.d.ts.map +1 -0
- package/dist/types/widgets/woocommerce-product-data-tabs.js +2 -0
- package/dist/types/widgets/woocommerce-product-data-tabs.js.map +1 -0
- package/dist/types/widgets/woocommerce-product-images.d.ts +32 -0
- package/dist/types/widgets/woocommerce-product-images.d.ts.map +1 -0
- package/dist/types/widgets/woocommerce-product-images.js +2 -0
- package/dist/types/widgets/woocommerce-product-images.js.map +1 -0
- package/dist/types/widgets/woocommerce-product-meta.d.ts +26 -0
- package/dist/types/widgets/woocommerce-product-meta.d.ts.map +1 -0
- package/dist/types/widgets/woocommerce-product-meta.js +2 -0
- package/dist/types/widgets/woocommerce-product-meta.js.map +1 -0
- package/dist/types/widgets/woocommerce-product-price.d.ts +13 -0
- package/dist/types/widgets/woocommerce-product-price.d.ts.map +1 -0
- package/dist/types/widgets/woocommerce-product-price.js +2 -0
- package/dist/types/widgets/woocommerce-product-price.js.map +1 -0
- package/dist/types/widgets/woocommerce-product-rating.d.ts +13 -0
- package/dist/types/widgets/woocommerce-product-rating.d.ts.map +1 -0
- package/dist/types/widgets/woocommerce-product-rating.js +2 -0
- package/dist/types/widgets/woocommerce-product-rating.js.map +1 -0
- package/dist/types/widgets/woocommerce-product-related.d.ts +17 -0
- package/dist/types/widgets/woocommerce-product-related.d.ts.map +1 -0
- package/dist/types/widgets/woocommerce-product-related.js +2 -0
- package/dist/types/widgets/woocommerce-product-related.js.map +1 -0
- package/dist/types/widgets/woocommerce-product-short-description.d.ts +8 -0
- package/dist/types/widgets/woocommerce-product-short-description.d.ts.map +1 -0
- package/dist/types/widgets/woocommerce-product-short-description.js +2 -0
- package/dist/types/widgets/woocommerce-product-short-description.js.map +1 -0
- package/dist/types/widgets/woocommerce-product-stock.d.ts +7 -0
- package/dist/types/widgets/woocommerce-product-stock.d.ts.map +1 -0
- package/dist/types/widgets/woocommerce-product-stock.js +2 -0
- package/dist/types/widgets/woocommerce-product-stock.js.map +1 -0
- package/dist/types/widgets/woocommerce-product-title.d.ts +5 -0
- package/dist/types/widgets/woocommerce-product-title.d.ts.map +1 -0
- package/dist/types/widgets/woocommerce-product-title.js +2 -0
- package/dist/types/widgets/woocommerce-product-title.js.map +1 -0
- package/dist/types/widgets/woocommerce-product-upsell.d.ts +15 -0
- package/dist/types/widgets/woocommerce-product-upsell.d.ts.map +1 -0
- package/dist/types/widgets/woocommerce-product-upsell.js +2 -0
- package/dist/types/widgets/woocommerce-product-upsell.js.map +1 -0
- package/dist/types/widgets/woocommerce-products.d.ts +15 -0
- package/dist/types/widgets/woocommerce-products.d.ts.map +1 -0
- package/dist/types/widgets/woocommerce-products.js +2 -0
- package/dist/types/widgets/woocommerce-products.js.map +1 -0
- package/dist/types/widgets/woocommerce-purchase-summary.d.ts +96 -0
- package/dist/types/widgets/woocommerce-purchase-summary.d.ts.map +1 -0
- package/dist/types/widgets/woocommerce-purchase-summary.js +2 -0
- package/dist/types/widgets/woocommerce-purchase-summary.js.map +1 -0
- package/package.json +3 -3
package/dist/tool-handlers.js
CHANGED
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
import { ElementorDataHandler } from './elementor-handler.js';
|
|
2
2
|
import { getServerConfig } from './server-config.js';
|
|
3
3
|
import { ResponseHelpers, ElementorHelpers } from './helpers.js';
|
|
4
|
+
import { TempFileManager } from './utils.js';
|
|
4
5
|
import FormData from 'form-data';
|
|
5
6
|
export class ToolHandlers {
|
|
6
7
|
wordPressClient;
|
|
@@ -98,6 +99,30 @@ export class ToolHandlers {
|
|
|
98
99
|
return await this.rebuildPageStructure(args);
|
|
99
100
|
case 'validate_elementor_data':
|
|
100
101
|
return await this.validateElementorData(args);
|
|
102
|
+
// Elementor Kit Management
|
|
103
|
+
case 'get_elementor_kit':
|
|
104
|
+
return await this.getElementorKit(args);
|
|
105
|
+
case 'update_elementor_kit':
|
|
106
|
+
return await this.updateElementorKit(args);
|
|
107
|
+
case 'export_elementor_kit_to_file':
|
|
108
|
+
return await this.exportElementorKitToFile(args);
|
|
109
|
+
case 'import_elementor_kit_data':
|
|
110
|
+
return await this.importElementorKitData(args);
|
|
111
|
+
case 'get_elementor_global_colors':
|
|
112
|
+
return await this.getElementorGlobalColors(args);
|
|
113
|
+
case 'get_elementor_global_fonts':
|
|
114
|
+
return await this.getElementorGlobalFonts(args);
|
|
115
|
+
// Elementor Template Management
|
|
116
|
+
case 'list_elementor_templates':
|
|
117
|
+
return await this.listElementorTemplates(args);
|
|
118
|
+
case 'create_elementor_template':
|
|
119
|
+
return await this.createElementorTemplate(args);
|
|
120
|
+
case 'update_elementor_template':
|
|
121
|
+
return await this.updateElementorTemplate(args);
|
|
122
|
+
case 'get_elementor_template':
|
|
123
|
+
return await this.getElementorTemplate(args);
|
|
124
|
+
case 'delete_elementor_template':
|
|
125
|
+
return await this.deleteElementorTemplate(args);
|
|
101
126
|
default:
|
|
102
127
|
throw new Error(`Unknown tool: ${name}`);
|
|
103
128
|
}
|
|
@@ -1256,18 +1281,39 @@ export class ToolHandlers {
|
|
|
1256
1281
|
return ResponseHelpers.createErrorResponse(`Failed to get Elementor data for post/page ID ${args.post_id}: ${parsedResult.error || 'Unknown error'}`, 'ELEMENTOR_DATA_ERROR', 'DATA_ERROR', 'Could not retrieve or parse Elementor data for adding widget');
|
|
1257
1282
|
}
|
|
1258
1283
|
const elementorData = parsedResult.data;
|
|
1259
|
-
let
|
|
1284
|
+
let targetContainer = null;
|
|
1260
1285
|
if (args.column_id) {
|
|
1261
|
-
|
|
1286
|
+
targetContainer = ElementorHelpers.findElementRecursive(elementorData, args.column_id);
|
|
1262
1287
|
}
|
|
1263
1288
|
else if (args.section_id) {
|
|
1264
1289
|
const section = ElementorHelpers.findElementRecursive(elementorData, args.section_id);
|
|
1265
|
-
if (section
|
|
1266
|
-
|
|
1290
|
+
if (section) {
|
|
1291
|
+
if (section.elType === 'container') {
|
|
1292
|
+
// Containers hold widgets directly
|
|
1293
|
+
targetContainer = section;
|
|
1294
|
+
}
|
|
1295
|
+
else if (section.elements && section.elements.length > 0) {
|
|
1296
|
+
// Traditional section — find first column child
|
|
1297
|
+
const firstChild = section.elements[0];
|
|
1298
|
+
if (firstChild.elType === 'column') {
|
|
1299
|
+
targetContainer = firstChild;
|
|
1300
|
+
}
|
|
1301
|
+
else {
|
|
1302
|
+
// Section has direct children (non-column), add directly
|
|
1303
|
+
targetContainer = section;
|
|
1304
|
+
}
|
|
1305
|
+
}
|
|
1306
|
+
else {
|
|
1307
|
+
// Empty section/container — add directly
|
|
1308
|
+
targetContainer = section;
|
|
1309
|
+
if (!targetContainer.elements) {
|
|
1310
|
+
targetContainer.elements = [];
|
|
1311
|
+
}
|
|
1312
|
+
}
|
|
1267
1313
|
}
|
|
1268
1314
|
}
|
|
1269
|
-
if (!
|
|
1270
|
-
return ResponseHelpers.createErrorResponse(`Target
|
|
1315
|
+
if (!targetContainer) {
|
|
1316
|
+
return ResponseHelpers.createErrorResponse(`Target section/container not found. Please specify a valid section_id or column_id`, 'TARGET_NOT_FOUND', 'NOT_FOUND', 'Could not locate target element for widget placement');
|
|
1271
1317
|
}
|
|
1272
1318
|
const newWidget = {
|
|
1273
1319
|
id: ElementorHelpers.generateElementorId(),
|
|
@@ -1277,11 +1323,11 @@ export class ToolHandlers {
|
|
|
1277
1323
|
elements: [],
|
|
1278
1324
|
widgetType: args.widget_type
|
|
1279
1325
|
};
|
|
1280
|
-
if (args.position !== undefined && args.position >= 0 && args.position <
|
|
1281
|
-
|
|
1326
|
+
if (args.position !== undefined && args.position >= 0 && args.position < targetContainer.elements.length) {
|
|
1327
|
+
targetContainer.elements.splice(args.position, 0, newWidget);
|
|
1282
1328
|
}
|
|
1283
1329
|
else {
|
|
1284
|
-
|
|
1330
|
+
targetContainer.elements.push(newWidget);
|
|
1285
1331
|
}
|
|
1286
1332
|
await this.updateElementorData({
|
|
1287
1333
|
post_id: args.post_id,
|
|
@@ -1291,8 +1337,9 @@ export class ToolHandlers {
|
|
|
1291
1337
|
operation_type: "add_widget_to_section",
|
|
1292
1338
|
widget_id: newWidget.id,
|
|
1293
1339
|
widget_type: args.widget_type,
|
|
1294
|
-
|
|
1295
|
-
|
|
1340
|
+
target_id: targetContainer.id,
|
|
1341
|
+
target_type: targetContainer.elType,
|
|
1342
|
+
position: args.position !== undefined ? args.position : targetContainer.elements.length - 1,
|
|
1296
1343
|
post_id: args.post_id,
|
|
1297
1344
|
widget_settings: args.widget_settings || {}
|
|
1298
1345
|
}, `Widget ${args.widget_type} added successfully! Widget ID: ${newWidget.id}`);
|
|
@@ -1635,7 +1682,88 @@ export class ToolHandlers {
|
|
|
1635
1682
|
const authCheck = this.wordPressClient.ensureAuthenticated();
|
|
1636
1683
|
if (authCheck)
|
|
1637
1684
|
return authCheck;
|
|
1638
|
-
|
|
1685
|
+
try {
|
|
1686
|
+
const parsedResult = await this.elementorHandler.safeGetElementorData(args.post_id);
|
|
1687
|
+
if (!parsedResult.success || !parsedResult.data) {
|
|
1688
|
+
return ResponseHelpers.createErrorResponse(`Failed to get Elementor data for post/page ID ${args.post_id}: ${parsedResult.error || 'Unknown error'}`, 'ELEMENTOR_DATA_ERROR', 'DATA_ERROR', 'Could not retrieve or parse Elementor data for rebuilding');
|
|
1689
|
+
}
|
|
1690
|
+
const elementorData = parsedResult.data;
|
|
1691
|
+
const repairs = [];
|
|
1692
|
+
let repairCount = 0;
|
|
1693
|
+
const rebuildElement = (element, path) => {
|
|
1694
|
+
// Fix missing ID
|
|
1695
|
+
if (!element.id) {
|
|
1696
|
+
element.id = ElementorHelpers.generateElementorId();
|
|
1697
|
+
repairs.push(`Generated missing ID at ${path}: ${element.id}`);
|
|
1698
|
+
repairCount++;
|
|
1699
|
+
}
|
|
1700
|
+
// Fix missing elType
|
|
1701
|
+
if (!element.elType) {
|
|
1702
|
+
if (element.widgetType) {
|
|
1703
|
+
element.elType = 'widget';
|
|
1704
|
+
}
|
|
1705
|
+
else if (element.elements && element.elements.length > 0) {
|
|
1706
|
+
element.elType = 'container';
|
|
1707
|
+
}
|
|
1708
|
+
else {
|
|
1709
|
+
element.elType = 'container';
|
|
1710
|
+
}
|
|
1711
|
+
repairs.push(`Set missing elType to '${element.elType}' at ${path}`);
|
|
1712
|
+
repairCount++;
|
|
1713
|
+
}
|
|
1714
|
+
// Ensure elements array exists for non-widget types
|
|
1715
|
+
if (element.elType !== 'widget' && !element.elements) {
|
|
1716
|
+
element.elements = [];
|
|
1717
|
+
repairs.push(`Added missing elements array at ${path}`);
|
|
1718
|
+
repairCount++;
|
|
1719
|
+
}
|
|
1720
|
+
// Ensure settings object exists
|
|
1721
|
+
if (!element.settings) {
|
|
1722
|
+
element.settings = {};
|
|
1723
|
+
repairs.push(`Added missing settings object at ${path}`);
|
|
1724
|
+
repairCount++;
|
|
1725
|
+
}
|
|
1726
|
+
// Ensure widgets have empty elements array
|
|
1727
|
+
if (element.elType === 'widget' && !element.elements) {
|
|
1728
|
+
element.elements = [];
|
|
1729
|
+
}
|
|
1730
|
+
// Recursively rebuild children
|
|
1731
|
+
if (element.elements && Array.isArray(element.elements)) {
|
|
1732
|
+
element.elements = element.elements
|
|
1733
|
+
.filter((child) => child && typeof child === 'object')
|
|
1734
|
+
.map((child, index) => rebuildElement(child, `${path}.elements[${index}]`));
|
|
1735
|
+
}
|
|
1736
|
+
return element;
|
|
1737
|
+
};
|
|
1738
|
+
// Remove any null/invalid top-level elements
|
|
1739
|
+
const originalCount = elementorData.length;
|
|
1740
|
+
const validData = elementorData.filter((el) => el && typeof el === 'object');
|
|
1741
|
+
if (validData.length < originalCount) {
|
|
1742
|
+
repairs.push(`Removed ${originalCount - validData.length} invalid top-level elements`);
|
|
1743
|
+
repairCount += originalCount - validData.length;
|
|
1744
|
+
}
|
|
1745
|
+
// Rebuild each element
|
|
1746
|
+
const rebuiltData = validData.map((element, index) => rebuildElement(element, `root[${index}]`));
|
|
1747
|
+
// Save if repairs were made
|
|
1748
|
+
if (repairCount > 0) {
|
|
1749
|
+
await this.updateElementorData({
|
|
1750
|
+
post_id: args.post_id,
|
|
1751
|
+
elementor_data: JSON.stringify(rebuiltData)
|
|
1752
|
+
});
|
|
1753
|
+
}
|
|
1754
|
+
return ResponseHelpers.createSuccessResponse({
|
|
1755
|
+
post_id: args.post_id,
|
|
1756
|
+
repairs_made: repairCount,
|
|
1757
|
+
repairs,
|
|
1758
|
+
total_elements: rebuiltData.length,
|
|
1759
|
+
data_modified: repairCount > 0
|
|
1760
|
+
}, repairCount > 0
|
|
1761
|
+
? `Page structure rebuilt with ${repairCount} repairs for post ID ${args.post_id}`
|
|
1762
|
+
: `Page structure is clean — no repairs needed for post ID ${args.post_id}`);
|
|
1763
|
+
}
|
|
1764
|
+
catch (error) {
|
|
1765
|
+
return ResponseHelpers.createErrorResponse(`Failed to rebuild page structure: ${error.message}`, 'REBUILD_ERROR', 'API_ERROR', `Rebuild process failed: ${error.message}`);
|
|
1766
|
+
}
|
|
1639
1767
|
}
|
|
1640
1768
|
async validateElementorData(args) {
|
|
1641
1769
|
const authCheck = this.wordPressClient.ensureAuthenticated();
|
|
@@ -1678,5 +1806,433 @@ export class ToolHandlers {
|
|
|
1678
1806
|
return ResponseHelpers.createErrorResponse(`Failed to validate Elementor data: ${error.message}`, 'VALIDATION_ERROR', 'API_ERROR', `Validation process failed: ${error.message}`);
|
|
1679
1807
|
}
|
|
1680
1808
|
}
|
|
1809
|
+
// ===== Elementor Kit Management Helpers =====
|
|
1810
|
+
async getActiveKitId() {
|
|
1811
|
+
const axios = this.wordPressClient.getAxiosInstance();
|
|
1812
|
+
// Try to get the active kit ID from WordPress options
|
|
1813
|
+
try {
|
|
1814
|
+
const response = await axios.get('wp/v2/settings');
|
|
1815
|
+
if (response.data && response.data.elementor_active_kit) {
|
|
1816
|
+
return Number(response.data.elementor_active_kit);
|
|
1817
|
+
}
|
|
1818
|
+
}
|
|
1819
|
+
catch (_) {
|
|
1820
|
+
// Settings endpoint may not expose this option, fall through
|
|
1821
|
+
}
|
|
1822
|
+
// Fallback: query for kit-type posts in elementor_library
|
|
1823
|
+
try {
|
|
1824
|
+
const response = await axios.get('wp/v2/elementor_library', {
|
|
1825
|
+
params: {
|
|
1826
|
+
type: 'kit',
|
|
1827
|
+
per_page: 1,
|
|
1828
|
+
context: 'edit',
|
|
1829
|
+
},
|
|
1830
|
+
});
|
|
1831
|
+
if (response.data && Array.isArray(response.data) && response.data.length > 0) {
|
|
1832
|
+
return response.data[0].id;
|
|
1833
|
+
}
|
|
1834
|
+
}
|
|
1835
|
+
catch (_) {
|
|
1836
|
+
// Fall through
|
|
1837
|
+
}
|
|
1838
|
+
// Last resort: try well-known option via custom endpoint or options
|
|
1839
|
+
try {
|
|
1840
|
+
const response = await axios.get('wp/v2/options/elementor_active_kit');
|
|
1841
|
+
if (response.data && response.data.value) {
|
|
1842
|
+
return Number(response.data.value);
|
|
1843
|
+
}
|
|
1844
|
+
}
|
|
1845
|
+
catch (_) {
|
|
1846
|
+
// Fall through
|
|
1847
|
+
}
|
|
1848
|
+
throw new Error('Could not determine the active Elementor kit ID. Ensure Elementor is installed and a kit is active.');
|
|
1849
|
+
}
|
|
1850
|
+
async getKitSettings(kitId) {
|
|
1851
|
+
const axios = this.wordPressClient.getAxiosInstance();
|
|
1852
|
+
const response = await axios.get(`wp/v2/elementor_library/${kitId}`, {
|
|
1853
|
+
params: { context: 'edit' },
|
|
1854
|
+
});
|
|
1855
|
+
const post = response.data;
|
|
1856
|
+
let settings = {};
|
|
1857
|
+
// Extract settings from post meta
|
|
1858
|
+
if (post.meta && post.meta._elementor_page_settings) {
|
|
1859
|
+
settings = typeof post.meta._elementor_page_settings === 'string'
|
|
1860
|
+
? JSON.parse(post.meta._elementor_page_settings)
|
|
1861
|
+
: post.meta._elementor_page_settings;
|
|
1862
|
+
}
|
|
1863
|
+
return { post, settings };
|
|
1864
|
+
}
|
|
1865
|
+
// ===== Elementor Kit Management Handlers =====
|
|
1866
|
+
async getElementorKit(args) {
|
|
1867
|
+
const authCheck = this.wordPressClient.ensureAuthenticated();
|
|
1868
|
+
if (authCheck)
|
|
1869
|
+
return authCheck;
|
|
1870
|
+
try {
|
|
1871
|
+
const kitId = await this.getActiveKitId();
|
|
1872
|
+
const { post, settings } = await this.getKitSettings(kitId);
|
|
1873
|
+
let filteredSettings = settings;
|
|
1874
|
+
if (args.include_settings && args.include_settings.length > 0) {
|
|
1875
|
+
filteredSettings = {};
|
|
1876
|
+
const settingsMap = {
|
|
1877
|
+
colors: ['system_colors', 'custom_colors'],
|
|
1878
|
+
fonts: ['system_typography', 'custom_typography'],
|
|
1879
|
+
typography: ['default_generic_fonts', 'body_typography_typography', 'body_typography_font_family', 'body_typography_font_size', 'body_typography_font_weight', 'h1_typography_typography', 'h1_typography_font_family', 'h1_typography_font_size', 'h2_typography_typography', 'h2_typography_font_family', 'h2_typography_font_size', 'h3_typography_typography', 'h3_typography_font_family', 'h3_typography_font_size', 'h4_typography_typography', 'h4_typography_font_family', 'h4_typography_font_size', 'h5_typography_typography', 'h5_typography_font_family', 'h5_typography_font_size', 'h6_typography_typography', 'h6_typography_font_family', 'h6_typography_font_size'],
|
|
1880
|
+
buttons: ['button_typography_typography', 'button_typography_font_family', 'button_typography_font_size', 'button_typography_font_weight', 'button_text_color', 'button_background_color', 'button_border_radius', 'button_padding'],
|
|
1881
|
+
};
|
|
1882
|
+
for (const filter of args.include_settings) {
|
|
1883
|
+
const keys = settingsMap[filter.toLowerCase()];
|
|
1884
|
+
if (keys) {
|
|
1885
|
+
for (const key of keys) {
|
|
1886
|
+
if (settings[key] !== undefined) {
|
|
1887
|
+
filteredSettings[key] = settings[key];
|
|
1888
|
+
}
|
|
1889
|
+
}
|
|
1890
|
+
}
|
|
1891
|
+
else {
|
|
1892
|
+
// Direct key lookup
|
|
1893
|
+
if (settings[filter] !== undefined) {
|
|
1894
|
+
filteredSettings[filter] = settings[filter];
|
|
1895
|
+
}
|
|
1896
|
+
}
|
|
1897
|
+
}
|
|
1898
|
+
}
|
|
1899
|
+
return ResponseHelpers.createSuccessResponse({
|
|
1900
|
+
kit_id: kitId,
|
|
1901
|
+
title: post.title?.rendered || post.title || 'Default Kit',
|
|
1902
|
+
settings: filteredSettings,
|
|
1903
|
+
total_settings_keys: Object.keys(settings).length,
|
|
1904
|
+
filtered: !!(args.include_settings && args.include_settings.length > 0),
|
|
1905
|
+
}, `Successfully retrieved Elementor kit settings (kit ID: ${kitId})`);
|
|
1906
|
+
}
|
|
1907
|
+
catch (error) {
|
|
1908
|
+
return ResponseHelpers.createErrorResponse(`Failed to get Elementor kit: ${error.message}`, 'GET_KIT_ERROR', 'API_ERROR', `Kit retrieval failed: ${error.message}`);
|
|
1909
|
+
}
|
|
1910
|
+
}
|
|
1911
|
+
async updateElementorKit(args) {
|
|
1912
|
+
const authCheck = this.wordPressClient.ensureAuthenticated();
|
|
1913
|
+
if (authCheck)
|
|
1914
|
+
return authCheck;
|
|
1915
|
+
try {
|
|
1916
|
+
const kitId = await this.getActiveKitId();
|
|
1917
|
+
const { settings: existingSettings } = await this.getKitSettings(kitId);
|
|
1918
|
+
const mergedSettings = { ...existingSettings, ...args.settings };
|
|
1919
|
+
const axios = this.wordPressClient.getAxiosInstance();
|
|
1920
|
+
await axios.post(`wp/v2/elementor_library/${kitId}`, {
|
|
1921
|
+
meta: {
|
|
1922
|
+
_elementor_page_settings: mergedSettings,
|
|
1923
|
+
},
|
|
1924
|
+
});
|
|
1925
|
+
const updatedKeys = Object.keys(args.settings);
|
|
1926
|
+
return ResponseHelpers.createSuccessResponse({
|
|
1927
|
+
kit_id: kitId,
|
|
1928
|
+
updated_keys: updatedKeys,
|
|
1929
|
+
total_updated: updatedKeys.length,
|
|
1930
|
+
settings: mergedSettings,
|
|
1931
|
+
}, `Successfully updated ${updatedKeys.length} Elementor kit setting(s)`);
|
|
1932
|
+
}
|
|
1933
|
+
catch (error) {
|
|
1934
|
+
return ResponseHelpers.createErrorResponse(`Failed to update Elementor kit: ${error.message}`, 'UPDATE_KIT_ERROR', 'API_ERROR', `Kit update failed: ${error.message}`);
|
|
1935
|
+
}
|
|
1936
|
+
}
|
|
1937
|
+
async exportElementorKitToFile(args) {
|
|
1938
|
+
const authCheck = this.wordPressClient.ensureAuthenticated();
|
|
1939
|
+
if (authCheck)
|
|
1940
|
+
return authCheck;
|
|
1941
|
+
try {
|
|
1942
|
+
const kitId = await this.getActiveKitId();
|
|
1943
|
+
const { post, settings } = await this.getKitSettings(kitId);
|
|
1944
|
+
const exportData = {
|
|
1945
|
+
kit_id: kitId,
|
|
1946
|
+
title: post.title?.rendered || post.title || 'Default Kit',
|
|
1947
|
+
settings,
|
|
1948
|
+
exported_at: new Date().toISOString(),
|
|
1949
|
+
};
|
|
1950
|
+
if (args.include_content) {
|
|
1951
|
+
exportData.content = post.content;
|
|
1952
|
+
if (post.meta && post.meta._elementor_data) {
|
|
1953
|
+
exportData.elementor_data = typeof post.meta._elementor_data === 'string'
|
|
1954
|
+
? JSON.parse(post.meta._elementor_data)
|
|
1955
|
+
: post.meta._elementor_data;
|
|
1956
|
+
}
|
|
1957
|
+
}
|
|
1958
|
+
const tempFileResult = TempFileManager.writeElementorDataToFile(kitId, exportData);
|
|
1959
|
+
return ResponseHelpers.createSuccessResponse({
|
|
1960
|
+
...tempFileResult,
|
|
1961
|
+
kit_id: kitId,
|
|
1962
|
+
include_content: !!args.include_content,
|
|
1963
|
+
}, `Elementor kit exported to file: ${tempFileResult.file_path}`);
|
|
1964
|
+
}
|
|
1965
|
+
catch (error) {
|
|
1966
|
+
return ResponseHelpers.createErrorResponse(`Failed to export Elementor kit: ${error.message}`, 'EXPORT_KIT_ERROR', 'API_ERROR', `Kit export failed: ${error.message}`);
|
|
1967
|
+
}
|
|
1968
|
+
}
|
|
1969
|
+
async importElementorKitData(args) {
|
|
1970
|
+
const authCheck = this.wordPressClient.ensureAuthenticated();
|
|
1971
|
+
if (authCheck)
|
|
1972
|
+
return authCheck;
|
|
1973
|
+
try {
|
|
1974
|
+
const kitId = await this.getActiveKitId();
|
|
1975
|
+
const merge = args.merge !== false; // default true
|
|
1976
|
+
let finalSettings;
|
|
1977
|
+
if (merge) {
|
|
1978
|
+
const { settings: existingSettings } = await this.getKitSettings(kitId);
|
|
1979
|
+
finalSettings = { ...existingSettings, ...args.kit_data };
|
|
1980
|
+
}
|
|
1981
|
+
else {
|
|
1982
|
+
finalSettings = args.kit_data;
|
|
1983
|
+
}
|
|
1984
|
+
const axios = this.wordPressClient.getAxiosInstance();
|
|
1985
|
+
await axios.post(`wp/v2/elementor_library/${kitId}`, {
|
|
1986
|
+
meta: {
|
|
1987
|
+
_elementor_page_settings: finalSettings,
|
|
1988
|
+
},
|
|
1989
|
+
});
|
|
1990
|
+
const importedKeys = Object.keys(args.kit_data);
|
|
1991
|
+
return ResponseHelpers.createSuccessResponse({
|
|
1992
|
+
kit_id: kitId,
|
|
1993
|
+
merge,
|
|
1994
|
+
imported_keys: importedKeys,
|
|
1995
|
+
total_imported: importedKeys.length,
|
|
1996
|
+
total_settings: Object.keys(finalSettings).length,
|
|
1997
|
+
}, `Successfully imported ${importedKeys.length} setting(s) into Elementor kit (merge: ${merge})`);
|
|
1998
|
+
}
|
|
1999
|
+
catch (error) {
|
|
2000
|
+
return ResponseHelpers.createErrorResponse(`Failed to import Elementor kit data: ${error.message}`, 'IMPORT_KIT_ERROR', 'API_ERROR', `Kit import failed: ${error.message}`);
|
|
2001
|
+
}
|
|
2002
|
+
}
|
|
2003
|
+
async getElementorGlobalColors(args) {
|
|
2004
|
+
const authCheck = this.wordPressClient.ensureAuthenticated();
|
|
2005
|
+
if (authCheck)
|
|
2006
|
+
return authCheck;
|
|
2007
|
+
try {
|
|
2008
|
+
const kitId = await this.getActiveKitId();
|
|
2009
|
+
const { settings } = await this.getKitSettings(kitId);
|
|
2010
|
+
return ResponseHelpers.createSuccessResponse({
|
|
2011
|
+
kit_id: kitId,
|
|
2012
|
+
system_colors: settings.system_colors || [],
|
|
2013
|
+
custom_colors: settings.custom_colors || [],
|
|
2014
|
+
}, `Retrieved global colors from Elementor kit (kit ID: ${kitId})`);
|
|
2015
|
+
}
|
|
2016
|
+
catch (error) {
|
|
2017
|
+
return ResponseHelpers.createErrorResponse(`Failed to get global colors: ${error.message}`, 'GET_GLOBAL_COLORS_ERROR', 'API_ERROR', `Global colors retrieval failed: ${error.message}`);
|
|
2018
|
+
}
|
|
2019
|
+
}
|
|
2020
|
+
async getElementorGlobalFonts(args) {
|
|
2021
|
+
const authCheck = this.wordPressClient.ensureAuthenticated();
|
|
2022
|
+
if (authCheck)
|
|
2023
|
+
return authCheck;
|
|
2024
|
+
try {
|
|
2025
|
+
const kitId = await this.getActiveKitId();
|
|
2026
|
+
const { settings } = await this.getKitSettings(kitId);
|
|
2027
|
+
return ResponseHelpers.createSuccessResponse({
|
|
2028
|
+
kit_id: kitId,
|
|
2029
|
+
system_typography: settings.system_typography || [],
|
|
2030
|
+
custom_typography: settings.custom_typography || [],
|
|
2031
|
+
}, `Retrieved global fonts/typography from Elementor kit (kit ID: ${kitId})`);
|
|
2032
|
+
}
|
|
2033
|
+
catch (error) {
|
|
2034
|
+
return ResponseHelpers.createErrorResponse(`Failed to get global fonts: ${error.message}`, 'GET_GLOBAL_FONTS_ERROR', 'API_ERROR', `Global fonts retrieval failed: ${error.message}`);
|
|
2035
|
+
}
|
|
2036
|
+
}
|
|
2037
|
+
// ===== Elementor Template Management Handlers =====
|
|
2038
|
+
async listElementorTemplates(args) {
|
|
2039
|
+
const authCheck = this.wordPressClient.ensureAuthenticated();
|
|
2040
|
+
if (authCheck)
|
|
2041
|
+
return authCheck;
|
|
2042
|
+
try {
|
|
2043
|
+
const axios = this.wordPressClient.getAxiosInstance();
|
|
2044
|
+
const params = {
|
|
2045
|
+
per_page: args.per_page || 20,
|
|
2046
|
+
page: args.page || 1,
|
|
2047
|
+
context: 'edit',
|
|
2048
|
+
};
|
|
2049
|
+
if (args.status) {
|
|
2050
|
+
params.status = args.status;
|
|
2051
|
+
}
|
|
2052
|
+
if (args.search) {
|
|
2053
|
+
params.search = args.search;
|
|
2054
|
+
}
|
|
2055
|
+
const response = await axios.get('wp/v2/elementor_library', { params });
|
|
2056
|
+
let templates = response.data;
|
|
2057
|
+
// Filter by template type if specified (via meta)
|
|
2058
|
+
if (args.template_type) {
|
|
2059
|
+
templates = templates.filter((t) => t.meta?._elementor_template_type === args.template_type);
|
|
2060
|
+
}
|
|
2061
|
+
const templateSummaries = templates.map((template) => ({
|
|
2062
|
+
id: template.id,
|
|
2063
|
+
title: template.title?.rendered || template.title?.raw || '(No title)',
|
|
2064
|
+
template_type: template.meta?._elementor_template_type || 'unknown',
|
|
2065
|
+
status: template.status,
|
|
2066
|
+
date_created: template.date,
|
|
2067
|
+
date_modified: template.modified,
|
|
2068
|
+
author: template.author,
|
|
2069
|
+
has_elementor_data: !!template.meta?._elementor_data,
|
|
2070
|
+
slug: template.slug,
|
|
2071
|
+
}));
|
|
2072
|
+
return ResponseHelpers.createSuccessResponse({
|
|
2073
|
+
templates: templateSummaries,
|
|
2074
|
+
count: templateSummaries.length,
|
|
2075
|
+
page: args.page || 1,
|
|
2076
|
+
per_page: args.per_page || 20,
|
|
2077
|
+
filter_type: args.template_type || 'all',
|
|
2078
|
+
total_in_response: response.data.length,
|
|
2079
|
+
}, `Retrieved ${templateSummaries.length} Elementor template(s)${args.template_type ? ` of type '${args.template_type}'` : ''}`);
|
|
2080
|
+
}
|
|
2081
|
+
catch (error) {
|
|
2082
|
+
if (error.response?.status === 404) {
|
|
2083
|
+
return ResponseHelpers.createErrorResponse('Elementor templates endpoint not found. Make sure Elementor is installed and the elementor_library post type is registered.', 'TEMPLATES_NOT_FOUND', 'NOT_FOUND', 'The wp/v2/elementor_library endpoint is not available');
|
|
2084
|
+
}
|
|
2085
|
+
return ResponseHelpers.createErrorResponse(`Failed to list Elementor templates: ${error.message}`, 'LIST_TEMPLATES_ERROR', 'API_ERROR', `HTTP ${error.response?.status}: ${error.response?.statusText}`);
|
|
2086
|
+
}
|
|
2087
|
+
}
|
|
2088
|
+
async createElementorTemplate(args) {
|
|
2089
|
+
const authCheck = this.wordPressClient.ensureAuthenticated();
|
|
2090
|
+
if (authCheck)
|
|
2091
|
+
return authCheck;
|
|
2092
|
+
try {
|
|
2093
|
+
const axios = this.wordPressClient.getAxiosInstance();
|
|
2094
|
+
const postData = {
|
|
2095
|
+
title: args.title,
|
|
2096
|
+
status: args.status || 'draft',
|
|
2097
|
+
meta: {
|
|
2098
|
+
_elementor_template_type: args.template_type,
|
|
2099
|
+
_elementor_edit_mode: 'builder',
|
|
2100
|
+
_elementor_data: args.elementor_data || '[]',
|
|
2101
|
+
},
|
|
2102
|
+
};
|
|
2103
|
+
if (args.page_settings) {
|
|
2104
|
+
postData.meta._elementor_page_settings = args.page_settings;
|
|
2105
|
+
}
|
|
2106
|
+
const response = await axios.post('wp/v2/elementor_library', postData);
|
|
2107
|
+
return ResponseHelpers.createSuccessResponse({
|
|
2108
|
+
template_id: response.data.id,
|
|
2109
|
+
title: response.data.title?.rendered || response.data.title?.raw || args.title,
|
|
2110
|
+
template_type: args.template_type,
|
|
2111
|
+
status: response.data.status,
|
|
2112
|
+
date_created: response.data.date,
|
|
2113
|
+
slug: response.data.slug,
|
|
2114
|
+
has_elementor_data: !!args.elementor_data,
|
|
2115
|
+
has_page_settings: !!args.page_settings,
|
|
2116
|
+
}, `Elementor template created successfully! ID: ${response.data.id}, Type: ${args.template_type}, Status: ${response.data.status}`);
|
|
2117
|
+
}
|
|
2118
|
+
catch (error) {
|
|
2119
|
+
return ResponseHelpers.createErrorResponse(`Failed to create Elementor template: ${error.response?.data?.message || error.message}`, 'CREATE_TEMPLATE_ERROR', 'API_ERROR', `HTTP ${error.response?.status}: ${error.response?.statusText}`);
|
|
2120
|
+
}
|
|
2121
|
+
}
|
|
2122
|
+
async updateElementorTemplate(args) {
|
|
2123
|
+
const authCheck = this.wordPressClient.ensureAuthenticated();
|
|
2124
|
+
if (authCheck)
|
|
2125
|
+
return authCheck;
|
|
2126
|
+
try {
|
|
2127
|
+
const axios = this.wordPressClient.getAxiosInstance();
|
|
2128
|
+
const updateData = {};
|
|
2129
|
+
if (args.title) {
|
|
2130
|
+
updateData.title = args.title;
|
|
2131
|
+
}
|
|
2132
|
+
if (args.status) {
|
|
2133
|
+
updateData.status = args.status;
|
|
2134
|
+
}
|
|
2135
|
+
const meta = {};
|
|
2136
|
+
if (args.template_type) {
|
|
2137
|
+
meta._elementor_template_type = args.template_type;
|
|
2138
|
+
}
|
|
2139
|
+
if (args.elementor_data) {
|
|
2140
|
+
meta._elementor_data = args.elementor_data;
|
|
2141
|
+
meta._elementor_edit_mode = 'builder';
|
|
2142
|
+
}
|
|
2143
|
+
if (args.page_settings) {
|
|
2144
|
+
meta._elementor_page_settings = args.page_settings;
|
|
2145
|
+
}
|
|
2146
|
+
if (Object.keys(meta).length > 0) {
|
|
2147
|
+
updateData.meta = meta;
|
|
2148
|
+
}
|
|
2149
|
+
const response = await axios.post(`wp/v2/elementor_library/${args.template_id}`, updateData);
|
|
2150
|
+
return ResponseHelpers.createSuccessResponse({
|
|
2151
|
+
template_id: response.data.id,
|
|
2152
|
+
title: response.data.title?.rendered || response.data.title?.raw,
|
|
2153
|
+
template_type: response.data.meta?._elementor_template_type,
|
|
2154
|
+
status: response.data.status,
|
|
2155
|
+
date_modified: response.data.modified,
|
|
2156
|
+
updated_fields: [
|
|
2157
|
+
...(args.title ? ['title'] : []),
|
|
2158
|
+
...(args.status ? ['status'] : []),
|
|
2159
|
+
...(args.template_type ? ['template_type'] : []),
|
|
2160
|
+
...(args.elementor_data ? ['elementor_data'] : []),
|
|
2161
|
+
...(args.page_settings ? ['page_settings'] : []),
|
|
2162
|
+
],
|
|
2163
|
+
}, `Elementor template ${args.template_id} updated successfully`);
|
|
2164
|
+
}
|
|
2165
|
+
catch (error) {
|
|
2166
|
+
if (error.response?.status === 404) {
|
|
2167
|
+
return ResponseHelpers.createErrorResponse(`Template with ID ${args.template_id} not found`, 'TEMPLATE_NOT_FOUND', 'NOT_FOUND', `HTTP 404: Template ${args.template_id} does not exist`);
|
|
2168
|
+
}
|
|
2169
|
+
return ResponseHelpers.createErrorResponse(`Failed to update Elementor template: ${error.response?.data?.message || error.message}`, 'UPDATE_TEMPLATE_ERROR', 'API_ERROR', `HTTP ${error.response?.status}: ${error.response?.statusText}`);
|
|
2170
|
+
}
|
|
2171
|
+
}
|
|
2172
|
+
async getElementorTemplate(args) {
|
|
2173
|
+
const authCheck = this.wordPressClient.ensureAuthenticated();
|
|
2174
|
+
if (authCheck)
|
|
2175
|
+
return authCheck;
|
|
2176
|
+
try {
|
|
2177
|
+
const axios = this.wordPressClient.getAxiosInstance();
|
|
2178
|
+
const response = await axios.get(`wp/v2/elementor_library/${args.template_id}`, {
|
|
2179
|
+
params: { context: 'edit' },
|
|
2180
|
+
});
|
|
2181
|
+
const template = response.data;
|
|
2182
|
+
let elementorData = null;
|
|
2183
|
+
if (template.meta?._elementor_data) {
|
|
2184
|
+
try {
|
|
2185
|
+
elementorData = typeof template.meta._elementor_data === 'string'
|
|
2186
|
+
? JSON.parse(template.meta._elementor_data)
|
|
2187
|
+
: template.meta._elementor_data;
|
|
2188
|
+
}
|
|
2189
|
+
catch {
|
|
2190
|
+
elementorData = template.meta._elementor_data;
|
|
2191
|
+
}
|
|
2192
|
+
}
|
|
2193
|
+
return ResponseHelpers.createSuccessResponse({
|
|
2194
|
+
template_id: template.id,
|
|
2195
|
+
title: template.title?.rendered || template.title?.raw || '(No title)',
|
|
2196
|
+
template_type: template.meta?._elementor_template_type || 'unknown',
|
|
2197
|
+
status: template.status,
|
|
2198
|
+
date_created: template.date,
|
|
2199
|
+
date_modified: template.modified,
|
|
2200
|
+
author: template.author,
|
|
2201
|
+
slug: template.slug,
|
|
2202
|
+
elementor_data: elementorData,
|
|
2203
|
+
page_settings: template.meta?._elementor_page_settings || {},
|
|
2204
|
+
element_count: Array.isArray(elementorData) ? elementorData.length : 0,
|
|
2205
|
+
}, `Retrieved Elementor template ${args.template_id}: "${template.title?.rendered || template.title?.raw}"`);
|
|
2206
|
+
}
|
|
2207
|
+
catch (error) {
|
|
2208
|
+
if (error.response?.status === 404) {
|
|
2209
|
+
return ResponseHelpers.createErrorResponse(`Template with ID ${args.template_id} not found`, 'TEMPLATE_NOT_FOUND', 'NOT_FOUND', `HTTP 404: Template ${args.template_id} does not exist`);
|
|
2210
|
+
}
|
|
2211
|
+
return ResponseHelpers.createErrorResponse(`Failed to get Elementor template: ${error.response?.data?.message || error.message}`, 'GET_TEMPLATE_ERROR', 'API_ERROR', `HTTP ${error.response?.status}: ${error.response?.statusText}`);
|
|
2212
|
+
}
|
|
2213
|
+
}
|
|
2214
|
+
async deleteElementorTemplate(args) {
|
|
2215
|
+
const authCheck = this.wordPressClient.ensureAuthenticated();
|
|
2216
|
+
if (authCheck)
|
|
2217
|
+
return authCheck;
|
|
2218
|
+
try {
|
|
2219
|
+
const axios = this.wordPressClient.getAxiosInstance();
|
|
2220
|
+
const response = await axios.delete(`wp/v2/elementor_library/${args.template_id}`, {
|
|
2221
|
+
params: { force: args.force || false },
|
|
2222
|
+
});
|
|
2223
|
+
return ResponseHelpers.createSuccessResponse({
|
|
2224
|
+
template_id: args.template_id,
|
|
2225
|
+
deleted: true,
|
|
2226
|
+
force: args.force || false,
|
|
2227
|
+
previous_status: response.data.status,
|
|
2228
|
+
}, `Elementor template ${args.template_id} ${args.force ? 'permanently deleted' : 'moved to trash'}`);
|
|
2229
|
+
}
|
|
2230
|
+
catch (error) {
|
|
2231
|
+
if (error.response?.status === 404) {
|
|
2232
|
+
return ResponseHelpers.createErrorResponse(`Template with ID ${args.template_id} not found`, 'TEMPLATE_NOT_FOUND', 'NOT_FOUND', `HTTP 404: Template ${args.template_id} does not exist`);
|
|
2233
|
+
}
|
|
2234
|
+
return ResponseHelpers.createErrorResponse(`Failed to delete Elementor template: ${error.response?.data?.message || error.message}`, 'DELETE_TEMPLATE_ERROR', 'API_ERROR', `HTTP ${error.response?.status}: ${error.response?.statusText}`);
|
|
2235
|
+
}
|
|
2236
|
+
}
|
|
1681
2237
|
}
|
|
1682
2238
|
//# sourceMappingURL=tool-handlers.js.map
|