@rpgjs/client 5.0.0-alpha.21 → 5.0.0-alpha.22

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 (72) hide show
  1. package/dist/Game/Object.d.ts +109 -0
  2. package/dist/RpgClientEngine.d.ts +111 -0
  3. package/dist/index.d.ts +2 -1
  4. package/dist/index.js +2 -1
  5. package/dist/index.js.map +1 -1
  6. package/dist/index10.js +1 -1
  7. package/dist/index15.js +42 -3
  8. package/dist/index15.js.map +1 -1
  9. package/dist/index19.js.map +1 -1
  10. package/dist/index2.js +142 -2
  11. package/dist/index2.js.map +1 -1
  12. package/dist/index20.js +15 -2
  13. package/dist/index20.js.map +1 -1
  14. package/dist/index23.js.map +1 -1
  15. package/dist/index26.js +2 -2
  16. package/dist/index26.js.map +1 -1
  17. package/dist/index27.js +2 -2
  18. package/dist/index27.js.map +1 -1
  19. package/dist/index34.js.map +1 -1
  20. package/dist/index35.js.map +1 -1
  21. package/dist/index36.js +8 -1
  22. package/dist/index36.js.map +1 -1
  23. package/dist/index37.js +1 -1
  24. package/dist/index38.js +1 -1
  25. package/dist/index40.js +6 -6
  26. package/dist/index41.js +320 -3681
  27. package/dist/index41.js.map +1 -1
  28. package/dist/index42.js +3686 -183
  29. package/dist/index42.js.map +1 -1
  30. package/dist/index43.js +71 -498
  31. package/dist/index43.js.map +1 -1
  32. package/dist/index44.js +182 -72
  33. package/dist/index44.js.map +1 -1
  34. package/dist/index45.js +500 -2
  35. package/dist/index45.js.map +1 -1
  36. package/dist/index46.js +3 -17
  37. package/dist/index46.js.map +1 -1
  38. package/dist/index47.js +16 -142
  39. package/dist/index47.js.map +1 -1
  40. package/dist/index48.js +206 -8
  41. package/dist/index48.js.map +1 -1
  42. package/dist/index49.js +7 -108
  43. package/dist/index49.js.map +1 -1
  44. package/dist/index50.js +104 -127
  45. package/dist/index50.js.map +1 -1
  46. package/dist/index51.js +122 -123
  47. package/dist/index51.js.map +1 -1
  48. package/dist/index52.js +123 -98
  49. package/dist/index52.js.map +1 -1
  50. package/dist/index53.js +107 -136
  51. package/dist/index53.js.map +1 -1
  52. package/dist/index54.js +139 -7
  53. package/dist/index54.js.map +1 -1
  54. package/dist/index55.js +7 -52
  55. package/dist/index55.js.map +1 -1
  56. package/dist/index56.js +54 -0
  57. package/dist/index56.js.map +1 -0
  58. package/dist/index8.js +8 -0
  59. package/dist/index8.js.map +1 -1
  60. package/dist/module.d.ts +43 -4
  61. package/dist/services/keyboardControls.d.ts +13 -2
  62. package/dist/services/mmorpg.d.ts +1 -1
  63. package/dist/services/standalone.d.ts +1 -1
  64. package/package.json +11 -10
  65. package/src/Game/Object.ts +82 -8
  66. package/src/RpgClientEngine.ts +173 -2
  67. package/src/components/character.ce +67 -4
  68. package/src/components/prebuilt/index.ts +1 -0
  69. package/src/components/scenes/draw-map.ce +12 -3
  70. package/src/index.ts +2 -1
  71. package/src/module.ts +56 -2
  72. package/src/services/keyboardControls.ts +13 -1
@@ -0,0 +1,109 @@
1
+ import { Hooks, RpgCommonPlayer } from '@rpgjs/common';
2
+ import { RpgClientEngine } from '../RpgClientEngine';
3
+ export declare abstract class RpgClientObject extends RpgCommonPlayer {
4
+ abstract type: string;
5
+ emitParticleTrigger: import('canvasengine').Trigger<any>;
6
+ particleName: import('canvasengine').WritableSignal<string>;
7
+ animationCurrentIndex: import('canvasengine').WritableSignal<number>;
8
+ animationIsPlaying: import('canvasengine').WritableSignal<boolean>;
9
+ _param: import('canvasengine').WritableObjectSignal<{}>;
10
+ frames: {
11
+ x: number;
12
+ y: number;
13
+ ts: number;
14
+ }[];
15
+ graphicsSignals: import('canvasengine').WritableArraySignal<any[]>;
16
+ _component: {};
17
+ flashTrigger: import('canvasengine').Trigger<any>;
18
+ constructor();
19
+ get hooks(): Hooks;
20
+ get engine(): RpgClientEngine<unknown>;
21
+ private animationSubscription?;
22
+ /**
23
+ * Trigger a flash animation on this sprite
24
+ *
25
+ * This method triggers a flash effect using CanvasEngine's flash directive.
26
+ * The flash can be configured with various options including type (alpha, tint, or both),
27
+ * duration, cycles, and color.
28
+ *
29
+ * ## Design
30
+ *
31
+ * The flash uses a trigger system that is connected to the flash directive in the
32
+ * character component. This allows for flexible configuration and can be triggered
33
+ * from both server events and client-side code.
34
+ *
35
+ * @param options - Flash configuration options
36
+ * @param options.type - Type of flash effect: 'alpha' (opacity), 'tint' (color), or 'both' (default: 'alpha')
37
+ * @param options.duration - Duration of the flash animation in milliseconds (default: 300)
38
+ * @param options.cycles - Number of flash cycles (flash on/off) (default: 1)
39
+ * @param options.alpha - Alpha value when flashing, from 0 to 1 (default: 0.3)
40
+ * @param options.tint - Tint color when flashing as hex value or color name (default: 0xffffff - white)
41
+ *
42
+ * @example
43
+ * ```ts
44
+ * // Simple flash with default settings (alpha flash)
45
+ * player.flash();
46
+ *
47
+ * // Flash with red tint
48
+ * player.flash({ type: 'tint', tint: 0xff0000 });
49
+ *
50
+ * // Flash with both alpha and tint
51
+ * player.flash({
52
+ * type: 'both',
53
+ * alpha: 0.5,
54
+ * tint: 0xff0000,
55
+ * duration: 200,
56
+ * cycles: 2
57
+ * });
58
+ *
59
+ * // Quick damage flash
60
+ * player.flash({
61
+ * type: 'tint',
62
+ * tint: 0xff0000,
63
+ * duration: 150,
64
+ * cycles: 1
65
+ * });
66
+ * ```
67
+ */
68
+ flash(options?: {
69
+ type?: 'alpha' | 'tint' | 'both';
70
+ duration?: number;
71
+ cycles?: number;
72
+ alpha?: number;
73
+ tint?: number | string;
74
+ }): void;
75
+ /**
76
+ * Reset animation state when animation changes externally
77
+ *
78
+ * This method should be called when the animation changes due to movement
79
+ * or other external factors to ensure the animation system doesn't get stuck
80
+ *
81
+ * @example
82
+ * ```ts
83
+ * // Reset when player starts moving
84
+ * player.resetAnimationState();
85
+ * ```
86
+ */
87
+ resetAnimationState(): void;
88
+ /**
89
+ * Set a custom animation for a specific number of times
90
+ *
91
+ * Plays a custom animation for the specified number of repetitions.
92
+ * The animation system prevents overlapping animations and automatically
93
+ * returns to the previous animation when complete.
94
+ *
95
+ * @param animationName - Name of the animation to play
96
+ * @param nbTimes - Number of times to repeat the animation (default: Infinity for continuous)
97
+ *
98
+ * @example
99
+ * ```ts
100
+ * // Play attack animation 3 times
101
+ * player.setAnimation('attack', 3);
102
+ *
103
+ * // Play continuous spell animation
104
+ * player.setAnimation('spell');
105
+ * ```
106
+ */
107
+ setAnimation(animationName: string, nbTimes?: number): void;
108
+ showComponentAnimation(id: string, params: any): void;
109
+ }
@@ -31,6 +31,10 @@ export declare class RpgClientEngine<T = any> {
31
31
  playerIdSignal: import('canvasengine').WritableSignal<string | null>;
32
32
  spriteComponentsBehind: import('canvasengine').WritableArraySignal<any[]>;
33
33
  spriteComponentsInFront: import('canvasengine').WritableArraySignal<any[]>;
34
+ /** ID of the sprite that the camera should follow. null means follow the current player */
35
+ cameraFollowTargetId: import('canvasengine').WritableSignal<string | null>;
36
+ /** Trigger for map shake animation */
37
+ mapShakeTrigger: import('canvasengine').Trigger<any>;
34
38
  private predictionEnabled;
35
39
  private prediction?;
36
40
  private readonly SERVER_CORRECTION_THRESHOLD;
@@ -291,6 +295,59 @@ export declare class RpgClientEngine<T = any> {
291
295
  * ```
292
296
  */
293
297
  stopSound(soundId: string): void;
298
+ /**
299
+ * Stop all currently playing sounds
300
+ *
301
+ * This method stops all sounds that are currently playing.
302
+ * Useful when changing maps to prevent sound overlap.
303
+ *
304
+ * @example
305
+ * ```ts
306
+ * // Stop all sounds
307
+ * engine.stopAllSounds();
308
+ * ```
309
+ */
310
+ stopAllSounds(): void;
311
+ /**
312
+ * Set the camera to follow a specific sprite
313
+ *
314
+ * This method changes which sprite the camera viewport should follow.
315
+ * The camera will smoothly animate to the target sprite if smoothMove options are provided.
316
+ *
317
+ * ## Design
318
+ *
319
+ * The camera follow target is stored in a signal that is read by sprite components.
320
+ * Each sprite checks if it should be followed by comparing its ID with the target ID.
321
+ * When smoothMove options are provided, the viewport animation is handled by CanvasEngine's
322
+ * viewport system.
323
+ *
324
+ * @param targetId - The ID of the sprite to follow. Set to null to follow the current player
325
+ * @param smoothMove - Animation options. Can be a boolean (default: true) or an object with time and ease
326
+ * @param smoothMove.time - Duration of the animation in milliseconds (optional)
327
+ * @param smoothMove.ease - Easing function name from https://easings.net (optional)
328
+ *
329
+ * @example
330
+ * ```ts
331
+ * // Follow another player with default smooth animation
332
+ * engine.setCameraFollow(otherPlayerId, true);
333
+ *
334
+ * // Follow an event with custom smooth animation
335
+ * engine.setCameraFollow(eventId, {
336
+ * time: 1000,
337
+ * ease: "easeInOutQuad"
338
+ * });
339
+ *
340
+ * // Follow without animation (instant)
341
+ * engine.setCameraFollow(targetId, false);
342
+ *
343
+ * // Return to following current player
344
+ * engine.setCameraFollow(null);
345
+ * ```
346
+ */
347
+ setCameraFollow(targetId: string | null, smoothMove?: boolean | {
348
+ time?: number;
349
+ ease?: string;
350
+ }): void;
294
351
  addParticle(particle: any): any;
295
352
  /**
296
353
  * Add a component to render behind sprites
@@ -399,6 +456,60 @@ export declare class RpgClientEngine<T = any> {
399
456
  * ```
400
457
  */
401
458
  clearClientPredictionStates(): void;
459
+ /**
460
+ * Trigger a flash animation on a sprite
461
+ *
462
+ * This method allows you to trigger a flash effect on any sprite from client-side code.
463
+ * The flash can be configured with various options including type (alpha, tint, or both),
464
+ * duration, cycles, and color.
465
+ *
466
+ * ## Design
467
+ *
468
+ * The flash is applied directly to the sprite object using its flash trigger.
469
+ * This is useful for client-side visual feedback, UI interactions, or local effects
470
+ * that don't need to be synchronized with the server.
471
+ *
472
+ * @param spriteId - The ID of the sprite to flash. If not provided, flashes the current player
473
+ * @param options - Flash configuration options
474
+ * @param options.type - Type of flash effect: 'alpha' (opacity), 'tint' (color), or 'both' (default: 'alpha')
475
+ * @param options.duration - Duration of the flash animation in milliseconds (default: 300)
476
+ * @param options.cycles - Number of flash cycles (flash on/off) (default: 1)
477
+ * @param options.alpha - Alpha value when flashing, from 0 to 1 (default: 0.3)
478
+ * @param options.tint - Tint color when flashing as hex value or color name (default: 0xffffff - white)
479
+ *
480
+ * @example
481
+ * ```ts
482
+ * // Flash the current player with default settings
483
+ * engine.flash();
484
+ *
485
+ * // Flash a specific sprite with red tint
486
+ * engine.flash('sprite-id', { type: 'tint', tint: 0xff0000 });
487
+ *
488
+ * // Flash with both alpha and tint for dramatic effect
489
+ * engine.flash(undefined, {
490
+ * type: 'both',
491
+ * alpha: 0.5,
492
+ * tint: 0xff0000,
493
+ * duration: 200,
494
+ * cycles: 2
495
+ * });
496
+ *
497
+ * // Quick damage flash on current player
498
+ * engine.flash(undefined, {
499
+ * type: 'tint',
500
+ * tint: 'red',
501
+ * duration: 150,
502
+ * cycles: 1
503
+ * });
504
+ * ```
505
+ */
506
+ flash(spriteId?: string, options?: {
507
+ type?: 'alpha' | 'tint' | 'both';
508
+ duration?: number;
509
+ cycles?: number;
510
+ alpha?: number;
511
+ tint?: number | string;
512
+ }): void;
402
513
  private applyServerAck;
403
514
  /**
404
515
  * Replay unacknowledged inputs from a given frame to resimulate client prediction
package/dist/index.d.ts CHANGED
@@ -15,4 +15,5 @@ export * from './components/gui';
15
15
  export * from './Sound';
16
16
  export * from './Resource';
17
17
  export { Context } from '@signe/di';
18
- export * from './services/keyboardControls';
18
+ export { KeyboardControls, Input } from 'canvasengine';
19
+ export { Control } from './services/keyboardControls';
package/dist/index.js CHANGED
@@ -16,5 +16,6 @@ export { default as HpBar } from './index16.js';
16
16
  export { RpgSound, Sound, getSoundMetadata } from './index17.js';
17
17
  export { RpgResource } from './index18.js';
18
18
  export { Context } from './index19.js';
19
- export { KeyboardControls, provideKeyboardControls } from './index20.js';
19
+ export { Input, KeyboardControls } from 'canvasengine';
20
+ export { Control } from './index20.js';
20
21
  //# sourceMappingURL=index.js.map
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sources":[],"sourcesContent":[],"names":[],"mappings":";;;;;;;;;;;;;;;;;;"}
1
+ {"version":3,"file":"index.js","sources":[],"sourcesContent":[],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;"}
package/dist/index10.js CHANGED
@@ -1,5 +1,5 @@
1
1
  import { useProps, useDefineProps, signal, animatedSignal, computed, trigger, mount, effect, h, Container, Rect, cond, Text, Sprite } from 'canvasengine';
2
- import component$1 from './index44.js';
2
+ import component$1 from './index43.js';
3
3
  import { inject } from './index6.js';
4
4
  import { RpgClientEngine } from './index2.js';
5
5
 
package/dist/index15.js CHANGED
@@ -1,4 +1,4 @@
1
- import { useProps, useDefineProps, computed, signal, animatedSignal, mount, tick, h, Container, loop, Sprite, cond } from 'canvasengine';
1
+ import { useProps, useDefineProps, computed, signal, on, animatedSignal, mount, tick, h, Container, loop, Sprite, cond } from 'canvasengine';
2
2
  import { combineLatest, map, startWith, pairwise, filter, lastValueFrom } from 'rxjs';
3
3
  import { Particle } from '@canvasengine/presets';
4
4
  import { Direction, ModulesToken } from '@rpgjs/common';
@@ -65,13 +65,49 @@ var playerId = client.playerId;
65
65
  var componentsBehind = client.spriteComponentsBehind;
66
66
  var componentsInFront = client.spriteComponentsInFront;
67
67
  var isMe = computed(function () { return id() === playerId; });
68
+ var shouldFollowCamera = computed(function () {
69
+ var cameraTargetId = client.cameraFollowTargetId();
70
+ // If a target is explicitly set, only follow if this sprite is the target
71
+ if (cameraTargetId !== null) {
72
+ return id() === cameraTargetId;
73
+ }
74
+ // Otherwise, follow the current player (default behavior)
75
+ return isMe();
76
+ });
68
77
  var attachedGuis = computed(function () {
69
78
  return guiService.getAttachedGuis();
70
79
  });
71
80
  var shouldDisplayAttachedGui = computed(function () {
72
81
  return guiService.shouldDisplayAttachedGui(id());
73
82
  });
74
- var x = object.x, y = object.y, tint = object.tint, direction = object.direction, animationName = object.animationName, animationCurrentIndex = object.animationCurrentIndex, emitParticleTrigger = object.emitParticleTrigger, particleName = object.particleName; object.graphics; var hitbox = object.hitbox, isConnected = object.isConnected, graphicsSignals = object.graphicsSignals;
83
+ var x = object.x, y = object.y, tint = object.tint, direction = object.direction, animationName = object.animationName, animationCurrentIndex = object.animationCurrentIndex, emitParticleTrigger = object.emitParticleTrigger, particleName = object.particleName; object.graphics; var hitbox = object.hitbox, isConnected = object.isConnected, graphicsSignals = object.graphicsSignals, flashTrigger = object.flashTrigger;
84
+ var flashType = signal('alpha');
85
+ var flashDuration = signal(300);
86
+ var flashCycles = signal(1);
87
+ var flashAlpha = signal(0.3);
88
+ var flashTint = signal(0xffffff);
89
+ on(flashTrigger, function (data) {
90
+ if (data && typeof data === 'object') {
91
+ if (data.type !== undefined)
92
+ flashType.set(data.type);
93
+ if (data.duration !== undefined)
94
+ flashDuration.set(data.duration);
95
+ if (data.cycles !== undefined)
96
+ flashCycles.set(data.cycles);
97
+ if (data.alpha !== undefined)
98
+ flashAlpha.set(data.alpha);
99
+ if (data.tint !== undefined)
100
+ flashTint.set(data.tint);
101
+ }
102
+ });
103
+ var flashConfig = computed(function () { return ({
104
+ trigger: flashTrigger,
105
+ type: flashType(),
106
+ duration: flashDuration(),
107
+ cycles: flashCycles(),
108
+ alpha: flashAlpha(),
109
+ tint: flashTint(),
110
+ }); });
75
111
  var particleSettings = client.particleSettings;
76
112
  var canControls = function () { return isMe() && object.canMove(); };
77
113
  var keyboardControls = client.globalConfig.keyboardControls;
@@ -125,6 +161,9 @@ var controls = signal({
125
161
  }
126
162
  },
127
163
  },
164
+ gamepad: {
165
+ enabled: true
166
+ }
128
167
  });
129
168
  var smoothX = animatedSignal(x(), {
130
169
  duration: isMe() ? 0 : 0
@@ -216,7 +255,7 @@ var onAttachedGuiInteraction = function (gui, name, data) {
216
255
  tick(function () {
217
256
  hooks.callHooks("client-sprite-onUpdate").subscribe();
218
257
  });
219
- let $this = h(Container, { x: smoothX, y: smoothY, zIndex: y, viewportFollow: isMe, controls, onBeforeDestroy, visible }, [loop(componentsBehind, component => h(Container, null, h(component, { object }))), h(Particle, { emit: emitParticleTrigger, settings: particleSettings, zIndex: 1000, name: particleName }), h(Container, null, loop(graphicsSignals, graphicObj => h(Sprite, { sheet: sheet(graphicObj), direction, tint, hitbox }))), loop(componentsInFront, component => h(Container, null, h(component, { object }))), loop(attachedGuis, attachedGui => cond(shouldDisplayAttachedGui, () => h(Container, null, h(attachedGui.component, { ...attachedGui.data(), object: object, onFinish: (data) => {
258
+ let $this = h(Container, { x: smoothX, y: smoothY, zIndex: y, viewportFollow: shouldFollowCamera, controls, onBeforeDestroy, visible }, [loop(componentsBehind, component => h(Container, null, h(component, { object }))), h(Particle, { emit: emitParticleTrigger, settings: particleSettings, zIndex: 1000, name: particleName }), h(Container, null, loop(graphicsSignals, graphicObj => h(Sprite, { sheet: sheet(graphicObj), direction, tint, hitbox, flash: flashConfig }))), loop(componentsInFront, component => h(Container, null, h(component, { object }))), loop(attachedGuis, attachedGui => cond(shouldDisplayAttachedGui, () => h(Container, null, h(attachedGui.component, { ...attachedGui.data(), object: object, onFinish: (data) => {
220
259
  onAttachedGuiFinish(attachedGui, data);
221
260
  }, onInteraction: (name, data) => {
222
261
  onAttachedGuiInteraction(attachedGui, name, data);
@@ -1 +1 @@
1
- {"version":3,"file":"index15.js","sources":["../src/components/character.ce"],"sourcesContent":["<Container x={smoothX} y={smoothY} zIndex={y} viewportFollow={isMe} controls onBeforeDestroy visible>\n @for (component of componentsBehind) {\n <Container>\n <component object />\n </Container>\n } \n <Particle emit={@emitParticleTrigger} settings={@particleSettings} zIndex={1000} name={particleName} />\n <Container>\n @for (graphicObj of graphicsSignals) {\n <Sprite sheet={@sheet(@graphicObj)} direction tint hitbox />\n }\n </Container>\n @for (component of componentsInFront) {\n <Container>\n <component object />\n </Container>\n } \n @for (attachedGui of attachedGuis) {\n @if (shouldDisplayAttachedGui) {\n <Container>\n <attachedGui.component ...attachedGui.data() object={object} onFinish={(data) => {\n onAttachedGuiFinish(attachedGui, data)\n }} onInteraction={(name, data) => {\n onAttachedGuiInteraction(attachedGui, name, data)\n }} />\n </Container>\n }\n }\n</Container>\n\n<script>\n import { signal, effect, mount, computed, tick, animatedSignal } from \"canvasengine\";\n import { lastValueFrom, combineLatest, pairwise, filter, map, startWith } from \"rxjs\";\n import { Particle } from \"@canvasengine/presets\";\n import { GameEngineToken, ModulesToken } from \"@rpgjs/common\";\n import { RpgClientEngine } from \"../RpgClientEngine\";\n import { inject } from \"../core/inject\"; \n import { Direction } from \"@rpgjs/common\";\n import Hit from \"./effects/hit.ce\";\n import PlayerComponents from \"./player-components.ce\";\n import { RpgGui } from \"../Gui/Gui\";\n\n const { object, id } = defineProps();\n\n const client = inject(RpgClientEngine);\n const hooks = inject(ModulesToken);\n const guiService = inject(RpgGui);\n\n const spritesheets = client.spritesheets;\n const playerId = client.playerId;\n const componentsBehind = client.spriteComponentsBehind;\n const componentsInFront = client.spriteComponentsInFront;\n const isMe = computed(() => id() === playerId);\n\n /**\n * Get all attached GUI components that should be rendered on sprites\n * These are GUIs with attachToSprite: true\n */\n const attachedGuis = computed(() => {\n return guiService.getAttachedGuis();\n });\n\n /**\n * Check if attached GUIs should be displayed for this sprite\n * This is controlled by showAttachedGui/hideAttachedGui on the server\n */\n const shouldDisplayAttachedGui = computed(() => {\n return guiService.shouldDisplayAttachedGui(id());\n });\n\n const { \n x, \n y, \n tint, \n direction, \n animationName, \n animationCurrentIndex,\n emitParticleTrigger, \n particleName, \n graphics, \n hitbox,\n isConnected,\n graphicsSignals\n } = object;\n\n const particleSettings = client.particleSettings;\n\n const canControls = () => isMe() && object.canMove()\n const keyboardControls = client.globalConfig.keyboardControls;\n\n const visible = computed(() => {\n if (object.type === 'event') {\n return true\n }\n return isConnected()\n });\n\n const controls = signal({\n down: {\n repeat: true,\n bind: keyboardControls.down,\n keyDown() {\n if (canControls()) client.processInput({ input: Direction.Down })\n },\n },\n up: {\n repeat: true,\n bind: keyboardControls.up,\n keyDown() {\n if (canControls()) client.processInput({ input: Direction.Up })\n },\n },\n left: {\n repeat: true,\n bind: keyboardControls.left,\n keyDown() {\n if (canControls()) client.processInput({ input: Direction.Left })\n },\n },\n right: {\n repeat: true,\n bind: keyboardControls.right,\n keyDown() {\n if (canControls()) client.processInput({ input: Direction.Right })\n },\n },\n action: {\n bind: keyboardControls.action,\n keyDown() {\n if (canControls()) {\n client.processAction({ action: 'action' })\n // particleName.set('hit') \n // emitParticleTrigger.start()\n // object.flash('red')\n }\n },\n },\n });\n\n const smoothX = animatedSignal(x(), {\n duration: isMe() ? 0 : 0\n });\n\n const smoothY = animatedSignal(y(), {\n duration: isMe() ? 0 : 0,\n });\n\n const realAnimationName = signal(animationName());\n\n const xSubscription = x.observable.subscribe((value) => {\n smoothX.set(value);\n });\n\n const ySubscription = y.observable.subscribe((value) => {\n smoothY.set(value);\n });\n \n const sheet = (graphicObject) => {\n return {\n definition: graphicObject,\n playing: realAnimationName,\n params: {\n direction\n },\n onFinish() {\n animationCurrentIndex.update(index => index + 1)\n }\n };\n }\n\n // Combine animation change detection with movement state from smoothX/smoothY\n const movementAnimations = ['walk', 'stand'];\n const epsilon = 0; // movement threshold to consider the easing still running\n\n const stateX$ = smoothX.animatedState.observable;\n const stateY$ = smoothY.animatedState.observable;\n const animationName$ = animationName.observable;\n\n const moving$ = combineLatest([stateX$, stateY$]).pipe(\n map(([sx, sy]) => {\n const xFinished = Math.abs(sx.value.current - sx.value.end) <= epsilon;\n const yFinished = Math.abs(sy.value.current - sy.value.end) <= epsilon;\n return !xFinished || !yFinished; // moving if X or Y is not finished\n }),\n startWith(false)\n );\n\n const animationChange$ = animationName$.pipe(\n startWith(animationName()),\n pairwise(),\n filter(([prev, curr]) => prev !== curr)\n );\n\n const animationMovementSubscription = combineLatest([animationChange$, moving$]).subscribe(([[prev, curr], isMoving]) => {\n if (curr == 'stand' && !isMoving) {\n realAnimationName.set(curr);\n }\n else if (curr == 'walk' && isMoving) {\n realAnimationName.set(curr);\n }\n else if (!movementAnimations.includes(curr)) {\n realAnimationName.set(curr);\n }\n if (!isMoving && object.animationIsPlaying && object.animationIsPlaying()) {\n if (movementAnimations.includes(curr)) {\n if (typeof object.resetAnimationState === 'function') {\n object.resetAnimationState();\n }\n }\n }\n });\n\n /**\n * Cleanup subscriptions and call hooks before sprite destruction.\n *\n * # Design\n * - Prevent memory leaks by unsubscribing from all local subscriptions created in this component.\n * - Execute destruction hooks to notify modules and scene map of sprite removal.\n *\n * @example\n * await onBeforeDestroy();\n */\n const onBeforeDestroy = async () => {\n animationMovementSubscription.unsubscribe();\n xSubscription.unsubscribe();\n ySubscription.unsubscribe();\n await lastValueFrom(hooks.callHooks(\"client-sprite-onDestroy\", object)) \n await lastValueFrom(hooks.callHooks(\"client-sceneMap-onRemoveSprite\", client.sceneMap, object))\n }\n\n mount((element) => {\n hooks.callHooks(\"client-sprite-onAdd\", object).subscribe()\n hooks.callHooks(\"client-sceneMap-onAddSprite\", client.sceneMap, object).subscribe()\n client.setKeyboardControls(element.directives.controls)\n })\n\n /**\n * Handle attached GUI finish event\n * \n * @param gui - The GUI instance\n * @param data - Data passed from the GUI component\n */\n const onAttachedGuiFinish = (gui, data) => {\n guiService.guiClose(gui.name, data);\n };\n\n /**\n * Handle attached GUI interaction event\n * \n * @param gui - The GUI instance\n * @param name - Interaction name\n * @param data - Interaction data\n */\n const onAttachedGuiInteraction = (gui, name, data) => {\n guiService.guiInteraction(gui.name, name, data);\n };\n\n tick(() => {\n hooks.callHooks(\"client-sprite-onUpdate\").subscribe()\n })\n</script>"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"index15.js","sources":["../src/components/character.ce"],"sourcesContent":["<Container x={smoothX} y={smoothY} zIndex={y} viewportFollow={shouldFollowCamera} controls onBeforeDestroy visible >\n @for (component of componentsBehind) {\n <Container>\n <component object />\n </Container>\n } \n <Particle emit={@emitParticleTrigger} settings={@particleSettings} zIndex={1000} name={particleName} />\n <Container>\n @for (graphicObj of graphicsSignals) {\n <Sprite sheet={@sheet(@graphicObj)} direction tint hitbox flash={flashConfig} />\n }\n </Container>\n @for (component of componentsInFront) {\n <Container>\n <component object />\n </Container>\n } \n @for (attachedGui of attachedGuis) {\n @if (shouldDisplayAttachedGui) {\n <Container>\n <attachedGui.component ...attachedGui.data() object={object} onFinish={(data) => {\n onAttachedGuiFinish(attachedGui, data)\n }} onInteraction={(name, data) => {\n onAttachedGuiInteraction(attachedGui, name, data)\n }} />\n </Container>\n }\n }\n</Container>\n\n<script>\n import { signal, effect, mount, computed, tick, animatedSignal, on } from \"canvasengine\";\n\n import { lastValueFrom, combineLatest, pairwise, filter, map, startWith } from \"rxjs\";\n import { Particle } from \"@canvasengine/presets\";\n import { GameEngineToken, ModulesToken } from \"@rpgjs/common\";\n import { RpgClientEngine } from \"../RpgClientEngine\";\n import { inject } from \"../core/inject\"; \n import { Direction } from \"@rpgjs/common\";\n import Hit from \"./effects/hit.ce\";\n import PlayerComponents from \"./player-components.ce\";\n import { RpgGui } from \"../Gui/Gui\";\n\n const { object, id } = defineProps();\n\n const client = inject(RpgClientEngine);\n const hooks = inject(ModulesToken);\n const guiService = inject(RpgGui);\n\n const spritesheets = client.spritesheets;\n const playerId = client.playerId;\n const componentsBehind = client.spriteComponentsBehind;\n const componentsInFront = client.spriteComponentsInFront;\n const isMe = computed(() => id() === playerId);\n \n /**\n * Determine if the camera should follow this sprite\n * \n * The camera follows this sprite if:\n * - It's explicitly set as the camera follow target, OR\n * - It's the current player and no explicit target is set (default behavior)\n */\n const shouldFollowCamera = computed(() => {\n const cameraTargetId = client.cameraFollowTargetId();\n // If a target is explicitly set, only follow if this sprite is the target\n if (cameraTargetId !== null) {\n return id() === cameraTargetId;\n }\n // Otherwise, follow the current player (default behavior)\n return isMe();\n });\n\n /**\n * Get all attached GUI components that should be rendered on sprites\n * These are GUIs with attachToSprite: true\n */\n const attachedGuis = computed(() => {\n return guiService.getAttachedGuis();\n });\n\n /**\n * Check if attached GUIs should be displayed for this sprite\n * This is controlled by showAttachedGui/hideAttachedGui on the server\n */\n const shouldDisplayAttachedGui = computed(() => {\n return guiService.shouldDisplayAttachedGui(id());\n });\n\n const { \n x, \n y, \n tint, \n direction, \n animationName, \n animationCurrentIndex,\n emitParticleTrigger, \n particleName, \n graphics, \n hitbox,\n isConnected,\n graphicsSignals,\n flashTrigger\n } = object;\n\n /**\n * Flash configuration signals for dynamic options\n * These signals are updated when the flash trigger is activated with options\n */\n const flashType = signal<'alpha' | 'tint' | 'both'>('alpha');\n const flashDuration = signal(300);\n const flashCycles = signal(1);\n const flashAlpha = signal(0.3);\n const flashTint = signal(0xffffff);\n\n /**\n * Listen to flash trigger to update configuration dynamically\n * When flash is triggered with options, update the signals\n */\n on(flashTrigger, (data) => {\n if (data && typeof data === 'object') {\n if (data.type !== undefined) flashType.set(data.type);\n if (data.duration !== undefined) flashDuration.set(data.duration);\n if (data.cycles !== undefined) flashCycles.set(data.cycles);\n if (data.alpha !== undefined) flashAlpha.set(data.alpha);\n if (data.tint !== undefined) flashTint.set(data.tint);\n }\n });\n\n /**\n * Flash configuration for the sprite\n * \n * This configuration is used by the flash directive to create visual feedback effects.\n * The flash trigger is exposed through the object, allowing both server events and\n * client-side code to trigger flash animations. Options can be passed dynamically\n * through the trigger, which updates the reactive signals.\n */\n const flashConfig = computed(() => ({\n trigger: flashTrigger,\n type: flashType(),\n duration: flashDuration(),\n cycles: flashCycles(),\n alpha: flashAlpha(),\n tint: flashTint(),\n }));\n\n const particleSettings = client.particleSettings;\n\n const canControls = () => isMe() && object.canMove()\n const keyboardControls = client.globalConfig.keyboardControls;\n\n const visible = computed(() => {\n if (object.type === 'event') {\n return true\n }\n return isConnected()\n });\n\n const controls = signal({\n down: {\n repeat: true,\n bind: keyboardControls.down,\n keyDown() {\n if (canControls()) client.processInput({ input: Direction.Down })\n },\n },\n up: {\n repeat: true,\n bind: keyboardControls.up,\n keyDown() {\n if (canControls()) client.processInput({ input: Direction.Up })\n },\n },\n left: {\n repeat: true,\n bind: keyboardControls.left,\n keyDown() {\n if (canControls()) client.processInput({ input: Direction.Left })\n },\n },\n right: {\n repeat: true,\n bind: keyboardControls.right,\n keyDown() {\n if (canControls()) client.processInput({ input: Direction.Right })\n },\n },\n action: {\n bind: keyboardControls.action,\n keyDown() {\n if (canControls()) {\n client.processAction({ action: 'action' })\n // particleName.set('hit') \n // emitParticleTrigger.start()\n // object.flash('red')\n }\n },\n },\n gamepad: {\n enabled: true\n }\n });\n\n const smoothX = animatedSignal(x(), {\n duration: isMe() ? 0 : 0\n });\n\n const smoothY = animatedSignal(y(), {\n duration: isMe() ? 0 : 0,\n });\n\n const realAnimationName = signal(animationName());\n\n const xSubscription = x.observable.subscribe((value) => {\n smoothX.set(value);\n });\n\n const ySubscription = y.observable.subscribe((value) => {\n smoothY.set(value);\n });\n \n const sheet = (graphicObject) => {\n return {\n definition: graphicObject,\n playing: realAnimationName,\n params: {\n direction\n },\n onFinish() {\n animationCurrentIndex.update(index => index + 1)\n }\n };\n }\n\n // Combine animation change detection with movement state from smoothX/smoothY\n const movementAnimations = ['walk', 'stand'];\n const epsilon = 0; // movement threshold to consider the easing still running\n\n const stateX$ = smoothX.animatedState.observable;\n const stateY$ = smoothY.animatedState.observable;\n const animationName$ = animationName.observable;\n\n const moving$ = combineLatest([stateX$, stateY$]).pipe(\n map(([sx, sy]) => {\n const xFinished = Math.abs(sx.value.current - sx.value.end) <= epsilon;\n const yFinished = Math.abs(sy.value.current - sy.value.end) <= epsilon;\n return !xFinished || !yFinished; // moving if X or Y is not finished\n }),\n startWith(false)\n );\n\n const animationChange$ = animationName$.pipe(\n startWith(animationName()),\n pairwise(),\n filter(([prev, curr]) => prev !== curr)\n );\n\n const animationMovementSubscription = combineLatest([animationChange$, moving$]).subscribe(([[prev, curr], isMoving]) => {\n if (curr == 'stand' && !isMoving) {\n realAnimationName.set(curr);\n }\n else if (curr == 'walk' && isMoving) {\n realAnimationName.set(curr);\n }\n else if (!movementAnimations.includes(curr)) {\n realAnimationName.set(curr);\n }\n if (!isMoving && object.animationIsPlaying && object.animationIsPlaying()) {\n if (movementAnimations.includes(curr)) {\n if (typeof object.resetAnimationState === 'function') {\n object.resetAnimationState();\n }\n }\n }\n });\n\n /**\n * Cleanup subscriptions and call hooks before sprite destruction.\n *\n * # Design\n * - Prevent memory leaks by unsubscribing from all local subscriptions created in this component.\n * - Execute destruction hooks to notify modules and scene map of sprite removal.\n *\n * @example\n * await onBeforeDestroy();\n */\n const onBeforeDestroy = async () => {\n animationMovementSubscription.unsubscribe();\n xSubscription.unsubscribe();\n ySubscription.unsubscribe();\n await lastValueFrom(hooks.callHooks(\"client-sprite-onDestroy\", object)) \n await lastValueFrom(hooks.callHooks(\"client-sceneMap-onRemoveSprite\", client.sceneMap, object))\n }\n\n mount((element) => {\n hooks.callHooks(\"client-sprite-onAdd\", object).subscribe()\n hooks.callHooks(\"client-sceneMap-onAddSprite\", client.sceneMap, object).subscribe()\n client.setKeyboardControls(element.directives.controls)\n })\n\n /**\n * Handle attached GUI finish event\n * \n * @param gui - The GUI instance\n * @param data - Data passed from the GUI component\n */\n const onAttachedGuiFinish = (gui, data) => {\n guiService.guiClose(gui.name, data);\n };\n\n /**\n * Handle attached GUI interaction event\n * \n * @param gui - The GUI instance\n * @param name - Interaction name\n * @param data - Interaction data\n */\n const onAttachedGuiInteraction = (gui, name, data) => {\n guiService.guiInteraction(gui.name, name, data);\n };\n\n tick(() => {\n hooks.callHooks(\"client-sprite-onUpdate\").subscribe()\n })\n</script>"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"index19.js","sources":["../../../node_modules/.pnpm/@signe+di@2.5.1/node_modules/@signe/di/dist/index.js"],"sourcesContent":["var __defProp = Object.defineProperty;\nvar __name = (target, value) => __defProp(target, \"name\", { value, configurable: true });\n\n// src/inject.ts\nvar DEFAULT_INSTANCE_KEY = \"__default__\";\nfunction toTokenName(token) {\n return typeof token === \"function\" ? token.name : token;\n}\n__name(toTokenName, \"toTokenName\");\nfunction toInstanceKey(name) {\n return name ?? DEFAULT_INSTANCE_KEY;\n}\n__name(toInstanceKey, \"toInstanceKey\");\nfunction getRecord(context, token) {\n return context.get(\"inject:\" + toTokenName(token));\n}\n__name(getRecord, \"getRecord\");\nfunction ensureRecord(context, token) {\n const key = \"inject:\" + toTokenName(token);\n let record = context.get(key);\n if (!record) {\n record = {\n multi: false,\n values: /* @__PURE__ */ new Map(),\n injected: /* @__PURE__ */ new Set()\n };\n }\n context.set(key, record);\n return record;\n}\n__name(ensureRecord, \"ensureRecord\");\nfunction provide(context, token, value, options = {}) {\n const record = ensureRecord(context, token);\n const instanceKey = toInstanceKey(options.name);\n if (options.multi) {\n record.multi = true;\n }\n if (!record.multi && instanceKey !== DEFAULT_INSTANCE_KEY) {\n record.multi = true;\n }\n record.values.set(instanceKey, value);\n return value;\n}\n__name(provide, \"provide\");\nfunction isInjected(context, token, options = {}) {\n const record = getRecord(context, token);\n if (!record) {\n return false;\n }\n if (options.name) {\n return record.injected.has(toInstanceKey(options.name));\n }\n if (record.multi) {\n return record.injected.size > 0;\n }\n return record.injected.has(DEFAULT_INSTANCE_KEY);\n}\n__name(isInjected, \"isInjected\");\nfunction isProvided(context, token, options = {}) {\n const record = getRecord(context, token);\n if (!record) {\n return false;\n }\n if (options.name) {\n return record.values.has(toInstanceKey(options.name));\n }\n if (record.multi) {\n return record.values.size > 0;\n }\n return record.values.has(DEFAULT_INSTANCE_KEY);\n}\n__name(isProvided, \"isProvided\");\nfunction hasInstance(context, token, options = {}) {\n return isProvided(context, token, options);\n}\n__name(hasInstance, \"hasInstance\");\nfunction handleMissingInjection(token, options) {\n const name = toTokenName(token);\n if (options.name) {\n throw new Error(`Injection provider ${name} with name ${options.name} not found`);\n }\n throw new Error(`Injection provider ${name} not found`);\n}\n__name(handleMissingInjection, \"handleMissingInjection\");\nfunction markInjected(record, key) {\n record.injected.add(key);\n}\n__name(markInjected, \"markInjected\");\nfunction markAllInjected(record) {\n for (const key of record.values.keys()) {\n record.injected.add(key);\n }\n}\n__name(markAllInjected, \"markAllInjected\");\nfunction inject(context, token, options = {}) {\n const record = getRecord(context, token);\n if (!record) {\n if (options.optional) {\n return options.multi ? [] : void 0;\n }\n return handleMissingInjection(token, options);\n }\n if (options.name) {\n const instanceKey = toInstanceKey(options.name);\n if (!record.values.has(instanceKey)) {\n if (options.optional) {\n return void 0;\n }\n return handleMissingInjection(token, options);\n }\n const value2 = record.values.get(instanceKey);\n markInjected(record, instanceKey);\n return value2;\n }\n if (options.multi || record.multi) {\n if (record.values.size === 0) {\n if (options.optional) {\n return [];\n }\n return handleMissingInjection(token, options);\n }\n markAllInjected(record);\n return Array.from(record.values.values());\n }\n const value = record.values.get(DEFAULT_INSTANCE_KEY);\n if (value === void 0) {\n if (options.optional) {\n return void 0;\n }\n return handleMissingInjection(token, options);\n }\n markInjected(record, DEFAULT_INSTANCE_KEY);\n return value;\n}\n__name(inject, \"inject\");\nfunction override(providers, newProvider, options) {\n let { upsert = false, key } = options ?? {};\n if (!key) {\n key = typeof newProvider === \"function\" ? newProvider.name : newProvider.provide;\n }\n const flatProviders = providers.flat();\n const exists = flatProviders.some((provider) => {\n if (typeof provider === \"function\") {\n return provider.name === key;\n } else if (typeof provider === \"object\") {\n return provider.provide === key;\n }\n return false;\n });\n const mappedProviders = flatProviders.map((provider) => {\n if (typeof provider === \"function\" && provider.name === key) {\n return newProvider;\n } else if (typeof provider === \"object\" && provider.provide === key) {\n return newProvider;\n }\n return provider;\n });\n if (upsert && !exists) {\n mappedProviders.push(newProvider);\n }\n return mappedProviders;\n}\n__name(override, \"override\");\nfunction findProviders(providers, name) {\n const results = [];\n for (const provider of providers) {\n if (Array.isArray(provider)) {\n results.push(...findProviders(provider, name));\n } else if (findProvider(provider, name)) {\n results.push(provider);\n }\n }\n return results;\n}\n__name(findProviders, \"findProviders\");\nfunction findProvider(providers, name) {\n if (!Array.isArray(providers)) {\n if (typeof providers === \"object\" && \"provide\" in providers) {\n const provider = providers;\n const providerName = typeof provider.provide === \"function\" ? provider.provide.name : provider.provide;\n if (name instanceof RegExp) {\n if (name.test(providerName)) return providers;\n } else {\n if (providerName === name) return providers;\n }\n }\n return null;\n }\n for (const provider of providers) {\n if (Array.isArray(provider)) {\n const found = findProvider(provider, name);\n if (found) return found;\n continue;\n }\n if (typeof provider === \"object\" && \"provide\" in provider) {\n const providerName = typeof provider.provide === \"function\" ? provider.provide.name : provider.provide;\n if (name instanceof RegExp) {\n if (name.test(providerName)) return provider;\n } else {\n if (providerName === name) return provider;\n }\n }\n }\n return null;\n}\n__name(findProvider, \"findProvider\");\n\n// src/merge-config.ts\nfunction processProvider(mergedConfig, baseConfig, provider) {\n if (Array.isArray(provider)) {\n for (const nestedProvider of provider) {\n processProvider(mergedConfig, baseConfig, nestedProvider);\n }\n return;\n }\n const existingProvider = findProvider(baseConfig.providers, provider.provide);\n if (existingProvider) {\n mergedConfig.providers = override(mergedConfig.providers, provider);\n } else {\n mergedConfig.providers.push(provider);\n }\n}\n__name(processProvider, \"processProvider\");\nfunction mergeConfig(baseConfig, config) {\n const mergedConfig = {\n ...baseConfig,\n ...config,\n providers: [\n ...baseConfig.providers\n ]\n // Start with a copy of base providers\n };\n for (const provider of config.providers) {\n processProvider(mergedConfig, baseConfig, provider);\n }\n return mergedConfig;\n}\n__name(mergeConfig, \"mergeConfig\");\n\n// src/provider.ts\nfunction extractProvideOptions(source) {\n if (!source) {\n return void 0;\n }\n const { multi, name } = source;\n if (multi === void 0 && name === void 0) {\n return void 0;\n }\n return {\n multi,\n name\n };\n}\n__name(extractProvideOptions, \"extractProvideOptions\");\nfunction getDeps(provider) {\n if (typeof provider === \"function\") {\n return provider.deps ?? [];\n }\n return provider.deps ?? [];\n}\n__name(getDeps, \"getDeps\");\nfunction sortProviders(providers) {\n const tokenName = /* @__PURE__ */ __name((t) => typeof t === \"function\" ? t.name : t, \"tokenName\");\n const map = /* @__PURE__ */ new Map();\n for (const p of providers) {\n const token = tokenName(typeof p === \"function\" ? p : p.provide);\n const list = map.get(token);\n if (list) {\n list.push(p);\n } else {\n map.set(token, [\n p\n ]);\n }\n }\n const result = [];\n const visited = /* @__PURE__ */ new Set();\n const stack = /* @__PURE__ */ new Set();\n const visit = /* @__PURE__ */ __name((token) => {\n const name = tokenName(token);\n if (visited.has(name)) return;\n if (stack.has(name)) {\n throw new Error(`Circular dependency detected for provider ${name}`);\n }\n stack.add(name);\n const providersForToken = map.get(name);\n if (providersForToken) {\n for (const provider of providersForToken) {\n for (const dep of getDeps(provider)) {\n visit(dep);\n }\n result.push(provider);\n }\n visited.add(name);\n }\n stack.delete(name);\n }, \"visit\");\n for (const p of providers) {\n const token = typeof p === \"function\" ? p : p.provide;\n visit(token);\n }\n return result;\n}\n__name(sortProviders, \"sortProviders\");\nasync function injector(context, providers) {\n providers = providers.flat();\n providers = sortProviders(providers);\n for (const provider of providers) {\n let token;\n let instance;\n let options;\n if (typeof provider === \"function\") {\n token = provider;\n instance = new provider(context);\n const diOptions = extractProvideOptions(provider.diOptions ?? provider.di);\n options = diOptions;\n } else {\n token = provider.provide;\n options = extractProvideOptions(provider);\n const provideUserClass = provider.useClass;\n const isClass = typeof provideUserClass === \"function\";\n if (isClass) {\n instance = new provideUserClass(context);\n } else if (\"useValue\" in provider) {\n instance = provider.useValue;\n } else if (\"useFactory\" in provider) {\n instance = provider.useFactory?.(context);\n if (instance instanceof Promise) {\n instance = await instance;\n }\n } else if (\"useExisting\" in provider) {\n instance = inject(context, provider.useExisting);\n }\n }\n provide(context, token, instance, options);\n }\n}\n__name(injector, \"injector\");\n\n// src/context.ts\nvar Context = class {\n static {\n __name(this, \"Context\");\n }\n /** Internal storage for injected values */\n values = {};\n /**\n * Sets a value in the context\n * @param key - Unique identifier for the value\n * @param value - Value to store\n */\n set(key, value) {\n this.values[key] = value;\n }\n /**\n * Retrieves a value from the context\n * @param key - Unique identifier for the value\n * @returns The stored value or undefined if not found\n */\n get(key) {\n return this.values[key];\n }\n};\nexport {\n Context,\n findProvider,\n findProviders,\n hasInstance,\n inject,\n injector,\n isInjected,\n isProvided,\n mergeConfig,\n override,\n provide\n};\n//# sourceMappingURL=index.js.map"],"names":[],"mappings":"AAAA,IAAI,SAAS,GAAG,MAAM,CAAC,cAAc;AACrC,IAAI,MAAM,GAAG,CAAC,MAAM,EAAE,KAAK,KAAK,SAAS,CAAC,MAAM,EAAE,MAAM,EAAE,EAAE,KAAK,EAAE,YAAY,EAAE,IAAI,EAAE,CAAC;;AAExF;AACA,IAAI,oBAAoB,GAAG,aAAa;AACxC,SAAS,WAAW,CAAC,KAAK,EAAE;AAC5B,EAAE,OAAO,OAAO,KAAK,KAAK,UAAU,GAAG,KAAK,CAAC,IAAI,GAAG,KAAK;AACzD;AACA,MAAM,CAAC,WAAW,EAAE,aAAa,CAAC;AAClC,SAAS,aAAa,CAAC,IAAI,EAAE;AAC7B,EAAE,OAAO,IAAI,IAAI,oBAAoB;AACrC;AACA,MAAM,CAAC,aAAa,EAAE,eAAe,CAAC;AACtC,SAAS,SAAS,CAAC,OAAO,EAAE,KAAK,EAAE;AACnC,EAAE,OAAO,OAAO,CAAC,GAAG,CAAC,SAAS,GAAG,WAAW,CAAC,KAAK,CAAC,CAAC;AACpD;AACA,MAAM,CAAC,SAAS,EAAE,WAAW,CAAC;AAC9B,SAAS,YAAY,CAAC,OAAO,EAAE,KAAK,EAAE;AACtC,EAAE,MAAM,GAAG,GAAG,SAAS,GAAG,WAAW,CAAC,KAAK,CAAC;AAC5C,EAAE,IAAI,MAAM,GAAG,OAAO,CAAC,GAAG,CAAC,GAAG,CAAC;AAC/B,EAAE,IAAI,CAAC,MAAM,EAAE;AACf,IAAI,MAAM,GAAG;AACb,MAAM,KAAK,EAAE,KAAK;AAClB,MAAM,MAAM,kBAAkB,IAAI,GAAG,EAAE;AACvC,MAAM,QAAQ,kBAAkB,IAAI,GAAG;AACvC,KAAK;AACL,EAAE;AACF,EAAE,OAAO,CAAC,GAAG,CAAC,GAAG,EAAE,MAAM,CAAC;AAC1B,EAAE,OAAO,MAAM;AACf;AACA,MAAM,CAAC,YAAY,EAAE,cAAc,CAAC;AACpC,SAAS,OAAO,CAAC,OAAO,EAAE,KAAK,EAAE,KAAK,EAAE,OAAO,GAAG,EAAE,EAAE;AACtD,EAAE,MAAM,MAAM,GAAG,YAAY,CAAC,OAAO,EAAE,KAAK,CAAC;AAC7C,EAAE,MAAM,WAAW,GAAG,aAAa,CAAC,OAAO,CAAC,IAAI,CAAC;AACjD,EAAE,IAAI,OAAO,CAAC,KAAK,EAAE;AACrB,IAAI,MAAM,CAAC,KAAK,GAAG,IAAI;AACvB,EAAE;AACF,EAAE,IAAI,CAAC,MAAM,CAAC,KAAK,IAAI,WAAW,KAAK,oBAAoB,EAAE;AAC7D,IAAI,MAAM,CAAC,KAAK,GAAG,IAAI;AACvB,EAAE;AACF,EAAE,MAAM,CAAC,MAAM,CAAC,GAAG,CAAC,WAAW,EAAE,KAAK,CAAC;AACvC,EAAE,OAAO,KAAK;AACd;AACA,MAAM,CAAC,OAAO,EAAE,SAAS,CAAC;AAC1B,SAAS,UAAU,CAAC,OAAO,EAAE,KAAK,EAAE,OAAO,GAAG,EAAE,EAAE;AAClD,EAAE,MAAM,MAAM,GAAG,SAAS,CAAC,OAAO,EAAE,KAAK,CAAC;AAC1C,EAAE,IAAI,CAAC,MAAM,EAAE;AACf,IAAI,OAAO,KAAK;AAChB,EAAE;AACF,EAAE,IAAI,OAAO,CAAC,IAAI,EAAE;AACpB,IAAI,OAAO,MAAM,CAAC,QAAQ,CAAC,GAAG,CAAC,aAAa,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;AAC3D,EAAE;AACF,EAAE,IAAI,MAAM,CAAC,KAAK,EAAE;AACpB,IAAI,OAAO,MAAM,CAAC,QAAQ,CAAC,IAAI,GAAG,CAAC;AACnC,EAAE;AACF,EAAE,OAAO,MAAM,CAAC,QAAQ,CAAC,GAAG,CAAC,oBAAoB,CAAC;AAClD;AACA,MAAM,CAAC,UAAU,EAAE,YAAY,CAAC;AAChC,SAAS,UAAU,CAAC,OAAO,EAAE,KAAK,EAAE,OAAO,GAAG,EAAE,EAAE;AAClD,EAAE,MAAM,MAAM,GAAG,SAAS,CAAC,OAAO,EAAE,KAAK,CAAC;AAC1C,EAAE,IAAI,CAAC,MAAM,EAAE;AACf,IAAI,OAAO,KAAK;AAChB,EAAE;AACF,EAAE,IAAI,OAAO,CAAC,IAAI,EAAE;AACpB,IAAI,OAAO,MAAM,CAAC,MAAM,CAAC,GAAG,CAAC,aAAa,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;AACzD,EAAE;AACF,EAAE,IAAI,MAAM,CAAC,KAAK,EAAE;AACpB,IAAI,OAAO,MAAM,CAAC,MAAM,CAAC,IAAI,GAAG,CAAC;AACjC,EAAE;AACF,EAAE,OAAO,MAAM,CAAC,MAAM,CAAC,GAAG,CAAC,oBAAoB,CAAC;AAChD;AACA,MAAM,CAAC,UAAU,EAAE,YAAY,CAAC;AAChC,SAAS,WAAW,CAAC,OAAO,EAAE,KAAK,EAAE,OAAO,GAAG,EAAE,EAAE;AACnD,EAAE,OAAO,UAAU,CAAC,OAAO,EAAE,KAAK,EAAE,OAAO,CAAC;AAC5C;AACA,MAAM,CAAC,WAAW,EAAE,aAAa,CAAC;AAClC,SAAS,sBAAsB,CAAC,KAAK,EAAE,OAAO,EAAE;AAChD,EAAE,MAAM,IAAI,GAAG,WAAW,CAAC,KAAK,CAAC;AACjC,EAAE,IAAI,OAAO,CAAC,IAAI,EAAE;AACpB,IAAI,MAAM,IAAI,KAAK,CAAC,CAAC,mBAAmB,EAAE,IAAI,CAAC,WAAW,EAAE,OAAO,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;AACrF,EAAE;AACF,EAAE,MAAM,IAAI,KAAK,CAAC,CAAC,mBAAmB,EAAE,IAAI,CAAC,UAAU,CAAC,CAAC;AACzD;AACA,MAAM,CAAC,sBAAsB,EAAE,wBAAwB,CAAC;AACxD,SAAS,YAAY,CAAC,MAAM,EAAE,GAAG,EAAE;AACnC,EAAE,MAAM,CAAC,QAAQ,CAAC,GAAG,CAAC,GAAG,CAAC;AAC1B;AACA,MAAM,CAAC,YAAY,EAAE,cAAc,CAAC;AACpC,SAAS,eAAe,CAAC,MAAM,EAAE;AACjC,EAAE,KAAK,MAAM,GAAG,IAAI,MAAM,CAAC,MAAM,CAAC,IAAI,EAAE,EAAE;AAC1C,IAAI,MAAM,CAAC,QAAQ,CAAC,GAAG,CAAC,GAAG,CAAC;AAC5B,EAAE;AACF;AACA,MAAM,CAAC,eAAe,EAAE,iBAAiB,CAAC;AAC1C,SAAS,MAAM,CAAC,OAAO,EAAE,KAAK,EAAE,OAAO,GAAG,EAAE,EAAE;AAC9C,EAAE,MAAM,MAAM,GAAG,SAAS,CAAC,OAAO,EAAE,KAAK,CAAC;AAC1C,EAAE,IAAI,CAAC,MAAM,EAAE;AACf,IAAI,IAAI,OAAO,CAAC,QAAQ,EAAE;AAC1B,MAAM,OAAO,OAAO,CAAC,KAAK,GAAG,EAAE,GAAG,MAAM;AACxC,IAAI;AACJ,IAAI,OAAO,sBAAsB,CAAC,KAAK,EAAE,OAAO,CAAC;AACjD,EAAE;AACF,EAAE,IAAI,OAAO,CAAC,IAAI,EAAE;AACpB,IAAI,MAAM,WAAW,GAAG,aAAa,CAAC,OAAO,CAAC,IAAI,CAAC;AACnD,IAAI,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,GAAG,CAAC,WAAW,CAAC,EAAE;AACzC,MAAM,IAAI,OAAO,CAAC,QAAQ,EAAE;AAC5B,QAAQ,OAAO,MAAM;AACrB,MAAM;AACN,MAAM,OAAO,sBAAsB,CAAC,KAAK,EAAE,OAAO,CAAC;AACnD,IAAI;AACJ,IAAI,MAAM,MAAM,GAAG,MAAM,CAAC,MAAM,CAAC,GAAG,CAAC,WAAW,CAAC;AACjD,IAAI,YAAY,CAAC,MAAM,EAAE,WAAW,CAAC;AACrC,IAAI,OAAO,MAAM;AACjB,EAAE;AACF,EAAE,IAAI,OAAO,CAAC,KAAK,IAAI,MAAM,CAAC,KAAK,EAAE;AACrC,IAAI,IAAI,MAAM,CAAC,MAAM,CAAC,IAAI,KAAK,CAAC,EAAE;AAClC,MAAM,IAAI,OAAO,CAAC,QAAQ,EAAE;AAC5B,QAAQ,OAAO,EAAE;AACjB,MAAM;AACN,MAAM,OAAO,sBAAsB,CAAC,KAAK,EAAE,OAAO,CAAC;AACnD,IAAI;AACJ,IAAI,eAAe,CAAC,MAAM,CAAC;AAC3B,IAAI,OAAO,KAAK,CAAC,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,MAAM,EAAE,CAAC;AAC7C,EAAE;AACF,EAAE,MAAM,KAAK,GAAG,MAAM,CAAC,MAAM,CAAC,GAAG,CAAC,oBAAoB,CAAC;AACvD,EAAE,IAAI,KAAK,KAAK,MAAM,EAAE;AACxB,IAAI,IAAI,OAAO,CAAC,QAAQ,EAAE;AAC1B,MAAM,OAAO,MAAM;AACnB,IAAI;AACJ,IAAI,OAAO,sBAAsB,CAAC,KAAK,EAAE,OAAO,CAAC;AACjD,EAAE;AACF,EAAE,YAAY,CAAC,MAAM,EAAE,oBAAoB,CAAC;AAC5C,EAAE,OAAO,KAAK;AACd;AACA,MAAM,CAAC,MAAM,EAAE,QAAQ,CAAC;AACxB,SAAS,QAAQ,CAAC,SAAS,EAAE,WAAW,EAAE,OAAO,EAAE;AACnD,EAAE,IAAI,EAAE,MAAM,GAAG,KAAK,EAAE,GAAG,EAAE,GAAG,OAAO,IAAI,EAAE;AAC7C,EAAE,IAAI,CAAC,GAAG,EAAE;AACZ,IAAI,GAAG,GAAG,OAAO,WAAW,KAAK,UAAU,GAAG,WAAW,CAAC,IAAI,GAAG,WAAW,CAAC,OAAO;AACpF,EAAE;AACF,EAAE,MAAM,aAAa,GAAG,SAAS,CAAC,IAAI,EAAE;AACxC,EAAE,MAAM,MAAM,GAAG,aAAa,CAAC,IAAI,CAAC,CAAC,QAAQ,KAAK;AAClD,IAAI,IAAI,OAAO,QAAQ,KAAK,UAAU,EAAE;AACxC,MAAM,OAAO,QAAQ,CAAC,IAAI,KAAK,GAAG;AAClC,IAAI,CAAC,MAAM,IAAI,OAAO,QAAQ,KAAK,QAAQ,EAAE;AAC7C,MAAM,OAAO,QAAQ,CAAC,OAAO,KAAK,GAAG;AACrC,IAAI;AACJ,IAAI,OAAO,KAAK;AAChB,EAAE,CAAC,CAAC;AACJ,EAAE,MAAM,eAAe,GAAG,aAAa,CAAC,GAAG,CAAC,CAAC,QAAQ,KAAK;AAC1D,IAAI,IAAI,OAAO,QAAQ,KAAK,UAAU,IAAI,QAAQ,CAAC,IAAI,KAAK,GAAG,EAAE;AACjE,MAAM,OAAO,WAAW;AACxB,IAAI,CAAC,MAAM,IAAI,OAAO,QAAQ,KAAK,QAAQ,IAAI,QAAQ,CAAC,OAAO,KAAK,GAAG,EAAE;AACzE,MAAM,OAAO,WAAW;AACxB,IAAI;AACJ,IAAI,OAAO,QAAQ;AACnB,EAAE,CAAC,CAAC;AACJ,EAAE,IAAI,MAAM,IAAI,CAAC,MAAM,EAAE;AACzB,IAAI,eAAe,CAAC,IAAI,CAAC,WAAW,CAAC;AACrC,EAAE;AACF,EAAE,OAAO,eAAe;AACxB;AACA,MAAM,CAAC,QAAQ,EAAE,UAAU,CAAC;AAC5B,SAAS,aAAa,CAAC,SAAS,EAAE,IAAI,EAAE;AACxC,EAAE,MAAM,OAAO,GAAG,EAAE;AACpB,EAAE,KAAK,MAAM,QAAQ,IAAI,SAAS,EAAE;AACpC,IAAI,IAAI,KAAK,CAAC,OAAO,CAAC,QAAQ,CAAC,EAAE;AACjC,MAAM,OAAO,CAAC,IAAI,CAAC,GAAG,aAAa,CAAC,QAAQ,EAAE,IAAI,CAAC,CAAC;AACpD,IAAI,CAAC,MAAM,IAAI,YAAY,CAAC,QAAQ,EAAE,IAAI,CAAC,EAAE;AAC7C,MAAM,OAAO,CAAC,IAAI,CAAC,QAAQ,CAAC;AAC5B,IAAI;AACJ,EAAE;AACF,EAAE,OAAO,OAAO;AAChB;AACA,MAAM,CAAC,aAAa,EAAE,eAAe,CAAC;AACtC,SAAS,YAAY,CAAC,SAAS,EAAE,IAAI,EAAE;AACvC,EAAE,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,SAAS,CAAC,EAAE;AACjC,IAAI,IAAI,OAAO,SAAS,KAAK,QAAQ,IAAI,SAAS,IAAI,SAAS,EAAE;AACjE,MAAM,MAAM,QAAQ,GAAG,SAAS;AAChC,MAAM,MAAM,YAAY,GAAG,OAAO,QAAQ,CAAC,OAAO,KAAK,UAAU,GAAG,QAAQ,CAAC,OAAO,CAAC,IAAI,GAAG,QAAQ,CAAC,OAAO;AAC5G,MAAM,IAAI,IAAI,YAAY,MAAM,EAAE;AAClC,QAAQ,IAAI,IAAI,CAAC,IAAI,CAAC,YAAY,CAAC,EAAE,OAAO,SAAS;AACrD,MAAM,CAAC,MAAM;AACb,QAAQ,IAAI,YAAY,KAAK,IAAI,EAAE,OAAO,SAAS;AACnD,MAAM;AACN,IAAI;AACJ,IAAI,OAAO,IAAI;AACf,EAAE;AACF,EAAE,KAAK,MAAM,QAAQ,IAAI,SAAS,EAAE;AACpC,IAAI,IAAI,KAAK,CAAC,OAAO,CAAC,QAAQ,CAAC,EAAE;AACjC,MAAM,MAAM,KAAK,GAAG,YAAY,CAAC,QAAQ,EAAE,IAAI,CAAC;AAChD,MAAM,IAAI,KAAK,EAAE,OAAO,KAAK;AAC7B,MAAM;AACN,IAAI;AACJ,IAAI,IAAI,OAAO,QAAQ,KAAK,QAAQ,IAAI,SAAS,IAAI,QAAQ,EAAE;AAC/D,MAAM,MAAM,YAAY,GAAG,OAAO,QAAQ,CAAC,OAAO,KAAK,UAAU,GAAG,QAAQ,CAAC,OAAO,CAAC,IAAI,GAAG,QAAQ,CAAC,OAAO;AAC5G,MAAM,IAAI,IAAI,YAAY,MAAM,EAAE;AAClC,QAAQ,IAAI,IAAI,CAAC,IAAI,CAAC,YAAY,CAAC,EAAE,OAAO,QAAQ;AACpD,MAAM,CAAC,MAAM;AACb,QAAQ,IAAI,YAAY,KAAK,IAAI,EAAE,OAAO,QAAQ;AAClD,MAAM;AACN,IAAI;AACJ,EAAE;AACF,EAAE,OAAO,IAAI;AACb;AACA,MAAM,CAAC,YAAY,EAAE,cAAc,CAAC;;AAEpC;AACA,SAAS,eAAe,CAAC,YAAY,EAAE,UAAU,EAAE,QAAQ,EAAE;AAC7D,EAAE,IAAI,KAAK,CAAC,OAAO,CAAC,QAAQ,CAAC,EAAE;AAC/B,IAAI,KAAK,MAAM,cAAc,IAAI,QAAQ,EAAE;AAC3C,MAAM,eAAe,CAAC,YAAY,EAAE,UAAU,EAAE,cAAc,CAAC;AAC/D,IAAI;AACJ,IAAI;AACJ,EAAE;AACF,EAAE,MAAM,gBAAgB,GAAG,YAAY,CAAC,UAAU,CAAC,SAAS,EAAE,QAAQ,CAAC,OAAO,CAAC;AAC/E,EAAE,IAAI,gBAAgB,EAAE;AACxB,IAAI,YAAY,CAAC,SAAS,GAAG,QAAQ,CAAC,YAAY,CAAC,SAAS,EAAE,QAAQ,CAAC;AACvE,EAAE,CAAC,MAAM;AACT,IAAI,YAAY,CAAC,SAAS,CAAC,IAAI,CAAC,QAAQ,CAAC;AACzC,EAAE;AACF;AACA,MAAM,CAAC,eAAe,EAAE,iBAAiB,CAAC;AAC1C,SAAS,WAAW,CAAC,UAAU,EAAE,MAAM,EAAE;AACzC,EAAE,MAAM,YAAY,GAAG;AACvB,IAAI,GAAG,UAAU;AACjB,IAAI,GAAG,MAAM;AACb,IAAI,SAAS,EAAE;AACf,MAAM,GAAG,UAAU,CAAC;AACpB;AACA;AACA,GAAG;AACH,EAAE,KAAK,MAAM,QAAQ,IAAI,MAAM,CAAC,SAAS,EAAE;AAC3C,IAAI,eAAe,CAAC,YAAY,EAAE,UAAU,EAAE,QAAQ,CAAC;AACvD,EAAE;AACF,EAAE,OAAO,YAAY;AACrB;AACA,MAAM,CAAC,WAAW,EAAE,aAAa,CAAC;;AAElC;AACA,SAAS,qBAAqB,CAAC,MAAM,EAAE;AACvC,EAAE,IAAI,CAAC,MAAM,EAAE;AACf,IAAI,OAAO,MAAM;AACjB,EAAE;AACF,EAAE,MAAM,EAAE,KAAK,EAAE,IAAI,EAAE,GAAG,MAAM;AAChC,EAAE,IAAI,KAAK,KAAK,MAAM,IAAI,IAAI,KAAK,MAAM,EAAE;AAC3C,IAAI,OAAO,MAAM;AACjB,EAAE;AACF,EAAE,OAAO;AACT,IAAI,KAAK;AACT,IAAI;AACJ,GAAG;AACH;AACA,MAAM,CAAC,qBAAqB,EAAE,uBAAuB,CAAC;AACtD,SAAS,OAAO,CAAC,QAAQ,EAAE;AAC3B,EAAE,IAAI,OAAO,QAAQ,KAAK,UAAU,EAAE;AACtC,IAAI,OAAO,QAAQ,CAAC,IAAI,IAAI,EAAE;AAC9B,EAAE;AACF,EAAE,OAAO,QAAQ,CAAC,IAAI,IAAI,EAAE;AAC5B;AACA,MAAM,CAAC,OAAO,EAAE,SAAS,CAAC;AAC1B,SAAS,aAAa,CAAC,SAAS,EAAE;AAClC,EAAE,MAAM,SAAS,mBAAmB,MAAM,CAAC,CAAC,CAAC,KAAK,OAAO,CAAC,KAAK,UAAU,GAAG,CAAC,CAAC,IAAI,GAAG,CAAC,EAAE,WAAW,CAAC;AACpG,EAAE,MAAM,GAAG,mBAAmB,IAAI,GAAG,EAAE;AACvC,EAAE,KAAK,MAAM,CAAC,IAAI,SAAS,EAAE;AAC7B,IAAI,MAAM,KAAK,GAAG,SAAS,CAAC,OAAO,CAAC,KAAK,UAAU,GAAG,CAAC,GAAG,CAAC,CAAC,OAAO,CAAC;AACpE,IAAI,MAAM,IAAI,GAAG,GAAG,CAAC,GAAG,CAAC,KAAK,CAAC;AAC/B,IAAI,IAAI,IAAI,EAAE;AACd,MAAM,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC;AAClB,IAAI,CAAC,MAAM;AACX,MAAM,GAAG,CAAC,GAAG,CAAC,KAAK,EAAE;AACrB,QAAQ;AACR,OAAO,CAAC;AACR,IAAI;AACJ,EAAE;AACF,EAAE,MAAM,MAAM,GAAG,EAAE;AACnB,EAAE,MAAM,OAAO,mBAAmB,IAAI,GAAG,EAAE;AAC3C,EAAE,MAAM,KAAK,mBAAmB,IAAI,GAAG,EAAE;AACzC,EAAE,MAAM,KAAK,mBAAmB,MAAM,CAAC,CAAC,KAAK,KAAK;AAClD,IAAI,MAAM,IAAI,GAAG,SAAS,CAAC,KAAK,CAAC;AACjC,IAAI,IAAI,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE;AAC3B,IAAI,IAAI,KAAK,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE;AACzB,MAAM,MAAM,IAAI,KAAK,CAAC,CAAC,0CAA0C,EAAE,IAAI,CAAC,CAAC,CAAC;AAC1E,IAAI;AACJ,IAAI,KAAK,CAAC,GAAG,CAAC,IAAI,CAAC;AACnB,IAAI,MAAM,iBAAiB,GAAG,GAAG,CAAC,GAAG,CAAC,IAAI,CAAC;AAC3C,IAAI,IAAI,iBAAiB,EAAE;AAC3B,MAAM,KAAK,MAAM,QAAQ,IAAI,iBAAiB,EAAE;AAChD,QAAQ,KAAK,MAAM,GAAG,IAAI,OAAO,CAAC,QAAQ,CAAC,EAAE;AAC7C,UAAU,KAAK,CAAC,GAAG,CAAC;AACpB,QAAQ;AACR,QAAQ,MAAM,CAAC,IAAI,CAAC,QAAQ,CAAC;AAC7B,MAAM;AACN,MAAM,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC;AACvB,IAAI;AACJ,IAAI,KAAK,CAAC,MAAM,CAAC,IAAI,CAAC;AACtB,EAAE,CAAC,EAAE,OAAO,CAAC;AACb,EAAE,KAAK,MAAM,CAAC,IAAI,SAAS,EAAE;AAC7B,IAAI,MAAM,KAAK,GAAG,OAAO,CAAC,KAAK,UAAU,GAAG,CAAC,GAAG,CAAC,CAAC,OAAO;AACzD,IAAI,KAAK,CAAC,KAAK,CAAC;AAChB,EAAE;AACF,EAAE,OAAO,MAAM;AACf;AACA,MAAM,CAAC,aAAa,EAAE,eAAe,CAAC;AACtC,eAAe,QAAQ,CAAC,OAAO,EAAE,SAAS,EAAE;AAC5C,EAAE,SAAS,GAAG,SAAS,CAAC,IAAI,EAAE;AAC9B,EAAE,SAAS,GAAG,aAAa,CAAC,SAAS,CAAC;AACtC,EAAE,KAAK,MAAM,QAAQ,IAAI,SAAS,EAAE;AACpC,IAAI,IAAI,KAAK;AACb,IAAI,IAAI,QAAQ;AAChB,IAAI,IAAI,OAAO;AACf,IAAI,IAAI,OAAO,QAAQ,KAAK,UAAU,EAAE;AACxC,MAAM,KAAK,GAAG,QAAQ;AACtB,MAAM,QAAQ,GAAG,IAAI,QAAQ,CAAC,OAAO,CAAC;AACtC,MAAM,MAAM,SAAS,GAAG,qBAAqB,CAAC,QAAQ,CAAC,SAAS,IAAI,QAAQ,CAAC,EAAE,CAAC;AAChF,MAAM,OAAO,GAAG,SAAS;AACzB,IAAI,CAAC,MAAM;AACX,MAAM,KAAK,GAAG,QAAQ,CAAC,OAAO;AAC9B,MAAM,OAAO,GAAG,qBAAqB,CAAC,QAAQ,CAAC;AAC/C,MAAM,MAAM,gBAAgB,GAAG,QAAQ,CAAC,QAAQ;AAChD,MAAM,MAAM,OAAO,GAAG,OAAO,gBAAgB,KAAK,UAAU;AAC5D,MAAM,IAAI,OAAO,EAAE;AACnB,QAAQ,QAAQ,GAAG,IAAI,gBAAgB,CAAC,OAAO,CAAC;AAChD,MAAM,CAAC,MAAM,IAAI,UAAU,IAAI,QAAQ,EAAE;AACzC,QAAQ,QAAQ,GAAG,QAAQ,CAAC,QAAQ;AACpC,MAAM,CAAC,MAAM,IAAI,YAAY,IAAI,QAAQ,EAAE;AAC3C,QAAQ,QAAQ,GAAG,QAAQ,CAAC,UAAU,GAAG,OAAO,CAAC;AACjD,QAAQ,IAAI,QAAQ,YAAY,OAAO,EAAE;AACzC,UAAU,QAAQ,GAAG,MAAM,QAAQ;AACnC,QAAQ;AACR,MAAM,CAAC,MAAM,IAAI,aAAa,IAAI,QAAQ,EAAE;AAC5C,QAAQ,QAAQ,GAAG,MAAM,CAAC,OAAO,EAAE,QAAQ,CAAC,WAAW,CAAC;AACxD,MAAM;AACN,IAAI;AACJ,IAAI,OAAO,CAAC,OAAO,EAAE,KAAK,EAAE,QAAQ,EAAE,OAAO,CAAC;AAC9C,EAAE;AACF;AACA,MAAM,CAAC,QAAQ,EAAE,UAAU,CAAC;;AAE5B;AACG,IAAC,OAAO,GAAG,MAAM;AACpB,EAAE;AACF,IAAI,MAAM,CAAC,IAAI,EAAE,SAAS,CAAC;AAC3B;AACA;AACA,EAAE,MAAM,GAAG,EAAE;AACb;AACA;AACA;AACA;AACA;AACA,EAAE,GAAG,CAAC,GAAG,EAAE,KAAK,EAAE;AAClB,IAAI,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,GAAG,KAAK;AAC5B,EAAE;AACF;AACA;AACA;AACA;AACA;AACA,EAAE,GAAG,CAAC,GAAG,EAAE;AACX,IAAI,OAAO,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC;AAC3B,EAAE;AACF;;;;","x_google_ignoreList":[0]}
1
+ {"version":3,"file":"index19.js","sources":["../../../node_modules/.pnpm/@signe+di@2.5.2/node_modules/@signe/di/dist/index.js"],"sourcesContent":["var __defProp = Object.defineProperty;\nvar __name = (target, value) => __defProp(target, \"name\", { value, configurable: true });\n\n// src/inject.ts\nvar DEFAULT_INSTANCE_KEY = \"__default__\";\nfunction toTokenName(token) {\n return typeof token === \"function\" ? token.name : token;\n}\n__name(toTokenName, \"toTokenName\");\nfunction toInstanceKey(name) {\n return name ?? DEFAULT_INSTANCE_KEY;\n}\n__name(toInstanceKey, \"toInstanceKey\");\nfunction getRecord(context, token) {\n return context.get(\"inject:\" + toTokenName(token));\n}\n__name(getRecord, \"getRecord\");\nfunction ensureRecord(context, token) {\n const key = \"inject:\" + toTokenName(token);\n let record = context.get(key);\n if (!record) {\n record = {\n multi: false,\n values: /* @__PURE__ */ new Map(),\n injected: /* @__PURE__ */ new Set()\n };\n }\n context.set(key, record);\n return record;\n}\n__name(ensureRecord, \"ensureRecord\");\nfunction provide(context, token, value, options = {}) {\n const record = ensureRecord(context, token);\n const instanceKey = toInstanceKey(options.name);\n if (options.multi) {\n record.multi = true;\n }\n if (!record.multi && instanceKey !== DEFAULT_INSTANCE_KEY) {\n record.multi = true;\n }\n record.values.set(instanceKey, value);\n return value;\n}\n__name(provide, \"provide\");\nfunction isInjected(context, token, options = {}) {\n const record = getRecord(context, token);\n if (!record) {\n return false;\n }\n if (options.name) {\n return record.injected.has(toInstanceKey(options.name));\n }\n if (record.multi) {\n return record.injected.size > 0;\n }\n return record.injected.has(DEFAULT_INSTANCE_KEY);\n}\n__name(isInjected, \"isInjected\");\nfunction isProvided(context, token, options = {}) {\n const record = getRecord(context, token);\n if (!record) {\n return false;\n }\n if (options.name) {\n return record.values.has(toInstanceKey(options.name));\n }\n if (record.multi) {\n return record.values.size > 0;\n }\n return record.values.has(DEFAULT_INSTANCE_KEY);\n}\n__name(isProvided, \"isProvided\");\nfunction hasInstance(context, token, options = {}) {\n return isProvided(context, token, options);\n}\n__name(hasInstance, \"hasInstance\");\nfunction handleMissingInjection(token, options) {\n const name = toTokenName(token);\n if (options.name) {\n throw new Error(`Injection provider ${name} with name ${options.name} not found`);\n }\n throw new Error(`Injection provider ${name} not found`);\n}\n__name(handleMissingInjection, \"handleMissingInjection\");\nfunction markInjected(record, key) {\n record.injected.add(key);\n}\n__name(markInjected, \"markInjected\");\nfunction markAllInjected(record) {\n for (const key of record.values.keys()) {\n record.injected.add(key);\n }\n}\n__name(markAllInjected, \"markAllInjected\");\nfunction inject(context, token, options = {}) {\n const record = getRecord(context, token);\n if (!record) {\n if (options.optional) {\n return options.multi ? [] : void 0;\n }\n return handleMissingInjection(token, options);\n }\n if (options.name) {\n const instanceKey = toInstanceKey(options.name);\n if (!record.values.has(instanceKey)) {\n if (options.optional) {\n return void 0;\n }\n return handleMissingInjection(token, options);\n }\n const value2 = record.values.get(instanceKey);\n markInjected(record, instanceKey);\n return value2;\n }\n if (options.multi || record.multi) {\n if (record.values.size === 0) {\n if (options.optional) {\n return [];\n }\n return handleMissingInjection(token, options);\n }\n markAllInjected(record);\n return Array.from(record.values.values());\n }\n const value = record.values.get(DEFAULT_INSTANCE_KEY);\n if (value === void 0) {\n if (options.optional) {\n return void 0;\n }\n return handleMissingInjection(token, options);\n }\n markInjected(record, DEFAULT_INSTANCE_KEY);\n return value;\n}\n__name(inject, \"inject\");\nfunction override(providers, newProvider, options) {\n let { upsert = false, key } = options ?? {};\n if (!key) {\n key = typeof newProvider === \"function\" ? newProvider.name : newProvider.provide;\n }\n const flatProviders = providers.flat();\n const exists = flatProviders.some((provider) => {\n if (typeof provider === \"function\") {\n return provider.name === key;\n } else if (typeof provider === \"object\") {\n return provider.provide === key;\n }\n return false;\n });\n const mappedProviders = flatProviders.map((provider) => {\n if (typeof provider === \"function\" && provider.name === key) {\n return newProvider;\n } else if (typeof provider === \"object\" && provider.provide === key) {\n return newProvider;\n }\n return provider;\n });\n if (upsert && !exists) {\n mappedProviders.push(newProvider);\n }\n return mappedProviders;\n}\n__name(override, \"override\");\nfunction findProviders(providers, name) {\n const results = [];\n for (const provider of providers) {\n if (Array.isArray(provider)) {\n results.push(...findProviders(provider, name));\n } else if (findProvider(provider, name)) {\n results.push(provider);\n }\n }\n return results;\n}\n__name(findProviders, \"findProviders\");\nfunction findProvider(providers, name) {\n if (!Array.isArray(providers)) {\n if (typeof providers === \"object\" && \"provide\" in providers) {\n const provider = providers;\n const providerName = typeof provider.provide === \"function\" ? provider.provide.name : provider.provide;\n if (name instanceof RegExp) {\n if (name.test(providerName)) return providers;\n } else {\n if (providerName === name) return providers;\n }\n }\n return null;\n }\n for (const provider of providers) {\n if (Array.isArray(provider)) {\n const found = findProvider(provider, name);\n if (found) return found;\n continue;\n }\n if (typeof provider === \"object\" && \"provide\" in provider) {\n const providerName = typeof provider.provide === \"function\" ? provider.provide.name : provider.provide;\n if (name instanceof RegExp) {\n if (name.test(providerName)) return provider;\n } else {\n if (providerName === name) return provider;\n }\n }\n }\n return null;\n}\n__name(findProvider, \"findProvider\");\n\n// src/merge-config.ts\nfunction processProvider(mergedConfig, baseConfig, provider) {\n if (Array.isArray(provider)) {\n for (const nestedProvider of provider) {\n processProvider(mergedConfig, baseConfig, nestedProvider);\n }\n return;\n }\n const existingProvider = findProvider(baseConfig.providers, provider.provide);\n if (existingProvider) {\n mergedConfig.providers = override(mergedConfig.providers, provider);\n } else {\n mergedConfig.providers.push(provider);\n }\n}\n__name(processProvider, \"processProvider\");\nfunction mergeConfig(baseConfig, config) {\n const mergedConfig = {\n ...baseConfig,\n ...config,\n providers: [\n ...baseConfig.providers\n ]\n // Start with a copy of base providers\n };\n for (const provider of config.providers) {\n processProvider(mergedConfig, baseConfig, provider);\n }\n return mergedConfig;\n}\n__name(mergeConfig, \"mergeConfig\");\n\n// src/provider.ts\nfunction extractProvideOptions(source) {\n if (!source) {\n return void 0;\n }\n const { multi, name } = source;\n if (multi === void 0 && name === void 0) {\n return void 0;\n }\n return {\n multi,\n name\n };\n}\n__name(extractProvideOptions, \"extractProvideOptions\");\nfunction getDeps(provider) {\n if (typeof provider === \"function\") {\n return provider.deps ?? [];\n }\n return provider.deps ?? [];\n}\n__name(getDeps, \"getDeps\");\nfunction sortProviders(providers) {\n const tokenName = /* @__PURE__ */ __name((t) => typeof t === \"function\" ? t.name : t, \"tokenName\");\n const map = /* @__PURE__ */ new Map();\n for (const p of providers) {\n const token = tokenName(typeof p === \"function\" ? p : p.provide);\n const list = map.get(token);\n if (list) {\n list.push(p);\n } else {\n map.set(token, [\n p\n ]);\n }\n }\n const result = [];\n const visited = /* @__PURE__ */ new Set();\n const stack = /* @__PURE__ */ new Set();\n const visit = /* @__PURE__ */ __name((token) => {\n const name = tokenName(token);\n if (visited.has(name)) return;\n if (stack.has(name)) {\n throw new Error(`Circular dependency detected for provider ${name}`);\n }\n stack.add(name);\n const providersForToken = map.get(name);\n if (providersForToken) {\n for (const provider of providersForToken) {\n for (const dep of getDeps(provider)) {\n visit(dep);\n }\n result.push(provider);\n }\n visited.add(name);\n }\n stack.delete(name);\n }, \"visit\");\n for (const p of providers) {\n const token = typeof p === \"function\" ? p : p.provide;\n visit(token);\n }\n return result;\n}\n__name(sortProviders, \"sortProviders\");\nasync function injector(context, providers) {\n providers = providers.flat();\n providers = sortProviders(providers);\n for (const provider of providers) {\n let token;\n let instance;\n let options;\n if (typeof provider === \"function\") {\n token = provider;\n instance = new provider(context);\n const diOptions = extractProvideOptions(provider.diOptions ?? provider.di);\n options = diOptions;\n } else {\n token = provider.provide;\n options = extractProvideOptions(provider);\n const provideUserClass = provider.useClass;\n const isClass = typeof provideUserClass === \"function\";\n if (isClass) {\n instance = new provideUserClass(context);\n } else if (\"useValue\" in provider) {\n instance = provider.useValue;\n } else if (\"useFactory\" in provider) {\n instance = provider.useFactory?.(context);\n if (instance instanceof Promise) {\n instance = await instance;\n }\n } else if (\"useExisting\" in provider) {\n instance = inject(context, provider.useExisting);\n }\n }\n provide(context, token, instance, options);\n }\n}\n__name(injector, \"injector\");\n\n// src/context.ts\nvar Context = class {\n static {\n __name(this, \"Context\");\n }\n /** Internal storage for injected values */\n values = {};\n /**\n * Sets a value in the context\n * @param key - Unique identifier for the value\n * @param value - Value to store\n */\n set(key, value) {\n this.values[key] = value;\n }\n /**\n * Retrieves a value from the context\n * @param key - Unique identifier for the value\n * @returns The stored value or undefined if not found\n */\n get(key) {\n return this.values[key];\n }\n};\nexport {\n Context,\n findProvider,\n findProviders,\n hasInstance,\n inject,\n injector,\n isInjected,\n isProvided,\n mergeConfig,\n override,\n provide\n};\n//# sourceMappingURL=index.js.map"],"names":[],"mappings":"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","x_google_ignoreList":[0]}