peachsim 0.1.630 → 0.1.631

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 (89) hide show
  1. package/cli/app-fonts.ts +23 -4
  2. package/cli/bridge-flow-runner.ts +35 -28
  3. package/cli/command-registry.ts +1 -0
  4. package/cli/commands/compat.ts +11 -60
  5. package/cli/commands/control.ts +12 -5
  6. package/cli/commands/detect.ts +289 -26
  7. package/cli/commands/inspect/core.ts +1 -1
  8. package/cli/commands/inspect.ts +4 -0
  9. package/cli/commands/maestro.ts +3 -1
  10. package/cli/commands/project-report.ts +386 -0
  11. package/cli/commands/projectReportContract.ts +42 -0
  12. package/cli/commands/report-issue.ts +38 -54
  13. package/cli/commands/setup.ts +6 -4
  14. package/cli/commands/telemetry.ts +8 -3
  15. package/cli/commands/test.ts +347 -134
  16. package/cli/main.ts +11 -1
  17. package/cli/outbound-endpoints.ts +2 -1
  18. package/cli/privacy.ts +1 -2
  19. package/cli/runtime-diagnostics.ts +51 -0
  20. package/cli/telemetry.ts +78 -7
  21. package/detox/index.ts +3 -8
  22. package/dist-lib/agent-daemon-client.cjs +1 -1
  23. package/dist-lib/agent-events.cjs +1 -1
  24. package/dist-lib/agent-identity.cjs +1 -1
  25. package/dist-lib/agent-sessions.cjs +1 -1
  26. package/dist-lib/attached-projects.cjs +1 -1
  27. package/dist-lib/auth/shared-session.cjs +1 -1
  28. package/dist-lib/backend-origin.cjs +1 -1
  29. package/dist-lib/beta.cjs +1 -1
  30. package/dist-lib/beta.mjs +1 -1
  31. package/dist-lib/bridge-constants.cjs +1 -1
  32. package/dist-lib/bridge-contract-input.cjs +1 -1
  33. package/dist-lib/bridge-contract-input.mjs +1 -1
  34. package/dist-lib/bridge-contract.cjs +1 -1
  35. package/dist-lib/bridge-contract.mjs +1 -1
  36. package/dist-lib/capture-contract.cjs +1 -1
  37. package/dist-lib/capture-contract.mjs +1 -1
  38. package/dist-lib/cli-constants.cjs +1 -1
  39. package/dist-lib/cloud-contract.cjs +1 -1
  40. package/dist-lib/cloud-contract.mjs +1 -1
  41. package/dist-lib/cloud-test-args.cjs +1 -1
  42. package/dist-lib/cloud-test-args.mjs +1 -1
  43. package/dist-lib/cloud.cjs +1 -1
  44. package/dist-lib/cloud.mjs +1 -1
  45. package/dist-lib/config.cjs +1 -1
  46. package/dist-lib/detox/index.cjs +2 -7
  47. package/dist-lib/dev-bundle-resolution.cjs +1 -1
  48. package/dist-lib/home-paths.cjs +8 -5
  49. package/dist-lib/host/bridge-host.cjs +110 -67
  50. package/dist-lib/host/fetch-proxy-handler.cjs +1 -1
  51. package/dist-lib/host/fetch-proxy-overrides.cjs +1 -1
  52. package/dist-lib/host/fetch-proxy-overrides.mjs +1 -1
  53. package/dist-lib/host/replacement-module-handler.cjs +1 -1
  54. package/dist-lib/host/websocket-proxy.cjs +1 -1
  55. package/dist-lib/index.cjs +5 -1
  56. package/dist-lib/jump-to-source-babel.cjs +1 -1
  57. package/dist-lib/jump-to-source-native.cjs +1 -1
  58. package/dist-lib/kotlin-host.cjs +1 -1
  59. package/dist-lib/menu.cjs +11 -1
  60. package/dist-lib/menu.mjs +11 -1
  61. package/dist-lib/metro-fingerprint-registry.cjs +1 -1
  62. package/dist-lib/metro-fingerprint-registry.mjs +1 -1
  63. package/dist-lib/metro-production-bundle.cjs +1 -1
  64. package/dist-lib/metro-production-bundle.mjs +1 -1
  65. package/dist-lib/metro.cjs +1 -1
  66. package/dist-lib/native-app-identity.cjs +1 -1
  67. package/dist-lib/native-app-identity.mjs +1 -1
  68. package/dist-lib/profiles.cjs +1 -1
  69. package/dist-lib/public-brand.cjs +1 -1
  70. package/dist-lib/react-native-host-modules.cjs +1 -1
  71. package/dist-lib/react-native-host-modules.mjs +1 -1
  72. package/dist-lib/render-mode.cjs +1 -1
  73. package/dist-lib/scripts/dev-server-scanner.cjs +1 -1
  74. package/dist-lib/sdk.cjs +3 -1
  75. package/dist-lib/sdk.mjs +2 -1
  76. package/dist-lib/skills.cjs +589 -268
  77. package/dist-lib/swift-compile.cjs +1 -1
  78. package/dist-lib/swift-compile.mjs +1 -1
  79. package/dist-lib/swift-package.cjs +1 -1
  80. package/dist-lib/swift-package.mjs +1 -1
  81. package/dist-lib/swift-submit.cjs +1 -1
  82. package/dist-lib/swift-submit.mjs +1 -1
  83. package/dist-lib/swift.cjs +439 -167
  84. package/dist-lib/vite-swift.cjs +1 -1
  85. package/dist-lib/vite.cjs +1 -1
  86. package/package.json +2 -1
  87. package/skills/contrast/SKILL.md +1 -0
  88. package/src/home-paths.ts +11 -9
  89. package/src/menu.ts +11 -0
@@ -1,4 +1,4 @@
1
- /*! rnx v0.1.630 | (c) 2026 Tamagui LLC | Proprietary — see LICENSE */
1
+ /*! rnx v0.1.631 | (c) 2026 Tamagui LLC | Proprietary — see LICENSE */
2
2
  let __sootsim_import_meta_url = ''; try { __sootsim_import_meta_url = require('url').pathToFileURL(__filename).href; } catch {}
3
3
  "use strict";
4
4
  var __create = Object.create;
@@ -2835,6 +2835,12 @@ var settingsSchema = {
2835
2835
  options: import_menu.SOOTSIM_RENDER_RESOLUTION_LEVELS,
2836
2836
  group: "simulator"
2837
2837
  },
2838
+ slowAnimations: {
2839
+ type: "boolean",
2840
+ default: false,
2841
+ description: "Run simulated app and OS animations at one tenth speed",
2842
+ group: "simulator"
2843
+ },
2838
2844
  showTouches: {
2839
2845
  type: "boolean",
2840
2846
  default: false,
@@ -3069,6 +3075,7 @@ function readUrlSettingOverrides(search) {
3069
3075
  out.colorScheme = colorScheme;
3070
3076
  }
3071
3077
  for (const key of [
3078
+ "slowAnimations",
3072
3079
  "reduceMotion",
3073
3080
  "boldText",
3074
3081
  "largerAccessibilitySizes",
@@ -3154,6 +3161,7 @@ function getDefaults() {
3154
3161
  // ../peach-engine/src/settings/persistence.ts
3155
3162
  var STORAGE_KEY = "sootsim:settings";
3156
3163
  var PERSISTED_KEYS = [
3164
+ "slowAnimations",
3157
3165
  "productAnalytics",
3158
3166
  "crashReports",
3159
3167
  "colorScheme",
@@ -3868,7 +3876,7 @@ function getTimelineChannel() {
3868
3876
  return cached;
3869
3877
  }
3870
3878
  const bc = new globalObj.BroadcastChannel(TIMELINE_BROADCAST_CHANNEL);
3871
- const listeners7 = /* @__PURE__ */ new Set();
3879
+ const listeners8 = /* @__PURE__ */ new Set();
3872
3880
  bc.onmessage = (ev) => {
3873
3881
  const e = ev.data;
3874
3882
  if (!e || typeof e !== "object") return;
@@ -3880,7 +3888,7 @@ function getTimelineChannel() {
3880
3888
  } else if (e.type !== "control") {
3881
3889
  return;
3882
3890
  }
3883
- for (const fn of listeners7) {
3891
+ for (const fn of listeners8) {
3884
3892
  try {
3885
3893
  fn(e);
3886
3894
  } catch {
@@ -3895,8 +3903,8 @@ function getTimelineChannel() {
3895
3903
  }
3896
3904
  },
3897
3905
  subscribe(listener) {
3898
- listeners7.add(listener);
3899
- return () => listeners7.delete(listener);
3906
+ listeners8.add(listener);
3907
+ return () => listeners8.delete(listener);
3900
3908
  },
3901
3909
  close() {
3902
3910
  try {
@@ -4248,10 +4256,10 @@ function peekDeviceSpec() {
4248
4256
  return spec;
4249
4257
  }
4250
4258
  function onDeviceSpecChange(listener) {
4251
- const listeners7 = getListenerSet();
4252
- listeners7.add(listener);
4259
+ const listeners8 = getListenerSet();
4260
+ listeners8.add(listener);
4253
4261
  return () => {
4254
- listeners7.delete(listener);
4262
+ listeners8.delete(listener);
4255
4263
  };
4256
4264
  }
4257
4265
 
@@ -5256,6 +5264,19 @@ function isNativeAnimationGraph(value) {
5256
5264
  }
5257
5265
  return false;
5258
5266
  }
5267
+ function samplePiecewiseLinear(input, inputRange, outputRange, clamp) {
5268
+ let i = 0;
5269
+ for (; i < inputRange.length - 1; i++) {
5270
+ if (input <= inputRange[i + 1]) break;
5271
+ }
5272
+ i = Math.min(i, inputRange.length - 2);
5273
+ if (inputRange[i + 1] === inputRange[i]) {
5274
+ return input <= inputRange[i] ? outputRange[i] : outputRange[i + 1];
5275
+ }
5276
+ const t = (input - inputRange[i]) / (inputRange[i + 1] - inputRange[i]);
5277
+ const clamped = clamp ? Math.max(0, Math.min(1, t)) : t;
5278
+ return outputRange[i] + (outputRange[i + 1] - outputRange[i]) * clamped;
5279
+ }
5259
5280
  function cubicBezierAxisAt(t, p1, p2) {
5260
5281
  const u = 1 - t;
5261
5282
  return 3 * u * u * t * p1 + 3 * u * t * t * p2 + t * t * t;
@@ -5280,6 +5301,46 @@ function sampleCubicBezierEasing(x, x1, y1, x2, y2) {
5280
5301
  }
5281
5302
  return cubicBezierAxisAt((lo + hi) / 2, y1, y2);
5282
5303
  }
5304
+ function sampleNativeAnimationGraph(graph, epochMs) {
5305
+ if (graph.kind === "interpolate") {
5306
+ return samplePiecewiseLinear(
5307
+ sampleNativeAnimationGraph(graph.parent, epochMs),
5308
+ graph.inputRange,
5309
+ graph.outputRange,
5310
+ graph.clamp
5311
+ );
5312
+ }
5313
+ if (graph.kind === "spring") {
5314
+ const elapsedMs = epochMs - graph.anchorEpochMs;
5315
+ if (elapsedMs <= 0) return graph.from;
5316
+ if (elapsedMs >= graph.restMs) return graph.to;
5317
+ return evaluateRNSpringAt(graph.from, graph, graph.to, elapsedMs / 1e3).position;
5318
+ }
5319
+ if (graph.kind === "timed") {
5320
+ const elapsedMs = epochMs - graph.anchorEpochMs;
5321
+ if (elapsedMs <= 0) return graph.from;
5322
+ if (elapsedMs >= graph.durationMs) return graph.to;
5323
+ const eased = sampleCubicBezierEasing(
5324
+ elapsedMs / graph.durationMs,
5325
+ graph.x1,
5326
+ graph.y1,
5327
+ graph.x2,
5328
+ graph.y2
5329
+ );
5330
+ return graph.from + (graph.to - graph.from) * eased;
5331
+ }
5332
+ const span = graph.to - graph.from;
5333
+ if (span === 0) return graph.anchorValue;
5334
+ const progressed = (epochMs - graph.anchorEpochMs) / graph.periodMs * span;
5335
+ const wrapped = (graph.anchorValue + progressed - graph.from) % span;
5336
+ return graph.from + (wrapped < 0 ? wrapped + span : wrapped);
5337
+ }
5338
+ function getNativeAnimationGraphEndEpochMs(graph) {
5339
+ if (graph.kind === "interpolate") return getNativeAnimationGraphEndEpochMs(graph.parent);
5340
+ if (graph.kind === "spring") return graph.anchorEpochMs + graph.restMs;
5341
+ if (graph.kind === "timed") return graph.anchorEpochMs + graph.durationMs;
5342
+ return null;
5343
+ }
5283
5344
  function createTimedAnimationGraph(fromValue, toValue, durationMs, easing, anchorEpochMs) {
5284
5345
  const points = easing.__bezier;
5285
5346
  if (!points || points.length !== 4 || !points.every(isFiniteNumber)) return null;
@@ -5299,15 +5360,70 @@ function createTimedAnimationGraph(fromValue, toValue, durationMs, easing, ancho
5299
5360
  };
5300
5361
  }
5301
5362
 
5363
+ // ../peach-engine/src/engine/animation-timeline.ts
5364
+ var hostTimeOrigin = performance.timeOrigin;
5365
+ var clock = { anchorH: 0, anchorA: 0, rate: 1, revision: 0 };
5366
+ var steppedHostNow = null;
5367
+ var steppedAnimationNow = null;
5368
+ var listeners5 = /* @__PURE__ */ new Set();
5369
+ function mapHostAnimationTime(hostNow) {
5370
+ return clock.anchorA + (hostNow - clock.anchorH) * clock.rate;
5371
+ }
5372
+ function getRawHostTime() {
5373
+ return steppedHostNow ?? performance.timeOrigin + performance.now() - hostTimeOrigin;
5374
+ }
5375
+ function getAnimationTime() {
5376
+ return steppedAnimationNow ?? mapHostAnimationTime(getRawHostTime());
5377
+ }
5378
+ function getAnimationTimeOrigin() {
5379
+ return hostTimeOrigin;
5380
+ }
5381
+ function subscribeAnimationClock(listener) {
5382
+ listeners5.add(listener);
5383
+ return () => {
5384
+ listeners5.delete(listener);
5385
+ };
5386
+ }
5387
+ function animationDelayToWallTime(delayMs) {
5388
+ return Math.max(0, delayMs) / clock.rate;
5389
+ }
5390
+ var deadlineListeners = /* @__PURE__ */ new Set();
5391
+ function scheduleAnimationDeadline(deadline, callback) {
5392
+ let timer = null;
5393
+ let active = true;
5394
+ const cancel = () => {
5395
+ active = false;
5396
+ if (timer !== null) clearTimeout(timer);
5397
+ timer = null;
5398
+ listeners5.delete(update);
5399
+ deadlineListeners.delete(update);
5400
+ };
5401
+ const update = () => {
5402
+ if (!active) return;
5403
+ if (timer !== null) clearTimeout(timer);
5404
+ timer = null;
5405
+ const remaining = deadline - getAnimationTime();
5406
+ if (remaining <= 0) {
5407
+ cancel();
5408
+ callback();
5409
+ } else if (steppedHostNow === null) {
5410
+ timer = setTimeout(update, animationDelayToWallTime(remaining));
5411
+ }
5412
+ };
5413
+ listeners5.add(update);
5414
+ deadlineListeners.add(update);
5415
+ queueMicrotask(update);
5416
+ return cancel;
5417
+ }
5418
+
5302
5419
  // ../peach-engine/src/engine/frame-clock.ts
5303
- var animationEpochMs = null;
5304
5420
  function getAnimationEpochTime() {
5305
- return animationEpochMs ?? Date.now();
5421
+ return getAnimationTimeOrigin() + getAnimationTime();
5306
5422
  }
5307
5423
  function getAnimationTimestamp() {
5308
5424
  const readTimestamp = Reflect.get(globalThis, "_getAnimationTimestamp");
5309
- const timestamp = typeof readTimestamp === "function" ? Number(readTimestamp()) : performance.now();
5310
- return Number.isFinite(timestamp) ? timestamp : performance.now();
5425
+ const timestamp = typeof readTimestamp === "function" ? Number(readTimestamp()) : getAnimationTime();
5426
+ return Number.isFinite(timestamp) ? timestamp : getAnimationTime();
5311
5427
  }
5312
5428
  var fallbackTimers = /* @__PURE__ */ new Map();
5313
5429
  var nextFallbackFrameId = -1;
@@ -5321,18 +5437,19 @@ function requestFrame(callback) {
5321
5437
  const id2 = nextFallbackFrameId--;
5322
5438
  const timer2 = setTimeout(() => {
5323
5439
  fallbackTimers.delete(id2);
5324
- callback(performance.now());
5440
+ callback(getAnimationTime());
5325
5441
  }, 16);
5326
5442
  fallbackTimers.set(id2, timer2);
5327
5443
  return id2;
5328
5444
  }
5329
5445
  const raf = ensureSootSim().state.requestAnimationFrame;
5330
5446
  if (typeof raf === "function") return raf(callback);
5331
- if (typeof requestAnimationFrame === "function") return requestAnimationFrame(callback);
5447
+ if (typeof requestAnimationFrame === "function")
5448
+ return requestAnimationFrame((now) => callback(mapHostAnimationTime(now)));
5332
5449
  const id = nextFallbackFrameId--;
5333
5450
  const timer = setTimeout(() => {
5334
5451
  fallbackTimers.delete(id);
5335
- callback(performance.now());
5452
+ callback(getAnimationTime());
5336
5453
  }, 16);
5337
5454
  fallbackTimers.set(id, timer);
5338
5455
  return id;
@@ -5358,6 +5475,8 @@ function isLockstepCaptureActive() {
5358
5475
  }
5359
5476
 
5360
5477
  // ../peach-engine/src/engine/native-animation-driver.ts
5478
+ var activeAnimations = /* @__PURE__ */ new Map();
5479
+ var rafId = null;
5361
5480
  var remoteReleaseCallback = null;
5362
5481
  var externalValueGraphs = /* @__PURE__ */ new WeakMap();
5363
5482
  var externalGraphChangeListeners = /* @__PURE__ */ new Set();
@@ -5375,6 +5494,52 @@ function clearExternalValueAnimationGraph(value) {
5375
5494
  notifyExternalGraphChange(value, null);
5376
5495
  remoteReleaseCallback?.(value);
5377
5496
  }
5497
+ function clearRemoteCompletionTimer(anim) {
5498
+ if (anim.remoteCompletionTimer !== null) {
5499
+ clearTimeout(anim.remoteCompletionTimer);
5500
+ anim.remoteCompletionTimer = null;
5501
+ }
5502
+ }
5503
+ var lockstepActive = false;
5504
+ function scheduleRemoteCompletion(anim) {
5505
+ if (lockstepActive || anim.remoteCompletionTimer !== null || !anim.graph) return;
5506
+ const endEpochMs = getNativeAnimationGraphEndEpochMs(anim.graph);
5507
+ if (endEpochMs === null) return;
5508
+ anim.remoteCompletionTimer = setTimeout(
5509
+ () => {
5510
+ anim.remoteCompletionTimer = null;
5511
+ if (lockstepActive || activeAnimations.get(anim.id) !== anim || !anim.remoteDriven)
5512
+ return;
5513
+ if (getAnimationEpochTime() < endEpochMs) {
5514
+ scheduleRemoteCompletion(anim);
5515
+ return;
5516
+ }
5517
+ activeAnimations.delete(anim.id);
5518
+ settleRemoteDrivenValue(anim);
5519
+ remoteReleaseCallback?.(anim.value);
5520
+ anim.callback?.({ finished: true, reason: "completed" });
5521
+ if (activeAnimations.size === 0) stopLoop();
5522
+ },
5523
+ animationDelayToWallTime(endEpochMs - getAnimationEpochTime())
5524
+ );
5525
+ }
5526
+ subscribeAnimationClock(() => {
5527
+ for (const anim of activeAnimations.values()) {
5528
+ clearRemoteCompletionTimer(anim);
5529
+ if (anim.remoteDriven) scheduleRemoteCompletion(anim);
5530
+ }
5531
+ });
5532
+ function settleRemoteDrivenValue(anim) {
5533
+ if (anim.remoteDriven && anim.graph) {
5534
+ anim.value._value = sampleNativeAnimationGraph(anim.graph, getAnimationEpochTime());
5535
+ }
5536
+ }
5537
+ function stopLoop() {
5538
+ if (rafId != null) {
5539
+ cancelFrame(rafId);
5540
+ rafId = null;
5541
+ }
5542
+ }
5378
5543
 
5379
5544
  // ../peach-engine/src/engine/animated.ts
5380
5545
  function cubicBezier(x1, y1, x2, y2) {
@@ -5628,12 +5793,13 @@ var TIMING_CONVERGE_STEP_GRACE_MS = 120;
5628
5793
  function timing(value, config) {
5629
5794
  const duration = config.duration ?? 500;
5630
5795
  const easing = config.easing ?? defaultTimingEasing;
5631
- let rafId = null;
5796
+ let rafId2 = null;
5632
5797
  let startTime = null;
5633
5798
  let fromValue;
5634
5799
  let stopped = false;
5635
5800
  let completed = false;
5636
5801
  let engineAnimationId = null;
5802
+ let unsubscribeClock = null;
5637
5803
  let convergeTimer = null;
5638
5804
  let endCallback = null;
5639
5805
  let animationStartedAt = 0;
@@ -5647,6 +5813,8 @@ function timing(value, config) {
5647
5813
  }
5648
5814
  function clearRegistration() {
5649
5815
  clearConvergeTimer();
5816
+ unsubscribeClock?.();
5817
+ unsubscribeClock = null;
5650
5818
  if (engineAnimationId != null) {
5651
5819
  unregisterEngineAnimation(engineAnimationId);
5652
5820
  engineAnimationId = null;
@@ -5665,9 +5833,9 @@ function timing(value, config) {
5665
5833
  const shouldNotifyCancel = !completed;
5666
5834
  completed = true;
5667
5835
  clearRegistration();
5668
- if (rafId !== null) {
5669
- cancelFrame(rafId);
5670
- rafId = null;
5836
+ if (rafId2 !== null) {
5837
+ cancelFrame(rafId2);
5838
+ rafId2 = null;
5671
5839
  }
5672
5840
  if (shouldNotifyCancel) {
5673
5841
  if (animationEventId !== null) {
@@ -5693,6 +5861,7 @@ function timing(value, config) {
5693
5861
  fromValue = value.getValue();
5694
5862
  const toValue = config.toValue;
5695
5863
  startTime = null;
5864
+ const watchdogStart = getAnimationTimestamp();
5696
5865
  animationStartedAt = performance.now();
5697
5866
  engineAnimationId = registerEngineAnimation({
5698
5867
  value,
@@ -5747,13 +5916,18 @@ function timing(value, config) {
5747
5916
  convergeTimer = null;
5748
5917
  if (stopped || completed) return;
5749
5918
  if (isLockstepCaptureActive()) {
5750
- scheduleConverge(duration + TIMING_CONVERGE_STEP_GRACE_MS);
5919
+ scheduleConverge(TIMING_CONVERGE_STEP_GRACE_MS);
5920
+ return;
5921
+ }
5922
+ const remaining = duration - (getAnimationTimestamp() - (startTime ?? watchdogStart));
5923
+ if (remaining > 0) {
5924
+ scheduleConverge(TIMING_CONVERGE_STEP_GRACE_MS);
5751
5925
  return;
5752
5926
  }
5753
5927
  completed = true;
5754
- if (rafId !== null) {
5755
- cancelFrame(rafId);
5756
- rafId = null;
5928
+ if (rafId2 !== null) {
5929
+ cancelFrame(rafId2);
5930
+ rafId2 = null;
5757
5931
  }
5758
5932
  value._setValueFromAnimation(toValue);
5759
5933
  clearRegistration();
@@ -5773,9 +5947,14 @@ function timing(value, config) {
5773
5947
  }
5774
5948
  notifyEnd({ finished: true });
5775
5949
  };
5776
- const scheduleConverge = (delayMs) => {
5950
+ const scheduleConverge = (graceMs) => {
5777
5951
  clearConvergeTimer();
5778
- convergeTimer = setTimeout(finishFromWatchdog, delayMs);
5952
+ convergeTimer = setTimeout(
5953
+ finishFromWatchdog,
5954
+ animationDelayToWallTime(
5955
+ duration - (getAnimationTimestamp() - (startTime ?? watchdogStart))
5956
+ ) + graceMs
5957
+ );
5779
5958
  };
5780
5959
  function step(timestamp) {
5781
5960
  if (stopped) {
@@ -5783,12 +5962,12 @@ function timing(value, config) {
5783
5962
  return;
5784
5963
  }
5785
5964
  if (completed) {
5786
- rafId = null;
5965
+ rafId2 = null;
5787
5966
  return;
5788
5967
  }
5789
5968
  if (startTime === null) {
5790
5969
  startTime = timestamp;
5791
- scheduleConverge(duration + TIMING_CONVERGE_STEP_GRACE_MS);
5970
+ scheduleConverge(TIMING_CONVERGE_STEP_GRACE_MS);
5792
5971
  }
5793
5972
  const elapsed = timestamp - startTime;
5794
5973
  const progress = Math.min(elapsed / duration, 1);
@@ -5801,9 +5980,9 @@ function timing(value, config) {
5801
5980
  }
5802
5981
  fireEngineAnimationStepRender(value);
5803
5982
  if (progress < 1) {
5804
- rafId = requestFrame(step);
5983
+ rafId2 = requestFrame(step);
5805
5984
  } else {
5806
- rafId = null;
5985
+ rafId2 = null;
5807
5986
  completed = true;
5808
5987
  clearRegistration();
5809
5988
  const eventId = animationEventId;
@@ -5823,8 +6002,11 @@ function timing(value, config) {
5823
6002
  notifyEnd({ finished: true });
5824
6003
  }
5825
6004
  }
5826
- scheduleConverge(duration + TIMING_CONVERGE_START_GRACE_MS);
5827
- rafId = requestFrame(step);
6005
+ unsubscribeClock = subscribeAnimationClock(
6006
+ () => scheduleConverge(TIMING_CONVERGE_STEP_GRACE_MS)
6007
+ );
6008
+ scheduleConverge(TIMING_CONVERGE_START_GRACE_MS);
6009
+ rafId2 = requestFrame(step);
5828
6010
  }
5829
6011
  animation = { start, stop };
5830
6012
  return animation;
@@ -7363,13 +7545,13 @@ var loadedVectors = /* @__PURE__ */ new Map();
7363
7545
  var failedVectors = /* @__PURE__ */ new Set();
7364
7546
  var assetPromises = /* @__PURE__ */ new Map();
7365
7547
  var symbolPromises = /* @__PURE__ */ new Map();
7366
- var listeners5 = /* @__PURE__ */ new Map();
7548
+ var listeners6 = /* @__PURE__ */ new Map();
7367
7549
  function clearCatalogState() {
7368
7550
  loadedVectors.clear();
7369
7551
  failedVectors.clear();
7370
7552
  assetPromises.clear();
7371
7553
  symbolPromises.clear();
7372
- listeners5.clear();
7554
+ listeners6.clear();
7373
7555
  }
7374
7556
  onMaterialSymbolCatalogConfigure(clearCatalogState);
7375
7557
 
@@ -9826,9 +10008,9 @@ var liveScrollIndicators = /* @__PURE__ */ new Set();
9826
10008
  function clearScrollIndicatorFade(node) {
9827
10009
  const state5 = indicatorStates.get(node);
9828
10010
  if (!state5) return;
9829
- if (state5.fadeTimerId !== null && state5.fadeTimerId !== void 0) {
9830
- clearTimeout(state5.fadeTimerId);
9831
- state5.fadeTimerId = null;
10011
+ if (state5.cancelFadeTimer !== null && state5.cancelFadeTimer !== void 0) {
10012
+ state5.cancelFadeTimer();
10013
+ state5.cancelFadeTimer = null;
9832
10014
  }
9833
10015
  state5.opacity = 0;
9834
10016
  state5.lastActiveTime = 0;
@@ -12671,6 +12853,7 @@ var SootSimNode = class _SootSimNode {
12671
12853
  _svgPath = null;
12672
12854
  _svgPathData = null;
12673
12855
  _svgPathBounds = null;
12856
+ _svgPathTightBounds = null;
12674
12857
  _svgPathCkVersion = 0;
12675
12858
  // cached emoji grapheme ranges for native-emoji overdraw. computed once
12676
12859
  // alongside the paragraph; null when native emoji isn't available.
@@ -13361,6 +13544,34 @@ var CanvasKitPaintPool = class {
13361
13544
  var _paintPool = new CanvasKitPaintPool();
13362
13545
  var _surfacePool = new CanvasKitSiblingSurfacePool(2);
13363
13546
 
13547
+ // ../peach-engine/src/platform/adapter.ts
13548
+ var IOS_ADAPTER = Object.freeze({
13549
+ id: "ios",
13550
+ displayName: "iOS",
13551
+ isIOS: true,
13552
+ isAndroid: false,
13553
+ select: (registry) => registry.ios
13554
+ });
13555
+ var ANDROID_ADAPTER = Object.freeze({
13556
+ id: "android",
13557
+ displayName: "Android",
13558
+ isIOS: false,
13559
+ isAndroid: true,
13560
+ select: (registry) => registry.android
13561
+ });
13562
+ var RUNTIME_PLATFORM_ADAPTERS = Object.freeze({
13563
+ ios: IOS_ADAPTER,
13564
+ android: ANDROID_ADAPTER
13565
+ });
13566
+ function getRuntimePlatformAdapter(platform) {
13567
+ return RUNTIME_PLATFORM_ADAPTERS[platform];
13568
+ }
13569
+
13570
+ // ../peach-engine/src/platform/current-platform.ts
13571
+ function currentRuntimePlatform() {
13572
+ return Platform.OS;
13573
+ }
13574
+
13364
13575
  // ../peach-engine/src/engine/node-helpers.ts
13365
13576
  function readNumberish(v) {
13366
13577
  if (typeof v === "number") return v;
@@ -14141,7 +14352,8 @@ var COMMON_SF_SYMBOL_VECTORS = {
14141
14352
  d: "M8.602 23.115L15.398 23.115 15.398 15.545C15.398 15.006 15.047 14.654 14.508 14.654L9.504 14.654C8.965 14.654 8.602 15.006 8.602 15.545ZM-0.984 12.193C-0.656 12.193-0.387 12.018-0.141 11.818L11.59 1.963C11.719 1.857 11.871 1.799 12 1.799 12.141 1.799 12.281 1.857 12.41 1.963L24.152 11.818C24.387 12.018 24.656 12.193 24.984 12.193 25.617 12.193 25.992 11.736 25.992 11.256 25.992 10.986 25.887 10.705 25.617 10.494L13.406 0.24C12.961-0.135 12.48-0.322 12-0.322 11.52-0.322 11.039-0.135 10.594 0.24L-1.617 10.494C-1.875 10.705-1.992 10.986-1.992 11.256-1.992 11.736-1.617 12.193-0.984 12.193ZM19.629 5.971L22.57 8.455 22.57 3.17C22.57 2.654 22.242 2.326 21.727 2.326L20.473 2.326C19.969 2.326 19.629 2.654 19.629 3.17ZM4.078 24.322L19.934 24.322C21.598 24.322 22.57 23.373 22.57 21.732L22.57 8.748 20.684 7.471 20.684 21.264C20.684 22.025 20.273 22.436 19.535 22.436L4.477 22.436C3.727 22.436 3.316 22.025 3.316 21.264L3.316 7.482 1.43 8.748 1.43 21.732C1.43 23.385 2.402 24.322 4.078 24.322Z"
14142
14353
  }
14143
14354
  ],
14144
- box: [-5, -2.425, 34, 28.867]
14355
+ box: [-5, -2.425, 34, 28.867],
14356
+ controlBoxes: { house: [18.666666666666668, 15.666666666666666, 3] }
14145
14357
  },
14146
14358
  "house.fill": {
14147
14359
  viewBox: "0 0 24 24",
@@ -14151,7 +14363,8 @@ var COMMON_SF_SYMBOL_VECTORS = {
14151
14363
  d: "M8.836 22.436L8.836 15.545C8.836 15.006 9.199 14.654 9.738 14.654L14.273 14.654C14.824 14.654 15.164 15.006 15.164 15.545L15.164 22.436ZM1.664 21.744C1.664 23.373 2.648 24.322 4.301 24.322L19.711 24.322C21.363 24.322 22.336 23.373 22.336 21.744L22.336 12.439 12.703 4.365C12.258 3.99 11.73 4.002 11.297 4.365L1.664 12.439ZM-0.984 12.193C-0.656 12.193-0.387 12.018-0.141 11.818L11.59 1.963C11.719 1.857 11.871 1.799 12 1.799 12.141 1.799 12.281 1.857 12.41 1.963L24.152 11.818C24.387 12.018 24.656 12.193 24.984 12.193 25.617 12.193 25.992 11.736 25.992 11.256 25.992 10.986 25.887 10.705 25.617 10.494L13.406 0.24C12.961-0.135 12.48-0.322 12-0.322 11.52-0.322 11.039-0.135 10.594 0.24L-1.617 10.494C-1.875 10.705-1.992 10.986-1.992 11.256-1.992 11.736-1.617 12.193-0.984 12.193ZM19.629 5.971L22.57 8.455 22.57 3.17C22.57 2.654 22.242 2.326 21.727 2.326L20.473 2.326C19.969 2.326 19.629 2.654 19.629 3.17Z"
14152
14364
  }
14153
14365
  ],
14154
- box: [-5, -2.425, 34, 28.867]
14366
+ box: [-5, -2.425, 34, 28.867],
14367
+ controlBoxes: { "house.fill": [18.666666666666668, 15.666666666666666, 3] }
14155
14368
  },
14156
14369
  magnifyingglass: {
14157
14370
  viewBox: "0 0 24 24",
@@ -14161,7 +14374,10 @@ var COMMON_SF_SYMBOL_VECTORS = {
14161
14374
  d: "M0.551 9.791C0.551 14.947 4.746 19.143 9.902 19.143 11.941 19.143 13.805 18.486 15.34 17.385L21.105 23.162C21.375 23.432 21.727 23.561 22.102 23.561 22.898 23.561 23.449 22.963 23.449 22.178 23.449 21.803 23.309 21.463 23.063 21.217L17.332 15.451C18.539 13.881 19.254 11.924 19.254 9.791 19.254 4.635 15.059 0.439 9.902 0.439 4.746 0.439 0.551 4.635 0.551 9.791ZM2.555 9.791C2.555 5.736 5.848 2.443 9.902 2.443 13.957 2.443 17.25 5.736 17.25 9.791 17.25 13.846 13.957 17.139 9.902 17.139 5.848 17.139 2.555 13.846 2.555 9.791Z"
14162
14375
  }
14163
14376
  ],
14164
- box: [-2.15, -1.675, 28.3, 27.367]
14377
+ box: [-2.15, -1.675, 28.3, 27.367],
14378
+ controlBoxes: {
14379
+ magnifyingglass: [15.333333333333334, 14.666666666666666, 2.6666666666666665]
14380
+ }
14165
14381
  },
14166
14382
  "person.crop.circle": {
14167
14383
  viewBox: "0 0 24 24",
@@ -14171,7 +14387,8 @@ var COMMON_SF_SYMBOL_VECTORS = {
14171
14387
  d: "M12 23.953C18.598 23.953 23.953 18.598 23.953 12 23.953 5.402 18.598 0.047 12 0.047 5.402 0.047 0.047 5.402 0.047 12 0.047 18.598 5.402 23.953 12 23.953ZM12 21.961C6.492 21.961 2.039 17.508 2.039 12 2.039 6.492 6.492 2.039 12 2.039 17.508 2.039 21.961 6.492 21.961 12 21.961 17.508 17.508 21.961 12 21.961ZM20.016 19.723L19.98 19.594C19.406 17.871 16.313 15.984 12 15.984 7.699 15.984 4.605 17.871 4.02 19.582L3.984 19.723C6.094 21.809 9.715 23.027 12 23.027 14.297 23.027 17.883 21.82 20.016 19.723ZM12 13.992C14.262 14.016 16.02 12.094 16.02 9.574 16.02 7.207 14.25 5.25 12 5.25 9.75 5.25 7.969 7.207 7.98 9.574 7.992 12.094 9.75 13.969 12 13.992Z"
14172
14388
  }
14173
14389
  ],
14174
- box: [-2.075, -2.05, 28.167, 28.1]
14390
+ box: [-2.075, -2.05, 28.167, 28.1],
14391
+ controlBoxes: { "person.crop.circle": [15, 15, 3] }
14175
14392
  },
14176
14393
  gearshape: {
14177
14394
  viewBox: "0 0 24 24",
@@ -14181,7 +14398,10 @@ var COMMON_SF_SYMBOL_VECTORS = {
14181
14398
  d: "M10.816 24.527L13.184 24.527C14.086 24.527 14.789 23.977 14.988 23.109L15.492 20.918 15.867 20.789 17.777 21.961C18.539 22.43 19.418 22.324 20.063 21.68L21.703 20.051C22.348 19.406 22.453 18.516 21.984 17.766L20.789 15.867 20.93 15.516 23.121 15C23.977 14.801 24.539 14.086 24.539 13.195L24.539 10.875C24.539 9.984 23.988 9.281 23.121 9.07L20.953 8.543 20.801 8.168 21.996 6.27C22.465 5.52 22.371 4.641 21.715 3.984L20.074 2.344C19.441 1.711 18.563 1.594 17.801 2.063L15.891 3.234 15.492 3.082 14.988 0.891C14.789 0.023 14.086-0.527 13.184-0.527L10.816-0.527C9.914-0.527 9.211 0.023 9.012 0.891L8.496 3.082 8.098 3.234 6.199 2.063C5.438 1.594 4.547 1.711 3.914 2.344L2.285 3.984C1.629 4.641 1.523 5.52 2.004 6.27L3.188 8.168 3.047 8.543 0.879 9.07C0.012 9.281-0.539 9.984-0.539 10.875L-0.539 13.195C-0.539 14.086 0.023 14.801 0.879 15L3.07 15.516 3.199 15.867 2.016 17.766C1.535 18.516 1.652 19.406 2.297 20.051L3.926 21.68C4.57 22.324 5.461 22.43 6.223 21.961L8.121 20.789 8.496 20.918 9.012 23.109C9.211 23.977 9.914 24.527 10.816 24.527ZM11.004 22.699C10.805 22.699 10.699 22.617 10.664 22.43L9.961 19.523C9.246 19.348 8.578 19.066 8.074 18.75L5.52 20.32C5.379 20.426 5.215 20.414 5.086 20.262L3.703 18.879C3.574 18.75 3.563 18.609 3.656 18.445L5.227 15.914C4.957 15.422 4.652 14.754 4.465 14.039L1.559 13.348C1.371 13.313 1.289 13.207 1.289 13.008L1.289 11.051C1.289 10.84 1.359 10.746 1.559 10.711L4.453 10.008C4.641 9.246 4.992 8.555 5.203 8.121L3.645 5.59C3.539 5.414 3.551 5.273 3.68 5.133L5.074 3.773C5.215 3.633 5.344 3.621 5.52 3.715L8.051 5.25C8.555 4.969 9.27 4.676 9.973 4.477L10.664 1.57C10.699 1.383 10.805 1.301 11.004 1.301L12.996 1.301C13.195 1.301 13.301 1.383 13.324 1.57L14.039 4.5C14.766 4.688 15.398 4.98 15.926 5.262L18.469 3.715C18.656 3.621 18.773 3.633 18.926 3.773L20.309 5.133C20.449 5.273 20.449 5.414 20.344 5.59L18.785 8.121C19.008 8.555 19.348 9.246 19.535 10.008L22.441 10.711C22.629 10.746 22.711 10.84 22.711 11.051L22.711 13.008C22.711 13.207 22.617 13.313 22.441 13.348L19.523 14.039C19.336 14.754 19.043 15.422 18.762 15.914L20.332 18.445C20.426 18.609 20.426 18.75 20.285 18.879L18.914 20.262C18.773 20.414 18.621 20.426 18.469 20.32L15.914 18.75C15.41 19.066 14.754 19.348 14.039 19.523L13.324 22.43C13.301 22.617 13.195 22.699 12.996 22.699ZM12 16.465C14.473 16.465 16.465 14.473 16.465 12 16.465 9.527 14.473 7.535 12 7.535 9.527 7.535 7.535 9.527 7.535 12 7.535 14.473 9.527 16.465 12 16.465ZM12 14.648C10.535 14.648 9.352 13.465 9.352 12 9.352 10.535 10.535 9.352 12 9.352 13.465 9.352 14.648 10.535 14.648 12 14.648 13.465 13.465 14.648 12 14.648Z"
14182
14399
  }
14183
14400
  ],
14184
- box: [-2.65, -2.625, 29.3, 29.267]
14401
+ box: [-2.65, -2.625, 29.3, 29.267],
14402
+ controlBoxes: {
14403
+ gearshape: [15.666666666666666, 15.666666666666666, 3.3333333333333335]
14404
+ }
14185
14405
  },
14186
14406
  "photo.on.rectangle": {
14187
14407
  viewBox: "0 0 24 24",
@@ -14191,7 +14411,8 @@ var COMMON_SF_SYMBOL_VECTORS = {
14191
14411
  d: "M6.926 23.25L22.617 23.25C24.656 23.25 25.746 22.219 25.746 20.168L25.746 19.418 20.309 14.285C19.852 13.863 19.289 13.652 18.727 13.652 18.141 13.652 17.625 13.84 17.145 14.273L12.41 18.469 10.523 16.77C10.078 16.359 9.598 16.172 9.094 16.172 8.637 16.172 8.203 16.359 7.746 16.746L3.797 20.18C3.797 22.219 4.887 23.25 6.926 23.25ZM11.566 14.543C12.926 14.543 14.039 13.406 14.039 12.035 14.039 10.688 12.926 9.551 11.566 9.551 10.195 9.551 9.082 10.688 9.082 12.035 9.082 13.406 10.195 14.543 11.566 14.543ZM1.102 18.445L4.008 18.445 4.008 16.559 1.125 16.559C-0.047 16.559-0.691 15.938-0.691 14.719L-0.691 3.867C-0.691 2.648-0.047 2.016 1.125 2.016L17.074 2.016C18.234 2.016 18.902 2.648 18.902 3.867L18.902 6.316 20.789 6.316 20.789 3.762C20.789 1.348 19.547 0.129 17.109 0.129L1.102 0.129C-1.359 0.129-2.578 1.348-2.578 3.762L-2.578 14.813C-2.578 17.238-1.359 18.445 1.102 18.445ZM6.891 23.871L22.898 23.871C25.336 23.871 26.578 22.652 26.578 20.238L26.578 9.188C26.578 6.773 25.336 5.555 22.898 5.555L6.891 5.555C4.43 5.555 3.211 6.773 3.211 9.188L3.211 20.238C3.211 22.664 4.43 23.871 6.891 23.871ZM6.914 21.984C5.742 21.984 5.098 21.363 5.098 20.145L5.098 9.293C5.098 8.074 5.742 7.441 6.914 7.441L22.863 7.441C24.023 7.441 24.691 8.074 24.691 9.293L24.691 20.145C24.691 21.363 24.023 21.984 22.863 21.984Z"
14192
14412
  }
14193
14413
  ],
14194
- box: [-5.575, -1.975, 35.2, 27.967]
14414
+ box: [-5.575, -1.975, 35.2, 27.967],
14415
+ controlBoxes: { "photo.on.rectangle": [19.333333333333332, 15, 3] }
14195
14416
  },
14196
14417
  "heart.fill": {
14197
14418
  viewBox: "0 0 24 24",
@@ -14201,7 +14422,11 @@ var COMMON_SF_SYMBOL_VECTORS = {
14201
14422
  d: "M12 22.758C12.246 22.758 12.598 22.594 12.855 22.441 19.453 18.223 23.637 13.313 23.637 8.32 23.637 4.172 20.789 1.242 17.109 1.242 14.824 1.242 13.066 2.508 12 4.441 10.957 2.52 9.176 1.242 6.891 1.242 3.211 1.242 0.363 4.172 0.363 8.32 0.363 13.313 4.547 18.223 11.156 22.441 11.402 22.594 11.754 22.758 12 22.758Z"
14202
14423
  }
14203
14424
  ],
14204
- box: [-2.65, -0.875, 29.267, 25.767]
14425
+ box: [-2.65, -0.875, 29.267, 25.767],
14426
+ controlBoxes: {
14427
+ "heart.fill": [16, 13.666666666666666, 2.3333333333333335],
14428
+ "suit.heart.fill": [16, 13.666666666666666, 2.3333333333333335]
14429
+ }
14205
14430
  },
14206
14431
  "checkmark.circle.fill": {
14207
14432
  viewBox: "0 0 24 24",
@@ -14211,7 +14436,8 @@ var COMMON_SF_SYMBOL_VECTORS = {
14211
14436
  d: "M12 23.953C18.598 23.953 23.953 18.586 23.953 12 23.953 5.402 18.598 0.047 12 0.047 5.414 0.047 0.047 5.402 0.047 12 0.047 18.586 5.414 23.953 12 23.953ZM10.688 17.73C10.289 17.73 9.961 17.566 9.656 17.156L6.715 13.547C6.539 13.313 6.434 13.055 6.434 12.785 6.434 12.258 6.844 11.824 7.371 11.824 7.711 11.824 7.969 11.93 8.262 12.316L10.641 15.387 15.645 7.348C15.867 6.996 16.172 6.809 16.477 6.809 16.992 6.809 17.473 7.16 17.473 7.711 17.473 7.969 17.32 8.238 17.18 8.484L11.672 17.156C11.426 17.543 11.086 17.73 10.688 17.73Z"
14212
14437
  }
14213
14438
  ],
14214
- box: [-2.075, -2.05, 28.167, 28.1]
14439
+ box: [-2.075, -2.05, 28.167, 28.1],
14440
+ controlBoxes: { "checkmark.circle.fill": [15, 15, 3] }
14215
14441
  },
14216
14442
  "xmark.circle.fill": {
14217
14443
  viewBox: "0 0 24 24",
@@ -14221,7 +14447,11 @@ var COMMON_SF_SYMBOL_VECTORS = {
14221
14447
  d: "M12 23.953C18.598 23.953 23.953 18.586 23.953 12 23.953 5.402 18.598 0.047 12 0.047 5.414 0.047 0.047 5.402 0.047 12 0.047 18.586 5.414 23.953 12 23.953ZM8.063 16.922C7.523 16.922 7.102 16.488 7.102 15.949 7.102 15.691 7.195 15.445 7.383 15.27L10.629 12.012 7.383 8.766C7.195 8.578 7.102 8.344 7.102 8.086 7.102 7.535 7.523 7.125 8.063 7.125 8.332 7.125 8.543 7.219 8.73 7.395L12 10.652 15.293 7.383C15.492 7.184 15.703 7.102 15.961 7.102 16.5 7.102 16.934 7.523 16.934 8.063 16.934 8.332 16.852 8.543 16.641 8.754L13.383 12.012 16.629 15.258C16.828 15.434 16.922 15.68 16.922 15.949 16.922 16.488 16.488 16.922 15.938 16.922 15.668 16.922 15.422 16.828 15.246 16.641L12 13.383 8.766 16.641C8.578 16.828 8.332 16.922 8.063 16.922Z"
14222
14448
  }
14223
14449
  ],
14224
- box: [-2.075, -2.05, 28.167, 28.1]
14450
+ box: [-2.075, -2.05, 28.167, 28.1],
14451
+ controlBoxes: {
14452
+ "multiply.circle.fill": [15, 15, 3],
14453
+ "xmark.circle.fill": [15, 15, 3]
14454
+ }
14225
14455
  },
14226
14456
  "rectangle.stack": {
14227
14457
  viewBox: "0 0 24 24",
@@ -14231,7 +14461,8 @@ var COMMON_SF_SYMBOL_VECTORS = {
14231
14461
  d: "M3.404 24.973L20.596 24.973C23.033 24.973 24.275 23.754 24.275 21.34L24.275 9.305C24.275 6.891 23.033 5.672 20.596 5.672L3.404 5.672C0.943 5.672-0.275 6.891-0.275 9.305L-0.275 21.34C-0.275 23.754 0.943 24.973 3.404 24.973ZM3.428 23.086C2.256 23.086 1.611 22.453 1.611 21.234L1.611 9.41C1.611 8.191 2.256 7.559 3.428 7.559L20.561 7.559C21.721 7.559 22.389 8.191 22.389 9.41L22.389 21.234C22.389 22.453 21.721 23.086 20.561 23.086ZM2.197 3.785L21.814 3.785C21.639 2.719 21.135 2.133 19.963 2.133L4.049 2.133C2.877 2.133 2.373 2.719 2.197 3.785ZM4.611 0.539L19.4 0.539C19.33-0.457 18.768-0.973 17.678-0.973L6.322-0.973C5.244-0.973 4.682-0.457 4.611 0.539Z"
14232
14462
  }
14233
14463
  ],
14234
- box: [-3.25, -3.075, 30.533, 32.033]
14464
+ box: [-3.25, -3.075, 30.533, 32.033],
14465
+ controlBoxes: { "rectangle.stack": [17, 17.333333333333332, 4.333333333333333] }
14235
14466
  },
14236
14467
  "circle.grid.2x2": {
14237
14468
  viewBox: "0 0 24 24",
@@ -14241,7 +14472,10 @@ var COMMON_SF_SYMBOL_VECTORS = {
14241
14472
  d: "M5.959 11.074C8.783 11.074 11.068 8.789 11.068 5.965 11.068 3.141 8.783 0.855 5.959 0.855 3.135 0.855 0.85 3.141 0.85 5.965 0.85 8.789 3.135 11.074 5.959 11.074ZM5.959 9.246C4.143 9.246 2.678 7.781 2.678 5.965 2.678 4.148 4.143 2.684 5.959 2.684 7.775 2.684 9.24 4.148 9.24 5.965 9.24 7.781 7.775 9.246 5.959 9.246ZM18.041 11.074C20.865 11.074 23.15 8.789 23.15 5.965 23.15 3.141 20.865 0.855 18.041 0.855 15.217 0.855 12.932 3.141 12.932 5.965 12.932 8.789 15.217 11.074 18.041 11.074ZM18.041 9.246C16.225 9.246 14.76 7.781 14.76 5.965 14.76 4.148 16.225 2.684 18.041 2.684 19.857 2.684 21.322 4.148 21.322 5.965 21.322 7.781 19.857 9.246 18.041 9.246ZM5.959 23.145C8.783 23.145 11.068 20.859 11.068 18.035 11.068 15.211 8.783 12.926 5.959 12.926 3.135 12.926 0.85 15.211 0.85 18.035 0.85 20.859 3.135 23.145 5.959 23.145ZM5.959 21.316C4.143 21.316 2.678 19.852 2.678 18.035 2.678 16.219 4.143 14.754 5.959 14.754 7.775 14.754 9.24 16.219 9.24 18.035 9.24 19.852 7.775 21.316 5.959 21.316ZM18.041 23.145C20.865 23.145 23.15 20.859 23.15 18.035 23.15 15.211 20.865 12.926 18.041 12.926 15.217 12.926 12.932 15.211 12.932 18.035 12.932 20.859 15.217 23.145 18.041 23.145ZM18.041 21.316C16.225 21.316 14.76 19.852 14.76 18.035 14.76 16.219 16.225 14.754 18.041 14.754 19.857 14.754 21.322 16.219 21.322 18.035 21.322 19.852 19.857 21.316 18.041 21.316Z"
14242
14473
  }
14243
14474
  ],
14244
- box: [-2.15, -1.25, 28.3, 26.5]
14475
+ box: [-2.15, -1.25, 28.3, 26.5],
14476
+ controlBoxes: {
14477
+ "circle.grid.2x2": [15.666666666666666, 14.333333333333334, 2.3333333333333335]
14478
+ }
14245
14479
  },
14246
14480
  message: {
14247
14481
  viewBox: "0 0 24 24",
@@ -14251,7 +14485,8 @@ var COMMON_SF_SYMBOL_VECTORS = {
14251
14485
  d: "M12 23.408C19.875 23.408 25.629 18.604 25.629 11.994 25.629 5.361 19.863 0.592 12 0.592 4.125 0.592-1.629 5.361-1.629 11.994-1.629 14.186-0.984 16.225 0.141 17.877 0.691 18.697 0.891 19.271 0.891 19.752 0.891 20.373 0.703 20.877 0.164 21.346-0.762 22.131-0.281 23.408 0.938 23.408 2.402 23.408 4.031 22.904 5.238 22.072 7.219 22.939 9.527 23.408 12 23.408ZM12 21.521C9.762 21.521 7.758 21.1 6.059 20.338 5.309 20.01 4.77 20.104 4.055 20.525 3.551 20.842 2.965 21.111 2.367 21.24 2.613 20.83 2.777 20.361 2.777 19.752 2.777 18.885 2.461 17.936 1.711 16.811 0.773 15.451 0.258 13.799 0.258 11.994 0.258 6.498 5.109 2.479 12 2.479 18.891 2.479 23.742 6.498 23.742 11.994 23.742 17.49 18.891 21.521 12 21.521Z"
14252
14486
  }
14253
14487
  ],
14254
- box: [-3.75, -1.525, 31.5, 27.067]
14488
+ box: [-3.75, -1.525, 31.5, 27.067],
14489
+ controlBoxes: { message: [17, 14.666666666666666, 2] }
14255
14490
  },
14256
14491
  eye: {
14257
14492
  viewBox: "0 0 24 24",
@@ -14261,7 +14496,8 @@ var COMMON_SF_SYMBOL_VECTORS = {
14261
14496
  d: "M12.006 22.043C21.475 22.043 28.014 14.391 28.014 12 28.014 9.598 21.463 1.957 12.006 1.957 2.666 1.957-4.014 9.598-4.014 12-4.014 14.391 2.654 22.043 12.006 22.043ZM12.006 20.191C4.283 20.191-1.963 13.652-1.963 12-1.963 10.605 4.283 3.809 12.006 3.809 19.693 3.809 25.963 10.605 25.963 12 25.963 13.652 19.693 20.191 12.006 20.191ZM12.006 18.551C15.639 18.551 18.58 15.609 18.58 11.977 18.58 8.344 15.639 5.402 12.006 5.402 8.373 5.402 5.42 8.344 5.42 11.977 5.42 15.609 8.373 18.551 12.006 18.551ZM12.006 14.168C10.799 14.168 9.826 13.195 9.826 11.988 9.826 10.781 10.799 9.809 12.006 9.809 13.213 9.809 14.186 10.781 14.186 11.988 14.186 13.195 13.213 14.168 12.006 14.168Z"
14262
14497
  }
14263
14498
  ],
14264
- box: [-6.425, -0.15, 36.833, 24.3]
14499
+ box: [-6.425, -0.15, 36.833, 24.3],
14500
+ controlBoxes: { eye: [20.333333333333332, 13, 2] }
14265
14501
  },
14266
14502
  globe: {
14267
14503
  viewBox: "0 0 24 24",
@@ -14271,7 +14507,8 @@ var COMMON_SF_SYMBOL_VECTORS = {
14271
14507
  d: "M12 23.297C15.258 23.297 17.918 18.48 17.918 12.023 17.918 5.531 15.27 0.715 12 0.715 8.73 0.715 6.082 5.531 6.082 12.023 6.082 18.48 8.742 23.297 12 23.297ZM12 21.867C9.703 21.867 7.652 17.25 7.652 12.023 7.652 6.703 9.703 2.133 12 2.133 14.297 2.133 16.348 6.703 16.348 12.023 16.348 17.25 14.297 21.867 12 21.867ZM12 23.613C12.422 23.613 12.773 23.262 12.773 22.84L12.773 1.266C12.773 0.844 12.422 0.492 12 0.492 11.578 0.492 11.238 0.844 11.238 1.266L11.238 22.84C11.238 23.262 11.578 23.613 12 23.613ZM4.711 19.852C6.281 18.609 8.801 17.941 12 17.941 15.199 17.941 17.719 18.609 19.289 19.852 19.629 20.121 20.074 20.156 20.379 19.863 20.672 19.57 20.695 19.09 20.367 18.797 18.797 17.379 15.609 16.406 12 16.406 8.391 16.406 5.203 17.379 3.633 18.797 3.305 19.09 3.328 19.57 3.621 19.863 3.926 20.156 4.371 20.121 4.711 19.852ZM1.453 12.762L22.781 12.762C23.203 12.762 23.555 12.422 23.555 12 23.555 11.578 23.203 11.227 22.781 11.227L1.453 11.227C1.031 11.227 0.68 11.578 0.68 12 0.68 12.422 1.031 12.762 1.453 12.762ZM12 7.652C15.609 7.652 18.797 6.68 20.367 5.262 20.695 4.957 20.672 4.488 20.379 4.195 20.074 3.902 19.629 3.938 19.289 4.207 17.719 5.438 15.199 6.117 12 6.117 8.801 6.117 6.281 5.438 4.711 4.207 4.371 3.938 3.926 3.902 3.621 4.195 3.328 4.488 3.305 4.957 3.633 5.262 5.203 6.68 8.391 7.652 12 7.652ZM12 23.953C18.598 23.953 23.953 18.598 23.953 12 23.953 5.402 18.598 0.047 12 0.047 5.402 0.047 0.047 5.402 0.047 12 0.047 18.598 5.402 23.953 12 23.953ZM12 22.359C6.281 22.359 1.641 17.719 1.641 12 1.641 6.281 6.281 1.641 12 1.641 17.719 1.641 22.359 6.281 22.359 12 22.359 17.719 17.719 22.359 12 22.359Z"
14272
14508
  }
14273
14509
  ],
14274
- box: [-2.075, -2.05, 28.167, 28.1]
14510
+ box: [-2.075, -2.05, 28.167, 28.1],
14511
+ controlBoxes: { globe: [15, 15, 3] }
14275
14512
  },
14276
14513
  "trash.fill": {
14277
14514
  viewBox: "0 0 24 24",
@@ -14281,7 +14518,8 @@ var COMMON_SF_SYMBOL_VECTORS = {
14281
14518
  d: "M8.426 21.486C7.969 21.486 7.676 21.217 7.652 20.771L7.301 7.869C7.289 7.436 7.582 7.154 8.051 7.154 8.484 7.154 8.789 7.424 8.801 7.857L9.176 20.771C9.188 21.205 8.883 21.486 8.426 21.486ZM12 21.486C11.543 21.486 11.227 21.205 11.227 20.771L11.227 7.869C11.227 7.436 11.543 7.154 12 7.154 12.457 7.154 12.785 7.436 12.785 7.869L12.785 20.771C12.785 21.205 12.457 21.486 12 21.486ZM15.586 21.486C15.129 21.486 14.824 21.205 14.836 20.771L15.199 7.869C15.211 7.424 15.516 7.154 15.949 7.154 16.418 7.154 16.711 7.436 16.699 7.869L16.348 20.771C16.324 21.217 16.031 21.486 15.586 21.486ZM6.855 4.307L8.719 4.307 8.719 1.799C8.719 1.131 9.188 0.697 9.891 0.697L14.086 0.697C14.789 0.697 15.258 1.131 15.258 1.799L15.258 4.307 17.121 4.307 17.121 1.682C17.121-0.018 16.02-1.049 14.215-1.049L9.762-1.049C7.957-1.049 6.855-0.018 6.855 1.682ZM1.535 5.244L22.477 5.244C22.957 5.244 23.344 4.834 23.344 4.354 23.344 3.873 22.957 3.475 22.477 3.475L1.535 3.475C1.066 3.475 0.656 3.873 0.656 4.354 0.656 4.846 1.066 5.244 1.535 5.244ZM6.633 25.049L17.379 25.049C19.055 25.049 20.18 23.959 20.262 22.283L21.082 4.998 2.918 4.998 3.75 22.295C3.832 23.971 4.934 25.049 6.633 25.049Z"
14282
14519
  }
14283
14520
  ],
14284
- box: [-1.15, -3.15, 26.3, 30.3]
14521
+ box: [-1.15, -3.15, 26.3, 30.3],
14522
+ controlBoxes: { "trash.fill": [14.333333333333334, 16.333333333333332, 3] }
14285
14523
  },
14286
14524
  checklist: {
14287
14525
  viewBox: "0 0 24 24",
@@ -14291,7 +14529,8 @@ var COMMON_SF_SYMBOL_VECTORS = {
14291
14529
  d: "M3.914 23.836C6.668 23.836 8.965 21.539 8.965 18.785 8.965 16.008 6.668 13.723 3.914 13.723 1.148 13.723-1.137 16.02-1.137 18.785-1.137 21.539 1.16 23.836 3.914 23.836ZM3.914 22.125C2.098 22.125 0.574 20.59 0.574 18.785 0.574 16.969 2.109 15.434 3.914 15.434 5.719 15.434 7.254 16.969 7.254 18.785 7.254 20.59 5.719 22.125 3.914 22.125ZM12.527 6.176L24.176 6.176C24.703 6.176 25.137 5.754 25.137 5.227 25.137 4.699 24.703 4.289 24.176 4.289L12.527 4.289C11.988 4.289 11.578 4.699 11.578 5.227 11.578 5.754 11.988 6.176 12.527 6.176ZM12.527 19.723L24.176 19.723C24.703 19.723 25.137 19.313 25.137 18.785 25.137 18.246 24.703 17.836 24.176 17.836L12.527 17.836C11.988 17.836 11.578 18.246 11.578 18.785 11.578 19.313 11.988 19.723 12.527 19.723ZM3.914 10.277C6.668 10.277 8.965 7.969 8.965 5.215 8.965 2.449 6.668 0.164 3.914 0.164 1.148 0.164-1.137 2.449-1.137 5.215-1.137 7.969 1.16 10.277 3.914 10.277ZM3.316 7.934C3.07 7.934 2.906 7.805 2.73 7.605L1.418 6.023C1.313 5.883 1.266 5.754 1.266 5.566 1.266 5.227 1.523 4.957 1.84 4.957 2.063 4.957 2.227 5.051 2.379 5.25L3.293 6.41 5.379 3.059C5.52 2.848 5.695 2.73 5.906 2.73 6.234 2.73 6.516 2.988 6.516 3.281 6.516 3.445 6.469 3.586 6.363 3.762L3.914 7.605C3.785 7.816 3.574 7.934 3.316 7.934Z"
14292
14530
  }
14293
14531
  ],
14294
- box: [-4.15, -1.95, 32.3, 27.9]
14532
+ box: [-4.15, -1.95, 32.3, 27.9],
14533
+ controlBoxes: { checklist: [17.666666666666668, 15, 3] }
14295
14534
  },
14296
14535
  newspaper: {
14297
14536
  viewBox: "0 0 24 24",
@@ -14301,7 +14540,8 @@ var COMMON_SF_SYMBOL_VECTORS = {
14301
14540
  d: "M-1.324 21.023C-1.324 23.355-0.164 24.563 2.215 24.563L21.645 24.563C24.105 24.563 25.324 23.355 25.324 20.941L25.324 3.07C25.324 0.656 24.105-0.563 21.645-0.563L7.523-0.563C5.074-0.563 3.844 0.656 3.844 3.07L3.844 8.66 1.043 8.66C-0.445 8.66-1.324 9.469-1.324 10.863ZM0.563 21.023L0.563 11.227C0.563 10.793 0.82 10.547 1.254 10.547L3.844 10.547 3.844 21.023C3.844 21.996 3.129 22.676 2.215 22.676 1.289 22.676 0.563 21.961 0.563 21.023ZM5.332 22.676C5.59 22.172 5.73 21.586 5.73 20.906L5.73 3.176C5.73 1.957 6.387 1.324 7.559 1.324L21.609 1.324C22.781 1.324 23.438 1.957 23.438 3.176L23.438 20.836C23.438 22.055 22.781 22.676 21.609 22.676ZM8.777 6.422L20.414 6.422C20.824 6.422 21.141 6.094 21.141 5.684 21.141 5.285 20.824 4.98 20.414 4.98L8.777 4.98C8.355 4.98 8.039 5.285 8.039 5.684 8.039 6.094 8.355 6.422 8.777 6.422ZM8.777 10.547L20.414 10.547C20.824 10.547 21.141 10.23 21.141 9.832 21.141 9.422 20.824 9.105 20.414 9.105L8.777 9.105C8.355 9.105 8.039 9.422 8.039 9.832 8.039 10.23 8.355 10.547 8.777 10.547ZM9.469 18.902L12.504 18.902C13.395 18.902 13.934 18.363 13.934 17.473L13.934 14.684C13.934 13.781 13.395 13.242 12.504 13.242L9.469 13.242C8.566 13.242 8.027 13.781 8.027 14.684L8.027 17.473C8.027 18.363 8.566 18.902 9.469 18.902ZM16.043 14.684L20.402 14.684C20.824 14.684 21.129 14.379 21.129 13.98 21.129 13.559 20.824 13.242 20.402 13.242L16.043 13.242C15.621 13.242 15.316 13.559 15.316 13.98 15.316 14.379 15.621 14.684 16.043 14.684ZM16.043 18.902L20.402 18.902C20.824 18.902 21.129 18.598 21.129 18.199 21.129 17.789 20.824 17.461 20.402 17.461L16.043 17.461C15.621 17.461 15.316 17.789 15.316 18.199 15.316 18.598 15.621 18.902 16.043 18.902Z"
14302
14541
  }
14303
14542
  ],
14304
- box: [-4.325, -2.675, 32.7, 29.367]
14543
+ box: [-4.325, -2.675, 32.7, 29.367],
14544
+ controlBoxes: { newspaper: [18, 15.666666666666666, 3.3333333333333335] }
14305
14545
  },
14306
14546
  bell: {
14307
14547
  viewBox: "0 0 24 24",
@@ -14311,7 +14551,8 @@ var COMMON_SF_SYMBOL_VECTORS = {
14311
14551
  d: "M0.943 18.445C0.943 19.301 1.6 19.863 2.713 19.863L7.658 19.863C7.752 22.125 9.521 24.105 11.994 24.105 14.479 24.105 16.248 22.137 16.342 19.863L21.287 19.863C22.389 19.863 23.057 19.301 23.057 18.445 23.057 17.273 21.861 16.219 20.854 15.176 20.08 14.367 19.869 12.703 19.775 11.355 19.693 6.738 18.498 3.762 15.381 2.637 14.982 1.102 13.729-0.105 11.994-0.105 10.271-0.105 9.006 1.102 8.619 2.637 5.502 3.762 4.307 6.738 4.225 11.355 4.131 12.703 3.92 14.367 3.146 15.176 2.127 16.219 0.943 17.273 0.943 18.445ZM3.217 18.094L3.217 17.953C3.428 17.613 4.131 16.922 4.74 16.242 5.584 15.305 5.982 13.793 6.088 11.508 6.182 6.387 7.705 4.758 9.709 4.207 10.002 4.137 10.166 3.996 10.178 3.691 10.213 2.473 10.916 1.617 11.994 1.617 13.084 1.617 13.775 2.473 13.822 3.691 13.834 3.996 13.986 4.137 14.279 4.207 16.295 4.758 17.818 6.387 17.912 11.508 18.018 13.793 18.416 15.305 19.248 16.242 19.869 16.922 20.561 17.613 20.771 17.953L20.771 18.094ZM9.486 19.863L14.514 19.863C14.42 21.457 13.412 22.453 11.994 22.453 10.588 22.453 9.568 21.457 9.486 19.863Z"
14312
14552
  }
14313
14553
  ],
14314
- box: [-1.575, -2.2, 27.167, 28.4]
14554
+ box: [-1.575, -2.2, 27.167, 28.4],
14555
+ controlBoxes: { bell: [14.666666666666666, 15.333333333333334, 3] }
14315
14556
  },
14316
14557
  "plus.circle": {
14317
14558
  viewBox: "0 0 24 24",
@@ -14321,7 +14562,8 @@ var COMMON_SF_SYMBOL_VECTORS = {
14321
14562
  d: "M12 23.953C18.598 23.953 23.953 18.598 23.953 12 23.953 5.402 18.598 0.047 12 0.047 5.402 0.047 0.047 5.402 0.047 12 0.047 18.598 5.402 23.953 12 23.953ZM12 21.961C6.492 21.961 2.039 17.508 2.039 12 2.039 6.492 6.492 2.039 12 2.039 17.508 2.039 21.961 6.492 21.961 12 21.961 17.508 17.508 21.961 12 21.961ZM12.973 16.418L12.973 7.559C12.973 6.961 12.563 6.551 11.977 6.551 11.402 6.551 11.004 6.961 11.004 7.559L11.004 16.418C11.004 17.004 11.402 17.414 11.977 17.414 12.563 17.414 12.973 17.016 12.973 16.418ZM7.559 12.961L16.43 12.961C17.016 12.961 17.426 12.574 17.426 12 17.426 11.414 17.016 11.004 16.43 11.004L7.559 11.004C6.961 11.004 6.563 11.414 6.563 12 6.563 12.574 6.961 12.961 7.559 12.961Z"
14322
14563
  }
14323
14564
  ],
14324
- box: [-2.075, -2.05, 28.167, 28.1]
14565
+ box: [-2.075, -2.05, 28.167, 28.1],
14566
+ controlBoxes: { "plus.circle": [15, 15, 3] }
14325
14567
  },
14326
14568
  "book.closed": {
14327
14569
  viewBox: "0 0 24 24",
@@ -14331,7 +14573,10 @@ var COMMON_SF_SYMBOL_VECTORS = {
14331
14573
  d: "M5.742 24.557L20.918 24.557C21.434 24.557 21.855 24.146 21.855 23.619 21.855 23.209 21.574 22.846 21.199 22.717 19.723 22.131 19.418 20.221 20.871 18.756 21.316 18.311 21.855 17.736 21.855 16.564L21.855 3.123C21.855 0.686 20.648-0.557 18.223-0.557L5.777-0.557C3.352-0.557 2.145 0.674 2.145 3.123L2.145 20.936C2.145 23.35 3.363 24.557 5.742 24.557ZM4.031 17.783L4.031 3.158C4.031 1.986 4.652 1.33 5.859 1.33L18.129 1.33C19.348 1.33 19.969 1.986 19.969 3.158L19.969 16.307C19.969 16.939 19.605 17.303 18.949 17.303L5.941 17.303C5.18 17.303 4.547 17.467 4.031 17.783ZM5.848 22.67C4.664 22.67 4.031 22.037 4.031 20.924 4.031 19.869 4.781 19.189 5.953 19.189L17.977 19.189C18.129 19.189 18.27 19.178 18.387 19.154 17.836 20.373 17.93 21.662 18.551 22.67ZM5.414 18.311L6.949 18.311 6.949 0.873 5.414 0.873Z"
14332
14574
  }
14333
14575
  ],
14334
- box: [-0.875, -2.675, 25.767, 29.367]
14576
+ box: [-0.875, -2.675, 25.767, 29.367],
14577
+ controlBoxes: {
14578
+ "book.closed": [14.333333333333334, 15.666666666666666, 3.3333333333333335]
14579
+ }
14335
14580
  },
14336
14581
  plus: {
14337
14582
  viewBox: "0 0 24 24",
@@ -14341,7 +14586,8 @@ var COMMON_SF_SYMBOL_VECTORS = {
14341
14586
  d: "M13.055 20.625L13.055 3.375C13.055 2.813 12.574 2.332 12 2.332 11.426 2.332 10.957 2.813 10.957 3.375L10.957 20.625C10.957 21.188 11.426 21.668 12 21.668 12.574 21.668 13.055 21.188 13.055 20.625ZM3.375 13.043L20.625 13.043C21.188 13.043 21.668 12.574 21.668 12 21.668 11.426 21.188 10.945 20.625 10.945L3.375 10.945C2.813 10.945 2.332 11.426 2.332 12 2.332 12.574 2.813 13.043 3.375 13.043Z"
14342
14587
  }
14343
14588
  ],
14344
- box: [-0.675, 0.225, 25.367, 23.567]
14589
+ box: [-0.675, 0.225, 25.367, 23.567],
14590
+ controlBoxes: { plus: [14, 12.666666666666666, 1.6666666666666667] }
14345
14591
  },
14346
14592
  grid: {
14347
14593
  viewBox: "0 0 24 24",
@@ -14351,7 +14597,8 @@ var COMMON_SF_SYMBOL_VECTORS = {
14351
14597
  d: "M7.676 23.104C8.215 23.104 8.555 22.752 8.555 22.178L8.555 1.834C8.555 1.26 8.215 0.896 7.676 0.896 7.113 0.896 6.785 1.26 6.785 1.834L6.785 22.178C6.785 22.752 7.113 23.104 7.676 23.104ZM16.266 23.104C16.805 23.104 17.145 22.752 17.145 22.178L17.145 1.834C17.145 1.26 16.805 0.896 16.266 0.896 15.703 0.896 15.375 1.26 15.375 1.834L15.375 22.178C15.375 22.752 15.703 23.104 16.266 23.104ZM1.605 17.092L22.395 17.092C22.98 17.092 23.332 16.752 23.332 16.201 23.332 15.65 22.98 15.322 22.395 15.322L1.605 15.322C1.02 15.322 0.668 15.65 0.668 16.201 0.668 16.752 1.02 17.092 1.605 17.092ZM1.605 8.725L22.395 8.725C22.98 8.725 23.332 8.385 23.332 7.846 23.332 7.295 22.98 6.955 22.395 6.955L1.605 6.955C1.02 6.955 0.668 7.295 0.668 7.846 0.668 8.385 1.02 8.725 1.605 8.725Z"
14352
14598
  }
14353
14599
  ],
14354
- box: [-2.35, -1.225, 28.667, 26.467]
14600
+ box: [-2.35, -1.225, 28.667, 26.467],
14601
+ controlBoxes: { grid: [15.666666666666666, 14.333333333333334, 2.3333333333333335] }
14355
14602
  },
14356
14603
  banknote: {
14357
14604
  viewBox: "0 0 24 24",
@@ -14361,7 +14608,10 @@ var COMMON_SF_SYMBOL_VECTORS = {
14361
14608
  d: "M-3.469 20.748C-3.469 21.311-3.094 21.686-2.531 21.686L26.543 21.686C27.105 21.686 27.469 21.311 27.469 20.748L27.469 3.24C27.469 2.678 27.105 2.314 26.543 2.314L-2.531 2.314C-3.094 2.314-3.469 2.678-3.469 3.24ZM-1.582 19.459L-1.582 4.541C-1.582 4.283-1.488 4.201-1.242 4.201L25.242 4.201C25.5 4.201 25.582 4.283 25.582 4.541L25.582 19.459C25.582 19.705 25.5 19.799 25.242 19.799L-1.242 19.799C-1.488 19.799-1.582 19.705-1.582 19.459ZM-0.316 17.842C-0.316 18.287-0.07 18.533 0.363 18.533L23.648 18.533C24.07 18.533 24.328 18.287 24.328 17.842L24.328 6.146C24.328 5.713 24.07 5.455 23.648 5.455L0.363 5.455C-0.07 5.455-0.316 5.713-0.316 6.146ZM0.867 17.08L0.867 6.908C0.867 6.732 0.949 6.639 1.125 6.639L22.875 6.639C23.051 6.639 23.145 6.732 23.145 6.908L23.145 17.08C23.145 17.256 23.051 17.35 22.875 17.35L1.125 17.35C0.949 17.35 0.867 17.256 0.867 17.08ZM11.953 18.533C14.484 18.533 16.5 15.99 16.5 11.982 16.5 7.986 14.484 5.455 11.953 5.455 9.492 5.455 7.512 7.986 7.512 11.982 7.512 15.99 9.492 18.533 11.953 18.533ZM11.953 17.15C10.289 17.15 8.871 15.17 8.871 11.982 8.871 8.807 10.289 6.838 11.953 6.838 13.688 6.838 15.152 8.807 15.152 11.982 15.152 15.17 13.688 17.15 11.953 17.15Z"
14362
14609
  }
14363
14610
  ],
14364
- box: [-6.475, 0.2, 36.933, 23.567]
14611
+ box: [-6.475, 0.2, 36.933, 23.567],
14612
+ controlBoxes: {
14613
+ banknote: [20.333333333333332, 12.666666666666666, 1.6666666666666667]
14614
+ }
14365
14615
  },
14366
14616
  "banknote.fill": {
14367
14617
  viewBox: "0 0 24 24",
@@ -14371,7 +14621,10 @@ var COMMON_SF_SYMBOL_VECTORS = {
14371
14621
  d: "M-3.469 20.748C-3.469 21.311-3.094 21.686-2.531 21.686L26.543 21.686C27.105 21.686 27.469 21.311 27.469 20.748L27.469 3.24C27.469 2.678 27.105 2.314 26.543 2.314L-2.531 2.314C-3.094 2.314-3.469 2.678-3.469 3.24ZM-1.324 18.826L-1.324 5.174C-1.324 4.705-1.055 4.459-0.621 4.459L24.621 4.459C25.066 4.459 25.324 4.705 25.324 5.174L25.324 18.826C25.324 19.283 25.066 19.541 24.621 19.541L-0.621 19.541C-1.055 19.541-1.324 19.283-1.324 18.826ZM-0.105 18.041C-0.105 18.229 0 18.322 0.176 18.322L9.34 18.322C8.098 17.057 7.371 14.818 7.371 11.982 7.371 9.158 8.098 6.932 9.316 5.678L0.176 5.678C0 5.678-0.105 5.771-0.105 5.959ZM8.777 11.982C8.777 15.639 10.043 18.088 11.953 18.088 13.922 18.088 15.246 15.639 15.246 11.982 15.246 8.326 13.922 5.889 11.953 5.889 10.043 5.889 8.777 8.326 8.777 11.982ZM14.637 18.322L23.824 18.322C24 18.322 24.105 18.229 24.105 18.041L24.105 5.959C24.105 5.771 24 5.678 23.824 5.678L14.648 5.678C15.902 6.932 16.641 9.158 16.641 11.982 16.641 14.818 15.891 17.057 14.637 18.322Z"
14372
14622
  }
14373
14623
  ],
14374
- box: [-6.475, 0.2, 36.933, 23.567]
14624
+ box: [-6.475, 0.2, 36.933, 23.567],
14625
+ controlBoxes: {
14626
+ "banknote.fill": [20.333333333333332, 12.666666666666666, 1.6666666666666667]
14627
+ }
14375
14628
  },
14376
14629
  "wallet.pass": {
14377
14630
  viewBox: "0 0 24 24",
@@ -14381,7 +14634,10 @@ var COMMON_SF_SYMBOL_VECTORS = {
14381
14634
  d: "M5.777 24.563L18.223 24.563C20.637 24.563 21.855 23.332 21.855 20.895L21.855 3.117C21.855 0.668 20.648-0.563 18.223-0.563L14.742-0.563C14.344-0.563 14.086-0.281 14.086 0.141 14.086 1.359 13.242 2.215 12 2.215 10.758 2.215 9.902 1.359 9.902 0.141 9.902-0.281 9.645-0.563 9.246-0.563L5.777-0.563C3.352-0.563 2.145 0.668 2.145 3.117L2.145 20.895C2.145 23.332 3.363 24.563 5.777 24.563ZM5.871 22.676C4.652 22.676 4.031 22.02 4.031 20.859L4.031 3.152C4.031 1.98 4.652 1.324 5.871 1.324L9.211 1.324 8.121 0.656C8.332 2.707 9.855 4.043 12 4.043 14.145 4.043 15.668 2.707 15.891 0.656L14.789 1.324 18.129 1.324C19.348 1.324 19.969 1.98 19.969 3.152L19.969 20.859C19.969 22.02 19.348 22.676 18.129 22.676ZM7.559 8.168L16.453 8.168C16.863 8.168 17.168 7.852 17.168 7.43 17.168 7.031 16.863 6.715 16.453 6.715L7.559 6.715C7.137 6.715 6.832 7.031 6.832 7.43 6.832 7.852 7.137 8.168 7.559 8.168ZM7.559 12.328L11.766 12.328C12.188 12.328 12.492 12.012 12.492 11.613 12.492 11.203 12.188 10.887 11.766 10.887L7.559 10.887C7.137 10.887 6.832 11.203 6.832 11.613 6.832 12.012 7.137 12.328 7.559 12.328Z"
14382
14635
  }
14383
14636
  ],
14384
- box: [-0.875, -2.675, 25.767, 29.367]
14637
+ box: [-0.875, -2.675, 25.767, 29.367],
14638
+ controlBoxes: {
14639
+ "wallet.pass": [14.333333333333334, 15.666666666666666, 3.3333333333333335]
14640
+ }
14385
14641
  },
14386
14642
  "chevron.backward": {
14387
14643
  viewBox: "0 0 24 24",
@@ -14391,7 +14647,11 @@ var COMMON_SF_SYMBOL_VECTORS = {
14391
14647
  d: "M6.27 12C6.27 12.293 6.375 12.551 6.598 12.773L15.891 21.855C16.09 22.066 16.348 22.172 16.652 22.172 17.262 22.172 17.73 21.715 17.73 21.105 17.73 20.801 17.602 20.543 17.414 20.344L8.883 12 17.414 3.656C17.602 3.457 17.73 3.188 17.73 2.895 17.73 2.285 17.262 1.828 16.652 1.828 16.348 1.828 16.09 1.934 15.891 2.133L6.598 11.227C6.375 11.438 6.27 11.707 6.27 12Z"
14392
14648
  }
14393
14649
  ],
14394
- box: [4.75, -0.275, 17.5, 24.567]
14650
+ box: [4.75, -0.275, 17.5, 24.567],
14651
+ controlBoxes: {
14652
+ "chevron.backward": [9.333333333333334, 13.333333333333334, 2],
14653
+ "chevron.left": [9.333333333333334, 13.333333333333334, 2]
14654
+ }
14395
14655
  }
14396
14656
  };
14397
14657
 
@@ -14405,11 +14665,11 @@ var symbolPromises2 = /* @__PURE__ */ new Map();
14405
14665
  var failedVectors2 = /* @__PURE__ */ new Set();
14406
14666
  var loadedPalettes = /* @__PURE__ */ new Map();
14407
14667
  var palettePromises = /* @__PURE__ */ new Map();
14408
- var listeners6 = /* @__PURE__ */ new Map();
14668
+ var listeners7 = /* @__PURE__ */ new Map();
14409
14669
  var catalogBaseUrl = null;
14410
14670
  var onCatalogRegister = null;
14411
14671
  function isRecord(value) {
14412
- return typeof value === "object" && value !== null;
14672
+ return typeof value === "object" && value !== null && !Array.isArray(value);
14413
14673
  }
14414
14674
  function isVectorLayer(value) {
14415
14675
  if (!isRecord(value) || typeof value.d !== "string") return false;
@@ -14421,8 +14681,24 @@ function parseVector(value) {
14421
14681
  }
14422
14682
  const layers = value.layers.filter(isVectorLayer);
14423
14683
  if (layers.length === 0) return null;
14684
+ let controlBoxes;
14685
+ if (value.controlBoxes !== void 0) {
14686
+ if (!isRecord(value.controlBoxes)) return null;
14687
+ controlBoxes = {};
14688
+ for (const [name, metrics] of Object.entries(value.controlBoxes)) {
14689
+ if (!Array.isArray(metrics) || metrics.length !== 3 || !metrics.every((item) => typeof item === "number" && Number.isFinite(item)) || metrics[0] <= 0 || metrics[1] <= 0)
14690
+ return null;
14691
+ controlBoxes[name] = [metrics[0], metrics[1], metrics[2]];
14692
+ }
14693
+ }
14424
14694
  const box = value.box;
14425
- return Array.isArray(box) && box.length === 4 && box.every((item) => typeof item === "number") ? { viewBox: "0 0 24 24", advance: value.advance, box: [box[0], box[1], box[2], box[3]], layers } : { viewBox: "0 0 24 24", advance: value.advance, layers };
14695
+ return Array.isArray(box) && box.length === 4 && box.every((item) => typeof item === "number") ? {
14696
+ viewBox: "0 0 24 24",
14697
+ advance: value.advance,
14698
+ box: [box[0], box[1], box[2], box[3]],
14699
+ controlBoxes,
14700
+ layers
14701
+ } : { viewBox: "0 0 24 24", advance: value.advance, controlBoxes, layers };
14426
14702
  }
14427
14703
  function nameBucket(name) {
14428
14704
  let hash = 2166136261;
@@ -14505,16 +14781,16 @@ function isSfSymbolCatalogConfigured() {
14505
14781
  return catalogBaseUrl !== null;
14506
14782
  }
14507
14783
  function subscribeSfSymbolVector(name, listener) {
14508
- const nameListeners = listeners6.get(name) ?? /* @__PURE__ */ new Set();
14784
+ const nameListeners = listeners7.get(name) ?? /* @__PURE__ */ new Set();
14509
14785
  nameListeners.add(listener);
14510
- listeners6.set(name, nameListeners);
14786
+ listeners7.set(name, nameListeners);
14511
14787
  return () => {
14512
14788
  nameListeners.delete(listener);
14513
- if (nameListeners.size === 0) listeners6.delete(name);
14789
+ if (nameListeners.size === 0) listeners7.delete(name);
14514
14790
  };
14515
14791
  }
14516
14792
  function notifyLoaded(name, loaded) {
14517
- for (const listener of listeners6.get(name) ?? []) listener();
14793
+ for (const listener of listeners7.get(name) ?? []) listener();
14518
14794
  if (loaded) onCatalogRegister?.();
14519
14795
  }
14520
14796
  function requestSfSymbolVector(name) {
@@ -15823,14 +16099,17 @@ function configureNextLayoutAnimation(config, onComplete, onError) {
15823
16099
  })
15824
16100
  );
15825
16101
  let completionHasRun = false;
15826
- let raceWithAnimationId = null;
16102
+ let cancelCompletion = null;
15827
16103
  const complete = () => {
15828
16104
  if (completionHasRun) return;
15829
16105
  completionHasRun = true;
15830
- if (raceWithAnimationId !== null) clearTimeout(raceWithAnimationId);
16106
+ cancelCompletion?.();
15831
16107
  onComplete?.();
15832
16108
  };
15833
- raceWithAnimationId = setTimeout(complete, duration + 17);
16109
+ cancelCompletion = scheduleAnimationDeadline(
16110
+ getAnimationTime() + duration + 17,
16111
+ complete
16112
+ );
15834
16113
  setPendingLayoutAnimation(config);
15835
16114
  }
15836
16115
 
@@ -17198,8 +17477,9 @@ function AndroidRipple({
17198
17477
  const progressAv = (0, import_react15.useRef)(new AnimatedValue(0)).current;
17199
17478
  const opacityAv = (0, import_react15.useRef)(new AnimatedValue(0)).current;
17200
17479
  const completedRef = (0, import_react15.useRef)(false);
17201
- const enteredAtRef = (0, import_react15.useRef)(performance.now());
17480
+ const enteredAtRef = (0, import_react15.useRef)(getAnimationTime());
17202
17481
  (0, import_react15.useEffect)(() => {
17482
+ enteredAtRef.current = getAnimationTime();
17203
17483
  const expand = timing(progressAv, {
17204
17484
  toValue: 1,
17205
17485
  duration: RIPPLE_EXPAND_MS,
@@ -17220,25 +17500,24 @@ function AndroidRipple({
17220
17500
  (0, import_react15.useEffect)(() => {
17221
17501
  if (!released) return;
17222
17502
  let fade = null;
17223
- const remainingEnterMs = Math.max(
17224
- 0,
17225
- RIPPLE_EXPAND_MS - (performance.now() - enteredAtRef.current)
17503
+ const cancelFadeDeadline = scheduleAnimationDeadline(
17504
+ enteredAtRef.current + RIPPLE_EXPAND_MS,
17505
+ () => {
17506
+ fade = timing(opacityAv, {
17507
+ toValue: 0,
17508
+ duration: RIPPLE_FADE_MS,
17509
+ easing: Easing.linear
17510
+ });
17511
+ fade.start(() => {
17512
+ if (!completedRef.current) {
17513
+ completedRef.current = true;
17514
+ onComplete();
17515
+ }
17516
+ });
17517
+ }
17226
17518
  );
17227
- const timeout = setTimeout(() => {
17228
- fade = timing(opacityAv, {
17229
- toValue: 0,
17230
- duration: RIPPLE_FADE_MS,
17231
- easing: Easing.linear
17232
- });
17233
- fade.start(() => {
17234
- if (!completedRef.current) {
17235
- completedRef.current = true;
17236
- onComplete();
17237
- }
17238
- });
17239
- }, remainingEnterMs);
17240
17519
  return () => {
17241
- clearTimeout(timeout);
17520
+ cancelFadeDeadline();
17242
17521
  fade?.stop();
17243
17522
  };
17244
17523
  }, [released, opacityAv, onComplete]);
@@ -20067,6 +20346,11 @@ function resolveSfSymbolIconName(name) {
20067
20346
  }
20068
20347
  function makeRoot(size, name, children, vector, box = "square") {
20069
20348
  const imageBox = box === "image" ? vector?.box : void 0;
20349
+ const controlBox = box === "footnote" ? vector?.controlBoxes?.[name] : void 0;
20350
+ const footnote = IOS_UIKIT_TEXT_METRICS.l.footnote;
20351
+ if (box === "footnote" && (!controlBox || size !== footnote.fontSize)) {
20352
+ throw new Error(`SF Symbol footnote metrics unavailable: ${name} at ${size}pt`);
20353
+ }
20070
20354
  const [boxX, boxY, boxWidth, boxHeight] = imageBox ?? [
20071
20355
  12 - (vector && box !== "square" ? vector.advance : 24) / 2,
20072
20356
  0,
@@ -20075,20 +20359,26 @@ function makeRoot(size, name, children, vector, box = "square") {
20075
20359
  ];
20076
20360
  const scale = PixelRatio.get();
20077
20361
  const snap = (points) => imageBox ? Math.ceil(points * scale - 1e-6) / scale : points;
20078
- const width = snap(boxWidth * size / 24);
20079
- const height = snap(boxHeight * size / 24);
20362
+ const width = controlBox ? controlBox[0] : snap(boxWidth * size / 24);
20363
+ const height = controlBox ? controlBox[1] : snap(boxHeight * size / 24);
20080
20364
  const advance = width * 24 / size;
20081
20365
  const tall = height * 24 / size;
20082
- const left = boxX + boxWidth / 2 - advance / 2;
20083
- const top = boxY + boxHeight / 2 - tall / 2;
20366
+ const left = controlBox ? 12 - advance / 2 : boxX + boxWidth / 2 - advance / 2;
20367
+ const top = controlBox ? 12 - tall / 2 : boxY + boxHeight / 2 - tall / 2;
20368
+ const baselineShift = controlBox ? Math.round(footnote.ascent * scale) / scale - Math.ceil(footnote.lineHeight * scale) / scale / 2 - (height / 2 - controlBox[2]) : 0;
20084
20369
  return (0, import_react20.createElement)(
20085
20370
  "svg-root",
20086
20371
  {
20087
20372
  width,
20088
20373
  height,
20089
20374
  viewBox: `${left} ${top} ${advance} ${tall}`,
20090
- style: { width, height },
20091
- sfSymbolName: name
20375
+ style: {
20376
+ width,
20377
+ height,
20378
+ ...controlBox ? { transform: [{ translateY: baselineShift }] } : {}
20379
+ },
20380
+ sfSymbolName: name,
20381
+ ...controlBox ? { sfSymbolControlImage: true } : {}
20092
20382
  },
20093
20383
  ...children
20094
20384
  );
@@ -20247,34 +20537,6 @@ function SfSymbolIcon(props) {
20247
20537
  );
20248
20538
  }
20249
20539
 
20250
- // ../peach-engine/src/platform/adapter.ts
20251
- var IOS_ADAPTER = Object.freeze({
20252
- id: "ios",
20253
- displayName: "iOS",
20254
- isIOS: true,
20255
- isAndroid: false,
20256
- select: (registry) => registry.ios
20257
- });
20258
- var ANDROID_ADAPTER = Object.freeze({
20259
- id: "android",
20260
- displayName: "Android",
20261
- isIOS: false,
20262
- isAndroid: true,
20263
- select: (registry) => registry.android
20264
- });
20265
- var RUNTIME_PLATFORM_ADAPTERS = Object.freeze({
20266
- ios: IOS_ADAPTER,
20267
- android: ANDROID_ADAPTER
20268
- });
20269
- function getRuntimePlatformAdapter(platform) {
20270
- return RUNTIME_PLATFORM_ADAPTERS[platform];
20271
- }
20272
-
20273
- // ../peach-engine/src/platform/current-platform.ts
20274
- function currentRuntimePlatform() {
20275
- return Platform.OS;
20276
- }
20277
-
20278
20540
  // ../peach-engine/src/components/text-input-submit-behavior.ts
20279
20541
  function resolveTextInputSubmitBehavior(props) {
20280
20542
  const multiline = props?.multiline === true;
@@ -21477,8 +21739,8 @@ var import_react23 = require("react");
21477
21739
 
21478
21740
  // ../peach-engine/src/vendor/react-native-lists/deepDiffer.ts
21479
21741
  var logListeners;
21480
- function unstable_setLogListeners(listeners7) {
21481
- logListeners = listeners7 ?? void 0;
21742
+ function unstable_setLogListeners(listeners8) {
21743
+ logListeners = listeners8 ?? void 0;
21482
21744
  }
21483
21745
  function deepDiffer(one, two, maxDepthOrOptions = -1, maybeOptions) {
21484
21746
  const options = typeof maxDepthOrOptions === "number" ? maybeOptions : maxDepthOrOptions;
@@ -23943,6 +24205,16 @@ var VirtualRow = createVirtualCollectionView(
23943
24205
  VirtualRowGenerator
23944
24206
  );
23945
24207
 
24208
+ // ../peach-compat/src/stubs/rn-libraries/AssetRegistry.ts
24209
+ function createHostAssetRegistry() {
24210
+ const assets = [];
24211
+ return {
24212
+ registerAsset: (asset) => assets.push(asset),
24213
+ getAssetByID: (assetId) => assets[assetId - 1]
24214
+ };
24215
+ }
24216
+ var activeRegistry = createHostAssetRegistry();
24217
+
23946
24218
  // ../peach-engine/src/react-native/RefreshControl.ts
23947
24219
  var import_react42 = require("react");
23948
24220
 
@@ -25126,7 +25398,7 @@ function scalarAnimation(kind, value, config) {
25126
25398
  var nextScalarDriverId = 1;
25127
25399
  var activeScalarDriverIds = /* @__PURE__ */ new Set();
25128
25400
  function createScalarDriver(kind, value, config) {
25129
- let rafId = null;
25401
+ let rafId2 = null;
25130
25402
  let workerBridge = null;
25131
25403
  let done = false;
25132
25404
  let onEnd = null;
@@ -25135,7 +25407,7 @@ function createScalarDriver(kind, value, config) {
25135
25407
  const finish = (result, finalValue) => {
25136
25408
  if (done) return;
25137
25409
  done = true;
25138
- rafId = null;
25410
+ rafId2 = null;
25139
25411
  workerBridge = null;
25140
25412
  if (scalarDriverId !== null) activeScalarDriverIds.delete(scalarDriverId);
25141
25413
  scalarDriverId = null;
@@ -25190,9 +25462,9 @@ function createScalarDriver(kind, value, config) {
25190
25462
  const progress = Math.min((timestamp - startedAt3) / duration, 1);
25191
25463
  update(fromValue + easing(progress) * (config.toValue - fromValue));
25192
25464
  if (progress === 1) finish({ finished: true });
25193
- else rafId = requestAnimationFrame(tick2);
25465
+ else rafId2 = requestAnimationFrame(tick2);
25194
25466
  };
25195
- rafId = requestAnimationFrame(tick2);
25467
+ rafId2 = requestAnimationFrame(tick2);
25196
25468
  return;
25197
25469
  }
25198
25470
  if (kind === "spring") {
@@ -25228,10 +25500,10 @@ function createScalarDriver(kind, value, config) {
25228
25500
  update(config.toValue);
25229
25501
  finish({ finished: true });
25230
25502
  } else {
25231
- rafId = requestAnimationFrame(tick2);
25503
+ rafId2 = requestAnimationFrame(tick2);
25232
25504
  }
25233
25505
  };
25234
- rafId = requestAnimationFrame(tick2);
25506
+ rafId2 = requestAnimationFrame(tick2);
25235
25507
  return;
25236
25508
  }
25237
25509
  const deceleration = config.deceleration ?? 0.998;
@@ -25261,10 +25533,10 @@ function createScalarDriver(kind, value, config) {
25261
25533
  if (Math.abs(lastValue - next) < 0.1) finish({ finished: true });
25262
25534
  else {
25263
25535
  lastValue = next;
25264
- rafId = requestAnimationFrame(tick);
25536
+ rafId2 = requestAnimationFrame(tick);
25265
25537
  }
25266
25538
  };
25267
- rafId = requestAnimationFrame(tick);
25539
+ rafId2 = requestAnimationFrame(tick);
25268
25540
  };
25269
25541
  const delay = config.delay ?? 0;
25270
25542
  if (delay <= 0) {
@@ -25275,13 +25547,13 @@ function createScalarDriver(kind, value, config) {
25275
25547
  const waitForDelay = (timestamp) => {
25276
25548
  if (done) return;
25277
25549
  if (timestamp - startedAt >= delay) start();
25278
- else rafId = requestAnimationFrame(waitForDelay);
25550
+ else rafId2 = requestAnimationFrame(waitForDelay);
25279
25551
  };
25280
- rafId = requestAnimationFrame(waitForDelay);
25552
+ rafId2 = requestAnimationFrame(waitForDelay);
25281
25553
  },
25282
25554
  stop(onStopped) {
25283
25555
  if (done) return;
25284
- if (rafId !== null) cancelAnimationFrame(rafId);
25556
+ if (rafId2 !== null) cancelAnimationFrame(rafId2);
25285
25557
  if (workerBridge) {
25286
25558
  afterStop = onStopped ?? null;
25287
25559
  stopNative();
@@ -25941,7 +26213,7 @@ var NativeEventEmitter = class {
25941
26213
  if (count > 0) this._nativeModule?.removeListeners?.(count);
25942
26214
  } else {
25943
26215
  const count = [..._deviceEventListeners.values()].reduce(
25944
- (total, listeners7) => total + listeners7.size,
26216
+ (total, listeners8) => total + listeners8.size,
25945
26217
  0
25946
26218
  );
25947
26219
  for (const registrations of Array.from(_nativeEventRegistrations.values())) {
@@ -25960,9 +26232,9 @@ var NativeEventEmitter = class {
25960
26232
  return _deviceEventListeners.get(eventType)?.size ?? 0;
25961
26233
  }
25962
26234
  emit(eventType, ...args) {
25963
- const listeners7 = _deviceEventListeners.get(eventType);
25964
- if (!listeners7) return;
25965
- for (const listener of Array.from(listeners7)) listener(...args);
26235
+ const listeners8 = _deviceEventListeners.get(eventType);
26236
+ if (!listeners8) return;
26237
+ for (const listener of Array.from(listeners8)) listener(...args);
25966
26238
  }
25967
26239
  };
25968
26240
  var DeviceEventEmitter = new NativeEventEmitter();
@@ -26501,17 +26773,17 @@ function createSootSimRnfsManagerModule() {
26501
26773
  };
26502
26774
  }
26503
26775
  function createSootSimFileAccessModule() {
26504
- const listeners7 = {
26776
+ const listeners8 = {
26505
26777
  complete: /* @__PURE__ */ new Set(),
26506
26778
  error: /* @__PURE__ */ new Set(),
26507
26779
  progress: /* @__PURE__ */ new Set()
26508
26780
  };
26509
26781
  const emit2 = (kind, event) => {
26510
- for (const listener of Array.from(listeners7[kind])) listener(event);
26782
+ for (const listener of Array.from(listeners8[kind])) listener(event);
26511
26783
  };
26512
26784
  const subscribe = (kind, listener) => {
26513
- listeners7[kind].add(listener);
26514
- return { remove: () => listeners7[kind].delete(listener) };
26785
+ listeners8[kind].add(listener);
26786
+ return { remove: () => listeners8[kind].delete(listener) };
26515
26787
  };
26516
26788
  const readText = (pathLike) => getSootSimStorage().getItem(getSootSimRnfsStorageKey(pathLike)) ?? "";
26517
26789
  const writeText = (pathLike, value) => {
@@ -27188,26 +27460,26 @@ var EventEmitter = class {
27188
27460
  "EventEmitter.addListener(...): 2nd argument must be a function."
27189
27461
  );
27190
27462
  }
27191
- let listeners7 = this._listeners.get(eventType);
27192
- if (!listeners7) {
27193
- listeners7 = /* @__PURE__ */ new Set();
27194
- this._listeners.set(eventType, listeners7);
27463
+ let listeners8 = this._listeners.get(eventType);
27464
+ if (!listeners8) {
27465
+ listeners8 = /* @__PURE__ */ new Set();
27466
+ this._listeners.set(eventType, listeners8);
27195
27467
  }
27196
27468
  const registration = {
27197
27469
  listener,
27198
27470
  context,
27199
27471
  remove: () => {
27200
- listeners7.delete(registration);
27201
- if (listeners7.size === 0) this._listeners.delete(eventType);
27472
+ listeners8.delete(registration);
27473
+ if (listeners8.size === 0) this._listeners.delete(eventType);
27202
27474
  }
27203
27475
  };
27204
- listeners7.add(registration);
27476
+ listeners8.add(registration);
27205
27477
  return registration;
27206
27478
  }
27207
27479
  removeListener(eventType, listener) {
27208
- const listeners7 = this._listeners.get(eventType);
27209
- if (!listeners7) return;
27210
- for (const registration of listeners7) {
27480
+ const listeners8 = this._listeners.get(eventType);
27481
+ if (!listeners8) return;
27482
+ for (const registration of listeners8) {
27211
27483
  if (registration.listener === listener) registration.remove();
27212
27484
  }
27213
27485
  }
@@ -27216,9 +27488,9 @@ var EventEmitter = class {
27216
27488
  else this._listeners.clear();
27217
27489
  }
27218
27490
  emit(eventType, ...args) {
27219
- const listeners7 = this._listeners.get(eventType);
27220
- if (!listeners7) return;
27221
- for (const registration of Array.from(listeners7)) {
27491
+ const listeners8 = this._listeners.get(eventType);
27492
+ if (!listeners8) return;
27493
+ for (const registration of Array.from(listeners8)) {
27222
27494
  registration.listener.apply(registration.context, args);
27223
27495
  }
27224
27496
  }
@@ -27483,10 +27755,10 @@ function getDuoFoldRest() {
27483
27755
  }
27484
27756
  }
27485
27757
  function subscribeDuoFoldProgress(fn) {
27486
- const listeners7 = getListenerSet2();
27487
- listeners7.add(fn);
27758
+ const listeners8 = getListenerSet2();
27759
+ listeners8.add(fn);
27488
27760
  return () => {
27489
- listeners7.delete(fn);
27761
+ listeners8.delete(fn);
27490
27762
  };
27491
27763
  }
27492
27764
 
@@ -32453,7 +32725,7 @@ function createRoot(mountTree) {
32453
32725
  let state5 = { tree: null, isView: false, error: null };
32454
32726
  let swap = Promise.resolve();
32455
32727
  let disposed = false;
32456
- const listeners7 = /* @__PURE__ */ new Set();
32728
+ const listeners8 = /* @__PURE__ */ new Set();
32457
32729
  const cache2 = { entries: /* @__PURE__ */ new Map() };
32458
32730
  let lastSwift = null;
32459
32731
  let lastWasm = null;
@@ -32469,7 +32741,7 @@ function createRoot(mountTree) {
32469
32741
  exitSlots.delete(id);
32470
32742
  if (state5.tree === null || lastSwift === null) return;
32471
32743
  state5 = { ...state5, tree: restoreSlots(lastSwift) };
32472
- for (const listener of listeners7) listener();
32744
+ for (const listener of listeners8) listener();
32473
32745
  };
32474
32746
  const stampExit = (node, transaction) => {
32475
32747
  const transition = (0, import_ui.readTransitionModifier)(node.m);
@@ -32622,7 +32894,7 @@ function createRoot(mountTree) {
32622
32894
  const display = lastSwift === null ? null : restoreSlots(lastSwift);
32623
32895
  const changed = display !== state5.tree || next.error !== state5.error || next.isView !== state5.isView;
32624
32896
  state5 = { tree: display, isView: next.isView, error: next.error, transaction };
32625
- if (changed) for (const listener of listeners7) listener();
32897
+ if (changed) for (const listener of listeners8) listener();
32626
32898
  if (timer !== null) clearTimeout(timer);
32627
32899
  timer = null;
32628
32900
  if (timelineTimer !== null) {
@@ -32786,8 +33058,8 @@ function createRoot(mountTree) {
32786
33058
  const component = function SwiftRoot() {
32787
33059
  const rendered = (0, import_react53.useSyncExternalStore)(
32788
33060
  (listener) => {
32789
- listeners7.add(listener);
32790
- return () => listeners7.delete(listener);
33061
+ listeners8.add(listener);
33062
+ return () => listeners8.delete(listener);
32791
33063
  },
32792
33064
  () => state5
32793
33065
  );
@@ -32822,7 +33094,7 @@ function createRoot(mountTree) {
32822
33094
  instance?.unmount();
32823
33095
  appearance.remove();
32824
33096
  dimensions2.remove();
32825
- listeners7.clear();
33097
+ listeners8.clear();
32826
33098
  instance = null;
32827
33099
  cache2.entries.clear();
32828
33100
  },