UNPKG

@mopinion/survey

Version:

Collect customer feedback with the Mopinion survey library

645 lines (644 loc) 30.3 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.BlockStoreContext = void 0; exports.BlockStoreProvider = BlockStoreProvider; exports.useBlockStore = useBlockStore; exports.useCreateBlockStore = useCreateBlockStore; var _preact = require("preact"); var _hooks = require("preact/hooks"); var _api = _interopRequireDefault(require("../../../api")); var _hooks2 = require("../../../hooks"); var _utils = require("../../../utils"); var _constants = require("../../../constants"); var _utils2 = require("../utils"); var _validation = require("../utils/validation"); var _logic = require("../utils/logic"); var _ConfigStore = require("./ConfigStore"); var _excluded = ["blocks", "properties", "layout", "blockRules", "surveyRules"], _excluded2 = ["children", "initialConfig"]; function _interopRequireDefault(e) { return e && e.__esModule ? e : { "default": e }; } function _slicedToArray(r, e) { return _arrayWithHoles(r) || _iterableToArrayLimit(r, e) || _unsupportedIterableToArray(r, e) || _nonIterableRest(); } function _nonIterableRest() { throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); } function _iterableToArrayLimit(r, l) { var t = null == r ? null : "undefined" != typeof Symbol && r[Symbol.iterator] || r["@@iterator"]; if (null != t) { var e, n, i, u, a = [], f = !0, o = !1; try { if (i = (t = t.call(r)).next, 0 === l) { if (Object(t) !== t) return; f = !1; } else for (; !(f = (e = i.call(t)).done) && (a.push(e.value), a.length !== l); f = !0); } catch (r) { o = !0, n = r; } finally { try { if (!f && null != t["return"] && (u = t["return"](), Object(u) !== u)) return; } finally { if (o) throw n; } } return a; } } function _arrayWithHoles(r) { if (Array.isArray(r)) return r; } function _objectWithoutProperties(e, t) { if (null == e) return {}; var o, r, i = _objectWithoutPropertiesLoose(e, t); if (Object.getOwnPropertySymbols) { var n = Object.getOwnPropertySymbols(e); for (r = 0; r < n.length; r++) o = n[r], -1 === t.indexOf(o) && {}.propertyIsEnumerable.call(e, o) && (i[o] = e[o]); } return i; } function _objectWithoutPropertiesLoose(r, e) { if (null == r) return {}; var t = {}; for (var n in r) if ({}.hasOwnProperty.call(r, n)) { if (-1 !== e.indexOf(n)) continue; t[n] = r[n]; } return t; } function _toConsumableArray(r) { return _arrayWithoutHoles(r) || _iterableToArray(r) || _unsupportedIterableToArray(r) || _nonIterableSpread(); } function _nonIterableSpread() { throw new TypeError("Invalid attempt to spread non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); } function _unsupportedIterableToArray(r, a) { if (r) { if ("string" == typeof r) return _arrayLikeToArray(r, a); var t = {}.toString.call(r).slice(8, -1); return "Object" === t && r.constructor && (t = r.constructor.name), "Map" === t || "Set" === t ? Array.from(r) : "Arguments" === t || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(t) ? _arrayLikeToArray(r, a) : void 0; } } function _iterableToArray(r) { if ("undefined" != typeof Symbol && null != r[Symbol.iterator] || null != r["@@iterator"]) return Array.from(r); } function _arrayWithoutHoles(r) { if (Array.isArray(r)) return _arrayLikeToArray(r); } function _arrayLikeToArray(r, a) { (null == a || a > r.length) && (a = r.length); for (var e = 0, n = Array(a); e < a; e++) n[e] = r[e]; return n; } function ownKeys(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e); r && (o = o.filter(function (r) { return Object.getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; } function _objectSpread(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys(Object(t), !0).forEach(function (r) { _defineProperty(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; } function _defineProperty(e, r, t) { return (r = _toPropertyKey(r)) in e ? Object.defineProperty(e, r, { value: t, enumerable: !0, configurable: !0, writable: !0 }) : e[r] = t, e; } function _toPropertyKey(t) { var i = _toPrimitive(t, "string"); return "symbol" == _typeof(i) ? i : i + ""; } function _toPrimitive(t, r) { if ("object" != _typeof(t) || !t) return t; var e = t[Symbol.toPrimitive]; if (void 0 !== e) { var i = e.call(t, r || "default"); if ("object" != _typeof(i)) return i; throw new TypeError("@@toPrimitive must return a primitive value."); } return ("string" === r ? String : Number)(t); } function _typeof(o) { "@babel/helpers - typeof"; return _typeof = "function" == typeof Symbol && "symbol" == typeof Symbol.iterator ? function (o) { return typeof o; } : function (o) { return o && "function" == typeof Symbol && o.constructor === Symbol && o !== Symbol.prototype ? "symbol" : typeof o; }, _typeof(o); } var allowedEmails = []; var deniedEmails = []; function getNestedBlockProps(_ref) { var _ref$value = _ref.value, value = _ref$value === void 0 ? '' : _ref$value, _ref$showError = _ref.showError, showError = _ref$showError === void 0 ? false : _ref$showError, data_field = _ref.data_field; return { value: value, showError: showError, data_field: data_field }; } function getContactBlockProps(_ref2) { var _block$properties$ele, _block$properties; var _ref2$block = _ref2.block, block = _ref2$block === void 0 ? {} : _ref2$block; return Object.keys((_block$properties$ele = (_block$properties = block.properties) === null || _block$properties === void 0 ? void 0 : _block$properties.elements) !== null && _block$properties$ele !== void 0 ? _block$properties$ele : {}).reduce(function (fields, elementKey) { var element = block.properties.elements[elementKey]; if (!element.show) { return fields; } if (!element.combine && element.subelements) { Object.keys(element.subelements).forEach(function (elementKey) { var subElement = element.subelements[elementKey]; fields[Number(subElement.data_field)] = getNestedBlockProps({ showError: element.required, data_field: Number(subElement.data_field) }); }); return fields; } fields[Number(element.data_field)] = getNestedBlockProps({ showError: element.required, data_field: Number(element.data_field) }); return fields; }, {}); } function getScreenshotBlockProps(_ref3) { var _block$properties$ele2, _block$properties2; var _ref3$block = _ref3.block, block = _ref3$block === void 0 ? {} : _ref3$block; return Object.keys((_block$properties$ele2 = (_block$properties2 = block.properties) === null || _block$properties2 === void 0 ? void 0 : _block$properties2.elements) !== null && _block$properties$ele2 !== void 0 ? _block$properties$ele2 : {}).reduce(function (fields, elementKey) { fields[elementKey] = getNestedBlockProps({}); return fields; }, {}); } function getWebsiteDataBlockProps(_ref4) { var _block$properties$ele3, _block$properties3; var block = _ref4.block, divName = _ref4.divName, multipleIndex = _ref4.multipleIndex; return Object.keys((_block$properties$ele3 = (_block$properties3 = block.properties) === null || _block$properties3 === void 0 ? void 0 : _block$properties3.elements) !== null && _block$properties$ele3 !== void 0 ? _block$properties$ele3 : {}).reduce(function (fields, elementKey) { var element = block.properties.elements[elementKey]; var value = (0, _utils.getWebsiteDataValue)({ type: element.type, value: element.value, divName: divName, multipleIndex: multipleIndex }); fields[Number(element.data_field)] = getNestedBlockProps({ value: value, data_field: Number(element.data_field) }); return fields; }, {}); } function getDefaultSubProps(_ref5) { var _block$properties$ele4, _block$properties4; var block = _ref5.block; return Object.keys((_block$properties$ele4 = (_block$properties4 = block.properties) === null || _block$properties4 === void 0 ? void 0 : _block$properties4.elements) !== null && _block$properties$ele4 !== void 0 ? _block$properties$ele4 : {}).reduce(function (fields, elementKey) { var element = block.properties.elements[elementKey]; if (element.data_field) { fields[Number(element.data_field)] = getNestedBlockProps({ data_field: Number(element.data_field) }); } return fields; }, {}); } function getMatrixBlockProps(_ref6) { var _block$properties$ele5, _block$properties5; var block = _ref6.block; return Object.keys((_block$properties$ele5 = (_block$properties5 = block.properties) === null || _block$properties5 === void 0 ? void 0 : _block$properties5.elements) !== null && _block$properties$ele5 !== void 0 ? _block$properties$ele5 : {}).reduce(function (fields, elementKey) { var element = block.properties.elements[elementKey]; if (_typeof(element.data_field) === 'object') { Object.keys(element.data_field).forEach(function (subFieldKey) { var subFieldId = element.data_field[subFieldKey]; fields[subFieldId] = getNestedBlockProps({ data_field: subFieldId }); }); } return fields; }, {}); } function getSubFieldBlockProps(props) { switch (props.block.typeName) { case 'screenshot': return getScreenshotBlockProps(props); case 'website_data': return getWebsiteDataBlockProps(props); case 'contact': return getContactBlockProps(props); case 'matrix': return getMatrixBlockProps(props); default: return getDefaultSubProps(props); } } function getElementExtraProps(elementsExtra) { return Object.keys(elementsExtra).reduce(function (fields, elementKey) { var element = elementsExtra[elementKey]; fields[element.data_field] = getNestedBlockProps({ data_field: Number(element.data_field), isVisible: false }); return fields; }, {}); } function getBlockProps(_ref7) { var _block$properties6, _block$properties$ele6, _block$properties7; var _ref7$block = _ref7.block, block = _ref7$block === void 0 ? {} : _ref7$block, _ref7$initialValue = _ref7.initialValue, initialValue = _ref7$initialValue === void 0 ? {} : _ref7$initialValue, isFirst = _ref7.isFirst, divName = _ref7.divName, multipleIndex = _ref7.multipleIndex, numOfType = _ref7.numOfType; var post = initialValue.post, value = initialValue.value; var blockProps = _objectSpread(_objectSpread({ value: value, id: Number(block.id), data_field: Number(block.data_field), showError: ((_block$properties6 = block.properties) === null || _block$properties6 === void 0 ? void 0 : _block$properties6.required) && !initialValue.value || false, focusInvalid: false, isVisible: !block.properties.hide_on_init, showInConvo: isFirst, typeCount: numOfType, autopost: post }, getSubFieldBlockProps({ block: block, multipleIndex: multipleIndex, divName: divName })), getElementExtraProps((_block$properties$ele6 = (_block$properties7 = block.properties) === null || _block$properties7 === void 0 ? void 0 : _block$properties7.elements_extra) !== null && _block$properties$ele6 !== void 0 ? _block$properties$ele6 : {})); return blockProps; } function getInitialState(_ref8) { var _properties$thanksPag, _properties$advanced; var _ref8$blocks = _ref8.blocks, blocks = _ref8$blocks === void 0 ? {} : _ref8$blocks, _ref8$properties = _ref8.properties, properties = _ref8$properties === void 0 ? {} : _ref8$properties, _ref8$layout = _ref8.layout, layout = _ref8$layout === void 0 ? [] : _ref8$layout, divName = _ref8.divName, multipleIndex = _ref8.multipleIndex, surveyRules = _ref8.surveyRules, blockRules = _ref8.blockRules; var typeCount = {}; var state = {}; var lastUpdatedBlocks = []; var initialPost = false; Object.keys(blocks).forEach(function (blockId) { var _typeCount$block$type; var block = blocks[blockId]; var numOfType = typeCount[block.typeName] = ((_typeCount$block$type = typeCount[block.typeName]) !== null && _typeCount$block$type !== void 0 ? _typeCount$block$type : 0) + 1; var isFirst = layout.indexOf(Number(block.id)) === 0; var initialValue = (0, _utils2.getInitialElementValue)(block); if (initialValue.post) { lastUpdatedBlocks.push(block.id); initialPost = initialValue.post; } state[blockId] = getBlockProps({ block: block, initialValue: initialValue, isFirst: isFirst, numOfType: numOfType, divName: divName, multipleIndex: multipleIndex }); state[block.uuid] = state[blockId]; }); Object.keys(((_properties$thanksPag = properties.thanksPage) === null || _properties$thanksPag === void 0 ? void 0 : _properties$thanksPag.elements) || {}).forEach(function (thanksPageElementKey) { var element = properties.thanksPage.elements[thanksPageElementKey]; state[element.genID] = { isVisible: !element.hide_on_init }; }); if ((_properties$advanced = properties.advanced) !== null && _properties$advanced !== void 0 && (_properties$advanced = _properties$advanced.recaptcha) !== null && _properties$advanced !== void 0 && _properties$advanced.siteKey) { state.recaptcha = { id: 'recaptcha', value: '', isVisible: true, showError: true }; } state[_constants.honeyBotId] = { id: _constants.honeyBotId, value: '', isVisible: true, showError: false, honey: true }; var _applyStartingLogic = (0, _logic.applyStartingLogic)({ state: state, layout: layout, surveyRules: surveyRules }), stateWithStartingLogic = _applyStartingLogic.newState, updateFromLogic = _applyStartingLogic.updateFromLogic; if (Object.keys(updateFromLogic).length > 0) { lastUpdatedBlocks.push.apply(lastUpdatedBlocks, _toConsumableArray(Object.keys(updateFromLogic))); } if (lastUpdatedBlocks.length > 0) { var newState = _objectSpread({}, stateWithStartingLogic); var submitFromLogic = false; lastUpdatedBlocks.forEach(function (blockId) { var _applyLogic = (0, _logic.applyLogic)({ state: newState, block: blocks[blockId], rules: blockRules[blockId], layout: layout }), submitFromBlockLogic = _applyLogic.submitFromLogic, newStateFromLogic = _applyLogic.newState; if (submitFromBlockLogic) { submitFromLogic = submitFromBlockLogic; } Object.assign(newState, newStateFromLogic); }); return _objectSpread(_objectSpread({}, newState), {}, { submitFromLogic: submitFromLogic, lastUpdatedBlock: lastUpdatedBlocks.pop(), initialPost: initialPost }); } return _objectSpread(_objectSpread({}, stateWithStartingLogic), {}, { lastUpdatedBlock: null, initialPost: false }); } function showExtraField(_ref9) { var _extraInputElement$va; var state = _ref9.state, extraInputElement = _ref9.extraInputElement, extraQuestionElement = _ref9.extraQuestionElement, block = _ref9.block; if (block.typeName === 'checkbox') { return Boolean(state[extraQuestionElement.data_field].value); } return state.value === ((_extraInputElement$va = extraInputElement.value) !== null && _extraInputElement$va !== void 0 ? _extraInputElement$va : extraInputElement.label); } function getExtraInputElement() { var _block$properties8, _block$properties9; var block = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {}; if (!((_block$properties8 = block.properties) !== null && _block$properties8 !== void 0 && _block$properties8.elements_extra)) { return null; } return block.properties.elements_extra[Object.keys((_block$properties9 = block.properties) === null || _block$properties9 === void 0 ? void 0 : _block$properties9.elements_extra).pop()]; } function getExtraQuestionElement() { var _block$properties0; var block = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {}; if (!((_block$properties0 = block.properties) !== null && _block$properties0 !== void 0 && _block$properties0.elements_extra)) { return null; } return block.properties.elements_extra[Object.keys(block.properties.elements_extra).shift()]; } function applyUpdate(_ref0) { var state = _ref0.state, _ref0$value = _ref0.value, value = _ref0$value === void 0 ? '' : _ref0$value, skip = _ref0.skip, datafieldId = _ref0.datafieldId, _ref0$block = _ref0.block, block = _ref0$block === void 0 ? {} : _ref0$block, _ref0$rules = _ref0.rules, rules = _ref0$rules === void 0 ? [] : _ref0$rules, layout = _ref0.layout, type = _ref0.type; var blockStateWithNewValue = !datafieldId ? _objectSpread(_objectSpread({}, state[block.id]), {}, { inputSet: true, wasPrefilled: false, value: value }, skip && { isSkipped: true }) : _objectSpread(_objectSpread({}, state[block.id]), {}, _defineProperty({}, datafieldId, _objectSpread(_objectSpread({}, state[block.id][datafieldId]), {}, { inputSet: true, wasPrefilled: false, value: value }, skip && { isSkipped: true }))); var extraQuestionElement = getExtraQuestionElement(block); var extraInputElement = getExtraInputElement(block); var newBlockState = extraInputElement ? _objectSpread(_objectSpread({}, blockStateWithNewValue), {}, _defineProperty({}, extraInputElement.data_field, _objectSpread(_objectSpread({}, blockStateWithNewValue[extraInputElement.data_field]), {}, { isVisible: showExtraField({ state: blockStateWithNewValue, extraInputElement: extraInputElement, extraQuestionElement: extraQuestionElement, block: block }) }))) : blockStateWithNewValue; var validated = (0, _validation.validate)({ state: newBlockState, datafieldId: datafieldId, block: block, allowedEmails: allowedEmails }); var newState = _objectSpread(_objectSpread({}, state), {}, _defineProperty(_defineProperty({}, block.id, _objectSpread(_objectSpread(_objectSpread({}, newBlockState), block.typeName !== 'contact' && { showError: !validated.valid, errorReason: validated.reason }), block.typeName === 'contact' && _defineProperty({}, datafieldId, _objectSpread(_objectSpread({}, newBlockState[datafieldId]), {}, { showError: !validated.valid, errorReason: validated.reason })))), "lastUpdatedBlock", block.id)); var _applyLogic2 = (0, _logic.applyLogic)({ state: newState, block: block, rules: rules, layout: layout }), newStateWithLogic = _applyLogic2.newState, submitFromLogic = _applyLogic2.submitFromLogic; return _objectSpread(_objectSpread({}, newStateWithLogic), {}, { action: "".concat(type, "-").concat((0, _utils.rnd)()), submitFromLogic: submitFromLogic }); } function applyShowNext(_ref10) { var state = _ref10.state, blockRules = _ref10.blockRules, blocks = _ref10.blocks, layout = _ref10.layout, type = _ref10.type; var showableLayout = layout.filter(function (blockId) { var block = blocks[blockId]; return _constants.alwaysNotVisibleBlocks.indexOf(block.typeName) === -1; }); var currentId = (0, _utils2.getCurrentVisibleId)({ layout: showableLayout, blockState: state, blocks: blocks }); var rules = blockRules[currentId]; var _applyLogic3 = (0, _logic.applyLogic)({ state: state, block: blocks[currentId], rules: rules, layout: showableLayout }), newStateWithLogic = _applyLogic3.newState; var nextId = (0, _utils2.getNextVisibleId)({ layout: showableLayout, blockState: newStateWithLogic, blocks: blocks }); return _objectSpread(_objectSpread({}, newStateWithLogic), {}, _defineProperty(_defineProperty({}, nextId, _objectSpread(_objectSpread({}, newStateWithLogic[nextId]), {}, { showInConvo: true })), "action", "".concat(type, "-").concat((0, _utils.rnd)()))); } function reducer(state, action) { switch (action.type) { case 'set_value': return applyUpdate(_objectSpread(_objectSpread({ state: state }, action.payload), {}, { type: action.type })); case 'set_nested_value': return applyUpdate(_objectSpread(_objectSpread({ state: state }, action.payload), {}, { type: action.type })); case 'set_honeybot_value': return _objectSpread(_objectSpread({}, state), {}, _defineProperty(_defineProperty({}, _constants.honeyBotId, _objectSpread(_objectSpread({}, state[_constants.honeyBotId]), {}, { value: action.payload.value })), "type", action.type)); case 'validate_block': var validatedBlock = (0, _validation.validate)({ state: state[action.payload.block.id], datafieldId: action.payload.datafieldId, block: action.payload.block, allowedEmails: allowedEmails }); return _objectSpread(_objectSpread({}, state), {}, _defineProperty({}, action.payload.block.id, _objectSpread(_objectSpread(_objectSpread({}, state[action.payload.block.id]), action.payload.block.typeName !== 'contact' && { showError: !validatedBlock.valid, errorReason: validatedBlock.reason }), action.payload.block.typeName === 'contact' && _defineProperty({}, action.payload.datafieldId, _objectSpread(_objectSpread({}, state[action.payload.block.id][action.payload.datafieldId]), {}, { showError: !validatedBlock.valid, errorReason: validatedBlock.reason }))))); case 'set_business_email_loading': return _objectSpread(_objectSpread({}, state), {}, _defineProperty({}, action.payload.block.id, _objectSpread(_objectSpread(_objectSpread({}, state[action.payload.block.id]), action.payload.block.typeName !== 'contact' && { isLoading: action.payload.loading }), action.payload.block.typeName === 'contact' && _defineProperty({}, action.payload.datafieldId, _objectSpread(_objectSpread({}, state[action.payload.block.id][action.payload.datafieldId]), {}, { isLoading: action.payload.loading }))))); case 'set_skip': return applyUpdate(_objectSpread(_objectSpread({ state: state }, action.payload), {}, { skip: true, type: action.type })); case 'set_show_next_convo': return applyShowNext(_objectSpread(_objectSpread({ state: state }, action.payload), {}, { type: action.type })); case 'reset_form': return _objectSpread(_objectSpread({}, action.payload), {}, { action: action.type }); default: return state; } } function createSetValueCookie(formKey, cookieTime) { return function (action) { var _action$payload, _block$properties1; var _ref13 = (_action$payload = action === null || action === void 0 ? void 0 : action.payload) !== null && _action$payload !== void 0 ? _action$payload : {}, _ref13$block = _ref13.block, block = _ref13$block === void 0 ? {} : _ref13$block, value = _ref13.value, datafieldId = _ref13.datafieldId; if (!((_block$properties1 = block.properties) !== null && _block$properties1 !== void 0 && _block$properties1.setScoreCookie)) { return; } if (block.typeName === 'checkbox') { var _block$properties$ele7, _block$properties10; Object.keys((_block$properties$ele7 = (_block$properties10 = block.properties) === null || _block$properties10 === void 0 ? void 0 : _block$properties10.elements) !== null && _block$properties$ele7 !== void 0 ? _block$properties$ele7 : {}).forEach(function (elementKey) { var _block$properties11; var element = (_block$properties11 = block.properties) === null || _block$properties11 === void 0 ? void 0 : _block$properties11.elements[elementKey]; if (element.data_field === datafieldId) { (0, _utils.setCookie)("MSanswer.".concat(formKey, ".").concat(block.id), element.label, cookieTime); } }); return; } (0, _utils.setCookie)("MSanswer.".concat(formKey, ".").concat(block.id), value, cookieTime); }; } var checkBusinessEmail = (0, _utils.debounce)(function checkBusinessEmail(_ref14) { var _block$properties12, _block$properties13, _block$properties14, _block$properties15; var action = _ref14.action, dispatch = _ref14.dispatch, domain = _ref14.domain, customDomain = _ref14.customDomain; var type = action.type, _action$payload2 = action.payload, _action$payload3 = _action$payload2 === void 0 ? {} : _action$payload2, value = _action$payload3.value, _action$payload3$bloc = _action$payload3.block, block = _action$payload3$bloc === void 0 ? {} : _action$payload3$bloc, datafieldId = _action$payload3.datafieldId; if (type !== 'set_value' && type !== 'set_nested_value') { return; } if (!((_block$properties12 = block.properties) !== null && _block$properties12 !== void 0 && _block$properties12.business_only) && !((_block$properties13 = block.properties) !== null && _block$properties13 !== void 0 && (_block$properties13 = _block$properties13.elements) !== null && _block$properties13 !== void 0 && (_block$properties13 = _block$properties13.email) !== null && _block$properties13 !== void 0 && _block$properties13.business_only)) { return; } if ((_block$properties14 = block.properties) !== null && _block$properties14 !== void 0 && (_block$properties14 = _block$properties14.elements) !== null && _block$properties14 !== void 0 && (_block$properties14 = _block$properties14.email) !== null && _block$properties14 !== void 0 && _block$properties14.business_only && datafieldId !== ((_block$properties15 = block.properties) === null || _block$properties15 === void 0 || (_block$properties15 = _block$properties15.elements) === null || _block$properties15 === void 0 || (_block$properties15 = _block$properties15.email) === null || _block$properties15 === void 0 ? void 0 : _block$properties15.data_field)) { return; } if (value.length < 5 || value.indexOf('@') === -1 || allowedEmails.indexOf(value) > -1 || deniedEmails.indexOf(value) > -1) { return; } dispatch({ type: 'set_business_email_loading', payload: { block: block, datafieldId: datafieldId, loading: true } }); (0, _api["default"])({ domain: domain, customDomain: customDomain }).validateBusinessEmail({ email: value }).then(function (response) { dispatch({ type: 'set_business_email_loading', payload: { block: block, datafieldId: datafieldId, loading: false } }); if (response.code !== 200) { return; } if (response.allowMail) { allowedEmails.push(value); } else { deniedEmails.push(value); } dispatch({ type: 'validate_block', payload: { value: value, block: block, datafieldId: datafieldId } }); }); }, 500); function useCreateBlockStore(_ref15) { var blocks = _ref15.blocks, properties = _ref15.properties, layout = _ref15.layout, blockRules = _ref15.blockRules, surveyRules = _ref15.surveyRules, props = _objectWithoutProperties(_ref15, _excluded); var _useFormProps = (0, _ConfigStore.useFormProps)(), multipleIndex = _useFormProps.multipleIndex, divName = _useFormProps.divName, formKey = _useFormProps.formKey, cookieTime = _useFormProps.cookieTime, domain = _useFormProps.domain, customDomain = _useFormProps.customDomain, extra = _useFormProps.extra; var setValueCookie = createSetValueCookie(formKey, cookieTime); var validateBusinessEmail = (0, _hooks.useCallback)(function (action, state, dispatch) { return checkBusinessEmail({ action: action, dispatch: dispatch, domain: domain, customDomain: customDomain }); }, [domain, customDomain]); var showNextBusinessEmail = (0, _hooks.useCallback)(function (action, state, dispatch) { var _block$properties16; if (action.type !== 'validate_block') { return; } var block = action.payload.block; if (!((_block$properties16 = block.properties) !== null && _block$properties16 !== void 0 && _block$properties16.business_only)) { return; } var blockState = state[block.id]; if (blockState.showError) { return; } dispatch({ type: 'set_show_next_convo', payload: { blocks: blocks, layout: layout, blockRules: blockRules } }); }, [blocks, layout, blockRules]); var initialState = (0, _hooks.useMemo)(function () { return getInitialState({ blocks: blocks, layout: layout, divName: divName, multipleIndex: multipleIndex, properties: properties, surveyRules: surveyRules, blockRules: blockRules }); }, [blocks, layout, divName, multipleIndex, properties, surveyRules]); var _useReducerWithMiddle = (0, _hooks2.useReducerWithMiddleware)(reducer, initialState, { middleware: [validateBusinessEmail], afterware: [showNextBusinessEmail, setValueCookie] }), _useReducerWithMiddle2 = _slicedToArray(_useReducerWithMiddle, 2), state = _useReducerWithMiddle2[0], dispatch = _useReducerWithMiddle2[1]; return _objectSpread(_objectSpread({}, state), {}, { actions: { dispatch: dispatch, reset: function reset() { dispatch({ type: 'reset_form', payload: initialState }); } } }); } var BlockStoreContext = exports.BlockStoreContext = (0, _preact.createContext)({}); function BlockStoreProvider(_ref16) { var children = _ref16.children, initialConfig = _ref16.initialConfig, props = _objectWithoutProperties(_ref16, _excluded2); var state = useCreateBlockStore(_objectSpread({}, initialConfig)); return (0, _preact.h)(BlockStoreContext.Provider, { value: state }, children); } function useBlockStore() { return (0, _hooks.useContext)(BlockStoreContext); } //# sourceMappingURL=BlockStore.js.map