UNPKG

react-boilerplate-redux-saga-hoc

Version:
1 lines 59.1 kB
"use strict";function _interopDefault(e){return e&&"object"==typeof e&&"default"in e?e.default:e}Object.defineProperty(exports,"__esModule",{value:!0});var React=require("react"),React__default=_interopDefault(React),redux=require("redux"),reactRedux=require("react-redux"),isEqual=_interopDefault(require("fast-deep-equal")),reselect=require("reselect"),invariant=_interopDefault(require("invariant")),cloneDeep=_interopDefault(require("lodash/cloneDeep")),_defineProperty=_interopDefault(require("@babel/runtime/helpers/defineProperty")),hoistNonReactStatics=_interopDefault(require("hoist-non-react-statics"));const TAKE_EVERY="every",REFETCH_API_QUERY="REFETCH_API_QUERY",REDUCER_BASE_PATH="app/containers/",IS_DEBOUNCE_API_CALL="is_debounce_api_call",DEBOUNCE_API_CALL_DELAY_IN_MS="debounce_api_call_delay",ON_CANCEL_ERROR="API_CANCEL_ERROR",ON_ERROR="ERROR",ON_SUCCESS="SUCCESS",ON_FINALLY="FINALLY",ON_CANCEL="CANCEL",ON_REQUEST="REQUEST",ON_LOADING="LOADING",ON_UNMOUNT="UNMOUNT",ON_TOAST="TOAST",ERROR="ERROR",SUCCESS="SUCCESS",CALL="CALL",CANCEL="CANCEL",CUSTOM="CUSTOM_TASK",INFINITE_DATA_HANDLER="Infinite-Handler",DATA_HANDLER="Data-Handler",DELETE_DATA_HANDLER="Delete-Handler",UPDATE_DATA_HANDLER="Update-Handler",UPDATE_DATA_KEY_HANDLER="Update-Key-Handler",DELETE_DATA_KEY_HANDLER="Delete-Key-Handler",TOGGLE_DATA_KEY_HANDLER="Toggle-Key-Handler",SPLICE_DATA_HANDLER="Splice-Data-Handler",CALLBACK_HANDLER="Callback-Handler",RESET_HANDLER="Reset-Handler",TOAST_HANDLER="Toast-Handler",ERROR_HANDLER="Error-Handler",LOADER_HANDLER="Loading-Handler",DONT_UPDATE_DATA_HANDLER="Don't-Update-Data-Handler",TYPE_NULL="null",TYPE_UNDEFINED="undefined",TYPE_STRING="string",TYPE_ARRAY="array",TYPE_BOOLEAN="boolean",TYPE_OBJECT="object",TYPE_FUNCTION="function",TYPE_ERROR="error",TYPE_SYMBOL="symbol",TYPE_GENERATOR_FUNCTION="generatorFunction",COMMON_TASKS={TASK_NAME:"name",SUB_KEYS_ARRAY:"subKey",IS_CLEAR_PREVIOUS_DATA_ON_SUCCESS:"clearData",IS_CLEAR_PREVIOUS_DATA_ON_API_START:"clearDataOnStart"},DONT_UPDATE_RESPONSE_DATA="dontUpdateResponseData",DONT_UPDATE_SUCCESS_DATA="dontUpdateSuccessData",UPDATE_CALLBACK="updateCallback",ID_REFERENCE_KEY="key",IDS="id",API_TASK_CONFIG_KEYS={TASKS:"tasks",TASK:{KEY:"task",COMMON_TASK_KEYS:COMMON_TASKS,INFINITE_DATA_HANDLER:{...COMMON_TASKS,LIMIT:"limit",IS_APPEND_DATA_ON_TOP:"isAppendTop",SET_INFINITE_END_KEY_TRUE_OR_FALSE:"setInfiniteEnd",UPDATE_CALLBACK:UPDATE_CALLBACK},DATA_HANDLER:{...COMMON_TASKS,UPDATE_CALLBACK:UPDATE_CALLBACK},DELETE_DATA_HANDLER:{...COMMON_TASKS,ID_REFERENCE_KEY:"key",IDS:IDS},UPDATE_DATA_HANDLER:{...COMMON_TASKS,ID_REFERENCE_KEY:"key",IDS:IDS,UPDATE_CALLBACK:UPDATE_CALLBACK,DONT_UPDATE_RESPONSE_DATA:"dontUpdateResponseData",DONT_UPDATE_SUCCESS_DATA:"dontUpdateSuccessData"},UPDATE_DATA_KEY_HANDLER:{...COMMON_TASKS,ID_REFERENCE_KEY:"key",IDS:IDS,UPDATE_CALLBACK:UPDATE_CALLBACK,DONT_UPDATE_RESPONSE_DATA:"dontUpdateResponseData",DONT_UPDATE_SUCCESS_DATA:"dontUpdateSuccessData"},DELETE_DATA_KEY_HANDLER:{...COMMON_TASKS,ID_REFERENCE_KEY:"key",IDS:IDS,UPDATE_CALLBACK:UPDATE_CALLBACK,DELETE_KEYS_ARRAY:"deleteKey"},TOGGLE_DATA_KEY_HANDLER:{...COMMON_TASKS,ID_REFERENCE_KEY:"key",IDS:IDS,UPDATE_CALLBACK:UPDATE_CALLBACK,TOGGLE_KEYS_ARRAY:"toggleKey"},SPLICE_DATA_HANDLER:{...COMMON_TASKS,UPDATE_CALLBACK:UPDATE_CALLBACK,SPLICE_VALUE_ARRAY:"spliceKey"},RESET_HANDLER:{TASK_NAME:COMMON_TASKS.TASK_NAME},CALLBACK_HANDLER:{TASK_NAME:COMMON_TASKS.TASK_NAME,CALLBACK_FUNCTION:"callback"},TOAST_HANDLER:{TASK_NAME:COMMON_TASKS.TASK_NAME,TOAST_OBJECT:"toast"},ERROR_HANDLER:{TASK_NAME:COMMON_TASKS.TASK_NAME,ERROR_OBJECT:"error",IS_ERROR:"isError"},LOADER_HANDLER:{TASK_NAME:COMMON_TASKS.TASK_NAME,IS_LOADING:"loader"},DONT_UPDATE_DATA_HANDLER:{...COMMON_TASKS}},FILTER_ARRAY:"filter",DONT_UPDATE_REUCER:"dontUpdateReducer",EXECUTE_UPDATE_STATE_CALLBACK_ON_ERROR:"excuteUpdateStateCallbackOnError",UPDATE_STATE_DATA_REDUCER_KEYS:"updateDataReducerKey",SET_PROXY_FOR:"proxyFor",REQUEST:{KEY:"request",ASYNC_FUNCTION:"asyncFunction",ASYNC_FUNCTION_PARAMS_ARRAY:"asyncFunctionParams",PAYLOAD:"payload",PARAMS:"params",QUERY:"query",DELAY_FUNCTION:"delayFunction",DONT_UPDATE_REDUCER_ON_SUCCESS:"dontUpdateReducerOnSucess",DONT_UPDATE_REDUCER_ON_ERROR:"dontUpdateReducerOnError",AXIOS_INTERCEPTOR:"axios",PARAM_SERIALIZER:"paramsSerializer",API_CANCEL_KEY:"cancelKey",ON_CANCEL_TASK:"onCancelTask",AXIOS_CONFIG:"axiosConfig",API_QUERY_CACHE_KEY:"key",USE_CACHE_DATA:"useCache",IS_ERROR_DATA_HANDLING:"errorDataHandling",IS_CLEAR_DATA_ON_ERROR:"clearDataOnError",IS_POLLING:"polling",IS_ERROR_PARSER:"errorParser",DEFAULT_ERROR_PARSER_FUNCTION:"defaultErrorParser",POLLING_DELAY_COUNT_IN_MS:"delay",MAX_RETRY_COUNT:"retry",POLLING_MAX_COUNT:"pollingCount",START_POLLING_AFTER_DELAY:"callAfterDelay"},CALLBACK:{KEY:"callback",UPDATE_STATE_CALLBACK:"updateStateCallback",SUCCESS_CALLBACK:"successCallback",ERROR_CALLBACK:"errorCallback",SUCCESS_CALLBACK_EXECUTE_AFTER_100_MILLISECONDS:"logoutCallback",FINAL_CALLBACK:"finalCallback",POLLING_CALLBACK:"pollingCallback",CANCEL_CALLBACK:"cancelCallback",UPDATE_CALLBACK:UPDATE_CALLBACK}},USE_QUERY_REDUCER_CONFIG_KEYS={PARENT_KEY:"key",REDUCER_KEY:"key",REQUIRED_DATA_KEY:"requiredKey",FILTER_ARRAY:"filter",QUERY_DATA_STRING_OR_ARRAY:"initialLoaderqueryState",INITIAL_LOADER_STATE:"initialLoaderState",GET_DEFAULT_DATA_FORMAT:"defaultDataFormat",DEFAULT_DATA_OR_FORMAT:"default"},USE_QUERY_CONFIG_KEYS={REDUCER_NAME:"reducerName",REDUCER_KEYS_ARRAY_OR_OBJECT_OR_STRING:USE_QUERY_REDUCER_CONFIG_KEYS,REDUCER_KEYS_CONFIG:"config",CALLBACK_FUNCTION_RETURN_DATA:"callback",TRIGGER_AFTER_CALLBACK_NO_DATA_RETURN:"callbackSuccess",REFRESH_KEY:"refreshKey"},API_END_POINTS_CONFIG_KEYS={API_URL:"url",AXIOS_INTERCEPTORS:"axios",API_METHOD:"method",API_RESPONSE_SUCCESS_STATUS_CODE_KEY:"responseStatusCodeKey",API_RESPONSE_SUCCESS_STATUS_CODES:"responseStatusCode",API_RESPONSE_SUCCESS_MESSAGE_KEY:"responseMessageKey",API_RESPONSE_SUCCESS_DATA_KEY:"responseDataKey",API_RESPONSE_ERROR_DATA_KEY:"errorDataKey",API_RESPONSE_ERROR_STATUS_CODE_KEY:"errorStatusKey",API_RESPONSE_ERROR_MESSAGE_KEY:"errorMessageKey",API_ERROR_HANDLER_STATUS_CODES:"errorHandlerStatusCode",DEBOUNCE_API_CALL_DELAY_IN_MS:"debounce_api_call_delay",IS_DEBOUNCE_API_CALL:IS_DEBOUNCE_API_CALL,SAGA_EFFECT:"effect"},API_END_POINTS_CONFIG_DEFAULT_VALUE={API_URL:void 0,AXIOS_INTERCEPTORS:void 0,API_METHOD:"GET",API_RESPONSE_SUCCESS_STATUS_CODE_KEY:"",API_RESPONSE_SUCCESS_STATUS_CODES:[],API_RESPONSE_SUCCESS_MESSAGE_KEY:"",API_RESPONSE_SUCCESS_DATA_KEY:"",API_RESPONSE_ERROR_DATA_KEY:"error",API_RESPONSE_ERROR_STATUS_CODE_KEY:"",API_RESPONSE_ERROR_MESSAGE_KEY:"",API_ERROR_HANDLER_STATUS_CODES:[],SAGA_EFFECT:"latest"},ENV={DEVELOPMENT:"development",PRODUCTION:"production"},commonConstants={TAKE_EVERY:"every",API_END_POINTS_CONFIG_DEFAULT_VALUE:API_END_POINTS_CONFIG_DEFAULT_VALUE,API_END_POINTS_CONFIG_KEYS:API_END_POINTS_CONFIG_KEYS,USE_QUERY_CONFIG_KEYS:USE_QUERY_CONFIG_KEYS,API_TASK_CONFIG_KEYS:API_TASK_CONFIG_KEYS,ENVIRONMENT_TYPE:ENV,INFINITE_DATA_HANDLER:"Infinite-Handler",DATA_HANDLER:DATA_HANDLER,DELETE_DATA_HANDLER:"Delete-Handler",UPDATE_DATA_HANDLER:"Update-Handler",UPDATE_DATA_KEY_HANDLER:"Update-Key-Handler",DELETE_DATA_KEY_HANDLER:"Delete-Key-Handler",TOGGLE_DATA_KEY_HANDLER:"Toggle-Key-Handler",SPLICE_DATA_HANDLER:SPLICE_DATA_HANDLER,RESET_HANDLER:RESET_HANDLER,CALLBACK_HANDLER:CALLBACK_HANDLER,TOAST_HANDLER:TOAST_HANDLER,ERROR_HANDLER:ERROR_HANDLER,LOADER_HANDLER:LOADER_HANDLER,DONT_UPDATE_DATA_HANDLER:DONT_UPDATE_DATA_HANDLER,ON_CANCEL_ERROR:ON_CANCEL_ERROR,ON_ERROR:"ERROR",ON_SUCCESS:"SUCCESS",ON_FINALLY:"FINALLY",ON_CANCEL:"CANCEL",ON_REQUEST:"REQUEST",ON_LOADING:"LOADING",ON_UNMOUNT:"UNMOUNT",ON_TOAST:"TOAST",ERROR:ERROR,SUCCESS:SUCCESS,CALL:CALL,CANCEL:CANCEL,CUSTOM:CUSTOM,TYPE_NULL:"null",TYPE_UNDEFINED:"undefined",TYPE_STRING:"string",TYPE_ARRAY:"array",TYPE_BOOLEAN:"boolean",TYPE_OBJECT:"object",TYPE_FUNCTION:"function",TYPE_ERROR:"error",TYPE_SYMBOL:"symbol",TYPE_GENERATOR_FUNCTION:"generatorFunction"},CONSTRUCTOR_CHECK={string:String,number:Number,boolean:Boolean};let errorConsole=function(e,t,r){let n=arguments.length>3&&void 0!==arguments[3]?arguments[3]:[],a=arguments.length>4?arguments[4]:void 0;n?console.log(`%c${e} %c is found %c "${t}" %c not a function %c ${r} %c is invalid`,"background: #000; color: red; font-size: 12px","background: #000; color: orange; font-size: 12px","background: #000; color: red; font-size: 12px","background: #000; color: orange; font-size: 12px","background: #000; color: red; font-size: 12px","background: #000; color: orange; font-size: 12px"):console.log(`%c${a?"%c key":`${e} %c is undefined`}%c "${t}" %cnot found ${a?`in %c"${e}"%c object`:"%c%c"} %c ${r} %c is invalid`,"background: #000; color: red; font-size: 12px","background: #000; color: orange; font-size: 12px","background: #000; color: red; font-size: 12px","background: #000; color: orange; font-size: 12px","background: #000; color: green; font-size: 12px","background: #000; color: orange; font-size: 12px","background: #000; color: red; font-size: 12px","background: #000; color: orange; font-size: 12px")};const errorLog=()=>{let e=new Error,t=e.stack?e.stack.toString().split(/\r\n|\n/):e.stack;console.log("Error :"),t&&t.length&&(t.splice(0,1),t.map((e,r)=>console.log(`[${t[t.length-1-r]} ]`)))},nullCheck=function(e){let t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{},r=arguments.length>2?arguments[2]:void 0,n=arguments.length>3?arguments[3]:void 0,a=arguments.length>4?arguments[4]:void 0,o=arguments.length>5&&void 0!==arguments[5]?arguments[5]:[],s=arguments.length>6&&void 0!==arguments[6]&&arguments[6];const i=void 0!==n?n:void 0;if("string"!=typeof r)return s&&(console.log("%c[Object] path is invalid it should be string","background: #000; color: orange; font-size: 12px"),errorLog(new e)),"function"==typeof a?a(i):i;let c=r.split(/\.|\[|\(/);const l=(c=c.map(e=>e.replace(/\]|\(/g,"").replace(/\)/,"()"))).splice(0,1);if(!t||"object"!=typeof t||0===Object.keys(t).length)return s&&errorLog(new e),"function"==typeof a?a(i):i;let u=t,E=l,d=0,_=E,A=void 0;for(let t=0;t<c.length;t++){if(u[c[t]]||"boolean"==typeof u||Object.prototype.hasOwnProperty.call(u,c[t])){if(E=Number(c[t])||0===Number(c[t])?`${E}[${c[t]}]`:`${E}.${c[t]}`,!(u=u[c[t]])&&"boolean"!=typeof u&&t===c.length-1)return"function"==typeof a?a(void 0!==n?n:u):void 0!==n?n:u;if(!u&&"boolean"!=typeof u)return s&&(errorLog(new e),errorConsole(_,E,r)),"function"==typeof a?a(void 0!==n?n:u):void 0!==n?n:u;if((u||"boolean"==typeof u)&&c[t+1]&&"function"==typeof u[c[t+1]]&&(A=u),c[t+1]){if("()"===c[t+1]&&"function"!=typeof u)return s&&(errorLog(new e),errorConsole(_,E,r,!0)),"function"==typeof a?a(i):i;if("object"!=typeof u&&"()"!==c[t+1]&&!u[c[t+1]]&&"boolean"!=typeof u)return s&&(errorLog(new e),errorConsole(_,E,r,!1)),"function"==typeof a?a(i):i}}else{if("()"!==c[t])return E=Number(c[t])||0===Number(c[t])?`${E}[${c[t]}]`:`${E}.${c[t]}`,s&&(errorLog(new e),errorConsole(E,c[t],r,!1,!0)),"function"==typeof a?a(i):i;if(E=`${E}${c[t]}`,"function"!=typeof u)return s&&(errorLog(new e),errorConsole(_,E,r,!0)),"function"==typeof a?a(i):i;if(!(u=CONSTRUCTOR_CHECK[typeof A]?o&&o[d]?CONSTRUCTOR_CHECK[typeof A].prototype[c[t-1]].apply(A,o[d]):CONSTRUCTOR_CHECK[typeof A].prototype[c[t-1]].call(A):o&&o[d]?u.apply(null,[...o[d]]):u())&&"boolean"!=typeof u&&t===c.length-1)return"function"==typeof a?a(void 0!==n?n:u):void 0!==n?n:u;if(!u&&"boolean"!=typeof u)return s&&(errorLog(new e),errorConsole(_,E,r)),"function"==typeof a?a(void 0!==n?n:u):void 0!==n?n:u;if(!u&&"boolean"!=typeof u&&t===c.length-1)return"function"==typeof a?a(void 0!==n?n:u):void 0!==n?n:u;if(!u&&"boolean"!=typeof u)return s&&(errorLog(new e),errorConsole(_,E,r)),"function"==typeof a?a(void 0!==n?n:u):void 0!==n?n:u;if((u||"boolean"==typeof u)&&c[t+1]&&"function"==typeof u[c[t+1]]&&(A=u),c[t+1]){if("()"===c[t+1]&&"function"!=typeof u)return s&&(errorLog(new e),errorConsole(_,E,r,!0)),"function"==typeof a?a(i):i;if("object"!=typeof u&&"()"!==c[t+1]&&!u[c[t+1]]&&"boolean"!=typeof u)return s&&(errorLog(new e),errorConsole(_,E,r,!0)),"function"==typeof a?a(i):i}d+=1}_=E}const p=(!u&&"boolean"!=typeof u||"[object Null]"===Object.prototype.toString.call(n)||void 0===n||Object.prototype.toString.call(u)!==Object.prototype.toString.call(n))&&void 0!==n&&"[object Null]"!==Object.prototype.toString.call(n)?n:u;return"function"==typeof a?a(p):p};var Safe=nullCheck.bind(null,Error);const passwordReg=new RegExp(/^.{6,16}$/),emailReg=new RegExp("^([\\w\\.\\+\\-]+\\@[a-zA-Z0-9\\.\\-]+\\.[a-zA-z0-9]{2,4})$"),mobileReg=new RegExp(/^\d{10,10}$/),nameReg=new RegExp("^[a-zA-Z ]+$"),stringReg=new RegExp(/^[a-zA-Z0-9\s,'-]*$/),numberReg=new RegExp("^[\\d]+$"),decimalReg=new RegExp("^[+-]?([0-9]*[.])?[0-9]+"),postiveIntegerReg=new RegExp("^([1-9][0-9]+|[0-9])$");function _isEmpty(e){return(!e||"string"!=typeof e||!e.trim())&&("number"!=typeof e||!e&&0!==e)}function _isValidPassword(e){return passwordReg.test(e.trim())}function _isValidEmail(e){return emailReg.test(e.trim())}function _isValidMobile(e){return mobileReg.test(e.trim())}function _isValidNumber(e){return numberReg.test(e)}function _isValidFloatNumber(e){return decimalReg.test(e)}function _isPostiveInteger(e){return postiveIntegerReg.test(e)}function _isMatching(e,t){return!(!e||!t||"string"!=typeof e||"string"!=typeof t||e.trim()!=t.trim())}function _isValidName(e){return nameReg.test(e.trim())}function _isValidString(e){return stringReg.test(e.trim())}function _isValidTextAreaInput(e){return!(e.length>4)}function _isValidArray(e){return!(e.length>0)}function validateForm(e){const t={isError:!1};return Object.entries(e).map(r=>{let[n,a]=r;const{type:o,value:s,message:i,optional:c=!1,formatMessage:l,emptyMessage:u,length:E,regex:d={},callback:_}=a;let A;if(!c||s){A=Array.isArray(s)?!s.length>0:_isEmpty(s);const r={};if("function"!=typeof _||A)if(A)t[n]="mobile"===e[n].type?u||"Please enter Valid Mobile Number":u||"Please provide the necessary details";else switch(o){case"email":r.hasPassed=(d.test||_isValidEmail)(s),r.hasPassed||(t[`${n}`]=i||"Please enter Valid Email eg. (abc@abc.com)");break;case"mobile":r.hasPassed=_isValidMobile(s),r.hasPassed||(t[`${n}`]=i||"Please enter Valid Mobile Number");break;case"password":r.hasPassed=(d.test||_isValidPassword)(s),r.hasPassed||(t[`${n}`]=i||"Passwords must contain at least 6 characters to 20 characters");break;case"confirmPassword":{const a=e[n].compareValue;r.hasPassed=_isMatching(a,s),r.hasPassed||(t[`${n}`]=i||"Password & Confirm password do not match");break}case"string":r.hasPassed=(d.test||_isValidString)(s),r.hasPassed||(t[`${n}`]=i||"Invalid format");break;case"name":r.hasPassed=(d.test||_isValidName)(s),r.hasPassed||(t[`${n}`]=l||"Invalid format"),e[s]&&s.length<(0===E?E:3)&&(t[`${n}`]=i||"Name Must Be Greater Than 2 Characters");break;case"number":r.hasPassed=(d.test||_isValidNumber)(s),r.hasPassed||(t[`${n}`]=i||"Invalid format");break;case"float":r.hasPassed=(d.test||_isValidFloatNumber)(s),r.hasPassed||(t[`${n}`]=i||"Invalid format");break;case"postiveIntegerReg":r.hasPassed=(d.test||_isPostiveInteger)(s),r.hasPassed||(t[`${n}`]=i||"Enter a valid input");break;case"array":r.hasPassed=_isValidArray(s),r.hasPassed&&(t[`${n}`]=i||"Please upload Images");break;case"textarea":case"dateString":r.hasPassed=_isValidTextAreaInput(s),r.hasPassed&&(t[`${n}`]=i||"Description should be of mininum 5 characters")}else t[`${n}`]=_({type:o,value:s,message:i,optional:c,formatMessage:l,emptyMessage:u,length:E,regex:d})||null}}),Object.keys(t).length>1&&(t.isError=!0),t}function CustomError(e){let t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:"",r=arguments.length>2?arguments[2]:void 0,n=arguments.length>3?arguments[3]:void 0,a=new Error(t,r,n);return a=e,Object.setPrototypeOf(a,Object.getPrototypeOf(this)),Error.captureStackTrace&&Error.captureStackTrace(a,CustomError),a}CustomError.prototype=Object.create(Error.prototype,{constructor:{value:Error,enumerable:!1,writable:!0,configurable:!0}}),Object.setPrototypeOf&&Object.setPrototypeOf(CustomError,Error);const cloneObject=function(e){let t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};return Object.assign({},e,t)},newObject=function(){let e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{};for(var t=arguments.length,r=new Array(t>1?t-1:0),n=1;n<t;n++)r[n-1]=arguments[n];return 0===r.length?cloneObject(e):r.reduce((t,r)=>cloneObject(t,"function"==typeof r&&r(e,t)||r),cloneObject(e))};function deleteIn(e,t){let r=0,n=e;return function e(){return Array.isArray(n)?t.length-1===r&&+t[r]>=n.slice().length?(()=>t.length-1===r?(Array.isArray(n)?n.splice(+t[r],1):delete n[t[r]],n):n)():n.slice().map((a,o)=>+t[r]===o?t.length-1===r?(Array.isArray(n)?n.splice(+t[r],1):delete n[t[r]],Array.isArray(n)?null:n):(()=>(n=a,r+=1,e()))():a).filter(e=>e):(()=>t.length-1===r?(delete n[t[r]],n):cloneObject(n,{[t[r]]:(()=>(n=n[t[r]],r+=1,e()))()}))()}()}function getIn(e,t){let r=0,n=e;return t.length>0?function e(){return t.length>0&&t.length-1===r?null==n?n:n[t[r]]:(()=>null==n?n:(n=n[t[r]],r+=1,e()))()}():e}function objectEquals(e,t){if(e===t)return!0;if(!(e instanceof Object&&t instanceof Object))return!1;if(e.constructor!==t.constructor)return!1;for(const[r]of Object.entries(e))if(r in e){if(!(r in t))return!1;if(e[r]!==t[r]){if("object"!=typeof e[r])return!1;if(!Object.equals(e[r],t[r]))return!1}}for(const[r]of Object.entries(t))if(r in t&&!(r in e))return!1;return!0}function setIn(e,t,r){let n=0,a=e;return function e(){return Array.isArray(a)?t.length-1===n&&+t[n]>=a.slice().length?(()=>(a[+t[n]]=r,a))():a.slice().map((o,s)=>+t[n]===s?t.length-1===n?r:(()=>(a=o,n+=1,e()))():o):cloneObject(a,{[t[n]]:t.length-1===n?r:(()=>(a=a[t[n]]||{},n+=1,e()))()})}()}function updateIn(e){let t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:[],r=arguments.length>2?arguments[2]:void 0,n=0,a=e;return t.length>0?function e(){return Array.isArray(a)?a.slice().map((o,s)=>+t[n]===s?t.length-1===n?r(o):(()=>(a=o,n+=1,e()))():o):cloneObject(a,{[t&&t[n]]:t.length-1===n?r(a[t[n]]):(()=>(a=a[t[n]]||{},n+=1,e()))()})}():e}const generateTimeStamp=()=>(new Date).getTime(),toCapitalize=e=>e&&"string"==typeof e?e.charAt(0).toUpperCase()+e.slice(1):null,type={"[object Null]":"null","[object Undefined]":"undefined","[object String]":"string","[object Array]":"array","[object Boolean]":"boolean","[object Object]":"object","[object Function]":"function","[object Error]":"error","[object Symbol]":"symbol","[object GeneratorFunction]":"generatorFunction"},typeOf=e=>void 0===e?typeof e:type[Object.prototype.toString.call(e)]||typeof e,trimStrings=function(){let e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:"",t=arguments.length>1&&void 0!==arguments[1]&&arguments[1];if(e&&"string"==typeof e&&String(e)){const r=String(e).trim();return t?Number(r):r}return e},delay=e=>new Promise(t=>setTimeout(t,e)),successAction=e=>(function(t,r,n,a,o){let s=arguments.length>5&&void 0!==arguments[5]?arguments[5]:{};return{type:e,response:{type:t,data:s,payload:n,statusCode:a,message:o,method:r}}}),errorAction=e=>(function(t,r,n,a,o){let s=arguments.length>5&&void 0!==arguments[5]?arguments[5]:{};return{type:e,response:{type:t,error:s,payload:n,statusCode:a,message:o,method:r}}}),callAction=e=>(function(){let t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{};return{type:e,payload:t}}),cancelAction=e=>(t,r,n,a)=>({type:a&&"string"===typeOf(a)&&a.length?`${e}_[${a}]`:e,response:{type:t,method:r,payload:{filter:n}}}),customAction=e=>(function(t,r,n){let a=arguments.length>3&&void 0!==arguments[3]?arguments[3]:{},o=arguments.length>4?arguments[4]:void 0;return{type:e,response:{type:t,method:r,data:a,statusCode:o||"SUCCESS"===r?200:null,customTask:!0,payload:n}}}),actionsHandler={success:successAction,error:errorAction,call:callAction,cancel:cancelAction,custom:customAction},{API_END_POINTS_CONFIG_DEFAULT_VALUE:API_END_POINTS_CONFIG_DEFAULT_VALUE$1,API_END_POINTS_CONFIG_KEYS:API_END_POINTS_CONFIG_KEYS$1,USE_QUERY_CONFIG_KEYS:USE_QUERY_CONFIG_KEYS$1,API_TASK_CONFIG_KEYS:API_TASK_CONFIG_KEYS$1,INFINITE_DATA_HANDLER:INFINITE_DATA_HANDLER$1,DATA_HANDLER:DATA_HANDLER$1,DELETE_DATA_HANDLER:DELETE_DATA_HANDLER$1,UPDATE_DATA_HANDLER:UPDATE_DATA_HANDLER$1,UPDATE_DATA_KEY_HANDLER:UPDATE_DATA_KEY_HANDLER$1,DELETE_DATA_KEY_HANDLER:DELETE_DATA_KEY_HANDLER$1,TOGGLE_DATA_KEY_HANDLER:TOGGLE_DATA_KEY_HANDLER$1,SPLICE_DATA_HANDLER:SPLICE_DATA_HANDLER$1,RESET_HANDLER:RESET_HANDLER$1,CALLBACK_HANDLER:CALLBACK_HANDLER$1,TOAST_HANDLER:TOAST_HANDLER$1,ERROR_HANDLER:ERROR_HANDLER$1,LOADER_HANDLER:LOADER_HANDLER$1,DONT_UPDATE_DATA_HANDLER:DONT_UPDATE_DATA_HANDLER$1,ON_CANCEL_ERROR:ON_CANCEL_ERROR$1,ON_ERROR:ON_ERROR$1,ON_SUCCESS:ON_SUCCESS$1,ON_FINALLY:ON_FINALLY$1,ON_CANCEL:ON_CANCEL$1,ON_REQUEST:ON_REQUEST$1,ON_LOADING:ON_LOADING$1,ON_UNMOUNT:ON_UNMOUNT$1,ON_TOAST:ON_TOAST$1,ERROR:ERROR$1,SUCCESS:SUCCESS$1,CALL:CALL$1,CANCEL:CANCEL$1,CUSTOM:CUSTOM$1,TYPE_NULL:TYPE_NULL$1,TYPE_UNDEFINED:TYPE_UNDEFINED$1,TYPE_STRING:TYPE_STRING$1,TYPE_ARRAY:TYPE_ARRAY$1,TYPE_BOOLEAN:TYPE_BOOLEAN$1,TYPE_OBJECT:TYPE_OBJECT$1,TYPE_FUNCTION:TYPE_FUNCTION$1,TYPE_ERROR:TYPE_ERROR$1,TYPE_SYMBOL:TYPE_SYMBOL$1,TYPE_GENERATOR_FUNCTION:TYPE_GENERATOR_FUNCTION$1,TAKE_EVERY:TAKE_EVERY$1}=commonConstants,cache={},cacheActions={},safe=Safe,getData=function(e,t){let r=!(arguments.length>2&&void 0!==arguments[2])||arguments[2],n=arguments.length>3&&void 0!==arguments[3]?arguments[3]:[];return{...safe(e,`${n.length?".data.":""}${n.join(".")}`,{}),data:safe(e,`.data${n.length?".":""}${n.join(".")}${n.length?".data":""}`,t),loader:safe(e,`${n.length?".data.":""}${n.join(".")}.loading.status`,"boolean"==typeof r&&r),lastUpdated:safe(e,`${n.length?".data.":""}${n.join(".")}.lastUpdated`),isInfinite:safe(e,`${n.length?".data.":""}${n.join(".")}.isInfinite`,!1),infiniteEnd:safe(e,`${n.length?".data.":""}${n.join(".")}.infiniteEnd`,!1),isError:safe(e,`${n.length?".data.":""}${n.join(".")}.isError`,!1),toast:safe(e,`${n.length?".data.":""}${n.join(".")}.toast`,{}),error:safe(e,`${n.length?".data.":""}${n.join(".")}.error`,{})}},bindActionsToDispatch=(e,t)=>Object.entries(redux.bindActionCreators(e,t)).reduce((e,t)=>{let[r,n]=t;return{...e,[r]:r&&r.includes("_CALL")&&"_CALL"===r.slice(-5)?toPromise.bind(null,n):n}},{}),checkKey=(e,t,r,n)=>{invariant(typeOf(e)===r,`(react-boilerplate-redux-saga-hoc) Expected \`${t}\` to be ${n||r}`)},checkKeyWithMessage=(e,t,r)=>{invariant(typeOf(e)===t,r)},previousData=new Map,initialRender=new Map,previousCallbackData=new Map,previousDependencyArrayData=new Map,isPreviousDependencyArrayCheckPassed=new Map,exeuteRequiredData=function(e){let t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};const r=(t.requiredKey||[]).reduce((e,t)=>({...e,...t&&"string"===typeOf(t.key||t)?"string"===typeOf(t)?{[t]:void 0}:{[t.key]:t.default}:{}}),{});return t&&t.requiredKey&&Array.isArray(t.requiredKey)&&t.requiredKey.length>0&&"object"===typeOf(e)?t.requiredKey.reduce((t,r)=>({...t,...r&&"string"===typeOf(r.key||r)?{[r.key||r]:void 0!==typeOf(e[r.key||r])?e[r.key||r]:r.default}:{}}),{...r}):t&&t.requiredKey?e||{...r}:e},_checkFilter=e=>e&&e.filter?Array.isArray(e.filter)?e.filter:"string"==typeof e.filter?[e.filter]:void 0:void 0,_getData=function(){let e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{},t=arguments.length>1?arguments[1]:void 0,r=arguments.length>2?arguments[2]:void 0,n=arguments.length>3?arguments[3]:void 0,a=arguments.length>4?arguments[4]:void 0;const o=r||{},s=e=>{const r="app/containers/".concat(n,"/+.*?_CALL"),s=((t?a:e.key)||"").search(r)>-1;return"boolean"!=typeof e.defaultDataFormat&&s&&(t?a:e.key)||e.defaultDataFormat&&s&&(t?a:e.key)?safe(getData(safe(o,`[${t?a:e.key}]`),e.query?void 0:e.default||void 0,e.initialLoaderState||!1,_checkFilter(e),e.dataQuery),`${e.query&&"string"===typeOf(e.query)?e.query:""}`,e.query&&void 0!==e.default?e.default:void 0):(t?a:e.key)?safe(o,`[${t?a:e.key}]${e.query?e.query:""}`,e.default):safe(o,`${e.query?e.query:""}`,e.default)};return Array.isArray(e.query)?e.query.reduce((t,r)=>t.concat([s({...e,query:r.key||r,default:r.default||void 0})]),[]):s(e)},_GetData=(e,t,r,n)=>{const a=e||{};let o={};return o=t&&(Array.isArray(r)&&r.length>0||"object"===typeOf(r)&&Object.keys(r).length>0)?("object"===typeOf(r)?[r]:r).reduce((e,o)=>{if("object"===typeOf(o)){if("object"===typeOf(r))return exeuteRequiredData(_getData(o,void 0,a,t,r),o);const n=e.slice();return n.push(exeuteRequiredData(_getData(o,void 0,a,t,r),o)),n}if("string"===typeOf(o)&&"object"===typeOf(n)){const s={key:o,...n};if("object"===typeOf(r))return exeuteRequiredData(_getData(s,void 0,a,t,r),s);const i=e.slice();return i.push(exeuteRequiredData(_getData(s,void 0,a,t,r),s)),i}if("object"===typeOf(r))return safe(a,`[${o.key}]`);const s=e.slice();return s.push(safe(a,`[${o}]`)),s},"object"===typeOf(r)?{}:[]):"string"==typeof r&&n&&"array"===typeOf(n)?n.reduce((e,n)=>[...e,exeuteRequiredData(_getData(n,!0,a,t,r),n)],[]):"string"==typeof r?exeuteRequiredData(_getData(n,!0,a,t,r),n):t?a:a||{}},_execute=(e,t,r,n,a,o)=>{let s=previousData.get(a);const i=isPreviousDependencyArrayCheckPassed.get(a);if(n&&n.dependencyArray&&!Array.isArray(n.dependencyArray)&&!i)invariant(!1,`dependencyArray expected an array but got ${typeOf(n.dependencyArray)}`);else if(i||n&&n.dependencyArray&&Array.isArray(n.dependencyArray))if(!i&&n.dependencyArray.filter(e=>"string"!=typeof e)[0])invariant(!1,"dependencyArray must be array of string");else{i||isPreviousDependencyArrayCheckPassed.set(a,!0);const t=n.dependencyArray.map(t=>safe(e,t)),r=previousDependencyArrayData.get(a);if(previousDependencyArrayData.set(a,t),isEqual(r,t))return{isEqualCheck:!0,data:previousCallbackData.get(a)||s}}const c=_GetData(e,t,r,n);if(isEqual(c,s))s=previousCallbackData.get(a)||s;else{let e;previousData.set(a,c),o&&"function"==typeof o&&(e=o(c)),e?(s=e,previousCallbackData.set(a,e)):(previousCallbackData.set(a,null),s=c)}return previousData.set(a,c),{data:s}},useQuery=function(){let e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:null,t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:[],r=arguments.length>2&&void 0!==arguments[2]?arguments[2]:{},n=arguments.length>3?arguments[3]:void 0,a=arguments.length>4?arguments[4]:void 0,{refreshKey:o}=arguments.length>5&&void 0!==arguments[5]?arguments[5]:{};const{reducerName:s,key:i,config:c,callback:l,callbackSuccess:u,refreshKey:E}="object"===typeOf(e)?e:{reducerName:e,key:t,config:r,callback:n,callbackSuccess:a,refreshKey:o};s&&checkKey(s,"reducer name","string","valid string");const[d]=React.useState({});React.useEffect(()=>(previousData.set(d,{}),initialRender.set(d,!0),()=>{previousData.delete(d),previousCallbackData.delete(d),initialRender.delete(d),previousDependencyArrayData.delete(d)}),[]);const _=React.useCallback((e,t)=>{const r=void 0===e.isEqualCheck?isEqual(e.data,t.data):e.isEqualCheck;return r&&!initialRender.get(d)||"function"!=typeof u||(initialRender.set(d,!1),u(e.data,t.data)),r},[]),A=React.useMemo(()=>{const e=[];return"string"==typeof i&&i?e.push(i):(Array.isArray(i)||"object"===typeOf(i))&&(Array.isArray(i)?i:[i]).forEach(t=>{if("string"==typeof t)e.push(t);else if("object"===typeOf(t))if(t.key)e.push(t.key);else if(Array.isArray(t.requiredKey)&&t.requiredKey.length>0)(t=>t.forEach(t=>{"string"==typeof t?e.push(t):"object"===typeOf(t)&&t.key&&e.push(t.key)}))(t.requiredKey);else if(t.query){const r=e=>"."===e[0]?e.split(".")[1]:e.split(".")[0];"string"==typeof t?e.push(r(t)):Array.isArray(t.query)&&t.query.length>0&&t.query.forEach(t=>{"string"==typeof t?e.push(r(t)):"object"===typeOf(t)&&t.key&&e.push(r(t.key))})}}),e},[E]),p=React.useMemo(()=>{if(A&&A.length){const e=[];if(A.forEach(t=>e.push(e=>e[s]&&e[s][t])),e.length>0)return e}return[e=>e[s]]},[A]),f=React.useCallback(function(){for(var e=arguments.length,t=new Array(e),r=0;r<e;r++)t[r]=arguments[r];if(A.length>0||"object"===typeOf(i)&&!i.key&&i.requiredKey){if("object"===typeOf(i)&&!i.key&&i.requiredKey)return Array.isArray(i.requiredKey)&&i.requiredKey.length?{data:i.requiredKey.reduce((e,r,n)=>"object"===typeOf(r)?{...e,[r]:void 0===t[n]?r&&r.default:t[n]}:{...e,[r]:t[n]},{})}:{data:{}};const e=A.reduce((e,r,n)=>({...e,[r]:t[n]}),{});return _execute(e,s,i,c,d,l)}return _execute(t[0],s,i,c,d,l)},[A,E]),R=React.useMemo(()=>reselect.createSelector(p,f),[f,p]);return reactRedux.useSelector(s&&i?R:e=>_execute(e,s,i,c,d,l),s&&i?_:void 0).data},useActionsHook=function(){let e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:"",t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};const r=reactRedux.useDispatch(),[n,a]=React.useState(t?redux.bindActionCreators(t,r):cacheActions[e]||{});return React.useEffect(()=>{isEqual(cacheActions[e],t)?a(cache[e]):(cacheActions[e]=t,cache[e]=redux.bindActionCreators(t,r),a(cache[e]))},[isEqual(cacheActions[e],t)]),n},useMutation=e=>{e||checkKeyWithMessage(e,"string","useMutation(`reducerkey`) : Expected a valid reducer key");const t=reactRedux.useStore();React.useEffect(()=>{e&&checkKeyWithMessage(e,"string","useMutation(`reducerkey`) : Expected a reducer key to be string"),t.getState()[e]||checkKeyWithMessage(null,"string",` reducerName '${e}' not a valid reducer key.`)},[]);const r=reactRedux.useDispatch();return React.useCallback(n=>{let{key:a,value:o,filter:s=[]}=n;a||checkKey(null,"key","string","valid string");const i=Object.keys(t.getState()[e]);a&&invariant(i.includes(a),`'key' is invalid.${a} not found in ${e} reducer`),checkKey(s,"filter","array"),checkKey(a,"key","string");const c="app/containers/".concat(e,"/+.*?_CALL"),l=(a||"").search(c)>-1;a.includes("_CALL")&&"_CALL"===a.slice(-5)&&l&&s&&Array.isArray(s)?(console.log(t.getState()[e][a]),r({type:a.slice(0,-4).concat("CUSTOM_TASK"),response:{type:a,method:"SUCCESS",statusCode:200,mutation:!0,customTask:!0,data:{data:"function"==typeof o?o(safe(t.getState()[e][a],`.data${s.length?".":""}${s.join(".")}`),a):o},payload:{filter:s}}})):r({type:`${e}_MUTATE_STATE`,payload:{[a]:"function"==typeof o?o(t.getState()[e][a]):o}})},[])},toPromise=function(e){let t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{},r=arguments.length>2?arguments[2]:void 0,n=arguments.length>3?arguments[3]:void 0,a=t,o=!1;return"boolean"==typeof t?(a={},o=t):o=a._isReject||r,typeOf(a)!==TYPE_OBJECT$1&&(a={}),new Promise((t,r)=>"function"==typeof n?n(e({...a,resolve:t,reject:r,isReject:o})):e({...a,resolve:t,reject:r,isReject:o}))},toPromiseFunction=(e,t)=>(r,n)=>("null"===typeOf(r)&&"undefined"===typeOf(r)||checkKeyWithMessage(r,"object","toPromise() : Expected a config (first parameter) to be object"),new Promise((a,o)=>"function"==typeof t?t(e({...r,resolve:a,reject:o,isReject:n})):e({...r,resolve:a,reject:o,isReject:n}))),toPromiseAllFunction=function(){let e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:[],t=arguments.length>1?arguments[1]:void 0;return function(){let r=arguments.length>0&&void 0!==arguments[0]?arguments[0]:[],n=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};return"null"!==typeOf(r)&&"undefined"!==typeOf(r)&&"array"!==typeOf(r)&&checkKeyWithMessage(r,"object","toPromise() : Expected a (first parameter) to be an Array or Object"),Promise.all(e.map((e,a)=>new Promise((o,s)=>{const i={...("object"===typeOf(r)?r:r[a]&&r[a].config)||n.config||{},resolve:o,reject:s,isReject:!!("object"===typeOf(r)?r.isReject||n.isReject:r[a]&&r[a].isReject||n.isReject)};return"function"==typeof t?t(e(i)):e(i)})))}},CACHE={};function stringify(e){return"object"==typeof e?JSON.stringify(e):String(e)}function hashArgs(){for(var e=arguments.length,t=new Array(e),r=0;r<e;r++)t[r]=arguments[r];return t.reduce((e,t)=>`${stringify(t)}:${e}`,"")}function useStaleRefresh(e,t){let r=arguments.length>2&&void 0!==arguments[2]?arguments[2]:{},n=arguments.length>3?arguments[3]:void 0;const a=React.useRef(null),[o,s]=React.useState(null),i=React.useCallback(function(){let{loader:n,clearData:a,config:o}=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{};const i=o||r,c=hashArgs(t,i);CACHE[c]&&s(!0),toPromise(e,Object.assign({},i,CACHE[c]&&!n?{initialCallData:CACHE[c]}:{},a?{task:i.task?{...i.task,clearDataOnStart:!0}:{clearDataOnStart:!0}}:{})).then(e=>{CACHE[c]&&s(!1),e&&"SUCCESS"===e.status&&(CACHE[c]=e.data)})},[r,n]);return React.useEffect(()=>{isEqual(r,a.current)||n&&i()},[r,e,t,n]),React.useEffect(()=>{a.current=r}),[i,o]}const useMutateReducer=e=>{const t=reactRedux.useStore(),r=reactRedux.useDispatch();return React.useCallback(n=>{const a=n(e?t.getState()[e]:t.getState());a&&r({type:e?`${e}_MUTATE_STATE`:"MUTATE_STATE",payload:a||{}})},[])},useCancelAllRunningApiCalls=e=>{e||checkKeyWithMessage(e,"string","useCancelAllRunningApiCalls(`reducerkey`) : Expected a valid reducer key");const t=reactRedux.useStore(),r=reactRedux.useDispatch();return React.useCallback(function(){let n=arguments.length>0&&void 0!==arguments[0]?arguments[0]:[];const a=t.getState()[e],o=Object.entries(a).reduce((t,r)=>{let[a,o]=r;const s="app/containers/".concat(e,"/+.*?_CALL"),i=(a||"").search(s)>-1,c=Array.isArray(n)?n:[];return a&&a.includes("_CALL")&&"_CALL"===a.slice(-5)&&i&&safe(o,".loading.status",!1)&&!c.includes(a)?t.concat([{type:a.replace("_CALL","_CANCEL")}]):t},[]);o&&o.length>0&&reactRedux.batch(()=>{for(let e=0;e<o.length;e++)r(o[e])})},[])},useResetState=e=>{const t=reactRedux.useDispatch();return React.useCallback(function(){let r=arguments.length>0&&void 0!==arguments[0]?arguments[0]:[];t({type:e?`${e}_RESET_STATE`:"RESET_STATE",payload:r})},[])},useResetOnlyApiEndPointsState=e=>{const t=reactRedux.useDispatch();return React.useCallback(function(){let r=arguments.length>0&&void 0!==arguments[0]?arguments[0]:[];t({type:e?`${e}_RESET_API`:"RESET_API",payload:r})},[])},useRefetchCachedApi=e=>{e||checkKeyWithMessage(e,"string","useRefetchApi(`reducerkey`) : Expected a valid reducer key");const t=reactRedux.useDispatch();return React.useCallback(r=>{const n="app/containers/".concat("+.*?_CALL");e.search(n)>-1&&t({type:e,payload:{actionCallType:REFETCH_API_QUERY,request:{key:r}}})},[])},useApiQuery=(e,t,r)=>{let n,a;e||checkKeyWithMessage(e,"string","useRefetchApi(`reducerkey`) : Expected a valid reducer key");const o=e.split("/")[2],s=React.useRef({isQueryData:t,isMutation:r}),i=reactRedux.useDispatch();return s.current.isMutation&&(a=useMutation(o)),s.current.isQueryData&&(n=useQuery(o,{key:e,default:{}})),{...React.useMemo(()=>{const t="app/containers/".concat("+.*?_CALL");return e.search(t)>-1?{action:{call:function(){return i(actionsHandler.call(e)(...arguments))},cancel:function(){return i(actionsHandler.cancel(e)(...arguments))},custom:function(){return i(actionsHandler.custom(e)(...arguments))}},mutate:a?t=>{let{value:r,filter:n}=t;a({key:e,value:r,filter:n})}:void 0}:(checkKeyWithMessage(null,"string",`useApiQuery(${e}) : Expected a valid reducer key`),{})},[]),data:n,type:e}},EventEmitter=require("events"),valueSymbol=Symbol("valueSymbol"),previousValueSymbol=Symbol("previousValueSymbol"),globalKeySymbol=Symbol("globalKeySymbol"),GLOBAL_KEY="@@GLOBAL_LISTENER@@",GLOBAL_RESET="@@GLOBAL_RESET@@";class Global extends EventEmitter{constructor(){let e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{};super(),this[globalKeySymbol]=GLOBAL_KEY,this[valueSymbol]=e,this[previousValueSymbol]=e}emitGlobal(e,t){this.emit(this[globalKeySymbol],this[valueSymbol],{key:e,value:t})}emitIndividual(e,t){this.emit(e,this[valueSymbol],{key:e,value:t})}resetValue(e){this[previousValueSymbol]=this[valueSymbol],this[valueSymbol]=e,this.emitGlobal(GLOBAL_RESET,this[valueSymbol])}clearValue(){this[valueSymbol]={},this.emitGlobal(GLOBAL_RESET,this[valueSymbol])}getValue(e){return e?this[valueSymbol][e]:this[valueSymbol]}setValue(e,t){this[previousValueSymbol]=this[valueSymbol];const r={...this[valueSymbol]};r[e]=t,this[valueSymbol]=r,this.emitGlobal(e,t)}get value(){return this[valueSymbol]}get GLOBAL_KEY(){return this[globalKeySymbol]}dispatch(e,t){this[previousValueSymbol]=this[valueSymbol];const r={...this[valueSymbol]};r[e]=t,this[valueSymbol]=r,this.emitIndividual(e,t),this.emitGlobal(e,t)}subscribe(e){this.on(this[globalKeySymbol],(t,r)=>{isEqual(this[previousValueSymbol],this[valueSymbol])||e(t,r)})}}const globals=new Global({});function useGlobalValueHook(e,t){const r=React.useRef({}),n=React.useRef({initial:!0});t&&"object"==typeof t&&n.current.initial&&globals.resetValue(t),n.current.initial=!1,n.current.key=e;const[a,o]=React.useState(t||globals.value);return n.current.value=a,React.useEffect(()=>{null!==n.current.key&&globals.subscribe(t=>{(e?t[e]!==n.current.value[e]:t!==n.current.value)&&o(t)})},[]),r.current.value=e?a[e]:a,r.current.dispatch=globals.dispatch.bind(globals),r.current.resetValue=globals.resetValue.bind(globals),r.current.clearValue=globals.clearValue.bind(globals),r.current.getValue=globals.getValue.bind(globals),r.current.setValue=globals.setValue.bind(globals),r.current.subscribe=globals.subscribe.bind(globals),r.current.GlobalEmitter=globals,{...r.current,globalRef:r.current}}const ON_CHANGE="onChange",ON_BLUR="onBlur",VALUE="value",ERROR$2="error",emailRegex=/[\w\.\-]+@[\w\.\-]+\.\w+/;function validateEmail(e){return emailRegex.test(String(e).toLowerCase())}function validate(e,t){let{optional:r,minLength:n,isRequired:a,message:o={},length:s,regex:i,key:c}=arguments.length>2&&void 0!==arguments[2]?arguments[2]:{};if((r||!a)&&!e)return"";const l="number"!=typeof e&&"boolean"!=typeof e&&!e;if(e&&n&&e.length<n)return o&&void 0!==o.minLength?o.minLength:`Minimum ${n} characters is required`;if(e&&s&&e.length!==s)return o&&o&&void 0!==o.length?o.length:`Number should be ${s} digits long`;switch(t){case"password":return l?o&&void 0!==o.required?o.required:"This field is required":"";case"email":return l?o&&void 0!==o.required?o.required:"Please enter your email":e&&!validateEmail(e)?o&&void 0!==o.invalid?o.invalid:"Invalid email address":"";case"name":return l?o&&void 0!==o.required?o.required:"Please enter your name":"";case"mobileNumber":return l?o&&void 0!==o.required?o.required:"Please enter 10 digit mobile number":"";case"about":return l?o&&void 0!==o.required?o.required:"This field is required":"";default:if(l)return o&&void 0!==o.required?o.required:"This field is required";if(i){if("[object RegExp]"===Object.prototype.toString.call(i))return i.test(e)?"":o&&void 0!==o.regex?o.regex:`${c} is invalid `;console.error(`${c} is invalid `)}return""}}const getPlatformBasedFieldValue=e=>e&&"object"==typeof e&&e.target&&"function"==typeof e.preventDefault?e.target.value:e,getPlatformBasedFieldName=e=>e&&"object"==typeof e&&e.target&&"function"==typeof e.preventDefault?e.target.name:"",_setInitialValues=e=>{let{formConfig:t,initialValues:r}=e;return Object.entries(t||{}).reduce((e,t)=>{let[n,a={}]=t;return newObject(e,{[n]:void 0!==r[n]?"function"==typeof r[n]?r[n]():r[n]:void 0!==a.default?a.default:""})},{})},checkType=(e,t)=>newObject("function"==typeof e?e(t):e),useFormValidationHandlerHook=function(){let{ON_CHANGE_KEY:e,ON_BLUR_KEY:t,VALUE_KEY:r,ERROR_KEY:n,VALIDATOR:a}=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{};return function(){let{VALIDATOR:o=a||validate,initialValues:s={},FORM_CONFIG:i={},ON_CHANGE_KEY:c=e||ON_CHANGE,ON_BLUR_KEY:l=t||ON_BLUR,VALUE_KEY:u=r||VALUE,ERROR_KEY:E=n||ERROR$2}=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{};const d=React.useRef({is_validate_form_triggered:!1}),[_]=React.useState(()=>Math.floor(Math.random()*generateTimeStamp()));let[A,p]=React.useState(i),[f,R]=React.useState({}),[g,y]=React.useState(()=>_setInitialValues({formConfig:A,initialValues:s}));const C=React.useCallback(e=>{d.current.formConfig=checkType(e,d.current.formConfig),d.current.lastUpdated=generateTimeStamp(),typeOf(d.current.setInputProps)===TYPE_FUNCTION$1?(A=d.current.formConfig,d.current.setInputProps(d.current.getInputProps(d.current._extraProps))):p(d.current.formConfig)},[A]),O=React.useCallback(e=>{d.current.values=checkType(e,d.current.values),typeOf(d.current.setInputProps)===TYPE_FUNCTION$1?(g=d.current.values,d.current.setInputProps(d.current.getInputProps(d.current._extraProps))):y(d.current.values)},[g]),S=React.useCallback(e=>{d.current.errors=checkType(e,d.current.errors),typeOf(d.current.setInputProps)===TYPE_FUNCTION$1?(f=d.current.errors,d.current.setInputProps(d.current.getInputProps(d.current._extraProps))):R(d.current.errors)},[f]);d.current.values=g,d.current.errors=f,d.current.formConfig=A,d.current.setFormConfig=C;const T=React.useCallback(function(e,t,r,n,a){let s=arguments.length>5&&void 0!==arguments[5]&&arguments[5];const i=a||d.current.formConfig[t]||{};let{value:c,error:l}=i&&i.validator?i.validator(e,d.current,d.current.formConfig[t]._config,d.current.formConfig[t]._commonInputProps):{value:e},u=null,E=null;if(i._noValidate?O({...d.current.values,[t]:c}):((void 0!==i.trim?i.trim:i.trim||s)&&(c=trimStrings(c,i.isNumber)),i.maxLength&&(c||"").length>i.maxLength&&(E=void 0!==(i.message&&i.message.maxLength)?i.message.maxLength:`maximum ${i.maxLength} characters are allowed`,c=c.slice(0,i.maxLength)),i&&(u=l||o(c,i.type,{key:t,optional:i.optional,minLength:i.minLength,message:i.message,maxLength:i.maxLength,length:i.length,...i})||E,c&&i.match&&"string"==typeof i.match&&d.current.values[i.match]&&(u=d.current.values[i.match]!==c?void 0!==(i.message&&i.message.match)?i.message.match:`${t} not matching with ${i.match}`:E)),t&&r&&(""===c||Number.isNaN(+c)||!i.allowValidNumber||+c?i.allowOnlyNumber&&Number.isNaN(+c)?u=void 0!==(i.message&&i.message.allowOnlyNumber)?i.message&&i.message.allowOnlyNumber:"Only numbers are allowed":O({...d.current.values,[t]:c}):u=void 0!==(i.message&&i.message.allowValidNumber)?i.message&&i.message.allowValidNumber:"Please enter valid number")),"function"==typeof i.callback){const e=i.callback({error:u,value:c,key:t,formRef:d.current,is_validation_allowed:!i._noValidate},d.current.formConfig[t]._config,d.current.formConfig[t]._commonInputProps);typeOf(e)===TYPE_OBJECT$1&&(O({...d.current.values,[t]:e.value}),u=e.error)}return n?(t&&S({...d.current.errors,[t]:u||null}),{error:u,value:c,key:t}):{error:u,value:c,key:t}},[]),N=React.useCallback(function(){let e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{},t=arguments.length>1?arguments[1]:void 0,{value:r,isStopPropagation:n,isValidateOnly:a,config:o,isSetError:s=!0,trim:i}=arguments.length>2&&void 0!==arguments[2]?arguments[2]:{};e&&"function"==typeof e.preventDefault&&e.preventDefault(),e&&n&&"function"==typeof e.stopPropagation&&e.stopPropagation();const c=void 0!==r?r:getPlatformBasedFieldValue(e),l=getPlatformBasedFieldName(e),u=t||l;if(a||!u)return T(c,u,null,null,o,i);T(c,u,!0,void 0===s||s,void 0,i)},[]),m=React.useCallback(e=>{let{value:t,isValue:r,key:n,isValidateOnly:a,config:o,trim:s}=e;return N(t,n,{value:r?t:void 0,isValidateOnly:a,config:o,trim:s})},[]),b=React.useCallback(function(e,t){let r=arguments.length>2&&void 0!==arguments[2]?arguments[2]:{};const n=getPlatformBasedFieldName(e),a=t||n,o=d.current.values[a];(void 0===r.isValidateOnBlur||r.isValidateOnBlur)&&T(o,a,!1,!0)},[]),h=React.useCallback(function(){let{isSetError:e,formConfig:t={},values:r={},errors:n={},isNewFormConfig:a,isResetValue:o,isResetError:s}=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{};d.current.is_validate_form_triggered=!0;const i=o&&{},c=s&&{},l=a?t:newObject(d.current.formConfig,t),u=newObject(i||d.current.values,r),E=newObject(c||d.current.errors,n),_=[];for(const e of Object.keys(l)){const{error:t}=T(u[e],e,!1,!1,l[e],!0);E[e]=t,t&&_.push(null)}return e&&S(E),d.current.is_validate_form_triggered=!1,{values:u,error:E,totalErrorCount:_.length,errorCount:_.length,isError:_.length>0,isValidatePassed:0===_.length}},[]),D=React.useCallback(e=>{let{isSetError:t,formConfig:r={},values:n={},errors:a={}}=e;const o=r,s=n,i=a,c=[];for(const e of Object.keys(o)){const{error:t}=T(s[e],e,!1,!1,o[e]);i[e]=t,t&&c.push(null)}return t&&S(i),{values:s,errors:i,totalErrorCount:c.length,errorCount:c.length,isError:c.length>0,isValidatePassed:0===c.length}},[]),L=React.useCallback((e,t)=>h({isSetError:!1,values:e,formConfig:t,isNewFormConfig:!0,isResetValue:!0,isResetError:!0}),[]),v=React.useCallback(function(e,t){let r=arguments.length>2&&void 0!==arguments[2]?arguments[2]:{};C(newObject(t?{}:d.current.formConfig,e));const n=Object.entries(e||{}).reduce((e,n)=>{let[a,o={}]=n;return newObject(e,{[a]:r[a]||void 0!==s[a]&&("function"==typeof s[a]?s[a]():s[a])||(t?void 0!==o.default?o.default:"":d.current.values[a]||"")})},{});t?(O(n),S({})):O(newObject(d.current.values,n))},[]),P=function(){let e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:[],t=arguments.length>1?arguments[1]:void 0;e.forEach(e=>{d.current.values[e]&&N(d.current.values[e],e,t)})},I=React.useCallback(function(e){let{index:t,config:r,propKeyMap:{onChange:n=c,onBlur:a=l,value:o=u,error:s=E}={},...i}=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};const _=d.current.formConfig[e];_&&(_._config={index:t,config:r,key:e,...i});let A={[n]:t=>{N(t,e,r);const n=r&&r.validateFieldsOnChange||_&&_.validateFieldsOnChange;n&&n.length>0&&P(n,_._config)},[a]:t=>b(t,e,_._config),[o]:d.current.values[e],[s]:d.current.errors[e],keyName:e,lastUpdated:d.current.lastUpdated};return(A={...A,..._&&("function"==typeof _.inputProps?_.inputProps(d.current,_._config,{onChange:A[n],onBlur:A[a],value:A[o],error:A[s],key:e}):_.inputProps)||{}}).inputProps={...A},A._config={...d.current.formConfig[e],inputProps:void 0,_commonInputProps:void 0},delete A._config.inputProps,delete A._config._commonInputProps,_&&(_._commonInputProps={...A}),A},[]),k=React.useCallback(e=>{const t=Object.keys(d.current.formConfig).reduce((t,r)=>newObject(t,{[r]:void 0!==e[r]?e[r]||"":d.current.values[r]}),{});O(t)},[]),U=React.useCallback(()=>{const e=Object.entries(A||{}).reduce((e,t)=>{let[r,n={}]=t;return newObject(e,{[r]:void 0!==s[r]&&("function"==typeof s[r]?s[r]():s[r])||(void 0!==n.default?n.default:"")})},{});O(e),S({})},[]),K=React.useCallback(e=>{const t=typeOf(e)===TYPE_BOOLEAN$1&&!e;if(typeOf(e)===TYPE_OBJECT$1)return Object.entries(d.current.formConfig).reduce((t,r)=>{let[n,a={}]=r;return{...t,[n]:Safe(e,`.${a.key||n}`)}},{});let r=d.current.values[_key];return r="function"==typeof _config.payloadCallback?_config.payloadCallback(r):_config.isAllowEmpty?r:r||void 0,t?Object.entries(d.current.formConfig).reduce((e,t)=>{let[n,a={}]=t;return{...e,[a.key||n]:r}},{}):Object.entries(d.current.formConfig).reduce((e,t)=>{let[n,a={}]=t;return updateIn(e,(a.key||n).split("."),()=>r)},{})},[]),j=React.useCallback(e=>{const t=Object.entries(d.current.formConfig).reduce((t,r)=>{let[n,a={}]=r;return{...t,[n]:Safe(e,`.${a.key||n}`)}},{});S(t)},[]),Y=React.useCallback(function(){let e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{};return Object.keys(d.current.formConfig).reduce((t,r)=>({...t,[r]:I(r,e)}),{})},[]),x=React.useCallback(function(){let e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{},t={...d.current.formConfig},r={...d.current.errors};Object.entries(e).forEach(e=>{let[n,a]=e;t[n]._noValidate=!a,a||(r[n]="")}),C(t),S(r)},[]),F=React.useCallback(function(){let e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{},t={...d.current.formConfig},r={...d.current.errors};Object.entries(e).forEach(e=>{let[n,a]=e;t[n].optional=a,t[n].isRequired=!1,r[n]=""}),C(t),S(r),P(Object.keys(e))},[]),$=React.useCallback(function(){let e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{},t={...d.current.formConfig},r={...d.current.errors};Object.entries(e).forEach(e=>{let[n,a]=e;t[n].isRequired=a,t[n].optional=!1,r[n]=""}),C(t),S(r),P(Object.keys(e))},[]),M=React.useCallback(function(){y(d.current.values),R(d.current.errors),p(d.current.formConfig)},[]),H=React.useCallback(()=>g,[g]),V=React.useCallback(()=>f,[f]),G=React.useCallback(()=>A,[A]);return d.current.commonInputProps=I,d.current.setInitialFormData=k,d.current.onBlurValues=b,d.current.onChangeValues=N,d.current.onValidateValues=m,d.current.validateForm=h,d.current.validateObject=L,d.current.addFormConfig=v,d.current.modifyFormConfig=v,d.current.validateCustomForm=D,d.current.getResponseValues=K,d.current.getInputProps=Y,d.current.setResponseErrors=j,d.current.setKeyErrors=j,d.current.setValidate=x,d.current.setOptional=F,d.current.setRequired=$,d.current.setErrors=S,d.current.resetForm=U,d.current.setValues=O,d.current.renderForm=M,d.current.getValues=H,d.current.getErrors=V,d.current.getFormConfig=G,d.current.formId=_,{...d.current,formRef:d.current,validateCustomObject:L,getPlatformBasedFieldValue:getPlatformBasedFieldValue,setInitialFormData:k,commonInputProps:I,onValidateValues:m,onChangeValues:N,onAddFormConfig:v,setFormConfig:C,validateValue:T,onBlurValues:b,validateForm:h,resetForm:U,setValues:O,setErrors:S,setRequired:$,setOptional:F,setValidate:x,values:g,errors:f}}},checkType$1=(e,t)=>newObject("function"==typeof e?e(t):e),useMultipleOptionsHook=function(){let e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{};const[t,r]=React.useState(e),n=React.useRef({});n.current.options=t;const a=React.useCallback(e=>{n.current.options=checkType$1(e,n.current.options),r(n.current.options)},[]),o=React.useCallback((e,t,r,n)=>{if("object"===typeOf(e)){const{key:t,index:r,value:n,error:o}=e;a(e=>{const a={...e},s=a[t].slice();return s[r].value=n,s[r].error=o,a[t]=s,a})}else a(a=>{const o={...a},s=o[e].slice();return s[t].value=r,s[t].error=n,o[e]=s,o})},[]),s=React.useCallback(function(e,t){let r=arguments.length>2&&void 0!==arguments[2]?arguments[2]:1;a(n=>{const a={...n},o=a[e].slice();return o.length>1&&o.splice(t,r),a[e]=o,a})},[]),i=React.useCallback(function(e){let t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:[];a(r=>{const n={...r},a=n[e].slice();return a[e]=a.filter((e,r)=>!t.includes(r)),n[e]=a,a})