mochi-avatar 1.0.0 → 1.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.
package/LICENSE.md CHANGED
@@ -13,7 +13,13 @@ way of drawing soft-bodied characters and belongs to anyone who wants it. Mochi
13
13
  is one specific character, and she is not a free asset.
14
14
 
15
15
  **If you want a character of your own, the engine is all you need.** Start from
16
- `PLAIN`, move the numbers, and what comes out owes nothing to Part 2.
16
+ `PLAIN` which lives in `src/core/` and is MIT move the numbers, and what
17
+ comes out owes nothing to Part 2.
18
+
19
+ One caveat, stated rather than buried: an avatar constructed without a face
20
+ defaults to Mochi, so that is the single place Part 1 code names something from
21
+ Part 2. Taking the engine alone means passing a face, which anyone building
22
+ their own character does on the first line anyway.
17
23
 
18
24
  ---
19
25
 
package/README.md CHANGED
@@ -1,8 +1,14 @@
1
- # Mochi
1
+ <p align="center">
2
+ <img src="https://raw.githubusercontent.com/xiaolai/mochi/main/assets/mochi-alive.png" width="220" alt="Mochi, breathing and occasionally blinking — a soft green ovoid with two round eyes and a small quiet mouth">
3
+ </p>
2
4
 
3
- <img src="https://raw.githubusercontent.com/xiaolai/mochi/main/src/characters/__fixtures__/mochi-icon.png" width="120" align="right" alt="Mochi">
5
+ <h1 align="center">Mochi</h1>
4
6
 
5
- A soft-body companion character, and the engine that draws her.
7
+ <p align="center">
8
+ A soft-body companion character, and the engine that draws her.
9
+ </p>
10
+
11
+ ---
6
12
 
7
13
  She is an ovoid whose widest point sits at 0.295 of her height, formed from
8
14
  superellipse exponents 1.86 above the waist and 2.58 below. She squashes without
@@ -10,6 +16,10 @@ changing area, leans by a shear pinned at the point where she meets the surface,
10
16
  breathes on a one-sided curve and settles on an underdamped spring. Her face
11
17
  rides on her at a grip of 0.82 — following the body without looking printed on.
12
18
 
19
+ Every image in this file was rendered by the package itself, from `MOCHI`. There
20
+ is no second drawing of her anywhere in this repository for the code to drift
21
+ away from.
22
+
13
23
  Zero runtime dependencies.
14
24
 
15
25
  ```sh
@@ -35,9 +45,9 @@ Attributes: `emotion` (one of the eight below), `size` (a percentage or
35
45
  ## Against a canvas
36
46
 
37
47
  ```js
38
- import { DoughAvatar, MOCHI } from 'mochi-avatar'
48
+ import { DoughAvatar } from 'mochi-avatar'
39
49
 
40
- const avatar = new DoughAvatar(canvas.getContext('2d'), { face: MOCHI, size: 'fit-canvas' })
50
+ const avatar = new DoughAvatar(canvas.getContext('2d'), { size: 'fit-canvas' }) // Mochi by default
41
51
  avatar.resize(300, 300, devicePixelRatio)
42
52
  avatar.setEmotion({ emotion: 'happy', intensity: 1 })
43
53
 
@@ -48,18 +58,95 @@ const tick = (now) => {
48
58
  requestAnimationFrame(tick)
49
59
  ```
50
60
 
51
- **Expressions** `neutral` · `happy` · `shy` · `sad` · `angry` · `surprised` ·
52
- `thinking` · `sleepy`. Each is a set of multipliers on the neutral geometry, not
53
- separate artwork, so one silhouette carries all eight.
61
+ ## She is alive before you tell her anything
62
+
63
+ That image is not a loop somebody animated. It is the engine, running, with no
64
+ input at all — because an idle character who holds perfectly still reads as a
65
+ crashed one. She is breathing, and blinking about once every seven seconds —
66
+ which is her own schedule, not a decision made in the picture. What is turned
67
+ off there is the sway: `setDrift(false)`, because a still on a page should hold
68
+ its frame.
69
+
70
+ | | |
71
+ | ---------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
72
+ | **Breath** | 3400ms, one-sided. Two half raised-cosines meeting at zero slope, 1:1.5 in to out — inspiration is muscular, expiration is elastic recoil. It only ever spreads her; her resting silhouette is a floor she returns to, never a midpoint. |
73
+ | **Blink** | 130ms, 35% closing and 65% opening, because a real lid shuts faster than it opens. Gaps come from a clamped exponential — blinking is a Poisson process, and a uniform gap reads as a metronome within about thirty seconds. |
74
+ | **Drift** | Three mutually incommensurate sines per channel, so the pattern never visibly repeats. About 2.6px of sway on a 94px body: somebody shifting their weight, not somebody pacing. |
75
+
76
+ All of it is a pure function of the clock — no timers, no random walk, no state
77
+ that a throttled tab can desynchronise. Ask it where she is at time _t_ and it
78
+ answers.
79
+
80
+ ## Making her do things
81
+
82
+ ```js
83
+ avatar.setEmotion({ emotion: 'happy', intensity: 1 })
84
+ avatar.playMotion('hop') // nod · sway · hop · swing · turn · wander
85
+ avatar.lookAt(0.4, -0.2) // she follows a point; the far side wraps out of sight
86
+ avatar.poke() // squash, then settle on the spring
87
+ avatar.setAsleep(true) // she keeps breathing; stopping entirely reads as a crash
88
+ ```
89
+
90
+ ### Speaking
91
+
92
+ ```js
93
+ avatar.setSpeaking(true)
94
+ avatar.setMouthOpen(0.8) // drive this from your audio, per frame
95
+ avatar.setSpeaking(false)
96
+ ```
97
+
98
+ `EnvelopeMouth` in `core/mouth` will do the driving for you from an audio
99
+ envelope — `advanceEnvelope` turns a `Float32Array` of samples into a mouth
100
+ opening with attack and release, so speech does not chatter on every zero
101
+ crossing.
102
+
103
+ Two honest limits: `setVisemes` exists on the backend interface but this rig
104
+ does not implement it — the mouth is one lens with an opening, not a phoneme
105
+ shape, and `caps.visemes` says so rather than pretending. And the custom element
106
+ wires `emotion`, `size` and `face` only; anything above needs the JS object.
107
+
108
+ ### Accessibility
109
+
110
+ ```js
111
+ avatar.setReducedMotion(true) // stops the idle motion, keeps one-shot replies
112
+ avatar.setDrift(false) // stops only the sway; she goes on breathing
113
+ ```
114
+
115
+ `setReducedMotion` is the accessibility preference, and it stops the breath
116
+ along with everything else. `setDrift` is the weaker, orthogonal one: use it
117
+ when she has to hold a fixed frame but should still look alive — which is
118
+ exactly what the image at the top of this page is doing. A companion who
119
+ answers nothing is a picture, not a quieter companion — the preference asks for
120
+ less movement, not for no feedback.
121
+
122
+ ### Expressions
123
+
124
+ <img src="https://raw.githubusercontent.com/xiaolai/mochi/main/assets/expressions.png" width="100%" alt="Mochi in eight expressions: neutral, happy, shy, sad, angry, surprised, thinking, sleepy">
125
+
126
+ <p align="center"><sub>
127
+ neutral · happy · shy · sad · angry · surprised · thinking · sleepy
128
+ </sub></p>
54
129
 
55
- **Colourways** `matcha` (the original) · `sakura` · `kinako` · `yuzu` ·
56
- `ramune` · `budo`.
130
+ Each is a set of multipliers on the neutral geometry rather than separate
131
+ artwork, so one silhouette carries all eight. Sleepy has no mouth on purpose —
132
+ a mouth left on a sleeping face reads as awake-but-quiet.
133
+
134
+ ## Colourways
135
+
136
+ <img src="https://raw.githubusercontent.com/xiaolai/mochi/main/assets/colourways.png" width="100%" alt="Mochi in six colourways: matcha, sakura, kinako, yuzu, ramune, budo">
137
+
138
+ <p align="center"><sub>
139
+ matcha · sakura · kinako · yuzu · ramune · budo
140
+ </sub></p>
57
141
 
58
142
  ```js
59
143
  import { mochiIn, MOCHI } from 'mochi-avatar'
60
144
  const sakura = mochiIn('sakura', MOCHI)
61
145
  ```
62
146
 
147
+ One geometry throughout — five colour fields swapped, nothing else. Which is the
148
+ claim the picture is making: she is the shape, not the colour.
149
+
63
150
  ## Just the geometry
64
151
 
65
152
  `core` is pure arithmetic. It returns points and numbers, and imports no canvas,
@@ -105,8 +192,24 @@ import { DoughAvatar, PLAIN } from 'mochi-avatar'
105
192
  new DoughAvatar(ctx, { face: { ...PLAIN, waist: 0.5, colBody: '#c88e9d' }, size: 'fit-canvas' })
106
193
  ```
107
194
 
108
- `PLAIN` is the default face and is deliberately plain — a near-symmetric egg,
109
- one flat tone, no blush. It exists to be replaced.
195
+ `PLAIN` is a deliberately generic body — a near-symmetric egg, one flat tone, no
196
+ blush built to be visibly a different creature from her along the axes that
197
+ identify her. It exists to be started from.
198
+
199
+ Give no face at all and you get **Mochi**, since that is whose package this is.
200
+
201
+ ## Example: Mochi as a Codex CLI pet
202
+
203
+ [`examples/codex-pet/`](examples/codex-pet) exports her as a sprite atlas — 74
204
+ frames, no canvas and no frame loop, because the core is pure functions and does
205
+ not need either. **Six colourways are prebuilt**, so installing one is a copy
206
+ into `~/.codex/pets/`.
207
+
208
+ It is also the closest thing to a fidelity test this package has. Re-pointed at
209
+ the published build, 73 of its 74 frames came out pixel-identical to an atlas
210
+ produced against the original application's source tree — and the six flavours
211
+ have pixel-identical alpha channels, which is the "same shape, five fields
212
+ swapped" claim measured rather than asserted.
110
213
 
111
214
  ## Licence
112
215
 
@@ -101,6 +101,15 @@ export declare class DoughAvatar implements AvatarBackend {
101
101
  * movement, not for no feedback.
102
102
  */
103
103
  private reducedMotion;
104
+ /**
105
+ * Whether the going-nowhere sway is running.
106
+ *
107
+ * Separate from `reducedMotion`, which stops the breath as well. There was no
108
+ * way to ask for a mochi who is alive but STILL — breathing, blinking, not
109
+ * wandering — and that is a reasonable thing to want for a small avatar in a
110
+ * fixed slot, or for a picture of her that has to hold its own frame.
111
+ */
112
+ private drifting;
104
113
  private emotion;
105
114
  private emotionExpiresAt;
106
115
  /** A hold requested before the first frame, when there was no clock to add it to. */
@@ -172,6 +181,15 @@ export declare class DoughAvatar implements AvatarBackend {
172
181
  * told apart from an accessibility preference, and one of them wants the
173
182
  * blink schedule re-armed on the way out while the other does not care.
174
183
  */
184
+ /**
185
+ * Turn the continuous sway on or off, leaving everything else alone.
186
+ *
187
+ * She goes on breathing and blinking; what stops is the several pixels of
188
+ * lean, shift and lift that keep her from looking pinned to the page. Use it
189
+ * when she has to hold a fixed frame. For the accessibility preference use
190
+ * `setReducedMotion`, which is a stronger statement.
191
+ */
192
+ setDrift(on: boolean): void;
175
193
  setReducedMotion(on: boolean): void;
176
194
  /**
177
195
  * Stop whatever is playing, and let the springs settle her back.
@@ -1 +1 @@
1
- {"version":3,"file":"avatar.d.ts","sourceRoot":"","sources":["../../src/canvas2d/avatar.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"avatar.d.ts","sourceRoot":"","sources":["../../src/canvas2d/avatar.ts"],"names":[],"mappings":"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"}
@@ -13,7 +13,7 @@
13
13
  */
14
14
  import { clamp01, clampSigned, } from '../core/vocabulary.js';
15
15
  import {} from '../core/spec.js';
16
- import { PLAIN } from '../core/plain.js';
16
+ import { MOCHI } from '../characters/mochi.js';
17
17
  import { BREATHING_UNITS, FEET_FROM_TOP, SQUASH_LIMIT, feetY, fitToCanvas, layoutFor, } from '../core/layout.js';
18
18
  import { driftAt, IdleLayer } from '../core/idle.js';
19
19
  import { blendLook } from '../core/looks.js';
@@ -148,6 +148,15 @@ export class DoughAvatar {
148
148
  * movement, not for no feedback.
149
149
  */
150
150
  reducedMotion = false;
151
+ /**
152
+ * Whether the going-nowhere sway is running.
153
+ *
154
+ * Separate from `reducedMotion`, which stops the breath as well. There was no
155
+ * way to ask for a mochi who is alive but STILL — breathing, blinking, not
156
+ * wandering — and that is a reasonable thing to want for a small avatar in a
157
+ * fixed slot, or for a picture of her that has to hold its own frame.
158
+ */
159
+ drifting = true;
151
160
  emotion = NEUTRAL_SIGNAL;
152
161
  emotionExpiresAt = null;
153
162
  /** A hold requested before the first frame, when there was no clock to add it to. */
@@ -162,7 +171,22 @@ export class DoughAvatar {
162
171
  silhouette = null;
163
172
  constructor(ctx, options) {
164
173
  this.ctx = ctx;
165
- this.face = options.face ?? PLAIN;
174
+ /*
175
+ Mochi, because this package is named after her and ships her.
176
+
177
+ It used to be `PLAIN`, from a design where she was reserved and did not
178
+ ship at all; a generic default was the only honest thing an engine could
179
+ hand out. She ships now, under her own licence, and a default of PLAIN
180
+ meant somebody installing `mochi-avatar` and writing the shortest possible
181
+ code got a grey egg. Her own website got one.
182
+
183
+ This is the single place the MIT engine references the character layer,
184
+ which is not MIT — see LICENSE.md. Taking the engine alone therefore means
185
+ supplying a face, which anybody building their own character is doing on
186
+ the first line anyway. `PLAIN` is still here for exactly that: a starting
187
+ point, not a fallback.
188
+ */
189
+ this.face = options.face ?? MOCHI;
166
190
  this.sizePercent = options.size;
167
191
  this.idleLayer = new IdleLayer(0, options.random);
168
192
  }
@@ -335,6 +359,17 @@ export class DoughAvatar {
335
359
  * told apart from an accessibility preference, and one of them wants the
336
360
  * blink schedule re-armed on the way out while the other does not care.
337
361
  */
362
+ /**
363
+ * Turn the continuous sway on or off, leaving everything else alone.
364
+ *
365
+ * She goes on breathing and blinking; what stops is the several pixels of
366
+ * lean, shift and lift that keep her from looking pinned to the page. Use it
367
+ * when she has to hold a fixed frame. For the accessibility preference use
368
+ * `setReducedMotion`, which is a stronger statement.
369
+ */
370
+ setDrift(on) {
371
+ this.drifting = on;
372
+ }
338
373
  setReducedMotion(on) {
339
374
  if (on === this.reducedMotion)
340
375
  return;
@@ -556,7 +591,9 @@ export class DoughAvatar {
556
591
  her still, and a still she can be measured against.
557
592
  */
558
593
  const stirring = this.idle && !this.reducedMotion;
559
- const drift = stirring ? driftAt(now, this.asleep ? ASLEEP_DRIFT : 1) : NO_DRIFT;
594
+ // The drift is gated by BOTH, and the breath by `stirring` alone: turning
595
+ // off the sway must not turn off the thing that says she is alive.
596
+ const drift = stirring && this.drifting ? driftAt(now, this.asleep ? ASLEEP_DRIFT : 1) : NO_DRIFT;
560
597
  const shutEyes = this.asleep && !this.speaking;
561
598
  const pose = shutEyes
562
599
  ? // The asleep breath is gated by the PREFERENCE only, never by `idle`.
@@ -1 +1 @@
1
- {"version":3,"file":"avatar.js","sourceRoot":"","sources":["../../src/canvas2d/avatar.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"avatar.js","sourceRoot":"","sources":["../../src/canvas2d/avatar.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;GAYG;AAEH,OAAO,EACL,OAAO,EACP,WAAW,GAOZ,MAAM,uBAAuB,CAAA;AAC9B,OAAO,EAAiB,MAAM,iBAAiB,CAAA;AAC/C,OAAO,EAAE,KAAK,EAAE,MAAM,wBAAwB,CAAA;AAC9C,OAAO,EACL,eAAe,EACf,aAAa,EACb,YAAY,EACZ,KAAK,EACL,WAAW,EACX,SAAS,GACV,MAAM,mBAAmB,CAAA;AAC1B,OAAO,EAAE,OAAO,EAAE,SAAS,EAAc,MAAM,iBAAiB,CAAA;AAChE,OAAO,EAAE,SAAS,EAAa,MAAM,kBAAkB,CAAA;AACvD,OAAO,EACL,gBAAgB,EAChB,MAAM,EACN,QAAQ,GAGT,MAAM,mBAAmB,CAAA;AAC1B,OAAO,EAAE,MAAM,EAAE,MAAM,mBAAmB,CAAA;AAC1C,OAAO,EAAE,WAAW,EAAE,SAAS,EAAE,UAAU,EAAE,MAAM,WAAW,CAAA;AAC9D,OAAO,EAAE,MAAM,EAAE,MAAM,YAAY,CAAA;AACnC,OAAO,EACL,WAAW,EACX,YAAY,EACZ,QAAQ,GAGT,MAAM,qBAAqB,CAAA;AAE5B,MAAM,cAAc,GAAkB,EAAE,OAAO,EAAE,SAAS,EAAE,SAAS,EAAE,CAAC,EAAE,CAAA;AAE1E,4EAA4E;AAC5E,MAAM,qBAAqB,GAAG,GAAG,CAAA;AAEjC;;;;;;;GAOG;AACH,MAAM,UAAU,GAAG,IAAI,CAAA;AAEvB;;;;;;;;;GASG;AACH,MAAM,mBAAmB,GAAG,CAAC,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,GAAG,EAAE,CAAA;AAEhD;;;;;;;GAOG;AACH,MAAM,YAAY,GAAG,GAAG,CAAA;AAExB;;;;;;;;;;;;;;;;;;;;;;;;;;;GA2BG;AACH,MAAM,CAAC,MAAM,kBAAkB,GAAG,CAAC,CAAA;AAEnC;;;;;;;GAOG;AACH,MAAM,oBAAoB,GAAG,GAAG,CAAA;AAEhC,kEAAkE;AAClE,MAAM,QAAQ,GAAU,EAAE,IAAI,EAAE,CAAC,EAAE,KAAK,EAAE,CAAC,EAAE,IAAI,EAAE,CAAC,EAAE,CAAA;AAwBtD,MAAM,OAAO,WAAW;IAkFH,GAAG;IAjFb,IAAI,GAAe,OAAO,CAAA;IAC1B,IAAI,GAAsB;QACjC,iBAAiB,EAAE,IAAI;QACvB,iBAAiB,EAAE,KAAK;QACxB,eAAe,EAAE,KAAK;QACtB,eAAe,EAAE,KAAK;QACtB,yEAAyE;QACzE,wEAAwE;QACxE,uEAAuE;QACvE,wEAAwE;QACxE,iEAAiE;QACjE,eAAe,EAAE,IAAI;QACrB,sEAAsE;QACtE,yEAAyE;QACzE,0EAA0E;QAC1E,oEAAoE;QACpE,OAAO,EAAE,KAAK;KACf,CAAA;IAEO,IAAI,CAAU;IACd,WAAW,CAAuB;IACzB,SAAS,CAAW;IACpB,YAAY,GAAG,IAAI,MAAM,CAAC,CAAC,CAAC,CAAA;IAC7C,kFAAkF;IAC1E,MAAM,GAAsB,IAAI,CAAA;IAChC,eAAe,GAAuB,IAAI,CAAA;IAE1C,QAAQ,GAAG,CAAC,CAAA;IACZ,SAAS,GAAG,CAAC,CAAA;IACrB,yDAAyD;IACjD,WAAW,GAAG,aAAa,CAAA;IACnC,oDAAoD;IAC5C,MAAM,GAAG,KAAK,CAAA;IACtB,yEAAyE;IACjE,QAAQ,GAAG,KAAK,CAAA;IAChB,UAAU,GAAG,CAAC,CAAA;IACd,QAAQ,GAAG,KAAK,CAAA;IAEhB,SAAS,GAAG,CAAC,CAAA;IACb,IAAI,GAAG,IAAI,CAAA;IACnB;;;;;;;;;;;;;OAaG;IACK,aAAa,GAAG,KAAK,CAAA;IAE7B;;;;;;;OAOG;IACK,QAAQ,GAAG,IAAI,CAAA;IACf,OAAO,GAAkB,cAAc,CAAA;IACvC,gBAAgB,GAAkB,IAAI,CAAA;IAC9C,qFAAqF;IAC7E,aAAa,GAAkB,IAAI,CAAA;IAC3C,uEAAuE;IAC/D,YAAY,GAAuB,IAAI,CAAA;IACvC,OAAO,GAAG,CAAC,CAAA;IAEX,IAAI,GAAG,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAA;IACrB,UAAU,GAAG,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAA;IAC3B,YAAY,GAAuB,IAAI,CAAA;IAE/C,+EAA+E;IACvE,UAAU,GAAkB,IAAI,CAAA;IAExC,YACmB,GAA6B,EAC9C,OAAsB;mBADL,GAAG;QAGpB;;;;;;;;;;;;;;UAcE;QACF,IAAI,CAAC,IAAI,GAAG,OAAO,CAAC,IAAI,IAAI,KAAK,CAAA;QACjC,IAAI,CAAC,WAAW,GAAG,OAAO,CAAC,IAAI,CAAA;QAC/B,IAAI,CAAC,SAAS,GAAG,IAAI,SAAS,CAAC,CAAC,EAAE,OAAO,CAAC,MAAM,CAAC,CAAA;IACnD,CAAC;IAED;;;;;;OAMG;IACH,MAAM,CAAC,QAAgB,EAAE,SAAiB,EAAE,UAAU,GAAG,CAAC;QACxD,mEAAmE;QACnE,6EAA6E;QAC7E,4EAA4E;QAC5E,4EAA4E;QAC5E,gCAAgC;QAChC,EAAE;QACF,2EAA2E;QAC3E,wEAAwE;QACxE,4EAA4E;QAC5E,0EAA0E;QAC1E,sEAAsE;QACtE,qEAAqE;QACrE,IAAI,CAAC,QAAQ,GAAG,YAAY,CAAC,QAAQ,CAAC,CAAA;QACtC,IAAI,CAAC,SAAS,GAAG,YAAY,CAAC,SAAS,CAAC,CAAA;QACxC,IAAI,CAAC,UAAU,GAAG,MAAM,CAAC,QAAQ,CAAC,UAAU,CAAC,IAAI,UAAU,GAAG,CAAC,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,CAAA;QAChF,uEAAuE;QACvE,IAAI,CAAC,UAAU,GAAG,IAAI,CAAA;IACxB,CAAC;IAED;;;;;;OAMG;IACH;;;;;OAKG;IACH,OAAO,CAAC,WAAmB;QACzB;;;;;;;;;;;;;;;UAeE;QACF,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,WAAW,CAAC,IAAI,WAAW,IAAI,CAAC,EAAE,CAAC;YACtD,OAAO,CAAC,IAAI,CAAC,uCAAuC,MAAM,CAAC,WAAW,CAAC,EAAE,CAAC,CAAA;YAC1E,OAAM;QACR,CAAC;QACD,IAAI,CAAC,WAAW,GAAG,WAAW,CAAA;IAChC,CAAC;IAED,cAAc,CAAC,OAA8B;QAC3C,IAAI,OAAO,KAAK,IAAI,CAAC,WAAW;YAAE,OAAM;QACxC,IAAI,CAAC,WAAW,GAAG,OAAO,CAAA;QAC1B,6EAA6E;QAC7E,2EAA2E;QAC3E,uEAAuE;QACvE,2EAA2E;QAC3E,uEAAuE;QACvE,IAAI,CAAC,UAAU,GAAG,IAAI,CAAA;IACxB,CAAC;IAED;;;;;;;;;;OAUG;IACH,OAAO,CAAC,IAAc;QACpB,IAAI,CAAC,IAAI,GAAG,IAAI,CAAA;QAChB,IAAI,CAAC,UAAU,GAAG,IAAI,CAAA;IACxB,CAAC;IAED,YAAY,CAAC,KAAa;QACxB,IAAI,CAAC,SAAS,GAAG,OAAO,CAAC,KAAK,CAAC,CAAA;IACjC,CAAC;IAED;;gEAE4D;IAC5D,UAAU,CAAC,QAAuB,IAAS,CAAC;IAE5C,UAAU,CAAC,MAAqB;QAC9B,IAAI,CAAC,OAAO,GAAG,EAAE,GAAG,MAAM,EAAE,SAAS,EAAE,OAAO,CAAC,MAAM,CAAC,SAAS,CAAC,EAAE,CAAA;QAClE,MAAM,IAAI,GAAG,MAAM,CAAC,MAAM,CAAA;QAC1B,MAAM,KAAK,GAAG,OAAO,IAAI,KAAK,QAAQ,IAAI,MAAM,CAAC,QAAQ,CAAC,IAAI,CAAC,IAAI,IAAI,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAA;QAE1F,IAAI,KAAK,KAAK,IAAI,EAAE,CAAC;YACnB,IAAI,CAAC,gBAAgB,GAAG,IAAI,CAAA;YAC5B,IAAI,CAAC,aAAa,GAAG,IAAI,CAAA;YACzB,OAAM;QACR,CAAC;QACD,uEAAuE;QACvE,EAAE;QACF,2EAA2E;QAC3E,0EAA0E;QAC1E,2EAA2E;QAC3E,wEAAwE;QACxE,4EAA4E;QAC5E,wEAAwE;QACxE,2EAA2E;QAC3E,qEAAqE;QACrE,qEAAqE;QACrE,uCAAuC;QACvC,EAAE;QACF,sEAAsE;QACtE,mEAAmE;QACnE,IAAI,CAAC,aAAa,GAAG,KAAK,CAAA;QAC1B,IAAI,CAAC,gBAAgB,GAAG,IAAI,CAAA;IAC9B,CAAC;IAED;;;;;;OAMG;IACH,UAAU,CAAC,IAAY;QACrB,uEAAuE;QACvE,sEAAsE;QACtE,qEAAqE;QACrE,sCAAsC;QACtC,MAAM,IAAI,GAAG,MAAM,CAAC,MAAM,CAAC,gBAAgB,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC,gBAAgB,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,SAAS,CAAA;QACvF,IAAI,IAAI,KAAK,SAAS,EAAE,CAAC;YACvB,OAAO,CAAC,IAAI,CAAC,0BAA0B,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC,CAAA;YAC9D,OAAM;QACR,CAAC;QACD;;;;;;;;;;;;UAYE;QACF,IAAI,IAAI,CAAC,aAAa,IAAI,IAAI,CAAC,IAAI,EAAE,CAAC;YACpC,IAAI,CAAC,MAAM,GAAG,IAAI,CAAA;YAClB,IAAI,CAAC,eAAe,GAAG,IAAI,CAAA;YAC3B,OAAM;QACR,CAAC;QACD,IAAI,CAAC,MAAM,GAAG,IAAI,CAAA;QAClB,IAAI,CAAC,eAAe,GAAG,IAAI,CAAA;IAC7B,CAAC;IAED;;;;;;;;OAQG;IACH;;;;;;;OAOG;IACH,QAAQ,CAAC,EAAW;QAClB,IAAI,CAAC,QAAQ,GAAG,EAAE,CAAA;IACpB,CAAC;IAED,gBAAgB,CAAC,EAAW;QAC1B,IAAI,EAAE,KAAK,IAAI,CAAC,aAAa;YAAE,OAAM;QACrC,IAAI,CAAC,aAAa,GAAG,EAAE,CAAA;QACvB,0EAA0E;QAC1E,0DAA0D;QAC1D,IAAI,EAAE,IAAI,IAAI,CAAC,MAAM,EAAE,IAAI,KAAK,IAAI;YAAE,IAAI,CAAC,UAAU,EAAE,CAAA;QACvD,4EAA4E;QAC5E,0EAA0E;QAC1E,IAAI,CAAC,EAAE;YAAE,IAAI,CAAC,YAAY,GAAG,IAAI,CAAA;IACnC,CAAC;IAED;;;;;;;;;;;;;OAaG;IACH,UAAU;QACR,IAAI,CAAC,MAAM,GAAG,IAAI,CAAA;QAClB,IAAI,CAAC,eAAe,GAAG,IAAI,CAAA;IAC7B,CAAC;IAED,MAAM,CAAC,EAAU,EAAE,EAAU;QAC3B,4EAA4E;QAC5E,sCAAsC;QACtC,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,EAAE,CAAC,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,EAAE,CAAC;YAAE,OAAM;QACxD,2EAA2E;QAC3E,2EAA2E;QAC3E,wEAAwE;QACxE,0EAA0E;QAC1E,4EAA4E;QAC5E,IAAI,CAAC,UAAU,GAAG,EAAE,CAAC,EAAE,WAAW,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,WAAW,CAAC,EAAE,CAAC,EAAE,CAAA;IAC9D,CAAC;IAED;;;;;;OAMG;IACH,SAAS,CAAC,EAAW;QACnB,IAAI,EAAE,KAAK,IAAI,CAAC,MAAM;YAAE,OAAM;QAC9B,IAAI,CAAC,MAAM,GAAG,EAAE,CAAA;QAChB,wEAAwE;QACxE,0EAA0E;QAC1E,yBAAyB;QACzB,IAAI,EAAE;YAAE,IAAI,CAAC,UAAU,GAAG,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAA;IAC1C,CAAC;IAED;;;;;;;;;;;;;;;;;;;;;;;OAuBG;IACH,WAAW,CAAC,EAAW;QACrB,IAAI,CAAC,QAAQ,GAAG,EAAE,CAAA;IACpB,CAAC;IAED,OAAO,CAAC,EAAW;QACjB,IAAI,EAAE,KAAK,IAAI,CAAC,IAAI;YAAE,OAAM;QAC5B,IAAI,CAAC,IAAI,GAAG,EAAE,CAAA;QACd,0EAA0E;QAC1E,4EAA4E;QAC5E,0EAA0E;QAC1E,4EAA4E;QAC5E,0EAA0E;QAC1E,SAAS;QACT,IAAI,EAAE;YAAE,IAAI,CAAC,YAAY,GAAG,IAAI,CAAA;;YAC3B,IAAI,CAAC,UAAU,GAAG,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAA;IACvC,CAAC;IAED,wEAAwE;IACxE,IAAI,CAAC,MAAM,GAAG,CAAC,GAAG;QAChB,IAAI,MAAM,CAAC,QAAQ,CAAC,MAAM,CAAC;YAAE,IAAI,CAAC,OAAO,GAAG,MAAM,CAAA;IACpD,CAAC;IAED,OAAO,CAAC,CAAS,EAAE,CAAS;QAC1B,IAAI,IAAI,CAAC,QAAQ,IAAI,IAAI,CAAC,UAAU,KAAK,IAAI;YAAE,OAAO,KAAK,CAAA;QAC3D,4EAA4E;QAC5E,4EAA4E;QAC5E,0EAA0E;QAC1E,qCAAqC;QACrC,IAAI,CAAC,cAAc,EAAE,CAAA;QACrB,0DAA0D;QAC1D,EAAE;QACF,0EAA0E;QAC1E,0EAA0E;QAC1E,4EAA4E;QAC5E,qEAAqE;QACrE,uEAAuE;QACvE,0EAA0E;QAC1E,4EAA4E;QAC5E,EAAE;QACF,2EAA2E;QAC3E,4EAA4E;QAC5E,sDAAsD;QACtD,MAAM,KAAK,GAAG,IAAI,CAAC,UAAU,CAAA;QAC7B,OAAO,IAAI,CAAC,GAAG,CAAC,aAAa,CAAC,IAAI,CAAC,UAAU,EAAE,CAAC,GAAG,KAAK,EAAE,CAAC,GAAG,KAAK,CAAC,CAAA;IACtE,CAAC;IAED,MAAM,CAAC,GAAgB;QACrB,IAAI,IAAI,CAAC,QAAQ,IAAI,IAAI,CAAC,QAAQ,KAAK,CAAC,IAAI,IAAI,CAAC,SAAS,KAAK,CAAC;YAAE,OAAM;QACxE,oEAAoE;QACpE,2EAA2E;QAC3E,qEAAqE;QACrE,2EAA2E;QAC3E,+DAA+D;QAC/D,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,GAAG,CAAC;YAAE,OAAM;QACjC,MAAM,EAAE,GAAG,IAAI,CAAC,YAAY,KAAK,IAAI,CAAC,CAAC,CAAC,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,GAAG,GAAG,IAAI,CAAC,YAAY,CAAC,GAAG,IAAI,CAAC,CAAA;QAC9F,IAAI,CAAC,YAAY,GAAG,GAAG,CAAA;QAEvB,0EAA0E;QAC1E,uEAAuE;QACvE,IAAI,IAAI,CAAC,IAAI,IAAI,IAAI,CAAC,YAAY,KAAK,IAAI,EAAE,CAAC;YAC5C,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,GAAG,CAAC,CAAA;YACzB,IAAI,CAAC,YAAY,GAAG,GAAG,CAAA;QACzB,CAAC;QACD,IAAI,IAAI,CAAC,aAAa,KAAK,IAAI,EAAE,CAAC;YAChC,IAAI,CAAC,gBAAgB,GAAG,GAAG,GAAG,IAAI,CAAC,aAAa,CAAA;YAChD,IAAI,CAAC,aAAa,GAAG,IAAI,CAAA;QAC3B,CAAC;QAED,IAAI,IAAI,CAAC,gBAAgB,KAAK,IAAI,IAAI,GAAG,IAAI,IAAI,CAAC,gBAAgB,EAAE,CAAC;YACnE,IAAI,CAAC,OAAO,GAAG,cAAc,CAAA;YAC7B,IAAI,CAAC,gBAAgB,GAAG,IAAI,CAAA;QAC9B,CAAC;QAED;;;;;;;;;;;;;;;;;;;;;;WAsBG;QACH,MAAM,IAAI,GAAG,IAAI,CAAC,MAAM;YACtB,CAAC,CAAC,SAAS,CAAC,QAAQ,EAAE,CAAC,CAAC;YACxB,CAAC,CAAC,SAAS,CAAC,IAAI,CAAC,OAAO,CAAC,OAAO,EAAE,IAAI,CAAC,OAAO,CAAC,SAAS,CAAC,CAAA;QAC3D;;;;;;;;;;;;;;;;;;;;;;;WAuBG;QACH;;;;;;;;;;;;UAYE;QACF,MAAM,QAAQ,GAAG,IAAI,CAAC,IAAI,IAAI,CAAC,IAAI,CAAC,aAAa,CAAA;QACjD,0EAA0E;QAC1E,mEAAmE;QACnE,MAAM,KAAK,GACT,QAAQ,IAAI,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,OAAO,CAAC,GAAG,EAAE,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAA;QAErF,MAAM,QAAQ,GAAG,IAAI,CAAC,MAAM,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAA;QAC9C,MAAM,IAAI,GAAG,QAAQ;YACnB,CAAC,CAAC,sEAAsE;gBACtE,iEAAiE;gBACjE,iEAAiE;gBACjE,oEAAoE;gBACpE,gEAAgE;gBAChE;oBACE,KAAK,EAAE,CAAC;oBACR,uEAAuE;oBACvE,0DAA0D;oBAC1D,MAAM,EAAE,IAAI,CAAC,aAAa;wBACxB,CAAC,CAAC,CAAC;wBACH,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,GAAG,EAAE,IAAI,CAAC,IAAI,CAAC,QAAQ,GAAG,oBAAoB,CAAC,CAAC,MAAM;iBAC/E;YACH,CAAC,CAAC,QAAQ;gBACR,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,GAAG,EAAE,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC;gBAC9C,CAAC,CAAC,EAAE,KAAK,EAAE,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,CAAA;QAE7B,gEAAgE;QAChE,wEAAwE;QACxE,uEAAuE;QACvE,wEAAwE;QACxE,oCAAoC;QACpC,MAAM,KAAK,GAAG,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,CAAA;QAElC,2EAA2E;QAC3E,mDAAmD;QACnD,IAAI,CAAC,OAAO,IAAI,IAAI,CAAC,GAAG,CAAC,CAAC,mBAAmB,GAAG,EAAE,CAAC,CAAA;QACnD;;;;;;;;UAQE;QACF,MAAM,SAAS,GAAG,IAAI,CAAC,IAAI,CAAC,SAAS,GAAG,CAAC,QAAQ,CAAC,CAAC,CAAC,kBAAkB,CAAC,CAAC,CAAC,CAAC,CAAC,CAAA;QAC3E,MAAM,MAAM,GAAG,IAAI,CAAC,MAAM,GAAG,CAAC,KAAK,CAAC,MAAM,IAAI,CAAC,CAAC,GAAG,IAAI,CAAC,MAAM,GAAG,SAAS,GAAG,IAAI,CAAC,OAAO,CAAA;QACzF,MAAM,OAAO,GAAG,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,EAAE,EAAE,MAAM,EAAE;YACjD,SAAS,EAAE,IAAI,CAAC,IAAI,CAAC,SAAS;YAC9B,OAAO,EAAE,IAAI,CAAC,IAAI,CAAC,OAAO;SAC3B,CAAC,CAAA;QACF,MAAM,MAAM,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,YAAY,EAAE,IAAI,CAAC,GAAG,CAAC,YAAY,EAAE,OAAO,CAAC,CAAC,CAAA;QACvE,wEAAwE;QACxE,0EAA0E;QAC1E,wEAAwE;QACxE,0EAA0E;QAC1E,qCAAqC;QACrC,IAAI,MAAM,KAAK,OAAO;YAAE,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,MAAM,CAAC,CAAA;QAEtD,IAAI,CAAC,WAAW,CAAC,EAAE,EAAE,IAAI,EAAE,KAAK,CAAC,CAAA;QACjC,IAAI,CAAC,KAAK,CAAC,IAAI,EAAE,IAAI,CAAC,KAAK,EAAE,MAAM,EAAE,KAAK,EAAE,KAAK,CAAC,CAAA;IACpD,CAAC;IAED;;;;;;;;OAQG;IACK,UAAU,CAAC,GAAgB;QACjC,IAAI,IAAI,CAAC,MAAM,KAAK,IAAI;YAAE,OAAO,EAAE,CAAA;QACnC,IAAI,CAAC,eAAe,KAAK,GAAG,CAAA;QAC5B,MAAM,EAAE,GAAG,QAAQ,CAAC,IAAI,CAAC,MAAM,EAAE,GAAG,GAAG,IAAI,CAAC,eAAe,CAAC,CAAA;QAC5D,IAAI,EAAE,KAAK,IAAI,EAAE,CAAC;YAChB,IAAI,CAAC,MAAM,GAAG,IAAI,CAAA;YAClB,IAAI,CAAC,eAAe,GAAG,IAAI,CAAA;YAC3B,OAAO,EAAE,CAAA;QACX,CAAC;QACD,OAAO,MAAM,CAAC,IAAI,CAAC,MAAM,EAAE,EAAE,CAAC,CAAA;IAChC,CAAC;IAED,OAAO;QACL,IAAI,IAAI,CAAC,QAAQ;YAAE,OAAM;QACzB,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAA;QACpB,2EAA2E;QAC3E,0EAA0E;QAC1E,mEAAmE;QACnE,IAAI,CAAC,GAAG,CAAC,YAAY,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAA;QACvC,IAAI,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC,EAAE,CAAC,EAAE,IAAI,CAAC,GAAG,CAAC,MAAM,CAAC,KAAK,EAAE,IAAI,CAAC,GAAG,CAAC,MAAM,CAAC,MAAM,CAAC,CAAA;QACvE,IAAI,CAAC,UAAU,GAAG,IAAI,CAAA;IACxB,CAAC;IAED,6EAA6E;IAErE,cAAc;QACpB,MAAM,CAAC,GAAG,IAAI,CAAC,UAAU,CAAA;QACzB,IAAI,CAAC,GAAG,CAAC,YAAY,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAA;IACzC,CAAC;IAEO,WAAW,CAAC,EAAU,EAAE,IAAU,EAAE,KAAiB;QAC3D,yEAAyE;QACzE,gBAAgB;QAChB,MAAM,KAAK,GAAG,CAAC,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,GAAG,IAAI,CAAC,GAAG,qBAAqB,CAAC,CAAA;QAChE,0EAA0E;QAC1E,uEAAuE;QACvE,yEAAyE;QACzE,0CAA0C;QAC1C,MAAM,EAAE,GAAG,IAAI,CAAC,UAAU,CAAC,CAAC,GAAG,IAAI,CAAC,KAAK,GAAG,CAAC,KAAK,CAAC,KAAK,IAAI,CAAC,CAAC,CAAA;QAC9D,MAAM,EAAE,GAAG,IAAI,CAAC,UAAU,CAAC,CAAC,GAAG,IAAI,CAAC,KAAK,GAAG,CAAC,KAAK,CAAC,KAAK,IAAI,CAAC,CAAC,CAAA;QAC9D,IAAI,CAAC,IAAI,GAAG;YACV,CAAC,EAAE,IAAI,CAAC,IAAI,CAAC,CAAC,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,GAAG,KAAK;YAC3C,CAAC,EAAE,IAAI,CAAC,IAAI,CAAC,CAAC,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,GAAG,KAAK;SAC5C,CAAA;IACH,CAAC;IAED;;;;OAIG;IACK,KAAK,CAAC,IAAU,EAAE,KAAa,EAAE,MAAc,EAAE,KAAiB,EAAE,KAAY;QACtF,MAAM,EAAE,GAAG,EAAE,IAAI,EAAE,GAAG,IAAI,CAAA;QAC1B,IAAI,CAAC,cAAc,EAAE,CAAA;QACrB,GAAG,CAAC,SAAS,CAAC,CAAC,EAAE,CAAC,EAAE,IAAI,CAAC,QAAQ,EAAE,IAAI,CAAC,SAAS,CAAC,CAAA;QAElD,0EAA0E;QAC1E,4EAA4E;QAC5E,kEAAkE;QAClE,sEAAsE;QACtE,4EAA4E;QAC5E,mEAAmE;QACnE,MAAM,IAAI,GAAG,IAAI,CAAC,WAAW,CAAA;QAC7B,MAAM,MAAM,GAAG,IAAI,KAAK,YAAY,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,SAAS,CAAC,IAAI,EAAE,IAAI,CAAC,CAAA;QACnE,MAAM,KAAK,GAAG,MAAM,EAAE,KAAK,IAAI,WAAW,CAAC,IAAI,EAAE,IAAI,CAAC,QAAQ,EAAE,IAAI,CAAC,SAAS,CAAC,CAAA;QAC/E,uEAAuE;QACvE,wEAAwE;QACxE,qDAAqD;QACrD,IAAI,KAAK,IAAI,CAAC,EAAE,CAAC;YACf,IAAI,CAAC,UAAU,GAAG,IAAI,CAAA;YACtB,OAAM;QACR,CAAC;QACD;;;;;;;;;;;;;WAaG;QACH,MAAM,OAAO,GAAG,CAAC,CAAC,KAAK,CAAC,KAAK,IAAI,CAAC,CAAC,GAAG,KAAK,CAAC,KAAK,CAAC,GAAG,IAAI,CAAC,KAAK,GAAG,KAAK,CAAA;QACvE,MAAM,OAAO,GAAG,CAAC,CAAC,KAAK,CAAC,IAAI,IAAI,CAAC,CAAC,GAAG,KAAK,CAAC,IAAI,CAAC,GAAG,IAAI,CAAC,KAAK,GAAG,KAAK,CAAA;QACrE,MAAM,OAAO,GAAG,IAAI,CAAC,QAAQ,GAAG,CAAC,GAAG,OAAO,CAAA;QAC3C,6EAA6E;QAC7E,yEAAyE;QACzE,4BAA4B;QAC5B;;;;;;;;;;;WAWG;QACH,MAAM,OAAO,GACX,CAAC,MAAM,KAAK,IAAI;YACd,CAAC,CAAC,IAAI,CAAC,SAAS,GAAG,CAAC,CAAC,GAAG,CAAC,eAAe,GAAG,KAAK,CAAC,GAAG,IAAI,CAAC,SAAS,CAAC;YACnE,CAAC,CAAC,KAAK,CAAC,IAAI,CAAC,SAAS,EAAE,eAAe,GAAG,KAAK,EAAE,IAAI,CAAC,WAAW,CAAC,CAAC;YACrE,yDAAyD;YACzD,OAAO,CAAA;QAET,MAAM,IAAI,GAAc;YACtB,SAAS,EAAE,CAAC,IAAI,CAAC,KAAK,GAAG,CAAC,CAAC,GAAG,KAAK;YACnC,MAAM,EAAE,IAAI,CAAC,KAAK,GAAG,KAAK;YAC1B,KAAK,EAAE,IAAI,CAAC,KAAK;YACjB,aAAa,EAAE,IAAI,CAAC,aAAa;YACjC,aAAa,EAAE,IAAI,CAAC,aAAa;YACjC,uEAAuE;YACvE,uEAAuE;YACvE,gEAAgE;YAChE,IAAI,EAAE,IAAI,CAAC,IAAI,GAAG,CAAC,KAAK,CAAC,IAAI,IAAI,CAAC,CAAC,GAAG,KAAK,CAAC,IAAI;SACjD,CAAA;QACD,MAAM,IAAI,GAAG,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC,CAAA;QAEnC,kEAAkE;QAClE,MAAM,QAAQ,GAAG,CAAC,CAAQ,EAAS,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,OAAO,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,OAAO,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAA;QAE9E,MAAM,OAAO,GAAG,WAAW,CAAC,IAAI,CAAC,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAA;QAC/C,IAAI,CAAC,UAAU,GAAG,MAAM,CAAC,OAAO,CAAC,CAAA;QAEjC;;;;;;;;;;;;;;WAcG;QACH,MAAM,IAAI,GAAG,CAAC,KAAK,CAAC,IAAI,IAAI,CAAC,CAAC,GAAG,UAAU,CAAA;QAC3C,MAAM,KAAK,GAAG,CAAC,EAAU,EAAE,EAAU,EAAS,EAAE,CAC9C,QAAQ,CAAC,YAAY,CAAC,IAAI,EAAE,IAAI,EAAE,EAAE,GAAG,IAAI,EAAE,EAAE,EAAE,IAAI,CAAC,KAAK,EAAE,IAAI,CAAC,KAAK,CAAC,CAAC,CAAA;QAE3E,8DAA8D;QAC9D,EAAE;QACF,uEAAuE;QACvE,4EAA4E;QAC5E,4EAA4E;QAC5E,yEAAyE;QACzE,wEAAwE;QACxE,wDAAwD;QACxD,GAAG,CAAC,IAAI,EAAE,CAAA;QACV,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC,CAAA;QACzB,IAAI,CAAC,SAAS,CAAC,OAAO,EAAE,IAAI,EAAE,IAAI,CAAC,UAAU,CAAC,CAAA;QAC9C,2EAA2E;QAC3E,oCAAoC;QACpC,WAAW,CAAC,GAAG,EAAE,IAAI,EAAE,IAAI,EAAE,KAAK,EAAE,KAAK,CAAC,CAAA;QAC1C,SAAS,CAAC,GAAG,EAAE,IAAI,EAAE,IAAI,EAAE,KAAK,EAAE,IAAI,CAAC,IAAI,EAAE,KAAK,EAAE,KAAK,CAAC,CAAA;QAC1D,6CAA6C;QAC7C,UAAU,CAAC,GAAG,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,CAAC,SAAS,EAAE,KAAK,EAAE,KAAK,CAAC,CAAA;QACzD,GAAG,CAAC,OAAO,EAAE,CAAA;IACf,CAAC;IAED;;;;;;;;;;;;OAYG;IACK,SAAS,CAAC,OAAyB,EAAE,IAAe,EAAE,KAAa;QACzE,MAAM,EAAE,GAAG,EAAE,IAAI,EAAE,GAAG,IAAI,CAAA;QAC1B,0EAA0E;QAC1E,wEAAwE;QACxE,+DAA+D;QAC/D,GAAG,CAAC,SAAS,GAAG,IAAI,CAAC,SAAS,CAAA;QAC9B,GAAG,CAAC,IAAI,CAAC,KAAK,CAAC,CAAA;QAEf,MAAM,EAAE,GAAG,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC,SAAS,GAAG,CAAC,CAAA;QAC5C,0EAA0E;QAC1E,0BAA0B;QAC1B,MAAM,EAAE,GAAG,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC,MAAM,CAAA;QACrC,GAAG,CAAC,SAAS,GAAG,IAAI,CAAC,OAAO,CAAA;QAC5B,GAAG,CAAC,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,KAAK,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,EAAE,KAAK,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,CAAA;IAClF,CAAC;CACF;AAED,kEAAkE;AAClE,SAAS,YAAY,CAAC,KAAa;IACjC,OAAO,MAAM,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAA;AACxD,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"looks.d.ts","sourceRoot":"","sources":["../../src/core/looks.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AAEH,OAAO,EAAW,KAAK,OAAO,EAAE,MAAM,iBAAiB,CAAA;AAEvD,MAAM,WAAW,IAAI;IACnB,sCAAsC;IACtC,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAA;IACzB,6FAA6F;IAC7F,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAA;IACzB,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAA;IACzB,0EAA0E;IAC1E,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAA;IACxB,QAAQ,CAAC,UAAU,EAAE,MAAM,CAAA;IAC3B,QAAQ,CAAC,UAAU,EAAE,MAAM,CAAA;IAC3B,QAAQ,CAAC,UAAU,EAAE,MAAM,CAAA;IAC3B;;;;;;;;;;;;OAYG;IACH,QAAQ,CAAC,UAAU,EAAE,MAAM,CAAA;IAC3B,6DAA6D;IAC7D,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAA;IACtB;;;;;;;;;;;;;;;;;;;OAmBG;IACH,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAA;IACxB,0FAA0F;IAC1F,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAA;IACtB,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAA;IACtB,0EAA0E;IAC1E,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAA;IACvB,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAA;CACtB;AAED,eAAO,MAAM,OAAO,EAAE,IAerB,CAAA;AAED,eAAO,MAAM,KAAK,EAAE,QAAQ,CAAC,MAAM,CAAC,OAAO,EAAE,IAAI,CAAC,CAsHjD,CAAA;AAID;;;;;GAKG;AACH,wBAAgB,SAAS,CAAC,OAAO,EAAE,OAAO,EAAE,SAAS,EAAE,MAAM,GAAG,IAAI,CAWnE"}
1
+ {"version":3,"file":"looks.d.ts","sourceRoot":"","sources":["../../src/core/looks.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AAEH,OAAO,EAAW,KAAK,OAAO,EAAE,MAAM,iBAAiB,CAAA;AAEvD,MAAM,WAAW,IAAI;IACnB,sCAAsC;IACtC,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAA;IACzB,6FAA6F;IAC7F,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAA;IACzB,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAA;IACzB,0EAA0E;IAC1E,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAA;IACxB,QAAQ,CAAC,UAAU,EAAE,MAAM,CAAA;IAC3B,QAAQ,CAAC,UAAU,EAAE,MAAM,CAAA;IAC3B,QAAQ,CAAC,UAAU,EAAE,MAAM,CAAA;IAC3B;;;;;;;;;;;;OAYG;IACH,QAAQ,CAAC,UAAU,EAAE,MAAM,CAAA;IAC3B,6DAA6D;IAC7D,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAA;IACtB;;;;;;;;;;;;;;;;;;;OAmBG;IACH,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAA;IACxB,0FAA0F;IAC1F,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAA;IACtB,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAA;IACtB,0EAA0E;IAC1E,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAA;IACvB,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAA;CACtB;AAED,eAAO,MAAM,OAAO,EAAE,IAerB,CAAA;AAED,eAAO,MAAM,KAAK,EAAE,QAAQ,CAAC,MAAM,CAAC,OAAO,EAAE,IAAI,CAAC,CAuIjD,CAAA;AAID;;;;;GAKG;AACH,wBAAgB,SAAS,CAAC,OAAO,EAAE,OAAO,EAAE,SAAS,EAAE,MAAM,GAAG,IAAI,CAWnE"}
@@ -72,8 +72,25 @@ export const LOOKS = {
72
72
  eyeLower: 0.92,
73
73
  eyeWidth: 1.06,
74
74
  eyeTilt: 0.28,
75
- mouthUpper: 2,
76
- mouthLower: 0,
75
+ /*
76
+ A frown, made the way `sad` makes one.
77
+
78
+ This was `mouthUpper: 2, mouthLower: 0`, and it drew NO MOUTH — the
79
+ multipliers are applied to the tuned base, `MOCHI.mouthUpper` is 0, and
80
+ two times nothing is nothing. So the one expression that most needs a
81
+ mouth had none, on every face whose resting mouth is a lower arc only.
82
+
83
+ It is a defect rather than a choice, and the table itself proves that:
84
+ `sleepy` removes its mouth on purpose with `mouthAlpha: 0`. Whoever wrote
85
+ `mouthUpper: 2` was reaching for a shape, not for an absence.
86
+
87
+ A negative lower bows the bottom edge above the baseline, which is what
88
+ turns a smile into a frown without a second asset — the same trick the
89
+ crescent eye uses, and what `sad` already does at -0.3. Tighter here,
90
+ because anger is held and sadness is slack.
91
+ */
92
+ mouthUpper: 0,
93
+ mouthLower: -0.25,
77
94
  mouthWidth: 0.84,
78
95
  cheek: 0.28,
79
96
  gazeY: -0.14,
@@ -1 +1 @@
1
- {"version":3,"file":"looks.js","sourceRoot":"","sources":["../../src/core/looks.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"looks.js","sourceRoot":"","sources":["../../src/core/looks.ts"],"names":[],"mappings":"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"}
@@ -1,12 +1,14 @@
1
1
  import type { FaceSpec } from './spec.js';
2
2
  /**
3
- * The default face, and deliberately NOT a good one.
3
+ * A starting point for a character of your own, and deliberately NOT a good one.
4
4
  *
5
- * An engine that renders nothing until you hand it thirty-nine numbers is an
6
- * engine nobody evaluates, so there has to be a default. But the character this
7
- * engine was extracted from is reserved, and shipping her as the default would
8
- * hand her out with the library so `PLAIN` is built to be visibly a different
9
- * creature, along exactly the axes that identify her:
5
+ * This was the default face, from a design where Mochi was reserved and did not
6
+ * ship; a generic body was the only thing an engine could honestly hand out.
7
+ * She ships now and she is the default, so `PLAIN` has the job it was always
8
+ * better suited to: the thing you start from and change.
9
+ *
10
+ * It is built to be visibly a different creature from her, along exactly the
11
+ * axes that identify her:
10
12
  *
11
13
  * | | Mochi | PLAIN |
12
14
  * |---|---|---|
@@ -17,7 +19,8 @@ import type { FaceSpec } from './spec.js';
17
19
  * | face | low on the body, small eyes | centred, larger eyes |
18
20
  *
19
21
  * Every one of those is a choice you are expected to replace. Start here, move
20
- * the numbers, and the result is yours — that is what the format is for.
22
+ * the numbers, and the result is yours — that is what the format is for, and
23
+ * nothing about it owes anything to her.
21
24
  */
22
25
  export declare const PLAIN: FaceSpec;
23
26
  //# sourceMappingURL=plain.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"plain.d.ts","sourceRoot":"","sources":["../../src/core/plain.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,WAAW,CAAA;AAEzC;;;;;;;;;;;;;;;;;;;GAmBG;AACH,eAAO,MAAM,KAAK,EAAE,QA+CnB,CAAA"}
1
+ {"version":3,"file":"plain.d.ts","sourceRoot":"","sources":["../../src/core/plain.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,WAAW,CAAA;AAEzC;;;;;;;;;;;;;;;;;;;;;;GAsBG;AACH,eAAO,MAAM,KAAK,EAAE,QA+CnB,CAAA"}
@@ -1,11 +1,13 @@
1
1
  /**
2
- * The default face, and deliberately NOT a good one.
2
+ * A starting point for a character of your own, and deliberately NOT a good one.
3
3
  *
4
- * An engine that renders nothing until you hand it thirty-nine numbers is an
5
- * engine nobody evaluates, so there has to be a default. But the character this
6
- * engine was extracted from is reserved, and shipping her as the default would
7
- * hand her out with the library so `PLAIN` is built to be visibly a different
8
- * creature, along exactly the axes that identify her:
4
+ * This was the default face, from a design where Mochi was reserved and did not
5
+ * ship; a generic body was the only thing an engine could honestly hand out.
6
+ * She ships now and she is the default, so `PLAIN` has the job it was always
7
+ * better suited to: the thing you start from and change.
8
+ *
9
+ * It is built to be visibly a different creature from her, along exactly the
10
+ * axes that identify her:
9
11
  *
10
12
  * | | Mochi | PLAIN |
11
13
  * |---|---|---|
@@ -16,7 +18,8 @@
16
18
  * | face | low on the body, small eyes | centred, larger eyes |
17
19
  *
18
20
  * Every one of those is a choice you are expected to replace. Start here, move
19
- * the numbers, and the result is yours — that is what the format is for.
21
+ * the numbers, and the result is yours — that is what the format is for, and
22
+ * nothing about it owes anything to her.
20
23
  */
21
24
  export const PLAIN = {
22
25
  size: 100,
@@ -1 +1 @@
1
- {"version":3,"file":"plain.js","sourceRoot":"","sources":["../../src/core/plain.ts"],"names":[],"mappings":"AAEA;;;;;;;;;;;;;;;;;;;GAmBG;AACH,MAAM,CAAC,MAAM,KAAK,GAAa;IAC7B,IAAI,EAAE,GAAG;IACT,KAAK,EAAE,GAAG;IACV,KAAK,EAAE,EAAE;IACT,KAAK,EAAE,IAAI;IACX,aAAa,EAAE,GAAG;IAClB,aAAa,EAAE,GAAG;IAClB,KAAK,EAAE,GAAG;IACV,KAAK,EAAE,GAAG;IAEV,IAAI,EAAE,IAAI;IACV,IAAI,EAAE,IAAI;IACV,KAAK,EAAE,GAAG;IACV,QAAQ,EAAE,GAAG;IACb,QAAQ,EAAE,GAAG;IACb,OAAO,EAAE,CAAC;IACV,QAAQ,EAAE,CAAC;IACX,QAAQ,EAAE,GAAG;IACb,UAAU,EAAE,GAAG;IAEf,MAAM,EAAE,IAAI;IACZ,OAAO,EAAE,CAAC;IACV,UAAU,EAAE,CAAC;IACb,UAAU,EAAE,GAAG;IACf,UAAU,EAAE,CAAC;IACb,aAAa,EAAE,CAAC;IAEhB,UAAU,EAAE,CAAC;IACb,MAAM,EAAE,GAAG;IACX,MAAM,EAAE,GAAG;IACX,MAAM,EAAE,EAAE;IAEV,SAAS,EAAE,IAAI;IACf,QAAQ,EAAE,IAAI;IACd,SAAS,EAAE,GAAG;IACd,OAAO,EAAE,EAAE;IAEX,yEAAyE;IACzE,0EAA0E;IAC1E,OAAO,EAAE,CAAC;IACV,OAAO,EAAE,CAAC;IAEV,OAAO,EAAE,SAAS;IAClB,SAAS,EAAE,SAAS;IACpB,MAAM,EAAE,SAAS;IACjB,QAAQ,EAAE,SAAS;IACnB,QAAQ,EAAE,SAAS;CACpB,CAAA"}
1
+ {"version":3,"file":"plain.js","sourceRoot":"","sources":["../../src/core/plain.ts"],"names":[],"mappings":"AAEA;;;;;;;;;;;;;;;;;;;;;;GAsBG;AACH,MAAM,CAAC,MAAM,KAAK,GAAa;IAC7B,IAAI,EAAE,GAAG;IACT,KAAK,EAAE,GAAG;IACV,KAAK,EAAE,EAAE;IACT,KAAK,EAAE,IAAI;IACX,aAAa,EAAE,GAAG;IAClB,aAAa,EAAE,GAAG;IAClB,KAAK,EAAE,GAAG;IACV,KAAK,EAAE,GAAG;IAEV,IAAI,EAAE,IAAI;IACV,IAAI,EAAE,IAAI;IACV,KAAK,EAAE,GAAG;IACV,QAAQ,EAAE,GAAG;IACb,QAAQ,EAAE,GAAG;IACb,OAAO,EAAE,CAAC;IACV,QAAQ,EAAE,CAAC;IACX,QAAQ,EAAE,GAAG;IACb,UAAU,EAAE,GAAG;IAEf,MAAM,EAAE,IAAI;IACZ,OAAO,EAAE,CAAC;IACV,UAAU,EAAE,CAAC;IACb,UAAU,EAAE,GAAG;IACf,UAAU,EAAE,CAAC;IACb,aAAa,EAAE,CAAC;IAEhB,UAAU,EAAE,CAAC;IACb,MAAM,EAAE,GAAG;IACX,MAAM,EAAE,GAAG;IACX,MAAM,EAAE,EAAE;IAEV,SAAS,EAAE,IAAI;IACf,QAAQ,EAAE,IAAI;IACd,SAAS,EAAE,GAAG;IACd,OAAO,EAAE,EAAE;IAEX,yEAAyE;IACzE,0EAA0E;IAC1E,OAAO,EAAE,CAAC;IACV,OAAO,EAAE,CAAC;IAEV,OAAO,EAAE,SAAS;IAClB,SAAS,EAAE,SAAS;IACpB,MAAM,EAAE,SAAS;IACjB,QAAQ,EAAE,SAAS;IACnB,QAAQ,EAAE,SAAS;CACpB,CAAA"}
@@ -14,7 +14,7 @@
14
14
  */
15
15
  import { DoughAvatar } from '../canvas2d/avatar.js';
16
16
  import { parseFaceSpec } from '../core/spec.js';
17
- import { PLAIN } from '../core/plain.js';
17
+ import { MOCHI } from '../characters/mochi.js';
18
18
  import { EMOTIONS } from '../core/vocabulary.js';
19
19
  function isEmotion(value) {
20
20
  return value !== null && EMOTIONS.includes(value);
@@ -113,13 +113,13 @@ export class DoughAvatarElement extends HTMLElement {
113
113
  /** The face, as a `FaceSpec`. Set this instead of the attribute when you have one. */
114
114
  set faceSpec(face) {
115
115
  this.face = face;
116
- // Cleared means "back to the engine default", applied to the LIVE avatar
117
- // too. Clearing only the stored copy left the current face on screen until
118
- // the next reconnect, at which point it silently changed — the same input
116
+ // Cleared means "back to the default", applied to the LIVE avatar too.
117
+ // Clearing only the stored copy left the current face on screen until the
118
+ // next reconnect, at which point it silently changed — the same input
119
119
  // producing two different results depending on DOM history.
120
120
  if (this.avatar === null)
121
121
  return;
122
- this.avatar.setFace(face ?? PLAIN);
122
+ this.avatar.setFace(face ?? MOCHI);
123
123
  }
124
124
  get faceSpec() {
125
125
  return this.face;
@@ -1 +1 @@
1
- {"version":3,"file":"dough-avatar.js","sourceRoot":"","sources":["../../src/element/dough-avatar.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"dough-avatar.js","sourceRoot":"","sources":["../../src/element/dough-avatar.ts"],"names":[],"mappings":"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"}
package/dist/index.d.ts CHANGED
@@ -15,7 +15,8 @@
15
15
  * shape.
16
16
  *
17
17
  * A face is DATA — see `FaceSpec` — so a design is a JSON file rather than a
18
- * fork. `PLAIN` is the default; it is intended to be replaced.
18
+ * fork. `MOCHI` is the default. `PLAIN` is a deliberately generic body to start
19
+ * your own character from.
19
20
  */
20
21
  export * from './core/spec.js';
21
22
  export * from './core/plain.js';
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;GAkBG;AAGH,cAAc,gBAAgB,CAAA;AAC9B,cAAc,iBAAiB,CAAA;AAC/B,cAAc,sBAAsB,CAAA;AACpC,cAAc,kBAAkB,CAAA;AAChC,cAAc,oBAAoB,CAAA;AAClC,cAAc,gBAAgB,CAAA;AAC9B,cAAc,iBAAiB,CAAA;AAC/B,cAAc,gBAAgB,CAAA;AAC9B,cAAc,kBAAkB,CAAA;AAChC,cAAc,kBAAkB,CAAA;AAChC,cAAc,oBAAoB,CAAA;AAClC,cAAc,iBAAiB,CAAA;AAC/B,cAAc,kBAAkB,CAAA;AAGhC,cAAc,sBAAsB,CAAA;AACpC,cAAc,oBAAoB,CAAA;AAClC,cAAc,qBAAqB,CAAA;AAGnC,cAAc,qBAAqB,CAAA;AAGnC,cAAc,uBAAuB,CAAA"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;GAmBG;AAGH,cAAc,gBAAgB,CAAA;AAC9B,cAAc,iBAAiB,CAAA;AAC/B,cAAc,sBAAsB,CAAA;AACpC,cAAc,kBAAkB,CAAA;AAChC,cAAc,oBAAoB,CAAA;AAClC,cAAc,gBAAgB,CAAA;AAC9B,cAAc,iBAAiB,CAAA;AAC/B,cAAc,gBAAgB,CAAA;AAC9B,cAAc,kBAAkB,CAAA;AAChC,cAAc,kBAAkB,CAAA;AAChC,cAAc,oBAAoB,CAAA;AAClC,cAAc,iBAAiB,CAAA;AAC/B,cAAc,kBAAkB,CAAA;AAGhC,cAAc,sBAAsB,CAAA;AACpC,cAAc,oBAAoB,CAAA;AAClC,cAAc,qBAAqB,CAAA;AAGnC,cAAc,qBAAqB,CAAA;AAGnC,cAAc,uBAAuB,CAAA"}
package/dist/index.js CHANGED
@@ -15,7 +15,8 @@
15
15
  * shape.
16
16
  *
17
17
  * A face is DATA — see `FaceSpec` — so a design is a JSON file rather than a
18
- * fork. `PLAIN` is the default; it is intended to be replaced.
18
+ * fork. `MOCHI` is the default. `PLAIN` is a deliberately generic body to start
19
+ * your own character from.
19
20
  */
20
21
  // --- core: the character as arithmetic -------------------------------------
21
22
  export * from './core/spec.js';
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;GAkBG;AAEH,8EAA8E;AAC9E,cAAc,gBAAgB,CAAA;AAC9B,cAAc,iBAAiB,CAAA;AAC/B,cAAc,sBAAsB,CAAA;AACpC,cAAc,kBAAkB,CAAA;AAChC,cAAc,oBAAoB,CAAA;AAClC,cAAc,gBAAgB,CAAA;AAC9B,cAAc,iBAAiB,CAAA;AAC/B,cAAc,gBAAgB,CAAA;AAC9B,cAAc,kBAAkB,CAAA;AAChC,cAAc,kBAAkB,CAAA;AAChC,cAAc,oBAAoB,CAAA;AAClC,cAAc,iBAAiB,CAAA;AAC/B,cAAc,kBAAkB,CAAA;AAEhC,8EAA8E;AAC9E,cAAc,sBAAsB,CAAA;AACpC,cAAc,oBAAoB,CAAA;AAClC,cAAc,qBAAqB,CAAA;AAEnC,8EAA8E;AAC9E,cAAc,qBAAqB,CAAA;AAEnC,+EAA+E;AAC/E,cAAc,uBAAuB,CAAA"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;GAmBG;AAEH,8EAA8E;AAC9E,cAAc,gBAAgB,CAAA;AAC9B,cAAc,iBAAiB,CAAA;AAC/B,cAAc,sBAAsB,CAAA;AACpC,cAAc,kBAAkB,CAAA;AAChC,cAAc,oBAAoB,CAAA;AAClC,cAAc,gBAAgB,CAAA;AAC9B,cAAc,iBAAiB,CAAA;AAC/B,cAAc,gBAAgB,CAAA;AAC9B,cAAc,kBAAkB,CAAA;AAChC,cAAc,kBAAkB,CAAA;AAChC,cAAc,oBAAoB,CAAA;AAClC,cAAc,iBAAiB,CAAA;AAC/B,cAAc,kBAAkB,CAAA;AAEhC,8EAA8E;AAC9E,cAAc,sBAAsB,CAAA;AACpC,cAAc,oBAAoB,CAAA;AAClC,cAAc,qBAAqB,CAAA;AAEnC,8EAA8E;AAC9E,cAAc,qBAAqB,CAAA;AAEnC,+EAA+E;AAC/E,cAAc,uBAAuB,CAAA"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "mochi-avatar",
3
- "version": "1.0.0",
3
+ "version": "1.1.0",
4
4
  "description": "Mochi \u2014 a soft-body companion character, and the engine that draws her. Superellipse geometry, area-preserving squash, spring physics and an idle layer. Canvas2D, SVG, or one custom element. Zero runtime dependencies.",
5
5
  "license": "SEE LICENSE IN LICENSE.md",
6
6
  "author": "HANDO K.K.",
@@ -67,6 +67,8 @@
67
67
  "packageManager": "pnpm@10.33.0",
68
68
  "scripts": {
69
69
  "build": "tsc -p tsconfig.build.json",
70
+ "assets": "pnpm build && node scripts/hero.mjs",
71
+ "pets": "pnpm build && for f in matcha sakura kinako yuzu ramune budo; do node examples/codex-pet/render.mjs $f && python3 examples/codex-pet/assemble.py $f >/dev/null; done",
70
72
  "test": "vitest run",
71
73
  "test:watch": "vitest",
72
74
  "test:coverage": "vitest run --coverage",