@elementor/editor-interactions 3.33.0-224
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.d.mts +47 -0
- package/dist/index.d.ts +47 -0
- package/dist/index.js +417 -0
- package/dist/index.js.map +1 -0
- package/dist/index.mjs +376 -0
- package/dist/index.mjs.map +1 -0
- package/package.json +54 -0
- package/src/components/controls/direction.tsx +43 -0
- package/src/components/controls/effect-type.tsx +40 -0
- package/src/components/controls/effect.tsx +40 -0
- package/src/components/controls/time-frame-indicator.tsx +43 -0
- package/src/components/controls/trigger.tsx +44 -0
- package/src/components/empty-state.tsx +34 -0
- package/src/components/header.tsx +22 -0
- package/src/components/interaction-details.tsx +71 -0
- package/src/components/interactions-list.tsx +113 -0
- package/src/contexts/popup-state-contex.tsx +36 -0
- package/src/index.ts +5 -0
- package/src/types.ts +23 -0
- package/src/utils/format-interaction-label.ts +32 -0
- package/src/utils/get-interactions-config.ts +16 -0
package/dist/index.d.mts
ADDED
|
@@ -0,0 +1,47 @@
|
|
|
1
|
+
import * as React from 'react';
|
|
2
|
+
|
|
3
|
+
declare const EmptyState: ({ onCreateInteraction }: {
|
|
4
|
+
onCreateInteraction: () => void;
|
|
5
|
+
}) => React.JSX.Element;
|
|
6
|
+
|
|
7
|
+
type PredefinedInteractionsListProps = {
|
|
8
|
+
onSelectInteraction: (interaction: string) => void;
|
|
9
|
+
selectedInteraction: string;
|
|
10
|
+
onDelete?: () => void;
|
|
11
|
+
};
|
|
12
|
+
declare const PredefinedInteractionsList: ({ onSelectInteraction, selectedInteraction, onDelete, }: PredefinedInteractionsListProps) => React.JSX.Element;
|
|
13
|
+
|
|
14
|
+
type AnimationOption = {
|
|
15
|
+
value: string;
|
|
16
|
+
label: string;
|
|
17
|
+
};
|
|
18
|
+
type InteractionConstants = {
|
|
19
|
+
defaultDuration: number;
|
|
20
|
+
defaultDelay: number;
|
|
21
|
+
slideDistance: number;
|
|
22
|
+
scaleStart: number;
|
|
23
|
+
easing: string;
|
|
24
|
+
};
|
|
25
|
+
type InteractionsConfig = {
|
|
26
|
+
constants: InteractionConstants;
|
|
27
|
+
animationOptions: AnimationOption[];
|
|
28
|
+
};
|
|
29
|
+
type FieldProps = {
|
|
30
|
+
value: string;
|
|
31
|
+
onChange: (value: string) => void;
|
|
32
|
+
label?: string;
|
|
33
|
+
};
|
|
34
|
+
|
|
35
|
+
declare function getInteractionsConfig(): InteractionsConfig;
|
|
36
|
+
|
|
37
|
+
type PopupStateContextType = {
|
|
38
|
+
openByDefault: boolean;
|
|
39
|
+
triggerDefaultOpen: () => void;
|
|
40
|
+
resetDefaultOpen: () => void;
|
|
41
|
+
};
|
|
42
|
+
declare const PopupStateProvider: ({ children }: {
|
|
43
|
+
children: React.ReactNode;
|
|
44
|
+
}) => React.JSX.Element;
|
|
45
|
+
declare const usePopupStateContext: () => PopupStateContextType;
|
|
46
|
+
|
|
47
|
+
export { type AnimationOption, EmptyState, type FieldProps, type InteractionConstants, type InteractionsConfig, PopupStateProvider, PredefinedInteractionsList, getInteractionsConfig, usePopupStateContext };
|
package/dist/index.d.ts
ADDED
|
@@ -0,0 +1,47 @@
|
|
|
1
|
+
import * as React from 'react';
|
|
2
|
+
|
|
3
|
+
declare const EmptyState: ({ onCreateInteraction }: {
|
|
4
|
+
onCreateInteraction: () => void;
|
|
5
|
+
}) => React.JSX.Element;
|
|
6
|
+
|
|
7
|
+
type PredefinedInteractionsListProps = {
|
|
8
|
+
onSelectInteraction: (interaction: string) => void;
|
|
9
|
+
selectedInteraction: string;
|
|
10
|
+
onDelete?: () => void;
|
|
11
|
+
};
|
|
12
|
+
declare const PredefinedInteractionsList: ({ onSelectInteraction, selectedInteraction, onDelete, }: PredefinedInteractionsListProps) => React.JSX.Element;
|
|
13
|
+
|
|
14
|
+
type AnimationOption = {
|
|
15
|
+
value: string;
|
|
16
|
+
label: string;
|
|
17
|
+
};
|
|
18
|
+
type InteractionConstants = {
|
|
19
|
+
defaultDuration: number;
|
|
20
|
+
defaultDelay: number;
|
|
21
|
+
slideDistance: number;
|
|
22
|
+
scaleStart: number;
|
|
23
|
+
easing: string;
|
|
24
|
+
};
|
|
25
|
+
type InteractionsConfig = {
|
|
26
|
+
constants: InteractionConstants;
|
|
27
|
+
animationOptions: AnimationOption[];
|
|
28
|
+
};
|
|
29
|
+
type FieldProps = {
|
|
30
|
+
value: string;
|
|
31
|
+
onChange: (value: string) => void;
|
|
32
|
+
label?: string;
|
|
33
|
+
};
|
|
34
|
+
|
|
35
|
+
declare function getInteractionsConfig(): InteractionsConfig;
|
|
36
|
+
|
|
37
|
+
type PopupStateContextType = {
|
|
38
|
+
openByDefault: boolean;
|
|
39
|
+
triggerDefaultOpen: () => void;
|
|
40
|
+
resetDefaultOpen: () => void;
|
|
41
|
+
};
|
|
42
|
+
declare const PopupStateProvider: ({ children }: {
|
|
43
|
+
children: React.ReactNode;
|
|
44
|
+
}) => React.JSX.Element;
|
|
45
|
+
declare const usePopupStateContext: () => PopupStateContextType;
|
|
46
|
+
|
|
47
|
+
export { type AnimationOption, EmptyState, type FieldProps, type InteractionConstants, type InteractionsConfig, PopupStateProvider, PredefinedInteractionsList, getInteractionsConfig, usePopupStateContext };
|
package/dist/index.js
ADDED
|
@@ -0,0 +1,417 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __create = Object.create;
|
|
3
|
+
var __defProp = Object.defineProperty;
|
|
4
|
+
var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
|
|
5
|
+
var __getOwnPropNames = Object.getOwnPropertyNames;
|
|
6
|
+
var __getProtoOf = Object.getPrototypeOf;
|
|
7
|
+
var __hasOwnProp = Object.prototype.hasOwnProperty;
|
|
8
|
+
var __export = (target, all) => {
|
|
9
|
+
for (var name in all)
|
|
10
|
+
__defProp(target, name, { get: all[name], enumerable: true });
|
|
11
|
+
};
|
|
12
|
+
var __copyProps = (to, from, except, desc) => {
|
|
13
|
+
if (from && typeof from === "object" || typeof from === "function") {
|
|
14
|
+
for (let key of __getOwnPropNames(from))
|
|
15
|
+
if (!__hasOwnProp.call(to, key) && key !== except)
|
|
16
|
+
__defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
|
|
17
|
+
}
|
|
18
|
+
return to;
|
|
19
|
+
};
|
|
20
|
+
var __toESM = (mod, isNodeMode, target) => (target = mod != null ? __create(__getProtoOf(mod)) : {}, __copyProps(
|
|
21
|
+
// If the importer is in node compatibility mode or this is not an ESM
|
|
22
|
+
// file that has been converted to a CommonJS file using a Babel-
|
|
23
|
+
// compatible transform (i.e. "__esModule" has not been set), then set
|
|
24
|
+
// "default" to the CommonJS "module.exports" for node compatibility.
|
|
25
|
+
isNodeMode || !mod || !mod.__esModule ? __defProp(target, "default", { value: mod, enumerable: true }) : target,
|
|
26
|
+
mod
|
|
27
|
+
));
|
|
28
|
+
var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
|
|
29
|
+
|
|
30
|
+
// src/index.ts
|
|
31
|
+
var index_exports = {};
|
|
32
|
+
__export(index_exports, {
|
|
33
|
+
EmptyState: () => EmptyState,
|
|
34
|
+
PopupStateProvider: () => PopupStateProvider,
|
|
35
|
+
PredefinedInteractionsList: () => PredefinedInteractionsList,
|
|
36
|
+
getInteractionsConfig: () => getInteractionsConfig,
|
|
37
|
+
usePopupStateContext: () => usePopupStateContext
|
|
38
|
+
});
|
|
39
|
+
module.exports = __toCommonJS(index_exports);
|
|
40
|
+
|
|
41
|
+
// src/components/empty-state.tsx
|
|
42
|
+
var React = __toESM(require("react"));
|
|
43
|
+
var import_icons = require("@elementor/icons");
|
|
44
|
+
var import_ui = require("@elementor/ui");
|
|
45
|
+
var import_i18n = require("@wordpress/i18n");
|
|
46
|
+
var EmptyState = ({ onCreateInteraction }) => {
|
|
47
|
+
return /* @__PURE__ */ React.createElement(
|
|
48
|
+
import_ui.Stack,
|
|
49
|
+
{
|
|
50
|
+
alignItems: "center",
|
|
51
|
+
justifyContent: "center",
|
|
52
|
+
height: "100%",
|
|
53
|
+
color: "text.secondary",
|
|
54
|
+
sx: { p: 2.5, pt: 8, pb: 5.5 },
|
|
55
|
+
gap: 1.5
|
|
56
|
+
},
|
|
57
|
+
/* @__PURE__ */ React.createElement(import_icons.SwipeIcon, { fontSize: "large" }),
|
|
58
|
+
/* @__PURE__ */ React.createElement(import_ui.Typography, { align: "center", variant: "subtitle2" }, (0, import_i18n.__)("Animate elements with Interactions", "elementor")),
|
|
59
|
+
/* @__PURE__ */ React.createElement(import_ui.Typography, { align: "center", variant: "caption", maxWidth: "170px" }, (0, import_i18n.__)(
|
|
60
|
+
"Add entrance animations and effects triggered by user interactions such as click, hover, or scroll.",
|
|
61
|
+
"elementor"
|
|
62
|
+
)),
|
|
63
|
+
/* @__PURE__ */ React.createElement(import_ui.Button, { variant: "outlined", color: "secondary", size: "small", sx: { mt: 1 }, onClick: onCreateInteraction }, (0, import_i18n.__)("Create an interaction", "elementor"))
|
|
64
|
+
);
|
|
65
|
+
};
|
|
66
|
+
|
|
67
|
+
// src/components/interactions-list.tsx
|
|
68
|
+
var React10 = __toESM(require("react"));
|
|
69
|
+
var import_react3 = require("react");
|
|
70
|
+
var import_icons4 = require("@elementor/icons");
|
|
71
|
+
var import_ui9 = require("@elementor/ui");
|
|
72
|
+
var import_i18n8 = require("@wordpress/i18n");
|
|
73
|
+
|
|
74
|
+
// src/contexts/popup-state-contex.tsx
|
|
75
|
+
var React2 = __toESM(require("react"));
|
|
76
|
+
var import_react = require("react");
|
|
77
|
+
var PopupStateContext = (0, import_react.createContext)(void 0);
|
|
78
|
+
var PopupStateProvider = ({ children }) => {
|
|
79
|
+
const [openByDefault, setOpenByDefault] = (0, import_react.useState)(false);
|
|
80
|
+
const triggerDefaultOpen = (0, import_react.useCallback)(() => {
|
|
81
|
+
setOpenByDefault(true);
|
|
82
|
+
}, []);
|
|
83
|
+
const resetDefaultOpen = (0, import_react.useCallback)(() => {
|
|
84
|
+
setOpenByDefault(false);
|
|
85
|
+
}, []);
|
|
86
|
+
return /* @__PURE__ */ React2.createElement(PopupStateContext.Provider, { value: { openByDefault, triggerDefaultOpen, resetDefaultOpen } }, children);
|
|
87
|
+
};
|
|
88
|
+
var usePopupStateContext = () => {
|
|
89
|
+
const context = (0, import_react.useContext)(PopupStateContext);
|
|
90
|
+
if (!context) {
|
|
91
|
+
throw new Error("usePopupStateContext must be used within PopupStateProvider");
|
|
92
|
+
}
|
|
93
|
+
return context;
|
|
94
|
+
};
|
|
95
|
+
|
|
96
|
+
// src/utils/get-interactions-config.ts
|
|
97
|
+
var DEFAULT_CONFIG = {
|
|
98
|
+
constants: {
|
|
99
|
+
defaultDuration: 300,
|
|
100
|
+
defaultDelay: 0,
|
|
101
|
+
slideDistance: 100,
|
|
102
|
+
scaleStart: 0.5,
|
|
103
|
+
easing: "linear"
|
|
104
|
+
},
|
|
105
|
+
animationOptions: []
|
|
106
|
+
};
|
|
107
|
+
function getInteractionsConfig() {
|
|
108
|
+
return window.ElementorInteractionsConfig || DEFAULT_CONFIG;
|
|
109
|
+
}
|
|
110
|
+
|
|
111
|
+
// src/utils/format-interaction-label.ts
|
|
112
|
+
function formatInteractionLabel(animationId) {
|
|
113
|
+
if (!animationId) {
|
|
114
|
+
return "";
|
|
115
|
+
}
|
|
116
|
+
const [trigger, effect, type, direction, duration, delay] = animationId.split("-");
|
|
117
|
+
const baseValue = `${trigger}-${effect}-${type}-${direction || ""}`;
|
|
118
|
+
const animationOptions = getInteractionsConfig()?.animationOptions;
|
|
119
|
+
const option = animationOptions.find((opt) => opt.value === baseValue);
|
|
120
|
+
let label = option?.label || animationId;
|
|
121
|
+
if (duration || delay) {
|
|
122
|
+
const constants = getInteractionsConfig()?.constants;
|
|
123
|
+
const durationValue = duration || String(constants.defaultDuration);
|
|
124
|
+
const delayValue = delay || String(constants.defaultDelay);
|
|
125
|
+
label += ` (${durationValue}ms`;
|
|
126
|
+
if (delayValue !== "0") {
|
|
127
|
+
label += `, ${delayValue}ms delay`;
|
|
128
|
+
}
|
|
129
|
+
label += ")";
|
|
130
|
+
}
|
|
131
|
+
return label;
|
|
132
|
+
}
|
|
133
|
+
|
|
134
|
+
// src/components/header.tsx
|
|
135
|
+
var React3 = __toESM(require("react"));
|
|
136
|
+
var import_icons2 = require("@elementor/icons");
|
|
137
|
+
var import_ui2 = require("@elementor/ui");
|
|
138
|
+
var Header = ({ label }) => {
|
|
139
|
+
return /* @__PURE__ */ React3.createElement(
|
|
140
|
+
import_ui2.Stack,
|
|
141
|
+
{
|
|
142
|
+
direction: "row",
|
|
143
|
+
alignItems: "center",
|
|
144
|
+
justifyContent: "space-between",
|
|
145
|
+
gap: 1,
|
|
146
|
+
sx: { marginInlineEnd: -0.75, py: 0.25 }
|
|
147
|
+
},
|
|
148
|
+
/* @__PURE__ */ React3.createElement(import_ui2.Typography, { component: "label", variant: "caption", color: "text.secondary", sx: { lineHeight: 1 } }, label),
|
|
149
|
+
/* @__PURE__ */ React3.createElement(import_ui2.IconButton, { size: "tiny", disabled: true }, /* @__PURE__ */ React3.createElement(import_icons2.PlusIcon, { fontSize: "tiny" }))
|
|
150
|
+
);
|
|
151
|
+
};
|
|
152
|
+
|
|
153
|
+
// src/components/interaction-details.tsx
|
|
154
|
+
var React9 = __toESM(require("react"));
|
|
155
|
+
var import_react2 = require("react");
|
|
156
|
+
var import_ui8 = require("@elementor/ui");
|
|
157
|
+
var import_i18n7 = require("@wordpress/i18n");
|
|
158
|
+
|
|
159
|
+
// src/components/controls/direction.tsx
|
|
160
|
+
var React4 = __toESM(require("react"));
|
|
161
|
+
var import_icons3 = require("@elementor/icons");
|
|
162
|
+
var import_ui3 = require("@elementor/ui");
|
|
163
|
+
var import_i18n2 = require("@wordpress/i18n");
|
|
164
|
+
function Direction({ value, onChange }) {
|
|
165
|
+
const availableDirections = [
|
|
166
|
+
{ key: "top", label: (0, import_i18n2.__)("Up", "elementor"), icon: /* @__PURE__ */ React4.createElement(import_icons3.ArrowUpSmallIcon, { fontSize: "tiny" }) },
|
|
167
|
+
{ key: "bottom", label: (0, import_i18n2.__)("Down", "elementor"), icon: /* @__PURE__ */ React4.createElement(import_icons3.ArrowDownSmallIcon, { fontSize: "tiny" }) },
|
|
168
|
+
{ key: "left", label: (0, import_i18n2.__)("Left", "elementor"), icon: /* @__PURE__ */ React4.createElement(import_icons3.ArrowLeftIcon, { fontSize: "tiny" }) },
|
|
169
|
+
{ key: "right", label: (0, import_i18n2.__)("Right", "elementor"), icon: /* @__PURE__ */ React4.createElement(import_icons3.ArrowRightIcon, { fontSize: "tiny" }) }
|
|
170
|
+
];
|
|
171
|
+
return /* @__PURE__ */ React4.createElement(React4.Fragment, null, /* @__PURE__ */ React4.createElement(import_ui3.Grid, { item: true, xs: 12, md: 6 }, /* @__PURE__ */ React4.createElement(import_ui3.Typography, { variant: "caption", color: "text.secondary" }, (0, import_i18n2.__)("Direction", "elementor"))), /* @__PURE__ */ React4.createElement(import_ui3.Grid, { item: true, xs: 12, md: 6 }, /* @__PURE__ */ React4.createElement(
|
|
172
|
+
import_ui3.ToggleButtonGroup,
|
|
173
|
+
{
|
|
174
|
+
size: "tiny",
|
|
175
|
+
exclusive: true,
|
|
176
|
+
onChange: (event, newValue) => onChange(newValue),
|
|
177
|
+
value
|
|
178
|
+
},
|
|
179
|
+
availableDirections.map((direction) => {
|
|
180
|
+
return /* @__PURE__ */ React4.createElement(import_ui3.Tooltip, { key: direction.key, title: direction.label, placement: "top" }, /* @__PURE__ */ React4.createElement(import_ui3.ToggleButton, { key: direction.key, value: direction.key }, direction.icon));
|
|
181
|
+
})
|
|
182
|
+
)));
|
|
183
|
+
}
|
|
184
|
+
|
|
185
|
+
// src/components/controls/effect.tsx
|
|
186
|
+
var React5 = __toESM(require("react"));
|
|
187
|
+
var import_editor_ui = require("@elementor/editor-ui");
|
|
188
|
+
var import_ui4 = require("@elementor/ui");
|
|
189
|
+
var import_i18n3 = require("@wordpress/i18n");
|
|
190
|
+
function Effect({ value, onChange }) {
|
|
191
|
+
const availableEffects = [
|
|
192
|
+
{ key: "fade", label: (0, import_i18n3.__)("Fade", "elementor") },
|
|
193
|
+
{ key: "slide", label: (0, import_i18n3.__)("Slide", "elementor") },
|
|
194
|
+
{ key: "scale", label: (0, import_i18n3.__)("Scale", "elementor") }
|
|
195
|
+
];
|
|
196
|
+
return /* @__PURE__ */ React5.createElement(React5.Fragment, null, /* @__PURE__ */ React5.createElement(import_ui4.Grid, { item: true, xs: 12, md: 6 }, /* @__PURE__ */ React5.createElement(import_ui4.Typography, { variant: "caption", color: "text.secondary" }, (0, import_i18n3.__)("Effect", "elementor"))), /* @__PURE__ */ React5.createElement(import_ui4.Grid, { item: true, xs: 12, md: 6 }, /* @__PURE__ */ React5.createElement(
|
|
197
|
+
import_ui4.Select,
|
|
198
|
+
{
|
|
199
|
+
fullWidth: true,
|
|
200
|
+
displayEmpty: true,
|
|
201
|
+
size: "tiny",
|
|
202
|
+
value,
|
|
203
|
+
onChange: (event) => onChange(event.target.value)
|
|
204
|
+
},
|
|
205
|
+
availableEffects.map((effect) => {
|
|
206
|
+
return /* @__PURE__ */ React5.createElement(import_editor_ui.MenuListItem, { key: effect.key, value: effect.key }, effect.label);
|
|
207
|
+
})
|
|
208
|
+
)));
|
|
209
|
+
}
|
|
210
|
+
|
|
211
|
+
// src/components/controls/effect-type.tsx
|
|
212
|
+
var React6 = __toESM(require("react"));
|
|
213
|
+
var import_ui5 = require("@elementor/ui");
|
|
214
|
+
var import_i18n4 = require("@wordpress/i18n");
|
|
215
|
+
function EffectType({ value, onChange }) {
|
|
216
|
+
const availableEffectTypes = [
|
|
217
|
+
{ key: "in", label: (0, import_i18n4.__)("In", "elementor") },
|
|
218
|
+
{ key: "out", label: (0, import_i18n4.__)("Out", "elementor") }
|
|
219
|
+
];
|
|
220
|
+
return /* @__PURE__ */ React6.createElement(React6.Fragment, null, /* @__PURE__ */ React6.createElement(import_ui5.Grid, { item: true, xs: 12, md: 6 }, /* @__PURE__ */ React6.createElement(import_ui5.Typography, { variant: "caption", color: "text.secondary" }, (0, import_i18n4.__)("Type", "elementor"))), /* @__PURE__ */ React6.createElement(import_ui5.Grid, { item: true, xs: 12, md: 6 }, /* @__PURE__ */ React6.createElement(
|
|
221
|
+
import_ui5.ToggleButtonGroup,
|
|
222
|
+
{
|
|
223
|
+
size: "tiny",
|
|
224
|
+
exclusive: true,
|
|
225
|
+
onChange: (event, newValue) => onChange(newValue),
|
|
226
|
+
value
|
|
227
|
+
},
|
|
228
|
+
availableEffectTypes.map((effectType) => {
|
|
229
|
+
return /* @__PURE__ */ React6.createElement(import_ui5.Tooltip, { key: effectType.key, title: effectType.label, placement: "top" }, /* @__PURE__ */ React6.createElement(import_ui5.ToggleButton, { key: effectType.key, value: effectType.key }, effectType.label));
|
|
230
|
+
})
|
|
231
|
+
)));
|
|
232
|
+
}
|
|
233
|
+
|
|
234
|
+
// src/components/controls/time-frame-indicator.tsx
|
|
235
|
+
var React7 = __toESM(require("react"));
|
|
236
|
+
var import_editor_ui2 = require("@elementor/editor-ui");
|
|
237
|
+
var import_ui6 = require("@elementor/ui");
|
|
238
|
+
var import_i18n5 = require("@wordpress/i18n");
|
|
239
|
+
function TimeFrameIndicator({ value, onChange, label }) {
|
|
240
|
+
const availableTimeFrames = ["0", "100", "200", "300", "400", "500", "750", "1000", "1250", "1500"].map(
|
|
241
|
+
(key) => ({
|
|
242
|
+
key,
|
|
243
|
+
// translators: %s: time in milliseconds
|
|
244
|
+
label: (0, import_i18n5.__)("%s MS", "elementor").replace("%s", key)
|
|
245
|
+
})
|
|
246
|
+
);
|
|
247
|
+
return /* @__PURE__ */ React7.createElement(React7.Fragment, null, /* @__PURE__ */ React7.createElement(import_ui6.Grid, { item: true, xs: 12, md: 6 }, /* @__PURE__ */ React7.createElement(import_ui6.Typography, { variant: "caption", color: "text.secondary" }, label)), /* @__PURE__ */ React7.createElement(import_ui6.Grid, { item: true, xs: 12, md: 6 }, /* @__PURE__ */ React7.createElement(
|
|
248
|
+
import_ui6.Select,
|
|
249
|
+
{
|
|
250
|
+
fullWidth: true,
|
|
251
|
+
displayEmpty: true,
|
|
252
|
+
size: "tiny",
|
|
253
|
+
value,
|
|
254
|
+
onChange: (event) => onChange(event.target.value)
|
|
255
|
+
},
|
|
256
|
+
availableTimeFrames.map((timeFrame) => {
|
|
257
|
+
return /* @__PURE__ */ React7.createElement(import_editor_ui2.MenuListItem, { key: timeFrame.key, value: timeFrame.key }, timeFrame.label);
|
|
258
|
+
})
|
|
259
|
+
)));
|
|
260
|
+
}
|
|
261
|
+
|
|
262
|
+
// src/components/controls/trigger.tsx
|
|
263
|
+
var React8 = __toESM(require("react"));
|
|
264
|
+
var import_editor_ui3 = require("@elementor/editor-ui");
|
|
265
|
+
var import_ui7 = require("@elementor/ui");
|
|
266
|
+
var import_i18n6 = require("@wordpress/i18n");
|
|
267
|
+
function Trigger({ value, onChange }) {
|
|
268
|
+
const availableTriggers = Object.entries({
|
|
269
|
+
load: (0, import_i18n6.__)("Page load", "elementor"),
|
|
270
|
+
scrollIn: (0, import_i18n6.__)("Scroll into view", "elementor"),
|
|
271
|
+
scrollOut: (0, import_i18n6.__)("Scroll out of view", "elementor")
|
|
272
|
+
}).map(([key, label]) => ({
|
|
273
|
+
key,
|
|
274
|
+
label
|
|
275
|
+
}));
|
|
276
|
+
return /* @__PURE__ */ React8.createElement(React8.Fragment, null, /* @__PURE__ */ React8.createElement(import_ui7.Grid, { item: true, xs: 12, md: 6 }, /* @__PURE__ */ React8.createElement(import_ui7.Typography, { variant: "caption", color: "text.secondary" }, (0, import_i18n6.__)("Trigger", "elementor"))), /* @__PURE__ */ React8.createElement(import_ui7.Grid, { item: true, xs: 12, md: 6 }, /* @__PURE__ */ React8.createElement(
|
|
277
|
+
import_ui7.Select,
|
|
278
|
+
{
|
|
279
|
+
fullWidth: true,
|
|
280
|
+
displayEmpty: true,
|
|
281
|
+
size: "tiny",
|
|
282
|
+
onChange: (event) => onChange(event.target.value),
|
|
283
|
+
value
|
|
284
|
+
},
|
|
285
|
+
availableTriggers.map((trigger) => {
|
|
286
|
+
return /* @__PURE__ */ React8.createElement(import_editor_ui3.MenuListItem, { key: trigger.key, value: trigger.key }, trigger.label);
|
|
287
|
+
})
|
|
288
|
+
)));
|
|
289
|
+
}
|
|
290
|
+
|
|
291
|
+
// src/components/interaction-details.tsx
|
|
292
|
+
var DELIMITER = "-";
|
|
293
|
+
var InteractionDetails = ({ interaction, onChange }) => {
|
|
294
|
+
const [interactionDetails, setInteractionDetails] = (0, import_react2.useState)(() => {
|
|
295
|
+
const [trigger, effect, type, direction, duration, delay] = interaction.split(DELIMITER);
|
|
296
|
+
return {
|
|
297
|
+
trigger: trigger || "load",
|
|
298
|
+
effect: effect || "fade",
|
|
299
|
+
type: type || "in",
|
|
300
|
+
direction: direction || "",
|
|
301
|
+
duration: duration || "300",
|
|
302
|
+
delay: delay || "0"
|
|
303
|
+
};
|
|
304
|
+
});
|
|
305
|
+
(0, import_react2.useEffect)(() => {
|
|
306
|
+
const newValue = Object.values(interactionDetails).join(DELIMITER);
|
|
307
|
+
onChange(newValue);
|
|
308
|
+
}, [interactionDetails, onChange]);
|
|
309
|
+
const handleChange = (key, value) => {
|
|
310
|
+
setInteractionDetails((prev) => ({ ...prev, [key]: value }));
|
|
311
|
+
};
|
|
312
|
+
return /* @__PURE__ */ React9.createElement(React9.Fragment, null, /* @__PURE__ */ React9.createElement(import_ui8.Grid, { container: true, spacing: 2, sx: { width: "300px", p: 1 } }, /* @__PURE__ */ React9.createElement(Trigger, { value: interactionDetails.trigger, onChange: (v) => handleChange("trigger", v) })), /* @__PURE__ */ React9.createElement(import_ui8.Divider, null), /* @__PURE__ */ React9.createElement(import_ui8.Grid, { container: true, spacing: 2, sx: { width: "300px", p: 1 } }, /* @__PURE__ */ React9.createElement(Effect, { value: interactionDetails.effect, onChange: (v) => handleChange("effect", v) }), /* @__PURE__ */ React9.createElement(EffectType, { value: interactionDetails.type, onChange: (v) => handleChange("type", v) }), /* @__PURE__ */ React9.createElement(
|
|
313
|
+
Direction,
|
|
314
|
+
{
|
|
315
|
+
value: interactionDetails.direction ?? "",
|
|
316
|
+
onChange: (v) => handleChange("direction", v)
|
|
317
|
+
}
|
|
318
|
+
), /* @__PURE__ */ React9.createElement(
|
|
319
|
+
TimeFrameIndicator,
|
|
320
|
+
{
|
|
321
|
+
value: interactionDetails.duration,
|
|
322
|
+
onChange: (v) => handleChange("duration", v),
|
|
323
|
+
label: (0, import_i18n7.__)("Duration", "elementor")
|
|
324
|
+
}
|
|
325
|
+
), /* @__PURE__ */ React9.createElement(
|
|
326
|
+
TimeFrameIndicator,
|
|
327
|
+
{
|
|
328
|
+
value: interactionDetails.delay,
|
|
329
|
+
onChange: (v) => handleChange("delay", v),
|
|
330
|
+
label: (0, import_i18n7.__)("Delay", "elementor")
|
|
331
|
+
}
|
|
332
|
+
)));
|
|
333
|
+
};
|
|
334
|
+
|
|
335
|
+
// src/components/interactions-list.tsx
|
|
336
|
+
var PredefinedInteractionsList = ({
|
|
337
|
+
onSelectInteraction,
|
|
338
|
+
selectedInteraction,
|
|
339
|
+
onDelete
|
|
340
|
+
}) => {
|
|
341
|
+
return /* @__PURE__ */ React10.createElement(import_ui9.Stack, { sx: { m: 1, p: 1.5 }, gap: 2 }, /* @__PURE__ */ React10.createElement(Header, { label: (0, import_i18n8.__)("Interactions", "elementor") }), /* @__PURE__ */ React10.createElement(
|
|
342
|
+
InteractionsList,
|
|
343
|
+
{
|
|
344
|
+
onDelete: () => onDelete?.(),
|
|
345
|
+
selectedInteraction,
|
|
346
|
+
onSelectInteraction
|
|
347
|
+
}
|
|
348
|
+
));
|
|
349
|
+
};
|
|
350
|
+
function InteractionsList({ onSelectInteraction, selectedInteraction, defaultStateRef }) {
|
|
351
|
+
const [interactionId, setInteractionId] = (0, import_react3.useState)(selectedInteraction);
|
|
352
|
+
const anchorEl = (0, import_react3.useRef)(null);
|
|
353
|
+
const popupId = (0, import_react3.useId)();
|
|
354
|
+
const popupState = (0, import_ui9.usePopupState)({
|
|
355
|
+
variant: "popover",
|
|
356
|
+
popupId: `elementor-interactions-list-${popupId}`
|
|
357
|
+
});
|
|
358
|
+
const { openByDefault, resetDefaultOpen } = usePopupStateContext();
|
|
359
|
+
(0, import_react3.useEffect)(() => {
|
|
360
|
+
if (interactionId) {
|
|
361
|
+
onSelectInteraction(interactionId);
|
|
362
|
+
}
|
|
363
|
+
}, [interactionId, onSelectInteraction]);
|
|
364
|
+
(0, import_react3.useEffect)(() => {
|
|
365
|
+
if (openByDefault && anchorEl.current) {
|
|
366
|
+
popupState.open();
|
|
367
|
+
resetDefaultOpen();
|
|
368
|
+
}
|
|
369
|
+
}, [defaultStateRef, openByDefault, popupState, resetDefaultOpen]);
|
|
370
|
+
const displayLabel = (0, import_react3.useMemo)(() => {
|
|
371
|
+
return formatInteractionLabel(interactionId);
|
|
372
|
+
}, [interactionId]);
|
|
373
|
+
return /* @__PURE__ */ React10.createElement(import_ui9.Stack, { gap: 1.5, ref: anchorEl }, /* @__PURE__ */ React10.createElement(
|
|
374
|
+
import_ui9.UnstableTag,
|
|
375
|
+
{
|
|
376
|
+
...(0, import_ui9.bindTrigger)(popupState),
|
|
377
|
+
fullWidth: true,
|
|
378
|
+
variant: "outlined",
|
|
379
|
+
label: displayLabel,
|
|
380
|
+
showActionsOnHover: true,
|
|
381
|
+
actions: /* @__PURE__ */ React10.createElement(React10.Fragment, null, /* @__PURE__ */ React10.createElement(import_ui9.IconButton, { size: "tiny", disabled: true }, /* @__PURE__ */ React10.createElement(import_icons4.EyeIcon, { fontSize: "tiny" })), /* @__PURE__ */ React10.createElement(import_ui9.IconButton, { size: "tiny" }, /* @__PURE__ */ React10.createElement(import_icons4.XIcon, { fontSize: "tiny" })))
|
|
382
|
+
}
|
|
383
|
+
), /* @__PURE__ */ React10.createElement(
|
|
384
|
+
import_ui9.Popover,
|
|
385
|
+
{
|
|
386
|
+
...(0, import_ui9.bindPopover)(popupState),
|
|
387
|
+
disableScrollLock: true,
|
|
388
|
+
anchorEl: anchorEl.current,
|
|
389
|
+
anchorOrigin: { vertical: "bottom", horizontal: "left" },
|
|
390
|
+
transformOrigin: { vertical: "top", horizontal: "left" },
|
|
391
|
+
PaperProps: {
|
|
392
|
+
sx: { my: 1 }
|
|
393
|
+
},
|
|
394
|
+
onClose: () => {
|
|
395
|
+
popupState.close();
|
|
396
|
+
}
|
|
397
|
+
},
|
|
398
|
+
/* @__PURE__ */ React10.createElement(
|
|
399
|
+
InteractionDetails,
|
|
400
|
+
{
|
|
401
|
+
interaction: selectedInteraction,
|
|
402
|
+
onChange: (newValue) => {
|
|
403
|
+
setInteractionId(newValue);
|
|
404
|
+
}
|
|
405
|
+
}
|
|
406
|
+
)
|
|
407
|
+
));
|
|
408
|
+
}
|
|
409
|
+
// Annotate the CommonJS export names for ESM import in node:
|
|
410
|
+
0 && (module.exports = {
|
|
411
|
+
EmptyState,
|
|
412
|
+
PopupStateProvider,
|
|
413
|
+
PredefinedInteractionsList,
|
|
414
|
+
getInteractionsConfig,
|
|
415
|
+
usePopupStateContext
|
|
416
|
+
});
|
|
417
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../src/index.ts","../src/components/empty-state.tsx","../src/components/interactions-list.tsx","../src/contexts/popup-state-contex.tsx","../src/utils/get-interactions-config.ts","../src/utils/format-interaction-label.ts","../src/components/header.tsx","../src/components/interaction-details.tsx","../src/components/controls/direction.tsx","../src/components/controls/effect.tsx","../src/components/controls/effect-type.tsx","../src/components/controls/time-frame-indicator.tsx","../src/components/controls/trigger.tsx"],"sourcesContent":["export * from './components/empty-state';\nexport * from './components/interactions-list';\nexport * from './types';\nexport * from './utils/get-interactions-config';\nexport * from './contexts/popup-state-contex';\n","import * as React from 'react';\nimport { SwipeIcon } from '@elementor/icons';\nimport { Button, Stack, Typography } from '@elementor/ui';\nimport { __ } from '@wordpress/i18n';\n\nexport const EmptyState = ( { onCreateInteraction }: { onCreateInteraction: () => void } ) => {\n\treturn (\n\t\t<Stack\n\t\t\talignItems=\"center\"\n\t\t\tjustifyContent=\"center\"\n\t\t\theight=\"100%\"\n\t\t\tcolor=\"text.secondary\"\n\t\t\tsx={ { p: 2.5, pt: 8, pb: 5.5 } }\n\t\t\tgap={ 1.5 }\n\t\t>\n\t\t\t<SwipeIcon fontSize=\"large\" />\n\n\t\t\t<Typography align=\"center\" variant=\"subtitle2\">\n\t\t\t\t{ __( 'Animate elements with Interactions', 'elementor' ) }\n\t\t\t</Typography>\n\n\t\t\t<Typography align=\"center\" variant=\"caption\" maxWidth=\"170px\">\n\t\t\t\t{ __(\n\t\t\t\t\t'Add entrance animations and effects triggered by user interactions such as click, hover, or scroll.',\n\t\t\t\t\t'elementor'\n\t\t\t\t) }\n\t\t\t</Typography>\n\n\t\t\t<Button variant=\"outlined\" color=\"secondary\" size=\"small\" sx={ { mt: 1 } } onClick={ onCreateInteraction }>\n\t\t\t\t{ __( 'Create an interaction', 'elementor' ) }\n\t\t\t</Button>\n\t\t</Stack>\n\t);\n};\n","import * as React from 'react';\nimport { useEffect, useId, useMemo, useRef, useState } from 'react';\nimport { EyeIcon, XIcon } from '@elementor/icons';\nimport { bindPopover, bindTrigger, IconButton, Popover, Stack, UnstableTag, usePopupState } from '@elementor/ui';\nimport { __ } from '@wordpress/i18n';\n\nimport { usePopupStateContext } from '../contexts/popup-state-contex';\nimport { formatInteractionLabel } from '../utils/format-interaction-label';\nimport { Header } from './header';\nimport { InteractionDetails } from './interaction-details';\n\ntype PredefinedInteractionsListProps = {\n\tonSelectInteraction: ( interaction: string ) => void;\n\tselectedInteraction: string;\n\tonDelete?: () => void;\n};\n\nexport const PredefinedInteractionsList = ( {\n\tonSelectInteraction,\n\tselectedInteraction,\n\tonDelete,\n}: PredefinedInteractionsListProps ) => {\n\treturn (\n\t\t<Stack sx={ { m: 1, p: 1.5 } } gap={ 2 }>\n\t\t\t<Header label={ __( 'Interactions', 'elementor' ) } />\n\t\t\t<InteractionsList\n\t\t\t\tonDelete={ () => onDelete?.() }\n\t\t\t\tselectedInteraction={ selectedInteraction }\n\t\t\t\tonSelectInteraction={ onSelectInteraction }\n\t\t\t/>\n\t\t</Stack>\n\t);\n};\n\ntype InteractionListProps = {\n\tonDelete: () => void;\n\tonSelectInteraction: ( interaction: string ) => void;\n\tselectedInteraction: string;\n\tdefaultStateRef?: React.MutableRefObject< boolean | undefined >;\n};\n\nfunction InteractionsList( { onSelectInteraction, selectedInteraction, defaultStateRef }: InteractionListProps ) {\n\tconst [ interactionId, setInteractionId ] = useState( selectedInteraction );\n\n\tconst anchorEl = useRef< HTMLDivElement | null >( null );\n\n\tconst popupId = useId();\n\tconst popupState = usePopupState( {\n\t\tvariant: 'popover',\n\t\tpopupId: `elementor-interactions-list-${ popupId }`,\n\t} );\n\n\tconst { openByDefault, resetDefaultOpen } = usePopupStateContext();\n\n\tuseEffect( () => {\n\t\tif ( interactionId ) {\n\t\t\tonSelectInteraction( interactionId );\n\t\t}\n\t}, [ interactionId, onSelectInteraction ] );\n\n\tuseEffect( () => {\n\t\tif ( openByDefault && anchorEl.current ) {\n\t\t\tpopupState.open();\n\t\t\tresetDefaultOpen();\n\t\t}\n\t}, [ defaultStateRef, openByDefault, popupState, resetDefaultOpen ] );\n\n\tconst displayLabel = useMemo( () => {\n\t\treturn formatInteractionLabel( interactionId );\n\t}, [ interactionId ] );\n\n\treturn (\n\t\t<Stack gap={ 1.5 } ref={ anchorEl }>\n\t\t\t<UnstableTag\n\t\t\t\t{ ...bindTrigger( popupState ) }\n\t\t\t\tfullWidth\n\t\t\t\tvariant=\"outlined\"\n\t\t\t\tlabel={ displayLabel }\n\t\t\t\tshowActionsOnHover\n\t\t\t\tactions={\n\t\t\t\t\t<>\n\t\t\t\t\t\t<IconButton size=\"tiny\" disabled>\n\t\t\t\t\t\t\t<EyeIcon fontSize=\"tiny\" />\n\t\t\t\t\t\t</IconButton>\n\t\t\t\t\t\t<IconButton size=\"tiny\">\n\t\t\t\t\t\t\t<XIcon fontSize=\"tiny\" />\n\t\t\t\t\t\t</IconButton>\n\t\t\t\t\t</>\n\t\t\t\t}\n\t\t\t/>\n\t\t\t<Popover\n\t\t\t\t{ ...bindPopover( popupState ) }\n\t\t\t\tdisableScrollLock\n\t\t\t\tanchorEl={ anchorEl.current }\n\t\t\t\tanchorOrigin={ { vertical: 'bottom', horizontal: 'left' } }\n\t\t\t\ttransformOrigin={ { vertical: 'top', horizontal: 'left' } }\n\t\t\t\tPaperProps={ {\n\t\t\t\t\tsx: { my: 1 },\n\t\t\t\t} }\n\t\t\t\tonClose={ () => {\n\t\t\t\t\tpopupState.close();\n\t\t\t\t} }\n\t\t\t>\n\t\t\t\t<InteractionDetails\n\t\t\t\t\tinteraction={ selectedInteraction }\n\t\t\t\t\tonChange={ ( newValue: string ) => {\n\t\t\t\t\t\tsetInteractionId( newValue );\n\t\t\t\t\t} }\n\t\t\t\t/>\n\t\t\t</Popover>\n\t\t</Stack>\n\t);\n}\n","import * as React from 'react';\nimport { createContext, useCallback, useContext, useState } from 'react';\n\ntype PopupStateContextType = {\n\topenByDefault: boolean;\n\ttriggerDefaultOpen: () => void;\n\tresetDefaultOpen: () => void;\n};\n\nconst PopupStateContext = createContext< PopupStateContextType | undefined >( undefined );\n\nexport const PopupStateProvider = ( { children }: { children: React.ReactNode } ) => {\n\tconst [ openByDefault, setOpenByDefault ] = useState( false );\n\n\tconst triggerDefaultOpen = useCallback( () => {\n\t\tsetOpenByDefault( true );\n\t}, [] );\n\n\tconst resetDefaultOpen = useCallback( () => {\n\t\tsetOpenByDefault( false );\n\t}, [] );\n\n\treturn (\n\t\t<PopupStateContext.Provider value={ { openByDefault, triggerDefaultOpen, resetDefaultOpen } }>\n\t\t\t{ children }\n\t\t</PopupStateContext.Provider>\n\t);\n};\n\nexport const usePopupStateContext = () => {\n\tconst context = useContext( PopupStateContext );\n\tif ( ! context ) {\n\t\tthrow new Error( 'usePopupStateContext must be used within PopupStateProvider' );\n\t}\n\treturn context;\n};\n","import { type InteractionsConfig } from '../types';\n\nconst DEFAULT_CONFIG: InteractionsConfig = {\n\tconstants: {\n\t\tdefaultDuration: 300,\n\t\tdefaultDelay: 0,\n\t\tslideDistance: 100,\n\t\tscaleStart: 0.5,\n\t\teasing: 'linear',\n\t},\n\tanimationOptions: [],\n};\n\nexport function getInteractionsConfig(): InteractionsConfig {\n\treturn window.ElementorInteractionsConfig || DEFAULT_CONFIG;\n}\n","import { getInteractionsConfig } from './get-interactions-config';\n\nexport function formatInteractionLabel( animationId: string ): string {\n\tif ( ! animationId ) {\n\t\treturn '';\n\t}\n\n\tconst [ trigger, effect, type, direction, duration, delay ] = animationId.split( '-' );\n\n\tconst baseValue = `${ trigger }-${ effect }-${ type }-${ direction || '' }`;\n\n\tconst animationOptions = getInteractionsConfig()?.animationOptions;\n\tconst option = animationOptions.find( ( opt ) => opt.value === baseValue );\n\n\tlet label = option?.label || animationId;\n\n\tif ( duration || delay ) {\n\t\tconst constants = getInteractionsConfig()?.constants;\n\t\tconst durationValue = duration || String( constants.defaultDuration );\n\t\tconst delayValue = delay || String( constants.defaultDelay );\n\n\t\tlabel += ` (${ durationValue }ms`;\n\n\t\tif ( delayValue !== '0' ) {\n\t\t\tlabel += `, ${ delayValue }ms delay`;\n\t\t}\n\n\t\tlabel += ')';\n\t}\n\n\treturn label;\n}\n","import * as React from 'react';\nimport { PlusIcon } from '@elementor/icons';\nimport { IconButton, Stack, Typography } from '@elementor/ui';\n\nexport const Header = ( { label }: { label: string } ) => {\n\treturn (\n\t\t<Stack\n\t\t\tdirection=\"row\"\n\t\t\talignItems=\"center\"\n\t\t\tjustifyContent=\"space-between\"\n\t\t\tgap={ 1 }\n\t\t\tsx={ { marginInlineEnd: -0.75, py: 0.25 } }\n\t\t>\n\t\t\t<Typography component=\"label\" variant=\"caption\" color=\"text.secondary\" sx={ { lineHeight: 1 } }>\n\t\t\t\t{ label }\n\t\t\t</Typography>\n\t\t\t<IconButton size=\"tiny\" disabled>\n\t\t\t\t<PlusIcon fontSize=\"tiny\" />\n\t\t\t</IconButton>\n\t\t</Stack>\n\t);\n};\n","import * as React from 'react';\nimport { useEffect, useState } from 'react';\nimport { Divider, Grid } from '@elementor/ui';\nimport { __ } from '@wordpress/i18n';\n\nimport { Direction } from './controls/direction';\nimport { Effect } from './controls/effect';\nimport { EffectType } from './controls/effect-type';\nimport { TimeFrameIndicator } from './controls/time-frame-indicator';\nimport { Trigger } from './controls/trigger';\n\nconst DELIMITER = '-';\n\ntype InteractionDetailsProps = {\n\tinteraction: string;\n\tonChange: ( interaction: string ) => void;\n};\n\nexport const InteractionDetails = ( { interaction, onChange }: InteractionDetailsProps ) => {\n\tconst [ interactionDetails, setInteractionDetails ] = useState( () => {\n\t\tconst [ trigger, effect, type, direction, duration, delay ] = interaction.split( DELIMITER );\n\n\t\treturn {\n\t\t\ttrigger: trigger || 'load',\n\t\t\teffect: effect || 'fade',\n\t\t\ttype: type || 'in',\n\t\t\tdirection: direction || '',\n\t\t\tduration: duration || '300',\n\t\t\tdelay: delay || '0',\n\t\t};\n\t} );\n\n\tuseEffect( () => {\n\t\tconst newValue = Object.values( interactionDetails ).join( DELIMITER );\n\t\tonChange( newValue );\n\t}, [ interactionDetails, onChange ] );\n\n\tconst handleChange = < K extends keyof typeof interactionDetails >(\n\t\tkey: K,\n\t\tvalue: ( typeof interactionDetails )[ K ]\n\t) => {\n\t\tsetInteractionDetails( ( prev ) => ( { ...prev, [ key ]: value } ) );\n\t};\n\n\treturn (\n\t\t<>\n\t\t\t<Grid container spacing={ 2 } sx={ { width: '300px', p: 1 } }>\n\t\t\t\t<Trigger value={ interactionDetails.trigger } onChange={ ( v ) => handleChange( 'trigger', v ) } />\n\t\t\t</Grid>\n\t\t\t<Divider />\n\t\t\t<Grid container spacing={ 2 } sx={ { width: '300px', p: 1 } }>\n\t\t\t\t<Effect value={ interactionDetails.effect } onChange={ ( v ) => handleChange( 'effect', v ) } />\n\t\t\t\t<EffectType value={ interactionDetails.type } onChange={ ( v ) => handleChange( 'type', v ) } />\n\t\t\t\t<Direction\n\t\t\t\t\tvalue={ interactionDetails.direction ?? '' }\n\t\t\t\t\tonChange={ ( v ) => handleChange( 'direction', v ) }\n\t\t\t\t/>\n\t\t\t\t<TimeFrameIndicator\n\t\t\t\t\tvalue={ interactionDetails.duration }\n\t\t\t\t\tonChange={ ( v ) => handleChange( 'duration', v ) }\n\t\t\t\t\tlabel={ __( 'Duration', 'elementor' ) }\n\t\t\t\t/>\n\t\t\t\t<TimeFrameIndicator\n\t\t\t\t\tvalue={ interactionDetails.delay }\n\t\t\t\t\tonChange={ ( v ) => handleChange( 'delay', v ) }\n\t\t\t\t\tlabel={ __( 'Delay', 'elementor' ) }\n\t\t\t\t/>\n\t\t\t</Grid>\n\t\t</>\n\t);\n};\n","import * as React from 'react';\nimport { ArrowDownSmallIcon, ArrowLeftIcon, ArrowRightIcon, ArrowUpSmallIcon } from '@elementor/icons';\nimport { Grid, ToggleButton, ToggleButtonGroup, Tooltip, Typography } from '@elementor/ui';\nimport { __ } from '@wordpress/i18n';\n\nimport { type FieldProps } from '../../types';\n\nexport function Direction( { value, onChange }: FieldProps ) {\n\tconst availableDirections = [\n\t\t{ key: 'top', label: __( 'Up', 'elementor' ), icon: <ArrowUpSmallIcon fontSize=\"tiny\" /> },\n\t\t{ key: 'bottom', label: __( 'Down', 'elementor' ), icon: <ArrowDownSmallIcon fontSize=\"tiny\" /> },\n\t\t{ key: 'left', label: __( 'Left', 'elementor' ), icon: <ArrowLeftIcon fontSize=\"tiny\" /> },\n\t\t{ key: 'right', label: __( 'Right', 'elementor' ), icon: <ArrowRightIcon fontSize=\"tiny\" /> },\n\t];\n\n\treturn (\n\t\t<>\n\t\t\t<Grid item xs={ 12 } md={ 6 }>\n\t\t\t\t<Typography variant=\"caption\" color=\"text.secondary\">\n\t\t\t\t\t{ __( 'Direction', 'elementor' ) }\n\t\t\t\t</Typography>\n\t\t\t</Grid>\n\t\t\t<Grid item xs={ 12 } md={ 6 }>\n\t\t\t\t<ToggleButtonGroup\n\t\t\t\t\tsize=\"tiny\"\n\t\t\t\t\texclusive\n\t\t\t\t\tonChange={ ( event: React.MouseEvent< HTMLElement >, newValue: string ) => onChange( newValue ) }\n\t\t\t\t\tvalue={ value }\n\t\t\t\t>\n\t\t\t\t\t{ availableDirections.map( ( direction ) => {\n\t\t\t\t\t\treturn (\n\t\t\t\t\t\t\t<Tooltip key={ direction.key } title={ direction.label } placement=\"top\">\n\t\t\t\t\t\t\t\t<ToggleButton key={ direction.key } value={ direction.key }>\n\t\t\t\t\t\t\t\t\t{ direction.icon }\n\t\t\t\t\t\t\t\t</ToggleButton>\n\t\t\t\t\t\t\t</Tooltip>\n\t\t\t\t\t\t);\n\t\t\t\t\t} ) }\n\t\t\t\t</ToggleButtonGroup>\n\t\t\t</Grid>\n\t\t</>\n\t);\n}\n","import * as React from 'react';\nimport { MenuListItem } from '@elementor/editor-ui';\nimport { Grid, Select, type SelectChangeEvent, Typography } from '@elementor/ui';\nimport { __ } from '@wordpress/i18n';\n\nimport { type FieldProps } from '../../types';\nexport function Effect( { value, onChange }: FieldProps ) {\n\tconst availableEffects = [\n\t\t{ key: 'fade', label: __( 'Fade', 'elementor' ) },\n\t\t{ key: 'slide', label: __( 'Slide', 'elementor' ) },\n\t\t{ key: 'scale', label: __( 'Scale', 'elementor' ) },\n\t];\n\n\treturn (\n\t\t<>\n\t\t\t<Grid item xs={ 12 } md={ 6 }>\n\t\t\t\t<Typography variant=\"caption\" color=\"text.secondary\">\n\t\t\t\t\t{ __( 'Effect', 'elementor' ) }\n\t\t\t\t</Typography>\n\t\t\t</Grid>\n\t\t\t<Grid item xs={ 12 } md={ 6 }>\n\t\t\t\t<Select\n\t\t\t\t\tfullWidth\n\t\t\t\t\tdisplayEmpty\n\t\t\t\t\tsize=\"tiny\"\n\t\t\t\t\tvalue={ value }\n\t\t\t\t\tonChange={ ( event: SelectChangeEvent< string > ) => onChange( event.target.value ) }\n\t\t\t\t>\n\t\t\t\t\t{ availableEffects.map( ( effect ) => {\n\t\t\t\t\t\treturn (\n\t\t\t\t\t\t\t<MenuListItem key={ effect.key } value={ effect.key }>\n\t\t\t\t\t\t\t\t{ effect.label }\n\t\t\t\t\t\t\t</MenuListItem>\n\t\t\t\t\t\t);\n\t\t\t\t\t} ) }\n\t\t\t\t</Select>\n\t\t\t</Grid>\n\t\t</>\n\t);\n}\n","import * as React from 'react';\nimport { Grid, ToggleButton, ToggleButtonGroup, Tooltip, Typography } from '@elementor/ui';\nimport { __ } from '@wordpress/i18n';\n\nimport { type FieldProps } from '../../types';\n\nexport function EffectType( { value, onChange }: FieldProps ) {\n\tconst availableEffectTypes = [\n\t\t{ key: 'in', label: __( 'In', 'elementor' ) },\n\t\t{ key: 'out', label: __( 'Out', 'elementor' ) },\n\t];\n\n\treturn (\n\t\t<>\n\t\t\t<Grid item xs={ 12 } md={ 6 }>\n\t\t\t\t<Typography variant=\"caption\" color=\"text.secondary\">\n\t\t\t\t\t{ __( 'Type', 'elementor' ) }\n\t\t\t\t</Typography>\n\t\t\t</Grid>\n\t\t\t<Grid item xs={ 12 } md={ 6 }>\n\t\t\t\t<ToggleButtonGroup\n\t\t\t\t\tsize=\"tiny\"\n\t\t\t\t\texclusive\n\t\t\t\t\tonChange={ ( event: React.MouseEvent< HTMLElement >, newValue: string ) => onChange( newValue ) }\n\t\t\t\t\tvalue={ value }\n\t\t\t\t>\n\t\t\t\t\t{ availableEffectTypes.map( ( effectType ) => {\n\t\t\t\t\t\treturn (\n\t\t\t\t\t\t\t<Tooltip key={ effectType.key } title={ effectType.label } placement=\"top\">\n\t\t\t\t\t\t\t\t<ToggleButton key={ effectType.key } value={ effectType.key }>\n\t\t\t\t\t\t\t\t\t{ effectType.label }\n\t\t\t\t\t\t\t\t</ToggleButton>\n\t\t\t\t\t\t\t</Tooltip>\n\t\t\t\t\t\t);\n\t\t\t\t\t} ) }\n\t\t\t\t</ToggleButtonGroup>\n\t\t\t</Grid>\n\t\t</>\n\t);\n}\n","import * as React from 'react';\nimport { MenuListItem } from '@elementor/editor-ui';\nimport { Grid, Select, type SelectChangeEvent, Typography } from '@elementor/ui';\nimport { __ } from '@wordpress/i18n';\n\nimport { type FieldProps } from '../../types';\n\nexport function TimeFrameIndicator( { value, onChange, label }: FieldProps ) {\n\tconst availableTimeFrames = [ '0', '100', '200', '300', '400', '500', '750', '1000', '1250', '1500' ].map(\n\t\t( key ) => ( {\n\t\t\tkey,\n\t\t\t// translators: %s: time in milliseconds\n\t\t\tlabel: __( '%s MS', 'elementor' ).replace( '%s', key ),\n\t\t} )\n\t);\n\n\treturn (\n\t\t<>\n\t\t\t<Grid item xs={ 12 } md={ 6 }>\n\t\t\t\t<Typography variant=\"caption\" color=\"text.secondary\">\n\t\t\t\t\t{ label }\n\t\t\t\t</Typography>\n\t\t\t</Grid>\n\t\t\t<Grid item xs={ 12 } md={ 6 }>\n\t\t\t\t<Select\n\t\t\t\t\tfullWidth\n\t\t\t\t\tdisplayEmpty\n\t\t\t\t\tsize=\"tiny\"\n\t\t\t\t\tvalue={ value }\n\t\t\t\t\tonChange={ ( event: SelectChangeEvent< string > ) => onChange( event.target.value ) }\n\t\t\t\t>\n\t\t\t\t\t{ availableTimeFrames.map( ( timeFrame ) => {\n\t\t\t\t\t\treturn (\n\t\t\t\t\t\t\t<MenuListItem key={ timeFrame.key } value={ timeFrame.key }>\n\t\t\t\t\t\t\t\t{ timeFrame.label }\n\t\t\t\t\t\t\t</MenuListItem>\n\t\t\t\t\t\t);\n\t\t\t\t\t} ) }\n\t\t\t\t</Select>\n\t\t\t</Grid>\n\t\t</>\n\t);\n}\n","import * as React from 'react';\nimport { MenuListItem } from '@elementor/editor-ui';\nimport { Grid, Select, type SelectChangeEvent, Typography } from '@elementor/ui';\nimport { __ } from '@wordpress/i18n';\n\nimport { type FieldProps } from '../../types';\n\nexport function Trigger( { value, onChange }: FieldProps ) {\n\tconst availableTriggers = Object.entries( {\n\t\tload: __( 'Page load', 'elementor' ),\n\t\tscrollIn: __( 'Scroll into view', 'elementor' ),\n\t\tscrollOut: __( 'Scroll out of view', 'elementor' ),\n\t} ).map( ( [ key, label ] ) => ( {\n\t\tkey,\n\t\tlabel,\n\t} ) );\n\n\treturn (\n\t\t<>\n\t\t\t<Grid item xs={ 12 } md={ 6 }>\n\t\t\t\t<Typography variant=\"caption\" color=\"text.secondary\">\n\t\t\t\t\t{ __( 'Trigger', 'elementor' ) }\n\t\t\t\t</Typography>\n\t\t\t</Grid>\n\t\t\t<Grid item xs={ 12 } md={ 6 }>\n\t\t\t\t<Select\n\t\t\t\t\tfullWidth\n\t\t\t\t\tdisplayEmpty\n\t\t\t\t\tsize=\"tiny\"\n\t\t\t\t\tonChange={ ( event: SelectChangeEvent< string > ) => onChange( event.target.value ) }\n\t\t\t\t\tvalue={ value }\n\t\t\t\t>\n\t\t\t\t\t{ availableTriggers.map( ( trigger ) => {\n\t\t\t\t\t\treturn (\n\t\t\t\t\t\t\t<MenuListItem key={ trigger.key } value={ trigger.key }>\n\t\t\t\t\t\t\t\t{ trigger.label }\n\t\t\t\t\t\t\t</MenuListItem>\n\t\t\t\t\t\t);\n\t\t\t\t\t} ) }\n\t\t\t\t</Select>\n\t\t\t</Grid>\n\t\t</>\n\t);\n}\n"],"mappings":"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","names":["React","import_react","import_icons","import_ui","import_i18n","React","React","import_icons","import_ui","React","import_react","import_ui","import_i18n","React","import_icons","import_ui","import_i18n","React","import_ui","import_i18n","React","import_ui","import_i18n","React","import_editor_ui","import_ui","import_i18n","React","import_editor_ui","import_ui","import_i18n"]}
|