react-planner-viewer
Version:
react-planner-viewer is a React Component for view plans builded with react-planner in 2D mode
191 lines (158 loc) • 15.4 kB
JavaScript
import { NEW_PROJECT, LOAD_PROJECT, SAVE_PROJECT, OPEN_CATALOG, SELECT_TOOL_EDIT, UNSELECT_ALL, SET_PROPERTIES, SET_ITEMS_ATTRIBUTES, SET_LINES_ATTRIBUTES, SET_HOLES_ATTRIBUTES, REMOVE, UNDO, ROLLBACK, OPEN_PROJECT_CONFIGURATOR, SET_PROJECT_PROPERTIES, INIT_CATALOG, UPDATE_MOUSE_COORDS, UPDATE_ZOOM_SCALE, TOGGLE_SNAP, CHANGE_CATALOG_PAGE, GO_BACK_TO_CATALOG_PAGE, THROW_ERROR, THROW_WARNING, COPY_PROPERTIES, PASTE_PROPERTIES, PUSH_LAST_SELECTED_CATALOG_ELEMENT_TO_HISTORY } from '../constants';
export function loadProject(sceneJSON) {
return {
type: LOAD_PROJECT,
sceneJSON: sceneJSON
};
}
export function newProject() {
return {
type: NEW_PROJECT
};
}
export function saveProject() {
return {
type: SAVE_PROJECT
};
}
export function openCatalog() {
return {
type: OPEN_CATALOG
};
}
export function changeCatalogPage(newPage, oldPage) {
return {
type: CHANGE_CATALOG_PAGE,
newPage: newPage,
oldPage: oldPage
};
}
export function goBackToCatalogPage(newPage) {
return {
type: GO_BACK_TO_CATALOG_PAGE,
newPage: newPage
};
}
export function selectToolEdit() {
return {
type: SELECT_TOOL_EDIT
};
}
export function unselectAll() {
return {
type: UNSELECT_ALL
};
}
export function setProperties(properties) {
return {
type: SET_PROPERTIES,
properties: properties
};
}
export function setItemsAttributes(itemsAttributes) {
itemsAttributes = itemsAttributes.set('rotation', parseFloat(itemsAttributes.get('rotation')));
return {
type: SET_ITEMS_ATTRIBUTES,
itemsAttributes: itemsAttributes
};
}
export function setLinesAttributes(linesAttributes) {
linesAttributes = linesAttributes.withMutations(function (attributes) {
attributes.setIn(['vertexOne', 'x'], parseFloat(linesAttributes.getIn(['vertexOne', 'x'])));
attributes.setIn(['vertexOne', 'y'], parseFloat(linesAttributes.getIn(['vertexOne', 'y'])));
attributes.setIn(['vertexTwo', 'x'], parseFloat(linesAttributes.getIn(['vertexTwo', 'x'])));
attributes.setIn(['vertexTwo', 'y'], parseFloat(linesAttributes.getIn(['vertexTwo', 'y'])));
});
return {
type: SET_LINES_ATTRIBUTES,
linesAttributes: linesAttributes
};
}
export function setHolesAttributes(holesAttributes) {
holesAttributes = holesAttributes.set('offset', parseFloat(holesAttributes.get('offset')));
return {
type: SET_HOLES_ATTRIBUTES,
holesAttributes: holesAttributes
};
}
export function remove() {
return {
type: REMOVE
};
}
export function undo() {
return {
type: UNDO
};
}
export function rollback() {
return {
type: ROLLBACK
};
}
export function openProjectConfigurator() {
return {
type: OPEN_PROJECT_CONFIGURATOR
};
}
export function setProjectProperties(properties) {
return {
type: SET_PROJECT_PROPERTIES,
properties: properties
};
}
export function initCatalog(catalog) {
return {
type: INIT_CATALOG,
catalog: catalog
};
}
export function updateMouseCoord() {
var coords = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : { x: x, y: y };
return {
type: UPDATE_MOUSE_COORDS,
coords: coords
};
}
export function updateZoomScale(scale) {
return {
type: UPDATE_ZOOM_SCALE,
scale: scale
};
}
export function toggleSnap(mask) {
return {
type: TOGGLE_SNAP,
mask: mask
};
}
export function throwError(error) {
return {
type: THROW_ERROR,
error: error
};
}
export function throwWarning(warning) {
return {
type: THROW_WARNING,
warning: warning
};
}
export function copyProperties(properties) {
return {
type: COPY_PROPERTIES,
properties: properties
};
}
export function pasteProperties() {
return {
type: PASTE_PROPERTIES
};
}
export function pushLastSelectedCatalogElementToHistory(element) {
return {
type: PUSH_LAST_SELECTED_CATALOG_ELEMENT_TO_HISTORY,
element: element
};
}
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9hY3Rpb25zL3Byb2plY3QtYWN0aW9ucy5qcyJdLCJuYW1lcyI6WyJORVdfUFJPSkVDVCIsIkxPQURfUFJPSkVDVCIsIlNBVkVfUFJPSkVDVCIsIk9QRU5fQ0FUQUxPRyIsIlNFTEVDVF9UT09MX0VESVQiLCJVTlNFTEVDVF9BTEwiLCJTRVRfUFJPUEVSVElFUyIsIlNFVF9JVEVNU19BVFRSSUJVVEVTIiwiU0VUX0xJTkVTX0FUVFJJQlVURVMiLCJTRVRfSE9MRVNfQVRUUklCVVRFUyIsIlJFTU9WRSIsIlVORE8iLCJST0xMQkFDSyIsIk9QRU5fUFJPSkVDVF9DT05GSUdVUkFUT1IiLCJTRVRfUFJPSkVDVF9QUk9QRVJUSUVTIiwiSU5JVF9DQVRBTE9HIiwiVVBEQVRFX01PVVNFX0NPT1JEUyIsIlVQREFURV9aT09NX1NDQUxFIiwiVE9HR0xFX1NOQVAiLCJDSEFOR0VfQ0FUQUxPR19QQUdFIiwiR09fQkFDS19UT19DQVRBTE9HX1BBR0UiLCJUSFJPV19FUlJPUiIsIlRIUk9XX1dBUk5JTkciLCJDT1BZX1BST1BFUlRJRVMiLCJQQVNURV9QUk9QRVJUSUVTIiwiUFVTSF9MQVNUX1NFTEVDVEVEX0NBVEFMT0dfRUxFTUVOVF9UT19ISVNUT1JZIiwibG9hZFByb2plY3QiLCJzY2VuZUpTT04iLCJ0eXBlIiwibmV3UHJvamVjdCIsInNhdmVQcm9qZWN0Iiwib3BlbkNhdGFsb2ciLCJjaGFuZ2VDYXRhbG9nUGFnZSIsIm5ld1BhZ2UiLCJvbGRQYWdlIiwiZ29CYWNrVG9DYXRhbG9nUGFnZSIsInNlbGVjdFRvb2xFZGl0IiwidW5zZWxlY3RBbGwiLCJzZXRQcm9wZXJ0aWVzIiwicHJvcGVydGllcyIsInNldEl0ZW1zQXR0cmlidXRlcyIsIml0ZW1zQXR0cmlidXRlcyIsInNldCIsInBhcnNlRmxvYXQiLCJnZXQiLCJzZXRMaW5lc0F0dHJpYnV0ZXMiLCJsaW5lc0F0dHJpYnV0ZXMiLCJ3aXRoTXV0YXRpb25zIiwiYXR0cmlidXRlcyIsInNldEluIiwiZ2V0SW4iLCJzZXRIb2xlc0F0dHJpYnV0ZXMiLCJob2xlc0F0dHJpYnV0ZXMiLCJyZW1vdmUiLCJ1bmRvIiwicm9sbGJhY2siLCJvcGVuUHJvamVjdENvbmZpZ3VyYXRvciIsInNldFByb2plY3RQcm9wZXJ0aWVzIiwiaW5pdENhdGFsb2ciLCJjYXRhbG9nIiwidXBkYXRlTW91c2VDb29yZCIsImNvb3JkcyIsIngiLCJ5IiwidXBkYXRlWm9vbVNjYWxlIiwic2NhbGUiLCJ0b2dnbGVTbmFwIiwibWFzayIsInRocm93RXJyb3IiLCJlcnJvciIsInRocm93V2FybmluZyIsIndhcm5pbmciLCJjb3B5UHJvcGVydGllcyIsInBhc3RlUHJvcGVydGllcyIsInB1c2hMYXN0U2VsZWN0ZWRDYXRhbG9nRWxlbWVudFRvSGlzdG9yeSIsImVsZW1lbnQiXSwibWFwcGluZ3MiOiJBQUFBLFNBQ0VBLFdBREYsRUFFRUMsWUFGRixFQUdFQyxZQUhGLEVBSUVDLFlBSkYsRUFLRUMsZ0JBTEYsRUFNRUMsWUFORixFQU9FQyxjQVBGLEVBUUVDLG9CQVJGLEVBU0VDLG9CQVRGLEVBVUVDLG9CQVZGLEVBV0VDLE1BWEYsRUFZRUMsSUFaRixFQWFFQyxRQWJGLEVBY0VDLHlCQWRGLEVBZUVDLHNCQWZGLEVBZ0JFQyxZQWhCRixFQWlCRUMsbUJBakJGLEVBa0JFQyxpQkFsQkYsRUFtQkVDLFdBbkJGLEVBb0JFQyxtQkFwQkYsRUFxQkVDLHVCQXJCRixFQXNCRUMsV0F0QkYsRUF1QkVDLGFBdkJGLEVBd0JFQyxlQXhCRixFQXlCRUMsZ0JBekJGLEVBMEJFQyw2Q0ExQkYsUUEyQk8sY0EzQlA7O0FBNkJBLE9BQU8sU0FBU0MsV0FBVCxDQUFxQkMsU0FBckIsRUFBZ0M7QUFDckMsU0FBTztBQUNMQyxVQUFNM0IsWUFERDtBQUVMMEI7QUFGSyxHQUFQO0FBSUQ7O0FBRUQsT0FBTyxTQUFTRSxVQUFULEdBQXNCO0FBQzNCLFNBQU87QUFDTEQsVUFBTTVCO0FBREQsR0FBUDtBQUdEOztBQUVELE9BQU8sU0FBUzhCLFdBQVQsR0FB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LFNBQVNrRCx1Q0FBVCxDQUFrREMsT0FBbEQsRUFBNEQ7QUFDakUsU0FBTztBQUNML0MsVUFBTUgsNkNBREQ7QUFFTGtEO0FBRkssR0FBUDtBQUlEIiwiZmlsZSI6InByb2plY3QtYWN0aW9ucy5qcyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XG4gIE5FV19QUk9KRUNULFxuICBMT0FEX1BST0pFQ1QsXG4gIFNBVkVfUFJPSkVDVCxcbiAgT1BFTl9DQVRBTE9HLFxuICBTRUxFQ1RfVE9PTF9FRElULFxuICBVTlNFTEVDVF9BTEwsXG4gIFNFVF9QUk9QRVJUSUVTLFxuICBTRVRfSVRFTVNfQVRUUklCVVRFUyxcbiAgU0VUX0xJTkVTX0FUVFJJQlVURVMsXG4gIFNFVF9IT0xFU19BVFRSSUJVVEVTLFxuICBSRU1PVkUsXG4gIFVORE8sXG4gIFJPTExCQUNLLFxuICBPUEVOX1BST0pFQ1RfQ09ORklHVVJBVE9SLFxuICBTRVRfUFJPSkVDVF9QUk9QRVJUSUVTLFxuICBJTklUX0NBVEFMT0csXG4gIFVQREFURV9NT1VTRV9DT09SRFMsXG4gIFVQREFURV9aT09NX1NDQUxFLFxuICBUT0dHTEVfU05BUCxcbiAgQ0hBTkdFX0NBVEFMT0dfUEFHRSxcbiAgR09fQkFDS19UT19DQVRBTE9HX1BBR0UsXG4gIFRIUk9XX0VSUk9SLFxuICBUSFJPV19XQVJOSU5HLFxuICBDT1BZX1BST1BFUlRJRVMsXG4gIFBBU1RFX1BST1BFUlRJRVMsXG4gIFBVU0hfTEFTVF9TRUxFQ1RFRF9DQVRBTE9HX0VMRU1FTlRfVE9fSElTVE9SWVxufSBmcm9tICcuLi9jb25zdGFudHMnO1xuXG5leHBvcnQgZnVuY3Rpb24gbG9hZFByb2plY3Qoc2NlbmVKU09OKSB7XG4gIHJldHVybiB7XG4gICAgdHlwZTogTE9BRF9QUk9KRUNULFxuICAgIHNjZW5lSlNPTlxuICB9XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBuZXdQcm9qZWN0KCkge1xuICByZXR1cm4ge1xuICAgIHR5cGU6IE5FV19QUk9KRUNUXG4gIH1cbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHNhdmVQcm9qZWN0KCkge1xuICByZXR1cm4ge1xuICAgIHR5cGU6IFNBVkVfUFJPSkVDVFxuICB9XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBvcGVuQ2F0YWxvZygpIHtcbiAgcmV0dXJuIHtcbiAgICB0eXBlOiBPUEVOX0NBVEFMT0dcbiAgfVxufVxuXG5leHBvcnQgZnVuY3Rpb24gY2hhbmdlQ2F0YWxvZ1BhZ2UobmV3UGFnZSwgb2xkUGFnZSkge1xuICByZXR1cm4ge1xuICAgIHR5cGU6IENIQU5HRV9DQVRBTE9HX1BBR0UsXG4gICAgbmV3UGFnZSxcbiAgICBvbGRQYWdlXG4gIH07XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBnb0JhY2tUb0NhdGFsb2dQYWdlKG5ld1BhZ2UpIHtcbiAgcmV0dXJuIHtcbiAgICB0eXBlOiBHT19CQUNLX1RPX0NBVEFMT0dfUEFHRSxcbiAgICBuZXdQYWdlXG4gIH07XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBzZWxlY3RUb29sRWRpdCgpIHtcbiAgcmV0dXJuIHtcbiAgICB0eXBlOiBTRUxFQ1RfVE9PTF9FRElUXG4gIH1cbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHVuc2VsZWN0QWxsKCkge1xuICByZXR1cm4ge1xuICAgIHR5cGU6IFVOU0VMRUNUX0FMTFxuICB9XG59XG5cblxuZXhwb3J0IGZ1bmN0aW9uIHNldFByb3BlcnRpZXMocHJvcGVydGllcykge1xuICByZXR1cm4ge1xuICAgIHR5cGU6IFNFVF9QUk9QRVJUSUVTLFxuICAgIHByb3BlcnRpZXNcbiAgfVxufVxuXG5leHBvcnQgZnVuY3Rpb24gc2V0SXRlbXNBdHRyaWJ1dGVzKGl0ZW1zQXR0cmlidXRlcykge1xuXG4gIGl0ZW1zQXR0cmlidXRlcyA9IGl0ZW1zQXR0cmlidXRlcy5zZXQoJ3JvdGF0aW9uJywgcGFyc2VGbG9hdChpdGVtc0F0dHJpYnV0ZXMuZ2V0KCdyb3RhdGlvbicpKSk7XG5cbiAgcmV0dXJuIHtcbiAgICB0eXBlOiBTRVRfSVRFTVNfQVRUUklCVVRFUyxcbiAgICBpdGVtc0F0dHJpYnV0ZXNcbiAgfVxufVxuXG5leHBvcnQgZnVuY3Rpb24gc2V0TGluZXNBdHRyaWJ1dGVzKGxpbmVzQXR0cmlidXRlcykge1xuXG4gIGxpbmVzQXR0cmlidXRlcyA9IGxpbmVzQXR0cmlidXRlcy53aXRoTXV0YXRpb25zKGF0dHJpYnV0ZXMgPT4ge1xuICAgIGF0dHJpYnV0ZXMuc2V0SW4oWyd2ZXJ0ZXhPbmUnLCAneCddLCBwYXJzZUZsb2F0KGxpbmVzQXR0cmlidXRlcy5nZXRJbihbJ3ZlcnRleE9uZScsICd4J10pKSk7XG4gICAgYXR0cmlidXRlcy5zZXRJbihbJ3ZlcnRleE9uZScsICd5J10sIHBhcnNlRmxvYXQobGluZXNBdHRyaWJ1dGVzLmdldEluKFsndmVydGV4T25lJywgJ3knXSkpKTtcbiAgICBhdHRyaWJ1dGVzLnNldEluKFsndmVydGV4VHdvJywgJ3gnXSwgcGFyc2VGbG9hdChsaW5lc0F0dHJpYnV0ZXMuZ2V0SW4oWyd2ZXJ0ZXhUd28nLCAneCddKSkpO1xuICAgIGF0dHJpYnV0ZXMuc2V0SW4oWyd2ZXJ0ZXhUd28nLCAneSddLCBwYXJzZUZsb2F0KGxpbmVzQXR0cmlidXRlcy5nZXRJbihbJ3ZlcnRleFR3bycsICd5J10pKSk7XG4gIH0pO1xuXG4gIHJldHVybiB7XG4gICAgdHlwZTogU0VUX0xJTkVTX0FUVFJJQlVURVMsXG4gICAgbGluZXNBdHRyaWJ1dGVzXG4gIH1cbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHNldEhvbGVzQXR0cmlidXRlcyhob2xlc0F0dHJpYnV0ZXMpIHtcblxuICBob2xlc0F0dHJpYnV0ZXMgPSBob2xlc0F0dHJpYnV0ZXMuc2V0KCdvZmZzZXQnLCBwYXJzZUZsb2F0KGhvbGVzQXR0cmlidXRlcy5nZXQoJ29mZnNldCcpKSk7XG5cbiAgcmV0dXJuIHtcbiAgICB0eXBlOiBTRVRfSE9MRVNfQVRUUklCVVRFUyxcbiAgICBob2xlc0F0dHJpYnV0ZXNcbiAgfVxufVxuXG5leHBvcnQgZnVuY3Rpb24gcmVtb3ZlKCkge1xuICByZXR1cm4ge1xuICAgIHR5cGU6IFJFTU9WRVxuICB9XG59XG5cbmV4cG9ydCBmdW5jdGlvbiB1bmRvKCkge1xuICByZXR1cm4ge1xuICAgIHR5cGU6IFVORE9cbiAgfVxufVxuXG5leHBvcnQgZnVuY3Rpb24gcm9sbGJhY2soKSB7XG4gIHJldHVybiB7XG4gICAgdHlwZTogUk9MTEJBQ0tcbiAgfVxufVxuXG5leHBvcnQgZnVuY3Rpb24gb3BlblByb2plY3RDb25maWd1cmF0b3IoKSB7XG4gIHJldHVybiB7XG4gICAgdHlwZTogT1BFTl9QUk9KRUNUX0NPTkZJR1VSQVRPUlxuICB9XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBzZXRQcm9qZWN0UHJvcGVydGllcyhwcm9wZXJ0aWVzKSB7XG4gIHJldHVybiB7XG4gICAgdHlwZTogU0VUX1BST0pFQ1RfUFJPUEVSVElFUyxcbiAgICBwcm9wZXJ0aWVzXG4gIH1cbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGluaXRDYXRhbG9nKGNhdGFsb2cpIHtcbiAgcmV0dXJuIHtcbiAgICB0eXBlOiBJTklUX0NBVEFMT0csXG4gICAgY2F0YWxvZ1xuICB9XG59XG5cbmV4cG9ydCBmdW5jdGlvbiB1cGRhdGVNb3VzZUNvb3JkKGNvb3JkcyA9IHt4LCB5fSkge1xuICByZXR1cm4ge1xuICAgIHR5cGU6IFVQREFURV9NT1VTRV9DT09SRFMsXG4gICAgY29vcmRzXG4gIH07XG59XG5cbmV4cG9ydCBmdW5jdGlvbiB1cGRhdGVab29tU2NhbGUoc2NhbGUpIHtcbiAgcmV0dXJuIHtcbiAgICB0eXBlOiBVUERBVEVfWk9PTV9TQ0FMRSxcbiAgICBzY2FsZVxuICB9O1xufVxuXG5leHBvcnQgZnVuY3Rpb24gdG9nZ2xlU25hcChtYXNrKSB7XG4gIHJldHVybiB7XG4gICAgdHlwZTogVE9HR0xFX1NOQVAsXG4gICAgbWFza1xuICB9O1xufVxuXG5leHBvcnQgZnVuY3Rpb24gdGhyb3dFcnJvcihlcnJvcikge1xuICByZXR1cm4ge1xuICAgIHR5cGU6IFRIUk9XX0VSUk9SLFxuICAgIGVycm9yXG4gIH07XG59XG5cbmV4cG9ydCBmdW5jdGlvbiB0aHJvd1dhcm5pbmcod2FybmluZykge1xuICByZXR1cm4ge1xuICAgIHR5cGU6IFRIUk9XX1dBUk5JTkcsXG4gICAgd2FybmluZ1xuICB9O1xufVxuXG5leHBvcnQgZnVuY3Rpb24gY29weVByb3BlcnRpZXMocHJvcGVydGllcykge1xuICByZXR1cm4ge1xuICAgIHR5cGU6IENPUFlfUFJPUEVSVElFUyxcbiAgICBwcm9wZXJ0aWVzXG4gIH07XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBwYXN0ZVByb3BlcnRpZXMoKSB7XG4gIHJldHVybiB7XG4gICAgdHlwZTogUEFTVEVfUFJPUEVSVElFU1xuICB9O1xufVxuXG5leHBvcnQgZnVuY3Rpb24gcHVzaExhc3RTZWxlY3RlZENhdGFsb2dFbGVtZW50VG9IaXN0b3J5KCBlbGVtZW50ICkge1xuICByZXR1cm4ge1xuICAgIHR5cGU6IFBVU0hfTEFTVF9TRUxFQ1RFRF9DQVRBTE9HX0VMRU1FTlRfVE9fSElTVE9SWSxcbiAgICBlbGVtZW50XG4gIH07XG59XG4iXX0=