@elementor/editor-controls 3.32.0-95 → 3.33.0-97

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/dist/index.mjs CHANGED
@@ -1186,6 +1186,42 @@ import { __ as __5, sprintf } from "@wordpress/i18n";
1186
1186
  import * as React24 from "react";
1187
1187
  import { createContext as createContext6, useState as useState6 } from "react";
1188
1188
  import { usePopupState as usePopupState3 } from "@elementor/ui";
1189
+
1190
+ // src/services/event-bus.ts
1191
+ var EventBus = class {
1192
+ listeners = /* @__PURE__ */ new Map();
1193
+ subscribe(eventName, callback) {
1194
+ if (!this.listeners.has(eventName)) {
1195
+ this.listeners.set(eventName, /* @__PURE__ */ new Set());
1196
+ }
1197
+ const eventListeners = this.listeners.get(eventName);
1198
+ if (eventListeners) {
1199
+ eventListeners.add(callback);
1200
+ }
1201
+ }
1202
+ unsubscribe(eventName, callback) {
1203
+ const eventListeners = this.listeners.get(eventName);
1204
+ if (!eventListeners) {
1205
+ return;
1206
+ }
1207
+ eventListeners.delete(callback);
1208
+ if (eventListeners.size === 0) {
1209
+ this.listeners.delete(eventName);
1210
+ }
1211
+ }
1212
+ emit(eventName, data) {
1213
+ const eventListeners = this.listeners.get(eventName);
1214
+ if (eventListeners) {
1215
+ eventListeners.forEach((callback) => callback(data));
1216
+ }
1217
+ }
1218
+ clearAll() {
1219
+ this.listeners.clear();
1220
+ }
1221
+ };
1222
+ var eventBus = new EventBus();
1223
+
1224
+ // src/components/unstable-repeater/context/repeater-context.tsx
1189
1225
  var RepeaterContext = createContext6(null);
1190
1226
  var EMPTY_OPEN_ITEM = -1;
1191
1227
  var useRepeaterContext = () => {
@@ -1234,9 +1270,16 @@ var RepeaterContextProvider = ({
1234
1270
  setItems(newItems);
1235
1271
  setOpenItemIndex(newIndex);
1236
1272
  popoverState.open(rowRef ?? ev);
1273
+ eventBus.emit(`${propTypeUtil.key}-item-added`, {
1274
+ itemValue: initial.value
1275
+ });
1237
1276
  };
1238
1277
  const removeItem = (index) => {
1278
+ const itemToRemove = items2[index];
1239
1279
  setItems(items2.filter((_, pos) => pos !== index));
1280
+ eventBus.emit(`${propTypeUtil.key}-item-removed`, {
1281
+ itemValue: itemToRemove?.value
1282
+ });
1240
1283
  };
1241
1284
  const updateItem = (updatedItem, index) => {
1242
1285
  const newItems = [...items2.slice(0, index), updatedItem, ...items2.slice(index + 1)];
@@ -5068,6 +5111,29 @@ var transitionsItemsList = transitionProperties.map((category) => ({
5068
5111
  items: category.properties.map((property) => property.label)
5069
5112
  }));
5070
5113
 
5114
+ // src/controls/transition-control/trainsition-events.ts
5115
+ import { getSelectedElements } from "@elementor/editor-elements";
5116
+ import { sendMixpanelEvent } from "@elementor/utils";
5117
+ var transitionRepeaterMixpanelEvent = {
5118
+ eventName: "click_added_transition",
5119
+ location: "V4 Style Tab",
5120
+ secondaryLocation: "Transition control",
5121
+ trigger: "click"
5122
+ };
5123
+ function subscribeToTransitionEvent() {
5124
+ eventBus.subscribe("transition-item-added", (data) => {
5125
+ const payload = data;
5126
+ const value = payload?.itemValue?.selection?.value?.value?.value;
5127
+ const selectedElements = getSelectedElements();
5128
+ const widgetType = selectedElements[0]?.type ?? null;
5129
+ sendMixpanelEvent({
5130
+ transition_type: value ?? "unknown",
5131
+ ...transitionRepeaterMixpanelEvent,
5132
+ widget_type: widgetType
5133
+ });
5134
+ });
5135
+ }
5136
+
5071
5137
  // src/controls/transition-control/transition-selector.tsx
5072
5138
  import * as React89 from "react";
5073
5139
  import { useRef as useRef23 } from "react";
@@ -5225,6 +5291,7 @@ var disableAddItemTooltipContent = /* @__PURE__ */ React90.createElement(
5225
5291
  /* @__PURE__ */ React90.createElement(AlertTitle2, null, __47("Transitions", "elementor")),
5226
5292
  /* @__PURE__ */ React90.createElement(Box18, { component: "span" }, /* @__PURE__ */ React90.createElement(Typography6, { variant: "body2" }, __47("Switch to 'Normal' state to add a transition.", "elementor")))
5227
5293
  );
5294
+ subscribeToTransitionEvent();
5228
5295
  var TransitionRepeaterControl = createControl(
5229
5296
  ({
5230
5297
  recentlyUsedListGetter,