UNPKG

react-planner

Version:

react-planner is a React Component for plans design. Draw a 2D floorplan and navigate it in 3D mode.

99 lines (86 loc) 2.79 kB
import React from 'react'; import ReactDOM from 'react-dom'; import ContainerDimensions from 'react-container-dimensions'; import Immutable, {Map} from 'immutable'; import immutableDevtools from 'immutable-devtools'; import {createStore} from 'redux'; import {Provider} from 'react-redux'; import MyCatalog from './catalog/mycatalog'; import ToolbarScreenshotButton from './ui/toolbar-screenshot-button'; import { Models as PlannerModels, reducer as PlannerReducer, ReactPlanner, Plugins as PlannerPlugins, } from 'react-planner'; //react-planner //define state let AppState = Map({ 'react-planner': new PlannerModels.State() }); //define reducer let reducer = (state, action) => { state = state || AppState; state = state.update('react-planner', plannerState => PlannerReducer(plannerState, action)); return state; }; let blackList = isProduction === true ? [] : [ 'UPDATE_MOUSE_COORDS', 'UPDATE_ZOOM_SCALE', 'UPDATE_2D_CAMERA' ]; if( !isProduction ) { console.info('Environment is in development and these actions will be blacklisted', blackList); console.info('Enable Chrome custom formatter for Immutable pretty print'); immutableDevtools( Immutable ); } //init store let store = createStore( reducer, null, !isProduction && window.devToolsExtension ? window.devToolsExtension({ features: { pause : true, // start/pause recording of dispatched actions lock : true, // lock/unlock dispatching actions and side effects persist : true, // persist states on page reloading export : true, // export history of actions in a file import : 'custom', // import history of actions from a file jump : true, // jump back and forth (time travelling) skip : true, // skip (cancel) actions reorder : true, // drag and drop actions in the history list dispatch: true, // dispatch custom actions or action creators test : true // generate tests for the selected actions }, actionsBlacklist: blackList, maxAge: 999999 }) : f => f ); let plugins = [ PlannerPlugins.Keyboard(), PlannerPlugins.Autosave('react-planner_v0'), PlannerPlugins.ConsoleDebugger(), ]; let toolbarButtons = [ ToolbarScreenshotButton, ]; //render ReactDOM.render( ( <Provider store={store}> <ContainerDimensions> {({width, height}) => <ReactPlanner catalog={MyCatalog} width={width} height={height} plugins={plugins} toolbarButtons={toolbarButtons} stateExtractor={state => state.get('react-planner')} /> } </ContainerDimensions> </Provider> ), document.getElementById('app') );