@wix/editor-react-components 1.2774.0 → 1.2776.0

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.
Files changed (38) hide show
  1. package/dist/site/components/AudioPlayer/component.js +5 -4
  2. package/dist/site/components/Breadcrumbs/component.js +1 -1
  3. package/dist/site/components/Button/component.js +1 -1
  4. package/dist/site/components/Checkbox/component.js +1 -1
  5. package/dist/site/components/CheckboxGroup/component.js +1 -1
  6. package/dist/site/components/CollapsibleText/component.js +1 -1
  7. package/dist/site/components/DatePicker/component.js +622 -7
  8. package/dist/site/components/Lottie/component.js +1 -1
  9. package/dist/site/components/Menu/component.js +1 -1
  10. package/dist/site/components/RadioButtons/component.js +1 -1
  11. package/dist/site/components/Slideshow/component.js +1 -1
  12. package/dist/site/components/TextBox/component.js +1 -1
  13. package/dist/site/components/TextInput/component.js +3 -2
  14. package/dist/site/components/TextMarquee/component.js +6 -6
  15. package/dist/site/components/TimePicker/TimePicker.types.d.ts +14 -39
  16. package/dist/site/components/TimePicker/component.js +81 -547
  17. package/dist/site/components/TimePicker/component.preview.d.ts +7 -2
  18. package/dist/site/components/TimePicker/components/TimePickerField.d.ts +1 -2
  19. package/dist/site/components/TimePicker/constants.d.ts +35 -68
  20. package/dist/site/components/TimePicker/css.css +17 -169
  21. package/dist/site/components/TimePicker/hooks/useTimePickerValue.d.ts +3 -5
  22. package/dist/site/components/TimePicker/manifest.js +246 -152
  23. package/dist/site/components/TimePicker/timePickerUtils.d.ts +8 -8
  24. package/dist/site/components/chunks/Button.js +466 -1055
  25. package/dist/site/components/chunks/Button2.js +284 -471
  26. package/dist/site/components/chunks/DateField.js +51 -673
  27. package/dist/site/components/chunks/Group.js +46 -160
  28. package/dist/site/components/chunks/I18nProvider.js +1 -1
  29. package/dist/site/components/chunks/Input.js +2 -2
  30. package/dist/site/components/chunks/constants2.js +40 -70
  31. package/dist/site/components/chunks/constants27.js +1 -1
  32. package/dist/site/components/chunks/filterDOMProps.js +13 -13
  33. package/dist/site/components/chunks/useFocusable.js +70 -0
  34. package/dist/site/components/chunks/usePress.js +825 -0
  35. package/package.json +2 -2
  36. package/dist/site/components/TimePicker/hooks/useTimeConstraints.d.ts +0 -8
  37. package/dist/site/components/chunks/VisuallyHidden.js +0 -47
  38. package/dist/site/components/chunks/{RequiredIndicator.js → useValidatedField.js} +19 -19
@@ -1,1075 +1,486 @@
1
- var __typeError = (msg) => {
2
- throw TypeError(msg);
1
+ import { jsx, jsxs, Fragment } from "react/jsx-runtime";
2
+ import { forwardRef, useRef, useCallback, useState, useEffect, useMemo } from "react";
3
+ import { c as clsx } from "./clsx.js";
4
+ import { d as directionStyles } from "./direction.module.js";
5
+ import { p as presetWrapperStyles } from "./presetWrapper.module.js";
6
+ import { a as getDataAttributes, g as getQaDataAttributes } from "./dataUtils.js";
7
+ import { f as formatClassNames } from "./classNames.js";
8
+ import { I as IconAnimationTriggers } from "./Button.types.js";
9
+ import AnimatedIconWithReducedMotion from "../AnimatedIcon/component.js";
10
+ import { T as TRANSITION_DURATION, D as DesignStates, S as SEMANTIC_CLASS_NAMES, a as TestIds, C as COMPONENT_TYPE } from "./constants21.js";
11
+ import { d as activateByEnterButton, a as activateBySpaceOrEnterButton, r as removeAriaPrefix, g as getAccessibilityAttributesSpread } from "./a11y.js";
12
+ import { i as isValidLink } from "./Link.js";
13
+ import { d as defineStaticService } from "./staticService.js";
14
+ import { d as defineService } from "./index10.js";
15
+ import { E as EnvironmentDefinition } from "./index2.js";
16
+ import { useService } from "@wix/services-manager-react";
17
+ const root = "root__IB9QF";
18
+ const active = "active__lpoVO";
19
+ const label = "label__EtLji";
20
+ const hasTransitions = "hasTransitions__sv08Z";
21
+ const link = "link__0rDnC";
22
+ const icon = "icon__ZzsS5";
23
+ const button = "button__i8gkO";
24
+ const styles = {
25
+ root,
26
+ active,
27
+ label,
28
+ hasTransitions,
29
+ link,
30
+ icon,
31
+ button
3
32
  };
4
- var __accessCheck = (obj, member, msg) => member.has(obj) || __typeError("Cannot " + msg);
5
- var __privateGet = (obj, member, getter) => (__accessCheck(obj, member, "read from private field"), getter ? getter.call(obj) : member.get(obj));
6
- var __privateAdd = (obj, member, value) => member.has(obj) ? __typeError("Cannot add the same private member more than once") : member instanceof WeakSet ? member.add(obj) : member.set(obj, value);
7
- var __privateSet = (obj, member, value, setter) => (__accessCheck(obj, member, "write to private field"), setter ? setter.call(obj, value) : member.set(obj, value), value);
8
- var _shouldStopPropagation;
9
- import { a as $8e9d2fae0ecb9001$export$457c3d6518dd4c6f, f as $f39a9eba43920ace$export$86427a43e3e48ebb, c as $64fa3d84918910a7$export$29f1550f4b0d4415, d as $64fa3d84918910a7$export$4d86445c2cf5e3, e as $65484d02dcb7eb3e$export$457c3d6518dd4c6f } from "./filterDOMProps.js";
10
- import React__default, { useState, useRef, useCallback, useMemo, useEffect, useContext, createContext } from "react";
11
- import { n as $2add3ce32c6007eb$export$fedb369cb70207f1, o as $d447af545b77c9f1$export$b204af158042fbac, p as $081cb5757e08788e$export$24490316f764c430, q as $d447af545b77c9f1$export$f21a1ffae260145a, r as $48a7d519b337145d$export$4eaf04e54aa8eed6, s as $fe16bffc7a557bf0$export$7f54fc3180508a52, t as $a92dc41f639950be$export$c2b7abe5d61ec696, u as $a92dc41f639950be$export$525bc4921d56d4a, v as $23f2114a1b82827e$export$4282f70798064fe0, k as $23f2114a1b82827e$export$e58f029f0fbfdb29, w as $b5c62b033c25b96d$export$29bf1b5f2c56cf63, x as $a92dc41f639950be$export$cabe61c495ee3649, y as $1969ac565cfec8d0$export$de79e2c695e052f3, z as $b5c62b033c25b96d$export$60278871457622de, a as $bbaa08b3cd72f041$export$9d1611c77c2fe928, A as $b7115c395c64f7b5$export$4debdb1a3f0fa79e, B as $caaf0dd3060ed57c$export$95185d699e05d4d7, C as $a4e76a5424781910$export$e08e3b67e392101e, D as $2add3ce32c6007eb$export$9ac100e40613ea10, c as $d1116acdf220c2da$export$4c014de7c8940b4c, E as $0c4a58759813079a$export$4e328f61c538687f, $ as $e969f22b6713ca4a$export$ae780daf29e6d456, b as $390e54f620492c70$export$f680877a34711e37 } from "./Group.js";
12
- import { flushSync } from "react-dom";
13
- const $319e236875307eab$var$LIVEREGION_TIMEOUT_DELAY = 7e3;
14
- let $319e236875307eab$var$liveAnnouncer = null;
15
- function $319e236875307eab$export$a9b970dcc4ae71a9(message, assertiveness = "assertive", timeout = $319e236875307eab$var$LIVEREGION_TIMEOUT_DELAY) {
16
- if (!$319e236875307eab$var$liveAnnouncer) {
17
- $319e236875307eab$var$liveAnnouncer = new $319e236875307eab$var$LiveAnnouncer();
18
- if (!(typeof IS_REACT_ACT_ENVIRONMENT === "boolean" ? IS_REACT_ACT_ENVIRONMENT : typeof jest !== "undefined")) setTimeout(() => {
19
- if ($319e236875307eab$var$liveAnnouncer === null || $319e236875307eab$var$liveAnnouncer === void 0 ? void 0 : $319e236875307eab$var$liveAnnouncer.isAttached()) $319e236875307eab$var$liveAnnouncer === null || $319e236875307eab$var$liveAnnouncer === void 0 ? void 0 : $319e236875307eab$var$liveAnnouncer.announce(message, assertiveness, timeout);
20
- }, 100);
21
- else $319e236875307eab$var$liveAnnouncer.announce(message, assertiveness, timeout);
22
- } else $319e236875307eab$var$liveAnnouncer.announce(message, assertiveness, timeout);
23
- }
24
- class $319e236875307eab$var$LiveAnnouncer {
25
- isAttached() {
26
- var _this_node;
27
- return (_this_node = this.node) === null || _this_node === void 0 ? void 0 : _this_node.isConnected;
28
- }
29
- createLog(ariaLive) {
30
- let node = document.createElement("div");
31
- node.setAttribute("role", "log");
32
- node.setAttribute("aria-live", ariaLive);
33
- node.setAttribute("aria-relevant", "additions");
34
- return node;
35
- }
36
- destroy() {
37
- if (!this.node) return;
38
- document.body.removeChild(this.node);
39
- this.node = null;
40
- }
41
- announce(message, assertiveness = "assertive", timeout = $319e236875307eab$var$LIVEREGION_TIMEOUT_DELAY) {
42
- var _this_assertiveLog, _this_politeLog;
43
- if (!this.node) return;
44
- let node = document.createElement("div");
45
- if (typeof message === "object") {
46
- node.setAttribute("role", "img");
47
- node.setAttribute("aria-labelledby", message["aria-labelledby"]);
48
- } else node.textContent = message;
49
- if (assertiveness === "assertive") (_this_assertiveLog = this.assertiveLog) === null || _this_assertiveLog === void 0 ? void 0 : _this_assertiveLog.appendChild(node);
50
- else (_this_politeLog = this.politeLog) === null || _this_politeLog === void 0 ? void 0 : _this_politeLog.appendChild(node);
51
- if (message !== "") setTimeout(() => {
52
- node.remove();
53
- }, timeout);
54
- }
55
- clear(assertiveness) {
56
- if (!this.node) return;
57
- if ((!assertiveness || assertiveness === "assertive") && this.assertiveLog) this.assertiveLog.innerHTML = "";
58
- if ((!assertiveness || assertiveness === "polite") && this.politeLog) this.politeLog.innerHTML = "";
59
- }
60
- constructor() {
61
- this.node = null;
62
- this.assertiveLog = null;
63
- this.politeLog = null;
64
- if (typeof document !== "undefined") {
65
- this.node = document.createElement("div");
66
- this.node.dataset.liveAnnouncer = "true";
67
- Object.assign(this.node.style, {
68
- border: 0,
69
- clip: "rect(0 0 0 0)",
70
- clipPath: "inset(50%)",
71
- height: "1px",
72
- margin: "-1px",
73
- overflow: "hidden",
74
- padding: 0,
75
- position: "absolute",
76
- width: "1px",
77
- whiteSpace: "nowrap"
78
- });
79
- this.assertiveLog = this.createLog("assertive");
80
- this.node.appendChild(this.assertiveLog);
81
- this.politeLog = this.createLog("polite");
82
- this.node.appendChild(this.politeLog);
83
- document.body.prepend(this.node);
33
+ const AnimatedButtonIcon = forwardRef(
34
+ ({ svg, duration, className }, ref) => /* @__PURE__ */ jsx(
35
+ AnimatedIconWithReducedMotion,
36
+ {
37
+ id: "animated-icon",
38
+ duration,
39
+ svg,
40
+ className: clsx("animated-icon", styles.icon, className),
41
+ ref
84
42
  }
85
- }
86
- }
87
- let $1dfb119a85e764e5$var$formatterCache = /* @__PURE__ */ new Map();
88
- let $1dfb119a85e764e5$var$supportsSignDisplay = false;
89
- try {
90
- $1dfb119a85e764e5$var$supportsSignDisplay = new Intl.NumberFormat("de-DE", {
91
- signDisplay: "exceptZero"
92
- }).resolvedOptions().signDisplay === "exceptZero";
93
- } catch {
94
- }
95
- let $1dfb119a85e764e5$var$supportsUnit = false;
96
- try {
97
- $1dfb119a85e764e5$var$supportsUnit = new Intl.NumberFormat("de-DE", {
98
- style: "unit",
99
- unit: "degree"
100
- }).resolvedOptions().style === "unit";
101
- } catch {
102
- }
103
- const $1dfb119a85e764e5$var$UNITS = {
104
- degree: {
105
- narrow: {
106
- default: "°",
107
- "ja-JP": " 度",
108
- "zh-TW": "度",
109
- "sl-SI": " °"
110
- }
111
- }
112
- };
113
- class $1dfb119a85e764e5$export$cc77c4ff7e8673c5 {
114
- constructor(locale, options = {}) {
115
- this.numberFormatter = $1dfb119a85e764e5$var$getCachedNumberFormatter(locale, options);
116
- this.options = options;
117
- }
118
- /** Formats a number value as a string, according to the locale and options provided to the constructor. */
119
- format(value) {
43
+ )
44
+ );
45
+ function useIconAnimation(isDisabled) {
46
+ const iconAnimatedRef = useRef(null);
47
+ const onAnimationForward = useCallback(() => {
120
48
  var _a;
121
- let res = "";
122
- if (!$1dfb119a85e764e5$var$supportsSignDisplay && this.options.signDisplay != null) res = $1dfb119a85e764e5$export$711b50b3c525e0f2(this.numberFormatter, this.options.signDisplay, value);
123
- else res = this.numberFormatter.format(value);
124
- if (this.options.style === "unit" && !$1dfb119a85e764e5$var$supportsUnit) {
125
- let { unit, unitDisplay = "short", locale } = this.resolvedOptions();
126
- if (!unit) return res;
127
- let values = (_a = $1dfb119a85e764e5$var$UNITS[unit]) == null ? void 0 : _a[unitDisplay];
128
- res += values[locale] || values.default;
129
- }
130
- return res;
131
- }
132
- /** Formats a number to an array of parts such as separators, digits, punctuation, and more. */
133
- formatToParts(value) {
134
- return this.numberFormatter.formatToParts(value);
135
- }
136
- /** Formats a number range as a string. */
137
- formatRange(start, end) {
138
- if (typeof this.numberFormatter.formatRange === "function") return this.numberFormatter.formatRange(start, end);
139
- if (end < start) throw new RangeError("End date must be >= start date");
140
- return `${this.format(start)} – ${this.format(end)}`;
141
- }
142
- /** Formats a number range as an array of parts. */
143
- formatRangeToParts(start, end) {
144
- if (typeof this.numberFormatter.formatRangeToParts === "function") return this.numberFormatter.formatRangeToParts(start, end);
145
- if (end < start) throw new RangeError("End date must be >= start date");
146
- let startParts = this.numberFormatter.formatToParts(start);
147
- let endParts = this.numberFormatter.formatToParts(end);
148
- return [
149
- ...startParts.map((p) => ({
150
- ...p,
151
- source: "startRange"
152
- })),
153
- {
154
- type: "literal",
155
- value: " – ",
156
- source: "shared"
157
- },
158
- ...endParts.map((p) => ({
159
- ...p,
160
- source: "endRange"
161
- }))
162
- ];
163
- }
164
- /** Returns the resolved formatting options based on the values passed to the constructor. */
165
- resolvedOptions() {
166
- let options = this.numberFormatter.resolvedOptions();
167
- if (!$1dfb119a85e764e5$var$supportsSignDisplay && this.options.signDisplay != null) options = {
168
- ...options,
169
- signDisplay: this.options.signDisplay
170
- };
171
- if (!$1dfb119a85e764e5$var$supportsUnit && this.options.style === "unit") options = {
172
- ...options,
173
- style: "unit",
174
- unit: this.options.unit,
175
- unitDisplay: this.options.unitDisplay
176
- };
177
- return options;
178
- }
179
- }
180
- function $1dfb119a85e764e5$var$getCachedNumberFormatter(locale, options = {}) {
181
- var _a;
182
- let { numberingSystem } = options;
183
- if (numberingSystem && locale.includes("-nu-")) {
184
- if (!locale.includes("-u-")) locale += "-u-";
185
- locale += `-nu-${numberingSystem}`;
186
- }
187
- if (options.style === "unit" && !$1dfb119a85e764e5$var$supportsUnit) {
188
- let { unit, unitDisplay = "short" } = options;
189
- if (!unit) throw new Error('unit option must be provided with style: "unit"');
190
- if (!((_a = $1dfb119a85e764e5$var$UNITS[unit]) == null ? void 0 : _a[unitDisplay])) throw new Error(`Unsupported unit ${unit} with unitDisplay = ${unitDisplay}`);
191
- options = {
192
- ...options,
193
- style: "decimal"
49
+ !isDisabled && ((_a = iconAnimatedRef.current) == null ? void 0 : _a.runAnimationForward());
50
+ }, [isDisabled]);
51
+ const onAnimationBackward = useCallback(() => {
52
+ var _a;
53
+ !isDisabled && ((_a = iconAnimatedRef.current) == null ? void 0 : _a.runAnimationBackward());
54
+ }, [isDisabled]);
55
+ return { iconAnimatedRef, onAnimationForward, onAnimationBackward };
56
+ }
57
+ function useButtonInteractionState(iconAnimationTriggers, onAnimationForward, onAnimationBackward, propsOnMouseEnter, propsOnMouseLeave) {
58
+ const [active2, setActive] = useState(false);
59
+ const animationTimeoutRef = useRef(
60
+ null
61
+ );
62
+ const isForwardRef = useRef(false);
63
+ const hasHoverTrigger = iconAnimationTriggers.includes(
64
+ IconAnimationTriggers.HOVER
65
+ );
66
+ const hasClickTrigger = iconAnimationTriggers.includes(
67
+ IconAnimationTriggers.CLICK
68
+ );
69
+ useEffect(() => {
70
+ isForwardRef.current = false;
71
+ }, [hasClickTrigger, hasHoverTrigger]);
72
+ useEffect(() => {
73
+ return () => {
74
+ if (animationTimeoutRef.current) {
75
+ clearTimeout(animationTimeoutRef.current);
76
+ }
194
77
  };
195
- }
196
- let cacheKey = locale + (options ? Object.entries(options).sort((a, b) => a[0] < b[0] ? -1 : 1).join() : "");
197
- if ($1dfb119a85e764e5$var$formatterCache.has(cacheKey)) return $1dfb119a85e764e5$var$formatterCache.get(cacheKey);
198
- let numberFormatter = new Intl.NumberFormat(locale, options);
199
- $1dfb119a85e764e5$var$formatterCache.set(cacheKey, numberFormatter);
200
- return numberFormatter;
201
- }
202
- function $1dfb119a85e764e5$export$711b50b3c525e0f2(numberFormat, signDisplay, num) {
203
- if (signDisplay === "auto") return numberFormat.format(num);
204
- else if (signDisplay === "never") return numberFormat.format(Math.abs(num));
205
- else {
206
- let needsPositiveSign = false;
207
- if (signDisplay === "always") needsPositiveSign = num > 0 || Object.is(num, 0);
208
- else if (signDisplay === "exceptZero") {
209
- if (Object.is(num, -0) || Object.is(num, 0)) num = Math.abs(num);
210
- else needsPositiveSign = num > 0;
211
- }
212
- if (needsPositiveSign) {
213
- let negative = numberFormat.format(-num);
214
- let noSign = numberFormat.format(num);
215
- let minus = negative.replace(noSign, "").replace(/\u200e|\u061C/, "");
216
- if ([
217
- ...minus
218
- ].length !== 1) console.warn("@react-aria/i18n polyfill for NumberFormat signDisplay: Unsupported case");
219
- let positive = negative.replace(noSign, "!!!").replace(minus, "+").replace("!!!", noSign);
220
- return positive;
221
- } else return numberFormat.format(num);
222
- }
223
- }
224
- let $cbf007e418543821$var$state = "default";
225
- let $cbf007e418543821$var$savedUserSelect = "";
226
- let $cbf007e418543821$var$modifiedElementMap = /* @__PURE__ */ new WeakMap();
227
- function $cbf007e418543821$export$16a4697467175487(target) {
228
- if ($2add3ce32c6007eb$export$fedb369cb70207f1()) {
229
- if ($cbf007e418543821$var$state === "default") {
230
- const documentObject = $d447af545b77c9f1$export$b204af158042fbac(target);
231
- $cbf007e418543821$var$savedUserSelect = documentObject.documentElement.style.webkitUserSelect;
232
- documentObject.documentElement.style.webkitUserSelect = "none";
78
+ }, []);
79
+ const onMouseEnter = useCallback(
80
+ (event) => {
81
+ if (animationTimeoutRef.current) {
82
+ clearTimeout(animationTimeoutRef.current);
83
+ animationTimeoutRef.current = null;
84
+ }
85
+ setActive(true);
86
+ if (hasHoverTrigger) {
87
+ onAnimationForward();
88
+ }
89
+ propsOnMouseEnter == null ? void 0 : propsOnMouseEnter(event);
90
+ },
91
+ [hasHoverTrigger, onAnimationForward, propsOnMouseEnter]
92
+ );
93
+ const onMouseLeave = useCallback(
94
+ (event) => {
95
+ animationTimeoutRef.current = setTimeout(() => {
96
+ setActive(false);
97
+ }, TRANSITION_DURATION);
98
+ if (hasHoverTrigger) {
99
+ onAnimationBackward();
100
+ }
101
+ propsOnMouseLeave == null ? void 0 : propsOnMouseLeave(event);
102
+ },
103
+ [hasHoverTrigger, onAnimationBackward, propsOnMouseLeave]
104
+ );
105
+ const onIconAnimationClick = useCallback(() => {
106
+ if (!hasClickTrigger) {
107
+ return;
233
108
  }
234
- $cbf007e418543821$var$state = "disabled";
235
- } else if (target instanceof HTMLElement || target instanceof SVGElement) {
236
- let property = "userSelect" in target.style ? "userSelect" : "webkitUserSelect";
237
- $cbf007e418543821$var$modifiedElementMap.set(target, target.style[property]);
238
- target.style[property] = "none";
239
- }
240
- }
241
- function $cbf007e418543821$export$b0d6fa1ab32e3295(target) {
242
- if ($2add3ce32c6007eb$export$fedb369cb70207f1()) {
243
- if ($cbf007e418543821$var$state !== "disabled") return;
244
- $cbf007e418543821$var$state = "restoring";
245
- setTimeout(() => {
246
- $081cb5757e08788e$export$24490316f764c430(() => {
247
- if ($cbf007e418543821$var$state === "restoring") {
248
- const documentObject = $d447af545b77c9f1$export$b204af158042fbac(target);
249
- if (documentObject.documentElement.style.webkitUserSelect === "none") documentObject.documentElement.style.webkitUserSelect = $cbf007e418543821$var$savedUserSelect || "";
250
- $cbf007e418543821$var$savedUserSelect = "";
251
- $cbf007e418543821$var$state = "default";
252
- }
253
- });
254
- }, 300);
255
- } else if (target instanceof HTMLElement || target instanceof SVGElement) {
256
- if (target && $cbf007e418543821$var$modifiedElementMap.has(target)) {
257
- let targetOldUserSelect = $cbf007e418543821$var$modifiedElementMap.get(target);
258
- let property = "userSelect" in target.style ? "userSelect" : "webkitUserSelect";
259
- if (target.style[property] === "none") target.style[property] = targetOldUserSelect;
260
- if (target.getAttribute("style") === "") target.removeAttribute("style");
261
- $cbf007e418543821$var$modifiedElementMap.delete(target);
109
+ if (isForwardRef.current) {
110
+ onAnimationBackward();
111
+ } else {
112
+ onAnimationForward();
262
113
  }
263
- }
264
- }
265
- function $2b2d34ff061957fb$var$getWebpackNonce(doc) {
266
- let ownerWindow = doc == null ? void 0 : doc.defaultView;
267
- return (ownerWindow == null ? void 0 : ownerWindow.__webpack_nonce__) || globalThis["__webpack_nonce__"] || void 0;
268
- }
269
- let $2b2d34ff061957fb$var$nonceCache = /* @__PURE__ */ new WeakMap();
270
- function $2b2d34ff061957fb$export$2b85b721e524d74b(doc) {
271
- let d = doc ?? (typeof document !== "undefined" ? document : void 0);
272
- if (!d) return $2b2d34ff061957fb$var$getWebpackNonce(d);
273
- if ($2b2d34ff061957fb$var$nonceCache.has(d)) return $2b2d34ff061957fb$var$nonceCache.get(d);
274
- let meta = d.querySelector('meta[property="csp-nonce"]');
275
- let nonce = meta && meta instanceof $d447af545b77c9f1$export$f21a1ffae260145a(meta).HTMLMetaElement && (meta.nonce || meta.content) || $2b2d34ff061957fb$var$getWebpackNonce(d) || void 0;
276
- if (nonce !== void 0) $2b2d34ff061957fb$var$nonceCache.set(d, nonce);
277
- return nonce;
278
- }
279
- const $24f9a20f226ad820$export$5165eccb35aaadb5 = React__default.createContext({
280
- register: () => {
281
- }
282
- });
283
- $24f9a20f226ad820$export$5165eccb35aaadb5.displayName = "PressResponderContext";
284
- function $d27d541f9569d26d$var$usePressResponderContext(props) {
285
- let context = useContext($24f9a20f226ad820$export$5165eccb35aaadb5);
286
- if (context) {
287
- let { register, ref, ...contextProps } = context;
288
- props = $bbaa08b3cd72f041$export$9d1611c77c2fe928(contextProps, props);
289
- register();
290
- }
291
- $b7115c395c64f7b5$export$4debdb1a3f0fa79e(context, props.ref);
292
- return props;
114
+ isForwardRef.current = !isForwardRef.current;
115
+ }, [hasClickTrigger, onAnimationBackward, onAnimationForward]);
116
+ return {
117
+ active: active2,
118
+ onMouseEnter,
119
+ onMouseLeave,
120
+ onIconAnimationClick: hasClickTrigger ? onIconAnimationClick : void 0
121
+ };
293
122
  }
294
- class $d27d541f9569d26d$var$PressEvent {
295
- constructor(type, pointerType, originalEvent, state) {
296
- __privateAdd(this, _shouldStopPropagation);
297
- __privateSet(this, _shouldStopPropagation, true);
298
- let currentTarget = (state == null ? void 0 : state.target) ?? originalEvent.currentTarget;
299
- const rect = currentTarget == null ? void 0 : currentTarget.getBoundingClientRect();
300
- let x, y = 0;
301
- let clientX, clientY = null;
302
- if (originalEvent.clientX != null && originalEvent.clientY != null) {
303
- clientX = originalEvent.clientX;
304
- clientY = originalEvent.clientY;
305
- }
306
- if (rect) {
307
- if (clientX != null && clientY != null) {
308
- x = clientX - rect.left;
309
- y = clientY - rect.top;
310
- } else {
311
- x = rect.width / 2;
312
- y = rect.height / 2;
123
+ const useAnalyticsReportClicks = ({
124
+ reportBiOnClick,
125
+ onClick: propsOnClick
126
+ }) => {
127
+ return useCallback(
128
+ (event) => {
129
+ reportBiOnClick == null ? void 0 : reportBiOnClick(event);
130
+ propsOnClick == null ? void 0 : propsOnClick(event);
131
+ },
132
+ [reportBiOnClick, propsOnClick]
133
+ );
134
+ };
135
+ function useButtonEventHandlers({
136
+ isDisabled,
137
+ link: link2,
138
+ propsOnClick,
139
+ preventLinkNavigation,
140
+ reportBiOnClick,
141
+ onMouseEnter,
142
+ onMouseLeave,
143
+ onIconAnimationClick,
144
+ onDblClick,
145
+ onFocus,
146
+ onBlur
147
+ }) {
148
+ const isLink = isValidLink(link2);
149
+ const shouldPreventLinkNavigation = preventLinkNavigation && isLink;
150
+ const shouldHaveOnClick = !isDisabled && propsOnClick || shouldPreventLinkNavigation;
151
+ const onClick = useAnalyticsReportClicks({
152
+ reportBiOnClick,
153
+ onClick: shouldHaveOnClick || onIconAnimationClick ? (event) => {
154
+ onIconAnimationClick == null ? void 0 : onIconAnimationClick(event);
155
+ if (shouldHaveOnClick) {
156
+ shouldPreventLinkNavigation && event.preventDefault();
157
+ !isDisabled && (propsOnClick == null ? void 0 : propsOnClick());
313
158
  }
314
- }
315
- this.type = type;
316
- this.pointerType = pointerType;
317
- this.target = originalEvent.currentTarget;
318
- this.shiftKey = originalEvent.shiftKey;
319
- this.metaKey = originalEvent.metaKey;
320
- this.ctrlKey = originalEvent.ctrlKey;
321
- this.altKey = originalEvent.altKey;
322
- this.x = x;
323
- this.y = y;
324
- this.key = originalEvent.key;
325
- }
326
- continuePropagation() {
327
- __privateSet(this, _shouldStopPropagation, false);
328
- }
329
- get shouldStopPropagation() {
330
- return __privateGet(this, _shouldStopPropagation);
331
- }
332
- }
333
- _shouldStopPropagation = new WeakMap();
334
- const $d27d541f9569d26d$var$LINK_CLICKED = Symbol("linkClicked");
335
- const $d27d541f9569d26d$var$STYLE_ID = "react-aria-pressable-style";
336
- const $d27d541f9569d26d$var$PRESSABLE_ATTRIBUTE = "data-react-aria-pressable";
337
- function $d27d541f9569d26d$export$45712eceda6fad21(props) {
338
- let { onPress, onPressChange, onPressStart, onPressEnd, onPressUp, onClick, isDisabled, isPressed: isPressedProp, preventFocusOnPress, shouldCancelOnPointerExit, allowTextSelectionOnPress, ref: domRef, ...domProps } = $d27d541f9569d26d$var$usePressResponderContext(props);
339
- let [isPressed, setPressed] = useState(false);
340
- let ref = useRef({
341
- isPressed: false,
342
- ignoreEmulatedMouseEvents: false,
343
- didFirePressStart: false,
344
- isTriggeringEvent: false,
345
- activePointerId: null,
346
- target: null,
347
- isOverTarget: false,
348
- pointerType: null,
349
- disposables: []
159
+ } : void 0
350
160
  });
351
- let { addGlobalListener, removeAllGlobalListeners } = $48a7d519b337145d$export$4eaf04e54aa8eed6();
352
- let triggerPressStart = useCallback((originalEvent, pointerType) => {
353
- let state = ref.current;
354
- if (isDisabled || state.didFirePressStart) return false;
355
- let shouldStopPropagation = true;
356
- state.isTriggeringEvent = true;
357
- if (onPressStart) {
358
- let event = new $d27d541f9569d26d$var$PressEvent("pressstart", pointerType, originalEvent);
359
- onPressStart(event);
360
- shouldStopPropagation = event.shouldStopPropagation;
361
- }
362
- if (onPressChange) onPressChange(true);
363
- state.isTriggeringEvent = false;
364
- state.didFirePressStart = true;
365
- setPressed(true);
366
- return shouldStopPropagation;
367
- }, [
368
- isDisabled,
369
- onPressStart,
370
- onPressChange
371
- ]);
372
- let triggerPressEnd = useCallback((originalEvent, pointerType, wasPressed = true) => {
373
- let state = ref.current;
374
- if (!state.didFirePressStart) return false;
375
- state.didFirePressStart = false;
376
- state.isTriggeringEvent = true;
377
- let shouldStopPropagation = true;
378
- if (onPressEnd) {
379
- let event = new $d27d541f9569d26d$var$PressEvent("pressend", pointerType, originalEvent);
380
- onPressEnd(event);
381
- shouldStopPropagation = event.shouldStopPropagation;
382
- }
383
- if (onPressChange) onPressChange(false);
384
- setPressed(false);
385
- if (onPress && wasPressed && !isDisabled) {
386
- let event = new $d27d541f9569d26d$var$PressEvent("press", pointerType, originalEvent);
387
- onPress(event);
388
- shouldStopPropagation && (shouldStopPropagation = event.shouldStopPropagation);
389
- }
390
- state.isTriggeringEvent = false;
391
- return shouldStopPropagation;
392
- }, [
393
- isDisabled,
394
- onPressEnd,
395
- onPressChange,
396
- onPress
397
- ]);
398
- let triggerPressEndEvent = $fe16bffc7a557bf0$export$7f54fc3180508a52(triggerPressEnd);
399
- let triggerPressUp = useCallback((originalEvent, pointerType) => {
400
- let state = ref.current;
401
- if (isDisabled) return false;
402
- if (onPressUp) {
403
- state.isTriggeringEvent = true;
404
- let event = new $d27d541f9569d26d$var$PressEvent("pressup", pointerType, originalEvent);
405
- onPressUp(event);
406
- state.isTriggeringEvent = false;
407
- return event.shouldStopPropagation;
408
- }
409
- return true;
410
- }, [
411
- isDisabled,
412
- onPressUp
413
- ]);
414
- let triggerPressUpEvent = $fe16bffc7a557bf0$export$7f54fc3180508a52(triggerPressUp);
415
- let cancel = useCallback((e) => {
416
- let state = ref.current;
417
- if (state.isPressed && state.target) {
418
- if (state.didFirePressStart && state.pointerType != null) triggerPressEnd($d27d541f9569d26d$var$createEvent(state.target, e), state.pointerType, false);
419
- state.isPressed = false;
420
- state.isOverTarget = false;
421
- state.activePointerId = null;
422
- state.pointerType = null;
423
- removeAllGlobalListeners();
424
- if (!allowTextSelectionOnPress) $cbf007e418543821$export$b0d6fa1ab32e3295(state.target);
425
- for (let dispose of state.disposables) dispose();
426
- state.disposables = [];
427
- }
428
- }, [
429
- allowTextSelectionOnPress,
430
- removeAllGlobalListeners,
431
- triggerPressEnd
432
- ]);
433
- let cancelEvent = $fe16bffc7a557bf0$export$7f54fc3180508a52(cancel);
434
- let cancelOnPointerExit = useCallback((e) => {
435
- if (shouldCancelOnPointerExit) cancel(e);
436
- }, [
437
- shouldCancelOnPointerExit,
438
- cancel
439
- ]);
440
- let triggerClick = useCallback((e) => {
441
- if (isDisabled) return;
442
- onClick == null ? void 0 : onClick(e);
443
- }, [
444
- isDisabled,
445
- onClick
446
- ]);
447
- let triggerSyntheticClick = useCallback((e, target) => {
448
- if (isDisabled) return;
449
- if (onClick) {
450
- let event = new MouseEvent("click", e);
451
- $a92dc41f639950be$export$c2b7abe5d61ec696(event, target);
452
- onClick($a92dc41f639950be$export$525bc4921d56d4a(event));
453
- }
454
- }, [
455
- isDisabled,
456
- onClick
457
- ]);
458
- let pressProps = useMemo(() => {
459
- let state = ref.current;
460
- let pressProps2 = {
461
- onKeyDown(e) {
462
- var _a;
463
- if ($d27d541f9569d26d$var$isValidKeyboardEvent(e.nativeEvent, e.currentTarget) && $23f2114a1b82827e$export$4282f70798064fe0(e.currentTarget, $23f2114a1b82827e$export$e58f029f0fbfdb29(e))) {
464
- if ($d27d541f9569d26d$var$shouldPreventDefaultKeyboard($23f2114a1b82827e$export$e58f029f0fbfdb29(e), e.key)) e.preventDefault();
465
- let shouldStopPropagation = true;
466
- if (!state.isPressed && !e.repeat) {
467
- state.target = e.currentTarget;
468
- state.isPressed = true;
469
- state.pointerType = "keyboard";
470
- shouldStopPropagation = triggerPressStart(e, "keyboard");
471
- }
472
- let originalTarget = e.currentTarget;
473
- let pressUp = (e2) => {
474
- if ($d27d541f9569d26d$var$isValidKeyboardEvent(e2, originalTarget) && !e2.repeat && $23f2114a1b82827e$export$4282f70798064fe0(originalTarget, $23f2114a1b82827e$export$e58f029f0fbfdb29(e2)) && state.target)
475
- triggerPressUpEvent($d27d541f9569d26d$var$createEvent(state.target, e2), "keyboard");
476
- };
477
- addGlobalListener($d447af545b77c9f1$export$b204af158042fbac(e.currentTarget), "keyup", $a4e76a5424781910$export$e08e3b67e392101e(pressUp, onKeyUp), true);
478
- if (shouldStopPropagation) e.stopPropagation();
479
- if (e.metaKey && $2add3ce32c6007eb$export$9ac100e40613ea10()) (_a = state.metaKeyEvents) == null ? void 0 : _a.set(e.key, e.nativeEvent);
480
- } else if (e.key === "Meta") state.metaKeyEvents = /* @__PURE__ */ new Map();
481
- },
482
- onClick(e) {
483
- if (e && !$23f2114a1b82827e$export$4282f70798064fe0(e.currentTarget, $23f2114a1b82827e$export$e58f029f0fbfdb29(e))) return;
484
- if (e && e.button === 0 && !state.isTriggeringEvent && !$caaf0dd3060ed57c$export$95185d699e05d4d7.isOpening) {
485
- let shouldStopPropagation = true;
486
- if (isDisabled) e.preventDefault();
487
- if (!state.ignoreEmulatedMouseEvents && !state.isPressed && (state.pointerType === "virtual" || $b5c62b033c25b96d$export$60278871457622de(e.nativeEvent))) {
488
- let stopPressStart = triggerPressStart(e, "virtual");
489
- let stopPressUp = triggerPressUpEvent(e, "virtual");
490
- let stopPressEnd = triggerPressEndEvent(e, "virtual");
491
- triggerClick(e);
492
- shouldStopPropagation = stopPressStart && stopPressUp && stopPressEnd;
493
- } else if (state.isPressed && state.pointerType !== "keyboard") {
494
- let pointerType = state.pointerType || e.nativeEvent.pointerType || "virtual";
495
- let stopPressUp = triggerPressUpEvent($d27d541f9569d26d$var$createEvent(e.currentTarget, e), pointerType);
496
- let stopPressEnd = triggerPressEndEvent($d27d541f9569d26d$var$createEvent(e.currentTarget, e), pointerType, true);
497
- shouldStopPropagation = stopPressUp && stopPressEnd;
498
- state.isOverTarget = false;
499
- triggerClick(e);
500
- cancelEvent(e);
501
- }
502
- state.ignoreEmulatedMouseEvents = false;
503
- if (shouldStopPropagation) e.stopPropagation();
504
- }
505
- }
161
+ const eventHandlers = useMemo(
162
+ () => ({
163
+ onClick,
164
+ onMouseEnter,
165
+ onMouseLeave,
166
+ onKeyDown: isLink ? activateByEnterButton : activateBySpaceOrEnterButton,
167
+ onDoubleClick: !isDisabled && onDblClick ? onDblClick : void 0,
168
+ onFocus: !isDisabled && onFocus ? onFocus : void 0,
169
+ onBlur: !isDisabled && onBlur ? onBlur : void 0
170
+ }),
171
+ [
172
+ onClick,
173
+ onMouseEnter,
174
+ onMouseLeave,
175
+ isLink,
176
+ isDisabled,
177
+ onDblClick,
178
+ onFocus,
179
+ onBlur
180
+ ]
181
+ );
182
+ return { isLink, eventHandlers };
183
+ }
184
+ function useButtonA11y({
185
+ propsA11y,
186
+ ariaAttributes,
187
+ lang
188
+ }) {
189
+ const normalizedA11y = useMemo(() => {
190
+ const {
191
+ lang: manifestLang,
192
+ tabIndex: manifestTabindex,
193
+ ...manifestAriaAttributes
194
+ } = propsA11y ?? {};
195
+ return {
196
+ lang: manifestLang,
197
+ tabIndex: manifestTabindex,
198
+ ariaAttributes: removeAriaPrefix(manifestAriaAttributes)
506
199
  };
507
- let onKeyUp = (e) => {
508
- var _a, _b, _c;
509
- if (state.isPressed && state.target && $d27d541f9569d26d$var$isValidKeyboardEvent(e, state.target)) {
510
- if ($d27d541f9569d26d$var$shouldPreventDefaultKeyboard($23f2114a1b82827e$export$e58f029f0fbfdb29(e), e.key)) e.preventDefault();
511
- let target = $23f2114a1b82827e$export$e58f029f0fbfdb29(e);
512
- let wasPressed = $23f2114a1b82827e$export$4282f70798064fe0(state.target, target);
513
- triggerPressEndEvent($d27d541f9569d26d$var$createEvent(state.target, e), "keyboard", wasPressed);
514
- if (wasPressed) triggerSyntheticClick(e, state.target);
515
- removeAllGlobalListeners();
516
- if (e.key !== "Enter" && $d27d541f9569d26d$var$isHTMLAnchorLink(state.target) && $23f2114a1b82827e$export$4282f70798064fe0(state.target, target) && !e[$d27d541f9569d26d$var$LINK_CLICKED]) {
517
- e[$d27d541f9569d26d$var$LINK_CLICKED] = true;
518
- $caaf0dd3060ed57c$export$95185d699e05d4d7(state.target, e, false);
519
- }
520
- state.isPressed = false;
521
- (_a = state.metaKeyEvents) == null ? void 0 : _a.delete(e.key);
522
- } else if (e.key === "Meta" && ((_b = state.metaKeyEvents) == null ? void 0 : _b.size)) {
523
- let events = state.metaKeyEvents;
524
- state.metaKeyEvents = void 0;
525
- for (let event of events.values()) (_c = state.target) == null ? void 0 : _c.dispatchEvent(new KeyboardEvent("keyup", event));
200
+ }, [propsA11y]);
201
+ const a11yAttr = useMemo(
202
+ () => {
203
+ var _a;
204
+ return getAccessibilityAttributesSpread({
205
+ ariaAttributes: {
206
+ ...ariaAttributes,
207
+ ...normalizedA11y.ariaAttributes,
208
+ label: (ariaAttributes == null ? void 0 : ariaAttributes.label) ?? normalizedA11y.ariaAttributes.label
209
+ },
210
+ tabIndex: normalizedA11y.tabIndex,
211
+ lang: ((lang == null ? void 0 : lang.trim()) ?? ((_a = normalizedA11y.lang) == null ? void 0 : _a.trim())) || void 0
212
+ });
213
+ },
214
+ [normalizedA11y, ariaAttributes, lang]
215
+ );
216
+ return a11yAttr;
217
+ }
218
+ const BusinessLoggerDefinition = defineStaticService("@wix/site-service-business-logger");
219
+ const ConfigurationDefinition = defineService("@wix/site-service-configuration");
220
+ const CLICK_ANALYTICS_SRC = 76;
221
+ const CLICK_ANALYTICS_EVID = 1113;
222
+ const CLICK_ANALYTICS_ENDPOINT = "pa";
223
+ const ClickAnalyticsGroups = {
224
+ Button: "Button"
225
+ };
226
+ const buildClickAnalyticsEvent = ({
227
+ link: link2,
228
+ details,
229
+ elementId,
230
+ elementType,
231
+ elementGroup,
232
+ elementTitle,
233
+ language
234
+ }) => ({
235
+ src: CLICK_ANALYTICS_SRC,
236
+ evid: CLICK_ANALYTICS_EVID,
237
+ bl: navigator.language,
238
+ url: window.location.href,
239
+ element_id: elementId,
240
+ elementType,
241
+ elementGroup,
242
+ elementTitle,
243
+ language,
244
+ value: link2 == null ? void 0 : link2.href,
245
+ details: details ? JSON.stringify(details) : void 0
246
+ });
247
+ const useClickAnalyticsReporter = (params) => {
248
+ var _a;
249
+ const businessLogger = useService(
250
+ BusinessLoggerDefinition
251
+ );
252
+ const environment = useService(EnvironmentDefinition);
253
+ const configuration = useService(
254
+ ConfigurationDefinition
255
+ );
256
+ const isPreview = (_a = environment == null ? void 0 : environment.getPreviewMode) == null ? void 0 : _a.call(environment);
257
+ const reportBi = businessLogger == null ? void 0 : businessLogger.reportBi;
258
+ const language = params.language ?? (environment == null ? void 0 : environment.language);
259
+ const trackClicksAnalytics = configuration == null ? void 0 : configuration.trackClicksAnalytics;
260
+ const isEnabled = !isPreview && trackClicksAnalytics && typeof reportBi === "function";
261
+ const paramsRef = useRef(params);
262
+ paramsRef.current = params;
263
+ return useMemo(() => {
264
+ if (!isEnabled) {
265
+ return void 0;
266
+ }
267
+ return (event) => {
268
+ const { elementId, ...restParams } = paramsRef.current;
269
+ try {
270
+ void Promise.resolve(
271
+ reportBi(
272
+ buildClickAnalyticsEvent({
273
+ ...restParams,
274
+ language,
275
+ elementId: elementId || event.currentTarget.id
276
+ }),
277
+ { endpoint: CLICK_ANALYTICS_ENDPOINT }
278
+ )
279
+ ).catch(() => {
280
+ });
281
+ } catch {
526
282
  }
527
283
  };
528
- if (typeof PointerEvent !== "undefined") {
529
- pressProps2.onPointerDown = (e) => {
530
- if (e.button !== 0 || !$23f2114a1b82827e$export$4282f70798064fe0(e.currentTarget, $23f2114a1b82827e$export$e58f029f0fbfdb29(e))) return;
531
- if ($b5c62b033c25b96d$export$29bf1b5f2c56cf63(e.nativeEvent)) {
532
- state.pointerType = "virtual";
533
- return;
534
- }
535
- state.pointerType = e.pointerType;
536
- let shouldStopPropagation = true;
537
- if (!state.isPressed) {
538
- state.isPressed = true;
539
- state.isOverTarget = true;
540
- state.activePointerId = e.pointerId;
541
- state.target = e.currentTarget;
542
- if (!allowTextSelectionOnPress) $cbf007e418543821$export$16a4697467175487(state.target);
543
- shouldStopPropagation = triggerPressStart(e, state.pointerType);
544
- let target = $23f2114a1b82827e$export$e58f029f0fbfdb29(e);
545
- if ("releasePointerCapture" in target) {
546
- if ("hasPointerCapture" in target) {
547
- if (target.hasPointerCapture(e.pointerId)) target.releasePointerCapture(e.pointerId);
548
- } else target.releasePointerCapture(e.pointerId);
549
- }
550
- addGlobalListener($d447af545b77c9f1$export$b204af158042fbac(e.currentTarget), "pointerup", onPointerUp, false);
551
- addGlobalListener($d447af545b77c9f1$export$b204af158042fbac(e.currentTarget), "pointercancel", onPointerCancel, false);
552
- }
553
- if (shouldStopPropagation) e.stopPropagation();
554
- };
555
- pressProps2.onMouseDown = (e) => {
556
- if (!$23f2114a1b82827e$export$4282f70798064fe0(e.currentTarget, $23f2114a1b82827e$export$e58f029f0fbfdb29(e))) return;
557
- if (e.button === 0) {
558
- if (preventFocusOnPress) {
559
- let dispose = $a92dc41f639950be$export$cabe61c495ee3649(e.target);
560
- if (dispose) state.disposables.push(dispose);
561
- }
562
- e.stopPropagation();
563
- }
564
- };
565
- pressProps2.onPointerUp = (e) => {
566
- if (!$23f2114a1b82827e$export$4282f70798064fe0(e.currentTarget, $23f2114a1b82827e$export$e58f029f0fbfdb29(e)) || state.pointerType === "virtual") return;
567
- if (e.button === 0 && !state.isPressed)
568
- triggerPressUpEvent(e, state.pointerType || e.pointerType);
569
- };
570
- pressProps2.onPointerEnter = (e) => {
571
- if (e.pointerId === state.activePointerId && state.target && !state.isOverTarget && state.pointerType != null) {
572
- state.isOverTarget = true;
573
- triggerPressStart($d27d541f9569d26d$var$createEvent(state.target, e), state.pointerType);
574
- }
575
- };
576
- pressProps2.onPointerLeave = (e) => {
577
- if (e.pointerId === state.activePointerId && state.target && state.isOverTarget && state.pointerType != null) {
578
- state.isOverTarget = false;
579
- triggerPressEndEvent($d27d541f9569d26d$var$createEvent(state.target, e), state.pointerType, false);
580
- cancelOnPointerExit(e);
581
- }
582
- };
583
- let onPointerUp = (e) => {
584
- if (e.pointerId === state.activePointerId && state.isPressed && e.button === 0 && state.target) {
585
- if ($23f2114a1b82827e$export$4282f70798064fe0(state.target, $23f2114a1b82827e$export$e58f029f0fbfdb29(e)) && state.pointerType != null) {
586
- let clicked = false;
587
- let timeout = setTimeout(() => {
588
- if (state.isPressed && state.target instanceof HTMLElement) {
589
- if (clicked)
590
- cancelEvent(e);
591
- else {
592
- $1969ac565cfec8d0$export$de79e2c695e052f3(state.target);
593
- state.target.click();
594
- }
595
- }
596
- }, 80);
597
- addGlobalListener(e.currentTarget, "click", () => clicked = true, true);
598
- state.disposables.push(() => clearTimeout(timeout));
599
- } else
600
- cancelEvent(e);
601
- state.isOverTarget = false;
602
- }
603
- };
604
- let onPointerCancel = (e) => {
605
- cancelEvent(e);
606
- };
607
- pressProps2.onDragStart = (e) => {
608
- if (!$23f2114a1b82827e$export$4282f70798064fe0(e.currentTarget, $23f2114a1b82827e$export$e58f029f0fbfdb29(e))) return;
609
- cancelEvent(e);
610
- };
611
- } else if (process.env.NODE_ENV === "test") {
612
- pressProps2.onMouseDown = (e) => {
613
- if (e.button !== 0 || !$23f2114a1b82827e$export$4282f70798064fe0(e.currentTarget, $23f2114a1b82827e$export$e58f029f0fbfdb29(e))) return;
614
- if (state.ignoreEmulatedMouseEvents) {
615
- e.stopPropagation();
616
- return;
617
- }
618
- state.isPressed = true;
619
- state.isOverTarget = true;
620
- state.target = e.currentTarget;
621
- state.pointerType = $b5c62b033c25b96d$export$60278871457622de(e.nativeEvent) ? "virtual" : "mouse";
622
- let shouldStopPropagation = flushSync(() => triggerPressStart(e, state.pointerType));
623
- if (shouldStopPropagation) e.stopPropagation();
624
- if (preventFocusOnPress) {
625
- let dispose = $a92dc41f639950be$export$cabe61c495ee3649(e.target);
626
- if (dispose) state.disposables.push(dispose);
627
- }
628
- addGlobalListener($d447af545b77c9f1$export$b204af158042fbac(e.currentTarget), "mouseup", onMouseUp, false);
629
- };
630
- pressProps2.onMouseEnter = (e) => {
631
- if (!$23f2114a1b82827e$export$4282f70798064fe0(e.currentTarget, $23f2114a1b82827e$export$e58f029f0fbfdb29(e))) return;
632
- let shouldStopPropagation = true;
633
- if (state.isPressed && !state.ignoreEmulatedMouseEvents && state.pointerType != null) {
634
- state.isOverTarget = true;
635
- shouldStopPropagation = triggerPressStart(e, state.pointerType);
636
- }
637
- if (shouldStopPropagation) e.stopPropagation();
638
- };
639
- pressProps2.onMouseLeave = (e) => {
640
- if (!$23f2114a1b82827e$export$4282f70798064fe0(e.currentTarget, $23f2114a1b82827e$export$e58f029f0fbfdb29(e))) return;
641
- let shouldStopPropagation = true;
642
- if (state.isPressed && !state.ignoreEmulatedMouseEvents && state.pointerType != null) {
643
- state.isOverTarget = false;
644
- shouldStopPropagation = triggerPressEndEvent(e, state.pointerType, false);
645
- cancelOnPointerExit(e);
646
- }
647
- if (shouldStopPropagation) e.stopPropagation();
648
- };
649
- pressProps2.onMouseUp = (e) => {
650
- if (!$23f2114a1b82827e$export$4282f70798064fe0(e.currentTarget, $23f2114a1b82827e$export$e58f029f0fbfdb29(e))) return;
651
- if (!state.ignoreEmulatedMouseEvents && e.button === 0 && !state.isPressed)
652
- triggerPressUpEvent(e, state.pointerType || "mouse");
653
- };
654
- let onMouseUp = (e) => {
655
- if (e.button !== 0) return;
656
- if (state.ignoreEmulatedMouseEvents) {
657
- state.ignoreEmulatedMouseEvents = false;
658
- return;
659
- }
660
- if (state.target && $23f2114a1b82827e$export$4282f70798064fe0(state.target, $23f2114a1b82827e$export$e58f029f0fbfdb29(e)) && state.pointerType != null) ;
661
- else
662
- cancelEvent(e);
663
- state.isOverTarget = false;
664
- };
665
- pressProps2.onTouchStart = (e) => {
666
- if (!$23f2114a1b82827e$export$4282f70798064fe0(e.currentTarget, $23f2114a1b82827e$export$e58f029f0fbfdb29(e))) return;
667
- let touch = $d27d541f9569d26d$var$getTouchFromEvent(e.nativeEvent);
668
- if (!touch) return;
669
- state.activePointerId = touch.identifier;
670
- state.ignoreEmulatedMouseEvents = true;
671
- state.isOverTarget = true;
672
- state.isPressed = true;
673
- state.target = e.currentTarget;
674
- state.pointerType = "touch";
675
- if (!allowTextSelectionOnPress) $cbf007e418543821$export$16a4697467175487(state.target);
676
- let shouldStopPropagation = triggerPressStart($d27d541f9569d26d$var$createTouchEvent(state.target, e), state.pointerType);
677
- if (shouldStopPropagation) e.stopPropagation();
678
- addGlobalListener($d447af545b77c9f1$export$f21a1ffae260145a(e.currentTarget), "scroll", onScroll, true);
679
- };
680
- pressProps2.onTouchMove = (e) => {
681
- if (!$23f2114a1b82827e$export$4282f70798064fe0(e.currentTarget, $23f2114a1b82827e$export$e58f029f0fbfdb29(e))) return;
682
- if (!state.isPressed) {
683
- e.stopPropagation();
684
- return;
685
- }
686
- let touch = $d27d541f9569d26d$var$getTouchById(e.nativeEvent, state.activePointerId);
687
- let shouldStopPropagation = true;
688
- if (touch && $d27d541f9569d26d$var$isOverTarget(touch, e.currentTarget)) {
689
- if (!state.isOverTarget && state.pointerType != null) {
690
- state.isOverTarget = true;
691
- shouldStopPropagation = triggerPressStart($d27d541f9569d26d$var$createTouchEvent(state.target, e), state.pointerType);
692
- }
693
- } else if (state.isOverTarget && state.pointerType != null) {
694
- state.isOverTarget = false;
695
- shouldStopPropagation = triggerPressEndEvent($d27d541f9569d26d$var$createTouchEvent(state.target, e), state.pointerType, false);
696
- cancelOnPointerExit($d27d541f9569d26d$var$createTouchEvent(state.target, e));
697
- }
698
- if (shouldStopPropagation) e.stopPropagation();
699
- };
700
- pressProps2.onTouchEnd = (e) => {
701
- if (!$23f2114a1b82827e$export$4282f70798064fe0(e.currentTarget, $23f2114a1b82827e$export$e58f029f0fbfdb29(e))) return;
702
- if (!state.isPressed) {
703
- e.stopPropagation();
704
- return;
705
- }
706
- let touch = $d27d541f9569d26d$var$getTouchById(e.nativeEvent, state.activePointerId);
707
- let shouldStopPropagation = true;
708
- if (touch && $d27d541f9569d26d$var$isOverTarget(touch, e.currentTarget) && state.pointerType != null) {
709
- triggerPressUpEvent($d27d541f9569d26d$var$createTouchEvent(state.target, e), state.pointerType);
710
- shouldStopPropagation = triggerPressEndEvent($d27d541f9569d26d$var$createTouchEvent(state.target, e), state.pointerType);
711
- triggerSyntheticClick(e.nativeEvent, state.target);
712
- } else if (state.isOverTarget && state.pointerType != null)
713
- shouldStopPropagation = triggerPressEndEvent($d27d541f9569d26d$var$createTouchEvent(state.target, e), state.pointerType, false);
714
- if (shouldStopPropagation) e.stopPropagation();
715
- state.isPressed = false;
716
- state.activePointerId = null;
717
- state.isOverTarget = false;
718
- state.ignoreEmulatedMouseEvents = true;
719
- if (state.target && !allowTextSelectionOnPress) $cbf007e418543821$export$b0d6fa1ab32e3295(state.target);
720
- removeAllGlobalListeners();
721
- };
722
- pressProps2.onTouchCancel = (e) => {
723
- if (!$23f2114a1b82827e$export$4282f70798064fe0(e.currentTarget, $23f2114a1b82827e$export$e58f029f0fbfdb29(e))) return;
724
- e.stopPropagation();
725
- if (state.isPressed)
726
- cancelEvent($d27d541f9569d26d$var$createTouchEvent(state.target, e));
727
- };
728
- let onScroll = (e) => {
729
- if (state.isPressed && $23f2114a1b82827e$export$4282f70798064fe0($23f2114a1b82827e$export$e58f029f0fbfdb29(e), state.target))
730
- cancelEvent({
731
- currentTarget: state.target,
732
- shiftKey: false,
733
- ctrlKey: false,
734
- metaKey: false,
735
- altKey: false
736
- });
737
- };
738
- pressProps2.onDragStart = (e) => {
739
- if (!$23f2114a1b82827e$export$4282f70798064fe0(e.currentTarget, $23f2114a1b82827e$export$e58f029f0fbfdb29(e))) return;
740
- cancelEvent(e);
741
- };
284
+ }, [isEnabled, reportBi, language]);
285
+ };
286
+ const Button = (props) => {
287
+ var _a;
288
+ const {
289
+ id,
290
+ link: link2,
291
+ type = "button",
292
+ label: label2 = "",
293
+ labelContent,
294
+ disabled: isDisabled = false,
295
+ onClick: propsOnClick,
296
+ className,
297
+ corvid,
298
+ a11y: propsA11y,
299
+ direction,
300
+ elementProps,
301
+ compPreviewState,
302
+ isQaMode,
303
+ fullNameCompType,
304
+ lang,
305
+ ariaAttributes,
306
+ onDblClick,
307
+ onFocus,
308
+ onBlur,
309
+ reportBiOnClick,
310
+ preventLinkNavigation,
311
+ onMouseEnter,
312
+ onMouseLeave,
313
+ onMouseIn,
314
+ onMouseOut,
315
+ wix,
316
+ hasTransitions: hasTransitions2 = true
317
+ } = props;
318
+ const propsOnMouseEnter = useCallback(
319
+ (event) => {
320
+ onMouseIn == null ? void 0 : onMouseIn(event);
321
+ onMouseEnter == null ? void 0 : onMouseEnter(event);
322
+ },
323
+ [onMouseIn, onMouseEnter]
324
+ );
325
+ const propsOnMouseLeave = useCallback(
326
+ (event) => {
327
+ onMouseOut == null ? void 0 : onMouseOut(event);
328
+ onMouseLeave == null ? void 0 : onMouseLeave(event);
329
+ },
330
+ [onMouseOut, onMouseLeave]
331
+ );
332
+ const presetsWrapperProps = (wix == null ? void 0 : wix.presetsWrapperProps) || {};
333
+ const animatedIconProps = elementProps == null ? void 0 : elementProps.animatedIcon;
334
+ const corvidIconAnimationTriggers = (corvid == null ? void 0 : corvid.iconAnimationTriggers) ?? [];
335
+ const defaultTrigger = (animatedIconProps == null ? void 0 : animatedIconProps.trigger) === IconAnimationTriggers.CLICK ? IconAnimationTriggers.CLICK : IconAnimationTriggers.HOVER;
336
+ const iconAnimationTriggers = corvidIconAnimationTriggers.length > 0 ? corvidIconAnimationTriggers : [defaultTrigger];
337
+ const { iconAnimatedRef, onAnimationForward, onAnimationBackward } = useIconAnimation(isDisabled);
338
+ const {
339
+ active: active2,
340
+ onMouseEnter: handleMouseEnter,
341
+ onMouseLeave: handleMouseLeave,
342
+ onIconAnimationClick
343
+ } = useButtonInteractionState(
344
+ iconAnimationTriggers,
345
+ onAnimationForward,
346
+ onAnimationBackward,
347
+ propsOnMouseEnter,
348
+ propsOnMouseLeave
349
+ );
350
+ const buttonOrLinkRef = useRef(null);
351
+ const semanticClassNames = SEMANTIC_CLASS_NAMES;
352
+ const rootClassName = clsx(
353
+ styles.root,
354
+ className,
355
+ styles.button,
356
+ "button",
357
+ !direction && directionStyles.fallbackDirection,
358
+ formatClassNames(semanticClassNames.root),
359
+ {
360
+ disabled: isDisabled,
361
+ [DesignStates.root.disabled.className]: isDisabled,
362
+ [styles.active]: active2,
363
+ [styles.hasTransitions]: hasTransitions2
742
364
  }
743
- return pressProps2;
744
- }, [
745
- addGlobalListener,
746
- isDisabled,
747
- preventFocusOnPress,
748
- removeAllGlobalListeners,
749
- allowTextSelectionOnPress,
750
- cancelOnPointerExit,
751
- triggerPressStart,
752
- triggerClick,
753
- triggerSyntheticClick
754
- ]);
755
- useEffect(() => {
756
- if (!domRef || process.env.NODE_ENV === "test") return;
757
- const ownerDocument = $d447af545b77c9f1$export$b204af158042fbac(domRef.current);
758
- if (!ownerDocument || !ownerDocument.head || ownerDocument.getElementById($d27d541f9569d26d$var$STYLE_ID)) return;
759
- const style = ownerDocument.createElement("style");
760
- style.id = $d27d541f9569d26d$var$STYLE_ID;
761
- let nonce = $2b2d34ff061957fb$export$2b85b721e524d74b(ownerDocument);
762
- if (nonce) style.nonce = nonce;
763
- style.textContent = `
764
- @layer {
765
- [${$d27d541f9569d26d$var$PRESSABLE_ATTRIBUTE}] {
766
- touch-action: pan-x pan-y pinch-zoom;
767
- }
768
- }
769
- `.trim();
770
- ownerDocument.head.prepend(style);
771
- }, [
772
- domRef
773
- ]);
774
- useEffect(() => {
775
- let state = ref.current;
776
- return () => {
777
- if (!allowTextSelectionOnPress) $cbf007e418543821$export$b0d6fa1ab32e3295(state.target ?? void 0);
778
- for (let dispose of state.disposables) dispose();
779
- state.disposables = [];
780
- };
781
- }, [
782
- allowTextSelectionOnPress
783
- ]);
784
- return {
785
- isPressed: isPressedProp || isPressed,
786
- pressProps: $bbaa08b3cd72f041$export$9d1611c77c2fe928(domProps, pressProps, {
787
- [$d27d541f9569d26d$var$PRESSABLE_ATTRIBUTE]: true
788
- })
789
- };
790
- }
791
- function $d27d541f9569d26d$var$isHTMLAnchorLink(target) {
792
- return target.tagName === "A" && target.hasAttribute("href");
793
- }
794
- function $d27d541f9569d26d$var$isValidKeyboardEvent(event, currentTarget) {
795
- const { key, code } = event;
796
- const element = currentTarget;
797
- const role = element.getAttribute("role");
798
- return (key === "Enter" || key === " " || key === "Spacebar" || code === "Space") && !(element instanceof $d447af545b77c9f1$export$f21a1ffae260145a(element).HTMLInputElement && !$d27d541f9569d26d$var$isValidInputKey(element, key) || element instanceof $d447af545b77c9f1$export$f21a1ffae260145a(element).HTMLTextAreaElement || element.isContentEditable) && // Links should only trigger with Enter key
799
- !((role === "link" || !role && $d27d541f9569d26d$var$isHTMLAnchorLink(element)) && key !== "Enter");
800
- }
801
- function $d27d541f9569d26d$var$getTouchFromEvent(event) {
802
- const { targetTouches } = event;
803
- if (targetTouches.length > 0) return targetTouches[0];
804
- return null;
805
- }
806
- function $d27d541f9569d26d$var$getTouchById(event, pointerId) {
807
- const changedTouches = event.changedTouches;
808
- for (let i = 0; i < changedTouches.length; i++) {
809
- const touch = changedTouches[i];
810
- if (touch.identifier === pointerId) return touch;
811
- }
812
- return null;
813
- }
814
- function $d27d541f9569d26d$var$createTouchEvent(target, e) {
815
- let clientX = 0;
816
- let clientY = 0;
817
- if (e.targetTouches && e.targetTouches.length === 1) {
818
- clientX = e.targetTouches[0].clientX;
819
- clientY = e.targetTouches[0].clientY;
820
- }
821
- return {
822
- currentTarget: target,
823
- shiftKey: e.shiftKey,
824
- ctrlKey: e.ctrlKey,
825
- metaKey: e.metaKey,
826
- altKey: e.altKey,
827
- clientX,
828
- clientY
829
- };
830
- }
831
- function $d27d541f9569d26d$var$createEvent(target, e) {
832
- let clientX = e.clientX;
833
- let clientY = e.clientY;
834
- return {
835
- currentTarget: target,
836
- shiftKey: e.shiftKey,
837
- ctrlKey: e.ctrlKey,
838
- metaKey: e.metaKey,
839
- altKey: e.altKey,
840
- clientX,
841
- clientY,
842
- key: e.key
843
- };
844
- }
845
- function $d27d541f9569d26d$var$getPointClientRect(point) {
846
- let offsetX = 0;
847
- let offsetY = 0;
848
- if (point.width !== void 0) offsetX = point.width / 2;
849
- else if (point.radiusX !== void 0) offsetX = point.radiusX;
850
- if (point.height !== void 0) offsetY = point.height / 2;
851
- else if (point.radiusY !== void 0) offsetY = point.radiusY;
852
- return {
853
- top: point.clientY - offsetY,
854
- right: point.clientX + offsetX,
855
- bottom: point.clientY + offsetY,
856
- left: point.clientX - offsetX
857
- };
858
- }
859
- function $d27d541f9569d26d$var$areRectanglesOverlapping(a, b) {
860
- if (a.left > b.right || b.left > a.right) return false;
861
- if (a.top > b.bottom || b.top > a.bottom) return false;
862
- return true;
863
- }
864
- function $d27d541f9569d26d$var$isOverTarget(point, target) {
865
- let rect = target.getBoundingClientRect();
866
- let pointRect = $d27d541f9569d26d$var$getPointClientRect(point);
867
- return $d27d541f9569d26d$var$areRectanglesOverlapping(rect, pointRect);
868
- }
869
- function $d27d541f9569d26d$var$shouldPreventDefaultUp(target) {
870
- if (target instanceof HTMLInputElement) return false;
871
- if (target instanceof HTMLButtonElement) return target.type !== "submit" && target.type !== "reset";
872
- if ($d27d541f9569d26d$var$isHTMLAnchorLink(target)) return false;
873
- return true;
874
- }
875
- function $d27d541f9569d26d$var$shouldPreventDefaultKeyboard(target, key) {
876
- if (target instanceof HTMLInputElement) return !$d27d541f9569d26d$var$isValidInputKey(target, key);
877
- return $d27d541f9569d26d$var$shouldPreventDefaultUp(target);
878
- }
879
- const $d27d541f9569d26d$var$nonTextInputTypes = /* @__PURE__ */ new Set([
880
- "checkbox",
881
- "radio",
882
- "range",
883
- "color",
884
- "file",
885
- "image",
886
- "button",
887
- "submit",
888
- "reset"
889
- ]);
890
- function $d27d541f9569d26d$var$isValidInputKey(target, key) {
891
- return target.type === "checkbox" || target.type === "radio" ? key === " " : $d27d541f9569d26d$var$nonTextInputTypes.has(target.type);
892
- }
893
- function $ac4318a9c075bb9f$export$ea18c227d4417cc3(props, ref) {
894
- let { elementType = "button", isDisabled, onPress, onPressStart, onPressEnd, onPressUp, onPressChange, preventFocusOnPress, allowFocusWhenDisabled, onClick, href, target, rel, type = "button" } = props;
895
- let additionalProps;
896
- if (elementType === "button") additionalProps = {
897
- type,
898
- disabled: isDisabled,
899
- form: props.form,
900
- formAction: props.formAction,
901
- formEncType: props.formEncType,
902
- formMethod: props.formMethod,
903
- formNoValidate: props.formNoValidate,
904
- formTarget: props.formTarget,
905
- name: props.name,
906
- value: props.value
907
- };
908
- else additionalProps = {
909
- role: "button",
910
- href: elementType === "a" && !isDisabled ? href : void 0,
911
- target: elementType === "a" ? target : void 0,
912
- type: elementType === "input" ? type : void 0,
913
- disabled: elementType === "input" ? isDisabled : void 0,
914
- "aria-disabled": !isDisabled || elementType === "input" ? void 0 : isDisabled,
915
- rel: elementType === "a" ? rel : void 0
916
- };
917
- let { pressProps, isPressed } = $d27d541f9569d26d$export$45712eceda6fad21({
918
- onPressStart,
919
- onPressEnd,
920
- onPressChange,
921
- onPress,
922
- onPressUp,
923
- onClick,
365
+ );
366
+ const labelClassName = clsx(
367
+ "label",
368
+ styles.label,
369
+ formatClassNames(semanticClassNames.buttonLabel),
370
+ (_a = elementProps == null ? void 0 : elementProps.label) == null ? void 0 : _a.className,
371
+ isDisabled && DesignStates.label.disabled.className
372
+ );
373
+ const linkClassName = styles.link;
374
+ const reportClickAnalytics = useClickAnalyticsReporter({
375
+ link: link2,
376
+ elementId: id,
377
+ elementType: COMPONENT_TYPE,
378
+ elementGroup: ClickAnalyticsGroups.Button,
379
+ elementTitle: label2,
380
+ details: { isDisabled }
381
+ });
382
+ const { isLink, eventHandlers } = useButtonEventHandlers({
924
383
  isDisabled,
925
- preventFocusOnPress,
926
- ref
384
+ link: link2,
385
+ propsOnClick,
386
+ preventLinkNavigation,
387
+ reportBiOnClick: reportBiOnClick ?? reportClickAnalytics,
388
+ onMouseEnter: handleMouseEnter,
389
+ onMouseLeave: handleMouseLeave,
390
+ onIconAnimationClick,
391
+ onDblClick,
392
+ onFocus,
393
+ onBlur
927
394
  });
928
- let { focusableProps } = $d1116acdf220c2da$export$4c014de7c8940b4c(props, ref);
929
- if (allowFocusWhenDisabled) focusableProps.tabIndex = isDisabled ? -1 : focusableProps.tabIndex;
930
- let buttonProps = $bbaa08b3cd72f041$export$9d1611c77c2fe928(focusableProps, pressProps, $8e9d2fae0ecb9001$export$457c3d6518dd4c6f(props, {
931
- labelable: true
932
- }));
933
- return {
934
- isPressed,
935
- buttonProps: $bbaa08b3cd72f041$export$9d1611c77c2fe928(additionalProps, buttonProps, {
936
- "aria-haspopup": props["aria-haspopup"],
937
- "aria-expanded": props["aria-expanded"],
938
- "aria-controls": props["aria-controls"],
939
- "aria-pressed": props["aria-pressed"],
940
- "aria-current": props["aria-current"],
941
- "aria-disabled": props["aria-disabled"]
942
- })
395
+ const a11yAttr = useButtonA11y({ propsA11y, ariaAttributes, lang });
396
+ const renderedLabel = labelContent ?? label2;
397
+ const wrapperAttributes = {
398
+ id,
399
+ ...getDataAttributes(props),
400
+ ...getQaDataAttributes(isQaMode, fullNameCompType),
401
+ "data-semantic-classname": semanticClassNames.root,
402
+ ...direction && { dir: direction }
943
403
  };
944
- }
945
- function $240e9101ba2842f5$export$7d15b64cf5a3a4c4(value, min = -Infinity, max = Infinity) {
946
- let newValue = Math.min(Math.max(value, min), max);
947
- return newValue;
948
- }
949
- function $240e9101ba2842f5$export$e1a7b8e69ef6c52f(value, step) {
950
- let roundedValue = value;
951
- let precision = 0;
952
- let stepString = step.toString();
953
- let eIndex = stepString.toLowerCase().indexOf("e-");
954
- if (eIndex > 0) precision = Math.abs(Math.floor(Math.log10(Math.abs(step)))) + eIndex;
955
- else {
956
- let pointIndex = stepString.indexOf(".");
957
- if (pointIndex >= 0) precision = stepString.length - pointIndex;
958
- }
959
- if (precision > 0) {
960
- let pow = Math.pow(10, precision);
961
- roundedValue = Math.round(roundedValue * pow) / pow;
962
- }
963
- return roundedValue;
964
- }
965
- function $240e9101ba2842f5$export$cb6e0bb50bc19463(value, min, max, step) {
966
- min = Number(min);
967
- max = Number(max);
968
- let remainder = (value - (isNaN(min) ? 0 : min)) % step;
969
- let snappedValue = $240e9101ba2842f5$export$e1a7b8e69ef6c52f(Math.abs(remainder) * 2 >= step ? value + Math.sign(remainder) * (step - Math.abs(remainder)) : value - remainder, step);
970
- if (!isNaN(min)) {
971
- if (snappedValue < min) snappedValue = min;
972
- else if (!isNaN(max) && snappedValue > max) snappedValue = min + Math.floor($240e9101ba2842f5$export$e1a7b8e69ef6c52f((max - min) / step, step)) * step;
973
- } else if (!isNaN(max) && snappedValue > max) snappedValue = Math.floor($240e9101ba2842f5$export$e1a7b8e69ef6c52f(max / step, step)) * step;
974
- snappedValue = $240e9101ba2842f5$export$e1a7b8e69ef6c52f(snappedValue, step);
975
- return snappedValue;
976
- }
977
- const $0393f8ab869a0f1a$export$e9f3bf65a26ce129 = /* @__PURE__ */ createContext(null);
978
- const $d2b4bc8c273e7be6$export$24d547caef80ccd1 = /* @__PURE__ */ createContext({});
979
- const $d2b4bc8c273e7be6$export$353f5b6fc5456de1 = /* @__PURE__ */ $f39a9eba43920ace$export$86427a43e3e48ebb(function Button(props, ref) {
980
- [props, ref] = $64fa3d84918910a7$export$29f1550f4b0d4415(props, ref, $d2b4bc8c273e7be6$export$24d547caef80ccd1);
981
- props = $d2b4bc8c273e7be6$var$disablePendingProps(props);
982
- let ctx = props;
983
- let { isPending } = ctx;
984
- let { buttonProps, isPressed } = $ac4318a9c075bb9f$export$ea18c227d4417cc3(props, ref);
985
- let { focusProps, isFocused, isFocusVisible } = $0c4a58759813079a$export$4e328f61c538687f(props);
986
- let { hoverProps, isHovered } = $e969f22b6713ca4a$export$ae780daf29e6d456({
987
- ...props,
988
- isDisabled: props.isDisabled || isPending
989
- });
990
- let renderValues = {
991
- isHovered,
992
- isPressed: (ctx.isPressed || isPressed) && !isPending,
993
- isFocused,
994
- isFocusVisible,
995
- isDisabled: props.isDisabled || false,
996
- isPending: isPending !== null && isPending !== void 0 ? isPending : false
404
+ const renderButtonContent = () => /* @__PURE__ */ jsxs(Fragment, { children: [
405
+ renderedLabel && /* @__PURE__ */ jsx("span", { className: labelClassName, "data-testid": TestIds.buttonLabel, children: renderedLabel }),
406
+ /* @__PURE__ */ jsx(
407
+ AnimatedButtonIcon,
408
+ {
409
+ ref: iconAnimatedRef,
410
+ svg: animatedIconProps == null ? void 0 : animatedIconProps.svg,
411
+ duration: animatedIconProps == null ? void 0 : animatedIconProps.duration,
412
+ className: animatedIconProps == null ? void 0 : animatedIconProps.className
413
+ }
414
+ )
415
+ ] });
416
+ const renderButton = () => /* @__PURE__ */ jsx(
417
+ "button",
418
+ {
419
+ type,
420
+ disabled: isDisabled,
421
+ className: rootClassName,
422
+ "data-testid": TestIds.buttonContent,
423
+ ...wrapperAttributes,
424
+ ...a11yAttr,
425
+ ...eventHandlers,
426
+ ref: buttonOrLinkRef,
427
+ "data-preview": compPreviewState,
428
+ children: renderButtonContent()
429
+ }
430
+ );
431
+ const renderLinkedButton = () => {
432
+ const linkHref = isDisabled ? void 0 : link2.href;
433
+ const linkRel = link2.rel;
434
+ const linkTarget = link2.target;
435
+ const linkPopupId = link2.linkPopupId;
436
+ const anchorDataId = link2.anchorDataId;
437
+ const anchorCompId = link2.anchorCompId;
438
+ return /* @__PURE__ */ jsx(
439
+ "a",
440
+ {
441
+ href: linkHref,
442
+ rel: linkRel,
443
+ target: linkTarget,
444
+ "data-popupid": linkPopupId,
445
+ "data-anchor": anchorDataId,
446
+ "data-anchor-comp-id": anchorCompId,
447
+ className: clsx(linkClassName, rootClassName),
448
+ "data-testid": TestIds.buttonContent,
449
+ ...wrapperAttributes,
450
+ ...a11yAttr,
451
+ ...eventHandlers,
452
+ role: a11yAttr.role,
453
+ tabIndex: a11yAttr.tabIndex,
454
+ ref: buttonOrLinkRef,
455
+ "data-preview": compPreviewState,
456
+ children: renderButtonContent()
457
+ }
458
+ );
997
459
  };
998
- let renderProps = $64fa3d84918910a7$export$4d86445c2cf5e3({
999
- ...props,
1000
- values: renderValues,
1001
- defaultClassName: "react-aria-Button"
1002
- });
1003
- let buttonId = $390e54f620492c70$export$f680877a34711e37(buttonProps.id);
1004
- let progressId = $390e54f620492c70$export$f680877a34711e37();
1005
- let ariaLabelledby = buttonProps["aria-labelledby"];
1006
- if (isPending) {
1007
- if (ariaLabelledby) ariaLabelledby = `${ariaLabelledby} ${progressId}`;
1008
- else if (buttonProps["aria-label"]) ariaLabelledby = `${buttonId} ${progressId}`;
1009
- }
1010
- let wasPending = useRef(isPending);
1011
- useEffect(() => {
1012
- let message = {
1013
- "aria-labelledby": ariaLabelledby || buttonId
1014
- };
1015
- if (!wasPending.current && isFocused && isPending) $319e236875307eab$export$a9b970dcc4ae71a9(message, "assertive");
1016
- else if (wasPending.current && isFocused && !isPending) $319e236875307eab$export$a9b970dcc4ae71a9(message, "assertive");
1017
- wasPending.current = isPending;
1018
- }, [
1019
- isPending,
1020
- isFocused,
1021
- ariaLabelledby,
1022
- buttonId
1023
- ]);
1024
- let DOMProps = $65484d02dcb7eb3e$export$457c3d6518dd4c6f(props, {
1025
- global: true
1026
- });
1027
- delete DOMProps.onClick;
1028
- return /* @__PURE__ */ React__default.createElement("button", {
1029
- ...$bbaa08b3cd72f041$export$9d1611c77c2fe928(DOMProps, renderProps, buttonProps, focusProps, hoverProps),
1030
- // When the button is in a pending state, we want to stop implicit form submission (ie. when the user presses enter on a text input).
1031
- // We do this by changing the button's type to button.
1032
- type: buttonProps.type === "submit" && isPending ? "button" : buttonProps.type,
1033
- id: buttonId,
1034
- ref,
1035
- "aria-labelledby": ariaLabelledby,
1036
- slot: props.slot || void 0,
1037
- "aria-disabled": isPending ? "true" : buttonProps["aria-disabled"],
1038
- "data-disabled": props.isDisabled || void 0,
1039
- "data-pressed": renderValues.isPressed || void 0,
1040
- "data-hovered": isHovered || void 0,
1041
- "data-focused": isFocused || void 0,
1042
- "data-pending": isPending || void 0,
1043
- "data-focus-visible": isFocusVisible || void 0
1044
- }, /* @__PURE__ */ React__default.createElement($0393f8ab869a0f1a$export$e9f3bf65a26ce129.Provider, {
1045
- value: {
1046
- id: progressId
460
+ const renderDisabledLinkAsButton = () => /* @__PURE__ */ jsx(
461
+ "button",
462
+ {
463
+ type,
464
+ disabled: isDisabled,
465
+ className: clsx(rootClassName),
466
+ "data-testid": TestIds.buttonContent,
467
+ ...wrapperAttributes,
468
+ ...a11yAttr,
469
+ ...eventHandlers,
470
+ role: "link",
471
+ ref: buttonOrLinkRef,
472
+ "data-preview": compPreviewState,
473
+ children: renderButtonContent()
1047
474
  }
1048
- }, renderProps.children));
1049
- });
1050
- function $d2b4bc8c273e7be6$var$disablePendingProps(props) {
1051
- if (props.isPending) {
1052
- props.onPress = void 0;
1053
- props.onPressStart = void 0;
1054
- props.onPressEnd = void 0;
1055
- props.onPressChange = void 0;
1056
- props.onPressUp = void 0;
1057
- props.onKeyDown = void 0;
1058
- props.onKeyUp = void 0;
1059
- props.onClick = void 0;
1060
- props.href = void 0;
1061
- }
1062
- return props;
1063
- }
475
+ );
476
+ const renderContent = () => {
477
+ if (isDisabled && isLink) {
478
+ return renderDisabledLinkAsButton();
479
+ }
480
+ return isLink ? renderLinkedButton() : renderButton();
481
+ };
482
+ return /* @__PURE__ */ jsx("div", { className: presetWrapperStyles.presetWrapper, ...presetsWrapperProps, children: renderContent() });
483
+ };
1064
484
  export {
1065
- $d2b4bc8c273e7be6$export$353f5b6fc5456de1 as $,
1066
- $1dfb119a85e764e5$export$cc77c4ff7e8673c5 as a,
1067
- $d27d541f9569d26d$export$45712eceda6fad21 as b,
1068
- $240e9101ba2842f5$export$7d15b64cf5a3a4c4 as c,
1069
- $24f9a20f226ad820$export$5165eccb35aaadb5 as d,
1070
- $2b2d34ff061957fb$export$2b85b721e524d74b as e,
1071
- $d2b4bc8c273e7be6$export$24d547caef80ccd1 as f,
1072
- $cbf007e418543821$export$b0d6fa1ab32e3295 as g,
1073
- $cbf007e418543821$export$16a4697467175487 as h,
1074
- $240e9101ba2842f5$export$cb6e0bb50bc19463 as i
485
+ Button as B
1075
486
  };