@tamagui/animation-helpers 2.7.7 → 3.0.0-beta.1097.1

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.
Files changed (79) hide show
  1. package/dist/cjs/index.cjs +32 -21
  2. package/dist/cjs/index.native.cjs +46 -0
  3. package/dist/cjs/index.native.js +33 -21
  4. package/dist/cjs/index.native.js.map +1 -1
  5. package/dist/cjs/presets.cjs +77 -0
  6. package/dist/cjs/presets.native.cjs +79 -0
  7. package/dist/cjs/presets.native.js +81 -0
  8. package/dist/cjs/presets.native.js.map +1 -0
  9. package/dist/cjs/propertyNames.cjs +91 -0
  10. package/dist/cjs/propertyNames.native.cjs +95 -0
  11. package/dist/cjs/propertyNames.native.js +97 -0
  12. package/dist/cjs/propertyNames.native.js.map +1 -0
  13. package/dist/cjs/resolveTransition.cjs +345 -0
  14. package/dist/cjs/resolveTransition.native.cjs +424 -0
  15. package/dist/cjs/resolveTransition.native.js +426 -0
  16. package/dist/cjs/resolveTransition.native.js.map +1 -0
  17. package/dist/cjs/transitionResolver.cjs +34 -0
  18. package/dist/cjs/transitionResolver.native.cjs +37 -0
  19. package/dist/cjs/transitionResolver.native.js +39 -0
  20. package/dist/cjs/transitionResolver.native.js.map +1 -0
  21. package/dist/cjs/types.cjs +9 -11
  22. package/dist/cjs/types.native.cjs +18 -0
  23. package/dist/cjs/types.native.js +9 -10
  24. package/dist/cjs/types.native.js.map +1 -1
  25. package/dist/esm/index.js +6 -3
  26. package/dist/esm/index.mjs +6 -3
  27. package/dist/esm/index.native.js +6 -3
  28. package/dist/esm/presets.mjs +57 -0
  29. package/dist/esm/presets.mjs.map +1 -0
  30. package/dist/esm/presets.native.js +57 -0
  31. package/dist/esm/presets.native.js.map +1 -0
  32. package/dist/esm/propertyNames.mjs +67 -0
  33. package/dist/esm/propertyNames.mjs.map +1 -0
  34. package/dist/esm/propertyNames.native.js +69 -0
  35. package/dist/esm/propertyNames.native.js.map +1 -0
  36. package/dist/esm/resolveTransition.mjs +315 -0
  37. package/dist/esm/resolveTransition.mjs.map +1 -0
  38. package/dist/esm/resolveTransition.native.js +392 -0
  39. package/dist/esm/resolveTransition.native.js.map +1 -0
  40. package/dist/esm/transitionResolver.mjs +11 -0
  41. package/dist/esm/transitionResolver.mjs.map +1 -0
  42. package/dist/esm/transitionResolver.native.js +12 -0
  43. package/dist/esm/transitionResolver.native.js.map +1 -0
  44. package/dist/esm/types.mjs +0 -2
  45. package/dist/esm/types.native.js +0 -2
  46. package/package.json +23 -2
  47. package/src/index.ts +39 -9
  48. package/src/presets.ts +40 -0
  49. package/src/propertyNames.ts +78 -0
  50. package/src/resolveTransition.ts +503 -0
  51. package/src/transitionResolver.ts +35 -0
  52. package/src/types.ts +42 -46
  53. package/types/index.d.ts +6 -2
  54. package/types/index.d.ts.map +2 -2
  55. package/types/presets.d.ts +79 -0
  56. package/types/presets.d.ts.map +11 -0
  57. package/types/propertyNames.d.ts +13 -0
  58. package/types/propertyNames.d.ts.map +11 -0
  59. package/types/resolveTransition.d.ts +108 -0
  60. package/types/resolveTransition.d.ts.map +11 -0
  61. package/types/transitionResolver.d.ts +30 -0
  62. package/types/transitionResolver.d.ts.map +11 -0
  63. package/types/types.d.ts +35 -42
  64. package/types/types.d.ts.map +2 -2
  65. package/dist/cjs/normalizeTransition.cjs +0 -164
  66. package/dist/cjs/normalizeTransition.native.js +0 -231
  67. package/dist/cjs/normalizeTransition.native.js.map +0 -1
  68. package/dist/esm/index.js.map +0 -1
  69. package/dist/esm/index.mjs.map +0 -1
  70. package/dist/esm/index.native.js.map +0 -1
  71. package/dist/esm/normalizeTransition.mjs +0 -134
  72. package/dist/esm/normalizeTransition.mjs.map +0 -1
  73. package/dist/esm/normalizeTransition.native.js +0 -198
  74. package/dist/esm/normalizeTransition.native.js.map +0 -1
  75. package/dist/esm/types.mjs.map +0 -1
  76. package/dist/esm/types.native.js.map +0 -1
  77. package/src/normalizeTransition.ts +0 -255
  78. package/types/normalizeTransition.d.ts +0 -54
  79. package/types/normalizeTransition.d.ts.map +0 -11
@@ -0,0 +1 @@
1
+ {"version":3,"file":"resolveTransition.js","names":[],"sources":["esm/resolveTransition.js"],"sourcesContent":["import {\n parseTransition,\n parseTransitionObject,\n springFromDurationBounce,\n springSettleTime,\n springToDurationBounce,\n springToLinearEasing\n} from \"@tamagui/style-grammar/transitions\";\nimport { canonicalTransitionProperty } from \"./propertyNames\";\nimport { setTransitionResolver } from \"./transitionResolver\";\nconst emptyResolved = {\n entries: [],\n all: null,\n byProperty: {},\n none: false,\n fused: false,\n enter: null,\n exit: null,\n diagnostics: []\n};\nfunction forAnimationState(resolved, state) {\n if (state === \"enter\" && resolved.enter) return resolved.enter;\n if (state === \"exit\" && resolved.exit) return resolved.exit;\n return resolved;\n}\nfunction timeToMs(value) {\n return value.endsWith(\"ms\") ? Number.parseFloat(value) : Number.parseFloat(value) * 1e3;\n}\nfunction springTiming(durationMs, bounce, extra) {\n const mass = typeof extra?.mass === \"number\" ? extra.mass : 1;\n const physics = springFromDurationBounce({ duration: durationMs, bounce }, mass);\n return {\n kind: \"spring\",\n durationMs,\n bounce,\n // authored physics win over the derived pair, so the escape hatch is exact\n stiffness: typeof extra?.stiffness === \"number\" ? extra.stiffness : physics.stiffness,\n damping: typeof extra?.damping === \"number\" ? extra.damping : physics.damping,\n mass,\n extra\n };\n}\nfunction presetToTiming(preset) {\n if (typeof preset === \"string\") {\n const parsed = parseTransition(preset);\n if (!parsed.ok || parsed.value.kind !== \"transition\") return null;\n const entry = parsed.value.entries[0];\n if (!entry) return null;\n return timingToDriver(entry.timing, null);\n }\n if (!preset || typeof preset !== \"object\") return null;\n const config = preset;\n const duration = typeof config.duration === \"number\" ? config.duration : void 0;\n const hasPhysics = typeof config.stiffness === \"number\" || typeof config.damping === \"number\";\n const stiffness = typeof config.stiffness === \"number\" ? config.stiffness : void 0;\n const damping = typeof config.damping === \"number\" ? config.damping : void 0;\n const isSpring = config.type === \"spring\" || typeof config.bounce === \"number\" || hasPhysics;\n if (isSpring) {\n const mass = typeof config.mass === \"number\" ? config.mass : 1;\n if (stiffness !== void 0) {\n const canonical = springToDurationBounce({\n stiffness,\n damping: damping ?? 2 * Math.sqrt(stiffness * mass),\n mass\n });\n return {\n kind: \"spring\",\n durationMs: duration ?? canonical.duration,\n bounce: typeof config.bounce === \"number\" ? config.bounce : canonical.bounce,\n stiffness,\n damping: damping ?? 2 * Math.sqrt(stiffness * mass),\n mass,\n extra: config\n };\n }\n if (duration !== void 0) {\n return springTiming(\n duration,\n typeof config.bounce === \"number\" ? config.bounce : 0,\n config\n );\n }\n return null;\n }\n if (duration === void 0) return null;\n const easing = typeof config.easing === \"string\" ? config.easing : \"ease\";\n return { kind: \"timing\", durationMs: duration, easing };\n}\nfunction timingToDriver(timing, animations) {\n if (timing.type === \"css\") {\n return {\n kind: \"timing\",\n durationMs: timeToMs(timing.duration),\n easing: timing.timingFunction\n };\n }\n if (timing.type === \"spring\") {\n return springTiming(\n timeToMs(timing.duration),\n timing.bounce,\n timing.config\n );\n }\n const preset = animations?.[timing.name];\n if (preset === void 0) return null;\n const base = presetToTiming(preset);\n if (!base || !timing.config) return base;\n const overrides = timing.config;\n if (base.kind === \"spring\" || typeof overrides.bounce === \"number\") {\n const overrideDuration = typeof overrides.duration === \"number\" ? overrides.duration : typeof overrides.duration === \"string\" ? timeToMs(overrides.duration) : void 0;\n const overrideBounce = typeof overrides.bounce === \"number\" ? overrides.bounce : void 0;\n const durationMs = overrideDuration ?? base.durationMs;\n const bounce = overrideBounce ?? (base.kind === \"spring\" ? base.bounce : 0);\n let carried = base.kind === \"spring\" ? base.extra : void 0;\n if (carried && (overrideDuration !== void 0 || overrideBounce !== void 0)) {\n const { stiffness, damping, ...rest } = carried;\n carried = rest;\n }\n return springTiming(durationMs, bounce, { ...carried, ...overrides });\n }\n return {\n kind: \"timing\",\n durationMs: typeof overrides.duration === \"number\" ? overrides.duration : typeof overrides.duration === \"string\" ? timeToMs(overrides.duration) : base.durationMs,\n easing: typeof overrides.easing === \"string\" ? overrides.easing : base.easing\n };\n}\nconst namedEasings = {\n linear: [0, 0, 1, 1],\n ease: [0.25, 0.1, 0.25, 1],\n \"ease-in\": [0.42, 0, 1, 1],\n \"ease-out\": [0, 0, 0.58, 1],\n \"ease-in-out\": [0.42, 0, 0.58, 1]\n};\nfunction easingToBezier(easing) {\n const named = namedEasings[easing];\n if (named) return named;\n if (!easing.startsWith(\"cubic-bezier(\")) return null;\n const parts = easing.slice(\"cubic-bezier(\".length, -1).split(\",\");\n if (parts.length !== 4) return null;\n const points = parts.map((part) => Number.parseFloat(part));\n if (points.some((point) => !Number.isFinite(point))) return null;\n return points;\n}\nconst cacheByAnimations = /* @__PURE__ */ new WeakMap();\nconst objectCache = /* @__PURE__ */ new WeakMap();\nconst noAnimations = {};\nfunction resolveTransition(transition, options = {}) {\n if (transition == null || transition === \"\") return emptyResolved;\n const animations = options.animations ?? null;\n const cacheKey = animations ?? noAnimations;\n if (typeof transition === \"string\") {\n let byValue = cacheByAnimations.get(cacheKey);\n if (!byValue) {\n byValue = /* @__PURE__ */ new Map();\n cacheByAnimations.set(cacheKey, byValue);\n }\n const hit2 = byValue.get(transition);\n if (hit2) return hit2;\n const built2 = buildResolved(transition, animations, options.shorthands ?? null);\n if (byValue.size > 2048) byValue.clear();\n byValue.set(transition, built2);\n return built2;\n }\n if (typeof transition !== \"object\") return emptyResolved;\n const hit = objectCache.get(transition);\n if (hit) return hit;\n const built = buildResolved(transition, animations, options.shorthands ?? null);\n objectCache.set(transition, built);\n return built;\n}\nfunction buildResolved(transition, animations, shorthands) {\n const presetNames = animations ? new Set(Object.keys(animations)) : void 0;\n const parsed = parseTransitionObject(transition, presetNames);\n if (!parsed.ok) {\n return { ...emptyResolved, diagnostics: parsed.diagnostics };\n }\n if (parsed.value.kind !== \"transition\") return emptyResolved;\n return fromEntries(\n parsed.value.entries,\n animations,\n shorthands,\n parsed.value.enter ? fromEntries(parsed.value.enter, animations, shorthands, null, null) : null,\n parsed.value.exit ? fromEntries(parsed.value.exit, animations, shorthands, null, null) : null\n );\n}\nconst transformFamily = [\"transform\", \"translate\", \"scale\", \"rotate\"];\nfunction fromEntries(source, animations, shorthands, enter, exit) {\n const entries = [];\n const byProperty = {};\n const diagnostics = [];\n let all = null;\n let none = false;\n let fused = false;\n for (const entry of source) {\n if (entry.property === \"none\") {\n none = true;\n continue;\n }\n if (entry.timing.type !== \"css\") fused = true;\n const timing = timingToDriver(entry.timing, animations);\n if (!timing) {\n diagnostics.push({\n code: \"transition-invalid-token\",\n token: entry.timing.type === \"preset\" ? entry.timing.name : void 0,\n message: entry.timing.type === \"preset\" ? `\"${entry.timing.name}\" is not a configured animation` : \"transition timing could not be resolved\"\n });\n continue;\n }\n const expanded = shorthands?.[entry.property] ?? entry.property;\n const property = canonicalTransitionProperty(expanded);\n const delayMs = timeToMs(entry.delay);\n for (const name of expanded === \"transform\" ? transformFamily : [property]) {\n const resolved = {\n property: name,\n timing,\n delayMs,\n behavior: entry.behavior\n };\n entries.push(resolved);\n if (name === \"all\") all = resolved;\n else byProperty[name] = resolved;\n }\n }\n return { entries, all, byProperty, none, fused, enter, exit, diagnostics };\n}\nfunction getTransitionForKey(resolved, key) {\n if (resolved.none) return null;\n const direct = resolved.byProperty[canonicalTransitionProperty(key)];\n if (direct) return direct;\n return resolved.all;\n}\nfunction hasTransition(resolved) {\n return !resolved.none && resolved.entries.length > 0;\n}\nfunction getSettleMs(timing) {\n if (timing.kind === \"timing\") return timing.durationMs;\n return springSettleTime({ duration: timing.durationMs, bounce: timing.bounce });\n}\nfunction getMaxDurationMs(resolved) {\n let max = 0;\n for (const entry of resolved.entries) {\n const total = getSettleMs(entry.timing) + entry.delayMs;\n if (total > max) max = total;\n }\n return max;\n}\nconst linearEasingCache = /* @__PURE__ */ new Map();\nfunction entryToCSS(entry) {\n const delay = entry.delayMs ? ` ${entry.delayMs}ms` : \"\";\n const behavior = entry.behavior === \"allow-discrete\" ? \" allow-discrete\" : \"\";\n if (entry.timing.kind === \"timing\") {\n return `${entry.property} ${entry.timing.durationMs}ms ${entry.timing.easing}${delay}${behavior}`;\n }\n const key = `${entry.timing.durationMs}/${entry.timing.bounce}`;\n let spring = linearEasingCache.get(key);\n if (!spring) {\n spring = springToLinearEasing({\n duration: entry.timing.durationMs,\n bounce: entry.timing.bounce\n });\n if (linearEasingCache.size > 256) linearEasingCache.clear();\n linearEasingCache.set(key, spring);\n }\n return `${entry.property} ${Math.round(spring.durationMs)}ms ${spring.easing}${delay}${behavior}`;\n}\nfunction toCSSTransition(resolved) {\n if (resolved.none) return \"none\";\n if (!resolved.entries.length) return void 0;\n let out = \"\";\n for (const entry of resolved.entries) {\n out += `${out ? \", \" : \"\"}${entryToCSS(entry)}`;\n }\n return out || void 0;\n}\nsetTransitionResolver({ resolve: resolveTransition, toCSS: toCSSTransition });\nexport {\n easingToBezier,\n entryToCSS,\n forAnimationState,\n getMaxDurationMs,\n getSettleMs,\n getTransitionForKey,\n hasTransition,\n presetToTiming,\n resolveTransition,\n toCSSTransition\n};\n//# sourceMappingURL=resolveTransition.js.map\n"],"mappings":"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"}
@@ -0,0 +1,392 @@
1
+ import { parseTransition, parseTransitionObject, springFromDurationBounce, springSettleTime, springToDurationBounce, springToLinearEasing } from "@tamagui/style-grammar/transitions";
2
+ import { canonicalTransitionProperty } from "./propertyNames.native.js";
3
+ import { setTransitionResolver } from "./transitionResolver.native.js";
4
+
5
+ var emptyResolved = {
6
+ entries: [],
7
+ all: null,
8
+ byProperty: {},
9
+ none: false,
10
+ fused: false,
11
+ enter: null,
12
+ exit: null,
13
+ diagnostics: []
14
+ };
15
+ function forAnimationState(resolved, state) {
16
+ if (state === "enter" && resolved.enter) return resolved.enter;
17
+ if (state === "exit" && resolved.exit) return resolved.exit;
18
+ return resolved;
19
+ }
20
+ function timeToMs(value) {
21
+ return value.endsWith("ms") ? Number.parseFloat(value) : Number.parseFloat(value) * 1e3;
22
+ }
23
+ function springTiming(durationMs, bounce, extra) {
24
+ var mass = typeof (extra === null || extra === void 0 ? void 0 : extra.mass) === "number" ? extra.mass : 1;
25
+ var physics = springFromDurationBounce({
26
+ duration: durationMs,
27
+ bounce
28
+ }, mass);
29
+ return {
30
+ kind: "spring",
31
+ durationMs,
32
+ bounce,
33
+ stiffness: typeof (extra === null || extra === void 0 ? void 0 : extra.stiffness) === "number" ? extra.stiffness : physics.stiffness,
34
+ damping: typeof (extra === null || extra === void 0 ? void 0 : extra.damping) === "number" ? extra.damping : physics.damping,
35
+ mass,
36
+ extra
37
+ };
38
+ }
39
+ function presetToTiming(preset) {
40
+ if (typeof preset === "string") {
41
+ var parsed = parseTransition(preset);
42
+ if (!parsed.ok || parsed.value.kind !== "transition") return null;
43
+ var entry = parsed.value.entries[0];
44
+ if (!entry) return null;
45
+ return timingToDriver(entry.timing, null);
46
+ }
47
+ if (!preset || typeof preset !== "object") return null;
48
+ var config = preset;
49
+ var duration = typeof config.duration === "number" ? config.duration : void 0;
50
+ var hasPhysics = typeof config.stiffness === "number" || typeof config.damping === "number";
51
+ var stiffness = typeof config.stiffness === "number" ? config.stiffness : void 0;
52
+ var damping = typeof config.damping === "number" ? config.damping : void 0;
53
+ var isSpring = config.type === "spring" || typeof config.bounce === "number" || hasPhysics;
54
+ if (isSpring) {
55
+ var mass = typeof config.mass === "number" ? config.mass : 1;
56
+ if (stiffness !== void 0) {
57
+ var canonical = springToDurationBounce({
58
+ stiffness,
59
+ damping: damping !== null && damping !== void 0 ? damping : 2 * Math.sqrt(stiffness * mass),
60
+ mass
61
+ });
62
+ return {
63
+ kind: "spring",
64
+ durationMs: duration !== null && duration !== void 0 ? duration : canonical.duration,
65
+ bounce: typeof config.bounce === "number" ? config.bounce : canonical.bounce,
66
+ stiffness,
67
+ damping: damping !== null && damping !== void 0 ? damping : 2 * Math.sqrt(stiffness * mass),
68
+ mass,
69
+ extra: config
70
+ };
71
+ }
72
+ if (duration !== void 0) {
73
+ return springTiming(duration, typeof config.bounce === "number" ? config.bounce : 0, config);
74
+ }
75
+ return null;
76
+ }
77
+ if (duration === void 0) return null;
78
+ var easing = typeof config.easing === "string" ? config.easing : "ease";
79
+ return {
80
+ kind: "timing",
81
+ durationMs: duration,
82
+ easing
83
+ };
84
+ }
85
+ function timingToDriver(timing, animations) {
86
+ if (timing.type === "css") {
87
+ return {
88
+ kind: "timing",
89
+ durationMs: timeToMs(timing.duration),
90
+ easing: timing.timingFunction
91
+ };
92
+ }
93
+ if (timing.type === "spring") {
94
+ return springTiming(timeToMs(timing.duration), timing.bounce, timing.config);
95
+ }
96
+ var preset = animations === null || animations === void 0 ? void 0 : animations[timing.name];
97
+ if (preset === void 0) return null;
98
+ var base = presetToTiming(preset);
99
+ if (!base || !timing.config) return base;
100
+ var overrides = timing.config;
101
+ if (base.kind === "spring" || typeof overrides.bounce === "number") {
102
+ var overrideDuration = typeof overrides.duration === "number" ? overrides.duration : typeof overrides.duration === "string" ? timeToMs(overrides.duration) : void 0;
103
+ var overrideBounce = typeof overrides.bounce === "number" ? overrides.bounce : void 0;
104
+ var durationMs = overrideDuration !== null && overrideDuration !== void 0 ? overrideDuration : base.durationMs;
105
+ var bounce = overrideBounce !== null && overrideBounce !== void 0 ? overrideBounce : base.kind === "spring" ? base.bounce : 0;
106
+ var carried = base.kind === "spring" ? base.extra : void 0;
107
+ if (carried && (overrideDuration !== void 0 || overrideBounce !== void 0)) {
108
+ var { stiffness, damping, ...rest } = carried;
109
+ carried = rest;
110
+ }
111
+ return springTiming(durationMs, bounce, {
112
+ ...carried,
113
+ ...overrides
114
+ });
115
+ }
116
+ return {
117
+ kind: "timing",
118
+ durationMs: typeof overrides.duration === "number" ? overrides.duration : typeof overrides.duration === "string" ? timeToMs(overrides.duration) : base.durationMs,
119
+ easing: typeof overrides.easing === "string" ? overrides.easing : base.easing
120
+ };
121
+ }
122
+ var namedEasings = {
123
+ linear: [
124
+ 0,
125
+ 0,
126
+ 1,
127
+ 1
128
+ ],
129
+ ease: [
130
+ .25,
131
+ .1,
132
+ .25,
133
+ 1
134
+ ],
135
+ "ease-in": [
136
+ .42,
137
+ 0,
138
+ 1,
139
+ 1
140
+ ],
141
+ "ease-out": [
142
+ 0,
143
+ 0,
144
+ .58,
145
+ 1
146
+ ],
147
+ "ease-in-out": [
148
+ .42,
149
+ 0,
150
+ .58,
151
+ 1
152
+ ]
153
+ };
154
+ function easingToBezier(easing) {
155
+ var named = namedEasings[easing];
156
+ if (named) return named;
157
+ if (!easing.startsWith("cubic-bezier(")) return null;
158
+ var parts = easing.slice("cubic-bezier(".length, -1).split(",");
159
+ if (parts.length !== 4) return null;
160
+ var points = parts.map(function(part) {
161
+ return Number.parseFloat(part);
162
+ });
163
+ if (points.some(function(point) {
164
+ return !Number.isFinite(point);
165
+ })) return null;
166
+ return points;
167
+ }
168
+ var cacheByAnimations = /* @__PURE__ */ new WeakMap();
169
+ var objectCache = /* @__PURE__ */ new WeakMap();
170
+ var noAnimations = {};
171
+ function resolveTransition(transition) {
172
+ var options = arguments.length > 1 && arguments[1] !== void 0 ? arguments[1] : {};
173
+ if (transition == null || transition === "") return emptyResolved;
174
+ var _options_animations;
175
+ var animations = (_options_animations = options.animations) !== null && _options_animations !== void 0 ? _options_animations : null;
176
+ var cacheKey = animations !== null && animations !== void 0 ? animations : noAnimations;
177
+ if (typeof transition === "string") {
178
+ var byValue = cacheByAnimations.get(cacheKey);
179
+ if (!byValue) {
180
+ byValue = /* @__PURE__ */ new Map();
181
+ cacheByAnimations.set(cacheKey, byValue);
182
+ }
183
+ var hit = byValue.get(transition);
184
+ if (hit) return hit;
185
+ var _options_shorthands;
186
+ var built = buildResolved(transition, animations, (_options_shorthands = options.shorthands) !== null && _options_shorthands !== void 0 ? _options_shorthands : null);
187
+ if (byValue.size > 2048) byValue.clear();
188
+ byValue.set(transition, built);
189
+ return built;
190
+ }
191
+ if (typeof transition !== "object") return emptyResolved;
192
+ var hit1 = objectCache.get(transition);
193
+ if (hit1) return hit1;
194
+ var _options_shorthands1;
195
+ var built1 = buildResolved(transition, animations, (_options_shorthands1 = options.shorthands) !== null && _options_shorthands1 !== void 0 ? _options_shorthands1 : null);
196
+ objectCache.set(transition, built1);
197
+ return built1;
198
+ }
199
+ function buildResolved(transition, animations, shorthands) {
200
+ var presetNames = animations ? new Set(Object.keys(animations)) : void 0;
201
+ var parsed = parseTransitionObject(transition, presetNames);
202
+ if (!parsed.ok) {
203
+ return {
204
+ ...emptyResolved,
205
+ diagnostics: parsed.diagnostics
206
+ };
207
+ }
208
+ if (parsed.value.kind !== "transition") return emptyResolved;
209
+ return fromEntries(parsed.value.entries, animations, shorthands, parsed.value.enter ? fromEntries(parsed.value.enter, animations, shorthands, null, null) : null, parsed.value.exit ? fromEntries(parsed.value.exit, animations, shorthands, null, null) : null);
210
+ }
211
+ var transformFamily = [
212
+ "transform",
213
+ "translate",
214
+ "scale",
215
+ "rotate"
216
+ ];
217
+ function fromEntries(source, animations, shorthands, enter, exit) {
218
+ var entries = [];
219
+ var byProperty = {};
220
+ var diagnostics = [];
221
+ var all = null;
222
+ var none = false;
223
+ var fused = false;
224
+ var _iteratorNormalCompletion = true, _didIteratorError = false, _iteratorError = void 0;
225
+ try {
226
+ for (var _iterator = source[Symbol.iterator](), _step; !(_iteratorNormalCompletion = (_step = _iterator.next()).done); _iteratorNormalCompletion = true) {
227
+ var entry = _step.value;
228
+ if (entry.property === "none") {
229
+ none = true;
230
+ continue;
231
+ }
232
+ if (entry.timing.type !== "css") fused = true;
233
+ var timing = timingToDriver(entry.timing, animations);
234
+ if (!timing) {
235
+ diagnostics.push({
236
+ code: "transition-invalid-token",
237
+ token: entry.timing.type === "preset" ? entry.timing.name : void 0,
238
+ message: entry.timing.type === "preset" ? `"${entry.timing.name}" is not a configured animation` : "transition timing could not be resolved"
239
+ });
240
+ continue;
241
+ }
242
+ var _shorthands_entry_property;
243
+ var expanded = (_shorthands_entry_property = shorthands === null || shorthands === void 0 ? void 0 : shorthands[entry.property]) !== null && _shorthands_entry_property !== void 0 ? _shorthands_entry_property : entry.property;
244
+ var property = canonicalTransitionProperty(expanded);
245
+ var delayMs = timeToMs(entry.delay);
246
+ var _iteratorNormalCompletion1 = true, _didIteratorError1 = false, _iteratorError1 = void 0;
247
+ try {
248
+ for (var _iterator1 = (expanded === "transform" ? transformFamily : [property])[Symbol.iterator](), _step1; !(_iteratorNormalCompletion1 = (_step1 = _iterator1.next()).done); _iteratorNormalCompletion1 = true) {
249
+ var name = _step1.value;
250
+ var resolved = {
251
+ property: name,
252
+ timing,
253
+ delayMs,
254
+ behavior: entry.behavior
255
+ };
256
+ entries.push(resolved);
257
+ if (name === "all") all = resolved;
258
+ else byProperty[name] = resolved;
259
+ }
260
+ } catch (err) {
261
+ _didIteratorError1 = true;
262
+ _iteratorError1 = err;
263
+ } finally {
264
+ try {
265
+ if (!_iteratorNormalCompletion1 && _iterator1.return != null) {
266
+ _iterator1.return();
267
+ }
268
+ } finally {
269
+ if (_didIteratorError1) {
270
+ throw _iteratorError1;
271
+ }
272
+ }
273
+ }
274
+ }
275
+ } catch (err) {
276
+ _didIteratorError = true;
277
+ _iteratorError = err;
278
+ } finally {
279
+ try {
280
+ if (!_iteratorNormalCompletion && _iterator.return != null) {
281
+ _iterator.return();
282
+ }
283
+ } finally {
284
+ if (_didIteratorError) {
285
+ throw _iteratorError;
286
+ }
287
+ }
288
+ }
289
+ return {
290
+ entries,
291
+ all,
292
+ byProperty,
293
+ none,
294
+ fused,
295
+ enter,
296
+ exit,
297
+ diagnostics
298
+ };
299
+ }
300
+ function getTransitionForKey(resolved, key) {
301
+ if (resolved.none) return null;
302
+ var direct = resolved.byProperty[canonicalTransitionProperty(key)];
303
+ if (direct) return direct;
304
+ return resolved.all;
305
+ }
306
+ function hasTransition(resolved) {
307
+ return !resolved.none && resolved.entries.length > 0;
308
+ }
309
+ function getSettleMs(timing) {
310
+ if (timing.kind === "timing") return timing.durationMs;
311
+ return springSettleTime({
312
+ duration: timing.durationMs,
313
+ bounce: timing.bounce
314
+ });
315
+ }
316
+ function getMaxDurationMs(resolved) {
317
+ var max = 0;
318
+ var _iteratorNormalCompletion = true, _didIteratorError = false, _iteratorError = void 0;
319
+ try {
320
+ for (var _iterator = resolved.entries[Symbol.iterator](), _step; !(_iteratorNormalCompletion = (_step = _iterator.next()).done); _iteratorNormalCompletion = true) {
321
+ var entry = _step.value;
322
+ var total = getSettleMs(entry.timing) + entry.delayMs;
323
+ if (total > max) max = total;
324
+ }
325
+ } catch (err) {
326
+ _didIteratorError = true;
327
+ _iteratorError = err;
328
+ } finally {
329
+ try {
330
+ if (!_iteratorNormalCompletion && _iterator.return != null) {
331
+ _iterator.return();
332
+ }
333
+ } finally {
334
+ if (_didIteratorError) {
335
+ throw _iteratorError;
336
+ }
337
+ }
338
+ }
339
+ return max;
340
+ }
341
+ var linearEasingCache = /* @__PURE__ */ new Map();
342
+ function entryToCSS(entry) {
343
+ var delay = entry.delayMs ? ` ${entry.delayMs}ms` : "";
344
+ var behavior = entry.behavior === "allow-discrete" ? " allow-discrete" : "";
345
+ if (entry.timing.kind === "timing") {
346
+ return `${entry.property} ${entry.timing.durationMs}ms ${entry.timing.easing}${delay}${behavior}`;
347
+ }
348
+ var key = `${entry.timing.durationMs}/${entry.timing.bounce}`;
349
+ var spring = linearEasingCache.get(key);
350
+ if (!spring) {
351
+ spring = springToLinearEasing({
352
+ duration: entry.timing.durationMs,
353
+ bounce: entry.timing.bounce
354
+ });
355
+ if (linearEasingCache.size > 256) linearEasingCache.clear();
356
+ linearEasingCache.set(key, spring);
357
+ }
358
+ return `${entry.property} ${Math.round(spring.durationMs)}ms ${spring.easing}${delay}${behavior}`;
359
+ }
360
+ function toCSSTransition(resolved) {
361
+ if (resolved.none) return "none";
362
+ if (!resolved.entries.length) return void 0;
363
+ var out = "";
364
+ var _iteratorNormalCompletion = true, _didIteratorError = false, _iteratorError = void 0;
365
+ try {
366
+ for (var _iterator = resolved.entries[Symbol.iterator](), _step; !(_iteratorNormalCompletion = (_step = _iterator.next()).done); _iteratorNormalCompletion = true) {
367
+ var entry = _step.value;
368
+ out += `${out ? ", " : ""}${entryToCSS(entry)}`;
369
+ }
370
+ } catch (err) {
371
+ _didIteratorError = true;
372
+ _iteratorError = err;
373
+ } finally {
374
+ try {
375
+ if (!_iteratorNormalCompletion && _iterator.return != null) {
376
+ _iterator.return();
377
+ }
378
+ } finally {
379
+ if (_didIteratorError) {
380
+ throw _iteratorError;
381
+ }
382
+ }
383
+ }
384
+ return out || void 0;
385
+ }
386
+ setTransitionResolver({
387
+ resolve: resolveTransition,
388
+ toCSS: toCSSTransition
389
+ });
390
+
391
+ export { easingToBezier, entryToCSS, forAnimationState, getMaxDurationMs, getSettleMs, getTransitionForKey, hasTransition, presetToTiming, resolveTransition, toCSSTransition };
392
+ //# sourceMappingURL=resolveTransition.native.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"resolveTransition.native.js","names":[],"sources":["esm/resolveTransition.native.js"],"sourcesContent":["import { parseTransition, parseTransitionObject, springFromDurationBounce, springSettleTime, springToDurationBounce, springToLinearEasing } from \"@tamagui/style-grammar/transitions\";\nimport { canonicalTransitionProperty } from \"./propertyNames\";\nimport { setTransitionResolver } from \"./transitionResolver\";\nvar emptyResolved = {\n entries: [],\n all: null,\n byProperty: {},\n none: false,\n fused: false,\n enter: null,\n exit: null,\n diagnostics: []\n};\nfunction forAnimationState(resolved, state) {\n if (state === \"enter\" && resolved.enter) return resolved.enter;\n if (state === \"exit\" && resolved.exit) return resolved.exit;\n return resolved;\n}\nfunction timeToMs(value) {\n return value.endsWith(\"ms\") ? Number.parseFloat(value) : Number.parseFloat(value) * 1e3;\n}\nfunction springTiming(durationMs, bounce, extra) {\n var mass = typeof (extra === null || extra === void 0 ? void 0 : extra.mass) === \"number\" ? extra.mass : 1;\n var physics = springFromDurationBounce({\n duration: durationMs,\n bounce\n }, mass);\n return {\n kind: \"spring\",\n durationMs,\n bounce,\n // authored physics win over the derived pair, so the escape hatch is exact\n stiffness: typeof (extra === null || extra === void 0 ? void 0 : extra.stiffness) === \"number\" ? extra.stiffness : physics.stiffness,\n damping: typeof (extra === null || extra === void 0 ? void 0 : extra.damping) === \"number\" ? extra.damping : physics.damping,\n mass,\n extra\n };\n}\nfunction presetToTiming(preset) {\n if (typeof preset === \"string\") {\n var parsed = parseTransition(preset);\n if (!parsed.ok || parsed.value.kind !== \"transition\") return null;\n var entry = parsed.value.entries[0];\n if (!entry) return null;\n return timingToDriver(entry.timing, null);\n }\n if (!preset || typeof preset !== \"object\") return null;\n var config = preset;\n var duration = typeof config.duration === \"number\" ? config.duration : void 0;\n var hasPhysics = typeof config.stiffness === \"number\" || typeof config.damping === \"number\";\n var stiffness = typeof config.stiffness === \"number\" ? config.stiffness : void 0;\n var damping = typeof config.damping === \"number\" ? config.damping : void 0;\n var isSpring = config.type === \"spring\" || typeof config.bounce === \"number\" || hasPhysics;\n if (isSpring) {\n var mass = typeof config.mass === \"number\" ? config.mass : 1;\n if (stiffness !== void 0) {\n var canonical = springToDurationBounce({\n stiffness,\n damping: damping !== null && damping !== void 0 ? damping : 2 * Math.sqrt(stiffness * mass),\n mass\n });\n return {\n kind: \"spring\",\n durationMs: duration !== null && duration !== void 0 ? duration : canonical.duration,\n bounce: typeof config.bounce === \"number\" ? config.bounce : canonical.bounce,\n stiffness,\n damping: damping !== null && damping !== void 0 ? damping : 2 * Math.sqrt(stiffness * mass),\n mass,\n extra: config\n };\n }\n if (duration !== void 0) {\n return springTiming(duration, typeof config.bounce === \"number\" ? config.bounce : 0, config);\n }\n return null;\n }\n if (duration === void 0) return null;\n var easing = typeof config.easing === \"string\" ? config.easing : \"ease\";\n return {\n kind: \"timing\",\n durationMs: duration,\n easing\n };\n}\nfunction timingToDriver(timing, animations) {\n if (timing.type === \"css\") {\n return {\n kind: \"timing\",\n durationMs: timeToMs(timing.duration),\n easing: timing.timingFunction\n };\n }\n if (timing.type === \"spring\") {\n return springTiming(timeToMs(timing.duration), timing.bounce, timing.config);\n }\n var preset = animations === null || animations === void 0 ? void 0 : animations[timing.name];\n if (preset === void 0) return null;\n var base = presetToTiming(preset);\n if (!base || !timing.config) return base;\n var overrides = timing.config;\n if (base.kind === \"spring\" || typeof overrides.bounce === \"number\") {\n var overrideDuration = typeof overrides.duration === \"number\" ? overrides.duration : typeof overrides.duration === \"string\" ? timeToMs(overrides.duration) : void 0;\n var overrideBounce = typeof overrides.bounce === \"number\" ? overrides.bounce : void 0;\n var durationMs = overrideDuration !== null && overrideDuration !== void 0 ? overrideDuration : base.durationMs;\n var bounce = overrideBounce !== null && overrideBounce !== void 0 ? overrideBounce : base.kind === \"spring\" ? base.bounce : 0;\n var carried = base.kind === \"spring\" ? base.extra : void 0;\n if (carried && (overrideDuration !== void 0 || overrideBounce !== void 0)) {\n var { stiffness, damping, ...rest } = carried;\n carried = rest;\n }\n return springTiming(durationMs, bounce, {\n ...carried,\n ...overrides\n });\n }\n return {\n kind: \"timing\",\n durationMs: typeof overrides.duration === \"number\" ? overrides.duration : typeof overrides.duration === \"string\" ? timeToMs(overrides.duration) : base.durationMs,\n easing: typeof overrides.easing === \"string\" ? overrides.easing : base.easing\n };\n}\nvar namedEasings = {\n linear: [\n 0,\n 0,\n 1,\n 1\n ],\n ease: [\n 0.25,\n 0.1,\n 0.25,\n 1\n ],\n \"ease-in\": [\n 0.42,\n 0,\n 1,\n 1\n ],\n \"ease-out\": [\n 0,\n 0,\n 0.58,\n 1\n ],\n \"ease-in-out\": [\n 0.42,\n 0,\n 0.58,\n 1\n ]\n};\nfunction easingToBezier(easing) {\n var named = namedEasings[easing];\n if (named) return named;\n if (!easing.startsWith(\"cubic-bezier(\")) return null;\n var parts = easing.slice(\"cubic-bezier(\".length, -1).split(\",\");\n if (parts.length !== 4) return null;\n var points = parts.map(function(part) {\n return Number.parseFloat(part);\n });\n if (points.some(function(point) {\n return !Number.isFinite(point);\n })) return null;\n return points;\n}\nvar cacheByAnimations = /* @__PURE__ */ new WeakMap();\nvar objectCache = /* @__PURE__ */ new WeakMap();\nvar noAnimations = {};\nfunction resolveTransition(transition) {\n var options = arguments.length > 1 && arguments[1] !== void 0 ? arguments[1] : {};\n if (transition == null || transition === \"\") return emptyResolved;\n var _options_animations;\n var animations = (_options_animations = options.animations) !== null && _options_animations !== void 0 ? _options_animations : null;\n var cacheKey = animations !== null && animations !== void 0 ? animations : noAnimations;\n if (typeof transition === \"string\") {\n var byValue = cacheByAnimations.get(cacheKey);\n if (!byValue) {\n byValue = /* @__PURE__ */ new Map();\n cacheByAnimations.set(cacheKey, byValue);\n }\n var hit = byValue.get(transition);\n if (hit) return hit;\n var _options_shorthands;\n var built = buildResolved(transition, animations, (_options_shorthands = options.shorthands) !== null && _options_shorthands !== void 0 ? _options_shorthands : null);\n if (byValue.size > 2048) byValue.clear();\n byValue.set(transition, built);\n return built;\n }\n if (typeof transition !== \"object\") return emptyResolved;\n var hit1 = objectCache.get(transition);\n if (hit1) return hit1;\n var _options_shorthands1;\n var built1 = buildResolved(transition, animations, (_options_shorthands1 = options.shorthands) !== null && _options_shorthands1 !== void 0 ? _options_shorthands1 : null);\n objectCache.set(transition, built1);\n return built1;\n}\nfunction buildResolved(transition, animations, shorthands) {\n var presetNames = animations ? new Set(Object.keys(animations)) : void 0;\n var parsed = parseTransitionObject(transition, presetNames);\n if (!parsed.ok) {\n return {\n ...emptyResolved,\n diagnostics: parsed.diagnostics\n };\n }\n if (parsed.value.kind !== \"transition\") return emptyResolved;\n return fromEntries(parsed.value.entries, animations, shorthands, parsed.value.enter ? fromEntries(parsed.value.enter, animations, shorthands, null, null) : null, parsed.value.exit ? fromEntries(parsed.value.exit, animations, shorthands, null, null) : null);\n}\nvar transformFamily = [\n \"transform\",\n \"translate\",\n \"scale\",\n \"rotate\"\n];\nfunction fromEntries(source, animations, shorthands, enter, exit) {\n var entries = [];\n var byProperty = {};\n var diagnostics = [];\n var all = null;\n var none = false;\n var fused = false;\n var _iteratorNormalCompletion = true, _didIteratorError = false, _iteratorError = void 0;\n try {\n for (var _iterator = source[Symbol.iterator](), _step; !(_iteratorNormalCompletion = (_step = _iterator.next()).done); _iteratorNormalCompletion = true) {\n var entry = _step.value;\n if (entry.property === \"none\") {\n none = true;\n continue;\n }\n if (entry.timing.type !== \"css\") fused = true;\n var timing = timingToDriver(entry.timing, animations);\n if (!timing) {\n diagnostics.push({\n code: \"transition-invalid-token\",\n token: entry.timing.type === \"preset\" ? entry.timing.name : void 0,\n message: entry.timing.type === \"preset\" ? `\"${entry.timing.name}\" is not a configured animation` : \"transition timing could not be resolved\"\n });\n continue;\n }\n var _shorthands_entry_property;\n var expanded = (_shorthands_entry_property = shorthands === null || shorthands === void 0 ? void 0 : shorthands[entry.property]) !== null && _shorthands_entry_property !== void 0 ? _shorthands_entry_property : entry.property;\n var property = canonicalTransitionProperty(expanded);\n var delayMs = timeToMs(entry.delay);\n var _iteratorNormalCompletion1 = true, _didIteratorError1 = false, _iteratorError1 = void 0;\n try {\n for (var _iterator1 = (expanded === \"transform\" ? transformFamily : [\n property\n ])[Symbol.iterator](), _step1; !(_iteratorNormalCompletion1 = (_step1 = _iterator1.next()).done); _iteratorNormalCompletion1 = true) {\n var name = _step1.value;\n var resolved = {\n property: name,\n timing,\n delayMs,\n behavior: entry.behavior\n };\n entries.push(resolved);\n if (name === \"all\") all = resolved;\n else byProperty[name] = resolved;\n }\n } catch (err) {\n _didIteratorError1 = true;\n _iteratorError1 = err;\n } finally {\n try {\n if (!_iteratorNormalCompletion1 && _iterator1.return != null) {\n _iterator1.return();\n }\n } finally {\n if (_didIteratorError1) {\n throw _iteratorError1;\n }\n }\n }\n }\n } catch (err) {\n _didIteratorError = true;\n _iteratorError = err;\n } finally {\n try {\n if (!_iteratorNormalCompletion && _iterator.return != null) {\n _iterator.return();\n }\n } finally {\n if (_didIteratorError) {\n throw _iteratorError;\n }\n }\n }\n return {\n entries,\n all,\n byProperty,\n none,\n fused,\n enter,\n exit,\n diagnostics\n };\n}\nfunction getTransitionForKey(resolved, key) {\n if (resolved.none) return null;\n var direct = resolved.byProperty[canonicalTransitionProperty(key)];\n if (direct) return direct;\n return resolved.all;\n}\nfunction hasTransition(resolved) {\n return !resolved.none && resolved.entries.length > 0;\n}\nfunction getSettleMs(timing) {\n if (timing.kind === \"timing\") return timing.durationMs;\n return springSettleTime({\n duration: timing.durationMs,\n bounce: timing.bounce\n });\n}\nfunction getMaxDurationMs(resolved) {\n var max = 0;\n var _iteratorNormalCompletion = true, _didIteratorError = false, _iteratorError = void 0;\n try {\n for (var _iterator = resolved.entries[Symbol.iterator](), _step; !(_iteratorNormalCompletion = (_step = _iterator.next()).done); _iteratorNormalCompletion = true) {\n var entry = _step.value;\n var total = getSettleMs(entry.timing) + entry.delayMs;\n if (total > max) max = total;\n }\n } catch (err) {\n _didIteratorError = true;\n _iteratorError = err;\n } finally {\n try {\n if (!_iteratorNormalCompletion && _iterator.return != null) {\n _iterator.return();\n }\n } finally {\n if (_didIteratorError) {\n throw _iteratorError;\n }\n }\n }\n return max;\n}\nvar linearEasingCache = /* @__PURE__ */ new Map();\nfunction entryToCSS(entry) {\n var delay = entry.delayMs ? ` ${entry.delayMs}ms` : \"\";\n var behavior = entry.behavior === \"allow-discrete\" ? \" allow-discrete\" : \"\";\n if (entry.timing.kind === \"timing\") {\n return `${entry.property} ${entry.timing.durationMs}ms ${entry.timing.easing}${delay}${behavior}`;\n }\n var key = `${entry.timing.durationMs}/${entry.timing.bounce}`;\n var spring = linearEasingCache.get(key);\n if (!spring) {\n spring = springToLinearEasing({\n duration: entry.timing.durationMs,\n bounce: entry.timing.bounce\n });\n if (linearEasingCache.size > 256) linearEasingCache.clear();\n linearEasingCache.set(key, spring);\n }\n return `${entry.property} ${Math.round(spring.durationMs)}ms ${spring.easing}${delay}${behavior}`;\n}\nfunction toCSSTransition(resolved) {\n if (resolved.none) return \"none\";\n if (!resolved.entries.length) return void 0;\n var out = \"\";\n var _iteratorNormalCompletion = true, _didIteratorError = false, _iteratorError = void 0;\n try {\n for (var _iterator = resolved.entries[Symbol.iterator](), _step; !(_iteratorNormalCompletion = (_step = _iterator.next()).done); _iteratorNormalCompletion = true) {\n var entry = _step.value;\n out += `${out ? \", \" : \"\"}${entryToCSS(entry)}`;\n }\n } catch (err) {\n _didIteratorError = true;\n _iteratorError = err;\n } finally {\n try {\n if (!_iteratorNormalCompletion && _iterator.return != null) {\n _iterator.return();\n }\n } finally {\n if (_didIteratorError) {\n throw _iteratorError;\n }\n }\n }\n return out || void 0;\n}\nsetTransitionResolver({\n resolve: resolveTransition,\n toCSS: toCSSTransition\n});\nexport {\n easingToBezier,\n entryToCSS,\n forAnimationState,\n getMaxDurationMs,\n getSettleMs,\n getTransitionForKey,\n hasTransition,\n presetToTiming,\n resolveTransition,\n toCSSTransition\n};\n//# sourceMappingURL=resolveTransition.js.map\n"],"mappings":"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"}
@@ -0,0 +1,11 @@
1
+ const slot = /* @__PURE__ */ Symbol.for("tamagui.transitionResolver");
2
+ function setTransitionResolver(next) {
3
+ ;
4
+ globalThis[slot] = next;
5
+ }
6
+ function getTransitionResolver() {
7
+ return globalThis[slot] ?? null;
8
+ }
9
+
10
+ export { getTransitionResolver, setTransitionResolver };
11
+ //# sourceMappingURL=transitionResolver.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"transitionResolver.js","names":[],"sources":["esm/transitionResolver.js"],"sourcesContent":["const slot = /* @__PURE__ */ Symbol.for(\"tamagui.transitionResolver\");\nfunction setTransitionResolver(next) {\n ;\n globalThis[slot] = next;\n}\nfunction getTransitionResolver() {\n return globalThis[slot] ?? null;\n}\nexport {\n getTransitionResolver,\n setTransitionResolver\n};\n//# sourceMappingURL=transitionResolver.js.map\n"],"mappings":";AAAA,MAAM,OAAuB,uBAAO,IAAI,4BAA4B;AACpE,SAAS,sBAAsB,MAAM;CACnC;CACA,WAAW,QAAQ;AACrB;AACA,SAAS,wBAAwB;CAC/B,OAAO,WAAW,SAAS;AAC7B"}
@@ -0,0 +1,12 @@
1
+ var slot = /* @__PURE__ */ Symbol.for("tamagui.transitionResolver");
2
+ function setTransitionResolver(next) {
3
+ ;
4
+ globalThis[slot] = next;
5
+ }
6
+ function getTransitionResolver() {
7
+ var _globalThis_slot;
8
+ return (_globalThis_slot = globalThis[slot]) !== null && _globalThis_slot !== void 0 ? _globalThis_slot : null;
9
+ }
10
+
11
+ export { getTransitionResolver, setTransitionResolver };
12
+ //# sourceMappingURL=transitionResolver.native.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"transitionResolver.native.js","names":[],"sources":["esm/transitionResolver.native.js"],"sourcesContent":["var slot = /* @__PURE__ */ Symbol.for(\"tamagui.transitionResolver\");\nfunction setTransitionResolver(next) {\n ;\n globalThis[slot] = next;\n}\nfunction getTransitionResolver() {\n var _globalThis_slot;\n return (_globalThis_slot = globalThis[slot]) !== null && _globalThis_slot !== void 0 ? _globalThis_slot : null;\n}\nexport {\n getTransitionResolver,\n setTransitionResolver\n};\n//# sourceMappingURL=transitionResolver.js.map\n"],"mappings":";AAAA,IAAI,OAAuB,uBAAO,IAAI,4BAA4B;AAClE,SAAS,sBAAsB,MAAM;CACnC;CACA,WAAW,QAAQ;AACrB;AACA,SAAS,wBAAwB;CAC/B,IAAI;CACJ,QAAQ,mBAAmB,WAAW,WAAW,QAAQ,qBAAqB,KAAK,IAAI,mBAAmB;AAC5G"}
@@ -1,2 +0,0 @@
1
-
2
- //# sourceMappingURL=types.mjs.map
@@ -1,2 +0,0 @@
1
-
2
- //# sourceMappingURL=types.native.js.map
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@tamagui/animation-helpers",
3
- "version": "2.7.7",
3
+ "version": "3.0.0-beta.1097.1",
4
4
  "gitHead": "a49cc7ea6b93ba384e77a4880ae48ac4a5635c14",
5
5
  "license": "MIT",
6
6
  "source": "src/index.ts",
@@ -16,6 +16,24 @@
16
16
  "types": "./types/index.d.ts",
17
17
  "exports": {
18
18
  "./package.json": "./package.json",
19
+ "./propertyNames": {
20
+ "types": "./types/propertyNames.d.ts",
21
+ "react-native": "./dist/esm/propertyNames.native.js",
22
+ "browser": "./dist/esm/propertyNames.mjs",
23
+ "module": "./dist/esm/propertyNames.mjs",
24
+ "import": "./dist/esm/propertyNames.mjs",
25
+ "require": "./dist/cjs/propertyNames.cjs",
26
+ "default": "./dist/esm/propertyNames.mjs"
27
+ },
28
+ "./transitionResolver": {
29
+ "types": "./types/transitionResolver.d.ts",
30
+ "react-native": "./dist/esm/transitionResolver.native.js",
31
+ "browser": "./dist/esm/transitionResolver.mjs",
32
+ "module": "./dist/esm/transitionResolver.mjs",
33
+ "import": "./dist/esm/transitionResolver.mjs",
34
+ "require": "./dist/cjs/transitionResolver.cjs",
35
+ "default": "./dist/esm/transitionResolver.mjs"
36
+ },
19
37
  ".": {
20
38
  "types": "./types/index.d.ts",
21
39
  "react-native": "./dist/esm/index.native.js",
@@ -36,7 +54,10 @@
36
54
  "clean:build": "tamagui-build clean:build"
37
55
  },
38
56
  "devDependencies": {
39
- "@tamagui/build": "2.7.7"
57
+ "@tamagui/build": "3.0.0-beta.1097.1"
58
+ },
59
+ "dependencies": {
60
+ "@tamagui/style-grammar": "3.0.0-beta.1097.1"
40
61
  },
41
62
  "repository": {
42
63
  "type": "git",
package/src/index.ts CHANGED
@@ -1,10 +1,40 @@
1
+ export { animationPresets } from './presets'
2
+
3
+ export {
4
+ canonicalTransitionProperty,
5
+ isTransformProperty,
6
+ styleKeysForProperty,
7
+ } from './propertyNames'
8
+
1
9
  export {
2
- normalizeTransition,
3
- getAnimationForProperty,
4
- hasAnimation,
5
- getAnimatedProperties,
6
- getEffectiveAnimation,
7
- getAnimationConfigsForKeys,
8
- } from './normalizeTransition'
9
-
10
- export type { AnimationConfig, NormalizedTransition, TransitionPropInput } from './types'
10
+ getTransitionResolver,
11
+ setTransitionResolver,
12
+ type TransitionResolver,
13
+ } from './transitionResolver'
14
+
15
+ export {
16
+ easingToBezier,
17
+ entryToCSS,
18
+ forAnimationState,
19
+ getMaxDurationMs,
20
+ getSettleMs,
21
+ getTransitionForKey,
22
+ hasTransition,
23
+ presetToTiming,
24
+ resolveTransition,
25
+ toCSSTransition,
26
+ } from './resolveTransition'
27
+
28
+ export type {
29
+ DriverTiming,
30
+ ResolvedEntry,
31
+ ResolvedTransition,
32
+ ResolveTransitionOptions,
33
+ } from './resolveTransition'
34
+
35
+ export type {
36
+ AnimationConfig,
37
+ AnimationsConfig,
38
+ PresetConfig,
39
+ TransitionPropInput,
40
+ } from './types'
package/src/presets.ts ADDED
@@ -0,0 +1,40 @@
1
+ import type { AnimationsConfig } from './types'
2
+
3
+ /**
4
+ * The shipped animation presets, defined once for every driver.
5
+ *
6
+ * Before v3 each driver carried its own hand-tuned table, so `bouncy` was a
7
+ * 350ms cubic-bezier on the web, a stiffness-120 spring on react-native, and a
8
+ * stiffness-90 spring on motion. Three different motions under one name.
9
+ *
10
+ * They are springs in the canonical pair instead:
11
+ *
12
+ * - `duration` is the spring's undamped period, which is what "how fast does
13
+ * this feel" actually means. It is not a stopwatch: a bouncy spring keeps
14
+ * ringing past it, which is the point of a bouncy spring.
15
+ * - `bounce` is 0 for critically damped (fast, no overshoot), up toward 1 for
16
+ * loose and oscillating, and negative for sluggish.
17
+ *
18
+ * On the web these compile to a `linear()` easing that traces the real spring
19
+ * curve, overshoot included, with no javascript running.
20
+ *
21
+ * There are no `'200ms'`-style presets any more. A duration is CSS now, so
22
+ * `transition="200ms"` and `transition="200ms ease-out"` work directly and
23
+ * need nothing configured. Keep your own table small for the same reason:
24
+ * a name is worth having only when it means something a duration cannot say.
25
+ */
26
+ export const animationPresets = {
27
+ quickest: { duration: 120, bounce: 0.2 },
28
+ quickestLessBouncy: { duration: 120, bounce: 0 },
29
+ quicker: { duration: 160, bounce: 0.25 },
30
+ quickerLessBouncy: { duration: 160, bounce: 0 },
31
+ quick: { duration: 220, bounce: 0.3 },
32
+ quickLessBouncy: { duration: 220, bounce: 0 },
33
+ medium: { duration: 300, bounce: 0.15 },
34
+ slow: { duration: 450, bounce: 0.1 },
35
+ slowest: { duration: 700, bounce: 0.1 },
36
+ lazy: { duration: 500, bounce: -0.2 },
37
+ superLazy: { duration: 800, bounce: -0.3 },
38
+ bouncy: { duration: 400, bounce: 0.5 },
39
+ superBouncy: { duration: 400, bounce: 0.75 },
40
+ } as const satisfies AnimationsConfig