UNPKG

sprint-digital-react-form-builder

Version:
192 lines (163 loc) 6.23 kB
"use strict"; var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault"); Object.defineProperty(exports, "__esModule", { value: true }); exports["default"] = void 0; var _defineProperty2 = _interopRequireDefault(require("@babel/runtime/helpers/defineProperty")); var _beedle = _interopRequireDefault(require("beedle")); var _requests = require("./requests"); var _UUID = _interopRequireDefault(require("../UUID")); function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; } function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys(Object(source), !0).forEach(function (key) { (0, _defineProperty2["default"])(target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; } var _saveUrl; var _onPost; var _onLoad; var store = new _beedle["default"]({ actions: { setData: function setData(context, data, saveData) { context.commit('setData', data); if (saveData) this.save(data); }, load: function load(context, _ref) { var _this = this; var loadUrl = _ref.loadUrl, saveUrl = _ref.saveUrl, data = _ref.data, saveAlways = _ref.saveAlways; _saveUrl = saveUrl; var saveA = saveAlways || saveAlways === undefined; context.commit('setSaveAlways', saveA); if (_onLoad) { _onLoad().then(function (x) { if (data && data.length > 0 && x.length === 0) { data.forEach(function (y) { return x.push(y); }); } _this.setData(context, x); }); } else if (loadUrl) { (0, _requests.get)(loadUrl).then(function (x) { if (data && data.length > 0 && x.length === 0) { data.forEach(function (y) { return x.push(y); }); } _this.setData(context, x); }); } else { this.setData(context, data); } }, create: function create(context, element) { var _context$state = context.state, data = _context$state.data, saveAlways = _context$state.saveAlways; data.push(element); this.setData(context, data, saveAlways); }, "delete": function _delete(context, element) { var _context$state2 = context.state, data = _context$state2.data, saveAlways = _context$state2.saveAlways; data.splice(data.indexOf(element), 1); this.setData(context, data, saveAlways); }, deleteLastItem: function deleteLastItem(context) { var lastItem = context.state.lastItem; if (lastItem) { this["delete"](context, lastItem); context.commit('setLastItem', null); } }, resetLastItem: function resetLastItem(context) { var lastItem = context.state.lastItem; if (lastItem) { context.commit('setLastItem', null); // console.log('resetLastItem'); } }, post: function post(context) { var data = context.state.data; this.setData(context, data, true); }, updateOrder: function updateOrder(context, elements) { var saveAlways = context.state.saveAlways; var newData = elements.filter(function (x) { return x && !x.parentId; }); elements.filter(function (x) { return x && x.parentId; }).forEach(function (x) { return newData.push(x); }); this.setData(context, newData, saveAlways); }, insertItem: function insertItem(context, item) { // console.log('insertItem', item); context.commit('setLastItem', item.isContainer ? null : item); }, save: function save(data) { if (_onPost) { _onPost({ task_data: data }); } else if (_saveUrl) { (0, _requests.post)(_saveUrl, { task_data: data }); } }, duplicate: function duplicate(context, element) { var _context$state3 = context.state, data = _context$state3.data, saveAlways = _context$state3.saveAlways; var newElement = _objectSpread({}, element); // Generate new unique ID newElement.id = _UUID["default"].uuid(); // If the element has a field_name, append a number to make it unique if (newElement.field_name) { var baseFieldName = newElement.field_name; var existingNames = data.map(function (item) { return item.field_name; }); var counter = 1; var fieldName; do { fieldName = "".concat(baseFieldName, "_").concat(counter); counter++; } while (existingNames.includes(fieldName)); newElement.field_name = fieldName; } // Insert the duplicated element after the original var index = data.indexOf(element); data.splice(index + 1, 0, newElement); this.setData(context, data, saveAlways); } }, mutations: { setData: function setData(state, payload) { // eslint-disable-next-line no-param-reassign state.data = payload; return state; }, setSaveAlways: function setSaveAlways(state, payload) { // eslint-disable-next-line no-param-reassign state.saveAlways = payload; return state; }, setLastItem: function setLastItem(state, payload) { // eslint-disable-next-line no-param-reassign state.lastItem = payload; // console.log('setLastItem', payload); return state; } }, initialState: { data: [], saveAlways: true, lastItem: null } }); store.setExternalHandler = function (onLoad, onPost) { _onLoad = onLoad; _onPost = onPost; }; var _default = store; exports["default"] = _default;