awv3
Version:
⚡ AWV3 embedded CAD
280 lines (261 loc) • 7.78 kB
JavaScript
import _extends from "@babel/runtime/helpers/extends";
import _objectWithoutProperties from "@babel/runtime/helpers/objectWithoutProperties";
var _Assembly, _Part, _LineSegments, _Group, _Mesh, _Region, _RegionPoint, _SketcherMesh, _DimensionHandle, _CSYSHandle, _Workaxis, _Workpoint;
import * as THREE from 'three';
import omit from 'lodash/omit';
import without from 'lodash/without';
import { actions as pluginActions } from './plugins';
import { actions as connectionActions } from './connections';
var scope = 'globals';
var HOVERED = THREE.Object3D.Events.Interaction.Hovered;
var CLICKED = THREE.Object3D.Events.Interaction.Clicked;
export var types = {
setLocale: scope + "/setLocale",
setActiveSelection: scope + "/setActiveSelection",
setActiveConnection: scope + "/setActiveConnection",
linkPlugins: scope + "/linkPlugins",
unlinkPlugins: scope + "/unlinkPlugins",
addResources: scope + "/addResources",
addMessage: scope + "/addMessage",
beginTask: scope + "/beginTask",
finishTask: scope + "/finishTask",
setCamera: scope + "/setCamera",
setColors: scope + "/setColors",
setColorMode: scope + "/setColorMode"
};
export var actions = {
setLocale: function setLocale(locale) {
if (locale === void 0) {
locale = 'en_US';
}
return {
type: types.setLocale,
locale: locale
};
},
setActiveSelection: function setActiveSelection(activeSelection) {
if (activeSelection === void 0) {
activeSelection = undefined;
}
return {
type: types.setActiveSelection,
activeSelection: activeSelection
};
},
addResources: function addResources(resources) {
return {
type: types.addResources,
resources: resources
};
},
linkPlugins: function linkPlugins(plugins) {
return {
type: types.linkPlugins,
plugins: plugins
};
},
unlinkPlugins: function unlinkPlugins(plugins) {
return {
type: types.unlinkPlugins,
plugins: plugins
};
},
addMessage: function addMessage(type, message, reset) {
var _ref;
return _ref = {
type: types.addMessage
}, _ref["type"] = type, _ref.message = message, _ref.reset = reset, _ref;
},
beginTask: function beginTask(id, command) {
return {
type: types.beginTask,
id: id,
command: command
};
},
finishTask: function finishTask(id) {
return {
type: types.finishTask,
id: id
};
},
setActiveConnection: function setActiveConnection(activeConnection) {
if (activeConnection === void 0) {
activeConnection = undefined;
}
return function (dispatch) {
dispatch(pluginActions.closeAllFeatures());
activeConnection && dispatch(connectionActions.setActiveFeature(activeConnection, undefined));
dispatch(actions.setActiveSelection());
dispatch({
type: types.setActiveConnection,
activeConnection: activeConnection
});
};
},
setCamera: function setCamera(camera) {
return {
type: types.setCamera,
camera: camera
};
},
setColors: function setColors(values) {
return {
type: types.setColors,
values: values
};
},
setColorMode: function setColorMode(day) {
return {
type: types.setColorMode,
day: day
};
}
};
var originalState = {
locale: 'en_US',
url: '',
activeConnection: undefined,
activeSelection: undefined,
tasks: {},
resources: {},
plugins: [],
day: true,
colors: {
hue: 0,
bg: '#efefef',
primary: '#c23369',
accent: '#28d79f',
text: '#373737'
},
selection: {
Assembly: (_Assembly = {}, _Assembly[HOVERED] = {
opacity: 1
}, _Assembly[CLICKED] = {
opacity: 1
}, _Assembly),
Part: (_Part = {}, _Part[HOVERED] = {
color: new THREE.Color('#28d79f'),
opacity: 1
}, _Part[CLICKED] = {
color: new THREE.Color('#c9366e'),
opacity: 1
}, _Part),
LineSegments: (_LineSegments = {}, _LineSegments[HOVERED] = {
color: new THREE.Color('#28d79f'),
opacity: 1
}, _LineSegments[CLICKED] = {
color: new THREE.Color('#28b4d7'),
opacity: 1
}, _LineSegments),
Group: (_Group = {}, _Group[HOVERED] = {
color: new THREE.Color('#28d79f'),
opacity: 1
}, _Group[CLICKED] = {
color: new THREE.Color('#c9366e'),
opacity: 1
}, _Group),
Mesh: (_Mesh = {}, _Mesh[HOVERED] = {
color: new THREE.Color('#28d79f'),
opacity: 1
}, _Mesh[CLICKED] = {
color: new THREE.Color('#c9366e'),
opacity: 1
}, _Mesh),
Region: (_Region = {}, _Region[HOVERED] = {
color: new THREE.Color('#28d79f'),
opacity: 1
}, _Region[CLICKED] = {
color: new THREE.Color('#28b4d7'),
opacity: 1
}, _Region),
RegionPoint: (_RegionPoint = {}, _RegionPoint[HOVERED] = {
color: new THREE.Color('#28d79f'),
opacity: 1
}, _RegionPoint[CLICKED] = {
color: new THREE.Color('#28b4d7'),
opacity: 1
}, _RegionPoint),
SketcherMesh: (_SketcherMesh = {}, _SketcherMesh[HOVERED] = {
color: new THREE.Color('#28d79f'),
opacity: 1,
polygonOffsetFactor: -10,
polygonOffsetUnits: -50
}, _SketcherMesh[CLICKED] = {
color: new THREE.Color('#c9366e'),
opacity: 1,
polygonOffsetFactor: -5,
polygonOffsetUnits: -25
}, _SketcherMesh),
DimensionHandle: (_DimensionHandle = {}, _DimensionHandle[HOVERED] = {
color: new THREE.Color('#28d79f'),
opacity: 1
}, _DimensionHandle[CLICKED] = {
color: new THREE.Color('#c9366e'),
opacity: 1
}, _DimensionHandle),
CSYSHandle: (_CSYSHandle = {}, _CSYSHandle[HOVERED] = {
color: new THREE.Color('#28d79f'),
opacity: 1
}, _CSYSHandle[CLICKED] = {
color: new THREE.Color('#c9366e'),
opacity: 1
}, _CSYSHandle),
Workaxis: (_Workaxis = {}, _Workaxis[HOVERED] = {
color: new THREE.Color('#28d79f')
}, _Workaxis[CLICKED] = {
color: new THREE.Color('#c9366e')
}, _Workaxis),
Workpoint: (_Workpoint = {}, _Workpoint[HOVERED] = {
color: new THREE.Color('#28d79f')
}, _Workpoint[CLICKED] = {
color: new THREE.Color('#c9366e')
}, _Workpoint)
},
camera: 'perspective'
};
var reducer = function reducer(state, _ref2) {
var _extends2;
if (state === void 0) {
state = originalState;
}
var type = _ref2.type,
payload = _objectWithoutProperties(_ref2, ["type"]);
switch (type) {
case types.setLocale:
case types.setActiveSelection:
case types.setActiveConnection:
case types.setCamera:
return _extends({}, state, payload);
case types.setColorMode:
return _extends({}, state, payload);
break;
case types.setColors:
return _extends({}, state, {
colors: _extends({}, state.colors, payload.values)
});
case types.addResources:
return _extends({}, state, {
resources: _extends({}, state.resources, payload.resources)
});
case types.linkPlugins:
return _extends({}, state, {
plugins: state.plugins.concat(Array.isArray(payload.plugins) ? payload.plugins : [payload.plugins])
});
case types.unlinkPlugins:
return _extends({}, state, {
plugins: without.apply(void 0, [state.plugins].concat(Array.isArray(payload.plugins) ? payload.plugins : [payload.plugins]))
});
case types.beginTask:
return _extends({}, state, {
tasks: _extends({}, state.tasks, (_extends2 = {}, _extends2[payload.id] = payload.command, _extends2))
});
case types.finishTask:
return _extends({}, state, {
tasks: omit(state.tasks, payload.id)
});
default:
return state;
}
};
export { reducer };