@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.
Files changed (488) hide show
  1. package/README.md +18 -2
  2. package/dist/elementor-widget-types.d.ts +8196 -0
  3. package/dist/elementor-widget-types.d.ts.map +1 -0
  4. package/dist/elementor-widget-types.js +7 -0
  5. package/dist/elementor-widget-types.js.map +1 -0
  6. package/dist/index.js +8 -0
  7. package/dist/index.js.map +1 -1
  8. package/dist/server-config.d.ts +5 -0
  9. package/dist/server-config.d.ts.map +1 -1
  10. package/dist/server-config.js +9 -0
  11. package/dist/server-config.js.map +1 -1
  12. package/dist/tool-handlers.d.ts +13 -0
  13. package/dist/tool-handlers.d.ts.map +1 -1
  14. package/dist/tool-handlers.js +568 -12
  15. package/dist/tool-handlers.js.map +1 -1
  16. package/dist/tool-schemas.d.ts +214 -0
  17. package/dist/tool-schemas.d.ts.map +1 -1
  18. package/dist/tool-schemas.js +217 -1
  19. package/dist/tool-schemas.js.map +1 -1
  20. package/dist/types/common.d.ts +59 -0
  21. package/dist/types/common.d.ts.map +1 -0
  22. package/dist/types/common.js +6 -0
  23. package/dist/types/common.js.map +1 -0
  24. package/dist/types/elements.d.ts +54 -0
  25. package/dist/types/elements.d.ts.map +1 -0
  26. package/dist/types/elements.js +6 -0
  27. package/dist/types/elements.js.map +1 -0
  28. package/dist/types/index.d.ts +124 -0
  29. package/dist/types/index.d.ts.map +1 -0
  30. package/dist/types/index.js +125 -0
  31. package/dist/types/index.js.map +1 -0
  32. package/dist/types/widget-type-map.d.ts +240 -0
  33. package/dist/types/widget-type-map.d.ts.map +1 -0
  34. package/dist/types/widget-type-map.js +6 -0
  35. package/dist/types/widget-type-map.js.map +1 -0
  36. package/dist/types/widgets/accordion.d.ts +32 -0
  37. package/dist/types/widgets/accordion.d.ts.map +1 -0
  38. package/dist/types/widgets/accordion.js +2 -0
  39. package/dist/types/widgets/accordion.js.map +1 -0
  40. package/dist/types/widgets/alert.d.ts +25 -0
  41. package/dist/types/widgets/alert.d.ts.map +1 -0
  42. package/dist/types/widgets/alert.js +2 -0
  43. package/dist/types/widgets/alert.js.map +1 -0
  44. package/dist/types/widgets/animated-headline.d.ts +39 -0
  45. package/dist/types/widgets/animated-headline.d.ts.map +1 -0
  46. package/dist/types/widgets/animated-headline.js +2 -0
  47. package/dist/types/widgets/animated-headline.js.map +1 -0
  48. package/dist/types/widgets/archive-posts.d.ts +8 -0
  49. package/dist/types/widgets/archive-posts.d.ts.map +1 -0
  50. package/dist/types/widgets/archive-posts.js +2 -0
  51. package/dist/types/widgets/archive-posts.js.map +1 -0
  52. package/dist/types/widgets/audio.d.ts +26 -0
  53. package/dist/types/widgets/audio.d.ts.map +1 -0
  54. package/dist/types/widgets/audio.js +2 -0
  55. package/dist/types/widgets/audio.js.map +1 -0
  56. package/dist/types/widgets/author-box.d.ts +55 -0
  57. package/dist/types/widgets/author-box.d.ts.map +1 -0
  58. package/dist/types/widgets/author-box.js +2 -0
  59. package/dist/types/widgets/author-box.js.map +1 -0
  60. package/dist/types/widgets/blockquote.d.ts +71 -0
  61. package/dist/types/widgets/blockquote.d.ts.map +1 -0
  62. package/dist/types/widgets/blockquote.js +2 -0
  63. package/dist/types/widgets/blockquote.js.map +1 -0
  64. package/dist/types/widgets/breadcrumbs.d.ts +10 -0
  65. package/dist/types/widgets/breadcrumbs.d.ts.map +1 -0
  66. package/dist/types/widgets/breadcrumbs.js +2 -0
  67. package/dist/types/widgets/breadcrumbs.js.map +1 -0
  68. package/dist/types/widgets/button.d.ts +26 -0
  69. package/dist/types/widgets/button.d.ts.map +1 -0
  70. package/dist/types/widgets/button.js +2 -0
  71. package/dist/types/widgets/button.js.map +1 -0
  72. package/dist/types/widgets/call-to-action.d.ts +105 -0
  73. package/dist/types/widgets/call-to-action.d.ts.map +1 -0
  74. package/dist/types/widgets/call-to-action.js +2 -0
  75. package/dist/types/widgets/call-to-action.js.map +1 -0
  76. package/dist/types/widgets/code-highlight.d.ts +19 -0
  77. package/dist/types/widgets/code-highlight.d.ts.map +1 -0
  78. package/dist/types/widgets/code-highlight.js +2 -0
  79. package/dist/types/widgets/code-highlight.js.map +1 -0
  80. package/dist/types/widgets/countdown.d.ts +63 -0
  81. package/dist/types/widgets/countdown.d.ts.map +1 -0
  82. package/dist/types/widgets/countdown.js +2 -0
  83. package/dist/types/widgets/countdown.js.map +1 -0
  84. package/dist/types/widgets/counter.d.ts +32 -0
  85. package/dist/types/widgets/counter.d.ts.map +1 -0
  86. package/dist/types/widgets/counter.js +2 -0
  87. package/dist/types/widgets/counter.js.map +1 -0
  88. package/dist/types/widgets/divider.d.ts +41 -0
  89. package/dist/types/widgets/divider.d.ts.map +1 -0
  90. package/dist/types/widgets/divider.js +2 -0
  91. package/dist/types/widgets/divider.js.map +1 -0
  92. package/dist/types/widgets/facebook-button.d.ts +17 -0
  93. package/dist/types/widgets/facebook-button.d.ts.map +1 -0
  94. package/dist/types/widgets/facebook-button.js +2 -0
  95. package/dist/types/widgets/facebook-button.js.map +1 -0
  96. package/dist/types/widgets/facebook-comments.d.ts +11 -0
  97. package/dist/types/widgets/facebook-comments.d.ts.map +1 -0
  98. package/dist/types/widgets/facebook-comments.js +2 -0
  99. package/dist/types/widgets/facebook-comments.js.map +1 -0
  100. package/dist/types/widgets/facebook-embed.d.ts +18 -0
  101. package/dist/types/widgets/facebook-embed.d.ts.map +1 -0
  102. package/dist/types/widgets/facebook-embed.js +2 -0
  103. package/dist/types/widgets/facebook-embed.js.map +1 -0
  104. package/dist/types/widgets/facebook-page.d.ts +17 -0
  105. package/dist/types/widgets/facebook-page.d.ts.map +1 -0
  106. package/dist/types/widgets/facebook-page.js +2 -0
  107. package/dist/types/widgets/facebook-page.js.map +1 -0
  108. package/dist/types/widgets/flip-box.d.ts +127 -0
  109. package/dist/types/widgets/flip-box.d.ts.map +1 -0
  110. package/dist/types/widgets/flip-box.js +2 -0
  111. package/dist/types/widgets/flip-box.js.map +1 -0
  112. package/dist/types/widgets/form.d.ts +132 -0
  113. package/dist/types/widgets/form.d.ts.map +1 -0
  114. package/dist/types/widgets/form.js +2 -0
  115. package/dist/types/widgets/form.js.map +1 -0
  116. package/dist/types/widgets/gallery.d.ts +100 -0
  117. package/dist/types/widgets/gallery.d.ts.map +1 -0
  118. package/dist/types/widgets/gallery.js +2 -0
  119. package/dist/types/widgets/gallery.js.map +1 -0
  120. package/dist/types/widgets/global.d.ts +5 -0
  121. package/dist/types/widgets/global.d.ts.map +1 -0
  122. package/dist/types/widgets/global.js +2 -0
  123. package/dist/types/widgets/global.js.map +1 -0
  124. package/dist/types/widgets/google-maps.d.ts +24 -0
  125. package/dist/types/widgets/google-maps.d.ts.map +1 -0
  126. package/dist/types/widgets/google-maps.js +2 -0
  127. package/dist/types/widgets/google-maps.js.map +1 -0
  128. package/dist/types/widgets/heading.d.ts +18 -0
  129. package/dist/types/widgets/heading.d.ts.map +1 -0
  130. package/dist/types/widgets/heading.js +2 -0
  131. package/dist/types/widgets/heading.js.map +1 -0
  132. package/dist/types/widgets/hotspot.d.ts +53 -0
  133. package/dist/types/widgets/hotspot.d.ts.map +1 -0
  134. package/dist/types/widgets/hotspot.js +2 -0
  135. package/dist/types/widgets/hotspot.js.map +1 -0
  136. package/dist/types/widgets/html.d.ts +5 -0
  137. package/dist/types/widgets/html.d.ts.map +1 -0
  138. package/dist/types/widgets/html.js +2 -0
  139. package/dist/types/widgets/html.js.map +1 -0
  140. package/dist/types/widgets/icon-box.d.ts +39 -0
  141. package/dist/types/widgets/icon-box.d.ts.map +1 -0
  142. package/dist/types/widgets/icon-box.js +2 -0
  143. package/dist/types/widgets/icon-box.js.map +1 -0
  144. package/dist/types/widgets/icon-list.d.ts +35 -0
  145. package/dist/types/widgets/icon-list.d.ts.map +1 -0
  146. package/dist/types/widgets/icon-list.js +2 -0
  147. package/dist/types/widgets/icon-list.js.map +1 -0
  148. package/dist/types/widgets/icon.d.ts +22 -0
  149. package/dist/types/widgets/icon.d.ts.map +1 -0
  150. package/dist/types/widgets/icon.js +2 -0
  151. package/dist/types/widgets/icon.js.map +1 -0
  152. package/dist/types/widgets/image-box.d.ts +60 -0
  153. package/dist/types/widgets/image-box.d.ts.map +1 -0
  154. package/dist/types/widgets/image-box.js +2 -0
  155. package/dist/types/widgets/image-box.js.map +1 -0
  156. package/dist/types/widgets/image-carousel.d.ts +72 -0
  157. package/dist/types/widgets/image-carousel.d.ts.map +1 -0
  158. package/dist/types/widgets/image-carousel.js +2 -0
  159. package/dist/types/widgets/image-carousel.js.map +1 -0
  160. package/dist/types/widgets/image-gallery.d.ts +36 -0
  161. package/dist/types/widgets/image-gallery.d.ts.map +1 -0
  162. package/dist/types/widgets/image-gallery.js +2 -0
  163. package/dist/types/widgets/image-gallery.js.map +1 -0
  164. package/dist/types/widgets/image.d.ts +55 -0
  165. package/dist/types/widgets/image.d.ts.map +1 -0
  166. package/dist/types/widgets/image.js +2 -0
  167. package/dist/types/widgets/image.js.map +1 -0
  168. package/dist/types/widgets/login.d.ts +65 -0
  169. package/dist/types/widgets/login.d.ts.map +1 -0
  170. package/dist/types/widgets/login.js +2 -0
  171. package/dist/types/widgets/login.js.map +1 -0
  172. package/dist/types/widgets/loop-carousel.d.ts +10 -0
  173. package/dist/types/widgets/loop-carousel.d.ts.map +1 -0
  174. package/dist/types/widgets/loop-carousel.js +2 -0
  175. package/dist/types/widgets/loop-carousel.js.map +1 -0
  176. package/dist/types/widgets/loop-grid.d.ts +34 -0
  177. package/dist/types/widgets/loop-grid.d.ts.map +1 -0
  178. package/dist/types/widgets/loop-grid.js +2 -0
  179. package/dist/types/widgets/loop-grid.js.map +1 -0
  180. package/dist/types/widgets/lottie.d.ts +55 -0
  181. package/dist/types/widgets/lottie.d.ts.map +1 -0
  182. package/dist/types/widgets/lottie.js +2 -0
  183. package/dist/types/widgets/lottie.js.map +1 -0
  184. package/dist/types/widgets/media-carousel.d.ts +36 -0
  185. package/dist/types/widgets/media-carousel.d.ts.map +1 -0
  186. package/dist/types/widgets/media-carousel.js +2 -0
  187. package/dist/types/widgets/media-carousel.js.map +1 -0
  188. package/dist/types/widgets/mega-menu.d.ts +177 -0
  189. package/dist/types/widgets/mega-menu.d.ts.map +1 -0
  190. package/dist/types/widgets/mega-menu.js +2 -0
  191. package/dist/types/widgets/mega-menu.js.map +1 -0
  192. package/dist/types/widgets/menu-anchor.d.ts +6 -0
  193. package/dist/types/widgets/menu-anchor.d.ts.map +1 -0
  194. package/dist/types/widgets/menu-anchor.js +2 -0
  195. package/dist/types/widgets/menu-anchor.js.map +1 -0
  196. package/dist/types/widgets/nav-menu.d.ts +92 -0
  197. package/dist/types/widgets/nav-menu.d.ts.map +1 -0
  198. package/dist/types/widgets/nav-menu.js +2 -0
  199. package/dist/types/widgets/nav-menu.js.map +1 -0
  200. package/dist/types/widgets/nested-carousel.d.ts +24 -0
  201. package/dist/types/widgets/nested-carousel.d.ts.map +1 -0
  202. package/dist/types/widgets/nested-carousel.js +2 -0
  203. package/dist/types/widgets/nested-carousel.js.map +1 -0
  204. package/dist/types/widgets/off-canvas.d.ts +39 -0
  205. package/dist/types/widgets/off-canvas.d.ts.map +1 -0
  206. package/dist/types/widgets/off-canvas.js +2 -0
  207. package/dist/types/widgets/off-canvas.js.map +1 -0
  208. package/dist/types/widgets/paypal-button.d.ts +8 -0
  209. package/dist/types/widgets/paypal-button.d.ts.map +1 -0
  210. package/dist/types/widgets/paypal-button.js +2 -0
  211. package/dist/types/widgets/paypal-button.js.map +1 -0
  212. package/dist/types/widgets/portfolio.d.ts +30 -0
  213. package/dist/types/widgets/portfolio.d.ts.map +1 -0
  214. package/dist/types/widgets/portfolio.js +2 -0
  215. package/dist/types/widgets/portfolio.js.map +1 -0
  216. package/dist/types/widgets/post-comments.d.ts +8 -0
  217. package/dist/types/widgets/post-comments.d.ts.map +1 -0
  218. package/dist/types/widgets/post-comments.js +2 -0
  219. package/dist/types/widgets/post-comments.js.map +1 -0
  220. package/dist/types/widgets/post-info.d.ts +47 -0
  221. package/dist/types/widgets/post-info.d.ts.map +1 -0
  222. package/dist/types/widgets/post-info.js +2 -0
  223. package/dist/types/widgets/post-info.js.map +1 -0
  224. package/dist/types/widgets/post-navigation.d.ts +36 -0
  225. package/dist/types/widgets/post-navigation.d.ts.map +1 -0
  226. package/dist/types/widgets/post-navigation.js +2 -0
  227. package/dist/types/widgets/post-navigation.js.map +1 -0
  228. package/dist/types/widgets/posts.d.ts +5 -0
  229. package/dist/types/widgets/posts.d.ts.map +1 -0
  230. package/dist/types/widgets/posts.js +2 -0
  231. package/dist/types/widgets/posts.js.map +1 -0
  232. package/dist/types/widgets/price-list.d.ts +30 -0
  233. package/dist/types/widgets/price-list.d.ts.map +1 -0
  234. package/dist/types/widgets/price-list.js +2 -0
  235. package/dist/types/widgets/price-list.js.map +1 -0
  236. package/dist/types/widgets/price-table.d.ts +101 -0
  237. package/dist/types/widgets/price-table.d.ts.map +1 -0
  238. package/dist/types/widgets/price-table.js +2 -0
  239. package/dist/types/widgets/price-table.js.map +1 -0
  240. package/dist/types/widgets/progress-tracker.d.ts +36 -0
  241. package/dist/types/widgets/progress-tracker.d.ts.map +1 -0
  242. package/dist/types/widgets/progress-tracker.js +2 -0
  243. package/dist/types/widgets/progress-tracker.js.map +1 -0
  244. package/dist/types/widgets/progress.d.ts +24 -0
  245. package/dist/types/widgets/progress.d.ts.map +1 -0
  246. package/dist/types/widgets/progress.js +2 -0
  247. package/dist/types/widgets/progress.js.map +1 -0
  248. package/dist/types/widgets/rating.d.ts +13 -0
  249. package/dist/types/widgets/rating.d.ts.map +1 -0
  250. package/dist/types/widgets/rating.js +2 -0
  251. package/dist/types/widgets/rating.js.map +1 -0
  252. package/dist/types/widgets/read-more.d.ts +6 -0
  253. package/dist/types/widgets/read-more.d.ts.map +1 -0
  254. package/dist/types/widgets/read-more.js +2 -0
  255. package/dist/types/widgets/read-more.js.map +1 -0
  256. package/dist/types/widgets/reviews.d.ts +40 -0
  257. package/dist/types/widgets/reviews.d.ts.map +1 -0
  258. package/dist/types/widgets/reviews.js +2 -0
  259. package/dist/types/widgets/reviews.js.map +1 -0
  260. package/dist/types/widgets/search-form.d.ts +46 -0
  261. package/dist/types/widgets/search-form.d.ts.map +1 -0
  262. package/dist/types/widgets/search-form.js +2 -0
  263. package/dist/types/widgets/search-form.js.map +1 -0
  264. package/dist/types/widgets/search.d.ts +96 -0
  265. package/dist/types/widgets/search.d.ts.map +1 -0
  266. package/dist/types/widgets/search.js +2 -0
  267. package/dist/types/widgets/search.js.map +1 -0
  268. package/dist/types/widgets/share-buttons.d.ts +30 -0
  269. package/dist/types/widgets/share-buttons.d.ts.map +1 -0
  270. package/dist/types/widgets/share-buttons.js +2 -0
  271. package/dist/types/widgets/share-buttons.js.map +1 -0
  272. package/dist/types/widgets/shortcode.d.ts +5 -0
  273. package/dist/types/widgets/shortcode.d.ts.map +1 -0
  274. package/dist/types/widgets/shortcode.js +2 -0
  275. package/dist/types/widgets/shortcode.js.map +1 -0
  276. package/dist/types/widgets/sidebar.d.ts +5 -0
  277. package/dist/types/widgets/sidebar.d.ts.map +1 -0
  278. package/dist/types/widgets/sidebar.js +2 -0
  279. package/dist/types/widgets/sidebar.js.map +1 -0
  280. package/dist/types/widgets/sitemap.d.ts +40 -0
  281. package/dist/types/widgets/sitemap.d.ts.map +1 -0
  282. package/dist/types/widgets/sitemap.js +2 -0
  283. package/dist/types/widgets/sitemap.js.map +1 -0
  284. package/dist/types/widgets/slides.d.ts +91 -0
  285. package/dist/types/widgets/slides.d.ts.map +1 -0
  286. package/dist/types/widgets/slides.js +2 -0
  287. package/dist/types/widgets/slides.js.map +1 -0
  288. package/dist/types/widgets/social-icons.d.ts +39 -0
  289. package/dist/types/widgets/social-icons.d.ts.map +1 -0
  290. package/dist/types/widgets/social-icons.js +2 -0
  291. package/dist/types/widgets/social-icons.js.map +1 -0
  292. package/dist/types/widgets/spacer.d.ts +6 -0
  293. package/dist/types/widgets/spacer.d.ts.map +1 -0
  294. package/dist/types/widgets/spacer.js +2 -0
  295. package/dist/types/widgets/spacer.js.map +1 -0
  296. package/dist/types/widgets/star-rating.d.ts +20 -0
  297. package/dist/types/widgets/star-rating.d.ts.map +1 -0
  298. package/dist/types/widgets/star-rating.js +2 -0
  299. package/dist/types/widgets/star-rating.js.map +1 -0
  300. package/dist/types/widgets/stripe-button.d.ts +14 -0
  301. package/dist/types/widgets/stripe-button.d.ts.map +1 -0
  302. package/dist/types/widgets/stripe-button.js +2 -0
  303. package/dist/types/widgets/stripe-button.js.map +1 -0
  304. package/dist/types/widgets/table-of-contents.d.ts +54 -0
  305. package/dist/types/widgets/table-of-contents.d.ts.map +1 -0
  306. package/dist/types/widgets/table-of-contents.js +2 -0
  307. package/dist/types/widgets/table-of-contents.js.map +1 -0
  308. package/dist/types/widgets/tabs.d.ts +27 -0
  309. package/dist/types/widgets/tabs.d.ts.map +1 -0
  310. package/dist/types/widgets/tabs.js +2 -0
  311. package/dist/types/widgets/tabs.js.map +1 -0
  312. package/dist/types/widgets/taxonomy-filter.d.ts +74 -0
  313. package/dist/types/widgets/taxonomy-filter.d.ts.map +1 -0
  314. package/dist/types/widgets/taxonomy-filter.js +2 -0
  315. package/dist/types/widgets/taxonomy-filter.js.map +1 -0
  316. package/dist/types/widgets/template.d.ts +5 -0
  317. package/dist/types/widgets/template.d.ts.map +1 -0
  318. package/dist/types/widgets/template.js +2 -0
  319. package/dist/types/widgets/template.js.map +1 -0
  320. package/dist/types/widgets/testimonial-carousel.d.ts +40 -0
  321. package/dist/types/widgets/testimonial-carousel.d.ts.map +1 -0
  322. package/dist/types/widgets/testimonial-carousel.js +2 -0
  323. package/dist/types/widgets/testimonial-carousel.js.map +1 -0
  324. package/dist/types/widgets/testimonial.d.ts +35 -0
  325. package/dist/types/widgets/testimonial.d.ts.map +1 -0
  326. package/dist/types/widgets/testimonial.js +2 -0
  327. package/dist/types/widgets/testimonial.js.map +1 -0
  328. package/dist/types/widgets/text-editor.d.ts +28 -0
  329. package/dist/types/widgets/text-editor.d.ts.map +1 -0
  330. package/dist/types/widgets/text-editor.js +2 -0
  331. package/dist/types/widgets/text-editor.js.map +1 -0
  332. package/dist/types/widgets/theme-archive-title.d.ts +5 -0
  333. package/dist/types/widgets/theme-archive-title.d.ts.map +1 -0
  334. package/dist/types/widgets/theme-archive-title.js +2 -0
  335. package/dist/types/widgets/theme-archive-title.js.map +1 -0
  336. package/dist/types/widgets/theme-page-title.d.ts +5 -0
  337. package/dist/types/widgets/theme-page-title.d.ts.map +1 -0
  338. package/dist/types/widgets/theme-page-title.js +2 -0
  339. package/dist/types/widgets/theme-page-title.js.map +1 -0
  340. package/dist/types/widgets/theme-post-content.d.ts +7 -0
  341. package/dist/types/widgets/theme-post-content.d.ts.map +1 -0
  342. package/dist/types/widgets/theme-post-content.js +2 -0
  343. package/dist/types/widgets/theme-post-content.js.map +1 -0
  344. package/dist/types/widgets/theme-post-excerpt.d.ts +14 -0
  345. package/dist/types/widgets/theme-post-excerpt.d.ts.map +1 -0
  346. package/dist/types/widgets/theme-post-excerpt.js +2 -0
  347. package/dist/types/widgets/theme-post-excerpt.js.map +1 -0
  348. package/dist/types/widgets/theme-post-featured-image.d.ts +5 -0
  349. package/dist/types/widgets/theme-post-featured-image.d.ts.map +1 -0
  350. package/dist/types/widgets/theme-post-featured-image.js +2 -0
  351. package/dist/types/widgets/theme-post-featured-image.js.map +1 -0
  352. package/dist/types/widgets/theme-post-title.d.ts +5 -0
  353. package/dist/types/widgets/theme-post-title.d.ts.map +1 -0
  354. package/dist/types/widgets/theme-post-title.js +2 -0
  355. package/dist/types/widgets/theme-post-title.js.map +1 -0
  356. package/dist/types/widgets/theme-site-logo.d.ts +4 -0
  357. package/dist/types/widgets/theme-site-logo.d.ts.map +1 -0
  358. package/dist/types/widgets/theme-site-logo.js +2 -0
  359. package/dist/types/widgets/theme-site-logo.js.map +1 -0
  360. package/dist/types/widgets/theme-site-title.d.ts +5 -0
  361. package/dist/types/widgets/theme-site-title.d.ts.map +1 -0
  362. package/dist/types/widgets/theme-site-title.js +2 -0
  363. package/dist/types/widgets/theme-site-title.js.map +1 -0
  364. package/dist/types/widgets/toggle.d.ts +33 -0
  365. package/dist/types/widgets/toggle.d.ts.map +1 -0
  366. package/dist/types/widgets/toggle.js +2 -0
  367. package/dist/types/widgets/toggle.js.map +1 -0
  368. package/dist/types/widgets/video-playlist.d.ts +101 -0
  369. package/dist/types/widgets/video-playlist.d.ts.map +1 -0
  370. package/dist/types/widgets/video-playlist.js +2 -0
  371. package/dist/types/widgets/video-playlist.js.map +1 -0
  372. package/dist/types/widgets/video.d.ts +65 -0
  373. package/dist/types/widgets/video.d.ts.map +1 -0
  374. package/dist/types/widgets/video.js +2 -0
  375. package/dist/types/widgets/video.js.map +1 -0
  376. package/dist/types/widgets/wc-add-to-cart.d.ts +9 -0
  377. package/dist/types/widgets/wc-add-to-cart.d.ts.map +1 -0
  378. package/dist/types/widgets/wc-add-to-cart.js +2 -0
  379. package/dist/types/widgets/wc-add-to-cart.js.map +1 -0
  380. package/dist/types/widgets/wc-archive-products.d.ts +11 -0
  381. package/dist/types/widgets/wc-archive-products.d.ts.map +1 -0
  382. package/dist/types/widgets/wc-archive-products.js +2 -0
  383. package/dist/types/widgets/wc-archive-products.js.map +1 -0
  384. package/dist/types/widgets/wc-categories.d.ts +37 -0
  385. package/dist/types/widgets/wc-categories.d.ts.map +1 -0
  386. package/dist/types/widgets/wc-categories.js +2 -0
  387. package/dist/types/widgets/wc-categories.js.map +1 -0
  388. package/dist/types/widgets/wc-elements.d.ts +6 -0
  389. package/dist/types/widgets/wc-elements.d.ts.map +1 -0
  390. package/dist/types/widgets/wc-elements.js +2 -0
  391. package/dist/types/widgets/wc-elements.js.map +1 -0
  392. package/dist/types/widgets/wc-single-elements.d.ts +5 -0
  393. package/dist/types/widgets/wc-single-elements.d.ts.map +1 -0
  394. package/dist/types/widgets/wc-single-elements.js +2 -0
  395. package/dist/types/widgets/wc-single-elements.js.map +1 -0
  396. package/dist/types/widgets/woocommerce-archive-description.d.ts +8 -0
  397. package/dist/types/widgets/woocommerce-archive-description.d.ts.map +1 -0
  398. package/dist/types/widgets/woocommerce-archive-description.js +2 -0
  399. package/dist/types/widgets/woocommerce-archive-description.js.map +1 -0
  400. package/dist/types/widgets/woocommerce-breadcrumb.d.ts +9 -0
  401. package/dist/types/widgets/woocommerce-breadcrumb.d.ts.map +1 -0
  402. package/dist/types/widgets/woocommerce-breadcrumb.js +2 -0
  403. package/dist/types/widgets/woocommerce-breadcrumb.js.map +1 -0
  404. package/dist/types/widgets/woocommerce-cart.d.ts +157 -0
  405. package/dist/types/widgets/woocommerce-cart.d.ts.map +1 -0
  406. package/dist/types/widgets/woocommerce-cart.js +2 -0
  407. package/dist/types/widgets/woocommerce-cart.js.map +1 -0
  408. package/dist/types/widgets/woocommerce-category-image.d.ts +5 -0
  409. package/dist/types/widgets/woocommerce-category-image.d.ts.map +1 -0
  410. package/dist/types/widgets/woocommerce-category-image.js +2 -0
  411. package/dist/types/widgets/woocommerce-category-image.js.map +1 -0
  412. package/dist/types/widgets/woocommerce-checkout-page.d.ts +247 -0
  413. package/dist/types/widgets/woocommerce-checkout-page.d.ts.map +1 -0
  414. package/dist/types/widgets/woocommerce-checkout-page.js +2 -0
  415. package/dist/types/widgets/woocommerce-checkout-page.js.map +1 -0
  416. package/dist/types/widgets/woocommerce-menu-cart.d.ts +136 -0
  417. package/dist/types/widgets/woocommerce-menu-cart.d.ts.map +1 -0
  418. package/dist/types/widgets/woocommerce-menu-cart.js +2 -0
  419. package/dist/types/widgets/woocommerce-menu-cart.js.map +1 -0
  420. package/dist/types/widgets/woocommerce-my-account.d.ts +132 -0
  421. package/dist/types/widgets/woocommerce-my-account.d.ts.map +1 -0
  422. package/dist/types/widgets/woocommerce-my-account.js +2 -0
  423. package/dist/types/widgets/woocommerce-my-account.js.map +1 -0
  424. package/dist/types/widgets/woocommerce-notices.d.ts +5 -0
  425. package/dist/types/widgets/woocommerce-notices.d.ts.map +1 -0
  426. package/dist/types/widgets/woocommerce-notices.js +2 -0
  427. package/dist/types/widgets/woocommerce-notices.js.map +1 -0
  428. package/dist/types/widgets/woocommerce-product-add-to-cart.d.ts +64 -0
  429. package/dist/types/widgets/woocommerce-product-add-to-cart.d.ts.map +1 -0
  430. package/dist/types/widgets/woocommerce-product-add-to-cart.js +2 -0
  431. package/dist/types/widgets/woocommerce-product-add-to-cart.js.map +1 -0
  432. package/dist/types/widgets/woocommerce-product-additional-information.d.ts +10 -0
  433. package/dist/types/widgets/woocommerce-product-additional-information.d.ts.map +1 -0
  434. package/dist/types/widgets/woocommerce-product-additional-information.js +2 -0
  435. package/dist/types/widgets/woocommerce-product-additional-information.js.map +1 -0
  436. package/dist/types/widgets/woocommerce-product-content.d.ts +5 -0
  437. package/dist/types/widgets/woocommerce-product-content.d.ts.map +1 -0
  438. package/dist/types/widgets/woocommerce-product-content.js +2 -0
  439. package/dist/types/widgets/woocommerce-product-content.js.map +1 -0
  440. package/dist/types/widgets/woocommerce-product-data-tabs.d.ts +21 -0
  441. package/dist/types/widgets/woocommerce-product-data-tabs.d.ts.map +1 -0
  442. package/dist/types/widgets/woocommerce-product-data-tabs.js +2 -0
  443. package/dist/types/widgets/woocommerce-product-data-tabs.js.map +1 -0
  444. package/dist/types/widgets/woocommerce-product-images.d.ts +32 -0
  445. package/dist/types/widgets/woocommerce-product-images.d.ts.map +1 -0
  446. package/dist/types/widgets/woocommerce-product-images.js +2 -0
  447. package/dist/types/widgets/woocommerce-product-images.js.map +1 -0
  448. package/dist/types/widgets/woocommerce-product-meta.d.ts +26 -0
  449. package/dist/types/widgets/woocommerce-product-meta.d.ts.map +1 -0
  450. package/dist/types/widgets/woocommerce-product-meta.js +2 -0
  451. package/dist/types/widgets/woocommerce-product-meta.js.map +1 -0
  452. package/dist/types/widgets/woocommerce-product-price.d.ts +13 -0
  453. package/dist/types/widgets/woocommerce-product-price.d.ts.map +1 -0
  454. package/dist/types/widgets/woocommerce-product-price.js +2 -0
  455. package/dist/types/widgets/woocommerce-product-price.js.map +1 -0
  456. package/dist/types/widgets/woocommerce-product-rating.d.ts +13 -0
  457. package/dist/types/widgets/woocommerce-product-rating.d.ts.map +1 -0
  458. package/dist/types/widgets/woocommerce-product-rating.js +2 -0
  459. package/dist/types/widgets/woocommerce-product-rating.js.map +1 -0
  460. package/dist/types/widgets/woocommerce-product-related.d.ts +17 -0
  461. package/dist/types/widgets/woocommerce-product-related.d.ts.map +1 -0
  462. package/dist/types/widgets/woocommerce-product-related.js +2 -0
  463. package/dist/types/widgets/woocommerce-product-related.js.map +1 -0
  464. package/dist/types/widgets/woocommerce-product-short-description.d.ts +8 -0
  465. package/dist/types/widgets/woocommerce-product-short-description.d.ts.map +1 -0
  466. package/dist/types/widgets/woocommerce-product-short-description.js +2 -0
  467. package/dist/types/widgets/woocommerce-product-short-description.js.map +1 -0
  468. package/dist/types/widgets/woocommerce-product-stock.d.ts +7 -0
  469. package/dist/types/widgets/woocommerce-product-stock.d.ts.map +1 -0
  470. package/dist/types/widgets/woocommerce-product-stock.js +2 -0
  471. package/dist/types/widgets/woocommerce-product-stock.js.map +1 -0
  472. package/dist/types/widgets/woocommerce-product-title.d.ts +5 -0
  473. package/dist/types/widgets/woocommerce-product-title.d.ts.map +1 -0
  474. package/dist/types/widgets/woocommerce-product-title.js +2 -0
  475. package/dist/types/widgets/woocommerce-product-title.js.map +1 -0
  476. package/dist/types/widgets/woocommerce-product-upsell.d.ts +15 -0
  477. package/dist/types/widgets/woocommerce-product-upsell.d.ts.map +1 -0
  478. package/dist/types/widgets/woocommerce-product-upsell.js +2 -0
  479. package/dist/types/widgets/woocommerce-product-upsell.js.map +1 -0
  480. package/dist/types/widgets/woocommerce-products.d.ts +15 -0
  481. package/dist/types/widgets/woocommerce-products.d.ts.map +1 -0
  482. package/dist/types/widgets/woocommerce-products.js +2 -0
  483. package/dist/types/widgets/woocommerce-products.js.map +1 -0
  484. package/dist/types/widgets/woocommerce-purchase-summary.d.ts +96 -0
  485. package/dist/types/widgets/woocommerce-purchase-summary.d.ts.map +1 -0
  486. package/dist/types/widgets/woocommerce-purchase-summary.js +2 -0
  487. package/dist/types/widgets/woocommerce-purchase-summary.js.map +1 -0
  488. package/package.json +3 -3
@@ -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 targetColumn = null;
1284
+ let targetContainer = null;
1260
1285
  if (args.column_id) {
1261
- targetColumn = ElementorHelpers.findElementRecursive(elementorData, args.column_id);
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 && section.elements && section.elements.length > 0) {
1266
- targetColumn = section.elements[0]; // Use first column
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 (!targetColumn) {
1270
- return ResponseHelpers.createErrorResponse(`Target column not found. Please specify a valid section_id or column_id`, 'TARGET_COLUMN_NOT_FOUND', 'NOT_FOUND', 'Could not locate target column for widget placement');
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 < targetColumn.elements.length) {
1281
- targetColumn.elements.splice(args.position, 0, newWidget);
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
- targetColumn.elements.push(newWidget);
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
- target_column_id: targetColumn.id,
1295
- position: args.position || targetColumn.elements.length - 1,
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
- return ResponseHelpers.createErrorResponse('Rebuild page structure not yet implemented. Please use WordPress admin interface to rebuild page structure.', 'NOT_IMPLEMENTED', 'FEATURE_NOT_AVAILABLE', 'Use WordPress admin interface for page structure rebuilding');
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