mirror of
http://10.0.2.1:3031/sauer/claude-code.git
synced 2026-06-30 20:46:58 +10:00
192 lines
16 KiB
TypeScript
192 lines
16 KiB
TypeScript
|
|
import { c as _c } from "react/compiler-runtime";
|
||
|
|
import React, { type Ref, useCallback, useEffect, useRef, useState } from 'react';
|
||
|
|
import type { Except } from 'type-fest';
|
||
|
|
import type { DOMElement } from '../dom.js';
|
||
|
|
import type { ClickEvent } from '../events/click-event.js';
|
||
|
|
import type { FocusEvent } from '../events/focus-event.js';
|
||
|
|
import type { KeyboardEvent } from '../events/keyboard-event.js';
|
||
|
|
import type { Styles } from '../styles.js';
|
||
|
|
import Box from './Box.js';
|
||
|
|
type ButtonState = {
|
||
|
|
focused: boolean;
|
||
|
|
hovered: boolean;
|
||
|
|
active: boolean;
|
||
|
|
};
|
||
|
|
export type Props = Except<Styles, 'textWrap'> & {
|
||
|
|
ref?: Ref<DOMElement>;
|
||
|
|
/**
|
||
|
|
* Called when the button is activated via Enter, Space, or click.
|
||
|
|
*/
|
||
|
|
onAction: () => void;
|
||
|
|
/**
|
||
|
|
* Tab order index. Defaults to 0 (in tab order).
|
||
|
|
* Set to -1 for programmatically focusable only.
|
||
|
|
*/
|
||
|
|
tabIndex?: number;
|
||
|
|
/**
|
||
|
|
* Focus this button when it mounts.
|
||
|
|
*/
|
||
|
|
autoFocus?: boolean;
|
||
|
|
/**
|
||
|
|
* Render prop receiving the interactive state. Use this to
|
||
|
|
* style children based on focus/hover/active — Button itself
|
||
|
|
* is intentionally unstyled.
|
||
|
|
*
|
||
|
|
* If not provided, children render as-is (no state-dependent styling).
|
||
|
|
*/
|
||
|
|
children: ((state: ButtonState) => React.ReactNode) | React.ReactNode;
|
||
|
|
};
|
||
|
|
function Button(t0) {
|
||
|
|
const $ = _c(30);
|
||
|
|
let autoFocus;
|
||
|
|
let children;
|
||
|
|
let onAction;
|
||
|
|
let ref;
|
||
|
|
let style;
|
||
|
|
let t1;
|
||
|
|
if ($[0] !== t0) {
|
||
|
|
({
|
||
|
|
onAction,
|
||
|
|
tabIndex: t1,
|
||
|
|
autoFocus,
|
||
|
|
children,
|
||
|
|
ref,
|
||
|
|
...style
|
||
|
|
} = t0);
|
||
|
|
$[0] = t0;
|
||
|
|
$[1] = autoFocus;
|
||
|
|
$[2] = children;
|
||
|
|
$[3] = onAction;
|
||
|
|
$[4] = ref;
|
||
|
|
$[5] = style;
|
||
|
|
$[6] = t1;
|
||
|
|
} else {
|
||
|
|
autoFocus = $[1];
|
||
|
|
children = $[2];
|
||
|
|
onAction = $[3];
|
||
|
|
ref = $[4];
|
||
|
|
style = $[5];
|
||
|
|
t1 = $[6];
|
||
|
|
}
|
||
|
|
const tabIndex = t1 === undefined ? 0 : t1;
|
||
|
|
const [isFocused, setIsFocused] = useState(false);
|
||
|
|
const [isHovered, setIsHovered] = useState(false);
|
||
|
|
const [isActive, setIsActive] = useState(false);
|
||
|
|
const activeTimer = useRef(null);
|
||
|
|
let t2;
|
||
|
|
let t3;
|
||
|
|
if ($[7] === Symbol.for("react.memo_cache_sentinel")) {
|
||
|
|
t2 = () => () => {
|
||
|
|
if (activeTimer.current) {
|
||
|
|
clearTimeout(activeTimer.current);
|
||
|
|
}
|
||
|
|
};
|
||
|
|
t3 = [];
|
||
|
|
$[7] = t2;
|
||
|
|
$[8] = t3;
|
||
|
|
} else {
|
||
|
|
t2 = $[7];
|
||
|
|
t3 = $[8];
|
||
|
|
}
|
||
|
|
useEffect(t2, t3);
|
||
|
|
let t4;
|
||
|
|
if ($[9] !== onAction) {
|
||
|
|
t4 = e => {
|
||
|
|
if (e.key === "return" || e.key === " ") {
|
||
|
|
e.preventDefault();
|
||
|
|
setIsActive(true);
|
||
|
|
onAction();
|
||
|
|
if (activeTimer.current) {
|
||
|
|
clearTimeout(activeTimer.current);
|
||
|
|
}
|
||
|
|
activeTimer.current = setTimeout(_temp, 100, setIsActive);
|
||
|
|
}
|
||
|
|
};
|
||
|
|
$[9] = onAction;
|
||
|
|
$[10] = t4;
|
||
|
|
} else {
|
||
|
|
t4 = $[10];
|
||
|
|
}
|
||
|
|
const handleKeyDown = t4;
|
||
|
|
let t5;
|
||
|
|
if ($[11] !== onAction) {
|
||
|
|
t5 = _e => {
|
||
|
|
onAction();
|
||
|
|
};
|
||
|
|
$[11] = onAction;
|
||
|
|
$[12] = t5;
|
||
|
|
} else {
|
||
|
|
t5 = $[12];
|
||
|
|
}
|
||
|
|
const handleClick = t5;
|
||
|
|
let t6;
|
||
|
|
if ($[13] === Symbol.for("react.memo_cache_sentinel")) {
|
||
|
|
t6 = _e_0 => setIsFocused(true);
|
||
|
|
$[13] = t6;
|
||
|
|
} else {
|
||
|
|
t6 = $[13];
|
||
|
|
}
|
||
|
|
const handleFocus = t6;
|
||
|
|
let t7;
|
||
|
|
if ($[14] === Symbol.for("react.memo_cache_sentinel")) {
|
||
|
|
t7 = _e_1 => setIsFocused(false);
|
||
|
|
$[14] = t7;
|
||
|
|
} else {
|
||
|
|
t7 = $[14];
|
||
|
|
}
|
||
|
|
const handleBlur = t7;
|
||
|
|
let t8;
|
||
|
|
if ($[15] === Symbol.for("react.memo_cache_sentinel")) {
|
||
|
|
t8 = () => setIsHovered(true);
|
||
|
|
$[15] = t8;
|
||
|
|
} else {
|
||
|
|
t8 = $[15];
|
||
|
|
}
|
||
|
|
const handleMouseEnter = t8;
|
||
|
|
let t9;
|
||
|
|
if ($[16] === Symbol.for("react.memo_cache_sentinel")) {
|
||
|
|
t9 = () => setIsHovered(false);
|
||
|
|
$[16] = t9;
|
||
|
|
} else {
|
||
|
|
t9 = $[16];
|
||
|
|
}
|
||
|
|
const handleMouseLeave = t9;
|
||
|
|
let t10;
|
||
|
|
if ($[17] !== children || $[18] !== isActive || $[19] !== isFocused || $[20] !== isHovered) {
|
||
|
|
const state = {
|
||
|
|
focused: isFocused,
|
||
|
|
hovered: isHovered,
|
||
|
|
active: isActive
|
||
|
|
};
|
||
|
|
t10 = typeof children === "function" ? children(state) : children;
|
||
|
|
$[17] = children;
|
||
|
|
$[18] = isActive;
|
||
|
|
$[19] = isFocused;
|
||
|
|
$[20] = isHovered;
|
||
|
|
$[21] = t10;
|
||
|
|
} else {
|
||
|
|
t10 = $[21];
|
||
|
|
}
|
||
|
|
const content = t10;
|
||
|
|
let t11;
|
||
|
|
if ($[22] !== autoFocus || $[23] !== content || $[24] !== handleClick || $[25] !== handleKeyDown || $[26] !== ref || $[27] !== style || $[28] !== tabIndex) {
|
||
|
|
t11 = <Box ref={ref} tabIndex={tabIndex} autoFocus={autoFocus} onKeyDown={handleKeyDown} onClick={handleClick} onFocus={handleFocus} onBlur={handleBlur} onMouseEnter={handleMouseEnter} onMouseLeave={handleMouseLeave} {...style}>{content}</Box>;
|
||
|
|
$[22] = autoFocus;
|
||
|
|
$[23] = content;
|
||
|
|
$[24] = handleClick;
|
||
|
|
$[25] = handleKeyDown;
|
||
|
|
$[26] = ref;
|
||
|
|
$[27] = style;
|
||
|
|
$[28] = tabIndex;
|
||
|
|
$[29] = t11;
|
||
|
|
} else {
|
||
|
|
t11 = $[29];
|
||
|
|
}
|
||
|
|
return t11;
|
||
|
|
}
|
||
|
|
function _temp(setter) {
|
||
|
|
return setter(false);
|
||
|
|
}
|
||
|
|
export default Button;
|
||
|
|
export type { ButtonState };
|
||
|
|
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJSZWFjdCIsIlJlZiIsInVzZUNhbGxiYWNrIiwidXNlRWZmZWN0IiwidXNlUmVmIiwidXNlU3RhdGUiLCJFeGNlcHQiLCJET01FbGVtZW50IiwiQ2xpY2tFdmVudCIsIkZvY3VzRXZlbnQiLCJLZXlib2FyZEV2ZW50IiwiU3R5bGVzIiwiQm94IiwiQnV0dG9uU3RhdGUiLCJmb2N1c2VkIiwiaG92ZXJlZCIsImFjdGl2ZSIsIlByb3BzIiwicmVmIiwib25BY3Rpb24iLCJ0YWJJbmRleCIsImF1dG9Gb2N1cyIsImNoaWxkcmVuIiwic3RhdGUiLCJSZWFjdE5vZGUiLCJCdXR0b24iLCJ0MCIsIiQiLCJfYyIsInN0eWxlIiwidDEiLCJ1bmRlZmluZWQiLCJpc0ZvY3VzZWQiLCJzZXRJc0ZvY3VzZWQiLCJpc0hvdmVyZWQiLCJzZXRJc0hvdmVyZWQiLCJpc0FjdGl2ZSIsInNldElzQWN0aXZlIiwiYWN0aXZlVGltZXIiLCJ0MiIsInQzIiwiU3ltYm9sIiwiZm9yIiwiY3VycmVudCIsImNsZWFyVGltZW91dCIsInQ0IiwiZSIsImtleSIsInByZXZlbnREZWZhdWx0Iiwic2V0VGltZW91dCIsIl90ZW1wIiwiaGFuZGxlS2V5RG93biIsInQ1IiwiX2UiLCJoYW5kbGVDbGljayIsInQ2IiwiX2VfMCIsImhhbmRsZUZvY3VzIiwidDciLCJfZV8xIiwiaGFuZGxlQmx1ciIsInQ4IiwiaGFuZGxlTW91c2VFbnRlciIsInQ5IiwiaGFuZGxlTW91c2VMZWF2ZSIsInQxMCIsImNvbnRlbnQiLCJ0MTEiLCJzZXR0ZXIiXSwic291cmNlcyI6WyJCdXR0b24udHN4Il0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBSZWFjdCwge1xuICB0eXBlIFJlZixcbiAgdXNlQ2FsbGJhY2ssXG4gIHVzZUVmZmVjdCxcbiAgdXNlUmVmLFxuICB1c2VTdGF0ZSxcbn0gZnJvbSAncmVhY3QnXG5pbXBvcnQgdHlwZSB7IEV4Y2VwdCB9IGZyb20gJ3R5cGUtZmVzdCdcbmltcG9ydCB0eXBlIHsgRE9NRWxlbWVudCB9IGZyb20gJy4uL2RvbS5qcydcbmltcG9ydCB0eXBlIHsgQ2xpY2tFdmVudCB9IGZyb20gJy4uL2V2ZW50cy9jbGljay1ldmVudC5qcydcbmltcG9ydCB0eXBlIHsgRm9jdXNFdmVudCB9IGZyb20gJy4uL2V2ZW50cy9mb2N1cy1ldmVudC5qcydcbmltcG9ydCB0eXBlIHsgS2V5Ym9hcmRFdmVudCB9IGZyb20gJy4uL2V2ZW50cy9rZXlib2FyZC1ldmVudC5qcydcbmltcG9ydCB0eXBlIHsgU3R5bGVzIH0gZnJvbSAnLi4vc3R5bGVzLmpzJ1xuaW1wb3J0IEJveCBmcm9tICcuL0JveC5qcydcblxudHlwZSBCdXR0b25TdGF0ZSA9IHtcbiAgZm9jdXNlZDogYm9vbGVhblxuICBob3ZlcmVkOiBib29sZWFuXG4gIGFjdGl2ZTogYm9vbGVhblxufVxuXG5leHBvcnQgdHlwZSBQcm9wcyA9IEV4Y2VwdDxTdHlsZXMsICd0ZXh0V3JhcCc+ICYge1xuICByZWY/OiBSZWY8RE9NRWxlbWVudD5cbiAgLyoqXG4gICAqIENhbGxlZCB3aGVuIHRoZSBidXR0b24gaXMgYWN0aXZhdGVkIHZpYSBFbnRlciwgU3BhY2UsIG9yIGNsaWNrLlxuICAgKi9cbiAgb25BY3Rpb246ICgpID0+IHZvaWRcbiAgLyoqXG4gICAqIFRhYiBvcmRlciBpbmRleC4gRGVmYXVsdHMgdG8gMCAoaW4gdGFiIG9yZGVyKS5cbiAgICogU2V0IHRvIC0xIGZvciBwcm9ncmFtbWF0aWNhbGx5IGZvY3VzYWJsZSBvbmx5LlxuICAgKi9cbiAgdGFiSW5kZXg/OiBudW1iZXJcbiAgLyoqXG4gICAqIEZvY3VzIHRoaXMgYnV0dG9uIHdoZW4gaXQgbW91bnRzLlxuICAgKi9cbiAgYXV0b0ZvY3VzPzogYm9vbGVhblxuICAvKipcbiAgICogUmVuZGVyIHByb3AgcmVjZWl2aW5nIHRoZSBpbnRlcmFjdGl2ZSBzdGF0ZS4gVXNlIHRoaXMgdG9cbiAgICogc3R5bGUgY2hpbGRyZW4gYmFzZWQgb24gZm9jdXMvaG92ZXIvYWN0aXZlIOKAlCBCdXR0b24gaXRzZWxmXG4gICAqIGlzIGludGVudGlvbmFsbHkgdW5zdHlsZWQuXG4gICAqXG4gICAqIElmIG5vdCBwcm92aWRlZCwgY2hpbGRyZW4gcmVuZGVyIGFzLWlzIChubyBzdGF0ZS1kZXBlbmRlbnQgc3R5bGluZykuXG4gICAqL1xuICBjaGlsZHJlbjogKChzdGF0ZTogQnV0dG9uU3RhdGUpID0+IFJlYWN0LlJlYWN0Tm9kZSkgfCBSZWFjdC5SZWFjdE5vZGVcbn1cblxuZnVuY3Rpb24gQnV0dG9uKHtcbiAgb25BY3Rpb24sXG4gIHRhYkluZGV4ID0gMCxcbiAgYXV0b0ZvY3VzLFxuICBjaGlsZHJlbixcbiAgcmVmLFxuICAuLi5zdHlsZVxufTogUHJvcHMpOiBSZWFjdC5SZWFjdE5vZGUge1xuICBjb25zdCBbaXNGb2N1c2VkLCBzZXRJc0ZvY3VzZWRdID0gdXNlU3RhdGUoZmFsc2UpXG4gIGNvbnN0IFtpc0hvdmVyZWQsIHNldElzSG92ZXJlZF0gPSB1c2VTdGF0ZShmYWxzZSlcbiAgY29uc3QgW2lzQWN0aXZlLCBzZXRJc0FjdGl2ZV0gPSB1c2VTdGF0ZShmYWxzZSlcblxuICBjb25zdCBhY3RpdmVUaW1lciA9IHVzZVJlZjxSZXR1cm5UeXBlPHR5cGVvZiBzZXRUaW1lb3V0PiB8IG51bGw+KG51bGwpXG5cbiAgdXNlRWZmZWN0KCgpID0+IHtcbiAgICByZXR1cm4gKCkgPT4ge1xuICAgICAgaWYgKGFjdGl2ZVRpbWVyLmN1cnJlbnQpIGNsZWFyVGltZW91dChhY3RpdmVUaW1lci5jdXJyZW50KVxuICAgIH1cbiAgfSwgW10pXG5cbiAgY29uc3QgaGFuZGxlS2V5RG93biA9IHVzZUNhbGxiYWNrKFxuICAgIChlOiBLZXlib2FyZEV2ZW50KSA9PiB7XG4gICAgICBpZiAoZS5rZXkgPT09ICdyZXR1cm4nIHx8IGUua2V5ID09PSAnICcpIHtcbiAgICAgICAgZS5wcmV2ZW50RGVmYXVsdCgpXG4gICAgICAgIHNldElzQWN0aXZlKHRydWUpXG4gICAgICAgIG9uQWN0aW9uKClcbiAgICAgICAgaWYgKGFjdGl2ZVRpbWVyLmN1cnJlbnQpIGNsZWFyVGltZW91dChhY3RpdmVUaW1lci5jdXJyZW50KVxuICAgICAgICBhY3RpdmVUaW1lci5jdXJyZW50ID0gc2V0VGltZW91dChcbiAgICAgICAgICBzZXR0ZXIgPT4gc2V0dGVyKGZhbHNlKSxcbiAgICAgICAgICAxMDAsXG4gICAgICAgICAgc2V0SXNBY3RpdmUsXG4gICAgICAgIClcbiAgICAgIH1cbiAgICB9LFxuICAgIFtvbkFjdGlvbl0sXG4gIClcblxuICBjb25zdCBoYW5kbGVDbGljayA9IHVzZUNhbGxiYWNrKFxuICAgIChfZTogQ2xpY2tFdmVudCkgPT4ge1xuICAgICAgb25BY3Rpb24oKVxuICAgIH0sXG4gICA
|