@elementor/editor-app-bar 4.0.5 → 4.0.8

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/dist/index.mjs CHANGED
@@ -189,9 +189,9 @@ var documentOptionsMenu = createMenu2({
189
189
  import { injectIntoTop as injectIntoTop2 } from "@elementor/editor";
190
190
 
191
191
  // src/components/app-bar.tsx
192
- import * as React20 from "react";
192
+ import * as React22 from "react";
193
193
  import { __useActiveDocument as useActiveDocument } from "@elementor/editor-documents";
194
- import { AppBar as BaseAppBar, Box as Box3, Divider as Divider2, Grid, ThemeProvider as ThemeProvider2, Toolbar } from "@elementor/ui";
194
+ import { AppBar as BaseAppBar, Box as Box3, Divider as Divider2, Grid, ThemeProvider as ThemeProvider3, Toolbar } from "@elementor/ui";
195
195
 
196
196
  // src/components/locations/main-menu-location.tsx
197
197
  import * as React10 from "react";
@@ -329,33 +329,145 @@ function ResponsiveLocation() {
329
329
  }
330
330
 
331
331
  // src/components/locations/tools-menu-location.tsx
332
- import * as React18 from "react";
332
+ import * as React20 from "react";
333
333
 
334
- // src/components/ui/toolbar-menu.tsx
334
+ // src/extensions/angie/components/angie-guide-location.tsx
335
+ import * as React15 from "react";
336
+ import { useEffect, useState as useState2 } from "react";
337
+ import { ThemeProvider } from "@elementor/editor-ui";
338
+ import { useMixpanel } from "@elementor/events";
339
+ import { Infotip } from "@elementor/ui";
340
+
341
+ // src/extensions/angie/angie-consts.ts
342
+ import { __ as __2 } from "@wordpress/i18n";
343
+ var ANGIE_GUIDE_TOGGLE_EVENT = "elementor/editor/toggle-angie-guide";
344
+ var CREATE_WIDGET_EVENT = "elementor/editor/create-widget";
345
+ var ANGIE_BUTTON_ARIA_LABEL = __2("Angie", "elementor");
346
+ var ANGIE_LEARN_MORE_URL = "https://go.elementor.com/angie-learn-more";
347
+ var ANGIE_DESCRIPTION = __2(
348
+ "Angie lets you generate custom widgets, sections, and code using simple instructions.",
349
+ "elementor"
350
+ );
351
+ var AI_WIDGET_CTA_VIEWED_EVENT = "ai_widget_cta_viewed";
352
+ var ANGIE_TOP_BAR_PROMOTION_IMAGE_URL = "https://assets.elementor.com/packages/v1/images/angie-top-bar-promotion.svg";
353
+ var ANGIE_TOP_BAR_DESCRIPTION = __2("Build custom widgets using simple instructions.", "elementor");
354
+
355
+ // src/extensions/angie/components/angie-guide-card.tsx
335
356
  import * as React14 from "react";
336
- import { Stack as Stack2 } from "@elementor/ui";
357
+ import { Button, Chip, ClickAwayListener, CloseButton, Image, Stack as Stack2, Typography } from "@elementor/ui";
358
+ import { __ as __3 } from "@wordpress/i18n";
359
+ function AngieGuideCard({ imageUrl, description, learnMoreUrl, onInstall, onClose }) {
360
+ return /* @__PURE__ */ React14.createElement(ClickAwayListener, { onClickAway: onClose }, /* @__PURE__ */ React14.createElement(Stack2, { sx: { width: 296 }, "data-testid": "e-angie-guide-card" }, /* @__PURE__ */ React14.createElement(Stack2, { direction: "row", alignItems: "center", gap: 1, py: 1, px: 2 }, /* @__PURE__ */ React14.createElement(Typography, { variant: "subtitle2" }, __3("Meet Angie", "elementor")), /* @__PURE__ */ React14.createElement(Chip, { label: __3("New", "elementor"), size: "small", color: "info", variant: "standard" }), /* @__PURE__ */ React14.createElement(
361
+ CloseButton,
362
+ {
363
+ edge: "end",
364
+ sx: { ml: "auto" },
365
+ slotProps: { icon: { fontSize: "small" } },
366
+ onClick: onClose
367
+ }
368
+ )), /* @__PURE__ */ React14.createElement(Image, { src: imageUrl, alt: __3("Angie", "elementor"), sx: { height: 150, width: "100%" } }), /* @__PURE__ */ React14.createElement(Stack2, { px: 2, pt: 1.5, pb: 1 }, /* @__PURE__ */ React14.createElement(Typography, { variant: "body2", color: "secondary" }, description)), /* @__PURE__ */ React14.createElement(Stack2, { direction: "row", justifyContent: "flex-end", gap: 1, pt: 1, pb: 1.5, px: 2 }, /* @__PURE__ */ React14.createElement(
369
+ Button,
370
+ {
371
+ variant: "text",
372
+ size: "small",
373
+ color: "secondary",
374
+ onClick: () => {
375
+ window.open(learnMoreUrl, "_blank", "noopener,noreferrer");
376
+ onClose();
377
+ }
378
+ },
379
+ __3("Learn More", "elementor")
380
+ ), /* @__PURE__ */ React14.createElement(Button, { variant: "contained", size: "small", color: "accent", onClick: onInstall }, __3("Try for free", "elementor")))));
381
+ }
382
+
383
+ // src/extensions/angie/components/angie-guide-location.tsx
384
+ function AngieGuideLocation() {
385
+ const [anchorEl, setAnchorEl] = useState2(null);
386
+ const { dispatchEvent: dispatchEvent2 } = useMixpanel();
387
+ const isOpen = Boolean(anchorEl);
388
+ useEffect(() => {
389
+ const handleToggle = () => {
390
+ setAnchorEl((prev) => {
391
+ if (prev) {
392
+ return null;
393
+ }
394
+ return document.querySelector(`[aria-label="${ANGIE_BUTTON_ARIA_LABEL}"]`);
395
+ });
396
+ };
397
+ window.addEventListener(ANGIE_GUIDE_TOGGLE_EVENT, handleToggle);
398
+ return () => {
399
+ window.removeEventListener(ANGIE_GUIDE_TOGGLE_EVENT, handleToggle);
400
+ };
401
+ }, []);
402
+ const handleClose = () => setAnchorEl(null);
403
+ const handleInstall = async () => {
404
+ dispatchEvent2?.(AI_WIDGET_CTA_VIEWED_EVENT, {
405
+ entry_point: "top_bar_icon"
406
+ });
407
+ window.dispatchEvent(
408
+ new CustomEvent(CREATE_WIDGET_EVENT, {
409
+ detail: {
410
+ entry_point: "top_bar_icon"
411
+ }
412
+ })
413
+ );
414
+ handleClose();
415
+ };
416
+ return /* @__PURE__ */ React15.createElement(ThemeProvider, null, /* @__PURE__ */ React15.createElement(
417
+ Infotip,
418
+ {
419
+ content: /* @__PURE__ */ React15.createElement(
420
+ AngieGuideCard,
421
+ {
422
+ imageUrl: ANGIE_TOP_BAR_PROMOTION_IMAGE_URL,
423
+ description: ANGIE_TOP_BAR_DESCRIPTION,
424
+ learnMoreUrl: ANGIE_LEARN_MORE_URL,
425
+ onInstall: handleInstall,
426
+ onClose: handleClose
427
+ }
428
+ ),
429
+ placement: "bottom-start",
430
+ open: isOpen,
431
+ disableHoverListener: true,
432
+ PopperProps: {
433
+ anchorEl,
434
+ modifiers: [
435
+ {
436
+ name: "offset",
437
+ options: { offset: [-4, -4] }
438
+ }
439
+ ]
440
+ }
441
+ },
442
+ /* @__PURE__ */ React15.createElement("span", null)
443
+ ));
444
+ }
445
+
446
+ // src/components/ui/toolbar-menu.tsx
447
+ import * as React16 from "react";
448
+ import { Stack as Stack3 } from "@elementor/ui";
337
449
  function ToolbarMenu({ children, ...props }) {
338
- return /* @__PURE__ */ React14.createElement(MenuContextProvider, { type: "toolbar" }, /* @__PURE__ */ React14.createElement(Stack2, { sx: { px: 1.5 }, spacing: 1.5, direction: "row", alignItems: "center", ...props }, children));
450
+ return /* @__PURE__ */ React16.createElement(MenuContextProvider, { type: "toolbar" }, /* @__PURE__ */ React16.createElement(Stack3, { sx: { px: 1.5 }, spacing: 1.5, direction: "row", alignItems: "center", ...props }, children));
339
451
  }
340
452
 
341
453
  // src/components/ui/toolbar-menu-more.tsx
342
- import * as React15 from "react";
454
+ import * as React17 from "react";
343
455
  import { DotsVerticalIcon } from "@elementor/icons";
344
456
  import { bindMenu as bindMenu2, bindTrigger as bindTrigger2, usePopupState as usePopupState2 } from "@elementor/ui";
345
- import { __ as __2 } from "@wordpress/i18n";
457
+ import { __ as __4 } from "@wordpress/i18n";
346
458
  function ToolbarMenuMore({ children, id }) {
347
459
  const popupState = usePopupState2({
348
460
  variant: "popover",
349
461
  popupId: id
350
462
  });
351
- return /* @__PURE__ */ React15.createElement(React15.Fragment, null, /* @__PURE__ */ React15.createElement(ToolbarMenuItem, { ...bindTrigger2(popupState), title: __2("More", "elementor") }, /* @__PURE__ */ React15.createElement(DotsVerticalIcon, null)), /* @__PURE__ */ React15.createElement(PopoverMenu, { onClick: popupState.close, ...bindMenu2(popupState) }, children));
463
+ return /* @__PURE__ */ React17.createElement(React17.Fragment, null, /* @__PURE__ */ React17.createElement(ToolbarMenuItem, { ...bindTrigger2(popupState), title: __4("More", "elementor") }, /* @__PURE__ */ React17.createElement(DotsVerticalIcon, null)), /* @__PURE__ */ React17.createElement(PopoverMenu, { onClick: popupState.close, ...bindMenu2(popupState) }, children));
352
464
  }
353
465
 
354
466
  // src/components/locations/integrations-menu-location.tsx
355
- import * as React16 from "react";
467
+ import * as React18 from "react";
356
468
  import { PlugIcon } from "@elementor/icons";
357
469
  import { bindMenu as bindMenu3, bindTrigger as bindTrigger3, usePopupState as usePopupState3 } from "@elementor/ui";
358
- import { __ as __3 } from "@wordpress/i18n";
470
+ import { __ as __5 } from "@wordpress/i18n";
359
471
  var { useMenuItems: useMenuItems2 } = integrationsMenu;
360
472
  function IntegrationsMenuLocation() {
361
473
  const menuItems = useMenuItems2();
@@ -366,7 +478,7 @@ function IntegrationsMenuLocation() {
366
478
  if (menuItems.default.length === 0) {
367
479
  return null;
368
480
  }
369
- return /* @__PURE__ */ React16.createElement(React16.Fragment, null, /* @__PURE__ */ React16.createElement(ToolbarMenuItem, { ...bindTrigger3(popupState), title: __3("Integrations", "elementor") }, /* @__PURE__ */ React16.createElement(PlugIcon, null)), /* @__PURE__ */ React16.createElement(
481
+ return /* @__PURE__ */ React18.createElement(React18.Fragment, null, /* @__PURE__ */ React18.createElement(ToolbarMenuItem, { ...bindTrigger3(popupState), title: __5("Integrations", "elementor") }, /* @__PURE__ */ React18.createElement(PlugIcon, null)), /* @__PURE__ */ React18.createElement(
370
482
  PopoverMenu,
371
483
  {
372
484
  onClick: popupState.close,
@@ -374,32 +486,32 @@ function IntegrationsMenuLocation() {
374
486
  marginThreshold: 8,
375
487
  open: popupState.isOpen
376
488
  },
377
- menuItems.default.map(({ MenuItem: IntegrationsMenuItem, id }) => /* @__PURE__ */ React16.createElement(IntegrationsMenuItem, { key: id }))
489
+ menuItems.default.map(({ MenuItem: IntegrationsMenuItem, id }) => /* @__PURE__ */ React18.createElement(IntegrationsMenuItem, { key: id }))
378
490
  ));
379
491
  }
380
492
 
381
493
  // src/components/locations/send-feedback-popup-location.tsx
382
- import * as React17 from "react";
383
- import { useEffect, useState as useState2 } from "react";
384
- import { ThemeProvider } from "@elementor/editor-ui";
494
+ import * as React19 from "react";
495
+ import { useEffect as useEffect2, useState as useState3 } from "react";
496
+ import { ThemeProvider as ThemeProvider2 } from "@elementor/editor-ui";
385
497
  import { isExperimentActive } from "@elementor/editor-v1-adapters";
386
- import { useMixpanel } from "@elementor/events";
498
+ import { useMixpanel as useMixpanel2 } from "@elementor/events";
387
499
  import { httpService } from "@elementor/http-client";
388
500
  import { AlertCircleIcon, CheckIcon } from "@elementor/icons";
389
501
  import {
390
502
  bindDialog,
391
- Button,
392
- CloseButton,
503
+ Button as Button2,
504
+ CloseButton as CloseButton2,
393
505
  Dialog,
394
506
  DialogContent,
395
507
  DialogHeader,
396
508
  DialogTitle,
397
509
  Popover,
398
- Stack as Stack3,
510
+ Stack as Stack4,
399
511
  TextField,
400
512
  usePopupState as usePopupState4
401
513
  } from "@elementor/ui";
402
- import { __ as __4 } from "@wordpress/i18n";
514
+ import { __ as __6 } from "@wordpress/i18n";
403
515
 
404
516
  // src/extensions/feedback/feedback-consts.ts
405
517
  var EXPERIMENT_NAME = "in_editor_feedback";
@@ -413,23 +525,23 @@ var checkIfUserIsConnected = () => {
413
525
  function SendFeedbackPopupLocation() {
414
526
  const isActive = isExperimentActive(EXPERIMENT_NAME);
415
527
  const extendedWindow = window;
416
- const [isUserConnected, setIsUserConnected] = useState2(checkIfUserIsConnected());
528
+ const [isUserConnected, setIsUserConnected] = useState3(checkIfUserIsConnected());
417
529
  const connectUrl = extendedWindow?.elementor?.config.user.top_bar.connect_url;
418
- const [feedbackContent, setFeedbackContent] = useState2("");
419
- const [feedbackResult, setFeedbackResult] = useState2(null);
420
- const [submitDisabled, setSubmitDisabled] = useState2(true);
421
- const { dispatchEvent: trackEvent = (...args) => void args } = useMixpanel();
530
+ const [feedbackContent, setFeedbackContent] = useState3("");
531
+ const [feedbackResult, setFeedbackResult] = useState3(null);
532
+ const [submitDisabled, setSubmitDisabled] = useState3(true);
533
+ const { dispatchEvent: trackEvent2 = (...args) => void args } = useMixpanel2();
422
534
  const popupState = usePopupState4({
423
535
  variant: "dialog",
424
536
  popupId: FEEDBACK_TOGGLE_EVENT
425
537
  });
426
- const [isFetching, setIsFetching] = useState2(false);
427
- useEffect(() => {
538
+ const [isFetching, setIsFetching] = useState3(false);
539
+ useEffect2(() => {
428
540
  const handler = () => {
429
541
  popupState.toggle();
430
542
  setIsUserConnected(checkIfUserIsConnected());
431
543
  setFeedbackResult(null);
432
- trackEvent("feedback_modal_opened", {
544
+ trackEvent2("feedback_modal_opened", {
433
545
  source: "top_bar",
434
546
  context: "v4_beta"
435
547
  });
@@ -438,13 +550,13 @@ function SendFeedbackPopupLocation() {
438
550
  return () => {
439
551
  window.removeEventListener(FEEDBACK_TOGGLE_EVENT, handler);
440
552
  };
441
- }, [popupState, trackEvent]);
442
- useEffect(() => {
553
+ }, [popupState, trackEvent2]);
554
+ useEffect2(() => {
443
555
  setSubmitDisabled(feedbackContent.trim().length < 10 || !isUserConnected || isFetching);
444
556
  }, [feedbackContent, feedbackResult, isUserConnected, isFetching]);
445
557
  const handleClose = () => {
446
558
  popupState.close();
447
- trackEvent("feedback_modal_closed", {
559
+ trackEvent2("feedback_modal_closed", {
448
560
  feedback_text: feedbackContent
449
561
  });
450
562
  };
@@ -464,7 +576,7 @@ function SendFeedbackPopupLocation() {
464
576
  if (!response.data.success && response.data.code.toString() === "401" || response.data.code.toString() === "403") {
465
577
  setIsUserConnected(false);
466
578
  }
467
- trackEvent(response.data.success ? "feedback_submitted" : "feedback_error", {
579
+ trackEvent2(response.data.success ? "feedback_submitted" : "feedback_error", {
468
580
  feedback_length: feedbackContent.length,
469
581
  error_type: response.data.success ? void 0 : "server",
470
582
  error_message: response.data.success ? void 0 : response.data.message
@@ -474,8 +586,8 @@ function SendFeedbackPopupLocation() {
474
586
  if (!isActive) {
475
587
  return null;
476
588
  }
477
- return /* @__PURE__ */ React17.createElement(ThemeProvider, null, /* @__PURE__ */ React17.createElement(Popover, { ...bindDialog(popupState), onClose: () => handleClose() }, /* @__PURE__ */ React17.createElement(Dialog, { open: popupState.isOpen }, /* @__PURE__ */ React17.createElement(DialogHeader, { style: { width: "100%", minWidth: "35rem" } }, /* @__PURE__ */ React17.createElement(DialogTitle, { style: { width: "100%" } }, /* @__PURE__ */ React17.createElement(
478
- Stack3,
589
+ return /* @__PURE__ */ React19.createElement(ThemeProvider2, null, /* @__PURE__ */ React19.createElement(Popover, { ...bindDialog(popupState), onClose: () => handleClose() }, /* @__PURE__ */ React19.createElement(Dialog, { open: popupState.isOpen }, /* @__PURE__ */ React19.createElement(DialogHeader, { style: { width: "100%", minWidth: "35rem" } }, /* @__PURE__ */ React19.createElement(DialogTitle, { style: { width: "100%" } }, /* @__PURE__ */ React19.createElement(
590
+ Stack4,
479
591
  {
480
592
  display: "flex",
481
593
  direction: "row",
@@ -483,18 +595,18 @@ function SendFeedbackPopupLocation() {
483
595
  justifyContent: "space-between",
484
596
  width: "100%"
485
597
  },
486
- __4("Submit Feedback", "elementor"),
487
- /* @__PURE__ */ React17.createElement(CloseButton, { onClick: popupState.close })
488
- ))), /* @__PURE__ */ React17.createElement(DialogContent, null, /* @__PURE__ */ React17.createElement(Stack3, { direction: "column", gap: 2 }, isUserConnected ? /* @__PURE__ */ React17.createElement(React17.Fragment, null, /* @__PURE__ */ React17.createElement(
598
+ __6("Submit Feedback", "elementor"),
599
+ /* @__PURE__ */ React19.createElement(CloseButton2, { onClick: popupState.close })
600
+ ))), /* @__PURE__ */ React19.createElement(DialogContent, null, /* @__PURE__ */ React19.createElement(Stack4, { direction: "column", gap: 2 }, isUserConnected ? /* @__PURE__ */ React19.createElement(React19.Fragment, null, /* @__PURE__ */ React19.createElement(
489
601
  TextField,
490
602
  {
491
603
  autofocus: true,
492
- placeholder: __4(
604
+ placeholder: __6(
493
605
  "E.g. Can you add ABC features? I want to do ABC and it\u2019s important because \u2026",
494
606
  "elementor"
495
607
  ),
496
608
  fullwith: true,
497
- label: __4("Your Feedback", "elementor"),
609
+ label: __6("Your Feedback", "elementor"),
498
610
  multiline: true,
499
611
  id: "elementor-feedback-usercontent",
500
612
  rows: 6,
@@ -503,8 +615,8 @@ function SendFeedbackPopupLocation() {
503
615
  onChange: (event) => setFeedbackContent(event.target.value),
504
616
  value: feedbackContent
505
617
  }
506
- ), /* @__PURE__ */ React17.createElement(Stack3, { direction: "row", justifyContent: "flex-end", alignItems: "center", gap: 2 }, feedbackResult && /* @__PURE__ */ React17.createElement(React17.Fragment, null, feedbackResult.success ? /* @__PURE__ */ React17.createElement(CheckIcon, { color: "success" }) : /* @__PURE__ */ React17.createElement(AlertCircleIcon, { color: "error" }), feedbackResult.message), feedbackResult?.success ? /* @__PURE__ */ React17.createElement(Button, { variant: "text", onClick: () => handleStartAntoher() }, __4("Submit Another Feedback", "elementor")) : /* @__PURE__ */ React17.createElement(
507
- Button,
618
+ ), /* @__PURE__ */ React19.createElement(Stack4, { direction: "row", justifyContent: "flex-end", alignItems: "center", gap: 2 }, feedbackResult && /* @__PURE__ */ React19.createElement(React19.Fragment, null, feedbackResult.success ? /* @__PURE__ */ React19.createElement(CheckIcon, { color: "success" }) : /* @__PURE__ */ React19.createElement(AlertCircleIcon, { color: "error" }), feedbackResult.message), feedbackResult?.success ? /* @__PURE__ */ React19.createElement(Button2, { variant: "text", onClick: () => handleStartAntoher() }, __6("Submit Another Feedback", "elementor")) : /* @__PURE__ */ React19.createElement(
619
+ Button2,
508
620
  {
509
621
  disabled: submitDisabled,
510
622
  onClick: submitFeedback,
@@ -512,9 +624,9 @@ function SendFeedbackPopupLocation() {
512
624
  color: "primary",
513
625
  size: "small"
514
626
  },
515
- __4("Submit", "elementor")
516
- ))) : /* @__PURE__ */ React17.createElement(React17.Fragment, null, /* @__PURE__ */ React17.createElement(
517
- Button,
627
+ __6("Submit", "elementor")
628
+ ))) : /* @__PURE__ */ React19.createElement(React19.Fragment, null, /* @__PURE__ */ React19.createElement(
629
+ Button2,
518
630
  {
519
631
  variant: "contained",
520
632
  color: "primary",
@@ -524,7 +636,7 @@ function SendFeedbackPopupLocation() {
524
636
  rel: "noopener",
525
637
  onClick: popupState.close
526
638
  },
527
- __4("Connect to Elementor", "elementor")
639
+ __6("Connect to Elementor", "elementor")
528
640
  )))))));
529
641
  }
530
642
 
@@ -535,11 +647,11 @@ function ToolsMenuLocation() {
535
647
  const menuItems = useMenuItems3();
536
648
  const toolbarMenuItems = menuItems.default.slice(0, MAX_TOOLBAR_ACTIONS);
537
649
  const popoverMenuItems = menuItems.default.slice(MAX_TOOLBAR_ACTIONS);
538
- return /* @__PURE__ */ React18.createElement(ToolbarMenu, null, toolbarMenuItems.map(({ MenuItem: MenuItem2, id }) => /* @__PURE__ */ React18.createElement(MenuItem2, { key: id })), /* @__PURE__ */ React18.createElement(SendFeedbackPopupLocation, null), /* @__PURE__ */ React18.createElement(IntegrationsMenuLocation, null), popoverMenuItems.length > 0 && /* @__PURE__ */ React18.createElement(ToolbarMenuMore, { id: "elementor-editor-app-bar-tools-more" }, popoverMenuItems.map(({ MenuItem: MenuItem2, id }) => /* @__PURE__ */ React18.createElement(MenuItem2, { key: id }))));
650
+ return /* @__PURE__ */ React20.createElement(ToolbarMenu, null, toolbarMenuItems.map(({ MenuItem: MenuItem2, id }) => /* @__PURE__ */ React20.createElement(MenuItem2, { key: id })), /* @__PURE__ */ React20.createElement(AngieGuideLocation, null), /* @__PURE__ */ React20.createElement(SendFeedbackPopupLocation, null), /* @__PURE__ */ React20.createElement(IntegrationsMenuLocation, null), popoverMenuItems.length > 0 && /* @__PURE__ */ React20.createElement(ToolbarMenuMore, { id: "elementor-editor-app-bar-tools-more" }, popoverMenuItems.map(({ MenuItem: MenuItem2, id }) => /* @__PURE__ */ React20.createElement(MenuItem2, { key: id }))));
539
651
  }
540
652
 
541
653
  // src/components/locations/utilities-menu-location.tsx
542
- import * as React19 from "react";
654
+ import * as React21 from "react";
543
655
  import { Fragment as Fragment4 } from "react";
544
656
  var MAX_TOOLBAR_ACTIONS2 = 4;
545
657
  var { useMenuItems: useMenuItems4 } = utilitiesMenu;
@@ -548,19 +660,58 @@ function UtilitiesMenuLocation() {
548
660
  const shouldUsePopover = menuItems.default.length > MAX_TOOLBAR_ACTIONS2 + 1;
549
661
  const toolbarMenuItems = shouldUsePopover ? menuItems.default.slice(0, MAX_TOOLBAR_ACTIONS2) : menuItems.default;
550
662
  const popoverMenuItems = shouldUsePopover ? menuItems.default.slice(MAX_TOOLBAR_ACTIONS2) : [];
551
- return /* @__PURE__ */ React19.createElement(ToolbarMenu, null, toolbarMenuItems.map(({ MenuItem: MenuItem2, id }) => /* @__PURE__ */ React19.createElement(Fragment4, { key: id }, /* @__PURE__ */ React19.createElement(MenuItem2, null))), popoverMenuItems.length > 0 && /* @__PURE__ */ React19.createElement(ToolbarMenuMore, { id: "elementor-editor-app-bar-utilities-more" }, popoverMenuItems.map(({ MenuItem: MenuItem2, id }) => /* @__PURE__ */ React19.createElement(MenuItem2, { key: id }))));
663
+ return /* @__PURE__ */ React21.createElement(ToolbarMenu, null, toolbarMenuItems.map(({ MenuItem: MenuItem2, id }) => /* @__PURE__ */ React21.createElement(Fragment4, { key: id }, /* @__PURE__ */ React21.createElement(MenuItem2, null))), popoverMenuItems.length > 0 && /* @__PURE__ */ React21.createElement(ToolbarMenuMore, { id: "elementor-editor-app-bar-utilities-more" }, popoverMenuItems.map(({ MenuItem: MenuItem2, id }) => /* @__PURE__ */ React21.createElement(MenuItem2, { key: id }))));
552
664
  }
553
665
 
554
666
  // src/components/app-bar.tsx
555
667
  function AppBar() {
556
668
  const document2 = useActiveDocument();
557
- return /* @__PURE__ */ React20.createElement(ThemeProvider2, { colorScheme: "dark" }, /* @__PURE__ */ React20.createElement(BaseAppBar, { position: "sticky" }, /* @__PURE__ */ React20.createElement(Toolbar, { disableGutters: true, variant: "dense" }, /* @__PURE__ */ React20.createElement(Box3, { display: "grid", gridTemplateColumns: "repeat(3, 1fr)", flexGrow: 1 }, /* @__PURE__ */ React20.createElement(Grid, { container: true, flexWrap: "nowrap" }, /* @__PURE__ */ React20.createElement(MainMenuLocation, null), document2?.permissions?.allowAddingWidgets && /* @__PURE__ */ React20.createElement(ToolsMenuLocation, null)), /* @__PURE__ */ React20.createElement(Grid, { container: true, justifyContent: "center" }, /* @__PURE__ */ React20.createElement(ToolbarMenu, { spacing: 1.5 }, /* @__PURE__ */ React20.createElement(Divider2, { orientation: "vertical" }), /* @__PURE__ */ React20.createElement(PageIndicationLocation, null), /* @__PURE__ */ React20.createElement(Divider2, { orientation: "vertical" }), /* @__PURE__ */ React20.createElement(ResponsiveLocation, null), /* @__PURE__ */ React20.createElement(Divider2, { orientation: "vertical" }))), /* @__PURE__ */ React20.createElement(Grid, { container: true, justifyContent: "flex-end", flexWrap: "nowrap" }, /* @__PURE__ */ React20.createElement(UtilitiesMenuLocation, null), /* @__PURE__ */ React20.createElement(PrimaryActionLocation, null))))));
669
+ return /* @__PURE__ */ React22.createElement(ThemeProvider3, { colorScheme: "dark" }, /* @__PURE__ */ React22.createElement(BaseAppBar, { position: "sticky" }, /* @__PURE__ */ React22.createElement(Toolbar, { disableGutters: true, variant: "dense" }, /* @__PURE__ */ React22.createElement(Box3, { display: "grid", gridTemplateColumns: "repeat(3, 1fr)", flexGrow: 1 }, /* @__PURE__ */ React22.createElement(Grid, { container: true, flexWrap: "nowrap" }, /* @__PURE__ */ React22.createElement(MainMenuLocation, null), document2?.permissions?.allowAddingWidgets && /* @__PURE__ */ React22.createElement(ToolsMenuLocation, null)), /* @__PURE__ */ React22.createElement(Grid, { container: true, justifyContent: "center" }, /* @__PURE__ */ React22.createElement(ToolbarMenu, { spacing: 1.5 }, /* @__PURE__ */ React22.createElement(Divider2, { orientation: "vertical" }), /* @__PURE__ */ React22.createElement(PageIndicationLocation, null), /* @__PURE__ */ React22.createElement(Divider2, { orientation: "vertical" }), /* @__PURE__ */ React22.createElement(ResponsiveLocation, null), /* @__PURE__ */ React22.createElement(Divider2, { orientation: "vertical" }))), /* @__PURE__ */ React22.createElement(Grid, { container: true, justifyContent: "flex-end", flexWrap: "nowrap" }, /* @__PURE__ */ React22.createElement(UtilitiesMenuLocation, null), /* @__PURE__ */ React22.createElement(PrimaryActionLocation, null))))));
670
+ }
671
+
672
+ // src/extensions/angie/hooks/use-action-props.ts
673
+ import { useEffect as useEffect3 } from "react";
674
+ import { isAngieAvailable } from "@elementor/editor-mcp";
675
+ import { trackEvent } from "@elementor/events";
676
+ import { AngieIcon } from "@elementor/icons";
677
+ import { __ as __7 } from "@wordpress/i18n";
678
+ function useActionProps() {
679
+ const hasAngieInstalled = isAngieAvailable();
680
+ const visible = !hasAngieInstalled;
681
+ useEffect3(() => {
682
+ if (!visible) {
683
+ return;
684
+ }
685
+ trackEvent({
686
+ eventName: AI_WIDGET_CTA_VIEWED_EVENT,
687
+ entry_point: "top_bar_icon",
688
+ has_angie_installed: false
689
+ });
690
+ }, [visible]);
691
+ return {
692
+ title: __7("Angie", "elementor"),
693
+ icon: AngieIcon,
694
+ onClick: () => {
695
+ window.dispatchEvent(new CustomEvent(ANGIE_GUIDE_TOGGLE_EVENT));
696
+ },
697
+ selected: false,
698
+ visible
699
+ };
700
+ }
701
+
702
+ // src/extensions/angie/index.ts
703
+ function init() {
704
+ toolsMenu.registerToggleAction({
705
+ id: "toggle-angie",
706
+ priority: 2,
707
+ useProps: useActionProps
708
+ });
558
709
  }
559
710
 
560
711
  // src/extensions/connect/hooks/use-connect-link-config.tsx
561
712
  import { useCallback } from "react";
562
713
  import { UserIcon } from "@elementor/icons";
563
- import { __ as __5 } from "@wordpress/i18n";
714
+ import { __ as __8 } from "@wordpress/i18n";
564
715
  var dispatchConnectClickEvent = (eventName) => {
565
716
  try {
566
717
  const extendedWindow = window;
@@ -613,12 +764,12 @@ function useConnectLinkConfig() {
613
764
  [extendedWindow]
614
765
  );
615
766
  return isUserConnected ? {
616
- title: __5("My Elementor", "elementor"),
767
+ title: __8("My Elementor", "elementor"),
617
768
  href: extendedWindow?.elementor?.config.user.top_bar.my_elementor_url,
618
769
  icon: UserIcon,
619
770
  target: "_blank"
620
771
  } : {
621
- title: __5("Connect my account", "elementor"),
772
+ title: __8("Connect my account", "elementor"),
622
773
  href: extendedWindow?.elementor?.config.user.top_bar.connect_url,
623
774
  icon: UserIcon,
624
775
  target,
@@ -627,7 +778,7 @@ function useConnectLinkConfig() {
627
778
  }
628
779
 
629
780
  // src/extensions/connect/index.ts
630
- function init() {
781
+ function init2() {
631
782
  mainMenu.registerLink({
632
783
  id: "app-bar-connect",
633
784
  group: "exits",
@@ -640,12 +791,12 @@ function init() {
640
791
  import { __useActiveDocument as useActiveDocument2 } from "@elementor/editor-documents";
641
792
  import { __privateRunCommand as runCommand } from "@elementor/editor-v1-adapters";
642
793
  import { EyeIcon } from "@elementor/icons";
643
- import { __ as __6 } from "@wordpress/i18n";
644
- function useActionProps() {
794
+ import { __ as __9 } from "@wordpress/i18n";
795
+ function useActionProps2() {
645
796
  const document2 = useActiveDocument2();
646
797
  return {
647
798
  icon: EyeIcon,
648
- title: __6("Preview Changes", "elementor"),
799
+ title: __9("Preview Changes", "elementor"),
649
800
  onClick: () => {
650
801
  const extendedWindow = window;
651
802
  const config = extendedWindow?.elementorCommon?.eventsManager?.config;
@@ -668,16 +819,16 @@ function useActionProps() {
668
819
  }
669
820
 
670
821
  // src/extensions/documents-preview/index.ts
671
- function init2() {
822
+ function init3() {
672
823
  utilitiesMenu.registerAction({
673
824
  id: "document-preview-button",
674
825
  priority: 30,
675
- useProps: useActionProps
826
+ useProps: useActionProps2
676
827
  });
677
828
  }
678
829
 
679
830
  // src/extensions/documents-save/components/primary-action.tsx
680
- import * as React22 from "react";
831
+ import * as React24 from "react";
681
832
  import {
682
833
  __useActiveDocument as useActiveDocument3,
683
834
  __useActiveDocumentActions as useActiveDocumentActions
@@ -688,16 +839,16 @@ import {
688
839
  bindMenu as bindMenu4,
689
840
  bindTrigger as bindTrigger4,
690
841
  Box as Box4,
691
- Button as Button2,
842
+ Button as Button3,
692
843
  ButtonGroup,
693
844
  CircularProgress,
694
845
  Tooltip as Tooltip3,
695
846
  usePopupState as usePopupState5
696
847
  } from "@elementor/ui";
697
- import { __ as __7 } from "@wordpress/i18n";
848
+ import { __ as __10 } from "@wordpress/i18n";
698
849
 
699
850
  // src/extensions/documents-save/components/primary-action-menu.tsx
700
- import * as React21 from "react";
851
+ import * as React23 from "react";
701
852
  import { Divider as Divider3, styled as styled2 } from "@elementor/ui";
702
853
  var { useMenuItems: useMenuItems5 } = documentOptionsMenu;
703
854
  var StyledPopoverMenu = styled2(PopoverMenu)`
@@ -713,7 +864,7 @@ var StyledPopoverMenu = styled2(PopoverMenu)`
713
864
  `;
714
865
  function PrimaryActionMenu(props) {
715
866
  const { save: saveActions, default: defaultActions } = useMenuItems5();
716
- return /* @__PURE__ */ React21.createElement(
867
+ return /* @__PURE__ */ React23.createElement(
717
868
  StyledPopoverMenu,
718
869
  {
719
870
  ...props,
@@ -731,13 +882,13 @@ function PrimaryActionMenu(props) {
731
882
  }
732
883
  },
733
884
  saveActions.map(({ MenuItem: MenuItem2, id }, index) => [
734
- index > 0 && /* @__PURE__ */ React21.createElement(Divider3, { key: `${id}-divider` }),
735
- /* @__PURE__ */ React21.createElement(MenuItem2, { key: id })
885
+ index > 0 && /* @__PURE__ */ React23.createElement(Divider3, { key: `${id}-divider` }),
886
+ /* @__PURE__ */ React23.createElement(MenuItem2, { key: id })
736
887
  ]),
737
- saveActions.length > 0 && defaultActions.length > 0 && /* @__PURE__ */ React21.createElement(Divider3, null),
888
+ saveActions.length > 0 && defaultActions.length > 0 && /* @__PURE__ */ React23.createElement(Divider3, null),
738
889
  defaultActions.map(({ MenuItem: MenuItem2, id }, index) => [
739
- index > 0 && /* @__PURE__ */ React21.createElement(Divider3, { key: `${id}-divider` }),
740
- /* @__PURE__ */ React21.createElement(MenuItem2, { key: id })
890
+ index > 0 && /* @__PURE__ */ React23.createElement(Divider3, { key: `${id}-divider` }),
891
+ /* @__PURE__ */ React23.createElement(MenuItem2, { key: id })
741
892
  ])
742
893
  );
743
894
  }
@@ -758,8 +909,8 @@ function PrimaryAction() {
758
909
  const isPublishDisabled = !isEditMode || !isPublishEnabled(document2);
759
910
  const isSaveOptionsDisabled = !isEditMode || document2.type.value === "kit";
760
911
  const shouldShowSpinner = document2.isSaving && !isPublishDisabled;
761
- return /* @__PURE__ */ React22.createElement(React22.Fragment, null, /* @__PURE__ */ React22.createElement(ButtonGroup, { size: "large", variant: "contained" }, /* @__PURE__ */ React22.createElement(
762
- Button2,
912
+ return /* @__PURE__ */ React24.createElement(React24.Fragment, null, /* @__PURE__ */ React24.createElement(ButtonGroup, { size: "large", variant: "contained" }, /* @__PURE__ */ React24.createElement(
913
+ Button3,
763
914
  {
764
915
  onClick: () => {
765
916
  const extendedWindow = window;
@@ -789,11 +940,11 @@ function PrimaryAction() {
789
940
  },
790
941
  disabled: isPublishDisabled
791
942
  },
792
- shouldShowSpinner ? /* @__PURE__ */ React22.createElement(CircularProgress, { color: "inherit", size: "1.5em" }) : getLabel(document2)
793
- ), /* @__PURE__ */ React22.createElement(
943
+ shouldShowSpinner ? /* @__PURE__ */ React24.createElement(CircularProgress, { color: "inherit", size: "1.5em" }) : getLabel(document2)
944
+ ), /* @__PURE__ */ React24.createElement(
794
945
  Tooltip3,
795
946
  {
796
- title: __7("Save Options", "elementor"),
947
+ title: __10("Save Options", "elementor"),
797
948
  PopperProps: {
798
949
  sx: {
799
950
  "&.MuiTooltip-popper .MuiTooltip-tooltip.MuiTooltip-tooltipPlacementBottom": {
@@ -803,21 +954,21 @@ function PrimaryAction() {
803
954
  }
804
955
  }
805
956
  },
806
- /* @__PURE__ */ React22.createElement(Box4, { component: "span", "aria-label": void 0 }, /* @__PURE__ */ React22.createElement(
807
- Button2,
957
+ /* @__PURE__ */ React24.createElement(Box4, { component: "span", "aria-label": void 0 }, /* @__PURE__ */ React24.createElement(
958
+ Button3,
808
959
  {
809
960
  size: "small",
810
961
  ...bindTrigger4(popupState),
811
962
  sx: { px: 0, height: "100%", borderRadius: 0 },
812
963
  disabled: isSaveOptionsDisabled,
813
- "aria-label": __7("Save Options", "elementor")
964
+ "aria-label": __10("Save Options", "elementor")
814
965
  },
815
- /* @__PURE__ */ React22.createElement(ChevronDownIcon, null)
966
+ /* @__PURE__ */ React24.createElement(ChevronDownIcon, null)
816
967
  ))
817
- )), /* @__PURE__ */ React22.createElement(PrimaryActionMenu, { ...bindMenu4(popupState), onClick: popupState.close }));
968
+ )), /* @__PURE__ */ React24.createElement(PrimaryActionMenu, { ...bindMenu4(popupState), onClick: popupState.close }));
818
969
  }
819
970
  function getLabel(document2) {
820
- return document2.userCan.publish ? __7("Publish", "elementor") : __7("Submit", "elementor");
971
+ return document2.userCan.publish ? __10("Publish", "elementor") : __10("Submit", "elementor");
821
972
  }
822
973
  function isPublishEnabled(document2) {
823
974
  if (document2.type.value === "kit") {
@@ -831,16 +982,16 @@ import {
831
982
  __useActiveDocument as useActiveDocument4,
832
983
  __useActiveDocumentActions as useActiveDocumentActions2
833
984
  } from "@elementor/editor-documents";
834
- import { useMixpanel as useMixpanel2 } from "@elementor/events";
985
+ import { useMixpanel as useMixpanel3 } from "@elementor/events";
835
986
  import { LinkIcon } from "@elementor/icons";
836
- import { __ as __8 } from "@wordpress/i18n";
987
+ import { __ as __11 } from "@wordpress/i18n";
837
988
  function useDocumentCopyAndShareProps() {
838
989
  const document2 = useActiveDocument4();
839
990
  const { copyAndShare } = useActiveDocumentActions2();
840
- const { dispatchEvent: dispatchEvent2, config } = useMixpanel2();
991
+ const { dispatchEvent: dispatchEvent2, config } = useMixpanel3();
841
992
  return {
842
993
  icon: LinkIcon,
843
- title: __8("Copy and Share", "elementor"),
994
+ title: __11("Copy and Share", "elementor"),
844
995
  onClick: () => {
845
996
  const eventName = config?.names?.editorOne?.topBarPublishDropdown;
846
997
  if (eventName) {
@@ -868,16 +1019,16 @@ import {
868
1019
  __useActiveDocument as useActiveDocument5,
869
1020
  __useActiveDocumentActions as useActiveDocumentActions3
870
1021
  } from "@elementor/editor-documents";
871
- import { useMixpanel as useMixpanel3 } from "@elementor/events";
1022
+ import { useMixpanel as useMixpanel4 } from "@elementor/events";
872
1023
  import { FileReportIcon } from "@elementor/icons";
873
- import { __ as __9 } from "@wordpress/i18n";
1024
+ import { __ as __12 } from "@wordpress/i18n";
874
1025
  function useDocumentSaveDraftProps() {
875
1026
  const document2 = useActiveDocument5();
876
1027
  const { saveDraft } = useActiveDocumentActions3();
877
- const { dispatchEvent: dispatchEvent2, config } = useMixpanel3();
1028
+ const { dispatchEvent: dispatchEvent2, config } = useMixpanel4();
878
1029
  return {
879
1030
  icon: FileReportIcon,
880
- title: __9("Save Draft", "elementor"),
1031
+ title: __12("Save Draft", "elementor"),
881
1032
  onClick: () => {
882
1033
  const eventName = config?.names?.editorOne?.topBarPublishDropdown;
883
1034
  if (eventName) {
@@ -901,15 +1052,15 @@ function useDocumentSaveDraftProps() {
901
1052
 
902
1053
  // src/extensions/documents-save/hooks/use-document-save-template-props.ts
903
1054
  import { __useActiveDocumentActions as useActiveDocumentActions4 } from "@elementor/editor-documents";
904
- import { useMixpanel as useMixpanel4 } from "@elementor/events";
1055
+ import { useMixpanel as useMixpanel5 } from "@elementor/events";
905
1056
  import { FolderIcon } from "@elementor/icons";
906
- import { __ as __10 } from "@wordpress/i18n";
1057
+ import { __ as __13 } from "@wordpress/i18n";
907
1058
  function useDocumentSaveTemplateProps() {
908
1059
  const { saveTemplate } = useActiveDocumentActions4();
909
- const { dispatchEvent: dispatchEvent2, config } = useMixpanel4();
1060
+ const { dispatchEvent: dispatchEvent2, config } = useMixpanel5();
910
1061
  return {
911
1062
  icon: FolderIcon,
912
- title: __10("Save as Template", "elementor"),
1063
+ title: __13("Save as Template", "elementor"),
913
1064
  onClick: () => {
914
1065
  const eventName = config?.names?.editorOne?.topBarPublishDropdown;
915
1066
  if (eventName) {
@@ -933,15 +1084,15 @@ function useDocumentSaveTemplateProps() {
933
1084
  // src/extensions/documents-save/hooks/use-document-view-page-props.ts
934
1085
  import { __useActiveDocument as useActiveDocument6 } from "@elementor/editor-documents";
935
1086
  import { __privateRunCommand as runCommand2 } from "@elementor/editor-v1-adapters";
936
- import { useMixpanel as useMixpanel5 } from "@elementor/events";
1087
+ import { useMixpanel as useMixpanel6 } from "@elementor/events";
937
1088
  import { EyeIcon as EyeIcon2 } from "@elementor/icons";
938
- import { __ as __11 } from "@wordpress/i18n";
1089
+ import { __ as __14 } from "@wordpress/i18n";
939
1090
  function useDocumentViewPageProps() {
940
1091
  const document2 = useActiveDocument6();
941
- const { dispatchEvent: dispatchEvent2, config } = useMixpanel5();
1092
+ const { dispatchEvent: dispatchEvent2, config } = useMixpanel6();
942
1093
  return {
943
1094
  icon: EyeIcon2,
944
- title: __11("View Page", "elementor"),
1095
+ title: __14("View Page", "elementor"),
945
1096
  onClick: () => {
946
1097
  const eventName = config?.names?.editorOne?.topBarPublishDropdown;
947
1098
  if (eventName) {
@@ -967,7 +1118,7 @@ function useDocumentViewPageProps() {
967
1118
  }
968
1119
 
969
1120
  // src/extensions/documents-save/index.ts
970
- function init3() {
1121
+ function init4() {
971
1122
  injectIntoPrimaryAction({
972
1123
  id: "document-primary-action",
973
1124
  component: PrimaryAction
@@ -1006,16 +1157,16 @@ import {
1006
1157
  __privateUseRouteStatus as useRouteStatus
1007
1158
  } from "@elementor/editor-v1-adapters";
1008
1159
  import { FileSettingsIcon } from "@elementor/icons";
1009
- import { __ as __12 } from "@wordpress/i18n";
1010
- function useActionProps2() {
1160
+ import { __ as __15 } from "@wordpress/i18n";
1161
+ function useActionProps3() {
1011
1162
  const activeDocument = useActiveDocument7();
1012
1163
  const hostDocument = useHostDocument();
1013
1164
  const { isActive, isBlocked } = useRouteStatus("panel/page-settings");
1014
1165
  const document2 = activeDocument && activeDocument.type.value !== "kit" ? activeDocument : hostDocument;
1015
1166
  const ButtonTitle = document2 ? (
1016
1167
  /* translators: %s: Post type label. */
1017
- __12("%s Settings", "elementor").replace("%s", document2.type.label)
1018
- ) : __12("Document Settings", "elementor");
1168
+ __15("%s Settings", "elementor").replace("%s", document2.type.label)
1169
+ ) : __15("Document Settings", "elementor");
1019
1170
  return {
1020
1171
  title: ButtonTitle,
1021
1172
  icon: FileSettingsIcon,
@@ -1041,11 +1192,11 @@ function useActionProps2() {
1041
1192
  }
1042
1193
 
1043
1194
  // src/extensions/documents-settings/index.ts
1044
- function init4() {
1195
+ function init5() {
1045
1196
  toolsMenu.registerToggleAction({
1046
1197
  id: "document-settings-button",
1047
- priority: 2,
1048
- useProps: useActionProps2
1198
+ priority: 3,
1199
+ useProps: useActionProps3
1049
1200
  });
1050
1201
  }
1051
1202
 
@@ -1055,11 +1206,11 @@ import {
1055
1206
  __privateUseRouteStatus as useRouteStatus2
1056
1207
  } from "@elementor/editor-v1-adapters";
1057
1208
  import { PlusIcon } from "@elementor/icons";
1058
- import { __ as __13 } from "@wordpress/i18n";
1059
- function useActionProps3() {
1209
+ import { __ as __16 } from "@wordpress/i18n";
1210
+ function useActionProps4() {
1060
1211
  const { isActive, isBlocked } = useRouteStatus2("panel/elements");
1061
1212
  return {
1062
- title: __13("Add Element", "elementor"),
1213
+ title: __16("Add Element", "elementor"),
1063
1214
  icon: PlusIcon,
1064
1215
  onClick: () => {
1065
1216
  const extendedWindow = window;
@@ -1086,10 +1237,10 @@ import {
1086
1237
  routeOpenEvent,
1087
1238
  v1ReadyEvent
1088
1239
  } from "@elementor/editor-v1-adapters";
1089
- import { __ as __14 } from "@wordpress/i18n";
1240
+ import { __ as __17 } from "@wordpress/i18n";
1090
1241
  function syncPanelTitle() {
1091
- const panelTitle = __14("Elements", "elementor");
1092
- const tabTitle = __14("Widgets", "elementor");
1242
+ const panelTitle = __17("Elements", "elementor");
1243
+ const tabTitle = __17("Widgets", "elementor");
1093
1244
  listenTo(routeOpenEvent("panel/elements"), () => {
1094
1245
  setPanelTitle(panelTitle);
1095
1246
  setTabTitle(tabTitle);
@@ -1112,20 +1263,20 @@ function setTabTitle(title) {
1112
1263
  }
1113
1264
 
1114
1265
  // src/extensions/elements/index.ts
1115
- function init5() {
1266
+ function init6() {
1116
1267
  syncPanelTitle();
1117
1268
  toolsMenu.registerToggleAction({
1118
1269
  id: "open-elements-panel",
1119
1270
  priority: 1,
1120
- useProps: useActionProps3
1271
+ useProps: useActionProps4
1121
1272
  });
1122
1273
  }
1123
1274
 
1124
1275
  // src/extensions/feedback/index.ts
1125
1276
  import { isExperimentActive as isExperimentActive2 } from "@elementor/editor-v1-adapters";
1126
1277
  import { MessageLinesIcon } from "@elementor/icons";
1127
- import { __ as __15 } from "@wordpress/i18n";
1128
- function init6() {
1278
+ import { __ as __18 } from "@wordpress/i18n";
1279
+ function init7() {
1129
1280
  const isActive = isExperimentActive2(EXPERIMENT_NAME);
1130
1281
  if (!isActive) {
1131
1282
  return;
@@ -1137,7 +1288,7 @@ function init6() {
1137
1288
  useProps: () => {
1138
1289
  return {
1139
1290
  icon: MessageLinesIcon,
1140
- title: __15("Send Feedback", "elementor"),
1291
+ title: __18("Send Feedback", "elementor"),
1141
1292
  onClick: () => {
1142
1293
  dispatchEvent(new CustomEvent(FEEDBACK_TOGGLE_EVENT));
1143
1294
  }
@@ -1149,10 +1300,10 @@ function init6() {
1149
1300
  // src/extensions/finder/hooks/use-action-props.ts
1150
1301
  import { __privateRunCommand as runCommand3 } from "@elementor/editor-v1-adapters";
1151
1302
  import { SearchIcon } from "@elementor/icons";
1152
- import { __ as __16 } from "@wordpress/i18n";
1153
- function useActionProps4() {
1303
+ import { __ as __19 } from "@wordpress/i18n";
1304
+ function useActionProps5() {
1154
1305
  return {
1155
- title: __16("Finder", "elementor"),
1306
+ title: __19("Finder", "elementor"),
1156
1307
  icon: SearchIcon,
1157
1308
  onClick: () => {
1158
1309
  const extendedWindow = window;
@@ -1171,20 +1322,20 @@ function useActionProps4() {
1171
1322
  }
1172
1323
 
1173
1324
  // src/extensions/finder/index.ts
1174
- function init7() {
1325
+ function init8() {
1175
1326
  utilitiesMenu.registerAction({
1176
1327
  id: "toggle-finder",
1177
1328
  priority: 15,
1178
- useProps: useActionProps4
1329
+ useProps: useActionProps5
1179
1330
  });
1180
1331
  }
1181
1332
 
1182
1333
  // src/extensions/help/hooks/use-action-props.ts
1183
1334
  import { HelpIcon } from "@elementor/icons";
1184
- import { __ as __17 } from "@wordpress/i18n";
1185
- function useActionProps5() {
1335
+ import { __ as __20 } from "@wordpress/i18n";
1336
+ function useActionProps6() {
1186
1337
  return {
1187
- title: __17("Help Center", "elementor"),
1338
+ title: __20("Help Center", "elementor"),
1188
1339
  href: "https://go.elementor.com/editor-top-bar-learn/",
1189
1340
  icon: HelpIcon,
1190
1341
  target: "_blank",
@@ -1204,12 +1355,12 @@ function useActionProps5() {
1204
1355
  }
1205
1356
 
1206
1357
  // src/extensions/help/index.ts
1207
- function init8() {
1358
+ function init9() {
1208
1359
  mainMenu.registerLink({
1209
1360
  id: "open-help-center",
1210
1361
  group: "help",
1211
1362
  priority: 10,
1212
- useProps: useActionProps5
1363
+ useProps: useActionProps6
1213
1364
  });
1214
1365
  }
1215
1366
 
@@ -1219,11 +1370,11 @@ import {
1219
1370
  __privateUseRouteStatus as useRouteStatus3
1220
1371
  } from "@elementor/editor-v1-adapters";
1221
1372
  import { HistoryIcon } from "@elementor/icons";
1222
- import { __ as __18 } from "@wordpress/i18n";
1223
- function useActionProps6() {
1373
+ import { __ as __21 } from "@wordpress/i18n";
1374
+ function useActionProps7() {
1224
1375
  const { isActive, isBlocked } = useRouteStatus3("panel/history");
1225
1376
  return {
1226
- title: __18("History", "elementor"),
1377
+ title: __21("History", "elementor"),
1227
1378
  icon: HistoryIcon,
1228
1379
  onClick: () => {
1229
1380
  const extendedWindow = window;
@@ -1244,22 +1395,22 @@ function useActionProps6() {
1244
1395
  }
1245
1396
 
1246
1397
  // src/extensions/history/index.ts
1247
- function init9() {
1398
+ function init10() {
1248
1399
  toolsMenu.registerToggleAction({
1249
1400
  id: "open-history",
1250
1401
  priority: 15,
1251
- useProps: useActionProps6
1402
+ useProps: useActionProps7
1252
1403
  });
1253
1404
  }
1254
1405
 
1255
1406
  // src/extensions/keyboard-shortcuts/hooks/use-action-props.ts
1256
1407
  import { __privateRunCommand as runCommand4 } from "@elementor/editor-v1-adapters";
1257
1408
  import { KeyboardIcon } from "@elementor/icons";
1258
- import { __ as __19 } from "@wordpress/i18n";
1259
- function useActionProps7() {
1409
+ import { __ as __22 } from "@wordpress/i18n";
1410
+ function useActionProps8() {
1260
1411
  return {
1261
1412
  icon: KeyboardIcon,
1262
- title: __19("Keyboard Shortcuts", "elementor"),
1413
+ title: __22("Keyboard Shortcuts", "elementor"),
1263
1414
  onClick: () => {
1264
1415
  const extendedWindow = window;
1265
1416
  const config = extendedWindow?.elementorCommon?.eventsManager?.config;
@@ -1277,17 +1428,17 @@ function useActionProps7() {
1277
1428
  }
1278
1429
 
1279
1430
  // src/extensions/keyboard-shortcuts/index.ts
1280
- function init10() {
1431
+ function init11() {
1281
1432
  mainMenu.registerAction({
1282
1433
  id: "open-keyboard-shortcuts",
1283
1434
  group: "default",
1284
1435
  priority: 40,
1285
- useProps: useActionProps7
1436
+ useProps: useActionProps8
1286
1437
  });
1287
1438
  }
1288
1439
 
1289
1440
  // src/extensions/responsive/components/breakpoints-switcher.tsx
1290
- import * as React23 from "react";
1441
+ import * as React25 from "react";
1291
1442
  import {
1292
1443
  useActivateBreakpoint,
1293
1444
  useActiveBreakpoint,
@@ -1303,7 +1454,7 @@ import {
1303
1454
  WidescreenIcon
1304
1455
  } from "@elementor/icons";
1305
1456
  import { Tab, Tabs, Tooltip as BaseTooltip2 } from "@elementor/ui";
1306
- import { __ as __20 } from "@wordpress/i18n";
1457
+ import { __ as __23 } from "@wordpress/i18n";
1307
1458
  function BreakpointsSwitcher() {
1308
1459
  const breakpoints = useBreakpoints();
1309
1460
  const activeBreakpoint = useActiveBreakpoint();
@@ -1325,14 +1476,14 @@ function BreakpointsSwitcher() {
1325
1476
  }
1326
1477
  activateBreakpoint(value);
1327
1478
  };
1328
- return /* @__PURE__ */ React23.createElement(
1479
+ return /* @__PURE__ */ React25.createElement(
1329
1480
  Tabs,
1330
1481
  {
1331
1482
  textColor: "inherit",
1332
1483
  indicatorColor: "secondary",
1333
1484
  value: activeBreakpoint,
1334
1485
  onChange,
1335
- "aria-label": __20("Switch Device", "elementor"),
1486
+ "aria-label": __23("Switch Device", "elementor"),
1336
1487
  sx: {
1337
1488
  "& .MuiTabs-indicator": {
1338
1489
  backgroundColor: "text.primary"
@@ -1342,13 +1493,13 @@ function BreakpointsSwitcher() {
1342
1493
  breakpoints.map(({ id, label, type, width }) => {
1343
1494
  const Icon = iconsMap[id];
1344
1495
  const title = labelsMap[type || "default"].replace("%s", label).replace("%d", width?.toString() || "");
1345
- return /* @__PURE__ */ React23.createElement(
1496
+ return /* @__PURE__ */ React25.createElement(
1346
1497
  Tab,
1347
1498
  {
1348
1499
  value: id,
1349
1500
  key: id,
1350
1501
  "aria-label": title,
1351
- icon: /* @__PURE__ */ React23.createElement(Tooltip4, { title }, /* @__PURE__ */ React23.createElement(Icon, null)),
1502
+ icon: /* @__PURE__ */ React25.createElement(Tooltip4, { title }, /* @__PURE__ */ React25.createElement(Icon, null)),
1352
1503
  sx: { minWidth: "auto" },
1353
1504
  "data-testid": `switch-device-to-${id}`
1354
1505
  }
@@ -1357,7 +1508,7 @@ function BreakpointsSwitcher() {
1357
1508
  );
1358
1509
  }
1359
1510
  function Tooltip4(props) {
1360
- return /* @__PURE__ */ React23.createElement(
1511
+ return /* @__PURE__ */ React25.createElement(
1361
1512
  BaseTooltip2,
1362
1513
  {
1363
1514
  PopperProps: {
@@ -1383,13 +1534,13 @@ var iconsMap = {
1383
1534
  var labelsMap = {
1384
1535
  default: "%s",
1385
1536
  // translators: %s: Breakpoint label, %d: Breakpoint size.
1386
- "min-width": __20("%s (%dpx and up)", "elementor"),
1537
+ "min-width": __23("%s (%dpx and up)", "elementor"),
1387
1538
  // translators: %s: Breakpoint label, %d: Breakpoint size.
1388
- "max-width": __20("%s (up to %dpx)", "elementor")
1539
+ "max-width": __23("%s (up to %dpx)", "elementor")
1389
1540
  };
1390
1541
 
1391
1542
  // src/extensions/responsive/index.ts
1392
- function init11() {
1543
+ function init12() {
1393
1544
  injectIntoResponsive({
1394
1545
  id: "responsive-breakpoints-switcher",
1395
1546
  component: BreakpointsSwitcher,
@@ -1404,10 +1555,10 @@ function init11() {
1404
1555
  import { injectIntoTop } from "@elementor/editor";
1405
1556
 
1406
1557
  // src/extensions/site-settings/components/portalled-primary-action.tsx
1407
- import * as React26 from "react";
1558
+ import * as React28 from "react";
1408
1559
 
1409
1560
  // src/extensions/site-settings/components/portal.tsx
1410
- import * as React24 from "react";
1561
+ import * as React26 from "react";
1411
1562
  import {
1412
1563
  __privateIsRouteActive as isRouteActive2,
1413
1564
  __privateUseListenTo as useListenTo,
@@ -1423,24 +1574,24 @@ function Portal(props) {
1423
1574
  if (!containerRef.current) {
1424
1575
  return null;
1425
1576
  }
1426
- return /* @__PURE__ */ React24.createElement(BasePortal, { container: containerRef.current, ...props });
1577
+ return /* @__PURE__ */ React26.createElement(BasePortal, { container: containerRef.current, ...props });
1427
1578
  }
1428
1579
  function getContainerRef() {
1429
1580
  return isRouteActive2("panel/global") ? { current: document.querySelector("#elementor-panel-inner") } : { current: null };
1430
1581
  }
1431
1582
 
1432
1583
  // src/extensions/site-settings/components/primary-action.tsx
1433
- import * as React25 from "react";
1584
+ import * as React27 from "react";
1434
1585
  import {
1435
1586
  __useActiveDocument as useActiveDocument8,
1436
1587
  __useActiveDocumentActions as useActiveDocumentActions5
1437
1588
  } from "@elementor/editor-documents";
1438
- import { Button as Button3, CircularProgress as CircularProgress2, Paper } from "@elementor/ui";
1439
- import { __ as __21 } from "@wordpress/i18n";
1589
+ import { Button as Button4, CircularProgress as CircularProgress2, Paper } from "@elementor/ui";
1590
+ import { __ as __24 } from "@wordpress/i18n";
1440
1591
  function PrimaryAction2() {
1441
1592
  const document2 = useActiveDocument8();
1442
1593
  const { save } = useActiveDocumentActions5();
1443
- return /* @__PURE__ */ React25.createElement(
1594
+ return /* @__PURE__ */ React27.createElement(
1444
1595
  Paper,
1445
1596
  {
1446
1597
  sx: {
@@ -1450,8 +1601,8 @@ function PrimaryAction2() {
1450
1601
  borderColor: "divider"
1451
1602
  }
1452
1603
  },
1453
- /* @__PURE__ */ React25.createElement(
1454
- Button3,
1604
+ /* @__PURE__ */ React27.createElement(
1605
+ Button4,
1455
1606
  {
1456
1607
  variant: "contained",
1457
1608
  disabled: !document2 || !document2.isDirty,
@@ -1459,14 +1610,14 @@ function PrimaryAction2() {
1459
1610
  sx: { width: "100%" },
1460
1611
  onClick: () => document2 && !document2.isSaving ? save() : null
1461
1612
  },
1462
- document2?.isSaving ? /* @__PURE__ */ React25.createElement(CircularProgress2, null) : __21("Save Changes", "elementor")
1613
+ document2?.isSaving ? /* @__PURE__ */ React27.createElement(CircularProgress2, null) : __24("Save Changes", "elementor")
1463
1614
  )
1464
1615
  );
1465
1616
  }
1466
1617
 
1467
1618
  // src/extensions/site-settings/components/portalled-primary-action.tsx
1468
1619
  function PortalledPrimaryAction() {
1469
- return /* @__PURE__ */ React26.createElement(Portal, null, /* @__PURE__ */ React26.createElement(PrimaryAction2, null));
1620
+ return /* @__PURE__ */ React28.createElement(Portal, null, /* @__PURE__ */ React28.createElement(PrimaryAction2, null));
1470
1621
  }
1471
1622
 
1472
1623
  // src/extensions/site-settings/hooks/use-action-props.ts
@@ -1475,13 +1626,13 @@ import {
1475
1626
  __privateUseRouteStatus as useRouteStatus4
1476
1627
  } from "@elementor/editor-v1-adapters";
1477
1628
  import { SettingsIcon } from "@elementor/icons";
1478
- import { __ as __22 } from "@wordpress/i18n";
1479
- function useActionProps8() {
1629
+ import { __ as __25 } from "@wordpress/i18n";
1630
+ function useActionProps9() {
1480
1631
  const { isActive, isBlocked } = useRouteStatus4("panel/global", {
1481
1632
  blockOnKitRoutes: false
1482
1633
  });
1483
1634
  return {
1484
- title: __22("Site Settings", "elementor"),
1635
+ title: __25("Site Settings", "elementor"),
1485
1636
  icon: SettingsIcon,
1486
1637
  onClick: () => {
1487
1638
  const extendedWindow = window;
@@ -1506,7 +1657,7 @@ function useActionProps8() {
1506
1657
  }
1507
1658
 
1508
1659
  // src/extensions/site-settings/index.ts
1509
- function init12() {
1660
+ function init13() {
1510
1661
  injectIntoTop({
1511
1662
  id: "site-settings-primary-action-portal",
1512
1663
  component: PortalledPrimaryAction
@@ -1515,7 +1666,7 @@ function init12() {
1515
1666
  id: "toggle-site-settings",
1516
1667
  group: "default",
1517
1668
  priority: 1,
1518
- useProps: useActionProps8
1669
+ useProps: useActionProps9
1519
1670
  });
1520
1671
  }
1521
1672
 
@@ -1525,11 +1676,11 @@ import {
1525
1676
  __privateUseRouteStatus as useRouteStatus5
1526
1677
  } from "@elementor/editor-v1-adapters";
1527
1678
  import { StructureIcon } from "@elementor/icons";
1528
- import { __ as __23 } from "@wordpress/i18n";
1529
- function useActionProps9() {
1679
+ import { __ as __26 } from "@wordpress/i18n";
1680
+ function useActionProps10() {
1530
1681
  const { isActive, isBlocked } = useRouteStatus5("navigator");
1531
1682
  return {
1532
- title: __23("Structure", "elementor"),
1683
+ title: __26("Structure", "elementor"),
1533
1684
  icon: StructureIcon,
1534
1685
  onClick: () => {
1535
1686
  const extendedWindow = window;
@@ -1550,22 +1701,22 @@ function useActionProps9() {
1550
1701
  }
1551
1702
 
1552
1703
  // src/extensions/structure/index.ts
1553
- function init13() {
1704
+ function init14() {
1554
1705
  utilitiesMenu.registerToggleAction({
1555
1706
  id: "toggle-structure-view",
1556
1707
  priority: 25,
1557
- useProps: useActionProps9
1708
+ useProps: useActionProps10
1558
1709
  });
1559
1710
  }
1560
1711
 
1561
1712
  // src/extensions/theme-builder/hooks/use-action-props.ts
1562
1713
  import { __privateRunCommand as runCommand7 } from "@elementor/editor-v1-adapters";
1563
1714
  import { ThemeBuilderIcon } from "@elementor/icons";
1564
- import { __ as __24 } from "@wordpress/i18n";
1565
- function useActionProps10() {
1715
+ import { __ as __27 } from "@wordpress/i18n";
1716
+ function useActionProps11() {
1566
1717
  return {
1567
1718
  icon: ThemeBuilderIcon,
1568
- title: __24("Theme Builder", "elementor"),
1719
+ title: __27("Theme Builder", "elementor"),
1569
1720
  onClick: () => {
1570
1721
  const extendedWindow = window;
1571
1722
  const config = extendedWindow?.elementorCommon?.eventsManager?.config;
@@ -1583,12 +1734,12 @@ function useActionProps10() {
1583
1734
  }
1584
1735
 
1585
1736
  // src/extensions/theme-builder/index.ts
1586
- function init14() {
1737
+ function init15() {
1587
1738
  mainMenu.registerAction({
1588
1739
  id: "open-theme-builder",
1589
1740
  group: "default",
1590
1741
  priority: 10,
1591
- useProps: useActionProps10
1742
+ useProps: useActionProps11
1592
1743
  });
1593
1744
  }
1594
1745
 
@@ -1598,12 +1749,12 @@ import {
1598
1749
  __privateUseRouteStatus as useRouteStatus6
1599
1750
  } from "@elementor/editor-v1-adapters";
1600
1751
  import { ToggleRightIcon } from "@elementor/icons";
1601
- import { __ as __25 } from "@wordpress/i18n";
1602
- function useActionProps11() {
1752
+ import { __ as __28 } from "@wordpress/i18n";
1753
+ function useActionProps12() {
1603
1754
  const { isActive, isBlocked } = useRouteStatus6("panel/editor-preferences");
1604
1755
  return {
1605
1756
  icon: ToggleRightIcon,
1606
- title: __25("User Preferences", "elementor"),
1757
+ title: __28("User Preferences", "elementor"),
1607
1758
  onClick: () => {
1608
1759
  const extendedWindow = window;
1609
1760
  const config = extendedWindow?.elementorCommon?.eventsManager?.config;
@@ -1623,20 +1774,20 @@ function useActionProps11() {
1623
1774
  }
1624
1775
 
1625
1776
  // src/extensions/user-preferences/index.ts
1626
- function init15() {
1777
+ function init16() {
1627
1778
  mainMenu.registerToggleAction({
1628
1779
  id: "open-user-preferences",
1629
1780
  group: "default",
1630
1781
  priority: 30,
1631
- useProps: useActionProps11
1782
+ useProps: useActionProps12
1632
1783
  });
1633
1784
  }
1634
1785
 
1635
1786
  // src/extensions/wordpress/index.ts
1636
1787
  import { __useActiveDocument as useActiveDocument9 } from "@elementor/editor-documents";
1637
1788
  import { WordpressIcon } from "@elementor/icons";
1638
- import { __ as __26 } from "@wordpress/i18n";
1639
- function init16() {
1789
+ import { __ as __29 } from "@wordpress/i18n";
1790
+ function init17() {
1640
1791
  mainMenu.registerLink({
1641
1792
  id: "exit-to-wordpress",
1642
1793
  group: "exits",
@@ -1644,7 +1795,7 @@ function init16() {
1644
1795
  useProps: () => {
1645
1796
  const document2 = useActiveDocument9();
1646
1797
  return {
1647
- title: __26("Exit to WordPress", "elementor"),
1798
+ title: __29("Exit to WordPress", "elementor"),
1648
1799
  href: document2?.links?.platformEdit,
1649
1800
  icon: WordpressIcon,
1650
1801
  onClick: () => {
@@ -1668,23 +1819,24 @@ function init16() {
1668
1819
  }
1669
1820
 
1670
1821
  // src/extensions/index.ts
1671
- function init17() {
1672
- init2();
1822
+ function init18() {
1823
+ init();
1673
1824
  init3();
1674
1825
  init4();
1675
1826
  init5();
1676
- init7();
1827
+ init6();
1677
1828
  init8();
1678
1829
  init9();
1679
1830
  init10();
1680
1831
  init11();
1681
1832
  init12();
1682
- init6();
1683
1833
  init13();
1834
+ init7();
1684
1835
  init14();
1685
1836
  init15();
1686
1837
  init16();
1687
- init();
1838
+ init17();
1839
+ init2();
1688
1840
  }
1689
1841
 
1690
1842
  // src/sync/redirect-old-menus.ts
@@ -1700,9 +1852,9 @@ function redirectOldMenus() {
1700
1852
  }
1701
1853
 
1702
1854
  // src/init.ts
1703
- function init18() {
1855
+ function init19() {
1704
1856
  redirectOldMenus();
1705
- init17();
1857
+ init18();
1706
1858
  injectIntoTop2({
1707
1859
  id: "app-bar",
1708
1860
  component: AppBar
@@ -1710,7 +1862,7 @@ function init18() {
1710
1862
  }
1711
1863
  export {
1712
1864
  documentOptionsMenu,
1713
- init18 as init,
1865
+ init19 as init,
1714
1866
  injectIntoPageIndication,
1715
1867
  injectIntoPrimaryAction,
1716
1868
  injectIntoResponsive,