Explorar el Código

improve session api

main
Steve Ruiz hace 4 años
padre
commit
5b514e07f9
Se han modificado 2 ficheros con 90 adiciones y 60 borrados
  1. 19
    3
      state/session.ts
  2. 71
    57
      state/state.ts

+ 19
- 3
state/session.ts Ver fichero

13
     return this
13
     return this
14
   }
14
   }
15
 
15
 
16
-  get current() {
17
-    return this._current
16
+  update<T extends BaseSession>(...args: Parameters<T['update']>) {
17
+    this._current.update.call(null, ...args)
18
+    return this
18
   }
19
   }
19
 
20
 
20
-  set current(session: BaseSession) {
21
+  start(session: BaseSession) {
21
     this._current = session
22
     this._current = session
23
+    return this
24
+  }
25
+
26
+  compplete<T extends BaseSession>(...args: Parameters<T['complete']>) {
27
+    this._current.complete.call(null, ...args)
28
+    return this
29
+  }
30
+
31
+  cancel<T extends BaseSession>(...args: Parameters<T['cancel']>) {
32
+    this._current.cancel.call(null, ...args)
33
+    return this
34
+  }
35
+
36
+  get current() {
37
+    return this._current
22
   }
38
   }
23
 }
39
 }
24
 
40
 

+ 71
- 57
state/state.ts Ver fichero

1003
 
1003
 
1004
     // Editing
1004
     // Editing
1005
     startEditSession(data) {
1005
     startEditSession(data) {
1006
-      session.current = new Sessions.EditSession(data)
1006
+      session.start(new Sessions.EditSession(data))
1007
     },
1007
     },
1008
     updateEditSession(data, payload: { change: Partial<Shape> }) {
1008
     updateEditSession(data, payload: { change: Partial<Shape> }) {
1009
-      session.current.update(data, payload.change)
1009
+      session.update<Sessions.EditSession>(data, payload.change)
1010
     },
1010
     },
1011
 
1011
 
1012
     // Brushing
1012
     // Brushing
1013
     startBrushSession(data, payload: PointerInfo) {
1013
     startBrushSession(data, payload: PointerInfo) {
1014
-      session.current = new Sessions.BrushSession(
1015
-        data,
1016
-        screenToWorld(payload.point, data)
1014
+      session.start(
1015
+        new Sessions.BrushSession(data, screenToWorld(payload.point, data))
1017
       )
1016
       )
1018
     },
1017
     },
1019
     updateBrushSession(data, payload: PointerInfo) {
1018
     updateBrushSession(data, payload: PointerInfo) {
1020
-      session.current.update(data, screenToWorld(payload.point, data))
1019
+      session.update<Sessions.BrushSession>(
1020
+        data,
1021
+        screenToWorld(payload.point, data)
1022
+      )
1021
     },
1023
     },
1022
 
1024
 
1023
     // Rotating
1025
     // Rotating
1024
     startRotateSession(data, payload: PointerInfo) {
1026
     startRotateSession(data, payload: PointerInfo) {
1025
-      session.current = new Sessions.RotateSession(
1026
-        data,
1027
-        screenToWorld(payload.point, data)
1027
+      session.start(
1028
+        new Sessions.RotateSession(data, screenToWorld(payload.point, data))
1028
       )
1029
       )
1029
     },
1030
     },
1030
     keyUpdateRotateSession(data, payload: PointerInfo) {
1031
     keyUpdateRotateSession(data, payload: PointerInfo) {
1031
-      session.current.update(
1032
+      session.update<Sessions.RotateSession>(
1032
         data,
1033
         data,
1033
         screenToWorld(inputs.pointer.point, data),
1034
         screenToWorld(inputs.pointer.point, data),
1034
         payload.shiftKey
1035
         payload.shiftKey
1035
       )
1036
       )
1036
     },
1037
     },
1037
     updateRotateSession(data, payload: PointerInfo) {
1038
     updateRotateSession(data, payload: PointerInfo) {
1038
-      session.current.update(
1039
+      session.update<Sessions.RotateSession>(
1039
         data,
1040
         data,
1040
         screenToWorld(payload.point, data),
1041
         screenToWorld(payload.point, data),
1041
         payload.shiftKey
1042
         payload.shiftKey
1044
 
1045
 
1045
     // Dragging / Translating
1046
     // Dragging / Translating
1046
     startTranslateSession(data) {
1047
     startTranslateSession(data) {
1047
-      session.current = new Sessions.TranslateSession(
1048
-        data,
1049
-        screenToWorld(inputs.pointer.origin, data)
1048
+      session.start(
1049
+        new Sessions.TranslateSession(
1050
+          data,
1051
+          screenToWorld(inputs.pointer.origin, data)
1052
+        )
1050
       )
1053
       )
1051
     },
1054
     },
1052
     keyUpdateTranslateSession(
1055
     keyUpdateTranslateSession(
1053
       data,
1056
       data,
1054
       payload: { shiftKey: boolean; altKey: boolean }
1057
       payload: { shiftKey: boolean; altKey: boolean }
1055
     ) {
1058
     ) {
1056
-      session.current.update(
1059
+      session.update<Sessions.TranslateSession>(
1057
         data,
1060
         data,
1058
         screenToWorld(inputs.pointer.point, data),
1061
         screenToWorld(inputs.pointer.point, data),
1059
         payload.shiftKey,
1062
         payload.shiftKey,
1061
       )
1064
       )
1062
     },
1065
     },
1063
     updateTranslateSession(data, payload: PointerInfo) {
1066
     updateTranslateSession(data, payload: PointerInfo) {
1064
-      session.current.update(
1067
+      session.update<Sessions.TranslateSession>(
1065
         data,
1068
         data,
1066
         screenToWorld(payload.point, data),
1069
         screenToWorld(payload.point, data),
1067
         payload.shiftKey,
1070
         payload.shiftKey,
1080
       const shapeId = Array.from(getSelectedIds(data).values())[0]
1083
       const shapeId = Array.from(getSelectedIds(data).values())[0]
1081
       const handleId = payload.target
1084
       const handleId = payload.target
1082
 
1085
 
1083
-      session.current = new Sessions.HandleSession(
1084
-        data,
1085
-        shapeId,
1086
-        handleId,
1087
-        screenToWorld(inputs.pointer.origin, data)
1086
+      session.start(
1087
+        new Sessions.HandleSession(
1088
+          data,
1089
+          shapeId,
1090
+          handleId,
1091
+          screenToWorld(inputs.pointer.origin, data)
1092
+        )
1088
       )
1093
       )
1089
     },
1094
     },
1090
     keyUpdateHandleSession(
1095
     keyUpdateHandleSession(
1091
       data,
1096
       data,
1092
       payload: { shiftKey: boolean; altKey: boolean }
1097
       payload: { shiftKey: boolean; altKey: boolean }
1093
     ) {
1098
     ) {
1094
-      session.current.update(
1099
+      session.update<Sessions.HandleSession>(
1095
         data,
1100
         data,
1096
         screenToWorld(inputs.pointer.point, data),
1101
         screenToWorld(inputs.pointer.point, data),
1097
-        payload.shiftKey,
1098
-        payload.altKey
1102
+        payload.shiftKey
1099
       )
1103
       )
1100
     },
1104
     },
1101
     updateHandleSession(data, payload: PointerInfo) {
1105
     updateHandleSession(data, payload: PointerInfo) {
1102
-      session.current.update(
1106
+      session.update<Sessions.HandleSession>(
1103
         data,
1107
         data,
1104
         screenToWorld(payload.point, data),
1108
         screenToWorld(payload.point, data),
1105
-        payload.shiftKey,
1106
-        payload.altKey
1109
+        payload.shiftKey
1107
       )
1110
       )
1108
     },
1111
     },
1109
 
1112
 
1113
       payload: PointerInfo & { target: Corner | Edge }
1116
       payload: PointerInfo & { target: Corner | Edge }
1114
     ) {
1117
     ) {
1115
       const point = screenToWorld(inputs.pointer.origin, data)
1118
       const point = screenToWorld(inputs.pointer.origin, data)
1116
-      session.current =
1119
+      session.start(
1117
         getSelectedIds(data).size === 1
1120
         getSelectedIds(data).size === 1
1118
           ? new Sessions.TransformSingleSession(data, payload.target, point)
1121
           ? new Sessions.TransformSingleSession(data, payload.target, point)
1119
           : new Sessions.TransformSession(data, payload.target, point)
1122
           : new Sessions.TransformSession(data, payload.target, point)
1123
+      )
1120
     },
1124
     },
1121
     startDrawTransformSession(data, payload: PointerInfo) {
1125
     startDrawTransformSession(data, payload: PointerInfo) {
1122
-      session.current = new Sessions.TransformSingleSession(
1123
-        data,
1124
-        Corner.BottomRight,
1125
-        screenToWorld(payload.point, data),
1126
-        true
1126
+      session.start(
1127
+        new Sessions.TransformSingleSession(
1128
+          data,
1129
+          Corner.BottomRight,
1130
+          screenToWorld(payload.point, data),
1131
+          true
1132
+        )
1127
       )
1133
       )
1128
     },
1134
     },
1129
     keyUpdateTransformSession(data, payload: PointerInfo) {
1135
     keyUpdateTransformSession(data, payload: PointerInfo) {
1130
-      session.current.update(
1136
+      session.update<Sessions.TransformSession>(
1131
         data,
1137
         data,
1132
         screenToWorld(inputs.pointer.point, data),
1138
         screenToWorld(inputs.pointer.point, data),
1133
-        payload.shiftKey,
1134
-        payload.altKey
1139
+        payload.shiftKey
1135
       )
1140
       )
1136
     },
1141
     },
1137
     updateTransformSession(data, payload: PointerInfo) {
1142
     updateTransformSession(data, payload: PointerInfo) {
1138
-      session.current.update(
1143
+      session.update<Sessions.TransformSession>(
1139
         data,
1144
         data,
1140
         screenToWorld(payload.point, data),
1145
         screenToWorld(payload.point, data),
1141
-        payload.shiftKey,
1142
-        payload.altKey
1146
+        payload.shiftKey
1143
       )
1147
       )
1144
     },
1148
     },
1145
 
1149
 
1146
     // Direction
1150
     // Direction
1147
     startDirectionSession(data) {
1151
     startDirectionSession(data) {
1148
-      session.current = new Sessions.DirectionSession(
1149
-        data,
1150
-        screenToWorld(inputs.pointer.origin, data)
1152
+      session.start(
1153
+        new Sessions.DirectionSession(
1154
+          data,
1155
+          screenToWorld(inputs.pointer.origin, data)
1156
+        )
1151
       )
1157
       )
1152
     },
1158
     },
1153
     updateDirectionSession(data, payload: PointerInfo) {
1159
     updateDirectionSession(data, payload: PointerInfo) {
1154
-      session.current.update(data, screenToWorld(payload.point, data))
1160
+      session.update<Sessions.DirectionSession>(
1161
+        data,
1162
+        screenToWorld(payload.point, data)
1163
+      )
1155
     },
1164
     },
1156
 
1165
 
1157
     // Drawing
1166
     // Drawing
1158
     startDrawSession(data, payload: PointerInfo) {
1167
     startDrawSession(data, payload: PointerInfo) {
1159
       const id = Array.from(getSelectedIds(data).values())[0]
1168
       const id = Array.from(getSelectedIds(data).values())[0]
1160
-      session.current = new Sessions.DrawSession(
1161
-        data,
1162
-        id,
1163
-        screenToWorld(inputs.pointer.origin, data),
1164
-        payload.shiftKey
1169
+      session.start(
1170
+        new Sessions.DrawSession(
1171
+          data,
1172
+          id,
1173
+          screenToWorld(inputs.pointer.origin, data),
1174
+          payload.shiftKey
1175
+        )
1165
       )
1176
       )
1166
     },
1177
     },
1167
     keyUpdateDrawSession(data, payload: PointerInfo) {
1178
     keyUpdateDrawSession(data, payload: PointerInfo) {
1168
-      session.current.update(
1179
+      session.update<Sessions.DrawSession>(
1169
         data,
1180
         data,
1170
         screenToWorld(inputs.pointer.point, data),
1181
         screenToWorld(inputs.pointer.point, data),
1171
         payload.pressure,
1182
         payload.pressure,
1173
       )
1184
       )
1174
     },
1185
     },
1175
     updateDrawSession(data, payload: PointerInfo) {
1186
     updateDrawSession(data, payload: PointerInfo) {
1176
-      session.current.update(
1187
+      session.update<Sessions.DrawSession>(
1177
         data,
1188
         data,
1178
         screenToWorld(payload.point, data),
1189
         screenToWorld(payload.point, data),
1179
         payload.pressure,
1190
         payload.pressure,
1184
     // Arrow
1195
     // Arrow
1185
     startArrowSession(data, payload: PointerInfo) {
1196
     startArrowSession(data, payload: PointerInfo) {
1186
       const id = Array.from(getSelectedIds(data).values())[0]
1197
       const id = Array.from(getSelectedIds(data).values())[0]
1187
-      session.current = new Sessions.ArrowSession(
1188
-        data,
1189
-        id,
1190
-        screenToWorld(inputs.pointer.origin, data),
1191
-        payload.shiftKey
1198
+
1199
+      session.start(
1200
+        new Sessions.ArrowSession(
1201
+          data,
1202
+          id,
1203
+          screenToWorld(inputs.pointer.origin, data),
1204
+          payload.shiftKey
1205
+        )
1192
       )
1206
       )
1193
     },
1207
     },
1194
     keyUpdateArrowSession(data, payload: PointerInfo) {
1208
     keyUpdateArrowSession(data, payload: PointerInfo) {
1195
-      session.current.update(
1209
+      session.update<Sessions.ArrowSession>(
1196
         data,
1210
         data,
1197
         screenToWorld(inputs.pointer.point, data),
1211
         screenToWorld(inputs.pointer.point, data),
1198
         payload.shiftKey
1212
         payload.shiftKey
1199
       )
1213
       )
1200
     },
1214
     },
1201
     updateArrowSession(data, payload: PointerInfo) {
1215
     updateArrowSession(data, payload: PointerInfo) {
1202
-      session.current.update(
1216
+      session.update<Sessions.ArrowSession>(
1203
         data,
1217
         data,
1204
         screenToWorld(payload.point, data),
1218
         screenToWorld(payload.point, data),
1205
         payload.shiftKey
1219
         payload.shiftKey

Loading…
Cancelar
Guardar