micro-canvas-confetti-native 0.0.0-stage → 0.1.0

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 (118) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +142 -3
  3. package/lib/commonjs/api.js +83 -0
  4. package/lib/commonjs/api.js.map +1 -0
  5. package/lib/commonjs/assets/coins/h-keystone.png +0 -0
  6. package/lib/commonjs/coins.js +11 -0
  7. package/lib/commonjs/coins.js.map +1 -0
  8. package/lib/commonjs/constants.js +161 -0
  9. package/lib/commonjs/constants.js.map +1 -0
  10. package/lib/commonjs/core.js +120 -0
  11. package/lib/commonjs/core.js.map +1 -0
  12. package/lib/commonjs/engine.js +302 -0
  13. package/lib/commonjs/engine.js.map +1 -0
  14. package/lib/commonjs/hooks/useReducedMotion.js +28 -0
  15. package/lib/commonjs/hooks/useReducedMotion.js.map +1 -0
  16. package/lib/commonjs/host/ParticleHost.js +216 -0
  17. package/lib/commonjs/host/ParticleHost.js.map +1 -0
  18. package/lib/commonjs/index.js +101 -0
  19. package/lib/commonjs/index.js.map +1 -0
  20. package/lib/commonjs/physics/collect.js +85 -0
  21. package/lib/commonjs/physics/collect.js.map +1 -0
  22. package/lib/commonjs/physics/drag.js +21 -0
  23. package/lib/commonjs/physics/drag.js.map +1 -0
  24. package/lib/commonjs/physics/spawn.js +113 -0
  25. package/lib/commonjs/physics/spawn.js.map +1 -0
  26. package/lib/commonjs/physics/wobble.js +18 -0
  27. package/lib/commonjs/physics/wobble.js.map +1 -0
  28. package/lib/commonjs/sequence.js +36 -0
  29. package/lib/commonjs/sequence.js.map +1 -0
  30. package/lib/commonjs/types.js +6 -0
  31. package/lib/commonjs/types.js.map +1 -0
  32. package/lib/commonjs/utils/math.js +63 -0
  33. package/lib/commonjs/utils/math.js.map +1 -0
  34. package/lib/commonjs/utils/validation.js +153 -0
  35. package/lib/commonjs/utils/validation.js.map +1 -0
  36. package/lib/module/api.js +75 -0
  37. package/lib/module/api.js.map +1 -0
  38. package/lib/module/assets/coins/h-keystone.png +0 -0
  39. package/lib/module/coins.js +7 -0
  40. package/lib/module/coins.js.map +1 -0
  41. package/lib/module/constants.js +157 -0
  42. package/lib/module/constants.js.map +1 -0
  43. package/lib/module/core.js +13 -0
  44. package/lib/module/core.js.map +1 -0
  45. package/lib/module/engine.js +296 -0
  46. package/lib/module/engine.js.map +1 -0
  47. package/lib/module/hooks/useReducedMotion.js +25 -0
  48. package/lib/module/hooks/useReducedMotion.js.map +1 -0
  49. package/lib/module/host/ParticleHost.js +212 -0
  50. package/lib/module/host/ParticleHost.js.map +1 -0
  51. package/lib/module/index.js +8 -0
  52. package/lib/module/index.js.map +1 -0
  53. package/lib/module/physics/collect.js +80 -0
  54. package/lib/module/physics/collect.js.map +1 -0
  55. package/lib/module/physics/drag.js +16 -0
  56. package/lib/module/physics/drag.js.map +1 -0
  57. package/lib/module/physics/spawn.js +108 -0
  58. package/lib/module/physics/spawn.js.map +1 -0
  59. package/lib/module/physics/wobble.js +14 -0
  60. package/lib/module/physics/wobble.js.map +1 -0
  61. package/lib/module/sequence.js +32 -0
  62. package/lib/module/sequence.js.map +1 -0
  63. package/lib/module/types.js +4 -0
  64. package/lib/module/types.js.map +1 -0
  65. package/lib/module/utils/math.js +52 -0
  66. package/lib/module/utils/math.js.map +1 -0
  67. package/lib/module/utils/validation.js +145 -0
  68. package/lib/module/utils/validation.js.map +1 -0
  69. package/lib/typescript/api.d.ts +26 -0
  70. package/lib/typescript/api.d.ts.map +1 -0
  71. package/lib/typescript/coins.d.ts +5 -0
  72. package/lib/typescript/coins.d.ts.map +1 -0
  73. package/lib/typescript/constants.d.ts +81 -0
  74. package/lib/typescript/constants.d.ts.map +1 -0
  75. package/lib/typescript/core.d.ts +12 -0
  76. package/lib/typescript/core.d.ts.map +1 -0
  77. package/lib/typescript/engine.d.ts +112 -0
  78. package/lib/typescript/engine.d.ts.map +1 -0
  79. package/lib/typescript/hooks/useReducedMotion.d.ts +6 -0
  80. package/lib/typescript/hooks/useReducedMotion.d.ts.map +1 -0
  81. package/lib/typescript/host/ParticleHost.d.ts +10 -0
  82. package/lib/typescript/host/ParticleHost.d.ts.map +1 -0
  83. package/lib/typescript/index.d.ts +7 -0
  84. package/lib/typescript/index.d.ts.map +1 -0
  85. package/lib/typescript/physics/collect.d.ts +8 -0
  86. package/lib/typescript/physics/collect.d.ts.map +1 -0
  87. package/lib/typescript/physics/drag.d.ts +8 -0
  88. package/lib/typescript/physics/drag.d.ts.map +1 -0
  89. package/lib/typescript/physics/spawn.d.ts +8 -0
  90. package/lib/typescript/physics/spawn.d.ts.map +1 -0
  91. package/lib/typescript/physics/wobble.d.ts +5 -0
  92. package/lib/typescript/physics/wobble.d.ts.map +1 -0
  93. package/lib/typescript/sequence.d.ts +6 -0
  94. package/lib/typescript/sequence.d.ts.map +1 -0
  95. package/lib/typescript/types.d.ts +216 -0
  96. package/lib/typescript/types.d.ts.map +1 -0
  97. package/lib/typescript/utils/math.d.ts +19 -0
  98. package/lib/typescript/utils/math.d.ts.map +1 -0
  99. package/lib/typescript/utils/validation.d.ts +15 -0
  100. package/lib/typescript/utils/validation.d.ts.map +1 -0
  101. package/package.json +118 -6
  102. package/src/api.ts +78 -0
  103. package/src/assets/coins/h-keystone.png +0 -0
  104. package/src/coins.ts +8 -0
  105. package/src/constants.ts +187 -0
  106. package/src/core.ts +18 -0
  107. package/src/engine.ts +354 -0
  108. package/src/hooks/useReducedMotion.ts +26 -0
  109. package/src/host/ParticleHost.tsx +181 -0
  110. package/src/index.ts +33 -0
  111. package/src/physics/collect.ts +100 -0
  112. package/src/physics/drag.ts +15 -0
  113. package/src/physics/spawn.ts +139 -0
  114. package/src/physics/wobble.ts +11 -0
  115. package/src/sequence.ts +39 -0
  116. package/src/types.ts +243 -0
  117. package/src/utils/math.ts +49 -0
  118. package/src/utils/validation.ts +203 -0
package/LICENSE ADDED
@@ -0,0 +1,21 @@
1
+ MIT License
2
+
3
+ Copyright (c) 2026 Moshe Hatab
4
+
5
+ Permission is hereby granted, free of charge, to any person obtaining a copy
6
+ of this software and associated documentation files (the "Software"), to deal
7
+ in the Software without restriction, including without limitation the rights
8
+ to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
9
+ copies of the Software, and to permit persons to whom the Software is
10
+ furnished to do so, subject to the following conditions:
11
+
12
+ The above copyright notice and this permission notice shall be included in all
13
+ copies or substantial portions of the Software.
14
+
15
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
16
+ IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
17
+ FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
18
+ AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
19
+ LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
20
+ OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
21
+ SOFTWARE.
package/README.md CHANGED
@@ -1,3 +1,142 @@
1
- # Temporary Holding Version
2
-
3
- This version is a temporary placeholder for this package. An operational version to replace this has been submitted for review and is awaiting a staged release.
1
+ # micro-canvas-confetti-native
2
+
3
+ Confetti and coin bursts for React Native. Same presets and physics as [`micro-canvas-confetti-physics`](https://www.npmjs.com/package/micro-canvas-confetti-physics), plus image coins and a **collect** flight that starts big and shrinks into a label or box.
4
+
5
+ Drawn with `View` and `Image` only. Peers are `react` and `react-native`. No Skia, no Reanimated, no extra native module.
6
+
7
+ ## Install
8
+
9
+ ```sh
10
+ npm install micro-canvas-confetti-native
11
+ ```
12
+
13
+ Mount one overlay at the root. It does not take touches.
14
+
15
+ ```tsx
16
+ import { ParticleHost } from "micro-canvas-confetti-native";
17
+ import { View } from "react-native";
18
+
19
+ export function Root() {
20
+ return (
21
+ <View style={{ flex: 1 }}>
22
+ <App />
23
+ <ParticleHost />
24
+ </View>
25
+ );
26
+ }
27
+ ```
28
+
29
+ ## Quick start
30
+
31
+ ```tsx
32
+ import { confetti, measureCenter } from "micro-canvas-confetti-native";
33
+ import { Circle, Svg } from "react-native-svg";
34
+
35
+ confetti();
36
+ confetti({ preset: "cannon", origin: { x: 180, y: 640 } });
37
+
38
+ // coinType omitted → h-keystone. Or pass your own PNG / SVG node.
39
+ confetti({ appearance: "coin", particleCount: 12, origin: { x: 200, y: 400 } });
40
+ confetti({
41
+ appearance: "coin",
42
+ particleCount: 12,
43
+ coinSource: require("./coins/guess-and-draw.png"),
44
+ });
45
+ confetti({
46
+ appearance: "coin",
47
+ particleCount: 8,
48
+ renderCoin: () => (
49
+ <Svg width="100%" height="100%" viewBox="0 0 32 32">
50
+ <Circle cx="16" cy="16" r="14" fill="#f5b301" />
51
+ </Svg>
52
+ ),
53
+ });
54
+
55
+ await confetti.collect({
56
+ appearance: "coin",
57
+ coinSource: require("./coins/stellar-gateway.png"),
58
+ origin: { x: screenW / 2, y: screenH / 2 },
59
+ target: await measureCenter(coinsLabelRef),
60
+ particleCount: 8,
61
+ onArrive: () => addCoin(),
62
+ });
63
+ ```
64
+
65
+ `collect` flies pieces from `origin` to `target`. They start about 2.4× size, follow a short arc, and shrink to about 0.2× as they land. `target` is window coordinates. `measureCenter(ref)` reads a view with `measureInWindow` and returns its center. Pass `trackTarget: () => latestCenter` when that view can move, for example while the screen scrolls.
66
+
67
+ Calls made before `ParticleHost` mounts are queued.
68
+
69
+ ## Coins
70
+
71
+ The library ships one built-in, `h-keystone` (`DEFAULT_COIN_TYPE`). Pass your own art per burst:
72
+
73
+ | Input | Use |
74
+ | --- | --- |
75
+ | `coinType` | Omit it, or `"h-keystone"` |
76
+ | `coinSource` | A PNG or WebP. Anything `<Image source>` accepts: `require("./coin.png")` or `{ uri }` |
77
+ | `renderCoin` | `(index) => ReactElement`. An SVG from `react-native-svg`, or any view you already render. This package does not parse SVG files |
78
+
79
+ `renderCoin` wins over `coinSource`, which wins over `coinType`. The node should fill the piece (`width` and `height` `"100%"`). The host moves one wrapper view per coin.
80
+
81
+ A shared PNG is decoded once. An SVG (or any custom tree) is copied once per coin, so keep that burst smaller when the graphic is heavy.
82
+
83
+ ### Artwork that reads well
84
+
85
+ - PNG-24 or WebP, transparent, sRGB, square **256×256**
86
+ - Disc centered with about **8%** padding so rotation does not clip the edge
87
+ - Still readable at **~32dp** (the shrunk end) and **~96dp** (the big start)
88
+
89
+ ## API
90
+
91
+ | Option | Burst default | Notes |
92
+ | --- | --- | --- |
93
+ | `appearance` | `"confetti"` | `"coin"` draws the coin image |
94
+ | `coinType` | `"h-keystone"` | Built-in coin. Ignored when `coinSource` or `renderCoin` is set |
95
+ | `coinSource` | — | Your PNG or WebP. Overrides `coinType` |
96
+ | `renderCoin` | — | `(index) => node`. Your SVG or view. Overrides `coinSource` |
97
+ | `particleCount` | 60 confetti / 12 coins | You choose the count. Each piece is a view, so a higher count costs more. Safety cap: **300** confetti and **150** coins. A higher request is clamped, and the library warns. |
98
+ | `origin` | center of the host | Window coordinates |
99
+ | `preset` | — | `celebration`, `subtle`, `cannon`, `spark` |
100
+ | `angle` | `270` | Degrees, up |
101
+ | `spread` | `45` | Cone in degrees |
102
+ | `startVelocity` | `45` | |
103
+ | `gravity` | `1.2` | |
104
+ | `drag` | `0.08` | |
105
+ | `duration` | `"normal"` | `short` \| `normal` \| `long` |
106
+ | `scalar` | `1` | Size, `0.2`–`3` |
107
+ | `burstRadius` | `0` | Max distance from origin. `0` = no limit |
108
+ | `colors` / `shapes` | festive palette, rect + circle | Confetti only |
109
+ | `disableForReducedMotion` | `true` | No-op when the OS reduce-motion setting is on |
110
+
111
+ Collect-only: `target` (required), `flightMs` (900), `staggerMs` (60), `onArrive(index, total)`.
112
+
113
+ - `confetti(options?)` → `{ reset, isActive }`
114
+ - `confetti.promise(options?)` → resolves when that burst is gone
115
+ - `confetti.collect(options)` → resolves when every piece has landed
116
+ - `confettiSequence(steps)` (alias `sequence`) → `{ cancel, promise }`
117
+ - `reset()` — clear the screen
118
+ - `getActiveParticleCount()`
119
+ - `measureCenter(ref)` → `Promise<{ x, y }>`
120
+
121
+ ## What stays on the web package
122
+
123
+ Canvas snapshot, motion trails, and the velocity heatmap. Those need a canvas. This package draws each piece as a view, so `particleCount` is yours up to the safety cap (300 confetti, 150 coins).
124
+
125
+ ## Demo
126
+
127
+ ```sh
128
+ cd example
129
+ npm install
130
+ npm run start
131
+ ```
132
+
133
+ ## Development
134
+
135
+ ```sh
136
+ npm test
137
+ npm run lint
138
+ npm run typecheck
139
+ npm run build
140
+ ```
141
+
142
+ MIT © Moshe Hatab
@@ -0,0 +1,83 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports.collect = collect;
7
+ exports.engine = exports.confettiSequence = exports.confetti = void 0;
8
+ exports.getActiveParticleCount = getActiveParticleCount;
9
+ exports.measureCenter = measureCenter;
10
+ exports.reset = reset;
11
+ var _engine = require("./engine.js");
12
+ var _sequence = require("./sequence.js");
13
+ /** Shared store the `ParticleHost` draws. One per app. */
14
+ const engine = exports.engine = new _engine.ParticleEngine();
15
+
16
+ /** Stops every burst and flight, clears the screen, and resolves pending promises. */
17
+ function reset() {
18
+ engine.reset();
19
+ }
20
+ function launchBurst(options) {
21
+ const {
22
+ batch,
23
+ promise
24
+ } = (0, _engine.createBatch)();
25
+ engine.burst(options, batch);
26
+ return {
27
+ handle: {
28
+ reset,
29
+ isActive: () => batch.remaining !== 0
30
+ },
31
+ promise
32
+ };
33
+ }
34
+
35
+ /** Flies pieces from `origin` into `target`, shrinking as they land. Resolves when all have landed. */
36
+ function collect(options) {
37
+ const {
38
+ batch,
39
+ promise
40
+ } = (0, _engine.createBatch)(options?.onArrive);
41
+ try {
42
+ engine.collect(options, batch);
43
+ } catch (error) {
44
+ return Promise.reject(error);
45
+ }
46
+ return promise;
47
+ }
48
+
49
+ /** Main API — trigger a burst, await it, or run a collect flight. */
50
+ const confetti = exports.confetti = Object.assign(options => launchBurst(options).handle, {
51
+ promise: options => launchBurst(options).promise,
52
+ collect
53
+ });
54
+
55
+ /** Fires a series of bursts on a timeline. Returns a handle to cancel or await. */
56
+ const confettiSequence = exports.confettiSequence = (0, _sequence.createSequenceRunner)(confetti);
57
+
58
+ /** Number of pieces currently on screen. */
59
+ function getActiveParticleCount() {
60
+ return engine.activeCount;
61
+ }
62
+
63
+ /** Anything with React Native's `measureInWindow` — a `View`, `Text`, or `Pressable` ref. */
64
+
65
+ /**
66
+ * Center of a mounted view in window coordinates — use it as a collect `target`
67
+ * (or a burst `origin`). Accepts the ref object or the instance.
68
+ */
69
+ function measureCenter(ref) {
70
+ const node = ref !== null && "current" in ref ? ref.current : ref;
71
+ if (node === null || typeof node.measureInWindow !== "function") {
72
+ return Promise.reject(new TypeError("measureCenter: the ref is not attached to a view yet."));
73
+ }
74
+ return new Promise(resolve => {
75
+ node.measureInWindow((x, y, width, height) => {
76
+ resolve({
77
+ x: x + width / 2,
78
+ y: y + height / 2
79
+ });
80
+ });
81
+ });
82
+ }
83
+ //# sourceMappingURL=api.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["_engine","require","_sequence","engine","exports","ParticleEngine","reset","launchBurst","options","batch","promise","createBatch","burst","handle","isActive","remaining","collect","onArrive","error","Promise","reject","confetti","Object","assign","confettiSequence","createSequenceRunner","getActiveParticleCount","activeCount","measureCenter","ref","node","current","measureInWindow","TypeError","resolve","x","y","width","height"],"sourceRoot":"..\\..\\src","sources":["api.ts"],"mappings":";;;;;;;;;;AAAA,IAAAA,OAAA,GAAAC,OAAA;AACA,IAAAC,SAAA,GAAAD,OAAA;AAUA;AACO,MAAME,MAAM,GAAAC,OAAA,CAAAD,MAAA,GAAG,IAAIE,sBAAc,CAAC,CAAC;;AAE1C;AACO,SAASC,KAAKA,CAAA,EAAS;EAC7BH,MAAM,CAACG,KAAK,CAAC,CAAC;AACf;AAEA,SAASC,WAAWA,CAACC,OAAyB,EAAsD;EACnG,MAAM;IAAEC,KAAK;IAAEC;EAAQ,CAAC,GAAG,IAAAC,mBAAW,EAAC,CAAC;EACxCR,MAAM,CAACS,KAAK,CAACJ,OAAO,EAAEC,KAAK,CAAC;EAC5B,OAAO;IACNI,MAAM,EAAE;MAAEP,KAAK;MAAEQ,QAAQ,EAAEA,CAAA,KAAML,KAAK,CAACM,SAAS,KAAK;IAAE,CAAC;IACxDL;EACD,CAAC;AACF;;AAEA;AACO,SAASM,OAAOA,CAACR,OAAuB,EAAiB;EAC/D,MAAM;IAAEC,KAAK;IAAEC;EAAQ,CAAC,GAAG,IAAAC,mBAAW,EAACH,OAAO,EAAES,QAAQ,CAAC;EACzD,IAAI;IACHd,MAAM,CAACa,OAAO,CAACR,OAAO,EAAEC,KAAK,CAAC;EAC/B,CAAC,CAAC,OAAOS,KAAK,EAAE;IACf,OAAOC,OAAO,CAACC,MAAM,CAACF,KAAK,CAAC;EAC7B;EACA,OAAOR,OAAO;AACf;;AAEA;AACO,MAAMW,QAAoB,GAAAjB,OAAA,CAAAiB,QAAA,GAAGC,MAAM,CAACC,MAAM,CAC/Cf,OAAyB,IAAqBD,WAAW,CAACC,OAAO,CAAC,CAACK,MAAM,EAC1E;EACCH,OAAO,EAAGF,OAAyB,IAAoBD,WAAW,CAACC,OAAO,CAAC,CAACE,OAAO;EACnFM;AACD,CACD,CAAC;;AAED;AACO,MAAMQ,gBAAoC,GAAApB,OAAA,CAAAoB,gBAAA,GAAG,IAAAC,8BAAoB,EAACJ,QAAQ,CAAC;;AAElF;AACO,SAASK,sBAAsBA,CAAA,EAAW;EAChD,OAAOvB,MAAM,CAACwB,WAAW;AAC1B;;AAEA;;AAKA;AACA;AACA;AACA;AACO,SAASC,aAAaA,CAC5BC,GAAgE,EACtC;EAC1B,MAAMC,IAAI,GAAGD,GAAG,KAAK,IAAI,IAAI,SAAS,IAAIA,GAAG,GAAGA,GAAG,CAACE,OAAO,GAAGF,GAAG;EACjE,IAAIC,IAAI,KAAK,IAAI,IAAI,OAAOA,IAAI,CAACE,eAAe,KAAK,UAAU,EAAE;IAChE,OAAOb,OAAO,CAACC,MAAM,CAAC,IAAIa,SAAS,CAAC,uDAAuD,CAAC,CAAC;EAC9F;EACA,OAAO,IAAId,OAAO,CAAEe,OAAO,IAAK;IAC/BJ,IAAI,CAACE,eAAe,CAAC,CAACG,CAAC,EAAEC,CAAC,EAAEC,KAAK,EAAEC,MAAM,KAAK;MAC7CJ,OAAO,CAAC;QAAEC,CAAC,EAAEA,CAAC,GAAGE,KAAK,GAAG,CAAC;QAAED,CAAC,EAAEA,CAAC,GAAGE,MAAM,GAAG;MAAE,CAAC,CAAC;IACjD,CAAC,CAAC;EACH,CAAC,CAAC;AACH","ignoreList":[]}
@@ -0,0 +1,11 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports.COIN_IMAGES = void 0;
7
+ /** Built-in coin artwork, 256×256 transparent PNGs. */
8
+ const COIN_IMAGES = exports.COIN_IMAGES = {
9
+ "h-keystone": require("./assets/coins/h-keystone.png")
10
+ };
11
+ //# sourceMappingURL=coins.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["COIN_IMAGES","exports","require"],"sourceRoot":"..\\..\\src","sources":["coins.ts"],"mappings":";;;;;;AAIA;AACO,MAAMA,WAAkD,GAAAC,OAAA,CAAAD,WAAA,GAAG;EACjE,YAAY,EAAEE,OAAO,CAAC,+BAA+B;AACtD,CAAC","ignoreList":[]}
@@ -0,0 +1,161 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports.WOBBLE_DRAG = exports.SUBTLE_COLORS = exports.SPARK_COLORS = exports.SKEW_FACTOR = exports.SIMULATION_TIME_SCALE = exports.SETTLE_Y_OFFSET = exports.SETTLE_VELOCITY_THRESHOLD = exports.ROTATION_DRAG = exports.PRESET_OPTIONS = exports.MIN_SCALAR = exports.MIN_PARTICLE_COUNT = exports.MIN_FLATNESS = exports.MAX_SCALAR = exports.MAX_FRAME_SECONDS = exports.MAX_CONFETTI_PIECES = exports.MAX_COLLECT_STAGGER_MS = exports.MAX_COLLECT_FLIGHT_MS = exports.MAX_COIN_PIECES = exports.MAX_BURST_RADIUS = exports.DURATION_TICKS = exports.DURATION_SCALAR = exports.DURATION_DRAG = exports.DEFAULT_START_VELOCITY = exports.DEFAULT_SPREAD = exports.DEFAULT_SHAPES = exports.DEFAULT_SCALAR = exports.DEFAULT_PHYSICS = exports.DEFAULT_PARTICLE_COUNT = exports.DEFAULT_GRAVITY = exports.DEFAULT_FRAME_SECONDS = exports.DEFAULT_DRAG = exports.DEFAULT_DECAY = exports.DEFAULT_COLORS = exports.DEFAULT_COLLECT_STAGGER_MS = exports.DEFAULT_COLLECT_FLIGHT_MS = exports.DEFAULT_COIN_TYPE = exports.DEFAULT_COIN_COUNT = exports.DEFAULT_BURST_RADIUS = exports.DEFAULT_ANGLE = exports.CULL_MARGIN = exports.CONFETTI_WIDTH_RANGE = exports.CONFETTI_HEIGHT_RANGE = exports.COLLECT_START_SCALE = exports.COLLECT_STAGGER_JITTER_MS = exports.COLLECT_SPIN_RANGE = exports.COLLECT_ORIGIN_SCATTER = exports.COLLECT_FLIGHT_JITTER_MS = exports.COLLECT_FADE_START = exports.COLLECT_END_SCALE = exports.COLLECT_ARC_BEND = exports.COIN_TYPES = exports.COIN_SIZE = exports.COIN_ROTATION_FACTOR = exports.CELEBRATION_COLORS = exports.CANNON_COLORS = void 0;
7
+ const DEFAULT_PARTICLE_COUNT = exports.DEFAULT_PARTICLE_COUNT = 60;
8
+ const DEFAULT_COIN_COUNT = exports.DEFAULT_COIN_COUNT = 12;
9
+ const MIN_PARTICLE_COUNT = exports.MIN_PARTICLE_COUNT = 1;
10
+ /**
11
+ * Safety ceilings. The caller chooses `particleCount`; each piece is a view,
12
+ * so a high count costs more. Requests above these are clamped and warned.
13
+ */
14
+ const MAX_CONFETTI_PIECES = exports.MAX_CONFETTI_PIECES = 300;
15
+ const MAX_COIN_PIECES = exports.MAX_COIN_PIECES = 150;
16
+ const DEFAULT_ANGLE = exports.DEFAULT_ANGLE = 270;
17
+ const DEFAULT_SPREAD = exports.DEFAULT_SPREAD = 45;
18
+ const DEFAULT_START_VELOCITY = exports.DEFAULT_START_VELOCITY = 45;
19
+ const DEFAULT_GRAVITY = exports.DEFAULT_GRAVITY = 1.2;
20
+ const DEFAULT_DRAG = exports.DEFAULT_DRAG = 0.08;
21
+ const DEFAULT_DECAY = exports.DEFAULT_DECAY = 0;
22
+ const DEFAULT_SCALAR = exports.DEFAULT_SCALAR = 1;
23
+ const MIN_SCALAR = exports.MIN_SCALAR = 0.2;
24
+ const MAX_SCALAR = exports.MAX_SCALAR = 3;
25
+ const ROTATION_DRAG = exports.ROTATION_DRAG = 0.12;
26
+ const WOBBLE_DRAG = exports.WOBBLE_DRAG = 0.1;
27
+ const MIN_FLATNESS = exports.MIN_FLATNESS = 0.15;
28
+ const SKEW_FACTOR = exports.SKEW_FACTOR = 0.3;
29
+ const CULL_MARGIN = exports.CULL_MARGIN = 50;
30
+ const SETTLE_VELOCITY_THRESHOLD = exports.SETTLE_VELOCITY_THRESHOLD = 0.05;
31
+ const SETTLE_Y_OFFSET = exports.SETTLE_Y_OFFSET = 50;
32
+
33
+ /**
34
+ * The shared physics constants are tuned in small units; the host advances
35
+ * the simulation this many seconds per real second so bursts read at phone scale.
36
+ */
37
+ const SIMULATION_TIME_SCALE = exports.SIMULATION_TIME_SCALE = 12;
38
+ /** Longest frame step in seconds, so a dropped frame does not teleport pieces. */
39
+ const MAX_FRAME_SECONDS = exports.MAX_FRAME_SECONDS = 0.05;
40
+ const DEFAULT_FRAME_SECONDS = exports.DEFAULT_FRAME_SECONDS = 1 / 60;
41
+
42
+ /** No limit — pieces can travel anywhere on screen. */
43
+ const DEFAULT_BURST_RADIUS = exports.DEFAULT_BURST_RADIUS = 0;
44
+ const MAX_BURST_RADIUS = exports.MAX_BURST_RADIUS = 5000;
45
+
46
+ /** Lifespan in ticks when duration is set and ticks are not explicit. */
47
+ const DURATION_TICKS = exports.DURATION_TICKS = {
48
+ short: 45,
49
+ normal: 0,
50
+ long: 220
51
+ };
52
+
53
+ /** Default drag per duration preset. */
54
+ const DURATION_DRAG = exports.DURATION_DRAG = {
55
+ short: 0.16,
56
+ normal: DEFAULT_DRAG,
57
+ long: 0.05
58
+ };
59
+
60
+ /** Default size multiplier per duration preset. */
61
+ const DURATION_SCALAR = exports.DURATION_SCALAR = {
62
+ short: 0.55,
63
+ normal: 1,
64
+ long: 1.15
65
+ };
66
+ const DEFAULT_COLORS = exports.DEFAULT_COLORS = ["#FF2D55", "#FFCC00", "#34C759", "#007AFF", "#AF52DE", "#FF9500", "#5AC8FA", "#FF6B9D"];
67
+ const CELEBRATION_COLORS = exports.CELEBRATION_COLORS = ["#FFD700", "#FF2D55", "#FF1493", "#00E5FF", "#39FF14", "#FF9500", "#BF5AF2"];
68
+ const SUBTLE_COLORS = exports.SUBTLE_COLORS = ["#B8C5D6", "#D4A5A5", "#A8D8EA", "#C9B1FF"];
69
+ const CANNON_COLORS = exports.CANNON_COLORS = ["#FF4500", "#FFA500", "#FFFF00", "#FF2D55", "#FF6347"];
70
+ const SPARK_COLORS = exports.SPARK_COLORS = ["#FFFFFF", "#FFFACD", "#FFE4E1", "#E0FFFF"];
71
+ const DEFAULT_SHAPES = exports.DEFAULT_SHAPES = ["rect", "circle"];
72
+
73
+ /** Confetti piece size range in dp before `scalar`. */
74
+ const CONFETTI_WIDTH_RANGE = exports.CONFETTI_WIDTH_RANGE = [6, 12];
75
+ const CONFETTI_HEIGHT_RANGE = exports.CONFETTI_HEIGHT_RANGE = [4, 10];
76
+ const COIN_TYPES = exports.COIN_TYPES = ["h-keystone"];
77
+ const DEFAULT_COIN_TYPE = exports.DEFAULT_COIN_TYPE = "h-keystone";
78
+ /** Coin edge length in dp before `scalar`. */
79
+ const COIN_SIZE = exports.COIN_SIZE = 40;
80
+ /** Coins spin in-plane slower than paper confetti. */
81
+ const COIN_ROTATION_FACTOR = exports.COIN_ROTATION_FACTOR = 0.25;
82
+
83
+ /** Collect flight: average ms per piece and the random spread around it. */
84
+ const DEFAULT_COLLECT_FLIGHT_MS = exports.DEFAULT_COLLECT_FLIGHT_MS = 900;
85
+ const COLLECT_FLIGHT_JITTER_MS = exports.COLLECT_FLIGHT_JITTER_MS = 200;
86
+ const DEFAULT_COLLECT_STAGGER_MS = exports.DEFAULT_COLLECT_STAGGER_MS = 60;
87
+ const COLLECT_STAGGER_JITTER_MS = exports.COLLECT_STAGGER_JITTER_MS = 20;
88
+ const MAX_COLLECT_FLIGHT_MS = exports.MAX_COLLECT_FLIGHT_MS = 5000;
89
+ const MAX_COLLECT_STAGGER_MS = exports.MAX_COLLECT_STAGGER_MS = 1000;
90
+ /** Scale at launch and at the target, relative to the piece size. */
91
+ const COLLECT_START_SCALE = exports.COLLECT_START_SCALE = 2.4;
92
+ const COLLECT_END_SCALE = exports.COLLECT_END_SCALE = 0.2;
93
+ /** Fraction of the flight after which pieces fade out. */
94
+ const COLLECT_FADE_START = exports.COLLECT_FADE_START = 0.85;
95
+ /** Pieces start scattered this far (dp) around the origin. */
96
+ const COLLECT_ORIGIN_SCATTER = exports.COLLECT_ORIGIN_SCATTER = 24;
97
+ /** How far the arc bows sideways, as a fraction of the flight distance. */
98
+ const COLLECT_ARC_BEND = exports.COLLECT_ARC_BEND = 0.35;
99
+ /** Coin spin speed in radians per second during a collect flight. */
100
+ const COLLECT_SPIN_RANGE = exports.COLLECT_SPIN_RANGE = [6, 10];
101
+
102
+ /** Baseline simulation values used when options are resolved. */
103
+ const DEFAULT_PHYSICS = exports.DEFAULT_PHYSICS = {
104
+ gravity: DEFAULT_GRAVITY,
105
+ drag: DEFAULT_DRAG,
106
+ rotationDrag: ROTATION_DRAG,
107
+ wobbleDrag: WOBBLE_DRAG,
108
+ minFlatness: MIN_FLATNESS,
109
+ skewFactor: SKEW_FACTOR,
110
+ decay: DEFAULT_DECAY
111
+ };
112
+
113
+ /** Default option overrides for each named preset. */
114
+ const PRESET_OPTIONS = exports.PRESET_OPTIONS = {
115
+ celebration: {
116
+ particleCount: 150,
117
+ startVelocity: 62,
118
+ spread: 85,
119
+ gravity: 0.9,
120
+ duration: "normal",
121
+ scalar: 1.15,
122
+ colors: CELEBRATION_COLORS,
123
+ shapes: ["rect", "circle"]
124
+ },
125
+ subtle: {
126
+ particleCount: 14,
127
+ startVelocity: 16,
128
+ spread: 22,
129
+ gravity: 0.55,
130
+ duration: "short",
131
+ scalar: 0.6,
132
+ drag: 0.14,
133
+ colors: SUBTLE_COLORS,
134
+ shapes: ["circle"]
135
+ },
136
+ cannon: {
137
+ particleCount: 55,
138
+ startVelocity: 88,
139
+ spread: 14,
140
+ gravity: 2.2,
141
+ duration: "short",
142
+ scalar: 1,
143
+ angle: 270,
144
+ colors: CANNON_COLORS,
145
+ shapes: ["rect"]
146
+ },
147
+ spark: {
148
+ particleCount: 8,
149
+ startVelocity: 22,
150
+ spread: 360,
151
+ gravity: 0.4,
152
+ duration: "short",
153
+ scalar: 0.45,
154
+ drag: 0.2,
155
+ decay: 0.08,
156
+ burstRadius: 80,
157
+ colors: SPARK_COLORS,
158
+ shapes: ["circle"]
159
+ }
160
+ };
161
+ //# sourceMappingURL=constants.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["DEFAULT_PARTICLE_COUNT","exports","DEFAULT_COIN_COUNT","MIN_PARTICLE_COUNT","MAX_CONFETTI_PIECES","MAX_COIN_PIECES","DEFAULT_ANGLE","DEFAULT_SPREAD","DEFAULT_START_VELOCITY","DEFAULT_GRAVITY","DEFAULT_DRAG","DEFAULT_DECAY","DEFAULT_SCALAR","MIN_SCALAR","MAX_SCALAR","ROTATION_DRAG","WOBBLE_DRAG","MIN_FLATNESS","SKEW_FACTOR","CULL_MARGIN","SETTLE_VELOCITY_THRESHOLD","SETTLE_Y_OFFSET","SIMULATION_TIME_SCALE","MAX_FRAME_SECONDS","DEFAULT_FRAME_SECONDS","DEFAULT_BURST_RADIUS","MAX_BURST_RADIUS","DURATION_TICKS","short","normal","long","DURATION_DRAG","DURATION_SCALAR","DEFAULT_COLORS","CELEBRATION_COLORS","SUBTLE_COLORS","CANNON_COLORS","SPARK_COLORS","DEFAULT_SHAPES","CONFETTI_WIDTH_RANGE","CONFETTI_HEIGHT_RANGE","COIN_TYPES","DEFAULT_COIN_TYPE","COIN_SIZE","COIN_ROTATION_FACTOR","DEFAULT_COLLECT_FLIGHT_MS","COLLECT_FLIGHT_JITTER_MS","DEFAULT_COLLECT_STAGGER_MS","COLLECT_STAGGER_JITTER_MS","MAX_COLLECT_FLIGHT_MS","MAX_COLLECT_STAGGER_MS","COLLECT_START_SCALE","COLLECT_END_SCALE","COLLECT_FADE_START","COLLECT_ORIGIN_SCATTER","COLLECT_ARC_BEND","COLLECT_SPIN_RANGE","DEFAULT_PHYSICS","gravity","drag","rotationDrag","wobbleDrag","minFlatness","skewFactor","decay","PRESET_OPTIONS","celebration","particleCount","startVelocity","spread","duration","scalar","colors","shapes","subtle","cannon","angle","spark","burstRadius"],"sourceRoot":"..\\..\\src","sources":["constants.ts"],"mappings":"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","ignoreList":[]}
@@ -0,0 +1,120 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ Object.defineProperty(exports, "COIN_TYPES", {
7
+ enumerable: true,
8
+ get: function () {
9
+ return _constants.COIN_TYPES;
10
+ }
11
+ });
12
+ Object.defineProperty(exports, "DEFAULT_COIN_TYPE", {
13
+ enumerable: true,
14
+ get: function () {
15
+ return _constants.DEFAULT_COIN_TYPE;
16
+ }
17
+ });
18
+ Object.defineProperty(exports, "DEFAULT_COLORS", {
19
+ enumerable: true,
20
+ get: function () {
21
+ return _constants.DEFAULT_COLORS;
22
+ }
23
+ });
24
+ Object.defineProperty(exports, "DEFAULT_PHYSICS", {
25
+ enumerable: true,
26
+ get: function () {
27
+ return _constants.DEFAULT_PHYSICS;
28
+ }
29
+ });
30
+ Object.defineProperty(exports, "PRESET_OPTIONS", {
31
+ enumerable: true,
32
+ get: function () {
33
+ return _constants.PRESET_OPTIONS;
34
+ }
35
+ });
36
+ Object.defineProperty(exports, "SIMULATION_TIME_SCALE", {
37
+ enumerable: true,
38
+ get: function () {
39
+ return _constants.SIMULATION_TIME_SCALE;
40
+ }
41
+ });
42
+ Object.defineProperty(exports, "applyDrag", {
43
+ enumerable: true,
44
+ get: function () {
45
+ return _drag.applyDrag;
46
+ }
47
+ });
48
+ Object.defineProperty(exports, "applyDrag2D", {
49
+ enumerable: true,
50
+ get: function () {
51
+ return _drag.applyDrag2D;
52
+ }
53
+ });
54
+ Object.defineProperty(exports, "computeSkewX", {
55
+ enumerable: true,
56
+ get: function () {
57
+ return _wobble.computeSkewX;
58
+ }
59
+ });
60
+ Object.defineProperty(exports, "computeWobbleScale", {
61
+ enumerable: true,
62
+ get: function () {
63
+ return _wobble.computeWobbleScale;
64
+ }
65
+ });
66
+ Object.defineProperty(exports, "integrateParticle", {
67
+ enumerable: true,
68
+ get: function () {
69
+ return _spawn.integrateParticle;
70
+ }
71
+ });
72
+ Object.defineProperty(exports, "isParticleDead", {
73
+ enumerable: true,
74
+ get: function () {
75
+ return _spawn.isParticleDead;
76
+ }
77
+ });
78
+ Object.defineProperty(exports, "parseCollectOptions", {
79
+ enumerable: true,
80
+ get: function () {
81
+ return _validation.parseCollectOptions;
82
+ }
83
+ });
84
+ Object.defineProperty(exports, "parseConfettiOptions", {
85
+ enumerable: true,
86
+ get: function () {
87
+ return _validation.parseConfettiOptions;
88
+ }
89
+ });
90
+ Object.defineProperty(exports, "resolveCoinType", {
91
+ enumerable: true,
92
+ get: function () {
93
+ return _validation.resolveCoinType;
94
+ }
95
+ });
96
+ Object.defineProperty(exports, "sampleCollectPiece", {
97
+ enumerable: true,
98
+ get: function () {
99
+ return _collect.sampleCollectPiece;
100
+ }
101
+ });
102
+ Object.defineProperty(exports, "spawnCollectPieces", {
103
+ enumerable: true,
104
+ get: function () {
105
+ return _collect.spawnCollectPieces;
106
+ }
107
+ });
108
+ Object.defineProperty(exports, "spawnParticles", {
109
+ enumerable: true,
110
+ get: function () {
111
+ return _spawn.spawnParticles;
112
+ }
113
+ });
114
+ var _constants = require("./constants.js");
115
+ var _collect = require("./physics/collect.js");
116
+ var _drag = require("./physics/drag.js");
117
+ var _spawn = require("./physics/spawn.js");
118
+ var _wobble = require("./physics/wobble.js");
119
+ var _validation = require("./utils/validation.js");
120
+ //# sourceMappingURL=core.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["_constants","require","_collect","_drag","_spawn","_wobble","_validation"],"sourceRoot":"..\\..\\src","sources":["core.ts"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAIA,IAAAA,UAAA,GAAAC,OAAA;AAQA,IAAAC,QAAA,GAAAD,OAAA;AACA,IAAAE,KAAA,GAAAF,OAAA;AACA,IAAAG,MAAA,GAAAH,OAAA;AACA,IAAAI,OAAA,GAAAJ,OAAA;AAEA,IAAAK,WAAA,GAAAL,OAAA","ignoreList":[]}