您最多选择25个主题 主题必须以字母或数字开头,可以包含连字符 (-),并且长度不得超过35个字符

reducer.js 1.8KB

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