Вы не можете выбрать более 25 тем Темы должны начинаться с буквы или цифры, могут содержать дефисы(-) и должны содержать не более 35 символов.

reducer.ts 2.0KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081
  1. import ReducerRegistry from '../base/redux/ReducerRegistry';
  2. import {
  3. ADD_FACE_EXPRESSION,
  4. ADD_TO_FACE_EXPRESSIONS_BUFFER,
  5. CLEAR_FACE_EXPRESSIONS_BUFFER,
  6. UPDATE_FACE_COORDINATES
  7. } from './actionTypes';
  8. import { FaceBox } from './types';
  9. const defaultState = {
  10. faceBoxes: {},
  11. faceExpressions: {
  12. happy: 0,
  13. neutral: 0,
  14. surprised: 0,
  15. angry: 0,
  16. fearful: 0,
  17. disgusted: 0,
  18. sad: 0
  19. },
  20. faceExpressionsBuffer: [],
  21. recognitionActive: false
  22. };
  23. export interface IFaceLandmarksState {
  24. faceBoxes: { [key: string]: FaceBox; };
  25. faceExpressions: {
  26. angry: number;
  27. disgusted: number;
  28. fearful: number;
  29. happy: number;
  30. neutral: number;
  31. sad: number;
  32. surprised: number;
  33. };
  34. faceExpressionsBuffer: Array<{
  35. emotion: string;
  36. timestamp: string;
  37. }>;
  38. recognitionActive: boolean;
  39. }
  40. ReducerRegistry.register<IFaceLandmarksState>('features/face-landmarks',
  41. (state = defaultState, action): IFaceLandmarksState => {
  42. switch (action.type) {
  43. case ADD_FACE_EXPRESSION: {
  44. return {
  45. ...state,
  46. faceExpressions: {
  47. ...state.faceExpressions,
  48. [action.faceExpression]: state.faceExpressions[
  49. action.faceExpression as keyof typeof state.faceExpressions] + action.duration
  50. }
  51. };
  52. }
  53. case ADD_TO_FACE_EXPRESSIONS_BUFFER: {
  54. return {
  55. ...state,
  56. faceExpressionsBuffer: [ ...state.faceExpressionsBuffer, action.faceExpression ]
  57. };
  58. }
  59. case CLEAR_FACE_EXPRESSIONS_BUFFER: {
  60. return {
  61. ...state,
  62. faceExpressionsBuffer: []
  63. };
  64. }
  65. case UPDATE_FACE_COORDINATES: {
  66. return {
  67. ...state,
  68. faceBoxes: {
  69. ...state.faceBoxes,
  70. [action.id]: action.faceBox
  71. }
  72. };
  73. }
  74. }
  75. return state;
  76. });