react-bfm
Version:
A basic field / form manager for React using hooks
969 lines (894 loc) • 53.3 kB
JavaScript
(function webpackUniversalModuleDefinition(root, factory) {
if(typeof exports === 'object' && typeof module === 'object')
module.exports = factory(require("react"));
else if(typeof define === 'function' && define.amd)
define(["react"], factory);
else if(typeof exports === 'object')
exports["ReactBFM"] = factory(require("react"));
else
root["ReactBFM"] = factory(root["React"]);
})(self, (__WEBPACK_EXTERNAL_MODULE_react__) => {
return /******/ (() => { // webpackBootstrap
/******/ var __webpack_modules__ = ({
/***/ "./build/constants/field-defaults.js":
/*!*******************************************!*\
!*** ./build/constants/field-defaults.js ***!
\*******************************************/
/***/ ((__unused_webpack_module, exports) => {
"use strict";
exports.__esModule = true;
exports.FIELD_DEFAULT_VALUE_ON_FOCUS = exports.FIELD_DEFAULT_VALUE = exports.FIELD_DEFAULT_VALID = exports.FIELD_DEFAULT_TOUCHED = exports.FIELD_DEFAULT_FOCUS = exports.FIELD_DEFAULT_ERROR = exports.FIELD_DEFAULT_DIRTY = exports.FIELD_DEFAULT_DEFAULT_VALUE_ERROR = exports.FIELD_DEFAULT_DEFAULT_VALUE = void 0;
// default values for keys
var FIELD_DEFAULT_DEFAULT_VALUE = undefined;
exports.FIELD_DEFAULT_DEFAULT_VALUE = FIELD_DEFAULT_DEFAULT_VALUE;
var FIELD_DEFAULT_DEFAULT_VALUE_ERROR = undefined;
exports.FIELD_DEFAULT_DEFAULT_VALUE_ERROR = FIELD_DEFAULT_DEFAULT_VALUE_ERROR;
var FIELD_DEFAULT_DIRTY = false;
exports.FIELD_DEFAULT_DIRTY = FIELD_DEFAULT_DIRTY;
var FIELD_DEFAULT_ERROR = null;
exports.FIELD_DEFAULT_ERROR = FIELD_DEFAULT_ERROR;
var FIELD_DEFAULT_FOCUS = false;
exports.FIELD_DEFAULT_FOCUS = FIELD_DEFAULT_FOCUS;
var FIELD_DEFAULT_TOUCHED = false;
exports.FIELD_DEFAULT_TOUCHED = FIELD_DEFAULT_TOUCHED;
var FIELD_DEFAULT_VALID = true;
exports.FIELD_DEFAULT_VALID = FIELD_DEFAULT_VALID;
var FIELD_DEFAULT_VALUE = undefined;
exports.FIELD_DEFAULT_VALUE = FIELD_DEFAULT_VALUE;
var FIELD_DEFAULT_VALUE_ON_FOCUS = null;
exports.FIELD_DEFAULT_VALUE_ON_FOCUS = FIELD_DEFAULT_VALUE_ON_FOCUS;
/***/ }),
/***/ "./build/constants/field-keys.js":
/*!***************************************!*\
!*** ./build/constants/field-keys.js ***!
\***************************************/
/***/ ((__unused_webpack_module, exports) => {
"use strict";
exports.__esModule = true;
exports.FIELD_KEY_VALUE_ON_FOCUS = exports.FIELD_KEY_VALUE = exports.FIELD_KEY_VALID = exports.FIELD_KEY_TOUCHED = exports.FIELD_KEY_INITIAL_VALUE_ERROR = exports.FIELD_KEY_INITIAL_VALUE = exports.FIELD_KEY_FOCUS = exports.FIELD_KEY_ERROR = exports.FIELD_KEY_DIRTY = void 0;
// keys
var FIELD_KEY_INITIAL_VALUE = 'initialValue';
exports.FIELD_KEY_INITIAL_VALUE = FIELD_KEY_INITIAL_VALUE;
var FIELD_KEY_INITIAL_VALUE_ERROR = 'initialValueError';
exports.FIELD_KEY_INITIAL_VALUE_ERROR = FIELD_KEY_INITIAL_VALUE_ERROR;
var FIELD_KEY_DIRTY = 'dirty';
exports.FIELD_KEY_DIRTY = FIELD_KEY_DIRTY;
var FIELD_KEY_ERROR = 'error';
exports.FIELD_KEY_ERROR = FIELD_KEY_ERROR;
var FIELD_KEY_FOCUS = 'focus';
exports.FIELD_KEY_FOCUS = FIELD_KEY_FOCUS;
var FIELD_KEY_TOUCHED = 'touched';
exports.FIELD_KEY_TOUCHED = FIELD_KEY_TOUCHED;
var FIELD_KEY_VALID = 'valid';
exports.FIELD_KEY_VALID = FIELD_KEY_VALID;
var FIELD_KEY_VALUE = 'value';
exports.FIELD_KEY_VALUE = FIELD_KEY_VALUE;
var FIELD_KEY_VALUE_ON_FOCUS = 'valueOnFocus';
exports.FIELD_KEY_VALUE_ON_FOCUS = FIELD_KEY_VALUE_ON_FOCUS;
/***/ }),
/***/ "./build/constants/state-defaults.js":
/*!*******************************************!*\
!*** ./build/constants/state-defaults.js ***!
\*******************************************/
/***/ ((__unused_webpack_module, exports, __webpack_require__) => {
"use strict";
exports.__esModule = true;
exports.NAMESPACE_STATE_DEFAULT = exports.FIELD_STATE_DEFAULT = void 0;
var _fieldKeys = __webpack_require__(/*! ./field-keys */ "./build/constants/field-keys.js");
var _fieldDefaults = __webpack_require__(/*! ./field-defaults */ "./build/constants/field-defaults.js");
var _FIELD_STATE_DEFAULT;
var FIELD_STATE_DEFAULT = (_FIELD_STATE_DEFAULT = {}, _FIELD_STATE_DEFAULT[_fieldKeys.FIELD_KEY_ERROR] = _fieldDefaults.FIELD_DEFAULT_ERROR, _FIELD_STATE_DEFAULT[_fieldKeys.FIELD_KEY_VALID] = _fieldDefaults.FIELD_DEFAULT_VALID, _FIELD_STATE_DEFAULT[_fieldKeys.FIELD_KEY_VALUE] = _fieldDefaults.FIELD_DEFAULT_VALUE, _FIELD_STATE_DEFAULT[_fieldKeys.FIELD_KEY_DIRTY] = _fieldDefaults.FIELD_DEFAULT_DIRTY, _FIELD_STATE_DEFAULT[_fieldKeys.FIELD_KEY_FOCUS] = _fieldDefaults.FIELD_DEFAULT_FOCUS, _FIELD_STATE_DEFAULT[_fieldKeys.FIELD_KEY_TOUCHED] = _fieldDefaults.FIELD_DEFAULT_TOUCHED, _FIELD_STATE_DEFAULT[_fieldKeys.FIELD_KEY_VALUE_ON_FOCUS] = _fieldDefaults.FIELD_DEFAULT_VALUE_ON_FOCUS, _FIELD_STATE_DEFAULT[_fieldKeys.FIELD_KEY_INITIAL_VALUE] = _fieldDefaults.FIELD_DEFAULT_DEFAULT_VALUE, _FIELD_STATE_DEFAULT[_fieldKeys.FIELD_KEY_INITIAL_VALUE_ERROR] = _fieldDefaults.FIELD_DEFAULT_DEFAULT_VALUE_ERROR, _FIELD_STATE_DEFAULT);
exports.FIELD_STATE_DEFAULT = FIELD_STATE_DEFAULT;
Object.freeze(FIELD_STATE_DEFAULT);
var NAMESPACE_STATE_DEFAULT = {};
exports.NAMESPACE_STATE_DEFAULT = NAMESPACE_STATE_DEFAULT;
Object.freeze(NAMESPACE_STATE_DEFAULT);
/***/ }),
/***/ "./build/context.js":
/*!**************************!*\
!*** ./build/context.js ***!
\**************************/
/***/ ((__unused_webpack_module, exports, __webpack_require__) => {
"use strict";
var _interopRequireDefault = (__webpack_require__(/*! @babel/runtime/helpers/interopRequireDefault */ "./node_modules/@babel/runtime/helpers/interopRequireDefault.js")["default"]);
exports.__esModule = true;
exports.BFMHooksContext = void 0;
var _extends4 = _interopRequireDefault(__webpack_require__(/*! @babel/runtime/helpers/extends */ "./node_modules/@babel/runtime/helpers/extends.js"));
var _react = __webpack_require__(/*! react */ "react");
var _helpers = __webpack_require__(/*! ./helpers */ "./build/helpers.js");
var _state = __webpack_require__(/*! ./state */ "./build/state.js");
var _fieldKeys = __webpack_require__(/*! ./constants/field-keys */ "./build/constants/field-keys.js");
var focusField = function focusField(namespace, fieldName) {
(0, _state.updateFieldStateWithCallback)(namespace, fieldName, function (currentState) {
var _ref;
return _ref = {}, _ref[_fieldKeys.FIELD_KEY_FOCUS] = true, _ref[_fieldKeys.FIELD_KEY_VALUE_ON_FOCUS] = currentState[_fieldKeys.FIELD_KEY_VALUE], _ref;
});
};
var changeField = function changeField(namespace, fieldName, value, error, dirtyCheck) {
if (dirtyCheck === void 0) {
dirtyCheck = _helpers.defaultDirtyCheck;
}
(0, _state.updateFieldStateWithCallback)(namespace, fieldName, function (currentState) {
var _extends2;
return (0, _extends4["default"])((_extends2 = {}, _extends2[_fieldKeys.FIELD_KEY_DIRTY] = dirtyCheck(value, currentState[_fieldKeys.FIELD_KEY_VALUE_ON_FOCUS]), _extends2), (0, _helpers.mapFieldValueAndError)(value, error));
});
};
var blurField = function blurField(namespace, fieldName) {
(0, _state.updateFieldStateWithCallback)(namespace, fieldName, function () {
var _ref2;
return _ref2 = {}, _ref2[_fieldKeys.FIELD_KEY_FOCUS] = false, _ref2[_fieldKeys.FIELD_KEY_TOUCHED] = true, _ref2[_fieldKeys.FIELD_KEY_VALUE_ON_FOCUS] = null, _ref2;
});
};
var initField = function initField(namespace, fieldName, value, error) {
if (true) {
if (!(0, _helpers.validateNamespace)(namespace)) {
throw new Error('Expected string with a minimal length of 1 for `namespace`');
}
if (!(0, _helpers.validateFieldName)(fieldName)) {
throw new Error('Expected string with a minimal length of 1 for `fieldName`');
}
}
(0, _state.initFieldState)(namespace, fieldName, value, error);
};
/**
* sets default value only when the field is not touched or has focus
* this way you can still change the input value after first rendering
*/
var initialValueField = function initialValueField(namespace, fieldName, initialValue, error) {
return (0, _state.updateFieldStateWithCallback)(namespace, fieldName, function (currentState) {
var _extends3;
// only update value and error when field is not touched or has focus
var updateState = !currentState[_fieldKeys.FIELD_KEY_TOUCHED] && !currentState[_fieldKeys.FIELD_KEY_FOCUS] && currentState[_fieldKeys.FIELD_KEY_VALUE] !== initialValue ? (0, _helpers.mapFieldValueAndError)(initialValue, error) : {};
// update error if value is still default
if (currentState[_fieldKeys.FIELD_KEY_VALUE] === initialValue && currentState[_fieldKeys.FIELD_KEY_ERROR] !== error) {
updateState.error = error;
updateState.valid = !error;
}
return (0, _extends4["default"])({}, updateState, (_extends3 = {}, _extends3[_fieldKeys.FIELD_KEY_INITIAL_VALUE] = initialValue, _extends3[_fieldKeys.FIELD_KEY_INITIAL_VALUE_ERROR] = error, _extends3));
});
};
var BFMHooksContext = (0, _react.createContext)({
blurField: blurField,
changeField: changeField,
initialValueField: initialValueField,
focusField: focusField,
getFieldState: _state.getFieldState,
getNamespaceState: _state.getNamespaceState,
initField: initField,
removeField: _state.removeField,
createGetSnapshotFieldState: _state.createGetSnapshotFieldState,
createGetSnapshotNamespaceState: _state.createGetSnapshotNamespaceState,
createSubscribeToField: _state.createSubscribeToField,
createSubscribeToNamespace: _state.createSubscribeToNamespace
});
exports.BFMHooksContext = BFMHooksContext;
/***/ }),
/***/ "./build/field/actions.js":
/*!********************************!*\
!*** ./build/field/actions.js ***!
\********************************/
/***/ ((__unused_webpack_module, exports, __webpack_require__) => {
"use strict";
var _interopRequireDefault = (__webpack_require__(/*! @babel/runtime/helpers/interopRequireDefault */ "./node_modules/@babel/runtime/helpers/interopRequireDefault.js")["default"]);
exports.__esModule = true;
exports.resetField = exports.clearField = void 0;
var _extends2 = _interopRequireDefault(__webpack_require__(/*! @babel/runtime/helpers/extends */ "./node_modules/@babel/runtime/helpers/extends.js"));
var _helpers = __webpack_require__(/*! ../helpers */ "./build/helpers.js");
var _state = __webpack_require__(/*! ../state */ "./build/state.js");
var _stateDefaults = __webpack_require__(/*! ../constants/state-defaults */ "./build/constants/state-defaults.js");
var _fieldDefaults = __webpack_require__(/*! ../constants/field-defaults */ "./build/constants/field-defaults.js");
var _fieldKeys = __webpack_require__(/*! ../constants/field-keys */ "./build/constants/field-keys.js");
/**
* Reset field, but ignoring default value
*/
var clearField = function clearField(namespace, fieldName) {
(0, _state.updateFieldStateWithCallback)(namespace, fieldName, function () {
return (0, _extends2["default"])({}, _stateDefaults.FIELD_STATE_DEFAULT, (0, _helpers.mapFieldValueAndError)(_fieldDefaults.FIELD_DEFAULT_VALUE, _fieldDefaults.FIELD_DEFAULT_ERROR));
});
};
/**
* Reset field to default state and setting last provided default value
*/
exports.clearField = clearField;
var resetField = function resetField(namespace, fieldName) {
(0, _state.updateFieldStateWithCallback)(namespace, fieldName, function (currentState) {
return (0, _extends2["default"])({}, _stateDefaults.FIELD_STATE_DEFAULT, (0, _helpers.mapFieldValueAndError)(currentState[_fieldKeys.FIELD_KEY_INITIAL_VALUE] || _fieldDefaults.FIELD_DEFAULT_VALUE, currentState[_fieldKeys.FIELD_KEY_INITIAL_VALUE_ERROR]));
});
};
exports.resetField = resetField;
/***/ }),
/***/ "./build/field/getters.js":
/*!********************************!*\
!*** ./build/field/getters.js ***!
\********************************/
/***/ ((__unused_webpack_module, exports, __webpack_require__) => {
"use strict";
exports.__esModule = true;
exports.isFieldValid = exports.isFieldTouched = exports.isFieldDirty = exports.hasFieldFocus = exports.getFieldValueOnFocus = exports.getFieldValue = exports.getFieldInitialValue = exports.getFieldError = void 0;
var _state = __webpack_require__(/*! ../state */ "./build/state.js");
var _fieldKeys = __webpack_require__(/*! ../constants/field-keys */ "./build/constants/field-keys.js");
var getFieldError = function getFieldError(namespace, fieldName) {
var fieldState = (0, _state.getFieldState)(namespace, fieldName);
return fieldState == null ? void 0 : fieldState[_fieldKeys.FIELD_KEY_ERROR];
};
exports.getFieldError = getFieldError;
var getFieldValue = function getFieldValue(namespace, fieldName) {
var fieldState = (0, _state.getFieldState)(namespace, fieldName);
return fieldState == null ? void 0 : fieldState[_fieldKeys.FIELD_KEY_VALUE];
};
exports.getFieldValue = getFieldValue;
var getFieldInitialValue = function getFieldInitialValue(namespace, fieldName) {
var fieldState = (0, _state.getFieldState)(namespace, fieldName);
return fieldState == null ? void 0 : fieldState[_fieldKeys.FIELD_KEY_INITIAL_VALUE];
};
exports.getFieldInitialValue = getFieldInitialValue;
var getFieldValueOnFocus = function getFieldValueOnFocus(namespace, fieldName) {
var fieldState = (0, _state.getFieldState)(namespace, fieldName);
return fieldState == null ? void 0 : fieldState[_fieldKeys.FIELD_KEY_VALUE_ON_FOCUS];
};
exports.getFieldValueOnFocus = getFieldValueOnFocus;
var hasFieldFocus = function hasFieldFocus(namespace, fieldName) {
var fieldState = (0, _state.getFieldState)(namespace, fieldName);
return (fieldState == null ? void 0 : fieldState[_fieldKeys.FIELD_KEY_FOCUS]) || false;
};
exports.hasFieldFocus = hasFieldFocus;
var isFieldDirty = function isFieldDirty(namespace, fieldName) {
var fieldState = (0, _state.getFieldState)(namespace, fieldName);
return (fieldState == null ? void 0 : fieldState[_fieldKeys.FIELD_KEY_DIRTY]) || false;
};
exports.isFieldDirty = isFieldDirty;
var isFieldTouched = function isFieldTouched(namespace, fieldName) {
var fieldState = (0, _state.getFieldState)(namespace, fieldName);
return (fieldState == null ? void 0 : fieldState[_fieldKeys.FIELD_KEY_TOUCHED]) || false;
};
exports.isFieldTouched = isFieldTouched;
var isFieldValid = function isFieldValid(namespace, fieldName) {
var fieldState = (0, _state.getFieldState)(namespace, fieldName);
return (fieldState == null ? void 0 : fieldState[_fieldKeys.FIELD_KEY_VALID]) || false;
};
exports.isFieldValid = isFieldValid;
/***/ }),
/***/ "./build/field/hooks.js":
/*!******************************!*\
!*** ./build/field/hooks.js ***!
\******************************/
/***/ ((__unused_webpack_module, exports, __webpack_require__) => {
"use strict";
exports.__esModule = true;
exports.useFieldValueOnFocus = exports.useFieldValue = exports.useFieldState = exports.useFieldIsValid = exports.useFieldIsTouched = exports.useFieldIsDirty = exports.useFieldHasFocus = exports.useFieldError = void 0;
var _react = __webpack_require__(/*! react */ "react");
var _context = __webpack_require__(/*! ../context */ "./build/context.js");
var _helpers = __webpack_require__(/*! ../helpers */ "./build/helpers.js");
var _fieldKeys = __webpack_require__(/*! ../constants/field-keys */ "./build/constants/field-keys.js");
var getServerSnapshot = function getServerSnapshot() {
return undefined;
};
var useFieldState = function useFieldState(namespace, fieldName) {
if (true) {
if (!(0, _helpers.validateNamespace)(namespace)) {
throw new Error('Expected string with a minimal length of 1 for `namespace`');
}
if (!(0, _helpers.validateFieldName)(fieldName)) {
throw new Error('Expected string with a minimal length of 1 for `fieldName`');
}
}
var _useContext = (0, _react.useContext)(_context.BFMHooksContext),
createSubscribeToField = _useContext.createSubscribeToField,
createGetSnapshotFieldState = _useContext.createGetSnapshotFieldState;
var subscribe = (0, _react.useMemo)(function () {
return createSubscribeToField(namespace, fieldName);
}, [createSubscribeToField, fieldName, namespace]);
var getSnapshot = (0, _react.useMemo)(function () {
return createGetSnapshotFieldState(namespace, fieldName);
}, [createGetSnapshotFieldState, fieldName, namespace]);
return (0, _react.useSyncExternalStore)(subscribe, getSnapshot, getServerSnapshot);
};
exports.useFieldState = useFieldState;
var useFieldError = function useFieldError(namespace, fieldName) {
var fieldState = useFieldState(namespace, fieldName);
return fieldState == null ? void 0 : fieldState[_fieldKeys.FIELD_KEY_ERROR];
};
exports.useFieldError = useFieldError;
var useFieldHasFocus = function useFieldHasFocus(namespace, fieldName) {
var fieldState = useFieldState(namespace, fieldName);
return fieldState == null ? void 0 : fieldState[_fieldKeys.FIELD_KEY_FOCUS];
};
exports.useFieldHasFocus = useFieldHasFocus;
var useFieldIsDirty = function useFieldIsDirty(namespace, fieldName) {
var fieldState = useFieldState(namespace, fieldName);
return fieldState == null ? void 0 : fieldState[_fieldKeys.FIELD_KEY_DIRTY];
};
exports.useFieldIsDirty = useFieldIsDirty;
var useFieldIsTouched = function useFieldIsTouched(namespace, fieldName) {
var fieldState = useFieldState(namespace, fieldName);
return fieldState == null ? void 0 : fieldState[_fieldKeys.FIELD_KEY_TOUCHED];
};
exports.useFieldIsTouched = useFieldIsTouched;
var useFieldIsValid = function useFieldIsValid(namespace, fieldName) {
var fieldState = useFieldState(namespace, fieldName);
return fieldState == null ? void 0 : fieldState[_fieldKeys.FIELD_KEY_VALID];
};
exports.useFieldIsValid = useFieldIsValid;
var useFieldValue = function useFieldValue(namespace, fieldName) {
var fieldState = useFieldState(namespace, fieldName);
return fieldState == null ? void 0 : fieldState[_fieldKeys.FIELD_KEY_VALUE];
};
exports.useFieldValue = useFieldValue;
var useFieldValueOnFocus = function useFieldValueOnFocus(namespace, fieldName) {
var fieldState = useFieldState(namespace, fieldName);
return fieldState == null ? void 0 : fieldState[_fieldKeys.FIELD_KEY_VALUE_ON_FOCUS];
};
exports.useFieldValueOnFocus = useFieldValueOnFocus;
/***/ }),
/***/ "./build/helpers.js":
/*!**************************!*\
!*** ./build/helpers.js ***!
\**************************/
/***/ ((__unused_webpack_module, exports, __webpack_require__) => {
"use strict";
exports.__esModule = true;
exports.validateNamespace = exports.validateFieldName = exports.mapFieldValueAndError = exports.defaultValueToInput = exports.defaultEventToValue = exports.defaultDirtyCheck = exports.checkedEventToValue = void 0;
var _fieldKeys = __webpack_require__(/*! ./constants/field-keys */ "./build/constants/field-keys.js");
var _fieldDefaults = __webpack_require__(/*! ./constants/field-defaults */ "./build/constants/field-defaults.js");
var checkedEventToValue = function checkedEventToValue(event) {
var _event$target;
return event == null || (_event$target = event.target) == null ? void 0 : _event$target.checked;
};
exports.checkedEventToValue = checkedEventToValue;
var defaultEventToValue = function defaultEventToValue(event) {
var _event$target2;
return event == null || (_event$target2 = event.target) == null ? void 0 : _event$target2.value;
};
exports.defaultEventToValue = defaultEventToValue;
var defaultDirtyCheck = function defaultDirtyCheck(newValue, valueOnFocus) {
return newValue !== valueOnFocus;
};
exports.defaultDirtyCheck = defaultDirtyCheck;
var defaultValueToInput = function defaultValueToInput(value) {
return value !== undefined ? value : '';
};
exports.defaultValueToInput = defaultValueToInput;
var mapFieldValueAndError = function mapFieldValueAndError(value, error) {
var _ref;
return _ref = {}, _ref[_fieldKeys.FIELD_KEY_ERROR] = error || _fieldDefaults.FIELD_DEFAULT_ERROR, _ref[_fieldKeys.FIELD_KEY_VALID] = !error, _ref[_fieldKeys.FIELD_KEY_VALUE] = value, _ref;
};
exports.mapFieldValueAndError = mapFieldValueAndError;
var validateFieldName = function validateFieldName(fieldName) {
return (fieldName == null ? void 0 : fieldName.length) > 0;
};
exports.validateFieldName = validateFieldName;
var validateNamespace = function validateNamespace(namespace) {
return (namespace == null ? void 0 : namespace.length) > 0;
};
exports.validateNamespace = validateNamespace;
/***/ }),
/***/ "./build/index.js":
/*!************************!*\
!*** ./build/index.js ***!
\************************/
/***/ ((__unused_webpack_module, exports, __webpack_require__) => {
"use strict";
exports.__esModule = true;
exports.validateNamespace = exports.validateFieldName = exports.useNamespaceValuesOnFocus = exports.useNamespaceValues = exports.useNamespaceState = exports.useNamespaceKeyValues = exports.useNamespaceKeyIsSome = exports.useNamespaceKeyIsEvery = exports.useNamespaceIsValid = exports.useNamespaceIsTouched = exports.useNamespaceIsDirty = exports.useNamespaceHasFocus = exports.useNamespaceErrors = exports.useFieldValueOnFocus = exports.useFieldValue = exports.useFieldState = exports.useFieldIsValid = exports.useFieldIsTouched = exports.useFieldIsDirty = exports.useFieldHasFocus = exports.useFieldError = exports.useConnectField = exports.updateFieldStateWithCallback = exports.resetNamespace = exports.resetField = exports.removeField = exports.mapFieldValueAndError = exports.isNamespaceValid = exports.isNamespaceTouched = exports.isNamespaceDirty = exports.isFieldValid = exports.isFieldTouched = exports.isFieldDirty = exports.initFieldState = exports.hasNamespaceFocus = exports.hasFieldFocus = exports.getNamespaceValuesOnFocus = exports.getNamespaceValues = exports.getNamespaceState = exports.getNamespaceKeyValues = exports.getNamespaceKeyIsSome = exports.getNamespaceKeyIsEvery = exports.getNamespaceInitialValues = exports.getNamespaceErrors = exports.getFieldValueOnFocus = exports.getFieldValue = exports.getFieldState = exports.getFieldInitialValue = exports.getFieldError = exports.defaultValueToInput = exports.defaultEventToValue = exports.defaultDirtyCheck = exports.createSubscribeToNamespace = exports.createSubscribeToField = exports.createGetSnapshotNamespaceState = exports.createGetSnapshotFieldState = exports.clearNamespace = exports.clearField = exports.checkedEventToValue = exports.NAMESPACE_STATE_DEFAULT = exports.FIELD_STATE_DEFAULT = exports.FIELD_KEY_VALUE_ON_FOCUS = exports.FIELD_KEY_VALUE = exports.FIELD_KEY_VALID = exports.FIELD_KEY_TOUCHED = exports.FIELD_KEY_INITIAL_VALUE_ERROR = exports.FIELD_KEY_INITIAL_VALUE = exports.FIELD_KEY_FOCUS = exports.FIELD_KEY_ERROR = exports.FIELD_KEY_DIRTY = exports.FIELD_DEFAULT_VALUE_ON_FOCUS = exports.FIELD_DEFAULT_VALUE = exports.FIELD_DEFAULT_VALID = exports.FIELD_DEFAULT_TOUCHED = exports.FIELD_DEFAULT_FOCUS = exports.FIELD_DEFAULT_ERROR = exports.FIELD_DEFAULT_DIRTY = exports.FIELD_DEFAULT_DEFAULT_VALUE_ERROR = exports.FIELD_DEFAULT_DEFAULT_VALUE = exports.BFMHooksContext = void 0;
var _context = __webpack_require__(/*! ./context */ "./build/context.js");
exports.BFMHooksContext = _context.BFMHooksContext;
var _fieldKeys = __webpack_require__(/*! ./constants/field-keys */ "./build/constants/field-keys.js");
exports.FIELD_KEY_INITIAL_VALUE = _fieldKeys.FIELD_KEY_INITIAL_VALUE;
exports.FIELD_KEY_INITIAL_VALUE_ERROR = _fieldKeys.FIELD_KEY_INITIAL_VALUE_ERROR;
exports.FIELD_KEY_DIRTY = _fieldKeys.FIELD_KEY_DIRTY;
exports.FIELD_KEY_ERROR = _fieldKeys.FIELD_KEY_ERROR;
exports.FIELD_KEY_FOCUS = _fieldKeys.FIELD_KEY_FOCUS;
exports.FIELD_KEY_TOUCHED = _fieldKeys.FIELD_KEY_TOUCHED;
exports.FIELD_KEY_VALID = _fieldKeys.FIELD_KEY_VALID;
exports.FIELD_KEY_VALUE = _fieldKeys.FIELD_KEY_VALUE;
exports.FIELD_KEY_VALUE_ON_FOCUS = _fieldKeys.FIELD_KEY_VALUE_ON_FOCUS;
var _fieldDefaults = __webpack_require__(/*! ./constants/field-defaults */ "./build/constants/field-defaults.js");
exports.FIELD_DEFAULT_DEFAULT_VALUE = _fieldDefaults.FIELD_DEFAULT_DEFAULT_VALUE;
exports.FIELD_DEFAULT_DEFAULT_VALUE_ERROR = _fieldDefaults.FIELD_DEFAULT_DEFAULT_VALUE_ERROR;
exports.FIELD_DEFAULT_DIRTY = _fieldDefaults.FIELD_DEFAULT_DIRTY;
exports.FIELD_DEFAULT_ERROR = _fieldDefaults.FIELD_DEFAULT_ERROR;
exports.FIELD_DEFAULT_FOCUS = _fieldDefaults.FIELD_DEFAULT_FOCUS;
exports.FIELD_DEFAULT_TOUCHED = _fieldDefaults.FIELD_DEFAULT_TOUCHED;
exports.FIELD_DEFAULT_VALID = _fieldDefaults.FIELD_DEFAULT_VALID;
exports.FIELD_DEFAULT_VALUE = _fieldDefaults.FIELD_DEFAULT_VALUE;
exports.FIELD_DEFAULT_VALUE_ON_FOCUS = _fieldDefaults.FIELD_DEFAULT_VALUE_ON_FOCUS;
var _stateDefaults = __webpack_require__(/*! ./constants/state-defaults */ "./build/constants/state-defaults.js");
exports.FIELD_STATE_DEFAULT = _stateDefaults.FIELD_STATE_DEFAULT;
exports.NAMESPACE_STATE_DEFAULT = _stateDefaults.NAMESPACE_STATE_DEFAULT;
var _actions = __webpack_require__(/*! ./field/actions */ "./build/field/actions.js");
exports.clearField = _actions.clearField;
exports.resetField = _actions.resetField;
var _getters = __webpack_require__(/*! ./field/getters */ "./build/field/getters.js");
exports.getFieldInitialValue = _getters.getFieldInitialValue;
exports.getFieldError = _getters.getFieldError;
exports.getFieldValue = _getters.getFieldValue;
exports.getFieldValueOnFocus = _getters.getFieldValueOnFocus;
exports.hasFieldFocus = _getters.hasFieldFocus;
exports.isFieldDirty = _getters.isFieldDirty;
exports.isFieldTouched = _getters.isFieldTouched;
exports.isFieldValid = _getters.isFieldValid;
var _hooks = __webpack_require__(/*! ./field/hooks */ "./build/field/hooks.js");
exports.useFieldError = _hooks.useFieldError;
exports.useFieldHasFocus = _hooks.useFieldHasFocus;
exports.useFieldIsDirty = _hooks.useFieldIsDirty;
exports.useFieldIsTouched = _hooks.useFieldIsTouched;
exports.useFieldIsValid = _hooks.useFieldIsValid;
exports.useFieldState = _hooks.useFieldState;
exports.useFieldValue = _hooks.useFieldValue;
exports.useFieldValueOnFocus = _hooks.useFieldValueOnFocus;
var _helpers = __webpack_require__(/*! ./helpers */ "./build/helpers.js");
exports.checkedEventToValue = _helpers.checkedEventToValue;
exports.defaultDirtyCheck = _helpers.defaultDirtyCheck;
exports.defaultEventToValue = _helpers.defaultEventToValue;
exports.defaultValueToInput = _helpers.defaultValueToInput;
exports.mapFieldValueAndError = _helpers.mapFieldValueAndError;
exports.validateFieldName = _helpers.validateFieldName;
exports.validateNamespace = _helpers.validateNamespace;
var _actions2 = __webpack_require__(/*! ./namespace/actions */ "./build/namespace/actions.js");
exports.clearNamespace = _actions2.clearNamespace;
exports.resetNamespace = _actions2.resetNamespace;
var _hooks2 = __webpack_require__(/*! ./namespace/hooks */ "./build/namespace/hooks.js");
exports.useNamespaceErrors = _hooks2.useNamespaceErrors;
exports.useNamespaceHasFocus = _hooks2.useNamespaceHasFocus;
exports.useNamespaceIsDirty = _hooks2.useNamespaceIsDirty;
exports.useNamespaceIsTouched = _hooks2.useNamespaceIsTouched;
exports.useNamespaceIsValid = _hooks2.useNamespaceIsValid;
exports.useNamespaceKeyIsEvery = _hooks2.useNamespaceKeyIsEvery;
exports.useNamespaceKeyIsSome = _hooks2.useNamespaceKeyIsSome;
exports.useNamespaceKeyValues = _hooks2.useNamespaceKeyValues;
exports.useNamespaceState = _hooks2.useNamespaceState;
exports.useNamespaceValues = _hooks2.useNamespaceValues;
exports.useNamespaceValuesOnFocus = _hooks2.useNamespaceValuesOnFocus;
var _getters2 = __webpack_require__(/*! ./namespace/getters */ "./build/namespace/getters.js");
exports.getNamespaceInitialValues = _getters2.getNamespaceInitialValues;
exports.getNamespaceErrors = _getters2.getNamespaceErrors;
exports.getNamespaceKeyIsEvery = _getters2.getNamespaceKeyIsEvery;
exports.getNamespaceKeyIsSome = _getters2.getNamespaceKeyIsSome;
exports.getNamespaceKeyValues = _getters2.getNamespaceKeyValues;
exports.getNamespaceValues = _getters2.getNamespaceValues;
exports.getNamespaceValuesOnFocus = _getters2.getNamespaceValuesOnFocus;
exports.hasNamespaceFocus = _getters2.hasNamespaceFocus;
exports.isNamespaceDirty = _getters2.isNamespaceDirty;
exports.isNamespaceTouched = _getters2.isNamespaceTouched;
exports.isNamespaceValid = _getters2.isNamespaceValid;
var _state = __webpack_require__(/*! ./state */ "./build/state.js");
exports.getFieldState = _state.getFieldState;
exports.getNamespaceState = _state.getNamespaceState;
exports.initFieldState = _state.initFieldState;
exports.removeField = _state.removeField;
exports.createGetSnapshotFieldState = _state.createGetSnapshotFieldState;
exports.createGetSnapshotNamespaceState = _state.createGetSnapshotNamespaceState;
exports.createSubscribeToField = _state.createSubscribeToField;
exports.createSubscribeToNamespace = _state.createSubscribeToNamespace;
exports.updateFieldStateWithCallback = _state.updateFieldStateWithCallback;
var _useConnectField = __webpack_require__(/*! ./use-connect-field */ "./build/use-connect-field.js");
exports.useConnectField = _useConnectField.useConnectField;
/***/ }),
/***/ "./build/namespace/actions.js":
/*!************************************!*\
!*** ./build/namespace/actions.js ***!
\************************************/
/***/ ((__unused_webpack_module, exports, __webpack_require__) => {
"use strict";
exports.__esModule = true;
exports.resetNamespace = exports.clearNamespace = void 0;
var _ = __webpack_require__(/*! .. */ "./build/index.js");
var _state = __webpack_require__(/*! ../state */ "./build/state.js");
/**
* Reset namespace, but ignoring the default values of the fields
*/
var clearNamespace = function clearNamespace(namespace) {
var fieldNames = Object.keys((0, _state.getNamespaceState)(namespace) || {});
fieldNames.forEach(function (fieldName) {
(0, _.clearField)(namespace, fieldName);
});
};
/**
* Reset namespace to default state and setting last provided default value per field
*/
exports.clearNamespace = clearNamespace;
var resetNamespace = function resetNamespace(namespace) {
var fieldNames = Object.keys((0, _state.getNamespaceState)(namespace) || {});
fieldNames.forEach(function (fieldName) {
(0, _.resetField)(namespace, fieldName);
});
};
exports.resetNamespace = resetNamespace;
/***/ }),
/***/ "./build/namespace/getters.js":
/*!************************************!*\
!*** ./build/namespace/getters.js ***!
\************************************/
/***/ ((__unused_webpack_module, exports, __webpack_require__) => {
"use strict";
exports.__esModule = true;
exports.isNamespaceValid = exports.isNamespaceTouched = exports.isNamespaceDirty = exports.hasNamespaceFocus = exports.getNamespaceValuesOnFocus = exports.getNamespaceValues = exports.getNamespaceKeyValues = exports.getNamespaceKeyIsSome = exports.getNamespaceKeyIsEvery = exports.getNamespaceInitialValues = exports.getNamespaceErrors = void 0;
var _state = __webpack_require__(/*! ../state */ "./build/state.js");
var _fieldKeys = __webpack_require__(/*! ../constants/field-keys */ "./build/constants/field-keys.js");
var getNamespaceKeyValues = function getNamespaceKeyValues(namespace, key) {
var namespaceState = (0, _state.getNamespaceState)(namespace);
return namespaceState && Object.entries(namespaceState).reduce(function (values, _ref) {
var fieldName = _ref[0],
fieldState = _ref[1];
values[fieldName] = fieldState[key];
return values;
}, {});
};
exports.getNamespaceKeyValues = getNamespaceKeyValues;
var getNamespaceKeyIsEvery = function getNamespaceKeyIsEvery(namespace, key) {
var namespaceState = (0, _state.getNamespaceState)(namespace);
return namespaceState && Object.values(namespaceState).every(function (fieldState) {
return fieldState[key] || false;
});
};
exports.getNamespaceKeyIsEvery = getNamespaceKeyIsEvery;
var getNamespaceKeyIsSome = function getNamespaceKeyIsSome(namespace, key) {
var namespaceState = (0, _state.getNamespaceState)(namespace);
return namespaceState && Object.values(namespaceState).some(function (fieldState) {
return fieldState[key] || false;
});
};
exports.getNamespaceKeyIsSome = getNamespaceKeyIsSome;
var getNamespaceInitialValues = function getNamespaceInitialValues(namespace) {
return getNamespaceKeyValues(namespace, _fieldKeys.FIELD_KEY_INITIAL_VALUE);
};
exports.getNamespaceInitialValues = getNamespaceInitialValues;
var getNamespaceErrors = function getNamespaceErrors(namespace) {
return getNamespaceKeyValues(namespace, _fieldKeys.FIELD_KEY_ERROR);
};
exports.getNamespaceErrors = getNamespaceErrors;
var getNamespaceValues = function getNamespaceValues(namespace) {
return getNamespaceKeyValues(namespace, _fieldKeys.FIELD_KEY_VALUE);
};
exports.getNamespaceValues = getNamespaceValues;
var getNamespaceValuesOnFocus = function getNamespaceValuesOnFocus(namespace) {
return getNamespaceKeyValues(namespace, _fieldKeys.FIELD_KEY_VALUE_ON_FOCUS);
};
exports.getNamespaceValuesOnFocus = getNamespaceValuesOnFocus;
var hasNamespaceFocus = function hasNamespaceFocus(namespace) {
return getNamespaceKeyIsSome(namespace, _fieldKeys.FIELD_KEY_FOCUS);
};
exports.hasNamespaceFocus = hasNamespaceFocus;
var isNamespaceDirty = function isNamespaceDirty(namespace) {
return getNamespaceKeyIsSome(namespace, _fieldKeys.FIELD_KEY_DIRTY);
};
exports.isNamespaceDirty = isNamespaceDirty;
var isNamespaceTouched = function isNamespaceTouched(namespace) {
return getNamespaceKeyIsSome(namespace, _fieldKeys.FIELD_KEY_TOUCHED);
};
exports.isNamespaceTouched = isNamespaceTouched;
var isNamespaceValid = function isNamespaceValid(namespace) {
return getNamespaceKeyIsEvery(namespace, _fieldKeys.FIELD_KEY_VALID);
};
exports.isNamespaceValid = isNamespaceValid;
/***/ }),
/***/ "./build/namespace/hooks.js":
/*!**********************************!*\
!*** ./build/namespace/hooks.js ***!
\**********************************/
/***/ ((__unused_webpack_module, exports, __webpack_require__) => {
"use strict";
exports.__esModule = true;
exports.useNamespaceValuesOnFocus = exports.useNamespaceValues = exports.useNamespaceState = exports.useNamespaceKeyValues = exports.useNamespaceKeyIsSome = exports.useNamespaceKeyIsEvery = exports.useNamespaceIsValid = exports.useNamespaceIsTouched = exports.useNamespaceIsDirty = exports.useNamespaceHasFocus = exports.useNamespaceErrors = void 0;
var _react = __webpack_require__(/*! react */ "react");
var _context = __webpack_require__(/*! ../context */ "./build/context.js");
var _helpers = __webpack_require__(/*! ../helpers */ "./build/helpers.js");
var _fieldKeys = __webpack_require__(/*! ../constants/field-keys */ "./build/constants/field-keys.js");
var _stateDefaults = __webpack_require__(/*! ../constants/state-defaults */ "./build/constants/state-defaults.js");
var getServerSnapshot = function getServerSnapshot() {
return undefined;
};
var useNamespaceState = function useNamespaceState(namespace) {
if (true) {
if (!(0, _helpers.validateNamespace)(namespace)) {
throw new Error('Expected string with a minimal length of 1 for `namespace`');
}
}
var _useContext = (0, _react.useContext)(_context.BFMHooksContext),
createSubscribeToNamespace = _useContext.createSubscribeToNamespace,
createGetSnapshotNamespaceState = _useContext.createGetSnapshotNamespaceState;
var subscribe = (0, _react.useMemo)(function () {
return createSubscribeToNamespace(namespace);
}, [createSubscribeToNamespace, namespace]);
var getSnapshot = (0, _react.useMemo)(function () {
return createGetSnapshotNamespaceState(namespace);
}, [createGetSnapshotNamespaceState, namespace]);
return (0, _react.useSyncExternalStore)(subscribe, getSnapshot, getServerSnapshot);
};
exports.useNamespaceState = useNamespaceState;
var useNamespaceKeyValues = function useNamespaceKeyValues(namespace, key) {
var namespaceState = useNamespaceState(namespace);
return namespaceState && Object.entries(namespaceState).reduce(function (values, _ref) {
var fieldName = _ref[0],
fieldState = _ref[1];
values[fieldName] = fieldState[key];
return values;
}, {});
};
exports.useNamespaceKeyValues = useNamespaceKeyValues;
var useNamespaceKeyIsEvery = function useNamespaceKeyIsEvery(namespace, key) {
var namespaceState = useNamespaceState(namespace);
return namespaceState && Object.values(namespaceState || _stateDefaults.NAMESPACE_STATE_DEFAULT).every(function (fieldState) {
return fieldState[key] || false;
});
};
exports.useNamespaceKeyIsEvery = useNamespaceKeyIsEvery;
var useNamespaceKeyIsSome = function useNamespaceKeyIsSome(namespace, key) {
var namespaceState = useNamespaceState(namespace);
return namespaceState && Object.values(namespaceState || _stateDefaults.NAMESPACE_STATE_DEFAULT).some(function (fieldState) {
return fieldState[key] || false;
});
};
/**
* Falsy error values are always returned as null
*/
exports.useNamespaceKeyIsSome = useNamespaceKeyIsSome;
var useNamespaceErrors = function useNamespaceErrors(namespace) {
return useNamespaceKeyValues(namespace, _fieldKeys.FIELD_KEY_ERROR);
};
exports.useNamespaceErrors = useNamespaceErrors;
var useNamespaceHasFocus = function useNamespaceHasFocus(namespace) {
return useNamespaceKeyIsSome(namespace, _fieldKeys.FIELD_KEY_FOCUS);
};
exports.useNamespaceHasFocus = useNamespaceHasFocus;
var useNamespaceIsDirty = function useNamespaceIsDirty(namespace) {
return useNamespaceKeyIsSome(namespace, _fieldKeys.FIELD_KEY_DIRTY);
};
exports.useNamespaceIsDirty = useNamespaceIsDirty;
var useNamespaceIsTouched = function useNamespaceIsTouched(namespace) {
return useNamespaceKeyIsSome(namespace, _fieldKeys.FIELD_KEY_TOUCHED);
};
exports.useNamespaceIsTouched = useNamespaceIsTouched;
var useNamespaceIsValid = function useNamespaceIsValid(namespace) {
return useNamespaceKeyIsEvery(namespace, _fieldKeys.FIELD_KEY_VALID);
};
exports.useNamespaceIsValid = useNamespaceIsValid;
var useNamespaceValues = function useNamespaceValues(namespace) {
return useNamespaceKeyValues(namespace, _fieldKeys.FIELD_KEY_VALUE);
};
exports.useNamespaceValues = useNamespaceValues;
var useNamespaceValuesOnFocus = function useNamespaceValuesOnFocus(namespace) {
return useNamespaceKeyValues(namespace, _fieldKeys.FIELD_KEY_VALUE_ON_FOCUS);
};
exports.useNamespaceValuesOnFocus = useNamespaceValuesOnFocus;
/***/ }),
/***/ "./build/state.js":
/*!************************!*\
!*** ./build/state.js ***!
\************************/
/***/ ((__unused_webpack_module, exports, __webpack_require__) => {
"use strict";
var _interopRequireDefault = (__webpack_require__(/*! @babel/runtime/helpers/interopRequireDefault */ "./node_modules/@babel/runtime/helpers/interopRequireDefault.js")["default"]);
exports.__esModule = true;
exports.updateFieldStateWithCallback = exports.removeField = exports.initFieldState = exports.getNamespaceState = exports.getFieldState = exports.createSubscribeToNamespace = exports.createSubscribeToField = exports.createGetSnapshotNamespaceState = exports.createGetSnapshotFieldState = void 0;
var _extends4 = _interopRequireDefault(__webpack_require__(/*! @babel/runtime/helpers/extends */ "./node_modules/@babel/runtime/helpers/extends.js"));
var _stateDefaults = __webpack_require__(/*! ./constants/state-defaults */ "./build/constants/state-defaults.js");
var _helpers = __webpack_require__(/*! ./helpers */ "./build/helpers.js");
var stateCreator = function stateCreator() {
var state = {};
var subscribers = {};
var idCounter = 0;
var getFieldState = function getFieldState(namespace, fieldName) {
var _state$namespace;
return (_state$namespace = state[namespace]) == null ? void 0 : _state$namespace[fieldName];
};
var getNamespaceState = function getNamespaceState(namespace) {
return state[namespace];
};
var createGetSnapshotFieldState = function createGetSnapshotFieldState(namespace, fieldName) {
return function () {
return getFieldState(namespace, fieldName);
};
};
var createGetSnapshotNamespaceState = function createGetSnapshotNamespaceState(namespace) {
return function () {
return getNamespaceState(namespace);
};
};
var subscribe = function subscribe(listener, namespace, fieldName) {
if (!subscribers[namespace]) {
subscribers[namespace] = new Map();
}
var id = ++idCounter;
subscribers[namespace].set(id, {
listener: listener,
fieldName: fieldName
});
return function () {
subscribers[namespace] && subscribers[namespace].has(id) && subscribers[namespace]["delete"](id);
};
};
var createSubscribeToField = function createSubscribeToField(namespace, fieldName) {
return function (listener) {
return subscribe(listener, namespace, fieldName);
};
};
var createSubscribeToNamespace = function createSubscribeToNamespace(namespace) {
return function (listener) {
return subscribe(listener, namespace);
};
};
var triggerSubscribers = function triggerSubscribers(namespace, _fieldName) {
var namespaceSubscribers = subscribers[namespace];
if (namespaceSubscribers) {
namespaceSubscribers.forEach(function (_ref) {
var listener = _ref.listener,
fieldName = _ref.fieldName;
if (!fieldName) {
listener();
}
if (fieldName === _fieldName) {
listener();
}
});
}
};
var initFieldState = function initFieldState(namespace, fieldName, value, error) {
var _extends2;
state[namespace] = (0, _extends4["default"])({}, state[namespace], (_extends2 = {}, _extends2[fieldName] = (0, _extends4["default"])({}, _stateDefaults.FIELD_STATE_DEFAULT, (0, _helpers.mapFieldValueAndError)(value, error)), _extends2));
triggerSubscribers(namespace, fieldName);
};
var updateFieldStateWithCallback = function updateFieldStateWithCallback(namespace, fieldName, callback) {
var currentFieldState = getFieldState(namespace, fieldName);
if (currentFieldState) {
var update = callback(currentFieldState);
if (update) {
var _extends3;
state[namespace] = (0, _extends4["default"])({}, state[namespace], (_extends3 = {}, _extends3[fieldName] = (0, _extends4["default"])({}, currentFieldState, update), _extends3));
triggerSubscribers(namespace, fieldName);
}
}
};
var removeField = function removeField(namespace, fieldName) {
var _state$namespace2;
if ((_state$namespace2 = state[namespace]) != null && _state$namespace2[fieldName]) {
delete state[namespace][fieldName];
// immutable state
state[namespace] = (0, _extends4["default"])({}, state[namespace]);
if (Object.keys(state[namespace]).length === 0) {
delete state[namespace];
}
triggerSubscribers(namespace, fieldName);
}
};
return {
getFieldState: getFieldState,
getNamespaceState: getNamespaceState,
initFieldState: initFieldState,
removeField: removeField,
createGetSnapshotFieldState: createGetSnapshotFieldState,
createGetSnapshotNamespaceState: createGetSnapshotNamespaceState,
createSubscribeToField: createSubscribeToField,
createSubscribeToNamespace: createSubscribeToNamespace,
updateFieldStateWithCallback: updateFieldStateWithCallback
};
};
var _stateCreator = stateCreator(),
getFieldState = _stateCreator.getFieldState,
getNamespaceState = _stateCreator.getNamespaceState,
initFieldState = _stateCreator.initFieldState,
removeField = _stateCreator.removeField,
createGetSnapshotFieldState = _stateCreator.createGetSnapshotFieldState,
createGetSnapshotNamespaceState = _stateCreator.createGetSnapshotNamespaceState,
createSubscribeToField = _stateCreator.createSubscribeToField,
createSubscribeToNamespace = _stateCreator.createSubscribeToNamespace,
updateFieldStateWithCallback = _stateCreator.updateFieldStateWithCallback;
exports.updateFieldStateWithCallback = updateFieldStateWithCallback;
exports.createSubscribeToNamespace = createSubscribeToNamespace;
exports.createSubscribeToField = createSubscribeToField;
exports.createGetSnapshotNamespaceState = createGetSnapshotNamespaceState;
exports.createGetSnapshotFieldState = createGetSnapshotFieldState;
exports.removeField = removeField;
exports.initFieldState = initFieldState;
exports.getNamespaceState = getNamespaceState;
exports.getFieldState = getFieldState;
/***/ }),
/***/ "./build/use-connect-field.js":
/*!************************************!*\
!*** ./build/use-connect-field.js ***!
\************************************/
/***/ ((__unused_webpack_module, exports, __webpack_require__) => {
"use strict";
var _interopRequireDefault = (__webpack_require__(/*! @babel/runtime/helpers/interopRequireDefault */ "./node_modules/@babel/runtime/helpers/interopRequireDefault.js")["default"]);
exports.__esModule = true;
exports.useConnectField = void 0;
var _extends2 = _interopRequireDefault(__webpack_require__(/*! @babel/runtime/helpers/extends */ "./node_modules/@babel/runtime/helpers/extends.js"));
var _objectWithoutPropertiesLoose2 = _interopRequireDefault(__webpack_require__(/*! @babel/runtime/helpers/objectWithoutPropertiesLoose */ "./node_modules/@babel/runtime/helpers/objectWithoutPropertiesLoose.js"));
var _react = __webpack_require__(/*! react */ "react");
var _context = __webpack_require__(/*! ./context */ "./build/context.js");
var _helpers = __webpack_require__(/*! ./helpers */ "./build/helpers.js");
var _hooks = __webpack_require__(/*! ./field/hooks */ "./build/field/hooks.js");
var _excluded = ["validator", "dirtyCheck", "transformValueToInput", "transformEventToValue", "onChange", "onFocus", "onBlur"],
_excluded2 = ["namespace", "fieldName", "initialValue"];
var useConnectField = function useConnectField(props) {
var _useContext = (0, _react.useContext)(_context.BFMHooksContext),
blurField = _useContext.blurField,
changeField = _useContext.changeField,
initialValueField = _useContext.initialValueField,
focusField = _useContext.focusField,
initField = _useContext.initField,
removeField = _useContext.removeField;
var validator = props.validator,
dirtyCheck = props.dirtyCheck,
_props$transformValue = props.transformValueToInput,
transformValueToInput = _props$transformValue === void 0 ? _helpers.defaultValueToInput : _props$transformValue,
transformEventToValue = props.transformEventToValue,
onChange = props.onChange,
onFocus = props.onFocus,
onBlur = props.onBlur,
staticProps = (0, _objectWithoutPropertiesLoose2["default"])(props, _excluded);
// For storing static props see bellow.
var propsRef = (0, _react.useRef)({});
// Hook specific props.
var namespace = staticProps.namespace,
fieldName = staticProps.fieldName,
initialValue = staticProps.initialValue,
otherProps = (0, _objectWithoutPropertiesLoose2["default"])(staticProps, _excluded2);
// Throw an error if namespace and/or fieldName changes after first rendering, because it's not supported
// Dynamically changing these values can result in strange side effects. It's better to render a new component.
var namesRef = (0, _react.useRef)({
namespace: namespace,
fieldName: fieldName
});
(0, _react.useEffect)(function () {
if (namesRef.current.namespace !== namespace || namesRef.current.fieldName !== fieldName) {
throw new Error('Changing the namespace and/or fieldName of an already rendered component is not supported.');
}
}, [namespace, fieldName]);
// Store static props for use in the validator callback.
// This way you can (re-)use for example: required, minlength, maxlength, etc. in the validator
propsRef.current = staticProps;
var getError = (0, _react.useCallback)(function (_value) {
return validator && validator(_value, propsRef.current);
}, [validator]);
var value = (0, _hooks.useFieldValue)(namespace, fieldName);
(0, _react.useEffect)(function () {
// init field on mount
initField(namespace, fieldName, initialValue, getError(initialValue));
// remove field on unmount
return function () {
removeField(namespace, fieldName);
};
}, []); // eslint-disable-line react-hooks/exhaustive-deps
// update initialValue on change, see `initialValueField` function for more info
(0, _react.useEffect)(function () {
initialValueField(namespace, fieldName, initialValue, getError(initialValue));
}, [initialValueField, fieldName, getError, initialValue, namespace]);
var handleFocus = (0, _react.useCallback)(function (event) {
focusField(namespace, fieldName);
onFocus && onFocus(event);
}, [fieldName, namespace, onFocus, focusField]);
var handleChange = (0, _react.useCallback)(function (arg1, arg2, arg3, arg4, arg5) {
var value = transformEventToValue ? transformEventToValue(arg1, arg2, arg3, arg4, arg5) : (0, _helpers.defaultEventToValue)(arg1);
var error = getError(value);
changeField(namespace, fieldName, value, error, dirtyCheck);
onChange && onChange(arg1, arg2, arg3, arg4, arg5);
}, [transformEventToValue, getError, changeField, namespace, fieldName, dirtyCheck, onChange]);
var handleBlur = (0, _react.useCallback)(function (event) {
blurField(namespace, fieldName);
onBlur && onBlur(event);
}, [fieldName, namespace, onBlur, blurField]);
return (0, _extends2["default"])({}, otherProps, {
value: transformValueToInput(value),
onFocus: handleFocus,
onChange: handleChange,
onBlur: handleBlur
});
};
exports.useConnectField = useConnectField;
/***/ }),
/***/ "react":
/*!**************************************************************************************!*\
!*** external {"root":"React","commonjs":"react","commonjs2":"react","amd":"react"} ***!
\**************************************************************************************/
/***/ ((module) => {
"use strict";
module.exports = __WEBPACK_EXTERNAL_MODULE_react__;
/***/ }),
/***/ "./node_modules/@babel/runtime/helpers/extends.js":
/*!********************************************************!*\
!*** ./node_modules/@babel/runtime/helpers/extends.js ***!
\********************************************************/
/***/ ((module) => {
function _extends() {
module.exports = _extends = Obje