{"version":3,"file":"valtech-components-mini-games.mjs","sources":["../../../mini-games/public-api.ts","../../../mini-games/valtech-components-mini-games.ts"],"sourcesContent":["import { Component, inject } from '@angular/core';\nimport { Route, Router, Routes } from '@angular/router';\nimport {\n  authGuard,\n  BubbleBlitzGameComponent,\n  I18nService,\n  MemoryGameComponent,\n  MiniGameDefinition,\n  MiniGamesMenuComponent,\n  PageContentComponent,\n  PageContentMetadata,\n  SimonGameComponent,\n} from 'valtech-components';\n\nexport { MiniGameCalloutComponent } from 'valtech-components';\nexport type { MiniGameCalloutMetadata, MiniGameCalloutVariant } from 'valtech-components';\nexport { MiniGameScorePopComponent } from 'valtech-components';\nexport type { MiniGameScorePopMetadata, MiniGameScorePopVariant } from 'valtech-components';\nexport { MiniGamePlayerProfileService } from 'valtech-components';\nexport { RetroAudioService } from 'valtech-components';\nexport { MINI_GAMES_I18N } from 'valtech-components';\n\nconst MINI_GAMES_BASE_ROUTE = '/mini-games';\n\nexport interface ValtechMiniGamesRoutesOptions {\n  path?: string;\n  canActivate?: Route['canActivate'];\n  includeMenu?: boolean;\n  includeMemory?: boolean;\n  includeSimon?: boolean;\n  includeBubbleBlitz?: boolean;\n}\n\nexport function provideValtechMiniGamesRoutes(opts: ValtechMiniGamesRoutesOptions = {}): Routes {\n  const path = normalizeMiniGamesRoutePath(opts.path ?? 'mini-games');\n  const canActivate = opts.canActivate ?? [authGuard];\n  const routes: Routes = [];\n\n  if (opts.includeMenu ?? true) {\n    routes.push({\n      path,\n      canActivate,\n      component: MiniGamesPageComponent,\n    });\n  }\n\n  if (opts.includeMemory ?? true) {\n    routes.push({\n      path: `${path}/memory`,\n      canActivate,\n      component: MemoryGamePageComponent,\n    });\n  }\n\n  if (opts.includeSimon ?? true) {\n    routes.push({\n      path: `${path}/simon`,\n      canActivate,\n      component: SimonGamePageComponent,\n    });\n  }\n\n  if (opts.includeBubbleBlitz ?? true) {\n    routes.push({\n      path: `${path}/bubble-blitz`,\n      canActivate,\n      component: BubbleBlitzGamePageComponent,\n    });\n  }\n\n  return routes;\n}\n\nfunction normalizeMiniGamesRoutePath(path: string): string {\n  return path.replace(/^\\/+|\\/+$/g, '') || 'mini-games';\n}\n\nconst MINI_GAMES_PAGE_I18N = {\n  es: {\n    memoryTitle: 'Memorice Retro',\n    memoryDescription: 'Encuentra pares con musica y efectos retro.',\n    simonTitle: 'Simon',\n    simonDescription: 'Repite luces y sonidos cada vez mas largos.',\n    bubbleTitle: 'Burbuja Blitz',\n    bubbleDescription: 'Revienta grupos de burbujas y encadena combos.',\n  },\n  en: {\n    memoryTitle: 'Retro Memory',\n    memoryDescription: 'Find matching pairs with retro music and effects.',\n    simonTitle: 'Simon',\n    simonDescription: 'Repeat lights and sounds in longer sequences.',\n    bubbleTitle: 'Bubble Blitz',\n    bubbleDescription: 'Pop bubble groups and chain combos.',\n  },\n};\n\n@Component({\n  selector: 'val-mini-games-page',\n  standalone: true,\n  imports: [MiniGamesMenuComponent, PageContentComponent],\n  template: `\n    <val-page-content [props]=\"pageContentProps\">\n      <section content class=\"mini-games-page\">\n        <val-mini-games-menu [games]=\"games\" [asModal]=\"false\" (selected)=\"openGame($event)\" />\n      </section>\n    </val-page-content>\n  `,\n  styles: [\n    `\n      .mini-games-page {\n        padding: 16px 0 32px;\n      }\n    `,\n  ],\n})\nexport class MiniGamesPageComponent {\n  private readonly router = inject(Router);\n  private readonly i18n = inject(I18nService);\n\n  readonly pageContentProps: PageContentMetadata = {\n    homeRoute: '/',\n    contentMaxWidth: 'md',\n  };\n\n  constructor() {\n    this.i18n.registerDefaults('MiniGames', MINI_GAMES_PAGE_I18N);\n  }\n\n  get games(): MiniGameDefinition[] {\n    this.i18n.lang();\n    return [\n      {\n        id: 'bubble-blitz',\n        title: this.t('bubbleTitle'),\n        description: this.t('bubbleDescription'),\n        icon: '🫧',\n        route: `${MINI_GAMES_BASE_ROUTE}/bubble-blitz`,\n      },\n      {\n        id: 'memory',\n        title: this.t('memoryTitle'),\n        description: this.t('memoryDescription'),\n        icon: '🧠',\n        route: `${MINI_GAMES_BASE_ROUTE}/memory`,\n      },\n      {\n        id: 'simon',\n        title: this.t('simonTitle'),\n        description: this.t('simonDescription'),\n        icon: '🎛️',\n        route: `${MINI_GAMES_BASE_ROUTE}/simon`,\n      },\n    ];\n  }\n\n  openGame(game: MiniGameDefinition): void {\n    if (game.route) void this.router.navigateByUrl(game.route);\n  }\n\n  private t(key: string): string {\n    return this.i18n.t(key, 'MiniGames');\n  }\n}\n\n@Component({\n  selector: 'val-mini-game-page-shell',\n  standalone: true,\n  imports: [PageContentComponent],\n  template: `\n    <val-page-content [props]=\"pageContentProps\">\n      <section content class=\"mini-game-page-shell\">\n        <ng-content />\n      </section>\n    </val-page-content>\n  `,\n  styles: [\n    `\n      .mini-game-page-shell {\n        display: grid;\n        gap: 14px;\n        padding: 16px 0 32px;\n      }\n    `,\n  ],\n})\nclass MiniGamePageShellComponent {\n  readonly pageContentProps: PageContentMetadata = {\n    homeRoute: MINI_GAMES_BASE_ROUTE,\n    contentMaxWidth: 'md',\n  };\n}\n\n@Component({\n  selector: 'val-memory-game-page',\n  standalone: true,\n  imports: [MemoryGameComponent, MiniGamePageShellComponent],\n  template: `\n    <val-mini-game-page-shell>\n      <val-memory-game />\n    </val-mini-game-page-shell>\n  `,\n})\nexport class MemoryGamePageComponent {}\n\n@Component({\n  selector: 'val-simon-game-page',\n  standalone: true,\n  imports: [SimonGameComponent, MiniGamePageShellComponent],\n  template: `\n    <val-mini-game-page-shell>\n      <val-simon-game />\n    </val-mini-game-page-shell>\n  `,\n})\nexport class SimonGamePageComponent {}\n\n@Component({\n  selector: 'val-bubble-blitz-game-page',\n  standalone: true,\n  imports: [BubbleBlitzGameComponent, MiniGamePageShellComponent],\n  template: `\n    <val-mini-game-page-shell>\n      <val-bubble-blitz-game />\n    </val-mini-game-page-shell>\n  `,\n})\nexport class BubbleBlitzGamePageComponent {}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":[],"mappings":";;;;;;AAsBA,MAAM,qBAAqB,GAAG,aAAa,CAAC;AAW5B,SAAA,6BAA6B,CAAC,IAAA,GAAsC,EAAE,EAAA;IACpF,MAAM,IAAI,GAAG,2BAA2B,CAAC,IAAI,CAAC,IAAI,IAAI,YAAY,CAAC,CAAC;IACpE,MAAM,WAAW,GAAG,IAAI,CAAC,WAAW,IAAI,CAAC,SAAS,CAAC,CAAC;IACpD,MAAM,MAAM,GAAW,EAAE,CAAC;AAE1B,IAAA,IAAI,IAAI,CAAC,WAAW,IAAI,IAAI,EAAE;QAC5B,MAAM,CAAC,IAAI,CAAC;YACV,IAAI;YACJ,WAAW;AACX,YAAA,SAAS,EAAE,sBAAsB;AAClC,SAAA,CAAC,CAAC;KACJ;AAED,IAAA,IAAI,IAAI,CAAC,aAAa,IAAI,IAAI,EAAE;QAC9B,MAAM,CAAC,IAAI,CAAC;YACV,IAAI,EAAE,CAAG,EAAA,IAAI,CAAS,OAAA,CAAA;YACtB,WAAW;AACX,YAAA,SAAS,EAAE,uBAAuB;AACnC,SAAA,CAAC,CAAC;KACJ;AAED,IAAA,IAAI,IAAI,CAAC,YAAY,IAAI,IAAI,EAAE;QAC7B,MAAM,CAAC,IAAI,CAAC;YACV,IAAI,EAAE,CAAG,EAAA,IAAI,CAAQ,MAAA,CAAA;YACrB,WAAW;AACX,YAAA,SAAS,EAAE,sBAAsB;AAClC,SAAA,CAAC,CAAC;KACJ;AAED,IAAA,IAAI,IAAI,CAAC,kBAAkB,IAAI,IAAI,EAAE;QACnC,MAAM,CAAC,IAAI,CAAC;YACV,IAAI,EAAE,CAAG,EAAA,IAAI,CAAe,aAAA,CAAA;YAC5B,WAAW;AACX,YAAA,SAAS,EAAE,4BAA4B;AACxC,SAAA,CAAC,CAAC;KACJ;AAED,IAAA,OAAO,MAAM,CAAC;AAChB,CAAC;AAED,SAAS,2BAA2B,CAAC,IAAY,EAAA;IAC/C,OAAO,IAAI,CAAC,OAAO,CAAC,YAAY,EAAE,EAAE,CAAC,IAAI,YAAY,CAAC;AACxD,CAAC;AAED,MAAM,oBAAoB,GAAG;AAC3B,IAAA,EAAE,EAAE;AACF,QAAA,WAAW,EAAE,gBAAgB;AAC7B,QAAA,iBAAiB,EAAE,6CAA6C;AAChE,QAAA,UAAU,EAAE,OAAO;AACnB,QAAA,gBAAgB,EAAE,6CAA6C;AAC/D,QAAA,WAAW,EAAE,eAAe;AAC5B,QAAA,iBAAiB,EAAE,gDAAgD;AACpE,KAAA;AACD,IAAA,EAAE,EAAE;AACF,QAAA,WAAW,EAAE,cAAc;AAC3B,QAAA,iBAAiB,EAAE,mDAAmD;AACtE,QAAA,UAAU,EAAE,OAAO;AACnB,QAAA,gBAAgB,EAAE,+CAA+C;AACjE,QAAA,WAAW,EAAE,cAAc;AAC3B,QAAA,iBAAiB,EAAE,qCAAqC;AACzD,KAAA;CACF,CAAC;MAqBW,sBAAsB,CAAA;AASjC,IAAA,WAAA,GAAA;AARiB,QAAA,IAAA,CAAA,MAAM,GAAG,MAAM,CAAC,MAAM,CAAC,CAAC;AACxB,QAAA,IAAA,CAAA,IAAI,GAAG,MAAM,CAAC,WAAW,CAAC,CAAC;AAEnC,QAAA,IAAA,CAAA,gBAAgB,GAAwB;AAC/C,YAAA,SAAS,EAAE,GAAG;AACd,YAAA,eAAe,EAAE,IAAI;SACtB,CAAC;QAGA,IAAI,CAAC,IAAI,CAAC,gBAAgB,CAAC,WAAW,EAAE,oBAAoB,CAAC,CAAC;KAC/D;AAED,IAAA,IAAI,KAAK,GAAA;AACP,QAAA,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE,CAAC;QACjB,OAAO;AACL,YAAA;AACE,gBAAA,EAAE,EAAE,cAAc;AAClB,gBAAA,KAAK,EAAE,IAAI,CAAC,CAAC,CAAC,aAAa,CAAC;AAC5B,gBAAA,WAAW,EAAE,IAAI,CAAC,CAAC,CAAC,mBAAmB,CAAC;AACxC,gBAAA,IAAI,EAAE,IAAI;gBACV,KAAK,EAAE,CAAG,EAAA,qBAAqB,CAAe,aAAA,CAAA;AAC/C,aAAA;AACD,YAAA;AACE,gBAAA,EAAE,EAAE,QAAQ;AACZ,gBAAA,KAAK,EAAE,IAAI,CAAC,CAAC,CAAC,aAAa,CAAC;AAC5B,gBAAA,WAAW,EAAE,IAAI,CAAC,CAAC,CAAC,mBAAmB,CAAC;AACxC,gBAAA,IAAI,EAAE,IAAI;gBACV,KAAK,EAAE,CAAG,EAAA,qBAAqB,CAAS,OAAA,CAAA;AACzC,aAAA;AACD,YAAA;AACE,gBAAA,EAAE,EAAE,OAAO;AACX,gBAAA,KAAK,EAAE,IAAI,CAAC,CAAC,CAAC,YAAY,CAAC;AAC3B,gBAAA,WAAW,EAAE,IAAI,CAAC,CAAC,CAAC,kBAAkB,CAAC;AACvC,gBAAA,IAAI,EAAE,KAAK;gBACX,KAAK,EAAE,CAAG,EAAA,qBAAqB,CAAQ,MAAA,CAAA;AACxC,aAAA;SACF,CAAC;KACH;AAED,IAAA,QAAQ,CAAC,IAAwB,EAAA;QAC/B,IAAI,IAAI,CAAC,KAAK;YAAE,KAAK,IAAI,CAAC,MAAM,CAAC,aAAa,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;KAC5D;AAEO,IAAA,CAAC,CAAC,GAAW,EAAA;QACnB,OAAO,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,GAAG,EAAE,WAAW,CAAC,CAAC;KACtC;+GA9CU,sBAAsB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA,EAAA;AAAtB,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,IAAA,EAAA,sBAAsB,EAfvB,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,qBAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,EAAA,CAAA;;;;;;GAMT,EAPS,QAAA,EAAA,IAAA,EAAA,MAAA,EAAA,CAAA,yCAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,sBAAsB,qHAAE,oBAAoB,EAAA,QAAA,EAAA,kBAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,kBAAA,CAAA,EAAA,OAAA,EAAA,CAAA,eAAA,CAAA,EAAA,CAAA,EAAA,CAAA,CAAA,EAAA;;4FAgB3C,sBAAsB,EAAA,UAAA,EAAA,CAAA;kBAnBlC,SAAS;+BACE,qBAAqB,EAAA,UAAA,EACnB,IAAI,EACP,OAAA,EAAA,CAAC,sBAAsB,EAAE,oBAAoB,CAAC,EAC7C,QAAA,EAAA,CAAA;;;;;;AAMT,EAAA,CAAA,EAAA,MAAA,EAAA,CAAA,yCAAA,CAAA,EAAA,CAAA;;AA0DH,MAqBM,0BAA0B,CAAA;AArBhC,IAAA,WAAA,GAAA;AAsBW,QAAA,IAAA,CAAA,gBAAgB,GAAwB;AAC/C,YAAA,SAAS,EAAE,qBAAqB;AAChC,YAAA,eAAe,EAAE,IAAI;SACtB,CAAC;AACH,KAAA;+GALK,0BAA0B,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA,EAAA;AAA1B,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,IAAA,EAAA,0BAA0B,EAjBpB,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,0BAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,EAAA,CAAA;;;;;;AAMT,EAAA,CAAA,EAAA,QAAA,EAAA,IAAA,EAAA,MAAA,EAAA,CAAA,oEAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAPS,oBAAoB,EAAA,QAAA,EAAA,kBAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,kBAAA,CAAA,EAAA,OAAA,EAAA,CAAA,eAAA,CAAA,EAAA,CAAA,EAAA,CAAA,CAAA,EAAA;;4FAkB1B,0BAA0B,EAAA,UAAA,EAAA,CAAA;kBArB/B,SAAS;AACE,YAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,0BAA0B,cACxB,IAAI,EAAA,OAAA,EACP,CAAC,oBAAoB,CAAC,EACrB,QAAA,EAAA,CAAA;;;;;;AAMT,EAAA,CAAA,EAAA,MAAA,EAAA,CAAA,oEAAA,CAAA,EAAA,CAAA;;MA4BU,uBAAuB,CAAA;+GAAvB,uBAAuB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA,EAAA;AAAvB,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,IAAA,EAAA,uBAAuB,EANxB,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,sBAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,EAAA,CAAA;;;;GAIT,EALS,QAAA,EAAA,IAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,mBAAmB,wFAVzB,0BAA0B,EAAA,QAAA,EAAA,0BAAA,EAAA,CAAA,EAAA,CAAA,CAAA,EAAA;;4FAiBnB,uBAAuB,EAAA,UAAA,EAAA,CAAA;kBAVnC,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACT,oBAAA,QAAQ,EAAE,sBAAsB;AAChC,oBAAA,UAAU,EAAE,IAAI;AAChB,oBAAA,OAAO,EAAE,CAAC,mBAAmB,EAAE,0BAA0B,CAAC;AAC1D,oBAAA,QAAQ,EAAE,CAAA;;;;AAIT,EAAA,CAAA;AACF,iBAAA,CAAA;;MAaY,sBAAsB,CAAA;+GAAtB,sBAAsB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA,EAAA;AAAtB,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,IAAA,EAAA,sBAAsB,EANvB,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,qBAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,EAAA,CAAA;;;;GAIT,EALS,QAAA,EAAA,IAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,kBAAkB,uFAtBxB,0BAA0B,EAAA,QAAA,EAAA,0BAAA,EAAA,CAAA,EAAA,CAAA,CAAA,EAAA;;4FA6BnB,sBAAsB,EAAA,UAAA,EAAA,CAAA;kBAVlC,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACT,oBAAA,QAAQ,EAAE,qBAAqB;AAC/B,oBAAA,UAAU,EAAE,IAAI;AAChB,oBAAA,OAAO,EAAE,CAAC,kBAAkB,EAAE,0BAA0B,CAAC;AACzD,oBAAA,QAAQ,EAAE,CAAA;;;;AAIT,EAAA,CAAA;AACF,iBAAA,CAAA;;MAaY,4BAA4B,CAAA;+GAA5B,4BAA4B,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA,EAAA;AAA5B,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,IAAA,EAAA,4BAA4B,EAN7B,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,4BAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,EAAA,CAAA;;;;GAIT,EALS,QAAA,EAAA,IAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,wBAAwB,8FAlC9B,0BAA0B,EAAA,QAAA,EAAA,0BAAA,EAAA,CAAA,EAAA,CAAA,CAAA,EAAA;;4FAyCnB,4BAA4B,EAAA,UAAA,EAAA,CAAA;kBAVxC,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACT,oBAAA,QAAQ,EAAE,4BAA4B;AACtC,oBAAA,UAAU,EAAE,IAAI;AAChB,oBAAA,OAAO,EAAE,CAAC,wBAAwB,EAAE,0BAA0B,CAAC;AAC/D,oBAAA,QAAQ,EAAE,CAAA;;;;AAIT,EAAA,CAAA;AACF,iBAAA,CAAA;;;ACjOD;;AAEG;;;;"}