UNPKG

@yamada-ui/react

Version:

React UI components of the Yamada, by the Yamada, for the Yamada built with React and Emotion

52 lines (48 loc) 2.39 kB
"use client"; const require_rolldown_runtime = require('../../_virtual/rolldown_runtime.cjs'); const require_ref = require('../../utils/ref.cjs'); const require_utils_index = require('../../utils/index.cjs'); let react = require("react"); react = require_rolldown_runtime.__toESM(react); //#region src/hooks/use-controllable-state/index.ts function useControllableState({ defaultValue: defaultValueProp, value, onChange: onChangeProp, onUpdate: onUpdateProp = (prev, next) => prev !== next }) { const onChange = require_ref.useCallbackRef(onChangeProp); const onUpdate = require_ref.useCallbackRef(onUpdateProp); const [defaultValue, setDefaultValue] = (0, react.useState)(defaultValueProp); const controlled = !(0, require_utils_index.utils_exports.isUndefined)(value); const currentValue = controlled ? value : defaultValue; return [currentValue, require_ref.useCallbackRef((next) => { const nextValue = (0, require_utils_index.utils_exports.runIfFn)(next, currentValue); if (!onUpdate(currentValue, nextValue)) return; if (!controlled || (0, require_utils_index.utils_exports.isUndefined)(nextValue) || (0, require_utils_index.utils_exports.isNull)(nextValue)) setDefaultValue(nextValue); onChange(nextValue); }, [ controlled, currentValue, onChange, onUpdate ])]; } function isHTMLInputElement(el) { return el instanceof HTMLInputElement; } function useControllableEventState({ defaultValue: defaultValueProp, value, onChange: onChangeProp }) { const onChange = require_ref.useCallbackRef(onChangeProp); const [defaultValue, setDefaultValue] = (0, react.useState)(defaultValueProp); const controlled = !(0, require_utils_index.utils_exports.isUndefined)(value); const currentValue = controlled ? value : defaultValue; const boolean = (0, require_utils_index.utils_exports.isBoolean)(currentValue); return [currentValue, require_ref.useCallbackRef((ev) => { const value$1 = boolean && isHTMLInputElement(ev.target) ? ev.target.checked : ev.target.value; if (!controlled || (0, require_utils_index.utils_exports.isUndefined)(value$1) || (0, require_utils_index.utils_exports.isNull)(value$1)) setDefaultValue(value$1); onChange(ev); }, [ controlled, currentValue, onChange ])]; } //#endregion exports.useControllableEventState = useControllableEventState; exports.useControllableState = useControllableState; //# sourceMappingURL=index.cjs.map