@elementor/editor-components 4.0.0-543 → 4.0.0-545
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 +739 -590
- package/dist/index.js.map +1 -1
- package/dist/index.mjs +676 -527
- package/dist/index.mjs.map +1 -1
- package/package.json +22 -22
- package/src/components/component-panel-header/component-panel-header.tsx +2 -2
- package/src/components/component-properties-panel/component-properties-panel-content.tsx +2 -2
- package/src/components/component-properties-panel/use-current-editable-item.ts +1 -2
- package/src/components/edit-component/edit-component.tsx +3 -0
- package/src/components/instance-editing-panel/instance-editing-panel.tsx +11 -9
- package/src/components/instance-editing-panel/override-prop-control.tsx +60 -44
- package/src/components/instance-editing-panel/override-props-group.tsx +3 -10
- package/src/components/instance-editing-panel/use-resolved-origin-value.tsx +6 -19
- package/src/components/overridable-props/overridable-prop-indicator.tsx +3 -2
- package/src/hooks/use-sanitize-overridable-props.ts +31 -0
- package/src/provider/component-instance-context.tsx +21 -0
- package/src/store/actions/create-unpublished-component.ts +12 -2
- package/src/store/actions/reset-sanitized-components.ts +7 -0
- package/src/store/actions/update-component-sanitized-attribute.ts +8 -0
- package/src/store/store.ts +35 -0
- package/src/sync/handle-component-edit-mode-container.ts +1 -1
- package/src/utils/filter-valid-overridable-props.ts +84 -0
- package/src/utils/overridable-props-utils.ts +58 -0
- package/src/utils/tracking.ts +5 -1
- package/src/components/component-panel-header/use-overridable-props.ts +0 -14
package/dist/index.js
CHANGED
|
@@ -44,7 +44,7 @@ var import_editor_elements_panel = require("@elementor/editor-elements-panel");
|
|
|
44
44
|
var import_editor_panels5 = require("@elementor/editor-panels");
|
|
45
45
|
var import_editor_styles_repository2 = require("@elementor/editor-styles-repository");
|
|
46
46
|
var import_editor_v1_adapters12 = require("@elementor/editor-v1-adapters");
|
|
47
|
-
var
|
|
47
|
+
var import_store85 = require("@elementor/store");
|
|
48
48
|
var import_i18n31 = require("@wordpress/i18n");
|
|
49
49
|
|
|
50
50
|
// src/component-instance-transformer.ts
|
|
@@ -127,7 +127,8 @@ var initialState = {
|
|
|
127
127
|
archivedThisSession: [],
|
|
128
128
|
path: [],
|
|
129
129
|
currentComponentId: null,
|
|
130
|
-
updatedComponentNames: {}
|
|
130
|
+
updatedComponentNames: {},
|
|
131
|
+
sanitized: {}
|
|
131
132
|
};
|
|
132
133
|
var SLICE_NAME = "components";
|
|
133
134
|
var slice = (0, import_store2.__createSlice)({
|
|
@@ -201,6 +202,17 @@ var slice = (0, import_store2.__createSlice)({
|
|
|
201
202
|
},
|
|
202
203
|
cleanUpdatedComponentNames: (state) => {
|
|
203
204
|
state.updatedComponentNames = {};
|
|
205
|
+
},
|
|
206
|
+
updateComponentSanitizedAttribute: (state, {
|
|
207
|
+
payload: { componentId, attribute }
|
|
208
|
+
}) => {
|
|
209
|
+
if (!state.sanitized[componentId]) {
|
|
210
|
+
state.sanitized[componentId] = {};
|
|
211
|
+
}
|
|
212
|
+
state.sanitized[componentId][attribute] = true;
|
|
213
|
+
},
|
|
214
|
+
resetSanitizedComponents: (state) => {
|
|
215
|
+
state.sanitized = {};
|
|
204
216
|
}
|
|
205
217
|
},
|
|
206
218
|
extraReducers: (builder) => {
|
|
@@ -303,6 +315,16 @@ var selectUpdatedComponentNames = (0, import_store2.__createSelector)(
|
|
|
303
315
|
title
|
|
304
316
|
}))
|
|
305
317
|
);
|
|
318
|
+
var useSanitizedComponents = () => {
|
|
319
|
+
return (0, import_store2.__useSelector)((state) => state[SLICE_NAME].sanitized);
|
|
320
|
+
};
|
|
321
|
+
var useIsSanitizedComponent = (componentId, key) => {
|
|
322
|
+
const sanitizedComponents = useSanitizedComponents();
|
|
323
|
+
if (!componentId) {
|
|
324
|
+
return false;
|
|
325
|
+
}
|
|
326
|
+
return !!sanitizedComponents[componentId]?.[key];
|
|
327
|
+
};
|
|
306
328
|
|
|
307
329
|
// src/utils/component-document-data.ts
|
|
308
330
|
var import_editor_documents = require("@elementor/editor-documents");
|
|
@@ -389,7 +411,7 @@ var import_editor_documents7 = require("@elementor/editor-documents");
|
|
|
389
411
|
var import_editor_panels3 = require("@elementor/editor-panels");
|
|
390
412
|
var import_editor_ui6 = require("@elementor/editor-ui");
|
|
391
413
|
var import_icons7 = require("@elementor/icons");
|
|
392
|
-
var
|
|
414
|
+
var import_store32 = require("@elementor/store");
|
|
393
415
|
var import_ui10 = require("@elementor/ui");
|
|
394
416
|
var import_i18n13 = require("@wordpress/i18n");
|
|
395
417
|
|
|
@@ -468,11 +490,26 @@ function useNavigateBack() {
|
|
|
468
490
|
}, [path, documentsManager]);
|
|
469
491
|
}
|
|
470
492
|
|
|
493
|
+
// src/store/actions/delete-overridable-prop.ts
|
|
494
|
+
var import_store11 = require("@elementor/store");
|
|
495
|
+
|
|
496
|
+
// src/utils/revert-overridable-settings.ts
|
|
497
|
+
var import_editor_elements2 = require("@elementor/editor-elements");
|
|
498
|
+
|
|
499
|
+
// src/create-component-type.ts
|
|
500
|
+
var import_editor_canvas4 = require("@elementor/editor-canvas");
|
|
501
|
+
var import_editor_documents4 = require("@elementor/editor-documents");
|
|
502
|
+
var import_store9 = require("@elementor/store");
|
|
503
|
+
var import_i18n = require("@wordpress/i18n");
|
|
504
|
+
|
|
471
505
|
// src/utils/tracking.ts
|
|
472
506
|
var import_events = require("@elementor/events");
|
|
473
507
|
var import_store7 = require("@elementor/store");
|
|
474
508
|
var FEATURE_NAME = "Components";
|
|
475
509
|
var trackComponentEvent = ({ action, source, ...data }) => {
|
|
510
|
+
if (source === "system") {
|
|
511
|
+
return;
|
|
512
|
+
}
|
|
476
513
|
const { dispatchEvent, config } = (0, import_events.getMixpanel)();
|
|
477
514
|
if (!config?.names?.components?.[action]) {
|
|
478
515
|
return;
|
|
@@ -504,289 +541,47 @@ var onElementDrop = (_args, element) => {
|
|
|
504
541
|
});
|
|
505
542
|
};
|
|
506
543
|
|
|
507
|
-
// src/
|
|
508
|
-
var
|
|
509
|
-
var
|
|
510
|
-
|
|
511
|
-
|
|
512
|
-
|
|
513
|
-
|
|
514
|
-
|
|
515
|
-
|
|
516
|
-
|
|
517
|
-
|
|
518
|
-
|
|
519
|
-
|
|
520
|
-
|
|
521
|
-
|
|
522
|
-
var import_ui7 = require("@elementor/ui");
|
|
523
|
-
var import_utils2 = require("@elementor/utils");
|
|
524
|
-
var import_i18n10 = require("@wordpress/i18n");
|
|
525
|
-
|
|
526
|
-
// src/store/actions/add-overridable-group.ts
|
|
527
|
-
var import_store9 = require("@elementor/store");
|
|
528
|
-
function addOverridableGroup({
|
|
529
|
-
componentId,
|
|
530
|
-
groupId,
|
|
531
|
-
label,
|
|
532
|
-
source
|
|
533
|
-
}) {
|
|
534
|
-
const currentComponent = selectCurrentComponent((0, import_store9.__getState)());
|
|
535
|
-
const overridableProps = selectOverridableProps((0, import_store9.__getState)(), componentId);
|
|
536
|
-
if (!overridableProps) {
|
|
537
|
-
return;
|
|
538
|
-
}
|
|
539
|
-
const newGroup = {
|
|
540
|
-
id: groupId,
|
|
541
|
-
label,
|
|
542
|
-
props: []
|
|
543
|
-
};
|
|
544
|
-
(0, import_store9.__dispatch)(
|
|
545
|
-
slice.actions.setOverridableProps({
|
|
546
|
-
componentId,
|
|
547
|
-
overridableProps: {
|
|
548
|
-
...overridableProps,
|
|
549
|
-
groups: {
|
|
550
|
-
...overridableProps.groups,
|
|
551
|
-
items: {
|
|
552
|
-
...overridableProps.groups.items,
|
|
553
|
-
[groupId]: newGroup
|
|
554
|
-
},
|
|
555
|
-
order: [groupId, ...overridableProps.groups.order]
|
|
556
|
-
}
|
|
557
|
-
}
|
|
558
|
-
})
|
|
559
|
-
);
|
|
560
|
-
trackComponentEvent({
|
|
561
|
-
action: "propertiesGroupCreated",
|
|
562
|
-
source,
|
|
563
|
-
component_uid: currentComponent?.uid,
|
|
564
|
-
group_name: label
|
|
544
|
+
// src/create-component-type.ts
|
|
545
|
+
var COMPONENT_WIDGET_TYPE = "e-component";
|
|
546
|
+
var updateGroups = (groups, config) => {
|
|
547
|
+
const disableMap = new Map(Object.entries(config.disable ?? {}));
|
|
548
|
+
const addMap = new Map(Object.entries(config.add ?? {}));
|
|
549
|
+
return groups.map((group) => {
|
|
550
|
+
const disabledActions = disableMap.get(group.name) ?? [];
|
|
551
|
+
const addConfig = addMap.get(group.name);
|
|
552
|
+
const updatedActions = group.actions.map(
|
|
553
|
+
(action) => disabledActions.includes(action.name) ? { ...action, isEnabled: () => false } : action
|
|
554
|
+
);
|
|
555
|
+
if (addConfig) {
|
|
556
|
+
updatedActions.splice(addConfig.index, 0, addConfig.action);
|
|
557
|
+
}
|
|
558
|
+
return { ...group, actions: updatedActions };
|
|
565
559
|
});
|
|
566
|
-
|
|
567
|
-
|
|
568
|
-
|
|
569
|
-
|
|
570
|
-
|
|
571
|
-
|
|
572
|
-
|
|
573
|
-
|
|
574
|
-
var import_i18n = require("@wordpress/i18n");
|
|
575
|
-
function removePropFromAllGroups(groups, propKey) {
|
|
576
|
-
return {
|
|
577
|
-
...groups,
|
|
578
|
-
items: Object.fromEntries(
|
|
579
|
-
Object.entries(groups.items).map(([groupId, group]) => [
|
|
580
|
-
groupId,
|
|
581
|
-
{
|
|
582
|
-
...group,
|
|
583
|
-
props: group.props.filter((p) => p !== propKey)
|
|
584
|
-
}
|
|
585
|
-
])
|
|
586
|
-
)
|
|
587
|
-
};
|
|
588
|
-
}
|
|
589
|
-
function addPropToGroup(groups, groupId, propKey) {
|
|
590
|
-
const group = groups.items[groupId];
|
|
591
|
-
if (!group) {
|
|
592
|
-
return groups;
|
|
593
|
-
}
|
|
594
|
-
if (group.props.includes(propKey)) {
|
|
595
|
-
return groups;
|
|
596
|
-
}
|
|
597
|
-
return {
|
|
598
|
-
...groups,
|
|
599
|
-
items: {
|
|
600
|
-
...groups.items,
|
|
601
|
-
[groupId]: {
|
|
602
|
-
...group,
|
|
603
|
-
props: [...group.props, propKey]
|
|
604
|
-
}
|
|
560
|
+
};
|
|
561
|
+
function createComponentType(options) {
|
|
562
|
+
const legacyWindow = window;
|
|
563
|
+
const WidgetType = legacyWindow.elementor.modules.elements.types.Widget;
|
|
564
|
+
const view = createComponentView({ ...options });
|
|
565
|
+
return class extends WidgetType {
|
|
566
|
+
getType() {
|
|
567
|
+
return options.type;
|
|
605
568
|
}
|
|
606
|
-
|
|
607
|
-
|
|
608
|
-
function movePropBetweenGroups(groups, propKey, fromGroupId, toGroupId) {
|
|
609
|
-
if (fromGroupId === toGroupId) {
|
|
610
|
-
return groups;
|
|
611
|
-
}
|
|
612
|
-
const withoutProp = removePropFromGroup(groups, fromGroupId, propKey);
|
|
613
|
-
return addPropToGroup(withoutProp, toGroupId, propKey);
|
|
614
|
-
}
|
|
615
|
-
function removePropFromGroup(groups, groupId, propKey) {
|
|
616
|
-
const group = groups.items[groupId];
|
|
617
|
-
if (!group) {
|
|
618
|
-
return groups;
|
|
619
|
-
}
|
|
620
|
-
return {
|
|
621
|
-
...groups,
|
|
622
|
-
items: {
|
|
623
|
-
...groups.items,
|
|
624
|
-
[groupId]: {
|
|
625
|
-
...group,
|
|
626
|
-
props: group.props.filter((p) => p !== propKey)
|
|
627
|
-
}
|
|
569
|
+
getView() {
|
|
570
|
+
return view;
|
|
628
571
|
}
|
|
629
|
-
|
|
630
|
-
|
|
631
|
-
function resolveOrCreateGroup(groups, requestedGroupId) {
|
|
632
|
-
if (requestedGroupId && groups.items[requestedGroupId]) {
|
|
633
|
-
return { groups, groupId: requestedGroupId };
|
|
634
|
-
}
|
|
635
|
-
if (!requestedGroupId && groups.order.length > 0) {
|
|
636
|
-
return { groups, groupId: groups.order[0] };
|
|
637
|
-
}
|
|
638
|
-
return createGroup(groups, requestedGroupId);
|
|
639
|
-
}
|
|
640
|
-
function createGroup(groups, groupId, label) {
|
|
641
|
-
const newGroupId = groupId || (0, import_utils.generateUniqueId)("group");
|
|
642
|
-
const newLabel = label || (0, import_i18n.__)("Default", "elementor");
|
|
643
|
-
return {
|
|
644
|
-
groups: {
|
|
645
|
-
...groups,
|
|
646
|
-
items: {
|
|
647
|
-
...groups.items,
|
|
648
|
-
[newGroupId]: {
|
|
649
|
-
id: newGroupId,
|
|
650
|
-
label: newLabel,
|
|
651
|
-
props: []
|
|
652
|
-
}
|
|
653
|
-
},
|
|
654
|
-
order: [...groups.order, newGroupId]
|
|
655
|
-
},
|
|
656
|
-
groupId: newGroupId
|
|
657
|
-
};
|
|
658
|
-
}
|
|
659
|
-
function removePropsFromState(overridableProps, propsToRemove) {
|
|
660
|
-
const overrideKeysToRemove = propsToRemove.map((prop) => prop.overrideKey);
|
|
661
|
-
const remainingProps = Object.fromEntries(
|
|
662
|
-
Object.entries(overridableProps.props).filter(([, prop]) => !propsToRemove.includes(prop))
|
|
663
|
-
);
|
|
664
|
-
const updatedGroupItems = Object.fromEntries(
|
|
665
|
-
Object.entries(overridableProps.groups.items).map(
|
|
666
|
-
([groupId, group]) => [
|
|
667
|
-
groupId,
|
|
668
|
-
{
|
|
669
|
-
...group,
|
|
670
|
-
props: group.props.filter((prop) => !overrideKeysToRemove.includes(prop))
|
|
671
|
-
}
|
|
672
|
-
]
|
|
673
|
-
)
|
|
674
|
-
);
|
|
675
|
-
return {
|
|
676
|
-
props: remainingProps,
|
|
677
|
-
groups: {
|
|
678
|
-
items: updatedGroupItems,
|
|
679
|
-
order: overridableProps.groups.order.filter((groupId) => !overrideKeysToRemove.includes(groupId))
|
|
572
|
+
getModel() {
|
|
573
|
+
return createComponentModel();
|
|
680
574
|
}
|
|
681
575
|
};
|
|
682
576
|
}
|
|
683
|
-
function
|
|
684
|
-
|
|
685
|
-
|
|
686
|
-
|
|
687
|
-
|
|
688
|
-
|
|
689
|
-
|
|
690
|
-
|
|
691
|
-
}
|
|
692
|
-
function deleteGroup(groups, groupId) {
|
|
693
|
-
const { [groupId]: removed, ...remainingItems } = groups.items;
|
|
694
|
-
return {
|
|
695
|
-
items: remainingItems,
|
|
696
|
-
order: groups.order.filter((id2) => id2 !== groupId)
|
|
697
|
-
};
|
|
698
|
-
}
|
|
699
|
-
function renameGroup(groups, groupId, newLabel) {
|
|
700
|
-
const group = groups.items[groupId];
|
|
701
|
-
if (!group) {
|
|
702
|
-
return groups;
|
|
703
|
-
}
|
|
704
|
-
return {
|
|
705
|
-
...groups,
|
|
706
|
-
items: {
|
|
707
|
-
...groups.items,
|
|
708
|
-
[groupId]: {
|
|
709
|
-
...group,
|
|
710
|
-
label: newLabel
|
|
711
|
-
}
|
|
712
|
-
}
|
|
713
|
-
};
|
|
714
|
-
}
|
|
715
|
-
|
|
716
|
-
// src/store/actions/delete-overridable-group.ts
|
|
717
|
-
function deleteOverridableGroup({ componentId, groupId }) {
|
|
718
|
-
const overridableProps = selectOverridableProps((0, import_store11.__getState)(), componentId);
|
|
719
|
-
if (!overridableProps) {
|
|
720
|
-
return false;
|
|
721
|
-
}
|
|
722
|
-
const group = overridableProps.groups.items[groupId];
|
|
723
|
-
if (!group || group.props.length > 0) {
|
|
724
|
-
return false;
|
|
725
|
-
}
|
|
726
|
-
const updatedGroups = deleteGroup(overridableProps.groups, groupId);
|
|
727
|
-
(0, import_store11.__dispatch)(
|
|
728
|
-
slice.actions.setOverridableProps({
|
|
729
|
-
componentId,
|
|
730
|
-
overridableProps: {
|
|
731
|
-
...overridableProps,
|
|
732
|
-
groups: updatedGroups
|
|
733
|
-
}
|
|
734
|
-
})
|
|
735
|
-
);
|
|
736
|
-
return true;
|
|
737
|
-
}
|
|
738
|
-
|
|
739
|
-
// src/store/actions/delete-overridable-prop.ts
|
|
740
|
-
var import_store15 = require("@elementor/store");
|
|
741
|
-
|
|
742
|
-
// src/utils/revert-overridable-settings.ts
|
|
743
|
-
var import_editor_elements2 = require("@elementor/editor-elements");
|
|
744
|
-
|
|
745
|
-
// src/create-component-type.ts
|
|
746
|
-
var import_editor_canvas4 = require("@elementor/editor-canvas");
|
|
747
|
-
var import_editor_documents4 = require("@elementor/editor-documents");
|
|
748
|
-
var import_store13 = require("@elementor/store");
|
|
749
|
-
var import_i18n2 = require("@wordpress/i18n");
|
|
750
|
-
var COMPONENT_WIDGET_TYPE = "e-component";
|
|
751
|
-
var updateGroups = (groups, config) => {
|
|
752
|
-
const disableMap = new Map(Object.entries(config.disable ?? {}));
|
|
753
|
-
const addMap = new Map(Object.entries(config.add ?? {}));
|
|
754
|
-
return groups.map((group) => {
|
|
755
|
-
const disabledActions = disableMap.get(group.name) ?? [];
|
|
756
|
-
const addConfig = addMap.get(group.name);
|
|
757
|
-
const updatedActions = group.actions.map(
|
|
758
|
-
(action) => disabledActions.includes(action.name) ? { ...action, isEnabled: () => false } : action
|
|
759
|
-
);
|
|
760
|
-
if (addConfig) {
|
|
761
|
-
updatedActions.splice(addConfig.index, 0, addConfig.action);
|
|
762
|
-
}
|
|
763
|
-
return { ...group, actions: updatedActions };
|
|
764
|
-
});
|
|
765
|
-
};
|
|
766
|
-
function createComponentType(options) {
|
|
767
|
-
const legacyWindow = window;
|
|
768
|
-
const WidgetType = legacyWindow.elementor.modules.elements.types.Widget;
|
|
769
|
-
const view = createComponentView({ ...options });
|
|
770
|
-
return class extends WidgetType {
|
|
771
|
-
getType() {
|
|
772
|
-
return options.type;
|
|
773
|
-
}
|
|
774
|
-
getView() {
|
|
775
|
-
return view;
|
|
776
|
-
}
|
|
777
|
-
getModel() {
|
|
778
|
-
return createComponentModel();
|
|
779
|
-
}
|
|
780
|
-
};
|
|
781
|
-
}
|
|
782
|
-
function createComponentView(options) {
|
|
783
|
-
const legacyWindow = window;
|
|
784
|
-
return class extends (0, import_editor_canvas4.createTemplatedElementView)(options) {
|
|
785
|
-
eventsManagerConfig = legacyWindow.elementorCommon.eventsManager.config;
|
|
786
|
-
#componentRenderContext;
|
|
787
|
-
isComponentCurrentlyEdited() {
|
|
788
|
-
const currentDocument = (0, import_editor_documents4.getCurrentDocument)();
|
|
789
|
-
return currentDocument?.id === this.getComponentId();
|
|
577
|
+
function createComponentView(options) {
|
|
578
|
+
const legacyWindow = window;
|
|
579
|
+
return class extends (0, import_editor_canvas4.createTemplatedElementView)(options) {
|
|
580
|
+
eventsManagerConfig = legacyWindow.elementorCommon.eventsManager.config;
|
|
581
|
+
#componentRenderContext;
|
|
582
|
+
isComponentCurrentlyEdited() {
|
|
583
|
+
const currentDocument = (0, import_editor_documents4.getCurrentDocument)();
|
|
584
|
+
return currentDocument?.id === this.getComponentId();
|
|
790
585
|
}
|
|
791
586
|
getRenderContext() {
|
|
792
587
|
const namespaceKey = this.getNamespaceKey();
|
|
@@ -859,7 +654,7 @@ function createComponentView(options) {
|
|
|
859
654
|
action: {
|
|
860
655
|
name: "edit component",
|
|
861
656
|
icon: "eicon-edit",
|
|
862
|
-
title: () => (0,
|
|
657
|
+
title: () => (0, import_i18n.__)("Edit Component", "elementor"),
|
|
863
658
|
isEnabled: () => true,
|
|
864
659
|
callback: (_, eventData) => this.editComponent(eventData)
|
|
865
660
|
}
|
|
@@ -964,7 +759,7 @@ function createComponentModel() {
|
|
|
964
759
|
}
|
|
965
760
|
const componentUid = editorSettings?.component_uid;
|
|
966
761
|
if (componentUid) {
|
|
967
|
-
const component = selectComponentByUid((0,
|
|
762
|
+
const component = selectComponentByUid((0, import_store9.__getState)(), componentUid);
|
|
968
763
|
if (component?.name) {
|
|
969
764
|
return component.name;
|
|
970
765
|
}
|
|
@@ -1131,85 +926,444 @@ function revertComponentInstanceSettings(settings) {
|
|
|
1131
926
|
})
|
|
1132
927
|
};
|
|
1133
928
|
}
|
|
1134
|
-
function revertAllOverridablesInContainer(container) {
|
|
1135
|
-
(0, import_editor_elements2.getAllDescendants)(container).forEach((element) => {
|
|
1136
|
-
if (element.model.get("widgetType") === COMPONENT_WIDGET_TYPE) {
|
|
1137
|
-
revertComponentInstanceOverridesInElement(element);
|
|
1138
|
-
} else {
|
|
1139
|
-
revertElementSettings(element);
|
|
929
|
+
function revertAllOverridablesInContainer(container) {
|
|
930
|
+
(0, import_editor_elements2.getAllDescendants)(container).forEach((element) => {
|
|
931
|
+
if (element.model.get("widgetType") === COMPONENT_WIDGET_TYPE) {
|
|
932
|
+
revertComponentInstanceOverridesInElement(element);
|
|
933
|
+
} else {
|
|
934
|
+
revertElementSettings(element);
|
|
935
|
+
}
|
|
936
|
+
});
|
|
937
|
+
}
|
|
938
|
+
function revertComponentInstanceOverridesInElement(element) {
|
|
939
|
+
const settings = element.settings?.toJSON() ?? {};
|
|
940
|
+
const componentInstance = componentInstancePropTypeUtil.extract(settings.component_instance);
|
|
941
|
+
const overrides = componentInstanceOverridesPropTypeUtil.extract(componentInstance?.overrides);
|
|
942
|
+
if (!overrides?.length) {
|
|
943
|
+
return;
|
|
944
|
+
}
|
|
945
|
+
const revertedOverrides = revertComponentInstanceOverrides(overrides);
|
|
946
|
+
const updatedSetting = componentInstancePropTypeUtil.create({
|
|
947
|
+
...componentInstance,
|
|
948
|
+
overrides: componentInstanceOverridesPropTypeUtil.create(revertedOverrides)
|
|
949
|
+
});
|
|
950
|
+
(0, import_editor_elements2.updateElementSettings)({
|
|
951
|
+
id: element.id,
|
|
952
|
+
props: { component_instance: updatedSetting },
|
|
953
|
+
withHistory: false
|
|
954
|
+
});
|
|
955
|
+
}
|
|
956
|
+
function revertElementSettings(element) {
|
|
957
|
+
const settings = element.settings?.toJSON() ?? {};
|
|
958
|
+
const { hasChanges, settings: revertedSettings } = revertOverridablePropsFromSettings(settings);
|
|
959
|
+
if (!hasChanges) {
|
|
960
|
+
return;
|
|
961
|
+
}
|
|
962
|
+
(0, import_editor_elements2.updateElementSettings)({
|
|
963
|
+
id: element.id,
|
|
964
|
+
props: revertedSettings,
|
|
965
|
+
withHistory: false
|
|
966
|
+
});
|
|
967
|
+
}
|
|
968
|
+
|
|
969
|
+
// src/store/utils/groups-transformers.ts
|
|
970
|
+
var import_utils = require("@elementor/utils");
|
|
971
|
+
var import_i18n2 = require("@wordpress/i18n");
|
|
972
|
+
function removePropFromAllGroups(groups, propKey) {
|
|
973
|
+
return {
|
|
974
|
+
...groups,
|
|
975
|
+
items: Object.fromEntries(
|
|
976
|
+
Object.entries(groups.items).map(([groupId, group]) => [
|
|
977
|
+
groupId,
|
|
978
|
+
{
|
|
979
|
+
...group,
|
|
980
|
+
props: group.props.filter((p) => p !== propKey)
|
|
981
|
+
}
|
|
982
|
+
])
|
|
983
|
+
)
|
|
984
|
+
};
|
|
985
|
+
}
|
|
986
|
+
function addPropToGroup(groups, groupId, propKey) {
|
|
987
|
+
const group = groups.items[groupId];
|
|
988
|
+
if (!group) {
|
|
989
|
+
return groups;
|
|
990
|
+
}
|
|
991
|
+
if (group.props.includes(propKey)) {
|
|
992
|
+
return groups;
|
|
993
|
+
}
|
|
994
|
+
return {
|
|
995
|
+
...groups,
|
|
996
|
+
items: {
|
|
997
|
+
...groups.items,
|
|
998
|
+
[groupId]: {
|
|
999
|
+
...group,
|
|
1000
|
+
props: [...group.props, propKey]
|
|
1001
|
+
}
|
|
1002
|
+
}
|
|
1003
|
+
};
|
|
1004
|
+
}
|
|
1005
|
+
function movePropBetweenGroups(groups, propKey, fromGroupId, toGroupId) {
|
|
1006
|
+
if (fromGroupId === toGroupId) {
|
|
1007
|
+
return groups;
|
|
1008
|
+
}
|
|
1009
|
+
const withoutProp = removePropFromGroup(groups, fromGroupId, propKey);
|
|
1010
|
+
return addPropToGroup(withoutProp, toGroupId, propKey);
|
|
1011
|
+
}
|
|
1012
|
+
function removePropFromGroup(groups, groupId, propKey) {
|
|
1013
|
+
const group = groups.items[groupId];
|
|
1014
|
+
if (!group) {
|
|
1015
|
+
return groups;
|
|
1016
|
+
}
|
|
1017
|
+
return {
|
|
1018
|
+
...groups,
|
|
1019
|
+
items: {
|
|
1020
|
+
...groups.items,
|
|
1021
|
+
[groupId]: {
|
|
1022
|
+
...group,
|
|
1023
|
+
props: group.props.filter((p) => p !== propKey)
|
|
1024
|
+
}
|
|
1025
|
+
}
|
|
1026
|
+
};
|
|
1027
|
+
}
|
|
1028
|
+
function resolveOrCreateGroup(groups, requestedGroupId) {
|
|
1029
|
+
if (requestedGroupId && groups.items[requestedGroupId]) {
|
|
1030
|
+
return { groups, groupId: requestedGroupId };
|
|
1031
|
+
}
|
|
1032
|
+
if (!requestedGroupId && groups.order.length > 0) {
|
|
1033
|
+
return { groups, groupId: groups.order[0] };
|
|
1034
|
+
}
|
|
1035
|
+
return createGroup(groups, requestedGroupId);
|
|
1036
|
+
}
|
|
1037
|
+
function createGroup(groups, groupId, label) {
|
|
1038
|
+
const newGroupId = groupId || (0, import_utils.generateUniqueId)("group");
|
|
1039
|
+
const newLabel = label || (0, import_i18n2.__)("Default", "elementor");
|
|
1040
|
+
return {
|
|
1041
|
+
groups: {
|
|
1042
|
+
...groups,
|
|
1043
|
+
items: {
|
|
1044
|
+
...groups.items,
|
|
1045
|
+
[newGroupId]: {
|
|
1046
|
+
id: newGroupId,
|
|
1047
|
+
label: newLabel,
|
|
1048
|
+
props: []
|
|
1049
|
+
}
|
|
1050
|
+
},
|
|
1051
|
+
order: [...groups.order, newGroupId]
|
|
1052
|
+
},
|
|
1053
|
+
groupId: newGroupId
|
|
1054
|
+
};
|
|
1055
|
+
}
|
|
1056
|
+
function removePropsFromState(overridableProps, propsToRemove) {
|
|
1057
|
+
const overrideKeysToRemove = propsToRemove.map((prop) => prop.overrideKey);
|
|
1058
|
+
const remainingProps = Object.fromEntries(
|
|
1059
|
+
Object.entries(overridableProps.props).filter(([, prop]) => !propsToRemove.includes(prop))
|
|
1060
|
+
);
|
|
1061
|
+
const updatedGroupItems = Object.fromEntries(
|
|
1062
|
+
Object.entries(overridableProps.groups.items).map(
|
|
1063
|
+
([groupId, group]) => [
|
|
1064
|
+
groupId,
|
|
1065
|
+
{
|
|
1066
|
+
...group,
|
|
1067
|
+
props: group.props.filter((prop) => !overrideKeysToRemove.includes(prop))
|
|
1068
|
+
}
|
|
1069
|
+
]
|
|
1070
|
+
)
|
|
1071
|
+
);
|
|
1072
|
+
return {
|
|
1073
|
+
props: remainingProps,
|
|
1074
|
+
groups: {
|
|
1075
|
+
items: updatedGroupItems,
|
|
1076
|
+
order: overridableProps.groups.order.filter((groupId) => !overrideKeysToRemove.includes(groupId))
|
|
1077
|
+
}
|
|
1078
|
+
};
|
|
1079
|
+
}
|
|
1080
|
+
function ensureGroupInOrder(groups, groupId) {
|
|
1081
|
+
if (groups.order.includes(groupId)) {
|
|
1082
|
+
return groups;
|
|
1083
|
+
}
|
|
1084
|
+
return {
|
|
1085
|
+
...groups,
|
|
1086
|
+
order: [...groups.order, groupId]
|
|
1087
|
+
};
|
|
1088
|
+
}
|
|
1089
|
+
function deleteGroup(groups, groupId) {
|
|
1090
|
+
const { [groupId]: removed, ...remainingItems } = groups.items;
|
|
1091
|
+
return {
|
|
1092
|
+
items: remainingItems,
|
|
1093
|
+
order: groups.order.filter((id2) => id2 !== groupId)
|
|
1094
|
+
};
|
|
1095
|
+
}
|
|
1096
|
+
function renameGroup(groups, groupId, newLabel) {
|
|
1097
|
+
const group = groups.items[groupId];
|
|
1098
|
+
if (!group) {
|
|
1099
|
+
return groups;
|
|
1100
|
+
}
|
|
1101
|
+
return {
|
|
1102
|
+
...groups,
|
|
1103
|
+
items: {
|
|
1104
|
+
...groups.items,
|
|
1105
|
+
[groupId]: {
|
|
1106
|
+
...group,
|
|
1107
|
+
label: newLabel
|
|
1108
|
+
}
|
|
1109
|
+
}
|
|
1110
|
+
};
|
|
1111
|
+
}
|
|
1112
|
+
|
|
1113
|
+
// src/store/actions/delete-overridable-prop.ts
|
|
1114
|
+
function deleteOverridableProp({ componentId, propKey, source }) {
|
|
1115
|
+
const overridableProps = selectOverridableProps((0, import_store11.__getState)(), componentId);
|
|
1116
|
+
if (!overridableProps) {
|
|
1117
|
+
return;
|
|
1118
|
+
}
|
|
1119
|
+
const prop = overridableProps.props[propKey];
|
|
1120
|
+
if (!prop) {
|
|
1121
|
+
return;
|
|
1122
|
+
}
|
|
1123
|
+
revertElementOverridableSetting(prop.elementId, prop.propKey, prop.originValue, propKey);
|
|
1124
|
+
const { [propKey]: removedProp, ...remainingProps } = overridableProps.props;
|
|
1125
|
+
const updatedGroups = removePropFromAllGroups(overridableProps.groups, propKey);
|
|
1126
|
+
(0, import_store11.__dispatch)(
|
|
1127
|
+
slice.actions.setOverridableProps({
|
|
1128
|
+
componentId,
|
|
1129
|
+
overridableProps: {
|
|
1130
|
+
...overridableProps,
|
|
1131
|
+
props: remainingProps,
|
|
1132
|
+
groups: updatedGroups
|
|
1133
|
+
}
|
|
1134
|
+
})
|
|
1135
|
+
);
|
|
1136
|
+
const currentComponent = selectCurrentComponent((0, import_store11.__getState)());
|
|
1137
|
+
trackComponentEvent({
|
|
1138
|
+
action: "propertyRemoved",
|
|
1139
|
+
source,
|
|
1140
|
+
component_uid: currentComponent?.uid,
|
|
1141
|
+
property_id: removedProp.overrideKey,
|
|
1142
|
+
property_path: removedProp.propKey,
|
|
1143
|
+
property_name: removedProp.label,
|
|
1144
|
+
element_type: removedProp.widgetType ?? removedProp.elType
|
|
1145
|
+
});
|
|
1146
|
+
}
|
|
1147
|
+
|
|
1148
|
+
// src/store/actions/update-component-sanitized-attribute.ts
|
|
1149
|
+
var import_store13 = require("@elementor/store");
|
|
1150
|
+
function updateComponentSanitizedAttribute(componentId, attribute) {
|
|
1151
|
+
(0, import_store13.__dispatch)(slice.actions.updateComponentSanitizedAttribute({ componentId, attribute }));
|
|
1152
|
+
}
|
|
1153
|
+
|
|
1154
|
+
// src/utils/filter-valid-overridable-props.ts
|
|
1155
|
+
var import_editor_elements3 = require("@elementor/editor-elements");
|
|
1156
|
+
|
|
1157
|
+
// src/components/overridable-props/utils/get-overridable-prop.ts
|
|
1158
|
+
var import_store15 = require("@elementor/store");
|
|
1159
|
+
function getOverridableProp({
|
|
1160
|
+
componentId,
|
|
1161
|
+
overrideKey
|
|
1162
|
+
}) {
|
|
1163
|
+
const overridableProps = selectOverridableProps((0, import_store15.__getState)(), componentId);
|
|
1164
|
+
if (!overridableProps) {
|
|
1165
|
+
return void 0;
|
|
1166
|
+
}
|
|
1167
|
+
return overridableProps.props[overrideKey];
|
|
1168
|
+
}
|
|
1169
|
+
|
|
1170
|
+
// src/utils/overridable-props-utils.ts
|
|
1171
|
+
function getMatchingOverride(overrides, overrideKey) {
|
|
1172
|
+
return overrides?.find((override) => {
|
|
1173
|
+
const overridableValue = componentOverridablePropTypeUtil.extract(override);
|
|
1174
|
+
if (overridableValue) {
|
|
1175
|
+
const overrideValue = componentInstanceOverridePropTypeUtil.extract(overridableValue.origin_value);
|
|
1176
|
+
return overrideValue?.override_key === overrideKey;
|
|
1177
|
+
}
|
|
1178
|
+
return override.value.override_key === overrideKey;
|
|
1179
|
+
}) ?? null;
|
|
1180
|
+
}
|
|
1181
|
+
function extractInnerOverrideInfo(override) {
|
|
1182
|
+
if (!override) {
|
|
1183
|
+
return null;
|
|
1184
|
+
}
|
|
1185
|
+
const overridableValue = componentOverridablePropTypeUtil.extract(override);
|
|
1186
|
+
const innerOverride = overridableValue ? componentInstanceOverridePropTypeUtil.extract(overridableValue.origin_value) : componentInstanceOverridePropTypeUtil.extract(override);
|
|
1187
|
+
if (!innerOverride) {
|
|
1188
|
+
return null;
|
|
1189
|
+
}
|
|
1190
|
+
const {
|
|
1191
|
+
schema_source: schemaSource,
|
|
1192
|
+
override_key: innerOverrideKey,
|
|
1193
|
+
override_value: overrideValue
|
|
1194
|
+
} = innerOverride;
|
|
1195
|
+
const componentId = schemaSource?.id;
|
|
1196
|
+
if (!componentId || !innerOverrideKey) {
|
|
1197
|
+
return null;
|
|
1198
|
+
}
|
|
1199
|
+
return { componentId, innerOverrideKey, overrideValue };
|
|
1200
|
+
}
|
|
1201
|
+
|
|
1202
|
+
// src/utils/filter-valid-overridable-props.ts
|
|
1203
|
+
function filterValidOverridableProps(overridableProps) {
|
|
1204
|
+
const validProps = {};
|
|
1205
|
+
for (const [key, prop] of Object.entries(overridableProps.props)) {
|
|
1206
|
+
if (isExposedPropValid(prop)) {
|
|
1207
|
+
validProps[key] = prop;
|
|
1208
|
+
}
|
|
1209
|
+
}
|
|
1210
|
+
const validPropKeys = new Set(Object.keys(validProps));
|
|
1211
|
+
const filteredGroups = {
|
|
1212
|
+
items: Object.fromEntries(
|
|
1213
|
+
Object.entries(overridableProps.groups.items).map(([groupId, group]) => [
|
|
1214
|
+
groupId,
|
|
1215
|
+
{ ...group, props: group.props.filter((propKey) => validPropKeys.has(propKey)) }
|
|
1216
|
+
])
|
|
1217
|
+
),
|
|
1218
|
+
order: overridableProps.groups.order
|
|
1219
|
+
};
|
|
1220
|
+
return { props: validProps, groups: filteredGroups };
|
|
1221
|
+
}
|
|
1222
|
+
function isExposedPropValid(prop) {
|
|
1223
|
+
if (!prop.originPropFields) {
|
|
1224
|
+
return true;
|
|
1225
|
+
}
|
|
1226
|
+
const setting = (0, import_editor_elements3.getElementSetting)(prop.elementId, "component_instance");
|
|
1227
|
+
const componentInstance = componentInstancePropTypeUtil.extract(setting);
|
|
1228
|
+
if (!componentInstance?.component_id?.value) {
|
|
1229
|
+
return false;
|
|
1230
|
+
}
|
|
1231
|
+
const overrides = componentInstanceOverridesPropTypeUtil.extract(componentInstance.overrides) ?? void 0;
|
|
1232
|
+
const matchingOverride = findOverrideByOuterKey(overrides, prop.overrideKey);
|
|
1233
|
+
const innerOverrideInfo = extractInnerOverrideInfo(matchingOverride);
|
|
1234
|
+
if (!innerOverrideInfo) {
|
|
1235
|
+
return false;
|
|
1236
|
+
}
|
|
1237
|
+
const { componentId, innerOverrideKey } = innerOverrideInfo;
|
|
1238
|
+
const innerOverridableProp = getOverridableProp({ componentId, overrideKey: innerOverrideKey });
|
|
1239
|
+
if (!innerOverridableProp) {
|
|
1240
|
+
return false;
|
|
1241
|
+
}
|
|
1242
|
+
return isExposedPropValid(innerOverridableProp);
|
|
1243
|
+
}
|
|
1244
|
+
function findOverrideByOuterKey(overrides, outerKey) {
|
|
1245
|
+
if (!overrides) {
|
|
1246
|
+
return null;
|
|
1247
|
+
}
|
|
1248
|
+
return overrides.find((override) => {
|
|
1249
|
+
const overridableValue = componentOverridablePropTypeUtil.extract(override);
|
|
1250
|
+
if (overridableValue) {
|
|
1251
|
+
return overridableValue.override_key === outerKey;
|
|
1140
1252
|
}
|
|
1141
|
-
|
|
1253
|
+
return override.value.override_key === outerKey;
|
|
1254
|
+
}) ?? null;
|
|
1142
1255
|
}
|
|
1143
|
-
|
|
1144
|
-
|
|
1145
|
-
|
|
1146
|
-
const
|
|
1147
|
-
|
|
1148
|
-
|
|
1256
|
+
|
|
1257
|
+
// src/hooks/use-sanitize-overridable-props.ts
|
|
1258
|
+
function useSanitizeOverridableProps(componentId) {
|
|
1259
|
+
const overridableProps = useOverridableProps(componentId);
|
|
1260
|
+
const isSanitized = useIsSanitizedComponent(componentId, "overridableProps");
|
|
1261
|
+
if (!overridableProps || !componentId) {
|
|
1262
|
+
return void 0;
|
|
1149
1263
|
}
|
|
1150
|
-
|
|
1151
|
-
|
|
1152
|
-
...componentInstance,
|
|
1153
|
-
overrides: componentInstanceOverridesPropTypeUtil.create(revertedOverrides)
|
|
1154
|
-
});
|
|
1155
|
-
(0, import_editor_elements2.updateElementSettings)({
|
|
1156
|
-
id: element.id,
|
|
1157
|
-
props: { component_instance: updatedSetting },
|
|
1158
|
-
withHistory: false
|
|
1159
|
-
});
|
|
1160
|
-
}
|
|
1161
|
-
function revertElementSettings(element) {
|
|
1162
|
-
const settings = element.settings?.toJSON() ?? {};
|
|
1163
|
-
const { hasChanges, settings: revertedSettings } = revertOverridablePropsFromSettings(settings);
|
|
1164
|
-
if (!hasChanges) {
|
|
1165
|
-
return;
|
|
1264
|
+
if (isSanitized) {
|
|
1265
|
+
return overridableProps;
|
|
1166
1266
|
}
|
|
1167
|
-
(
|
|
1168
|
-
|
|
1169
|
-
|
|
1170
|
-
|
|
1267
|
+
const filteredOverridableProps = filterValidOverridableProps(overridableProps);
|
|
1268
|
+
const originalPropsArray = Object.entries(overridableProps.props ?? {});
|
|
1269
|
+
const propsToDelete = originalPropsArray.filter(([key]) => !filteredOverridableProps.props[key]);
|
|
1270
|
+
propsToDelete.forEach(([key]) => {
|
|
1271
|
+
deleteOverridableProp({ componentId, propKey: key, source: "system" });
|
|
1171
1272
|
});
|
|
1273
|
+
updateComponentSanitizedAttribute(componentId, "overridableProps");
|
|
1274
|
+
return filteredOverridableProps;
|
|
1172
1275
|
}
|
|
1173
1276
|
|
|
1174
|
-
// src/
|
|
1175
|
-
|
|
1176
|
-
|
|
1277
|
+
// src/components/component-properties-panel/component-properties-panel.tsx
|
|
1278
|
+
var React8 = __toESM(require("react"));
|
|
1279
|
+
var import_editor_editing_panel = require("@elementor/editor-editing-panel");
|
|
1280
|
+
var import_editor_elements5 = require("@elementor/editor-elements");
|
|
1281
|
+
var import_editor_panels2 = require("@elementor/editor-panels");
|
|
1282
|
+
var import_editor_ui5 = require("@elementor/editor-ui");
|
|
1283
|
+
var import_ui8 = require("@elementor/ui");
|
|
1284
|
+
var import_i18n11 = require("@wordpress/i18n");
|
|
1285
|
+
|
|
1286
|
+
// src/components/component-properties-panel/component-properties-panel-content.tsx
|
|
1287
|
+
var React7 = __toESM(require("react"));
|
|
1288
|
+
var import_react5 = require("react");
|
|
1289
|
+
var import_editor_documents6 = require("@elementor/editor-documents");
|
|
1290
|
+
var import_editor_panels = require("@elementor/editor-panels");
|
|
1291
|
+
var import_icons5 = require("@elementor/icons");
|
|
1292
|
+
var import_ui7 = require("@elementor/ui");
|
|
1293
|
+
var import_utils2 = require("@elementor/utils");
|
|
1294
|
+
var import_i18n10 = require("@wordpress/i18n");
|
|
1295
|
+
|
|
1296
|
+
// src/store/actions/add-overridable-group.ts
|
|
1297
|
+
var import_store18 = require("@elementor/store");
|
|
1298
|
+
function addOverridableGroup({
|
|
1299
|
+
componentId,
|
|
1300
|
+
groupId,
|
|
1301
|
+
label,
|
|
1302
|
+
source
|
|
1303
|
+
}) {
|
|
1304
|
+
const currentComponent = selectCurrentComponent((0, import_store18.__getState)());
|
|
1305
|
+
const overridableProps = selectOverridableProps((0, import_store18.__getState)(), componentId);
|
|
1177
1306
|
if (!overridableProps) {
|
|
1178
1307
|
return;
|
|
1179
1308
|
}
|
|
1180
|
-
const
|
|
1181
|
-
|
|
1182
|
-
|
|
1183
|
-
|
|
1184
|
-
|
|
1185
|
-
|
|
1186
|
-
const updatedGroups = removePropFromAllGroups(overridableProps.groups, propKey);
|
|
1187
|
-
(0, import_store15.__dispatch)(
|
|
1309
|
+
const newGroup = {
|
|
1310
|
+
id: groupId,
|
|
1311
|
+
label,
|
|
1312
|
+
props: []
|
|
1313
|
+
};
|
|
1314
|
+
(0, import_store18.__dispatch)(
|
|
1188
1315
|
slice.actions.setOverridableProps({
|
|
1189
1316
|
componentId,
|
|
1190
1317
|
overridableProps: {
|
|
1191
1318
|
...overridableProps,
|
|
1192
|
-
|
|
1193
|
-
|
|
1319
|
+
groups: {
|
|
1320
|
+
...overridableProps.groups,
|
|
1321
|
+
items: {
|
|
1322
|
+
...overridableProps.groups.items,
|
|
1323
|
+
[groupId]: newGroup
|
|
1324
|
+
},
|
|
1325
|
+
order: [groupId, ...overridableProps.groups.order]
|
|
1326
|
+
}
|
|
1194
1327
|
}
|
|
1195
1328
|
})
|
|
1196
1329
|
);
|
|
1197
|
-
const currentComponent = selectCurrentComponent((0, import_store15.__getState)());
|
|
1198
1330
|
trackComponentEvent({
|
|
1199
|
-
action: "
|
|
1331
|
+
action: "propertiesGroupCreated",
|
|
1200
1332
|
source,
|
|
1201
1333
|
component_uid: currentComponent?.uid,
|
|
1202
|
-
|
|
1203
|
-
property_path: removedProp.propKey,
|
|
1204
|
-
property_name: removedProp.label,
|
|
1205
|
-
element_type: removedProp.widgetType ?? removedProp.elType
|
|
1334
|
+
group_name: label
|
|
1206
1335
|
});
|
|
1336
|
+
return newGroup;
|
|
1337
|
+
}
|
|
1338
|
+
|
|
1339
|
+
// src/store/actions/delete-overridable-group.ts
|
|
1340
|
+
var import_store20 = require("@elementor/store");
|
|
1341
|
+
function deleteOverridableGroup({ componentId, groupId }) {
|
|
1342
|
+
const overridableProps = selectOverridableProps((0, import_store20.__getState)(), componentId);
|
|
1343
|
+
if (!overridableProps) {
|
|
1344
|
+
return false;
|
|
1345
|
+
}
|
|
1346
|
+
const group = overridableProps.groups.items[groupId];
|
|
1347
|
+
if (!group || group.props.length > 0) {
|
|
1348
|
+
return false;
|
|
1349
|
+
}
|
|
1350
|
+
const updatedGroups = deleteGroup(overridableProps.groups, groupId);
|
|
1351
|
+
(0, import_store20.__dispatch)(
|
|
1352
|
+
slice.actions.setOverridableProps({
|
|
1353
|
+
componentId,
|
|
1354
|
+
overridableProps: {
|
|
1355
|
+
...overridableProps,
|
|
1356
|
+
groups: updatedGroups
|
|
1357
|
+
}
|
|
1358
|
+
})
|
|
1359
|
+
);
|
|
1360
|
+
return true;
|
|
1207
1361
|
}
|
|
1208
1362
|
|
|
1209
1363
|
// src/store/actions/reorder-group-props.ts
|
|
1210
|
-
var
|
|
1364
|
+
var import_store22 = require("@elementor/store");
|
|
1211
1365
|
function reorderGroupProps({ componentId, groupId, newPropsOrder }) {
|
|
1212
|
-
const overridableProps = selectOverridableProps((0,
|
|
1366
|
+
const overridableProps = selectOverridableProps((0, import_store22.__getState)(), componentId);
|
|
1213
1367
|
if (!overridableProps) {
|
|
1214
1368
|
return;
|
|
1215
1369
|
}
|
|
@@ -1217,7 +1371,7 @@ function reorderGroupProps({ componentId, groupId, newPropsOrder }) {
|
|
|
1217
1371
|
if (!group) {
|
|
1218
1372
|
return;
|
|
1219
1373
|
}
|
|
1220
|
-
(0,
|
|
1374
|
+
(0, import_store22.__dispatch)(
|
|
1221
1375
|
slice.actions.setOverridableProps({
|
|
1222
1376
|
componentId,
|
|
1223
1377
|
overridableProps: {
|
|
@@ -1238,13 +1392,13 @@ function reorderGroupProps({ componentId, groupId, newPropsOrder }) {
|
|
|
1238
1392
|
}
|
|
1239
1393
|
|
|
1240
1394
|
// src/store/actions/reorder-overridable-groups.ts
|
|
1241
|
-
var
|
|
1395
|
+
var import_store24 = require("@elementor/store");
|
|
1242
1396
|
function reorderOverridableGroups({ componentId, newOrder }) {
|
|
1243
|
-
const overridableProps = selectOverridableProps((0,
|
|
1397
|
+
const overridableProps = selectOverridableProps((0, import_store24.__getState)(), componentId);
|
|
1244
1398
|
if (!overridableProps) {
|
|
1245
1399
|
return;
|
|
1246
1400
|
}
|
|
1247
|
-
(0,
|
|
1401
|
+
(0, import_store24.__dispatch)(
|
|
1248
1402
|
slice.actions.setOverridableProps({
|
|
1249
1403
|
componentId,
|
|
1250
1404
|
overridableProps: {
|
|
@@ -1259,14 +1413,14 @@ function reorderOverridableGroups({ componentId, newOrder }) {
|
|
|
1259
1413
|
}
|
|
1260
1414
|
|
|
1261
1415
|
// src/store/actions/update-overridable-prop-params.ts
|
|
1262
|
-
var
|
|
1416
|
+
var import_store26 = require("@elementor/store");
|
|
1263
1417
|
function updateOverridablePropParams({
|
|
1264
1418
|
componentId,
|
|
1265
1419
|
overrideKey,
|
|
1266
1420
|
label,
|
|
1267
1421
|
groupId
|
|
1268
1422
|
}) {
|
|
1269
|
-
const overridableProps = selectOverridableProps((0,
|
|
1423
|
+
const overridableProps = selectOverridableProps((0, import_store26.__getState)(), componentId);
|
|
1270
1424
|
if (!overridableProps) {
|
|
1271
1425
|
return;
|
|
1272
1426
|
}
|
|
@@ -1282,7 +1436,7 @@ function updateOverridablePropParams({
|
|
|
1282
1436
|
groupId: newGroupId
|
|
1283
1437
|
};
|
|
1284
1438
|
const updatedGroups = movePropBetweenGroups(overridableProps.groups, overrideKey, oldGroupId, newGroupId);
|
|
1285
|
-
(0,
|
|
1439
|
+
(0, import_store26.__dispatch)(
|
|
1286
1440
|
slice.actions.setOverridableProps({
|
|
1287
1441
|
componentId,
|
|
1288
1442
|
overridableProps: {
|
|
@@ -1298,17 +1452,6 @@ function updateOverridablePropParams({
|
|
|
1298
1452
|
return updatedProp;
|
|
1299
1453
|
}
|
|
1300
1454
|
|
|
1301
|
-
// src/components/component-panel-header/use-overridable-props.ts
|
|
1302
|
-
var import_store23 = require("@elementor/store");
|
|
1303
|
-
function useOverridableProps2(componentId) {
|
|
1304
|
-
return (0, import_store23.__useSelector)((state) => {
|
|
1305
|
-
if (!componentId) {
|
|
1306
|
-
return void 0;
|
|
1307
|
-
}
|
|
1308
|
-
return selectOverridableProps(state, componentId);
|
|
1309
|
-
});
|
|
1310
|
-
}
|
|
1311
|
-
|
|
1312
1455
|
// src/components/component-properties-panel/properties-empty-state.tsx
|
|
1313
1456
|
var React2 = __toESM(require("react"));
|
|
1314
1457
|
var import_react2 = require("react");
|
|
@@ -1418,7 +1561,7 @@ var import_i18n7 = require("@wordpress/i18n");
|
|
|
1418
1561
|
|
|
1419
1562
|
// src/components/component-properties-panel/property-item.tsx
|
|
1420
1563
|
var React5 = __toESM(require("react"));
|
|
1421
|
-
var
|
|
1564
|
+
var import_editor_elements4 = require("@elementor/editor-elements");
|
|
1422
1565
|
var import_icons3 = require("@elementor/icons");
|
|
1423
1566
|
var import_ui5 = require("@elementor/ui");
|
|
1424
1567
|
|
|
@@ -1691,7 +1834,7 @@ function PropertyItem({
|
|
|
1691
1834
|
}
|
|
1692
1835
|
function getElementIcon(prop) {
|
|
1693
1836
|
const elType = prop.elType === "widget" ? prop.widgetType : prop.elType;
|
|
1694
|
-
const widgetsCache = (0,
|
|
1837
|
+
const widgetsCache = (0, import_editor_elements4.getWidgetsCache)();
|
|
1695
1838
|
if (!widgetsCache) {
|
|
1696
1839
|
return "eicon-apps";
|
|
1697
1840
|
}
|
|
@@ -1850,9 +1993,9 @@ var import_editor_ui4 = require("@elementor/editor-ui");
|
|
|
1850
1993
|
var import_i18n9 = require("@wordpress/i18n");
|
|
1851
1994
|
|
|
1852
1995
|
// src/store/actions/rename-overridable-group.ts
|
|
1853
|
-
var
|
|
1996
|
+
var import_store28 = require("@elementor/store");
|
|
1854
1997
|
function renameOverridableGroup({ componentId, groupId, label }) {
|
|
1855
|
-
const overridableProps = selectOverridableProps((0,
|
|
1998
|
+
const overridableProps = selectOverridableProps((0, import_store28.__getState)(), componentId);
|
|
1856
1999
|
if (!overridableProps) {
|
|
1857
2000
|
return false;
|
|
1858
2001
|
}
|
|
@@ -1861,7 +2004,7 @@ function renameOverridableGroup({ componentId, groupId, label }) {
|
|
|
1861
2004
|
return false;
|
|
1862
2005
|
}
|
|
1863
2006
|
const updatedGroups = renameGroup(overridableProps.groups, groupId, label);
|
|
1864
|
-
(0,
|
|
2007
|
+
(0, import_store28.__dispatch)(
|
|
1865
2008
|
slice.actions.setOverridableProps({
|
|
1866
2009
|
componentId,
|
|
1867
2010
|
overridableProps: {
|
|
@@ -1895,7 +2038,7 @@ function validateGroupLabel(label, existingGroups) {
|
|
|
1895
2038
|
function useCurrentEditableItem() {
|
|
1896
2039
|
const [editingGroupId, setEditingGroupId] = (0, import_react4.useState)(null);
|
|
1897
2040
|
const currentComponentId = useCurrentComponentId();
|
|
1898
|
-
const overridableProps =
|
|
2041
|
+
const overridableProps = useOverridableProps(currentComponentId);
|
|
1899
2042
|
const allGroupsRecord = overridableProps?.groups?.items ?? {};
|
|
1900
2043
|
const currentGroup = editingGroupId ? allGroupsRecord[editingGroupId] : null;
|
|
1901
2044
|
const validateLabel = (newLabel) => {
|
|
@@ -1958,7 +2101,7 @@ function generateUniqueLabel(groups) {
|
|
|
1958
2101
|
// src/components/component-properties-panel/component-properties-panel-content.tsx
|
|
1959
2102
|
function ComponentPropertiesPanelContent({ onClose }) {
|
|
1960
2103
|
const currentComponentId = useCurrentComponentId();
|
|
1961
|
-
const overridableProps =
|
|
2104
|
+
const overridableProps = useSanitizeOverridableProps(currentComponentId);
|
|
1962
2105
|
const [isAddingGroup, setIsAddingGroup] = (0, import_react5.useState)(false);
|
|
1963
2106
|
const introductionRef = (0, import_react5.useRef)(null);
|
|
1964
2107
|
const groupLabelEditable = useCurrentEditableItem();
|
|
@@ -2062,7 +2205,7 @@ var { panel, usePanelActions } = (0, import_editor_panels2.__createPanel)({
|
|
|
2062
2205
|
component: ComponentPropertiesPanel
|
|
2063
2206
|
});
|
|
2064
2207
|
function ComponentPropertiesPanel() {
|
|
2065
|
-
const { element, elementType } = (0,
|
|
2208
|
+
const { element, elementType } = (0, import_editor_elements5.useSelectedElement)();
|
|
2066
2209
|
const { close: closePanel } = usePanelActions();
|
|
2067
2210
|
const { open: openEditingPanel } = (0, import_editor_editing_panel.usePanelActions)();
|
|
2068
2211
|
if (!element || !elementType) {
|
|
@@ -2145,7 +2288,7 @@ var slideUp = import_ui9.keyframes`
|
|
|
2145
2288
|
var MESSAGE_KEY = "components-properties-introduction";
|
|
2146
2289
|
var ComponentPanelHeader = () => {
|
|
2147
2290
|
const { id: currentComponentId, uid: componentUid } = useCurrentComponent() ?? { id: null, uid: null };
|
|
2148
|
-
const overridableProps =
|
|
2291
|
+
const overridableProps = useSanitizeOverridableProps(currentComponentId);
|
|
2149
2292
|
const onBack = useNavigateBack();
|
|
2150
2293
|
const componentName = getComponentName();
|
|
2151
2294
|
const [isMessageSuppressed, suppressMessage] = (0, import_editor_current_user.useSuppressedMessage)(MESSAGE_KEY);
|
|
@@ -2194,7 +2337,7 @@ var ComponentPanelHeader = () => {
|
|
|
2194
2337
|
));
|
|
2195
2338
|
};
|
|
2196
2339
|
function getComponentName() {
|
|
2197
|
-
const state = (0,
|
|
2340
|
+
const state = (0, import_store32.__getState)();
|
|
2198
2341
|
const path = state[SLICE_NAME].path;
|
|
2199
2342
|
const { instanceTitle } = path.at(-1) ?? {};
|
|
2200
2343
|
if (instanceTitle) {
|
|
@@ -2210,10 +2353,10 @@ var React18 = __toESM(require("react"));
|
|
|
2210
2353
|
var import_editor_ui10 = require("@elementor/editor-ui");
|
|
2211
2354
|
|
|
2212
2355
|
// src/hooks/use-components.ts
|
|
2213
|
-
var
|
|
2356
|
+
var import_store34 = require("@elementor/store");
|
|
2214
2357
|
var useComponents = () => {
|
|
2215
|
-
const components = (0,
|
|
2216
|
-
const isLoading = (0,
|
|
2358
|
+
const components = (0, import_store34.__useSelector)(selectComponents);
|
|
2359
|
+
const isLoading = (0, import_store34.__useSelector)(selectLoadIsPending);
|
|
2217
2360
|
return { components, isLoading };
|
|
2218
2361
|
};
|
|
2219
2362
|
|
|
@@ -2296,11 +2439,11 @@ var useComponentsPermissions = () => {
|
|
|
2296
2439
|
|
|
2297
2440
|
// src/store/actions/rename-component.ts
|
|
2298
2441
|
var import_editor_documents8 = require("@elementor/editor-documents");
|
|
2299
|
-
var
|
|
2300
|
-
var
|
|
2442
|
+
var import_editor_elements6 = require("@elementor/editor-elements");
|
|
2443
|
+
var import_store36 = require("@elementor/store");
|
|
2301
2444
|
var TITLE_EXTERNAL_CHANGE_COMMAND = "title_external_change";
|
|
2302
2445
|
var renameComponent = (componentUid, newName) => {
|
|
2303
|
-
(0,
|
|
2446
|
+
(0, import_store36.__dispatch)(slice.actions.rename({ componentUid, name: newName }));
|
|
2304
2447
|
(0, import_editor_documents8.setDocumentModifiedStatus)(true);
|
|
2305
2448
|
refreshComponentInstanceTitles(componentUid);
|
|
2306
2449
|
};
|
|
@@ -2319,7 +2462,7 @@ function getDocumentContainer() {
|
|
|
2319
2462
|
return documentsManager?.getCurrent()?.container;
|
|
2320
2463
|
}
|
|
2321
2464
|
function findComponentInstancesByUid(documentContainer, componentUid) {
|
|
2322
|
-
const allDescendants = (0,
|
|
2465
|
+
const allDescendants = (0, import_editor_elements6.getAllDescendants)(documentContainer);
|
|
2323
2466
|
return allDescendants.filter((element) => {
|
|
2324
2467
|
const widgetType = element.model.get("widgetType");
|
|
2325
2468
|
const editorSettings = element.model.get("editor_settings");
|
|
@@ -2332,7 +2475,7 @@ function findComponentInstancesByUid(documentContainer, componentUid) {
|
|
|
2332
2475
|
var React14 = __toESM(require("react"));
|
|
2333
2476
|
var import_react8 = require("react");
|
|
2334
2477
|
var import_editor_canvas5 = require("@elementor/editor-canvas");
|
|
2335
|
-
var
|
|
2478
|
+
var import_editor_elements9 = require("@elementor/editor-elements");
|
|
2336
2479
|
var import_editor_ui8 = require("@elementor/editor-ui");
|
|
2337
2480
|
var import_icons9 = require("@elementor/icons");
|
|
2338
2481
|
var import_ui12 = require("@elementor/ui");
|
|
@@ -2341,7 +2484,7 @@ var import_i18n18 = require("@wordpress/i18n");
|
|
|
2341
2484
|
// src/store/actions/archive-component.ts
|
|
2342
2485
|
var import_editor_documents9 = require("@elementor/editor-documents");
|
|
2343
2486
|
var import_editor_notifications = require("@elementor/editor-notifications");
|
|
2344
|
-
var
|
|
2487
|
+
var import_store38 = require("@elementor/store");
|
|
2345
2488
|
var import_i18n15 = require("@wordpress/i18n");
|
|
2346
2489
|
var successNotification = (componentId, componentName) => ({
|
|
2347
2490
|
type: "success",
|
|
@@ -2350,7 +2493,7 @@ var successNotification = (componentId, componentName) => ({
|
|
|
2350
2493
|
id: `success-archived-components-notification-${componentId}`
|
|
2351
2494
|
});
|
|
2352
2495
|
var archiveComponent = (componentId, componentName) => {
|
|
2353
|
-
(0,
|
|
2496
|
+
(0, import_store38.__dispatch)(slice.actions.archive(componentId));
|
|
2354
2497
|
(0, import_editor_documents9.setDocumentModifiedStatus)(true);
|
|
2355
2498
|
(0, import_editor_notifications.notify)(successNotification(componentId, componentName));
|
|
2356
2499
|
};
|
|
@@ -2402,7 +2545,7 @@ async function getDocumentsMap(ids, cache) {
|
|
|
2402
2545
|
}
|
|
2403
2546
|
|
|
2404
2547
|
// src/store/actions/load-components-overridable-props.ts
|
|
2405
|
-
var
|
|
2548
|
+
var import_store40 = require("@elementor/store");
|
|
2406
2549
|
function loadComponentsOverridableProps(componentIds) {
|
|
2407
2550
|
if (!componentIds.length) {
|
|
2408
2551
|
return;
|
|
@@ -2410,7 +2553,7 @@ function loadComponentsOverridableProps(componentIds) {
|
|
|
2410
2553
|
return Promise.all(componentIds.map(loadComponentOverrides));
|
|
2411
2554
|
}
|
|
2412
2555
|
async function loadComponentOverrides(componentId) {
|
|
2413
|
-
const isOverridablePropsLoaded = selectIsOverridablePropsLoaded((0,
|
|
2556
|
+
const isOverridablePropsLoaded = selectIsOverridablePropsLoaded((0, import_store40.__getState)(), componentId);
|
|
2414
2557
|
if (isOverridablePropsLoaded) {
|
|
2415
2558
|
return;
|
|
2416
2559
|
}
|
|
@@ -2418,7 +2561,7 @@ async function loadComponentOverrides(componentId) {
|
|
|
2418
2561
|
if (!overridableProps) {
|
|
2419
2562
|
return;
|
|
2420
2563
|
}
|
|
2421
|
-
(0,
|
|
2564
|
+
(0, import_store40.__dispatch)(
|
|
2422
2565
|
slice.actions.setOverridableProps({
|
|
2423
2566
|
componentId,
|
|
2424
2567
|
overridableProps
|
|
@@ -2427,12 +2570,12 @@ async function loadComponentOverrides(componentId) {
|
|
|
2427
2570
|
}
|
|
2428
2571
|
|
|
2429
2572
|
// src/store/actions/load-components-styles.ts
|
|
2430
|
-
var
|
|
2573
|
+
var import_store42 = require("@elementor/store");
|
|
2431
2574
|
function loadComponentsStyles(documents) {
|
|
2432
2575
|
if (!documents.size) {
|
|
2433
2576
|
return;
|
|
2434
2577
|
}
|
|
2435
|
-
const knownComponents = selectStyles((0,
|
|
2578
|
+
const knownComponents = selectStyles((0, import_store42.__getState)());
|
|
2436
2579
|
const unknownDocuments = new Map([...documents.entries()].filter(([id2]) => !knownComponents[id2]));
|
|
2437
2580
|
if (!unknownDocuments.size) {
|
|
2438
2581
|
return;
|
|
@@ -2443,7 +2586,7 @@ function addStyles(documents) {
|
|
|
2443
2586
|
const styles = Object.fromEntries(
|
|
2444
2587
|
[...documents.entries()].map(([id2, document]) => [id2, extractStylesFromDocument(document)])
|
|
2445
2588
|
);
|
|
2446
|
-
(0,
|
|
2589
|
+
(0, import_store42.__dispatch)(slice.actions.addStyles(styles));
|
|
2447
2590
|
}
|
|
2448
2591
|
function extractStylesFromDocument(document) {
|
|
2449
2592
|
if (!document.elements?.length) {
|
|
@@ -2473,7 +2616,7 @@ function updateDocumentState(documents) {
|
|
|
2473
2616
|
}
|
|
2474
2617
|
|
|
2475
2618
|
// src/utils/component-name-validation.ts
|
|
2476
|
-
var
|
|
2619
|
+
var import_store44 = require("@elementor/store");
|
|
2477
2620
|
|
|
2478
2621
|
// src/components/create-component-form/utils/component-form-schema.ts
|
|
2479
2622
|
var import_schema5 = require("@elementor/schema");
|
|
@@ -2501,7 +2644,7 @@ var createSubmitComponentSchema = (existingNames) => {
|
|
|
2501
2644
|
|
|
2502
2645
|
// src/utils/component-name-validation.ts
|
|
2503
2646
|
function validateComponentName(label) {
|
|
2504
|
-
const existingComponentTitles = selectComponents((0,
|
|
2647
|
+
const existingComponentTitles = selectComponents((0, import_store44.__getState)())?.map(({ name }) => name) ?? [];
|
|
2505
2648
|
const schema = createSubmitComponentSchema(existingComponentTitles);
|
|
2506
2649
|
const result = schema.safeParse({ componentName: label.toLowerCase() });
|
|
2507
2650
|
if (result.success) {
|
|
@@ -2519,9 +2662,9 @@ function validateComponentName(label) {
|
|
|
2519
2662
|
}
|
|
2520
2663
|
|
|
2521
2664
|
// src/utils/get-container-for-new-element.ts
|
|
2522
|
-
var
|
|
2665
|
+
var import_editor_elements7 = require("@elementor/editor-elements");
|
|
2523
2666
|
var getContainerForNewElement = () => {
|
|
2524
|
-
const currentDocumentContainer = (0,
|
|
2667
|
+
const currentDocumentContainer = (0, import_editor_elements7.getCurrentDocumentContainer)();
|
|
2525
2668
|
const selectedElement = getSelectedElementContainer();
|
|
2526
2669
|
let container, options;
|
|
2527
2670
|
if (selectedElement) {
|
|
@@ -2547,17 +2690,17 @@ var getContainerForNewElement = () => {
|
|
|
2547
2690
|
return { container: container ?? currentDocumentContainer, options };
|
|
2548
2691
|
};
|
|
2549
2692
|
function getSelectedElementContainer() {
|
|
2550
|
-
const selectedElements = (0,
|
|
2693
|
+
const selectedElements = (0, import_editor_elements7.getSelectedElements)();
|
|
2551
2694
|
if (selectedElements.length !== 1) {
|
|
2552
2695
|
return void 0;
|
|
2553
2696
|
}
|
|
2554
|
-
return (0,
|
|
2697
|
+
return (0, import_editor_elements7.getContainer)(selectedElements[0].id);
|
|
2555
2698
|
}
|
|
2556
2699
|
|
|
2557
2700
|
// src/components/create-component-form/utils/replace-element-with-component.ts
|
|
2558
|
-
var
|
|
2701
|
+
var import_editor_elements8 = require("@elementor/editor-elements");
|
|
2559
2702
|
var replaceElementWithComponent = async (element, component) => {
|
|
2560
|
-
return await (0,
|
|
2703
|
+
return await (0, import_editor_elements8.replaceElement)({
|
|
2561
2704
|
currentElement: element,
|
|
2562
2705
|
newElement: createComponentModel2(component),
|
|
2563
2706
|
withHistory: false
|
|
@@ -2746,7 +2889,7 @@ var addComponentToPage = (model) => {
|
|
|
2746
2889
|
throw new Error(`Can't find container to drop new component instance at`);
|
|
2747
2890
|
}
|
|
2748
2891
|
loadComponentsAssets([model]);
|
|
2749
|
-
(0,
|
|
2892
|
+
(0, import_editor_elements9.dropElement)({
|
|
2750
2893
|
containerId: container.id,
|
|
2751
2894
|
model,
|
|
2752
2895
|
options: { ...options, useHistory: false, scrollIntoView: true }
|
|
@@ -2984,25 +3127,25 @@ var OVERRIDABLE_PROP_REPLACEMENT_ID = "overridable-prop";
|
|
|
2984
3127
|
// src/components/create-component-form/create-component-form.tsx
|
|
2985
3128
|
var React19 = __toESM(require("react"));
|
|
2986
3129
|
var import_react10 = require("react");
|
|
2987
|
-
var
|
|
3130
|
+
var import_editor_elements12 = require("@elementor/editor-elements");
|
|
2988
3131
|
var import_editor_notifications3 = require("@elementor/editor-notifications");
|
|
2989
3132
|
var import_editor_ui11 = require("@elementor/editor-ui");
|
|
2990
3133
|
var import_icons11 = require("@elementor/icons");
|
|
2991
|
-
var
|
|
3134
|
+
var import_store50 = require("@elementor/store");
|
|
2992
3135
|
var import_ui16 = require("@elementor/ui");
|
|
2993
3136
|
var import_i18n23 = require("@wordpress/i18n");
|
|
2994
3137
|
|
|
2995
3138
|
// src/prevent-non-atomic-nesting.ts
|
|
2996
3139
|
var import_editor_canvas6 = require("@elementor/editor-canvas");
|
|
2997
|
-
var
|
|
3140
|
+
var import_editor_elements10 = require("@elementor/editor-elements");
|
|
2998
3141
|
var import_editor_notifications2 = require("@elementor/editor-notifications");
|
|
2999
3142
|
var import_editor_v1_adapters3 = require("@elementor/editor-v1-adapters");
|
|
3000
3143
|
var import_i18n21 = require("@wordpress/i18n");
|
|
3001
3144
|
|
|
3002
3145
|
// src/utils/is-editing-component.ts
|
|
3003
|
-
var
|
|
3146
|
+
var import_store46 = require("@elementor/store");
|
|
3004
3147
|
function isEditingComponent() {
|
|
3005
|
-
const state = (0,
|
|
3148
|
+
const state = (0, import_store46.__getStore)()?.getState();
|
|
3006
3149
|
if (!state) {
|
|
3007
3150
|
return false;
|
|
3008
3151
|
}
|
|
@@ -3030,7 +3173,7 @@ function initNonAtomicNestingPrevention() {
|
|
|
3030
3173
|
});
|
|
3031
3174
|
}
|
|
3032
3175
|
function isElementAtomic(elementType) {
|
|
3033
|
-
return (0,
|
|
3176
|
+
return (0, import_editor_elements10.getElementType)(elementType) !== null;
|
|
3034
3177
|
}
|
|
3035
3178
|
function blockNonAtomicCreate(args) {
|
|
3036
3179
|
if (!isEditingComponent()) {
|
|
@@ -3056,7 +3199,7 @@ function blockNonAtomicMove(args) {
|
|
|
3056
3199
|
if (!container) {
|
|
3057
3200
|
return false;
|
|
3058
3201
|
}
|
|
3059
|
-
const allElements = (0,
|
|
3202
|
+
const allElements = (0, import_editor_elements10.getAllDescendants)(container);
|
|
3060
3203
|
return allElements.some((element) => !(0, import_editor_canvas6.isAtomicWidget)(element));
|
|
3061
3204
|
});
|
|
3062
3205
|
if (hasNonAtomicElement) {
|
|
@@ -3111,9 +3254,9 @@ function findNonAtomicElementsInElement(element) {
|
|
|
3111
3254
|
}
|
|
3112
3255
|
|
|
3113
3256
|
// src/store/actions/create-unpublished-component.ts
|
|
3114
|
-
var
|
|
3257
|
+
var import_editor_elements11 = require("@elementor/editor-elements");
|
|
3115
3258
|
var import_editor_v1_adapters4 = require("@elementor/editor-v1-adapters");
|
|
3116
|
-
var
|
|
3259
|
+
var import_store48 = require("@elementor/store");
|
|
3117
3260
|
var import_utils4 = require("@elementor/utils");
|
|
3118
3261
|
var import_i18n22 = require("@wordpress/i18n");
|
|
3119
3262
|
async function createUnpublishedComponent({
|
|
@@ -3127,21 +3270,21 @@ async function createUnpublishedComponent({
|
|
|
3127
3270
|
const generatedUid = uid ?? (0, import_utils4.generateUniqueId)("component");
|
|
3128
3271
|
const componentBase = { uid: generatedUid, name };
|
|
3129
3272
|
const elementDataWithOverridablesReverted = revertAllOverridablesInElementData(element);
|
|
3130
|
-
const container = (0,
|
|
3273
|
+
const container = (0, import_editor_elements11.getContainer)(element.id);
|
|
3131
3274
|
const modelFromContainer = container?.model?.toJSON?.();
|
|
3132
3275
|
const originalElement = {
|
|
3133
3276
|
model: modelFromContainer ?? element,
|
|
3134
3277
|
parentId: container?.parent?.id ?? "",
|
|
3135
3278
|
index: container?.view?._index ?? 0
|
|
3136
3279
|
};
|
|
3137
|
-
(0,
|
|
3280
|
+
(0, import_store48.__dispatch)(
|
|
3138
3281
|
slice.actions.addUnpublished({
|
|
3139
3282
|
...componentBase,
|
|
3140
3283
|
elements: [elementDataWithOverridablesReverted],
|
|
3141
3284
|
overridableProps
|
|
3142
3285
|
})
|
|
3143
3286
|
);
|
|
3144
|
-
(0,
|
|
3287
|
+
(0, import_store48.__dispatch)(slice.actions.addCreatedThisSession(generatedUid));
|
|
3145
3288
|
const componentInstance = await replaceElementWithComponent(element, componentBase);
|
|
3146
3289
|
trackComponentEvent({
|
|
3147
3290
|
action: "created",
|
|
@@ -3154,20 +3297,27 @@ async function createUnpublishedComponent({
|
|
|
3154
3297
|
await (0, import_editor_v1_adapters4.__privateRunCommand)("document/save/auto");
|
|
3155
3298
|
} catch (error) {
|
|
3156
3299
|
restoreOriginalElement(originalElement, componentInstance.id);
|
|
3157
|
-
(0,
|
|
3158
|
-
(0,
|
|
3300
|
+
(0, import_store48.__dispatch)(slice.actions.removeUnpublished(generatedUid));
|
|
3301
|
+
(0, import_store48.__dispatch)(slice.actions.removeCreatedThisSession(generatedUid));
|
|
3159
3302
|
throw error;
|
|
3160
3303
|
}
|
|
3161
3304
|
return { uid: generatedUid, instanceId: componentInstance.id };
|
|
3162
3305
|
}
|
|
3163
3306
|
function restoreOriginalElement(originalElement, componentInstanceId) {
|
|
3164
|
-
(0,
|
|
3307
|
+
const componentContainer = (0, import_editor_elements11.getContainer)(componentInstanceId);
|
|
3308
|
+
if (componentContainer) {
|
|
3309
|
+
(0, import_editor_elements11.deleteElement)({ container: componentContainer, options: { useHistory: false } });
|
|
3310
|
+
}
|
|
3311
|
+
const parentContainer = (0, import_editor_elements11.getContainer)(originalElement.parentId);
|
|
3312
|
+
if (!parentContainer) {
|
|
3313
|
+
return;
|
|
3314
|
+
}
|
|
3165
3315
|
const clonedModel = structuredClone(originalElement.model);
|
|
3166
|
-
(0,
|
|
3316
|
+
(0, import_editor_elements11.createElements)({
|
|
3167
3317
|
title: (0, import_i18n22.__)("Restore Element", "elementor"),
|
|
3168
3318
|
elements: [
|
|
3169
3319
|
{
|
|
3170
|
-
|
|
3320
|
+
container: parentContainer,
|
|
3171
3321
|
model: clonedModel,
|
|
3172
3322
|
options: { at: originalElement.index }
|
|
3173
3323
|
}
|
|
@@ -3268,7 +3418,7 @@ function CreateComponentForm() {
|
|
|
3268
3418
|
(0, import_editor_notifications3.notify)(notification);
|
|
3269
3419
|
return;
|
|
3270
3420
|
}
|
|
3271
|
-
setElement({ element: event.detail.element, elementLabel: (0,
|
|
3421
|
+
setElement({ element: event.detail.element, elementLabel: (0, import_editor_elements12.getElementLabel)(event.detail.element.id) });
|
|
3272
3422
|
setAnchorPosition(event.detail.anchorPosition);
|
|
3273
3423
|
eventData.current = getComponentEventData(event.detail.element, event.detail.options);
|
|
3274
3424
|
trackComponentEvent({
|
|
@@ -3293,7 +3443,7 @@ function CreateComponentForm() {
|
|
|
3293
3443
|
eventData: eventData.current,
|
|
3294
3444
|
source: "user"
|
|
3295
3445
|
});
|
|
3296
|
-
const publishedComponentId = selectComponentByUid((0,
|
|
3446
|
+
const publishedComponentId = selectComponentByUid((0, import_store50.__getState)(), uid)?.id;
|
|
3297
3447
|
if (publishedComponentId) {
|
|
3298
3448
|
switchToComponent(publishedComponentId, instanceId);
|
|
3299
3449
|
} else {
|
|
@@ -3441,22 +3591,28 @@ var React21 = __toESM(require("react"));
|
|
|
3441
3591
|
var import_react13 = require("react");
|
|
3442
3592
|
var import_editor_documents12 = require("@elementor/editor-documents");
|
|
3443
3593
|
var import_editor_v1_adapters6 = require("@elementor/editor-v1-adapters");
|
|
3444
|
-
var
|
|
3594
|
+
var import_store56 = require("@elementor/store");
|
|
3445
3595
|
var import_utils6 = require("@elementor/utils");
|
|
3446
3596
|
|
|
3597
|
+
// src/store/actions/reset-sanitized-components.ts
|
|
3598
|
+
var import_store52 = require("@elementor/store");
|
|
3599
|
+
function resetSanitizedComponents() {
|
|
3600
|
+
(0, import_store52.__dispatch)(slice.actions.resetSanitizedComponents());
|
|
3601
|
+
}
|
|
3602
|
+
|
|
3447
3603
|
// src/store/actions/update-current-component.ts
|
|
3448
3604
|
var import_editor_documents11 = require("@elementor/editor-documents");
|
|
3449
|
-
var
|
|
3605
|
+
var import_store54 = require("@elementor/store");
|
|
3450
3606
|
function updateCurrentComponent({
|
|
3451
3607
|
path,
|
|
3452
3608
|
currentComponentId
|
|
3453
3609
|
}) {
|
|
3454
|
-
const
|
|
3455
|
-
if (!
|
|
3610
|
+
const dispatch22 = (0, import_store54.__getStore)()?.dispatch;
|
|
3611
|
+
if (!dispatch22) {
|
|
3456
3612
|
return;
|
|
3457
3613
|
}
|
|
3458
|
-
|
|
3459
|
-
|
|
3614
|
+
dispatch22(slice.actions.setPath(path));
|
|
3615
|
+
dispatch22(slice.actions.setCurrentComponentId(currentComponentId));
|
|
3460
3616
|
}
|
|
3461
3617
|
|
|
3462
3618
|
// src/components/edit-component/component-modal.tsx
|
|
@@ -3647,7 +3803,7 @@ function EditComponent() {
|
|
|
3647
3803
|
function useHandleDocumentSwitches() {
|
|
3648
3804
|
const documentsManager = (0, import_editor_documents12.getV1DocumentsManager)();
|
|
3649
3805
|
const currentComponentId = useCurrentComponentId();
|
|
3650
|
-
const path = (0,
|
|
3806
|
+
const path = (0, import_store56.__useSelector)(selectPath);
|
|
3651
3807
|
(0, import_react13.useEffect)(() => {
|
|
3652
3808
|
return (0, import_editor_v1_adapters6.__privateListenTo)((0, import_editor_v1_adapters6.commandEndEvent)("editor/documents/open"), () => {
|
|
3653
3809
|
const nextDocument = documentsManager.getCurrent();
|
|
@@ -3657,6 +3813,7 @@ function useHandleDocumentSwitches() {
|
|
|
3657
3813
|
if (currentComponentId) {
|
|
3658
3814
|
apiClient.unlockComponent(currentComponentId);
|
|
3659
3815
|
}
|
|
3816
|
+
resetSanitizedComponents();
|
|
3660
3817
|
const isComponent2 = nextDocument.config.type === COMPONENT_DOCUMENT_TYPE;
|
|
3661
3818
|
if (!isComponent2) {
|
|
3662
3819
|
updateCurrentComponent({ path: [], currentComponentId: null });
|
|
@@ -3752,10 +3909,10 @@ var EditModeDialog = ({ lockedBy }) => {
|
|
|
3752
3909
|
};
|
|
3753
3910
|
|
|
3754
3911
|
// src/components/instance-editing-panel/instance-editing-panel.tsx
|
|
3755
|
-
var
|
|
3912
|
+
var React29 = __toESM(require("react"));
|
|
3756
3913
|
var import_editor_controls4 = require("@elementor/editor-controls");
|
|
3757
3914
|
var import_editor_editing_panel5 = require("@elementor/editor-editing-panel");
|
|
3758
|
-
var
|
|
3915
|
+
var import_editor_elements17 = require("@elementor/editor-elements");
|
|
3759
3916
|
var import_editor_panels4 = require("@elementor/editor-panels");
|
|
3760
3917
|
var import_editor_ui14 = require("@elementor/editor-ui");
|
|
3761
3918
|
var import_icons14 = require("@elementor/icons");
|
|
@@ -3764,15 +3921,26 @@ var import_i18n27 = require("@wordpress/i18n");
|
|
|
3764
3921
|
|
|
3765
3922
|
// src/hooks/use-component-instance-settings.ts
|
|
3766
3923
|
var import_editor_editing_panel2 = require("@elementor/editor-editing-panel");
|
|
3767
|
-
var
|
|
3924
|
+
var import_editor_elements13 = require("@elementor/editor-elements");
|
|
3768
3925
|
function useComponentInstanceSettings() {
|
|
3769
3926
|
const { element } = (0, import_editor_editing_panel2.useElement)();
|
|
3770
|
-
const settings = (0,
|
|
3927
|
+
const settings = (0, import_editor_elements13.useElementSetting)(element.id, "component_instance");
|
|
3771
3928
|
return componentInstancePropTypeUtil.extract(settings);
|
|
3772
3929
|
}
|
|
3773
3930
|
|
|
3774
|
-
// src/
|
|
3931
|
+
// src/provider/component-instance-context.tsx
|
|
3775
3932
|
var React23 = __toESM(require("react"));
|
|
3933
|
+
var import_react14 = require("react");
|
|
3934
|
+
var ComponentInstanceContext = (0, import_react14.createContext)(null);
|
|
3935
|
+
function ComponentInstanceProvider({ children, ...props }) {
|
|
3936
|
+
return /* @__PURE__ */ React23.createElement(ComponentInstanceContext.Provider, { value: props }, children);
|
|
3937
|
+
}
|
|
3938
|
+
var useComponentId = () => (0, import_react14.useContext)(ComponentInstanceContext)?.componentId;
|
|
3939
|
+
var useComponentInstanceOverrides = () => (0, import_react14.useContext)(ComponentInstanceContext)?.overrides;
|
|
3940
|
+
var useComponentOverridableProps = () => (0, import_react14.useContext)(ComponentInstanceContext)?.overridableProps;
|
|
3941
|
+
|
|
3942
|
+
// src/components/instance-editing-panel/empty-state.tsx
|
|
3943
|
+
var React24 = __toESM(require("react"));
|
|
3776
3944
|
var import_icons13 = require("@elementor/icons");
|
|
3777
3945
|
var import_ui18 = require("@elementor/ui");
|
|
3778
3946
|
var import_i18n26 = require("@wordpress/i18n");
|
|
@@ -3785,7 +3953,7 @@ var EmptyState2 = ({ onEditComponent }) => {
|
|
|
3785
3953
|
"With your current role, you cannot edit this component. Contact an administrator to add properties.",
|
|
3786
3954
|
"elementor"
|
|
3787
3955
|
);
|
|
3788
|
-
return /* @__PURE__ */
|
|
3956
|
+
return /* @__PURE__ */ React24.createElement(
|
|
3789
3957
|
import_ui18.Stack,
|
|
3790
3958
|
{
|
|
3791
3959
|
alignItems: "center",
|
|
@@ -3795,31 +3963,31 @@ var EmptyState2 = ({ onEditComponent }) => {
|
|
|
3795
3963
|
sx: { p: 2.5, pt: 8, pb: 5.5, mt: 1 },
|
|
3796
3964
|
gap: 1.5
|
|
3797
3965
|
},
|
|
3798
|
-
/* @__PURE__ */
|
|
3799
|
-
/* @__PURE__ */
|
|
3800
|
-
/* @__PURE__ */
|
|
3801
|
-
canEdit && /* @__PURE__ */
|
|
3966
|
+
/* @__PURE__ */ React24.createElement(import_icons13.ComponentPropListIcon, { fontSize: "large" }),
|
|
3967
|
+
/* @__PURE__ */ React24.createElement(import_ui18.Typography, { align: "center", variant: "subtitle2" }, (0, import_i18n26.__)("No properties yet", "elementor")),
|
|
3968
|
+
/* @__PURE__ */ React24.createElement(import_ui18.Typography, { align: "center", variant: "caption", maxWidth: "170px" }, message),
|
|
3969
|
+
canEdit && /* @__PURE__ */ React24.createElement(import_ui18.Button, { variant: "outlined", color: "secondary", size: "small", sx: { mt: 1 }, onClick: onEditComponent }, /* @__PURE__ */ React24.createElement(import_icons13.PencilIcon, { fontSize: "small" }), (0, import_i18n26.__)("Edit component", "elementor"))
|
|
3802
3970
|
);
|
|
3803
3971
|
};
|
|
3804
3972
|
|
|
3805
3973
|
// src/components/instance-editing-panel/override-props-group.tsx
|
|
3806
|
-
var
|
|
3807
|
-
var
|
|
3974
|
+
var React28 = __toESM(require("react"));
|
|
3975
|
+
var import_react16 = require("react");
|
|
3808
3976
|
var import_editor_editing_panel4 = require("@elementor/editor-editing-panel");
|
|
3809
3977
|
var import_editor_ui13 = require("@elementor/editor-ui");
|
|
3810
3978
|
var import_ui21 = require("@elementor/ui");
|
|
3811
3979
|
|
|
3812
3980
|
// src/components/instance-editing-panel/override-prop-control.tsx
|
|
3813
|
-
var
|
|
3981
|
+
var React27 = __toESM(require("react"));
|
|
3814
3982
|
var import_editor_controls3 = require("@elementor/editor-controls");
|
|
3815
3983
|
var import_editor_editing_panel3 = require("@elementor/editor-editing-panel");
|
|
3816
|
-
var
|
|
3984
|
+
var import_editor_elements16 = require("@elementor/editor-elements");
|
|
3817
3985
|
var import_ui20 = require("@elementor/ui");
|
|
3818
3986
|
|
|
3819
3987
|
// src/hooks/use-controls-by-widget-type.ts
|
|
3820
|
-
var
|
|
3988
|
+
var import_editor_elements14 = require("@elementor/editor-elements");
|
|
3821
3989
|
function useControlsByWidgetType(type) {
|
|
3822
|
-
const elementType = (0,
|
|
3990
|
+
const elementType = (0, import_editor_elements14.getElementType)(type);
|
|
3823
3991
|
if (!elementType) {
|
|
3824
3992
|
return {};
|
|
3825
3993
|
}
|
|
@@ -3848,17 +4016,17 @@ function getControlsByBind(controls) {
|
|
|
3848
4016
|
}
|
|
3849
4017
|
|
|
3850
4018
|
// src/provider/overridable-prop-context.tsx
|
|
3851
|
-
var
|
|
3852
|
-
var
|
|
3853
|
-
var OverridablePropContext = (0,
|
|
4019
|
+
var React25 = __toESM(require("react"));
|
|
4020
|
+
var import_react15 = require("react");
|
|
4021
|
+
var OverridablePropContext = (0, import_react15.createContext)(null);
|
|
3854
4022
|
function OverridablePropProvider({ children, ...props }) {
|
|
3855
|
-
return /* @__PURE__ */
|
|
4023
|
+
return /* @__PURE__ */ React25.createElement(OverridablePropContext.Provider, { value: props }, children);
|
|
3856
4024
|
}
|
|
3857
|
-
var useOverridablePropValue = () => (0,
|
|
3858
|
-
var useComponentInstanceElement = () => (0,
|
|
4025
|
+
var useOverridablePropValue = () => (0, import_react15.useContext)(OverridablePropContext)?.value;
|
|
4026
|
+
var useComponentInstanceElement = () => (0, import_react15.useContext)(OverridablePropContext)?.componentInstanceElement;
|
|
3859
4027
|
|
|
3860
4028
|
// src/store/actions/update-overridable-prop.ts
|
|
3861
|
-
var
|
|
4029
|
+
var import_store58 = require("@elementor/store");
|
|
3862
4030
|
|
|
3863
4031
|
// src/utils/resolve-override-prop-value.ts
|
|
3864
4032
|
var resolveOverridePropValue = (originalPropValue) => {
|
|
@@ -3893,7 +4061,7 @@ function getOverrideValue(overrideProp) {
|
|
|
3893
4061
|
|
|
3894
4062
|
// src/store/actions/update-overridable-prop.ts
|
|
3895
4063
|
function updateOverridableProp(componentId, propValue, originPropFields) {
|
|
3896
|
-
const overridableProps = selectOverridableProps((0,
|
|
4064
|
+
const overridableProps = selectOverridableProps((0, import_store58.__getState)(), componentId);
|
|
3897
4065
|
if (!overridableProps) {
|
|
3898
4066
|
return;
|
|
3899
4067
|
}
|
|
@@ -3918,7 +4086,7 @@ function updateOverridableProp(componentId, propValue, originPropFields) {
|
|
|
3918
4086
|
}
|
|
3919
4087
|
}
|
|
3920
4088
|
};
|
|
3921
|
-
(0,
|
|
4089
|
+
(0, import_store58.__dispatch)(
|
|
3922
4090
|
slice.actions.setOverridableProps({
|
|
3923
4091
|
componentId,
|
|
3924
4092
|
overridableProps: newOverridableProps
|
|
@@ -3927,7 +4095,7 @@ function updateOverridableProp(componentId, propValue, originPropFields) {
|
|
|
3927
4095
|
}
|
|
3928
4096
|
|
|
3929
4097
|
// src/utils/get-prop-type-for-component-override.ts
|
|
3930
|
-
var
|
|
4098
|
+
var import_editor_elements15 = require("@elementor/editor-elements");
|
|
3931
4099
|
var getPropTypeForComponentOverride = (overridableProp) => {
|
|
3932
4100
|
if (overridableProp.originPropFields) {
|
|
3933
4101
|
return getPropType(overridableProp.originPropFields);
|
|
@@ -3939,16 +4107,16 @@ var getPropTypeForComponentOverride = (overridableProp) => {
|
|
|
3939
4107
|
});
|
|
3940
4108
|
};
|
|
3941
4109
|
function getPropType({ widgetType, propKey }) {
|
|
3942
|
-
const widgetPropsSchema = (0,
|
|
4110
|
+
const widgetPropsSchema = (0, import_editor_elements15.getWidgetsCache)()?.[widgetType]?.atomic_props_schema;
|
|
3943
4111
|
return widgetPropsSchema?.[propKey];
|
|
3944
4112
|
}
|
|
3945
4113
|
|
|
3946
4114
|
// src/components/control-label.tsx
|
|
3947
|
-
var
|
|
4115
|
+
var React26 = __toESM(require("react"));
|
|
3948
4116
|
var import_editor_controls2 = require("@elementor/editor-controls");
|
|
3949
4117
|
var import_ui19 = require("@elementor/ui");
|
|
3950
4118
|
var ControlLabel = ({ children, ...props }) => {
|
|
3951
|
-
return /* @__PURE__ */
|
|
4119
|
+
return /* @__PURE__ */ React26.createElement(import_ui19.Stack, { direction: "row", alignItems: "center", justifyItems: "start", gap: 0.25 }, /* @__PURE__ */ React26.createElement(import_editor_controls2.ControlFormLabel, { ...props }, children), /* @__PURE__ */ React26.createElement(import_editor_controls2.ControlAdornments, null));
|
|
3952
4120
|
};
|
|
3953
4121
|
|
|
3954
4122
|
// src/components/errors.ts
|
|
@@ -3959,9 +4127,9 @@ var OverrideControlInnerElementNotFoundError = (0, import_utils7.createError)({
|
|
|
3959
4127
|
});
|
|
3960
4128
|
|
|
3961
4129
|
// src/components/instance-editing-panel/use-resolved-origin-value.tsx
|
|
3962
|
-
var
|
|
4130
|
+
var import_store60 = require("@elementor/store");
|
|
3963
4131
|
function useResolvedOriginValue(override, overridableProp) {
|
|
3964
|
-
const components = (0,
|
|
4132
|
+
const components = (0, import_store60.__useSelector)(selectData);
|
|
3965
4133
|
return resolveOriginValue(components, override, overridableProp);
|
|
3966
4134
|
}
|
|
3967
4135
|
function resolveOriginValue(components, matchingOverride, overridableProp) {
|
|
@@ -3982,17 +4150,12 @@ function resolveOriginValue(components, matchingOverride, overridableProp) {
|
|
|
3982
4150
|
return null;
|
|
3983
4151
|
}
|
|
3984
4152
|
function getOriginFromOverride(components, override) {
|
|
3985
|
-
const
|
|
3986
|
-
|
|
3987
|
-
if (!innerOverride) {
|
|
3988
|
-
return null;
|
|
3989
|
-
}
|
|
3990
|
-
const { schema_source: schemaSource, override_key: overrideKey, override_value: overrideValue } = innerOverride;
|
|
3991
|
-
const componentId = schemaSource?.id;
|
|
3992
|
-
if (!componentId || !overrideKey) {
|
|
4153
|
+
const innerOverrideInfo = extractInnerOverrideInfo(override);
|
|
4154
|
+
if (!innerOverrideInfo) {
|
|
3993
4155
|
return null;
|
|
3994
4156
|
}
|
|
3995
|
-
const
|
|
4157
|
+
const { componentId, innerOverrideKey, overrideValue } = innerOverrideInfo;
|
|
4158
|
+
const prop = getOverridableProp({ componentId, overrideKey: innerOverrideKey });
|
|
3996
4159
|
if (hasValue(prop?.originValue)) {
|
|
3997
4160
|
return prop.originValue;
|
|
3998
4161
|
}
|
|
@@ -4039,39 +4202,52 @@ function findOriginValueByElementId(components, targetElementId, targetPropKey,
|
|
|
4039
4202
|
function hasValue(value) {
|
|
4040
4203
|
return value !== null && value !== void 0;
|
|
4041
4204
|
}
|
|
4042
|
-
function getOverridableProp(components, componentId, overrideKey) {
|
|
4043
|
-
const component = components.find(({ id: id2 }) => id2 === componentId);
|
|
4044
|
-
return component?.overridableProps?.props?.[overrideKey];
|
|
4045
|
-
}
|
|
4046
4205
|
|
|
4047
4206
|
// src/components/instance-editing-panel/override-prop-control.tsx
|
|
4048
|
-
function OverridePropControl({
|
|
4049
|
-
|
|
4207
|
+
function OverridePropControl({ overrideKey }) {
|
|
4208
|
+
const overridableProps = useComponentOverridableProps();
|
|
4209
|
+
const overridableProp = overridableProps?.props[overrideKey];
|
|
4210
|
+
if (!overridableProp) {
|
|
4211
|
+
return null;
|
|
4212
|
+
}
|
|
4213
|
+
return /* @__PURE__ */ React27.createElement(import_editor_editing_panel3.SettingsField, { bind: "component_instance", propDisplayName: overridableProp.label }, /* @__PURE__ */ React27.createElement(OverrideControl, { overridableProp }));
|
|
4050
4214
|
}
|
|
4051
|
-
function OverrideControl({ overridableProp
|
|
4215
|
+
function OverrideControl({ overridableProp }) {
|
|
4052
4216
|
const componentInstanceElement = (0, import_editor_editing_panel3.useElement)();
|
|
4053
|
-
const componentId = useCurrentComponentId();
|
|
4054
4217
|
const { value: instanceValue, setValue: setInstanceValue } = (0, import_editor_controls3.useBoundProp)(componentInstancePropTypeUtil);
|
|
4218
|
+
const wrappingComponentId = useCurrentComponentId();
|
|
4219
|
+
const componentId = useComponentId();
|
|
4220
|
+
const overridableProps = useComponentOverridableProps();
|
|
4221
|
+
const overrides = useComponentInstanceOverrides();
|
|
4055
4222
|
const controls = useControlsByWidgetType(
|
|
4056
4223
|
overridableProp?.originPropFields?.widgetType ?? overridableProp.widgetType
|
|
4057
4224
|
);
|
|
4058
4225
|
const controlReplacements = (0, import_editor_controls3.getControlReplacements)();
|
|
4059
4226
|
const matchingOverride = getMatchingOverride(overrides, overridableProp.overrideKey);
|
|
4060
4227
|
const recursiveOriginValue = useResolvedOriginValue(matchingOverride, overridableProp);
|
|
4228
|
+
if (!componentId) {
|
|
4229
|
+
throw new Error("Component ID is required");
|
|
4230
|
+
}
|
|
4231
|
+
if (!overridableProps) {
|
|
4232
|
+
throw new Error("Component has no overridable props");
|
|
4233
|
+
}
|
|
4061
4234
|
const propType = getPropTypeForComponentOverride(overridableProp);
|
|
4062
4235
|
if (!propType) {
|
|
4063
4236
|
return null;
|
|
4064
4237
|
}
|
|
4065
|
-
const componentInstanceId = instanceValue.component_id?.value;
|
|
4066
|
-
if (!componentInstanceId) {
|
|
4067
|
-
throw new Error("Component ID is required");
|
|
4068
|
-
}
|
|
4069
4238
|
const resolvedOverrideValue = matchingOverride ? resolveOverridePropValue(matchingOverride) : null;
|
|
4070
4239
|
const propValue = resolvedOverrideValue ?? recursiveOriginValue ?? overridableProp.originValue;
|
|
4071
4240
|
const value = {
|
|
4072
4241
|
[overridableProp.overrideKey]: propValue
|
|
4073
4242
|
};
|
|
4074
4243
|
const setValue = (newValue) => {
|
|
4244
|
+
if (!overridableProps) {
|
|
4245
|
+
setInstanceValue({
|
|
4246
|
+
...instanceValue,
|
|
4247
|
+
overrides: void 0
|
|
4248
|
+
});
|
|
4249
|
+
return;
|
|
4250
|
+
}
|
|
4075
4251
|
const newPropValue = getTempNewValueForDynamicProp(
|
|
4076
4252
|
propType,
|
|
4077
4253
|
propValue,
|
|
@@ -4081,9 +4257,9 @@ function OverrideControl({ overridableProp, overrides }) {
|
|
|
4081
4257
|
matchingOverride,
|
|
4082
4258
|
overrideKey: overridableProp.overrideKey,
|
|
4083
4259
|
overrideValue: newPropValue,
|
|
4084
|
-
componentId
|
|
4260
|
+
componentId
|
|
4085
4261
|
});
|
|
4086
|
-
let newOverrides = overrides
|
|
4262
|
+
let newOverrides = (overrides ?? []).filter((override) => isValidOverride(overridableProps, override)).map((override) => override === matchingOverride ? newOverrideValue : override);
|
|
4087
4263
|
if (!matchingOverride) {
|
|
4088
4264
|
newOverrides = [...newOverrides, newOverrideValue];
|
|
4089
4265
|
}
|
|
@@ -4092,13 +4268,13 @@ function OverrideControl({ overridableProp, overrides }) {
|
|
|
4092
4268
|
overrides: componentInstanceOverridesPropTypeUtil.create(newOverrides)
|
|
4093
4269
|
});
|
|
4094
4270
|
const overridableValue = componentOverridablePropTypeUtil.extract(newOverrideValue);
|
|
4095
|
-
if (overridableValue &&
|
|
4271
|
+
if (overridableValue && wrappingComponentId) {
|
|
4096
4272
|
if (overridableProp.originPropFields) {
|
|
4097
|
-
updateOverridableProp(
|
|
4273
|
+
updateOverridableProp(wrappingComponentId, overridableValue, overridableProp.originPropFields);
|
|
4098
4274
|
return;
|
|
4099
4275
|
}
|
|
4100
4276
|
const { elType: elType2, widgetType: widgetType2, propKey: propKey2, elementId: elementId2 } = overridableProp;
|
|
4101
|
-
updateOverridableProp(
|
|
4277
|
+
updateOverridableProp(wrappingComponentId, overridableValue, { elType: elType2, widgetType: widgetType2, propKey: propKey2, elementId: elementId2 });
|
|
4102
4278
|
}
|
|
4103
4279
|
};
|
|
4104
4280
|
const { control, controlProps, layout } = getControlParams(
|
|
@@ -4107,14 +4283,14 @@ function OverrideControl({ overridableProp, overrides }) {
|
|
|
4107
4283
|
overridableProp.label
|
|
4108
4284
|
);
|
|
4109
4285
|
const { elementId, widgetType, elType, propKey } = overridableProp.originPropFields ?? overridableProp;
|
|
4110
|
-
const elementContainer = (0,
|
|
4286
|
+
const elementContainer = (0, import_editor_elements16.getContainer)(elementId);
|
|
4111
4287
|
if (!elementContainer) {
|
|
4112
4288
|
throw new OverrideControlInnerElementNotFoundError({
|
|
4113
|
-
context: { componentId
|
|
4289
|
+
context: { componentId, elementId }
|
|
4114
4290
|
});
|
|
4115
4291
|
}
|
|
4116
4292
|
const type = elType === "widget" ? widgetType : elType;
|
|
4117
|
-
const elementType = (0,
|
|
4293
|
+
const elementType = (0, import_editor_elements16.getElementType)(type);
|
|
4118
4294
|
if (!elementType) {
|
|
4119
4295
|
return null;
|
|
4120
4296
|
}
|
|
@@ -4123,13 +4299,13 @@ function OverrideControl({ overridableProp, overrides }) {
|
|
|
4123
4299
|
[overridableProp.overrideKey]: propType
|
|
4124
4300
|
}
|
|
4125
4301
|
});
|
|
4126
|
-
return /* @__PURE__ */
|
|
4302
|
+
return /* @__PURE__ */ React27.createElement(
|
|
4127
4303
|
OverridablePropProvider,
|
|
4128
4304
|
{
|
|
4129
4305
|
value: componentOverridablePropTypeUtil.extract(matchingOverride) ?? void 0,
|
|
4130
4306
|
componentInstanceElement
|
|
4131
4307
|
},
|
|
4132
|
-
/* @__PURE__ */
|
|
4308
|
+
/* @__PURE__ */ React27.createElement(import_editor_editing_panel3.ElementProvider, { element: { id: elementId, type }, elementType }, /* @__PURE__ */ React27.createElement(import_editor_editing_panel3.SettingsField, { bind: propKey, propDisplayName: overridableProp.label }, /* @__PURE__ */ React27.createElement(
|
|
4133
4309
|
import_editor_controls3.PropProvider,
|
|
4134
4310
|
{
|
|
4135
4311
|
propType: propTypeSchema,
|
|
@@ -4139,7 +4315,7 @@ function OverrideControl({ overridableProp, overrides }) {
|
|
|
4139
4315
|
return false;
|
|
4140
4316
|
}
|
|
4141
4317
|
},
|
|
4142
|
-
/* @__PURE__ */
|
|
4318
|
+
/* @__PURE__ */ React27.createElement(import_editor_controls3.PropKeyProvider, { bind: overridableProp.overrideKey }, /* @__PURE__ */ React27.createElement(import_editor_controls3.ControlReplacementsProvider, { replacements: controlReplacements }, /* @__PURE__ */ React27.createElement(import_ui20.Stack, { direction: "column", gap: 1, mb: 1.5 }, layout !== "custom" && /* @__PURE__ */ React27.createElement(ControlLabel, null, overridableProp.label), /* @__PURE__ */ React27.createElement(OriginalControl, { control, controlProps }))))
|
|
4143
4319
|
)))
|
|
4144
4320
|
);
|
|
4145
4321
|
}
|
|
@@ -4150,19 +4326,6 @@ function getTempNewValueForDynamicProp(propType, propValue, newPropValue) {
|
|
|
4150
4326
|
}
|
|
4151
4327
|
return newPropValue;
|
|
4152
4328
|
}
|
|
4153
|
-
function getMatchingOverride(overrides, overrideKey) {
|
|
4154
|
-
const result = overrides?.find((override) => {
|
|
4155
|
-
const overridableValue = componentOverridablePropTypeUtil.extract(override);
|
|
4156
|
-
let comparedOverrideKey = null;
|
|
4157
|
-
if (overridableValue) {
|
|
4158
|
-
comparedOverrideKey = overridableValue.origin_value?.value?.override_key;
|
|
4159
|
-
} else {
|
|
4160
|
-
comparedOverrideKey = override.value.override_key;
|
|
4161
|
-
}
|
|
4162
|
-
return comparedOverrideKey === overrideKey;
|
|
4163
|
-
}) ?? null;
|
|
4164
|
-
return result;
|
|
4165
|
-
}
|
|
4166
4329
|
function createOverrideValue({
|
|
4167
4330
|
matchingOverride,
|
|
4168
4331
|
overrideKey,
|
|
@@ -4211,7 +4374,7 @@ function getControlParams(controls, originPropFields, label) {
|
|
|
4211
4374
|
}
|
|
4212
4375
|
function OriginalControl({ control, controlProps }) {
|
|
4213
4376
|
const { value } = control;
|
|
4214
|
-
return /* @__PURE__ */
|
|
4377
|
+
return /* @__PURE__ */ React27.createElement(import_editor_editing_panel3.BaseControl, { type: value.type, props: controlProps });
|
|
4215
4378
|
}
|
|
4216
4379
|
function getControlLayout(control) {
|
|
4217
4380
|
return control.value.meta?.layout || import_editor_editing_panel3.controlsRegistry.getLayout(control.value.type);
|
|
@@ -4231,18 +4394,22 @@ function populateChildControlProps(props) {
|
|
|
4231
4394
|
}
|
|
4232
4395
|
return props;
|
|
4233
4396
|
}
|
|
4397
|
+
function isValidOverride(overridableProps, override) {
|
|
4398
|
+
const overridableKey = componentOverridablePropTypeUtil.isValid(override) ? override.value.origin_value?.value.override_key : override.value.override_key;
|
|
4399
|
+
return !!overridableProps.props[overridableKey];
|
|
4400
|
+
}
|
|
4234
4401
|
|
|
4235
4402
|
// src/components/instance-editing-panel/override-props-group.tsx
|
|
4236
|
-
function OverridePropsGroup({ group
|
|
4403
|
+
function OverridePropsGroup({ group }) {
|
|
4237
4404
|
const [isOpen, setIsOpen] = (0, import_editor_editing_panel4.useStateByElement)(group.id, true);
|
|
4238
4405
|
const handleClick = () => {
|
|
4239
4406
|
setIsOpen(!isOpen);
|
|
4240
4407
|
};
|
|
4241
|
-
const id2 = (0,
|
|
4408
|
+
const id2 = (0, import_react16.useId)();
|
|
4242
4409
|
const labelId = `label-${id2}`;
|
|
4243
4410
|
const contentId = `content-${id2}`;
|
|
4244
4411
|
const title = group.label;
|
|
4245
|
-
return /* @__PURE__ */
|
|
4412
|
+
return /* @__PURE__ */ React28.createElement(import_ui21.Box, { "aria-label": `${title} section` }, /* @__PURE__ */ React28.createElement(
|
|
4246
4413
|
import_ui21.ListItemButton,
|
|
4247
4414
|
{
|
|
4248
4415
|
id: labelId,
|
|
@@ -4252,7 +4419,7 @@ function OverridePropsGroup({ group, props, overrides }) {
|
|
|
4252
4419
|
p: 0,
|
|
4253
4420
|
sx: { "&:hover": { backgroundColor: "transparent" } }
|
|
4254
4421
|
},
|
|
4255
|
-
/* @__PURE__ */
|
|
4422
|
+
/* @__PURE__ */ React28.createElement(import_ui21.Stack, { direction: "row", alignItems: "center", justifyItems: "start", flexGrow: 1, gap: 0.5 }, /* @__PURE__ */ React28.createElement(
|
|
4256
4423
|
import_ui21.ListItemText,
|
|
4257
4424
|
{
|
|
4258
4425
|
secondary: title,
|
|
@@ -4260,15 +4427,8 @@ function OverridePropsGroup({ group, props, overrides }) {
|
|
|
4260
4427
|
sx: { flexGrow: 0, flexShrink: 1, marginInlineEnd: 1 }
|
|
4261
4428
|
}
|
|
4262
4429
|
)),
|
|
4263
|
-
/* @__PURE__ */
|
|
4264
|
-
), /* @__PURE__ */
|
|
4265
|
-
OverridePropControl,
|
|
4266
|
-
{
|
|
4267
|
-
key: overrideKey,
|
|
4268
|
-
overridableProp: props[overrideKey],
|
|
4269
|
-
overrides
|
|
4270
|
-
}
|
|
4271
|
-
)))));
|
|
4430
|
+
/* @__PURE__ */ React28.createElement(import_editor_ui13.CollapseIcon, { open: isOpen, color: "secondary", fontSize: "tiny" })
|
|
4431
|
+
), /* @__PURE__ */ React28.createElement(import_ui21.Collapse, { id: contentId, "aria-labelledby": labelId, in: isOpen, timeout: "auto" }, /* @__PURE__ */ React28.createElement(import_ui21.Stack, { direction: "column", gap: 1, p: 2 }, group.props.map((overrideKey) => /* @__PURE__ */ React28.createElement(OverridePropControl, { key: overrideKey, overrideKey })))));
|
|
4272
4432
|
}
|
|
4273
4433
|
|
|
4274
4434
|
// src/components/instance-editing-panel/instance-editing-panel.tsx
|
|
@@ -4278,8 +4438,8 @@ function InstanceEditingPanel() {
|
|
|
4278
4438
|
const componentId = settings?.component_id?.value;
|
|
4279
4439
|
const overrides = settings?.overrides?.value;
|
|
4280
4440
|
const component = useComponent(componentId ?? null);
|
|
4281
|
-
const overridableProps =
|
|
4282
|
-
const componentInstanceId = (0,
|
|
4441
|
+
const overridableProps = useSanitizeOverridableProps(componentId ?? null);
|
|
4442
|
+
const componentInstanceId = (0, import_editor_elements17.useSelectedElement)()?.element?.id ?? null;
|
|
4283
4443
|
if (!componentId || !overridableProps || !component) {
|
|
4284
4444
|
return null;
|
|
4285
4445
|
}
|
|
@@ -4288,18 +4448,20 @@ function InstanceEditingPanel() {
|
|
|
4288
4448
|
const isNonEmptyGroup = (group) => group !== null && group.props.length > 0;
|
|
4289
4449
|
const groups = overridableProps.groups.order.map((groupId) => overridableProps.groups.items[groupId] ?? null).filter(isNonEmptyGroup);
|
|
4290
4450
|
const isEmpty = groups.length === 0 || Object.keys(overridableProps.props).length === 0;
|
|
4291
|
-
return /* @__PURE__ */
|
|
4292
|
-
|
|
4451
|
+
return /* @__PURE__ */ React29.createElement(
|
|
4452
|
+
ComponentInstanceProvider,
|
|
4293
4453
|
{
|
|
4294
|
-
|
|
4295
|
-
|
|
4296
|
-
|
|
4297
|
-
}
|
|
4298
|
-
|
|
4454
|
+
componentId,
|
|
4455
|
+
overrides,
|
|
4456
|
+
overridableProps
|
|
4457
|
+
},
|
|
4458
|
+
/* @__PURE__ */ React29.createElement(import_editor_panels4.PanelHeader, { sx: { justifyContent: "start", px: 2 } }, /* @__PURE__ */ React29.createElement(import_ui22.Stack, { direction: "row", alignItems: "center", flexGrow: 1, gap: 1, maxWidth: "100%" }, /* @__PURE__ */ React29.createElement(import_icons14.ComponentsIcon, { fontSize: "small", sx: { color: "text.tertiary" } }), /* @__PURE__ */ React29.createElement(import_editor_ui14.EllipsisWithTooltip, { title: component.name, as: import_editor_panels4.PanelHeaderTitle, sx: { flexGrow: 1 } }), canEdit && /* @__PURE__ */ React29.createElement(import_ui22.Tooltip, { title: panelTitle }, /* @__PURE__ */ React29.createElement(import_ui22.IconButton, { size: "tiny", onClick: handleEditComponent, "aria-label": panelTitle }, /* @__PURE__ */ React29.createElement(import_icons14.PencilIcon, { fontSize: "tiny" }))))),
|
|
4459
|
+
/* @__PURE__ */ React29.createElement(import_editor_panels4.PanelBody, null, /* @__PURE__ */ React29.createElement(import_editor_controls4.ControlAdornmentsProvider, { items: (0, import_editor_editing_panel5.getFieldIndicators)("settings") }, isEmpty ? /* @__PURE__ */ React29.createElement(EmptyState2, { onEditComponent: handleEditComponent }) : /* @__PURE__ */ React29.createElement(import_ui22.Stack, { direction: "column", alignItems: "stretch" }, groups.map((group) => /* @__PURE__ */ React29.createElement(React29.Fragment, { key: group.id + componentInstanceId }, /* @__PURE__ */ React29.createElement(OverridePropsGroup, { group }), /* @__PURE__ */ React29.createElement(import_ui22.Divider, null))))))
|
|
4460
|
+
);
|
|
4299
4461
|
}
|
|
4300
4462
|
|
|
4301
4463
|
// src/components/overridable-props/overridable-prop-control.tsx
|
|
4302
|
-
var
|
|
4464
|
+
var React30 = __toESM(require("react"));
|
|
4303
4465
|
var import_editor_controls5 = require("@elementor/editor-controls");
|
|
4304
4466
|
var import_editor_editing_panel6 = require("@elementor/editor-editing-panel");
|
|
4305
4467
|
function OverridablePropControl({
|
|
@@ -4344,7 +4506,7 @@ function OverridablePropControl({
|
|
|
4344
4506
|
});
|
|
4345
4507
|
const propValue = isComponentInstance2 ? (value.origin_value?.value).override_value : value.origin_value;
|
|
4346
4508
|
const objectPlaceholder = placeholder ? { [bind]: placeholder } : void 0;
|
|
4347
|
-
return /* @__PURE__ */
|
|
4509
|
+
return /* @__PURE__ */ React30.createElement(OverridablePropProvider, { value }, /* @__PURE__ */ React30.createElement(
|
|
4348
4510
|
import_editor_controls5.PropProvider,
|
|
4349
4511
|
{
|
|
4350
4512
|
...propContext,
|
|
@@ -4355,7 +4517,7 @@ function OverridablePropControl({
|
|
|
4355
4517
|
},
|
|
4356
4518
|
placeholder: objectPlaceholder
|
|
4357
4519
|
},
|
|
4358
|
-
/* @__PURE__ */
|
|
4520
|
+
/* @__PURE__ */ React30.createElement(import_editor_controls5.PropKeyProvider, { bind }, /* @__PURE__ */ React30.createElement(import_editor_controls5.ControlReplacementsProvider, { replacements: filteredReplacements }, /* @__PURE__ */ React30.createElement(ControlWithReplacements, { OriginalControl: OriginalControl2, props })))
|
|
4359
4521
|
));
|
|
4360
4522
|
}
|
|
4361
4523
|
function ControlWithReplacements({
|
|
@@ -4365,21 +4527,21 @@ function ControlWithReplacements({
|
|
|
4365
4527
|
const { ControlToRender, isReplaced } = (0, import_editor_controls5.useControlReplacement)(OriginalControl2);
|
|
4366
4528
|
if (isReplaced) {
|
|
4367
4529
|
const ReplacementControl = ControlToRender;
|
|
4368
|
-
return /* @__PURE__ */
|
|
4530
|
+
return /* @__PURE__ */ React30.createElement(ReplacementControl, { ...props, OriginalControl: OriginalControl2 });
|
|
4369
4531
|
}
|
|
4370
|
-
return /* @__PURE__ */
|
|
4532
|
+
return /* @__PURE__ */ React30.createElement(OriginalControl2, { ...props });
|
|
4371
4533
|
}
|
|
4372
4534
|
|
|
4373
4535
|
// src/components/overridable-props/overridable-prop-indicator.tsx
|
|
4374
|
-
var
|
|
4536
|
+
var React32 = __toESM(require("react"));
|
|
4375
4537
|
var import_editor_controls6 = require("@elementor/editor-controls");
|
|
4376
4538
|
var import_editor_editing_panel7 = require("@elementor/editor-editing-panel");
|
|
4377
|
-
var
|
|
4539
|
+
var import_editor_elements18 = require("@elementor/editor-elements");
|
|
4378
4540
|
var import_ui24 = require("@elementor/ui");
|
|
4379
4541
|
var import_i18n29 = require("@wordpress/i18n");
|
|
4380
4542
|
|
|
4381
4543
|
// src/store/actions/set-overridable-prop.ts
|
|
4382
|
-
var
|
|
4544
|
+
var import_store65 = require("@elementor/store");
|
|
4383
4545
|
var import_utils8 = require("@elementor/utils");
|
|
4384
4546
|
function setOverridableProp({
|
|
4385
4547
|
componentId,
|
|
@@ -4394,7 +4556,7 @@ function setOverridableProp({
|
|
|
4394
4556
|
originPropFields,
|
|
4395
4557
|
source
|
|
4396
4558
|
}) {
|
|
4397
|
-
const overridableProps = selectOverridableProps((0,
|
|
4559
|
+
const overridableProps = selectOverridableProps((0, import_store65.__getState)(), componentId);
|
|
4398
4560
|
if (!overridableProps) {
|
|
4399
4561
|
return;
|
|
4400
4562
|
}
|
|
@@ -4431,7 +4593,7 @@ function setOverridableProp({
|
|
|
4431
4593
|
if (isChangingGroups) {
|
|
4432
4594
|
groups = removePropFromGroup(groups, existingOverridableProp.groupId, overridableProp.overrideKey);
|
|
4433
4595
|
}
|
|
4434
|
-
(0,
|
|
4596
|
+
(0, import_store65.__dispatch)(
|
|
4435
4597
|
slice.actions.setOverridableProps({
|
|
4436
4598
|
componentId,
|
|
4437
4599
|
overridableProps: {
|
|
@@ -4442,7 +4604,7 @@ function setOverridableProp({
|
|
|
4442
4604
|
);
|
|
4443
4605
|
const isNewProperty = !existingOverridableProp;
|
|
4444
4606
|
if (isNewProperty) {
|
|
4445
|
-
const currentComponent = selectCurrentComponent((0,
|
|
4607
|
+
const currentComponent = selectCurrentComponent((0, import_store65.__getState)());
|
|
4446
4608
|
trackComponentEvent({
|
|
4447
4609
|
action: "propertyExposed",
|
|
4448
4610
|
source,
|
|
@@ -4457,8 +4619,8 @@ function setOverridableProp({
|
|
|
4457
4619
|
}
|
|
4458
4620
|
|
|
4459
4621
|
// src/components/overridable-props/indicator.tsx
|
|
4460
|
-
var
|
|
4461
|
-
var
|
|
4622
|
+
var React31 = __toESM(require("react"));
|
|
4623
|
+
var import_react17 = require("react");
|
|
4462
4624
|
var import_icons15 = require("@elementor/icons");
|
|
4463
4625
|
var import_ui23 = require("@elementor/ui");
|
|
4464
4626
|
var import_i18n28 = require("@wordpress/i18n");
|
|
@@ -4517,37 +4679,24 @@ var Content = (0, import_ui23.styled)(import_ui23.Box)`
|
|
|
4517
4679
|
}
|
|
4518
4680
|
}
|
|
4519
4681
|
`;
|
|
4520
|
-
var Indicator2 = (0,
|
|
4682
|
+
var Indicator2 = (0, import_react17.forwardRef)(({ isOpen, isOverridable, ...props }, ref) => /* @__PURE__ */ React31.createElement(Content, { ref, ...props, className: isOpen || isOverridable ? "enlarged" : "" }, /* @__PURE__ */ React31.createElement(
|
|
4521
4683
|
IconContainer,
|
|
4522
4684
|
{
|
|
4523
4685
|
className: "icon",
|
|
4524
4686
|
"aria-label": isOverridable ? (0, import_i18n28.__)("Overridable property", "elementor") : (0, import_i18n28.__)("Make prop overridable", "elementor")
|
|
4525
4687
|
},
|
|
4526
|
-
isOverridable ? /* @__PURE__ */
|
|
4688
|
+
isOverridable ? /* @__PURE__ */ React31.createElement(import_icons15.CheckIcon, { fontSize: SIZE2 }) : /* @__PURE__ */ React31.createElement(import_icons15.PlusIcon, { fontSize: SIZE2 })
|
|
4527
4689
|
)));
|
|
4528
4690
|
|
|
4529
|
-
// src/components/overridable-props/utils/get-overridable-prop.ts
|
|
4530
|
-
var import_store62 = require("@elementor/store");
|
|
4531
|
-
function getOverridableProp2({
|
|
4532
|
-
componentId,
|
|
4533
|
-
overrideKey
|
|
4534
|
-
}) {
|
|
4535
|
-
const overridableProps = selectOverridableProps((0, import_store62.__getState)(), componentId);
|
|
4536
|
-
if (!overridableProps) {
|
|
4537
|
-
return void 0;
|
|
4538
|
-
}
|
|
4539
|
-
return overridableProps.props[overrideKey];
|
|
4540
|
-
}
|
|
4541
|
-
|
|
4542
4691
|
// src/components/overridable-props/overridable-prop-indicator.tsx
|
|
4543
4692
|
function OverridablePropIndicator() {
|
|
4544
4693
|
const { propType } = (0, import_editor_controls6.useBoundProp)();
|
|
4545
4694
|
const componentId = useCurrentComponentId();
|
|
4546
|
-
const overridableProps =
|
|
4695
|
+
const overridableProps = useSanitizeOverridableProps(componentId);
|
|
4547
4696
|
if (!isPropAllowed(propType) || !componentId || !overridableProps) {
|
|
4548
4697
|
return null;
|
|
4549
4698
|
}
|
|
4550
|
-
return /* @__PURE__ */
|
|
4699
|
+
return /* @__PURE__ */ React32.createElement(Content2, { componentId, overridableProps });
|
|
4551
4700
|
}
|
|
4552
4701
|
function Content2({ componentId, overridableProps }) {
|
|
4553
4702
|
const {
|
|
@@ -4566,7 +4715,7 @@ function Content2({ componentId, overridableProps }) {
|
|
|
4566
4715
|
});
|
|
4567
4716
|
const triggerProps = (0, import_ui24.bindTrigger)(popupState);
|
|
4568
4717
|
const popoverProps = (0, import_ui24.bindPopover)(popupState);
|
|
4569
|
-
const { elType } = (0,
|
|
4718
|
+
const { elType } = (0, import_editor_elements18.getWidgetsCache)()?.[elementType.key] ?? { elType: "widget" };
|
|
4570
4719
|
const handleSubmit = ({ label, group }) => {
|
|
4571
4720
|
const propTypeDefault = propType.default ?? {};
|
|
4572
4721
|
const originValue = resolveOverridePropValue(overridableValue?.origin_value) ?? value ?? propTypeDefault;
|
|
@@ -4592,8 +4741,8 @@ function Content2({ componentId, overridableProps }) {
|
|
|
4592
4741
|
}
|
|
4593
4742
|
popupState.close();
|
|
4594
4743
|
};
|
|
4595
|
-
const overridableConfig = overridableValue ?
|
|
4596
|
-
return /* @__PURE__ */
|
|
4744
|
+
const overridableConfig = overridableValue ? getOverridableProp({ componentId, overrideKey: overridableValue.override_key }) : void 0;
|
|
4745
|
+
return /* @__PURE__ */ React32.createElement(React32.Fragment, null, /* @__PURE__ */ React32.createElement(import_ui24.Tooltip, { placement: "top", title: (0, import_i18n29.__)("Override Property", "elementor") }, /* @__PURE__ */ React32.createElement(Indicator2, { ...triggerProps, isOpen: !!popoverProps.open, isOverridable: !!overridableValue })), /* @__PURE__ */ React32.createElement(
|
|
4597
4746
|
import_ui24.Popover,
|
|
4598
4747
|
{
|
|
4599
4748
|
disableScrollLock: true,
|
|
@@ -4610,7 +4759,7 @@ function Content2({ componentId, overridableProps }) {
|
|
|
4610
4759
|
},
|
|
4611
4760
|
...popoverProps
|
|
4612
4761
|
},
|
|
4613
|
-
/* @__PURE__ */
|
|
4762
|
+
/* @__PURE__ */ React32.createElement(
|
|
4614
4763
|
OverridablePropForm,
|
|
4615
4764
|
{
|
|
4616
4765
|
onSubmit: handleSubmit,
|
|
@@ -4633,7 +4782,7 @@ var import_editor_mcp2 = require("@elementor/editor-mcp");
|
|
|
4633
4782
|
|
|
4634
4783
|
// src/mcp/save-as-component-tool.ts
|
|
4635
4784
|
var import_editor_canvas7 = require("@elementor/editor-canvas");
|
|
4636
|
-
var
|
|
4785
|
+
var import_editor_elements19 = require("@elementor/editor-elements");
|
|
4637
4786
|
var import_editor_mcp = require("@elementor/editor-mcp");
|
|
4638
4787
|
var import_http_client2 = require("@elementor/http-client");
|
|
4639
4788
|
var import_schema6 = require("@elementor/schema");
|
|
@@ -4678,7 +4827,7 @@ var handleSaveAsComponent = async (params) => {
|
|
|
4678
4827
|
overridable_props: overridablePropsInput
|
|
4679
4828
|
} = params;
|
|
4680
4829
|
const validElementTypes = getValidElementTypes();
|
|
4681
|
-
const container = (0,
|
|
4830
|
+
const container = (0, import_editor_elements19.getContainer)(elementId);
|
|
4682
4831
|
if (!container) {
|
|
4683
4832
|
throw new Error(ERROR_MESSAGES3.ELEMENT_NOT_FOUND);
|
|
4684
4833
|
}
|
|
@@ -4744,7 +4893,7 @@ function enrichOverridableProps(input, rootElement, propertGroups) {
|
|
|
4744
4893
|
}
|
|
4745
4894
|
const elType = element.elType;
|
|
4746
4895
|
const widgetType = element.widgetType || element.elType;
|
|
4747
|
-
const elementType = (0,
|
|
4896
|
+
const elementType = (0, import_editor_elements19.getElementType)(widgetType);
|
|
4748
4897
|
if (!elementType) {
|
|
4749
4898
|
throw new Error(
|
|
4750
4899
|
`Element type "${widgetType}" is not atomic or does not have a settings schema. Cannot expose property "${propKey}" for element "${elementId}".`
|
|
@@ -4815,7 +4964,7 @@ function findElementById(root, targetId) {
|
|
|
4815
4964
|
return null;
|
|
4816
4965
|
}
|
|
4817
4966
|
function getValidElementTypes() {
|
|
4818
|
-
const types = (0,
|
|
4967
|
+
const types = (0, import_editor_elements19.getWidgetsCache)();
|
|
4819
4968
|
if (!types) {
|
|
4820
4969
|
return [];
|
|
4821
4970
|
}
|
|
@@ -4995,20 +5144,20 @@ function initMcp() {
|
|
|
4995
5144
|
}
|
|
4996
5145
|
|
|
4997
5146
|
// src/populate-store.ts
|
|
4998
|
-
var
|
|
4999
|
-
var
|
|
5147
|
+
var import_react18 = require("react");
|
|
5148
|
+
var import_store68 = require("@elementor/store");
|
|
5000
5149
|
function PopulateStore() {
|
|
5001
|
-
(0,
|
|
5002
|
-
(0,
|
|
5150
|
+
(0, import_react18.useEffect)(() => {
|
|
5151
|
+
(0, import_store68.__dispatch)(loadComponents());
|
|
5003
5152
|
}, []);
|
|
5004
5153
|
return null;
|
|
5005
5154
|
}
|
|
5006
5155
|
|
|
5007
5156
|
// src/prevent-circular-nesting.ts
|
|
5008
|
-
var
|
|
5157
|
+
var import_editor_elements20 = require("@elementor/editor-elements");
|
|
5009
5158
|
var import_editor_notifications4 = require("@elementor/editor-notifications");
|
|
5010
5159
|
var import_editor_v1_adapters7 = require("@elementor/editor-v1-adapters");
|
|
5011
|
-
var
|
|
5160
|
+
var import_store69 = require("@elementor/store");
|
|
5012
5161
|
var import_i18n30 = require("@wordpress/i18n");
|
|
5013
5162
|
var COMPONENT_TYPE = "e-component";
|
|
5014
5163
|
var COMPONENT_CIRCULAR_NESTING_ALERT = {
|
|
@@ -5034,7 +5183,7 @@ function wouldCreateCircularNesting(componentIdToAdd) {
|
|
|
5034
5183
|
if (componentIdToAdd === void 0) {
|
|
5035
5184
|
return false;
|
|
5036
5185
|
}
|
|
5037
|
-
const state = (0,
|
|
5186
|
+
const state = (0, import_store69.__getState)();
|
|
5038
5187
|
const currentComponentId = selectCurrentComponentId(state);
|
|
5039
5188
|
const path = selectPath(state);
|
|
5040
5189
|
if (currentComponentId === null) {
|
|
@@ -5100,7 +5249,7 @@ function blockCircularMove(args) {
|
|
|
5100
5249
|
if (!container) {
|
|
5101
5250
|
return false;
|
|
5102
5251
|
}
|
|
5103
|
-
const allElements = (0,
|
|
5252
|
+
const allElements = (0, import_editor_elements20.getAllDescendants)(container);
|
|
5104
5253
|
return allElements.some((element) => {
|
|
5105
5254
|
const componentId = extractComponentIdFromContainer(element);
|
|
5106
5255
|
if (componentId === null) {
|
|
@@ -5132,19 +5281,19 @@ function blockCircularPaste(args) {
|
|
|
5132
5281
|
}
|
|
5133
5282
|
|
|
5134
5283
|
// src/store/actions/remove-component-styles.ts
|
|
5135
|
-
var
|
|
5284
|
+
var import_store71 = require("@elementor/store");
|
|
5136
5285
|
function removeComponentStyles(id2) {
|
|
5137
5286
|
apiClient.invalidateComponentConfigCache(id2);
|
|
5138
|
-
(0,
|
|
5287
|
+
(0, import_store71.__dispatch)(slice.actions.removeStyles({ id: id2 }));
|
|
5139
5288
|
}
|
|
5140
5289
|
|
|
5141
5290
|
// src/store/components-styles-provider.ts
|
|
5142
5291
|
var import_editor_styles_repository = require("@elementor/editor-styles-repository");
|
|
5143
|
-
var
|
|
5292
|
+
var import_store73 = require("@elementor/store");
|
|
5144
5293
|
var componentsStylesProvider = (0, import_editor_styles_repository.createStylesProvider)({
|
|
5145
5294
|
key: "components-styles",
|
|
5146
5295
|
priority: 100,
|
|
5147
|
-
subscribe: (cb) => (0,
|
|
5296
|
+
subscribe: (cb) => (0, import_store73.__subscribeWithSelector)(
|
|
5148
5297
|
(state) => state[SLICE_NAME],
|
|
5149
5298
|
() => {
|
|
5150
5299
|
cb();
|
|
@@ -5152,29 +5301,29 @@ var componentsStylesProvider = (0, import_editor_styles_repository.createStylesP
|
|
|
5152
5301
|
),
|
|
5153
5302
|
actions: {
|
|
5154
5303
|
all: () => {
|
|
5155
|
-
return selectFlatStyles((0,
|
|
5304
|
+
return selectFlatStyles((0, import_store73.__getState)());
|
|
5156
5305
|
},
|
|
5157
5306
|
get: (id2) => {
|
|
5158
|
-
return selectFlatStyles((0,
|
|
5307
|
+
return selectFlatStyles((0, import_store73.__getState)()).find((style) => style.id === id2) ?? null;
|
|
5159
5308
|
}
|
|
5160
5309
|
}
|
|
5161
5310
|
});
|
|
5162
5311
|
|
|
5163
5312
|
// src/sync/create-components-before-save.ts
|
|
5164
|
-
var
|
|
5165
|
-
var
|
|
5313
|
+
var import_editor_elements21 = require("@elementor/editor-elements");
|
|
5314
|
+
var import_store75 = require("@elementor/store");
|
|
5166
5315
|
async function createComponentsBeforeSave({
|
|
5167
5316
|
elements,
|
|
5168
5317
|
status
|
|
5169
5318
|
}) {
|
|
5170
|
-
const unpublishedComponents = selectUnpublishedComponents((0,
|
|
5319
|
+
const unpublishedComponents = selectUnpublishedComponents((0, import_store75.__getState)());
|
|
5171
5320
|
if (!unpublishedComponents.length) {
|
|
5172
5321
|
return;
|
|
5173
5322
|
}
|
|
5174
5323
|
try {
|
|
5175
5324
|
const uidToComponentId = await createComponents(unpublishedComponents, status);
|
|
5176
5325
|
updateComponentInstances(elements, uidToComponentId);
|
|
5177
|
-
(0,
|
|
5326
|
+
(0, import_store75.__dispatch)(
|
|
5178
5327
|
slice.actions.add(
|
|
5179
5328
|
unpublishedComponents.map((component) => ({
|
|
5180
5329
|
id: uidToComponentId.get(component.uid),
|
|
@@ -5184,10 +5333,10 @@ async function createComponentsBeforeSave({
|
|
|
5184
5333
|
}))
|
|
5185
5334
|
)
|
|
5186
5335
|
);
|
|
5187
|
-
(0,
|
|
5336
|
+
(0, import_store75.__dispatch)(slice.actions.resetUnpublished());
|
|
5188
5337
|
} catch (error) {
|
|
5189
5338
|
const failedUids = unpublishedComponents.map((component) => component.uid);
|
|
5190
|
-
(0,
|
|
5339
|
+
(0, import_store75.__dispatch)(slice.actions.removeUnpublished(failedUids));
|
|
5191
5340
|
throw new Error(`Failed to publish components: ${error}`);
|
|
5192
5341
|
}
|
|
5193
5342
|
}
|
|
@@ -5231,7 +5380,7 @@ function shouldUpdateElement(element, uidToComponentId) {
|
|
|
5231
5380
|
return { shouldUpdate: false, newComponentId: null };
|
|
5232
5381
|
}
|
|
5233
5382
|
function updateElementComponentId(elementId, componentId) {
|
|
5234
|
-
(0,
|
|
5383
|
+
(0, import_editor_elements21.updateElementSettings)({
|
|
5235
5384
|
id: elementId,
|
|
5236
5385
|
props: {
|
|
5237
5386
|
component_instance: {
|
|
@@ -5261,7 +5410,7 @@ async function publishDraftComponentsInPageBeforeSave({ status, elements }) {
|
|
|
5261
5410
|
}
|
|
5262
5411
|
|
|
5263
5412
|
// src/sync/set-component-overridable-props-settings-before-save.ts
|
|
5264
|
-
var
|
|
5413
|
+
var import_store77 = require("@elementor/store");
|
|
5265
5414
|
var setComponentOverridablePropsSettingsBeforeSave = ({
|
|
5266
5415
|
container
|
|
5267
5416
|
}) => {
|
|
@@ -5269,7 +5418,7 @@ var setComponentOverridablePropsSettingsBeforeSave = ({
|
|
|
5269
5418
|
if (!currentDocument || currentDocument.config.type !== COMPONENT_DOCUMENT_TYPE) {
|
|
5270
5419
|
return;
|
|
5271
5420
|
}
|
|
5272
|
-
const overridableProps = selectOverridableProps((0,
|
|
5421
|
+
const overridableProps = selectOverridableProps((0, import_store77.__getState)(), currentDocument.id);
|
|
5273
5422
|
if (overridableProps) {
|
|
5274
5423
|
container.settings.set("overridable_props", overridableProps);
|
|
5275
5424
|
}
|
|
@@ -5277,7 +5426,7 @@ var setComponentOverridablePropsSettingsBeforeSave = ({
|
|
|
5277
5426
|
|
|
5278
5427
|
// src/sync/update-archived-component-before-save.ts
|
|
5279
5428
|
var import_editor_notifications5 = require("@elementor/editor-notifications");
|
|
5280
|
-
var
|
|
5429
|
+
var import_store79 = require("@elementor/store");
|
|
5281
5430
|
var failedNotification = (message) => ({
|
|
5282
5431
|
type: "error",
|
|
5283
5432
|
message: `Failed to archive components: ${message}`,
|
|
@@ -5285,7 +5434,7 @@ var failedNotification = (message) => ({
|
|
|
5285
5434
|
});
|
|
5286
5435
|
var updateArchivedComponentBeforeSave = async (status) => {
|
|
5287
5436
|
try {
|
|
5288
|
-
const archivedComponents = selectArchivedThisSession((0,
|
|
5437
|
+
const archivedComponents = selectArchivedThisSession((0, import_store79.__getState)());
|
|
5289
5438
|
if (!archivedComponents.length) {
|
|
5290
5439
|
return;
|
|
5291
5440
|
}
|
|
@@ -5300,15 +5449,15 @@ var updateArchivedComponentBeforeSave = async (status) => {
|
|
|
5300
5449
|
};
|
|
5301
5450
|
|
|
5302
5451
|
// src/sync/update-component-title-before-save.ts
|
|
5303
|
-
var
|
|
5452
|
+
var import_store81 = require("@elementor/store");
|
|
5304
5453
|
var updateComponentTitleBeforeSave = async (status) => {
|
|
5305
|
-
const updatedComponentNames = selectUpdatedComponentNames((0,
|
|
5454
|
+
const updatedComponentNames = selectUpdatedComponentNames((0, import_store81.__getState)());
|
|
5306
5455
|
if (!updatedComponentNames.length) {
|
|
5307
5456
|
return;
|
|
5308
5457
|
}
|
|
5309
5458
|
const result = await apiClient.updateComponentTitle(updatedComponentNames, status);
|
|
5310
5459
|
if (result.failedIds.length === 0) {
|
|
5311
|
-
(0,
|
|
5460
|
+
(0, import_store81.__dispatch)(slice.actions.cleanUpdatedComponentNames());
|
|
5312
5461
|
}
|
|
5313
5462
|
};
|
|
5314
5463
|
|
|
@@ -5334,12 +5483,12 @@ var updateExistingComponentsBeforeSave = async ({
|
|
|
5334
5483
|
};
|
|
5335
5484
|
|
|
5336
5485
|
// src/sync/cleanup-overridable-props-on-delete.ts
|
|
5337
|
-
var
|
|
5486
|
+
var import_editor_elements22 = require("@elementor/editor-elements");
|
|
5338
5487
|
var import_editor_v1_adapters8 = require("@elementor/editor-v1-adapters");
|
|
5339
|
-
var
|
|
5488
|
+
var import_store83 = require("@elementor/store");
|
|
5340
5489
|
function initCleanupOverridablePropsOnDelete() {
|
|
5341
5490
|
(0, import_editor_v1_adapters8.registerDataHook)("dependency", "document/elements/delete", (args) => {
|
|
5342
|
-
const state = (0,
|
|
5491
|
+
const state = (0, import_store83.__getState)();
|
|
5343
5492
|
if (!state) {
|
|
5344
5493
|
return true;
|
|
5345
5494
|
}
|
|
@@ -5370,7 +5519,7 @@ function initCleanupOverridablePropsOnDelete() {
|
|
|
5370
5519
|
for (const propKey of propKeysToDelete) {
|
|
5371
5520
|
updatedGroups = removePropFromAllGroups(updatedGroups, propKey);
|
|
5372
5521
|
}
|
|
5373
|
-
(0,
|
|
5522
|
+
(0, import_store83.__dispatch)(
|
|
5374
5523
|
slice.actions.setOverridableProps({
|
|
5375
5524
|
componentId: currentComponentId,
|
|
5376
5525
|
overridableProps: {
|
|
@@ -5384,12 +5533,12 @@ function initCleanupOverridablePropsOnDelete() {
|
|
|
5384
5533
|
});
|
|
5385
5534
|
}
|
|
5386
5535
|
function collectDeletedElementIds(containers) {
|
|
5387
|
-
const elementIds = containers.filter(Boolean).flatMap((container) => [container, ...(0,
|
|
5536
|
+
const elementIds = containers.filter(Boolean).flatMap((container) => [container, ...(0, import_editor_elements22.getAllDescendants)(container)]).map((element) => element.model?.get?.("id") ?? element.id).filter((id2) => Boolean(id2));
|
|
5388
5537
|
return elementIds;
|
|
5389
5538
|
}
|
|
5390
5539
|
|
|
5391
5540
|
// src/sync/handle-component-edit-mode-container.ts
|
|
5392
|
-
var
|
|
5541
|
+
var import_editor_elements23 = require("@elementor/editor-elements");
|
|
5393
5542
|
var import_editor_v1_adapters9 = require("@elementor/editor-v1-adapters");
|
|
5394
5543
|
var V4_DEFAULT_CONTAINER_TYPE = "e-flexbox";
|
|
5395
5544
|
function initHandleComponentEditModeContainer() {
|
|
@@ -5439,11 +5588,11 @@ function initRedirectDropIntoComponent() {
|
|
|
5439
5588
|
});
|
|
5440
5589
|
}
|
|
5441
5590
|
function createEmptyTopLevelContainer(container) {
|
|
5442
|
-
const newContainer = (0,
|
|
5443
|
-
|
|
5591
|
+
const newContainer = (0, import_editor_elements23.createElement)({
|
|
5592
|
+
container,
|
|
5444
5593
|
model: { elType: V4_DEFAULT_CONTAINER_TYPE }
|
|
5445
5594
|
});
|
|
5446
|
-
(0,
|
|
5595
|
+
(0, import_editor_elements23.selectElement)(newContainer.id);
|
|
5447
5596
|
}
|
|
5448
5597
|
function getComponentContainer(container) {
|
|
5449
5598
|
const topLevelElement = container.children?.[0];
|
|
@@ -5516,7 +5665,7 @@ function revertOverridablesInStorage(storageKey) {
|
|
|
5516
5665
|
// src/init.ts
|
|
5517
5666
|
function init() {
|
|
5518
5667
|
import_editor_styles_repository2.stylesRepository.register(componentsStylesProvider);
|
|
5519
|
-
(0,
|
|
5668
|
+
(0, import_store85.__registerSlice)(slice);
|
|
5520
5669
|
(0, import_editor_panels5.__registerPanel)(panel);
|
|
5521
5670
|
(0, import_editor_canvas8.registerElementType)(
|
|
5522
5671
|
COMPONENT_WIDGET_TYPE,
|