@elementor/editor-components 3.33.0-265 → 3.33.0-266

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.js CHANGED
@@ -37,10 +37,10 @@ module.exports = __toCommonJS(index_exports);
37
37
  // src/init.ts
38
38
  var import_editor = require("@elementor/editor");
39
39
  var import_editor_canvas5 = require("@elementor/editor-canvas");
40
- var import_editor_documents2 = require("@elementor/editor-documents");
40
+ var import_editor_documents3 = require("@elementor/editor-documents");
41
41
  var import_editor_elements_panel = require("@elementor/editor-elements-panel");
42
42
  var import_editor_styles_repository2 = require("@elementor/editor-styles-repository");
43
- var import_editor_v1_adapters5 = require("@elementor/editor-v1-adapters");
43
+ var import_editor_v1_adapters6 = require("@elementor/editor-v1-adapters");
44
44
  var import_store20 = require("@elementor/store");
45
45
  var import_i18n8 = require("@wordpress/i18n");
46
46
 
@@ -604,11 +604,14 @@ var import_react3 = require("react");
604
604
  var import_editor_elements4 = require("@elementor/editor-elements");
605
605
  var import_editor_ui2 = require("@elementor/editor-ui");
606
606
  var import_icons4 = require("@elementor/icons");
607
- var import_store11 = require("@elementor/store");
608
607
  var import_ui5 = require("@elementor/ui");
609
- var import_utils2 = require("@elementor/utils");
610
608
  var import_i18n4 = require("@wordpress/i18n");
611
609
 
610
+ // src/store/create-unpublished-component.ts
611
+ var import_editor_v1_adapters2 = require("@elementor/editor-v1-adapters");
612
+ var import_store11 = require("@elementor/store");
613
+ var import_utils2 = require("@elementor/utils");
614
+
612
615
  // src/utils/tracking.ts
613
616
  var import_mixpanel = require("@elementor/mixpanel");
614
617
  var import_store9 = require("@elementor/store");
@@ -643,6 +646,28 @@ var onElementDrop = (_args, element) => {
643
646
  });
644
647
  };
645
648
 
649
+ // src/store/create-unpublished-component.ts
650
+ function createUnpublishedComponent(name, element, eventData) {
651
+ const uid = (0, import_utils2.generateUniqueId)("component");
652
+ const componentBase = { uid, name };
653
+ (0, import_store11.__dispatch)(
654
+ slice.actions.addUnpublished({
655
+ ...componentBase,
656
+ elements: [element]
657
+ })
658
+ );
659
+ (0, import_store11.__dispatch)(slice.actions.addCreatedThisSession(uid));
660
+ replaceElementWithComponent(element, componentBase);
661
+ trackComponentEvent({
662
+ action: "created",
663
+ component_uid: uid,
664
+ component_name: name,
665
+ ...eventData
666
+ });
667
+ (0, import_editor_v1_adapters2.__privateRunCommand)("document/save/auto");
668
+ return uid;
669
+ }
670
+
646
671
  // src/components/create-component-form/hooks/use-form.ts
647
672
  var import_react2 = require("react");
648
673
  var useForm = (initialValues) => {
@@ -752,7 +777,6 @@ function CreateComponentForm() {
752
777
  const [element, setElement] = (0, import_react3.useState)(null);
753
778
  const [anchorPosition, setAnchorPosition] = (0, import_react3.useState)();
754
779
  const [resultNotification, setResultNotification] = (0, import_react3.useState)(null);
755
- const dispatch5 = (0, import_store11.__useDispatch)();
756
780
  const eventData = (0, import_react3.useRef)(null);
757
781
  (0, import_react3.useEffect)(() => {
758
782
  const OPEN_SAVE_AS_COMPONENT_FORM_EVENT = "elementor/editor/open-save-as-component-form";
@@ -775,22 +799,7 @@ function CreateComponentForm() {
775
799
  if (!element) {
776
800
  throw new Error(`Can't save element as component: element not found`);
777
801
  }
778
- const uid = (0, import_utils2.generateUniqueId)("component");
779
- dispatch5(
780
- slice.actions.addUnpublished({
781
- uid,
782
- name: values.componentName,
783
- elements: [element.element]
784
- })
785
- );
786
- dispatch5(slice.actions.addCreatedThisSession(uid));
787
- replaceElementWithComponent(element.element, { uid, name: values.componentName });
788
- trackComponentEvent({
789
- action: "created",
790
- component_uid: uid,
791
- component_name: values.componentName,
792
- ...eventData.current
793
- });
802
+ const uid = createUnpublishedComponent(values.componentName, element.element, eventData.current);
794
803
  setResultNotification({
795
804
  show: true,
796
805
  // Translators: %1$s: Component name, %2$s: Component UID
@@ -909,7 +918,7 @@ var Form = ({
909
918
  var React9 = __toESM(require("react"));
910
919
  var import_react6 = require("react");
911
920
  var import_editor_documents = require("@elementor/editor-documents");
912
- var import_editor_v1_adapters3 = require("@elementor/editor-v1-adapters");
921
+ var import_editor_v1_adapters4 = require("@elementor/editor-v1-adapters");
913
922
 
914
923
  // src/components/consts.ts
915
924
  var COMPONENT_DOCUMENT_TYPE = "elementor_component";
@@ -922,9 +931,9 @@ var import_i18n5 = require("@wordpress/i18n");
922
931
 
923
932
  // src/hooks/use-canvas-document.ts
924
933
  var import_editor_canvas3 = require("@elementor/editor-canvas");
925
- var import_editor_v1_adapters2 = require("@elementor/editor-v1-adapters");
934
+ var import_editor_v1_adapters3 = require("@elementor/editor-v1-adapters");
926
935
  function useCanvasDocument() {
927
- return (0, import_editor_v1_adapters2.__privateUseListenTo)((0, import_editor_v1_adapters2.commandEndEvent)("editor/documents/attach-preview"), () => (0, import_editor_canvas3.getCanvasIframeDocument)());
936
+ return (0, import_editor_v1_adapters3.__privateUseListenTo)((0, import_editor_v1_adapters3.commandEndEvent)("editor/documents/attach-preview"), () => (0, import_editor_canvas3.getCanvasIframeDocument)());
928
937
  }
929
938
 
930
939
  // src/hooks/use-element-rect.ts
@@ -1111,7 +1120,7 @@ function EditComponent() {
1111
1120
  function useHandleDocumentSwitches(path, setPath) {
1112
1121
  const documentsManager = (0, import_editor_documents.getV1DocumentsManager)();
1113
1122
  (0, import_react6.useEffect)(
1114
- () => (0, import_editor_v1_adapters3.__privateListenTo)((0, import_editor_v1_adapters3.commandEndEvent)("editor/documents/attach-preview"), () => {
1123
+ () => (0, import_editor_v1_adapters4.__privateListenTo)((0, import_editor_v1_adapters4.commandEndEvent)("editor/documents/attach-preview"), () => {
1115
1124
  const { component: currentComponent } = path.at(-1) ?? {};
1116
1125
  const { id: currentComponentId } = currentComponent ?? {};
1117
1126
  const nextDocument = documentsManager.getCurrent();
@@ -1150,7 +1159,7 @@ function useNavigateBack(path) {
1150
1159
  const { component: prevComponent, instanceId: prevComponentInstanceId } = path.at(-2) ?? {};
1151
1160
  const { id: prevComponentId } = prevComponent ?? {};
1152
1161
  const switchToDocument = (id, selector) => {
1153
- (0, import_editor_v1_adapters3.__privateRunCommand)("editor/documents/switch", {
1162
+ (0, import_editor_v1_adapters4.__privateRunCommand)("editor/documents/switch", {
1154
1163
  id,
1155
1164
  selector,
1156
1165
  mode: "autosave",
@@ -1187,7 +1196,8 @@ var EditModeDialog = ({ lockedBy }) => {
1187
1196
 
1188
1197
  // src/create-component-type.ts
1189
1198
  var import_editor_canvas4 = require("@elementor/editor-canvas");
1190
- var import_editor_v1_adapters4 = require("@elementor/editor-v1-adapters");
1199
+ var import_editor_documents2 = require("@elementor/editor-documents");
1200
+ var import_editor_v1_adapters5 = require("@elementor/editor-v1-adapters");
1191
1201
  var import_i18n7 = require("@wordpress/i18n");
1192
1202
  var TYPE = "e-component";
1193
1203
  function createComponentType(options) {
@@ -1205,6 +1215,10 @@ function createComponentView(options) {
1205
1215
  return class extends (0, import_editor_canvas4.createTemplatedElementView)(options) {
1206
1216
  legacyWindow = window;
1207
1217
  eventsManagerConfig = this.legacyWindow.elementorCommon.eventsManager.config;
1218
+ isComponentCurrentlyEdited() {
1219
+ const currentDocument = (0, import_editor_documents2.getCurrentDocument)();
1220
+ return currentDocument?.id === this.getComponentId()?.value;
1221
+ }
1208
1222
  afterSettingsResolve(settings) {
1209
1223
  if (settings.component) {
1210
1224
  this.collection = this.legacyWindow.elementor.createBackboneElementsCollection(settings.component);
@@ -1256,7 +1270,7 @@ function createComponentView(options) {
1256
1270
  if (!isAllowedToSwitchDocument) {
1257
1271
  options.showLockedByModal?.(lockedBy || "");
1258
1272
  } else {
1259
- (0, import_editor_v1_adapters4.__privateRunCommand)("editor/documents/switch", {
1273
+ (0, import_editor_v1_adapters5.__privateRunCommand)("editor/documents/switch", {
1260
1274
  id: this.getComponentId()?.value,
1261
1275
  mode: "autosave",
1262
1276
  selector: `[data-id="${this.model.get("id")}"]`,
@@ -1265,6 +1279,9 @@ function createComponentView(options) {
1265
1279
  }
1266
1280
  }
1267
1281
  editComponent({ trigger, location, secondaryLocation }) {
1282
+ if (this.isComponentCurrentlyEdited()) {
1283
+ return;
1284
+ }
1268
1285
  this.switchDocument();
1269
1286
  const editorSettings = this.model.get("editor_settings");
1270
1287
  trackComponentEvent({
@@ -1466,14 +1483,14 @@ function init() {
1466
1483
  TYPE,
1467
1484
  (options) => createComponentType({ ...options, showLockedByModal: openEditModeDialog })
1468
1485
  );
1469
- (0, import_editor_v1_adapters5.registerDataHook)("dependency", "editor/documents/close", (args) => {
1470
- const document = (0, import_editor_documents2.getV1CurrentDocument)();
1486
+ (0, import_editor_v1_adapters6.registerDataHook)("dependency", "editor/documents/close", (args) => {
1487
+ const document = (0, import_editor_documents3.getV1CurrentDocument)();
1471
1488
  if (document.config.type === COMPONENT_DOCUMENT_TYPE2) {
1472
1489
  args.mode = "autosave";
1473
1490
  }
1474
1491
  return true;
1475
1492
  });
1476
- (0, import_editor_v1_adapters5.registerDataHook)("after", "preview/drop", onElementDrop);
1493
+ (0, import_editor_v1_adapters6.registerDataHook)("after", "preview/drop", onElementDrop);
1477
1494
  window.elementorCommon.__beforeSave = beforeSave;
1478
1495
  (0, import_editor_elements_panel.injectTab)({
1479
1496
  id: "components",
@@ -1492,8 +1509,8 @@ function init() {
1492
1509
  id: "edit-component",
1493
1510
  component: EditComponent
1494
1511
  });
1495
- (0, import_editor_v1_adapters5.__privateListenTo)((0, import_editor_v1_adapters5.commandStartEvent)("editor/documents/attach-preview"), () => {
1496
- const { id, config } = (0, import_editor_documents2.getV1CurrentDocument)();
1512
+ (0, import_editor_v1_adapters6.__privateListenTo)((0, import_editor_v1_adapters6.commandStartEvent)("editor/documents/attach-preview"), () => {
1513
+ const { id, config } = (0, import_editor_documents3.getV1CurrentDocument)();
1497
1514
  if (id) {
1498
1515
  removeComponentStyles(id);
1499
1516
  }