@baleada/logic 0.23.1 → 0.23.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/lib/index.cjs CHANGED
@@ -1300,6 +1300,8 @@ function createMousepress(options = {}) {
1300
1300
  onDown?.(toHookApi(api));
1301
1301
  };
1302
1302
  const mousemove = (event, api) => {
1303
+ const { pushSequence } = api;
1304
+ pushSequence(event);
1303
1305
  storePointerMoveMetadata(event, api);
1304
1306
  recognize(event, api);
1305
1307
  onMove?.(toHookApi(api));
@@ -2070,7 +2072,7 @@ const initialMetadata = {
2070
2072
  velocity: 0
2071
2073
  };
2072
2074
  function storePointerTimeMetadata(event, api, getShouldStore, setRequest, recognize) {
2073
- const { getMetadata, getStatus, onRecognized } = api, metadata = getMetadata();
2075
+ const { getSequence, getMetadata, getStatus, onRecognized } = api, metadata = getMetadata();
2074
2076
  if (!metadata.times) {
2075
2077
  metadata.times = createClone()(initialMetadata.times);
2076
2078
  }
@@ -2085,9 +2087,10 @@ function storePointerTimeMetadata(event, api, getShouldStore, setRequest, recogn
2085
2087
  metadata.duration = Math.max(0, metadata.times.end - metadata.times.start);
2086
2088
  const durationFromPrevious = Math.max(0, metadata.times.end - previousTime);
2087
2089
  metadata.velocity = metadata.distance.straight.fromPrevious / durationFromPrevious;
2088
- recognize?.(event, api);
2090
+ const event2 = getSequence().at(-1);
2091
+ recognize?.(event2, api);
2089
2092
  if (getStatus() === "recognized")
2090
- onRecognized(event);
2093
+ onRecognized(event2);
2091
2094
  storeDuration();
2092
2095
  }
2093
2096
  });
@@ -2265,11 +2268,18 @@ class Recognizeable {
2265
2268
  }
2266
2269
  recognize(sequenceItem, { onRecognized } = {}) {
2267
2270
  this.recognizing();
2268
- const type = this.toType(sequenceItem), excess = predicateNumber(this.maxSequenceLength) ? Math.max(0, this.sequence.length - this.maxSequenceLength) : 0, newSequence = createConcat(
2269
- createSlice(excess)(this.sequence),
2270
- [sequenceItem]
2271
- )([]);
2271
+ const type = this.toType(sequenceItem), pushSequence = (sequenceItem2) => {
2272
+ newSequence.push(sequenceItem2);
2273
+ if (this.maxSequenceLength !== true && newSequence.length > this.maxSequenceLength) {
2274
+ newSequence.shift();
2275
+ }
2276
+ }, newSequence = [];
2277
+ for (const sequenceItem2 of this.sequence) {
2278
+ pushSequence(sequenceItem2);
2279
+ }
2280
+ pushSequence(sequenceItem);
2272
2281
  this.effectApi.getSequence = () => newSequence;
2282
+ this.effectApi.pushSequence = pushSequence;
2273
2283
  this.effectApi.onRecognized = onRecognized || (() => {
2274
2284
  });
2275
2285
  this.effects[type]?.(sequenceItem, { ...this.effectApi });
package/lib/index.d.ts CHANGED
@@ -160,6 +160,7 @@ type RecognizeableEffectApi<Type extends ListenableSupportedType, Metadata exten
160
160
  recognized: () => void;
161
161
  denied: () => void;
162
162
  getSequence: () => ListenEffectParam<Type>[];
163
+ pushSequence: (sequenceItem: ListenEffectParam<Type>) => void;
163
164
  onRecognized: (sequenceItem: ListenEffectParam<Type>) => any;
164
165
  };
165
166
  type RecognizeableStatus = 'recognized' | 'recognizing' | 'denied' | 'ready';
package/lib/index.js CHANGED
@@ -1298,6 +1298,8 @@ function createMousepress(options = {}) {
1298
1298
  onDown?.(toHookApi(api));
1299
1299
  };
1300
1300
  const mousemove = (event, api) => {
1301
+ const { pushSequence } = api;
1302
+ pushSequence(event);
1301
1303
  storePointerMoveMetadata(event, api);
1302
1304
  recognize(event, api);
1303
1305
  onMove?.(toHookApi(api));
@@ -2068,7 +2070,7 @@ const initialMetadata = {
2068
2070
  velocity: 0
2069
2071
  };
2070
2072
  function storePointerTimeMetadata(event, api, getShouldStore, setRequest, recognize) {
2071
- const { getMetadata, getStatus, onRecognized } = api, metadata = getMetadata();
2073
+ const { getSequence, getMetadata, getStatus, onRecognized } = api, metadata = getMetadata();
2072
2074
  if (!metadata.times) {
2073
2075
  metadata.times = createClone()(initialMetadata.times);
2074
2076
  }
@@ -2083,9 +2085,10 @@ function storePointerTimeMetadata(event, api, getShouldStore, setRequest, recogn
2083
2085
  metadata.duration = Math.max(0, metadata.times.end - metadata.times.start);
2084
2086
  const durationFromPrevious = Math.max(0, metadata.times.end - previousTime);
2085
2087
  metadata.velocity = metadata.distance.straight.fromPrevious / durationFromPrevious;
2086
- recognize?.(event, api);
2088
+ const event2 = getSequence().at(-1);
2089
+ recognize?.(event2, api);
2087
2090
  if (getStatus() === "recognized")
2088
- onRecognized(event);
2091
+ onRecognized(event2);
2089
2092
  storeDuration();
2090
2093
  }
2091
2094
  });
@@ -2263,11 +2266,18 @@ class Recognizeable {
2263
2266
  }
2264
2267
  recognize(sequenceItem, { onRecognized } = {}) {
2265
2268
  this.recognizing();
2266
- const type = this.toType(sequenceItem), excess = predicateNumber(this.maxSequenceLength) ? Math.max(0, this.sequence.length - this.maxSequenceLength) : 0, newSequence = createConcat(
2267
- createSlice(excess)(this.sequence),
2268
- [sequenceItem]
2269
- )([]);
2269
+ const type = this.toType(sequenceItem), pushSequence = (sequenceItem2) => {
2270
+ newSequence.push(sequenceItem2);
2271
+ if (this.maxSequenceLength !== true && newSequence.length > this.maxSequenceLength) {
2272
+ newSequence.shift();
2273
+ }
2274
+ }, newSequence = [];
2275
+ for (const sequenceItem2 of this.sequence) {
2276
+ pushSequence(sequenceItem2);
2277
+ }
2278
+ pushSequence(sequenceItem);
2270
2279
  this.effectApi.getSequence = () => newSequence;
2280
+ this.effectApi.pushSequence = pushSequence;
2271
2281
  this.effectApi.onRecognized = onRecognized || (() => {
2272
2282
  });
2273
2283
  this.effects[type]?.(sequenceItem, { ...this.effectApi });
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@baleada/logic",
3
- "version": "0.23.1",
3
+ "version": "0.23.2",
4
4
  "description": "UI logic for the Baleada toolkit",
5
5
  "main": "lib/index.cjs",
6
6
  "module": "lib/index.js",