@elementor/editor-app-bar 4.1.0-838 → 4.1.0-beta1

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: () => handleStartAnother() }, __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: () => handleStartAnother() }, __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,40 +660,42 @@ 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))))));
558
670
  }
559
671
 
560
672
  // src/extensions/angie/hooks/use-action-props.ts
673
+ import { useEffect as useEffect3 } from "react";
561
674
  import { isAngieAvailable } from "@elementor/editor-mcp";
675
+ import { trackEvent } from "@elementor/events";
562
676
  import { AngieIcon } from "@elementor/icons";
563
- import { __ as __5 } from "@wordpress/i18n";
564
- var CREATE_WIDGET_EVENT = "elementor/editor/create-widget";
565
- var CREATE_WIDGET_PROMPT = `Create a widget for me.
566
- Goal: [What should this widget help me accomplish?]
567
- Placement: [Where will I see it in the editor/UI?]
568
- How it should work: `;
677
+ import { __ as __7 } from "@wordpress/i18n";
569
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]);
570
691
  return {
571
- title: __5("Angie", "elementor"),
692
+ title: __7("Angie", "elementor"),
572
693
  icon: AngieIcon,
573
694
  onClick: () => {
574
- window.dispatchEvent(
575
- new CustomEvent(CREATE_WIDGET_EVENT, {
576
- detail: {
577
- prompt: CREATE_WIDGET_PROMPT,
578
- entry_point: "top_bar"
579
- }
580
- })
581
- );
695
+ window.dispatchEvent(new CustomEvent(ANGIE_GUIDE_TOGGLE_EVENT));
582
696
  },
583
697
  selected: false,
584
- visible: !isAngieAvailable()
698
+ visible
585
699
  };
586
700
  }
587
701
 
@@ -597,7 +711,7 @@ function init() {
597
711
  // src/extensions/connect/hooks/use-connect-link-config.tsx
598
712
  import { useCallback } from "react";
599
713
  import { UserIcon } from "@elementor/icons";
600
- import { __ as __6 } from "@wordpress/i18n";
714
+ import { __ as __8 } from "@wordpress/i18n";
601
715
  var dispatchConnectClickEvent = (eventName) => {
602
716
  try {
603
717
  const extendedWindow = window;
@@ -650,12 +764,12 @@ function useConnectLinkConfig() {
650
764
  [extendedWindow]
651
765
  );
652
766
  return isUserConnected ? {
653
- title: __6("My Elementor", "elementor"),
767
+ title: __8("My Elementor", "elementor"),
654
768
  href: extendedWindow?.elementor?.config.user.top_bar.my_elementor_url,
655
769
  icon: UserIcon,
656
770
  target: "_blank"
657
771
  } : {
658
- title: __6("Connect my account", "elementor"),
772
+ title: __8("Connect my account", "elementor"),
659
773
  href: extendedWindow?.elementor?.config.user.top_bar.connect_url,
660
774
  icon: UserIcon,
661
775
  target,
@@ -677,12 +791,12 @@ function init2() {
677
791
  import { __useActiveDocument as useActiveDocument2 } from "@elementor/editor-documents";
678
792
  import { __privateRunCommand as runCommand } from "@elementor/editor-v1-adapters";
679
793
  import { EyeIcon } from "@elementor/icons";
680
- import { __ as __7 } from "@wordpress/i18n";
794
+ import { __ as __9 } from "@wordpress/i18n";
681
795
  function useActionProps2() {
682
796
  const document2 = useActiveDocument2();
683
797
  return {
684
798
  icon: EyeIcon,
685
- title: __7("Preview Changes", "elementor"),
799
+ title: __9("Preview Changes", "elementor"),
686
800
  onClick: () => {
687
801
  const extendedWindow = window;
688
802
  const config = extendedWindow?.elementorCommon?.eventsManager?.config;
@@ -714,7 +828,7 @@ function init3() {
714
828
  }
715
829
 
716
830
  // src/extensions/documents-save/components/primary-action.tsx
717
- import * as React22 from "react";
831
+ import * as React24 from "react";
718
832
  import {
719
833
  __useActiveDocument as useActiveDocument3,
720
834
  __useActiveDocumentActions as useActiveDocumentActions
@@ -725,16 +839,16 @@ import {
725
839
  bindMenu as bindMenu4,
726
840
  bindTrigger as bindTrigger4,
727
841
  Box as Box4,
728
- Button as Button2,
842
+ Button as Button3,
729
843
  ButtonGroup,
730
844
  CircularProgress,
731
845
  Tooltip as Tooltip3,
732
846
  usePopupState as usePopupState5
733
847
  } from "@elementor/ui";
734
- import { __ as __8 } from "@wordpress/i18n";
848
+ import { __ as __10 } from "@wordpress/i18n";
735
849
 
736
850
  // src/extensions/documents-save/components/primary-action-menu.tsx
737
- import * as React21 from "react";
851
+ import * as React23 from "react";
738
852
  import { Divider as Divider3, styled as styled2 } from "@elementor/ui";
739
853
  var { useMenuItems: useMenuItems5 } = documentOptionsMenu;
740
854
  var StyledPopoverMenu = styled2(PopoverMenu)`
@@ -750,7 +864,7 @@ var StyledPopoverMenu = styled2(PopoverMenu)`
750
864
  `;
751
865
  function PrimaryActionMenu(props) {
752
866
  const { save: saveActions, default: defaultActions } = useMenuItems5();
753
- return /* @__PURE__ */ React21.createElement(
867
+ return /* @__PURE__ */ React23.createElement(
754
868
  StyledPopoverMenu,
755
869
  {
756
870
  ...props,
@@ -768,13 +882,13 @@ function PrimaryActionMenu(props) {
768
882
  }
769
883
  },
770
884
  saveActions.map(({ MenuItem: MenuItem2, id }, index) => [
771
- index > 0 && /* @__PURE__ */ React21.createElement(Divider3, { key: `${id}-divider` }),
772
- /* @__PURE__ */ React21.createElement(MenuItem2, { key: id })
885
+ index > 0 && /* @__PURE__ */ React23.createElement(Divider3, { key: `${id}-divider` }),
886
+ /* @__PURE__ */ React23.createElement(MenuItem2, { key: id })
773
887
  ]),
774
- saveActions.length > 0 && defaultActions.length > 0 && /* @__PURE__ */ React21.createElement(Divider3, null),
888
+ saveActions.length > 0 && defaultActions.length > 0 && /* @__PURE__ */ React23.createElement(Divider3, null),
775
889
  defaultActions.map(({ MenuItem: MenuItem2, id }, index) => [
776
- index > 0 && /* @__PURE__ */ React21.createElement(Divider3, { key: `${id}-divider` }),
777
- /* @__PURE__ */ React21.createElement(MenuItem2, { key: id })
890
+ index > 0 && /* @__PURE__ */ React23.createElement(Divider3, { key: `${id}-divider` }),
891
+ /* @__PURE__ */ React23.createElement(MenuItem2, { key: id })
778
892
  ])
779
893
  );
780
894
  }
@@ -795,8 +909,8 @@ function PrimaryAction() {
795
909
  const isPublishDisabled = !isEditMode || !isPublishEnabled(document2);
796
910
  const isSaveOptionsDisabled = !isEditMode || document2.type.value === "kit";
797
911
  const shouldShowSpinner = document2.isSaving && !isPublishDisabled;
798
- return /* @__PURE__ */ React22.createElement(React22.Fragment, null, /* @__PURE__ */ React22.createElement(ButtonGroup, { size: "large", variant: "contained" }, /* @__PURE__ */ React22.createElement(
799
- Button2,
912
+ return /* @__PURE__ */ React24.createElement(React24.Fragment, null, /* @__PURE__ */ React24.createElement(ButtonGroup, { size: "large", variant: "contained" }, /* @__PURE__ */ React24.createElement(
913
+ Button3,
800
914
  {
801
915
  onClick: () => {
802
916
  const extendedWindow = window;
@@ -826,11 +940,11 @@ function PrimaryAction() {
826
940
  },
827
941
  disabled: isPublishDisabled
828
942
  },
829
- shouldShowSpinner ? /* @__PURE__ */ React22.createElement(CircularProgress, { color: "inherit", size: "1.5em" }) : getLabel(document2)
830
- ), /* @__PURE__ */ React22.createElement(
943
+ shouldShowSpinner ? /* @__PURE__ */ React24.createElement(CircularProgress, { color: "inherit", size: "1.5em" }) : getLabel(document2)
944
+ ), /* @__PURE__ */ React24.createElement(
831
945
  Tooltip3,
832
946
  {
833
- title: __8("Save Options", "elementor"),
947
+ title: __10("Save Options", "elementor"),
834
948
  PopperProps: {
835
949
  sx: {
836
950
  "&.MuiTooltip-popper .MuiTooltip-tooltip.MuiTooltip-tooltipPlacementBottom": {
@@ -840,21 +954,21 @@ function PrimaryAction() {
840
954
  }
841
955
  }
842
956
  },
843
- /* @__PURE__ */ React22.createElement(Box4, { component: "span", "aria-label": void 0 }, /* @__PURE__ */ React22.createElement(
844
- Button2,
957
+ /* @__PURE__ */ React24.createElement(Box4, { component: "span", "aria-label": void 0 }, /* @__PURE__ */ React24.createElement(
958
+ Button3,
845
959
  {
846
960
  size: "small",
847
961
  ...bindTrigger4(popupState),
848
962
  sx: { px: 0, height: "100%", borderRadius: 0 },
849
963
  disabled: isSaveOptionsDisabled,
850
- "aria-label": __8("Save Options", "elementor")
964
+ "aria-label": __10("Save Options", "elementor")
851
965
  },
852
- /* @__PURE__ */ React22.createElement(ChevronDownIcon, null)
966
+ /* @__PURE__ */ React24.createElement(ChevronDownIcon, null)
853
967
  ))
854
- )), /* @__PURE__ */ React22.createElement(PrimaryActionMenu, { ...bindMenu4(popupState), onClick: popupState.close }));
968
+ )), /* @__PURE__ */ React24.createElement(PrimaryActionMenu, { ...bindMenu4(popupState), onClick: popupState.close }));
855
969
  }
856
970
  function getLabel(document2) {
857
- return document2.userCan.publish ? __8("Publish", "elementor") : __8("Submit", "elementor");
971
+ return document2.userCan.publish ? __10("Publish", "elementor") : __10("Submit", "elementor");
858
972
  }
859
973
  function isPublishEnabled(document2) {
860
974
  if (document2.type.value === "kit") {
@@ -868,16 +982,16 @@ import {
868
982
  __useActiveDocument as useActiveDocument4,
869
983
  __useActiveDocumentActions as useActiveDocumentActions2
870
984
  } from "@elementor/editor-documents";
871
- import { useMixpanel as useMixpanel2 } from "@elementor/events";
985
+ import { useMixpanel as useMixpanel3 } from "@elementor/events";
872
986
  import { LinkIcon } from "@elementor/icons";
873
- import { __ as __9 } from "@wordpress/i18n";
987
+ import { __ as __11 } from "@wordpress/i18n";
874
988
  function useDocumentCopyAndShareProps() {
875
989
  const document2 = useActiveDocument4();
876
990
  const { copyAndShare } = useActiveDocumentActions2();
877
- const { dispatchEvent: dispatchEvent2, config } = useMixpanel2();
991
+ const { dispatchEvent: dispatchEvent2, config } = useMixpanel3();
878
992
  return {
879
993
  icon: LinkIcon,
880
- title: __9("Copy and Share", "elementor"),
994
+ title: __11("Copy and Share", "elementor"),
881
995
  onClick: () => {
882
996
  const eventName = config?.names?.editorOne?.topBarPublishDropdown;
883
997
  if (eventName) {
@@ -905,16 +1019,16 @@ import {
905
1019
  __useActiveDocument as useActiveDocument5,
906
1020
  __useActiveDocumentActions as useActiveDocumentActions3
907
1021
  } from "@elementor/editor-documents";
908
- import { useMixpanel as useMixpanel3 } from "@elementor/events";
1022
+ import { useMixpanel as useMixpanel4 } from "@elementor/events";
909
1023
  import { FileReportIcon } from "@elementor/icons";
910
- import { __ as __10 } from "@wordpress/i18n";
1024
+ import { __ as __12 } from "@wordpress/i18n";
911
1025
  function useDocumentSaveDraftProps() {
912
1026
  const document2 = useActiveDocument5();
913
1027
  const { saveDraft } = useActiveDocumentActions3();
914
- const { dispatchEvent: dispatchEvent2, config } = useMixpanel3();
1028
+ const { dispatchEvent: dispatchEvent2, config } = useMixpanel4();
915
1029
  return {
916
1030
  icon: FileReportIcon,
917
- title: __10("Save Draft", "elementor"),
1031
+ title: __12("Save Draft", "elementor"),
918
1032
  onClick: () => {
919
1033
  const eventName = config?.names?.editorOne?.topBarPublishDropdown;
920
1034
  if (eventName) {
@@ -938,15 +1052,15 @@ function useDocumentSaveDraftProps() {
938
1052
 
939
1053
  // src/extensions/documents-save/hooks/use-document-save-template-props.ts
940
1054
  import { __useActiveDocumentActions as useActiveDocumentActions4 } from "@elementor/editor-documents";
941
- import { useMixpanel as useMixpanel4 } from "@elementor/events";
1055
+ import { useMixpanel as useMixpanel5 } from "@elementor/events";
942
1056
  import { FolderIcon } from "@elementor/icons";
943
- import { __ as __11 } from "@wordpress/i18n";
1057
+ import { __ as __13 } from "@wordpress/i18n";
944
1058
  function useDocumentSaveTemplateProps() {
945
1059
  const { saveTemplate } = useActiveDocumentActions4();
946
- const { dispatchEvent: dispatchEvent2, config } = useMixpanel4();
1060
+ const { dispatchEvent: dispatchEvent2, config } = useMixpanel5();
947
1061
  return {
948
1062
  icon: FolderIcon,
949
- title: __11("Save as Template", "elementor"),
1063
+ title: __13("Save as Template", "elementor"),
950
1064
  onClick: () => {
951
1065
  const eventName = config?.names?.editorOne?.topBarPublishDropdown;
952
1066
  if (eventName) {
@@ -971,12 +1085,12 @@ function useDocumentSaveTemplateProps() {
971
1085
  import { __useActiveDocument as useActiveDocument6 } from "@elementor/editor-documents";
972
1086
  import { __privateRunCommand as runCommand2 } from "@elementor/editor-v1-adapters";
973
1087
  import { EyeIcon as EyeIcon2 } from "@elementor/icons";
974
- import { __ as __12 } from "@wordpress/i18n";
1088
+ import { __ as __14 } from "@wordpress/i18n";
975
1089
  function useDocumentViewAsMarkdownProps() {
976
1090
  const document2 = useActiveDocument6();
977
1091
  return {
978
1092
  icon: EyeIcon2,
979
- title: __12("View as Markdown", "elementor"),
1093
+ title: __14("View as Markdown", "elementor"),
980
1094
  onClick: async () => {
981
1095
  const baseUrl = document2?.links?.wpPreview || document2?.links?.permalink;
982
1096
  if (!baseUrl) {
@@ -995,15 +1109,15 @@ function useDocumentViewAsMarkdownProps() {
995
1109
  // src/extensions/documents-save/hooks/use-document-view-page-props.ts
996
1110
  import { __useActiveDocument as useActiveDocument7 } from "@elementor/editor-documents";
997
1111
  import { __privateRunCommand as runCommand3 } from "@elementor/editor-v1-adapters";
998
- import { useMixpanel as useMixpanel5 } from "@elementor/events";
1112
+ import { useMixpanel as useMixpanel6 } from "@elementor/events";
999
1113
  import { EyeIcon as EyeIcon3 } from "@elementor/icons";
1000
- import { __ as __13 } from "@wordpress/i18n";
1114
+ import { __ as __15 } from "@wordpress/i18n";
1001
1115
  function useDocumentViewPageProps() {
1002
1116
  const document2 = useActiveDocument7();
1003
- const { dispatchEvent: dispatchEvent2, config } = useMixpanel5();
1117
+ const { dispatchEvent: dispatchEvent2, config } = useMixpanel6();
1004
1118
  return {
1005
1119
  icon: EyeIcon3,
1006
- title: __13("View Page", "elementor"),
1120
+ title: __15("View Page", "elementor"),
1007
1121
  onClick: () => {
1008
1122
  const eventName = config?.names?.editorOne?.topBarPublishDropdown;
1009
1123
  if (eventName) {
@@ -1073,7 +1187,7 @@ import {
1073
1187
  __privateUseRouteStatus as useRouteStatus
1074
1188
  } from "@elementor/editor-v1-adapters";
1075
1189
  import { FileSettingsIcon } from "@elementor/icons";
1076
- import { __ as __14 } from "@wordpress/i18n";
1190
+ import { __ as __16 } from "@wordpress/i18n";
1077
1191
  function useActionProps3() {
1078
1192
  const activeDocument = useActiveDocument8();
1079
1193
  const hostDocument = useHostDocument();
@@ -1081,8 +1195,8 @@ function useActionProps3() {
1081
1195
  const document2 = activeDocument && activeDocument.type.value !== "kit" ? activeDocument : hostDocument;
1082
1196
  const ButtonTitle = document2 ? (
1083
1197
  /* translators: %s: Post type label. */
1084
- __14("%s Settings", "elementor").replace("%s", document2.type.label)
1085
- ) : __14("Document Settings", "elementor");
1198
+ __16("%s Settings", "elementor").replace("%s", document2.type.label)
1199
+ ) : __16("Document Settings", "elementor");
1086
1200
  return {
1087
1201
  title: ButtonTitle,
1088
1202
  icon: FileSettingsIcon,
@@ -1122,11 +1236,11 @@ import {
1122
1236
  __privateUseRouteStatus as useRouteStatus2
1123
1237
  } from "@elementor/editor-v1-adapters";
1124
1238
  import { PlusIcon } from "@elementor/icons";
1125
- import { __ as __15 } from "@wordpress/i18n";
1239
+ import { __ as __17 } from "@wordpress/i18n";
1126
1240
  function useActionProps4() {
1127
1241
  const { isActive, isBlocked } = useRouteStatus2("panel/elements");
1128
1242
  return {
1129
- title: __15("Add Element", "elementor"),
1243
+ title: __17("Add Element", "elementor"),
1130
1244
  icon: PlusIcon,
1131
1245
  onClick: () => {
1132
1246
  const extendedWindow = window;
@@ -1153,10 +1267,10 @@ import {
1153
1267
  routeOpenEvent,
1154
1268
  v1ReadyEvent
1155
1269
  } from "@elementor/editor-v1-adapters";
1156
- import { __ as __16 } from "@wordpress/i18n";
1270
+ import { __ as __18 } from "@wordpress/i18n";
1157
1271
  function syncPanelTitle() {
1158
- const panelTitle = __16("Elements", "elementor");
1159
- const tabTitle = __16("Widgets", "elementor");
1272
+ const panelTitle = __18("Elements", "elementor");
1273
+ const tabTitle = __18("Widgets", "elementor");
1160
1274
  listenTo(routeOpenEvent("panel/elements"), () => {
1161
1275
  setPanelTitle(panelTitle);
1162
1276
  setTabTitle(tabTitle);
@@ -1191,7 +1305,7 @@ function init6() {
1191
1305
  // src/extensions/feedback/index.ts
1192
1306
  import { isExperimentActive as isExperimentActive2 } from "@elementor/editor-v1-adapters";
1193
1307
  import { MessageLinesIcon } from "@elementor/icons";
1194
- import { __ as __17 } from "@wordpress/i18n";
1308
+ import { __ as __19 } from "@wordpress/i18n";
1195
1309
  function init7() {
1196
1310
  const isActive = isExperimentActive2(EXPERIMENT_NAME);
1197
1311
  if (!isActive) {
@@ -1204,7 +1318,7 @@ function init7() {
1204
1318
  useProps: () => {
1205
1319
  return {
1206
1320
  icon: MessageLinesIcon,
1207
- title: __17("Send Feedback", "elementor"),
1321
+ title: __19("Send Feedback", "elementor"),
1208
1322
  onClick: () => {
1209
1323
  dispatchEvent(new CustomEvent(FEEDBACK_TOGGLE_EVENT));
1210
1324
  }
@@ -1216,10 +1330,10 @@ function init7() {
1216
1330
  // src/extensions/finder/hooks/use-action-props.ts
1217
1331
  import { __privateRunCommand as runCommand4 } from "@elementor/editor-v1-adapters";
1218
1332
  import { SearchIcon } from "@elementor/icons";
1219
- import { __ as __18 } from "@wordpress/i18n";
1333
+ import { __ as __20 } from "@wordpress/i18n";
1220
1334
  function useActionProps5() {
1221
1335
  return {
1222
- title: __18("Finder", "elementor"),
1336
+ title: __20("Finder", "elementor"),
1223
1337
  icon: SearchIcon,
1224
1338
  onClick: () => {
1225
1339
  const extendedWindow = window;
@@ -1248,10 +1362,10 @@ function init8() {
1248
1362
 
1249
1363
  // src/extensions/help/hooks/use-action-props.ts
1250
1364
  import { HelpIcon } from "@elementor/icons";
1251
- import { __ as __19 } from "@wordpress/i18n";
1365
+ import { __ as __21 } from "@wordpress/i18n";
1252
1366
  function useActionProps6() {
1253
1367
  return {
1254
- title: __19("Help Center", "elementor"),
1368
+ title: __21("Help Center", "elementor"),
1255
1369
  href: "https://go.elementor.com/editor-top-bar-learn/",
1256
1370
  icon: HelpIcon,
1257
1371
  target: "_blank",
@@ -1286,11 +1400,11 @@ import {
1286
1400
  __privateUseRouteStatus as useRouteStatus3
1287
1401
  } from "@elementor/editor-v1-adapters";
1288
1402
  import { HistoryIcon } from "@elementor/icons";
1289
- import { __ as __20 } from "@wordpress/i18n";
1403
+ import { __ as __22 } from "@wordpress/i18n";
1290
1404
  function useActionProps7() {
1291
1405
  const { isActive, isBlocked } = useRouteStatus3("panel/history");
1292
1406
  return {
1293
- title: __20("History", "elementor"),
1407
+ title: __22("History", "elementor"),
1294
1408
  icon: HistoryIcon,
1295
1409
  onClick: () => {
1296
1410
  const extendedWindow = window;
@@ -1322,11 +1436,11 @@ function init10() {
1322
1436
  // src/extensions/keyboard-shortcuts/hooks/use-action-props.ts
1323
1437
  import { __privateRunCommand as runCommand5 } from "@elementor/editor-v1-adapters";
1324
1438
  import { KeyboardIcon } from "@elementor/icons";
1325
- import { __ as __21 } from "@wordpress/i18n";
1439
+ import { __ as __23 } from "@wordpress/i18n";
1326
1440
  function useActionProps8() {
1327
1441
  return {
1328
1442
  icon: KeyboardIcon,
1329
- title: __21("Keyboard Shortcuts", "elementor"),
1443
+ title: __23("Keyboard Shortcuts", "elementor"),
1330
1444
  onClick: () => {
1331
1445
  const extendedWindow = window;
1332
1446
  const config = extendedWindow?.elementorCommon?.eventsManager?.config;
@@ -1354,7 +1468,7 @@ function init11() {
1354
1468
  }
1355
1469
 
1356
1470
  // src/extensions/responsive/components/breakpoints-switcher.tsx
1357
- import * as React23 from "react";
1471
+ import * as React25 from "react";
1358
1472
  import {
1359
1473
  useActivateBreakpoint,
1360
1474
  useActiveBreakpoint,
@@ -1370,7 +1484,7 @@ import {
1370
1484
  WidescreenIcon
1371
1485
  } from "@elementor/icons";
1372
1486
  import { Tab, Tabs, Tooltip as BaseTooltip2 } from "@elementor/ui";
1373
- import { __ as __22 } from "@wordpress/i18n";
1487
+ import { __ as __24 } from "@wordpress/i18n";
1374
1488
  function BreakpointsSwitcher() {
1375
1489
  const breakpoints = useBreakpoints();
1376
1490
  const activeBreakpoint = useActiveBreakpoint();
@@ -1392,14 +1506,14 @@ function BreakpointsSwitcher() {
1392
1506
  }
1393
1507
  activateBreakpoint(value);
1394
1508
  };
1395
- return /* @__PURE__ */ React23.createElement(
1509
+ return /* @__PURE__ */ React25.createElement(
1396
1510
  Tabs,
1397
1511
  {
1398
1512
  textColor: "inherit",
1399
1513
  indicatorColor: "secondary",
1400
1514
  value: activeBreakpoint,
1401
1515
  onChange,
1402
- "aria-label": __22("Switch Device", "elementor"),
1516
+ "aria-label": __24("Switch Device", "elementor"),
1403
1517
  sx: {
1404
1518
  "& .MuiTabs-indicator": {
1405
1519
  backgroundColor: "text.primary"
@@ -1409,13 +1523,13 @@ function BreakpointsSwitcher() {
1409
1523
  breakpoints.map(({ id, label, type, width }) => {
1410
1524
  const Icon = iconsMap[id];
1411
1525
  const title = labelsMap[type || "default"].replace("%s", label).replace("%d", width?.toString() || "");
1412
- return /* @__PURE__ */ React23.createElement(
1526
+ return /* @__PURE__ */ React25.createElement(
1413
1527
  Tab,
1414
1528
  {
1415
1529
  value: id,
1416
1530
  key: id,
1417
1531
  "aria-label": title,
1418
- icon: /* @__PURE__ */ React23.createElement(Tooltip4, { title }, /* @__PURE__ */ React23.createElement(Icon, null)),
1532
+ icon: /* @__PURE__ */ React25.createElement(Tooltip4, { title }, /* @__PURE__ */ React25.createElement(Icon, null)),
1419
1533
  sx: { minWidth: "auto" },
1420
1534
  "data-testid": `switch-device-to-${id}`
1421
1535
  }
@@ -1424,7 +1538,7 @@ function BreakpointsSwitcher() {
1424
1538
  );
1425
1539
  }
1426
1540
  function Tooltip4(props) {
1427
- return /* @__PURE__ */ React23.createElement(
1541
+ return /* @__PURE__ */ React25.createElement(
1428
1542
  BaseTooltip2,
1429
1543
  {
1430
1544
  PopperProps: {
@@ -1450,9 +1564,9 @@ var iconsMap = {
1450
1564
  var labelsMap = {
1451
1565
  default: "%s",
1452
1566
  // translators: %s: Breakpoint label, %d: Breakpoint size.
1453
- "min-width": __22("%s (%dpx and up)", "elementor"),
1567
+ "min-width": __24("%s (%dpx and up)", "elementor"),
1454
1568
  // translators: %s: Breakpoint label, %d: Breakpoint size.
1455
- "max-width": __22("%s (up to %dpx)", "elementor")
1569
+ "max-width": __24("%s (up to %dpx)", "elementor")
1456
1570
  };
1457
1571
 
1458
1572
  // src/extensions/responsive/index.ts
@@ -1471,10 +1585,10 @@ function init12() {
1471
1585
  import { injectIntoTop } from "@elementor/editor";
1472
1586
 
1473
1587
  // src/extensions/site-settings/components/portalled-primary-action.tsx
1474
- import * as React26 from "react";
1588
+ import * as React28 from "react";
1475
1589
 
1476
1590
  // src/extensions/site-settings/components/portal.tsx
1477
- import * as React24 from "react";
1591
+ import * as React26 from "react";
1478
1592
  import {
1479
1593
  __privateIsRouteActive as isRouteActive2,
1480
1594
  __privateUseListenTo as useListenTo,
@@ -1490,24 +1604,24 @@ function Portal(props) {
1490
1604
  if (!containerRef.current) {
1491
1605
  return null;
1492
1606
  }
1493
- return /* @__PURE__ */ React24.createElement(BasePortal, { container: containerRef.current, ...props });
1607
+ return /* @__PURE__ */ React26.createElement(BasePortal, { container: containerRef.current, ...props });
1494
1608
  }
1495
1609
  function getContainerRef() {
1496
1610
  return isRouteActive2("panel/global") ? { current: document.querySelector("#elementor-panel-inner") } : { current: null };
1497
1611
  }
1498
1612
 
1499
1613
  // src/extensions/site-settings/components/primary-action.tsx
1500
- import * as React25 from "react";
1614
+ import * as React27 from "react";
1501
1615
  import {
1502
1616
  __useActiveDocument as useActiveDocument9,
1503
1617
  __useActiveDocumentActions as useActiveDocumentActions5
1504
1618
  } from "@elementor/editor-documents";
1505
- import { Button as Button3, CircularProgress as CircularProgress2, Paper } from "@elementor/ui";
1506
- import { __ as __23 } from "@wordpress/i18n";
1619
+ import { Button as Button4, CircularProgress as CircularProgress2, Paper } from "@elementor/ui";
1620
+ import { __ as __25 } from "@wordpress/i18n";
1507
1621
  function PrimaryAction2() {
1508
1622
  const document2 = useActiveDocument9();
1509
1623
  const { save } = useActiveDocumentActions5();
1510
- return /* @__PURE__ */ React25.createElement(
1624
+ return /* @__PURE__ */ React27.createElement(
1511
1625
  Paper,
1512
1626
  {
1513
1627
  sx: {
@@ -1517,8 +1631,8 @@ function PrimaryAction2() {
1517
1631
  borderColor: "divider"
1518
1632
  }
1519
1633
  },
1520
- /* @__PURE__ */ React25.createElement(
1521
- Button3,
1634
+ /* @__PURE__ */ React27.createElement(
1635
+ Button4,
1522
1636
  {
1523
1637
  variant: "contained",
1524
1638
  disabled: !document2 || !document2.isDirty,
@@ -1526,14 +1640,14 @@ function PrimaryAction2() {
1526
1640
  sx: { width: "100%" },
1527
1641
  onClick: () => document2 && !document2.isSaving ? save() : null
1528
1642
  },
1529
- document2?.isSaving ? /* @__PURE__ */ React25.createElement(CircularProgress2, null) : __23("Save Changes", "elementor")
1643
+ document2?.isSaving ? /* @__PURE__ */ React27.createElement(CircularProgress2, null) : __25("Save Changes", "elementor")
1530
1644
  )
1531
1645
  );
1532
1646
  }
1533
1647
 
1534
1648
  // src/extensions/site-settings/components/portalled-primary-action.tsx
1535
1649
  function PortalledPrimaryAction() {
1536
- return /* @__PURE__ */ React26.createElement(Portal, null, /* @__PURE__ */ React26.createElement(PrimaryAction2, null));
1650
+ return /* @__PURE__ */ React28.createElement(Portal, null, /* @__PURE__ */ React28.createElement(PrimaryAction2, null));
1537
1651
  }
1538
1652
 
1539
1653
  // src/extensions/site-settings/hooks/use-action-props.ts
@@ -1542,13 +1656,13 @@ import {
1542
1656
  __privateUseRouteStatus as useRouteStatus4
1543
1657
  } from "@elementor/editor-v1-adapters";
1544
1658
  import { SettingsIcon } from "@elementor/icons";
1545
- import { __ as __24 } from "@wordpress/i18n";
1659
+ import { __ as __26 } from "@wordpress/i18n";
1546
1660
  function useActionProps9() {
1547
1661
  const { isActive, isBlocked } = useRouteStatus4("panel/global", {
1548
1662
  blockOnKitRoutes: false
1549
1663
  });
1550
1664
  return {
1551
- title: __24("Site Settings", "elementor"),
1665
+ title: __26("Site Settings", "elementor"),
1552
1666
  icon: SettingsIcon,
1553
1667
  onClick: () => {
1554
1668
  const extendedWindow = window;
@@ -1592,11 +1706,11 @@ import {
1592
1706
  __privateUseRouteStatus as useRouteStatus5
1593
1707
  } from "@elementor/editor-v1-adapters";
1594
1708
  import { StructureIcon } from "@elementor/icons";
1595
- import { __ as __25 } from "@wordpress/i18n";
1709
+ import { __ as __27 } from "@wordpress/i18n";
1596
1710
  function useActionProps10() {
1597
1711
  const { isActive, isBlocked } = useRouteStatus5("navigator");
1598
1712
  return {
1599
- title: __25("Structure", "elementor"),
1713
+ title: __27("Structure", "elementor"),
1600
1714
  icon: StructureIcon,
1601
1715
  onClick: () => {
1602
1716
  const extendedWindow = window;
@@ -1628,11 +1742,11 @@ function init14() {
1628
1742
  // src/extensions/theme-builder/hooks/use-action-props.ts
1629
1743
  import { __privateRunCommand as runCommand8 } from "@elementor/editor-v1-adapters";
1630
1744
  import { ThemeBuilderIcon } from "@elementor/icons";
1631
- import { __ as __26 } from "@wordpress/i18n";
1745
+ import { __ as __28 } from "@wordpress/i18n";
1632
1746
  function useActionProps11() {
1633
1747
  return {
1634
1748
  icon: ThemeBuilderIcon,
1635
- title: __26("Theme Builder", "elementor"),
1749
+ title: __28("Theme Builder", "elementor"),
1636
1750
  onClick: () => {
1637
1751
  const extendedWindow = window;
1638
1752
  const config = extendedWindow?.elementorCommon?.eventsManager?.config;
@@ -1665,12 +1779,12 @@ import {
1665
1779
  __privateUseRouteStatus as useRouteStatus6
1666
1780
  } from "@elementor/editor-v1-adapters";
1667
1781
  import { ToggleRightIcon } from "@elementor/icons";
1668
- import { __ as __27 } from "@wordpress/i18n";
1782
+ import { __ as __29 } from "@wordpress/i18n";
1669
1783
  function useActionProps12() {
1670
1784
  const { isActive, isBlocked } = useRouteStatus6("panel/editor-preferences");
1671
1785
  return {
1672
1786
  icon: ToggleRightIcon,
1673
- title: __27("User Preferences", "elementor"),
1787
+ title: __29("User Preferences", "elementor"),
1674
1788
  onClick: () => {
1675
1789
  const extendedWindow = window;
1676
1790
  const config = extendedWindow?.elementorCommon?.eventsManager?.config;
@@ -1702,7 +1816,7 @@ function init16() {
1702
1816
  // src/extensions/wordpress/index.ts
1703
1817
  import { __useActiveDocument as useActiveDocument10 } from "@elementor/editor-documents";
1704
1818
  import { WordpressIcon } from "@elementor/icons";
1705
- import { __ as __28 } from "@wordpress/i18n";
1819
+ import { __ as __30 } from "@wordpress/i18n";
1706
1820
  function init17() {
1707
1821
  mainMenu.registerLink({
1708
1822
  id: "exit-to-wordpress",
@@ -1711,7 +1825,7 @@ function init17() {
1711
1825
  useProps: () => {
1712
1826
  const document2 = useActiveDocument10();
1713
1827
  return {
1714
- title: __28("Exit to WordPress", "elementor"),
1828
+ title: __30("Exit to WordPress", "elementor"),
1715
1829
  href: document2?.links?.platformEdit,
1716
1830
  icon: WordpressIcon,
1717
1831
  onClick: () => {