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

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,162 @@ 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 as useEffect2, useState as useState2 } from "react";
337
+ import { useCurrentUserCapabilities } from "@elementor/editor-current-user";
338
+ import { ThemeProvider } from "@elementor/editor-ui";
339
+ import { useMixpanel } from "@elementor/events";
340
+ import { Infotip } from "@elementor/ui";
341
+
342
+ // src/extensions/angie/angie-consts.ts
343
+ import { __ as __2 } from "@wordpress/i18n";
344
+ var ANGIE_GUIDE_TOGGLE_EVENT = "elementor/editor/toggle-angie-guide";
345
+ var CREATE_WIDGET_EVENT = "elementor/editor/create-widget";
346
+ var ANGIE_BUTTON_ARIA_LABEL = __2("Angie", "elementor");
347
+ var ANGIE_LEARN_MORE_URL = "https://go.elementor.com/angie-learn-more";
348
+ var ANGIE_DESCRIPTION = __2(
349
+ "Angie lets you generate custom widgets, sections, and code using simple instructions.",
350
+ "elementor"
351
+ );
352
+ var AI_WIDGET_CTA_VIEWED_EVENT = "ai_widget_cta_viewed";
353
+ var ANGIE_TOP_BAR_PROMOTION_IMAGE_URL = "https://assets.elementor.com/packages/v1/images/angie-top-bar-promotion.svg";
354
+ var ANGIE_TOP_BAR_DESCRIPTION = __2("Build custom widgets using simple instructions.", "elementor");
355
+
356
+ // src/extensions/angie/components/angie-guide-card.tsx
335
357
  import * as React14 from "react";
336
- import { Stack as Stack2 } from "@elementor/ui";
358
+ import { Button, Chip, ClickAwayListener, CloseButton, Image, Stack as Stack2, Typography } from "@elementor/ui";
359
+ import { __ as __3 } from "@wordpress/i18n";
360
+ function AngieGuideCard({ imageUrl, description, learnMoreUrl, onInstall, onClose }) {
361
+ 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(
362
+ CloseButton,
363
+ {
364
+ edge: "end",
365
+ sx: { ml: "auto" },
366
+ slotProps: { icon: { fontSize: "small" } },
367
+ onClick: onClose
368
+ }
369
+ )), /* @__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(
370
+ Button,
371
+ {
372
+ variant: "text",
373
+ size: "small",
374
+ color: "secondary",
375
+ onClick: () => {
376
+ window.open(learnMoreUrl, "_blank", "noopener,noreferrer");
377
+ onClose();
378
+ }
379
+ },
380
+ __3("Learn More", "elementor")
381
+ ), onInstall && /* @__PURE__ */ React14.createElement(Button, { variant: "contained", size: "small", color: "accent", onClick: onInstall }, __3("Try for free", "elementor")))));
382
+ }
383
+
384
+ // src/extensions/angie/hooks/use-auto-show.ts
385
+ import { useEffect } from "react";
386
+ function useAutoShow() {
387
+ useEffect(() => {
388
+ if (!window.elementor?.config?.angie?.autoShow) {
389
+ return;
390
+ }
391
+ const id = setTimeout(() => {
392
+ window.dispatchEvent(new CustomEvent(ANGIE_GUIDE_TOGGLE_EVENT));
393
+ }, 0);
394
+ return () => clearTimeout(id);
395
+ }, []);
396
+ }
397
+
398
+ // src/extensions/angie/components/angie-guide-location.tsx
399
+ function AngieGuideLocation() {
400
+ useAutoShow();
401
+ const [anchorEl, setAnchorEl] = useState2(null);
402
+ const { dispatchEvent: dispatchEvent2 } = useMixpanel();
403
+ const { isAdmin } = useCurrentUserCapabilities();
404
+ const isOpen = Boolean(anchorEl);
405
+ useEffect2(() => {
406
+ const handleToggle = () => {
407
+ setAnchorEl((prev) => {
408
+ if (prev) {
409
+ return null;
410
+ }
411
+ return document.querySelector(`[aria-label="${ANGIE_BUTTON_ARIA_LABEL}"]`);
412
+ });
413
+ };
414
+ window.addEventListener(ANGIE_GUIDE_TOGGLE_EVENT, handleToggle);
415
+ return () => {
416
+ window.removeEventListener(ANGIE_GUIDE_TOGGLE_EVENT, handleToggle);
417
+ };
418
+ }, []);
419
+ const handleClose = () => setAnchorEl(null);
420
+ const handleInstall = async () => {
421
+ dispatchEvent2?.(AI_WIDGET_CTA_VIEWED_EVENT, {
422
+ entry_point: "top_bar_icon"
423
+ });
424
+ window.dispatchEvent(
425
+ new CustomEvent(CREATE_WIDGET_EVENT, {
426
+ detail: {
427
+ entry_point: "top_bar_icon"
428
+ }
429
+ })
430
+ );
431
+ handleClose();
432
+ };
433
+ return /* @__PURE__ */ React15.createElement(ThemeProvider, null, /* @__PURE__ */ React15.createElement(
434
+ Infotip,
435
+ {
436
+ content: /* @__PURE__ */ React15.createElement(
437
+ AngieGuideCard,
438
+ {
439
+ imageUrl: ANGIE_TOP_BAR_PROMOTION_IMAGE_URL,
440
+ description: ANGIE_TOP_BAR_DESCRIPTION,
441
+ learnMoreUrl: ANGIE_LEARN_MORE_URL,
442
+ onInstall: isAdmin ? handleInstall : void 0,
443
+ onClose: handleClose
444
+ }
445
+ ),
446
+ placement: "bottom-start",
447
+ open: isOpen,
448
+ disableHoverListener: true,
449
+ PopperProps: {
450
+ anchorEl,
451
+ modifiers: [
452
+ {
453
+ name: "offset",
454
+ options: { offset: [-4, -4] }
455
+ }
456
+ ]
457
+ }
458
+ },
459
+ /* @__PURE__ */ React15.createElement("span", null)
460
+ ));
461
+ }
462
+
463
+ // src/components/ui/toolbar-menu.tsx
464
+ import * as React16 from "react";
465
+ import { Stack as Stack3 } from "@elementor/ui";
337
466
  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));
467
+ 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
468
  }
340
469
 
341
470
  // src/components/ui/toolbar-menu-more.tsx
342
- import * as React15 from "react";
471
+ import * as React17 from "react";
343
472
  import { DotsVerticalIcon } from "@elementor/icons";
344
473
  import { bindMenu as bindMenu2, bindTrigger as bindTrigger2, usePopupState as usePopupState2 } from "@elementor/ui";
345
- import { __ as __2 } from "@wordpress/i18n";
474
+ import { __ as __4 } from "@wordpress/i18n";
346
475
  function ToolbarMenuMore({ children, id }) {
347
476
  const popupState = usePopupState2({
348
477
  variant: "popover",
349
478
  popupId: id
350
479
  });
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));
480
+ 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
481
  }
353
482
 
354
483
  // src/components/locations/integrations-menu-location.tsx
355
- import * as React16 from "react";
484
+ import * as React18 from "react";
356
485
  import { PlugIcon } from "@elementor/icons";
357
486
  import { bindMenu as bindMenu3, bindTrigger as bindTrigger3, usePopupState as usePopupState3 } from "@elementor/ui";
358
- import { __ as __3 } from "@wordpress/i18n";
487
+ import { __ as __5 } from "@wordpress/i18n";
359
488
  var { useMenuItems: useMenuItems2 } = integrationsMenu;
360
489
  function IntegrationsMenuLocation() {
361
490
  const menuItems = useMenuItems2();
@@ -366,7 +495,7 @@ function IntegrationsMenuLocation() {
366
495
  if (menuItems.default.length === 0) {
367
496
  return null;
368
497
  }
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(
498
+ 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
499
  PopoverMenu,
371
500
  {
372
501
  onClick: popupState.close,
@@ -374,32 +503,32 @@ function IntegrationsMenuLocation() {
374
503
  marginThreshold: 8,
375
504
  open: popupState.isOpen
376
505
  },
377
- menuItems.default.map(({ MenuItem: IntegrationsMenuItem, id }) => /* @__PURE__ */ React16.createElement(IntegrationsMenuItem, { key: id }))
506
+ menuItems.default.map(({ MenuItem: IntegrationsMenuItem, id }) => /* @__PURE__ */ React18.createElement(IntegrationsMenuItem, { key: id }))
378
507
  ));
379
508
  }
380
509
 
381
510
  // 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";
511
+ import * as React19 from "react";
512
+ import { useEffect as useEffect3, useState as useState3 } from "react";
513
+ import { ThemeProvider as ThemeProvider2 } from "@elementor/editor-ui";
385
514
  import { isExperimentActive } from "@elementor/editor-v1-adapters";
386
- import { useMixpanel } from "@elementor/events";
515
+ import { useMixpanel as useMixpanel2 } from "@elementor/events";
387
516
  import { httpService } from "@elementor/http-client";
388
517
  import { AlertCircleIcon, CheckIcon } from "@elementor/icons";
389
518
  import {
390
519
  bindDialog,
391
- Button,
392
- CloseButton,
520
+ Button as Button2,
521
+ CloseButton as CloseButton2,
393
522
  Dialog,
394
523
  DialogContent,
395
524
  DialogHeader,
396
525
  DialogTitle,
397
526
  Popover,
398
- Stack as Stack3,
527
+ Stack as Stack4,
399
528
  TextField,
400
529
  usePopupState as usePopupState4
401
530
  } from "@elementor/ui";
402
- import { __ as __4 } from "@wordpress/i18n";
531
+ import { __ as __6 } from "@wordpress/i18n";
403
532
 
404
533
  // src/extensions/feedback/feedback-consts.ts
405
534
  var EXPERIMENT_NAME = "in_editor_feedback";
@@ -413,23 +542,23 @@ var checkIfUserIsConnected = () => {
413
542
  function SendFeedbackPopupLocation() {
414
543
  const isActive = isExperimentActive(EXPERIMENT_NAME);
415
544
  const extendedWindow = window;
416
- const [isUserConnected, setIsUserConnected] = useState2(checkIfUserIsConnected());
545
+ const [isUserConnected, setIsUserConnected] = useState3(checkIfUserIsConnected());
417
546
  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();
547
+ const [feedbackContent, setFeedbackContent] = useState3("");
548
+ const [feedbackResult, setFeedbackResult] = useState3(null);
549
+ const [submitDisabled, setSubmitDisabled] = useState3(true);
550
+ const { dispatchEvent: trackEvent2 = (...args) => void args } = useMixpanel2();
422
551
  const popupState = usePopupState4({
423
552
  variant: "dialog",
424
553
  popupId: FEEDBACK_TOGGLE_EVENT
425
554
  });
426
- const [isFetching, setIsFetching] = useState2(false);
427
- useEffect(() => {
555
+ const [isFetching, setIsFetching] = useState3(false);
556
+ useEffect3(() => {
428
557
  const handler = () => {
429
558
  popupState.toggle();
430
559
  setIsUserConnected(checkIfUserIsConnected());
431
560
  setFeedbackResult(null);
432
- trackEvent("feedback_modal_opened", {
561
+ trackEvent2("feedback_modal_opened", {
433
562
  source: "top_bar",
434
563
  context: "v4_beta"
435
564
  });
@@ -438,13 +567,13 @@ function SendFeedbackPopupLocation() {
438
567
  return () => {
439
568
  window.removeEventListener(FEEDBACK_TOGGLE_EVENT, handler);
440
569
  };
441
- }, [popupState, trackEvent]);
442
- useEffect(() => {
570
+ }, [popupState, trackEvent2]);
571
+ useEffect3(() => {
443
572
  setSubmitDisabled(feedbackContent.trim().length < 10 || !isUserConnected || isFetching);
444
573
  }, [feedbackContent, feedbackResult, isUserConnected, isFetching]);
445
574
  const handleClose = () => {
446
575
  popupState.close();
447
- trackEvent("feedback_modal_closed", {
576
+ trackEvent2("feedback_modal_closed", {
448
577
  feedback_text: feedbackContent
449
578
  });
450
579
  };
@@ -464,7 +593,7 @@ function SendFeedbackPopupLocation() {
464
593
  if (!response.data.success && response.data.code.toString() === "401" || response.data.code.toString() === "403") {
465
594
  setIsUserConnected(false);
466
595
  }
467
- trackEvent(response.data.success ? "feedback_submitted" : "feedback_error", {
596
+ trackEvent2(response.data.success ? "feedback_submitted" : "feedback_error", {
468
597
  feedback_length: feedbackContent.length,
469
598
  error_type: response.data.success ? void 0 : "server",
470
599
  error_message: response.data.success ? void 0 : response.data.message
@@ -474,8 +603,8 @@ function SendFeedbackPopupLocation() {
474
603
  if (!isActive) {
475
604
  return null;
476
605
  }
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,
606
+ 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(
607
+ Stack4,
479
608
  {
480
609
  display: "flex",
481
610
  direction: "row",
@@ -483,18 +612,18 @@ function SendFeedbackPopupLocation() {
483
612
  justifyContent: "space-between",
484
613
  width: "100%"
485
614
  },
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(
615
+ __6("Submit Feedback", "elementor"),
616
+ /* @__PURE__ */ React19.createElement(CloseButton2, { onClick: popupState.close })
617
+ ))), /* @__PURE__ */ React19.createElement(DialogContent, null, /* @__PURE__ */ React19.createElement(Stack4, { direction: "column", gap: 2 }, isUserConnected ? /* @__PURE__ */ React19.createElement(React19.Fragment, null, /* @__PURE__ */ React19.createElement(
489
618
  TextField,
490
619
  {
491
620
  autofocus: true,
492
- placeholder: __4(
621
+ placeholder: __6(
493
622
  "E.g. Can you add ABC features? I want to do ABC and it\u2019s important because \u2026",
494
623
  "elementor"
495
624
  ),
496
625
  fullwith: true,
497
- label: __4("Your Feedback", "elementor"),
626
+ label: __6("Your Feedback", "elementor"),
498
627
  multiline: true,
499
628
  id: "elementor-feedback-usercontent",
500
629
  rows: 6,
@@ -503,8 +632,8 @@ function SendFeedbackPopupLocation() {
503
632
  onChange: (event) => setFeedbackContent(event.target.value),
504
633
  value: feedbackContent
505
634
  }
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,
635
+ ), /* @__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(
636
+ Button2,
508
637
  {
509
638
  disabled: submitDisabled,
510
639
  onClick: submitFeedback,
@@ -512,9 +641,9 @@ function SendFeedbackPopupLocation() {
512
641
  color: "primary",
513
642
  size: "small"
514
643
  },
515
- __4("Submit", "elementor")
516
- ))) : /* @__PURE__ */ React17.createElement(React17.Fragment, null, /* @__PURE__ */ React17.createElement(
517
- Button,
644
+ __6("Submit", "elementor")
645
+ ))) : /* @__PURE__ */ React19.createElement(React19.Fragment, null, /* @__PURE__ */ React19.createElement(
646
+ Button2,
518
647
  {
519
648
  variant: "contained",
520
649
  color: "primary",
@@ -524,7 +653,7 @@ function SendFeedbackPopupLocation() {
524
653
  rel: "noopener",
525
654
  onClick: popupState.close
526
655
  },
527
- __4("Connect to Elementor", "elementor")
656
+ __6("Connect to Elementor", "elementor")
528
657
  )))))));
529
658
  }
530
659
 
@@ -535,11 +664,11 @@ function ToolsMenuLocation() {
535
664
  const menuItems = useMenuItems3();
536
665
  const toolbarMenuItems = menuItems.default.slice(0, MAX_TOOLBAR_ACTIONS);
537
666
  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 }))));
667
+ 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
668
  }
540
669
 
541
670
  // src/components/locations/utilities-menu-location.tsx
542
- import * as React19 from "react";
671
+ import * as React21 from "react";
543
672
  import { Fragment as Fragment4 } from "react";
544
673
  var MAX_TOOLBAR_ACTIONS2 = 4;
545
674
  var { useMenuItems: useMenuItems4 } = utilitiesMenu;
@@ -548,40 +677,42 @@ function UtilitiesMenuLocation() {
548
677
  const shouldUsePopover = menuItems.default.length > MAX_TOOLBAR_ACTIONS2 + 1;
549
678
  const toolbarMenuItems = shouldUsePopover ? menuItems.default.slice(0, MAX_TOOLBAR_ACTIONS2) : menuItems.default;
550
679
  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 }))));
680
+ 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
681
  }
553
682
 
554
683
  // src/components/app-bar.tsx
555
684
  function AppBar() {
556
685
  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))))));
686
+ 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
687
  }
559
688
 
560
689
  // src/extensions/angie/hooks/use-action-props.ts
690
+ import { useEffect as useEffect4 } from "react";
561
691
  import { isAngieAvailable } from "@elementor/editor-mcp";
692
+ import { trackEvent } from "@elementor/events";
562
693
  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: `;
694
+ import { __ as __7 } from "@wordpress/i18n";
569
695
  function useActionProps() {
696
+ const hasAngieInstalled = isAngieAvailable();
697
+ const visible = !hasAngieInstalled;
698
+ useEffect4(() => {
699
+ if (!visible) {
700
+ return;
701
+ }
702
+ trackEvent({
703
+ eventName: AI_WIDGET_CTA_VIEWED_EVENT,
704
+ entry_point: "top_bar_icon",
705
+ has_angie_installed: false
706
+ });
707
+ }, [visible]);
570
708
  return {
571
- title: __5("Angie", "elementor"),
709
+ title: __7("Angie", "elementor"),
572
710
  icon: AngieIcon,
573
711
  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
- );
712
+ window.dispatchEvent(new CustomEvent(ANGIE_GUIDE_TOGGLE_EVENT));
582
713
  },
583
714
  selected: false,
584
- visible: !isAngieAvailable()
715
+ visible
585
716
  };
586
717
  }
587
718
 
@@ -597,7 +728,7 @@ function init() {
597
728
  // src/extensions/connect/hooks/use-connect-link-config.tsx
598
729
  import { useCallback } from "react";
599
730
  import { UserIcon } from "@elementor/icons";
600
- import { __ as __6 } from "@wordpress/i18n";
731
+ import { __ as __8 } from "@wordpress/i18n";
601
732
  var dispatchConnectClickEvent = (eventName) => {
602
733
  try {
603
734
  const extendedWindow = window;
@@ -650,12 +781,12 @@ function useConnectLinkConfig() {
650
781
  [extendedWindow]
651
782
  );
652
783
  return isUserConnected ? {
653
- title: __6("My Elementor", "elementor"),
784
+ title: __8("My Elementor", "elementor"),
654
785
  href: extendedWindow?.elementor?.config.user.top_bar.my_elementor_url,
655
786
  icon: UserIcon,
656
787
  target: "_blank"
657
788
  } : {
658
- title: __6("Connect my account", "elementor"),
789
+ title: __8("Connect my account", "elementor"),
659
790
  href: extendedWindow?.elementor?.config.user.top_bar.connect_url,
660
791
  icon: UserIcon,
661
792
  target,
@@ -677,12 +808,12 @@ function init2() {
677
808
  import { __useActiveDocument as useActiveDocument2 } from "@elementor/editor-documents";
678
809
  import { __privateRunCommand as runCommand } from "@elementor/editor-v1-adapters";
679
810
  import { EyeIcon } from "@elementor/icons";
680
- import { __ as __7 } from "@wordpress/i18n";
811
+ import { __ as __9 } from "@wordpress/i18n";
681
812
  function useActionProps2() {
682
813
  const document2 = useActiveDocument2();
683
814
  return {
684
815
  icon: EyeIcon,
685
- title: __7("Preview Changes", "elementor"),
816
+ title: __9("Preview Changes", "elementor"),
686
817
  onClick: () => {
687
818
  const extendedWindow = window;
688
819
  const config = extendedWindow?.elementorCommon?.eventsManager?.config;
@@ -714,7 +845,7 @@ function init3() {
714
845
  }
715
846
 
716
847
  // src/extensions/documents-save/components/primary-action.tsx
717
- import * as React22 from "react";
848
+ import * as React24 from "react";
718
849
  import {
719
850
  __useActiveDocument as useActiveDocument3,
720
851
  __useActiveDocumentActions as useActiveDocumentActions
@@ -725,16 +856,16 @@ import {
725
856
  bindMenu as bindMenu4,
726
857
  bindTrigger as bindTrigger4,
727
858
  Box as Box4,
728
- Button as Button2,
859
+ Button as Button3,
729
860
  ButtonGroup,
730
861
  CircularProgress,
731
862
  Tooltip as Tooltip3,
732
863
  usePopupState as usePopupState5
733
864
  } from "@elementor/ui";
734
- import { __ as __8 } from "@wordpress/i18n";
865
+ import { __ as __10 } from "@wordpress/i18n";
735
866
 
736
867
  // src/extensions/documents-save/components/primary-action-menu.tsx
737
- import * as React21 from "react";
868
+ import * as React23 from "react";
738
869
  import { Divider as Divider3, styled as styled2 } from "@elementor/ui";
739
870
  var { useMenuItems: useMenuItems5 } = documentOptionsMenu;
740
871
  var StyledPopoverMenu = styled2(PopoverMenu)`
@@ -750,7 +881,7 @@ var StyledPopoverMenu = styled2(PopoverMenu)`
750
881
  `;
751
882
  function PrimaryActionMenu(props) {
752
883
  const { save: saveActions, default: defaultActions } = useMenuItems5();
753
- return /* @__PURE__ */ React21.createElement(
884
+ return /* @__PURE__ */ React23.createElement(
754
885
  StyledPopoverMenu,
755
886
  {
756
887
  ...props,
@@ -768,13 +899,13 @@ function PrimaryActionMenu(props) {
768
899
  }
769
900
  },
770
901
  saveActions.map(({ MenuItem: MenuItem2, id }, index) => [
771
- index > 0 && /* @__PURE__ */ React21.createElement(Divider3, { key: `${id}-divider` }),
772
- /* @__PURE__ */ React21.createElement(MenuItem2, { key: id })
902
+ index > 0 && /* @__PURE__ */ React23.createElement(Divider3, { key: `${id}-divider` }),
903
+ /* @__PURE__ */ React23.createElement(MenuItem2, { key: id })
773
904
  ]),
774
- saveActions.length > 0 && defaultActions.length > 0 && /* @__PURE__ */ React21.createElement(Divider3, null),
905
+ saveActions.length > 0 && defaultActions.length > 0 && /* @__PURE__ */ React23.createElement(Divider3, null),
775
906
  defaultActions.map(({ MenuItem: MenuItem2, id }, index) => [
776
- index > 0 && /* @__PURE__ */ React21.createElement(Divider3, { key: `${id}-divider` }),
777
- /* @__PURE__ */ React21.createElement(MenuItem2, { key: id })
907
+ index > 0 && /* @__PURE__ */ React23.createElement(Divider3, { key: `${id}-divider` }),
908
+ /* @__PURE__ */ React23.createElement(MenuItem2, { key: id })
778
909
  ])
779
910
  );
780
911
  }
@@ -795,8 +926,8 @@ function PrimaryAction() {
795
926
  const isPublishDisabled = !isEditMode || !isPublishEnabled(document2);
796
927
  const isSaveOptionsDisabled = !isEditMode || document2.type.value === "kit";
797
928
  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,
929
+ return /* @__PURE__ */ React24.createElement(React24.Fragment, null, /* @__PURE__ */ React24.createElement(ButtonGroup, { size: "large", variant: "contained" }, /* @__PURE__ */ React24.createElement(
930
+ Button3,
800
931
  {
801
932
  onClick: () => {
802
933
  const extendedWindow = window;
@@ -826,11 +957,11 @@ function PrimaryAction() {
826
957
  },
827
958
  disabled: isPublishDisabled
828
959
  },
829
- shouldShowSpinner ? /* @__PURE__ */ React22.createElement(CircularProgress, { color: "inherit", size: "1.5em" }) : getLabel(document2)
830
- ), /* @__PURE__ */ React22.createElement(
960
+ shouldShowSpinner ? /* @__PURE__ */ React24.createElement(CircularProgress, { color: "inherit", size: "1.5em" }) : getLabel(document2)
961
+ ), /* @__PURE__ */ React24.createElement(
831
962
  Tooltip3,
832
963
  {
833
- title: __8("Save Options", "elementor"),
964
+ title: __10("Save Options", "elementor"),
834
965
  PopperProps: {
835
966
  sx: {
836
967
  "&.MuiTooltip-popper .MuiTooltip-tooltip.MuiTooltip-tooltipPlacementBottom": {
@@ -840,21 +971,21 @@ function PrimaryAction() {
840
971
  }
841
972
  }
842
973
  },
843
- /* @__PURE__ */ React22.createElement(Box4, { component: "span", "aria-label": void 0 }, /* @__PURE__ */ React22.createElement(
844
- Button2,
974
+ /* @__PURE__ */ React24.createElement(Box4, { component: "span", "aria-label": void 0 }, /* @__PURE__ */ React24.createElement(
975
+ Button3,
845
976
  {
846
977
  size: "small",
847
978
  ...bindTrigger4(popupState),
848
979
  sx: { px: 0, height: "100%", borderRadius: 0 },
849
980
  disabled: isSaveOptionsDisabled,
850
- "aria-label": __8("Save Options", "elementor")
981
+ "aria-label": __10("Save Options", "elementor")
851
982
  },
852
- /* @__PURE__ */ React22.createElement(ChevronDownIcon, null)
983
+ /* @__PURE__ */ React24.createElement(ChevronDownIcon, null)
853
984
  ))
854
- )), /* @__PURE__ */ React22.createElement(PrimaryActionMenu, { ...bindMenu4(popupState), onClick: popupState.close }));
985
+ )), /* @__PURE__ */ React24.createElement(PrimaryActionMenu, { ...bindMenu4(popupState), onClick: popupState.close }));
855
986
  }
856
987
  function getLabel(document2) {
857
- return document2.userCan.publish ? __8("Publish", "elementor") : __8("Submit", "elementor");
988
+ return document2.userCan.publish ? __10("Publish", "elementor") : __10("Submit", "elementor");
858
989
  }
859
990
  function isPublishEnabled(document2) {
860
991
  if (document2.type.value === "kit") {
@@ -868,16 +999,16 @@ import {
868
999
  __useActiveDocument as useActiveDocument4,
869
1000
  __useActiveDocumentActions as useActiveDocumentActions2
870
1001
  } from "@elementor/editor-documents";
871
- import { useMixpanel as useMixpanel2 } from "@elementor/events";
1002
+ import { useMixpanel as useMixpanel3 } from "@elementor/events";
872
1003
  import { LinkIcon } from "@elementor/icons";
873
- import { __ as __9 } from "@wordpress/i18n";
1004
+ import { __ as __11 } from "@wordpress/i18n";
874
1005
  function useDocumentCopyAndShareProps() {
875
1006
  const document2 = useActiveDocument4();
876
1007
  const { copyAndShare } = useActiveDocumentActions2();
877
- const { dispatchEvent: dispatchEvent2, config } = useMixpanel2();
1008
+ const { dispatchEvent: dispatchEvent2, config } = useMixpanel3();
878
1009
  return {
879
1010
  icon: LinkIcon,
880
- title: __9("Copy and Share", "elementor"),
1011
+ title: __11("Copy and Share", "elementor"),
881
1012
  onClick: () => {
882
1013
  const eventName = config?.names?.editorOne?.topBarPublishDropdown;
883
1014
  if (eventName) {
@@ -905,16 +1036,16 @@ import {
905
1036
  __useActiveDocument as useActiveDocument5,
906
1037
  __useActiveDocumentActions as useActiveDocumentActions3
907
1038
  } from "@elementor/editor-documents";
908
- import { useMixpanel as useMixpanel3 } from "@elementor/events";
1039
+ import { useMixpanel as useMixpanel4 } from "@elementor/events";
909
1040
  import { FileReportIcon } from "@elementor/icons";
910
- import { __ as __10 } from "@wordpress/i18n";
1041
+ import { __ as __12 } from "@wordpress/i18n";
911
1042
  function useDocumentSaveDraftProps() {
912
1043
  const document2 = useActiveDocument5();
913
1044
  const { saveDraft } = useActiveDocumentActions3();
914
- const { dispatchEvent: dispatchEvent2, config } = useMixpanel3();
1045
+ const { dispatchEvent: dispatchEvent2, config } = useMixpanel4();
915
1046
  return {
916
1047
  icon: FileReportIcon,
917
- title: __10("Save Draft", "elementor"),
1048
+ title: __12("Save Draft", "elementor"),
918
1049
  onClick: () => {
919
1050
  const eventName = config?.names?.editorOne?.topBarPublishDropdown;
920
1051
  if (eventName) {
@@ -938,15 +1069,15 @@ function useDocumentSaveDraftProps() {
938
1069
 
939
1070
  // src/extensions/documents-save/hooks/use-document-save-template-props.ts
940
1071
  import { __useActiveDocumentActions as useActiveDocumentActions4 } from "@elementor/editor-documents";
941
- import { useMixpanel as useMixpanel4 } from "@elementor/events";
1072
+ import { useMixpanel as useMixpanel5 } from "@elementor/events";
942
1073
  import { FolderIcon } from "@elementor/icons";
943
- import { __ as __11 } from "@wordpress/i18n";
1074
+ import { __ as __13 } from "@wordpress/i18n";
944
1075
  function useDocumentSaveTemplateProps() {
945
1076
  const { saveTemplate } = useActiveDocumentActions4();
946
- const { dispatchEvent: dispatchEvent2, config } = useMixpanel4();
1077
+ const { dispatchEvent: dispatchEvent2, config } = useMixpanel5();
947
1078
  return {
948
1079
  icon: FolderIcon,
949
- title: __11("Save as Template", "elementor"),
1080
+ title: __13("Save as Template", "elementor"),
950
1081
  onClick: () => {
951
1082
  const eventName = config?.names?.editorOne?.topBarPublishDropdown;
952
1083
  if (eventName) {
@@ -971,12 +1102,12 @@ function useDocumentSaveTemplateProps() {
971
1102
  import { __useActiveDocument as useActiveDocument6 } from "@elementor/editor-documents";
972
1103
  import { __privateRunCommand as runCommand2 } from "@elementor/editor-v1-adapters";
973
1104
  import { EyeIcon as EyeIcon2 } from "@elementor/icons";
974
- import { __ as __12 } from "@wordpress/i18n";
1105
+ import { __ as __14 } from "@wordpress/i18n";
975
1106
  function useDocumentViewAsMarkdownProps() {
976
1107
  const document2 = useActiveDocument6();
977
1108
  return {
978
1109
  icon: EyeIcon2,
979
- title: __12("View as Markdown", "elementor"),
1110
+ title: __14("View as Markdown", "elementor"),
980
1111
  onClick: async () => {
981
1112
  const baseUrl = document2?.links?.wpPreview || document2?.links?.permalink;
982
1113
  if (!baseUrl) {
@@ -995,15 +1126,15 @@ function useDocumentViewAsMarkdownProps() {
995
1126
  // src/extensions/documents-save/hooks/use-document-view-page-props.ts
996
1127
  import { __useActiveDocument as useActiveDocument7 } from "@elementor/editor-documents";
997
1128
  import { __privateRunCommand as runCommand3 } from "@elementor/editor-v1-adapters";
998
- import { useMixpanel as useMixpanel5 } from "@elementor/events";
1129
+ import { useMixpanel as useMixpanel6 } from "@elementor/events";
999
1130
  import { EyeIcon as EyeIcon3 } from "@elementor/icons";
1000
- import { __ as __13 } from "@wordpress/i18n";
1131
+ import { __ as __15 } from "@wordpress/i18n";
1001
1132
  function useDocumentViewPageProps() {
1002
1133
  const document2 = useActiveDocument7();
1003
- const { dispatchEvent: dispatchEvent2, config } = useMixpanel5();
1134
+ const { dispatchEvent: dispatchEvent2, config } = useMixpanel6();
1004
1135
  return {
1005
1136
  icon: EyeIcon3,
1006
- title: __13("View Page", "elementor"),
1137
+ title: __15("View Page", "elementor"),
1007
1138
  onClick: () => {
1008
1139
  const eventName = config?.names?.editorOne?.topBarPublishDropdown;
1009
1140
  if (eventName) {
@@ -1073,7 +1204,7 @@ import {
1073
1204
  __privateUseRouteStatus as useRouteStatus
1074
1205
  } from "@elementor/editor-v1-adapters";
1075
1206
  import { FileSettingsIcon } from "@elementor/icons";
1076
- import { __ as __14 } from "@wordpress/i18n";
1207
+ import { __ as __16 } from "@wordpress/i18n";
1077
1208
  function useActionProps3() {
1078
1209
  const activeDocument = useActiveDocument8();
1079
1210
  const hostDocument = useHostDocument();
@@ -1081,8 +1212,8 @@ function useActionProps3() {
1081
1212
  const document2 = activeDocument && activeDocument.type.value !== "kit" ? activeDocument : hostDocument;
1082
1213
  const ButtonTitle = document2 ? (
1083
1214
  /* translators: %s: Post type label. */
1084
- __14("%s Settings", "elementor").replace("%s", document2.type.label)
1085
- ) : __14("Document Settings", "elementor");
1215
+ __16("%s Settings", "elementor").replace("%s", document2.type.label)
1216
+ ) : __16("Document Settings", "elementor");
1086
1217
  return {
1087
1218
  title: ButtonTitle,
1088
1219
  icon: FileSettingsIcon,
@@ -1122,11 +1253,11 @@ import {
1122
1253
  __privateUseRouteStatus as useRouteStatus2
1123
1254
  } from "@elementor/editor-v1-adapters";
1124
1255
  import { PlusIcon } from "@elementor/icons";
1125
- import { __ as __15 } from "@wordpress/i18n";
1256
+ import { __ as __17 } from "@wordpress/i18n";
1126
1257
  function useActionProps4() {
1127
1258
  const { isActive, isBlocked } = useRouteStatus2("panel/elements");
1128
1259
  return {
1129
- title: __15("Add Element", "elementor"),
1260
+ title: __17("Add Element", "elementor"),
1130
1261
  icon: PlusIcon,
1131
1262
  onClick: () => {
1132
1263
  const extendedWindow = window;
@@ -1153,10 +1284,10 @@ import {
1153
1284
  routeOpenEvent,
1154
1285
  v1ReadyEvent
1155
1286
  } from "@elementor/editor-v1-adapters";
1156
- import { __ as __16 } from "@wordpress/i18n";
1287
+ import { __ as __18 } from "@wordpress/i18n";
1157
1288
  function syncPanelTitle() {
1158
- const panelTitle = __16("Elements", "elementor");
1159
- const tabTitle = __16("Widgets", "elementor");
1289
+ const panelTitle = __18("Elements", "elementor");
1290
+ const tabTitle = __18("Widgets", "elementor");
1160
1291
  listenTo(routeOpenEvent("panel/elements"), () => {
1161
1292
  setPanelTitle(panelTitle);
1162
1293
  setTabTitle(tabTitle);
@@ -1191,7 +1322,7 @@ function init6() {
1191
1322
  // src/extensions/feedback/index.ts
1192
1323
  import { isExperimentActive as isExperimentActive2 } from "@elementor/editor-v1-adapters";
1193
1324
  import { MessageLinesIcon } from "@elementor/icons";
1194
- import { __ as __17 } from "@wordpress/i18n";
1325
+ import { __ as __19 } from "@wordpress/i18n";
1195
1326
  function init7() {
1196
1327
  const isActive = isExperimentActive2(EXPERIMENT_NAME);
1197
1328
  if (!isActive) {
@@ -1204,7 +1335,7 @@ function init7() {
1204
1335
  useProps: () => {
1205
1336
  return {
1206
1337
  icon: MessageLinesIcon,
1207
- title: __17("Send Feedback", "elementor"),
1338
+ title: __19("Send Feedback", "elementor"),
1208
1339
  onClick: () => {
1209
1340
  dispatchEvent(new CustomEvent(FEEDBACK_TOGGLE_EVENT));
1210
1341
  }
@@ -1216,10 +1347,10 @@ function init7() {
1216
1347
  // src/extensions/finder/hooks/use-action-props.ts
1217
1348
  import { __privateRunCommand as runCommand4 } from "@elementor/editor-v1-adapters";
1218
1349
  import { SearchIcon } from "@elementor/icons";
1219
- import { __ as __18 } from "@wordpress/i18n";
1350
+ import { __ as __20 } from "@wordpress/i18n";
1220
1351
  function useActionProps5() {
1221
1352
  return {
1222
- title: __18("Finder", "elementor"),
1353
+ title: __20("Finder", "elementor"),
1223
1354
  icon: SearchIcon,
1224
1355
  onClick: () => {
1225
1356
  const extendedWindow = window;
@@ -1248,10 +1379,10 @@ function init8() {
1248
1379
 
1249
1380
  // src/extensions/help/hooks/use-action-props.ts
1250
1381
  import { HelpIcon } from "@elementor/icons";
1251
- import { __ as __19 } from "@wordpress/i18n";
1382
+ import { __ as __21 } from "@wordpress/i18n";
1252
1383
  function useActionProps6() {
1253
1384
  return {
1254
- title: __19("Help Center", "elementor"),
1385
+ title: __21("Help Center", "elementor"),
1255
1386
  href: "https://go.elementor.com/editor-top-bar-learn/",
1256
1387
  icon: HelpIcon,
1257
1388
  target: "_blank",
@@ -1286,11 +1417,11 @@ import {
1286
1417
  __privateUseRouteStatus as useRouteStatus3
1287
1418
  } from "@elementor/editor-v1-adapters";
1288
1419
  import { HistoryIcon } from "@elementor/icons";
1289
- import { __ as __20 } from "@wordpress/i18n";
1420
+ import { __ as __22 } from "@wordpress/i18n";
1290
1421
  function useActionProps7() {
1291
1422
  const { isActive, isBlocked } = useRouteStatus3("panel/history");
1292
1423
  return {
1293
- title: __20("History", "elementor"),
1424
+ title: __22("History", "elementor"),
1294
1425
  icon: HistoryIcon,
1295
1426
  onClick: () => {
1296
1427
  const extendedWindow = window;
@@ -1322,11 +1453,11 @@ function init10() {
1322
1453
  // src/extensions/keyboard-shortcuts/hooks/use-action-props.ts
1323
1454
  import { __privateRunCommand as runCommand5 } from "@elementor/editor-v1-adapters";
1324
1455
  import { KeyboardIcon } from "@elementor/icons";
1325
- import { __ as __21 } from "@wordpress/i18n";
1456
+ import { __ as __23 } from "@wordpress/i18n";
1326
1457
  function useActionProps8() {
1327
1458
  return {
1328
1459
  icon: KeyboardIcon,
1329
- title: __21("Keyboard Shortcuts", "elementor"),
1460
+ title: __23("Keyboard Shortcuts", "elementor"),
1330
1461
  onClick: () => {
1331
1462
  const extendedWindow = window;
1332
1463
  const config = extendedWindow?.elementorCommon?.eventsManager?.config;
@@ -1354,7 +1485,7 @@ function init11() {
1354
1485
  }
1355
1486
 
1356
1487
  // src/extensions/responsive/components/breakpoints-switcher.tsx
1357
- import * as React23 from "react";
1488
+ import * as React25 from "react";
1358
1489
  import {
1359
1490
  useActivateBreakpoint,
1360
1491
  useActiveBreakpoint,
@@ -1370,7 +1501,7 @@ import {
1370
1501
  WidescreenIcon
1371
1502
  } from "@elementor/icons";
1372
1503
  import { Tab, Tabs, Tooltip as BaseTooltip2 } from "@elementor/ui";
1373
- import { __ as __22 } from "@wordpress/i18n";
1504
+ import { __ as __24 } from "@wordpress/i18n";
1374
1505
  function BreakpointsSwitcher() {
1375
1506
  const breakpoints = useBreakpoints();
1376
1507
  const activeBreakpoint = useActiveBreakpoint();
@@ -1392,14 +1523,14 @@ function BreakpointsSwitcher() {
1392
1523
  }
1393
1524
  activateBreakpoint(value);
1394
1525
  };
1395
- return /* @__PURE__ */ React23.createElement(
1526
+ return /* @__PURE__ */ React25.createElement(
1396
1527
  Tabs,
1397
1528
  {
1398
1529
  textColor: "inherit",
1399
1530
  indicatorColor: "secondary",
1400
1531
  value: activeBreakpoint,
1401
1532
  onChange,
1402
- "aria-label": __22("Switch Device", "elementor"),
1533
+ "aria-label": __24("Switch Device", "elementor"),
1403
1534
  sx: {
1404
1535
  "& .MuiTabs-indicator": {
1405
1536
  backgroundColor: "text.primary"
@@ -1409,13 +1540,13 @@ function BreakpointsSwitcher() {
1409
1540
  breakpoints.map(({ id, label, type, width }) => {
1410
1541
  const Icon = iconsMap[id];
1411
1542
  const title = labelsMap[type || "default"].replace("%s", label).replace("%d", width?.toString() || "");
1412
- return /* @__PURE__ */ React23.createElement(
1543
+ return /* @__PURE__ */ React25.createElement(
1413
1544
  Tab,
1414
1545
  {
1415
1546
  value: id,
1416
1547
  key: id,
1417
1548
  "aria-label": title,
1418
- icon: /* @__PURE__ */ React23.createElement(Tooltip4, { title }, /* @__PURE__ */ React23.createElement(Icon, null)),
1549
+ icon: /* @__PURE__ */ React25.createElement(Tooltip4, { title }, /* @__PURE__ */ React25.createElement(Icon, null)),
1419
1550
  sx: { minWidth: "auto" },
1420
1551
  "data-testid": `switch-device-to-${id}`
1421
1552
  }
@@ -1424,7 +1555,7 @@ function BreakpointsSwitcher() {
1424
1555
  );
1425
1556
  }
1426
1557
  function Tooltip4(props) {
1427
- return /* @__PURE__ */ React23.createElement(
1558
+ return /* @__PURE__ */ React25.createElement(
1428
1559
  BaseTooltip2,
1429
1560
  {
1430
1561
  PopperProps: {
@@ -1450,9 +1581,9 @@ var iconsMap = {
1450
1581
  var labelsMap = {
1451
1582
  default: "%s",
1452
1583
  // translators: %s: Breakpoint label, %d: Breakpoint size.
1453
- "min-width": __22("%s (%dpx and up)", "elementor"),
1584
+ "min-width": __24("%s (%dpx and up)", "elementor"),
1454
1585
  // translators: %s: Breakpoint label, %d: Breakpoint size.
1455
- "max-width": __22("%s (up to %dpx)", "elementor")
1586
+ "max-width": __24("%s (up to %dpx)", "elementor")
1456
1587
  };
1457
1588
 
1458
1589
  // src/extensions/responsive/index.ts
@@ -1471,10 +1602,10 @@ function init12() {
1471
1602
  import { injectIntoTop } from "@elementor/editor";
1472
1603
 
1473
1604
  // src/extensions/site-settings/components/portalled-primary-action.tsx
1474
- import * as React26 from "react";
1605
+ import * as React28 from "react";
1475
1606
 
1476
1607
  // src/extensions/site-settings/components/portal.tsx
1477
- import * as React24 from "react";
1608
+ import * as React26 from "react";
1478
1609
  import {
1479
1610
  __privateIsRouteActive as isRouteActive2,
1480
1611
  __privateUseListenTo as useListenTo,
@@ -1490,24 +1621,24 @@ function Portal(props) {
1490
1621
  if (!containerRef.current) {
1491
1622
  return null;
1492
1623
  }
1493
- return /* @__PURE__ */ React24.createElement(BasePortal, { container: containerRef.current, ...props });
1624
+ return /* @__PURE__ */ React26.createElement(BasePortal, { container: containerRef.current, ...props });
1494
1625
  }
1495
1626
  function getContainerRef() {
1496
1627
  return isRouteActive2("panel/global") ? { current: document.querySelector("#elementor-panel-inner") } : { current: null };
1497
1628
  }
1498
1629
 
1499
1630
  // src/extensions/site-settings/components/primary-action.tsx
1500
- import * as React25 from "react";
1631
+ import * as React27 from "react";
1501
1632
  import {
1502
1633
  __useActiveDocument as useActiveDocument9,
1503
1634
  __useActiveDocumentActions as useActiveDocumentActions5
1504
1635
  } from "@elementor/editor-documents";
1505
- import { Button as Button3, CircularProgress as CircularProgress2, Paper } from "@elementor/ui";
1506
- import { __ as __23 } from "@wordpress/i18n";
1636
+ import { Button as Button4, CircularProgress as CircularProgress2, Paper } from "@elementor/ui";
1637
+ import { __ as __25 } from "@wordpress/i18n";
1507
1638
  function PrimaryAction2() {
1508
1639
  const document2 = useActiveDocument9();
1509
1640
  const { save } = useActiveDocumentActions5();
1510
- return /* @__PURE__ */ React25.createElement(
1641
+ return /* @__PURE__ */ React27.createElement(
1511
1642
  Paper,
1512
1643
  {
1513
1644
  sx: {
@@ -1517,8 +1648,8 @@ function PrimaryAction2() {
1517
1648
  borderColor: "divider"
1518
1649
  }
1519
1650
  },
1520
- /* @__PURE__ */ React25.createElement(
1521
- Button3,
1651
+ /* @__PURE__ */ React27.createElement(
1652
+ Button4,
1522
1653
  {
1523
1654
  variant: "contained",
1524
1655
  disabled: !document2 || !document2.isDirty,
@@ -1526,14 +1657,14 @@ function PrimaryAction2() {
1526
1657
  sx: { width: "100%" },
1527
1658
  onClick: () => document2 && !document2.isSaving ? save() : null
1528
1659
  },
1529
- document2?.isSaving ? /* @__PURE__ */ React25.createElement(CircularProgress2, null) : __23("Save Changes", "elementor")
1660
+ document2?.isSaving ? /* @__PURE__ */ React27.createElement(CircularProgress2, null) : __25("Save Changes", "elementor")
1530
1661
  )
1531
1662
  );
1532
1663
  }
1533
1664
 
1534
1665
  // src/extensions/site-settings/components/portalled-primary-action.tsx
1535
1666
  function PortalledPrimaryAction() {
1536
- return /* @__PURE__ */ React26.createElement(Portal, null, /* @__PURE__ */ React26.createElement(PrimaryAction2, null));
1667
+ return /* @__PURE__ */ React28.createElement(Portal, null, /* @__PURE__ */ React28.createElement(PrimaryAction2, null));
1537
1668
  }
1538
1669
 
1539
1670
  // src/extensions/site-settings/hooks/use-action-props.ts
@@ -1542,13 +1673,13 @@ import {
1542
1673
  __privateUseRouteStatus as useRouteStatus4
1543
1674
  } from "@elementor/editor-v1-adapters";
1544
1675
  import { SettingsIcon } from "@elementor/icons";
1545
- import { __ as __24 } from "@wordpress/i18n";
1676
+ import { __ as __26 } from "@wordpress/i18n";
1546
1677
  function useActionProps9() {
1547
1678
  const { isActive, isBlocked } = useRouteStatus4("panel/global", {
1548
1679
  blockOnKitRoutes: false
1549
1680
  });
1550
1681
  return {
1551
- title: __24("Site Settings", "elementor"),
1682
+ title: __26("Site Settings", "elementor"),
1552
1683
  icon: SettingsIcon,
1553
1684
  onClick: () => {
1554
1685
  const extendedWindow = window;
@@ -1592,11 +1723,11 @@ import {
1592
1723
  __privateUseRouteStatus as useRouteStatus5
1593
1724
  } from "@elementor/editor-v1-adapters";
1594
1725
  import { StructureIcon } from "@elementor/icons";
1595
- import { __ as __25 } from "@wordpress/i18n";
1726
+ import { __ as __27 } from "@wordpress/i18n";
1596
1727
  function useActionProps10() {
1597
1728
  const { isActive, isBlocked } = useRouteStatus5("navigator");
1598
1729
  return {
1599
- title: __25("Structure", "elementor"),
1730
+ title: __27("Structure", "elementor"),
1600
1731
  icon: StructureIcon,
1601
1732
  onClick: () => {
1602
1733
  const extendedWindow = window;
@@ -1628,11 +1759,11 @@ function init14() {
1628
1759
  // src/extensions/theme-builder/hooks/use-action-props.ts
1629
1760
  import { __privateRunCommand as runCommand8 } from "@elementor/editor-v1-adapters";
1630
1761
  import { ThemeBuilderIcon } from "@elementor/icons";
1631
- import { __ as __26 } from "@wordpress/i18n";
1762
+ import { __ as __28 } from "@wordpress/i18n";
1632
1763
  function useActionProps11() {
1633
1764
  return {
1634
1765
  icon: ThemeBuilderIcon,
1635
- title: __26("Theme Builder", "elementor"),
1766
+ title: __28("Theme Builder", "elementor"),
1636
1767
  onClick: () => {
1637
1768
  const extendedWindow = window;
1638
1769
  const config = extendedWindow?.elementorCommon?.eventsManager?.config;
@@ -1665,12 +1796,12 @@ import {
1665
1796
  __privateUseRouteStatus as useRouteStatus6
1666
1797
  } from "@elementor/editor-v1-adapters";
1667
1798
  import { ToggleRightIcon } from "@elementor/icons";
1668
- import { __ as __27 } from "@wordpress/i18n";
1799
+ import { __ as __29 } from "@wordpress/i18n";
1669
1800
  function useActionProps12() {
1670
1801
  const { isActive, isBlocked } = useRouteStatus6("panel/editor-preferences");
1671
1802
  return {
1672
1803
  icon: ToggleRightIcon,
1673
- title: __27("User Preferences", "elementor"),
1804
+ title: __29("User Preferences", "elementor"),
1674
1805
  onClick: () => {
1675
1806
  const extendedWindow = window;
1676
1807
  const config = extendedWindow?.elementorCommon?.eventsManager?.config;
@@ -1702,7 +1833,7 @@ function init16() {
1702
1833
  // src/extensions/wordpress/index.ts
1703
1834
  import { __useActiveDocument as useActiveDocument10 } from "@elementor/editor-documents";
1704
1835
  import { WordpressIcon } from "@elementor/icons";
1705
- import { __ as __28 } from "@wordpress/i18n";
1836
+ import { __ as __30 } from "@wordpress/i18n";
1706
1837
  function init17() {
1707
1838
  mainMenu.registerLink({
1708
1839
  id: "exit-to-wordpress",
@@ -1711,7 +1842,7 @@ function init17() {
1711
1842
  useProps: () => {
1712
1843
  const document2 = useActiveDocument10();
1713
1844
  return {
1714
- title: __28("Exit to WordPress", "elementor"),
1845
+ title: __30("Exit to WordPress", "elementor"),
1715
1846
  href: document2?.links?.platformEdit,
1716
1847
  icon: WordpressIcon,
1717
1848
  onClick: () => {