@tamagui/animations-css 1.75.6 → 1.75.8

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.
@@ -19,6 +19,7 @@ __export(createAnimations_exports, {
19
19
  module.exports = __toCommonJS(createAnimations_exports);
20
20
  var import_core = require("@tamagui/core"), import_use_presence = require("@tamagui/use-presence"), import_react = require("react");
21
21
  function createAnimations(animations) {
22
+ const reactionListeners = /* @__PURE__ */ new WeakMap();
22
23
  return {
23
24
  View: import_core.Stack,
24
25
  Text: import_core.Text,
@@ -29,29 +30,32 @@ function createAnimations(animations) {
29
30
  const [val, setVal] = (0, import_react.useState)(initial);
30
31
  return {
31
32
  getInstance() {
32
- return val;
33
+ return setVal;
33
34
  },
34
35
  getValue() {
35
36
  return val;
36
37
  },
37
38
  setValue(next) {
38
39
  setVal(next);
40
+ const listeners = reactionListeners.get(setVal);
41
+ listeners && listeners.forEach((cb) => cb(next));
39
42
  },
40
43
  stop() {
41
44
  }
42
45
  };
43
46
  },
44
47
  useAnimatedNumberReaction({ hostRef, value }, onValue) {
45
- (0, import_core.useIsomorphicLayoutEffect)(() => {
46
- if (!hostRef.current)
47
- return;
48
- const onTransitionEvent = (e) => {
49
- onValue(value.getValue());
50
- }, node = hostRef.current;
51
- return node.addEventListener("transitionstart", onTransitionEvent), node.addEventListener("transitioncancel", onTransitionEvent), node.addEventListener("transitionend", onTransitionEvent), () => {
52
- node.removeEventListener("transitionstart", onTransitionEvent), node.removeEventListener("transitioncancel", onTransitionEvent), node.removeEventListener("transitionend", onTransitionEvent);
48
+ (0, import_react.useEffect)(() => {
49
+ const instance = value.getInstance();
50
+ let queue = reactionListeners.get(instance);
51
+ if (!queue) {
52
+ const next = /* @__PURE__ */ new Set();
53
+ reactionListeners.set(instance, next), queue = next;
54
+ }
55
+ return queue.add(onValue), () => {
56
+ queue == null || queue.delete(onValue);
53
57
  };
54
- }, [hostRef, onValue]);
58
+ }, []);
55
59
  },
56
60
  useAnimatedNumberStyle(val, getStyle) {
57
61
  return getStyle(val.getValue());
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "version": 3,
3
3
  "sources": ["../../src/createAnimations.tsx"],
4
- "mappings": ";;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,kBAMO,0BAEP,sBAA4B,kCAC5B,eAAiC;AAE1B,SAAS,iBAAmC,YAAmC;AACpF,SAAO;AAAA,IACL,MAAM;AAAA,IACN,MAAM;AAAA,IACN;AAAA,IACA;AAAA,IACA,iBAAiB;AAAA,IAEjB,kBAAkB,SAA0C;AAC1D,YAAM,CAAC,KAAK,MAAM,QAAI,uBAAS,OAAO;AAEtC,aAAO;AAAA,QACL,cAAc;AACZ,iBAAO;AAAA,QACT;AAAA,QACA,WAAW;AACT,iBAAO;AAAA,QACT;AAAA,QACA,SAAS,MAAM;AACb,iBAAO,IAAI;AAAA,QACb;AAAA,QACA,OAAO;AAAA,QAAC;AAAA,MACV;AAAA,IACF;AAAA,IAEA,0BAA0B,EAAE,SAAS,MAAM,GAAG,SAAS;AAErD,iDAA0B,MAAM;AAC9B,YAAI,CAAC,QAAQ;AAAS;AACtB,cAAM,oBAAoB,CAAC,MAAuB;AAChD,kBAAQ,MAAM,SAAS,CAAC;AAAA,QAC1B,GAEM,OAAO,QAAQ;AACrB,oBAAK,iBAAiB,mBAAmB,iBAAiB,GAC1D,KAAK,iBAAiB,oBAAoB,iBAAiB,GAC3D,KAAK,iBAAiB,iBAAiB,iBAAiB,GACjD,MAAM;AACX,eAAK,oBAAoB,mBAAmB,iBAAiB,GAC7D,KAAK,oBAAoB,oBAAoB,iBAAiB,GAC9D,KAAK,oBAAoB,iBAAiB,iBAAiB;AAAA,QAC7D;AAAA,MACF,GAAG,CAAC,SAAS,OAAO,CAAC;AAAA,IACvB;AAAA,IAEA,uBAAuB,KAAK,UAAU;AACpC,aAAO,SAAS,IAAI,SAAS,CAAC;AAAA,IAChC;AAAA,IAEA,eAAe,CAAC,EAAE,OAAO,UAAU,OAAO,gBAAgB,QAAQ,MAAM;AACtE,YAAM,aAAa,CAAC,CAAC,eAAe,WAC9B,aAAY,qCAAW,QAAO,IAC9B,mBAAmB,qCAAW,IAE9B,CAAC,cAAc,eAAe,IAAI,CAAC,EAAE,OAAO,MAAM,SAAS,GAC3D,YAAY,WAAW,YAAY,GACnC,OAAO,MAAM,eAAe,CAAC,KAAK;AAiDxC,iBA/CA,uCAA0B,MAAM;AAC9B,YAAI,CAAC,oBAAoB,CAAC,aAAa,CAAC,QAAQ;AAAS;AACzD,cAAM,OAAO,QAAQ,SACf,oBAAoB,MAAM;AAC9B;AAAA,QACF;AACA,oBAAK,iBAAiB,iBAAiB,iBAAiB,GACxD,KAAK,iBAAiB,oBAAoB,iBAAiB,GACpD,MAAM;AACX,eAAK,oBAAoB,iBAAiB,iBAAiB,GAC3D,KAAK,oBAAoB,oBAAoB,iBAAiB;AAAA,QAChE;AAAA,MACF,GAAG,CAAC,kBAAkB,SAAS,CAAC,GAmC3B,aAOL,MAAM,aAAa,KAChB,IAAI,CAAC,QAAQ;AACZ,cAAM,WAAW,WAAW,mDAAkB,IAAI,KAAK;AACvD,eAAO,GAAG,GAAG,IAAI,QAAQ;AAAA,MAC3B,CAAC,EACA,KAAK,IAAI,GAMR,QAAQ,IAAI,aAAa,iBAAiB,MAAM,SAClD,QAAQ,KAAK,iBAAiB,OAAO,EAAE,YAAY,UAAU,CAAC,GAGzD,EAAE,MAAM,KArBN;AAAA,IAsBX;AAAA,EACF;AACF;",
4
+ "mappings": ";;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,kBAMO,0BAEP,sBAA4B,kCAC5B,eAA2C;AAEpC,SAAS,iBAAmC,YAAmC;AACpF,QAAM,oBAAoB,oBAAI,QAA4B;AAE1D,SAAO;AAAA,IACL,MAAM;AAAA,IACN,MAAM;AAAA,IACN;AAAA,IACA;AAAA,IACA,iBAAiB;AAAA,IAEjB,kBAAkB,SAA4C;AAC5D,YAAM,CAAC,KAAK,MAAM,QAAI,uBAAS,OAAO;AAEtC,aAAO;AAAA,QACL,cAAc;AACZ,iBAAO;AAAA,QACT;AAAA,QACA,WAAW;AACT,iBAAO;AAAA,QACT;AAAA,QACA,SAAS,MAAM;AACb,iBAAO,IAAI;AACX,gBAAM,YAAY,kBAAkB,IAAI,MAAM;AAC9C,UAAI,aACF,UAAU,QAAQ,CAAC,OAAO,GAAG,IAAI,CAAC;AAAA,QAEtC;AAAA,QACA,OAAO;AAAA,QAAC;AAAA,MACV;AAAA,IACF;AAAA,IAEA,0BAA0B,EAAE,SAAS,MAAM,GAAG,SAAS;AACrD,kCAAU,MAAM;AACd,cAAM,WAAW,MAAM,YAAY;AACnC,YAAI,QAAQ,kBAAkB,IAAI,QAAQ;AAC1C,YAAI,CAAC,OAAO;AACV,gBAAM,OAAO,oBAAI,IAAc;AAC/B,4BAAkB,IAAI,UAAU,IAAI,GACpC,QAAQ;AAAA,QACV;AACA,qBAAM,IAAI,OAAO,GACV,MAAM;AACX,iCAAO,OAAO;AAAA,QAChB;AAAA,MACF,GAAG,CAAC,CAAC;AAAA,IACP;AAAA,IAEA,uBAAuB,KAAK,UAAU;AACpC,aAAO,SAAS,IAAI,SAAS,CAAC;AAAA,IAChC;AAAA,IAEA,eAAe,CAAC,EAAE,OAAO,UAAU,OAAO,gBAAgB,QAAQ,MAAM;AACtE,YAAM,aAAa,CAAC,CAAC,eAAe,WAC9B,aAAY,qCAAW,QAAO,IAC9B,mBAAmB,qCAAW,IAE9B,CAAC,cAAc,eAAe,IAAI,CAAC,EAAE,OAAO,MAAM,SAAS,GAC3D,YAAY,WAAW,YAAY,GACnC,OAAO,MAAM,eAAe,CAAC,KAAK;AAiDxC,iBA/CA,uCAA0B,MAAM;AAC9B,YAAI,CAAC,oBAAoB,CAAC,aAAa,CAAC,QAAQ;AAAS;AACzD,cAAM,OAAO,QAAQ,SACf,oBAAoB,MAAM;AAC9B;AAAA,QACF;AACA,oBAAK,iBAAiB,iBAAiB,iBAAiB,GACxD,KAAK,iBAAiB,oBAAoB,iBAAiB,GACpD,MAAM;AACX,eAAK,oBAAoB,iBAAiB,iBAAiB,GAC3D,KAAK,oBAAoB,oBAAoB,iBAAiB;AAAA,QAChE;AAAA,MACF,GAAG,CAAC,kBAAkB,SAAS,CAAC,GAmC3B,aAOL,MAAM,aAAa,KAChB,IAAI,CAAC,QAAQ;AACZ,cAAM,WAAW,WAAW,mDAAkB,IAAI,KAAK;AACvD,eAAO,GAAG,GAAG,IAAI,QAAQ;AAAA,MAC3B,CAAC,EACA,KAAK,IAAI,GAMR,QAAQ,IAAI,aAAa,iBAAiB,MAAM,SAClD,QAAQ,KAAK,iBAAiB,OAAO,EAAE,YAAY,UAAU,CAAC,GAGzD,EAAE,MAAM,KArBN;AAAA,IAsBX;AAAA,EACF;AACF;",
5
5
  "names": []
6
6
  }
@@ -20,6 +20,7 @@ __export(createAnimations_exports, {
20
20
  module.exports = __toCommonJS(createAnimations_exports);
21
21
  var import_core = require("@tamagui/core"), import_use_presence = require("@tamagui/use-presence"), import_react = require("react");
22
22
  function createAnimations(animations) {
23
+ const reactionListeners = /* @__PURE__ */ new WeakMap();
23
24
  return {
24
25
  View: import_core.Stack,
25
26
  Text: import_core.Text,
@@ -30,29 +31,32 @@ function createAnimations(animations) {
30
31
  const [val, setVal] = (0, import_react.useState)(initial);
31
32
  return {
32
33
  getInstance() {
33
- return val;
34
+ return setVal;
34
35
  },
35
36
  getValue() {
36
37
  return val;
37
38
  },
38
39
  setValue(next) {
39
40
  setVal(next);
41
+ const listeners = reactionListeners.get(setVal);
42
+ listeners && listeners.forEach((cb) => cb(next));
40
43
  },
41
44
  stop() {
42
45
  }
43
46
  };
44
47
  },
45
48
  useAnimatedNumberReaction({ hostRef, value }, onValue) {
46
- (0, import_core.useIsomorphicLayoutEffect)(() => {
47
- if (!hostRef.current)
48
- return;
49
- const onTransitionEvent = (e) => {
50
- onValue(value.getValue());
51
- }, node = hostRef.current;
52
- return node.addEventListener("transitionstart", onTransitionEvent), node.addEventListener("transitioncancel", onTransitionEvent), node.addEventListener("transitionend", onTransitionEvent), () => {
53
- node.removeEventListener("transitionstart", onTransitionEvent), node.removeEventListener("transitioncancel", onTransitionEvent), node.removeEventListener("transitionend", onTransitionEvent);
49
+ (0, import_react.useEffect)(() => {
50
+ const instance = value.getInstance();
51
+ let queue = reactionListeners.get(instance);
52
+ if (!queue) {
53
+ const next = /* @__PURE__ */ new Set();
54
+ reactionListeners.set(instance, next), queue = next;
55
+ }
56
+ return queue.add(onValue), () => {
57
+ queue == null || queue.delete(onValue);
54
58
  };
55
- }, [hostRef, onValue]);
59
+ }, []);
56
60
  },
57
61
  useAnimatedNumberStyle(val, getStyle) {
58
62
  return getStyle(val.getValue());
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "version": 3,
3
3
  "sources": ["../../src/createAnimations.tsx"],
4
- "mappings": ";;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,kBAMO,0BAEP,sBAA4B,kCAC5B,eAAiC;AAE1B,SAAS,iBAAmC,YAAmC;AACpF,SAAO;AAAA,IACL,MAAM;AAAA,IACN,MAAM;AAAA,IACN;AAAA,IACA;AAAA,IACA,iBAAiB;AAAA,IAEjB,kBAAkB,SAA0C;AAC1D,YAAM,CAAC,KAAK,MAAM,QAAI,uBAAS,OAAO;AAEtC,aAAO;AAAA,QACL,cAAc;AACZ,iBAAO;AAAA,QACT;AAAA,QACA,WAAW;AACT,iBAAO;AAAA,QACT;AAAA,QACA,SAAS,MAAM;AACb,iBAAO,IAAI;AAAA,QACb;AAAA,QACA,OAAO;AAAA,QAAC;AAAA,MACV;AAAA,IACF;AAAA,IAEA,0BAA0B,EAAE,SAAS,MAAM,GAAG,SAAS;AAErD,iDAA0B,MAAM;AAC9B,YAAI,CAAC,QAAQ;AAAS;AACtB,cAAM,oBAAoB,CAAC,MAAuB;AAChD,kBAAQ,MAAM,SAAS,CAAC;AAAA,QAC1B,GAEM,OAAO,QAAQ;AACrB,oBAAK,iBAAiB,mBAAmB,iBAAiB,GAC1D,KAAK,iBAAiB,oBAAoB,iBAAiB,GAC3D,KAAK,iBAAiB,iBAAiB,iBAAiB,GACjD,MAAM;AACX,eAAK,oBAAoB,mBAAmB,iBAAiB,GAC7D,KAAK,oBAAoB,oBAAoB,iBAAiB,GAC9D,KAAK,oBAAoB,iBAAiB,iBAAiB;AAAA,QAC7D;AAAA,MACF,GAAG,CAAC,SAAS,OAAO,CAAC;AAAA,IACvB;AAAA,IAEA,uBAAuB,KAAK,UAAU;AACpC,aAAO,SAAS,IAAI,SAAS,CAAC;AAAA,IAChC;AAAA,IAEA,eAAe,CAAC,EAAE,OAAO,UAAU,OAAO,gBAAgB,QAAQ,MAAM;AACtE,YAAM,aAAa,CAAC,CAAC,eAAe,WAC9B,aAAY,qCAAW,QAAO,IAC9B,mBAAmB,qCAAW,IAE9B,CAAC,cAAc,eAAe,IAAI,CAAC,EAAE,OAAO,MAAM,SAAS,GAC3D,YAAY,WAAW,YAAY,GACnC,OAAO,MAAM,eAAe,CAAC,KAAK;AAiDxC,iBA/CA,uCAA0B,MAAM;AAC9B,YAAI,CAAC,oBAAoB,CAAC,aAAa,CAAC,QAAQ;AAAS;AACzD,cAAM,OAAO,QAAQ,SACf,oBAAoB,MAAM;AAC9B;AAAA,QACF;AACA,oBAAK,iBAAiB,iBAAiB,iBAAiB,GACxD,KAAK,iBAAiB,oBAAoB,iBAAiB,GACpD,MAAM;AACX,eAAK,oBAAoB,iBAAiB,iBAAiB,GAC3D,KAAK,oBAAoB,oBAAoB,iBAAiB;AAAA,QAChE;AAAA,MACF,GAAG,CAAC,kBAAkB,SAAS,CAAC,GAmC3B,aAOL,MAAM,aAAa,KAChB,IAAI,CAAC,QAAQ;AACZ,cAAM,WAAW,WAAW,mDAAkB,IAAI,KAAK;AACvD,eAAO,GAAG,GAAG,IAAI,QAAQ;AAAA,MAC3B,CAAC,EACA,KAAK,IAAI,GAMR,QAAQ,IAAI,aAAa,iBAAiB,MAAM,SAClD,QAAQ,KAAK,iBAAiB,OAAO,EAAE,YAAY,UAAU,CAAC,GAGzD,EAAE,MAAM,KArBN;AAAA,IAsBX;AAAA,EACF;AACF;",
4
+ "mappings": ";;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,kBAMO,0BAEP,sBAA4B,kCAC5B,eAA2C;AAEpC,SAAS,iBAAmC,YAAmC;AACpF,QAAM,oBAAoB,oBAAI,QAA4B;AAE1D,SAAO;AAAA,IACL,MAAM;AAAA,IACN,MAAM;AAAA,IACN;AAAA,IACA;AAAA,IACA,iBAAiB;AAAA,IAEjB,kBAAkB,SAA4C;AAC5D,YAAM,CAAC,KAAK,MAAM,QAAI,uBAAS,OAAO;AAEtC,aAAO;AAAA,QACL,cAAc;AACZ,iBAAO;AAAA,QACT;AAAA,QACA,WAAW;AACT,iBAAO;AAAA,QACT;AAAA,QACA,SAAS,MAAM;AACb,iBAAO,IAAI;AACX,gBAAM,YAAY,kBAAkB,IAAI,MAAM;AAC9C,UAAI,aACF,UAAU,QAAQ,CAAC,OAAO,GAAG,IAAI,CAAC;AAAA,QAEtC;AAAA,QACA,OAAO;AAAA,QAAC;AAAA,MACV;AAAA,IACF;AAAA,IAEA,0BAA0B,EAAE,SAAS,MAAM,GAAG,SAAS;AACrD,kCAAU,MAAM;AACd,cAAM,WAAW,MAAM,YAAY;AACnC,YAAI,QAAQ,kBAAkB,IAAI,QAAQ;AAC1C,YAAI,CAAC,OAAO;AACV,gBAAM,OAAO,oBAAI,IAAc;AAC/B,4BAAkB,IAAI,UAAU,IAAI,GACpC,QAAQ;AAAA,QACV;AACA,qBAAM,IAAI,OAAO,GACV,MAAM;AACX,iCAAO,OAAO;AAAA,QAChB;AAAA,MACF,GAAG,CAAC,CAAC;AAAA,IACP;AAAA,IAEA,uBAAuB,KAAK,UAAU;AACpC,aAAO,SAAS,IAAI,SAAS,CAAC;AAAA,IAChC;AAAA,IAEA,eAAe,CAAC,EAAE,OAAO,UAAU,OAAO,gBAAgB,QAAQ,MAAM;AACtE,YAAM,aAAa,CAAC,CAAC,eAAe,WAC9B,aAAY,qCAAW,QAAO,IAC9B,mBAAmB,qCAAW,IAE9B,CAAC,cAAc,eAAe,IAAI,CAAC,EAAE,OAAO,MAAM,SAAS,GAC3D,YAAY,WAAW,YAAY,GACnC,OAAO,MAAM,eAAe,CAAC,KAAK;AAiDxC,iBA/CA,uCAA0B,MAAM;AAC9B,YAAI,CAAC,oBAAoB,CAAC,aAAa,CAAC,QAAQ;AAAS;AACzD,cAAM,OAAO,QAAQ,SACf,oBAAoB,MAAM;AAC9B;AAAA,QACF;AACA,oBAAK,iBAAiB,iBAAiB,iBAAiB,GACxD,KAAK,iBAAiB,oBAAoB,iBAAiB,GACpD,MAAM;AACX,eAAK,oBAAoB,iBAAiB,iBAAiB,GAC3D,KAAK,oBAAoB,oBAAoB,iBAAiB;AAAA,QAChE;AAAA,MACF,GAAG,CAAC,kBAAkB,SAAS,CAAC,GAmC3B,aAOL,MAAM,aAAa,KAChB,IAAI,CAAC,QAAQ;AACZ,cAAM,WAAW,WAAW,mDAAkB,IAAI,KAAK;AACvD,eAAO,GAAG,GAAG,IAAI,QAAQ;AAAA,MAC3B,CAAC,EACA,KAAK,IAAI,GAMR,QAAQ,IAAI,aAAa,iBAAiB,MAAM,SAClD,QAAQ,KAAK,iBAAiB,OAAO,EAAE,YAAY,UAAU,CAAC,GAGzD,EAAE,MAAM,KArBN;AAAA,IAsBX;AAAA,EACF;AACF;",
5
5
  "names": []
6
6
  }
@@ -4,8 +4,9 @@ import {
4
4
  useIsomorphicLayoutEffect
5
5
  } from "@tamagui/core";
6
6
  import { usePresence } from "@tamagui/use-presence";
7
- import { useState } from "react";
7
+ import { useEffect, useState } from "react";
8
8
  function createAnimations(animations) {
9
+ const reactionListeners = /* @__PURE__ */ new WeakMap();
9
10
  return {
10
11
  View: Stack,
11
12
  Text,
@@ -16,29 +17,32 @@ function createAnimations(animations) {
16
17
  const [val, setVal] = useState(initial);
17
18
  return {
18
19
  getInstance() {
19
- return val;
20
+ return setVal;
20
21
  },
21
22
  getValue() {
22
23
  return val;
23
24
  },
24
25
  setValue(next) {
25
26
  setVal(next);
27
+ const listeners = reactionListeners.get(setVal);
28
+ listeners && listeners.forEach((cb) => cb(next));
26
29
  },
27
30
  stop() {
28
31
  }
29
32
  };
30
33
  },
31
34
  useAnimatedNumberReaction({ hostRef, value }, onValue) {
32
- useIsomorphicLayoutEffect(() => {
33
- if (!hostRef.current)
34
- return;
35
- const onTransitionEvent = (e) => {
36
- onValue(value.getValue());
37
- }, node = hostRef.current;
38
- return node.addEventListener("transitionstart", onTransitionEvent), node.addEventListener("transitioncancel", onTransitionEvent), node.addEventListener("transitionend", onTransitionEvent), () => {
39
- node.removeEventListener("transitionstart", onTransitionEvent), node.removeEventListener("transitioncancel", onTransitionEvent), node.removeEventListener("transitionend", onTransitionEvent);
35
+ useEffect(() => {
36
+ const instance = value.getInstance();
37
+ let queue = reactionListeners.get(instance);
38
+ if (!queue) {
39
+ const next = /* @__PURE__ */ new Set();
40
+ reactionListeners.set(instance, next), queue = next;
41
+ }
42
+ return queue.add(onValue), () => {
43
+ queue?.delete(onValue);
40
44
  };
41
- }, [hostRef, onValue]);
45
+ }, []);
42
46
  },
43
47
  useAnimatedNumberStyle(val, getStyle) {
44
48
  return getStyle(val.getValue());
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "version": 3,
3
3
  "sources": ["../../src/createAnimations.tsx"],
4
- "mappings": "AAAA;AAAA,EAEE;AAAA,EACA;AAAA,EAEA;AAAA,OACK;AAEP,SAAS,mBAAmB;AAC5B,SAAiB,gBAAgB;AAE1B,SAAS,iBAAmC,YAAmC;AACpF,SAAO;AAAA,IACL,MAAM;AAAA,IACN;AAAA,IACA;AAAA,IACA;AAAA,IACA,iBAAiB;AAAA,IAEjB,kBAAkB,SAA0C;AAC1D,YAAM,CAAC,KAAK,MAAM,IAAI,SAAS,OAAO;AAEtC,aAAO;AAAA,QACL,cAAc;AACZ,iBAAO;AAAA,QACT;AAAA,QACA,WAAW;AACT,iBAAO;AAAA,QACT;AAAA,QACA,SAAS,MAAM;AACb,iBAAO,IAAI;AAAA,QACb;AAAA,QACA,OAAO;AAAA,QAAC;AAAA,MACV;AAAA,IACF;AAAA,IAEA,0BAA0B,EAAE,SAAS,MAAM,GAAG,SAAS;AAErD,gCAA0B,MAAM;AAC9B,YAAI,CAAC,QAAQ;AAAS;AACtB,cAAM,oBAAoB,CAAC,MAAuB;AAChD,kBAAQ,MAAM,SAAS,CAAC;AAAA,QAC1B,GAEM,OAAO,QAAQ;AACrB,oBAAK,iBAAiB,mBAAmB,iBAAiB,GAC1D,KAAK,iBAAiB,oBAAoB,iBAAiB,GAC3D,KAAK,iBAAiB,iBAAiB,iBAAiB,GACjD,MAAM;AACX,eAAK,oBAAoB,mBAAmB,iBAAiB,GAC7D,KAAK,oBAAoB,oBAAoB,iBAAiB,GAC9D,KAAK,oBAAoB,iBAAiB,iBAAiB;AAAA,QAC7D;AAAA,MACF,GAAG,CAAC,SAAS,OAAO,CAAC;AAAA,IACvB;AAAA,IAEA,uBAAuB,KAAK,UAAU;AACpC,aAAO,SAAS,IAAI,SAAS,CAAC;AAAA,IAChC;AAAA,IAEA,eAAe,CAAC,EAAE,OAAO,UAAU,OAAO,gBAAgB,QAAQ,MAAM;AACtE,YAAM,aAAa,CAAC,CAAC,eAAe,WAC9B,YAAY,WAAW,CAAC,MAAM,IAC9B,mBAAmB,WAAW,CAAC,GAE/B,CAAC,cAAc,eAAe,IAAI,CAAC,EAAE,OAAO,MAAM,SAAS,GAC3D,YAAY,WAAW,YAAY,GACnC,OAAO,MAAM,eAAe,CAAC,KAAK;AAiDxC,aA/CA,0BAA0B,MAAM;AAC9B,YAAI,CAAC,oBAAoB,CAAC,aAAa,CAAC,QAAQ;AAAS;AACzD,cAAM,OAAO,QAAQ,SACf,oBAAoB,MAAM;AAC9B,6BAAmB;AAAA,QACrB;AACA,oBAAK,iBAAiB,iBAAiB,iBAAiB,GACxD,KAAK,iBAAiB,oBAAoB,iBAAiB,GACpD,MAAM;AACX,eAAK,oBAAoB,iBAAiB,iBAAiB,GAC3D,KAAK,oBAAoB,oBAAoB,iBAAiB;AAAA,QAChE;AAAA,MACF,GAAG,CAAC,kBAAkB,SAAS,CAAC,GAmC3B,aAOL,MAAM,aAAa,KAChB,IAAI,CAAC,QAAQ;AACZ,cAAM,WAAW,WAAW,kBAAkB,GAAG,CAAC,KAAK;AACvD,eAAO,GAAG,GAAG,IAAI,QAAQ;AAAA,MAC3B,CAAC,EACA,KAAK,IAAI,GAMR,QAAQ,IAAI,aAAa,iBAAiB,MAAM,SAClD,QAAQ,KAAK,iBAAiB,OAAO,EAAE,YAAY,UAAU,CAAC,GAGzD,EAAE,MAAM,KArBN;AAAA,IAsBX;AAAA,EACF;AACF;",
4
+ "mappings": "AAAA;AAAA,EAEE;AAAA,EACA;AAAA,EAEA;AAAA,OACK;AAEP,SAAS,mBAAmB;AAC5B,SAAS,WAAkB,gBAAgB;AAEpC,SAAS,iBAAmC,YAAmC;AACpF,QAAM,oBAAoB,oBAAI,QAA4B;AAE1D,SAAO;AAAA,IACL,MAAM;AAAA,IACN;AAAA,IACA;AAAA,IACA;AAAA,IACA,iBAAiB;AAAA,IAEjB,kBAAkB,SAA4C;AAC5D,YAAM,CAAC,KAAK,MAAM,IAAI,SAAS,OAAO;AAEtC,aAAO;AAAA,QACL,cAAc;AACZ,iBAAO;AAAA,QACT;AAAA,QACA,WAAW;AACT,iBAAO;AAAA,QACT;AAAA,QACA,SAAS,MAAM;AACb,iBAAO,IAAI;AACX,gBAAM,YAAY,kBAAkB,IAAI,MAAM;AAC9C,UAAI,aACF,UAAU,QAAQ,CAAC,OAAO,GAAG,IAAI,CAAC;AAAA,QAEtC;AAAA,QACA,OAAO;AAAA,QAAC;AAAA,MACV;AAAA,IACF;AAAA,IAEA,0BAA0B,EAAE,SAAS,MAAM,GAAG,SAAS;AACrD,gBAAU,MAAM;AACd,cAAM,WAAW,MAAM,YAAY;AACnC,YAAI,QAAQ,kBAAkB,IAAI,QAAQ;AAC1C,YAAI,CAAC,OAAO;AACV,gBAAM,OAAO,oBAAI,IAAc;AAC/B,4BAAkB,IAAI,UAAU,IAAI,GACpC,QAAQ;AAAA,QACV;AACA,qBAAM,IAAI,OAAO,GACV,MAAM;AACX,iBAAO,OAAO,OAAO;AAAA,QACvB;AAAA,MACF,GAAG,CAAC,CAAC;AAAA,IACP;AAAA,IAEA,uBAAuB,KAAK,UAAU;AACpC,aAAO,SAAS,IAAI,SAAS,CAAC;AAAA,IAChC;AAAA,IAEA,eAAe,CAAC,EAAE,OAAO,UAAU,OAAO,gBAAgB,QAAQ,MAAM;AACtE,YAAM,aAAa,CAAC,CAAC,eAAe,WAC9B,YAAY,WAAW,CAAC,MAAM,IAC9B,mBAAmB,WAAW,CAAC,GAE/B,CAAC,cAAc,eAAe,IAAI,CAAC,EAAE,OAAO,MAAM,SAAS,GAC3D,YAAY,WAAW,YAAY,GACnC,OAAO,MAAM,eAAe,CAAC,KAAK;AAiDxC,aA/CA,0BAA0B,MAAM;AAC9B,YAAI,CAAC,oBAAoB,CAAC,aAAa,CAAC,QAAQ;AAAS;AACzD,cAAM,OAAO,QAAQ,SACf,oBAAoB,MAAM;AAC9B,6BAAmB;AAAA,QACrB;AACA,oBAAK,iBAAiB,iBAAiB,iBAAiB,GACxD,KAAK,iBAAiB,oBAAoB,iBAAiB,GACpD,MAAM;AACX,eAAK,oBAAoB,iBAAiB,iBAAiB,GAC3D,KAAK,oBAAoB,oBAAoB,iBAAiB;AAAA,QAChE;AAAA,MACF,GAAG,CAAC,kBAAkB,SAAS,CAAC,GAmC3B,aAOL,MAAM,aAAa,KAChB,IAAI,CAAC,QAAQ;AACZ,cAAM,WAAW,WAAW,kBAAkB,GAAG,CAAC,KAAK;AACvD,eAAO,GAAG,GAAG,IAAI,QAAQ;AAAA,MAC3B,CAAC,EACA,KAAK,IAAI,GAMR,QAAQ,IAAI,aAAa,iBAAiB,MAAM,SAClD,QAAQ,KAAK,iBAAiB,OAAO,EAAE,YAAY,UAAU,CAAC,GAGzD,EAAE,MAAM,KArBN;AAAA,IAsBX;AAAA,EACF;AACF;",
5
5
  "names": []
6
6
  }
@@ -4,8 +4,9 @@ import {
4
4
  useIsomorphicLayoutEffect
5
5
  } from "@tamagui/core";
6
6
  import { usePresence } from "@tamagui/use-presence";
7
- import { useState } from "react";
7
+ import { useEffect, useState } from "react";
8
8
  function createAnimations(animations) {
9
+ const reactionListeners = /* @__PURE__ */ new WeakMap();
9
10
  return {
10
11
  View: Stack,
11
12
  Text,
@@ -16,29 +17,32 @@ function createAnimations(animations) {
16
17
  const [val, setVal] = useState(initial);
17
18
  return {
18
19
  getInstance() {
19
- return val;
20
+ return setVal;
20
21
  },
21
22
  getValue() {
22
23
  return val;
23
24
  },
24
25
  setValue(next) {
25
26
  setVal(next);
27
+ const listeners = reactionListeners.get(setVal);
28
+ listeners && listeners.forEach((cb) => cb(next));
26
29
  },
27
30
  stop() {
28
31
  }
29
32
  };
30
33
  },
31
34
  useAnimatedNumberReaction({ hostRef, value }, onValue) {
32
- useIsomorphicLayoutEffect(() => {
33
- if (!hostRef.current)
34
- return;
35
- const onTransitionEvent = (e) => {
36
- onValue(value.getValue());
37
- }, node = hostRef.current;
38
- return node.addEventListener("transitionstart", onTransitionEvent), node.addEventListener("transitioncancel", onTransitionEvent), node.addEventListener("transitionend", onTransitionEvent), () => {
39
- node.removeEventListener("transitionstart", onTransitionEvent), node.removeEventListener("transitioncancel", onTransitionEvent), node.removeEventListener("transitionend", onTransitionEvent);
35
+ useEffect(() => {
36
+ const instance = value.getInstance();
37
+ let queue = reactionListeners.get(instance);
38
+ if (!queue) {
39
+ const next = /* @__PURE__ */ new Set();
40
+ reactionListeners.set(instance, next), queue = next;
41
+ }
42
+ return queue.add(onValue), () => {
43
+ queue?.delete(onValue);
40
44
  };
41
- }, [hostRef, onValue]);
45
+ }, []);
42
46
  },
43
47
  useAnimatedNumberStyle(val, getStyle) {
44
48
  return getStyle(val.getValue());
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "version": 3,
3
3
  "sources": ["../../src/createAnimations.tsx"],
4
- "mappings": "AAAA;AAAA,EAEE;AAAA,EACA;AAAA,EAEA;AAAA,OACK;AAEP,SAAS,mBAAmB;AAC5B,SAAiB,gBAAgB;AAE1B,SAAS,iBAAmC,YAAmC;AACpF,SAAO;AAAA,IACL,MAAM;AAAA,IACN;AAAA,IACA;AAAA,IACA;AAAA,IACA,iBAAiB;AAAA,IAEjB,kBAAkB,SAA0C;AAC1D,YAAM,CAAC,KAAK,MAAM,IAAI,SAAS,OAAO;AAEtC,aAAO;AAAA,QACL,cAAc;AACZ,iBAAO;AAAA,QACT;AAAA,QACA,WAAW;AACT,iBAAO;AAAA,QACT;AAAA,QACA,SAAS,MAAM;AACb,iBAAO,IAAI;AAAA,QACb;AAAA,QACA,OAAO;AAAA,QAAC;AAAA,MACV;AAAA,IACF;AAAA,IAEA,0BAA0B,EAAE,SAAS,MAAM,GAAG,SAAS;AAErD,gCAA0B,MAAM;AAC9B,YAAI,CAAC,QAAQ;AAAS;AACtB,cAAM,oBAAoB,CAAC,MAAuB;AAChD,kBAAQ,MAAM,SAAS,CAAC;AAAA,QAC1B,GAEM,OAAO,QAAQ;AACrB,oBAAK,iBAAiB,mBAAmB,iBAAiB,GAC1D,KAAK,iBAAiB,oBAAoB,iBAAiB,GAC3D,KAAK,iBAAiB,iBAAiB,iBAAiB,GACjD,MAAM;AACX,eAAK,oBAAoB,mBAAmB,iBAAiB,GAC7D,KAAK,oBAAoB,oBAAoB,iBAAiB,GAC9D,KAAK,oBAAoB,iBAAiB,iBAAiB;AAAA,QAC7D;AAAA,MACF,GAAG,CAAC,SAAS,OAAO,CAAC;AAAA,IACvB;AAAA,IAEA,uBAAuB,KAAK,UAAU;AACpC,aAAO,SAAS,IAAI,SAAS,CAAC;AAAA,IAChC;AAAA,IAEA,eAAe,CAAC,EAAE,OAAO,UAAU,OAAO,gBAAgB,QAAQ,MAAM;AACtE,YAAM,aAAa,CAAC,CAAC,eAAe,WAC9B,YAAY,WAAW,CAAC,MAAM,IAC9B,mBAAmB,WAAW,CAAC,GAE/B,CAAC,cAAc,eAAe,IAAI,CAAC,EAAE,OAAO,MAAM,SAAS,GAC3D,YAAY,WAAW,YAAY,GACnC,OAAO,MAAM,eAAe,CAAC,KAAK;AAiDxC,aA/CA,0BAA0B,MAAM;AAC9B,YAAI,CAAC,oBAAoB,CAAC,aAAa,CAAC,QAAQ;AAAS;AACzD,cAAM,OAAO,QAAQ,SACf,oBAAoB,MAAM;AAC9B,6BAAmB;AAAA,QACrB;AACA,oBAAK,iBAAiB,iBAAiB,iBAAiB,GACxD,KAAK,iBAAiB,oBAAoB,iBAAiB,GACpD,MAAM;AACX,eAAK,oBAAoB,iBAAiB,iBAAiB,GAC3D,KAAK,oBAAoB,oBAAoB,iBAAiB;AAAA,QAChE;AAAA,MACF,GAAG,CAAC,kBAAkB,SAAS,CAAC,GAmC3B,aAOL,MAAM,aAAa,KAChB,IAAI,CAAC,QAAQ;AACZ,cAAM,WAAW,WAAW,kBAAkB,GAAG,CAAC,KAAK;AACvD,eAAO,GAAG,GAAG,IAAI,QAAQ;AAAA,MAC3B,CAAC,EACA,KAAK,IAAI,GAMR,QAAQ,IAAI,aAAa,iBAAiB,MAAM,SAClD,QAAQ,KAAK,iBAAiB,OAAO,EAAE,YAAY,UAAU,CAAC,GAGzD,EAAE,MAAM,KArBN;AAAA,IAsBX;AAAA,EACF;AACF;",
4
+ "mappings": "AAAA;AAAA,EAEE;AAAA,EACA;AAAA,EAEA;AAAA,OACK;AAEP,SAAS,mBAAmB;AAC5B,SAAS,WAAkB,gBAAgB;AAEpC,SAAS,iBAAmC,YAAmC;AACpF,QAAM,oBAAoB,oBAAI,QAA4B;AAE1D,SAAO;AAAA,IACL,MAAM;AAAA,IACN;AAAA,IACA;AAAA,IACA;AAAA,IACA,iBAAiB;AAAA,IAEjB,kBAAkB,SAA4C;AAC5D,YAAM,CAAC,KAAK,MAAM,IAAI,SAAS,OAAO;AAEtC,aAAO;AAAA,QACL,cAAc;AACZ,iBAAO;AAAA,QACT;AAAA,QACA,WAAW;AACT,iBAAO;AAAA,QACT;AAAA,QACA,SAAS,MAAM;AACb,iBAAO,IAAI;AACX,gBAAM,YAAY,kBAAkB,IAAI,MAAM;AAC9C,UAAI,aACF,UAAU,QAAQ,CAAC,OAAO,GAAG,IAAI,CAAC;AAAA,QAEtC;AAAA,QACA,OAAO;AAAA,QAAC;AAAA,MACV;AAAA,IACF;AAAA,IAEA,0BAA0B,EAAE,SAAS,MAAM,GAAG,SAAS;AACrD,gBAAU,MAAM;AACd,cAAM,WAAW,MAAM,YAAY;AACnC,YAAI,QAAQ,kBAAkB,IAAI,QAAQ;AAC1C,YAAI,CAAC,OAAO;AACV,gBAAM,OAAO,oBAAI,IAAc;AAC/B,4BAAkB,IAAI,UAAU,IAAI,GACpC,QAAQ;AAAA,QACV;AACA,qBAAM,IAAI,OAAO,GACV,MAAM;AACX,iBAAO,OAAO,OAAO;AAAA,QACvB;AAAA,MACF,GAAG,CAAC,CAAC;AAAA,IACP;AAAA,IAEA,uBAAuB,KAAK,UAAU;AACpC,aAAO,SAAS,IAAI,SAAS,CAAC;AAAA,IAChC;AAAA,IAEA,eAAe,CAAC,EAAE,OAAO,UAAU,OAAO,gBAAgB,QAAQ,MAAM;AACtE,YAAM,aAAa,CAAC,CAAC,eAAe,WAC9B,YAAY,WAAW,CAAC,MAAM,IAC9B,mBAAmB,WAAW,CAAC,GAE/B,CAAC,cAAc,eAAe,IAAI,CAAC,EAAE,OAAO,MAAM,SAAS,GAC3D,YAAY,WAAW,YAAY,GACnC,OAAO,MAAM,eAAe,CAAC,KAAK;AAiDxC,aA/CA,0BAA0B,MAAM;AAC9B,YAAI,CAAC,oBAAoB,CAAC,aAAa,CAAC,QAAQ;AAAS;AACzD,cAAM,OAAO,QAAQ,SACf,oBAAoB,MAAM;AAC9B,6BAAmB;AAAA,QACrB;AACA,oBAAK,iBAAiB,iBAAiB,iBAAiB,GACxD,KAAK,iBAAiB,oBAAoB,iBAAiB,GACpD,MAAM;AACX,eAAK,oBAAoB,iBAAiB,iBAAiB,GAC3D,KAAK,oBAAoB,oBAAoB,iBAAiB;AAAA,QAChE;AAAA,MACF,GAAG,CAAC,kBAAkB,SAAS,CAAC,GAmC3B,aAOL,MAAM,aAAa,KAChB,IAAI,CAAC,QAAQ;AACZ,cAAM,WAAW,WAAW,kBAAkB,GAAG,CAAC,KAAK;AACvD,eAAO,GAAG,GAAG,IAAI,QAAQ;AAAA,MAC3B,CAAC,EACA,KAAK,IAAI,GAMR,QAAQ,IAAI,aAAa,iBAAiB,MAAM,SAClD,QAAQ,KAAK,iBAAiB,OAAO,EAAE,YAAY,UAAU,CAAC,GAGzD,EAAE,MAAM,KArBN;AAAA,IAsBX;AAAA,EACF;AACF;",
5
5
  "names": []
6
6
  }
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@tamagui/animations-css",
3
- "version": "1.75.6",
3
+ "version": "1.75.8",
4
4
  "source": "src/index.ts",
5
5
  "sideEffects": false,
6
6
  "license": "MIT",
@@ -13,12 +13,13 @@
13
13
  "dist"
14
14
  ],
15
15
  "dependencies": {
16
- "@tamagui/cubic-bezier-animator": "1.75.6",
17
- "@tamagui/use-presence": "1.75.6",
18
- "@tamagui/web": "1.75.6"
16
+ "@tamagui/cubic-bezier-animator": "1.75.8",
17
+ "@tamagui/use-presence": "1.75.8",
18
+ "@tamagui/web": "1.75.8",
19
+ "react": "^18.2.0"
19
20
  },
20
21
  "devDependencies": {
21
- "@tamagui/build": "1.75.6"
22
+ "@tamagui/build": "1.75.8"
22
23
  },
23
24
  "scripts": {
24
25
  "build": "tamagui-build",
@@ -7,9 +7,11 @@ import {
7
7
  } from '@tamagui/core'
8
8
  // import { animate } from '@tamagui/cubic-bezier-animator'
9
9
  import { usePresence } from '@tamagui/use-presence'
10
- import { useRef, useState } from 'react'
10
+ import { useEffect, useId, useState } from 'react'
11
11
 
12
12
  export function createAnimations<A extends Object>(animations: A): AnimationDriver<A> {
13
+ const reactionListeners = new WeakMap<any, Set<Function>>()
14
+
13
15
  return {
14
16
  View: Stack,
15
17
  Text: Text,
@@ -17,41 +19,41 @@ export function createAnimations<A extends Object>(animations: A): AnimationDriv
17
19
  usePresence,
18
20
  supportsCSSVars: true,
19
21
 
20
- useAnimatedNumber(initial): UniversalAnimatedNumber<number> {
22
+ useAnimatedNumber(initial): UniversalAnimatedNumber<Function> {
21
23
  const [val, setVal] = useState(initial)
22
24
 
23
25
  return {
24
26
  getInstance() {
25
- return val
27
+ return setVal
26
28
  },
27
29
  getValue() {
28
30
  return val
29
31
  },
30
32
  setValue(next) {
31
33
  setVal(next)
34
+ const listeners = reactionListeners.get(setVal)
35
+ if (listeners) {
36
+ listeners.forEach((cb) => cb(next))
37
+ }
32
38
  },
33
39
  stop() {},
34
40
  }
35
41
  },
36
42
 
37
43
  useAnimatedNumberReaction({ hostRef, value }, onValue) {
38
- // doesn't make much sense given value the animated value is a state in this driver, but this is compatible
39
- useIsomorphicLayoutEffect(() => {
40
- if (!hostRef.current) return
41
- const onTransitionEvent = (e: TransitionEvent) => {
42
- onValue(value.getValue())
44
+ useEffect(() => {
45
+ const instance = value.getInstance()
46
+ let queue = reactionListeners.get(instance)
47
+ if (!queue) {
48
+ const next = new Set<Function>()
49
+ reactionListeners.set(instance, next)
50
+ queue = next!
43
51
  }
44
-
45
- const node = hostRef.current as HTMLElement
46
- node.addEventListener('transitionstart', onTransitionEvent)
47
- node.addEventListener('transitioncancel', onTransitionEvent)
48
- node.addEventListener('transitionend', onTransitionEvent)
52
+ queue.add(onValue)
49
53
  return () => {
50
- node.removeEventListener('transitionstart', onTransitionEvent)
51
- node.removeEventListener('transitioncancel', onTransitionEvent)
52
- node.removeEventListener('transitionend', onTransitionEvent)
54
+ queue?.delete(onValue)
53
55
  }
54
- }, [hostRef, onValue])
56
+ }, [])
55
57
  },
56
58
 
57
59
  useAnimatedNumberStyle(val, getStyle) {
@@ -1 +1 @@
1
- {"version":3,"file":"createAnimations.d.ts","sourceRoot":"","sources":["../src/createAnimations.tsx"],"names":[],"mappings":"AAAA,OAAO,EACL,eAAe,EAKhB,MAAM,eAAe,CAAA;AAKtB,wBAAgB,gBAAgB,CAAC,CAAC,SAAS,MAAM,EAAE,UAAU,EAAE,CAAC,GAAG,eAAe,CAAC,CAAC,CAAC,CAkIpF"}
1
+ {"version":3,"file":"createAnimations.d.ts","sourceRoot":"","sources":["../src/createAnimations.tsx"],"names":[],"mappings":"AAAA,OAAO,EACL,eAAe,EAKhB,MAAM,eAAe,CAAA;AAKtB,wBAAgB,gBAAgB,CAAC,CAAC,SAAS,MAAM,EAAE,UAAU,EAAE,CAAC,GAAG,eAAe,CAAC,CAAC,CAAC,CAoIpF"}