Du kannst nicht mehr als 25 Themen auswählen Themen müssen mit entweder einem Buchstaben oder einer Ziffer beginnen. Sie können Bindestriche („-“) enthalten und bis zu 35 Zeichen lang sein.

reducer.ts 1.6KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061
  1. import ReducerRegistry from '../base/redux/ReducerRegistry';
  2. import {
  3. ADD_FACE_LANDMARKS,
  4. CLEAR_FACE_LANDMARKS_BUFFER,
  5. UPDATE_FACE_COORDINATES
  6. } from './actionTypes';
  7. import { FaceBox, FaceLandmarks } from './types';
  8. const defaultState = {
  9. faceBoxes: {},
  10. faceLandmarks: [],
  11. faceLandmarksBuffer: [],
  12. recognitionActive: false
  13. };
  14. export interface IFaceLandmarksState {
  15. faceBoxes: { [key: string]: FaceBox; };
  16. faceLandmarks: Array<FaceLandmarks>;
  17. faceLandmarksBuffer: Array<{
  18. emotion: string;
  19. timestamp: number;
  20. }>;
  21. recognitionActive: boolean;
  22. }
  23. ReducerRegistry.register<IFaceLandmarksState>('features/face-landmarks',
  24. (state = defaultState, action): IFaceLandmarksState => {
  25. switch (action.type) {
  26. case ADD_FACE_LANDMARKS: {
  27. const { addToBuffer, faceLandmarks }: { addToBuffer: boolean; faceLandmarks: FaceLandmarks; } = action;
  28. return {
  29. ...state,
  30. faceLandmarks: [ ...state.faceLandmarks, faceLandmarks ],
  31. faceLandmarksBuffer: addToBuffer ? [ ...state.faceLandmarksBuffer,
  32. {
  33. emotion: faceLandmarks.faceExpression,
  34. timestamp: faceLandmarks.timestamp
  35. } ] : state.faceLandmarksBuffer
  36. };
  37. }
  38. case CLEAR_FACE_LANDMARKS_BUFFER: {
  39. return {
  40. ...state,
  41. faceLandmarksBuffer: []
  42. };
  43. }
  44. case UPDATE_FACE_COORDINATES: {
  45. return {
  46. ...state,
  47. faceBoxes: {
  48. ...state.faceBoxes,
  49. [action.id]: action.faceBox
  50. }
  51. };
  52. }
  53. }
  54. return state;
  55. });