@hapticjs/core 0.2.1 → 0.3.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.
@@ -376,15 +376,194 @@ var system = {
376
376
  }
377
377
  };
378
378
 
379
+ // src/presets/emotions.ts
380
+ var emotions = {
381
+ /** Excited — fast, energetic pulses building up */
382
+ excited: {
383
+ name: "emotions.excited",
384
+ steps: [
385
+ { type: "vibrate", duration: 30, intensity: 0.5 },
386
+ { type: "pause", duration: 30, intensity: 0 },
387
+ { type: "vibrate", duration: 30, intensity: 0.6 },
388
+ { type: "pause", duration: 25, intensity: 0 },
389
+ { type: "vibrate", duration: 35, intensity: 0.7 },
390
+ { type: "pause", duration: 25, intensity: 0 },
391
+ { type: "vibrate", duration: 35, intensity: 0.8 },
392
+ { type: "pause", duration: 25, intensity: 0 },
393
+ { type: "vibrate", duration: 40, intensity: 0.9 },
394
+ { type: "vibrate", duration: 50, intensity: 1 }
395
+ ]
396
+ },
397
+ /** Calm — slow, gentle wave with soft sustained vibrations */
398
+ calm: {
399
+ name: "emotions.calm",
400
+ steps: [
401
+ { type: "vibrate", duration: 80, intensity: 0.2 },
402
+ { type: "pause", duration: 200, intensity: 0 },
403
+ { type: "vibrate", duration: 100, intensity: 0.25 },
404
+ { type: "pause", duration: 250, intensity: 0 },
405
+ { type: "vibrate", duration: 80, intensity: 0.2 },
406
+ { type: "pause", duration: 200, intensity: 0 },
407
+ { type: "vibrate", duration: 100, intensity: 0.15 }
408
+ ]
409
+ },
410
+ /** Tense — tight, irregular short heavy bursts */
411
+ tense: {
412
+ name: "emotions.tense",
413
+ steps: [
414
+ { type: "vibrate", duration: 35, intensity: 0.8 },
415
+ { type: "pause", duration: 40, intensity: 0 },
416
+ { type: "vibrate", duration: 30, intensity: 0.9 },
417
+ { type: "pause", duration: 30, intensity: 0 },
418
+ { type: "vibrate", duration: 40, intensity: 0.85 },
419
+ { type: "pause", duration: 35, intensity: 0 },
420
+ { type: "vibrate", duration: 30, intensity: 0.9 },
421
+ { type: "pause", duration: 45, intensity: 0 },
422
+ { type: "vibrate", duration: 35, intensity: 0.8 }
423
+ ]
424
+ },
425
+ /** Happy — bouncy, playful ascending rhythm */
426
+ happy: {
427
+ name: "emotions.happy",
428
+ steps: [
429
+ { type: "vibrate", duration: 30, intensity: 0.4 },
430
+ { type: "pause", duration: 50, intensity: 0 },
431
+ { type: "vibrate", duration: 35, intensity: 0.5 },
432
+ { type: "pause", duration: 50, intensity: 0 },
433
+ { type: "vibrate", duration: 35, intensity: 0.6 },
434
+ { type: "pause", duration: 40, intensity: 0 },
435
+ { type: "vibrate", duration: 40, intensity: 0.7 },
436
+ { type: "pause", duration: 40, intensity: 0 },
437
+ { type: "vibrate", duration: 45, intensity: 0.8 }
438
+ ]
439
+ },
440
+ /** Sad — slow, heavy, descending vibrations that fade */
441
+ sad: {
442
+ name: "emotions.sad",
443
+ steps: [
444
+ { type: "vibrate", duration: 100, intensity: 0.8 },
445
+ { type: "pause", duration: 120, intensity: 0 },
446
+ { type: "vibrate", duration: 90, intensity: 0.6 },
447
+ { type: "pause", duration: 140, intensity: 0 },
448
+ { type: "vibrate", duration: 80, intensity: 0.4 },
449
+ { type: "pause", duration: 160, intensity: 0 },
450
+ { type: "vibrate", duration: 70, intensity: 0.25 }
451
+ ]
452
+ },
453
+ /** Angry — aggressive, chaotic heavy rapid hits */
454
+ angry: {
455
+ name: "emotions.angry",
456
+ steps: [
457
+ { type: "vibrate", duration: 40, intensity: 1 },
458
+ { type: "pause", duration: 25, intensity: 0 },
459
+ { type: "vibrate", duration: 35, intensity: 0.9 },
460
+ { type: "pause", duration: 25, intensity: 0 },
461
+ { type: "vibrate", duration: 45, intensity: 1 },
462
+ { type: "pause", duration: 30, intensity: 0 },
463
+ { type: "vibrate", duration: 40, intensity: 0.95 },
464
+ { type: "vibrate", duration: 50, intensity: 1 },
465
+ { type: "pause", duration: 25, intensity: 0 },
466
+ { type: "vibrate", duration: 45, intensity: 0.9 }
467
+ ]
468
+ },
469
+ /** Surprised — sharp sudden hit, silence, then lighter hit */
470
+ surprised: {
471
+ name: "emotions.surprised",
472
+ steps: [
473
+ { type: "vibrate", duration: 40, intensity: 1 },
474
+ { type: "pause", duration: 200, intensity: 0 },
475
+ { type: "vibrate", duration: 30, intensity: 0.4 }
476
+ ]
477
+ },
478
+ /** Anxious — fast irregular heartbeat with inconsistent spacing */
479
+ anxious: {
480
+ name: "emotions.anxious",
481
+ steps: [
482
+ { type: "vibrate", duration: 30, intensity: 0.7 },
483
+ { type: "pause", duration: 60, intensity: 0 },
484
+ { type: "vibrate", duration: 35, intensity: 0.8 },
485
+ { type: "pause", duration: 40, intensity: 0 },
486
+ { type: "vibrate", duration: 25, intensity: 0.6 },
487
+ { type: "pause", duration: 80, intensity: 0 },
488
+ { type: "vibrate", duration: 30, intensity: 0.75 },
489
+ { type: "pause", duration: 50, intensity: 0 },
490
+ { type: "vibrate", duration: 35, intensity: 0.85 },
491
+ { type: "pause", duration: 35, intensity: 0 },
492
+ { type: "vibrate", duration: 30, intensity: 0.7 }
493
+ ]
494
+ },
495
+ /** Confident — strong, steady, measured even pulses */
496
+ confident: {
497
+ name: "emotions.confident",
498
+ steps: [
499
+ { type: "vibrate", duration: 50, intensity: 0.8 },
500
+ { type: "pause", duration: 80, intensity: 0 },
501
+ { type: "vibrate", duration: 50, intensity: 0.8 },
502
+ { type: "pause", duration: 80, intensity: 0 },
503
+ { type: "vibrate", duration: 50, intensity: 0.8 },
504
+ { type: "pause", duration: 80, intensity: 0 },
505
+ { type: "vibrate", duration: 50, intensity: 0.8 }
506
+ ]
507
+ },
508
+ /** Playful — alternating light-heavy in bouncy rhythm */
509
+ playful: {
510
+ name: "emotions.playful",
511
+ steps: [
512
+ { type: "vibrate", duration: 25, intensity: 0.3 },
513
+ { type: "pause", duration: 40, intensity: 0 },
514
+ { type: "vibrate", duration: 40, intensity: 0.7 },
515
+ { type: "pause", duration: 50, intensity: 0 },
516
+ { type: "vibrate", duration: 25, intensity: 0.35 },
517
+ { type: "pause", duration: 40, intensity: 0 },
518
+ { type: "vibrate", duration: 40, intensity: 0.75 },
519
+ { type: "pause", duration: 50, intensity: 0 },
520
+ { type: "vibrate", duration: 25, intensity: 0.3 },
521
+ { type: "pause", duration: 40, intensity: 0 },
522
+ { type: "vibrate", duration: 45, intensity: 0.8 }
523
+ ]
524
+ },
525
+ /** Romantic — gentle heartbeat rhythm, two soft pulses, long pause, repeat */
526
+ romantic: {
527
+ name: "emotions.romantic",
528
+ steps: [
529
+ { type: "vibrate", duration: 35, intensity: 0.4 },
530
+ { type: "pause", duration: 60, intensity: 0 },
531
+ { type: "vibrate", duration: 45, intensity: 0.5 },
532
+ { type: "pause", duration: 300, intensity: 0 },
533
+ { type: "vibrate", duration: 35, intensity: 0.4 },
534
+ { type: "pause", duration: 60, intensity: 0 },
535
+ { type: "vibrate", duration: 45, intensity: 0.5 },
536
+ { type: "pause", duration: 300, intensity: 0 },
537
+ { type: "vibrate", duration: 35, intensity: 0.4 },
538
+ { type: "pause", duration: 60, intensity: 0 },
539
+ { type: "vibrate", duration: 45, intensity: 0.5 }
540
+ ]
541
+ },
542
+ /** Peaceful — very subtle, barely-there ultra-light slow pulses */
543
+ peaceful: {
544
+ name: "emotions.peaceful",
545
+ steps: [
546
+ { type: "vibrate", duration: 60, intensity: 0.1 },
547
+ { type: "pause", duration: 300, intensity: 0 },
548
+ { type: "vibrate", duration: 70, intensity: 0.12 },
549
+ { type: "pause", duration: 350, intensity: 0 },
550
+ { type: "vibrate", duration: 60, intensity: 0.1 },
551
+ { type: "pause", duration: 300, intensity: 0 },
552
+ { type: "vibrate", duration: 70, intensity: 0.08 }
553
+ ]
554
+ }
555
+ };
556
+
379
557
  // src/presets/index.ts
380
558
  var presets = {
381
559
  ui,
382
560
  notifications,
383
561
  gaming,
384
562
  accessibility,
385
- system
563
+ system,
564
+ emotions
386
565
  };
387
566
 
388
- export { accessibility, gaming, notifications, presets, system, ui };
567
+ export { accessibility, emotions, gaming, notifications, presets, system, ui };
389
568
  //# sourceMappingURL=index.js.map
390
569
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"sources":["../../src/presets/ui.ts","../../src/presets/notifications.ts","../../src/presets/gaming.ts","../../src/presets/accessibility.ts","../../src/presets/system.ts","../../src/presets/index.ts"],"names":[],"mappings":"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","file":"index.js","sourcesContent":["import type { HapticPattern } from '../types';\n\n/** UI interaction presets */\nexport const ui = {\n /** Light button tap */\n tap: {\n name: 'ui.tap',\n steps: [{ type: 'vibrate' as const, duration: 30, intensity: 0.6 }],\n },\n\n /** Double tap */\n doubleTap: {\n name: 'ui.doubleTap',\n steps: [\n { type: 'vibrate' as const, duration: 25, intensity: 0.6 },\n { type: 'pause' as const, duration: 80, intensity: 0 },\n { type: 'vibrate' as const, duration: 25, intensity: 0.6 },\n ],\n },\n\n /** Long press acknowledgment */\n longPress: {\n name: 'ui.longPress',\n steps: [{ type: 'vibrate' as const, duration: 50, intensity: 0.8 }],\n },\n\n /** Toggle switch on */\n toggleOn: {\n name: 'ui.toggleOn',\n steps: [{ type: 'vibrate' as const, duration: 30, intensity: 0.6 }],\n },\n\n /** Toggle switch off */\n toggleOff: {\n name: 'ui.toggleOff',\n steps: [{ type: 'vibrate' as const, duration: 25, intensity: 0.4 }],\n },\n\n /** Slider snap to value */\n sliderSnap: {\n name: 'ui.sliderSnap',\n steps: [{ type: 'vibrate' as const, duration: 25, intensity: 0.5 }],\n },\n\n /** Selection changed */\n selection: {\n name: 'ui.selection',\n steps: [{ type: 'vibrate' as const, duration: 25, intensity: 0.5 }],\n },\n\n /** Pull to refresh threshold reached */\n pullToRefresh: {\n name: 'ui.pullToRefresh',\n steps: [\n { type: 'vibrate' as const, duration: 30, intensity: 0.5 },\n { type: 'pause' as const, duration: 40, intensity: 0 },\n { type: 'vibrate' as const, duration: 40, intensity: 0.7 },\n ],\n },\n\n /** Swipe action triggered */\n swipe: {\n name: 'ui.swipe',\n steps: [\n { type: 'vibrate' as const, duration: 30, intensity: 0.5 },\n { type: 'pause' as const, duration: 30, intensity: 0 },\n { type: 'vibrate' as const, duration: 25, intensity: 0.4 },\n ],\n },\n\n /** Context menu appearance */\n contextMenu: {\n name: 'ui.contextMenu',\n steps: [{ type: 'vibrate' as const, duration: 35, intensity: 0.7 }],\n },\n\n /** Drag start */\n dragStart: {\n name: 'ui.dragStart',\n steps: [{ type: 'vibrate' as const, duration: 30, intensity: 0.5 }],\n },\n\n /** Drag drop */\n drop: {\n name: 'ui.drop',\n steps: [\n { type: 'vibrate' as const, duration: 30, intensity: 0.8 },\n { type: 'pause' as const, duration: 30, intensity: 0 },\n { type: 'vibrate' as const, duration: 25, intensity: 0.5 },\n ],\n },\n} satisfies Record<string, HapticPattern>;\n","import type { HapticPattern } from '../types';\n\n/** Notification feedback presets */\nexport const notifications = {\n /** Success — two ascending pulses */\n success: {\n name: 'notifications.success',\n steps: [\n { type: 'vibrate' as const, duration: 35, intensity: 0.5 },\n { type: 'pause' as const, duration: 60, intensity: 0 },\n { type: 'vibrate' as const, duration: 45, intensity: 0.8 },\n ],\n },\n\n /** Warning — three even pulses */\n warning: {\n name: 'notifications.warning',\n steps: [\n { type: 'vibrate' as const, duration: 40, intensity: 0.7 },\n { type: 'pause' as const, duration: 50, intensity: 0 },\n { type: 'vibrate' as const, duration: 40, intensity: 0.7 },\n { type: 'pause' as const, duration: 50, intensity: 0 },\n { type: 'vibrate' as const, duration: 40, intensity: 0.7 },\n ],\n },\n\n /** Error — two heavy pulses */\n error: {\n name: 'notifications.error',\n steps: [\n { type: 'vibrate' as const, duration: 80, intensity: 1.0 },\n { type: 'pause' as const, duration: 100, intensity: 0 },\n { type: 'vibrate' as const, duration: 80, intensity: 1.0 },\n ],\n },\n\n /** Info — soft single pulse */\n info: {\n name: 'notifications.info',\n steps: [\n { type: 'vibrate' as const, duration: 35, intensity: 0.5 },\n ],\n },\n\n /** Message received */\n messageReceived: {\n name: 'notifications.messageReceived',\n steps: [\n { type: 'vibrate' as const, duration: 30, intensity: 0.5 },\n { type: 'pause' as const, duration: 100, intensity: 0 },\n { type: 'vibrate' as const, duration: 30, intensity: 0.5 },\n ],\n },\n\n /** Alarm — urgent repeating pattern */\n alarm: {\n name: 'notifications.alarm',\n steps: [\n { type: 'vibrate' as const, duration: 100, intensity: 1.0 },\n { type: 'pause' as const, duration: 50, intensity: 0 },\n { type: 'vibrate' as const, duration: 100, intensity: 1.0 },\n { type: 'pause' as const, duration: 50, intensity: 0 },\n { type: 'vibrate' as const, duration: 100, intensity: 1.0 },\n { type: 'pause' as const, duration: 200, intensity: 0 },\n { type: 'vibrate' as const, duration: 100, intensity: 1.0 },\n { type: 'pause' as const, duration: 50, intensity: 0 },\n { type: 'vibrate' as const, duration: 100, intensity: 1.0 },\n { type: 'pause' as const, duration: 50, intensity: 0 },\n { type: 'vibrate' as const, duration: 100, intensity: 1.0 },\n ],\n },\n\n /** Reminder — gentle nudge */\n reminder: {\n name: 'notifications.reminder',\n steps: [\n { type: 'vibrate' as const, duration: 30, intensity: 0.5 },\n { type: 'pause' as const, duration: 150, intensity: 0 },\n { type: 'vibrate' as const, duration: 30, intensity: 0.5 },\n ],\n },\n} satisfies Record<string, HapticPattern>;\n","import type { HapticPattern } from '../types';\n\n/** Gaming haptic presets */\nexport const gaming = {\n /** Explosion — heavy descending */\n explosion: {\n name: 'gaming.explosion',\n steps: [\n { type: 'vibrate' as const, duration: 100, intensity: 1.0 },\n { type: 'vibrate' as const, duration: 80, intensity: 0.8 },\n { type: 'vibrate' as const, duration: 60, intensity: 0.5 },\n { type: 'vibrate' as const, duration: 40, intensity: 0.3 },\n ],\n },\n\n /** Collision — sharp impact */\n collision: {\n name: 'gaming.collision',\n steps: [\n { type: 'vibrate' as const, duration: 40, intensity: 1.0 },\n { type: 'pause' as const, duration: 30, intensity: 0 },\n { type: 'vibrate' as const, duration: 25, intensity: 0.5 },\n ],\n },\n\n /** Heartbeat — rhythmic pulse */\n heartbeat: {\n name: 'gaming.heartbeat',\n steps: [\n { type: 'vibrate' as const, duration: 30, intensity: 0.8 },\n { type: 'pause' as const, duration: 80, intensity: 0 },\n { type: 'vibrate' as const, duration: 40, intensity: 1.0 },\n { type: 'pause' as const, duration: 400, intensity: 0 },\n ],\n },\n\n /** Gunshot — sharp burst */\n gunshot: {\n name: 'gaming.gunshot',\n steps: [\n { type: 'vibrate' as const, duration: 30, intensity: 1.0 },\n { type: 'vibrate' as const, duration: 40, intensity: 0.4 },\n ],\n },\n\n /** Sword clash — metallic ring */\n swordClash: {\n name: 'gaming.swordClash',\n steps: [\n { type: 'vibrate' as const, duration: 25, intensity: 1.0 },\n { type: 'pause' as const, duration: 20, intensity: 0 },\n { type: 'vibrate' as const, duration: 40, intensity: 0.6 },\n { type: 'vibrate' as const, duration: 50, intensity: 0.3 },\n ],\n },\n\n /** Power up — ascending intensity */\n powerUp: {\n name: 'gaming.powerUp',\n steps: [\n { type: 'vibrate' as const, duration: 40, intensity: 0.3 },\n { type: 'vibrate' as const, duration: 40, intensity: 0.5 },\n { type: 'vibrate' as const, duration: 40, intensity: 0.7 },\n { type: 'vibrate' as const, duration: 40, intensity: 0.9 },\n { type: 'vibrate' as const, duration: 60, intensity: 1.0 },\n ],\n },\n\n /** Damage taken — heavy stutter */\n damage: {\n name: 'gaming.damage',\n steps: [\n { type: 'vibrate' as const, duration: 50, intensity: 0.9 },\n { type: 'pause' as const, duration: 25, intensity: 0 },\n { type: 'vibrate' as const, duration: 40, intensity: 0.6 },\n { type: 'pause' as const, duration: 25, intensity: 0 },\n { type: 'vibrate' as const, duration: 30, intensity: 0.4 },\n ],\n },\n\n /** Item pickup — light cheerful */\n pickup: {\n name: 'gaming.pickup',\n steps: [\n { type: 'vibrate' as const, duration: 25, intensity: 0.4 },\n { type: 'pause' as const, duration: 40, intensity: 0 },\n { type: 'vibrate' as const, duration: 30, intensity: 0.7 },\n ],\n },\n\n /** Level complete — celebratory */\n levelComplete: {\n name: 'gaming.levelComplete',\n steps: [\n { type: 'vibrate' as const, duration: 30, intensity: 0.5 },\n { type: 'pause' as const, duration: 60, intensity: 0 },\n { type: 'vibrate' as const, duration: 30, intensity: 0.5 },\n { type: 'pause' as const, duration: 60, intensity: 0 },\n { type: 'vibrate' as const, duration: 40, intensity: 0.7 },\n { type: 'pause' as const, duration: 60, intensity: 0 },\n { type: 'vibrate' as const, duration: 60, intensity: 1.0 },\n ],\n },\n\n /** Engine rumble — continuous vibration */\n engineRumble: {\n name: 'gaming.engineRumble',\n steps: [\n { type: 'vibrate' as const, duration: 40, intensity: 0.5 },\n { type: 'pause' as const, duration: 15, intensity: 0 },\n { type: 'vibrate' as const, duration: 40, intensity: 0.6 },\n { type: 'pause' as const, duration: 15, intensity: 0 },\n { type: 'vibrate' as const, duration: 40, intensity: 0.5 },\n { type: 'pause' as const, duration: 15, intensity: 0 },\n { type: 'vibrate' as const, duration: 40, intensity: 0.6 },\n ],\n },\n} satisfies Record<string, HapticPattern>;\n","import type { HapticPattern } from '../types';\n\n/** Accessibility-focused haptic presets — rhythmic patterns for non-visual feedback */\nexport const accessibility = {\n /** Confirm action — clear double pulse */\n confirm: {\n name: 'accessibility.confirm',\n steps: [\n { type: 'vibrate' as const, duration: 35, intensity: 0.7 },\n { type: 'pause' as const, duration: 100, intensity: 0 },\n { type: 'vibrate' as const, duration: 35, intensity: 0.7 },\n ],\n },\n\n /** Deny/reject — long single buzz */\n deny: {\n name: 'accessibility.deny',\n steps: [\n { type: 'vibrate' as const, duration: 200, intensity: 0.8 },\n ],\n },\n\n /** Boundary reached (e.g., scroll limit, min/max value) */\n boundary: {\n name: 'accessibility.boundary',\n steps: [\n { type: 'vibrate' as const, duration: 30, intensity: 1.0 },\n ],\n },\n\n /** Focus change — subtle tick */\n focusChange: {\n name: 'accessibility.focusChange',\n steps: [\n { type: 'vibrate' as const, duration: 25, intensity: 0.5 },\n ],\n },\n\n /** Counting rhythm — one tick per count */\n countTick: {\n name: 'accessibility.countTick',\n steps: [\n { type: 'vibrate' as const, duration: 25, intensity: 0.5 },\n ],\n },\n\n /** Navigation landmark reached */\n landmark: {\n name: 'accessibility.landmark',\n steps: [\n { type: 'vibrate' as const, duration: 25, intensity: 0.6 },\n { type: 'pause' as const, duration: 40, intensity: 0 },\n { type: 'vibrate' as const, duration: 25, intensity: 0.6 },\n { type: 'pause' as const, duration: 40, intensity: 0 },\n { type: 'vibrate' as const, duration: 25, intensity: 0.6 },\n ],\n },\n\n /** Progress checkpoint — escalating feedback */\n progressCheckpoint: {\n name: 'accessibility.progressCheckpoint',\n steps: [\n { type: 'vibrate' as const, duration: 30, intensity: 0.5 },\n { type: 'pause' as const, duration: 60, intensity: 0 },\n { type: 'vibrate' as const, duration: 35, intensity: 0.7 },\n ],\n },\n} satisfies Record<string, HapticPattern>;\n","import type { HapticPattern } from '../types';\n\n/** System-level haptic presets */\nexport const system = {\n /** Keyboard key press */\n keyPress: {\n name: 'system.keyPress',\n steps: [{ type: 'vibrate' as const, duration: 25, intensity: 0.5 }],\n },\n\n /** Scroll tick (detent-like) */\n scrollTick: {\n name: 'system.scrollTick',\n steps: [{ type: 'vibrate' as const, duration: 20, intensity: 0.4 }],\n },\n\n /** Scroll boundary reached */\n scrollBounce: {\n name: 'system.scrollBounce',\n steps: [\n { type: 'vibrate' as const, duration: 25, intensity: 0.6 },\n { type: 'vibrate' as const, duration: 30, intensity: 0.4 },\n ],\n },\n\n /** Delete action */\n delete: {\n name: 'system.delete',\n steps: [\n { type: 'vibrate' as const, duration: 30, intensity: 0.5 },\n { type: 'pause' as const, duration: 50, intensity: 0 },\n { type: 'vibrate' as const, duration: 40, intensity: 0.8 },\n ],\n },\n\n /** Undo action */\n undo: {\n name: 'system.undo',\n steps: [\n { type: 'vibrate' as const, duration: 30, intensity: 0.5 },\n { type: 'pause' as const, duration: 80, intensity: 0 },\n { type: 'vibrate' as const, duration: 25, intensity: 0.4 },\n ],\n },\n\n /** Copy to clipboard */\n copy: {\n name: 'system.copy',\n steps: [{ type: 'vibrate' as const, duration: 30, intensity: 0.5 }],\n },\n\n /** Paste from clipboard */\n paste: {\n name: 'system.paste',\n steps: [\n { type: 'vibrate' as const, duration: 25, intensity: 0.4 },\n { type: 'pause' as const, duration: 30, intensity: 0 },\n { type: 'vibrate' as const, duration: 30, intensity: 0.6 },\n ],\n },\n} satisfies Record<string, HapticPattern>;\n","export { ui } from './ui';\nexport { notifications } from './notifications';\nexport { gaming } from './gaming';\nexport { accessibility } from './accessibility';\nexport { system } from './system';\n\nimport { ui } from './ui';\nimport { notifications } from './notifications';\nimport { gaming } from './gaming';\nimport { accessibility } from './accessibility';\nimport { system } from './system';\n\n/** All presets grouped by category */\nexport const presets = {\n ui,\n notifications,\n gaming,\n accessibility,\n system,\n} as const;\n"]}
1
+ {"version":3,"sources":["../../src/presets/ui.ts","../../src/presets/notifications.ts","../../src/presets/gaming.ts","../../src/presets/accessibility.ts","../../src/presets/system.ts","../../src/presets/emotions.ts","../../src/presets/index.ts"],"names":[],"mappings":";AAGO,IAAM,EAAA,GAAK;AAAA;AAAA,EAEhB,GAAA,EAAK;AAAA,IACH,IAAA,EAAM,QAAA;AAAA,IACN,KAAA,EAAO,CAAC,EAAE,IAAA,EAAM,WAAoB,QAAA,EAAU,EAAA,EAAI,SAAA,EAAW,GAAA,EAAK;AAAA,GACpE;AAAA;AAAA,EAGA,SAAA,EAAW;AAAA,IACT,IAAA,EAAM,cAAA;AAAA,IACN,KAAA,EAAO;AAAA,MACL,EAAE,IAAA,EAAM,SAAA,EAAoB,QAAA,EAAU,EAAA,EAAI,WAAW,GAAA,EAAI;AAAA,MACzD,EAAE,IAAA,EAAM,OAAA,EAAkB,QAAA,EAAU,EAAA,EAAI,WAAW,CAAA,EAAE;AAAA,MACrD,EAAE,IAAA,EAAM,SAAA,EAAoB,QAAA,EAAU,EAAA,EAAI,WAAW,GAAA;AAAI;AAC3D,GACF;AAAA;AAAA,EAGA,SAAA,EAAW;AAAA,IACT,IAAA,EAAM,cAAA;AAAA,IACN,KAAA,EAAO,CAAC,EAAE,IAAA,EAAM,WAAoB,QAAA,EAAU,EAAA,EAAI,SAAA,EAAW,GAAA,EAAK;AAAA,GACpE;AAAA;AAAA,EAGA,QAAA,EAAU;AAAA,IACR,IAAA,EAAM,aAAA;AAAA,IACN,KAAA,EAAO,CAAC,EAAE,IAAA,EAAM,WAAoB,QAAA,EAAU,EAAA,EAAI,SAAA,EAAW,GAAA,EAAK;AAAA,GACpE;AAAA;AAAA,EAGA,SAAA,EAAW;AAAA,IACT,IAAA,EAAM,cAAA;AAAA,IACN,KAAA,EAAO,CAAC,EAAE,IAAA,EAAM,WAAoB,QAAA,EAAU,EAAA,EAAI,SAAA,EAAW,GAAA,EAAK;AAAA,GACpE;AAAA;AAAA,EAGA,UAAA,EAAY;AAAA,IACV,IAAA,EAAM,eAAA;AAAA,IACN,KAAA,EAAO,CAAC,EAAE,IAAA,EAAM,WAAoB,QAAA,EAAU,EAAA,EAAI,SAAA,EAAW,GAAA,EAAK;AAAA,GACpE;AAAA;AAAA,EAGA,SAAA,EAAW;AAAA,IACT,IAAA,EAAM,cAAA;AAAA,IACN,KAAA,EAAO,CAAC,EAAE,IAAA,EAAM,WAAoB,QAAA,EAAU,EAAA,EAAI,SAAA,EAAW,GAAA,EAAK;AAAA,GACpE;AAAA;AAAA,EAGA,aAAA,EAAe;AAAA,IACb,IAAA,EAAM,kBAAA;AAAA,IACN,KAAA,EAAO;AAAA,MACL,EAAE,IAAA,EAAM,SAAA,EAAoB,QAAA,EAAU,EAAA,EAAI,WAAW,GAAA,EAAI;AAAA,MACzD,EAAE,IAAA,EAAM,OAAA,EAAkB,QAAA,EAAU,EAAA,EAAI,WAAW,CAAA,EAAE;AAAA,MACrD,EAAE,IAAA,EAAM,SAAA,EAAoB,QAAA,EAAU,EAAA,EAAI,WAAW,GAAA;AAAI;AAC3D,GACF;AAAA;AAAA,EAGA,KAAA,EAAO;AAAA,IACL,IAAA,EAAM,UAAA;AAAA,IACN,KAAA,EAAO;AAAA,MACL,EAAE,IAAA,EAAM,SAAA,EAAoB,QAAA,EAAU,EAAA,EAAI,WAAW,GAAA,EAAI;AAAA,MACzD,EAAE,IAAA,EAAM,OAAA,EAAkB,QAAA,EAAU,EAAA,EAAI,WAAW,CAAA,EAAE;AAAA,MACrD,EAAE,IAAA,EAAM,SAAA,EAAoB,QAAA,EAAU,EAAA,EAAI,WAAW,GAAA;AAAI;AAC3D,GACF;AAAA;AAAA,EAGA,WAAA,EAAa;AAAA,IACX,IAAA,EAAM,gBAAA;AAAA,IACN,KAAA,EAAO,CAAC,EAAE,IAAA,EAAM,WAAoB,QAAA,EAAU,EAAA,EAAI,SAAA,EAAW,GAAA,EAAK;AAAA,GACpE;AAAA;AAAA,EAGA,SAAA,EAAW;AAAA,IACT,IAAA,EAAM,cAAA;AAAA,IACN,KAAA,EAAO,CAAC,EAAE,IAAA,EAAM,WAAoB,QAAA,EAAU,EAAA,EAAI,SAAA,EAAW,GAAA,EAAK;AAAA,GACpE;AAAA;AAAA,EAGA,IAAA,EAAM;AAAA,IACJ,IAAA,EAAM,SAAA;AAAA,IACN,KAAA,EAAO;AAAA,MACL,EAAE,IAAA,EAAM,SAAA,EAAoB,QAAA,EAAU,EAAA,EAAI,WAAW,GAAA,EAAI;AAAA,MACzD,EAAE,IAAA,EAAM,OAAA,EAAkB,QAAA,EAAU,EAAA,EAAI,WAAW,CAAA,EAAE;AAAA,MACrD,EAAE,IAAA,EAAM,SAAA,EAAoB,QAAA,EAAU,EAAA,EAAI,WAAW,GAAA;AAAI;AAC3D;AAEJ;;;ACxFO,IAAM,aAAA,GAAgB;AAAA;AAAA,EAE3B,OAAA,EAAS;AAAA,IACP,IAAA,EAAM,uBAAA;AAAA,IACN,KAAA,EAAO;AAAA,MACL,EAAE,IAAA,EAAM,SAAA,EAAoB,QAAA,EAAU,EAAA,EAAI,WAAW,GAAA,EAAI;AAAA,MACzD,EAAE,IAAA,EAAM,OAAA,EAAkB,QAAA,EAAU,EAAA,EAAI,WAAW,CAAA,EAAE;AAAA,MACrD,EAAE,IAAA,EAAM,SAAA,EAAoB,QAAA,EAAU,EAAA,EAAI,WAAW,GAAA;AAAI;AAC3D,GACF;AAAA;AAAA,EAGA,OAAA,EAAS;AAAA,IACP,IAAA,EAAM,uBAAA;AAAA,IACN,KAAA,EAAO;AAAA,MACL,EAAE,IAAA,EAAM,SAAA,EAAoB,QAAA,EAAU,EAAA,EAAI,WAAW,GAAA,EAAI;AAAA,MACzD,EAAE,IAAA,EAAM,OAAA,EAAkB,QAAA,EAAU,EAAA,EAAI,WAAW,CAAA,EAAE;AAAA,MACrD,EAAE,IAAA,EAAM,SAAA,EAAoB,QAAA,EAAU,EAAA,EAAI,WAAW,GAAA,EAAI;AAAA,MACzD,EAAE,IAAA,EAAM,OAAA,EAAkB,QAAA,EAAU,EAAA,EAAI,WAAW,CAAA,EAAE;AAAA,MACrD,EAAE,IAAA,EAAM,SAAA,EAAoB,QAAA,EAAU,EAAA,EAAI,WAAW,GAAA;AAAI;AAC3D,GACF;AAAA;AAAA,EAGA,KAAA,EAAO;AAAA,IACL,IAAA,EAAM,qBAAA;AAAA,IACN,KAAA,EAAO;AAAA,MACL,EAAE,IAAA,EAAM,SAAA,EAAoB,QAAA,EAAU,EAAA,EAAI,WAAW,CAAA,EAAI;AAAA,MACzD,EAAE,IAAA,EAAM,OAAA,EAAkB,QAAA,EAAU,GAAA,EAAK,WAAW,CAAA,EAAE;AAAA,MACtD,EAAE,IAAA,EAAM,SAAA,EAAoB,QAAA,EAAU,EAAA,EAAI,WAAW,CAAA;AAAI;AAC3D,GACF;AAAA;AAAA,EAGA,IAAA,EAAM;AAAA,IACJ,IAAA,EAAM,oBAAA;AAAA,IACN,KAAA,EAAO;AAAA,MACL,EAAE,IAAA,EAAM,SAAA,EAAoB,QAAA,EAAU,EAAA,EAAI,WAAW,GAAA;AAAI;AAC3D,GACF;AAAA;AAAA,EAGA,eAAA,EAAiB;AAAA,IACf,IAAA,EAAM,+BAAA;AAAA,IACN,KAAA,EAAO;AAAA,MACL,EAAE,IAAA,EAAM,SAAA,EAAoB,QAAA,EAAU,EAAA,EAAI,WAAW,GAAA,EAAI;AAAA,MACzD,EAAE,IAAA,EAAM,OAAA,EAAkB,QAAA,EAAU,GAAA,EAAK,WAAW,CAAA,EAAE;AAAA,MACtD,EAAE,IAAA,EAAM,SAAA,EAAoB,QAAA,EAAU,EAAA,EAAI,WAAW,GAAA;AAAI;AAC3D,GACF;AAAA;AAAA,EAGA,KAAA,EAAO;AAAA,IACL,IAAA,EAAM,qBAAA;AAAA,IACN,KAAA,EAAO;AAAA,MACL,EAAE,IAAA,EAAM,SAAA,EAAoB,QAAA,EAAU,GAAA,EAAK,WAAW,CAAA,EAAI;AAAA,MAC1D,EAAE,IAAA,EAAM,OAAA,EAAkB,QAAA,EAAU,EAAA,EAAI,WAAW,CAAA,EAAE;AAAA,MACrD,EAAE,IAAA,EAAM,SAAA,EAAoB,QAAA,EAAU,GAAA,EAAK,WAAW,CAAA,EAAI;AAAA,MAC1D,EAAE,IAAA,EAAM,OAAA,EAAkB,QAAA,EAAU,EAAA,EAAI,WAAW,CAAA,EAAE;AAAA,MACrD,EAAE,IAAA,EAAM,SAAA,EAAoB,QAAA,EAAU,GAAA,EAAK,WAAW,CAAA,EAAI;AAAA,MAC1D,EAAE,IAAA,EAAM,OAAA,EAAkB,QAAA,EAAU,GAAA,EAAK,WAAW,CAAA,EAAE;AAAA,MACtD,EAAE,IAAA,EAAM,SAAA,EAAoB,QAAA,EAAU,GAAA,EAAK,WAAW,CAAA,EAAI;AAAA,MAC1D,EAAE,IAAA,EAAM,OAAA,EAAkB,QAAA,EAAU,EAAA,EAAI,WAAW,CAAA,EAAE;AAAA,MACrD,EAAE,IAAA,EAAM,SAAA,EAAoB,QAAA,EAAU,GAAA,EAAK,WAAW,CAAA,EAAI;AAAA,MAC1D,EAAE,IAAA,EAAM,OAAA,EAAkB,QAAA,EAAU,EAAA,EAAI,WAAW,CAAA,EAAE;AAAA,MACrD,EAAE,IAAA,EAAM,SAAA,EAAoB,QAAA,EAAU,GAAA,EAAK,WAAW,CAAA;AAAI;AAC5D,GACF;AAAA;AAAA,EAGA,QAAA,EAAU;AAAA,IACR,IAAA,EAAM,wBAAA;AAAA,IACN,KAAA,EAAO;AAAA,MACL,EAAE,IAAA,EAAM,SAAA,EAAoB,QAAA,EAAU,EAAA,EAAI,WAAW,GAAA,EAAI;AAAA,MACzD,EAAE,IAAA,EAAM,OAAA,EAAkB,QAAA,EAAU,GAAA,EAAK,WAAW,CAAA,EAAE;AAAA,MACtD,EAAE,IAAA,EAAM,SAAA,EAAoB,QAAA,EAAU,EAAA,EAAI,WAAW,GAAA;AAAI;AAC3D;AAEJ;;;AC9EO,IAAM,MAAA,GAAS;AAAA;AAAA,EAEpB,SAAA,EAAW;AAAA,IACT,IAAA,EAAM,kBAAA;AAAA,IACN,KAAA,EAAO;AAAA,MACL,EAAE,IAAA,EAAM,SAAA,EAAoB,QAAA,EAAU,GAAA,EAAK,WAAW,CAAA,EAAI;AAAA,MAC1D,EAAE,IAAA,EAAM,SAAA,EAAoB,QAAA,EAAU,EAAA,EAAI,WAAW,GAAA,EAAI;AAAA,MACzD,EAAE,IAAA,EAAM,SAAA,EAAoB,QAAA,EAAU,EAAA,EAAI,WAAW,GAAA,EAAI;AAAA,MACzD,EAAE,IAAA,EAAM,SAAA,EAAoB,QAAA,EAAU,EAAA,EAAI,WAAW,GAAA;AAAI;AAC3D,GACF;AAAA;AAAA,EAGA,SAAA,EAAW;AAAA,IACT,IAAA,EAAM,kBAAA;AAAA,IACN,KAAA,EAAO;AAAA,MACL,EAAE,IAAA,EAAM,SAAA,EAAoB,QAAA,EAAU,EAAA,EAAI,WAAW,CAAA,EAAI;AAAA,MACzD,EAAE,IAAA,EAAM,OAAA,EAAkB,QAAA,EAAU,EAAA,EAAI,WAAW,CAAA,EAAE;AAAA,MACrD,EAAE,IAAA,EAAM,SAAA,EAAoB,QAAA,EAAU,EAAA,EAAI,WAAW,GAAA;AAAI;AAC3D,GACF;AAAA;AAAA,EAGA,SAAA,EAAW;AAAA,IACT,IAAA,EAAM,kBAAA;AAAA,IACN,KAAA,EAAO;AAAA,MACL,EAAE,IAAA,EAAM,SAAA,EAAoB,QAAA,EAAU,EAAA,EAAI,WAAW,GAAA,EAAI;AAAA,MACzD,EAAE,IAAA,EAAM,OAAA,EAAkB,QAAA,EAAU,EAAA,EAAI,WAAW,CAAA,EAAE;AAAA,MACrD,EAAE,IAAA,EAAM,SAAA,EAAoB,QAAA,EAAU,EAAA,EAAI,WAAW,CAAA,EAAI;AAAA,MACzD,EAAE,IAAA,EAAM,OAAA,EAAkB,QAAA,EAAU,GAAA,EAAK,WAAW,CAAA;AAAE;AACxD,GACF;AAAA;AAAA,EAGA,OAAA,EAAS;AAAA,IACP,IAAA,EAAM,gBAAA;AAAA,IACN,KAAA,EAAO;AAAA,MACL,EAAE,IAAA,EAAM,SAAA,EAAoB,QAAA,EAAU,EAAA,EAAI,WAAW,CAAA,EAAI;AAAA,MACzD,EAAE,IAAA,EAAM,SAAA,EAAoB,QAAA,EAAU,EAAA,EAAI,WAAW,GAAA;AAAI;AAC3D,GACF;AAAA;AAAA,EAGA,UAAA,EAAY;AAAA,IACV,IAAA,EAAM,mBAAA;AAAA,IACN,KAAA,EAAO;AAAA,MACL,EAAE,IAAA,EAAM,SAAA,EAAoB,QAAA,EAAU,EAAA,EAAI,WAAW,CAAA,EAAI;AAAA,MACzD,EAAE,IAAA,EAAM,OAAA,EAAkB,QAAA,EAAU,EAAA,EAAI,WAAW,CAAA,EAAE;AAAA,MACrD,EAAE,IAAA,EAAM,SAAA,EAAoB,QAAA,EAAU,EAAA,EAAI,WAAW,GAAA,EAAI;AAAA,MACzD,EAAE,IAAA,EAAM,SAAA,EAAoB,QAAA,EAAU,EAAA,EAAI,WAAW,GAAA;AAAI;AAC3D,GACF;AAAA;AAAA,EAGA,OAAA,EAAS;AAAA,IACP,IAAA,EAAM,gBAAA;AAAA,IACN,KAAA,EAAO;AAAA,MACL,EAAE,IAAA,EAAM,SAAA,EAAoB,QAAA,EAAU,EAAA,EAAI,WAAW,GAAA,EAAI;AAAA,MACzD,EAAE,IAAA,EAAM,SAAA,EAAoB,QAAA,EAAU,EAAA,EAAI,WAAW,GAAA,EAAI;AAAA,MACzD,EAAE,IAAA,EAAM,SAAA,EAAoB,QAAA,EAAU,EAAA,EAAI,WAAW,GAAA,EAAI;AAAA,MACzD,EAAE,IAAA,EAAM,SAAA,EAAoB,QAAA,EAAU,EAAA,EAAI,WAAW,GAAA,EAAI;AAAA,MACzD,EAAE,IAAA,EAAM,SAAA,EAAoB,QAAA,EAAU,EAAA,EAAI,WAAW,CAAA;AAAI;AAC3D,GACF;AAAA;AAAA,EAGA,MAAA,EAAQ;AAAA,IACN,IAAA,EAAM,eAAA;AAAA,IACN,KAAA,EAAO;AAAA,MACL,EAAE,IAAA,EAAM,SAAA,EAAoB,QAAA,EAAU,EAAA,EAAI,WAAW,GAAA,EAAI;AAAA,MACzD,EAAE,IAAA,EAAM,OAAA,EAAkB,QAAA,EAAU,EAAA,EAAI,WAAW,CAAA,EAAE;AAAA,MACrD,EAAE,IAAA,EAAM,SAAA,EAAoB,QAAA,EAAU,EAAA,EAAI,WAAW,GAAA,EAAI;AAAA,MACzD,EAAE,IAAA,EAAM,OAAA,EAAkB,QAAA,EAAU,EAAA,EAAI,WAAW,CAAA,EAAE;AAAA,MACrD,EAAE,IAAA,EAAM,SAAA,EAAoB,QAAA,EAAU,EAAA,EAAI,WAAW,GAAA;AAAI;AAC3D,GACF;AAAA;AAAA,EAGA,MAAA,EAAQ;AAAA,IACN,IAAA,EAAM,eAAA;AAAA,IACN,KAAA,EAAO;AAAA,MACL,EAAE,IAAA,EAAM,SAAA,EAAoB,QAAA,EAAU,EAAA,EAAI,WAAW,GAAA,EAAI;AAAA,MACzD,EAAE,IAAA,EAAM,OAAA,EAAkB,QAAA,EAAU,EAAA,EAAI,WAAW,CAAA,EAAE;AAAA,MACrD,EAAE,IAAA,EAAM,SAAA,EAAoB,QAAA,EAAU,EAAA,EAAI,WAAW,GAAA;AAAI;AAC3D,GACF;AAAA;AAAA,EAGA,aAAA,EAAe;AAAA,IACb,IAAA,EAAM,sBAAA;AAAA,IACN,KAAA,EAAO;AAAA,MACL,EAAE,IAAA,EAAM,SAAA,EAAoB,QAAA,EAAU,EAAA,EAAI,WAAW,GAAA,EAAI;AAAA,MACzD,EAAE,IAAA,EAAM,OAAA,EAAkB,QAAA,EAAU,EAAA,EAAI,WAAW,CAAA,EAAE;AAAA,MACrD,EAAE,IAAA,EAAM,SAAA,EAAoB,QAAA,EAAU,EAAA,EAAI,WAAW,GAAA,EAAI;AAAA,MACzD,EAAE,IAAA,EAAM,OAAA,EAAkB,QAAA,EAAU,EAAA,EAAI,WAAW,CAAA,EAAE;AAAA,MACrD,EAAE,IAAA,EAAM,SAAA,EAAoB,QAAA,EAAU,EAAA,EAAI,WAAW,GAAA,EAAI;AAAA,MACzD,EAAE,IAAA,EAAM,OAAA,EAAkB,QAAA,EAAU,EAAA,EAAI,WAAW,CAAA,EAAE;AAAA,MACrD,EAAE,IAAA,EAAM,SAAA,EAAoB,QAAA,EAAU,EAAA,EAAI,WAAW,CAAA;AAAI;AAC3D,GACF;AAAA;AAAA,EAGA,YAAA,EAAc;AAAA,IACZ,IAAA,EAAM,qBAAA;AAAA,IACN,KAAA,EAAO;AAAA,MACL,EAAE,IAAA,EAAM,SAAA,EAAoB,QAAA,EAAU,EAAA,EAAI,WAAW,GAAA,EAAI;AAAA,MACzD,EAAE,IAAA,EAAM,OAAA,EAAkB,QAAA,EAAU,EAAA,EAAI,WAAW,CAAA,EAAE;AAAA,MACrD,EAAE,IAAA,EAAM,SAAA,EAAoB,QAAA,EAAU,EAAA,EAAI,WAAW,GAAA,EAAI;AAAA,MACzD,EAAE,IAAA,EAAM,OAAA,EAAkB,QAAA,EAAU,EAAA,EAAI,WAAW,CAAA,EAAE;AAAA,MACrD,EAAE,IAAA,EAAM,SAAA,EAAoB,QAAA,EAAU,EAAA,EAAI,WAAW,GAAA,EAAI;AAAA,MACzD,EAAE,IAAA,EAAM,OAAA,EAAkB,QAAA,EAAU,EAAA,EAAI,WAAW,CAAA,EAAE;AAAA,MACrD,EAAE,IAAA,EAAM,SAAA,EAAoB,QAAA,EAAU,EAAA,EAAI,WAAW,GAAA;AAAI;AAC3D;AAEJ;;;AClHO,IAAM,aAAA,GAAgB;AAAA;AAAA,EAE3B,OAAA,EAAS;AAAA,IACP,IAAA,EAAM,uBAAA;AAAA,IACN,KAAA,EAAO;AAAA,MACL,EAAE,IAAA,EAAM,SAAA,EAAoB,QAAA,EAAU,EAAA,EAAI,WAAW,GAAA,EAAI;AAAA,MACzD,EAAE,IAAA,EAAM,OAAA,EAAkB,QAAA,EAAU,GAAA,EAAK,WAAW,CAAA,EAAE;AAAA,MACtD,EAAE,IAAA,EAAM,SAAA,EAAoB,QAAA,EAAU,EAAA,EAAI,WAAW,GAAA;AAAI;AAC3D,GACF;AAAA;AAAA,EAGA,IAAA,EAAM;AAAA,IACJ,IAAA,EAAM,oBAAA;AAAA,IACN,KAAA,EAAO;AAAA,MACL,EAAE,IAAA,EAAM,SAAA,EAAoB,QAAA,EAAU,GAAA,EAAK,WAAW,GAAA;AAAI;AAC5D,GACF;AAAA;AAAA,EAGA,QAAA,EAAU;AAAA,IACR,IAAA,EAAM,wBAAA;AAAA,IACN,KAAA,EAAO;AAAA,MACL,EAAE,IAAA,EAAM,SAAA,EAAoB,QAAA,EAAU,EAAA,EAAI,WAAW,CAAA;AAAI;AAC3D,GACF;AAAA;AAAA,EAGA,WAAA,EAAa;AAAA,IACX,IAAA,EAAM,2BAAA;AAAA,IACN,KAAA,EAAO;AAAA,MACL,EAAE,IAAA,EAAM,SAAA,EAAoB,QAAA,EAAU,EAAA,EAAI,WAAW,GAAA;AAAI;AAC3D,GACF;AAAA;AAAA,EAGA,SAAA,EAAW;AAAA,IACT,IAAA,EAAM,yBAAA;AAAA,IACN,KAAA,EAAO;AAAA,MACL,EAAE,IAAA,EAAM,SAAA,EAAoB,QAAA,EAAU,EAAA,EAAI,WAAW,GAAA;AAAI;AAC3D,GACF;AAAA;AAAA,EAGA,QAAA,EAAU;AAAA,IACR,IAAA,EAAM,wBAAA;AAAA,IACN,KAAA,EAAO;AAAA,MACL,EAAE,IAAA,EAAM,SAAA,EAAoB,QAAA,EAAU,EAAA,EAAI,WAAW,GAAA,EAAI;AAAA,MACzD,EAAE,IAAA,EAAM,OAAA,EAAkB,QAAA,EAAU,EAAA,EAAI,WAAW,CAAA,EAAE;AAAA,MACrD,EAAE,IAAA,EAAM,SAAA,EAAoB,QAAA,EAAU,EAAA,EAAI,WAAW,GAAA,EAAI;AAAA,MACzD,EAAE,IAAA,EAAM,OAAA,EAAkB,QAAA,EAAU,EAAA,EAAI,WAAW,CAAA,EAAE;AAAA,MACrD,EAAE,IAAA,EAAM,SAAA,EAAoB,QAAA,EAAU,EAAA,EAAI,WAAW,GAAA;AAAI;AAC3D,GACF;AAAA;AAAA,EAGA,kBAAA,EAAoB;AAAA,IAClB,IAAA,EAAM,kCAAA;AAAA,IACN,KAAA,EAAO;AAAA,MACL,EAAE,IAAA,EAAM,SAAA,EAAoB,QAAA,EAAU,EAAA,EAAI,WAAW,GAAA,EAAI;AAAA,MACzD,EAAE,IAAA,EAAM,OAAA,EAAkB,QAAA,EAAU,EAAA,EAAI,WAAW,CAAA,EAAE;AAAA,MACrD,EAAE,IAAA,EAAM,SAAA,EAAoB,QAAA,EAAU,EAAA,EAAI,WAAW,GAAA;AAAI;AAC3D;AAEJ;;;AChEO,IAAM,MAAA,GAAS;AAAA;AAAA,EAEpB,QAAA,EAAU;AAAA,IACR,IAAA,EAAM,iBAAA;AAAA,IACN,KAAA,EAAO,CAAC,EAAE,IAAA,EAAM,WAAoB,QAAA,EAAU,EAAA,EAAI,SAAA,EAAW,GAAA,EAAK;AAAA,GACpE;AAAA;AAAA,EAGA,UAAA,EAAY;AAAA,IACV,IAAA,EAAM,mBAAA;AAAA,IACN,KAAA,EAAO,CAAC,EAAE,IAAA,EAAM,WAAoB,QAAA,EAAU,EAAA,EAAI,SAAA,EAAW,GAAA,EAAK;AAAA,GACpE;AAAA;AAAA,EAGA,YAAA,EAAc;AAAA,IACZ,IAAA,EAAM,qBAAA;AAAA,IACN,KAAA,EAAO;AAAA,MACL,EAAE,IAAA,EAAM,SAAA,EAAoB,QAAA,EAAU,EAAA,EAAI,WAAW,GAAA,EAAI;AAAA,MACzD,EAAE,IAAA,EAAM,SAAA,EAAoB,QAAA,EAAU,EAAA,EAAI,WAAW,GAAA;AAAI;AAC3D,GACF;AAAA;AAAA,EAGA,MAAA,EAAQ;AAAA,IACN,IAAA,EAAM,eAAA;AAAA,IACN,KAAA,EAAO;AAAA,MACL,EAAE,IAAA,EAAM,SAAA,EAAoB,QAAA,EAAU,EAAA,EAAI,WAAW,GAAA,EAAI;AAAA,MACzD,EAAE,IAAA,EAAM,OAAA,EAAkB,QAAA,EAAU,EAAA,EAAI,WAAW,CAAA,EAAE;AAAA,MACrD,EAAE,IAAA,EAAM,SAAA,EAAoB,QAAA,EAAU,EAAA,EAAI,WAAW,GAAA;AAAI;AAC3D,GACF;AAAA;AAAA,EAGA,IAAA,EAAM;AAAA,IACJ,IAAA,EAAM,aAAA;AAAA,IACN,KAAA,EAAO;AAAA,MACL,EAAE,IAAA,EAAM,SAAA,EAAoB,QAAA,EAAU,EAAA,EAAI,WAAW,GAAA,EAAI;AAAA,MACzD,EAAE,IAAA,EAAM,OAAA,EAAkB,QAAA,EAAU,EAAA,EAAI,WAAW,CAAA,EAAE;AAAA,MACrD,EAAE,IAAA,EAAM,SAAA,EAAoB,QAAA,EAAU,EAAA,EAAI,WAAW,GAAA;AAAI;AAC3D,GACF;AAAA;AAAA,EAGA,IAAA,EAAM;AAAA,IACJ,IAAA,EAAM,aAAA;AAAA,IACN,KAAA,EAAO,CAAC,EAAE,IAAA,EAAM,WAAoB,QAAA,EAAU,EAAA,EAAI,SAAA,EAAW,GAAA,EAAK;AAAA,GACpE;AAAA;AAAA,EAGA,KAAA,EAAO;AAAA,IACL,IAAA,EAAM,cAAA;AAAA,IACN,KAAA,EAAO;AAAA,MACL,EAAE,IAAA,EAAM,SAAA,EAAoB,QAAA,EAAU,EAAA,EAAI,WAAW,GAAA,EAAI;AAAA,MACzD,EAAE,IAAA,EAAM,OAAA,EAAkB,QAAA,EAAU,EAAA,EAAI,WAAW,CAAA,EAAE;AAAA,MACrD,EAAE,IAAA,EAAM,SAAA,EAAoB,QAAA,EAAU,EAAA,EAAI,WAAW,GAAA;AAAI;AAC3D;AAEJ;;;ACzDO,IAAM,QAAA,GAAW;AAAA;AAAA,EAEtB,OAAA,EAAS;AAAA,IACP,IAAA,EAAM,kBAAA;AAAA,IACN,KAAA,EAAO;AAAA,MACL,EAAE,IAAA,EAAM,SAAA,EAAoB,QAAA,EAAU,EAAA,EAAI,WAAW,GAAA,EAAI;AAAA,MACzD,EAAE,IAAA,EAAM,OAAA,EAAkB,QAAA,EAAU,EAAA,EAAI,WAAW,CAAA,EAAE;AAAA,MACrD,EAAE,IAAA,EAAM,SAAA,EAAoB,QAAA,EAAU,EAAA,EAAI,WAAW,GAAA,EAAI;AAAA,MACzD,EAAE,IAAA,EAAM,OAAA,EAAkB,QAAA,EAAU,EAAA,EAAI,WAAW,CAAA,EAAE;AAAA,MACrD,EAAE,IAAA,EAAM,SAAA,EAAoB,QAAA,EAAU,EAAA,EAAI,WAAW,GAAA,EAAI;AAAA,MACzD,EAAE,IAAA,EAAM,OAAA,EAAkB,QAAA,EAAU,EAAA,EAAI,WAAW,CAAA,EAAE;AAAA,MACrD,EAAE,IAAA,EAAM,SAAA,EAAoB,QAAA,EAAU,EAAA,EAAI,WAAW,GAAA,EAAI;AAAA,MACzD,EAAE,IAAA,EAAM,OAAA,EAAkB,QAAA,EAAU,EAAA,EAAI,WAAW,CAAA,EAAE;AAAA,MACrD,EAAE,IAAA,EAAM,SAAA,EAAoB,QAAA,EAAU,EAAA,EAAI,WAAW,GAAA,EAAI;AAAA,MACzD,EAAE,IAAA,EAAM,SAAA,EAAoB,QAAA,EAAU,EAAA,EAAI,WAAW,CAAA;AAAI;AAC3D,GACF;AAAA;AAAA,EAGA,IAAA,EAAM;AAAA,IACJ,IAAA,EAAM,eAAA;AAAA,IACN,KAAA,EAAO;AAAA,MACL,EAAE,IAAA,EAAM,SAAA,EAAoB,QAAA,EAAU,EAAA,EAAI,WAAW,GAAA,EAAI;AAAA,MACzD,EAAE,IAAA,EAAM,OAAA,EAAkB,QAAA,EAAU,GAAA,EAAK,WAAW,CAAA,EAAE;AAAA,MACtD,EAAE,IAAA,EAAM,SAAA,EAAoB,QAAA,EAAU,GAAA,EAAK,WAAW,IAAA,EAAK;AAAA,MAC3D,EAAE,IAAA,EAAM,OAAA,EAAkB,QAAA,EAAU,GAAA,EAAK,WAAW,CAAA,EAAE;AAAA,MACtD,EAAE,IAAA,EAAM,SAAA,EAAoB,QAAA,EAAU,EAAA,EAAI,WAAW,GAAA,EAAI;AAAA,MACzD,EAAE,IAAA,EAAM,OAAA,EAAkB,QAAA,EAAU,GAAA,EAAK,WAAW,CAAA,EAAE;AAAA,MACtD,EAAE,IAAA,EAAM,SAAA,EAAoB,QAAA,EAAU,GAAA,EAAK,WAAW,IAAA;AAAK;AAC7D,GACF;AAAA;AAAA,EAGA,KAAA,EAAO;AAAA,IACL,IAAA,EAAM,gBAAA;AAAA,IACN,KAAA,EAAO;AAAA,MACL,EAAE,IAAA,EAAM,SAAA,EAAoB,QAAA,EAAU,EAAA,EAAI,WAAW,GAAA,EAAI;AAAA,MACzD,EAAE,IAAA,EAAM,OAAA,EAAkB,QAAA,EAAU,EAAA,EAAI,WAAW,CAAA,EAAE;AAAA,MACrD,EAAE,IAAA,EAAM,SAAA,EAAoB,QAAA,EAAU,EAAA,EAAI,WAAW,GAAA,EAAI;AAAA,MACzD,EAAE,IAAA,EAAM,OAAA,EAAkB,QAAA,EAAU,EAAA,EAAI,WAAW,CAAA,EAAE;AAAA,MACrD,EAAE,IAAA,EAAM,SAAA,EAAoB,QAAA,EAAU,EAAA,EAAI,WAAW,IAAA,EAAK;AAAA,MAC1D,EAAE,IAAA,EAAM,OAAA,EAAkB,QAAA,EAAU,EAAA,EAAI,WAAW,CAAA,EAAE;AAAA,MACrD,EAAE,IAAA,EAAM,SAAA,EAAoB,QAAA,EAAU,EAAA,EAAI,WAAW,GAAA,EAAI;AAAA,MACzD,EAAE,IAAA,EAAM,OAAA,EAAkB,QAAA,EAAU,EAAA,EAAI,WAAW,CAAA,EAAE;AAAA,MACrD,EAAE,IAAA,EAAM,SAAA,EAAoB,QAAA,EAAU,EAAA,EAAI,WAAW,GAAA;AAAI;AAC3D,GACF;AAAA;AAAA,EAGA,KAAA,EAAO;AAAA,IACL,IAAA,EAAM,gBAAA;AAAA,IACN,KAAA,EAAO;AAAA,MACL,EAAE,IAAA,EAAM,SAAA,EAAoB,QAAA,EAAU,EAAA,EAAI,WAAW,GAAA,EAAI;AAAA,MACzD,EAAE,IAAA,EAAM,OAAA,EAAkB,QAAA,EAAU,EAAA,EAAI,WAAW,CAAA,EAAE;AAAA,MACrD,EAAE,IAAA,EAAM,SAAA,EAAoB,QAAA,EAAU,EAAA,EAAI,WAAW,GAAA,EAAI;AAAA,MACzD,EAAE,IAAA,EAAM,OAAA,EAAkB,QAAA,EAAU,EAAA,EAAI,WAAW,CAAA,EAAE;AAAA,MACrD,EAAE,IAAA,EAAM,SAAA,EAAoB,QAAA,EAAU,EAAA,EAAI,WAAW,GAAA,EAAI;AAAA,MACzD,EAAE,IAAA,EAAM,OAAA,EAAkB,QAAA,EAAU,EAAA,EAAI,WAAW,CAAA,EAAE;AAAA,MACrD,EAAE,IAAA,EAAM,SAAA,EAAoB,QAAA,EAAU,EAAA,EAAI,WAAW,GAAA,EAAI;AAAA,MACzD,EAAE,IAAA,EAAM,OAAA,EAAkB,QAAA,EAAU,EAAA,EAAI,WAAW,CAAA,EAAE;AAAA,MACrD,EAAE,IAAA,EAAM,SAAA,EAAoB,QAAA,EAAU,EAAA,EAAI,WAAW,GAAA;AAAI;AAC3D,GACF;AAAA;AAAA,EAGA,GAAA,EAAK;AAAA,IACH,IAAA,EAAM,cAAA;AAAA,IACN,KAAA,EAAO;AAAA,MACL,EAAE,IAAA,EAAM,SAAA,EAAoB,QAAA,EAAU,GAAA,EAAK,WAAW,GAAA,EAAI;AAAA,MAC1D,EAAE,IAAA,EAAM,OAAA,EAAkB,QAAA,EAAU,GAAA,EAAK,WAAW,CAAA,EAAE;AAAA,MACtD,EAAE,IAAA,EAAM,SAAA,EAAoB,QAAA,EAAU,EAAA,EAAI,WAAW,GAAA,EAAI;AAAA,MACzD,EAAE,IAAA,EAAM,OAAA,EAAkB,QAAA,EAAU,GAAA,EAAK,WAAW,CAAA,EAAE;AAAA,MACtD,EAAE,IAAA,EAAM,SAAA,EAAoB,QAAA,EAAU,EAAA,EAAI,WAAW,GAAA,EAAI;AAAA,MACzD,EAAE,IAAA,EAAM,OAAA,EAAkB,QAAA,EAAU,GAAA,EAAK,WAAW,CAAA,EAAE;AAAA,MACtD,EAAE,IAAA,EAAM,SAAA,EAAoB,QAAA,EAAU,EAAA,EAAI,WAAW,IAAA;AAAK;AAC5D,GACF;AAAA;AAAA,EAGA,KAAA,EAAO;AAAA,IACL,IAAA,EAAM,gBAAA;AAAA,IACN,KAAA,EAAO;AAAA,MACL,EAAE,IAAA,EAAM,SAAA,EAAoB,QAAA,EAAU,EAAA,EAAI,WAAW,CAAA,EAAI;AAAA,MACzD,EAAE,IAAA,EAAM,OAAA,EAAkB,QAAA,EAAU,EAAA,EAAI,WAAW,CAAA,EAAE;AAAA,MACrD,EAAE,IAAA,EAAM,SAAA,EAAoB,QAAA,EAAU,EAAA,EAAI,WAAW,GAAA,EAAI;AAAA,MACzD,EAAE,IAAA,EAAM,OAAA,EAAkB,QAAA,EAAU,EAAA,EAAI,WAAW,CAAA,EAAE;AAAA,MACrD,EAAE,IAAA,EAAM,SAAA,EAAoB,QAAA,EAAU,EAAA,EAAI,WAAW,CAAA,EAAI;AAAA,MACzD,EAAE,IAAA,EAAM,OAAA,EAAkB,QAAA,EAAU,EAAA,EAAI,WAAW,CAAA,EAAE;AAAA,MACrD,EAAE,IAAA,EAAM,SAAA,EAAoB,QAAA,EAAU,EAAA,EAAI,WAAW,IAAA,EAAK;AAAA,MAC1D,EAAE,IAAA,EAAM,SAAA,EAAoB,QAAA,EAAU,EAAA,EAAI,WAAW,CAAA,EAAI;AAAA,MACzD,EAAE,IAAA,EAAM,OAAA,EAAkB,QAAA,EAAU,EAAA,EAAI,WAAW,CAAA,EAAE;AAAA,MACrD,EAAE,IAAA,EAAM,SAAA,EAAoB,QAAA,EAAU,EAAA,EAAI,WAAW,GAAA;AAAI;AAC3D,GACF;AAAA;AAAA,EAGA,SAAA,EAAW;AAAA,IACT,IAAA,EAAM,oBAAA;AAAA,IACN,KAAA,EAAO;AAAA,MACL,EAAE,IAAA,EAAM,SAAA,EAAoB,QAAA,EAAU,EAAA,EAAI,WAAW,CAAA,EAAI;AAAA,MACzD,EAAE,IAAA,EAAM,OAAA,EAAkB,QAAA,EAAU,GAAA,EAAK,WAAW,CAAA,EAAE;AAAA,MACtD,EAAE,IAAA,EAAM,SAAA,EAAoB,QAAA,EAAU,EAAA,EAAI,WAAW,GAAA;AAAI;AAC3D,GACF;AAAA;AAAA,EAGA,OAAA,EAAS;AAAA,IACP,IAAA,EAAM,kBAAA;AAAA,IACN,KAAA,EAAO;AAAA,MACL,EAAE,IAAA,EAAM,SAAA,EAAoB,QAAA,EAAU,EAAA,EAAI,WAAW,GAAA,EAAI;AAAA,MACzD,EAAE,IAAA,EAAM,OAAA,EAAkB,QAAA,EAAU,EAAA,EAAI,WAAW,CAAA,EAAE;AAAA,MACrD,EAAE,IAAA,EAAM,SAAA,EAAoB,QAAA,EAAU,EAAA,EAAI,WAAW,GAAA,EAAI;AAAA,MACzD,EAAE,IAAA,EAAM,OAAA,EAAkB,QAAA,EAAU,EAAA,EAAI,WAAW,CAAA,EAAE;AAAA,MACrD,EAAE,IAAA,EAAM,SAAA,EAAoB,QAAA,EAAU,EAAA,EAAI,WAAW,GAAA,EAAI;AAAA,MACzD,EAAE,IAAA,EAAM,OAAA,EAAkB,QAAA,EAAU,EAAA,EAAI,WAAW,CAAA,EAAE;AAAA,MACrD,EAAE,IAAA,EAAM,SAAA,EAAoB,QAAA,EAAU,EAAA,EAAI,WAAW,IAAA,EAAK;AAAA,MAC1D,EAAE,IAAA,EAAM,OAAA,EAAkB,QAAA,EAAU,EAAA,EAAI,WAAW,CAAA,EAAE;AAAA,MACrD,EAAE,IAAA,EAAM,SAAA,EAAoB,QAAA,EAAU,EAAA,EAAI,WAAW,IAAA,EAAK;AAAA,MAC1D,EAAE,IAAA,EAAM,OAAA,EAAkB,QAAA,EAAU,EAAA,EAAI,WAAW,CAAA,EAAE;AAAA,MACrD,EAAE,IAAA,EAAM,SAAA,EAAoB,QAAA,EAAU,EAAA,EAAI,WAAW,GAAA;AAAI;AAC3D,GACF;AAAA;AAAA,EAGA,SAAA,EAAW;AAAA,IACT,IAAA,EAAM,oBAAA;AAAA,IACN,KAAA,EAAO;AAAA,MACL,EAAE,IAAA,EAAM,SAAA,EAAoB,QAAA,EAAU,EAAA,EAAI,WAAW,GAAA,EAAI;AAAA,MACzD,EAAE,IAAA,EAAM,OAAA,EAAkB,QAAA,EAAU,EAAA,EAAI,WAAW,CAAA,EAAE;AAAA,MACrD,EAAE,IAAA,EAAM,SAAA,EAAoB,QAAA,EAAU,EAAA,EAAI,WAAW,GAAA,EAAI;AAAA,MACzD,EAAE,IAAA,EAAM,OAAA,EAAkB,QAAA,EAAU,EAAA,EAAI,WAAW,CAAA,EAAE;AAAA,MACrD,EAAE,IAAA,EAAM,SAAA,EAAoB,QAAA,EAAU,EAAA,EAAI,WAAW,GAAA,EAAI;AAAA,MACzD,EAAE,IAAA,EAAM,OAAA,EAAkB,QAAA,EAAU,EAAA,EAAI,WAAW,CAAA,EAAE;AAAA,MACrD,EAAE,IAAA,EAAM,SAAA,EAAoB,QAAA,EAAU,EAAA,EAAI,WAAW,GAAA;AAAI;AAC3D,GACF;AAAA;AAAA,EAGA,OAAA,EAAS;AAAA,IACP,IAAA,EAAM,kBAAA;AAAA,IACN,KAAA,EAAO;AAAA,MACL,EAAE,IAAA,EAAM,SAAA,EAAoB,QAAA,EAAU,EAAA,EAAI,WAAW,GAAA,EAAI;AAAA,MACzD,EAAE,IAAA,EAAM,OAAA,EAAkB,QAAA,EAAU,EAAA,EAAI,WAAW,CAAA,EAAE;AAAA,MACrD,EAAE,IAAA,EAAM,SAAA,EAAoB,QAAA,EAAU,EAAA,EAAI,WAAW,GAAA,EAAI;AAAA,MACzD,EAAE,IAAA,EAAM,OAAA,EAAkB,QAAA,EAAU,EAAA,EAAI,WAAW,CAAA,EAAE;AAAA,MACrD,EAAE,IAAA,EAAM,SAAA,EAAoB,QAAA,EAAU,EAAA,EAAI,WAAW,IAAA,EAAK;AAAA,MAC1D,EAAE,IAAA,EAAM,OAAA,EAAkB,QAAA,EAAU,EAAA,EAAI,WAAW,CAAA,EAAE;AAAA,MACrD,EAAE,IAAA,EAAM,SAAA,EAAoB,QAAA,EAAU,EAAA,EAAI,WAAW,IAAA,EAAK;AAAA,MAC1D,EAAE,IAAA,EAAM,OAAA,EAAkB,QAAA,EAAU,EAAA,EAAI,WAAW,CAAA,EAAE;AAAA,MACrD,EAAE,IAAA,EAAM,SAAA,EAAoB,QAAA,EAAU,EAAA,EAAI,WAAW,GAAA,EAAI;AAAA,MACzD,EAAE,IAAA,EAAM,OAAA,EAAkB,QAAA,EAAU,EAAA,EAAI,WAAW,CAAA,EAAE;AAAA,MACrD,EAAE,IAAA,EAAM,SAAA,EAAoB,QAAA,EAAU,EAAA,EAAI,WAAW,GAAA;AAAI;AAC3D,GACF;AAAA;AAAA,EAGA,QAAA,EAAU;AAAA,IACR,IAAA,EAAM,mBAAA;AAAA,IACN,KAAA,EAAO;AAAA,MACL,EAAE,IAAA,EAAM,SAAA,EAAoB,QAAA,EAAU,EAAA,EAAI,WAAW,GAAA,EAAI;AAAA,MACzD,EAAE,IAAA,EAAM,OAAA,EAAkB,QAAA,EAAU,EAAA,EAAI,WAAW,CAAA,EAAE;AAAA,MACrD,EAAE,IAAA,EAAM,SAAA,EAAoB,QAAA,EAAU,EAAA,EAAI,WAAW,GAAA,EAAI;AAAA,MACzD,EAAE,IAAA,EAAM,OAAA,EAAkB,QAAA,EAAU,GAAA,EAAK,WAAW,CAAA,EAAE;AAAA,MACtD,EAAE,IAAA,EAAM,SAAA,EAAoB,QAAA,EAAU,EAAA,EAAI,WAAW,GAAA,EAAI;AAAA,MACzD,EAAE,IAAA,EAAM,OAAA,EAAkB,QAAA,EAAU,EAAA,EAAI,WAAW,CAAA,EAAE;AAAA,MACrD,EAAE,IAAA,EAAM,SAAA,EAAoB,QAAA,EAAU,EAAA,EAAI,WAAW,GAAA,EAAI;AAAA,MACzD,EAAE,IAAA,EAAM,OAAA,EAAkB,QAAA,EAAU,GAAA,EAAK,WAAW,CAAA,EAAE;AAAA,MACtD,EAAE,IAAA,EAAM,SAAA,EAAoB,QAAA,EAAU,EAAA,EAAI,WAAW,GAAA,EAAI;AAAA,MACzD,EAAE,IAAA,EAAM,OAAA,EAAkB,QAAA,EAAU,EAAA,EAAI,WAAW,CAAA,EAAE;AAAA,MACrD,EAAE,IAAA,EAAM,SAAA,EAAoB,QAAA,EAAU,EAAA,EAAI,WAAW,GAAA;AAAI;AAC3D,GACF;AAAA;AAAA,EAGA,QAAA,EAAU;AAAA,IACR,IAAA,EAAM,mBAAA;AAAA,IACN,KAAA,EAAO;AAAA,MACL,EAAE,IAAA,EAAM,SAAA,EAAoB,QAAA,EAAU,EAAA,EAAI,WAAW,GAAA,EAAI;AAAA,MACzD,EAAE,IAAA,EAAM,OAAA,EAAkB,QAAA,EAAU,GAAA,EAAK,WAAW,CAAA,EAAE;AAAA,MACtD,EAAE,IAAA,EAAM,SAAA,EAAoB,QAAA,EAAU,EAAA,EAAI,WAAW,IAAA,EAAK;AAAA,MAC1D,EAAE,IAAA,EAAM,OAAA,EAAkB,QAAA,EAAU,GAAA,EAAK,WAAW,CAAA,EAAE;AAAA,MACtD,EAAE,IAAA,EAAM,SAAA,EAAoB,QAAA,EAAU,EAAA,EAAI,WAAW,GAAA,EAAI;AAAA,MACzD,EAAE,IAAA,EAAM,OAAA,EAAkB,QAAA,EAAU,GAAA,EAAK,WAAW,CAAA,EAAE;AAAA,MACtD,EAAE,IAAA,EAAM,SAAA,EAAoB,QAAA,EAAU,EAAA,EAAI,WAAW,IAAA;AAAK;AAC5D;AAEJ;;;AC9KO,IAAM,OAAA,GAAU;AAAA,EACrB,EAAA;AAAA,EACA,aAAA;AAAA,EACA,MAAA;AAAA,EACA,aAAA;AAAA,EACA,MAAA;AAAA,EACA;AACF","file":"index.js","sourcesContent":["import type { HapticPattern } from '../types';\n\n/** UI interaction presets */\nexport const ui = {\n /** Light button tap */\n tap: {\n name: 'ui.tap',\n steps: [{ type: 'vibrate' as const, duration: 30, intensity: 0.6 }],\n },\n\n /** Double tap */\n doubleTap: {\n name: 'ui.doubleTap',\n steps: [\n { type: 'vibrate' as const, duration: 25, intensity: 0.6 },\n { type: 'pause' as const, duration: 80, intensity: 0 },\n { type: 'vibrate' as const, duration: 25, intensity: 0.6 },\n ],\n },\n\n /** Long press acknowledgment */\n longPress: {\n name: 'ui.longPress',\n steps: [{ type: 'vibrate' as const, duration: 50, intensity: 0.8 }],\n },\n\n /** Toggle switch on */\n toggleOn: {\n name: 'ui.toggleOn',\n steps: [{ type: 'vibrate' as const, duration: 30, intensity: 0.6 }],\n },\n\n /** Toggle switch off */\n toggleOff: {\n name: 'ui.toggleOff',\n steps: [{ type: 'vibrate' as const, duration: 25, intensity: 0.4 }],\n },\n\n /** Slider snap to value */\n sliderSnap: {\n name: 'ui.sliderSnap',\n steps: [{ type: 'vibrate' as const, duration: 25, intensity: 0.5 }],\n },\n\n /** Selection changed */\n selection: {\n name: 'ui.selection',\n steps: [{ type: 'vibrate' as const, duration: 25, intensity: 0.5 }],\n },\n\n /** Pull to refresh threshold reached */\n pullToRefresh: {\n name: 'ui.pullToRefresh',\n steps: [\n { type: 'vibrate' as const, duration: 30, intensity: 0.5 },\n { type: 'pause' as const, duration: 40, intensity: 0 },\n { type: 'vibrate' as const, duration: 40, intensity: 0.7 },\n ],\n },\n\n /** Swipe action triggered */\n swipe: {\n name: 'ui.swipe',\n steps: [\n { type: 'vibrate' as const, duration: 30, intensity: 0.5 },\n { type: 'pause' as const, duration: 30, intensity: 0 },\n { type: 'vibrate' as const, duration: 25, intensity: 0.4 },\n ],\n },\n\n /** Context menu appearance */\n contextMenu: {\n name: 'ui.contextMenu',\n steps: [{ type: 'vibrate' as const, duration: 35, intensity: 0.7 }],\n },\n\n /** Drag start */\n dragStart: {\n name: 'ui.dragStart',\n steps: [{ type: 'vibrate' as const, duration: 30, intensity: 0.5 }],\n },\n\n /** Drag drop */\n drop: {\n name: 'ui.drop',\n steps: [\n { type: 'vibrate' as const, duration: 30, intensity: 0.8 },\n { type: 'pause' as const, duration: 30, intensity: 0 },\n { type: 'vibrate' as const, duration: 25, intensity: 0.5 },\n ],\n },\n} satisfies Record<string, HapticPattern>;\n","import type { HapticPattern } from '../types';\n\n/** Notification feedback presets */\nexport const notifications = {\n /** Success — two ascending pulses */\n success: {\n name: 'notifications.success',\n steps: [\n { type: 'vibrate' as const, duration: 35, intensity: 0.5 },\n { type: 'pause' as const, duration: 60, intensity: 0 },\n { type: 'vibrate' as const, duration: 45, intensity: 0.8 },\n ],\n },\n\n /** Warning — three even pulses */\n warning: {\n name: 'notifications.warning',\n steps: [\n { type: 'vibrate' as const, duration: 40, intensity: 0.7 },\n { type: 'pause' as const, duration: 50, intensity: 0 },\n { type: 'vibrate' as const, duration: 40, intensity: 0.7 },\n { type: 'pause' as const, duration: 50, intensity: 0 },\n { type: 'vibrate' as const, duration: 40, intensity: 0.7 },\n ],\n },\n\n /** Error — two heavy pulses */\n error: {\n name: 'notifications.error',\n steps: [\n { type: 'vibrate' as const, duration: 80, intensity: 1.0 },\n { type: 'pause' as const, duration: 100, intensity: 0 },\n { type: 'vibrate' as const, duration: 80, intensity: 1.0 },\n ],\n },\n\n /** Info — soft single pulse */\n info: {\n name: 'notifications.info',\n steps: [\n { type: 'vibrate' as const, duration: 35, intensity: 0.5 },\n ],\n },\n\n /** Message received */\n messageReceived: {\n name: 'notifications.messageReceived',\n steps: [\n { type: 'vibrate' as const, duration: 30, intensity: 0.5 },\n { type: 'pause' as const, duration: 100, intensity: 0 },\n { type: 'vibrate' as const, duration: 30, intensity: 0.5 },\n ],\n },\n\n /** Alarm — urgent repeating pattern */\n alarm: {\n name: 'notifications.alarm',\n steps: [\n { type: 'vibrate' as const, duration: 100, intensity: 1.0 },\n { type: 'pause' as const, duration: 50, intensity: 0 },\n { type: 'vibrate' as const, duration: 100, intensity: 1.0 },\n { type: 'pause' as const, duration: 50, intensity: 0 },\n { type: 'vibrate' as const, duration: 100, intensity: 1.0 },\n { type: 'pause' as const, duration: 200, intensity: 0 },\n { type: 'vibrate' as const, duration: 100, intensity: 1.0 },\n { type: 'pause' as const, duration: 50, intensity: 0 },\n { type: 'vibrate' as const, duration: 100, intensity: 1.0 },\n { type: 'pause' as const, duration: 50, intensity: 0 },\n { type: 'vibrate' as const, duration: 100, intensity: 1.0 },\n ],\n },\n\n /** Reminder — gentle nudge */\n reminder: {\n name: 'notifications.reminder',\n steps: [\n { type: 'vibrate' as const, duration: 30, intensity: 0.5 },\n { type: 'pause' as const, duration: 150, intensity: 0 },\n { type: 'vibrate' as const, duration: 30, intensity: 0.5 },\n ],\n },\n} satisfies Record<string, HapticPattern>;\n","import type { HapticPattern } from '../types';\n\n/** Gaming haptic presets */\nexport const gaming = {\n /** Explosion — heavy descending */\n explosion: {\n name: 'gaming.explosion',\n steps: [\n { type: 'vibrate' as const, duration: 100, intensity: 1.0 },\n { type: 'vibrate' as const, duration: 80, intensity: 0.8 },\n { type: 'vibrate' as const, duration: 60, intensity: 0.5 },\n { type: 'vibrate' as const, duration: 40, intensity: 0.3 },\n ],\n },\n\n /** Collision — sharp impact */\n collision: {\n name: 'gaming.collision',\n steps: [\n { type: 'vibrate' as const, duration: 40, intensity: 1.0 },\n { type: 'pause' as const, duration: 30, intensity: 0 },\n { type: 'vibrate' as const, duration: 25, intensity: 0.5 },\n ],\n },\n\n /** Heartbeat — rhythmic pulse */\n heartbeat: {\n name: 'gaming.heartbeat',\n steps: [\n { type: 'vibrate' as const, duration: 30, intensity: 0.8 },\n { type: 'pause' as const, duration: 80, intensity: 0 },\n { type: 'vibrate' as const, duration: 40, intensity: 1.0 },\n { type: 'pause' as const, duration: 400, intensity: 0 },\n ],\n },\n\n /** Gunshot — sharp burst */\n gunshot: {\n name: 'gaming.gunshot',\n steps: [\n { type: 'vibrate' as const, duration: 30, intensity: 1.0 },\n { type: 'vibrate' as const, duration: 40, intensity: 0.4 },\n ],\n },\n\n /** Sword clash — metallic ring */\n swordClash: {\n name: 'gaming.swordClash',\n steps: [\n { type: 'vibrate' as const, duration: 25, intensity: 1.0 },\n { type: 'pause' as const, duration: 20, intensity: 0 },\n { type: 'vibrate' as const, duration: 40, intensity: 0.6 },\n { type: 'vibrate' as const, duration: 50, intensity: 0.3 },\n ],\n },\n\n /** Power up — ascending intensity */\n powerUp: {\n name: 'gaming.powerUp',\n steps: [\n { type: 'vibrate' as const, duration: 40, intensity: 0.3 },\n { type: 'vibrate' as const, duration: 40, intensity: 0.5 },\n { type: 'vibrate' as const, duration: 40, intensity: 0.7 },\n { type: 'vibrate' as const, duration: 40, intensity: 0.9 },\n { type: 'vibrate' as const, duration: 60, intensity: 1.0 },\n ],\n },\n\n /** Damage taken — heavy stutter */\n damage: {\n name: 'gaming.damage',\n steps: [\n { type: 'vibrate' as const, duration: 50, intensity: 0.9 },\n { type: 'pause' as const, duration: 25, intensity: 0 },\n { type: 'vibrate' as const, duration: 40, intensity: 0.6 },\n { type: 'pause' as const, duration: 25, intensity: 0 },\n { type: 'vibrate' as const, duration: 30, intensity: 0.4 },\n ],\n },\n\n /** Item pickup — light cheerful */\n pickup: {\n name: 'gaming.pickup',\n steps: [\n { type: 'vibrate' as const, duration: 25, intensity: 0.4 },\n { type: 'pause' as const, duration: 40, intensity: 0 },\n { type: 'vibrate' as const, duration: 30, intensity: 0.7 },\n ],\n },\n\n /** Level complete — celebratory */\n levelComplete: {\n name: 'gaming.levelComplete',\n steps: [\n { type: 'vibrate' as const, duration: 30, intensity: 0.5 },\n { type: 'pause' as const, duration: 60, intensity: 0 },\n { type: 'vibrate' as const, duration: 30, intensity: 0.5 },\n { type: 'pause' as const, duration: 60, intensity: 0 },\n { type: 'vibrate' as const, duration: 40, intensity: 0.7 },\n { type: 'pause' as const, duration: 60, intensity: 0 },\n { type: 'vibrate' as const, duration: 60, intensity: 1.0 },\n ],\n },\n\n /** Engine rumble — continuous vibration */\n engineRumble: {\n name: 'gaming.engineRumble',\n steps: [\n { type: 'vibrate' as const, duration: 40, intensity: 0.5 },\n { type: 'pause' as const, duration: 15, intensity: 0 },\n { type: 'vibrate' as const, duration: 40, intensity: 0.6 },\n { type: 'pause' as const, duration: 15, intensity: 0 },\n { type: 'vibrate' as const, duration: 40, intensity: 0.5 },\n { type: 'pause' as const, duration: 15, intensity: 0 },\n { type: 'vibrate' as const, duration: 40, intensity: 0.6 },\n ],\n },\n} satisfies Record<string, HapticPattern>;\n","import type { HapticPattern } from '../types';\n\n/** Accessibility-focused haptic presets — rhythmic patterns for non-visual feedback */\nexport const accessibility = {\n /** Confirm action — clear double pulse */\n confirm: {\n name: 'accessibility.confirm',\n steps: [\n { type: 'vibrate' as const, duration: 35, intensity: 0.7 },\n { type: 'pause' as const, duration: 100, intensity: 0 },\n { type: 'vibrate' as const, duration: 35, intensity: 0.7 },\n ],\n },\n\n /** Deny/reject — long single buzz */\n deny: {\n name: 'accessibility.deny',\n steps: [\n { type: 'vibrate' as const, duration: 200, intensity: 0.8 },\n ],\n },\n\n /** Boundary reached (e.g., scroll limit, min/max value) */\n boundary: {\n name: 'accessibility.boundary',\n steps: [\n { type: 'vibrate' as const, duration: 30, intensity: 1.0 },\n ],\n },\n\n /** Focus change — subtle tick */\n focusChange: {\n name: 'accessibility.focusChange',\n steps: [\n { type: 'vibrate' as const, duration: 25, intensity: 0.5 },\n ],\n },\n\n /** Counting rhythm — one tick per count */\n countTick: {\n name: 'accessibility.countTick',\n steps: [\n { type: 'vibrate' as const, duration: 25, intensity: 0.5 },\n ],\n },\n\n /** Navigation landmark reached */\n landmark: {\n name: 'accessibility.landmark',\n steps: [\n { type: 'vibrate' as const, duration: 25, intensity: 0.6 },\n { type: 'pause' as const, duration: 40, intensity: 0 },\n { type: 'vibrate' as const, duration: 25, intensity: 0.6 },\n { type: 'pause' as const, duration: 40, intensity: 0 },\n { type: 'vibrate' as const, duration: 25, intensity: 0.6 },\n ],\n },\n\n /** Progress checkpoint — escalating feedback */\n progressCheckpoint: {\n name: 'accessibility.progressCheckpoint',\n steps: [\n { type: 'vibrate' as const, duration: 30, intensity: 0.5 },\n { type: 'pause' as const, duration: 60, intensity: 0 },\n { type: 'vibrate' as const, duration: 35, intensity: 0.7 },\n ],\n },\n} satisfies Record<string, HapticPattern>;\n","import type { HapticPattern } from '../types';\n\n/** System-level haptic presets */\nexport const system = {\n /** Keyboard key press */\n keyPress: {\n name: 'system.keyPress',\n steps: [{ type: 'vibrate' as const, duration: 25, intensity: 0.5 }],\n },\n\n /** Scroll tick (detent-like) */\n scrollTick: {\n name: 'system.scrollTick',\n steps: [{ type: 'vibrate' as const, duration: 20, intensity: 0.4 }],\n },\n\n /** Scroll boundary reached */\n scrollBounce: {\n name: 'system.scrollBounce',\n steps: [\n { type: 'vibrate' as const, duration: 25, intensity: 0.6 },\n { type: 'vibrate' as const, duration: 30, intensity: 0.4 },\n ],\n },\n\n /** Delete action */\n delete: {\n name: 'system.delete',\n steps: [\n { type: 'vibrate' as const, duration: 30, intensity: 0.5 },\n { type: 'pause' as const, duration: 50, intensity: 0 },\n { type: 'vibrate' as const, duration: 40, intensity: 0.8 },\n ],\n },\n\n /** Undo action */\n undo: {\n name: 'system.undo',\n steps: [\n { type: 'vibrate' as const, duration: 30, intensity: 0.5 },\n { type: 'pause' as const, duration: 80, intensity: 0 },\n { type: 'vibrate' as const, duration: 25, intensity: 0.4 },\n ],\n },\n\n /** Copy to clipboard */\n copy: {\n name: 'system.copy',\n steps: [{ type: 'vibrate' as const, duration: 30, intensity: 0.5 }],\n },\n\n /** Paste from clipboard */\n paste: {\n name: 'system.paste',\n steps: [\n { type: 'vibrate' as const, duration: 25, intensity: 0.4 },\n { type: 'pause' as const, duration: 30, intensity: 0 },\n { type: 'vibrate' as const, duration: 30, intensity: 0.6 },\n ],\n },\n} satisfies Record<string, HapticPattern>;\n","import type { HapticPattern } from '../types';\n\n/** Emotion-based haptic presets */\nexport const emotions = {\n /** Excited — fast, energetic pulses building up */\n excited: {\n name: 'emotions.excited',\n steps: [\n { type: 'vibrate' as const, duration: 30, intensity: 0.5 },\n { type: 'pause' as const, duration: 30, intensity: 0 },\n { type: 'vibrate' as const, duration: 30, intensity: 0.6 },\n { type: 'pause' as const, duration: 25, intensity: 0 },\n { type: 'vibrate' as const, duration: 35, intensity: 0.7 },\n { type: 'pause' as const, duration: 25, intensity: 0 },\n { type: 'vibrate' as const, duration: 35, intensity: 0.8 },\n { type: 'pause' as const, duration: 25, intensity: 0 },\n { type: 'vibrate' as const, duration: 40, intensity: 0.9 },\n { type: 'vibrate' as const, duration: 50, intensity: 1.0 },\n ],\n },\n\n /** Calm — slow, gentle wave with soft sustained vibrations */\n calm: {\n name: 'emotions.calm',\n steps: [\n { type: 'vibrate' as const, duration: 80, intensity: 0.2 },\n { type: 'pause' as const, duration: 200, intensity: 0 },\n { type: 'vibrate' as const, duration: 100, intensity: 0.25 },\n { type: 'pause' as const, duration: 250, intensity: 0 },\n { type: 'vibrate' as const, duration: 80, intensity: 0.2 },\n { type: 'pause' as const, duration: 200, intensity: 0 },\n { type: 'vibrate' as const, duration: 100, intensity: 0.15 },\n ],\n },\n\n /** Tense — tight, irregular short heavy bursts */\n tense: {\n name: 'emotions.tense',\n steps: [\n { type: 'vibrate' as const, duration: 35, intensity: 0.8 },\n { type: 'pause' as const, duration: 40, intensity: 0 },\n { type: 'vibrate' as const, duration: 30, intensity: 0.9 },\n { type: 'pause' as const, duration: 30, intensity: 0 },\n { type: 'vibrate' as const, duration: 40, intensity: 0.85 },\n { type: 'pause' as const, duration: 35, intensity: 0 },\n { type: 'vibrate' as const, duration: 30, intensity: 0.9 },\n { type: 'pause' as const, duration: 45, intensity: 0 },\n { type: 'vibrate' as const, duration: 35, intensity: 0.8 },\n ],\n },\n\n /** Happy — bouncy, playful ascending rhythm */\n happy: {\n name: 'emotions.happy',\n steps: [\n { type: 'vibrate' as const, duration: 30, intensity: 0.4 },\n { type: 'pause' as const, duration: 50, intensity: 0 },\n { type: 'vibrate' as const, duration: 35, intensity: 0.5 },\n { type: 'pause' as const, duration: 50, intensity: 0 },\n { type: 'vibrate' as const, duration: 35, intensity: 0.6 },\n { type: 'pause' as const, duration: 40, intensity: 0 },\n { type: 'vibrate' as const, duration: 40, intensity: 0.7 },\n { type: 'pause' as const, duration: 40, intensity: 0 },\n { type: 'vibrate' as const, duration: 45, intensity: 0.8 },\n ],\n },\n\n /** Sad — slow, heavy, descending vibrations that fade */\n sad: {\n name: 'emotions.sad',\n steps: [\n { type: 'vibrate' as const, duration: 100, intensity: 0.8 },\n { type: 'pause' as const, duration: 120, intensity: 0 },\n { type: 'vibrate' as const, duration: 90, intensity: 0.6 },\n { type: 'pause' as const, duration: 140, intensity: 0 },\n { type: 'vibrate' as const, duration: 80, intensity: 0.4 },\n { type: 'pause' as const, duration: 160, intensity: 0 },\n { type: 'vibrate' as const, duration: 70, intensity: 0.25 },\n ],\n },\n\n /** Angry — aggressive, chaotic heavy rapid hits */\n angry: {\n name: 'emotions.angry',\n steps: [\n { type: 'vibrate' as const, duration: 40, intensity: 1.0 },\n { type: 'pause' as const, duration: 25, intensity: 0 },\n { type: 'vibrate' as const, duration: 35, intensity: 0.9 },\n { type: 'pause' as const, duration: 25, intensity: 0 },\n { type: 'vibrate' as const, duration: 45, intensity: 1.0 },\n { type: 'pause' as const, duration: 30, intensity: 0 },\n { type: 'vibrate' as const, duration: 40, intensity: 0.95 },\n { type: 'vibrate' as const, duration: 50, intensity: 1.0 },\n { type: 'pause' as const, duration: 25, intensity: 0 },\n { type: 'vibrate' as const, duration: 45, intensity: 0.9 },\n ],\n },\n\n /** Surprised — sharp sudden hit, silence, then lighter hit */\n surprised: {\n name: 'emotions.surprised',\n steps: [\n { type: 'vibrate' as const, duration: 40, intensity: 1.0 },\n { type: 'pause' as const, duration: 200, intensity: 0 },\n { type: 'vibrate' as const, duration: 30, intensity: 0.4 },\n ],\n },\n\n /** Anxious — fast irregular heartbeat with inconsistent spacing */\n anxious: {\n name: 'emotions.anxious',\n steps: [\n { type: 'vibrate' as const, duration: 30, intensity: 0.7 },\n { type: 'pause' as const, duration: 60, intensity: 0 },\n { type: 'vibrate' as const, duration: 35, intensity: 0.8 },\n { type: 'pause' as const, duration: 40, intensity: 0 },\n { type: 'vibrate' as const, duration: 25, intensity: 0.6 },\n { type: 'pause' as const, duration: 80, intensity: 0 },\n { type: 'vibrate' as const, duration: 30, intensity: 0.75 },\n { type: 'pause' as const, duration: 50, intensity: 0 },\n { type: 'vibrate' as const, duration: 35, intensity: 0.85 },\n { type: 'pause' as const, duration: 35, intensity: 0 },\n { type: 'vibrate' as const, duration: 30, intensity: 0.7 },\n ],\n },\n\n /** Confident — strong, steady, measured even pulses */\n confident: {\n name: 'emotions.confident',\n steps: [\n { type: 'vibrate' as const, duration: 50, intensity: 0.8 },\n { type: 'pause' as const, duration: 80, intensity: 0 },\n { type: 'vibrate' as const, duration: 50, intensity: 0.8 },\n { type: 'pause' as const, duration: 80, intensity: 0 },\n { type: 'vibrate' as const, duration: 50, intensity: 0.8 },\n { type: 'pause' as const, duration: 80, intensity: 0 },\n { type: 'vibrate' as const, duration: 50, intensity: 0.8 },\n ],\n },\n\n /** Playful — alternating light-heavy in bouncy rhythm */\n playful: {\n name: 'emotions.playful',\n steps: [\n { type: 'vibrate' as const, duration: 25, intensity: 0.3 },\n { type: 'pause' as const, duration: 40, intensity: 0 },\n { type: 'vibrate' as const, duration: 40, intensity: 0.7 },\n { type: 'pause' as const, duration: 50, intensity: 0 },\n { type: 'vibrate' as const, duration: 25, intensity: 0.35 },\n { type: 'pause' as const, duration: 40, intensity: 0 },\n { type: 'vibrate' as const, duration: 40, intensity: 0.75 },\n { type: 'pause' as const, duration: 50, intensity: 0 },\n { type: 'vibrate' as const, duration: 25, intensity: 0.3 },\n { type: 'pause' as const, duration: 40, intensity: 0 },\n { type: 'vibrate' as const, duration: 45, intensity: 0.8 },\n ],\n },\n\n /** Romantic — gentle heartbeat rhythm, two soft pulses, long pause, repeat */\n romantic: {\n name: 'emotions.romantic',\n steps: [\n { type: 'vibrate' as const, duration: 35, intensity: 0.4 },\n { type: 'pause' as const, duration: 60, intensity: 0 },\n { type: 'vibrate' as const, duration: 45, intensity: 0.5 },\n { type: 'pause' as const, duration: 300, intensity: 0 },\n { type: 'vibrate' as const, duration: 35, intensity: 0.4 },\n { type: 'pause' as const, duration: 60, intensity: 0 },\n { type: 'vibrate' as const, duration: 45, intensity: 0.5 },\n { type: 'pause' as const, duration: 300, intensity: 0 },\n { type: 'vibrate' as const, duration: 35, intensity: 0.4 },\n { type: 'pause' as const, duration: 60, intensity: 0 },\n { type: 'vibrate' as const, duration: 45, intensity: 0.5 },\n ],\n },\n\n /** Peaceful — very subtle, barely-there ultra-light slow pulses */\n peaceful: {\n name: 'emotions.peaceful',\n steps: [\n { type: 'vibrate' as const, duration: 60, intensity: 0.1 },\n { type: 'pause' as const, duration: 300, intensity: 0 },\n { type: 'vibrate' as const, duration: 70, intensity: 0.12 },\n { type: 'pause' as const, duration: 350, intensity: 0 },\n { type: 'vibrate' as const, duration: 60, intensity: 0.1 },\n { type: 'pause' as const, duration: 300, intensity: 0 },\n { type: 'vibrate' as const, duration: 70, intensity: 0.08 },\n ],\n },\n} satisfies Record<string, HapticPattern>;\n","export { ui } from './ui';\nexport { notifications } from './notifications';\nexport { gaming } from './gaming';\nexport { accessibility } from './accessibility';\nexport { system } from './system';\nexport { emotions } from './emotions';\n\nimport { ui } from './ui';\nimport { notifications } from './notifications';\nimport { gaming } from './gaming';\nimport { accessibility } from './accessibility';\nimport { system } from './system';\nimport { emotions } from './emotions';\n\n/** All presets grouped by category */\nexport const presets = {\n ui,\n notifications,\n gaming,\n accessibility,\n system,\n emotions,\n} as const;\n"]}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@hapticjs/core",
3
- "version": "0.2.1",
3
+ "version": "0.3.0",
4
4
  "description": "Universal Haptics Engine — feel the web",
5
5
  "type": "module",
6
6
  "main": "./dist/index.cjs",