@elementor/editor-components 3.35.0-418 → 3.35.0-420

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
@@ -43,7 +43,7 @@ var import_editor_elements_panel = require("@elementor/editor-elements-panel");
43
43
  var import_editor_panels4 = require("@elementor/editor-panels");
44
44
  var import_editor_styles_repository2 = require("@elementor/editor-styles-repository");
45
45
  var import_editor_v1_adapters10 = require("@elementor/editor-v1-adapters");
46
- var import_store76 = require("@elementor/store");
46
+ var import_store78 = require("@elementor/store");
47
47
  var import_i18n26 = require("@wordpress/i18n");
48
48
 
49
49
  // src/component-instance-transformer.ts
@@ -306,9 +306,6 @@ var invalidateComponentDocumentData = (id2) => {
306
306
  };
307
307
 
308
308
  // src/component-instance-transformer.ts
309
- var componentInstanceContext = new import_editor_canvas.RenderContext("component-instance", {
310
- overrides: {}
311
- });
312
309
  var componentInstanceTransformer = (0, import_editor_canvas.createTransformer)(
313
310
  async ({
314
311
  component_id: id2,
@@ -338,7 +335,7 @@ var componentInstanceTransformer = (0, import_editor_canvas.createTransformer)(
338
335
  var import_editor_canvas2 = require("@elementor/editor-canvas");
339
336
  var componentOverridableTransformer = (0, import_editor_canvas2.createTransformer)(
340
337
  (value, options) => {
341
- const { overrides } = componentInstanceContext.get();
338
+ const { overrides } = options.renderContext ?? {};
342
339
  const overrideValue = overrides?.[value.override_key];
343
340
  if (overrideValue) {
344
341
  const isOverride = isOriginValueOverride(value.origin_value);
@@ -1811,13 +1808,41 @@ function createComponentView(options) {
1811
1808
  return class extends (0, import_editor_canvas4.createTemplatedElementView)(options) {
1812
1809
  legacyWindow = window;
1813
1810
  eventsManagerConfig = this.legacyWindow.elementorCommon.eventsManager.config;
1811
+ #componentRenderContext;
1814
1812
  isComponentCurrentlyEdited() {
1815
1813
  const currentDocument = (0, import_editor_documents7.getCurrentDocument)();
1816
1814
  return currentDocument?.id === this.getComponentId();
1817
1815
  }
1816
+ getRenderContext() {
1817
+ const namespaceKey = this.getNamespaceKey();
1818
+ const parentContext = this._parent?.getRenderContext?.();
1819
+ const parentComponentContext = parentContext?.[namespaceKey];
1820
+ if (!this.#componentRenderContext) {
1821
+ return parentContext;
1822
+ }
1823
+ const ownOverrides = this.#componentRenderContext.overrides ?? {};
1824
+ const parentOverrides = parentComponentContext?.overrides ?? {};
1825
+ return {
1826
+ ...parentContext,
1827
+ [namespaceKey]: {
1828
+ overrides: {
1829
+ ...parentOverrides,
1830
+ ...ownOverrides
1831
+ }
1832
+ }
1833
+ };
1834
+ }
1835
+ getResolverRenderContext() {
1836
+ const namespaceKey = this.getNamespaceKey();
1837
+ const context = this.getRenderContext();
1838
+ return context?.[namespaceKey];
1839
+ }
1818
1840
  afterSettingsResolve(settings) {
1819
1841
  const componentInstance = settings.component_instance;
1820
1842
  if (componentInstance) {
1843
+ this.#componentRenderContext = {
1844
+ overrides: componentInstance.overrides ?? {}
1845
+ };
1821
1846
  this.collection = this.legacyWindow.elementor.createBackboneElementsCollection(
1822
1847
  componentInstance.elements
1823
1848
  );
@@ -2167,8 +2192,8 @@ function getSelectedElementContainer() {
2167
2192
 
2168
2193
  // src/components/create-component-form/utils/replace-element-with-component.ts
2169
2194
  var import_editor_elements6 = require("@elementor/editor-elements");
2170
- var replaceElementWithComponent = (element, component) => {
2171
- (0, import_editor_elements6.replaceElement)({
2195
+ var replaceElementWithComponent = async (element, component) => {
2196
+ return await (0, import_editor_elements6.replaceElement)({
2172
2197
  currentElement: element,
2173
2198
  newElement: createComponentModel2(component),
2174
2199
  withHistory: false
@@ -2531,6 +2556,7 @@ var import_editor_elements9 = require("@elementor/editor-elements");
2531
2556
  var import_editor_notifications2 = require("@elementor/editor-notifications");
2532
2557
  var import_editor_ui8 = require("@elementor/editor-ui");
2533
2558
  var import_icons11 = require("@elementor/icons");
2559
+ var import_store47 = require("@elementor/store");
2534
2560
  var import_ui15 = require("@elementor/ui");
2535
2561
  var import_i18n18 = require("@wordpress/i18n");
2536
2562
 
@@ -2652,7 +2678,7 @@ function findNonAtomicElementsInElement(element) {
2652
2678
  var import_editor_v1_adapters5 = require("@elementor/editor-v1-adapters");
2653
2679
  var import_store45 = require("@elementor/store");
2654
2680
  var import_utils4 = require("@elementor/utils");
2655
- function createUnpublishedComponent(name, element, eventData, overridableProps, uid) {
2681
+ async function createUnpublishedComponent(name, element, eventData, overridableProps, uid) {
2656
2682
  const generatedUid = uid ?? (0, import_utils4.generateUniqueId)("component");
2657
2683
  const componentBase = { uid: generatedUid, name, overridableProps };
2658
2684
  (0, import_store45.__dispatch)(
@@ -2662,15 +2688,15 @@ function createUnpublishedComponent(name, element, eventData, overridableProps,
2662
2688
  })
2663
2689
  );
2664
2690
  (0, import_store45.__dispatch)(slice.actions.addCreatedThisSession(generatedUid));
2665
- replaceElementWithComponent(element, componentBase);
2691
+ const componentInstance = await replaceElementWithComponent(element, componentBase);
2666
2692
  trackComponentEvent({
2667
2693
  action: "created",
2668
2694
  component_uid: generatedUid,
2669
2695
  component_name: name,
2670
2696
  ...eventData
2671
2697
  });
2672
- (0, import_editor_v1_adapters5.__privateRunCommand)("document/save/auto");
2673
- return generatedUid;
2698
+ await (0, import_editor_v1_adapters5.__privateRunCommand)("document/save/auto");
2699
+ return { uid: generatedUid, instanceId: componentInstance.id };
2674
2700
  }
2675
2701
 
2676
2702
  // src/components/create-component-form/hooks/use-form.ts
@@ -2785,12 +2811,22 @@ function CreateComponentForm() {
2785
2811
  window.removeEventListener(OPEN_SAVE_AS_COMPONENT_FORM_EVENT, openPopup);
2786
2812
  };
2787
2813
  }, []);
2788
- const handleSave = (values) => {
2814
+ const handleSave = async (values) => {
2789
2815
  try {
2790
2816
  if (!element) {
2791
2817
  throw new Error(`Can't save element as component: element not found`);
2792
2818
  }
2793
- const uid = createUnpublishedComponent(values.componentName, element.element, eventData.current);
2819
+ const { uid, instanceId } = await createUnpublishedComponent(
2820
+ values.componentName,
2821
+ element.element,
2822
+ eventData.current
2823
+ );
2824
+ const publishedComponentId = selectComponentByUid((0, import_store47.__getState)(), uid)?.id;
2825
+ if (publishedComponentId) {
2826
+ switchToComponent(publishedComponentId, instanceId);
2827
+ } else {
2828
+ throw new Error("Failed to find published component");
2829
+ }
2794
2830
  setResultNotification({
2795
2831
  show: true,
2796
2832
  // Translators: %1$s: Component name, %2$s: Component UID
@@ -2907,17 +2943,17 @@ var React19 = __toESM(require("react"));
2907
2943
  var import_react13 = require("react");
2908
2944
  var import_editor_documents10 = require("@elementor/editor-documents");
2909
2945
  var import_editor_v1_adapters7 = require("@elementor/editor-v1-adapters");
2910
- var import_store49 = require("@elementor/store");
2946
+ var import_store51 = require("@elementor/store");
2911
2947
  var import_utils6 = require("@elementor/utils");
2912
2948
 
2913
2949
  // src/store/actions/update-current-component.ts
2914
2950
  var import_editor_documents9 = require("@elementor/editor-documents");
2915
- var import_store47 = require("@elementor/store");
2951
+ var import_store49 = require("@elementor/store");
2916
2952
  function updateCurrentComponent({
2917
2953
  path,
2918
2954
  currentComponentId
2919
2955
  }) {
2920
- const dispatch18 = (0, import_store47.__getStore)()?.dispatch;
2956
+ const dispatch18 = (0, import_store49.__getStore)()?.dispatch;
2921
2957
  if (!dispatch18) {
2922
2958
  return;
2923
2959
  }
@@ -3119,7 +3155,7 @@ function EditComponent() {
3119
3155
  function useHandleDocumentSwitches() {
3120
3156
  const documentsManager = (0, import_editor_documents10.getV1DocumentsManager)();
3121
3157
  const currentComponentId = useCurrentComponentId();
3122
- const path = (0, import_store49.__useSelector)(selectPath);
3158
+ const path = (0, import_store51.__useSelector)(selectPath);
3123
3159
  (0, import_react13.useEffect)(() => {
3124
3160
  return (0, import_editor_v1_adapters7.__privateListenTo)((0, import_editor_v1_adapters7.commandEndEvent)("editor/documents/open"), () => {
3125
3161
  const nextDocument = documentsManager.getCurrent();
@@ -3346,9 +3382,9 @@ function getControlsByBind(controls) {
3346
3382
  }
3347
3383
 
3348
3384
  // src/store/actions/update-overridable-prop.ts
3349
- var import_store51 = require("@elementor/store");
3385
+ var import_store53 = require("@elementor/store");
3350
3386
  function updateOverridableProp(componentId, propValue, originPropFields) {
3351
- const overridableProps = selectOverridableProps((0, import_store51.__getState)(), componentId);
3387
+ const overridableProps = selectOverridableProps((0, import_store53.__getState)(), componentId);
3352
3388
  if (!overridableProps) {
3353
3389
  return;
3354
3390
  }
@@ -3372,7 +3408,7 @@ function updateOverridableProp(componentId, propValue, originPropFields) {
3372
3408
  }
3373
3409
  }
3374
3410
  };
3375
- (0, import_store51.__dispatch)(
3411
+ (0, import_store53.__dispatch)(
3376
3412
  slice.actions.setOverridableProps({
3377
3413
  componentId,
3378
3414
  overridableProps: newOverridableProps
@@ -3660,7 +3696,7 @@ var import_ui23 = require("@elementor/ui");
3660
3696
  var import_i18n24 = require("@wordpress/i18n");
3661
3697
 
3662
3698
  // src/store/actions/set-overridable-prop.ts
3663
- var import_store56 = require("@elementor/store");
3699
+ var import_store58 = require("@elementor/store");
3664
3700
  var import_utils7 = require("@elementor/utils");
3665
3701
  function setOverridableProp({
3666
3702
  componentId,
@@ -3674,7 +3710,7 @@ function setOverridableProp({
3674
3710
  originValue,
3675
3711
  originPropFields
3676
3712
  }) {
3677
- const overridableProps = selectOverridableProps((0, import_store56.__getState)(), componentId);
3713
+ const overridableProps = selectOverridableProps((0, import_store58.__getState)(), componentId);
3678
3714
  if (!overridableProps) {
3679
3715
  return;
3680
3716
  }
@@ -3711,7 +3747,7 @@ function setOverridableProp({
3711
3747
  if (isChangingGroups) {
3712
3748
  groups = removePropFromGroup(groups, existingOverridableProp.groupId, overridableProp.overrideKey);
3713
3749
  }
3714
- (0, import_store56.__dispatch)(
3750
+ (0, import_store58.__dispatch)(
3715
3751
  slice.actions.setOverridableProps({
3716
3752
  componentId,
3717
3753
  overridableProps: {
@@ -3794,12 +3830,12 @@ var Indicator2 = (0, import_react16.forwardRef)(({ isOpen, isOverridable, ...pro
3794
3830
  )));
3795
3831
 
3796
3832
  // src/components/overridable-props/utils/get-overridable-prop.ts
3797
- var import_store58 = require("@elementor/store");
3833
+ var import_store60 = require("@elementor/store");
3798
3834
  function getOverridableProp({
3799
3835
  componentId,
3800
3836
  overrideKey
3801
3837
  }) {
3802
- const overridableProps = selectOverridableProps((0, import_store58.__getState)(), componentId);
3838
+ const overridableProps = selectOverridableProps((0, import_store60.__getState)(), componentId);
3803
3839
  if (!overridableProps) {
3804
3840
  return void 0;
3805
3841
  }
@@ -4309,10 +4345,10 @@ function initMcp() {
4309
4345
 
4310
4346
  // src/populate-store.ts
4311
4347
  var import_react17 = require("react");
4312
- var import_store61 = require("@elementor/store");
4348
+ var import_store63 = require("@elementor/store");
4313
4349
  function PopulateStore() {
4314
4350
  (0, import_react17.useEffect)(() => {
4315
- (0, import_store61.__dispatch)(loadComponents());
4351
+ (0, import_store63.__dispatch)(loadComponents());
4316
4352
  }, []);
4317
4353
  return null;
4318
4354
  }
@@ -4321,7 +4357,7 @@ function PopulateStore() {
4321
4357
  var import_editor_elements17 = require("@elementor/editor-elements");
4322
4358
  var import_editor_notifications3 = require("@elementor/editor-notifications");
4323
4359
  var import_editor_v1_adapters9 = require("@elementor/editor-v1-adapters");
4324
- var import_store62 = require("@elementor/store");
4360
+ var import_store64 = require("@elementor/store");
4325
4361
  var import_i18n25 = require("@wordpress/i18n");
4326
4362
  var COMPONENT_TYPE = "e-component";
4327
4363
  var COMPONENT_CIRCULAR_NESTING_ALERT = {
@@ -4347,7 +4383,7 @@ function wouldCreateCircularNesting(componentIdToAdd) {
4347
4383
  if (componentIdToAdd === void 0) {
4348
4384
  return false;
4349
4385
  }
4350
- const state = (0, import_store62.__getState)();
4386
+ const state = (0, import_store64.__getState)();
4351
4387
  const currentComponentId = selectCurrentComponentId(state);
4352
4388
  const path = selectPath(state);
4353
4389
  if (currentComponentId === null) {
@@ -4445,19 +4481,19 @@ function blockCircularPaste(args) {
4445
4481
  }
4446
4482
 
4447
4483
  // src/store/actions/remove-component-styles.ts
4448
- var import_store64 = require("@elementor/store");
4484
+ var import_store66 = require("@elementor/store");
4449
4485
  function removeComponentStyles(id2) {
4450
4486
  apiClient.invalidateComponentConfigCache(id2);
4451
- (0, import_store64.__dispatch)(slice.actions.removeStyles({ id: id2 }));
4487
+ (0, import_store66.__dispatch)(slice.actions.removeStyles({ id: id2 }));
4452
4488
  }
4453
4489
 
4454
4490
  // src/store/components-styles-provider.ts
4455
4491
  var import_editor_styles_repository = require("@elementor/editor-styles-repository");
4456
- var import_store66 = require("@elementor/store");
4492
+ var import_store68 = require("@elementor/store");
4457
4493
  var componentsStylesProvider = (0, import_editor_styles_repository.createStylesProvider)({
4458
4494
  key: "components-styles",
4459
4495
  priority: 100,
4460
- subscribe: (cb) => (0, import_store66.__subscribeWithSelector)(
4496
+ subscribe: (cb) => (0, import_store68.__subscribeWithSelector)(
4461
4497
  (state) => state[SLICE_NAME],
4462
4498
  () => {
4463
4499
  cb();
@@ -4465,29 +4501,29 @@ var componentsStylesProvider = (0, import_editor_styles_repository.createStylesP
4465
4501
  ),
4466
4502
  actions: {
4467
4503
  all: () => {
4468
- return selectFlatStyles((0, import_store66.__getState)());
4504
+ return selectFlatStyles((0, import_store68.__getState)());
4469
4505
  },
4470
4506
  get: (id2) => {
4471
- return selectFlatStyles((0, import_store66.__getState)()).find((style) => style.id === id2) ?? null;
4507
+ return selectFlatStyles((0, import_store68.__getState)()).find((style) => style.id === id2) ?? null;
4472
4508
  }
4473
4509
  }
4474
4510
  });
4475
4511
 
4476
4512
  // src/sync/create-components-before-save.ts
4477
4513
  var import_editor_elements18 = require("@elementor/editor-elements");
4478
- var import_store68 = require("@elementor/store");
4514
+ var import_store70 = require("@elementor/store");
4479
4515
  async function createComponentsBeforeSave({
4480
4516
  elements,
4481
4517
  status
4482
4518
  }) {
4483
- const unpublishedComponents = selectUnpublishedComponents((0, import_store68.__getState)());
4519
+ const unpublishedComponents = selectUnpublishedComponents((0, import_store70.__getState)());
4484
4520
  if (!unpublishedComponents.length) {
4485
4521
  return;
4486
4522
  }
4487
4523
  try {
4488
4524
  const uidToComponentId = await createComponents(unpublishedComponents, status);
4489
4525
  updateComponentInstances(elements, uidToComponentId);
4490
- (0, import_store68.__dispatch)(
4526
+ (0, import_store70.__dispatch)(
4491
4527
  slice.actions.add(
4492
4528
  unpublishedComponents.map((component) => ({
4493
4529
  id: uidToComponentId.get(component.uid),
@@ -4497,7 +4533,7 @@ async function createComponentsBeforeSave({
4497
4533
  }))
4498
4534
  )
4499
4535
  );
4500
- (0, import_store68.__dispatch)(slice.actions.resetUnpublished());
4536
+ (0, import_store70.__dispatch)(slice.actions.resetUnpublished());
4501
4537
  } catch (error) {
4502
4538
  throw new Error(`Failed to publish components and update component instances: ${error}`);
4503
4539
  }
@@ -4557,7 +4593,7 @@ function updateElementComponentId(elementId, componentId) {
4557
4593
  }
4558
4594
 
4559
4595
  // src/sync/set-component-overridable-props-settings-before-save.ts
4560
- var import_store70 = require("@elementor/store");
4596
+ var import_store72 = require("@elementor/store");
4561
4597
  var setComponentOverridablePropsSettingsBeforeSave = ({
4562
4598
  container
4563
4599
  }) => {
@@ -4565,7 +4601,7 @@ var setComponentOverridablePropsSettingsBeforeSave = ({
4565
4601
  if (!currentDocument || currentDocument.config.type !== COMPONENT_DOCUMENT_TYPE) {
4566
4602
  return;
4567
4603
  }
4568
- const overridableProps = selectOverridableProps((0, import_store70.__getState)(), currentDocument.id);
4604
+ const overridableProps = selectOverridableProps((0, import_store72.__getState)(), currentDocument.id);
4569
4605
  if (overridableProps) {
4570
4606
  container.settings.set("overridable_props", overridableProps);
4571
4607
  }
@@ -4573,7 +4609,7 @@ var setComponentOverridablePropsSettingsBeforeSave = ({
4573
4609
 
4574
4610
  // src/sync/update-archived-component-before-save.ts
4575
4611
  var import_editor_notifications4 = require("@elementor/editor-notifications");
4576
- var import_store72 = require("@elementor/store");
4612
+ var import_store74 = require("@elementor/store");
4577
4613
  var failedNotification = (message) => ({
4578
4614
  type: "error",
4579
4615
  message: `Failed to archive components: ${message}`,
@@ -4586,7 +4622,7 @@ var successNotification = (message) => ({
4586
4622
  });
4587
4623
  var updateArchivedComponentBeforeSave = async () => {
4588
4624
  try {
4589
- const archivedComponents = selectArchivedComponents((0, import_store72.__getState)());
4625
+ const archivedComponents = selectArchivedComponents((0, import_store74.__getState)());
4590
4626
  if (!archivedComponents.length) {
4591
4627
  return;
4592
4628
  }
@@ -4607,15 +4643,15 @@ var updateArchivedComponentBeforeSave = async () => {
4607
4643
  };
4608
4644
 
4609
4645
  // src/sync/update-component-title-before-save.ts
4610
- var import_store74 = require("@elementor/store");
4646
+ var import_store76 = require("@elementor/store");
4611
4647
  var updateComponentTitleBeforeSave = async () => {
4612
- const updatedComponentNames = selectUpdatedComponentNames((0, import_store74.__getState)());
4648
+ const updatedComponentNames = selectUpdatedComponentNames((0, import_store76.__getState)());
4613
4649
  if (!updatedComponentNames.length) {
4614
4650
  return;
4615
4651
  }
4616
4652
  const result = await apiClient.updateComponentTitle(updatedComponentNames);
4617
4653
  if (result.failedIds.length === 0) {
4618
- (0, import_store74.__dispatch)(slice.actions.cleanUpdatedComponentNames());
4654
+ (0, import_store76.__dispatch)(slice.actions.cleanUpdatedComponentNames());
4619
4655
  }
4620
4656
  };
4621
4657
 
@@ -4650,7 +4686,7 @@ var beforeSave = ({ container, status }) => {
4650
4686
  // src/init.ts
4651
4687
  function init() {
4652
4688
  import_editor_styles_repository2.stylesRepository.register(componentsStylesProvider);
4653
- (0, import_store76.__registerSlice)(slice);
4689
+ (0, import_store78.__registerSlice)(slice);
4654
4690
  (0, import_editor_panels4.__registerPanel)(panel);
4655
4691
  (0, import_editor_canvas9.registerElementType)(
4656
4692
  COMPONENT_WIDGET_TYPE,